From 1a00a04fab49dce792700b14990026717a032634 Mon Sep 17 00:00:00 2001 From: james Date: Sun, 12 Feb 2023 23:07:58 -0500 Subject: [PATCH] Eliminar todo el SVN --- .svn/entries | 117 - .svn/text-base/pom.xml.svn-base | 687 --- .svn/text-base/transport.xsd.svn-base | 138 - appletFirma/.svn/entries | 68 - appletFirma/.svn/prop-base/pom.xml.svn-base | 5 - appletFirma/.svn/text-base/pom.xml.svn-base | 51 - appletFirma/lib/.svn/entries | 62 - .../prop-base/itextpdf-5.5.3.jar.svn-base | 9 - .../text-base/itextpdf-5.5.3.jar.svn-base | Bin 2237618 -> 0 bytes appletFirma/src/.svn/entries | 34 - appletFirma/src/main/.svn/entries | 34 - appletFirma/src/main/java/.svn/entries | 31 - appletFirma/src/main/java/com/.svn/entries | 31 - appletFirma/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/firma/.svn/entries | 43 - .../java/com/fp/firma/applet/.svn/entries | 96 - .../.svn/prop-base/FirmaApplet.form.svn-base | 5 - .../.svn/prop-base/FirmaApplet.java.svn-base | 9 - .../text-base/FirmaApplet.form.netbeans-base | 152 - .../.svn/text-base/FirmaApplet.form.svn-base | 152 - .../text-base/FirmaApplet.java.netbeans-base | 345 -- .../.svn/text-base/FirmaApplet.java.svn-base | 345 -- .../java/com/fp/firma/common/.svn/entries | 130 - .../prop-base/CertificateUtils.java.svn-base | 9 - .../.svn/prop-base/FirmMessages.java.svn-base | 9 - .../prop-base/FirmasException.java.svn-base | 9 - .../text-base/CertificateUtils.java.svn-base | 584 --- .../.svn/text-base/FirmMessages.java.svn-base | 19 - .../text-base/FirmasException.java.svn-base | 30 - .../java/com/fp/firma/component/.svn/entries | 62 - .../prop-base/PasswordDialog.java.svn-base | 9 - .../text-base/PasswordDialog.java.svn-base | 53 - .../main/java/com/fp/firma/dto/.svn/entries | 62 - .../TfirmDatosFirmante.java.svn-base | 9 - .../TfirmDatosFirmante.java.svn-base | 169 - .../java/com/fp/firma/keystore/.svn/entries | 470 -- .../AppleKeyStoreProvider.java.svn-base | 9 - .../FileKeyStoreProvider.java.svn-base | 9 - .../prop-base/KeyStoreProvider.java.svn-base | 9 - .../KeyStoreProviderFactory.java.svn-base | 9 - .../LinuxKeyStoreProvider.java.svn-base | 9 - .../MockKeyStoreProvider.java.svn-base | 9 - .../PKCS11KeyStoreProvider.java.svn-base | 9 - .../SimpleCallbackHandler.java.svn-base | 9 - .../WindowsJDK5KeyStoreProvider.java.svn-base | 9 - ...ndowsJDK5KeyStoreProvider_SD.java.svn-base | 9 - ...owsJDK5KeyStoreProvider_iKey.java.svn-base | 9 - .../WindowsJDK6KeyStoreProvider.java.svn-base | 9 - .../WindowsKeyStoreProvider.java.svn-base | 9 - .../AppleKeyStoreProvider.java.svn-base | 45 - .../FileKeyStoreProvider.java.svn-base | 48 - .../text-base/KeyStoreProvider.java.svn-base | 29 - .../KeyStoreProviderFactory.java.svn-base | 40 - .../LinuxKeyStoreProvider.java.svn-base | 123 - .../MockKeyStoreProvider.java.svn-base | 53 - .../PKCS11KeyStoreProvider.java.svn-base | 86 - .../SimpleCallbackHandler.java.svn-base | 49 - .../WindowsJDK5KeyStoreProvider.java.svn-base | 129 - ...ndowsJDK5KeyStoreProvider_SD.java.svn-base | 139 - ...owsJDK5KeyStoreProvider_iKey.java.svn-base | 144 - .../WindowsJDK6KeyStoreProvider.java.svn-base | 53 - .../WindowsKeyStoreProvider.java.svn-base | 43 - appletFirma/src/main/resources/.svn/entries | 62 - .../firmessages_es.properties.svn-base | 9 - .../firmessages_es.properties.svn-base | 48 - appletFirma/src/test/.svn/entries | 31 - appletFirma/src/test/java/.svn/entries | 31 - appletFirma/src/test/java/com/.svn/entries | 31 - appletFirma/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/firma/.svn/entries | 31 - .../java/com/fp/firma/applet/.svn/entries | 96 - .../.svn/prop-base/AppTest.java.svn-base | 9 - .../.svn/prop-base/PruebaFirma.java.svn-base | 9 - .../.svn/text-base/AppTest.java.svn-base | 38 - .../.svn/text-base/PruebaFirma.java.svn-base | 39 - .../target/classes/.netbeans_automatic_build | 0 .../test-classes/.netbeans_automatic_build | 0 base/.svn/entries | 86 - base/.svn/text-base/pom.xml.svn-base | 82 - base/bpm/.svn/entries | 71 - base/bpm/.svn/text-base/pom.xml.svn-base | 22 - base/bpm/bpmlib/.svn/dir-prop-base | 9 - base/bpm/bpmlib/.svn/entries | 65 - .../.svn/text-base/pom.xml.netbeans-base | 121 - .../bpmlib/.svn/text-base/pom.xml.svn-base | 121 - base/bpm/bpmlib/src/.svn/entries | 34 - base/bpm/bpmlib/src/main/.svn/entries | 37 - base/bpm/bpmlib/src/main/config/.svn/entries | 130 - .../.svn/text-base/jbpm-ds.xml.svn-base | 33 - .../.svn/text-base/jbpm-mysql-ds.xml.svn-base | 49 - .../text-base/jbpm-oracle-ds.xml.svn-base | 33 - base/bpm/bpmlib/src/main/java/.svn/entries | 31 - .../bpm/bpmlib/src/main/java/com/.svn/entries | 31 - .../bpmlib/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/bpmlib/.svn/entries | 262 -- .../.svn/text-base/Common.java.svn-base | 48 - .../CustomSystemEventListener.java.svn-base | 115 - .../bpmlib/.svn/text-base/Flujo.java.svn-base | 137 - .../.svn/text-base/ProcessUtil.java.svn-base | 252 -- .../.svn/text-base/RegisterFlow.java.svn-base | 63 - .../.svn/text-base/package-info.java.svn-base | 4 - .../main/java/com/fp/bpmlib/db/.svn/entries | 130 - .../text-base/BPMProperties.java.svn-base | 85 - .../.svn/text-base/DataHelper.java.svn-base | 83 - .../.svn/text-base/package-info.java.svn-base | 4 - .../main/java/com/fp/bpmlib/ejb/.svn/entries | 99 - .../ejb/.svn/text-base/JbpmBean.java.svn-base | 123 - .../.svn/text-base/LogMailBean.java.svn-base | 94 - .../java/com/fp/bpmlib/ejb/local/.svn/entries | 96 - .../text-base/JbpmBeanLocal.java.svn-base | 15 - .../text-base/LogMailBeanLocal.java.svn-base | 14 - .../main/java/com/fp/bpmlib/flow/.svn/entries | 130 - .../.svn/text-base/FlowUtil.java.svn-base | 323 -- .../.svn/text-base/Monitor.java.netbeans-base | 263 -- .../flow/.svn/text-base/Monitor.java.svn-base | 263 -- .../.svn/text-base/RuleUtil.java.svn-base | 284 -- .../main/java/com/fp/bpmlib/mail/.svn/entries | 232 - .../.svn/text-base/MailCommand.java.svn-base | 89 - .../text-base/MailParameters.java.svn-base | 99 - .../.svn/text-base/MailThread.java.svn-base | 40 - .../MailThreadWithAttachment.java.svn-base | 40 - .../mail/.svn/text-base/Mailer.java.svn-base | 252 -- .../.svn/text-base/package-info.java.svn-base | 4 - .../java/com/fp/bpmlib/messages/.svn/entries | 96 - .../MessageManager.java.netbeans-base | 69 - .../text-base/MessageManager.java.svn-base | 69 - .../.svn/text-base/package-info.java.svn-base | 4 - .../java/com/fp/bpmlib/metadata/.svn/entries | 62 - .../.svn/text-base/package-info.java.svn-base | 4 - .../java/com/fp/bpmlib/query/.svn/entries | 284 -- .../text-base/EndedFlowDetail.java.svn-base | 139 - .../.svn/text-base/EndedFlows.java.svn-base | 102 - .../text-base/EndedFlowsResults.java.svn-base | 145 - .../.svn/text-base/RuleTrigger.java.svn-base | 34 - .../TransactionLogResults.java.svn-base | 101 - .../text-base/TransactionsLog.java.svn-base | 74 - .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/bpmlib/query/groups/.svn/entries | 130 - .../.svn/text-base/UserLov.java.svn-base | 55 - .../.svn/text-base/UserToGroup.java.svn-base | 64 - .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/bpmlib/query/inbox/.svn/entries | 232 - .../text-base/TaskDetail.java.netbeans-base | 59 - .../.svn/text-base/TaskDetail.java.svn-base | 59 - .../text-base/TransactionList.java.svn-base | 182 - .../TransactionListGroup.java.svn-base | 101 - .../text-base/TransactionTasks.java.svn-base | 93 - .../TransactionTasksGroup.java.svn-base | 75 - .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/bpmlib/query/monitor/.svn/entries | 164 - .../text-base/FlowActivitySave.java.svn-base | 169 - .../.svn/text-base/FlowEnd.java.svn-base | 309 -- .../.svn/text-base/FlowMonitor.java.svn-base | 87 - .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/bpmlib/query/rules/.svn/entries | 130 - .../RefreshKnowledgeBase.java.svn-base | 36 - .../rules/.svn/text-base/Rules.java.svn-base | 124 - .../.svn/text-base/package-info.java.svn-base | 4 - .../fp/bpmlib/query/solicitud/.svn/entries | 62 - .../EstadoSolicitudQuery.java.svn-base | 53 - .../com/fp/bpmlib/query/task/.svn/entries | 334 -- .../.svn/text-base/AsignedTasks.java.svn-base | 67 - .../.svn/text-base/ClaimTask.java.svn-base | 45 - .../.svn/text-base/CompleteTask.java.svn-base | 48 - .../.svn/text-base/StartTask.java.svn-base | 45 - .../.svn/text-base/TaskDetail.java.svn-base | 120 - .../.svn/text-base/TaskHistory.java.svn-base | 48 - .../.svn/text-base/TaskPending.java.svn-base | 123 - .../text-base/TaskServerStatus.java.svn-base | 39 - .../.svn/text-base/package-info.java.svn-base | 4 - .../java/com/fp/bpmlib/report/.svn/entries | 130 - .../text-base/DownloadFileQuery.java.svn-base | 64 - .../.svn/text-base/ExportFlows.java.svn-base | 147 - .../.svn/text-base/package-info.java.svn-base | 4 - .../main/java/com/fp/bpmlib/task/.svn/entries | 170 - .../MaiaWorkItemHandler.java.svn-base | 124 - .../.svn/text-base/TaskCleaner.java.svn-base | 97 - .../.svn/text-base/TaskUser.java.svn-base | 145 - .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/bpmlib/task/client/.svn/entries | 130 - .../text-base/HumanTaskClient.java.svn-base | 580 --- .../text-base/TaskUtil.java.netbeans-base | 476 -- .../.svn/text-base/TaskUtil.java.svn-base | 476 -- .../.svn/text-base/package-info.java.svn-base | 4 - .../java/com/fp/bpmlib/task/util/.svn/entries | 198 - .../CustomDeploymentService.java.svn-base | 40 - .../CustomIdentityProvider.java.svn-base | 27 - ...MaiaApplicationScopeProducer.java.svn-base | 50 - .../MaiaUserGroupCallback.java.svn-base | 39 - ...impleWorkItemHandlerProducer.java.svn-base | 16 - .../com/fp/bpmlib/transaction/.svn/entries | 136 - .../PackageGetter.java.netbeans-base | 103 - .../text-base/PackageGetter.java.svn-base | 103 - .../.svn/text-base/RuleTrigger.java.svn-base | 44 - .../.svn/text-base/package-info.java.svn-base | 4 - .../fp/bpmlib/transaction/flow/.svn/entries | 266 -- .../.svn/text-base/StartFlow.java.svn-base | 64 - .../.svn/text-base/StartFlowEnd.java.svn-base | 36 - .../StartFlowEndNewOnly.java.svn-base | 35 - .../text-base/StartFlowMemory.java.svn-base | 56 - .../StartFlowMemoryNewOnly.java.svn-base | 35 - .../text-base/StartFlowNewOnly.java.svn-base | 35 - .../.svn/text-base/package-info.java.svn-base | 4 - .../fp/bpmlib/transaction/task/.svn/entries | 402 -- .../.svn/text-base/AddGroups.java.svn-base | 61 - .../.svn/text-base/AddResource.java.svn-base | 51 - .../.svn/text-base/AddUsers.java.svn-base | 62 - .../text-base/ServerManager.java.svn-base | 54 - .../.svn/text-base/TaskClaim.java.svn-base | 52 - .../.svn/text-base/TaskComments.java.svn-base | 56 - .../.svn/text-base/TaskComplete.java.svn-base | 70 - .../.svn/text-base/TaskDelegate.java.svn-base | 52 - .../.svn/text-base/TaskStart.java.svn-base | 52 - .../.svn/text-base/TaskUpdater.java.svn-base | 67 - .../.svn/text-base/package-info.java.svn-base | 4 - .../bpmlib/src/main/resources/.svn/entries | 170 - .../.svn/text-base/ChangeSet.xml.svn-base | 7 - .../text-base/bpmmessages.properties.svn-base | 31 - .../.svn/text-base/change-set.xml.svn-base | 9 - .../.svn/text-base/flows.xml.svn-base | 9 - .../src/main/resources/flows/.svn/entries | 544 --- .../.svn/text-base/casoprueba.bpmn.svn-base | 596 --- .../text-base/catalogoprueba.bpmn.svn-base | 141 - .../flows/.svn/text-base/final.bpmn.svn-base | 276 -- .../.svn/text-base/finalwpa.bpmn.svn-base | 296 -- .../text-base/nuevoProceso.bpmn2.svn-base | 138 - .../.svn/text-base/process.bpmn2.svn-base | 137 - .../flows/.svn/text-base/prueba.bpmn.svn-base | 39 - .../.svn/text-base/pviaticos.bpmn.svn-base | 727 ---- .../.svn/text-base/subproceso.bpmn.svn-base | 307 -- .../.svn/text-base/taskasign.bpmn.svn-base | 298 -- .../flows/.svn/text-base/test.bpmn.svn-base | 467 -- .../.svn/text-base/testuno.bpmn.svn-base | 308 -- .../.svn/text-base/testwpa.bpmn.svn-base | 292 -- .../.svn/text-base/viaticos.bpmn.svn-base | 1949 --------- .../text-base/viaticosmanual.bpmn.svn-base | 779 ---- .../main/resources/flows/comaco/.svn/entries | 980 ----- .../text-base/BajaDestruccion.bpmn.svn-base | 576 --- .../text-base/CargaDeposito.bpmn.svn-base | 307 -- .../text-base/EjecucionApertura.bpmn.svn-base | 311 -- .../EjecucionAutorizacion.bpmn.svn-base | 631 --- .../EjecucionDevolucion.bpmn.svn-base | 411 -- ...EjecucionEmisionGuiaTransito.bpmn.svn-base | 422 -- .../EjecucionImpresion.bpmn.svn-base | 285 -- .../EjecucionIncrementoArmas.bpmn.svn-base | 306 -- .../EjecucionInspeccion.bpmn.svn-base | 226 - .../EjecucionInternacion.bpmn.svn-base | 320 -- .../text-base/EjecucionPermiso.bpmn.svn-base | 307 -- .../text-base/EjecucionTramite.bpmn.svn-base | 721 --- .../EjecutarCertificados.bpmn.svn-base | 276 -- .../EjecutarInscripcion.bpmn.svn-base | 313 -- .../EmisionDocumentoHabilitante.bpmn.svn-base | 992 ----- .../.svn/text-base/EnvioArmas.bpmn.svn-base | 354 -- .../PlanificacionInspeccion.bpmn.svn-base | 518 --- .../text-base/RecepcionArmas.bpmn.svn-base | 208 - ...RecepcionSolicitudRequisitos.bpmn.svn-base | 360 -- .../text-base/RegistroDecomiso.bpmn.svn-base | 320 -- .../autorizarDocumentoCarlos.bpmn.svn-base | 287 -- .../decomisarArmaCarlos.bpmn.svn-base | 233 - .../.svn/text-base/decomiso.bpmn.svn-base | 211 - ...notificacionAnulacionTramite.bpmn.svn-base | 217 - .../.svn/text-base/solicitud.bpmn.svn-base | 280 -- .../text-base/solicitudCarlos.bpmn.svn-base | 184 - .../text-base/solicitudFlow.bpmn.svn-base | 525 --- .../text-base/subproceso.bpmn.netbeans-base | 238 - .../.svn/text-base/subproceso.bpmn.svn-base | 238 - .../resources/flows/comacov2/.svn/entries | 572 --- .../CargaDepositoV2.bpmn.netbeans-base | 307 -- .../text-base/CargaDepositoV2.bpmn.svn-base | 307 -- .../EjecucionAperturaV2.bpmn.svn-base | 312 -- .../EjecucionAutorizacionV2.bpmn.svn-base | 632 --- ...EjecucionCertificadoFiscalia.bpmn.svn-base | 292 -- .../EjecucionDevolucionV2.bpmn.svn-base | 412 -- ...ecucionEmisionGuiaTransitoV2.bpmn.svn-base | 423 -- .../EjecucionIncrementoArmasV2.bpmn.svn-base | 307 -- .../EjecucionInternacionV2.bpmn.svn-base | 321 -- .../EjecucionPermisoV2.bpmn.svn-base | 308 -- .../EjecucionTramiteV2.bpmn.svn-base | 721 --- .../EjecutarCertificadosV2.bpmn.svn-base | 277 -- .../EjecutarInscripcionV2.bpmn.svn-base | 314 -- ...misionDocumentoHabilitanteV2.bpmn.svn-base | 892 ---- .../text-base/RecepcionArmasV2.bpmn.svn-base | 371 -- ...cepcionSolicitudRequisitosV2.bpmn.svn-base | 361 -- .../text-base/TraspasoDominioV2.bpmn.svn-base | 274 -- .../src/main/resources/rules/.svn/entries | 368 -- .../.svn/prop-base/ASIGNARCOMITE.xls.svn-base | 5 - .../prop-base/ASIGNAROFICIAL.xls.svn-base | 5 - .../.svn/prop-base/VALIDAMONTO.xls.svn-base | 5 - .../prop-base/VALIDAPERSONAS.xls.svn-base | 5 - .../.svn/prop-base/VALIDAPLAZO.xls.svn-base | 5 - .../.svn/prop-base/VALIDATASA.xls.svn-base | 5 - .../rules/.svn/prop-base/WPA.xls.svn-base | 5 - .../.svn/prop-base/catalogo.xls.svn-base | 5 - .../rules/.svn/prop-base/gf.xls.svn-base | 5 - .../.svn/prop-base/rcatalogo.xls.svn-base | 5 - .../.svn/text-base/ASIGNARCOMITE.xls.svn-base | Bin 7680 -> 0 bytes .../text-base/ASIGNAROFICIAL.xls.svn-base | Bin 20992 -> 0 bytes .../.svn/text-base/VALIDAMONTO.xls.svn-base | Bin 8704 -> 0 bytes .../text-base/VALIDAPERSONAS.xls.svn-base | Bin 20992 -> 0 bytes .../.svn/text-base/VALIDAPLAZO.xls.svn-base | Bin 8704 -> 0 bytes .../.svn/text-base/VALIDATASA.xls.svn-base | Bin 8704 -> 0 bytes .../rules/.svn/text-base/WPA.xls.svn-base | Bin 21504 -> 0 bytes .../.svn/text-base/catalogo.xls.svn-base | Bin 20992 -> 0 bytes .../rules/.svn/text-base/gf.xls.svn-base | Bin 20992 -> 0 bytes .../.svn/text-base/rcatalogo.xls.svn-base | Bin 20992 -> 0 bytes base/bpm/bpmlib/src/test/.svn/entries | 34 - base/bpm/bpmlib/src/test/java/.svn/entries | 31 - .../bpmlib/src/test/java/test/.svn/entries | 31 - .../src/test/java/test/com/.svn/entries | 31 - .../src/test/java/test/com/fp/.svn/entries | 31 - .../test/java/test/com/fp/bpmlib/.svn/entries | 62 - .../.svn/text-base/package-info.java.svn-base | 4 - .../bpmlib/src/test/resources/.svn/entries | 28 - base/bpm/flows/.svn/entries | 65 - .../bpm/flows/.svn/text-base/pom.xml.svn-base | 18 - base/bpm/flows/src/.svn/entries | 37 - base/bpm/flows/src/config/.svn/entries | 62 - .../.svn/text-base/jbpm-ds.xml.svn-base | 33 - base/bpm/flows/src/flows/.svn/entries | 31 - base/bpm/flows/src/flows/flows/.svn/entries | 980 ----- .../.svn/text-base/Looping.bpmn.svn-base | 114 - .../ampliacionperiodogracia.bpmn.svn-base | 897 ---- .../text-base/aprobacioncredito.bpmn.svn-base | 1136 ----- .../aprobacioncreditonova.bpmn.svn-base | 728 ---- .../flows/.svn/text-base/basic.bpmn.svn-base | 163 - .../flows/.svn/text-base/basic1.bpmn.svn-base | 147 - .../.svn/text-base/calificacion.bpmn.svn-base | 1790 -------- .../calificacionnovacion.bpmn.svn-base | 1033 ----- .../.svn/text-base/casoprueba.bpmn.svn-base | 560 --- .../constituciongarantias.bpmn.svn-base | 2074 --------- .../flows/.svn/text-base/credit.bpmn.svn-base | 267 -- .../flows/.svn/text-base/flinal.bpmn.svn-base | 140 - .../flows/.svn/text-base/flow5.bpmn.svn-base | 195 - .../text-base/instrumnovacion.bpmn.svn-base | 744 ---- .../levantamientodefgar.bpmn.svn-base | 753 ---- .../levantamientopargar.bpmn.svn-base | 937 ---- .../.svn/text-base/mapaBEV.bpmn.svn-base | 142 - .../text-base/matrizevaluacion.bpmn.svn-base | 364 -- .../flows/.svn/text-base/n1.bpmn.svn-base | 59 - .../flows/.svn/text-base/n2.bpmn.svn-base | 97 - .../flows/.svn/text-base/n3.bpmn.svn-base | 67 - .../flows/.svn/text-base/n4.bpmn.svn-base | 99 - .../.svn/text-base/nomenclatura.bpmn.svn-base | 60 - .../text-base/precalificacion.bpmn.svn-base | 1097 ----- .../seguimientoycontrol.bpmn.svn-base | 1632 ------- .../.svn/text-base/taskasign.bpmn.svn-base | 279 -- .../flows/.svn/text-base/test.bpmn.svn-base | 267 -- .../.svn/text-base/testwpa.bpmn.svn-base | 292 -- base/bpm/flows/src/rules/.svn/entries | 117 - .../src/rules/.svn/prop-base/WPA.xls.svn-base | 5 - .../src/rules/.svn/prop-base/gf.xls.svn-base | 5 - .../src/rules/.svn/text-base/WPA.xls.svn-base | Bin 7680 -> 0 bytes .../src/rules/.svn/text-base/gf.xls.svn-base | Bin 7680 -> 0 bytes .../src/rules/ASIGNARCOMITE/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 11776 -> 0 bytes .../src/rules/ASIGNAROFICIAL/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 7680 -> 0 bytes base/bpm/flows/src/rules/TEST1/.svn/entries | 62 - .../TEST1/.svn/prop-base/asign.xls.svn-base | 5 - .../TEST1/.svn/text-base/asign.xls.svn-base | Bin 39424 -> 0 bytes .../flows/src/rules/VALIDAMONTO/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 13824 -> 0 bytes .../src/rules/VALIDAPERSONA/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 20992 -> 0 bytes .../flows/src/rules/VALIDAPLAZO/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 9216 -> 0 bytes .../flows/src/rules/VALIDATASA/.svn/entries | 62 - .../.svn/prop-base/asign.xls.svn-base | 5 - .../.svn/text-base/asign.xls.svn-base | Bin 8704 -> 0 bytes base/bpm/simple/.svn/dir-prop-base | 9 - base/bpm/simple/.svn/entries | 99 - base/bpm/simple/.svn/text-base/.pmd.svn-base | 613 --- .../simple/.svn/text-base/pom.xml.svn-base | 22 - base/bpm/simple/src/.svn/entries | 31 - base/bpm/simple/src/main/.svn/entries | 31 - base/bpm/simple/src/main/java/.svn/entries | 31 - .../bpm/simple/src/main/java/com/.svn/entries | 31 - .../simple/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/simple/.svn/entries | 43 - .../java/com/fp/simple/action/.svn/entries | 62 - .../.svn/text-base/TaskAction.java.svn-base | 19 - .../main/java/com/fp/simple/dto/.svn/entries | 167 - .../dto/.svn/text-base/Kind.java.svn-base | 22 - .../.svn/text-base/Responses.java.svn-base | 58 - .../dto/.svn/text-base/TaskInfo.java.svn-base | 599 --- .../.svn/text-base/package-info.java.svn-base | 4 - .../com/fp/simple/dto/metadata/.svn/entries | 62 - .../ProcessInstanceMeta.java.svn-base | 327 -- .../main/java/com/fp/simple/flow/.svn/entries | 164 - .../flow/.svn/text-base/Asign.java.svn-base | 39 - .../flow/.svn/text-base/DataMap.java.svn-base | 36 - .../.svn/text-base/FlowClass.java.svn-base | 20 - .../.svn/text-base/package-info.java.svn-base | 4 - .../main/java/com/fp/simple/maia/.svn/entries | 96 - .../text-base/MailRecipient.java.svn-base | 21 - .../MailRecipientGroup.java.svn-base | 21 - .../main/java/com/fp/simple/test/.svn/entries | 130 - .../text-base/RequestTester.java.svn-base | 141 - .../.svn/text-base/RuleTester.java.svn-base | 124 - .../.svn/text-base/package-info.java.svn-base | 4 - base/business/.svn/entries | 80 - base/business/.svn/text-base/pom.xml.svn-base | 72 - base/business/armas/.svn/dir-prop-base | 9 - base/business/armas/.svn/entries | 65 - .../armas/.svn/text-base/pom.xml.svn-base | 48 - base/business/armas/src/.svn/entries | 34 - base/business/armas/src/main/.svn/entries | 31 - .../business/armas/src/main/java/.svn/entries | 31 - .../armas/src/main/java/com/.svn/entries | 31 - .../armas/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/armas/.svn/entries | 37 - .../main/java/com/fp/armas/mail/.svn/entries | 164 - .../text-base/PersonaDireccion.java.svn-base | 57 - .../PersonaDireccionVentaTemp.java.svn-base | 88 - .../ScheduleNotificacionCliente.java.svn-base | 245 -- .../SolicitanteDireccion.java.svn-base | 50 - .../main/java/com/fp/armas/rules/.svn/entries | 37 - .../com/fp/armas/rules/exception/.svn/entries | 62 - .../ControlArmasException.java.svn-base | 5 - .../ControlArmasException.java.svn-base | 38 - .../com/fp/armas/rules/query/.svn/entries | 43 - .../armas/rules/query/documentos/.svn/entries | 62 - .../text-base/DocumentoQuery.java.svn-base | 39 - .../fp/armas/rules/query/general/.svn/entries | 62 - .../.svn/prop-base/ArmasQuery.java.svn-base | 5 - .../.svn/text-base/ArmasQuery.java.svn-base | 58 - .../query/ordenTrabajoCustodios/.svn/entries | 62 - .../text-base/OrdenTrabajoQuery.java.svn-base | 27 - .../armas/rules/query/solicitud/.svn/entries | 334 -- .../SolicitudSecuencial.java.svn-base | 5 - .../ArmasXPersonaQuery.java.svn-base | 109 - .../CashHistoricoSecuencial.java.svn-base | 31 - .../CashManagementQuery.java.svn-base | 65 - ...ertificadoFiscaliaSecuencial.java.svn-base | 36 - .../CompletaDatosInspeccionPlan.java.svn-base | 175 - ...pletaInfoVerificarDocumentos.java.svn-base | 45 - .../SolicitudSecuencial.java.svn-base | 36 - .../VerificarArmaQuery.java.svn-base | 142 - .../VerificarInfoCertificado.java.svn-base | 20 - .../rules/query/webservices/.svn/entries | 303 -- .../.svn/prop-base/ArmasId.java.svn-base | 5 - .../prop-base/ColaImpresion.java.svn-base | 5 - .../ConsultaImpresionProceso.java.svn-base | 5 - .../prop-base/ConsultaLogin.java.svn-base | 5 - .../ConsultaXpathDocumento.java.svn-base | 5 - .../prop-base/ImagenPersona.java.svn-base | 5 - .../JefeCentroImpresion.java.svn-base | 5 - .../.svn/text-base/ArmasId.java.svn-base | 68 - .../text-base/ColaImpresion.java.svn-base | 103 - .../ConsultaImpresionProceso.java.svn-base | 72 - .../text-base/ConsultaLogin.java.svn-base | 62 - .../ConsultaXpathDocumento.java.svn-base | 43 - .../.svn/text-base/DatosPerson.java.svn-base | 292 -- .../text-base/ImagenPersona.java.svn-base | 48 - .../JefeCentroImpresion.java.svn-base | 71 - .../rules/query/webservices/util/.svn/entries | 198 - .../.svn/prop-base/ArmaUtil.java.svn-base | 5 - .../.svn/prop-base/CatalogoUtil.java.svn-base | 5 - .../prop-base/ColaImpresionUtil.java.svn-base | 5 - .../.svn/prop-base/PersonaUtil.java.svn-base | 5 - .../.svn/text-base/ArmaUtil.java.svn-base | 162 - .../.svn/text-base/CatalogoUtil.java.svn-base | 66 - .../text-base/ColaImpresionUtil.java.svn-base | 288 -- .../InstitucionSnapEnum.java.svn-base | 32 - .../.svn/text-base/PersonaUtil.java.svn-base | 235 - .../java/com/fp/armas/rules/save/.svn/entries | 52 - .../fp/armas/rules/save/armas/.svn/entries | 232 - .../prop-base/ArmasRegistro.java.svn-base | 5 - .../CambiarUsuarioArma.java.svn-base | 5 - .../text-base/ArmasRegistro.java.svn-base | 113 - .../text-base/AuxCodigoArma.java.svn-base | 37 - .../CambiarUsuarioArma.java.svn-base | 81 - .../.svn/text-base/ImporteArma.java.svn-base | 119 - .../text-base/ImporteArmaExcel.java.svn-base | 56 - .../ReporteArmasDecomisadas.java.svn-base | 67 - .../rules/save/calificacion/.svn/entries | 130 - .../.svn/text-base/Calificacion.java.svn-base | 144 - .../EvaluacionPsicologica.java.svn-base | 103 - .../text-base/EvaluarGuardia.java.svn-base | 115 - .../rules/save/funcionalidad/.svn/entries | 130 - .../.svn/text-base/Movimiento.java.svn-base | 355 -- .../.svn/text-base/Sancionar.java.svn-base | 141 - .../VentasVariasArmasMovimiento.java.svn-base | 363 -- .../armas/rules/save/inspeccion/.svn/entries | 96 - ...rPlanificacionInspeccionSave.java.svn-base | 46 - .../PlanificacionInspeccionSave.java.svn-base | 67 - .../armas/rules/save/pcustomer/.svn/entries | 62 - .../text-base/PeopleFastSave.java.svn-base | 138 - .../armas/rules/save/solicitud/.svn/entries | 368 -- .../ActualizaReimpresion.java.svn-base | 57 - .../text-base/CustodiaTemporal.java.svn-base | 150 - .../DecomisoArmaRecepcion.java.svn-base | 143 - .../DecomisoArmaTransaccion.java.svn-base | 107 - .../text-base/DecomisoMaterial.java.svn-base | 220 - ...umentoHabilitanteTransaccion.java.svn-base | 108 - .../text-base/OrdenTrabajoSave.java.svn-base | 58 - .../RegistroInspeccion.java.svn-base | 83 - .../.svn/text-base/Requisitos.java.svn-base | 95 - .../.svn/text-base/Solicitud.java.svn-base | 74 - .../save/solicitudimportacion/.svn/entries | 232 - .../CompletarDesaduanizacion.java.svn-base | 130 - .../ImportacionProduccion.java.svn-base | 337 -- .../text-base/IngresoInventario.java.svn-base | 299 -- .../.svn/text-base/Inventarios.java.svn-base | 326 -- .../PreviaImportacionDesgloce.java.svn-base | 359 -- .../SolicitudImportacion.java.svn-base | 299 -- .../armas/rules/save/webservices/.svn/entries | 198 - .../prop-base/DesvinculaTagArma.java.svn-base | 5 - .../prop-base/DocumentoDatos.java.svn-base | 5 - .../prop-base/IngresaLectura.java.svn-base | 5 - .../prop-base/VinculaTagArma.java.svn-base | 5 - .../text-base/DesvinculaTagArma.java.svn-base | 63 - .../text-base/DocumentoDatos.java.svn-base | 177 - .../DocumentoHabilitanteDatos.java.svn-base | 126 - .../text-base/IngresaLectura.java.svn-base | 127 - .../text-base/VinculaTagArma.java.svn-base | 66 - .../main/java/com/fp/armas/task/.svn/entries | 915 ---- ...ActualizarInventBajaDestrucc.java.svn-base | 142 - .../ActualizarInventario.java.svn-base | 54 - .../ActualizarPlanificacion.java.svn-base | 41 - .../ActualizarRutaArchivo.java.svn-base | 43 - .../text-base/AplicarSancion.java.svn-base | 71 - .../EmitirComprobanteCaja.java.svn-base | 103 - .../FechaCaducidadEstadoArma.java.svn-base | 93 - ...inalizarDocumentoHabilitante.java.svn-base | 59 - .../GenerarValorACancelar.java.svn-base | 44 - .../ObtieneCentroControl.java.svn-base | 52 - .../ObtienerCategoriaTramite.java.svn-base | 65 - .../.svn/text-base/RechazarActa.java.svn-base | 67 - .../RequiereInspeccion.java.svn-base | 55 - .../TipoArchivoControl.java.svn-base | 52 - .../text-base/TipoDocumento.java.svn-base | 53 - .../text-base/TramiteAnulado.java.svn-base | 54 - .../text-base/TramiteAprobado.java.svn-base | 51 - ...ValAutorizacionPreviaImporta.java.svn-base | 47 - .../ValidaFlujoCargaDeposito.java.svn-base | 52 - .../text-base/ValidaInspeccion.java.svn-base | 52 - .../ValidacionDecomiso.java.svn-base | 48 - .../text-base/ValidacionGrupo.java.svn-base | 74 - .../ValidacionGrupoDecRecep.java.svn-base | 87 - .../text-base/ValidarCustodios.java.svn-base | 63 - .../ValidarUnidadInstitucion.java.svn-base | 57 - .../VerificarCantidadArmas.java.svn-base | 54 - .../armas/task/traspasodominio/.svn/entries | 96 - .../text-base/TraspasoDominio.java.svn-base | 209 - .../TraspasoDominioAnula.java.svn-base | 51 - base/business/armas/src/test/.svn/entries | 31 - .../business/armas/src/test/java/.svn/entries | 31 - .../armas/src/test/java/com/.svn/entries | 31 - .../armas/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/business/.svn/entries | 28 - base/business/general/.svn/dir-prop-base | 9 - base/business/general/.svn/entries | 65 - .../general/.svn/text-base/pom.xml.svn-base | 53 - base/business/general/src/.svn/entries | 34 - base/business/general/src/main/.svn/entries | 34 - .../general/src/main/java/.svn/entries | 31 - .../general/src/main/java/com/.svn/entries | 31 - .../general/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/general/.svn/entries | 64 - .../com/fp/general/application/.svn/entries | 96 - .../text-base/ClientApproval.java.svn-base | 113 - .../OfficerDescription.java.svn-base | 32 - .../main/java/com/fp/general/db/.svn/entries | 62 - .../.svn/text-base/DataHelper.java.svn-base | 473 -- .../com/fp/general/exception/.svn/entries | 62 - .../text-base/ExceptionMessage.java.svn-base | 26 - .../java/com/fp/general/helper/.svn/entries | 232 - .../text-base/AccountNumber.java.svn-base | 195 - .../.svn/text-base/ArrayHelper.java.svn-base | 436 -- .../.svn/text-base/MenuHelper.java.svn-base | 200 - .../text-base/PropertiesHelper.java.svn-base | 182 - .../text-base/SolicitudeNumber.java.svn-base | 70 - .../.svn/text-base/StringHelper.java.svn-base | 639 --- .../java/com/fp/general/keygen/.svn/entries | 130 - .../text-base/AbstractKeyGen.java.svn-base | 14 - .../.svn/text-base/SequenceKey.java.svn-base | 66 - .../text-base/SubSequenceKey.java.svn-base | 86 - .../java/com/fp/general/rates/.svn/entries | 31 - .../com/fp/general/rates/rules/.svn/entries | 99 - .../text-base/ValidateRates.java.svn-base | 145 - ...OverlapSubProductRatesAmount.java.svn-base | 142 - .../fp/general/rates/rules/query/.svn/entries | 31 - .../rates/rules/query/code/.svn/entries | 62 - .../.svn/text-base/RatesDetail.java.svn-base | 36 - .../java/com/fp/general/record/.svn/entries | 130 - .../.svn/text-base/FieldData.java.svn-base | 137 - .../.svn/text-base/ParserRecord.java.svn-base | 211 - .../.svn/text-base/Record.java.svn-base | 62 - .../java/com/fp/general/rules/.svn/entries | 71 - .../SubProductcurrencyDesc.java.svn-base | 52 - .../com/fp/general/rules/query/.svn/entries | 340 -- .../BalanceTypeProvision.java.svn-base | 103 - .../CompleteMaturation.java.svn-base | 61 - .../CompleteTransactionLevel.java.svn-base | 44 - .../CompleteTransactionMixPages.java.svn-base | 45 - .../CompleteTransactionSubLevel.java.svn-base | 45 - .../.svn/text-base/ExecuteSQL.java.svn-base | 42 - .../.svn/text-base/LovOfficer.java.svn-base | 44 - .../LovTransactionEvent.java.svn-base | 47 - .../PrincipalInstallRates.java.svn-base | 70 - .../fp/general/rules/query/code/.svn/entries | 436 -- .../text-base/CriteriaValidator.java.svn-base | 25 - .../.svn/text-base/DataBaseFile.java.svn-base | 52 - .../DaysAccountingDate.java.svn-base | 126 - .../text-base/HeaderSolicitude.java.svn-base | 49 - .../.svn/text-base/InfoDataFile.java.svn-base | 43 - .../.svn/text-base/LovAccount.java.svn-base | 103 - .../.svn/text-base/LovCustomer.java.svn-base | 91 - .../text-base/LovCustomerMulti.java.svn-base | 105 - .../.svn/text-base/LovOfficial.java.svn-base | 71 - .../.svn/text-base/ModuleDesc.java.svn-base | 46 - .../text-base/SubProductDesc.java.svn-base | 49 - .../text-base/VerifyClientData.java.svn-base | 128 - .../fp/general/rules/query/trans/.svn/entries | 99 - .../ObtainTechnicalPatrimony.java.svn-base | 114 - .../text-base/ProductsByClient.java.svn-base | 218 - .../rules/query/trans/panel/.svn/entries | 96 - .../text-base/ProductPanels.java.svn-base | 90 - .../text-base/TransactionPanels.java.svn-base | 98 - .../com/fp/general/rules/save/.svn/entries | 198 - .../ChangeAccountingDate.java.svn-base | 132 - .../.svn/text-base/EraseCache.java.svn-base | 28 - .../GenerateAccountingDate.java.svn-base | 290 -- .../VerifyOverlapChargesAmount.java.svn-base | 91 - ...erlapSubProductChargesAmount.java.svn-base | 95 - .../fp/general/rules/scheduler/.svn/entries | 62 - ...ChangeScheduleAccountingdate.java.svn-base | 29 - .../com/fp/general/scheduler/.svn/entries | 96 - .../.svn/text-base/MiaScheduler.java.svn-base | 94 - .../.svn/text-base/SchedulerJob.java.svn-base | 161 - .../java/com/fp/general/score/.svn/entries | 31 - .../com/fp/general/score/save/.svn/entries | 198 - .../.svn/text-base/FileScore.java.svn-base | 138 - .../text-base/SafeFileScore.java.svn-base | 103 - .../SafeScoreHeaderDetail.java.svn-base | 61 - .../UploadFileScoreThread.java.svn-base | 259 -- .../UploadLineScoreThread.java.svn-base | 232 - .../java/com/fp/general/security/.svn/entries | 31 - .../fp/general/security/rules/.svn/entries | 371 -- .../CloseAllSessions.java.netbeans-base | 63 - .../text-base/CloseAllSessions.java.svn-base | 63 - .../.svn/text-base/CloseSession.java.svn-base | 41 - .../.svn/text-base/Company.java.netbeans-base | 193 - .../.svn/text-base/Company.java.svn-base | 193 - .../CreateInternalCodeUser.java.svn-base | 99 - .../text-base/MaintenanceMenu.java.svn-base | 192 - .../text-base/MaintenanceUser.java.svn-base | 96 - .../rules/.svn/text-base/Menu.java.svn-base | 136 - .../.svn/text-base/Politics.java.svn-base | 264 -- .../.svn/text-base/UserLogon.java.svn-base | 601 --- .../.svn/text-base/UserLogonCas.java.svn-base | 569 --- .../general/security/rules/query/.svn/entries | 99 - .../text-base/CompleteAudit.java.svn-base | 92 - .../.svn/text-base/QueryAudit.java.svn-base | 165 - .../security/rules/query/code/.svn/entries | 96 - .../.svn/text-base/SearchUser.java.svn-base | 57 - .../text-base/TransactionSearch.java.svn-base | 86 - .../com/fp/general/templates/.svn/entries | 34 - .../fp/general/templates/query/.svn/entries | 96 - .../text-base/QueryTemplates.java.svn-base | 29 - .../QueryTemplatesDesc.java.svn-base | 97 - .../fp/general/templates/save/.svn/entries | 62 - .../text-base/SaveTemplatesDesc.java.svn-base | 70 - .../general/src/main/resources/.svn/entries | 62 - .../generalmessages_es.properties.svn-base | 43 - base/business/general/src/test/.svn/entries | 34 - .../general/src/test/java/.svn/entries | 28 - .../general/src/test/resources/.svn/entries | 28 - base/business/log/.svn/dir-prop-base | 6 - base/business/log/.svn/entries | 65 - .../log/.svn/text-base/pom.xml.svn-base | 22 - base/business/log/src/.svn/entries | 34 - base/business/log/src/main/.svn/entries | 34 - base/business/log/src/main/java/.svn/entries | 31 - .../log/src/main/java/com/.svn/entries | 31 - .../log/src/main/java/com/fp/.svn/entries | 31 - .../log/src/main/java/com/fp/log/.svn/entries | 96 - .../log/.svn/text-base/LogBook.java.svn-base | 188 - .../.svn/text-base/package-info.java.svn-base | 4 - .../log/src/main/resources/.svn/entries | 28 - base/business/log/src/test/.svn/entries | 34 - base/business/log/src/test/java/.svn/entries | 28 - .../log/src/test/resources/.svn/entries | 28 - base/business/person/.svn/dir-prop-base | 6 - base/business/person/.svn/entries | 65 - .../person/.svn/text-base/pom.xml.svn-base | 32 - base/business/person/src/.svn/entries | 34 - base/business/person/src/main/.svn/entries | 34 - .../person/src/main/java/.svn/entries | 31 - .../person/src/main/java/com/.svn/entries | 31 - .../person/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/person/.svn/entries | 37 - .../main/java/com/fp/person/db/.svn/entries | 62 - .../.svn/text-base/DataHelper.java.svn-base | 149 - .../java/com/fp/person/rules/.svn/entries | 34 - .../com/fp/person/rules/query/.svn/entries | 201 - .../text-base/ActivityEconomic.java.svn-base | 120 - .../CountryProvinceCity.java.svn-base | 202 - .../text-base/DirectionFull.java.svn-base | 91 - .../.svn/text-base/PersonName.java.svn-base | 264 -- .../text-base/PhonesPerClient.java.svn-base | 45 - .../fp/person/rules/query/code/.svn/entries | 201 - .../text-base/AddressSequence.java.svn-base | 40 - .../LovFinancialInstitutions.java.svn-base | 57 - .../PercentageStockholder.java.svn-base | 36 - .../text-base/ValidationAddress.java.svn-base | 101 - .../text-base/VerifyManagers.java.svn-base | 78 - .../person/rules/query/code/sbs/.svn/entries | 62 - .../.svn/text-base/EmployeeLov.java.svn-base | 46 - .../com/fp/person/rules/save/.svn/entries | 470 -- .../CompleteCompanyCode.java.svn-base | 402 -- .../CompleteHistoryActivity.java.svn-base | 45 - .../CompletePersonAndCompany.java.svn-base | 272 -- .../CompletePersonCode.java.svn-base | 468 -- .../FinancialSituation.java.svn-base | 145 - .../text-base/JuridicalPerson.java.svn-base | 137 - .../.svn/text-base/LogoImage.java.svn-base | 108 - .../text-base/PersonBalanceFile.java.svn-base | 79 - .../.svn/text-base/PersonImage.java.svn-base | 137 - .../ValidateAddressPhones.java.svn-base | 60 - .../text-base/VerifyInConsep.java.svn-base | 242 -- .../VerifyInConsepCompany.java.svn-base | 87 - .../VerifyInConsepPerson.java.svn-base | 75 - .../java/com/fp/person/validate/.svn/entries | 62 - .../ValidateIdentification.java.svn-base | 144 - .../person/src/main/resources/.svn/entries | 62 - .../personmessages_es.properties.svn-base | 12 - base/business/person/src/test/.svn/entries | 34 - .../person/src/test/java/.svn/entries | 28 - .../person/src/test/resources/.svn/entries | 28 - base/business/report/.svn/dir-prop-base | 6 - base/business/report/.svn/entries | 65 - .../report/.svn/text-base/pom.xml.svn-base | 16 - base/business/report/src/.svn/entries | 34 - base/business/report/src/main/.svn/entries | 34 - .../report/src/main/java/.svn/entries | 31 - .../report/src/main/java/com/.svn/entries | 31 - .../report/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/report/.svn/entries | 40 - .../main/java/com/fp/report/db/.svn/entries | 96 - .../.svn/text-base/DataHelper.java.svn-base | 29 - .../db/.svn/text-base/SQLUtil.java.svn-base | 38 - .../java/com/fp/report/query/.svn/entries | 28 - .../java/com/fp/report/rules/.svn/entries | 34 - .../com/fp/report/rules/query/.svn/entries | 28 - .../com/fp/report/rules/save/.svn/entries | 28 - .../main/java/com/fp/report/util/.svn/entries | 62 - .../.svn/text-base/Utilities.java.svn-base | 213 - .../report/src/main/resources/.svn/entries | 28 - base/business/report/src/test/.svn/entries | 34 - .../report/src/test/java/.svn/entries | 28 - .../report/src/test/resources/.svn/entries | 28 - base/business/viaticos/.svn/dir-prop-base | 9 - base/business/viaticos/.svn/entries | 65 - .../viaticos/.svn/text-base/pom.xml.svn-base | 46 - base/business/viaticos/src/.svn/entries | 34 - base/business/viaticos/src/main/.svn/entries | 34 - .../viaticos/src/main/java/.svn/entries | 31 - .../viaticos/src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/viaticos/.svn/entries | 37 - .../java/com/fp/viaticos/mail/.svn/entries | 439 -- .../.svn/text-base/Contabilidad.java.svn-base | 78 - .../.svn/text-base/Empleado.java.svn-base | 57 - .../text-base/EmpleadoyJefe.java.svn-base | 53 - ...leadoyJefeyResponsableUnidad.java.svn-base | 60 - .../mail/.svn/text-base/Grupos.java.svn-base | 55 - .../mail/.svn/text-base/Jefe.java.svn-base | 51 - .../.svn/text-base/MailMasivo.java.svn-base | 89 - .../.svn/text-base/Movilizacion.java.svn-base | 103 - .../text-base/ResponsableUnidad.java.svn-base | 51 - .../text-base/TalentoHumano.java.svn-base | 78 - .../.svn/text-base/Tesoreria.java.svn-base | 90 - .../UsaurioIngresoSolicitud.java.svn-base | 57 - .../com/fp/viaticos/mail/thread/.svn/entries | 62 - .../text-base/MailPorSolicitud.java.svn-base | 122 - .../java/com/fp/viaticos/rules/.svn/entries | 43 - .../fp/viaticos/rules/consulta/.svn/entries | 31 - .../rules/consulta/solicitud/.svn/entries | 96 - .../ConsultaComentarios.java.svn-base | 55 - .../text-base/ConsultaSolicitud.java.svn-base | 127 - .../com/fp/viaticos/rules/enums/.svn/entries | 96 - .../.svn/text-base/EnumCodigos.java.svn-base | 48 - .../EnumEstadosSolicitud.java.svn-base | 71 - .../fp/viaticos/rules/exception/.svn/entries | 62 - .../text-base/ViaticosException.java.svn-base | 33 - .../com/fp/viaticos/rules/query/.svn/entries | 43 - .../viaticos/rules/query/destino/.svn/entries | 96 - .../.svn/text-base/DestinoQuery.java.svn-base | 46 - .../text-base/LovDestinoSbs.java.svn-base | 28 - .../rules/query/empleados/.svn/entries | 130 - .../text-base/LovEmpleadosSbs.java.svn-base | 32 - .../NotificacionMovilizacion.java.svn-base | 41 - .../text-base/UsuarioPorCiudad.java.svn-base | 41 - .../viaticos/rules/query/general/.svn/entries | 62 - .../text-base/DiasAcumulados.java.svn-base | 58 - .../viaticos/rules/query/informe/.svn/entries | 62 - .../.svn/text-base/Informe.java.svn-base | 139 - .../rules/query/solicitud/.svn/entries | 96 - .../ConsultaEstadoSolicitud.java.svn-base | 132 - .../ConsultaLovSolicitud.java.svn-base | 53 - .../com/fp/viaticos/rules/save/.svn/entries | 34 - .../rules/save/acumulados/.svn/entries | 62 - .../text-base/DiasAcumulados.java.svn-base | 77 - .../rules/save/solicitud/.svn/entries | 201 - .../.svn/text-base/Comentarios.java.svn-base | 73 - .../.svn/text-base/Solicitud.java.svn-base | 65 - .../SolicitudIntegrantes.java.svn-base | 54 - .../SolicitudTransporte.java.svn-base | 54 - .../text-base/ValidaFeriados.java.svn-base | 207 - .../rules/save/solicitud/estados/.svn/entries | 436 -- .../.svn/text-base/Anulada.java.svn-base | 41 - .../.svn/text-base/Aprobada.java.svn-base | 41 - .../text-base/ConfirmaAnulacion.java.svn-base | 37 - .../.svn/text-base/EstadoHelper.java.svn-base | 32 - .../text-base/InformeAprobado.java.svn-base | 41 - .../text-base/InformePorAprobar.java.svn-base | 39 - .../InformePorCorregir.java.svn-base | 41 - .../text-base/NegarComision.java.svn-base | 41 - .../.svn/text-base/PorAprobar.java.svn-base | 39 - .../PorAprobarModificaciones.java.svn-base | 37 - .../.svn/text-base/PorCorregir.java.svn-base | 41 - .../PorIngresarInforme.java.svn-base | 41 - .../java/com/fp/viaticos/task/.svn/entries | 334 -- .../AsignarContabilidad.java.svn-base | 72 - .../text-base/AsignarEmpleado.java.svn-base | 42 - .../.svn/text-base/AsignarJefe.java.svn-base | 56 - .../AsignarJefeInforme.java.svn-base | 56 - .../AsignarSupervisior.java.svn-base | 48 - .../AsignarSupervisiorInforme.java.svn-base | 48 - .../AsignarTalentoHumano.java.svn-base | 72 - .../text-base/AsignarTesoreria.java.svn-base | 72 - ...ignarUsuarioIngresaSolicitud.java.svn-base | 40 - .../viaticos/src/main/resources/.svn/entries | 62 - .../viamessages_es.properties.svn-base | 10 - base/business/viaticos/src/test/.svn/entries | 31 - .../viaticos/src/test/java/.svn/entries | 31 - .../viaticos/src/test/java/com/.svn/entries | 31 - .../src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/business/.svn/entries | 62 - .../.svn/text-base/AppTest.java.svn-base | 38 - base/core/.svn/entries | 71 - base/core/.svn/text-base/pom.xml.svn-base | 42 - base/core/alfresco-client/.svn/dir-prop-base | 6 - base/core/alfresco-client/.svn/entries | 65 - .../.svn/text-base/pom.xml.svn-base | 44 - base/core/alfresco-client/src/.svn/entries | 34 - .../alfresco-client/src/main/.svn/entries | 34 - .../src/main/java/.svn/entries | 31 - .../src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/alfresco/.svn/entries | 43 - .../java/com/fp/alfresco/auth/.svn/entries | 96 - .../text-base/AlfrescoFileAuth.java.svn-base | 56 - .../text-base/Authentication.java.svn-base | 68 - .../java/com/fp/alfresco/client/.svn/entries | 130 - .../.svn/text-base/AlfrescoApi.java.svn-base | 434 -- .../text-base/DocumentoAlfresco.java.svn-base | 180 - .../.svn/text-base/Prueba.java.svn-base | 151 - .../java/com/fp/alfresco/enums/.svn/entries | 130 - .../.svn/text-base/EnumDataType.java.svn-base | 50 - .../text-base/EnumDocumentType.java.svn-base | 41 - .../text-base/EnumRequestType.java.svn-base | 24 - .../com/fp/alfresco/exception/.svn/entries | 62 - .../ExceptionWebscript.java.svn-base | 33 - .../java/com/fp/alfresco/util/.svn/entries | 164 - .../text-base/ApiProperties.java.svn-base | 57 - .../.svn/text-base/ApiRequest.java.svn-base | 158 - .../ApiResponseHandler.java.svn-base | 58 - .../.svn/text-base/UriUtils.java.svn-base | 58 - .../src/main/resources/.svn/entries | 62 - .../alfresco-api.properties.svn-base | 17 - .../alfresco-client/src/test/.svn/entries | 34 - .../src/test/java/.svn/entries | 28 - .../src/test/resources/.svn/entries | 28 - base/core/bpm/.svn/dir-prop-base | 9 - base/core/bpm/.svn/entries | 65 - base/core/bpm/.svn/text-base/pom.xml.svn-base | 38 - base/core/bpm/src/.svn/entries | 34 - base/core/bpm/src/main/.svn/entries | 34 - base/core/bpm/src/main/java/.svn/entries | 31 - base/core/bpm/src/main/java/com/.svn/entries | 31 - .../bpm/src/main/java/com/fp/.svn/entries | 31 - .../bpm/src/main/java/com/fp/bpm/.svn/entries | 114 - .../ActionExecutor.java.netbeans-base | 272 -- .../text-base/ActionExecutor.java.svn-base | 272 -- .../EngineExecutor.java.netbeans-base | 139 - .../text-base/EngineExecutor.java.svn-base | 139 - .../main/java/com/fp/bpm/actions/.svn/entries | 232 - .../.svn/text-base/Action.java.svn-base | 5 - .../.svn/text-base/ActionTypes.java.svn-base | 80 - .../.svn/text-base/LogonAction.java.svn-base | 61 - .../text-base/QueryAction.java.netbeans-base | 178 - .../.svn/text-base/QueryAction.java.svn-base | 178 - .../text-base/SaveAction.java.netbeans-base | 185 - .../.svn/text-base/SaveAction.java.svn-base | 185 - .../text-base/SaveActionHelper.java.svn-base | 289 -- .../main/java/com/fp/bpm/helper/.svn/entries | 62 - .../text-base/TransactionTime.java.svn-base | 77 - .../main/java/com/fp/bpm/query/.svn/entries | 269 -- .../query/.svn/text-base/Query.java.svn-base | 183 - .../.svn/text-base/QueryHQL.java.svn-base | 333 -- .../.svn/text-base/QueryHelper.java.svn-base | 333 -- .../.svn/text-base/QueryJsf.java.svn-base | 249 -- .../text-base/QueryOperation.java.svn-base | 5 - .../QueryProcessCriteria.java.svn-base | 143 - .../text-base/QueryProcessor.java.svn-base | 188 - .../java/com/fp/bpm/query/menu/.svn/entries | 62 - .../menu/.svn/text-base/Menu.java.svn-base | 16 - .../main/java/com/fp/bpm/report/.svn/entries | 96 - .../text-base/ReportOperation.java.svn-base | 10 - .../text-base/ReportProcessor.java.svn-base | 72 - .../main/java/com/fp/bpm/rules/.svn/entries | 28 - .../main/java/com/fp/bpm/save/.svn/entries | 130 - .../save/.svn/text-base/Save.java.svn-base | 145 - .../text-base/SaveOperation.java.svn-base | 10 - .../text-base/SaveProcessor.java.svn-base | 198 - base/core/bpm/src/main/resources/.svn/entries | 28 - base/core/bpm/src/test/.svn/entries | 34 - base/core/bpm/src/test/java/.svn/entries | 31 - base/core/bpm/src/test/java/test/.svn/entries | 31 - .../bpm/src/test/java/test/com/.svn/entries | 31 - .../src/test/java/test/com/fp/.svn/entries | 31 - .../test/java/test/com/fp/bpm/.svn/entries | 28 - base/core/bpm/src/test/resources/.svn/entries | 28 - base/core/firmas/.svn/dir-prop-base | 6 - base/core/firmas/.svn/entries | 65 - .../firmas/.svn/text-base/pom.xml.svn-base | 57 - base/core/firmas/src/.svn/entries | 34 - base/core/firmas/src/main/.svn/entries | 34 - base/core/firmas/src/main/java/.svn/entries | 31 - .../firmas/src/main/java/com/.svn/entries | 31 - .../firmas/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/firmas/.svn/entries | 31 - .../java/com/fp/firmas/rules/.svn/entries | 37 - .../com/fp/firmas/rules/common/.svn/entries | 105 - .../text-base/CertificateUtils.java.svn-base | 738 ---- .../PDFRendererListener.java.svn-base | 69 - .../rules/common/enumerator/.svn/entries | 62 - .../.svn/text-base/SignType.java.svn-base | 21 - .../rules/common/exception/.svn/entries | 62 - .../text-base/FirmasException.java.svn-base | 38 - .../rules/common/resources/.svn/entries | 62 - .../.svn/text-base/FirmMessages.java.svn-base | 19 - .../com/fp/firmas/rules/query/.svn/entries | 62 - .../UsuarioCertificado.java.svn-base | 46 - .../com/fp/firmas/rules/save/.svn/entries | 62 - .../text-base/CertificadoFirma.java.svn-base | 68 - .../firmas/src/main/resources/.svn/entries | 62 - .../firmessages_es.properties.svn-base | 46 - base/core/firmas/src/test/.svn/entries | 31 - base/core/firmas/src/test/java/.svn/entries | 31 - .../firmas/src/test/java/com/.svn/entries | 31 - .../firmas/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/firmas/.svn/entries | 28 - base/dto/.svn/entries | 68 - base/dto/.svn/text-base/pom.xml.svn-base | 32 - base/dto/common/.svn/dir-prop-base | 9 - base/dto/common/.svn/entries | 65 - .../common/.svn/text-base/pom.xml.svn-base | 86 - base/dto/common/src/.svn/entries | 34 - base/dto/common/src/main/.svn/entries | 34 - base/dto/common/src/main/java/.svn/entries | 34 - .../dto/common/src/main/java/com/.svn/entries | 31 - .../common/src/main/java/com/fp/.svn/entries | 103 - .../main/java/com/fp/accounting/.svn/entries | 31 - .../com/fp/accounting/exception/.svn/entries | 62 - .../AccountingException.java.svn-base | 40 - .../src/main/java/com/fp/ach/.svn/entries | 31 - .../java/com/fp/ach/exception/.svn/entries | 62 - .../.svn/text-base/AchException.java.svn-base | 39 - .../main/java/com/fp/application/.svn/entries | 31 - .../com/fp/application/exception/.svn/entries | 62 - .../SolicitudeException.java.svn-base | 41 - .../src/main/java/com/fp/bpmlib/.svn/entries | 62 - .../.svn/text-base/BPMException.java.svn-base | 43 - .../main/java/com/fp/bscoring/.svn/entries | 62 - .../text-base/BscoringException.java.svn-base | 48 - .../src/main/java/com/fp/builder/.svn/entries | 62 - .../text-base/BuilderException.java.svn-base | 27 - .../src/main/java/com/fp/common/.svn/entries | 61 - .../java/com/fp/common/base64/.svn/entries | 62 - .../.svn/text-base/Base64Input.java.svn-base | 171 - .../java/com/fp/common/exception/.svn/entries | 436 -- .../.svn/text-base/APPException.java.svn-base | 135 - .../AbstractExceptionMessage.java.svn-base | 19 - .../text-base/CommonException.java.svn-base | 37 - .../text-base/ExceptionHandler.java.svn-base | 269 -- .../text-base/ExceptionManager.java.svn-base | 73 - .../ExceptionsProperties.java.svn-base | 38 - ...dentifierGenerationException.java.svn-base | 34 - .../NonUniqueObjectException.java.svn-base | 40 - .../PropertyValueException.java.svn-base | 35 - .../SQLExceptionManager.java.svn-base | 266 -- .../SavePointException.java.svn-base | 36 - .../StaleObjectStateException.java.svn-base | 37 - .../java/com/fp/common/files/.svn/entries | 99 - .../.svn/text-base/FileIterator.java.svn-base | 128 - .../.svn/text-base/StreamHelper.java.svn-base | 178 - .../com/fp/common/files/record/.svn/entries | 62 - .../text-base/RecordIterator.java.svn-base | 85 - .../main/java/com/fp/common/fin/.svn/entries | 62 - .../text-base/MessageGenerator.java.svn-base | 56 - .../java/com/fp/common/formula/.svn/entries | 99 - .../text-base/AbstractFunction.java.svn-base | 90 - .../text-base/FormulaEvaluator.java.svn-base | 89 - .../fp/common/formula/functions/.svn/entries | 96 - .../.svn/text-base/Percent.java.svn-base | 27 - .../.svn/text-base/Sum.java.svn-base | 31 - .../java/com/fp/common/helper/.svn/entries | 164 - .../text-base/CalculationBase.java.svn-base | 129 - .../.svn/text-base/Constant.java.svn-base | 448 -- .../.svn/text-base/DialectDB.java.svn-base | 36 - .../.svn/text-base/FkException.java.svn-base | 18 - .../java/com/fp/common/logger/.svn/entries | 62 - .../.svn/text-base/APPLogger.java.svn-base | 32 - .../java/com/fp/common/messages/.svn/entries | 96 - .../.svn/text-base/ELEval.java.svn-base | 9 - .../text-base/MessageUtil.java.netbeans-base | 81 - .../.svn/text-base/MessageUtil.java.svn-base | 81 - .../com/fp/common/properties/.svn/entries | 96 - .../text-base/CommonProperties.java.svn-base | 37 - .../text-base/PropertiesHandler.java.svn-base | 241 - .../main/java/com/fp/common/soap/.svn/entries | 62 - .../.svn/text-base/WSClient.java.svn-base | 137 - .../java/com/fp/common/thread/.svn/entries | 62 - .../.svn/text-base/Monitor.java.svn-base | 154 - .../src/main/java/com/fp/core/.svn/entries | 31 - .../java/com/fp/core/exception/.svn/entries | 62 - .../text-base/CoreException.java.svn-base | 40 - .../java/com/fp/creditfacility/.svn/entries | 31 - .../fp/creditfacility/exception/.svn/entries | 62 - .../CreditFacilityException.java.svn-base | 40 - .../java/com/fp/demandeposit/.svn/entries | 31 - .../fp/demandeposit/exception/.svn/entries | 62 - .../DemandDepositException.java.svn-base | 40 - .../main/java/com/fp/documents/.svn/entries | 62 - .../.svn/text-base/DocException.java.svn-base | 37 - .../src/main/java/com/fp/dto/.svn/entries | 31 - .../main/java/com/fp/dto/json/.svn/entries | 133 - .../DateValueProcessor.java.svn-base | 41 - .../ObjectValueProcessor.java.svn-base | 28 - .../.svn/text-base/Serializer.java.svn-base | 346 -- .../java/com/fp/dto/json/morpher/.svn/entries | 96 - .../.svn/text-base/DateMorpher.java.svn-base | 29 - .../text-base/TimestampMorpher.java.svn-base | 29 - .../src/main/java/com/fp/excel/.svn/entries | 232 - .../.svn/text-base/ExcelToMap.java.svn-base | 201 - .../ExcelToMapMessages.java.svn-base | 45 - .../text-base/FormulaManage.java.svn-base | 5 - .../text-base/WorkbookFactory.java.svn-base | 139 - .../WorkbookFactoryStreamBytes.java.svn-base | 109 - .../.svn/text-base/XLSXUtil.java.svn-base | 287 -- .../src/main/java/com/fp/general/.svn/entries | 31 - .../com/fp/general/exception/.svn/entries | 62 - .../text-base/GeneralException.java.svn-base | 33 - .../main/java/com/fp/installment/.svn/entries | 31 - .../com/fp/installment/exception/.svn/entries | 62 - .../InstallmentException.java.svn-base | 40 - .../src/main/java/com/fp/loan/.svn/entries | 31 - .../java/com/fp/loan/exception/.svn/entries | 62 - .../text-base/LoanException.java.svn-base | 38 - .../src/main/java/com/fp/mail/.svn/entries | 62 - .../fp/mail/.svn/text-base/Mail.java.svn-base | 489 --- .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/commondb/.svn/entries | 31 - .../commondb/exception/.svn/entries | 62 - .../text-base/CommondbException.java.svn-base | 39 - .../main/java/com/fp/receivable/.svn/entries | 31 - .../com/fp/receivable/exception/.svn/entries | 62 - .../ReceivableException.java.svn-base | 38 - .../src/main/java/com/fp/telered/.svn/entries | 31 - .../com/fp/telered/exception/.svn/entries | 62 - .../text-base/TeleredException.java.svn-base | 41 - .../src/main/java/com/fp/teller/.svn/entries | 31 - .../java/com/fp/teller/exception/.svn/entries | 62 - .../text-base/TellerException.java.svn-base | 38 - .../src/main/java/com/fp/term/.svn/entries | 31 - .../java/com/fp/term/exception/.svn/entries | 62 - .../text-base/TermException.java.svn-base | 37 - .../main/java/com/fp/timedeposit/.svn/entries | 31 - .../com/fp/timedeposit/exception/.svn/entries | 62 - .../TimeDepositException.java.svn-base | 38 - .../main/java/com/fp/viaticos/.svn/entries | 31 - .../com/fp/viaticos/exception/.svn/entries | 62 - .../text-base/ViaticosException.java.svn-base | 41 - .../main/java/com/fp/warranty/.svn/entries | 31 - .../com/fp/warranty/exception/.svn/entries | 62 - .../text-base/WarrantyException.java.svn-base | 37 - .../common/src/main/java/test/.svn/entries | 31 - .../src/main/java/test/com/.svn/entries | 31 - .../src/main/java/test/com/fp/.svn/entries | 31 - .../main/java/test/com/fp/json/.svn/entries | 130 - .../.svn/text-base/TestingBean.java.svn-base | 98 - .../.svn/text-base/TestingBean1.java.svn-base | 57 - .../text-base/TestingBeanKey.java.svn-base | 32 - .../common/src/main/resources/.svn/entries | 198 - .../commonmessages_es.properties.svn-base | 19 - .../text-base/exceptions.properties.svn-base | 12 - .../userMessages.properties.svn-base | 20 - .../userMessages_es.properties.netbeans-base | 17 - .../userMessages_es.properties.svn-base | 17 - .../userMessages_es_EC.properties.svn-base | 17 - base/dto/common/src/test/.svn/entries | 34 - base/dto/common/src/test/java/.svn/entries | 31 - .../common/src/test/java/test/.svn/entries | 31 - .../src/test/java/test/com/.svn/entries | 31 - .../src/test/java/test/com/fp/.svn/entries | 37 - .../test/java/test/com/fp/common/.svn/entries | 130 - .../.svn/text-base/ELTest.java.svn-base | 65 - .../InternationalitationTest.java.svn-base | 17 - .../.svn/text-base/MessageTest.java.svn-base | 92 - .../test/java/test/com/fp/excel/.svn/entries | 62 - .../text-base/ExcelToMapMain.java.svn-base | 46 - .../test/java/test/com/fp/json/.svn/entries | 62 - .../text-base/SerializerTest.java.svn-base | 426 -- .../common/src/test/resources/.svn/entries | 28 - base/dto/dto/.svn/dir-prop-base | 9 - base/dto/dto/.svn/entries | 65 - base/dto/dto/.svn/text-base/pom.xml.svn-base | 35 - base/dto/dto/src/.svn/entries | 31 - base/dto/dto/src/main/.svn/entries | 34 - base/dto/dto/src/main/java/.svn/entries | 34 - base/dto/dto/src/main/java/com/.svn/entries | 31 - .../dto/dto/src/main/java/com/fp/.svn/entries | 34 - .../src/main/java/com/fp/common/.svn/entries | 31 - .../java/com/fp/common/helper/.svn/entries | 62 - .../text-base/BeanManager.java.netbeans-base | 590 --- .../.svn/text-base/BeanManager.java.svn-base | 590 --- .../dto/src/main/java/com/fp/dto/.svn/entries | 293 -- .../.svn/text-base/AbstractData.java.svn-base | 156 - ...AbstractDataBalanceTransport.java.svn-base | 37 - .../AbstractDataTransfer.java.svn-base | 222 - .../AbstractDataTransport.java.svn-base | 113 - .../text-base/GeneralRequest.java.svn-base | 524 --- .../.svn/text-base/Request.java.netbeans-base | 958 ---- .../dto/.svn/text-base/Request.java.svn-base | 958 ---- .../dto/.svn/text-base/Response.java.svn-base | 224 - .../main/java/com/fp/dto/batch/.svn/entries | 96 - .../BatchAccountRequest.java.svn-base | 273 -- .../BatchModuleRequest.java.svn-base | 225 - .../main/java/com/fp/dto/data/.svn/entries | 96 - .../.svn/text-base/SaveData.java.svn-base | 181 - .../text-base/TransactionDTO.java.svn-base | 102 - .../src/main/java/com/fp/dto/fin/.svn/entries | 164 - .../fin/.svn/text-base/Concept.java.svn-base | 47 - .../text-base/FinancialExchange.java.svn-base | 292 -- .../text-base/FinancialItem.java.svn-base | 612 --- .../text-base/FinancialRequest.java.svn-base | 754 ---- .../src/main/java/com/fp/dto/hb/.svn/entries | 232 - .../text-base/AbstractExpire.java.svn-base | 19 - .../dto/hb/.svn/text-base/Cache.java.svn-base | 7 - .../text-base/HibernateBean.java.svn-base | 13 - .../.svn/text-base/HibernateId.java.svn-base | 7 - .../hb/.svn/text-base/History.java.svn-base | 16 - .../dto/hb/.svn/text-base/Log.java.svn-base | 7 - .../main/java/com/fp/dto/helper/.svn/entries | 62 - .../.svn/text-base/FileHelper.java.svn-base | 127 - .../main/java/com/fp/dto/query/.svn/entries | 303 -- .../text-base/AdditionalQuery.java.svn-base | 105 - .../.svn/text-base/DtoQuery.java.svn-base | 212 - .../query/.svn/text-base/Filter.java.svn-base | 142 - .../.svn/text-base/FilterTypes.java.svn-base | 36 - .../.svn/text-base/QueryBean.java.svn-base | 281 -- .../text-base/QueryCriteria.java.svn-base | 197 - .../.svn/text-base/QueryRequest.java.svn-base | 85 - .../.svn/text-base/SubQuery.java.svn-base | 122 - .../java/com/fp/dto/query/menu/.svn/entries | 62 - .../.svn/text-base/MenuRequest.java.svn-base | 35 - .../main/java/com/fp/dto/quota/.svn/entries | 96 - .../quota/.svn/text-base/Quota.java.svn-base | 105 - .../.svn/text-base/QuotaDetail.java.svn-base | 304 -- .../main/java/com/fp/dto/rules/.svn/entries | 269 -- .../.svn/text-base/AbstractRule.java.svn-base | 60 - .../text-base/ExceptionRule.java.svn-base | 20 - .../.svn/text-base/QueryRule.java.svn-base | 33 - .../.svn/text-base/ReportRule.java.svn-base | 32 - .../.svn/text-base/ScheduleRule.java.svn-base | 18 - .../.svn/text-base/Service.java.svn-base | 17 - .../text-base/TransactionRule.java.svn-base | 41 - .../java/com/fp/dto/rules/com/.svn/entries | 31 - .../java/com/fp/dto/rules/com/fp/.svn/entries | 31 - .../com/fp/dto/rules/com/fp/dto/.svn/entries | 28 - .../main/java/com/fp/dto/save/.svn/entries | 130 - .../save/.svn/text-base/DtoSave.java.svn-base | 327 -- .../.svn/text-base/SaveBean.java.svn-base | 253 -- .../.svn/text-base/SaveRequest.java.svn-base | 298 -- base/dto/dto/src/main/java/test/.svn/entries | 31 - .../dto/src/main/java/test/com/.svn/entries | 31 - .../src/main/java/test/com/fp/.svn/entries | 31 - .../main/java/test/com/fp/json/.svn/entries | 130 - .../.svn/text-base/TestingBean.java.svn-base | 99 - .../.svn/text-base/TestingBean1.java.svn-base | 55 - .../text-base/TestingBeanKey.java.svn-base | 32 - base/dto/dto/src/main/resources/.svn/entries | 28 - base/facade/.svn/dir-prop-base | 9 - base/facade/.svn/entries | 65 - base/facade/.svn/text-base/pom.xml.svn-base | 85 - base/facade/src/.svn/entries | 34 - base/facade/src/main/.svn/entries | 34 - base/facade/src/main/java/.svn/entries | 34 - .../src/main/java/META-INF/.svn/entries | 96 - .../.svn/text-base/MANIFEST.MF.svn-base | 3 - .../.svn/text-base/ejb-jar.xml.svn-base | 6 - base/facade/src/main/java/com/.svn/entries | 31 - base/facade/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/facade/.svn/entries | 34 - .../main/java/com/fp/facade/db/.svn/entries | 62 - .../.svn/text-base/DataHelper.java.svn-base | 29 - .../main/java/com/fp/facade/ejb/.svn/entries | 235 - .../text-base/FacadeBean.java.netbeans-base | 179 - .../.svn/text-base/FacadeBean.java.svn-base | 179 - .../text-base/JobsIniciatorBean.java.svn-base | 84 - .../text-base/QueryBean.java.netbeans-base | 61 - .../.svn/text-base/QueryBean.java.svn-base | 61 - .../QueryWithCommitBean.java.svn-base | 55 - .../.svn/text-base/ReportBean.java.svn-base | 71 - .../ejb/.svn/text-base/SaveBean.java.svn-base | 54 - .../com/fp/facade/ejb/helper/.svn/entries | 62 - .../.svn/text-base/BeanHelper.java.svn-base | 86 - base/facade/src/main/resources/.svn/entries | 31 - .../src/main/resources/META-INF/.svn/entries | 28 - base/facade/src/test/.svn/entries | 34 - base/facade/src/test/java/.svn/entries | 28 - base/facade/src/test/resources/.svn/entries | 28 - base/facadeclient/.svn/dir-prop-base | 6 - base/facadeclient/.svn/entries | 65 - .../.svn/text-base/pom.xml.svn-base | 49 - base/facadeclient/src/.svn/entries | 34 - base/facadeclient/src/main/.svn/entries | 34 - base/facadeclient/src/main/java/.svn/entries | 31 - .../src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../java/com/fp/facadeclient/.svn/entries | 34 - .../java/com/fp/facadeclient/ejb/.svn/entries | 96 - .../FacadeBeanJsfRemote.java.netbeans-base | 23 - .../FacadeBeanJsfRemote.java.svn-base | 23 - .../text-base/FacadeBeanRemote.java.svn-base | 45 - .../com/fp/facadeclient/helper/.svn/entries | 130 - .../text-base/ServiceLocator.java.svn-base | 108 - .../ServiceLocatorJboss7.java.svn-base | 90 - .../ServiceLocatorJsf.java.netbeans-base | 81 - .../text-base/ServiceLocatorJsf.java.svn-base | 81 - .../src/main/resources/.svn/entries | 62 - .../jboss-ejb-client.properties.svn-base | 21 - base/facadeclient/src/test/.svn/entries | 34 - base/facadeclient/src/test/java/.svn/entries | 28 - .../src/test/resources/.svn/entries | 28 - base/persistence/.svn/entries | 89 - .../.svn/text-base/pom.xml.svn-base | 53 - base/persistence/commondb/.svn/dir-prop-base | 9 - base/persistence/commondb/.svn/entries | 99 - .../commondb/.svn/text-base/.pmd.svn-base | 601 --- .../commondb/.svn/text-base/pom.xml.svn-base | 27 - base/persistence/commondb/src/.svn/entries | 34 - .../commondb/src/main/.svn/entries | 34 - .../commondb/src/main/java/.svn/entries | 31 - .../commondb/src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/commondb/.svn/entries | 284 -- .../FlipUserTransaction.java.svn-base | 68 - .../.svn/text-base/GeneralQuery.java.svn-base | 222 - .../.svn/text-base/HqlStatement.java.svn-base | 394 -- .../text-base/NestedSave.java.netbeans-base | 62 - .../.svn/text-base/NestedSave.java.svn-base | 62 - .../text-base/PersistenceHelper.java.svn-base | 853 ---- .../PersistenceManager.java.netbeans-base | 348 -- .../PersistenceManager.java.svn-base | 348 -- .../PersistenceMetadata.java.svn-base | 294 -- .../persistence/commondb/cache/.svn/entries | 62 - .../.svn/text-base/CacheManager.java.svn-base | 147 - .../fp/persistence/commondb/data/.svn/entries | 96 - .../text-base/SessionData.java.netbeans-base | 50 - .../.svn/text-base/SessionData.java.svn-base | 50 - .../.svn/text-base/ThreadFacade.java.svn-base | 31 - .../fp/persistence/commondb/db/.svn/entries | 96 - .../db/.svn/text-base/CloneData.java.svn-base | 195 - .../.svn/text-base/DataHelper.java.svn-base | 346 -- .../commondb/exception/.svn/entries | 62 - .../.svn/text-base/Constant.java.svn-base | 17 - .../persistence/commondb/helper/.svn/entries | 201 - .../.svn/text-base/APPDates.java.svn-base | 507 --- .../.svn/text-base/Fkconstraint.java.svn-base | 53 - .../.svn/text-base/FormatDates.java.svn-base | 260 -- .../.svn/text-base/Frequency.java.svn-base | 76 - .../.svn/text-base/MapUtil.java.svn-base | 81 - .../commondb/helper/sequence/.svn/entries | 28 - .../fp/persistence/commondb/log/.svn/entries | 62 - .../.svn/text-base/Audit.java.netbeans-base | 289 -- .../log/.svn/text-base/Audit.java.svn-base | 289 -- .../commondb/src/main/resources/.svn/entries | 62 - .../commondbmessages_es.properties.svn-base | 23 - .../commondb/src/test/.svn/entries | 34 - .../commondb/src/test/java/.svn/entries | 28 - .../commondb/src/test/resources/.svn/entries | 28 - .../persistence/parmas/.settings/.svn/entries | 266 -- .../org.eclipse.core.resources.prefs.svn-base | 4 - .../org.eclipse.jdt.core.prefs.svn-base | 8 - .../org.eclipse.m2e.core.prefs.svn-base | 4 - .../org.eclipse.wst.common.component.svn-base | 5 - ...wst.common.project.facet.core.xml.svn-base | 5 - .../org.eclipse.wst.validation.prefs.svn-base | 2 - ...g.hibernate.eclipse.console.prefs.svn-base | 3 - base/persistence/parmas/.svn/dir-prop-base | 6 - base/persistence/parmas/.svn/entries | 139 - .../parmas/.svn/text-base/.classpath.svn-base | 27 - .../parmas/.svn/text-base/.project.svn-base | 48 - .../parmas/.svn/text-base/pom.xml.svn-base | 15 - base/persistence/parmas/bin/.svn/entries | 31 - base/persistence/parmas/bin/src/.svn/entries | 31 - .../parmas/bin/src/main/.svn/entries | 31 - .../parmas/bin/src/main/java/.svn/entries | 31 - .../parmas/bin/src/main/java/com/.svn/entries | 31 - .../bin/src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/parmas/.svn/entries | 31 - .../fp/persistence/parmas/param/.svn/entries | 62 - .../TarmCentroControl.class.svn-base | 5 - .../TarmCentroControl.class.svn-base | Bin 10063 -> 0 bytes base/persistence/parmas/src/.svn/entries | 34 - base/persistence/parmas/src/main/.svn/entries | 31 - .../parmas/src/main/java/.svn/entries | 34 - .../parmas/src/main/java/com/.svn/entries | 31 - .../parmas/src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/parmas/.svn/entries | 49 - .../fp/persistence/parmas/dto/.svn/entries | 31 - .../fp/persistence/parmas/dto/ws/.svn/entries | 368 -- .../ws/.svn/prop-base/ArmaDto.java.svn-base | 5 - .../prop-base/ColaImpresionDto.java.svn-base | 5 - .../.svn/prop-base/DocumentoDto.java.svn-base | 5 - .../ws/.svn/prop-base/ImagenDto.java.svn-base | 5 - .../JefeCentroControlDto.java.svn-base | 5 - .../.svn/prop-base/PersonaDto.java.svn-base | 5 - .../ws/.svn/text-base/ArmaDto.java.svn-base | 134 - .../text-base/ColaImpresionDto.java.svn-base | 89 - .../.svn/text-base/DatosArmaDto.java.svn-base | 200 - .../.svn/text-base/DatosSnapDto.java.svn-base | 181 - .../.svn/text-base/DocumentoDto.java.svn-base | 175 - .../ws/.svn/text-base/ImagenDto.java.svn-base | 60 - .../text-base/InfoGuardiaDto.java.svn-base | 59 - .../JefeCentroControlDto.java.svn-base | 56 - .../.svn/text-base/PersonaDto.java.svn-base | 135 - .../.svn/text-base/TramiteDto.java.svn-base | 68 - .../fp/persistence/parmas/eval/.svn/entries | 164 - .../TarmDetallePreguntas.java.svn-base | 201 - .../text-base/TarmEvaluacion.java.svn-base | 514 --- .../text-base/TarmPreguntas.java.svn-base | 281 -- .../text-base/TarmRespuestas.java.svn-base | 209 - .../fp/persistence/parmas/fun/.svn/entries | 436 -- .../TarmDetalleImportacion.java.svn-base | 5 - .../TarmSolicitudImportacion.java.svn-base | 5 - .../TarmSolicitudImportacionKey.java.svn-base | 5 - .../.svn/text-base/TarmCarga.java.svn-base | 329 -- .../text-base/TarmCargaDetalle.java.svn-base | 160 - .../TarmCashManagementHistory.java.svn-base | 224 - .../TarmDetalleImportacion.java.svn-base | 201 - ...rmInventarioSubidoPorPersona.java.svn-base | 140 - ...nventarioSubidoPorPersonaKey.java.svn-base | 124 - .../TarmMovimientoArmas.java.svn-base | 322 -- .../text-base/TarmRegistroArmas.java.svn-base | 367 -- .../TarmSolicitudImportacion.java.svn-base | 241 - .../TarmSolicitudImportacionKey.java.svn-base | 131 - .../text-base/TarmTotalPersona.java.svn-base | 483 -- .../text-base/TarmVentaArmaTem.java.svn-base | 257 -- .../fp/persistence/parmas/ins/.svn/entries | 96 - .../TarmPlanificacionInspeccion.java.svn-base | 354 -- .../TarmPlanificacionTramite.java.svn-base | 325 -- .../fp/persistence/parmas/inte/.svn/entries | 232 - .../TarmColadeImpresion.java.svn-base | 249 -- .../.svn/text-base/TarmLectura.java.svn-base | 285 -- .../TarmLecturaDetalle.java.svn-base | 129 - .../TarmLecturaDetalleKey.java.svn-base | 124 - .../.svn/text-base/TarmTagArma.java.svn-base | 149 - .../text-base/TarmTagArmaKey.java.svn-base | 125 - .../fp/persistence/parmas/param/.svn/entries | 572 --- .../TarmSitioAlmacenamiento.java.svn-base | 5 - .../TarmTipoArmaExplosivo.java.svn-base | 5 - .../prop-base/TarmTipoSancion.java.svn-base | 5 - .../.svn/prop-base/TarmTramite.java.svn-base | 5 - .../text-base/TarmCentroControl.java.svn-base | 461 -- .../TarmCentroControlJur.java.svn-base | 202 - .../TarmComercianteCupo.java.svn-base | 353 -- .../text-base/TarmOrigenTramite.java.svn-base | 121 - .../TarmOrigenTramiteKey.java.svn-base | 151 - .../text-base/TarmRequisito.java.svn-base | 211 - .../TarmRequisitoPorTipoTramite.java.svn-base | 182 - ...rmRequisitoPorTipoTramiteKey.java.svn-base | 124 - .../TarmSitioAlmacenamiento.java.svn-base | 435 -- .../TarmTipoArmaExplosivo.java.svn-base | 333 -- .../text-base/TarmTipoSancion.java.svn-base | 376 -- .../text-base/TarmTipoTramite.java.svn-base | 167 - .../text-base/TarmTramite.java.netbeans-base | 958 ---- .../.svn/text-base/TarmTramite.java.svn-base | 958 ---- .../TarmTramitesAtendidos.java.svn-base | 214 - .../text-base/TarmUnidadTipo.java.svn-base | 168 - .../text-base/TarmUnidadTipoKey.java.svn-base | 234 - .../fp/persistence/parmas/soli/.svn/entries | 1456 ------- .../prop-base/TarmAgenciaArma.java.svn-base | 5 - .../TarmAgenciaArmaKey.java.svn-base | 5 - .../TarmAgenciaSucursal.java.svn-base | 5 - .../prop-base/TarmArmaPruebas.java.svn-base | 5 - .../.svn/prop-base/TarmArmas.java.svn-base | 5 - .../prop-base/TarmDecomisoArma.java.svn-base | 5 - .../TarmDocumentoHabilitante.java.svn-base | 5 - .../.svn/prop-base/TarmGuardias.java.svn-base | 5 - .../prop-base/TarmOrdenTrabajo.java.svn-base | 5 - .../TarmOrdenTrabajoCustodios.java.svn-base | 5 - .../prop-base/TarmSolicitud.java.svn-base | 5 - ...TarmSolicitudAgenciaSucursal.java.svn-base | 5 - ...mSolicitudAgenciaSucursalKey.java.svn-base | 5 - .../TarmSolicitudArmas.java.svn-base | 5 - .../TarmSolicitudArmasKey.java.svn-base | 5 - .../TarmSolicitudDocumentoKey.java.svn-base | 5 - .../TarmSolicitudGuardias.java.svn-base | 5 - .../TarmSolicitudGuardiasKey.java.svn-base | 5 - .../TarmSolicitudRequisitos.java.svn-base | 5 - .../TarmSolicitudRequisitosKey.java.svn-base | 5 - .../TarmSolicitudTramite.java.svn-base | 5 - .../TarmSolicitudTramiteKey.java.svn-base | 5 - .../text-base/CashManagementDTO.java.svn-base | 108 - .../text-base/TarmAgenciaArma.java.svn-base | 129 - .../TarmAgenciaArmaKey.java.svn-base | 124 - .../TarmAgenciaSucursal.java.svn-base | 426 -- .../TarmArmaPruebas.java.netbeans-base | 390 -- .../text-base/TarmArmaPruebas.java.svn-base | 390 -- .../text-base/TarmArmas.java.netbeans-base | 791 ---- .../.svn/text-base/TarmArmas.java.svn-base | 791 ---- .../.svn/text-base/TarmBodega.java.svn-base | 159 - .../TarmCabRepDestruirArmas.java.svn-base | 200 - .../TarmCertificadoArmas.java.svn-base | 393 -- .../TarmCertificadoArmasKey.java.svn-base | 153 - .../TarmCertificadoFiscalia.java.svn-base | 293 -- .../TarmCustodiaTemporal.java.svn-base | 524 --- .../.svn/text-base/TarmDecomiso.java.svn-base | 694 --- .../text-base/TarmDecomisoArma.java.svn-base | 493 --- .../TarmDecomisoArmaTransaccion.java.svn-base | 258 -- .../TarmDetRepDestruirArmas.java.svn-base | 348 -- .../TarmDocumentoAlfresco.java.svn-base | 206 - .../TarmDocumentoHabilitante.java.svn-base | 395 -- ...rmDocumentoHabilitanteDetall.java.svn-base | 190 - .../.svn/text-base/TarmGuardias.java.svn-base | 162 - .../text-base/TarmInspeccion.java.svn-base | 365 -- .../TarmInspeccionArchivo.java.svn-base | 228 - .../text-base/TarmOrdenTrabajo.java.svn-base | 330 -- .../TarmOrdenTrabajoCustodios.java.svn-base | 263 -- .../TarmSancionDecomiso.java.svn-base | 273 -- .../TarmSancionDecomisoKey.java.svn-base | 124 - .../TarmSancionRecomendacion.java.svn-base | 198 - .../text-base/TarmSolicitud.java.svn-base | 624 --- ...TarmSolicitudAgenciaSucursal.java.svn-base | 163 - ...mSolicitudAgenciaSucursalKey.java.svn-base | 124 - .../TarmSolicitudArmas.java.svn-base | 186 - .../TarmSolicitudArmasKey.java.svn-base | 151 - .../TarmSolicitudDocumento.java.svn-base | 183 - .../TarmSolicitudDocumentoKey.java.svn-base | 124 - .../TarmSolicitudGuardias.java.svn-base | 127 - .../TarmSolicitudGuardiasKey.java.svn-base | 151 - .../TarmSolicitudRequisitos.java.svn-base | 181 - .../TarmSolicitudRequisitosKey.java.svn-base | 151 - .../TarmSolicitudTramite.java.svn-base | 518 --- .../TarmSolicitudTramiteKey.java.svn-base | 124 - .../.svn/text-base/TarmTerminos.java.svn-base | 189 - .../TarmTransaccionArmaBodega.java.svn-base | 260 -- .../parmas/src/main/java/ec/.svn/entries | 34 - .../parmas/src/main/java/ec/gob/.svn/entries | 31 - .../java/ec/gob/registrocivil/.svn/entries | 31 - .../registrocivil/consultacedula/.svn/entries | 266 -- .../prop-base/BusquedaPorCedula.java.svn-base | 5 - .../BusquedaPorCedulaResponse.java.svn-base | 5 - .../.svn/prop-base/Cedula.java.svn-base | 5 - .../prop-base/ObjectFactory.java.svn-base | 5 - .../.svn/prop-base/WsUp.java.svn-base | 5 - .../.svn/prop-base/WsUpResponse.java.svn-base | 5 - .../.svn/prop-base/package-info.java.svn-base | 5 - .../text-base/BusquedaPorCedula.java.svn-base | 118 - .../BusquedaPorCedulaResponse.java.svn-base | 62 - .../.svn/text-base/Cedula.java.svn-base | 622 --- .../text-base/ObjectFactory.java.svn-base | 115 - .../.svn/text-base/WsUp.java.svn-base | 32 - .../.svn/text-base/WsUpResponse.java.svn-base | 62 - .../.svn/text-base/package-info.java.svn-base | 2 - .../parmas/src/main/java/ec/gov/.svn/entries | 31 - .../src/main/java/ec/gov/sri/.svn/entries | 31 - .../sri/wsconsultacontribuyente/.svn/entries | 674 --- .../ActividadEconomica.java.svn-base | 5 - .../prop-base/AgenteRetencion.java.svn-base | 5 - .../.svn/prop-base/Contador.java.svn-base | 5 - .../prop-base/Contribuyente.java.svn-base | 5 - .../ContribuyenteCompleto.java.svn-base | 5 - .../ContribuyenteOnLine.java.svn-base | 5 - .../EstructuraOrganizacional.java.svn-base | 5 - .../.svn/prop-base/ListaBlanca.java.svn-base | 5 - .../prop-base/ObjectFactory.java.svn-base | 5 - .../prop-base/ObtenerCompleto.java.svn-base | 5 - .../ObtenerCompletoResponse.java.svn-base | 5 - .../.svn/prop-base/ObtenerDatos.java.svn-base | 5 - .../ObtenerDatosResponse.java.svn-base | 5 - .../prop-base/ObtenerSimple.java.svn-base | 5 - .../ObtenerSimpleResponse.java.svn-base | 5 - .../RepresentanteLegal.java.svn-base | 5 - .../prop-base/TipoContribuyente.java.svn-base | 5 - .../UbicacionGeografica.java.svn-base | 5 - .../.svn/prop-base/package-info.java.svn-base | 5 - .../ActividadEconomica.java.svn-base | 384 -- .../text-base/AgenteRetencion.java.svn-base | 60 - .../.svn/text-base/Contador.java.svn-base | 114 - .../text-base/Contribuyente.java.svn-base | 416 -- .../ContribuyenteCompleto.java.svn-base | 575 --- .../ContribuyenteOnLine.java.svn-base | 332 -- .../EstructuraOrganizacional.java.svn-base | 160 - .../.svn/text-base/ListaBlanca.java.svn-base | 60 - .../text-base/ObjectFactory.java.svn-base | 231 - .../text-base/ObtenerCompleto.java.svn-base | 87 - .../ObtenerCompletoResponse.java.svn-base | 62 - .../.svn/text-base/ObtenerDatos.java.svn-base | 60 - .../ObtenerDatosResponse.java.svn-base | 62 - .../text-base/ObtenerSimple.java.svn-base | 87 - .../ObtenerSimpleResponse.java.svn-base | 62 - .../RepresentanteLegal.java.svn-base | 114 - .../text-base/TipoContribuyente.java.svn-base | 195 - .../UbicacionGeografica.java.svn-base | 303 -- .../.svn/text-base/package-info.java.svn-base | 2 - base/persistence/parmas/src/test/.svn/entries | 31 - .../parmas/src/test/java/.svn/entries | 31 - .../parmas/src/test/java/com/.svn/entries | 31 - .../parmas/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/persistence/.svn/entries | 28 - base/persistence/pbpm/.svn/dir-prop-base | 9 - base/persistence/pbpm/.svn/entries | 65 - .../pbpm/.svn/text-base/pom.xml.svn-base | 16 - base/persistence/pbpm/src/.svn/entries | 31 - base/persistence/pbpm/src/main/.svn/entries | 34 - .../pbpm/src/main/java/.svn/entries | 31 - .../pbpm/src/main/java/com/.svn/entries | 31 - .../pbpm/src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../java/com/fp/persistence/pbpm/.svn/entries | 31 - .../com/fp/persistence/pbpm/gene/.svn/entries | 742 ---- .../text-base/TbpmActivities.java.svn-base | 446 -- .../text-base/TbpmActivitiesKey.java.svn-base | 151 - .../.svn/text-base/TbpmField.java.svn-base | 160 - .../TbpmFieldTransactionMaping.java.svn-base | 211 - ...bpmFieldTransactionMapingKey.java.svn-base | 178 - .../TbpmFieldTransactionOrigin.java.svn-base | 211 - ...bpmFieldTransactionOriginKey.java.svn-base | 178 - .../.svn/text-base/TbpmFlows.java.svn-base | 157 - .../.svn/text-base/TbpmFlowsKey.java.svn-base | 124 - .../.svn/text-base/TbpmGroups.java.svn-base | 177 - .../text-base/TbpmGroupsKey.java.svn-base | 124 - .../text-base/TbpmGroupsUsers.java.svn-base | 227 - .../TbpmGroupsUsersKey.java.svn-base | 151 - .../.svn/text-base/TbpmLogMail.java.svn-base | 241 - .../.svn/text-base/TbpmNotify.java.svn-base | 302 -- .../TbpmProcessInstance.java.svn-base | 313 -- .../TbpmProcessVariables.java.svn-base | 186 - .../TbpmProcessVariablesKey.java.svn-base | 124 - .../.svn/text-base/TbpmRules.java.svn-base | 473 -- .../.svn/text-base/TbpmRulesKey.java.svn-base | 124 - .../text-base/TbpmTaskComments.java.svn-base | 199 - .../pbpm/src/main/resources/.svn/entries | 28 - .../pcustomer/.settings/.svn/entries | 232 - .../org.eclipse.core.resources.prefs.svn-base | 4 - .../org.eclipse.jdt.core.prefs.svn-base | 8 - .../org.eclipse.m2e.core.prefs.svn-base | 4 - .../org.eclipse.wst.common.component.svn-base | 6 - ...wst.common.project.facet.core.xml.svn-base | 5 - ...g.hibernate.eclipse.console.prefs.svn-base | 3 - base/persistence/pcustomer/.svn/dir-prop-base | 6 - base/persistence/pcustomer/.svn/entries | 170 - .../.svn/text-base/.classpath.svn-base | 32 - .../pcustomer/.svn/text-base/.pmd.svn-base | 601 --- .../.svn/text-base/.project.svn-base | 48 - .../pcustomer/.svn/text-base/pom.xml.svn-base | 23 - base/persistence/pcustomer/src/.svn/entries | 31 - .../pcustomer/src/main/.svn/entries | 34 - .../pcustomer/src/main/java/.svn/entries | 31 - .../pcustomer/src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/pcustomer/.svn/entries | 40 - .../pcustomer/balance/.svn/entries | 334 -- .../.svn/text-base/TcustBalance.java.svn-base | 122 - .../TcustBalanceAccoLevel.java.svn-base | 158 - .../TcustBalanceAccount.java.svn-base | 305 -- .../TcustBalanceAccountKey.java.svn-base | 151 - .../TcustBalanceFinancial.java.svn-base | 295 -- .../TcustBalanceFinancialKey.java.svn-base | 238 - .../text-base/TcustBalanceKey.java.svn-base | 125 - .../TcustPersonBalance.java.svn-base | 379 -- .../TcustPersonBalanceKey.java.svn-base | 211 - .../pcustomer/company/.svn/entries | 912 ---- .../text-base/TcustAppraiser.java.svn-base | 162 - .../text-base/TcustAppraiserKey.java.svn-base | 124 - .../.svn/text-base/TcustCompany.java.svn-base | 726 ---- .../TcustCompanyBranch.java.svn-base | 326 -- .../TcustCompanyBranchKey.java.svn-base | 156 - .../TcustCompanyClient.java.svn-base | 489 --- .../TcustCompanyClientKey.java.svn-base | 156 - .../TcustCompanyFinancial.java.svn-base | 662 --- .../TcustCompanyFinancialKey.java.svn-base | 129 - .../text-base/TcustCompanyKey.java.svn-base | 129 - .../TcustCompanyManagers.java.svn-base | 438 -- .../TcustCompanyManagersKey.java.svn-base | 210 - .../TcustCompanyProducts.java.svn-base | 428 -- .../TcustCompanyProductsKey.java.svn-base | 156 - .../TcustCompanyProvider.java.svn-base | 500 --- .../TcustCompanyProviderKey.java.svn-base | 156 - .../TcustEconomicGroup.java.svn-base | 252 -- .../TcustEconomicGroupKey.java.svn-base | 151 - .../TcustFamiliarlLink.java.svn-base | 337 -- .../TcustFamiliarlLinkKey.java.svn-base | 124 - .../TcustFinancialInstitutions.java.svn-base | 164 - .../text-base/TcustInsurance.java.svn-base | 161 - .../text-base/TcustLegalLink.java.svn-base | 356 -- .../text-base/TcustLegalLinkKey.java.svn-base | 183 - .../text-base/TcustNotaryOffice.java.svn-base | 161 - .../text-base/TcustSupervisor.java.svn-base | 193 - .../persistence/pcustomer/gene/.svn/entries | 504 --- .../.svn/text-base/TcustPerson.java.svn-base | 120 - .../TcustPersonAddress.java.svn-base | 701 --- .../TcustPersonAddressKey.java.svn-base | 156 - .../TcustPersonBankReference.java.svn-base | 534 --- .../TcustPersonBankReferenceKey.java.svn-base | 156 - .../text-base/TcustPersonDetail.java.svn-base | 821 ---- .../TcustPersonDetailKey.java.svn-base | 129 - .../TcustPersonParametersId.java.svn-base | 196 - ...TcustPersonPersonalReference.java.svn-base | 400 -- ...stPersonPersonalReferenceKey.java.svn-base | 156 - .../text-base/TcustPersonPhone.java.svn-base | 432 -- .../TcustPersonPhoneKey.java.svn-base | 156 - .../text-base/TgeneActivity.java.svn-base | 233 - .../.svn/text-base/TgeneCiiu.java.svn-base | 253 -- .../persistence/pcustomer/people/.svn/entries | 844 ---- .../.svn/text-base/TcustPeople.java.svn-base | 652 --- .../TcustPeopleAditionalData.java.svn-base | 435 -- .../TcustPeopleAditionalDataKey.java.svn-base | 129 - .../TcustPeopleAssociation.java.svn-base | 352 -- .../TcustPeopleAssociationKey.java.svn-base | 156 - .../TcustPeopleExpenses.java.svn-base | 419 -- .../TcustPeopleExpensesKey.java.svn-base | 156 - .../TcustPeopleFixedIncome.java.svn-base | 549 --- .../TcustPeopleFixedIncomeKey.java.svn-base | 156 - .../text-base/TcustPeopleIncome.java.svn-base | 416 -- .../TcustPeopleIncomeKey.java.svn-base | 156 - .../text-base/TcustPeopleJob.java.svn-base | 508 --- .../text-base/TcustPeopleJobKey.java.svn-base | 156 - .../text-base/TcustPeopleKey.java.svn-base | 129 - .../text-base/TcustPeopleLoan.java.svn-base | 568 --- .../TcustPeopleLoanKey.java.svn-base | 156 - .../TcustPeopleOtherAssets.java.svn-base | 546 --- .../TcustPeopleOtherAssetsKey.java.svn-base | 156 - .../TcustPeopleRealAssets.java.svn-base | 674 --- .../TcustPeopleRealAssetsKey.java.svn-base | 156 - .../TcustPeopleTradereferences.java.svn-base | 573 --- ...custPeopleTradereferencesKey.java.svn-base | 156 - .../TcustPeopleVehicle.java.svn-base | 694 --- .../TcustPeopleVehicleKey.java.svn-base | 156 - .../pcustomer/src/main/resources/.svn/entries | 28 - base/persistence/pfirmas/.svn/dir-prop-base | 6 - base/persistence/pfirmas/.svn/entries | 65 - .../pfirmas/.svn/text-base/pom.xml.svn-base | 17 - base/persistence/pfirmas/src/.svn/entries | 34 - .../persistence/pfirmas/src/main/.svn/entries | 31 - .../pfirmas/src/main/java/.svn/entries | 31 - .../pfirmas/src/main/java/com/.svn/entries | 31 - .../pfirmas/src/main/java/com/fp/.svn/entries | 34 - .../src/main/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/persistence/.svn/entries | 62 - .../TfirmDatosFirmante.java.svn-base | 172 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/pfirmas/.svn/entries | 31 - .../fp/persistence/pfirmas/param/.svn/entries | 96 - .../text-base/TfirmCertificado.java.svn-base | 198 - .../TfirmCertificadoKey.java.svn-base | 125 - .../persistence/pfirmas/src/test/.svn/entries | 31 - .../pfirmas/src/test/java/.svn/entries | 31 - .../pfirmas/src/test/java/com/.svn/entries | 31 - .../pfirmas/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/persistence/.svn/entries | 28 - .../pgeneral/.settings/.svn/entries | 28 - base/persistence/pgeneral/.svn/dir-prop-base | 6 - base/persistence/pgeneral/.svn/entries | 102 - .../pgeneral/.svn/text-base/.pmd.svn-base | 601 --- .../pgeneral/.svn/text-base/pom.xml.svn-base | 16 - base/persistence/pgeneral/src/.svn/entries | 31 - .../pgeneral/src/main/.svn/entries | 34 - .../pgeneral/src/main/java/.svn/entries | 31 - .../pgeneral/src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/pgeneral/.svn/entries | 115 - .../fp/persistence/pgeneral/acco/.svn/entries | 1592 ------- .../TgeneAccoNumStructure.java.svn-base | 260 -- .../TgeneAccoNumStructureKey.java.svn-base | 151 - .../.svn/text-base/TgeneAccount.java.svn-base | 1114 ----- .../TgeneAccountCredit.java.svn-base | 339 -- .../TgeneAccountCreditKey.java.svn-base | 179 - .../TgeneAccountCreditOpening.java.svn-base | 332 -- ...TgeneAccountCreditOpeningKey.java.svn-base | 151 - .../TgeneAccountDebitOpening.java.svn-base | 313 -- .../TgeneAccountDebitOpeningKey.java.svn-base | 151 - .../TgeneAccountForCredit.java.svn-base | 401 -- .../TgeneAccountForCreditKey.java.svn-base | 151 - .../TgeneAccountForDebit.java.svn-base | 262 -- .../TgeneAccountForDebitKey.java.svn-base | 151 - .../text-base/TgeneAccountKey.java.svn-base | 156 - .../TgeneAccountLiquidation.java.svn-base | 332 -- .../TgeneAccountLiquidationKey.java.svn-base | 313 -- .../TgeneAccountLocalHold.java.svn-base | 521 --- .../TgeneAccountLocalHoldKey.java.svn-base | 179 - .../TgeneAccountNumber.java.svn-base | 213 - .../TgeneAccountNumberKey.java.svn-base | 124 - .../TgeneAccountPayable.java.svn-base | 210 - .../TgeneAccountPayableKey.java.svn-base | 124 - .../TgeneAccountRemittanceHold.java.svn-base | 376 -- ...geneAccountRemittanceHoldKey.java.svn-base | 179 - .../TgeneAccountSequence.java.svn-base | 368 -- .../TgeneAccountSequenceKey.java.svn-base | 124 - .../TgeneAccountStatus.java.svn-base | 181 - .../TgeneAccountStatusKey.java.svn-base | 124 - .../text-base/TgeneBaseAccount.java.svn-base | 139 - .../TgeneBaseAccountKey.java.svn-base | 124 - .../text-base/TgeneSequStruct.java.svn-base | 140 - .../TgeneSequStructDetail.java.svn-base | 168 - .../TgeneSequStructDetailKey.java.svn-base | 151 - .../TgeneSequentialModule.java.svn-base | 161 - .../TgeneSolicitudeCredit.java.svn-base | 302 -- .../TgeneSolicitudeCreditKey.java.svn-base | 151 - .../TgeneSolicitudeForCredit.java.svn-base | 332 -- .../TgeneSolicitudeForCreditKey.java.svn-base | 151 - .../TgeneSolicitudeForDebit.java.svn-base | 225 - .../TgeneSolicitudeForDebitKey.java.svn-base | 151 - .../TgeneTransAccountOperStat.java.svn-base | 249 -- ...TgeneTransAccountOperStatKey.java.svn-base | 178 - .../TgeneTransAccountStatus.java.svn-base | 247 -- .../TgeneTransAccountStatusKey.java.svn-base | 178 - .../TgeneWarrantyAccount.java.svn-base | 345 -- .../TgeneWarrantyAccountKey.java.svn-base | 178 - .../fp/persistence/pgeneral/auth/.svn/entries | 232 - .../text-base/TgeneExceptions.java.svn-base | 268 -- .../TgeneExceptionsKey.java.svn-base | 259 -- .../TgeneSolicitudeClientdata.java.svn-base | 341 -- ...TgeneSolicitudeClientdataKey.java.svn-base | 178 - .../TgeneSolicitudeExceptions.java.svn-base | 315 -- ...TgeneSolicitudeExceptionsKey.java.svn-base | 205 - .../persistence/pgeneral/batch/.svn/entries | 504 --- .../TgeneAccountBatchProcess.java.svn-base | 122 - .../TgeneAccountBatchProcessKey.java.svn-base | 287 -- .../TgeneAccountBatchStatus.java.svn-base | 215 - .../TgeneAccountBatchStatusKey.java.svn-base | 260 -- .../.svn/text-base/TgeneBatch.java.svn-base | 175 - .../text-base/TgeneBatchKey.java.svn-base | 178 - .../text-base/TgeneBatchLog.java.svn-base | 465 -- .../text-base/TgeneBatchLogKey.java.svn-base | 152 - ...TgeneBatchLogPreviousProcess.java.svn-base | 218 - ...neBatchLogPreviousProcessKey.java.svn-base | 179 - .../TgeneBatchPreviousProcess.java.svn-base | 213 - ...TgeneBatchPreviousProcessKey.java.svn-base | 205 - .../text-base/TgeneBatchProcess.java.svn-base | 219 - .../TgeneBatchProcessKey.java.svn-base | 205 - .../persistence/pgeneral/charge/.svn/entries | 300 -- .../.svn/text-base/TgeneCharges.java.svn-base | 461 -- .../TgeneChargesCheckbook.java.svn-base | 158 - .../TgeneChargesCheckbookKey.java.svn-base | 178 - .../text-base/TgeneChargesGroup.java.svn-base | 331 -- .../TgeneChargesGroupKey.java.svn-base | 314 -- .../text-base/TgeneChargesKey.java.svn-base | 259 -- .../TgeneSubProductCharges.java.svn-base | 534 --- .../TgeneSubProductChargesKey.java.svn-base | 313 -- .../fp/persistence/pgeneral/date/.svn/entries | 232 - .../TgeneAccountingDate.java.svn-base | 158 - .../TgeneAccountingDateBranch.java.svn-base | 252 -- ...TgeneAccountingDateBranchKey.java.svn-base | 124 - .../TgeneAccountingDateKey.java.svn-base | 152 - .../TgeneNotAccountingDay.java.svn-base | 219 - .../TgeneNotAccountingDayKey.java.svn-base | 124 - .../fp/persistence/pgeneral/dict/.svn/entries | 96 - .../text-base/TgeneDictionary.java.svn-base | 159 - .../TgeneDictionaryKey.java.svn-base | 124 - .../persistence/pgeneral/excel/.svn/entries | 96 - .../text-base/TgeneFileType.java.svn-base | 176 - .../text-base/TgeneReadExcel.java.svn-base | 210 - .../fp/persistence/pgeneral/gene/.svn/entries | 3870 ----------------- ...STgeneSolicitudeRelationship.java.svn-base | 239 - .../text-base/OptmListaNegra.java.svn-base | 582 --- .../TgeneAccountInstallCharges.java.svn-base | 198 - ...geneAccountInstallChargesKey.java.svn-base | 210 - .../TgeneAccountInstallRates.java.svn-base | 696 --- .../TgeneAccountInstallRatesKey.java.svn-base | 210 - .../TgeneAccountRelationship.java.svn-base | 378 -- .../TgeneAccountRelationshipKey.java.svn-base | 151 - .../.svn/text-base/TgeneArea.java.svn-base | 159 - .../.svn/text-base/TgeneAreaKey.java.svn-base | 124 - .../text-base/TgeneBalanceGroup.java.svn-base | 200 - .../text-base/TgeneBalanceType.java.svn-base | 197 - .../TgeneBalanceTypeDetail.java.svn-base | 269 -- .../TgeneBalanceTypeDetailKey.java.svn-base | 124 - .../TgeneBalanceTypeKey.java.svn-base | 124 - .../.svn/text-base/TgeneBranch.java.svn-base | 238 - .../text-base/TgeneBranchKey.java.svn-base | 124 - .../.svn/text-base/TgeneCanton.java.svn-base | 159 - .../text-base/TgeneCantonKey.java.svn-base | 151 - .../text-base/TgeneCashClose.java.svn-base | 122 - .../TgeneCashCloseDetail.java.svn-base | 159 - .../TgeneCashCloseDetailKey.java.svn-base | 315 -- .../TgeneCashCloseHeader.java.svn-base | 365 -- .../TgeneCashCloseHeaderKey.java.svn-base | 265 -- .../text-base/TgeneCashCloseKey.java.svn-base | 233 - .../.svn/text-base/TgeneCatalog.java.svn-base | 160 - .../TgeneCatalogDetail.java.svn-base | 259 -- .../TgeneCatalogDetailKey.java.svn-base | 124 - .../TgeneCatalogDetailTest.java.svn-base | 198 - .../TgeneCatalogDetailTestKey.java.svn-base | 124 - .../TgeneCatalogEquivalence.java.svn-base | 160 - .../TgeneCatalogEquivalenceDet.java.svn-base | 465 -- .../text-base/TgeneChannels.java.svn-base | 158 - .../.svn/text-base/TgeneCity.java.svn-base | 161 - .../.svn/text-base/TgeneCityKey.java.svn-base | 178 - .../.svn/text-base/TgeneCompany.java.svn-base | 293 -- .../.svn/text-base/TgeneConcept.java.svn-base | 177 - .../text-base/TgeneConceptKey.java.svn-base | 124 - .../.svn/text-base/TgeneConsep.java.svn-base | 556 --- .../text-base/TgeneConsepLog.java.svn-base | 509 --- .../.svn/text-base/TgeneCountry.java.svn-base | 216 - .../text-base/TgeneCreditType.java.svn-base | 194 - .../text-base/TgeneCurrency.java.svn-base | 180 - .../text-base/TgeneCurrencyRate.java.svn-base | 200 - .../TgeneCurrencyRateGroup.java.svn-base | 200 - .../TgeneCurrencyRateGroupKey.java.svn-base | 183 - .../TgeneCurrencyRateKey.java.svn-base | 129 - .../text-base/TgeneDenomination.java.svn-base | 122 - .../TgeneDenominationKey.java.svn-base | 179 - .../.svn/text-base/TgeneEntity.java.svn-base | 327 -- .../text-base/TgeneEntityKey.java.svn-base | 124 - .../text-base/TgeneFrequency.java.svn-base | 180 - .../text-base/TgeneFunctions.java.svn-base | 244 -- .../.svn/text-base/TgeneLabel.java.svn-base | 219 - .../text-base/TgeneLabelKey.java.svn-base | 151 - .../text-base/TgeneLanguage.java.svn-base | 140 - .../.svn/text-base/TgeneOffice.java.svn-base | 355 -- .../text-base/TgeneOfficeKey.java.svn-base | 151 - .../.svn/text-base/TgeneOfficer.java.svn-base | 121 - .../text-base/TgeneOfficerKey.java.svn-base | 205 - .../TgeneOperationStatus.java.svn-base | 159 - .../TgeneOperationStatusKey.java.svn-base | 124 - .../TgeneOperativeCondition.java.svn-base | 159 - .../TgeneOperativeConditionKey.java.svn-base | 124 - .../TgeneParameters.java.netbeans-base | 178 - .../text-base/TgeneParameters.java.svn-base | 178 - .../TgeneParametersKey.java.svn-base | 124 - .../text-base/TgeneParroquia.java.svn-base | 159 - .../text-base/TgeneParroquiaKey.java.svn-base | 178 - .../text-base/TgeneProvince.java.svn-base | 161 - .../text-base/TgeneProvinceKey.java.svn-base | 124 - .../text-base/TgeneQueryProcess.java.svn-base | 227 - .../TgeneQueryProcessKey.java.svn-base | 124 - .../TgeneRevokeSolicitude.java.svn-base | 180 - .../TgeneRevokeSolicitudeKey.java.svn-base | 124 - .../text-base/TgeneServices.java.svn-base | 250 -- .../text-base/TgeneSolicitude.java.svn-base | 917 ---- ...TgeneSolicitudeCreditOpening.java.svn-base | 332 -- ...neSolicitudeCreditOpeningKey.java.svn-base | 151 - .../TgeneSolicitudeDebitOpening.java.svn-base | 297 -- ...eneSolicitudeDebitOpeningKey.java.svn-base | 151 - ...geneSolicitudeInstallCharges.java.svn-base | 242 -- ...eSolicitudeInstallChargesKey.java.svn-base | 313 -- .../TgeneSolicitudeInstallRates.java.svn-base | 641 --- ...eneSolicitudeInstallRatesKey.java.svn-base | 286 -- .../TgeneSolicitudeKey.java.svn-base | 156 - .../TgeneSolicitudeLiquidation.java.svn-base | 333 -- ...geneSolicitudeLiquidationKey.java.svn-base | 313 -- .../TgeneSolicitudeNumber.java.svn-base | 121 - .../TgeneSolicitudeNumberKey.java.svn-base | 124 - .../TgeneSolicitudeRelationship.java.svn-base | 294 -- ...eneSolicitudeRelationshipKey.java.svn-base | 151 - .../TgeneSolicitudeStatus.java.svn-base | 161 - .../TgeneSolicitudeStatusKey.java.svn-base | 124 - .../TgeneTechnicalPatrimony.java.svn-base | 182 - .../TgeneTechnicalPatrimonyKey.java.svn-base | 129 - .../TgeneTellerBalance.java.svn-base | 271 -- .../TgeneTellerBalanceKey.java.svn-base | 152 - .../TgeneTellerTransfer.java.svn-base | 194 - .../TgeneTellerTransferDetail.java.svn-base | 226 - ...TgeneTellerTransferDetailKey.java.svn-base | 234 - .../TgeneTellerTransferHeader.java.svn-base | 574 --- ...TgeneTellerTransferHeaderKey.java.svn-base | 184 - .../TgeneTellerTransferKey.java.svn-base | 152 - .../TgeneTransactionMix.java.svn-base | 432 -- .../TgeneTransactionMixKey.java.svn-base | 152 - .../TgeneTransactionMixPages.java.svn-base | 157 - .../TgeneTransactionMixPagesKey.java.svn-base | 151 - .../TgeneTransactionQuery.java.svn-base | 282 -- .../TgeneTransactionQueryKey.java.svn-base | 178 - .../TgeneTransactionReportLink.java.svn-base | 160 - ...geneTransactionReportLinkKey.java.svn-base | 178 - .../TgeneUserSolicitudeNumber.java.svn-base | 138 - .../text-base/TgeneWildcard.java.svn-base | 251 -- .../persistence/pgeneral/image/.svn/entries | 130 - .../.svn/text-base/TgeneFiles.java.svn-base | 120 - .../text-base/TgeneFilesDetail.java.svn-base | 325 -- .../TgeneFilesDetailKey.java.svn-base | 129 - .../pgeneral/installment/.svn/entries | 96 - .../TgeneInstallmentType.java.svn-base | 177 - .../TgeneInstallmentTypeKey.java.svn-base | 124 - .../fp/persistence/pgeneral/log/.svn/entries | 96 - .../TgeneTransactionLog.java.netbeans-base | 507 --- .../TgeneTransactionLog.java.svn-base | 507 --- .../TgeneTransactionMessage.java.svn-base | 156 - .../fp/persistence/pgeneral/menu/.svn/entries | 504 --- .../.svn/text-base/TgeneMenu.java.svn-base | 138 - .../text-base/TgeneMenuLevel.java.svn-base | 186 - .../TgeneMenuLevelDesc.java.svn-base | 188 - .../TgeneMenuLevelDescKey.java.svn-base | 151 - .../text-base/TgeneMenuLevelKey.java.svn-base | 124 - .../TgeneMenuLevelTran.java.svn-base | 168 - .../TgeneMenuLevelTranKey.java.svn-base | 205 - .../text-base/TgeneMenuProfile.java.svn-base | 163 - .../text-base/TgeneMenuSubLevel.java.svn-base | 168 - .../TgeneMenuSubLevelDesc.java.svn-base | 192 - .../TgeneMenuSubLevelDescKey.java.svn-base | 178 - .../TgeneMenuSubLevelKey.java.svn-base | 151 - .../TgeneMenuSubLevelTran.java.svn-base | 139 - .../TgeneMenuSubLevelTranKey.java.svn-base | 232 - .../persistence/pgeneral/message/.svn/entries | 130 - .../TgeneMessageTemplates.java.svn-base | 158 - .../TgeneMessageTemplatesDesc.java.svn-base | 233 - ...TgeneMessageTemplatesDescKey.java.svn-base | 124 - .../fp/persistence/pgeneral/msg/.svn/entries | 198 - .../TgeneMessageStructure.java.svn-base | 339 -- .../TgeneMessageStructureData.java.svn-base | 474 -- ...TgeneMessageStructureDataKey.java.svn-base | 124 - .../TgeneMessageStructureHeader.java.svn-base | 474 -- ...eneMessageStructureHeaderKey.java.svn-base | 124 - .../fp/persistence/pgeneral/page/.svn/entries | 164 - .../TgeneSubproductPages.java.svn-base | 267 -- .../TgeneSubproductPagesKey.java.svn-base | 259 -- .../TgeneTransactionPages.java.svn-base | 321 -- .../TgeneTransactionPagesKey.java.svn-base | 178 - .../fp/persistence/pgeneral/proc/.svn/entries | 96 - .../.svn/text-base/TgeneProcess.java.svn-base | 159 - .../text-base/TgeneProcessKey.java.svn-base | 151 - .../persistence/pgeneral/product/.svn/entries | 473 -- .../.svn/text-base/TgeneModule.java.svn-base | 206 - .../.svn/text-base/TgeneProduct.java.svn-base | 242 -- .../text-base/TgeneProductKey.java.svn-base | 124 - .../TgeneProductRelationship.java.svn-base | 139 - .../TgeneProductRelationshipKey.java.svn-base | 124 - .../text-base/TgeneSubProduct.java.svn-base | 270 -- .../TgeneSubProductCurrency.java.svn-base | 121 - .../TgeneSubProductCurrencyKey.java.svn-base | 178 - .../TgeneSubProductKey.java.svn-base | 151 - .../TgeneSubprodClientData.java.svn-base | 358 -- .../TgeneSubprodClientDataKey.java.svn-base | 259 -- .../TgeneSubprodInstallType.java.svn-base | 141 - .../TgeneSubprodInstallTypeKey.java.svn-base | 178 - .../pgeneral/product/rate/.svn/entries | 572 --- .../text-base/TgeneBaseRate.java.svn-base | 121 - .../TgeneBaseRateDetail.java.svn-base | 404 -- .../TgeneBaseRateDetailKey.java.svn-base | 178 - .../text-base/TgeneBaseRateKey.java.svn-base | 151 - .../text-base/TgeneRatesGroup.java.svn-base | 254 -- .../TgeneRatesGroupKey.java.svn-base | 287 -- .../text-base/TgeneSegmentRate.java.svn-base | 377 -- .../TgeneSegmentRateKey.java.svn-base | 287 -- ...SubProductInstallmentCharges.java.svn-base | 253 -- ...ProductInstallmentChargesKey.java.svn-base | 259 -- ...neSubProductInstallmentRates.java.svn-base | 317 -- ...ubProductInstallmentRatesKey.java.svn-base | 232 - .../TgeneSubProductLiquidation.java.svn-base | 308 -- ...geneSubProductLiquidationKey.java.svn-base | 259 -- .../TgeneSubProductRate.java.svn-base | 721 --- .../TgeneSubProductRateKey.java.svn-base | 286 -- .../fp/persistence/pgeneral/prov/.svn/entries | 96 - .../TgeneDefaultProvision.java.svn-base | 232 - .../TgeneDefaultProvisionKey.java.svn-base | 178 - .../persistence/pgeneral/receive/.svn/entries | 201 - .../TreceivableTemplate.java.svn-base | 176 - .../TreceivableTemplateDesc.java.svn-base | 159 - .../TreceivableTemplateDescKey.java.svn-base | 124 - .../TreceivableTemplateDetail.java.svn-base | 307 -- ...TreceivableTemplateDetailKey.java.svn-base | 124 - .../pgeneral/receive/acco/.svn/entries | 96 - .../TreceivableAccountDemanDepo.java.svn-base | 757 ---- ...eceivableAccountDemanDepoKey.java.svn-base | 210 - .../persistence/pgeneral/report/.svn/entries | 232 - .../.svn/text-base/TgeneReport.java.svn-base | 197 - .../text-base/TgeneReportDetail.java.svn-base | 177 - .../TgeneReportDetailKey.java.svn-base | 151 - .../text-base/TgeneReportKey.java.svn-base | 124 - .../TgeneSubprodReports.java.svn-base | 141 - .../TgeneSubprodReportsKey.java.svn-base | 178 - .../persistence/pgeneral/result/.svn/entries | 96 - .../.svn/text-base/TgeneResults.java.svn-base | 242 -- .../text-base/TgeneResultsKey.java.svn-base | 124 - .../fp/persistence/pgeneral/safe/.svn/entries | 844 ---- .../.svn/text-base/TsafeAudit.java.svn-base | 408 -- .../text-base/TsafeAuditInsDel.java.svn-base | 418 -- .../TsafeAuditInsDelKey.java.svn-base | 180 - .../text-base/TsafeAuditKey.java.svn-base | 207 - .../text-base/TsafeJavaScript.java.svn-base | 163 - .../TsafeJavaScriptKey.java.svn-base | 151 - .../text-base/TsafePassword.java.svn-base | 284 -- .../text-base/TsafePasswordKey.java.svn-base | 124 - .../.svn/text-base/TsafeProfile.java.svn-base | 160 - .../TsafeProfileHorary.java.svn-base | 221 - .../TsafeProfileHoraryAmount.java.svn-base | 160 - .../TsafeProfileHoraryAmountKey.java.svn-base | 205 - .../TsafeProfileHoraryKey.java.svn-base | 205 - .../text-base/TsafeTerminal.java.svn-base | 288 -- .../text-base/TsafeTerminalKey.java.svn-base | 124 - .../.svn/text-base/TsafeUser.java.svn-base | 174 - .../text-base/TsafeUserDetail.java.svn-base | 746 ---- .../TsafeUserDetailKey.java.svn-base | 156 - .../text-base/TsafeUserProfile.java.svn-base | 264 -- .../TsafeUserProfileKey.java.svn-base | 156 - .../text-base/TsafeUserSession.java.svn-base | 215 - .../TsafeUserSessionKey.java.svn-base | 129 - .../TsafeUserSessionLog.java.svn-base | 299 -- .../TsafeUserSessionLogKey.java.svn-base | 152 - .../pgeneral/schedule/.svn/entries | 198 - .../TgeneScheduleEvent.java.svn-base | 327 -- .../text-base/TgeneScheduleLog.java.svn-base | 195 - .../TgeneScheduleLogKey.java.svn-base | 125 - .../TgeneScheduleParameters.java.svn-base | 228 - .../TgeneScheduleProcess.java.svn-base | 228 - .../persistence/pgeneral/score/.svn/entries | 606 --- .../text-base/TgeneAccountScore.java.svn-base | 857 ---- .../TgeneAccountScoreDetail.java.svn-base | 339 -- .../TgeneAccountScoreDetailKey.java.svn-base | 152 - .../TgeneAccountScoreJournal.java.svn-base | 616 --- .../TgeneAccountScoreJournalKey.java.svn-base | 152 - .../TgeneAccountScoreKey.java.svn-base | 152 - .../text-base/TgenePercentScore.java.svn-base | 269 -- .../TgenePercentScoreKey.java.svn-base | 156 - .../.svn/text-base/TgeneScore.java.svn-base | 156 - .../TgeneScoreAdjustment.java.svn-base | 524 --- .../TgeneScoreAdjustmentKey.java.svn-base | 183 - .../TgeneScoreFileIssues.java.svn-base | 178 - .../TgeneScoreFileIssuesKey.java.svn-base | 206 - .../text-base/TgeneScoreHeader.java.svn-base | 227 - .../TgeneScoreHeaderKey.java.svn-base | 125 - .../text-base/TgeneScoreRank.java.svn-base | 323 -- .../text-base/TgeneScoreRankKey.java.svn-base | 210 - .../fp/persistence/pgeneral/seq/.svn/entries | 62 - .../text-base/TgeneSequences.java.svn-base | 241 - .../fp/persistence/pgeneral/test/.svn/entries | 62 - .../.svn/text-base/TtestValores.java.svn-base | 223 - .../persistence/pgeneral/trans/.svn/entries | 643 --- .../text-base/TgeneTransaction.java.svn-base | 542 --- .../TgeneTransactionEvent.java.svn-base | 241 - .../TgeneTransactionEventKey.java.svn-base | 124 - ...TgeneTransactionFinanProcess.java.svn-base | 273 -- ...neTransactionFinanProcessKey.java.svn-base | 178 - .../TgeneTransactionGlosary.java.svn-base | 251 -- .../TgeneTransactionGlosaryKey.java.svn-base | 205 - .../TgeneTransactionItem.java.svn-base | 195 - .../TgeneTransactionItemDetail.java.svn-base | 466 -- ...geneTransactionItemDetailKey.java.svn-base | 178 - .../TgeneTransactionItemKey.java.svn-base | 178 - .../TgeneTransactionItemProcess.java.svn-base | 273 -- ...eneTransactionItemProcessKey.java.svn-base | 205 - .../TgeneTransactionKey.java.svn-base | 151 - .../TgeneTransactionProcess.java.svn-base | 431 -- .../TgeneTransactionProcessKey.java.svn-base | 178 - .../TgeneTransactionProvision.java.svn-base | 177 - ...TgeneTransactionProvisionKey.java.svn-base | 232 - .../pgeneral/trans/report/.svn/entries | 96 - .../TgeneTransactionReports.java.svn-base | 267 -- .../TgeneTransactionReportsKey.java.svn-base | 178 - .../persistence/pgeneral/transf/.svn/entries | 232 - .../text-base/TgeneMaturation.java.svn-base | 231 - .../TgeneMaturationKey.java.svn-base | 124 - .../text-base/TgeneTransfer.java.svn-base | 214 - .../TgeneTransferDetail.java.svn-base | 329 -- .../TgeneTransferDetailKey.java.svn-base | 232 - .../TgeneTransferStatus.java.svn-base | 174 - .../persistence/pgeneral/vault/.svn/entries | 164 - .../.svn/text-base/TgeneVault.java.svn-base | 140 - .../text-base/TgeneVaultDetail.java.svn-base | 158 - .../TgeneVaultDetailKey.java.svn-base | 287 -- .../text-base/TgeneVaultKey.java.svn-base | 205 - .../pgeneral/src/main/resources/.svn/entries | 28 - base/persistence/plog/.svn/dir-prop-base | 6 - base/persistence/plog/.svn/entries | 65 - .../plog/.svn/text-base/pom.xml.svn-base | 14 - base/persistence/plog/src/.svn/entries | 34 - base/persistence/plog/src/main/.svn/entries | 31 - .../plog/src/main/java/.svn/entries | 31 - .../plog/src/main/java/com/.svn/entries | 31 - .../plog/src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../java/com/fp/persistence/plog/.svn/entries | 31 - .../com/fp/persistence/plog/log/.svn/entries | 198 - .../.svn/text-base/TlogHeader.java.svn-base | 307 -- .../log/.svn/text-base/TlogLoad.java.svn-base | 175 - .../text-base/TlogLoadError.java.svn-base | 175 - .../text-base/TlogLoadErrorKey.java.svn-base | 151 - .../.svn/text-base/TlogLoadKey.java.svn-base | 124 - base/persistence/plog/src/test/.svn/entries | 31 - .../plog/src/test/java/.svn/entries | 28 - base/persistence/pviaticos/.svn/dir-prop-base | 6 - base/persistence/pviaticos/.svn/entries | 65 - .../pviaticos/.svn/text-base/pom.xml.svn-base | 21 - base/persistence/pviaticos/src/.svn/entries | 34 - .../pviaticos/src/main/.svn/entries | 31 - .../pviaticos/src/main/java/.svn/entries | 31 - .../pviaticos/src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/persistence/.svn/entries | 31 - .../com/fp/persistence/pviaticos/.svn/entries | 37 - .../fp/persistence/pviaticos/hra/.svn/entries | 96 - .../hra/.svn/text-base/Empleado.java.svn-base | 540 --- .../.svn/text-base/EmpleadoJpql.java.svn-base | 79 - .../persistence/pviaticos/param/.svn/entries | 266 -- .../text-base/ViaCiudadUsuario.java.svn-base | 201 - .../ViaCiudadUsuarioKey.java.svn-base | 124 - .../text-base/ViaDiasAcumulados.java.svn-base | 141 - .../ViaDiasAcumuladosKey.java.svn-base | 146 - .../.svn/text-base/ViaEstado.java.svn-base | 159 - .../ViaNotificacionMovilizacion.java.svn-base | 178 - .../text-base/ViaParametros.java.svn-base | 176 - .../pviaticos/solicitud/.svn/entries | 368 -- .../.svn/text-base/ViaSolicitud.java.svn-base | 466 -- .../ViaSolicitudComentarios.java.svn-base | 247 -- .../ViaSolicitudComentariosKey.java.svn-base | 151 - .../ViaSolicitudIntegrantes.java.svn-base | 122 - .../ViaSolicitudIntegrantesKey.java.svn-base | 151 - .../text-base/ViaSolicitudKey.java.svn-base | 124 - .../ViaSolicitudLiquidacion.java.svn-base | 266 -- .../ViaSolicitudLiquidacionKey.java.svn-base | 151 - .../ViaSolicitudTransporte.java.svn-base | 331 -- .../ViaSolicitudTransporteKey.java.svn-base | 151 - .../pviaticos/src/test/.svn/entries | 31 - .../pviaticos/src/test/java/.svn/entries | 31 - .../pviaticos/src/test/java/com/.svn/entries | 31 - .../src/test/java/com/fp/.svn/entries | 31 - .../test/java/com/fp/persistence/.svn/entries | 62 - .../.svn/text-base/AppTest.java.svn-base | 38 - base/persistence/util/.svn/dir-prop-base | 9 - base/persistence/util/.svn/entries | 65 - .../util/.svn/text-base/pom.xml.svn-base | 31 - base/persistence/util/src/.svn/entries | 34 - base/persistence/util/src/main/.svn/entries | 31 - .../util/src/main/java/.svn/entries | 31 - .../util/src/main/java/com/.svn/entries | 31 - .../util/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/persistence/.svn/entries | 31 - .../com/fp/base/persistence/util/.svn/entries | 40 - .../fp/base/persistence/util/db/.svn/entries | 62 - .../.svn/text-base/DataHelper.java.svn-base | 210 - .../persistence/util/formula/.svn/entries | 96 - .../text-base/FormulaManager.java.svn-base | 32 - .../.svn/text-base/package-info.java.svn-base | 4 - .../base/persistence/util/helper/.svn/entries | 164 - .../GeneralDescriptions.java.svn-base | 350 -- .../MessageDescriptions.java.svn-base | 22 - .../MessageManager.java.netbeans-base | 45 - .../text-base/MessageManager.java.svn-base | 45 - .../SaveBeanInOtherSession.java.svn-base | 56 - .../fp/base/persistence/util/job/.svn/entries | 62 - .../text-base/ServiceManager.java.svn-base | 111 - base/persistence/util/src/test/.svn/entries | 31 - .../util/src/test/java/.svn/entries | 31 - .../util/src/test/java/com/.svn/entries | 31 - .../util/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/base/.svn/entries | 31 - .../java/com/fp/base/persistence/.svn/entries | 62 - .../.svn/text-base/AppTest.java.svn-base | 38 - base/sessionbeans/.svn/dir-prop-base | 6 - base/sessionbeans/.svn/entries | 65 - .../.svn/text-base/pom.xml.svn-base | 45 - base/sessionbeans/src/.svn/entries | 37 - base/sessionbeans/src/META-INF/.svn/entries | 62 - .../.svn/text-base/MANIFEST.MF.svn-base | 3 - base/sessionbeans/src/main/.svn/entries | 31 - base/sessionbeans/src/main/java/.svn/entries | 31 - .../src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../java/com/fp/sessionbeans/.svn/entries | 34 - .../java/com/fp/sessionbeans/ejb/.svn/entries | 102 - .../ejb/.svn/text-base/CrudBean.java.svn-base | 96 - .../.svn/text-base/SequenceBean.java.svn-base | 65 - .../fp/sessionbeans/ejb/cobis/.svn/entries | 96 - .../.svn/text-base/CobisBean.java.svn-base | 497 --- .../ContabilizaCobisBean.java.svn-base | 185 - .../sessionbeans/ejb/interfaces/.svn/entries | 167 - .../text-base/CobisBeanLocal.java.svn-base | 67 - .../ContabilizaCobisLocal.java.svn-base | 46 - .../text-base/CrudBeanLocal.java.svn-base | 36 - .../text-base/SequenceBeanLocal.java.svn-base | 22 - .../ejb/interfaces/cobis/.svn/entries | 28 - .../com/fp/sessionbeans/helper/.svn/entries | 96 - .../.svn/text-base/Sequence.java.svn-base | 75 - .../text-base/SequenceThread.java.svn-base | 52 - base/sessionbeans/src/test/.svn/entries | 31 - base/sessionbeans/src/test/java/.svn/entries | 28 - clients/.svn/entries | 65 - clients/.svn/text-base/pom.xml.svn-base | 163 - clients/comaco/.svn/entries | 68 - .../comaco/.svn/text-base/pom.xml.svn-base | 48 - clients/comaco/ear/.svn/dir-prop-base | 6 - clients/comaco/ear/.svn/entries | 65 - .../ear/.svn/text-base/pom.xml.svn-base | 338 -- clients/comaco/ear/src/.svn/entries | 34 - clients/comaco/ear/src/main/.svn/entries | 34 - clients/comaco/ear/src/main/java/.svn/entries | 31 - .../comaco/ear/src/main/java/com/.svn/entries | 31 - .../ear/src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/clients/.svn/entries | 31 - .../java/com/fp/clients/maia/.svn/entries | 62 - .../maia/.svn/text-base/App.java.svn-base | 13 - .../ear/src/main/resources/.svn/entries | 31 - .../src/main/resources/META-INF/.svn/entries | 62 - .../jboss-deployment-structure.xml.svn-base | 43 - clients/comaco/ear/src/test/.svn/entries | 31 - clients/comaco/ear/src/test/java/.svn/entries | 31 - .../comaco/ear/src/test/java/com/.svn/entries | 31 - .../ear/src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/clients/.svn/entries | 31 - .../java/com/fp/clients/maia/.svn/entries | 62 - .../maia/.svn/text-base/AppTest.java.svn-base | 38 - .../environment-eap6/.svn/dir-prop-base | 6 - clients/comaco/environment-eap6/.svn/entries | 65 - .../.svn/text-base/pom.xml.svn-base | 23 - .../comaco/environment-eap6/src/.svn/entries | 34 - .../environment-eap6/src/main/.svn/entries | 34 - .../src/main/java/.svn/entries | 31 - .../src/main/java/com/.svn/entries | 31 - .../src/main/java/com/fp/.svn/entries | 31 - .../src/main/java/com/fp/clients/.svn/entries | 31 - .../java/com/fp/clients/maia/.svn/entries | 28 - .../src/main/resources/.svn/entries | 201 - .../.svn/text-base/bpm.properties.svn-base | 16 - .../.svn/text-base/common.properties.svn-base | 9 - .../text-base/fb-facade.properties.svn-base | 3 - ...hibernateFlipMapping.cfg.xml.netbeans-base | 273 -- .../hibernateFlipMapping.cfg.xml.svn-base | 273 -- .../.svn/text-base/log4j.properties.svn-base | 18 - .../src/main/resources/META-INF/.svn/entries | 232 - .../.svn/text-base/Executor-orm.xml.svn-base | 84 - .../.svn/text-base/JBPMorm.xml.svn-base | 44 - .../.svn/text-base/Servicesorm.xml.svn-base | 372 -- .../.svn/text-base/TaskAuditorm.xml.svn-base | 42 - .../.svn/text-base/Taskorm.xml.svn-base | 1297 ------ .../text-base/persistence.xml.netbeans-base | 94 - .../.svn/text-base/persistence.xml.svn-base | 94 - .../environment-eap6/src/test/.svn/entries | 31 - .../src/test/java/.svn/entries | 31 - .../src/test/java/com/.svn/entries | 31 - .../src/test/java/com/fp/.svn/entries | 31 - .../src/test/java/com/fp/clients/.svn/entries | 31 - .../java/com/fp/clients/maia/.svn/entries | 28 - frontend/.metadata/.svn/entries | 31 - frontend/.metadata/src/.svn/entries | 31 - frontend/.metadata/src/main/.svn/entries | 31 - .../.metadata/src/main/webapp/.svn/entries | 31 - .../src/main/webapp/WEB-INF/.svn/entries | 62 - .../text-base/faces-config.pageflow.svn-base | 2 - frontend/.svn/dir-prop-base | 9 - frontend/.svn/entries | 68 - frontend/.svn/text-base/pom.xml.netbeans-base | 465 -- frontend/.svn/text-base/pom.xml.svn-base | 465 -- frontend/src/.svn/entries | 34 - frontend/src/main/.svn/entries | 37 - frontend/src/main/java/.svn/entries | 31 - frontend/src/main/java/com/.svn/entries | 31 - frontend/src/main/java/com/fp/.svn/entries | 31 - .../main/java/com/fp/frontend/.svn/entries | 58 - .../com/fp/frontend/controller/.svn/entries | 132 - .../AbstractController.java.netbeans-base | 1355 ------ .../AbstractController.java.svn-base | 1355 ------ .../ReportController.java.netbeans-base | 274 -- .../text-base/ReportController.java.svn-base | 274 -- .../controller/accounting/.svn/entries | 62 - ...AccoDateControllerController.java.svn-base | 134 - .../frontend/controller/alfresco/.svn/entries | 62 - .../AlfrescoController.java.svn-base | 534 --- .../fp/frontend/controller/armas/.svn/entries | 111 - ...sitoPorTipoTramiteController.java.svn-base | 187 - .../TipoTramiteController.java.svn-base | 142 - .../controller/armas/eval/.svn/entries | 266 -- .../ConocimientoLovController.java.svn-base | 464 -- .../DetallePreguntasController.java.svn-base | 127 - .../.svn/text-base/Evaluacion.java.svn-base | 65 - .../EvaluacionCompleta.java.svn-base | 29 - .../EvaluacionController.java.svn-base | 1258 ------ .../RespuestasController.java.svn-base | 152 - .../TestConocimientosController.java.svn-base | 571 --- .../armas/funcionalidad/.svn/entries | 1082 ----- .../.svn/text-base/ArmaExcell.java.svn-base | 302 -- .../ArmaVentaController.java.svn-base | 189 - .../CargaController.java.netbeans-base | 171 - .../text-base/CargaController.java.svn-base | 171 - .../CargaDetalleController.java.svn-base | 120 - ...ConsultaArmasVentaController.java.svn-base | 124 - .../DesaduanizacionController.java.svn-base | 505 --- ...DesaduanizacionOldController.java.svn-base | 408 -- .../MovimientoController.java.svn-base | 112 - .../ProvinceLovController.java.svn-base | 224 - .../RegistroArmController.java.svn-base | 181 - .../ReporteArmasController.java.netbeans-base | 372 -- .../ReporteArmasController.java.svn-base | 372 -- ...masPrevImportacionController.java.svn-base | 84 - ...porteCashManagmentController.java.svn-base | 441 -- ...eporteCompInscritaController.java.svn-base | 431 -- .../ReporteCompaniasCCentrol.java.svn-base | 430 -- .../ReporteDecomisoController.java.svn-base | 368 -- ...ortacionProduccionController.java.svn-base | 356 -- ...orteNumArmasEstadoController.java.svn-base | 433 -- ...ReporteNumPermisosController.java.svn-base | 477 -- ...AutorizacionesCconController.java.svn-base | 126 - ...AutorizacionesSuspController.java.svn-base | 168 - .../text-base/ReporteTipoArma.java.svn-base | 477 -- .../ReporteTipoArmasController.java.svn-base | 238 - ...teTipoAutorizacionController.java.svn-base | 476 -- ...rteTipoFabricacionController.java.svn-base | 434 -- ...porteTramiteCentroController.java.svn-base | 401 -- .../TotalArmasController.java.svn-base | 140 - .../VentaController.java.netbeans-base | 823 ---- .../text-base/VentaController.java.svn-base | 823 ---- ...ntaTraspasoDominioController.java.svn-base | 261 -- .../VentasVariasArmasController.java.svn-base | 627 --- ...tiosAlmacenamientoController.java.svn-base | 284 -- .../controller/armas/lov/.svn/entries | 368 -- .../ArmaExplosivoLovController.java.svn-base | 184 - .../ArmasLovController.java.svn-base | 271 -- .../CargasLovController.java.svn-base | 147 - .../CatalogoArmaLovController.java.svn-base | 122 - .../CentroControlLovController.java.svn-base | 97 - .../CertArmasLovController.java.svn-base | 269 -- ...ficacionTramiteLovController.java.svn-base | 155 - .../SancionarLovController.java.svn-base | 164 - ...oAlmacenamientoLovController.java.svn-base | 133 - .../UnidadTipoLovController.java.svn-base | 259 -- .../controller/armas/parametros/.svn/entries | 1323 ------ .../GuardiasController.java.svn-base | 5 - .../ArmaController.java.netbeans-base | 1693 ------- .../text-base/ArmaController.java.svn-base | 1693 ------- .../AuxCargaArmasController.java.svn-base | 517 --- ...carTramiteLovController.java.netbeans-base | 273 -- .../BuscarTramiteLovController.java.svn-base | 273 -- .../CalibreLovController.java.svn-base | 116 - ...hManagementHistoryController.java.svn-base | 295 -- .../CatalogFilterLovController.java.svn-base | 160 - ...CentroControlArmasController.java.svn-base | 668 --- .../ClaseLovController.java.svn-base | 157 - .../ComercianteCupoController.java.svn-base | 472 -- ...DatosParaSancionesController.java.svn-base | 543 --- .../FirmarDocumentoController.java.svn-base | 666 --- ...rDocumentoFiscaliaController.java.svn-base | 481 -- .../GuardiasController.java.svn-base | 169 - ...tacionArmasDetalleController.java.svn-base | 143 - .../ImportacionController.java.netbeans-base | 459 -- .../ImportacionController.java.svn-base | 459 -- ...ImportacionDetalleController.java.svn-base | 5 - .../ImporteArmasController.java.svn-base | 853 ---- .../ImporteArmasExcelController.java.svn-base | 760 ---- ...eTipoArmaExplosivoController.java.svn-base | 115 - .../IngresoDatosTipoTramite.java.svn-base | 892 ---- ...esoInventarioController.java.netbeans-base | 1715 -------- .../IngresoInventarioController.java.svn-base | 1715 -------- .../InventarioSubidoController.java.svn-base | 135 - .../LongitudLovController.java.svn-base | 116 - .../OrigenTramiteController.java.svn-base | 462 -- ...asParaEvaluacionesController.java.svn-base | 468 -- .../RequisitoController.java.svn-base | 225 - ...equisitoPorTramiteController.java.svn-base | 432 -- .../RespuestasLovController.java.svn-base | 282 -- .../SancionesController.java.svn-base | 235 - ...lmacenamientoController.java.netbeans-base | 608 --- ...itioAlmacenamientoController.java.svn-base | 608 --- ...udImportacionArmasController.java.svn-base | 115 - ...rmCentroControlJurController.java.svn-base | 381 -- ...mVentaArmaTemporalController.java.svn-base | 180 - .../TipoArmaExpLovController.java.svn-base | 147 - ...posArmasExplosivosController.java.svn-base | 996 ----- .../TotalPersonaController.java.svn-base | 174 - .../UnidadTipoController.java.svn-base | 454 -- .../VentaTotalPersonaController.java.svn-base | 96 - .../armas/parametros/util/.svn/entries | 130 - .../.svn/text-base/ArmasExcel.java.svn-base | 136 - .../EstadosSolicitudBPM.java.svn-base | 59 - .../TipoArmaExplosivoPKExcel.java.svn-base | 65 - .../controller/armas/solicitud/.svn/entries | 3360 -------------- .../AgenciaArmaController.java.svn-base | 5 - .../AgenciaSucursalController.java.svn-base | 5 - ...cumentoHabilitanteController.java.svn-base | 5 - ...eConsultaSolicitudController.java.svn-base | 5 - ...tudAgenciaSucursalController.java.svn-base | 5 - .../SolicitudController.java.svn-base | 5 - .../SolicitudGuardiasController.java.svn-base | 5 - .../AgenciaArmaController.java.svn-base | 107 - .../AgenciaSucursalController.java.svn-base | 259 -- ...cionPlanInspeccionController.java.svn-base | 671 --- .../ArmaEntidadReporte.java.svn-base | 82 - .../ArmasBloqueoController.java.svn-base | 927 ---- .../ArmasController.java.netbeans-base | 2325 ---------- .../text-base/ArmasController.java.svn-base | 2325 ---------- ...ArticuloRegistradoController.java.svn-base | 522 --- ...rizacionDevolucionController.java.svn-base | 522 --- .../AuxArmasController.java.svn-base | 385 -- .../text-base/BodegaController.java.svn-base | 116 - ...abRepDestruirArmasController.java.svn-base | 174 - .../CargarDepositoController.java.svn-base | 667 --- .../CertificadoArmasController.java.svn-base | 126 - ...icadoFiscaliaController.java.netbeans-base | 836 ---- ...ertificadoFiscaliaController.java.svn-base | 836 ---- .../CertificadosArmasController.java.svn-base | 624 --- .../ColaImpresionController.java.svn-base | 164 - .../ConsultaAlfrescoController.java.svn-base | 692 --- .../ConsultaArmasController.java.svn-base | 664 --- ...odiaTempAeropuertoController.java.svn-base | 749 ---- .../CustodiaTemporalController.java.svn-base | 134 - .../CustodiosController.java.svn-base | 238 - .../DecomisoArmaController.java.svn-base | 362 -- ...isoArmaTransaccionController.java.svn-base | 322 -- .../DecomisoController.java.svn-base | 336 -- .../DecomisoMaterialController.java.svn-base | 2373 ---------- ...etRepDestruirArmasController.java.svn-base | 190 - ...tanteConErrorController.java.netbeans-base | 934 ---- ...abilitanteConErrorController.java.svn-base | 934 ---- ...cumentoHabilitanteController.java.svn-base | 1456 ------- ...HabilitanteDetalleController.java.svn-base | 173 - .../EmitirDocumentoHabilitante.java.svn-base | 841 ---- ...asNoIniciadasFlujoController.java.svn-base | 432 -- ...icasFlatantesController.java.netbeans-base | 1201 ----- ...sTecnicasFlatantesController.java.svn-base | 1201 ----- ...enTrabajoCustodiosController.java.svn-base | 699 --- ...ortacionProduccionController.java.svn-base | 2257 ---------- ...icacionReimpresionController.java.svn-base | 451 -- ...aTecnicaArmasController.java.netbeans-base | 1328 ------ ...oFichaTecnicaArmasController.java.svn-base | 1328 ------ .../InspeccionArchivoController.java.svn-base | 161 - ...ccionCambioArchivoController.java.svn-base | 248 -- .../InspeccionController.java.svn-base | 160 - .../InventariosController.java.svn-base | 2239 ---------- ...DocumentosAlfrescoController.java.svn-base | 287 -- ...ficacionInspeccionController.java.svn-base | 513 --- ...arEmisionDocumentoController.java.svn-base | 588 --- .../OrdenTrabajoController.java.svn-base | 387 -- ...torizacionesAnularController.java.svn-base | 292 -- ...isosAutorizacionesController.java.svn-base | 154 - ...ficacionInspeccionController.java.svn-base | 930 ---- ...anificacionTramiteController.java.svn-base | 328 -- ...ecepcionArmasController.java.netbeans-base | 1919 -------- .../RecepcionArmasController.java.svn-base | 1919 -------- ...ionArmasNoEnviadasController.java.svn-base | 436 -- .../ReclamoDecomisoController.java.svn-base | 424 -- ...CoordinadorMilitarController.java.svn-base | 240 - .../RegistrarNovedadController.java.svn-base | 519 --- ...RegistroInspeccionController.java.svn-base | 1002 ----- ...eccionPlaniNoPlaniController.java.svn-base | 725 --- ...AgenciasSucursalesController.java.svn-base | 239 - ...orteAutorizacionesController.java.svn-base | 576 --- ...icitudClienteController.java.netbeans-base | 971 ----- ...taSolicitudClienteController.java.svn-base | 971 ----- ...ultaSolicitudController.java.netbeans-base | 990 ----- ...eConsultaSolicitudController.java.svn-base | 990 ----- ...eControlInventarioController.java.svn-base | 372 -- ...teDestruccionArmasController.java.svn-base | 1308 ------ ...DestruccionDeArmasController.java.svn-base | 784 ---- ...tadisticasTramitesController.java.svn-base | 306 -- ...IngresoVentaArmExpController.java.svn-base | 422 -- ...esoVentaArmExpUserController.java.svn-base | 436 -- ...eccionesRealizadasController.java.svn-base | 433 -- ...quidacionEconomicaController.java.svn-base | 330 -- .../ReporteSancionesController.java.svn-base | 482 -- ...orteArmasADestruirController.java.svn-base | 227 - ...rteArmasADestJefCCController.java.svn-base | 305 -- ...teArmasADestJefDepController.java.svn-base | 308 -- .../SancionDecomisoController.java.svn-base | 148 - ...ncionRecomendacionController.java.svn-base | 112 - .../SancionarController.java.svn-base | 1095 ----- ...tudAgenciaSucursalController.java.svn-base | 150 - .../SolicitudArmasBPMController.java.svn-base | 175 - .../SolicitudArmasController.java.svn-base | 350 -- ...ambioDepositoController.java.netbeans-base | 237 - ...itudCambioDepositoController.java.svn-base | 237 - ...licitudCertificadoController.java.svn-base | 459 -- .../SolicitudController.java.svn-base | 222 - .../SolicitudGuardiasController.java.svn-base | 216 - ...olicitudRequisitosController.java.svn-base | 313 -- .../SolicitudTramiteController.java.svn-base | 277 -- ...TarmSolicitudArmasController.java.svn-base | 234 - ...SolicitudDocumentoController.java.svn-base | 415 -- ...rmSolicitudTramiteController.java.svn-base | 282 -- .../TarmTramiteController.java.svn-base | 594 --- .../TramiteArmasController.java.netbeans-base | 2788 ------------ .../TramiteArmasController.java.svn-base | 2788 ------------ ...nsaccionArmaBodegaController.java.svn-base | 147 - ...amiteLibreTransitoController.java.svn-base | 804 ---- .../ValidarDepositoController.java.svn-base | 879 ---- ...VerificacionBodegaController.java.svn-base | 1120 ----- ...cacionInformacionCertificado.java.svn-base | 379 -- ...ormacionDevolucionController.java.svn-base | 655 --- .../VerificacionReimpresion.java.svn-base | 559 --- ...equisitosSolicitudController.java.svn-base | 1119 ----- ...ialDecomisadoController.java.netbeans-base | 394 -- ...MaterialDecomisadoController.java.svn-base | 394 -- ...bilitanteportransaccion.java.netbeans-base | 985 ----- ...ntoHabilitanteportransaccion.java.svn-base | 985 ----- .../fp/frontend/controller/bpm/.svn/entries | 507 --- .../AssignmentsController.java.svn-base | 215 - .../EndedFlowsController.java.svn-base | 354 -- .../ExportFlowsController.java.svn-base | 255 -- ...TransactionMappingController.java.svn-base | 212 - ...dTransactionOriginController.java.svn-base | 210 - .../text-base/FieldsController.java.svn-base | 129 - .../text-base/FlowsController.java.svn-base | 140 - .../text-base/GroupsController.java.svn-base | 140 - .../GroupsUsersController.java.svn-base | 226 - .../InboxController.java.netbeans-base | 561 --- .../text-base/InboxController.java.svn-base | 561 --- .../text-base/NotifyController.java.svn-base | 172 - .../text-base/RulesController.java.svn-base | 268 -- .../TaskServerController.java.svn-base | 231 - .../TransactionLogController.java.svn-base | 709 --- .../frontend/controller/bpm/lov/.svn/entries | 96 - .../GroupsLovController.java.svn-base | 114 - ...TransactionBpmELovController.java.svn-base | 155 - .../fp/frontend/controller/error/.svn/entries | 62 - .../text-base/ErrorController.java.svn-base | 47 - .../frontend/controller/general/.svn/entries | 31 - .../controller/general/audit/.svn/entries | 62 - .../AuditReportController.java.svn-base | 5 - .../AuditReportController.java.netbeans-base | 511 --- .../AuditReportController.java.svn-base | 511 --- .../fp/frontend/controller/pbpm/.svn/entries | 31 - .../frontend/controller/pbpm/lov/.svn/entries | 96 - .../TbpmFlowsLovController.java.svn-base | 109 - .../TbpmRulesLovController.java.svn-base | 117 - .../controller/pcustomer/.svn/entries | 371 -- .../text-base/CompanyController.java.svn-base | 300 -- .../FileDetailController.java.svn-base | 132 - .../JuridicalPersonController.java.svn-base | 973 ----- .../text-base/PeopleController.java.svn-base | 169 - .../PeopleFastController.java.svn-base | 1020 ----- .../PersonAddressController.java.svn-base | 702 --- .../PersonDetailController.java.svn-base | 259 -- .../PersonPhoneController.java.svn-base | 300 -- .../PersonViewController.java.svn-base | 321 -- .../PersonViewLovController.java.svn-base | 152 - .../controller/pcustomer/lov/.svn/entries | 96 - ...JuridicalPersonLovController.java.svn-base | 183 - .../PersonLovController.java.svn-base | 207 - .../frontend/controller/pentaho/.svn/entries | 62 - .../text-base/PentahoController.java.svn-base | 255 -- .../frontend/controller/pgeneral/.svn/entries | 64 - .../controller/pgeneral/acco/.svn/entries | 62 - .../AccountStatusController.java.svn-base | 155 - .../controller/pgeneral/date/.svn/entries | 130 - ...rateAccountingDateController.java.svn-base | 200 - ...countingDateBranchController.java.svn-base | 142 - ...neNotAccountingDayController.java.svn-base | 302 -- .../controller/pgeneral/firmas/.svn/entries | 62 - .../CertificadosController.java.svn-base | 291 -- .../controller/pgeneral/gene/.svn/entries | 946 ---- .../text-base/AreaController.java.svn-base | 142 - .../BalanceGroupController.java.svn-base | 129 - .../BalanceTypeController.java.svn-base | 143 - .../text-base/BranchController.java.svn-base | 151 - .../text-base/CantonController.java.svn-base | 198 - .../text-base/CatalogController.java.svn-base | 119 - .../CatalogDetailBpmController.java.svn-base | 146 - .../CatalogDetailController.java.svn-base | 367 -- .../text-base/ChannelController.java.svn-base | 135 - .../text-base/ChargesController.java.svn-base | 140 - .../ChargesDefinitionController.java.svn-base | 399 -- .../ChargesGroupController.java.svn-base | 223 - .../text-base/CityController.java.svn-base | 202 - .../text-base/CountryController.java.svn-base | 156 - .../CurrencyController.java.svn-base | 133 - .../LanguageController.java.svn-base | 140 - .../OfficeAndBranchController.java.svn-base | 300 -- .../text-base/OfficeController.java.svn-base | 174 - .../ParametersController.java.netbeans-base | 156 - .../ParametersController.java.svn-base | 156 - .../ParroquiaController.java.svn-base | 177 - .../ProvinceController.java.svn-base | 225 - .../text-base/QueryController.java.svn-base | 173 - .../QueryProcessController.java.svn-base | 166 - .../ServicesController.java.svn-base | 193 - .../SubProductChargesController.java.svn-base | 165 - ...erminosCondicionesController.java.svn-base | 127 - .../TransactionQueryController.java.svn-base | 223 - .../controller/pgeneral/lov/.svn/entries | 470 -- .../EntityLovController.java.svn-base | 5 - .../prop-base/UserLovController.java.svn-base | 5 - .../ActivityLovController.java.svn-base | 117 - .../BalanceTypeLovController.java.svn-base | 122 - .../BranchLovController.java.svn-base | 108 - .../CatalogLovController.java.svn-base | 107 - .../EntityLovController.java.netbeans-base | 108 - .../EntityLovController.java.svn-base | 108 - .../LevelLovController.java.svn-base | 129 - ...essageTemplatesLovController.java.svn-base | 112 - .../ProcessLovControler.java.svn-base | 119 - .../ProfileLovController.java.svn-base | 108 - .../SubLevelLovController.java.svn-base | 139 - .../TransactionLovController.java.svn-base | 144 - .../UserLovControler.java.netbeans-base | 127 - .../text-base/UserLovControler.java.svn-base | 127 - .../text-base/UserLovController.java.svn-base | 127 - .../controller/pgeneral/menu/.svn/entries | 266 -- .../text-base/LevelController.java.svn-base | 90 - .../LevelDescController.java.svn-base | 205 - .../text-base/MenuController.java.svn-base | 539 --- .../MenuLevelTranController.java.svn-base | 217 - .../MenuSubLevelTranController.java.svn-base | 257 -- .../SubLevelController.java.svn-base | 90 - .../SubLevelDescController.java.svn-base | 242 -- .../controller/pgeneral/message/.svn/entries | 96 - .../MessageTemplatesController.java.svn-base | 145 - ...ssageTemplatesDescController.java.svn-base | 177 - .../controller/pgeneral/proc/.svn/entries | 62 - .../text-base/ProcessController.java.svn-base | 141 - .../controller/pgeneral/product/.svn/entries | 198 - .../text-base/ModuleController.java.svn-base | 138 - .../text-base/ProductController.java.svn-base | 173 - .../ProductDefinitionController.java.svn-base | 212 - .../SubProductController.java.svn-base | 187 - ...SubProductCurrencyController.java.svn-base | 240 - .../controller/pgeneral/result/.svn/entries | 62 - .../text-base/ResultsController.java.svn-base | 125 - .../controller/pgeneral/safe/.svn/entries | 300 -- .../AuditInsDelController.java.svn-base | 5 - .../SafeAuditController.java.svn-base | 5 - .../AuditInsDelController.java.svn-base | 163 - .../ProfileHoraryController.java.svn-base | 304 -- .../SafeAuditController.java.netbeans-base | 106 - .../SafeAuditController.java.svn-base | 106 - .../TerminalController.java.svn-base | 220 - .../UserChangePassAdmin.java.svn-base | 142 - .../UserDetailController.java.svn-base | 193 - ...PerfilAssiggnationController.java.svn-base | 249 -- .../UserProfileController.java.svn-base | 127 - .../controller/pgeneral/trans/.svn/entries | 130 - .../TransactionController.java.svn-base | 192 - ...TransactionProcessController.java.svn-base | 333 -- .../TransactionReportController.java.svn-base | 200 - .../frontend/controller/security/.svn/entries | 337 -- .../ActivateUserController.java.svn-base | 187 - ...xpiredPassPersonalController.java.svn-base | 209 - ...ChangePassPersonalController.java.svn-base | 568 --- .../text-base/LoginController.java.svn-base | 597 --- .../.svn/text-base/MaiaMenu.java.svn-base | 126 - .../MenuProfileController.java.svn-base | 213 - .../ModifyUserController.java.svn-base | 552 --- .../PasswordController.java.svn-base | 197 - .../text-base/ProfileController.java.svn-base | 131 - .../controller/security/reports/.svn/entries | 62 - .../ReportUserController.java.svn-base | 164 - .../fp/frontend/controller/test/.svn/entries | 62 - .../BpmCatalogController.java.svn-base | 126 - .../com/fp/frontend/converters/.svn/entries | 62 - .../text-base/DateConverter.java.svn-base | 36 - .../java/com/fp/frontend/enums/.svn/entries | 62 - .../text-base/EnumLovOption.java.svn-base | 56 - .../java/com/fp/frontend/filter/.svn/entries | 201 - .../TimeoutManagerFilter.java.svn-base | 5 - .../ControlAcceso.java.netbeans-base | 71 - .../text-base/ControlAcceso.java.svn-base | 71 - .../text-base/GZIPFilter.java.netbeans-base | 68 - .../.svn/text-base/GZIPFilter.java.svn-base | 68 - .../GZIPResponseStream.java.svn-base | 108 - .../GZIPResponseWrapper.java.svn-base | 97 - .../TimeoutManagerFilter.java.svn-base | 96 - .../fp/frontend/filter/security/.svn/entries | 62 - .../AuthorizationListener.java.svn-base | 59 - .../java/com/fp/frontend/helper/.svn/entries | 96 - .../text-base/CallerHelper.java.netbeans-base | 276 -- .../.svn/text-base/CallerHelper.java.svn-base | 276 -- .../text-base/MessageHelper.java.svn-base | 223 - .../java/com/fp/frontend/prueba/.svn/entries | 96 - .../text-base/PruebaInicioFlujo.java.svn-base | 143 - ...alidarDepositoFlowController.java.svn-base | 283 -- .../java/com/fp/frontend/servlet/.svn/entries | 130 - .../prop-base/CloseSessionMaia.java.svn-base | 5 - .../text-base/CloseSessionMaia.java.svn-base | 68 - .../.svn/text-base/HelpServlet.java.svn-base | 158 - .../text-base/LogoutServlet.java.svn-base | 59 - .../java/com/fp/frontend/utility/.svn/entries | 368 -- .../prop-base/CommonTransformer.java.svn-base | 5 - .../prop-base/MsgControlArmas.java.svn-base | 5 - .../text-base/CommonTransformer.java.svn-base | 38 - .../.svn/text-base/Content.java.svn-base | 80 - .../ConvertNumberToText.java.svn-base | 178 - .../text-base/EnumParametros.java.svn-base | 42 - .../text-base/LifeCicleListener.java.svn-base | 80 - .../text-base/MsgControlArmas.java.svn-base | 41 - .../.svn/text-base/MsgGeneral.java.svn-base | 48 - .../TextAreaValidationRequired.java.svn-base | 125 - .../text-base/Utilidades.java.netbeans-base | 238 - .../.svn/text-base/Utilidades.java.svn-base | 238 - .../ValidateIdentification.java.svn-base | 144 - .../com/fp/frontend/validators/.svn/entries | 96 - .../text-base/CedulaValidator.java.svn-base | 67 - .../text-base/DocFirmaValidator.java.svn-base | 31 - .../com/fp/frontend/webservices/.svn/entries | 241 - .../.svn/prop-base/ArmaService.java.svn-base | 5 - .../ColaImpresionService.java.svn-base | 5 - .../ConsultaLoginService.java.svn-base | 5 - .../prop-base/DocumentosService.java.svn-base | 5 - .../prop-base/InventarioService.java.svn-base | 5 - .../.svn/text-base/ArmaService.java.svn-base | 51 - .../ColaImpresionService.java.svn-base | 62 - .../ConsultaLoginService.java.svn-base | 32 - .../text-base/DatosSnapService.java.svn-base | 31 - .../text-base/DocumentosService.java.svn-base | 26 - .../text-base/InventarioService.java.svn-base | 33 - .../fp/frontend/webservices/impl/.svn/entries | 266 -- .../prop-base/ArmaServiceImpl.java.svn-base | 5 - .../ColaImpresionServiceImpl.java.svn-base | 5 - .../ConsultaLoginServiceImpl.java.svn-base | 5 - .../DocumentosServiceImpl.java.svn-base | 5 - .../InventarioServiceImpl.java.svn-base | 5 - .../text-base/ArmaServiceImpl.java.svn-base | 101 - ...olaImpresionServiceImpl.java.netbeans-base | 190 - .../ColaImpresionServiceImpl.java.svn-base | 190 - .../ConsultaLoginServiceImpl.java.svn-base | 55 - .../DatosSnapServiceImpl.java.svn-base | 238 - .../DocumentosServiceImpl.java.svn-base | 42 - .../InstitucionSnapEnum.java.svn-base | 27 - .../InventarioServiceImpl.java.svn-base | 55 - .../fp/frontend/webservices/rest/.svn/entries | 71 - .../text-base/RestApplication.java.svn-base | 9 - .../webservices/rest/dto/.svn/entries | 130 - .../.svn/text-base/LoginData.java.svn-base | 24 - .../.svn/text-base/LoginResult.java.svn-base | 33 - .../text-base/StatusMessage.java.svn-base | 27 - .../webservices/rest/services/.svn/entries | 130 - .../text-base/ArmasResource.java.svn-base | 65 - .../text-base/CommonResource.java.svn-base | 122 - .../text-base/SecurityResource.java.svn-base | 65 - .../webservices/rest/util/.svn/entries | 62 - .../JwtValidateException.java.svn-base | 26 - .../fp/frontend/webservices/snap/.svn/entries | 37 - .../webservices/snap/cedula/.svn/entries | 266 -- .../prop-base/CedulaServicio.java.svn-base | 5 - .../CedulaServicioService.java.svn-base | 5 - .../prop-base/ClienteCedula.java.svn-base | 5 - .../prop-base/ConsultarCedula.java.svn-base | 5 - .../ConsultarCedulaResponse.java.svn-base | 5 - .../prop-base/ObjectFactory.java.svn-base | 5 - .../.svn/prop-base/package-info.java.svn-base | 5 - .../text-base/CedulaServicio.java.svn-base | 42 - .../CedulaServicioService.java.svn-base | 97 - .../text-base/ClienteCedula.java.svn-base | 37 - .../text-base/ConsultarCedula.java.svn-base | 60 - .../ConsultarCedulaResponse.java.svn-base | 63 - .../text-base/ObjectFactory.java.svn-base | 71 - .../.svn/text-base/package-info.java.svn-base | 2 - .../webservices/snap/modelo/.svn/entries | 300 -- .../.svn/text-base/CabeceraXml.java.svn-base | 95 - .../.svn/text-base/DatosArmaXml.java.svn-base | 182 - .../.svn/text-base/EjecucionXml.java.svn-base | 122 - .../.svn/text-base/GuardiaXml.java.svn-base | 93 - .../.svn/text-base/ImagenXml.java.svn-base | 91 - .../.svn/text-base/ResultadoXml.java.svn-base | 253 -- .../SoapEnvelopWrapper.java.svn-base | 102 - .../.svn/text-base/TramiteXml.java.svn-base | 111 - .../webservices/snap/ruc/.svn/entries | 266 -- .../.svn/prop-base/ClienteRUC.java.svn-base | 5 - .../.svn/prop-base/ConsultarRuc.java.svn-base | 5 - .../ConsultarRucResponse.java.svn-base | 5 - .../prop-base/ObjectFactory.java.svn-base | 5 - .../.svn/prop-base/RucServicio.java.svn-base | 5 - .../RucServicioService.java.svn-base | 5 - .../.svn/prop-base/package-info.java.svn-base | 5 - .../.svn/text-base/ClienteRUC.java.svn-base | 30 - .../.svn/text-base/ConsultarRuc.java.svn-base | 60 - .../ConsultarRucResponse.java.svn-base | 63 - .../text-base/ObjectFactory.java.svn-base | 71 - .../.svn/text-base/RucServicio.java.svn-base | 42 - .../RucServicioService.java.svn-base | 97 - .../.svn/text-base/package-info.java.svn-base | 2 - frontend/src/main/resources/.svn/entries | 368 -- .../.svn/text-base/bpm_es.properties.svn-base | 105 - .../controlarmas_es.properties.netbeans-base | 1014 ----- .../controlarmas_es.properties.svn-base | 1014 ----- .../text-base/customer_es.properties.svn-base | 42 - .../text-base/firmas_es.properties.svn-base | 14 - .../general_es.properties.netbeans-base | 435 -- .../text-base/general_es.properties.svn-base | 435 -- .../text-base/jasper.properties.netbeans-base | 10 - .../.svn/text-base/jasper.properties.svn-base | 10 - .../text-base/pentaho.properties.svn-base | 10 - .../text-base/security_es.properties.svn-base | 31 - .../validation_es.properties.svn-base | 64 - .../text-base/viaticos_es.properties.svn-base | 146 - frontend/src/main/webapp/.svn/entries | 179 - .../text-base/change-password.xhtml.svn-base | 155 - .../.svn/text-base/index.xhtml.svn-base | 5 - .../.svn/text-base/login.xhtml.netbeans-base | 94 - .../.svn/text-base/login.xhtml.svn-base | 94 - .../text-base/passwordExpired.xhtml.svn-base | 27 - frontend/src/main/webapp/WEB-INF/.svn/entries | 238 - .../.faces-config.xml.jsfdia.svn-base | 20 - .../WEB-INF/.svn/text-base/beans.xml.svn-base | 10 - .../.svn/text-base/faces-config.xml.svn-base | 65 - ...oss-deployment-structure.xml.netbeans-base | 16 - .../jboss-deployment-structure.xml.svn-base | 16 - .../text-base/jboss-web.xml.netbeans-base | 4 - .../.svn/text-base/jboss-web.xml.svn-base | 4 - .../WEB-INF/.svn/text-base/web.xml.svn-base | 112 - .../src/main/webapp/WEB-INF/lib/.svn/entries | 62 - .../gmaps4jsf-core-3.0.0.jar.svn-base | 5 - .../gmaps4jsf-core-3.0.0.jar.svn-base | Bin 142054 -> 0 bytes .../webapp/WEB-INF/templates/.svn/entries | 96 - .../.svn/text-base/queryEvent.xhtml.svn-base | 27 - .../text-base/template.xhtml.netbeans-base | 48 - .../.svn/text-base/template.xhtml.svn-base | 48 - frontend/src/main/webapp/app/.svn/entries | 232 - .../prop-base/appletFirma-2.1.jar.svn-base | 5 - .../bcmail-jdk15on-1.51.jar.svn-base | 5 - .../bcpkix-jdk15on-1.49.jar.svn-base | 5 - .../bcprov-ext-jdk15on-1.49.jar.svn-base | 5 - .../bcprov-jdk15on-1.49.jar.svn-base | 5 - .../prop-base/itextpdf-5.5.3.jar.svn-base | 5 - .../text-base/appletFirma-2.1.jar.svn-base | Bin 45946 -> 0 bytes .../bcmail-jdk15on-1.51.jar.svn-base | Bin 95486 -> 0 bytes .../bcpkix-jdk15on-1.49.jar.svn-base | Bin 629662 -> 0 bytes .../bcprov-ext-jdk15on-1.49.jar.svn-base | Bin 2552449 -> 0 bytes .../bcprov-jdk15on-1.49.jar.svn-base | Bin 2476362 -> 0 bytes .../text-base/itextpdf-5.5.3.jar.svn-base | Bin 2237618 -> 0 bytes .../src/main/webapp/errorPages/.svn/entries | 62 - .../.svn/text-base/maiaError.xhtml.svn-base | 23 - frontend/src/main/webapp/pages/.svn/entries | 135 - .../text-base/initialtab.xhtml.netbeans-base | 10 - .../.svn/text-base/initialtab.xhtml.svn-base | 10 - .../text-base/workspace.xhtml.netbeans-base | 306 -- .../.svn/text-base/workspace.xhtml.svn-base | 306 -- .../main/webapp/pages/accounting/.svn/entries | 31 - .../pages/accounting/dates/.svn/entries | 62 - .../changeaccountingdate.xhtml.svn-base | 40 - .../webapp/pages/application/.svn/entries | 65 - .../.svn/text-base/parameter.xhtml.svn-base | 131 - .../pages/application/date/.svn/entries | 96 - .../daysnonaccounting.xhtml.svn-base | 88 - .../generationaccountingdate.xhtml.svn-base | 78 - .../src/main/webapp/pages/armas/.svn/entries | 3845 ---------------- .../armas/.svn/prop-base/armas.xhtml.svn-base | 5 - .../text-base/AuxCargaArmas.xhtml.svn-base | 67 - .../text-base/ImporteArmas.xhtml.svn-base | 85 - .../ImporteArmasExcel.xhtml.svn-base | 85 - ...ficacionRequisitosSolicitud.xhtml.svn-base | 232 - .../.svn/text-base/aprobarActa.xhtml.svn-base | 116 - .../aprobarPlanInspeccionAnual.xhtml.svn-base | 191 - .../.svn/text-base/armas.xhtml.netbeans-base | 432 -- .../armas/.svn/text-base/armas.xhtml.svn-base | 432 -- .../armasBloqueo.xhtml.netbeans-base | 171 - .../text-base/armasBloqueo.xhtml.svn-base | 171 - .../articulosRegistrados.xhtml.netbeans-base | 390 -- .../articulosRegistrados.xhtml.svn-base | 390 -- .../autorizarDevolucion.xhtml.svn-base | 98 - .../text-base/cargarDeposito.xhtml.svn-base | 159 - .../centroControlArmas.xhtml.svn-base | 260 -- .../certificadoFiscalia.xhtml.netbeans-base | 389 -- .../certificadoFiscalia.xhtml.svn-base | 389 -- .../certificadosArmas.xhtml.netbeans-base | 111 - .../certificadosArmas.xhtml.svn-base | 111 - .../text-base/comercianteCupo.xhtml.svn-base | 173 - .../text-base/consultaAlfresco.xhtml.svn-base | 561 --- .../consultaArmas.xhtml.netbeans-base | 300 -- .../text-base/consultaArmas.xhtml.svn-base | 300 -- ...onsultaReporteCashManagment.xhtml.svn-base | 74 - ...odiaTemporalAeropuerto.xhtml.netbeans-base | 400 -- .../custodiaTemporalAeropuerto.xhtml.svn-base | 400 -- .../datosParaSanciones.xhtml.svn-base | 191 - .../decomisoMaterial.xhtml.netbeans-base | 767 ---- .../text-base/decomisoMaterial.xhtml.svn-base | 767 ---- .../text-base/desaduanizacion.xhtml.svn-base | 195 - .../desaduanizacionOld.xhtml.svn-base | 171 - ...ocumentoHabilitanteConError.xhtml.svn-base | 126 - ...umentohabilitanteportramite.xhtml.svn-base | 110 - .../emitirDocumentoHabilitante.xhtml.svn-base | 149 - .../envioarmasnoiniciadasflujo.xhtml.svn-base | 130 - .../evaluaciondeconocimientos.xhtml.svn-base | 145 - ...ichasTecnicasFaltantes.xhtml.netbeans-base | 44 - .../fichasTecnicasFaltantes.xhtml.svn-base | 44 - .../firmarDocumentoFiscalia.xhtml.svn-base | 105 - .../text-base/firmarDocumentos.xhtml.svn-base | 83 - .../firmarDocumentos2.xhtml.svn-base | 83 - ...enerarOrdenTrabajoCustudios.xhtml.svn-base | 342 -- .../generarPlanInspeccion.xhtml.svn-base | 389 -- ...enerarReportePlanInspeccion.xhtml.svn-base | 151 - .../importacionProduccion.xhtml.netbeans-base | 592 --- .../importacionProduccion.xhtml.svn-base | 592 --- ...mprimirVerificarReimpresion.xhtml.svn-base | 120 - ...oCustodiaTemporalAeropuerto.xhtml.svn-base | 14 - .../ingresoDatosTipoTramite.xhtml.svn-base | 414 -- ...gresoFichaTecnicaArmas.xhtml.netbeans-base | 346 -- .../ingresoFichaTecnicaArmas.xhtml.svn-base | 346 -- .../ingresoInventario.xhtml.svn-base | 289 -- ...ingresoRegistroDeProduccion.xhtml.svn-base | 287 -- ...ngresoRegistrodeVentas.xhtml.netbeans-base | 283 -- .../ingresoRegistrodeVentas.xhtml.svn-base | 283 -- ...strodeVentasTraspasoDominio.xhtml.svn-base | 116 - ...trodeVentasVariasArmas.xhtml.netbeans-base | 287 -- ...RegistrodeVentasVariasArmas.xhtml.svn-base | 287 -- .../ingresoTestPsicologico.xhtml.svn-base | 273 -- .../inspeccionCambioArchivo.xhtml.svn-base | 136 - .../text-base/inventarios.xhtml.netbeans-base | 521 --- .../.svn/text-base/inventarios.xhtml.svn-base | 521 --- .../mantenimientoDocuAlfresco.xhtml.svn-base | 163 - .../modificarPlanInspeccion.xhtml.svn-base | 275 -- .../notificarFechaEmision.xhtml.svn-base | 92 - ...otificarFechaEmisionReporte.xhtml.svn-base | 74 - .../text-base/origenTramite.xhtml.svn-base | 153 - .../preguntasParaEvaluaciones.xhtml.svn-base | 185 - .../recepcionarmas.xhtml.netbeans-base | 123 - .../text-base/recepcionarmas.xhtml.svn-base | 123 - .../recepcionarmasnoenviadas.xhtml.svn-base | 130 - .../text-base/reclamoDecomiso.xhtml.svn-base | 91 - ...oDecomisoCoordinadorMilitar.xhtml.svn-base | 91 - .../text-base/registrarNovedad.xhtml.svn-base | 113 - .../registroInspeccion.xhtml.svn-base | 334 -- ...istroInspeccionPlaniNoPlani.xhtml.svn-base | 356 -- .../reporteAgenciasSucursales.xhtml.svn-base | 44 - ...reporteArmasPrevImportacion.xhtml.svn-base | 43 - ...eporteArticulosControl.xhtml.netbeans-base | 298 -- .../reporteArticulosControl.xhtml.svn-base | 298 -- .../reporteAutorizaciones.xhtml.svn-base | 102 - .../reporteCashManagment.xhtml.svn-base | 47 - .../reporteCompaniasCControl.xhtml.svn-base | 58 - .../reporteCompaniasInscritas.xhtml.svn-base | 32 - .../reporteControlInventario.xhtml.svn-base | 46 - .../text-base/reporteDecomiso.xhtml.svn-base | 54 - .../reporteDestruccionDeArmas.xhtml.svn-base | 120 - .../reporteEstadisticasTramite.xhtml.svn-base | 65 - .../reporteHistoricoArmas.xhtml.netbeans-base | 47 - .../reporteHistoricoArmas.xhtml.svn-base | 47 - ...eporteImportacionProduccion.xhtml.svn-base | 48 - .../reporteIngresoVentaArmExp.xhtml.svn-base | 54 - ...porteIngresoVentaArmExpUser.xhtml.svn-base | 52 - ...porteInspeccionesRealizadas.xhtml.svn-base | 54 - ...reporteLiquidacionEconomica.xhtml.svn-base | 54 - .../reporteNumArmasEstado.xhtml.svn-base | 46 - .../reporteNumPermisos.xhtml.svn-base | 57 - ...ePermisosAutorizacionesCcon.xhtml.svn-base | 33 - ...ePermisosAutorizacionesSusp.xhtml.svn-base | 43 - .../text-base/reporteSanciones.xhtml.svn-base | 101 - .../text-base/reporteTipoArma.xhtml.svn-base | 55 - .../text-base/reporteTipoArmas.xhtml.svn-base | 53 - .../reporteTipoAutorizacion.xhtml.svn-base | 49 - .../reporteTipoFabricacion.xhtml.svn-base | 42 - .../reporteTramiteCentro.xhtml.svn-base | 53 - .../text-base/reportedearmas.xhtml.svn-base | 64 - .../.svn/text-base/requisito.xhtml.svn-base | 117 - .../requisitosportipotramite.xhtml.svn-base | 91 - .../requisitosportramite.xhtml.svn-base | 182 - ...evisarReporteArmasADestruir.xhtml.svn-base | 90 - ...sarRprteArmasADestruirJefCC.xhtml.svn-base | 117 - ...arRprteArmasADestruirJefDep.xhtml.svn-base | 117 - .../revisarTramiteTotal.xhtml.netbeans-base | 312 -- .../revisarTramiteTotal.xhtml.svn-base | 312 -- .../sancionespordecomiso.xhtml.svn-base | 279 -- .../sitioAlmacenamiento.xhtml.svn-base | 435 -- .../solicitudCambioDeposito.xhtml.svn-base | 130 - .../solicitudCertificado.xhtml.svn-base | 151 - .../tiposarmasexplosivos.xhtml.svn-base | 164 - .../.svn/text-base/tipotramite.xhtml.svn-base | 110 - .../.svn/text-base/unidadTipo.xhtml.svn-base | 118 - .../text-base/validarDeposito.xhtml.svn-base | 136 - ...darTramiteGuiaLibreTransito.xhtml.svn-base | 195 - .../text-base/verificarArmas.xhtml.svn-base | 192 - ...asInformacionRecepcion.xhtml.netbeans-base | 162 - ...arArmasInformacionRecepcion.xhtml.svn-base | 162 - ...ficarInformacionCertificado.xhtml.svn-base | 103 - ...ificarInformacionDevolucion.xhtml.svn-base | 135 - ...icarMaterialDecomisado.xhtml.netbeans-base | 146 - ...verificarMaterialDecomisado.xhtml.svn-base | 146 - .../verificarReimpresion.xhtml.svn-base | 109 - ...izacionSitiosAlmacenamiento.xhtml.svn-base | 126 - .../main/webapp/pages/armas/20/.svn/entries | 334 -- .../20/.svn/prop-base/_armas.xhtml.svn-base | 5 - .../.svn/prop-base/_guardias.xhtml.svn-base | 5 - .../.svn/text-base/_agencias.xhtml.svn-base | 300 -- .../.svn/text-base/_armas.xhtml.netbeans-base | 400 -- .../20/.svn/text-base/_armas.xhtml.svn-base | 400 -- .../.svn/text-base/_direccion.xhtml.svn-base | 174 - .../.svn/text-base/_documentos.xhtml.svn-base | 95 - .../.svn/text-base/_generales.xhtml.svn-base | 117 - .../.svn/text-base/_guardias.xhtml.svn-base | 49 - .../.svn/text-base/_requisitos.xhtml.svn-base | 50 - .../.svn/text-base/_telefono.xhtml.svn-base | 92 - .../text-base/solicitud.xhtml.netbeans-base | 267 -- .../.svn/text-base/solicitud.xhtml.svn-base | 267 -- .../main/webapp/pages/armas/61/.svn/entries | 368 -- .../.svn/prop-base/_agencias.xhtml.svn-base | 5 - .../61/.svn/prop-base/_armas.xhtml.svn-base | 5 - .../.svn/prop-base/_documentos.xhtml.svn-base | 5 - .../.svn/prop-base/_generales.xhtml.svn-base | 5 - .../.svn/prop-base/_guardias.xhtml.svn-base | 5 - .../.svn/prop-base/_requisitos.xhtml.svn-base | 5 - .../.svn/prop-base/_solicitud.xhtml.svn-base | 5 - .../reporteConsultaSolicitud.xhtml.svn-base | 5 - .../.svn/text-base/_agencias.xhtml.svn-base | 242 -- .../.svn/text-base/_armas.xhtml.netbeans-base | 308 -- .../61/.svn/text-base/_armas.xhtml.svn-base | 308 -- .../.svn/text-base/_documentos.xhtml.svn-base | 72 - .../_estadossolicitud.xhtml.svn-base | 42 - .../.svn/text-base/_generales.xhtml.svn-base | 81 - .../.svn/text-base/_guardias.xhtml.svn-base | 40 - .../.svn/text-base/_requisitos.xhtml.svn-base | 23 - .../text-base/_solicitud.xhtml.netbeans-base | 77 - .../.svn/text-base/_solicitud.xhtml.svn-base | 77 - .../reporteConsultaSolicitud.xhtml.svn-base | 78 - ...rteConsultaSolicitudCliente.xhtml.svn-base | 77 - .../main/webapp/pages/armas/lov/.svn/entries | 674 --- .../text-base/TipoArmaExpLov.xhtml.svn-base | 60 - .../text-base/armaExplosivoLov.xhtml.svn-base | 72 - .../.svn/text-base/armasLov.xhtml.svn-base | 92 - .../buscartramiteLov.xhtml.netbeans-base | 89 - .../text-base/buscartramiteLov.xhtml.svn-base | 89 - .../.svn/text-base/calibreLov.xhtml.svn-base | 60 - .../.svn/text-base/cargasLov.xhtml.svn-base | 61 - .../text-base/catalogFilterLov.xhtml.svn-base | 63 - .../text-base/catalogoArmaLov.xhtml.svn-base | 63 - .../text-base/centroControlLov.xhtml.svn-base | 57 - .../text-base/certArmasLov.xhtml.svn-base | 92 - .../.svn/text-base/claseLov.xhtml.svn-base | 63 - .../text-base/conocimientoLov.xhtml.svn-base | 76 - .../.svn/text-base/longitudLov.xhtml.svn-base | 60 - .../planificacionTramiteLov.xhtml.svn-base | 74 - .../text-base/provinciaLov.xhtml.svn-base | 58 - .../text-base/respuestasLov.xhtml.svn-base | 129 - .../text-base/sancionarLov.xhtml.svn-base | 72 - .../sitioAlmacenamientoLov.xhtml.svn-base | 48 - .../text-base/unidadTipoLov.xhtml.svn-base | 134 - .../src/main/webapp/pages/bpm/.svn/entries | 473 -- .../.svn/text-base/assignments.xhtml.svn-base | 132 - .../.svn/text-base/creategroup.xhtml.svn-base | 117 - .../createnotification.xhtml.svn-base | 65 - .../createusertogroup.xhtml.svn-base | 99 - .../.svn/text-base/endedflows.xhtml.svn-base | 170 - .../.svn/text-base/exportflows.xhtml.svn-base | 33 - .../bpm/.svn/text-base/field.xhtml.svn-base | 100 - .../fieldtransactionmapping.xhtml.svn-base | 119 - .../fieldtransactionorigin.xhtml.svn-base | 119 - .../bpm/.svn/text-base/flows.xhtml.svn-base | 100 - .../bpm/.svn/text-base/rules.xhtml.svn-base | 174 - .../bpm/.svn/text-base/tasksrv.xhtml.svn-base | 44 - .../text-base/transactionlog.xhtml.svn-base | 197 - .../main/webapp/pages/bpm/lov/.svn/entries | 96 - .../.svn/text-base/groupslov.xhtml.svn-base | 63 - .../transactionbpmeLov.xhtml.svn-base | 71 - .../main/webapp/pages/customer/.svn/entries | 71 - .../.svn/text-base/personview.xhtml.svn-base | 80 - .../webapp/pages/customer/21/.svn/entries | 164 - .../21/.svn/text-base/_address.xhtml.svn-base | 189 - .../21/.svn/text-base/_natural.xhtml.svn-base | 183 - .../.svn/text-base/_telephone.xhtml.svn-base | 97 - .../naturalpersonfast.xhtml.svn-base | 60 - .../webapp/pages/customer/40/.svn/entries | 164 - .../40/.svn/text-base/_address.xhtml.svn-base | 196 - .../.svn/text-base/_juridical.xhtml.svn-base | 113 - .../.svn/text-base/_telephone.xhtml.svn-base | 107 - .../juridicalpersonfast.xhtml.svn-base | 62 - .../webapp/pages/customer/lov/.svn/entries | 130 - .../text-base/juridicalLov.xhtml.svn-base | 68 - .../.svn/text-base/personLov.xhtml.svn-base | 69 - .../text-base/personViewLov.xhtml.svn-base | 71 - .../src/main/webapp/pages/firmas/.svn/entries | 31 - .../pages/firmas/parametros/.svn/entries | 62 - .../text-base/certificados.xhtml.svn-base | 150 - .../main/webapp/pages/general/.svn/entries | 559 --- .../.svn/text-base/balancetype.xhtml.svn-base | 163 - .../.svn/text-base/catalog.xhtml.svn-base | 95 - .../text-base/catalogdetail.xhtml.svn-base | 108 - .../text-base/chargesgroup.xhtml.svn-base | 223 - .../text-base/messagetemplate.xhtml.svn-base | 99 - .../messagetemplatesdesc.xhtml.svn-base | 126 - .../.svn/text-base/module.xhtml.svn-base | 110 - .../permisosAutorizaciones.xhtml.svn-base | 104 - ...ermisosAutorizacionesAnular.xhtml.svn-base | 163 - .../.svn/text-base/process.xhtml.svn-base | 126 - .../.svn/text-base/services.xhtml.svn-base | 102 - .../.svn/text-base/transaction.xhtml.svn-base | 306 -- .../transactionprocess.xhtml.svn-base | 187 - .../transactionreport.xhtml.svn-base | 148 - .../text-base/transactiontime.xhtml.svn-base | 134 - .../webapp/pages/general/100/.svn/entries | 164 - .../.svn/text-base/_product.xhtml.svn-base | 83 - .../.svn/text-base/_subproduct.xhtml.svn-base | 101 - .../_subproductcurrency.xhtml.svn-base | 82 - .../productdefinition.xhtml.svn-base | 176 - .../webapp/pages/general/101/.svn/entries | 130 - .../.svn/text-base/_charges.xhtml.svn-base | 178 - .../.svn/text-base/_subproduct.xhtml.svn-base | 199 - .../101/.svn/text-base/charges.xhtml.svn-base | 63 - .../main/webapp/pages/general/13/.svn/entries | 130 - .../.svn/text-base/_querycode.xhtml.svn-base | 69 - .../text-base/_transaction.xhtml.svn-base | 61 - .../consultationprocesses.xhtml.svn-base | 170 - .../main/webapp/pages/general/31/.svn/entries | 130 - .../31/.svn/text-base/_branch.xhtml.svn-base | 54 - .../31/.svn/text-base/_office.xhtml.svn-base | 58 - .../text-base/branchandoffice.xhtml.svn-base | 152 - .../main/webapp/pages/general/60/.svn/entries | 198 - .../.svn/text-base/_menulevel.xhtml.svn-base | 77 - .../text-base/_menusublevel.xhtml.svn-base | 95 - .../_menutransactionlevel.xhtml.svn-base | 117 - .../_menutransactionsublevel.xhtml.svn-base | 129 - .../60/.svn/text-base/menu.xhtml.svn-base | 109 - .../webapp/pages/general/audit/.svn/entries | 130 - .../.svn/prop-base/_insdel.xhtml.svn-base | 5 - .../.svn/prop-base/_update.xhtml.svn-base | 5 - .../audit/.svn/prop-base/audit.xhtml.svn-base | 5 - .../.svn/text-base/_insdel.xhtml.svn-base | 52 - .../.svn/text-base/_update.xhtml.svn-base | 62 - .../audit/.svn/text-base/audit.xhtml.svn-base | 138 - .../webapp/pages/general/lov/.svn/entries | 538 --- .../.svn/prop-base/entityLov.xhtml.svn-base | 5 - .../.svn/prop-base/usersLov.xhtml.svn-base | 5 - .../activitypersegmentsLov.xhtml.svn-base | 74 - .../text-base/balanceTypeLov.xhtml.svn-base | 72 - .../.svn/text-base/bpmFlowsLov.xhtml.svn-base | 61 - .../.svn/text-base/bpmRulesLov.xhtml.svn-base | 63 - .../.svn/text-base/branchLov.xhtml.svn-base | 61 - .../.svn/text-base/catalogLov.xhtml.svn-base | 61 - .../.svn/text-base/entityLov.xhtml.svn-base | 54 - .../text-base/menulevelLov.xhtml.svn-base | 66 - .../text-base/menusublevelLov.xhtml.svn-base | 66 - .../messageTemplatesLov.xhtml.svn-base | 65 - .../.svn/text-base/processLov.xhtml.svn-base | 61 - .../.svn/text-base/profileLov.xhtml.svn-base | 63 - .../text-base/transactionLov.xhtml.svn-base | 73 - .../lov/.svn/text-base/userLov.xhtml.svn-base | 61 - .../.svn/text-base/usersLov.xhtml.svn-base | 60 - .../pages/prubaInicioFlujo/.svn/entries | 96 - .../pruebaInicioFlujo.xhtml.svn-base | 23 - .../validarDepositoFlow.xhtml.svn-base | 112 - .../main/webapp/pages/reports/.svn/entries | 62 - .../text-base/reportpentaho.xhtml.svn-base | 26 - .../src/main/webapp/pages/safety/.svn/entries | 62 - ...changepasswordadministrador.xhtml.svn-base | 71 - .../src/main/webapp/pages/sbs/.svn/entries | 37 - .../webapp/pages/sbs/destinos/.svn/entries | 31 - .../pages/sbs/destinos/lov/.svn/entries | 62 - .../.svn/text-base/lovdestinos.xhtml.svn-base | 64 - .../webapp/pages/sbs/empleados/.svn/entries | 31 - .../pages/sbs/empleados/lov/.svn/entries | 62 - .../text-base/lovempleados.xhtml.svn-base | 66 - .../webapp/pages/sbs/solicitud/.svn/entries | 31 - .../pages/sbs/solicitud/lov/.svn/entries | 62 - .../text-base/lovsolicitud.xhtml.svn-base | 59 - .../main/webapp/pages/security/.svn/entries | 470 -- .../_changepasswordExpired.xhtml.svn-base | 28 - .../text-base/activateuser.xhtml.svn-base | 82 - .../text-base/changepassword.xhtml.svn-base | 78 - .../text-base/menuforprofile.xhtml.svn-base | 112 - .../.svn/text-base/modifyuser.xhtml.svn-base | 180 - .../.svn/text-base/profile.xhtml.svn-base | 100 - .../.svn/text-base/profiles.xhtml.svn-base | 111 - .../text-base/securitypolicies.xhtml.svn-base | 107 - .../.svn/text-base/terminal.xhtml.svn-base | 145 - .../transactionperprofile.xhtml.svn-base | 23 - .../.svn/text-base/user.xhtml.svn-base | 184 - .../text-base/userperprofile.xhtml.svn-base | 22 - .../.svn/text-base/userreport.xhtml.svn-base | 20 - .../src/main/webapp/pages/test/.svn/entries | 96 - .../.svn/text-base/bpmcatalog.xhtml.svn-base | 99 - .../.svn/text-base/catalogwpa.xhtml.svn-base | 97 - .../src/main/webapp/resources/.svn/entries | 43 - .../main/webapp/resources/css/.svn/entries | 62 - .../css/.svn/text-base/maia.css.svn-base | 696 --- .../main/webapp/resources/images/.svn/entries | 782 ---- .../prop-base/ajaxloadingbar.gif.svn-base | 5 - .../images/.svn/prop-base/blanck.jpg.svn-base | 5 - .../.svn/prop-base/degrade.gif.svn-base | 5 - .../.svn/prop-base/fondo-old.png.svn-base | 5 - .../prop-base/fondo-sincoar.jpeg.svn-base | 5 - .../images/.svn/prop-base/fondo.png.svn-base | 5 - .../images/.svn/prop-base/green.jpg.svn-base | 5 - .../.svn/prop-base/icono_venta.jpg.svn-base | 5 - .../images/.svn/prop-base/incdec.jpg.svn-base | 5 - .../images/.svn/prop-base/index.gif.svn-base | 5 - .../images/.svn/prop-base/index.jpg.svn-base | 5 - .../prop-base/index_respaldo.jpg.svn-base | 5 - .../.svn/prop-base/inicio.jpeg.svn-base | 5 - .../.svn/prop-base/jurisdiccion.jpg.svn-base | 5 - .../.svn/prop-base/logo-maia.png.svn-base | 5 - .../.svn/prop-base/logoSBS.png.svn-base | 5 - .../.svn/prop-base/logoSBS2.png.svn-base | 5 - .../.svn/prop-base/logo_SBS.png.svn-base | 5 - .../.svn/prop-base/logo_comaco.png.svn-base | 5 - .../.svn/prop-base/logoagua.gif.svn-base | 5 - .../.svn/prop-base/logoblanco.png.svn-base | 5 - .../images/.svn/prop-base/red.jpg.svn-base | 5 - .../text-base/ajaxloadingbar.gif.svn-base | Bin 10819 -> 0 bytes .../images/.svn/text-base/blanck.jpg.svn-base | Bin 760 -> 0 bytes .../.svn/text-base/degrade.gif.svn-base | Bin 1267 -> 0 bytes .../.svn/text-base/fondo-old.png.svn-base | Bin 28025 -> 0 bytes .../text-base/fondo-sincoar.jpeg.svn-base | Bin 129229 -> 0 bytes .../images/.svn/text-base/fondo.png.svn-base | Bin 794892 -> 0 bytes .../images/.svn/text-base/green.jpg.svn-base | Bin 5249 -> 0 bytes .../.svn/text-base/icono_venta.jpg.svn-base | Bin 12436 -> 0 bytes .../images/.svn/text-base/incdec.jpg.svn-base | Bin 7779 -> 0 bytes .../images/.svn/text-base/index.gif.svn-base | Bin 68083 -> 0 bytes .../images/.svn/text-base/index.jpg.svn-base | Bin 135091 -> 0 bytes .../text-base/index_respaldo.jpg.svn-base | Bin 78340 -> 0 bytes .../.svn/text-base/inicio.jpeg.svn-base | Bin 135091 -> 0 bytes .../.svn/text-base/jurisdiccion.jpg.svn-base | Bin 1194 -> 0 bytes .../.svn/text-base/logo-maia.png.svn-base | Bin 4037 -> 0 bytes .../.svn/text-base/logoSBS.png.svn-base | Bin 7995 -> 0 bytes .../.svn/text-base/logoSBS2.png.svn-base | Bin 6484 -> 0 bytes .../.svn/text-base/logo_SBS.png.svn-base | Bin 25321 -> 0 bytes .../.svn/text-base/logo_comaco.png.svn-base | Bin 19938 -> 0 bytes .../.svn/text-base/logoagua.gif.svn-base | Bin 5093 -> 0 bytes .../.svn/text-base/logoblanco.png.svn-base | Bin 43897 -> 0 bytes .../images/.svn/text-base/red.jpg.svn-base | Bin 5307 -> 0 bytes .../webapp/resources/images/bpm/.svn/entries | 99 - .../.svn/prop-base/stackTraceOff.png.svn-base | 5 - .../.svn/prop-base/stackTraceOn.png.svn-base | 5 - .../.svn/text-base/stackTraceOff.png.svn-base | Bin 2813 -> 0 bytes .../.svn/text-base/stackTraceOn.png.svn-base | Bin 1173 -> 0 bytes .../resources/images/bpm/flows/.svn/entries | 1252 ------ .../prop-base/BajaDestruccion-1.png.svn-base | 5 - .../EjecucionApertura-1.png.svn-base | 5 - .../EjecucionAperturaV2-1.png.svn-base | 5 - .../EjecucionAutorizacion-1.png.svn-base | 5 - .../EjecucionAutorizacionV2-1.png.svn-base | 5 - .../EjecucionDevolucion-1.png.svn-base | 5 - .../EjecucionDevolucionV2-1.png.svn-base | 5 - ...jecucionEmisionGuiaTransito-1.png.svn-base | 5 - ...cucionEmisionGuiaTransitoV2-1.png.svn-base | 5 - .../EjecucionImpresion-1.png.svn-base | 5 - .../EjecucionIncrementoArmasV2-1.png.svn-base | 5 - .../EjecucionInspeccion-1.png.svn-base | 5 - .../EjecucionInternacion-1.png.svn-base | 5 - .../EjecucionInternacionV2-1.png.svn-base | 5 - .../prop-base/EjecucionPermiso-1.png.svn-base | 5 - .../EjecucionPermisoV2-1.png.svn-base | 5 - .../prop-base/EjecucionTramite-1.png.svn-base | 5 - .../EjecucionTramiteV2-1.png.svn-base | 5 - .../EjecutarCertificados-1.png.svn-base | 5 - .../EjecutarCertificadosV2-1.png.svn-base | 5 - .../EjecutarInscripcion-1.png.svn-base | 5 - .../EjecutarInscripcionV2-1.png.svn-base | 5 - ...EmisionDocumentoHabilitante-1.png.svn-base | 5 - ...isionDocumentoHabilitanteV2-1.png.svn-base | 5 - .../.svn/prop-base/EnvioArmas-1.png.svn-base | 5 - .../PlanificacionInspeccion-1.png.svn-base | 5 - .../PlanificarInspeccion-1.png.svn-base | 5 - .../prop-base/RecepcionArmas-1.png.svn-base | 5 - .../prop-base/RegistroDecomiso-1.png.svn-base | 5 - .../RegistroDecomisos-1.png.svn-base | 5 - .../prop-base/cargaDeposito-2.png.svn-base | 5 - .../prop-base/cargaDepositoV2-1.png.svn-base | 5 - .../.svn/prop-base/decomiso-1.png.svn-base | 5 - ...jecucionCertificadoFiscalia-1.png.svn-base | 5 - ...ecepcionSolicitudRequisitos-1.png.svn-base | 5 - ...epcionSolicitudRequisitosV2-1.png.svn-base | 5 - .../text-base/BajaDestruccion-1.png.svn-base | Bin 23183 -> 0 bytes .../EjecucionApertura-1.png.svn-base | Bin 16564 -> 0 bytes .../EjecucionAperturaV2-1.png.svn-base | Bin 16530 -> 0 bytes .../EjecucionAutorizacion-1.png.svn-base | Bin 23688 -> 0 bytes .../EjecucionAutorizacionV2-1.png.svn-base | Bin 32447 -> 0 bytes .../EjecucionDevolucion-1.png.svn-base | Bin 17969 -> 0 bytes .../EjecucionDevolucionV2-1.png.svn-base | Bin 18400 -> 0 bytes ...jecucionEmisionGuiaTransito-1.png.svn-base | Bin 25841 -> 0 bytes ...cucionEmisionGuiaTransitoV2-1.png.svn-base | Bin 25333 -> 0 bytes .../EjecucionImpresion-1.png.svn-base | Bin 15231 -> 0 bytes .../EjecucionIncrementoArmasV2-1.png.svn-base | Bin 16398 -> 0 bytes .../EjecucionInspeccion-1.png.svn-base | Bin 16304 -> 0 bytes .../EjecucionInternacion-1.png.svn-base | Bin 18031 -> 0 bytes .../EjecucionInternacionV2-1.png.svn-base | Bin 16744 -> 0 bytes .../text-base/EjecucionPermiso-1.png.svn-base | Bin 12520 -> 0 bytes .../EjecucionPermisoV2-1.png.svn-base | Bin 11587 -> 0 bytes .../text-base/EjecucionTramite-1.png.svn-base | Bin 42553 -> 0 bytes .../EjecucionTramiteV2-1.png.svn-base | Bin 41526 -> 0 bytes .../EjecutarCertificados-1.png.svn-base | Bin 16266 -> 0 bytes .../EjecutarCertificadosV2-1.png.svn-base | Bin 15662 -> 0 bytes .../EjecutarInscripcion-1.png.svn-base | Bin 17263 -> 0 bytes .../EjecutarInscripcionV2-1.png.svn-base | Bin 16347 -> 0 bytes ...EmisionDocumentoHabilitante-1.png.svn-base | Bin 29687 -> 0 bytes ...isionDocumentoHabilitanteV2-1.png.svn-base | Bin 42488 -> 0 bytes .../.svn/text-base/EnvioArmas-1.png.svn-base | Bin 16096 -> 0 bytes .../PlanificacionInspeccion-1.png.svn-base | Bin 16634 -> 0 bytes .../PlanificarInspeccion-1.png.svn-base | Bin 19122 -> 0 bytes .../text-base/RecepcionArmas-1.png.svn-base | Bin 9677 -> 0 bytes .../text-base/RegistroDecomiso-1.png.svn-base | Bin 23511 -> 0 bytes .../RegistroDecomisos-1.png.svn-base | Bin 16168 -> 0 bytes .../text-base/cargaDeposito-2.png.svn-base | Bin 19689 -> 0 bytes .../text-base/cargaDepositoV2-1.png.svn-base | Bin 18975 -> 0 bytes .../.svn/text-base/decomiso-1.png.svn-base | Bin 9217 -> 0 bytes ...jecucionCertificadoFiscalia-1.png.svn-base | Bin 12810 -> 0 bytes ...ecepcionSolicitudRequisitos-1.png.svn-base | Bin 26048 -> 0 bytes ...epcionSolicitudRequisitosV2-1.png.svn-base | Bin 26829 -> 0 bytes .../resources/images/icons/.svn/entries | 266 -- .../icons/.svn/prop-base/close.png.svn-base | 5 - .../icons/.svn/prop-base/f1.png.svn-base | 5 - .../icons/.svn/prop-base/f10.png.svn-base | 5 - .../icons/.svn/prop-base/f2.png.svn-base | 5 - .../icons/.svn/prop-base/f4.png.svn-base | 5 - .../icons/.svn/prop-base/f5.png.svn-base | 5 - .../icons/.svn/prop-base/preview.png.svn-base | 5 - .../icons/.svn/text-base/close.png.svn-base | Bin 3931 -> 0 bytes .../icons/.svn/text-base/f1.png.svn-base | Bin 1389 -> 0 bytes .../icons/.svn/text-base/f10.png.svn-base | Bin 931 -> 0 bytes .../icons/.svn/text-base/f2.png.svn-base | Bin 1313 -> 0 bytes .../icons/.svn/text-base/f4.png.svn-base | Bin 1263 -> 0 bytes .../icons/.svn/text-base/f5.png.svn-base | Bin 1084 -> 0 bytes .../icons/.svn/text-base/preview.png.svn-base | Bin 3837 -> 0 bytes .../src/main/webapp/resources/js/.svn/entries | 300 -- .../js/.svn/text-base/bpm.js.svn-base | 115 - .../js/.svn/text-base/calendar_es.js.svn-base | 29 - .../.svn/text-base/datatable_es.js.svn-base | 10 - .../js/.svn/text-base/keyevent.js.svn-base | 290 -- .../js/.svn/text-base/maia.js.netbeans-base | 144 - .../js/.svn/text-base/maia.js.svn-base | 144 - .../.svn/text-base/maiaworkspace.js.svn-base | 99 - .../js/.svn/text-base/script.js.svn-base | 45 - .../js/.svn/text-base/validator.js.svn-base | 24 - .../resources/maiaComponents/.svn/entries | 504 --- .../text-base/alfrescoButton.xhtml.svn-base | 22 - .../alfrescoDocDownload.xhtml.svn-base | 22 - .../text-base/alfrescoFolder.xhtml.svn-base | 22 - .../text-base/alfrescoPopup.xhtml.svn-base | 43 - .../text-base/alfrescoUpload.xhtml.svn-base | 34 - .../text-base/commentBpmTask.xhtml.svn-base | 67 - .../commentsBpmButton.xhtml.svn-base | 18 - .../text-base/commentsPopup.xhtml.svn-base | 94 - .../text-base/dialogControls.xhtml.svn-base | 28 - .../text-base/lovTransaction.xhtml.svn-base | 34 - .../text-base/pageControls.xhtml.svn-base | 59 - .../.svn/text-base/pageEvents.xhtml.svn-base | 74 - .../text-base/reportPentaho.xhtml.svn-base | 26 - .../.svn/text-base/signature.xhtml.svn-base | 38 - .../primefaces-maia-theme/.svn/entries | 65 - .../.svn/text-base/theme.css.svn-base | 1 - .../primefaces-maia-theme/images/.svn/entries | 538 --- .../ui-bg_flat_0_aaaaaa_40x100.png.svn-base | 5 - .../ui-bg_flat_55_fbec88_40x100.png.svn-base | 5 - .../ui-bg_glass_75_d0e5f5_1x400.png.svn-base | 5 - ...ighlight-hard_55_3c73bb_1x100.png.svn-base | 5 - ...ighlight-hard_85_5e9ed0_1x100.png.svn-base | 5 - ...-bg_inset-hard_0_ffffff_1x100.png.svn-base | 5 - ...g_inset-hard_100_f5f8f9_1x100.png.svn-base | 5 - ...bg_inset-soft_95_f2c8b7_1x100.png.svn-base | 5 - .../ui-icons_217bc0_256x240.png.svn-base | 5 - .../ui-icons_2e83ff_256x240.png.svn-base | 5 - .../ui-icons_3e8d36_256x240.png.svn-base | 5 - .../ui-icons_469bdd_256x240.png.svn-base | 5 - .../ui-icons_cd0a0a_256x240.png.svn-base | 5 - .../ui-icons_d8e7f3_256x240.png.svn-base | 5 - .../ui-icons_ffffff_256x240.png.svn-base | 5 - .../ui-bg_flat_0_aaaaaa_40x100.png.svn-base | Bin 212 -> 0 bytes .../ui-bg_flat_55_fbec88_40x100.png.svn-base | Bin 206 -> 0 bytes .../ui-bg_glass_75_d0e5f5_1x400.png.svn-base | Bin 336 -> 0 bytes ...ighlight-hard_55_3c73bb_1x100.png.svn-base | Bin 316 -> 0 bytes ...ighlight-hard_85_5e9ed0_1x100.png.svn-base | Bin 331 -> 0 bytes ...-bg_inset-hard_0_ffffff_1x100.png.svn-base | Bin 203 -> 0 bytes ...g_inset-hard_100_f5f8f9_1x100.png.svn-base | Bin 333 -> 0 bytes ...bg_inset-soft_95_f2c8b7_1x100.png.svn-base | Bin 366 -> 0 bytes .../ui-icons_217bc0_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_2e83ff_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_3e8d36_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_469bdd_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_cd0a0a_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_d8e7f3_256x240.png.svn-base | Bin 4549 -> 0 bytes .../ui-icons_ffffff_256x240.png.svn-base | Bin 6299 -> 0 bytes frontend/src/test/.svn/entries | 34 - frontend/src/test/java/.svn/entries | 28 - frontend/src/test/resources/.svn/entries | 28 - reports-jsf/.svn/dir-prop-base | 6 - reports-jsf/.svn/entries | 120 - .../.svn/text-base/.classpath.svn-base | 8 - reports-jsf/.svn/text-base/.project.svn-base | 29 - reports-jsf/accounting/.svn/entries | 34 - reports-jsf/accounting/reports/.svn/entries | 28 - .../accounting/subreports/.svn/entries | 28 - reports-jsf/armas/.svn/entries | 34 - reports-jsf/armas/reports/.svn/entries | 1762 -------- .../text-base/actaDevolucion.jrxml.svn-base | 608 --- .../text-base/actaDevolucion2.jrxml.svn-base | 647 --- .../text-base/actaEntregaArmas.jrxml.svn-base | 516 --- .../actaEntregaRecepcionArmas.jrxml.svn-base | 756 ---- .../actaRecepciondeArmas.jrxml.svn-base | 544 --- .../aperturaAgenciasSucursales.jrxml.svn-base | 1081 ----- .../certificadoArmaCrear.jrxml.svn-base | 468 -- .../text-base/certificadoArmas.jrxml.svn-base | 1079 ----- .../text-base/certificadosArma.jrxml.svn-base | 651 --- .../certificadosArmas.jrxml.svn-base | 523 --- .../text-base/comprobanteCaja.jrxml.svn-base | 379 -- .../controlInventario.jrxml.svn-base | 318 -- .../text-base/destruccionArmas.jrxml.svn-base | 823 ---- .../text-base/entregaArmasacta.jrxml.svn-base | 909 ---- .../estadisticastramites.jrxml.svn-base | 457 -- .../text-base/fichaTecArmas.jrxml.svn-base | 1310 ------ .../fichaTecArmasColeccion.jrxml.svn-base | 1257 ------ .../fichaTecArmasNoLetales.jrxml.svn-base | 1285 ------ .../text-base/generalReport.jrxml.svn-base | 965 ---- .../generalReportHabilita.jrxml.svn-base | 948 ---- .../guiaLibreTransito.jrxml.svn-base | 1049 ----- ...ingresoVentaArmasExplosivos.jrxml.svn-base | 1350 ------ .../inspeccionesRealizadas.jrxml.svn-base | 749 ---- .../liquidacionEconomica.jrxml.svn-base | 1218 ------ .../ordenTrabajoCustodios.jrxml.svn-base | 646 --- .../text-base/planInspeccion.jrxml.svn-base | 676 --- .../.svn/text-base/prue.jrxml.svn-base | 260 -- .../text-base/pruebaAndres.jrxml.svn-base | 260 -- .../registroBalistico.jrxml.svn-base | 688 --- .../registrodecomisomaterial.jrxml.svn-base | 1226 ------ .../.svn/text-base/repo2.jrxml.svn-base | 998 ----- .../reporteAgenciaSucursal.jrxml.svn-base | 512 --- .../text-base/reporteArmas.jrxml.svn-base | 564 --- .../reporteArmasCompania.jrxml.svn-base | 257 -- .../reporteCertificado.jrxml.svn-base | 762 ---- .../reporteCertificadoNoLetal.jrxml.svn-base | 674 --- .../reporteCompaniaInscrita.jrxml.svn-base | 453 -- .../reporteCompaniasCControl.jrxml.svn-base | 379 -- .../text-base/reporteDecomiso.jrxml.svn-base | 1156 ----- .../reporteHistoricoArmas.jrxml.svn-base | 594 --- ...eporteImportacionProduccion.jrxml.svn-base | 760 ---- .../reporteInscripcion.jrxml.svn-base | 239 - .../reporteNumeroPermisos.jrxml.svn-base | 422 -- ...ePermisosAutorizacionesSusp.jrxml.svn-base | 426 -- ...isosAutorizacionesxSuspCcon.jrxml.svn-base | 452 -- .../text-base/reporteTipoArmas.jrxml.svn-base | 572 --- .../reporteTipoArmasCompania.jrxml.svn-base | 292 -- .../reporteTipoAutorizacion.jrxml.svn-base | 413 -- .../reporteTipoFabricacion.jrxml.svn-base | 369 -- .../reporteTremiteXCentro.jrxml.svn-base | 737 ---- .../.svn/text-base/salva.jrxml.svn-base | 657 --- reports-jsf/armas/subreports/.svn/entries | 470 -- .../armasLeidasExistenBodega.jrxml.svn-base | 387 -- .../armasLeidasNoExistenBodega.jrxml.svn-base | 388 -- .../armasNoLeidasExistenBodega.jrxml.svn-base | 384 -- .../custodiosSubreports.jrxml.svn-base | 131 - .../text-base/fichaTecArmasSub.jrxml.svn-base | 74 - .../firmaGeneralReport.jrxml.svn-base | 32 - .../text-base/firmaUsuario.jrxml.svn-base | 40 - ...formacionAgenciasSucursales.jrxml.svn-base | 290 -- .../text-base/informacionArmas.jrxml.svn-base | 475 -- .../informacionGuardias.jrxml.svn-base | 191 - .../text-base/listarDocumentos.jrxml.svn-base | 645 --- .../registroBalisticoSub.jrxml.svn-base | 225 - .../.svn/text-base/requisitos.jrxml.svn-base | 164 - reports-jsf/bin/.svn/entries | 28 - reports-jsf/general/.svn/entries | 34 - reports-jsf/general/reports/.svn/entries | 96 - .../.svn/text-base/audit_final.jrxml.svn-base | 350 -- .../.svn/text-base/currency.jrxml.svn-base | 108 - reports-jsf/general/subreports/.svn/entries | 28 - reports-jsf/images/.svn/entries | 164 - .../prop-base/comandoconjunto.jpg.svn-base | 5 - .../.svn/prop-base/logoSBS.png.svn-base | 5 - .../logo_financieraavanza.png.svn-base | 5 - .../.svn/prop-base/selloarmas.JPG.svn-base | 5 - .../text-base/comandoconjunto.jpg.svn-base | Bin 399746 -> 0 bytes .../.svn/text-base/logoSBS.png.svn-base | Bin 7995 -> 0 bytes .../logo_financieraavanza.png.svn-base | Bin 17646 -> 0 bytes .../.svn/text-base/selloarmas.JPG.svn-base | Bin 33521 -> 0 bytes reports-jsf/loan/.svn/entries | 34 - reports-jsf/loan/reports/.svn/entries | 28 - reports-jsf/loan/subreports/.svn/entries | 28 - reports-jsf/security/.svn/entries | 34 - reports-jsf/security/reports/.svn/entries | 130 - .../transactionsperprofile.jrxml.svn-base | 157 - .../.svn/text-base/user.jrxml.svn-base | 219 - .../text-base/userperprofile.jrxml.svn-base | 167 - reports-jsf/security/subreports/.svn/entries | 198 - .../menulevelsubreport.jrxml.svn-base | 92 - .../menusublevelsubreport.jrxml.svn-base | 72 - ...ansactionmenulevelsubreport.jrxml.svn-base | 89 - ...actionmenusublevelsubreport.jrxml.svn-base | 89 - .../userprofilesubreport.jrxml.svn-base | 149 - reports-jsf/style/.svn/entries | 62 - .../style/.svn/text-base/style.jrtx.svn-base | 26 - tools/.svn/entries | 31 - tools/hbm/.svn/entries | 99 - tools/hbm/.svn/text-base/.pmd.svn-base | 613 --- tools/hbm/.svn/text-base/pom.xml.svn-base | 67 - tools/hbm/src/.svn/entries | 31 - tools/hbm/src/main/.svn/entries | 34 - tools/hbm/src/main/java/.svn/entries | 31 - tools/hbm/src/main/java/com/.svn/entries | 31 - tools/hbm/src/main/java/com/fp/.svn/entries | 31 - .../hbm/src/main/java/com/fp/hbm/.svn/entries | 37 - .../java/com/fp/hbm/bgenerator/.svn/entries | 238 - .../text-base/AbstractColumn.java.svn-base | 336 -- .../text-base/AbstractMapper.java.svn-base | 548 --- .../BeanGenerateOperation.java.svn-base | 27 - .../.svn/text-base/HBMapper.java.svn-base | 184 - .../.svn/text-base/MappingType.java.svn-base | 39 - .../.svn/text-base/Reference.java.svn-base | 112 - .../com/fp/hbm/bgenerator/ann/.svn/entries | 96 - .../ann/.svn/text-base/Mapper.java.svn-base | 259 -- .../.svn/text-base/MapperColumn.java.svn-base | 49 - .../com/fp/hbm/bgenerator/xml/.svn/entries | 96 - .../xml/.svn/text-base/Mapper.java.svn-base | 313 -- .../.svn/text-base/MapperColumn.java.svn-base | 71 - .../main/java/com/fp/hbm/helper/.svn/entries | 164 - .../text-base/HqlStatementHQL.java.svn-base | 415 -- .../PersistenceHelperHQL.java.svn-base | 302 -- .../PersistenceManagerHQL.java.svn-base | 340 -- .../PersistenceMetadata.java.svn-base | 300 -- .../java/com/fp/hbm/persistence/.svn/entries | 300 -- .../.svn/text-base/TEntity1.java.svn-base | 277 -- .../.svn/text-base/TEntityKey1.java.svn-base | 116 - .../.svn/text-base/TFields1.java.svn-base | 222 - .../.svn/text-base/TFieldsKey1.java.svn-base | 141 - .../.svn/text-base/TgeneEntity.java.svn-base | 316 -- .../text-base/TgeneEntityKey.java.svn-base | 124 - .../.svn/text-base/TgeneFields.java.svn-base | 238 - .../text-base/TgeneFieldsKey.java.svn-base | 151 - tools/hbm/src/main/resources/.svn/entries | 133 - .../.svn/text-base/cfg.properties.svn-base | 6 - .../text-base/hibernateFlip.cfg.xml.svn-base | 24 - .../.svn/text-base/log4j.properties.svn-base | 10 - tools/hbm/src/main/resources/com/.svn/entries | 31 - .../src/main/resources/com/fp/.svn/entries | 31 - .../main/resources/com/fp/hbm/.svn/entries | 31 - .../com/fp/hbm/persistence/.svn/entries | 96 - .../.svn/text-base/TEntity.hbm.xml.svn-base | 44 - .../.svn/text-base/TFields.hbm.xml.svn-base | 38 - 3531 files changed, 616017 deletions(-) delete mode 100644 .svn/entries delete mode 100644 .svn/text-base/pom.xml.svn-base delete mode 100644 .svn/text-base/transport.xsd.svn-base delete mode 100644 appletFirma/.svn/entries delete mode 100644 appletFirma/.svn/prop-base/pom.xml.svn-base delete mode 100644 appletFirma/.svn/text-base/pom.xml.svn-base delete mode 100644 appletFirma/lib/.svn/entries delete mode 100644 appletFirma/lib/.svn/prop-base/itextpdf-5.5.3.jar.svn-base delete mode 100644 appletFirma/lib/.svn/text-base/itextpdf-5.5.3.jar.svn-base delete mode 100644 appletFirma/src/.svn/entries delete mode 100644 appletFirma/src/main/.svn/entries delete mode 100644 appletFirma/src/main/java/.svn/entries delete mode 100644 appletFirma/src/main/java/com/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.form.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.netbeans-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.netbeans-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/CertificateUtils.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmMessages.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmasException.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/CertificateUtils.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmMessages.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmasException.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/component/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/component/.svn/prop-base/PasswordDialog.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/component/.svn/text-base/PasswordDialog.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/dto/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/dto/.svn/prop-base/TfirmDatosFirmante.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/dto/.svn/text-base/TfirmDatosFirmante.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/entries delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/AppleKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/FileKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProviderFactory.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/LinuxKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/MockKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/PKCS11KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/SimpleCallbackHandler.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK6KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/AppleKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/FileKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProviderFactory.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/LinuxKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/MockKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/PKCS11KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/SimpleCallbackHandler.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK6KeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsKeyStoreProvider.java.svn-base delete mode 100644 appletFirma/src/main/resources/.svn/entries delete mode 100644 appletFirma/src/main/resources/.svn/prop-base/firmessages_es.properties.svn-base delete mode 100644 appletFirma/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base delete mode 100644 appletFirma/src/test/.svn/entries delete mode 100644 appletFirma/src/test/java/.svn/entries delete mode 100644 appletFirma/src/test/java/com/.svn/entries delete mode 100644 appletFirma/src/test/java/com/fp/.svn/entries delete mode 100644 appletFirma/src/test/java/com/fp/firma/.svn/entries delete mode 100644 appletFirma/src/test/java/com/fp/firma/applet/.svn/entries delete mode 100644 appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/AppTest.java.svn-base delete mode 100644 appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/PruebaFirma.java.svn-base delete mode 100644 appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/AppTest.java.svn-base delete mode 100644 appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/PruebaFirma.java.svn-base delete mode 100644 appletFirma/target/classes/.netbeans_automatic_build delete mode 100644 appletFirma/target/test-classes/.netbeans_automatic_build delete mode 100644 base/.svn/entries delete mode 100644 base/.svn/text-base/pom.xml.svn-base delete mode 100644 base/bpm/.svn/entries delete mode 100644 base/bpm/.svn/text-base/pom.xml.svn-base delete mode 100644 base/bpm/bpmlib/.svn/dir-prop-base delete mode 100644 base/bpm/bpmlib/.svn/entries delete mode 100644 base/bpm/bpmlib/.svn/text-base/pom.xml.netbeans-base delete mode 100644 base/bpm/bpmlib/.svn/text-base/pom.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/config/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-ds.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-mysql-ds.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-oracle-ds.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Common.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/CustomSystemEventListener.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Flujo.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/ProcessUtil.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/RegisterFlow.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/BPMProperties.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/JbpmBean.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/LogMailBean.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/JbpmBeanLocal.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/LogMailBeanLocal.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/FlowUtil.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/RuleUtil.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailCommand.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailParameters.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThread.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThreadWithAttachment.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/Mailer.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowDetail.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlows.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowsResults.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/RuleTrigger.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionLogResults.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionsLog.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserLov.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserToGroup.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionList.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionListGroup.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasks.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasksGroup.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowActivitySave.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowEnd.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowMonitor.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/RefreshKnowledgeBase.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/Rules.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/text-base/EstadoSolicitudQuery.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/AsignedTasks.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/ClaimTask.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/CompleteTask.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/StartTask.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskDetail.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskHistory.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskPending.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskServerStatus.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/DownloadFileQuery.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/ExportFlows.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/MaiaWorkItemHandler.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskCleaner.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskUser.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/HumanTaskClient.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomDeploymentService.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomIdentityProvider.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaApplicationScopeProducer.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaUserGroupCallback.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/SimpleWorkItemHandlerProducer.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/RuleTrigger.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlow.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEnd.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEndNewOnly.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemory.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemoryNewOnly.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowNewOnly.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddGroups.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddResource.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddUsers.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/ServerManager.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskClaim.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComments.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComplete.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskDelegate.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskStart.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskUpdater.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/resources/.svn/text-base/ChangeSet.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/.svn/text-base/bpmmessages.properties.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/.svn/text-base/change-set.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/.svn/text-base/flows.xml.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/casoprueba.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/catalogoprueba.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/final.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/finalwpa.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/nuevoProceso.bpmn2.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/process.bpmn2.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/prueba.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/pviaticos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/subproceso.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/taskasign.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/test.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testuno.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testwpa.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticosmanual.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/BajaDestruccion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/CargaDeposito.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionApertura.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionAutorizacion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionDevolucion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionEmisionGuiaTransito.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionImpresion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionIncrementoArmas.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInspeccion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInternacion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionPermiso.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionTramite.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarCertificados.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarInscripcion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EmisionDocumentoHabilitante.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EnvioArmas.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/PlanificacionInspeccion.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionArmas.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionSolicitudRequisitos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RegistroDecomiso.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/autorizarDocumentoCarlos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomisarArmaCarlos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomiso.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/notificacionAnulacionTramite.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitud.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudCarlos.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudFlow.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.netbeans-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAperturaV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAutorizacionV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionCertificadoFiscalia.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionDevolucionV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionEmisionGuiaTransitoV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionIncrementoArmasV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionInternacionV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionPermisoV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionTramiteV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarCertificadosV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarInscripcionV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EmisionDocumentoHabilitanteV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionArmasV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionSolicitudRequisitosV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/TraspasoDominioV2.bpmn.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/entries delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNARCOMITE.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNAROFICIAL.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAMONTO.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPERSONAS.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPLAZO.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDATASA.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/WPA.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/catalogo.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/gf.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/rcatalogo.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNARCOMITE.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNAROFICIAL.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDAMONTO.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDAPERSONAS.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDAPLAZO.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDATASA.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/WPA.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/catalogo.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/gf.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/rcatalogo.xls.svn-base delete mode 100644 base/bpm/bpmlib/src/test/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/test/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/test/com/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/test/com/fp/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/entries delete mode 100644 base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/bpmlib/src/test/resources/.svn/entries delete mode 100644 base/bpm/flows/.svn/entries delete mode 100644 base/bpm/flows/.svn/text-base/pom.xml.svn-base delete mode 100644 base/bpm/flows/src/.svn/entries delete mode 100644 base/bpm/flows/src/config/.svn/entries delete mode 100644 base/bpm/flows/src/config/.svn/text-base/jbpm-ds.xml.svn-base delete mode 100644 base/bpm/flows/src/flows/.svn/entries delete mode 100644 base/bpm/flows/src/flows/flows/.svn/entries delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/Looping.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/ampliacionperiodogracia.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncredito.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncreditonova.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/basic.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/basic1.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/calificacion.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/calificacionnovacion.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/casoprueba.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/constituciongarantias.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/credit.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/flinal.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/flow5.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/instrumnovacion.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/levantamientodefgar.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/levantamientopargar.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/mapaBEV.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/matrizevaluacion.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/n1.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/n2.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/n3.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/n4.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/nomenclatura.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/precalificacion.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/seguimientoycontrol.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/taskasign.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/test.bpmn.svn-base delete mode 100644 base/bpm/flows/src/flows/flows/.svn/text-base/testwpa.bpmn.svn-base delete mode 100644 base/bpm/flows/src/rules/.svn/entries delete mode 100644 base/bpm/flows/src/rules/.svn/prop-base/WPA.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/.svn/prop-base/gf.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/.svn/text-base/WPA.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/.svn/text-base/gf.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/ASIGNARCOMITE/.svn/entries delete mode 100644 base/bpm/flows/src/rules/ASIGNARCOMITE/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/ASIGNARCOMITE/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/ASIGNAROFICIAL/.svn/entries delete mode 100644 base/bpm/flows/src/rules/ASIGNAROFICIAL/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/ASIGNAROFICIAL/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/TEST1/.svn/entries delete mode 100644 base/bpm/flows/src/rules/TEST1/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/TEST1/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAMONTO/.svn/entries delete mode 100644 base/bpm/flows/src/rules/VALIDAMONTO/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAMONTO/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAPERSONA/.svn/entries delete mode 100644 base/bpm/flows/src/rules/VALIDAPERSONA/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAPERSONA/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAPLAZO/.svn/entries delete mode 100644 base/bpm/flows/src/rules/VALIDAPLAZO/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDAPLAZO/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDATASA/.svn/entries delete mode 100644 base/bpm/flows/src/rules/VALIDATASA/.svn/prop-base/asign.xls.svn-base delete mode 100644 base/bpm/flows/src/rules/VALIDATASA/.svn/text-base/asign.xls.svn-base delete mode 100644 base/bpm/simple/.svn/dir-prop-base delete mode 100644 base/bpm/simple/.svn/entries delete mode 100644 base/bpm/simple/.svn/text-base/.pmd.svn-base delete mode 100644 base/bpm/simple/.svn/text-base/pom.xml.svn-base delete mode 100644 base/bpm/simple/src/.svn/entries delete mode 100644 base/bpm/simple/src/main/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/action/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/action/.svn/text-base/TaskAction.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Kind.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Responses.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/TaskInfo.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/text-base/ProcessInstanceMeta.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/Asign.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/DataMap.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/FlowClass.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/package-info.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipient.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipientGroup.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/test/.svn/entries delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RequestTester.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RuleTester.java.svn-base delete mode 100644 base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/package-info.java.svn-base delete mode 100644 base/business/.svn/entries delete mode 100644 base/business/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/armas/.svn/dir-prop-base delete mode 100644 base/business/armas/.svn/entries delete mode 100644 base/business/armas/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/armas/src/.svn/entries delete mode 100644 base/business/armas/src/main/.svn/entries delete mode 100644 base/business/armas/src/main/java/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/mail/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccionVentaTemp.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/ScheduleNotificacionCliente.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/SolicitanteDireccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/prop-base/ControlArmasException.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/text-base/ControlArmasException.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/text-base/DocumentoQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/prop-base/ArmasQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/text-base/ArmasQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/text-base/OrdenTrabajoQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/prop-base/SolicitudSecuencial.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/ArmasXPersonaQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashHistoricoSecuencial.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashManagementQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CertificadoFiscaliaSecuencial.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaDatosInspeccionPlan.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaInfoVerificarDocumentos.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/SolicitudSecuencial.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarArmaQuery.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarInfoCertificado.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ArmasId.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ColaImpresion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaImpresionProceso.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaLogin.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaXpathDocumento.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ImagenPersona.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/JefeCentroImpresion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ArmasId.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ColaImpresion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaImpresionProceso.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaLogin.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaXpathDocumento.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/DatosPerson.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ImagenPersona.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/JefeCentroImpresion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ArmaUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/CatalogoUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ColaImpresionUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/PersonaUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ArmaUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/CatalogoUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ColaImpresionUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/InstitucionSnapEnum.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/PersonaUtil.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/ArmasRegistro.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/CambiarUsuarioArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ArmasRegistro.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/AuxCodigoArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/CambiarUsuarioArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArmaExcel.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ReporteArmasDecomisadas.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/Calificacion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluacionPsicologica.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluarGuardia.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Movimiento.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Sancionar.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/VentasVariasArmasMovimiento.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/ModificarPlanificacionInspeccionSave.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/PlanificacionInspeccionSave.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/text-base/PeopleFastSave.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/ActualizaReimpresion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/CustodiaTemporal.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaRecepcion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaTransaccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoMaterial.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DocumentoHabilitanteTransaccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/OrdenTrabajoSave.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/RegistroInspeccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Requisitos.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/CompletarDesaduanizacion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/ImportacionProduccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/IngresoInventario.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/Inventarios.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/PreviaImportacionDesgloce.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/SolicitudImportacion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DesvinculaTagArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DocumentoDatos.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/IngresaLectura.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/VinculaTagArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DesvinculaTagArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoDatos.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoHabilitanteDatos.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/IngresaLectura.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/VinculaTagArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventBajaDestrucc.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventario.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarPlanificacion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarRutaArchivo.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/AplicarSancion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/EmitirComprobanteCaja.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FechaCaducidadEstadoArma.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FinalizarDocumentoHabilitante.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/GenerarValorACancelar.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtieneCentroControl.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtienerCategoriaTramite.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RechazarActa.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RequiereInspeccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoArchivoControl.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoDocumento.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAnulado.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAprobado.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValAutorizacionPreviaImporta.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaFlujoCargaDeposito.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaInspeccion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionDecomiso.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupo.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupoDecRecep.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarCustodios.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarUnidadInstitucion.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/VerificarCantidadArmas.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/entries delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominio.java.svn-base delete mode 100644 base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominioAnula.java.svn-base delete mode 100644 base/business/armas/src/test/.svn/entries delete mode 100644 base/business/armas/src/test/java/.svn/entries delete mode 100644 base/business/armas/src/test/java/com/.svn/entries delete mode 100644 base/business/armas/src/test/java/com/fp/.svn/entries delete mode 100644 base/business/armas/src/test/java/com/fp/base/.svn/entries delete mode 100644 base/business/armas/src/test/java/com/fp/base/business/.svn/entries delete mode 100644 base/business/general/.svn/dir-prop-base delete mode 100644 base/business/general/.svn/entries delete mode 100644 base/business/general/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/general/src/.svn/entries delete mode 100644 base/business/general/src/main/.svn/entries delete mode 100644 base/business/general/src/main/java/.svn/entries delete mode 100644 base/business/general/src/main/java/com/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/application/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/application/.svn/text-base/ClientApproval.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/application/.svn/text-base/OfficerDescription.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/db/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/exception/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/exception/.svn/text-base/ExceptionMessage.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/AccountNumber.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/ArrayHelper.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/MenuHelper.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/PropertiesHelper.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/SolicitudeNumber.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/StringHelper.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/keygen/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/AbstractKeyGen.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SequenceKey.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SubSequenceKey.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/ValidateRates.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/VerifyOverlapSubProductRatesAmount.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/query/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/text-base/RatesDetail.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/record/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/record/.svn/text-base/FieldData.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/record/.svn/text-base/ParserRecord.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/record/.svn/text-base/Record.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/.svn/text-base/SubProductcurrencyDesc.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/BalanceTypeProvision.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteMaturation.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionLevel.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionMixPages.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionSubLevel.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/ExecuteSQL.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovOfficer.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovTransactionEvent.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/PrincipalInstallRates.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/CriteriaValidator.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DataBaseFile.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DaysAccountingDate.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/HeaderSolicitude.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/InfoDataFile.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovAccount.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomer.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomerMulti.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovOfficial.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/ModuleDesc.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/SubProductDesc.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/VerifyClientData.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ObtainTechnicalPatrimony.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ProductsByClient.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/ProductPanels.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/TransactionPanels.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/ChangeAccountingDate.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/EraseCache.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/GenerateAccountingDate.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapChargesAmount.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapSubProductChargesAmount.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/text-base/ChangeScheduleAccountingdate.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/scheduler/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/MiaScheduler.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/SchedulerJob.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/score/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/FileScore.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeFileScore.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeScoreHeaderDetail.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadFileScoreThread.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadLineScoreThread.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.netbeans-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseSession.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.netbeans-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CreateInternalCodeUser.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceMenu.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceUser.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Menu.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Politics.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogon.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogonCas.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/CompleteAudit.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/QueryAudit.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/SearchUser.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/TransactionSearch.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/query/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplates.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplatesDesc.java.svn-base delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/save/.svn/entries delete mode 100644 base/business/general/src/main/java/com/fp/general/templates/save/.svn/text-base/SaveTemplatesDesc.java.svn-base delete mode 100644 base/business/general/src/main/resources/.svn/entries delete mode 100644 base/business/general/src/main/resources/.svn/text-base/generalmessages_es.properties.svn-base delete mode 100644 base/business/general/src/test/.svn/entries delete mode 100644 base/business/general/src/test/java/.svn/entries delete mode 100644 base/business/general/src/test/resources/.svn/entries delete mode 100644 base/business/log/.svn/dir-prop-base delete mode 100644 base/business/log/.svn/entries delete mode 100644 base/business/log/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/log/src/.svn/entries delete mode 100644 base/business/log/src/main/.svn/entries delete mode 100644 base/business/log/src/main/java/.svn/entries delete mode 100644 base/business/log/src/main/java/com/.svn/entries delete mode 100644 base/business/log/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/log/src/main/java/com/fp/log/.svn/entries delete mode 100644 base/business/log/src/main/java/com/fp/log/.svn/text-base/LogBook.java.svn-base delete mode 100644 base/business/log/src/main/java/com/fp/log/.svn/text-base/package-info.java.svn-base delete mode 100644 base/business/log/src/main/resources/.svn/entries delete mode 100644 base/business/log/src/test/.svn/entries delete mode 100644 base/business/log/src/test/java/.svn/entries delete mode 100644 base/business/log/src/test/resources/.svn/entries delete mode 100644 base/business/person/.svn/dir-prop-base delete mode 100644 base/business/person/.svn/entries delete mode 100644 base/business/person/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/person/src/.svn/entries delete mode 100644 base/business/person/src/main/.svn/entries delete mode 100644 base/business/person/src/main/java/.svn/entries delete mode 100644 base/business/person/src/main/java/com/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/db/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/ActivityEconomic.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/CountryProvinceCity.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/DirectionFull.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PersonName.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PhonesPerClient.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/AddressSequence.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/LovFinancialInstitutions.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/PercentageStockholder.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/ValidationAddress.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/VerifyManagers.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/text-base/EmployeeLov.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteCompanyCode.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteHistoryActivity.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonAndCompany.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonCode.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/FinancialSituation.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/JuridicalPerson.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/LogoImage.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonBalanceFile.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonImage.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/ValidateAddressPhones.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsep.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepCompany.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepPerson.java.svn-base delete mode 100644 base/business/person/src/main/java/com/fp/person/validate/.svn/entries delete mode 100644 base/business/person/src/main/java/com/fp/person/validate/.svn/text-base/ValidateIdentification.java.svn-base delete mode 100644 base/business/person/src/main/resources/.svn/entries delete mode 100644 base/business/person/src/main/resources/.svn/text-base/personmessages_es.properties.svn-base delete mode 100644 base/business/person/src/test/.svn/entries delete mode 100644 base/business/person/src/test/java/.svn/entries delete mode 100644 base/business/person/src/test/resources/.svn/entries delete mode 100644 base/business/report/.svn/dir-prop-base delete mode 100644 base/business/report/.svn/entries delete mode 100644 base/business/report/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/report/src/.svn/entries delete mode 100644 base/business/report/src/main/.svn/entries delete mode 100644 base/business/report/src/main/java/.svn/entries delete mode 100644 base/business/report/src/main/java/com/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/db/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/business/report/src/main/java/com/fp/report/db/.svn/text-base/SQLUtil.java.svn-base delete mode 100644 base/business/report/src/main/java/com/fp/report/query/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/rules/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/rules/query/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/rules/save/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/util/.svn/entries delete mode 100644 base/business/report/src/main/java/com/fp/report/util/.svn/text-base/Utilities.java.svn-base delete mode 100644 base/business/report/src/main/resources/.svn/entries delete mode 100644 base/business/report/src/test/.svn/entries delete mode 100644 base/business/report/src/test/java/.svn/entries delete mode 100644 base/business/report/src/test/resources/.svn/entries delete mode 100644 base/business/viaticos/.svn/dir-prop-base delete mode 100644 base/business/viaticos/.svn/entries delete mode 100644 base/business/viaticos/.svn/text-base/pom.xml.svn-base delete mode 100644 base/business/viaticos/src/.svn/entries delete mode 100644 base/business/viaticos/src/main/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Contabilidad.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Empleado.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefe.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefeyResponsableUnidad.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Grupos.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Jefe.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/MailMasivo.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Movilizacion.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/ResponsableUnidad.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/TalentoHumano.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Tesoreria.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/UsaurioIngresoSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/text-base/MailPorSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaComentarios.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumCodigos.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumEstadosSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/text-base/ViaticosException.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/DestinoQuery.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/LovDestinoSbs.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/LovEmpleadosSbs.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/NotificacionMovilizacion.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/UsuarioPorCiudad.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/text-base/DiasAcumulados.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/text-base/Informe.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaEstadoSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaLovSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/text-base/DiasAcumulados.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Comentarios.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudIntegrantes.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudTransporte.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/ValidaFeriados.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Anulada.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Aprobada.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/ConfirmaAnulacion.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/EstadoHelper.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformeAprobado.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorAprobar.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorCorregir.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/NegarComision.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobar.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobarModificaciones.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorCorregir.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorIngresarInforme.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/entries delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarContabilidad.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarEmpleado.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefe.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefeInforme.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisior.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisiorInforme.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTalentoHumano.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTesoreria.java.svn-base delete mode 100644 base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarUsuarioIngresaSolicitud.java.svn-base delete mode 100644 base/business/viaticos/src/main/resources/.svn/entries delete mode 100644 base/business/viaticos/src/main/resources/.svn/text-base/viamessages_es.properties.svn-base delete mode 100644 base/business/viaticos/src/test/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/com/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/com/fp/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/com/fp/base/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/com/fp/base/business/.svn/entries delete mode 100644 base/business/viaticos/src/test/java/com/fp/base/business/.svn/text-base/AppTest.java.svn-base delete mode 100644 base/core/.svn/entries delete mode 100644 base/core/.svn/text-base/pom.xml.svn-base delete mode 100644 base/core/alfresco-client/.svn/dir-prop-base delete mode 100644 base/core/alfresco-client/.svn/entries delete mode 100644 base/core/alfresco-client/.svn/text-base/pom.xml.svn-base delete mode 100644 base/core/alfresco-client/src/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/AlfrescoFileAuth.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/Authentication.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/AlfrescoApi.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/DocumentoAlfresco.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/Prueba.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDataType.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDocumentType.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumRequestType.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/text-base/ExceptionWebscript.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiProperties.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiRequest.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiResponseHandler.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/UriUtils.java.svn-base delete mode 100644 base/core/alfresco-client/src/main/resources/.svn/entries delete mode 100644 base/core/alfresco-client/src/main/resources/.svn/text-base/alfresco-api.properties.svn-base delete mode 100644 base/core/alfresco-client/src/test/.svn/entries delete mode 100644 base/core/alfresco-client/src/test/java/.svn/entries delete mode 100644 base/core/alfresco-client/src/test/resources/.svn/entries delete mode 100644 base/core/bpm/.svn/dir-prop-base delete mode 100644 base/core/bpm/.svn/entries delete mode 100644 base/core/bpm/.svn/text-base/pom.xml.svn-base delete mode 100644 base/core/bpm/src/.svn/entries delete mode 100644 base/core/bpm/src/main/.svn/entries delete mode 100644 base/core/bpm/src/main/java/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.netbeans-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.netbeans-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/Action.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/ActionTypes.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/LogonAction.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.netbeans-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.netbeans-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveActionHelper.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/text-base/TransactionTime.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/Query.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHQL.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHelper.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryJsf.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryOperation.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessCriteria.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessor.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/text-base/Menu.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/report/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportOperation.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportProcessor.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/rules/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/save/.svn/entries delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/Save.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveOperation.java.svn-base delete mode 100644 base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveProcessor.java.svn-base delete mode 100644 base/core/bpm/src/main/resources/.svn/entries delete mode 100644 base/core/bpm/src/test/.svn/entries delete mode 100644 base/core/bpm/src/test/java/.svn/entries delete mode 100644 base/core/bpm/src/test/java/test/.svn/entries delete mode 100644 base/core/bpm/src/test/java/test/com/.svn/entries delete mode 100644 base/core/bpm/src/test/java/test/com/fp/.svn/entries delete mode 100644 base/core/bpm/src/test/java/test/com/fp/bpm/.svn/entries delete mode 100644 base/core/bpm/src/test/resources/.svn/entries delete mode 100644 base/core/firmas/.svn/dir-prop-base delete mode 100644 base/core/firmas/.svn/entries delete mode 100644 base/core/firmas/.svn/text-base/pom.xml.svn-base delete mode 100644 base/core/firmas/src/.svn/entries delete mode 100644 base/core/firmas/src/main/.svn/entries delete mode 100644 base/core/firmas/src/main/java/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/CertificateUtils.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/PDFRendererListener.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/text-base/SignType.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/text-base/FirmasException.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/text-base/FirmMessages.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/text-base/UsuarioCertificado.java.svn-base delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/entries delete mode 100644 base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/text-base/CertificadoFirma.java.svn-base delete mode 100644 base/core/firmas/src/main/resources/.svn/entries delete mode 100644 base/core/firmas/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base delete mode 100644 base/core/firmas/src/test/.svn/entries delete mode 100644 base/core/firmas/src/test/java/.svn/entries delete mode 100644 base/core/firmas/src/test/java/com/.svn/entries delete mode 100644 base/core/firmas/src/test/java/com/fp/.svn/entries delete mode 100644 base/core/firmas/src/test/java/com/fp/firmas/.svn/entries delete mode 100644 base/dto/.svn/entries delete mode 100644 base/dto/.svn/text-base/pom.xml.svn-base delete mode 100644 base/dto/common/.svn/dir-prop-base delete mode 100644 base/dto/common/.svn/entries delete mode 100644 base/dto/common/.svn/text-base/pom.xml.svn-base delete mode 100644 base/dto/common/src/.svn/entries delete mode 100644 base/dto/common/src/main/.svn/entries delete mode 100644 base/dto/common/src/main/java/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/accounting/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/accounting/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/accounting/exception/.svn/text-base/AccountingException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/ach/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/ach/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/ach/exception/.svn/text-base/AchException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/application/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/application/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/application/exception/.svn/text-base/SolicitudeException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/bpmlib/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/bpmlib/.svn/text-base/BPMException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/bscoring/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/bscoring/.svn/text-base/BscoringException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/builder/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/builder/.svn/text-base/BuilderException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/base64/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/base64/.svn/text-base/Base64Input.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/APPException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/AbstractExceptionMessage.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/CommonException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionHandler.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionManager.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionsProperties.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/IdentifierGenerationException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/NonUniqueObjectException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/PropertyValueException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SQLExceptionManager.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SavePointException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/StaleObjectStateException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/files/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/FileIterator.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/StreamHelper.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/files/record/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/files/record/.svn/text-base/RecordIterator.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/fin/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/fin/.svn/text-base/MessageGenerator.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/AbstractFunction.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/FormulaEvaluator.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Percent.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Sum.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/helper/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/CalculationBase.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/Constant.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/DialectDB.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/FkException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/logger/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/logger/.svn/text-base/APPLogger.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/messages/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/ELEval.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.netbeans-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/properties/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/CommonProperties.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/PropertiesHandler.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/soap/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/soap/.svn/text-base/WSClient.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/common/thread/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/common/thread/.svn/text-base/Monitor.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/core/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/core/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/core/exception/.svn/text-base/CoreException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/creditfacility/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/text-base/CreditFacilityException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/demandeposit/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/text-base/DemandDepositException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/documents/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/documents/.svn/text-base/DocException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/dto/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/DateValueProcessor.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/ObjectValueProcessor.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/Serializer.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/DateMorpher.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/TimestampMorpher.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMap.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMapMessages.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/FormulaManage.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactory.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactoryStreamBytes.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/excel/.svn/text-base/XLSXUtil.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/general/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/general/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/general/exception/.svn/text-base/GeneralException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/installment/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/installment/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/installment/exception/.svn/text-base/InstallmentException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/loan/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/loan/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/loan/exception/.svn/text-base/LoanException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/mail/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/mail/.svn/text-base/Mail.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/persistence/commondb/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/CommondbException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/receivable/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/receivable/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/receivable/exception/.svn/text-base/ReceivableException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/telered/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/telered/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/telered/exception/.svn/text-base/TeleredException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/teller/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/teller/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/teller/exception/.svn/text-base/TellerException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/term/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/term/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/term/exception/.svn/text-base/TermException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/timedeposit/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/text-base/TimeDepositException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/viaticos/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/text-base/ViaticosException.java.svn-base delete mode 100644 base/dto/common/src/main/java/com/fp/warranty/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/warranty/exception/.svn/entries delete mode 100644 base/dto/common/src/main/java/com/fp/warranty/exception/.svn/text-base/WarrantyException.java.svn-base delete mode 100644 base/dto/common/src/main/java/test/.svn/entries delete mode 100644 base/dto/common/src/main/java/test/com/.svn/entries delete mode 100644 base/dto/common/src/main/java/test/com/fp/.svn/entries delete mode 100644 base/dto/common/src/main/java/test/com/fp/json/.svn/entries delete mode 100644 base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base delete mode 100644 base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base delete mode 100644 base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base delete mode 100644 base/dto/common/src/main/resources/.svn/entries delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/commonmessages_es.properties.svn-base delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/exceptions.properties.svn-base delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/userMessages.properties.svn-base delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.netbeans-base delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.svn-base delete mode 100644 base/dto/common/src/main/resources/.svn/text-base/userMessages_es_EC.properties.svn-base delete mode 100644 base/dto/common/src/test/.svn/entries delete mode 100644 base/dto/common/src/test/java/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/fp/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/fp/common/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/ELTest.java.svn-base delete mode 100644 base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/InternationalitationTest.java.svn-base delete mode 100644 base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/MessageTest.java.svn-base delete mode 100644 base/dto/common/src/test/java/test/com/fp/excel/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/fp/excel/.svn/text-base/ExcelToMapMain.java.svn-base delete mode 100644 base/dto/common/src/test/java/test/com/fp/json/.svn/entries delete mode 100644 base/dto/common/src/test/java/test/com/fp/json/.svn/text-base/SerializerTest.java.svn-base delete mode 100644 base/dto/common/src/test/resources/.svn/entries delete mode 100644 base/dto/dto/.svn/dir-prop-base delete mode 100644 base/dto/dto/.svn/entries delete mode 100644 base/dto/dto/.svn/text-base/pom.xml.svn-base delete mode 100644 base/dto/dto/src/.svn/entries delete mode 100644 base/dto/dto/src/main/.svn/entries delete mode 100644 base/dto/dto/src/main/java/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/common/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/common/helper/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.netbeans-base delete mode 100644 base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractData.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataBalanceTransport.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransfer.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransport.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/GeneralRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.netbeans-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Response.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/batch/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchAccountRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchModuleRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/data/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/SaveData.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/TransactionDTO.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/fin/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/Concept.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialExchange.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialItem.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/AbstractExpire.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Cache.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateBean.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateId.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/History.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Log.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/helper/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/helper/.svn/text-base/FileHelper.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/AdditionalQuery.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/DtoQuery.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/Filter.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/FilterTypes.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryBean.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryCriteria.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/SubQuery.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/text-base/MenuRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/quota/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/Quota.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/QuotaDetail.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/AbstractRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ExceptionRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/QueryRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ReportRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ScheduleRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/Service.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/TransactionRule.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/com/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/dto/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/save/.svn/entries delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/DtoSave.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveBean.java.svn-base delete mode 100644 base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveRequest.java.svn-base delete mode 100644 base/dto/dto/src/main/java/test/.svn/entries delete mode 100644 base/dto/dto/src/main/java/test/com/.svn/entries delete mode 100644 base/dto/dto/src/main/java/test/com/fp/.svn/entries delete mode 100644 base/dto/dto/src/main/java/test/com/fp/json/.svn/entries delete mode 100644 base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base delete mode 100644 base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base delete mode 100644 base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base delete mode 100644 base/dto/dto/src/main/resources/.svn/entries delete mode 100644 base/facade/.svn/dir-prop-base delete mode 100644 base/facade/.svn/entries delete mode 100644 base/facade/.svn/text-base/pom.xml.svn-base delete mode 100644 base/facade/src/.svn/entries delete mode 100644 base/facade/src/main/.svn/entries delete mode 100644 base/facade/src/main/java/.svn/entries delete mode 100644 base/facade/src/main/java/META-INF/.svn/entries delete mode 100644 base/facade/src/main/java/META-INF/.svn/text-base/MANIFEST.MF.svn-base delete mode 100644 base/facade/src/main/java/META-INF/.svn/text-base/ejb-jar.xml.svn-base delete mode 100644 base/facade/src/main/java/com/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/facade/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/facade/db/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/facade/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.netbeans-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/JobsIniciatorBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.netbeans-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryWithCommitBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/ReportBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/SaveBean.java.svn-base delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/entries delete mode 100644 base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/text-base/BeanHelper.java.svn-base delete mode 100644 base/facade/src/main/resources/.svn/entries delete mode 100644 base/facade/src/main/resources/META-INF/.svn/entries delete mode 100644 base/facade/src/test/.svn/entries delete mode 100644 base/facade/src/test/java/.svn/entries delete mode 100644 base/facade/src/test/resources/.svn/entries delete mode 100644 base/facadeclient/.svn/dir-prop-base delete mode 100644 base/facadeclient/.svn/entries delete mode 100644 base/facadeclient/.svn/text-base/pom.xml.svn-base delete mode 100644 base/facadeclient/src/.svn/entries delete mode 100644 base/facadeclient/src/main/.svn/entries delete mode 100644 base/facadeclient/src/main/java/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/fp/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.netbeans-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.svn-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanRemote.java.svn-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/entries delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocator.java.svn-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJboss7.java.svn-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.netbeans-base delete mode 100644 base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.svn-base delete mode 100644 base/facadeclient/src/main/resources/.svn/entries delete mode 100644 base/facadeclient/src/main/resources/.svn/text-base/jboss-ejb-client.properties.svn-base delete mode 100644 base/facadeclient/src/test/.svn/entries delete mode 100644 base/facadeclient/src/test/java/.svn/entries delete mode 100644 base/facadeclient/src/test/resources/.svn/entries delete mode 100644 base/persistence/.svn/entries delete mode 100644 base/persistence/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/commondb/.svn/dir-prop-base delete mode 100644 base/persistence/commondb/.svn/entries delete mode 100644 base/persistence/commondb/.svn/text-base/.pmd.svn-base delete mode 100644 base/persistence/commondb/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/commondb/src/.svn/entries delete mode 100644 base/persistence/commondb/src/main/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/FlipUserTransaction.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/GeneralQuery.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/HqlStatement.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.netbeans-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceHelper.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.netbeans-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceMetadata.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/text-base/CacheManager.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.netbeans-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/ThreadFacade.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/CloneData.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/Constant.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/APPDates.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Fkconstraint.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/FormatDates.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Frequency.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/MapUtil.java.svn-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/sequence/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/entries delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.netbeans-base delete mode 100644 base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.svn-base delete mode 100644 base/persistence/commondb/src/main/resources/.svn/entries delete mode 100644 base/persistence/commondb/src/main/resources/.svn/text-base/commondbmessages_es.properties.svn-base delete mode 100644 base/persistence/commondb/src/test/.svn/entries delete mode 100644 base/persistence/commondb/src/test/java/.svn/entries delete mode 100644 base/persistence/commondb/src/test/resources/.svn/entries delete mode 100644 base/persistence/parmas/.settings/.svn/entries delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.validation.prefs.svn-base delete mode 100644 base/persistence/parmas/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base delete mode 100644 base/persistence/parmas/.svn/dir-prop-base delete mode 100644 base/persistence/parmas/.svn/entries delete mode 100644 base/persistence/parmas/.svn/text-base/.classpath.svn-base delete mode 100644 base/persistence/parmas/.svn/text-base/.project.svn-base delete mode 100644 base/persistence/parmas/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/parmas/bin/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/entries delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmCentroControl.class.svn-base delete mode 100644 base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.class.svn-base delete mode 100644 base/persistence/parmas/src/.svn/entries delete mode 100644 base/persistence/parmas/src/main/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ArmaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ColaImpresionDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/DocumentoDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ImagenDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/JefeCentroControlDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/PersonaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ArmaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ColaImpresionDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosArmaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosSnapDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DocumentoDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ImagenDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/InfoGuardiaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/JefeCentroControlDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/PersonaDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/TramiteDto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmDetallePreguntas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmEvaluacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmPreguntas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmRespuestas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmDetalleImportacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacionKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCarga.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCargaDetalle.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCashManagementHistory.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmDetalleImportacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersona.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersonaKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmMovimientoArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmRegistroArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacionKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmTotalPersona.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmVentaArmaTem.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionInspeccion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmColadeImpresion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLectura.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalle.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalleKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArma.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArmaKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmSitioAlmacenamiento.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoArmaExplosivo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoSancion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControlJur.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmComercianteCupo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramiteKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisito.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramiteKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmSitioAlmacenamiento.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoArmaExplosivo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoSancion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.netbeans-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramitesAtendidos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipoKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArma.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArmaKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaSucursal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmaPruebas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDecomisoArma.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDocumentoHabilitante.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmGuardias.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajoCustodios.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitud.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursalKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmasKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudDocumentoKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardias.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardiasKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitosKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramiteKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/CashManagementDTO.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArma.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArmaKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaSucursal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.netbeans-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.netbeans-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmBodega.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCabRepDestruirArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmasKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoFiscalia.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCustodiaTemporal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomiso.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArma.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArmaTransaccion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDetRepDestruirArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoAlfresco.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitante.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitanteDetall.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmGuardias.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccionArchivo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajo.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajoCustodios.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomiso.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomisoKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionRecomendacion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitud.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursalKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmas.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmasKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumento.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumentoKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardias.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardiasKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitosKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramite.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramiteKey.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTerminos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTransaccionArmaBodega.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedula.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedulaResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/Cedula.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/ObjectFactory.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUp.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUpResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/package-info.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedula.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedulaResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/Cedula.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/ObjectFactory.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUp.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUpResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/package-info.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/entries delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ActividadEconomica.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/AgenteRetencion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contador.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contribuyente.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteCompleto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteOnLine.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/EstructuraOrganizacional.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ListaBlanca.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObjectFactory.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompleto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompletoResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatosResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimple.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimpleResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/RepresentanteLegal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/TipoContribuyente.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/UbicacionGeografica.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/package-info.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ActividadEconomica.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/AgenteRetencion.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contador.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contribuyente.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteCompleto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteOnLine.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/EstructuraOrganizacional.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ListaBlanca.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObjectFactory.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompleto.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompletoResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatos.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatosResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimple.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimpleResponse.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/RepresentanteLegal.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/TipoContribuyente.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/UbicacionGeografica.java.svn-base delete mode 100644 base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/package-info.java.svn-base delete mode 100644 base/persistence/parmas/src/test/.svn/entries delete mode 100644 base/persistence/parmas/src/test/java/.svn/entries delete mode 100644 base/persistence/parmas/src/test/java/com/.svn/entries delete mode 100644 base/persistence/parmas/src/test/java/com/fp/.svn/entries delete mode 100644 base/persistence/parmas/src/test/java/com/fp/base/.svn/entries delete mode 100644 base/persistence/parmas/src/test/java/com/fp/base/persistence/.svn/entries delete mode 100644 base/persistence/pbpm/.svn/dir-prop-base delete mode 100644 base/persistence/pbpm/.svn/entries delete mode 100644 base/persistence/pbpm/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/pbpm/src/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/entries delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivities.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivitiesKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmField.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMaping.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMapingKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOrigin.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOriginKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlows.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlowsKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroups.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsers.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsersKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmLogMail.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmNotify.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessInstance.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariables.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariablesKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRules.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRulesKey.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmTaskComments.java.svn-base delete mode 100644 base/persistence/pbpm/src/main/resources/.svn/entries delete mode 100644 base/persistence/pcustomer/.settings/.svn/entries delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base delete mode 100644 base/persistence/pcustomer/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base delete mode 100644 base/persistence/pcustomer/.svn/dir-prop-base delete mode 100644 base/persistence/pcustomer/.svn/entries delete mode 100644 base/persistence/pcustomer/.svn/text-base/.classpath.svn-base delete mode 100644 base/persistence/pcustomer/.svn/text-base/.pmd.svn-base delete mode 100644 base/persistence/pcustomer/.svn/text-base/.project.svn-base delete mode 100644 base/persistence/pcustomer/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/pcustomer/src/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalance.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccoLevel.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccount.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccountKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancial.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancialKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalance.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalanceKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiser.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiserKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompany.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranch.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranchKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClient.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClientKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancial.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancialKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagers.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagersKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProducts.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProductsKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProvider.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProviderKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroup.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroupKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLink.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLinkKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFinancialInstitutions.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustInsurance.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLink.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLinkKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustNotaryOffice.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustSupervisor.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPerson.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddress.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddressKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReference.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReferenceKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetail.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetailKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonParametersId.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReference.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReferenceKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhone.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhoneKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneActivity.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneCiiu.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/entries delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeople.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalData.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalDataKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociation.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociationKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpenses.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpensesKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncome.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncomeKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncome.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncomeKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJob.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJobKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoan.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoanKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssets.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssetsKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssets.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssetsKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferences.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferencesKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicle.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicleKey.java.svn-base delete mode 100644 base/persistence/pcustomer/src/main/resources/.svn/entries delete mode 100644 base/persistence/pfirmas/.svn/dir-prop-base delete mode 100644 base/persistence/pfirmas/.svn/entries delete mode 100644 base/persistence/pfirmas/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/pfirmas/src/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/base/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/text-base/TfirmDatosFirmante.java.svn-base delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/entries delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificado.java.svn-base delete mode 100644 base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificadoKey.java.svn-base delete mode 100644 base/persistence/pfirmas/src/test/.svn/entries delete mode 100644 base/persistence/pfirmas/src/test/java/.svn/entries delete mode 100644 base/persistence/pfirmas/src/test/java/com/.svn/entries delete mode 100644 base/persistence/pfirmas/src/test/java/com/fp/.svn/entries delete mode 100644 base/persistence/pfirmas/src/test/java/com/fp/base/.svn/entries delete mode 100644 base/persistence/pfirmas/src/test/java/com/fp/base/persistence/.svn/entries delete mode 100644 base/persistence/pgeneral/.settings/.svn/entries delete mode 100644 base/persistence/pgeneral/.svn/dir-prop-base delete mode 100644 base/persistence/pgeneral/.svn/entries delete mode 100644 base/persistence/pgeneral/.svn/text-base/.pmd.svn-base delete mode 100644 base/persistence/pgeneral/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/pgeneral/src/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructure.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructureKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccount.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCredit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpening.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpeningKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpening.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpeningKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCredit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCreditKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebitKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidation.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidationKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHold.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHoldKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumber.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumberKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayable.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayableKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHold.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHoldKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequence.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequenceKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatusKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccount.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccountKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStruct.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequentialModule.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCredit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCreditKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCredit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCreditKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebitKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStat.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStatKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatusKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccount.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccountKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptions.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptionsKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdata.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdataKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptions.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptionsKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatusKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatch.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneCharges.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbook.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbookKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroup.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroupKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductCharges.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductChargesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranch.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDay.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDayKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionary.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionaryKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneFileType.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneReadExcel.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/ABSTgeneSolicitudeRelationship.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/OptmListaNegra.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallCharges.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallChargesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRates.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRatesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationship.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationshipKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneArea.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAreaKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceGroup.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceType.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranch.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranchKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCanton.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCantonKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashClose.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeader.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeaderKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTest.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTestKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalence.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalenceDet.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneChannels.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCity.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCityKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCompany.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConcept.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConceptKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsep.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsepLog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCountry.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCreditType.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrency.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroup.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroupKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenomination.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenominationKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntity.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntityKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFrequency.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFunctions.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabel.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabelKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLanguage.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOffice.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficer.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficerKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatusKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeCondition.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeConditionKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.netbeans-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParametersKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquia.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquiaKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvince.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvinceKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitude.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitudeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneServices.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitude.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpening.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpeningKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpening.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpeningKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallCharges.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallChargesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRates.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRatesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidation.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidationKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumber.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumberKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationship.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationshipKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatusKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimony.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimonyKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalance.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalanceKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransfer.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeader.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeaderKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMix.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPages.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPagesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQuery.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQueryKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLink.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLinkKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneUserSolicitudeNumber.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneWildcard.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFiles.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentType.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentTypeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.netbeans-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionMessage.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenu.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevel.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDesc.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDescKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTran.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTranKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuProfile.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevel.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDesc.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDescKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTran.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTranKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplates.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDesc.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDescKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructure.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureData.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureDataKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeader.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeaderKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPages.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPagesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPages.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPagesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneModule.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProduct.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationship.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationshipKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProduct.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrency.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrencyKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientData.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientDataKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallType.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallTypeKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroup.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroupKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRateKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentCharges.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentChargesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRates.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRatesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidation.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidationKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRateKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvision.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvisionKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplate.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDesc.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDescKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepo.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepoKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReport.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReports.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReportsKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResults.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResultsKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAudit.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDel.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDelKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScript.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScriptKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePassword.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePasswordKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfile.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHorary.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmount.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmountKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminal.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminalKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUser.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfile.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfileKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSession.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLogKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleEvent.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLog.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLogKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleParameters.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScore.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournal.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournalKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScore.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScoreKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScore.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustment.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustmentKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssues.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssuesKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeader.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeaderKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRank.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRankKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/text-base/TgeneSequences.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/text-base/TtestValores.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransaction.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEvent.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEventKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosary.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosaryKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItem.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcess.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcessKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvision.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvisionKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReports.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReportsKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturation.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturationKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransfer.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferStatus.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/entries delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVault.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetail.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetailKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultKey.java.svn-base delete mode 100644 base/persistence/pgeneral/src/main/resources/.svn/entries delete mode 100644 base/persistence/plog/.svn/dir-prop-base delete mode 100644 base/persistence/plog/.svn/entries delete mode 100644 base/persistence/plog/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/plog/src/.svn/entries delete mode 100644 base/persistence/plog/src/main/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/entries delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogHeader.java.svn-base delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoad.java.svn-base delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadError.java.svn-base delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadErrorKey.java.svn-base delete mode 100644 base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadKey.java.svn-base delete mode 100644 base/persistence/plog/src/test/.svn/entries delete mode 100644 base/persistence/plog/src/test/java/.svn/entries delete mode 100644 base/persistence/pviaticos/.svn/dir-prop-base delete mode 100644 base/persistence/pviaticos/.svn/entries delete mode 100644 base/persistence/pviaticos/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/pviaticos/src/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/Empleado.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/EmpleadoJpql.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuario.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuarioKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumulados.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumuladosKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaEstado.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaNotificacionMovilizacion.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaParametros.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/entries delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitud.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentarios.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentariosKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantes.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantesKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacion.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacionKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporte.java.svn-base delete mode 100644 base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporteKey.java.svn-base delete mode 100644 base/persistence/pviaticos/src/test/.svn/entries delete mode 100644 base/persistence/pviaticos/src/test/java/.svn/entries delete mode 100644 base/persistence/pviaticos/src/test/java/com/.svn/entries delete mode 100644 base/persistence/pviaticos/src/test/java/com/fp/.svn/entries delete mode 100644 base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/entries delete mode 100644 base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/text-base/AppTest.java.svn-base delete mode 100644 base/persistence/util/.svn/dir-prop-base delete mode 100644 base/persistence/util/.svn/entries delete mode 100644 base/persistence/util/.svn/text-base/pom.xml.svn-base delete mode 100644 base/persistence/util/src/.svn/entries delete mode 100644 base/persistence/util/src/main/.svn/entries delete mode 100644 base/persistence/util/src/main/java/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/text-base/DataHelper.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/FormulaManager.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/package-info.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/GeneralDescriptions.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageDescriptions.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.netbeans-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/SaveBeanInOtherSession.java.svn-base delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/entries delete mode 100644 base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/text-base/ServiceManager.java.svn-base delete mode 100644 base/persistence/util/src/test/.svn/entries delete mode 100644 base/persistence/util/src/test/java/.svn/entries delete mode 100644 base/persistence/util/src/test/java/com/.svn/entries delete mode 100644 base/persistence/util/src/test/java/com/fp/.svn/entries delete mode 100644 base/persistence/util/src/test/java/com/fp/base/.svn/entries delete mode 100644 base/persistence/util/src/test/java/com/fp/base/persistence/.svn/entries delete mode 100644 base/persistence/util/src/test/java/com/fp/base/persistence/.svn/text-base/AppTest.java.svn-base delete mode 100644 base/sessionbeans/.svn/dir-prop-base delete mode 100644 base/sessionbeans/.svn/entries delete mode 100644 base/sessionbeans/.svn/text-base/pom.xml.svn-base delete mode 100644 base/sessionbeans/src/.svn/entries delete mode 100644 base/sessionbeans/src/META-INF/.svn/entries delete mode 100644 base/sessionbeans/src/META-INF/.svn/text-base/MANIFEST.MF.svn-base delete mode 100644 base/sessionbeans/src/main/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/CrudBean.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/SequenceBean.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/CobisBean.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/ContabilizaCobisBean.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CobisBeanLocal.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/ContabilizaCobisLocal.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CrudBeanLocal.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/SequenceBeanLocal.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/cobis/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/entries delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/Sequence.java.svn-base delete mode 100644 base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/SequenceThread.java.svn-base delete mode 100644 base/sessionbeans/src/test/.svn/entries delete mode 100644 base/sessionbeans/src/test/java/.svn/entries delete mode 100644 clients/.svn/entries delete mode 100644 clients/.svn/text-base/pom.xml.svn-base delete mode 100644 clients/comaco/.svn/entries delete mode 100644 clients/comaco/.svn/text-base/pom.xml.svn-base delete mode 100644 clients/comaco/ear/.svn/dir-prop-base delete mode 100644 clients/comaco/ear/.svn/entries delete mode 100644 clients/comaco/ear/.svn/text-base/pom.xml.svn-base delete mode 100644 clients/comaco/ear/src/.svn/entries delete mode 100644 clients/comaco/ear/src/main/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/com/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/com/fp/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/com/fp/clients/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/entries delete mode 100644 clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/text-base/App.java.svn-base delete mode 100644 clients/comaco/ear/src/main/resources/.svn/entries delete mode 100644 clients/comaco/ear/src/main/resources/META-INF/.svn/entries delete mode 100644 clients/comaco/ear/src/main/resources/META-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base delete mode 100644 clients/comaco/ear/src/test/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/com/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/com/fp/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/com/fp/clients/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/entries delete mode 100644 clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/text-base/AppTest.java.svn-base delete mode 100644 clients/comaco/environment-eap6/.svn/dir-prop-base delete mode 100644 clients/comaco/environment-eap6/.svn/entries delete mode 100644 clients/comaco/environment-eap6/.svn/text-base/pom.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/java/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/java/com/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/java/com/fp/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/java/com/fp/clients/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/java/com/fp/clients/maia/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/bpm.properties.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/common.properties.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/fb-facade.properties.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.netbeans-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/.svn/text-base/log4j.properties.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Executor-orm.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/JBPMorm.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Servicesorm.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/TaskAuditorm.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Taskorm.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.netbeans-base delete mode 100644 clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.svn-base delete mode 100644 clients/comaco/environment-eap6/src/test/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/test/java/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/test/java/com/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/test/java/com/fp/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/test/java/com/fp/clients/.svn/entries delete mode 100644 clients/comaco/environment-eap6/src/test/java/com/fp/clients/maia/.svn/entries delete mode 100644 frontend/.metadata/.svn/entries delete mode 100644 frontend/.metadata/src/.svn/entries delete mode 100644 frontend/.metadata/src/main/.svn/entries delete mode 100644 frontend/.metadata/src/main/webapp/.svn/entries delete mode 100644 frontend/.metadata/src/main/webapp/WEB-INF/.svn/entries delete mode 100644 frontend/.metadata/src/main/webapp/WEB-INF/.svn/text-base/faces-config.pageflow.svn-base delete mode 100644 frontend/.svn/dir-prop-base delete mode 100644 frontend/.svn/entries delete mode 100644 frontend/.svn/text-base/pom.xml.netbeans-base delete mode 100644 frontend/.svn/text-base/pom.xml.svn-base delete mode 100644 frontend/src/.svn/entries delete mode 100644 frontend/src/main/.svn/entries delete mode 100644 frontend/src/main/java/.svn/entries delete mode 100644 frontend/src/main/java/com/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/text-base/ChangeAccoDateControllerController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/text-base/AlfrescoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/RequisitoPorTipoTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/TipoTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/ConocimientoLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/DetallePreguntasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/Evaluacion.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionCompleta.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/RespuestasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/TestConocimientosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaExcell.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaVentaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaDetalleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ConsultaArmasVentaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionOldController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/MovimientoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ProvinceLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/RegistroArmController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasPrevImportacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCashManagmentController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompInscritaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompaniasCCentrol.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteDecomisoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteImportacionProduccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumArmasEstadoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumPermisosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesCconController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesSuspController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArma.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoAutorizacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoFabricacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTramiteCentroController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/TotalArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaTraspasoDominioController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentasVariasArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VisualizacionSitiosAlmacenamientoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmaExplosivoLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmasLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CargasLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CatalogoArmaLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CentroControlLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CertArmasLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/PlanificacionTramiteLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SancionarLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SitioAlmacenamientoLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/UnidadTipoLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/prop-base/GuardiasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/AuxCargaArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CalibreLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CashManagementHistoryController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CatalogFilterLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CentroControlArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ClaseLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ComercianteCupoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/DatosParaSancionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoFiscaliaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/GuardiasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionArmasDetalleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionDetalleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasExcelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteTipoArmaExplosivoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoDatosTipoTramite.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/InventarioSubidoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/LongitudLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/OrigenTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/PreguntasParaEvaluacionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoPorTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RespuestasLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SancionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SolicitudImportacionArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmCentroControlJurController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmVentaArmaTemporalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TipoArmaExpLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TiposArmasExplosivosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TotalPersonaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/UnidadTipoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/VentaTotalPersonaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/ArmasExcel.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/EstadosSolicitudBPM.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/TipoArmaExplosivoPKExcel.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaArmaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaSucursalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/DocumentoHabilitanteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/ReporteConsultaSolicitudController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudAgenciaSucursalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudGuardiasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaArmaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaSucursalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AprobacionPlanInspeccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmaEntidadReporte.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasBloqueoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArticuloRegistradoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AutorizacionDevolucionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AuxArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/BodegaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CabRepDestruirArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CargarDepositoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadosArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ColaImpresionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaAlfrescoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTempAeropuertoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTemporalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaTransaccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoMaterialController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DetRepDestruirArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteDetalleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EmitirDocumentoHabilitante.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EnvioArmasNoIniciadasFlujoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/GenerarOrdenTrabajoCustodiosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImportacionProduccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImprimirVerificacionReimpresionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/IngresoFichaTecnicaArmasController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/IngresoFichaTecnicaArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionArchivoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionCambioArchivoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InventariosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/MantenimientoDocumentosAlfrescoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ModificarPlanificacionInspeccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/NotificarEmisionDocumentoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/OrdenTrabajoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesAnularController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionInspeccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasNoEnviadasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoCoordinadorMilitarController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistrarNovedadController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionPlaniNoPlaniController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAgenciasSucursalesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAutorizacionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteControlInventarioController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionDeArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteEstadisticasTramitesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpUserController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteInspeccionesRealizadasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteLiquidacionEconomicaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteSancionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarReporteArmasADestruirController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefCCController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefDepController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionDecomisoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionRecomendacionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionarController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudAgenciaSucursalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasBPMController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCertificadoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudGuardiasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudRequisitosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudDocumentoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmTramiteController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TransaccionArmaBodegaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidacionTramiteLibreTransitoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidarDepositoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionBodegaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionInformacionCertificado.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionInformacionDevolucionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionReimpresion.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionRequisitosSolicitudController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/AssignmentsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/EndedFlowsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/ExportFlowsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionMappingController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionOriginController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FlowsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsUsersController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/NotifyController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/RulesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TaskServerController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TransactionLogController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/GroupsLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/TransactionBpmELovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/error/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/error/.svn/text-base/ErrorController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/general/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/prop-base/AuditReportController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pbpm/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmFlowsLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmRulesLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/CompanyController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/FileDetailController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/JuridicalPersonController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleFastController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonAddressController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonDetailController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonPhoneController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/JuridicalPersonLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/PersonLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/text-base/PentahoController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/text-base/AccountStatusController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/GenerateAccountingDateController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneNotAccountingDayController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/text-base/CertificadosController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/AreaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceGroupController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceTypeController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BranchController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CantonController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailBpmController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChannelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesDefinitionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesGroupController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CityController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CountryController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CurrencyController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/LanguageController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeAndBranchController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParroquiaController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ProvinceController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryProcessController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ServicesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/SubProductChargesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TerminosCondicionesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TransactionQueryController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/EntityLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/UserLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ActivityLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BalanceTypeLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BranchLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/CatalogLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/LevelLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/MessageTemplatesLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProcessLovControler.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProfileLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/SubLevelLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/TransactionLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelDescController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuLevelTranController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuSubLevelTranController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelDescController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesDescController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/text-base/ProcessController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ModuleController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductDefinitionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductCurrencyController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/text-base/ResultsController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/AuditInsDelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/SafeAuditController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/AuditInsDelController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/ProfileHoraryController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/TerminalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserChangePassAdmin.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserDetailController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserPerfilAssiggnationController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserProfileController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionProcessController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionReportController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ActivateUserController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangeExpiredPassPersonalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangePassPersonalController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/LoginController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MaiaMenu.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MenuProfileController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ModifyUserController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/PasswordController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ProfileController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/text-base/ReportUserController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/test/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/controller/test/.svn/text-base/BpmCatalogController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/converters/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/converters/.svn/text-base/DateConverter.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/enums/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/enums/.svn/text-base/EnumLovOption.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/prop-base/TimeoutManagerFilter.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseStream.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseWrapper.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/TimeoutManagerFilter.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/security/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/filter/security/.svn/text-base/AuthorizationListener.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/helper/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/MessageHelper.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/prueba/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/PruebaInicioFlujo.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/ValidarDepositoFlowController.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/servlet/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/servlet/.svn/prop-base/CloseSessionMaia.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/CloseSessionMaia.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/HelpServlet.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/LogoutServlet.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/CommonTransformer.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/MsgControlArmas.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/CommonTransformer.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Content.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/ConvertNumberToText.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/EnumParametros.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/LifeCicleListener.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgControlArmas.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgGeneral.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/TextAreaValidationRequired.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Utilidades.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Utilidades.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/ValidateIdentification.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/validators/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/CedulaValidator.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/DocFirmaValidator.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ArmaService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ColaImpresionService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ConsultaLoginService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/DocumentosService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/InventarioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ArmaService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ColaImpresionService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ConsultaLoginService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DatosSnapService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DocumentosService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/InventarioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ArmaServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ColaImpresionServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ConsultaLoginServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/DocumentosServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/InventarioServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ArmaServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.netbeans-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ConsultaLoginServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DatosSnapServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DocumentosServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InstitucionSnapEnum.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InventarioServiceImpl.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/text-base/RestApplication.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginData.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginResult.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/StatusMessage.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/ArmasResource.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/CommonResource.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/SecurityResource.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/text-base/JwtValidateException.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicio.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ClienteCedula.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedula.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedulaResponse.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ObjectFactory.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/package-info.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicio.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ClienteCedula.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedula.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedulaResponse.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ObjectFactory.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/package-info.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/CabeceraXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/DatosArmaXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/EjecucionXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/GuardiaXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ImagenXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ResultadoXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/SoapEnvelopWrapper.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/TramiteXml.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/entries delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ClienteRUC.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRuc.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRucResponse.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ObjectFactory.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicio.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/package-info.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ClienteRUC.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRuc.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRucResponse.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ObjectFactory.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicio.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicioService.java.svn-base delete mode 100644 frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/package-info.java.svn-base delete mode 100644 frontend/src/main/resources/.svn/entries delete mode 100644 frontend/src/main/resources/.svn/text-base/bpm_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.netbeans-base delete mode 100644 frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/customer_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/firmas_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/general_es.properties.netbeans-base delete mode 100644 frontend/src/main/resources/.svn/text-base/general_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/jasper.properties.netbeans-base delete mode 100644 frontend/src/main/resources/.svn/text-base/jasper.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/pentaho.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/security_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/validation_es.properties.svn-base delete mode 100644 frontend/src/main/resources/.svn/text-base/viaticos_es.properties.svn-base delete mode 100644 frontend/src/main/webapp/.svn/entries delete mode 100644 frontend/src/main/webapp/.svn/text-base/change-password.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/.svn/text-base/index.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/.svn/text-base/login.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/.svn/text-base/login.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/.svn/text-base/passwordExpired.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/entries delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/.faces-config.xml.jsfdia.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/beans.xml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/faces-config.xml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.netbeans-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.netbeans-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/.svn/text-base/web.xml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/lib/.svn/entries delete mode 100644 frontend/src/main/webapp/WEB-INF/lib/.svn/prop-base/gmaps4jsf-core-3.0.0.jar.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/lib/.svn/text-base/gmaps4jsf-core-3.0.0.jar.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/templates/.svn/entries delete mode 100644 frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/queryEvent.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/entries delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/appletFirma-2.1.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/bcmail-jdk15on-1.51.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/bcpkix-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/bcprov-ext-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/bcprov-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/prop-base/itextpdf-5.5.3.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/appletFirma-2.1.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/bcmail-jdk15on-1.51.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/bcpkix-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/bcprov-ext-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/bcprov-jdk15on-1.49.jar.svn-base delete mode 100644 frontend/src/main/webapp/app/.svn/text-base/itextpdf-5.5.3.jar.svn-base delete mode 100644 frontend/src/main/webapp/errorPages/.svn/entries delete mode 100644 frontend/src/main/webapp/errorPages/.svn/text-base/maiaError.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/.svn/text-base/workspace.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/.svn/text-base/workspace.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/accounting/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/accounting/dates/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/accounting/dates/.svn/text-base/changeaccountingdate.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/application/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/application/.svn/text-base/parameter.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/application/date/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/application/date/.svn/text-base/daysnonaccounting.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/application/date/.svn/text-base/generationaccountingdate.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/prop-base/armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/AuxCargaArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ImporteArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ImporteArmasExcel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/VerificacionRequisitosSolicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/aprobarActa.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/aprobarPlanInspeccionAnual.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/armas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/armasBloqueo.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/armasBloqueo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/articulosRegistrados.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/articulosRegistrados.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/autorizarDevolucion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/cargarDeposito.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/centroControlArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/certificadoFiscalia.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/certificadoFiscalia.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/certificadosArmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/certificadosArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/comercianteCupo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/consultaAlfresco.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/consultaArmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/consultaArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/consultaReporteCashManagment.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/custodiaTemporalAeropuerto.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/custodiaTemporalAeropuerto.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/datosParaSanciones.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/decomisoMaterial.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/decomisoMaterial.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/desaduanizacion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/desaduanizacionOld.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/documentoHabilitanteConError.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/documentohabilitanteportramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/emitirDocumentoHabilitante.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/envioarmasnoiniciadasflujo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/evaluaciondeconocimientos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/fichasTecnicasFaltantes.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/fichasTecnicasFaltantes.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/firmarDocumentoFiscalia.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/firmarDocumentos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/firmarDocumentos2.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/generarOrdenTrabajoCustudios.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/generarPlanInspeccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/generarReportePlanInspeccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/importacionProduccion.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/importacionProduccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/imprimirVerificarReimpresion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoCustodiaTemporalAeropuerto.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoDatosTipoTramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoFichaTecnicaArmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoFichaTecnicaArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoInventario.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistroDeProduccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistrodeVentas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistrodeVentas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistrodeVentasTraspasoDominio.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistrodeVentasVariasArmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoRegistrodeVentasVariasArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/ingresoTestPsicologico.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/inspeccionCambioArchivo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/inventarios.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/inventarios.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/mantenimientoDocuAlfresco.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/modificarPlanInspeccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/notificarFechaEmision.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/notificarFechaEmisionReporte.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/origenTramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/preguntasParaEvaluaciones.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/recepcionarmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/recepcionarmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/recepcionarmasnoenviadas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reclamoDecomiso.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reclamoDecomisoCoordinadorMilitar.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/registrarNovedad.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/registroInspeccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/registroInspeccionPlaniNoPlani.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteAgenciasSucursales.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteArmasPrevImportacion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteArticulosControl.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteArticulosControl.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteAutorizaciones.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteCashManagment.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteCompaniasCControl.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteCompaniasInscritas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteControlInventario.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteDecomiso.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteDestruccionDeArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteEstadisticasTramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteHistoricoArmas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteHistoricoArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteImportacionProduccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteIngresoVentaArmExp.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteIngresoVentaArmExpUser.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteInspeccionesRealizadas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteLiquidacionEconomica.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteNumArmasEstado.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteNumPermisos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reportePermisosAutorizacionesCcon.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reportePermisosAutorizacionesSusp.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteSanciones.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteTipoArma.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteTipoArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteTipoAutorizacion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteTipoFabricacion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reporteTramiteCentro.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/reportedearmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/requisito.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/requisitosportipotramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/requisitosportramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/revisarReporteArmasADestruir.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/revisarRprteArmasADestruirJefCC.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/revisarRprteArmasADestruirJefDep.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/revisarTramiteTotal.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/revisarTramiteTotal.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/sancionespordecomiso.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/sitioAlmacenamiento.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/solicitudCambioDeposito.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/solicitudCertificado.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/tiposarmasexplosivos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/tipotramite.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/unidadTipo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/validarDeposito.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/validarTramiteGuiaLibreTransito.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarArmas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarArmasInformacionRecepcion.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarArmasInformacionRecepcion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarInformacionCertificado.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarInformacionDevolucion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarMaterialDecomisado.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarMaterialDecomisado.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/verificarReimpresion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/.svn/text-base/visualizacionSitiosAlmacenamiento.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/prop-base/_armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/prop-base/_guardias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_agencias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_armas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_direccion.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_documentos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_generales.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_guardias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_requisitos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/_telefono.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/solicitud.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/20/.svn/text-base/solicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_agencias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_documentos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_generales.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_guardias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_requisitos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/_solicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/prop-base/reporteConsultaSolicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_agencias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_armas.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_armas.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_documentos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_estadossolicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_generales.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_guardias.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_requisitos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_solicitud.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/_solicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/reporteConsultaSolicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/61/.svn/text-base/reporteConsultaSolicitudCliente.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/TipoArmaExpLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/armaExplosivoLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/armasLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/buscartramiteLov.xhtml.netbeans-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/buscartramiteLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/calibreLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/cargasLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/catalogFilterLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/catalogoArmaLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/centroControlLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/certArmasLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/claseLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/conocimientoLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/longitudLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/planificacionTramiteLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/provinciaLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/respuestasLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/sancionarLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/sitioAlmacenamientoLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/armas/lov/.svn/text-base/unidadTipoLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/assignments.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/creategroup.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/createnotification.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/createusertogroup.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/endedflows.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/exportflows.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/field.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/fieldtransactionmapping.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/fieldtransactionorigin.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/flows.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/rules.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/tasksrv.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/.svn/text-base/transactionlog.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/bpm/lov/.svn/text-base/groupslov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/bpm/lov/.svn/text-base/transactionbpmeLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/customer/.svn/text-base/personview.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/21/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/customer/21/.svn/text-base/_address.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/21/.svn/text-base/_natural.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/21/.svn/text-base/_telephone.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/21/.svn/text-base/naturalpersonfast.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/40/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/customer/40/.svn/text-base/_address.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/40/.svn/text-base/_juridical.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/40/.svn/text-base/_telephone.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/40/.svn/text-base/juridicalpersonfast.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/customer/lov/.svn/text-base/juridicalLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/lov/.svn/text-base/personLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/customer/lov/.svn/text-base/personViewLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/firmas/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/firmas/parametros/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/firmas/parametros/.svn/text-base/certificados.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/balancetype.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/catalog.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/catalogdetail.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/chargesgroup.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/messagetemplate.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/messagetemplatesdesc.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/module.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/permisosAutorizaciones.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/permisosAutorizacionesAnular.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/process.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/services.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/transaction.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/transactionprocess.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/transactionreport.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/.svn/text-base/transactiontime.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/100/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/100/.svn/text-base/_product.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/100/.svn/text-base/_subproduct.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/100/.svn/text-base/_subproductcurrency.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/100/.svn/text-base/productdefinition.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/101/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/101/.svn/text-base/_charges.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/101/.svn/text-base/_subproduct.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/101/.svn/text-base/charges.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/13/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/13/.svn/text-base/_querycode.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/13/.svn/text-base/_transaction.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/13/.svn/text-base/consultationprocesses.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/31/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/31/.svn/text-base/_branch.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/31/.svn/text-base/_office.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/31/.svn/text-base/branchandoffice.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/text-base/_menulevel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/text-base/_menusublevel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/text-base/_menutransactionlevel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/text-base/_menutransactionsublevel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/60/.svn/text-base/menu.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/prop-base/_insdel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/prop-base/_update.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/prop-base/audit.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/text-base/_insdel.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/text-base/_update.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/audit/.svn/text-base/audit.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/prop-base/entityLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/prop-base/usersLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/activitypersegmentsLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/balanceTypeLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/bpmFlowsLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/bpmRulesLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/branchLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/catalogLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/entityLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/menulevelLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/menusublevelLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/messageTemplatesLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/processLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/profileLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/transactionLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/userLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/general/lov/.svn/text-base/usersLov.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/prubaInicioFlujo/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/prubaInicioFlujo/.svn/text-base/pruebaInicioFlujo.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/prubaInicioFlujo/.svn/text-base/validarDepositoFlow.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/reports/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/reports/.svn/text-base/reportpentaho.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/safety/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/safety/.svn/text-base/changepasswordadministrador.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/sbs/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/destinos/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/destinos/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/destinos/lov/.svn/text-base/lovdestinos.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/sbs/empleados/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/empleados/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/empleados/lov/.svn/text-base/lovempleados.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/sbs/solicitud/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/solicitud/lov/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/sbs/solicitud/lov/.svn/text-base/lovsolicitud.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/_changepasswordExpired.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/activateuser.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/changepassword.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/menuforprofile.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/modifyuser.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/profile.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/profiles.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/securitypolicies.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/terminal.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/transactionperprofile.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/user.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/userperprofile.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/security/.svn/text-base/userreport.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/test/.svn/entries delete mode 100644 frontend/src/main/webapp/pages/test/.svn/text-base/bpmcatalog.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/pages/test/.svn/text-base/catalogwpa.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/css/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/css/.svn/text-base/maia.css.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/ajaxloadingbar.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/blanck.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/degrade.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/fondo-old.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/fondo-sincoar.jpeg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/fondo.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/green.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/icono_venta.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/incdec.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/index.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/index.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/index_respaldo.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/inicio.jpeg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/jurisdiccion.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logo-maia.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logoSBS.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logoSBS2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logo_SBS.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logo_comaco.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logoagua.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/logoblanco.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/prop-base/red.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/ajaxloadingbar.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/blanck.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/degrade.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/fondo-old.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/fondo-sincoar.jpeg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/fondo.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/green.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/icono_venta.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/incdec.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/index.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/index.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/index_respaldo.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/inicio.jpeg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/jurisdiccion.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logo-maia.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logoSBS.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logoSBS2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logo_SBS.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logo_comaco.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logoagua.gif.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/logoblanco.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/.svn/text-base/red.jpg.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/images/bpm/.svn/prop-base/stackTraceOff.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/.svn/prop-base/stackTraceOn.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/.svn/text-base/stackTraceOff.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/.svn/text-base/stackTraceOn.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/BajaDestruccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionApertura-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionAperturaV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionAutorizacion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionAutorizacionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionDevolucion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionDevolucionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionEmisionGuiaTransito-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionEmisionGuiaTransitoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionImpresion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionIncrementoArmasV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionInternacion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionInternacionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionPermiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionPermisoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionTramite-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecucionTramiteV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecutarCertificados-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecutarCertificadosV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecutarInscripcion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EjecutarInscripcionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EmisionDocumentoHabilitante-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EmisionDocumentoHabilitanteV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/EnvioArmas-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/PlanificacionInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/PlanificarInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/RecepcionArmas-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/RegistroDecomiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/RegistroDecomisos-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/cargaDeposito-2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/cargaDepositoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/decomiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/ejecucionCertificadoFiscalia-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/recepcionSolicitudRequisitos-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/prop-base/recepcionSolicitudRequisitosV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/BajaDestruccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionApertura-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionAperturaV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionAutorizacion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionAutorizacionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionDevolucion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionDevolucionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionEmisionGuiaTransito-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionEmisionGuiaTransitoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionImpresion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionIncrementoArmasV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionInternacion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionInternacionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionPermiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionPermisoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionTramite-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecucionTramiteV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecutarCertificados-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecutarCertificadosV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecutarInscripcion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EjecutarInscripcionV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EmisionDocumentoHabilitante-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EmisionDocumentoHabilitanteV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/EnvioArmas-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/PlanificacionInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/PlanificarInspeccion-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/RecepcionArmas-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/RegistroDecomiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/RegistroDecomisos-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/cargaDeposito-2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/cargaDepositoV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/decomiso-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/ejecucionCertificadoFiscalia-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/recepcionSolicitudRequisitos-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/bpm/flows/.svn/text-base/recepcionSolicitudRequisitosV2-1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/close.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/f1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/f10.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/f2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/f4.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/f5.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/prop-base/preview.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/close.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/f1.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/f10.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/f2.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/f4.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/f5.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/images/icons/.svn/text-base/preview.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/bpm.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/calendar_es.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/datatable_es.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/keyevent.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/maia.js.netbeans-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/maia.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/maiaworkspace.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/script.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/js/.svn/text-base/validator.js.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/alfrescoButton.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/alfrescoDocDownload.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/alfrescoFolder.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/alfrescoPopup.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/alfrescoUpload.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/commentBpmTask.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/commentsBpmButton.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/commentsPopup.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/dialogControls.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/lovTransaction.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/pageControls.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/pageEvents.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/reportPentaho.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/maiaComponents/.svn/text-base/signature.xhtml.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/.svn/text-base/theme.css.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/entries delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_flat_0_aaaaaa_40x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_flat_55_fbec88_40x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_glass_75_d0e5f5_1x400.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_highlight-hard_55_3c73bb_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_highlight-hard_85_5e9ed0_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_inset-hard_0_ffffff_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_inset-hard_100_f5f8f9_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-bg_inset-soft_95_f2c8b7_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_217bc0_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_2e83ff_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_3e8d36_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_469bdd_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_cd0a0a_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_d8e7f3_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/prop-base/ui-icons_ffffff_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_flat_0_aaaaaa_40x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_flat_55_fbec88_40x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_glass_75_d0e5f5_1x400.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_highlight-hard_55_3c73bb_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_highlight-hard_85_5e9ed0_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_inset-hard_0_ffffff_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_inset-hard_100_f5f8f9_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-bg_inset-soft_95_f2c8b7_1x100.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_217bc0_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_2e83ff_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_3e8d36_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_469bdd_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_cd0a0a_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_d8e7f3_256x240.png.svn-base delete mode 100644 frontend/src/main/webapp/resources/primefaces-maia-theme/images/.svn/text-base/ui-icons_ffffff_256x240.png.svn-base delete mode 100644 frontend/src/test/.svn/entries delete mode 100644 frontend/src/test/java/.svn/entries delete mode 100644 frontend/src/test/resources/.svn/entries delete mode 100644 reports-jsf/.svn/dir-prop-base delete mode 100644 reports-jsf/.svn/entries delete mode 100644 reports-jsf/.svn/text-base/.classpath.svn-base delete mode 100644 reports-jsf/.svn/text-base/.project.svn-base delete mode 100644 reports-jsf/accounting/.svn/entries delete mode 100644 reports-jsf/accounting/reports/.svn/entries delete mode 100644 reports-jsf/accounting/subreports/.svn/entries delete mode 100644 reports-jsf/armas/.svn/entries delete mode 100644 reports-jsf/armas/reports/.svn/entries delete mode 100644 reports-jsf/armas/reports/.svn/text-base/actaDevolucion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/actaDevolucion2.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/actaEntregaArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/actaEntregaRecepcionArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/actaRecepciondeArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/aperturaAgenciasSucursales.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/certificadoArmaCrear.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/certificadoArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/certificadosArma.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/certificadosArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/comprobanteCaja.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/controlInventario.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/destruccionArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/entregaArmasacta.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/estadisticastramites.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/fichaTecArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/fichaTecArmasColeccion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/fichaTecArmasNoLetales.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/generalReport.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/generalReportHabilita.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/guiaLibreTransito.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/ingresoVentaArmasExplosivos.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/inspeccionesRealizadas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/liquidacionEconomica.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/ordenTrabajoCustodios.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/planInspeccion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/prue.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/pruebaAndres.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/registroBalistico.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/registrodecomisomaterial.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/repo2.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteAgenciaSucursal.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteArmasCompania.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteCertificado.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteCertificadoNoLetal.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteCompaniaInscrita.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteCompaniasCControl.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteDecomiso.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteHistoricoArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteImportacionProduccion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteInscripcion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteNumeroPermisos.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reportePermisosAutorizacionesSusp.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reportePermisosAutorizacionesxSuspCcon.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteTipoArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteTipoArmasCompania.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteTipoAutorizacion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteTipoFabricacion.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/reporteTremiteXCentro.jrxml.svn-base delete mode 100644 reports-jsf/armas/reports/.svn/text-base/salva.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/entries delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/armasLeidasExistenBodega.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/armasLeidasNoExistenBodega.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/armasNoLeidasExistenBodega.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/custodiosSubreports.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/fichaTecArmasSub.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/firmaGeneralReport.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/firmaUsuario.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/informacionAgenciasSucursales.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/informacionArmas.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/informacionGuardias.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/listarDocumentos.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/registroBalisticoSub.jrxml.svn-base delete mode 100644 reports-jsf/armas/subreports/.svn/text-base/requisitos.jrxml.svn-base delete mode 100644 reports-jsf/bin/.svn/entries delete mode 100644 reports-jsf/general/.svn/entries delete mode 100644 reports-jsf/general/reports/.svn/entries delete mode 100644 reports-jsf/general/reports/.svn/text-base/audit_final.jrxml.svn-base delete mode 100644 reports-jsf/general/reports/.svn/text-base/currency.jrxml.svn-base delete mode 100644 reports-jsf/general/subreports/.svn/entries delete mode 100644 reports-jsf/images/.svn/entries delete mode 100644 reports-jsf/images/.svn/prop-base/comandoconjunto.jpg.svn-base delete mode 100644 reports-jsf/images/.svn/prop-base/logoSBS.png.svn-base delete mode 100644 reports-jsf/images/.svn/prop-base/logo_financieraavanza.png.svn-base delete mode 100644 reports-jsf/images/.svn/prop-base/selloarmas.JPG.svn-base delete mode 100644 reports-jsf/images/.svn/text-base/comandoconjunto.jpg.svn-base delete mode 100644 reports-jsf/images/.svn/text-base/logoSBS.png.svn-base delete mode 100644 reports-jsf/images/.svn/text-base/logo_financieraavanza.png.svn-base delete mode 100644 reports-jsf/images/.svn/text-base/selloarmas.JPG.svn-base delete mode 100644 reports-jsf/loan/.svn/entries delete mode 100644 reports-jsf/loan/reports/.svn/entries delete mode 100644 reports-jsf/loan/subreports/.svn/entries delete mode 100644 reports-jsf/security/.svn/entries delete mode 100644 reports-jsf/security/reports/.svn/entries delete mode 100644 reports-jsf/security/reports/.svn/text-base/transactionsperprofile.jrxml.svn-base delete mode 100644 reports-jsf/security/reports/.svn/text-base/user.jrxml.svn-base delete mode 100644 reports-jsf/security/reports/.svn/text-base/userperprofile.jrxml.svn-base delete mode 100644 reports-jsf/security/subreports/.svn/entries delete mode 100644 reports-jsf/security/subreports/.svn/text-base/menulevelsubreport.jrxml.svn-base delete mode 100644 reports-jsf/security/subreports/.svn/text-base/menusublevelsubreport.jrxml.svn-base delete mode 100644 reports-jsf/security/subreports/.svn/text-base/transactionmenulevelsubreport.jrxml.svn-base delete mode 100644 reports-jsf/security/subreports/.svn/text-base/transactionmenusublevelsubreport.jrxml.svn-base delete mode 100644 reports-jsf/security/subreports/.svn/text-base/userprofilesubreport.jrxml.svn-base delete mode 100644 reports-jsf/style/.svn/entries delete mode 100644 reports-jsf/style/.svn/text-base/style.jrtx.svn-base delete mode 100644 tools/.svn/entries delete mode 100644 tools/hbm/.svn/entries delete mode 100644 tools/hbm/.svn/text-base/.pmd.svn-base delete mode 100644 tools/hbm/.svn/text-base/pom.xml.svn-base delete mode 100644 tools/hbm/src/.svn/entries delete mode 100644 tools/hbm/src/main/.svn/entries delete mode 100644 tools/hbm/src/main/java/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/AbstractColumn.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/AbstractMapper.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/BeanGenerateOperation.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/HBMapper.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/MappingType.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/.svn/text-base/Reference.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/ann/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/ann/.svn/text-base/Mapper.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/ann/.svn/text-base/MapperColumn.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/xml/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/xml/.svn/text-base/Mapper.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/bgenerator/xml/.svn/text-base/MapperColumn.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/helper/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/helper/.svn/text-base/HqlStatementHQL.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/helper/.svn/text-base/PersistenceHelperHQL.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/helper/.svn/text-base/PersistenceManagerHQL.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/helper/.svn/text-base/PersistenceMetadata.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/entries delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TEntity1.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TEntityKey1.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TFields1.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TFieldsKey1.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TgeneEntity.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TgeneEntityKey.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TgeneFields.java.svn-base delete mode 100644 tools/hbm/src/main/java/com/fp/hbm/persistence/.svn/text-base/TgeneFieldsKey.java.svn-base delete mode 100644 tools/hbm/src/main/resources/.svn/entries delete mode 100644 tools/hbm/src/main/resources/.svn/text-base/cfg.properties.svn-base delete mode 100644 tools/hbm/src/main/resources/.svn/text-base/hibernateFlip.cfg.xml.svn-base delete mode 100644 tools/hbm/src/main/resources/.svn/text-base/log4j.properties.svn-base delete mode 100644 tools/hbm/src/main/resources/com/.svn/entries delete mode 100644 tools/hbm/src/main/resources/com/fp/.svn/entries delete mode 100644 tools/hbm/src/main/resources/com/fp/hbm/.svn/entries delete mode 100644 tools/hbm/src/main/resources/com/fp/hbm/persistence/.svn/entries delete mode 100644 tools/hbm/src/main/resources/com/fp/hbm/persistence/.svn/text-base/TEntity.hbm.xml.svn-base delete mode 100644 tools/hbm/src/main/resources/com/fp/hbm/persistence/.svn/text-base/TFields.hbm.xml.svn-base diff --git a/.svn/entries b/.svn/entries deleted file mode 100644 index e192f99..0000000 --- a/.svn/entries +++ /dev/null @@ -1,117 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources -svn://172.17.26.185/COMACO - - - -2022-04-19T03:16:43.485564Z -4669 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -frontend -dir - -tools -dir - -clients -dir - -appletFirma -dir - -transport.xsd -file - - - - -2022-07-28T03:40:48.334827Z -4f536f6eb1bf511b9104963f7b7a495c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4147 - -base -dir - -centralwebservices -dir - -pom.xml -file - - - - -2022-07-28T03:40:48.334827Z -1d49d454883b8d88c61293062edf98e0 -2014-12-31T05:29:42.479725Z -3704 -cpiedra - - - - - - - - - - - - - - - - - - - - - -26244 - -reports-jsf -dir - diff --git a/.svn/text-base/pom.xml.svn-base b/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 992e7f0..0000000 --- a/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,687 +0,0 @@ - - - 4.0.0 - com.fp - FlipBean - Maia - 2.1 - pom - - ISO-8859-1 - /app/maia - - - base - clients - frontend - - - Mantis - http://190.57.146.125/mantis - - - - flipbean - Flipbean - flipbean.s.a@gmail.com - - Project Manager - Architect - - - - - scm:svn:svn+ssh://maia/repo/fuentes/sources - http://192.168.2.201/svn/fuentes/sources - - - MAIA - http://190.57.146.125/tech - - - - - org.apache.maven.plugins - maven-compiler-plugin - 2.3.2 - - true - ${project.build.sourceEncoding} - 1.7 - 1.7 - - - - - org.apache.maven.plugins - maven-ejb-plugin - 2.3 - - 3.0 - - - - - org.apache.maven.plugins - maven-site-plugin - 3.0 - - - - - org.apache.maven.wagon - wagon-ssh-external - 2.2 - - - - - - - org.apache.maven.plugins - maven-project-info-reports-plugin - 2.4 - - - - cim - dependencies - dependency-convergence - dependency-management - index - issue-tracking - license - mailing-list - plugin-management - project-team - scm - summary - - - - - - - maven-javadoc-plugin - 2.8 - - 1.5 - es_EC - ${cfg.path}/stylesheet.css - gr.spinellis.umlgraph.doclet.UmlGraphDoc - - - gr.spinellis - UmlGraph - 4.4 - - -inferrel -inferdep -quiet -hide java.* - -collpackages java.util.* -qualify -postfixpackage - -nodefontsize 9 -nodefontpackagesize 7 -attributes - -operations -enumerations -enumconstants -visibility - - - - - org.apache.maven.plugins - maven-pmd-plugin - 2.5 - - true - ISO-8859-1 - 30 - 1.5 - - ${cfg.path}/Rules.xml - - - - - org.apache.maven.plugins - maven-checkstyle-plugin - 2.8 - - ${cfg.path}/checkstyle.xml - - - - org.codehaus.mojo - findbugs-maven-plugin - 2.3.2 - - low - Max - ${cfg.path}/findbugs.xml - - - - org.apache.maven.plugins - maven-surefire-report-plugin - 2.10 - - - org.apache.maven.plugins - maven-jxr-plugin - 2.3 - - - - - - maia - scpexe://gfiallos@localhost/app/maia/bin - - - maia - scpexe://root@localhost/srv/www/htdocs/tech - - - - - release - - - - /app/maia/bin - bpmlib - - - - - org.apache.maven.plugins - maven-source-plugin - 2.1.2 - - /app/maia/bin - ${project.artifactId}-src - true - - - - attach-sources - - jar-no-fork - - - - - - - - true - - - - jboss - - true - - - true - - - - up - - false - - - true - - - - - org.apache.maven.plugins - maven-jar-plugin - 2.3.2 - - /app/maia/bin - - - - - - - - - - - - junit - junit - test - - - - - - org.apache.maven.wagon - wagon-ssh - 2.2 - - - org.apache.ant - ant-launcher - 1.7.0 - - - org.apache.ant - ant - 1.7.0 - - - - - - org.hibernate - hibernate-core - 4.0.1.Final - provided - - - org.hibernate - hibernate-search - 4.0.0.Final - provided - - - org.hibernate - hibernate-entitymanager - 4.0.1.Final - provided - - - org.hibernate - hibernate-validator - 4.2.0.Final - provided - - - - javax.servlet - servlet-api - 2.5 - - - javax.servlet - jsp-api - 2.0 - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - 1.0.1.Final - provided - - - org.slf4j - slf4j-log4j12 - 1.6.2 - - - groovy - groovy-all - 1.6.4 - - - commons-beanutils - commons-beanutils - 1.7.0 - provided - - - commons-collections - commons-collections - 3.2.1 - provided - - - log4j - log4j - 1.2.14 - - - net.sf.json-lib - json-lib - 2.2.3 - provided - - - xom - xom - 1.2.5 - provided - - - - xalan - xalan - 2.7.1 - provided - - - xerces - xercesImpl - 2.9.1 - test - - - xerces - xmlParserAPIs - 2.6.2 - test - - - xml-apis - xml-apis - 1.3.04 - test - - - jdom - jdom - 1.1 - test - - - msv - xsdlib - 20050913 - test - - - msv - relaxngDatatype - 20050913 - test - - - xpp3 - xpp3 - 1.1.3.3 - test - - - stax - stax-api - 1.0.1 - test - - - pull-parser - pull-parser - 2.1.10 - test - - - net.sourceforge.jtds - jtds - 1.2.4 - test - - - com.jaspersoft.ireports - jaspersoft-ireport - 4.7.0 - - - com.jaspersoft.ireports - ireport-jasperserver - 4.7.0 - - - net.sf.jasperreports - jasperreports - 4.7.0 - - - org.codeartisans.thirdparties.swing - org-openide-util - 8.6.2 - - - com.jaspersoft.jasperserver - jasperserver-common-ws - 4.7.0 - - - javax.xml - jaxrpc-api - 1.1 - - - commons-digester - commons-digester - 2.1 - - - com.lowagie - itext - 2.1.7 - - - oracle - JDBC - 6.0 - - - jaxme - jaxme-api - 0.3.1 - test - - - jaxen - jaxen - 1.1.1 - test - - - - junit - junit - 4.0 - - - jline - jline - 0.9.94 - - - - - org.codehaus.btm - btm - 2.1.2 - test - - - org.mvel - mvel2 - 2.1.Beta3 - provided - - - commons-lang - commons-lang - 2.6 - jar - provided - - - commons-logging - commons-logging - 1.1.1 - jar - provided - - - net.sf.ezmorph - ezmorph - 1.0.6 - jar - provided - - - org.apache.velocity - velocity-tools - 2.0 - jar - compile - - - org.apache.velocity - velocity - 1.6.4 - jar - compile - - - - org.apache.xmlbeans - xmlbeans - 2.3.0 - jar - compile - - - org.antlr - antlr - 3.3 - jar - provide - - - org.antlr - antlr-runtime - 3.3 - jar - provide - - - org.antlr - stringtemplate - 3.2.1 - jar - provide - - - jboss - jboss-ejb-api - 4.2.1.GA - - - - com.fp.base - facadeclient - 2.1 - - - com.fp.base - facade - 2.1 - - - commons-fileupload - commons-fileupload - 1.2.2 - compile - - - axis - axis - 1.4 - - - axis - axis-wsdl4j - 1.5.1 - - - commons-codec - commons-codec - 1.4 - - - commons-discovery - commons-discovery - 0.4 - - - commons-httpclient - commons-httpclient - 3.1 - - - wsdl4j - wsdl4j - 1.6.2 - - - commons-io - commons-io - 1.4 - provided - - - javax.mail - mail - 1.4.4 - jar - compile - - - javax.activation - activation - 1.1.1 - jar - compile - - - jep - jep - 2.4.1 - jar - compile - - - org.jboss.spec - jboss-javaee-6.0 - 3.0.0.Final - pom - import - - - - - diff --git a/.svn/text-base/transport.xsd.svn-base b/.svn/text-base/transport.xsd.svn-base deleted file mode 100644 index fea28aa..0000000 --- a/.svn/text-base/transport.xsd.svn-base +++ /dev/null @@ -1,138 +0,0 @@ - - - - - Cabecera de mensajes - - - - - - - - - - - - - - - - - - Mensaje de Negocio, Altas y Bajas - - - - - - - - - - - Mensaje de negocio - - - - - - - Multiregistro A, B - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Objeto de negocio - - - - - - - - - - - Registros de una tabla - - - - - - - - - - Campo de un registro - - - - - Nombre de un campo suelto - - - - - Valor del campo - - - - - diff --git a/appletFirma/.svn/entries b/appletFirma/.svn/entries deleted file mode 100644 index 6941597..0000000 --- a/appletFirma/.svn/entries +++ /dev/null @@ -1,68 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -lib -dir - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:24.126723Z -bd2a0d053d394874dc41aafd42d7188b -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1497 - diff --git a/appletFirma/.svn/prop-base/pom.xml.svn-base b/appletFirma/.svn/prop-base/pom.xml.svn-base deleted file mode 100644 index 138f983..0000000 --- a/appletFirma/.svn/prop-base/pom.xml.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/.svn/text-base/pom.xml.svn-base b/appletFirma/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index d16a16a..0000000 --- a/appletFirma/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,51 +0,0 @@ - - 4.0.0 - - com.fp.firma - appletFirma - 2.1 - jar - - appletFirma - http://maven.apache.org - - - UTF-8 - - - - - junit - junit - 4.1 - test - - - - org.bouncycastle - bcmail-jdk15on - 1.51 - - - org.bouncycastle - bcprov-jdk15on - 1.49 - - - org.bouncycastle - bcprov-ext-jdk15on - 1.49 - - - org.bouncycastle - bcpkix-jdk15on - 1.49 - - - com.itextpdf - itextpdf - 5.5.3 - - - diff --git a/appletFirma/lib/.svn/entries b/appletFirma/lib/.svn/entries deleted file mode 100644 index 8775b1b..0000000 --- a/appletFirma/lib/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/lib -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -itextpdf-5.5.3.jar -file - - - - -2022-07-28T03:40:23.429719Z -1f8b7633f9f21668d178566e9e85fe7c -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -2237618 - diff --git a/appletFirma/lib/.svn/prop-base/itextpdf-5.5.3.jar.svn-base b/appletFirma/lib/.svn/prop-base/itextpdf-5.5.3.jar.svn-base deleted file mode 100644 index dbc918b..0000000 --- a/appletFirma/lib/.svn/prop-base/itextpdf-5.5.3.jar.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/appletFirma/lib/.svn/text-base/itextpdf-5.5.3.jar.svn-base b/appletFirma/lib/.svn/text-base/itextpdf-5.5.3.jar.svn-base deleted file mode 100644 index 0cff7af5d52073df9af491c4c9d10dd2fb3fd554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2237618 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
azZt<=MqVPxXS^gc@R_E(2-0 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

vDFZ=^xnf|085yZumC@SpS>Qvd4_K4^O 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%0DKGn?;PuR`WSJ-a;ZKUXs} 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

OU*2C88hX6sbhQz)GJuyUyQ%)U7Oz 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

wBHI7!i`EF_-;elit2t$~-FaQpN2%j4+uLf~L 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%0Doj9fPj(zfP;ho`F}Z# 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ΜW&irzqn=(}6-e4RHp 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

aFbRK<1)G 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

%m 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

  • Y$<#8|fC28>x|z(9a?`Ln_ve7Vr&gM@d}>_z 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 z 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%0AnM{69_z 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
      qHZzBlz`bMF#RpjJMuwnbGRW=+ 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

      hYqzp z?g9#jJo&HEzpV@lS8%^$^V8M4jKE4i)j6uAx}IKYbvO+HN^ zl>EtRV)A1reFDp4~1!Ng)OpC>07*|yz3iBjOcl+W9qqN2wo`~ph zt-`Q_YtyPK+2gA7oqqo}XIvvR0Fk{#QJ@aUE{7~P7hQC0tjVg@U{#dJx|EmKl|`<8 zk)2_$+N3a33-c9=ZuKNK>;q_j%56lLW5Z&Bq`1kQZKN3QQ{0{$@AQwGp~`b45pyj& z);idv!%vu249WfZlz)%t|YB{tCn zfUFWoFUBR2_xEnfD|!93$JRNG{4z88?9r%Oi^j4P^w1w&M&q+tm18} z9p_XFc02fys=W@ITc4$$ssq;p>PUN+?$v|nxOkQxNo!fB)pt-);%ApR1Zc|vyB+9; z^V#=@l!9mQMb>edh`%yplpkXtFF*CGakyLr|BHa=W_9m11lMv2+DL-K{=3zuLoc&; zX3RtLx6|+P2Gj$V4*&USMSK;PjG-4Z->9)2xXsAx>IM+HKaC4;n+b6u zzvXa9O! z#C#1e4qt&GEiF$xqZ!+@r_pck{Y#XyXNr!gF-1uld)`!Ircb@Ry{*3_P)V6|@k5C- zf>JS$mjYuh{URh^3lKcF4u5&5DS8Lps-PNIuy~Gf=k(BH?=hurP#hX0Moh(XDESGR%1N1JeYT7lD zrzvTkLc5_M+X?3s@l754VZy>9ec)iT0c!an8|nIDoEqxQGl7~a!F&G(!$mdnp697d z=1jFJj}|H$jWbal-}l6=M-<%r5_K0t<<0}ii9Z^KiWH?DN==^Yo?^6uKz`C>6SC5h zQb4xMq+>=S{5y~t6_M?*#4yQD za+RVa9Mc9gMRF}tKtO@=NkDaelrstwAZSA(uUx5-KXLJb%=b0((0Hg`TofRCIpYup zrlU@{(cTF=%crf&D29Na>0~YIGbRjxH?7o7{yW93w8Xm5m?x=N^48lTYVGto81idj z@u@t*{#LDMgw;ADu^j>}W7B3HkY}4>ve>>2+8RT71qZq1p!`Kyb^UNK7GjNt!Dp+h z9kCG5nH4WL(iM3o%%-)yo8$OWG%RXR|D=ow@Iwurl5bO`YL&Wtsx8Xg=BjAmIE(3v z2Nq#%PA%pQrh|2Z-U3D*mi)pf#-B!5)8}Q7t7le=!x1N`D?AG8xmQ%CuzUzQtojMc zrgI=f&hTx=cddxbZS;msYNhc;_UBu{i;7a`Mc~W9^aZGwZdf5=_$H+uTSiyq)bT~$ zQ5_O1_46$!qt=okeCe5D-F)5jS*r0?VX%DZy3&^Hjjnm!lAhhU-4R_i>)s3DKH_j_ zg?X>>kl2?r#+4XkCWYrW8?mPN5{%(YvL8ue!F=z z3|Ta=z|nG#j9JiLp=eY#Xqz|+u6f(J4FaJMvM$OTXT z(!RPG%_8$<5T#+0tHMjIl&3|D45eP#c5)0_Wl#h7gmr0et|t$dje@_B*76GTEeA=A z#d`2Am}}7#cHXkBiSOuhP#P7K9#$j9)K#%*+3nRE0S)tpYwZ zZkalMUjk4eVXN>=1Vg}g=Z=0gS+IZZ+CY{>MA3iI+uPRyI-t&a8iG?TL&w- zFqev%8FdTR_)MR9=jGKVr@j-|(%nWT-+yO8dL9Hh#D0Q_8K0K8$J(IJoRn^n)B{H!(Cs|D;jXr!e3cL3Z%6RPRNY%I*+MDz}mx$NUtJFJp};A5mGDxQHxc zkBG6Ux<1)_ilJy;p zpX9BJbAjycxE((z+@O?wf~I}Q;)McpO_vXNMgASs@7k6dS)5Kt52}<%wZor_U5Lys z;8zO({k?}&`w*23k#j8N^eSJZP-xB}15dyXM1Ivw16L@Yae+lKT(y4HEczB)_~5g7 ze(k)nzUEoh73S^~9M^Ck0%N#Nd%GR?=N7C!DuD3c+7MzG?>(va8`K>A?DPVo9CQWP14a}zb?sKrU+n6R;jClzA8fvb zLzQ4VnYbq~-5)XIxiQwWOu_p{^B{T-Irxc_tmSEZ<=)0huj`z(dU^+Zd2^IHVJ?u^XcMYC*QFUEX<+Au~kVD2PagDUh{YDo9{Lz62H!YK# zKmmlJH|oe|9>Pdg!pKA(LhQn^b1&KnShYxp;OH_FW_;sM%8IRkA365n(Pr+h5b)3d zwM@gAZSQ5~dmwq14P==rqG_5u%wol~ zLd87FLAPfkSc?ia3U2W{ib1`@}uwXD3*^6-wCb6-cy}3MuIZ zW&5;31^pj`Chk!XQdM#kTIGxxM&UlG5K`4+(sy*~DTVsii6k`_XyVI?uw4MLkhBY0 z*kT*`kdEv`lFGVtlCo?xEgPK>4x4re0h@XV+Z97Ory8GJh_PxaX{TbJWC*HiptMt! zPc}rqic-cN!m~VVKy^OF;Q9p*T5k21V#wq2BSnYs-(CppDr_02#&>8~Mir*CJ=SLz z*sqE&nIOBx0AWbHJr?R>yrLoW)Oe*K951+#JNC3EOCw5trPdQjZZLxo^E+1cM$HPz zUN~!=l6c_rxtmVXY{~Pvs?I+)>3+_uljTsXe$E-)Ra^R3<>HtpdTPxY^))Cxn2Cll zFl4R)MQ{x56-;U<11G57iQg}-^$t-n)X^EqFH+%7fH8vj4(AoMdyh&Fanp(6GZv_< zQxJ#1RQ%KdRtZyryhc7YqZQ^^LQFhl;s=N6ha0)arxj9gp!|s>hkMXq=fQkpCZ%{y zF0dujj!vz_|5VpxYv_6xKt1xD>R|vhfvD61Ooi;HM$B~jCR8P^?-aD`qHw)K6PQ?Rd!`l5GB9zJ89LrTQ)og6ICRSlfgYyM zg`MGsk1y=R2G0_qR18LKdkbgIwz*_(A%xG%8g%DHdJ2i?UPq!2F6-b!0)j$~D8x1o zdgW-yZgdsStsCiKmwIMJ3Tu||L%ps^YV{+17Q2&gX;HO7OR(<* zItG2~K~)t_@+bEIQcX8Jwg7mIo`ger?tPPmUiYlKe`il~&L#D+=vCFf$^wYB9rz>An>|tQ$XWu@_v;ucbY1enQ1xZ2NlrkwXXk z9jHt}y7!|0LD@M32@)<`wrtzBZQHhOySi-Kt}ffQZQHhu={GMXVpf05>@sqn8TsY8 z_goK1`cU_KC#elDO2XSlat2D>8#y%6H00}GlP2h6uok0nw(;seJtkHBzp-2+NPxn|+DZwVvOnhVs6 zMa>q}1)#LC`adBbFzc_;(ogd*G(Mhcz7b`!rmEsjqsWSRvm0oN`ePkb1wHAwLh3cP zy6q<}<@Bau+oV3%zMhW-!tE6t zJ&}pt(9%_u zWclCJx`e5X!~e;ySF36(FDfAXz*WN*A!-jtq6?tZvt!>W(TgSnsWyR*9)OCN3vn)S z*e*&c)BYgqdq1Pco`&15GvK3@Co-mJ^^`22o>_Hm$@;0Ou@ zQWZi&)<=(<^ib?4!sOMxIcTQWN=Qt^JF1Qt>L90H9(V`~NnIfuwNn}@4bXz^2J6jN zOM=OBJf!z?+g3S-3Tt)`oL(NQ+R<56k~ZMXV1ZUYX)wDwx<%_<7V8;@n?j3eF4OMR zRajqI73!!yJ2e;aP4kX9J5ik5w|l0gRcy&HJ}vofU_|bB>pE{OoSbo{_!M`qsB9~s zU#KXNk(>~M46ehSL0B)*hAMdJfsGSdWxeGRVH~ZC z1+>Z`*)fA`3(;Vq=+vTMs&P||`4#O*6%?sPT15o~GgN$)Wo;KqRqIt_l?<<%QG*)C zFw`gj!MFE4g$|d>C~v+M;`N>+)YR5GC++Y1p5D{Qf=*$(Huf=hoOS=OZKoh8p+4euJjs zIHlXC&FKk`Agr}Nhb*gi30(8kP3G|E5?x#nwLTOL_#)FV!~8z}So~PG3`Vh~UGKe^ zdjPZAtvBz-p)nthKhX#ib>Y0%o2E>$hF|yJ+7C#D=;9Z+yJb4tD$W zi{VBY{sF`fc=PNR(O$qRNRr|%{1$M5z9Qyz*~h5n+bk={Q!57TbIi`~7I%UF8~lh3 zb@G=N=@*Lf2k?QdBei93d^qc_CkVy%ppVVlB(Z?8!Sxm)n1a9o8nEb`M_7;<;xJa$ zqXQKM7^4YQoI!-mj34$8MwH|7h*8LC#&9X&G54#hiQJfkyoHz?`;l$_(FFTJsSaEF z?zG^3jhy0M0~tK)Y&)CWHb6GgJy!{DkWl=PfJ7@z;*e=rpYY~1cn(4_zgBmC1&egV zapIV#9K9l`=Ax)Nr6bLXS7gFZ9anTpv0KP@fVoLqAGu$))u@~80`|*-AUsB&3e|~I z7_Kz$$Ippr=vo8a_aBM?hmd%-rxgSS02l@TpU?!&|J&24BqH`-Dv`qVpIXWC>6SbB zBa^291_VN)08+~pph#-GKOsm231A`t7*`{=h)8U#S1PH% z1G~!a?TZC{>+NQ{UhUoXmZm(J1*PTXsdykJaa6B-7Orua}t~w4x zw|y7#1(CrF9?pS?Mja2588<=_x-)U8UmD|aT)3C6HhcS2xN*yl z&9S5BYiB^{HT$xommWa1xn+lvUwW4Vu4j_}CTdpdMa7c>E-@QZ@UdN!(4BHKySCg@JgiR_{%G!ChhQMGet$f^fUOQSfZ#2IRH|;;Q9%Qu<5p4_$Cu?>}L1 zXOCVrqrKSTW*iUP(3gzsV^7KUJ>RHtXU*S0zuMyQdsps>e1FA8qdYh5UAux!-??$! z@4jAXuB1J0O}X@D($yK>q|n_A+2w1U4wmWG!dDqg$c1Z;M_sw}@+9`KF}w?7J6*aW zPT9HZ!&dDL->T{U{ajtWhvR#Y!@XU&hv(X*#m;`@7u@A`#o@2xai`u1&(`zt{AuRlDLseU&rBvKj=Wz|; zQ&)8@b%B#vkrb9f3Xm<;d6fYx> zEp&sBMFoWWbN9fZvXNQGDG@Fh>=FfJpU;73+^j{)W1i1@MOsXFgzwSOEtU-4jhE+M z*}erd*HZ-7+sZj-w1S*0XZhOH6i;-%qg1<#tta4pa)cK}Kn)Q#y!V{djB6`vR@c9H z#JmmxG>x}gkH?jM!ln?)?h%og{Wk=;m_%ZMj0s5?5nwX)9w%q-h5 zZdF`+eC50&`7A?qlA1e9HbjCX20s%j5y}$9aBA;}psfHr0Yism5f!n0BAZH7C~MU| zVrzIvCF^J94lMI+dYTW3aT;-i&7L8P{ogRD@E>8r#a$V%Q1N0_Jfe5P=$UccDNJ0x zN0deJ7UbdDyEot>hq$_^=?B zLDuiLaJ<1u>c9Xup$r#ck{4?v2lw_4<#{X%;L!B>Mm_lZ1!yny9;}S%8WDx zM9SMFTr}meJA070wjYugJt+xZ;VkR{5j$MWC}$9CSzW>LjOk|?2F@XggH^)!N!%3u zg$MpoK!ADYhIyDOg8ljCQLd}`O~FC9(}vbQ4}_+jp{!>FzCN@xYi11`Mwzw-kb^=i z*{o<8@>oYR0S(60YPeD`MaxY=Z-|uPu#*ksX{HM+B*nuvFA4S4M3-jYA>mLhw;5pv zZUQrkp(%4UUqQihUHy|n5-sv^xzP;dr+o$tC`G^Lu}QRk(-?sbDc;aw)_zwljw%!& zoVMi}J!>$m;N4Vairy^Wv_W(xFjNw3K+G6BfegnA1)7aw^W1?%VqcIbSnEM5Dk{a$ ze;EjjLMIa7EKOI|Bk*<%FBh>Z%;}bY5OZJLjH1=AxJO`!?pURAOEn-yJ_O=pmNrEe z2y$4xzM`hu_Cn%)B-lv?<(1}}Ct_94ilGN~*jh-#vsOP4~|Llm>6Qv@2kQ7NkTF1D7K;* zt{EnAHiG<^_W;+#GmOrtMk8u5-`qW7=Jnb41U(=KFXNBX0KN8of$>7cVg5x1S@sy) z*8SBp#(L*9-_T<2Z1p@K_1GMckKnxp2&anjemb=?CTwPON^rSo<-~`#IaZtz%>5CG%XkDeUU%aCS|Q=3bVC>2xZQe zk%5QxKA<-NpAqmJ`KGECl5VNxIoJ1l*y$A36_sv73G?QoZSw&yhTd*x7(9ugdyYM@ z|B`rMDp&$c;c z#l*eo{i7ghuG!Mj6+8k%H#4I`u`g@74(1zh%Y82m{2QUqd2bEe8?Z`2XquFioCc=7 zk`~Xub~;x@vuS4Wcrq=T6-NODq8(*EmBn7`@iBFf!3+&q$j~&5|Kfu7A)M3@QRJ5( zweQ*>?h(i7oPxG#zVI$)>6omN85ry=sNM8_=9o=#ChO^%o)#N>I%7}GJRp`~>JXAA(w`$&>pNHwBZHjhXi+H9XI(f{M~4 zT&0Ic_Bub4-Gt4?vUHPJl_)_#(S1x+O9rn@LJFBghdq{Q$is|Vwg@{tIFyiSNfo>t zm*Y*AaR_9GEy0D3NfZrN{Q#w?NYaR@eB=RZqSw1JhaWo3AbZ`mIkG(+p$!R7f{8i9 zD_%Il65(-w4BvMkth-+YJ@Uj3=$rw zSfp&fqwTd$#hNVHup_oF4JK1Lag9|r$I@#!DM`6N{KUzA)9Q};u|ED@i&?zAY!fw{ z}*=TD@=nNf9sek|nF7u;#?NmoyyD)3?p z|GuO|`OfY_)s`K-HI(#pz0#!l0`34SeJKINv(5?dE05D(=_sQBY5&l?^?V)AvLbZyXhOqSV+UdzXavz+a zvh*_B>B&5H9-KT{{Dif=(`4@Avgb)ZdL5jwvi!T`&pmk^nU*ho_W@pc9h#;Ob<|m? zV0`YmknL{%qr6zPvjkVk{(OG%o&Lvs4s)qz@iC4iOWNURH}T;E;PD6#;gw>GpD}tz zAX{<`Kz?DYj$xnjjkz1~2RxSyh70tuPw*FDW^xl;%UBS9P7n@@oaJO2Ja$0O;U%C4 z9O>}^A9NK@VuE@LSPZW}>^fjSX#aTtf{3DB1c|2}UF@WILeJr~p91Tt{|q9T?O8|) zp7&}boP>SoAX$?vpK`kwD07!yhYy1wzQg}fMi3fUiKD@1!bg;1d zuB+gH=MB0m|HvbEAq21hV)=bhH7^4V7=%Uy>6*?lvOfeV-c(U0N)oyJ(i`^zS! zcnvD}nwIG{O-WTx-VJlOByn^NL)a01sn&Rs1gKu??g6Y5EqX~1{fU=HM{1<%pm-w> z$+Vjtdt%KTq`r<;=tpplV=UP6#*#vnG0UKuY(^mTrT9BSsrKya-x9dV6NQmQu-@W{ z+^e#&3A?f{vlCdHwChZ;Leb?%8WMj`o%hHFv8BOMMS*w&hguNyf>7_cvH|P||9GS= z-SOFk!S55jVbF#B23?j7_W<{hg!l+UeXv9Raw9#$2Y(}fC7EDB1L&_uMzA0C&Y!13 z_55YWWIC}bW;@*8n~}Z@3gmGo?4;Yw)S|cu#e5N}KVAgMo?|UaIzqE%>1DAcH@OX37~!L! zK8w+q5W;#MP-JxxoBeS=NZmeunE=!t6M8x_fageLe;p_Qq_~0d((d0@T)xgP14;)0 z3Iq1b!i*p`r0F1p9qmKG0ryOYT4aQkVgOFv6Db>!(Fo8~h*RF<$c7@{XR#>IxGJPh+zs-D_(%rCCJUm)Kd5UGH{?*wk3H`Z(bBd zIv-MK4RsS%EJ0`p16$VTi4t2rO-+(*%KOQ0)UEoeKqHlOnG9x41G{q4p0?Q$-QH(| zA@)=gVCVr6JQ@JTQK>a9otf=y9Q7cnRHF;!k&FML;<6!-vc$(ghl#y| z$x$)a0#4Ik$IZapZ+lZ0VJE!@pwzGl^1(wE_A^7v`!LZNt;NRQZ3_8O{QP(2vJSv5 zfNT#!%imR!@u+biU+8rY$fH9zjqtPqMh{Guz2iEpPKnQLgucpsl`b&f5bk}UE;zao z>^-F}#F_!THaz=)tUI+f%-dk_d-yx^E^NIauf19i{H|E9J>9Di_&Rw@3trQH0*H&c&H#Cta7Gz|Gf=> z%FpnDR#R8}IjqYrMY^$D`tf35l67!$7r}(cm~)yj6)I-63JotJe$PKjQ(~0(m`esQVt$Y;Uw zD4$%U&k&z6iZ9rd_}%4Bvc%pMNPO$&IG>0?zc75Q>FC@LW(cxTkB3+2r!TGg!|p<} zKd;9&Vc9u-q{kCTrCzobjp!?`0gKm^j#@~Pbf(<0#a1p&Y}%`4qdG+>gKKi1M+Kj%~WZ&Dv!_iwe!jPaL;Jz{#G`U6lL;Z+jU5cM4?Qg>KR0%!*CM7-ieUSB55d4 zllCYWQK^PmG{~F`ipPS$65uOE32hLD5zrP5JJTW2Bi9|;(}C5a+8vV8!CRw{)`(9A z`4qw6qntd1RQjBaD8FQJfN#T1?=t=w?nGd}D6AL-tNKjl{VfkXrclTaQ0mbhgTYIq z$g*kw*)p2;6bn$PgO|%}$Uk9}4Szv36_K(*F3V~>vveMDtulWkpQEAz2Uy;;IIZAF zSM0|ca7?->@942e70wy6sq#1bAYo06e+kp&US1)+r3*zI6fT-{vaV>28d(}_Q^oRL zsFi5Nzu|gXai6(6Qm%Qsus5vFYT5M9uT2)@a=FJg#^TmOxJ|;^wh?O11KPXpNMH`p zQD1c+#DdB~7)Mq}j1}lr#OJg|h3DqWP?y*z20k?E>md>?*8r8WfjZ7WTGyZshsxtg z<$^2^To!KG7H%^X2xmg69O0J2uZvb64P)8>GKWLvsC$DhGF zWJ?!*^;s@%JNd=D(}1#soB70ts^XnYxWM0)Y36OnPN#OEb3EVAsUVMztyi3;R2t8* z5LN{O*C6Q}X`_)=g+tpC*4ir6>_ zrl$dN+MBaBbY9C_^jKf6Z7E~zB*$JV$yAQxUB)%j756C^#zF_Dh^!HHf@pp(see(&uD|sXh;$d{R#(! zyjLmT+=Vy&?TIP;zA0jq1p~-bGn~LsKV|0wsk;4y7FeLeA~OL~t71YxY;oF}?vn!+ z2(_~SLN-LwD@_NyX{GPEqHbu4?p{KmjLVyDrKu?dEt6N3h6yVWoq78@-otdV!lZ5R zA`g%$OkPV@?b=vOc|@Ks87oHb>}(lfR#OEk+*pn*r6Ue1D2mHfqBv2C;l?6@6x0O|z8iNXK&O;henn5%)T+99`Thf+x^Bi^_!(NqI*FM>2gzG~)!UHA>lTi@%>(GFmN(xD z^n5b<-h2j8D%c4xsKFQ03&0=18;p%nAWjW*s?3zE@V@9yLqzz@-^N?rk{Z zrbhx@?!2xGA&n|sn3N4TjT&93=MB@jGF>?9X6k&=P9!!fU4*%gzrvl7M}D$R(YSKD z#|%`cYxXUo$4#>1xXTv77qOlxq$TBu(lRee8cs{l_N9#)7tn=@9s;{++8F1XP=!9) zzJ?talScJ?BTjhBT>0BTa@T4YCEH-c&D>+Ww?+O==ttJ>gEY46$ri5zK-WEOHa!dz zQv+q%bWPh#DN6psGCa`4g|vP-+g}~<3nlIEXxD-T7lZ{Dh6NW1ZDgys-P^dU7UFhJ zhZL73!S6*t74OZmOo=h&nWa@1PWmbbR{;sYP+pS;aAjAIpXe{-cnx)V*!pYA>RHa| z!{5z1Tf0)&c2bhjCf~bjn*2F|8Z@Z(X&8+5DOJlt@FXv@ca%!Uv4BtLxWPY&A}Sqb zx0ma`-ha|0B6VE6pKiW+-)_GocIT0*WgEk)WXmxw`bVo5T!K4?A_qxc6z@%;{_1e& zvmI}M(oe;)(2~DU|I$!_FZodsjC$lC%vMfkAkFg?fR~n#xDD#6nX)E{@DkQs z)W=Hzpi^UFtL=+EY3Wn)ecQ7-V~}hd_(jF`STNjE*TmsftQQHF)m^o~p0&0BJ|7-4 zWKH{C>`S>Yv4=$yzUIbQ`BROHkgk z(**D`LFAz`?@w}K zX5vv=+0$vqkv^8vA-QxYuNt*l_ji5p;1R4DeqIRTTMx!LV&f~$vPc-zFvKu)yA@8AR-Me(6_9c)Xls{to(#xg9d7xob%B2;X zbQVedN=c`pM+tc_VieXRIvLxIcy|gbi|<8Wet=RWuSKaeY2^^qBVQTE9{S^1xJKa~ z!RDC+F`hMywoW{g+8XtEoO3|*4({08CB8-E9`$+DT_Ash_-T^oA#;N&KmIw)`~Y}g z;H}d|{Y$}@=7;o~Aa9xJt>rvn-h}v|$<%q;1o_};+wc{oMxsAwHjduR`9NAN(^Hi) z*=rSbY^{~zty`I5Zw32cYa8P&u1&tXyfXRP6!U;j#ltU)Dnv}vxOo9(p{N=NtxUKb zs3_`P1d0q-!LI}LQmpIRRtDW@Xe5sE!ii%$s8`IU+s{!Xt^^QsRUy0?Tv!f;Zk1e6 z;i}i%P%f5|uslR=QL;URtsm9*1Xm>E#MAR8^tFIf|U+?zuCvGPjh`q!;C`woi z-Q$62jc`oY^_7%&&*3-LdjLv?yMx2%OAj=_1=^(?NEa;vI&IP4Ew-T`&hR~3Yu!yi zOC@jlXf>YXSG4EJKAoaBMCYA%Dw$uX{0ox`7h)0zDb|&wPb&;sW|ZNMOKgbrCT4!A z9dUF$!i)G^d^|=CzG`K}ICJ_P@`XPB=Bt#TUsq|G(~Mq6Pz6q6D>i}vS98xrCNLp( z+)>w6=U~L86U@mtw1f9&29jg`=eb?hX9GB0{Gh!7JGQP-mifQIiggM2zShn6viC~_WWtaO-1zGy`N*M;d5MazLMPV1(0;AhywAL?bqAXNQ+*F zcW=~PocAm?lp`0Z5S;wr2pE2ZG6+|Osncq&pM1XGI*h~PqE8>~&97(^JkKJ^R%Ju( z`P0jYOR?G)<ortuMcIb3cwbNpZeX%&=xVH+En=oxM-yp^(2UdHq+?P(+3s zGw7}<<7ol&Rroj@kY6SCZ%rw|2R}ZQiak*LY;p4sg3e-DyZZ{eRIBFhnS;LeZu(wN zP0##!PmeGC)*Lwd4)nA);Ybzi3V;zIa)9VB{C|jiTdnaJ2R;A*G2j19uQ*VuOuhMdt~~zC``jT30_nfKjN9#Uzw!Bx zLpPEV>~chZwb0x#$o@$LZu@8ZPJ4z7b^cM_CmOWKa^=>Y=o z{3JdN$|E_=?B2o?=jb44n`cD2-8(#O=AfRbOQOsOJq0tR9466+jOLRDJ3jfX7CS!ut)^Y>^$8dK?EWA6*<(+=+*w#Avj84BgxrvS z8b?aGws zpZcs>RNU;-lf1U}!Rgb^ccA&}kOz(HgSBp zvR_h36IwtAXeP8rMy;)E-GpuZ_@Om4HUA>!%S=oMu zI@-yL3hGU0u@Km58M7mY?knxAp=&E-MYR}St_r%rjdgTMP;=qoTkUa&l#w z87=2g77Z@FxPx)w+cyTvMY0?OFiO6BpdoO{vC~Ag2AuPaN3Hw z_$ql5A`L2g9B5KGI?3i2ki;fKB19Nvz^}D^8X~KCz5bZyCVb)%!Vsw&dueBtaqv3W zaWqF;PVs@&*bJLv(%Cd<6tE)Ykvk1aTOokO)Qd0~xgYh#D%Kk(6-$>GdY!+fznq+e zpUrU_n;I9Xa^msysZHYHIqdlD0Ka6?8%i?x+F`S;q-v?!H}7NKdBSUGt8fV0M`$Qd zH(0>T@7u~Xjb>RL$|j`Lsqr|qRLkw#NrY@F6_{#6%aklQ`TQv*1*Zd6cC*$7nQtdr zIK^%liRK7)7-bx+DkH*93)!Smveq&4s}RK3p+U0G%Z$90LxyoG02#Jp@=jLWN3&qE-n8<_~>bipa{fS zEv6*_O3o=8aiKw@%(_1BVO-Tssg$F~$iB5fr5E3?{OohFd73tyy3#c+;-zgow2_Tw z8yu$13)|wcQzF5XVrRlirEe|OnuA8qAm0W;v&S+qQeE$0T*S9hbO0;#kwsK5LB&*9 z%-T$~T}r-LmrE!dFrBKe!CW~P%nFzZY-0z1tEJPm7Aj~BubCQ%wUJh|K@?y0?nQRy zy#HNQ&ySc)=95ZiCPo}cWw)LZLedgxtD*Rfwq~Koz@;@n3F$1$R5fiS8kspjq$_09 z&IdOcmTY^nVOP6W?du$3(Z*KZ1lxK6++&i{tnvKQ)R8w^;4DwGklo;ZX&XhSn`-Bw zGPqHL25QqD!n_^3ZY!-6wOXLs+N@u>SAGj0*fxI2P&0X&g)zwOG9Ae)ZEr|P^u_kFdc<*)Z>MxU zTSwGyQt4Js5Dx5_mP@{eqr>VM-mLn@56#{=QMK&vU^ga2Nu6(EN%jX>vOOX8W>h#3 zu^&|6eT{nt%44B(s(({oOsJYjkRr(sj`uNSh>s;COp(WCtz|#b#=2weSuNR%iV1EE5MHVmsgQl5nqBJb~?5-t~IG zfe~WYfJK_u4k4|9uj|t#;}(p`n61fnM_;q58VwubWRD)Zhrs|MxBh{5PaX>=v@EjU zz*?4fLf^F`eJ6MumxuC#Fj=zK2eTyneOfYpDkprC(^~~&4m_zL<4TcI>H^u82cc;Q z+9dqL(Ts`90?81;zaq{Q>sXf2Y~qGN4qcQenwY36`W>VB)n6cscNvCns>&285So;P zDC()u+Nxt~E|`Bigl!WVHww#qgw$q~b0i%d(fKVOl)tFa`E4JVz2l-f#glG};DGSJ9u0?+jfH|fF4~jI#!w%3#_~)to&2i@}4fH|3 z+~uR_iU!{!K$h4lEPh3Qd#1@?CR`v&&2S8=p8n<8>dDrXCx*d&o7R8Py4DDws zd2c`KP9w>#i7}(YZE~zzD;F(o_7aQKa7{_BDvHS{DpH(;p*T3NpVNkgBO}3kCdW2A z(Hm%>$xj8WWH8ig`$aQ`BTy+Ycpy+k3yM)$MX7uQg1+o5`uW&yIct9ZOjNXsiUWJD z^3lU?m5Xc~^NzoeN@n3Hsc8S(5IhFw=$^>g!;iJP_Tu|2?rK!!+KlCJ?|_GcIlf&L z&6cn=yg%ZtP|_|mdiDI>2X220tGvhjEP>;hi%GUg{i zQW#z#W>vj)bWALKD)~UGvPz-q_yU(Gn(;2nyoR8r*ZK+~;W`6|ABy}59a}(i?ZE1_ zH(xVO=LLvL#^GoMtyV*$#PCRuNt-jZ)d7^K;ujdj!4In2)G88yuABY%zM^_<)pRVPtKC5>|+v5g{YD- z%_}gJaOE>}Vksya+zcUH8C~@A-@a1#4M?kM@UE!Vy{NhRiEb4z#YL85g;%5pk7l#( z#hmWaAaXSGy0od<#?!OXPm}rDk0nD*I+BGjrUHG^1;tfS@d7Z&fUS>(CSP=tAWOT< z{4lfDn$lx%(5g?;lKV}=YS$FtvyLQj{IdKf>%vyRZXvfs$q|*r(NZ>1;%i=nnlqo= zC7zdRQa5dy75o&(yv8r|u@n2`Y4S^)zY+NSihcpL(3hzE+)!-t%be#!zK&wrU~HnF zv1rZzZj5&0aZkrF75JS0_eS5FG_}ALbAljuO12^LRjB{Lk*D7g8BG*ycHyL0H2Npt zlj`DiLDhwYlgW<(lZX50p}Z!ou1b4K)MJ`xO=#^3!_hsOa-M<2+8je?QQ1s6tzeSM zC2&tks?^arrW?kPPa!|MBD9|?bf$l=&=Fj1#IWQ;aCufxgEw_oYLPwh-x6vkKYrKE zqOiC2q=$vV`U4MJ^8^;--5OT@z3`URk0=5 zn(5&2XF!Pc?^7&<2XK#nVVanlDfqO38+-`b^YlJ!=JCROx0mqT)n7&Ur}HZutN?SA z4-GjxjIm(FP$isDi{knvv0{gGVZ(z6hH*rP*m8$|v>?*cAsCe5#|fhgS4;;~I0s%? z7id}^)@L{N6xapU_V1+y_O^h%68d#M_W7#|^L0V<6MBd0`We{TzARLrGplLPsYnMJ zal;Us3vW+i0auDL#4@Oq@={E`i|97Ugu>Fa#x9^|Ua@vvD6$g2>}6ddbOXO+Yk-q6 zc--8dvD1Jq^F>@2@~;!5t2XRpcqQ>Ox(@6=ZQ?&jsFf#y&cL=!JfjqYU!Dp({g$(o zek*Ll7N$^+B$LWglYwG$>(bz=?N3s9dX^U{ntx1N^vbiVn805q+GE^7x>9oe!AWqH z@b1FpO+Xv|obO378@MUy^|@3No3neWd9``HZVq@-Z+MgQRTV=6%H5BNSMc4QE*Cv61dt+qb-Wl4oL_b%(2nAXb z7SXVjOl-^cLYkA4{L^rQe(|#4?JoNVVLPk=uGsxwIZjzV_= zk>(UQ>4B<#7k6JAME)@B4YE6x z&VJX*BfjXFaB_sqich~1=-q&Jpxhkv#)A6IZ2@5&e&B`JZ}%dg7cr_c6XHvP_x%Nj zy6CgknAZxtd<&jZ$r&IAPmuZ@zuh#lVB_tFpwEkxWqAZ(N(@ec%_;CbAOxoXKR+0V zlkZy|Z=77RIi@(WyEev{!5^ll4nR8cxNC__fiJt)t3XeY1b3=C_m(42Mf@&JFqtDz zZ?yxtr449uIf_ubHKBzufLxyltzSbWe2}i8z9Jmvt{4lHFtJq(B`QVQi*cN&2SeS> z5g2RB!g>bqqs~csPtf~z6mw)0^L)xSxyE$PL$vK#w7f2BTs0oeRMaH-5PWpH!5!iOn)0~5_8n(|^qX$=&chWjTe|orq&0)C2(2%5dT;7N zs4tiHs5&t)YFL`&KNcsvD7W6&06|$XDfV2MjLRab3x9oyB6NZn%~povLF49d6)>ue zD6K~3hu|}Y##0OLfor;H!Rm6+7BWLCDn+kKxixS$4pmrvb&aC?CupYUsyil@{;B}z z>1i$*kBjPzg{B~_#BH7fFr<(a7@BcfZfH3N1>qr`ZX)q@{vmxuR^Iq{QYr-jz1&sm zS+4?d(6*3J(Ag>-Cd7j|<-yn?q?#orFCX&@CBze(_RyTNe|8@9i>P{E zeIKk=5xrN|ohY9D&g+TcHh=V;_yhGfKyRP^%=RaeZ;yXL|6P9S3*GHumm}&IPU9o+ z@x8ZQftXKa@r|NyOlG>@H8bke3h!8pS7K!+-Rl87$n!eY3_jkytH$NdoRHw0aPehm+ldo`^-g_ zuh#30=J!ogJP<*UiN*WTN~m&+nnX}@f=W?LL4?4;`39j&6C98b#bzqn7K9T z6SFOlZXvFiyJgB#9a{vOWzxB)Eme1oY$1EI)iF}#-vMiXyk12ye)zFRuBqdo`&FXC z$SfJ~UF>`w4)Q9&V^7F-!K$K64KCPMqh^FQI3@K6lw&WbXX?oB|`rG`<3)^o3DA%WOvOHs$an1&e(tfXtU z>0KXbGRy_ZZGUHYRPl|Y9ieC=SoN*Cs-(5H+0&^8eAx6<cevxP%R;VWQ-u}pu5T7hb?>(kIm0LM82RB-CV%Uuib?uW z#Ug`IJ#62CdjrAm++tY1;(jy!QW7OJVZ1kSbg>EsH8mofQd`8fBw{r=pP^jqKw0A^ z&(Y-0|zxZ zs^c9@&nod>HfS(W@RM=4Ccs}?!uQ%qTx+-Z8=_q_t-#>5wr6hVnTc#<1ho$H6Wng`6IYOJDl{H3Qn+P^Uw0rmuWs-d z->RNqv7oP1oQ>Xb=;qUNEZ7xXmHf_fjaQ{|y9E^9tdfg%mrTC&nYpk9rEdR?Cn2eG zLapk!66&X*Gcq3-+quz&?mvvYMe_NlPZ3Y4dXo5;;tS>guJEQ2&~)XvB}8Djr)vPb{G)Qs$2U`Y@VUmH&(QVOb}fK5`!8l8zUEi#G4VD>Zs< zt`xMhkR}g27n1$uGPkHQPx0;&&=Hf!da~H7$~V1rXa~vLJgR=pJ43JFBhg`W8m-)lYo;BTOJG$EEiNa_)qA zqsUKA`-$G7@<%oFAXnvwFw(hhQ7Jo>R2+|DPPKq;*!(<&0!$Y$4RsY-8i=laWsp$4 z<~bWs9X$iE)ODGYa!&;1t=LMaa;Z#&loRO?SngB{3(uirRZ8$&Lwsj|?$T;0B>q-z z)+cAH2>P7E7@4$UtD{5TwYoIFnF4L9OX-{COzeGKt6=i@5~H02-h&DkFpPCQIlq&{ zzlaHgCW>YPOW%SO3L)Q^+Yw{JK>NC{Ngix_u$Zv4M6progI;Y$IDY?1IMgs-%q?LR zVgaGhUkqc=GFnjrbwnb2RBVyN7)F+LM5$R(W)$n#rHe6kh5@cv>`pv}xNJII>=b)+ zu6V?yqd#4eJ+NmvU9^|s!lF`9o*v8jT)8mdC-8;+e=+ur@s+;ImYsBL+qP}nw%O5+ z)3I&aMyF%jwrzB5XYxOoJLk;3XJ&uczjuG!^;SJq&#G0c28mW}GW+57P)r-u`iCJB zQFbqFu>yqSK{rvlfN#&%h24jBAJdK|JdS1Szl?1U4$Apy<8E z^i-8hfL=g}YNVgRL)kdS!DDdpz>d%>MHM2T#<(B3)KNLQ$8dxg3^%a}t2uDI2PFWo`_!gy1D^X9ispp&2hV{lKR=j+WRr5Ou zvf%UU+)HV_&VGjW#yd3oxIA-HqwP;~Jo*6r)dmeMw~eU5`SuNk-Tye4 z>;^D&vY=P^`cklSv~;qxv;BKBG%9vYs!sqR_)`|%@`wBHdxbw`pmA9J+YP%x`2;Go zD&gpx)^iOTvp5n>vr9Mm5PDDF_!66up*OLHAEzd*4|B$s9*4+%m050w4afY$xC}FX z3onzNr7g417)XfgL}5^!Gx{7{1cD1URTyEyOkq^|zUEiBRbnjD21p+LG03G>Ce4>- zO!S*n$~37vVv0TWCtTnwCp-Kp@MA~} zvx1Fg-=?y=QIP-zl5`oS>eHPu@$=z!8XsCdFK;Pzu42+R?)&i!Sr}Tfmd+1K#bSNl z*v0VZY(tVX-Xq*`Lud@SAATr=vcm|qb}zwxu;8qF7*?&e zpDuk|Y)I7;`(vwrYhpt-ouV26efx&^rF#26E8hOks|x@A_B3P_{(6D`m?>A4cAQf~ z`S?{S5=|t7L=Z$qsi4=GnO|H~#1gx`48=GMPjfUdNKu0X;vGfPM9G|WlK)wN%eLX9 zXr^Tj%=|U(_C~SlXu5z1WY&B5;(e5TyW!aB==A^Ge;%q^1bC_*e&F9lj~ zoLDe@YoO?dhjedzB;oj&lV=3ICY;?^EFk0(rgNWUpA-c{Y{J2kQ}-8*nKQ96feuQqnd@CcsmW8OI%KI5w|6OcB zm*Ji>@cx*N=u^P+G=%hB2}DcPVca0yMT-8L{&wxBt;G`)!B{N$qw0JYA=x7Xfx$h2 zJYFBg6VD#+mT$*y2FexEtiIQzAb&~&f_~)`dLMh|w@7*G zZr6dKMChY6;l!P(?>cIwVlDc_vViX2ArO>6``N}8Ug))io2e>o7~cL?lFqfzMG?dm zouZX|J(kW&?U&fbj>@}sp>nWqaGad^&h}3C>VEInmlY=H#IK-bPLx*=it`rgC7M5G zY3fT|=|<)TX}n1k@r)t)U&C%1#}$}6OO&3uv!Ruug~+%5B-YFLSm{9cJ+Qxd9DaQN z>jbX=v*)b(l9oXJkJ1wVv+&EmoB;}k4vzm6ekoFi^h7y8{p^}BbFEDifJoWV5s+Ax zg`fy`00+(Z+F9x=AfOvBiLo590SiKd=eBiUN*juF9ZIfBE$ypj(;!r(X4NpORv@9yg%3tI$>^g2Vq>d)XD~DmU|Wct?uI~J z0o`MJaFNGbXSYX4hicjsPbZohq*V!^K611G?4^&lXKUE1 z(8r5)u>i;k-oWy%-0_BmhxiP@djo+#FouukJgTjJUXFnKd4}Bi4vc%XUGkLX$wxCy zjD?rYu%fPeQK8*nKR=Q#d zj17d!-w)s@s!L=RoKbS$A9)!CmV6$KJwZsENsxFSTrin$CibO?GYA3t<4^w_-s#F* zX>DV7?S_OVe`AWvfe0}U`PPzB1%c?US#M-u+5mG?Lr>@^xZ^`aHFJRwpcauun1)a+ zHHp@tLyaIs7bS_?a4|VpM3)LMCe;-bYlpt?Ev1h-RLxpN=jtU*(o-fvZtt}4Toxyh zuV!kv_jzDg{Y$JjcR<5fw>K0CYN-jt-&t(hLPEp{jcQ8efl5P>E>aW(7b4xyO|_Xa z{$8&@#-tyq7!h4HiBbzrC6m&$k*hP4j$=49gfdLuql!fdFFk)<2 zQJYa_Mo~>BE@9E^1Cd=jmt31j$Et6_;zA;vr{?ybmGaP;d3!eP1$(;fLqA#AQDm)e zR(Gz7xp%s;nDNYoJ4o+IHw6*`Tl&>|dCT%QOZL3p5|Eo8O=U2$lAFr=u?-EGrP^iR z;QEdHWc5^O*F*mV__^gf@fez@x_w`gBG$KR=2=JD)v-R7$|zQ-@~wHWU;ia6Bx%z> z<`OavARtVq?UgIaN)%>}`eV3&KrO;_JudK@Sw&}^t8v?!op1V@-t%~{%h@w9X5&d@ z$Y-C7KWWJPNoNTCX*R0b=}WE*Q6GtuBIK56Pfbc|3_Ge=K$=0ZR*Jj?=V)GD>!4UC zOUF}xpDe26F#f6)U}C&Xt%?-`h6PitdOT`N>0CFm-~KzixtR)s<|rU`X8ByEgr{A2 z`UnJTrQk=#rgjOKRxsd#RFC;03iFTlcw1qT+Hs+mF@e}m#J7UAerkn_nI_N-Qns#1;-Zb%u}e)vk~7YJ;FO^t`=6< zIHlDk&H{A|5ADTws7BEOLK{5QC|W@m!LeBz)dM{rD~aCohT4w*7!Ohx(W`?YM`*@U z6{0#6prx<5J?Ln}Gmz@uPBeGy4R>y`&p9_RMEy|(k~}B`z5a-&99#u3g!$0Z`oA4q zPs!?;322P#58Y&de{=Bi5QJyg?nd$+wNv7B+U1}zm1qhDU?o!`j@9^6YWNy+&g}!& zk352`e*_#m`r31d9llLUaqd?BK)89AJZ>wk)!F8y zxJq%&jqyY|+hP7mKGXEuo7{RJak!-UioN;5U=mlS#*2;xlhi=I#;b6X_h zl~|q+{GQKE5;123CvG|gGL+WU-<(AyZLr2lZ2M-bUxN+e3 z!S?6+7xZoXUY03_Ec{D?!VvF>0}7Qx82t+2u&KVX9C0OTr1apo0JtCae5dw^SkL0` zS~^i2UwYHca829pXM?cIG3OkCxNdOlI}EE=a4tK>>tZd<0fYHj(LK5>$ZcgX`k`samlU{g&6yg$8*6O- zU}4ZFM&@`P?>QN+s7wO5rP{}5T6uYMi&Cuu>T`(I2oR|eDr1=cpmBGTs`<{%ce2Tx zN_Id8SwhKiMl{SDozq0vXTEeBQ*;Z$3?|@QmT=Tg8DV7)>F9NYLe(kKU)5tHNu=e2iCq|<@SB=rzw9n`$JlLg8H>oCkQ@3 z$}4q8O@#CNAlH16i}RRF%fVBmJ?9(Vf~Cz)Ka9GqsMnzSPFRzXH~J8{OTmLn!39!~ z@Ge@o3cn=MBopB*umV?@NyPNY zTOMtT+LLP^^$z zJiEXW@T*9(K7i_kjw|h9md8D^{MfR*xKHL8ae))3zCUkHX-Gn=INqB{-Ms(8L}Zdh z#jmaT*OH_phnOa*U`UIJd$Nc^Qh1^Wf;3LaHI8bb*tI(T?J3xcRYXy8!wwYisJ+!yYANqLV< zugFLJBQiN4T4#dx-t&Oa5(etgW!Nt+>zg(L}At15WJlyB>-{ZHl8FJ0?<8F)&rt;4rrTbhoQi@D#n~o)aqv;F)J+3;1v))&#(H zKPG0&oM;0YNwesFH!9-n*vu0<@)qrI2L)SPX5cG(PGF%X5El$c)b3+cLU%`vLve?aEe>_!J2C+qW02|AeqG z{6Fxqe;_Q%rsg)Lwod;*$W&zQ<^&MDGB|QrB_-FcW`GaY?B}!q0{*#D5QwE%QiZvp zhleC&&e+_9_6l@5ExmEbNZ@p#-z8KeaGrqPDEiMC0L(!gD7H}RrR$ZX3Ni*+g0;?L2E(ck_e-sd3+K^lj$p+blrwhV#T#Y@+AxeA zR;R)@*f5kkDIVV=2)(!JWz7=|B{{e1yZRJp9ghM25FPRBz4cJ?>V(Y5sz&)K_x7r6&!c?Ksm2CZoR-Yte+gt zvRu6ANrbw8qQGbitQ|(6=N#DF5SeP1W8*}m#IPKhOfuu+dT;_>KC=u{b12*w*V(nA zDH@{3>VY7&5Fiodg!BS$Lla8-(-0pyr_UJVA6Pa<@9^@Nt3E)Km*5be>5Lprm_y?` zq*EUuY63x94>l}lj35#4%#DGWFAXo0V5Y`jQcp(-^O3i41c76QlPRAW5qS}}D{Rx@ zv+uiGh6Y52`2*_kqR1@#QeVE$RP(v%@Th_2o`Jdf!W;oMr8n=Kh87OWW@mSuQyj2{ z?groEck>bC+9Q)?b^YVWMMw6k*cw?t~vU;-Aa6Mutry?RbfjHf?n9d5q<8-|DpeApWJg&)>|{wEKo z{_i~84)7P?>qswXZE5Hz|MwsNaBkHx$2BK}5APZy>hi4qiwLCjWbra%sdY91%M5W` z@ggvGxM=dZ!+1qwR@I^ExFk7;106UW4uDZJAQ#+`;3QyY*pEMa=T$Pi5<@T_^RsZ{ z-Q{s@;n&;JR`usM0PGl+7$bEICoJXon6V(9D-wl8sIlBYYPcw>D5^Bo9moaQRZw?W z(hpNp<1&?n2v#6PBni~Ds$a(SnXCmhHiH;=!0BJ-R7Ft8Jd9$(i4_~w0%=D%{Y?I} z1C4?F0SVJwd1_4tYlC#Mx^vg~jw|mevu(UwgxA=xM26(rbKLl%Y!Q7ESivmU}XE>auov^h&3 zr5=1j;d4j4+HLs`Gpw*qS2APSs7__vXRfih2v;zk_C`f8eM+s|B1(jUl zk&CMuo6co#f01Tnz_D9u1xp(NUk>kekVrMB^`|^hg)v<~o5YNzPPl|b?s-~>Nd7Qj zSn2NDqX3*}(5r0k`s@M^Kl=#ct?NUQMO7I@0AEQExZRF0VxByx_N~mm%wwhS4zPj; z+rt@O92OF)GYLPNNbre1J4x^fKU+(9N8Gf;zOfZRt+;0&m8I?I4)e5lh3e}LlgLN8 z8boJw`a*k3xfAI0w_T+8S4Tl$8f3eMMIDhnFtT9m;CV^e1~TJ~#t`Iex>|aDyYz4f z>w>pmDRJ&ANg6#TeE5zuI;CJl@4s!o^yD0>MU|Tj>#yU=Z}>)XFe|(qz;xV&cccFO zlXBnlQ?y@aHvKMV**M1i`@zDAdGP3*{|$?0Ahj(bzWB9b{!=~CvyAw4nE35V-qr=8 z=Z&K0JO$sD$W05@fH_P0l;ew+2S|>UqUT`2lPCVjkvmGxhy@@2>}3h@)A%;BPd&de zPa5?z*mZ~l!eiVqEWjOcH}S6EURpkKNR- z-RvNTtU4%ibu99ZNsHbwKSlCEBxjHWiN}Zd#LIRJLXBMM zBHMo|ZM1;>+%B_s6PE2`N+C{a`bnGa^nw4cJlAx?DEt?Sm<{oNo&wAfETUh5|Gz)~ zZ6D~Lr+}oBse_@Dox{Hz1W78=c1VgCyx*0%L|5UKLmK%`v45LdS1rzqD^d1aib+UI z!(^Cg1wUY6oHDTJTJEYf4KA%F(E*f^(LcWVBwlBXK@ekB)i#g2K25e9c{|c=`FOsA z8K6NM!VsVagA8c?l7x`Ph$oN^y*F;ecLWAgXM_5aaROf6*q%HBiJ;Ou>s)8}r&xEs zLY5c;A(C*j)HJ!a<;|g3z~WoiF^;Z#Dxm@ifa6m^cS~nOV|KnWUDMIs)L+;&b>z$g z*#BBY(Kq#13ha-?RLlMJ2HHNYrKa-0{`!|jJ=#+=#~Mw!ltf zymB$ zDJ3wuSAYuq&r`#4Q+eDXuEVmJTXQaiD&s&3o+SbO8|c8PcGJv71n}x@kg7PB?~t82k}R4Z$OlosDRM!61wfLWL^gd8W zIv-vjW%v->M>#wq3@fJ;fzR}&yO=trl^ZAJ9P&r@e(<09IoZe6kAZiU#CLShC!lZl z+3}loU(c^6BOmVc5|;=1_aaiN>kA%oTXIXg`{J8*-QOpNqAIre2?q#|axxucbDmR| z!|xl6^3*E3NSz*Ya$UjNds+09OSh)myri4%acy@xhNg^$rihT-qOj`%?V&)M(<_= zp#NvU{7axjscE|+tD=0!F^v?C)Kli6uNKETFc;G1IUs6NED1$)@Ow4&oRO9`zv@! z+*%FBFwkA=hT~7&kdpV^5nlG0@?%|-v7?&k?2vCkZQJN1UBj{K?Xh3J0CWdEysiDI zjDrQ`%w>3O_A!>f33s<*tCg_Uf`FIIkNx1WJ1u*PO+PWbx|oCAI5P!^H$^c?h|fw! z<;=m_aPadMo61)hQ`QE8%|WuVmYX?y+hLPBDv{4e1%%x>>99BWr%6T+LC>W%PZ07M z=~Bj`;BEuGc?AVFicBX+SpG=PlbX6moexZFHOk_aKcWfjYn40_3ad9PZ;j(ll!~I^ zRHw%jhp{oq6d+@nbC>WK%6MqW-$2IYn9_8kt0?0k?RFy>q9-pG5WPK;lF>U?(vzJj z=KG;aUxbBx9alq1Yxn>tzqngQp;uTD2HPr3�Hu(uQ#y9X}le5!Q9m4ofgS-zmdh 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 diff --git a/appletFirma/src/.svn/entries b/appletFirma/src/.svn/entries deleted file mode 100644 index f948539..0000000 --- a/appletFirma/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/appletFirma/src/main/.svn/entries b/appletFirma/src/main/.svn/entries deleted file mode 100644 index d553017..0000000 --- a/appletFirma/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/appletFirma/src/main/java/.svn/entries b/appletFirma/src/main/java/.svn/entries deleted file mode 100644 index e3c9d30..0000000 --- a/appletFirma/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/appletFirma/src/main/java/com/.svn/entries b/appletFirma/src/main/java/com/.svn/entries deleted file mode 100644 index 5b92ddd..0000000 --- a/appletFirma/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/appletFirma/src/main/java/com/fp/.svn/entries b/appletFirma/src/main/java/com/fp/.svn/entries deleted file mode 100644 index d38b438..0000000 --- a/appletFirma/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firma -dir - diff --git a/appletFirma/src/main/java/com/fp/firma/.svn/entries b/appletFirma/src/main/java/com/fp/firma/.svn/entries deleted file mode 100644 index 3e93d2b..0000000 --- a/appletFirma/src/main/java/com/fp/firma/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -component -dir - -applet -dir - -keystore -dir - -dto -dir - -common -dir - diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/entries b/appletFirma/src/main/java/com/fp/firma/applet/.svn/entries deleted file mode 100644 index 5baf692..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma/applet -svn://172.17.26.185/COMACO - - - -2015-04-28T07:21:43.253845Z -4061 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FirmaApplet.java -file - - - - -2022-07-28T03:40:23.755721Z -c6fc0b382335939010b5277beb9a38dd -2015-04-28T07:21:43.253845Z -4061 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -16793 - -FirmaApplet.form -file - - - - -2022-07-28T03:40:23.755721Z -575cbea3cc9720565e5a28838bc7a45e -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -7804 - diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.form.svn-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.form.svn-base deleted file mode 100644 index 869ac71..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.form.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 14 -svn:executable -V 1 -* -END diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.java.svn-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/prop-base/FirmaApplet.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.netbeans-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.netbeans-base deleted file mode 100644 index d34e00e..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.netbeans-base +++ /dev/null @@ -1,152 +0,0 @@ - - -

      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.svn-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.svn-base deleted file mode 100644 index d34e00e..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.form.svn-base +++ /dev/null @@ -1,152 +0,0 @@ - - -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.netbeans-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.netbeans-base deleted file mode 100644 index 5b3b412..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.netbeans-base +++ /dev/null @@ -1,345 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.firma.applet; - -import com.fp.firma.common.CertificateUtils; -import com.fp.firma.common.FirmMessages; -import com.itextpdf.text.Rectangle; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.swing.JComponent; -import javax.swing.JFileChooser; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPasswordField; - -/** - * Applet de firma electrónica a través de token - * @author dcruz - */ -public class FirmaApplet extends javax.swing.JApplet { - - /** - * - */ - private static final long serialVersionUID = 1L; - private static final String PREFIX = "firmado_"; - private String rutaArchivoFirmar = ""; - private static final Logger logger = Logger.getLogger(FirmaApplet.class .getName()); - - private String tipoFirma; - /** - * Initializes the applet FirmaApplet - */ - @Override - public void init() { -// FileHandler handler; -// try { -// handler = new FileHandler(System.getProperty("java.io.tmpdir")+"\\applet.txt"); -// handler.setFormatter(new SimpleFormatter()); -// logger.addHandler(handler); -// } catch (IOException ex) { -// Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); -// } catch (SecurityException ex) { -// Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); -// } - - /* Set the Nimbus look and feel */ - // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } - // - - /* Create and display the applet */ - try { - java.awt.EventQueue.invokeAndWait(new Runnable() { - public void run() { - initComponents(); - } - }); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - /** - * This method is called from within the init() method to initialize the form. WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - grupoRadios = new javax.swing.ButtonGroup(); - jPanel1 = new javax.swing.JPanel(); - labelArchivoFirma = new javax.swing.JLabel(); - txtRutaArchivo = new javax.swing.JTextField(); - btnExaminar = new javax.swing.JButton(); - btnFirmarArchivo = new javax.swing.JButton(); - tokenIkey = new javax.swing.JRadioButton(); - tokenAlladin = new javax.swing.JRadioButton(); - tokenSD = new javax.swing.JRadioButton(); - grupoRadios.add(tokenIkey); - grupoRadios.add(tokenAlladin); - grupoRadios.add(tokenSD); - - labelArchivoFirma.setText("Archivo a firmar"); - - txtRutaArchivo.setEditable(false); - btnFirmarArchivo.setEnabled(true); - btnExaminar.setEnabled(true); - - btnExaminar.setText("Examinar"); - btnExaminar.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnExaminarActionPerformed(evt); - } - }); - - btnFirmarArchivo.setText("Firmar"); - btnFirmarArchivo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnFirmarArchivoActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(labelArchivoFirma) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(12, 12, 12) - .addComponent(btnFirmarArchivo)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnExaminar))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelArchivoFirma) - .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(btnExaminar)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnFirmarArchivo) - .addContainerGap()) - ); - - tokenIkey.setText("iKey 2032"); - tokenIkey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenIkeyActionPerformed(evt); - } - }); - - tokenAlladin.setText("eTokenPro"); - tokenAlladin.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenAlladinActionPerformed(evt); - } - }); - - tokenSD.setText("Security Data"); - tokenSD.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenSDActionPerformed(evt); - } - }); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addGap(41, 41, 41) - .addComponent(tokenIkey) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tokenAlladin) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tokenSD) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(75, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(tokenAlladin) - .addComponent(tokenSD) - .addComponent(tokenIkey)) - .addGap(18, 18, 18) - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(25, 25, 25)) - ); - }// //GEN-END:initComponents - - private void btnExaminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExaminarActionPerformed - // TODO add your handling code here: - try - { - /**llamamos el metodo que permite cargar la ventana*/ - JFileChooser fileChooser=new JFileChooser(); - String rutaArchivo = txtRutaArchivo.getText(); - File directorio = new File(rutaArchivo).getParentFile(); - fileChooser.setCurrentDirectory(directorio); -// System.out.println("Directorio del archivo "+fileChooser.getCurrentDirectory() != null ? fileChooser.getCurrentDirectory().getAbsolutePath() : ""); - /**abrimos el archivo seleccionado*/ - int respuestaDialog = fileChooser.showOpenDialog(this); - - if(respuestaDialog == JFileChooser.APPROVE_OPTION){ - File fileSelected = fileChooser.getSelectedFile(); - rutaArchivoFirmar = fileSelected.getAbsolutePath(); - System.out.println("Ruta del archivo escogido "+rutaArchivoFirmar); - txtRutaArchivo.setText(rutaArchivoFirmar); - } else{ - JOptionPane.showMessageDialog(null,"" + - "\nAccion cancelada por el usuario", - "ADVERTENCIA!!!",JOptionPane.WARNING_MESSAGE); - } - - - /**recorremos el archivo, lo leemos para plasmarlo - *en el area de texto*/ - - }catch(Throwable ex) - { - JOptionPane.showMessageDialog(null,ex+"" + - "\nNo se ha encontrado el archivo", - "ADVERTENCIA!!!",JOptionPane.WARNING_MESSAGE); - } - }//GEN-LAST:event_btnExaminarActionPerformed - - private void btnFirmarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFirmarArchivoActionPerformed - // TODO add your handling code here: - InputStream inputStream = null; - try{ - String razon = getParameter("razon") != null ? getParameter("razon") : ""; - String lugar = getParameter("lugar") != null ? getParameter("lugar") : ""; - String nombreFirma = getParameter("firma") != null ? getParameter("firma") : ""; - Float llx = Float.valueOf(getParameter("llx") != null ? Float.parseFloat(getParameter("llx")) : 0.0F); - Float lly = Float.valueOf(getParameter("lly") != null ? Float.parseFloat(getParameter("lly")) : 0.0F); - Float urx = Float.valueOf(getParameter("urx") != null ? Float.parseFloat(getParameter("urx")) : 0.0F); - Float ury = Float.valueOf(getParameter("ury") != null ? Float.parseFloat(getParameter("ury")) : 0.0F); - if(tipoFirma == null){ - JOptionPane.showMessageDialog(null, "Debe seleccionar un Token con el cual firmar", "Tipo Firma", JOptionPane.ERROR_MESSAGE); - return; - } - if(txtRutaArchivo.getText() != null){ - JPasswordField txtPasswordToken = new JPasswordField(); - final JComponent[] components = new JComponent[]{new JLabel("Password:"), txtPasswordToken}; - JOptionPane.showMessageDialog(null, components, "TOKEN", JOptionPane.PLAIN_MESSAGE); - if(txtPasswordToken.getPassword() == null){ - throw new NullPointerException(FirmMessages.getString("FIR-0007")); - } - inputStream = new FileInputStream(txtRutaArchivo.getText()); - byte[] datos = CertificateUtils.sign(inputStream, null, new String(txtPasswordToken.getPassword()), razon, lugar, Boolean.FALSE.booleanValue(), Boolean.FALSE.booleanValue(), new Rectangle(llx.floatValue(), lly.floatValue(), urx.floatValue(), ury.floatValue()), 1, nombreFirma, this.tipoFirma); - if(datos != null){ - escribirArchivo(datos); - txtPasswordToken.setText(""); - JOptionPane.showMessageDialog(null, "El archivo se modificado correctamente", "Archivo firmado", JOptionPane.INFORMATION_MESSAGE); - } - }else{ - JOptionPane.showMessageDialog(null, "Debe seleccionar un archivo", "Archivo no encontrado", JOptionPane.ERROR_MESSAGE); - } - btnFirmarArchivo.setEnabled(false); - btnExaminar.setEnabled(false); - } catch(IOException e){ - JOptionPane.showMessageDialog(null, e.getMessage(), "IO Error", JOptionPane.ERROR_MESSAGE); - } catch(Exception e){ - JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); - } finally{ - try { - if(inputStream != null){ - inputStream.close(); - } - } catch (IOException ex) { - Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); - } - } - }//GEN-LAST:event_btnFirmarArchivoActionPerformed - - public void escribirArchivo(byte[] data){ - System.out.println("Ingreso a escribir el archivo"); - FileOutputStream fo = null; - try { - File archivoFirmado = new File(txtRutaArchivo.getText()); - fo = new FileOutputStream(archivoFirmado); - fo.write(data); - } catch (FileNotFoundException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), "Error archivo no encontrado", JOptionPane.ERROR_MESSAGE); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), "Error al escribir el archivo firmado", JOptionPane.ERROR_MESSAGE); - } finally { - try { - fo.close(); - } catch (IOException ex) { - Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); - } - } - } - private void tokenIkeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenIkeyActionPerformed - // TODO add your handling code here: - tipoFirma = "1"; - }//GEN-LAST:event_tokenIkeyActionPerformed - - private void tokenAlladinActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenAlladinActionPerformed - // TODO add your handling code here: - tipoFirma = "2"; - }//GEN-LAST:event_tokenAlladinActionPerformed - - private void tokenSDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenSDActionPerformed - // TODO add your handling code here: - tipoFirma = "3"; - }//GEN-LAST:event_tokenSDActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton btnExaminar; - private javax.swing.JButton btnFirmarArchivo; - private javax.swing.ButtonGroup grupoRadios; - private javax.swing.JPanel jPanel1; - private javax.swing.JLabel labelArchivoFirma; - private javax.swing.JRadioButton tokenAlladin; - private javax.swing.JRadioButton tokenIkey; - private javax.swing.JRadioButton tokenSD; - private javax.swing.JTextField txtRutaArchivo; - // End of variables declaration//GEN-END:variables -} diff --git a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.svn-base b/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.svn-base deleted file mode 100644 index 5b3b412..0000000 --- a/appletFirma/src/main/java/com/fp/firma/applet/.svn/text-base/FirmaApplet.java.svn-base +++ /dev/null @@ -1,345 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.firma.applet; - -import com.fp.firma.common.CertificateUtils; -import com.fp.firma.common.FirmMessages; -import com.itextpdf.text.Rectangle; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.util.logging.Level; -import java.util.logging.Logger; - -import javax.swing.JComponent; -import javax.swing.JFileChooser; -import javax.swing.JLabel; -import javax.swing.JOptionPane; -import javax.swing.JPasswordField; - -/** - * Applet de firma electrónica a través de token - * @author dcruz - */ -public class FirmaApplet extends javax.swing.JApplet { - - /** - * - */ - private static final long serialVersionUID = 1L; - private static final String PREFIX = "firmado_"; - private String rutaArchivoFirmar = ""; - private static final Logger logger = Logger.getLogger(FirmaApplet.class .getName()); - - private String tipoFirma; - /** - * Initializes the applet FirmaApplet - */ - @Override - public void init() { -// FileHandler handler; -// try { -// handler = new FileHandler(System.getProperty("java.io.tmpdir")+"\\applet.txt"); -// handler.setFormatter(new SimpleFormatter()); -// logger.addHandler(handler); -// } catch (IOException ex) { -// Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); -// } catch (SecurityException ex) { -// Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); -// } - - /* Set the Nimbus look and feel */ - // - /* If Nimbus (introduced in Java SE 6) is not available, stay with the default look and feel. - * For details see http://download.oracle.com/javase/tutorial/uiswing/lookandfeel/plaf.html - */ - try { - for (javax.swing.UIManager.LookAndFeelInfo info : javax.swing.UIManager.getInstalledLookAndFeels()) { - if ("Nimbus".equals(info.getName())) { - javax.swing.UIManager.setLookAndFeel(info.getClassName()); - break; - } - } - } catch (ClassNotFoundException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (InstantiationException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (IllegalAccessException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } catch (javax.swing.UnsupportedLookAndFeelException ex) { - java.util.logging.Logger.getLogger(FirmaApplet.class.getName()).log(java.util.logging.Level.SEVERE, null, ex); - } - // - - /* Create and display the applet */ - try { - java.awt.EventQueue.invokeAndWait(new Runnable() { - public void run() { - initComponents(); - } - }); - } catch (Exception ex) { - ex.printStackTrace(); - } - } - - /** - * This method is called from within the init() method to initialize the form. WARNING: Do NOT modify this code. The content of this method is - * always regenerated by the Form Editor. - */ - @SuppressWarnings("unchecked") - // //GEN-BEGIN:initComponents - private void initComponents() { - - grupoRadios = new javax.swing.ButtonGroup(); - jPanel1 = new javax.swing.JPanel(); - labelArchivoFirma = new javax.swing.JLabel(); - txtRutaArchivo = new javax.swing.JTextField(); - btnExaminar = new javax.swing.JButton(); - btnFirmarArchivo = new javax.swing.JButton(); - tokenIkey = new javax.swing.JRadioButton(); - tokenAlladin = new javax.swing.JRadioButton(); - tokenSD = new javax.swing.JRadioButton(); - grupoRadios.add(tokenIkey); - grupoRadios.add(tokenAlladin); - grupoRadios.add(tokenSD); - - labelArchivoFirma.setText("Archivo a firmar"); - - txtRutaArchivo.setEditable(false); - btnFirmarArchivo.setEnabled(true); - btnExaminar.setEnabled(true); - - btnExaminar.setText("Examinar"); - btnExaminar.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnExaminarActionPerformed(evt); - } - }); - - btnFirmarArchivo.setText("Firmar"); - btnFirmarArchivo.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - btnFirmarArchivoActionPerformed(evt); - } - }); - - javax.swing.GroupLayout jPanel1Layout = new javax.swing.GroupLayout(jPanel1); - jPanel1.setLayout(jPanel1Layout); - jPanel1Layout.setHorizontalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(labelArchivoFirma) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(jPanel1Layout.createSequentialGroup() - .addGap(12, 12, 12) - .addComponent(btnFirmarArchivo)) - .addGroup(jPanel1Layout.createSequentialGroup() - .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, 139, javax.swing.GroupLayout.PREFERRED_SIZE) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(btnExaminar))) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - jPanel1Layout.setVerticalGroup( - jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, jPanel1Layout.createSequentialGroup() - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addGroup(jPanel1Layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(labelArchivoFirma) - .addComponent(txtRutaArchivo, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addComponent(btnExaminar)) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.UNRELATED) - .addComponent(btnFirmarArchivo) - .addContainerGap()) - ); - - tokenIkey.setText("iKey 2032"); - tokenIkey.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenIkeyActionPerformed(evt); - } - }); - - tokenAlladin.setText("eTokenPro"); - tokenAlladin.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenAlladinActionPerformed(evt); - } - }); - - tokenSD.setText("Security Data"); - tokenSD.addActionListener(new java.awt.event.ActionListener() { - public void actionPerformed(java.awt.event.ActionEvent evt) { - tokenSDActionPerformed(evt); - } - }); - - javax.swing.GroupLayout layout = new javax.swing.GroupLayout(getContentPane()); - getContentPane().setLayout(layout); - layout.setHorizontalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(layout.createSequentialGroup() - .addContainerGap() - .addComponent(jPanel1, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE) - .addContainerGap()) - .addGroup(layout.createSequentialGroup() - .addGap(41, 41, 41) - .addComponent(tokenIkey) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tokenAlladin) - .addPreferredGap(javax.swing.LayoutStyle.ComponentPlacement.RELATED) - .addComponent(tokenSD) - .addContainerGap(javax.swing.GroupLayout.DEFAULT_SIZE, Short.MAX_VALUE)) - ); - layout.setVerticalGroup( - layout.createParallelGroup(javax.swing.GroupLayout.Alignment.LEADING) - .addGroup(javax.swing.GroupLayout.Alignment.TRAILING, layout.createSequentialGroup() - .addContainerGap(75, Short.MAX_VALUE) - .addGroup(layout.createParallelGroup(javax.swing.GroupLayout.Alignment.BASELINE) - .addComponent(tokenAlladin) - .addComponent(tokenSD) - .addComponent(tokenIkey)) - .addGap(18, 18, 18) - .addComponent(jPanel1, javax.swing.GroupLayout.PREFERRED_SIZE, javax.swing.GroupLayout.DEFAULT_SIZE, javax.swing.GroupLayout.PREFERRED_SIZE) - .addGap(25, 25, 25)) - ); - }// //GEN-END:initComponents - - private void btnExaminarActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnExaminarActionPerformed - // TODO add your handling code here: - try - { - /**llamamos el metodo que permite cargar la ventana*/ - JFileChooser fileChooser=new JFileChooser(); - String rutaArchivo = txtRutaArchivo.getText(); - File directorio = new File(rutaArchivo).getParentFile(); - fileChooser.setCurrentDirectory(directorio); -// System.out.println("Directorio del archivo "+fileChooser.getCurrentDirectory() != null ? fileChooser.getCurrentDirectory().getAbsolutePath() : ""); - /**abrimos el archivo seleccionado*/ - int respuestaDialog = fileChooser.showOpenDialog(this); - - if(respuestaDialog == JFileChooser.APPROVE_OPTION){ - File fileSelected = fileChooser.getSelectedFile(); - rutaArchivoFirmar = fileSelected.getAbsolutePath(); - System.out.println("Ruta del archivo escogido "+rutaArchivoFirmar); - txtRutaArchivo.setText(rutaArchivoFirmar); - } else{ - JOptionPane.showMessageDialog(null,"" + - "\nAccion cancelada por el usuario", - "ADVERTENCIA!!!",JOptionPane.WARNING_MESSAGE); - } - - - /**recorremos el archivo, lo leemos para plasmarlo - *en el area de texto*/ - - }catch(Throwable ex) - { - JOptionPane.showMessageDialog(null,ex+"" + - "\nNo se ha encontrado el archivo", - "ADVERTENCIA!!!",JOptionPane.WARNING_MESSAGE); - } - }//GEN-LAST:event_btnExaminarActionPerformed - - private void btnFirmarArchivoActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_btnFirmarArchivoActionPerformed - // TODO add your handling code here: - InputStream inputStream = null; - try{ - String razon = getParameter("razon") != null ? getParameter("razon") : ""; - String lugar = getParameter("lugar") != null ? getParameter("lugar") : ""; - String nombreFirma = getParameter("firma") != null ? getParameter("firma") : ""; - Float llx = Float.valueOf(getParameter("llx") != null ? Float.parseFloat(getParameter("llx")) : 0.0F); - Float lly = Float.valueOf(getParameter("lly") != null ? Float.parseFloat(getParameter("lly")) : 0.0F); - Float urx = Float.valueOf(getParameter("urx") != null ? Float.parseFloat(getParameter("urx")) : 0.0F); - Float ury = Float.valueOf(getParameter("ury") != null ? Float.parseFloat(getParameter("ury")) : 0.0F); - if(tipoFirma == null){ - JOptionPane.showMessageDialog(null, "Debe seleccionar un Token con el cual firmar", "Tipo Firma", JOptionPane.ERROR_MESSAGE); - return; - } - if(txtRutaArchivo.getText() != null){ - JPasswordField txtPasswordToken = new JPasswordField(); - final JComponent[] components = new JComponent[]{new JLabel("Password:"), txtPasswordToken}; - JOptionPane.showMessageDialog(null, components, "TOKEN", JOptionPane.PLAIN_MESSAGE); - if(txtPasswordToken.getPassword() == null){ - throw new NullPointerException(FirmMessages.getString("FIR-0007")); - } - inputStream = new FileInputStream(txtRutaArchivo.getText()); - byte[] datos = CertificateUtils.sign(inputStream, null, new String(txtPasswordToken.getPassword()), razon, lugar, Boolean.FALSE.booleanValue(), Boolean.FALSE.booleanValue(), new Rectangle(llx.floatValue(), lly.floatValue(), urx.floatValue(), ury.floatValue()), 1, nombreFirma, this.tipoFirma); - if(datos != null){ - escribirArchivo(datos); - txtPasswordToken.setText(""); - JOptionPane.showMessageDialog(null, "El archivo se modificado correctamente", "Archivo firmado", JOptionPane.INFORMATION_MESSAGE); - } - }else{ - JOptionPane.showMessageDialog(null, "Debe seleccionar un archivo", "Archivo no encontrado", JOptionPane.ERROR_MESSAGE); - } - btnFirmarArchivo.setEnabled(false); - btnExaminar.setEnabled(false); - } catch(IOException e){ - JOptionPane.showMessageDialog(null, e.getMessage(), "IO Error", JOptionPane.ERROR_MESSAGE); - } catch(Exception e){ - JOptionPane.showMessageDialog(null, e.getMessage(), "Error", JOptionPane.ERROR_MESSAGE); - } finally{ - try { - if(inputStream != null){ - inputStream.close(); - } - } catch (IOException ex) { - Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); - } - } - }//GEN-LAST:event_btnFirmarArchivoActionPerformed - - public void escribirArchivo(byte[] data){ - System.out.println("Ingreso a escribir el archivo"); - FileOutputStream fo = null; - try { - File archivoFirmado = new File(txtRutaArchivo.getText()); - fo = new FileOutputStream(archivoFirmado); - fo.write(data); - } catch (FileNotFoundException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), "Error archivo no encontrado", JOptionPane.ERROR_MESSAGE); - } catch (IOException e) { - JOptionPane.showMessageDialog(null, e.getMessage(), "Error al escribir el archivo firmado", JOptionPane.ERROR_MESSAGE); - } finally { - try { - fo.close(); - } catch (IOException ex) { - Logger.getLogger(FirmaApplet.class.getName()).log(Level.SEVERE, null, ex); - } - } - } - private void tokenIkeyActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenIkeyActionPerformed - // TODO add your handling code here: - tipoFirma = "1"; - }//GEN-LAST:event_tokenIkeyActionPerformed - - private void tokenAlladinActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenAlladinActionPerformed - // TODO add your handling code here: - tipoFirma = "2"; - }//GEN-LAST:event_tokenAlladinActionPerformed - - private void tokenSDActionPerformed(java.awt.event.ActionEvent evt) {//GEN-FIRST:event_tokenSDActionPerformed - // TODO add your handling code here: - tipoFirma = "3"; - }//GEN-LAST:event_tokenSDActionPerformed - - // Variables declaration - do not modify//GEN-BEGIN:variables - private javax.swing.JButton btnExaminar; - private javax.swing.JButton btnFirmarArchivo; - private javax.swing.ButtonGroup grupoRadios; - private javax.swing.JPanel jPanel1; - private javax.swing.JLabel labelArchivoFirma; - private javax.swing.JRadioButton tokenAlladin; - private javax.swing.JRadioButton tokenIkey; - private javax.swing.JRadioButton tokenSD; - private javax.swing.JTextField txtRutaArchivo; - // End of variables declaration//GEN-END:variables -} diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/entries b/appletFirma/src/main/java/com/fp/firma/common/.svn/entries deleted file mode 100644 index 26d9970..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma/common -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FirmasException.java -file - - - - -2022-07-28T03:40:23.887721Z -84290c6223a2073cf617d181f8c1bdc5 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -720 - -CertificateUtils.java -file - - - - -2022-07-28T03:40:23.887721Z -17c37f7ea3aec267390dece54b70a43b -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -25187 - -FirmMessages.java -file - - - - -2022-07-28T03:40:23.888721Z -214a4e732a4b72d7ee6b901019619bf0 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -361 - diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/CertificateUtils.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/CertificateUtils.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/CertificateUtils.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmMessages.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmMessages.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmMessages.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmasException.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmasException.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/prop-base/FirmasException.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/CertificateUtils.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/CertificateUtils.java.svn-base deleted file mode 100644 index 44082ba..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/CertificateUtils.java.svn-base +++ /dev/null @@ -1,584 +0,0 @@ -package com.fp.firma.common; - -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Security; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Enumeration; -import java.util.List; - -import org.bouncycastle.jce.provider.BouncyCastleProvider; - -import com.fp.firma.dto.TfirmDatosFirmante; -import com.fp.firma.keystore.KeyStoreProvider; -import com.fp.firma.keystore.LinuxKeyStoreProvider; -import com.fp.firma.keystore.WindowsJDK6KeyStoreProvider; -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.Font; -import com.itextpdf.text.Rectangle; -import com.itextpdf.text.pdf.AcroFields; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfSignatureAppearance; -import com.itextpdf.text.pdf.PdfStamper; -import com.itextpdf.text.pdf.security.BouncyCastleDigest; -import com.itextpdf.text.pdf.security.CertificateInfo; -import com.itextpdf.text.pdf.security.CertificateInfo.X500Name; -import com.itextpdf.text.pdf.security.DigestAlgorithms; -import com.itextpdf.text.pdf.security.ExternalDigest; -import com.itextpdf.text.pdf.security.ExternalSignature; -import com.itextpdf.text.pdf.security.MakeSignature; -import com.itextpdf.text.pdf.security.MakeSignature.CryptoStandard; -import com.itextpdf.text.pdf.security.OcspClient; -import com.itextpdf.text.pdf.security.OcspClientBouncyCastle; -import com.itextpdf.text.pdf.security.PrivateKeySignature; -import com.itextpdf.text.pdf.security.TSAClient; -//import javax.persistence.NoResultException; -//import javax.persistence.Query; - -/** - * Clase que contiene métodos utilitarios para manejar certificados - * - * @author dcruz - * - */ -public class CertificateUtils { - - /* - * CONSTANTES DESIGNADAS SEGUN LA NUEVA ESTRUCTURA DEL BCE - */ - // OIDs de Campos del Certificado: - public static final String OID_CEDULA_PASAPORTE = FirmMessages.getString("oid.cedula_pasaporte"); - - public static final String OID_NOMBRES = FirmMessages.getString("oid.nombres_persona"); - - public static final String OID_APELLIDO_1 = FirmMessages.getString("oid.apellido_persona1"); - - public static final String OID_APELLIDO_2 = FirmMessages.getString("oid.apellido_persona2"); - - public static final String OID_CARGO = FirmMessages.getString("oid.cargo"); - - public static final String OID_INSTITUCION = FirmMessages.getString("oid.institucion"); - - public static final String OID_DIRECCION = FirmMessages.getString("oid.direccion"); - - public static final String OID_TELEFONO = FirmMessages.getString("oid.telefono"); - - public static final String OID_CIUDAD = FirmMessages.getString("oid.ciudad"); - - public static final String OID_RAZON_SOCIAL = FirmMessages.getString("oid.razon_social"); - - public static final String OID_RUC = FirmMessages.getString("oid.ruc"); - - public static final String X509 = "X.509"; - - static { - BouncyCastleProvider provider = new BouncyCastleProvider(); - Security.addProvider(provider); - } - - /** - * Retorna el certificado del usuario contenido en la firma - * - * @param store el store en el que se va a buscar los certificados - * @param aliases los alias que estan dentro del keystore - * @return el {@link java.security.Certificate} - * @throws KeyStoreException - */ - public synchronized static Certificate obtainCertificateInAlias(KeyStore store, Enumeration aliases) throws KeyStoreException { - Certificate certs[] = null; - synchronized (aliases) { - int i = 0; - while (aliases.hasMoreElements()) { - String alias = aliases.nextElement(); - System.out.println("Se imprime los alias: " + i + " " + alias); - certs = store.getCertificateChain(alias); - for (int j = 0; j < certs.length; j++) { - X509Certificate certificate = (X509Certificate) certs[j]; - boolean[] usages = certificate.getKeyUsage(); - System.out.println("Certificado en primera posicion usado: " + j + " " + usages[0]); - if (usages[0]) { - return certificate; - } - } - i++; - } - - } - return null; - } - - /** - * Se devuelve todos los datos de la firma del usuario en base al certificado enviado - * - * @param certificate el certificado enviado - * @return Los datos del certificado de dicho usuario - */ - public static TfirmDatosFirmante obtainDataForCertificate(Certificate certificate) { - X509Certificate signedCertificate = (X509Certificate) certificate; - TfirmDatosFirmante datosFirmante = new TfirmDatosFirmante(); - if (signedCertificate.getExtensionValue(OID_CEDULA_PASAPORTE) != null) { - datosFirmante.setIdentificacion(new String(signedCertificate.getExtensionValue(OID_CEDULA_PASAPORTE)).trim()); - } - if (signedCertificate.getExtensionValue(OID_NOMBRES) != null) { - datosFirmante.setNombre(new String(signedCertificate.getExtensionValue(OID_NOMBRES)).trim()); - } - if (signedCertificate.getExtensionValue(OID_APELLIDO_1) != null) { - datosFirmante.setApellido1(new String(signedCertificate.getExtensionValue(OID_APELLIDO_1)).trim()); - if (signedCertificate.getExtensionValue(OID_APELLIDO_2) != null) { - datosFirmante.setApellido2(new String(signedCertificate.getExtensionValue(OID_APELLIDO_2)).trim()); - } else { - datosFirmante.setApellido2(""); - } - } - if (signedCertificate.getExtensionValue(OID_TELEFONO) != null) { - datosFirmante.setTelefono(new String(signedCertificate.getExtensionValue(OID_TELEFONO)).trim()); - } - if (signedCertificate.getExtensionValue(OID_CARGO) != null) { - datosFirmante.setCargo(new String(signedCertificate.getExtensionValue(OID_CARGO)).trim()); - } - if (signedCertificate.getExtensionValue(OID_CIUDAD) != null) { - datosFirmante.setCiudad(new String(signedCertificate.getExtensionValue(OID_CIUDAD)).trim()); - } - if (signedCertificate.getExtensionValue(OID_DIRECCION) != null) { - datosFirmante.setDireccion(new String(signedCertificate.getExtensionValue(OID_DIRECCION)).trim()); - } - if (signedCertificate.getExtensionValue(OID_INSTITUCION) != null) { - datosFirmante.setInstitucion(new String(signedCertificate.getExtensionValue(OID_INSTITUCION)).trim()); - } - if (signedCertificate.getExtensionValue(OID_RAZON_SOCIAL) != null) { - datosFirmante.setInstitucion(new String(signedCertificate.getExtensionValue(OID_RAZON_SOCIAL)).trim()); - } - if (signedCertificate.getExtensionValue(OID_RUC) != null) { - datosFirmante.setRuc(new String(signedCertificate.getExtensionValue(OID_RUC)).trim()); - } - datosFirmante.setFechaInicioVigencia(signedCertificate.getNotBefore()); - datosFirmante.setFechaVigencia(signedCertificate.getNotAfter()); - return datosFirmante; - } - - /** - * Valida que el certificado del usuario sea un certificado valido contra el servicio OCSP del proveedor - * - * @param certificateUser - * @throws FileNotFoundException - * @throws CertificateException - */ - public static void validateOcsCertificate(Certificate certificateUser) throws FileNotFoundException, CertificateException { - System.out.println(((X509Certificate) certificateUser).getIssuerDN().getName()); - CertificateFactory cf = CertificateFactory.getInstance(X509); - InputStream subordStream = new FileInputStream(FirmMessages.getString("dir.ruta.base.repositorio") + "/" - + FirmMessages.getString("nombre.certificado.subordinado")); - X509Certificate subordCertificate = (X509Certificate) cf.generateCertificate(subordStream); - check((X509Certificate) certificateUser, subordCertificate); - } - - /** - * Valida que los certificados enviados sean validos por la entidad certificadora - * - * @param issuerCert certificado del usuario - * @param x509Cert certificado que firmo el certificado expedido - */ - public static void check(X509Certificate issuerCert, X509Certificate x509Cert) { -// try { -// -// BigInteger serialNumber = issuerCert.getSerialNumber(); -// X509CertificateHolder holder; -// -// try { -// holder = new X509CertificateHolder(x509Cert.getEncoded()); -// } catch (IOException e) { -// throw new RuntimeException(e); -// } -// -// CertificateID id = new CertificateID(new JcaDigestCalculatorProviderBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build() -// .get(CertificateID.HASH_SHA1), holder, serialNumber); -// -// OCSPReqBuilder ocspGen = new OCSPReqBuilder(); -// ocspGen.addRequest(id); -// OCSPReq ocspReq = ocspGen.build(); -// -// // Ir al OCSP -// String ocspUrl = CertificateUtil.getOCSPURL(issuerCert); -// -// if (ocspUrl == null) { -// System.out.println("URL de OCSP is null"); -// return; -// } -// -// URL url; -// -// try { -// url = new URL(ocspUrl); -// } catch (MalformedURLException e) { -// throw new RuntimeException(e); -// } -// -// HttpURLConnection con; -// OCSPResp ocspResponse; -// DataOutputStream dataOut = null; -// try { -// con = (HttpURLConnection) url.openConnection(); -// -// con.setRequestProperty("Content-Type", "application/ocsp-request"); -// con.setRequestProperty("Accept", "application/ocsp-response"); -// con.setDoOutput(true); -// -// OutputStream out = con.getOutputStream(); -// dataOut = new DataOutputStream(new BufferedOutputStream(out)); -// dataOut.write(ocspReq.getEncoded()); -// -// System.out.println("Estado de respuesta de la peticion=" + con.getResponseCode()); -// -// /* -// * Se parsea la respuesta y se obtiene el estado del certificado retornado por el OCSP -// */ -// InputStream in = (InputStream) con.getContent(); -// byte[] resp = read(in); // Read the reponse -// ocspResponse = new OCSPResp(resp); -// } catch (IOException e) { -// throw new FirmasException("ERROR AL ESTABLECER CONEXI\u00d3N AL SERVICIO: "+url); -// } finally{ -// if(dataOut != null){ -// try { -// dataOut.flush(); -// dataOut.close(); -// } catch (IOException e) {} -// } -// } -// -// int status = ocspResponse.getStatus(); -// System.out.println("status=" + status); -// -// BasicOCSPResp basicResponse = (BasicOCSPResp) ocspResponse.getResponseObject(); -// -// if (basicResponse != null) { -// SingleResp[] responses = basicResponse.getResponses(); -// SingleResp response = responses[0]; -// CertificateStatus certStatus = (CertificateStatus) response.getCertStatus(); -// -// if (certStatus instanceof RevokedStatus) { -// System.out.println("REVOKED"); -// RevokedStatus revokedStatus = (RevokedStatus) certStatus; -// System.out.println("Reason: " + revokedStatus.getRevocationReason()); -// System.out.println("Date: " + revokedStatus.getRevocationTime()); -// -// throw new FirmasException("ERROR, CERTIFICADO REVOCADO POR "+revokedStatus.getRevocationReason()+" CON FECHA "+ revokedStatus.getRevocationTime()); -// } -// } -// } catch (OCSPException e) { -// throw new RuntimeException(e); -// } catch (CertificateEncodingException e) { -// throw new RuntimeException(e); -// } - } - - /** - * Devuelve los nombres de firmas de un documento PDF - * - * @param docStream el documento a verificar - * @return un lista de nombres de firmas - */ - public static List obtainNameSigns(InputStream docStream) { - try { - PdfReader docPdf = new PdfReader(docStream); - AcroFields af = docPdf.getAcroFields(); - return af.getSignatureNames(); - } catch (IOException e) { - System.err.println("Error al obtener los nombres del documentoss"); - return null; - } finally{ - - } - } - -/** - * Método para firmar documentos - * @param fileSrc - * @param usuario - * @param password - * @param compania - * @param reason - * @param location - * @param rectangle - * @param numPage - * @param nameSign - * @return - * @throws Exception - */ - public static byte[] sign(InputStream fileSrc, String usuario, String password, Integer compania, String reason, String location, - Rectangle rectangle, int numPage, String nameSign, String pathCertificate) throws Exception { - String path = pathCertificate; - FileInputStream ceritificateInputStream = new FileInputStream(path); - return sign(fileSrc, ceritificateInputStream, password, reason, location, false, true, rectangle, numPage, nameSign, null); - } - - /** - * Metodo para firmar documentos - * @param fileSrc - * @param usuario - * @param password - * @param compania - * @param reason - * @param location - * @param rectangle - * @param numPage - * @param nameSign - * @return - * @throws Exception - */ - public static byte[] sign(InputStream fileSrc, String usuario, String password, Integer compania, String reason, String location, - Rectangle rectangle, int numPage, String nameSign) throws Exception { - String path = ""; - FileInputStream ceritificateInputStream = new FileInputStream(path); - return sign(fileSrc, ceritificateInputStream, password, reason, location, false, true, rectangle, numPage, nameSign, null); - } - - /** - * Método que firma un documento en base los parámetros indicados - * - * @param fileSrc archivo origen - * @param fileCert archivo firma en formato digital si no es null el firmado es con archivo caso contrario es token - * @param password contrasena - * @param reason razón o motivo de la firma. - * @param location localización coemtario adicional de la firma. - * @param withTS tiene TS estamapado de tiempo. - * @param withOCSP tiene OCSP verificacion de la firma por el la entidad certificadora BCE. - * @param rectangle lugar localizaci´n firma - * @param numPage número pagina - * @param nameSign nombre firma - * @param tipoFirma es el tipo de token que se usará(Token que tipo?) - * @return el documento firmado - */ - public static byte[] sign(InputStream fileSrc, InputStream fileCert, String password, String reason, String location, boolean withTS, - boolean withOCSP, Rectangle rectangle, int numPage, String nameSign, String tipoFirma) { - OutputStream outputStream = null; - System.out.println("Ingreso a firmar"); - try { - PdfReader pdfReader = new PdfReader(fileSrc); - outputStream = new ByteArrayOutputStream(512); - PdfStamper stamper = PdfStamper.createSignature(pdfReader, outputStream, '\0'); - PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); - KeyStore store; - String alias; -// PrivateKey privateKey = null; - ExternalSignature signature = null; - if(fileCert != null){ - store = KeyStore.getInstance("PKCS12"); - store.load(fileCert, password.toCharArray()); - alias = store.aliases().nextElement(); - signature = new PrivateKeySignature((PrivateKey) store.getKey(alias, password.toCharArray()), DigestAlgorithms.SHA256, - "SunRsaSign"); - } else{//firma por token - KeyStoreProvider provider = getKeyStoreProvider(tipoFirma); - store = provider.getKeystore(password.toCharArray()); - alias = store.aliases().nextElement(); -// privateKey = (PrivateKey) store.getKey(alias, null); - signature = new PrivateKeySignature((PrivateKey) store.getKey(alias, null), DigestAlgorithms.SHA1, - null); - } -// appearance.setCrypto(privateKey, store.getCertificateChain(alias), null, null); - appearance.setLayer2Text(generateSignText(store.getCertificateChain(alias), reason, location)); - appearance.setLayer2Font(new Font(Font.FontFamily.UNDEFINED, 8F)); - appearance.setVisibleSignature(rectangle, numPage, nameSign); - TSAClient tsc = null; - if (withTS) { - - } - OcspClient ocsp = null; - if (withOCSP) { - ocsp = new OcspClientBouncyCastle(); - } -// stamper.close(); - ExternalDigest externalDigest = new BouncyCastleDigest(); - MakeSignature.signDetached(appearance, externalDigest, signature, store.getCertificateChain(alias), null, ocsp, tsc, 15000, - CryptoStandard.CADES); - return ((ByteArrayOutputStream) outputStream).toByteArray(); - } catch (IOException e) { - throw new RuntimeException(e); - } catch (DocumentException e) { - throw new RuntimeException(e); - } catch (KeyStoreException e) { - throw new RuntimeException(e); - } catch (NoSuchAlgorithmException e) { - throw new RuntimeException(e); - } catch (CertificateException e) { - throw new RuntimeException(e); - } catch (GeneralSecurityException e) { - throw new RuntimeException(e); - } catch (FirmasException e) { - throw new RuntimeException(FirmMessages.getString("FIR-0006")); - } catch (Throwable e) { - throw new RuntimeException(e); - } finally{ - try { - if(fileCert != null){ - fileCert.close(); - } - } catch (IOException e) {} - try { - fileSrc.close(); - } catch (IOException e) {} - try { - if(outputStream != null){ - - outputStream.close(); - } - } catch (IOException e) {} - } - } - - /** - * Arma documento el texto a mostrar de la plantilla - * @param chains certificados - * @param reason razón - * @param location lugar - * @return una layout de la firma - */ - private static String generateSignText(Certificate[] chains, String reason, String location){ - StringBuffer textLayout = new StringBuffer("Firmado digitalmente por: "); - String name = null; - X500Name x500name = CertificateInfo.getSubjectFields((X509Certificate)chains[0]); - if (x500name != null) { - name = x500name.getField("CN"); - if (name == null) - name = x500name.getField("E"); - } - if(name == null){ - name = ""; - } - textLayout.append(name).append("\n"); - if(reason != null){ - textLayout.append("Raz\u00f3n: ").append(reason).append("\n"); - } - if(location != null){ - textLayout.append("Lugar: ").append(location).append("\n"); - } - SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - textLayout.append("Fecha: ").append(format.format(new Date(System.currentTimeMillis()))); - return textLayout.toString(); - } - - /** - * Retorna el keystore del token especificado - * @param tipoToken - * @return - * @throws KeyStoreException - */ - private static KeyStoreProvider getKeyStoreProvider(String tipoToken) { - String osName = System.getProperty("os.name"); - KeyStoreProvider provider = null; - if(tipoToken == null){ - return provider; - } - if (osName.toUpperCase().indexOf("WINDOWS") == 0) { - provider = new WindowsJDK6KeyStoreProvider(); - if (tipoToken.equals("2")) { - provider = new WindowsJDK6KeyStoreProvider(); // trabaja con librerias sera para eToken - }else if (tipoToken.equals("1")) { - provider = new WindowsJDK6KeyStoreProvider(); // trabaja con librerias sera para iKey - }else if (tipoToken.equals("3")) { - provider = new WindowsJDK6KeyStoreProvider(); // trabaja con librerias sera para iKey - } - } else { - provider = new LinuxKeyStoreProvider(); - } - return provider; - } - - private static byte[] read(InputStream in) throws IOException { - ByteArrayOutputStream bos = new ByteArrayOutputStream(); - int next = in.read(); - while (next > -1) { - bos.write(next); - next = in.read(); - } - bos.flush(); - return bos.toByteArray(); - } - - /** - * Entrega el path en el que se encuentra el certificado digital. - * - * @param cusuario Codigo de usuario. - * @param ccompania Codigo de compania. - * @return String - * @throws Exception - */ -// private static String getPath(String cusuario, Integer ccompania) throws Exception { -// TfirmCertificado tfirmcertificado = getTfirmCertificado(cusuario); -// TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("PATH_CERTIFICADO_BCE", ccompania); -// TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey); -// String path = tgeneParameters.getTextvalue() + "/" + tfirmcertificado.getPk().getIdcertificado(); -// return path; -// } - - /** - * Sentencia que entrega la defincion vigente de un certificado digital para un usuario. - */ -// private static final String JPQL = "from TfirmCertificado where t.codigousuario = :cusuario"; - - /** - * Entrega defincion de certificados digitales vigente. - * - * @param cusuario Codigo de usuario. - * @return TfirmCertificado. - * @throws Exception - */ -// private static TfirmCertificado getTfirmCertificado(String cusuario) throws Exception { -// TfirmCertificado tfirmCertificado = null; -// Query qry = PersistenceHelper.getEntityManager().createQuery(JPQL); -// qry.setParameter("cusuario", cusuario); -// try { -// tfirmCertificado = (TfirmCertificado) qry.getSingleResult(); -// } catch (NoResultException e) { -// throw new FirmasException("FIR-0001", "PARAMETROS DEL CERTIFICADO DIGITAL NO DEFINIDO PARA EL USUARIO: {0}", cusuario); -// } -// return tfirmCertificado; -// } - - - /* - public static boolean validatePassword(InputStream fileSrc, String usuario, String password, Integer compania, String reason, String location, - Rectangle rectangle, int numPage, String nameSign) throws Exception { - String path = getPath(usuario, compania); - FileInputStream ceritificateInputStream = new FileInputStream(path); - return pass(fileSrc, ceritificateInputStream, password, reason, location, false, true, rectangle, numPage, nameSign); - } - - - private static boolean pass(InputStream fileSrc, InputStream fileCert, String password, String reason, String location, boolean withTS, - boolean withOCSP, Rectangle rectangle, int numPage, String nameSign) { - try { - PdfReader pdfReader = new PdfReader(fileSrc); - OutputStream outputStream = new ByteArrayOutputStream(512); - PdfStamper stamper = PdfStamper.createSignature(pdfReader, outputStream, '\0'); - PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); - - KeyStore store = KeyStore.getInstance("PKCS12"); - store.load(fileCert, password.toCharArray()); - String alias = store.aliases().nextElement(); - ExternalSignature signature = new PrivateKeySignature((PrivateKey) store.getKey(alias, password.toCharArray()), DigestAlgorithms.SHA256, - "SunRsaSign"); - return true; - } catch (Exception e) { - return false; - } - } - */ - - -} diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmMessages.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmMessages.java.svn-base deleted file mode 100644 index c560464..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmMessages.java.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -package com.fp.firma.common; - -import java.util.ResourceBundle; - -public class FirmMessages { - - private final static String RESOURCE = "firmessages_es"; - - private final static ResourceBundle firmessages; - - static{ - firmessages = ResourceBundle.getBundle(RESOURCE); - } - - public static String getString(String key) { - return firmessages.getString(key); - } - -} diff --git a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmasException.java.svn-base b/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmasException.java.svn-base deleted file mode 100644 index d781306..0000000 --- a/appletFirma/src/main/java/com/fp/firma/common/.svn/text-base/FirmasException.java.svn-base +++ /dev/null @@ -1,30 +0,0 @@ -package com.fp.firma.common; - - -/** - * Clase que manejará todos los errores relacionados con la firma digital - * - * @author dcruz - * - */ -public class FirmasException extends RuntimeException { - - private static final long serialVersionUID = -599185902882644036L; - - public FirmasException(String message) { - super(message); - } - - public FirmasException(String message, Throwable cause) { - super(message, cause); - } - - public FirmasException(Throwable cause) { - super(cause); - } - - public FirmasException(String message, Throwable cause, boolean enableSuppression, boolean writableStackTrace) { - super(message, cause, enableSuppression, writableStackTrace); - } - -} diff --git a/appletFirma/src/main/java/com/fp/firma/component/.svn/entries b/appletFirma/src/main/java/com/fp/firma/component/.svn/entries deleted file mode 100644 index 44d0f5e..0000000 --- a/appletFirma/src/main/java/com/fp/firma/component/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma/component -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -PasswordDialog.java -file - - - - -2022-07-28T03:40:23.697721Z -2b492580e233dc08baf86d4b915c4e2a -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1794 - diff --git a/appletFirma/src/main/java/com/fp/firma/component/.svn/prop-base/PasswordDialog.java.svn-base b/appletFirma/src/main/java/com/fp/firma/component/.svn/prop-base/PasswordDialog.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/component/.svn/prop-base/PasswordDialog.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/component/.svn/text-base/PasswordDialog.java.svn-base b/appletFirma/src/main/java/com/fp/firma/component/.svn/text-base/PasswordDialog.java.svn-base deleted file mode 100644 index 3667ca9..0000000 --- a/appletFirma/src/main/java/com/fp/firma/component/.svn/text-base/PasswordDialog.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.firma.component; - -import java.awt.event.ActionEvent; -import java.awt.event.ActionListener; -import java.awt.event.ComponentAdapter; -import java.awt.event.ComponentEvent; -import java.awt.event.WindowAdapter; -import java.awt.event.WindowEvent; -import java.beans.PropertyChangeEvent; -import java.beans.PropertyChangeListener; -import javax.swing.JDialog; -import javax.swing.JOptionPane; -import javax.swing.JPasswordField; - -/** - * Dialog que permite el ingreso del password del token para la firma - * @author dcruz - */ -public class PasswordDialog extends JDialog implements ActionListener, PropertyChangeListener{ - - private JPasswordField txtPasswordCertificado; - - public PasswordDialog(){ - super(); - txtPasswordCertificado = new JPasswordField(); - setDefaultCloseOperation(DO_NOTHING_ON_CLOSE); - addComponentListener(new ComponentAdapter() { - @Override - public void componentShown(ComponentEvent ce) { - txtPasswordCertificado.requestFocusInWindow(); - } - }); - txtPasswordCertificado.addActionListener(this); - } - - public void actionPerformed(ActionEvent e) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - public void propertyChange(PropertyChangeEvent evt) { - throw new UnsupportedOperationException("Not supported yet."); //To change body of generated methods, choose Tools | Templates. - } - - /** This method clears the dialog and hides it. */ - public void clearAndHide() { - txtPasswordCertificado.setText(null); - setVisible(false); - } -} diff --git a/appletFirma/src/main/java/com/fp/firma/dto/.svn/entries b/appletFirma/src/main/java/com/fp/firma/dto/.svn/entries deleted file mode 100644 index a2055ff..0000000 --- a/appletFirma/src/main/java/com/fp/firma/dto/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma/dto -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TfirmDatosFirmante.java -file - - - - -2022-07-28T03:40:23.854721Z -dab60ed3fdfb2662d1e1b54882a17c12 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -3379 - diff --git a/appletFirma/src/main/java/com/fp/firma/dto/.svn/prop-base/TfirmDatosFirmante.java.svn-base b/appletFirma/src/main/java/com/fp/firma/dto/.svn/prop-base/TfirmDatosFirmante.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/dto/.svn/prop-base/TfirmDatosFirmante.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/dto/.svn/text-base/TfirmDatosFirmante.java.svn-base b/appletFirma/src/main/java/com/fp/firma/dto/.svn/text-base/TfirmDatosFirmante.java.svn-base deleted file mode 100644 index 39b5ea0..0000000 --- a/appletFirma/src/main/java/com/fp/firma/dto/.svn/text-base/TfirmDatosFirmante.java.svn-base +++ /dev/null @@ -1,169 +0,0 @@ -package com.fp.firma.dto; - -import java.io.Serializable; -import java.util.Date; - -/** - * Clase que contiene los datos del usuario que es dueno de la firma y en la cual - * - * @author dcruz - * - */ -public class TfirmDatosFirmante implements - Serializable, Cloneable { - - private static final long serialVersionUID = 4232773513442100177L; - private String aliasCertificado; - private String identificacion; - private String nombre; - private String apellido1; - private String apellido2; - private String cargo; - private String institucion; - private String direccion; - private String telefono; - private String ciudad; - private String razonSocial; - private String ruc; - private Date fechaInicioVigencia; - private Date fechaVigencia; - - public TfirmDatosFirmante(){} - - public TfirmDatosFirmante(String identificacion, String nombre, - String apellido1, String apellido2, String cargo, - String institucion, String direccion, String telefono, - String ciudad, String razonSocial, String ruc) { - super(); - this.identificacion = identificacion; - this.nombre = nombre; - this.apellido1 = apellido1; - this.apellido2 = apellido2; - this.cargo = cargo; - this.institucion = institucion; - this.direccion = direccion; - this.telefono = telefono; - this.ciudad = ciudad; - this.razonSocial = razonSocial; - this.ruc = ruc; - } - - - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getNombre() { - return nombre; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public String getApellido1() { - return apellido1; - } - - public void setApellido1(String apellido1) { - this.apellido1 = apellido1; - } - - public String getApellido2() { - return apellido2; - } - - public void setApellido2(String apellido2) { - this.apellido2 = apellido2; - } - - public String getCargo() { - return cargo; - } - - public void setCargo(String cargo) { - this.cargo = cargo; - } - - public String getInstitucion() { - return institucion; - } - - public void setInstitucion(String institucion) { - this.institucion = institucion; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public String getTelefono() { - return telefono; - } - - public void setTelefono(String telefono) { - this.telefono = telefono; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getRuc() { - return ruc; - } - - public void setRuc(String ruc) { - this.ruc = ruc; - } - - public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); - } - - public Date getFechaVigencia() { - return fechaVigencia; - } - - public void setFechaVigencia(Date fechaVigencia) { - this.fechaVigencia = fechaVigencia; - } - - public Date getFechaInicioVigencia() { - return fechaInicioVigencia; - } - - public void setFechaInicioVigencia(Date fechaInicioVigencia) { - this.fechaInicioVigencia = fechaInicioVigencia; - } - - public String getAliasCertificado() { - return aliasCertificado; - } - - public void setAliasCertificado(String aliasCertificado) { - this.aliasCertificado = aliasCertificado; - } - -} diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/entries b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/entries deleted file mode 100644 index 38c0ed9..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/entries +++ /dev/null @@ -1,470 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/java/com/fp/firma/keystore -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -WindowsJDK5KeyStoreProvider_SD.java -file - - - - -2022-07-28T03:40:23.800721Z -4355360f5ecffb2d4776d5895e69d2ef -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -5923 - -FileKeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.801721Z -352ad7236593816e5385e65d46a8b0f2 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1478 - -KeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.801721Z -a0f54011dfb2d1e7f45d631fc88fd1b5 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -712 - -LinuxKeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.801721Z -cd842f1fbfeb4276644783b68fc000f2 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -4707 - -AppleKeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.802721Z -9cb997093c0456d0e27e53487b3089ed -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1435 - -PKCS11KeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.802721Z -9d48dfb6533b29e3de2b09e3558a4102 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -2747 - -SimpleCallbackHandler.java -file - - - - -2022-07-28T03:40:23.802721Z -f61edcced631f06f1e348a9e69df41a2 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1136 - -KeyStoreProviderFactory.java -file - - - - -2022-07-28T03:40:23.803721Z -6592e7f0cf2ac2b4c84453799ff34a3a -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1209 - -WindowsJDK5KeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.803721Z -7bf432721d15fd670c94fb663f37d404 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -5464 - -MockKeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.804721Z -b634940536517cc8b206d61696baaeeb -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1696 - -WindowsJDK5KeyStoreProvider_iKey.java -file - - - - -2022-07-28T03:40:23.804721Z -08c26de2f28d4b0ec66430d288a760cc -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -5977 - -WindowsJDK6KeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.804721Z -17872a0f5c62ffaa84c62af09d9a9da2 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1650 - -WindowsKeyStoreProvider.java -file - - - - -2022-07-28T03:40:23.805721Z -32b9f0efba427dd9cb235cbb97baa6e2 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1367 - diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/AppleKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/AppleKeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/AppleKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/FileKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/FileKeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/FileKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProviderFactory.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProviderFactory.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/KeyStoreProviderFactory.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/LinuxKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/LinuxKeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/LinuxKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/MockKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/MockKeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/MockKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/PKCS11KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/PKCS11KeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/PKCS11KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/SimpleCallbackHandler.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/SimpleCallbackHandler.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/SimpleCallbackHandler.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK6KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK6KeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsJDK6KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsKeyStoreProvider.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/prop-base/WindowsKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/AppleKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/AppleKeyStoreProvider.java.svn-base deleted file mode 100644 index ee50daa..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/AppleKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.IOException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.NoSuchProviderException; -import java.security.cert.CertificateException; - -/** - * Implementacion de KeyStoreProvider para el - * sistema operativo Mac OS X. - * - */ -public class AppleKeyStoreProvider implements KeyStoreProvider { - - private static final String APPLE_PROVIDER_TYPE = "KeychainStore"; - private static final String APPLE_PROVIDER_NAME = "Apple"; - - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - KeyStore keyStore = KeyStore.getInstance(APPLE_PROVIDER_TYPE, APPLE_PROVIDER_NAME); - keyStore.load(null, null); - return keyStore; - } catch (NoSuchProviderException e) { - throw new KeyStoreException(e); - } catch (NoSuchAlgorithmException e) { - throw new KeyStoreException(e); - } catch (CertificateException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/FileKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/FileKeyStoreProvider.java.svn-base deleted file mode 100644 index 7f87eec..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/FileKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; - -/** - * Implementación de KeyStoreProvider para leer de un archivo. - * - */ -public class FileKeyStoreProvider implements KeyStoreProvider { - - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - InputStream input = new FileInputStream(System.getProperty("user.home") + File.separator + ".keystore"); - - KeyStore keyStore = KeyStore.getInstance("jks"); - keyStore.load(input, password); - return keyStore; - } catch (FileNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchAlgorithmException e) { - throw new KeyStoreException(e); - } catch (CertificateException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - throw new KeyStoreException(e); - } finally { - // TODO: Close InputStream - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProvider.java.svn-base deleted file mode 100644 index b71f43e..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.security.KeyStore; -import java.security.KeyStoreException; - -/** - * Obtiene un KeyStore. - * - */ -public interface KeyStoreProvider { - - /** - * Obtiene un KeyStore protegido por un password. - * - * @param password - * @return - * @throws KeyStoreException - */ - KeyStore getKeystore(char[] password) throws KeyStoreException; -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProviderFactory.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProviderFactory.java.svn-base deleted file mode 100644 index 032dce4..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/KeyStoreProviderFactory.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.firma.keystore; - -import java.util.logging.Logger; - -/** - * Obtiene la implementacion correcta de KeyStoreProvider de acuerdo al sistema - * operativo. - */ -public class KeyStoreProviderFactory { - - private static final Logger log = Logger.getLogger(KeyStoreProviderFactory.class.getName()); - - /** - * Obtiene la implementacion correcta de KeyStoreProvider de acuerdo al - * sistema operativo. - * - * @return implementacion de KeyStoreProvider - */ - public static KeyStoreProvider createKeyStoreProvider() { - String osName = System.getProperty("os.name"); - String javaVersion = System.getProperty("java.version"); - - log.finer("Operating System:" + osName); - log.finer("Java Version:" + javaVersion); - - if (osName.toUpperCase().indexOf("WINDOWS") == 0) { - if (javaVersion.indexOf("1.6") == 0) { - return new WindowsJDK6KeyStoreProvider(); - } else { - return new WindowsJDK5KeyStoreProvider(); - } - } else if (osName.toUpperCase().indexOf("LINUX") == 0) { - return new LinuxKeyStoreProvider(); - } else if (osName.toUpperCase().indexOf("MAC") == 0) { - return new AppleKeyStoreProvider(); - } else { - throw new IllegalArgumentException("Sistema operativo no soportado!"); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/LinuxKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/LinuxKeyStoreProvider.java.svn-base deleted file mode 100644 index ed1155e..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/LinuxKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,123 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.security.AuthProvider; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.Provider; -import java.security.Security; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.security.auth.login.LoginException; - -/** - * Implementacion de KeyStoreProvider para utilizar con librerias - * PKCS#11 del sistema operativo Linux. - * - * Utiza OpenCT para acceder a un Token USB. - * - * - */ -public class LinuxKeyStoreProvider implements KeyStoreProvider { - - //MAC: /usr/local/lib/libsfntpkcs11.dylib\nslot = 1 - private static final byte[] PKCS11_CONFIG = "name = SmartCard\nlibrary = /usr/local/SafeNet/lib/libsfntpkcs11.so\nslot = 1 \n showInfo = true".getBytes(); // /usr/local/SafeNet/lib/libsfntpkcs11.so\nslot = 1 - ///usr/local/lib/libsfntpkcs11.dylib - private static final String SUN_PKCS11_PROVIDER_CLASS = "sun.security.pkcs11.SunPKCS11"; - private AuthProvider aprov; - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - InputStream configStream = new ByteArrayInputStream(PKCS11_CONFIG); - - Provider sunPKCS11Provider = this.createSunPKCS11Provider(configStream); - Security.addProvider(sunPKCS11Provider); - -// Eestas lineas se añadieron para poder hacer un logout del keystore -// - - KeyStore.Builder ksBuilder = KeyStore.Builder.newInstance( - "PKCS11", - null, - new KeyStore.CallbackHandlerProtection( new SimpleCallbackHandler(null,password ) )); //cmdLineHdlr - - KeyStore ks = ksBuilder.getKeyStore(); -// - - aprov = (AuthProvider) Security.getProvider( sunPKCS11Provider.getName() ); - aprov.setCallbackHandler( new SimpleCallbackHandler(null,password ) ); //cmdLineHdlr - - try { - aprov.login(null, null); - } catch (LoginException ex) { - Logger.getLogger(LinuxKeyStoreProvider.class.getName()).log(Level.SEVERE, null, ex); - throw new LoginException( /*ex*/ ); - } - -// KeyStore keyStore = KeyStore.getInstance("PKCS11"); -// -// keyStore.load(null, password); //null - System.out.println("Dentro LinuxKeystore anntes de ks:" + ks); - // aprov.logout(); - return ks; //keyStore -// } catch (CertificateException e) { -// throw new KeyStoreException(e); -// } catch (NoSuchAlgorithmException e) { -// throw new KeyStoreException(e); -// } catch (IOException e) { -// throw new KeyStoreException(e); -// } - } catch (Exception e){ - System.out.println("Error en el keystore:" + e); - e.printStackTrace(); - throw new KeyStoreException(e); - } - } - /** - * logout - * Esta función permite limpiar de memoria el keystore. - * @throws javax.security.auth.login.LoginException - */ - public void logout() throws LoginException{ - - this.aprov.logout(); - } - /** - * Instancia la clase sun.security.pkcs11.SunPKCS11 - * dinamicamente, usando Java Reflection. - * - * @return una instancia de sun.security.pkcs11.SunPKCS11 - */ - @SuppressWarnings("unchecked") - private Provider createSunPKCS11Provider(InputStream configStream) throws KeyStoreException { - try { - Class sunPkcs11Class = Class.forName(SUN_PKCS11_PROVIDER_CLASS); - Constructor pkcs11Constr = sunPkcs11Class.getConstructor(InputStream.class); - Provider pkcs11Provider = (Provider) pkcs11Constr.newInstance(configStream); - - return pkcs11Provider; - } catch (ClassNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchMethodException e) { - throw new KeyStoreException(e); - } catch (InvocationTargetException e) { - throw new KeyStoreException(e); - } catch (IllegalAccessException e) { - throw new KeyStoreException(e); - } catch (InstantiationException e) { - throw new KeyStoreException(e); - } - } -} diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/MockKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/MockKeyStoreProvider.java.svn-base deleted file mode 100644 index 4781c35..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/MockKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.KeyStoreException; - -/** - * Implementacion de KeyStoreProvider para pruebas. - * - */ -public class MockKeyStoreProvider implements KeyStoreProvider { - - private static final String KEYSTORE_FILE = "/home/ricardo/ricardostore"; - - // private static final String KEYSTORE_ALIAS = "firmadigital"; - // private static final char[] KEYSTORE_PASSWORD = "abc123".toCharArray(); - // private static final char[] KEY_PASSWORD = "ricardo".toCharArray(); - - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - KeyStore keyStore = KeyStore.getInstance("JKS"); - FileInputStream ksfis; - ksfis = new FileInputStream(KEYSTORE_FILE); - BufferedInputStream ksbufin = new BufferedInputStream(ksfis); - - keyStore.load(ksbufin, password); - // PrivateKey priv = (PrivateKey) keyStore.getKey(KEYSTORE_ALIAS, - // KEY_PASSWORD); - - return keyStore; - } catch (FileNotFoundException e) { - throw new KeyStoreException(e); - } catch (GeneralSecurityException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/PKCS11KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/PKCS11KeyStoreProvider.java.svn-base deleted file mode 100644 index 6d17b14..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/PKCS11KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,86 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.Provider; -import java.security.Security; -import java.security.cert.CertificateException; - - -/** - * Implementacion de KeyStoreProvider para utilizar con librerias - * PKCS#11 del sistema operativo. - * - * Utiza OpenCT para acceder a un Token USB. - * - * - */ -public abstract class PKCS11KeyStoreProvider implements KeyStoreProvider { - - /** - * Obtiene la configuración para el Provider, según el sistema operativo que se utilice. - * - * @return - */ - public abstract String getConfig(); - - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - InputStream configStream = new ByteArrayInputStream(getConfig().getBytes()); - - Provider sunPKCS11Provider = this.createSunPKCS11Provider(configStream); - Security.addProvider(sunPKCS11Provider); - - KeyStore keyStore = KeyStore.getInstance("PKCS11"); - keyStore.load(null, password); - - return keyStore; - } catch (CertificateException e) { - throw new KeyStoreException(e); - } catch (NoSuchAlgorithmException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - throw new KeyStoreException(e); - } - } - - /** - * Instancia la clase sun.security.pkcs11.SunPKCS11 - * dinamicamente, usando Java Reflection. - * - * @return una instancia de sun.security.pkcs11.SunPKCS11 - */ - @SuppressWarnings("unchecked") - private Provider createSunPKCS11Provider(InputStream configStream) throws KeyStoreException { - try { - Class sunPkcs11Class = Class.forName("sun.security.pkcs11.SunPKCS11"); - Constructor pkcs11Constr = sunPkcs11Class.getConstructor(InputStream.class); - return (Provider) pkcs11Constr.newInstance(configStream); - } catch (ClassNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchMethodException e) { - throw new KeyStoreException(e); - } catch (InvocationTargetException e) { - throw new KeyStoreException(e); - } catch (IllegalAccessException e) { - throw new KeyStoreException(e); - } catch (InstantiationException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/SimpleCallbackHandler.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/SimpleCallbackHandler.java.svn-base deleted file mode 100644 index 55ee16b..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/SimpleCallbackHandler.java.svn-base +++ /dev/null @@ -1,49 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ - -package com.fp.firma.keystore; - -/** - * - * @author subinfo - */ -import javax.security.auth.callback.*; - -/** - * This simple callback handler presents the given user name and password. - * @version 1.0 2004-09-14 - * @author Cay Horstmann - */ -public class SimpleCallbackHandler implements CallbackHandler -{ - /** - * Constructs the callback handler. - * @param username the user name - * @param password a character array containing the password - */ - public SimpleCallbackHandler(String username, char[] password) - { - this.username = username; - this.password = password; - } - - public void handle(Callback[] callbacks) - { - for (Callback callback : callbacks) - { - if (callback instanceof NameCallback) - { - ((NameCallback) callback).setName(username); - } - else if (callback instanceof PasswordCallback) - { - ((PasswordCallback) callback).setPassword(password); - } - } - } - - private String username; - private char[] password; -} diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider.java.svn-base deleted file mode 100644 index 344e2a8..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -/** Programa para La firma electrónica de archivos - * Desarrollado y Modificado por la Subsecretaría de Tecnologías de la Información - * de la Secretaría Nacional de la Administración Pública del Ecuador - * Firma Digital firmadigital.informatica.gob.ec - *------------------------------------------------------------------------------ - * This program is free software: you can redistribute it and/or -modify - * it under the terms of the GNU Affero General Public License as - * published by the Free Software Foundation, either version 3 of the - * License, or (at your option) any later version. - * This program is distributed in the hope that it will be useful, - * but WITHOUT ANY WARRANTY; without even the implied warranty of - * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the - * GNU Affero General Public License for more details. - * - * You should have received a copy of the GNU Affero General Public -License - * along with this program. If not, see http://www.gnu.org/licenses. [^] - *------------------------------------------------------------------------------ - **/ -package com.fp.firma.keystore; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.security.AuthProvider; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.Provider; -import java.security.ProviderException; -import java.security.Security; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.management.ReflectionException; -import javax.security.auth.login.LoginException; - -/** - * maneja el keystore de windows, no el CAPI, accede a travez de librerias, en esta se usa librerias para eTokenPro - **/ -public class WindowsJDK5KeyStoreProvider implements KeyStoreProvider { - - - //private static final byte[] PKCS11_CONFIG = "name = SmartCard\nlibrary = C:\\WINDOWS\\SYSTEM32\\DKCK201.DLL \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS }".getBytes(); - private static String windowsDir = "name = SmartCard\nlibrary = " + System.getenv("WINDIR") + "\\SYSTEM32\\eTPKCS11.DLL \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS } \n showInfo = true"; //showInfo = true - private static final byte[] PKCS11_CONFIG = windowsDir.getBytes(); - private static final String SUN_PKCS11_PROVIDER_CLASS = "sun.security.pkcs11.SunPKCS11"; - private AuthProvider aprov; - - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - System.out.println("Tiene PKCS11: " + PKCS11_CONFIG); - InputStream configStream = new ByteArrayInputStream(PKCS11_CONFIG); - - Provider sunPKCS11Provider = this.createSunPKCS11Provider(configStream); - Security.addProvider(sunPKCS11Provider); - - KeyStore.Builder ksBuilder = KeyStore.Builder.newInstance( - "PKCS11", - null, - new KeyStore.CallbackHandlerProtection(new SimpleCallbackHandler(null, password))); //cmdLineHdlr - - KeyStore ks = ksBuilder.getKeyStore(); - - aprov = (AuthProvider) Security.getProvider(sunPKCS11Provider.getName()); - aprov.setCallbackHandler(new SimpleCallbackHandler(null, password)); //cmdLineHdlr - - aprov.login(null, null); -// - - return ks; //keyStore -// - - } catch (LoginException ex) { - Logger.getLogger(WindowsJDK5KeyStoreProvider.class.getName()).log(Level.SEVERE, null, ex); - System.out.println("error en el loginExcep" + ex); - } catch (KeyStoreException e) { - System.out.println("e:" + e.getCause().toString().length()); - throw new KeyStoreException(e); - } -// catch (Exception e){ -// System.out.println("Error en el keystore:" + e.getCause().toString().length() ); -// throw new KeyStoreException( e.getMessage() ,e.getCause()); -// } - return null; - } - - /** - * logout - * Esta función permite limpiar de memoria el keystore. - * @throws javax.security.auth.login.LoginException - */ - public void logout() throws LoginException { - - this.aprov.logout(); - } - - /** - * Instancia la clase sun.security.pkcs11.SunPKCS11 - * dinamicamente, usando Java Reflection. - * - * @return una instancia de sun.security.pkcs11.SunPKCS11 - */ - @SuppressWarnings("unchecked") - private Provider createSunPKCS11Provider(InputStream configStream) throws ProviderException, KeyStoreException { - try { - Class sunPkcs11Class = Class.forName(SUN_PKCS11_PROVIDER_CLASS); - - Constructor pkcs11Constr = sunPkcs11Class.getConstructor(InputStream.class); - Provider pkcs11Provider = (Provider) pkcs11Constr.newInstance(configStream); - - return pkcs11Provider; - - } catch (ClassNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchMethodException e) { - throw new KeyStoreException(e); - } catch (InvocationTargetException e) { - - throw new KeyStoreException(e.getMessage(), e.getCause()); - } catch (IllegalAccessException e) { - throw new KeyStoreException(e); - } catch (InstantiationException e) { - throw new KeyStoreException(e); - } - } -} diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base deleted file mode 100644 index 6333abf..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_SD.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -/** Programa para La firma electrónica de archivos -* Desarrollado y Modificado por la Subsecretaría de Tecnologías de la Información -* de la Secretaría Nacional de la Administración Pública del Ecuador -* Firma Digital firmadigital.informatica.gob.ec -*------------------------------------------------------------------------------ -* This program is free software: you can redistribute it and/or -modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public -License -* along with this program. If not, see http://www.gnu.org/licenses. [^] -*------------------------------------------------------------------------------ -**/ -package com.fp.firma.keystore; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.security.AuthProvider; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.Provider; -import java.security.Security; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.security.auth.login.LoginException; - -/** - * Esta clase se usa para obtener el keystore (Con el se pueden obtener luego los certificados dentro del token) en Windows - */ -public class WindowsJDK5KeyStoreProvider_SD implements KeyStoreProvider { - - //private static final byte[] PKCS11_CONFIG = "name = SmartCard\nlibrary = C:\\WINDOWS\\SYSTEM32\\DKCK201.DLL \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS }".getBytes(); - // esta linea corrige el error de la ubicación de Windows - // para trabajar con iKey - private static final String windowsDir_SD = "name = ePass3003\nlibrary = C:\\WINDOWS\\SYSTEM32\\SecurityDataCsp11_3003.dll \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS } \n\r showInfo = true"; - private static final byte[] PKCS11_CONFIG_SD = windowsDir_SD.getBytes(); - private static final String SUN_PKCS11_PROVIDER_CLASS = "sun.security.pkcs11.SunPKCS11"; - private AuthProvider aprov; - - /** - * getKeystore - * Esta funcion se utiliza para obtener el keystore de java para manejar luego la clave privada y los certificados dentro del token - * @param password Se pasa la clave del token - * @return - * @throws java.security.KeyStoreException - */ - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - // empieza intentando con eToken - InputStream configStream = new ByteArrayInputStream(PKCS11_CONFIG_SD); - - Provider sunPKCS11Provider = this.createSunPKCS11Provider(configStream); - Security.addProvider(sunPKCS11Provider); - - - KeyStore.Builder ksBuilder = KeyStore.Builder.newInstance( - "PKCS11", - null, - new KeyStore.CallbackHandlerProtection(new SimpleCallbackHandler(null, password))); //cmdLineHdlr - - KeyStore ks = ksBuilder.getKeyStore(); - - // Estas lineas se añadieron para controlar mejor el logout del token - aprov = (AuthProvider) Security.getProvider(sunPKCS11Provider.getName()); - aprov.setCallbackHandler(new SimpleCallbackHandler(null, password)); //cmdLineHdlr - - try { - aprov.login(null, null); - } catch (LoginException ex) { - Logger.getLogger(WindowsJDK5KeyStoreProvider_SD.class.getName()).log(Level.SEVERE, null, ex); - throw new LoginException( /*ex*/); - } - - - - - return ks; //keyStore - } catch (LoginException ex) { - Logger.getLogger(WindowsJDK5KeyStoreProvider_SD.class.getName()).log(Level.SEVERE, null, ex); - System.out.println("error en el loginExcep" + ex); - } catch (KeyStoreException e) { - System.out.println("e:" + e.getCause().toString().length()); - throw new KeyStoreException(e); - } - -// } catch (Exception e){ -// System.out.println("Error en el keystore:" + e); -// throw new KeyStoreException(e); -// } - return null; - } - - /** - * logout - * Esta función permite limpiar de memoria el keystore. - * @throws javax.security.auth.login.LoginException - */ - public void logout() throws LoginException { - - this.aprov.logout(); - } - - /** - * Instancia la clase sun.security.pkcs11.SunPKCS11 - * dinamicamente, usando Java Reflection. - * - * @return una instancia de sun.security.pkcs11.SunPKCS11 - */ - @SuppressWarnings("unchecked") - private Provider createSunPKCS11Provider(InputStream configStream) throws KeyStoreException { - try { - Class sunPkcs11Class = Class.forName(SUN_PKCS11_PROVIDER_CLASS); - Constructor pkcs11Constr = sunPkcs11Class.getConstructor(InputStream.class); - Provider pkcs11Provider = (Provider) pkcs11Constr.newInstance(configStream); - - return pkcs11Provider; - } catch (ClassNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchMethodException e) { - throw new KeyStoreException(e); - } catch (InvocationTargetException e) { - throw new KeyStoreException(e); - } catch (IllegalAccessException e) { - throw new KeyStoreException(e); - } catch (InstantiationException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base deleted file mode 100644 index fcf686f..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK5KeyStoreProvider_iKey.java.svn-base +++ /dev/null @@ -1,144 +0,0 @@ -/** Programa para La firma electrónica de archivos -* Desarrollado y Modificado por la Subsecretaría de Tecnologías de la Información -* de la Secretaría Nacional de la Administración Pública del Ecuador -* Firma Digital firmadigital.informatica.gob.ec -*------------------------------------------------------------------------------ -* This program is free software: you can redistribute it and/or -modify -* it under the terms of the GNU Affero General Public License as -* published by the Free Software Foundation, either version 3 of the -* License, or (at your option) any later version. -* This program is distributed in the hope that it will be useful, -* but WITHOUT ANY WARRANTY; without even the implied warranty of -* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the -* GNU Affero General Public License for more details. -* -* You should have received a copy of the GNU Affero General Public -License -* along with this program. If not, see http://www.gnu.org/licenses. [^] -*------------------------------------------------------------------------------ -**/ - - -package com.fp.firma.keystore; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.lang.reflect.Constructor; -import java.lang.reflect.InvocationTargetException; -import java.security.AuthProvider; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.Provider; -import java.security.Security; -import java.util.logging.Level; -import java.util.logging.Logger; -import javax.security.auth.login.LoginException; - -/** - * Esta clase se usa para obtener el keystore (Con el se pueden obtener luego los certificados dentro del token iKEY) en Windows - */ -public class WindowsJDK5KeyStoreProvider_iKey implements KeyStoreProvider { - - - - //private static final byte[] PKCS11_CONFIG = "name = SmartCard\nlibrary = C:\\WINDOWS\\SYSTEM32\\DKCK201.DLL \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS }".getBytes(); - // esta linea corrige el error de la ubicación de Windows - // para trabajar con iKey - private static String windowsDir_iKey ="name = SmartCard\nlibrary = "+ System.getenv("WINDIR") + "\\SYSTEM32\\DKCK201.DLL \ndisabledMechanisms = { CKM_SHA1_RSA_PKCS } \n showInfo = true"; - private static final byte[] PKCS11_CONFIG_IKEY = windowsDir_iKey.getBytes(); - - - private static final String SUN_PKCS11_PROVIDER_CLASS = "sun.security.pkcs11.SunPKCS11"; - private AuthProvider aprov; - - /** - * getKeystore - * Esta funcion se utiliza para obtener el keystore de java para manejar luego la clave privada y los certificados dentro del token - * @param password Se pasa la clave del token - * @return - * @throws java.security.KeyStoreException - */ - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - // empieza intentando con eToken - InputStream configStream = new ByteArrayInputStream(PKCS11_CONFIG_IKEY); - - Provider sunPKCS11Provider = this.createSunPKCS11Provider(configStream); - Security.addProvider(sunPKCS11Provider); - - - KeyStore.Builder ksBuilder = KeyStore.Builder.newInstance( - "PKCS11", - null, - new KeyStore.CallbackHandlerProtection( new SimpleCallbackHandler(null,password ) )); //cmdLineHdlr - - KeyStore ks = ksBuilder.getKeyStore(); - - // Estas lineas se añadieron para controlar mejor el logout del token - aprov = (AuthProvider) Security.getProvider( sunPKCS11Provider.getName() ); - aprov.setCallbackHandler( new SimpleCallbackHandler(null,password ) ); //cmdLineHdlr - - try { - aprov.login(null, null); - } catch (LoginException ex) { - Logger.getLogger(WindowsJDK5KeyStoreProvider_iKey.class.getName()).log(Level.SEVERE, null, ex); - throw new LoginException( /*ex*/ ); - } - - - - - return ks; //keyStore - } - catch (LoginException ex) { - Logger.getLogger(WindowsJDK5KeyStoreProvider_iKey.class.getName()).log(Level.SEVERE, null, ex); - System.out.println("error en el loginExcep" + ex); - } catch (KeyStoreException e) { - System.out.println("e:"+ e.getCause().toString().length() ); - throw new KeyStoreException(e); - } - -// } catch (Exception e){ -// System.out.println("Error en el keystore:" + e); -// throw new KeyStoreException(e); -// } - return null; - } - /** - * logout - * Esta función permite limpiar de memoria el keystore. - * @throws javax.security.auth.login.LoginException - */ - public void logout() throws LoginException{ - - this.aprov.logout(); - } - /** - * Instancia la clase sun.security.pkcs11.SunPKCS11 - * dinamicamente, usando Java Reflection. - * - * @return una instancia de sun.security.pkcs11.SunPKCS11 - */ - @SuppressWarnings("unchecked") - private Provider createSunPKCS11Provider(InputStream configStream) throws KeyStoreException { - try { - Class sunPkcs11Class = Class.forName(SUN_PKCS11_PROVIDER_CLASS); - Constructor pkcs11Constr = sunPkcs11Class.getConstructor(InputStream.class); - Provider pkcs11Provider = (Provider) pkcs11Constr.newInstance(configStream); - - return pkcs11Provider; - } catch (ClassNotFoundException e) { - throw new KeyStoreException(e); - } catch (NoSuchMethodException e) { - throw new KeyStoreException(e); - } catch (InvocationTargetException e) { - throw new KeyStoreException(e); - } catch (IllegalAccessException e) { - throw new KeyStoreException(e); - } catch (InstantiationException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK6KeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK6KeyStoreProvider.java.svn-base deleted file mode 100644 index 5dfb66f..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsJDK6KeyStoreProvider.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.IOException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.UnrecoverableKeyException; -import java.security.cert.CertificateException; - -import com.fp.firma.common.FirmasException; - -/** - * Implementación de KeyStoreProvider para acceder al keystore del sistema operativo - * Microsoft Windows. - * - * Utiliza funcionalidad disponible desde el JDK6 en adelante para acceder al MS CAPI. - * - */ -public class WindowsJDK6KeyStoreProvider implements KeyStoreProvider { - - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - KeyStore keyStore = KeyStore.getInstance("Windows-MY"); - keyStore.load(null, password); - return keyStore; - } catch (NoSuchAlgorithmException e) { - throw new KeyStoreException(e); - } catch (CertificateException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - if(e.getCause() instanceof UnrecoverableKeyException){ - throw new FirmasException(e); - } else{ - throw new KeyStoreException(e); - } - } catch (Throwable e) { - if ((e instanceof UnrecoverableKeyException)) { - throw new FirmasException(e); - } else{ - throw new KeyStoreException(e); - } - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsKeyStoreProvider.java.svn-base b/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsKeyStoreProvider.java.svn-base deleted file mode 100644 index a704f9f..0000000 --- a/appletFirma/src/main/java/com/fp/firma/keystore/.svn/text-base/WindowsKeyStoreProvider.java.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -/* - * Copyright (C) 2009 Libreria para Firma Digital development team. - * - * This library is free software; you can redistribute it and/or - * modify it under the terms of the GNU Lesser General Public - * License as published by the Free Software Foundation; either - * version 2.1 of the License, or (at your option) any later version. - */ - -package com.fp.firma.keystore; - -import java.io.IOException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.CertificateException; - -/** - * Implementacion de KeyStoreProvider para acceder al keystore del sistema operativo - * Microsoft Windows. - * - * Utiliza funcionalidad disponible desde el JDK6 en adelante para acceder al MS CAPI. - * - */ -public class WindowsKeyStoreProvider implements KeyStoreProvider { - - private static final String MICROSOFT_WINDOWS_PROVIDER_TYPE = "Windows-MY"; - - @Override - public KeyStore getKeystore(char[] password) throws KeyStoreException { - try { - KeyStore keyStore = KeyStore.getInstance(MICROSOFT_WINDOWS_PROVIDER_TYPE); - keyStore.load(null, password); - return keyStore; - } catch (NoSuchAlgorithmException e) { - throw new KeyStoreException(e); - } catch (CertificateException e) { - throw new KeyStoreException(e); - } catch (IOException e) { - throw new KeyStoreException(e); - } - } -} \ No newline at end of file diff --git a/appletFirma/src/main/resources/.svn/entries b/appletFirma/src/main/resources/.svn/entries deleted file mode 100644 index 3aaa452..0000000 --- a/appletFirma/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firmessages_es.properties -file - - - - -2022-07-28T03:40:24.020722Z -3474bb130f9466563b3dd13b5fbb1efb -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -2185 - diff --git a/appletFirma/src/main/resources/.svn/prop-base/firmessages_es.properties.svn-base b/appletFirma/src/main/resources/.svn/prop-base/firmessages_es.properties.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/main/resources/.svn/prop-base/firmessages_es.properties.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base b/appletFirma/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base deleted file mode 100644 index 2882ef5..0000000 --- a/appletFirma/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#======================================================================================== -#=======CODIGO EXCEPCIONES=============================================================== -#======================================================================================== -FIR-0001=ERROR AL ESTABLECER CONEXI\u00D3N AL SERVICIO\: {0} -FIR-0002=ERROR, CERTIFICADO REVOCADO POR {0} CON FECHA {1} -FIR-0005=ERROR, ES OBLIGATORIO CARGAR UN ARCHIVO -FIR-0006=ERROR, LA CONTRASE\u00d1A INGRESADA ES INCORRECTA -FIR-0007=ERROR, EL CAMPO PASSWORD ES OBLIGATORIO -#======================================================================================== -#=======OIDs GENERALES DE IDENTIFICACION DEL USUARIO EN EL CERTIFICADO=================== -#======================================================================================== -oid.cedula_pasaporte=1.3.6.1.4.1.37947.3.1 -oid.nombres_persona=1.3.6.1.4.1.37947.3.2 -oid.apellido_persona1=1.3.6.1.4.1.37947.3.3 -oid.apellido_persona2=1.3.6.1.4.1.37947.3.4 -oid.cargo=1.3.6.1.4.1.37947.3.5 -oid.institucion=1.3.6.1.4.1.37947.3.6 -oid.direccion=1.3.6.1.4.1.37947.3.7 -oid.telefono=1.3.6.1.4.1.37947.3.8 -oid.ciudad=1.3.6.1.4.1.37947.3.9 -oid.razon_social=1.3.6.1.4.1.37947.3.10 -oid.ruc=1.3.6.1.4.1.37947.3.11 -#======================================================================================== -#=======RUTAS DE LOS DIRECTORIOS DEL REPOSITORIO DE CERTIFICADOS========================= -#======================================================================================== -dir.ruta.base.repositorio=/media/store/maia/jboss-eap-6.0/digital_repository -dir.nombre.carpeta.usuarios=users -nombre.certificado.raiz=CARAIZ.cer -nombre.certificado.subordinado=CASUBORDINADO.cer -service.url.address.ocsp=http://ocsp.digsigtrust.com:80 -#service.url.address.ocsp=http://ocsp.openvalidation.org:80 \ No newline at end of file diff --git a/appletFirma/src/test/.svn/entries b/appletFirma/src/test/.svn/entries deleted file mode 100644 index 5675703..0000000 --- a/appletFirma/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/appletFirma/src/test/java/.svn/entries b/appletFirma/src/test/java/.svn/entries deleted file mode 100644 index 13a7e41..0000000 --- a/appletFirma/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test/java -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/appletFirma/src/test/java/com/.svn/entries b/appletFirma/src/test/java/com/.svn/entries deleted file mode 100644 index 1e1d802..0000000 --- a/appletFirma/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/appletFirma/src/test/java/com/fp/.svn/entries b/appletFirma/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 0111b38..0000000 --- a/appletFirma/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firma -dir - diff --git a/appletFirma/src/test/java/com/fp/firma/.svn/entries b/appletFirma/src/test/java/com/fp/firma/.svn/entries deleted file mode 100644 index 44cdf31..0000000 --- a/appletFirma/src/test/java/com/fp/firma/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test/java/com/fp/firma -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -applet -dir - diff --git a/appletFirma/src/test/java/com/fp/firma/applet/.svn/entries b/appletFirma/src/test/java/com/fp/firma/applet/.svn/entries deleted file mode 100644 index 95f9e75..0000000 --- a/appletFirma/src/test/java/com/fp/firma/applet/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/appletFirma/src/test/java/com/fp/firma/applet -svn://172.17.26.185/COMACO - - - -2014-12-31T05:22:02.287651Z -3703 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AppTest.java -file - - - - -2022-07-28T03:40:23.474720Z -344982b9ae13a54e1ca56bbb62751f55 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -647 - -PruebaFirma.java -file - - - - -2022-07-28T03:40:23.474720Z -16809319f5505f378ce18fb335a59914 -2014-12-31T05:22:02.287651Z -3703 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -1324 - diff --git a/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/AppTest.java.svn-base b/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/AppTest.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/AppTest.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/PruebaFirma.java.svn-base b/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/PruebaFirma.java.svn-base deleted file mode 100644 index 085986a..0000000 --- a/appletFirma/src/test/java/com/fp/firma/applet/.svn/prop-base/PruebaFirma.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -K 14 -svn:executable -V 1 -* -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/AppTest.java.svn-base b/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/AppTest.java.svn-base deleted file mode 100644 index 413c140..0000000 --- a/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/AppTest.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.firma.applet; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/PruebaFirma.java.svn-base b/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/PruebaFirma.java.svn-base deleted file mode 100644 index 8948a9d..0000000 --- a/appletFirma/src/test/java/com/fp/firma/applet/.svn/text-base/PruebaFirma.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.firma.applet; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.FileOutputStream; -import java.io.InputStream; - -import com.fp.firma.common.CertificateUtils; -import com.itextpdf.text.Rectangle; - -/** - * - * @author dcruz - */ -public class PruebaFirma { - -// @Test - public static void main(String[] args){ - try { - InputStream is = new FileInputStream("C:\\Users\\abenalcazar\\dwhelper\\Downloads\\Tutorial_de_Maven_3_Erick_Camacho.pdf"); - String password = "Password#1"; - byte[] array = CertificateUtils.sign(is, null, password, "Firmado digitalmente", "Por firmar", Boolean.FALSE, Boolean.FALSE, new Rectangle(50, 50, 200, 200), 1, "Firma 2", "2"); - is.close(); - System.out.println("Tam array "+ array != null ? array.length:0); - FileOutputStream os = new FileOutputStream("C:\\Users\\abenalcazar\\dwhelper\\Downloads\\Tutorial_de_Maven_3_Erick_Camacho.pdf"); - os.write(array); - os.flush(); - os.close(); - } catch (FileNotFoundException e) { - e.printStackTrace(); - } catch (Throwable e){ - e.printStackTrace(); - } - } -} diff --git a/appletFirma/target/classes/.netbeans_automatic_build b/appletFirma/target/classes/.netbeans_automatic_build deleted file mode 100644 index e69de29..0000000 diff --git a/appletFirma/target/test-classes/.netbeans_automatic_build b/appletFirma/target/test-classes/.netbeans_automatic_build deleted file mode 100644 index e69de29..0000000 diff --git a/base/.svn/entries b/base/.svn/entries deleted file mode 100644 index a51fa9e..0000000 --- a/base/.svn/entries +++ /dev/null @@ -1,86 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -facadeclient -dir - -facade -dir - -persistence -dir - -dto -dir - -core -dir - -pom.xml -file - - - - -2022-07-28T03:40:46.966821Z -c232a48b461cc67137386d7589ab9a3e -2014-09-11T06:04:01.437037Z -655 -jvaca - - - - - - - - - - - - - - - - - - - - - -2675 - -business -dir - -sessionbeans -dir - -bpm -dir - diff --git a/base/.svn/text-base/pom.xml.svn-base b/base/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index b8baae0..0000000 --- a/base/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,82 +0,0 @@ - - - - FlipBean - com.fp - 2.1 - - 4.0.0 - com.fp - base - Base - 2.1 - pom - - 6.1.0.Final - 6.1.0.Final - ISO-8859-1 - - - dto - bpm - persistence - core - business - facadeclient - facade - sessionbeans - - - - - - - - org.drools - drools-bom - pom - ${drools.version} - import - - - - - org.jbpm - jbpm-bom - pom - ${jbpm.version} - import - - - - - org.apache.poi - poi - 3.5-FINAL - jar - provided - - - org.apache.poi - poi-ooxml-schemas - 3.6 - jar - provided - - - org.apache.poi - poi-ooxml - 3.5-FINAL - jar - provided - - - org.apache.poi - ooxml-schemas - 1.0 - jar - provided - - - - diff --git a/base/bpm/.svn/entries b/base/bpm/.svn/entries deleted file mode 100644 index c195e79..0000000 --- a/base/bpm/.svn/entries +++ /dev/null @@ -1,71 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bpmlib -dir - -simple -dir - -flows -dir - -pom.xml -file - - - - -2022-07-28T03:40:46.961821Z -4ba706af7eab765adb2a4e82b23f5687 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -714 - diff --git a/base/bpm/.svn/text-base/pom.xml.svn-base b/base/bpm/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 2537b32..0000000 --- a/base/bpm/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,22 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - bpm - bpm-jbpm - 2.1 - pom - BPM - - bpmlib - simple - - diff --git a/base/bpm/bpmlib/.svn/dir-prop-base b/base/bpm/bpmlib/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/bpm/bpmlib/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/bpm/bpmlib/.svn/entries b/base/bpm/bpmlib/.svn/entries deleted file mode 100644 index dde369d..0000000 --- a/base/bpm/bpmlib/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:46.310818Z -b77a781c02f2ae6238c01d704b9fbfb4 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -3609 - diff --git a/base/bpm/bpmlib/.svn/text-base/pom.xml.netbeans-base b/base/bpm/bpmlib/.svn/text-base/pom.xml.netbeans-base deleted file mode 100644 index 7483e5f..0000000 --- a/base/bpm/bpmlib/.svn/text-base/pom.xml.netbeans-base +++ /dev/null @@ -1,121 +0,0 @@ - - - - bpm - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.bpm - bpmlib - fp Platform - BPMLib - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - com.fp.base.dto - dto - ${project.version} - compile - - - com.fp.base.dto - common - ${project.version} - compile - - - com.fp.base.persistence - pbpm - ${project.version} - compile - - - com.fp.base.persistence - pgeneral - ${project.version} - compile - - - com.fp.base.persistence - util - ${project.version} - compile - - - com.fp.base.bpm - simple - ${project.version} - - - com.fp.base.core - bpm - ${project.version} - - - org.hibernate - hibernate-entitymanager - - - - - org.jbpm - jbpm-flow - provided - - - org.jbpm - jbpm-flow-builder - provided - - - org.jbpm - jbpm-bpmn2 - provided - - - org.jbpm - jbpm-persistence-jpa - provided - - - org.jbpm - jbpm-human-task-core - provided - - - org.jbpm - jbpm-runtime-manager - provided - - - - org.kie - kie-api - provided - - - org.drools - drools-decisiontables - provided - - - org.jbpm - jbpm-kie-services - provided - - - - org.jboss.netty - netty - - - - - - - diff --git a/base/bpm/bpmlib/.svn/text-base/pom.xml.svn-base b/base/bpm/bpmlib/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 7483e5f..0000000 --- a/base/bpm/bpmlib/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,121 +0,0 @@ - - - - bpm - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.bpm - bpmlib - fp Platform - BPMLib - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - com.fp.base.dto - dto - ${project.version} - compile - - - com.fp.base.dto - common - ${project.version} - compile - - - com.fp.base.persistence - pbpm - ${project.version} - compile - - - com.fp.base.persistence - pgeneral - ${project.version} - compile - - - com.fp.base.persistence - util - ${project.version} - compile - - - com.fp.base.bpm - simple - ${project.version} - - - com.fp.base.core - bpm - ${project.version} - - - org.hibernate - hibernate-entitymanager - - - - - org.jbpm - jbpm-flow - provided - - - org.jbpm - jbpm-flow-builder - provided - - - org.jbpm - jbpm-bpmn2 - provided - - - org.jbpm - jbpm-persistence-jpa - provided - - - org.jbpm - jbpm-human-task-core - provided - - - org.jbpm - jbpm-runtime-manager - provided - - - - org.kie - kie-api - provided - - - org.drools - drools-decisiontables - provided - - - org.jbpm - jbpm-kie-services - provided - - - - org.jboss.netty - netty - - - - - - - diff --git a/base/bpm/bpmlib/src/.svn/entries b/base/bpm/bpmlib/src/.svn/entries deleted file mode 100644 index 8415b0c..0000000 --- a/base/bpm/bpmlib/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/bpm/bpmlib/src/main/.svn/entries b/base/bpm/bpmlib/src/main/.svn/entries deleted file mode 100644 index 8ad2f32..0000000 --- a/base/bpm/bpmlib/src/main/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -config -dir - -resources -dir - diff --git a/base/bpm/bpmlib/src/main/config/.svn/entries b/base/bpm/bpmlib/src/main/config/.svn/entries deleted file mode 100644 index 08a7e20..0000000 --- a/base/bpm/bpmlib/src/main/config/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/config -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -jbpm-ds.xml -file - - - - -2022-07-28T03:40:46.021817Z -5f160b7b0a250b4b599c12e7ca877dbe -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1258 - -jbpm-mysql-ds.xml -file - - - - -2022-07-28T03:40:46.021817Z -744ffdbece303ec631e545dad9807a29 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2311 - -jbpm-oracle-ds.xml -file - - - - -2022-07-28T03:40:46.021817Z -d3b034ac33bcf0281efb4f60c7167e12 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1304 - diff --git a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-ds.xml.svn-base b/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-ds.xml.svn-base deleted file mode 100644 index 1890541..0000000 --- a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-ds.xml.svn-base +++ /dev/null @@ -1,33 +0,0 @@ - - - - jdbc/JBPM - false - jdbc:mysql://localhost:3306/jbpm - com.mysql.jdbc.Driver - root - - 5 - 20 - 80 - 0 - - MySql - - - - jdbc/TASKS - false - jdbc:mysql://localhost:3306/jbpm - com.mysql.jdbc.Driver - root - - 5 - 20 - 80 - 0 - - MySql - - - diff --git a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-mysql-ds.xml.svn-base b/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-mysql-ds.xml.svn-base deleted file mode 100644 index be62980..0000000 --- a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-mysql-ds.xml.svn-base +++ /dev/null @@ -1,49 +0,0 @@ - - - - - jdbc/JBPM - jdbc:mysql://localhost:3306/jbpm?autoReconnect=true&autoReconnectForPools=true - com.mysql.jdbc.jdbc2.optional.MysqlXADataSource - root - - org.jboss.resource.adapter.jdbc.vendor.MySQLExceptionSorter - org.jboss.resource.adapter.jdbc.vendor.MySQLValidConnectionChecker - 50 - 200 - 10 - - mySQL - - - - jdbc/TASKS - false - jdbc:mysql://localhost:3306/jbpm?autoReconnect=true&autoReconnectForPools=true - com.mysql.jdbc.Driver - root - - 50 - 200 - 80 - 0 - - MySql - - - diff --git a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-oracle-ds.xml.svn-base b/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-oracle-ds.xml.svn-base deleted file mode 100644 index de02e6b..0000000 --- a/base/bpm/bpmlib/src/main/config/.svn/text-base/jbpm-oracle-ds.xml.svn-base +++ /dev/null @@ -1,33 +0,0 @@ - - - - jdbc/JBPM - false - jdbc:oracle:thin:@192.168.2.201:1521:maia - oracle.jdbc.driver.OracleDriver - jbpm5 - jbpm5 - 5 - 20 - 80 - 0 - - Oracle - - - - jdbc/TASKS - false - jdbc:oracle:thin:@192.168.2.201:1521:maia - oracle.jdbc.driver.OracleDriver - jbpm5 - jbpm5 - 5 - 20 - 80 - 0 - - Oracle - - - diff --git a/base/bpm/bpmlib/src/main/java/.svn/entries b/base/bpm/bpmlib/src/main/java/.svn/entries deleted file mode 100644 index 7698b44..0000000 --- a/base/bpm/bpmlib/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/bpm/bpmlib/src/main/java/com/.svn/entries b/base/bpm/bpmlib/src/main/java/com/.svn/entries deleted file mode 100644 index 6bd7efe..0000000 --- a/base/bpm/bpmlib/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 99f25af..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bpmlib -dir - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/entries deleted file mode 100644 index d2e9c56..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/entries +++ /dev/null @@ -1,262 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -metadata -dir - -mail -dir - -transaction -dir - -db -dir - -RegisterFlow.java -file - - - - -2022-07-28T03:40:45.983817Z -e594d7732885e47395fdf9493697fdaf -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1607 - -ProcessUtil.java -file - - - - -2022-07-28T03:40:45.983817Z -84995a2be386c1530f5989305d3fcaaf -2015-08-05T10:41:30.517767Z -4258 -cpiedra - - - - - - - - - - - - - - - - - - - - - -8949 - -Flujo.java -file - - - - -2022-07-28T03:40:45.983817Z -200a41c049d9ffe84522bc5c199dfd34 -2014-12-16T10:20:52.870795Z -3535 -gbenavides - - - - - - - - - - - - - - - - - - - - - -4829 - -ejb -dir - -task -dir - -package-info.java -file - - - - -2022-07-28T03:40:45.984817Z -f48f5318cf41acb2aae161b000af3cf3 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -83 - -query -dir - -CustomSystemEventListener.java -file - - - - -2022-07-28T03:40:45.984817Z -e4c80e2dbef16d1ad1e188d1edbeaaa0 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2563 - -messages -dir - -flow -dir - -Common.java -file - - - - -2022-07-28T03:40:45.984817Z -f09b36d41faf47cdfdb440498aa7d5fe -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -972 - -report -dir - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Common.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Common.java.svn-base deleted file mode 100644 index 566b1ff..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Common.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - */ -package com.fp.bpmlib; - -import java.util.Date; - -// TODO: Auto-generated Javadoc -/** - * Class Common encargada de. - * - * @author gfiallos - */ -public final class Common { - - /** El valor de instance. */ - private static Common instance = null; - - /** - * Obtiene la única instancia de Common. - * - * @return única instancia de Common - */ - public static Common getInstance() { - synchronized (Common.class) { - if (Common.instance == null) { - Common.instance = new Common(); - } - return Common.instance; - } - } - - /** - * Crea una nueva instancia de common. - */ - private Common() { - } - - /** - * Obtiene el valor de current date. - * - * @return Valor de current date - * @throws Exception la exception - */ - public Date getCurrentDate() throws Exception { - return new Date(); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/CustomSystemEventListener.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/CustomSystemEventListener.java.svn-base deleted file mode 100644 index 820ae64..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/CustomSystemEventListener.java.svn-base +++ /dev/null @@ -1,115 +0,0 @@ -/* - * - */ -package com.fp.bpmlib; - -import org.apache.log4j.Logger; - -// TODO: Auto-generated Javadoc - -/** - * The listener interface for receiving customSystemEvent events. The class that is interested in processing a - * customSystemEvent event implements this interface, and the object created with that class is registered with a - * component using the component's addCustomSystemEventListener method. When - * the customSystemEvent event occurs, that object's appropriate - * method is invoked. - * - */ -public class CustomSystemEventListener implements org.kie.internal.SystemEventListener { - - /** Constante LOG. */ - private static final Logger LOG = Logger.getLogger(CustomSystemEventListener.class); - - /** - * Debug. - * - * @param message the message - */ - @Override - public void debug(String message) { - CustomSystemEventListener.LOG.debug(message); - - } - - /** - * Debug. - * - * @param message the message - * @param object the object - */ - @Override - public void debug(String message, Object object) { - CustomSystemEventListener.LOG.debug(message + " " + object); - - } - - /** - * Exception. - * - * @param message the message - * @param e the e - */ - @Override - public void exception(String message, Throwable e) { - CustomSystemEventListener.LOG.error(message, e); - - } - - /** - * Exception. - * - * @param e the e - */ - @Override - public void exception(Throwable e) { - CustomSystemEventListener.LOG.error(e, e); - - } - - /** - * Info. - * - * @param message the message - */ - @Override - public void info(String message) { - CustomSystemEventListener.LOG.info(message); - - } - - /** - * Info. - * - * @param message the message - * @param object the object - */ - @Override - public void info(String message, Object object) { - CustomSystemEventListener.LOG.info(message + " " + object); - - } - - /** - * Warning. - * - * @param message the message - */ - @Override - public void warning(String message) { - CustomSystemEventListener.LOG.warn(message); - - } - - /** - * Warning. - * - * @param message the message - * @param object the object - */ - @Override - public void warning(String message, Object object) { - CustomSystemEventListener.LOG.warn(message + " " + object); - - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Flujo.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Flujo.java.svn-base deleted file mode 100644 index 9bec368..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/Flujo.java.svn-base +++ /dev/null @@ -1,137 +0,0 @@ -package com.fp.bpmlib; - -import java.util.HashMap; -import java.util.LinkedHashMap; -import java.util.Map; - -import javax.naming.InitialContext; - -import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener; -import org.jbpm.services.task.lifecycle.listeners.BAMTaskEventListener; -import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener; -import org.kie.api.runtime.KieSession; -import org.kie.api.runtime.manager.RuntimeEngine; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.runtime.process.ProcessInstance; -import org.kie.api.task.TaskService; -import org.kie.internal.task.api.EventService; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.task.MaiaWorkItemHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.save.SaveRequest; -import com.fp.simple.flow.DataMap; - -/** - * Class encargada del inicio de un flujo de trabajo. - * - * @author jvaca - * @version 2.1 - */ -public class Flujo { - - private KieSession kiesession; - private ProcessInstance processInstance = null; - private TaskService taskService; - /** - * Crea una instancia de flujo. - */ - public Flujo() throws Exception{ - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - RuntimeManager manager = local.getRuntimeManager(); - RuntimeEngine runtime = manager.getRuntimeEngine(null); - taskService = runtime.getTaskService(); - kiesession = runtime.getKieSession(); - kiesession.addEventListener(new TriggerRulesEventListener(kiesession)); - kiesession.getWorkItemManager().registerWorkItemHandler("Human Task", new MaiaWorkItemHandler()); - this.addListeners(runtime); - } - - /** - * Crea una instancia de flujo y obtiene una instancia del proceso. - * @param processid Id de una instancia de proceso. - * @throws Exception - */ - public Flujo(Long processid) throws Exception { - this(); - processInstance = kiesession.getProcessInstance(processid); - } - - /** - * Adiciona listener, para el manejo del bam de tareas. - * @param engine - */ - @SuppressWarnings("unchecked") - private void addListeners(RuntimeEngine engine) { - EventService eventService = (EventService) engine.getTaskService(); - boolean hasBamEventListener = false; - for (TaskLifeCycleEventListener listener : eventService.getTaskEventListeners()) { - if (listener instanceof BAMTaskEventListener) { - hasBamEventListener = true; - break; - } - } - if (!hasBamEventListener) { - BAMTaskEventListener bamTaskEventListener = new BAMTaskEventListener(); - eventService.registerTaskEventListener(bamTaskEventListener); - } - } - - /** - * Inicia la ejecucion de un flujo de trabajo. - * @param flujo Id del flujo se toma del archivo.jbpm - * @param parametros Parametros con los que inicia la ejeccion de un flujo. - * @throws Exception - */ - public Long iniciar(String idproceso, Request request) throws Exception { - APPLogger.getLogger().info("Prepara Flujo"); - //Se crea un nuevo request para grabar en el bpm la minima informacion. - SaveRequest sr = new SaveRequest(); - sr.setJsf(true); - request.copy(sr); - request.copyMapValuesWithOutSaveBean(sr); - sr.mbeans.clear(); - sr.remove("MSAVE"); - sr.remove("MQUERY"); - sr.remove("lOrderPersistentBeans"); - sr.setResponse(null); - - - Map m = new HashMap(); - m.put(ProcessUtil.TASKS_METADATA, new LinkedHashMap()); - Map data = new DataMap(); - // Map data = new HashMap<>(); - if ((sr.getSubject() == null) || (sr.getSubject().compareTo("") == 0)) { - sr.setSubject(MessageManager.getMessage(request)); - } - data.put(ProcessUtil.REQUEST, sr); - m.put(ProcessUtil.DATA, data); - - processInstance = kiesession.startProcess(idproceso, m); - - APPLogger.getLogger().info("Flujo preparado"); - - return processInstance.getId(); - } - - /** - * Cierra la session de trabajo. - */ - public void close() { - // no cerrar la session, esta se cierra en el commit trabaja con JTA. - } - - public KieSession getKiesession() { - return kiesession; - } - - public ProcessInstance getProcessInstance() { - return processInstance; - } - - - - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/ProcessUtil.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/ProcessUtil.java.svn-base deleted file mode 100644 index b6a7919..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/ProcessUtil.java.svn-base +++ /dev/null @@ -1,252 +0,0 @@ -/* - * - */ -package com.fp.bpmlib; - -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl; -import org.kie.api.task.model.Task; -import org.kie.api.task.model.TaskData; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.db.DataHelper; -import com.fp.bpmlib.flow.Monitor; -import com.fp.dto.Request; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; -import com.fp.simple.dto.TaskInfo; - -// TODO: Auto-generated Javadoc -/** - * Class ProcessUtil encargada de. - * - * @author gfiallos - */ -public final class ProcessUtil { - - /** Constante ACTUAL_TASK. */ - public static final String ACTUAL_TASK = "actualTask"; - - /** Constante DATA. */ - public static final String DATA = "maia"; - - /** El valor de instance. */ - private static ProcessUtil instance = null; - - /** Constante PID. */ - public static final String PID = "pid"; - - /** Constante REQUEST. */ - public static final String REQUEST = "request"; - - /** Constante SNAPSHOT. */ - public static final String SNAPSHOT = "snapshot"; - - /** Constante TASK_METADATA. */ - public static final String TASK_METADATA = "taskMetaData"; - - /** Constante TASKS_METADATA. */ - public static final String TASKS_METADATA = "tasksMetaData"; - - /** - * Obtiene el valor de done task meta data. - * - * @param pProcess the process - * @param pName the name - * @return Valor de done task meta data - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public static Object getDoneTaskMetaData(Monitor monitor, String pName) throws Exception { - Object tasks = monitor.getVariable(ProcessUtil.TASKS_METADATA); - if (tasks != null) { - Map m = (Map) tasks; - Map record = new HashMap(); - record.put(pName, ProcessUtil.manageHistory(monitor,(List) m.get(pName))); - return record; - } - return null; - } - - /** - * Obtiene el valor de first done task meta data. - * - * @param pProcess the process - * @return Valor de first done task meta data - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public static Map getFirstDoneTaskMetaData(Monitor monitor) throws Exception { - Object tasks = monitor.getVariable(ProcessUtil.TASKS_METADATA); - if (tasks != null) { - Map m = (Map) tasks; - for (Entry entry : m.entrySet()) { - Map record = new HashMap(); - record.put(entry.getKey(), ProcessUtil.getDoneTaskMetaData(monitor, entry.getKey())); - return record; - } - } - return null; - } - - /** - * Obtiene la única instancia de ProcessUtil. - * - * @return única instancia de ProcessUtil - */ - public static ProcessUtil getInstance() { - synchronized (ProcessUtil.class) { - if (ProcessUtil.instance == null) { - ProcessUtil.instance = new ProcessUtil(); - } - return ProcessUtil.instance; - } - } - - /** - * Manage history. - * - * @param pHistory the history - * @return list - * @throws Exception la exception - */ - protected static List manageHistory(Monitor monitor,List pHistory) throws Exception { - if (pHistory == null) { - return null; - } - for (TaskInfo taskInfo : pHistory) { - Object tid = taskInfo.getTaskId(); - if (tid == null) { - tid = taskInfo.getTaskId(); - } - if (tid != null) { - ProcessUtil.manageTaskId(monitor, taskInfo, Long.valueOf("" + tid)); - } - } - return pHistory; - } - - /** - * Manage task id. - * - * @param pTask the task - * @param pTID the tID - * @throws Exception la exception - */ - private static void manageTaskId(Monitor monitor,TaskInfo pTask, Long pTID) throws Exception { - pTask.setTaskId(pTID); - Map aditionalData = pTask.getAditionalData(); - - Task t = monitor.getTaskService().getTaskById(pTID); - BAMTaskSummaryImpl bam = monitor.getBAMTaskSummaryImpl(pTID); - pTask.setCreated(new Timestamp(t.getTaskData().getCreatedOn().getTime()) ); - pTask.setStarted(new Timestamp(bam.getStartDate().getTime()) ); - pTask.setCompleted(new Timestamp(bam.getEndDate().getTime())); - TaskData td = t.getTaskData(); - aditionalData.put("status", td.getStatus().name()); - aditionalData.put("userId", td.getActualOwner().getId()); - aditionalData.put("name", GeneralDescriptions.getUsername(td.getActualOwner().getId())); - - } - - /** - * Crea una nueva instancia de process util. - */ - private ProcessUtil() { - } - - - /** - * Prepare record. - * - * @param pName the name - * @param pValue the value - * @param pRequest the request - * @param label the label - * @return map - * @throws Exception la exception - */ - public Map prepareRecord(String pName, Object pValue, Request pRequest, boolean label) throws Exception { - Map m = new HashMap(); - if (label) { - m.put("NAME", GeneralDescriptions.getLabel(pName, pRequest.getLanguage(), pRequest.getChannelCode())); - } else { - m.put("NAME", pName); - } - m.put("VALUE", pValue); - m.put("CODE", pName); - return m; - } - - /** - * Prepare record. - * - * @param pName the name - * @param pValue the value - * @param pRequest the request - * @return map - * @throws Exception la exception - */ - public Map prepareRecord(String pName, Object pValue, Request pRequest) throws Exception { - return this.prepareRecord(pName, pValue, pRequest, true); - } - - - - /** - * Transaction data. - * - * @param pJournalId the journal id - * @param pRequest the request - * @param label the label - * @return list - * @throws Exception la exception - */ - public List> transactionData(String pJournalId, Request pRequest, boolean label) throws Exception { - TgeneTransactionLog log = TgeneTransactionLog.find(PersistenceHelper.getEntityManager(), pJournalId); - List> data = new ArrayList>(); - SimpleDateFormat sdf = DataHelper.getInstance().getDateTimeFormat(pRequest.getCompany()); - - if(log!=null){ - - - data.add(this.prepareRecord("creationdate", sdf.format(log.getRealdate()), pRequest, label)); - data.add(this.prepareRecord("user", log.getUsercode(), pRequest, label)); - data.add(this.prepareRecord("name", GeneralDescriptions.getOfficername(log.getUsercode()), pRequest, label)); - data.add(this.prepareRecord("email", GeneralDescriptions.getEmailByUser(log.getUsercode()), pRequest, label)); - data.add(this.prepareRecord("branch", - log.getBranchcode() + " " + GeneralDescriptions.getBranchdesc(log.getBranchcode(), pRequest.getCompany()), pRequest, label)); - data.add(this.prepareRecord("office", - log.getOfficecode() + " " + GeneralDescriptions.getOfficedesc(log.getOfficecode(), log.getBranchcode(), pRequest.getCompany()), - pRequest, label)); - - data.add(this.prepareRecord("transaction", log.getTransactionmodule() + "-" + log.getTransactioncode() + "-" + log.getTransactionversion() - + " " + GeneralDescriptions.getTransactiondesc(log.getTransactionmodule(), log.getTransactioncode(), log.getTransactionversion()), - pRequest, label)); - if (log.getAditionaldata() != null) { - data.add(this.prepareRecord("message", log.getAditionaldata(), pRequest, label)); - } - - } - return data; - } - - /** - * Transaction data. - * - * @param pJournalId the journal id - * @param pRequest the request - * @return list - * @throws Exception la exception - */ - public List> transactionData(String pJournalId, Request pRequest) throws Exception { - return this.transactionData(pJournalId, pRequest, true); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/RegisterFlow.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/RegisterFlow.java.svn-base deleted file mode 100644 index 36f2234..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/RegisterFlow.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ -/* - * - */ -package com.fp.bpmlib; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmProcessInstance; - - -/** - * Class RegisterFlow encargada de. - * - * @author jvaca - * @version 2.1 - */ -public class RegisterFlow { - - - /** El valor de process. */ - private Flujo flujo; - - /** El valor de request. */ - private SaveRequest request; - - - /** - * Crea una nueva instancia de register flow. - * - * @param pProcess the process - * @param pRequest the request - * @param pCompany the company - * @throws Exception la exception - */ - public RegisterFlow(Flujo flujo, SaveRequest pRequest) throws Exception { - this.flujo = flujo; - this.request = pRequest; - } - - - - /** - * Register flow. - * - * @throws Exception la exception - */ - public void registerFlow() throws Exception { - APPLogger.getLogger().info("registro Instancia de Flujo"); - TbpmProcessInstance pi = new TbpmProcessInstance(this.request.getJournalId(), this.flujo.getKiesession().getId(), FormatDates.getInstance() - .getDataBaseDate()); - pi.setProcessid(this.flujo.getProcessInstance().getId()); - pi.setFinalized(Constant.STR_N); - PersistenceHelper.persist(pi); - APPLogger.getLogger().info("Graba Instancia de Flujo " + pi.getProcessid()); - - } - - - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index aaa706e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los utilitarios para el acceso a GUVNOR - */ -package com.fp.bpmlib; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/entries deleted file mode 100644 index 7233abc..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:45.550815Z -04c6dd6eca1dcbaf9254eca0a4b012d4 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -97 - -DataHelper.java -file - - - - -2022-07-28T03:40:45.551815Z -4febe9b3b7b0480600fe25a1fff3426e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2520 - -BPMProperties.java -file - - - - -2022-07-28T03:40:45.551815Z -316bb8a6713e214fd46493fcd8a07993 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2606 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/BPMProperties.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/BPMProperties.java.svn-base deleted file mode 100644 index 010b71d..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/BPMProperties.java.svn-base +++ /dev/null @@ -1,85 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.db; - -import com.fp.common.properties.PropertiesHandler; - -// TODO: Auto-generated Javadoc -/** - * Class BPMProperties encargada de. - * - * @author gfiallos - */ -public final class BPMProperties extends PropertiesHandler { - - /** Constante GUVNOR_URL. */ - public static final String GUVNOR_URL = "guvnor.url"; - - /** Constante GUVNOR_CHANGE_SET. */ - public static final String GUVNOR_CHANGE_SET = "guvnor.change.set"; - - /** Constante GUVNOR_REFRESH. */ - public static final String GUVNOR_REFRESH = "guvnor.refresh"; - - /** Constante BPM_MEMORY. */ - public static final String BPM_MEMORY = "bpm.memory"; - - /** Constante TASK_IP. */ - public static final String TASK_IP = "task.ip"; - - /** Constante TASK_IP_SERVER. */ - public static final String TASK_IP_SERVER = "task.ip.server"; - - /** Constante TASK_PORT. */ - public static final String TASK_PORT = "task.port"; - - /** Constante FLOWS_PACKAGE. */ - public static final String FLOWS_PACKAGE = "flows.package"; - - /** Constante FLOWS_SNAPSHOT. */ - public static final String FLOWS_SNAPSHOT = "flows.snapshot"; - - /** Constante INBOX_ICON_PATH. */ - public static final String INBOX_ICON_PATH = "inbox.icon.path"; - - /** Constante INBOX_ICON_EXTENSION. */ - public static final String INBOX_ICON_EXTENSION = "inbox.icon.extension"; - - /** Constante GUVNOR_SECURITY_BASIC_AUTHENTICATION. */ - public static final String GUVNOR_SECURITY_BASIC_AUTHENTICATION = "guvnor.security.basicAuthentication"; - - /** Constante GUVNOR_SECURITY_USERNAME. */ - public static final String GUVNOR_SECURITY_USERNAME = "guvnor.security.username"; - - /** Constante GUVNOR_SECURITY_PASSWORD. */ - public static final String GUVNOR_SECURITY_PASSWORD = "guvnor.security.password"; - - /** El valor de instance. */ - private static BPMProperties instance = null; - - /** - * Obtiene la Unica instancia de BPMProperties. - * - * @return Unica instancia de BPMProperties - * @throws Exception - */ - public static BPMProperties getInstance() throws Exception { - synchronized (BPMProperties.class) { - if (BPMProperties.instance == null) { - BPMProperties.instance = new BPMProperties(); - } - return BPMProperties.instance; - } - } - - /** - * Crea una nueva instancia de bPM properties. - * - * @throws Exception la exception - */ - private BPMProperties() throws Exception { - super("bpm"); - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/DataHelper.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 86318a8..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,83 +0,0 @@ -/* - * Acceso a Datos - */ -package com.fp.bpmlib.db; - -import java.text.SimpleDateFormat; - -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmProcessInstance; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -// TODO: Auto-generated Javadoc -/** - * Clase utilitaria para el manejo de Caché del proyecto BPMLIB. - * - * @author GF - * @version 2.1 - */ -public final class DataHelper { - - /** Almacena una instancia de DataHelper. */ - private static DataHelper cache; - - /** Constante HQL_PROCESS. */ - private static final String HQL_PROCESS = "from TbpmProcessInstance tb " + " where tb.processid=:pid "; - - /** - * Entrega una instancia de DataHelper. - * - * @return DataHelper - */ - public static DataHelper getInstance() { - synchronized (DataHelper.class) { - if (DataHelper.cache != null) { - return DataHelper.cache; - } - - if (DataHelper.cache == null) { - DataHelper.cache = new DataHelper(); - } - } - return DataHelper.cache; - } - - - - /** - * Obtiene el valor de date time format. - * - * @param pCompany the company - * @return Valor de date time format - * @throws Exception la exception - */ - public SimpleDateFormat getDateTimeFormat(Integer pCompany) throws Exception { - TgeneParametersKey k = new TgeneParametersKey("FORMATDATE", pCompany); - TgeneParameters f = TgeneParameters.find(PersistenceHelper.getEntityManager(), k); - return new SimpleDateFormat(f.getTextvalue() + " HH:mm"); - } - - - /** - * Obtiene el valor de tbpm process instance. - * - * @param pId the id - * @return Valor de tbpm process instance - * @throws Exception la exception - */ - public TbpmProcessInstance getTbpmProcessInstance(Long pId) throws Exception { - TbpmProcessInstance process = null; - HqlStatement hql = new HqlStatement(DataHelper.HQL_PROCESS); - hql.setLong("pid", pId); - process = hql.getObject(TbpmProcessInstance.class); - if (process == null) { - throw new GeneralException("BPM-0004", "LA INSTANCIA {0} NO ESTA DISPONIBLE O YA FUE FINALIZADA", pId); - } - return process; - } - - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index ca93261..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/db/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los utilitarios para el acceso a la Base de Datos. - */ -package com.fp.bpmlib.db; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/entries deleted file mode 100644 index 32627de..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb -svn://172.17.26.185/COMACO - - - -2015-02-22T10:57:32.256273Z -3844 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -local -dir - -LogMailBean.java -file - - - - -2022-07-28T03:40:45.746816Z -2532097cd036a6e3014184f23a36054d -2015-02-22T10:57:32.256273Z -3844 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3008 - -JbpmBean.java -file - - - - -2022-07-28T03:40:45.746816Z -ec28a4f58519779c3fd2ad0aa916e3a9 -2014-11-04T10:22:15.189612Z -2294 -jvaca - - - - - - - - - - - - - - - - - - - - - -4068 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/JbpmBean.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/JbpmBean.java.svn-base deleted file mode 100644 index 6860587..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/JbpmBean.java.svn-base +++ /dev/null @@ -1,123 +0,0 @@ -package com.fp.bpmlib.ejb; - -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.ejb.Singleton; -import javax.ejb.Startup; -import javax.persistence.EntityManagerFactory; -import javax.persistence.PersistenceUnit; - -import org.kie.api.io.ResourceType; -import org.kie.api.runtime.EnvironmentName; -import org.kie.api.runtime.manager.RuntimeEnvironment; -import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.runtime.manager.RuntimeManagerFactory; -import org.kie.internal.io.ResourceFactory; - -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.task.util.MaiaUserGroupCallback; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.pbpm.gene.TbpmRules; - -/** - * Clase utilitaria, utilizada para creacion de base de conocimento y RuntimeManager - * - * @author Jvc - * @version 2.1 - */ -@Startup -@Singleton(name = "jbpmbean") -public class JbpmBean implements JbpmBeanLocal { - @PersistenceUnit(unitName = "org.jbpm.domain") - private EntityManagerFactory emf; - - private RuntimeManager runtimemanager; - - @PostConstruct - private final void crearSingletonManager() { - try { - if (emf == null) { - emf = PersistenceManager.getInstance().getEntityManagerFactoryAuxiliar("org.jbpm.domain"); - } - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - } - - @PreDestroy - private void close() { - try { - runtimemanager.close(); - } catch (Exception e) { - // no hacer nada. - } - - } - - /** - * Crea un RuntimeManagerFactory. - * - * @param emf Entiy manager factury utilizado en el manejo de flujos de trabajo. - * @return RuntimeEnvironment - * @throws Exception - */ - private RuntimeEnvironment crearRuntimeManager(EntityManagerFactory emf) throws Exception { - - MaiaUserGroupCallback usergroupCallback = new MaiaUserGroupCallback(); - RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf); - builder.userGroupCallback(usergroupCallback); - - this.adicionarFlujos(builder); - - RuntimeEnvironment environment = builder.get(); - environment.getEnvironment().set(EnvironmentName.USE_PESSIMISTIC_LOCKING, true); - - return environment; - } - - @Override - public RuntimeManager getRuntimeManager() throws Exception { - - if (runtimemanager == null) { - RuntimeEnvironment environment = this.crearRuntimeManager(emf); - runtimemanager = RuntimeManagerFactory.Factory.get().newPerRequestRuntimeManager(environment); - } - return runtimemanager; - } - - /** - * Adiciona definiciones de flujos a un map con los cuales se crea la base de conocimiento. - * - * @param resources Map que contiene definicion de flujos y reglas con los cuales se crea la base de conocimiento. - * @throws Exception - */ - private void adicionarFlujos(RuntimeEnvironmentBuilder builder) throws Exception { - - List ldata = TbpmRules.findRules(PersistenceHelper.getEntityManager()); - - // adiciona subprocesos. - for (TbpmRules obj : ldata) { - if (obj.getFiletype().equals("F")) { - builder.addAsset(ResourceFactory.newClassPathResource(obj.getPath(), "UTF-8"), ResourceType.BPMN2); - } else { - builder.addAsset(ResourceFactory.newClassPathResource(obj.getPath(), "UTF-8"), ResourceType.DTABLE); - } - } - } - - /** - * Entrega el entitymanagerfactory asociado al manejo de jbpm. - * - * @return - */ - @Override - public EntityManagerFactory getEmf() { - return emf; - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/LogMailBean.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/LogMailBean.java.svn-base deleted file mode 100644 index bb0d140..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/.svn/text-base/LogMailBean.java.svn-base +++ /dev/null @@ -1,94 +0,0 @@ -package com.fp.bpmlib.ejb; - -import java.sql.Timestamp; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.ejb.Stateless; -import javax.ejb.TransactionAttribute; -import javax.ejb.TransactionAttributeType; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; - -import com.fp.bpmlib.ejb.local.LogMailBeanLocal; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pbpm.gene.TbpmLogMail; - -/** - * Clase utilitaria, utilizada para creacion de base de conocimento y RuntimeManager - * - * @author Jvc - * @version 2.1 - */ -@Stateless(name="logMailBean") -public class LogMailBean implements LogMailBeanLocal { -// @PersistenceUnit(unitName = "local1") - private EntityManagerFactory emf; - - @PostConstruct - private final void crearManager() { - try { - if (emf == null) { - Map configOverrides = new HashMap(); - configOverrides.put("hibernate.ejb.cfgfile", "hibernateFlipMapping.cfg.xml"); - emf = Persistence.createEntityManagerFactory("local1" , configOverrides); - } - SessionData sessionData = new SessionData(); - sessionData.setCompany(1); - sessionData.setIsEjb(Boolean.FALSE); - ThreadFacade.setSaveRequest(sessionData); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - } - - @TransactionAttribute(TransactionAttributeType.REQUIRES_NEW) - public void logMail(Map mapMail) throws Exception { - System.out.println("Ingresa al log del mail..................................."); - EntityManager em=emf.createEntityManager(); - TbpmLogMail logMail= new TbpmLogMail(); - //logMail.setPk(getCodigo("CLOGMAIL")); - if(mapMail.get("subject")!=null){ - logMail.setAsunto(mapMail.get("subject").toString()); - } - if(mapMail.get("cont")!=null){ - logMail.setContenido(mapMail.get("cont").toString()); - } - if(mapMail.get("to")!=null){ - logMail.setCorreo(mapMail.get("to").toString()); - } - if(mapMail.get("error")!=null){ - logMail.setDescripcionerror(mapMail.get("error").toString()); - } - if(mapMail.get("estado")!=null){ - logMail.setEstado(mapMail.get("estado").toString()); - } - logMail.setFecharegistro(new Timestamp(new Date().getTime())); - if(em==null){ - crearManager(); - em=emf.createEntityManager(); - } - - em.clear(); - em.persist(logMail); - em.flush(); - em.close(); - } - - - /** - * Entrega el entitymanagerfactory - * - * @return - */ - @Override - public EntityManagerFactory getEmf() { - return emf; - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/entries deleted file mode 100644 index 14af563..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local -svn://172.17.26.185/COMACO - - - -2014-12-12T07:56:38.758021Z -3458 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LogMailBeanLocal.java -file - - - - -2022-07-28T03:40:45.723816Z -52854d15de90bdb5752754e602aef1b8 -2014-12-12T07:56:38.758021Z -3458 -cpiedra - - - - - - - - - - - - - - - - - - - - - -302 - -JbpmBeanLocal.java -file - - - - -2022-07-28T03:40:45.723816Z -df145af4e69f1ccf1988f89694dbf519 -2014-10-30T07:13:11.781809Z -2213 -wpatino - - - - - - - - - - - - - - - - - - - - - -322 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/JbpmBeanLocal.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/JbpmBeanLocal.java.svn-base deleted file mode 100644 index ea4adb8..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/JbpmBeanLocal.java.svn-base +++ /dev/null @@ -1,15 +0,0 @@ -package com.fp.bpmlib.ejb.local; - -import javax.ejb.Local; -import javax.persistence.EntityManagerFactory; - -import org.kie.api.runtime.manager.RuntimeManager; - -@Local -public interface JbpmBeanLocal { - - public RuntimeManager getRuntimeManager() throws Exception; - - public EntityManagerFactory getEmf(); - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/LogMailBeanLocal.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/LogMailBeanLocal.java.svn-base deleted file mode 100644 index f945a97..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/ejb/local/.svn/text-base/LogMailBeanLocal.java.svn-base +++ /dev/null @@ -1,14 +0,0 @@ -package com.fp.bpmlib.ejb.local; - -import java.util.Map; - -import javax.ejb.Local; -import javax.persistence.EntityManagerFactory; - -@Local -public interface LogMailBeanLocal { - - public EntityManagerFactory getEmf(); - public void logMail(Map mapMail) throws Exception; - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/entries deleted file mode 100644 index 79c4cbc..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow -svn://172.17.26.185/COMACO - - - -2016-02-19T18:02:18.312215Z -4468 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FlowUtil.java -file - - - - -2022-07-28T03:40:45.948817Z -168c1d6c47a62a7004c5c3208940571c -2016-02-19T18:02:18.312215Z -4468 -fpazmino - - - - - - - - - - - - - - - - - - - - - -13286 - -RuleUtil.java -file - - - - -2022-07-28T03:40:45.949817Z -7318849112295fe6a6b1875b878d0324 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -7847 - -Monitor.java -file - - - - -2022-07-28T03:40:45.949817Z -da855582bede52e3a38ac8ff010931d7 -2014-11-04T10:22:15.189612Z -2294 -jvaca - - - - - - - - - - - - - - - - - - - - - -10004 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/FlowUtil.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/FlowUtil.java.svn-base deleted file mode 100644 index 8dabc7a..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/FlowUtil.java.svn-base +++ /dev/null @@ -1,323 +0,0 @@ -package com.fp.bpmlib.flow; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.dto.Request; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; -import com.fp.simple.dto.Kind; -import com.fp.simple.dto.TaskInfo; -import com.fp.simple.flow.FlowClass; -import com.fp.simple.maia.MailRecipient; -import com.fp.simple.maia.MailRecipientGroup; - -// TODO: Auto-generated Javadoc -/** - * Class FlowUtil encargada de. - * - * @author gfiallos - */ -public final class FlowUtil { - - /** - * Crea una nueva instancia de flow util. - */ - private FlowUtil() { - } - - /** - * Crea la instancia de task info. - * - * @param pModule the module - * @param pTransaction the transaction - * @param pVersion the version - * @param pMinutes the minutes - * @param pKind the kind - * @return task info - * @throws Exception la exception - */ - private static TaskInfo create(String pModule, Integer pTransaction, Integer pVersion, long pMinutes, String pKind) throws Exception { - TaskInfo ti = new TaskInfo(); - ti.setModule(pModule); - ti.setTransaction(pTransaction); - ti.setVersion(pVersion); - ti.setExpectedTime(pMinutes * 60000); - ti.setKind(Kind.OK_NO); - if (pKind.equals("OK")) { - ti.setKind(Kind.OK); - } - if (pKind.equals("OK_NO_REVIEW")) { - ti.setKind(Kind.OK_NO_REVIEW); - } - return ti; - } - - /** - * Crea la instancia de task info. - * - * @param pModule the module - * @param pTransaction the transaction - * @param pVersion the version - * @param pMinutes the minutes - * @param pRule the rule - * @param pKind the kind - * @return task info - * @throws Exception la exception - */ - public static TaskInfo createTaskInfo(String pModule, Integer pTransaction, Integer pVersion, long pMinutes, String pRule, String pKind) - throws Exception { - TaskInfo ti = FlowUtil.create(pModule, pTransaction, pVersion, pMinutes, pKind); - ti.setRuleCode(pRule); - return ti; - } - - /** - * Crea la instancia de task info. - * - * @param pModule the module - * @param pTransaction the transaction - * @param pVersion the version - * @param pMinutes the minutes - * @param pKind the kind - * @return task info - * @throws Exception la exception - */ - public static TaskInfo createTaskInfo(String pModule, Integer pTransaction, Integer pVersion, long pMinutes, - String taskName, Integer pMessageCode, String pKind) throws Exception { - TaskInfo ti = FlowUtil.create(pModule, pTransaction, pVersion, pMinutes, pKind); - ti.setMessageCode(pMessageCode); - ti.setTname(taskName); - return ti; - } - - /** - * Crea la instancia de task info. - * - * @param pModule the module - * @param pTransaction the transaction - * @param pVersion the version - * @param pMinutes the minutes - * @param pClassName Paquete clase encargado de obtener el responsable de ejecutar una tarea. - * @param pKind the kind - * @return task info - * @throws Exception la exception - */ - public static TaskInfo createTaskInfoByClassName(String pModule, Integer pTransaction, Integer pVersion, long pMinutes, String pClassName, - String taskName, Integer pMessageCode, String pKind) throws Exception { - TaskInfo ti = FlowUtil.create(pModule, pTransaction, pVersion, pMinutes, pKind); - ti.setClassCode(pClassName); - ti.setMessageCode(pMessageCode); - ti.setTname(taskName); - return ti; - } - - /** - * Eval rule. - * - * @param pName the name - * @param pParam the param - * @throws Exception la exception - */ - public static void evalRule(String pName, Object pParam) throws Exception { - if (pName == null) { - return; - } - Class c = Class.forName("com.fp.bpmlib.GuvnorClient"); - Object obj = c.getConstructor(String.class).newInstance(pName); - c.getMethod("eval", Object.class).invoke(obj, pParam); - } - - /** - * Eval rule. - * - * @param pName the name - * @param pContext the context - * @param pVar the var - * @throws Exception la exception - */ - public static void evalRule(String pName, Object pContext, String pVar) throws Exception { - if (pName == null) { - return; - } - Object val = FlowUtil.getVariable(pContext, pVar); - FlowUtil.evalRule(pName, val); - FlowUtil.setVariable(pContext, pVar, val); - } - - /** - * Eval rule. - * - * @param pName the name - * @param pParam the param - * @throws Exception la exception - */ - public static void executeClass(String pClassName, Object pParam) throws Exception { - if (pClassName == null) { - return; - } - TaskAction taction = (TaskAction) Class.forName(pClassName).newInstance(); - taction.assignOwner(pParam); - } - - /** - * Obtiene el valor de variable. - * - * @param pContext the context - * @param pVar the var - * @return Valor de variable - * @throws Exception la exception - */ - public static Object getVariable(Object pContext, String pVar) throws Exception { - return pContext.getClass().getMethod("getVariable", String.class).invoke(pContext, pVar); - } - - /** - * Fija el valor de variable. - * - * @param pContext the context - * @param pVar the var - * @param pVal the val - * @throws Exception la exception - */ - public static void setVariable(Object pContext, String pVar, Object pVal) throws Exception { - pContext.getClass().getMethod("setVariable", String.class, Object.class).invoke(pContext, pVar, pVal); - } - - /** - * End flow. - * - * @param pContext the context - * @throws Exception la exception - */ - public static void endFlow(Object pContext) throws Exception { - Class c = Class.forName("com.fp.bpmlib.query.monitor.FlowEnd"); - FlowClass o = (FlowClass) c.getConstructor(Object.class).newInstance(pContext); - o.process(); - } - - /** - * Metodo que se encarga de enviar mails a un grupo de usuarios bpm definidos en TbpmGroupsUsers. - * - * @param pClassName Paquete clase, que se encarga de obtener la lista de email asociados a un grupo. - * @param pParam Request con los parametros de un flujo. - * @param pSubjectTemplate Codigo de plantilla para generar el asusnto del mail. - * @param pContentTemplate Codigo de plantilla para generar el contenido del maial. - * @param pGroupCode Codigo de grupo del bpm. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static void mailGroup(String pClassName, Object pParam, TaskInfo taskinfo, Integer pSubjectTemplate, Integer pContentTemplate, - String pGroupCode) throws Exception { - RuleUtil.setSubjectTemplate(pSubjectTemplate); - RuleUtil.setContentTemplate(pContentTemplate); - List lemail = new ArrayList(); - if (pClassName != null) { - MailRecipientGroup mail = (MailRecipientGroup) Class.forName(pClassName).newInstance(); - Map mresp = mail.getEmailAddress(pParam, pGroupCode); - lemail = (List) mresp.get("lemail"); - } - for (String email : lemail) { - RuleUtil.toField(email); - } - if (!lemail.isEmpty()) { - HashMap m = (HashMap) pParam; - ((Request) m.get("request")).put("cusuariobpm", taskinfo.getUserId()); - RuleUtil.sendMail((Request) m.get("request")); - } - } - - /** - * Metodo que se encarga del envio de emails a destinatarios enteragdos por la clase que llega como parametro. - * - * @param pClassName Paquete clase, que se encarga de obtener la lista de email a los cuales se envia - * notificaciones. - * @param pParam Request con los parametros de un flujo. - * @param pSubjectTemplate Codigo de plantilla para generar el asusnto del mail. - * @param pContentTemplate Codigo de plantilla para generar el contenido del maial. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static void mail(String pClassName, Object pParam, TaskInfo taskinfo, Integer pSubjectTemplate, Integer pContentTemplate) throws Exception { - RuleUtil.setSubjectTemplate(pSubjectTemplate); - RuleUtil.setContentTemplate(pContentTemplate); - List lemail = new ArrayList(); - if (pClassName != null) { - MailRecipient mail = (MailRecipient) Class.forName(pClassName).newInstance(); - Map mresp = mail.getEmailAddress(pParam); - lemail = (List) mresp.get("lemail"); - } - - for (String email : lemail) { - RuleUtil.toAddress(email); - } - if (!lemail.isEmpty()) { - HashMap m = (HashMap) pParam; - ((Request) m.get("request")).put("cusuariobpm", taskinfo.getUserId()); - if(taskinfo!=null && taskinfo.getAditionalData()!=null && taskinfo.getAditionalData().get("datosmail")!=null && !taskinfo.getAditionalData().get("datosmail").equals("")){ - ((Request) m.get("request")).putAll((Map)taskinfo.getAditionalData().get("datosmail")); - } - RuleUtil.sendMail((Request) m.get("request")); - }else{ - RuleUtil.setSubjectTemplate(63); - TgeneParameters addres=TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("MAIL.CENTRAL", 1)); - RuleUtil.toAddress(addres.getTextvalue()); - HashMap m = (HashMap) pParam; - ((Request) m.get("request")).put("cusuariobpm", taskinfo.getUserId()); - if(taskinfo!=null && taskinfo.getAditionalData()!=null && taskinfo.getAditionalData().get("datosmail")!=null && !taskinfo.getAditionalData().get("datosmail").equals("")){ - ((Request) m.get("request")).putAll((Map)taskinfo.getAditionalData().get("datosmail")); - } - RuleUtil.sendMail((Request) m.get("request")); - } - } - - /** - * Metodo que se encarga del envio de emails a destinatarios enteragdos por la clase que llega como parametro. - * - * @param pClassName Paquete clase, que se encarga de obtener la lista de email a los cuales se envia - * notificaciones. - * @param pParam Request con los parametros de un flujo. - * @param pSubjectTemplate Codigo de plantilla para generar el asusnto del mail. - * @param pContentTemplate Codigo de plantilla para generar el contenido del maial. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static void mailDocumentoAdjunto(String pClassName, Object pParam, TaskInfo taskinfo, Integer pSubjectTemplate, Integer pContentTemplate) throws Exception { - RuleUtil.setSubjectTemplate(pSubjectTemplate); - RuleUtil.setContentTemplate(pContentTemplate); - List lemail = new ArrayList(); - if (pClassName != null) { - MailRecipient mail = (MailRecipient) Class.forName(pClassName).newInstance(); - Map mresp = mail.getEmailAddress(pParam); - lemail = (List) mresp.get("lemail"); - } - - for (String email : lemail) { - RuleUtil.toAddress(email); - } - if (!lemail.isEmpty()) { - HashMap m = (HashMap) pParam; - ((Request) m.get("request")).put("cusuariobpm", taskinfo.getUserId()); - if(taskinfo!=null && taskinfo.getAditionalData()!=null && taskinfo.getAditionalData().get("datosmail")!=null){ - ((Request) m.get("request")).putAll((Map)taskinfo.getAditionalData().get("datosmail")); - } - RuleUtil.sendMail((Request) m.get("request")); - }else{ - RuleUtil.setSubjectTemplate(63); - TgeneParameters addres=TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("MAIL.CENTRAL", 1)); - RuleUtil.toAddress(addres.getTextvalue()); - HashMap m = (HashMap) pParam; - ((Request) m.get("request")).put("cusuariobpm", taskinfo.getUserId()); - if(taskinfo!=null && taskinfo.getAditionalData()!=null && taskinfo.getAditionalData().get("datosmail")!=null){ - ((Request) m.get("request")).putAll((Map)taskinfo.getAditionalData().get("datosmail")); - } - RuleUtil.sendMail((Request) m.get("request")); - } - } - - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.netbeans-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.netbeans-base deleted file mode 100644 index 334bafd..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.netbeans-base +++ /dev/null @@ -1,263 +0,0 @@ -package com.fp.bpmlib.flow; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.naming.InitialContext; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import org.drools.core.common.InternalKnowledgeRuntime; -import org.drools.core.impl.InternalKnowledgeBase; -import org.drools.core.impl.StatefulKnowledgeSessionImpl; -import org.jbpm.ruleflow.instance.RuleFlowProcessInstance; -import org.jbpm.services.task.audit.impl.model.AuditTaskImpl; -import org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl; -import org.jbpm.workflow.instance.node.HumanTaskNodeInstance; -import org.jbpm.workflow.instance.node.SubProcessNodeInstance; -import org.kie.api.definition.process.Node; -import org.kie.api.runtime.KieSession; -import org.kie.api.runtime.manager.RuntimeEngine; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.runtime.process.NodeInstance; -import org.kie.api.runtime.process.ProcessInstance; -import org.kie.api.task.TaskService; -import org.kie.api.task.model.Task; -import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext; - -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.simple.dto.TaskInfo; -import com.fp.simple.dto.metadata.ProcessInstanceMeta; - -public class Monitor { - - private KieSession kiesession; - - private ProcessInstance processInstance = null; - - private TaskService taskService; - - private RuntimeManager runtimeManager; - - private RuntimeEngine runtimeEngine; - - private EntityManagerFactory emf; - - /** - * Crea una instancia de flujo. - */ - public Monitor(Long processid) throws Exception { - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - runtimeManager = local.getRuntimeManager(); - emf = local.getEmf(); - runtimeEngine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(processid)); - taskService = runtimeEngine.getTaskService(); - kiesession = runtimeEngine.getKieSession(); - processInstance = kiesession.getProcessInstance(processid); - } - - /** - * Cierra la session de trabajo. - */ - public void close() { - // no cerrar la session, esta se cierra en el commit trabaja con JTA. - } - - public KieSession getKiesession() { - return kiesession; - } - - public TaskService getTaskService() { - return taskService; - } - - public ProcessInstance getProcessInstance() { - return processInstance; - } - - /** - * Obtiene el valor de variable. - * - * @param pName Nombre de la varibale a buscar en una instancia de proceso. - * @return Valor de variable - * @throws Exception la exception - */ - public Object getVariable(String pName) throws Exception { - RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance) this.processInstance; - return rfpi.getVariable(pName); - } - - /** - * Obtiene el valor de status. - * - * @param pVariables the variables - * @return Valor de status - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public List getStatus() throws Exception { - List data = new ArrayList(); - if (this.processInstance == null) { - return data; - } - - RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance) this.processInstance; - InternalKnowledgeRuntime internal = rfpi.getKnowledgeRuntime(); - if (internal == null) { - internal = new StatefulKnowledgeSessionImpl(1, (InternalKnowledgeBase) this.kiesession.getKieBase()); - rfpi.setKnowledgeRuntime(internal); - } - Collection nl = rfpi.getNodeInstances(); - - for (NodeInstance ni : nl) { - ProcessInstanceMeta pim = new ProcessInstanceMeta(this.processInstance.getId()); - data.add(pim); - Map m = ni.getNode().getMetaData(); - pim.setH(Integer.valueOf("" + m.get("height"))); - pim.setW(Integer.valueOf("" + m.get("width"))); - pim.setX(Integer.valueOf("" + m.get("x"))); - pim.setY(Integer.valueOf("" + m.get("y"))); - pim.setName(processInstance.getProcessName()); - pim.setVersion(processInstance.getProcess().getVersion()); - pim.setActivity(ni.getNodeName()); - pim.setPmetaid(ni.getNodeId()); - Map var = pim.getVariables(); - Object tasks = this.getVariable(ProcessUtil.TASKS_METADATA); - boolean req = true; - if (tasks != null) { - var.put(ProcessUtil.TASKS_METADATA, this.manageTasksMetaData((Map) tasks)); - req = false; - } - if (req) { - tasks = this.getVariable(ProcessUtil.ACTUAL_TASK); - if (tasks != null) { - var.put(ProcessUtil.ACTUAL_TASK, tasks); - } - } - this.manageNode(pim, ni); - } - return data; - } - - /** - * Manage node. - * - * @param pim the pim - * @param ni the ni - * @param pVariables the variables - * @throws Exception la exception - */ - private void manageNode(ProcessInstanceMeta pim, NodeInstance ni) throws Exception { - if (ni instanceof HumanTaskNodeInstance) { - HumanTaskNodeInstance sub = (HumanTaskNodeInstance) ni; - pim.setWorkItem(sub.getWorkItemId()); - Task t = this.taskService.getTaskByWorkItemId(pim.getWorkItem()); - // getDocumentContentId es el contenido de entrada de la tarea. - Map input = HumanTaskClient.getContenido(taskService.getContentById(t.getTaskData().getDocumentContentId())); - TaskInfo info = (TaskInfo) input.get("taskMetaData"); - info.getAditionalData().put("workItem", sub.getWorkItemId()); - pim.addAddtionalInfo("taskMetaData", info); - return; - } - if (ni instanceof SubProcessNodeInstance) { - SubProcessNodeInstance sub = (SubProcessNodeInstance) ni; - Monitor subflujo = new Monitor(sub.getProcessInstanceId()); - for (ProcessInstanceMeta pi : subflujo.getStatus()) { - pim.addSubProcess(pi); - } - return; - } - } - - /** - * Manage tasks meta data. - * - * @param pTasksMetaData the tasks meta data - * @return map - * @throws Exception la exception - */ - private Map manageTasksMetaData(Map pTasksMetaData) throws Exception { - Map data = new HashMap(); - RuleFlowProcessInstance instance = (RuleFlowProcessInstance) processInstance; - for (Entry element : pTasksMetaData.entrySet()) { - Map record = new HashMap(); - Node[] ns = instance.getRuleFlowProcess().getNodes(); - for (Node n : ns) { - if (n.getName().compareTo(element.getKey()) == 0) { - Map m = n.getMetaData(); - record.put("h", Integer.valueOf("" + m.get("height"))); - record.put("w", Integer.valueOf("" + m.get("width"))); - record.put("x", Integer.valueOf("" + m.get("x"))); - record.put("y", Integer.valueOf("" + m.get("y"))); - record.put("name", n.getName()); - break; - } - } - // record.put(ProcessUtil.TASK_METADATA, element.getValue()); - data.put(element.getKey(), record); - } - return data; - } - - /** - * JPQL TAREA_SUMMARY - */ - private static final String TAREA_SUMMARY = "select t from BAMTaskSummaryImpl t where t.taskId = :idtarea"; - - /** - * Obtiene el valor de unfinished tasks por Grupo. - * - * @param pGroupId the user id - * @param pCri the cri - * @return Valor de unfinished tasks - * @throws Exception la exception - */ - public BAMTaskSummaryImpl getBAMTaskSummaryImpl(long idtarea) throws Exception { - EntityManager em = null; - BAMTaskSummaryImpl dato = null; - try { - em = emf.createEntityManager(); - Query qry = em.createQuery(Monitor.TAREA_SUMMARY); - qry.setParameter("idtarea", idtarea); - dato = (BAMTaskSummaryImpl) qry.getSingleResult(); - } catch (NoResultException e) { - // retorna el objeto en null. - } finally { - if (em.isOpen()) { - em.close(); - } - } - return dato; - } - - /** - * JPQL TAREA_SUMMARY - */ - private static final String TAREA_AUDIT_IMP = "select t from AuditTaskImpl t where t.taskId = :idtarea"; - - public AuditTaskImpl getAuditTaskImpl(long idtarea) throws Exception { - EntityManager em = null; - AuditTaskImpl dato = null; - try { - em = emf.createEntityManager(); - Query qry = em.createQuery(Monitor.TAREA_AUDIT_IMP); - qry.setParameter("idtarea", idtarea); - dato = (AuditTaskImpl) qry.getSingleResult(); - } catch (NoResultException e) { - // retorna el objeto en null. - } finally { - if (em.isOpen()) { - em.close(); - } - } - return dato; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.svn-base deleted file mode 100644 index 334bafd..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/Monitor.java.svn-base +++ /dev/null @@ -1,263 +0,0 @@ -package com.fp.bpmlib.flow; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.naming.InitialContext; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import org.drools.core.common.InternalKnowledgeRuntime; -import org.drools.core.impl.InternalKnowledgeBase; -import org.drools.core.impl.StatefulKnowledgeSessionImpl; -import org.jbpm.ruleflow.instance.RuleFlowProcessInstance; -import org.jbpm.services.task.audit.impl.model.AuditTaskImpl; -import org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl; -import org.jbpm.workflow.instance.node.HumanTaskNodeInstance; -import org.jbpm.workflow.instance.node.SubProcessNodeInstance; -import org.kie.api.definition.process.Node; -import org.kie.api.runtime.KieSession; -import org.kie.api.runtime.manager.RuntimeEngine; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.runtime.process.NodeInstance; -import org.kie.api.runtime.process.ProcessInstance; -import org.kie.api.task.TaskService; -import org.kie.api.task.model.Task; -import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext; - -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.simple.dto.TaskInfo; -import com.fp.simple.dto.metadata.ProcessInstanceMeta; - -public class Monitor { - - private KieSession kiesession; - - private ProcessInstance processInstance = null; - - private TaskService taskService; - - private RuntimeManager runtimeManager; - - private RuntimeEngine runtimeEngine; - - private EntityManagerFactory emf; - - /** - * Crea una instancia de flujo. - */ - public Monitor(Long processid) throws Exception { - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - runtimeManager = local.getRuntimeManager(); - emf = local.getEmf(); - runtimeEngine = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(processid)); - taskService = runtimeEngine.getTaskService(); - kiesession = runtimeEngine.getKieSession(); - processInstance = kiesession.getProcessInstance(processid); - } - - /** - * Cierra la session de trabajo. - */ - public void close() { - // no cerrar la session, esta se cierra en el commit trabaja con JTA. - } - - public KieSession getKiesession() { - return kiesession; - } - - public TaskService getTaskService() { - return taskService; - } - - public ProcessInstance getProcessInstance() { - return processInstance; - } - - /** - * Obtiene el valor de variable. - * - * @param pName Nombre de la varibale a buscar en una instancia de proceso. - * @return Valor de variable - * @throws Exception la exception - */ - public Object getVariable(String pName) throws Exception { - RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance) this.processInstance; - return rfpi.getVariable(pName); - } - - /** - * Obtiene el valor de status. - * - * @param pVariables the variables - * @return Valor de status - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public List getStatus() throws Exception { - List data = new ArrayList(); - if (this.processInstance == null) { - return data; - } - - RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance) this.processInstance; - InternalKnowledgeRuntime internal = rfpi.getKnowledgeRuntime(); - if (internal == null) { - internal = new StatefulKnowledgeSessionImpl(1, (InternalKnowledgeBase) this.kiesession.getKieBase()); - rfpi.setKnowledgeRuntime(internal); - } - Collection nl = rfpi.getNodeInstances(); - - for (NodeInstance ni : nl) { - ProcessInstanceMeta pim = new ProcessInstanceMeta(this.processInstance.getId()); - data.add(pim); - Map m = ni.getNode().getMetaData(); - pim.setH(Integer.valueOf("" + m.get("height"))); - pim.setW(Integer.valueOf("" + m.get("width"))); - pim.setX(Integer.valueOf("" + m.get("x"))); - pim.setY(Integer.valueOf("" + m.get("y"))); - pim.setName(processInstance.getProcessName()); - pim.setVersion(processInstance.getProcess().getVersion()); - pim.setActivity(ni.getNodeName()); - pim.setPmetaid(ni.getNodeId()); - Map var = pim.getVariables(); - Object tasks = this.getVariable(ProcessUtil.TASKS_METADATA); - boolean req = true; - if (tasks != null) { - var.put(ProcessUtil.TASKS_METADATA, this.manageTasksMetaData((Map) tasks)); - req = false; - } - if (req) { - tasks = this.getVariable(ProcessUtil.ACTUAL_TASK); - if (tasks != null) { - var.put(ProcessUtil.ACTUAL_TASK, tasks); - } - } - this.manageNode(pim, ni); - } - return data; - } - - /** - * Manage node. - * - * @param pim the pim - * @param ni the ni - * @param pVariables the variables - * @throws Exception la exception - */ - private void manageNode(ProcessInstanceMeta pim, NodeInstance ni) throws Exception { - if (ni instanceof HumanTaskNodeInstance) { - HumanTaskNodeInstance sub = (HumanTaskNodeInstance) ni; - pim.setWorkItem(sub.getWorkItemId()); - Task t = this.taskService.getTaskByWorkItemId(pim.getWorkItem()); - // getDocumentContentId es el contenido de entrada de la tarea. - Map input = HumanTaskClient.getContenido(taskService.getContentById(t.getTaskData().getDocumentContentId())); - TaskInfo info = (TaskInfo) input.get("taskMetaData"); - info.getAditionalData().put("workItem", sub.getWorkItemId()); - pim.addAddtionalInfo("taskMetaData", info); - return; - } - if (ni instanceof SubProcessNodeInstance) { - SubProcessNodeInstance sub = (SubProcessNodeInstance) ni; - Monitor subflujo = new Monitor(sub.getProcessInstanceId()); - for (ProcessInstanceMeta pi : subflujo.getStatus()) { - pim.addSubProcess(pi); - } - return; - } - } - - /** - * Manage tasks meta data. - * - * @param pTasksMetaData the tasks meta data - * @return map - * @throws Exception la exception - */ - private Map manageTasksMetaData(Map pTasksMetaData) throws Exception { - Map data = new HashMap(); - RuleFlowProcessInstance instance = (RuleFlowProcessInstance) processInstance; - for (Entry element : pTasksMetaData.entrySet()) { - Map record = new HashMap(); - Node[] ns = instance.getRuleFlowProcess().getNodes(); - for (Node n : ns) { - if (n.getName().compareTo(element.getKey()) == 0) { - Map m = n.getMetaData(); - record.put("h", Integer.valueOf("" + m.get("height"))); - record.put("w", Integer.valueOf("" + m.get("width"))); - record.put("x", Integer.valueOf("" + m.get("x"))); - record.put("y", Integer.valueOf("" + m.get("y"))); - record.put("name", n.getName()); - break; - } - } - // record.put(ProcessUtil.TASK_METADATA, element.getValue()); - data.put(element.getKey(), record); - } - return data; - } - - /** - * JPQL TAREA_SUMMARY - */ - private static final String TAREA_SUMMARY = "select t from BAMTaskSummaryImpl t where t.taskId = :idtarea"; - - /** - * Obtiene el valor de unfinished tasks por Grupo. - * - * @param pGroupId the user id - * @param pCri the cri - * @return Valor de unfinished tasks - * @throws Exception la exception - */ - public BAMTaskSummaryImpl getBAMTaskSummaryImpl(long idtarea) throws Exception { - EntityManager em = null; - BAMTaskSummaryImpl dato = null; - try { - em = emf.createEntityManager(); - Query qry = em.createQuery(Monitor.TAREA_SUMMARY); - qry.setParameter("idtarea", idtarea); - dato = (BAMTaskSummaryImpl) qry.getSingleResult(); - } catch (NoResultException e) { - // retorna el objeto en null. - } finally { - if (em.isOpen()) { - em.close(); - } - } - return dato; - } - - /** - * JPQL TAREA_SUMMARY - */ - private static final String TAREA_AUDIT_IMP = "select t from AuditTaskImpl t where t.taskId = :idtarea"; - - public AuditTaskImpl getAuditTaskImpl(long idtarea) throws Exception { - EntityManager em = null; - AuditTaskImpl dato = null; - try { - em = emf.createEntityManager(); - Query qry = em.createQuery(Monitor.TAREA_AUDIT_IMP); - qry.setParameter("idtarea", idtarea); - dato = (AuditTaskImpl) qry.getSingleResult(); - } catch (NoResultException e) { - // retorna el objeto en null. - } finally { - if (em.isOpen()) { - em.close(); - } - } - return dato; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/RuleUtil.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/RuleUtil.java.svn-base deleted file mode 100644 index 892e472..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/flow/.svn/text-base/RuleUtil.java.svn-base +++ /dev/null @@ -1,284 +0,0 @@ -package com.fp.bpmlib.flow; - -import java.lang.reflect.Constructor; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.dto.Request; -import com.fp.dto.save.SaveRequest; -import com.fp.simple.flow.Asign; - -// TODO: Auto-generated Javadoc -/** - * Class RuleUtil encargada del manejo de las operaciones de una Regla. - * - * @author gfiallos - */ -public final class RuleUtil { - - /** - * Crea una nueva instancia de rule util. - */ - private RuleUtil() { - } - - /** El valor de message. */ - private static ThreadLocal> message = new ThreadLocal>(); - - /** - * Asign. - * - * @param pMaia the maia - * @param pClass the class - * @throws Exception la exception - */ - public static void asign(Map pMaia, String pClass) throws Exception { - Asign asign = (Asign) Class.forName(pClass).newInstance(); - asign.setRequest(RuleUtil.getRequest(pMaia)); - RuleUtil.setAction(pMaia, "A"); - if (!asign.isGroup()) { - RuleUtil.setUser(pMaia, asign.getId()); - } else { - RuleUtil.setGroup(pMaia, asign.getId()); - } - - } - - /** - * Asign officer. - * - * @param pMaia the maia - */ - public static void asignOfficer(Map pMaia) { - String officer = RuleUtil.getRequest(pMaia).getString("officer"); - RuleUtil.setUser(pMaia, officer); - RuleUtil.setAction(pMaia, "A"); - } - - /** - * Obtiene el valor de amount. - * - * @param pMaia the maia - * @return Valor de amount - */ - public static BigDecimal getAmount(Map pMaia) { - return RuleUtil.getRequest(pMaia).getBigDecimal("amount"); - } - - /** - * Obtiene el valor de financial amount. - * - * @param pMaia the maia - * @return Valor de financial amount - */ - public static BigDecimal getFinancialAmount(Map pMaia) { - return RuleUtil.getRequest(pMaia).getBigDecimal("financialamount"); - } - - /** - * Obtiene el valor de rate. - * - * @param pMaia the maia - * @return Valor de rate - */ - public static BigDecimal getRate(Map pMaia) { - return RuleUtil.getRequest(pMaia).getBigDecimal("rate"); - } - - /** - * Obtiene el valor de request. - * - * @param pMaia the maia - * @return Valor de request - */ - public static Request getRequest(Map pMaia) { - return (Request) pMaia.get("request"); - } - - /** - * Obtiene el valor de save request. - * - * @param pMaia the maia - * @return Valor de save request - */ - public static SaveRequest getSaveRequest(Map pMaia) { - return (SaveRequest) RuleUtil.getRequest(pMaia); - } - - /** - * Obtiene el valor de term. - * - * @param pMaia the maia - * @return Valor de term - */ - public static Integer getTerm(Map pMaia) { - return RuleUtil.getRequest(pMaia).getInteger("term"); - } - - /** - * Fija el valor de action. - * - * @param pMaia the maia - * @param pAction the action - */ - public static void setAction(Map pMaia, String pAction) { - pMaia.put("action", pAction); - } - - /** - * Fija el valor de action intermediate. - * - * @param pMaia the maia - * @param pAction the action - */ - public static void setActionIntermediate(Map pMaia, String pAction) { - pMaia.put("action", pAction); - pMaia.put("internalCode", "Y"); - - } - - /** - * Fija el valor de group. - * - * @param pMaia the maia - * @param pGroup the group - */ - public static void setGroup(Map pMaia, String pGroup) { - pMaia.put("groupId", pGroup); - RuleUtil.toGroup(pGroup); - } - - /** - * Fija el valor de user. - * - * @param pMaia the maia - * @param pUser the user - */ - public static void setUser(Map pMaia, String pUser) { - pMaia.put("userId", pUser); - } - - /** - * Obtiene el valor de message. - * - * @return Valor de message - */ - private static Map getMessage() { - Map msg = null; - synchronized (RuleUtil.message) { - msg = RuleUtil.message.get(); - if (msg == null) { - msg = new HashMap(); - RuleUtil.message.set(msg); - } - } - return msg; - } - - /** - * To user. - * - * @param pUser the user - */ - public static void toUser(String pUser) { - Map msg = RuleUtil.getMessage(); - @SuppressWarnings("unchecked") - List user = (List) msg.get("user"); - if (user == null) { - user = new ArrayList(); - msg.put("user", user); - } - user.add(pUser); - } - - /** - * To group. - * - * @param pGroup the group - */ - public static void toGroup(String pGroup) { - Map msg = RuleUtil.getMessage(); - @SuppressWarnings("unchecked") - List group = (List) msg.get("group"); - if (group == null) { - group = new ArrayList(); - msg.put("group", group); - } - group.add(pGroup); - } - - /** - * To field. - * - * @param pField the field - */ - public static void toField(String pField) { - Map msg = RuleUtil.getMessage(); - @SuppressWarnings("unchecked") - List field = (List) msg.get("field"); - if (field == null) { - field = new ArrayList(); - msg.put("field", field); - } - field.add(pField); - } - - /** - * To address. - * - * @param pField the field - */ - public static void toAddress(String pAddress) { - Map msg = RuleUtil.getMessage(); - @SuppressWarnings("unchecked") - List laddress = (List) msg.get("address"); - if (laddress == null) { - laddress = new ArrayList(); - msg.put("address", laddress); - } - if (!laddress.contains(pAddress)) { - laddress.add(pAddress); - } - } - - /** - * Fija el valor de subject template. - * - * @param pTemplate es el valor nuevo de subject template - */ - public static void setSubjectTemplate(Integer pTemplate) { - Map msg = RuleUtil.getMessage(); - msg.put("subject", pTemplate); - } - - /** - * Fija el valor de content template. - * - * @param pTemplate es el valor nuevo de content template - */ - public static void setContentTemplate(Integer pTemplate) { - Map msg = RuleUtil.getMessage(); - msg.put("content", pTemplate); - } - - /** - * Send mail. - * - * @param pRequest the request - * @throws Exception la exception - */ - public static void sendMail(Request pRequest) throws Exception { - Class c = Class.forName("com.fp.bpmlib.mail.MailCommand"); - Map msg = RuleUtil.getMessage(); - msg.put("request", pRequest); - Constructor con = c.getConstructor(Map.class); - Object obj = con.newInstance(msg); - Method m = c.getMethod("send"); - m.invoke(obj); - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/entries deleted file mode 100644 index 8982ffc..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MailThreadWithAttachment.java -file - - - - -2022-07-28T03:40:45.528815Z -b6eeb4aac6301e4ddc91ff192f933b5e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -729 - -MailCommand.java -file - - - - -2022-07-28T03:40:45.528815Z -8a7b7e2e828e1ccdd7767d40cc17a5f9 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2414 - -package-info.java -file - - - - -2022-07-28T03:40:45.529815Z -c1ca351a60ee2fc9eb4d787831bd6f50 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -99 - -MailParameters.java -file - - - - -2022-07-28T03:40:45.529815Z -38edc2fa0c9739c5d822ba11472ee281 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2656 - -Mailer.java -file - - - - -2022-07-28T03:40:45.529815Z -56b806da05ed6c889c7b09871483a68a -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8854 - -MailThread.java -file - - - - -2022-07-28T03:40:45.529815Z -c7a2fb2d97af2804d2836d6098c4f630 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -687 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailCommand.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailCommand.java.svn-base deleted file mode 100644 index 53489aa..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailCommand.java.svn-base +++ /dev/null @@ -1,89 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.mail; - -import java.util.List; -import java.util.Map; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; - -// TODO: Auto-generated Javadoc -/** - * MailCommand encargada del envío de correos a partir de una regla. - * - * @author gfiallos - */ -public class MailCommand { - - /** El valor de parameters. */ - private final Map parameters; - - /** El valor de request. */ - private final Request request; - - /** El valor de m. */ - private final Mailer m; - - /** - * Crea una nueva instancia de mail command. - * - * @param pParameters the parameters - * @throws Exception la exception - */ - public MailCommand(Map pParameters) throws Exception { - APPLogger.getLogger().info(pParameters); - parameters = pParameters; - request = (Request) parameters.get("request"); - m = new Mailer(request); - } - - /** - * Send. - * - * @throws Exception la exception - */ - public void send() throws Exception { - this.manageTo(); - m.setSubject((Integer) parameters.get("subject")); - m.setContent((Integer) parameters.get("content")); - MailThread mt = new MailThread(m); - mt.start(); - // this.m.send(); - } - - /** - * Maneja el campo to. - * - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - private void manageTo() throws Exception { - List users = (List) parameters.get("user"); - if (users != null) { - for (String user : users) { - m.setToUser(user); - } - } - List groups = (List) parameters.get("group"); - if (groups != null) { - for (String group : groups) { - m.setToGroup(group); - } - } - List fields = (List) parameters.get("field"); - if (fields != null) { - for (String field : fields) { - m.setTo(request.getString(field)); - } - } - List ladress = (List) parameters.get("address"); - if (ladress != null) { - for (String address : ladress) { - m.setTo(address); - } - parameters.remove("address"); - } - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailParameters.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailParameters.java.svn-base deleted file mode 100644 index a97e4ac..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailParameters.java.svn-base +++ /dev/null @@ -1,99 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.mail; - -import java.util.NoSuchElementException; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -// TODO: Auto-generated Javadoc -/** - * Parámetros del Sistema empleados para el manejo del Envío de Correos. - * - * @author gfiallos - * - */ -public enum MailParameters { - - /** REMITENTE. */ - MAIL_FROM("MAIL.FROM"), - - /** INDICADOR SI SE REQUIERE AUTENTICACIÓN CON EL SERVIDOR. */ - MAIL_SMTP_AUTH("MAIL.SMTP.AUTH"), - - /** PASSWORD DE INGRESO AL SERVIDOR SMTP. */ - MAIL_SMTP_PASSWORD("MAIL.SMTP.PASSWORD"), - - /** PUERTO SMTP. */ - MAIL_SMTP_PORT("MAIL.SMTP.PORT"), - - /** SERVIDOR SMTP. */ - MAIL_SMTP_SERVER("MAIL.SMTP.SERVER"), - - /** USUARIO DE INGRESO AL SERVIDOR SMTP. */ - MAIL_SMTP_USER("MAIL.SMTP.USER"), - - /** INDICADOR SI EL SERVIDOR MANEJA PROTOCOLO SEGURO. */ - MAIL_SMTPS("MAIL.SMTPS"); - - /** El valor de name. */ - private String name; - - /** - * Crea una nueva instancia de mail parameters. - * - * @param pName the name - */ - private MailParameters(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de parameter. - * - * @return Valor de parameter - * @throws Exception la exception - */ - private TgeneParameters getParameter() throws Exception { - TgeneParametersKey k = new TgeneParametersKey(this.name, ThreadFacade.getSessionData().getCompany()); - TgeneParameters p = TgeneParameters.find(PersistenceHelper.getEntityManager(), k); - if (p != null) { - return p; - } - throw new NoSuchElementException(); - } - - /** - * Obtiene el valor de string value. - * - * @return Valor de string value - * @throws Exception la exception - */ - public String getStringValue() throws Exception { - return this.getParameter().getTextvalue(); - } - - /** - * Obtiene el valor de int value. - * - * @return Valor de int value - * @throws Exception la exception - */ - public Integer getIntValue() throws Exception { - return this.getParameter().getNumbervalue().intValue(); - } - - /** - * Obtiene el valor de boolean value. - * - * @return Valor de boolean value - * @throws Exception la exception - */ - public boolean isBooleanValue() throws Exception { - return Boolean.valueOf(this.getStringValue()); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThread.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThread.java.svn-base deleted file mode 100644 index 0d94308..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThread.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.mail; - -import com.fp.common.logger.APPLogger; - -// TODO: Auto-generated Javadoc -/** - * Class MailThread encargada de. - * - * @author gfiallos - */ -public class MailThread extends Thread { - - /** El valor de m. */ - private Mailer m; - - /** - * Crea una nueva instancia de mail thread. - * - * @param pMaler the maler - */ - public MailThread(Mailer pMaler) { - this.m = pMaler; - } - - /** - * Run. - */ - @Override - public void run() { - try { - this.m.send(); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThreadWithAttachment.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThreadWithAttachment.java.svn-base deleted file mode 100644 index 857d2b6..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/MailThreadWithAttachment.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.mail; - -import com.fp.common.logger.APPLogger; - -// TODO: Auto-generated Javadoc -/** - * Class MailThread encargada de. - * - * @author gfiallos - */ -public class MailThreadWithAttachment extends Thread { - - /** El valor de m. */ - private Mailer m; - - /** - * Crea una nueva instancia de mail thread. - * - * @param pMaler the maler - */ - public MailThreadWithAttachment(Mailer pMaler) { - this.m = pMaler; - } - - /** - * Run. - */ - @Override - public void run() { - try { - this.m.sendWithAttachment(); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/Mailer.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/Mailer.java.svn-base deleted file mode 100644 index 7646d99..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/Mailer.java.svn-base +++ /dev/null @@ -1,252 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.mail; - -import java.util.HashMap; -import java.util.Map; - -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.ejb.local.LogMailBeanLocal; -import com.fp.bpmlib.messages.MessageManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.mail.Mail; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pbpm.gene.TbpmGroups; -import com.fp.persistence.pbpm.gene.TbpmGroupsKey; - -// TODO: Auto-generated Javadoc -/** - * Class Mailer encargada del envío de Correos. - * - * @author gfiallos - */ -public class Mailer { - - /** El valor de mail. */ - private Mail mail = null; - - /** El valor de request. */ - private final Request request; - - /** - * Crea una nueva instancia de mailer. - * - * @param pRequest the request - * @throws Exception la exception - */ - public Mailer(Request pRequest) throws Exception { - request = pRequest; - mail = new Mail(null, null, null, null, null, false); - this.config(); - } - - /** - * Config. - * - * @throws Exception la exception - */ - private void config() throws Exception { - System.out.println("---------------------------"+MailParameters.MAIL_SMTP_SERVER.getStringValue()); - System.out.println("---------------------------"+ MailParameters.MAIL_SMTP_PORT.getIntValue()); - mail.config(MailParameters.MAIL_FROM.getStringValue(), MailParameters.MAIL_SMTP_SERVER.getStringValue(), - MailParameters.MAIL_SMTP_PORT.getIntValue(), MailParameters.MAIL_SMTP_USER.getStringValue(), - MailParameters.MAIL_SMTP_PASSWORD.getStringValue(), MailParameters.MAIL_SMTP_AUTH.isBooleanValue(), - MailParameters.MAIL_SMTPS.isBooleanValue()); - } - - /** - * Prepare message manager. - * - * @param pTemplate the template - * @return message manager - * @throws Exception la exception - */ - private MessageManager prepareMessageManager(Integer pTemplate) throws Exception { - MessageManager m = new MessageManager(pTemplate, request.getLanguage(), null); - m.setValue("request", request); - return m; - } - - /** - * Fija el valor de subject. - * - * @param pTemplate es el valor nuevo de subject - * @throws Exception la exception - */ - public void setSubject(Integer pTemplate) throws Exception { - mail.setSubject(this.prepareMessageManager(pTemplate).getMessage()); - } - - /** - * Fija el valor de content. - * - * @param pTemplate es el valor nuevo de content - * @throws Exception la exception - */ - public void setContent(Integer pTemplate) throws Exception { - mail.setCont(this.prepareMessageManager(pTemplate).getMessage()); - } - - /** - * Fija el valor de to. - * - * @param pRef es el valor nuevo de to - * @throws Exception la exception - */ - public void setTo(String pRef) throws Exception { - String to = mail.getTo(); - if (to == null) { - mail.setTo(pRef); - } else { - mail.setTo(to + "," + pRef); - } - } - - /** - * Fija el valor de to user. - * - * @param pUser es el valor nuevo de to user - * @throws Exception la exception - */ - public void setToUser(String pUser) throws Exception { - this.setTo(GeneralDescriptions.getEmailByUser(pUser)); - } - - /** - * Fija el valor de to group. - * - * @param pGroup es el valor nuevo de to group - * @throws Exception la exception - */ - public void setToGroup(String pGroup) throws Exception { - TbpmGroupsKey k = new TbpmGroupsKey(pGroup, ThreadFacade.getSessionData().getCompany()); - TbpmGroups g = TbpmGroups.find(PersistenceHelper.getEntityManager(), k); - if (g == null) { - throw new Exception("GRUPO NO EXISTE |" + pGroup + "|"); - } - this.setTo(g.getEmail()); - } - - /** - * Envía el Correo. - * - * @throws Exception la exception - */ - public void send() throws Exception { - try { - if ((mail.getTo() == null) || (mail.getSubject() == null) || (mail.getCont() == null)) { - throw new Exception(mail.getTo() + " " + mail.getSubject() + " " + (mail.getCont() != null)); - } - String [] correosl=mail.getTo().split(","); - LogMailBeanLocal beanLocal = (LogMailBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/logMailBean"); - for(String para:correosl){ - try{ - mail.setTo(para); - APPLogger.getLogger().info("Mensaje a enviar " + mail.getSubject() + " para " + mail.getTo()); - mail.send(); - try { - Map mapaMail = new HashMap(); - mapaMail.put("to", mail.getTo()); - mapaMail.put("subject", mail.getSubject()); - mapaMail.put("cont", mail.getCont()); - mapaMail.put("estado", "Y"); - beanLocal.logMail(mapaMail); - } catch (Exception e) { - e.getMessage(); - APPLogger.getLogger().error("1.-Excepcion en seteo mail"); - } - - }catch (Exception e) { - APPLogger.getLogger().warn("El mensaje" + mail.getSubject() + " para " + mail.getTo() + " no se ha podido enviar "); - APPLogger.getLogger().error(e, e); - - try { - //LogMailBeanLocal beanLocal = (LogMailBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/logMailBean"); - Map mapaMail = new HashMap(); - mapaMail.put("to", mail.getTo()); - mapaMail.put("subject", mail.getSubject()); - mapaMail.put("cont", mail.getCont()); - mapaMail.put("estado", "N"); - mapaMail.put("error", e.getMessage()); - beanLocal.logMail(mapaMail); - } catch (Exception e2) { - e.getMessage(); - APPLogger.getLogger().error("2.-Excepcion en seteo mail"); - } - } - } - }catch (NamingException e) { - e.getMessage(); - APPLogger.getLogger().error("Servicio no encontrado"); - } - catch (Exception e) { - e.getMessage(); - APPLogger.getLogger().error("Excepcion al enviar mail"); - } - } - - /** - * Envía el Correo. - * - * @throws Exception la exception - */ - public void sendWithAttachment() throws Exception { - try { - if ((mail.getTo() == null) || (mail.getSubject() == null) || (mail.getCont() == null)) { - throw new Exception(mail.getTo() + " " + mail.getSubject() + " " + (mail.getCont() != null)); - } - String [] correosl=mail.getTo().split(","); - LogMailBeanLocal beanLocal = (LogMailBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/logMailBean"); - for(String para:correosl){ - try{ - mail.setTo(para); - APPLogger.getLogger().info("Mensaje a enviar " + mail.getSubject() + " para " + mail.getTo()); - mail.send(); - try { - Map mapaMail = new HashMap(); - mapaMail.put("to", mail.getTo()); - mapaMail.put("subject", mail.getSubject()); - mapaMail.put("cont", mail.getCont()); - mapaMail.put("estado", "Y"); - beanLocal.logMail(mapaMail); - } catch (Exception e) { - e.getMessage(); - APPLogger.getLogger().error("1.-Excepcion en seteo mail"); - } - - }catch (Exception e) { - APPLogger.getLogger().warn("El mensaje" + mail.getSubject() + " para " + mail.getTo() + " no se ha podido enviar "); - APPLogger.getLogger().error(e, e); - - try { - //LogMailBeanLocal beanLocal = (LogMailBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/logMailBean"); - Map mapaMail = new HashMap(); - mapaMail.put("to", mail.getTo()); - mapaMail.put("subject", mail.getSubject()); - mapaMail.put("cont", mail.getCont()); - mapaMail.put("estado", "N"); - mapaMail.put("error", e.getMessage()); - beanLocal.logMail(mapaMail); - } catch (Exception e2) { - e.getMessage(); - APPLogger.getLogger().error("2.-Excepcion en seteo mail"); - } - } - } - }catch (NamingException e) { - e.getMessage(); - APPLogger.getLogger().error("Servicio no encontrado"); - } - catch (Exception e) { - e.getMessage(); - APPLogger.getLogger().error("Excepcion al enviar mail"); - } - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 107e74b..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/mail/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases para el envío de correos electrónicos - */ -package com.fp.bpmlib.mail; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/entries deleted file mode 100644 index 77f5664..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MessageManager.java -file - - - - -2022-07-28T03:40:45.962817Z -756c8350b88ad95f51bf0d16088947b0 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2136 - -package-info.java -file - - - - -2022-07-28T03:40:45.963817Z -ee13f1209f1d4af913b83c46782abf3f -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -103 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.netbeans-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.netbeans-base deleted file mode 100644 index 79f2dc0..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.netbeans-base +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.messages; - -import java.util.Map; -import java.util.Map.Entry; - -import com.fp.bpmlib.BPMException; -import com.fp.common.messages.MessageUtil; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; - -// TODO: Auto-generated Javadoc -/** - * Class MessageManager encargada de. - * - * @author gfiallos - */ -public class MessageManager { - - /** El valor de msg. */ - private MessageUtil msg; - - /** - * Crea una nueva instancia de message manager. - * - * @param pMessageCode the message code - * @param pLanguage the language - * @param pReferences the references - * @throws Exception la exception - */ - public MessageManager(Integer pMessageCode, String pLanguage, Map pReferences) throws Exception { - TgeneMessageTemplatesDescKey tk = new TgeneMessageTemplatesDescKey(pMessageCode, pLanguage); - TgeneMessageTemplatesDesc t = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), tk); - if (t == null) { - throw new BPMException("BPM-0011", "NO SE HA PODIDO ENCONTRAR LA PLANTILLA {0}", pMessageCode); - } - String template = t.getTemplate(); - this.msg = new MessageUtil(pLanguage, template); - if (pReferences != null) { - for (Entry e : pReferences.entrySet()) { - this.msg.setValue(e.getKey(), e.getValue()); - } - } - } - - /** - * Fija el valor de value. - * - * @param pName the name - * @param pValue the value - * @throws Exception la exception - */ - public void setValue(String pName, Object pValue) throws Exception { - this.msg.setValue(pName, pValue); - } - - /** - * Obtiene el valor de message. - * - * @return Valor de message - * @throws Exception la exception - */ - public String getMessage() throws Exception { - return this.msg.getMessage(); - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.svn-base deleted file mode 100644 index 79f2dc0..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/MessageManager.java.svn-base +++ /dev/null @@ -1,69 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.messages; - -import java.util.Map; -import java.util.Map.Entry; - -import com.fp.bpmlib.BPMException; -import com.fp.common.messages.MessageUtil; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; - -// TODO: Auto-generated Javadoc -/** - * Class MessageManager encargada de. - * - * @author gfiallos - */ -public class MessageManager { - - /** El valor de msg. */ - private MessageUtil msg; - - /** - * Crea una nueva instancia de message manager. - * - * @param pMessageCode the message code - * @param pLanguage the language - * @param pReferences the references - * @throws Exception la exception - */ - public MessageManager(Integer pMessageCode, String pLanguage, Map pReferences) throws Exception { - TgeneMessageTemplatesDescKey tk = new TgeneMessageTemplatesDescKey(pMessageCode, pLanguage); - TgeneMessageTemplatesDesc t = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), tk); - if (t == null) { - throw new BPMException("BPM-0011", "NO SE HA PODIDO ENCONTRAR LA PLANTILLA {0}", pMessageCode); - } - String template = t.getTemplate(); - this.msg = new MessageUtil(pLanguage, template); - if (pReferences != null) { - for (Entry e : pReferences.entrySet()) { - this.msg.setValue(e.getKey(), e.getValue()); - } - } - } - - /** - * Fija el valor de value. - * - * @param pName the name - * @param pValue the value - * @throws Exception la exception - */ - public void setValue(String pName, Object pValue) throws Exception { - this.msg.setValue(pName, pValue); - } - - /** - * Obtiene el valor de message. - * - * @return Valor de message - * @throws Exception la exception - */ - public String getMessage() throws Exception { - return this.msg.getMessage(); - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 2d01dd9..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/messages/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases para el manejo de Plantillas y mensajes - */ -package com.fp.bpmlib.messages; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/entries deleted file mode 100644 index 5ad45cf..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:45.500815Z -d3ee53809e70088e84dcd8e85516f460 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -120 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index ff34c5a..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/metadata/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los utilitarios para el transporte de la información de los Flujos - */ -package com.fp.bpmlib.metadata; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/entries deleted file mode 100644 index f6aecab..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/entries +++ /dev/null @@ -1,284 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -groups -dir - -inbox -dir - -solicitud -dir - -task -dir - -package-info.java -file - - - - -2022-07-28T03:40:45.935817Z -11178781d4f7ef811cee5600ac58314e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -100 - -monitor -dir - -TransactionLogResults.java -file - - - - -2022-07-28T03:40:45.935817Z -e38561b1139ca1d4dfb8c63414b6d75a -2014-12-16T05:58:36.188647Z -3520 -gbenavides - - - - - - - - - - - - - - - - - - - - - -4075 - -rules -dir - -EndedFlowDetail.java -file - - - - -2022-07-28T03:40:45.935817Z -6e62086abf0236da3519eb1dca407709 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5484 - -EndedFlows.java -file - - - - -2022-07-28T03:40:45.936817Z -4dbeff082de606c6c95834afef0fef4c -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3683 - -TransactionsLog.java -file - - - - -2022-07-28T03:40:45.936817Z -6cb5242779b9b12724042f6789a6f6ff -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3019 - -RuleTrigger.java -file - - - - -2022-07-28T03:40:45.936817Z -f4fcf5078b63af8b69d4cd3579e5267a -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -785 - -EndedFlowsResults.java -file - - - - -2022-07-28T03:40:45.936817Z -9f0cfb477d25e0bd10c3c39d13c817de -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5601 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowDetail.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowDetail.java.svn-base deleted file mode 100644 index 6a0f550..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowDetail.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmTaskComments; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionKey; - -// TODO: Auto-generated Javadoc -/** - * Class EndedFlowDetail encargada de. - * - * @author gfiallos - */ -public class EndedFlowDetail extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** Constante SQL. */ - private static final String SQL = "SELECT " - + " a.activityname,a.sequence,a.usercode,a.groupcode,a.created,a.completed,a.expectedtime,a.response ,a.module,a.transaction,a.version, ( " - + " SELECT " + " z.name " + " FROM " + " tgenetransaction z " + " WHERE " - + " z.transactionmodule=a.module " + " AND z.transactioncode=a.transaction " - + " AND z.transactionversion=a.version),a.taskid " + " FROM " + " tbpmactivities a " + " WHERE " - + " a.journalid=:journal " + " ORDER BY " + " created"; - - /** El valor de id. */ - private String id; - - /** El valor de resp. */ - private Response resp; - - /** El valor de sdf1. */ - private SimpleDateFormat sdf1; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - this.sdf1 = new SimpleDateFormat("dd-MM-yyyy HH:mm"); - this.id = pQueryRequest.getString("ID"); - this.resp = pQueryRequest.getResponse(); - TgeneTransactionLog tl = TgeneTransactionLog.find(PersistenceHelper.getEntityManager(), this.id); - this.resp.put("DATA", tl.getAditionaldata()); - TgeneTransaction t = TgeneTransaction.find(PersistenceHelper.getEntityManager(), - new TgeneTransactionKey(tl.getTransactionmodule(), tl.getTransactioncode(), tl.getTransactionversion())); - this.resp.put("TRN", t.getName()); - this.manageActivities(); - return pQueryRequest; - } - - /** - * Manage activities. - * - * @throws Exception la exception - */ - public void manageActivities() throws Exception { - Query q = PersistenceHelper.createNativeQuery(EndedFlowDetail.SQL); - q.setParameter("journal", this.id); - @SuppressWarnings("unchecked") - List l = q.getResultList(); - List> data = new ArrayList>(); - - DecimalFormat df = new DecimalFormat("00"); - for (Object obj : l) { - Map rec = new HashMap(); - Object[] oData = (Object[]) obj; - rec.put("activityname", oData[0] + " (" + oData[11] + ")"); - rec.put("sequence", oData[1]); - rec.put("usercode", oData[2]); - rec.put("groupcode", oData[3]); - Timestamp completed = ((Timestamp) oData[5]); - Timestamp created = ((Timestamp) oData[4]); - rec.put("created", this.sdf1.format(created)); - rec.put("completed", this.sdf1.format(completed)); - Long exp = Long.valueOf("" + oData[6]) / 1000; - BigDecimal aux = new BigDecimal(exp / 60); - rec.put("expectedtime", df.format(aux.intValue()) + ":" + df.format(exp % 60)); - Long real = Long.valueOf("" + (completed.getTime() - created.getTime())) / 1000; - aux = new BigDecimal(real / 60); - rec.put("realtime", df.format(aux.intValue()) + ":" + df.format(real % 60)); - rec.put("response", oData[7]); - rec.put("obs", this.getComments(Long.valueOf("" + oData[12]))); - data.add(rec); - } - this.resp.put("TBPMACTIVITIES", data); - } - - /** - * Obtiene el valor de comments. - * - * @param pTID the tID - * @return Valor de comments - * @throws Exception la exception - */ - private String getComments(long pTID) throws Exception { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - try { - String jpql = "from TbpmTaskComments tc where tc.taskid=:tid"; - Query q = PersistenceHelper.createQuery(jpql); - q.setParameter("tid", pTID); - @SuppressWarnings("unchecked") - List tc = q.getResultList(); - for (TbpmTaskComments tbpmTaskComments : tc) { - pw.println(tbpmTaskComments.getUsercode() + " : " + this.sdf1.format(tbpmTaskComments.getAdded())); - pw.println(tbpmTaskComments.getText()); - } - } finally { - pw.close(); - } - return sw.toString(); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlows.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlows.java.svn-base deleted file mode 100644 index 8433eca..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlows.java.svn-base +++ /dev/null @@ -1,102 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -// TODO: Auto-generated Javadoc -/** - * Clase que se encarga de presentar en el lov las transacciones que contiene la tabla TgeneTransactionLog. - * - * @author gfiallos - */ - -public class EndedFlows extends QueryRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que presenta la lista de transacciones en vuelo. - * - * @param qr the qr - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - if(qr.isJsf()){ - - }else{ - - } - Response response = qr.getResponse(); - - StringBuilder jpql = new StringBuilder(400); - jpql.append("select t.pk.transactionmodule,t.pk.transactioncode,t.pk.transactionversion,t.name " - + "from TgeneTransaction t where exists ( select 1 " - + "from TgeneTransactionLog r where exists(select 1 from TbpmProcessInstance o " - + "where o.pk = r.pk and coalesce(o.finalized, 'N')='Y') and t.pk.transactionmodule=r.transactionmodule " - + "and t.pk.transactioncode=r.transactioncode and t.pk.transactionversion=r.transactionversion ) "); - - //Ingresa y verifica el frontend - Query qry = this.processQuery(qr, jpql); - - - List ltransaction = qry.getResultList(); - List> detailgrid = new ArrayList>(); - for (int i = 0; i < ltransaction.size(); i++) { - Map detail = new HashMap(); - Object[] datos = (Object[]) ltransaction.get(i); - detail.put("pk_transactionmodule", datos[0]); - detail.put("pk_transactioncode", datos[1]); - detail.put("pk_transactionversion", datos[2]); - detail.put("name", datos[3]); - // detail.put("solicitudenumber", datos[4]); - detailgrid.add(detail); - } - response.put("TGENETRANSACTION", detailgrid); - return qr; - } - - /** - * Direcciona la consulta jsf y dojo - * @param qr - * @param jpql - * @return - * @throws Exception - */ - private Query processQuery(QueryRequest qr, StringBuilder jpql) throws Exception { - Query qry = null; - if(qr.isJsf()){ - DtoQuery dto = (DtoQuery)qr.getQueryTables().get("TGENETRANSACTION"); - GeneralQuery.addParametersJSF(jpql, dto); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParametersJSF(jpql, dto, qry); - }else{ - QueryBean qb = (QueryBean) qr.get("TGENETRANSACTION"); - Map criteria = new HashMap(); - GeneralQuery.addParameters(qb, jpql, criteria); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - /* - * qry.setParameter("init", qr.getDate("creationdate")); qry.setParameter("end", qr.getDate("enddate")); - */ - GeneralQuery.setParameters(qb, criteria, qry); - } - return qry; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowsResults.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowsResults.java.svn-base deleted file mode 100644 index daada8c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/EndedFlowsResults.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmProcessInstance; - -// TODO: Auto-generated Javadoc -/** - * Clase que se encarga de presentar las transactiones que estan en vuelo en la TGENETRANSACTIONLOG. - * - * @author gfiallos - */ -public class EndedFlowsResults extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que presenta las transacciones en vuelo. - * - * @param qr the qr - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Response response = qr.getResponse(); - - Query qry = this.prepareQuery(qr); - - List ltransactionLog = qry.getResultList(); - List> detailgrid = new ArrayList>(); - for (int i = 0; i < ltransactionLog.size(); i++) { - Map detail = new HashMap(); - Object[] datos = (Object[]) ltransactionLog.get(i); - detail.put("solicitudenumber", datos[0]); - detail.put("usercode", datos[1]); - // detail.put("terminalcode", datos[1]); - detail.put("aditionaldata", datos[5]); - TbpmProcessInstance pi = (TbpmProcessInstance) datos[6]; - detail.put("id", pi.getPk()); - detail.put("init", pi.getCreationdate()); - detail.put("end", pi.getEnddate()); - detail.put("duration", - FormatDates.getInstance().getTimeFormat().format(new Date(pi.getEnddate().getTime() - pi.getCreationdate().getTime()))); - detailgrid.add(detail); - } - response.put("TRANSACTIONLOG", detailgrid); - return qr; - } - - /** - * Prepare query. - * - * @param qr the qr - * @return query - * @throws Exception la exception - */ - private Query prepareQuery(QueryRequest qr) throws Exception { - StringBuilder jpql = new StringBuilder(300); - jpql.append("select t.solicitudenumber, t.usercode,t.terminalcode,t.duration, t.realdate as time,t.aditionaldata,o " - + " from TgeneTransactionLog t ,TbpmProcessInstance o" - + " where t.pk in (select i.pk from TbpmProcessInstance i where coalesce(i.finalized, 'N')='Y') and t.pk = o.pk "); - String creation = "" + qr.get("creationdate"); - creation = (creation.compareTo("") == 0) ? null : creation; - String enddate = "" + qr.get("enddate"); - enddate = (enddate.compareTo("") == 0) ? null : enddate; - if ((creation != null) && (enddate != null)) { - jpql.append(" and o.creationdate>=:creationdate "); - jpql.append(" and o.enddate<=:enddate "); - } - return this.manageParameters(qr, jpql, creation, enddate); - } - - /** - * Manage parameters. - * - * @param qr the qr - * @param jpql the jpql - * @param creation the creation - * @param enddate the enddate - * @return query - * @throws Exception la exception - */ - private Query manageParameters(QueryRequest qr, StringBuilder jpql, String creation, String enddate) throws Exception { - - //Verifica consulta frontend jsf/dojo - Query qry = this.processQuery(qr, jpql); - - if ((creation != null) && (enddate != null)) { - qry.setParameter("creationdate", (Date)qr.get("creationdate")); - APPDates ad = new APPDates((Date) qr.get("enddate")); - ad.addField(Calendar.DAY_OF_YEAR, 1); - qry.setParameter("enddate", ad.getDate()); - } - return qry; - } - - /** - * Metodo que maneja la peticion del frontend jsf/dojo - * @param qr - * @param jpql - * @return - * @throws Exception - */ - private Query processQuery(QueryRequest qr, StringBuilder jpql) throws Exception{ - Query qry = null; - if(qr.isJsf()){ - DtoQuery dto = (DtoQuery)qr.getQueryTables().get("TRANSACTIONLOG"); - GeneralQuery.addParametersJSF(jpql, dto); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParametersJSF(jpql, dto, qry); - }else{ - QueryBean qb = (QueryBean) qr.get("TRANSACTIONLOG"); - Map criteria = new HashMap(); - GeneralQuery.addParameters(qb, jpql, criteria); - jpql.append(",creationdate"); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParameters(qb, criteria, qry); - } - return qry; - } - /** Sentencia que consulta el nombre del usuario. */ - public static final String SQL = "select a.name from TcustPersonDetail a ,TsafeUser b" + " where a.pk.personcode = b.personcode" - + " and b.pk=:usercode" + " and a.pk.dateto=:dateto"; -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/RuleTrigger.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/RuleTrigger.java.svn-base deleted file mode 100644 index 85fb253..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/RuleTrigger.java.svn-base +++ /dev/null @@ -1,34 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Clase encargada de disparar reglas dada una petición de consulta. - * - * @author gfiallos - */ -public class RuleTrigger extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pRequest the request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - //GuvnorClient gc = new GuvnorClient(this.rule, pRequest.getCompany()); - //gc.eval(pRequest); - return pRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionLogResults.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionLogResults.java.svn-base deleted file mode 100644 index 22bef76..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionLogResults.java.svn-base +++ /dev/null @@ -1,101 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -// TODO: Auto-generated Javadoc -/** - * Clase que se encarga de presentar las transactiones que estan en vuelo en la TGENETRANSACTIONLOG. - * - * @author jarias - */ -public class TransactionLogResults extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que presenta las transacciones en vuelo. - * - * @param qr the qr - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Response response = qr.getResponse(); - - StringBuilder jpql = new StringBuilder(300); - jpql.append("select t.usercode,t.terminalcode,t.duration," + " t.realdate as time,t.aditionaldata,o.processid,o.sessionid,t.solicitudenumber " - + " from TgeneTransactionLog t ,TbpmProcessInstance o" - + " where t.pk in (select i.pk from TbpmProcessInstance i where coalesce(i.finalized, 'N')='N')" + " and t.pk = o.pk "); - Query qry = null; - if (qr.isJsf()) { - DtoQuery dto = qr.getQueryTables().get("TRANSACTIONLOG"); - GeneralQuery.addParametersJSF(jpql, dto, false); - jpql.append(" order by t.realdate desc"); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParametersJSF(jpql, dto, qry); - } else { - QueryBean qb = (QueryBean) qr.get("TRANSACTIONLOG"); - Map criteria = new HashMap(); - GeneralQuery.addParameters(qb, jpql, criteria); - qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParameters(qb, criteria, qry); - } - - List ltransactionLog = qry.getResultList(); - List> detailgrid = new ArrayList>(); - for (int i = 0; i < ltransactionLog.size(); i++) { - Map detail = new HashMap(); - Object[] datos = (Object[]) ltransactionLog.get(i); - detail.put("usercode", datos[0]); - detail.put("name", this.consulta(datos[0].toString())); - detail.put("terminalcode", datos[1]); - detail.put("duration", datos[2]); - detail.put("time", datos[3]); - detail.put("aditionaldata", datos[4]); - detail.put("processid", datos[5]); - detail.put("sessionid", datos[6]); - detail.put("solicitudenumber", datos[7]); - detailgrid.add(detail); - } - response.put("TRANSACTIONLOG", detailgrid); - return qr; - } - - /** - * Metodo que me retorna el nombre de usuario. - * - * @param usercode the usercode - * @return nombre del usuario - * @throws Exception la exception - */ - private String consulta(String usercode) throws Exception { - javax.persistence.Query qr = PersistenceHelper.getEntityManager().createQuery(TransactionLogResults.SQL); - qr.setParameter("usercode", usercode); - qr.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - return (String) qr.getSingleResult(); - - } - - /** Sentencia que consulta el nombre del usuario. */ - public static final String SQL = "select a.name from TcustPersonDetail a ,TsafeUser b" + " where a.pk.personcode = b.personcode" - + " and b.pk=:usercode" + " and a.pk.dateto=:dateto"; -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionsLog.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionsLog.java.svn-base deleted file mode 100644 index 8d1cc02..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/TransactionsLog.java.svn-base +++ /dev/null @@ -1,74 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -// TODO: Auto-generated Javadoc -/** - * Clase que se encarga de presentar en el lov las transacciones que contiene la tabla TgeneTransactionLog. - * - * @author jarias - */ -public class TransactionsLog extends QueryRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que presenta la lista de transacciones en vuelo. - * - * @param qr the qr - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Response response = qr.getResponse(); - QueryBean qb = (QueryBean) qr.get("TGENETRANSACTION"); - StringBuilder jpql = new StringBuilder(400); - jpql.append("select t.pk.transactionmodule,t.pk.transactioncode,t.pk.transactionversion,t.name " - + "from TgeneTransaction t where exists ( select 1 " - + "from TgeneTransactionLog r where exists(select 1 from TbpmProcessInstance o " - + "where o.pk = r.pk and coalesce(o.finalized, 'N')='N') and t.pk.transactionmodule=r.transactionmodule " - + "and t.pk.transactioncode=r.transactioncode and t.pk.transactionversion=r.transactionversion ) "); - Map criteria = new HashMap(); - GeneralQuery.addParameters(qb, jpql, criteria); - Query qry = PersistenceHelper.getEntityManager().createQuery(jpql.toString()); - GeneralQuery.setParameters(qb, criteria, qry); - List ltransaction = qry.getResultList(); - List> detailgrid = new ArrayList>(); - for (int i = 0; i < ltransaction.size(); i++) { - Map detail = new HashMap(); - Object[] datos = (Object[]) ltransaction.get(i); - detail.put("pk_transactionmodule", datos[0]); - detail.put("pk_transactioncode", datos[1]); - detail.put("pk_transactionversion", datos[2]); - detail.put("name", datos[3]); - detailgrid.add(detail); - } - if (ltransaction.isEmpty()) { - Map detail = new HashMap(); - detail.put("pk_transactionmodule", ""); - detail.put("pk_transactioncode", ""); - detail.put("pk_transactionversion", ""); - detail.put("name", ""); - detailgrid.add(detail); - } - response.put("TGENETRANSACTION", detailgrid); - return qr; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index ef5d708..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes para las transacciones de consulta - */ -package com.fp.bpmlib.query; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/entries deleted file mode 100644 index f9bb13b..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -UserLov.java -file - - - - -2022-07-28T03:40:45.846816Z -ccf76d12706998c63ff274ca57d144c5 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1957 - -package-info.java -file - - - - -2022-07-28T03:40:45.847816Z -d92d37db555d6b222d00dd8c5266a8eb -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -92 - -UserToGroup.java -file - - - - -2022-07-28T03:40:45.847816Z -7b1264b6c843f24dabea3bbc782406c4 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2431 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserLov.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserLov.java.svn-base deleted file mode 100644 index 1633431..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserLov.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.bpmlib.query.groups; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Lista de Valores de Usuarios - * - * @author gfiallos - * - */ -public class UserLov extends QueryRule { - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Consulta - */ - private static final String SQL = "select u.usercode, (select d.name from tcustpersondetail d where d.dateto=u.dateto and d.personcode=u.personcode)" - + " from tsafeuserdetail u where u.isuserbpm='Y' and u.dateto=:dateto and not exists( " - + " select 1 from tbpmgroupsusers i where i.companycode=:cia and i.groupcode=:group and i.usercode=u.usercode)"; - - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - QueryBean qb = (QueryBean) pRequest.get("TSAFEUSERDETAILLOV"); - Query qry = PersistenceHelper.createNativeQuery(UserLov.SQL); - qry.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - qry.setParameter("cia", pRequest.getCompany()); - qry.setParameter("group", qb.getCriteriaValue("group")); - @SuppressWarnings("unchecked") - List l = qry.getResultList(); - List> data = new ArrayList>(); - for (Object[] objects : l) { - Map m = new HashMap(); - m.put("pk_usercode", objects[0]); - m.put("name", objects[1]); - data.add(m); - } - pRequest.getResponse().put("TSAFEUSERDETAILLOV", data); - return pRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserToGroup.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserToGroup.java.svn-base deleted file mode 100644 index 9732f77..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/UserToGroup.java.svn-base +++ /dev/null @@ -1,64 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.bpmlib.query.groups; - -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pgeneral.safe.TsafeUser; - -// TODO: Auto-generated Javadoc -/** - * Class UserToGroup encargada de. - * - * @author BPTWPA - */ -public class UserToGroup extends QueryRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - @SuppressWarnings("unchecked") - List lobjects = (List) response.get("TBPMGROUPSUSERS"); - if (!lobjects.isEmpty()) { - for (Object obj : lobjects) { - TbpmGroupsUsers tbpmGroupsUsers = (TbpmGroupsUsers) obj; - if (tbpmGroupsUsers.getPk().getUsercode() != null) { - TsafeUser tsafeUser = TsafeUser.find(em, tbpmGroupsUsers.getPk().getUsercode()); - if (tsafeUser != null) { - TcustPersonDetailKey custPersonDetailKey = new TcustPersonDetailKey(tsafeUser.getPersoncode(), - FormatDates.getDefaultExpiryTimestamp()); - TcustPersonDetail tcutPersonDetail = TcustPersonDetail.find(em, custPersonDetailKey); - tbpmGroupsUsers.addAddtionalInfo("username", ((tcutPersonDetail == null) ? "" : tcutPersonDetail.getName())); - } - } - } - } - return pQueryRequest; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 88d6bc6..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/groups/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases para el manejo de Grupos - */ -package com.fp.bpmlib.query.groups; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/entries deleted file mode 100644 index e424b58..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TransactionList.java -file - - - - -2022-07-28T03:40:45.864817Z -f8a31d97d3c51dacd5859e59823775ea -2014-10-30T07:13:11.781809Z -2213 -wpatino - - - - - - - - - - - - - - - - - - - - - -6642 - -package-info.java -file - - - - -2022-07-28T03:40:45.864817Z -ca7e9d1d5e69aa72689e0b21071541f1 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -98 - -TaskDetail.java -file - - - - -2022-07-28T03:40:45.864817Z -34698e18d7474994fb7dd3efde97afc7 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1911 - -TransactionTasksGroup.java -file - - - - -2022-07-28T03:40:45.864817Z -5de0dc42fcea8a8217aefc7cecb540e0 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2755 - -TransactionTasks.java -file - - - - -2022-07-28T03:40:45.864817Z -324b09f062135890f1ce0ddcb2ee25fb -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3640 - -TransactionListGroup.java -file - - - - -2022-07-28T03:40:45.865817Z -785ebda9459959164f622add267c0318 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3226 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.netbeans-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.netbeans-base deleted file mode 100644 index 364bc13..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.netbeans-base +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.Map; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TaskDetail encargada de mostrar el detalle de una tarea. - * - * @author gfiallos - */ -public class TaskDetail extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - long tid = pQueryRequest.getLong(TaskUtil.BPM_TID); - TaskUtil tu = new TaskUtil(tid); - try { - pQueryRequest.getResponse().put("detail", tu.getDetail(pQueryRequest.getLanguage())); - pQueryRequest.getResponse().put("param", tu.getDestinyData()); - pQueryRequest.getResponse().put("k", tu.getTaskInfo().getKind()); - pQueryRequest.getResponse().put("s", tu.getStatus()); - } finally { - tu.close(); - } - return pQueryRequest; - } - - public static void addTaskDetail(Map mtask, TaskUtil taskUtil, String language) throws Exception { - Response resp = new Response(Response.RESPONSE_OK, ""); - resp.put("detail", taskUtil.getDetail(language)); - resp.put("param", taskUtil.getDestinyData()); - resp.put("k", taskUtil.getTaskInfo().getKind()); - resp.put("s", taskUtil.getStatus()); - - Map param = (Map) resp.get("param"); - param.put("TID", taskUtil.getTid()); - param.put("KIND", resp.get("k")); - - mtask.put("taskDetail", resp); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.svn-base deleted file mode 100644 index 364bc13..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TaskDetail.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.Map; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TaskDetail encargada de mostrar el detalle de una tarea. - * - * @author gfiallos - */ -public class TaskDetail extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - long tid = pQueryRequest.getLong(TaskUtil.BPM_TID); - TaskUtil tu = new TaskUtil(tid); - try { - pQueryRequest.getResponse().put("detail", tu.getDetail(pQueryRequest.getLanguage())); - pQueryRequest.getResponse().put("param", tu.getDestinyData()); - pQueryRequest.getResponse().put("k", tu.getTaskInfo().getKind()); - pQueryRequest.getResponse().put("s", tu.getStatus()); - } finally { - tu.close(); - } - return pQueryRequest; - } - - public static void addTaskDetail(Map mtask, TaskUtil taskUtil, String language) throws Exception { - Response resp = new Response(Response.RESPONSE_OK, ""); - resp.put("detail", taskUtil.getDetail(language)); - resp.put("param", taskUtil.getDestinyData()); - resp.put("k", taskUtil.getTaskInfo().getKind()); - resp.put("s", taskUtil.getStatus()); - - Map param = (Map) resp.get("param"); - param.put("TID", taskUtil.getTid()); - param.put("KIND", resp.get("k")); - - mtask.put("taskDetail", resp); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionList.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionList.java.svn-base deleted file mode 100644 index 63ee297..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionList.java.svn-base +++ /dev/null @@ -1,182 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.kie.api.task.model.Content; -import org.kie.api.task.model.Task; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.Constant; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionKey; - -// TODO: Auto-generated Javadoc -/** - * Class TransactionList encargada de listar las transacciones para el buzn de la persona. - * - * @author gfiallos - */ -public class TransactionList extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de htc. */ - private HumanTaskClient htc = null; - - /** El valor de request. */ - private QueryRequest request; - - List> data = new ArrayList>(); - - /** El valor de trn. */ - private final Map trn = new HashMap(); - - Map mtransaux = new HashMap(); - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - htc = new HumanTaskClient(); - try { - request = pQueryRequest; - if(request.get("codeS")==null) - { - this.addTransactionList(pQueryRequest.getLanguage()); - } - else - { - this.addTransactionList(pQueryRequest.getLanguage(),request.get("codeS").toString()); - } - - Set s = mtransaux.keySet(); - for (String key : s) { - data.add((Map) mtransaux.get(key)); - } - pQueryRequest.getResponse().put("transactions", data); - return pQueryRequest; - } finally { - htc.close(); - } - } - - /** - * Prepara la lista de Tareas. - * - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - private void addTransactionList(String language) throws Exception { - List t = htc.getUnfinishedTasksByUser(request.getUser()); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - TaskUtil tu = new TaskUtil(task, htc); - - TransactionDTO tr = tu.getTransaction(); - Integer count = trn.get(tr.toString()); - if (count == null) { - count = 1; - } else { - count++; - } - trn.put(tr.toString(), count); - - Map mtran = (Map) mtransaux.get(tr.toString()); - if (mtran == null) { - mtran = this.addTransactionData(tu); - mtransaux.put(tr.toString(), mtran); - } - mtran.put("c", count); - - // Adiciona datos de una tarea. - TransactionTasks.addTask(mtran, tu, language); - } - } - - @SuppressWarnings({ "unchecked", "unused", "rawtypes" }) - private void addTransactionList(String language, String codSolicitud) throws Exception { - List t = htc.getUnfinishedTasksByUser(request.getUser()); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - Content c = (Content) obj[1]; - TaskUtil tu = new TaskUtil(task, htc); - - ((SaveRequest)(((Map)tu.getActualData().get("maia")).get("request"))).get("csolicitud"); - TransactionDTO tr = tu.getTransaction(); - if(tu.getActualData().get("maia") instanceof Map) - { - if(((Map)tu.getActualData().get("maia")).get("request") != null) - { - if((((Map)tu.getActualData().get("maia")).get("request")) instanceof SaveRequest) - { - Object csolicitud = ((SaveRequest)(((Map)tu.getActualData().get("maia")).get("request"))).get("csolicitud"); - if(csolicitud!=null){ - String codS = csolicitud.toString(); - if(!codS.equals(codSolicitud)) - { - continue; - } - } - } - } - } - - Integer count = trn.get(tr.toString()); - if (count == null) { - count = 1; - } else { - count++; - } - trn.put(tr.toString(), count); - - Map mtran = (Map) mtransaux.get(tr.toString()); - if (mtran == null) { - mtran = this.addTransactionData(tu); - mtransaux.put(tr.toString(), mtran); - } - mtran.put("c", count); - - // Adiciona datos de una tarea. - TransactionTasks.addTask(mtran, tu, language); - } - } - - private Map addTransactionData(TaskUtil tu) throws Exception { - Map rec = new HashMap(); - TransactionDTO tr = tu.getTransaction(); - rec.put("m", tr.getModule()); - rec.put("t", tr.getTransaction()); - rec.put("v", tr.getVersion()); - rec.put("n", Constant.capitalize(GeneralDescriptions.getTransactiondesc(tr.getModule(), tr.getTransaction(), tr.getVersion()))); - TgeneTransactionKey k = new TgeneTransactionKey(tr.getModule(), tr.getTransaction(), tr.getVersion()); - TgeneTransaction t = TgeneTransaction.find(PersistenceHelper.getEntityManager(), k); - rec.put("p", t.getPage()); - rec.put("name", t.getName()); - rec.put("pjsf", t.getJsfpage()); - rec.put("pjsfurl", t.getJsfpage() + "?m=" + tr.getModule() + "&t=" + tr.getTransaction() + "&v=" + tr.getVersion()); - rec.put("q", t.getAutoquery()); - rec.put("f", t.getSignature()); - return rec; - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionListGroup.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionListGroup.java.svn-base deleted file mode 100644 index ea0e1ce..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionListGroup.java.svn-base +++ /dev/null @@ -1,101 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.kie.api.task.model.Task; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.Constant; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TransactionList encargada de listar las transacciones para el buzn de la persona. - * - * @author gfiallos - */ -public class TransactionListGroup extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de htc. */ - private HumanTaskClient htc = null; - - /** El valor de trn. */ - private final Map trn = new HashMap(); - - /** El valor de trn dto. */ - private final Map trnDTO = new HashMap(); - - /** El valor de request. */ - private QueryRequest request; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - htc = new HumanTaskClient(); - try { - request = pQueryRequest; - this.prepareList(); - List> data = new ArrayList>(); - for (Entry e : trn.entrySet()) { - Map rec = new HashMap(); - rec.put("c", e.getValue()); - TransactionDTO tr = trnDTO.get(e.getKey()); - rec.put("m", tr.getModule()); - rec.put("t", tr.getTransaction()); - rec.put("v", tr.getVersion()); - rec.put("n", Constant.capitalize(GeneralDescriptions.getTransactiondesc(tr.getModule(), tr.getTransaction(), tr.getVersion()))); - data.add(rec); - } - pQueryRequest.getResponse().put("transactions", data); - return pQueryRequest; - } finally { - htc.close(); - } - } - - /** - * Prepara la lista de Tareas. - * - * @throws Exception la exception - */ - private void prepareList() throws Exception { - if (request.get("groupId") == null) { - return; - } - List t = htc.getTasksByGroup(request.getString("groupId"), "%"); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - TaskUtil tu = new TaskUtil(task, htc); - TransactionDTO tr = tu.getTransaction(); - Integer count = trn.get(tr.toString()); - if (count == null) { - count = 1; - } else { - count++; - } - trn.put(tr.toString(), count); - trnDTO.put(tr.toString(), tr); - } - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasks.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasks.java.svn-base deleted file mode 100644 index f7dada5..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasks.java.svn-base +++ /dev/null @@ -1,93 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.kie.api.task.model.Task; - -import com.fp.bpmlib.db.BPMProperties; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -/** - * Class TransactionTasks encargada de consultar las Tareas por transaccin. - * - * @author gfiallos - */ -public class TransactionTasks extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - PropertiesHandler ph = BPMProperties.getInstance(); - HumanTaskClient htc = new HumanTaskClient(); - try { - List t = htc.getUnfinishedTasksByUser(pQueryRequest.getUser()); - List> data = new ArrayList>(); - TransactionDTO trnP = new TransactionDTO(pQueryRequest.getTransactionModule(), pQueryRequest.getTransactionCode(), - pQueryRequest.getTransactionVersion()); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - TaskUtil tu = new TaskUtil(task, htc); - TransactionDTO trn1 = tu.getTransaction(); - if (trn1.compareTo(trnP) != 0) { - continue; - } - Map rec = new HashMap(); - rec.put("tid", tu.getTid()); - rec.put("i", - ph.getStringValue(BPMProperties.INBOX_ICON_PATH) + tu.getStatus() + ph.getStringValue(BPMProperties.INBOX_ICON_EXTENSION)); - rec.put("c", "w" + task.getTaskData().getWorkItemId()); - rec.put("d", tu.getSubject()); - Map m = new HashMap(); - rec.put("desc", m); - m.put("c", "t" + tu.getTid()); - m.put("d", null); - data.add(rec); - } - pQueryRequest.getResponse().put("tasks", data); - return pQueryRequest; - } finally { - htc.close(); - } - } - - @SuppressWarnings("unchecked") - public static void addTask(Map mtran, TaskUtil taskUtil, String language) throws Exception { - PropertiesHandler ph = BPMProperties.getInstance(); - Map rec = new HashMap(); - rec.put("tid", taskUtil.getTid()); - rec.put("i", ph.getStringValue(BPMProperties.INBOX_ICON_PATH) + taskUtil.getStatus() + ph.getStringValue(BPMProperties.INBOX_ICON_EXTENSION)); - rec.put("c", "w" + taskUtil.getWorkItemId()); - rec.put("d", taskUtil.getSubject()); - rec.put("logsolicitude",taskUtil.getRequest().get("logsolicitude")); - List> ltasks = null; - if (mtran.get("tasks") == null) { - ltasks = new ArrayList<>(); - mtran.put("tasks", ltasks); - } else { - ltasks = (List>) mtran.get("tasks"); - } - TaskDetail.addTaskDetail(rec, taskUtil, language); - ltasks.add(rec); - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasksGroup.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasksGroup.java.svn-base deleted file mode 100644 index 3b2a86e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/TransactionTasksGroup.java.svn-base +++ /dev/null @@ -1,75 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.inbox; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.kie.api.task.model.Task; - -import com.fp.bpmlib.db.BPMProperties; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TransactionTasks encargada de consultar las Tareas por transaccin. - * - * @author gfiallos - */ -public class TransactionTasksGroup extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - PropertiesHandler ph = BPMProperties.getInstance(); - HumanTaskClient htc = new HumanTaskClient(); - try { - List t = htc.getTasksByGroup(pQueryRequest.getString("groupId"), pQueryRequest.getString("cri")); - List> data = new ArrayList>(); - TransactionDTO trnP = new TransactionDTO(pQueryRequest.getTransactionModule(), pQueryRequest.getTransactionCode(), - pQueryRequest.getTransactionVersion()); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - TaskUtil tu = new TaskUtil(task, htc); - TransactionDTO trn1 = tu.getTransaction(); - if (trn1.compareTo(trnP) != 0) { - continue; - } - Map rec = new HashMap(); - rec.put("tid", tu.getTid()); - rec.put("logsolicitude",tu.getRequest().get("logsolicitude")); - rec.put("i", - ph.getStringValue(BPMProperties.INBOX_ICON_PATH) + tu.getStatus() + ph.getStringValue(BPMProperties.INBOX_ICON_EXTENSION)); - rec.put("c", "w" + tu.getWorkItemId()); - rec.put("d", tu.getSubject()); - Map m = new HashMap(); - rec.put("desc", m); - m.put("c", "t" + tu.getTid()); - m.put("d", null); - data.add(rec); - } - pQueryRequest.getResponse().put("tasks", data); - return pQueryRequest; - } finally { - htc.close(); - } - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 904d4b5..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/inbox/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes de consulta para la Agenda - */ -package com.fp.bpmlib.query.inbox; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/entries deleted file mode 100644 index 7f685ef..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FlowMonitor.java -file - - - - -2022-07-28T03:40:45.913817Z -3d5f728ccc83abc92e6e1936fb1dec8c -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2849 - -FlowActivitySave.java -file - - - - -2022-07-28T03:40:45.913817Z -29b7200b0c04bad3e45dcc0cc3a15ec2 -2014-12-17T13:06:41.233359Z -3580 -gbenavides - - - - - - - - - - - - - - - - - - - - - -7132 - -package-info.java -file - - - - -2022-07-28T03:40:45.913817Z -91e4a84136eef9a640feb73f8c133901 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -110 - -FlowEnd.java -file - - - - -2022-07-28T03:40:45.913817Z -a6276b3d4b3c03ed416fea3e114e6090 -2014-12-16T10:20:52.870795Z -3535 -gbenavides - - - - - - - - - - - - - - - - - - - - - -11524 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowActivitySave.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowActivitySave.java.svn-base deleted file mode 100644 index 4ee36a7..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowActivitySave.java.svn-base +++ /dev/null @@ -1,169 +0,0 @@ -package com.fp.bpmlib.query.monitor; - -import java.io.Serializable; -import java.sql.Timestamp; -import java.util.Map; - -import javax.persistence.Query; - -import org.apache.log4j.Logger; - -import com.fp.dto.json.Serializer; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmActivities; -import com.fp.persistence.pbpm.gene.TbpmActivitiesKey; -import com.fp.simple.dto.TaskInfo; - -/** - * - * @author GBC - * - */ -public class FlowActivitySave { - - /** - * Logger - */ - private static final Logger LOG = Logger.getLogger(FlowActivitySave.class); - - /** - * JPQL TAREA_SUMMARY - */ - private static final String TAREA_SUMMARY = "select t from BAMTaskSummaryImpl t where t.taskId = :idtarea"; - - /* - * Nombre Nulo Tipo - ------------------ -------- ------------- - JOURNALID NOT NULL VARCHAR2(50) --maia - ACTIVITYNAME NOT NULL VARCHAR2(100) --taskdata - SEQUENCE NOT NULL NUMBER(5) --Id de la tarea - USERCODE VARCHAR2(20) -- taskdata usuario responsable //update para actualizar el usuario - GROUPCODE VARCHAR2(30) -- //grupo de la tarea taskinfo - COMPANYCODE NUMBER(10) -- maia***no se encontro - ACTION VARCHAR2(50) --vacio - ADITIONALDATA CLOB --taskinfo //actualizar al completar la tarea - COMPLETED TIMESTAMP(6) -- se actualiza al completar la tarea - CREATED TIMESTAMP(6) -- taskdata - EXPECTEDTIME NUMBER -- taskinfo - TASKJOURNALID VARCHAR2(50) -- revisar en el taskcomplete - RESPONSE VARCHAR2(50) -- taskcomplete - RULECODE VARCHAR2(30) - RULECODEDEFAULT VARCHAR2(30) - STARTED TIMESTAMP(6)-- actualizar en el start - TASKID NUMBER --en el metodo del handles - MODULE VARCHAR2(50) -- taskinfo - TRANSACTION NUMBER --taskinfo - VERSION NUMBER --taskinfo - INTERNALCODE VARCHAR2(50) -- usar el PID - PACKAGENAME VARCHAR2(120) - PACKAGENAMEDEFAULT VARCHAR2(120) - */ - - /** - * Manage activity. - * - * @param pTaskInfo the task info - * @param pActivityname the activityname - * @param pSequence the sequence - * @throws Exception la exception - */ - public static void crearActivity(Map mparam, TaskInfo taskInfo, long idTarea, java.util.Date onCreated) throws Exception { - //(mparam.get("journalid"), pActivityname, pSequence); - SaveRequest saveRequest = (SaveRequest) mparam.get("request"); - TbpmActivitiesKey k = new TbpmActivitiesKey(saveRequest.getJournalId(), taskInfo.getTname(),new Integer(mparam.get("PID").toString())); - TbpmActivities act = new TbpmActivities(); - act.setPk(k); - - if (taskInfo.getAditionalData() != null) { - Serializer ser = new Serializer((Serializable) taskInfo.getAditionalData()); - act.setAditionaldata(ser.toJSON()); - } - act.setGroupcode(taskInfo.getGroupId()); - act.setUsercode(taskInfo.getUserId()); - //act.setCompanycode(mparam.get(key)); - act.setCreated(new Timestamp(onCreated.getTime())); - act.setExpectedtime(taskInfo.getExpectedTime()); - act.setTaskjournalid(taskInfo.getJournalId()); - act.setTaskid(idTarea); - act.setRulecode(taskInfo.getRuleCode()); - act.setRulecodedefault(taskInfo.getRuleCodeDefault()); - act.setInternalcode(mparam.get("PID").toString()); - act.setVersion(taskInfo.getVersion().longValue()); - act.setModule(taskInfo.getModule()); - act.setTransaction(taskInfo.getTransaction().longValue()); - - PersistenceHelper.saveOrUpdate(act); - - - } - - /*** - * Metodo que actualiza la informacion cuando esta es asignada a un usuario - * @param idTarea - * @param userCode - * @throws CommondbException - * @throws Exception - */ - public static void actualizarActividadClaim(long idTarea, String userCode) throws CommondbException, Exception{ - Query q = PersistenceHelper.getEntityManager().createQuery("from TbpmActivities p where p.taskid=:idTarea"); - q.setParameter("idTarea", idTarea); - TbpmActivities act = (TbpmActivities) q.getSingleResult(); - act.setUsercode(userCode); - PersistenceHelper.saveOrUpdate(act); - - } - - /*** - * Metodo que actualiza la informacion cuando esta es seleccionada por el usuario - * @param idTarea - * @throws CommondbException - * @throws Exception - */ - public static void actualizarActividadStart(long idTarea) throws CommondbException, Exception{ - Query q = PersistenceHelper.getEntityManager().createQuery("from TbpmActivities p where p.taskid=:idTarea"); - q.setParameter("idTarea", idTarea); - TbpmActivities act = (TbpmActivities) q.getSingleResult(); - act.setStarted(FormatDates.getInstance().getDataBaseTimestamp()); -// act.setTaskjournalid(taskInfo.getJournalId()); - PersistenceHelper.saveOrUpdate(act); - - } - - /*** - * Metodo que actualiza la informacion de la tarea cuando esta es completada. - * @param idTarea - * @param taskInfo - * @throws CommondbException - * @throws Exception - */ - public static void actualizarActividadComplete(long idTarea, TaskInfo taskInfo) throws CommondbException, Exception{ - Query q = PersistenceHelper.getEntityManager().createQuery("from TbpmActivities p where p.taskid=:idTarea"); - q.setParameter("idTarea", idTarea); - TbpmActivities act = (TbpmActivities) q.getSingleResult(); - act.setCompleted(FormatDates.getInstance().getDataBaseTimestamp()); - act.setTaskjournalid(taskInfo.getJournalId()); - act.setResponse(taskInfo.getResponse()); - PersistenceHelper.saveOrUpdate(act); - - } - - /** - * Metodo q actualiza el usuario cuando esta tarea es reasignada - * @param idTarea - * @param userCode - * @throws CommondbException - * @throws Exception - */ - public static void actualizarActividadDelegate(long idTarea, String userCode) throws CommondbException, Exception{ - Query q = PersistenceHelper.getEntityManager().createQuery("from TbpmActivities p where p.taskid=:idTarea"); - q.setParameter("idTarea", idTarea); - TbpmActivities act = (TbpmActivities) q.getSingleResult(); - act.setUsercode(userCode); - PersistenceHelper.saveOrUpdate(act); - - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowEnd.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowEnd.java.svn-base deleted file mode 100644 index b18f0e7..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowEnd.java.svn-base +++ /dev/null @@ -1,309 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.monitor; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.persistence.EntityManager; - -import org.apache.log4j.Logger; -import org.jbpm.ruleflow.instance.RuleFlowProcessInstance; -import org.kie.api.runtime.process.ProcessContext; - -import com.fp.bpmlib.task.TaskCleaner; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.common.helper.Constant; -import com.fp.dto.data.SaveData; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmProcessInstance; -import com.fp.persistence.pbpm.gene.TbpmProcessVariables; -import com.fp.persistence.pbpm.gene.TbpmProcessVariablesKey; -import com.fp.simple.flow.FlowClass; - -/** - * Class FlowEnd encargada de. - * - * @author gfiallos - */ -public class FlowEnd implements FlowClass { - /** - * Logger - */ - private static final Logger LOG = Logger.getLogger(FlowEnd.class); - - /** El valor de instance. */ - private final TbpmProcessInstance instance; - - /** El valor de . */ - private final RuleFlowProcessInstance p; - - /** El valor de htc. */ - private final HumanTaskClient htc; - - /** El valor de tc. */ - private final TaskCleaner tc; - - private final List lprocessvariable = new ArrayList(); - -// private final List lactivities = new ArrayList(); - - /** - * Crea una nueva instancia de flow end. - * - * @param pContext the context - * @throws Exception la exception - */ - public FlowEnd(Object pContext) throws Exception { - ProcessContext ctx = (ProcessContext) pContext; - p = (RuleFlowProcessInstance) ctx.getProcessInstance(); - long processId = p.getId(); - EntityManager em = PersistenceHelper.getEntityManager(); - instance = TbpmProcessInstance.findByProcessId(em, processId); - // TgeneTransactionLog log = TgeneTransactionLog.find(this.em, this.instance.getPk()); - // this.p = new Process(this.processId, this.instance.getSnapshot()); - htc = new HumanTaskClient(); - tc = new TaskCleaner(); - } - - /** - * Process. - * - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - @Override - public void process() throws Exception { - try { - FlowEnd.LOG.info("Inicia respaldo Flujo"); - Map m = p.getVariables(); - for (Entry e : m.entrySet()) { -// if (e.getKey().compareTo("tasksMetaData") == 0) { -// this.manageActivities((Map) e.getValue()); -// continue; -// } - if (e.getKey().compareTo("maia") == 0) { - for (Entry e1 : ((Map) e.getValue()).entrySet()) { - this.saveVariable(e1.getKey(), e1.getValue()); - } - continue; - } - this.saveVariable(e.getKey(), e.getValue()); - } - // PersistenceHelper.flushTransaction(); -// FlowEnd.LOG.info("Luego de Variables"); - instance.setEnddate(FormatDates.getInstance().getDataBaseDate()); - instance.setFinalized(Constant.STR_Y); - PersistenceHelper.saveOrUpdate(instance); - this.close(); - - SaveRequest sr = SaveData.getSaveRequest(); - sr.putSaveBean("TBPMPROCESSVARIABLES", lprocessvariable); - // sr.putSaveBean("TBPMACTIVITIES", lactivities); - // sr.putSaveBean("TBPMTASKCOMMENTS", ltaskcomments); - - // Eliminar tareas para que no tengan un workitem, puede ser de proceso diferentes. - tc.deleteTasks(); - FlowEnd.LOG.info("Luego de Instancia"); - } catch (Exception e) { - FlowEnd.LOG.error(e, e); - throw e; - } - } - - /** - * Save variable. - * - * @param pKey the key - * @param pValue the value - * @throws Exception la exception - */ - private void saveVariable(String pKey, Object pValue) throws Exception { - TbpmProcessVariablesKey pk = new TbpmProcessVariablesKey(instance.getPk(), pKey); - TbpmProcessVariables var = new TbpmProcessVariables(); - var.setPk(pk); - if (pValue == null) { - return; - } - Map rec = new HashMap(); - rec.put(pKey, pValue); - try { - var.setContent("."); - // Serializer ser = new Serializer((Serializable) rec); - // var.setContent(ser.toJSON()); - // PersistenceHelper.saveOrUpdate(var); - // PersistenceHelper.getEntityManager().persist(var); - var.put("isnew", true); - lprocessvariable.add(var); - } catch (Exception e) { - // no hacer nada - } - - } - -// /** -// * Manage activities. -// * -// * @param pValues the values -// * @throws Exception la exception -// */ -// private void manageActivities(Map pValues) throws Exception { -// FlowEnd.LOG.info("Maneja Actividades"); -// for (Entry e : pValues.entrySet()) { -// @SuppressWarnings("unchecked") -// List l = (List) e.getValue(); -// for (int i = 0; i < l.size(); i++) { -// try { -// TaskInfo taskInfo = l.get(i); -// this.manageActivity(taskInfo, e.getKey(), i); -// } catch (Exception e1) { -// if (e1 instanceof SQLException) { -// throw e1; -// } -// continue; -// } -// } -// } -// FlowEnd.LOG.info("Fin de Maneja Actividades"); -// } - -// /** -// * Manage activity. -// * -// * @param pTaskInfo the task info -// * @param pActivityname the activityname -// * @param pSequence the sequence -// * @throws Exception la exception -// */ -// private void manageActivity(TaskInfo pTaskInfo, String pActivityname, Integer pSequence) throws Exception { -// TbpmActivitiesKey k = new TbpmActivitiesKey(instance.getPk(), pActivityname, pSequence); -// TbpmActivities act = new TbpmActivities(); -// act.setPk(k); -// Field[] fs = TbpmActivities.class.getDeclaredFields(); -// for (Field field : fs) { -// try { -// Object val = BeanManager.getBeanAttributeValue(pTaskInfo, field.getName()); -// val = BeanManager.convertObject(val, BeanManager.getBeanGetterMethod(act, field.getName()).getReturnType()); -// BeanManager.setBeanAttributeValue(act, field.getName(), val); -// } catch (NoSuchMethodException e) { -// continue; -// } -// } -// if (pTaskInfo.getAditionalData() != null) { -// Serializer ser = new Serializer((Serializable) pTaskInfo.getAditionalData()); -// act.setAditionaldata(ser.toJSON()); -// } -// act.setGroupcode(pTaskInfo.getGroupId()); -// act.setUsercode(pTaskInfo.getUserId()); -// act.setExpectedtime(pTaskInfo.getExpectedTime()); -// act.setTaskjournalid(pTaskInfo.getJournalId()); -// act.setTaskid(pTaskInfo.getTaskId()); -// act.setRulecode(pTaskInfo.getRuleCode()); -// act.setRulecodedefault(pTaskInfo.getRuleCodeDefault()); -// act.setTaskid(pTaskInfo.getTaskId()); -// act.setInternalcode("" + pTaskInfo.getInternalCode()); -// -// BAMTaskSummaryImpl bam = this.getBAMTaskSummaryImpl(act.getTaskid()); -// act.setStarted(new Timestamp(bam.getStartDate().getTime())); -// act.setCompleted(new Timestamp(bam.getEndDate().getTime())); -// -// AuditTaskImpl atask = this.getAuditTaskImpl(act.getTaskid()); -// act.setCreated(new Timestamp(atask.getCreatedOn().getTime())); -// -// this.manageTask(act); -// PersistenceHelper.saveOrUpdate(act); -// lactivities.add(act); -// -// } - -// /** -// * Manage task. -// * -// * @param pAct the act -// * @throws Exception la exception -// */ -// private void manageTask(TbpmActivities pAct) throws Exception { -// Task t = htc.getTaskById(pAct.getTaskid()); -// TaskData td = t.getTaskData(); -// pAct.setUsercode(td.getActualOwner().getId()); -// List lc = td.getComments(); -// for (Comment comment : lc) { -// TbpmTaskComments c = new TbpmTaskComments(comment.getId(), new Date(comment.getAddedAt().getTime()), comment.getText(), pAct.getTaskid()); -// c.setUsercode(comment.getAddedBy().getId()); -// PersistenceHelper.saveOrUpdate(c); -// } -// } - - /** - * Close. - * - * @throws Exception la exception - */ - private void close() throws Exception { - // this.p.close(); - htc.close(); - - } - -// /** -// * JPQL TAREA_SUMMARY -// */ -// private static final String TAREA_SUMMARY = "select t from BAMTaskSummaryImpl t where t.taskId = :idtarea"; - -// /** -// * Obtiene el valor de unfinished tasks por Grupo. -// * -// * @param pGroupId the user id -// * @param pCri the cri -// * @return Valor de unfinished tasks -// * @throws Exception la exception -// */ -// public BAMTaskSummaryImpl getBAMTaskSummaryImpl(long idtarea) throws Exception { -// JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); -// EntityManager em = null; -// BAMTaskSummaryImpl dato = null; -// try { -// em = local.getEmf().createEntityManager(); -// Query qry = em.createQuery(TAREA_SUMMARY); -// qry.setParameter("idtarea", idtarea); -// dato = (BAMTaskSummaryImpl) qry.getSingleResult(); -// } catch (NoResultException e) { -// // retorna el objeto en null. -// } finally { -// if (em.isOpen()) { -// em.close(); -// } -// } -// return dato; -// } -// -// /** -// * JPQL TAREA_SUMMARY -// */ -// private static final String TAREA_AUDIT_IMP = "select t from AuditTaskImpl t where t.taskId = :idtarea"; -// -// public AuditTaskImpl getAuditTaskImpl(long idtarea) throws Exception { -// JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); -// EntityManager em = null; -// AuditTaskImpl dato = null; -// try { -// em = local.getEmf().createEntityManager(); -// Query qry = em.createQuery(TAREA_AUDIT_IMP); -// qry.setParameter("idtarea", idtarea); -// dato = (AuditTaskImpl) qry.getSingleResult(); -// } catch (NoResultException e) { -// // retorna el objeto en null. -// } finally { -// if (em.isOpen()) { -// em.close(); -// } -// } -// return dato; -// } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowMonitor.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowMonitor.java.svn-base deleted file mode 100644 index 77839cd..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/FlowMonitor.java.svn-base +++ /dev/null @@ -1,87 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.monitor; - -import java.util.List; -import java.util.Map; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.db.DataHelper; -import com.fp.bpmlib.flow.Monitor; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmProcessInstance; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; - - -/** - * Class FlowMonitor encargada de. - * - * @author gfiallos - */ -public class FlowMonitor extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de pid. */ - private Long pid; - - /** El valor de request. */ - private QueryRequest request; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - this.request = pQueryRequest; - this.pid = this.request.getLong("PID"); - if (this.pid == null) { - throw new BPMException("BPM-0004", "LA INSTANCIA {0} NO ESTA DISPONIBLE O YA FUE FINALIZADA", this.pid); - } - this.manageFlow(); - this.manageOrigin(); - return pQueryRequest; - } - - /** - * Manage flow. - * - * @throws Exception la exception - */ - protected void manageFlow() throws Exception { - Monitor monitor = new Monitor(this.pid); - //p.setVariable("TEST", FormatDates.getInstance().getDataBaseTimestamp()); - this.request.getResponse().put("status", monitor.getStatus()); - Object tasks = ProcessUtil.getFirstDoneTaskMetaData(monitor); - this.request.getResponse().put("FIRST", tasks); - } - - /** - * Manage origin. - * - * @throws Exception la exception - */ - protected void manageOrigin() throws Exception { - TbpmProcessInstance pro = DataHelper.getInstance().getTbpmProcessInstance(this.pid); - TgeneTransactionLog log = TgeneTransactionLog.find(PersistenceHelper.getEntityManager(), pro.getPk()); - List> data = ProcessUtil.getInstance().transactionData(pro.getPk(), this.request); - this.request.getResponse().put("origin", data); - this.request.getResponse().put( - "TRN", - log.getTransactionmodule() + "-" + log.getTransactioncode() + "-" + log.getTransactionversion() + " " - + GeneralDescriptions.getTransactiondesc(log.getTransactionmodule(), log.getTransactioncode(), log.getTransactionversion())); - } - - - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 2567fb7..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/monitor/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los utilitarios para el manejo del monitor de Flujos - */ -package com.fp.bpmlib.query.monitor; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/entries deleted file mode 100644 index b78c943..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:45.927817Z -aed4b5906c4fcbf84d50b987479a89f2 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -88 - -RefreshKnowledgeBase.java -file - - - - -2022-07-28T03:40:45.927817Z -2a963cd2a12a47c58514e8dc0bd09252 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1088 - -Rules.java -file - - - - -2022-07-28T03:40:45.928817Z -8eb792d348a1ffcfd1867f7c1ebddd3e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4697 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/RefreshKnowledgeBase.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/RefreshKnowledgeBase.java.svn-base deleted file mode 100644 index 3758fed..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/RefreshKnowledgeBase.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.bpmlib.query.rules; - -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pbpm.gene.TbpmRules; - -/** - * Clase que se encarga de refrescar la base de conocimiento dado un registro de tbpmrules. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class RefreshKnowledgeBase extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if(pSaveRequest.get("refresh") == null){ - return pSaveRequest; - } - List ldata = pSaveRequest.getSaveBeanModifiedRecords("TBPMRULES"); - TbpmRules obj = (TbpmRules)ldata.get(0); - //KnowledgeBaseHelper kh = new KnowledgeBaseHelper(); - //kh.refreshKnowledgeBase(obj); - pSaveRequest.remove("TBPMRULES"); - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/Rules.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/Rules.java.svn-base deleted file mode 100644 index 2b931ae..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/Rules.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.bpmlib.query.rules; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; - -// TODO: Auto-generated Javadoc -/** - * Clase que realiza la consulta las reglas BPM. - * - * @author BPTWPA - */ -public class Rules extends QueryRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** Constante JPQL_RULES. */ - private static final String JPQL_RULES = "select r.pk.rulecode, r.pk.companycode, r.description, r.packagename, " - + "r.snapshot, r.active, r.refresh, r.parametertype, r.messagecode , m.description " + "from TbpmRules r, TgeneMessageTemplates m " - + "where r.messagecode=m.pk "; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - StringBuilder jpql = new StringBuilder(); - List> listResp = new ArrayList>(); - Response response = pQueryRequest.getResponse(); - QueryBean qb = (QueryBean) pQueryRequest.get("TBPMRULES"); - List lcriteria = qb.getCriteria(); - EntityManager em = PersistenceHelper.getEntityManager(); - jpql.append(Rules.JPQL_RULES); - Query qry = em.createQuery(this.addSimpleCriteriaJPQL(jpql, lcriteria, qb)); - this.setSimpleParametersJPQL(qry, lcriteria); - qry.setFirstResult((qb.getPage() - 1) * qb.getPageSize()); - qry.setMaxResults(qb.getPageSize()); - @SuppressWarnings("unchecked") - List list = qry.getResultList(); - if (!list.isEmpty()) { - for (Object oj : list) { - Map mapResp = new HashMap(); - Object[] obj = (Object[]) oj; - mapResp.put("pk_rulecode", obj[0]); - mapResp.put("pk_companycode", obj[1]); - mapResp.put("description", obj[2]); - mapResp.put("packagename", obj[3]); - mapResp.put("snapshot", obj[4]); - mapResp.put("active", obj[5]); - mapResp.put("refresh", obj[6]); - mapResp.put("parametertype", obj[7]); - mapResp.put("messagecode", obj[8]); - mapResp.put("descmessage", obj[9]); - listResp.add(mapResp); - } - } - response.put("TBPMRULES", listResp); - return pQueryRequest; - } - - /** - * M�todo que agrega los parametros de una consulta jpql. - * - * @param jpql Creado - * @param lcriteria Criterios de consulta - * @param qb the qb - * @return String del jpql - */ - private String addSimpleCriteriaJPQL(StringBuilder jpql, List lcriteria, QueryBean qb) { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - jpql.append(" and ").append(obj.getProperty()).append(" ").append(obj.getOperation()).append(" :") - .append(obj.getProperty().replace(".", "")); - } - } - boolean first = true; - for (QueryCriteria order : qb.getOrder(true)) { - if (first) { - jpql.append(" ORDER BY "); - } else { - jpql.append(" asc, "); - } - jpql.append(order.getProperty()); - first = false; - } - return String.valueOf(jpql); - } - - /** - * M�todo que setea los parametros para la consulta. - * - * @param qry Query - * @param lcriteria Criterios de consluta - */ - private void setSimpleParametersJPQL(Query qry, List lcriteria) { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - qry.setParameter(obj.getProperty().replace(".", ""), - ((obj.getProperty().replace(".", "").compareTo("rpkcompanycode") == 0) ? Integer.valueOf(String.valueOf(obj.getValue())) - : obj.getValue())); - } - } - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index b25d895..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/rules/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases de consulta de Reglas - */ -package com.fp.bpmlib.query.rules; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/entries deleted file mode 100644 index 0969fbe..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud -svn://172.17.26.185/COMACO - - - -2020-01-29T23:31:52.972406Z -4628 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EstadoSolicitudQuery.java -file - - - - -2022-07-28T03:40:45.874817Z -3925394381a2c96d953e35079af76d44 -2020-01-29T23:31:52.972406Z -4628 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1999 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/text-base/EstadoSolicitudQuery.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/text-base/EstadoSolicitudQuery.java.svn-base deleted file mode 100644 index c2dc3dc..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/solicitud/.svn/text-base/EstadoSolicitudQuery.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -package com.fp.bpmlib.query.solicitud; - -import java.util.List; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; - -public class EstadoSolicitudQuery extends QueryRule{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - try { - System.out.println("*********consulta*************************************"); - String codigosolicitud = (String) pQueryRequest.get("codigosolicitudbpm"); - System.out.println("CODIGO DE CONSULTA : "+codigosolicitud); - if(codigosolicitud.contains("SOL")){ - codigosolicitud=codigosolicitud.replace("SOL", ""); - } - if(codigosolicitud.contains("TRA")){ - codigosolicitud=codigosolicitud.replace("TRA", ""); - } - - StringBuilder sql = new StringBuilder("select DISTINCT ta.ACTIVITYNAME,ta.USERCODE,ta.GROUPCODE,tk.STATUS,ta.CREATED,ta.STARTED,ta.COMPLETED " - + " from jbpm6.VARIABLEINSTANCELOG d, TBPMACTIVITIES ta, jbpm6.TASK tk " - + " where d.processInstanceId = ta.internalcode and tk.id (+) = ta.TASKID "); - - if(codigosolicitud.contains("SOL") || codigosolicitud.contains("TRA")){ - sql.append(" and (d.value like '%SOL"+codigosolicitud+"%' or d.value like '%TRA"+codigosolicitud+"%') ");//SOL-0000491173 - }else{ - sql.append(" and d.value like '%"+codigosolicitud+"%' "); - } - - sql.append( " order by ta.CREATED "); - - System.out.println("SQL_ESTADOS_SOLICITUDBPM: "+sql); - List listaVariables=PersistenceHelper.getEntityManager(). - createNativeQuery(sql.toString()).getResultList(); - System.out.println("consulta*************************************"+listaVariables); - pQueryRequest.getResponse().put("LISTASESTADOSOLICITUDBPM", listaVariables); - } catch (Exception e) { - e.printStackTrace(); - } - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/entries deleted file mode 100644 index a6cf05c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/entries +++ /dev/null @@ -1,334 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AsignedTasks.java -file - - - - -2022-07-28T03:40:45.893817Z -3c90b4778cbc749f86a7994c74e52182 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2482 - -StartTask.java -file - - - - -2022-07-28T03:40:45.893817Z -3cf07cad8f16d8d9a7c7165a00921b36 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1142 - -TaskHistory.java -file - - - - -2022-07-28T03:40:45.893817Z -885fbc9fee7e7a1f0c5d14a9704c2b43 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1218 - -package-info.java -file - - - - -2022-07-28T03:40:45.893817Z -feff889b6490a466cd8cebbbe7b69b0e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -103 - -TaskDetail.java -file - - - - -2022-07-28T03:40:45.894817Z -65b0fffaee14754d69e46f5737f1c43b -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4530 - -TaskPending.java -file - - - - -2022-07-28T03:40:45.894817Z -a49aa2db233caa8150686547cc062f19 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4943 - -ClaimTask.java -file - - - - -2022-07-28T03:40:45.894817Z -b4a8a0fce4a882f2ce6038a34909e1ac -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1156 - -CompleteTask.java -file - - - - -2022-07-28T03:40:45.895817Z -47f0c268d8efdbf51b10a914ecf04c13 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1296 - -TaskServerStatus.java -file - - - - -2022-07-28T03:40:45.895817Z -c2624d932958268d19181a501be668a3 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -974 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/AsignedTasks.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/AsignedTasks.java.svn-base deleted file mode 100644 index f106bf1..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/AsignedTasks.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.kie.api.task.model.Task; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TransactionTasks encargada de consultar las Tareas por transaccin. - * - * @author gfiallos - */ -public class AsignedTasks extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - HumanTaskClient htc = new HumanTaskClient(); - try { - List t = htc.getAsignedTasks(pQueryRequest.getString("userCri")); - List> data = new ArrayList>(); - for (Object[] obj : t) { - Task task = (Task) obj[0]; - TaskUtil tu = new TaskUtil(task, htc); - Map rec = new HashMap(); - rec.put("tid", tu.getTid()); - rec.put("workItem", task.getTaskData().getWorkItemId()); - rec.put("detail", tu.getSubject()); - rec.put("userasigned", task.getTaskData().getActualOwner().getId()); - rec.put("nameasigned", GeneralDescriptions.getOfficername(task.getTaskData().getActualOwner().getId())); - rec.put("logsolicitude", tu.getRequest().get("logsolicitude")); - rec.put("rulename", task.getName()); - List> data1 = ProcessUtil.getInstance().transactionData(tu.getRequest().getJournalId(), pQueryRequest, false); - for (Map map : data1) { - rec.put((String) map.get("NAME"), map.get("VALUE")); - } - data.add(rec); - } - pQueryRequest.getResponse().put("tasks", data); - return pQueryRequest; - } finally { - htc.close(); - } - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/ClaimTask.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/ClaimTask.java.svn-base deleted file mode 100644 index 3b1445e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/ClaimTask.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.BeanManager; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class ClaimTask encargada de. - * - * @author gfiallos - */ -public class ClaimTask extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Long tid = BeanManager.convertObject(pQueryRequest.get("TID"), Long.class); - if (tid == null) { - throw new BPMException("BPM-0008", "NO SE HA ENCONTRADO LA TAREA {0}", tid); - } - TaskUtil t = new TaskUtil(tid); - try { - t.claim(pQueryRequest.getUser()); - } finally { - t.close(); - } - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/CompleteTask.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/CompleteTask.java.svn-base deleted file mode 100644 index d07f111..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/CompleteTask.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import java.util.HashMap; - -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.BeanManager; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.simple.dto.Responses; - -// TODO: Auto-generated Javadoc -/** - * Class CompleteTask encargada de. - * - * @author gfiallos - */ -public class CompleteTask extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Long tid = BeanManager.convertObject(pQueryRequest.get("TID"), Long.class); - if (tid == null) { - throw new BPMException("BPM-0008", "NO SE HA ENCONTRADO LA TAREA {0}", tid); - } - TaskUtil task = new TaskUtil(tid); - try { - task.complete(pQueryRequest.getJournalId(), new HashMap(), Responses.OK, "AA"); - } finally { - task.close(); - } - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/StartTask.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/StartTask.java.svn-base deleted file mode 100644 index f503b30..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/StartTask.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.BeanManager; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class StartTask encargada de. - * - * @author gfiallos - */ -public class StartTask extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Long tid = BeanManager.convertObject(pQueryRequest.get("TID"), Long.class); - if (tid == null) { - throw new BPMException("BPM-0008", "NO SE HA ENCONTRADO LA TAREA {0}", tid); - } - TaskUtil task = new TaskUtil(tid); - try { - task.start(); - } finally { - task.close(); - } - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskDetail.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskDetail.java.svn-base deleted file mode 100644 index 7434a3c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskDetail.java.svn-base +++ /dev/null @@ -1,120 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.apache.log4j.Logger; -import org.kie.api.task.model.Comment; -import org.kie.api.task.model.TaskData; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.simple.dto.TaskInfo; - -// TODO: Auto-generated Javadoc -/** - * Class TaskDetail encargada de. - * - * @author gfiallos - */ -public class TaskDetail extends QueryRule { - - /** Constante LOG. */ - private static final Logger LOG = Logger.getLogger(TaskDetail.class); - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de data. */ - private List> data; - - // private Process process; - - /** El valor de request. */ - private QueryRequest request; - - /** El valor de response. */ - private Response response; - - /** - * Manage task. - * - * @param tid the tid - * @return list - * @throws Exception la exception - */ - protected List> manageTask(Long tid) throws Exception { - TaskUtil t = new TaskUtil(tid); - try { - TaskData td = t.getTaskData(); - - TaskInfo ti = t.getTaskInfo(); - this.data.add(ProcessUtil.getInstance().prepareRecord("create", new Timestamp(td.getCreatedOn().getTime()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("taskStatus", - GeneralDescriptions.getLabel(td.getStatus().name(), this.request.getLanguage(), this.request.getChannelCode()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("workItem", td.getWorkItemId(), this.request)); - Map task = ProcessUtil.getInstance().prepareRecord("taskId", tid, this.request); - - this.data.add(task); - this.data.add(ProcessUtil.getInstance().prepareRecord("response", ti.getResponse(), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("realTime", - ti.getRealTimeString(FormatDates.getInstance().getDataBaseTimestamp().getTime()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("expectedTime", ti.getExpectedTimeString(), this.request)); - Map add = ti.getAditionalData(); - for (Entry addE : add.entrySet()) { - this.data.add(ProcessUtil.getInstance().prepareRecord("" + addE.getKey(), addE.getValue(), this.request)); - } - List lc = t.getComments(); - List> comments = new ArrayList>(); - for (Comment comment : lc) { - Map record = new HashMap(); - record.put("user", comment.getAddedBy().getId()); - record.put("name", GeneralDescriptions.getUsername(comment.getAddedBy().getId())); - record.put("date", new Timestamp(comment.getAddedAt().getTime())); - record.put("comment", comment.getText()); - comments.add(record); - } - return comments; - } finally { - t.close(); - } - } - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - - this.request = pQueryRequest; - // Long pid = pQueryRequest.getLong("PID"); - Long tid = pQueryRequest.getLong("TID"); - String journalId = pQueryRequest.getString("JID"); - TaskDetail.LOG.debug("TID:" + tid); - TaskDetail.LOG.debug("journalId:" + journalId); - this.data = ProcessUtil.getInstance().transactionData(journalId, this.request); - - this.response = this.request.getResponse(); - this.response.put("data", this.data); - this.response.put("comments", this.manageTask(tid)); - - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskHistory.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskHistory.java.svn-base deleted file mode 100644 index c0555ba..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskHistory.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - - -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.flow.Monitor; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - - -/** - * Class TaskHistory encargada de. - * - * @author gfiallos - */ -public class TaskHistory extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryRequest request = pQueryRequest; - Long pid = pQueryRequest.getLong("PID"); - Long spid = pid; - try { - spid = pQueryRequest.getLong("SPID"); - } catch (Exception e) { - // - } - String name = pQueryRequest.getString("NAME"); - Response response = request.getResponse(); - Monitor monitor = new Monitor(pid); - response.put("DATA", ProcessUtil.getDoneTaskMetaData(monitor, name)); - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskPending.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskPending.java.svn-base deleted file mode 100644 index 9d8b0d8..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskPending.java.svn-base +++ /dev/null @@ -1,123 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.kie.api.task.model.Comment; -import org.kie.api.task.model.Task; -import org.kie.api.task.model.TaskData; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.task.client.HumanTaskClient; -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.simple.dto.TaskInfo; - -// TODO: Auto-generated Javadoc -/** - * Class TaskPending encargada de. - * - * @author gfiallos - */ -public class TaskPending extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de data. */ - private List> data; - - /** El valor de htc. */ - private HumanTaskClient htc; - - // private Process process; - - /** El valor de request. */ - private QueryRequest request; - - // private static final Logger LOG = Logger.getLogger(TaskPending.class); - - /** - * Manage task. - * - * @param pWork the work - * @return list - * @throws Exception la exception - */ - protected List> manageTask(Long pWork) throws Exception { - Task t = this.htc.getTaskByWorkItemId(pWork); - TaskData td = t.getTaskData(); - TaskUtil tu = new TaskUtil(t.getId()); - TaskInfo ti = tu.getTaskInfo(); - ti.setCreated(new Timestamp(td.getCreatedOn().getTime())); - this.data = new ArrayList>(); - String user = ti.getUserId(); - try { - user = td.getActualOwner().getId(); - } catch (Exception e) { - user = ti.getUserId(); - } - this.data.add(ProcessUtil.getInstance().prepareRecord("userAsign", user, this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("name", GeneralDescriptions.getOfficername(user), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("groupAsign", ti.getGroupId(), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("taskStatus", - GeneralDescriptions.getLabel(td.getStatus().name(), this.request.getLanguage(), this.request.getChannelCode()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("workItem", td.getWorkItemId(), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("taskId", t.getId(), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("create", new Timestamp(td.getCreatedOn().getTime()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("realTime", - ti.getRealTimeString(FormatDates.getInstance().getDataBaseTimestamp().getTime()), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord("expectedTime", ti.getExpectedTimeString(), this.request)); - this.data.add(ProcessUtil.getInstance().prepareRecord( - "transaction", - ti.getModule() + "-" + ti.getTransaction() + "-" + ti.getVersion() + " " - + GeneralDescriptions.getTransactiondesc(ti.getModule(), ti.getTransaction(), ti.getVersion()), this.request)); - List lc = tu.getComments(); - List> comments = new ArrayList>(); - for (Comment comment : lc) { - Map record = new HashMap(); - record.put("user", comment.getAddedBy().getId()); - record.put("name", GeneralDescriptions.getUsername(comment.getAddedBy().getId())); - record.put("date", new Timestamp(comment.getAddedAt().getTime())); - record.put("comment", comment.getText()); - comments.add(record); - } - return comments; - } - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - this.htc = new HumanTaskClient(); - try { - this.request = pQueryRequest; - // Long pid = pQueryRequest.getLong("PID"); - // Long tid = pQueryRequest.getLong("TID"); - Long workId = pQueryRequest.getLong("WORKID"); - - Response response = this.request.getResponse(); - response.put("comments", this.manageTask(workId)); - response.put("data", this.data); - } finally { - this.htc.close(); - } - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskServerStatus.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskServerStatus.java.svn-base deleted file mode 100644 index 32c38b6..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/TaskServerStatus.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.query.task; - -import com.fp.base.persistence.util.job.ServiceManager; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Class TaskServerStatus encargada de. - * - * @author gfiallos - */ -public class TaskServerStatus extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Process. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response rs = pQueryRequest.getResponse(); - String code = (String) pQueryRequest.get("code"); - ServiceManager sm = new ServiceManager(); - - rs.put("TSStatus", sm.isRunning(code)); - return pQueryRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 3cbd19f..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/query/task/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases para el manejo de consultas de tareas - */ -package com.fp.bpmlib.query.task; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/entries deleted file mode 100644 index a60d4e7..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:45.973817Z -a41ddd0d40a07994f283dab400afe224 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -75 - -ExportFlows.java -file - - - - -2022-07-28T03:40:45.974817Z -4f8be2da596853767f7875a87f31aa7f -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6155 - -DownloadFileQuery.java -file - - - - -2022-07-28T03:40:45.974817Z -528d069175529fb37ae6e0881b8029de -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1716 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/DownloadFileQuery.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/DownloadFileQuery.java.svn-base deleted file mode 100644 index 733c325..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/DownloadFileQuery.java.svn-base +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.report; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -// TODO: Auto-generated Javadoc -/** - * Clase que devuelve en bytes un archivo. - * - * @author gfiallos - */ -public abstract class DownloadFileQuery extends QueryRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de query request. */ - protected QueryRequest queryRequest; - - /** - * Metodo que devuelve en forma de bytes un archivo. - * - * @param pQueryRequest the query request - * @return query request - * @throws Exception la exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - this.queryRequest = pQueryRequest; - Response response = pQueryRequest.getResponse(); - response.put("file", this.getContent()); - response.put("extension", this.getExtension()); - response.put("contentType", this.getContentType()); - return pQueryRequest; - } - - /** - * Obtiene el valor de content. - * - * @return Valor de content - * @throws Exception la exception - */ - public abstract byte[] getContent() throws Exception; - - /** - * Obtiene el valor de extension. - * - * @return Valor de extension - * @throws Exception la exception - */ - public abstract String getExtension() throws Exception; - - /** - * Obtiene el valor de content type. - * - * @return Valor de content type - * @throws Exception la exception - */ - public abstract String getContentType() throws Exception; -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/ExportFlows.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/ExportFlows.java.svn-base deleted file mode 100644 index 66efd67..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/ExportFlows.java.svn-base +++ /dev/null @@ -1,147 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.report; - -import java.io.ByteArrayOutputStream; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; -import org.hibernate.Session; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.excel.XLSXUtil; -import com.fp.persistence.commondb.PersistenceHelper; - -// TODO: Auto-generated Javadoc -/** - * Class ExportFlows encargada de. - * - * @author gfiallos - */ -public class ExportFlows extends DownloadFileQuery { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** Constante SQL. */ - private static final String SQL = "SELECT l.solicitudenumber, ( SELECT z.description FROM " - + " tgenebranch z WHERE z.branchcode=l.branchcode " - + " AND z.companycode=l.companycode) branch, ( SELECT z.description FROM " - + " tgeneoffice z WHERE z.officecode=l.officecode AND z.branchcode=l.branchcode " - + " AND z.companycode=l.companycode) office, l.terminalcode originterminal,l.usercode orginuser, ( SELECT " - + " z.description FROM tgenemodule z WHERE " + " z.modulecode=l.transactionmodule ) module, ( SELECT z.transactionmodule||'-'||z.transactioncode||'-'||z.transactionversion||' '||z.name FROM " - + " tgenetransaction z WHERE z.transactionmodule=l.transactionmodule " + " AND z.transactioncode=l.transactioncode " - + " AND z.transactionversion=l.transactionversion) origen ,a.activityname,a.sequence,a.usercode," - + " a.groupcode,a.created,a.started,a.completed,a.expectedtime/1000,0 ,a.response , ( SELECT z.name " - + " FROM tgenetransaction z WHERE z.transactionmodule=a.module " - + " AND z.transactioncode=a.transaction AND z.transactionversion=a.version) tarea FROM " - + " tbpmprocessinstance i LEFT OUTER JOIN tbpmactivities a ON a.journalid=i.journalid , tgenetransactionlog l " - + " WHERE l.journalid=i.journalid AND i.finalized='Y' " + " and i.creationdate between :init and :end"; - - /** Constante ORDER. */ - private static final String ORDER = " ORDER BY l.aditionaldata, a.created"; - - /** - * Obtiene el valor de content. - * - * @return Valor de content - * @throws Exception la exception - */ - @Override - public byte[] getContent() throws Exception { - //Session s = PersistenceHelper.getSession(); - //SQLQuery sql = s.createSQLQuery(ExportFlows.SQL + ExportFlows.ORDER); - //sql.setDate("init", this.queryRequest.getDate("creationdate")); - //sql.setDate("end", this.queryRequest.getDate("enddate")); - PropertiesHandler ph = new PropertiesHandler("bpmmessages"); - EntityManager em = PersistenceHelper.getEntityManager(); - Query qry = em.createNativeQuery(ExportFlows.SQL + ExportFlows.ORDER); - qry.setParameter("init", this.queryRequest.getDate("creationdate")); - qry.setParameter("end", this.queryRequest.getDate("enddate")); - - @SuppressWarnings("unchecked") - List results = qry.getResultList(); - - XLSXUtil xlsx = new XLSXUtil(); - - - - //ScrollableResults cursor = sql.scroll(); - try { - List label = new ArrayList(); - label.add(ph.getStringValue("lbl_description")); - label.add(ph.getStringValue("lbl_branch")); - label.add(ph.getStringValue("lbl_office")); - label.add(ph.getStringValue("lbl_terminal")); - label.add(ph.getStringValue("lbl_user")); - label.add(ph.getStringValue("lbl_module")); - label.add(ph.getStringValue("lbl_transflow")); - label.add(ph.getStringValue("lbl_activityname")); - label.add(ph.getStringValue("lbl_sequence")); - label.add(ph.getStringValue("lbl_userasigned")); - label.add(ph.getStringValue("lbl_groupAsign")); - label.add(ph.getStringValue("lbl_created")); - label.add(ph.getStringValue("lbl_started")); - label.add(ph.getStringValue("lbl_completed")); - label.add(ph.getStringValue("lbl_expectedtime")); - label.add(ph.getStringValue("lbl_duracion")); - label.add(ph.getStringValue("lbl_response")); - label.add(ph.getStringValue("lbl_task")); - xlsx.addRecord(label.toArray(), "H"); - for(Object object: results){ - Object[] obj = (Object[])object; - if(obj[12] instanceof Date && obj[13] instanceof Date){ - Calendar c1 =Calendar.getInstance(); - c1.setTime((Date)obj[12]); - Calendar c2 =Calendar.getInstance(); - c2.setTime((Date)obj[13]); - obj[15] = (c2.getTimeInMillis() - c1.getTimeInMillis())/1000; - } - xlsx.addRecord(obj,"B"); - } -// while (cursor.next()) { -// xlsx.addRecord(cursor.get()); -// } - } finally { - //cursor.close(); - } - ByteArrayOutputStream out = new ByteArrayOutputStream(); - try { - xlsx.save(out); - } finally { - out.close(); - } - return out.toByteArray(); - } - - /** - * Obtiene el valor de extension. - * - * @return Valor de extension - * @throws Exception la exception - */ - @Override - public String getExtension() throws Exception { - return "xlsx"; - } - - /** - * Obtiene el valor de content type. - * - * @return Valor de content type - * @throws Exception la exception - */ - @Override - public String getContentType() throws Exception { - return "application/vnd.openxmlformats-officedocument.spreadsheetml.sheet"; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 5510b96..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/report/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases para Reportes - */ -package com.fp.bpmlib.report; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/entries deleted file mode 100644 index 6fbb6c7..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/entries +++ /dev/null @@ -1,170 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TaskUser.java -file - - - - -2022-07-28T03:40:45.828816Z -91728980ce91bc3c39ee57b19af7f251 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4982 - -package-info.java -file - - - - -2022-07-28T03:40:45.828816Z -3d83b9c2b8b78a904ae6284d5c67ad74 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -114 - -MaiaWorkItemHandler.java -file - - - - -2022-07-28T03:40:45.828816Z -2570af9a004c38efe7869e3d802b8691 -2014-12-16T10:20:52.870795Z -3535 -gbenavides - - - - - - - - - - - - - - - - - - - - - -4824 - -TaskCleaner.java -file - - - - -2022-07-28T03:40:45.829816Z -e18a18c227a633e62b1cb5708ae57d1f -2014-10-29T05:04:38.445380Z -2082 -jvaca - - - - - - - - - - - - - - - - - - - - - -3293 - -util -dir - -client -dir - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/MaiaWorkItemHandler.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/MaiaWorkItemHandler.java.svn-base deleted file mode 100644 index 5200f09..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/MaiaWorkItemHandler.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.bpmlib.task; - -import java.util.Date; -import java.util.Map; - -import javax.naming.InitialContext; - -import org.jbpm.services.task.exception.PermissionDeniedException; -import org.jbpm.services.task.utils.OnErrorAction; -import org.jbpm.services.task.wih.AbstractHTWorkItemHandler; -import org.kie.api.runtime.KieSession; -import org.kie.api.runtime.manager.RuntimeEngine; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.runtime.process.WorkItem; -import org.kie.api.runtime.process.WorkItemManager; -import org.kie.api.task.model.Task; -import org.kie.internal.runtime.manager.context.ProcessInstanceIdContext; -import org.kie.internal.task.api.InternalTaskService; -import org.kie.internal.task.api.model.ContentData; -import org.kie.internal.task.exception.TaskException; -import org.slf4j.Logger; -import org.slf4j.LoggerFactory; - -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.query.monitor.FlowActivitySave; -import com.fp.simple.dto.TaskInfo; - -public class MaiaWorkItemHandler extends AbstractHTWorkItemHandler { - - private static final Logger logger = LoggerFactory.getLogger(MaiaWorkItemHandler.class); - private RuntimeManager runtimeManager; - - public RuntimeManager getRuntimeManager() { - return runtimeManager; - } - - public void setRuntimeManager(RuntimeManager runtimeManager) { - this.runtimeManager = runtimeManager; - } - - public MaiaWorkItemHandler() { - } - - @SuppressWarnings("unchecked") - private void fillRuntimeManager(WorkItem workItem) { - try { - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - runtimeManager = local.getRuntimeManager(); - } catch (Exception e) { - throw new RuntimeException(e); - } - } - - @Override - public void executeWorkItem(WorkItem workItem, WorkItemManager manager) { - // JVC obtiene runtimemanager por base de conocimiento y adiciona fecha de vencimiento de la tarea. - this.fillRuntimeManager(workItem); - - RuntimeEngine runtime = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(workItem.getProcessInstanceId())); - KieSession ksessionById = runtime.getKieSession(); - - Task task = this.createTaskBasedOnWorkItemParams(ksessionById, workItem); - - ContentData content = this.createTaskContentBasedOnWorkItemParams(ksessionById, workItem); - try { - long taskId = ((InternalTaskService) runtime.getTaskService()).addTask(task, content); - if (this.isAutoClaim(workItem, task)) { - runtime.getTaskService().claim(taskId, (String) workItem.getParameter("SwimlaneActorId")); - } - // JVC crea un registro en TbpmTareas. - this.createTbpmActivities(taskId, workItem, task); - - } catch (Exception e) { - if (action.equals(OnErrorAction.ABORT)) { - manager.abortWorkItem(workItem.getId()); - } else if (action.equals(OnErrorAction.RETHROW)) { - if (e instanceof RuntimeException) { - throw (RuntimeException) e; - } else { - throw new RuntimeException(e); - } - } else if (action.equals(OnErrorAction.LOG)) { - StringBuilder logMsg = new StringBuilder(); - logMsg.append(new Date()).append(": Error when creating task on task server for work item id ").append(workItem.getId()); - logMsg.append(". Error reported by task server: ").append(e.getMessage()); - logger.error(logMsg.toString(), e); - // rethrow to cancel processing if the exception is not recoverable - if (!(e instanceof TaskException) || ((e instanceof TaskException) && !((TaskException) e).isRecoverable())) { - if (e instanceof RuntimeException) { - throw (RuntimeException) e; - } else { - throw new RuntimeException(e); - } - } - } - } - } - - - @SuppressWarnings("unchecked") - private void createTbpmActivities(long idtarea, WorkItem workItem, Task task) throws Exception { - Map mparam = (Map) workItem.getParameters().get("maia"); - TaskInfo taskInfo = (TaskInfo)workItem.getParameters().get("taskMetaData"); -// String usuario = task.getTaskData().getActualOwner() == null ? null : task.getTaskData().getActualOwner().getId();//usuario responsable - // crea tbpmtareas con los datos de la tarea. - FlowActivitySave.crearActivity(mparam, taskInfo,idtarea,task.getTaskData().getCreatedOn()); - // - } - - @Override - public void abortWorkItem(WorkItem workItem, WorkItemManager manager) { - RuntimeEngine runtime = runtimeManager.getRuntimeEngine(ProcessInstanceIdContext.get(workItem.getProcessInstanceId())); - Task task = runtime.getTaskService().getTaskByWorkItemId(workItem.getId()); - if (task != null) { - try { - runtime.getTaskService().exit(task.getId(), "Administrator"); - } catch (PermissionDeniedException e) { - logger.info(e.getMessage()); - } - } - - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskCleaner.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskCleaner.java.svn-base deleted file mode 100644 index 020c6ff..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskCleaner.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.task; - -import java.math.BigDecimal; -import java.util.List; - -import javax.naming.InitialContext; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.common.logger.APPLogger; - -// TODO: Auto-generated Javadoc -/** - * Class TaskCleaner encargada de. - * - * @author gfiallos - */ -public class TaskCleaner { - - /** El valor de em. */ - private EntityManager em; - - /** Constante TID. */ - private static final String TID = "tid"; - - /** - * Crea una nueva instancia de task cleaner. - * - * @throws Exception la exception - */ - public TaskCleaner() throws Exception { - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - this.em = local.getEmf().createEntityManager(); - this.em.joinTransaction(); - - } - - /** - * Delete task. - * - * @param pTask the task - * @throws Exception la exception - */ - private void deleteTask(long pTask) throws Exception { - Query q = this.em.createNativeQuery("delete from PeopleAssignments_PotOwners where task_id= :tid"); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from I18NText where Task_Names_Id= :tid or Task_Subjects_Id= :tid or Task_Descriptions_Id= :tid "); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from task_comment where TaskData_Comments_Id= :tid"); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from PeopleAssignments_BAs where task_id= :tid"); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from Content where id in (select DOCUMENTCONTENTID from Task where id=:tid)"); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from Content where id in (select outputcontentid from Task where id=:tid)"); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - q = this.em.createNativeQuery("delete from Task where id = :tid "); - q.setParameter(TaskCleaner.TID, pTask); - q.executeUpdate(); - } - - /** - * Delete tasks. - * - * @throws Exception la exception - */ - public void deleteTasks() throws Exception { - try { - Query q = this.em - .createNativeQuery("select id from Task t where not exists( select 1 from processinstanceinfo p where p.instanceid = t.processinstanceid)"); - @SuppressWarnings("unchecked") - List l = q.getResultList(); - for (BigDecimal id : l) { - Long idtarea = Long.valueOf(id.toString()); - this.deleteTask(idtarea); - } - } catch (Exception e) { - APPLogger.getLogger().error(e); - } finally { - if (em.isOpen()) { - // em.close(); - // TODO - } - } - - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskUser.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskUser.java.svn-base deleted file mode 100644 index f431ab4..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/TaskUser.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.task; - -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.jbpm.services.task.impl.model.UserImpl; -import org.kie.api.task.model.Group; -import org.kie.api.task.model.OrganizationalEntity; -import org.kie.api.task.model.User; -import org.kie.internal.task.api.UserInfo; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -// TODO: Auto-generated Javadoc -/** - * Class TaskUser encargada de. - * - * @author gfiallos - */ -public class TaskUser implements UserInfo { - - /** - * Entrega el nombre de un uaurio. - * - * @param entity OBjeto que contiene datos de un usuario asociado a la ejecucion de una actividad. - * @return String - */ - @Override - public String getDisplayName(OrganizationalEntity entity) { - try { - this.prepareSession(); - TsafeUserDetail tsud = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), entity.getId()); - TcustPersonDetailKey key = new TcustPersonDetailKey(tsud.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp()); - TcustPersonDetail pd = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), key); - return pd.getName(); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - PersistenceHelper.closeSession(); - } - - } - - /** - * Prepare session. - */ - private void prepareSession() { - SessionData s = new SessionData(); - s.setCompany(1); - ThreadFacade.setSaveRequest(s); - PersistenceManager persistenceManager = PersistenceManager.getInstanceTest(); - PersistenceHelper.setEntityManager(persistenceManager.createEntityManagerLocal()); - } - - /** - * Obtiene el valor de email for entity. - * - * @param entity the entity - * @return Valor de email for entity - */ - @Override - public String getEmailForEntity(OrganizationalEntity entity) { - try { - this.prepareSession(); - TsafeUserDetail tsud = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), entity.getId()); - TcustPersonDetailKey key = new TcustPersonDetailKey(tsud.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp()); - TcustPersonDetail pd = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), key); - - return pd.getLanguagecode(); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Entrega el lenguaje preferido de un usuario. - * - * @param entity OBjeto que contiene datos de un usuario asociado a la ejecucion de una actividad. - * @return String - */ - @Override - public String getLanguageForEntity(OrganizationalEntity entity) { - - try { - this.prepareSession(); - TsafeUserDetail tsud = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), entity.getId()); - return TcustPersonAddress.getEmail(PersistenceHelper.getEntityManager(), tsud.getPk().getPersoncode()); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Obtiene el valor de members for group. - * - * @param group the group - * @return Valor de members for group - */ - @Override - public Iterator getMembersForGroup(Group group) { - List l = new ArrayList(); - try { - this.prepareSession(); - List ldata = TbpmGroupsUsers.find(PersistenceHelper.getEntityManager(), group.getId()); - for (TbpmGroupsUsers obj : ldata) { - User user = new UserImpl(obj.getPk().getUsercode()); - l.add(user); - } - } catch (Exception e) { - // TODO: handle exception - } finally { - PersistenceHelper.closeSession(); - } - return l.iterator(); - } - - /** - * Checks for email. - * - * @param group the group - * @return true, si es satisfactorio - */ - @Override - public boolean hasEmail(Group group) { - return false; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 7f7ce81..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes necesarios para el manejo del Servidor de Tareas. - */ -package com.fp.bpmlib.task; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/entries deleted file mode 100644 index 6a6be6a..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TaskUtil.java -file - - - - -2022-07-28T03:40:45.820816Z -cc600c82329240b3d3ddaa89255450fc -2014-11-28T11:45:00.880140Z -3185 -cpiedra - - - - - - - - - - - - - - - - - - - - - -14561 - -package-info.java -file - - - - -2022-07-28T03:40:45.820816Z -74c051d8efacfd0d9115c31e8b53b391 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -111 - -HumanTaskClient.java -file - - - - -2022-07-28T03:40:45.821816Z -e089d52d253c3dc0bf64ebbf50c31d3d -2014-12-17T13:06:41.233359Z -3580 -gbenavides - - - - - - - - - - - - - - - - - - - - - -20390 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/HumanTaskClient.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/HumanTaskClient.java.svn-base deleted file mode 100644 index 11246d3..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/HumanTaskClient.java.svn-base +++ /dev/null @@ -1,580 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.task.client; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.naming.InitialContext; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import org.jbpm.process.instance.event.listeners.TriggerRulesEventListener; -import org.jbpm.services.task.impl.model.CommentImpl; -import org.jbpm.services.task.impl.model.UserImpl; -import org.jbpm.services.task.lifecycle.listeners.BAMTaskEventListener; -import org.jbpm.services.task.lifecycle.listeners.TaskLifeCycleEventListener; -import org.jbpm.services.task.utils.ContentMarshallerHelper; -import org.kie.api.runtime.KieSession; -import org.kie.api.runtime.manager.RuntimeEngine; -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.api.task.TaskService; -import org.kie.api.task.model.Content; -import org.kie.api.task.model.Status; -import org.kie.api.task.model.Task; -import org.kie.api.task.model.TaskData; -import org.kie.api.task.model.TaskSummary; -import org.kie.internal.task.api.EventService; -import org.kie.internal.task.api.InternalTaskService; - -import com.fp.bpmlib.Common; -import com.fp.bpmlib.ProcessUtil; -import com.fp.bpmlib.ejb.local.JbpmBeanLocal; -import com.fp.bpmlib.query.monitor.FlowActivitySave; -import com.fp.bpmlib.task.MaiaWorkItemHandler; -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.simple.dto.TaskInfo; - -// -/** - * Class HumanTaskClient encargada de acceder al Servidor de Tareas. - * - * @author Jvaca - * @version 2.1 - */ -public class HumanTaskClient { - - /** El valor de language. */ - private String language = "en-UK"; - - private final TaskService taskService; - - private final KieSession kiesession; - - /** - * Crea una nueva instancia de human task client. - * - * @throws Exception la exception - */ - public HumanTaskClient() throws Exception { - JbpmBeanLocal local = (JbpmBeanLocal) new InitialContext().lookup("java:global/maiaear-2.1/bpmlib/jbpmbean"); - RuntimeManager manager = local.getRuntimeManager(); - RuntimeEngine runtime = manager.getRuntimeEngine(null); - kiesession = runtime.getKieSession(); - taskService = runtime.getTaskService(); - kiesession.addEventListener(new TriggerRulesEventListener(kiesession)); - kiesession.getWorkItemManager().registerWorkItemHandler("Human Task", new MaiaWorkItemHandler()); - this.addListeners(runtime); - } - - /** - * Adiciona listener, para el manejo del bam de tareas. - * - * @param engine - */ - @SuppressWarnings("unchecked") - private void addListeners(RuntimeEngine engine) { - EventService eventService = (EventService) engine.getTaskService(); - boolean hasBamEventListener = false; - for (TaskLifeCycleEventListener listener : eventService.getTaskEventListeners()) { - if (listener instanceof BAMTaskEventListener) { - hasBamEventListener = true; - break; - } - } - if (!hasBamEventListener) { - BAMTaskEventListener bamTaskEventListener = new BAMTaskEventListener(); - eventService.registerTaskEventListener(bamTaskEventListener); - } - } - - /** - * Activate task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void activateTask(long pTask, String pUserId) throws Exception { - taskService.activate(pTask, pUserId); - - } - - /** - * Claim task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void claimTask(long pTask, String pUserId) throws Exception { - taskService.claim(pTask, pUserId); - FlowActivitySave.actualizarActividadClaim(pTask, pUserId); - } - - /** - * Entrega lsita de grupos bpm al que pertenece el usuario. - * - * @param pUser Codigo de usuario a buscar los grupos a los que pertenece. - * @return List - * @throws Exception la exception - */ - public static List groupsByUser(String pUser) throws Exception { - List groups = TbpmGroupsUsers.findGroupsByUser(PersistenceHelper.getEntityManager(), pUser); - List data = new ArrayList(); - for (TbpmGroupsUsers tbpmGroupsUsers : groups) { - data.add(tbpmGroupsUsers.getPk().getGroupcode()); - } - return data; - } - - /** - * Close. - * - * @throws Exception la exception - */ - public void close() throws Exception { - // No hacer nada con JTA la session se cierra automaticamente. - } - - /** - * Complete task. - * - * @param pTask the task - * @param pJournalId the journal id - * @param data the data - * @param pResultado the resultado - * @param pObs the obs - * @throws Exception la exception - */ - public String completeTask(long pTask, String pJournalId, Map data, String pResultado, String pObs) throws Exception { - Task t = this.getTaskById(pTask); - TaskData td = t.getTaskData(); - this.addComment(pTask, td.getActualOwner().getId(), pObs); - Map input = this.getInputData(t); - TaskInfo ti = (TaskInfo) input.get(ProcessUtil.TASK_METADATA); - ti.setResponse(pResultado); - ti.setTaskId(pTask); - ti.setJournalId(pJournalId); - System.out.println(pObs); - if (ti.getUserId() == null && t.getTaskData().getActualOwner() != null) { - ti.setUserId(t.getTaskData().getActualOwner().getId()); - } - - // Las fechas para el monitor se toman de BamTaskSummary - // ti.setCreated(new Timestamp( td.getCreatedOn().getTime())); - // ti.setCompleted(FormatDates.getInstance().getDataBaseTimestamp()); - ti.getAditionalData().putAll(data); - taskService.complete(pTask, td.getActualOwner().getId(), input); - FlowActivitySave.actualizarActividadComplete(pTask, ti); - return ti.getTname(); - } - - /** - * Adiciona un comment. - * - * @param pTask the task - * @param pUserId the user id - * @param pComment the comment - * @throws Exception la exception - */ - public void addComment(long pTask, String pUserId, String pComment) throws Exception { - InternalTaskService its = (InternalTaskService) taskService; - CommentImpl comentario = new CommentImpl(); - comentario.setText(pComment); - comentario.setAddedAt(Common.getInstance().getCurrentDate()); - comentario.setAddedBy(new UserImpl(pUserId)); - its.addComment(pTask, comentario); - - } - - /** - * Delegate task. - * - * @param pTask the task - * @param pUserId the user id - * @param pTargetUserId the target user id - * @throws Exception la exception - */ - public void delegateTask(long pTask, String pUserId, String pTargetUserId) throws Exception { - taskService.delegate(pTask, pUserId, pTargetUserId); - FlowActivitySave.actualizarActividadDelegate(pTask, pTargetUserId); - } - - /** - * Obtiene el valor de assigned tasks. - * - * @return Valor de assigned tasks - * @throws Exception la exception - */ - public List getAssignedTasks() throws Exception { - return taskService.getTasksAssignedAsPotentialOwner(null, language); - } - - /** - * Obtiene el valor de assigned tasks. - * - * @param pUserId the user id - * @return Valor de assigned tasks - * @throws Exception la exception - */ - public List getAssignedTasks(String pUserId) throws Exception { - // this.client.getTasksAssignedAsPotentialOwner(pUserId, this.language, taskSummaryHandler); - return taskService.getTasksOwned(pUserId, language); - } - - /** - * Obtiene el valor de content by id. - * - * @param pId the id - * @return Valor de content by id - * @throws Exception la exception - */ - public Content getContentById(long pId) throws Exception { - return taskService.getContentById(pId); - } - - /** - * Obtiene el valor de input data. - * - * @param pTask the task - * @return Valor de input data - * @throws Exception la exception - */ - public Map getInputData(Task pTask) throws Exception { - Content c = this.getContentById(pTask.getTaskData().getDocumentContentId()); - return HumanTaskClient.getContenido(c); - } - - /** - * Obtiene el valor de output data. - * - * @param pTask the task - * @return Valor de output data - * @throws Exception la exception - */ - public Map getOutputData(Task pTask) throws Exception { - Content c = this.getContentById(pTask.getTaskData().getOutputContentId()); - return HumanTaskClient.getContenido(c); - } - - /** - * Entrega el contenido asociado al workitem. - * - * @param task Datos de la tarea - * @return Map - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static Map getContenido(Content content) throws Exception { - Map maia = new HashMap(); - Object obj = ContentMarshallerHelper.unmarshall(content.getContent(), null); - if (obj instanceof Map) { - maia = (Map) obj; - } - return maia; - } - - /** - * Obtiene el valor de input data. - * - * @param pTask the task - * @return Valor de input data - * @throws Exception la exception - */ - @SuppressWarnings(Constant.WARN_UNCHECKED) - @Deprecated - public Map getDatos(Content c) throws Exception { - if (c != null) { - // Esto funciona con jbm 5.4 - Object obj = ContentMarshallerHelper.unmarshall(c.getContent(), null); - if (obj != null) { - ByteArrayOutputStream bos = null; - ObjectOutputStream out = null; - try { - // return (Map) obj; - bos = new ByteArrayOutputStream(); - out = new ObjectOutputStream(bos); - out.writeObject(obj); - ObjectInputStream bin = new ObjectInputStream(new ByteArrayInputStream(bos.toByteArray())); - return (Map) bin.readObject(); - } finally { - bos.close(); - out.close(); - } - } - } - - ObjectInputStream bin = new ObjectInputStream(new ByteArrayInputStream(c.getContent())); - try { - return (Map) bin.readObject(); - } finally { - bin.close(); - } - } - - /** - * Obtiene el valor de task by id. - * - * @param pId the id - * @return Valor de task by id - * @throws Exception la exception - */ - public Task getTaskById(long pId) throws Exception { - return taskService.getTaskById(pId); - } - - /** - * Obtiene el valor de task by work item id. - * - * @param pWorkId the work id - * @return Valor de task by work item id - * @throws Exception la exception - */ - public Task getTaskByWorkItemId(long pWorkId) throws Exception { - return taskService.getTaskByWorkItemId(pWorkId); - } - - /** - * Obtiene el valor de task content input. - * - * @param taskSum the task sum - * @return Valor de task content input - */ - public Object getTaskContentInput(TaskSummary taskSum) { - ByteArrayInputStream bais = null; - ObjectInputStream is = null; - - Task task2 = taskService.getTaskById(taskSum.getId()); - TaskData taskData = task2.getTaskData(); - Content content = taskService.getContentById(taskData.getDocumentContentId()); - - try { - bais = new ByteArrayInputStream(content.getContent()); - is = new ObjectInputStream(bais); - Object obj = null; - - do { - obj = is.readObject(); - if (obj == null) { - break; - } - APPLogger.getLogger().debug("OBJECT: " + obj); - return obj; - } while (obj != null); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - return null; - } finally { - try { - if (bais != null) { - bais.close(); - } - } catch (Exception e2) { - } - try { - if (is != null) { - is.close(); - } - } catch (Exception e2) { - } - } - return null; - } - - /** - * Obtiene el valor de task data. - * - * @param pTask the task - * @return Valor de task data - * @throws Exception la exception - */ - public TaskData getTaskData(long pTask) throws Exception { - Task task = this.getTaskById(pTask); - return task.getTaskData(); - } - - /** - * Obtiene el listado de tareas Asignadas. - * - * @param pUserCri the user cri - * @param pCriteria the criteria - * @param pPage the page - * @param pRecords the records - * @return Listado de tareas asignadas - * @throws Exception la exception - */ - public List getAsignedTasks(String pUserCri) throws Exception { - List lestatus = new ArrayList<>(); - List lresp = new ArrayList<>(); - lestatus.add(Status.Reserved); - lestatus.add(Status.InProgress); - List list; - try { - list = taskService.getTasksOwnedByStatus(pUserCri, lestatus, "en-UK"); - for (TaskSummary obj : list) { - Object o[] = new Object[2]; - Task task = this.getTaskById(obj.getId()); - Content c = this.getContentById(task.getTaskData().getDocumentContentId()); - o[0] = task; - o[1] = c; - lresp.add(o); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - return lresp; - } - - /** - * Obtiene el valor de unfinished tasks. - * - * @param pUserId the user id - * @param pCri the cri - * @return Valor de unfinished tasks - * @throws Exception la exception - */ - public List getUnfinishedTasksByUser(String pUserId) throws Exception { - List lestatus = new ArrayList<>(); - List lresp = new ArrayList<>(); - lestatus.add(Status.Reserved); - lestatus.add(Status.InProgress); - List list = taskService.getTasksOwnedByStatus(pUserId, lestatus, "en-UK"); - try { - list = taskService.getTasksOwnedByStatus(pUserId, lestatus, "en-UK"); - for (TaskSummary obj : list) { - Object o[] = new Object[2]; - Task task = this.getTaskById(obj.getId()); - Content c = this.getContentById(task.getTaskData().getDocumentContentId()); - o[0] = task; - o[1] = c; - lresp.add(o); - } - } catch (Exception e) { - throw new RuntimeException(e); - } - return lresp; - - } - - /** - * JPQL JPQL_TASK_NOT_COMPLETEBYGROUP - */ - private static final String TAREAS_GRUPO = "select t, potentialOwners.id from TaskImpl t, OrganizationalEntityImpl potentialOwners " - + "where potentialOwners.id in (:groupIds) and potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and t.archived = 0 " - + "and t.taskData.actualOwner = null and t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended')"; - - /** - * Obtiene el valor de unfinished tasks por Grupo. - * - * @param pGroupId the user id - * @param pCri the cri - * @return Valor de unfinished tasks - * @throws Exception la exception - */ - @SuppressWarnings(Constant.WARN_UNCHECKED) - public List getTasksByGroup(String pGroupId, String pCri) throws Exception { - List ldatos = new ArrayList(); - EntityManager em = null; - try { - em = PersistenceManager.getInstance().getEntityManagerFactoryAuxiliar("org.jbpm.domain").createEntityManager(); - Query qry = em.createQuery(HumanTaskClient.TAREAS_GRUPO); - qry.setParameter("groupIds", pGroupId); - ldatos = qry.getResultList(); - } catch (Exception e) { - throw new RuntimeException(e); - } finally { - if (em.isOpen()) { - em.close(); - } - } - return ldatos; - } - - /** - * Release task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void releaseTask(long pTask, String pUserId) throws Exception { - taskService.release(pTask, pUserId); - } - - /** - * Resume task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void resumeTask(long pTask, String pUserId) throws Exception { - taskService.resume(pTask, pUserId); - } - - /** - * Start task. - * - * @param pTask the task - * @throws Exception la exception - */ - public void startTask(long pTask) throws Exception { - Task task = this.getTaskById(pTask); - APPLogger.getLogger().debug("Starting task " + pTask); - Map input = this.getInputData(task); - // com.fp.bpmlib.Process p = this.findProcess(task.getTaskData(), snapshot); - // TaskInfo ti = (TaskInfo) input.get(ProcessUtil.TASK_METADATA); - // ti.setTaskId(pTask); - // ti.setStarted(FormatDates.getInstance().getDataBaseTimestamp()); - // ti.setCreated(new Timestamp(task.getTaskData().getCreatedOn().getTime())); - - // ProcessInstance processInstance = kiesession.getProcessInstance(task.getTaskData().getProcessInstanceId()); - // RuleFlowProcessInstance rfpi = (RuleFlowProcessInstance) processInstance; - // rfpi.setVariable(ProcessUtil.TASK_METADATA, ti); //actualiza datos en el contexto. - // InternalTaskService its = ((InternalTaskService) taskService); - // Elimina el content anterior y remplaza por un nuevo content. - // its.deleteContent(pTask, task.getTaskData().getDocumentContentId()); - // its.addContent(pTask, input); - - // ***** LA FECHA DE CREACION E INICIO SE TOMA DE LA BAMTASKSUMMARY PARA PRESENTAR EN EL MONITOR. - - taskService.start(pTask, task.getTaskData().getActualOwner().getId()); - FlowActivitySave.actualizarActividadStart(pTask); - APPLogger.getLogger().debug("Started task " + pTask); - } - - /** - * Stop task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void stopTask(long pTask, String pUserId) throws Exception { - taskService.stop(pTask, pUserId); - } - - /** - * Suspend task. - * - * @param pTask the task - * @param pUserId the user id - * @throws Exception la exception - */ - public void suspendTask(long pTask, String pUserId) throws Exception { - taskService.suspend(pTask, pUserId); - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.netbeans-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.netbeans-base deleted file mode 100644 index 1b769e2..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.netbeans-base +++ /dev/null @@ -1,476 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.task.client; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.kie.api.task.model.Comment; -import org.kie.api.task.model.Status; -import org.kie.api.task.model.Task; -import org.kie.api.task.model.TaskData; -import org.mvel2.PropertyAccessException; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.bpm.query.QueryProcessor; -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.ProcessUtil; -import com.fp.common.messages.ELEval; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionMaping; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionOrigin; -import com.fp.persistence.pbpm.gene.TbpmRules; -import com.fp.persistence.pbpm.gene.TbpmRulesKey; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionKey; -import com.fp.simple.dto.Responses; -import com.fp.simple.dto.TaskInfo; - -// TODO: Auto-generated Javadoc -/** - * Class TaskUtil encargada del manejo de Tareas. - * - * @author Jvaca - */ -public class TaskUtil { - - /** Constante BPM_STATUS. */ - public static final String BPM_STATUS = "BPMStatus"; - - /** Constante BPM_DATA. */ - public static final String BPM_DATA = "BPMData"; - - /** Constante BPM_OBS. */ - public static final String BPM_OBS = "BPMObs"; - - /** Constante BPM_TID. */ - public static final String BPM_TID = "TID"; - - /** El valor de task. */ - private Task task; - - /** El valor de task data. */ - private TaskData taskData; - - /** El valor de htc. */ - private final HumanTaskClient htc; - - /** El valor de tid. */ - private long tid; - - /** El valor de taskname. */ - private long taskname; - - /** El valor de input. */ - private Map input = null; - - /** - * Crea una nueva instancia de TaskUtil. - * - * @throws Exception la exception - */ - private TaskUtil() throws Exception { - htc = new HumanTaskClient(); - } - - /** - * Crea una nueva instancia de TaskUtil. - * - * @throws Exception la exception - */ - public TaskUtil(Task task, HumanTaskClient htc) throws Exception { - this.htc = htc; - this.task = task; - this.tid = this.task.getId(); - taskData = task.getTaskData(); - } - - /** - * Entrega el valor de task. - * - * @return Valor de task - */ - public Task getTask() { - return task; - } - - /** - * Entrega el valor de taskData. - * - * @return Valor de taskData - */ - public TaskData getTaskData() { - return taskData; - } - - /** - * Entrega el valor de tid. - * - * @return Valor de tid - */ - public long getTid() { - return tid; - } - - /** - * Entrega el valor de: taskname - * - * @return long - */ - public long getTaskname() { - return taskname; - } - - /** - * Fija el valor de: taskname - * - * @param taskname - */ - public void setTaskname(long taskname) { - this.taskname = taskname; - } - - /** - * Crea una nueva instancia de task til. - * - * @param pTId the t id - * @throws Exception la exception - */ - public TaskUtil(long pTId) throws Exception { - this(); - tid = pTId; - task = htc.getTaskById(pTId); - taskData = task.getTaskData(); - } - - /** - * Close. - * - * @throws Exception la exception - */ - public void close() throws Exception { - htc.close(); - } - - /** - * Obtiene el valor de task info. - * - * @return Valor de task info - * @throws Exception la exception - */ - public TaskInfo getTaskInfo() throws Exception { - Map m = this.getActualData(); - Object obj = m.get(ProcessUtil.TASK_METADATA); - return (TaskInfo) obj; - } - - /** - * Obtiene el valor del juego de variables de MAIA. - * - * @return Valor de las variables MAIA - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public Map getMaia() throws Exception { - Map m = this.getActualData(); - return (Map) m.get(ProcessUtil.DATA); - } - - /** - * Obtiene el Request. - * - * @return Request - * @throws Exception la exception - */ - public Request getRequest() throws Exception { - Map maia = this.getMaia(); - return (Request) maia.get(ProcessUtil.REQUEST); - } - - /** - * Obtiene el valor de actual data. - * - * @return Valor de actual data - * @throws Exception la exception - */ - public Map getActualData() throws Exception { - if (input != null) { - return input; - } - if (taskData.getStatus() == Status.Completed) { - input = htc.getOutputData(task); - } else { - input = htc.getInputData(task); - } - return input; - } - - /** - * Obtiene el valor de status. - * - * @return Valor de status - */ - public Status getStatus() { - return taskData.getStatus(); - } - - /** - * Obtiene el valor de work item id. - * - * @return Valor de work item id - */ - public long getWorkItemId() { - return taskData.getWorkItemId(); - } - - /** - * Obtiene el valor de comments. - * - * @return Valor de comments - * @throws Exception la exception - */ - public List getComments() throws Exception { - return taskData.getComments(); - } - - /** - * Complete. - * - * @param pJournalId the journal id - * @param data the data - * @param pResponse the response - * @param pObs the obs - * @throws Exception la exception - */ - public String complete(String pJournalId, Map data, Responses pResponse, String pObs) throws Exception { - try { - return htc.completeTask(tid, pJournalId, data, pResponse.getCode(), pObs.toUpperCase()); - } catch (Exception e) { - throw new BPMException("BPM502", "NO SE HA PODIDO COMPLETAR LA TAREA {0} ", e, tid); - } - } - - /** - * Start. - * - * @throws Exception la exception - */ - public void start() throws Exception { - try { - htc.startTask(tid); - } catch (Exception e) { - throw new BPMException("BPM501", "NO SE HA PODIDO INICIAR LA TAREA {0} ", e, tid); - } - } - - /** - * Claim. - * - * @param pUser the user - * @throws Exception la exception - */ - public void claim(String pUser) throws Exception { - try { - htc.claimTask(tid, pUser); - } catch (Exception e) { - throw new BPMException("BPM500", "NO SE HA PODIDO RESERVAR LA TAREA {0} PARA EL USUARIO {1}", e, tid, pUser); - } - } - - /** - * Comment. - * - * @param pUser the user - * @param pComment the comment - * @throws Exception la exception - */ - public void comment(String pUser, String pComment) throws Exception { - try { - htc.addComment(tid, pUser, pComment.toUpperCase()); - } catch (Exception e) { - throw new BPMException("BPM504", "NO SE HA PODIDO MODIFICAR LA TAREA {0} ", e, tid); - } - } - - /** - * Reasign. - * - * @param pUser the user - * @throws Exception la exception - */ - public void delegate(String pUser) throws Exception { - try { - htc.delegateTask(tid, taskData.getActualOwner().getId(), pUser); - } catch (Exception e) { - throw new BPMException("BPM504", "NO SE HA PODIDO MODIFICAR LA TAREA {0} ", e, tid); - } - } - - /** - * Obtiene el valor de subject. - * - * @return Valor de subject - * @throws Exception la exception - */ - public String getSubject() throws Exception { - String subject = ""; - Request req = this.getRequest(); - if (req.getSubject() == null) { - req.setSubject(MessageManager.getMessage(req)); - } - subject = req.getSubject(); - return subject; - } - - /** - * Obtiene la descripcion de la regla. - * - * @return descripcion de la regla - * @throws Exception la exception - */ - public String getRuleDescription() throws Exception { - Request req = this.getRequest(); - TaskInfo info = this.getTaskInfo(); - TbpmRulesKey rk = new TbpmRulesKey(info.getRuleCode(), req.getCompany()); - TbpmRules r = TbpmRules.find(PersistenceHelper.getEntityManager(), rk); - if (r != null) { - return " " + r.getDescription(); - } - return ""; - } - - /** - * Obtiene el valor de transaction. - * - * @return Valor de transaction - * @throws Exception la exception - */ - public TransactionDTO getTransaction() throws Exception { - TaskInfo info = this.getTaskInfo(); - return new TransactionDTO(info.getModule(), info.getTransaction(), info.getVersion()); - } - - /** - * Obtiene el valor de detail. - * - * @param pLanguage the language - * @return Valor de detail - * @throws Exception la exception - */ - public String getDetail(String pLanguage) throws Exception { - TaskInfo info = this.getTaskInfo(); - Integer messagecode = info.getMessageCode(); - if (messagecode == null) { - TbpmRulesKey k = new TbpmRulesKey(info.getRuleCode(), ThreadFacade.getSessionData().getCompany()); - TbpmRules r = TbpmRules.find(PersistenceHelper.getEntityManager(), k); - messagecode = r.getMessagecode(); - } - com.fp.bpmlib.messages.MessageManager msg = new com.fp.bpmlib.messages.MessageManager(messagecode, pLanguage, null); - msg.setValue(TaskUtil.BPM_DATA, this.getMaia()); - msg.setValue("request", this.getRequest()); - msg.setValue(ProcessUtil.TASK_METADATA, info); - return msg.getMessage(); - } - - /** - * Obtiene el valor de origin data. - * - * @return Valor de origin data - * @throws Exception la exception - */ - public Map getOriginData() throws Exception { - Map data = new HashMap(); - Request rq = this.getRequest(); - List l = TbpmFieldTransactionOrigin.find(PersistenceHelper.getEntityManager(), rq.getTransactionModule(), - rq.getTransactionCode(), rq.getTransactionVersion()); - for (TbpmFieldTransactionOrigin o : l) { - try { - data.put(o.getPk().getFieldname(), ELEval.eval(rq, o.getExpresionlanguage())); - } catch (PropertyAccessException e) { - continue; - } - } - return data; - } - - /** - * Obtiene el valor de destiny meta data. - * - * @return Valor de destiny meta data - * @throws Exception la exception - */ - public Map getDestinyMetaData() throws Exception { - Map data = new HashMap(); - TransactionDTO trn = this.getTransaction(); - List l = TbpmFieldTransactionMaping.find(PersistenceHelper.getEntityManager(), trn.getModule(), - trn.getTransaction(), trn.getVersion()); - for (TbpmFieldTransactionMaping o : l) { - data.put(o.getFieldscreen(), o.getPk().getFieldname()); - } - return data; - } - - /** - * Obtiene el valor de destiny data. - * - * @return Valor de destiny data - * @throws Exception la exception - */ - public Map getDestinyData() throws Exception { - Map data = new HashMap(); - Map origin = this.getOriginData(); - Map meta = this.getDestinyMetaData(); - for (Entry e : meta.entrySet()) { - data.put(e.getKey(), origin.get(e.getValue())); - } - TransactionDTO trn = this.getTransaction(); - TgeneTransactionKey tKey = new TgeneTransactionKey(trn.getModule(), trn.getTransaction(), trn.getVersion()); - TgeneTransaction trnData = TgeneTransaction.find(PersistenceHelper.getEntityManager(), tKey); - if (trnData != null && trnData.getQuerycode() != null) { - QueryProcessor qp = new QueryProcessor(); - QueryRequest qr = new QueryRequest(); - qr.setResponse(new Response(Response.RESPONSE_OK, "OK")); - qr.setTransactionModule(trn.getModule()); - qr.setTransactionCode(trn.getTransaction()); - qr.setTransactionVersion(trn.getVersion()); - qr.setTransactionModule(trn.getModule()); - for (Entry e : data.entrySet()) { - qr.put(e.getKey(), e.getValue()); - } - qr.addAddtionalInfo("queryalias", trnData.getQuerycode()); - qr.addAddtionalInfo("querytype", "P"); - qp.setQueryRequest(qr); - qp.processQueryByAlias(); - - for (Entry e : qr.getResponse().entrySet()) { - data.put(e.getKey(), e.getValue()); - } - } - return data; - } - - /** - * Entrega el map que almacena datos utilizados en el bpm. - * - * @param request Request a obtener el map de datos utilizados en el jbpm. - * @return Map - * @throws Exception la exception - */ - public static Map getBpmData(Request request) throws Exception { - @SuppressWarnings("unchecked") - Map mdata = (Map) request.get(TaskUtil.BPM_DATA); - if (mdata == null) { - mdata = new HashMap(); - request.put(TaskUtil.BPM_DATA, mdata); - } - return mdata; - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.svn-base deleted file mode 100644 index 1b769e2..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/TaskUtil.java.svn-base +++ /dev/null @@ -1,476 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.task.client; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import org.kie.api.task.model.Comment; -import org.kie.api.task.model.Status; -import org.kie.api.task.model.Task; -import org.kie.api.task.model.TaskData; -import org.mvel2.PropertyAccessException; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.bpm.query.QueryProcessor; -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.ProcessUtil; -import com.fp.common.messages.ELEval; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.TransactionDTO; -import com.fp.dto.query.QueryRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionMaping; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionOrigin; -import com.fp.persistence.pbpm.gene.TbpmRules; -import com.fp.persistence.pbpm.gene.TbpmRulesKey; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionKey; -import com.fp.simple.dto.Responses; -import com.fp.simple.dto.TaskInfo; - -// TODO: Auto-generated Javadoc -/** - * Class TaskUtil encargada del manejo de Tareas. - * - * @author Jvaca - */ -public class TaskUtil { - - /** Constante BPM_STATUS. */ - public static final String BPM_STATUS = "BPMStatus"; - - /** Constante BPM_DATA. */ - public static final String BPM_DATA = "BPMData"; - - /** Constante BPM_OBS. */ - public static final String BPM_OBS = "BPMObs"; - - /** Constante BPM_TID. */ - public static final String BPM_TID = "TID"; - - /** El valor de task. */ - private Task task; - - /** El valor de task data. */ - private TaskData taskData; - - /** El valor de htc. */ - private final HumanTaskClient htc; - - /** El valor de tid. */ - private long tid; - - /** El valor de taskname. */ - private long taskname; - - /** El valor de input. */ - private Map input = null; - - /** - * Crea una nueva instancia de TaskUtil. - * - * @throws Exception la exception - */ - private TaskUtil() throws Exception { - htc = new HumanTaskClient(); - } - - /** - * Crea una nueva instancia de TaskUtil. - * - * @throws Exception la exception - */ - public TaskUtil(Task task, HumanTaskClient htc) throws Exception { - this.htc = htc; - this.task = task; - this.tid = this.task.getId(); - taskData = task.getTaskData(); - } - - /** - * Entrega el valor de task. - * - * @return Valor de task - */ - public Task getTask() { - return task; - } - - /** - * Entrega el valor de taskData. - * - * @return Valor de taskData - */ - public TaskData getTaskData() { - return taskData; - } - - /** - * Entrega el valor de tid. - * - * @return Valor de tid - */ - public long getTid() { - return tid; - } - - /** - * Entrega el valor de: taskname - * - * @return long - */ - public long getTaskname() { - return taskname; - } - - /** - * Fija el valor de: taskname - * - * @param taskname - */ - public void setTaskname(long taskname) { - this.taskname = taskname; - } - - /** - * Crea una nueva instancia de task til. - * - * @param pTId the t id - * @throws Exception la exception - */ - public TaskUtil(long pTId) throws Exception { - this(); - tid = pTId; - task = htc.getTaskById(pTId); - taskData = task.getTaskData(); - } - - /** - * Close. - * - * @throws Exception la exception - */ - public void close() throws Exception { - htc.close(); - } - - /** - * Obtiene el valor de task info. - * - * @return Valor de task info - * @throws Exception la exception - */ - public TaskInfo getTaskInfo() throws Exception { - Map m = this.getActualData(); - Object obj = m.get(ProcessUtil.TASK_METADATA); - return (TaskInfo) obj; - } - - /** - * Obtiene el valor del juego de variables de MAIA. - * - * @return Valor de las variables MAIA - * @throws Exception la exception - */ - @SuppressWarnings("unchecked") - public Map getMaia() throws Exception { - Map m = this.getActualData(); - return (Map) m.get(ProcessUtil.DATA); - } - - /** - * Obtiene el Request. - * - * @return Request - * @throws Exception la exception - */ - public Request getRequest() throws Exception { - Map maia = this.getMaia(); - return (Request) maia.get(ProcessUtil.REQUEST); - } - - /** - * Obtiene el valor de actual data. - * - * @return Valor de actual data - * @throws Exception la exception - */ - public Map getActualData() throws Exception { - if (input != null) { - return input; - } - if (taskData.getStatus() == Status.Completed) { - input = htc.getOutputData(task); - } else { - input = htc.getInputData(task); - } - return input; - } - - /** - * Obtiene el valor de status. - * - * @return Valor de status - */ - public Status getStatus() { - return taskData.getStatus(); - } - - /** - * Obtiene el valor de work item id. - * - * @return Valor de work item id - */ - public long getWorkItemId() { - return taskData.getWorkItemId(); - } - - /** - * Obtiene el valor de comments. - * - * @return Valor de comments - * @throws Exception la exception - */ - public List getComments() throws Exception { - return taskData.getComments(); - } - - /** - * Complete. - * - * @param pJournalId the journal id - * @param data the data - * @param pResponse the response - * @param pObs the obs - * @throws Exception la exception - */ - public String complete(String pJournalId, Map data, Responses pResponse, String pObs) throws Exception { - try { - return htc.completeTask(tid, pJournalId, data, pResponse.getCode(), pObs.toUpperCase()); - } catch (Exception e) { - throw new BPMException("BPM502", "NO SE HA PODIDO COMPLETAR LA TAREA {0} ", e, tid); - } - } - - /** - * Start. - * - * @throws Exception la exception - */ - public void start() throws Exception { - try { - htc.startTask(tid); - } catch (Exception e) { - throw new BPMException("BPM501", "NO SE HA PODIDO INICIAR LA TAREA {0} ", e, tid); - } - } - - /** - * Claim. - * - * @param pUser the user - * @throws Exception la exception - */ - public void claim(String pUser) throws Exception { - try { - htc.claimTask(tid, pUser); - } catch (Exception e) { - throw new BPMException("BPM500", "NO SE HA PODIDO RESERVAR LA TAREA {0} PARA EL USUARIO {1}", e, tid, pUser); - } - } - - /** - * Comment. - * - * @param pUser the user - * @param pComment the comment - * @throws Exception la exception - */ - public void comment(String pUser, String pComment) throws Exception { - try { - htc.addComment(tid, pUser, pComment.toUpperCase()); - } catch (Exception e) { - throw new BPMException("BPM504", "NO SE HA PODIDO MODIFICAR LA TAREA {0} ", e, tid); - } - } - - /** - * Reasign. - * - * @param pUser the user - * @throws Exception la exception - */ - public void delegate(String pUser) throws Exception { - try { - htc.delegateTask(tid, taskData.getActualOwner().getId(), pUser); - } catch (Exception e) { - throw new BPMException("BPM504", "NO SE HA PODIDO MODIFICAR LA TAREA {0} ", e, tid); - } - } - - /** - * Obtiene el valor de subject. - * - * @return Valor de subject - * @throws Exception la exception - */ - public String getSubject() throws Exception { - String subject = ""; - Request req = this.getRequest(); - if (req.getSubject() == null) { - req.setSubject(MessageManager.getMessage(req)); - } - subject = req.getSubject(); - return subject; - } - - /** - * Obtiene la descripcion de la regla. - * - * @return descripcion de la regla - * @throws Exception la exception - */ - public String getRuleDescription() throws Exception { - Request req = this.getRequest(); - TaskInfo info = this.getTaskInfo(); - TbpmRulesKey rk = new TbpmRulesKey(info.getRuleCode(), req.getCompany()); - TbpmRules r = TbpmRules.find(PersistenceHelper.getEntityManager(), rk); - if (r != null) { - return " " + r.getDescription(); - } - return ""; - } - - /** - * Obtiene el valor de transaction. - * - * @return Valor de transaction - * @throws Exception la exception - */ - public TransactionDTO getTransaction() throws Exception { - TaskInfo info = this.getTaskInfo(); - return new TransactionDTO(info.getModule(), info.getTransaction(), info.getVersion()); - } - - /** - * Obtiene el valor de detail. - * - * @param pLanguage the language - * @return Valor de detail - * @throws Exception la exception - */ - public String getDetail(String pLanguage) throws Exception { - TaskInfo info = this.getTaskInfo(); - Integer messagecode = info.getMessageCode(); - if (messagecode == null) { - TbpmRulesKey k = new TbpmRulesKey(info.getRuleCode(), ThreadFacade.getSessionData().getCompany()); - TbpmRules r = TbpmRules.find(PersistenceHelper.getEntityManager(), k); - messagecode = r.getMessagecode(); - } - com.fp.bpmlib.messages.MessageManager msg = new com.fp.bpmlib.messages.MessageManager(messagecode, pLanguage, null); - msg.setValue(TaskUtil.BPM_DATA, this.getMaia()); - msg.setValue("request", this.getRequest()); - msg.setValue(ProcessUtil.TASK_METADATA, info); - return msg.getMessage(); - } - - /** - * Obtiene el valor de origin data. - * - * @return Valor de origin data - * @throws Exception la exception - */ - public Map getOriginData() throws Exception { - Map data = new HashMap(); - Request rq = this.getRequest(); - List l = TbpmFieldTransactionOrigin.find(PersistenceHelper.getEntityManager(), rq.getTransactionModule(), - rq.getTransactionCode(), rq.getTransactionVersion()); - for (TbpmFieldTransactionOrigin o : l) { - try { - data.put(o.getPk().getFieldname(), ELEval.eval(rq, o.getExpresionlanguage())); - } catch (PropertyAccessException e) { - continue; - } - } - return data; - } - - /** - * Obtiene el valor de destiny meta data. - * - * @return Valor de destiny meta data - * @throws Exception la exception - */ - public Map getDestinyMetaData() throws Exception { - Map data = new HashMap(); - TransactionDTO trn = this.getTransaction(); - List l = TbpmFieldTransactionMaping.find(PersistenceHelper.getEntityManager(), trn.getModule(), - trn.getTransaction(), trn.getVersion()); - for (TbpmFieldTransactionMaping o : l) { - data.put(o.getFieldscreen(), o.getPk().getFieldname()); - } - return data; - } - - /** - * Obtiene el valor de destiny data. - * - * @return Valor de destiny data - * @throws Exception la exception - */ - public Map getDestinyData() throws Exception { - Map data = new HashMap(); - Map origin = this.getOriginData(); - Map meta = this.getDestinyMetaData(); - for (Entry e : meta.entrySet()) { - data.put(e.getKey(), origin.get(e.getValue())); - } - TransactionDTO trn = this.getTransaction(); - TgeneTransactionKey tKey = new TgeneTransactionKey(trn.getModule(), trn.getTransaction(), trn.getVersion()); - TgeneTransaction trnData = TgeneTransaction.find(PersistenceHelper.getEntityManager(), tKey); - if (trnData != null && trnData.getQuerycode() != null) { - QueryProcessor qp = new QueryProcessor(); - QueryRequest qr = new QueryRequest(); - qr.setResponse(new Response(Response.RESPONSE_OK, "OK")); - qr.setTransactionModule(trn.getModule()); - qr.setTransactionCode(trn.getTransaction()); - qr.setTransactionVersion(trn.getVersion()); - qr.setTransactionModule(trn.getModule()); - for (Entry e : data.entrySet()) { - qr.put(e.getKey(), e.getValue()); - } - qr.addAddtionalInfo("queryalias", trnData.getQuerycode()); - qr.addAddtionalInfo("querytype", "P"); - qp.setQueryRequest(qr); - qp.processQueryByAlias(); - - for (Entry e : qr.getResponse().entrySet()) { - data.put(e.getKey(), e.getValue()); - } - } - return data; - } - - /** - * Entrega el map que almacena datos utilizados en el bpm. - * - * @param request Request a obtener el map de datos utilizados en el jbpm. - * @return Map - * @throws Exception la exception - */ - public static Map getBpmData(Request request) throws Exception { - @SuppressWarnings("unchecked") - Map mdata = (Map) request.get(TaskUtil.BPM_DATA); - if (mdata == null) { - mdata = new HashMap(); - request.put(TaskUtil.BPM_DATA, mdata); - } - return mdata; - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index c36e71e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/client/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes para el cliente del Servidor de Tareas. - */ -package com.fp.bpmlib.task.client; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/entries deleted file mode 100644 index f6e0b51..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util -svn://172.17.26.185/COMACO - - - -2014-10-29T05:04:38.445380Z -2082 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CustomIdentityProvider.java -file - - - - -2022-07-28T03:40:45.795816Z -c7d4a2ecb0224b7c596eb1e8759a0cf5 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -733 - -MaiaUserGroupCallback.java -file - - - - -2022-07-28T03:40:45.795816Z -9c83363057787c771b8f67dff1303fc2 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1104 - -MaiaApplicationScopeProducer.java -file - - - - -2022-07-28T03:40:45.796816Z -390dbf2432e0fa15fae4c65f35734c35 -2014-10-29T05:04:38.445380Z -2082 -jvaca - - - - - - - - - - - - - - - - - - - - - -1820 - -CustomDeploymentService.java -file - - - - -2022-07-28T03:40:45.796816Z -2d39925f60ea91f32f21e7a3f3b00488 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1170 - -SimpleWorkItemHandlerProducer.java -file - - - - -2022-07-28T03:40:45.796816Z -685a052ea11e7af655e5d9b48573d388 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -561 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomDeploymentService.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomDeploymentService.java.svn-base deleted file mode 100644 index 39c7936..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomDeploymentService.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.bpmlib.task.util; - - -import java.util.Collection; - -import org.kie.api.runtime.manager.RuntimeManager; -import org.kie.internal.deployment.DeployedUnit; -import org.kie.internal.deployment.DeploymentService; -import org.kie.internal.deployment.DeploymentUnit; - -// plain CustomDeploymentService solves: -// Caused by: org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [DeploymentService] -// with qualifiers [@Default] at injection point [[field] @Inject private -// org.jbpm.kie.services.impl.form.FormProviderServiceImpl.deploymentService] -// @ApplicationScoped -public class CustomDeploymentService implements DeploymentService { - - @Override - public void deploy(DeploymentUnit deploymentUnit) { - } - - @Override - public void undeploy(DeploymentUnit deploymentUnit) { - } - - @Override - public RuntimeManager getRuntimeManager(String s) { - return null; - } - - @Override - public DeployedUnit getDeployedUnit(String s) { - return null; - } - - @Override - public Collection getDeployedUnits() { - return null; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomIdentityProvider.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomIdentityProvider.java.svn-base deleted file mode 100644 index 5887816..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/CustomIdentityProvider.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.bpmlib.task.util; - - -import java.util.Collections; -import java.util.List; - -import org.jbpm.kie.services.api.IdentityProvider; - -// dummy CustomIdentityProvider solves: -// org.jboss.weld.exceptions.DeploymentException: WELD-001408 Unsatisfied dependencies for type [IdentityProvider] -// with qualifiers [@Default] at injection point [[field] @Inject private -// org.jbpm.kie.services.impl.KModuleDeploymentService.identityProvider] -// @ApplicationScoped -public class CustomIdentityProvider implements IdentityProvider { - - @Override - public String getName() { - return "dummy"; - } - - @Override - public List getRoles() { - - return Collections.emptyList(); - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaApplicationScopeProducer.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaApplicationScopeProducer.java.svn-base deleted file mode 100644 index c3dbe53..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaApplicationScopeProducer.java.svn-base +++ /dev/null @@ -1,50 +0,0 @@ -package com.fp.bpmlib.task.util; - -import javax.enterprise.context.ApplicationScoped; -import javax.enterprise.inject.Produces; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; -import javax.persistence.PersistenceUnit; - -import org.kie.api.runtime.manager.RuntimeEnvironment; -import org.kie.api.runtime.manager.RuntimeEnvironmentBuilder; - -/** - * Necesita esta claese para que funcione el jbpm, internamente utiliza el EntiyManagerFactory. - * - * @author jorge - */ -@ApplicationScoped -public class MaiaApplicationScopeProducer { - - @PersistenceUnit(unitName = "org.jbpm.domain") - private EntityManagerFactory emf; - - @Produces - public EntityManagerFactory produceEntityManagerFactory() { - if (emf == null) { - emf = Persistence.createEntityManagerFactory("org.jbpm.domain"); - } - return emf; - } - - // @Produces - // @Singleton - // @PerProcessInstance - // @PerRequest - public RuntimeEnvironment produceEnvironment(EntityManagerFactory emf) { - - // RuntimeEnvironment environment = - // RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf) - // .userGroupCallback(usergroupCallback).addAsset(ResourceFactory.newClassPathResource("prueba.bpmn2"), - // ResourceType.BPMN2) - // .get(); - RuntimeEnvironmentBuilder builder = RuntimeEnvironmentBuilder.Factory.get().newDefaultBuilder().entityManagerFactory(emf); - // builder.userGroupCallback(usergroupCallback); - // builder.registerableItemsFactory(factory); - // builder.addAsset(ResourceFactory.newClassPathResource("prueba.bpmn2"), ResourceType.BPMN2); - RuntimeEnvironment environment = builder.get(); - return environment; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaUserGroupCallback.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaUserGroupCallback.java.svn-base deleted file mode 100644 index 16261ab..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/MaiaUserGroupCallback.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -package com.fp.bpmlib.task.util; - -import java.util.ArrayList; -import java.util.List; - -import javax.enterprise.inject.Alternative; - -import com.fp.bpmlib.task.client.HumanTaskClient; - -@Alternative -public class MaiaUserGroupCallback implements org.kie.internal.task.api.UserGroupCallback { - - public MaiaUserGroupCallback() { - } - - @Override - public boolean existsUser(String userId) { - return true; - // return userId.equals("jvaca") || userId.equals("john") || userId.equals("mary") || userId.equals("Administrator"); - } - - @Override - public boolean existsGroup(String groupId) { - return true; - // return groupId.equals("PM") || groupId.equals("HR"); - } - - @Override - public List getGroupsForUser(String userId, List groupIds, List allExistingGroupIds) { - List groups = new ArrayList<>(); - try { - groups = HumanTaskClient.groupsByUser(userId); - } catch (Exception e) { - // retorn la lista vacia. - } - - return groups; - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/SimpleWorkItemHandlerProducer.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/SimpleWorkItemHandlerProducer.java.svn-base deleted file mode 100644 index 5d8da12..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/task/util/.svn/text-base/SimpleWorkItemHandlerProducer.java.svn-base +++ /dev/null @@ -1,16 +0,0 @@ -package com.fp.bpmlib.task.util; - -import java.util.HashMap; -import java.util.Map; - -import org.kie.api.runtime.process.WorkItemHandler; -import org.kie.internal.runtime.manager.WorkItemHandlerProducer; - -public class SimpleWorkItemHandlerProducer implements WorkItemHandlerProducer { - - @Override - public Map getWorkItemHandlers(String s, Map stringObjectMap) { - // add any WorkItemHandlers that should be registered on the session - return new HashMap(); - } -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/entries deleted file mode 100644 index 554e402..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/entries +++ /dev/null @@ -1,136 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -task -dir - -package-info.java -file - - - - -2022-07-28T03:40:45.687816Z -2dddc1cb1986b5141dd0ff95538780ee -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -113 - -PackageGetter.java -file - - - - -2022-07-28T03:40:45.687816Z -898bc69a8dc2df84d402bb8ca45e7478 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3222 - -flow -dir - -RuleTrigger.java -file - - - - -2022-07-28T03:40:45.688816Z -4c4d7f214af02621c2a5ef9357a27ddc -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -991 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.netbeans-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.netbeans-base deleted file mode 100644 index 9bc8d2e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.netbeans-base +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction; - -import java.io.IOException; -import java.io.InputStream; -import java.net.Authenticator; -import java.net.PasswordAuthentication; -import java.net.URL; -import java.text.MessageFormat; -import java.util.List; - -import com.fp.bpmlib.db.BPMProperties; -import com.fp.common.files.StreamHelper; -import com.fp.common.logger.APPLogger; -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pbpm.gene.TbpmRules; - -// TODO: Auto-generated Javadoc -/** - * Class PackageGetter encargada de. - * - * @author gfiallos - */ -public class PackageGetter extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - PropertiesHandler ph = BPMProperties.getInstance(); - List data = pReq.getBeans().get("TBPMRULES").getModifiedRecords(); - for (Object object : data) { - TbpmRules rule1 = (TbpmRules) object; - if (ph.getStringValue(BPMProperties.GUVNOR_SECURITY_BASIC_AUTHENTICATION).compareTo("enabled") == 0) { - Authenticator.setDefault(new GuvnorAuthenticator()); - } - String url = MessageFormat.format(ph.getStringValue(BPMProperties.GUVNOR_URL), rule1.getPackagename(), rule1.getSnapshot()); - URL udata = new URL(url); - InputStream ib = null; - try { - ib = udata.openStream(); - rule1.setContent(StreamHelper.streamToBytes(ib)); - pReq.getResponse().put("RELOAD", "OK"); - } catch (IOException e) { - APPLogger.getLogger().debug("IOError: " + e); - pReq.getResponse().put("RELOAD", "ERROR"); - } finally { - if(ib != null){ - ib.close(); - } - } - // InputStream ib = udata.openStream(); - // rule1.setContent(StreamHelper.streamToBytes(ib)); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} - -/** - * Clase empleada para la autenticacin con Guvnor - * - * @author gfiallos - * - */ -class GuvnorAuthenticator extends Authenticator { - - @Override - protected PasswordAuthentication getPasswordAuthentication() { - try { - PropertiesHandler ph = BPMProperties.getInstance(); - return new PasswordAuthentication(ph.getStringValue(BPMProperties.GUVNOR_SECURITY_USERNAME), ph.getStringValue( - BPMProperties.GUVNOR_SECURITY_PASSWORD).toCharArray()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.svn-base deleted file mode 100644 index 9bc8d2e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/PackageGetter.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction; - -import java.io.IOException; -import java.io.InputStream; -import java.net.Authenticator; -import java.net.PasswordAuthentication; -import java.net.URL; -import java.text.MessageFormat; -import java.util.List; - -import com.fp.bpmlib.db.BPMProperties; -import com.fp.common.files.StreamHelper; -import com.fp.common.logger.APPLogger; -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pbpm.gene.TbpmRules; - -// TODO: Auto-generated Javadoc -/** - * Class PackageGetter encargada de. - * - * @author gfiallos - */ -public class PackageGetter extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - PropertiesHandler ph = BPMProperties.getInstance(); - List data = pReq.getBeans().get("TBPMRULES").getModifiedRecords(); - for (Object object : data) { - TbpmRules rule1 = (TbpmRules) object; - if (ph.getStringValue(BPMProperties.GUVNOR_SECURITY_BASIC_AUTHENTICATION).compareTo("enabled") == 0) { - Authenticator.setDefault(new GuvnorAuthenticator()); - } - String url = MessageFormat.format(ph.getStringValue(BPMProperties.GUVNOR_URL), rule1.getPackagename(), rule1.getSnapshot()); - URL udata = new URL(url); - InputStream ib = null; - try { - ib = udata.openStream(); - rule1.setContent(StreamHelper.streamToBytes(ib)); - pReq.getResponse().put("RELOAD", "OK"); - } catch (IOException e) { - APPLogger.getLogger().debug("IOError: " + e); - pReq.getResponse().put("RELOAD", "ERROR"); - } finally { - if(ib != null){ - ib.close(); - } - } - // InputStream ib = udata.openStream(); - // rule1.setContent(StreamHelper.streamToBytes(ib)); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} - -/** - * Clase empleada para la autenticacin con Guvnor - * - * @author gfiallos - * - */ -class GuvnorAuthenticator extends Authenticator { - - @Override - protected PasswordAuthentication getPasswordAuthentication() { - try { - PropertiesHandler ph = BPMProperties.getInstance(); - return new PasswordAuthentication(ph.getStringValue(BPMProperties.GUVNOR_SECURITY_USERNAME), ph.getStringValue( - BPMProperties.GUVNOR_SECURITY_PASSWORD).toCharArray()); - } catch (Exception e) { - throw new RuntimeException(e); - } - - } -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/RuleTrigger.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/RuleTrigger.java.svn-base deleted file mode 100644 index 8953b0c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/RuleTrigger.java.svn-base +++ /dev/null @@ -1,44 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Clase encargada de disparar reglas dada una petición de mantenimiento. - * - * @author gfiallos - */ -public class RuleTrigger extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - /** - * Reverse process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index b9e0a7c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes para transacciones en modo mantenimiento. - */ -package com.fp.bpmlib.transaction; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/entries deleted file mode 100644 index 8dcd6d0..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -StartFlowNewOnly.java -file - - - - -2022-07-28T03:40:45.653816Z -a14717cf373ef720814d10b1ba5ab27b -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -734 - -package-info.java -file - - - - -2022-07-28T03:40:45.653816Z -8d8eee3fc97cac7a451e5eda3e61c9d5 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -106 - -StartFlow.java -file - - - - -2022-07-28T03:40:45.653816Z -e764d3aacdbf3aecaf517a293774a327 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1645 - -StartFlowEndNewOnly.java -file - - - - -2022-07-28T03:40:45.653816Z -a66ae6c838746a5efce9f88fc5aefa46 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -743 - -StartFlowMemoryNewOnly.java -file - - - - -2022-07-28T03:40:45.654816Z -027469b244324acf9b74509421e491f3 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -752 - -StartFlowEnd.java -file - - - - -2022-07-28T03:40:45.654816Z -e49b8d6e2f1b3a116d3e9bf0dbd7a873 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -846 - -StartFlowMemory.java -file - - - - -2022-07-28T03:40:45.654816Z -a0e2cb324b2ffb117edfe4fc2fe29137 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1419 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlow.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlow.java.svn-base deleted file mode 100644 index bd0807e..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlow.java.svn-base +++ /dev/null @@ -1,64 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import com.fp.bpmlib.Flujo; -import com.fp.bpmlib.RegisterFlow; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -/** - * Class StartFlow encargada de. - * - * @author jvaca - * @version 2.1 - */ -public class StartFlow extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de completed. */ - protected boolean completed = false; - - /** El valor de p. */ - protected Flujo flujo; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - try { - flujo = new Flujo(); - flujo.iniciar(this.flow, pRequest); - if (this.flujo.getProcessInstance().getState() != org.kie.api.runtime.process.ProcessInstance.STATE_COMPLETED) { - RegisterFlow rf = new RegisterFlow(this.flujo, pRequest); - rf.registerFlow(); - } else { - this.completed = true; - } - } finally { - //la session se cierra automaticamente al trabajar con JTA. - } - return pRequest; - } - - /** - * Reverse process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEnd.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEnd.java.svn-base deleted file mode 100644 index 5ea5b8b..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEnd.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import com.fp.bpmlib.BPMException; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class StartFlowEnd encargada de. - * - * @author gfiallos - */ -public class StartFlowEnd extends StartFlow { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - SaveRequest sr = super.normalProcess(pRequest); - if (!this.completed) { - throw new BPMException("BPM-0006", "SE HA INICIADO UN FLUJO DE AUTORIZACION"); - } - return sr; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEndNewOnly.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEndNewOnly.java.svn-base deleted file mode 100644 index fbcc7ac..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowEndNewOnly.java.svn-base +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class StartFlowEndNewOnly encargada de. - * - * @author gfiallos - */ -public class StartFlowEndNewOnly extends StartFlowEnd { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - if (!this.isNew(pRequest)) { - return pRequest; - } - return super.normalProcess(pRequest); - - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemory.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemory.java.svn-base deleted file mode 100644 index d4a4321..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemory.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import org.kie.api.runtime.process.ProcessInstance; - -import com.fp.bpmlib.BPMException; -import com.fp.bpmlib.Flujo; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -/** - * Class StartFlowMemory encargada de. - * - * @author gfiallos - */ -public class StartFlowMemory extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - Flujo flujo = new Flujo(); - try { - flujo.iniciar(this.flow, pRequest); - if (flujo.getProcessInstance().getState() != ProcessInstance.STATE_COMPLETED) { - throw new BPMException("BPM-0005", "EL FLUJO {0} NO ESTA FINALIZADO", flujo.getProcessInstance().getId()); - } - return pRequest; - } finally { - - } - } - - /** - * Reverse process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - -} \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemoryNewOnly.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemoryNewOnly.java.svn-base deleted file mode 100644 index f8e1e12..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowMemoryNewOnly.java.svn-base +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class StartFlowMemoryNewOnly encargada de. - * - * @author gfiallos - */ -public class StartFlowMemoryNewOnly extends StartFlowMemory { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - - if (!this.isNew(pRequest)) { - return pRequest; - } - return super.normalProcess(pRequest); - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowNewOnly.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowNewOnly.java.svn-base deleted file mode 100644 index 52f67e2..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/StartFlowNewOnly.java.svn-base +++ /dev/null @@ -1,35 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.flow; - -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class StartFlowNewOnly encargada de. - * - * @author gfiallos - */ -public class StartFlowNewOnly extends StartFlow { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pRequest the request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - if (!this.isNew(pRequest)) { - return pRequest; - } - return super.normalProcess(pRequest); - - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 554b99f..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/flow/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los componentes encargados de iniciar flujos. - */ -package com.fp.bpmlib.transaction.flow; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/entries b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/entries deleted file mode 100644 index 3617ce6..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/entries +++ /dev/null @@ -1,402 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AddResource.java -file - - - - -2022-07-28T03:40:45.597815Z -fc0b10d27fe6f0be0bd545702ff02354 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1249 - -TaskStart.java -file - - - - -2022-07-28T03:40:45.597815Z -74ad4cd8f9a04987a99bcc7ff01af4e2 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1162 - -ServerManager.java -file - - - - -2022-07-28T03:40:45.598815Z -704747e6cc4d26d14d1320770948520c -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1470 - -package-info.java -file - - - - -2022-07-28T03:40:45.598815Z -49c7e25d881ed6227943b9e9647bb66b -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -108 - -TaskUpdater.java -file - - - - -2022-07-28T03:40:45.598815Z -9e090e950fb8a3d5f845c1f92f2cfb03 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1680 - -AddGroups.java -file - - - - -2022-07-28T03:40:45.598815Z -fffa2c663bed2c91e18f7033dd484db8 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1696 - -TaskClaim.java -file - - - - -2022-07-28T03:40:45.599815Z -9cce84308728789d7c59d6d81117dc31 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1176 - -TaskComments.java -file - - - - -2022-07-28T03:40:45.599815Z -057c53473df2fdd2ed22ed8035ad3180 -2014-10-17T05:12:41.195407Z -1664 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1338 - -AddUsers.java -file - - - - -2022-07-28T03:40:45.599815Z -d13cfb52a64add6bd1a17795b39d7672 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1759 - -TaskComplete.java -file - - - - -2022-07-28T03:40:45.599815Z -afb9884ea7e440c6aa2c1190ee1522c0 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2077 - -TaskDelegate.java -file - - - - -2022-07-28T03:40:45.600815Z -6ff2deab67063f7e257b2e19468b9642 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1185 - diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddGroups.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddGroups.java.svn-base deleted file mode 100644 index dcb7f91..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddGroups.java.svn-base +++ /dev/null @@ -1,61 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.bpmlib.transaction.task; - -import java.util.List; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pbpm.gene.TbpmGroups; - -// TODO: Auto-generated Javadoc -/** - * Class AddGroups encargada de. - * - * @author BPTWPA - */ -public class AddGroups extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - List tbpmGroups = pSaveRequest.getSaveBeanModifiedRecords("TBPMGROUPS"); - if (tbpmGroups != null) { - for (Object objs : tbpmGroups) { - try { - TbpmGroups groups = (TbpmGroups) objs; - //TaskServerSingleton.getInstance().getDaemon().addGroup(groups.getPk().getGroupcode()); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - } - } - return pSaveRequest; - } - - /** - * Reverse process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddResource.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddResource.java.svn-base deleted file mode 100644 index cbc840f..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddResource.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class AddResource encargada de. - * - * @author gfiallos - */ -public class AddResource extends TransactionRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - String type = (String) pReq.get("TYPE"); - String name = (String) pReq.get("NAME"); - if ("U".equals(type)) { - //TaskServerSingleton.getInstance().getDaemon().addUser(name); - } else { - //TaskServerSingleton.getInstance().getDaemon().addGroup(name); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddUsers.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddUsers.java.svn-base deleted file mode 100644 index 7430661..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/AddUsers.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -// TODO: Auto-generated Javadoc -/** - * Class AddUsers encargada de. - * - * @author gfiallos - */ -public class AddUsers extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) pSaveRequest.getSaveBeanModifiedObject("TSAFEUSERDETAIL"); - if (tsafeUserDetail == null) { - tsafeUserDetail = (TsafeUserDetail) pSaveRequest.getSaveBeanModifiedObject("USERDETAIL"); - } - if (tsafeUserDetail == null) { - return pSaveRequest; - } - String isuserbpm = tsafeUserDetail.getIsuserbpm(); - if (Constant.ifYes(isuserbpm)) { - try { - //TaskServerSingleton.getInstance().getDaemon().addUser(tsafeUserDetail.getPk().getUsercode()); - } catch (Exception e) { - // - } - } - return pSaveRequest; - } - - /** - * Reverse process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - - return pSaveRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/ServerManager.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/ServerManager.java.svn-base deleted file mode 100644 index aff4c43..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/ServerManager.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.base.persistence.util.job.ServiceManager; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Clase ServerManager encargada de iniciar o detener el Servidor de Tareas. - * - * @author gfiallos - */ -public class ServerManager extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String status = (String) pSaveRequest.get("status"); - String code = (String) pSaveRequest.get("code"); - ServiceManager sm = new ServiceManager(); - if ("I".equals(status)) { - sm.startService(code); - } else { - sm.stopService(code); - } - pSaveRequest.getResponse().put("TSStatus", sm.isRunning(code)); - return pSaveRequest; - } - - /** - * Reverse process. - * - * @param pSaveRequest the save request - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskClaim.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskClaim.java.svn-base deleted file mode 100644 index 987cb36..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskClaim.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class TaskClaim encargada de. - * - * @author gfiallos - */ -public class TaskClaim extends TransactionRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - Long tid = pReq.getLong(TaskUtil.BPM_TID); - TaskUtil t = new TaskUtil(tid); - try { - t.claim(pReq.getUser()); - } finally { - t.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComments.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComments.java.svn-base deleted file mode 100644 index 6d04d5c..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComments.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class TaskComplete encargada de completar tareas. - * - * @author gfiallos - */ -public class TaskComments extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - if (pReq.get(TaskUtil.BPM_TID) == null) { - return pReq; - } - long tid = pReq.getLong(TaskUtil.BPM_TID); - TaskUtil util = new TaskUtil(tid); - // util - try { - util.comment(pReq.getUser(), pReq.getString(TaskUtil.BPM_OBS)); - } finally { - util.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComplete.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComplete.java.svn-base deleted file mode 100644 index b9f6348..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskComplete.java.svn-base +++ /dev/null @@ -1,70 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; - -// TODO: Auto-generated Javadoc -/** - * Class TaskComplete encargada de completar tareas. - * - * @author gfiallos - */ -public class TaskComplete extends TransactionRule { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - if (pReq.get(TaskUtil.BPM_TID) == null) { - return pReq; - } - // SaveProcessor.saveAndFlush(pReq); - long tid = pReq.getLong(TaskUtil.BPM_TID); - TaskUtil util = new TaskUtil(tid); - try { - @SuppressWarnings("unchecked") - Map data = (Map) pReq.get(TaskUtil.BPM_DATA); - APPLogger.getLogger().warn("Parametros a la Tarea " + data); - if (data == null) { - data = new HashMap(); - } - Responses resp = Responses.findResponse(pReq.getString(TaskUtil.BPM_STATUS)); - data.put("datosmail", pReq.get("datosmail") == null ? "" : pReq.get("datosmail")); - String taskname = util.complete(pReq.getJournalId(), data, resp, pReq.getString(TaskUtil.BPM_OBS)); - pReq.put("taskname", taskname); - } finally { - util.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskDelegate.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskDelegate.java.svn-base deleted file mode 100644 index 496ce92..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskDelegate.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class TaskDelegate encargada de. - * - * @author gfiallos - */ -public class TaskDelegate extends TransactionRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - Long tid = pReq.getLong(TaskUtil.BPM_TID); - TaskUtil t = new TaskUtil(tid); - try { - t.delegate(pReq.getUser()); - } finally { - t.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskStart.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskStart.java.svn-base deleted file mode 100644 index 1ebec94..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskStart.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class TaskStart encargada de. - * - * @author gfiallos - */ -public class TaskStart extends TransactionRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - Long tid = pReq.getLong(TaskUtil.BPM_TID); - TaskUtil t = new TaskUtil(tid); - try { - t.start(); - } finally { - t.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskUpdater.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskUpdater.java.svn-base deleted file mode 100644 index 675d3b5..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/TaskUpdater.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -/* - * - */ -package com.fp.bpmlib.transaction.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; - -// TODO: Auto-generated Javadoc -/** - * Class TaskUpdater encargada de. - * - * @author gfiallos - */ -public class TaskUpdater extends TransactionRule { - - /** Constante serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Normal process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pReq) throws Exception { - String status = pReq.getString("STATUS"); - Long tid = pReq.getLong("TID"); - TaskUtil t = new TaskUtil(tid); - try { - switch (status.charAt(0)) { - case 'S': - t.start(); - break; - case 'C': - Map data = new HashMap(); - t.complete(pReq.getJournalId(), data, Responses.OK, "OBS"); - break; - default: - throw new Exception("Error " + status); - } - } finally { - t.close(); - } - return pReq; - } - - /** - * Reverse process. - * - * @param pReq the req - * @return save request - * @throws Exception la exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pReq) throws Exception { - return pReq; - } - -} diff --git a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 5c42bff..0000000 --- a/base/bpm/bpmlib/src/main/java/com/fp/bpmlib/transaction/task/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee los comonentes para la manipulación de Tareas. - */ -package com.fp.bpmlib.transaction.task; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/.svn/entries b/base/bpm/bpmlib/src/main/resources/.svn/entries deleted file mode 100644 index 0c6f128..0000000 --- a/base/bpm/bpmlib/src/main/resources/.svn/entries +++ /dev/null @@ -1,170 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/resources -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ChangeSet.xml -file - - - - -2022-07-28T03:40:46.209818Z -598e270b1002d81ae85fa52176eb9c4e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -456 - -bpmmessages.properties -file - - - - -2022-07-28T03:40:46.210818Z -6c4fee573c6282c868f85ea16f766f16 -2014-12-17T10:49:55.348577Z -3562 -gbenavides - - - - - - - - - - - - - - - - - - - - - -1103 - -flows.xml -file - - - - -2022-07-28T03:40:46.210818Z -0b8e78d19d8a4a41575a17f4e2a19a57 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -632 - -flows -dir - -rules -dir - -change-set.xml -file - - - - -2022-07-28T03:40:46.210818Z -0b8e78d19d8a4a41575a17f4e2a19a57 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -632 - diff --git a/base/bpm/bpmlib/src/main/resources/.svn/text-base/ChangeSet.xml.svn-base b/base/bpm/bpmlib/src/main/resources/.svn/text-base/ChangeSet.xml.svn-base deleted file mode 100644 index c9cb3fa..0000000 --- a/base/bpm/bpmlib/src/main/resources/.svn/text-base/ChangeSet.xml.svn-base +++ /dev/null @@ -1,7 +0,0 @@ - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/.svn/text-base/bpmmessages.properties.svn-base b/base/bpm/bpmlib/src/main/resources/.svn/text-base/bpmmessages.properties.svn-base deleted file mode 100644 index 8b79cc2..0000000 --- a/base/bpm/bpmlib/src/main/resources/.svn/text-base/bpmmessages.properties.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -BPM-0001=LA REGLA {0} NO PUDO SER ENCONTRADA -BPM-0002=LA REGLA {0} NO PUEDE SER EVALUADA CON {1} -BPM-0003=LA REGLA {0} NO ESTA DISPONIBLE -BPM-0004=LA INSTANCIA {0} NO ESTA DISPONIBLE O YA FUE FINALIZADA -BPM-0005=EL FLUJO {0} NO ESTA FINALIZADO -BPM-0006=SE HA INICIADO UN FLUJO DE AUTORIZACION -BPM-0007=EL SERVIDOR DE TAREAS YA SE ENCUENTRA INICIADO -BPM-0008=NO SE HA ENCONTRADO LA TAREA {0} -BPM-0009=NO SE HA PODIDO ESTABLECER LA CONEXION CON EL SERVIDOR {0}:{1} -BPM-0010=NO SE HA PODIDO INICIAR EL FLUJO -BPM-0011=NO SE HA PODIDO ENCONTRAR LA PLANTILLA {0} - -#Etiquetas reporte excel Exportar flujos -lbl_description=DESCRIPCI\u00d3N -lbl_branch=SUCURSAL -lbl_office=OFICINA -lbl_terminal=TERMINAL -lbl_user=USUARIO -lbl_module=MODULO -lbl_transflow=TRANSACCI\u00d3N ORIGINADORA DEL FLUJO -lbl_activityname=NOMBRE ACTIVIDAD -lbl_sequence=SECUENCIA -lbl_userasigned=USUARIO ASIGNADO -lbl_groupAsign=GRUPO ASIGNADO -lbl_created=CREACI\u00d3N -lbl_started=FECHA INICIO -lbl_completed=FECHA FIN -lbl_expectedtime=TIEMPO ESTIMADO -lbl_response=RESPUESTA -lbl_task=TAREA -lbl_duracion=DURACI\u00d3N \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/.svn/text-base/change-set.xml.svn-base b/base/bpm/bpmlib/src/main/resources/.svn/text-base/change-set.xml.svn-base deleted file mode 100644 index eeedb65..0000000 --- a/base/bpm/bpmlib/src/main/resources/.svn/text-base/change-set.xml.svn-base +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/.svn/text-base/flows.xml.svn-base b/base/bpm/bpmlib/src/main/resources/.svn/text-base/flows.xml.svn-base deleted file mode 100644 index eeedb65..0000000 --- a/base/bpm/bpmlib/src/main/resources/.svn/text-base/flows.xml.svn-base +++ /dev/null @@ -1,9 +0,0 @@ - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/entries b/base/bpm/bpmlib/src/main/resources/flows/.svn/entries deleted file mode 100644 index f27532c..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/entries +++ /dev/null @@ -1,544 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/resources/flows -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -taskasign.bpmn -file - - - - -2022-07-28T03:40:46.148818Z -88652be2ed5e7aa3040105eb19e0e05b -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -19357 - -subproceso.bpmn -file - - - - -2022-07-28T03:40:46.147818Z -218e9dd7013fb9d731110fa5d271a325 -2014-11-11T11:23:50.860191Z -2627 -jvaca - - - - - - - - - - - - - - - - - - - - - -19831 - -casoprueba.bpmn -file - - - - -2022-07-28T03:40:46.147818Z -a2b34fbc373c9b2bd3664b7da01fc818 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -37745 - -testwpa.bpmn -file - - - - -2022-07-28T03:40:46.148818Z -c3d49ad9ea3936164b7e9e89b2bd808e -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -13734 - -catalogoprueba.bpmn -file - - - - -2022-07-28T03:40:46.148818Z -efc3794123ab5d6776609bab73b5b162 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -9698 - -final.bpmn -file - - - - -2022-07-28T03:40:46.148818Z -b6452da1ecdf93b959411c6849a9834a -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -17958 - -process.bpmn2 -file - - - - -2022-07-28T03:40:46.149818Z -2f24995c858a458a83e41bd3720ad91f -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9511 - -testuno.bpmn -file - - - - -2022-07-28T03:40:46.149818Z -1328b7cc274131f40db86d019a1d9ac8 -2014-10-29T09:26:33.991927Z -2141 -jvaca - - - - - - - - - - - - - - - - - - - - - -20157 - -pviaticos.bpmn -file - - - - -2022-07-28T03:40:46.149818Z -fa96451c47bbf9567b7c29366b3eaf33 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -54069 - -finalwpa.bpmn -file - - - - -2022-07-28T03:40:46.149818Z -e2a063224cc2fb66b1415bd3d0d4d3cd -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -19080 - -comaco -dir - -nuevoProceso.bpmn2 -file - - - - -2022-07-28T03:40:46.150818Z -2fbf5ee695f79091d7db14a68c38acc6 -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9516 - -prueba.bpmn -file - - - - -2022-07-28T03:40:46.150818Z -7a87b93edeb39bead7f5852de95ff4ab -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -3018 - -comacov2 -dir - -viaticosmanual.bpmn -file - - - - -2022-07-28T03:40:46.150818Z -0e1e45b88941975c0053c8220214ed87 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -39346 - -test.bpmn -file - - - - -2022-07-28T03:40:46.150818Z -e293f5530ffbf587afc01aa2ff4de0c6 -2014-11-11T11:23:50.860191Z -2627 -jvaca - - - - - - - - - - - - - - - - - - - - - -29782 - -viaticos.bpmn -file - - - - -2022-07-28T03:40:46.151818Z -a96a0342b1646cec75945d507fc6b6fd -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -135005 - diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/casoprueba.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/casoprueba.bpmn.svn-base deleted file mode 100644 index 262944a..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/casoprueba.bpmn.svn-base +++ /dev/null @@ -1,596 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - - System.out.println("DESEMBOLSO *****************************"); -taskMetaData=FlowUtil.createTaskInfo("13",514, 1,10,"ASIGNAROFICIAL",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Desembolso",actualTask); - - - _31-_32 - _32-_18 - - - - - - - - _32_maiaInput - _32_taskMetaDataInput - - - _32_actualTaskOutput - _32_maiaOutput - _32_taskMetaDataOutput - - - - maia - _32_maiaInput - - - taskMetaData - _32_taskMetaDataInput - - - _32_actualTaskOutput - actualTask - - - _32_maiaOutput - maia - - - _32_taskMetaDataOutput - taskMetaData - - - - - - System.out.println(">>>>>>>>>>Valida Personas"); -taskMetaData=FlowUtil.createTaskInfo("13",518, 1,10,"VALIDAPERSONAS",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Validar Personas",actualTask); -System.out.println(">>>>>>>Validar Personas>>>>"+taskMetaData.getResponse()); - - - _15-_5 - _5-_17 - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - _16-_12 - - - - _1-_15 - _15-_5 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - _5-_17 - _17-_19 - _17-_18 - - - _18-_16 - _16-_12 - FlowUtil.endFlow(kcontext); - - - _17-_19 - _19-_23 - _19-_25 - _19-_24 - - - _17-_18 - _31-_18 - _32-_18 - _27-_18 - _28-_18 - _26-_18 - _18-_16 - - - - - taskMetaDataVM=FlowUtil.createTaskInfo("13",499, 1,10,"VALIDAMONTO",Kind.OK_NO); -kcontext.setVariable("taskMetaDataVM",taskMetaDataVM); -System.out.println(">>>>>ValidaMonto "+taskMetaDataVM); - - - tasksMetaData.put("V.Monto",actualTaskVM); - - - _19-_23 - _23-_26 - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaDataVM - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTaskVM - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaDataVM - - - - - - taskMetaDataVT=FlowUtil.createTaskInfo("13",510, 1,10,"VALIDATASA",Kind.OK_NO); -kcontext.setVariable("taskMetaDataVT",taskMetaDataVT); -System.out.println(">>>>>ValidaTasa "+taskMetaDataVT); - - - tasksMetaData.put("V.Tasa",actualTaskVT); - - - _19-_25 - _25-_27 - - - - - - - - _25_maiaInput - _25_taskMetaDataInput - - - _25_actualTaskOutput - _25_maiaOutput - _25_taskMetaDataOutput - - - - maia - _25_maiaInput - - - taskMetaDataVT - _25_taskMetaDataInput - - - _25_actualTaskOutput - actualTaskVT - - - _25_maiaOutput - maia - - - _25_taskMetaDataOutput - taskMetaDataVT - - - - - - taskMetaDataVP=FlowUtil.createTaskInfo("13",499, 1,10,"VALIDAPLAZO",Kind.OK_NO); -kcontext.setVariable("taskMetaDataVP",taskMetaDataVP); -System.out.println(">>>>>ValidaPlazo "+taskMetaDataVP); - - - tasksMetaData.put("V.Plazo",actualTaskVP); - - - _19-_24 - _24-_28 - - - - - - - - _24_maiaInput - _24_taskMetaDataInput - - - _24_actualTaskOutput - _24_maiaOutput - _24_taskMetaDataOutput - - - - maia - _24_maiaInput - - - taskMetaDataVP - _24_taskMetaDataInput - - - _24_actualTaskOutput - actualTaskVP - - - _24_maiaOutput - maia - - - _24_taskMetaDataOutput - taskMetaDataVP - - - - _25-_27 - _27-_18 - _27-_29 - - - _23-_26 - _26-_18 - _26-_29 - - - _26-_29 - _27-_29 - _28-_29 - _29-_30 - - - _24-_28 - _28-_18 - _28-_29 - - - _30-_31 - _31-_32 - _31-_18 - - - - - taskMetaData=FlowUtil.createTaskInfo("13",510, 1,10,"ASIGNARCOMITE",Kind.OK_NO); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Aprobacion",actualTask); -System.out.println("maia Aprobacion "+maia); -((java.util.Map)maia.get("request")).put("accountnumber",taskMetaData.getAditionalData().get("accountnumber")); - - - _29-_30 - _30-_31 - - - - - - - - _30_maiaInput - _30_taskMetaDataInput - - - _30_actualTaskOutput - _30_maiaOutput - _30_taskMetaDataOutput - - - - maia - _30_maiaInput - - - taskMetaData - _30_taskMetaDataInput - - - _30_actualTaskOutput - actualTask - - - _30_maiaOutput - maia - - - _30_taskMetaDataOutput - taskMetaData - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - return taskMetaDataVT.getResponse().compareTo("D")==0; - - - return taskMetaDataVP.getResponse().compareTo("D")==0; - - - return taskMetaDataVM.getResponse().compareTo("D")==0; - - - - - - - - return taskMetaDataVM.getResponse().compareTo("D")!=0; - - - return taskMetaDataVT.getResponse().compareTo("D")!=0; - - - return taskMetaDataVP.getResponse().compareTo("D")!=0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/catalogoprueba.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/catalogoprueba.bpmn.svn-base deleted file mode 100644 index d5e5557..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/catalogoprueba.bpmn.svn-base +++ /dev/null @@ -1,141 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - -System.out.println("INICIA FLUJO SCRPT ********************************"); - - - - - - System.out.println("ANTES LLAMAR A TASK INFO BY CLASS NAME"); -taskMetaData=FlowUtil.createTaskInfoByClassName("1",49, 1,5,null,1,"OK_NO"); -taskMetaData.setUserId("JVACA"); -taskMetaData.setAction("A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Llamar transaccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_4 - - - - - - - - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - DataOutput_3 - actualTask - - - - - - SequenceFlow_4 - SequenceFlow_5 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/final.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/final.bpmn.svn-base deleted file mode 100644 index 2958d60..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/final.bpmn.svn-base +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_4 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7002, 1,120, "Llamar Transaccion", 1, "OK_NO"); - -//FlowUtil.executeClass("paquete.clase", maia); // la clase puede hacer lo que necesite -//taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -//taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -//para asignar a un grupo especifico -//taskMetaData.setGroupId("GERENCIA"); -taskMetaData.setUserId("1234"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Llamar Transaccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Llamar Transaccion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7002, 1,120, "Ejecutar transaccion", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("1234"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar transaccion",actualTask); - - - SequenceFlow_3 - SequenceFlow_4 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Ejecutar transaccion - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - _1-_15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/finalwpa.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/finalwpa.bpmn.svn-base deleted file mode 100644 index 61b4c9e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/finalwpa.bpmn.svn-base +++ /dev/null @@ -1,296 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - System.out.println("SSSSSSSSSSSSs "+taskMetaData); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_4 - _16-_12 - if(taskMetaData.getResponse()==null){ - taskMetaData.setResponse("A"); -} -taskMetaData.updateData(maia); -kcontext.setVariable("maia",maia); -actualTask.add(taskMetaData); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7002, 1,120, "Llamar Transaccion", 1, "OK_NO"); - -//FlowUtil.executeClass("paquete.clase", maia); // la clase puede hacer lo que necesite -//taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -//taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -//para asignar a un grupo especifico -//taskMetaData.setGroupId("GERENCIA"); -taskMetaData.setUserId("1234"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Llamar Transaccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - DataOutput_1 - - - - maia - DataInput_11 - - - DataInput_26 - - Llamar Transaccion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - DataOutput_1 - actualTask - - - - #{taskMetaData.userId} - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7002, 1,120, "Ejecutar transaccion", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("1234"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar transaccion",actualTask); - - - SequenceFlow_3 - SequenceFlow_4 - - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - DataOutput_2 - - - - _DataInput_16 - - Ejecutar transaccion - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - DataOutput_2 - actualTask - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - _1-_15 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/nuevoProceso.bpmn2.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/nuevoProceso.bpmn2.svn-base deleted file mode 100644 index bd450f8..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/nuevoProceso.bpmn2.svn-base +++ /dev/null @@ -1,138 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7000, 1,5,"RULE",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Llamar Transaccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - DataOutput_3 - actualTask - - - - - SequenceFlow_3 - SequenceFlow_4 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_4 - - - - SequenceFlow_1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/process.bpmn2.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/process.bpmn2.svn-base deleted file mode 100644 index c645655..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/process.bpmn2.svn-base +++ /dev/null @@ -1,137 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("tasksMetaData",tasksMetaData); - - - - - - taskMetaData=FlowUtil.createTaskInfo("1",7001, 1,5,"RULE",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Llamar Transaccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_5 - - - - - - - - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - DataInput_1 - - - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - DataOutput_3 - actualTask - - - - SequenceFlow_6 - - - - - SequenceFlow_5 - SequenceFlow_6 - FlowUtil.endFlow(kcontext); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/prueba.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/prueba.bpmn.svn-base deleted file mode 100644 index dec2fc8..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/prueba.bpmn.svn-base +++ /dev/null @@ -1,39 +0,0 @@ - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("HOLA MUNDo"); - - - SequenceFlow_2 - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/pviaticos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/pviaticos.bpmn.svn-base deleted file mode 100644 index 2d29f18..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/pviaticos.bpmn.svn-base +++ /dev/null @@ -1,727 +0,0 @@ - - - - - - - - - - - - - - - - - - - SequenceFlow_2 - SequenceFlow_3 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_9 - SequenceFlow_13 - SequenceFlow_71 - - - - SequenceFlow_2 - - - - - SequenceFlow_13 - SequenceFlow_7 - SequenceFlow_67 - SequenceFlow_87 - - - - - SequenceFlow_67 - SequenceFlow_5 - - - SequenceFlow_87 - SequenceFlow_88 - - - - SequenceFlow_88 - SequenceFlow_4 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_4 - - - - SequenceFlow_1 - SequenceFlow_7 - SequenceFlow_102 - - - - SequenceFlow_62 - SequenceFlow_65 - SequenceFlow_66 - - - - SequenceFlow_28 - SequenceFlow_29 - SequenceFlow_77 - - - - - SequenceFlow_66 - SequenceFlow_28 - - - - SequenceFlow_79 - SequenceFlow_80 - SequenceFlow_81 - - - - SequenceFlow_77 - SequenceFlow_80 - - - - SequenceFlow_81 - SequenceFlow_12 - - - - SequenceFlow_29 - SequenceFlow_31 - - - - SequenceFlow_74 - SequenceFlow_75 - SequenceFlow_101 - SequenceFlow_76 - - - - SequenceFlow_31 - SequenceFlow_32 - SequenceFlow_33 - SequenceFlow_100 - - - - - SequenceFlow_32 - SequenceFlow_74 - - - - SequenceFlow_33 - SequenceFlow_75 - - - - SequenceFlow_76 - SequenceFlow_37 - - - - SequenceFlow_37 - - - - SequenceFlow_51 - SequenceFlow_79 - - - - SequenceFlow_38 - SequenceFlow_48 - - - - SequenceFlow_16 - SequenceFlow_38 - SequenceFlow_78 - - - - - SequenceFlow_12 - SequenceFlow_16 - SequenceFlow_45 - - - - - SequenceFlow_45 - SequenceFlow_50 - SequenceFlow_51 - - - - SequenceFlow_48 - SequenceFlow_50 - SequenceFlow_57 - - - - - SequenceFlow_58 - SequenceFlow_82 - - - - SequenceFlow_59 - SequenceFlow_83 - - - - SequenceFlow_78 - SequenceFlow_57 - SequenceFlow_58 - SequenceFlow_59 - - - - - SequenceFlow_82 - SequenceFlow_83 - SequenceFlow_84 - - - - SequenceFlow_84 - SequenceFlow_64 - - - - SequenceFlow_64 - - - - SequenceFlow_100 - SequenceFlow_101 - - - - - - SequenceFlow_102 - SequenceFlow_96 - SequenceFlow_97 - SequenceFlow_98 - - - - - SequenceFlow_98 - SequenceFlow_93 - - - - SequenceFlow_97 - SequenceFlow_99 - - - - SequenceFlow_24 - SequenceFlow_65 - - - - SequenceFlow_22 - SequenceFlow_62 - - - - SequenceFlow_93 - SequenceFlow_99 - SequenceFlow_22 - SequenceFlow_24 - - - - - SequenceFlow_72 - SequenceFlow_1 - - - - SequenceFlow_71 - SequenceFlow_72 - SequenceFlow_96 - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("1",7001, 1,5,"com.fp.viaticos.task.AsiganrJefe","OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Llamar transaccion",actualTask); - - - SequenceFlow_3 - SequenceFlow_9 - - - - - SequenceFlow_5 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/subproceso.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/subproceso.bpmn.svn-base deleted file mode 100644 index 9fbbd89..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/subproceso.bpmn.svn-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - - SequenceFlow_3 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "aprobar subproceso", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("EOCAMPO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - List<Object> laux = new java.util.ArrayList(); -taskMetaData.updateData(maia); -laux.add(taskMetaData); -actualTask.add(taskMetaData); -kcontext.setVariable("actualTask",actualTask); -tasksMetaData.put("aprobar subproceso",laux); - - - SequenceFlow_2 - SequenceFlow_4 - - - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_5 - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - - - DataOutput_1 - DataOutput_2 - DataOutput_5 - - - - - _DataInput_30 - - aprobar subproceso - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - actualTask - DataInput_5 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - DataOutput_5 - actualTask - - - - #{taskMetaData.userId} - - - - - - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "aprobar subproceso dos", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("EOCAMPO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - List<Object> laux = new java.util.ArrayList(); -taskMetaData.updateData(maia); -laux.add(taskMetaData); -actualTask.add(taskMetaData); -kcontext.setVariable("actualTask",actualTask); -tasksMetaData.put("aprobar subproceso dos",laux); - - - SequenceFlow_4 - SequenceFlow_3 - - - - - - - - - - - - - - - - DataInput_3 - DataInput_4 - DataInput_6 - - - _DataInput_58 - _DataInput_59 - _DataInput_60 - _DataInput_61 - _DataInput_62 - _DataInput_63 - _DataInput_64 - - - DataOutput_3 - DataOutput_4 - DataOutput_6 - - - - - _DataInput_58 - - aprobar subproceso dos - _DataInput_58 - - - - _DataInput_59 - - - _DataInput_60 - - - _DataInput_61 - - - _DataInput_62 - - - _DataInput_63 - - - _DataInput_64 - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - actualTask - DataInput_6 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - DataOutput_6 - actualTask - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/taskasign.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/taskasign.bpmn.svn-base deleted file mode 100644 index 5b241a4..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/taskasign.bpmn.svn-base +++ /dev/null @@ -1,298 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - _1-_11 - - - _13-_2 - - - - _5-_3 - _3-_8 - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - _3_SkippableInput - _3_TaskNameInput - _3_GroupIdInput - - - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_SkippableInput - - false - _3_SkippableInput - - - - _3_TaskNameInput - - #{maia.request.subject} - _3_TaskNameInput - - - - _3_GroupIdInput - - #{taskMetaData.groupId} - _3_GroupIdInput - - - - _3_taskMetaDataOutput - taskMetaData - - - - #{taskMetaData.userId} - - - - - _10-_4 - _4-_6 - FlowUtil.evalRule(taskMetaData.getRuleCode(), maia); -FlowUtil.executeClass(taskMetaData.getClassCode(), maia); -try{ -taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -}catch(Exception e){ -} -try{ -taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -}catch(Exception e){ -} -taskMetaData.setAction((maia.get("action")!=null)?""+maia.get("action"):null); -try{ -if(maia.get("internalCode")!=null){ -taskMetaData.setInternalCode(maia.get("internalCode")); -} -}catch(Exception e){ -} -maia.remove("userId"); -maia.remove("ActorId"); -maia.remove("groupId"); -maia.remove("GroupId"); -maia.remove("action"); -maia.remove("internalCode"); - - - - _6-_5 - _5-_3 - - - _4-_6 - _6-_5 - _6-_7 - - - _6-_7 - _8-_7 - _7-_13 - - - _3-_8 - _8-_7 - _8-_9 - - - _8-_9 - _9-_12 - - - - - - - _11-_10 - _12-_10 - _10-_4 - - - _1-_11 - _11-_10 - mainTask=taskMetaData; -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - _9-_12 - _12-_10 - actualTask.add(taskMetaData); -taskMetaData=mainTask; - - - _7-_13 - _13-_2 - if(taskMetaData.getResponse()==null){ - taskMetaData.setResponse("A"); -} -taskMetaData.updateData(maia); -kcontext.setVariable("maia",maia); -actualTask.add(taskMetaData); - - - - - - return "A".equals(taskMetaData.getAction()); - - - - return !("A".equals(taskMetaData.getAction())); - - - return taskMetaData.getResponse().compareTo("R")!=0; - - - - return taskMetaData.getResponse().compareTo("R")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/test.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/test.bpmn.svn-base deleted file mode 100644 index 21c5a82..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/test.bpmn.svn-base +++ /dev/null @@ -1,467 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "grupo", 1, "OK_NO"); -taskMetaData.setGroupId("GERENCIA"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("grupo",actualTask); - - - SequenceFlow_5 - SequenceFlow_3 - - - - - - - - - - - - - - DataInput_3 - DataInput_4 - - - _DataInput_44 - _DataInput_45 - _DataInput_46 - _DataInput_47 - _DataInput_48 - _DataInput_49 - _DataInput_50 - - - DataOutput_3 - DataOutput_4 - - - - - _DataInput_44 - - grupo - _DataInput_44 - - - - _DataInput_45 - - - _DataInput_46 - - - _DataInput_47 - - #{taskMetaData.groupId} - _DataInput_47 - - - - _DataInput_48 - - - _DataInput_49 - - - _DataInput_50 - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - - - - - tasksMetaData.put("finalizar",actualTask); -System.out.println("Resultado subproceso "+actualTask); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("subproceso",actualTask); - - - - - - SequenceFlow_3 - SequenceFlow_6 - - - - - - - - - - DataInput_5 - DataInput_6 - DataInput_9 - - - DataOutput_5 - DataOutput_7 - DataOutput_8 - DataOutput_6 - - - - maia - DataInput_5 - - - tasksMetaData - DataInput_6 - - - actualTask - DataInput_9 - - - DataOutput_5 - maia - - - DataOutput_7 - tasksMetaData - - - DataOutput_8 - taskMetaData - - - DataOutput_6 - actualTask - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "prueba", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("EOCAMPO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("prueba",actualTask); - - - SequenceFlow_2 - SequenceFlow_5 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - - - DataOutput_1 - DataOutput_2 - - - - - _DataInput_30 - - prueba - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "aprobacion final", 1, "OK_NO"); -taskMetaData.setUserId("EOCAMPO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("aprobacion final",actualTask); - - - SequenceFlow_6 - SequenceFlow_7 - - - - - - - - - - - - DataInput_7 - DataInput_8 - DataInput_15 - - - _DataInput_170 - _DataInput_174 - _DataInput_175 - _DataInput_176 - - - DataOutput_9 - DataOutput_10 - - - - - _DataInput_170 - - aprobacion final - _DataInput_170 - - - - _DataInput_174 - - - _DataInput_175 - - - _DataInput_176 - - - maia - DataInput_7 - - - DataInput_8 - - - taskMetaData - DataInput_15 - - - DataOutput_9 - maia - - - DataOutput_10 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_7 - SequenceFlow_4 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_4 - - - - SequenceFlow_1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testuno.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testuno.bpmn.svn-base deleted file mode 100644 index 61e8b12..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testuno.bpmn.svn-base +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "pruebauno", 1, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setUserId("EOCAMPO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("pruebauno",actualTask); - - - SequenceFlow_2 - SequenceFlow_5 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - - - DataOutput_1 - DataOutput_2 - - - - - _DataInput_30 - - pruebauno - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_1 - - - - SequenceFlow_3 - SequenceFlow_4 - FlowUtil.endFlow(kcontext); - - - - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "grupouno", 1, "OK_NO"); -taskMetaData.setGroupId("GERENCIA"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("grupouno",actualTask); - - - SequenceFlow_5 - SequenceFlow_6 - - - - - - - - - - - - - - DataInput_3 - DataInput_4 - - - _DataInput_44 - _DataInput_45 - _DataInput_46 - _DataInput_47 - _DataInput_48 - _DataInput_49 - _DataInput_50 - - - DataOutput_3 - DataOutput_4 - - - - - _DataInput_44 - - grupouno - _DataInput_44 - - - - _DataInput_45 - - - _DataInput_46 - - - _DataInput_47 - - #{taskMetaData.groupId} - _DataInput_47 - - - - _DataInput_48 - - - _DataInput_49 - - - _DataInput_50 - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - - SequenceFlow_6 - SequenceFlow_3 - System.out.println("prueba script"); - - - - SequenceFlow_4 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testwpa.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testwpa.bpmn.svn-base deleted file mode 100644 index 0bc495f..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/testwpa.bpmn.svn-base +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("17",23, 1,10,"WMP",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Verifica1",actualTask); - - - - - - - - - - _17_maiaInput - _17_taskMetaDataInput - - - _17_actualTaskOutput - _17_maiaOutput - _17_taskMetaDataOutput - - - - maia - _17_maiaInput - - - taskMetaData - _17_taskMetaDataInput - - - _17_actualTaskOutput - actualTask - - - _17_maiaOutput - maia - - - _17_taskMetaDataOutput - taskMetaData - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("17",21, 1,10,"WMP",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Verifica2",actualTask); - - - - - - - - - - _21_maiaInput - _21_taskMetaDataInput - - - _21_actualTaskOutput - _21_maiaOutput - _21_taskMetaDataOutput - - - - maia - _21_maiaInput - - - taskMetaData - _21_taskMetaDataInput - - - _21_actualTaskOutput - actualTask - - - _21_maiaOutput - maia - - - _21_taskMetaDataOutput - taskMetaData - - - - - - System.out.println(">>Inicia Flujo"); -taskMetaData=FlowUtil.createTaskInfo("17",22, 1,10,"WPA",Kind.OK); -kcontext.setVariable("taskMetaData",taskMetaData); - - - tasksMetaData.put("Inicia Flujo",actualTask); -System.out.println(">>Inicia Flujo>>"+taskMetaData.getResponse()); - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - System.out.println("AAAAA"+maia); -return (((String)maia.get("transaction")).compareTo("23")==0); - - - - System.out.println("BBBBB"+maia); -return (((String)maia.get("transaction")).compareTo("21")==0); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticos.bpmn.svn-base deleted file mode 100644 index 9ab160e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticos.bpmn.svn-base +++ /dev/null @@ -1,1949 +0,0 @@ - - - - - - - - - - - - - - - - - - - ScriptTask_8-ExclusiveGateway_4 - ScriptTask_9-ExclusiveGateway_4 - ExclusiveGateway_4-CallActivity_4 - - - ExclusiveGateway_3-ScriptTask_4 - ScriptTask_4-ExclusiveGateway_5 - maia.put("cusuariobpm", taskMetaData.getUserId()); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeyResponsableUnidad", maia, taskMetaData, 105 , 106); - - - ExclusiveGateway_3-ScriptTask_7 - ScriptTask_7-ParallelGateway_1 - maia.put("cusuariobpm", taskMetaData.getUserId()); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeyResponsableUnidad", maia, taskMetaData, 107 , 108); - - - CallActivity_1-ExclusiveGateway_2 - ExclusiveGateway_2-ScriptTask_3 - ExclusiveGateway_2-ScriptTask_8 - ExclusiveGateway_2-ScriptTask_6 - - - CallActivity_2-ExclusiveGateway_3 - ExclusiveGateway_3-ScriptTask_4 - ExclusiveGateway_3-ScriptTask_7 - ExclusiveGateway_3-ScriptTask_9 - - - ScriptTask_1-ExclusiveGateway_1 - ExclusiveGateway_8-ExclusiveGateway_1 - ExclusiveGateway_1-CallActivity_1 - - - StartEvent_1-ScriptTask_1 - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",21, 1,120,"com.fp.viaticos.task.AsignarJefe", "Autorizar jefe", 10, "OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -//enviar mail al jefe del empleado -FlowUtil.executeClass(taskMetaData.getClassCode(), maia); -String action = maia.get("action")!=null ?""+maia.get("action"):null; -if(action == null || action.equals("A") ){ - FlowUtil.mail("com.fp.viaticos.mail.Jefe", maia, taskMetaData, 101 , 102); -} - - - List old=(List)tasksMetaData.get("Autorizar jefe"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Autorizar jefe",old); - - - ExclusiveGateway_1-CallActivity_1 - CallActivity_1-ExclusiveGateway_2 - - - - - - - - CallActivity_1_maiaInput - CallActivity_1_taskMetaDataInput - - - CallActivity_1_actualTaskOutput - CallActivity_1_maiaOutput - CallActivity_1_taskMetaDataOutput - - - - maia - CallActivity_1_maiaInput - - - taskMetaData - CallActivity_1_taskMetaDataInput - - - CallActivity_1_actualTaskOutput - actualTask - - - CallActivity_1_maiaOutput - maia - - - CallActivity_1_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",22, 1,120,"com.fp.viaticos.task.AsignarSupervisior", "Autorizar supervisor", 10, "OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -//enviar mail al responsable de la unidad a la que pertenece del empleado - -FlowUtil.mail("com.fp.viaticos.mail.ResponsableUnidad", maia, taskMetaData, 101 , 102); - - - List old=(List)tasksMetaData.get("Autorizar supervisor"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Autorizar supervisor",old); - - - ScriptTask_6-CallActivity_2 - CallActivity_2-ExclusiveGateway_3 - - - - - - - - CallActivity_2_maiaInput - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - CallActivity_2_maiaOutput - CallActivity_2_taskMetaDataOutput - - - - maia - CallActivity_2_maiaInput - - - taskMetaData - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - actualTask - - - CallActivity_2_maiaOutput - maia - - - CallActivity_2_taskMetaDataOutput - taskMetaData - - - - ExclusiveGateway_5-ScriptTask_5 - ScriptTask_5-EndEvent_2 - FlowUtil.endFlow(kcontext); - - - ScriptTask_5-EndEvent_2 - - - - ScriptTask_4-ExclusiveGateway_5 - ScriptTask_3-ExclusiveGateway_5 - ExclusiveGateway_5-ScriptTask_5 - - - ExclusiveGateway_2-ScriptTask_3 - ScriptTask_3-ExclusiveGateway_5 - //enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefe", maia, taskMetaData, 105 , 106); - - - ExclusiveGateway_2-ScriptTask_8 - ScriptTask_8-ExclusiveGateway_4 - //enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefe", maia, taskMetaData, 103 , 104); - - - ScriptTask_7-ParallelGateway_1 - ParallelGateway_1-CallActivity_5 - ParallelGateway_1-CallActivity_3 - ParallelGateway_1-CallActivity_14 - - - ExclusiveGateway_3-ScriptTask_9 - ScriptTask_9-ExclusiveGateway_4 - maia.put("cusuariobpm", taskMetaData.getUserId()); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeyResponsableUnidad", maia, taskMetaData, 103 , 104); - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",30, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano", "Confirmar talento humano", 12,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 113 , 114); - - - List old=(List)tasksMetaData.get("Confimar talento humano"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confimar talento humano",old); - - - ParallelGateway_1-CallActivity_5 - CallActivity_5-ParallelGateway_2 - - - - - - - - CallActivity_5_maiaInput - CallActivity_5_taskMetaDataInput - - - CallActivity_5_actualTaskOutput - CallActivity_5_maiaOutput - CallActivity_5_taskMetaDataOutput - - - - maia - CallActivity_5_maiaInput - - - taskMetaData - CallActivity_5_taskMetaDataInput - - - CallActivity_5_actualTaskOutput - actualTask - - - CallActivity_5_maiaOutput - maia - - - CallActivity_5_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",29, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Confirmar tesorería", 12,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 113 , 114); - - - List old=(List)tasksMetaData.get("Confirmar tesorería"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar tesorería",old); - - - ParallelGateway_1-CallActivity_3 - CallActivity_3-ParallelGateway_2 - - - - - - - - CallActivity_3_maiaInput - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - CallActivity_3_maiaOutput - CallActivity_3_taskMetaDataOutput - - - - maia - CallActivity_3_maiaInput - - - taskMetaData - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - actualTask - - - CallActivity_3_maiaOutput - maia - - - CallActivity_3_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",31, 1,120,"com.fp.viaticos.task.AsignarEmpleado", "Confirmar comision SP", 13,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Empleado", maia, taskMetaData, 115 , 116); - - - List old=(List)tasksMetaData.get("Confirmar comision SP"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar comision SP",old); - - - ParallelGateway_2-CallActivity_6 - CallActivity_6-ExclusiveGateway_7 - - - - - - - - CallActivity_6_maiaInput - CallActivity_6_taskMetaDataInput - - - CallActivity_6_actualTaskOutput - CallActivity_6_maiaOutput - CallActivity_6_taskMetaDataOutput - - - - maia - CallActivity_6_maiaInput - - - taskMetaData - CallActivity_6_taskMetaDataInput - - - CallActivity_6_actualTaskOutput - actualTask - - - CallActivity_6_maiaOutput - maia - - - CallActivity_6_taskMetaDataOutput - taskMetaData - - - - CallActivity_14-ParallelGateway_2 - CallActivity_3-ParallelGateway_2 - CallActivity_5-ParallelGateway_2 - ParallelGateway_2-CallActivity_6 - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",33, 1,120,"com.fp.viaticos.task.AsignarContabilidad", "Reajustar contabilidad", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Contabilidad", maia, taskMetaData, 119 , 120); - - - List old=(List)tasksMetaData.get("Reajustar contabilidad"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar contabilidad",old); - - - ParallelGateway_3-CallActivity_8 - CallActivity_8-ParallelGateway_4 - - - - - - - - CallActivity_8_maiaInput - CallActivity_8_taskMetaDataInput - - - CallActivity_8_actualTaskOutput - CallActivity_8_maiaOutput - CallActivity_8_taskMetaDataOutput - - - - maia - CallActivity_8_maiaInput - - - taskMetaData - CallActivity_8_taskMetaDataInput - - - CallActivity_8_actualTaskOutput - actualTask - - - CallActivity_8_maiaOutput - maia - - - CallActivity_8_taskMetaDataOutput - taskMetaData - - - - CallActivity_6-ExclusiveGateway_7 - ExclusiveGateway_7-CallActivity_7 - ExclusiveGateway_7-CallActivity_10 - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",34, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano", "Reajustar talento humano", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 119 , 120); - - - List old=(List)tasksMetaData.get("Reajustar talento humano"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar talento humano",old); - - - ParallelGateway_3-CallActivity_9 - CallActivity_9-ParallelGateway_4 - - - - - - - - CallActivity_9_maiaInput - CallActivity_9_taskMetaDataInput - - - CallActivity_9_actualTaskOutput - CallActivity_9_maiaOutput - CallActivity_9_taskMetaDataOutput - - - - maia - CallActivity_9_maiaInput - - - taskMetaData - CallActivity_9_taskMetaDataInput - - - CallActivity_9_actualTaskOutput - actualTask - - - CallActivity_9_maiaOutput - maia - - - CallActivity_9_taskMetaDataOutput - taskMetaData - - - - CallActivity_7-ParallelGateway_3 - ParallelGateway_3-CallActivity_8 - ParallelGateway_3-CallActivity_9 - ParallelGateway_3-ScriptTask_12 - SequenceFlow_5 - SequenceFlow_7 - - - CallActivity_8-ParallelGateway_4 - CallActivity_9-ParallelGateway_4 - ScriptTask_12-ParallelGateway_4 - SequenceFlow_6 - SequenceFlow_8 - SequenceFlow_9 - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",50, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Confirmar movilización", 19,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 133 , 134); - - - List old=(List)tasksMetaData.get("Confirmar movilización"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Notificar movilización",old); - - - ParallelGateway_1-CallActivity_14 - CallActivity_14-ParallelGateway_2 - - - - - - - - CallActivity_14_maiaInput - CallActivity_14_taskMetaDataInput - - - CallActivity_14_actualTaskOutput - CallActivity_14_maiaOutput - CallActivity_14_taskMetaDataOutput - - - - maia - CallActivity_14_maiaInput - - - taskMetaData - CallActivity_14_taskMetaDataInput - - - CallActivity_14_actualTaskOutput - actualTask - - - CallActivity_14_maiaOutput - maia - - - CallActivity_14_taskMetaDataOutput - taskMetaData - - - - ExclusiveGateway_2-ScriptTask_6 - ScriptTask_6-CallActivity_2 - //enviar mail al jefe del empleado -FlowUtil.executeClass(taskMetaData.getClassCode(), maia); -String action = maia.get("action")!=null ?""+maia.get("action"):null; -//System.out.println("Se ingresa al nodo notificar SP :" + action); -if(action == null || action.equals("A") ){ - FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefe", maia, taskMetaData, 107 , 108); -} - - - StartEvent_1-ScriptTask_1 - ScriptTask_1-ExclusiveGateway_1 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - ScriptTask_10-EndEvent_4 - - - - ExclusiveGateway_8-ScriptTask_10 - ScriptTask_10-EndEvent_4 - FlowUtil.endFlow(kcontext); - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",24, 1,30,"com.fp.viaticos.task.AsignarEmpleado", "Modificar empleado", 11, "OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - List old=(List)tasksMetaData.get("Modificar empleado"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Modificar empleado",old); - - - ExclusiveGateway_4-CallActivity_4 - CallActivity_4-ExclusiveGateway_8 - - - - - - - - CallActivity_4_maiaInput - CallActivity_4_taskMetaDataInput - - - CallActivity_4_actualTaskOutput - CallActivity_4_maiaOutput - CallActivity_4_taskMetaDataOutput - - - - maia - CallActivity_4_maiaInput - - - taskMetaData - CallActivity_4_taskMetaDataInput - - - CallActivity_4_actualTaskOutput - actualTask - - - CallActivity_4_maiaOutput - maia - - - CallActivity_4_taskMetaDataOutput - taskMetaData - - - - CallActivity_4-ExclusiveGateway_8 - ExclusiveGateway_8-ExclusiveGateway_1 - ExclusiveGateway_8-ScriptTask_10 - - - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("M".equals(taskMetaData.getResponse())); - - - - return ("M".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - return ("D".equals(taskMetaData.getResponse())); - - - - return ("A".equals(taskMetaData.getResponse())); - - - - return ("A".equals(taskMetaData.getResponse())); - - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30", 23, 1, 120, "com.fp.viaticos.task.AsignarEmpleado", "Generar Informe SP", 16, "OK_NO"); -kcontext.setVariable("taskMetaData", taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Empleado", maia, taskMetaData, 123, 124); - - - List old=(List)tasksMetaData.get("Generar Informe SP"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Generar Informe SP",old); - - - ExclusiveGateway_7-CallActivity_10 - CallActivity_10-ExclusiveGateway_9 - - - - - - - - CallActivity_10_maiaInput - CallActivity_10_taskMetaDataInput - - - CallActivity_10_actualTaskOutput - CallActivity_10_maiaOutput - CallActivity_10_taskMetaDataOutput - - - - maia - CallActivity_10_maiaInput - - - taskMetaData - CallActivity_10_taskMetaDataInput - - - CallActivity_10_actualTaskOutput - actualTask - - - CallActivity_10_maiaOutput - maia - - - CallActivity_10_taskMetaDataOutput - taskMetaData - - - - - CallActivity_10-ExclusiveGateway_9 - CallActivity_13-ExclusiveGateway_9 - ExclusiveGateway_9-CallActivity_11 - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",25, 1,120,"com.fp.viaticos.task.AsignarJefeInforme", "Autorizar informe JI", 17,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -//enviar mail al jefe del empleado - -FlowUtil.executeClass(taskMetaData.getClassCode(), maia); -String action = maia.get("action")!=null ?""+maia.get("action"):null; -if(action == null || action.equals("A") ){ - FlowUtil.mail("com.fp.viaticos.mail.JefeInforme", maia, taskMetaData, 125 , 126); -} - - - List old=(List)tasksMetaData.get("Autorizar informe JI"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Autorizar informe JI",old); - - - ExclusiveGateway_9-CallActivity_11 - CallActivity_11-ExclusiveGateway_10 - - - - - - - - CallActivity_11_maiaInput - CallActivity_11_taskMetaDataInput - - - CallActivity_11_actualTaskOutput - CallActivity_11_maiaOutput - CallActivity_11_taskMetaDataOutput - - - - maia - CallActivity_11_maiaInput - - - taskMetaData - CallActivity_11_taskMetaDataInput - - - CallActivity_11_actualTaskOutput - actualTask - - - CallActivity_11_maiaOutput - maia - - - CallActivity_11_taskMetaDataOutput - taskMetaData - - - - - CallActivity_11-ExclusiveGateway_10 - ExclusiveGateway_10-ScriptTask_13 - ExclusiveGateway_10-ScriptTask_14 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("M".equals(taskMetaData.getResponse())); - - - ExclusiveGateway_10-ScriptTask_14 - ScriptTask_14-ExclusiveGateway_11 - //enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeInforme", maia, taskMetaData, 127 , 128); - - - - ExclusiveGateway_10-ScriptTask_13 - ScriptTask_13-CallActivity_12 - //enviar mail al jefe del empleado -FlowUtil.executeClass(taskMetaData.getClassCode(), maia); -String action = maia.get("action")!=null ?""+maia.get("action"):null; -//System.out.println("Se ingresa al nodo notificar SP :" + action); -if(action == null || action.equals("A") ){ - FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeInforme", maia, taskMetaData, 129, 130); -} - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",39, 1,120,"com.fp.viaticos.task.AsignarSupervisiorInforme", "Autorizar informe RU", 17,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -//enviar mail al responsable de la unidad a la que pertenece del empleado -FlowUtil.mail("com.fp.viaticos.mail.ResponsableUnidadInforme", maia, taskMetaData, 125 , 126); - - - List old=(List)tasksMetaData.get("Autorizar informe RU"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Autorizar informe RU",old); - - - ScriptTask_13-CallActivity_12 - CallActivity_12-ExclusiveGateway_6 - - - - - - - - CallActivity_12_maiaInput - CallActivity_12_taskMetaDataInput - - - CallActivity_12_actualTaskOutput - CallActivity_12_maiaOutput - CallActivity_12_taskMetaDataOutput - - - - maia - CallActivity_12_maiaInput - - - taskMetaData - CallActivity_12_taskMetaDataInput - - - CallActivity_12_actualTaskOutput - actualTask - - - CallActivity_12_maiaOutput - maia - - - CallActivity_12_taskMetaDataOutput - taskMetaData - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",35, 1,30,"com.fp.viaticos.task.AsignarEmpleado", "Modificar informe SP", 20,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - List old=(List)tasksMetaData.get("Modificar informe SP"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Modificar informe SP",old); - - - ExclusiveGateway_11-CallActivity_13 - CallActivity_13-ExclusiveGateway_9 - - - - - - - - CallActivity_13_maiaInput - CallActivity_13_taskMetaDataInput - - - CallActivity_13_actualTaskOutput - CallActivity_13_maiaOutput - CallActivity_13_taskMetaDataOutput - - - - maia - CallActivity_13_maiaInput - - - taskMetaData - CallActivity_13_taskMetaDataInput - - - CallActivity_13_actualTaskOutput - actualTask - - - CallActivity_13_maiaOutput - maia - - - CallActivity_13_taskMetaDataOutput - taskMetaData - - - - - ScriptTask_14-ExclusiveGateway_11 - ScriptTask_16-ExclusiveGateway_11 - ExclusiveGateway_11-CallActivity_13 - - - - CallActivity_12-ExclusiveGateway_6 - ExclusiveGateway_6-ScriptTask_16 - ExclusiveGateway_6-ScriptTask_15 - - - return ("M".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - ExclusiveGateway_6-ScriptTask_16 - ScriptTask_16-ExclusiveGateway_11 - maia.put("cusuariobpm", taskMetaData.getUserId()); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeyResponsableUnidadInforme", maia, taskMetaData, 127 , 128); - - - - ExclusiveGateway_6-ScriptTask_15 - ScriptTask_15-ParallelGateway_5 - maia.put("cusuariobpm", taskMetaData.getUserId()); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefeyResponsableUnidadInforme", maia, taskMetaData, 129 , 130); - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",37, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano","Confirmar informe TH", 18,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 131 , 132); - - - List old=(List)tasksMetaData.get("Confirmar informe TH"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar informe TH",old); - - - ParallelGateway_5-CallActivity_16 - CallActivity_16-ParallelGateway_6 - - - - - - - - CallActivity_16_maiaInput - CallActivity_16_taskMetaDataInput - - - CallActivity_16_actualTaskOutput - CallActivity_16_maiaOutput - CallActivity_16_taskMetaDataOutput - - - - maia - CallActivity_16_maiaInput - - - taskMetaData - CallActivity_16_taskMetaDataInput - - - CallActivity_16_actualTaskOutput - actualTask - - - CallActivity_16_maiaOutput - maia - - - CallActivity_16_taskMetaDataOutput - taskMetaData - - - - - ScriptTask_15-ParallelGateway_5 - ParallelGateway_5-CallActivity_16 - ParallelGateway_5-CallActivity_15 - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",36, 1,120,"com.fp.viaticos.task.AsignarTesoreria","Confirmar informe tesoreria" ,18,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 131 , 132); - - - List old=(List)tasksMetaData.get("Confirmar informe tesoreria"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar informe tesoreria",old); - - - ParallelGateway_5-CallActivity_15 - CallActivity_15-ParallelGateway_6 - - - - - - - - CallActivity_15_maiaInput - CallActivity_15_taskMetaDataInput - - - CallActivity_15_actualTaskOutput - CallActivity_15_maiaOutput - CallActivity_15_taskMetaDataOutput - - - - maia - CallActivity_15_maiaInput - - - taskMetaData - CallActivity_15_taskMetaDataInput - - - CallActivity_15_actualTaskOutput - actualTask - - - CallActivity_15_maiaOutput - maia - - - CallActivity_15_taskMetaDataOutput - taskMetaData - - - - - CallActivity_16-ParallelGateway_6 - CallActivity_15-ParallelGateway_6 - SequenceFlow_10 - - - ParallelGateway_3-ScriptTask_12 - ScriptTask_12-ParallelGateway_4 - //enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.EmpleadoyJefe", maia, taskMetaData, 121 , 122); - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30", 32, 1, 120, "com.fp.viaticos.task.AsignarJefeComision", "Confirmar jefe inmediato", 14, "OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.viaticos.mail.Jefe", maia, taskMetaData, 117 , 118); - - - List old=(List)tasksMetaData.get("Confirmar jefe inmediato"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar jefe inmediato",old); - - - ExclusiveGateway_7-CallActivity_7 - CallActivity_7-ParallelGateway_3 - - - - - - - - CallActivity_7_maiaInput - CallActivity_7_taskMetaDataInput - - - CallActivity_7_actualTaskOutput - CallActivity_7_maiaOutput - CallActivity_7_taskMetaDataOutput - - - - maia - CallActivity_7_maiaInput - - - taskMetaData - CallActivity_7_taskMetaDataInput - - - CallActivity_7_actualTaskOutput - actualTask - - - CallActivity_7_maiaOutput - maia - - - CallActivity_7_taskMetaDataOutput - taskMetaData - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",52, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Reajustar tesorería", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 119 , 120); - - - - - - List old=(List)tasksMetaData.get("Reajustar tesorería"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar tesorería",old); - - - SequenceFlow_5 - SequenceFlow_6 - - - - - - - - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - DataOutput_3 - actualTask - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",53, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Reajustar Movilización", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 119 , 120); - - - - - - List old=(List)tasksMetaData.get("Reajustar Movilización"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar Movilización",old); - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_4 - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - DataOutput_6 - actualTask - - - - - - ParallelGateway_4-ScriptTask_11 - ScriptTask_11-EndEvent_3 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_9 - ParallelGateway_4-ScriptTask_11 - FlowUtil.mail("com.fp.viaticos.mail.Empleado", maia, taskMetaData, 137, 138); - - - - ScriptTask_11-EndEvent_3 - - - - ParallelGateway_6-ScriptTask_2 - ScriptTask_2-EndEvent_1 - FlowUtil.endFlow(kcontext); - - - - - SequenceFlow_10 - ParallelGateway_6-ScriptTask_2 - FlowUtil.mail("com.fp.viaticos.mail.Empleado", maia, taskMetaData, 135, 136); - - - - ScriptTask_2-EndEvent_1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticosmanual.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticosmanual.bpmn.svn-base deleted file mode 100644 index 6ad7c04..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/.svn/text-base/viaticosmanual.bpmn.svn-base +++ /dev/null @@ -1,779 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",45, 1,120,"com.fp.viaticos.task.AsignarContabilidad", "Reajustar contabilidad", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Contabilidad", maia, taskMetaData, 119 , 120); - - - List old=(List)tasksMetaData.get("Reajustar contabilidad"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar contabilidad",old); - - - - - - - - - - CallActivity_7_maiaInput - CallActivity_7_taskMetaDataInput - - - CallActivity_7_actualTaskOutput - CallActivity_7_maiaOutput - CallActivity_7_taskMetaDataOutput - - - - maia - CallActivity_7_maiaInput - - - taskMetaData - CallActivity_7_taskMetaDataInput - - - CallActivity_7_actualTaskOutput - actualTask - - - CallActivity_7_maiaOutput - maia - - - CallActivity_7_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",46, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano", "Reajustar talento humano", 15,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 119 , 120); - - - List old=(List)tasksMetaData.get("Reajustar talento humano"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Reajustar talento humano",old); - - - - - - - - - - CallActivity_8_maiaInput - CallActivity_8_taskMetaDataInput - - - CallActivity_8_actualTaskOutput - CallActivity_8_maiaOutput - CallActivity_8_taskMetaDataOutput - - - - maia - CallActivity_8_maiaInput - - - taskMetaData - CallActivity_8_taskMetaDataInput - - - CallActivity_8_actualTaskOutput - actualTask - - - CallActivity_8_maiaOutput - maia - - - CallActivity_8_taskMetaDataOutput - taskMetaData - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30", 41, 1, 120, "com.fp.viaticos.task.AsignarUsuarioIngresaSolicitud", "Generar Informe UI", 16, "OK_NO"); -kcontext.setVariable("taskMetaData", taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Empleado", maia, taskMetaData, 123, 124); - - - List old=(List)tasksMetaData.get("Generar Informe UI"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Generar Informe UI",old); - - - - - - - - - - CallActivity_5_maiaInput - CallActivity_5_taskMetaDataInput - - - CallActivity_5_actualTaskOutput - CallActivity_5_maiaOutput - CallActivity_5_taskMetaDataOutput - - - - maia - CallActivity_5_maiaInput - - - taskMetaData - CallActivity_5_taskMetaDataInput - - - CallActivity_5_actualTaskOutput - actualTask - - - CallActivity_5_maiaOutput - maia - - - CallActivity_5_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",44, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano","Confirmar informe TH", 18,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 131 , 132); - - - List old=(List)tasksMetaData.get("Confirmar informe TH"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar informe TH",old); - - - - - - - - - - CallActivity_10_maiaInput - CallActivity_10_taskMetaDataInput - - - CallActivity_10_actualTaskOutput - CallActivity_10_maiaOutput - CallActivity_10_taskMetaDataOutput - - - - maia - CallActivity_10_maiaInput - - - taskMetaData - CallActivity_10_taskMetaDataInput - - - CallActivity_10_actualTaskOutput - actualTask - - - CallActivity_10_maiaOutput - maia - - - CallActivity_10_taskMetaDataOutput - taskMetaData - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",42, 1,120,"com.fp.viaticos.task.AsignarTesoreria","Confirmar informe tesoreria" ,18,"OK_NO"); -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 131 , 132); - - - List old=(List)tasksMetaData.get("Confirmar informe tesoreria"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar informe tesoreria",old); - - - - - - - - - - CallActivity_9_maiaInput - CallActivity_9_taskMetaDataInput - - - CallActivity_9_actualTaskOutput - CallActivity_9_maiaOutput - CallActivity_9_taskMetaDataOutput - - - - maia - CallActivity_9_maiaInput - - - taskMetaData - CallActivity_9_taskMetaDataInput - - - CallActivity_9_actualTaskOutput - actualTask - - - CallActivity_9_maiaOutput - maia - - - CallActivity_9_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",47, 1,120,"com.fp.viaticos.task.AsignarUsuarioIngresaSolicitud", "Confirmar comision UI", 13,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.UsaurioIngresoSolicitud", maia, taskMetaData, 115 , 116); - - - List old=(List)tasksMetaData.get("Confirmar comision UI"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar comision UI",old); - - - - - - - - - - CallActivity_4_maiaInput - CallActivity_4_taskMetaDataInput - - - CallActivity_4_actualTaskOutput - CallActivity_4_maiaOutput - CallActivity_4_taskMetaDataOutput - - - - maia - CallActivity_4_maiaInput - - - taskMetaData - CallActivity_4_taskMetaDataInput - - - CallActivity_4_actualTaskOutput - actualTask - - - CallActivity_4_maiaOutput - maia - - - CallActivity_4_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",43, 1,120,"com.fp.viaticos.task.AsignarTalentoHumano", "Confirmar talento humano", 12,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.TalentoHumano", maia, taskMetaData, 113 , 114); - - - List old=(List)tasksMetaData.get("Confirmar talento humano"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confimar talento humano",old); - - - - - - - - - - CallActivity_3_maiaInput - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - CallActivity_3_maiaOutput - CallActivity_3_taskMetaDataOutput - - - - maia - CallActivity_3_maiaInput - - - taskMetaData - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - actualTask - - - CallActivity_3_maiaOutput - maia - - - CallActivity_3_taskMetaDataOutput - taskMetaData - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",40, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Confirmar tesorería", 12,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 113 , 114); - - - List old=(List)tasksMetaData.get("Confirmar tesorería"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Confirmar tesorería",old); - - - - - - - - - - CallActivity_2_maiaInput - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - CallActivity_2_maiaOutput - CallActivity_2_taskMetaDataOutput - - - - maia - CallActivity_2_maiaInput - - - taskMetaData - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - actualTask - - - CallActivity_2_maiaOutput - maia - - - CallActivity_2_taskMetaDataOutput - taskMetaData - - - - - - - - - taskMetaData=FlowUtil.createTaskInfoByClassName("30",40, 1,120,"com.fp.viaticos.task.AsignarTesoreria", "Confirmar movilización", 19,"OK_NO"); - -kcontext.setVariable("taskMetaData",taskMetaData); -FlowUtil.mail("com.fp.viaticos.mail.Tesoreria", maia, taskMetaData, 133 , 134); - - - List old=(List)tasksMetaData.get("Confirmar movilización"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Notificar movilización",old); - - - - - - - - - - CallActivity_11_maiaInput - CallActivity_11_taskMetaDataInput - - - CallActivity_11_actualTaskOutput - CallActivity_11_maiaOutput - CallActivity_11_taskMetaDataOutput - - - - maia - CallActivity_11_maiaInput - - - taskMetaData - CallActivity_11_taskMetaDataInput - - - CallActivity_11_actualTaskOutput - actualTask - - - CallActivity_11_maiaOutput - maia - - - CallActivity_11_taskMetaDataOutput - taskMetaData - - - - - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/entries b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/entries deleted file mode 100644 index 5d8a9dc..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/entries +++ /dev/null @@ -1,980 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/resources/flows/comaco -svn://172.17.26.185/COMACO - - - -2022-04-19T02:35:58.553023Z -4666 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CargaDeposito.bpmn -file - - - - -2022-07-28T03:40:46.078817Z -d4bbf291bed64cb441f6359792e9b98f -2015-07-09T13:27:13.603719Z -4186 -cpiedra - - - - - - - - - - - - - - - - - - - - - -21324 - -subproceso.bpmn -file - - - - -2022-07-28T03:40:46.078817Z -59134348d2a5e79a8202e1d6a2f7dd28 -2014-10-23T05:08:11.379458Z -1873 -cpiedra - - - - - - - - - - - - - - - - - - - - - -16015 - -notificacionAnulacionTramite.bpmn -file - - - - -2022-07-28T03:40:46.078817Z -eaf2878c62fb9c3000c7df664784ca00 -2014-10-01T11:23:26.871913Z -1291 -abenalcazar - - - - - - - - - - - - - - - - - - - - - -15282 - -EmisionDocumentoHabilitante.bpmn -file - - - - -2022-07-28T03:40:46.078817Z -cec619806acdb9ff16dbb5e38b3feb2e -2015-08-05T06:39:04.272674Z -4256 -cpiedra - - - - - - - - - - - - - - - - - - - - - -69681 - -solicitudFlow.bpmn -file - - - - -2022-07-28T03:40:46.079817Z -f6e8c56f25e34c73d208d1d76ce8b2da -2014-10-06T09:08:36.409627Z -1399 -fpazmino - - - - - - - - - - - - - - - - - - - - - -35248 - -EjecucionTramite.bpmn -file - - - - -2022-07-28T03:40:46.079817Z -f20614f90d6b59ae71d646110526901e -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -53117 - -EjecucionImpresion.bpmn -file - - - - -2022-07-28T03:40:46.079817Z -6aa994bb999416fad406ba4cf052d754 -2014-12-10T03:17:02.288100Z -3388 -cpiedra - - - - - - - - - - - - - - - - - - - - - -18919 - -RecepcionArmas.bpmn -file - - - - -2022-07-28T03:40:46.080817Z -5bea11f17962339662f30c630ccebe01 -2015-02-20T10:59:33.469980Z -3829 -cpiedra - - - - - - - - - - - - - - - - - - - - - -14290 - -EjecucionDevolucion.bpmn -file - - - - -2022-07-28T03:40:46.080817Z -8a0d95507a455a3cfc831711865262c0 -2015-01-09T12:20:49.789804Z -3739 -cpiedra - - - - - - - - - - - - - - - - - - - - - -27300 - -EjecucionAutorizacion.bpmn -file - - - - -2022-07-28T03:40:46.080817Z -619ab78abcec0c6865bf9d880fcacfb5 -2015-08-05T06:39:04.272674Z -4256 -cpiedra - - - - - - - - - - - - - - - - - - - - - -46508 - -EjecucionInternacion.bpmn -file - - - - -2022-07-28T03:40:46.080817Z -356e480dcf8b8a4d7fb0a1e0cdca9081 -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -22036 - -solicitud.bpmn -file - - - - -2022-07-28T03:40:46.081817Z -ed93cf5ba26db35f06f94d618ab70123 -2014-10-28T03:41:58.186218Z -2015 -ogarcia - - - - - - - - - - - - - - - - - - - - - -13855 - -BajaDestruccion.bpmn -file - - - - -2022-07-28T03:40:46.081817Z -7e10af4790e9b5c438dc306c8856c3d3 -2014-12-08T13:26:13.111197Z -3349 -cpiedra - - - - - - - - - - - - - - - - - - - - - -38199 - -autorizarDocumentoCarlos.bpmn -file - - - - -2022-07-28T03:40:46.081817Z -fa5cb75bbc88db785c4d967766fb9410 -2014-10-02T05:58:32.610486Z -1312 -cguzman - - - - - - - - - - - - - - - - - - - - - -19266 - -decomiso.bpmn -file - - - - -2022-07-28T03:40:46.081817Z -86852f9300b4d6a23abc1ef9b05646c9 -2014-10-18T04:43:17.366144Z -1701 -cpiedra - - - - - - - - - - - - - - - - - - - - - -14449 - -EjecutarInscripcion.bpmn -file - - - - -2022-07-28T03:40:46.082817Z -db738f83056d6379647062cc8429e578 -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -21552 - -EjecucionPermiso.bpmn -file - - - - -2022-07-28T03:40:46.082817Z -f802055d0c4780334193c97847e0ef1b -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -19771 - -solicitudCarlos.bpmn -file - - - - -2022-07-28T03:40:46.082817Z -e753b9f062c65d5c0e5aabb1d73798d2 -2014-09-25T12:54:24.371290Z -1147 -cguzman - - - - - - - - - - - - - - - - - - - - - -12501 - -EnvioArmas.bpmn -file - - - - -2022-07-28T03:40:46.082817Z -4c1fab010700446b940d3a4332b2bede -2016-03-18T20:02:28.170272Z -4515 -fpazmino - - - - - - - - - - - - - - - - - - - - - -23848 - -EjecucionApertura.bpmn -file - - - - -2022-07-28T03:40:46.083817Z -e7538d0b170249edc26d1e80ea1c3c77 -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -21414 - -PlanificacionInspeccion.bpmn -file - - - - -2022-07-28T03:40:46.083817Z -005868a5f4df830d7ec2ad9045fa4518 -2014-12-10T03:17:02.288100Z -3388 -cpiedra - - - - - - - - - - - - - - - - - - - - - -34107 - -decomisarArmaCarlos.bpmn -file - - - - -2022-07-28T03:40:46.083817Z -e8178e6bea5e9f9f37e04a9a1145d130 -2014-10-02T05:59:00.140347Z -1313 -cguzman - - - - - - - - - - - - - - - - - - - - - -16232 - -EjecucionIncrementoArmas.bpmn -file - - - - -2022-07-28T03:40:46.083817Z -1f5d9b1acc18121e29ce46aa4d20b828 -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -21186 - -EjecucionInspeccion.bpmn -file - - - - -2022-07-28T03:40:46.084817Z -f26d5b1e3030bcecd3fa74207a216cba -2015-08-05T06:39:04.272674Z -4256 -cpiedra - - - - - - - - - - - - - - - - - - - - - -16031 - -RecepcionSolicitudRequisitos.bpmn -file - - - - -2022-07-28T03:40:46.084817Z -95d2b5eb48991e4f77b12d55694040cc -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -25518 - -RegistroDecomiso.bpmn -file - - - - -2022-07-28T03:40:46.084817Z -207cdd3f68f1445ba814981909a26f65 -2014-12-29T13:29:30.873199Z -3674 -cpiedra - - - - - - - - - - - - - - - - - - - - - -22501 - -EjecutarCertificados.bpmn -file - - - - -2022-07-28T03:40:46.084817Z -1e646e49616b0499a3a4566452706504 -2014-12-16T11:36:21.254912Z -3542 -gbenavides - - - - - - - - - - - - - - - - - - - - - -19188 - -EjecucionEmisionGuiaTransito.bpmn -file - - - - -2022-07-28T03:40:46.085817Z -b81b0c5aed8aa1e592d945d7711602d4 -2014-12-18T11:49:51.624673Z -3594 -gbenavides - - - - - - - - - - - - - - - - - - - - - -29364 - diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/BajaDestruccion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/BajaDestruccion.bpmn.svn-base deleted file mode 100644 index f74206d..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/BajaDestruccion.bpmn.svn-base +++ /dev/null @@ -1,576 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - System.out.println("****Ingresa a preparar el flujo******"); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",55, 1,120, "Revisar reporte armas a destruccion", 20, "OK_NO"); - -//para asignar a un grupo especifico -maia.put("grupo","SUPERV_DECO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Revisar reporte armas a destruccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_4 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Revisar reporte armas a destruccion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",56, 1,120, "Aprobar reporte de armas a destruccion Jefe Dpto", 21, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setGroupId("JEFE_DEPARTAMENTO_ARMAS_"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Aprobar reporte de armas a destruccion Jefe Dpto",actualTask); - - - SequenceFlow_4 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Aprobar reporte de armas a destruccion Jefe Dpto - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_8 - - - - SequenceFlow_9 - SequenceFlow_11 - SequenceFlow_12 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",101, 1,120, "Firmar reporte", 23, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setGroupId("JEFE_COMANDO_CONJUNTO_"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar reporte",actualTask); - - - SequenceFlow_12 - SequenceFlow_13 - - - - - - - - - - - - - - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - DataInput_22 - DataInput_23 - DataInput_24 - DataInput_25 - - - DataOutput_3 - DataOutput_5 - - - - DataInput_17 - - Firmar reporte - _DataInput_16 - - - - DataInput_18 - - - DataInput_19 - - - DataInput_20 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_21 - - - DataInput_22 - - - DataInput_23 - - - maia - DataInput_24 - - - taskMetaData - DataInput_25 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_11 - - - - - SequenceFlow_1 - - - - SequenceFlow_14 - SequenceFlow_1 - FlowUtil.endFlow(kcontext); - - - SequenceFlow_13 - SequenceFlow_14 - System.out.println("Pendiente ejecutar clase que actualiza el inventario"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarInventBajaDestrucc", maia); - - - - - - _1-_15 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",57, 1,120, "Aprobar reporte de armas a destruccion Jefe CC", 22, "OK_NO"); -//para asignar a un usuario especifico -taskMetaData.setGroupId("JEFE_COMANDO_CONJUNTO_"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Aprobar reporte de armas a destruccion Jefe CC",actualTask); - - - SequenceFlow_7 - SequenceFlow_9 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - DataInput_10 - - - DataOutput_1 - DataOutput_2 - - - - DataInput_1 - - Aprobar reporte de armas a destruccion Jefe CC - _DataInput_16 - - - - DataInput_2 - - - DataInput_3 - - - DataInput_4 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_6 - - - DataInput_7 - - - DataInput_8 - - - maia - DataInput_9 - - - taskMetaData - DataInput_10 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_6 - SequenceFlow_7 - SequenceFlow_8 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/CargaDeposito.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/CargaDeposito.bpmn.svn-base deleted file mode 100644 index 8686daf..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/CargaDeposito.bpmn.svn-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_11 - - - - SequenceFlow_10 - SequenceFlow_11 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_9 - SequenceFlow_10 - System.out.println("Ingresa a tarea de enviar el mail de Notificar inconsistencia deposito"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 17 , 18); - - - - _1-_15 - SequenceFlow_1 - System.out.println("Ingresa al flujo de carga deposito"); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",42, 1,120, "Validar transaccion de deposito", 24, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidaFlujoCargaDeposito", maia); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar transaccion de deposito",actualTask); - - - SequenceFlow_1 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Validar transaccion de deposito - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _1-_15 - - - - - - //taskMetaData=FlowUtil.createTaskInfoByClassName("30",24, 1,30,"com.fp.viaticos.task.AsignarEmpleado", "Modificar empleado", 11, "OK_NO"); -//kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_2 - SequenceFlow_15 - - - - - - - DataInput_18 - DataInput_19 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_18 - - - taskMetaData - DataInput_19 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - - _16-_12 - - - - SequenceFlow_15 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_6 - SequenceFlow_9 - SequenceFlow_2 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionApertura.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionApertura.bpmn.svn-base deleted file mode 100644 index bafc009..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionApertura.bpmn.svn-base +++ /dev/null @@ -1,311 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar Info Agencias", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Info Agencias",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_191 - _DataInput_192 - _DataInput_193 - _DataInput_194 - _DataInput_195 - _DataInput_196 - _DataInput_197 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_191 - - Validar Info Agencias - _DataInput_191 - - - - _DataInput_192 - - - _DataInput_193 - - - _DataInput_194 - - #{taskMetaData.groupId} - _DataInput_194 - - - - _DataInput_195 - - - _DataInput_196 - - - _DataInput_197 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - SequenceFlow_5 - SequenceFlow_6 - //FlowUtil.endFlow(kcontext); - - - SequenceFlow_6 - - - - - SequenceFlow_8 - SequenceFlow_9 - //FlowUtil.endFlow(kcontext); - - - SequenceFlow_9 - - - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_5 - DataInput_6 - - - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - taskMetaData - DataInput_6 - - - DataOutput_5 - maia - - - DataOutput_6 - taskMetaData - - - - - SequenceFlow_4 - SequenceFlow_5 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_3 - SequenceFlow_4 - SequenceFlow_7 - - - System.out.println("Camino D"); -return ("D".equals(taskMetaData.getResponse())); - - - System.out.println("Camino A"); -return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionAutorizacion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionAutorizacion.bpmn.svn-base deleted file mode 100644 index b9809f4..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionAutorizacion.bpmn.svn-base +++ /dev/null @@ -1,631 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_1 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar tipo de Autorizacion", 1, "OK_NO"); -maia.put("grupo","SUPERV_INSP_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar tipo de Autorizacion",actualTask); - - - SequenceFlow_1 - SequenceFlow_12 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - DataInput_5 - DataInput_6 - DataInput_12 - DataInput_7 - DataInput_8 - - - DataOutput_6 - DataOutput_7 - - - - DataInput_1 - - Validar tipo de Autorizacion - _DataInput_149 - - - - DataInput_2 - - - DataInput_3 - - - DataInput_4 - - #{taskMetaData.groupId} - _DataInput_152 - - - - DataInput_5 - - - DataInput_6 - - - DataInput_12 - - - maia - DataInput_7 - - - taskMetaData - DataInput_8 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_16 - - - - SequenceFlow_12 - SequenceFlow_15 - SequenceFlow_7 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - Requiere Inspeccion - SequenceFlow_7 - SequenceFlow_13 - System.out.println("............................................................................................Autorizacion Previa de Importacion"); -FlowUtil.executeClass("com.fp.armas.task.ValAutorizacionPreviaImporta", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("previaimportacion")!=null)?""+maia.get("previaimportacion"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_13 - SequenceFlow_19 - SequenceFlow_20 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar tipo de Autorizacion VUE", 1, "OK_NO"); -taskMetaData.setGroupId("ANALISTA_VUE"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar tipo de Autorizacion VUE",actualTask); - - - SequenceFlow_19 - SequenceFlow_21 - - - - - - - - - - - - - - DataInput_14 - DataInput_15 - DataInput_16 - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - DataInput_22 - - - DataOutput_1 - DataOutput_2 - - - - DataInput_14 - - Validar tipo de Autorizacion VUE - _DataInput_149 - - - - DataInput_15 - - - DataInput_16 - - - DataInput_17 - - #{taskMetaData.groupId} - _DataInput_152 - - - - DataInput_18 - - - DataInput_19 - - - DataInput_20 - - - maia - DataInput_21 - - - taskMetaData - DataInput_22 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_17 - SequenceFlow_2 - SequenceFlow_3 - - - return ("N".equals(taskMetaData.getResponse())); - - - return ("Y".equals(taskMetaData.getResponse())); - - - SequenceFlow_8 - _16-_12 - - - - Requiere Inspeccion - SequenceFlow_22 - SequenceFlow_17 - System.out.println(".............................................................................................Requiere Inspeccion :"); -FlowUtil.executeClass("com.fp.armas.task.RequiereInspeccion", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("inspeccion")!=null)?""+maia.get("inspeccion"):null); -System.out.println(".............................................................................................Requiere Inspeccion :"+taskMetaData.getResponse()); -kcontext.setVariable("taskMetaData",taskMetaData); -System.out.println(".............................................................................................Requiere Inspeccion :"+taskMetaData.getResponse()); - - - - SequenceFlow_2 - SequenceFlow_9 - SequenceFlow_5 - - - - _16-_12 - - - - - - System.out.println("............................................................................................ Inspeccion :"); - - - System.out.println("............................................................................................ Inspeccion OK"); -FlowUtil.executeClass("com.fp.armas.task.ValidaInspeccion", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("tramiteproceso")!=null)?""+maia.get("tramiteproceso"):null); -kcontext.setVariable("taskMetaData",taskMetaData); -System.out.println("..........................................................................................regreso... :"+taskMetaData.getResponse()); - - - SequenceFlow_3 - SequenceFlow_4 - - - - - - - DataInput_11 - DataInput_13 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - taskMetaData - DataInput_13 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - - SequenceFlow_11 - - - - - - - SequenceFlow_5 - SequenceFlow_8 - - - - - - - DataInput_9 - DataInput_10 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_9 - - - taskMetaData - DataInput_10 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - - SequenceFlow_10 - SequenceFlow_11 - - - - return ("D".equals(taskMetaData.getResponse())); - - - - SequenceFlow_20 - SequenceFlow_21 - SequenceFlow_22 - - - - SequenceFlow_4 - SequenceFlow_9 - SequenceFlow_10 - - - return ("Y".equals(taskMetaData.getResponse())); - - - return ("N".equals(taskMetaData.getResponse())); - - - SequenceFlow_15 - SequenceFlow_16 - System.out.println("............................................................................................ RECHAZA VALIDAR TIPO SOLICITUD:"); -System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones","Tramite Anulado en Validar Tipo De Autorizacion"+datosmail.get("observaciones")); -}else{ -maia.put("observaciones","Tramite Anulado en Validar Tipo De Autorizacion"); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionDevolucion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionDevolucion.bpmn.svn-base deleted file mode 100644 index 37c9cb5..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionDevolucion.bpmn.svn-base +++ /dev/null @@ -1,411 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_10 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - _1-_15 - - - - SequenceFlow_11 - SequenceFlow_5 - SequenceFlow_7 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",32, 1,120, "Autorizar Devolucion",37, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -System.out.println("1..................."); -actualTask=new java.util.ArrayList(); -System.out.println("2..................."); -kcontext.setVariable("actualTask",actualTask); -System.out.println("3..................."); -actualTask.add(taskMetaData); -System.out.println("4..................."); -System.out.println("5..................."); -tasksMetaData.put("Autorizar Devolucion",actualTask); -System.out.println("6..................."); - - - SequenceFlow_5 - SequenceFlow_1 - - - - - - - - - - - - - - DataInput_13 - DataInput_14 - DataInput_15 - DataInput_16 - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - - - DataOutput_1 - DataOutput_2 - - - - DataInput_13 - - Autorizar Devolucion - _DataInput_16 - - - - DataInput_14 - - - DataInput_15 - - - DataInput_16 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_17 - - - DataInput_18 - - - DataInput_19 - - - maia - DataInput_20 - - - taskMetaData - DataInput_21 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_7 - _16-_12 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - _16-_12 - - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",29, 1,120, "Informacion Devolucion", 36, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","TEC_ALM_CENTRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Informacion Devolucion",actualTask); - - - - SequenceFlow_10 - SequenceFlow_11 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - - - DataOutput_3 - DataOutput_5 - - - - DataInput_1 - - Informacion Devolucion - _DataInput_16 - - - - DataInput_2 - - - DataInput_3 - - - DataInput_4 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_5 - - - DataInput_6 - - - DataInput_7 - - - maia - DataInput_8 - - - taskMetaData - DataInput_9 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_2 - SequenceFlow_6 - System.out.println("fin"); -//FlowUtil.endFlow(kcontext); -System.out.println("fin1"); - - - - SequenceFlow_6 - - - - - - - SequenceFlow_1 - SequenceFlow_2 - - - - - - - DataInput_10 - DataInput_11 - - - DataOutput_4 - DataOutput_6 - - - - maia - DataInput_10 - - - taskMetaData - DataInput_11 - - - DataOutput_4 - maia - - - DataOutput_6 - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionEmisionGuiaTransito.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionEmisionGuiaTransito.bpmn.svn-base deleted file mode 100644 index 7282524..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionEmisionGuiaTransito.bpmn.svn-base +++ /dev/null @@ -1,422 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_1 - SequenceFlow_5 - SequenceFlow_13 - - - return ("D".equals(taskMetaData.getResponse())); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",23, 1,120, "Validacion Inconsistencias Informacion Solicitud", 56, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validacion Inconsistencias Informacion Solicitud",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Validacion Inconsistencias Informacion Solicitud - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_5 - SequenceFlow_6 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,61); - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_13 - SequenceFlow_16 - System.out.println(" Verifica cantidad armamento "); -FlowUtil.executeClass("com.fp.armas.task.VerificarCantidadArmas", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("requierecustodia")!=null)?""+maia.get("requierecustodia"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - SequenceFlow_16 - SequenceFlow_20 - SequenceFlow_24 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_20 - SequenceFlow_15 - SequenceFlow_22 - - - - - - System.out.println(" Genera Orden trabajo "); -taskMetaData=FlowUtil.createTaskInfo("30",27, 1,120, "Generar Orden Trabajo", 55, "OK_NO"); -maia.put("grupo","SUPERV_INSP_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Generar Orden Trabajo",actualTask); - - - SequenceFlow_24 - SequenceFlow_15 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_11 - DataOutput_12 - - - - maia - DataInput_1 - - - DataInput_2 - - Generar Orden Trabajo - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_11 - maia - - - DataOutput_12 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - System.out.println(" Documento Habilitante "); - - - - - - SequenceFlow_22 - SequenceFlow_23 - - - - - - - - DataInput_90 - DataInput_91 - - - DataOutput_19 - DataOutput_20 - DataOutput_21 - - - - maia - DataInput_90 - - - taskMetaData - DataInput_91 - - - DataOutput_19 - taskMetaData - - - DataOutput_20 - maia - - - DataOutput_21 - actualTask - - - - - SequenceFlow_23 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionImpresion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionImpresion.bpmn.svn-base deleted file mode 100644 index bf0a471..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionImpresion.bpmn.svn-base +++ /dev/null @@ -1,285 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - _1-_15 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",50, 1,120, "Validar Reimpresion", 32, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData=new java.util.HashMap(); -tasksMetaData.put("Validar Reimpresion",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Validar Reimpresion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - - - System.out.println("Imprime documento"); -taskMetaData=FlowUtil.createTaskInfo("30",59, 1,120, "Imprimir Documento", 51, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -//tasksMetaData =new java.util.HashMap(); -tasksMetaData.put("Imprimir Documento",actualTask); - - - SequenceFlow_7 - SequenceFlow_5 - - - - - - - - - DataInput_22 - DataInput_23 - DataInput_24 - DataInput_25 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_22 - - - DataInput_23 - - Imprimir Documento - DataInput_26 - - - - DataInput_24 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_25 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_8 - - - - SequenceFlow_5 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - SequenceFlow_1 - SequenceFlow_7 - SequenceFlow_8 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionIncrementoArmas.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionIncrementoArmas.bpmn.svn-base deleted file mode 100644 index 035545b..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionIncrementoArmas.bpmn.svn-base +++ /dev/null @@ -1,306 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("tasksMetaData",tasksMetaData); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar la Informacion Armas", 59, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar la Informacion Armas",actualTask); - - - SequenceFlow_2 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_184 - _DataInput_185 - _DataInput_186 - _DataInput_187 - _DataInput_188 - _DataInput_189 - _DataInput_190 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_184 - - Validar la Informacion Armas - _DataInput_184 - - - - _DataInput_185 - - - _DataInput_186 - - - _DataInput_187 - - #{taskMetaData.groupId} - _DataInput_187 - - - - _DataInput_188 - - - _DataInput_189 - - - _DataInput_190 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_10 - SequenceFlow_11 - System.out.println(" Anula Incremento de Armas: "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_11 - SequenceFlow_12 - - - - SequenceFlow_6 - SequenceFlow_7 - SequenceFlow_10 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_8 - SequenceFlow_9 - \ - - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_4 - DataOutput_5 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - - - - SequenceFlow_9 - - - - SequenceFlow_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInspeccion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInspeccion.bpmn.svn-base deleted file mode 100644 index 17b6a78..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInspeccion.bpmn.svn-base +++ /dev/null @@ -1,226 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - System.out.println(".............................................................................................Inspeccion..:"); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",31, 1,120, "Registrar Inspeccion", 54, "OK_NO"); -maia.put("grupo","INSP_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Registrar Inspeccion",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Registrar Inspeccion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - - SequenceFlow_1 - SequenceFlow_5 - SequenceFlow_6 - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_5 - _16-_12 - System.out.println("............................................................................................SI........................ :"+taskMetaData.getResponse()); - - - - - _16-_12 - - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_7 - - - - FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - SequenceFlow_6 - SequenceFlow_7 - System.out.println("............................................................................................ NO:"); -System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones","Tramite Anulado en Registrar Inspeccion"+datosmail.get("observaciones")); -}else{ -maia.put("observaciones","Tramite Anulado en Registrar Inspeccion"); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); -System.out.println("..........................................................................................no... :"+taskMetaData.getResponse()); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInternacion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInternacion.bpmn.svn-base deleted file mode 100644 index 9b46d24..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionInternacion.bpmn.svn-base +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("tasksMetaData",tasksMetaData); - - - - SequenceFlow_11 - SequenceFlow_12 - - - SequenceFlow_12 - - - - - SequenceFlow_4 - SequenceFlow_7 - SequenceFlow_10 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_4 - DataOutput_5 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - - - SequenceFlow_8 - SequenceFlow_9 - - - - SequenceFlow_10 - SequenceFlow_11 - System.out.println("***SE ANULO EL TRAMITE***"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar Info Armas", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Info Armas",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_184 - _DataInput_185 - _DataInput_186 - _DataInput_187 - _DataInput_188 - _DataInput_189 - _DataInput_190 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_184 - - Validar Info Armas - _DataInput_184 - - - - _DataInput_185 - - - _DataInput_186 - - - _DataInput_187 - - #{taskMetaData.groupId} - _DataInput_187 - - - - _DataInput_188 - - - _DataInput_189 - - - _DataInput_190 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_3 - SequenceFlow_4 - System.out.println("***SE ANULO EL TRAMITE***"); - - - - - SequenceFlow_9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionPermiso.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionPermiso.bpmn.svn-base deleted file mode 100644 index 551ca9e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionPermiso.bpmn.svn-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_1 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData =new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",24, 1,120, "Receptar Armas", 45, "OK_NO"); -maia.put("grupo","TEC_ALM_CENTRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Receptar Armas",actualTask); - - - SequenceFlow_1 - SequenceFlow_16 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_1 - - - DataInput_2 - - Receptar Armas - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",28, 1,120, "Ingresa Ficha Tecnica Arma", 46, "OK_NO"); -maia.put("grupo","ANALISTA_TIRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ingresa Ficha Tecnica Arma",actualTask); - - - SequenceFlow_16 - SequenceFlow_17 - - - - - - - - - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_6 - - - DataInput_7 - - Ingresa Ficha Tecnica Arma - DataInput_26 - - - - DataInput_8 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_9 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_12 - SequenceFlow_13 - //FlowUtil.endFlow(kcontext); - - - - - - - - - SequenceFlow_17 - SequenceFlow_12 - - - - - - - - DataInput_39 - DataInput_40 - - - DataOutput_14 - DataOutput_15 - DataOutput_16 - - - - maia - DataInput_39 - - - taskMetaData - DataInput_40 - - - DataOutput_14 - actualTask - - - DataOutput_15 - maia - - - DataOutput_16 - taskMetaData - - - - - SequenceFlow_13 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionTramite.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionTramite.bpmn.svn-base deleted file mode 100644 index 074ddda..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecucionTramite.bpmn.svn-base +++ /dev/null @@ -1,721 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_4 - System.out.println("***Ingresa a la tarea prepara flujo***"); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - _1-_15 - - - - - SequenceFlow_4 - SequenceFlow_5 - System.out.println("***Ingresa a la tarea evaluar tipo de documento***"); -FlowUtil.executeClass("com.fp.armas.task.TipoDocumento", maia); -// taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("tipodocumento")!=null)?""+maia.get("tipodocumento"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_5 - SequenceFlow_11 - SequenceFlow_13 - SequenceFlow_15 - SequenceFlow_17 - SequenceFlow_19 - SequenceFlow_21 - SequenceFlow_24 - SequenceFlow_26 - SequenceFlow_27 - SequenceFlow_29 - - - - - - - SequenceFlow_30 - SequenceFlow_9 - - - - - - - DataInput_15 - DataInput_16 - - - DataOutput_6 - DataOutput_7 - - - - maia - DataInput_15 - - - taskMetaData - DataInput_16 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - - return ("EA".equals(taskMetaData.getResponse())); - - - return ("EI".equals(taskMetaData.getResponse())); - - - return ("ET".equals(taskMetaData.getResponse())); - - - return ("EG".equals(taskMetaData.getResponse())); - - - SequenceFlow_9 - SequenceFlow_12 - SequenceFlow_14 - SequenceFlow_16 - SequenceFlow_18 - SequenceFlow_20 - SequenceFlow_22 - SequenceFlow_23 - SequenceFlow_25 - SequenceFlow_28 - SequenceFlow_10 - - - - SequenceFlow_10 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - return ("EC".equals(taskMetaData.getResponse())); - - - - - - - SequenceFlow_13 - SequenceFlow_14 - - - - - - - DataInput_19 - DataInput_20 - - - DataOutput_11 - DataOutput_12 - - - - maia - DataInput_19 - - - taskMetaData - DataInput_20 - - - DataOutput_11 - maia - - - DataOutput_12 - taskMetaData - - - - - - - - - SequenceFlow_11 - SequenceFlow_12 - - - - - - - DataInput_17 - DataInput_18 - - - DataOutput_9 - DataOutput_10 - - - - maia - DataInput_17 - - - taskMetaData - DataInput_18 - - - DataOutput_9 - maia - - - DataOutput_10 - taskMetaData - - - - - return ("ER".equals(taskMetaData.getResponse())); - - - return ("ED".equals(taskMetaData.getResponse())); - - - return ("ES".equals(taskMetaData.getResponse())); - - - return ("EN".equals(taskMetaData.getResponse())); - - - - - - - SequenceFlow_19 - SequenceFlow_20 - - - - - - - DataInput_25 - DataInput_27 - - - DataOutput_17 - DataOutput_18 - - - - maia - DataInput_25 - - - taskMetaData - DataInput_27 - - - DataOutput_17 - maia - - - DataOutput_18 - taskMetaData - - - - - - - - - SequenceFlow_26 - SequenceFlow_25 - - - - - - - DataInput_33 - DataInput_34 - - - DataOutput_23 - DataOutput_24 - - - - maia - DataInput_33 - - - taskMetaData - DataInput_34 - - - DataOutput_23 - maia - - - DataOutput_24 - taskMetaData - - - - - - - - - SequenceFlow_21 - SequenceFlow_22 - - - - - - - DataInput_28 - DataInput_30 - - - DataOutput_19 - DataOutput_20 - - - - maia - DataInput_28 - - - taskMetaData - DataInput_30 - - - DataOutput_19 - maia - - - DataOutput_20 - taskMetaData - - - - - - - - - SequenceFlow_15 - SequenceFlow_16 - - - - - - - DataInput_21 - DataInput_22 - - - DataOutput_13 - DataOutput_14 - - - - maia - DataInput_21 - - - taskMetaData - DataInput_22 - - - DataOutput_13 - maia - - - DataOutput_14 - taskMetaData - - - - - - - - - SequenceFlow_27 - SequenceFlow_28 - - - - - - - DataInput_35 - DataInput_36 - - - DataOutput_25 - DataOutput_26 - - - - maia - DataInput_35 - - - taskMetaData - DataInput_36 - - - DataOutput_25 - maia - - - DataOutput_26 - taskMetaData - - - - - - - - - SequenceFlow_24 - SequenceFlow_23 - - - - - - - DataInput_31 - DataInput_32 - - - DataOutput_21 - DataOutput_22 - - - - maia - DataInput_31 - - - taskMetaData - DataInput_32 - - - DataOutput_21 - maia - - - DataOutput_22 - taskMetaData - - - - - - - - - SequenceFlow_17 - SequenceFlow_18 - - - - - - - DataInput_23 - DataInput_24 - - - DataOutput_15 - DataOutput_16 - - - - maia - DataInput_23 - - - taskMetaData - DataInput_24 - - - DataOutput_15 - maia - - - DataOutput_16 - taskMetaData - - - - - SequenceFlow_29 - SequenceFlow_30 - System.out.println("***Ingresa a la tarea NOTIFICAR FECHA DE ENTRGA DE ARMAS***"); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 39,40); - - - return ("EP".equals(taskMetaData.getResponse())); - - - - _16-_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarCertificados.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarCertificados.bpmn.svn-base deleted file mode 100644 index 80c8276..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarCertificados.bpmn.svn-base +++ /dev/null @@ -1,276 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - SequenceFlow_12 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_10 - - - - SequenceFlow_9 - SequenceFlow_10 - System.out.println("TramiteAnulado"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar Certificados",actualTask); - - - SequenceFlow_8 - SequenceFlow_5 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_3 - DataOutput_4 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - - SequenceFlow_13 - SequenceFlow_8 - SequenceFlow_9 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_5 - SequenceFlow_6 - - - - SequenceFlow_1 - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Valida Informacion Certificado", 58, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Valida Informacion Certificado",actualTask); - - - SequenceFlow_12 - SequenceFlow_13 - - - - - - - - - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - - - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - DataInput_6 - - Valida Informacion Certificado - DataInput_26 - - - - DataInput_7 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_8 - - - DataOutput_5 - maia - - - DataOutput_6 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarInscripcion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarInscripcion.bpmn.svn-base deleted file mode 100644 index f4e4fcd..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EjecutarInscripcion.bpmn.svn-base +++ /dev/null @@ -1,313 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Valida Info Inscripcion", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Valida Info Inscripcion",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_149 - _DataInput_150 - _DataInput_151 - _DataInput_152 - _DataInput_153 - _DataInput_154 - _DataInput_155 - DataInput_2 - DataInput_3 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_149 - - Valida Info Inscripcion - _DataInput_149 - - - - _DataInput_150 - - - _DataInput_151 - - - _DataInput_152 - - #{taskMetaData.groupId} - _DataInput_152 - - - - _DataInput_153 - - - _DataInput_154 - - - _DataInput_155 - - - maia - DataInput_2 - - - taskMetaData - DataInput_3 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar Certificados",actualTask); - - - SequenceFlow_4 - SequenceFlow_5 - - - - - - - DataInput_4 - DataInput_5 - - - DataOutput_3 - DataOutput_4 - - - - maia - DataInput_4 - - - taskMetaData - DataInput_5 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - SequenceFlow_5 - SequenceFlow_6 - //FlowUtil.endFlow(kcontext); - - - - - SequenceFlow_7 - SequenceFlow_9 - System.out.println("***SE ANULO EL TRAMITE***"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - SequenceFlow_9 - SequenceFlow_10 - //FlowUtil.endFlow(kcontext); - - - - SequenceFlow_10 - - - - - SequenceFlow_3 - SequenceFlow_4 - SequenceFlow_7 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EmisionDocumentoHabilitante.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EmisionDocumentoHabilitante.bpmn.svn-base deleted file mode 100644 index 8974da0..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EmisionDocumentoHabilitante.bpmn.svn-base +++ /dev/null @@ -1,992 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_9 - SequenceFlow_1 - SequenceFlow_18 - - - return ("D".equals(taskMetaData.getResponse())); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",102, 1,120, "Generar Reporte", 35, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Generar Reporte",actualTask); - - - SequenceFlow_17 - SequenceFlow_20 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_1 - - - DataInput_2 - - Generar Reporte - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_19 - SequenceFlow_17 - SequenceFlow_12 - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_1 - SequenceFlow_13 - System.out.println("ingresa a enviar el mail"); -//enviar mail de rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_18 - SequenceFlow_19 - FlowUtil.executeClass("com.fp.armas.task.FechaCaducidadEstadoArma", maia); -FlowUtil.executeClass("com.fp.armas.task.TramiteAprobado", maia); -FlowUtil.executeClass("com.fp.armas.task.TipoArchivoControl", maia); -FlowUtil.executeClass("com.fp.armas.task.FinalizarDocumentoHabilitante", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.getAditionalData().put("datosmail", maia.get("datosmail")); -taskMetaData.setResponse((maia.get("tipoarchivo")!=null)?""+maia.get("tipoarchivo"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",101, 1,120, "Firmar Tramite Supervisor", 38, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Tramite Supervisor",actualTask); - - - SequenceFlow_20 - SequenceFlow_5 - - - - - - - - - - - - - - DataInput_21 - DataInput_22 - DataInput_23 - DataInput_24 - DataInput_25 - DataInput_27 - DataInput_28 - DataInput_30 - DataInput_31 - - - DataOutput_6 - DataOutput_7 - - - - DataInput_21 - - Firmar Tramite Supervisor - _DataInput_16 - - - - DataInput_22 - - - DataInput_23 - - - DataInput_24 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_25 - - - DataInput_27 - - - DataInput_28 - - - maia - DataInput_30 - - - taskMetaData - DataInput_31 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",35,1,120,null, "Notificar fecha de Emision", 6, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Notificar fecha de Emision",actualTask); - - - SequenceFlow_12 - SequenceFlow_11 - - - - - - - - - - - - - - DataInput_15 - DataInput_16 - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_32 - DataInput_33 - DataInput_34 - - - DataOutput_11 - DataOutput_12 - - - - DataInput_15 - - Notificar fecha de Emision - _DataInput_16 - - - - DataInput_16 - - - DataInput_17 - - - DataInput_18 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_19 - - - DataInput_20 - - - DataInput_32 - - - maia - DataInput_33 - - - taskMetaData - DataInput_34 - - - DataOutput_11 - maia - - - DataOutput_12 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_11 - SequenceFlow_3 - System.out.println("ingresa a enviar el mail si requiere tarjeta"); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 4 ,5); - - - - SequenceFlow_3 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - SequenceFlow_13 - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",108,1,120,null, "Notificar fecha de Emision Reporte", 6, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Notificar fecha de Emision Reporte",actualTask); - - - SequenceFlow_6 - SequenceFlow_10 - - - - - - - - - - - - - - DataInput_46 - DataInput_47 - DataInput_48 - DataInput_49 - DataInput_50 - DataInput_51 - DataInput_52 - DataInput_53 - DataInput_54 - - - DataOutput_9 - DataOutput_10 - - - - DataInput_46 - - Notificar fecha de Emision Reporte - _DataInput_16 - - - - DataInput_47 - - - DataInput_48 - - - DataInput_49 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_50 - - - DataInput_51 - - - DataInput_52 - - - maia - DataInput_53 - - - taskMetaData - DataInput_54 - - - DataOutput_9 - maia - - - DataOutput_10 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",109, 1,120, "Firmar Tramite Coordinador", 38, "OK_NO"); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Tramite Coordinador",actualTask); - - - SequenceFlow_5 - SequenceFlow_6 - - - - - - - - - - - - - - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - DataInput_10 - DataInput_12 - DataInput_13 - DataInput_14 - - - DataOutput_13 - DataOutput_14 - - - - DataInput_5 - - Firmar Tramite Coordinador - _DataInput_16 - - - - DataInput_6 - - - DataInput_7 - - - DataInput_8 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_9 - - - DataInput_10 - - - DataInput_12 - - - maia - DataInput_13 - - - taskMetaData - DataInput_14 - - - DataOutput_13 - maia - - - DataOutput_14 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_10 - SequenceFlow_7 - System.out.println("ingresa a enviar el mail si requiere reporte"); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 4 ,60); - - - - SequenceFlow_7 - SequenceFlow_22 - //FlowUtil.endFlow(kcontext); - - - - SequenceFlow_22 - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - _1-_15 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",30, 1,120, "Revisar Tramite", 30, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("............................................................................................ 1:"); -taskMetaData.updateData(maia); -System.out.println("............................................................................................ 2:"); -actualTask=new java.util.ArrayList(); -System.out.println("............................................................................................ 3:"); -kcontext.setVariable("actualTask",actualTask); -System.out.println("............................................................................................ 4:"); -actualTask.add(taskMetaData); -System.out.println("............................................................................................ 5:"); -tasksMetaData.put("Revisar Tramite",actualTask); -System.out.println("............................................................................................ 6:"); - - - SequenceFlow_2 - SequenceFlow_4 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Revisar Tramite - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_23 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",33, 1,120, "Autorizar Tramite", 31, "OK_NO"); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Autorizar Tramite",actualTask); - - - SequenceFlow_8 - SequenceFlow_9 - - - - - - - - - DataInput_200 - DataInput_201 - DataInput_202 - DataInput_203 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_200 - - - DataInput_201 - - Autorizar Tramite - DataInput_26 - - - - DataInput_202 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_203 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - SequenceFlow_4 - SequenceFlow_8 - SequenceFlow_14 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_14 - SequenceFlow_23 - System.out.println("............................................................................................ NO:"); -System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones","Tramite Anulado en Revisar Tramite"+datosmail.get("observaciones")); -}else{ -maia.put("observaciones","Tramite Anulado en Revisar Tramite"); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EnvioArmas.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EnvioArmas.bpmn.svn-base deleted file mode 100644 index 18f3ce7..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/EnvioArmas.bpmn.svn-base +++ /dev/null @@ -1,354 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",58, 1,120, "Autorizar Acta Entrega", 33, "OK_NO"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarRutaArchivo", maia); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Autorizar Acta Entrega",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Autorizar Acta Entrega - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - SequenceFlow_1 - SequenceFlow_5 - SequenceFlow_9 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",94, 1,120, "Firmar Acta", 34, "OK_NO"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarRutaArchivo", maia); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Acta",actualTask); - - - SequenceFlow_5 - SequenceFlow_10 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Firmar Acta - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_9 - SequenceFlow_6 - System.out.println("Entra actualizar ruta"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarRutaArchivo", maia); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - - - SequenceFlow_4 - - - - SequenceFlow_6 - SequenceFlow_7 - System.out.println("Entra a rechazar ruta"); -FlowUtil.executeClass("com.fp.armas.task.RechazarActa", maia); - - - - SequenceFlow_7 - SequenceFlow_4 - FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/PlanificacionInspeccion.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/PlanificacionInspeccion.bpmn.svn-base deleted file mode 100644 index d52e983..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/PlanificacionInspeccion.bpmn.svn-base +++ /dev/null @@ -1,518 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",101, 1,120, "Firmar Plan", 50, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Plan",actualTask); - - - SequenceFlow_6 - SequenceFlow_4 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Firmar Plan - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - SequenceFlow_10 - SequenceFlow_11 - maia.put("respuesta","Y"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarPlanificacion", maia); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",105, 1,120, "Generar Reporte", 49, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Generar Reporte",actualTask); - - - SequenceFlow_11 - SequenceFlow_6 - - - - - - - - - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_18 - - - DataInput_19 - - Generar Reporte - DataInput_26 - - - - DataInput_20 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_21 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_4 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_1 - SequenceFlow_8 - SequenceFlow_10 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_8 - SequenceFlow_13 - maia.put("respuesta","N"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarPlanificacion", maia); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",106, 1,120, "Modificar Plan Inspeccion", 57, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","SUPERV_INSP_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Modificar Plan Inspeccion",actualTask); - - - SequenceFlow_13 - SequenceFlow_14 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_1 - - - DataInput_2 - - Modificar Plan Inspeccion - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_12 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_12 - SequenceFlow_14 - SequenceFlow_7 - - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",104, 1,120, "Aprobar Plan Inspeccion", 48, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Aprobar Plan Inspeccion",actualTask); - - - SequenceFlow_7 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Aprobar Plan Inspeccion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionArmas.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionArmas.bpmn.svn-base deleted file mode 100644 index 2151c71..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionArmas.bpmn.svn-base +++ /dev/null @@ -1,208 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_4 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",101, 1,120, "Legalizar Acta", 29, "OK_NO"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarRutaArchivo", maia); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupoDecRecep", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Legalizar Acta",actualTask); - - - SequenceFlow_4 - SequenceFlow_5 - - - - - - - - - - - - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_30 - - Legalizar Acta - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - #{taskMetaData.groupId} - _DataInput_33 - - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_5 - SequenceFlow_1 - System.out.println("ingresa a Actualizar Inventario"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarInventario", maia); // la clase puede hacer lo que necesite -System.out.println("-- Actualizar Inventario"); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionSolicitudRequisitos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionSolicitudRequisitos.bpmn.svn-base deleted file mode 100644 index d61f725..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RecepcionSolicitudRequisitos.bpmn.svn-base +++ /dev/null @@ -1,360 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - SequenceFlow_18 - - - - SequenceFlow_25 - SequenceFlow_18 - FlowUtil.endFlow(kcontext); - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_23 - SequenceFlow_10 - System.out.println("***Ingresa a la tarea generar valor a cancelar***"); -FlowUtil.executeClass("com.fp.armas.task.GenerarValorACancelar", maia); -//taskMetaData.getAditionalData().get("datosmail"); -//taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("BPMStatus")!=null)?""+maia.get("BPMStatus"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_19 - SequenceFlow_3 - System.out.println("Ingresa a tarea de enviar el mail de aceptacion de requisitos"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 10 , 11); - - - - - - - SequenceFlow_24 - SequenceFlow_25 - - - - - - - DataInput_40 - DataInput_41 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_40 - - - taskMetaData - DataInput_41 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - - - SequenceFlow_3 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",25, 1,120, "Revisar solicitud y documentos requeridos", 1, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("taskMetaData",taskMetaData); -actualTask.add(taskMetaData); -tasksMetaData.put("Revisar solicitud y documentos requeridos",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Revisar solicitud y documentos requeridos - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_1 - SequenceFlow_7 - SequenceFlow_23 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_19 - SequenceFlow_24 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_5 - - - - SequenceFlow_7 - SequenceFlow_4 - //enviar mail al usuario indicando razones del rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 52 , 53); - - - - SequenceFlow_4 - SequenceFlow_5 - FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RegistroDecomiso.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RegistroDecomiso.bpmn.svn-base deleted file mode 100644 index 51e1f00..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/RegistroDecomiso.bpmn.svn-base +++ /dev/null @@ -1,320 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_15 - - - - SequenceFlow_12 - SequenceFlow_16 - SequenceFlow_7 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("C".equals(taskMetaData.getResponse())); - - - SequenceFlow_16 - SequenceFlow_15 - //FlowUtil.endFlow(kcontext); - - - - SequenceFlow_3 - SequenceFlow_4 - //FlowUtil.endFlow(kcontext); - - - SequenceFlow_4 - - - - - SequenceFlow_23 - - - - SequenceFlow_23 - SequenceFlow_5 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_5 - SequenceFlow_6 - FlowUtil.executeClass("com.fp.armas.task.ValidacionDecomiso", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("importacion")!=null)?""+maia.get("importacion"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - SequenceFlow_6 - SequenceFlow_2 - SequenceFlow_3 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_2 - SequenceFlow_12 - FlowUtil.executeClass("com.fp.armas.task.ObtieneCentroControl", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("corganismo")!=null)?""+maia.get("corganismo"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_11 - - - - SequenceFlow_9 - SequenceFlow_11 - FlowUtil.endFlow(kcontext); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",60, 1,120, "Definir Sancion", 44, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Definir Sancion",actualTask); - - - SequenceFlow_7 - SequenceFlow_9 - - - - - - - - - - - - - - DataInput_43 - DataInput_44 - DataInput_45 - DataInput_46 - DataInput_47 - DataInput_48 - DataInput_49 - DataInput_50 - DataInput_51 - - - DataOutput_7 - DataOutput_10 - - - - DataInput_43 - - Definir Sancion - _DataInput_16 - - - - DataInput_44 - - - DataInput_45 - - - DataInput_46 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_47 - - - DataInput_48 - - - DataInput_49 - - - maia - DataInput_50 - - - taskMetaData - DataInput_51 - - - DataOutput_7 - maia - - - DataOutput_10 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/autorizarDocumentoCarlos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/autorizarDocumentoCarlos.bpmn.svn-base deleted file mode 100644 index 4728c5e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/autorizarDocumentoCarlos.bpmn.svn-base +++ /dev/null @@ -1,287 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_5 - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_7 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",33,1,120,null, "Autorizar documento habilitante", 7, "OK_NO"); -System.out.println("Ingresa tarea---2-"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Autorizar documento habilitante"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Revisar solicitud y documentos requeridos",old); - - - SequenceFlow_8 - SequenceFlow_9 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_1 - taskMetaData - - - DataOutput_2 - maia - - - DataOutput_3 - actualTask - - - - SequenceFlow_7 - SequenceFlow_8 - System.out.println("Ingresa por el script"); - - - - SequenceFlow_9 - SequenceFlow_10 - SequenceFlow_11 - - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_1 - System.out.println("ingresa a enviar el mail"); -//enviar mail de rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - return ("A".equals(taskMetaData.getResponse())); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - - - System.out.println("fin"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",34, 1,120,null, "Visualizar tramite firma", 7, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - - List old=(List)tasksMetaData.get("Visualizar tramite firma"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Aprobar tramite",old); - - - SequenceFlow_11 - SequenceFlow_5 - - - - - - - - DataInput_5 - DataInput_6 - - - DataOutput_4 - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - taskMetaData - DataInput_6 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - DataOutput_6 - actualTask - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomisarArmaCarlos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomisarArmaCarlos.bpmn.svn-base deleted file mode 100644 index df1fcde..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomisarArmaCarlos.bpmn.svn-base +++ /dev/null @@ -1,233 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_7 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",28,1,120,null, "Ficha Tecnica de Armas", 14, "OK_NO"); -System.out.println("Ingresa tarea---2-"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Ficha Tecnica de Armas"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Revisar solicitud y documentos requeridos",old); - - - SequenceFlow_8 - SequenceFlow_9 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_1 - taskMetaData - - - DataOutput_2 - maia - - - DataOutput_3 - actualTask - - - - SequenceFlow_7 - SequenceFlow_8 - System.out.println("Ingresa por el script"); - - - - SequenceFlow_9 - SequenceFlow_10 - SequenceFlow_3 - SequenceFlow_4 - - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_1 - System.out.println("ingresa a enviar el mail"); -//enviar mail de rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 15, 16); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - SequenceFlow_3 - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_4 - - - - return ("R".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomiso.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomiso.bpmn.svn-base deleted file mode 100644 index cc77e11..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/decomiso.bpmn.svn-base +++ /dev/null @@ -1,211 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_4 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - System.out.println("ingresa a LEGALIZAR EL ACTA"); -taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "Legalizar Acta", 1, "OK_NO"); - -//FlowUtil.executeClass("paquete.clase", maia); // la clase puede hacer lo que necesite -//taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -//taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -//para asignar a un grupo especifico -taskMetaData.setGroupId("GERENCIA"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Legalizar Acta",actualTask); - - - SequenceFlow_4 - SequenceFlow_5 - - - - - - - - - - - - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_30 - - Legalizar Acta - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - #{taskMetaData.groupId} - _DataInput_33 - - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_5 - SequenceFlow_1 - System.out.println("ingresa a Actualizar Inventario"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarInventario", maia); // la clase puede hacer lo que necesite -System.out.println("-- Actualizar Inventario"); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/notificacionAnulacionTramite.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/notificacionAnulacionTramite.bpmn.svn-base deleted file mode 100644 index 4d78c1b..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/notificacionAnulacionTramite.bpmn.svn-base +++ /dev/null @@ -1,217 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_7 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",23,1,120,null, "Notificacion de tramite anulado en la Solicitud de Guia de Libre Transito", 1, "OK_NO"); -System.out.println("Ingresa tarea---2-"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Notificacion de tramite anulado en la Solicitud de Guia de Libre Transito"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Revisar solicitud y documentos requeridos",old); - - - SequenceFlow_8 - SequenceFlow_9 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_1 - taskMetaData - - - DataOutput_2 - maia - - - DataOutput_3 - actualTask - - - - SequenceFlow_7 - SequenceFlow_8 - System.out.println("Ingresa por el script"); - - - - SequenceFlow_9 - SequenceFlow_10 - SequenceFlow_14 - - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_1 - System.out.println("ingresa a enviar el mail"); -//enviar mail de rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 13 , 12); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_14 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitud.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitud.bpmn.svn-base deleted file mode 100644 index ea8f060..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitud.bpmn.svn-base +++ /dev/null @@ -1,280 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",25,1,120,null, "Revisar solicitud y documentos requeridos", 1, "OK_NO"); -System.out.println("Ingresa tarea---2-"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Revisar solicitud y documentos requeridos"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Revisar solicitud y documentos requeridos",old); - - - - - - - - - - CallActivity_2_maiaInput - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - CallActivity_2_maiaOutput - CallActivity_2_taskMetaDataOutput - - - - maia - CallActivity_2_maiaInput - - - taskMetaData - CallActivity_2_taskMetaDataInput - - - CallActivity_2_actualTaskOutput - actualTask - - - CallActivity_2_maiaOutput - maia - - - CallActivity_2_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - System.out.println("fin"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",22, 1,120,null, "Aprobar tramite", 1, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - List old=(List)tasksMetaData.get("Aprobar tramite"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Aprobar tramite",old); - - - - - - - - - - CallActivity_3_maiaInput - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - CallActivity_3_maiaOutput - CallActivity_3_taskMetaDataOutput - - - - maia - CallActivity_3_maiaInput - - - taskMetaData - CallActivity_3_taskMetaDataInput - - - CallActivity_3_actualTaskOutput - actualTask - - - CallActivity_3_maiaOutput - maia - - - CallActivity_3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - return ("D".equals(taskMetaData.getResponse())); - - - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudCarlos.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudCarlos.bpmn.svn-base deleted file mode 100644 index ca0b574..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudCarlos.bpmn.svn-base +++ /dev/null @@ -1,184 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_7 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_7 - SequenceFlow_8 - System.out.println("Ingresa por el script"); - - - - SequenceFlow_4 - SequenceFlow_1 - System.out.println("ingresa a enviar el mail"); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 4 ,5); - - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",35,1,120,null, "Notificar fecha de Emision", 6, "OK_NO"); -System.out.println("Ingresa tarea---2-"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Notificar fecha de Emision"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Notificar fecha de Emision",old); - - - SequenceFlow_8 - SequenceFlow_4 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_1 - taskMetaData - - - DataOutput_2 - maia - - - DataOutput_3 - actualTask - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudFlow.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudFlow.bpmn.svn-base deleted file mode 100644 index 7ef9d5e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/solicitudFlow.bpmn.svn-base +++ /dev/null @@ -1,525 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_4 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - System.out.println("Ingresa tarea----"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",25,1,120,null, "Revisar solicitud y documentos requeridos", 10, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("Ingresa a la tarea 3"); -List old=(List)tasksMetaData.get("Revisar solicitud y documentos requeridos"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Revisar requisitos",old); - - - SequenceFlow_4 - SequenceFlow_9 - - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - DataOutput_3 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_1 - taskMetaData - - - DataOutput_2 - maia - - - DataOutput_3 - actualTask - - - - SequenceFlow_9 - SequenceFlow_10 - SequenceFlow_11 - - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_1 - System.out.println("ingresa a enviar el mail"); -//enviar mail al jefe del empleado -FlowUtil.mail("com.fp.armas.mail.SolicitanteDireccion", maia, taskMetaData, 27 , 26); - - - - - SequenceFlow_11 - SequenceFlow_3 - SequenceFlow_8 - - - return ("1".equals("1")); - - - SequenceFlow_3 - SequenceFlow_7 - System.out.println("ingresa a enviar el mail de aceptacion de requisitos"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.SolicitanteDireccion", maia, taskMetaData, 10 , 11); - - - - SequenceFlow_8 - SequenceFlow_21 - System.out.println("El valor del depósito es cero"); -FlowUtil.endFlow(kcontext); - - - return ("2".equals("1")); - - - - - System.out.println("fin"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",22, 1,120,null, "Aprobar tramite", 1, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - - List old=(List)tasksMetaData.get("Aprobar tramite"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Aprobar tramite",old); - - - SequenceFlow_7 - SequenceFlow_15 - - - - - - - - DataInput_5 - DataInput_6 - - - DataOutput_4 - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - taskMetaData - DataInput_6 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - DataOutput_6 - actualTask - - - - - - - System.out.println("fin"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",22, 1,120,null, "Aprobar tramite", 1, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - - List old=(List)tasksMetaData.get("Aprobar tramite"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Aprobar tramite",old); - - - SequenceFlow_15 - SequenceFlow_16 - - - - - - - - DataInput_1 - DataInput_2 - - - DataOutput_7 - DataOutput_8 - DataOutput_9 - - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_7 - maia - - - DataOutput_8 - taskMetaData - - - DataOutput_9 - actualTask - - - - - SequenceFlow_17 - - - - System.out.println("El valor a cancelar generado es: "); - SequenceFlow_18 - SequenceFlow_17 - System.out.println("ingresa a enviar el mail de aceptacion de requisitos"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.SolicitanteDireccion", maia, taskMetaData, 10 , 11); - - - - SequenceFlow_16 - SequenceFlow_18 - SequenceFlow_19 - - - return ("1".equals("1")); - - - SequenceFlow_1 - SequenceFlow_2 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - return ("2".equals("1")); - - - - - System.out.println("fin"); -taskMetaData=FlowUtil.createTaskInfoByClassName("30",22, 1,120,null, "Aprobar tramite", 1, "OK_NO"); -maia.put("userId","ADMIN"); -maia.put("action","A"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - - List old=(List)tasksMetaData.get("Aprobar tramite"); -if(old!=null){ - old.addAll(actualTask); -}else{ - old=actualTask; -} -tasksMetaData.put("Aprobar tramite",old); - - - SequenceFlow_19 - SequenceFlow_21 - SequenceFlow_20 - - - - - - - - DataInput_7 - DataInput_8 - - - DataOutput_10 - DataOutput_11 - DataOutput_12 - - - - maia - DataInput_7 - - - taskMetaData - DataInput_8 - - - DataOutput_10 - maia - - - DataOutput_11 - taskMetaData - - - DataOutput_12 - actualTask - - - - - SequenceFlow_20 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.netbeans-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.netbeans-base deleted file mode 100644 index 54da02e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.netbeans-base +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - _1-_15 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "Validar Reimpresion", 32, "OK_NO"); - -//FlowUtil.executeClass("paquete.clase", maia); // la clase puede hacer lo que necesite -//taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -//taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -//para asignar a un grupo especifico -taskMetaData.setGroupId("GERENCIA"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Reimpresion",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Validar Reimpresion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - SequenceFlow_6 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_3 - SequenceFlow_6 - System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Emision Documento Habilitante",actualTask); - - - SequenceFlow_1 - SequenceFlow_3 - - - - - - - DataInput_79 - DataInput_80 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_79 - - - taskMetaData - DataInput_80 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.svn-base deleted file mode 100644 index 54da02e..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comaco/.svn/text-base/subproceso.bpmn.svn-base +++ /dev/null @@ -1,238 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - _1-_15 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",98, 1,120, "Validar Reimpresion", 32, "OK_NO"); - -//FlowUtil.executeClass("paquete.clase", maia); // la clase puede hacer lo que necesite -//taskMetaData.setUserId((maia.get("userId")!=null)?""+maia.get("userId"):null); -//taskMetaData.setGroupId((maia.get("groupId")!=null)?""+maia.get("groupId"):null); -//para asignar a un grupo especifico -taskMetaData.setGroupId("GERENCIA"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Reimpresion",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Validar Reimpresion - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _16-_12 - - - - SequenceFlow_6 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_3 - SequenceFlow_6 - System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); -System.out.println("Ingresa por el script fin................................................"); - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Emision Documento Habilitante",actualTask); - - - SequenceFlow_1 - SequenceFlow_3 - - - - - - - DataInput_79 - DataInput_80 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_79 - - - taskMetaData - DataInput_80 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/entries b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/entries deleted file mode 100644 index ad4d452..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/entries +++ /dev/null @@ -1,572 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/resources/flows/comacov2 -svn://172.17.26.185/COMACO - - - -2021-05-14T20:45:18.333910Z -4635 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EjecucionIncrementoArmasV2.bpmn -file - - - - -2022-07-28T03:40:46.114818Z -c47c488cc1063231a03fda8dc59e2b76 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -21346 - -RecepcionSolicitudRequisitosV2.bpmn -file - - - - -2022-07-28T03:40:46.115818Z -0bf4e3952e94f9af9aee77cf46e39a5b -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -25654 - -EjecutarCertificadosV2.bpmn -file - - - - -2022-07-28T03:40:46.115818Z -a84a380532de23727b125e07f03a9529 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -19368 - -EjecucionEmisionGuiaTransitoV2.bpmn -file - - - - -2022-07-28T03:40:46.115818Z -25265ab114c88412594b8c1a5caf78cc -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -29506 - -CargaDepositoV2.bpmn -file - - - - -2022-07-28T03:40:46.115818Z -018435476d28d29b72795f0a97b17fa9 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -21375 - -EjecucionCertificadoFiscalia.bpmn -file - - - - -2022-07-28T03:40:46.116818Z -315203bea35c38c4fd4b7bc7e8be2950 -2016-01-26T23:20:22.484117Z -4411 -fpazmino - - - - - - - - - - - - - - - - - - - - - -19652 - -EmisionDocumentoHabilitanteV2.bpmn -file - - - - -2022-07-28T03:40:46.116818Z -228e21e68460c8aa498cad8c1439c8b4 -2016-03-18T20:02:28.170272Z -4515 -fpazmino - - - - - - - - - - - - - - - - - - - - - -63748 - -EjecucionTramiteV2.bpmn -file - - - - -2022-07-28T03:40:46.116818Z -857b318090c2520de2a3423dd7a5693b -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -53176 - -RecepcionArmasV2.bpmn -file - - - - -2022-07-28T03:40:46.117818Z -eff6f4f61c788db0d823c008043c1d99 -2016-04-19T16:55:08.864121Z -4538 -fpazmino - - - - - - - - - - - - - - - - - - - - - -25264 - -EjecucionDevolucionV2.bpmn -file - - - - -2022-07-28T03:40:46.117818Z -eaf9fd615ca123809928439d20ee5d37 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -27435 - -EjecucionAutorizacionV2.bpmn -file - - - - -2022-07-28T03:40:46.117818Z -16c66cb2b77e1a760abc74e754c91e66 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -46645 - -EjecucionInternacionV2.bpmn -file - - - - -2022-07-28T03:40:46.117818Z -08907c56eecc759399f3c9c27b4d5891 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -22216 - -EjecutarInscripcionV2.bpmn -file - - - - -2022-07-28T03:40:46.118818Z -f33fe3cfc2501dc176558e0127813b11 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -21731 - -EjecucionPermisoV2.bpmn -file - - - - -2022-07-28T03:40:46.118818Z -6afa42454332d5e59b53d29de753ea32 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -19875 - -EjecucionAperturaV2.bpmn -file - - - - -2022-07-28T03:40:46.118818Z -d0948bdbd9b994b4b44e4aa30a0c590b -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -21569 - -TraspasoDominioV2.bpmn -file - - - - -2022-07-28T03:40:46.118818Z -b5e290fde81f7d36f2d9f38f71918531 -2021-05-14T20:45:18.333910Z -4635 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18497 - diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.netbeans-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.netbeans-base deleted file mode 100644 index aaedd28..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.netbeans-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_11 - - - - SequenceFlow_10 - SequenceFlow_11 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_9 - SequenceFlow_10 - System.out.println("Ingresa a tarea de enviar el mail de Notificar inconsistencia deposito"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 17 , 18); - - - - _1-_15 - SequenceFlow_1 - System.out.println("..........................CARGA DEPOSITO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",42, 1,120, "Validar transaccion de deposito", 24, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidaFlujoCargaDeposito", maia); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar transaccion de deposito",actualTask); - - - SequenceFlow_1 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Validar transaccion de deposito - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _1-_15 - - - - - - //taskMetaData=FlowUtil.createTaskInfoByClassName("30",24, 1,30,"com.fp.viaticos.task.AsignarEmpleado", "Modificar empleado", 11, "OK_NO"); -//kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_2 - SequenceFlow_15 - - - - - - - DataInput_18 - DataInput_19 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_18 - - - taskMetaData - DataInput_19 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - - _16-_12 - - - - SequenceFlow_15 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_6 - SequenceFlow_9 - SequenceFlow_2 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.svn-base deleted file mode 100644 index aaedd28..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/CargaDepositoV2.bpmn.svn-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_11 - - - - SequenceFlow_10 - SequenceFlow_11 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_9 - SequenceFlow_10 - System.out.println("Ingresa a tarea de enviar el mail de Notificar inconsistencia deposito"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 17 , 18); - - - - _1-_15 - SequenceFlow_1 - System.out.println("..........................CARGA DEPOSITO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",42, 1,120, "Validar transaccion de deposito", 24, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidaFlujoCargaDeposito", maia); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar transaccion de deposito",actualTask); - - - SequenceFlow_1 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Validar transaccion de deposito - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - _1-_15 - - - - - - //taskMetaData=FlowUtil.createTaskInfoByClassName("30",24, 1,30,"com.fp.viaticos.task.AsignarEmpleado", "Modificar empleado", 11, "OK_NO"); -//kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_2 - SequenceFlow_15 - - - - - - - DataInput_18 - DataInput_19 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_18 - - - taskMetaData - DataInput_19 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - - _16-_12 - - - - SequenceFlow_15 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - SequenceFlow_6 - SequenceFlow_9 - SequenceFlow_2 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAperturaV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAperturaV2.bpmn.svn-base deleted file mode 100644 index 477cfd4..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAperturaV2.bpmn.svn-base +++ /dev/null @@ -1,312 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("..........................EJECUCION APERTURA AGENCIA V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar Info Agencias", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Info Agencias",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_191 - _DataInput_192 - _DataInput_193 - _DataInput_194 - _DataInput_195 - _DataInput_196 - _DataInput_197 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_191 - - Validar Info Agencias - _DataInput_191 - - - - _DataInput_192 - - - _DataInput_193 - - - _DataInput_194 - - #{taskMetaData.groupId} - _DataInput_194 - - - - _DataInput_195 - - - _DataInput_196 - - - _DataInput_197 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - SequenceFlow_5 - SequenceFlow_6 - //FlowUtil.endFlow(kcontext); - - - SequenceFlow_6 - - - - - SequenceFlow_8 - SequenceFlow_9 - //FlowUtil.endFlow(kcontext); - - - SequenceFlow_9 - - - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_5 - DataInput_6 - - - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - taskMetaData - DataInput_6 - - - DataOutput_5 - maia - - - DataOutput_6 - taskMetaData - - - - - SequenceFlow_4 - SequenceFlow_5 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_3 - SequenceFlow_4 - SequenceFlow_7 - - - System.out.println("Camino D"); -return ("D".equals(taskMetaData.getResponse())); - - - System.out.println("Camino A"); -return ("A".equals(taskMetaData.getResponse())); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAutorizacionV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAutorizacionV2.bpmn.svn-base deleted file mode 100644 index 19dce39..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionAutorizacionV2.bpmn.svn-base +++ /dev/null @@ -1,632 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_1 - System.out.println("..........................EJECUCION AUTORIZACION V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar tipo de Autorizacion", 1, "OK_NO"); -maia.put("grupo","SUPERV_INSP_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar tipo de Autorizacion",actualTask); - - - SequenceFlow_1 - SequenceFlow_12 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - DataInput_5 - DataInput_6 - DataInput_12 - DataInput_7 - DataInput_8 - - - DataOutput_6 - DataOutput_7 - - - - DataInput_1 - - Validar tipo de Autorizacion - _DataInput_149 - - - - DataInput_2 - - - DataInput_3 - - - DataInput_4 - - #{taskMetaData.groupId} - _DataInput_152 - - - - DataInput_5 - - - DataInput_6 - - - DataInput_12 - - - maia - DataInput_7 - - - taskMetaData - DataInput_8 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_16 - - - - SequenceFlow_12 - SequenceFlow_15 - SequenceFlow_7 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - Requiere Inspeccion - SequenceFlow_7 - SequenceFlow_13 - System.out.println("............................................................................................Autorizacion Previa de Importacion"); -FlowUtil.executeClass("com.fp.armas.task.ValAutorizacionPreviaImporta", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("previaimportacion")!=null)?""+maia.get("previaimportacion"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_13 - SequenceFlow_19 - SequenceFlow_20 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar tipo de Autorizacion VUE", 1, "OK_NO"); -taskMetaData.setGroupId("ANALISTA_VUE"); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar tipo de Autorizacion VUE",actualTask); - - - SequenceFlow_19 - SequenceFlow_21 - - - - - - - - - - - - - - DataInput_14 - DataInput_15 - DataInput_16 - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - DataInput_22 - - - DataOutput_1 - DataOutput_2 - - - - DataInput_14 - - Validar tipo de Autorizacion VUE - _DataInput_149 - - - - DataInput_15 - - - DataInput_16 - - - DataInput_17 - - #{taskMetaData.groupId} - _DataInput_152 - - - - DataInput_18 - - - DataInput_19 - - - DataInput_20 - - - maia - DataInput_21 - - - taskMetaData - DataInput_22 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_17 - SequenceFlow_2 - SequenceFlow_3 - - - return ("N".equals(taskMetaData.getResponse())); - - - return ("Y".equals(taskMetaData.getResponse())); - - - SequenceFlow_8 - _16-_12 - - - - Requiere Inspeccion - SequenceFlow_22 - SequenceFlow_17 - System.out.println(".............................................................................................Requiere Inspeccion :"); -FlowUtil.executeClass("com.fp.armas.task.RequiereInspeccion", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("inspeccion")!=null)?""+maia.get("inspeccion"):null); -System.out.println(".............................................................................................Requiere Inspeccion :"+taskMetaData.getResponse()); -kcontext.setVariable("taskMetaData",taskMetaData); -System.out.println(".............................................................................................Requiere Inspeccion :"+taskMetaData.getResponse()); - - - - SequenceFlow_2 - SequenceFlow_9 - SequenceFlow_5 - - - - _16-_12 - - - - - - System.out.println("............................................................................................ Inspeccion :"); - - - System.out.println("............................................................................................ Inspeccion OK"); -FlowUtil.executeClass("com.fp.armas.task.ValidaInspeccion", maia); -if(taskMetaData ==null){ - taskMetaData = new com.fp.simple.dto.TaskInfo(); -} -taskMetaData.setResponse((maia.get("tramiteproceso")!=null)?""+maia.get("tramiteproceso"):null); -kcontext.setVariable("taskMetaData",taskMetaData); -System.out.println("..........................................................................................regreso... :"+taskMetaData.getResponse()); - - - SequenceFlow_3 - SequenceFlow_4 - - - - - - - DataInput_11 - DataInput_13 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - taskMetaData - DataInput_13 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - - SequenceFlow_11 - - - - - - - SequenceFlow_5 - SequenceFlow_8 - - - - - - - DataInput_9 - DataInput_10 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_9 - - - taskMetaData - DataInput_10 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - - SequenceFlow_10 - SequenceFlow_11 - - - - return ("D".equals(taskMetaData.getResponse())); - - - - SequenceFlow_20 - SequenceFlow_21 - SequenceFlow_22 - - - - SequenceFlow_4 - SequenceFlow_9 - SequenceFlow_10 - - - return ("Y".equals(taskMetaData.getResponse())); - - - return ("N".equals(taskMetaData.getResponse())); - - - SequenceFlow_15 - SequenceFlow_16 - System.out.println("............................................................................................ RECHAZA VALIDAR TIPO SOLICITUD:"); -System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones","Tramite Anulado en Validar Tipo De Autorizacion"+datosmail.get("observaciones")); -}else{ -maia.put("observaciones","Tramite Anulado en Validar Tipo De Autorizacion"); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionCertificadoFiscalia.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionCertificadoFiscalia.bpmn.svn-base deleted file mode 100644 index 1d33f14..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionCertificadoFiscalia.bpmn.svn-base +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_2 - System.out.println("..........................EJECUCION CERTIFICADO DE FISCALIA......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",153, 1,120, "Generar certificado fiscalia", 65, "OK_NO"); -maia.put("grupo","TEC_ALM_CENTRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",153, 1,120, "Generar certificado fiscalia", 65, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - SequenceFlow_2 - SequenceFlow_5 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Generar certificado fiscalia - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",118, 1,120, "Firmar certificado fiscalia", 66, "OK_NO"); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar certificado fiscalia",actualTask); - - - SequenceFlow_5 - SequenceFlow_4 - - - - - - - - - - - - - - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - DataInput_22 - DataInput_23 - DataInput_24 - DataInput_25 - - - DataOutput_3 - DataOutput_5 - - - - DataInput_17 - - Firmar certificado fiscalia - _DataInput_16 - - - - DataInput_18 - - - DataInput_19 - - - DataInput_20 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_21 - - - DataInput_22 - - - DataInput_23 - - - maia - DataInput_24 - - - taskMetaData - DataInput_25 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_4 - SequenceFlow_6 - System.out.println("..........................NOTIFICAR ENTREGA CERTIFICADO FISCALIA......................."); - - - - SequenceFlow_6 - SequenceFlow_1 - System.out.println("..........................FINALIZA CERTIFICADO DE FISCALIA......................."); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_1 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionDevolucionV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionDevolucionV2.bpmn.svn-base deleted file mode 100644 index e7fb61d..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionDevolucionV2.bpmn.svn-base +++ /dev/null @@ -1,412 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_10 - System.out.println("..........................EJECUCION DEVOLUCION V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - _1-_15 - - - - SequenceFlow_11 - SequenceFlow_5 - SequenceFlow_7 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",32, 1,120, "Autorizar Devolucion",37, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -System.out.println("1..................."); -actualTask=new java.util.ArrayList(); -System.out.println("2..................."); -kcontext.setVariable("actualTask",actualTask); -System.out.println("3..................."); -actualTask.add(taskMetaData); -System.out.println("4..................."); -System.out.println("5..................."); -tasksMetaData.put("Autorizar Devolucion",actualTask); -System.out.println("6..................."); - - - SequenceFlow_5 - SequenceFlow_1 - - - - - - - - - - - - - - DataInput_13 - DataInput_14 - DataInput_15 - DataInput_16 - DataInput_17 - DataInput_18 - DataInput_19 - DataInput_20 - DataInput_21 - - - DataOutput_1 - DataOutput_2 - - - - DataInput_13 - - Autorizar Devolucion - _DataInput_16 - - - - DataInput_14 - - - DataInput_15 - - - DataInput_16 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_17 - - - DataInput_18 - - - DataInput_19 - - - maia - DataInput_20 - - - taskMetaData - DataInput_21 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_7 - _16-_12 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - _16-_12 - - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",29, 1,120, "Informacion Devolucion", 36, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","TEC_ALM_CENTRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Informacion Devolucion",actualTask); - - - - SequenceFlow_10 - SequenceFlow_11 - - - - - - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - - - DataOutput_3 - DataOutput_5 - - - - DataInput_1 - - Informacion Devolucion - _DataInput_16 - - - - DataInput_2 - - - DataInput_3 - - - DataInput_4 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_5 - - - DataInput_6 - - - DataInput_7 - - - maia - DataInput_8 - - - taskMetaData - DataInput_9 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_2 - SequenceFlow_6 - System.out.println("fin"); -//FlowUtil.endFlow(kcontext); -System.out.println("fin1"); - - - - SequenceFlow_6 - - - - - - - SequenceFlow_1 - SequenceFlow_2 - - - - - - - DataInput_10 - DataInput_11 - - - DataOutput_4 - DataOutput_6 - - - - maia - DataInput_10 - - - taskMetaData - DataInput_11 - - - DataOutput_4 - maia - - - DataOutput_6 - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionEmisionGuiaTransitoV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionEmisionGuiaTransitoV2.bpmn.svn-base deleted file mode 100644 index f0b4a8c..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionEmisionGuiaTransitoV2.bpmn.svn-base +++ /dev/null @@ -1,423 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_2 - System.out.println("..........................EMISION GUIA LIBRE TRANSITO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_1 - SequenceFlow_5 - SequenceFlow_13 - - - return ("D".equals(taskMetaData.getResponse())); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",23, 1,120, "Validacion Inconsistencias Informacion Solicitud", 56, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validacion Inconsistencias Informacion Solicitud",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Validacion Inconsistencias Informacion Solicitud - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_5 - SequenceFlow_6 - System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,61); - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_13 - SequenceFlow_16 - System.out.println(" Verifica cantidad armamento "); -FlowUtil.executeClass("com.fp.armas.task.VerificarCantidadArmas", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("requierecustodia")!=null)?""+maia.get("requierecustodia"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - SequenceFlow_16 - SequenceFlow_20 - SequenceFlow_24 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_20 - SequenceFlow_15 - SequenceFlow_22 - - - - - - System.out.println(" Genera Orden trabajo "); -taskMetaData=FlowUtil.createTaskInfo("30",27, 1,120, "Generar Orden Trabajo", 55, "OK_NO"); -maia.put("grupo","SUPERV_INSP_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Generar Orden Trabajo",actualTask); - - - SequenceFlow_24 - SequenceFlow_15 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_11 - DataOutput_12 - - - - maia - DataInput_1 - - - DataInput_2 - - Generar Orden Trabajo - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_11 - maia - - - DataOutput_12 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - System.out.println(" Documento Habilitante "); - - - - - - SequenceFlow_22 - SequenceFlow_23 - - - - - - - - DataInput_90 - DataInput_91 - - - DataOutput_19 - DataOutput_20 - DataOutput_21 - - - - maia - DataInput_90 - - - taskMetaData - DataInput_91 - - - DataOutput_19 - taskMetaData - - - DataOutput_20 - maia - - - DataOutput_21 - actualTask - - - - - SequenceFlow_23 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionIncrementoArmasV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionIncrementoArmasV2.bpmn.svn-base deleted file mode 100644 index 45185af..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionIncrementoArmasV2.bpmn.svn-base +++ /dev/null @@ -1,307 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("..........................EJECUCION INCREMENTO DE ARMAS V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("tasksMetaData",tasksMetaData); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar la Informacion Armas", 59, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar la Informacion Armas",actualTask); - - - SequenceFlow_2 - SequenceFlow_6 - - - - - - - - - - - - - - _DataInput_184 - _DataInput_185 - _DataInput_186 - _DataInput_187 - _DataInput_188 - _DataInput_189 - _DataInput_190 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_184 - - Validar la Informacion Armas - _DataInput_184 - - - - _DataInput_185 - - - _DataInput_186 - - - _DataInput_187 - - #{taskMetaData.groupId} - _DataInput_187 - - - - _DataInput_188 - - - _DataInput_189 - - - _DataInput_190 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_10 - SequenceFlow_11 - System.out.println(" Anula Incremento de Armas: "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_11 - SequenceFlow_12 - - - - SequenceFlow_6 - SequenceFlow_7 - SequenceFlow_10 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_8 - SequenceFlow_9 - \ - - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_4 - DataOutput_5 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - - - - SequenceFlow_9 - - - - SequenceFlow_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionInternacionV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionInternacionV2.bpmn.svn-base deleted file mode 100644 index bef9887..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionInternacionV2.bpmn.svn-base +++ /dev/null @@ -1,321 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("..........................EJECUCION INTERNACION V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("tasksMetaData",tasksMetaData); - - - - SequenceFlow_11 - SequenceFlow_12 - - - SequenceFlow_12 - - - - - SequenceFlow_4 - SequenceFlow_7 - SequenceFlow_10 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - - - - - - - SequenceFlow_7 - SequenceFlow_8 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_4 - DataOutput_5 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_4 - maia - - - DataOutput_5 - taskMetaData - - - - - SequenceFlow_8 - SequenceFlow_9 - - - - SequenceFlow_10 - SequenceFlow_11 - System.out.println("***SE ANULO EL TRAMITE***"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Validar Info Armas", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar Info Armas",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_184 - _DataInput_185 - _DataInput_186 - _DataInput_187 - _DataInput_188 - _DataInput_189 - _DataInput_190 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_184 - - Validar Info Armas - _DataInput_184 - - - - _DataInput_185 - - - _DataInput_186 - - - _DataInput_187 - - #{taskMetaData.groupId} - _DataInput_187 - - - - _DataInput_188 - - - _DataInput_189 - - - _DataInput_190 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_3 - SequenceFlow_4 - System.out.println("***SE ANULO EL TRAMITE***"); - - - - - SequenceFlow_9 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionPermisoV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionPermisoV2.bpmn.svn-base deleted file mode 100644 index c547eb8..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionPermisoV2.bpmn.svn-base +++ /dev/null @@ -1,308 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_1 - System.out.println("..........................EJECUCION PERMISO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData =new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",24, 1,120, "Receptar Armas", 45, "OK_NO"); -maia.put("grupo","TEC_ALM_CENTRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Receptar Armas",actualTask); - - - SequenceFlow_1 - SequenceFlow_16 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_1 - - - DataInput_2 - - Receptar Armas - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - _1-_15 - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",28, 1,120, "Ingresa Ficha Tecnica Arma", 46, "OK_NO"); -maia.put("grupo","ANALISTA_TIRO_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ingresa Ficha Tecnica Arma",actualTask); - - - SequenceFlow_16 - SequenceFlow_17 - - - - - - - - - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_6 - - - DataInput_7 - - Ingresa Ficha Tecnica Arma - DataInput_26 - - - - DataInput_8 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_9 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_12 - SequenceFlow_13 - //FlowUtil.endFlow(kcontext); - - - - - - - - - SequenceFlow_17 - SequenceFlow_12 - - - - - - - - DataInput_39 - DataInput_40 - - - DataOutput_14 - DataOutput_15 - DataOutput_16 - - - - maia - DataInput_39 - - - taskMetaData - DataInput_40 - - - DataOutput_14 - actualTask - - - DataOutput_15 - maia - - - DataOutput_16 - taskMetaData - - - - - SequenceFlow_13 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionTramiteV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionTramiteV2.bpmn.svn-base deleted file mode 100644 index 30c6c0b..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecucionTramiteV2.bpmn.svn-base +++ /dev/null @@ -1,721 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - SequenceFlow_4 - System.out.println("..........................EJECUCION TRAMITE V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - _1-_15 - - - - - SequenceFlow_4 - SequenceFlow_5 - System.out.println("***Ingresa a la tarea evaluar tipo de documento***"); -FlowUtil.executeClass("com.fp.armas.task.TipoDocumento", maia); -// taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("tipodocumento")!=null)?""+maia.get("tipodocumento"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_5 - SequenceFlow_11 - SequenceFlow_13 - SequenceFlow_15 - SequenceFlow_17 - SequenceFlow_19 - SequenceFlow_21 - SequenceFlow_24 - SequenceFlow_26 - SequenceFlow_27 - SequenceFlow_29 - - - - - - - SequenceFlow_30 - SequenceFlow_9 - - - - - - - DataInput_15 - DataInput_16 - - - DataOutput_6 - DataOutput_7 - - - - maia - DataInput_15 - - - taskMetaData - DataInput_16 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - - return ("EA".equals(taskMetaData.getResponse())); - - - return ("EI".equals(taskMetaData.getResponse())); - - - return ("ET".equals(taskMetaData.getResponse())); - - - return ("EG".equals(taskMetaData.getResponse())); - - - SequenceFlow_9 - SequenceFlow_12 - SequenceFlow_14 - SequenceFlow_16 - SequenceFlow_18 - SequenceFlow_20 - SequenceFlow_22 - SequenceFlow_23 - SequenceFlow_25 - SequenceFlow_28 - SequenceFlow_10 - - - - SequenceFlow_10 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - return ("EC".equals(taskMetaData.getResponse())); - - - - - - - SequenceFlow_13 - SequenceFlow_14 - - - - - - - DataInput_19 - DataInput_20 - - - DataOutput_11 - DataOutput_12 - - - - maia - DataInput_19 - - - taskMetaData - DataInput_20 - - - DataOutput_11 - maia - - - DataOutput_12 - taskMetaData - - - - - - - - - SequenceFlow_11 - SequenceFlow_12 - - - - - - - DataInput_17 - DataInput_18 - - - DataOutput_9 - DataOutput_10 - - - - maia - DataInput_17 - - - taskMetaData - DataInput_18 - - - DataOutput_9 - maia - - - DataOutput_10 - taskMetaData - - - - - return ("ER".equals(taskMetaData.getResponse())); - - - return ("ED".equals(taskMetaData.getResponse())); - - - return ("ES".equals(taskMetaData.getResponse())); - - - return ("EN".equals(taskMetaData.getResponse())); - - - - - - - SequenceFlow_19 - SequenceFlow_20 - - - - - - - DataInput_25 - DataInput_27 - - - DataOutput_17 - DataOutput_18 - - - - maia - DataInput_25 - - - taskMetaData - DataInput_27 - - - DataOutput_17 - maia - - - DataOutput_18 - taskMetaData - - - - - - - - - SequenceFlow_26 - SequenceFlow_25 - - - - - - - DataInput_33 - DataInput_34 - - - DataOutput_23 - DataOutput_24 - - - - maia - DataInput_33 - - - taskMetaData - DataInput_34 - - - DataOutput_23 - maia - - - DataOutput_24 - taskMetaData - - - - - - - - - SequenceFlow_21 - SequenceFlow_22 - - - - - - - DataInput_28 - DataInput_30 - - - DataOutput_19 - DataOutput_20 - - - - maia - DataInput_28 - - - taskMetaData - DataInput_30 - - - DataOutput_19 - maia - - - DataOutput_20 - taskMetaData - - - - - - - - - SequenceFlow_15 - SequenceFlow_16 - - - - - - - DataInput_21 - DataInput_22 - - - DataOutput_13 - DataOutput_14 - - - - maia - DataInput_21 - - - taskMetaData - DataInput_22 - - - DataOutput_13 - maia - - - DataOutput_14 - taskMetaData - - - - - - - - - SequenceFlow_27 - SequenceFlow_28 - - - - - - - DataInput_35 - DataInput_36 - - - DataOutput_25 - DataOutput_26 - - - - maia - DataInput_35 - - - taskMetaData - DataInput_36 - - - DataOutput_25 - maia - - - DataOutput_26 - taskMetaData - - - - - - - - - SequenceFlow_24 - SequenceFlow_23 - - - - - - - DataInput_31 - DataInput_32 - - - DataOutput_21 - DataOutput_22 - - - - maia - DataInput_31 - - - taskMetaData - DataInput_32 - - - DataOutput_21 - maia - - - DataOutput_22 - taskMetaData - - - - - - - - - SequenceFlow_17 - SequenceFlow_18 - - - - - - - DataInput_23 - DataInput_24 - - - DataOutput_15 - DataOutput_16 - - - - maia - DataInput_23 - - - taskMetaData - DataInput_24 - - - DataOutput_15 - maia - - - DataOutput_16 - taskMetaData - - - - - SequenceFlow_29 - SequenceFlow_30 - System.out.println("***Ingresa a la tarea NOTIFICAR FECHA DE ENTRGA DE ARMAS***"); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 39,40); - - - return ("EP".equals(taskMetaData.getResponse())); - - - - _16-_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarCertificadosV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarCertificadosV2.bpmn.svn-base deleted file mode 100644 index 7cd34a0..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarCertificadosV2.bpmn.svn-base +++ /dev/null @@ -1,277 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - SequenceFlow_12 - System.out.println("..........................EJECUCION CERTIFICADO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_10 - - - - SequenceFlow_9 - SequenceFlow_10 - System.out.println("TramiteAnulado"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar Certificados",actualTask); - - - SequenceFlow_8 - SequenceFlow_5 - - - - - - - DataInput_3 - DataInput_4 - - - DataOutput_3 - DataOutput_4 - - - - maia - DataInput_3 - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - - SequenceFlow_13 - SequenceFlow_8 - SequenceFlow_9 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_5 - SequenceFlow_6 - - - - SequenceFlow_1 - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Valida Informacion Certificado", 58, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Valida Informacion Certificado",actualTask); - - - SequenceFlow_12 - SequenceFlow_13 - - - - - - - - - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - - - DataOutput_5 - DataOutput_6 - - - - maia - DataInput_5 - - - DataInput_6 - - Valida Informacion Certificado - DataInput_26 - - - - DataInput_7 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_8 - - - DataOutput_5 - maia - - - DataOutput_6 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarInscripcionV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarInscripcionV2.bpmn.svn-base deleted file mode 100644 index ce3905b..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EjecutarInscripcionV2.bpmn.svn-base +++ /dev/null @@ -1,314 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_1 - - - SequenceFlow_1 - SequenceFlow_2 - System.out.println("..........................EJECUCION INSCRIPCION V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",61, 1,120, "Valida Info Inscripcion", 1, "OK_NO"); -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Valida Info Inscripcion",actualTask); - - - SequenceFlow_2 - SequenceFlow_3 - - - - - - - - - - - - - - _DataInput_149 - _DataInput_150 - _DataInput_151 - _DataInput_152 - _DataInput_153 - _DataInput_154 - _DataInput_155 - DataInput_2 - DataInput_3 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_149 - - Valida Info Inscripcion - _DataInput_149 - - - - _DataInput_150 - - - _DataInput_151 - - - _DataInput_152 - - #{taskMetaData.groupId} - _DataInput_152 - - - - _DataInput_153 - - - _DataInput_154 - - - _DataInput_155 - - - maia - DataInput_2 - - - taskMetaData - DataInput_3 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Ejecutar Certificados",actualTask); - - - SequenceFlow_4 - SequenceFlow_5 - - - - - - - DataInput_4 - DataInput_5 - - - DataOutput_3 - DataOutput_4 - - - - maia - DataInput_4 - - - taskMetaData - DataInput_5 - - - DataOutput_3 - maia - - - DataOutput_4 - taskMetaData - - - - SequenceFlow_5 - SequenceFlow_6 - //FlowUtil.endFlow(kcontext); - - - - - SequenceFlow_7 - SequenceFlow_9 - System.out.println("***SE ANULO EL TRAMITE***"); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones",datosmail.get("observaciones")); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - SequenceFlow_9 - SequenceFlow_10 - //FlowUtil.endFlow(kcontext); - - - - SequenceFlow_10 - - - - - SequenceFlow_3 - SequenceFlow_4 - SequenceFlow_7 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_6 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EmisionDocumentoHabilitanteV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EmisionDocumentoHabilitanteV2.bpmn.svn-base deleted file mode 100644 index 93d09eb..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/EmisionDocumentoHabilitanteV2.bpmn.svn-base +++ /dev/null @@ -1,892 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - System.out.println("..........................NO REQUIERE TARJETA EDH V2......................."); -taskMetaData=FlowUtil.createTaskInfo("30",102, 1,120, "Generar Reporte", 35, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Generar Reporte",actualTask); - - - SequenceFlow_17 - SequenceFlow_20 - - - - - - - - - DataInput_1 - DataInput_2 - DataInput_3 - DataInput_4 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_1 - - - DataInput_2 - - Generar Reporte - DataInput_26 - - - - DataInput_3 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_4 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_25 - SequenceFlow_26 - SequenceFlow_5 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",101, 1,120, "Firmar Tramite Supervisor", 38, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Tramite Supervisor",actualTask); - - - SequenceFlow_20 - SequenceFlow_25 - - - - - - - - - - - - - - DataInput_21 - DataInput_22 - DataInput_23 - DataInput_24 - DataInput_25 - DataInput_27 - DataInput_28 - DataInput_30 - DataInput_31 - - - DataOutput_6 - DataOutput_7 - - - - DataInput_21 - - Firmar Tramite Supervisor - _DataInput_16 - - - - DataInput_22 - - - DataInput_23 - - - DataInput_24 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_25 - - - DataInput_27 - - - DataInput_28 - - - maia - DataInput_30 - - - taskMetaData - DataInput_31 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_6 - SequenceFlow_1 - SequenceFlow_28 - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_28 - SequenceFlow_29 - FlowUtil.executeClass("com.fp.armas.task.FechaCaducidadEstadoArma", maia); -FlowUtil.executeClass("com.fp.armas.task.TramiteAprobado", maia); -FlowUtil.executeClass("com.fp.armas.task.TipoArchivoControl", maia); -FlowUtil.executeClass("com.fp.armas.task.FinalizarDocumentoHabilitante", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.getAditionalData().put("datosmail", maia.get("datosmail")); -taskMetaData.setResponse((maia.get("tipoarchivo")!=null)?""+maia.get("tipoarchivo"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - return ("A".equals(taskMetaData.getResponse())); - - - - SequenceFlow_29 - SequenceFlow_30 - SequenceFlow_35 - - - - - taskMetaData=FlowUtil.createTaskInfo("30",109, 1,120, "Firmar Tramite Coordinador", 38, "OK_NO"); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Firmar Tramite Coordinador",actualTask); - - - SequenceFlow_30 - SequenceFlow_31 - - - - - - - - - - - - - - DataInput_5 - DataInput_6 - DataInput_7 - DataInput_8 - DataInput_9 - DataInput_10 - DataInput_12 - DataInput_13 - DataInput_14 - - - DataOutput_13 - DataOutput_14 - - - - DataInput_5 - - Firmar Tramite Coordinador - _DataInput_16 - - - - DataInput_6 - - - DataInput_7 - - - DataInput_8 - - #{taskMetaData.groupId} - _DataInput_19 - - - - DataInput_9 - - - DataInput_10 - - - DataInput_12 - - - maia - DataInput_13 - - - taskMetaData - DataInput_14 - - - DataOutput_13 - maia - - - DataOutput_14 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("D".equals(taskMetaData.getResponse())); - - - - SequenceFlow_31 - SequenceFlow_32 - System.out.println("..........................VALIDAR CUSTODIO......................."); -FlowUtil.executeClass("com.fp.armas.task.ValidarCustodios", maia); -taskMetaData.getAditionalData().put("datosmail", maia.get("datosmail")); -taskMetaData.setResponse((maia.get("BPMStatus")!=null)?""+maia.get("BPMStatus"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_22 - - - - SequenceFlow_7 - SequenceFlow_22 - //FlowUtil.endFlow(kcontext); - - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_32 - SequenceFlow_33 - SequenceFlow_34 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_23 - - - - SequenceFlow_15 - SequenceFlow_16 - FlowUtil.executeClass("com.fp.armas.task.TipoArchivoControl", maia); -taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.getAditionalData().put("datosmail", maia.get("datosmail")); -taskMetaData.setResponse((maia.get("tipoarchivo")!=null)?""+maia.get("tipoarchivo"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - _1-_15 - - - - SequenceFlow_9 - SequenceFlow_14 - SequenceFlow_15 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_16 - SequenceFlow_17 - SequenceFlow_26 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_33 - SequenceFlow_7 - System.out.println("................NOTIFICACION ENVIA MAIL ADJUNTO........."); -//enviar mail de notificacion - - - - - SequenceFlow_35 - SequenceFlow_34 - SequenceFlow_36 - - - - SequenceFlow_36 - SequenceFlow_3 - System.out.println("................NOTIFICACION PRESENTARSE AL CENTRO DE CONTROL........."); -//enviar mail de notificacion -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 4 ,5); - - - - SequenceFlow_3 - _16-_12 - //FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - _1-_15 - SequenceFlow_8 - System.out.println("..........................EMISION DOCUMENTO HABILITANTE V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -tasksMetaData=new java.util.HashMap(); -kcontext.setVariable("tasksMetaData",tasksMetaData); -kcontext.setVariable("actualTask",actualTask); - - - SequenceFlow_14 - SequenceFlow_23 - System.out.println("............................................................................................ NO:"); -System.out.println(" Anula "+taskMetaData.getAditionalData()); -if(taskMetaData.getAditionalData()!=null && taskMetaData.getAditionalData().get("datosmail")!=null){ - Map<String,Object>datosmail = (Map<String,Object>)taskMetaData.getAditionalData().get("datosmail"); - maia.put("observaciones","Tramite Anulado en Revisar Tramite"+datosmail.get("observaciones")); -}else{ -maia.put("observaciones","Tramite Anulado en Revisar Tramite"); -} -FlowUtil.executeClass("com.fp.armas.task.TramiteAnulado", maia); -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - SequenceFlow_13 - - - - SequenceFlow_1 - SequenceFlow_13 - System.out.println("ingresa a enviar el mail"); -//enviar mail de rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 8 ,9); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",30, 1,120, "Autorizar Tramite Coordinador", 31, "OK_NO"); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - System.out.println("............................................................................................ 1:"); -taskMetaData.updateData(maia); -System.out.println("............................................................................................ 2:"); -actualTask=new java.util.ArrayList(); -System.out.println("............................................................................................ 3:"); -kcontext.setVariable("actualTask",actualTask); -System.out.println("............................................................................................ 4:"); -actualTask.add(taskMetaData); -System.out.println("............................................................................................ 5:"); -tasksMetaData.put("Revisar Tramite",actualTask); -System.out.println("............................................................................................ 6:"); - - - SequenceFlow_5 - SequenceFlow_6 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Revisar Tramite - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - System.out.println("..........................REVISAR TRAMITE EDH V2......................."); -taskMetaData=FlowUtil.createTaskInfo("30",33, 1,120, "Revisar Tramite Supervisor", 30, "OK_NO"); -maia.put("grupo","SUPERV_REG_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Autorizar Tramite",actualTask); - - - SequenceFlow_8 - SequenceFlow_9 - - - - - - - - - DataInput_200 - DataInput_201 - DataInput_202 - DataInput_203 - - - DataOutput_1 - DataOutput_2 - - - - maia - DataInput_200 - - - DataInput_201 - - Autorizar Tramite - DataInput_26 - - - - DataInput_202 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_203 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionArmasV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionArmasV2.bpmn.svn-base deleted file mode 100644 index 80ee14f..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionArmasV2.bpmn.svn-base +++ /dev/null @@ -1,371 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - SequenceFlow_6 - - - - SequenceFlow_6 - SequenceFlow_8 - System.out.println("**************INICIA FLUJO RECEPCIÓN V2***************"); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_5 - SequenceFlow_9 - System.out.println("ingresa a Actualizar Inventario"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarInventario", maia); -FlowUtil.executeClass("com.fp.armas.task.AplicarSancion", maia); -taskMetaData.setResponse((maia.get("BPMStatus")!=null)?""+maia.get("BPMStatus"):null); -kcontext.setVariable("taskMetaData",taskMetaData); -System.out.println("-- Actualizar Inventario"); - - - - - taskMetaData=FlowUtil.createTaskInfo("30",94, 1,120, "Legalizar Acta", 29, "OK_NO"); -FlowUtil.executeClass("com.fp.armas.task.ActualizarRutaArchivo", maia); -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupoDecRecep", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Legalizar Acta",actualTask); - - - SequenceFlow_8 - SequenceFlow_5 - - - - - - - - - - - - - - _DataInput_30 - _DataInput_31 - _DataInput_32 - _DataInput_33 - _DataInput_34 - _DataInput_35 - _DataInput_36 - DataInput_1 - DataInput_2 - - - DataOutput_1 - DataOutput_2 - - - - _DataInput_30 - - Legalizar Acta - _DataInput_30 - - - - _DataInput_31 - - - _DataInput_32 - - - _DataInput_33 - - #{taskMetaData.groupId} - _DataInput_33 - - - - _DataInput_34 - - - _DataInput_35 - - - _DataInput_36 - - - maia - DataInput_1 - - - taskMetaData - DataInput_2 - - - DataOutput_1 - maia - - - DataOutput_2 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - SequenceFlow_9 - SequenceFlow_10 - SequenceFlow_14 - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_2 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_2 - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",60, 1,120, "Definir Sancion", 44, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","COORD_MILITAR_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Definir Sancion",actualTask); - - - SequenceFlow_14 - SequenceFlow_15 - - - - - - - - - - - - - - _DataInput_58 - _DataInput_59 - _DataInput_60 - _DataInput_61 - _DataInput_62 - _DataInput_63 - _DataInput_64 - DataInput_6 - DataInput_7 - - - DataOutput_6 - DataOutput_7 - - - - _DataInput_58 - - Definir Sancion - _DataInput_58 - - - - _DataInput_59 - - - _DataInput_60 - - - _DataInput_61 - - #{taskMetaData.groupId} - _DataInput_61 - - - - _DataInput_62 - - - _DataInput_63 - - - _DataInput_64 - - - maia - DataInput_6 - - - taskMetaData - DataInput_7 - - - DataOutput_6 - maia - - - DataOutput_7 - taskMetaData - - - - #{taskMetaData.userId} - - - - - return ("A".equals(taskMetaData.getResponse())); - - - - SequenceFlow_15 - SequenceFlow_13 - System.out.println("sale del flujo"); -FlowUtil.endFlow(kcontext); - - - - SequenceFlow_13 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionSolicitudRequisitosV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionSolicitudRequisitosV2.bpmn.svn-base deleted file mode 100644 index 25df9d5..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/RecepcionSolicitudRequisitosV2.bpmn.svn-base +++ /dev/null @@ -1,361 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - SequenceFlow_18 - - - - SequenceFlow_25 - SequenceFlow_18 - FlowUtil.endFlow(kcontext); - - - - _1-_15 - SequenceFlow_2 - System.out.println("..........................FLUJO SOLICITUD V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - SequenceFlow_23 - SequenceFlow_10 - System.out.println("***Ingresa a la tarea generar valor a cancelar***"); -FlowUtil.executeClass("com.fp.armas.task.GenerarValorACancelar", maia); -//taskMetaData.getAditionalData().get("datosmail"); -//taskMetaData = new com.fp.simple.dto.TaskInfo(); -taskMetaData.setResponse((maia.get("BPMStatus")!=null)?""+maia.get("BPMStatus"):null); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - SequenceFlow_19 - SequenceFlow_3 - System.out.println("Ingresa a tarea de enviar el mail de aceptacion de requisitos"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 10 , 11); - - - - - - - SequenceFlow_24 - SequenceFlow_25 - - - - - - - DataInput_40 - DataInput_41 - - - DataOutput_3 - DataOutput_5 - - - - maia - DataInput_40 - - - taskMetaData - DataInput_41 - - - DataOutput_3 - maia - - - DataOutput_5 - taskMetaData - - - - - - SequenceFlow_3 - _16-_12 - FlowUtil.endFlow(kcontext); - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",25, 1,120, "Revisar solicitud y documentos requeridos", 1, "OK_NO"); -//para asignar a un grupo especifico -maia.put("grupo","ANALISTA_DOC_"); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -kcontext.setVariable("taskMetaData",taskMetaData); -actualTask.add(taskMetaData); -tasksMetaData.put("Revisar solicitud y documentos requeridos",actualTask); - - - SequenceFlow_2 - SequenceFlow_1 - - - - - - - - - DataInput_11 - DataInput_26 - DataInput_29 - DataInput_83 - - - DataOutput_4 - DataOutput_8 - - - - maia - DataInput_11 - - - DataInput_26 - - Revisar solicitud y documentos requeridos - DataInput_26 - - - - DataInput_29 - - #{taskMetaData.groupId} - DataInput_29 - - - - taskMetaData - DataInput_83 - - - DataOutput_4 - maia - - - DataOutput_8 - taskMetaData - - - - #{taskMetaData.userId} - - - - - - SequenceFlow_1 - SequenceFlow_7 - SequenceFlow_23 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_10 - SequenceFlow_19 - SequenceFlow_24 - - - return ("A".equals(taskMetaData.getResponse())); - - - return ("D".equals(taskMetaData.getResponse())); - - - SequenceFlow_5 - - - - SequenceFlow_7 - SequenceFlow_4 - //enviar mail al usuario indicando razones del rechazo -FlowUtil.mail("com.fp.armas.mail.PersonaDireccion", maia, taskMetaData, 52 , 53); - - - - SequenceFlow_4 - SequenceFlow_5 - FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/TraspasoDominioV2.bpmn.svn-base b/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/TraspasoDominioV2.bpmn.svn-base deleted file mode 100644 index 07aa941..0000000 --- a/base/bpm/bpmlib/src/main/resources/flows/comacov2/.svn/text-base/TraspasoDominioV2.bpmn.svn-base +++ /dev/null @@ -1,274 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - _1-_15 - - - - _1-_15 - SequenceFlow_1 - System.out.println("..........................TRASPASO DOMINIO V2......................."); -maia.put("PID",kcontext.getProcessInstance().getId()); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); - - - - - - - taskMetaData=FlowUtil.createTaskInfo("30",217, 1,120, "Validar transaccion de venta", 68, "OK_NO"); -//para asignar a un usuario especifico -maia.put("grupo","COORD_MILITAR_"); -System.out.println(maia.get("grupo")); -FlowUtil.executeClass("com.fp.armas.task.ValidacionGrupo", maia); -taskMetaData.setGroupId(""+maia.get("grupo")); -kcontext.setVariable("taskMetaData",taskMetaData); - - - - - taskMetaData.updateData(maia); -actualTask=new java.util.ArrayList(); -kcontext.setVariable("actualTask",actualTask); -actualTask.add(taskMetaData); -tasksMetaData.put("Validar armas venta",actualTask); - - - SequenceFlow_1 - SequenceFlow_5 - - - - - - - - - - - - - - _DataInput_16 - _DataInput_17 - _DataInput_18 - _DataInput_19 - _DataInput_20 - _DataInput_21 - _DataInput_22 - DataInput_5 - DataInput_84 - - - DataOutput_6 - DataOutput_9 - - - - _DataInput_16 - - Validar armas de venta - _DataInput_16 - - - - _DataInput_17 - - - _DataInput_18 - - - _DataInput_19 - - #{taskMetaData.groupId} - _DataInput_19 - - - - _DataInput_20 - - - _DataInput_21 - - - _DataInput_22 - - - maia - DataInput_5 - - - taskMetaData - DataInput_84 - - - DataOutput_6 - maia - - - DataOutput_9 - taskMetaData - - - - #{taskMetaData.userId} - - - - - SequenceFlow_7 - SequenceFlow_2 - SequenceFlow_4 - - - return ("D".equals(taskMetaData.getResponse())); - - - return ("A".equals(taskMetaData.getResponse())); - - - SequenceFlow_2 - _16-_12 - FlowUtil.executeClass("com.fp.armas.task.traspasodominio.TraspasoDominioAnula", maia); - -System.out.println("Ingresa a tarea de enviar el mail"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccionVentaTemp", maia, taskMetaData, 69 , 70); - -FlowUtil.endFlow(kcontext); - - - - _16-_12 - - - - SequenceFlow_6 - - - - SequenceFlow_4 - SequenceFlow_6 - FlowUtil.executeClass("com.fp.armas.task.traspasodominio.TraspasoDominio", maia); - -System.out.println("Ingresa a tarea de enviar el mail--"); -//enviar mail al usuario dueño de la solicitud -FlowUtil.mail("com.fp.armas.mail.PersonaDireccionVentaTemp", maia, taskMetaData, 69 , 70); - -FlowUtil.endFlow(kcontext); - - - - - SequenceFlow_5 - SequenceFlow_7 - System.out.println("*************"); -System.out.println(taskMetaData.getResponse()); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/entries b/base/bpm/bpmlib/src/main/resources/rules/.svn/entries deleted file mode 100644 index 53ce96d..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/main/resources/rules -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ASIGNAROFICIAL.xls -file - - - - -2022-07-28T03:40:46.189818Z -64c86e6090f809b4a267d86cfef6566c -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - -VALIDAPERSONAS.xls -file - - - - -2022-07-28T03:40:46.190818Z -f97de50bca8ede1218d30117e5649db5 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - -rcatalogo.xls -file - - - - -2022-07-28T03:40:46.190818Z -bf092fb3706630ec280a2215dcf4400f -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - -gf.xls -file - - - - -2022-07-28T03:40:46.190818Z -0f767b860f18fa00f5bf08e61c0a464f -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - -VALIDAMONTO.xls -file - - - - -2022-07-28T03:40:46.191818Z -6a26eeac63572ce1bc6b7d1398bf8107 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -8704 - -ASIGNARCOMITE.xls -file - - - - -2022-07-28T03:40:46.191818Z -c4de6ce23631b2e531c490c310b699d8 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -7680 - -VALIDAPLAZO.xls -file - - - - -2022-07-28T03:40:46.191818Z -481930a6faa5bed3fa47f01ac176c0ef -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -8704 - -WPA.xls -file - - - - -2022-07-28T03:40:46.192818Z -836597177f0b924c5ac6d7b518a51e64 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -21504 - -VALIDATASA.xls -file - - - - -2022-07-28T03:40:46.192818Z -cfd16d7bb09d5a6de96a867090339091 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -8704 - -catalogo.xls -file - - - - -2022-07-28T03:40:46.192818Z -6956e144423169ff0bcc5b8395450dfe -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNARCOMITE.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNARCOMITE.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNARCOMITE.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNAROFICIAL.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNAROFICIAL.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/ASIGNAROFICIAL.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAMONTO.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAMONTO.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAMONTO.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPERSONAS.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPERSONAS.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPERSONAS.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPLAZO.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPLAZO.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDAPLAZO.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDATASA.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDATASA.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/VALIDATASA.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/WPA.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/WPA.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/WPA.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/catalogo.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/catalogo.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/catalogo.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/gf.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/gf.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/gf.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/rcatalogo.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/rcatalogo.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/bpmlib/src/main/resources/rules/.svn/prop-base/rcatalogo.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNARCOMITE.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNARCOMITE.xls.svn-base deleted file mode 100644 index 35c18baafa410cf38443d75a3c0581891fd913a0..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 zcmeHMTWlOx89uWYd)Aj^?dC>8oUM~K_IkUC6QFH^>s_y%bgSBK9a~6H=tMujK5qncAOJK0%>ZRuo%mza#G9u67Y~f7EPe$QQbTGM zaZa5^53fCJ!HB6>zm}5q>&05+SChF}f6W7{`HK1V{^$D5b=(WAHvhTybN+7tHUiiJ zR2$F^+yZO@HUnFLt-v;v`#y}$wBAn+;R)4*qdJAu1^yMaT%VSw%Kb7H1rNXLNzhZ}U_nm2F!R6s{B zHu%-gTi@c6FKhpM7!j}f7Gzxf3EV?!j^pFuQ>hs<^nVHiVuPV^Y+k@1?L$ga&x75d zUJ>?ndG^WZgHTL`*xx*ne5l35_NV08DbEdfYU*cF=8wYkVqCrn`SMr41^uM_S{&u7HqQwaKlj*vSakEaGX2omKw+ zrFQzEN7`jiS!BB8El1w>osAq<_Sl1dtF2A<=|1JtcP`=2Eai3B^PmR#%Z?sLe@&0W zU!!L!AE>m8TbBg4ot1iBcAk;Vv1(_vy^pTKJ9bvF2T|^XT zjKaz2Kze4-Orj&&(RRL^hKyn2DS@l`dpq=tz8c2<=Ra zjtnNplcOUrI-Xzx(}RsT1bg9H^ORwARVt0nn1wp~x+vF8av*2SrcNfZQ)X9pU*DcN zBWGl~@3F0*wb8s;IGW2A=cGua)0XJ$K3vrdfq1Hr&dxd#ab&`zF>}T;@-XRGF;&dv z4GSING$?d5SDeeD$qyFMB6Mdjnga);l@rO)GOqXS%0fwWn@Z`M0VJHj<2-|hQ@}ne z2A7-_TQE+hFn)NtYLhV&#K^e(!}otbeBy!rN#RRic<$#cxs9_?mDN1n7JOmhdgS>S zo*LE&`wsCn;l3`<+fn|YgkSdWMf$$8my%~ME%bLG{e@Tk`1@6VH`3pIj^Wq+=Ts+F znki`FJoTuE7SWntJC47L{gqf#6UfokSDY_eVY#&^d1t9`D{nFOyN6aBsl9t~8lK-> zd&e@YUJBOU{aBCZ+iLF(*oMM^+WQq477p+Rh2Y_B%KpBh$-1C>IFC5dw{z+txlxg$ zRk&*l6?Zs#%*}bhHMr!sQh8kZ{35qQ>X_HINF5E}D)r85TZL;Bt|Di1x^N#lWzi3? zFCg3@cCv~&_BFY;#mQ_CQ|;V9R^Z4qKl7u;slX&+$h)*oz&whwg$0sh2+5Dk*vlaVzre5`L8E z#7%WK7+Of%_eh`FZywxUvBo)hUfg3jlc<|M+#`G=H1373Dme>6#Kd>L31vo~T9|P#I zdjXC}9tP>FlK{^o1%R7E3E(Ju5@1b#!2*VHAhN^piLqoNIU2${IS!6qe1wT1E`8(s zVd`bN5@JY{Cf*J{_szF7Ngwz}c+(Sa)0~eKR%$=(^t}7qcb|{$2tNG`+8_Dga((IedN2sYmeb zgWsVavB`Bj+tFL>FDx5%C-Bu3{Mp`i(dP-&o52^ZQP}YC>IGdAte@@S`oZAJUiS5~ zV3SUchI%b!E-SYdk}JDiv;AC48JsueoJCo`I;M(fe+FNm`0YQ5{{l=)pO7iwYgiV{ z%Aw1tpKJD7+usk_HyxFJHHaEgVuLCFfmokCcYTERCr~%nw(Awv>;L-i@7KeI|E2!_ E0I^`&RsaA1 diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNAROFICIAL.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/ASIGNAROFICIAL.xls.svn-base deleted file mode 100644 index a0712ec9aaccdc816781aa4c0e786541480530e7..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 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 diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDAMONTO.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDAMONTO.xls.svn-base deleted file mode 100644 index 8164450a7bfb6ee43fa41f703295b9f5a69b093e..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 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 diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDATASA.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/VALIDATASA.xls.svn-base deleted file mode 100644 index e81c241fead820f51e9c8c2e520e1fb44d9ee235..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 8704 zcmeHMTWnlM8UD}Se0)i~&aH0JIE!hTb?k2KM2NH@^{y{%7S(of>>@6bbFw~mw%zp_ z?>bGTARK7bmsTQF;?h$2ke%S)IvK8yS_OCUukcWcu(+$7olvi{A ziumM>zyjVPe?t7cOk+2YCr_j%?a2Qq^e7!HgF4J(lR1Q(A+G}6C_hl>o9cZ?Hh}^m zE|CK&W56ThO7|DlyH&k6;%&%JRGU94q)WETTWC@I(pR~OK~T_0!2i=?Nk*z_L2&zO zTfA~1yT<5+%&Z)9q<4v?sFgR_{beb%?hQiS*{MqHbbF_E+4imuD@kYxG{`yb0+03& z_75i>YYBwpJ5(ipS++o_bMo(E1gRV5Bg9d!@vE!D**(Rlihd=WT$iK2bMbSqX@uQ# zf@|k?ZHL8byln-%V+DNg3V7|Zc#S*mRpS*@z7Y{=sMJT}n4$M9hlBpHYTW6sp311y z{Vnm&IP`(9H`3pXiTO70;{z2GNjqk}@;EtXpxmEnj_6awEH~2qLPdk)x*A8V|=vUX4qmOdQ zcY?ORmJ9q;lL0%U2fAOHf13v{^EbpxuW`)>{!rrcy$#fJDgMfqGQQnI->&Gj+@*Y$ z;+l`fEBU*C7KYEaJLWoL_U}eICgRhA9hJ#7AB< z!6|=nSg9IXY-S3Ru}@s*y>Y+PFJd(0XSg$%a@xSH!JIeZc*mvX9lAX34JH-` z^De~yh=i|6%-0H>69~J^@NC9DVi&+ZYo#riA(@@d%@ndYbyz2?*lZ!4i49oO9jRP4 zHZdI=FXUpw_7`UDe8CIltrK?a2wqin`E+(VW5*^kxu;{4GzxYdigDH|9FO&+C;RMF zI%{Qc`x(p??EF@(ks8>@6ILcYZbe3{yaoLR69fI|UhmLgUveZlGzeW2z06=%Q1^$R zW{-${!pcNlS+PmGFl-gQil2dT7tUaD~)%G+%mxt}ijFpFj(khXG ze@wx8rP7s?C}Ge?^Rw1WIu}Xg)00!ycn<#^BvPsLzosIvW-e>Zz?Hf_20!YgU5`9* z7}*4{{hh2hfFtLlpHby5R16kz54}g8g_+?;k}|gEU0@Hrqm(H`PuHCn6G+_AuWlKv-osBEx`rz30yY8Kpjqx#5A^p@Hv^ZC>u_lHW(Ng1B|lu8qpPU` zXmdePh2WPvF&e~aE8Uvo-GZoF`!L$Ocu{kx+}1u=qTHHR)vf)iHM@QRmnizmE~Vp6 ziQs`{AdB{HRykVvBTCC4+O=X-wVWW@eH0uTfP}EY@i7%0`?(vK){c7L$EDt>^H-Dt z!ujIX1)UN#;Hd3ZZECOF@*l{jrW?+9{h$B_FPmTq|^) zAEk0#K=!FMMArpT;#^{hzSSw5sk%fiZo7K)s0*Xw){)EIrIMEmy|ELcttq(z>UQ+0 z2E}C`>_G_}y?x3Pe`K&HZs6gC{&>OYpd0g75$SC$0#+(9z^M*Wg7SBHoNMjkVN_t9 zUF6uZEyMx$FLol^D1pVO!fO|4+3MhvI@OMC=xq=CHpzLolOb_M`n-C78`V2t;hp4L zPg)Sv;|T;NaoU)qWG7(axQ8)ya&z(j=ahru{C{XvpPMK|)D*@1HTHeb0~oz(wbqh}?u&A4jB*A4cSXg_m9~495|9 z_bMRrtT~6sP2vSaO8V<{wc07#fyC%=vNt&t0gi=G)psF{Bf25(W{@t)|K-m|H$VSd zs`I|WO8uvvzKg%P_-brN_@!^4{~hnX-UlpLg|W}vN~i!M7h<=ME8!qn4|j+KZs+$O zXL`0X!=uYeP3Oo$ZlH6#aQIV^+H2MH;qgRQ&=hKM#cACIzq2$X_= zvI$beBp#lVXjZj%N2z?w(~ru>a+)SZ!#XCjA3n?1e~e@O$It&>|Cts5Uy#;BsYCq3 zk8e=p^r#xBm=JyJ?({Y9YWs~c+p>sFT-xobasyf<1oTyWkNpkyF-XUL#UBFpBcTvb zsfWObeFgH27K%n)1P^@@@hWU#w>Rk=Afk3T^$gD?UD=3^8D>;?1X=#*JeX4HfvoYf6#%15?3W{X zF$w$>VhkjNK@(v&+*>%Bm%@qTb7Jo$#HJ<)sWuVQXuAy9fTE{M1n!mk7qb{d4?6#Q z0K0=#N`c>p#J@leK+n->u_O7M|D~%3r2~)htYeS~UwC4We4v`cm;$p6EkE3wQ1{;{ zzQferml}@{^40H~tv8i*29%ON#W$b2+fjE@xHHH;D$Pxb(h)`~ry+$TGaJnY@Vblu zXqDrkB~BnpZ-L?e?^_0pwGLyJ)XHUmR_fojBBK}#(!D;dJ|htHO@tnm*1RJ)h^rco z1jrZ7gB+~ya@+!IDN9krxCP3a6PfL3Jyba?zRS_=yByuW!@(eaO7>9JgF!sM!$E*U zdtT&AOjB+RwP0xXwpQd8xI!~6>5+p0t&z+xH0faQ9Sm&IH087vs|Acvpp~<8u(Nly zw|9$n^7+M47Wu`g6{|JO7hq&BBfn6q)Rx;ew&RjEU=}hy!tiY6ptgDRU{I zNm;#!GjS&*8dY)T$TX8ie{rM;zc~3w33l!6K(A;=|7eiHB~I`MN#)ZybL0~_a}-ke z5m(YxQ5c;AMR}BJaw7fw8iaNxF3^HB2$iL;mn%z5iEc=FS2|MsDB(cul3m9*NXJHs zqJQ`?IyNrq_%+cHRUQ9-GMzy1D37^&n$6|{5Y^L;q zkq%8?Y;L~HXql0$9C7`E;$JKfl-QQo64pM79|u(w{R%atgJlfbA805x@7H)lLor02D-Ca zI*x%A<SFrJD;K#AQl%Ge)&UzdIJpt9uU_nq9jYHEN>4h?N z^k1axQn?tTaJ-f2hz~gFQaWpCBkV79WpWeD&DktAi?C+dD$vt4(PcRD{7{?f@#X1Y zJtca5zUuLn^hu|tP4)VqG%8=?HPUH?r25y}6DN+;McY%4$}ieMmM>avJ%56kIic*( z!HDi>rR7p@p9VU?qW!AKFNe1QFJKZSS-WFwH3v#yFpnjZUqZwu%nce^@Rki`c{+yF@*%EF_wk2?V^;$n~Vmv zj#5^&d1?o#8k%Q_C<3E-WFXKyQNXGoIK*xMQPGYD;S1!oQw70s(|18CLbZdmPym65 zy6n`q@fxxNV+T1+G=QMZRb`YFfd>5o5R67W6zBYhBM7>S4gTT1v z`ylitvSvTQDOZCg8vO(oqj4;t!LTr({ys=WsCE!sJ#WwiBI<3T9mM%ZKDI@4o(ffn;pIY2d0`qU_|_V zkcv?4ARGk{h^V)Tb`aMe0ih3FXwD8!XMeyZI9t^Wg6A>53sMoP9i+7a2t?G|L>?rU z*#staurlH9)`rubQ=TN?rNpOn%whKlBcR9XRVTOz$3MuK40+g&I|RDEL0?QQkBHj zDydV0BsO1g^VNIxlA5YW>Z~fsU8^J<`AhR;z!%g#t5Pq?5+!+l$MJfLwN#O$#`hewN|N_IcaNJ(7ps@lN=1?y-*eO| zN#6I|J&s>rsa}$;iX=6@=c-kbyzjYt>|A?Fy(Er`BsIS0rd5)>@40*ARNhiAskMqE zHNNMmRg%2#xqEyrS*T8uA#AI{sJ=%kKZ%#a_Eqd^8O*O!hc1>^-;CgW5R#rv@4Fl})BLt^?@Rt4+sb zYSS^9+H@?JX#pb}*vO#OPK!^16Fa;(D4c;x3R_7UDJYx22Qu-y=p6w8a@Pvpf3IZ%826lLi&kr-3QKx4rKF<_X9@EHdt;XrSQ%M?`h zVG+PKBtzy3CImO_Ny9iUP!W^WQo`0Ub|a+UuSZnPn#(kS{fh=%XuXtiTdUy8w^*<> z6A`8!*GUc++A3w-HY&LC?Gqs@4-HX|>nw*0wpGS;Qo)sPjbPg-u0TDmiySVrL&~`A zRdD6o9zyzVJ*ghoRSp+g9cA2(D!B434I!VF_ELvy41;xO8iJC=EOTXCQT`X3hDL;ohu1@rVud0RKUOTvVFxR^C&NZ!Nbt-pwg4jd7U__sBgtX6RfN>l0n3F!Elq$wJk-mF`3hdSu*C0{r3Wdv zN-6Z9-YKWxkfAUN7*?OMV-^ci+9{=ELFEnub(25}HfSyQ+r(h)5ET}gU>?qV5iDVH~#o;)c9)O|E z@tiY4p@9scp@DuXTqx$H6lhY|Ws-I&xMnMBigCTQp$DO3vZk1h z$(mw1hQ-n;OIMA#birH^l#a2GZ9E;%BctJo*3}4xX|O6Zke3jT?e;h&Wt)OR1F5XV zOG~D~&E<<*&90?8j(=nO;bWEl{9m{1}6E9etC6WB`Vj=c`ytp*JNX$=)jR(Dy z=G9Cii3J?O<-=iAbaPn;h*dESs3M?ZR*$_jugJNJu(iIyz8ifN34M9pcW>8(_aX8Y&1(nVYyHtHxbf$YOMD~$GhAv7O z*<1yg?xHjxOZ+yJ;G7?kyU8I#C#8(sSOuBxq%h*PKzpeyrbiaAe}X_UQ@3omo5NoulywZ0Iv*;87`|VEPhk+^ zzz^`d5AIOQ;=%o}W;bwz0&OImp%z1VbS63EK6o8oFwenF9eAK`_?-`m0uNb8lHRi5 zGYcc|aO~JI_{bu8c@mQ6ApndDQUUw|_>%yg2q0d8fLRn4VgeJy@DIs&2O{ubx(Y}y zk>rs)h)ePyE#N}mMLYx&;!#lnbl}F22SEVvf;_Tx=~4m=#3K&~P+T4m@~8kbk37=6 zd2{lMnJEnB@WNc;HG(>yJRMxGraQ*L=c&`*E7(?Kg`BPFGNPAL3*k(6q1-!6H;=Gj z4!|JW87#OnShzYtZI8(W!MC*>kkJrNPf4%91YUe%!Bv8li-Bc;SACMWQ@f&}3>E<#2@5*R=XM6M)pJTHMoh**@$hY#qZ z_{JcZKQe*Gf!dV77eSkdiKqhN42}qh3>p}ToB?4$pjcqP@SY)&A^pNZv4B8)fFeR| zyMj)3bW)VZP2r1!MZ(l%M||mO=a9@3@e=Kvd^k!>0kPtEVUjWzpi?@fz(Y`q7)JWA z=n$NmEaY$kQsPG@(S(3loE~v_oJe6JPXvYxNs5n+r+N=DPsFFbMnGo@>>UD%1_uoY z3J(kkfM@`$9rM$8366Flc3iL}=*N!~V$8|c*Ud=+r|8+_IG6seLudy=7DE}`gikw2 z9Lu(Z00ik}Dg9)UrEGiCrE+iZMMPg67M_Daa%=MJcB2xk6)nJVo51JLKw%PebK+>q zMTc?6CnjuNbT+)q%`E6s@2^uIweOQ(?9XoVY|5zxrwY=Koz8QxEWc5_A?nMg&`Xg$ zHgYTzT&p}jt@e2!I%2E8r)+uthCaW)>*3b?^K7TIwpn#qrj@DvZ&^K`y~z7PdEoU& zI(v7t{K@y#quS*T_p^5&^y?hHwND^>>aJrsS6*za?Nx5sgL~#cyN}#;F0+5D9P&qG zt@Vzl!}*;qcG`HG^Ui2q%SaX_N1_?Q?7IEq=nWT(McN z?0%r%*-`h>d`mK?luuu`p$&WJ_~aRdldAVbAC9<oX9nhbHx*EgBNujJ0!_a@zSgU!a9y<41cO}KZe>EmbPt;%=LZ*nK(bV~mW`>Wa0 zx9zFnT-)Pvwe@S)n&Af=M*GeU9{lw3C#U;C&t2LYGQHI+zj#Q+u$AE8)@|u;3(2WX zXQ3mi{o?0-LYo6kOPW0$$9eqfr(%bp?gg%{L;74gZc}z?{SEt0f$?o08*gZFW^aUr zWAQ1b?wq8#!wo-N3%uC*823Wo&+(U%E++k&KK)zobMt0g+n?4rwmNauRFAR=>5@AO z7p{AiDK<|Los6@bz3z3V*PXik(Kwpbzxe5-HKC`54qF&Er!C`=9WO(8!u@rj{++sW z83%vwVd*iYHe_$VFT*!R9xOSss@7_KmG7cr)}6;aPDb8~;_lT6IbZ7axY}p_$yaHi zg~#m;=9i|;>EbZrVO4so+KNdLJ8Z|E?j5;aKb_ldMVGTrB1cWVyng-ZK~>p(MZG56 znYzwDzhBk#ckB&$f6P33-A!`%rT(XV&n9=Dy~XA6pvUtoOVWpTZ|z;v(fv`(Aj8B3 z)klt$<&?C(J32SXv$;udWzL$`YmYYSyNw&Q`sLVtT^z>`n)TvA+t<9p%cBl`X!>oN z$*M_HOV?gLo4Pa9WKl+f@WMEoLocVcoO#=9$mer<8IzLTTDXnRa;#u?)~_zV^qfLNlrmwTWgPG)P33a zdkIGvT{7|gyR%*$Bp)8{I)D4{*TP4SLeqQZ2BqG=UQ$=(msuD4ZefSX?>{~%*|_2S z<`0>5W&OUrd$Q(wlY%MNnrD1GJ2>;pyQ_msK0mvY`Dubl?XT;0IoEp58Pcn};K{?D z$9GhEpS+r1`S4KX@)@2Y!3DF!V}4o~`P6Lk;ex{pl8*iI#CI84*!7Q@XPYh9o*Ti9 zinOl{vGSP~+~du!*?UaK7x1IHbsN@p?!|HV$zpdhmsJ zx<#jjUBWDe?U?3NP%?Yq$m*d-v)Oj&sbH zMXjo2?|HDY@JSqJ{Hm)nUsM$J42T$B_;vBvQ}Y`=8*p*|f=7!_9{%&qhRErueZmJ_ z`u);;_vyVmST&2Y*x|Zm<@?Y-ZuhycCgN^X;*EuWJEu7n%?W=#zI#!RNT)_8p1G|X z`*X0*?3^8azIgit%^4tajci%FDA}cFiM^@k0ry+y?H^D3GLiGQ!_VH%+nV&u9CBvG zPu=7GD8Exa=e(1LqfYN}*^mZ(Y0W;ff=18W zy9hSUsciG7>2I&iZhl!4{B+Cc+P}t5Fgf8LUz2@fc(wTU+a>cqb-SNlFeu-*GW7K- z9>egY)s^=ZdvllA?DRZdxIK=Y{M0gMMVFq2AM1Kg&&^){w0h-gLGfwPwYl@w*_BPc zXng(MwGU70meeGsedvDNF1Xj#MeG;JeH%5ao}V-S;%MGqyQi;RDo7s4+jb=1DPfW= zFKpYD`9+=PkJhtj8DCU>^MoMUblI}?yd59fcD0!@nLYgWiIdTDPfngGvK&=XZPk?5 zvH$)`Gk)t6JEwFpe>&=rSL_wf0A~@u%q($cnBI|bhfj`a8t+^Am(IExhu%?RU%DJ` zdhtuPV^izH3mWeq#tmK_IXAc6!^5vXcJ*nw@NdtTlTs3vytUdeYvTHqA!nL-kA1gf zcYJ1I$Cb{}!Mg@qJ+=&JvcdM+Ya2Zu@9Z<7Eibw5-o)$v$mv*<_T_(;T>f>a@N8Cd z&x3iE+qgOR{MPG!eL7=l<&%oRS4Rx)wfpspF{VW^o0jKKEA5i^wy4{0?2_=P8%=sz zhj%l!d)lnU`FP>Veq8S-L4$oQJj7}F?>yIax%Fq`_Rdu~HvZ13Zo;M?M-1Ke>g4`$ zUMCiRZJ#$F?198%;D?D*>}L&HYk&7a`cDH2T#8;BZ0fvuwy&qDo=^-PjjIi%J4tvhog+g+S;n*Dr{VVl@fS#5GNuDgwSJZ2fcJf&CLLgzmP zo1!M2JZH6LwDGO0V-5xPSa&cWw}qZ@&7-d=citPWXfMtkxXnwy{LG%~*N%DB)ZU1h z(VuI&a>n{MnVVv&T5TO1<#Q*r!?oL+TYoM)SUI{`6oa>dUyoh802Z!IK+3N5oDk3*q^{ zis8oAMO8d`_=o>3XMOLjyk>L$wn``nIX3EIWV3-^`RkJh2-aWrSUab@CMcrY#U10{ zb;!Bj|M7%TDQ21X8h;J?GtcpI#wzhrt80UT_CI~N_2$8d(&M+SPksyIn#4NyTlQ>e zhvWsD3WglF-{byiW~?*NZ}OuT&pLSu7)#S;6b~4KJUb-FrSX zxSTT~HQ?F(A!jzeu6r}$R{V=SLu<5o?LjmeCu{oe;4 zv|41xvtYSe=MD09;g;U|?{ zdtoDQ*Qcp%may$J^Y8X7s;YT*zn$)x!^c>WOS+6~z3Va!_V$X?c^57XPrCOqrFI`3Vp zmS+sEI+Hi(V`&MDv{c7pCKt2U?1eWrFj8x$G!~-=pws|IZbT*>kcJul;bt-I)0A;+ zq44rSvqf!dW?k5JMQ7T>P9~lG9Qwa_X|mmw&7H|Rniqd)*{bp;vF^7!j@sOu-Syd$ zu`5aw_rF-+Kfp44c9l=ujuBH92)$l59l5BlV^~{<0gl{`%SEQ``sC(cm=jr>wcWdL z;h=|hh3f-OAG*-{Q)?t>ZS5Bxr z1a3%Z4RZsPF{PaOm64RkqYX&c)FDx$Q)LWgCuqPZf{BQ{HdfRQ(J*cb94>!;HtoabK=0m9;Zg>sdp$q?~{BVf-A$7VYGJy{NMGHeZp7cVILx2$p(<5{@Oi4_80{ih9m>>N?-U>PjECD;)tKq z!jIAt<4pJq>D0YGt^o3JKqG-;P&PY27OKg~5e-c3bfv!x{g8`fEbx;CW zmf(1B(J>v;6KIfv;$p!z89t#UXnrh>UQ}5iKNCtVm?}A%iv=-!LMzeyIut*8Bl7D| z{IK>b<&yEE1!;a3#gA1E`B@Y{EUi)e@ZBsaK3dnGqG4WoQ@p5U2zV@kJR3q|s6+aY zzK{ZO(8^)pzci{oaE1d_7Sn;B-@&B`nv*4sVLq@V!YDc$(nL^xgy?KQ?+1UhHL+~^ zQ(OkXHGuj#4#YA5u7OaeX=DT79!Ql2zC+7LQa@lt$CxCF`komb(;@&G>&0`1vcg}OX|tOZ?cL0(JHTnCFE3WmxIlbHuG2ZLfpV_=b8 zu&fKaNKhaQS7gM0g@9h#3it0u;0FUTX9OrLGLqd4f(!+lH0tM#kR40yzt?}51$3d& z5yEa9?!(Y~od4|isJy{L(AQ+wkC+F&^r4iI0Zkx%_NE`~5sm(lJhtl{1Ng#1tC|4(FSOY^VDXTYy}L32XckfZe5ZH^!me^f~BH-+#qEIw8wOc4si u9BSW(6>LG2Coh!+UFsb-dX!5uh?&lhvO$%ih*W3}o3-*^9a7WjYHez#Eo diff --git a/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/catalogo.xls.svn-base b/base/bpm/bpmlib/src/main/resources/rules/.svn/text-base/catalogo.xls.svn-base deleted file mode 100644 index 88160e2f3838c0582b5057efa0b009e7fb4c41a9..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 zcmeHP2V7Ih)}Mp`0TiW(s3;K-0TB=svCu_DDT>(Ef&l}9fv_Q90|l(uR$)a^Tr1Ds z`&!V&RZ;9+Y}j30*Y3KOeCNzfLb~jGU-`Z7_b$x6cg{WYKWEOIsdsM9owc~TVq4Q1 zqILuj1M*dBLX4E?EV#!&kA{S>;RfShrBW$FBm{2%bNm}w;0x&LEGxs-a5aR0Wo`_C z3&8|}DFibJ^&r%TU=E=H1aJXj0l^Z26$EPtjUd=SXbiy?LK6s0AvA+v2cbEH77*+q z@F28=-~ho9f)j*R5YV6G;or!V|CXx85E1-Ipe({j8eGL>9F#!a4;%0pdB(9V;Bm24 zAmlJTlkRw#{$u%@whzy+&e@&JJsEqJWdO8XhK&pa>0&aP#8W*+GpYW@*^;nX2!)ua zM_rO~fT=8$;bf6$A|!&kB-6@c3i44d)|#co>p?B$K4VAD`Mj97-XP+5{;Q zk_`8046D|&i%dS|sjl*|oTkXou%5~7hxf|$ALCg6@%o?R|EC4O7i2Y2<`94L@)c^F z5v_r$3DL*yPF?o;WAvzo8|HIKo7Ow7djTyL0{SXGcY%O?4AQY*34(zANCX5_>H#of zUx7R+B5@Md(jW-AI|5pJKzo99{$D-x>Ce7=`f{m9vxY?rL4Ws;n^Di55Kte~zb6Fj z=lVdv{&5h5h7d+Tz_YcEdUs0V!s^Aj~5Cu zNIf7S44MeL;hv%teg^c^N#Kru2TiQcD;ujjIe5p@1F0K1iQ zgo59L#6uwmpl3=}LXv>@zjTC99r)C<4nrpV;f_U0focI`3d}aN{BX9S=Pi`)06qKD z@dzQG1Han)(X6we6oM$<9C~)3XLC5S$R3*J2Boxvk;(~3A)Pc2%?9v>tYB!Blc6OR z61Atm@ZbBC1!JuPm?f=pS)i5fr@D1+p`0Vgl`$(6a+3=EEt9Wy;65k74l;Bd95+EN zE|FV>!4QI77!<@n4wG+kSbu|qMcONDpk0cxm9%rPp-z5FQwzNu?kpAw(5naMn;bX6 zrus3^VgY*fK#um`6V69MJ(gs?gTA}jv3c2#cRCI01yRy;dJ1Gy!Nq!vWAsrh!N`G57 zIyO++_;t|{RU7~RXF7}UFnh9tu`|x0sU2_tfd{96+Fz5tMF)Mc4!SO!B|7+Z;TP-R zU#f$?K?hwI&PE;lj6OJiQnk-E%CAXh^wFd<`e@P_eKhI1@ELtzRHUZQda4hO5!YUP6KUE1il#-)vp19D2ggwumu zU}NlnYh|@`9PX?6!zFAyYWZ>fOvcYAWSatqKud=u;6mI9Kzu?SD|O?qRVlV`Jt96@RjLY4Z0#<3Vbzv zvgy=Ip$|%<`5LQ}&L||)Utv$2eA0ulgAvUy*i%ief?wFs0&DnLE85~W128UZ~Hx>O&C|y%7!>>xu=30|%FiGt(jEvu1^*o0g zOmbA{*jgLF9NStk=f%Mw45Qr4!DHDR`aqC~3lGc)j>ppk!75t^5L_YC4TAN%4j{P1 zt{Vh9hdO{@o2MHDTkbl5pdEFCVE0uA5L_kH4T5d0pyw2N39pw>IR~} zblTJnM1SeH*9}B}>3AqWaQ<6LjHDWM2Omg}pOMzuWWHMG

      Pt^oCF2D!J{!lI- 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 `0zcq0f!KMBY=&TSgc^ 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

      diff --git a/base/bpm/bpmlib/src/test/.svn/entries b/base/bpm/bpmlib/src/test/.svn/entries deleted file mode 100644 index b602903..0000000 --- a/base/bpm/bpmlib/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/bpm/bpmlib/src/test/java/.svn/entries b/base/bpm/bpmlib/src/test/java/.svn/entries deleted file mode 100644 index 5e2384a..0000000 --- a/base/bpm/bpmlib/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/java -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - diff --git a/base/bpm/bpmlib/src/test/java/test/.svn/entries b/base/bpm/bpmlib/src/test/java/test/.svn/entries deleted file mode 100644 index 429a989..0000000 --- a/base/bpm/bpmlib/src/test/java/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/java/test -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/bpm/bpmlib/src/test/java/test/com/.svn/entries b/base/bpm/bpmlib/src/test/java/test/com/.svn/entries deleted file mode 100644 index 79fbbde..0000000 --- a/base/bpm/bpmlib/src/test/java/test/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/java/test/com -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/bpm/bpmlib/src/test/java/test/com/fp/.svn/entries b/base/bpm/bpmlib/src/test/java/test/com/fp/.svn/entries deleted file mode 100644 index c7108aa..0000000 --- a/base/bpm/bpmlib/src/test/java/test/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/java/test/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bpmlib -dir - diff --git a/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/entries b/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/entries deleted file mode 100644 index 6243025..0000000 --- a/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:45.269814Z -d5748f34e1544f20335de32a1b76e551 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -78 - diff --git a/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base b/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index d7e6b5b..0000000 --- a/base/bpm/bpmlib/src/test/java/test/com/fp/bpmlib/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases de Pruebas de Unidad. - */ -package test.com.fp.bpmlib; \ No newline at end of file diff --git a/base/bpm/bpmlib/src/test/resources/.svn/entries b/base/bpm/bpmlib/src/test/resources/.svn/entries deleted file mode 100644 index c24bab2..0000000 --- a/base/bpm/bpmlib/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/bpmlib/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/bpm/flows/.svn/entries b/base/bpm/flows/.svn/entries deleted file mode 100644 index e810a3f..0000000 --- a/base/bpm/flows/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:46.952821Z -79411681aec3ded81f046795774a5d7f -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -584 - diff --git a/base/bpm/flows/.svn/text-base/pom.xml.svn-base b/base/bpm/flows/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index dc6d328..0000000 --- a/base/bpm/flows/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,18 +0,0 @@ - - - - bpm - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.bpm - flows - fp Platform - Flujos - 2.1 - - - diff --git a/base/bpm/flows/src/.svn/entries b/base/bpm/flows/src/.svn/entries deleted file mode 100644 index 85b42df..0000000 --- a/base/bpm/flows/src/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -config -dir - -flows -dir - -rules -dir - diff --git a/base/bpm/flows/src/config/.svn/entries b/base/bpm/flows/src/config/.svn/entries deleted file mode 100644 index f2240f3..0000000 --- a/base/bpm/flows/src/config/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src/config -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -jbpm-ds.xml -file - - - - -2022-07-28T03:40:46.503819Z -2c34623868439ed209e211aea2c786bf -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1296 - diff --git a/base/bpm/flows/src/config/.svn/text-base/jbpm-ds.xml.svn-base b/base/bpm/flows/src/config/.svn/text-base/jbpm-ds.xml.svn-base deleted file mode 100644 index b50131f..0000000 --- a/base/bpm/flows/src/config/.svn/text-base/jbpm-ds.xml.svn-base +++ /dev/null @@ -1,33 +0,0 @@ - - - - jdbc/JBPM - false - jdbc:oracle:thin:@127.0.0.1:1521:test - oracle.jdbc.driver.OracleDriver - jbpm5 - jbpm5 - 5 - 20 - 80 - 0 - - Oracle - - - - jdbc/TASKS - false - jdbc:oracle:thin:@127.0.0.1:1521:test - oracle.jdbc.driver.OracleDriver - jbpm5 - jbpm5 - 5 - 20 - 80 - 0 - - Oracle - - - diff --git a/base/bpm/flows/src/flows/.svn/entries b/base/bpm/flows/src/flows/.svn/entries deleted file mode 100644 index be69cc7..0000000 --- a/base/bpm/flows/src/flows/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src/flows -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -flows -dir - diff --git a/base/bpm/flows/src/flows/flows/.svn/entries b/base/bpm/flows/src/flows/flows/.svn/entries deleted file mode 100644 index b751ad3..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/entries +++ /dev/null @@ -1,980 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src/flows/flows -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -casoprueba.bpmn -file - - - - -2022-07-28T03:40:46.556819Z -d8147f312f22ba2618afd7e63174583f -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -26777 - -taskasign.bpmn -file - - - - -2022-07-28T03:40:46.555819Z -131050a2f023ed5f3f05c17eb9860469 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -12158 - -aprobacioncredito.bpmn -file - - - - -2022-07-28T03:40:46.556819Z -e6916a8850c0e25f95e9c997a8a40e0a -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -50730 - -testwpa.bpmn -file - - - - -2022-07-28T03:40:46.556819Z -950988d1e27bd8600fa3d0c183f85136 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -13394 - -nomenclatura.bpmn -file - - - - -2022-07-28T03:40:46.556819Z -7b4ad5e6700e0cbf90b64bebf4ef0b45 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2366 - -flow5.bpmn -file - - - - -2022-07-28T03:40:46.557820Z -ecf6cc93ceec3748166558cde56cf428 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -9779 - -instrumnovacion.bpmn -file - - - - -2022-07-28T03:40:46.557820Z -5aafb9cac4c95100501d9e7271ca1f6e -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -32591 - -calificacionnovacion.bpmn -file - - - - -2022-07-28T03:40:46.557820Z -741aa9e951d9ff929adb0c71f2e7bee5 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -45218 - -basic1.bpmn -file - - - - -2022-07-28T03:40:46.557820Z -8a30d0f3393457fc99567423f6c58f19 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -6301 - -levantamientopargar.bpmn -file - - - - -2022-07-28T03:40:46.558820Z -f5707c35019414b05e5d5a2590e4fffd -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -41097 - -calificacion.bpmn -file - - - - -2022-07-28T03:40:46.558820Z -5b2adb9d0fe353199e103c2764ae7f1e -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -79081 - -flinal.bpmn -file - - - - -2022-07-28T03:40:46.559820Z -8313047f9f5533e8e5f23ce26ad088dc -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -6074 - -ampliacionperiodogracia.bpmn -file - - - - -2022-07-28T03:40:46.558820Z -201e357e195f37ec1353677ea852f630 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -39550 - -Looping.bpmn -file - - - - -2022-07-28T03:40:46.559820Z -c8864e87aea81d6f609d5d6a7256c31b -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -4987 - -credit.bpmn -file - - - - -2022-07-28T03:40:46.559820Z -83a5bce80d8df2ac9f6d69513313a99f -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -10717 - -constituciongarantias.bpmn -file - - - - -2022-07-28T03:40:46.559820Z -691d34402015a457c108cc1c323fc94d -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -93700 - -aprobacioncreditonova.bpmn -file - - - - -2022-07-28T03:40:46.560820Z -ed2a6f84f24e0f56d29e6e43dc67326c -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -32411 - -mapaBEV.bpmn -file - - - - -2022-07-28T03:40:46.560820Z -ecd3208ccad8dd317406aa347819e812 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -6059 - -precalificacion.bpmn -file - - - - -2022-07-28T03:40:46.560820Z -72e1bd741698c5117d17f9e668b30d8e -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -50683 - -matrizevaluacion.bpmn -file - - - - -2022-07-28T03:40:46.560820Z -51ef8865819025bf3b0e5cb1d3aff355 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -16440 - -n1.bpmn -file - - - - -2022-07-28T03:40:46.561820Z -7b01b05f074866f8eb434c8ab22df168 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2296 - -levantamientodefgar.bpmn -file - - - - -2022-07-28T03:40:46.561820Z -6095ec9bd566453305b6ab18a6674e2a -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -32497 - -n2.bpmn -file - - - - -2022-07-28T03:40:46.561820Z -c512315805d1fa8c67e4567b049d0fb6 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -4277 - -test.bpmn -file - - - - -2022-07-28T03:40:46.561820Z -76bcd546c38cca941863302e852b5bf3 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -11981 - -n3.bpmn -file - - - - -2022-07-28T03:40:46.562820Z -f9a8b12c1b7889c6755db867f207e462 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2646 - -basic.bpmn -file - - - - -2022-07-28T03:40:46.562820Z -359915363406443eb39c5f6c125ab883 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -6999 - -n4.bpmn -file - - - - -2022-07-28T03:40:46.562820Z -0a9977145864a973cd15e76d91586f26 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -3867 - -seguimientoycontrol.bpmn -file - - - - -2022-07-28T03:40:46.562820Z -446fab0a022ddcd8fd883fa30c0db714 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -73478 - diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/Looping.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/Looping.bpmn.svn-base deleted file mode 100644 index fa00a54..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/Looping.bpmn.svn-base +++ /dev/null @@ -1,114 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return Long.valueOf(""+i) < Long.valueOf(""+count); - - - - - - return true; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/ampliacionperiodogracia.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/ampliacionperiodogracia.bpmn.svn-base deleted file mode 100644 index 6e7cfea..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/ampliacionperiodogracia.bpmn.svn-base +++ /dev/null @@ -1,897 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _110_maiaInput - _110_taskMetaDataInput - - - _110_actualTaskOutput - _110_maiaOutput - _110_taskMetaDataOutput - - - - maia - _110_maiaInput - - - taskMetaData - _110_taskMetaDataInput - - - _110_actualTaskOutput - actualTask - - - _110_maiaOutput - maia - - - _110_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _111_maiaInput - _111_taskMetaDataInput - - - _111_actualTaskOutput - _111_maiaOutput - _111_taskMetaDataOutput - - - - maia - _111_maiaInput - - - taskMetaData - _111_taskMetaDataInput - - - _111_actualTaskOutput - actualTask - - - _111_maiaOutput - maia - - - _111_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _112_maiaInput - _112_taskMetaDataInput - - - _112_actualTaskOutput - _112_maiaOutput - _112_taskMetaDataOutput - - - - maia - _112_maiaInput - - - taskMetaData - _112_taskMetaDataInput - - - _112_actualTaskOutput - actualTask - - - _112_maiaOutput - maia - - - _112_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncredito.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncredito.bpmn.svn-base deleted file mode 100644 index 3f06553..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncredito.bpmn.svn-base +++ /dev/null @@ -1,1136 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _28_maiaInput - _28_taskMetaDataInput - - - _28_actualTaskOutput - _28_maiaOutput - _28_taskMetaDataOutput - - - - maia - _28_maiaInput - - - taskMetaData - _28_taskMetaDataInput - - - _28_actualTaskOutput - actualTask - - - _28_maiaOutput - maia - - - _28_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _54_maiaInput - _54_taskMetaDataInput - - - _54_actualTaskOutput - _54_maiaOutput - _54_taskMetaDataOutput - - - - maia - _54_maiaInput - - - taskMetaData - _54_taskMetaDataInput - - - _54_actualTaskOutput - actualTask - - - _54_maiaOutput - maia - - - _54_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - return ((String)maia.get("RECEIVER")).compareTo("C")==0; - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - return ((String)maia.get("midbonus")).compareTo("N")==0; - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - return ((String)maia.get("midbonus")).compareTo("N")!=0; - - - - return ((String)maia.get("RECEIVER")).compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncreditonova.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncreditonova.bpmn.svn-base deleted file mode 100644 index 28493f9..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/aprobacioncreditonova.bpmn.svn-base +++ /dev/null @@ -1,728 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - return ((String)maia.get("RECEIVER")).compareTo("C")==0; - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - return ((String)maia.get("RECEIVER")).compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/basic.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/basic.bpmn.svn-base deleted file mode 100644 index eca0e92..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/basic.bpmn.svn-base +++ /dev/null @@ -1,163 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/basic1.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/basic1.bpmn.svn-base deleted file mode 100644 index c9909ea..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/basic1.bpmn.svn-base +++ /dev/null @@ -1,147 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/calificacion.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/calificacion.bpmn.svn-base deleted file mode 100644 index 586ee01..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/calificacion.bpmn.svn-base +++ /dev/null @@ -1,1790 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _69_maiaInput - _69_taskMetaDataInput - - - _69_actualTaskOutput - _69_maiaOutput - _69_taskMetaDataOutput - - - - maia - _69_maiaInput - - - taskMetaData - _69_taskMetaDataInput - - - _69_actualTaskOutput - actualTask - - - _69_maiaOutput - maia - - - _69_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - _71_maiaInput - _71_taskMetaDataInput - - - _71_actualTaskOutput - _71_maiaOutput - _71_taskMetaDataOutput - - - - maia - _71_maiaInput - - - taskMetaData - _71_taskMetaDataInput - - - _71_actualTaskOutput - actualTask - - - _71_maiaOutput - maia - - - _71_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _78_maiaInput - _78_taskMetaDataInput - - - _78_actualTaskOutput - _78_maiaOutput - _78_taskMetaDataOutput - - - - maia - _78_maiaInput - - - taskMetaData - _78_taskMetaDataInput - - - _78_actualTaskOutput - actualTask - - - _78_maiaOutput - maia - - - _78_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _72_maiaInput - _72_taskMetaDataInput - - - _72_actualTaskOutput - _72_maiaOutput - _72_taskMetaDataOutput - - - - maia - _72_maiaInput - - - taskMetaData - _72_taskMetaDataInput - - - _72_actualTaskOutput - actualTask - - - _72_maiaOutput - maia - - - _72_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - _16_maiaInput - _16_taskMetaDataInput - - - _16_actualTaskOutput - _16_maiaOutput - _16_taskMetaDataOutput - - - - maia - _16_maiaInput - - - taskMetaData - _16_taskMetaDataInput - - - _16_actualTaskOutput - actualTask - - - _16_maiaOutput - maia - - - _16_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _18_maiaInput - _18_taskMetaDataInput - - - _18_actualTaskOutput - _18_maiaOutput - _18_taskMetaDataOutput - - - - maia - _18_maiaInput - - - taskMetaData - _18_taskMetaDataInput - - - _18_actualTaskOutput - actualTask - - - _18_maiaOutput - maia - - - _18_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaData - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTask - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _22_maiaInput - _22_taskMetaDataInput - - - _22_actualTaskOutput - _22_maiaOutput - _22_taskMetaDataOutput - - - - maia - _22_maiaInput - - - taskMetaData - _22_taskMetaDataInput - - - _22_actualTaskOutput - actualTask - - - _22_maiaOutput - maia - - - _22_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _29_maiaInput - _29_taskMetaDataInput - - - _29_actualTaskOutput - _29_maiaOutput - _29_taskMetaDataOutput - - - - maia - _29_maiaInput - - - taskMetaData - _29_taskMetaDataInput - - - _29_actualTaskOutput - actualTask - - - _29_maiaOutput - maia - - - _29_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _28_maiaInput - _28_taskMetaDataInput - - - _28_actualTaskOutput - _28_maiaOutput - _28_taskMetaDataOutput - - - - maia - _28_maiaInput - - - taskMetaData - _28_taskMetaDataInput - - - _28_actualTaskOutput - actualTask - - - _28_maiaOutput - maia - - - _28_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _30_maiaInput - _30_taskMetaDataInput - - - _30_actualTaskOutput - _30_maiaOutput - _30_taskMetaDataOutput - - - - maia - _30_maiaInput - - - taskMetaData - _30_taskMetaDataInput - - - _30_actualTaskOutput - actualTask - - - _30_maiaOutput - maia - - - _30_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - _54_maiaInput - _54_taskMetaDataInput - - - _54_actualTaskOutput - _54_maiaOutput - _54_taskMetaDataOutput - - - - maia - _54_maiaInput - - - taskMetaData - _54_taskMetaDataInput - - - _54_actualTaskOutput - actualTask - - - _54_maiaOutput - maia - - - _54_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _57_maiaInput - _57_taskMetaDataInput - - - _57_actualTaskOutput - _57_maiaOutput - _57_taskMetaDataOutput - - - - maia - _57_maiaInput - - - taskMetaData - _57_taskMetaDataInput - - - _57_actualTaskOutput - actualTask - - - _57_maiaOutput - maia - - - _57_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - return ((String)maia.get("REQ_REC_OBS")).compareTo("Y")!=0; - - - - - - - - - - - - return ((String)maia.get("proyectoviable")).compareTo("N")==0; - - - return ((String)maia.get("proyectoviable")).compareTo("N")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - return ((String)maia.get("REQ_REC_OBS")).compareTo("Y")==0; - - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/calificacionnovacion.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/calificacionnovacion.bpmn.svn-base deleted file mode 100644 index 36e76ce..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/calificacionnovacion.bpmn.svn-base +++ /dev/null @@ -1,1033 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _69_maiaInput - _69_taskMetaDataInput - - - _69_actualTaskOutput - _69_maiaOutput - _69_taskMetaDataOutput - - - - maia - _69_maiaInput - - - taskMetaData - _69_taskMetaDataInput - - - _69_actualTaskOutput - actualTask - - - _69_maiaOutput - maia - - - _69_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _71_maiaInput - _71_taskMetaDataInput - - - _71_actualTaskOutput - _71_maiaOutput - _71_taskMetaDataOutput - - - - maia - _71_maiaInput - - - taskMetaData - _71_taskMetaDataInput - - - _71_actualTaskOutput - actualTask - - - _71_maiaOutput - maia - - - _71_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _78_maiaInput - _78_taskMetaDataInput - - - _78_actualTaskOutput - _78_maiaOutput - _78_taskMetaDataOutput - - - - maia - _78_maiaInput - - - taskMetaData - _78_taskMetaDataInput - - - _78_actualTaskOutput - actualTask - - - _78_maiaOutput - maia - - - _78_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _72_maiaInput - _72_taskMetaDataInput - - - _72_actualTaskOutput - _72_maiaOutput - _72_taskMetaDataOutput - - - - maia - _72_maiaInput - - - taskMetaData - _72_taskMetaDataInput - - - _72_actualTaskOutput - actualTask - - - _72_maiaOutput - maia - - - _72_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - _82_maiaInput - _82_taskMetaDataInput - - - _82_actualTaskOutput - _82_maiaOutput - _82_taskMetaDataOutput - - - - maia - _82_maiaInput - - - taskMetaData - _82_taskMetaDataInput - - - _82_actualTaskOutput - actualTask - - - _82_maiaOutput - maia - - - _82_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _29_maiaInput - _29_taskMetaDataInput - - - _29_actualTaskOutput - _29_maiaOutput - _29_taskMetaDataOutput - - - - maia - _29_maiaInput - - - taskMetaData - _29_taskMetaDataInput - - - _29_actualTaskOutput - actualTask - - - _29_maiaOutput - maia - - - _29_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _57_maiaInput - _57_taskMetaDataInput - - - _57_actualTaskOutput - _57_maiaOutput - _57_taskMetaDataOutput - - - - maia - _57_maiaInput - - - taskMetaData - _57_taskMetaDataInput - - - _57_actualTaskOutput - actualTask - - - _57_maiaOutput - maia - - - _57_taskMetaDataOutput - taskMetaData - - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - return ((String)maia.get("FINANCIALTYPE")).compareTo("R")==0; - - - - return ((String)maia.get("FINANCIALTYPE")).compareTo("F")==0; - - - - - - - - - - - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/casoprueba.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/casoprueba.bpmn.svn-base deleted file mode 100644 index f6b393a..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/casoprueba.bpmn.svn-base +++ /dev/null @@ -1,560 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _32_maiaInput - _32_taskMetaDataInput - - - _32_actualTaskOutput - _32_maiaOutput - _32_taskMetaDataOutput - - - - maia - _32_maiaInput - - - taskMetaData - _32_taskMetaDataInput - - - _32_actualTaskOutput - actualTask - - - _32_maiaOutput - maia - - - _32_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaDataVM - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTaskVM - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaDataVM - - - - - - - - - - - - - - - - - - - _25_maiaInput - _25_taskMetaDataInput - - - _25_actualTaskOutput - _25_maiaOutput - _25_taskMetaDataOutput - - - - maia - _25_maiaInput - - - taskMetaDataVT - _25_taskMetaDataInput - - - _25_actualTaskOutput - actualTaskVT - - - _25_maiaOutput - maia - - - _25_taskMetaDataOutput - taskMetaDataVT - - - - - - - - - - - - - - - - - - - _24_maiaInput - _24_taskMetaDataInput - - - _24_actualTaskOutput - _24_maiaOutput - _24_taskMetaDataOutput - - - - maia - _24_maiaInput - - - taskMetaDataVP - _24_taskMetaDataInput - - - _24_actualTaskOutput - actualTaskVP - - - _24_maiaOutput - maia - - - _24_taskMetaDataOutput - taskMetaDataVP - - - - - - - - - - - - - - - - - - - - - - - - _30_maiaInput - _30_taskMetaDataInput - - - _30_actualTaskOutput - _30_maiaOutput - _30_taskMetaDataOutput - - - - maia - _30_maiaInput - - - taskMetaData - _30_taskMetaDataInput - - - _30_actualTaskOutput - actualTask - - - _30_maiaOutput - maia - - - _30_taskMetaDataOutput - taskMetaData - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - return taskMetaDataVT.getResponse().compareTo("D")==0; - - - return taskMetaDataVP.getResponse().compareTo("D")==0; - - - return taskMetaDataVM.getResponse().compareTo("D")==0; - - - - - - - - return taskMetaDataVM.getResponse().compareTo("D")!=0; - - - return taskMetaDataVT.getResponse().compareTo("D")!=0; - - - return taskMetaDataVP.getResponse().compareTo("D")!=0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/constituciongarantias.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/constituciongarantias.bpmn.svn-base deleted file mode 100644 index 8e89899..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/constituciongarantias.bpmn.svn-base +++ /dev/null @@ -1,2074 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _134_maiaInput - _134_taskMetaDataInput - - - _134_actualTaskOutput - _134_maiaOutput - _134_taskMetaDataOutput - - - - maia - _134_maiaInput - - - taskMetaData - _134_taskMetaDataInput - - - _134_actualTaskOutput - actualTask - - - _134_maiaOutput - maia - - - _134_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _28_maiaInput - _28_taskMetaDataInput - - - _28_actualTaskOutput - _28_maiaOutput - _28_taskMetaDataOutput - - - - maia - _28_maiaInput - - - taskMetaData - _28_taskMetaDataInput - - - _28_actualTaskOutput - actualTask - - - _28_maiaOutput - maia - - - _28_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _54_maiaInput - _54_taskMetaDataInput - - - _54_actualTaskOutput - _54_maiaOutput - _54_taskMetaDataOutput - - - - maia - _54_maiaInput - - - taskMetaData - _54_taskMetaDataInput - - - _54_actualTaskOutput - actualTask - - - _54_maiaOutput - maia - - - _54_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _102_maiaInput - _102_taskMetaDataInput - - - _102_actualTaskOutput - _102_maiaOutput - _102_taskMetaDataOutput - - - - maia - _102_maiaInput - - - taskMetaData - _102_taskMetaDataInput - - - _102_actualTaskOutput - actualTask - - - _102_maiaOutput - maia - - - _102_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _100_maiaInput - _100_taskMetaDataInput - - - _100_actualTaskOutput - _100_maiaOutput - _100_taskMetaDataOutput - - - - maia - _100_maiaInput - - - taskMetaData - _100_taskMetaDataInput - - - _100_actualTaskOutput - actualTask - - - _100_maiaOutput - maia - - - _100_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _101_maiaInput - _101_taskMetaDataInput - - - _101_actualTaskOutput - _101_maiaOutput - _101_taskMetaDataOutput - - - - maia - _101_maiaInput - - - taskMetaData - _101_taskMetaDataInput - - - _101_actualTaskOutput - actualTask - - - _101_maiaOutput - maia - - - _101_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _99_maiaInput - _99_taskMetaDataInput - - - _99_actualTaskOutput - _99_maiaOutput - _99_taskMetaDataOutput - - - - maia - _99_maiaInput - - - taskMetaData - _99_taskMetaDataInput - - - _99_actualTaskOutput - actualTask - - - _99_maiaOutput - maia - - - _99_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _110_maiaInput - _110_taskMetaDataInput - - - _110_actualTaskOutput - _110_maiaOutput - _110_taskMetaDataOutput - - - - maia - _110_maiaInput - - - taskMetaData - _110_taskMetaDataInput - - - _110_actualTaskOutput - actualTask - - - _110_maiaOutput - maia - - - _110_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _111_maiaInput - _111_taskMetaDataInput - - - _111_actualTaskOutput - _111_maiaOutput - _111_taskMetaDataOutput - - - - maia - _111_maiaInput - - - taskMetaData - _111_taskMetaDataInput - - - _111_actualTaskOutput - actualTask - - - _111_maiaOutput - maia - - - _111_taskMetaDataOutput - taskMetaDat - - - - - - - - - - - - - - - - - - - _108_maiaInput - _108_taskMetaDataInput - - - _108_actualTaskOutput - _108_maiaOutput - _108_taskMetaDataOutput - - - - maia - _108_maiaInput - - - taskMetaData - _108_taskMetaDataInput - - - _108_actualTaskOutput - actualTask - - - _108_maiaOutput - maia - - - _108_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _109_maiaInput - _109_taskMetaDataInput - - - _109_actualTaskOutput - _109_maiaOutput - _109_taskMetaDataOutput - - - - maia - _109_maiaInput - - - taskMetaData - _109_taskMetaDataInput - - - _109_actualTaskOutput - actualTask - - - _109_maiaOutput - maia - - - _109_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _105_maiaInput - _105_taskMetaDataInput - - - _105_actualTaskOutput - _105_maiaOutput - _105_taskMetaDataOutput - - - - maia - _105_maiaInput - - - taskMetaData - _105_taskMetaDataInput - - - _105_actualTaskOutput - actualTask - - - _105_maiaOutput - maia - - - _105_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _117_maiaInput - _117_taskMetaDataInput - - - _117_actualTaskOutput - _117_maiaOutput - _117_taskMetaDataOutput - - - - maia - _117_maiaInput - - - taskMetaData - _117_taskMetaDataInput - - - _117_actualTaskOutput - actualTask - - - _117_maiaOutput - maia - - - _117_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _114_maiaInput - _114_taskMetaDataInput - - - _114_actualTaskOutput - _114_maiaOutput - _114_taskMetaDataOutput - - - - maia - _114_maiaInput - - - taskMetaData - _114_taskMetaDataInput - - - _114_actualTaskOutput - actualTask - - - _114_maiaOutput - maia - - - _114_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _112_maiaInput - _112_taskMetaDataInput - - - _112_actualTaskOutput - _112_maiaOutput - _112_taskMetaDataOutput - - - - maia - _112_maiaInput - - - taskMetaData - _112_taskMetaDataInput - - - _112_actualTaskOutput - actualTask - - - _112_maiaOutput - maia - - - _112_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _125_maiaInput - _125_taskMetaDataInput - - - _125_actualTaskOutput - _125_maiaOutput - _125_taskMetaDataOutput - - - - maia - _125_maiaInput - - - taskMetaData - _125_taskMetaDataInput - - - _125_actualTaskOutput - actualTask - - - _125_maiaOutput - maia - - - _125_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _123_maiaInput - _123_taskMetaDataInput - - - _123_actualTaskOutput - _123_maiaOutput - _123_taskMetaDataOutput - - - - maia - _123_maiaInput - - - taskMetaData - _123_taskMetaDataInput - - - _123_actualTaskOutput - actualTask - - - _123_maiaOutput - maia - - - _123_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _121_maiaInput - _121_taskMetaDataInput - - - _121_actualTaskOutput - _121_maiaOutput - _121_taskMetaDataOutput - - - - maia - _121_maiaInput - - - taskMetaData - _121_taskMetaDataInput - - - _121_actualTaskOutput - actualTask - - - _121_maiaOutput - maia - - - _121_taskMetaDataOutput - taskMetaData - - - - - - - - return ((String)maia.get("outlay")).compareTo("Y")==0; - - - - return ((String)maia.get("RECEIVER")).compareTo("C")==0; - - - return ((String)maia.get("tipogarantia")).compareTo("H")==0; - - - - - return ((String)maia.get("tipogarantia")).compareTo("H")==0; - - - return ((String)maia.get("tipograntia")).compareTo("H")!=0; - - - - return ((String)maia.get("outlay")).compareTo("N")==0; - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - - return ((String)maia.get("mantienegarantia")).compareTo("N")==0; - - - return ((String)maia.get("mantienegarantia")).compareTo("N")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - return ((String)maia.get("tipogarantia")).compareTo("H")!=0; - - - return ((String)maia.get("mantienegarantia")).compareTo("N")!=0; - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return ((String)maia.get("mantienegarantia")).compareTo("N")==0; - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - return ((String)maia.get("RECEIVER")).compareTo("C")!=0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/credit.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/credit.bpmn.svn-base deleted file mode 100644 index d69ddc9..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/credit.bpmn.svn-base +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - _5_countInput - _5_usuarioInput - _5_mInput - - - - - - maia.count - _5_countInput - - - maia.usuario - _5_usuarioInput - - - maia - _5_mInput - - - - - - - - - _6_countInput - _6_usuarioInput - _6_mInput - - - - - - maia.count - _6_countInput - - - maia.usuario - _6_usuarioInput - - - maia - _6_mInput - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return maia.get("teller.required")!=null; - - - - - - - - - - - return maia.get("teller.required")==null; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/flinal.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/flinal.bpmn.svn-base deleted file mode 100644 index 26eb22e..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/flinal.bpmn.svn-base +++ /dev/null @@ -1,140 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/flow5.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/flow5.bpmn.svn-base deleted file mode 100644 index 8cfe5c7..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/flow5.bpmn.svn-base +++ /dev/null @@ -1,195 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_CommentInput - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_TaskNameInput - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_ContentInput - - - - - - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_CommentInput - - Prueba - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_CommentInput - - - - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_TaskNameInput - - Prueba - - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_TaskNameInput - - - - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_ContentInput - - Esta es una tarea - _A6E2F6C3-A1D2-4D92-BADD-480A070A0975_ContentInput - - - - - #{m.userId} - - - - - - - - - - - - - - - - - _10_countInput - - - _10_iOutput - - - - count - _10_countInput - - - _10_iOutput - i - - - - - - - - - - - return resultado.compareTo("OK")==0; - - - - - - - return resultado.compareTo("NO")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/instrumnovacion.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/instrumnovacion.bpmn.svn-base deleted file mode 100644 index e494e77..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/instrumnovacion.bpmn.svn-base +++ /dev/null @@ -1,744 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - return ((String)maia.get("FINANCIALTYPE")).compareTo("F")==0; - - - - - - - - - return ((String)maia.get("FINANCIALTYPE")).compareTo("R")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientodefgar.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientodefgar.bpmn.svn-base deleted file mode 100644 index c3ccd90..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientodefgar.bpmn.svn-base +++ /dev/null @@ -1,753 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _85_maiaInput - _85_taskMetaDataInput - - - _85_actualTaskOutput - _85_maiaOutput - _85_taskMetaDataOutput - - - - maia - _85_maiaInput - - - taskMetaData - _85_taskMetaDataInput - - - _85_actualTaskOutput - actualTask - - - _85_maiaOutput - maia - - - _85_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientopargar.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientopargar.bpmn.svn-base deleted file mode 100644 index b87b973..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/levantamientopargar.bpmn.svn-base +++ /dev/null @@ -1,937 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - _76_maiaInput - _76_taskMetaDataInput - - - _76_actualTaskOutput - _76_maiaOutput - _76_taskMetaDataOutput - - - - maia - _76_maiaInput - - - taskMetaData - _76_taskMetaDataInput - - - _76_actualTaskOutput - actualTask - - - _76_maiaOutput - maia - - - _76_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _77_maiaInput - _77_taskMetaDataInput - - - _77_actualTaskOutput - _77_maiaOutput - _77_taskMetaDataOutput - - - - maia - _77_maiaInput - - - taskMetaData - _77_taskMetaDataInput - - - _77_actualTaskOutput - actualTask - - - _77_maiaOutput - maia - - - _77_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _73_maiaInput - _73_taskMetaDataInput - - - _73_actualTaskOutput - _73_maiaOutput - _73_taskMetaDataOutput - - - - maia - _73_maiaInput - - - taskMetaData - _73_taskMetaDataInput - - - _73_actualTaskOutput - actualTask - - - _73_maiaOutput - maia - - - _73_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _74_maiaInput - _74_taskMetaDataInput - - - _74_actualTaskOutput - _74_maiaOutput - _74_taskMetaDataOutput - - - - maia - _74_maiaInput - - - taskMetaData - _74_taskMetaDataInput - - - _74_actualTaskOutput - actualTask - - - _74_maiaOutput - maia - - - _74_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _53_maiaInput - _53_taskMetaDataInput - - - _53_actualTaskOutput - _53_maiaOutput - _53_taskMetaDataOutput - - - - maia - _53_maiaInput - - - taskMetaData - _53_taskMetaDataInput - - - _53_actualTaskOutput - actualTask - - - _53_maiaOutput - maia - - - _53_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _93_maiaInput - _93_taskMetaDataInput - - - _93_actualTaskOutput - _93_maiaOutput - _93_taskMetaDataOutput - - - - maia - _93_maiaInput - - - taskMetaData - _93_taskMetaDataInput - - - _93_actualTaskOutput - actualTask - - - _93_maiaOutput - maia - - - _93_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _95_maiaInput - _95_taskMetaDataInput - - - _95_actualTaskOutput - _95_maiaOutput - _95_taskMetaDataOutput - - - - maia - _95_maiaInput - - - taskMetaData - _95_taskMetaDataInput - - - _95_actualTaskOutput - actualTask - - - _95_maiaOutput - maia - - - _95_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _94_maiaInput - _94_taskMetaDataInput - - - _94_actualTaskOutput - _94_maiaOutput - _94_taskMetaDataOutput - - - - maia - _94_maiaInput - - - taskMetaData - _94_taskMetaDataInput - - - _94_actualTaskOutput - actualTask - - - _94_maiaOutput - maia - - - _94_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/mapaBEV.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/mapaBEV.bpmn.svn-base deleted file mode 100644 index 20d52f2..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/mapaBEV.bpmn.svn-base +++ /dev/null @@ -1,142 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - _2_tasksMetaDataInput - _2_maiaInput - - - _2_responseOutput - _2_tasksMetaDataOutput - _2_maiaOutput - - - - tasksMetaData - _2_tasksMetaDataInput - - - maia - _2_maiaInput - - - _2_responseOutput - response - - - _2_tasksMetaDataOutput - tasksMetaData - - - _2_maiaOutput - maia - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/matrizevaluacion.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/matrizevaluacion.bpmn.svn-base deleted file mode 100644 index bc7d19f..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/matrizevaluacion.bpmn.svn-base +++ /dev/null @@ -1,364 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaData - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTask - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _42_maiaInput - _42_taskMetaDataInput - - - _42_actualTaskOutput - _42_maiaOutput - _42_taskMetaDataOutput - - - - maia - _42_maiaInput - - - taskMetaData - _42_taskMetaDataInput - - - _42_actualTaskOutput - actualTask - - - _42_maiaOutput - maia - - - _42_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/n1.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/n1.bpmn.svn-base deleted file mode 100644 index 267b738..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/n1.bpmn.svn-base +++ /dev/null @@ -1,59 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/n2.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/n2.bpmn.svn-base deleted file mode 100644 index f161a5e..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/n2.bpmn.svn-base +++ /dev/null @@ -1,97 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return type.compareTo("N")==0; - - - return type.compareTo("N")!=0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/n3.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/n3.bpmn.svn-base deleted file mode 100644 index d806499..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/n3.bpmn.svn-base +++ /dev/null @@ -1,67 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/n4.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/n4.bpmn.svn-base deleted file mode 100644 index 570afc3..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/n4.bpmn.svn-base +++ /dev/null @@ -1,99 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/nomenclatura.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/nomenclatura.bpmn.svn-base deleted file mode 100644 index ded9f7c..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/nomenclatura.bpmn.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/precalificacion.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/precalificacion.bpmn.svn-base deleted file mode 100644 index b97a7c5..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/precalificacion.bpmn.svn-base +++ /dev/null @@ -1,1097 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - _16_maiaInput - _16_taskMetaDataInput - - - _16_actualTaskOutput - _16_maiaOutput - _16_taskMetaDataOutput - - - - maia - _16_maiaInput - - - taskMetaData - _16_taskMetaDataInput - - - _16_actualTaskOutput - actualTask - - - _16_maiaOutput - maia - - - _16_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - _18_tasksMetaDataInput - _18_maiaInput - - - _18_actualTaskOutput - _18_maiaOutput - _18_taskMetaDataOutput - - - - tasksMetaData - _18_tasksMetaDataInput - - - maia - _18_maiaInput - - - _18_actualTaskOutput - actualTask - - - _18_maiaOutput - maia - - - _18_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaData - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTask - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _22_maiaInput - _22_taskMetaDataInput - - - _22_actualTaskOutput - _22_maiaOutput - _22_taskMetaDataOutput - - - - maia - _22_maiaInput - - - taskMetaData - _22_taskMetaDataInput - - - _22_actualTaskOutput - actualTask - - - _22_maiaOutput - maia - - - _22_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - _29_maiaInput - _29_taskMetaDataInput - - - _29_actualTaskOutput - _29_maiaOutput - _29_taskMetaDataOutput - - - - maia - _29_maiaInput - - - taskMetaData - _29_taskMetaDataInput - - - _29_actualTaskOutput - actualTask - - - _29_maiaOutput - maia - - - _29_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _28_maiaInput - _28_taskMetaDataInput - - - _28_actualTaskOutput - _28_maiaOutput - _28_taskMetaDataOutput - - - - maia - _28_maiaInput - - - taskMetaData - _28_taskMetaDataInput - - - _28_actualTaskOutput - actualTask - - - _28_maiaOutput - maia - - - _28_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _30_maiaInput - _30_taskMetaDataInput - - - _30_actualTaskOutput - _30_maiaOutput - _30_taskMetaDataOutput - - - - maia - _30_maiaInput - - - taskMetaData - _30_taskMetaDataInput - - - _30_actualTaskOutput - actualTask - - - _30_maiaOutput - maia - - - _30_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - return ((String)maia.get("REQ_REC_OBS")).compareTo("Y")!=0; - - - - - - - - return ((String)maia.get("lettertype")).compareTo("O")==0; - - - return ((String)maia.get("lettertype")).compareTo("N")==0; - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - return ((String)maia.get("lettertype")).compareTo("O")==0; - - - - - return ((String)maia.get("midbonus")).compareTo("N")!=0; - - - return ((String)maia.get("lettertype")).compareTo("I")==0; - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - return ((String)maia.get("REQ_REV_OBS")).compareTo("Y")==0; - - - - - return ((String)maia.get("REQ_REV_OBS")).compareTo("Y")!=0; - - - - return ((String)maia.get("REQ_REC_OBS")).compareTo("Y")==0; - - - - - - - - - - - return ((String)maia.get("lettertype")).compareTo("O")!=0; - - - - return ((String)maia.get("midbonus")).compareTo("N")==0; - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/seguimientoycontrol.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/seguimientoycontrol.bpmn.svn-base deleted file mode 100644 index 97c6535..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/seguimientoycontrol.bpmn.svn-base +++ /dev/null @@ -1,1632 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _70_maiaInput - _70_taskMetaDataInput - - - _70_actualTaskOutput - _70_maiaOutput - _70_taskMetaDataOutput - - - - maia - _70_maiaInput - - - taskMetaData - _70_taskMetaDataInput - - - _70_actualTaskOutput - actualTask - - - _70_maiaOutput - maia - - - _70_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - - - _3_actualTaskOutput - _3_maiaOutput - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_actualTaskOutput - actualTask - - - _3_maiaOutput - maia - - - _3_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _71_maiaInput - _71_taskMetaDataInput - - - _71_actualTaskOutput - _71_maiaOutput - _71_taskMetaDataOutput - - - - maia - _71_maiaInput - - - taskMetaData - _71_taskMetaDataInput - - - _71_actualTaskOutput - actualTask - - - _71_maiaOutput - maia - - - _71_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _4_maiaInput - _4_taskMetaDataInput - - - _4_actualTaskOutput - _4_maiaOutput - _4_taskMetaDataOutput - - - - maia - _4_maiaInput - - - taskMetaData - _4_taskMetaDataInput - - - _4_actualTaskOutput - actualTask - - - _4_maiaOutput - maia - - - _4_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - _64_maiaInput - _64_taskMetaDataInput - - - _64_actualTaskOutput - _64_maiaOutput - _64_taskMetaDataOutput - - - - maia - _64_maiaInput - - - taskMetaData - _64_taskMetaDataInput - - - _64_actualTaskOutput - actualTask - - - _64_maiaOutput - maia - - - _64_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _65_maiaInput - _65_taskMetaDataInput - - - _65_actualTaskOutput - _65_maiaOutput - _65_taskMetaDataOutput - - - - maia - _65_maiaInput - - - taskMetaData - _65_taskMetaDataInput - - - _65_actualTaskOutput - actualTask - - - _65_maiaOutput - maia - - - _65_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _66_maiaInput - _66_taskMetaDataInput - - - _66_actualTaskOutput - _66_maiaOutput - _66_taskMetaDataOutput - - - - maia - _66_maiaInput - - - taskMetaData - _66_taskMetaDataInput - - - _66_actualTaskOutput - actualTask - - - _66_maiaOutput - maia - - - _66_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _10_maiaInput - _10_taskMetaDataInput - - - _10_actualTaskOutput - _10_maiaOutput - _10_taskMetaDataOutput - - - - maia - _10_maiaInput - - - taskMetaData - _10_taskMetaDataInput - - - _10_actualTaskOutput - actualTask - - - _10_maiaOutput - maia - - - _10_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _72_maiaInput - _72_taskMetaDataInput - - - _72_actualTaskOutput - _72_maiaOutput - _72_taskMetaDataOutput - - - - maia - _72_maiaInput - - - taskMetaData - _72_taskMetaDataInput - - - _72_actualTaskOutput - actualTask - - - _72_maiaOutput - maia - - - _72_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _12_maiaInput - _12_taskMetaDataInput - - - _12_actualTaskOutput - _12_maiaOutput - _12_taskMetaDataOutput - - - - maia - _12_maiaInput - - - taskMetaData - _12_taskMetaDataInput - - - _12_actualTaskOutput - actualTask - - - _12_maiaOutput - maia - - - _12_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - _75_maiaInput - _75_taskMetaDataInput - - - _75_actualTaskOutput - _75_maiaOutput - _75_taskMetaDataOutput - - - - maia - _75_maiaInput - - - taskMetaData - _75_taskMetaDataInput - - - _75_actualTaskOutput - actualTask - - - _75_maiaOutput - maia - - - _75_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _16_maiaInput - _16_taskMetaDataInput - - - _16_actualTaskOutput - _16_maiaOutput - _16_taskMetaDataOutput - - - - maia - _16_maiaInput - - - taskMetaData - _16_taskMetaDataInput - - - _16_actualTaskOutput - actualTask - - - _16_maiaOutput - maia - - - _16_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - _18_tasksMetaDataInput - _18_maiaInput - - - _18_actualTaskOutput - _18_maiaOutput - _18_taskMetaDataOutput - - - - tasksMetaData - _18_tasksMetaDataInput - - - maia - _18_maiaInput - - - _18_actualTaskOutput - actualTask - - - _18_maiaOutput - maia - - - _18_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - _23_maiaInput - _23_taskMetaDataInput - - - _23_actualTaskOutput - _23_maiaOutput - _23_taskMetaDataOutput - - - - maia - _23_maiaInput - - - taskMetaData - _23_taskMetaDataInput - - - _23_actualTaskOutput - actualTask - - - _23_maiaOutput - maia - - - _23_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _22_maiaInput - _22_taskMetaDataInput - - - _22_actualTaskOutput - _22_maiaOutput - _22_taskMetaDataOutput - - - - maia - _22_maiaInput - - - taskMetaData - _22_taskMetaDataInput - - - _22_actualTaskOutput - actualTask - - - _22_maiaOutput - maia - - - _22_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _29_maiaInput - _29_taskMetaDataInput - - - _29_actualTaskOutput - _29_maiaOutput - _29_taskMetaDataOutput - - - - maia - _29_maiaInput - - - taskMetaData - _29_taskMetaDataInput - - - _29_actualTaskOutput - actualTask - - - _29_maiaOutput - maia - - - _29_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _28_maiaInput - _28_taskMetaDataInput - - - _28_actualTaskOutput - _28_maiaOutput - _28_taskMetaDataOutput - - - - maia - _28_maiaInput - - - taskMetaData - _28_taskMetaDataInput - - - _28_actualTaskOutput - actualTask - - - _28_maiaOutput - maia - - - _28_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - _31_maiaInput - _31_taskMetaDataInput - - - _31_actualTaskOutput - _31_maiaOutput - _31_taskMetaDataOutput - - - - maia - _31_maiaInput - - - taskMetaData - _31_taskMetaDataInput - - - _31_actualTaskOutput - actualTask - - - _31_maiaOutput - maia - - - _31_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - _30_maiaInput - _30_taskMetaDataInput - - - _30_actualTaskOutput - _30_maiaOutput - _30_taskMetaDataOutput - - - - maia - _30_maiaInput - - - taskMetaData - _30_taskMetaDataInput - - - _30_actualTaskOutput - actualTask - - - _30_maiaOutput - maia - - - _30_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _52_maiaInput - _52_taskMetaDataInput - - - _52_actualTaskOutput - _52_maiaOutput - _52_taskMetaDataOutput - - - - maia - _52_maiaInput - - - taskMetaData - _52_taskMetaDataInput - - - _52_actualTaskOutput - actualTask - - - _52_maiaOutput - maia - - - _52_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - _60_maiaInput - _60_taskMetaDataInput - - - _60_actualTaskOutput - _60_maiaOutput - _60_taskMetaDataOutput - - - - maia - _60_maiaInput - - - taskMetaData - _60_taskMetaDataInput - - - _60_actualTaskOutput - actualTask - - - _60_maiaOutput - maia - - - _60_taskMetaDataOutput - taskMetaData - - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - return ((String)maia.get("CONSTRUCCION")).compareTo("Y")!=0; - - - - - return ((String)maia.get("NOVACIONOK")).compareTo("Y")==0; - - - - - - return ((String)maia.get("NOVACIONOK")).compareTo("N")==0; - - - - return ((String)maia.get("CALIFICA")).compareTo("N")==0; - - - return ((String)maia.get("PLAZOFIN")).compareTo("Y")!=0; - - - return ((String)maia.get("CONSTRUCCION")).compareTo("Y")==0; - - - return ((String)maia.get("DESVIACION")).compareTo("Y")==0; - - - return ((String)maia.get("RETRASO")).compareTo("Y")==0; - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - - - return taskMetaData.getResponse().compareTo("D")!=0; - - - - - - - - return ((String)maia.get("PLAZOFIN")).compareTo("Y")==0; - - - - - return ((String)maia.get("OBRACONCLUIDA")).compareTo("Y")==0; - - - return ((String)maia.get("DECISION")).compareTo("G")==0; - - - - - - - - return taskMetaData.getResponse().compareTo("D")==0; - - - return ((String)maia.get("DECISION")).compareTo("N")==0; - - - - - - - - - - - - return ((String)maia.get("DESVIACION")).compareTo("Y")!=0; - - - - - - - return ((String)maia.get("OBRACONCLUIDA")).compareTo("N")==0; - - - - - - - - return ((String)maia.get("CALIFICA")).compareTo("Y")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/taskasign.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/taskasign.bpmn.svn-base deleted file mode 100644 index 15eccd6..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/taskasign.bpmn.svn-base +++ /dev/null @@ -1,279 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - _3_SkippableInput - _3_TaskNameInput - _3_GroupIdInput - - - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_SkippableInput - - false - _3_SkippableInput - - - - _3_TaskNameInput - - #{maia.request.subject} - _3_TaskNameInput - - - - _3_GroupIdInput - - #{taskMetaData.groupId} - _3_GroupIdInput - - - - _3_taskMetaDataOutput - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return "A".equals(taskMetaData.getAction()); - - - - return !("A".equals(taskMetaData.getAction())); - - - return taskMetaData.getResponse().compareTo("R")!=0; - - - - return taskMetaData.getResponse().compareTo("R")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/test.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/test.bpmn.svn-base deleted file mode 100644 index 7d6dbef..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/test.bpmn.svn-base +++ /dev/null @@ -1,267 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _3_maiaInput - _3_taskMetaDataInput - _3_SkippableInput - _3_TaskNameInput - _3_GroupIdInput - - - _3_taskMetaDataOutput - - - - maia - _3_maiaInput - - - taskMetaData - _3_taskMetaDataInput - - - _3_SkippableInput - - false - _3_SkippableInput - - - - _3_TaskNameInput - - #{maia.request.subject} - _3_TaskNameInput - - - - _3_GroupIdInput - - #{taskMetaData.groupId} - _3_GroupIdInput - - - - _3_taskMetaDataOutput - taskMetaData - - - - #{taskMetaData.userId} - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - return "A".equals(taskMetaData.getAction()); - - - - return !("A".equals(taskMetaData.getAction())); - - - return taskMetaData.getResponse().compareTo("R")!=0; - - - - return taskMetaData.getResponse().compareTo("R")==0; - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/flows/flows/.svn/text-base/testwpa.bpmn.svn-base b/base/bpm/flows/src/flows/flows/.svn/text-base/testwpa.bpmn.svn-base deleted file mode 100644 index e17e776..0000000 --- a/base/bpm/flows/src/flows/flows/.svn/text-base/testwpa.bpmn.svn-base +++ /dev/null @@ -1,292 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - _17_maiaInput - _17_taskMetaDataInput - - - _17_actualTaskOutput - _17_maiaOutput - _17_taskMetaDataOutput - - - - maia - _17_maiaInput - - - taskMetaData - _17_taskMetaDataInput - - - _17_actualTaskOutput - actualTask - - - _17_maiaOutput - maia - - - _17_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - - - - _21_maiaInput - _21_taskMetaDataInput - - - _21_actualTaskOutput - _21_maiaOutput - _21_taskMetaDataOutput - - - - maia - _21_maiaInput - - - taskMetaData - _21_taskMetaDataInput - - - _21_actualTaskOutput - actualTask - - - _21_maiaOutput - maia - - - _21_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - - - - - - - - _5_maiaInput - _5_taskMetaDataInput - - - _5_actualTaskOutput - _5_maiaOutput - _5_taskMetaDataOutput - - - - maia - _5_maiaInput - - - taskMetaData - _5_taskMetaDataInput - - - _5_actualTaskOutput - actualTask - - - _5_maiaOutput - maia - - - _5_taskMetaDataOutput - taskMetaData - - - - - - - - - - - - - System.out.println("AAAAA"+maia); -return (((String)maia.get("transaction")).compareTo("23")==0); - - - - System.out.println("BBBBB"+maia); -return (((String)maia.get("transaction")).compareTo("21")==0); - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/base/bpm/flows/src/rules/.svn/entries b/base/bpm/flows/src/rules/.svn/entries deleted file mode 100644 index 9660435..0000000 --- a/base/bpm/flows/src/rules/.svn/entries +++ /dev/null @@ -1,117 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src/rules -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TEST1 -dir - -gf.xls -file - - - - -2022-07-28T03:40:46.933821Z -865ae85b003dd151e0eabeb8dc0f47a7 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -7680 - -ASIGNARCOMITE -dir - -VALIDAPLAZO -dir - -VALIDAPERSONA -dir - -VALIDATASA -dir - -ASIGNAROFICIAL -dir - -WPA.xls -file - - - - -2022-07-28T03:40:46.933821Z -b5ddbb0be429d39c4afb2f429bc9fd92 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -7680 - -VALIDAMONTO -dir - diff --git a/base/bpm/flows/src/rules/.svn/prop-base/WPA.xls.svn-base b/base/bpm/flows/src/rules/.svn/prop-base/WPA.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/flows/src/rules/.svn/prop-base/WPA.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/flows/src/rules/.svn/prop-base/gf.xls.svn-base b/base/bpm/flows/src/rules/.svn/prop-base/gf.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/flows/src/rules/.svn/prop-base/gf.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/flows/src/rules/.svn/text-base/WPA.xls.svn-base b/base/bpm/flows/src/rules/.svn/text-base/WPA.xls.svn-base deleted file mode 100644 index 7029a8f4e906af6d46ca9db21469f3794c8ba984..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 zcmeHMZERat8Gf&Qo!Uu1l71{DU6Z>sZIdQ*Kf>77E=$}r%{;9iN;3^XrSvwvF5a9t z*v{xs5iWFSNKD$8RAgGzP3nFyq%lAmKbS@;kQh=X5Ym2(U)_EnA^4F&5t`K2JkNWs z9oKW(6jh*2J|o)&idcT7Y%H-N1UF6=(w-;2xkI*Z_0@8-Y#0W}p-30=59% zKo4*)5CygZ+koxB4xktKJa8ZI1>k<*0pLMkC$I~62B##?^JHkh|Tf5qXPB0<}x7mD*}Al?&XPhllnLjl>>nwd>?nv`Ypq>Fm28 z|0+5twB%+S@@$^+mlwxVty=O6@hr8L{AZWH0Gm2&p6^O_?lyLqtLD2F;CmL}w=BR% zYVx9Ez^OQ#8+{CqRg?>_x+?x~HSf2}Oe7>$$)EJ)?K3Mlu0o}HQ%y}_J8X;nT-$a0 z$%Xh*IhFEQhsxzw^5IYL<#v_JuhQqFZcSx<1an6F>%@Y*QOMW7Y|qDhJ$*ZvxdwYy z)mxTNH8zRbVQYh#kDQy1NZCH~ypX?gy?jOa7VL=)*|f`)kDc&jlh4nWV{w>PP1(r?TM z)o;qzslPIBtG_D0ME%wIQ1Scnq3+vQmvO1oYo-6;9a9+u^6VJ@lZT&Y1c8~E8F+aq z6pB*lO`wcfnT31;zan@^AU?|ip%Q-#YI$0Mmcd$(N%PGjf3aAQ0^-F2@}k`0Y(aVx zMd_WL1rKSW03=X+q9A9^oWXG$PwL#p2c4F9bT@`Go$X& zl$ZUU*cdUEyl$y)H$#G}F3%p690ju)Y1VZc3+0(X5vn&ZMWOI+?$xEVj$3 z5{ixIlIh86DJY<7XAv06=G<;b5)20~R)t@$eb|0pIbWKo{TyFsIPQ z>rSCdG4hXL^zhu)q_dzAJzBUc(}u}&d&(cYq5w|>8c zuZ8u`+)lo&+-d!8LjGQLzv-A^_xt`=q#cvw z7)s(S4M>mGV>P^a1b>(MOTHzKBPA@~D8H4hfvjkpxn8`R_ahSzK=RT1j43D|#N>Q`QF6C0v7xD7QuPp0b)%u3ovFTJL~g zUW1WSoyon8)sgLO#xUa#x(29+gR4M)<@tWbQrVM6o)$Fnw#s9|sl2W7ShrLjhZSF*)@@df zZD~_kYUyB13EEtb6+S5UU?kd_Mk{ydI~}!H0?Cc=O&v=hxk=ydOq%V-s3CizLrVxF z&t@I1EIq7wHlcJ%v2Qw6Dgvo4z5lbU2&A^C{Y}h9jN_6qTE1J4S|)~hqVEJI7Q`K% z>%58Ch^_Kt?BA%)Q>HbbzODM6U}8bs_c?P+%tnlF3_rJ6R>^UnWDmb>^}ww9N3RU_ zCSD(W&q5un#g@OzL9R4&k02eZ%p5Jvd`JQxoZE)r3bE%pm5jYm)N4NG;V5`G zuu|Tvy+qe*q zb4*gVx)Z&6G(W7iHCSAoT`Q~|F^EXjT z22t|_UbqfGhbM2Iu}XsVvpt-DbXCbUqy1pxeu{;9Q{vT>TMSu``c2K|yO=yN2=O#T z7m`CVjrLFA)r)Wcar_q`p?yLohu5$)n1x-ZUq4s8#kPMpWM};%LwI#f%ed;`>3<+@ cO`iw;i}vqD-8sMh+u_}+{VU(!|KIih2SdIH82|tP diff --git a/base/bpm/flows/src/rules/.svn/text-base/gf.xls.svn-base b/base/bpm/flows/src/rules/.svn/text-base/gf.xls.svn-base deleted file mode 100644 index 094df63ae2ffa91ea9683bf5be59741e79a6f782..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 7680 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 diff --git a/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/entries b/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/entries deleted file mode 100644 index 4ee9394..0000000 --- a/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/flows/src/rules/VALIDAPERSONA -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -asign.xls -file - - - - -2022-07-28T03:40:46.895821Z -ddaeb5c1bdb550d690063392d1c395d4 -2014-09-11T06:03:34.339088Z -654 -jvaca -has-props - - - - - - - - - - - - - - - - - - - - -20992 - diff --git a/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/prop-base/asign.xls.svn-base b/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/prop-base/asign.xls.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/prop-base/asign.xls.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/text-base/asign.xls.svn-base b/base/bpm/flows/src/rules/VALIDAPERSONA/.svn/text-base/asign.xls.svn-base deleted file mode 100644 index 2987fc7f4a321849e9b11574477ed7dd96eb7422..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 20992 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 a=b`^#{M`R@p8h*gtk?gg-{1b<`u`2Ztox+^ diff --git a/base/bpm/simple/.svn/dir-prop-base b/base/bpm/simple/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/bpm/simple/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/bpm/simple/.svn/entries b/base/bpm/simple/.svn/entries deleted file mode 100644 index d195796..0000000 --- a/base/bpm/simple/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple -svn://172.17.26.185/COMACO - - - -2014-09-11T07:10:36.966828Z -671 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:46.470819Z -76af5adb7d2e55ad10731f25fcea27ae -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -766 - -.pmd -file - - - - -2022-07-28T03:40:46.470819Z -a9dbba58778935cb0547c1124c02ee10 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -19385 - diff --git a/base/bpm/simple/.svn/text-base/.pmd.svn-base b/base/bpm/simple/.svn/text-base/.pmd.svn-base deleted file mode 100644 index adb6f50..0000000 --- a/base/bpm/simple/.svn/text-base/.pmd.svn-base +++ /dev/null @@ -1,613 +0,0 @@ - - - false - .ruleset - - - LooseCoupling - Type Resolution Rules - - - CloneMethodMustImplementCloneable - Type Resolution Rules - - - UnusedImports - Type Resolution Rules - - - IfStmtsMustUseBraces - Braces Rules - - - WhileLoopsMustUseBraces - Braces Rules - - - IfElseStmtsMustUseBraces - Braces Rules - - - ForLoopsMustUseBraces - Braces Rules - - - UseSingleton - Design Rules - - - SimplifyBooleanReturns - Design Rules - - - SimplifyBooleanExpressions - Design Rules - - - SwitchStmtsShouldHaveDefault - Design Rules - - - AvoidDeeplyNestedIfStmts - Design Rules - - - SwitchDensity - Design Rules - - - AccessorClassGeneration - Design Rules - - - FinalFieldCouldBeStatic - Design Rules - - - CloseResource - Design Rules - - - NonStaticInitializer - Design Rules - - - DefaultLabelNotLastInSwitchStmt - Design Rules - - - NonCaseLabelInSwitchStatement - Design Rules - - - OptimizableToArrayCall - Design Rules - - - BadComparison - Design Rules - - - EqualsNull - Design Rules - - - InstantiationToGetClass - Design Rules - - - IdempotentOperations - Design Rules - - - AvoidProtectedFieldInFinalClass - Design Rules - - - MissingStaticMethodInNonInstantiatableClass - Design Rules - - - MissingBreakInSwitch - Design Rules - - - UseNotifyAllInsteadOfNotify - Design Rules - - - AvoidInstanceofChecksInCatchClause - Design Rules - - - AbstractClassWithoutAbstractMethod - Design Rules - - - SimplifyConditional - Design Rules - - - CompareObjectsWithEquals - Design Rules - - - PositionLiteralsFirstInComparisons - Design Rules - - - UnnecessaryLocalBeforeReturn - Design Rules - - - NonThreadSafeSingleton - Design Rules - - - UncommentedEmptyMethod - Design Rules - - - AvoidConstantsInterface - Design Rules - - - UnsynchronizedStaticDateFormatter - Design Rules - - - PreserveStackTrace - Design Rules - - - UseCollectionIsEmpty - Design Rules - - - ClassWithOnlyPrivateConstructorsShouldBeFinal - Design Rules - - - EmptyMethodInAbstractClassShouldBeAbstract - Design Rules - - - SingularField - Design Rules - - - ReturnEmptyArrayRatherThanNull - Design Rules - - - AbstractClassWithoutAnyMethod - Design Rules - - - TooFewBranchesForASwitchStatement - Design Rules - - - UnusedPrivateField - Unused Code Rules - - - UnusedLocalVariable - Unused Code Rules - - - UnusedPrivateMethod - Unused Code Rules - - - UnusedFormalParameter - Unused Code Rules - - - MoreThanOneLogger - Java Logging Rules - - - LoggerIsNotStaticFinal - Java Logging Rules - - - SystemPrintln - Java Logging Rules - - - AvoidPrintStackTrace - Java Logging Rules - - - AvoidDuplicateLiterals - String and StringBuffer Rules - - - StringToString - String and StringBuffer Rules - - - InefficientStringBuffering - String and StringBuffer Rules - - - UnnecessaryCaseChange - String and StringBuffer Rules - - - UseStringBufferLength - String and StringBuffer Rules - - - AppendCharacterWithChar - String and StringBuffer Rules - - - ConsecutiveLiteralAppends - String and StringBuffer Rules - - - UseIndexOfChar - String and StringBuffer Rules - - - InefficientEmptyStringCheck - String and StringBuffer Rules - - - InsufficientStringBufferDeclaration - String and StringBuffer Rules - - - UselessStringValueOf - String and StringBuffer Rules - - - StringBufferInstantiationWithChar - String and StringBuffer Rules - - - UseEqualsToCompareStrings - String and StringBuffer Rules - - - AvoidStringBufferField - String and StringBuffer Rules - - - ReplaceVectorWithList - Migration Rules - - - ReplaceHashtableWithMap - Migration Rules - - - ReplaceEnumerationWithIterator - Migration Rules - - - AvoidEnumAsIdentifier - Migration Rules - - - AvoidAssertAsIdentifier - Migration Rules - - - IntegerInstantiation - Migration Rules - - - ByteInstantiation - Migration Rules - - - ShortInstantiation - Migration Rules - - - LongInstantiation - Migration Rules - - - JUnit4TestShouldUseBeforeAnnotation - Migration Rules - - - JUnit4TestShouldUseAfterAnnotation - Migration Rules - - - JUnit4TestShouldUseTestAnnotation - Migration Rules - - - JUnit4SuitesShouldUseSuiteAnnotation - Migration Rules - - - JUnitUseExpected - Migration Rules - - - EmptyIfStmt - Basic Rules - - - EmptyWhileStmt - Basic Rules - - - EmptyTryBlock - Basic Rules - - - EmptyFinallyBlock - Basic Rules - - - EmptySwitchStatements - Basic Rules - - - JumbledIncrementer - Basic Rules - - - ForLoopShouldBeWhileLoop - Basic Rules - - - UnnecessaryConversionTemporary - Basic Rules - - - OverrideBothEqualsAndHashcode - Basic Rules - - - DoubleCheckedLocking - Basic Rules - - - ReturnFromFinallyBlock - Basic Rules - - - EmptySynchronizedBlock - Basic Rules - - - UnnecessaryReturn - Basic Rules - - - EmptyStaticInitializer - Basic Rules - - - UnconditionalIfStatement - Basic Rules - - - EmptyStatementNotInLoop - Basic Rules - - - BooleanInstantiation - Basic Rules - - - UnnecessaryFinalModifier - Basic Rules - - - CollapsibleIfStatements - Basic Rules - - - UselessOverridingMethod - Basic Rules - - - ClassCastExceptionWithToArray - Basic Rules - - - AvoidDecimalLiteralsInBigDecimalConstructor - Basic Rules - - - UselessOperationOnImmutable - Basic Rules - - - MisplacedNullCheck - Basic Rules - - - UnusedNullCheckInEquals - Basic Rules - - - AvoidThreadGroup - Basic Rules - - - BrokenNullCheck - Basic Rules - - - AvoidUsingOctalValues - Basic Rules - - - AvoidUsingHardCodedIP - Basic Rules - - - CheckResultSet - Basic Rules - - - AvoidMultipleUnaryOperators - Basic Rules - - - EmptyInitializer - Basic Rules - - - LooseCoupling - Type Resolution Rules - - - UnusedImports - Type Resolution Rules - - - UnnecessaryConstructor - Controversial Rules - - - UnusedModifier - Controversial Rules - - - AssignmentInOperand - Controversial Rules - - - AtLeastOneConstructor - Controversial Rules - - - DontImportSun - Controversial Rules - - - SuspiciousOctalEscape - Controversial Rules - - - DefaultPackage - Controversial Rules - - - BooleanInversion - Controversial Rules - - - AvoidFinalLocalVariable - Controversial Rules - - - AvoidUsingShortType - Controversial Rules - - - AvoidUsingVolatile - Controversial Rules - - - AvoidUsingNativeCode - Controversial Rules - - - AvoidAccessibilityAlteration - Controversial Rules - - - DoNotCallGarbageCollectionExplicitly - Controversial Rules - - - VariableNamingConventions - Naming Rules - - - MethodNamingConventions - Naming Rules - - - ClassNamingConventions - Naming Rules - - - AvoidDollarSigns - Naming Rules - - - MethodWithSameNameAsEnclosingClass - Naming Rules - - - SuspiciousHashcodeMethodName - Naming Rules - - - SuspiciousConstantFieldName - Naming Rules - - - SuspiciousEqualsMethodName - Naming Rules - - - AvoidFieldNameMatchingTypeName - Naming Rules - - - AvoidFieldNameMatchingMethodName - Naming Rules - - - NoPackage - Naming Rules - - - PackageCase - Naming Rules - - - MisleadingVariableName - Naming Rules - - - BooleanGetMethodName - Naming Rules - - - NPathComplexity - Code Size Rules - - - ExcessiveMethodLength - Code Size Rules - - - CyclomaticComplexity - Code Size Rules - - - NcssMethodCount - Code Size Rules - - - NcssTypeCount - Code Size Rules - - - NcssConstructorCount - Code Size Rules - - - CloneMethodMustImplementCloneable - Type Resolution Rules - - - false - true - diff --git a/base/bpm/simple/.svn/text-base/pom.xml.svn-base b/base/bpm/simple/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 49f94a0..0000000 --- a/base/bpm/simple/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,22 +0,0 @@ - - - - bpm - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.bpm - simple - fp Platform - Simple - destinado a ser llamado desde Guvnor - - - com.fp.base.dto - dto - ${project.version} - - - diff --git a/base/bpm/simple/src/.svn/entries b/base/bpm/simple/src/.svn/entries deleted file mode 100644 index 6201c51..0000000 --- a/base/bpm/simple/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/bpm/simple/src/main/.svn/entries b/base/bpm/simple/src/main/.svn/entries deleted file mode 100644 index 8181c23..0000000 --- a/base/bpm/simple/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/bpm/simple/src/main/java/.svn/entries b/base/bpm/simple/src/main/java/.svn/entries deleted file mode 100644 index 0ba06db..0000000 --- a/base/bpm/simple/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/bpm/simple/src/main/java/com/.svn/entries b/base/bpm/simple/src/main/java/com/.svn/entries deleted file mode 100644 index 70a1c17..0000000 --- a/base/bpm/simple/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/bpm/simple/src/main/java/com/fp/.svn/entries b/base/bpm/simple/src/main/java/com/fp/.svn/entries deleted file mode 100644 index f389328..0000000 --- a/base/bpm/simple/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -simple -dir - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/.svn/entries deleted file mode 100644 index 6aa4501..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -dto -dir - -flow -dir - -maia -dir - -action -dir - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/entries deleted file mode 100644 index b8ab0e1..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/action -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TaskAction.java -file - - - - -2022-07-28T03:40:46.413819Z -7ef474dc8ee4a9a908def632d1fed303 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -649 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/text-base/TaskAction.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/text-base/TaskAction.java.svn-base deleted file mode 100644 index 427aca3..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/action/.svn/text-base/TaskAction.java.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -package com.fp.simple.action; - -/** - * Accion a extender en las clases encargadas de obtener codigos de usuarios o grupos de responsables de ejecutar tareas - * de un flujo de trabajo. - * - * @version 2.1 - */ -public abstract class TaskAction { - - /** - * Metodo que se encarga de obtener el usaurio o grupo responsable de la ejecucion de una tarea, el usuario o grupo - * se tiene que fijar en el request. - * - * @param pParam Request con el que se ejecuta una transaccion al cual se asocia un usuario o grupo. - * @throws Exception - */ - public abstract void assignOwner(Object pParam) throws Exception; -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/entries deleted file mode 100644 index d30f5f5..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/entries +++ /dev/null @@ -1,167 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/dto -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -metadata -dir - -Responses.java -file - - - - -2022-07-28T03:40:46.381819Z -06f29a0b32ac0440504b08e5addaf3dc -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -1082 - -package-info.java -file - - - - -2022-07-28T03:40:46.381819Z -ad1a29df6ca6b98279817ba40b9248c5 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -89 - -Kind.java -file - - - - -2022-07-28T03:40:46.381819Z -6ad7843254ac3ec51c513736a5766e14 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -378 - -TaskInfo.java -file - - - - -2022-07-28T03:40:46.381819Z -21885844fc7c82461494cd5ab446f7eb -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -13066 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Kind.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Kind.java.svn-base deleted file mode 100644 index 7d6653b..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Kind.java.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -/* - * - */ -package com.fp.simple.dto; - -// TODO: Auto-generated Javadoc -/** - * Enum Kind encargada de definir el comportamiento de una Tarea dentro de la Agenda. - * - * @author gfiallos - */ -public enum Kind { - - /** Simplemente dar paso. */ - OK, - - /** Autorización requerida. */ - OK_NO, - - /** Autrización requerida con opción a revisión. */ - OK_NO_REVIEW; -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Responses.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Responses.java.svn-base deleted file mode 100644 index b5382d0..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/Responses.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -/* - * - */ -package com.fp.simple.dto; - -// TODO: Auto-generated Javadoc -/** - * Enum Responses encargada de. - * - * @author gfiallos - */ -public enum Responses { - - /** El valor de OK. */ - OK("A"), - /** El valor de NO. */ - NO("D"), - /** El valor de NO. */ - MOD("M"), - /** El valor de REVIEW. */ - REVIEW("R"); - - /** El valor de code. */ - private String code; - - /** - * Crea una nueva instancia de responses. - * - * @param pCode the code - */ - private Responses(String pCode) { - code = pCode; - } - - /** - * Entrega el valor de code. - * - * @return Valor de code - */ - public String getCode() { - return code; - } - - /** - * Find response. - * - * @param pCode the code - * @return responses - */ - public static Responses findResponse(String pCode) { - for (Responses resp : Responses.values()) { - if (resp.getCode().compareTo(pCode) == 0) { - return resp; - } - } - throw new RuntimeException(pCode + " NO SOPORTADO"); - } -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/TaskInfo.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/TaskInfo.java.svn-base deleted file mode 100644 index c3951cd..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/TaskInfo.java.svn-base +++ /dev/null @@ -1,599 +0,0 @@ -/* - * - */ -package com.fp.simple.dto; - -import java.io.Serializable; -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.util.HashMap; -import java.util.Map; -import java.util.Map.Entry; - -// TODO: Auto-generated Javadoc -/** - * Class TaskInfo encargada de. - * - * @author gfiallos - */ -public class TaskInfo implements Serializable { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de action. */ - private String action; - - /** El valor de aditional data. */ - private Map aditionalData = new HashMap(); - - /** El valor de company. */ - private Integer company; - - /** El valor de completed. */ - private Timestamp completed; - - /** El valor de created. */ - private Timestamp created; - - /** El valor de expected time. */ - private long expectedTime; - - /** El valor de group id. */ - private String groupId; - - /** El valor de journal id. */ - private String journalId; - - /** El valor de module. */ - private String module; - - /** El valor de response. */ - private String response; - - /** El valor de rule code. */ - private String ruleCode; - - /** El valor de rule code default. */ - private String ruleCodeDefault; - - /** El valor de started. */ - private Timestamp started; - - /** El valor de task id. */ - private long taskId; - - /** Nombre de la tarea. */ - private String tname; - - /** El valor de transaction. */ - private Integer transaction; - - /** El valor de user id. */ - private String userId; - - /** El valor de version. */ - private Integer version; - - /** El valor de internal code. */ - private Object internalCode; - - /** - * Paquete clase a ejecutar, se utiliza para obtener el codigo de usuario o grupo responsable de ejecutar uana tarea - */ - private String classCode; - - /** - * Codigo de mensaje asociado a la tarea se utiliza para presentar en el agenda del usuario. - */ - private Integer messageCode; - - /** - * Entrega el valor de internalCode. - * - * @return Valor de internalCode - */ - public Object getInternalCode() { - return internalCode; - } - - /** - * Fija un nuevo valor en internalCode. - * - * @param pInternalCode nuevo valor para internalCode - */ - public void setInternalCode(Object pInternalCode) { - internalCode = pInternalCode; - } - - /** El valor de kind. */ - private Kind kind; - - /** - * Entrega el valor de kind. - * - * @return Valor de kind - */ - public Kind getKind() { - return kind; - } - - /** - * Fija un nuevo valor en kind. - * - * @param pKind nuevo valor para kind - */ - public void setKind(Kind pKind) { - kind = pKind; - } - - /** - * Obtiene el valor de action. - * - * @return Valor de action - */ - public String getAction() { - return action; - } - - /** - * Entrega el valor de aditionalData. - * - * @return Valor de aditionalData - */ - public Map getAditionalData() { - return aditionalData; - } - - /** - * Entrega el valor de company. - * - * @return Valor de company - */ - public Integer getCompany() { - return company; - } - - /** - * Entrega el valor de completed. - * - * @return Valor de completed - */ - public Timestamp getCompleted() { - return completed; - } - - /** - * Entrega el valor de created. - * - * @return Valor de created - */ - public Timestamp getCreated() { - return created; - } - - /** - * Entrega el valor de spectedTime. - * - * @return Valor de spectedTime - */ - public long getExpectedTime() { - return expectedTime; - } - - /** - * Obtiene el valor de group id. - * - * @return Valor de group id - */ - public String getGroupId() { - return groupId; - } - - /** - * Entrega el valor de journalId. - * - * @return Valor de journalId - */ - public String getJournalId() { - return journalId; - } - - /** - * Entrega el valor de module. - * - * @return Valor de module - */ - public String getModule() { - return module; - } - - /** - * Obtiene el valor de response. - * - * @return Valor de response - */ - public String getResponse() { - return response; - } - - /** - * Entrega el valor de ruleCode. - * - * @return Valor de ruleCode - */ - public String getRuleCode() { - return ruleCode; - } - - /** - * Entrega el valor de ruleCodeDefault. - * - * @return Valor de ruleCodeDefault - */ - public String getRuleCodeDefault() { - return ruleCodeDefault; - } - - /** - * Entrega el valor de started. - * - * @return Valor de started - */ - public Timestamp getStarted() { - return started; - } - - /** - * Entrega el valor de taskId. - * - * @return Valor de taskId - */ - public long getTaskId() { - return taskId; - } - - /** - * Entrega el valor de transaction. - * - * @return Valor de transaction - */ - public Integer getTransaction() { - return transaction; - } - - /** - * Obtiene el valor de user id. - * - * @return Valor de user id - */ - public String getUserId() { - return userId; - } - - /** - * Entrega el valor de version. - * - * @return Valor de version - */ - public Integer getVersion() { - return version; - } - - /** - * Fija el valor de action. - * - * @param pAction the new el valor de action - */ - public void setAction(String pAction) { - action = pAction; - } - - /** - * Fija un nuevo valor en aditionalData. - * - * @param pAditionalData the new el valor de aditional data - */ - public void setAditionalData(Map pAditionalData) { - aditionalData = pAditionalData; - } - - /** - * Fija un nuevo valor en company. - * - * @param pCompany the new el valor de company - */ - public void setCompany(Integer pCompany) { - company = pCompany; - } - - /** - * Fija un nuevo valor en completed. - * - * @param pCompleted the new el valor de completed - */ - public void setCompleted(Timestamp pCompleted) { - completed = pCompleted; - } - - /** - * Fija un nuevo valor en created. - * - * @param pCreated the new el valor de created - */ - public void setCreated(Timestamp pCreated) { - created = pCreated; - } - - /** - * Fija un nuevo valor en spectedTime. - * - * @param pSpectedTime the new el valor de expected time - */ - public void setExpectedTime(long pSpectedTime) { - expectedTime = pSpectedTime; - } - - /** - * Fija el valor de group id. - * - * @param pGroupId the new el valor de group id - */ - public void setGroupId(String pGroupId) { - groupId = pGroupId; - } - - /** - * Fija un nuevo valor en journalId. - * - * @param pJournalId the new el valor de journal id - */ - public void setJournalId(String pJournalId) { - journalId = pJournalId; - } - - /** - * Fija un nuevo valor en module - * - * @param pModule nuevo valor para module - */ - public void setModule(String pModule) { - module = pModule; - } - - /** - * Fija el valor de response. - * - * @param pResponse the new el valor de response - */ - public void setResponse(String pResponse) { - response = pResponse; - } - - /** - * Fija un nuevo valor en ruleCode. - * - * @param pRuleCode the new el valor de rule code - */ - public void setRuleCode(String pRuleCode) { - ruleCode = pRuleCode; - } - - /** - * Fija un nuevo valor en ruleCodeDefault. - * - * @param pRuleCodeDefault the new el valor de rule code default - */ - public void setRuleCodeDefault(String pRuleCodeDefault) { - ruleCodeDefault = pRuleCodeDefault; - } - - /** - * Fija un nuevo valor en started. - * - * @param pStarted the new el valor de started - */ - public void setStarted(Timestamp pStarted) { - started = pStarted; - } - - /** - * Fija un nuevo valor en taskId. - * - * @param pTaskId the new el valor de task id - */ - public void setTaskId(long pTaskId) { - taskId = pTaskId; - } - - /** - * Entrega el valor de: tname - * - * @return String - */ - public String getTname() { - return tname; - } - - /** - * Fija el valor de: tname - * - * @param tname - */ - public void setTname(String tname) { - this.tname = tname; - } - - /** - * Fija un nuevo valor en transaction. - * - * @param pTransaction the new el valor de transaction - */ - public void setTransaction(Integer pTransaction) { - transaction = pTransaction; - } - - /** - * Fija el valor de user id. - * - * @param pUserId the new el valor de user id - */ - public void setUserId(String pUserId) { - userId = pUserId; - } - - /** - * Fija un nuevo valor en version. - * - * @param pVersion the new el valor de version - */ - public void setVersion(Integer pVersion) { - version = pVersion; - } - - /** - * Obtiene el valor de real time. - * - * @param pTime the time - * @return Valor de real time - * @throws Exception la exception - */ - public long getRealTime(long pTime) throws Exception { - if (created == null) { - return 0L; - } - long lcreated = created.getTime(); - long lcompleted = lcreated; - if (completed != null) { - - lcompleted = completed.getTime(); - } else { - lcompleted = pTime; // System.currentTimeMillis(); - } - return lcompleted - lcreated; - } - - /** - * Obtiene el valor de real time. - * - * @return Valor de real time - * @throws Exception la exception - */ - public long getRealTime() throws Exception { - if (created == null) { - return 0L; - } - long lcreated = created.getTime(); - long lcompleted = lcreated; - if (completed != null) { - - lcompleted = completed.getTime(); - } else { - lcompleted = System.currentTimeMillis(); - } - return lcompleted - lcreated; - } - - /** - * Convert. - * - * @param pTime the time - * @return string - * @throws Exception la exception - */ - protected String convert(Long pTime) throws Exception { - DecimalFormat df = new DecimalFormat("00"); - return df.format(Double.valueOf(pTime / 60000).intValue()) + ":" + df.format(pTime % 60); - } - - /** - * Obtiene el valor de real time string. - * - * @param pTime the time - * @return Valor de real time string - * @throws Exception la exception - */ - public String getRealTimeString(long pTime) throws Exception { - return this.convert(this.getRealTime(pTime)); - } - - /** - * Obtiene el valor de real time string. - * - * @return Valor de real time string - * @throws Exception la exception - */ - public String getRealTimeString() throws Exception { - return this.convert(this.getRealTime()); - } - - /** - * Obtiene el valor de expected time string. - * - * @return Valor de expected time string - * @throws Exception la exception - */ - public String getExpectedTimeString() throws Exception { - return this.convert(this.getExpectedTime()); - } - - /** - * Entrega el valor de: classCode - * - * @return String - */ - public String getClassCode() { - return classCode; - } - - /** - * Fija el valor de: classCode - * - * @param classCode - */ - public void setClassCode(String classCode) { - this.classCode = classCode; - } - - /** - * Entrega el valor de: messageCode - * - * @return Integer - */ - public Integer getMessageCode() { - return messageCode; - } - - /** - * Fija el valor de: messageCode - * - * @param messageCode - */ - public void setMessageCode(Integer messageCode) { - this.messageCode = messageCode; - } - - /** - * Update data. - * - * @param pData the data - */ - public void updateData(Map pData) { - for (Entry e : aditionalData.entrySet()) { - pData.put("" + e.getKey(), e.getValue()); - } - } - - /** - * To string. - * - * @return string - */ - @Override - public String toString() { - return "TaskInfo [taskid=" + taskId + ", tname=" + tname + ", action=" + action + ", aditionalData=" + aditionalData + ", module=" + module - + ", response=" + response + ", ruleCode=" + ruleCode + ", expectedTime=" + expectedTime + ", transaction=" + transaction - + ", userId=" + userId + ", version=" + version + "]"; - } - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/package-info.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 19f37ad..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases de transporte de datos de Tareas. - */ -package com.fp.simple.dto; \ No newline at end of file diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/entries deleted file mode 100644 index 5673867..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ProcessInstanceMeta.java -file - - - - -2022-07-28T03:40:46.374819Z -a67f2768fff108016fa90c410114d009 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -6980 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/text-base/ProcessInstanceMeta.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/text-base/ProcessInstanceMeta.java.svn-base deleted file mode 100644 index 85b3d92..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/dto/metadata/.svn/text-base/ProcessInstanceMeta.java.svn-base +++ /dev/null @@ -1,327 +0,0 @@ -package com.fp.simple.dto.metadata; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import com.fp.dto.AbstractDataTransport; - -/** - * Class ProcessInstanceMeta encargada de. - * - * @author gfiallos - */ -public class ProcessInstanceMeta extends AbstractDataTransport { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** El valor de activity. */ - private String activity; - - /** El valor de h. */ - private Integer h; - - /** El valor de name. */ - private String name; - - /** El valor de pMetaId. */ - private Long pmetaid; - - /** El valor de pid. */ - private long pid; - - /** El valor de sub. */ - private List sub = new ArrayList(); - - /** El valor de type. */ - private String type; - - /** El valor de variables. */ - private Map variables = new HashMap(); - - /** El valor de version. */ - private String version; - - /** El valor de w. */ - private Integer w; - - /** El valor de work item. */ - private long workItem; - - /** El valor de x. */ - private Integer x; - - /** El valor de y. */ - private Integer y; - - /** - * Crea una nueva instancia de process instance meta. - * - * @param pPID the pID - */ - public ProcessInstanceMeta(long pPID) { - this.pid = pPID; - } - - /** - * Clona la entidad TgeneAccount - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - ProcessInstanceMeta p = (ProcessInstanceMeta) this.clone(); - return p; - } - - /** - * Adiciona un sub process. - * - * @param pSub the sub - */ - public void addSubProcess(ProcessInstanceMeta pSub) { - this.sub.add(pSub); - } - - /** - * Entrega el valor de activity. - * - * @return Valor de activity - */ - public String getActivity() { - return this.activity; - } - - /** - * Entrega el valor de h. - * - * @return Valor de h - */ - public Integer getH() { - return this.h; - } - - /** - * Entrega el valor de name. - * - * @return Valor de name - */ - public String getName() { - return this.name; - } - - - /** - * Entrega el valor de: pmetaid - * @return Long - */ - public Long getPmetaid() { - return this.pmetaid; - } - - /** - * Fija el valor de: pmetaid - * @param pmetaid Valor a fijar en el atributo - */ - public void setPmetaid(Long pmetaid) { - this.pmetaid = pmetaid; - } - - /** - * Entrega el valor de pid. - * - * @return Valor de pid - */ - public long getPid() { - return this.pid; - } - - /** - * Entrega el valor de sub. - * - * @return Valor de sub - */ - public List getSub() { - return this.sub; - } - - /** - * Entrega el valor de type. - * - * @return Valor de type - */ - public String getType() { - return this.type; - } - - /** - * Entrega el valor de variables. - * - * @return Valor de variables - */ - public Map getVariables() { - return this.variables; - } - - /** - * Entrega el valor de version. - * - * @return Valor de version - */ - public String getVersion() { - return this.version; - } - - /** - * Entrega el valor de w. - * - * @return Valor de w - */ - public Integer getW() { - return this.w; - } - - /** - * Entrega el valor de workItem. - * - * @return Valor de workItem - */ - public long getWorkItem() { - return this.workItem; - } - - /** - * Entrega el valor de x. - * - * @return Valor de x - */ - public Integer getX() { - return this.x; - } - - /** - * Entrega el valor de y. - * - * @return Valor de y - */ - public Integer getY() { - return this.y; - } - - /** - * Fija un nuevo valor en activity. - * - * @param pActivity the new el valor de activity - */ - public void setActivity(String pActivity) { - this.activity = pActivity; - } - - /** - * Fija un nuevo valor en h. - * - * @param pH es el valor nuevo de h - */ - public void setH(Integer pH) { - this.h = pH; - } - - /** - * Fija un nuevo valor en name. - * - * @param pName es el valor nuevo de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Fija un nuevo valor en type. - * - * @param pType es el valor nuevo de type - */ - public void setType(String pType) { - this.type = pType; - } - - /** - * Fija un nuevo valor en version. - * - * @param pVersion the new el valor de version - */ - public void setVersion(String pVersion) { - this.version = pVersion; - } - - /** - * Fija un nuevo valor en w. - * - * @param pW es el valor nuevo de w - */ - public void setW(Integer pW) { - this.w = pW; - } - - /** - * Fija un nuevo valor en workItem. - * - * @param pWorkItem the new el valor de work item - */ - public void setWorkItem(long pWorkItem) { - this.workItem = pWorkItem; - } - - /** - * Fija un nuevo valor en x. - * - * @param pX the new el valor de x - */ - public void setX(Integer pX) { - this.x = pX; - } - - /** - * Fija un nuevo valor en y. - * - * @param pY the new el valor de y - */ - public void setY(Integer pY) { - this.y = pY; - } - - /** - * To string. - * - * @return string - */ - @Override - public String toString() { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - pw.printf("[%s-%s(%s)-%s] (%d,%d) [%d,%d]", this.name, this.version, this.activity, this.pid, this.x, this.y, this.w, this.h); - if (!this.variables.isEmpty()) { - pw.println(); - pw.println("vars:"); - for (Entry var : this.variables.entrySet()) { - pw.println(); - pw.printf("%s=%s", var.getKey(), var.getValue()); - } - } - if (this.workItem != 0) { - pw.println(); - pw.printf("WorkItem %s", this.workItem); - } - for (ProcessInstanceMeta pim : this.sub) { - pw.println(); - pw.printf("%s", pim); - } - pw.close(); - return sw.toString(); - } - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/entries deleted file mode 100644 index 140cb31..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/flow -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Asign.java -file - - - - -2022-07-28T03:40:46.391819Z -e41f3c11fb21b0bdd3de9dd5141199ea -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -605 - -package-info.java -file - - - - -2022-07-28T03:40:46.392819Z -adc209f376a74f6a73cfd47fdb90c399 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -91 - -DataMap.java -file - - - - -2022-07-28T03:40:46.392819Z -4f2f6ca62c8faa6555fbe1bd46cfde4f -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -800 - -FlowClass.java -file - - - - -2022-07-28T03:40:46.392819Z -027fda38790ac667fad75658af0825eb -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -292 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/Asign.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/Asign.java.svn-base deleted file mode 100644 index 227766c..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/Asign.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -/* - * - */ -package com.fp.simple.flow; - -import java.io.Serializable; - -import com.fp.dto.Request; - -// TODO: Auto-generated Javadoc -/** - * Interface Asign encargada de. - * - * @author gfiallos - */ -public interface Asign extends Serializable { - - /** - * Obtiene el valor de id. - * - * @return Valor de id - */ - String getId(); - - /** - * Verfica si el group. - * - * @return true, Si es group - */ - boolean isGroup(); - - /** - * Fija el valor de request. - * - * @param pRequest es el valor nuevo de request - */ - void setRequest(Request pRequest); - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/DataMap.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/DataMap.java.svn-base deleted file mode 100644 index 80fb8a6..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/DataMap.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -/* - * - */ -package com.fp.simple.flow; - -import java.io.Serializable; -import java.util.HashMap; - -// TODO: Auto-generated Javadoc -/** - * Class DataMap encargada de. - * - * @author gfiallos - */ -public class DataMap extends HashMap implements Serializable { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Obtiene el valor de. - * - * @param pKey the key - * @return object - */ - @Override - public Object get(Object pKey) { - Object val = super.get(pKey); - String key = (String) pKey; - if ((val == null) && (key.compareTo("userId") != 0) && (key.compareTo("groupId") != 0)) { - throw new RuntimeException("NO SE HA ENCONTRADO LA VARIABLE " + pKey); - } - return val; - } - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/FlowClass.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/FlowClass.java.svn-base deleted file mode 100644 index b37bef8..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/FlowClass.java.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -/* - * - */ -package com.fp.simple.flow; - -// TODO: Auto-generated Javadoc -/** - * Interface FlowClass encargada de. - * - * @author gfiallos - */ -public interface FlowClass { - - /** - * Process. - * - * @throws Exception la exception - */ - void process() throws Exception; -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/package-info.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 1bbceed..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/flow/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee las clases de transporte de datos para Tareas - */ -package com.fp.simple.flow; \ No newline at end of file diff --git a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/entries deleted file mode 100644 index 6c8a0e9..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/maia -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MailRecipientGroup.java -file - - - - -2022-07-28T03:40:46.406819Z -eafb1a69350cad0cdf50d01ca7081125 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -701 - -MailRecipient.java -file - - - - -2022-07-28T03:40:46.406819Z -52544403804740cde85114f44172a825 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -576 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipient.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipient.java.svn-base deleted file mode 100644 index 3094417..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipient.java.svn-base +++ /dev/null @@ -1,21 +0,0 @@ -package com.fp.simple.maia; - -import java.util.Map; - -/** - * Clase a extender en las clases encargadas de obtener direcciones email a las cuales se enva notificaciones de flujos - * de trabajo.. - * - * @version 2.1 - */ -public abstract class MailRecipient { - - /** - * Metodo que busca y entraga direcciones email a las cuales se envia notificaciones. - * - * @param pParam Request con el que se ejecuta una transaccion. - * @throws Exception - */ - public abstract Map getEmailAddress(Object pParam) throws Exception; - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipientGroup.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipientGroup.java.svn-base deleted file mode 100644 index 76fb7c6..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/maia/.svn/text-base/MailRecipientGroup.java.svn-base +++ /dev/null @@ -1,21 +0,0 @@ -package com.fp.simple.maia; - -import java.util.Map; - -/** - * Accion a extender en las clases encargadas de obtener direcciones email asociadas a un grupo bpm, el email puede - * estar en un esquemas de terceros en este caso la clase respectiva es la que se encarga de obtener la lista de emails. - * - * @version 2.1 - */ -public abstract class MailRecipientGroup { - - /** - * Metodo que busca y entraga direcciones email a las cuales se envia notificaciones . - * - * @param pParam Request con el que se ejecuta una transaccion. - * @throws Exception - */ - public abstract Map getEmailAddress(Object pParam, String pGroupCode) throws Exception; - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/entries b/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/entries deleted file mode 100644 index ee66190..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/bpm/simple/src/main/java/com/fp/simple/test -svn://172.17.26.185/COMACO - - - -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RequestTester.java -file - - - - -2022-07-28T03:40:46.362819Z -3761ec6f3f284b693e24c79f9bb0a780 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2743 - -package-info.java -file - - - - -2022-07-28T03:40:46.362819Z -0b3f51dd0d9676474cf5aa5553aef732 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -91 - -RuleTester.java -file - - - - -2022-07-28T03:40:46.362819Z -0dc993d0d204e07bef0f33347a9e69a6 -2014-09-11T06:03:34.339088Z -654 -jvaca - - - - - - - - - - - - - - - - - - - - - -2401 - diff --git a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RequestTester.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RequestTester.java.svn-base deleted file mode 100644 index 9c3acfe..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RequestTester.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -/* - * - */ -package com.fp.simple.test; - -import java.math.BigDecimal; - -import com.fp.dto.Response; -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class RequestTester encargada de. - * - * @author gfiallos - */ -public class RequestTester extends SaveRequest { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - - /** - * Crea una nueva instancia de request tester. - */ - public RequestTester() { - super.setResponse(new Response(Response.RESPONSE_OK, "")); - } - - /** - * Change branch. - * - * @param pBranch the branch - */ - public void changeBranch(Integer pBranch) { - this.setBranchCode(pBranch); - } - - /** - * Change officer. - * - * @param pOfficer the officer - */ - public void changeOfficer(String pOfficer) { - this.put("officer", pOfficer); - } - - /** - * Change ammount. - * - * @param pAmount the amount - */ - public void changeAmmount(BigDecimal pAmount) { - this.put("amount", pAmount); - } - - /** - * Change rate. - * - * @param pRate the rate - */ - public void changeRate(BigDecimal pRate) { - this.put("rate", pRate); - } - - /** - * Change term. - * - * @param pTerm the term - */ - public void changeTerm(Integer pTerm) { - this.put("term", pTerm); - } - - /** - * Obtiene el valor de action. - * - * @return Valor de action - */ - public String getAction() { - return (String) super.get("action"); - } - - /** - * Obtiene el valor de internal code. - * - * @return Valor de internal code - */ - public String getInternalCode() { - return (String) super.get("internalCode"); - - } - - /** - * Obtiene el valor de group id. - * - * @return Valor de group id - */ - public String getGroupId() { - return (String) super.get("groupId"); - - } - - /** - * Obtiene el valor de user id. - * - * @return Valor de user id - */ - public String getUserId() { - return (String) super.get("userId"); - } - - /** - * Change value. - * - * @param pValue the value - */ - public void changeValue(String pValue) { - String[] val = pValue.split(","); - this.put(val[0], val[1]); - } - - /** - * Adiciona un rule parameter value. - * - * @param pValue the value - */ - public void addRuleParameterValue(String pValue) { - String[] val = pValue.split(","); - this.addRuleParameter(val[0], val[1]); - } - - /** - * Obtiene el valor de rule data. - * - * @return Valor de rule data - */ - public String getRuleData() { - return "" + this.ruleParameters; - } - -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RuleTester.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RuleTester.java.svn-base deleted file mode 100644 index 4fdab5e..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/RuleTester.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -/* - * - */ -package com.fp.simple.test; - -import java.math.BigDecimal; -import java.util.HashMap; - -import com.fp.dto.save.SaveRequest; - -// TODO: Auto-generated Javadoc -/** - * Class RuleTester encargada de. - * - * @author gfiallos - */ -public class RuleTester extends HashMap { - - /** serialVersionUID. */ - private static final long serialVersionUID = 1L; - /** El valor de sr. */ - private SaveRequest sr; - - /** - * Crea una nueva instancia de rule tester. - */ - public RuleTester() { - this.sr = new SaveRequest(); - super.put("request", this.sr); - } - - /** - * Change branch. - * - * @param pBranch the branch - */ - public void changeBranch(Integer pBranch) { - this.sr.setBranchCode(pBranch); - } - - /** - * Change officer. - * - * @param pOfficer the officer - */ - public void changeOfficer(String pOfficer) { - this.sr.put("officer", pOfficer); - } - - /** - * Change ammount. - * - * @param pAmount the amount - */ - public void changeAmmount(BigDecimal pAmount) { - this.sr.put("amount", pAmount); - } - - /** - * Change rate. - * - * @param pRate the rate - */ - public void changeRate(BigDecimal pRate) { - this.sr.put("rate", pRate); - } - - /** - * Change term. - * - * @param pTerm the term - */ - public void changeTerm(Integer pTerm) { - this.sr.put("term", pTerm); - } - - /** - * Obtiene el valor de action. - * - * @return Valor de action - */ - public String getAction() { - return (String) super.get("action"); - } - - /** - * Obtiene el valor de internal code. - * - * @return Valor de internal code - */ - public String getInternalCode() { - return (String) super.get("internalCode"); - - } - - /** - * Obtiene el valor de group id. - * - * @return Valor de group id - */ - public String getGroupId() { - return (String) super.get("groupId"); - - } - - /** - * Obtiene el valor de user id. - * - * @return Valor de user id - */ - public String getUserId() { - return (String) super.get("userId"); - } - - /** - * Change value. - * - * @param pValue the value - */ - public void changeValue(String pValue) { - String[] val = pValue.split(","); - this.sr.put(val[0], val[1]); - } -} diff --git a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/package-info.java.svn-base b/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 4980227..0000000 --- a/base/bpm/simple/src/main/java/com/fp/simple/test/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Provee clases para ser utilizadas en Casos de Prueba - */ -package com.fp.simple.test; \ No newline at end of file diff --git a/base/business/.svn/entries b/base/business/.svn/entries deleted file mode 100644 index f89615c..0000000 --- a/base/business/.svn/entries +++ /dev/null @@ -1,80 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -log -dir - -viaticos -dir - -armas -dir - -person -dir - -pom.xml -file - - - - -2022-07-28T03:40:44.742812Z -2eff88580bfedfcf91ea3b0de105a811 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2484 - -report -dir - -general -dir - diff --git a/base/business/.svn/text-base/pom.xml.svn-base b/base/business/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 83970b0..0000000 --- a/base/business/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,72 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - business - flipbean - 2.1 - pom - Financial Lifecycle Process - - general - person - report - log - viaticos - armas - - - - com.fp.base.dto - dto - 2.1 - provided - - - com.fp.base.dto - common - 2.1 - provided - - - com.fp.base.persistence - util - 2.1 - provided - - - log4j - log4j - provided - - - com.fp.base.core - bpm - 2.1 - provided - - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - - - org.hibernate - hibernate-core - - - org.hibernate - hibernate-entitymanager - - - org.jbpm - jbpm-human-task-core - provided - - - \ No newline at end of file diff --git a/base/business/armas/.svn/dir-prop-base b/base/business/armas/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/business/armas/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/business/armas/.svn/entries b/base/business/armas/.svn/entries deleted file mode 100644 index 4e87847..0000000 --- a/base/business/armas/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:41.525798Z -f63dde71d47e1eaef4e5f6fd3e71fd67 -2020-01-15T23:43:01.067085Z -4623 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1365 - diff --git a/base/business/armas/.svn/text-base/pom.xml.svn-base b/base/business/armas/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 81f8bfe..0000000 --- a/base/business/armas/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,48 +0,0 @@ - - - 4.0.0 - - com.fp.base - business - 2.1 - - com.fp.base.business - armas - armas - - - - com.fp.base.persistence - parmas - 2.1 - - - com.fp.base.core - bpm - 2.1 - - - com.fp.base.bpm - simple - 2.1 - - - com.fp.base - sessionbeans - 2.1 - - - com.fp.base.persistence - pbpm - 2.1 - - - - org.apache.commons - commons-lang3 - 3.1 - - - - diff --git a/base/business/armas/src/.svn/entries b/base/business/armas/src/.svn/entries deleted file mode 100644 index 37aa28f..0000000 --- a/base/business/armas/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/armas/src/main/.svn/entries b/base/business/armas/src/main/.svn/entries deleted file mode 100644 index 21b429e..0000000 --- a/base/business/armas/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/business/armas/src/main/java/.svn/entries b/base/business/armas/src/main/java/.svn/entries deleted file mode 100644 index 46ca7a6..0000000 --- a/base/business/armas/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/armas/src/main/java/com/.svn/entries b/base/business/armas/src/main/java/com/.svn/entries deleted file mode 100644 index 80e5d19..0000000 --- a/base/business/armas/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/armas/src/main/java/com/fp/.svn/entries b/base/business/armas/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 2584964..0000000 --- a/base/business/armas/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -armas -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/.svn/entries deleted file mode 100644 index 5992238..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -mail -dir - -task -dir - -rules -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/mail/.svn/entries deleted file mode 100644 index 51778de..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/mail -svn://172.17.26.185/COMACO - - - -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ScheduleNotificacionCliente.java -file - - - - -2022-07-28T03:40:40.568794Z -a4668e62abd2723ed479fa51a4756b15 -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -10060 - -PersonaDireccion.java -file - - - - -2022-07-28T03:40:40.569794Z -b8f4ff9c8bce8de8d994ef9df64a8a4d -2014-11-26T11:39:13.942947Z -3105 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2565 - -PersonaDireccionVentaTemp.java -file - - - - -2022-07-28T03:40:40.569794Z -b89342d76769d34c653790894105fde6 -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4132 - -SolicitanteDireccion.java -file - - - - -2022-07-28T03:40:40.569794Z -d39b249e595184d36252b9010aba9ad1 -2014-10-27T05:50:22.203219Z -1969 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2145 - diff --git a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccion.java.svn-base deleted file mode 100644 index 7aefbae..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccion.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.armas.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de una persona. - * - * @version 2.1 - */ -public class PersonaDireccion extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - TgeneParameters parameters= TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("CODIGO.MAIL", 1)); - TarmSolicitud tarmsolicitud=PersistenceHelper.getEntityManager() - .createQuery("select o from TarmSolicitud o where o.pk=:solicitud",TarmSolicitud.class).setParameter("solicitud", solicitud).getSingleResult(); - // TcustPersonAddressKey - List lpersonadress= PersistenceHelper.getEntityManager().createQuery("select o from TcustPersonAddress o where o.pk.personcode=:personcode " - + " and o.addresstypecatalog=:addresstypecatalog" - + " and o.pk.dateto=:dateto",TcustPersonAddress.class) - .setParameter("personcode", tarmsolicitud.getPersoncode()) - .setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()) - .setParameter("addresstypecatalog", parameters.getTextvalue()).getResultList(); - - // adiciona email. - for(TcustPersonAddress addres:lpersonadress){ - lemail.add(addres.getAddress()); - } - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccionVentaTemp.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccionVentaTemp.java.svn-base deleted file mode 100644 index 4919b3a..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/PersonaDireccionVentaTemp.java.svn-base +++ /dev/null @@ -1,88 +0,0 @@ -package com.fp.armas.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de una persona. - * - * @version 2.1 - */ -public class PersonaDireccionVentaTemp extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - System.out.println("addres---1. "+mrequest.get("csolicitud")); - if (mrequest.get("csolicitud") == null) { - mresp.put("lemail", lemail); - return mresp; - } - try { - String solicitud = (String) mrequest.get("csolicitud"); - System.out.println("addres---2. "); - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("addres---3. "); - TarmArmas arma= TarmArmas.find( em, solicitud); - System.out.println("addres---4. "+arma); - Listlistaventa= em.createQuery("select p from TarmVentaArmaTem p where p.carma=:carma and p.estado=:estado") - .setParameter("carma", arma.getPk()) - .setParameter("estado", "PENDIENTE") - .getResultList(); - System.out.println("addres---5. "+listaventa); - TarmRegistroArmas registro = TarmRegistroArmas.find(em, arma.getCregistro()); - System.out.println("addres---6. "+listaventa); - TgeneParameters parameters= TgeneParameters.find(em, new TgeneParametersKey("CODIGO.MAIL", 1)); - System.out.println("addres---7. "+listaventa); - if(listaventa!=null && listaventa.size()>0){ - System.out.println("addres---8. "+listaventa.size()); - // TcustPersonAddressKey - List lpersonadress= em.createQuery("select o from TcustPersonAddress o where o.pk.personcode=:personcode " - + " and o.addresstypecatalog=:addresstypecatalog" - + " and o.pk.dateto=:dateto",TcustPersonAddress.class) - .setParameter("personcode", registro.getPersoncode()) - .setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()) - .setParameter("addresstypecatalog", parameters.getTextvalue()).getResultList(); - System.out.println("addres---9. "+lpersonadress); - // adiciona email. - for(TcustPersonAddress addres:lpersonadress){ - System.out.println("addres--10-"+addres); - if(addres!=null && addres.getAddress()!=null && addres.getAddress().contains("@")){ - lemail.add(addres.getAddress()); - System.out.println("addres--10.1-"+addres.getAddress()); - } - } - System.out.println("addres--11-"); - } - } catch (Exception e) { - System.out.println("erro-----------12-"); - e.printStackTrace(); - } - System.out.println("sale-----------13-"); - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/ScheduleNotificacionCliente.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/ScheduleNotificacionCliente.java.svn-base deleted file mode 100644 index 53d5d3d..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/ScheduleNotificacionCliente.java.svn-base +++ /dev/null @@ -1,245 +0,0 @@ -package com.fp.armas.mail; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.ejb.Schedule; -import javax.ejb.Stateless; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; - -import org.jboss.logging.Logger; - -import com.fp.common.logger.APPLogger; -import com.fp.mail.Mail; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -@Stateless(name="scheduleNotificacionCliente") -public class ScheduleNotificacionCliente { - private final Logger LOG = Logger.getLogger(ScheduleNotificacionCliente.class.getName()); - - - private EntityManagerFactory emf; - @PostConstruct - private final void crearManager() { - try { - if (emf == null) { - Map configOverrides = new HashMap(); - configOverrides.put("hibernate.ejb.cfgfile", "hibernateFlipMapping.cfg.xml"); - emf = Persistence.createEntityManagerFactory("local1" , configOverrides); - } - SessionData sessionData = new SessionData(); - sessionData.setCompany(1); - sessionData.setIsEjb(Boolean.FALSE); - ThreadFacade.setSaveRequest(sessionData); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - } - - - /** - * Envo de correo MAIL. Con un mes antes de caducar el permiso enviar un correo al usuario informndole - */ - @SuppressWarnings("deprecation") - @Schedule(dayOfWeek="Sat" ,hour="7", minute="20", persistent=false) - public void automaticaNotificacion(){ - LOG.info("-----------------------NOTIFICACION MENSAJE DE ALERTA UNA VEZ CADUCADO EL PERMISO DE ARMAS.****"); - try { - EntityManager entityManager=emf.createEntityManager(); - - Date fechaLimite = new Date(); - fechaLimite.setDate(fechaLimite.getDay()-8); - LOG.info("fecha"+ fechaLimite); - Date fechaActual = new Date(); - fechaActual.setMonth(fechaLimite.getMonth()+1); - StringBuilder sql = new StringBuilder( - "select " - + " dh.personcode," - - + " (select cat.description from TgeneCatalogDetail cat " - + " where cat.pk.catalog = (select tr.tipoautorizacion from TarmTramite tr WHERE tr.pk=dh.ctramite) " - + " and cat.pk.catalogcode='TIPOAUTORIZACION') as TIPOAUTORIZACION," - - + " (select cat.description from TgeneCatalogDetail cat " - + " where cat.pk.catalog= (select tr.usoactividad from TarmTramite tr WHERE tr.pk=dh.ctramite)" - + " and cat.pk.catalogcode='USOACTIVIDAD') as USOACTIVIDAD " - - + " from TarmDocumentoHabilitante dh where dh.ctramite in ( " - + " select tr.pk from TarmTramite tr where tr.tipoautorizacioncodigo='TIPOAUTORIZACION' and tr.tipoautorizacion in (6,1)) " - + " and dh.fechaexpiracion is not null and dh.estado ='APR'" - + " and dh.fechaexpiracion > :fechaLimite and dh.fechaexpiracion < :fechaActual" - - ); - - LOG.info("Consulta"); - ListlistPersonas = entityManager.createQuery(sql.toString(),Object[].class) - .setParameter("fechaLimite", fechaLimite) - .setParameter("fechaActual", fechaActual) - .getResultList(); - LOG.info("Consulta 2:: "+listPersonas); - if(listPersonas!= null){ - LOG.info("Tamanio listPersonas "+listPersonas.size()); - //Datos para el envio de correo - StringBuilder sqlParametros = new StringBuilder("select t from TgeneParameters t where t.pk.code in :codigosmail "); - ListlistaCodigos = new ArrayList<>(); - listaCodigos.add("ASUNTO.NOTIFICACION.SCHEDULE"); - listaCodigos.add("CUERPO.NOTIFICACION.SCHEDULE"); - listaCodigos.add("CORRDES.NOTIFICACION.SCHEDULE"); - listaCodigos.add("CORRCOP.NOTIFICACION.SCHEDULE"); - - listaCodigos.add("MAIL.FROM"); - listaCodigos.add("MAIL.SMTP.SERVER"); - listaCodigos.add("MAIL.SMTP.PORT"); - listaCodigos.add("MAIL.SMTP.USER"); - listaCodigos.add("MAIL.SMTP.PASSWORD"); - listaCodigos.add("MAIL.SMTP.AUTH"); - listaCodigos.add("MAIL.SMTPS"); - - ListlistaParametrosMail = entityManager.createQuery(sqlParametros.toString(),TgeneParameters.class) - .setParameter("codigosmail", listaCodigos).getResultList(); - - String asunto=valorTexto(listaParametrosMail, "ASUNTO.NOTIFICACION.SCHEDULE"); - String cuerpo=valorTexto(listaParametrosMail, "CUERPO.NOTIFICACION.SCHEDULE");; - String correodesde=valorTexto(listaParametrosMail, "CORRDES.NOTIFICACION.SCHEDULE"); - String correoCC[]=valorTexto(listaParametrosMail, "CORRCOP.NOTIFICACION.SCHEDULE").split(","); - - String MAIL_FROM=valorTexto(listaParametrosMail, "MAIL.FROM"); - String MAIL_SMTP_SERVER=valorTexto(listaParametrosMail, "MAIL.SMTP.SERVER"); - int MAIL_SMTP_PORT=valorNumber(listaParametrosMail, "MAIL.SMTP.PORT"); - String MAIL_SMTP_USER=valorTexto(listaParametrosMail, "MAIL.SMTP.USER"); - String MAIL_SMTP_PASSWORD=valorTexto(listaParametrosMail, "MAIL.SMTP.PASSWORD"); - Boolean MAIL_SMTP_AUTH=Boolean.valueOf(valorTexto(listaParametrosMail, "MAIL.SMTP.AUTH")); - Boolean MAIL_SMTPS=Boolean.valueOf(valorTexto(listaParametrosMail, "MAIL.SMTPS")); - - MapmapaPersonaCuerpo= new HashMap(); - for (Object[] item : listPersonas) { - if(mapaPersonaCuerpo.get(item[0].toString())!=null){ - String cuerpoMensaje =" "+(item[1]!=null?item[1].toString():"")+" "+(item[2]!=null?item[2].toString():""); - mapaPersonaCuerpo.put(item[0].toString(), (mapaPersonaCuerpo.get(item[0].toString())+", "+cuerpoMensaje)); - }else{ - String cuerpoMensaje =" "+(item[1]!=null?item[1].toString():"")+" "+(item[2]!=null?item[2].toString():""); - mapaPersonaCuerpo.put(item[0].toString(), cuerpoMensaje); - } - - } - - - for (Entry entry : mapaPersonaCuerpo.entrySet()) { - StringBuilder sqlInformacion = new StringBuilder( - "select p.address from TcustPersonAddress p where p.pk.personcode=:personcode " - + " and p.address is not null " - + " and p.addresstypecatalog=3"); - List listaDirecciones =entityManager.createQuery(sqlInformacion.toString(),String.class) - .setParameter("personcode", Integer.valueOf(entry.getKey())) - .getResultList(); - LOG.info("ListaDirecciones "+listaDirecciones); - if(listaDirecciones!= null && listaDirecciones.size()>0){ - LOG.info("Tamanio listaDirecciones "+listaDirecciones.size()); - List remover = new ArrayList(); - for (String itemcorreo : listaDirecciones) { - if(!itemcorreo.contains("@")){ - remover.add(itemcorreo); - } - } - listaDirecciones.removeAll(remover); - if(listaDirecciones!= null && listaDirecciones.size()>0){ - LOG.info("Envio "+listaDirecciones.size()); - String cuerpoFinal = cuerpo +" "+entry.getValue(); - envioCorreoCambio(MAIL_FROM, MAIL_SMTP_SERVER,MAIL_SMTP_PORT, - MAIL_SMTP_USER,MAIL_SMTP_PASSWORD,MAIL_SMTP_AUTH,MAIL_SMTPS, - listaDirecciones.get(0),asunto,cuerpoFinal,correoCC[0],correodesde); - - //String [] arrayCorreos= new String[listaDirecciones.size()]; - //arrayCorreos=listaDirecciones.toArray(arrayCorreos); - } - } - } - } - - } catch(Exception e){ - LOG.info("Error: "+e.getMessage()); - e.printStackTrace(); - } catch (Throwable e) { - LOG.info("Error: "+e.getMessage()); - e.printStackTrace(); - } - } - - private String valorTexto(ListlistaParametrosMail, String codigo){ - for (TgeneParameters item : listaParametrosMail) { - if(codigo.trim().equals(item.getPk().getCode().trim())){ - return item.getTextvalue(); - } - } - return ""; - } - - private int valorNumber(ListlistaParametrosMail, String codigo){ - for (TgeneParameters item : listaParametrosMail) { - if(codigo.trim().equals(item.getPk().getCode().trim())){ - return item.getNumbervalue().intValue(); - } - } - return 0; - } - /** - * Envía el correo de cambio de email - * @throws Exception - */ - private void envioCorreoCambio(String MAIL_FROM, String MAIL_SMTP_SERVER,int MAIL_SMTP_PORT, - String MAIL_SMTP_USER,String MAIL_SMTP_PASSWORD,Boolean MAIL_SMTP_AUTH,Boolean MAIL_SMTPS, - String correos,String asunto,String cuerpo,String correoCC,String correodesde) { - try { - Mail m = new Mail(); - m.config(MAIL_FROM,MAIL_SMTP_SERVER,MAIL_SMTP_PORT, MAIL_SMTP_USER, MAIL_SMTP_PASSWORD, MAIL_SMTP_AUTH, MAIL_SMTPS); - m.setTo(correos); - m.setCc(correoCC); - m.setSubject(asunto); - m.setCont(cuerpo); - m.setContentMessageType("text/html"); - m.send(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /* - private void envioMail(String[] correos,String asunto,String cuerpo,String correoCC[],String correodesde) throws Exception{ - try { - LOG.info("INGREA A ENVIAR MAIL"); - LOG.info("correos: "+correos); - LOG.info("asunto: "+asunto); - LOG.info("correoCC: "+correoCC); - LOG.info("correodesde: "+correodesde); - EnvioCorreoDTO envioCorreo = new EnvioCorreoDTO(); - envioCorreo.setCorreoDesde(correodesde); - envioCorreo.setCorreoPara(correos);//new String[]{correos} - envioCorreo.setCorreoCC(correoCC); - envioCorreo.setAsunto(asunto); - envioCorreo.setMensajeHTML(cuerpo); - EnvioMail envioMail = EnvioMailFactory.getInstancia(); - LOG.info("envioMail.envioMail(envioCorreo)"); - envioMail.envioMail(envioCorreo); - LOG.info("FIN Envio de mail"); - } catch (Exception e) { - e.printStackTrace(); - throw new Exception(e); - }catch (Throwable e) { - e.printStackTrace(); - } - } - */ - - public EntityManagerFactory getEmf() { - return emf; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/SolicitanteDireccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/SolicitanteDireccion.java.svn-base deleted file mode 100644 index 8a371d9..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/mail/.svn/text-base/SolicitanteDireccion.java.svn-base +++ /dev/null @@ -1,50 +0,0 @@ -package com.fp.armas.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de una persona. - * - * @version 2.1 - */ -public class SolicitanteDireccion extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); -// HashMap m = (HashMap) pParam; -// Map mrequest = (Map) m.get("request"); -// if (mrequest.get("csolicitud") == null) { -// return mresp; -// } -// String solicitud = (String) mrequest.get("csolicitud"); -// TarmSolicitud tarmsolicitud=PersistenceHelper.getEntityManager() -// .createQuery("select o from TarmSolicitud o where o.pk=:solicitud",TarmSolicitud.class).setParameter("solicitud", solicitud).getSingleResult(); -// // TcustPersonAddressKey -// List lpersonadress= PersistenceHelper.getEntityManager().createQuery("select o from TcustPersonAddress o where o.pk.personcode=:personcode " -// + " and o.addresstypecatalog=3" -// + " and o.pk.dateto=(select max(dt.pk.dateto) from TcustPersonAddress dt where dt.pk.personcode=:personcode2)",TcustPersonAddress.class) -// .setParameter("personcode", tarmsolicitud.getPersoncode()) -// .setParameter("personcode2", tarmsolicitud.getPersoncode()).getResultList(); -// -// // adiciona email. -// for(TcustPersonAddress addres:lpersonadress){ -// lemail.add(addres.getAddress()); -// } - lemail.add("fpazmino@bupartech.com"); - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/.svn/entries deleted file mode 100644 index 6e6b710..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -exception -dir - -save -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/entries deleted file mode 100644 index 5ca5aa7..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/exception -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ControlArmasException.java -file - - - - -2022-07-28T03:40:40.976795Z -c4dc1a279b73a9ad49210bf21389965b -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1001 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/prop-base/ControlArmasException.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/prop-base/ControlArmasException.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/prop-base/ControlArmasException.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/text-base/ControlArmasException.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/text-base/ControlArmasException.java.svn-base deleted file mode 100644 index ce03a71..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/exception/.svn/text-base/ControlArmasException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.armas.rules.exception; - -import com.fp.common.exception.APPException; - -/** - * Excepción que se encarga de manejar los errores dentro de la aplicación de control de armas - * @author dcruz - * - */ -public class ControlArmasException extends APPException { - - private static final long serialVersionUID = 1L; - - /** - * Constructor control de armas - * @param code code codigo del mensaje - * @param message mensaje - * @param pParameters parámetros del mensaje - */ - public ControlArmasException(String code, String message, - Object... pParameters) { - super(code, message, pParameters); - } - - /** - * Constructor control de armas - * @param code codigo del mensaje - * @param message mensaje - * @param pCause causa - * @param pParameters parámetros del mensaje - */ - public ControlArmasException(String code, String message, Exception pCause, - Object... pParameters) { - super(code, message, pCause, pParameters); - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/.svn/entries deleted file mode 100644 index ade2152..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - -documentos -dir - -webservices -dir - -ordenTrabajoCustodios -dir - -general -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/entries deleted file mode 100644 index 6ea9924..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos -svn://172.17.26.185/COMACO - - - -2014-09-04T10:43:50.446675Z -526 -ogarcia - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DocumentoQuery.java -file - - - - -2022-07-28T03:40:40.760794Z -761317aad5581b72c339a4a19b0ef939 -2014-09-04T10:43:50.446675Z -526 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1227 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/text-base/DocumentoQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/text-base/DocumentoQuery.java.svn-base deleted file mode 100644 index 8a123e8..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/documentos/.svn/text-base/DocumentoQuery.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -package com.fp.armas.rules.query.documentos; - -import java.sql.Date; -import java.util.Calendar; -import java.util.List; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.sessionbeans.helper.Sequence; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; - -public class DocumentoQuery extends QueryRule{ - - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - try { - //Obteniendo los documentos que no han expirado - java.util.Date fechaActual=Calendar.getInstance().getTime(); - Calendar c=Calendar.getInstance(); - c.setTime(fechaActual); - Date sFechaActual=new Date(c.getTimeInMillis()); - - List documentos=PersistenceHelper.getEntityManager().createQuery("select d from TarmSolicitudDocumento d") - /*.setParameter("fechaExpiracion", sFechaActual)*/.getResultList(); - - pQueryRequest.put("documentos", documentos); - - } catch (Exception e) { - throw e; - } - - return pQueryRequest; - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/entries deleted file mode 100644 index 39b0d8c..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/general -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ArmasQuery.java -file - - - - -2022-07-28T03:40:40.909795Z -3f59b5c56dfad483d1ea0b72d35e910b -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3659 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/prop-base/ArmasQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/prop-base/ArmasQuery.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/prop-base/ArmasQuery.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/text-base/ArmasQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/text-base/ArmasQuery.java.svn-base deleted file mode 100644 index 9b9e07a..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/general/.svn/text-base/ArmasQuery.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -package com.fp.armas.rules.query.general; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; - -/** - * Clase que obtiene los datos completos del arma - * @author dcruz - * - */ -public class ArmasQuery extends QueryRule { - - private static final long serialVersionUID = 1L; - - /** - * Completa datos del arma - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - QueryJsf query = new QueryJsf(); - query.execute(pRequest); - List armasList = (List) pRequest.getResponse().get("ARMAS"); - this.managedResponse(armasList); - return pRequest; - } - - /** - * Agrega metadata adicional de las armas para mostrar en las consultas - * @param armasList - * @throws Exception - * @throws CommondbException - */ - private void managedResponse(List armasList) throws CommondbException, Exception{ - for (TarmArmas armas : armasList) { - //agrego los datos de - TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(armas.getModifiedData().get("cclase") != null ? armas.getModifiedData().get("cclase").toString() : "", armas.getModifiedData().get("cclasecodigo") != null ? armas.getModifiedData().get("cclasecodigo").toString() : "")); - armas.modifiedData.put("clase", clase != null ? clase.getDescription():null); - TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(armas.getModifiedData().get("ctipoarmaexplosivo") != null ? armas.getModifiedData().get("ctipoarmaexplosivo").toString() : "", armas.getModifiedData().get("ctipoarmaexplosivocodigo") != null ? armas.getModifiedData().get("ctipoarmaexplosivocodigo").toString() : "")); - armas.modifiedData.put("tipoarmaexplosivo", tipoArma != null ? tipoArma.getDescription():null); - TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(armas.getModifiedData().get("cunidadmedidapeso") != null ? armas.getModifiedData().get("cunidadmedidapeso").toString():"", armas.getModifiedData().get("cunidadmedidapesocodigo") != null ? armas.getModifiedData().get("cunidadmedidapesocodigo").toString() : "")); - armas.modifiedData.put("unidadmedidapeso", unidadMedida != null ? unidadMedida.getDescription():null); - TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(armas.getModifiedData().get("ccalibre") != null ? armas.getModifiedData().get("ccalibre").toString() : "", armas.getModifiedData().get("ccalibrecodigo") != null ? armas.getModifiedData().get("ccalibrecodigo").toString() : "")); - armas.modifiedData.put("calibre", calibre != null ? calibre.getDescription() : null); - TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(armas.getModifiedData().get("clongitud") != null ? armas.getModifiedData().get("clongitud").toString() : "", armas.getModifiedData().get("clongitudcodigo") != null ? armas.getModifiedData().get("clongitudcodigo").toString() : "")); - armas.modifiedData.put("longitud", longitud != null ? longitud.getDescription() : null); - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/entries deleted file mode 100644 index 5484a07..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios -svn://172.17.26.185/COMACO - - - -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -OrdenTrabajoQuery.java -file - - - - -2022-07-28T03:40:40.876795Z -4638dce4ba0199d3dd55c858b199e47e -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -772 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/text-base/OrdenTrabajoQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/text-base/OrdenTrabajoQuery.java.svn-base deleted file mode 100644 index 93d6718..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/ordenTrabajoCustodios/.svn/text-base/OrdenTrabajoQuery.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.armas.rules.query.ordenTrabajoCustodios; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.sessionbeans.helper.Sequence; - -public class OrdenTrabajoQuery extends QueryRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - - //Obteniendo y reservando el numero de la orden de trabajo - Sequence sequence = new Sequence(); - Integer nextValue = Integer.valueOf(sequence.getNextValue("CORDENTRABAJO").toString()); - pQueryRequest.getResponse().put("SECUENCIALSOLORDENTRABAJO", nextValue); - - return pQueryRequest; - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/entries deleted file mode 100644 index 5f28a98..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/entries +++ /dev/null @@ -1,334 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CashManagementQuery.java -file - - - - -2022-07-28T03:40:40.727794Z -57f59ff46c249555153896e6d045ebf3 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3153 - -VerificarArmaQuery.java -file - - - - -2022-07-28T03:40:40.727794Z -b184f76624e164669dab1b533490138c -2016-03-31T17:34:13.451294Z -4529 -cvasquez - - - - - - - - - - - - - - - - - - - - - -5862 - -VerificarInfoCertificado.java -file - - - - -2022-07-28T03:40:40.727794Z -0afaf51a197976bafc6ce2d461640c42 -2014-11-10T12:57:00.965141Z -2551 -dlopez - - - - - - - - - - - - - - - - - - - - - -543 - -CertificadoFiscaliaSecuencial.java -file - - - - -2022-07-28T03:40:40.727794Z -23e08b65d4334dfa7cdc5531a3948f57 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1169 - -CompletaDatosInspeccionPlan.java -file - - - - -2022-07-28T03:40:40.728794Z -83bc44691f785e26636509c11d71535a -2014-11-13T08:16:14.195795Z -2704 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7725 - -ArmasXPersonaQuery.java -file - - - - -2022-07-28T03:40:40.728794Z -fcf65a7a14046b4201053b33cb1a4b6a -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5461 - -SolicitudSecuencial.java -file - - - - -2022-07-28T03:40:40.728794Z -e961fafdabc120dfe72b85d36b416fc6 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1099 - -CompletaInfoVerificarDocumentos.java -file - - - - -2022-07-28T03:40:40.728794Z -719c734163d750e46bf233e9793aa60a -2014-11-05T23:57:29.788107Z -2377 -dlopez - - - - - - - - - - - - - - - - - - - - - -1675 - -CashHistoricoSecuencial.java -file - - - - -2022-07-28T03:40:40.729794Z -3ed0c0c66385d605d4a4645a7e9563ea -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1023 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/prop-base/SolicitudSecuencial.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/prop-base/SolicitudSecuencial.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/prop-base/SolicitudSecuencial.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/ArmasXPersonaQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/ArmasXPersonaQuery.java.svn-base deleted file mode 100644 index 9204d2d..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/ArmasXPersonaQuery.java.svn-base +++ /dev/null @@ -1,109 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que obtiene los datos completos del arma que estan asignadas a una persona o - * proveedor - * @author C.P - * - */ -public class ArmasXPersonaQuery extends QueryRule { - - - private static final long serialVersionUID = 1L; - - /** - * Completa datos del arma - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - QueryJsf query = new QueryJsf(); - query.execute(pRequest); - TgeneParametersKey key = new TgeneParametersKey(); - key.setCode("COD.REGISTRADO.ESTADO");//codigo del arma en REG - key.setCompanycode(1); - TgeneParameters parametro=TgeneParameters.find(PersistenceHelper.getEntityManager(),key); - - List registroarmasList = (List) pRequest.getResponse().get("TREGISTROARMAS"); - String serielote=""; - if(pRequest.get("serielote")!=null && pRequest.get("serielote").toString().length()>0){ - serielote= " and o.lote='"+(String)pRequest.get("serielote")+"'"; - } - - String codigoReg=null; - for(TarmRegistroArmas registro:registroarmasList){ - if(codigoReg==null){ - codigoReg="o.cregistro="+registro.getPk(); - }else{ - codigoReg+=" or o.cregistro="+registro.getPk(); - } - } - if(codigoReg!=null){ - //select con los codigos del registro que tenga una persona, por la fecha maxima por registro por el explosivos, cajas, filtramos si ya esta en la tabla tardecomiso arma - //y que esten en estado reg - List armasList =PersistenceHelper.getEntityManager().createQuery("Select o from TarmArmas o where ("+codigoReg+" )" - + " and o.estado IN ('APTA','DEV','AUTO','REG') " - + " and o.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where o.codigoarma=ta.codigoarma and o.cregistro=ta.cregistro)" - + " and o.pk NOT IN (select dec.carma from TarmDecomisoArma dec where dec.estado= 'CUSTEM')" - + serielote).getResultList(); - - this.managedResponse(armasList); - pRequest.getResponse().put("ARMASLIST", armasList); - } - - return pRequest; - } - - /** - * Agrega metadata adicional de las armas para mostrar en las consultas - * @param armasList - * @throws Exception - * @throws CommondbException - */ - private void managedResponse(List armasList) throws CommondbException, Exception{ - for (TarmArmas armas : armasList) { - - TarmTipoArmaExplosivo explisivo= TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(),armas.getCtipoarmaexplosivo()); - - TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(explisivo.getClase()!= null ? explisivo.getClase():"", explisivo.getClasecodigo() != null ? explisivo.getClasecodigo() : "")); - armas.modifiedData.put("clase", clase != null ? clase.getDescription():null); - - TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(explisivo.getTipoarmaexplosivo() != null ? explisivo.getTipoarmaexplosivo() : "", explisivo.getTipoarmaexplosivocodigo()!= null ? explisivo.getTipoarmaexplosivocodigo(): "")); - armas.modifiedData.put("tipoarmaexplosivo", tipoArma != null ? tipoArma.getDescription():null); - - TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(explisivo.getUnidadmedidapeso() != null ? explisivo.getUnidadmedidapeso():"", explisivo.getUnidadmedidapesocodigo() != null ? explisivo.getUnidadmedidapesocodigo() : "")); - armas.modifiedData.put("unidadmedidapeso", unidadMedida != null ? unidadMedida.getDescription():null); - - TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(explisivo.getCalibre() != null ? explisivo.getCalibre() : "", explisivo.getCalibrecodigo() != null ? explisivo.getCalibrecodigo() : "")); - armas.modifiedData.put("calibre", calibre != null ? calibre.getDescription() : null); - - TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(explisivo.getLongitud() != null ? explisivo.getLongitud() : "", explisivo.getLongitudcodigo() != null ? explisivo.getLongitudcodigo() : "")); - armas.modifiedData.put("longitud", longitud != null ? longitud.getDescription() : null); - - TgeneCatalogDetail marca= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), - new TgeneCatalogDetailKey(armas.getMarca() != null ? armas.getMarca() : "", armas.getMarcacodigo() != null ? armas.getMarcacodigo() : "")); - armas.modifiedData.put("marca", marca != null ? marca.getDescription():null); - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashHistoricoSecuencial.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashHistoricoSecuencial.java.svn-base deleted file mode 100644 index a0c9c16..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashHistoricoSecuencial.java.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Genera un número secuencial de historico cash management - * @author Christian Pazmino - * - */ -public class CashHistoricoSecuencial extends QueryRule { - - private static final long serialVersionUID = 1L; - - /** - * Obtiene el secuencial de la solicitud y lo reserva para posteriores validaciones - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - // TODO Auto-generated method stub - System.out.println("Ingresa al secuencial de historico cash management"); - Sequence sequence = new Sequence(); - Integer nextValue = Integer.valueOf(sequence.getNextValue("CCASHHISTORY").toString()); - pQueryRequest.getResponse().put("CASHHISTORICOSEQUENCE", StringUtils.leftPad(String.valueOf(nextValue), 6, '0')); - return pQueryRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashManagementQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashManagementQuery.java.svn-base deleted file mode 100644 index de0da03..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CashManagementQuery.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.bpm.query.QueryJsf; -import com.fp.common.helper.Constant; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.CashManagementDTO; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que obtiene los datos del reporte de cash management - * @author Christian Pazmino - * - */ -public class CashManagementQuery extends QueryRule { - - - private static final long serialVersionUID = 1L; - - String sql ="select 'CO' AS codigoServicio, sol.numerosolicitud as contrato, 'USD' AS moneda, " - + "soltra.valorapagar AS valorapagar, 'REC' AS formaCobro, '' as tipoCuenta, '' as numeroCuenta, " - + "tipaut.description as referencia, (case perdet.identificationcatalog when 'CED' then 'C' WHEN 'RUC' THEN 'R' WHEN 'PAS' THEN 'P' ELSE 'N' END) as tipoIDCliente, " - + "perdet.identification as numeroIDCliente, perdet.name as nombreCliente,'1' as baseImponible, sol.csolicitud as csolicitud " - + "from tarmsolicitud sol inner join tarmsolicitudtramite soltra on sol.csolicitud = soltra.csolicitud " - + "left join tcustpersondetail perdet on sol.personcode = perdet.personcode and perdet.dateto = to_date('2999-12-31', 'YYYY-MM-DD') " - + "left join tarmtramite tra on tra.ctramite = sol.ctramite " - + "left join tgenecatalogdetail tipaut on tra.tipoautorizacion = tipaut.catalog and tra.tipoautorizacioncodigo = tipaut.catalogcode " - + "where soltra.INCASHREPORT is null and soltra.numerocomprobante is null and soltra.estadotramite='REG' and soltra.valorapagar>0 " - + "and trunc(sol.fverificarequisitos) >= to_date(':fechaInicialStr','DD/MM/RRRR') and trunc(sol.fverificarequisitos) <= to_date(':fechaFinalStr','DD/MM/RRRR')"; - - /** - * Completa datos del arma - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - String fechaInicialStr = pRequest.get("fechaInicialStr").toString(); - String fechaFinalStr = pRequest.get("fechaFinalStr").toString(); - sql=sql.replace(":fechaInicialStr", fechaInicialStr); - sql=sql.replace(":fechaFinalStr", fechaFinalStr); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(sql); - //qry.setParameter("fechaInicialStr", fechaInicialStr); - //qry.setParameter("fechaFinalStr", fechaFinalStr); - List lCashManagement = qry.getResultList(); - pRequest.getResponse().put("CASHMANAGEMENTLIST", lCashManagement); - return pRequest; - } - - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CertificadoFiscaliaSecuencial.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CertificadoFiscaliaSecuencial.java.svn-base deleted file mode 100644 index 90b3d08..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CertificadoFiscaliaSecuencial.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Genera un número secuencial del certificado de fiscalia - * @author Manuel Cepeda - * - */ -public class CertificadoFiscaliaSecuencial extends QueryRule { - - /** - * prefijo base certificado fiscalia - */ - private static final String PRESOL_BASE = "FIS"; - - private static final long serialVersionUID = 5722213865460295851L; - - /** - * Obtiene el secuencial del certificado de la fiscalia y lo reserva para posteriores validaciones - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - // TODO Auto-generated method stub - System.out.println("Ingresa al secuencial armas"); - Sequence sequence = new Sequence(); - Integer nextValue = Integer.valueOf(sequence.getNextValue("CERTIFICADOFISCALIA").toString()); - pQueryRequest.getResponse().put("SECUENCIALCERTIFICADOFISCAL", PRESOL_BASE+"-"+StringUtils.leftPad(String.valueOf(nextValue), 10, '0')); - return pQueryRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaDatosInspeccionPlan.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaDatosInspeccionPlan.java.svn-base deleted file mode 100644 index dcbd5e3..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaDatosInspeccionPlan.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -@SuppressWarnings("serial") -public class CompletaDatosInspeccionPlan extends QueryRule{ - - private EntityManager em = null; - private String jpqlPersona = "select p.pk.personcode, " - + "(select c.description from TgeneCatalogDetail c where c.pk.catalog = p.identificationcatalog and c.pk.catalogcode = p.identificationcatalogcode) as tipodoc, " - + " p.identification," - + " p.name," - + " p.legalrepresentidentification," - + " p.legalrepresent" - + " from TcustPersonDetail p " - + " where p.pk.personcode = :personcode and p.pk.dateto = :dateto"; - private String jpqlPersonaDireccion = "select p.addresstypecatalog, " - + " p.address, " - + " p.remark, " - + " (select o.description from TgeneProvince o where o.pk.countrycode='EC' and o.pk.provincecode=p.provincecode) as provincia," - + " (select o.description from TgeneCanton o where o.pk.countrycode='EC' and o.pk.provincecode=p.provincecode and o.pk.cantoncode=p.cantoncode) as canton," - + " (select o.description from TgeneCity o where o.pk.countrycode='EC' and o.pk.provincecode=p.provincecode and o.pk.cantoncode=p.cantoncode and o.pk.citycode=p.citycode) as ciudad," - + " (select o.description from TgeneParroquia o where o.pk.countrycode='EC' and o.pk.provincecode=p.provincecode and o.pk.cantoncode=p.cantoncode and o.pk.parroquiacode=p.parroquiacode) as parroquia" - + " from TcustPersonAddress p " - + " where p.pk.personcode = :personcode and p.pk.dateto = :dateto"; - - Map persona = new HashMap(); - private String codigoPhoneFijo; - private String codigoPhoneCelular; - private String codigoMail; - private String codigoOficina; - @Override - public QueryRequest process(QueryRequest pQueyRequest) throws Exception { - QueryJsf query = new QueryJsf(); - query.execute(pQueyRequest); - em = PersistenceHelper.getEntityManager(); - TcustPersonDetail personDetailResp = (TcustPersonDetail)pQueyRequest.getResponse().get("REGINSPECPLANINO"); - completarResponsable(personDetailResp); - Integer personCodePropietario=Integer.parseInt(pQueyRequest.get("personcodepropietario").toString()); - String ccentrocontrol =pQueyRequest.get("ccentrocontrol").toString(); - //propietario 1 - dataPerson(personCodePropietario); - direccion(personCodePropietario); - telefonoPropietario(personCodePropietario); - pQueyRequest.getResponse().put("PERSONAPROPIETARIO", persona); - return pQueyRequest; - } - - private void dataPerson(Integer personcode) throws Exception{ - Query qry = this.em.createQuery(this.jpqlPersona); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - Object[] objeto = (Object[])qry.getSingleResult(); - if(objeto!=null){ - persona.put("personcode", objeto[0]); - persona.put("tipoidentificacion", objeto[1]); - persona.put("identification", objeto[2]); - persona.put("name", objeto[3]); - persona.put("legalrepresentidentification", objeto[4]); - persona.put("legalrepresent", objeto[5]); - } - } - @SuppressWarnings("unchecked") - public void direccion(Integer personcode) throws Exception{ - codigoMail=codigoParameter("CODIGO.MAIL"); - Query qry2 = this.em.createQuery(this.jpqlPersonaDireccion); - qry2.setParameter("personcode", personcode); - qry2.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ldirecciones = qry2.getResultList(); - - for(Object direc:ldirecciones){ - Object[] objeto=(Object[])direc; - //correo - if(objeto[0]!=null && objeto[0].equals(codigoMail)){ - if(objeto[1]!=null){ - persona.put("mail", objeto[1]); - } - }else{ - if(objeto[1]!=null){ - persona.put("address", objeto[1]); - } - - if(objeto[2]!=null){ - persona.put("remark", objeto[2]); - } - if(objeto[3]!=null){ - persona.put("provincia", objeto[3]); - } - if(objeto[4]!=null){ - persona.put("canton", objeto[4]); - } - if(objeto[5]!=null){ - persona.put("ciudad", objeto[5]); - } - if(objeto[6]!=null){ - persona.put("parroquia", objeto[6]); - } - } - } - } - - @SuppressWarnings("unchecked") - private void telefonoPropietario(Integer personcode) throws Exception{ - List phones =em.createQuery("select o from TcustPersonPhone o" - + " where o.pk.personcode=:personcode and o.pk.dateto=:dateto order by o.phonetypecatalog asc") - .setParameter("personcode", personcode) - .setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()) - .getResultList(); - for(TcustPersonPhone tel:phones){ - persona.put("telefono", tel.getPhonenumber()); - break; - } - } - - - @SuppressWarnings("unchecked") - private void completarResponsable(TcustPersonDetail tcustPersonDetail) throws Exception{ - codigoPhoneFijo=codigoParameter("CODIGO.PHONE.FIJO"); - codigoPhoneCelular=codigoParameter("CODIGO.PHONE.CELULAR"); - List phones =em.createQuery("select o from TcustPersonPhone o" - + " where o.pk.personcode=:personcode and o.pk.dateto=:dateto") - .setParameter("personcode", tcustPersonDetail.getPk().getPersoncode()) - .setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()) - .getResultList(); - for(TcustPersonPhone telefono:phones){ - if(telefono.getPhonetypecatalog().equals(codigoPhoneFijo)){ // CODIGO.PHONE.FIJO - tcustPersonDetail.getModifiedData().put("fijo", telefono.getPhonenumber()); - }else if(telefono.getPhonetypecatalog().equals(codigoPhoneCelular)){// CODIGO.PHONE.CELULAR - tcustPersonDetail.getModifiedData().put("celular", telefono.getPhonenumber()); - } - } - - //mail - List maill =em.createQuery("select o from TcustPersonAddress o" - + " where o.pk.personcode=:personcode and o.pk.dateto=:dateto and o.addresstypecatalog=:addresstypecatalog") - .setParameter("personcode", tcustPersonDetail.getPk().getPersoncode()) - .setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()) - .setParameter("addresstypecatalog", codigoMail) - .getResultList(); - for(TcustPersonAddress mail:maill){ - if(mail.getAddress()!=null){ - tcustPersonDetail.getModifiedData().put("mail", mail.getAddress()); - break; - } - } - - } - - private void centroControl(String ccentrocontrol, QueryRequest sr, String tipo) throws Exception{ - TarmCentroControl centroControl= TarmCentroControl.find(this.em,ccentrocontrol); - sr.getResponse().put("CENTROCONTROL", centroControl); - } - - private String codigoParameter(String codigo) throws Exception{ - TgeneParameters parameter= TgeneParameters.find(this.em, new TgeneParametersKey(codigo, 1)); - return parameter.getTextvalue(); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaInfoVerificarDocumentos.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaInfoVerificarDocumentos.java.svn-base deleted file mode 100644 index 083de52..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/CompletaInfoVerificarDocumentos.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; - -public class CompletaInfoVerificarDocumentos extends QueryRule{ - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryJsf qry = new QueryJsf(); - qry.execute(pQueryRequest); - - List datos = (List)pQueryRequest.getResponse().get("VERIFICARDOCUMENTOS");//VERIFICARDOCUMENTOS - if(datos!=null){ - for(Object dato : datos){ - TarmSolicitudDocumento sol = (TarmSolicitudDocumento)dato; - String centroControl =(String)sol.modifiedData.get("ccentrocontrol"); - if(centroControl != null){ - TarmCentroControl cControl = TarmCentroControl.find(PersistenceHelper.getEntityManager(), centroControl); - if(cControl != null){ - TgeneProvinceKey key = new TgeneProvinceKey(); - key.setCountrycode(cControl.getCountrycode()); - key.setProvincecode(cControl.getProvincecode()); - TgeneProvince province = TgeneProvince.find(PersistenceHelper.getEntityManager(), key); - sol.modifiedData.put("ubicaciondesc", province.getDescription()); - } - } - - - } - } - return pQueryRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/SolicitudSecuencial.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/SolicitudSecuencial.java.svn-base deleted file mode 100644 index 7f8f536..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/SolicitudSecuencial.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Genera un número secuencial de solicitud - * @author dcruz - * - */ -public class SolicitudSecuencial extends QueryRule { - - /** - * prefijo base solicitud - */ - private static final String PRESOL_BASE = "SOL"; - - private static final long serialVersionUID = 5722213865460295851L; - - /** - * Obtiene el secuencial de la solicitud y lo reserva para posteriores validaciones - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - // TODO Auto-generated method stub - System.out.println("Ingresa al secuencial armas"); - Sequence sequence = new Sequence(); - Integer nextValue = Integer.valueOf(sequence.getNextValue("CNUMEROSOLICITUD").toString()); - pQueryRequest.getResponse().put("SECUENCIALSOLICITUD", PRESOL_BASE+"-"+StringUtils.leftPad(String.valueOf(nextValue), 10, '0')); - return pQueryRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarArmaQuery.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarArmaQuery.java.svn-base deleted file mode 100644 index 2a1daf8..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarArmaQuery.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -/** - * - * @author Norge Dominguez Cand - * - */ -public class VerificarArmaQuery extends QueryRule { - - private static final String CODIGO_DIAS_DECOMISO = "DIASDECOMISO"; - private static final String CODIGO_RECL = "CODIGO.RECL"; - private static final String CODIGO_ABAN = "CODIGO.ABAN"; - private static final String CODIGO_ENTV = "CODIGO.ENTV"; - private static final String CODIGO_INCAUTADA = "CODIGO.INCAUTADA"; - private static final String CODIGO_DECOMISADA = "CODIGO.DECOMISADA"; - private static final long serialVersionUID = 8055423288586131089L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - //Obtener valores - String centroControl = (String) pRequest.get("centroControl"); - String numeroDecomiso = (String) pRequest.get("numeroDecomiso"); - String numeroserie = (String) pRequest.get("numeroserie"); - String fechacorte = (String) pRequest.get("fechacorte"); - - String codigoDecomiso = codigos(CODIGO_DECOMISADA);// DECOMISO - String codigoIncautacion = codigos(CODIGO_INCAUTADA);// INCAUTACION - String codigoEntVol = codigos(CODIGO_ENTV);// ENTREGA VOLUNTARIA - String codigoAbandono = codigos(CODIGO_ABAN);// ABANDONO - String codigoReclamo = codigos(CODIGO_RECL);// RECLAMO - String codigoDiasDecomiso = codigos(CODIGO_DIAS_DECOMISO);// DIAS DECOMISO - if ( fechacorte == null || fechacorte.isEmpty() ) { - fechacorte = new Date().toString(); - } - - //Se filtra por centrocontrol, estados, bodega - StringBuffer bufferFiltro = new StringBuffer(); - - //Filtro por estados, fecha, enBodega - bufferFiltro.append("select t.* from tarmdecomisoarma t join tarmdecomiso td on t.cdecomiso = td.cdecomiso join tarmarmas ta on t.carma = ta.carma " - + "where trunc(t.fdecomiso) <= TO_DATE('"+fechacorte+"','yyyy-mm-dd') and abs(TRUNC(TO_DATE('"+fechacorte+"','yyyy-mm-dd')) - TRUNC(t.fdecomiso))>= "+codigoDiasDecomiso); - bufferFiltro.append(" and (t.estado='"+codigoDecomiso+"' or t.estado='"+codigoIncautacion+"' or t.estado='"+codigoEntVol+"' or t.estado='"+codigoAbandono+"' or t.estado='"+codigoReclamo+"') and t.enbodega= 'Y'"); - - - if(numeroDecomiso!=null && !numeroDecomiso.isEmpty()){ - - bufferFiltro.append(" and td.numerotransaccion ='"+numeroDecomiso+"'"); - } - - if(numeroserie!=null && !numeroserie.isEmpty()){ - - bufferFiltro.append(" and ta.lote ='"+numeroserie+"'"); - } - - //Filtro para la tabla decomiso - StringBuffer bufferDecomiso = new StringBuffer(); - bufferDecomiso.append(bufferFiltro); - bufferDecomiso.append(" and t.cdecomisoarmatransaccion is null and t.cdecarmtranrecepcion is null and t.coperaciontransaccion is null and td.ccentrocontrol = '" + centroControl + "'"); - - List cdecomisos = PersistenceHelper.getEntityManager().createNativeQuery(bufferDecomiso.toString(), TarmDecomisoArma.class).getResultList(); - - //Filtro para la tabla decomiso - StringBuffer bufferOperacion = new StringBuffer(); - bufferOperacion.append(bufferFiltro); - int intWhere = bufferOperacion.indexOf("where"); - bufferOperacion.insert(intWhere, "join tarmdecomisoarmatransaccion tt on t.cdecomisoarmatransaccion = tt.cdecomisoarmatransaccion " - + "join tarmtransaccionarmabodega tb on t.carma = tb.carma and t.cdecomisoarmatransaccion = tb.cdecomisoarmatransaccion "); - - bufferOperacion.append(" and tt.estadofirma = 'Y' and t.coperaciontransaccion = 'RECEPCION' and tb.ccentrocontroldestino = '" + centroControl + "'"); - - List operaciontransacciones = (List)PersistenceHelper.getEntityManager().createNativeQuery(bufferOperacion.toString(), TarmDecomisoArma.class).getResultList(); - - List tarmdecomisoarmas = new ArrayList(); - //Add toda la collection con filtro de decomisos - tarmdecomisoarmas.addAll(cdecomisos); - //Add toda la collection con filtro de operacion - tarmdecomisoarmas.addAll(operaciontransacciones); - - pRequest.getResponse().put("RPRTEDESTRUCCIONDEARMAS", tarmdecomisoarmas); - return pRequest; - } - - /** - * Metodo para obtener los codigos - */ - private String codigos(String parametro) { - String codigo = null; - TgeneParameters tgeneParameters; - try { - tgeneParameters = TgeneParameters.find( - PersistenceHelper.getEntityManager(), new TgeneParametersKey( - parametro, new Integer(1))); - if (tgeneParameters == null || tgeneParameters.getTextvalue() == null) { - codigo = codigosTemp(parametro); - } else { - codigo = tgeneParameters.getTextvalue(); - } - - } catch (Exception e) { - return codigosTemp(parametro); - } - - return codigo; - } - - /** - * En caso de no poder acceder a la base se asigna codigo temporal - * - * @param parametro - * @return - * @throws Exception - */ - private String codigosTemp(String parametro) { - String codigoTemp = null; - if (CODIGO_DECOMISADA.equals(parametro)) { - codigoTemp = "DEC"; - } else if (CODIGO_INCAUTADA.equals(parametro)) { - codigoTemp = "INC"; - } else if (CODIGO_ENTV.equals(parametro)) { - codigoTemp = "ENTR"; - } else if (CODIGO_ABAN.equals(parametro)) { - codigoTemp = "ABA"; - } else if (CODIGO_RECL.equals(parametro)) { - codigoTemp = "RECL"; - } else if (CODIGO_DIAS_DECOMISO.equals(parametro)) { - codigoTemp = "0"; - } - return codigoTemp; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarInfoCertificado.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarInfoCertificado.java.svn-base deleted file mode 100644 index 9b55760..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/solicitud/.svn/text-base/VerificarInfoCertificado.java.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -package com.fp.armas.rules.query.solicitud; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -public class VerificarInfoCertificado extends QueryRule{ - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryJsf qry = new QueryJsf(); - qry.execute(pQueryRequest); - - List datos = (List)pQueryRequest.getResponse().get("VERIFICARINFORMACIONCERTIFICADO"); - return pQueryRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/entries deleted file mode 100644 index 46bcc19..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/entries +++ /dev/null @@ -1,303 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ArmasId.java -file - - - - -2022-07-28T03:40:40.855795Z -fc652378e8b1a27bb30342eca1d8a7cb -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4033 - -ConsultaLogin.java -file - - - - -2022-07-28T03:40:40.856795Z -d52d689d89091134a09f3f47112f17a9 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2548 - -DatosPerson.java -file - - - - -2022-07-28T03:40:40.856795Z -a4782384ebf3dcb2eef5d25c3f29aece -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -16978 - -ColaImpresion.java -file - - - - -2022-07-28T03:40:40.856795Z -ac2592306a55bf5cbe4ecec8aff5827e -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -5318 - -ImagenPersona.java -file - - - - -2022-07-28T03:40:40.857795Z -b7b7ceb194a5f59cb8a2e0e24eb30fea -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2087 - -ConsultaImpresionProceso.java -file - - - - -2022-07-28T03:40:40.857795Z -02defc46ed4e7902073d4fd50982d4a2 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3166 - -JefeCentroImpresion.java -file - - - - -2022-07-28T03:40:40.858795Z -c1db5c471a605b88924a076be311442e -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3937 - -ConsultaXpathDocumento.java -file - - - - -2022-07-28T03:40:40.858795Z -4aef6f5ea579cb9cd3508aeee4603266 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1591 - -util -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ArmasId.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ArmasId.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ArmasId.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ColaImpresion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ColaImpresion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ColaImpresion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaImpresionProceso.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaImpresionProceso.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaImpresionProceso.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaLogin.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaLogin.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaLogin.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaXpathDocumento.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaXpathDocumento.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ConsultaXpathDocumento.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ImagenPersona.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ImagenPersona.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/ImagenPersona.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/JefeCentroImpresion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/JefeCentroImpresion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/prop-base/JefeCentroImpresion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ArmasId.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ArmasId.java.svn-base deleted file mode 100644 index cc1b536..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ArmasId.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import com.fp.armas.rules.query.webservices.util.ArmaUtil; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.parmas.dto.ws.ArmaDto; - -/** - * Clase que realiza el m&ecaute;todo para obtener el arma a través de su id - * @author dcruz - * - */ -public class ArmasId extends QueryRule { - - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - ArmaDto armaDto = null; - try { - String carma = (String) pRequest.get("codigoarma"); - if(carma!=null && !carma.isEmpty()){ - armaDto = ArmaUtil.getInstancia().obtenerArmaId(carma); - - } - String ctag = (String) pRequest.get("codigotag"); - if(ctag!=null && !ctag.isEmpty()){ - armaDto = ArmaUtil.getInstancia().obtenerArmaIdPorTag(ctag); - - } - pRequest.getResponse().put("ARMASWS", armaDto!=null?armaDto:null); - return pRequest; - } catch (Throwable e) { - throw new Exception(e); - } - } - -// /** -// * Completa los datos del arma encontrada -// * @param armaDto dto de arma -// * @param tarmArmas objeto tipo {@link TarmArmas} -// * @throws CommondbException -// * @throws Exception -// */ -// private ArmaDto completaArma(ArmaDto armaDto, TarmArmas tarmArmas) throws CommondbException, Exception{ -// armaDto = new ArmaDto(); -// armaDto.setIdArma(tarmArmas.getPk()); -// armaDto.setCantidad(tarmArmas.getCantidad()); -// armaDto.setSerie(tarmArmas.getLote()); -// TgeneCatalogDetail estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : "")); -// armaDto.setEstado(estado != null ? estado.getDescription() : ""); -// TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo()); -// if(tipoArmaExplosivo != null){ -// TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : "")); -// armaDto.setClase(clase != null ? clase.getDescription():null); -// TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : "")); -// armaDto.setTipo(tipoArma != null ? tipoArma.getDescription():null); -// TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : "")); -// armaDto.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null); -// TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : "")); -// armaDto.setCalibre(calibre != null ? calibre.getDescription() : null); -// TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : "")); -// armaDto.setLongitud(longitud != null ? longitud.getDescription() : null); -// } -// return armaDto; -// } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ColaImpresion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ColaImpresion.java.svn-base deleted file mode 100644 index dcf9d0c..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ColaImpresion.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.query.webservices.util.ColaImpresionUtil; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Componente que realiza la búsquedas de los datos de impresión de un usuario - * @author dcruz - * - */ -public class ColaImpresion extends QueryRule{ - - private static final long serialVersionUID = -3993166768741911054L; - private static final String QUERY_USUARIO_ID = "SELECT o FROM TsafeUserDetail o WHERE o.pk.usercode=:usercode AND o.pk.dateto=:dateto"; - private static final String QUERY_COLA_IMPRESION = "SELECT o.* FROM TarmColadeImpresion o " - + "left join tarmdocumentohabilitante i on o.cdocumento = i.cdocumento " - + "left join tarmsolicitud k on i.csolicitud = k.csolicitud " - + "WHERE o.estadoimpresion=:estado and i.ccentrocontrol = :ccentrocontrol and coalesce(k.estado,'APB') IN ('APB','FIN')"; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - Query query; - List lcolaImpresion = null; - try { - String estado = (String) pRequest.get("estado"); - String usercode = (String) pRequest.get("usercode"); - System.out.println("estado..."+estado); - System.out.println("usercode..."+usercode); - query = PersistenceHelper.getEntityManager().createQuery(QUERY_USUARIO_ID); - query.setParameter("usercode", usercode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ltsafeUserDetails = query.getResultList(); - TsafeUserDetail tsafeUserDetail; - if(ltsafeUserDetails != null && !ltsafeUserDetails.isEmpty()){ - tsafeUserDetail = ltsafeUserDetails.iterator().next(); - }else{ - return pRequest; - } - //centro control - query=PersistenceHelper.getEntityManager().createQuery("select o from TarmCentroControl o" - + " where o.pk=(select p.ccentrocontrol from TarmCentroControlJur p " - + " where p.provincecode=(select pr.provincecode from TcustPersonAddress pr " - + " where pr.pk.personcode=:personcode and" - + " pr.pk.dateto=:dateto and" - + " pr.principal='Y' and" - + " pr.pk.addressnumber=(select max(q.pk.addressnumber) from TcustPersonAddress q " - + " where q.pk.personcode=:personcode and" - + " q.pk.dateto=:dateto and" - + " q.principal='Y')))"); - query.setParameter("personcode", tsafeUserDetail.getPk().getPersoncode()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List tarmCentroControls = query.getResultList(); - TarmCentroControl tarmCentroControl; - if(tarmCentroControls != null && !tarmCentroControls.isEmpty()){ - tarmCentroControl = tarmCentroControls.iterator().next(); - }else{ - return pRequest; - } - System.out.println("QUERY COLA IMPRESION: "+QUERY_COLA_IMPRESION); - query = PersistenceHelper.getEntityManager().createNativeQuery(QUERY_COLA_IMPRESION); - query.setParameter("estado", estado); - query.setParameter("ccentrocontrol", tarmCentroControl.getPk()); - - List coladeImpresionList = new ArrayList(); - List ltarmColadeImpresionsTMP = query.getResultList(); - for(Object[]tmp:ltarmColadeImpresionsTMP){ - TarmColadeImpresion colaImpresionObj = new TarmColadeImpresion(); - colaImpresionObj.setPk(tmp[3].toString()); - colaImpresionObj.setEstadoimpresion(tmp[1].toString()); - colaImpresionObj.setFechaimpresion((Timestamp) tmp[4]); - colaImpresionObj.setEstadoimpresioncode(tmp[2].toString()); - colaImpresionObj.setCdocumento(((BigDecimal) tmp[0]).longValue()); - colaImpresionObj.setFecharegistro(new Date(((Timestamp) tmp[5]).getTime())); - if (tmp[6] != null) - colaImpresionObj.setCodigotarjeta(tmp[6].toString()); - coladeImpresionList.add(colaImpresionObj); - } - lcolaImpresion = ColaImpresionUtil.getInstancia().completaColaImpresion(coladeImpresionList, tsafeUserDetail.getPk().getPersoncode(), tsafeUserDetail.getPk().getUsercode()); - pRequest.getResponse().put("COLAIMPRESION", lcolaImpresion); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaImpresionProceso.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaImpresionProceso.java.svn-base deleted file mode 100644 index 7ab3cc0..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaImpresionProceso.java.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import org.joda.time.DateTime; - -import com.fp.armas.rules.query.webservices.util.ColaImpresionUtil; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; - -/** - * Consulta los datos de impresión del proceso - * @author dcruz - * - */ -public class ConsultaImpresionProceso extends QueryRule { - - private static final long serialVersionUID = -7675701723545274414L; - public static final String QUERY_COLA_SOLICITUD = "SELECT o.* FROM TarmColadeImpresion o WHERE o.estadoimpresion='PIMPR' and o.cdocumento " - + "IN ((SELECT i.cdocumento FROM TarmDocumentoHabilitante i WHERE i.csolicitud IN (SELECT c.CSOLICITUD FROM TarmSolicitud c " - + "WHERE c.estado IN ('APB','FIN') and c.numerosolicitud=:numerosolicitud)) UNION (SELECT SD.cdocumento FROM tarmsolicituddocumento SD WHERE sd.csolicitud " - + "IN (SELECT c.CSOLICITUD FROM TarmSolicitud c WHERE c.estado IN ('APB','FIN') and c.numerosolicitud=:numerosolicitud)))"; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - // TODO Auto-generated method stub - List lcolaImpresion = null; - try { - - String codigosolicitud = (String) pRequest.get("CODIGOSOLICITUD"); - System.out.println("codigosolicitud.."+codigosolicitud); - System.out.println(QUERY_COLA_SOLICITUD); - Query query = PersistenceHelper.getEntityManager().createNativeQuery(QUERY_COLA_SOLICITUD); - query.setParameter("numerosolicitud", codigosolicitud); - - List ltarmColadeImpresions = new ArrayList(); - List ltarmColadeImpresionsTMP = query.getResultList(); - - for(Object[]tmp:ltarmColadeImpresionsTMP){ - TarmColadeImpresion colaImpresionObj = new TarmColadeImpresion(); - colaImpresionObj.setPk(tmp[3].toString()); - colaImpresionObj.setEstadoimpresion(tmp[1].toString()); - colaImpresionObj.setFechaimpresion((Timestamp) tmp[4]); - colaImpresionObj.setEstadoimpresioncode(tmp[2].toString()); - colaImpresionObj.setCdocumento(((BigDecimal) tmp[0]).longValue()); - colaImpresionObj.setFecharegistro(new Date(((Timestamp) tmp[5]).getTime())); - if (tmp[6] != null) - colaImpresionObj.setCodigotarjeta(tmp[6].toString()); - ltarmColadeImpresions.add(colaImpresionObj); - } - - lcolaImpresion = ColaImpresionUtil.getInstancia().completaColaImpresion(ltarmColadeImpresions); - pRequest.getResponse().put("COLAIMPRESION", lcolaImpresion); - pRequest.getResponse().put("COLAIMPRESION", lcolaImpresion); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaLogin.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaLogin.java.svn-base deleted file mode 100644 index 6c72ea5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaLogin.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.query.webservices.util.PersonaUtil; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Servicio que retorna un 0 si existe el login, 1 si es incorrecto - * @author dcruz - * - */ -public class ConsultaLogin extends QueryRule { - - private static final long serialVersionUID = -1758582166779180497L; - private static final String QUERY_USER = "SELECT o FROM TsafeUserDetail o WHERE o.pk.usercode=:usercode AND o.pk.dateto=:dateto"; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - try { - String usercode = (String) pRequest.get("USERCODE"); - String password = (String) pRequest.get("PASSWORD"); - if(password != null){//Servicio consulta login password - StringBuilder sb = new StringBuilder(QUERY_USER); - sb.append(" AND o.password=:password"); - Query query = PersistenceHelper.getEntityManager().createQuery(sb.toString()); - query.setParameter("usercode", usercode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("password", password); - List ltsafeUserDetails = query.getResultList(); - if(ltsafeUserDetails != null && !ltsafeUserDetails.isEmpty()){ - TsafeUserDetail tsafeUserDetail = ltsafeUserDetails.iterator().next(); - String localidad = PersonaUtil.getInstancia().obtenerLocacionPersona(tsafeUserDetail.getPk().getPersoncode()); - pRequest.getResponse().put("RESPUESTA", localidad.toString()); - } - } else {//Servicio consulta login - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_USER); - query.setParameter("usercode", usercode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ltsafeUserDetails = query.getResultList(); - if(ltsafeUserDetails != null && !ltsafeUserDetails.isEmpty()){ - pRequest.getResponse().put("RESPUESTA", "0"); - }else{ - pRequest.getResponse().put("RESPUESTA", "1"); - } - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - pRequest.getResponse().put("RESPUESTA", "2"); - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaXpathDocumento.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaXpathDocumento.java.svn-base deleted file mode 100644 index adf07a4..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ConsultaXpathDocumento.java.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import static com.fp.armas.rules.query.webservices.util.ColaImpresionUtil.QUERY_SOLICITUD_NUM; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; - -/** - * Consulta el xpath del documento habilitante y dicho xpath - * @author dcruz - * - */ -public class ConsultaXpathDocumento extends QueryRule { - - private static final long serialVersionUID = 7391996435678161968L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - String numerosolicitud = (String) pRequest.get("NUMEROSOLICITUD"); - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_SOLICITUD_NUM); - query.setParameter("numerosolicitud", numerosolicitud); - List ltarmSolicitud = query.getResultList(); - if(ltarmSolicitud != null && !ltarmSolicitud.isEmpty()){ - TarmSolicitud tarmSolicitud = ltarmSolicitud.iterator().next(); - Query queryDoc = PersistenceHelper.createQuery("SELECT o.xpath FROM TarmDocumentoHabilitante o WHERE o.csolicitud=:csolicitud "); - queryDoc.setParameter("csolicitud", tarmSolicitud.getPk()); - List lxpath = queryDoc.getResultList(); - if(lxpath != null && !lxpath.isEmpty()){ - String xpath = lxpath.iterator().next(); - pRequest.getResponse().put("XPATHDOCUMENTOSOLICITUD", xpath); - } - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/DatosPerson.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/DatosPerson.java.svn-base deleted file mode 100644 index 5cbb615..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/DatosPerson.java.svn-base +++ /dev/null @@ -1,292 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.query.webservices.util.InstitucionSnapEnum; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.dto.ws.DatosSnapDto; -import com.fp.persistence.parmas.dto.ws.InfoGuardiaDto; -import com.fp.persistence.parmas.dto.ws.TramiteDto; -import com.fp.persistence.parmas.dto.ws.DatosArmaDto; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Componente que realiza la búsquedas de los datos de necesarios para el WS de la SNAP - * @author Manuel Cepeda - * - */ -public class DatosPerson extends QueryRule{ - - private static final long serialVersionUID = -3993166768741911053L; - - /** - * Permite obtener todos los datos necesarios para el WS de SNAP - * @param QueryRequest pRequest - * @return QueryRequest - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - Query query; - - try { - DatosSnapDto personaSnapDto = new DatosSnapDto(); - - query = PersistenceHelper.getEntityManager().createQuery("select p from TgeneParameters p where pk.code= :code and pk.companycode=:companycode"); - query.setParameter("code", "PATH.ALFRESCO.ARCHIVOS"); - query.setParameter("companycode", 1); - List lparametros = query.getResultList(); - if(lparametros != null && !lparametros.isEmpty()){ - personaSnapDto.setxPathLocation(lparametros.get(0).getTextvalue()); - } - - String identificacion = (String) pRequest.get("identificacion"); - String institucion = (String) pRequest.get("institucion"); - String serie = (String) pRequest.get("serie"); - query = PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.identification= :identification and pd.pk.dateto=:dateto order by DATETO DESC"); - query.setParameter("identification", identificacion); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ltsafeUserDetails = query.getResultList(); - if(ltsafeUserDetails != null && !ltsafeUserDetails.isEmpty()){ - personaSnapDto.setCodigoPersona(ltsafeUserDetails.get(0).getPk().getPersoncode()); - personaSnapDto.setRazonSocial(ltsafeUserDetails.get(0).getName()); - } - - //direccion principal - query=PersistenceHelper.getEntityManager().createQuery("select pa from TcustPersonAddress pa where pa.pk.personcode=:personcode and pa.pk.dateto=:dateto and pa.principal='Y'"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List lcustPersonAddress = query.getResultList(); - if(lcustPersonAddress != null && !lcustPersonAddress.isEmpty()){ - personaSnapDto.setDireccion(lcustPersonAddress.get(0).getAddress()); - } - - //email - query=PersistenceHelper.getEntityManager().createQuery("select pa from TcustPersonAddress pa where pa.pk.personcode=:personcode and pa.pk.dateto=:dateto and pa.addresstypecatalog=3"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List lcustPersonEmail = query.getResultList(); - if(lcustPersonEmail != null && !lcustPersonEmail.isEmpty()){ - personaSnapDto.setEmail(lcustPersonEmail.get(0).getAddress()); - } - - //telefono - query=PersistenceHelper.getEntityManager().createQuery("select pp from TcustPersonPhone pp where pp.pk.personcode=:personcode and pp.pk.dateto=:dateto and pp.phonetypecatalog=1"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List lcustPersonTelefono = query.getResultList(); - if(lcustPersonTelefono != null && !lcustPersonTelefono.isEmpty()){ - personaSnapDto.setTelefonoFijo(lcustPersonTelefono.get(0).getPhonenumber()); - } - - //celular - query=PersistenceHelper.getEntityManager().createQuery("select pp from TcustPersonPhone pp where pp.pk.personcode=:personcode and pp.pk.dateto=:dateto and pp.phonetypecatalog=2"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List lcustPersonCelular = query.getResultList(); - if(lcustPersonCelular != null && !lcustPersonCelular.isEmpty()){ - personaSnapDto.setTelefonoCelular(lcustPersonCelular.get(0).getPhonenumber()); - } - - //test psocilogico - query=PersistenceHelper.getEntityManager().createQuery("select te from TarmEvaluacion te where te.personcode=:personcode and te.tipoevaluacion = 'PSICOLOGICA' order by te.fechaexpiracion desc"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaEvaluacion = query.getResultList(); - if(listaEvaluacion != null && !listaEvaluacion.isEmpty() && institucion.equals(InstitucionSnapEnum.COPS.getNombre())){ - personaSnapDto.setTestPsicologico(listaEvaluacion.get(0).getInformexpath()); - } - - //tramites - List listaTramitesHabilitantes = new ArrayList<>(); - query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(73, 179) order by dh.fechaexpiracion desc"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaTramiteCM = query.getResultList(); - if(listaTramiteCM != null && !listaTramiteCM.isEmpty()){ - listaTramitesHabilitantes.add(listaTramiteCM.get(0)); - } - - query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(74, 180) order by dh.fechaexpiracion desc"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaTramiteMA = query.getResultList(); - if(listaTramiteMA != null && !listaTramiteMA.isEmpty()){ - listaTramitesHabilitantes.add(listaTramiteMA.get(0)); - } - - query=PersistenceHelper.getEntityManager().createQuery("select dh from TarmDocumentoHabilitante dh where dh.pk.personcode=:personcode and dh.ctramite in(76, 182) order by dh.fechaexpiracion desc"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaTramiteSP = query.getResultList(); - if(listaTramiteSP != null && !listaTramiteSP.isEmpty()){ - listaTramitesHabilitantes.add(listaTramiteSP.get(0)); - } - - List listaTramites = new ArrayList<>(); - if(listaTramitesHabilitantes != null && !listaTramitesHabilitantes.isEmpty()){ - for(TarmDocumentoHabilitante tramitesHabilitantes: listaTramitesHabilitantes){ - TramiteDto tramiteDto = new TramiteDto(); - tramiteDto.setTramite(tramitesHabilitantes.getCtramite().toString()); - tramiteDto.setFechaEmision(tramitesHabilitantes.getFechaemision()); - tramiteDto.setFechaExpiracion(tramitesHabilitantes.getFechaexpiracion()); - - //informacion del tramite - query=PersistenceHelper.getEntityManager().createQuery("select CONCAT(tt.description, ' - ', ta.description, ' - ', ca.description, ' - ', ua.description) from TarmTramite t," - + " TgeneCatalogDetail tt, TgeneCatalogDetail ta, TgeneCatalogDetail ca, TgeneCatalogDetail ua " - + " where tt.pk.catalog = t.tipotramite and tt.pk.catalogcode = t.tipotramitecodigo" - + " and ta.pk.catalog = t.tipoautorizacion and ta.pk.catalogcode = t.tipoautorizacioncodigo" - + " and ca.pk.catalog = t.categoria and ca.pk.catalogcode = t.categoriacodigo" - + " and ua.pk.catalog = t.usoactividad and ua.pk.catalogcode = t.usoactividadcodigo" - + " and t.pk = :ctramite"); - query.setParameter("ctramite", tramitesHabilitantes.getCtramite()); - - List tramiteDescripcion = query.getResultList(); - if(tramiteDescripcion != null && !tramiteDescripcion.isEmpty()){ - tramiteDto.setNumeroDocumento(tramiteDescripcion.get(0).toString()); - } - listaTramites.add(tramiteDto); - } - } - personaSnapDto.setListaTramites(listaTramites); - - if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre()) || institucion.equals(InstitucionSnapEnum.COPS.getNombre()) || institucion.equals(InstitucionSnapEnum.FISCALIA_GENERAL.getNombre())){ - if("RUC".equals(ltsafeUserDetails.get(0).getIdentificationcatalog())){ - query=PersistenceHelper.getEntityManager().createQuery("select g from TarmGuardias g where g.cempresa=:personcode"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaGuardias = query.getResultList(); - if(listaGuardias != null && !listaGuardias.isEmpty()){ - List listaInfoGuardias = new ArrayList<>(); - for(TarmGuardias tarmGuardias : listaGuardias){ - InfoGuardiaDto infoGuardiaDto = new InfoGuardiaDto(); - infoGuardiaDto.setEstado(tarmGuardias.getEstado()); - - query=PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.pk.personcode=:personcode"); - query.setParameter("personcode", tarmGuardias.getPk()); - List listaPeson = query.getResultList(); - if(listaPeson != null && !listaPeson.isEmpty()){ - infoGuardiaDto.setNombre(listaPeson.get(0).getName()); - } - listaInfoGuardias.add(infoGuardiaDto); - } - personaSnapDto.setListaGuardias(listaInfoGuardias); - } - }else{ - query=PersistenceHelper.getEntityManager().createQuery("select g from TarmGuardias g where g.pk=:personcode"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaPersonaGuardia = query.getResultList(); - if(listaPersonaGuardia != null && !listaPersonaGuardia.isEmpty() && listaPersonaGuardia.get(0).getCempresa() != null){ - List listaInfoGuardias = new ArrayList<>(); - InfoGuardiaDto infoGuardiaDto = new InfoGuardiaDto(); - infoGuardiaDto.setEstado(listaPersonaGuardia.get(0).getEstado()); - - query=PersistenceHelper.getEntityManager().createQuery("select pd from TcustPersonDetail pd where pd.pk.personcode=:personcode"); - query.setParameter("personcode", listaPersonaGuardia.get(0).getCempresa()); - List listaEmpresa = query.getResultList(); - if(listaEmpresa != null && !listaEmpresa.isEmpty()){ - infoGuardiaDto.setEmpresa(listaEmpresa.get(0).getName()); - } - listaInfoGuardias.add(infoGuardiaDto); - personaSnapDto.setListaGuardias(listaInfoGuardias); - } - - } - - //datos del arma - query=PersistenceHelper.getEntityManager().createQuery("select ta from TarmArmas ta, TarmRegistroArmas regarm, TcustPersonDetail pd " - + " where ta.cregistro = regarm.pk and pd.pk.personcode = regarm.personcode and pd.pk.dateto = :dateto" - + " and ta.lote = :lote and ta.ctipoarmaexplosivo in (select te.pk from TarmTipoArmaExplosivo te where te.clase = '0010000001')" - + " and pd.pk.personcode = :personcode"); - query.setParameter("lote", serie); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - List listaArma = query.getResultList(); - if(listaArma != null && !listaArma.isEmpty()){ - List listaDatosArma = new ArrayList<>(); - for(TarmArmas tarmArmas : listaArma){ - DatosArmaDto datosArmaDto = new DatosArmaDto(); - datosArmaDto.setLote(tarmArmas.getLote()); - datosArmaDto.setTipoFabricacion(tarmArmas.getTipofabricacion()); - - //marca - query=PersistenceHelper.getEntityManager().createQuery("select cat from TgeneCatalogDetail cat, TarmArmas arm " - + "where cat.pk.catalog = arm.marca and cat.pk.catalogcode = arm.marcacodigo and arm.pk = :carma"); - query.setParameter("carma", tarmArmas.getPk()); - List listaCatalogoMarca = query.getResultList(); - if(listaCatalogoMarca != null && !listaCatalogoMarca.isEmpty()){ - datosArmaDto.setMarca(listaCatalogoMarca.get(0).getDescription()); - } - - //datosArmaDto.setMarca(tarmArmas.getMarca()); - datosArmaDto.setModelo(tarmArmas.getModelo()); - datosArmaDto.setEstadoArma(tarmArmas.getEstado()); - - query=PersistenceHelper.getEntityManager().createQuery("select a from TarmArmaPruebas a where a.personcode = :personcode and a.carma = :carma"); - query.setParameter("personcode", ltsafeUserDetails.get(0).getPk().getPersoncode()); - query.setParameter("carma", tarmArmas.getPk()); - List listaArmaPrueba = query.getResultList(); - if(listaArmaPrueba != null && !listaArmaPrueba.isEmpty()){ - if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre())){ - datosArmaDto.setImagenImpronta(listaArmaPrueba.get(0).getXpathimpronta()); - datosArmaDto.setImagenArma(listaArmaPrueba.get(0).getXpathfotografia()); - } - datosArmaDto.setFichaTecnicaArma(listaArmaPrueba.get(0).getXpathfichatecarmas()); - } - - //clase - query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.clase and cat.pk.catalogcode = tae.clasecodigo" - + " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma"); - query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo()); - query.setParameter("carma", tarmArmas.getPk()); - List listaCatalogoClase = query.getResultList(); - if(listaCatalogoClase != null && !listaCatalogoClase.isEmpty()){ - datosArmaDto.setDescripcionClase(listaCatalogoClase.get(0).getDescription()); - } - - //tipo - query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.tipoarmaexplosivo and cat.pk.catalogcode = tae.tipoarmaexplosivocodigo" - + " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma"); - query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo()); - query.setParameter("carma", tarmArmas.getPk()); - List listaCatalogoTipo = query.getResultList(); - if(listaCatalogoTipo != null && !listaCatalogoTipo.isEmpty()){ - datosArmaDto.setDescripcionTipo(listaCatalogoTipo.get(0).getDescription()); - } - - //calibre - query=PersistenceHelper.getEntityManager().createQuery("select cat from TarmTipoArmaExplosivo tae, TgeneCatalogDetail cat, TarmArmas arm where cat.pk.catalog = tae.calibre and cat.pk.catalogcode = tae.calibrecodigo" - + " and tae.pk = arm.ctipoarmaexplosivo and tae.pk = :ctipoarmaexplosivo and arm.pk = :carma"); - query.setParameter("ctipoarmaexplosivo", tarmArmas.getCtipoarmaexplosivo()); - query.setParameter("carma", tarmArmas.getPk()); - List listaCatalogoCalibre = query.getResultList(); - if(listaCatalogoCalibre != null && !listaCatalogoCalibre.isEmpty()){ - datosArmaDto.setCalibre(listaCatalogoCalibre.get(0).getDescription()); - } - listaDatosArma.add(datosArmaDto); - } - personaSnapDto.setListaDatosArma(listaDatosArma); - } - } - - - - pRequest.getResponse().put("DATOSPERSONSNAP", personaSnapDto); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ImagenPersona.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ImagenPersona.java.svn-base deleted file mode 100644 index 74e301f..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/ImagenPersona.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.armas.rules.query.webservices; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.query.webservices.util.PersonaUtil; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.dto.ws.ImagenDto; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Componente que retorna la foto o logo de una persona sea esta natural o jurídica - * @author dcruz - * - */ -public class ImagenPersona extends QueryRule { - - private static final long serialVersionUID = -1019985182946646396L; - public static final String QUERY_PERSONA_IDENT = "SELECT o FROM TcustPersonDetail o WHERE o.identification = :identification AND o.pk.dateto=:dateto"; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - try { - System.out.println("Query ImagenPersona...................................................................."); - String numeroidentificacion = (String) pRequest.get("NUMEROIDENTIFICACION"); - System.out.println(QUERY_PERSONA_IDENT+".........."+numeroidentificacion+" ..... "+FormatDates.getDefaultExpiryTimestamp()); - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_PERSONA_IDENT); - query.setParameter("identification", numeroidentificacion); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ltcustPersonDetails = query.getResultList(); - System.out.println("tamanio ......."+ltcustPersonDetails.size()); - if(ltcustPersonDetails != null && !ltcustPersonDetails.isEmpty()){ - TcustPersonDetail tcustPersonDetail = ltcustPersonDetails.iterator().next(); - ImagenDto imagen = PersonaUtil.getInstancia().obtenerImagen(tcustPersonDetail.getPk().getPersoncode()); - pRequest.getResponse().put("IMAGENPERSONA", imagen); - } - } catch (Throwable e) { - - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/JefeCentroImpresion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/JefeCentroImpresion.java.svn-base deleted file mode 100644 index a3c236e..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/.svn/text-base/JefeCentroImpresion.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.armas.rules.query.webservices; - - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.query.webservices.util.CatalogoUtil; -import com.fp.armas.rules.query.webservices.util.PersonaUtil; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.dto.ws.JefeCentroControlDto; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; - -public class JefeCentroImpresion extends QueryRule { - - private static final long serialVersionUID = 8341638596202085693L; - private static final String QUERY_DOCUMENTO_NUM = "SELECT o FROM TarmDocumentoHabilitante o WHERE o.numerodocumento=:numerodocumento"; - private static final String QUERY_SOLICITUD_DOCUMENTO_NUM = "SELECT sd.csolicitud FROM tarmsolicituddocumento sd WHERE sd.cdocumento=:cDocumento and " - + " sd.csolicitud = (SELECT max(sd2.csolicitud) FROM tarmsolicituddocumento sd2 inner join tarmsolicitud sol on sol.csolicitud = sd2.csolicitud " - + " WHERE sd2.cdocumento=:cDocumento and sol.estado!='ANU')"; - /** - * Busca el jefe del centro de control de la solicitud asociada al documento expedido - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pRequest) throws Exception { - try { - JefeCentroControlDto jefeCentroControl = null; - String numerodocumento = (String) pRequest.get("NUMERODOCUMENTO"); - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_DOCUMENTO_NUM); - query.setParameter("numerodocumento", numerodocumento); - List ltarmDocumentoHabilitantes = query.getResultList(); - if(ltarmDocumentoHabilitantes != null && !ltarmDocumentoHabilitantes.isEmpty()){ - TarmDocumentoHabilitante documentoHabilitante = ltarmDocumentoHabilitantes.iterator().next(); - TarmSolicitud solicitud = null; - if(documentoHabilitante.getCsolicitud() != null){ - solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), documentoHabilitante.getCsolicitud()); - }else{ - Query querySolicitud = PersistenceHelper.getEntityManager().createNativeQuery(QUERY_SOLICITUD_DOCUMENTO_NUM); - querySolicitud.setParameter("cDocumento", documentoHabilitante.getPk()); - String codigoSolicitud = querySolicitud.getSingleResult().toString(); - if(codigoSolicitud!=null){ - solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(),codigoSolicitud); - } - } - if(solicitud != null && solicitud.getCcentrocontrol() != null){ - TarmCentroControl tarmCentroControl = TarmCentroControl.find(PersistenceHelper.getEntityManager(), solicitud.getCcentrocontrol()); - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), new TcustPersonDetailKey(tarmCentroControl.getPersoncode(), FormatDates.getDefaultExpiryTimestamp())); - jefeCentroControl = new JefeCentroControlDto(); - jefeCentroControl.setNombre(tcustPersonDetail.getName()); - jefeCentroControl.setFirma(tcustPersonDetail.getSign()); - jefeCentroControl.setUbicacion(PersonaUtil.getInstancia().obtenerLocacionPersona(tcustPersonDetail.getPk().getPersoncode())); - jefeCentroControl.setRangoJefe(CatalogoUtil.getInstancia().getDescripcion(tarmCentroControl.getGrado(), tarmCentroControl.getGradocodigo())); - pRequest.getResponse().put("JEFECENTRO", jefeCentroControl); - } - } - } catch (Throwable e) { - throw new Exception(e); - } - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/entries deleted file mode 100644 index 7ee5b67..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -InstitucionSnapEnum.java -file - - - - -2022-07-28T03:40:40.817795Z -59ee7510f4d097e3ec827c87a9eedc78 -2015-12-15T14:36:46.935255Z -4349 -mcepeda - - - - - - - - - - - - - - - - - - - - - -599 - -ColaImpresionUtil.java -file - - - - -2022-07-28T03:40:40.817795Z -5012c5ef0fec56136177932661c65765 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -14544 - -PersonaUtil.java -file - - - - -2022-07-28T03:40:40.818795Z -e1d4122f4a21dcce902d0f1fe18eadb0 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -10580 - -CatalogoUtil.java -file - - - - -2022-07-28T03:40:40.818795Z -00dae6801f766acdbea85b34af15bfdc -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2061 - -ArmaUtil.java -file - - - - -2022-07-28T03:40:40.818795Z -6cc7f9861ed81269d58672391154a6d2 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -9019 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ArmaUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ArmaUtil.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ArmaUtil.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/CatalogoUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/CatalogoUtil.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/CatalogoUtil.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ColaImpresionUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ColaImpresionUtil.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/ColaImpresionUtil.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/PersonaUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/PersonaUtil.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/prop-base/PersonaUtil.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ArmaUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ArmaUtil.java.svn-base deleted file mode 100644 index f67bdc2..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ArmaUtil.java.svn-base +++ /dev/null @@ -1,162 +0,0 @@ -package com.fp.armas.rules.query.webservices.util; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.dto.ws.ArmaDto; -import com.fp.persistence.parmas.inte.TarmTagArma; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; - -/** - * Clase de funcionalidades que trabajan con {@link ArmaDto} - * @author dcruz - * - */ -public class ArmaUtil { - - private static ArmaUtil INSTANCIA = new ArmaUtil(); - private static final String QUERY_ARMA_TAG = "SELECT o FROM TarmTagArma o WHERE o.pk.carma=:carma"; - private static final String QUERY_ARMA_TAG_ARMA = "SELECT o FROM TarmTagArma o WHERE o.pk.ctag=:ctag"; - - private ArmaUtil(){} - - public static ArmaUtil getInstancia() { - return INSTANCIA; - } - - public ArmaDto obtenerArmaId(String carma) { - ArmaDto arma = null; - try { - TarmArmas tarmArmas = PersistenceHelper.getEntityManager().find(TarmArmas.class, carma); - if(tarmArmas != null){ - arma = new ArmaDto(); - arma.setIdArma(tarmArmas.getPk()); - arma.setCantidad(tarmArmas.getCantidad()); - arma.setSerie(tarmArmas.getLote()); - if(tarmArmas.getMarca()!=null && tarmArmas.getMarcacodigo()!=null){ - TgeneCatalogDetail marca=TgeneCatalogDetail. - find(PersistenceHelper.getEntityManager(),new TgeneCatalogDetailKey(tarmArmas.getMarca(), tarmArmas.getMarcacodigo())); - if(marca!=null){ - arma.setMarca(marca.getDescription()); - } - } - - arma.setModelo(tarmArmas.getModelo()); - TgeneCatalogDetail estado; - - estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : "")); - arma.setEstado(estado != null ? estado.getDescription() : ""); - arma.setTagAsociado(obtenerTag(arma.getIdArma())); - TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo != null){ - TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : "")); - arma.setClase(clase != null ? clase.getDescription():null); - TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : "")); - arma.setTipo(tipoArma != null ? tipoArma.getDescription():null); - TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : "")); - arma.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null); - TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : "")); - arma.setCalibre(calibre != null ? calibre.getDescription() : null); - TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : "")); - arma.setLongitud(longitud != null ? longitud.getDescription() : null); - } - return arma; - } - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - return null; - } - /** - * Obtiene el ArmaDto por el codigo del tag - * @param ctag codigo del tag - * @return ArmaDto - */ - public ArmaDto obtenerArmaIdPorTag(String ctag) { - ArmaDto arma = null; - try { - String carma = obtenerTagPorId(ctag); - if(carma!=null && !carma.isEmpty()){ - TarmArmas tarmArmas = PersistenceHelper.getEntityManager().find(TarmArmas.class, carma); - if(tarmArmas != null){ - arma = new ArmaDto(); - arma.setIdArma(tarmArmas.getPk()); - arma.setCantidad(tarmArmas.getCantidad()); - arma.setSerie(tarmArmas.getLote()); - if(tarmArmas.getMarca()!=null && tarmArmas.getMarcacodigo()!=null){ - TgeneCatalogDetail marca=TgeneCatalogDetail. - find(PersistenceHelper.getEntityManager(),new TgeneCatalogDetailKey(tarmArmas.getMarca(), tarmArmas.getMarcacodigo())); - if(marca!=null){ - arma.setMarca(marca.getDescription()); - } - } - - arma.setModelo(tarmArmas.getModelo()); - TgeneCatalogDetail estado; - - estado = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tarmArmas.getEstado() != null ? tarmArmas.getEstado() : "", tarmArmas.getEstadocodigo() != null ? tarmArmas.getEstadocodigo() : "")); - arma.setEstado(estado != null ? estado.getDescription() : ""); - arma.setTagAsociado(ctag); - TarmTipoArmaExplosivo tipoArmaExplosivo = TarmTipoArmaExplosivo.find(PersistenceHelper.getEntityManager(), tarmArmas.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo != null){ - TgeneCatalogDetail clase= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getClase() != null ? tipoArmaExplosivo.getClase() : "", tipoArmaExplosivo.getClasecodigo() != null ? tipoArmaExplosivo.getClasecodigo() : "")); - arma.setClase(clase != null ? clase.getDescription():null); - TgeneCatalogDetail tipoArma= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getTipoarmaexplosivo() != null ? tipoArmaExplosivo.getTipoarmaexplosivo() : "", tipoArmaExplosivo.getTipoarmaexplosivocodigo() != null ? tipoArmaExplosivo.getTipoarmaexplosivocodigo() : "")); - arma.setTipo(tipoArma != null ? tipoArma.getDescription():null); - TgeneCatalogDetail unidadMedida= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getUnidadmedidapeso() != null ? tipoArmaExplosivo.getUnidadmedidapeso():"", tipoArmaExplosivo.getUnidadmedidapesocodigo() != null ? tipoArmaExplosivo.getUnidadmedidapesocodigo() : "")); - arma.setUnidadMedidaPeso(unidadMedida != null ? unidadMedida.getDescription():null); - TgeneCatalogDetail calibre= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getCalibre() != null ? tipoArmaExplosivo.getCalibre() : "", tipoArmaExplosivo.getCalibrecodigo() != null ? tipoArmaExplosivo.getCalibrecodigo() : "")); - arma.setCalibre(calibre != null ? calibre.getDescription() : null); - TgeneCatalogDetail longitud= TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(tipoArmaExplosivo.getLongitud() != null ? tipoArmaExplosivo.getLongitud() : "", tipoArmaExplosivo.getLongitudcodigo() != null ? tipoArmaExplosivo.getLongitudcodigo() : "")); - arma.setLongitud(longitud != null ? longitud.getDescription() : null); - } - return arma; - } - } - - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - return null; - } - - /** - * Retorna el tag del arma asociado - * @param carma - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerTag(String carma) { - String tagArma = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_ARMA_TAG); - query.setParameter("carma", carma); - List lTarmTagArmas = query.getResultList(); - if(lTarmTagArmas != null && !lTarmTagArmas.isEmpty()){ - tagArma = lTarmTagArmas.iterator().next().getPk().getCtag(); - } - return tagArma; - } - - /** - * Retorna el carma asociado al tag - * @param ctag - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerTagPorId(String ctag) { - String tagArma = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_ARMA_TAG_ARMA); - query.setParameter("ctag", ctag); - List lTarmTagArmas = query.getResultList(); - if(lTarmTagArmas != null && !lTarmTagArmas.isEmpty()){ - tagArma = lTarmTagArmas.iterator().next().getPk().getCarma(); - } - return tagArma; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/CatalogoUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/CatalogoUtil.java.svn-base deleted file mode 100644 index 55dae4f..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/CatalogoUtil.java.svn-base +++ /dev/null @@ -1,66 +0,0 @@ -package com.fp.armas.rules.query.webservices.util; - -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; - -public class CatalogoUtil { - - private static CatalogoUtil INSTANCIA = new CatalogoUtil(); - - private CatalogoUtil(){} - - /** - * Retorna una instancia de la clase - * @return - */ - public static CatalogoUtil getInstancia() { - return INSTANCIA; - } - - /** - * Retorna la descripción del catálogo - * @param catalogo - * @param catalogocodigo - * @return - */ - public String getDescripcion(String catalogo, String catalogocodigo) { - String descripcion = null; - try { - if(catalogo != null && catalogocodigo != null){ - TgeneCatalogDetail tgeneCatalogDetail = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(catalogo, catalogocodigo)); - if(tgeneCatalogDetail != null){ - descripcion = tgeneCatalogDetail.getDescription(); - } - } - } catch (CommondbException e) { - APPLogger.getLogger("WEBSERVICES").error(e.getMessage(), e); - } catch (Exception e) { - APPLogger.getLogger("WEBSERVICES").error(e.getMessage(), e); - } - return descripcion; - } - - /** - * Devuelve el legalcode del catálogo - * @param catalogo - * @param catalogocodigo - * @return - */ - public String getLegalCode(String catalogo, String catalogocodigo) { - String legalcode = null; - try { - if(catalogo != null && catalogocodigo != null){ - TgeneCatalogDetail tgeneCatalogDetail = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), new TgeneCatalogDetailKey(catalogo, catalogocodigo)); - if(tgeneCatalogDetail != null){ - legalcode = tgeneCatalogDetail.getLegalcode(); - } - } - } catch (Throwable e) { - APPLogger.getLogger("WEBSERVICES").error(e.getMessage(), e); - } - return legalcode; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ColaImpresionUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ColaImpresionUtil.java.svn-base deleted file mode 100644 index 9f1f2bc..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/ColaImpresionUtil.java.svn-base +++ /dev/null @@ -1,288 +0,0 @@ -package com.fp.armas.rules.query.webservices.util; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.parmas.dto.ws.ArmaDto; -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.dto.ws.DocumentoDto; -import com.fp.persistence.parmas.dto.ws.PersonaDto; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; - -public class ColaImpresionUtil { - - public static final String QUERY_SOLICITUD_NUM = "SELECT o FROM TarmSolicitud o WHERE o.numerosolicitud=:numerosolicitud"; - private static ColaImpresionUtil INSTANCIA = new ColaImpresionUtil(); - - private ColaImpresionUtil(){} - - public static ColaImpresionUtil getInstancia() { - return INSTANCIA; - } - - /** - * Método en el que se completa la información que se va a exponer en el web service - * @param coladeImpresionList una lista de {@link TarmColadeImpresion} - * @param personcode código de la persona - * @param usercode código del usuario - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public List completaColaImpresion(List coladeImpresionList, Integer personcode, String usercode) throws Exception{ - List lcolaImpresion = null; - if(coladeImpresionList != null && !coladeImpresionList.isEmpty()){ - lcolaImpresion = new ArrayList(); - for (TarmColadeImpresion tarmColadeImpresion : coladeImpresionList) { - ColaImpresionDto colaImpresion = new ColaImpresionDto(); - colaImpresion.setIdImpresion(tarmColadeImpresion.getPk()); - colaImpresion.setFechaImpresion(tarmColadeImpresion.getFechaimpresion()); - colaImpresion.setFechaRegistro(new Timestamp(tarmColadeImpresion.getFecharegistro().getTime())); - - TarmDocumentoHabilitante documento = TarmDocumentoHabilitante.find(PersistenceHelper.getEntityManager(), tarmColadeImpresion.getCdocumento()); - PersonaDto personaDto = PersonaUtil.getInstancia().obtenerPersonaPorId(documento.getPersoncode(), usercode); - colaImpresion.setPersona(personaDto); - colaImpresion.setDocumento(obtenerDocumentoId(tarmColadeImpresion.getCdocumento(), personaDto)); - - List pruebas=null; - List pruebasRealizadasAlArma=null; - if(colaImpresion.getDocumento()!=null && colaImpresion.getDocumento().getCarma()!=null){ - StringBuilder sql = new StringBuilder("select o from TarmArmaPruebas o where o.pk=(select max(p.pk) from TarmArmaPruebas p where p.carma='"+colaImpresion.getDocumento().getCarma()+"' and p.apruebaevaluacion='Y')"); - System.out.println("sql....."+sql); - pruebas=PersistenceHelper.getEntityManager().createQuery(sql.toString()).getResultList(); - // Se valida si existe alguna prueba de registro balistico para el arma - StringBuilder sql2 = new StringBuilder("select o from TarmArmaPruebas o where o.carma='"+colaImpresion.getDocumento().getCarma()+"'"); - pruebasRealizadasAlArma=PersistenceHelper.getEntityManager().createQuery(sql2.toString()).getResultList(); - } - - if(pruebas!=null && pruebas.size()>0){ - //ingresa el arma - ArmaDto arma=ArmaUtil.getInstancia().obtenerArmaId(colaImpresion.getDocumento().getCarma()); - colaImpresion.setArma(arma); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - }else if(pruebas!=null && pruebas.size()==0 && pruebasRealizadasAlArma.isEmpty()){ - // Usado para los datos migrados que no fueron ingresados por solicitud y no tienen prueba de registro balistico - ArmaDto arma=ArmaUtil.getInstancia().obtenerArmaId(colaImpresion.getDocumento().getCarma()); - if(arma!=null && arma.getIdArma()!=null){ - colaImpresion.setArma(arma); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - } - - }else if(colaImpresion.getDocumento().getCarma()==null || colaImpresion.getDocumento().getCarma().trim().length()==0){ - colaImpresion.setArma(null); - System.out.println("numsilicitud.1....."+colaImpresion.getDocumento().getNumeroSolicitud()); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - } - } - } - return lcolaImpresion; - } - - /** - * Devuelve la cola de impresión con los datos completos - * @param coladeImpresionList - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public List completaColaImpresion(List coladeImpresionList) throws Exception { - List lcolaImpresion = null; - if(coladeImpresionList != null && !coladeImpresionList.isEmpty()){ - lcolaImpresion = new ArrayList(); - for (TarmColadeImpresion tarmColadeImpresion : coladeImpresionList) { - TarmDocumentoHabilitante tarmDocumentoHabilitante = PersistenceHelper.getEntityManager().find(TarmDocumentoHabilitante.class, tarmColadeImpresion.getCdocumento()); - if(tarmDocumentoHabilitante != null){ - ColaImpresionDto colaImpresion = new ColaImpresionDto(); - colaImpresion.setIdImpresion(tarmColadeImpresion.getPk()); - colaImpresion.setFechaImpresion(tarmColadeImpresion.getFechaimpresion()); - colaImpresion.setFechaRegistro(new Timestamp(tarmColadeImpresion.getFecharegistro().getTime())); - PersonaDto personaDto = PersonaUtil.getInstancia().obtenerPersonaPorId(tarmDocumentoHabilitante.getPersoncode(), null); - colaImpresion.setPersona(personaDto); - colaImpresion.setDocumento(obtenerDocumentoId(tarmColadeImpresion.getCdocumento(), personaDto)); - - List pruebas=null; - List pruebasRealizadasAlArma=null; - if(colaImpresion.getDocumento()!=null && colaImpresion.getDocumento().getCarma()!=null){ - StringBuilder sql = new StringBuilder("select o from TarmArmaPruebas o where o.pk=(select max(p.pk) from TarmArmaPruebas p where p.carma='"+colaImpresion.getDocumento().getCarma()+"' and p.apruebaevaluacion='Y')"); -// System.out.println("sql....."+sql); - pruebas=PersistenceHelper.getEntityManager().createQuery(sql.toString()).getResultList(); - // Se valida si existe alguna prueba de registro balistico para el arma - StringBuilder sql2 = new StringBuilder("select o from TarmArmaPruebas o where o.carma='"+colaImpresion.getDocumento().getCarma()+"'"); - pruebasRealizadasAlArma=PersistenceHelper.getEntityManager().createQuery(sql2.toString()).getResultList(); - } - - if(pruebas!=null && pruebas.size()>0){ - colaImpresion.setArma(ArmaUtil.getInstancia().obtenerArmaId(colaImpresion.getDocumento().getCarma())); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - }else if(pruebas!=null && pruebas.size()==0 && pruebasRealizadasAlArma.isEmpty()){ - // Usado para los datos migrados que no fueron ingresados por solicitud y no tienen prueba de registro balistico - ArmaDto arma=ArmaUtil.getInstancia().obtenerArmaId(colaImpresion.getDocumento().getCarma()); - if(arma!=null && arma.getIdArma()!=null){ - colaImpresion.setArma(arma); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - } - - }else if(colaImpresion.getDocumento().getCarma()==null || colaImpresion.getDocumento().getCarma().trim().length()==0){ - colaImpresion.setArma(null); -// System.out.println("numsilicitud.2....."+colaImpresion.getDocumento().getNumeroSolicitud()); - colaImpresion.setEsAutorizacion(verificaTipoTramite(colaImpresion.getDocumento().getNumeroSolicitud())); - lcolaImpresion.add(colaImpresion); - } - } - } - } - return lcolaImpresion; - } - - /** - * Devuelve un documento en base al id enviado - * @param codigoDocumento - * @param personaDto - * @return DocumentoDto - */ - public DocumentoDto obtenerDocumentoId(Long codigoDocumento, PersonaDto personaDto){ - DocumentoDto documento = null; - TarmDocumentoHabilitante tarmDocumentoHabilitante = PersistenceHelper.getEntityManager().find(TarmDocumentoHabilitante.class, codigoDocumento); - if(tarmDocumentoHabilitante != null){ - documento = new DocumentoDto(); - documento.setCodigoDocumento(tarmDocumentoHabilitante.getPk()); - documento.setFechaEmision(tarmDocumentoHabilitante.getFechaemision()); - documento.setFechaExpiracion(tarmDocumentoHabilitante.getFechaexpiracion()); - documento.setNumeroDocumento(tarmDocumentoHabilitante.getNumerodocumento()); - if(tarmDocumentoHabilitante.getCsolicitud()!=null){ - procesaDatosTramite(documento, tarmDocumentoHabilitante.getCsolicitud()); - } - else{ - String querySolicitud = "select max(csolicitud) from tarmsolicituddocumento where cdocumento = '"+codigoDocumento.toString()+"'"; - String codigosolicitud = PersistenceHelper.getEntityManager().createNativeQuery(querySolicitud).getSingleResult().toString(); - if(codigosolicitud!=null){ - procesaDatosTramite(documento, codigosolicitud); - } - } - documento.setCarma(tarmDocumentoHabilitante.getCarma()); - if(tarmDocumentoHabilitante.getCtramite() != null){//buscamos datos del tramite - try { - TarmTramite tarmTramite = TarmTramite.find(PersistenceHelper.getEntityManager(), tarmDocumentoHabilitante.getCtramite()); - if(tarmTramite != null){ - documento.setTipoTramite(CatalogoUtil.getInstancia().getDescripcion(tarmTramite.getTipotramite(), tarmTramite.getTipotramitecodigo())); - documento.setTramite(CatalogoUtil.getInstancia().getDescripcion(tarmTramite.getTipoautorizacion(), tarmTramite.getTipoautorizacioncodigo())); - documento.setCategoria(CatalogoUtil.getInstancia().getDescripcion(tarmTramite.getCategoria(), tarmTramite.getCategoriacodigo())); - documento.setUsoActividad(CatalogoUtil.getInstancia().getDescripcion(tarmTramite.getUsoactividad(), tarmTramite.getUsoactividadcodigo())); - documento.setEsFechaExpiracion(tarmTramite.getValidaFechaExpiracion()); - documento.setDescripcion(tarmTramite.getVisualizarPorFechaExpiracion()); - documento.setDescripcion1(buscarJuri(CatalogoUtil.getInstancia().getDescripcion(tarmTramite.getJurisdiccion(), tarmTramite.getJurisdiccioncode()), personaDto)); - - documento.setDescripcion2(tarmTramite.getPie()); - } - } catch (CommondbException e) { - } catch (Exception e) { - } - } - } - return documento; - } - - /** - * Devuelve la jurisdiccion con el valor de la misma, sea direccion con la - * respectiva direccion de la persona que le emiten el carnet. - * - * @param descripcion - * @param personaDto - * @return String - */ - private String buscarJuri(String descripcion, PersonaDto personaDto) { - StringBuilder srtDescrip = new StringBuilder(); - srtDescrip.append(descripcion); - if (!descripcion.equals("ECUADOR")) { - srtDescrip.append(": "); - if (descripcion.equals("PROVINCIA")) { - srtDescrip.append(personaDto.getProvincia()); - } else if (descripcion.equals("CANTN")) { - srtDescrip.append(personaDto.getCanton()); - } else if (descripcion.equals("PARROQUIA")) { - srtDescrip.append(personaDto.getParroquia()); - } else if (descripcion.equals("DIRECCIN")) { - srtDescrip.append(personaDto.getDireccion()); - } - } - - return srtDescrip.toString(); - } - -// public String getNumeroSolicitud(String csolicitud) { -// String numerosolicitud = null; -// TarmSolicitud tarmSolicitud; -// try { -// tarmSolicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), csolicitud); -// if(tarmSolicitud != null){ -// numerosolicitud = tarmSolicitud.getNumerosolicitud(); -// } -// } catch (Exception e) { -// APPLogger.getLogger().error(e.getMessage(), e); -// } -// -// return numerosolicitud; -// } - - /** - * Verifica si es o no autorización - * @param numerosolicitud - * @return - * @throws Exception - * @throws CommondbException - */ - @SuppressWarnings("unchecked") - public String verificaTipoTramite(String numerosolicitud) throws CommondbException, Exception { - String tipoTramite = null; - if(numerosolicitud != null){ - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_SOLICITUD_NUM); - query.setParameter("numerosolicitud", numerosolicitud); - List ltarmSolicitud = query.getResultList(); - if(ltarmSolicitud != null && !ltarmSolicitud.isEmpty()){ - TarmSolicitud tarmSolicitud = ltarmSolicitud.iterator().next(); - TarmTramite tarmTramite = TarmTramite.find(PersistenceHelper.getEntityManager(), tarmSolicitud.getCtramite()); - if(tarmTramite.getTipoautorizacion().equals("1") && tarmTramite.getTipoautorizacioncodigo().equals("TIPOAUTORIZACION")){ - tipoTramite = Constant.STR_Y; - } else if(tarmTramite.getTipoautorizacion().equals("6") && tarmTramite.getTipoautorizacioncodigo().equals("TIPOAUTORIZACION")){ - tipoTramite = Constant.STR_N; - } - } - } - return tipoTramite; - } - - /** - * Procesa datos del trámite y completa la información - * @param documento - * @param csolicitud - */ - private void procesaDatosTramite(DocumentoDto documento, String csolicitud){ - TarmSolicitud tarmSolicitud; - try { - tarmSolicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), csolicitud); - if(tarmSolicitud != null){ - documento.setNumeroSolicitud(tarmSolicitud.getNumerosolicitud()); - documento.setEstadoTramite(CatalogoUtil.getInstancia().getDescripcion(tarmSolicitud.getEstado(), tarmSolicitud.getEstadocodigo())); - } - } catch (Exception e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/InstitucionSnapEnum.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/InstitucionSnapEnum.java.svn-base deleted file mode 100644 index bc0803f..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/InstitucionSnapEnum.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.armas.rules.query.webservices.util; - -/** - * Enum con los codigos de la institucion consumidoras del WS que expone informacion de las armas - * @author user - * - */ -public enum InstitucionSnapEnum { - - CRIMINALISTICA("CRIMINALISTICA"), - MINISTERIO_MINAS("MINERIA"), - COPS("COPS"), - FISCALIA_GENERAL("FGE"); - - private String nombre; - - private InstitucionSnapEnum(String nombre) { - this.nombre = nombre; - } - - /** - * @return the nombre - */ - public String getNombre() { - return nombre; - } - - @Override - public String toString() { - return this.nombre; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/PersonaUtil.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/PersonaUtil.java.svn-base deleted file mode 100644 index 013cf21..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/query/webservices/util/.svn/text-base/PersonaUtil.java.svn-base +++ /dev/null @@ -1,235 +0,0 @@ -package com.fp.armas.rules.query.webservices.util; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.dto.ws.ImagenDto; -import com.fp.persistence.parmas.dto.ws.PersonaDto; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleKey; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; - -/** - * Clase utilitaria que colocará los datos de la persona - * @author dcruz - * - */ -public class PersonaUtil { - /** - * Consulta propia de la persona - */ - private static final String QUERY_PERSONA = "SELECT o FROM TcustPersonDetail o WHERE o.pk.personcode=:personcode AND o.pk.dateto=:dateto"; - private static final String QUERY_DIRECCION_PRINCIPAL="SELECT o FROM TcustPersonAddress o WHERE o.pk.personcode=:personcode AND o.pk.dateto=:dateto AND o.principal=:principal"; - private static final String QUERY_PROVINCIA = "SELECT o.description FROM TgeneProvince o WHERE o.pk.countrycode=:countrycode AND o.pk.provincecode=:provincecode"; - private static final String QUERY_CANTON = "SELECT o.description FROM TgeneCanton o WHERE o.pk.countrycode=:countrycode AND o.pk.provincecode=:provincecode AND o.pk.cantoncode=:cantoncode"; - private static final String QUERY_PARROQUIA = "SELECT o.description FROM TgeneParroquia o WHERE o.pk.countrycode=:countrycode AND o.pk.provincecode=:provincecode AND o.pk.cantoncode=:cantoncode AND o.pk.parroquiacode=:parroquiacode"; - private static final String QUERY_TELEFONO = "SELECT o.phonenumber FROM TcustPersonPhone o WHERE o.pk.personcode=:personcode AND o.addressnumber=:addressnumber"; - private static PersonaUtil INSTANCIA = new PersonaUtil(); - - private PersonaUtil(){} - - public static PersonaUtil getInstancia() { - return INSTANCIA; - } - - /** - * Obtiene todos los datos de la persona a enviar en a través del web service - * @param personCode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public PersonaDto obtenerPersonaPorId(Integer personcode, String usercode) throws Exception{ - PersonaDto persona = null; - if(personcode == null){ - return persona; - } - TcustPersonDetail tcustPersonDetail = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_PERSONA); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List lpersonDetail = query.getResultList(); - if(lpersonDetail != null && !lpersonDetail.isEmpty()){ - persona = new PersonaDto(); - tcustPersonDetail = lpersonDetail.get(0); - persona.setCodigoPersona(tcustPersonDetail.getPk().getPersoncode()); - persona.setCodigoUsuario(usercode); - persona.setTipoIdentificacion(tcustPersonDetail.getIdentificationcatalog()); - persona.setIdentificacion(tcustPersonDetail.getIdentification()); - persona.setNombre(tcustPersonDetail.getName()); - persona.setRepresentanteLegal(tcustPersonDetail.getLegalrepresent()); - //Obtenemos la direccion principal de la persona - TcustPersonAddress tcustPersonAddress = obtieneDireccionPrincipal(personcode); - persona.setDireccion(tcustPersonAddress.getAddress()); - persona.setProvincia(obtenerProvincia(tcustPersonAddress.getProvincecode())); - persona.setCanton(obtenerCanton(tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode())); - persona.setParroquia(obtenerParroquia(tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode(), tcustPersonAddress.getParroquiacode())); - persona.setTelefono(obtenerNumeroTelefono(tcustPersonAddress.getPk().getPersoncode(), tcustPersonAddress.getPk().getAddressnumber())); - if(tcustPersonDetail.getMilitarygrade() != null && tcustPersonDetail.getMilitarygradecode() != null){ - persona.setGrado(CatalogoUtil.getInstancia().getLegalCode(tcustPersonDetail.getMilitarygrade(), tcustPersonDetail.getMilitarygradecode())); - } - } - return persona; - } - - /** - * Obtiene la dirección principal de la persona - * @param personcode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public TcustPersonAddress obtieneDireccionPrincipal(Integer personcode) throws Exception { - TcustPersonAddress tcustPersonAddress = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_DIRECCION_PRINCIPAL); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("principal", Constant.STR_Y); - List ltcustPersonAddresses = query.getResultList(); - if(ltcustPersonAddresses != null && !ltcustPersonAddresses.isEmpty()){ - tcustPersonAddress = ltcustPersonAddresses.iterator().next(); - } - return tcustPersonAddress; - } - - /** - * Obtiene la descripción de la provincia - * @param provincecode - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerProvincia(String provincecode) { - String provincia = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_PROVINCIA); - query.setParameter("countrycode", "EC"); - query.setParameter("provincecode", provincecode); - List lprovincias = query.getResultList(); - if(lprovincias != null && !lprovincias.isEmpty()){ - provincia = lprovincias.iterator().next(); - } - return provincia; - } - - /** - * Obtiene la descripción del cantón - * @param provincecode - * @param cantoncode - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerCanton(String provincecode, String cantoncode) { - String canton = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_CANTON); - query.setParameter("countrycode", "EC"); - query.setParameter("provincecode", provincecode); - query.setParameter("cantoncode", cantoncode); - List lcanton = query.getResultList(); - if(lcanton != null && !lcanton.isEmpty()){ - canton = lcanton.iterator().next(); - } - return canton; - } - - /** - * Obtiene la descrición de la parroquia - * @param provincecode - * @param cantoncode - * @param parroquiacode - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerParroquia(String provincecode, String cantoncode, String parroquiacode) { - String parroquia = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_PARROQUIA); - query.setParameter("countrycode", "EC"); - query.setParameter("provincecode", provincecode); - query.setParameter("cantoncode", cantoncode); - query.setParameter("parroquiacode", parroquiacode); - List lparroquia = query.getResultList(); - if(lparroquia != null && !lparroquia.isEmpty()){ - parroquia = lparroquia.iterator().next(); - } - return parroquia; - } - - /** - * Obtiene el teléfono segun la dirección asociada - * @param personcode - * @param addressnumber - * @return - */ - @SuppressWarnings("unchecked") - public String obtenerNumeroTelefono(Integer personcode, Integer addressnumber) { - String telefono = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_TELEFONO); - query.setParameter("personcode", personcode); - query.setParameter("addressnumber", addressnumber); - List ltelefono = query.getResultList(); - if(ltelefono != null && !ltelefono.isEmpty()){ - telefono = ltelefono.iterator().next(); - } - return telefono; - } - - /** - * Retorna la localización de donde se encuentra la persona - * @param personcode - * @return - */ - public String obtenerLocacionPersona(Integer personcode) { - StringBuffer sb = new StringBuffer(); - try { - TcustPersonAddress tcustPersonAddress = obtieneDireccionPrincipal(personcode); - sb.append(tcustPersonAddress.getProvincecode()).append(",").append(obtenerProvincia(tcustPersonAddress.getProvincecode())).append("/"); - sb.append(tcustPersonAddress.getCantoncode()).append(",").append(obtenerCanton(tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode())).append("/"); - sb.append(tcustPersonAddress.getParroquiacode()).append(",").append(obtenerParroquia(tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode(), tcustPersonAddress.getParroquiacode())); - } catch (CommondbException e) { - } catch (Exception e) { - } - return sb.toString(); - } - - /** - * Retorna la foto o el logo de la persona si es que esta existe - * @param personcode - * @return - */ - public ImagenDto obtenerImagen(Integer personcode) { - System.out.println("ImagenDto obtenerImagen......-----------"+personcode); - ImagenDto imagenDto = null; - TgeneFilesDetail tgeneFilesDetail = null; - try { - TcustCompany tcustCompany = TcustCompany.find(PersistenceHelper.getEntityManager(), new TcustCompanyKey(personcode, FormatDates.getDefaultExpiryTimestamp())); - if(tcustCompany != null){ - tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(tcustCompany.getLogo(), FormatDates.getDefaultExpiryTimestamp())); - } else{ - TcustPeople tcustPeople = TcustPeople.find(PersistenceHelper.getEntityManager(), new TcustPeopleKey(personcode, FormatDates.getDefaultExpiryTimestamp())); - if(tcustPeople != null){ - tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(tcustPeople.getPhotocode(), FormatDates.getDefaultExpiryTimestamp())); - } - } - if(tgeneFilesDetail != null){ - imagenDto = new ImagenDto(); - imagenDto.setCodigoImagen(tgeneFilesDetail.getPk().getCode()); - imagenDto.setExtension(tgeneFilesDetail.getExtension()); - imagenDto.setImagen(tgeneFilesDetail.getImage()); - imagenDto.setTamanioImagen(tgeneFilesDetail.getImagesize()); - imagenDto.setTipoContenido(tgeneFilesDetail.getContenttype()); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return imagenDto; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/.svn/entries deleted file mode 100644 index f09a86c..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/.svn/entries +++ /dev/null @@ -1,52 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - -funcionalidad -dir - -pcustomer -dir - -webservices -dir - -armas -dir - -calificacion -dir - -solicitudimportacion -dir - -inspeccion -dir - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/entries deleted file mode 100644 index 3b9350a..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/armas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ImporteArma.java -file - - - - -2022-07-28T03:40:41.135796Z -571c657afd378b7a95b893eb6be40884 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4916 - -ImporteArmaExcel.java -file - - - - -2022-07-28T03:40:41.135796Z -ebbecf68c151f43682e852acf274b4d2 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1780 - -ReporteArmasDecomisadas.java -file - - - - -2022-07-28T03:40:41.135796Z -8115bb6b6e3d3a1efb333e502bd8ba26 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2444 - -ArmasRegistro.java -file - - - - -2022-07-28T03:40:41.135796Z -0be77ed991c0829b0d1a2f8e8d0ffabc -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4235 - -AuxCodigoArma.java -file - - - - -2022-07-28T03:40:41.136796Z -68531e0c6b88bc4a2f997706d01dfb2e -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1015 - -CambiarUsuarioArma.java -file - - - - -2022-07-28T03:40:41.136796Z -2be4342681d01f093c0b0c5bb9e2fe66 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3384 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/ArmasRegistro.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/ArmasRegistro.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/ArmasRegistro.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/CambiarUsuarioArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/CambiarUsuarioArma.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/prop-base/CambiarUsuarioArma.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ArmasRegistro.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ArmasRegistro.java.svn-base deleted file mode 100644 index c5a9a73..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ArmasRegistro.java.svn-base +++ /dev/null @@ -1,113 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.sql.Date; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Registra las armas y el registro de armas - * @author dcruz - * - */ -public class ArmasRegistro extends TransactionRule { - - private static final long serialVersionUID = 1L; - private static final String QUERY_PERSONA_ID = "SELECT o FROM TcustPersonDetail o WHERE o.identification=:identification AND o.pk.dateto=:dateto"; - - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if(pSaveRequest.get("eseliminacion") == null || !Constant.ifYes(pSaveRequest.get("eseliminacion").toString())){ - TarmRegistroArmas registro = (TarmRegistroArmas) pSaveRequest.getSaveBeanModifiedObject("TREGISTROARMAS"); - if(registro != null){ - if(registro.isIsnew()){ - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_PERSONA_ID); - query.setParameter("identification", pSaveRequest.get("NUMDOC").toString()); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - List ltcustPersonDetail = query.getResultList(); - if(ltcustPersonDetail != null && !ltcustPersonDetail.isEmpty()){ - TcustPersonDetail tcustPersonDetail = ltcustPersonDetail.iterator().next(); - registro.setPersoncode(tcustPersonDetail.getPk().getPersoncode()); - } else{ - throw new ControlArmasException("ARM-001", "La datos de la persona ingresada no existen, por favor crear primero la persona "); - } - registro.setPk(getCodigoRegistro()); - registro.setTiporegistrocodigo("TIPOREGISTRO"); - registro.setFcreacion(new Date(System.currentTimeMillis())); - } - List armasList = pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - for (Object object : armasList) { - TarmArmas arma = (TarmArmas) object; - arma.setCregistro(registro.getPk()); - if(arma.getColor() != null){ - arma.setColorcodigo("COLOR"); - } - if(arma.getTipofabricacion() != null){ - arma.setTipofabricacioncodigo("TIPOFABRICACION"); - } - if(arma.getUnidadmedidacantidad() != null){ - arma.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - } - - if(arma.isIsnew()){ - arma.setPk(this.getCodigoArma()); - arma.setFecharegistro(new Date(System.currentTimeMillis())); - arma.setCodigoarma(arma.getPk()); - } - //arma.setIsnew(Boolean.TRUE); - } - }else{ - List armasList = pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - for (Object object : armasList) { - TarmArmas arma = (TarmArmas) object; - if(arma.getColor() != null){ - arma.setColorcodigo("COLOR"); - } - if(arma.getTipofabricacion() != null){ - arma.setTipofabricacioncodigo("TIPOFABRICACION"); - } - if(arma.getUnidadmedidacantidad() != null){ - arma.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - } - if(arma.isIsnew()){ - arma.setIsnew(Boolean.TRUE); - arma.setPk(this.getCodigoArma()); - arma.setFecharegistro(new Date(System.currentTimeMillis())); - arma.setCodigoarma(arma.getPk()); - } - } - } - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - private Long getCodigoRegistro() throws Exception{ - Sequence sequence = new Sequence(); - Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); - return cregistro; - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/AuxCodigoArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/AuxCodigoArma.java.svn-base deleted file mode 100644 index 1c907ce..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/AuxCodigoArma.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.sessionbeans.helper.Sequence; - -public class AuxCodigoArma extends TransactionRule { - - private static final long serialVersionUID = -7465655492847129136L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - //lista de armas - List listArmas = pSaveRequest.getSaveBeanModifiedRecords("AUXARMAS"); - for (Object object : listArmas) { - TarmArmas arma = (TarmArmas)object; - arma.setPk(getCodigoArma()); - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/CambiarUsuarioArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/CambiarUsuarioArma.java.svn-base deleted file mode 100644 index ff93da8..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/CambiarUsuarioArma.java.svn-base +++ /dev/null @@ -1,81 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.sql.Date; - -import javax.persistence.EntityManager; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.sessionbeans.helper.Sequence; - -public class CambiarUsuarioArma extends TransactionRule { - - private static final long serialVersionUID = -7465655492847129136L; - - /** - * Cambio el estado del arma y genero un nuevo registro para una nueva persona - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - EntityManager entityManager = PersistenceHelper.getEntityManager(); - TarmArmas arma = (TarmArmas) pRequest.get("ARMAACTUAL"); - TcustPersonDetail persona = (TcustPersonDetail) pRequest.get("NUEVAPERSONA"); - TarmRegistroArmas registroActual = TarmRegistroArmas.find(entityManager, arma.getCregistro()); - //arma antigua genera un registro a cambio de propietario - arma.setPk(getCodigoArma()); - String estadoArmaAnterior=arma.getEstado(); - arma.setEstado("CDP");//CAMBIO DE PROPIETARIO - arma.setEstadocodigo("ESTADOARMA"); - arma.setFecharegistro(new Date(new java.util.Date().getTime())); - entityManager.persist(arma); - //registro de la nueva cabecera del propietario - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - registroArmas.setPk(getCodigoRegistro()); - registroArmas.setFcreacion(new Date(System.currentTimeMillis())); - registroArmas.setAeropuertopuerto(registroActual.getAeropuertopuerto()); - registroArmas.setDui(registroActual.getDui()); - registroArmas.setFechasolicitud(registroActual.getFechasolicitud()); - registroArmas.setPersoncode(persona.getPk().getPersoncode()); - registroArmas.setFabricante(registroActual.getFabricante()); - registroArmas.setPaisorigen(registroActual.getPaisorigen()); - registroArmas.setTiporegistro("CDP");//CAMBIO DE PROPIETARIO - registroArmas.setTiporegistrocodigo(registroActual.getTiporegistrocodigo()); - registroArmas.setTramite(registroActual.getTramite()); - registroArmas.setSolicitudnum(registroActual.getSolicitudnum()); - registroArmas.setTotalfob(registroActual.getTotalfob()); - entityManager.persist(registroArmas); - //regisro de la nueva arma con el nuevo propietario - TarmArmas armaNueva = (TarmArmas) arma.cloneMe(); - armaNueva.setPk(getCodigoArma()); - entityManager.detach(armaNueva); - armaNueva.setEstado(estadoArmaAnterior);//se mantiene el mismo estado del arma - armaNueva.setFecharegistro(new Date(new java.util.Date().getTime())); - armaNueva.setCregistro(registroArmas.getPk()); - //armaNueva.setCodigoarma(armaNueva.getPk()); - entityManager.persist(armaNueva); - - return pRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - private Long getCodigoRegistro() throws Exception{ - Sequence sequence = new Sequence(); - Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); - return cregistro; - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArma.java.svn-base deleted file mode 100644 index a4a3ca8..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArma.java.svn-base +++ /dev/null @@ -1,119 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.sessionbeans.helper.Sequence; - -public class ImporteArma extends TransactionRule { - - private static final long serialVersionUID = -7465655492847129136L; - - /** - * Armas Decomisadas - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - //EntityManager entityManager = PersistenceHelper.getEntityManager(); - //lista de armas - List listArmas = pSaveRequest.getSaveBeanModifiedRecords("ARMASIMPORTE"); - //cabecera del arma - TarmRegistroArmas registroArmas = (TarmRegistroArmas) pSaveRequest.getSaveBeanModifiedObject("TREGISTROARMAS"); - //detalle del decomiso - List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA");//seteado en el decomiso - if(tarmDecomisoArma==null){ - tarmDecomisoArma=new ArrayList<>(); - } - // TarmArmas arma = (TarmArmas) pSaveRequest.get("ARMAACTUAL"); - registroArmas.setPk(getCodigoRegistro()); - registroArmas.setFcreacion(new Date(System.currentTimeMillis())); - - //DECOMISO - //se inserta el DECOMISO cabecera - TarmDecomiso decomiso=(TarmDecomiso)pSaveRequest.getSaveBeanModifiedObject("IMPORTEDECOMISO"); - decomiso.setPk(Long.parseLong(getCodigo("CDECOMISO"))); - decomiso.setNumerotransaccion(getNumeroTransaccion(decomiso.getTipoproceso(), decomiso.getPk().toString())); - - for (Object object : listArmas) { - TarmArmas armaNueva = (TarmArmas)object; - armaNueva.setPk(getCodigoArma()); - armaNueva.setFecharegistro(new Date(new java.util.Date().getTime())); - armaNueva.setCregistro(registroArmas.getPk()); - armaNueva.setCodigoarma(armaNueva.getPk()); - - //seteo del detalle del DECOMISOARMA y a que arma se le hace el decomiso - TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); - decomisoArma.setCarma( armaNueva.getPk()); - //estadoarma es igual que el estado del arma - decomisoArma.setEstado(armaNueva.getEstado()); - decomisoArma.setEstadocode(armaNueva.getEstadocodigo()); - //motivo del decomiso - decomisoArma.setMotivodecomiso(armaNueva.getModifiedData().get("motivocatalogo").toString());//motivo - decomisoArma.setMotivodecomisocodigo(armaNueva.getModifiedData().get("motivocatalogocode").toString());//1 - //observacion - decomisoArma.setObservacion(armaNueva.getModifiedData().get("observaciondecomiso").toString()); - //cantidad - decomisoArma.setCantidad(new BigDecimal(armaNueva.getModifiedData().get("cantidad").toString()));//cantidad - //unidad del arma o material explosivo - - decomisoArma.setUnidadmedida(armaNueva.getUnidadmedidacantidad());//unidad de medida - decomisoArma.setUnidadmedidacode(armaNueva.getUnidadmedidacantidadcodigo());//3 - //fecha del decomiso arma la actual - java.util.Date fechaRecepcion=(java.util.Date)armaNueva.getModifiedData().get("fechaRecepcion"); - decomisoArma.setFdecomiso(new Timestamp(fechaRecepcion.getTime())); - //codigo del decomiso - decomisoArma.setPk(getCodigo("CDECOMISOARMA")); - //codigo del decomiso - decomisoArma.setCdecomiso(decomiso.getPk()); - //en bodega - decomisoArma.setEnbodega("Y"); - tarmDecomisoArma.add(decomisoArma); - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - private Long getCodigoRegistro() throws Exception{ - Sequence sequence = new Sequence(); - Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); - return cregistro; - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } - /** - * Metodo que devuelve la secuencia del codigo - * @param codigoSec - * @return String - * @throws Exception - */ - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - String solcitud = sequence.getNextValue(codigoSec).toString(); - return solcitud; - } - - private String getNumeroTransaccion(String prefijo,String secuencia){ - System.out.println("Ingresa al secuencial armas"); - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArmaExcel.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArmaExcel.java.svn-base deleted file mode 100644 index 59a2e05..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ImporteArmaExcel.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.sql.Date; -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.sessionbeans.helper.Sequence; - -public class ImporteArmaExcel extends TransactionRule { - - private static final long serialVersionUID = -7465655492847129136L; - - /** - * Armas a Registrar - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - //lista de armas - List listArmas = pSaveRequest.getSaveBeanModifiedRecords("ARMASIMPORTEEXCEL"); - //cabecera del arma - TarmRegistroArmas registroArmas = (TarmRegistroArmas) pSaveRequest.getSaveBeanModifiedObject("TREGISTROARMAS"); - registroArmas.setPk(getCodigoRegistro()); - registroArmas.setFcreacion(new Date(System.currentTimeMillis())); - - for (Object object : listArmas) { - TarmArmas armaNueva = (TarmArmas)object; - armaNueva.setPk(getCodigoArma()); - armaNueva.setFecharegistro(new Date(new java.util.Date().getTime())); - armaNueva.setCregistro(registroArmas.getPk()); - armaNueva.setCodigoarma(armaNueva.getPk()); - - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - private Long getCodigoRegistro() throws Exception{ - Sequence sequence = new Sequence(); - Long cregistro = sequence.getNextValue("CREGISTRO").longValue(); - return cregistro; - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ReporteArmasDecomisadas.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ReporteArmasDecomisadas.java.svn-base deleted file mode 100644 index a16da54..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/armas/.svn/text-base/ReporteArmasDecomisadas.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -package com.fp.armas.rules.save.armas; - -import java.util.List; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Registra las armas y el registro de armas - * @author Christian Pazmino - * - */ -public class ReporteArmasDecomisadas extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (this.isNew(pSaveRequest)) { - return pSaveRequest; - } - - - TarmCabRepDestruirArmas cabeceraReporteObj = (TarmCabRepDestruirArmas)pSaveRequest.getSaveBeanModifiedObject("CABREPORTEDESTRUIRARMAS"); - if(cabeceraReporteObj != null){ - cabeceraReporteObj.setPk(getCodigoReporte()); - pSaveRequest.put("creporte", cabeceraReporteObj.getPk()); - String nombreReporte="BAJ-"+cabeceraReporteObj.getPk()+".pdf"; - pSaveRequest.getResponse().put("creporte", cabeceraReporteObj.getPk()); - cabeceraReporteObj.setXpath(cabeceraReporteObj.getXpath()+"/cm:"+nombreReporte); - pSaveRequest.put("xpath", cabeceraReporteObj.getXpath()); - pSaveRequest.getResponse().put("nombreReporte", nombreReporte); - - pSaveRequest.getResponse().put("creporte", cabeceraReporteObj.getPk()); - pSaveRequest.getResponse().put("xpath", cabeceraReporteObj.getXpath()); - - List armasReporteLst = pSaveRequest.getSaveBeanModifiedRecords("DETREPORTEDESTRUIRARMAS"); - for (Object arma : armasReporteLst) { - TarmDetRepDestruirArmas armaObj = (TarmDetRepDestruirArmas)arma; - armaObj.setPk(getCodigoDetReporte()); - armaObj.setCreporte(cabeceraReporteObj.getPk()); - } - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - private Integer getCodigoReporte() throws Exception{ - Sequence sequence = new Sequence(); - Integer creporte = sequence.getNextValue("TARMREPORTEDESTRUIRARMAS").intValue(); - return creporte; - } - - private Integer getCodigoDetReporte() throws Exception{ - Sequence sequence = new Sequence(); - Integer carma = sequence.getNextValue("TARMDETREPORTEDESTRUIRARMAS").intValue(); - return carma; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/entries deleted file mode 100644 index bdcf17c..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion -svn://172.17.26.185/COMACO - - - -2017-02-08T23:29:01.922022Z -4571 -jespinosa - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EvaluacionPsicologica.java -file - - - - -2022-07-28T03:40:41.165796Z -94dadb7a653e217468b33cba176f44b6 -2015-06-29T11:47:44.122339Z -4154 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2569 - -Calificacion.java -file - - - - -2022-07-28T03:40:41.165796Z -4ef9df3d388039ed2884ec270d3236f7 -2015-06-29T11:47:44.122339Z -4154 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3959 - -EvaluarGuardia.java -file - - - - -2022-07-28T03:40:41.165796Z -0746eba3bd6c5f9e676e6fd02f38519f -2017-02-08T23:29:01.922022Z -4571 -jespinosa - - - - - - - - - - - - - - - - - - - - - -4183 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/Calificacion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/Calificacion.java.svn-base deleted file mode 100644 index 564d5bc..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/Calificacion.java.svn-base +++ /dev/null @@ -1,144 +0,0 @@ -package com.fp.armas.rules.save.calificacion; - - - - -import java.util.Date; -import java.util.List; - -import org.apache.commons.validator.Msg; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.eval.TarmDetallePreguntas; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.sessionbeans.helper.Sequence; - - -/** - * @author Andres Cevallos - * Clase que califica una evaluacion - */ -public class Calificacion extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - TarmEvaluacion registroArma = (TarmEvaluacion) pSaveRequest.getSaveBeanModifiedObject("EVALUACION"); - List levaluacionDetalle = (List)pSaveRequest.getSaveBeanModifiedRecords("DETALLEPREGUNTAS"); - float respuestas=0; - float preguntas=0; - float porcentaje=0; - if(levaluacionDetalle==null || levaluacionDetalle.isEmpty()){ - TarmDetallePreguntas detalle=(TarmDetallePreguntas)pSaveRequest.getSaveBeanModifiedObject("DETALLEPREGUNTAS"); - levaluacionDetalle.add(detalle); - } - - - if (registroArma == null) { - - return pSaveRequest; - } - - if(registroArma.getPk()==null) - { - registroArma.setPk(getCodigoEvaluacion().toString()); - porcentaje = (float) registroArma.getModifiedData().get("aprobacion"); - - } - - for(Object deta : levaluacionDetalle){ - TarmDetallePreguntas detalle = (TarmDetallePreguntas) deta; - String valor= detalle.getModifiedData().get("valor").toString(); - if(valor.equals("Y")) - { - respuestas++; - } - preguntas++; - - } - - if(preguntas!=0){ - if((100*respuestas/preguntas)>=porcentaje){ - registroArma.setResultado("APROBADO"); - registroArma.setResultadocodigo("RESULTADO"); - Date fechaexpiracion=new Date(); - fechaexpiracion.setYear(fechaexpiracion.getYear()+2); - registroArma.setFechaexpiracion(new java.sql.Date(fechaexpiracion.getTime())); - pSaveRequest.getResponse().put("result", "APR"); - - } - else{ - registroArma.setResultado("REPROBADO"); - registroArma.setResultadocodigo("RESULTADO"); - registroArma.setFechapreox(null); - registroArma.setFechaexpiracion(null); - pSaveRequest.getResponse().put("result", "REP"); - } - PersistenceHelper.getEntityManager().persist(registroArma); - } - System.out.println("Respuestas Correctas "+respuestas+"de "+preguntas+" preguntas"); - - for(Object deta : levaluacionDetalle){ - TarmDetallePreguntas detalle = (TarmDetallePreguntas) deta; - - detalle.setPk(getCodigoDetallePreguntas()); - detalle.setCevaluacion(registroArma.getPk()); - - PersistenceHelper.getEntityManager().persist(detalle); - } - - - PersistenceHelper.getEntityManager().flush(); - - return pSaveRequest; - - - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - - - - return pSaveRequest; - } - - - - /** - * Metodo que devuelve la secuencia de una evaluacion. - * - * @return Codigo del nuevo cliente. - * @throws Exception - */ - private Long getCodigoEvaluacion() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CEVALUACION").longValue(); - - return codigo; - - } - - /** - * Mtodo que devuelve el detalle de las preguntas - * @return - * @throws Exception - */ - private String getCodigoDetallePreguntas() throws Exception { - Sequence sequence = new Sequence(); - String codigo = sequence.getNextValue("CDETALLEPREGUNTAS").toString(); - - return codigo; - - } - - - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluacionPsicologica.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluacionPsicologica.java.svn-base deleted file mode 100644 index 46e8513..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluacionPsicologica.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.armas.rules.save.calificacion; - - - - -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.eval.TarmDetallePreguntas; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.sessionbeans.helper.Sequence; - - -/** - * @author Andres Cevallos - * Clase que ingresa un registro de evaluacin psicolgica y la registra - */ - -public class EvaluacionPsicologica extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - // TarmEvaluacion registroArma = (TarmEvaluacion) pSaveRequest.getSaveBeanModifiedObject("EVALUACION"); - List levaluacion = (List)pSaveRequest.getSaveBeanModifiedRecords("EVALUACION"); - TarmGuardias guardia = (TarmGuardias) pSaveRequest.getSaveBeanModifiedObject("GUARDIAS"); - if(levaluacion==null || levaluacion.isEmpty()){ - TarmEvaluacion evaluacion = (TarmEvaluacion) pSaveRequest.getSaveBeanModifiedObject("EVALUACION"); - if (evaluacion == null) { - - return pSaveRequest; - } - levaluacion.add(evaluacion); - } - - - - - for(Object deta : levaluacion){ - TarmEvaluacion detalle = (TarmEvaluacion) deta; - if(detalle.getResultado().equalsIgnoreCase("REPROBADO")){ - detalle.setFechaexpiracion(null); - detalle.setFechapreox(null); - } - if(detalle.getPk()==null) - detalle.setPk(getCodigoPreguntas()); - - - - } - /* if(guardia!=null) - PersistenceHelper.getEntityManager().persist(guardia); - - */ - - - return pSaveRequest; - - - } - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - - - - return pSaveRequest; - } - - - - - - /** - * Obtiene el codigo de la evaluacion - * @return - * @throws Exception - */ - private String getCodigoPreguntas() throws Exception { - Sequence sequence = new Sequence(); - String codigo = sequence.getNextValue("CEVALUACION").toString(); - - return codigo; - - } - - - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluarGuardia.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluarGuardia.java.svn-base deleted file mode 100644 index 4c55ee9..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/calificacion/.svn/text-base/EvaluarGuardia.java.svn-base +++ /dev/null @@ -1,115 +0,0 @@ -package com.fp.armas.rules.save.calificacion; - - - - -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.armas.rules.save.funcionalidad.Movimiento; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.eval.TarmDetallePreguntas; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.sessionbeans.helper.Sequence; - - -/** - * @author Andres Cevallos - * Clase que daclara apto o no apto a un guardia dependiendo de su evaluacion - */ -public class EvaluarGuardia extends TransactionRule { - - - private static final String JPQL_GUARDIAS = "from TarmGuardias tag" + " where tag.pk = :personcode"; - private static final String JPQL_EVALUACION= "from TarmEvaluacion tev where tev.personcode = :personcode and tev.resultado='APROBADO' and tev.tipoevaluacion = :tipoevaluacion"; - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - // TarmEvaluacion registroArma = (TarmEvaluacion) pSaveRequest.getSaveBeanModifiedObject("EVALUACION"); - List levaluacion = (List)pSaveRequest.getSaveBeanModifiedRecords("EVALUACION"); - - if(levaluacion==null || levaluacion.isEmpty()){ - TarmEvaluacion evaluacion = (TarmEvaluacion) pSaveRequest.getSaveBeanModifiedObject("EVALUACION"); - if (evaluacion == null) { - - return pSaveRequest; - } - levaluacion.add(evaluacion); - } - - for(Object deta : levaluacion){ - TarmEvaluacion detalle = (TarmEvaluacion) deta; - List lpsicologicas = findEvaluacion(PersistenceHelper.getEntityManager(), detalle.getPersoncode(), "PSICOLOGICA"); - if(lpsicologicas == null || lpsicologicas.isEmpty()){ - throw new Exception("DEBE REGISTRAR EL TEST PSICOL\u00d3GICO PRIMERO"); - } - //validacion en caso de ser guardia - List guardiasList=findGuardia(PersistenceHelper.getEntityManager(), detalle.getPersoncode()); - TarmGuardias guardia=null; - if(guardiasList!=null && guardiasList.size()>0){ - guardia=guardiasList.get(0); - guardia.setIsnew(false); - List lconocimientos = findEvaluacion(PersistenceHelper.getEntityManager(), detalle.getPersoncode(), "CONOCIMIENTO"); - if(lpsicologicas!=null && !lpsicologicas.isEmpty() && ((lconocimientos!=null && !lconocimientos.isEmpty()) || detalle.getResultado().equalsIgnoreCase("APROBADO"))){ - guardia.setEstado("APT"); - } - else{ - guardia.setEstado("NAPT"); - } - if(!guardia.isnew){ - PersistenceHelper.getEntityManager().merge(guardia); - }else{ - PersistenceHelper.getEntityManager().persist(guardia); - } - } - } - PersistenceHelper.getEntityManager().flush(); - return pSaveRequest; - } - - public static List findGuardia(EntityManager pEntityManager, Integer personcodigo) throws Exception { - - Query qry = pEntityManager.createQuery(EvaluarGuardia.JPQL_GUARDIAS); - qry.setParameter("personcode", personcodigo); - return qry.getResultList(); - } - - public static List findEvaluacion(EntityManager pEntityManager, Integer personcodigo, String tipoevaluacion) throws Exception { - - Query qry = pEntityManager.createQuery(EvaluarGuardia.JPQL_EVALUACION); - qry.setParameter("personcode", personcodigo); - qry.setParameter("tipoevaluacion", tipoevaluacion); - - return qry.getResultList(); - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - - - - - private String getCodigoPreguntas() throws Exception { - Sequence sequence = new Sequence(); - String codigo = sequence.getNextValue("CEVALUACION").toString(); - return codigo; - } - - - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/entries deleted file mode 100644 index fd76fb9..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad -svn://172.17.26.185/COMACO - - - -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -VentasVariasArmasMovimiento.java -file - - - - -2022-07-28T03:40:41.056796Z -5966eafe27f795758913c41e17c3d18c -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18894 - -Movimiento.java -file - - - - -2022-07-28T03:40:41.056796Z -7ff47e3c08099cb40eb1681aa160de69 -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18085 - -Sancionar.java -file - - - - -2022-07-28T03:40:41.056796Z -a280a6890d19ec46f469ac5bbee9b7e7 -2015-01-16T05:37:05.335772Z -3758 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5637 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Movimiento.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Movimiento.java.svn-base deleted file mode 100644 index b2a9254..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Movimiento.java.svn-base +++ /dev/null @@ -1,355 +0,0 @@ -package com.fp.armas.rules.save.funcionalidad; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Persiste las armas vendidas y los registros en caso de que sea venta - * @author Andres Cevallos - * - */ -public class Movimiento extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - //Objetos que vienen llenos - TarmArmas arma = (TarmArmas) pSaveRequest.getSaveBeanModifiedObject("VENTAARMAS"); - TarmMovimientoArmas tarmMovimientoArmas=(TarmMovimientoArmas) pSaveRequest.getSaveBeanModifiedObject("MOVIMIENTO"); - if(pSaveRequest.getSaveBeanModifiedObject("VENTAARMATEMPORAL") !=null ){ - TarmVentaArmaTem venta=(TarmVentaArmaTem)pSaveRequest.getSaveBeanModifiedObject("VENTAARMATEMPORAL") ; - venta.setPk(getCodigoVentaArmaTemp()); - } - if(arma==null || (arma.getEstadoventa()!=null && arma.getEstadoventa().equals("PENVEN"))){ - return pSaveRequest; - } - - //se llenan - TarmRegistroArmas registroArmaComprador= new TarmRegistroArmas(); - ListregistroArmaCompradorList = (List)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS"); - ListarmaList = (List)pSaveRequest.getSaveBeanModifiedRecords("VENTAARMAS"); - ListtotalPersonaList = (List)pSaveRequest.getSaveBeanModifiedRecords("VENTATOTALPERSONA"); - - tarmMovimientoArmas.setPk(getCodigoMovimiento()); - //Si es venta - if(tarmMovimientoArmas.getTipomovimiento().equals("VENT")){//---------------------------------------------------------------------------------------------------------------------------------- - //1 se genera un registro de arma con lo que se vende - TarmArmas armaVende= (TarmArmas)arma.cloneMe(); - armaVende.setPk(getCodigoArmas()); - armaVende.setEstado("VEND"); - armaVende.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){ - armaVende.setCantidad(armaVende.getValorAux()); - } - if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 && - armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaVende.setPeso(armaVende.getPesoAux()); - } - //2. se genera un registro de arma con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //3.Nuevo TarmRegistroArma del nuevo propietario - registroArmaComprador.setPk(getCodigoRegistro()); - registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodecomprador()); - registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento()); - registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO"); - registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime())); - - //4.Nuevo registro Arma con el uevo propietario - TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe(); - armaNuevoPropietario.setPk(getCodigoArmas()); - armaNuevoPropietario.setCregistro(registroArmaComprador.getPk()); - armaNuevoPropietario.setEstado("REG"); - armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){ - armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux()); - } - if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 && - armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux()); - } - //5. Se genera un registro TarmTotalPersona del que vende - TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor()); - totalPersonaVendedor.setCarma(arma.getPk()); - totalPersonaVendedor.setIngresoegreso("EGR"); - totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad())); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(arma.getPeso()); - } - } - totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal()); - totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento())); - totalPersonaVendedor.setPk(getCtotal()); - //6. Se genera un registro de ING para el comprador - TarmTotalPersona totalPersonaComprador =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodecomprador()); - totalPersonaComprador.setCarma(arma.getPk()); - totalPersonaComprador.setIngresoegreso("ING"); - totalPersonaComprador.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaComprador.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaComprador.getTotal()==null){ - totalPersonaComprador.setTotal(new BigDecimal(0)); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaComprador.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaComprador.getTotal()==null){ - totalPersonaComprador.setTotal(new BigDecimal(0)); - } - } - totalPersonaComprador.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaComprador.setSaldoanterior(totalPersonaComprador.getTotal()); - totalPersonaComprador.setTotal(totalPersonaComprador.getTotal().add(totalPersonaComprador.getCantidadmovimiento())); - totalPersonaComprador.setPk(getCtotal()); - //registroarmas - registroArmaCompradorList.add(registroArmaComprador); - //se aniade las armas - armaList.add(armaVende);//VEND - armaList.add(armaQueda);//REG - armaList.add(armaNuevoPropietario);//REG - //los registros del total de persona - totalPersonaList.add(totalPersonaVendedor); - totalPersonaList.add(totalPersonaComprador); - arma=null; - }else if(tarmMovimientoArmas.getTipomovimiento().equals("CONS") || tarmMovimientoArmas.getTipomovimiento().equals("MATP") - || tarmMovimientoArmas.getTipomovimiento().equals("MAT")){//------------------------------------------------------------------------------------------------------------------------------- - System.out.println("tipo de movimiento consumidor......"+tarmMovimientoArmas.getTipomovimiento()); - if(tarmMovimientoArmas.getTipomovimiento().equals("MATP")){ - tarmMovimientoArmas.setTipomovimiento("MAT"); - } - - //1 se genera un registro de arma o explosivo de lo que se consume en estado CONS - TarmArmas armaVende= (TarmArmas)arma.cloneMe(); - armaVende.setPk(getCodigoArmas()); - //armaVende.setEstado("CONS"); - armaVende.setEstado(tarmMovimientoArmas.getTipomovimiento()); - if(tarmMovimientoArmas.getTipomovimiento().equals("MAT")){ - armaVende.setEstado("MATP"); - } - armaVende.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){ - armaVende.setCantidad(armaVende.getValorAux()); - } - if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 && - armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaVende.setPeso(armaVende.getPesoAux()); - } - //2. se genera un registro de arma o explosivo con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //3. Se genera un registro TarmTotalPersona del que esta consumiendo se resta - TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor()); - totalPersonaVendedor.setCarma(arma.getPk()); - totalPersonaVendedor.setIngresoegreso("EGR"); - totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad())); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(arma.getPeso()); - } - } - totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal()); - totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento())); - totalPersonaVendedor.setPk(getCtotal()); - - //se aniade las armas - armaList.add(armaVende);//CONS arma que consume - armaList.add(armaQueda);//REG lo que queda - //los registros del total de persona - totalPersonaList.add(totalPersonaVendedor);//total que le queda - arma=null; - }else if(tarmMovimientoArmas.getTipomovimiento().equals("TRASL")){//-------------------------------------------------------------------------------------------------------------------- - //1. se genera un registro de arma con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //2.Nuevo TarmRegistroArma del nuevo propietario QUE SERIA LA MISMA PERSONA SE DIVIDE el explosivo - registroArmaComprador.setPk(getCodigoRegistro()); - registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodevendedor()); - registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento()); - registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO"); - registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime())); - - //4.Nuevo registro Arma con el uevo propietario - TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe(); - armaNuevoPropietario.setPk(getCodigoArmas()); - armaNuevoPropietario.setCregistro(registroArmaComprador.getPk()); - armaNuevoPropietario.setEstado("REG"); - armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){ - armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux()); - } - if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 && - armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux()); - } - //registroarmas - registroArmaCompradorList.add(registroArmaComprador); - //se aniade las armas - armaList.add(armaQueda);//REG se divide el explosivo - armaList.add(armaNuevoPropietario);//REG - arma=null; - } - return pSaveRequest; - } - - public TarmTotalPersona totalPersona(EntityManager em,String ctipoarmaexplosivo,Integer personcodigo) throws Exception{ - TarmTipoArmaExplosivo armaExplosivo= TarmTipoArmaExplosivo.find(em,ctipoarmaexplosivo); - - String sql ="select t from TarmTotalPersona t where t.clase='"+armaExplosivo.getClase()+"' and t.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t.personcodigo="+personcodigo+" and t.fecha =(select max(t1.fecha) from TarmTotalPersona t1" - + " where t1.clase='"+armaExplosivo.getClase()+"' and t1.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t1.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t1.personcodigo="+personcodigo+")"; - System.out.println("query totalPersoan....:"+sql); - ListtarmTotalPersonas= em.createQuery(sql,TarmTotalPersona.class).getResultList(); - if(tarmTotalPersonas!=null && tarmTotalPersonas.size()>0){ - return tarmTotalPersonas.get(0); - }else{ - TarmTotalPersona totalPersona= new TarmTotalPersona(); - totalPersona.setClase(armaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(armaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(armaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(personcodigo); - totalPersona.setTotal(null); - totalPersona.setSaldoanterior(new BigDecimal(0)); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - return totalPersona; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - return arg0; - } - - /** - * Metodo que devuelve la secuencia de un cliente. - * @return Codigo del nuevo cliente. - * @throws Exception - */ - private Long getCodigoRegistro() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CREGISTRO").longValue(); - return codigo; - } - - private Integer getCodigoVentaArmaTemp() throws Exception { - Sequence sequence = new Sequence(); - Integer codigo = sequence.getNextValue("TARMVENTAARMATEM").intValue(); - return codigo; - } - /** - * Obtiene el secuencial de Armas - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - - /** - * Obtiene el secuencial de movimientos - * @return - * @throws Exception - */ - private String getCodigoMovimiento() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CMOVIMIENTO").toString(); - return codigoArma; - } - - private String getCtotal() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CTOTAL").toString(); - return codigoArma; - } -} - - - - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Sancionar.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Sancionar.java.svn-base deleted file mode 100644 index 13fc568..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/Sancionar.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -package com.fp.armas.rules.save.funcionalidad; - - - - -import java.util.Date; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmTipoSancion; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmSancionDecomiso; -import com.fp.persistence.parmas.soli.TarmSancionRecomendacion; -import com.fp.sessionbeans.helper.Sequence; - - -/** - * @author Andres Cevallos - * Clase que ingresa un registro de evaluacin psicolgica y la registra - */ -/** - * @author Andres Cevallos - * - */ -public class Sancionar extends TransactionRule { - String numerosancion; - /** - * Se gestiona el estado del arma y el estado del documento habilitante - */ - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - /*if (this.isNew(pSaveRequest)) { - return pSaveRequest; - }*/ - // 1 SETEO DE LOS AMPOS PARA LA SANCION TarmSancionDecomiso * - List lsanciondecomiso =(List) pSaveRequest.getSaveBeanModifiedRecords("SANCIONDECOMISO"); - // 2 RECOMENDACIONES * - List lrecomendacion = (List)pSaveRequest.getSaveBeanModifiedRecords("SANCIONRECOMENDACION"); - //3 TarmArmas Nuevo registro con el nuevo estado - List larmas = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - // 4 TarmDecomisoArma actualiza el estado - List larmasDecomisadas = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA"); - - if(lsanciondecomiso!=null && !lsanciondecomiso.isEmpty()){ - TarmSancionDecomiso sanciondecomiso = (TarmSancionDecomiso) lsanciondecomiso.get(0); - //Genera el codigo compuesto de sancion - sanciondecomiso.getPk().setCsanciondecomiso(getCodigoSancion()); - numerosancion=sanciondecomiso.getPk().getCsanciondecomiso(); - sanciondecomiso.setNoresolucion("ENV"+"-"+StringUtils.leftPad(numerosancion, 9, '0')); - //recorremos las recomendaciones - if(lrecomendacion!=null && !lrecomendacion.isEmpty()){//lrecomendacion - for(Object recomendacion : lrecomendacion){ - TarmSancionRecomendacion recomendacionObj= (TarmSancionRecomendacion) recomendacion; - recomendacionObj.setPk(getCodigoRecomendacion()); - recomendacionObj.setCsanciondecomiso(sanciondecomiso.getPk().getCsanciondecomiso()); - recomendacionObj.setCdecomiso(sanciondecomiso.getPk().getCdecomiso()); - } - } - //Registro del arma sancionada TarmArma - TarmArmas armaSancionObj=(TarmArmas) sanciondecomiso.getModifiedData().get("arma"); - armaSancionObj.setIsnew(true); - armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getDate())); - armaSancionObj.setPk(getCodigoArmas()); - //VALIDAMOS EL TIPO DE SANCION - TarmTipoSancion tipoSancionObj = TarmTipoSancion.find(PersistenceHelper.getEntityManager(), sanciondecomiso.getCtiposancion()); - if(tipoSancionObj!=null){ - System.out.println("sancion ...."+tipoSancionObj.getSancion()); - if(tipoSancionObj.getSancion().equals("1")){ - // CUANDO LA SANCION ESCOGIDA ES UNA CANCELACION DE PERMISO - armaSancionObj.setEstado("CANC"); - armaSancionObj.setEstadocodigo("ESTADOARMA"); - armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); - }else if(tipoSancionObj.getSancion().equals("2")){ - // CUANDO LA SANCION ESCOGIDA ES UNA SUSPENCION DE PERMISO - armaSancionObj.setEstado("SUSP"); - armaSancionObj.setEstadocodigo("ESTADOARMA"); - armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); - }else if(tipoSancionObj.getSancion().equals("SANCIONSINDOC")){ - //cuando no tiene documento para sancionar se le deja en estado incautado - armaSancionObj.setEstado("INC"); - armaSancionObj.setEstadocodigo("ESTADOARMA"); - armaSancionObj.setFecharegistro(new java.sql.Date(new Date().getTime())); - }else{ - throw new Exception("SANCI\u00d3N NO ENCONTRADA : "+tipoSancionObj.getSancion()); - } - }else{ - throw new Exception("TIPO DE SANCI\u00d3N NO ENCONTRADA"); - } - larmas.add(armaSancionObj); - //Registro del armaDECOMISO TarmDecomisoArma - TarmDecomisoArma tarmDecomisoArma = (TarmDecomisoArma) armaSancionObj.getModifiedData().get("decomisoArma"); - tarmDecomisoArma.setEstado(armaSancionObj.getEstado()); - larmasDecomisadas.add(tarmDecomisoArma); - } - return pSaveRequest; - } - - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - - /** - * Obtiene el codigo de la evaluacion - * @return - * @throws Exception - */ - private String getCodigoRecomendacion() throws Exception { - Sequence sequence = new Sequence(); - String codigo = sequence.getNextValue("CSANCIONRECOMENDACION").toString(); - return codigo; - - } - - - private String getCodigoSancion() throws Exception { - Sequence sequence = new Sequence(); - String codigo = sequence.getNextValue("CSANCIONDECOMISO").toString(); - return codigo; - - } - - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - - } - - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/VentasVariasArmasMovimiento.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/VentasVariasArmasMovimiento.java.svn-base deleted file mode 100644 index ddb1071..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/funcionalidad/.svn/text-base/VentasVariasArmasMovimiento.java.svn-base +++ /dev/null @@ -1,363 +0,0 @@ -package com.fp.armas.rules.save.funcionalidad; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Persiste las armas vendidas y los registros en caso de que sea venta - * @author - * - */ -public class VentasVariasArmasMovimiento extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - - TarmMovimientoArmas tarmMovimientoArmas=(TarmMovimientoArmas)pSaveRequest.get("tarmMovimientoArmas"); - ListtarmMovimientoArmasList = (List)pSaveRequest.getSaveBeanModifiedRecords("MOVIMIENTO"); - ListregistroArmaCompradorList = (List)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS"); - ListarmaList = new ArrayList<>(); - ListtotalPersonaList = (List)pSaveRequest.getSaveBeanModifiedRecords("VENTATOTALPERSONA"); - //recorremos la lista de armas - List armas = (List)pSaveRequest.getSaveBeanModifiedRecords("VENTAVARIASARMAS"); - if(armas.size()==0){ - TarmArmas armar=(TarmArmas)pSaveRequest.getSaveBeanModifiedObject("VENTAVARIASARMAS"); - armas.add(armar); - } - for (Object item : armas) { - TarmArmas arma =(TarmArmas)item; - //clonar movimiento por arma - TarmMovimientoArmas tarmMovimientoArmasclon=(TarmMovimientoArmas) tarmMovimientoArmas.cloneMe(); - tarmMovimientoArmasclon.setCarma(arma.getPk()); - tarmMovimientoArmasclon.setPk(getCodigoMovimiento()); - //se llenan - TarmRegistroArmas registroArmaComprador= new TarmRegistroArmas(); - //TODO - llenarDatosVentaArmas(tarmMovimientoArmasclon,arma,registroArmaComprador,registroArmaCompradorList,armaList,totalPersonaList,em); - - tarmMovimientoArmasList.add(tarmMovimientoArmasclon); - } - armas.addAll(armaList); - return pSaveRequest; - } - - private void llenarDatosVentaArmas(TarmMovimientoArmas tarmMovimientoArmas,TarmArmas arma, - TarmRegistroArmas registroArmaComprador,ListregistroArmaCompradorList, - ListarmaList,ListtotalPersonaList,EntityManager em) throws Exception{ - //Si es venta - if(tarmMovimientoArmas.getTipomovimiento().equals("VENT")){//---------------------------------------------------------------------------------------------------------------------------------- - //1 se genera un registro de arma con lo que se vende - TarmArmas armaVende= (TarmArmas)arma.cloneMe(); - armaVende.setPk(getCodigoArmas()); - armaVende.setEstado("VEND"); - armaVende.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){ - armaVende.setCantidad(armaVende.getValorAux()); - } - if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 && - armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaVende.setPeso(armaVende.getPesoAux()); - } - //2. se genera un registro de arma con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //3.Nuevo TarmRegistroArma del nuevo propietario - registroArmaComprador.setPk(getCodigoRegistro()); - registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodecomprador()); - registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento()); - registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO"); - registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime())); - - //4.Nuevo registro Arma con el uevo propietario - TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe(); - armaNuevoPropietario.setPk(getCodigoArmas()); - armaNuevoPropietario.setCregistro(registroArmaComprador.getPk()); - armaNuevoPropietario.setEstado("REG"); - armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){ - armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux()); - } - if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 && - armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux()); - } - //5. Se genera un registro TarmTotalPersona del que vende - TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor()); - totalPersonaVendedor.setCarma(arma.getPk()); - totalPersonaVendedor.setIngresoegreso("EGR"); - totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad())); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(arma.getPeso()); - } - } - totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal()); - totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento())); - totalPersonaVendedor.setPk(getCtotal()); - //6. Se genera un registro de ING para el comprador - TarmTotalPersona totalPersonaComprador =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodecomprador()); - totalPersonaComprador.setCarma(arma.getPk()); - totalPersonaComprador.setIngresoegreso("ING"); - totalPersonaComprador.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaComprador.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaComprador.getTotal()==null){ - totalPersonaComprador.setTotal(new BigDecimal(0)); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaComprador.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaComprador.getTotal()==null){ - totalPersonaComprador.setTotal(new BigDecimal(0)); - } - } - totalPersonaComprador.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaComprador.setSaldoanterior(totalPersonaComprador.getTotal()); - totalPersonaComprador.setTotal(totalPersonaComprador.getTotal().add(totalPersonaComprador.getCantidadmovimiento())); - totalPersonaComprador.setPk(getCtotal()); - //registroarmas - registroArmaCompradorList.add(registroArmaComprador); - //se aniade las armas - armaList.add(armaVende);//VEND - armaList.add(armaQueda);//REG - armaList.add(armaNuevoPropietario);//REG - //los registros del total de persona - totalPersonaList.add(totalPersonaVendedor); - totalPersonaList.add(totalPersonaComprador); - arma=null; - }else if(tarmMovimientoArmas.getTipomovimiento().equals("CONS") || tarmMovimientoArmas.getTipomovimiento().equals("MATP") - || tarmMovimientoArmas.getTipomovimiento().equals("MAT")){//------------------------------------------------------------------------------------------------------------------------------- - System.out.println("tipo de movimiento consumidor......"+tarmMovimientoArmas.getTipomovimiento()); - if(tarmMovimientoArmas.getTipomovimiento().equals("MATP")){ - tarmMovimientoArmas.setTipomovimiento("MAT"); - } - - //1 se genera un registro de arma o explosivo de lo que se consume en estado CONS - TarmArmas armaVende= (TarmArmas)arma.cloneMe(); - armaVende.setPk(getCodigoArmas()); - //armaVende.setEstado("CONS"); - armaVende.setEstado(tarmMovimientoArmas.getTipomovimiento()); - if(tarmMovimientoArmas.getTipomovimiento().equals("MAT")){ - armaVende.setEstado("MATP"); - } - armaVende.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){ - armaVende.setCantidad(armaVende.getValorAux()); - } - if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 && - armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaVende.setPeso(armaVende.getPesoAux()); - } - //2. se genera un registro de arma o explosivo con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //3. Se genera un registro TarmTotalPersona del que esta consumiendo se resta - TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor()); - totalPersonaVendedor.setCarma(arma.getPk()); - totalPersonaVendedor.setIngresoegreso("EGR"); - totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime())); - - if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getValorAux())); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad())); - } - } - if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && - arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ - totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux()); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(arma.getPeso()); - } - } - totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal()); - totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento())); - totalPersonaVendedor.setPk(getCtotal()); - - //se aniade las armas - armaList.add(armaVende);//CONS arma que consume - armaList.add(armaQueda);//REG lo que queda - //los registros del total de persona - totalPersonaList.add(totalPersonaVendedor);//total que le queda - arma=null; - }else if(tarmMovimientoArmas.getTipomovimiento().equals("TRASL")){//-------------------------------------------------------------------------------------------------------------------- - //1. se genera un registro de arma con lo q queda en REG - TarmArmas armaQueda= (TarmArmas)arma.cloneMe(); - armaQueda.setPk(getCodigoArmas()); - armaQueda.setEstado("REG"); - armaQueda.setFecharegistro(new java.sql.Date(new Date().getTime())); - Integer cantidadQueda=0; - BigDecimal pesoQueda=new BigDecimal(0); - if(armaQueda.getCantidad()!=null && armaQueda.getCantidad()>0 && armaQueda.getValorAux()>0 ){ - cantidadQueda=armaQueda.getCantidad()-armaQueda.getValorAux(); - armaQueda.setCantidad(cantidadQueda); - } - if(armaQueda.getPeso()!=null && armaQueda.getPeso().compareTo(new BigDecimal(0))>0 && - armaQueda.getPesoAux()!=null && armaQueda.getPesoAux().compareTo(new BigDecimal(0))>0){ - pesoQueda=armaQueda.getPeso().subtract(armaQueda.getPesoAux()); - armaQueda.setPeso(pesoQueda); - } - //2.Nuevo TarmRegistroArma del nuevo propietario QUE SERIA LA MISMA PERSONA SE DIVIDE el explosivo - registroArmaComprador.setPk(getCodigoRegistro()); - registroArmaComprador.setPersoncode(tarmMovimientoArmas.getPersoncodevendedor()); - registroArmaComprador.setTiporegistro(tarmMovimientoArmas.getTipomovimiento()); - registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO"); - registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime())); - - //4.Nuevo registro Arma con el uevo propietario - TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe(); - armaNuevoPropietario.setPk(getCodigoArmas()); - armaNuevoPropietario.setCregistro(registroArmaComprador.getPk()); - armaNuevoPropietario.setEstado("REG"); - armaNuevoPropietario.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){ - armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux()); - } - if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 && - armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux()); - } - //registroarmas - registroArmaCompradorList.add(registroArmaComprador); - //se aniade las armas - armaList.add(armaQueda);//REG se divide el explosivo - armaList.add(armaNuevoPropietario);//REG - arma=null; - } - } - - public TarmTotalPersona totalPersona(EntityManager em,String ctipoarmaexplosivo,Integer personcodigo) throws Exception{ - TarmTipoArmaExplosivo armaExplosivo= TarmTipoArmaExplosivo.find(em,ctipoarmaexplosivo); - - String sql ="select t from TarmTotalPersona t where t.clase='"+armaExplosivo.getClase()+"' and t.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t.personcodigo="+personcodigo+" and t.fecha =(select max(t1.fecha) from TarmTotalPersona t1" - + " where t1.clase='"+armaExplosivo.getClase()+"' and t1.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t1.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t1.personcodigo="+personcodigo+")"; - System.out.println("query totalPersoan....:"+sql); - ListtarmTotalPersonas= em.createQuery(sql,TarmTotalPersona.class).getResultList(); - if(tarmTotalPersonas!=null && tarmTotalPersonas.size()>0){ - return tarmTotalPersonas.get(0); - }else{ - TarmTotalPersona totalPersona= new TarmTotalPersona(); - totalPersona.setClase(armaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(armaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(armaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(personcodigo); - totalPersona.setTotal(null); - totalPersona.setSaldoanterior(new BigDecimal(0)); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - return totalPersona; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - return arg0; - } - - /** - * Metodo que devuelve la secuencia de un cliente. - * @return Codigo del nuevo cliente. - * @throws Exception - */ - private Long getCodigoRegistro() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CREGISTRO").longValue(); - return codigo; - } - - /** - * Obtiene el secuencial de Armas - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - - /** - * Obtiene el secuencial de movimientos - * @return - * @throws Exception - */ - private String getCodigoMovimiento() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CMOVIMIENTO").toString(); - return codigoArma; - } - - private String getCtotal() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CTOTAL").toString(); - return codigoArma; - } -} - - - - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/entries deleted file mode 100644 index 34e16e9..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion -svn://172.17.26.185/COMACO - - - -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ModificarPlanificacionInspeccionSave.java -file - - - - -2022-07-28T03:40:41.237796Z -c2199df493c2f9e829a430a8fcc53eb0 -2014-11-18T10:14:48.923978Z -2917 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1435 - -PlanificacionInspeccionSave.java -file - - - - -2022-07-28T03:40:41.237796Z -4b10307a3898b82ee5c96e4ca8a45e08 -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2303 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/ModificarPlanificacionInspeccionSave.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/ModificarPlanificacionInspeccionSave.java.svn-base deleted file mode 100644 index 65c85f2..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/ModificarPlanificacionInspeccionSave.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.armas.rules.save.inspeccion; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.sessionbeans.helper.Sequence; - -public class ModificarPlanificacionInspeccionSave extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - @SuppressWarnings({"unchecked" }) - List inspecciones=(ArrayList)pSaveRequest.get("INSPECCIONES"); - - //Persistieno las inspecciones - for (TarmPlanificacionTramite inspeccion : inspecciones) { - inspeccion=(TarmPlanificacionTramite)PersistenceHelper.getEntityManager().merge(inspeccion); - PersistenceHelper.getEntityManager().persist(inspeccion); - } - - PersistenceHelper.getEntityManager().flush(); - - } catch (Exception e) { - return pSaveRequest; - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/PlanificacionInspeccionSave.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/PlanificacionInspeccionSave.java.svn-base deleted file mode 100644 index 9e1cb8b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/inspeccion/.svn/text-base/PlanificacionInspeccionSave.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -package com.fp.armas.rules.save.inspeccion; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.sessionbeans.helper.Sequence; - -public class PlanificacionInspeccionSave extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - TarmPlanificacionInspeccion planificacion=(TarmPlanificacionInspeccion)pSaveRequest.get("PLANIFICACION"); - - @SuppressWarnings({"unchecked" }) - List inspecciones=(ArrayList)pSaveRequest.get("INSPECCIONES"); - - //Persistiendo la planificacion - String cplanificacion = null; - Sequence sequence = new Sequence(); - Integer valor=Integer.valueOf(sequence.getNextValue("CPLANIFICACION").toString()); - if(valor!=null){ - cplanificacion=valor.toString(); - planificacion.setPk(Long.parseLong(cplanificacion)); - PersistenceHelper.getEntityManager().persist(planificacion); - } - - pSaveRequest.getResponse().put("CPLANIFICACION", planificacion.getPk()); - - //Persistieno las inspecciones - for (TarmPlanificacionTramite inspeccion : inspecciones) { - inspeccion.setCplanificacion(planificacion.getPk()); - - String cplanificaciontramite = null; - sequence = new Sequence(); - valor=Integer.valueOf(sequence.getNextValue("CPLANIFICACIONTRAMITE").toString()); - if(valor!=null){ - cplanificaciontramite=valor.toString(); - inspeccion.setPk(Long.parseLong(cplanificaciontramite)); - PersistenceHelper.getEntityManager().persist(inspeccion); - } - } - - PersistenceHelper.getEntityManager().flush(); - - } catch (Exception e) { - return pSaveRequest; - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/entries deleted file mode 100644 index ae0d78d..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer -svn://172.17.26.185/COMACO - - - -2014-11-11T05:47:16.298444Z -2586 -ogarcia - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -PeopleFastSave.java -file - - - - -2022-07-28T03:40:41.077796Z -96140636517d8fd8e8234cfb97137e01 -2014-11-11T05:47:16.298444Z -2586 -ogarcia - - - - - - - - - - - - - - - - - - - - - -5792 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/text-base/PeopleFastSave.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/text-base/PeopleFastSave.java.svn-base deleted file mode 100644 index de683b5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/pcustomer/.svn/text-base/PeopleFastSave.java.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -package com.fp.armas.rules.save.pcustomer; - -import java.sql.Date; -import java.sql.Timestamp; -import java.util.Calendar; - -import org.apache.velocity.texen.util.FileUtil; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.sessionbeans.helper.Sequence; - -public class PeopleFastSave extends TransactionRule { - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - /* - TcustPersonDetail d=(TcustPersonDetail)pSaveRequest.get("DETALLESPERSONA"); - TcustPersonDetail personaBD=PersistenceHelper.getEntityManager().find(TcustPersonDetail.class, d.getPk()); - byte[] photo=(byte[])pSaveRequest.get("PHOTO"); - String extension=pSaveRequest.get("EXTENSION").toString(); - TsafeUserDetail usuario=(TsafeUserDetail)pSaveRequest.get("USUARIO"); - - //Seteando los campos - personaBD.setActivitycode(d.getActivitycode()); - personaBD.setBranchcode(d.getBranchcode()); - personaBD.setClienttypecatalog(d.getClienttypecatalog()); - personaBD.setClienttypecatalogcode(d.getClienttypecatalogcode()); - personaBD.setCompanycode(d.getCompanycode()); - personaBD.setDateexpidentification(d.getDateexpidentification()); - personaBD.setDatefrom(d.getDatefrom()); - personaBD.setEconomicsectorcatalog(d.getEconomicsectorcatalog()); - personaBD.setEconomicsectorcatalogcode(d.getEconomicsectorcatalogcode()); - personaBD.setIdentification(d.getIdentification()); - personaBD.setIdentificationcatalog(d.getIdentificationcatalog()); - personaBD.setIdentificationcatalogcode(d.getIdentificationcatalogcode()); - personaBD.setIngressuser(d.getIngressuser()); - personaBD.setInnerscore(d.getInnerscore()); - personaBD.setIsmigrated(d.getIsmigrated()); - personaBD.setLanguagecode(d.getLanguagecode()); - personaBD.setLegalrepresent(d.getLegalrepresent()); - personaBD.setLegalrepresentidentification(d.getLegalrepresentidentification()); - personaBD.setMilitarygrade(d.getMilitarygrade()); - personaBD.setMilitarygradecode(d.getMilitarygradecode()); - personaBD.setModifyuser(d.getModifyuser()); - personaBD.setName(d.getName()); - personaBD.setNickname(d.getNickname()); - personaBD.setOfficecode(d.getOfficecode()); - personaBD.setParthnernumber(d.getParthnernumber()); - personaBD.setPersontypecatalog(d.getPersontypecatalog()); - personaBD.setPersontypecatalogcode(d.getPersontypecatalogcode()); - - personaBD.setRecordversion(d.getRecordversion()); - personaBD.setRegisterdate(d.getRegisterdate()); - personaBD.setSbsemployee(d.getSbsemployee()); - personaBD.setSbsusercode(d.getSbsusercode()); - personaBD.setSign(d.getSign()); - personaBD.setTaxexempt(d.getTaxexempt()); - //personaBD.setPicture(d.getPicture()); - - //Asginando la foto - if(photo!=null){ - - //Creando un nuevo archivo - TgeneFilesDetail archivoActual=new TgeneFilesDetail(); - - //Caso de que exista un arhivo anterior - if(personaBD.getPhoto()!=null){ - - TgeneFilesDetail archivoAnterior=PersistenceHelper.getEntityManager().find(TgeneFilesDetail.class, personaBD.getPhoto()); - archivoAnterior.getPk().setDateto(new java.sql.Timestamp(Calendar.getInstance().getTimeInMillis())); - PersistenceHelper.getEntityManager().persist(archivoAnterior); - - archivoActual.setPk(archivoAnterior.getPk()); - archivoActual.setDatefrom(archivoAnterior.getDatefrom()); - archivoActual.setIngressuser(archivoAnterior.getIngressuser()); - } - - //Creando un nuevo TEGENEFILES - Sequence sequence = new Sequence(); - Integer code=sequence.getNextValue("CODE"); - TgeneFiles file=new TgeneFiles(); - file.setPk(code); - //PersistenceHelper.getEntityManager().persist(file); - - //Creando el pk del TGENEFILEDETAIL - TgeneFilesDetailKey pk=new TgeneFilesDetailKey(); - - pk.setCode(code); - - Calendar calendario=Calendar.getInstance(); - calendario.set(Calendar.MONTH, Calendar.DECEMBER); - calendario.set(Calendar.DAY_OF_MONTH, 31); - calendario.set(Calendar.YEAR, 2999); - - pk.setDateto(new Timestamp(calendario.getTimeInMillis())); - archivoActual.setPk(pk); - - archivoActual.setImage(photo); - archivoActual.setExtension(extension); - archivoActual.setImagesize(photo.length); - archivoActual.setCapturedate(new Date(Calendar.getInstance().getTimeInMillis())); - archivoActual.setModifyuser(usuario.getPk().getUsercode()); - archivoActual.setDescription("Foto de la persona"); - archivoActual.setContenttype("image/"+extension.substring(1,extension.length())); - - //PersistenceHelper.getEntityManager().persist(archivoActual); - } - - if(personaBD.getPk()!=null && personaBD.getPk().getPersoncode()!=null){ - personaBD=PersistenceHelper.getEntityManager().merge(personaBD); - PersistenceHelper.getEntityManager().persist(personaBD); - } - - PersistenceHelper.getEntityManager().flush(); - */ - - } catch (Exception e) { - return pSaveRequest; - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/entries deleted file mode 100644 index 13b3d21..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud -svn://172.17.26.185/COMACO - - - -2016-07-01T13:24:36.603167Z -4547 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CustodiaTemporal.java -file - - - - -2022-07-28T03:40:41.017796Z -26116a90d24990a88b4950858f082c0e -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6028 - -Solicitud.java -file - - - - -2022-07-28T03:40:41.017796Z -63e7cefb52074a3ad84e8a1f7bc188c3 -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2823 - -DecomisoMaterial.java -file - - - - -2022-07-28T03:40:41.018796Z -b35a80cd7fe98273e0d04e6e2a3f75dd -2016-07-01T13:24:36.603167Z -4547 -cvasquez - - - - - - - - - - - - - - - - - - - - - -9701 - -DocumentoHabilitanteTransaccion.java -file - - - - -2022-07-28T03:40:41.018796Z -0d54221d9f743ae1c45ed92801c5d629 -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3957 - -Requisitos.java -file - - - - -2022-07-28T03:40:41.018796Z -6234666983a14bc9a9e2ad50a5820a48 -2014-09-24T09:46:43.157106Z -1092 -dcruz - - - - - - - - - - - - - - - - - - - - - -3580 - -DecomisoArmaTransaccion.java -file - - - - -2022-07-28T03:40:41.018796Z -8fbf2cd532ca37d32170d359d3a4a02f -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3764 - -OrdenTrabajoSave.java -file - - - - -2022-07-28T03:40:41.019796Z -860f4fb4bc8ed2f6d21dd09a2e75a9c2 -2014-09-01T07:37:02.533952Z -424 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1936 - -RegistroInspeccion.java -file - - - - -2022-07-28T03:40:41.019796Z -500720b98eda3ef1cbc61aef4628b5a4 -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3022 - -ActualizaReimpresion.java -file - - - - -2022-07-28T03:40:41.019796Z -0b0fd18df3e882b335804c95aaafec67 -2014-11-17T04:31:46.121907Z -2855 -cguzman - - - - - - - - - - - - - - - - - - - - - -1839 - -DecomisoArmaRecepcion.java -file - - - - -2022-07-28T03:40:41.019796Z -df205d4336e74532298b8ebca47e451b -2015-06-23T07:14:38.225355Z -4126 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6060 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/ActualizaReimpresion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/ActualizaReimpresion.java.svn-base deleted file mode 100644 index 1f452ec..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/ActualizaReimpresion.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitanteDetall; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; - -/** - * Clase que se encarga de actualizar el campo de Reimpresion para la tabla TarmDocumentoHabilitante. - * - * @author C.P. - * @version 2.1 - */ -public class ActualizaReimpresion extends TransactionRule{ - - /** - * - */ - private static final long serialVersionUID = 2006952557483529297L; - - @Override - public SaveRequest normalProcess(SaveRequest sRequest) throws Exception { - List listSolDocumento = (List)sRequest.getSaveBeanModifiedRecords("VERIFICARDOCUMENTOS"); - if(listSolDocumento!=null && !listSolDocumento.isEmpty()){ - for(Object obj:listSolDocumento){ - TarmSolicitudDocumento sol = (TarmSolicitudDocumento)obj; - if(sol.getChkimpresion().equals("Y")){ - TarmDocumentoHabilitante dh = new TarmDocumentoHabilitante(); - dh.setPk(sol.getPk().getCdocumento()); - TarmDocumentoHabilitante doc = TarmDocumentoHabilitante.find(PersistenceHelper.getEntityManager(), dh.getPk()); - if(doc.getCuentareimpresion()!=null){ - doc.setCuentareimpresion(doc.getCuentareimpresion()+1); - }else { - doc.setCuentareimpresion(1); - } - sRequest.putSaveBean("TARMDOCUMENTOHABILITANTE", doc); - } - - - } - - } - return sRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/CustodiaTemporal.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/CustodiaTemporal.java.svn-base deleted file mode 100644 index eff3523..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/CustodiaTemporal.java.svn-base +++ /dev/null @@ -1,150 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.data.SaveData; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCustodiaTemporal; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de completar informacin para realizar una custodia temporal. - * - * @author C.P. - * @version 2.1 - */ -public class CustodiaTemporal extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - List armaList = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - List custodiaTemporalList = (List)pSaveRequest.getSaveBeanModifiedRecords("CUSTODIATEM"); - //tabla del detalle de la custodia - List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA"); - - //registramos el arma y si ya existe le cambiamos de estado - for(Object obj:armaList){ - TarmArmas arma=(TarmArmas)obj; - //creamos el arma - arma.setPk(getCodigo("CARMA")); - if(tarmDecomisoArma!=null && tarmDecomisoArma.size()>0){ - TarmDecomisoArma decomisoArma= (TarmDecomisoArma)tarmDecomisoArma.get(0); - decomisoArma.setCarma( arma.getPk()); - }else{ - //seteo del detalle del decomiso y a que arma se le hace el decomiso - TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); - decomisoArma.setCarma( arma.getPk()); - decomisoArma.setObservacion(arma.getModifiedData().get("observacion").toString()); - //unidad de medida - decomisoArma.setUnidadmedida(arma.getUnidadmedidacantidad());//unidad de medida - decomisoArma.setUnidadmedidacode(arma.getUnidadmedidacantidadcodigo());//3 - //estado igual al del arma - decomisoArma.setEstado(arma.getEstado()); - decomisoArma.setEstadocode(arma.getEstadocodigo()); - //cantidad - if(arma.getCantidad()!=null){ - decomisoArma.setCantidad(new BigDecimal(arma.getCantidad())); - } - //estados anteriores - if(arma.getModifiedData().get("estadoanterior")!=null){ - decomisoArma.setEstadoanterior(arma.getModifiedData().get("estadoanterior").toString()); - } - decomisoArma.setFdecomiso((new Timestamp(new java.util.Date().getTime()))); - //codigo del arma - decomisoArma.setCarma(arma.getPk()); - tarmDecomisoArma.add(decomisoArma); - } - } - TarmCustodiaTemporal custodiaTem=null; - if(custodiaTemporalList!=null && custodiaTemporalList.size()>0){ - //seteo de los codigos de la custodia temporal - for(Object obj:custodiaTemporalList){ - custodiaTem=(TarmCustodiaTemporal)obj; - custodiaTem.setPk(getCodigo("CCUSTEMP")); - custodiaTem.setNotransaccion(getNumeroTransaccion(custodiaTem.getTiporegistro(), custodiaTem.getPk().toString())); - pSaveRequest.getResponse().put("numerotransaccion",custodiaTem.getNotransaccion()); - } - } - - //se inserta el detalle del decomiso - for(Object obj:tarmDecomisoArma){ - TarmDecomisoArma decomisoArma=(TarmDecomisoArma)obj; - if(custodiaTem!=null){ - decomisoArma.setCcustemp(custodiaTem.getPk());//codigo del arma - } - decomisoArma.setPk(getCodigo("CDECOMISOARMA")); - - } - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia que le pertenece a una nueva persona. - * - * @return Codigo de la nueva persona. - * @throws Exception - */ - protected Integer getPersonCode() throws Exception { - Sequence sequence = new Sequence(); - Integer personcode = Integer.valueOf(sequence.getNextValue("PERSONCODE").toString()); - SaveData.getMap().put("PERSONCODE", personcode.toString()); - return personcode; - } - - /** - * Completa el codigo de la persona en la tabla TcustPersonDetail - * - * @param tcustPersonDetail Objeto que posee el registro a guardar en la tabla TcustPersonDetail. - * @param personcode Codigo de la nueva persona a ser guardada. - * @throws Exception - */ - protected void completePersonDetail(TcustPersonDetail tcustPersonDetail, Integer personcode) throws Exception { - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey(); - tcustPersonDetailKey.setPersoncode(personcode); - tcustPersonDetail.setPk(tcustPersonDetailKey); - } - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia del codigo - * @param codigoSec - * @return String - * @throws Exception - */ - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - Integer solcitud = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); - return solcitud.toString(); - } - /** - * Genera el numero de transaccion para la custodia - */ - private String getNumeroTransaccion(String prefijo,String secuencia){ - return prefijo+"-"+StringUtils.leftPad(secuencia, 6, '0'); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaRecepcion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaRecepcion.java.svn-base deleted file mode 100644 index 92a3919..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaRecepcion.java.svn-base +++ /dev/null @@ -1,143 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmBodega; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.sessionbeans.helper.Sequence; - -public class DecomisoArmaRecepcion extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = -1840770563013500407L; - - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - TarmDecomisoArmaTransaccion decomisoArmaTransaccion=(TarmDecomisoArmaTransaccion) pSaveRequest.getSaveBeanModifiedObject("DECOMISOARMATRANSACCION"); - //para las transacciones de la bodega - List transaccionArmaBodegas=(List) pSaveRequest.getSaveBeanModifiedRecords("TRANSACCIONARMABODEGA"); - List bodegas=(List) pSaveRequest.getSaveBeanModifiedRecords("BODEGA"); - - if(decomisoArmaTransaccion==null){ - return pSaveRequest; - } - - if(transaccionArmaBodegas==null){ - transaccionArmaBodegas= new ArrayList<>(); - } - if(bodegas==null){ - bodegas=new ArrayList<>(); - } - - TgeneParametersKey pKey= new TgeneParametersKey(); - pKey.setCode("CODIGO.RECEPCION"); - pKey.setCompanycode(1); - TgeneParameters parametro =TgeneParameters.find(PersistenceHelper.getEntityManager(), pKey); - - String prefijo=pSaveRequest.get("prefijo").toString(); - Calendar cal=Calendar.getInstance(); - java.sql.Date fechaRegistro=new java.sql.Date(cal.getTimeInMillis()); - //GENERA EL CODIGO PARA NUMERO DE TRANSACCION - //Long codigoGenerado = Long.parseLong(getCodigo("DECARMTRANRECECCION")); - - decomisoArmaTransaccion.setPk(Long.parseLong(getCodigo("CDECOMISOARMATRANSACCION"))); - decomisoArmaTransaccion.setFtransaccion(fechaRegistro); - decomisoArmaTransaccion.setNumerotransaccion( getNumeroTransaccion(prefijo,decomisoArmaTransaccion.getPk().toString())); - - //actualizacion del decomiso cabecera el centro control destino - TarmDecomiso decomiso=(TarmDecomiso)pSaveRequest.getSaveBeanModifiedObject("DECOMISO"); - - - TarmDecomisoArma decomisoArma=(TarmDecomisoArma)pSaveRequest.getSaveBeanModifiedObject("DECOMARMTRANRECECCION"); - List lDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("DECOMARMTRANRECECCION"); - - if(lDecomisoArma.isEmpty()){ - lDecomisoArma.add(decomisoArma); - } - - for (Object object : lDecomisoArma) { - TarmDecomisoArma c=(TarmDecomisoArma)object; - if(c.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - String centroControl=null; - //bodega de origen por envio - if(c.getCdecomisoarmatransaccion()!=null && c.getCdecomisoarmatransaccion()>0){ - TarmDecomisoArmaTransaccion transa= TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), c.getCdecomisoarmatransaccion()); - centroControl=transa.getCcentrocontrol(); - }else{ - centroControl=c.getModifiedData().get("ccentrocontrol").toString(); - } - c.setCdecarmtranrecepcion(decomisoArmaTransaccion.getPk()); - //transaccion del arma - TarmTransaccionArmaBodega tarmTransaccionArmaBodega = new TarmTransaccionArmaBodega(); - tarmTransaccionArmaBodega.setPk(Long.parseLong(getCodigo("CTRANARMBODEGA"))); - tarmTransaccionArmaBodega.setCdecomisoarmatransaccion(decomisoArmaTransaccion.getPk()); - tarmTransaccionArmaBodega.setCcentrocontrolorigen(centroControl); - tarmTransaccionArmaBodega.setCcentrocontroldestino(decomisoArmaTransaccion.getCcentrocontrol()); - tarmTransaccionArmaBodega.setCarma(c.getCarma()); - tarmTransaccionArmaBodega.setOperacioncode("OPERACIONDECOMISO"); - tarmTransaccionArmaBodega.setOperacion(parametro.getTextvalue()); - tarmTransaccionArmaBodega.setFecha(new Timestamp(new Date().getTime())); - transaccionArmaBodegas.add(tarmTransaccionArmaBodega); - //bodega actualiza o inserta - TarmBodega bodega=null; - List bodegal=PersistenceHelper.getEntityManager() - .createQuery("select o from TarmBodega o where o.carma=:carma") - .setParameter("carma", c.getCarma()) - .getResultList(); - if(bodegal!=null && bodegal.size()>0){ - bodega=bodegal.get(0); - } - if(bodega==null){ - bodega= new TarmBodega(); - bodega.setPk(Long.parseLong(getCodigo("CBODEGA"))); - } - bodega.setCarma(c.getCarma()); - bodega.setCcentrocontrol(decomisoArmaTransaccion.getCcentrocontrol()); - bodegas.add(bodega); - //actualiza la cab del decomiso centro conttrol destino - decomiso=TarmDecomiso.find(PersistenceHelper.getEntityManager(), c.getCdecomiso()); - decomiso.setCcentrocontroldestino(decomisoArmaTransaccion.getCcentrocontrol()); - } - } - pSaveRequest.getResponse().put("numerotransaccionrecep", decomisoArmaTransaccion.getNumerotransaccion()); - return pSaveRequest; - } - - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - // TODO Auto-generated method stub - return null; - } - - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - Integer solcitud = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); - return solcitud.toString(); - } - - private String getNumeroTransaccion(String prefijo,String secuencia){ - System.out.println("Ingresa al secuencial"); - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaTransaccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaTransaccion.java.svn-base deleted file mode 100644 index 6638fdf..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoArmaTransaccion.java.svn-base +++ /dev/null @@ -1,107 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.soli.TarmBodega; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Transaccion rule para decomiso de arma - * @author Carlos Guzman - * - */ -public class DecomisoArmaTransaccion extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = -1840770563013500407L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - TarmDecomisoArmaTransaccion decomisoArmaTransaccion=(TarmDecomisoArmaTransaccion) pSaveRequest.getSaveBeanModifiedObject("DECOMISOARMATRANSACCION"); - if(decomisoArmaTransaccion==null){ - return pSaveRequest; - } - Calendar cal=Calendar.getInstance(); - java.sql.Date fechaRegistro=new java.sql.Date(cal.getTimeInMillis()); - Long codigoGenerado = Long.parseLong(getCodigo("CDECOMISOARMATRANSACCION")); - - decomisoArmaTransaccion.setPk(codigoGenerado); - decomisoArmaTransaccion.setFtransaccion(fechaRegistro); - decomisoArmaTransaccion.setNumerotransaccion( getNumeroTransaccion("ENV",codigoGenerado.toString())); - TarmDecomisoArma decomisoArma=(TarmDecomisoArma)pSaveRequest.getSaveBeanModifiedObject("RPRTEDESTRUCCIONDEARMAS"); - List lDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("RPRTEDESTRUCCIONDEARMAS"); - List lArmaBodega=(List)pSaveRequest.getSaveBeanModifiedRecords("TRANSACCIONARMABODEGA"); - List lBodega=(List)pSaveRequest.getSaveBeanModifiedRecords("BODEGA"); - - if(lDecomisoArma.isEmpty()){ - lDecomisoArma.add(decomisoArma); - } - - for (Object object : lDecomisoArma) { - TarmDecomisoArma c=(TarmDecomisoArma)object; - - if(c.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - c.setCdecomisoarmatransaccion(codigoGenerado); - } - } - - for (Object object : lArmaBodega) { - TarmTransaccionArmaBodega c=(TarmTransaccionArmaBodega)object; - c.setPk(Long.parseLong(getCodigo("CTRANARMBODEGA"))); - c.setCdecomisoarmatransaccion(codigoGenerado); - c.setOperacion("ENVIO"); - c.setOperacioncode("OPERACIONDECOMISO"); - c.setFecha(new java.sql.Timestamp((new Date()).getTime())); - } - - for (Object object : lBodega) { - TarmBodega c=(TarmBodega)object; - c.setPk(Long.parseLong(getCodigo("CBODEGA"))); - } - - return pSaveRequest; - } - - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - // TODO Auto-generated method stub - return null; - } - - /** - * Metodo para obtener el numero de secuencia de la base de datos - * @param codigoSec nombre del campo de la secuencia - * @return la secuencia generada - * @throws Exception - */ - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - Integer codigo = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); - return codigo.toString(); - } - - /** - * Metodo que arma el numero de la transaccion - * @param prefijo prefijo a usarse pata el numero a generarse - * @param secuencia numero de secuencia - * @return el numero de documento generado - */ - private String getNumeroTransaccion(String prefijo,String secuencia){ - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoMaterial.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoMaterial.java.svn-base deleted file mode 100644 index 14740e5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DecomisoMaterial.java.svn-base +++ /dev/null @@ -1,220 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.Date; -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.data.SaveData; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPerson; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de completar informacin de una solicitud de control de armas. - * - * @author C.P. - * @version 2.1 - */ -public class DecomisoMaterial extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (this.isNew(pSaveRequest)) { - return pSaveRequest; - } - //decomiso - if((List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO") == null || ((TarmDecomiso)((List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO")).get(0)).getPk()!=null){ - return pSaveRequest; - } - //personas a crear - List personDetailList = (List)pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONDETAIL"); - //registro del arma - List registroArmaList = (List)pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS");//seteado en el arma - //arma a decomisar - List armaList = (List)pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - - //detalle del decomiso - List tarmDecomisoArma = (List)pSaveRequest.getSaveBeanModifiedRecords("TARMDECOMISOARMA");//seteado en el decomiso - //telefono - List personPhoneList = (List)pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPHONE"); - //TREGISTROARMAS - TcustPersonDetail personDetailPortador= null; - for(Object obj:personDetailList){ - TcustPersonDetail personaDetail=(TcustPersonDetail)obj; - if(personaDetail.getPk()==null || personaDetail.getPk().getPersoncode()==null){ - TcustPerson persona=new TcustPerson(); - persona.setPk(getPersonCode()); - //insertamos la persona - PersistenceHelper.getEntityManager().persist(persona); - completePersonDetail(personaDetail, persona.getPk()); - personaDetail.getPk().setDateto(FormatDates.getDefaultExpiryTimestamp()); - //inserta el detalle - PersistenceHelper.getEntityManager().persist(personaDetail); - } - personDetailPortador=personaDetail; - if(personPhoneList!=null){ - for(Object objPhone:personPhoneList){ - TcustPersonPhone telefono=(TcustPersonPhone)objPhone; - telefono.setPk(new TcustPersonPhoneKey()); - telefono.getPk().setPhonesequence(1); - telefono.getPk().setDateto(FormatDates.getDefaultExpiryTimestamp()); - telefono.getPk().setPersoncode(personDetailPortador.getPk().getPersoncode()); - } - } - } - - //DECOMISO - TarmDecomiso decomiso=null; - //se inserta el DECOMISO cabecera - for(Object obj:(List)pSaveRequest.getSaveBeanModifiedRecords("DECOMISO")){ - decomiso=(TarmDecomiso)obj; - if(personDetailPortador!=null && personDetailPortador.getPk()!=null && personDetailPortador.getPk().getPersoncode()!=null){ - decomiso.setPersoncode(personDetailPortador.getPk().getPersoncode()); - } - decomiso.setPk(Long.parseLong(getCodigo("CDECOMISO"))); - decomiso.setNumerotransaccion(getNumeroTransaccion(decomiso.getTipoproceso(), decomiso.getPk().toString())); - } - - //registramos el arma y si ya existe le cambiamos de estado - for(Object obj:armaList){ - TarmArmas arma=(TarmArmas)obj; - TarmRegistroArmas registroArma=null; - if(arma.getUnidadmedidacantidad()==null || arma.getUnidadmedidacantidad().trim().length()==0){ - arma.setUnidadmedidacantidad(arma.getModifiedData().get("unidadmedidadesc").toString()); - } - //creamos el arma - arma.setPk(getCodigo("CARMA")); - //SI ES NUEVA CREA - if(arma.getCodigoarma()==null || arma.getCodigoarma().trim().length()==0){ - arma.setCodigoarma(arma.getPk()); - } - //REGISTRO ARMA - if(arma.getModifiedData().get("personcode")!=null && arma.getModifiedData().get("tiporegistro")!=null){ - registroArma=new TarmRegistroArmas(); - //PK - registroArma.setPk(Long.parseLong(getCodigo("CREGISTRO"))); - //personcode - registroArma.setPersoncode(Integer.parseInt(arma.getModifiedData().get("personcode").toString())); - registroArma.setTiporegistro(arma.getModifiedData().get("tiporegistro").toString()); - registroArma.setTiporegistrocodigo(arma.getModifiedData().get("tiporegistrocode").toString()); - //pais de origen - registroArma.setPaisorigen(arma.getModifiedData().get("paisorigen").toString()); - //fecha de creacion - registroArma.setFcreacion(new java.sql.Date(new Date().getTime())); - registroArmaList.add(registroArma); - } - - //validamos el pk de REGISTROARMA - if(registroArma!=null && registroArma.getPk()!=null){ - arma.setCregistro(registroArma.getPk()); - } - //seteo del detalle del DECOMISOARMA y a que arma se le hace el decomiso - TarmDecomisoArma decomisoArma= new TarmDecomisoArma(); - decomisoArma.setCarma( arma.getPk()); - //estadoarma es igual que el estado del arma - decomisoArma.setEstado(arma.getEstado()); - decomisoArma.setEstadocode(arma.getEstadocodigo()); - //motivo del decomiso - decomisoArma.setMotivodecomiso(arma.getModifiedData().get("motivocatalogo").toString());//motivo - decomisoArma.setMotivodecomisocodigo(arma.getModifiedData().get("motivocatalogocode").toString());//1 - //observacion - decomisoArma.setObservacion(arma.getModifiedData().get("observaciondecomiso").toString()); - //cantidad - decomisoArma.setCantidad(new BigDecimal(arma.getModifiedData().get("cantidad").toString()));//cantidad - //unidad del arma o material explosivo - - decomisoArma.setUnidadmedida(arma.getUnidadmedidacantidad());//unidad de medida - decomisoArma.setUnidadmedidacode(arma.getUnidadmedidacantidadcodigo());//3 - //fecha del decomiso arma la actual - decomisoArma.setFdecomiso(new Timestamp(new java.util.Date().getTime())); - //codigo del decomiso - decomisoArma.setPk(getCodigo("CDECOMISOARMA")); - //codigo del decomiso - decomisoArma.setCdecomiso(decomiso.getPk()); - //en bodega - decomisoArma.setEnbodega("Y"); - tarmDecomisoArma.add(decomisoArma); - } - - - pSaveRequest.getResponse().put("numerotransaccion",decomiso.getNumerotransaccion()); - //datos para el flujo - pSaveRequest.getResponse().put("cdecomiso", decomiso.getPk()); - - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia que le pertenece a una nueva persona. - * - * @return Codigo de la nueva persona. - * @throws Exception - */ - protected Integer getPersonCode() throws Exception { - Sequence sequence = new Sequence(); - Integer personcode = Integer.valueOf(sequence.getNextValue("PERSONCODE").toString()); - SaveData.getMap().put("PERSONCODE", personcode.toString()); - return personcode; - } - - /** - * Completa el codigo de la persona en la tabla TcustPersonDetail - * - * @param tcustPersonDetail Objeto que posee el registro a guardar en la tabla TcustPersonDetail. - * @param personcode Codigo de la nueva persona a ser guardada. - * @throws Exception - */ - protected void completePersonDetail(TcustPersonDetail tcustPersonDetail, Integer personcode) throws Exception { - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey(); - tcustPersonDetailKey.setPersoncode(personcode); - tcustPersonDetail.setPk(tcustPersonDetailKey); - } - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia del codigo - * @param codigoSec - * @return String - * @throws Exception - */ - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - String solcitud = sequence.getNextValue(codigoSec).toString(); - return solcitud; - } - - private String getNumeroTransaccion(String prefijo,String secuencia){ - System.out.println("Ingresa al secuencial armas"); - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DocumentoHabilitanteTransaccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DocumentoHabilitanteTransaccion.java.svn-base deleted file mode 100644 index 1734606..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/DocumentoHabilitanteTransaccion.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitanteDetall; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase transaction rule para registrar el documento habilitante - * @author Carlos Guzman - * - */ -public class DocumentoHabilitanteTransaccion extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = -1840770563013500407L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - TarmDocumentoHabilitante documentoHabilitante=(TarmDocumentoHabilitante) pSaveRequest.getSaveBeanModifiedObject("DOCUMENTOHABILITANTE"); - if(documentoHabilitante==null){ - return pSaveRequest; - } - - TarmColadeImpresion colaImpresion=(TarmColadeImpresion)pSaveRequest.getSaveBeanModifiedObject("BODEGA"); - - - Long codigoGenerado = Long.parseLong(getCodigo("TARMDOCUMENTOHABILITANTE")); - - documentoHabilitante.setPk(codigoGenerado); - documentoHabilitante.setNumerodocumento(getNumeroTransaccion("DOC",codigoGenerado.toString())); - - if(colaImpresion!=null){ - colaImpresion.setPk(getCodigo("TARMCOLADEIMPRESION")); - colaImpresion.setCdocumento(codigoGenerado); - } - - TarmDocumentoHabilitanteDetall documentohabilitanteDetall=(TarmDocumentoHabilitanteDetall)pSaveRequest.getSaveBeanModifiedObject("DOCUMENTOHABILITANTEDETAIL"); - List lDocumentohabilitanteDetall = null; - if(documentohabilitanteDetall==null){ - lDocumentohabilitanteDetall = (List)pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOHABILITANTEDETAIL"); - } - if(documentohabilitanteDetall!=null || (documentohabilitanteDetall==null && lDocumentohabilitanteDetall!=null)){ - //lDocumentohabilitanteDetall = (List)pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOHABILITANTEDETAIL"); - if(documentohabilitanteDetall!=null && (lDocumentohabilitanteDetall == null ||lDocumentohabilitanteDetall.size()==0)){ - documentohabilitanteDetall.setPk(getCodigo("CODIGODETALLE")); - documentohabilitanteDetall.setCdocumento(codigoGenerado); - } - else{ - if(lDocumentohabilitanteDetall!=null && lDocumentohabilitanteDetall.isEmpty() && documentohabilitanteDetall!=null){ - lDocumentohabilitanteDetall.add(documentohabilitanteDetall); - } - if(lDocumentohabilitanteDetall!=null && !lDocumentohabilitanteDetall.isEmpty()){ - - for (Object object : lDocumentohabilitanteDetall) { - TarmDocumentoHabilitanteDetall c=(TarmDocumentoHabilitanteDetall)object; - c.setPk(getCodigo("CODIGODETALLE")); - c.setCdocumento(codigoGenerado); - } - } - - } - } - - - return pSaveRequest; - } - - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - // TODO Auto-generated method stub - return null; - } - - /** - * Metodo para obtener el numero de secuencia de la base de datos - * @param codigoSec nombre del campo de la secuencia - * @return la secuencia generada - * @throws Exception - */ - private String getCodigo(String codigoSec) throws Exception { - Sequence sequence = new Sequence(); - Integer documento = Integer.valueOf(sequence.getNextValue(codigoSec).toString()); - return documento.toString(); - } - - /** - * Metodo que arma el numero de la transaccion - * @param prefijo prefijo a usarse pata el numero a generarse - * @param secuencia numero de secuencia - * @return el numero de documento generado - */ - private String getNumeroTransaccion(String prefijo,String secuencia){ - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/OrdenTrabajoSave.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/OrdenTrabajoSave.java.svn-base deleted file mode 100644 index 9c0c718..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/OrdenTrabajoSave.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmSolicitudImportacion; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajo; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajoCustodios; -import com.fp.sessionbeans.helper.Sequence; - -public class OrdenTrabajoSave extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - TarmOrdenTrabajo ordenTrabajo=(TarmOrdenTrabajo) pSaveRequest.getSaveBeanModifiedObject("ORDENTRABAJOCONTROLLER"); - if(ordenTrabajo==null){ - return pSaveRequest; - } - - TarmOrdenTrabajoCustodios custodio=(TarmOrdenTrabajoCustodios)pSaveRequest.getSaveBeanModifiedObject("CUSTODIOSCONTROLLER");; - List lcustodios = (List)pSaveRequest.getSaveBeanModifiedRecords("CUSTODIOSCONTROLLER"); - - if(lcustodios.isEmpty()){ - lcustodios.add(custodio); - } - - //PersistenceHelper.getEntityManager().merge(ordenTrabajo); - PersistenceHelper.getEntityManager().persist(ordenTrabajo); - for (Object object : lcustodios) { - TarmOrdenTrabajoCustodios c=(TarmOrdenTrabajoCustodios)object; - - //Sequence sequence = new Sequence(); - //String codigoCustodio = sequence.getNextValue("CORDENTRABAJOCUSTODIOS").toString(); - - //c.setPk(Long.parseLong(codigoCustodio)); - c.setCordentrabajo(ordenTrabajo.getPk()); - PersistenceHelper.getEntityManager().persist(c); - } - PersistenceHelper.getEntityManager().flush(); - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - // TODO Auto-generated method stub - return null; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/RegistroInspeccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/RegistroInspeccion.java.svn-base deleted file mode 100644 index 259b983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/RegistroInspeccion.java.svn-base +++ /dev/null @@ -1,83 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.List; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmInspeccion; -import com.fp.persistence.parmas.soli.TarmInspeccionArchivo; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de completar información de una solicitud de control de armas. - * - * @author C.P. - * @version 2.1 - */ -public class RegistroInspeccion extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - List inspeccion = (List)pSaveRequest.getSaveBeanModifiedRecords("INSPECCION"); - if(inspeccion!=null){ - List archivoList = (List)pSaveRequest.getSaveBeanModifiedRecords("INSPECCIONARCHIVO"); - TarmInspeccion tarmInspeccion = (TarmInspeccion)inspeccion.get(0); - tarmInspeccion.setPk(Long.valueOf(getCodigoSolicitud())); - tarmInspeccion.setNumordentrabajo(getNumeroTransaccion("TRA",tarmInspeccion.getPk().toString())); - PersistenceHelper.getEntityManager().persist(tarmInspeccion); - if(archivoList!=null && archivoList.size()>0){ - for(Object obj:archivoList){ - TarmInspeccionArchivo archivo=(TarmInspeccionArchivo)obj; - archivo.setCinspeccion(tarmInspeccion.getPk()); - PersistenceHelper.getEntityManager().persist(archivo); - } - } - PersistenceHelper.getEntityManager().flush(); - pSaveRequest.getResponse().put("numerotrabajo", tarmInspeccion.getNumordentrabajo()); - } - - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia de una solicitud de viaticos. - * - * @return Codigo de la nueva solicitud de viaticos. - * @throws Exception - */ - private String getCodigoSolicitud() throws Exception { - Sequence sequence = new Sequence(); - Integer solcitud = Integer.valueOf(sequence.getNextValue("CINSPECCION").toString()); - return solcitud.toString(); - } - - /** - * Metodo para generar el numero de trabajo - * @param prefijo - * @param secuencia - * @return String - */ - private String getNumeroTransaccion(String prefijo,String secuencia){ - return prefijo+"-"+StringUtils.leftPad(secuencia, 9, '0'); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Requisitos.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Requisitos.java.svn-base deleted file mode 100644 index ce91bae..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Requisitos.java.svn-base +++ /dev/null @@ -1,95 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; - -/** - * Clase que se encarga de completar información de requisitos de una solicitud de tramites. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Requisitos extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /** - * Almacena toda la información correspondiente a la solicitud - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) { - return pSaveRequest; - } - String codSolicitud = (String) pSaveRequest.get("csolicitud"); - List lintegrantes = pSaveRequest.getSaveBeanModifiedRecords("REQUISITOPORTIPOTRAMITE"); - if (lintegrantes != null && !lintegrantes.isEmpty()) { - for (Object object : lintegrantes) { - TarmSolicitudRequisitos obj = (TarmSolicitudRequisitos) object; - if (obj.getPk().getCsolicitud() == null) { - obj.getPk().setCsolicitud(codSolicitud); - } - } - } - - List lguardias = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDGUARDIAS"); - if(lguardias != null && !lguardias.isEmpty()){ - for (Object object : lguardias) { - TarmSolicitudGuardias obj = (TarmSolicitudGuardias) object; - if (obj.getPk().getCsolicitud() == null) { - obj.getPk().setCsolicitud(codSolicitud); - } - } - } - - List larmas = pSaveRequest.getSaveBeanModifiedRecords("RECEPCIONARMAS"); - if(larmas != null && !larmas.isEmpty()){ - for (Object object : larmas) { - TarmSolicitudArmas obj = (TarmSolicitudArmas) object; - if (obj.getPk().getCsolicitud() == null) { - obj.getPk().setCsolicitud(codSolicitud); - } - } - } - - List lagencias = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDAGENCIA"); - if(lagencias != null && !lagencias.isEmpty()){ - for (Object object : lagencias) { - TarmSolicitudAgenciaSucursal obj = (TarmSolicitudAgenciaSucursal) object; - if(obj.getPk().getCsolicitud() == null){ - obj.getPk().setCsolicitud(codSolicitud); - } - } - } - - List ldocumentos = pSaveRequest.getSaveBeanModifiedRecords("DOCUMENTOSCONTROLLER"); - if(ldocumentos != null && !ldocumentos.isEmpty()){ - for (Object object : ldocumentos) { - TarmSolicitudDocumento obj = (TarmSolicitudDocumento) object; - if(obj.getPk().getCsolicitud() == null){ - obj.getPk().setCsolicitud(codSolicitud); - } - } - } - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base deleted file mode 100644 index 5c9daf0..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base +++ /dev/null @@ -1,74 +0,0 @@ -package com.fp.armas.rules.save.solicitud; - -import java.sql.Date; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de completar información de una solicitud de control de armas. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Solicitud extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /** - * Genera el secuencial de la solicitud completa datos generales de la solicitud en su creacion - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") != null) { - return pSaveRequest; - } - String codSolicitud = null; - TarmSolicitud tarmsolicitud = (TarmSolicitud) pSaveRequest.getSaveBeanModifiedObject("SOLICITUD"); - if (tarmsolicitud == null) { - return pSaveRequest; - } - codSolicitud = tarmsolicitud.getPk(); - if (codSolicitud == null) { - codSolicitud = this.getCodigoSolicitud(); - tarmsolicitud.setPk(codSolicitud); - tarmsolicitud.setFreal(FormatDates.getInstance().getDataBaseTimestamp()); - tarmsolicitud.setEstado("REG"); - tarmsolicitud.setEstadocodigo("ESTADOSOLICITUD"); - tarmsolicitud.setOrigenadquisicioncodigo("ORIGENADQUISICION"); - String freal = FormatDates.getInstance().getTransportDateFormat().format(tarmsolicitud.getFreal()); - Date f = new Date(FormatDates.getInstance().getTransportDateFormat().parse(freal).getTime()); - tarmsolicitud.setFregistro(f); - pSaveRequest.getResponse().put("csolicitud", codSolicitud); - pSaveRequest.put("csolicitud", codSolicitud); - } - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia de una solicitud de viaticos. - * - * @return Codigo de la nueva solicitud de viaticos. - * @throws Exception - */ - private String getCodigoSolicitud() throws Exception { - Sequence sequence = new Sequence(); - Integer solcitud = Integer.valueOf(sequence.getNextValue("SOLICTUDCONTROLARMAS").toString()); - return solcitud.toString(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/entries deleted file mode 100644 index e7b4f06..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion -svn://172.17.26.185/COMACO - - - -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Inventarios.java -file - - - - -2022-07-28T03:40:41.210796Z -75bfba955b209ed54fd7292212b42280 -2016-04-11T16:59:25.761122Z -4533 -fpazmino - - - - - - - - - - - - - - - - - - - - - -14721 - -PreviaImportacionDesgloce.java -file - - - - -2022-07-28T03:40:41.210796Z -02cd33cc0d2cc6da09bdba94e7d9b7ce -2016-03-11T17:33:35.846808Z -4496 -fpazmino - - - - - - - - - - - - - - - - - - - - - -16412 - -SolicitudImportacion.java -file - - - - -2022-07-28T03:40:41.210796Z -35cf095908d1c7c3fdf30f370786454f -2015-06-27T13:42:18.237444Z -4143 -fpazmino - - - - - - - - - - - - - - - - - - - - - -11688 - -IngresoInventario.java -file - - - - -2022-07-28T03:40:41.211796Z -4e0d408d81535601904d4793e3c9df09 -2015-09-16T09:16:33.704663Z -4278 -fpazmino - - - - - - - - - - - - - - - - - - - - - -11701 - -CompletarDesaduanizacion.java -file - - - - -2022-07-28T03:40:41.211796Z -77302d814b60e8930d90e44c56c827f6 -2016-01-20T16:57:50.208221Z -4389 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4968 - -ImportacionProduccion.java -file - - - - -2022-07-28T03:40:41.211796Z -5170fbe4ed5600da688a13233737290f -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -15229 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/CompletarDesaduanizacion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/CompletarDesaduanizacion.java.svn-base deleted file mode 100644 index fb290aa..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/CompletarDesaduanizacion.java.svn-base +++ /dev/null @@ -1,130 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Ingresa un registro y actualiza la tabla de cupos - * @author Andres Cevallos - * - */ -public class CompletarDesaduanizacion extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_ARMASDELTRAMITESINLOTE = "FROM TarmArmas ARM WHERE " - + "ARM.pk IN (select SA.pk.carma from TarmSolicitudArmas SA WHERE SA.pk.csolicitud = :csolicitud) AND ARM.lote IS NULL"; - - private static final String JPQL_TRAMITEACTUAL = "FROM TarmSolicitudTramite t WHERE t.pk.csolicitud = :noSolicitud"; - - private static final String JPQL_LOTEDUPLICADO = "FROM TarmArmas ARM WHERE ARM.pk IN " - + "(select SA.pk.carma from TarmSolicitudArmas SA WHERE SA.pk.csolicitud = :csolicitud) AND ARM.lote = :lote"; - - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { -// try { - Boolean requiereDesgloce = (Boolean) pSaveRequest.get("REQUIEREDESGLOCE"); - if(!requiereDesgloce){ - System.out.println("*****COMPLETAR LA DESADUANIZACION*****"); - EntityManager em=PersistenceHelper.getEntityManager(); - ListarmasLst=(List)pSaveRequest.getSaveBeanModifiedRecords("DESADUANIZACION"); - String noSolicitud=pSaveRequest.get("noSolicitud").toString(); - TarmSolicitudTramite solicitudTramiteObj = consultaTramiteActual(em, noSolicitud); - Boolean validaDuplicados = Boolean.FALSE; - for(Object armaTmp:armasLst){ - TarmArmas arma=(TarmArmas)armaTmp; - TarmArmas armaDuplicada = consultaLoteDuplicado(em, noSolicitud, arma.getLote()); - if(armaDuplicada!=null){ - throw new ControlArmasException("ARM-0001", "EL LOTE {0} SE ENCUENTRA DUPLICADO.", armaDuplicada.getLote()); - } - } - - for(Object armaTmp:armasLst){ - TarmArmas arma=(TarmArmas)armaTmp; - em.merge(arma); - } - em.flush(); - if(solicitudTramiteObj!=null){ - if(!existeArmasConLotePendienteIngreso(em, solicitudTramiteObj.getPk().getCsolicitud())){ - solicitudTramiteObj.setEstadotramite("FIN"); - em.merge(solicitudTramiteObj); - em.flush(); - } - } - } -// } catch (Exception e) { -// return pSaveRequest; -// // TODO: handle exception -// } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - public Boolean existeArmasConLotePendienteIngreso(EntityManager pEntityManager,String csolicitud){ - Boolean resultado = Boolean.FALSE; - Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_ARMASDELTRAMITESINLOTE); - qry.setParameter("csolicitud", csolicitud); - ListarmasPendientesLst = qry.getResultList(); - - if(armasPendientesLst!=null && !armasPendientesLst.isEmpty()){ - resultado = Boolean.TRUE; - } - return resultado; - } - public TarmSolicitudTramite consultaTramiteActual(EntityManager pEntityManager,String noSolicitud){ - Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_TRAMITEACTUAL); - qry.setParameter("noSolicitud", noSolicitud); - ListsolicitudTramiteLst = qry.getResultList(); - - if(solicitudTramiteLst!=null && !solicitudTramiteLst.isEmpty()){ - return solicitudTramiteLst.get(0); - } - else{ - return null; - } - } - - public TarmArmas consultaLoteDuplicado(EntityManager pEntityManager,String csolicitud, String lote){ - Query qry = pEntityManager.createQuery(CompletarDesaduanizacion.JPQL_LOTEDUPLICADO); - qry.setParameter("csolicitud", csolicitud); - qry.setParameter("lote", lote); - ListarmasConLoteDuplicadoLst = qry.getResultList(); - - if(armasConLoteDuplicadoLst!=null && !armasConLoteDuplicadoLst.isEmpty()){ - return armasConLoteDuplicadoLst.get(0); - } - else{ - return null; - } - } -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/ImportacionProduccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/ImportacionProduccion.java.svn-base deleted file mode 100644 index dbf63a0..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/ImportacionProduccion.java.svn-base +++ /dev/null @@ -1,337 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmCargaDetalle; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Realiza el mantenimiento de totales y maestro detalle del ingreso - * @author fpazmino - * - */ -public class ImportacionProduccion extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; - private static final String JPQL_DIRECCION_PRINCIPAL="from TcustPersonAddress o WHERE o.pk.personcode=:personcode AND o.pk.dateto=:dateto AND o.principal=:principal"; - private static final String JPQL_ULTIMO_TOTAL_PERSONA = "from TarmTotalPersona o where o.personcodigo=:personcode AND o.clase=:clase AND o.tipoarmaexplosivo=:tipoarmaexplosivo AND o.unidadmedidapeso=:unidadmedidapeso AND o.fecha = (Select max(tp.fecha) from TarmTotalPersona tp where tp.personcodigo=:personcode AND tp.clase=:clase AND tp.tipoarmaexplosivo=:tipoarmaexplosivo AND tp.unidadmedidapeso=:unidadmedidapeso)"; - - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - System.out.println("INGRESA A INGRESO DE REGISTRO DE PRODUCCION O IMPORTACION"); - List listaArmas=(ArrayList)pSaveRequest.get("LISTAARMAS"); - List listaArmasEliminadas=(ArrayList)pSaveRequest.get("LISTAARMASELIMINADAS"); - String tipoRegistro = pSaveRequest.get("TIPOREGISTRO").toString(); - TarmRegistroArmas registroArmas=(TarmRegistroArmas)pSaveRequest.get("REGISTRO"); - String personCode=pSaveRequest.get("PERSONCODE").toString(); - Boolean esNuevaImportacion=(Boolean) pSaveRequest.get("ESNUEVAIMPORTACION"); - EntityManager pEntityManager=PersistenceHelper.getEntityManager(); - if(registroArmas.isnew){ - generarRegistroArmas(pEntityManager,registroArmas,tipoRegistro); - } - System.out.println("tipoRegistro" + tipoRegistro); - System.out.println("cantidad armas" + listaArmas.size()); - System.out.println("registroArmas" + registroArmas.getPk()); - // Registramos la carga - TarmCarga carga = (TarmCarga)pSaveRequest.get("TARMCARGA"); -// if(tipoRegistro.equals("PRO") || (tipoRegistro.equals("IMP") && esNuevaImportacion)){ - if(carga.isnew){ - if(tipoRegistro.equals("PRO")){ - carga.setTipocarga("PRO"); - }else if(tipoRegistro.equals("IMP")){ - carga.setTipocarga("IMP"); - } - carga.setAucp(registroArmas.getSolicitudnum()); - carga.setEsdesaduanizado("N"); - carga.setFecha(new Timestamp(new Date().getTime())); - carga.setPersoncode(Integer.valueOf(personCode)); - carga.setCregistro(registroArmas.getPk()); - carga.setPk(getCodigoCarga()); - pEntityManager.persist(carga); - pEntityManager.flush(); - } -// else{ -// carga=(TarmCarga)pSaveRequest.get("TARMCARGA"); -// } - TcustPersonAddress direccionPrincipal = obtenerDireccionPrincipal(Integer.valueOf(personCode)); - // Fecha de registro comun a todas las armas ingresadas - java.sql.Date fechaRegistro = new java.sql.Date(new Date().getTime()); - for(TarmArmas armasObj : listaArmas){ - TarmTipoArmaExplosivo tipoArmaExplosivoObj = findTipoArmaExpByCTipoArmaExp(pEntityManager, armasObj.getCtipoarmaexplosivo()); - if(armasObj.isnew){ - armasObj = generarArma(pEntityManager,registroArmas, armasObj, direccionPrincipal, tipoRegistro, armasObj.getCantidad(), fechaRegistro); - } - else{ - pEntityManager.merge(armasObj); - } - System.out.println("1.tipoRegistro:"+tipoRegistro); - System.out.println("2. armasObj.isnew:"+armasObj.isnew); - // Afectacion en la tabla de totales en el caso de registro de produccion - if(tipoRegistro.equals("PRO")|| armasObj.isnew){ - System.out.println("3.actualizarTotalPersona"); -// new BigDecimal(getCantidad()):armasObj.getPeso()) - BigDecimal cantidadPeso = BigDecimal.ZERO; - TgeneCatalogDetailKey pkUnidades = new TgeneCatalogDetailKey(); - pkUnidades.setCatalog(tipoArmaExplosivoObj.getUnidadmedidapeso()); - pkUnidades.setCatalogcode(tipoArmaExplosivoObj.getUnidadmedidapesocodigo()); - TgeneCatalogDetail unidadesCatalog = TgeneCatalogDetail.find(pEntityManager, pkUnidades); - if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("CANTIDAD")){ - cantidadPeso = new BigDecimal(armasObj.getCantidad()); - }else{ - cantidadPeso = armasObj.getPeso(); - } - actualizarTotalPersona(pEntityManager, tipoArmaExplosivoObj, personCode, cantidadPeso); - } - // Registramos el detalle de la carga - if(armasObj.isnew){ - TarmCargaDetalle cargaDetalle = new TarmCargaDetalle(); - cargaDetalle.setPk(getCodigoCargaDetalle()); - cargaDetalle.setCarma(armasObj.getPk()); - cargaDetalle.setCcarga(carga.getPk()); - pEntityManager.persist(cargaDetalle); - } - - } - - for(TarmArmas armasObj : listaArmasEliminadas){ - // Borra registro de la tabla TarmCargaDetalle - Query q = pEntityManager.createQuery("delete from TarmCargaDetalle where ccarga= :ccarga and carma= :carma"); - q.setParameter("ccarga", carga.getPk()); - q.setParameter("carma", armasObj.getPk()); - q.executeUpdate(); - // Borra registro de la tabla TarmCargaDetalle - TarmArmas armaAEliminarse = TarmArmas.find(pEntityManager, armasObj.getPk()); - pEntityManager.remove(armaAEliminarse); - } - } catch (Exception e) { - return pSaveRequest; - // TODO: handle exception - } - return pSaveRequest; - } - - public void generarRegistroArmas(EntityManager pEntityManager, TarmRegistroArmas registroArmas, String tipoRegistro){ - try { - Sequence sequence = new Sequence(); - String cRegistro = sequence.getNextValue("CREGISTRO").toString(); - registroArmas.setPk(Long.parseLong(cRegistro)); - pEntityManager.persist(registroArmas); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public TarmArmas generarArma(EntityManager pEntityManager, TarmRegistroArmas registroArmas, TarmArmas armaParam, TcustPersonAddress direccionPrincipal, String tipoRegistro, Integer cantidad, java.sql.Date fechaRegistro){ - try { - TarmArmas arma = (TarmArmas) armaParam.cloneMe(); - // Setear el estado del arma - if(tipoRegistro.equals("IMP")){ - arma.setEstado("IMPO"); - }else if(tipoRegistro.equals("PRO")){ - arma.setEstado("REG"); - } - arma.setCregistro(registroArmas.getPk()); - arma.setCantidad(cantidad); - String carma = getCodigoArmas(); - arma.setPk(carma); - arma.setCodigoarma(carma); - - // Poner datos de la Ubicacion del arma - if(direccionPrincipal!=null){ - arma.setCountrycode(direccionPrincipal.getCountrycode()); - arma.setProvincecode(direccionPrincipal.getProvincecode()); - arma.setCantoncode(direccionPrincipal.getCantoncode()); - arma.setParroquiacode(direccionPrincipal.getParroquiacode()); - arma.setCitycode(direccionPrincipal.getCitycode()); - arma.setDireccion(direccionPrincipal.getAddress()); - } - arma.setColorcodigo("COLOR"); - arma.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - arma.setFecharegistro(fechaRegistro); - arma.setCpaisorigen(registroArmas.getPaisorigen()); - pEntityManager.persist(arma); - return arma; - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - /** - * Encuentra una lista de tipo de armas y explosivos - * @param pEntityManager - * @param pk - * @return - * @throws Exception - */ - public static TarmTipoArmaExplosivo findTipoArmaExpByCTipoArmaExp(EntityManager pEntityManager, String pk) throws Exception { - Query qry = pEntityManager.createQuery(ImportacionProduccion.JPQL_TIPOARMAEXPLOSIVO); - qry.setParameter("pk", pk); - ListresultList = qry.getResultList(); - if(resultList!=null && resultList.size()>0){ - return (TarmTipoArmaExplosivo) qry.getResultList().get(0); - }else{ - return null; - } - } - - /** - * Actualizar tabla TarmTotalPersona - * @param pEntityManager - * @param EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso - * @return void - * @throws Exception - */ - public void actualizarTotalPersona(EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso) throws Exception { - Query qry = pEntityManager.createQuery(ImportacionProduccion.JPQL_ULTIMO_TOTAL_PERSONA); - qry.setParameter("personcode", Integer.valueOf(personcode)); - qry.setParameter("clase", tipoArmaExplosivo.getClase()); - qry.setParameter("tipoarmaexplosivo", tipoArmaExplosivo.getTipoarmaexplosivo()); - qry.setParameter("unidadmedidapeso", tipoArmaExplosivo.getUnidadmedidapeso()); - ListresultList = qry.getResultList(); - String cTotalPersona = getCodigoTotalPersona(); - if(resultList!=null && resultList.size()>0){ - TarmTotalPersona totalPersonaAnterior = resultList.get(0); - // Actualiza la tabla de totales cuando existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(totalPersonaAnterior.getTotal()); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(totalPersonaAnterior.getTotal().add(cantidadPeso)); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.detach(totalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - }else{ - // Actualiza la tabla de totales cuando NO existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(BigDecimal.ZERO); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(cantidadPeso); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - } - } - - /** - * Obtiene la dirección principal de la persona - * @param personcode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public TcustPersonAddress obtenerDireccionPrincipal(Integer personcode) throws Exception { - TcustPersonAddress tcustPersonAddress = null; - Query query = PersistenceHelper.getEntityManager().createQuery(JPQL_DIRECCION_PRINCIPAL); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("principal", Constant.STR_Y); - List ltcustPersonAddresses = query.getResultList(); - if(ltcustPersonAddresses != null && !ltcustPersonAddresses.isEmpty()){ - tcustPersonAddress = ltcustPersonAddresses.iterator().next(); - } - return tcustPersonAddress; - } - - /** - * Metodo que devuelve el codigo de un arma - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - - /** - * Metodo que devuelve el codigo de un totalpersona - * @return - * @throws Exception - */ - private String getCodigoTotalPersona() throws Exception { - Sequence sequence = new Sequence(); - String cTotalPersona = sequence.getNextValue("TARMTOTALPERSONA").toString(); - return cTotalPersona; - } - - /** - * Metodo que devuelve el codigo de una carga - * @return - * @throws Exception - */ - private String getCodigoCarga() throws Exception { - Sequence sequence = new Sequence(); - String cCarga = sequence.getNextValue("CARGA").toString(); - return cCarga; - } - - /** - * Metodo que devuelve el codigo de una carga detalle - * @return - * @throws Exception - */ - private String getCodigoCargaDetalle() throws Exception { - Sequence sequence = new Sequence(); - String cCarga = sequence.getNextValue("CARGADETALLE").toString(); - return cCarga; - } - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/IngresoInventario.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/IngresoInventario.java.svn-base deleted file mode 100644 index 9c3c69b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/IngresoInventario.java.svn-base +++ /dev/null @@ -1,299 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Ingresa un registro y actualiza la tabla de cupos - * @author Andres Cevallos - * - */ -public class IngresoInventario extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; - private static final String JPQL_COMERCIANTECUPO = "from TarmComercianteCupo tcc" + " where tcc.personcodigo = :personcodigo and tcc.clase = :clasecodigo and tcc.tipoarmaexplosivo=:tipoarmaexplosivo and tcc.tiporegistro=:tiporegistro"; - private static final String JPQL_CATALOG = "from TgeneCatalogDetail tgd"+" where tgd.pk.catalog= :catalog and tgd.pk.catalogcode= :catalogcode"; - - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - System.out.println("INGRESA DE INVENTARIO"); - //EntityManager em=PersistenceHelper.getEntityManager(); - List listaArmas=(ArrayList)pSaveRequest.get("LISTAARMAS"); - List listaTotales=(ArrayList)pSaveRequest.get("LISTATOTALES"); - TarmRegistroArmas registro=(TarmRegistroArmas)pSaveRequest.get("REGISTRO"); - registro.setTiporegistro("CARINV"); - List registroarmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS"); - List tarmArmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - List tarmTotalPersonaL=(List) pSaveRequest.getSaveBeanModifiedRecords("TOTALCONTROLLER"); - if(registroarmasL==null){ - registroarmasL= new ArrayList<>(); - } - if(tarmArmasL==null){ - tarmArmasL= new ArrayList<>(); - } - if(tarmTotalPersonaL==null){ - tarmTotalPersonaL= new ArrayList<>(); - } - - //Persistiendo el registro - String cregistro = null; - Sequence sequence = new Sequence(); - Integer valorRegistro=Integer.valueOf(sequence.getNextValue("CREGISTRO").toString()); - if(valorRegistro!=null){ - cregistro=valorRegistro.toString(); - registro.setPk(Long.parseLong(cregistro)); - registroarmasL.add(registro); - //em.persist(registro); - } - - //Persistiendo la lista de armas - for (TarmArmas arma : listaArmas) { - arma.setCregistro(Long.parseLong(cregistro)); - if(arma.isnew){ - String carma = null; - sequence = new Sequence(); - String valor=sequence.getNextValue("CARMA").toString(); - if(valor!=null){ - carma=valor.toString(); - arma.setPk(carma); - arma.setCodigoarma(arma.getPk()); - //arma.setUnidadmedidacantidad("Unidad"); - tarmArmasL.add(arma); - //em.persist(arma); - } - }else{ - TarmArmas armaBD=new TarmArmas(); - armaBD=PersistenceHelper.getEntityManager().find(TarmArmas.class, arma.getPk()); - armaBD.setCantidad(arma.getCantidad()); - armaBD.setCantoncode(arma.getCantoncode()); - armaBD.setCitycode(arma.getCitycode()); - armaBD.setCodigoarma(arma.getCodigoarma()); - armaBD.setColor(arma.getColor()); - armaBD.setColorcodigo(arma.getColorcodigo()); - armaBD.setCountrycode(arma.getCountrycode()); - armaBD.setCpaisorigen(arma.getCpaisorigen()); - armaBD.setCregistro(arma.getCregistro()); - armaBD.setCtipoarmaexplosivo(arma.getCtipoarmaexplosivo()); - armaBD.setDireccion(arma.getDireccion()); - armaBD.setEstado(arma.getEstado()); - armaBD.setEstadocodigo(arma.getEstadocodigo()); - armaBD.setFecharegistro(arma.getFecharegistro()); - armaBD.setFemisionpermiso(arma.getFemisionpermiso()); - armaBD.setLote(arma.getLote()); - armaBD.setMarca(arma.getMarca()); - armaBD.setMarcacodigo(arma.getMarcacodigo()); - armaBD.setModelo(arma.getModelo()); - armaBD.setNemonicoarma(arma.getNemonicoarma()); - armaBD.setParroquiacode(arma.getParroquiacode()); - armaBD.setPeso(arma.getPeso()); - armaBD.setPesoAux(arma.getPesoAux()); - armaBD.setPk(arma.getPk()); - armaBD.setProvincecode(arma.getProvincecode()); - armaBD.setRecordversion(arma.getRecordversion()); - armaBD.setSeriecanon(arma.getSeriecanon()); - armaBD.setTipofabricacion(arma.getTipofabricacion()); - armaBD.setUnidadmedidacantidad(arma.getUnidadmedidacantidad()); - armaBD.setUnidadmedidacantidadcodigo(arma.getUnidadmedidacantidadcodigo()); - armaBD.setValorAux(arma.getValorAux()); - armaBD.setCodigoarma(arma.getPk()); - //em.persist(armaBD); - tarmArmasL.add(arma); - } - } - - //Persistiendo la lista de totales - for (TarmTotalPersona total : listaTotales) { - if(total.isnew){ - String ctotal = null; - sequence = new Sequence(); - Integer valor=Integer.valueOf(sequence.getNextValue("CTOTAL").toString()); - if(valor!=null){ - ctotal=valor.toString(); - total.setPk(ctotal); - //total.setUnidadmedidapeso("Unidad"); - System.out.println(total); - tarmTotalPersonaL.add(total); -// em.persist(total); -// em.flush(); - } - }else{ - TarmTotalPersona totalBD=new TarmTotalPersona(); - totalBD=PersistenceHelper.getEntityManager().find(TarmTotalPersona.class, total.getPk()); - totalBD.setClase(total.getClase()); - totalBD.setClasecodigo(total.getClasecodigo()); - totalBD.setCarma(total.getCarma()); - totalBD.setFecha(total.getFecha()); - totalBD.setPersoncodigo(total.getPersoncodigo()); - totalBD.setPk(total.getPk()); - totalBD.setRecordversion(total.getRecordversion()); - totalBD.setSaldoanterior(total.getSaldoanterior()); - totalBD.setTipoarmaexplosivo(total.getTipoarmaexplosivo()); - totalBD.setTipoarmaexplosivocodigo(total.getTipoarmaexplosivocodigo()); - totalBD.setTotal(total.getTotal()); - totalBD.setUnidadmedidapeso(total.getUnidadmedidapeso()); - totalBD.setUnidadmedidapesocodigo(total.getUnidadmedidapesocodigo()); - tarmTotalPersonaL.add(total); - //em.persist(totalBD); - } - } - // em.flush(); - } catch (Exception e) { - return pSaveRequest; - // TODO: handle exception - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - - /** - * Actualiza la tabla de totales - * @param tipoarmaexplosivo - * @param valor - * @param personcode - * @return - */ - public TarmTotalPersona cargarDatos(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode) - { - TarmTotalPersona totalArma = new TarmTotalPersona(); - totalArma.setClase(tipoarmaexplosivo.getClase()); - totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); - totalArma.setFecha(new Timestamp(new Date().getTime())); - totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); - totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); - totalArma.setPersoncodigo(personcode); - totalArma.setSaldoanterior(BigDecimal.ZERO); - totalArma.setTotal(valor); - totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); - totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); - return totalArma; - - } - - /** - * Actualiza la tabla de totales cuando existen datos anteriores - * @param tipoarmaexplosivo - * @param valor - * @param personcode - * @param saldo - * @return - */ - public TarmTotalPersona cargarDatosAnterior(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode,BigDecimal saldo) - { - BigDecimal total = new BigDecimal(0); - total = total.add(valor); - total = total.add(saldo); - TarmTotalPersona totalArma = new TarmTotalPersona(); - totalArma.setClase(tipoarmaexplosivo.getClase()); - totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); - totalArma.setFecha(new Timestamp(new Date().getTime())); - totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); - totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); - totalArma.setPersoncodigo(personcode); - totalArma.setSaldoanterior(saldo); - totalArma.setTotal(total); - totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); - totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); - return totalArma; - } - - /** - * Encuentra el cupo por cliente - * @param pEntityManager - * @param personcodigo - * @param clasecodigo - * @param tipoarmaexplosivo - * @param tiporegistro - * @return - * @throws Exception - */ - public static List findCupo(EntityManager pEntityManager, Integer personcodigo, String clasecodigo, String tipoarmaexplosivo, String tiporegistro) throws Exception { - - Query qry = pEntityManager.createQuery(IngresoInventario.JPQL_COMERCIANTECUPO); - qry.setParameter("personcodigo", personcodigo); - qry.setParameter("clasecodigo", clasecodigo); - qry.setParameter("tipoarmaexplosivo", tipoarmaexplosivo); - qry.setParameter("tiporegistro", tiporegistro); - return qry.getResultList(); - } - - /** - * Encuentra una lista de tipo de armas y explosivos - * @param pEntityManager - * @param pk - * @return - * @throws Exception - */ - public static List findByClase(EntityManager pEntityManager, String pk) throws Exception { - Query qry = pEntityManager.createQuery(IngresoInventario.JPQL_TIPOARMAEXPLOSIVO); - qry.setParameter("pk", pk); - return qry.getResultList(); - } - - public static List find(EntityManager pEntityManager, String catalog, String catalogcode) throws Exception { - Query qry = pEntityManager.createQuery(IngresoInventario.JPQL_CATALOG); - - qry.setParameter("catalog", catalog); - qry.setParameter("catalogcode", catalogcode); - return qry.getResultList(); - } - /** - * Mtodo que devuelve la secuencia de un cliente. - * - * @return Codigo del nuevo cliente. - * @throws Exception - */ - private Long getCodigoSolicitud() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CREGISTRO").longValue(); - - return codigo; - - } - - - /** - * Mtodo que devuelve el codigo de un arma - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - - return codigoArma; - - } - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/Inventarios.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/Inventarios.java.svn-base deleted file mode 100644 index a311df5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/Inventarios.java.svn-base +++ /dev/null @@ -1,326 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmCargaDetalle; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Realiza el mantenimiento de totales y maestro detalle del ingreso - * @author fpazmino - * - */ -public class Inventarios extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; - private static final String JPQL_DIRECCION_PRINCIPAL="from TcustPersonAddress o WHERE o.pk.personcode=:personcode AND o.pk.dateto=:dateto AND o.principal=:principal"; - private static final String JPQL_ULTIMO_TOTAL_PERSONA = "from TarmTotalPersona o where o.personcodigo=:personcode AND o.clase=:clase AND o.tipoarmaexplosivo=:tipoarmaexplosivo AND o.unidadmedidapeso=:unidadmedidapeso AND o.fecha = (Select max(tp.fecha) from TarmTotalPersona tp where tp.personcodigo=:personcode AND tp.clase=:clase AND tp.tipoarmaexplosivo=:tipoarmaexplosivo AND tp.unidadmedidapeso=:unidadmedidapeso)"; - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - System.out.println("INGRESA A INGRESO DE INVENTARIOS"); - List listaArmas=(ArrayList)pSaveRequest.get("LISTAARMAS"); - List listaArmasEliminadas=(ArrayList)pSaveRequest.get("LISTAARMASELIMINADAS"); - String tipoRegistro = pSaveRequest.get("TIPOREGISTRO").toString(); - TarmRegistroArmas registroArmas=(TarmRegistroArmas)pSaveRequest.get("REGISTRO"); - String personCode=pSaveRequest.get("PERSONCODE").toString(); -// Boolean esNuevaImportacion=(Boolean) pSaveRequest.get("ESNUEVAIMPORTACION"); - EntityManager pEntityManager=PersistenceHelper.getEntityManager(); - if(registroArmas.isnew){ - generarRegistroArmas(pEntityManager,registroArmas,tipoRegistro); - } - System.out.println("tipoRegistro" + tipoRegistro); - System.out.println("cantidad armas" + listaArmas.size()); - System.out.println("registroArmas" + registroArmas.getPk()); - // Registramos la carga - TarmCarga carga = (TarmCarga)pSaveRequest.get("TARMCARGA"); - if(carga.isnew){ - carga.setTipocarga("INV"); - carga.setAucp(registroArmas.getSolicitudnum()); - carga.setEsdesaduanizado("N"); - carga.setFecha(new Timestamp(new Date().getTime())); - carga.setPersoncode(Integer.valueOf(personCode)); - carga.setCregistro(registroArmas.getPk()); - carga.setPk(getCodigoCarga()); - pEntityManager.persist(carga); - pEntityManager.flush(); - } - TcustPersonAddress direccionPrincipal = obtenerDireccionPrincipal(Integer.valueOf(personCode)); - // Fecha de registro comun a todas las armas ingresadas - java.sql.Date fechaRegistro = new java.sql.Date(new Date().getTime()); - for(TarmArmas armasObj : listaArmas){ - TarmTipoArmaExplosivo tipoArmaExplosivoObj = findTipoArmaExpByCTipoArmaExp(pEntityManager, armasObj.getCtipoarmaexplosivo()); - if(armasObj.isnew){ - armasObj = generarArma(pEntityManager,registroArmas, armasObj, direccionPrincipal, tipoRegistro, armasObj.getCantidad(), fechaRegistro); - } - else{ - pEntityManager.merge(armasObj); - } - // Afectacion en la tabla de totales en el caso de registro de produccion - if(tipoRegistro.equals("PRO")){ -// new BigDecimal(getCantidad()):armasObj.getPeso()) - BigDecimal cantidadPeso = BigDecimal.ZERO; - TgeneCatalogDetailKey unidadPK= new TgeneCatalogDetailKey(); - unidadPK.setCatalog(tipoArmaExplosivoObj.getUnidadmedidapeso()); - unidadPK.setCatalogcode(tipoArmaExplosivoObj.getUnidadmedidapesocodigo()); - TgeneCatalogDetail unidadesCatalog = TgeneCatalogDetail.find(pEntityManager, unidadPK); - if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("CANTIDAD")){ - cantidadPeso = new BigDecimal(armasObj.getCantidad()); - }else{ - cantidadPeso = armasObj.getPeso(); - } - actualizarTotalPersona(pEntityManager, tipoArmaExplosivoObj, personCode, cantidadPeso); - } - // Registramos el detalle de la carga - if(armasObj.isnew){ - TarmCargaDetalle cargaDetalle = new TarmCargaDetalle(); - cargaDetalle.setPk(getCodigoCargaDetalle()); - cargaDetalle.setCarma(armasObj.getPk()); - cargaDetalle.setCcarga(carga.getPk()); - pEntityManager.persist(cargaDetalle); - } - - } - - for(TarmArmas armasObj : listaArmasEliminadas){ - // Borra registro de la tabla TarmCargaDetalle - Query q = pEntityManager.createQuery("delete from TarmCargaDetalle where ccarga= :ccarga and carma= :carma"); - q.setParameter("ccarga", carga.getPk()); - q.setParameter("carma", armasObj.getPk()); - q.executeUpdate(); - // Borra registro de la tabla TarmCargaDetalle - TarmArmas armaAEliminarse = TarmArmas.find(pEntityManager, armasObj.getPk()); - pEntityManager.remove(armaAEliminarse); - } - } catch (Exception e) { - return pSaveRequest; - // TODO: handle exception - } - return pSaveRequest; - } - - public void generarRegistroArmas(EntityManager pEntityManager, TarmRegistroArmas registroArmas, String tipoRegistro){ - try { - Sequence sequence = new Sequence(); - String cRegistro = sequence.getNextValue("CREGISTRO").toString(); - registroArmas.setPk(Long.parseLong(cRegistro)); - registroArmas.setTiporegistro("CARINV"); - pEntityManager.persist(registroArmas); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public TarmArmas generarArma(EntityManager pEntityManager, TarmRegistroArmas registroArmas, TarmArmas armaParam, TcustPersonAddress direccionPrincipal, String tipoRegistro, Integer cantidad, java.sql.Date fechaRegistro){ - try { - TarmArmas arma = (TarmArmas) armaParam.cloneMe(); - // Setear el estado del arma - if(tipoRegistro.equals("IMP")){ - arma.setEstado("IMPO"); - }else if(tipoRegistro.equals("PRO")){ - arma.setEstado("REG"); - } - arma.setCregistro(registroArmas.getPk()); - arma.setCantidad(cantidad); - String carma = getCodigoArmas(); - arma.setPk(carma); - arma.setCodigoarma(carma); - - // Poner datos de la Ubicacion del arma - if(direccionPrincipal!=null){ - arma.setCountrycode(direccionPrincipal.getCountrycode()); - arma.setProvincecode(direccionPrincipal.getProvincecode()); - arma.setCantoncode(direccionPrincipal.getCantoncode()); - arma.setParroquiacode(direccionPrincipal.getParroquiacode()); - arma.setCitycode(direccionPrincipal.getCitycode()); - arma.setDireccion(direccionPrincipal.getAddress()); - } - arma.setColorcodigo("COLOR"); - arma.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - arma.setFecharegistro(fechaRegistro); - arma.setCpaisorigen(registroArmas.getPaisorigen()); - pEntityManager.persist(arma); - return arma; - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - /** - * Encuentra una lista de tipo de armas y explosivos - * @param pEntityManager - * @param pk - * @return - * @throws Exception - */ - public static TarmTipoArmaExplosivo findTipoArmaExpByCTipoArmaExp(EntityManager pEntityManager, String pk) throws Exception { - Query qry = pEntityManager.createQuery(Inventarios.JPQL_TIPOARMAEXPLOSIVO); - qry.setParameter("pk", pk); - ListresultList = qry.getResultList(); - if(resultList!=null && resultList.size()>0){ - return (TarmTipoArmaExplosivo) qry.getResultList().get(0); - }else{ - return null; - } - } - - /** - * Actualizar tabla TarmTotalPersona - * @param pEntityManager - * @param EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso - * @return void - * @throws Exception - */ - public void actualizarTotalPersona(EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso) throws Exception { - Query qry = pEntityManager.createQuery(Inventarios.JPQL_ULTIMO_TOTAL_PERSONA); - qry.setParameter("personcode", Integer.valueOf(personcode)); - qry.setParameter("clase", tipoArmaExplosivo.getClase()); - qry.setParameter("tipoarmaexplosivo", tipoArmaExplosivo.getTipoarmaexplosivo()); - qry.setParameter("unidadmedidapeso", tipoArmaExplosivo.getUnidadmedidapeso()); - ListresultList = qry.getResultList(); - String cTotalPersona = getCodigoTotalPersona(); - if(resultList!=null && resultList.size()>0){ - TarmTotalPersona totalPersonaAnterior = resultList.get(0); - // Actualiza la tabla de totales cuando existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(totalPersonaAnterior.getTotal()); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(totalPersonaAnterior.getTotal().add(cantidadPeso)); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.detach(totalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - }else{ - // Actualiza la tabla de totales cuando NO existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(BigDecimal.ZERO); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(cantidadPeso); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - } - } - - /** - * Obtiene la dirección principal de la persona - * @param personcode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public TcustPersonAddress obtenerDireccionPrincipal(Integer personcode) throws Exception { - TcustPersonAddress tcustPersonAddress = null; - Query query = PersistenceHelper.getEntityManager().createQuery(JPQL_DIRECCION_PRINCIPAL); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("principal", Constant.STR_Y); - List ltcustPersonAddresses = query.getResultList(); - if(ltcustPersonAddresses != null && !ltcustPersonAddresses.isEmpty()){ - tcustPersonAddress = ltcustPersonAddresses.iterator().next(); - } - return tcustPersonAddress; - } - - /** - * Metodo que devuelve el codigo de un arma - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - - /** - * Metodo que devuelve el codigo de un totalpersona - * @return - * @throws Exception - */ - private String getCodigoTotalPersona() throws Exception { - Sequence sequence = new Sequence(); - String cTotalPersona = sequence.getNextValue("TARMTOTALPERSONA").toString(); - return cTotalPersona; - } - - /** - * Metodo que devuelve el codigo de una carga - * @return - * @throws Exception - */ - private String getCodigoCarga() throws Exception { - Sequence sequence = new Sequence(); - String cCarga = sequence.getNextValue("CARGA").toString(); - return cCarga; - } - - /** - * Metodo que devuelve el codigo de una carga detalle - * @return - * @throws Exception - */ - private String getCodigoCargaDetalle() throws Exception { - Sequence sequence = new Sequence(); - String cCarga = sequence.getNextValue("CARGADETALLE").toString(); - return cCarga; - } - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/PreviaImportacionDesgloce.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/PreviaImportacionDesgloce.java.svn-base deleted file mode 100644 index 8bd4c6c..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/PreviaImportacionDesgloce.java.svn-base +++ /dev/null @@ -1,359 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmCargaDetalle; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudArmasKey; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Realiza el mantenimiento de totales y maestro detalle del ingreso - * @author fpazmino - * - */ -public class PreviaImportacionDesgloce extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; - private static final String JPQL_DIRECCION_PRINCIPAL="from TcustPersonAddress o WHERE o.pk.personcode=:personcode AND o.pk.dateto=:dateto AND o.principal=:principal"; - private static final String JPQL_ULTIMO_TOTAL_PERSONA = "from TarmTotalPersona o where o.personcodigo=:personcode AND o.clase=:clase AND o.tipoarmaexplosivo=:tipoarmaexplosivo AND o.unidadmedidapeso=:unidadmedidapeso AND o.fecha = (Select max(tp.fecha) from TarmTotalPersona tp where tp.personcodigo=:personcode AND tp.clase=:clase AND tp.tipoarmaexplosivo=:tipoarmaexplosivo AND tp.unidadmedidapeso=:unidadmedidapeso)"; - private static final String JPQL_ARMAS_CARGA_IMPORTACION = "from TarmArmas arm WHERE arm.pk in (Select cd.carma from TarmCargaDetalle cd where cd.ccarga = (Select c.pk from TarmCarga c where c.aucp=:aucp))"; - private static final String JPQL_CARGA = "from TarmCarga c WHERE c.aucp=:aucp"; - - /** - * Completa desgloce de las armas de fuego y armas no letales. Afecta totales. - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - System.out.println("INGRESA A DESGLOCE DESADUANIZACION"); - Boolean requiereDesgloce = (Boolean) pSaveRequest.get("REQUIEREDESGLOCE"); - if(requiereDesgloce){ - EntityManager pEntityManager=PersistenceHelper.getEntityManager(); - TarmSolicitud solicitud = (TarmSolicitud) pSaveRequest.get("SOLICITUD"); - String aucp = solicitud.getAucp(); - List listaArmas=consultarArmasPorAucp(pEntityManager, aucp); - String personcode = solicitud.getPersoncode().toString(); - // Actualiza el estado de desaduanizacion - TarmCarga carga = actualizarEstadoCarga(pEntityManager, aucp); - // Desglozar armas - for(TarmArmas armasObj : listaArmas){ - TarmTipoArmaExplosivo tipoArmaExplosivoObj = findTipoArmaExpByCTipoArmaExp(pEntityManager, armasObj.getCtipoarmaexplosivo()); - Integer cantidadArmas = armasObj.getCantidad(); - // Afectacion en la tabla de totales - actualizarTotalPersona(pEntityManager, tipoArmaExplosivoObj, personcode, new BigDecimal(cantidadArmas)); - // 0010000001 ARMA DE FUEGO, 0010000008 ARMAS NO LETALES - if((tipoArmaExplosivoObj.getClase().equals("0010000001") || tipoArmaExplosivoObj.getClase().equals("0010000008")) && armasObj.getCantidad()>1){ - // Grabamos 1 registro un total de N veces segun determine la cantidad - for(int i=0; i consultarArmasPorAucp(EntityManager pEntityManager, String aucp) throws Exception { - Query qry = pEntityManager.createQuery(PreviaImportacionDesgloce.JPQL_ARMAS_CARGA_IMPORTACION); - qry.setParameter("aucp", aucp); - ListresultList = qry.getResultList(); - if(resultList!=null && resultList.size()>0){ - return (List) qry.getResultList(); - }else{ - return null; - } - } - - /** - * Encuentra una lista de articulos por codigo de importacion (aucp) - * @param pEntityManager - * @param aucp - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static TarmCarga actualizarEstadoCarga(EntityManager pEntityManager, String aucp) throws Exception { - Query qry = pEntityManager.createQuery(PreviaImportacionDesgloce.JPQL_CARGA); - qry.setParameter("aucp", aucp); - ListresultList = qry.getResultList(); - TarmCarga carga = null; - if(resultList!=null && resultList.size()>0){ - carga = resultList.get(0); - carga.setEsdesaduanizado("S"); - pEntityManager.merge(carga); - } - return carga; - } - - - /** - * Encuentra una lista de tipo de armas y explosivos - * @param pEntityManager - * @param pk - * @return - * @throws Exception - */ - public static TarmTipoArmaExplosivo findTipoArmaExpByCTipoArmaExp(EntityManager pEntityManager, String pk) throws Exception { - Query qry = pEntityManager.createQuery(PreviaImportacionDesgloce.JPQL_TIPOARMAEXPLOSIVO); - qry.setParameter("pk", pk); - ListresultList = qry.getResultList(); - if(resultList!=null && resultList.size()>0){ - return (TarmTipoArmaExplosivo) qry.getResultList().get(0); - }else{ - return null; - } - } - - /** - * Actualizar tabla TarmTotalPersona - * @param pEntityManager - * @param EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso - * @return void - * @throws Exception - */ - public void actualizarTotalPersona(EntityManager pEntityManager, TarmTipoArmaExplosivo tipoArmaExplosivo, String personcode, BigDecimal cantidadPeso) throws Exception { - Query qry = pEntityManager.createQuery(PreviaImportacionDesgloce.JPQL_ULTIMO_TOTAL_PERSONA); - qry.setParameter("personcode", Integer.valueOf(personcode)); - qry.setParameter("clase", tipoArmaExplosivo.getClase()); - qry.setParameter("tipoarmaexplosivo", tipoArmaExplosivo.getTipoarmaexplosivo()); - qry.setParameter("unidadmedidapeso", tipoArmaExplosivo.getUnidadmedidapeso()); - ListresultList = qry.getResultList(); - String cTotalPersona = getCodigoTotalPersona(); - if(resultList!=null && resultList.size()>0){ - TarmTotalPersona totalPersonaAnterior = resultList.get(0); - // Actualiza la tabla de totales cuando existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(totalPersonaAnterior.getTotal()); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(totalPersonaAnterior.getTotal().add(cantidadPeso)); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.detach(totalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - }else{ - // Actualiza la tabla de totales cuando NO existen datos anteriores - TarmTotalPersona totalPersona = new TarmTotalPersona(); - totalPersona.setClase(tipoArmaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(tipoArmaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(tipoArmaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(Integer.valueOf(personcode)); - totalPersona.setSaldoanterior(BigDecimal.ZERO); - totalPersona.setCantidadmovimiento(cantidadPeso); - totalPersona.setTotal(cantidadPeso); - totalPersona.setFecha(new Timestamp(new Date().getTime())); - totalPersona.setIngresoegreso("ING"); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setPk(cTotalPersona); - pEntityManager.persist(totalPersona); - System.out.println("Saldoanterior,"+totalPersona.getSaldoanterior()+",Cantidadmovimiento,"+totalPersona.getCantidadmovimiento()+",Total,"+totalPersona.getTotal()+",fecha,"+totalPersona.getFecha()); - } - } - - /** - * Obtiene la dirección principal de la persona - * @param personcode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public TcustPersonAddress obtenerDireccionPrincipal(Integer personcode) throws Exception { - TcustPersonAddress tcustPersonAddress = null; - Query query = PersistenceHelper.getEntityManager().createQuery(JPQL_DIRECCION_PRINCIPAL); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("principal", Constant.STR_Y); - List ltcustPersonAddresses = query.getResultList(); - if(ltcustPersonAddresses != null && !ltcustPersonAddresses.isEmpty()){ - tcustPersonAddress = ltcustPersonAddresses.iterator().next(); - } - return tcustPersonAddress; - } - - /** - * Metodo que devuelve el codigo de un arma - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - - /** - * Metodo que devuelve el codigo de un totalpersona - * @return - * @throws Exception - */ - private String getCodigoTotalPersona() throws Exception { - Sequence sequence = new Sequence(); - String cTotalPersona = sequence.getNextValue("TARMTOTALPERSONA").toString(); - return cTotalPersona; - } - - /** - * Metodo que devuelve el codigo de una carga detalle - * @return - * @throws Exception - */ - private String getCodigoCargaDetalle() throws Exception { - Sequence sequence = new Sequence(); - String cCarga = sequence.getNextValue("CARGADETALLE").toString(); - return cCarga; - } - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/SolicitudImportacion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/SolicitudImportacion.java.svn-base deleted file mode 100644 index 1b14207..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/solicitudimportacion/.svn/text-base/SolicitudImportacion.java.svn-base +++ /dev/null @@ -1,299 +0,0 @@ -package com.fp.armas.rules.save.solicitudimportacion; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Ingresa un registro y actualiza la tabla de cupos - * @author Andres Cevallos - * - */ -public class SolicitudImportacion extends TransactionRule { - - - private static final long serialVersionUID = 1L; - private static final String JPQL_TIPOARMAEXPLOSIVO = "from TarmTipoArmaExplosivo tae" + " where tae.pk = :pk"; - private static final String JPQL_COMERCIANTECUPO = "from TarmComercianteCupo tcc" + " where tcc.personcodigo = :personcodigo and tcc.clase = :clasecodigo and tcc.tipoarmaexplosivo=:tipoarmaexplosivo and tcc.tiporegistro=:tiporegistro"; - private static final String JPQL_CATALOG = "from TgeneCatalogDetail tgd"+" where tgd.pk.catalog= :catalog and tgd.pk.catalogcode= :catalogcode"; - - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - @SuppressWarnings("unchecked") - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - System.out.println("INGRESA A SOLICITUD IMPORTACION"); - //EntityManager em=PersistenceHelper.getEntityManager(); - List listaArmas=(ArrayList)pSaveRequest.get("LISTAARMAS"); - List listaTotales=(ArrayList)pSaveRequest.get("LISTATOTALES"); - TarmRegistroArmas registro=(TarmRegistroArmas)pSaveRequest.get("REGISTRO"); - - List registroarmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("TREGISTROARMAS"); - List tarmArmasL=(List) pSaveRequest.getSaveBeanModifiedRecords("ARMAS"); - List tarmTotalPersonaL=(List) pSaveRequest.getSaveBeanModifiedRecords("TOTALCONTROLLER"); - if(registroarmasL==null){ - registroarmasL= new ArrayList<>(); - } - if(tarmArmasL==null){ - tarmArmasL= new ArrayList<>(); - } - if(tarmTotalPersonaL==null){ - tarmTotalPersonaL= new ArrayList<>(); - } - - //Persistiendo el registro - String cregistro = null; - Sequence sequence = new Sequence(); - Integer valorRegistro=Integer.valueOf(sequence.getNextValue("CREGISTRO").toString()); - if(valorRegistro!=null){ - cregistro=valorRegistro.toString(); - registro.setPk(Long.parseLong(cregistro)); - registroarmasL.add(registro); - //em.persist(registro); - } - - //Persistiendo la lista de armas - for (TarmArmas arma : listaArmas) { - arma.setCregistro(Long.parseLong(cregistro)); - if(arma.isnew){ - String carma = null; - sequence = new Sequence(); - String valor=sequence.getNextValue("CARMA").toString(); - if(valor!=null){ - carma=valor.toString(); - arma.setPk(carma); - arma.setCodigoarma(arma.getPk()); - //arma.setUnidadmedidacantidad("Unidad"); - tarmArmasL.add(arma); - //em.persist(arma); - } - }else{ - TarmArmas armaBD=new TarmArmas(); - armaBD=PersistenceHelper.getEntityManager().find(TarmArmas.class, arma.getPk()); - armaBD.setCantidad(arma.getCantidad()); - armaBD.setCantoncode(arma.getCantoncode()); - armaBD.setCitycode(arma.getCitycode()); - armaBD.setCodigoarma(arma.getCodigoarma()); - armaBD.setColor(arma.getColor()); - armaBD.setColorcodigo(arma.getColorcodigo()); - armaBD.setCountrycode(arma.getCountrycode()); - armaBD.setCpaisorigen(arma.getCpaisorigen()); - armaBD.setCregistro(arma.getCregistro()); - armaBD.setCtipoarmaexplosivo(arma.getCtipoarmaexplosivo()); - armaBD.setDireccion(arma.getDireccion()); - armaBD.setEstado(arma.getEstado()); - armaBD.setEstadocodigo(arma.getEstadocodigo()); - armaBD.setFecharegistro(arma.getFecharegistro()); - armaBD.setFemisionpermiso(arma.getFemisionpermiso()); - armaBD.setLote(arma.getLote()); - armaBD.setMarca(arma.getMarca()); - armaBD.setMarcacodigo(arma.getMarcacodigo()); - armaBD.setModelo(arma.getModelo()); - armaBD.setNemonicoarma(arma.getNemonicoarma()); - armaBD.setParroquiacode(arma.getParroquiacode()); - armaBD.setPeso(arma.getPeso()); - armaBD.setPesoAux(arma.getPesoAux()); - armaBD.setPk(arma.getPk()); - armaBD.setProvincecode(arma.getProvincecode()); - armaBD.setRecordversion(arma.getRecordversion()); - armaBD.setSeriecanon(arma.getSeriecanon()); - armaBD.setTipofabricacion(arma.getTipofabricacion()); - armaBD.setUnidadmedidacantidad(arma.getUnidadmedidacantidad()); - armaBD.setUnidadmedidacantidadcodigo(arma.getUnidadmedidacantidadcodigo()); - armaBD.setValorAux(arma.getValorAux()); - armaBD.setCodigoarma(arma.getPk()); - //em.persist(armaBD); - tarmArmasL.add(arma); - } - } - - //Persistiendo la lista de totales - for (TarmTotalPersona total : listaTotales) { - if(total.isnew){ - String ctotal = null; - sequence = new Sequence(); - Integer valor=Integer.valueOf(sequence.getNextValue("CTOTAL").toString()); - if(valor!=null){ - ctotal=valor.toString(); - total.setPk(ctotal); - //total.setUnidadmedidapeso("Unidad"); - System.out.println(total); - tarmTotalPersonaL.add(total); -// em.persist(total); -// em.flush(); - } - }else{ - TarmTotalPersona totalBD=new TarmTotalPersona(); - totalBD=PersistenceHelper.getEntityManager().find(TarmTotalPersona.class, total.getPk()); - totalBD.setClase(total.getClase()); - totalBD.setClasecodigo(total.getClasecodigo()); - totalBD.setCarma(total.getCarma()); - totalBD.setFecha(total.getFecha()); - totalBD.setPersoncodigo(total.getPersoncodigo()); - totalBD.setPk(total.getPk()); - totalBD.setRecordversion(total.getRecordversion()); - totalBD.setSaldoanterior(total.getSaldoanterior()); - totalBD.setTipoarmaexplosivo(total.getTipoarmaexplosivo()); - totalBD.setTipoarmaexplosivocodigo(total.getTipoarmaexplosivocodigo()); - totalBD.setTotal(total.getTotal()); - totalBD.setUnidadmedidapeso(total.getUnidadmedidapeso()); - totalBD.setUnidadmedidapesocodigo(total.getUnidadmedidapesocodigo()); - tarmTotalPersonaL.add(total); - //em.persist(totalBD); - } - } - // em.flush(); - } catch (Exception e) { - return pSaveRequest; - // TODO: handle exception - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - - /** - * Actualiza la tabla de totales - * @param tipoarmaexplosivo - * @param valor - * @param personcode - * @return - */ - public TarmTotalPersona cargarDatos(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode) - { - TarmTotalPersona totalArma = new TarmTotalPersona(); - totalArma.setClase(tipoarmaexplosivo.getClase()); - totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); - totalArma.setFecha(new Timestamp(new Date().getTime())); - totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); - totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); - totalArma.setPersoncodigo(personcode); - totalArma.setSaldoanterior(BigDecimal.ZERO); - totalArma.setTotal(valor); - totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); - totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); - return totalArma; - - } - - /** - * Actualiza la tabla de totales cuando existen datos anteriores - * @param tipoarmaexplosivo - * @param valor - * @param personcode - * @param saldo - * @return - */ - public TarmTotalPersona cargarDatosAnterior(TarmTipoArmaExplosivo tipoarmaexplosivo,BigDecimal valor,Integer personcode,BigDecimal saldo) - { - BigDecimal total = new BigDecimal(0); - total = total.add(valor); - total = total.add(saldo); - TarmTotalPersona totalArma = new TarmTotalPersona(); - totalArma.setClase(tipoarmaexplosivo.getClase()); - totalArma.setClasecodigo(tipoarmaexplosivo.getClasecodigo()); - totalArma.setFecha(new Timestamp(new Date().getTime())); - totalArma.setTipoarmaexplosivo(tipoarmaexplosivo.getTipoarmaexplosivo()); - totalArma.setTipoarmaexplosivocodigo(tipoarmaexplosivo.getTipoarmaexplosivocodigo()); - totalArma.setPersoncodigo(personcode); - totalArma.setSaldoanterior(saldo); - totalArma.setTotal(total); - totalArma.setUnidadmedidapeso(tipoarmaexplosivo.getUnidadmedidapeso()); - totalArma.setUnidadmedidapesocodigo(tipoarmaexplosivo.getUnidadmedidapesocodigo()); - return totalArma; - } - - /** - * Encuentra el cupo por cliente - * @param pEntityManager - * @param personcodigo - * @param clasecodigo - * @param tipoarmaexplosivo - * @param tiporegistro - * @return - * @throws Exception - */ - public static List findCupo(EntityManager pEntityManager, Integer personcodigo, String clasecodigo, String tipoarmaexplosivo, String tiporegistro) throws Exception { - - Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_COMERCIANTECUPO); - qry.setParameter("personcodigo", personcodigo); - qry.setParameter("clasecodigo", clasecodigo); - qry.setParameter("tipoarmaexplosivo", tipoarmaexplosivo); - qry.setParameter("tiporegistro", tiporegistro); - return qry.getResultList(); - } - - /** - * Encuentra una lista de tipo de armas y explosivos - * @param pEntityManager - * @param pk - * @return - * @throws Exception - */ - public static List findByClase(EntityManager pEntityManager, String pk) throws Exception { - Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_TIPOARMAEXPLOSIVO); - qry.setParameter("pk", pk); - return qry.getResultList(); - } - - public static List find(EntityManager pEntityManager, String catalog, String catalogcode) throws Exception { - Query qry = pEntityManager.createQuery(SolicitudImportacion.JPQL_CATALOG); - - qry.setParameter("catalog", catalog); - qry.setParameter("catalogcode", catalogcode); - return qry.getResultList(); - } - /** - * Mtodo que devuelve la secuencia de un cliente. - * - * @return Codigo del nuevo cliente. - * @throws Exception - */ - private Long getCodigoSolicitud() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CREGISTRO").longValue(); - - return codigo; - - } - - - /** - * Mtodo que devuelve el codigo de un arma - * @return - * @throws Exception - */ - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - - return codigoArma; - - } - - -} \ No newline at end of file diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/entries deleted file mode 100644 index 277746b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices -svn://172.17.26.185/COMACO - - - -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DocumentoDatos.java -file - - - - -2022-07-28T03:40:41.100796Z -affbb31998fcf90550244cc2e2c48811 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -8893 - -IngresaLectura.java -file - - - - -2022-07-28T03:40:41.100796Z -27a584ae2c30e90e7bae9228d916d96d -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -5101 - -DesvinculaTagArma.java -file - - - - -2022-07-28T03:40:41.100796Z -5143940a528b1e5758ef9e7af62f3a35 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2181 - -DocumentoHabilitanteDatos.java -file - - - - -2022-07-28T03:40:41.101796Z -08b5d2c4add6ce9c40925167f055c9e4 -2022-04-19T02:27:53.431385Z -4665 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4934 - -VinculaTagArma.java -file - - - - -2022-07-28T03:40:41.101796Z -f11588f5dfa9fef9aa69c32ec9c0134b -2022-04-19T02:27:53.431385Z -4665 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2336 - diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DesvinculaTagArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DesvinculaTagArma.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DesvinculaTagArma.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DocumentoDatos.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DocumentoDatos.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/DocumentoDatos.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/IngresaLectura.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/IngresaLectura.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/IngresaLectura.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/VinculaTagArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/VinculaTagArma.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/prop-base/VinculaTagArma.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DesvinculaTagArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DesvinculaTagArma.java.svn-base deleted file mode 100644 index c18793b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DesvinculaTagArma.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ -package com.fp.armas.rules.save.webservices; - -import java.util.List; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.inte.TarmLecturaDetalle; -import com.fp.persistence.parmas.inte.TarmTagArma; -import com.fp.persistence.parmas.inte.TarmTagArmaKey; - -/** - * Desvinculo el arma de un tag determinado, respondo con estado de la petición - * @author dcruz - * - */ -public class DesvinculaTagArma extends TransactionRule { - - private static final long serialVersionUID = -2755388437487909747L; - - /** - * Env&iaucte;o una respuesta 0 correcto, 1 no existe el arma a desvincular, 2 ocurrió un error - */ - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - String respuesta = "0"; - try { - String carma = (String) pRequest.get("CODIGOARMA"); - String tagArma = (String) pRequest.get("CODIGOTAG"); - TarmTagArma tarmTagArma = PersistenceHelper.getEntityManager().find(TarmTagArma.class, new TarmTagArmaKey(carma, tagArma)); - if(tarmTagArma == null){ - respuesta = "1"; - } else{ - List lecturaDetalles=PersistenceHelper.getEntityManager(). - createQuery("select o from TarmLecturaDetalle o where o.pk.codigotag='"+tarmTagArma.getPk().getCtag()+"'").getResultList(); - PersistenceHelper.getEntityManager().remove(tarmTagArma); - PersistenceHelper.getEntityManager().flush(); - - if(lecturaDetalles!=null && lecturaDetalles.size()>0){ - for(TarmLecturaDetalle detalleLectura:lecturaDetalles){ - PersistenceHelper.getEntityManager().remove(detalleLectura); - PersistenceHelper.getEntityManager().flush(); - } - } - respuesta = "0"; - } - - } catch (Throwable e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - pRequest.getResponse().put("RESPONSESTATUS", respuesta); - return pRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoDatos.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoDatos.java.svn-base deleted file mode 100644 index 6be1d55..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoDatos.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.armas.rules.save.webservices; - -import static com.fp.armas.rules.query.webservices.ConsultaImpresionProceso.QUERY_COLA_SOLICITUD; - -import java.sql.Timestamp; -import java.util.Date; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleKey; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Actualiza los datos del documento habilitante enviado - * @author dcruz - * - */ -public class DocumentoDatos extends TransactionRule { - - private static final long serialVersionUID = -951465699701916612L; - public static final String SQLDOCUMENTOCOLAIMPRESION="SELECT o FROM TarmColadeImpresion o" - + " WHERE o.cdocumento IN (SELECT i.pk FROM TarmDocumentoHabilitante i " - + " WHERE i.numerodocumento =:numerodocumento)"; - - /** - * Actualizamos fecha de impresión en la cola de impresion encontrada, actualizamos la foto de la persona o el logo de la companía según sea el caso - */ - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - System.out.println(".........ACTUALIZA LOS DATOS DEL TARMCOLADEIMPRESION..................."); - String respuesta = "0"; - try { - byte[] foto = (byte[]) pRequest.get("FOTO"); - String numerosolicitud = (String) pRequest.get("CODIGOSOLICITUD");//numero de solicitud - String codigotarjeta = (String) pRequest.get("CODIGOTARJETA"); - Date fechaimpresion = (Date) pRequest.get("FECHAIMPRESION"); - // - System.out.println(SQLDOCUMENTOCOLAIMPRESION+" "+numerosolicitud); - - Query query = PersistenceHelper.getEntityManager().createQuery(SQLDOCUMENTOCOLAIMPRESION); - query.setParameter("numerodocumento", numerosolicitud); - - List ltarmcoladeimpresion = query.getResultList(); - if(ltarmcoladeimpresion != null && !ltarmcoladeimpresion.isEmpty()){//siempre que es un permiso para imprimir en la cola de impresion recupera uno - TarmColadeImpresion coladeImpresion = ltarmcoladeimpresion.iterator().next(); - coladeImpresion.setFechaimpresion(new Timestamp(fechaimpresion.getTime())); - coladeImpresion.setCodigotarjeta(codigotarjeta); - coladeImpresion.setEstadoimpresion("IMPR"); - PersistenceHelper.getEntityManager().merge(coladeImpresion); - System.out.println("ACTIALIZA LA COLA DE IMPRESION.."); - TarmDocumentoHabilitante documentoHabilitante = TarmDocumentoHabilitante.find(PersistenceHelper.getEntityManager(), coladeImpresion.getCdocumento()); - TarmSolicitud solicitud = TarmSolicitud.find(PersistenceHelper.getEntityManager(), documentoHabilitante.getCsolicitud()); - TcustPersonDetail personDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), new TcustPersonDetailKey(solicitud.getPersoncode(), FormatDates.getDefaultExpiryTimestamp())); - TgeneFilesDetail fotoLogo = obtenerFoto(personDetail); - - if(fotoLogo.getPk() == null){// es un registro nuevo - TcustCompany company = null; - TcustPeople people = null; - if(fotoLogo.getModifiedData().get("DATOASOCIADO") != null && fotoLogo.getModifiedData().get("DATOASOCIADO") instanceof TcustCompany){ - company = (TcustCompany) fotoLogo.getModifiedData().get("DATOASOCIADO"); - } else if(fotoLogo.getModifiedData().get("DATOASOCIADO") != null && fotoLogo.getModifiedData().get("DATOASOCIADO") instanceof TcustPeople){ - people = (TcustPeople) fotoLogo.getModifiedData().get("DATOASOCIADO"); - } - TgeneFiles tgeneFiles = new TgeneFiles(getCode()); - PersistenceHelper.getEntityManager().persist(tgeneFiles); - fotoLogo.setPk(new TgeneFilesDetailKey(tgeneFiles.getPk(), FormatDates.getDefaultExpiryTimestamp())); - fotoLogo.setDatefrom(new Timestamp(System.currentTimeMillis())); - fotoLogo.setName("FOTO"); - fotoLogo.setCapturedate(new java.sql.Date(System.currentTimeMillis())); - fotoLogo.setContenttype("image/jpeg"); - fotoLogo.setDescription("LOGO EMPRESA"); - fotoLogo.setImage(foto); - fotoLogo.setExtension("jpg"); - fotoLogo.setImagesize(foto.length); - PersistenceHelper.getEntityManager().persist(fotoLogo); - System.out.println("INSERTA LA FOTO....."); - //Actualizo en la persona o la compania segun sea el caso - if(company != null){ - company.setLogo(tgeneFiles.getPk()); - PersistenceHelper.getEntityManager().merge(company); - } else if(people != null){ - people.setPhotocode(tgeneFiles.getPk()); - PersistenceHelper.getEntityManager().merge(people); - } - } else{//actualizo el registro anterior y genero el historial - TgeneFilesDetail tgeneFilesDetail = new TgeneFilesDetail(new TgeneFilesDetailKey(fotoLogo.getPk().getCode(), new Timestamp(System.currentTimeMillis()))); - tgeneFilesDetail.setDatefrom(fotoLogo.getDatefrom()); - tgeneFilesDetail.setName(fotoLogo.getName()); - tgeneFilesDetail.setCapturedate(fotoLogo.getCapturedate()); - tgeneFilesDetail.setContenttype(fotoLogo.getContenttype()); - tgeneFilesDetail.setDescription(fotoLogo.getDescription()); - tgeneFilesDetail.setImage(fotoLogo.getImage()); - tgeneFilesDetail.setExtension(fotoLogo.getExtension()); - tgeneFilesDetail.setImagesize(fotoLogo.getImagesize()); - PersistenceHelper.getEntityManager().persist(tgeneFilesDetail); - fotoLogo.setImage(foto); - fotoLogo.setImagesize(foto.length); - PersistenceHelper.getEntityManager().merge(fotoLogo); - System.out.println("ACTUALIZA LA FOTO....."); - } - PersistenceHelper.getEntityManager().flush(); - } - } catch (Throwable e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - pRequest.getResponse().put("RESPONSESTATUS", respuesta); - return pRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - /** - * Retorna la foto de la persona si es que esta existe - * @param personDetail - * @return El detalle del achivo imagen que se ha guardado, o un archivo vacío sin pk para que pueda ser guardado en la base de datos - * @throws CommondbException - * @throws Exception - */ - private TgeneFilesDetail obtenerFoto(TcustPersonDetail personDetail) throws CommondbException, Exception{ - TcustCompany company = null; - TcustPeople people = null; - TgeneFilesDetail result = null; - switch(personDetail.getIdentification().length()){ - case 13: - company = TcustCompany.find(PersistenceHelper.getEntityManager(), new TcustCompanyKey(personDetail.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp())); - break; - default: - people = TcustPeople.find(PersistenceHelper.getEntityManager(), new TcustPeopleKey(personDetail.getPk().getPersoncode(), FormatDates.getDefaultExpiryTimestamp())); - break; - } - if(company != null){ - result = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(company.getLogo(), FormatDates.getDefaultExpiryTimestamp())); -// result.getModifiedData().put("DATOASOCIADO", company); - } else if(people != null){ - result = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(people.getPhotocode(), FormatDates.getDefaultExpiryTimestamp())); -// result.getModifiedData().put("DATOASOCIADO", people); - } - if(result == null){ - result = new TgeneFilesDetail(); - } - result.getModifiedData().put("DATOASOCIADO", company != null ? company : people); - return result; - } - - /** - * Retorna el secuencial para ingresar en la tabla {@link TgeneFiles} - * @return - * @throws Exception - */ - private Integer getCode() throws Exception{ - Sequence secuenciaCode = new Sequence(); - return Integer.valueOf(secuenciaCode.getNextValue("CODE").toString()); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoHabilitanteDatos.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoHabilitanteDatos.java.svn-base deleted file mode 100644 index adc62bc..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/DocumentoHabilitanteDatos.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.armas.rules.save.webservices; - -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Actualiza los datos del documento habilitante enviado - * @author ndominguez - * - */ -public class DocumentoHabilitanteDatos extends TransactionRule { - - private static final long serialVersionUID = -951465699701916612L; - public static final String QUERY_SOLICITUD_NUM = "SELECT o FROM TarmSolicitud o WHERE o.numerosolicitud=:numerosolicitud"; - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - System.out.println(".........ACTUALIZA LOS DATOS DEL TARMDOCUMENTOHABILITANTE..................."); - String respuesta = "0"; - try { - String numerosolicitud = (String) pRequest.get("NUMEROSOLICITUD"); - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_SOLICITUD_NUM); - query.setParameter("numerosolicitud", numerosolicitud); - List ltarmSolicitud = query.getResultList(); - if ( ltarmSolicitud != null && !ltarmSolicitud.isEmpty() ) { - TarmSolicitud tarmSolicitud = ltarmSolicitud.iterator().next(); - Query queryDoc = PersistenceHelper.createQuery("SELECT o FROM TarmDocumentoHabilitante o WHERE o.csolicitud=:csolicitud "); - queryDoc.setParameter("csolicitud", tarmSolicitud.getPk()); - List documentoHabilitantes = queryDoc.getResultList(); - if(documentoHabilitantes != null && !documentoHabilitantes.isEmpty()){ - TarmDocumentoHabilitante documentoHabilitante = documentoHabilitantes.iterator().next(); - String fileName = null; - try { - //Se valida que no tenga caracteres especiales - fileName = caractersEspeciales(documentoHabilitante.getNumerodocumento()); - } catch (Exception e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - if (fileName != null) { - String xpathdocumento = getRutaDocumentoSolBase(documentoHabilitante.getFechaemision(), numerosolicitud, fileName); - documentoHabilitante.setXpath(xpathdocumento); - PersistenceHelper.getEntityManager().merge(documentoHabilitante); - PersistenceHelper.getEntityManager().flush(); - pRequest.getResponse().put("XPATHDOCUMENTOSOLICITUD", documentoHabilitante.getXpath()); - } else { - respuesta = "1"; - } - } else { - respuesta = "1"; - } - } else { - respuesta = "1"; - } - } catch (Throwable e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - pRequest.getResponse().put("RESPONSESTATUS", respuesta); - return pRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - /** - * Método que revisa si una cadena tiene caracteres especiales - * @param nombre - * @return - * @throws Exception - */ - public static String caractersEspeciales(String nombre) throws Exception{ - List caracteresEsp=TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(),"CARACTERESPECIAL"); - for(TgeneCatalogDetail caract:caracteresEsp){ - if(nombre.contains(caract.getPk().getCatalog())){ - return null; - } - } - String numero="1234567890"; - if(numero.contains(nombre.substring(0, 1))){ - return null; - } - if(nombre!=null && nombre.trim().contains(" ")){ - return null; - } - if(nombre.length()<9){ - nombre="DOCUMENTO-"+nombre; - } - return nombre; - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - private String getRutaDocumentoSolBase(Date fechaEmision, String numerosolicitud, String numerodocumento) { - StringBuilder ruta = null; - if (fechaEmision != null && numerosolicitud != null - && numerodocumento != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(fechaEmision); - ruta = new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:").append(numerosolicitud); - ruta = ruta.append("/cm:").append(numerodocumento+".pdf"); - } - return ruta != null ? ruta.toString() : null; - } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/IngresaLectura.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/IngresaLectura.java.svn-base deleted file mode 100644 index 6bcb92d..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/IngresaLectura.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.armas.rules.save.webservices; - -import java.sql.Timestamp; -import java.util.Date; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.inte.TarmLectura; -import com.fp.persistence.parmas.inte.TarmLecturaDetalle; -import com.fp.persistence.parmas.inte.TarmLecturaDetalleKey; -import com.fp.persistence.parmas.inte.TarmTagArma; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Componente en donde se ingresa las lecturas que provienen del hand held - * @author dcruz - * - */ -public class IngresaLectura extends TransactionRule { - - private static final long serialVersionUID = 8760785038997324400L; - - private static final String QUERY_TAG_ARMA = "SELECT o FROM TarmTagArma o WHERE o.ctag=:codigotag"; - - /** - * Método en el cual se inserta los registros de los dispositivos leidos en la hand held - */ - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - System.out.println("INGRESA A GUARDAR EL TAG........................"+pRequest); - String tagsleidos = (String) pRequest.get("TAGSLECTURA"); - Date fechalectura = (Date) pRequest.get("FECHALECTURA"); - String locacionlectura = (String) pRequest.get("LOCACIONLECTURA"); - String idportal = (String) pRequest.get("IDPORTAL"); - String tipooperacion = (String) pRequest.get("TIPOOPERACION"); - String[] tagleidosArray=null; - if(tagsleidos.contains(",")){ - tagleidosArray = tagsleidos.split(","); - }else{ - tagleidosArray = tagsleidos.split("/"); - } - String direccion = locacionlectura; - guardaLectura(tagleidosArray, fechalectura, direccion, idportal, tipooperacion); - return pRequest; - } - - /** - * Método en el cual guardamos los datos leíidos desde el hand held - * @param tagleidos array de tag leídos del hand held - * @param fechaLectura la fecha en la que se realizó la lectura - * @param countrycode código de país - * @param provincecode código de provincia - * @param cantoncode código de cantón - * @param parroquiacode código de parroquia - * @param idportal id del portal de donde se capturó la lectura - * @param tipooperacion tipo de operació de la lectura si es hand held o si es portal - * @throws Exception - */ - private void guardaLectura(String[] tagleidos, Date fechaLectura, String direccion, String idportal, String tipooperacion) throws Exception{ - TarmLectura tarmLectura = new TarmLectura(); - tarmLectura.setPk(getCodigoLectura()); - tarmLectura.setFecha(new Timestamp(fechaLectura.getTime())); - - System.out.println("direccion ......................."+direccion); - System.out.println(direccion.contains(",")); - if(direccion.contains(",")){ - String[] direccionArray = direccion.split(","); - String provincecode = direccionArray[0]; - tarmLectura.setProvincecode(provincecode); - } - -// tarmLectura.setCountrycode(countrycode); -// tarmLectura.setProvincecode(provincecode); -// tarmLectura.setCantoncode(cantoncode); -// tarmLectura.setParroquiacode(parroquiacode); - tarmLectura.setIdportal(idportal); - tarmLectura.setTipolectura(tipooperacion); - tarmLectura.setTipolecturacode("TIPOLECTURA"); - tarmLectura.setDireccion(direccion); - PersistenceHelper.getEntityManager().persist(tarmLectura); - for (String tag : tagleidos) { -// String carma = getCodigoArmadeTag(tag); - TarmLecturaDetalle tarmLecturaDetalle = new TarmLecturaDetalle(new TarmLecturaDetalleKey(tarmLectura.getPk(), tag)); -// tarmLecturaDetalle.set - PersistenceHelper.getEntityManager().persist(tarmLecturaDetalle); - } - PersistenceHelper.getEntityManager().flush(); - } - - /** - * Retorna el codigo del arma asociada al tag desde TarmTagArma - * @param codigotag - * @return el código del arma relacionada con el tag - */ - @SuppressWarnings("unchecked") - private String getCodigoArmadeTag(String codigotag) throws Exception{ - //tanto el tag como el arma deben estar relacionados entre si, no se puede producir el caso en que un tag este relacionado con mas de un arma y viceversa - String codigoarma = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_TAG_ARMA); - query.setParameter("codigotag", codigotag); - List ltarmTagArmas = query.getResultList(); - if(ltarmTagArmas != null && !ltarmTagArmas.isEmpty()){ - codigoarma = ltarmTagArmas.iterator().next().getPk().getCarma(); - } - return codigoarma; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - - /** - * Retorna el codódigo secuencial de la pk de la tabla {@link TarmLectura} - * @return la secuencia de la tabla {@link TarmLectura} - * @throws Exception - */ - public Long getCodigoLectura() throws Exception { - Sequence sequence = new Sequence(); - return sequence.getNextValue("CLECTURA").longValue(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/VinculaTagArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/VinculaTagArma.java.svn-base deleted file mode 100644 index 509f8fd..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/rules/save/webservices/.svn/text-base/VinculaTagArma.java.svn-base +++ /dev/null @@ -1,66 +0,0 @@ -package com.fp.armas.rules.save.webservices; - -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.inte.TarmTagArma; -import com.fp.persistence.parmas.inte.TarmTagArmaKey; - -/** - * Vinculo un arma con un tag, respondo con un mensaje de validación para mostrar el estado de la petición - * @author dcruz - * - */ -public class VinculaTagArma extends TransactionRule { - - private static final long serialVersionUID = 7380264973023057406L; - private static final String QUERY_TAGARMA = "SELECT o FROM TarmTagArma o WHERE o.pk.carma=:carma"; - - /** - * Respondo con 0 es correcto, 1 el arma ya esta registrada con otro tag, 2 el arma ya ha sido registrada, 3 existió un error - */ - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pRequest) throws Exception { - String respuesta; - try { - String carma = (String) pRequest.get("CODIGOARMA"); - String tagArma = (String) pRequest.get("CODIGOTAG"); - TarmTagArma tarmTagArma = PersistenceHelper.getEntityManager().find(TarmTagArma.class, new TarmTagArmaKey(carma, tagArma)); - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_TAGARMA); - query.setParameter("carma", carma); - List ltarmTagArmas = query.getResultList(); - if(tarmTagArma != null){ - respuesta = "2"; - } else if(!ltarmTagArmas.isEmpty()){ - respuesta = "1"; - } else{ - TarmTagArma ptagArma = new TarmTagArma(new TarmTagArmaKey(carma, tagArma)); - ptagArma.setFecha(new Timestamp(System.currentTimeMillis())); - PersistenceHelper.getEntityManager().persist(ptagArma); - PersistenceHelper.getEntityManager().flush(); - respuesta = "0"; - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - respuesta = "3"; - } - pRequest.getResponse().put("RESPONSESTATUS", respuesta); - return pRequest; - } - - /** - * Método que se realiza al hacer rollback la transacción - */ - @Override - public SaveRequest reverseProcess(SaveRequest pRequest) throws Exception { - return pRequest; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/task/.svn/entries deleted file mode 100644 index b2b4b1b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/entries +++ /dev/null @@ -1,915 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/task -svn://172.17.26.185/COMACO - - - -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ValidarUnidadInstitucion.java -file - - - - -2022-07-28T03:40:40.664794Z -0404a6fd3c976a417f9898c4f149ae63 -2016-03-18T20:00:59.044078Z -4514 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2308 - -ObtieneCentroControl.java -file - - - - -2022-07-28T03:40:40.665794Z -4d1e7566fac06e39962905bd94c0cde2 -2014-12-08T13:24:01.459631Z -3348 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2084 - -FinalizarDocumentoHabilitante.java -file - - - - -2022-07-28T03:40:40.665794Z -ebd9a793608d8fc023afc4c1ca81d2ca -2015-03-25T04:26:25.168873Z -3966 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2731 - -EmitirComprobanteCaja.java -file - - - - -2022-07-28T03:40:40.665794Z -18a020b985d20e039d6652932ab62657 -2014-10-27T10:07:51.561737Z -2001 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5205 - -ValidaFlujoCargaDeposito.java -file - - - - -2022-07-28T03:40:40.665794Z -510292a6a8037b438266b3faa80e31b9 -2015-07-09T13:24:12.990058Z -4185 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1872 - -ActualizarRutaArchivo.java -file - - - - -2022-07-28T03:40:40.666794Z -4f2d11867531b19f4b81d98bca11bb44 -2015-03-25T04:26:25.168873Z -3966 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1510 - -TramiteAnulado.java -file - - - - -2022-07-28T03:40:40.666794Z -3e6ab76765acddb065906b91910ac9d7 -2014-12-16T10:23:44.143875Z -3539 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2042 - -ValidaInspeccion.java -file - - - - -2022-07-28T03:40:40.666794Z -4e7a89a729b258a7776efca3d20bd002 -2014-12-09T06:02:23.952318Z -3359 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1940 - -ObtienerCategoriaTramite.java -file - - - - -2022-07-28T03:40:40.666794Z -0da9170258f44f9bd9d6cabdaece26fd -2014-10-27T11:24:57.428689Z -2003 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2701 - -TramiteAprobado.java -file - - - - -2022-07-28T03:40:40.667794Z -e600dafbaf154ce093dbc8cbe8392886 -2014-12-16T10:23:44.143875Z -3539 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1937 - -ValAutorizacionPreviaImporta.java -file - - - - -2022-07-28T03:40:40.667794Z -6b15254778b96f59e89b9e076a8b64bb -2014-12-23T07:57:08.583476Z -3637 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1948 - -ActualizarPlanificacion.java -file - - - - -2022-07-28T03:40:40.667794Z -12c126df1943ea9b89cf9420a3267b7f -2014-11-14T09:15:57.327220Z -2795 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1442 - -ValidarCustodios.java -file - - - - -2022-07-28T03:40:40.667794Z -e4577bcb0b58d25c72eef116498e8704 -2016-02-02T22:27:59.965868Z -4425 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2182 - -ValidacionGrupoDecRecep.java -file - - - - -2022-07-28T03:40:40.668794Z -09d5477a78107a43fc855c047fbb9d18 -2015-02-20T10:59:05.489563Z -3828 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4013 - -GenerarValorACancelar.java -file - - - - -2022-07-28T03:40:40.668794Z -e0aaf03234b876a2cae8f8c593d0ecff -2014-10-27T05:50:22.203219Z -1969 -fpazmino - - - - - - - - - - - - - - - - - - - - - -1340 - -AplicarSancion.java -file - - - - -2022-07-28T03:40:40.668794Z -88c4584e74b27c1eee157cbdcb601bfc -2016-02-18T13:54:57.622129Z -4460 -cvasquez - - - - - - - - - - - - - - - - - - - - - -3185 - -ValidacionGrupo.java -file - - - - -2022-07-28T03:40:40.668794Z -e0e1feffe1f4ae8d3ae48c4a03026ba6 -2015-01-29T14:23:08.770684Z -3821 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3177 - -VerificarCantidadArmas.java -file - - - - -2022-07-28T03:40:40.669794Z -d6261b69245c7250ed1e0e474251a7e9 -2015-06-13T05:26:41.265293Z -4100 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2109 - -TipoArchivoControl.java -file - - - - -2022-07-28T03:40:40.669794Z -af01edaebc03f54020c9407a86857588 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2293 - -RechazarActa.java -file - - - - -2022-07-28T03:40:40.669794Z -ab98bfc57feacb01aa37a512a7ef00b0 -2016-04-21T22:25:32.078933Z -4540 -cvasquez - - - - - - - - - - - - - - - - - - - - - -2459 - -TipoDocumento.java -file - - - - -2022-07-28T03:40:40.669794Z -bf2b7d590b6cc7123dd638c31ca7be07 -2014-11-20T05:23:08.199256Z -2993 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2072 - -FechaCaducidadEstadoArma.java -file - - - - -2022-07-28T03:40:40.670794Z -5b42868a9a8e48834bc7a60af2e9d425 -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4296 - -traspasodominio -dir - -RequiereInspeccion.java -file - - - - -2022-07-28T03:40:40.670794Z -621079d172c164bde5c82c6ee9eef795 -2014-12-02T14:45:29.324656Z -3253 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2030 - -ValidacionDecomiso.java -file - - - - -2022-07-28T03:40:40.670794Z -aea8c72566d4717ba5f31e25b67bb3d9 -2014-12-24T06:15:00.581851Z -3644 -cpiedra - - - - - - - - - - - - - - - - - - - - - -1623 - -ActualizarInventario.java -file - - - - -2022-07-28T03:40:40.671794Z -10f4d511efb8c802493ad54957546218 -2014-10-18T06:57:50.144647Z -1703 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2461 - -ActualizarInventBajaDestrucc.java -file - - - - -2022-07-28T03:40:40.671794Z -27dd348a6a99152ccd976996ce0d9bfb -2015-06-27T13:42:18.237444Z -4143 -fpazmino - - - - - - - - - - - - - - - - - - - - - -6809 - diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventBajaDestrucc.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventBajaDestrucc.java.svn-base deleted file mode 100644 index ce6faaf..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventBajaDestrucc.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.armas.task; - -import java.sql.Timestamp; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmBodega; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.sessionbeans.helper.Sequence; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class ActualizarInventBajaDestrucc extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("Rutina que actualiza el inventario despues de que se ha autorizado destruir armas"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("creporte") == null) { - return; - } - Integer creporte=Integer.parseInt(mrequest.get("creporte").toString()); - - //lista de las armas decomisadas que se encuentran en el reporte - List tarmDetRepDestruirArmasList= em. - createQuery("select t from TarmDetRepDestruirArmas t where t.creporte=:creporte") - .setParameter("creporte", creporte) - .getResultList(); - //Se recorre la lista de las armas del reporte de destruccion - for(TarmDetRepDestruirArmas detArmaObj:tarmDetRepDestruirArmasList){ - //Actualizo el estado del registro tarmDecomisoArma - - TarmDecomisoArma decomisoArmaObj = (TarmDecomisoArma) em.createQuery("select t from TarmDecomisoArma t where t.pk=:pk") - .setParameter("pk", detArmaObj.getCdecomisoarma()) - .getResultList().get(0); - decomisoArmaObj.setEstado("DEST"); - em.merge(decomisoArmaObj); - //Actualizo el estado del registro tarmArma - TarmArmas armaObjAnterior = (TarmArmas) em.createQuery("select t from TarmArmas t where t.pk=:pk") - .setParameter("pk", decomisoArmaObj.getCarma()) - .getResultList().get(0); - TarmArmas armaObj = new TarmArmas(); - armaObj.setCantidad(armaObjAnterior.getCantidad()); - armaObj.setCantoncode(armaObjAnterior.getCantoncode()); - armaObj.setCitycode(armaObjAnterior.getCitycode()); - armaObj.setCodigoarma(armaObjAnterior.getCodigoarma()); - armaObj.setColor(armaObjAnterior.getColor()); - armaObj.setColorcodigo(armaObjAnterior.getColorcodigo()); - armaObj.setCountrycode(armaObjAnterior.getCountrycode()); - armaObj.setCpaisorigen(armaObjAnterior.getCpaisorigen()); - armaObj.setCregistro(armaObjAnterior.getCregistro()); - armaObj.setCtipoarmaexplosivo(armaObjAnterior.getCtipoarmaexplosivo()); - armaObj.setDireccion(armaObjAnterior.getDireccion()); - armaObj.setEstado("DEST"); - armaObj.setEstadocodigo("ESTADOARMA"); -// Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); -// armaObj.setFecharegistro(timeStamp); - armaObj.setFemisionpermiso(armaObjAnterior.getFemisionpermiso()); - armaObj.setLote(armaObjAnterior.getLote()); - armaObj.setMarca(armaObjAnterior.getMarca()); - armaObj.setMarcacodigo(armaObjAnterior.getMarcacodigo()); - armaObj.setModelo(armaObjAnterior.getModelo()); - armaObj.setNemonicoarma(armaObjAnterior.getNemonicoarma()); - armaObj.setParroquiacode(armaObjAnterior.getParroquiacode()); - armaObj.setPeso(armaObjAnterior.getPeso()); - armaObj.setPesoAux(armaObjAnterior.getPesoAux()); - armaObj.setProvincecode(armaObjAnterior.getProvincecode()); - armaObj.setSeriecanon(armaObjAnterior.getSeriecanon()); - armaObj.setTipofabricacion(armaObjAnterior.getTipofabricacion()); - armaObj.setTipofabricacioncodigo(armaObjAnterior.getTipofabricacioncodigo()); - armaObj.setUnidadmedidacantidad(armaObjAnterior.getUnidadmedidacantidad()); - armaObj.setUnidadmedidacantidadcodigo(armaObjAnterior.getUnidadmedidacantidadcodigo()); - armaObj.setValorAux(armaObjAnterior.getValorAux()); - armaObj.setPk(getCodigoArma().toString()); - em.persist(armaObj); - - // Actualizar en TARMBODEGA el centro de control para el arma destruida - TarmBodega bodegaArmaObj = (TarmBodega) em.createQuery("select t from TarmBodega t where t.carma=:carma") - .setParameter("carma", decomisoArmaObj.getCarma()) - .getResultList().get(0); - if(bodegaArmaObj!=null){ - bodegaArmaObj.setCcentrocontrol(null); - em.merge(decomisoArmaObj); - }else{ - TarmBodega bodegaObj = new TarmBodega(); - bodegaObj.setPk(getCodigoBodega()); - bodegaObj.setCarma(decomisoArmaObj.getCarma()); - em.persist(bodegaObj); - } - // Inserta registro en transaccion Arma Bodega - TarmTransaccionArmaBodega tranArmaBodegaObj = new TarmTransaccionArmaBodega(); - tranArmaBodegaObj.setPk(getCTransArmaBodega()); - tranArmaBodegaObj.setCarma(decomisoArmaObj.getCarma()); - tranArmaBodegaObj.setOperacion("DESTRUCCION"); - tranArmaBodegaObj.setOperacioncode("OPERACIONDECOMISO"); - tranArmaBodegaObj.setCcentrocontrolorigen("DPTOARMASPICH"); - tranArmaBodegaObj.setFecha(new Timestamp(new Date().getTime())); - em.persist(tranArmaBodegaObj); - } - em.flush(); - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } - - private Long getCodigoBodega() throws Exception{ - Sequence sequence = new Sequence(); - Integer cbodega = sequence.getNextValue("CBODEGA").intValue(); - return new Long(cbodega); - } - - private Long getCTransArmaBodega() throws Exception{ - Sequence sequence = new Sequence(); - Integer cTransArmaBodega = sequence.getNextValue("CTRANARMBODEGA").intValue(); - return new Long(cTransArmaBodega); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventario.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventario.java.svn-base deleted file mode 100644 index 3192bbd..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarInventario.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class ActualizarInventario extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("ingresa a actualizar a la clase"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("numerotransaccion") == null) { - return; - } - Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString()); - //datos de la transaccion - TarmDecomisoArmaTransaccion tarmDecomisoArmaTransaccion=TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), numeroTransacion); - //lista de las armas decomisadas por el codigo de recepcion - List tarmDecomisoArmaTransaccionList= PersistenceHelper.getEntityManager(). - createQuery("select o from TarmDecomisoArma o where o.cdecarmtranrecepcion=:cdecarmtranrecepcion") - .setParameter("cdecarmtranrecepcion", numeroTransacion) - .getResultList(); - //se recorre la lista de las armas decomisadas - for(TarmDecomisoArma decomisoArma:tarmDecomisoArmaTransaccionList){ - //se busca l tabla de decomiso para actualizar el campo del centro de control que esta recibiendo las armas - TarmDecomiso decomiso= TarmDecomiso.find(PersistenceHelper.getEntityManager(), decomisoArma.getCdecomiso()); - decomiso.setCcentrocontroldestino(tarmDecomisoArmaTransaccion.getCcentrocontrol()); - PersistenceHelper.getEntityManager().merge(decomiso); - } - PersistenceHelper.getEntityManager().flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarPlanificacion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarPlanificacion.java.svn-base deleted file mode 100644 index 08374cd..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarPlanificacion.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.simple.action.TaskAction; - -/** - * Clase para actualizar la planificacion - * una tarea. - * - * @version 2.1 - */ -public class ActualizarPlanificacion extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("ingresa a actualizar a la clase"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("cplanificacion") == null) { - return; - } - Long numeroTransacion=Long.parseLong(mrequest.get("cplanificacion").toString()); - TarmPlanificacionInspeccion planificacionInspeccion= TarmPlanificacionInspeccion.find(PersistenceHelper.getEntityManager(), numeroTransacion); - planificacionInspeccion.setAprobada(m.get("respuesta").toString()); - PersistenceHelper.getEntityManager().merge(planificacionInspeccion); - //datos de la transaccion - PersistenceHelper.getEntityManager().flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarRutaArchivo.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarRutaArchivo.java.svn-base deleted file mode 100644 index cf304f1..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ActualizarRutaArchivo.java.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.simple.action.TaskAction; - -/** - * C.P - * Clase para actulaizar la ruta del archivo - * - * @version 2.1 - */ -public class ActualizarRutaArchivo extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("numerotransaccion") == null) { - return; - } - Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString()); - //datos de la transaccion - TarmDecomisoArmaTransaccion tarmDecomisoArmaTransaccion=TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), numeroTransacion); - if(mrequest.get("xpath")!=null){ - tarmDecomisoArmaTransaccion.setXpath(mrequest.get("xpath").toString()); - tarmDecomisoArmaTransaccion.setEstadoflujo("ENV"); - } - PersistenceHelper.getEntityManager().merge(tarmDecomisoArmaTransaccion); - PersistenceHelper.getEntityManager().flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/AplicarSancion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/AplicarSancion.java.svn-base deleted file mode 100644 index 848b24b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/AplicarSancion.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el valor de deposito para la solicitud - * @author Christian Pazmino - * @version 2.1 - */ -public class AplicarSancion extends TaskAction { - - /* - * (non-Javadoc) - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - System.out.println("Rutina que determina si es un CENTRO DE CONTROL y hay al menos un arma en estado RECLAMADO"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("numerotransaccion") == null) { - return; - } - // DETERMINA SI SE DEBE O NO APLICAR LA SANCION - Boolean aplicarSancionBLN = Boolean.FALSE; - EntityManager em = PersistenceHelper.getEntityManager(); - TarmDecomisoArmaTransaccion decomisoArmaTransaccionObj = TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), Long.parseLong(mrequest.get("numerotransaccion").toString())); - if(decomisoArmaTransaccionObj!=null){ - TarmCentroControl centroControlObj = TarmCentroControl.find(em, decomisoArmaTransaccionObj.getCcentrocontrol()); - if(centroControlObj!=null){ - TgeneCatalogDetailKey pk = new TgeneCatalogDetailKey(centroControlObj.getNombreinstitucion(), centroControlObj.getNombreinstitucioncodigo()); - TgeneCatalogDetail unidadCD = TgeneCatalogDetail.find(em, pk); - // SI ES UN DEPARTAMENTO DE CONTROL DE ARMAS, Y ES UN CENTRO DE CONTROL DE ARMAS - if(centroControlObj.getInstitucion().equals("1")&& unidadCD.getDescription().contains("CENTRO CONTROL DE ARMAS")){ - Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString()); - //lista de las armas decomisadas por el codigo de recepcion - List lArmasRecibidas= em.createQuery("select o from TarmDecomisoArma o where o.cdecarmtranrecepcion=:cdecarmtranrecepcion") - .setParameter("cdecarmtranrecepcion", numeroTransacion).getResultList(); - - for(TarmDecomisoArma decomisoArma:lArmasRecibidas){ - if("RECL".equals(decomisoArma.getEstado())){ - aplicarSancionBLN = Boolean.TRUE; - break; - } - } - } - } - } - if(aplicarSancionBLN){ - m.put("BPMStatus","A"); - } - else{ - m.put("BPMStatus","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/EmitirComprobanteCaja.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/EmitirComprobanteCaja.java.svn-base deleted file mode 100644 index 4f3bd28..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/EmitirComprobanteCaja.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.armas.task; - -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.sessionbeans.helper.Sequence; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class EmitirComprobanteCaja extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("**** Emitir Comprobante De Caja ****"); -// HashMap m = (HashMap) pParam; -// Map mrequest = (Map) m.get("request"); -// if (mrequest.get("creporte") == null) { -// return; -// } -// Integer creporte=Integer.parseInt(mrequest.get("creporte").toString()); -// -// //lista de las armas decomisadas que se encuentran en el reporte -// List tarmDetRepDestruirArmasList= PersistenceHelper.getEntityManager(). -// createQuery("select t from TarmDetRepDestruirArmas t where t.creporte=:creporte") -// .setParameter("creporte", creporte) -// .getResultList(); -// //Se recorre la lista de las armas del reporte de destruccion -// for(TarmDetRepDestruirArmas detArmaObj:tarmDetRepDestruirArmasList){ -// //Actualizo el estado del registro tarmDecomisoArma -// -// TarmDecomisoArma decomisoArmaObj = (TarmDecomisoArma) PersistenceHelper.getEntityManager().createQuery("select t from TarmDecomisoArma t where t.pk=:pk") -// .setParameter("pk", detArmaObj.getCdecomisoarma()) -// .getResultList().get(0); -// decomisoArmaObj.setEstado("DEST"); -// PersistenceHelper.getEntityManager().merge(decomisoArmaObj); -// //Actualizo el estado del registro tarmArma -// TarmArmas armaObjAnterior = (TarmArmas) PersistenceHelper.getEntityManager().createQuery("select t from TarmArmas t where t.pk=:pk") -// .setParameter("pk", decomisoArmaObj.getCarma()) -// .getResultList().get(0); -// TarmArmas armaObj = new TarmArmas(); -// armaObj.setCantidad(armaObjAnterior.getCantidad()); -// armaObj.setCantoncode(armaObjAnterior.getCantoncode()); -// armaObj.setCitycode(armaObjAnterior.getCitycode()); -// armaObj.setCodigoarma(armaObjAnterior.getCodigoarma()); -// armaObj.setColor(armaObjAnterior.getColor()); -// armaObj.setColorcodigo(armaObjAnterior.getColorcodigo()); -// armaObj.setCountrycode(armaObjAnterior.getCountrycode()); -// armaObj.setCpaisorigen(armaObjAnterior.getCpaisorigen()); -// armaObj.setCregistro(armaObjAnterior.getCregistro()); -// armaObj.setCtipoarmaexplosivo(armaObjAnterior.getCtipoarmaexplosivo()); -// armaObj.setDireccion(armaObjAnterior.getDireccion()); -// armaObj.setEstado("DEST"); -// armaObj.setEstadocodigo("ESTADOARMA"); -//// Timestamp timeStamp = new Timestamp(System.currentTimeMillis()); -//// armaObj.setFecharegistro(timeStamp); -// armaObj.setFemisionpermiso(armaObjAnterior.getFemisionpermiso()); -// armaObj.setLote(armaObjAnterior.getLote()); -// armaObj.setMarca(armaObjAnterior.getMarca()); -// armaObj.setMarcacodigo(armaObjAnterior.getMarcacodigo()); -// armaObj.setModelo(armaObjAnterior.getModelo()); -// armaObj.setNemonicoarma(armaObjAnterior.getNemonicoarma()); -// armaObj.setParroquiacode(armaObjAnterior.getParroquiacode()); -// armaObj.setPeso(armaObjAnterior.getPeso()); -// armaObj.setPesoAux(armaObjAnterior.getPesoAux()); -// armaObj.setProvincecode(armaObjAnterior.getProvincecode()); -// armaObj.setSeriecanon(armaObjAnterior.getSeriecanon()); -// armaObj.setTipofabricacion(armaObjAnterior.getTipofabricacion()); -// armaObj.setTipofabricacioncodigo(armaObjAnterior.getTipofabricacioncodigo()); -// armaObj.setUnidadmedidacantidad(armaObjAnterior.getUnidadmedidacantidad()); -// armaObj.setUnidadmedidacantidadcodigo(armaObjAnterior.getUnidadmedidacantidadcodigo()); -// armaObj.setValorAux(armaObjAnterior.getValorAux()); -// armaObj.setPk(getCodigoArma().toString()); -// PersistenceHelper.getEntityManager().persist(armaObj); -// } -// PersistenceHelper.getEntityManager().flush(); - } - -// private Integer getCodigoArma() throws Exception{ -// Sequence sequence = new Sequence(); -// Integer carma = sequence.getNextValue("CARMA").intValue(); -// return carma; -// } - - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FechaCaducidadEstadoArma.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FechaCaducidadEstadoArma.java.svn-base deleted file mode 100644 index aa74366..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FechaCaducidadEstadoArma.java.svn-base +++ /dev/null @@ -1,93 +0,0 @@ -package com.fp.armas.task; - -import java.sql.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.sessionbeans.helper.Sequence; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo del tipo de archivo - * - * @version 2.1 - */ -public class FechaCaducidadEstadoArma extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - System.out.println("SOLICITUD : "+mrequest.get("csolicitud")); - System.out.println("NUMERO DE TRANSACCION: "+mrequest.get("numerotransaccion")); - if (mrequest.get("csolicitud") == null || mrequest.get("numerotransaccion") == null) { - return; - } - EntityManager em = PersistenceHelper.getEntityManager(); - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(); - codigoSolicitudKey.setCsolicitud(mrequest.get("csolicitud").toString()); - codigoSolicitudKey.setCtramite(Long.valueOf(mrequest.get("numerotransaccion").toString())); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - - TarmTramite tramite = TarmTramite.find(em, solicitudTramite.getPk().getCtramite()); - if(!tramite.getTipoautorizacion().equals("6")){// diferente 6 TIPOAUTORIZACION 0 PERMISO - return; - } - - System.out.println("select o from TarmDocumentoHabilitante o where o.csolicitud=:csolicitud" + mrequest.get("csolicitud").toString()); - List documentoHab= em.createQuery("select o from TarmDocumentoHabilitante o where o.csolicitud=:csolicitud",TarmDocumentoHabilitante.class) - .setParameter("csolicitud", mrequest.get("csolicitud").toString()). - getResultList(); - System.out.println("............................"+documentoHab.size()); - - List tarmArmas = em. - createQuery("select o from TarmArmas o where o.pk in (select p.pk.carma from TarmSolicitudArmas p where p.pk.csolicitud=:csolicitud)",TarmArmas.class) - .setParameter("csolicitud",mrequest.get("csolicitud").toString()) - .getResultList(); - System.out.println("............................"+tarmArmas.size()); - - for (TarmDocumentoHabilitante itemDocHab : documentoHab) { - StringBuilder sqlColaImpresion= new StringBuilder("select c from TarmColadeImpresion c where c.cdocumento ="+itemDocHab.getPk()); - ListlistaColaImpresion= em.createQuery(sqlColaImpresion.toString(),TarmColadeImpresion.class).getResultList(); - if(listaColaImpresion!=null && listaColaImpresion.size()>0){ - for (TarmColadeImpresion itemColaImp : listaColaImpresion) { - itemColaImp.setEstadoimpresion("PIMPR"); - itemColaImp.setEstadoimpresioncode("ESTADOIMPRESION"); - em.merge(itemColaImp); - em.flush(); - } - } - } - - for(TarmArmas arma:tarmArmas){ - arma.setPk(this.getCodigoArma()); - arma.setFechacaducidad(documentoHab.get(0).getFechaexpiracion()); - arma.setFecharegistro(new Date(System.currentTimeMillis())); - em.clear(); - em.persist(arma); - em.flush(); - } - } - - private String getCodigoArma() throws Exception{ - Sequence sequence = new Sequence(); - String carma = sequence.getNextValue("CARMA").toString(); - return carma; - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FinalizarDocumentoHabilitante.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FinalizarDocumentoHabilitante.java.svn-base deleted file mode 100644 index 94a09e3..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/FinalizarDocumentoHabilitante.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.simple.action.TaskAction; - -public class FinalizarDocumentoHabilitante extends TaskAction { - - private EntityManager em; - - private static final String QUERY_DOCUMENTOS_ACTUALIZAR = "SELECT p from TarmDocumentoHabilitante p where p.ctramite in (SELECT o.ctramitepadre FROM TarmTramite o WHERE o.pk=:codigotramite) and p.estado <> 'FIN' order by p.fechaemision desc"; - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - //String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - //TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - //TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - TarmDocumentoHabilitante documentoHabilitante= getCodigoDocumentoHabilitanteFinalizar(ctramite); -// if(documentoHabilitante!=null){ -// documentoHabilitante.setEstado("FIN"); -// em.merge(documentoHabilitante); -// em.flush(); -// } - } - - private TarmDocumentoHabilitante getCodigoDocumentoHabilitanteFinalizar(Long codigotramite) throws Exception{ - //tanto el tag como el arma deben estar relacionados entre si, no se puede producir el caso en que un tag este relacionado con mas de un arma y viceversa - TarmDocumentoHabilitante codigoDocumentohabilitanteActualizar = null; - Query query = PersistenceHelper.getEntityManager().createQuery(QUERY_DOCUMENTOS_ACTUALIZAR); - query.setParameter("codigotramite", codigotramite); - List ltDocumentosHabilitantesSeleccionados = query.getResultList(); - if(ltDocumentosHabilitantesSeleccionados != null && !ltDocumentosHabilitantesSeleccionados.isEmpty()){ - codigoDocumentohabilitanteActualizar = ltDocumentosHabilitantesSeleccionados.get(0); - } - return codigoDocumentohabilitanteActualizar; - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/GenerarValorACancelar.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/GenerarValorACancelar.java.svn-base deleted file mode 100644 index 9caac29..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/GenerarValorACancelar.java.svn-base +++ /dev/null @@ -1,44 +0,0 @@ -package com.fp.armas.task; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; - -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el valor de deposito para la solicitud - * @author Christian Pazmino - * @version 2.1 - */ -public class GenerarValorACancelar extends TaskAction { - - /* - * (non-Javadoc) - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - System.out.println("Rutina que genera el valor de deposito"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - Mapdatosmail = (Map) m.get("datosmail"); - BigDecimal costoTramite = new BigDecimal("0"); - if(datosmail!=null && datosmail.get("costoTramite")!=null){ - costoTramite = (BigDecimal) datosmail.get("costoTramite"); - } - - if(costoTramite.compareTo(new BigDecimal("0"))!=0){ - m.put("BPMStatus","A"); - } - else{ - m.put("BPMStatus","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtieneCentroControl.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtieneCentroControl.java.svn-base deleted file mode 100644 index d8e7b1b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtieneCentroControl.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class ObtieneCentroControl extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("ingresa a actualizar a la clase"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("ccentrocontrol") == null) { - return; - } - String codigoCentroControl=mrequest.get("ccentrocontrol").toString(); - //datos del decomiso - //consulta del centro de control - TarmCentroControl centroControl=TarmCentroControl.find(PersistenceHelper.getEntityManager(), codigoCentroControl); - //lista de las armas decomisadas por el codigo de recepcion - TgeneCatalogDetail tgeneCatalogDetail = PersistenceHelper.getEntityManager(). - createQuery("select o from TgeneCatalogDetail o where o.pk.catalog=:catalog and o.pk.catalogcode=:catalogcode",TgeneCatalogDetail.class) - .setParameter("catalog", centroControl.getInstitucion()) - .setParameter("catalogcode", centroControl.getInstituciontipo()) - .getSingleResult(); - if(!tgeneCatalogDetail.getLegalcode().equals("C")){ - m.put("corganismo","D"); - return; - } - m.put("corganismo",tgeneCatalogDetail.getLegalcode()); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtienerCategoriaTramite.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtienerCategoriaTramite.java.svn-base deleted file mode 100644 index a1ae5cd..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ObtienerCategoriaTramite.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class ObtienerCategoriaTramite extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("csolicitud"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("csolicitud") == null) { - return; - } - TgeneParametersKey key= new TgeneParametersKey(); - key.setCode("CODIGO.CATEGORIA.IMPORTADOR"); - key.setCompanycode(1); - TgeneParameters parameters= TgeneParameters.find(PersistenceHelper.getEntityManager(), key); - String csolicitud=mrequest.get("csolicitud").toString(); - //datos del decomiso - //consulta del centro de control - TarmSolicitud solicitud=TarmSolicitud.find(PersistenceHelper.getEntityManager(), csolicitud); - //lista de las armas decomisadas por el codigo de recepcion - TarmTramite tarmTramite = PersistenceHelper.getEntityManager(). - createQuery("select o from TarmTramite o where o.pk=:ctramite",TarmTramite.class) - .setParameter("ctramite", solicitud.getCtramite()) - .getSingleResult(); - TgeneCatalogDetailKey pKey= new TgeneCatalogDetailKey(); - pKey.setCatalog(tarmTramite.getCategoria()); - pKey.setCatalogcode(tarmTramite.getCategoriacodigo()); - TgeneCatalogDetail catalogDetail=TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), pKey); - if(catalogDetail.getPk().getCatalog().equals(parameters.getTextvalue())){ - m.put("importacion","A"); - }else{ - m.put("importacion","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RechazarActa.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RechazarActa.java.svn-base deleted file mode 100644 index 8872430..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RechazarActa.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmBodega; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de setear a nulos aquellas armas que recibieron asignacion de codigos - * - */ -public class RechazarActa extends TaskAction { - private static String SQL = "select o from TarmBodega o where o.pk in (select max(t.pk) from TarmBodega t where t.carma=:ccarma and t.ccentrocontrol=:ccentrocontrol) order by o.carma"; - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - Long numeroTransacion=Long.parseLong(mrequest.get("numerotransaccion").toString()); - if (numeroTransacion == null) { - return; - } - - List lstDecomisoArma = PersistenceHelper.getEntityManager(). - createQuery("select o from TarmDecomisoArma o where o.cdecomisoarmatransaccion=:decomiso",TarmDecomisoArma.class) - .setParameter("decomiso", numeroTransacion).getResultList(); - - for(TarmDecomisoArma decomisoArma:lstDecomisoArma){ - bodegaEliminar(numeroTransacion, decomisoArma.getCarma()); - decomisoArma.setCdecomisoarmatransaccion(null); - PersistenceHelper.saveOrUpdate(decomisoArma); - - } - - } - - /** - * @param ccentrocontrol - * @param decomisoArma - */ - private void bodegaEliminar(Long numeroTransacion, - String carma) throws Exception { - TarmDecomisoArmaTransaccion tarmDecomisoArmaTransaccion = TarmDecomisoArmaTransaccion - .find(PersistenceHelper.getEntityManager(), numeroTransacion); - - String ccentrocontrol = tarmDecomisoArmaTransaccion.getCcentrocontrol(); - TarmBodega tarmBodegas = (TarmBodega) PersistenceHelper - .getEntityManager().createQuery(SQL) - .setParameter("ccentrocontrol", ccentrocontrol) - .setParameter("ccarma", carma) - .getSingleResult(); - PersistenceHelper.getEntityManager().remove(tarmBodegas); - PersistenceHelper.getEntityManager().flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RequiereInspeccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RequiereInspeccion.java.svn-base deleted file mode 100644 index e928854..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/RequiereInspeccion.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de anular el tramite - * c.p - * @version 2.1 - */ -public class RequiereInspeccion extends TaskAction { - - private EntityManager em; - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - TarmTramite tramite=TarmTramite.find(em, ctramite); - System.out.println("Requiere Inspeccion :"+tramite.getRequiereinspeccion()); - if(tramite.getRequiereinspeccion()!=null){ - m.put("inspeccion",tramite.getRequiereinspeccion()); - }else{ - m.put("inspeccion","N"); - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoArchivoControl.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoArchivoControl.java.svn-base deleted file mode 100644 index a5695f7..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoArchivoControl.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo del tipo de archivo - * - * @version 2.1 - */ -public class TipoArchivoControl extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("csolicitud") == null || mrequest.get("numerotransaccion") == null) { - return; - } - - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(); - codigoSolicitudKey.setCsolicitud(mrequest.get("csolicitud").toString()); - codigoSolicitudKey.setCtramite(Long.valueOf(mrequest.get("numerotransaccion").toString())); - - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(PersistenceHelper.getEntityManager(), codigoSolicitudKey); - TarmTramite tramite = TarmTramite.find(PersistenceHelper.getEntityManager(), solicitudTramite.getPk().getCtramite()); - - TgeneCatalogDetail tgeneCatalogDetail = PersistenceHelper.getEntityManager(). - createQuery("select o from TgeneCatalogDetail o where o.pk.catalog=:catalog and o.pk.catalogcode=:catalogcode",TgeneCatalogDetail.class) - .setParameter("catalog", tramite.getTipoarchivo()) - .setParameter("catalogcode", tramite.getTipoarchivocodigo()) - .getSingleResult(); - String resultado = "REPORTE".equalsIgnoreCase(tgeneCatalogDetail.getDescription())?"D":"CARNET".equalsIgnoreCase(tgeneCatalogDetail.getDescription())?"A":""; - m.put("BPMStatus",resultado); - m.put("tipoarchivo",resultado); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoDocumento.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoDocumento.java.svn-base deleted file mode 100644 index c41a3bc..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TipoDocumento.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo del tipo de archivo - * - * @version 2.1 - */ -public class TipoDocumento extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } -// if (mrequest.get("csolicitud") != null) { -// m.put("tipodocumento","EC"); -// return; -// } - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(PersistenceHelper.getEntityManager(), codigoSolicitudKey); - - TarmTramite tramite = TarmTramite.find(PersistenceHelper.getEntityManager(), ctramite); - - if(tramite.getFlujotramite()==null){ - throw new ControlArmasException("ARM-0001", "TIPO DE TRAMITE {0} NO ENCONTRADO", solicitudTramite.getNumerotramite()); - } - m.put("tipodocumento",tramite.getFlujotramite());//EC - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAnulado.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAnulado.java.svn-base deleted file mode 100644 index 1f1fcbb..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAnulado.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de anular el tramite - * c.p - * @version 2.1 - */ -public class TramiteAnulado extends TaskAction { - - private EntityManager em; - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - - TgeneParameters parametro=TgeneParameters.find(em, new TgeneParametersKey("CODIGO.ANULADO", 1)); - solicitudTramite.setEstadotramite(parametro.getTextvalue()); - solicitudTramite.setEstadotramitecodigo("ESTADOSOLICITUD"); - if(m.get("observaciones")!=null){ - solicitudTramite.setObservacionnovedad(m.get("observaciones").toString()); - } - em.merge(solicitudTramite); - - em.flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAprobado.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAprobado.java.svn-base deleted file mode 100644 index b0e9cf8..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/TramiteAprobado.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de cambiar el estado del tramite a aprobado el tramite - * c.p - * @version 2.1 - */ -public class TramiteAprobado extends TaskAction { - - private EntityManager em; - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - - TgeneParameters parametro=TgeneParameters.find(em, new TgeneParametersKey("ACEPTADO", 1));//APB - solicitudTramite.setEstadotramite(parametro.getTextvalue()); - solicitudTramite.setEstadotramitecodigo("ESTADOSOLICITUD"); - em.merge(solicitudTramite); - - em.flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValAutorizacionPreviaImporta.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValAutorizacionPreviaImporta.java.svn-base deleted file mode 100644 index 1d55840..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValAutorizacionPreviaImporta.java.svn-base +++ /dev/null @@ -1,47 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de validar si el tramite es Autorizacion y Categoria sea PreviaImportacion - * - * @version 2.1 - */ -public class ValAutorizacionPreviaImporta extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("csolicitud"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { - return; - } - Long ctramite = (Long)mrequest.get("numerotransaccion"); - TgeneParameters paramTramAutorizacion = TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("CODIGO.TRAMITE.AUTORIZACION", 1)); - TgeneParameters paramCategPreciaImpor = TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("CODIGO.CATEG.PREVIAIMPORTA", 1)); - //Consulta del tramite - TarmTramite tarmTramite = TarmTramite.find(PersistenceHelper.getEntityManager(), ctramite); - if(tarmTramite.getTipoautorizacion().equals(paramTramAutorizacion.getTextvalue()) && tarmTramite.getCategoria().equals(paramCategPreciaImpor.getTextvalue())){ - m.put("previaimportacion","A"); - }else{ - m.put("previaimportacion","D"); - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaFlujoCargaDeposito.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaFlujoCargaDeposito.java.svn-base deleted file mode 100644 index 9dbef0b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaFlujoCargaDeposito.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de anular el tramite - * c.p - * @version 2.1 - */ -public class ValidaFlujoCargaDeposito extends TaskAction { - - private EntityManager em; - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - System.out.println("Inicia el flujo...."); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - System.out.println("Inicia el flujo.."+mrequest.get("csolicitud")); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - - solicitudTramite.setInicioFlujo("INICIA EL FLUJO CARGA DEPOSITO"); - - em.merge(solicitudTramite); - - em.flush(); - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaInspeccion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaInspeccion.java.svn-base deleted file mode 100644 index 388bae5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidaInspeccion.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmInspeccion; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de validar si la inspeccion aprueba o niega el tramite - * c.p - * @version 2.1 - */ -public class ValidaInspeccion extends TaskAction { - - private EntityManager em; - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null && mrequest.get("numerotransaccion") == null) { //mrequest.get("numerotransaccion") - return; - } - em=PersistenceHelper.getEntityManager(); - String csolicitud = (String)mrequest.get("csolicitud"); - Long ctramite = (Long)mrequest.get("numerotransaccion"); - - List inspeccionsList=em.createQuery("select o from TarmInspeccion o where o.csolicitud=:csolicitud and o.ctramite=:ctramite order by o.pk desc ") - .setParameter("csolicitud", csolicitud) - .setParameter("ctramite", ctramite) - .getResultList(); - System.out.println("Requiere Inspeccion :"+inspeccionsList); - if(inspeccionsList!=null && inspeccionsList.size()>0){ - if(inspeccionsList.get(0).getTramiteproceso()!=null ){ - m.put("tramiteproceso",inspeccionsList.get(0).getTramiteproceso()); - }else{ - m.put("tramiteproceso","N"); - } - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionDecomiso.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionDecomiso.java.svn-base deleted file mode 100644 index c3d6726..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionDecomiso.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de validar si es decoiso o incautacion - * - * @version 2.1 - */ -public class ValidacionDecomiso extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("cdecomiso"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("cdecomiso") == null) { - return; - } - - Long cdecomiso=Long.parseLong(mrequest.get("cdecomiso").toString()); - TarmDecomiso decomiso=TarmDecomiso.find(PersistenceHelper.getEntityManager(), cdecomiso); - //CODIGO DEL DECOMISO DEL TIPO DE REGISTRO - TgeneParameters parameters= TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("CODIGO.TIPOREGISTRO.DECOMISO", 1)); - if(decomiso.getTipoproceso().equals(parameters.getTextvalue())){ - m.put("importacion","A"); - }else{ - m.put("importacion","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupo.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupo.java.svn-base deleted file mode 100644 index 2e8ca37..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupo.java.svn-base +++ /dev/null @@ -1,74 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import org.apache.commons.lang.StringUtils; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; -import com.fp.persistence.pbpm.gene.TbpmGroupsKey; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de buscar el grupo para asignar la tarea - * una tarea. - * - * @version 2.1 - */ -public class ValidacionGrupo extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("Ingresa a validar el grupo"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("cprovincia") == null) { - m.put("grupo",null); - throw new ControlArmasException("BPM-0014", "SIN PROVINCIA", ""); - } - String cprovince=mrequest.get("cprovincia").toString(); - TgeneProvince province= TgeneProvince.find(em, new TgeneProvinceKey("EC", cprovince)); - - if(province!=null && province.getPk()!=null){ - System.out.println(" PROVINCIA "+obtieneNombreLimpio(province.getDescription())); - //se setea al grupo asignado - m.put("grupo",m.get("grupo")+obtieneNombreLimpio(province.getDescription())); - TbpmGroups groups= TbpmGroups.find(em, new TbpmGroupsKey(m.get("grupo").toString(), 1)); - if(groups!=null && groups.getPk()!=null ){ - System.out.println("...................GRUPO . "+m.get("grupo")); - System.out.println("csolicitud "+mrequest.get("csolicitud")); - System.out.println("cdecomiso "+mrequest.get("cdecomiso")); - }else{ - m.put("grupo",null); - throw new ControlArmasException("BPM-0012", "NO EXISTE EL GRUPO {0}", m.get("grupo")); - // throw new Exception("NO EXISTE EL GRUPO "+m.get("grupo")) ; - } - }else{ - throw new ControlArmasException("BPM-0013", "NO TIENE CENTRO DE CONTROL ASIGNADO LA PROVINCIA {0}", cprovince); - } - } - - /* Reemplazo un string los caracteres en blanco y reemplazo caracteres especiales - * @param toConvert - * @return la cadena convertida - */ - private String obtieneNombreLimpio(String toConvert){ - return StringUtils.replaceEach(StringUtils.deleteWhitespace(toConvert), - new String[]{"\u00e1","\u00e9","\u00ed","\u00f3","\u00fa","\u00c1","\u00c9","\u00cd","\u00d3","\u00da","\u00F1","\u00d1"}, - new String[]{"a","e","i","o","u","A","E","I","O","U","n","N"}); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupoDecRecep.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupoDecRecep.java.svn-base deleted file mode 100644 index 833c863..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidacionGrupoDecRecep.java.svn-base +++ /dev/null @@ -1,87 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.EntityManager; - -import org.apache.commons.lang.StringUtils; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; -import com.fp.persistence.pbpm.gene.TbpmGroupsKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de buscar el grupo para asignar la tarea - * una tarea. - * - * @version 2.1 - */ -public class ValidacionGrupoDecRecep extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("Ingresa a validar el grupo recepcion"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("cprovincia") == null) { - m.put("grupo",null); - throw new ControlArmasException("BPM-0014", "SIN PROVINCIA", ""); - } - String cprovince=mrequest.get("cprovincia").toString(); - - TgeneParameters paramDepartamentoControl=TgeneParameters.find(em, new TgeneParametersKey("CODIGO.DEPT.CONTROL", 1));//DPCA - System.out.println("Parametro codigo del departamento "+paramDepartamentoControl.getTextvalue()+ " codigo de la provincia"+cprovince); - if(cprovince.equals(paramDepartamentoControl.getTextvalue())){ - //maia.put("grupo","TEC_ALM_CENTRO_"); - m.put("grupo","JEFE_DEPARTAMENTO_ARMAS_"); - System.out.println("...................GRUPO . "+m.get("grupo")); - System.out.println("csolicitud "+mrequest.get("csolicitud")); - System.out.println("cdecomiso "+mrequest.get("cdecomiso")); - return; - } - - TgeneProvince province= TgeneProvince.find(em, new TgeneProvinceKey("EC", cprovince)); - - if(province!=null && province.getPk()!=null){ - System.out.println(" PROVINCIA "+obtieneNombreLimpio(province.getDescription())); - //se setea al grupo asignado - m.put("grupo",m.get("grupo")+obtieneNombreLimpio(province.getDescription())); - TbpmGroups groups= TbpmGroups.find(em, new TbpmGroupsKey(m.get("grupo").toString(), 1)); - if(groups!=null && groups.getPk()!=null ){ - System.out.println("...................GRUPO . "+m.get("grupo")); - System.out.println("csolicitud "+mrequest.get("csolicitud")); - System.out.println("cdecomiso "+mrequest.get("cdecomiso")); - }else{ - m.put("grupo",null); - throw new ControlArmasException("BPM-0012", "NO EXISTE EL GRUPO {0}", m.get("grupo")); - // throw new Exception("NO EXISTE EL GRUPO "+m.get("grupo")) ; - } - }else{ - throw new ControlArmasException("BPM-0013", "NO TIENE CENTRO DE CONTROL ASIGNADO LA PROVINCIA {0}", cprovince); - } - } - - /* Reemplazo un string los caracteres en blanco y reemplazo caracteres especiales - * @param toConvert - * @return la cadena convertida - */ - private String obtieneNombreLimpio(String toConvert){ - return StringUtils.replaceEach(StringUtils.deleteWhitespace(toConvert), - new String[]{"\u00e1","\u00e9","\u00ed","\u00f3","\u00fa","\u00c1","\u00c9","\u00cd","\u00d3","\u00da","\u00F1","\u00d1"}, - new String[]{"a","e","i","o","u","A","E","I","O","U","n","N"}); - } -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarCustodios.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarCustodios.java.svn-base deleted file mode 100644 index 3dcf588..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarCustodios.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ -package com.fp.armas.task; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de validar numero de custodios - * @author Christian Pazmino - * @version 2.1 - */ -public class ValidarCustodios extends TaskAction { - private EntityManager em; - /* - * (non-Javadoc) - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - System.out.println("Rutina para validar custodios..."); - em=PersistenceHelper.getEntityManager(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - String csolicitud = ""; - if (mrequest.get("csolicitud") == null) { - return; - } - else{ - csolicitud=mrequest.get("csolicitud").toString(); - TarmSolicitud solicitud = TarmSolicitud.find(em, csolicitud); - solicitud.setEstado("FIN"); - em.merge(solicitud); - Long ctramite = solicitud.getCtramite(); - TarmSolicitudTramiteKey codigoSolicitudKey = new TarmSolicitudTramiteKey(csolicitud, ctramite); - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramite.find(em, codigoSolicitudKey); - solicitudTramite.setEstadotramite("FIN"); - em.merge(solicitudTramite); - BigDecimal numeroCustodios = new BigDecimal("0"); - if(solicitud.getNumerocustodios()!=null){ - numeroCustodios = new BigDecimal(solicitud.getNumerocustodios()); - } - if(numeroCustodios.compareTo(new BigDecimal("0"))!=0){ - m.put("BPMStatus","A"); - } - else{ - m.put("BPMStatus","D"); - } - - - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarUnidadInstitucion.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarUnidadInstitucion.java.svn-base deleted file mode 100644 index e079cf5..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/ValidarUnidadInstitucion.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el valor de deposito para la solicitud - * @author Christian Pazmino - * @version 2.1 - */ -public class ValidarUnidadInstitucion extends TaskAction { - - /* - * (non-Javadoc) - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - System.out.println("Rutina que determina si es un CENTRO DE CONTROL DE ARMAS"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("numerotransaccion") == null) { - return; - } - // DETERMINA SI ES CENTRO DE CONTROL SE DEBE CONTINUAR EL FLUJO O TERMINAR SI ES OTRA INSTITUCION - Boolean esCentroControlArmas = Boolean.FALSE; - EntityManager em = PersistenceHelper.getEntityManager(); - TarmDecomisoArmaTransaccion decomisoArmaTransaccionObj = TarmDecomisoArmaTransaccion.find(PersistenceHelper.getEntityManager(), Long.parseLong(mrequest.get("numerotransaccion").toString())); - if(decomisoArmaTransaccionObj!=null){ - TarmCentroControl centroControlObj = TarmCentroControl.find(em, decomisoArmaTransaccionObj.getCcentrocontrol()); - // SI ES UN DEPARTAMENTO DE CONTROL DE ARMAS - if(centroControlObj!=null && centroControlObj.getInstitucion()!=null && centroControlObj.getInstitucion().equals("1")){ - esCentroControlArmas = Boolean.TRUE; - } - } - if(esCentroControlArmas){ - m.put("BPMStatus","A"); - } - else{ - m.put("BPMStatus","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/VerificarCantidadArmas.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/VerificarCantidadArmas.java.svn-base deleted file mode 100644 index 7496a4b..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/.svn/text-base/VerificarCantidadArmas.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.armas.task; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class VerificarCantidadArmas extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - - System.out.println("csolicitud"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - - if (mrequest.get("csolicitud") == null) { - return; - } - String csolicitud=mrequest.get("csolicitud").toString(); - //datos armas atadas a una solicitud - List solicituds = PersistenceHelper.getEntityManager(). - createQuery("select o from TarmSolicitud o where o.pk=:csolicitud",TarmSolicitud.class) - .setParameter("csolicitud", csolicitud) - .getResultList(); - //TgeneParameters parametro = TgeneParameters.find(PersistenceHelper.getEntityManager(), new TgeneParametersKey("NUMERO.ARMAS.FLUJO", 1)); - if(solicituds!=null && solicituds.size()>0 && - solicituds.get(0).getNumerocustodios()!=null && solicituds.get(0).getNumerocustodios()>0){//armas.size()>Integer.parseInt(parametro.getNumbervalue().toString()) - m.put("requierecustodia","A"); - }else{ - m.put("requierecustodia","D"); - } - - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/entries b/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/entries deleted file mode 100644 index 5d34525..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio -svn://172.17.26.185/COMACO - - - -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TraspasoDominio.java -file - - - - -2022-07-28T03:40:40.646794Z -9004700dcde294d3906b4fc89246e95f -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -10486 - -TraspasoDominioAnula.java -file - - - - -2022-07-28T03:40:40.646794Z -7a7a98de8e37369f4d940ebfc616ff54 -2021-05-14T20:43:26.035487Z -4634 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1738 - diff --git a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominio.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominio.java.svn-base deleted file mode 100644 index 99ab201..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominio.java.svn-base +++ /dev/null @@ -1,209 +0,0 @@ -package com.fp.armas.task.traspasodominio; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.sessionbeans.helper.Sequence; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de buscar el grupo para asignar la tarea - * una tarea. - * - * @version 2.1 - */ -public class TraspasoDominio extends TaskAction { - - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings({ "unchecked", "deprecation" }) - @Override - public void assignOwner(Object pParam) throws Exception { - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("Ingresa a traspaso dominio"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - m.put("grupo",null); - throw new ControlArmasException("BPM-0014", "SIN CODIGO", ""); - } - String csolicitud=mrequest.get("csolicitud").toString(); - TarmArmas arma= TarmArmas.find(em, csolicitud); - Listlistaventa= em.createQuery("select p from TarmVentaArmaTem p where p.carma=:carma and p.estado=:estado") - .setParameter("carma", arma.getPk()) - .setParameter("estado", "PENDIENTE") - .getResultList(); - for (TarmVentaArmaTem item : listaventa) { - item.setEstado("APROBADO"); - em.merge(item); - } - arma.setEstadoventa(null); - TarmRegistroArmas registro = TarmRegistroArmas.find(em, arma.getCregistro()); - - //1nuevo TarmRegistroArma del nuevo propietario - TarmRegistroArmas registroArmaComprador= new TarmRegistroArmas(); - registroArmaComprador.setPk(getCodigoRegistro()); - registroArmaComprador.setPersoncode(listaventa.get(0).getPersoncodigo()); - registroArmaComprador.setTiporegistro("VENT"); - registroArmaComprador.setTiporegistrocodigo("TIPOREGISTRO"); - registroArmaComprador.setFcreacion( new java.sql.Date(new Date().getTime())); - em.persist(registroArmaComprador); - //2 - TarmMovimientoArmas tarmMovimientoArmas=new TarmMovimientoArmas(); - tarmMovimientoArmas.setPk(getCodigoMovimiento()); - tarmMovimientoArmas.setCarma(arma.getPk()); - tarmMovimientoArmas.setFactura(listaventa.get(0).getFactura()); - tarmMovimientoArmas.setNoregistro(listaventa.get(0).getNoregistra()); - tarmMovimientoArmas.setFecha(new Timestamp(new Date().getTime())); - tarmMovimientoArmas.setPersoncodecomprador(listaventa.get(0).getPersoncodigo()); - tarmMovimientoArmas.setPersoncodevendedor(registro.getPersoncode()); - tarmMovimientoArmas.setTipomovimientocodigo("TIPOMOVIMIENTO"); - tarmMovimientoArmas.setTipomovimiento("VENT"); - tarmMovimientoArmas.setJustificacion(listaventa.get(0).getJustificacion()); - em.persist(tarmMovimientoArmas);em.flush(); - - //3 Se genera un registro TarmTotalPersona del que vende - TarmTotalPersona totalPersonaVendedor =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodevendedor()); - totalPersonaVendedor.setCarma(arma.getPk()); - totalPersonaVendedor.setIngresoegreso("EGR"); - totalPersonaVendedor.setFecha(new Timestamp(new Date().getTime())); - - //if(arma.getCantidad()!=null && arma.getCantidad()>0 && arma.getValorAux()>0 ){ - totalPersonaVendedor.setCantidadmovimiento(new BigDecimal(arma.getCantidad())); - if(totalPersonaVendedor.getTotal()==null){ - totalPersonaVendedor.setTotal(new BigDecimal(arma.getCantidad())); - } - //} -// if(arma.getPeso()!=null && arma.getPeso().compareTo(new BigDecimal(0))>0 && -// arma.getPesoAux()!=null && arma.getPesoAux().compareTo(new BigDecimal(0))>0){ -// totalPersonaVendedor.setCantidadmovimiento(arma.getPesoAux()); -// if(totalPersonaVendedor.getTotal()==null){ -// totalPersonaVendedor.setTotal(arma.getPeso()); -// } -// } - totalPersonaVendedor.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaVendedor.setSaldoanterior(totalPersonaVendedor.getTotal()); - totalPersonaVendedor.setTotal(totalPersonaVendedor.getTotal().subtract(totalPersonaVendedor.getCantidadmovimiento())); - totalPersonaVendedor.setPk(getCtotal()); - em.merge(totalPersonaVendedor);em.flush(); - - //3.1. Se genera un registro de ING para el comprador - TarmTotalPersona totalPersonaComprador =totalPersona(em,arma.getCtipoarmaexplosivo(),tarmMovimientoArmas.getPersoncodecomprador()); - totalPersonaComprador.setCarma(arma.getPk()); - totalPersonaComprador.setIngresoegreso("ING"); - Date fechaActual1=new Date(); - fechaActual1.setSeconds(fechaActual1.getSeconds()+2); - totalPersonaComprador.setFecha(new Timestamp(fechaActual1.getTime())); - totalPersonaComprador.setCantidadmovimiento(new BigDecimal(arma.getCantidad())); - if(totalPersonaComprador.getTotal()==null){ - totalPersonaComprador.setTotal(new BigDecimal(0)); - } - - totalPersonaComprador.setCmovimiento(tarmMovimientoArmas.getPk()); - totalPersonaComprador.setSaldoanterior(totalPersonaComprador.getTotal()); - totalPersonaComprador.setTotal(totalPersonaComprador.getTotal().add(totalPersonaComprador.getCantidadmovimiento())); - totalPersonaComprador.setPk(getCtotal()); - em.merge(totalPersonaComprador); - - - //4 se genera un registro de arma con lo que se vende - TarmArmas armaVende= (TarmArmas)arma.cloneMe(); - armaVende.setPk(getCodigoArmas()); - armaVende.setEstado("VEND"); - armaVende.setFecharegistro(new java.sql.Date(new Date().getTime())); - if(armaVende.getCantidad()!=null && armaVende.getCantidad()>0 && armaVende.getValorAux()>0 ){ - armaVende.setCantidad(armaVende.getValorAux()); - } - if(armaVende.getPeso()!=null && armaVende.getPeso().compareTo(new BigDecimal(0))>0 && - armaVende.getPesoAux()!=null && armaVende.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaVende.setPeso(armaVende.getPesoAux()); - } - em.persist(armaVende); - - //4.1 Nuevo registro Arma con el nuevo propietario - TarmArmas armaNuevoPropietario= (TarmArmas)arma.cloneMe(); - armaNuevoPropietario.setPk(getCodigoArmas()); - armaNuevoPropietario.setCregistro(registroArmaComprador.getPk()); - armaNuevoPropietario.setEstado("REG"); - Date fechaActual=new Date(); - fechaActual.setSeconds(fechaActual.getSeconds()+2); - armaNuevoPropietario.setFecharegistro(new java.sql.Date(fechaActual.getTime())); - if(armaNuevoPropietario.getCantidad()!=null && armaNuevoPropietario.getCantidad()>0 && armaNuevoPropietario.getValorAux()>0 ){ - armaNuevoPropietario.setCantidad(armaNuevoPropietario.getValorAux()); - } - if(armaNuevoPropietario.getPeso()!=null && armaNuevoPropietario.getPeso().compareTo(new BigDecimal(0))>0 && - armaNuevoPropietario.getPesoAux()!=null && armaNuevoPropietario.getPesoAux().compareTo(new BigDecimal(0))>0){ - armaNuevoPropietario.setPeso(armaNuevoPropietario.getPesoAux()); - } - em.persist(armaNuevoPropietario); - - } - - private String getCodigoArmas() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CARMA").toString(); - return codigoArma; - } - private Long getCodigoRegistro() throws Exception { - Sequence sequence = new Sequence(); - Long codigo = sequence.getNextValue("CREGISTRO").longValue(); - return codigo; - } - private String getCodigoMovimiento() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CMOVIMIENTO").toString(); - return codigoArma; - } - private String getCtotal() throws Exception { - Sequence sequence = new Sequence(); - String codigoArma = sequence.getNextValue("CTOTAL").toString(); - return codigoArma; - } - public TarmTotalPersona totalPersona(EntityManager em,String ctipoarmaexplosivo,Integer personcodigo) throws Exception{ - TarmTipoArmaExplosivo armaExplosivo= TarmTipoArmaExplosivo.find(em,ctipoarmaexplosivo); - - String sql ="select t from TarmTotalPersona t where t.clase='"+armaExplosivo.getClase()+"' and t.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t.personcodigo="+personcodigo+" and t.fecha =(select max(t1.fecha) from TarmTotalPersona t1" - + " where t1.clase='"+armaExplosivo.getClase()+"' and t1.tipoarmaexplosivo='"+armaExplosivo.getTipoarmaexplosivo()+"' and t1.unidadmedidapeso='"+armaExplosivo.getUnidadmedidapeso()+"' " - + " and t1.personcodigo="+personcodigo+")"; - System.out.println("query totalPersoan....:"+sql); - ListtarmTotalPersonas= em.createQuery(sql,TarmTotalPersona.class).getResultList(); - if(tarmTotalPersonas!=null && tarmTotalPersonas.size()>0){ - TarmTotalPersona total=(TarmTotalPersona)tarmTotalPersonas.get(0).cloneMe(); - total.setPk(null); - return total; - }else{ - TarmTotalPersona totalPersona= new TarmTotalPersona(); - totalPersona.setClase(armaExplosivo.getClase()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(armaExplosivo.getTipoarmaexplosivo()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setUnidadmedidapeso(armaExplosivo.getUnidadmedidapeso()); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setPersoncodigo(personcodigo); - totalPersona.setTotal(null); - totalPersona.setSaldoanterior(new BigDecimal(0)); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - return totalPersona; - } - } - -} diff --git a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominioAnula.java.svn-base b/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominioAnula.java.svn-base deleted file mode 100644 index 04a315d..0000000 --- a/base/business/armas/src/main/java/com/fp/armas/task/traspasodominio/.svn/text-base/TraspasoDominioAnula.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -package com.fp.armas.task.traspasodominio; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; - -import com.fp.armas.rules.exception.ControlArmasException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.simple.action.TaskAction; - -/** - * - * @version 2.1 - */ -public class TraspasoDominioAnula extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - EntityManager em=PersistenceHelper.getEntityManager(); - System.out.println("Ingresa a traspaso dominio"); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - m.put("grupo",null); - throw new ControlArmasException("BPM-0014", "SIN CODIGO", ""); - } - String csolicitud=mrequest.get("csolicitud").toString(); - TarmArmas arma= TarmArmas.find(em, csolicitud); - Listlistaventa= em.createQuery("select p from TarmVentaArmaTem p where p.carma=:carma and p.estado=:estado") - .setParameter("carma", arma.getPk()) - .setParameter("estado", "PENDIENTE") - .getResultList(); - for (TarmVentaArmaTem item : listaventa) { - item.setEstado("RECHAZADO"); - em.merge(item); - } - arma.setEstadoventa(null); - em.merge(arma); - } - -} diff --git a/base/business/armas/src/test/.svn/entries b/base/business/armas/src/test/.svn/entries deleted file mode 100644 index fc8c7bd..0000000 --- a/base/business/armas/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/business/armas/src/test/java/.svn/entries b/base/business/armas/src/test/java/.svn/entries deleted file mode 100644 index b7f60cc..0000000 --- a/base/business/armas/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/armas/src/test/java/com/.svn/entries b/base/business/armas/src/test/java/com/.svn/entries deleted file mode 100644 index b77c720..0000000 --- a/base/business/armas/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/armas/src/test/java/com/fp/.svn/entries b/base/business/armas/src/test/java/com/fp/.svn/entries deleted file mode 100644 index f1ca8b7..0000000 --- a/base/business/armas/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/business/armas/src/test/java/com/fp/base/.svn/entries b/base/business/armas/src/test/java/com/fp/base/.svn/entries deleted file mode 100644 index e46be4c..0000000 --- a/base/business/armas/src/test/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -business -dir - diff --git a/base/business/armas/src/test/java/com/fp/base/business/.svn/entries b/base/business/armas/src/test/java/com/fp/base/business/.svn/entries deleted file mode 100644 index 22dd0de..0000000 --- a/base/business/armas/src/test/java/com/fp/base/business/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/armas/src/test/java/com/fp/base/business -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/general/.svn/dir-prop-base b/base/business/general/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/business/general/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/business/general/.svn/entries b/base/business/general/.svn/entries deleted file mode 100644 index dc8bad0..0000000 --- a/base/business/general/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:44.709812Z -d02ec7e8d99f8e48b344919ea74aca64 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1787 - diff --git a/base/business/general/.svn/text-base/pom.xml.svn-base b/base/business/general/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 540e64b..0000000 --- a/base/business/general/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,53 +0,0 @@ - - - - business - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.business - general - general - - - com.fp.base.business - person - 2.1 - - - com.fp.base.persistence - pgeneral - 2.1 - - - com.fp.base - sessionbeans - 2.1 - - - quartz - quartz - 1.5.2-brew - provided - - - com.fp.base.bpm - bpmlib - 2.1 - - - com.fp.base.bpm - simple - 2.1 - - - - - diff --git a/base/business/general/src/.svn/entries b/base/business/general/src/.svn/entries deleted file mode 100644 index cd45d5b..0000000 --- a/base/business/general/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/general/src/main/.svn/entries b/base/business/general/src/main/.svn/entries deleted file mode 100644 index 5020924..0000000 --- a/base/business/general/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/general/src/main/java/.svn/entries b/base/business/general/src/main/java/.svn/entries deleted file mode 100644 index 53fda76..0000000 --- a/base/business/general/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/general/src/main/java/com/.svn/entries b/base/business/general/src/main/java/com/.svn/entries deleted file mode 100644 index fe7a46d..0000000 --- a/base/business/general/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/general/src/main/java/com/fp/.svn/entries b/base/business/general/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 12e77bf..0000000 --- a/base/business/general/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -general -dir - diff --git a/base/business/general/src/main/java/com/fp/general/.svn/entries b/base/business/general/src/main/java/com/fp/general/.svn/entries deleted file mode 100644 index 8733576..0000000 --- a/base/business/general/src/main/java/com/fp/general/.svn/entries +++ /dev/null @@ -1,64 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -keygen -dir - -application -dir - -db -dir - -security -dir - -rules -dir - -score -dir - -exception -dir - -rates -dir - -record -dir - -scheduler -dir - -templates -dir - diff --git a/base/business/general/src/main/java/com/fp/general/application/.svn/entries b/base/business/general/src/main/java/com/fp/general/application/.svn/entries deleted file mode 100644 index da3f462..0000000 --- a/base/business/general/src/main/java/com/fp/general/application/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/application -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -OfficerDescription.java -file - - - - -2022-07-28T03:40:43.328806Z -bba1e2ab895cb0df78b061a8c8c21380 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1186 - -ClientApproval.java -file - - - - -2022-07-28T03:40:43.328806Z -907ec788d08406b4394c87e68d5e7322 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3997 - diff --git a/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/ClientApproval.java.svn-base b/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/ClientApproval.java.svn-base deleted file mode 100644 index dcd63f7..0000000 --- a/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/ClientApproval.java.svn-base +++ /dev/null @@ -1,113 +0,0 @@ -package com.fp.general.application; - -import java.util.List; - -import com.fp.bpmlib.task.client.TaskUtil; -import com.fp.common.helper.BeanManager; -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.auth.TgeneSolicitudeClientdata; -import com.fp.simple.dto.Responses; - -/** - * Calse que valida que este revisado los datos de clientes. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class ClientApproval extends TransactionRule { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - List ldata = pSaveRequest.getSaveBeanModifiedRecords("TGENESOLICITUDECLIENTDATA"); - if ((ldata == null) || ldata.isEmpty()) { - return pSaveRequest; - } - TgeneSolicitudeClientdata client = (TgeneSolicitudeClientdata) ldata.get(0); - List ldatabasedata = TgeneSolicitudeClientdata.find(PersistenceHelper.getEntityManager(), client.getPk() - .getSolicitudnumber(), client.getPk().getSolicitudsequence()); - if ((pSaveRequest.get(TaskUtil.BPM_TID) != null) && this.validate(ldata, ldatabasedata)) { - pSaveRequest.put(TaskUtil.BPM_STATUS, Responses.OK.getCode()); - } else { - pSaveRequest.put(TaskUtil.BPM_STATUS, null); - pSaveRequest.put(TaskUtil.BPM_TID, null); - } - return pSaveRequest; - } - - /** - * Verifica que los datos de de cleintes esten aprobados. - * - * @param ldata Datos de aprobacion que llegan en el request. - * @param ldatabasedata Datos de aprobacion que almacenados en la base de datos. - * @return boolean - * @throws Exception - */ - private boolean validate(List ldata, List ldatabasedata) throws Exception { - if (!this.validateData(ldata)) { - return false; - } - for (TgeneSolicitudeClientdata obj : ldatabasedata) { - if (!this.validateByRecord(obj, ldata)) { - return false; - } - } - return true; - } - - /** - * Valida que la informacion que llega en el request este aprobada, si no esta aprobada retorna false. - * - * @param ldata Datos de aprobacion que llegan en el request. - * @return boolean - * @throws Exception - */ - private boolean validateData(List ldata) throws Exception { - for (Object object : ldata) { - if (!Constant.ifYes(((TgeneSolicitudeClientdata) object).getChecked())) { - return false; - } - } - return true; - } - - /** - * Valida que el registro de verificacion de datos de clientes este aprobado, sea en los datos que llegan en el - * request o este haya sido aprobado con anterioridad. - * - * @param client Datos de la base a verificar que el registro este aprobado. - * @param ldata Lista de datos de aprobacion que llegan en el request. - * @return boolean. - * @throws Exception - */ - private boolean validateByRecord(TgeneSolicitudeClientdata client, List ldata) throws Exception { - for (Object object : ldata) { - TgeneSolicitudeClientdata obj = (TgeneSolicitudeClientdata) object; - if (BeanManager.compareObject(client.getPk(), obj.getPk())) { - return true; - } - } - if (Constant.ifYes(client.getChecked())) { - return true; - } - return false; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/OfficerDescription.java.svn-base b/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/OfficerDescription.java.svn-base deleted file mode 100644 index 6e2c458..0000000 --- a/base/business/general/src/main/java/com/fp/general/application/.svn/text-base/OfficerDescription.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.general.application; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.gene.TgeneSolicitude; - -/** - * Clase que se encarga de obtener la descripcin del oficial de la solicitud. - * - * @author Andres E. Carpio - * @version 1.0 - */ -public class OfficerDescription extends QueryRule { - /** Constante SQL. */ - private final static String SQL = "select name from TcustPersonDetail where personcode=(select personcode from TsafeUser where usercode=:userCode)"; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - TgeneSolicitude tgeneSolicitude = (TgeneSolicitude) response.get("TGENESOLICITUDE"); - - javax.persistence.Query qry = PersistenceHelper.createNativeQuery(OfficerDescription.SQL); - qry.setParameter("userCode", tgeneSolicitude.getOfficer()); - - tgeneSolicitude.addAddtionalInfo("officerdescription", qry.getResultList()); - - return pQueryRequest; - - } -} diff --git a/base/business/general/src/main/java/com/fp/general/db/.svn/entries b/base/business/general/src/main/java/com/fp/general/db/.svn/entries deleted file mode 100644 index 4695857..0000000 --- a/base/business/general/src/main/java/com/fp/general/db/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:43.361806Z -297d9391100f75c79dee906906b90bfb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -19512 - diff --git a/base/business/general/src/main/java/com/fp/general/db/.svn/text-base/DataHelper.java.svn-base b/base/business/general/src/main/java/com/fp/general/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 87c4a27..0000000 --- a/base/business/general/src/main/java/com/fp/general/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,473 +0,0 @@ -package com.fp.general.db; - -import java.sql.Date; -import java.sql.Timestamp; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.CalculationBase; -import com.fp.common.helper.Constant; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.cache.CacheManager; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.acco.TgeneAccount; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatusKey; -import com.fp.persistence.pgeneral.auth.TgeneSolicitudeClientdata; -import com.fp.persistence.pgeneral.auth.TgeneSolicitudeExceptions; -import com.fp.persistence.pgeneral.charge.TgeneCharges; -import com.fp.persistence.pgeneral.charge.TgeneSubProductCharges; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneSolicitude; -import com.fp.persistence.pgeneral.gene.TgeneSolicitudeRelationship; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelTran; -import com.fp.persistence.pgeneral.menu.TgeneMenuProfile; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; -import com.fp.persistence.pgeneral.product.TgeneSubprodClientData; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; -import com.fp.persistence.pgeneral.score.TgenePercentScore; -import com.fp.persistence.pgeneral.score.TgenePercentScoreKey; -import com.fp.persistence.pgeneral.score.TgeneScoreRank; - -/** - * Clase utilitaria que maneje sql y hql utiliada en el proyecto general. - * - * @author Jorge Vaca - * @version 2.1 - */ -public final class DataHelper { - - /** Almacena una instancia de DataHelper. */ - private static DataHelper cache; - - /** - * Entrega una instancia de DataHelper. - * - * @return DataHelper - */ - public static DataHelper getInstance() { - if (DataHelper.cache != null) { - return DataHelper.cache; - } - synchronized (DataHelper.class) { - if (DataHelper.cache == null) { - DataHelper.cache = new DataHelper(); - } - } - return DataHelper.cache; - } - - /** - * Metodo que entrega datos de una sucursal definidos en TgeneBranch. - * - * @param pBranch Codigo de sucursal. - * @param pCompany Compania a la que pertenece la cuenta. - * @return TgeneBranch - * @throws Exception - */ - public TgeneBranch getTgeneBranch(Integer pBranch, Integer pCompany) throws Exception { - return TgeneBranch.find(PersistenceHelper.getEntityManager(), pBranch, pCompany); - } - - /** - * Metodo que entrega datos de TgeneMenuProfile. - * - * @param pProfile Codigo de perfil del usuario. - * @return TgeneMenuProfile - * @throws Exception - */ - public TgeneMenuProfile getTgeneMenuProfile(String pProfile) throws Exception { - return TgeneMenuProfile.findByCodePerfilUsuario(PersistenceHelper.getEntityManager(), pProfile); - } - - /** - * Metodo que entrega descripcion del primer nivel del menu. - * - * @param pmenucode Codigo de menu. - * @param pLevel Codigo de nivel. - * @param planguagecode Codigo de lenguaje del usuario. - * @return TgeneMenuLevelDesc - * @throws Exception - */ - public TgeneMenuLevelDesc getTgeneMenuLevelDesc(Integer pmenucode, Integer pLevel, String planguagecode) throws Exception { - return TgeneMenuLevelDesc.find(PersistenceHelper.getEntityManager(), pmenucode, pLevel, planguagecode); - } - - /** - * Metodo que entrega la definicion del primer nivel del menu. - * - * @param pMenucode Codigo de menu. - * @return List - * @throws Exception - */ - public List getTgeneMenuLevel(Integer pMenucode) throws Exception { - return TgeneMenuLevel.findByMenuCode(PersistenceHelper.getEntityManager(), pMenucode); - } - - /** - * Metodo que entrega uns lista de definicion del menu de segundo nivel. - * - * @param pMenucode Codigo de menu. - * @param pLevel Codigo del primer nivel. - * @return List - * @throws Exception - */ - public List getTgeneMenuSuLevels(Integer pMenucode, Integer pLevel) throws Exception { - return TgeneMenuSubLevel.find(PersistenceHelper.getEntityManager(), pMenucode, pLevel); - } - - /** - * Metodo que emtrega la descripcion de un subnivel del menu. - * - * @param pmenucode Codigo de menu. - * @param pLevel Codigo de nivel de menu. - * @param pSublevel Codigo de subnivel de menu. - * @param planguagecode Codigo de lenguaje. - * @return TgeneMenuSubLevelDesc - * @throws Exception - */ - public TgeneMenuSubLevelDesc getTgeneMenuSubLevelDesc(Integer pmenucode, Integer pLevel, Integer pSublevel, String planguagecode) - throws Exception { - return TgeneMenuSubLevelDesc.find(PersistenceHelper.getEntityManager(), pmenucode, pLevel, pSublevel, planguagecode); - } - - /** - * Metodo que entrega transacciones asociadas al codigo de menu y codigo de nivel. - * - * @param pMenucode Codigo de menu. - * @param pLevel Codigo de Nivel. - * @return List - * @throws Exception - */ - public List getTgeneMenuLevelTran(Integer pMenucode, Integer pLevel) throws Exception { - return TgeneMenuLevelTran.findByCodeMenuNivel(PersistenceHelper.getEntityManager(), pMenucode, pLevel); - } - - /** - * Metodo que obtiene datos del perfil del usuario. - * - * @param pusercode Codigo de usuario. - * @return TsafeUserProfile - * @throws Exception - */ - public List getTsafeUserProfile(String pusercode) throws Exception { - return TsafeUserProfile.find(PersistenceHelper.getEntityManager(), pusercode); - } - - /** - * Metodo que obtiene datos de un registro del modulo. - * - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @return TgeneModule - * @throws Exception - */ - public TgeneModule getTgeneModule(String pModulecode) throws Exception { - return TgeneModule.find(PersistenceHelper.getEntityManager(), pModulecode); - } - - /** - * Metodo que obtiene datos de un registro del producto. - * - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @return TgeneProduct - * @throws Exception - */ - public TgeneProduct getTgeneProduct(String pModulecode, String pProductcode) throws Exception { - return TgeneProduct.find(PersistenceHelper.getEntityManager(), pModulecode, pProductcode); - } - - /** - * Metodo que obtiene datos de un registro del subproducto. - * - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @param pSubproductcode Codigo de subproducto a obtener datos de la base. - * @return TgeneSubProduct - * @throws Exception - */ - public TgeneSubProduct getTgeneSubProduct(String pModulecode, String pProductcode, String pSubproductcode) throws Exception { - return TgeneSubProduct.find(PersistenceHelper.getEntityManager(), pModulecode, pProductcode, pSubproductcode); - } - - /** - * Metodo que devuelve un registro de la tabla TGENEACCOUNT - * - * @param account Numero de la cuenta - * @param company Compania a la que pertenece la cuenta - * @param dateto Fecha de vigencia de la tarjeta - * @return - */ - public TgeneAccount getTgeneAccount(String account, Integer company, Timestamp dateto) throws Exception { - return TgeneAccount.findByFechaVigenciaTarjeta(PersistenceHelper.getEntityManager(), account, company, dateto); - } - - /** - * Entrega una lista de excepciones de solicitud. - * - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - public List getTgeneSolicitudeExceptions(String pSolicitudenumber, Integer pSolicitudesequence) throws Exception { - return TgeneSolicitudeExceptions.findBySolicitudeNumber(PersistenceHelper.getEntityManager(), pSolicitudenumber, pSolicitudesequence); - } - - /** - * Metodo que entrega una lista de datos requeridos de clientes por producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - public List getTgeneSubprodClientData(String pModuleCode, String pProductCode, String pSubproductCode, - String pPersontype, String pRelationshipcode) throws Exception { - return TgeneSubprodClientData.findByProduct(PersistenceHelper.getEntityManager(), pModuleCode, pProductCode, pSubproductCode, pPersontype, - pRelationshipcode); - } - - /** - * Metodo que entrega una lista de datos activos requeridos de clientes por producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - public List getTgeneSubprodClientDataActive(String pModuleCode, String pProductCode, String pSubproductCode, - String pPersontype, String pRelationshipcode) throws Exception { - return TgeneSubprodClientData.findByProductActive(PersistenceHelper.getEntityManager(), pModuleCode, pProductCode, pSubproductCode, - pPersontype, pRelationshipcode); - } - - /** - * Entrega una lista de clientes relacionados a la solicitud. - * - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - public List getTgeneSolicitudeRelationship(String pSolicitudenumber, Integer pSolicitudesequence) throws Exception { - return TgeneSolicitudeRelationship.findBySolicitudeNumber(PersistenceHelper.getEntityManager(), pSolicitudenumber, pSolicitudesequence); - } - - /** - * Metodo que devuelve un objeto de tipo TgeneSolicitudeClientdata - * - * @param solicitudnumber - * @param solicitudsequence - * @param title - * @param personcode - * @return - * @throws Exception - */ - public TgeneSolicitudeClientdata getTgeneSolicitudeClientdata(String solicitudnumber, Integer solicitudsequence, String title, Integer personcode) - throws Exception { - return TgeneSolicitudeClientdata.find(PersistenceHelper.getEntityManager(), solicitudnumber, solicitudsequence, title, personcode); - } - - /** - * Metodo que devuelve un objeto de tipo TgeneSolicitude - * - * @param solicitudnumber - * @param solicitudsequence - * @return - * @throws Exception - */ - public TgeneSolicitude getTgeneSolicitude(String solicitudnumber, Integer solicitudsequence) throws Exception { - return TgeneSolicitude.find(PersistenceHelper.getEntityManager(), solicitudnumber, solicitudsequence); - } - - /** - * Metodo que devuelve un objeto de tipo TgeneSubprodClientData - * - * @param modulecode - * @param productcode - * @param subproductcode - * @param persontype - * @param relationshipcode - * @param title - * @return - * @throws Exception - */ - public TgeneSubprodClientData getTgeneSubprodClientData(String modulecode, String productcode, String subproductcode, String persontype, - String relationshipcode, String title) throws Exception { - return TgeneSubprodClientData.find(PersistenceHelper.getEntityManager(), modulecode, productcode, subproductcode, persontype, - relationshipcode, title); - } - - /** - * Metodo que obtiene datos de un registro del subproducto. - * - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @param pSubproductcode Codigo de subproducto a obtener datos de la base. - * @return TgeneSubProduct - * @throws Exception - */ - public TsafeUserDetail getTsafeUserDetail(String usercode) throws Exception { - return TsafeUserDetail.findByUserCode(PersistenceHelper.getEntityManager(), usercode); - } - - /** - * Entrega un objeto con la calificacion a asociar a un prestamo, dado el tipo de credito, estatus operativo y el - * numero de dias de vencida una operacion. - * - * @param pCreditType Codigo de tipo de credito Consumo, Comercial. - * @param pOperationStatus Cordo de estatus de operacion, Original, restructurada - * @param pModuleCode Modulo al que pertenece el estado operativo. - * @param processdate Fecha en la cual se realiza la calificacion. - * @param expirationdate Fecha desde la cual esta vencido el credito. - * @return TgeneScoreRank - * @throws Exception - */ - public TgeneScoreRank getTgeneScoreRank(String pCreditType, String pOperationStatus, String pModuleCode, Date processdate, Date expirationdate) - throws Exception { - APPDates datefrom = null; - APPDates dateto = null; - int days = 0; // Si la fvencimiento esta en el futuro, indica que el prestamo tiene la mejor calificacion. - if (processdate.compareTo(expirationdate) >= 0) { - dateto = new APPDates(processdate); - datefrom = new APPDates(expirationdate); - dateto.setBase(CalculationBase.B365365); - days = dateto.substract(datefrom); - } - - TgeneScoreRank obj = null; - - List ldata = this.getTgeneScoreRank(pCreditType, pOperationStatus, pModuleCode); - - if ((ldata == null) || ldata.isEmpty()) { - return obj; - } - obj = ldata.get(0); - for (TgeneScoreRank object : ldata) { - if ((days >= object.getDaysfrom()) && (days <= object.getDaysto())) { - obj = object; - break; - } - } - return obj; - } - - /** - * Entrega una lista con la calificacion a asociar a un prestamo, dado el tipo de credito, estatus operativo y el - * numero de dias de vencida una operacion. - * - * @param pCreditType Codigo de tipo de credito Consumo, Comercial. - * @param pOperationStatus Cordo de estatus de operacion, Original, restructurada - * @param pModuleCode Modulo al que pertenece el estado operativo. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public List getTgeneScoreRank(String pCreditType, String pOperationStatus, String pModuleCode) throws Exception { - List ldata = null; - String key = pCreditType + pOperationStatus + pModuleCode; - CacheManager cm = CacheManager.getInstance(); - ldata = (List) cm.getData("TgeneScoreRank", key); - if (ldata == null) { - Map mTgeneScoreRank = cm.getMapDefinition("TgeneScoreRank"); - ldata = TgeneScoreRank.find(PersistenceHelper.getEntityManager(), pCreditType, pOperationStatus, pModuleCode); - mTgeneScoreRank.put(key, ldata); - cm.putData("TgeneScoreRank", mTgeneScoreRank); - } - return ldata; - } - - /** - * Entrega un objeto con el porcentaje de provision de acuerdo a la calificacion tipo de credito. - * - * @param pScoreScode Codigo de calificacion de cartera. A,B,C,D - * @param pCreditType Codigo de tipo de credito, Consumo, COmercial. - * @return TgenePercentScore - * @throws Exception - */ - public TgenePercentScore getTgenePercentScore(String pScoreScode, String pCreditType) throws Exception { - TgenePercentScore obj = null; - String key = pScoreScode + pCreditType; - CacheManager cm = CacheManager.getInstance(); - obj = (TgenePercentScore) cm.getData("TgenePercentScore", key); - if (obj == null) { - Map mTgenePercentScore = cm.getMapDefinition("TgenePercentScore"); - TgenePercentScoreKey k = new TgenePercentScoreKey(pScoreScode, pCreditType, FormatDates.getDefaultExpiryTimestamp()); - obj = TgenePercentScore.find(PersistenceHelper.getEntityManager(), k); - mTgenePercentScore.put(key, obj); - cm.putData("TgenePercentScore", mTgenePercentScore); - } - return obj; - } - - /** - * Entrega una lista de cargos por subproducto. - * - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - public List getTgeneSubProductChargesByCompany(Integer pCompany) throws Exception { - return TgeneSubProductCharges.findByCompany(PersistenceHelper.getEntityManager(), pCompany); - } - - /** - * Entrega una lista de cargos por modulo. - * - * @param pModuleCode - * @return - * @throws Exception - */ - public List getTgeneSubProductChargesByModule(String pModuleCode) throws Exception { - return TgeneSubProductCharges.findByModule(PersistenceHelper.getEntityManager(), pModuleCode); - } - - /** - * Entrega una lista de cargos por modulo. - * - * @param pModuleCode - * @return - * @throws Exception - */ - public List getTgeneChargesByModule(String pModuleCode) throws Exception { - return TgeneCharges.findByModule(PersistenceHelper.getEntityManager(), pModuleCode); - } - - /** - * Metodo que entrega la descripcion del status de una garantia - * - * @param pModuleCode - * @param pStatuscode - * @return - * @throws Exception - */ - public TgeneAccountStatus getTgeneAccountStatus(String pModuleCode, String pStatuscode) throws Exception { - TgeneAccountStatus obj = null; - String key = pModuleCode + Constant.SEPARATOR + pStatuscode; - CacheManager cm = CacheManager.getInstance(); - obj = (TgeneAccountStatus) cm.getData("TgeneAccountStatus", key); - if (obj == null) { - Map mTgeneAccountStatus = cm.getMapDefinition("TgeneAccountStatus"); - TgeneAccountStatusKey keyp = new TgeneAccountStatusKey(pModuleCode, pStatuscode); - obj = TgeneAccountStatus.find(PersistenceHelper.getEntityManager(), keyp); - mTgeneAccountStatus.put(key, obj); - cm.putData("TgeneAccountStatus", (Object) mTgeneAccountStatus); - } - return obj; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/exception/.svn/entries b/base/business/general/src/main/java/com/fp/general/exception/.svn/entries deleted file mode 100644 index d9a3531..0000000 --- a/base/business/general/src/main/java/com/fp/general/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ExceptionMessage.java -file - - - - -2022-07-28T03:40:44.085809Z -eccc8bfacf4086cc14c4851fce764443 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -831 - diff --git a/base/business/general/src/main/java/com/fp/general/exception/.svn/text-base/ExceptionMessage.java.svn-base b/base/business/general/src/main/java/com/fp/general/exception/.svn/text-base/ExceptionMessage.java.svn-base deleted file mode 100644 index 0e783e2..0000000 --- a/base/business/general/src/main/java/com/fp/general/exception/.svn/text-base/ExceptionMessage.java.svn-base +++ /dev/null @@ -1,26 +0,0 @@ -package com.fp.general.exception; - -import com.fp.common.exception.AbstractExceptionMessage; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.result.TgeneResults; - -/** - * Clase encargada de entregar la descripcion de un mensaje aplicativo. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class ExceptionMessage extends AbstractExceptionMessage { - - /* - * (non-Javadoc) - * - * @see com.fp.common.exception.AbstractExceptionMessage#getMessage(java.lang.String, java.lang.String) - */ - @Override - public String getMessage(String aplicationcode, String language) throws Exception { - TgeneResults result = TgeneResults.find(PersistenceHelper.getEntityManager(), aplicationcode, language); - return result.getDescription(); - } - -} \ No newline at end of file diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/entries b/base/business/general/src/main/java/com/fp/general/helper/.svn/entries deleted file mode 100644 index e2b4364..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MenuHelper.java -file - - - - -2022-07-28T03:40:43.221805Z -a0bffd8af3e164ba15aa068dc6c6a11b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8495 - -AccountNumber.java -file - - - - -2022-07-28T03:40:43.221805Z -8b2d173817ed55cf10074ce501e1ff91 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9243 - -StringHelper.java -file - - - - -2022-07-28T03:40:43.221805Z -0b147918abcb07b306415f4d418745e5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18748 - -PropertiesHelper.java -file - - - - -2022-07-28T03:40:43.221805Z -e747e2d252ecfc43369c563c75af0262 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5365 - -SolicitudeNumber.java -file - - - - -2022-07-28T03:40:43.222805Z -89557b63e2e46244592cda491c5524fd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3130 - -ArrayHelper.java -file - - - - -2022-07-28T03:40:43.222805Z -f0f5486ed0e723f62387b6fc4f92900f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10589 - diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/AccountNumber.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/AccountNumber.java.svn-base deleted file mode 100644 index 8324100..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/AccountNumber.java.svn-base +++ /dev/null @@ -1,195 +0,0 @@ -package com.fp.general.helper; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.exception.CommonException; -import com.fp.dto.data.SaveData; -import com.fp.dto.rules.TransactionRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.acco.TgeneAccoNumStructure; -import com.fp.persistence.pgeneral.acco.TgeneAccountSequence; -import com.fp.persistence.pgeneral.acco.TgeneAccountSequenceKey; -import com.fp.persistence.pgeneral.acco.TgeneSequStructDetail; -import com.fp.persistence.pgeneral.acco.TgeneSequentialModule; - -/** - * Clase que se encarga de entregar el nuemro de cuenta asociado a un susbistema.
      - * La secuencia de cuenta se puede definir por modulo, producto, subproducto, branch, oficina y compania - * La estructura de numero de cuenta esta definida en la tabla TGENEACCONUMSTRUCTURE - * La estructura de secuencia esta definida en TGENESEQUSTRUCT Y TGENESEQUSTRUCTDETAIL - * La relacion entre el modulo y el secuencial esta definida en la tabla TGENESEQUENTIALMODULE - * La tabla TGENEACCOUNTSEQUENCE contiene el ultimo secuencial utilizado, sino existe un registro en esta tabla el sistema lo - * crea automaticamente - * Cuando se llama a la rutina esta se ejecuta en una session de base de datos diferente, obtiene el numero de cuenta y - * graba el registro en la base de datos, con el fin de no tener bloqueos cuando se realiza multiples autalizacions de - * cuenta. - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class AccountNumber extends TransactionRule { - - /** - * Map en el cual se almacenan los parametros que llegan al metodo que obtien la cuenta, para posteriormente - * utilizarlo en la generacion del numero de cuenta. - */ - private Map mparam = new HashMap(); - - /** Numero de caracteres de la secuencia de la cuenta. */ - private Integer sequencelength = 0; - - /** - * Metodo que entrega el numero de cuenta a crear. - * - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @param pSubproduct Codigo de subproducto. - * @param pBranch Codigo de sucursal. - * @param pOffice Codigo de oficina. - * @param pCompany Codigo de compania. - * @return String - * @throws Exception - */ - public String getAccount(String pModule, String pProduct, String pSubproduct, Integer pBranch, Integer pOffice, Integer pCompany) - throws Exception { - this.parametersToMap(pModule, pProduct, pSubproduct, pBranch, pOffice, pCompany); - String accountnumber = ""; - try { - List ldata = TgeneAccoNumStructure.find(PersistenceHelper.getEntityManager(), pModule); - if (ldata.size() == 0) { - throw new GeneralException("GENE-0039", "ESTRUCTURA DE NUMERO DE CUENTA NO DEFINIDA EN TGENEACCONUMSTRUCTURE MODULO: {0}", pModule); - } - for (TgeneAccoNumStructure obj : ldata) { - if (obj.getPk().getStructureaccountcatalog().compareTo("SEQUENCE") == 0) { - this.sequencelength = obj.getSizefield(); - String sec = this.process(pModule, pProduct, pSubproduct, pBranch, pOffice, pCompany); - accountnumber = accountnumber + sec; - continue; - } - String data = this.mparam.get(obj.getPk().getStructureaccountcatalog()).toString(); - accountnumber = accountnumber + this.completeDataLeft(data, obj.getSizefield(), "0"); - } - if (this.sequencelength == 0) { - throw new GeneralException("GENE-0036", "NUMERO DE CARACTERES DEL SECUENCIAL NO DEFINIDO EN TGENEACCONUMSTRUCTURE MODULO: {0}", pModule); - } - SaveData.getMap().put("ACCOUNT", accountnumber); - return accountnumber; - } catch (Exception e) { - throw e; - } - } - - /** - * Metodo que obtiene la secuencia de cuenta por modulo. - * - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @param pSubproduct Codigo de subproducto. - * @param pBranch Codigo de sucursal. - * @param pOffice Codigo de oficina. - * @param pCompany Codigo de compania. - * @return String - * @throws Exception - */ - private String process(String pModule, String pProduct, String pSubproduct, Integer pBranch, Integer pOffice, Integer pCompany) throws Exception { - TgeneAccountSequence tgas = null; - try { - tgas = TgeneAccountSequence.findWithhold(PersistenceHelper.getEntityManager(), pModule, pProduct, pSubproduct, pBranch, - pOffice, pCompany); - } catch (CommonException e) { - if (e.getCode().compareTo("CORE-0025") == 0) { - TgeneSequentialModule sequByModule = TgeneSequentialModule.find(PersistenceHelper.getEntityManager(), pModule); - if (sequByModule == null) { - throw new GeneralException("GENE-0037", "ESTRUCTURA DE SECUENCIAL NO DEFINIDA EN TGENESEQUENTIALMODULE MODULO: {0}", pModule); - } - TgeneAccountSequence accountSequence = new TgeneAccountSequence(); - Integer sequence = Integer.valueOf(TgeneAccountSequence.getAmountSequences(PersistenceHelper.getEntityManager(), pModule)); - sequence++; - TgeneAccountSequenceKey accountSequenceKey = new TgeneAccountSequenceKey(pModule,sequence.toString()); - accountSequence.setPk(accountSequenceKey); - accountSequence.setSequentialnumber("0"); - List sequStruct = TgeneSequStructDetail.find(PersistenceHelper.getEntityManager(), sequByModule.getSequcode()); - if (sequStruct.size() == 0) { - throw new GeneralException("GENE-0038", "ESTRUCTURA DE SECUENCIAL NO DEFINIDA EN TGENESEQUESTRUCTDETAIL MODULO: {0}", pModule); - } - for (TgeneSequStructDetail obj : sequStruct) { - if (obj.getPk().getStructureaccountcatalog().compareTo("PRODUCT") == 0) { - accountSequence.setProductcode(pProduct); - } - if (obj.getPk().getStructureaccountcatalog().compareTo("SUBPRODUCT") == 0) { - accountSequence.setSubproductcode(pSubproduct); - } - if (obj.getPk().getStructureaccountcatalog().compareTo("COMPANY") == 0) { - accountSequence.setCompanycode(pCompany); - } - if (obj.getPk().getStructureaccountcatalog().compareTo("BRANCH") == 0) { - accountSequence.setBranchcode(pBranch); - } - if (obj.getPk().getStructureaccountcatalog().compareTo("OFFICE") == 0) { - accountSequence.setOfficecode(pOffice); - } - } - PersistenceHelper.saveOrUpdate(accountSequence); - tgas = accountSequence; - } - } - Integer sec = Integer.valueOf(tgas.getSequentialnumber()); - sec++; - tgas.setSequentialnumber(sec.toString()); - PersistenceHelper.saveOrUpdate(tgas); - - return this.completeDataLeft(sec.toString(), this.sequencelength, "0"); - } - - /** - * Metodo que completa o rellena los valores con la longitud exacta hacia el aldo izquierdo - * - * @param data Valor a completar caracteres. - * @param longitud Longitud total del caracteres. - * @param fillcharacter Caracter de relleno. - * @return String - */ - public String completeDataLeft(String data, int longitud, String fillcharacter) { - if (data == null) { - data = ""; - } - if (longitud == 0) { - return data; - } - if (data.length() > longitud) { - data = data.substring(0, longitud); - return data; - } - int newlongitud = longitud - data.length(); - for (int i = 0; i < newlongitud; i++) { - data = fillcharacter + data; - } - - return data; - } - - /** - * Metodo que crea un map con los parametros de entrada, para luego generar el numero de cuenta. - * - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @param pSubproduct Codigo de subproducto. - * @param pBranch Codigo de sucursal. - * @param pOffice Codigo de oficina. - * @param pCompany Codigo de compania. - * @throws Exception - */ - private void parametersToMap(String pModule, String pProduct, String pSubproduct, Integer pBranch, Integer pOffice, Integer pCompany) - throws Exception { - this.mparam.put("MODULE", pModule); - this.mparam.put("PRODUCT", pProduct); - this.mparam.put("SUBPRODUCT", pSubproduct); - this.mparam.put("BRANCH", pBranch); - this.mparam.put("OFFICE", pOffice); - this.mparam.put("COMPANY", pCompany); - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/ArrayHelper.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/ArrayHelper.java.svn-base deleted file mode 100644 index 5529aae..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/ArrayHelper.java.svn-base +++ /dev/null @@ -1,436 +0,0 @@ -package com.fp.general.helper; - -import java.lang.reflect.Array; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Collection; -import java.util.Iterator; -import java.util.List; - -import org.hibernate.LockMode; -import org.hibernate.LockOptions; -import org.hibernate.type.Type; - -public final class ArrayHelper -{ - - public static final boolean TRUE[] = { - true - }; - public static final boolean FALSE[] = { - false - }; - public static final String EMPTY_STRING_ARRAY[] = new String[0]; - public static final int EMPTY_INT_ARRAY[] = new int[0]; - public static final boolean EMPTY_BOOLEAN_ARRAY[] = new boolean[0]; - public static final Class EMPTY_CLASS_ARRAY[] = new Class[0]; - public static final Object EMPTY_OBJECT_ARRAY[] = new Object[0]; - public static final Type EMPTY_TYPE_ARRAY[] = new Type[0]; - private static int SEED = 23; - private static int PRIME_NUMER = 37; - - public static int indexOf(Object array[], Object object) - { - for(int i = 0; i < array.length; i++) - { - if(array[i].equals(object)) - { - return i; - } - } - - return -1; - } - - public static String[] toStringArray(Object objects[]) - { - int length = objects.length; - String result[] = new String[length]; - for(int i = 0; i < length; i++) - { - result[i] = objects[i].toString(); - } - - return result; - } - - public static String[] fillArray(String value, int length) - { - String result[] = new String[length]; - Arrays.fill(result, value); - return result; - } - - public static int[] fillArray(int value, int length) - { - int result[] = new int[length]; - Arrays.fill(result, value); - return result; - } - - public static LockMode[] fillArray(LockMode lockMode, int length) - { - LockMode array[] = new LockMode[length]; - Arrays.fill(array, lockMode); - return array; - } - - public static LockOptions[] fillArray(LockOptions lockOptions, int length) - { - LockOptions array[] = new LockOptions[length]; - Arrays.fill(array, lockOptions); - return array; - } - - public static String[] toStringArray(Collection coll) - { - return (String[])coll.toArray(new String[coll.size()]); - } - - public static String[][] to2DStringArray(Collection coll) - { - return (String[][])coll.toArray(new String[coll.size()][]); - } - - public static int[][] to2DIntArray(Collection coll) - { - return (int[][])coll.toArray(new int[coll.size()][]); - } - - public static Type[] toTypeArray(Collection coll) - { - return (Type[])coll.toArray(new Type[coll.size()]); - } - - public static int[] toIntArray(Collection coll) - { - Iterator iter = coll.iterator(); - int arr[] = new int[coll.size()]; - int i = 0; - while(iter.hasNext()) - { - arr[i++] = ((Integer)iter.next()).intValue(); - } - return arr; - } - - public static boolean[] toBooleanArray(Collection coll) - { - Iterator iter = coll.iterator(); - boolean arr[] = new boolean[coll.size()]; - int i = 0; - while(iter.hasNext()) - { - arr[i++] = ((Boolean)iter.next()).booleanValue(); - } - return arr; - } - - public static Object[] typecast(Object array[], Object to[]) - { - return Arrays.asList(array).toArray(to); - } - - public static List toList(Object array) - { - if(array instanceof Object[]) - { - return Arrays.asList((Object[])array); - } - int size = Array.getLength(array); - ArrayList list = new ArrayList(size); - for(int i = 0; i < size; i++) - { - list.add(Array.get(array, i)); - } - - return list; - } - - public static String[] slice(String strings[], int begin, int length) - { - String result[] = new String[length]; - System.arraycopy(strings, begin, result, 0, length); - return result; - } - - public static Object[] slice(Object objects[], int begin, int length) - { - Object result[] = new Object[length]; - System.arraycopy(((objects)), begin, ((result)), 0, length); - return result; - } - - public static List toList(Iterator iter) - { - List list = new ArrayList(); - for(; iter.hasNext(); list.add(iter.next())) { } - return list; - } - - public static String[] join(String x[], String y[]) - { - String result[] = new String[x.length + y.length]; - System.arraycopy(x, 0, result, 0, x.length); - System.arraycopy(y, 0, result, x.length, y.length); - return result; - } - - public static String[] join(String x[], String y[], boolean use[]) - { - String result[] = new String[x.length + countTrue(use)]; - System.arraycopy(x, 0, result, 0, x.length); - int k = x.length; - for(int i = 0; i < y.length; i++) - { - if(use[i]) - { - result[k++] = y[i]; - } - } - - return result; - } - - public static int[] join(int x[], int y[]) - { - int result[] = new int[x.length + y.length]; - System.arraycopy(x, 0, result, 0, x.length); - System.arraycopy(y, 0, result, x.length, y.length); - return result; - } - - private ArrayHelper() - { - } - - public static String toString(Object array[]) - { - StringBuffer sb = new StringBuffer(); - sb.append("["); - for(int i = 0; i < array.length; i++) - { - sb.append(array[i]); - if(i < array.length - 1) - { - sb.append(","); - } - } - - sb.append("]"); - return sb.toString(); - } - - public static boolean isAllNegative(int array[]) - { - for(int i = 0; i < array.length; i++) - { - if(array[i] >= 0) - { - return false; - } - } - - return true; - } - - public static boolean isAllTrue(boolean array[]) - { - for(int i = 0; i < array.length; i++) - { - if(!array[i]) - { - return false; - } - } - - return true; - } - - public static int countTrue(boolean array[]) - { - int result = 0; - for(int i = 0; i < array.length; i++) - { - if(array[i]) - { - result++; - } - } - - return result; - } - - public static boolean isAllFalse(boolean array[]) - { - for(int i = 0; i < array.length; i++) - { - if(array[i]) - { - return false; - } - } - - return true; - } - - public static void addAll(Collection collection, Object array[]) - { - collection.addAll(Arrays.asList(array)); - } - - public static int[] getBatchSizes(int maxBatchSize) - { - int batchSize = maxBatchSize; - int n; - for(n = 1; batchSize > 1; n++) - { - batchSize = getNextBatchSize(batchSize); - } - - int result[] = new int[n]; - batchSize = maxBatchSize; - for(int i = 0; i < n; i++) - { - result[i] = batchSize; - batchSize = getNextBatchSize(batchSize); - } - - return result; - } - - private static int getNextBatchSize(int batchSize) - { - if(batchSize <= 10) - { - return batchSize - 1; - } - if(batchSize / 2 < 10) - { - return 10; - } else - { - return batchSize / 2; - } - } - - public static int hash(Object array[]) - { - int length = array.length; - int seed = SEED; - for(int index = 0; index < length; index++) - { - seed = hash(seed, array[index] != null ? array[index].hashCode() : 0); - } - - return seed; - } - - public static int hash(char array[]) - { - int length = array.length; - int seed = SEED; - for(int index = 0; index < length; index++) - { - seed = hash(seed, array[index]); - } - - return seed; - } - - public static int hash(byte bytes[]) - { - int length = bytes.length; - int seed = SEED; - for(int index = 0; index < length; index++) - { - seed = hash(seed, bytes[index]); - } - - return seed; - } - - private static int hash(int seed, int i) - { - return PRIME_NUMER * seed + i; - } - - public static boolean isEquals(Object o1[], Object o2[]) - { - if(o1 == o2) - { - return true; - } - if(o1 == null || o2 == null) - { - return false; - } - int length = o1.length; - if(length != o2.length) - { - return false; - } - for(int index = 0; index < length; index++) - { - if(!o1[index].equals(o2[index])) - { - return false; - } - } - - return true; - } - - public static boolean isEquals(char o1[], char o2[]) - { - if(o1 == o2) - { - return true; - } - if(o1 == null || o2 == null) - { - return false; - } - int length = o1.length; - if(length != o2.length) - { - return false; - } - for(int index = 0; index < length; index++) - { - if(o1[index] != o2[index]) - { - return false; - } - } - - return true; - } - - public static boolean isEquals(byte b1[], byte b2[]) - { - if(b1 == b2) - { - return true; - } - if(b1 == null || b2 == null) - { - return false; - } - int length = b1.length; - if(length != b2.length) - { - return false; - } - for(int index = 0; index < length; index++) - { - if(b1[index] != b2[index]) - { - return false; - } - } - - return true; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/MenuHelper.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/MenuHelper.java.svn-base deleted file mode 100644 index 2740649..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/MenuHelper.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.general.helper; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; - -import com.fp.common.helper.BeanManager; -import com.fp.common.helper.Constant; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; - -/** - * Clase utilitaria del menu. - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class MenuHelper extends QueryRule { - - /** - * Recore el resultset y adiciona transacciones al grupo. - * - * @param pMenuGroupDesc Objeto que contien el codigo de menu y el grupo de menu, a buscar transacciones a asociar - * al grupo de menu. - * @return List - * @throws Exception - */ - protected List completTransactionByLevel(TgeneMenuLevelDesc pMenuLevelDesc, String languagecode) throws Exception { - ScrollableResults rSet = this.getTransactions(pMenuLevelDesc); - List lData = new ArrayList(); - try { - while (rSet.next()) { - Object[] obj = rSet.get(); - Map m = this.completetransactiondata(obj, languagecode); - lData.add(m); - } - return lData; - } finally { - rSet.close(); - } - - } - - /** - * Recore el resultset y adiciona transacciones al grupo. - * - * @param pMenuSubLevelDesc Objeto que contien el codigo de menu y el grupo de menu, a buscar transacciones a - * asociar al grupo de menu. - * @param mLevel Datos del nivel padre del menu. - * @throws Exception - */ - protected void completTransactionBySubLevel(TgeneMenuSubLevelDesc pMenuSubLevelDesc, Map mLevel, String languagecode) - throws Exception { - ScrollableResults rSet = this.getTransactions(pMenuSubLevelDesc); - List> lData = new ArrayList>(); - try { - while (rSet.next()) { - Object[] obj = rSet.get(); - Map m = this.completetransactiondata(obj, languagecode); - lData.add(m); - } - mLevel.put("items", lData); - } finally { - rSet.close(); - } - } - - /** - * Metodo que completa datos del menu por transaccion. - * - * @param pTgeneMenuGroupTran Transaccion a completar datos del menu. - * @throws Exception - */ - protected Map completetransactiondata(Object[] pObject, String languagecode) throws Exception { - Map m = new HashMap(); - String module = (String) pObject[0]; - Integer transaction = BeanManager.convertObject(pObject[1], Integer.class); - Integer version = BeanManager.convertObject(pObject[2], Integer.class); - String page = (String) pObject[3]; - String autoquery = (String) pObject[4]; - String title = (String) pObject[5]; - String signature = (String) pObject[6]; - String queryagain = (String) pObject[7]; - String jsfp = (String) pObject[8]; - m.put("t", Constant.capitalize(title)); - m.put("p", page); - m.put("a", autoquery); - m.put("m", module); - m.put("tr", transaction); - m.put("v", version); - m.put("f", signature); - m.put("qa", queryagain); - m.put("jsfp", jsfp); - m.put("sg", this.existGlosary(module, transaction, version, languagecode)); - return m; - } - - /** - * Sentencia que entrega las transacciones asociadas al grupo del menu. - */ - private static final String SQL = " select t.TRANSACTIONMODULE, t.TRANSACTIONCODE, t.TRANSACTIONVERSION, t.PAGE, t.AUTOQUERY, t.NAME, t.SIGNATURE, t.QUERYAGAIN, t.JSFPAGE " - + " from TGENEMENULEVELTRAN tm,TGENETRANSACTION t " - + " where tm.TRANSACTIONMODULE = t.TRANSACTIONMODULE " - + " and tm.TRANSACTIONCODE = t.TRANSACTIONCODE " - + " and tm.TRANSACTIONVERSION = t.TRANSACTIONVERSION " - + " and tm.LEVELCODE = :levelcode " + " and tm.MENUCODE = :menucode " + " order by tm.PRESENTATIONORDER"; - - /** - * Entrega un resultset con las transacciones a adicionar al menu. - * - * @param pMenuGroupDesc Objeto que contien el codigo de menu y el grupo de menu, a buscar transacciones a asociar - * al grupo de menu. - * @return ScrollableResults - * @throws Exception - */ - protected ScrollableResults getTransactions(TgeneMenuLevelDesc pMenuLevelDesc) throws Exception { - ScrollableResults rSet = null; - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(MenuHelper.SQL); - qry.setInteger("levelcode", pMenuLevelDesc.getPk().getLevelcode()); - qry.setInteger("menucode", pMenuLevelDesc.getPk().getMenucode()); - rSet = qry.scroll(); - return rSet; - } - - /** - * Sentencia que entrega las transacciones asociadas al grupo del menu. - */ - private static final String SQL_SUBLEVEL = " select t.TRANSACTIONMODULE, t.TRANSACTIONCODE, t.TRANSACTIONVERSION,t.PAGE, t.AUTOQUERY, t.NAME, t.SIGNATURE, t.QUERYAGAIN, t.JSFPAGE " - + " from TGENEMENUSUBLEVELTRAN tm, TGENETRANSACTION t " - + " where tm.TRANSACTIONMODULE = t.TRANSACTIONMODULE " - + " and tm.TRANSACTIONCODE = t.TRANSACTIONCODE " - + " and tm.TRANSACTIONVERSION = t.TRANSACTIONVERSION " - + " and tm.LEVELCODE = :levelcode " - + " and tm.SUBLEVEL = :sublevel " - + " and tm.MENUCODE = :menucode " - + " order by tm.PRESENTATIONORDER"; - - /** - * Entrega un resultset con las transacciones a adicionar al menu. - * - * @param pMenuGroupDesc Objeto que contien el codigo de menu y el grupo de menu, a buscar transacciones a asociar - * al grupo de menu. - * @return ScrollableResults - * @throws Exception - */ - protected ScrollableResults getTransactions(TgeneMenuSubLevelDesc pMenuSubLevelDesc) throws Exception { - ScrollableResults rSet = null; - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(MenuHelper.SQL_SUBLEVEL); - qry.setInteger("levelcode", pMenuSubLevelDesc.getPk().getLevelcode()); - qry.setInteger("sublevel", pMenuSubLevelDesc.getPk().getSublevel()); - qry.setInteger("menucode", pMenuSubLevelDesc.getPk().getMenucode()); - rSet = qry.scroll(); - return rSet; - } - - /** - * Sentencia para saber si existe un glosaio disponible para la transaccion - */ - private static final String HQL = "SELECT count(*) FROM TGENETRANSACTIONGLOSARY" + " where TRANSACTIONMODULE = :transactionmodule" - + " and TRANSACTIONCODE = :transactioncode" + " and TRANSACTIONVERSION = :transactionversion" + " and LANGUAGECODE= :languagecode"; - - /** - * Metodo que devuelve Y o N si existe glosario en una transaccion - * - * @param module Modulo de la transaccion - * @param transaction Codigo de transaccion - * @param version Version de la transaccion - * @param languagecode Lenguaje a utilizar - * @return - * @throws Exception - */ - private String existGlosary(String module, Integer transaction, Integer version, String languagecode) throws Exception { - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(HQL); - qry.setString("transactionmodule", module); - qry.setInteger("transactioncode", transaction); - qry.setInteger("transactionversion", version); - qry.setString("languagecode", languagecode); - Object result = qry.uniqueResult(); - String returnValue = "N"; - if (result instanceof Integer) { - Integer numero = (Integer) result; - if (numero > 0) { - returnValue = "Y"; - } - } else if (result instanceof BigDecimal) { - Integer numero = ((BigDecimal) result).intValue(); - if (numero > 0) { - returnValue = "Y"; - } - } - return returnValue; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/PropertiesHelper.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/PropertiesHelper.java.svn-base deleted file mode 100644 index d959547..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/PropertiesHelper.java.svn-base +++ /dev/null @@ -1,182 +0,0 @@ -package com.fp.general.helper; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Properties; -import java.util.StringTokenizer; - - - - -//Referenced classes of package org.hibernate.util: -// StringHelper, ArrayHelper - -public final class PropertiesHelper -{ - - private static final String PLACEHOLDER_START = "${"; - - private PropertiesHelper() - { - } - - public static String getString(String propertyName, Properties properties, String defaultValue) - { - String value = extractPropertyValue(propertyName, properties); - return value != null ? value : defaultValue; - } - - public static String extractPropertyValue(String propertyName, Properties properties) - { - String value = properties.getProperty(propertyName); - if(value == null) - { - return null; - } - value = value.trim(); - if(StringHelper.isEmpty(value)) - { - return null; - } else - { - return value; - } - } - - public static boolean getBoolean(String propertyName, Properties properties) - { - return getBoolean(propertyName, properties, false); - } - - public static boolean getBoolean(String propertyName, Properties properties, boolean defaultValue) - { - String value = extractPropertyValue(propertyName, properties); - return value != null ? Boolean.valueOf(value).booleanValue() : defaultValue; - } - - public static int getInt(String propertyName, Properties properties, int defaultValue) - { - String value = extractPropertyValue(propertyName, properties); - return value != null ? Integer.parseInt(value) : defaultValue; - } - - public static Integer getInteger(String propertyName, Properties properties) - { - String value = extractPropertyValue(propertyName, properties); - return value != null ? Integer.valueOf(value) : null; - } - - public static Map toMap(String propertyName, String delim, Properties properties) - { - Map map = new HashMap(); - String value = extractPropertyValue(propertyName, properties); - if(value != null) - { - for(StringTokenizer tokens = new StringTokenizer(value, delim); tokens.hasMoreTokens(); map.put(tokens.nextToken(), tokens.hasMoreElements() ? ((Object) (tokens.nextToken())) : "")) { } - } - return map; - } - - public static String[] toStringArray(String propertyName, String delim, Properties properties) - { - return toStringArray(extractPropertyValue(propertyName, properties), delim); - } - - public static String[] toStringArray(String stringForm, String delim) - { - if(stringForm != null) - { - return StringHelper.split(delim, stringForm); - } else - { - return ArrayHelper.EMPTY_STRING_ARRAY; - } - } - - public static Properties maskOut(Properties props, String key) - { - Properties clone = (Properties)props.clone(); - if(clone.get(key) != null) - { - clone.setProperty(key, "****"); - } - return clone; - } - - public static void resolvePlaceHolders(Properties properties) - { - Iterator itr = properties.entrySet().iterator(); - do - { - if(!itr.hasNext()) - { - break; - } - java.util.Map.Entry entry = (java.util.Map.Entry)itr.next(); - Object value = entry.getValue(); - if(value != null && String.class.isInstance(value)) - { - String resolved = resolvePlaceHolder((String)value); - if(!value.equals(resolved)) - { - if(resolved == null) - { - itr.remove(); - } else - { - entry.setValue(resolved); - } - } - } - } while(true); - } - - public static String resolvePlaceHolder(String property) - { - if(property.indexOf("${") < 0) - { - return property; - } - StringBuffer buff = new StringBuffer(); - char chars[] = property.toCharArray(); - for(int pos = 0; pos < chars.length; pos++) - { - if(chars[pos] == '$' && chars[pos + 1] == '{') - { - String systemPropertyName = ""; - int x; - for(x = pos + 2; x < chars.length && chars[x] != '}'; x++) - { - systemPropertyName = (new StringBuilder()).append(systemPropertyName).append(chars[x]).toString(); - if(x == chars.length - 1) - { - throw new IllegalArgumentException((new StringBuilder()).append("unmatched placeholder start [").append(property).append("]").toString()); - } - } - - String systemProperty = extractFromSystem(systemPropertyName); - buff.append(systemProperty != null ? systemProperty : ""); - pos = x + 1; - if(pos >= chars.length) - { - break; - } - } - buff.append(chars[pos]); - } - - String rtn = buff.toString(); - return StringHelper.isEmpty(rtn) ? null : rtn; - } - - - private static String extractFromSystem(String systemPropertyName) { - try { - return System.getProperty( systemPropertyName ); - } - catch( Throwable t ) { - return null; - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/SolicitudeNumber.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/SolicitudeNumber.java.svn-base deleted file mode 100644 index ab4b615..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/SolicitudeNumber.java.svn-base +++ /dev/null @@ -1,70 +0,0 @@ -package com.fp.general.helper; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.gene.TgeneUserSolicitudeNumber; -import com.fp.persistence.pgeneral.safe.TsafeUser; - -/** - * Clase que entrega la secuencia de solicitud a utilizar por usuario. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SolicitudeNumber extends QueryRule { - - /** - * Metodo que entrega el numero de solicitud, para el usuario. - * - * @param pQueryRequest Datos del request. - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - try { - TgeneUserSolicitudeNumber solicitudnumber = this.getTgeneUserSolicitudeNumber(pQueryRequest.getUser()); - if (pQueryRequest.getInternalUserCode() == null) { - TsafeUser user = com.fp.base.persistence.util.db.DataHelper.getInstance().getTsafeUser(pQueryRequest.getUser()); - pQueryRequest.setInternalUserCode(user.getInternalcode()); - } - String sol = pQueryRequest.getInternalUserCode() + solicitudnumber.getSolicitudnumber(); - response.put("solicitudenumber", sol); - solicitudnumber = PersistenceHelper.getEntityManager().merge(solicitudnumber); - - return pQueryRequest; - } catch (Exception e) { - throw e; - } - } - - /** - * Metodo que entrega la secuencia de solicitud a utilizar, esta se define por usuario.
      - * Si no existe un registro en la tabla crea uno, si existe suma 1 a la secuencia de la solicitud. - * - * @param pUserCode Codigo de usuario a obtener el numero de solicitud. - * @return TgeneUserSolicitudeNumber - * @throws Exception - */ - protected TgeneUserSolicitudeNumber getTgeneUserSolicitudeNumber(String pUserCode) throws Exception { - TgeneUserSolicitudeNumber tgeneUserSolicitudeNumber = null; - HqlStatement hql = new HqlStatement(SolicitudeNumber.HQL); - hql.setString("usercode", pUserCode); - tgeneUserSolicitudeNumber = (TgeneUserSolicitudeNumber) hql.getObject(); - if (tgeneUserSolicitudeNumber == null) { - tgeneUserSolicitudeNumber = new TgeneUserSolicitudeNumber(); - tgeneUserSolicitudeNumber.setPk(pUserCode); - tgeneUserSolicitudeNumber.setSolicitudnumber("0"); - } - Integer sec = Integer.valueOf(tgeneUserSolicitudeNumber.getSolicitudnumber()); - sec++; - tgeneUserSolicitudeNumber.setSolicitudnumber(sec.toString()); - return tgeneUserSolicitudeNumber; - } - - /** Sentencia que obtiene un registro de TgeneUserSolicitudeNumber con la secuencia de solicitud por usuario. */ - private static final String HQL = "from com.fp.persistence.pgeneral.gene.TgeneUserSolicitudeNumber t " + " where t.pk = :usercode "; -} diff --git a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/StringHelper.java.svn-base b/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/StringHelper.java.svn-base deleted file mode 100644 index 79d0d30..0000000 --- a/base/business/general/src/main/java/com/fp/general/helper/.svn/text-base/StringHelper.java.svn-base +++ /dev/null @@ -1,639 +0,0 @@ -package com.fp.general.helper; - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Iterator; -import java.util.StringTokenizer; - -import org.hibernate.dialect.Dialect; - - -// Referenced classes of package org.hibernate.util: -// ArrayHelper - -public final class StringHelper -{ - - private static final int ALIAS_TRUNCATE_LENGTH = 10; - public static final String WHITESPACE = " \n\r\f\t"; - - private StringHelper() - { - } - - public static int lastIndexOfLetter(String string) - { - for(int i = 0; i < string.length(); i++) - { - char character = string.charAt(i); - if(!Character.isLetter(character)) - { - return i - 1; - } - } - - return string.length() - 1; - } - - public static String join(String seperator, String strings[]) - { - int length = strings.length; - if(length == 0) - { - return ""; - } - StringBuffer buf = (new StringBuffer(length * strings[0].length())).append(strings[0]); - for(int i = 1; i < length; i++) - { - buf.append(seperator).append(strings[i]); - } - - return buf.toString(); - } - - public static String join(String seperator, Iterator objects) - { - StringBuffer buf = new StringBuffer(); - if(objects.hasNext()) - { - buf.append(objects.next()); - } - for(; objects.hasNext(); buf.append(seperator).append(objects.next())) { } - return buf.toString(); - } - - public static String[] add(String x[], String sep, String y[]) - { - String result[] = new String[x.length]; - for(int i = 0; i < x.length; i++) - { - result[i] = (new StringBuilder()).append(x[i]).append(sep).append(y[i]).toString(); - } - - return result; - } - - public static String repeat(String string, int times) - { - StringBuffer buf = new StringBuffer(string.length() * times); - for(int i = 0; i < times; i++) - { - buf.append(string); - } - - return buf.toString(); - } - - public static String repeat(char character, int times) - { - char buffer[] = new char[times]; - Arrays.fill(buffer, character); - return new String(buffer); - } - - public static String replace(String template, String placeholder, String replacement) - { - return replace(template, placeholder, replacement, false); - } - - public static String[] replace(String templates[], String placeholder, String replacement) - { - String result[] = new String[templates.length]; - for(int i = 0; i < templates.length; i++) - { - result[i] = replace(templates[i], placeholder, replacement); - } - - return result; - } - - public static String replace(String template, String placeholder, String replacement, boolean wholeWords) - { - return replace(template, placeholder, replacement, wholeWords, false); - } - - public static String replace(String template, String placeholder, String replacement, boolean wholeWords, boolean encloseInParensIfNecessary) - { - if(template == null) - { - return template; - } - int loc = template.indexOf(placeholder); - if(loc < 0) - { - return template; - } else - { - String beforePlaceholder = template.substring(0, loc); - String afterPlaceholder = template.substring(loc + placeholder.length()); - return replace(beforePlaceholder, afterPlaceholder, placeholder, replacement, wholeWords, encloseInParensIfNecessary); - } - } - - public static String replace(String beforePlaceholder, String afterPlaceholder, String placeholder, String replacement, boolean wholeWords, boolean encloseInParensIfNecessary) - { - boolean actuallyReplace = !wholeWords || afterPlaceholder.length() == 0 || !Character.isJavaIdentifierPart(afterPlaceholder.charAt(0)); - boolean encloseInParens = actuallyReplace && encloseInParensIfNecessary && getLastNonWhitespaceCharacter(beforePlaceholder) != '(' && getFirstNonWhitespaceCharacter(afterPlaceholder) != ')'; - StringBuilder buf = new StringBuilder(beforePlaceholder); - if(encloseInParens) - { - buf.append('('); - } - buf.append(actuallyReplace ? replacement : placeholder); - if(encloseInParens) - { - buf.append(')'); - } - buf.append(replace(afterPlaceholder, placeholder, replacement, wholeWords, encloseInParensIfNecessary)); - return buf.toString(); - } - - public static char getLastNonWhitespaceCharacter(String str) - { - if(str != null && str.length() > 0) - { - for(int i = str.length() - 1; i >= 0; i--) - { - char ch = str.charAt(i); - if(!Character.isWhitespace(ch)) - { - return ch; - } - } - - } - return '\0'; - } - - public static char getFirstNonWhitespaceCharacter(String str) - { - if(str != null && str.length() > 0) - { - for(int i = 0; i < str.length(); i++) - { - char ch = str.charAt(i); - if(!Character.isWhitespace(ch)) - { - return ch; - } - } - - } - return '\0'; - } - - public static String replaceOnce(String template, String placeholder, String replacement) - { - if(template == null) - { - return template; - } - int loc = template.indexOf(placeholder); - if(loc < 0) - { - return template; - } else - { - return template.substring(0, loc) + replacement + template.substring(loc + placeholder.length()); - } - } - - public static String[] split(String seperators, String list) - { - return split(seperators, list, false); - } - - public static String[] split(String seperators, String list, boolean include) - { - StringTokenizer tokens = new StringTokenizer(list, seperators, include); - String result[] = new String[tokens.countTokens()]; - int i = 0; - while(tokens.hasMoreTokens()) - { - result[i++] = tokens.nextToken(); - } - return result; - } - - public static String unqualify(String qualifiedName) - { - int loc = qualifiedName.lastIndexOf("."); - return loc >= 0 ? qualifiedName.substring(qualifiedName.lastIndexOf(".") + 1) : qualifiedName; - } - - public static String qualifier(String qualifiedName) - { - int loc = qualifiedName.lastIndexOf("."); - return loc >= 0 ? qualifiedName.substring(0, loc) : ""; - } - - public static String collapse(String name) - { - if(name == null) - { - return null; - } - int breakPoint = name.lastIndexOf('.'); - if(breakPoint < 0) - { - return name; - } else - { - return (new StringBuilder()).append(collapseQualifier(name.substring(0, breakPoint), true)).append(name.substring(breakPoint)).toString(); - } - } - - public static String collapseQualifier(String qualifier, boolean includeDots) - { - StringTokenizer tokenizer = new StringTokenizer(qualifier, "."); - String collapsed; - for(collapsed = Character.toString(tokenizer.nextToken().charAt(0)); tokenizer.hasMoreTokens(); collapsed = (new StringBuilder()).append(collapsed).append(tokenizer.nextToken().charAt(0)).toString()) - { - if(includeDots) - { - collapsed = (new StringBuilder()).append(collapsed).append('.').toString(); - } - } - - return collapsed; - } - - public static String partiallyUnqualify(String name, String qualifierBase) - { - if(name == null || !name.startsWith(qualifierBase)) - { - return name; - } else - { - return name.substring(qualifierBase.length() + 1); - } - } - - public static String collapseQualifierBase(String name, String qualifierBase) - { - if(name == null || !name.startsWith(qualifierBase)) - { - return collapse(name); - } else - { - return (new StringBuilder()).append(collapseQualifier(qualifierBase, true)).append(name.substring(qualifierBase.length())).toString(); - } - } - - public static String[] suffix(String columns[], String suffix) - { - if(suffix == null) - { - return columns; - } - String qualified[] = new String[columns.length]; - for(int i = 0; i < columns.length; i++) - { - qualified[i] = suffix(columns[i], suffix); - } - - return qualified; - } - - private static String suffix(String name, String suffix) - { - return suffix != null ? (new StringBuilder()).append(name).append(suffix).toString() : name; - } - - public static String root(String qualifiedName) - { - int loc = qualifiedName.indexOf("."); - return loc >= 0 ? qualifiedName.substring(0, loc) : qualifiedName; - } - - public static String unroot(String qualifiedName) - { - int loc = qualifiedName.indexOf("."); - return loc >= 0 ? qualifiedName.substring(loc + 1, qualifiedName.length()) : qualifiedName; - } - - public static boolean booleanValue(String tfString) - { - String trimmed = tfString.trim().toLowerCase(); - return trimmed.equals("true") || trimmed.equals("t"); - } - - public static String toString(Object array[]) - { - int len = array.length; - if(len == 0) - { - return ""; - } - StringBuffer buf = new StringBuffer(len * 12); - for(int i = 0; i < len - 1; i++) - { - buf.append(array[i]).append(", "); - } - - return buf.append(array[len - 1]).toString(); - } - - public static String[] multiply(String string, Iterator placeholders, Iterator replacements) - { - String result[]; - for(result = (new String[] { - string -}); placeholders.hasNext(); result = multiply(result, (String)placeholders.next(), (String[])replacements.next())) { } - return result; - } - - private static String[] multiply(String strings[], String placeholder, String replacements[]) - { - String results[] = new String[replacements.length * strings.length]; - int n = 0; - for(int i = 0; i < replacements.length; i++) - { - for(int j = 0; j < strings.length; j++) - { - results[n++] = replaceOnce(strings[j], placeholder, replacements[i]); - } - - } - - return results; - } - - public static int countUnquoted(String string, char character) - { - if('\'' == character) - { - throw new IllegalArgumentException("Unquoted count of quotes is invalid"); - } - if(string == null) - { - return 0; - } - int count = 0; - int stringLength = string.length(); - boolean inQuote = false; - for(int indx = 0; indx < stringLength; indx++) - { - char c = string.charAt(indx); - if(inQuote) - { - if('\'' == c) - { - inQuote = false; - } - continue; - } - if('\'' == c) - { - inQuote = true; - continue; - } - if(c == character) - { - count++; - } - } - - return count; - } - - public static int[] locateUnquoted(String string, char character) - { - if('\'' == character) - { - throw new IllegalArgumentException("Unquoted count of quotes is invalid"); - } - if(string == null) - { - return new int[0]; - } - ArrayList locations = new ArrayList(20); - int stringLength = string.length(); - boolean inQuote = false; - for(int indx = 0; indx < stringLength; indx++) - { - char c = string.charAt(indx); - if(inQuote) - { - if('\'' == c) - { - inQuote = false; - } - continue; - } - if('\'' == c) - { - inQuote = true; - continue; - } - if(c == character) - { - locations.add(new Integer(indx)); - } - } - - return ArrayHelper.toIntArray(locations); - } - - public static boolean isNotEmpty(String string) - { - return string != null && string.length() > 0; - } - - public static boolean isEmpty(String string) - { - return string == null || string.length() == 0; - } - - public static String qualify(String prefix, String name) - { - if(name == null || prefix == null) - { - throw new NullPointerException(); - } else - { - return (new StringBuffer(prefix.length() + name.length() + 1)).append(prefix).append('.').append(name).toString(); - } - } - - public static String[] qualify(String prefix, String names[]) - { - if(prefix == null) - { - return names; - } - int len = names.length; - String qualified[] = new String[len]; - for(int i = 0; i < len; i++) - { - qualified[i] = qualify(prefix, names[i]); - } - - return qualified; - } - - public static int firstIndexOfChar(String sqlString, String string, int startindex) - { - int matchAt = -1; - for(int i = 0; i < string.length(); i++) - { - int curMatch = sqlString.indexOf(string.charAt(i), startindex); - if(curMatch < 0) - { - continue; - } - if(matchAt == -1) - { - matchAt = curMatch; - } else - { - matchAt = Math.min(matchAt, curMatch); - } - } - - return matchAt; - } - - public static String truncate(String string, int length) - { - if(string.length() <= length) - { - return string; - } else - { - return string.substring(0, length); - } - } - - public static String generateAlias(String description) - { - return (new StringBuilder()).append(generateAliasRoot(description)).append('_').toString(); - } - - public static String generateAlias(String description, int unique) - { - return (new StringBuilder()).append(generateAliasRoot(description)).append(Integer.toString(unique)).append('_').toString(); - } - - private static String generateAliasRoot(String description) - { - String result = truncate(unqualifyEntityName(description), 10).toLowerCase().replace('/', '_').replace('$', '_'); - result = cleanAlias(result); - if(Character.isDigit(result.charAt(result.length() - 1))) - { - return (new StringBuilder()).append(result).append("x").toString(); - } else - { - return result; - } - } - - private static String cleanAlias(String alias) - { - char chars[] = alias.toCharArray(); - if(!Character.isLetter(chars[0])) - { - for(int i = 1; i < chars.length; i++) - { - if(Character.isLetter(chars[i])) - { - return alias.substring(i); - } - } - - } - return alias; - } - - public static String unqualifyEntityName(String entityName) - { - String result = unqualify(entityName); - int slashPos = result.indexOf('/'); - if(slashPos > 0) - { - result = result.substring(0, slashPos - 1); - } - return result; - } - - public static String toUpperCase(String str) - { - return str != null ? str.toUpperCase() : null; - } - - public static String toLowerCase(String str) - { - return str != null ? str.toLowerCase() : null; - } - - public static String moveAndToBeginning(String filter) - { - if(filter.trim().length() > 0) - { - filter = (new StringBuilder()).append(filter).append(" and ").toString(); - if(filter.startsWith(" and ")) - { - filter = filter.substring(4); - } - } - return filter; - } - - public static boolean isQuoted(String name) - { - return name != null && name.length() != 0 && name.charAt(0) == '`' && name.charAt(name.length() - 1) == '`'; - } - - public static String quote(String name) - { - if(name == null || name.length() == 0 || isQuoted(name)) - { - return name; - } else - { - return (new StringBuffer(name.length() + 2)).append('`').append(name).append('`').toString(); - } - } - - public static String unquote(String name) - { - if(isQuoted(name)) - { - return name.substring(1, name.length() - 1); - } else - { - return name; - } - } - - public static boolean isQuoted(String name, Dialect dialect) - { - return name != null && name.length() != 0 && (name.charAt(0) == '`' && name.charAt(name.length() - 1) == '`' || name.charAt(0) == dialect.openQuote() && name.charAt(name.length() - 1) == dialect.closeQuote()); - } - - public static String unquote(String name, Dialect dialect) - { - if(isQuoted(name, dialect)) - { - return name.substring(1, name.length() - 1); - } else - { - return name; - } - } - - public static String[] unquote(String names[], Dialect dialect) - { - if(names == null) - { - return null; - } - String unquoted[] = new String[names.length]; - for(int i = 0; i < names.length; i++) - { - unquoted[i] = unquote(names[i], dialect); - } - - return unquoted; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/keygen/.svn/entries b/base/business/general/src/main/java/com/fp/general/keygen/.svn/entries deleted file mode 100644 index aeca068..0000000 --- a/base/business/general/src/main/java/com/fp/general/keygen/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/keygen -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SequenceKey.java -file - - - - -2022-07-28T03:40:43.280805Z -70eb06f67cdae668e5f44614a4e13fd3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2228 - -AbstractKeyGen.java -file - - - - -2022-07-28T03:40:43.281805Z -f6bc3c771dd626c94c7393567c321830 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -421 - -SubSequenceKey.java -file - - - - -2022-07-28T03:40:43.281805Z -8b6588e08d051ed1f947d8d950e22b74 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3122 - diff --git a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/AbstractKeyGen.java.svn-base b/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/AbstractKeyGen.java.svn-base deleted file mode 100644 index 2343c0c..0000000 --- a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/AbstractKeyGen.java.svn-base +++ /dev/null @@ -1,14 +0,0 @@ -package com.fp.general.keygen; - -import org.apache.commons.lang.StringUtils; - -public abstract class AbstractKeyGen { - protected boolean isString(Class pType) { - return pType.getName().compareTo(String.class.getName()) == 0; - } - - protected String fill(String pValue, String pFill, Integer pLength) { - String val = pValue; - return StringUtils.leftPad(val, pLength, pFill.charAt(0)); - } -} diff --git a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SequenceKey.java.svn-base b/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SequenceKey.java.svn-base deleted file mode 100644 index 8931188..0000000 --- a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SequenceKey.java.svn-base +++ /dev/null @@ -1,66 +0,0 @@ -package com.fp.general.keygen; - -import java.io.Serializable; -import java.util.Properties; - -import org.hibernate.HibernateException; -import org.hibernate.MappingException; -import org.hibernate.dialect.Dialect; -import org.hibernate.engine.spi.SessionImplementor; -import org.hibernate.id.Configurable; -import org.hibernate.id.IdentifierGenerator; -import org.hibernate.type.Type; - -import com.fp.common.helper.BeanManager; -import com.fp.general.helper.PropertiesHelper; -import com.fp.sessionbeans.helper.Sequence; - -public class SequenceKey extends AbstractKeyGen implements IdentifierGenerator, Configurable { - public static final String SEQUENCE_NAME = "name"; - - public static final String TYPE = "type"; - - public static final String FILL = "fill"; - - public static final String LENGTH = "length"; - - private String sequenceName = null; - - private String fill = null; - - private Integer length = null; - - private Class type = null; - - @Override - public Serializable generate(SessionImplementor session, Object object) throws HibernateException { - try { - Sequence s = new Sequence(); - Serializable val = (Serializable) BeanManager.convertObject(s.getNextValue(this.sequenceName), this.type); - if (this.isString(this.type) && (this.fill != null)) { - val = this.fill((String) val, this.fill, this.length); - } - return val; - } catch (Exception e) { - throw new HibernateException(e); - } - } - - @Override - public void configure(Type pType, Properties pParams, Dialect pD) throws MappingException { - this.sequenceName = PropertiesHelper.getString(SequenceKey.SEQUENCE_NAME, pParams, null); - try { - this.fill = PropertiesHelper.getString(SequenceKey.FILL, pParams, null); - this.length = PropertiesHelper.getInteger(SequenceKey.LENGTH, pParams); - } catch (Exception e) { - this.fill = null; - this.length = null; - } - try { - this.type = Class.forName(PropertiesHelper.getString(SequenceKey.TYPE, pParams, null)); - } catch (ClassNotFoundException e) { - throw new MappingException(e); - } - } - -} \ No newline at end of file diff --git a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SubSequenceKey.java.svn-base b/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SubSequenceKey.java.svn-base deleted file mode 100644 index f2321e9..0000000 --- a/base/business/general/src/main/java/com/fp/general/keygen/.svn/text-base/SubSequenceKey.java.svn-base +++ /dev/null @@ -1,86 +0,0 @@ -package com.fp.general.keygen; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Properties; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import org.hibernate.HibernateException; -import org.hibernate.MappingException; -import org.hibernate.dialect.Dialect; -import org.hibernate.engine.spi.SessionImplementor; -import org.hibernate.id.Configurable; -import org.hibernate.id.IdentifierGenerator; -import org.hibernate.type.Type; - -import com.fp.common.helper.BeanManager; -import com.fp.general.helper.PropertiesHelper; -import com.fp.persistence.commondb.PersistenceHelper; - -public class SubSequenceKey extends AbstractKeyGen implements IdentifierGenerator, Configurable { - public static final String SQL = "sql"; - - public static final String TYPE = "type"; - - public static final String PARAM = "param"; - - public static final String FIELD = "field"; - - private String sql = null; - - private String field = null; - - private Class type = null; - - private final List> param = new ArrayList>(); - - @Override - public Serializable generate(SessionImplementor session, Object object) throws HibernateException { - try { - EntityManager em = PersistenceHelper.getEntityManager(); - em.flush(); - Query q = em.createNativeQuery(this.sql); - for (Map p : this.param) { - q.setParameter(p.get("NAME"), BeanManager.getBeanAttributeValue(object, p.get("FIELD"))); - } - Object pk = BeanManager.getBeanAttributeValue(object, "pk"); - Object val = BeanManager.convertObject(q.getSingleResult(), this.type); - BeanManager.setBeanAttributeValue(pk, this.field, val); - return (Serializable) pk; - } catch (Exception e) { - throw new HibernateException(e); - } - } - - @Override - public void configure(Type pType, Properties pParams, Dialect pD) throws MappingException { - this.sql = PropertiesHelper.getString(SubSequenceKey.SQL, pParams, null).toUpperCase(); - this.field = PropertiesHelper.getString(SubSequenceKey.FIELD, pParams, null); - try { - this.type = Class.forName(PropertiesHelper.getString(SubSequenceKey.TYPE, pParams, null)); - } catch (ClassNotFoundException e) { - throw new MappingException(e); - } - try { - String sParam = PropertiesHelper.getString(SubSequenceKey.PARAM, pParams, null); - if (sParam != null) { - String[] aParam = sParam.split(";"); - for (String val : aParam) { - String[] aVal = val.split(","); - Map m = new HashMap(); - m.put("NAME", aVal[0].toUpperCase()); - m.put("FIELD", aVal[1]); - this.param.add(m); - } - } - } catch (Exception e) { - throw new MappingException(e); - } - } - -} \ No newline at end of file diff --git a/base/business/general/src/main/java/com/fp/general/rates/.svn/entries b/base/business/general/src/main/java/com/fp/general/rates/.svn/entries deleted file mode 100644 index bc9930d..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rates -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -rules -dir - diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/entries b/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/entries deleted file mode 100644 index 7a385fa..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rates/rules -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -ValidateRates.java -file - - - - -2022-07-28T03:40:44.201809Z -664f4b1144484bd0957d217918dfaec5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6019 - -VerifyOverlapSubProductRatesAmount.java -file - - - - -2022-07-28T03:40:44.201809Z -fa76b5dabdf9658af232149a7b17f6c7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6828 - diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/ValidateRates.java.svn-base b/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/ValidateRates.java.svn-base deleted file mode 100644 index a3f6874..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/ValidateRates.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -package com.fp.general.rates.rules; - -import java.sql.Date; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.product.rate.TgeneBaseRateDetail; - -@SuppressWarnings("serial") -public class ValidateRates extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String currencycode = pSaveRequest.get("currencycode").toString(); - String baseratecatalog = pSaveRequest.get("baseratecatalog").toString(); - String baseratecatalogcode = pSaveRequest.get("baseratecatalogcode").toString(); - Integer company = pSaveRequest.getCompany(); - - List lRatesMod = pSaveRequest.getSaveBeanModifiedRecords("TGENEBASERATEDETAIL"); - List lRatesDel = pSaveRequest.getSaveBeanDeletedRecords("TGENEBASERATEDETAIL"); - List lRatesDB = TgeneBaseRateDetail.find(PersistenceHelper.getEntityManager(), currencycode, baseratecatalog, - baseratecatalogcode); - - TgeneAccountingDateBranch d = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch(company, 0); - - this.validateDeleted(lRatesDel, lRatesDB, d.getWorkingdate()); - this.validateModified(lRatesMod, lRatesDB, d.getWorkingdate()); - - List lRatesFinal = Constant.getFinalList(lRatesDB, Constant.convertList(lRatesMod, TgeneBaseRateDetail.class), - Constant.convertList(lRatesDel, TgeneBaseRateDetail.class)); - - // Validar traslape de fechas - for (int i = 0; i < lRatesFinal.size(); i++) { - TgeneBaseRateDetail ratedetail = lRatesFinal.get(i); - this.validateOverlap(ratedetail, i + 1, lRatesFinal); - } - - return pSaveRequest; - } - - /** - * Valida que no se borren registros vigentes y pasados - * - * @param lRatesDel - * @param lRatesDB - * @param wdate - * @throws Exception - */ - private void validateDeleted(List lRatesDel, List lRatesDB, Date wdate) throws Exception { - if (lRatesDel != null) { - for (Object obj : lRatesDel) { - TgeneBaseRateDetail ratedetaildel = (TgeneBaseRateDetail) obj; - TgeneBaseRateDetail ratedetailbase = Constant.isInList(lRatesDB, ratedetaildel); - if (ratedetailbase != null) { - int result = this.getDateRange(ratedetailbase.getValidityrate(), ratedetailbase.getExpirationdate(), wdate); - if (result <= 0) { - throw new GeneralException("GENE-0045", "NO SE PUEDE ELIMINAR TASAS CON FECHA VIGENTE O VENCIDA"); - } - } - } - } - } - - /** - * Valida que solo se ingresen tasas con fechas futuras - * - * @param lRatesMod - * @param lRatesDB - * @param wdate - * @throws Exception - */ - private void validateModified(List lRatesMod, List lRatesDB, Date wdate) throws Exception { - if (lRatesMod != null) { - for (Object obj : lRatesMod) { - TgeneBaseRateDetail ratedetailmod = (TgeneBaseRateDetail) obj; - TgeneBaseRateDetail ratedetailbase = Constant.isInList(lRatesDB, ratedetailmod); - if ((ratedetailbase == null) || Constant.ifYes((String) ratedetailmod.get("isnew"))) { - int result = this.getDateRange(ratedetailmod.getValidityrate(), ratedetailmod.getExpirationdate(), wdate); - if (result <= 0) { - throw new GeneralException("GENE-0046", "SOLO SE PUEDE INGRESAR TASAS CON FECHA FUTURAS"); - } - } - } - } - } - - /** - * Valida que no se translapen las fechas de las tasas - * - * @param ratedetail - * @param searchIndex - * @param lRatesFinal - * @return - * @throws Exception - */ - private void validateOverlap(TgeneBaseRateDetail ratedetail, int searchIndex, List lRatesFinal) throws Exception { - for (int i = searchIndex; i < lRatesFinal.size(); i++) { - TgeneBaseRateDetail ratedetailfinal = lRatesFinal.get(i); - if (ratedetail.equalsWithoutRateSequence(ratedetailfinal)) { - int result = this.getDateRange(ratedetail.getValidityrate(), ratedetail.getExpirationdate(), ratedetailfinal.getValidityrate()); - if (result == 0) { - throw new GeneralException("GENE-0047", "EXISTE CRUCE DE FECHAS"); - } - } - } - } - - /** - * Retorna 0 si el parametro actualdate esta dentro del rango, 1 si el rango es > que actualdate, -1 si el rango es - * menor que actualdate - * - * @param initdate - * @param enddate - * @param actualdate - * @return - * @throws Exception - */ - private int getDateRange(Date initdate, Date enddate, Date actualdate) throws Exception { - APPDates init = new APPDates(initdate); - APPDates end = new APPDates(enddate); - APPDates now = new APPDates(actualdate); - - if (init.compareTo(now) > 0) { - return 1; - } else if ((now.compareTo(init) >= 0) && (now.compareTo(end) <= 0)) { - return 0; - } - // else if (end.compareTo(now) < 0) { - // return -1; - // } - return -1; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/VerifyOverlapSubProductRatesAmount.java.svn-base b/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/VerifyOverlapSubProductRatesAmount.java.svn-base deleted file mode 100644 index f501e24..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/.svn/text-base/VerifyOverlapSubProductRatesAmount.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.general.rates.rules; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.product.rate.TgeneSubProductRate; - -/** - * Clase que se encarga de verificar traslape en montos de los cargos. - * - * @author Angel Merchan. - * @version 2.1 - * - */ -@SuppressWarnings("serial") -public class VerifyOverlapSubProductRatesAmount extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (pSaveRequest.getSaveBean("TGENESUBPRODUCTRATE") != null) { - this.validateTgeneSubProductRates(pSaveRequest); - } - - return pSaveRequest; - } - - private void validateTgeneSubProductRates(SaveRequest pSaveRequest) throws Exception { - String modulecode = pSaveRequest.get("modulecode").toString(); - String productcode = pSaveRequest.get("productcode").toString(); - String subproductcode = pSaveRequest.get("subproductcode").toString(); - String currencycode = pSaveRequest.get("currencycode").toString(); - Integer company = pSaveRequest.getCompany(); - - List lSubProductRatesgesModified = pSaveRequest.getSaveBeanModifiedRecords("TGENESUBPRODUCTRATE"); - List lSubProductRatesDeleted = pSaveRequest.getSaveBeanDeletedRecords("TGENESUBPRODUCTRATE"); - List listSubProductRatesDatabase = TgeneSubProductRate.find(PersistenceHelper.getEntityManager(), modulecode, - productcode, subproductcode, currencycode, company); - List listSubProductRatesFinal = new ArrayList(); - - listSubProductRatesFinal = Constant.getFinalList(listSubProductRatesDatabase, - Constant.convertList(lSubProductRatesgesModified, TgeneSubProductRate.class), - Constant.convertList(lSubProductRatesDeleted, TgeneSubProductRate.class)); - - // Validar traslape de plazo - for (int i = 0; i < listSubProductRatesFinal.size(); i++) { - TgeneSubProductRate prodratesfinal = listSubProductRatesFinal.get(i); - this.validateOverlapTerm(prodratesfinal, i + 1, listSubProductRatesFinal); - } - - // Validar traslape de monto por plazo - for (int i = 0; i < listSubProductRatesFinal.size(); i++) { - TgeneSubProductRate prodratesfinal = listSubProductRatesFinal.get(i); - this.validateOverlapAmountByTerm(prodratesfinal, i + 1, listSubProductRatesFinal); - } - } - - /** - * - * @param prodratesfinal - * @param index - * @param listSubProductRateFinal - * @throws Exception - */ - private void validateOverlapTerm(TgeneSubProductRate prodratesfinal, int index, List listSubProductRateFinal) - throws Exception { - Integer minterm = prodratesfinal.getMinterm(); - Integer maxterm = prodratesfinal.getMaxterm(); - - if (minterm.compareTo(maxterm) >= 0) { - throw new GeneralException("GENE-0050", "EL TRMINO MNIMO DEBE SER MENOR AL TRMINO MXIMO EN {0}", "[CARGOS POR TASAS]"); - } - - for (int i = index; i < listSubProductRateFinal.size(); i++) { - TgeneSubProductRate prodrates = listSubProductRateFinal.get(i); - - if (prodratesfinal.equalsWithoutSequence(prodrates)) { - Integer mintermcmp = prodrates.getMinterm(); - Integer maxtermcmp = prodrates.getMaxterm(); - - if ((minterm.compareTo(mintermcmp) == 0) && (maxterm.compareTo(maxtermcmp) == 0)) { - prodrates = null; - continue; - } else if ((minterm.compareTo(maxtermcmp) == 0) || (maxterm.compareTo(mintermcmp) == 0) || (minterm.compareTo(mintermcmp) == 0) - || (maxterm.compareTo(maxtermcmp) == 0) || ((minterm.compareTo(mintermcmp) > 0) && (maxterm.compareTo(maxtermcmp) < 0)) - || ((minterm.compareTo(mintermcmp) < 0) && (maxterm.compareTo(maxtermcmp) > 0))) { - throw new GeneralException("GENE-0051", "LOS TRMINOS PARA EL TIPO DE BALANCE {0} SE SOBREPONEN EN {1}", prodratesfinal.getPk() - .getInterestbalancetype(), "[TASAS POR SUBPRODUCTO]"); - } - } - prodrates = null; - } - } - - /** - * Metodo que verifica el traslape de montos de un cargo - * - * @param prodchargesfinal - * @param index - * @param listSubProductChargesFinal - * @throws Exception - */ - private void validateOverlapAmountByTerm(TgeneSubProductRate prodratesfinal, int index, List listSubProductRateFinal) - throws Exception { - BigDecimal minamount = prodratesfinal.getMinamount(); - BigDecimal maxamount = prodratesfinal.getMaxamount(); - - if (minamount.compareTo(maxamount) >= 0) { - throw new GeneralException("GENE-0040", "EL MONTO MNIMO DEBE SER MENOR AL MONTO MXIMO EN {0}", "[TASAS POR SUBPRODUCTO]"); - } - - for (int i = index; i < listSubProductRateFinal.size(); i++) { - TgeneSubProductRate prodrates = listSubProductRateFinal.get(i); - - if (prodratesfinal.equalsWithoutSequence(prodrates) && (prodratesfinal.getMinterm().compareTo(prodrates.getMinterm()) == 0) - && (prodratesfinal.getMaxterm().compareTo(prodrates.getMaxterm()) == 0)) { - BigDecimal minamountcmp = prodrates.getMinamount(); - BigDecimal maxamountcmp = prodrates.getMaxamount(); - - if (((minamount.compareTo(maxamountcmp) <= 0) && (minamount.compareTo(minamountcmp) >= 0)) - || ((minamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0)) - || ((minamount.compareTo(minamountcmp) <= 0) && (maxamount.compareTo(maxamountcmp) >= 0)) - || ((maxamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0))) { - throw new GeneralException("GENE-0041", "LOS VALORES PARA EL TIPO DE BALANCE {0} SE SOBREPONEN EN {1}", prodratesfinal.getPk() - .getInterestbalancetype(), "[TASAS POR SUBPRODUCTO]"); - } - } - prodrates = null; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/query/.svn/entries b/base/business/general/src/main/java/com/fp/general/rates/rules/query/.svn/entries deleted file mode 100644 index 29ddd01..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/query/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rates/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -code -dir - diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/entries b/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/entries deleted file mode 100644 index 599d779..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rates/rules/query/code -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RatesDetail.java -file - - - - -2022-07-28T03:40:44.135809Z -603bb7b93b61365d8a775db20ce5d0a8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1563 - diff --git a/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/text-base/RatesDetail.java.svn-base b/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/text-base/RatesDetail.java.svn-base deleted file mode 100644 index 4ddc390..0000000 --- a/base/business/general/src/main/java/com/fp/general/rates/rules/query/code/.svn/text-base/RatesDetail.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.general.rates.rules.query.code; - -import java.util.List; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.product.rate.TgeneBaseRateDetail; -import com.fp.persistence.pgeneral.product.rate.TgeneBaseRateDetailKey; - -public class RatesDetail extends QueryRule { - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - String currencycode = pQueryRequest.get("currencycode").toString(); - String baseratecatalog = pQueryRequest.get("baseratecatalog").toString(); - String baseratecatalogcode = pQueryRequest.get("baseratecatalogcode").toString(); - Integer company = pQueryRequest.getCompany(); - - TgeneAccountingDateBranch d = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch(company, 0); - - List lratedetail = TgeneBaseRateDetail.findVigents(PersistenceHelper.getEntityManager(), currencycode, baseratecatalog, - baseratecatalogcode, d.getWorkingdate()); - - if (lratedetail.isEmpty()) { - lratedetail.add(new TgeneBaseRateDetail(new TgeneBaseRateDetailKey(), null, null, null)); - } - - Response response = pQueryRequest.getResponse(); - response.put("TGENEBASERATEDETAIL", lratedetail); - - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/record/.svn/entries b/base/business/general/src/main/java/com/fp/general/record/.svn/entries deleted file mode 100644 index dde1899..0000000 --- a/base/business/general/src/main/java/com/fp/general/record/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/record -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ParserRecord.java -file - - - - -2022-07-28T03:40:44.255810Z -e314741ba1ff42613ddda735204f570d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9344 - -FieldData.java -file - - - - -2022-07-28T03:40:44.256810Z -4e763718632486fc6794fcc45761e529 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3106 - -Record.java -file - - - - -2022-07-28T03:40:44.256810Z -a1c0d90304754d6e31ffd6b68ec10465 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1476 - diff --git a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/FieldData.java.svn-base b/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/FieldData.java.svn-base deleted file mode 100644 index f627640..0000000 --- a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/FieldData.java.svn-base +++ /dev/null @@ -1,137 +0,0 @@ -package com.fp.general.record; - -import java.lang.reflect.Field; - -/** - * Clase para el manejo de los campos del registro - * @author Jorge Vaca. - * @version 2.1 - */ -public class FieldData { - /* - * Numero de registro del cual se obtiene el valor - */ - private Integer fieldNumber; - /* - * Variable que contiene el valor del campo - */ - private Object value; - /* - * Variable que contiene si el valor del campo es correcto - */ - private boolean valid = true; - /* - * Variable que contiene el mensaje de error - */ - private String errorMessage; - - /** - * Variable que contiene el nombre del atributo de la clase a convertir - */ - private String attribute; - - /** - * Metodo que devuelve el numero de campo del registro - * @return - */ - public Integer getFieldNumber() { - return fieldNumber; - } - - /** - * Metodo que asigna el numero de campo del registro - * @param fieldNumber - */ - public void setFieldNumber(Integer fieldNumber) { - this.fieldNumber = fieldNumber; - } - - /** - * Metodo que indica si el valor del campo es correcto - * @return - */ - public boolean isValid() { - return valid; - } - - /** - * Metodo que asigna si un campo es correcto o no - * @param valid - */ - public void setValid(boolean valid) { - this.valid = valid; - } - - /** - * Metodo que devuelve el valor del campo - * @return - */ - public Object getValue() { - return value; - } - - /** - * Metodo que asigna el valor del campo - * @param value - */ - public void setValue(Object value) { - this.value = value; - } - - /** - * Mensaje de error - * @return - */ - public String getErrorMessage() { - return errorMessage; - } - - /** - * Metodo que asigna el mensaje de error - * @param errorMessage - */ - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - - - /** - * Metodo que devuelve el nombre del atributo de la clase que se va a convertir - * @return - */ - public String getAttribute() { - return attribute; - } - - /** - * Metodo que asigna el nombre del atributo de la clase a la cual se va a convertir - * @param attribute - */ - public void setAttribute(String attribute) { - this.attribute = attribute; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - -} diff --git a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/ParserRecord.java.svn-base b/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/ParserRecord.java.svn-base deleted file mode 100644 index 0980d13..0000000 --- a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/ParserRecord.java.svn-base +++ /dev/null @@ -1,211 +0,0 @@ -package com.fp.general.record; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.msg.TgeneMessageStructure; -import com.fp.persistence.pgeneral.msg.TgeneMessageStructureData; -import com.fp.persistence.pgeneral.msg.TgeneMessageStructureHeader; -import com.fp.telered.exception.TeleredException; - -/** - * Clase que se encarga de parsear un registro. - * @author Jorge Vaca. - * @version 2.1 - */ -public class ParserRecord { - - private ParserRecord () {} - - /** - * Metodo que llena los datos del record - * @param inString Cadena de busqueda - * @param structurecode Codigo de estructura del archivo. - * @return Record - * @throws Exception - */ - public static Record read(String inString, TgeneMessageStructure ms,boolean isheader,Integer recordnumber) throws Exception { - Record record = new Record(); - if (isheader) { - readheader(inString, record, ms,recordnumber); - } - readdata(inString, record, ms ,recordnumber); - return record; - } - - /** - * Metodo que completa un Record, con la definicion de TACHSTRUCTURE, considera tipos de registro 6 y 7. - * @param inString Datos en formato nacha. - * @param record Registro a completar data. - * @param ms Definicion de tipo de estructura. - * @throws Exception - */ - private static void readheader(String inString, Record record, TgeneMessageStructure ms,Integer recordnumber) throws Exception { - Map map = new HashMap(); - //Crea un bean persistente en la base. - record.setHibernateBean(ms.getHeaderclass()); - //Obtiene la estructura de campos para el tipo de ach. - List ldata = getTgeneMessageStructureHeader(ms.getPk()); - for (TgeneMessageStructureHeader obj : ldata) { - FieldData field = new FieldData(); - Integer fieldnumber = obj.getPk().getCode(); - field.setAttribute(obj.getAttribute()); - field.setFieldNumber(fieldnumber); - Object valueAux = null; - try { - valueAux = getValue(inString, obj,obj.getAttribute(),recordnumber); - } catch (Exception ex) { - APPLogger.getLogger().error(ex.getLocalizedMessage()); - field.setErrorMessage(ex.getMessage()); - field.setValid(false); - } - if (Constant.ifYes(obj.getRequired()) && valueAux == null ) { - field.setValid(false); - } - field.setValue(valueAux); - map.put(fieldnumber, field); - } - record.setFieldMap(map); - } - - /** - * Metodo que arma los datos de la tabla TACHFILESSTRUCTURE, considera tipos de registo 1,5,8,9 - * @param inString Datos en formato nacha. - * @param record Record a completar datos. - * @param ms Definicion de tipo de estructura. - * @throws Exception - */ - private static void readdata(String inString, Record record,TgeneMessageStructure ms,Integer recordnumber) throws Exception { - Map map = new HashMap(); - //Crea un bean persistente en la base. - record.setHibernateBean(ms.getDetailclass()); - List ldata = getTgeneMessageStructureData(ms.getPk()); - for (TgeneMessageStructureData obj : ldata) { - FieldData field = new FieldData(); - Integer fieldnumber = obj.getPk().getCode(); - field.setAttribute(obj.getAttribute()); - field.setFieldNumber(fieldnumber); - Object valueAux = null; - if(obj.getAttribute().compareTo("cardacctnbr") ==0){ - valueAux = null; - } - try { - valueAux = getValue(inString,obj,obj.getAttribute(),recordnumber); - } catch (TeleredException ex) { - throw ex; - }catch (Exception ex) { - field.setErrorMessage(ex.getMessage()); - field.setValid(false); - } - field.setValue(valueAux); - if (Constant.ifYes(obj.getRequired()) && valueAux == null ) { - field.setValid(false); - } - map.put(fieldnumber, field); - if(Constant.ifYes(obj.getRequired()) && valueAux == null){ - throw new TeleredException("GENE-0031", "VALOR REQUERIDO PARA EL CAMPO: {0} NUMERO DE REGISTRO: {1}", - obj.getAttribute(),recordnumber + 1); - } - } - record.setFieldMap(map); - } - - /** - * Entrega el valor de un campo dada la estructura de un tipo de registro definida en TgeneMessageStructureHeader. - * @param inString Datos un registro.. - * @param structure Datos de definicion de estructura de un campo. - * @return Object - * @throws Exception - */ - private static Object getValue(String inString,TgeneMessageStructureHeader structure,String atributo,Integer numeroregistro) throws Exception { - return getValue(inString, - structure.getInitposition(), structure.getEndposition(), - structure.getDecimalnumber(), structure.getDatatype(),atributo,numeroregistro); - } - - /** - * Entrega el valor de un campo dada la estructura de un tipo de registro definida en TgeneMessageStructureData. - * @param inString Datos un registro.. - * @param fileStructure Datos de definicion de estructura de un campo. - * @return Object - * @throws Exception - */ - private static Object getValue(String inString,TgeneMessageStructureData structure,String atributo,Integer numeroregistro) throws Exception { - return getValue(inString, - structure.getInitposition(), structure.getEndposition(), - structure.getDecimalnumber(), structure.getDatatype(),atributo,numeroregistro); - } - - /** - * Metodo que devuelve el valor del campo de un regsitro - * @param inString Cadena donde se va a buscar el campo - * @param initPosition Posicion inicial del campo - * @param endPosition Posicion final del campo - * @param decimalnumber Numero de decimales - * @param datatype Tipo de dato del campo - * @param formatdate Formato para fecha - * @param formattime Formato para tiempo - * @return Object - * @throws Exception - */ - private static Object getValue(String inString, int initPosition, - int endPosition, Integer decimalnumber, String datatype,String atributo,Integer numeroregistro) - throws Exception { - String value = inString.substring(--initPosition, endPosition); - if (value.compareTo("") == 0 || value == null) { - //la validacion del campo requerido se realiza en la parte que llama al metodo que obtiene el valor. - return null; - } - Object auxValue = value; - try { - if (datatype.toUpperCase().compareTo("STRING") == 0) { - auxValue = value; - } else if (datatype.toUpperCase().compareTo("INTEGER") == 0) { - value = value.trim(); - if (decimalnumber != null && decimalnumber > 0) { - String number = value.substring(0, value.length() - decimalnumber) - + "." - + value.substring(value.length() - decimalnumber, value.length()); - auxValue = new BigDecimal(number); - } else { - auxValue = Integer.valueOf(value); - } - }else if(datatype.toUpperCase().compareTo("LONG") == 0){ - auxValue = Long.valueOf(value.trim()); - }else if(datatype.toUpperCase().compareTo("BIGDECIMAL") == 0){ - auxValue = new BigDecimal(value.trim()); - } - } catch (NumberFormatException ex) { - throw new TeleredException("GENE-0032", "TIPO DE DATO: {0} PARA EL CAMPO: {1} NO SE PUEDE TRANSFORMAR VALOR: {2} REGISTRO {3}", - datatype,atributo,value,numeroregistro + 1); - } - return auxValue; - } - - - - /** - * Enterga una lista de definicion de campos de cabecera de un archivo. - * @param pStructureCode Codigo de estructura. - * @return List - * @throws Exception - */ - private static List getTgeneMessageStructureHeader(String pStructureCode) throws Exception { - return TgeneMessageStructureHeader.find(PersistenceHelper.getEntityManager(), pStructureCode); - } - - /** - * Enterga una lista de definicion de campos de datos de un archivo. - * @param pStructureCode Codigo de estructura. - * @return List - * @throws Exception - */ - private static List getTgeneMessageStructureData(String pStructureCode) throws Exception { - return TgeneMessageStructureData.find(PersistenceHelper.getEntityManager(), pStructureCode); - } -} diff --git a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/Record.java.svn-base b/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/Record.java.svn-base deleted file mode 100644 index 38cabee..0000000 --- a/base/business/general/src/main/java/com/fp/general/record/.svn/text-base/Record.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ -package com.fp.general.record; - -import java.util.Map; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que representa un registro de 94 bytes en formato nacha - * @author Jorge Vaca. - * @version 2.1 - */ -public class Record { - - /* - * Variable que contiene el valor de los campos del registro - */ - private Map fieldMap; - /** - * Variable que contiene el nombre de la clase - */ - private HibernateBean hibernateBean; - - - /** - * Metodo que devuelve los campos del registro - * @return - */ - public Map getFieldMap() { - return fieldMap; - } - - /** - * Metodo que asigna los campos del registro - * @param fieldMap - */ - public void setFieldMap(Map fieldMap) { - this.fieldMap = fieldMap; - } - - /** - * Metodo que devuelve la clase que se utilizara para el mapeo de datos - * @return - */ - public HibernateBean getHibernateBean() { - return hibernateBean; - } - - /** - * Metodo que asigna la clase para el mapeo de datos - * @param className - */ - public void setHibernateBean(String pBeanname) throws Exception{ - if(pBeanname == null){ - return; - } - HibernateBean bean = (HibernateBean)Class.forName(pBeanname).newInstance(); - HibernateBean bean1 = (HibernateBean)bean.createInstance(); - hibernateBean = bean1; - } - - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/.svn/entries deleted file mode 100644 index 7cfaf3f..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/.svn/entries +++ /dev/null @@ -1,71 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SubProductcurrencyDesc.java -file - - - - -2022-07-28T03:40:43.947808Z -2b5e3929da963278ff4df8649dd2c719 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2154 - -query -dir - -save -dir - -scheduler -dir - diff --git a/base/business/general/src/main/java/com/fp/general/rules/.svn/text-base/SubProductcurrencyDesc.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/.svn/text-base/SubProductcurrencyDesc.java.svn-base deleted file mode 100644 index 104e1fb..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/.svn/text-base/SubProductcurrencyDesc.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.general.rules; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.product.TgeneSubProductCurrency; - -/** - * Clase que se encarga de completar descripcion del modulo, producto, y subproducto, dado un codigo de query alias. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SubProductcurrencyDesc extends QueryRule { - - /** - * Metodo que completa descripciones de modulo, producto y sub producto. - */ - @Override - @SuppressWarnings("unchecked") - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENESUBPRODUCTCURRENCY"); - if (lobjects == null) { - return pQueryRequest; - } - for (Object obj : lobjects) { - TgeneSubProductCurrency subprod = (TgeneSubProductCurrency) obj; - if (subprod.getPk().getModulecode() == null) { - continue; - } - // module descripion - subprod.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(subprod.getPk().getModulecode())); - // product description - subprod.addAddtionalInfo("productdesc", - GeneralDescriptions.getProductdesc(subprod.getPk().getModulecode(), subprod.getPk().getProductcode())); - // subproduct description - subprod.addAddtionalInfo("subproductdesc", GeneralDescriptions.getSubProductdesc(subprod.getPk().getModulecode(), subprod.getPk() - .getProductcode(), subprod.getPk().getSubproductcode())); - // currency description - subprod.addAddtionalInfo("currencydesc", GeneralDescriptions.getCurrencydesc(subprod.getPk().getCurrencycode())); - } - return pQueryRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/entries deleted file mode 100644 index 3539249..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/entries +++ /dev/null @@ -1,340 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BalanceTypeProvision.java -file - - - - -2022-07-28T03:40:43.770807Z -7f120590969c7b7619a3337e188ca633 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4155 - -CompleteTransactionSubLevel.java -file - - - - -2022-07-28T03:40:43.770807Z -f789f0f46e8b80cb516ae83a110cc0d7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1758 - -ExecuteSQL.java -file - - - - -2022-07-28T03:40:43.771807Z -ca5d642e5497a34d49852ee2b7425731 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1381 - -CompleteTransactionLevel.java -file - - - - -2022-07-28T03:40:43.771807Z -910853fbeaa0a635ba19b824b86476ef -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1687 - -trans -dir - -PrincipalInstallRates.java -file - - - - -2022-07-28T03:40:43.771807Z -966ca874e623680d5aefc23b211017a4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2567 - -LovTransactionEvent.java -file - - - - -2022-07-28T03:40:43.771807Z -9c0c63ccbc00b38884ded3553958edeb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1840 - -code -dir - -CompleteMaturation.java -file - - - - -2022-07-28T03:40:43.772807Z -31de769950d5ad26e74e66f222070931 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2594 - -CompleteTransactionMixPages.java -file - - - - -2022-07-28T03:40:43.772807Z -4ce07d837ab4c43858e1c3a4a708553b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1848 - -LovOfficer.java -file - - - - -2022-07-28T03:40:43.772807Z -beae8cd84978b98e4ff8bea9f9283f7f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1640 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/BalanceTypeProvision.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/BalanceTypeProvision.java.svn-base deleted file mode 100644 index 6dcb153..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/BalanceTypeProvision.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.general.rules.query; - -import com.fp.common.helper.BeanManager; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; - -/** - * Clase que se encarga de armar los tipos de balance por modulo y provicion - * @author scastillo - */ -public class BalanceTypeProvision extends QueryRule { - - /** - * Proceso que devuevelve los tipos de balance en el response - * @param pQueryRequest - * @return - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - QueryBean queryBeanDebit = (QueryBean) pQueryRequest.get("BALANCETYPEPROVITION"); - String modulecode = (String) BeanManager.convertObject(queryBeanDebit.getCriteriaValue("modulecode"), String.class); - String isprovision = (String) BeanManager.convertObject(queryBeanDebit.getCriteriaValue("isprovision"), String.class); - List> data = getBalanceType(modulecode, isprovision); - response.put("BALANCETYPEPROVITION", data); - return pQueryRequest; - } - - /** - * Mtodo que ejecuta el query y los asigna en un map a todo los tipos de saldo - * @param module - * @param isprovision - * @return - * @throws Exception - */ - private List> getBalanceType(String module, String isprovision) throws Exception { - ScrollableResults scrollableResults = null; - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(obtainSelect(module, isprovision)); - scrollableResults = qry.scroll(); - List> balancetype = new ArrayList>(); - try { - while (scrollableResults.next()) { - Object[] object = scrollableResults.get(); - Map map = new HashMap(); - String pk_balancetype = (String) object[0]; - String pk_balancegroup = (String) object[1]; - String description = (String) object[2]; - String balancecategory = (String) object[3]; - String modulecode = (String) object[4]; - map.put("pk_balancetype", pk_balancetype); - map.put("pk_balancegroup", pk_balancegroup); - map.put("description", description); - map.put("balancecategory", balancecategory); - map.put("modulecode", modulecode); - balancetype.add(map); - } - } finally { - scrollableResults.close(); - } - return balancetype; - } - - /** - * Metodo que arma el select a ejecutar para obtener los tipos de balance - * @param module - * @param isprovision - * @return - */ - private String obtainSelect(String module, String isprovision) { - String filtermodule = ""; - if (module != null) { - filtermodule = " where tgbt.MODULECODE = '" + module + "' and"; - } - String filterprovision = ")"; - if (isprovision != null) { - filterprovision = " and tgbtd.ISPROVISON = '" + isprovision + "')"; - } - String sentencia = - "select tgbt.BALANCETYPE," - + " tgbt.BALANCEGROUP," - + " tgbt.DESCRIPTION," - + " tgbt.BALANCECATEGORY," - + " tgbt.MODULECODE" - + " from TGENEBALANCETYPE tgbt" - + filtermodule - + " exists (select 1" - + " from TGENEBALANCETYPEDETAIL tgbtd" - + " where tgbt.BALANCETYPE = tgbtd.BALANCETYPE" - + " and tgbt.BALANCEGROUP = tgbtd.BALANCEGROUP" - + filterprovision - + " order by tgbt.BALANCETYPE"; - return sentencia; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteMaturation.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteMaturation.java.svn-base deleted file mode 100644 index be26308..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteMaturation.java.svn-base +++ /dev/null @@ -1,61 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.transf.TgeneMaturation; - -/** - * Clase que se encarga de completar la descripcion de los items de la tabla TgeneMaturation - * - * @author scastillo - * @version 2.1 - */ -public class CompleteMaturation extends QueryRule { - - /** - * Mtodo que completa las descripciones de la tabla TgeneMaturation - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENEMATURATION"); - if (lobjects == null) { - return pQueryRequest; - } - for (Object obj : lobjects) { - TgeneMaturation tgeneMaturation = (TgeneMaturation) obj; - if ((tgeneMaturation.getTransactionmodule() != null) && (tgeneMaturation.getTransactioncode() != null) - && (tgeneMaturation.getTransactionversion() != null)) { - if (tgeneMaturation.getDebititem() != null) { - tgeneMaturation.addAddtionalInfo("debititemdesc", GeneralDescriptions.getTransactionItemdesc( - tgeneMaturation.getTransactionmodule(), tgeneMaturation.getTransactioncode(), tgeneMaturation.getTransactionversion(), - tgeneMaturation.getDebititem())); - } else { - tgeneMaturation.addAddtionalInfo("debititemdesc", null); - } - if (tgeneMaturation.getCredititem() != null) { - tgeneMaturation.addAddtionalInfo("credititemdesc", GeneralDescriptions.getTransactionItemdesc( - tgeneMaturation.getTransactionmodule(), tgeneMaturation.getTransactioncode(), tgeneMaturation.getTransactionversion(), - tgeneMaturation.getCredititem())); - } else { - tgeneMaturation.addAddtionalInfo("credititemdesc", null); - } - } else { - tgeneMaturation.addAddtionalInfo("debititemdesc", null); - tgeneMaturation.addAddtionalInfo("credititemdesc", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionLevel.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionLevel.java.svn-base deleted file mode 100644 index 33c9bea..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionLevel.java.svn-base +++ /dev/null @@ -1,44 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelTran; - -/** - * Clase que completa el nombre de la transaccion en niveles - * - * @author scastillo - */ -public class CompleteTransactionLevel extends QueryRule { - - /** - * Metodo que completa el nombre de la transaccion - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENEMENULEVELTRAN"); - for (Object obj : lobjects) { - TgeneMenuLevelTran tgeneMenuLevelTran = (TgeneMenuLevelTran) obj; - if ((tgeneMenuLevelTran.getPk().getTransactionmodule() != null) && (tgeneMenuLevelTran.getPk().getTransactioncode() != null) - && (tgeneMenuLevelTran.getPk().getTransactionversion() != null)) { - tgeneMenuLevelTran.addAddtionalInfo("name", GeneralDescriptions.getTransactiondesc(tgeneMenuLevelTran.getPk().getTransactionmodule(), - tgeneMenuLevelTran.getPk().getTransactioncode(), tgeneMenuLevelTran.getPk().getTransactionversion())); - } else { - tgeneMenuLevelTran.addAddtionalInfo("name", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionMixPages.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionMixPages.java.svn-base deleted file mode 100644 index 003077c..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionMixPages.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.gene.TgeneTransactionMixPages; - -/** - * Clase que se encarga de completar el nombre de la transaccion par la definicion de las paginas en caja multiple - * - * @author scastillo - */ -public class CompleteTransactionMixPages extends QueryRule { - - /** - * Metodo que completa el nombre de la transaccion - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENETRANSACTIONMIXPAGES"); - for (Object obj : lobjects) { - TgeneTransactionMixPages tgeneTransactionMixPages = (TgeneTransactionMixPages) obj; - if ((tgeneTransactionMixPages.getPk().getTransactionmodule() != null) && (tgeneTransactionMixPages.getPk().getTransactioncode() != null) - && (tgeneTransactionMixPages.getPk().getTransactionversion() != null)) { - tgeneTransactionMixPages.addAddtionalInfo("name", GeneralDescriptions.getTransactiondesc(tgeneTransactionMixPages.getPk() - .getTransactionmodule(), tgeneTransactionMixPages.getPk().getTransactioncode(), tgeneTransactionMixPages.getPk() - .getTransactionversion())); - } else { - tgeneTransactionMixPages.addAddtionalInfo("name", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionSubLevel.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionSubLevel.java.svn-base deleted file mode 100644 index 3babf98..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/CompleteTransactionSubLevel.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelTran; - -/** - * Clase que completa el nombre de la transaccion en subniveles - * - * @author scastillo - */ -public class CompleteTransactionSubLevel extends QueryRule { - - /** - * Metodo que completa el nombre de la transaccion - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENEMENUSUBLEVELTRAN"); - for (Object obj : lobjects) { - TgeneMenuSubLevelTran tgeneMenuSubLevelTran = (TgeneMenuSubLevelTran) obj; - if ((tgeneMenuSubLevelTran.getPk().getTransactionmodule() != null) && (tgeneMenuSubLevelTran.getPk().getTransactioncode() != null) - && (tgeneMenuSubLevelTran.getPk().getTransactionversion() != null)) { - tgeneMenuSubLevelTran.addAddtionalInfo("name", GeneralDescriptions.getTransactiondesc(tgeneMenuSubLevelTran.getPk() - .getTransactionmodule(), tgeneMenuSubLevelTran.getPk().getTransactioncode(), tgeneMenuSubLevelTran.getPk() - .getTransactionversion())); - } else { - tgeneMenuSubLevelTran.addAddtionalInfo("name", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/ExecuteSQL.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/ExecuteSQL.java.svn-base deleted file mode 100644 index 8264fb2..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/ExecuteSQL.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -package com.fp.general.rules.query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; -import java.util.ArrayList; -import java.util.List; - -/** - * Clase que se encarga de ejecutar un query que se enva desde la parte web - * @author scastillo - */ -public class ExecuteSQL extends QueryRule { - - /** - * - * @param pQueryRequest - * @return - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - String sql = (String) pQueryRequest.get("sql"); - String isUniqueResult = (String) pQueryRequest.get("isUniqueResult"); - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(sql); - if (isUniqueResult.equals("Y")) { - Object data = qry.uniqueResult(); - response.put("result", data); - } else { - ScrollableResults scrollableResults = qry.scroll(); - List lObject = new ArrayList(); - while (scrollableResults.next()) { - lObject.add(scrollableResults.get()); - } - response.put("result", lObject); - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovOfficer.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovOfficer.java.svn-base deleted file mode 100644 index a60cd7f..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovOfficer.java.svn-base +++ /dev/null @@ -1,44 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.pgeneral.gene.TgeneOfficer; -import com.fp.persistence.pgeneral.safe.TsafeUser; - -/** - * Metodo que completa el nombre del usuario oficial de cuenta. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class LovOfficer extends QueryRule { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @Override - @SuppressWarnings("unchecked") - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENEOFFICER"); - for (Object obj : lobjects) { - TgeneOfficer officer = (TgeneOfficer) obj; - if (officer.getPk().getModulecode() == null) { - throw new GeneralException("GENE-0033", "OFICIAL DE CUENTA NO DEFINIDO PARA EL PRODUCTO EN TGENEOFFICER"); - } - TsafeUser user = com.fp.base.persistence.util.db.DataHelper.getInstance().getTsafeUser(officer.getPk().getUsercode()); - officer.addAddtionalInfo("name", GeneralDescriptions.getPersonname(user.getPersoncode())); - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovTransactionEvent.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovTransactionEvent.java.svn-base deleted file mode 100644 index b48e1b3..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/LovTransactionEvent.java.svn-base +++ /dev/null @@ -1,47 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.trans.TgeneTransactionEvent; - -/** - * Clase para completar el nombre de la transaccion por eventos - * - * @author scastillo - */ -public class LovTransactionEvent extends QueryRule { - - /** - * Proceso que se encarga de completar el nombre de la transaccion - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENETRANSACTIONEVENT"); - for (Object obj : lobjects) { - TgeneTransactionEvent tgeneTransactionEvent = (TgeneTransactionEvent) obj; - if (tgeneTransactionEvent.getTransactionmodule() != null) { - tgeneTransactionEvent.addAddtionalInfo( - "name", - GeneralDescriptions.getTransactiondesc(tgeneTransactionEvent.getTransactionmodule(), - tgeneTransactionEvent.getTransactioncode(), tgeneTransactionEvent.getTransactionversion())); - tgeneTransactionEvent.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(tgeneTransactionEvent.getTransactionmodule())); - } else { - tgeneTransactionEvent.addAddtionalInfo("name", null); - tgeneTransactionEvent.addAddtionalInfo("moduledesc", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/PrincipalInstallRates.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/PrincipalInstallRates.java.svn-base deleted file mode 100644 index 65976b9..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/.svn/text-base/PrincipalInstallRates.java.svn-base +++ /dev/null @@ -1,70 +0,0 @@ -package com.fp.general.rules.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; - -public class PrincipalInstallRates extends QueryRule { - - private String module = null; - private String product = null; - private String subproduct = null; - private String currency = null; - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - this.module = pQueryRequest.get("modulecode").toString(); - this.product = pQueryRequest.get("productcode").toString(); - this.subproduct = pQueryRequest.get("subproductcode").toString(); - this.currency = pQueryRequest.get("currencycode").toString(); - - List> list = new ArrayList>(); - list = fillMap(); - response.put("LOVTGENESUBPRODUCTINSTALLRATES", list); - return pQueryRequest; - } - - private List> fillMap() throws Exception { - List> lresp = new ArrayList>(); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(SQL); - //qry.setParameter("", ""); - List ldata = qry.getResultList(); - if(ldata.isEmpty()){ - return lresp; - } - for (Object object : ldata) { - Object[] items = (Object[]) object; - Map m = new HashMap(); - m.put("btype", items[0].toString()); - m.put("bgroup", items[1].toString()); - m.put("desc", items[2].toString()); - lresp.add(m); - } - return lresp; - } - - - - - private static final String SQL = - "select unique ir.principalbalancetype, ir.principalbalancegroup, bt.description "+ - "from TGENESUBPRODUCTINSTALLRATES ir, TGENEBALANCETYPE bt "+ - "where ir.principalbalancetype = bt.balancetype and "+ - "ir.principalbalancegroup = bt.balancegroup and "+ - "ir.modulecode=8 and ir.productcode=1 and " + - "ir.subproductcode=1 and ir.currencycode='USD' "; - - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/entries deleted file mode 100644 index ba2e413..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/entries +++ /dev/null @@ -1,436 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/query/code -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LovCustomer.java -file - - - - -2022-07-28T03:40:43.713807Z -9020765d8cb9a5530b6247c106103be2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3714 - -DataBaseFile.java -file - - - - -2022-07-28T03:40:43.713807Z -d0f25b95f1a5a367e50cac63a35d05f2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1914 - -ModuleDesc.java -file - - - - -2022-07-28T03:40:43.714807Z -030c56c40d348d4a101f05282ee28d47 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1634 - -InfoDataFile.java -file - - - - -2022-07-28T03:40:43.714807Z -1042afa85e4b7a901667d965de8c8ada -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1559 - -CriteriaValidator.java -file - - - - -2022-07-28T03:40:43.714807Z -ba61237fb33baec0757dd8613d4a519e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -786 - -DaysAccountingDate.java -file - - - - -2022-07-28T03:40:43.714807Z -4be4d9f7122c923349f5566c79f58ff9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4372 - -SubProductDesc.java -file - - - - -2022-07-28T03:40:43.715807Z -60963fca7e9b1c9c0c4214c63a4f7554 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1959 - -HeaderSolicitude.java -file - - - - -2022-07-28T03:40:43.715807Z -d61f98af99479dab12243127a0aa9b98 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2605 - -LovAccount.java -file - - - - -2022-07-28T03:40:43.715807Z -b9a1513eeeeb5ebcc4abd0561bb8376b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3882 - -LovCustomerMulti.java -file - - - - -2022-07-28T03:40:43.715807Z -ec0a13f82f12907f32092e850581f521 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4282 - -LovOfficial.java -file - - - - -2022-07-28T03:40:43.716807Z -65d7e036fa8e6eeb73735d9c77332aea -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3034 - -VerifyClientData.java -file - - - - -2022-07-28T03:40:43.716807Z -e59c96d3802c0b89e97d6b75d0b454e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4943 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/CriteriaValidator.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/CriteriaValidator.java.svn-base deleted file mode 100644 index 3152243..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/CriteriaValidator.java.svn-base +++ /dev/null @@ -1,25 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.List; - -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; - -public class CriteriaValidator { - - public static String[] validatePercentage(QueryBean qb) { - String resp[] = new String[2]; - resp[0] = "0"; - List lcriteria = qb.getCriteria(); - for (QueryCriteria obj : lcriteria) { - if ((obj.getProperty() != null) && (obj.getValue() != null) && (obj.getOperation() != null)) { - if (obj.getValue().toString().compareTo("%") == 0) { - resp[1] = (String) obj.getValue(); - return resp; - } - } - } - resp[0] = "1"; - return resp; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DataBaseFile.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DataBaseFile.java.svn-base deleted file mode 100644 index 58658b1..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DataBaseFile.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.sql.Timestamp; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; - -/** - * Clase que devuelve en bytes un archivo - * - * @author scastillo - */ -public class DataBaseFile extends QueryRule { - - /** - * Metodo que devuelve en forma de bytes un archivo - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Integer code = (Integer) pQueryRequest.get("code"); - Timestamp dateto = null; - if (pQueryRequest.get("dateto") != null) { - dateto = Timestamp.valueOf((String) pQueryRequest.get("dateto")); - } else { - dateto = FormatDates.getDefaultExpiryTimestamp(); - } - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(code, dateto); - TgeneFilesDetail tgeneFilesDetail = (TgeneFilesDetail) PersistenceHelper.getSession().get(TgeneFilesDetail.class, tgeneFilesDetailKey); - if (tgeneFilesDetail != null) { - response.put("file", tgeneFilesDetail.getImage()); - response.put("extension", tgeneFilesDetail.getExtension()); - response.put("contentType", tgeneFilesDetail.getContenttype()); - response.put("name", tgeneFilesDetail.getName()); - } else { - response.put("file", null); - response.put("extension", null); - response.put("contentType", null); - response.put("name", null); - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DaysAccountingDate.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DaysAccountingDate.java.svn-base deleted file mode 100644 index e9c1000..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/DaysAccountingDate.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.general.rules.query.code; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; - -/** - * Clase que se encarga de armar la estructura para la grilla para la generacin de fechas contables - * @author scastillo - */ -public class DaysAccountingDate extends QueryRule { - - private static final String SQL = - "select TGC.LEGALCODE, TGC.DESCRIPTION" - + " from TGENECATALOGDETAIL TGC" - + " where TGC.CATALOGCODE = 'DAYS'" - + " order BY TGC.CATALOG"; - - /** - * Metodo que se encarga de armar el map - * @param queryRequest - * @return - * @throws Exception - */ - public QueryRequest process(QueryRequest queryRequest) throws Exception { - Response response = queryRequest.getResponse(); - response.put("branchcodemin", this.getBranchMin(queryRequest.getCompany())); - response.put("branchcodemax", this.getBranchMax(queryRequest.getCompany())); - response.put("LISTACCOUNTINDATE", this.getDays()); - return queryRequest; - } - - /** - * Metodo que arma la estructura para situarla en el datagrid - * @return - * @throws Exception - */ - private List> getDays() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - mData.put("transportBeanClass", null); - mData.put("day", obj[0]); - mData.put("daydesc", obj[1]); - mData.put("accounting", "N"); - mData.put("teller", "N"); - ldata.add(mData); - } - } finally { - if (rSet != null) { - rSet.close(); - } - } - return ldata; - } - - /** - * Metodo que ejecuta para obtener los dias - * @param pQueryRequest - * @return - * @throws Exception - */ - private ScrollableResults executeQuery() throws Exception { - ScrollableResults rSet = null; - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(SQL); - rSet = sql.scroll(); - return rSet; - } - private static String SQL_BRANCH_MIN = - "select min(BRANCHCODE) value" - + " from TGENEBRANCH" - + " where COMPANYCODE = :companycode"; - - /** - * Metodo que devuelve el codigo de sucursal menor - * @param companycode - * @return - * @throws Exception - */ - private Integer getBranchMin(Integer companycode) throws Exception { - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(SQL_BRANCH_MIN); - sql.setParameter("companycode", companycode); - sql.addScalar("value", new org.hibernate.type.IntegerType()); - Integer value = (Integer) sql.uniqueResult(); - if (value == null) { - throw new GeneralException("GENE-0018", "SUCURSALES NO DEFINIDAS PARA LA COMPANIA: {0}", companycode); - } - return value; - } - /** - Sentencia SQL que devuelve la sucursal mayor - */ - private static String SQL_BRANCH_MAX = - "select max(BRANCHCODE) value" - + " from TGENEBRANCH" - + " where COMPANYCODE = :companycode"; - - /** - * Metodo que devuelve el codigo de sucursal maxima - * @param companycode - * @return - * @throws Exception - */ - private Integer getBranchMax(Integer companycode) throws Exception { - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(SQL_BRANCH_MAX); - sql.setParameter("companycode", companycode); - sql.addScalar("value", new org.hibernate.type.IntegerType()); - Integer value = (Integer) sql.uniqueResult(); - if (value == null) { - throw new GeneralException("GENE-0018", "SUCURSALES NO DEFINIDAS PARA LA COMPANIA: {0}", companycode); - } - return value; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/HeaderSolicitude.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/HeaderSolicitude.java.svn-base deleted file mode 100644 index b4d4460..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/HeaderSolicitude.java.svn-base +++ /dev/null @@ -1,49 +0,0 @@ -package com.fp.general.rules.query.code; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.db.DataHelper; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.pgeneral.gene.TgeneSolicitude; - -/** - * Clase que se encarge de completar los datos de cabecera de una solicitud - * - * @author scastillo - */ -public class HeaderSolicitude extends QueryRule { - - String solicitudnumber; - Integer solicitudsequence; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - this.solicitudnumber = (String) pQueryRequest.get("solicitudnumber"); - this.solicitudsequence = (Integer) pQueryRequest.get("solicitudsequence"); - TgeneSolicitude tgeneSolicitude = DataHelper.getInstance().getTgeneSolicitude(this.solicitudnumber, this.solicitudsequence); - if ((tgeneSolicitude == null) || (tgeneSolicitude.getModulecode().compareTo(pQueryRequest.getTransactionModule()) != 0)) { - throw new GeneralException("GENE-0049", "SOLICITUD NO EXISTE"); - } - if (tgeneSolicitude != null && tgeneSolicitude.getStatuscode().compareTo("COM") == 0) { - /*TgeneSolicitudeStatusKey tgeneSolicitudeStatusKey = new TgeneSolicitudeStatusKey(tgeneSolicitude.getModulecode(), - tgeneSolicitude.getStatuscode()); - TgeneSolicitudeStatus tgeneSolicitudeStatus = TgeneSolicitudeStatus.find(PersistenceHelper.getEntityManager(), - tgeneSolicitudeStatusKey); - throw new GeneralException("GENE-0046", "SOLICITUD EN ESTADO {0}", tgeneSolicitudeStatus.getDescription());*/ - throw new GeneralException("GENE-0049", "SOLICITUD NO EXISTE"); - } - response.put("m", tgeneSolicitude.getModulecode()); - response.put("md", GeneralDescriptions.getModuledesc(tgeneSolicitude.getModulecode())); - response.put("p", tgeneSolicitude.getProductcode()); - response.put("pd", GeneralDescriptions.getProductdesc(tgeneSolicitude.getModulecode(), - tgeneSolicitude.getProductcode())); - response.put("s", tgeneSolicitude.getSubproductcode()); - response.put("sd", GeneralDescriptions.getSubProductdesc(tgeneSolicitude.getModulecode(), - tgeneSolicitude.getProductcode(), tgeneSolicitude.getSubproductcode())); - response.put("c", tgeneSolicitude.getCurrencycode()); - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/InfoDataFile.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/InfoDataFile.java.svn-base deleted file mode 100644 index 1c9a207..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/InfoDataFile.java.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -package com.fp.general.rules.query.code; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -/** - * Clase que se encarga de enviar la fecha de creacion y de vigencia de la firma - * @author scastillo - */ -public class InfoDataFile extends QueryRule { - - /** - * Metodo que envia la informacion de fechas del archivo - * @param pQueryRequest - * @return - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query query = new Query(); - query.process(pQueryRequest); - List> infoImage = new ArrayList>(); - List dataImage = (List) response.get("TGENEFILESDETAIL"); - for (Object obj : dataImage) { - TgeneFilesDetail tgeneFilesDetail = (TgeneFilesDetail) obj; - Map map = new HashMap(); - map.put("datefrom", tgeneFilesDetail.getDatefrom().toString()); - map.put("dateto", tgeneFilesDetail.getPk().getDateto().toString()); - infoImage.add(map); - } - response.remove("TGENEFILESDETAIL"); - response.put("TGENEFILESDETAIL", infoImage); - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovAccount.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovAccount.java.svn-base deleted file mode 100644 index 2175fa8..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovAccount.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.bpm.query.Query; -import com.fp.core.exception.CoreException; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.acco.TgeneAccount; - -/** - * Clase que se encarga de obtener una lista de cuentas, que se utiliza en el lov de cuentas en las paginas. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class LovAccount extends QueryRule { - - /** - * Versin de la Clase - */ - private static final long serialVersionUID = 1L; - - /** Tabla */ - private static final String TGENEACCOUNT = "TGENEACCOUNT"; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query query = new Query(); - query.process(pQueryRequest); - this.fillResponse(response, pQueryRequest); - return pQueryRequest; - } - - /** - * Metodo que construye la respuesta del lov de cuentas. - * - * @param pResponse Objeto que contiene los objetos de respuesta. - * @param pQueryRequest Peticion - * @throws Exception - */ - private void fillResponse(Response pResponse, QueryRequest pQueryRequest) throws Exception { - List> lresp = new ArrayList>(); - @SuppressWarnings("unchecked") - List lQuota = (List) pResponse.get(LovAccount.TGENEACCOUNT); - for (Object object : lQuota) { - TgeneAccount obj = (TgeneAccount) object; - Map m = new HashMap(); - if (obj.getPk().getAccount() == null) { - QueryBean qb = pQueryRequest.getBeans().get(LovAccount.TGENEACCOUNT); - if ((qb.getCriteriaValue("pk.account") != null) && (qb.getCriteriaValue("pk.company") != null) && !qb.isNotin("pk.account")) { - throw new CoreException("CORE-0007", "CUENTA NO EXISTE: {0} COMPANIA {1}", qb.getCriteriaValue("pk.account"), - qb.getCriteriaValue("pk.company")); - } - break; - } - m.put("pk_account", obj.getPk().getAccount()); - m.put("accountname", obj.getAccountname()); - m.put("currencycode", obj.getCurrencycode()); - m.put("pk_company", obj.getPk().getCompany()); - m.put("personcode", obj.getPersoncode()); - m.put("modulecode", obj.getModulecode()); - m.put("productcode", obj.getProductcode()); - m.put("subproductcode", obj.getSubproductcode()); - m.put("statuscode", obj.getAccountstatuscode()); - lresp.add(m); - } - this.checkData(lresp); - pResponse.remove(LovAccount.TGENEACCOUNT); - pResponse.put(LovAccount.TGENEACCOUNT, lresp); - } - - /** - * Verifica y completa la estructura en el caso que la tabla no tenga datos - * - * @param lresp - */ - private void checkData(List> lresp) { - if (lresp.isEmpty()) { - Map m = new HashMap(); - m.put("pk_account", null); - m.put("accountname", null); - m.put("currencycode", null); - m.put("pk_company", null); - m.put("personcode", null); - m.put("modulecode", null); - m.put("productcode", null); - m.put("subproductcode", null); - lresp.add(m); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomer.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomer.java.svn-base deleted file mode 100644 index 7a62211..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomer.java.svn-base +++ /dev/null @@ -1,91 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que se encarga de enviar solo los datos necesarios del cliente - * - * @author scastillo - */ -@SuppressWarnings("serial") -public class LovCustomer extends QueryRule { - - /** - * JPQL que obtiene informacion de personas - */ - private static final String JPQL_CUSTOMER = "select t.personcode, persontypecatalog,identification,name," - + " (select cd.description from TgeneCatalogDetail cd " + " where cd.catalogcode = t.identificationcatalogcode " - + " and cd.catalog = t.identificationcatalog " + " ) as identificationdesc, " - + " (select photocode from TcustPeople tp" + " where tp.personcode = t.personcode " - + " and tp.dateto = t.dateto " + " ) as photocode " + " from TcustPersonDetail t " + " where t.dateto = :dateto "; - - /** - * Metodo que construye la respuesta solo con los datos necesarios - * - * @param pQueryRequest QueryRequest - * @return pQueryRequest QueryRequest - * @throws Exception - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryBean qb = (QueryBean) pQueryRequest.get("TCUSTPERSONDETAILLOV"); - - String[] resp = CriteriaValidator.validatePercentage(qb); - if (resp[0].compareTo("0") == 0) { - throw new GeneralException("GENE-0043", "EL CRITERIO DE BSQUEDA --> {0} NO ES SUFICIENTE", resp[1]); - } - - Map mcriteria = new HashMap(); - - StringBuilder jpql = new StringBuilder(); - jpql.append(LovCustomer.JPQL_CUSTOMER); - GeneralQuery.addParameters(qb, jpql, mcriteria, true); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(String.valueOf(jpql)); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - GeneralQuery.setParameters(qb, mcriteria, qry); - List ldata = qry.getResultList(); - - List> lfinal = new ArrayList>(); - if ((ldata != null) && (!ldata.isEmpty())) { - for (Object[] obj : ldata) { - Map m = new HashMap(); - m.put("pk_personcode", obj[0]); - m.put("persontypecatalog", obj[1]); - m.put("identification", obj[2]); - m.put("name", obj[3]); - m.put("identificationdesc", obj[4]); - m.put("photocode", obj[5]); - lfinal.add(m); - } - } else { - if (qb.getPage() == 1) { - Map m = new HashMap(); - m.put("pk_personcode", null); - m.put("persontypecatalog", null); - m.put("identification", null); - m.put("name", null); - m.put("identificationdesc", null); - m.put("photocode", null); - lfinal.add(m); - } - } - - pQueryRequest.getResponse().put("TCUSTPERSONDETAILLOV", lfinal); - - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomerMulti.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomerMulti.java.svn-base deleted file mode 100644 index 734bf30..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovCustomerMulti.java.svn-base +++ /dev/null @@ -1,105 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que se encarga de enviar los datos necesarios de clientes - * - * @author jarias - * - */ -public class LovCustomerMulti extends QueryRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * JPQL que obtiene informacion de personas - */ - private static final String JPQL_CUSTOMER = "select t.personcode, persontypecatalog,identification,name," - + " (select cd.description from TgeneCatalogDetail cd " + " where cd.catalogcode = t.identificationcatalogcode " - + " and cd.catalog = t.identificationcatalog " + " ) as identificationdesc, " - + " (select photocode from TcustPeople tp" + " where tp.personcode = t.personcode " - + " and tp.dateto = t.dateto " + " ) as photocode " + " from TcustPersonDetail t " + " where t.dateto = :dateto "; - - /** - * Metodo que construye la respuesta solo con los datos necesarios - * - * @param pQueryRequest QueryRequest - * @return pQueryRequest QueryRequest - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - // TODO Auto-generated method stub - QueryBean qb = (QueryBean) pQueryRequest.get("TCUSTPERSONDETAILLOVMULTI"); - List> lfinalresult = new ArrayList>(); - lfinalresult = this.resultPersons(qb); - pQueryRequest.getResponse().put("TCUSTPERSONDETAILLOVMULTI", lfinalresult); - return pQueryRequest; - } - - /** - * Mtodo que retorna la busqueda de las personas - * - * @param qb QueryBean - * @return lfinal lista que contiene los clienets consultados - * @throws Exception - */ - @SuppressWarnings("unchecked") - public List> resultPersons(QueryBean qb) throws Exception { - String[] resp = CriteriaValidator.validatePercentage(qb); - if (resp[0].compareTo("0") == 0) { - throw new GeneralException("GENE-0043", "EL CRITERIO DE BSQUEDA --> {0} NO ES SUFICIENTE", resp[1]); - } - List> lfinal = new ArrayList>(); - Map mcriteria = new HashMap(); - StringBuilder jpql = new StringBuilder(); - jpql.append(LovCustomerMulti.JPQL_CUSTOMER); - GeneralQuery.addParameters(qb, jpql, mcriteria, true); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(String.valueOf(jpql)); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - GeneralQuery.setParameters(qb, mcriteria, qry); - List ldata = qry.getResultList(); - - if ((ldata != null) && (!ldata.isEmpty())) { - for (Object[] obj : ldata) { - Map m = new HashMap(); - m.put("pk_personcode", obj[0]); - m.put("persontypecatalog", obj[1]); - m.put("identification", obj[2]); - m.put("name", obj[3]); - m.put("identificationdesc", obj[4]); - m.put("photocode", obj[5]); - lfinal.add(m); - } - } else { - if (qb.getPage() == 1) { - Map m = new HashMap(); - m.put("pk_personcode", null); - m.put("persontypecatalog", null); - m.put("identification", null); - m.put("name", null); - m.put("identificationdesc", null); - m.put("photocode", null); - lfinal.add(m); - } - } - return lfinal; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovOfficial.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovOfficial.java.svn-base deleted file mode 100644 index 9a5eda8..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/LovOfficial.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.rules.query.code; - -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.persistence.Query; - -/** - * - * @author BPTWPA - */ -public class LovOfficial extends QueryRule { - - private static final long serialVersionUID = 1L; - /** - * JPQL que presenta los funcionarions del BEV - */ - private static final String JPQL_OFFICIAL = "from TcustPersonDetail t " - + "where t.pk.personcode in (" - + "select f.pk.personcode " - + "from TcustPeopleJob f " - + "where f.employerpersoncode = :bevcode " - + "and f.pk.dateto = :datetojob " - + "and f.departuredate = null)"; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - StringBuilder jpql = new StringBuilder(); - QueryBean qb = (QueryBean) pQueryRequest.get("OFFICIALLOV"); - Map mcriteria = new HashMap(); - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("BEVCODE", Integer.valueOf(pQueryRequest.get("COMPANY").toString())); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey); - if (tgeneParameters.getNumbervalue() == null) { - return pQueryRequest; - } - jpql.append(LovOfficial.JPQL_OFFICIAL); - GeneralQuery.addParameters(qb, jpql, mcriteria); - Query qry = PersistenceHelper.getEntityManager().createQuery(String.valueOf(jpql)); - qry.setParameter("datetojob", FormatDates.getDefaultExpiryTimestamp()); - qry.setParameter("bevcode", Integer.valueOf(tgeneParameters.getNumbervalue().intValue())); - GeneralQuery.setParameters(qb, mcriteria, qry); - List ldata = qry.getResultList(); - if (!ldata.isEmpty()) { - List> lresp = new ArrayList>(); - for (TcustPersonDetail obj : ldata) { - Map m = new HashMap(); - m.put("pk.personcode", obj.getPk().getPersoncode()); - m.put("pk.dateto", obj.getPk().getDateto()); - m.put("identification", obj.getIdentification()); - m.put("name", obj.getName()); - lresp.add(m); - } - pQueryRequest.getResponse().put("OFFICIALLOV", lresp); - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/ModuleDesc.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/ModuleDesc.java.svn-base deleted file mode 100644 index 8fc1a14..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/ModuleDesc.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.installment.TgeneInstallmentType; - -/** - * Clase que se encarga de completar la descripcion del modulo, dado su codigo. - * - * @author Wilson Sigcho - * @version 2.1 - */ -public class ModuleDesc extends QueryRule { - - /** - * Metodo que agrega la descripcion de un modulo, dado su codigo en una consulta requerida. - * - * @param pQueryRequest Objeto que posee la consulta requerida. - * @return pQueryRequest - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENEINSTALLMENTTYPE"); - if (lobjects == null) { - return pQueryRequest; - } - for (Object obj : lobjects) { - TgeneInstallmentType tgeneInstallmentType = (TgeneInstallmentType) obj; - if (tgeneInstallmentType.getPk().getModulecode() != null) { - tgeneInstallmentType.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(tgeneInstallmentType.getPk().getModulecode())); - } else { - tgeneInstallmentType.addAddtionalInfo("moduledesc", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/SubProductDesc.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/SubProductDesc.java.svn-base deleted file mode 100644 index d459c13..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/SubProductDesc.java.svn-base +++ /dev/null @@ -1,49 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.List; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; - -/** - * Clase que se encarga de completar descripcion del modulo, producto, y subproducto, dado un codigo de query alias. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SubProductDesc extends QueryRule { - - /** - * Metodo que completa descripciones de modulo, producto y sub producto. - */ - @Override - @SuppressWarnings("unchecked") - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TGENESUBPRODUCT"); - if (lobjects == null) { - return pQueryRequest; - } - for (Object obj : lobjects) { - TgeneSubProduct subprod = (TgeneSubProduct) obj; - if (subprod.getPk().getModulecode() == null) { - continue; - } - // module descripion - subprod.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(subprod.getPk().getModulecode())); - // product description - subprod.addAddtionalInfo("productdesc", - GeneralDescriptions.getProductdesc(subprod.getPk().getModulecode(), subprod.getPk().getProductcode())); - // subproduct description - subprod.addAddtionalInfo("subproductdesc", GeneralDescriptions.getSubProductdesc(subprod.getPk().getModulecode(), subprod.getPk() - .getProductcode(), subprod.getPk().getSubproductcode())); - } - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/VerifyClientData.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/VerifyClientData.java.svn-base deleted file mode 100644 index bc32bd4..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/code/.svn/text-base/VerifyClientData.java.svn-base +++ /dev/null @@ -1,128 +0,0 @@ -package com.fp.general.rules.query.code; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.db.DataHelper; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.auth.TgeneSolicitudeClientdata; - -/** - * Clase que se encarga de consultar los valores para verificar los clientes de una solicitud - * - * @author scastillo - */ -public class VerifyClientData extends QueryRule { - - String transactionmodule; - - Integer transactioncode; - - String solicitudnumber; - - Integer solicitudsequence; - - Integer personcode; - - String module; - - String productcode; - - String subproductcode; - - String persontype; - - String relationshipcode; - - /** - * Sentencia SQL para obtener los datos de la pgina a cargar - */ - private static final String SQL = "select tgt.TITLE t, tgt.PAGE p, tgt.QUERYFUNCTION q, tgt.SAVEFUNCTION s" + " from TGENETRANSACTIONPAGES tgt" - + " where tgt.TRANSACTIONMODULE = :transactionmodule" + " and tgt.TRANSACTIONCODE = :transactioncode and tgt.ACTIVE='Y' " - + " and tgt.TITLE in (select tgs.title" + " from TGENESOLICITUDECLIENTDATA tgs" - + " where tgs.SOLICITUDNUMBER = :solicitudnumber" - + " and tgs.SOLICITUDSEQUENCE = :solicitudsequence" + " and tgs.PERSONCODE = :personcode)"; - - /** - * Metodo que se encarga de - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - this.transactionmodule = (String) pQueryRequest.get("transactionmodule"); - this.transactioncode = (Integer) pQueryRequest.get("transactioncode"); - this.solicitudnumber = (String) pQueryRequest.get("solicitudnumber"); - this.solicitudsequence = (Integer) pQueryRequest.get("solicitudsequence"); - this.personcode = (Integer) pQueryRequest.get("personcode"); - this.module = (String) pQueryRequest.get("module"); - this.productcode = (String) pQueryRequest.get("productcode"); - this.subproductcode = (String) pQueryRequest.get("subproductcode"); - this.persontype = (String) pQueryRequest.get("persontype"); - this.relationshipcode = (String) pQueryRequest.get("relationshipcode"); - response.put("transactions", this.getTransactionInfo()); - return pQueryRequest; - } - - /** - * Metodo que ejecuta la sentencia sql para obtener los datos de la base de datos - * - * @param pQueryRequest - * @return - * @throws Exception - */ - private ScrollableResults executeQuery() throws Exception { - ScrollableResults rSet = null; - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(VerifyClientData.SQL); - sql.setString("transactionmodule", this.transactionmodule); - sql.setInteger("transactioncode", this.transactioncode); - sql.setString("solicitudnumber", this.solicitudnumber); - sql.setInteger("solicitudsequence", this.solicitudsequence); - sql.setInteger("personcode", this.personcode); - rSet = sql.scroll(); - return rSet; - } - - /** - * Metodo que se encarga de armar la estructura para la verificacion de clientes - * - * @return - * @throws Exception - */ - private List> getTransactionInfo() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - mData.put("t", obj[0]);// titulo - mData.put("p", obj[1]);// pagina - mData.put("q", obj[2]);// funcion query - mData.put("s", obj[3]);// funcion save - TgeneSolicitudeClientdata tgeneSolicitudeClientdata = DataHelper.getInstance().getTgeneSolicitudeClientdata(this.solicitudnumber, - this.solicitudsequence, (String) obj[0], this.personcode); - mData.put("r", tgeneSolicitudeClientdata.getRecordversion());// Record version - mData.put("c", tgeneSolicitudeClientdata.getChecked());// Checked - mData.put("o", tgeneSolicitudeClientdata.getPresentationorder());// Orden - mData.put("m", "N"); - ldata.add(mData); - } - } finally { - rSet.close(); - } - return ldata; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/entries deleted file mode 100644 index 024d156..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/query/trans -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -panel -dir - -ObtainTechnicalPatrimony.java -file - - - - -2022-07-28T03:40:43.643807Z -6914dc9be49f7854754d519f630579c8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5217 - -ProductsByClient.java -file - - - - -2022-07-28T03:40:43.643807Z -21b77829579fdbbcc52f1bdce1fe15d0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9978 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ObtainTechnicalPatrimony.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ObtainTechnicalPatrimony.java.svn-base deleted file mode 100644 index c102f77..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ObtainTechnicalPatrimony.java.svn-base +++ /dev/null @@ -1,114 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.rules.query.trans; - -import java.sql.Date; -import java.util.List; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.balance.TcustPersonBalance; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - *Clase que genera el patrimonio tecnico de una persona dado su codigo - * @author hinga - */ -public class ObtainTechnicalPatrimony extends QueryRule { - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - com.fp.bpm.query.Query query = new com.fp.bpm.query.Query(); - query.process(pQueryRequest); - QueryBean queryBean = (QueryBean) pQueryRequest.get("TCUSTPERSONDETAIL"); - TcustPersonDetail tcustPersonDetail = (TcustPersonDetail) response.get("TCUSTPERSONDETAIL"); - Integer personcode = Integer.valueOf(queryBean.getCriteriaValue("pk.personcode").toString()); - TcustPersonBalance tcustPersonBalance = this.getBalancePerPerson(personcode); - if (tcustPersonBalance != null) { - Object patri = this.getPatrimony(personcode, tcustPersonBalance.getPk().getBalancedate(), tcustPersonBalance.getPk().getBalancecatalog()); - tcustPersonDetail.addAddtionalInfo("patrimony", patri); - } else { - tcustPersonDetail.addAddtionalInfo("patrimony", 0); - } - - return pQueryRequest; - } - /** Sentencia que devuelve el balance dado el cdigo de persona.*/ - public static final String JPQL_BALANCE_PER_PERSON = "from TcustPersonBalance p where p.pk.personcode = :personcode " - + "and p.statuscatalog = '1' " - + "and p.pk.dateto = :dateto " - + "and p.pk.balancedate = (select max(c.pk.balancedate) from TcustPersonBalance c where c.pk.personcode = p.pk.personcode and c.statuscatalog = '1' and p.pk.dateto = c.pk.dateto)"; - - /** - * Metodo que entrega un balance dado un codigo de persona. - * @param personcode Codigo de la persona - * @return TcustPersonBalance - */ - public TcustPersonBalance getBalancePerPerson(Integer personcode) throws Exception { - TcustPersonBalance tcustPersonBalance = null; - Query qry = PersistenceHelper.getEntityManager().createQuery(ObtainTechnicalPatrimony.JPQL_BALANCE_PER_PERSON); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - List tBalance = qry.getResultList(); - if (!tBalance.isEmpty()) { - tcustPersonBalance = (TcustPersonBalance)tBalance.get(0); - } - return tcustPersonBalance; - } - - /**Sentencia que devuelve el patrimonio tcnico del ltimo balance del tipo BG */ - public static final String HQL_TECHNICAL_PATRIMONY_BG = "select sum(t.valueaccount) " - + "from TcustBalanceFinancial t" - + " where t.pk.personcode = :pPersonCode " - + "and t.pk.dateto = :pDateto " - + "and t.pk.balancecatalog = :pBalancecatalog " - + "and t.pk.balancecatalogcode = 'BALANCETYPE' " - + "and t.pk.accountcode in ('51','52','53','54','55','56','57','58') " - + "and t.pk.balancedate = :pBalancedate"; - - /**Sentencia que devuelve el patrimonio tcnico del ltimo balance del tipo IFI */ - public static final String HQL_TECHNICAL_PATRIMONY_IFIS = "select t.valueaccount " - + "from TcustBalanceFinancial t " - + "where t.pk.personcode = :pPersonCode " - + "and t.pk.dateto = :pDateto " - + "and t.pk.balancecatalog = :pBalancecatalog " - + "and t.pk.balancecatalogcode = 'BALANCETYPE' " - + "and t.pk.accountcode = '3' " - + "and t.pk.balancedate = :pBalancedate"; - - /** - * - * @param personcode Cdigo de la persona - * @param balanceDate Date balanceDate - * @return Object - * @throws Exception - */ - public Object getPatrimony(Integer personcode, Date balanceDate, String balanceCatalog) throws Exception { - Query qry = null; - Object obj = null; - if (balanceCatalog.compareTo("BG") == 0) { - qry = PersistenceHelper.getEntityManager().createQuery(ObtainTechnicalPatrimony.HQL_TECHNICAL_PATRIMONY_BG); - } else if (balanceCatalog.compareTo("BG(IFIS)") == 0) { - qry = PersistenceHelper.getEntityManager().createQuery(ObtainTechnicalPatrimony.HQL_TECHNICAL_PATRIMONY_IFIS); - } - qry.setParameter("pPersonCode", personcode); - qry.setParameter("pDateto", Constant.getDefaultExpiryTimestamp()); - qry.setParameter("pBalancecatalog", balanceCatalog); - qry.setParameter("pBalancedate", balanceDate); - try { - obj = qry.getSingleResult(); - } catch (NoResultException e) { - } - return obj; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ProductsByClient.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ProductsByClient.java.svn-base deleted file mode 100644 index 23e2ba4..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/.svn/text-base/ProductsByClient.java.svn-base +++ /dev/null @@ -1,218 +0,0 @@ -package com.fp.general.rules.query.trans; - -import com.fp.common.helper.Constant; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pgeneral.acco.TgeneAccount; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatusKey; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneBranchKey; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.gene.TgeneOfficeKey; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProductKey; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProductKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import javax.persistence.Query; - -public class ProductsByClient extends QueryRule { - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - QueryBean queryBean = (QueryBean) pQueryRequest.get("TCUSTPERSONDETAIL"); - Integer personcode = Integer.valueOf(queryBean.getCriteriaValue("pk.personcode").toString()); - List ldata = TgeneAccount.find(PersistenceHelper.getEntityManager(), pQueryRequest.getCompany(), personcode); - this.fillResponse(response, pQueryRequest.getUser(), ldata); - return pQueryRequest; - } - - private void fillResponse(Response response, String usercode, List ldata) throws Exception { - List> lresult = new ArrayList>(); - for (TgeneAccount obj : ldata) { - Map m = this.processBYAccount(obj, usercode); - lresult.add(m); - } - response.put("datos", lresult); - } - - private Map processBYAccount(TgeneAccount tgeneAccount, String usercode) throws Exception { - Map m = new HashMap(); - m.put("branch", this.getBranchName(tgeneAccount)); //nombre de la sucursal - m.put("office", this.getOfficeName(tgeneAccount)); //nombre de la oficiana - m.put("descmodule", this.getModuleName(tgeneAccount)); //nombre del mdulo - m.put("product", this.getProductName(tgeneAccount)); //nombre del producto - m.put("subproduct", this.getSubProductName(tgeneAccount)); //nombre del subproducto - m.put("currency", this.getCurrencyName(tgeneAccount)); //nombre de la moneda - m.put("executive", this.getExecutiveName(tgeneAccount, usercode)); //nombre del ejecutivo - m.put("operation", tgeneAccount.getPk().getAccount()); //nmeo de operacin - m.put("operationstatus", tgeneAccount.getAccountstatuscode()); //cdigo de estado de operacin - TgeneAccountStatusKey tgeneAccountStatusKey = new TgeneAccountStatusKey(tgeneAccount.getModulecode(), tgeneAccount.getAccountstatuscode()); - TgeneAccountStatus tgeneAccountStatus = TgeneAccountStatus.find(PersistenceHelper.getEntityManager(), tgeneAccountStatusKey); - m.put("operationdesc", tgeneAccountStatus.getDescription()); //cdigo de estado de operacin - m.put("account", tgeneAccount.getPk().getAccount()); //numero de cuenta - m.put("company", tgeneAccount.getPk().getCompany()); //numero de compania - m.put("module", tgeneAccount.getModulecode()); //numero de mdulo - return m; - } - - /** - * Metodo que entrega el nombre de la sucursal a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getBranchName(TgeneAccount tgeneAccount) throws Exception { - String branch = ""; - if (tgeneAccount.getBranchcode() != null && tgeneAccount.getPk().getCompany() != null) { - TgeneBranchKey key = new TgeneBranchKey(tgeneAccount.getBranchcode(), tgeneAccount.getPk().getCompany()); - if (key != null) { - TgeneBranch b = TgeneBranch.find(PersistenceHelper.getEntityManager(), key); - branch = b.getDescription(); - } - } - return branch; - } - - /** - * Metodo que entrega el nombre de la oficina a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getOfficeName(TgeneAccount tgeneAccount) throws Exception { - String office = ""; - if (tgeneAccount.getOfficecode() != null && tgeneAccount.getBranchcode() != null && tgeneAccount.getPk().getCompany() != null) { - TgeneOfficeKey key = new TgeneOfficeKey(tgeneAccount.getOfficecode(), tgeneAccount.getBranchcode(), tgeneAccount.getPk().getCompany()); - if (key != null) { - TgeneOffice o = TgeneOffice.find(PersistenceHelper.getEntityManager(), key); - office = o.getDescription(); - } - } - return office; - } - - /** - * Metodo que entrega el nombre del mdulo a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getModuleName(TgeneAccount tgeneAccount) throws Exception { - String modul = ""; - if (tgeneAccount.getModulecode() != null) { - TgeneModule mo = TgeneModule.find(PersistenceHelper.getEntityManager(), tgeneAccount.getModulecode()); - modul = mo.getDescription(); - } - return modul; - } - - /** - * Metodo que entrega el nombre del producto a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getProductName(TgeneAccount tgeneAccount) throws Exception { - String product = ""; - if (tgeneAccount.getModulecode() != null && tgeneAccount.getProductcode() != null) { - TgeneProductKey key = new TgeneProductKey(tgeneAccount.getModulecode(), tgeneAccount.getProductcode()); - if (key != null) { - TgeneProduct p = TgeneProduct.find(PersistenceHelper.getEntityManager(), key); - product = p.getDescription(); - } - } - return product; - } - - /** - * Metodo que entrega el nombre del subproducto a la que pertenece la - * cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getSubProductName(TgeneAccount tgeneAccount) throws Exception { - String subprod = ""; - if (tgeneAccount.getModulecode() != null && tgeneAccount.getProductcode() != null && tgeneAccount.getSubproductcode() != null) { - TgeneSubProductKey key = new TgeneSubProductKey(tgeneAccount.getModulecode(), tgeneAccount.getProductcode(), tgeneAccount.getSubproductcode()); - if (key != null) { - TgeneSubProduct sp = TgeneSubProduct.find(PersistenceHelper.getEntityManager(), key); - subprod = sp.getDescription(); - } - } - return subprod; - } - - /** - * Metodo que entrega el nombre de la moneda a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @return String - * @throws Exception - */ - private String getCurrencyName(TgeneAccount tgeneAccount) throws Exception { - String curre = ""; - if (tgeneAccount.getCurrencycode() != null) { - TgeneCurrency c = TgeneCurrency.find(PersistenceHelper.getEntityManager(), tgeneAccount.getCurrencycode()); - curre = c.getDescription(); - } - return curre; - } - - /** - * Metodo que entrega el nombre del ejecutivo a la que pertenece la cuenta. - * - * @param tgeneAccount Datos generales de la cuenta. - * @param response - * @return - * @throws Exception - */ - private String getExecutiveName(TgeneAccount tgeneAccount, String usercode) throws Exception { - TsafeUserDetail ud = null; - String nombExecuti = ""; - String sql = "from TsafeUserDetail t" - + " where t.pk.usercode = :usercode" - + " and t.pk.personcode = :personcode" - + " and t.pk.dateto = :dateto" - + " and t.officecode = :officecode"; - if (usercode != null && tgeneAccount.getPersoncode() != null && tgeneAccount.getOfficecode() != null) { - Query qry = PersistenceHelper.getEntityManager().createQuery(sql); - qry.setParameter("usercode", usercode); - qry.setParameter("personcode", tgeneAccount.getPersoncode()); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("officecode", tgeneAccount.getOfficecode()); - List obj = qry.getResultList(); - if (obj.size() > 0) { - ud = (TsafeUserDetail) obj.get(0); - } - if (ud != null) { - TcustPersonDetailKey personKey = new TcustPersonDetailKey(ud.getPk().getPersoncode(), Constant.getDefaultExpiryTimestamp()); - if (personKey != null) { - TcustPersonDetail ex = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), personKey); - nombExecuti = ex.getName(); - } - } - } - return nombExecuti; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/entries deleted file mode 100644 index 0e6e09c..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ProductPanels.java -file - - - - -2022-07-28T03:40:43.595807Z -ae77e26adc1543b87249730dac05f34d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3960 - -TransactionPanels.java -file - - - - -2022-07-28T03:40:43.595807Z -a65a123f8ad4a283c89c00d3aefd6edc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4054 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/ProductPanels.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/ProductPanels.java.svn-base deleted file mode 100644 index 6468f88..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/ProductPanels.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.general.rules.query.trans.panel; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.BeanManager; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.page.TgeneSubproductPages; - -/** - * Clase que se encarga de entregar una lista con las paginas a contruir paneles dinamicamente - * en la pantalla por subproducto. - * @author Jorge Vaca - * @version 2.1 - */ -public class ProductPanels extends QueryRule { - - /** - * Metodo que obtiene saldos promedio de una cuenta a la vista. - * @param pQueryRequest Datos de entrada de la consulta. - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - List> lData = this.fillData(pQueryRequest); - response.put("PRODUCTPANELS", lData); - return pQueryRequest; - } - - /** - * Metodo que llena una lista con las paginas asociadas a un producto, transaccion. - * @param pQueryRequest Datos del request. - * @return List> - * @throws Exception - */ - private List> fillData(QueryRequest pQueryRequest) throws Exception { - List> lData = new ArrayList>(); - List lPages = this.getTgeneSubproductPages(pQueryRequest); - for (TgeneSubproductPages tgeneSubproductPages : lPages) { - Map m = new HashMap(); - m.put("cod", tgeneSubproductPages.getPk().getSequence()); - m.put("t", tgeneSubproductPages.getTitle()); - m.put("p", tgeneSubproductPages.getPage()); - m.put("q", tgeneSubproductPages.getQueryfunction()); - m.put("s", tgeneSubproductPages.getSavefunction()); - m.put("d", "N"); - m.put("down", tgeneSubproductPages.getAutodownload()); - lData.add(m); - } - lPages = null; - return lData; - } - - /** - * Metodo que entrega una lista de paginas a asociar en paneles en paginas. - * @param pQueryRequest Datos del request. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - private List getTgeneSubproductPages(QueryRequest pQueryRequest) throws Exception { - List lData = null; - HqlStatement hql = new HqlStatement(HQL); - hql.setString("module", (String) BeanManager.convertObject(pQueryRequest.get("module"), String.class)); - hql.setString("product", (String) BeanManager.convertObject(pQueryRequest.get("product"), String.class)); - hql.setString("subproduct", (String) BeanManager.convertObject(pQueryRequest.get("subproduct"), String.class)); - hql.setString("tmodule", pQueryRequest.getTransactionModule()); - hql.setInteger("tcode", pQueryRequest.getTransactionCode()); - hql.setInteger("tversion", pQueryRequest.getTransactionVersion()); - lData = hql.execute().getResultList(); - return lData; - } - /** - * Sentencia que entrega las paginas asociadas a un modulo, producto tipo. - */ - private static final String HQL = - " from TgeneSubproductPages t " - + " where t.pk.modulecode = :module " - + " and t.pk.productcode = :product " - + " and t.pk.subproductcode = :subproduct " - + " and t.pk.transactionmodule = :tmodule " - + " and t.pk.transactioncode = :tcode " - + " and t.pk.transactionversion = :tversion " - + " and coalesce(t.active,'N') = 'Y' " - + " order by t.presentationorder "; -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/TransactionPanels.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/TransactionPanels.java.svn-base deleted file mode 100644 index 63f5bfe..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/query/trans/panel/.svn/text-base/TransactionPanels.java.svn-base +++ /dev/null @@ -1,98 +0,0 @@ -package com.fp.general.rules.query.trans.panel; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.HqlStatement; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pgeneral.page.TgeneTransactionPages; - -/** - * Clase que se encarga de entregar una lista con las paginas a contruir paneles dinamicamente - * en la pantalla. - * @author Jorge Vaca - * @version 2.1 - */ -public class TransactionPanels extends QueryRule { - - private String filterTitle; - - /** - * Metodo que obtiene saldos promedio de una cuenta a la vista. - * @param pQueryRequest Datos de entrada de la consulta. - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - this.filterTitle = (String) pQueryRequest.get("filterTitle"); - List> lData = this.fillData(pQueryRequest); - response.put("TRANSPANELS", lData); - return pQueryRequest; - } - - /** - * Metodo que llena una lista de paginas asociadas a una transaccion. - * @param pQueryRequest Datos del request. - * @return List> - * @throws Exception - */ - private List> fillData(QueryRequest pQueryRequest) throws Exception { - List> lData = new ArrayList>(); - List lPages = this.getTgeneTransactionPages(pQueryRequest.getTransactionModule(), - pQueryRequest.getTransactionCode(), pQueryRequest.getTransactionVersion()); - for (TgeneTransactionPages tgeneTransactionPages : lPages) { - Map m = new HashMap(); - m.put("cod", tgeneTransactionPages.getPk().getSequence()); - m.put("t", tgeneTransactionPages.getTitle()); - m.put("p", tgeneTransactionPages.getPage()); - m.put("q", tgeneTransactionPages.getQueryfunction()); - m.put("s", tgeneTransactionPages.getSavefunction()); - m.put("d", "N"); - m.put("down", tgeneTransactionPages.getAutodownload()); - lData.add(m); - } - lPages = null; - return lData; - } - - /** - * Metodo que entrega una lista de paginas a asociar en paneles en paginas. - * @param pModule Codigo de modulo. - * @param pTransaction Codigo de transaccion. - * @param pVersion Version de la transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - private List getTgeneTransactionPages(String pModule, Integer pTransaction, Integer pVersion) throws Exception { - List lData = null; - String sentence = null; - if (this.filterTitle != null) { - sentence = HQL_HEADER + " and title " + this.filterTitle + " " + HQL_FOOTER; - } else { - sentence = HQL_HEADER + HQL_FOOTER; - } - HqlStatement hql = new HqlStatement(sentence); - hql.setString("module", pModule); - hql.setInteger("transaction", pTransaction); - hql.setInteger("version", pVersion); - lData = hql.execute().getResultList(); - return lData; - } - /** - * Sentencia cabecera que entrega las paginas asociadas a una transaccion. - */ - private static final String HQL_HEADER = - " from TgeneTransactionPages t " - + " where t.pk.transactionmodule = :module" - + " and t.pk.transactioncode = :transaction" - + " and t.pk.transactionversion = :version" - + " and coalesce(t.active,'N') = 'Y'"; - /** - * Sentencia cabecera que entrega las paginas asociadas a una transaccion. - */ - private static final String HQL_FOOTER = " order by t.presentationorder "; -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/entries deleted file mode 100644 index 284d722..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/save -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EraseCache.java -file - - - - -2022-07-28T03:40:43.809808Z -5e34dec69c661645009bc939ac191c19 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -709 - -GenerateAccountingDate.java -file - - - - -2022-07-28T03:40:43.809808Z -35e280ca2323628d39819d26ea97dcba -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11173 - -VerifyOverlapSubProductChargesAmount.java -file - - - - -2022-07-28T03:40:43.810808Z -69ed2fc64cf822064ae6d61fc74dde9b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4410 - -ChangeAccountingDate.java -file - - - - -2022-07-28T03:40:43.810808Z -0c00a8af3b4e48287790b5a8cc0b82c5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4860 - -VerifyOverlapChargesAmount.java -file - - - - -2022-07-28T03:40:43.810808Z -929badca50f9dba601d61343f81a1801 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3766 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/ChangeAccountingDate.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/ChangeAccountingDate.java.svn-base deleted file mode 100644 index 29331ae..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/ChangeAccountingDate.java.svn-base +++ /dev/null @@ -1,132 +0,0 @@ -package com.fp.general.rules.save; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.HashMap; -import java.util.Map; - -import com.fp.common.helper.CalculationBase; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDate; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateKey; - -/** - * Calse que se encarga de cambiar la fecha contable de la aplicacion. - * @author Jorge Vaca. - * @version 2.1 - * - */ -public class ChangeAccountingDate extends TransactionRule{ - - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - TgeneAccountingDateBranch ad = DataHelper.getInstance().getTgeneAccountingDateBranch(pSaveRequest.getCompany(), 0); - //Fecha contable anterior - this.fillPrevious(ad); - APPDates d = new APPDates(ad.getRealdate(),CalculationBase.B365365); - boolean aux = true; - while (aux) { - aux = this.fillAccountingdate(ad, pSaveRequest.getCompany(), d); - } - //Proxima Fecha contable - this.fillNext(ad, d, pSaveRequest.getCompany()); - PersistenceHelper.saveOrUpdate(ad); - this.fillResponse(pSaveRequest, ad); - return pSaveRequest; - } - - /** - * Fija la fecha contable anterior. - * @param ad Objeto que contiene los datos actuales de la fecha contable. - * @throws Exception - */ - private void fillPrevious(TgeneAccountingDateBranch ad) throws Exception { - if(ad.getRealdate().compareTo(ad.getAccountingdate()) < 0){ - ad.setPreviousaccountingdate(ad.getPreviousaccountingdate()); - }else{ - ad.setPreviousaccountingdate(ad.getAccountingdate()); - } - } - - /** - * Fija la proxima fecha cobtable. - * @param ad Objeto que contiene la proxima fecha contable. - * @param d Rerefencia al objeto AppDates - * @param pCompany Codigo de compania. - * @throws Exception - */ - private void fillNext(TgeneAccountingDateBranch ad,APPDates d,Integer pCompany) throws Exception { - d = new APPDates(ad.getAccountingdate(),CalculationBase.B365365); - d.addField(Calendar.DAY_OF_YEAR, 1); - TgeneAccountingDate cal = this.getTgeneAccountingDate(0, pCompany, d.getDate()); - ad.setNextaccountingdate(cal.getAccountingdate()); - } - - /** - * Metodo que fija la fecha contable. - * @param ad Objeto que contiene la proxima fecha contable. - * @param pCompany Codigo de compania. - * @param d Rerefencia al objeto AppDates - * @return boolean - * @throws Exception - */ - private boolean fillAccountingdate(TgeneAccountingDateBranch ad,Integer pCompany,APPDates d ) throws Exception { - boolean aux = true; - d.addField(Calendar.DAY_OF_YEAR, 1); - TgeneAccountingDate cal = this.getTgeneAccountingDate(0, pCompany, d.getDate()); - ad.setAccountingdate(cal.getAccountingdate()); - ad.setWorkingdate(cal.getWorkingdate()); - ad.setRealdate(cal.getPk().getRealdate()); - if(ad.getWorkingdate().compareTo(ad.getAccountingdate()) == 0 ){ - if(ad.getWorkingdate().compareTo(ad.getRealdate()) == 0){ - aux = false; - } - }else{ - aux = false; - } - // - return aux; - } - - private TgeneAccountingDate getTgeneAccountingDate(Integer pBranch, Integer pCompany,Date pDate) throws Exception { - TgeneAccountingDateKey key = new TgeneAccountingDateKey(0,pCompany,pDate); - TgeneAccountingDate cal = TgeneAccountingDate.find(PersistenceHelper.getEntityManager(), key); - if(cal == null){ - SimpleDateFormat fd = new SimpleDateFormat("dd-MM-yyyy"); - throw new GeneralException("GENE-0024","CALENDARIO NO DEFINIDO EN TGENEACCOUNTINGDATE PARA LA FECHA: {0} ", fd.format(pDate)); - } - return cal; - } - - /** - * Arma la respuesta con las fechas resultanrtes. - * @param pSaveRequest Datos del request original. - * @param ad Objeto que contiene la proxima fecha contable. - * @throws Exception - */ - private void fillResponse(SaveRequest pSaveRequest,TgeneAccountingDateBranch ad) throws Exception { - Map m = new HashMap(); - m.put("realdate", ad.getRealdate()); - m.put("workdate", ad.getWorkingdate()); - m.put("accodate", ad.getAccountingdate()); - pSaveRequest.getResponse().put("NEXTDATE", m); - } - /* (non-Javadoc) - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - // No tiene reverso - return pSaveRequest; - } - - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/EraseCache.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/EraseCache.java.svn-base deleted file mode 100644 index a34f1a2..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/EraseCache.java.svn-base +++ /dev/null @@ -1,28 +0,0 @@ -package com.fp.general.rules.save; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.cache.CacheManager; - -/** - * Clase que borra la cach de la aplicacin - * - * @author amerchan - * @version 2.1 - */ -public class EraseCache extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - CacheManager.getInstance().cleanAll(); - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/GenerateAccountingDate.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/GenerateAccountingDate.java.svn-base deleted file mode 100644 index 37caa42..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/GenerateAccountingDate.java.svn-base +++ /dev/null @@ -1,290 +0,0 @@ -package com.fp.general.rules.save; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.common.helper.CalculationBase; -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDate; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateKey; -import com.fp.persistence.pgeneral.date.TgeneNotAccountingDay; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneBranchKey; - -/** - * Clase que se encarga de generar las fechas contables para un tiempo - * determinado - * - * @author scastillo - * @version 2.1 - */ -public class GenerateAccountingDate extends TransactionRule { - - /** - * Map que contiene los datos del request de los dias contables y no - * contables - */ - private Map> mdays = new HashMap>(); - /** - * Lista de dias no contables por mes. - */ - private List lnotaccountingdays; - /** - * Fecha de inicio de generacion del calendario. - */ - private Date initdatedate; - /** - * Fecha de finalizacion de genercion del calendario. - */ - private Date enddate; - - /** - * Metodo que genra las fechas contables - * - * @param saveRequest Datos del request original. - * @return SaveRequest - * @throws Exception - */ - public SaveRequest normalProcess(SaveRequest saveRequest) throws Exception { - this.fillMapDay(saveRequest); - lnotaccountingdays = TgeneNotAccountingDay.findAll(PersistenceHelper.getEntityManager()); - enddate = (Date) saveRequest.get("enddate"); - this.processBranches(saveRequest); - return saveRequest; - } - - /** - * Metodo que genera fechas contables para la sucursal oficina de proceso. - * - * @param saveRequest Datos del request original. - * @throws Exception - */ - private void processBranches(SaveRequest saveRequest) throws Exception { - Integer init = Integer.parseInt(saveRequest.get("branchcodemin").toString()); - Integer end = Integer.parseInt(saveRequest.get("branchcodemax").toString()); - while (init <= end) { - TgeneBranchKey tgeneBranchKey = new TgeneBranchKey(init, saveRequest.getCompany()); - TgeneBranch tgeneBranch = TgeneBranch.find(PersistenceHelper.getEntityManager(), tgeneBranchKey); - if (tgeneBranch != null) { - //Obtiene la fecha de inicio por cada sucursal - initdatedate = (Date) saveRequest.get("initdate"); - this.delete(init, saveRequest.getCompany()); - this.validateDatesByBranch(init, saveRequest.getCompany()); - this.processByDate(saveRequest, init); - } - init++; - } - } - - private void processByDate(SaveRequest saveRequest, Integer pBranch) throws Exception { - APPDates d = new APPDates(initdatedate, CalculationBase.B365365); - while (initdatedate.compareTo(enddate) <= 0) { - this.generateCalendar(saveRequest, pBranch, d); - d.addField(Calendar.DAY_OF_YEAR, 1); - initdatedate = d.getDate(); - } - } - - /** - * - * @param saveRequest Datos del request original. - * @param pBranch Codigo de sucursal a generar la fecha contable. - * @param d Fecha real con la cual se obtiene la fecha de trabajo y la - * contable. - * @throws Exception - */ - private void generateCalendar(SaveRequest saveRequest, Integer pBranch, APPDates d) throws Exception { - Map m = this.mdays.get(d.getField(Calendar.DAY_OF_WEEK)); - TgeneAccountingDateKey key = new TgeneAccountingDateKey(); - key.setCompanycode(saveRequest.getCompany()); - key.setBranchcode(pBranch); - key.setRealdate(d.getDate()); - TgeneAccountingDate obj = new TgeneAccountingDate(); - obj.setPk(key); - obj.setAccountingdate(this.getDate(d, "accounting", m)); - obj.setWorkingdate(this.getDate(d, "working", m)); - PersistenceHelper.save(obj); - } - - /** - * Entrega la fecha contable para una fecha real. - * - * @param d Fecha real con la cual se obtien la fecha de trabajo y la fecha - * contable. - * @param fieldname Nombre del campo, working o accounting - * @param m Map que contien indica si la fecha es laborable y/o contable. - * @return Date - * @throws Exception - */ - private Date getDate(APPDates d, String fieldname, Map m) throws Exception { - if (m.get(fieldname)) { - if (fieldname.compareTo("working") == 0) { - return d.getDate(); - } else if (this.validateDayOfTheMonth(d)) { - //Si es fecha contable verifica que el dia dentro del mes sea contable. - return d.getDate(); - } - } - APPDates daux = new APPDates(d.getDate(), CalculationBase.B365365); - int day = d.getField(Calendar.DAY_OF_WEEK); - boolean cont = true; - while (cont) { - day++; - if (day == 8) { - day = 1; - } - daux.addField(Calendar.DAY_OF_YEAR, 1); - if (fieldname.compareTo("accounting") == 0 && !this.validateDayOfTheMonth(daux)) { - //Si el dia es no contable continua - continue; - } - if (this.mdays.get(day).get(fieldname)) { - cont = false; - } - } - return daux.getDate(); - } - - /** - * Valida si el dia es contable dentro del mes, ejemplo 1 de enero no es - * contable. - * - * @param d Fecha verificar si el dia es contable. - * @return boolean - * @throws Exception - */ - private boolean validateDayOfTheMonth(APPDates d) throws Exception { - boolean isaccounting = true; - String mes = String.valueOf(d.getField(Calendar.MONTH)); - if (mes.length() == 1) { - mes = "0" + mes; - } - for (TgeneNotAccountingDay obj : lnotaccountingdays) { - if (obj.getPk().getCatalog().compareTo(mes) != 0) { - continue; - } - int day = d.getField(Calendar.DAY_OF_MONTH); - if (obj.getPk().getDay().compareTo(day) == 0) { - isaccounting = false; - break; - } - } - return isaccounting; - } - - @SuppressWarnings("unchecked") - private void fillMapDay(SaveRequest saveRequest) throws Exception { - List lobj = saveRequest.getSaveBeanModifiedRecords("LISTACCOUNTINDATE"); - if(lobj == null || lobj.isEmpty()){ - lobj = (List)saveRequest.get("LISTACCOUNTINDATE"); - } - boolean isworking = false; - boolean isaccounting = false; - - for (Object object : lobj) { - Map m = (Map) object; - Integer day = Integer.parseInt(m.get("day").toString()); - String working = m.get("teller").toString(); - String accounting = m.get("accounting").toString(); - Map maux = new HashMap(); - maux.put("working", Constant.ifYes(working)); - maux.put("accounting", Constant.ifYes(accounting)); - mdays.put(day, maux); - if(!isworking){ - isworking = Constant.ifYes(working); - } - if(!isaccounting){ - isaccounting = Constant.ifYes(accounting); - } - } - if(!isaccounting || !isworking){ - throw new GeneralException("GENE-0052", "INGRESE AL MENOS UN DA CONATBLE Y DE TRABAJO PARA GENERAR EL CALENDARIO"); - } - } - - /** - * Sentencia que se encarga de eliminar el calendario de fechas por sucursal - */ - private static String DEL = "delete from TgeneAccountingDate t " - + " where t.pk.branchcode = :branch " - + " and t.pk.companycode = :company " - + " and t.pk.realdate >= :datefrom "; - - /** - * Elimna fechas del calendario por sucursal y mayor a la fecha a regenerar - * el calendario. - * - * @param pBracnch Codigo de sucursal. - * @param pCompany Codigo de compania. - * @throws Exception - */ - private void delete(Integer pBracnch, Integer pCompany) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery(DEL); - qry.setParameter("branch", pBracnch); - qry.setParameter("company", pCompany); - qry.setParameter("datefrom", this.initdatedate); - qry.executeUpdate(); - } - /** - * Sentencia que se encarga de eliminar el calendario de fechas por sucursal - */ - private static String SQL_VAL = "select max(t.pk.realdate) from TgeneAccountingDate t " - + " where t.pk.branchcode = :branch " - + " and t.pk.companycode = :company " - + " and t.pk.realdate < :datefrom "; - - /** - * Valida que en la generacion de del calendario no exista huecos de fechas - * realres. - * - * @param pBracnch Codigo de sucursal. - * @param pCompany Codigo de compania. - * @throws Exception - */ - private void validateDatesByBranch(Integer pBracnch, Integer pCompany) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery(SQL_VAL); - qry.setParameter("branch", pBracnch); - qry.setParameter("company", pCompany); - qry.setParameter("datefrom", this.initdatedate); - Date d = (Date) qry.getSingleResult(); - if (d == null) { - return; - } - APPDates appd = new APPDates(d, CalculationBase.B365365); - appd.addField(Calendar.DAY_OF_YEAR, 1); - if (appd.getDate().compareTo(initdatedate) < 0) { - SimpleDateFormat fd = new SimpleDateFormat("dd-MM-yyyy"); - throw new GeneralException("GENE-0019", "EL CALENDARIO NO PUEDE DEJAR HUECOS PARA LA SUCURSAL: {0} FCONTABLE ANTERIOR: {1}", pBracnch, fd.format(d)); - } - TgeneAccountingDateBranch ad = DataHelper.getInstance().getTgeneAccountingDateBranch(pCompany, 0); - if (ad.getRealdate().compareTo(initdatedate) > 0) { - throw new GeneralException("GENE-0020", "FECHA DE INICIO PARA GENERAR CALENDARIO NO PUEDE SER MENOR A: {0}", - ad.getRealdate()); - } - } - - /** - * Metodo que se ejecuta en modo reverso - * - * @param saveRequest - * @return SaveRequest - * @throws Exception - */ - public SaveRequest reverseProcess(SaveRequest saveRequest) throws Exception { - //En este caso no hacer nada no existen reversos. - return saveRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapChargesAmount.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapChargesAmount.java.svn-base deleted file mode 100644 index 843512f..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapChargesAmount.java.svn-base +++ /dev/null @@ -1,91 +0,0 @@ -package com.fp.general.rules.save; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.db.DataHelper; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.pgeneral.charge.TgeneCharges; - -/** - * Clase que se encarga de verificar traslape en montos de los cargos. - * - * @author Angel Merchan. - * @version 2.1 - * - */ -@SuppressWarnings("serial") -public class VerifyOverlapChargesAmount extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (pSaveRequest.getSaveBean("TGENECHARGES") != null) { - this.validateTgeneCharges(pSaveRequest); - } - - return pSaveRequest; - } - - private void validateTgeneCharges(SaveRequest pSaveRequest) throws Exception { - String modulecode = pSaveRequest.get("modulecode").toString(); - List lChargesModified = pSaveRequest.getSaveBeanModifiedRecords("TGENECHARGES"); - List lChargesDeleted = pSaveRequest.getSaveBeanDeletedRecords("TGENECHARGES"); - List lChargesDatabase = DataHelper.getInstance().getTgeneChargesByModule(modulecode); - - List lChargesFinal = new ArrayList(); - - lChargesFinal = Constant.getFinalList(lChargesDatabase, Constant.convertList(lChargesModified, TgeneCharges.class), - Constant.convertList(lChargesDeleted, TgeneCharges.class)); - - for (int i = 0; i < lChargesFinal.size(); i++) { - TgeneCharges prodchargesfinal = lChargesFinal.get(i); - this.validateOverlapCharges(prodchargesfinal, i + 1, lChargesFinal); - } - } - - /** - * Metodo que verifica el traslape de montos de un cargo - * - * @param prodchargesfinal - * @param index - * @param listSubProductChargesFinal - * @throws Exception - */ - private void validateOverlapCharges(TgeneCharges chargesfinal, int index, List lChargesFinal) throws Exception { - BigDecimal minamount = chargesfinal.getMinamount(); - BigDecimal maxamount = chargesfinal.getMaxamount(); - - if (minamount.compareTo(maxamount) >= 0) { - throw new GeneralException("GENE-0040", "EL MONTO MNIMO DEBE SER MENOR AL MONTO MXIMO EN {0}", "[CARGOS GENERALES]"); - } - - for (int i = index; i < lChargesFinal.size(); i++) { - TgeneCharges prodcharges = lChargesFinal.get(i); - - if (chargesfinal.equalsWithoutSequence(prodcharges)) { - - BigDecimal minamountcmp = prodcharges.getMinamount(); - BigDecimal maxamountcmp = prodcharges.getMaxamount(); - - if (((minamount.compareTo(maxamountcmp) <= 0) && (minamount.compareTo(minamountcmp) >= 0)) - || ((minamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0)) - || ((minamount.compareTo(minamountcmp) <= 0) && (maxamount.compareTo(maxamountcmp) >= 0)) - || ((maxamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0))) { - throw new GeneralException("GENE-0041", "LOS VALORES PARA EL TIPO DE BALANCE {0} SE SOBREPONEN EN {1}", chargesfinal.getPk() - .getBalancetype(), "[CARGOS GENERALES]"); - } - } - prodcharges = null; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapSubProductChargesAmount.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapSubProductChargesAmount.java.svn-base deleted file mode 100644 index 4a1d730..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/save/.svn/text-base/VerifyOverlapSubProductChargesAmount.java.svn-base +++ /dev/null @@ -1,95 +0,0 @@ -package com.fp.general.rules.save; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.charge.TgeneSubProductCharges; - -/** - * Clase que se encarga de verificar traslape en montos de los cargos. - * - * @author Angel Merchan. - * @version 2.1 - * - */ -@SuppressWarnings("serial") -public class VerifyOverlapSubProductChargesAmount extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (pSaveRequest.getSaveBean("TGENESUBPRODUCTCHARGES") != null) { - this.validateTgeneSubProductCharges(pSaveRequest); - } - - return pSaveRequest; - } - - private void validateTgeneSubProductCharges(SaveRequest pSaveRequest) throws Exception { - String modulecode = pSaveRequest.get("modulecode").toString(); - String productcode = pSaveRequest.get("productcode").toString(); - String subproductcode = pSaveRequest.get("subproductcode").toString(); - - List lSubProductChargesModified = pSaveRequest.getSaveBeanModifiedRecords("TGENESUBPRODUCTCHARGES"); - List lSubProductChargesDeleted = pSaveRequest.getSaveBeanDeletedRecords("TGENESUBPRODUCTCHARGES"); - List listSubProductChargesDatabase = TgeneSubProductCharges.find(PersistenceHelper.getEntityManager(), modulecode, - productcode, subproductcode); - List listSubProductChargesFinal = new ArrayList(); - - listSubProductChargesFinal = Constant.getFinalList(listSubProductChargesDatabase, - Constant.convertList(lSubProductChargesModified, TgeneSubProductCharges.class), - Constant.convertList(lSubProductChargesDeleted, TgeneSubProductCharges.class)); - - for (int i = 0; i < listSubProductChargesFinal.size(); i++) { - TgeneSubProductCharges prodchargesfinal = listSubProductChargesFinal.get(i); - this.validateOverlapSubProductCharges(prodchargesfinal, i + 1, listSubProductChargesFinal); - } - } - - /** - * Metodo que verifica el traslape de montos de un cargo - * - * @param prodchargesfinal - * @param index - * @param listSubProductChargesFinal - * @throws Exception - */ - private void validateOverlapSubProductCharges(TgeneSubProductCharges prodchargesfinal, int index, - List listSubProductChargesFinal) throws Exception { - BigDecimal minamount = prodchargesfinal.getMinamount(); - BigDecimal maxamount = prodchargesfinal.getMaxamount(); - - if (minamount.compareTo(maxamount) >= 0) { - throw new GeneralException("GENE-0040", "EL MONTO MNIMO DEBE SER MENOR AL MONTO MXIMO EN {0}", "[CARGOS POR SUBPRODUCTO]"); - } - - for (int i = index; i < listSubProductChargesFinal.size(); i++) { - TgeneSubProductCharges prodcharges = listSubProductChargesFinal.get(i); - - if (prodchargesfinal.equalsWithoutSequence(prodcharges)) { - BigDecimal minamountcmp = prodcharges.getMinamount(); - BigDecimal maxamountcmp = prodcharges.getMaxamount(); - - if (((minamount.compareTo(maxamountcmp) <= 0) && (minamount.compareTo(minamountcmp) >= 0)) - || ((minamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0)) - || ((minamount.compareTo(minamountcmp) <= 0) && (maxamount.compareTo(maxamountcmp) >= 0)) - || ((maxamount.compareTo(minamountcmp) >= 0) && (maxamount.compareTo(maxamountcmp) <= 0))) { - throw new GeneralException("GENE-0041", "LOS VALORES PARA EL TIPO DE BALANCE {0} SE SOBREPONEN EN {1}", prodchargesfinal.getPk() - .getBalancetype(), "[CARGOS POR SUBPRODUCTO]"); - } - } - prodcharges = null; - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/entries b/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/entries deleted file mode 100644 index 0ee97f4..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/rules/scheduler -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ChangeScheduleAccountingdate.java -file - - - - -2022-07-28T03:40:43.885808Z -18e455ff689cddb25b83c52a98d6ed25 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -864 - diff --git a/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/text-base/ChangeScheduleAccountingdate.java.svn-base b/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/text-base/ChangeScheduleAccountingdate.java.svn-base deleted file mode 100644 index 991aee6..0000000 --- a/base/business/general/src/main/java/com/fp/general/rules/scheduler/.svn/text-base/ChangeScheduleAccountingdate.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.general.rules.scheduler; - -import com.fp.dto.Response; -import com.fp.dto.rules.ScheduleRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.rules.save.ChangeAccountingDate; - -/** - * Clase que se encarga de ejecutar automaticamente transaccion de cambio de fecha contable. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class ChangeScheduleAccountingdate implements ScheduleRule { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.ScheduleRule#execute(com.fp.dto.save.SaveRequest) - */ - @Override - public void execute(SaveRequest pSaveRequest) throws Exception { - Response res = new Response(Response.RESPONSE_OK, "OK"); - pSaveRequest.setResponse(res); - ChangeAccountingDate cad = new ChangeAccountingDate(); - cad.normalProcess(pSaveRequest); - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/entries b/base/business/general/src/main/java/com/fp/general/scheduler/.svn/entries deleted file mode 100644 index 6a1bc57..0000000 --- a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/scheduler -svn://172.17.26.185/COMACO - - - -2014-09-11T06:56:07.548916Z -662 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MiaScheduler.java -file - - - - -2022-07-28T03:40:44.287810Z -2cb6c966730bd3283cd5969cdcd3bfb0 -2014-09-11T06:56:07.548916Z -662 -jvaca - - - - - - - - - - - - - - - - - - - - - -3453 - -SchedulerJob.java -file - - - - -2022-07-28T03:40:44.287810Z -060ca3c7c2c25c32bd6eafde20c37331 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6910 - diff --git a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/MiaScheduler.java.svn-base b/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/MiaScheduler.java.svn-base deleted file mode 100644 index b25bc60..0000000 --- a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/MiaScheduler.java.svn-base +++ /dev/null @@ -1,94 +0,0 @@ -package com.fp.general.scheduler; - -import java.util.List; - -import org.quartz.CronTrigger; -import org.quartz.JobDataMap; -import org.quartz.JobDetail; -import org.quartz.Scheduler; -import org.quartz.SchedulerFactory; -import org.quartz.impl.StdSchedulerFactory; - -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pgeneral.schedule.TgeneScheduleEvent; -import com.fp.persistence.pgeneral.schedule.TgeneScheduleParameters; - -/** - * Clase que se encarga de ejecutar tareas calendarizadas, que se parametrizan en TgeneSchdeleEven. - * @author Jorge Vaca - * @version 2.1 - */ -public class MiaScheduler { - - private MiaScheduler cahce; - private Scheduler scheduler; - - public void init() { - try { - SchedulerFactory sfact = new StdSchedulerFactory(); - scheduler = sfact.getScheduler(); - scheduler.start(); - //Obtine lista de eventos a procesar. - List ldata = TgeneScheduleEvent.find(PersistenceHelper.getEntityManager()); - if(ldata == null || ldata.isEmpty()){ - return; - } - TgeneScheduleParameters params = TgeneScheduleParameters.find(PersistenceHelper.getEntityManager(), - ThreadFacade.getSessionData().getCompany()); - if(params == null){ - throw new GeneralException("GENE-0034", "PARAMETROS PARA EJECUTAR TAREAS CALENDARIZADAS NO DEFINIDOS EN TGENSCHEDULEPARAMETERS", ThreadFacade.getSessionData().getCompany()); - } - //Calendariza tareas por evento. - for (TgeneScheduleEvent obj : ldata) { - //Va dentro del for para crear un nuevo JobDataMap de parametros por cada ejecucion. - JobDataMap jdm = this.fillMap(params); - this.processByEvent(obj,jdm); - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Metodo que define tareas calendarizadas, de acuerdo a la definicion del evento. - * @param event Objeto que contien caracteristicas de ejecucion de un evento. - * @param jdm Map con parametros que se asocian a la tarea calendarizada. - * @throws Exception - */ - private void processByEvent(TgeneScheduleEvent event,JobDataMap jdm) throws Exception { - jdm.put("evento", event.getPk()); - //crea un jobdetail - JobDetail jd = new JobDetail(event.getPk(),event.getPk(), SchedulerJob.class); - jd.setJobDataMap(jdm); - //crea el cron segundos minutos horas diames mes diasemana - //CronTrigger ct = new CronTrigger(event.getPk(),event.getPk(), "0 05 15 ? * 2-6"); - String cron = ""+event.getExesecond()+" "+event.getExeminute()+" "+event.getExehour()+" ? * "+event.getBeginweekday()+"-"+event.getEndweekday(); - CronTrigger ct = new CronTrigger(event.getPk(),event.getPk(), cron); - scheduler.scheduleJob(jd, ct); - } - - /** - * Crea un map con los datos de parametros de ejecucion de una tarea automatica. - * @param params Parametros de ejecucion de tareas automaticas. - * @return JobDataMap - * @throws Exception - */ - private JobDataMap fillMap(TgeneScheduleParameters params) throws Exception { - JobDataMap jdm = new JobDataMap(); - jdm.put("cia", params.getPk()); - jdm.put("suc", params.getBranchcode()); - jdm.put("ofi", params.getOfficecode()); - jdm.put("area", params.getAreacode()); - jdm.put("ter", params.getTerminalcode()); - jdm.put("can", params.getChannelcode()); - jdm.put("usu", params.getUsercode()); - return jdm; - } - - public void detenerJob() throws Exception{ - scheduler.shutdown(); - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/SchedulerJob.java.svn-base b/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/SchedulerJob.java.svn-base deleted file mode 100644 index a622007..0000000 --- a/base/business/general/src/main/java/com/fp/general/scheduler/.svn/text-base/SchedulerJob.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.general.scheduler; - -import org.quartz.Job; -import org.quartz.JobDataMap; -import org.quartz.JobExecutionContext; -import org.quartz.JobExecutionException; - -import com.fp.common.exception.CommonException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.ScheduleRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.schedule.TgeneScheduleLog; -import com.fp.persistence.pgeneral.schedule.TgeneScheduleLogKey; -import com.fp.persistence.pgeneral.schedule.TgeneScheduleProcess; - -/** - * Clase que se encarga de ejecutar tareas calendarizadas, que se parametrizan en TgeneSchdeleEven. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SchedulerJob implements Job { - - /* - * (non-Javadoc) - * - * @see org.quartz.Job#execute(org.quartz.JobExecutionContext) - */ - @Override - public void execute(JobExecutionContext context) throws JobExecutionException { - TgeneScheduleLog log = null; - Integer cia = null; - try { - JobDataMap jdm = context.getJobDetail().getJobDataMap(); - String event = jdm.getString("evento"); - APPLogger.getLogger().error("INICIA EJECUCION DE TAREA " + event); - // compania para obtener el entity manager - SessionData s = new SessionData(); - cia = jdm.getInt("cia"); - s.setCompany(cia); - - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - // ejecuta la tarea calendarizada. - TgeneScheduleProcess process = TgeneScheduleProcess.find(PersistenceHelper.getEntityManager(), event); - SaveRequest saveRequest = this.fillSaveRequest(jdm, process); - // Fija resultado de ejecucion de la tarea - log = this.createTgeneScheduleLog(event, saveRequest); - this.processByRule(process, jdm, saveRequest); - PersistenceHelper.save(log); - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackNewTransaction(); - this.saveError(cia, e, log); - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Metodo que se encarga de grabar el error que se genera en la ejecucion de la tarea calendarizada. - * - * @param exception Excepcion que contiene el error presentado. - * @throws Exception - */ - private void saveError(Integer cia, Exception exeption, TgeneScheduleLog log) { - try { - ExceptionHandler eh = new ExceptionHandler(exeption, "es"); - if (eh.getCode().length() > 20) { - log.setResultcode(eh.getCode().substring(0, 19)); - } else { - log.setResultcode(eh.getCode()); - } - if (eh.getUserMessage().length() > 399) { - log.setResultmessage(eh.getUserMessage().substring(0, 399)); - } else { - log.setResultmessage(eh.getUserMessage()); - } - new NestedSave(cia, log); - } catch (Exception e) { - APPLogger.getLogger().error(e, e); - } - - } - - /** - * Crea una instancia de TgeneScheduleLog, que almacena el resultado de la tarea calendarizada. - * - * @param pEvent codigo de evento de la tarea calendarizada. - * @param saveRequest Objeto que contiene el request de entrada de ejecucion de la tarea. - * @return TgeneScheduleLog - * @throws Exception - */ - private TgeneScheduleLog createTgeneScheduleLog(String pEvent, SaveRequest saveRequest) throws Exception { - TgeneScheduleLogKey key = new TgeneScheduleLogKey(); - key.setEventcode(pEvent); - key.setRealdate(FormatDates.getInstance().getDataBaseTimestamp()); - TgeneScheduleLog log = new TgeneScheduleLog(key); - TgeneAccountingDateBranch date = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - saveRequest.getCompany(), 0); - log.setProcessdate(date.getAccountingdate()); - log.setUsercode(saveRequest.getUser()); - log.setResultcode("0"); - log.setResultmessage("TRANSACCION REALIZADA CORRECTAMENTE"); - return log; - } - - /** - * Metodo encargado de ejecutar reglas de procesos calendarizados. - * - * @param pProcess Objeto que contiene la regla a ejecutar. - * @throws Exception - */ - private void processByRule(TgeneScheduleProcess pProcess, JobDataMap jdm, SaveRequest saveRequest) throws Exception { - ScheduleRule rule = null; - try { - rule = (ScheduleRule) Class.forName(pProcess.getProcesscode()).newInstance(); - } catch (ClassNotFoundException e) { - throw new CommonException("COMMON-0006", "REGLA {0} A EJECUTAR NO DEFINIDO MODULE: {1} TRANS: {2} VERSION {3}", - pProcess.getProcesscode(), e, saveRequest.getTransactionModule(), saveRequest.getTransactionCode(), - saveRequest.getTransactionVersion()); - } catch (ClassCastException e) { - throw new CommonException("COMMON-0007", "REGLA {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4}", e, - pProcess.getProcesscode(), saveRequest.getTransactionModule(), saveRequest.getTransactionCode(), - saveRequest.getTransactionVersion(), ScheduleRule.class.getName()); - } - rule.execute(saveRequest); - } - - /** - * Arma y entrega un objeto SaveRequest, utilizado en la ejecucion de transacciones. - * - * @param jdm Map con parametros necesarios para ejecutar una tarea calendarizada. - * @param process - * @return SaveRequest - * @throws Exception - */ - private SaveRequest fillSaveRequest(JobDataMap jdm, TgeneScheduleProcess process) throws Exception { - SaveRequest sq = new SaveRequest(); - sq.setCompany(jdm.getInt("cia")); - sq.setBranchCode(jdm.getInt("suc")); - sq.setOfficeCode(jdm.getInt("ofi")); - sq.setTerminalCode(jdm.getString("ter")); - sq.setChannelCode(jdm.getString("can")); - sq.setUser(jdm.getString("usu")); - sq.setTransactionModule(process.getTransactionmodule()); - sq.setTransactionCode(process.getTransactioncode()); - sq.setTransactionVersion(process.getTransactionversion()); - return sq; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/score/.svn/entries b/base/business/general/src/main/java/com/fp/general/score/.svn/entries deleted file mode 100644 index e4b4855..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/score -svn://172.17.26.185/COMACO - - - -2015-06-23T07:19:44.493659Z -4130 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -save -dir - diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/entries b/base/business/general/src/main/java/com/fp/general/score/save/.svn/entries deleted file mode 100644 index bebaf78..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/score/save -svn://172.17.26.185/COMACO - - - -2015-06-23T07:19:44.493659Z -4130 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -UploadLineScoreThread.java -file - - - - -2022-07-28T03:40:43.988808Z -1badfe39e6a7a840325fcab89029a4dd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7987 - -SafeScoreHeaderDetail.java -file - - - - -2022-07-28T03:40:43.988808Z -788ab83be4b7c910f2d9979887bfe27c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2187 - -UploadFileScoreThread.java -file - - - - -2022-07-28T03:40:43.988808Z -214e0b7cc5701c36e3f29e2624875ea4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10619 - -SafeFileScore.java -file - - - - -2022-07-28T03:40:43.988808Z -d697bbe885c7126512273e2a9a3476e9 -2015-06-23T07:19:44.493659Z -4130 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4515 - -FileScore.java -file - - - - -2022-07-28T03:40:43.989808Z -8ec5885ba20fef957f79449e45855fb9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7212 - diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/FileScore.java.svn-base b/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/FileScore.java.svn-base deleted file mode 100644 index 4d3ec0a..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/FileScore.java.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -package com.fp.general.score.save; - -import com.fp.dto.save.SaveRequest; -import com.fp.excel.ExcelToMap; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustment; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustmentKey; -import com.fp.persistence.pgeneral.score.TgeneScoreHeader; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; -import java.util.Map; -import java.sql.Timestamp; -/** - * Clase que graba la data recibida de Excel en la tabla TGENESCOREADJUSTMENT - * - * @author BPTWPA - */ -public class FileScore { - - /** - * Mtodo que graba en la base de datos las calificaciones de cartera subidas en excel - * - * @param tgeneScoreHeader Objeto TgeneScoreHeader - * @param excelMap Mapa obtenido del archivo de excel - * @throws Exception - */ - public List loadScore(TgeneScoreHeader tgeneScoreHeader, SaveRequest sr, Integer filecode) throws Exception { - List lTgeneScoreAdjustment = new ArrayList(); - Map mapExcel = null; - TgeneFilesDetail filesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), new TgeneFilesDetailKey(filecode, - FormatDates.getDefaultExpiryTimestamp())); - if (tgeneScoreHeader != null && filesDetail != null) { - if (filesDetail.getExtension().equals("xls") || filesDetail.getExtension().equals("xlsx")) { - ExcelToMap excelMap = new ExcelToMap(filesDetail.getImage(), filesDetail.getExtension()); - mapExcel = excelMap.getExcelMap(); - if (mapExcel != null || !mapExcel.isEmpty()) { - Integer rows = (mapExcel.size() / 8)-1; - for (int i = 1; i <= rows ; i++) { - TgeneScoreAdjustment tgeneScoreAdjustment = new TgeneScoreAdjustment(); - TgeneScoreAdjustmentKey key = new TgeneScoreAdjustmentKey(); - for (int j = 0; j < 8; j++) { - String parameter = i + ":" + j; - Object value = null; - switch (j) { - case 0: //COMPANIA - if(!(tgeneScoreHeader.getPk().getScoredate().compareTo((Date) mapExcel.get(parameter)) == 0)){ - throw new GeneralException("GENE-0043", "LA FECHA DEL ARCHIVO NO CONCUERDA CON LA SELECCIONADA"); - } - - this.contentParameter(parameter, mapExcel); - key.setScoredate(new Timestamp(tgeneScoreHeader.getPk().getScoredate().getTime())); - - break; - case 1: //CUENTA - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - key.setAccount(String.valueOf(value)); - tgeneScoreAdjustment.setPk(key); - break; - case 2: //MODULO - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setModulecode(String.valueOf(value)); - break; - case 3: //PRODUCTO - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setProductcode(String.valueOf(value)); - break; - case 4: //SUBPRODUCTO - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setSubproductcode(String.valueOf(value)); - break; - case 5: //MONEDA - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setCurrencycode(String.valueOf(value)); - break; - case 6: //PORCENTAJE PROVISION - this.contentParameter(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setManualprovisionpercent(new BigDecimal(value.getClass().getSimpleName().equals("BigDecimal") ? String.valueOf(value) : "0")); - break; - case 7: //TIPO AJUSTE, JOURNAL ID - this.contentParameter(parameter, mapExcel); - this.verifyFile(parameter, mapExcel); - value = mapExcel.get(parameter); - tgeneScoreAdjustment.setAdjustmenttype(String.valueOf(value)); - tgeneScoreAdjustment.setJournalid(sr.getJournalId()); - break; - default: - break; - } - } - lTgeneScoreAdjustment.add(tgeneScoreAdjustment); - } - } - } else { - throw new GeneralException("GENE-0043", "El ARCHIVO NO ES EL CORRECTO - CALIFICACION CARTERA"); - } - } - - return lTgeneScoreAdjustment; - } - - /** - * Mtodo que valida que el valor que viene en el archivo sea el correcto - * @param parameter - * @param mapExcel - * @throws Exception - */ - private void contentParameter(String parameter, Map mapExcel) throws Exception { - if (!mapExcel.containsKey(parameter)) { - throw new GeneralException("GENE-0044", "PARMETRO NO ENCONTRADO"); - } - } - - /** - * Mtodo que valida que el archivo sea el correcto - * @param parameter - * @param mapExcel - * @throws Exception - */ - private void verifyFile(String parameter, Map mapExcel) throws Exception { - this.contentParameter(parameter, mapExcel); - String value = (String) mapExcel.get(parameter); //Object - if (!(String.valueOf(value).compareTo("F") == 0)) { - throw new GeneralException("GENE-0043", "El ARCHIVO NO ES EL CORRECTO - CALIFICACION CARTERA"); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeFileScore.java.svn-base b/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeFileScore.java.svn-base deleted file mode 100644 index 3c4ef10..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeFileScore.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.score.save; - -import com.fp.dto.helper.FileHelper; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import com.fp.sessionbeans.helper.Sequence; -import java.util.List; - -/** - * Clase que sube un archivo - * @author pgalindo - */ -public class SafeFileScore extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest sr) throws Exception { - TgeneFilesDetail filesDetail = null; - Integer filecode = null; - String xlsfile = sr.getString("xlsFile"); - if (xlsfile.compareTo("YES") == 0) { - List fileItem = (List) sr.get("file"); - if ((fileItem == null || !fileItem.isEmpty())) { - String code = sr.getString("filecode"); - filecode = ((code.compareTo("") == 0) ? null : Integer.valueOf(code)); - if (filecode == null) { - filesDetail = this.createImage(sr, fileItem); - filecode = filesDetail.getPk().getCode(); - } else { - filecode = sr.getInteger("filecode"); - filesDetail = this.upDateImage(sr, fileItem, filecode); - filecode = filesDetail.getPk().getCode(); - } - sr.getResponse().put("codes", "[" + filecode + "]"); - } - } - return sr; - } - - @Override - public SaveRequest reverseProcess(SaveRequest sr) throws Exception { - return sr; - } - - /** - * Metodo que crea un nuevo registro en la tabla TGENEFILESDETAIL - * @param pSaveRequest - * @param imageItem - * @return TgeneFilesDetail - * @throws Exception - */ - private TgeneFilesDetail createImage(SaveRequest pSaveRequest, List imageItem) throws Exception { - Sequence sequence = new Sequence(); - Integer filecode = Integer.valueOf(sequence.getNextValue("FILECODE").toString()); - TgeneFiles tgeneFiles = new TgeneFiles(filecode); - PersistenceHelper.save(tgeneFiles); - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(filecode, FormatDates.getDefaultExpiryTimestamp()); - TgeneFilesDetail tgeneFilesDetail = new TgeneFilesDetail(); - tgeneFilesDetail.setPk(tgeneFilesDetailKey); - tgeneFilesDetail.setImage(imageItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(imageItem.get(0).getSize()))); - tgeneFilesDetail.setIngressuser(pSaveRequest.getUser()); - tgeneFilesDetail.setExtension(imageItem.get(0).getExtension()); - PersistenceHelper.save(tgeneFilesDetail); - return tgeneFilesDetail; - } - - /** - * Metodo que actualiza el registro de la tabla TGENEFILESDETAIL - * @param pSaveRequest - * @param imageItem - * @param imagecode - * @return - * @throws Exception - */ - private TgeneFilesDetail upDateImage(SaveRequest pSaveRequest, List imageItem, Integer imagecode) throws Exception { - TgeneFilesDetail tgeneFilesDetail = null; - TgeneFiles tgeneFiles = TgeneFiles.find(PersistenceHelper.getEntityManager(), imagecode); - if (tgeneFiles != null) { - TgeneFilesDetailKey filesDetailKey = new TgeneFilesDetailKey(tgeneFiles.getPk(), FormatDates.getDefaultExpiryTimestamp()); - - tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), filesDetailKey); - if (tgeneFilesDetail != null) { - tgeneFilesDetail.setImage(imageItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(imageItem.get(0).getSize()))); - tgeneFilesDetail.setModifyuser(pSaveRequest.getUser()); - tgeneFilesDetail.setExtension(imageItem.get(0).getExtension()); - PersistenceHelper.update(tgeneFilesDetail); - } - } - return tgeneFilesDetail; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeScoreHeaderDetail.java.svn-base b/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeScoreHeaderDetail.java.svn-base deleted file mode 100644 index c6dbd2a..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/SafeScoreHeaderDetail.java.svn-base +++ /dev/null @@ -1,61 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.score.save; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustment; -import com.fp.persistence.pgeneral.score.TgeneScoreHeader; -import com.fp.persistence.pgeneral.score.TgeneScoreHeaderKey; -import java.sql.Date; -import java.util.List; - -/** - * - * @author pgalindo - */ -public class SafeScoreHeaderDetail extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest sr) throws Exception { - TgeneScoreHeader scoreHeader = null; - List lTgeneScoreAdjustment = null; - FileScore scoreAdjustment = new FileScore(); - String xlsfile = sr.getString("xlsFile"); - //String pk = (String) sr.get("pk_scoredate"); - //APPDates date = new APPDates(pk); - if (xlsfile.compareTo("NO") == 0) { - Date scoredate = sr.getDate("scoredate"); - Integer company = sr.getInteger("companycode"); - Integer filecode = sr.getInteger("filecode"); - - scoreHeader = this.saveHeader(scoredate, company, filecode); - lTgeneScoreAdjustment = scoreAdjustment.loadScore(scoreHeader, sr, filecode); - sr.putSaveBean("TGENESCOREHEADER", scoreHeader, 1); - sr.putSaveBean("TGENESCOREADJUSTMENT", lTgeneScoreAdjustment, 2); - // GRABAR CALIFICACION MANUAL - } - return sr; - } - - @Override - public SaveRequest reverseProcess(SaveRequest sr) throws Exception { - return sr; - } - - /** - * Metodo que graba la cabecera de la tabla de calificacion - * @param sr - * @return - * @throws Exception - */ - private TgeneScoreHeader saveHeader(Date scoredate, Integer companycode, Integer filecode) throws Exception { - TgeneScoreHeader tgeneScoreHeader = new TgeneScoreHeader(); - tgeneScoreHeader.setPk(new TgeneScoreHeaderKey(scoredate, companycode)); - tgeneScoreHeader.setFilecode(filecode); //PGA - tgeneScoreHeader.setTabulated("N"); - return tgeneScoreHeader; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadFileScoreThread.java.svn-base b/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadFileScoreThread.java.svn-base deleted file mode 100644 index b225c2c..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadFileScoreThread.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.general.score.save; - -import java.io.BufferedReader; -import java.io.File; -import java.io.FileReader; -import java.io.IOException; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Map; -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import org.apache.commons.lang.StringUtils; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.save.SaveRequest; -import com.fp.loan.exception.LoanException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustment; -//import com.fp.persistence.ploan.acco.TloanPaymentBankProcess; - -/** - * Clase que se encarga de procesar un archivo con informacin de pagos de crditos procedente de una canal de - * recaudacin - * - * @author Omar Villanueva - * @version 2.1 - */ -public class UploadFileScoreThread extends Thread { - - private final Integer company; - - /* Arvhivo a procesar */ - private final File file; - - /* Institucin financiera a la que pertenece el archivo */ - private final String bank; - - /* Directorio destino para el archivo luego de procesarlo */ - private final StringBuilder targetPath; - - /* - * Map para los formatos de nombres de archivos de las instituciones financieras parametrizadas en - * TLOANPAYMENTACCOBANK - */ - private final Map mFileName; - - /* - * Map para los numeros de hilos que se puede procesar en paralelo por cada una de las instituciones financieras - * parametrizadas en TLOANPAYMENTACCOBANK - */ - private final Map mThreads; - - /* String para almacenar el log de errores en la carga de los archivos para mostrar al usuario en el front end */ - private final StringBuilder sbLog; - - /* Separador de linea */ - private final String new_line = System.getProperty("line.separator"); - - private final SaveRequest sr; - - - - /** - * Constructor - * - * @param company - * @param file - * @param bank - * @param targetPath - * @param mFileName - * @param mThreads - * @param sbLog - */ - public UploadFileScoreThread(Integer company, File file, String bank, StringBuilder targetPath, Map mFileName, - Map mThreads, StringBuilder sbLog, SaveRequest sr) { - super(); - this.company = company; - this.file = file; - this.bank = bank; - this.targetPath = targetPath; - this.mFileName = mFileName; - this.mThreads = mThreads; - this.sbLog = sbLog; - this.sr=sr; - } - - @Override - public void run() { - // boolean success = true; - try { - SessionData s = new SessionData(); - s.setCompany(company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - /* Procesar archivo */ - process(); - PersistenceHelper.commitNewTransaction(); - /* Mover el archivo si la carga fue exitosa */ - moveFile(); - } catch (Exception e) { - // success = false; - PersistenceHelper.rollbackNewTransaction(); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("codigo ==>" + eh.getCode()); - APPLogger.getLogger().error("user ==>" + eh.getUserMessage()); - APPLogger.getLogger().error("technical ==>" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("stacktrace ==>" + eh.getStackTrace()); - } finally { - PersistenceHelper.closeSession(); - } - // /* Mover el archivo si la carga fue exitosa */ - // if (success) { - // try { - // moveFile(); - // } catch (Exception e) { - // e.printStackTrace(); - // } - // } - } - - /** - * Mtodo que procesa el archivo. Carga la data en la tabla TGENESCOREADJUSTMENT(---TLOANPAYMENTBANKPROCESS). Lanza un hilo por cada linea - * que contiene el arvhivo. Se pueden lanzar varios hilos en paralelo. El numero mximo de hilos esta determinado - * por el parametro threads fijado en la tabla TLOANPAYMENTACCOBANK - * - * @throws Exception - */ - private void process() throws Exception { - /* Verificar si el archivo ya fue cargado anteriormente */ - //String fileExist = TloanPaymentBankProcess.find(PersistenceHelper.getEntityManager(), company, file.getName()); - String fileExist = TgeneScoreAdjustment.find(PersistenceHelper.getEntityManager(), company, file.getName()); - - if (fileExist != null) { - sbLog.append(new LoanException("LOAN-0049", "EL ARCHIVO: {0} YA FUE CARGADO ANTERIORMENTE", file.getName()).getMessage()) - .append(new_line); - throw new LoanException("LOAN-0049", "EL ARCHIVO: {0} YA FUE CARGADO ANTERIORMENTE", file.getName()); - } - /* Verificar si el numero de hilos esta definido */ - if (mThreads.get(bank) == null || mThreads.get(bank).compareTo(0) <= 0) { - /* Agrega el mensaje al log de errores */ - sbLog.append( - new LoanException("LOAN-0041", "NUMERO DE HILOS NO DEFINIDO EN TLOANPAYMENTACCOBANK PARA INSTITUCION FINANCIERA: {0}", bank) - .getMessage()).append(new_line); - throw new LoanException("LOAN-0041", "NUMERO DE HILOS NO DEFINIDO EN TLOANPAYMENTACCOBANK PARA INSTITUCION FINANCIERA: {0}", bank); - } - ExecutorService pool = Executors.newFixedThreadPool(mThreads.get(bank)); - /* Obtener la fecha de pago del archivo a procesar */ - Date paymentDate = getDateFromFile(); - try { - BufferedReader input = new BufferedReader(new FileReader(file)); - try { - String line = null; - int sequence = 0; - Timestamp realDate = FormatDates.getInstance().getDataBaseTimestamp(); - while ((line = input.readLine()) != null) { - sequence++; - /* Se lanza un hilo por cada linea del archivo que se debe procesar */ - UploadLineScoreThread ult = new UploadLineScoreThread(company, file, bank, line, sequence, realDate, paymentDate, sr); - pool.execute(ult); - } - } catch (IOException ioe) { - throw ioe; - } finally { - input.close(); - } - } catch (IOException ioe) { - throw ioe; - } - pool.shutdown(); - boolean isfinish = pool.isTerminated(); - while (!isfinish) { - isfinish = pool.isTerminated(); - Thread.sleep(600); - } - } - - /** - * Mtodo que obtiene la fecha desde el arvhivo proporcionado por el canal de recaudacin. Esta es la fecha de pago - * de la cuota del crdito - * - * @return - * @throws Exception - */ - private Date getDateFromFile() throws Exception { - Date date = null; - String fileName = StringUtils.remove(mFileName.get(bank), '-'); - int positionDate = fileName.indexOf("ddMM"); - /* Procesa archivos que contengan el formato ddMM */ - if (positionDate < 0) { - /* Agrega el mensaje al log de errores */ - sbLog.append( - new LoanException("LOAN-0038", "FECHA INCORRECTAMENTE DEFINIDA EN TLOANPAYMENTACCOBANK PARA INSTITUCIN FINANCIERA: {0}", bank) - .getMessage()).append(new_line); - throw new LoanException("LOAN-0038", "FECHA INCORRECTAMENTE DEFINIDA EN TLOANPAYMENTACCOBANK PARA INSTITUCIN FINANCIERA: {0}", bank); - } - if (bank.compareTo("SP") == 0) { - String formatDate = mFileName.get(bank).substring(positionDate, positionDate + 10); - String strDate = file.getName().trim().substring(positionDate, positionDate + 10); - date = getDateByFormat(strDate, formatDate); - } - - return date; - } - - /** - * Mtodo que devuelve la fecha segn el formato requerido - * - * @param pStrDate - * @param pFormat - * @return - * @throws Exception - */ - private Date getDateByFormat(String pStrDate, String pFormat) throws Exception { - Date date = null; - try { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pFormat); - date = new Date(simpleDateFormat.parse(pStrDate).getTime()); - } catch (Exception e) { - /* Agrega el mensaje al log de errores */ - sbLog.append( - new LoanException( - "LOAN-0050", - "EL FORMATO DE FECHA DEL ARCHIVO: {0} NO COINCIDE CON EL DEFINIDO EN TLOANPAYMENTACCOBANK PARA INSTITUCIN FINANCIERA: {1}", - file.getName(), bank).getMessage()).append(new_line); - throw new LoanException("LOAN-0050", - "EL FORMATO DE FECHA DEL ARCHIVO: {0} NO COINCIDE CON EL DEFINIDO EN TLOANPAYMENTACCOBANK PARA INSTITUCIN FINANCIERA: {1}", - file.getName(), bank); - } - - return date; - } - - /** - * Mtodo que mueve el archivo ya procesado al directorio destino - * - * @throws Exception - */ - private void moveFile() throws Exception { - /* Directorio destino */ - File targetDir = new File(targetPath.toString()); - - /* Mover el archivo al nuevo directorio */ - boolean success = file.renameTo(new File(targetDir, file.getName())); - if (!success) { - /* Agrega el mensaje al log de errores */ - sbLog.append(new LoanException("LOAN-0040", "EL ARCHIVO {0} ESTA SIENDO USADO POR OTRO PROCESO", file.getName()).getMessage()).append( - new_line); - throw new LoanException("LOAN-0040", "EL ARCHIVO {0} ESTA SIENDO USADO POR OTRO PROCESO", file.getName()); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadLineScoreThread.java.svn-base b/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadLineScoreThread.java.svn-base deleted file mode 100644 index 8006fa9..0000000 --- a/base/business/general/src/main/java/com/fp/general/score/save/.svn/text-base/UploadLineScoreThread.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.general.score.save; - -import java.io.File; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.save.SaveRequest; -import com.fp.loan.exception.LoanException; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustment; -import com.fp.persistence.pgeneral.score.TgeneScoreAdjustmentKey; -import com.fp.persistence.pgeneral.score.TgeneScoreFileIssues; -import com.fp.persistence.pgeneral.score.TgeneScoreFileIssuesKey; -import com.fp.persistence.pgeneral.score.TgeneScoreHeader; -import com.fp.persistence.pgeneral.score.TgeneScoreHeaderKey; - - -/** - * Clase que se encarga de procesar una linea de archivo con informacin de pagos de crditos procedente de una canal de - * recaudacin - * - * @author Omar Villanueva - * @version 2.1 - */ -public class UploadLineScoreThread extends Thread { - - private final Integer company; - - /* Arvhivo a procesar */ - private final File file; - - /* Institucin financiera a la que pertenece el archivo */ - // private final String bank; - - /* Nmero de Operacin */ - private final String account; - - /* Linea del archivo a procesar */ - private final String line; - - /* Nmero de linea que se esta procesando */ - private final int sequence; - - private final Timestamp realDate; - - /* Fecha de pago de la cuota del crdito */ - //private final Date paymentDate; - - /* Fecha de calififacin */ - private final Date scoreDate; - - private final SaveRequest sr; - - /** - * Constructor - * - * @param company - * @param file - * @param account - * @param line - * @param sequence - * @param realDate - * @param scoreDate - */ - public UploadLineScoreThread(Integer company, File file, String account, String line, int sequence, Timestamp realDate, Date scoreDate, SaveRequest sr) { - super(); - this.company = company; - this.file = file; - this.account = account; - this.line = line; - this.sequence = sequence; - this.realDate = realDate; - this.scoreDate = scoreDate; - this.sr=sr; - } - - @Override - public void run() { - try { - SessionData s = new SessionData(); - s.setCompany(company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - /* Procesar la linea de archivo */ - process(); - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackNewTransaction(); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("codigo ==>" + eh.getCode()); - APPLogger.getLogger().error("user ==>" + eh.getUserMessage()); - APPLogger.getLogger().error("technical ==>" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("stacktrace ==>" + eh.getStackTrace()); - try { - /* Guarda en TLOANPAYMENTBANKISSUES informacin de las lineas con problemas */ - LogUploadIssues(eh); - } catch (Exception e1) { - e1.printStackTrace(); - } - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Mtodo que procesa la linea de archivo. Carga la data en la tabla TLOANPAYMENTBANKPROCESS - * - * @throws Exception - */ - private void process() throws Exception { - processSP(); - processHeader(); - } - - /** - * Mtodo que procesa las lineas de archivos - * - * @throws Exception - */ - private void processSP() throws Exception { - String data[] = line.split("\t"); - //TGENESCOREADJUSTMENT - TgeneScoreAdjustmentKey key1 = new TgeneScoreAdjustmentKey(); - key1.setAccount(data[1].trim()); - key1.setCompanycode(company); - key1.setDateto(realDate); - key1.setScoredate(new Timestamp (getDateByFormat(data[0].trim(), "dd/MM/yyyy").getTime())); - - TgeneScoreAdjustment tgsa = new TgeneScoreAdjustment(); - tgsa.setPk(key1); - tgsa.setAdjustmenttype("F"); - tgsa.setCurrencycode(data[5].trim()); - tgsa.setDatefrom(realDate); - tgsa.setJournalid(sr.getJournalId()); - tgsa.setManualprovisionpercent(new BigDecimal(data[6].trim())); - tgsa.setModulecode(data[2].trim()); - tgsa.setProductcode(data[3].trim()); - tgsa.setSubproductcode(data[4].trim()); - tgsa.setFilename(file.getName()); - tgsa.setStatus("C"); // ESTADO CARGADO - - PersistenceHelper.save(tgsa); - } - - - /** - * Mtodo que ingresa cabecera en tabla: TGENESCOREHEADER - * - * @throws Exception - */ - private void processHeader() throws Exception { - String data[] = line.split("\t"); - TgeneScoreHeader scoreHeader = new TgeneScoreHeader(); - TgeneScoreHeaderKey scoreHeaderKey = new TgeneScoreHeaderKey(); - - scoreHeaderKey.setCompanycode(company); - scoreHeaderKey.setScoredate(getDateByFormat(data[0].trim(), "dd/MM/yyyy")); - scoreHeader.setPk(scoreHeaderKey); - scoreHeader.setFilecode(300); - scoreHeader.setTabulated("N"); - - PersistenceHelper.saveOrUpdate(scoreHeader); - } - - - /** - * Mtodo que devuelve la fecha segn el formato requerido - * - * @param pStrDate - * @param pFormat - * @return - * @throws Exception - */ - private Date getDateByFormat(String pStrDate, String pFormat) throws Exception { - Date date = null; - try { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(pFormat); - date = new Date(simpleDateFormat.parse(pStrDate).getTime()); - } catch (Exception e) { - throw new LoanException("LOAN-0038", "FECHA INCORRECTAMENTE DEFINIDA EN TLOANPAYMENTACCOBANK PARA INSTITUCIN FINANCIERA: {0}", account); - } - - return date; - - } - - /** - * Mtodo que guarda un log de las lineas de archivos que no pueden ser procesadas en la tabla - * TGENESCOREFILEISSUES - * - * @param eh - * @throws Exception - * @throws Exception - */ - private void LogUploadIssues(ExceptionHandler eh) throws Exception { - TgeneScoreFileIssuesKey key1 = new TgeneScoreFileIssuesKey(); - key1.setLinenumber(sequence); - key1.setAccount(account); - key1.setCompany(company); - key1.setFilename(file.getName()); - key1.setUploaddate(realDate); - - TgeneScoreFileIssues scoreIssue = new TgeneScoreFileIssues(); - scoreIssue.setPk(key1); - scoreIssue.setLinecontent(line); - - - if (eh.getUserMessage().length() > 100) { - scoreIssue.setUsermessage(eh.getUserMessage().substring(0, 100)); - } else { - scoreIssue.setUsermessage(eh.getUserMessage()); - } - if (eh.getTechnicalMessage().length() > 500) { - scoreIssue.setTechnicalmessage(eh.getTechnicalMessage().substring(0, 500)); - } else { - scoreIssue.setTechnicalmessage(eh.getTechnicalMessage()); - } - - new NestedSave(company, scoreIssue).start(); - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/security/.svn/entries b/base/business/general/src/main/java/com/fp/general/security/.svn/entries deleted file mode 100644 index 22b79ca..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/security -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -rules -dir - diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/entries b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/entries deleted file mode 100644 index c5133e8..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/entries +++ /dev/null @@ -1,371 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/security/rules -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MaintenanceUser.java -file - - - - -2022-07-28T03:40:43.512806Z -8c58b617fd3938c6aa6416dff8a3c3b9 -2015-02-20T11:00:27.488662Z -3830 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4406 - -Menu.java -file - - - - -2022-07-28T03:40:43.512806Z -b60579d988bb4020fa905c7fbe45dab7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6068 - -UserLogonCas.java -file - - - - -2022-07-28T03:40:43.513806Z -b878f13492dce81c586082295040d85c -2015-06-23T07:19:44.493659Z -4130 -cpiedra - - - - - - - - - - - - - - - - - - - - - -28880 - -query -dir - -CloseAllSessions.java -file - - - - -2022-07-28T03:40:43.513806Z -048932395558f4dd86c57d128c4c6073 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2121 - -Company.java -file - - - - -2022-07-28T03:40:43.513806Z -010c308c88e72ae16ff12234a86d8dfb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7691 - -Politics.java -file - - - - -2022-07-28T03:40:43.513806Z -da5899d7c8430abace94257b7a2bc2c4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9804 - -MaintenanceMenu.java -file - - - - -2022-07-28T03:40:43.514806Z -dfaca120b04a35ecb6aeac0f54cb353c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8796 - -CloseSession.java -file - - - - -2022-07-28T03:40:43.514806Z -66a75880fc7e624b7c7e6da8ba0fc894 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1399 - -CreateInternalCodeUser.java -file - - - - -2022-07-28T03:40:43.514806Z -383b61bea8dec814fdbd5805e10b936a -2015-09-10T07:09:12.780369Z -4277 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3476 - -UserLogon.java -file - - - - -2022-07-28T03:40:43.514806Z -f0aced2c6ba46316e10d590157cbe4e5 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -30721 - diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.netbeans-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.netbeans-base deleted file mode 100644 index f9013a9..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.netbeans-base +++ /dev/null @@ -1,63 +0,0 @@ -package com.fp.general.security.rules; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que cierra todas las conexiones abiertas en el servidor - * @author scastillo - */ -public class CloseAllSessions { - - /** - * Almacena una instancia de CloseAllSessions. - */ - private static CloseAllSessions cache; - - /** - * Entrega una instancia de CloseAllSessions. - * @return DataHelper - */ - public static CloseAllSessions getInstance() { - if (cache != null) { - return cache; - } - synchronized (CloseAllSessions.class) { - if (cache == null) { - cache = new CloseAllSessions(); - } - } - return cache; - } - /** - * Sentencia SQL que caduca las sesiones - */ - private static final String SQL = - "update TsafeUserSession set pk.dateto = :dateto where pk.dateto = :datetofilter and webserverip = :webserverip"; - - /** - * Metodo que cierra las sesiones abiertas en el servidor - * @param host - * @throws Exception - */ - public void expireSessions(String host) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - try { - Query query = em.createQuery(SQL); - query.setParameter("dateto", FormatDates.getInstance().getDataBaseTimestamp(em)); - query.setParameter("datetofilter", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("webserverip", host); - query.executeUpdate(); - } catch (Exception e) { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - APPLogger.getLogger().error("Tech Message:==>\n" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("Stack Message:==>\n" + eh.getStackTrace()); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.svn-base deleted file mode 100644 index f9013a9..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseAllSessions.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ -package com.fp.general.security.rules; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que cierra todas las conexiones abiertas en el servidor - * @author scastillo - */ -public class CloseAllSessions { - - /** - * Almacena una instancia de CloseAllSessions. - */ - private static CloseAllSessions cache; - - /** - * Entrega una instancia de CloseAllSessions. - * @return DataHelper - */ - public static CloseAllSessions getInstance() { - if (cache != null) { - return cache; - } - synchronized (CloseAllSessions.class) { - if (cache == null) { - cache = new CloseAllSessions(); - } - } - return cache; - } - /** - * Sentencia SQL que caduca las sesiones - */ - private static final String SQL = - "update TsafeUserSession set pk.dateto = :dateto where pk.dateto = :datetofilter and webserverip = :webserverip"; - - /** - * Metodo que cierra las sesiones abiertas en el servidor - * @param host - * @throws Exception - */ - public void expireSessions(String host) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - try { - Query query = em.createQuery(SQL); - query.setParameter("dateto", FormatDates.getInstance().getDataBaseTimestamp(em)); - query.setParameter("datetofilter", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("webserverip", host); - query.executeUpdate(); - } catch (Exception e) { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - APPLogger.getLogger().error("Tech Message:==>\n" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("Stack Message:==>\n" + eh.getStackTrace()); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseSession.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseSession.java.svn-base deleted file mode 100644 index f075bcd..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CloseSession.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.general.security.rules; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.safe.TsafeUserSession; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionKey; - -/** - * Clase que se encarga de caducar un registro - * @author scastillo - */ -public class CloseSession extends TransactionRule { - - /** - * Metodo que caduca el registro vigente del inicio de sesion - * @param pSaveRequest - * @return - * @throws Exception - */ - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String usercode = pSaveRequest.getUser(); - TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(usercode, FormatDates.getDefaultExpiryTimestamp()); - TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); - if (tsafeUserSession != null) { - PersistenceHelper.expire(tsafeUserSession); - } - return pSaveRequest; - } - - /** - * Metodo q ue se ejecuta en modo reverso - * @param pSaveRequest - * @return - * @throws Exception - */ - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.netbeans-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.netbeans-base deleted file mode 100644 index 58f04e2..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.netbeans-base +++ /dev/null @@ -1,193 +0,0 @@ -package com.fp.general.security.rules; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollMode; -import org.hibernate.ScrollableResults; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que devuelve las companias - * - * @author scastillo - */ -public class Company extends QueryRule { - - private static final String SQL = - "select tgc.COMPANYCODE value," - + " (select tcp.NAME" - + " from TCUSTPERSONDETAIL tcp" - + " where tcp.PERSONCODE = tgc.PERSONCODE" - + " and tcp.DATETO = :dateto) label" - + " from TGENECOMPANY tgc" - + " where tgc.ACTIVE = :active"; - - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - try { - if(pQueryRequest.isJsf()){ - response.put("CIAS", this.getCompanyJsf()); - }else{ - response.put("T", this.getCompany()); - } - - - } catch (Exception e) { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - APPLogger.getLogger().error("Tech Message:==>\n" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("Stack Message:==>\n" + eh.getStackTrace()); - } - - return pQueryRequest; - } - - /** - * Metodo que asigna la data de companias en un map - * @return - * @throws Exception - */ - private List> getCompany() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - Integer company = (Integer) obj[0]; - String companyname = (String) obj[1]; - mData.put("value", company); - mData.put("label", companyname); - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("JSVERSION", company); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getNumbervalue() != null) { - mData.put("vd", tgeneParameters.getNumbervalue().intValue()); - } else { - mData.put("vd", 0); - } - tgeneParametersKey = new TgeneParametersKey("LOGO", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("lo", tgeneParameters.getTextvalue()); - } else { - mData.put("lo", "images/company/default.gif"); - } - tgeneParametersKey = new TgeneParametersKey("FORMATDATE", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("fd", tgeneParameters.getTextvalue()); - } else { - mData.put("fd", "yyyy-MM-dd"); - } - tgeneParametersKey = new TgeneParametersKey("IMGFONDO", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("fi", tgeneParameters.getTextvalue()); - } else { - mData.put("fi", null); - } - tgeneParametersKey = new TgeneParametersKey("TOPMENU", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null - && tgeneParameters.getTextvalue().compareTo("Y") == 0) { - mData.put("tm", "Y"); - } else { - mData.put("tm", "N"); - } - tgeneParametersKey = new TgeneParametersKey("TIMEOUT", (Integer) obj[0]); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getNumbervalue() != null) { - mData.put("to", tgeneParameters.getNumbervalue().intValue()); - } else { - mData.put("to", 600); - } - //Se adiciona todos los parametros por compania - ldata.add(mData); - } - } finally { - if (rSet != null ) { - try { - rSet.close(); - } catch (Exception e) { - //Si el rset esta cerrado no hacer nada. - } - - } - } - return ldata; - } - - /** - * Metodo que asigna la data de companias en un map - * @return - * @throws Exception - */ - private List> getCompanyJsf() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - Integer company = (Integer) obj[0]; - String companyname = (String) obj[1]; - mData.put("company", company); - mData.put("name", companyname); - //Se adiciona todos los parametros por compania - ldata.add(mData); - } - } finally { - if (rSet != null ) { - try { - rSet.close(); - } catch (Exception e) { - //Si el rset esta cerrado no hacer nada. - } - - } - } - return ldata; - } - - - - /** - * Metodo que ejecuta el query para obtener el codigo y nombre de las companias - * - * @param pQueryRequest - * @return - * @throws Exception - */ - private ScrollableResults executeQuery() throws Exception { - ScrollableResults rSet = null; - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(Company.SQL); - sql.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - sql.setParameter("active", "Y"); - sql.addScalar("value", new org.hibernate.type.IntegerType()); - sql.addScalar("label", new org.hibernate.type.StringType()); - - rSet = sql.scroll(ScrollMode.FORWARD_ONLY); - return rSet; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.svn-base deleted file mode 100644 index 58f04e2..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Company.java.svn-base +++ /dev/null @@ -1,193 +0,0 @@ -package com.fp.general.security.rules; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollMode; -import org.hibernate.ScrollableResults; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que devuelve las companias - * - * @author scastillo - */ -public class Company extends QueryRule { - - private static final String SQL = - "select tgc.COMPANYCODE value," - + " (select tcp.NAME" - + " from TCUSTPERSONDETAIL tcp" - + " where tcp.PERSONCODE = tgc.PERSONCODE" - + " and tcp.DATETO = :dateto) label" - + " from TGENECOMPANY tgc" - + " where tgc.ACTIVE = :active"; - - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - try { - if(pQueryRequest.isJsf()){ - response.put("CIAS", this.getCompanyJsf()); - }else{ - response.put("T", this.getCompany()); - } - - - } catch (Exception e) { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - APPLogger.getLogger().error("Tech Message:==>\n" + eh.getTechnicalMessage()); - APPLogger.getLogger().error("Stack Message:==>\n" + eh.getStackTrace()); - } - - return pQueryRequest; - } - - /** - * Metodo que asigna la data de companias en un map - * @return - * @throws Exception - */ - private List> getCompany() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - Integer company = (Integer) obj[0]; - String companyname = (String) obj[1]; - mData.put("value", company); - mData.put("label", companyname); - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("JSVERSION", company); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getNumbervalue() != null) { - mData.put("vd", tgeneParameters.getNumbervalue().intValue()); - } else { - mData.put("vd", 0); - } - tgeneParametersKey = new TgeneParametersKey("LOGO", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("lo", tgeneParameters.getTextvalue()); - } else { - mData.put("lo", "images/company/default.gif"); - } - tgeneParametersKey = new TgeneParametersKey("FORMATDATE", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("fd", tgeneParameters.getTextvalue()); - } else { - mData.put("fd", "yyyy-MM-dd"); - } - tgeneParametersKey = new TgeneParametersKey("IMGFONDO", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null) { - mData.put("fi", tgeneParameters.getTextvalue()); - } else { - mData.put("fi", null); - } - tgeneParametersKey = new TgeneParametersKey("TOPMENU", company); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getTextvalue() != null - && tgeneParameters.getTextvalue().compareTo("Y") == 0) { - mData.put("tm", "Y"); - } else { - mData.put("tm", "N"); - } - tgeneParametersKey = new TgeneParametersKey("TIMEOUT", (Integer) obj[0]); - tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), - tgeneParametersKey); - if (tgeneParameters != null && tgeneParameters.getNumbervalue() != null) { - mData.put("to", tgeneParameters.getNumbervalue().intValue()); - } else { - mData.put("to", 600); - } - //Se adiciona todos los parametros por compania - ldata.add(mData); - } - } finally { - if (rSet != null ) { - try { - rSet.close(); - } catch (Exception e) { - //Si el rset esta cerrado no hacer nada. - } - - } - } - return ldata; - } - - /** - * Metodo que asigna la data de companias en un map - * @return - * @throws Exception - */ - private List> getCompanyJsf() throws Exception { - ScrollableResults rSet = null; - List> ldata = new ArrayList>(); - try { - rSet = this.executeQuery(); - while (rSet.next()) { - Object[] obj = rSet.get(); - Map mData = new HashMap(); - Integer company = (Integer) obj[0]; - String companyname = (String) obj[1]; - mData.put("company", company); - mData.put("name", companyname); - //Se adiciona todos los parametros por compania - ldata.add(mData); - } - } finally { - if (rSet != null ) { - try { - rSet.close(); - } catch (Exception e) { - //Si el rset esta cerrado no hacer nada. - } - - } - } - return ldata; - } - - - - /** - * Metodo que ejecuta el query para obtener el codigo y nombre de las companias - * - * @param pQueryRequest - * @return - * @throws Exception - */ - private ScrollableResults executeQuery() throws Exception { - ScrollableResults rSet = null; - SQLQuery sql = PersistenceHelper.getSession().createSQLQuery(Company.SQL); - sql.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - sql.setParameter("active", "Y"); - sql.addScalar("value", new org.hibernate.type.IntegerType()); - sql.addScalar("label", new org.hibernate.type.StringType()); - - rSet = sql.scroll(ScrollMode.FORWARD_ONLY); - return rSet; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CreateInternalCodeUser.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CreateInternalCodeUser.java.svn-base deleted file mode 100644 index 1a4c100..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/CreateInternalCodeUser.java.svn-base +++ /dev/null @@ -1,99 +0,0 @@ -package com.fp.general.security.rules; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.safe.TsafeUser; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encuentra del manejo - * @author scastillo - */ -public class CreateInternalCodeUser extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /** - * Metodo que se encarga de completar el codigo interno eln la creacion de usuarios - * @param pSaveRequest - * @return - * @throws Exception - */ - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - // Si la pantalla es diferente de tx 1 120 , se procede a validar creacion de usuarios - if(!pSaveRequest.get("PANTALLA").toString().equalsIgnoreCase("USUARIOSPERFIL_MOD1_TX120")){ - if( !pSaveRequest.isJsf()){ - TsafeUser tsafeUser = (TsafeUser) pSaveRequest.getSaveBeanModifiedObject("TSAFEUSER"); - this.validateuser(tsafeUser.getPk().trim(), tsafeUser.getCompanycode()); - tsafeUser.setInternalcode(getInternalCode()); - }else{ - this.proessjsf(pSaveRequest); - } - } - return pSaveRequest; - } - - private void proessjsf(SaveRequest pSaveRequest) throws Exception { - TsafeUserDetail ud = (TsafeUserDetail) pSaveRequest.getSaveBeanModifiedObject("USERDETAIL"); - if(ud == null){ - return; - } - this.validateuser(ud.getPk().getUsercode(), ud.getCompanycode()); - TsafeUser tsu = new TsafeUser(ud.getPk().getUsercode()); - tsu.setPersoncode(ud.getPk().getPersoncode()); - tsu.setCompanycode(ud.getCompanycode()); - tsu.setInternalcode(getInternalCode()); - pSaveRequest.putSaveBean("TSAFEUSER", tsu, 1); - } - - private void validateuser(String usercode, Integer company) throws Exception { - String code = this.findUser(usercode, company); - if(code!=null){ - throw new GeneralException("GENE-0042", "CDIGO DE USUARIO YA EXISTE: {0}", code); - } - } - - /** - * Metodo que se ejecuta en modo reverso - * @param pSaveRequest - * @return - * @throws Exception - */ - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que obtiene el numero correspondiente para el codigo interno del usuario - * @return - * @throws Exception - */ - private Integer getInternalCode() throws Exception { - Sequence sequence = new Sequence(); - return Integer.valueOf(sequence.getNextValue("INTERNALCODE").toString()); - } - private static String JPQL_USER ="select t.pk from TsafeUser t where t.pk = :usercode " + - " and t.companycode = :company"; - - private String findUser(String usercode,Integer company) throws Exception{ - String code; - Query qry = PersistenceHelper.getEntityManager().createQuery(JPQL_USER); - qry.setParameter("usercode", usercode); - qry.setParameter("company", company); - try { - code = (String)qry.getSingleResult(); - } catch (NoResultException e) { - return code =null; - } - return code; - } - - - -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceMenu.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceMenu.java.svn-base deleted file mode 100644 index 6cd31da..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceMenu.java.svn-base +++ /dev/null @@ -1,192 +0,0 @@ -package com.fp.general.security.rules; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelKey; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelKey; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -/** - * Clase que se encarga de del mantenimiento de menu para que se vuelva mas simple su manejo - * @author scastillo - */ -public class MaintenanceMenu extends TransactionRule { - - /** - * Metodo que se ejecuta en modo normal - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - List lmodifyMenuLevel = pSaveRequest.getSaveBeanModifiedRecords("TGENEMENULEVELDESC"); - this.completeMenuLevel(pSaveRequest, lmodifyMenuLevel); - - List ldeleteMenuLevel = pSaveRequest.getSaveBeanDeletedRecords("TGENEMENULEVELDESC"); - this.deleteMenuLevel(pSaveRequest, ldeleteMenuLevel); - List lmodifyMenuSubLevel = pSaveRequest.getSaveBeanModifiedRecords("TGENEMENUSUBLEVELDESC"); - this.completeMenuSubLevel(pSaveRequest, lmodifyMenuSubLevel); - - List ldeleteMenuSubLevel = pSaveRequest.getSaveBeanDeletedRecords("TGENEMENUSUBLEVELDESC"); - this.deleteMenuSubLevel(pSaveRequest, ldeleteMenuSubLevel); - return pSaveRequest; - } - - /** - * Metodo que se encarga de verificar los datos cuando estos son eliminados - * @param pSaveRequest - * @param lmodifyMenuLevel - * @throws Exception - */ - private void completeMenuLevel(SaveRequest pSaveRequest, List lmodifyMenuLevel) throws Exception { - if (lmodifyMenuLevel != null) { - List lTgeneMenuLevel = new ArrayList(); - for (int i = 0; i < lmodifyMenuLevel.size(); i++) { - TgeneMenuLevelDesc tgeneMenuLevelDesc = (TgeneMenuLevelDesc) lmodifyMenuLevel.get(i); - Integer presentationorder = new Integer(tgeneMenuLevelDesc.get("presentationorder").toString()); - - TgeneMenuLevelKey TgeneMenuLevelKey = new TgeneMenuLevelKey(); - TgeneMenuLevelKey.setMenucode(tgeneMenuLevelDesc.getPk().getMenucode()); - TgeneMenuLevelKey.setLevelcode(tgeneMenuLevelDesc.getPk().getLevelcode()); - TgeneMenuLevel tgeneMenuLevel = TgeneMenuLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuLevelKey); - if (tgeneMenuLevel == null) { - tgeneMenuLevel = new TgeneMenuLevel(); - tgeneMenuLevel.setPk(TgeneMenuLevelKey); - tgeneMenuLevel.setHavesublevel("Y"); - tgeneMenuLevel.setPresentationorder(presentationorder); - lTgeneMenuLevel.add(tgeneMenuLevel); - } else { - if (tgeneMenuLevel.getPresentationorder() != presentationorder) { - tgeneMenuLevel.setPresentationorder(presentationorder); - lTgeneMenuLevel.add(tgeneMenuLevel); - } - } - } - if (lTgeneMenuLevel.size() > 0) { - pSaveRequest.putSaveBean("TGENEMENULEVEL", lTgeneMenuLevel, 1); - } - } - } - - /** - * - * @param pSaveRequest - * @param ldeleteMenuLevel - * @throws Exception - */ - private void deleteMenuLevel(SaveRequest pSaveRequest, List ldeleteMenuLevel) throws Exception { - if(ldeleteMenuLevel == null){ - return; - } - List ldeleterecors = new ArrayList(); - for (int i = 0; i < ldeleteMenuLevel.size(); i++) { - TgeneMenuLevelDesc tgeneMenuLevelDesc = (TgeneMenuLevelDesc) ldeleteMenuLevel.get(i); - TgeneMenuLevelKey TgeneMenuLevelKey = new TgeneMenuLevelKey(); - TgeneMenuLevelKey.setMenucode(tgeneMenuLevelDesc.getPk().getMenucode()); - TgeneMenuLevelKey.setLevelcode(tgeneMenuLevelDesc.getPk().getLevelcode()); - TgeneMenuLevel tgeneMenuLevel = TgeneMenuLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuLevelKey); - if (tgeneMenuLevel != null) { - ldeleterecors.add(tgeneMenuLevel); - } - } - if(!ldeleterecors.isEmpty()){ - SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENULEVEL"); - if(sb!=null){ - sb.setDeletedRecords(ldeleterecors); - } - } - } - - /** - * Metodo que completa y modificalos datos para subniveles - * @param pSaveRequest - * @param lmodifyMenuSubLevel - * @throws Exception - */ - private void completeMenuSubLevel(SaveRequest pSaveRequest, List lmodifyMenuSubLevel) throws Exception { - if (lmodifyMenuSubLevel != null) { - List lTgeneMenuSubLevel = new ArrayList(); - for (int i = 0; i < lmodifyMenuSubLevel.size(); i++) { - TgeneMenuSubLevelDesc tgeneMenuSubLevelDesc = (TgeneMenuSubLevelDesc) lmodifyMenuSubLevel.get(i); - Integer presentationorder = new Integer(tgeneMenuSubLevelDesc.get("presentationorder").toString()); - TgeneMenuSubLevelKey tgeneMenuSubLevelKey = new TgeneMenuSubLevelKey(); - tgeneMenuSubLevelKey.setMenucode(tgeneMenuSubLevelDesc.getPk().getMenucode()); - tgeneMenuSubLevelKey.setLevelcode(tgeneMenuSubLevelDesc.getPk().getLevelcode()); - tgeneMenuSubLevelKey.setSublevel(tgeneMenuSubLevelDesc.getPk().getSublevel()); - TgeneMenuSubLevel tgeneMenuSubLevel = TgeneMenuSubLevel.find(PersistenceHelper.getEntityManager(), tgeneMenuSubLevelKey); - if (tgeneMenuSubLevel == null) { - tgeneMenuSubLevel = new TgeneMenuSubLevel(); - tgeneMenuSubLevel.setPk(tgeneMenuSubLevelKey); - tgeneMenuSubLevel.setPresentationorder(presentationorder); - lTgeneMenuSubLevel.add(tgeneMenuSubLevel); - } else { - if (tgeneMenuSubLevel.getPresentationorder() != presentationorder) { - tgeneMenuSubLevel.setPresentationorder(presentationorder); - lTgeneMenuSubLevel.add(tgeneMenuSubLevel); - } - } - } - if (lTgeneMenuSubLevel.size() > 0) { - pSaveRequest.putSaveBean("TGENEMENUSUBLEVEL", lTgeneMenuSubLevel, 1); - } - } - } - - /** - * - * @param pSaveRequest - * @param ldeleteMenuLevel - * @throws Exception - */ - private void deleteMenuSubLevel(SaveRequest pSaveRequest, List ldeleteMenuSubLevel) throws Exception { - if(ldeleteMenuSubLevel == null){ - return; - } - List ldeleterecors = new ArrayList(); - for (int i = 0; i < ldeleteMenuSubLevel.size(); i++) { - TgeneMenuSubLevelDesc tgeneMenuSubLevelDesc = (TgeneMenuSubLevelDesc) ldeleteMenuSubLevel.get(i); - TgeneMenuSubLevelKey TgeneMenuSubLevelKey = new TgeneMenuSubLevelKey(); - TgeneMenuSubLevelKey.setMenucode(tgeneMenuSubLevelDesc.getPk().getMenucode()); - TgeneMenuSubLevelKey.setLevelcode(tgeneMenuSubLevelDesc.getPk().getLevelcode()); - TgeneMenuSubLevelKey.setSublevel(tgeneMenuSubLevelDesc.getPk().getSublevel()); - TgeneMenuSubLevel tgeneMenuSubLevel = TgeneMenuSubLevel.find(PersistenceHelper.getEntityManager(), TgeneMenuSubLevelKey); - PersistenceHelper.delete(tgeneMenuSubLevelDesc); - if (tgeneMenuSubLevel != null) { - PersistenceHelper.delete(tgeneMenuSubLevel); - //ldeleterecors.add(tgeneMenuSubLevel); - } - } - SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENUSUBLEVELDESC"); - if(sb!=null){ - sb.setDeletedRecords(new ArrayList<>()); - } - //if(!ldeleterecors.isEmpty()){ - // SaveBean sb = (SaveBean)pSaveRequest.get("TGENEMENUSUBLEVEL"); - // if(sb!=null){ - // sb.setDeletedRecords(ldeleterecors); - // } - //} - } - - /** - * Metodo que se ejecuta en modo reverso - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceUser.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceUser.java.svn-base deleted file mode 100644 index e6658ea..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/MaintenanceUser.java.svn-base +++ /dev/null @@ -1,96 +0,0 @@ -package com.fp.general.security.rules; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetailKey; -import com.fp.persistence.pgeneral.safe.TsafeUserSession; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionKey; -import java.util.List; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -/** - * Clase que se va de encargar cuando se activa un usuario de eliminarlo de la tabla tsafeusersession para que se pueda loguear - * @author scastillo - */ -public class MaintenanceUser extends TransactionRule { - - /** - * Metodo que busca si estael usuario logueado lo eliminar de la sesion - * @param sr - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest sr) throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) sr.getSaveBeanModifiedObject("TSAFEUSERDETAIL"); - if (tsafeUserDetail == null) { - tsafeUserDetail = (TsafeUserDetail) sr.getSaveBeanModifiedObject("USERDETAIL"); - } - if (tsafeUserDetail == null) { - return sr; - } - String task = (String) tsafeUserDetail.get("task"); - String isuserbpm = tsafeUserDetail.getIsuserbpm(); - String usercode = tsafeUserDetail.getPk().getUsercode(); - TsafeUserDetailKey tsafeUserDetailKey = new TsafeUserDetailKey(); - tsafeUserDetailKey.setDateto(FormatDates.getDefaultExpiryTimestamp()); - tsafeUserDetailKey.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - tsafeUserDetailKey.setUsercode(tsafeUserDetail.getPk().getUsercode()); - TsafeUserDetail tsafeUserDetailPreview = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), tsafeUserDetailKey); - if (tsafeUserDetailPreview != null && tsafeUserDetailPreview.getUserstatuscatalog().compareTo("BLQ") == 0 - && tsafeUserDetail.getUserstatuscatalog().compareTo("ACT") == 0) { -// TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(); -// tsafeUserSessionKey.setDateto(FormatDates.getDefaultExpiryTimestamp()); -// tsafeUserSessionKey.setUsercode(tsafeUserDetail.getPk().getUsercode()); -// TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); -// if (tsafeUserSession != null) { -// Query qry = PersistenceHelper.getEntityManager().createQuery("update TsafeUserSession set pk.dateto=:expiration where pk.dateto = :dateto and pk.usercode = :usercode"); -// qry.setParameter("expiration", FormatDates.getInstance().getDataBaseTimestamp()); -// qry.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); -// qry.setParameter("usercode", tsafeUserSession.getPk().getUsercode()); -// qry.executeUpdate(); -// } - } - this.verifyUserGroup(task, isuserbpm, usercode); - return sr; - } - - /** - * Modo que se ejecuta en modo reverso - * @param sr - * @return - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest sr) throws Exception { - return sr; - } - - /** - * Verifica si el usuario del bpm a sido eliminado, lo elimina del grupo. - * @param task - * @param isuserbpm - * @param usercode - * @throws Exception - */ - private void verifyUserGroup(String task, String isuserbpm, String usercode) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - - if (task!=null && task.compareTo("NOTASK") == 0 && isuserbpm.compareTo("N") == 0) { - Query qry = em.createQuery("from TbpmGroupsUsers g where g.pk.usercode = :code"); - qry.setParameter("code", usercode); - @SuppressWarnings("unchecked") - List objs = (List)qry.getResultList(); - if(!objs.isEmpty()){ - for(TbpmGroupsUsers tbpmGroupsUsers: objs){ - PersistenceHelper.delete(tbpmGroupsUsers); - } - } - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Menu.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Menu.java.svn-base deleted file mode 100644 index d92fa8f..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Menu.java.svn-base +++ /dev/null @@ -1,136 +0,0 @@ -package com.fp.general.security.rules; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.general.db.DataHelper; -import com.fp.general.exception.GeneralException; -import com.fp.general.helper.MenuHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuProfile; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevel; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; - -/** - * Clase que se encarga de armar y entregar el menu, asociado a un perfil. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class Menu extends MenuHelper { - - /** Map que contiene los datos del menu. */ - private final Map rootmenu = new HashMap(); - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - String profile = pQueryRequest.getProfile(); - String language = pQueryRequest.getLanguage(); - TgeneMenuProfile menuprofile = DataHelper.getInstance().getTgeneMenuProfile(profile); - if (menuprofile != null) { - List lMenuLevel = DataHelper.getInstance().getTgeneMenuLevel(menuprofile.getMenucode()); - List> lLevels = new ArrayList>(); - for (TgeneMenuLevel obj : lMenuLevel) { - this.completeLevel(obj, lLevels, language); - } - rootmenu.put("items", lLevels); - rootmenu.put("label", "t"); - response.put("rootmenu", rootmenu); - } else { - throw new GeneralException("GENE-0017", "EL PERFIL {0} NO TIENE ASOCIADO UN MENU", profile); - } - return pQueryRequest; - } - - /** - * Metodo que completa datos del grupo de menu. - * - * @param pTgeneMenuGroup Definicion de grupo de menu. - * @param pGroup Grupo de menu a completar datos. - * @param languagecode Codigo de lenguage. - * @return boolean - * @throws Exception - */ - private boolean completeLevel(TgeneMenuLevel pTgeneMenuLevel, List> lLevels, String languagecode) throws Exception { - TgeneMenuLevelDesc tgeneMenuLevelDesc = DataHelper.getInstance().getTgeneMenuLevelDesc(pTgeneMenuLevel.getPk().getMenucode(), - pTgeneMenuLevel.getPk().getLevelcode(), languagecode); - if (tgeneMenuLevelDesc != null) { - String labelMenu = tgeneMenuLevelDesc.getDescription(); - if (labelMenu == null) { - labelMenu = "ETIQUETA DE MENU NO DEFINIDA"; - } - Map mlevel = new HashMap(); - mlevel.put("t", Constant.capitalize(labelMenu)); - mlevel.put("sl", Constant.ifYes(pTgeneMenuLevel.getHavesublevel()) == true ? "Y" : "N"); - List lData = super.completTransactionByLevel(tgeneMenuLevelDesc, languagecode); - if (Constant.ifYes(pTgeneMenuLevel.getHavesublevel())) { - this.fillSubLevel(pTgeneMenuLevel, lData, languagecode); - } - mlevel.put("items", lData); - lLevels.add(mlevel); - } - return true; - } - - /** - * Metodo que se encarga de construir ya dicionar el segundo nivel del menu. - * - * @param pTgeneMenuLevel Datos del segundo nivel del menu. - * @param lData Lista que contiene los datos del primer nivel del menu, al cual se adiciona los datos del segundo - * nivel del menu. - * @param languagecode Codigo de lenguaje del usuario. - * @throws Exception - */ - private void fillSubLevel(TgeneMenuLevel pTgeneMenuLevel, List lData, String languagecode) throws Exception { - List lSubLevel = DataHelper.getInstance().getTgeneMenuSuLevels(pTgeneMenuLevel.getPk().getMenucode(), - pTgeneMenuLevel.getPk().getLevelcode()); - if (lSubLevel == null) { - return; - } - for (TgeneMenuSubLevel obj : lSubLevel) { - Map mLevel = new HashMap(); - this.completeSubLevel(obj, mLevel, languagecode); - if (!mLevel.isEmpty()) { - lData.add(mLevel); - } else { - APPLogger.getLogger().debug( - "\nETIQUETA DE SUBNIVEL NO DEFINIDA\n\tmenucode=" + obj.getPk().getMenucode() + ";\n\tlevelcode=" - + obj.getPk().getLevelcode() + ";\n\tsublevelcode=" + obj.getPk().getSublevel() + ";\n\tlanguage=" + languagecode); - } - } - } - - /** - * Metodo que completa datos del segundo nivel del menu. - * - * @param pMenuSubLevel Datos del segundo nivel del menu. - * @param mLevel Map que contiene informacion de todas las opciones del segundo nivel del menu. - * @param languagecode Codigo de lenguaje del usuario. - * @throws Exception - */ - private void completeSubLevel(TgeneMenuSubLevel pMenuSubLevel, Map mLevel, String languagecode) throws Exception { - TgeneMenuSubLevelDesc subleveldesc = DataHelper.getInstance().getTgeneMenuSubLevelDesc(pMenuSubLevel.getPk().getMenucode(), - pMenuSubLevel.getPk().getLevelcode(), pMenuSubLevel.getPk().getSublevel(), languagecode); - if (subleveldesc != null) { - String labelMenu = subleveldesc.getDescription(); - if (labelMenu == null) { - labelMenu = "ETIQUETA DE MENU NO DEFINIDA"; - } - mLevel.put("t", Constant.capitalize(labelMenu)); - super.completTransactionBySubLevel(subleveldesc, mLevel, languagecode); - } - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Politics.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Politics.java.svn-base deleted file mode 100644 index 50fbe2b..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/Politics.java.svn-base +++ /dev/null @@ -1,264 +0,0 @@ -package com.fp.general.security.rules; - -import java.util.List; - -import com.fp.common.base64.Base64Input; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.safe.TsafePassword; -import com.fp.persistence.pgeneral.safe.TsafePasswordKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetailKey; - -/** - * Clase que se encarga de validar la politica de seguridad definida en TsafePassword. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Politics extends TransactionRule { - - /***/ - private static final String UPPER = "ABCDEFGHIJKLMNOPQRSTUVWXYZ"; - - private static final String LOWER = "abcdefghijklmnopqrstuvwxyz"; - - private static final String NUMBERS = "0123456789"; - - /** Tabla que almnacena politica de seguridad del password. */ - private TsafePassword tsafePassword = null; - - private Integer numeric = 0; - - private Integer upper = 0; - - private Integer lower = 0; - - private Integer special = 0; - - /** - * Metodo que caduca el registro vigente del inicio de sesion - * - * @param pSaveRequest Datos del request original. - * @return SaveRequest - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - TsafeUserDetail tsafeUserDetailForm = (TsafeUserDetail) pSaveRequest.getSaveBeanModifiedObject("TSAFEUSERDETAIL"); - TsafeUserDetailKey tsafeUserDetailKey = new TsafeUserDetailKey(tsafeUserDetailForm.getPk().getUsercode(), tsafeUserDetailForm.getPk() - .getPersoncode(), FormatDates.getDefaultExpiryTimestamp()); - TsafeUserDetail tsafeUserDetail = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), tsafeUserDetailKey); - TsafePasswordKey key = new TsafePasswordKey(pSaveRequest.getCompany(), pSaveRequest.getChannelCode()); - this.tsafePassword = TsafePassword.find(PersistenceHelper.getEntityManager(), key); - String value = tsafeUserDetailForm.get("origination").toString(); - String oldpassword = tsafeUserDetailForm.get("oldpassword").toString(); - String passindatabase = tsafeUserDetail.getPassword(); - if(pSaveRequest.isJsf()){ - passindatabase = ((TsafeUserDetail)tsafeUserDetailForm.get("ORIGINALBEAN")).getPassword(); - value = tsafeUserDetailForm.get("newpassword").toString(); - } - - if ((oldpassword != null) && (oldpassword.compareTo("") != 0) && (passindatabase.compareTo(oldpassword) != 0)) { - throw new GeneralException("GENE-0025", "CONTRASEA ANTERIOR INCORRECTA"); - } - // Valida politica de seguridad - this.validate(value, pSaveRequest.isJsf()); - // Valida que no se repitan los ultimos n passwords - this.validateNotrepeated(tsafeUserDetailForm, tsafeUserDetailForm.get("origination").toString() ); - return pSaveRequest; - } - - /** - * Metodo que valida la politica de seguridad del password. - * - * @param value Password en base 64. - * @throws Exception - */ - private void validate(String value, boolean isjsf) throws Exception { - // OBTIENE EL PASSWORD EN CARACTER - if(!isjsf){ - value = Base64Input.decodificar(value); - } - this.validateLength(value); - for (int i = 0; i < value.length(); i++) { - String c = value.substring(i, i + 1); - this.compute(c); - } - this.validateNumbers(); - this.validateUppercase(); - this.validateLowercase(); - this.validateSpecial(); - - } - - /** - * Metodo que valida la longitud del password. - * - * @param value Datos de la clave a validar. - * @return boolean - * @throws Exception - */ - private void validateLength(String value) throws Exception { - if ((this.tsafePassword.getMinlength() != null) && (value.length() < this.tsafePassword.getMinlength())) { - throw new GeneralException("GENE-0030", "LA LONGITUD MNIMA DE LA CONTRASEA DEBE SER DE {0} CARACTERES", this.tsafePassword.getMinlength()); - } - } - - /** - * Metodo que valida numeros minimos en el password. - * - * @throws Exception - */ - private void validateNumbers() throws Exception { - if ((this.tsafePassword.getMinnumber() != null) && (this.tsafePassword.getMinnumber() > 0) - && (this.tsafePassword.getMinnumber() > this.numeric)) { - throw new GeneralException("GENE-0029", "LA CONTRASEA DEBE TENER POR LO MENOS {0} NMEROS", this.tsafePassword.getMinnumber()); - } - } - - /** - * Metodo que valida letras mayusculas minimas en el password. - * - * @throws Exception - */ - private void validateUppercase() throws Exception { - if ((this.tsafePassword.getMinuppercase() != null) && (this.tsafePassword.getMinuppercase() > 0) - && (this.tsafePassword.getMinuppercase() > this.upper)) { - throw new GeneralException("GENE-0028", "LA CONTRASEA DEBE TENER POR LO MENOS {0} LETRAS MAYSCULAS", this.tsafePassword.getMinuppercase()); - } - } - - /** - * Metodo que valida letras minusculas minimas en el password. - * - * @throws Exception - */ - private void validateLowercase() throws Exception { - if ((this.tsafePassword.getMinlowercase() != null) && (this.tsafePassword.getMinlowercase() > 0) - && (this.tsafePassword.getMinlowercase() > this.lower)) { - throw new GeneralException("GENE-0026", "LA CONTRASEA DEBE TENER POR LO MENOS {0} LETRAS MINSCULAS", this.tsafePassword.getMinlowercase()); - } - } - - /** - * Metodo que valida los caracteres especiales. - * - * @throws Exception - */ - private void validateSpecial() throws Exception { - if ((this.tsafePassword.getMinspecialcharacters() != null) && (this.tsafePassword.getMinspecialcharacters() > 0) - && (this.tsafePassword.getMinspecialcharacters() > this.special)) { - throw new GeneralException("GENE-0027", "LA CONTRASEA DEBE TENER POR LO MENOS {0} CARACTERES ESPECIALES", - this.tsafePassword.getMinspecialcharacters()); - } - } - - /** - * Valida que el password no se repita en las ultimas n veces. - * - * @param obj Datos del nuevo password. - * @throws Exception - */ - private void validateNotrepeated(TsafeUserDetail useerdetail, String passindatabase) throws Exception { - if ((this.tsafePassword.getMinnotrepeated() == null) || (this.tsafePassword.getMinnotrepeated().compareTo(0) == 0)) { - return; - } - List ldata = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), useerdetail.getPk().getUsercode(), - this.tsafePassword.getMinnotrepeated()); - if ((ldata == null) || ldata.isEmpty()) { - return; - } - - for (TsafeUserDetail obj : ldata) { - if(obj.get("ORIGINALBEAN") != null){ - continue; - } - PersistenceHelper.detatch(obj); - if (obj.getPassword().compareTo(passindatabase) == 0) { - throw new GeneralException("GENE-0022", "NO PUEDE REPETIR LAS LTIMAS: {0} CONTRASEAS", this.tsafePassword.getMinnotrepeated()); - } - } - } - - /** - * Metodo que se encarga de acumular, numeros, mayusculas y/o minusculas. - * - * @param c Datoa a verificar. - * @throws Exception - */ - private void compute(String c) throws Exception { - if (this.isNumber(c)) { - this.numeric++; - return; - } - if (this.isUppercase(c)) { - this.upper++; - return; - } - if (this.isLowercase(c)) { - this.lower++; - return; - } - // Si no es numero, mayuscula o minuscula es un caractwer especial - this.special++; - } - - /** - * Metdo que verifica si el caracter es un numero. - * - * @param value Dato a verificar si es un numero - * @return boolean - * @throws Exception - */ - private boolean isNumber(String value) throws Exception { - if (Politics.NUMBERS.indexOf(value) >= 0) { - return true; - } - return false; - } - - /** - * Metdo que verifica si el caracter es una mayuscula, incluye tildes. - * - * @param value Dato a verificar si es una mayuscula - * @return boolean - * @throws Exception - */ - private boolean isUppercase(String value) throws Exception { - if (Politics.UPPER.indexOf(value) >= 0) { - return true; - } - return false; - } - - /** - * Metdo que verifica si el caracter es una minuscula incluye tildes. - * - * @param value Dato a verificar si es una minuscula - * @return boolean - * @throws Exception - */ - private boolean isLowercase(String value) throws Exception { - if (Politics.LOWER.indexOf(value) >= 0) { - return true; - } - return false; - } - - /** - * Metodo que se ejecuta en modo reverso - * - * @param pSaveRequest - * @return SaveRequest - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogon.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogon.java.svn-base deleted file mode 100644 index 9f9efdf..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogon.java.svn-base +++ /dev/null @@ -1,601 +0,0 @@ -package com.fp.general.security.rules; - -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.common.helper.CalculationBase; -import com.fp.dto.data.SaveData; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.db.DataHelper; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.gene.TgeneArea; -import com.fp.persistence.pgeneral.gene.TgeneAreaKey; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneChannels; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCityKey; -import com.fp.persistence.pgeneral.gene.TgeneCompany; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneLabel; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.gene.TgeneOfficeKey; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; -import com.fp.persistence.pgeneral.safe.TsafeJavaScript; -import com.fp.persistence.pgeneral.safe.TsafePassword; -import com.fp.persistence.pgeneral.safe.TsafePasswordKey; -import com.fp.persistence.pgeneral.safe.TsafeProfile; -import com.fp.persistence.pgeneral.safe.TsafeTerminal; -import com.fp.persistence.pgeneral.safe.TsafeTerminalKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; -import com.fp.persistence.pgeneral.safe.TsafeUserSession; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionKey; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionLog; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionLogKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encargara del ingreso a la aplicacion - * - * @author scastillo - * @version 2.1 - */ -public class UserLogon extends QueryRule { - - private static final long serialVersionUID = 1L; - - private static SimpleDateFormat simpleDateFormatCreateTime = new SimpleDateFormat("HH:mm:ss"); - - private TsafePassword tsafePassword; - - private boolean isjsf; - - /** - * Metodo que ejecuta el proceso - * - * @param pQueryRequest - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - isjsf = pQueryRequest.isJsf(); - TsafeUserDetail userdetail = this.getTsafeUserDetail(pQueryRequest); - - String terminal = (String) pQueryRequest.get("ip"); - String host = (String) pQueryRequest.get("host"); - String jsessionid = (String) pQueryRequest.get("jsessionid"); - String usercode = (String) pQueryRequest.get("login"); - if (userdetail == null) { - this.writeLog(pQueryRequest, usercode, terminal, jsessionid, host, "GENE-0011", "USUARIO NO EXISTE"); - throw new GeneralException("GENE-0011", "USUARIO NO EXISTE"); - } - if (userdetail.getUserstatuscatalog().compareTo("ACT") != 0) { - TgeneCatalogDetailKey tgeneCatalogDetailKey = new TgeneCatalogDetailKey(userdetail.getUserstatuscatalog(), - userdetail.getUserstatuscatalogcode()); - TgeneCatalogDetail tgeneCatalogDetail = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), tgeneCatalogDetailKey); - this.writeLog(pQueryRequest, userdetail, "GENE-0010", "EL USUARIO " + userdetail.getPk().getUsercode() + " SE ENCUENTRA " - + tgeneCatalogDetail.getDescription()); - throw new GeneralException("GENE-0010", "EL USUARIO {0} SE ENCUENTRA {1}", userdetail.getPk().getUsercode(), - tgeneCatalogDetail.getDescription()); - } - TsafeTerminal tsafeTerminal = null; - // userdetail.getTerminalcode() - if ((userdetail.getBranchfromterminal() != null) && (userdetail.getBranchfromterminal().compareTo("Y") == 0) - && (userdetail.getTerminalcode() != null)) { - TsafeTerminalKey tsafeTerminalKey = new TsafeTerminalKey(userdetail.getTerminalcode(), userdetail.getCompanycode()); - TsafeTerminal tsafeTerminalAux = TsafeTerminal.find(PersistenceHelper.getEntityManager(), tsafeTerminalKey); - if (tsafeTerminalAux == null) { - this.writeLog(pQueryRequest, userdetail, "CORE-0002", "TERMINAL " + terminal + " NO DEFINIDO EN TSAFETERMINAL"); - throw new GeneralException("CORE-0002", "TERMINAL {0} NO DEFINIDO EN TSAFETERMINAL", terminal); - } else { - tsafeTerminal = tsafeTerminalAux; - terminal = tsafeTerminalAux.getIpaddress(); - } - } - if (tsafeTerminal == null) { - tsafeTerminal = TsafeTerminal.find(PersistenceHelper.getEntityManager(), userdetail.getCompanycode(), terminal); - } - if ((userdetail.getBranchfromterminal() != null) && (userdetail.getBranchfromterminal().compareTo("Y") == 0)) { - if (tsafeTerminal == null) { - this.writeLog(pQueryRequest, userdetail, "CORE-0002", "TERMINAL " + terminal + " NO DEFINIDO EN TSAFETERMINAL"); - throw new GeneralException("CORE-0002", "TERMINAL {0} NO DEFINIDO EN TSAFETERMINAL", terminal); - } else if ((tsafeTerminal != null) && (userdetail.getTerminalcode() != null)) { - TsafeTerminalKey tsafeTerminalKey = new TsafeTerminalKey(userdetail.getTerminalcode(), userdetail.getCompanycode()); - TsafeTerminal tsafeTerminalaux = TsafeTerminal.find(PersistenceHelper.getEntityManager(), tsafeTerminalKey); - if ((tsafeTerminalaux != null) && (tsafeTerminalaux.getIpaddress() != null) - && (tsafeTerminalaux.getIpaddress().compareTo(terminal) != 0)) { - this.writeLog(pQueryRequest, userdetail, "CORE-0056", "LA IP " + terminal + " NO SE ENCUENTRA AUTORIZADA PARA EL USUARIO " - + userdetail.getPk().getUsercode()); - throw new GeneralException("CORE-0056", "LA IP {0} NO SE ENCUENTRA AUTORIZADA PARA EL USUARIO {1}", terminal, userdetail.getPk() - .getUsercode()); - } - } - if (userdetail.getBranchcode().compareTo(tsafeTerminal.getBranchcode()) != 0) { - throw new GeneralException("CORE-0064", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA SUCURSAL {1}"); - } - if (userdetail.getOfficecode().compareTo(tsafeTerminal.getOfficecode()) != 0) { - throw new GeneralException("CORE-0065", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA OFICINA {1}"); - } - if (userdetail.getAreacode().compareTo(tsafeTerminal.getAreacode()) != 0) { - throw new GeneralException("CORE-0066", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA REA {1}"); - } - } - if ((tsafeTerminal != null) && (tsafeTerminal.getSliptprinter() != null)) { - userdetail.addAddtionalInfo("spn", tsafeTerminal.getSliptprinter()); - } else { - userdetail.addAddtionalInfo("spn", null); - } - TsafePasswordKey key = new TsafePasswordKey(pQueryRequest.getCompany(), userdetail.getChannelcode()); - this.tsafePassword = TsafePassword.find(PersistenceHelper.getEntityManager(), key); - if (this.tsafePassword == null) { - this.writeLog(pQueryRequest, userdetail, "GENE-0023", "POLITICA DE SEGURIDAD NO DEFINIDA"); - throw new GeneralException("GENE-0023", "POLITICA DE SEGURIDAD NO DEFINIDA"); - } - if (!this.validatePassword(userdetail, pQueryRequest, terminal, jsessionid, host)) { - return pQueryRequest; - } - this.completeLocation(userdetail); - this.completeAreaName(userdetail); - this.completeCompanyName(userdetail); - this.completeChannelName(userdetail); - this.completeBranchName(userdetail, pQueryRequest, terminal); - this.completeOfficeName(userdetail); - this.completeProfile(userdetail); - this.completeDates(userdetail); - if (!pQueryRequest.isJsf()) { - this.completeJavaScript(userdetail); - this.completeInternazionalization(userdetail); - } - //datos de usuario de la sbs - TcustPersonDetail tcp = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), userdetail.getPk().getPersoncode()); - userdetail.addAddtionalInfo("sbsemployee", tcp.getSbsemployee()); - userdetail.addAddtionalInfo("sbsusercode", tcp.getSbsusercode()); - - this.createSession(userdetail, pQueryRequest, terminal, jsessionid, host); - //guarda la aceptacion de terminos - System.out.println("0 terminos :: "+pQueryRequest.get("terminos")); - if(pQueryRequest.get("terminos")!=null && !pQueryRequest.get("terminos").toString().trim().isEmpty()){ - //guarda - System.out.println("1 "+pQueryRequest.get("aceptaterminos")); - String acepta=pQueryRequest.get("aceptaterminos").toString(); - System.out.println("2 "+pQueryRequest.get("identificacionterminos")); - String identificacion=pQueryRequest.get("identificacionterminos").toString(); - System.out.println("3 "+pQueryRequest.get("documentoterminos")); - String documento=pQueryRequest.get("documentoterminos").toString(); - this.saveTerminos(acepta,identificacion,documento); - } - return pQueryRequest; - } - - private void saveTerminos(String acepta,String identificacion,String documento) throws Exception { - StringBuilder sql = new StringBuilder("INSERT INTO TARMTERMINOS(CTERMINOS,ACEPTA,IDENTIFICACION,FECHAREGISTRO,DOCUMENTO)" - + " VALUES ((select nvl ( max(CTERMINOS)+1, 1) as ass from TARMTERMINOS)," - + ":acepta,:identificacion,sysdate,:documento) "); - System.out.println("va a ejecutar"); - PersistenceHelper.getEntityManager().createNativeQuery(sql.toString()) - .setParameter("acepta", acepta) - .setParameter("identificacion", identificacion) - .setParameter("documento", documento) - .executeUpdate(); - System.out.println("Ejecuta"); - } - - private TsafeUserDetail getTsafeUserDetail(QueryRequest pQueryRequest) throws Exception { - TsafeUserDetail userdetail = null; - if (!pQueryRequest.isJsf()) { - Query qry = new Query(); - PersistenceHelper.getEntityManager().clear(); - qry.process(pQueryRequest); - userdetail = (TsafeUserDetail) pQueryRequest.getResponse().get("TSAFEUSERDETAIL"); - } else { - userdetail = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), pQueryRequest.getUser()); - pQueryRequest.getResponse().put("TSAFEUSERDETAIL", userdetail); - } - return userdetail; - } - - /** - * Metodo que agrega el nombre de la sucursal y la ip del cleinte en el detail - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @throws Exception - */ - private void completeBranchName(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal) throws Exception { - TgeneBranch branch = DataHelper.getInstance().getTgeneBranch(pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - pUserdetail.addAddtionalInfo("bn", branch.getDescription()); - pUserdetail.addAddtionalInfo("ip", terminal); - } - - /** - * Metodo que agrega la descripcin del area del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeAreaName(TsafeUserDetail pUserdetail) throws Exception { - TgeneAreaKey tgeneAreaKey = new TgeneAreaKey(pUserdetail.getCompanycode(), pUserdetail.getAreacode()); - TgeneArea tgeneArea = (TgeneArea) PersistenceHelper.getSession().get(TgeneArea.class, tgeneAreaKey); - pUserdetail.addAddtionalInfo("an", tgeneArea.getDescripction()); - } - - /** - * Metodo que agrega el nombre de la compania - * - * @param pUserdetail - * @throws Exception - */ - private void completeCompanyName(TsafeUserDetail pUserdetail) throws Exception { - TgeneCompany tgeneCompany = (TgeneCompany) PersistenceHelper.getSession().get(TgeneCompany.class, pUserdetail.getCompanycode()); - pUserdetail.addAddtionalInfo("cn", GeneralDescriptions.getPersonname(tgeneCompany.getPersoncode())); - } - - /** - * Metodo que agrega la descripcion del canal del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeChannelName(TsafeUserDetail pUserdetail) throws Exception { - TgeneChannels tgeneChannels = (TgeneChannels) PersistenceHelper.getSession().get(TgeneChannels.class, pUserdetail.getChannelcode()); - pUserdetail.addAddtionalInfo("chn", tgeneChannels.getDescription()); - } - - /** - * Metodo que agrega la oficina en el detail - * - * @param pUserdetail - * @throws Exception - */ - private void completeOfficeName(TsafeUserDetail pUserdetail) throws Exception { - TgeneOfficeKey tgeneOfficeKey = new TgeneOfficeKey(pUserdetail.getOfficecode(), pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - TgeneOffice office = TgeneOffice.find(PersistenceHelper.getEntityManager(), tgeneOfficeKey); - pUserdetail.addAddtionalInfo("on", office.getDescription()); - } - - /** - * Metodo que completa la fecha contable y de trabajao - * - * @param pUserdetail - * @throws Exception - */ - private void completeDates(TsafeUserDetail pUserdetail) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pUserdetail.getCompanycode(), 0); - String hour = UserLogon.simpleDateFormatCreateTime.format(FormatDates.getInstance().getDataBaseTimestamp()); - pUserdetail.addAddtionalInfo("wt", hour); - if (tgeneAccountingDateBranch == null) { - pUserdetail.addAddtionalInfo("ad", null); - pUserdetail.addAddtionalInfo("wd", null); - } else { - pUserdetail.addAddtionalInfo("ad", tgeneAccountingDateBranch.getAccountingdate()); - pUserdetail.addAddtionalInfo("wd", tgeneAccountingDateBranch.getWorkingdate()); - } - } - - /** - * Metodo para completar datos de ubicacion del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeLocation(TsafeUserDetail pUserdetail) throws Exception { - if ((pUserdetail.getBranchcode() != null) && (pUserdetail.getCompanycode() != null) && (pUserdetail.getOfficecode() != null)) { - TgeneOfficeKey tgeneOfficeKey = new TgeneOfficeKey(pUserdetail.getOfficecode(), pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - TgeneOffice tgeneOffice = TgeneOffice.find(PersistenceHelper.getEntityManager(), tgeneOfficeKey); - pUserdetail.addAddtionalInfo("address", tgeneOffice.getAddress()); - pUserdetail.addAddtionalInfo("citycode", tgeneOffice.getCitycode()); - if (tgeneOffice.getCountrycode() != null) { - - TgeneCountry tgeneCountry = TgeneCountry.find(PersistenceHelper.getEntityManager(), tgeneOffice.getCountrycode()); - pUserdetail.addAddtionalInfo("countrycode", tgeneCountry.getPk()); - pUserdetail.addAddtionalInfo("countryname", tgeneCountry.getDescription()); - } else { - pUserdetail.addAddtionalInfo("countrycode", null); - pUserdetail.addAddtionalInfo("countryname", null); - } - if ((tgeneOffice.getCountrycode() != null) && (tgeneOffice.getProvincecode() != null)) { - TgeneProvinceKey tgeneProvinceKey = new TgeneProvinceKey(tgeneOffice.getCountrycode(), tgeneOffice.getProvincecode()); - TgeneProvince tgeneProvince = TgeneProvince.find(PersistenceHelper.getEntityManager(), tgeneProvinceKey); - pUserdetail.addAddtionalInfo("provincecode", tgeneProvince.getPk().getProvincecode()); - pUserdetail.addAddtionalInfo("provincename", tgeneProvince.getDescription()); - } else { - pUserdetail.addAddtionalInfo("provincecode", null); - pUserdetail.addAddtionalInfo("provincename", null); - } - if ((tgeneOffice.getCountrycode() != null) && (tgeneOffice.getProvincecode() != null) && (tgeneOffice.getCantoncode() != null) - && (tgeneOffice.getCitycode() != null)) { - TgeneCityKey tgeneCityKey = new TgeneCityKey(tgeneOffice.getCountrycode(), tgeneOffice.getProvincecode(), - tgeneOffice.getCantoncode(), tgeneOffice.getCitycode()); - TgeneCity tgeneCity = TgeneCity.find(PersistenceHelper.getEntityManager(), tgeneCityKey); - pUserdetail.addAddtionalInfo("cityname", tgeneCity.getDescription()); - } else { - pUserdetail.addAddtionalInfo("cityname", null); - } - pUserdetail.addAddtionalInfo("username", GeneralDescriptions.getUsername(pUserdetail.getPk().getUsercode())); - } else { - pUserdetail.addAddtionalInfo("address", null); - pUserdetail.addAddtionalInfo("citycode", null); - pUserdetail.addAddtionalInfo("cityname", null); - pUserdetail.addAddtionalInfo("countrycode", null); - pUserdetail.addAddtionalInfo("countryname", null); - pUserdetail.addAddtionalInfo("provincecode", null); - pUserdetail.addAddtionalInfo("provincename", null); - pUserdetail.addAddtionalInfo("username", null); - } - } - - /** - * Metodo que completa el perfile del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeProfile(TsafeUserDetail pUserdetail) throws Exception { - List profile = DataHelper.getInstance().getTsafeUserProfile(pUserdetail.getPk().getUsercode()); - if (this.isjsf) { - pUserdetail.addAddtionalInfo("lprofile", profile); - for (TsafeUserProfile tsafeUserProfile : profile) { - TsafeProfile tsafeProfile = TsafeProfile.find(PersistenceHelper.getEntityManager(), tsafeUserProfile.getPk().getProfilecode()); - tsafeUserProfile.addAddtionalInfo("nprofile", tsafeProfile.getDescription()); - } - return; - } - String profileData = ""; - String profileDataDesc = ""; - - for (int i = 0; i < profile.size(); i++) { - if (i > 0) { - profileData += "."; - profileDataDesc += "."; - } - profileData += profile.get(i).getPk().getProfilecode(); - TsafeProfile tsafeProfile = TsafeProfile.find(PersistenceHelper.getEntityManager(), profile.get(i).getPk().getProfilecode()); - profileDataDesc += tsafeProfile.getDescription(); - } - pUserdetail.addAddtionalInfo("profile", profileData); - pUserdetail.addAddtionalInfo("profiledesc", profileDataDesc); - } - - /** - * Metodo que verifica si el password ingresado es correcto - * - * @param pUserdetail - * @param pQueryRequest - * @throws Exception - */ - private boolean validatePassword(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - String passwd = (String) pQueryRequest.get("itemValue"); - // Valida que el password no este expirado - this.validateExpiration(pUserdetail, pQueryRequest); - if (passwd.compareTo(pUserdetail.getPassword()) != 0) { - boolean maxintentos = this.increaseTryNumber(pUserdetail, pQueryRequest, terminal, jsessionid, host); - if (maxintentos) { - return false; - } - this.writeLog(pQueryRequest, pUserdetail, "GENE-0003", "USUARIO O PASSWORD INCORRECTO"); - pQueryRequest.getResponse().setResponseCode("GENE-0003"); - pQueryRequest.getResponse().setResponseUserMessage("USUARIO O PASSWORD INCORRECTO"); - return false; - } - return true; - } - - /** - * Metodo que verifica si el password ingresado es correcto - * - * @param pUserdetail - * @param pQueryRequest - * @throws Exception - */ - private void validateExpiration(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest) throws Exception { - // Valida que el password no este expirado - if ((this.tsafePassword.getValiditydays() != null) && (this.tsafePassword.getValiditydays() > 0)) { - APPDates appd = new APPDates(pUserdetail.getDatefrom().toString().substring(0, 10), CalculationBase.B365365); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - APPDates appd1 = new APPDates(db.getWorkingdate(), CalculationBase.B365365); - if (appd1.compareTo(appd) >= 0) { - Integer days = appd1.substract(appd); - if (days.compareTo(this.tsafePassword.getValiditydays()) > 0) { - throw new GeneralException("GENE-0023", "CONTRASEA EXPIRADA"); - } - days = days + this.tsafePassword.getMessagedays(); - if (days.compareTo(this.tsafePassword.getValiditydays()) >= 0) { - days = days - this.tsafePassword.getMessagedays(); - days = this.tsafePassword.getValiditydays() - days; - pUserdetail.addAddtionalInfo("dpwd", days); - } - } - } - } - - /** - * Metodo que completa la internacionalizacion dentro de la aplicacion - * - * @param pUserdetail - * @throws Exception - */ - private void completeInternazionalization(TsafeUserDetail pUserdetail) throws Exception { - List lTgeneLabel = TgeneLabel.getTgeneLabel(PersistenceHelper.getEntityManager(), pUserdetail.getLanguagecode(), - pUserdetail.getChannelcode()); - Map map = new HashMap(); - for (int i = 0; i < lTgeneLabel.size(); i++) { - TgeneLabel tgeneLabel = lTgeneLabel.get(i); - map.put(tgeneLabel.getPk().getLabel(), tgeneLabel.getDescription()); - } - pUserdetail.put("i18n", map); - } - - /** - * Metodo que completa los javascript - * - * @param pUserdetail - * @throws Exception - */ - private void completeJavaScript(TsafeUserDetail pUserdetail) throws Exception { - List tsafeJavaScript = TsafeJavaScript.find(PersistenceHelper.getEntityManager(), pUserdetail.getCompanycode(), - pUserdetail.getChannelcode()); - pUserdetail.put("js", tsafeJavaScript); - } - - /** - * Metodo que crea la sesion cuando no existe una - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @param jsessionid - * @param host - * @throws Exception - */ - private void createSession(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(pUserdetail.getPk().getUsercode(), FormatDates.getInstance().getDataBaseTimestamp()); - TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); - PersistenceHelper.detatch(tsafeUserSession); - if (tsafeUserSession == null) { - tsafeUserSession = new TsafeUserSession(); - tsafeUserSession.setDatefrom(FormatDates.getInstance().getDataBaseTimestamp()); - tsafeUserSession.setPk(tsafeUserSessionKey); - tsafeUserSession.setTrynumber(1); - tsafeUserSession.setSessionid(jsessionid); - tsafeUserSession.setTerminalcode(terminal); - tsafeUserSession.setWebserverip(host); - this.saveObject(tsafeUserSession); - } else { - if (tsafeUserSession.getTerminalcode().compareTo(terminal) == 0) { - tsafeUserSession.setDatefrom(FormatDates.getInstance().getDataBaseTimestamp()); - this.saveObject(tsafeUserSession); - } else { - this.writeLog(pQueryRequest, pUserdetail, "GENE-0009", "EL USUARIO " + pUserdetail.getPk().getUsercode() - + " SE ENCUENTRA TRABAJANDO EN EL TERMINAL " + tsafeUserSession.getTerminalcode()); - throw new GeneralException("GENE-0009", "EL USUARIO {0} SE ENCUENTRA TRABAJANDO EN EL TERMINAL {1}", pUserdetail.getPk() - .getUsercode(), tsafeUserSession.getTerminalcode()); - } - } - } - - /** - * Metodo que incrementa el numero de intentos - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @param jsessionid - * @param host - * @return - * @throws Exception - */ - private boolean increaseTryNumber(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(pUserdetail.getPk().getUsercode(), FormatDates.getDefaultExpiryTimestamp()); - TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); - if (tsafeUserSession != null) { - TsafeUserSession tsafeUserSessionAux = (TsafeUserSession) tsafeUserSession.cloneMe(); - tsafeUserSessionAux.getPk().setDateto(FormatDates.getInstance().getDataBaseTimestamp()); - this.saveObject(tsafeUserSessionAux); - tsafeUserSession.setTrynumber(tsafeUserSession.getTrynumber() + 1); - this.saveObject(tsafeUserSession); - - if ((this.tsafePassword.getIntentnumber() != null) && (tsafeUserSession.getTrynumber() >= this.tsafePassword.getIntentnumber())) { - pUserdetail.setUserstatuscatalog("BLQ"); - this.saveObject(pUserdetail); - pQueryRequest.getResponse().setResponseCode("GENE-0007"); - pQueryRequest.getResponse().setResponseUserMessage( - MessageFormat.format("EL USUARIO {0} HA SIDO BLOQUEADO POR INGRESO DE CLAVE ERRONEA", pUserdetail.getPk().getUsercode())); - return true; - } - } else { - this.createSession(pUserdetail, pQueryRequest, terminal, jsessionid, host); - } - return false; - } - - /** - * Mtodo que guarda los datos en la tabla - * - * @param object - * @throws Exception - */ - private void saveObject(Object object) throws Exception { - PersistenceHelper.getEntityManager().merge(object); - } - - /** - * - * @param pQueryRequest - * @param usercode - * @param terminal - * @param jsessionid - * @param host - * @param errorCode - * @param messageError - * @throws Exception - */ - private void writeLog(QueryRequest pQueryRequest, String usercode, String terminal, String jsessionid, String host, String errorCode, - String messageError) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - TsafeUserSessionLogKey tsafeUserSessionLogKey = new TsafeUserSessionLogKey(tgeneAccountingDateBranch.getAccountingdate(), - getSequenceLoginLog(), pQueryRequest.getCompany()); - TsafeUserSessionLog tsafeUserSessionLog = new TsafeUserSessionLog(tsafeUserSessionLogKey, usercode, terminal, jsessionid, host, FormatDates - .getInstance().getDataBaseTimestamp(PersistenceHelper.getEntityManager()), errorCode, messageError); - NestedSave nestedSave = new NestedSave(pQueryRequest.getCompany(), tsafeUserSessionLog); - nestedSave.start(); - } - - /** - * - * @param pQueryRequest - * @param tsafeUserDetail - * @param errorCode - * @param messageError - * @throws Exception - */ - private void writeLog(QueryRequest pQueryRequest, TsafeUserDetail tsafeUserDetail, String errorCode, String messageError) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - String terminal = (String) pQueryRequest.get("ip"); - String host = (String) pQueryRequest.get("host"); - String jsessionid = (String) pQueryRequest.get("jsessionid"); - TsafeUserSessionLogKey tsafeUserSessionLogKey = new TsafeUserSessionLogKey(tgeneAccountingDateBranch.getAccountingdate(), - getSequenceLoginLog(), pQueryRequest.getCompany()); - TsafeUserSessionLog tsafeUserSessionLog = new TsafeUserSessionLog(tsafeUserSessionLogKey, tsafeUserDetail.getPk().getUsercode(), terminal, - jsessionid, host, FormatDates.getInstance().getDataBaseTimestamp(PersistenceHelper.getEntityManager()), errorCode, messageError); - tsafeUserSessionLog.setBranchcode(tsafeUserDetail.getBranchcode()); - tsafeUserSessionLog.setOfficecode(tsafeUserDetail.getOfficecode()); - NestedSave nestedSave = new NestedSave(pQueryRequest.getCompany(), tsafeUserSessionLog); - nestedSave.start(); - } - - /** - * Metodo que entrega la secuencia para gurdar los logs - * - * @return - * @throws Exception - */ - private Integer getSequenceLoginLog() throws Exception { - Sequence sequence = new Sequence(); - Integer loginsequnce = Integer.valueOf(sequence.getNextValue("LOGINLOG").toString()); - SaveData.getMap().put("LOGINLOG", loginsequnce.toString()); - return loginsequnce; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogonCas.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogonCas.java.svn-base deleted file mode 100644 index 5fee983..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/.svn/text-base/UserLogonCas.java.svn-base +++ /dev/null @@ -1,569 +0,0 @@ -package com.fp.general.security.rules; - -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.base.persistence.util.helper.GeneralDescriptions; -import com.fp.bpm.query.Query; -import com.fp.common.helper.CalculationBase; -import com.fp.dto.data.SaveData; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.db.DataHelper; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.gene.TgeneArea; -import com.fp.persistence.pgeneral.gene.TgeneAreaKey; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneChannels; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCityKey; -import com.fp.persistence.pgeneral.gene.TgeneCompany; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneLabel; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.gene.TgeneOfficeKey; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; -import com.fp.persistence.pgeneral.safe.TsafeJavaScript; -import com.fp.persistence.pgeneral.safe.TsafePassword; -import com.fp.persistence.pgeneral.safe.TsafePasswordKey; -import com.fp.persistence.pgeneral.safe.TsafeProfile; -import com.fp.persistence.pgeneral.safe.TsafeTerminal; -import com.fp.persistence.pgeneral.safe.TsafeTerminalKey; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; -import com.fp.persistence.pgeneral.safe.TsafeUserSession; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionKey; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionLog; -import com.fp.persistence.pgeneral.safe.TsafeUserSessionLogKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encargara del ingreso a la aplicacion - * - * @author scastillo - * @version 2.1 - */ -public class UserLogonCas extends QueryRule { - - private static final long serialVersionUID = 1L; - - private static SimpleDateFormat simpleDateFormatCreateTime = new SimpleDateFormat("HH:mm:ss"); - - private TsafePassword tsafePassword; - - private boolean isjsf; - - /** - * Metodo que ejecuta el proceso - * - * @param pQueryRequest - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - this.isjsf = pQueryRequest.isJsf(); - TsafeUserDetail userdetail = this.getTsafeUserDetail(pQueryRequest); - - String terminal = (String) pQueryRequest.get("ip"); - String host = (String) pQueryRequest.get("host"); - String jsessionid = (String) pQueryRequest.get("jsessionid"); - String usercode = (String) pQueryRequest.get("login"); - if (userdetail == null) { - this.writeLog(pQueryRequest, usercode, terminal, jsessionid, host, "GENE-0011", "USUARIO NO EXISTE"); - throw new GeneralException("GENE-0011", "USUARIO NO EXISTE"); - } - if (userdetail.getUserstatuscatalog().compareTo("ACT") != 0) { - TgeneCatalogDetailKey tgeneCatalogDetailKey = new TgeneCatalogDetailKey(userdetail.getUserstatuscatalog(), - userdetail.getUserstatuscatalogcode()); - TgeneCatalogDetail tgeneCatalogDetail = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), tgeneCatalogDetailKey); - this.writeLog(pQueryRequest, userdetail, "GENE-0010", "EL USUARIO " + userdetail.getPk().getUsercode() + " SE ENCUENTRA " - + tgeneCatalogDetail.getDescription()); - throw new GeneralException("GENE-0010", "EL USUARIO {0} SE ENCUENTRA {1}", userdetail.getPk().getUsercode(), - tgeneCatalogDetail.getDescription()); - } - TsafeTerminal tsafeTerminal = null; - // userdetail.getTerminalcode() - if ((userdetail.getBranchfromterminal() != null) && (userdetail.getBranchfromterminal().compareTo("Y") == 0) - && (userdetail.getTerminalcode() != null)) { - TsafeTerminalKey tsafeTerminalKey = new TsafeTerminalKey(userdetail.getTerminalcode(), userdetail.getCompanycode()); - TsafeTerminal tsafeTerminalAux = TsafeTerminal.find(PersistenceHelper.getEntityManager(), tsafeTerminalKey); - if (tsafeTerminalAux == null) { - this.writeLog(pQueryRequest, userdetail, "CORE-0002", "TERMINAL " + terminal + " NO DEFINIDO EN TSAFETERMINAL"); - throw new GeneralException("CORE-0002", "TERMINAL {0} NO DEFINIDO EN TSAFETERMINAL", terminal); - } else { - tsafeTerminal = tsafeTerminalAux; - terminal = tsafeTerminalAux.getIpaddress(); - } - } - if (tsafeTerminal == null) { - tsafeTerminal = TsafeTerminal.find(PersistenceHelper.getEntityManager(), userdetail.getCompanycode(), terminal); - } - if ((userdetail.getBranchfromterminal() != null) && (userdetail.getBranchfromterminal().compareTo("Y") == 0)) { - if (tsafeTerminal == null) { - this.writeLog(pQueryRequest, userdetail, "CORE-0002", "TERMINAL " + terminal + " NO DEFINIDO EN TSAFETERMINAL"); - throw new GeneralException("CORE-0002", "TERMINAL {0} NO DEFINIDO EN TSAFETERMINAL", terminal); - } else if ((tsafeTerminal != null) && (userdetail.getTerminalcode() != null)) { - TsafeTerminalKey tsafeTerminalKey = new TsafeTerminalKey(userdetail.getTerminalcode(), userdetail.getCompanycode()); - TsafeTerminal tsafeTerminalaux = TsafeTerminal.find(PersistenceHelper.getEntityManager(), tsafeTerminalKey); - if ((tsafeTerminalaux != null) && (tsafeTerminalaux.getIpaddress() != null) - && (tsafeTerminalaux.getIpaddress().compareTo(terminal) != 0)) { - this.writeLog(pQueryRequest, userdetail, "CORE-0056", "LA IP " + terminal + " NO SE ENCUENTRA AUTORIZADA PARA EL USUARIO " - + userdetail.getPk().getUsercode()); - throw new GeneralException("CORE-0056", "LA IP {0} NO SE ENCUENTRA AUTORIZADA PARA EL USUARIO {1}", terminal, userdetail.getPk() - .getUsercode()); - } - } - if (userdetail.getBranchcode().compareTo(tsafeTerminal.getBranchcode()) != 0) { - throw new GeneralException("CORE-0064", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA SUCURSAL {1}"); - } - if (userdetail.getOfficecode().compareTo(tsafeTerminal.getOfficecode()) != 0) { - throw new GeneralException("CORE-0065", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA OFICINA {1}"); - } - if (userdetail.getAreacode().compareTo(tsafeTerminal.getAreacode()) != 0) { - throw new GeneralException("CORE-0066", "EL TERMINAL {0} ASOCIADO AL USUARIO SE ENCUENTRA EN OTRA REA {1}"); - } - } - if ((tsafeTerminal != null) && (tsafeTerminal.getSliptprinter() != null)) { - userdetail.addAddtionalInfo("spn", tsafeTerminal.getSliptprinter()); - } else { - userdetail.addAddtionalInfo("spn", null); - } - TsafePasswordKey key = new TsafePasswordKey(pQueryRequest.getCompany(), userdetail.getChannelcode()); - this.tsafePassword = TsafePassword.find(PersistenceHelper.getEntityManager(), key); - - this.completeLocation(userdetail); - this.completeAreaName(userdetail); - this.completeCompanyName(userdetail); - this.completeChannelName(userdetail); - this.completeBranchName(userdetail, pQueryRequest, terminal); - this.completeOfficeName(userdetail); - this.completeProfile(userdetail); - this.completeDates(userdetail); - if (!pQueryRequest.isJsf()) { - this.completeJavaScript(userdetail); - this.completeInternazionalization(userdetail); - } - //datos de usuario de la sbs - TcustPersonDetail tcp = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), userdetail.getPk().getPersoncode()); - userdetail.addAddtionalInfo("sbsemployee", tcp.getSbsemployee()); - userdetail.addAddtionalInfo("sbsusercode", tcp.getSbsusercode()); - // this.createSession(userdetail, pQueryRequest, terminal, jsessionid, host); - return pQueryRequest; - } - - private TsafeUserDetail getTsafeUserDetail(QueryRequest pQueryRequest) throws Exception { - TsafeUserDetail userdetail = null; - if (!pQueryRequest.isJsf()) { - Query qry = new Query(); - PersistenceHelper.getEntityManager().clear(); - qry.process(pQueryRequest); - userdetail = (TsafeUserDetail) pQueryRequest.getResponse().get("TSAFEUSERDETAIL"); - } else { - userdetail = TsafeUserDetail.find(PersistenceHelper.getEntityManager(), pQueryRequest.get("login").toString()); - pQueryRequest.getResponse().put("TSAFEUSERDETAIL", userdetail); - } - return userdetail; - } - - /** - * Metodo que agrega el nombre de la sucursal y la ip del cleinte en el detail - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @throws Exception - */ - private void completeBranchName(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal) throws Exception { - TgeneBranch branch = DataHelper.getInstance().getTgeneBranch(pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - pUserdetail.addAddtionalInfo("bn", branch.getDescription()); - pUserdetail.addAddtionalInfo("ip", terminal); - } - - /** - * Metodo que agrega la descripcin del area del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeAreaName(TsafeUserDetail pUserdetail) throws Exception { - TgeneAreaKey tgeneAreaKey = new TgeneAreaKey(pUserdetail.getCompanycode(), pUserdetail.getAreacode()); - TgeneArea tgeneArea = (TgeneArea) PersistenceHelper.getSession().get(TgeneArea.class, tgeneAreaKey); - pUserdetail.addAddtionalInfo("an", tgeneArea.getDescripction()); - } - - /** - * Metodo que agrega el nombre de la compania - * - * @param pUserdetail - * @throws Exception - */ - private void completeCompanyName(TsafeUserDetail pUserdetail) throws Exception { - TgeneCompany tgeneCompany = (TgeneCompany) PersistenceHelper.getSession().get(TgeneCompany.class, pUserdetail.getCompanycode()); - pUserdetail.addAddtionalInfo("cn", GeneralDescriptions.getPersonname(tgeneCompany.getPersoncode())); - } - - /** - * Metodo que agrega la descripcion del canal del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeChannelName(TsafeUserDetail pUserdetail) throws Exception { - TgeneChannels tgeneChannels = (TgeneChannels) PersistenceHelper.getSession().get(TgeneChannels.class, pUserdetail.getChannelcode()); - pUserdetail.addAddtionalInfo("chn", tgeneChannels.getDescription()); - } - - /** - * Metodo que agrega la oficina en el detail - * - * @param pUserdetail - * @throws Exception - */ - private void completeOfficeName(TsafeUserDetail pUserdetail) throws Exception { - TgeneOfficeKey tgeneOfficeKey = new TgeneOfficeKey(pUserdetail.getOfficecode(), pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - TgeneOffice office = TgeneOffice.find(PersistenceHelper.getEntityManager(), tgeneOfficeKey); - pUserdetail.addAddtionalInfo("on", office.getDescription()); - } - - /** - * Metodo que completa la fecha contable y de trabajao - * - * @param pUserdetail - * @throws Exception - */ - private void completeDates(TsafeUserDetail pUserdetail) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pUserdetail.getCompanycode(), 0); - String hour = UserLogonCas.simpleDateFormatCreateTime.format(FormatDates.getInstance().getDataBaseTimestamp()); - pUserdetail.addAddtionalInfo("wt", hour); - if (tgeneAccountingDateBranch == null) { - pUserdetail.addAddtionalInfo("ad", null); - pUserdetail.addAddtionalInfo("wd", null); - } else { - pUserdetail.addAddtionalInfo("ad", tgeneAccountingDateBranch.getAccountingdate()); - pUserdetail.addAddtionalInfo("wd", tgeneAccountingDateBranch.getWorkingdate()); - } - } - - /** - * Metodo para completar datos de ubicacion del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeLocation(TsafeUserDetail pUserdetail) throws Exception { - if ((pUserdetail.getBranchcode() != null) && (pUserdetail.getCompanycode() != null) && (pUserdetail.getOfficecode() != null)) { - TgeneOfficeKey tgeneOfficeKey = new TgeneOfficeKey(pUserdetail.getOfficecode(), pUserdetail.getBranchcode(), pUserdetail.getCompanycode()); - TgeneOffice tgeneOffice = TgeneOffice.find(PersistenceHelper.getEntityManager(), tgeneOfficeKey); - pUserdetail.addAddtionalInfo("address", tgeneOffice.getAddress()); - pUserdetail.addAddtionalInfo("citycode", tgeneOffice.getCitycode()); - if (tgeneOffice.getCountrycode() != null) { - - TgeneCountry tgeneCountry = TgeneCountry.find(PersistenceHelper.getEntityManager(), tgeneOffice.getCountrycode()); - pUserdetail.addAddtionalInfo("countrycode", tgeneCountry.getPk()); - pUserdetail.addAddtionalInfo("countryname", tgeneCountry.getDescription()); - } else { - pUserdetail.addAddtionalInfo("countrycode", null); - pUserdetail.addAddtionalInfo("countryname", null); - } - if ((tgeneOffice.getCountrycode() != null) && (tgeneOffice.getProvincecode() != null)) { - TgeneProvinceKey tgeneProvinceKey = new TgeneProvinceKey(tgeneOffice.getCountrycode(), tgeneOffice.getProvincecode()); - TgeneProvince tgeneProvince = TgeneProvince.find(PersistenceHelper.getEntityManager(), tgeneProvinceKey); - pUserdetail.addAddtionalInfo("provincecode", tgeneProvince.getPk().getProvincecode()); - pUserdetail.addAddtionalInfo("provincename", tgeneProvince.getDescription()); - } else { - pUserdetail.addAddtionalInfo("provincecode", null); - pUserdetail.addAddtionalInfo("provincename", null); - } - if ((tgeneOffice.getCountrycode() != null) && (tgeneOffice.getProvincecode() != null) && (tgeneOffice.getCantoncode() != null) - && (tgeneOffice.getCitycode() != null)) { - TgeneCityKey tgeneCityKey = new TgeneCityKey(tgeneOffice.getCountrycode(), tgeneOffice.getProvincecode(), - tgeneOffice.getCantoncode(), tgeneOffice.getCitycode()); - TgeneCity tgeneCity = TgeneCity.find(PersistenceHelper.getEntityManager(), tgeneCityKey); - pUserdetail.addAddtionalInfo("cityname", tgeneCity.getDescription()); - } else { - pUserdetail.addAddtionalInfo("cityname", null); - } - pUserdetail.addAddtionalInfo("username", GeneralDescriptions.getUsername(pUserdetail.getPk().getUsercode())); - } else { - pUserdetail.addAddtionalInfo("address", null); - pUserdetail.addAddtionalInfo("citycode", null); - pUserdetail.addAddtionalInfo("cityname", null); - pUserdetail.addAddtionalInfo("countrycode", null); - pUserdetail.addAddtionalInfo("countryname", null); - pUserdetail.addAddtionalInfo("provincecode", null); - pUserdetail.addAddtionalInfo("provincename", null); - pUserdetail.addAddtionalInfo("username", null); - } - } - - /** - * Metodo que completa el perfile del usuario - * - * @param pUserdetail - * @throws Exception - */ - private void completeProfile(TsafeUserDetail pUserdetail) throws Exception { - List profile = DataHelper.getInstance().getTsafeUserProfile(pUserdetail.getPk().getUsercode()); - if (this.isjsf) { - pUserdetail.addAddtionalInfo("lprofile", profile); - for (TsafeUserProfile tsafeUserProfile : profile) { - TsafeProfile tsafeProfile = TsafeProfile.find(PersistenceHelper.getEntityManager(), tsafeUserProfile.getPk().getProfilecode()); - tsafeUserProfile.addAddtionalInfo("nprofile", tsafeProfile.getDescription()); - } - return; - } - String profileData = ""; - String profileDataDesc = ""; - - for (int i = 0; i < profile.size(); i++) { - if (i > 0) { - profileData += "."; - profileDataDesc += "."; - } - profileData += profile.get(i).getPk().getProfilecode(); - TsafeProfile tsafeProfile = TsafeProfile.find(PersistenceHelper.getEntityManager(), profile.get(i).getPk().getProfilecode()); - profileDataDesc += tsafeProfile.getDescription(); - } - pUserdetail.addAddtionalInfo("profile", profileData); - pUserdetail.addAddtionalInfo("profiledesc", profileDataDesc); - } - - /** - * Metodo que verifica si el password ingresado es correcto - * - * @param pUserdetail - * @param pQueryRequest - * @throws Exception - */ - private boolean validatePassword(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - String passwd = (String) pQueryRequest.get("itemValue"); - // Valida que el password no este expirado - this.validateExpiration(pUserdetail, pQueryRequest); - if (passwd.compareTo(pUserdetail.getPassword()) != 0) { - boolean maxintentos = this.increaseTryNumber(pUserdetail, pQueryRequest, terminal, jsessionid, host); - if (maxintentos) { - return false; - } - this.writeLog(pQueryRequest, pUserdetail, "GENE-0003", "USUARIO O PASSWORD INCORRECTO"); - pQueryRequest.getResponse().setResponseCode("GENE-0003"); - pQueryRequest.getResponse().setResponseUserMessage("USUARIO O PASSWORD INCORRECTO"); - return false; - } - return true; - } - - /** - * Metodo que verifica si el password ingresado es correcto - * - * @param pUserdetail - * @param pQueryRequest - * @throws Exception - */ - private void validateExpiration(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest) throws Exception { - // Valida que el password no este expirado - if ((this.tsafePassword.getValiditydays() != null) && (this.tsafePassword.getValiditydays() > 0)) { - APPDates appd = new APPDates(pUserdetail.getDatefrom().toString().substring(0, 10), CalculationBase.B365365); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - APPDates appd1 = new APPDates(db.getWorkingdate(), CalculationBase.B365365); - if (appd1.compareTo(appd) >= 0) { - Integer days = appd1.substract(appd); - if (days.compareTo(this.tsafePassword.getValiditydays()) > 0) { - throw new GeneralException("GENE-0023", "CONTRASEA EXPIRADA"); - } - days = days + this.tsafePassword.getMessagedays(); - if (days.compareTo(this.tsafePassword.getValiditydays()) >= 0) { - days = days - this.tsafePassword.getMessagedays(); - days = this.tsafePassword.getValiditydays() - days; - pUserdetail.addAddtionalInfo("dpwd", days); - } - } - } - } - - /** - * Metodo que completa la internacionalizacion dentro de la aplicacion - * - * @param pUserdetail - * @throws Exception - */ - private void completeInternazionalization(TsafeUserDetail pUserdetail) throws Exception { - List lTgeneLabel = TgeneLabel.getTgeneLabel(PersistenceHelper.getEntityManager(), pUserdetail.getLanguagecode(), - pUserdetail.getChannelcode()); - Map map = new HashMap(); - for (int i = 0; i < lTgeneLabel.size(); i++) { - TgeneLabel tgeneLabel = lTgeneLabel.get(i); - map.put(tgeneLabel.getPk().getLabel(), tgeneLabel.getDescription()); - } - pUserdetail.put("i18n", map); - } - - /** - * Metodo que completa los javascript - * - * @param pUserdetail - * @throws Exception - */ - private void completeJavaScript(TsafeUserDetail pUserdetail) throws Exception { - List tsafeJavaScript = TsafeJavaScript.find(PersistenceHelper.getEntityManager(), pUserdetail.getCompanycode(), - pUserdetail.getChannelcode()); - pUserdetail.put("js", tsafeJavaScript); - } - - /** - * Metodo que crea la sesion cuando no existe una - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @param jsessionid - * @param host - * @throws Exception - */ - private void createSession(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(pUserdetail.getPk().getUsercode(), FormatDates.getDefaultExpiryTimestamp()); - TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); - PersistenceHelper.detatch(tsafeUserSession); - if (tsafeUserSession == null) { - tsafeUserSession = new TsafeUserSession(); - tsafeUserSession.setDatefrom(FormatDates.getInstance().getDataBaseTimestamp()); - tsafeUserSession.setPk(tsafeUserSessionKey); - tsafeUserSession.setTrynumber(1); - tsafeUserSession.setSessionid(jsessionid); - tsafeUserSession.setTerminalcode(terminal); - tsafeUserSession.setWebserverip(host); - this.saveObject(tsafeUserSession); - } else { - if (tsafeUserSession.getTerminalcode().compareTo(terminal) == 0) { - tsafeUserSession.setDatefrom(FormatDates.getInstance().getDataBaseTimestamp()); - this.saveObject(tsafeUserSession); - } else { - this.writeLog(pQueryRequest, pUserdetail, "GENE-0009", "EL USUARIO " + pUserdetail.getPk().getUsercode() - + " SE ENCUENTRA TRABAJANDO EN EL TERMINAL " + tsafeUserSession.getTerminalcode()); - throw new GeneralException("GENE-0009", "EL USUARIO {0} SE ENCUENTRA TRABAJANDO EN EL TERMINAL {1}", pUserdetail.getPk() - .getUsercode(), tsafeUserSession.getTerminalcode()); - } - } - } - - /** - * Metodo que incrementa el numero de intentos - * - * @param pUserdetail - * @param pQueryRequest - * @param terminal - * @param jsessionid - * @param host - * @return - * @throws Exception - */ - private boolean increaseTryNumber(TsafeUserDetail pUserdetail, QueryRequest pQueryRequest, String terminal, String jsessionid, String host) - throws Exception { - TsafeUserSessionKey tsafeUserSessionKey = new TsafeUserSessionKey(pUserdetail.getPk().getUsercode(), FormatDates.getDefaultExpiryTimestamp()); - TsafeUserSession tsafeUserSession = TsafeUserSession.find(PersistenceHelper.getEntityManager(), tsafeUserSessionKey); - if (tsafeUserSession != null) { - TsafeUserSession tsafeUserSessionAux = (TsafeUserSession) tsafeUserSession.cloneMe(); - tsafeUserSessionAux.getPk().setDateto(FormatDates.getInstance().getDataBaseTimestamp()); - this.saveObject(tsafeUserSessionAux); - tsafeUserSession.setTrynumber(tsafeUserSession.getTrynumber() + 1); - this.saveObject(tsafeUserSession); - - if ((this.tsafePassword.getIntentnumber() != null) && (tsafeUserSession.getTrynumber() >= this.tsafePassword.getIntentnumber())) { - pUserdetail.setUserstatuscatalog("BLQ"); - this.saveObject(pUserdetail); - pQueryRequest.getResponse().setResponseCode("GENE-0007"); - pQueryRequest.getResponse().setResponseUserMessage( - MessageFormat.format("EL USUARIO {0} HA SIDO BLOQUEADO POR INGRESO DE CLAVE ERRONEA", pUserdetail.getPk().getUsercode())); - return true; - } - } else { - this.createSession(pUserdetail, pQueryRequest, terminal, jsessionid, host); - } - return false; - } - - /** - * Mtodo que guarda los datos en la tabla - * - * @param object - * @throws Exception - */ - private void saveObject(Object object) throws Exception { - PersistenceHelper.getEntityManager().merge(object); - } - - /** - * - * @param pQueryRequest - * @param usercode - * @param terminal - * @param jsessionid - * @param host - * @param errorCode - * @param messageError - * @throws Exception - */ - private void writeLog(QueryRequest pQueryRequest, String usercode, String terminal, String jsessionid, String host, String errorCode, - String messageError) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - TsafeUserSessionLogKey tsafeUserSessionLogKey = new TsafeUserSessionLogKey(tgeneAccountingDateBranch.getAccountingdate(), - this.getSequenceLoginLog(), pQueryRequest.getCompany()); - TsafeUserSessionLog tsafeUserSessionLog = new TsafeUserSessionLog(tsafeUserSessionLogKey, usercode, terminal, jsessionid, host, FormatDates - .getInstance().getDataBaseTimestamp(PersistenceHelper.getEntityManager()), errorCode, messageError); - NestedSave nestedSave = new NestedSave(pQueryRequest.getCompany(), tsafeUserSessionLog); - nestedSave.start(); - } - - /** - * - * @param pQueryRequest - * @param tsafeUserDetail - * @param errorCode - * @param messageError - * @throws Exception - */ - private void writeLog(QueryRequest pQueryRequest, TsafeUserDetail tsafeUserDetail, String errorCode, String messageError) throws Exception { - TgeneAccountingDateBranch tgeneAccountingDateBranch = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - String terminal = (String) pQueryRequest.get("ip"); - String host = (String) pQueryRequest.get("host"); - String jsessionid = (String) pQueryRequest.get("jsessionid"); - TsafeUserSessionLogKey tsafeUserSessionLogKey = new TsafeUserSessionLogKey(tgeneAccountingDateBranch.getAccountingdate(), - this.getSequenceLoginLog(), pQueryRequest.getCompany()); - TsafeUserSessionLog tsafeUserSessionLog = new TsafeUserSessionLog(tsafeUserSessionLogKey, tsafeUserDetail.getPk().getUsercode(), terminal, - jsessionid, host, FormatDates.getInstance().getDataBaseTimestamp(PersistenceHelper.getEntityManager()), errorCode, messageError); - tsafeUserSessionLog.setBranchcode(tsafeUserDetail.getBranchcode()); - tsafeUserSessionLog.setOfficecode(tsafeUserDetail.getOfficecode()); - NestedSave nestedSave = new NestedSave(pQueryRequest.getCompany(), tsafeUserSessionLog); - nestedSave.start(); - } - - /** - * Metodo que entrega la secuencia para gurdar los logs - * - * @return - * @throws Exception - */ - private Integer getSequenceLoginLog() throws Exception { - Sequence sequence = new Sequence(); - Integer loginsequnce = Integer.valueOf(sequence.getNextValue("LOGINLOG").toString()); - SaveData.getMap().put("LOGINLOG", loginsequnce.toString()); - return loginsequnce; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/entries b/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/entries deleted file mode 100644 index 1cd9eca..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/security/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CompleteAudit.java -file - - - - -2022-07-28T03:40:43.476806Z -c1c903124111e4080d2dfae339243fbb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3951 - -code -dir - -QueryAudit.java -file - - - - -2022-07-28T03:40:43.476806Z -42ff18cf31ad70fc50ad16b81b81907c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7431 - diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/CompleteAudit.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/CompleteAudit.java.svn-base deleted file mode 100644 index 5be8beb..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/CompleteAudit.java.svn-base +++ /dev/null @@ -1,92 +0,0 @@ -package com.fp.general.security.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pgeneral.acco.TgeneAccount; -import com.fp.persistence.pgeneral.acco.TgeneAccountKey; -import com.fp.persistence.pgeneral.gene.TgeneSolicitude; -import com.fp.persistence.pgeneral.gene.TgeneSolicitudeKey; -import com.fp.persistence.pgeneral.safe.TsafeAudit; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import java.util.List; - -/** - * Clase que se encarga de completar datos como el nombre de cliente o nobre de - * cuanta o prestamo - * - * @author scastillo - */ -public class CompleteAudit extends QueryRule { - - private static final String name = "name"; - - /** - * Metodo que se encarga de completar datos como el nombre de cliente nombre - * de prestamo o cuenta - * - * @param qr - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Response response = qr.getResponse(); - Query query = new Query(); - query.process(qr); - List lTsafeAudit = (List) response.get("TSAFEAUDIT"); - if (lTsafeAudit != null) { - for (Object obj : lTsafeAudit) { - TsafeAudit tsafeAudit = (TsafeAudit) obj; - if (tsafeAudit.getPersoncode() != null) { - TcustPersonDetailKey tcustPersonDetailKey = - new TcustPersonDetailKey( - tsafeAudit.getPersoncode(), - FormatDates.getDefaultExpiryTimestamp()); - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find( - PersistenceHelper.getEntityManager(), - tcustPersonDetailKey); - if (tcustPersonDetail != null) { - tsafeAudit.addAddtionalInfo(name, - tcustPersonDetail.getName()); - } else { - tsafeAudit.addAddtionalInfo(name, null); - } - } else if (tsafeAudit.getSolicitudenumber() != null) { - TgeneSolicitudeKey tgeneSolicitudeKey = - new TgeneSolicitudeKey(); - TgeneSolicitude tgeneSolicitude = TgeneSolicitude.find( - PersistenceHelper.getEntityManager(), - tgeneSolicitudeKey); - if (tgeneSolicitude != null) { - tsafeAudit.addAddtionalInfo(name, - tgeneSolicitude.getAccountname()); - } else { - tsafeAudit.addAddtionalInfo(name, null); - } - } else if (tsafeAudit.getAccount() != null) { - TgeneAccountKey tgeneAccountKey = new TgeneAccountKey( - tsafeAudit.getAccount(), qr.getCompany(), - FormatDates.getDefaultExpiryTimestamp()); - TgeneAccount tgeneAccount = TgeneAccount.find( - PersistenceHelper.getEntityManager(), - tgeneAccountKey); - if (tgeneAccount != null) { - tsafeAudit.addAddtionalInfo(name, - tgeneAccount.getAccountname()); - } else { - tsafeAudit.addAddtionalInfo(name, null); - } - } else { - tsafeAudit.addAddtionalInfo(name, null); - } - } - } - return qr; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/QueryAudit.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/QueryAudit.java.svn-base deleted file mode 100644 index 6a2d018..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/.svn/text-base/QueryAudit.java.svn-base +++ /dev/null @@ -1,165 +0,0 @@ -package com.fp.general.security.rules.query; - -import java.sql.Date; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDelKey; - -/** - * Clase que consulta los datos de la tabla TSAFEAUDITINSDEL - * - * @author BPTWPA - * - */ -public class QueryAudit extends QueryRule { - - private static final long serialVersionUID = 1L; - //SQL nativo para realizar la consulta - private static final String SQL_AUDIT = "select t.changedate, t.tablename, t.realdate, t.terminalcode, " - + "t.usercode, t.isinsert, t.account, t.solicitudenumber, t.personcode, " - + "(select p.name from tcustpersondetail p where p.personcode=t.personcode " - + "and p.dateto = :datetoperson) as name, " - + "(select o.description from tgeneoffice o where o.officecode=t.officecode " - + "and o.branchcode=t.branchcode and o.companycode=t.companycode) as officedesc, " - + "(select b.description from tgenebranch b where b.branchcode=t.branchcode and " - + "b.companycode=t.companycode) as branchdesc, " - + "t.transactionmodule, t.transactioncode, t.transactionversion, " - + "(select r.name from tgenetransaction r where r.transactionmodule=t.transactionmodule " - + "and r.transactioncode=t.transactioncode and r.transactionversion=t.transactionversion) as transactiondesc " - + ", t.partitiondb " - + "from TSAFEAUDITINSDEL t " - + "where t.changedate=t.changedate "; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - StringBuilder sql = new StringBuilder(); - List listResp = new ArrayList(); - QueryBean qb = (QueryBean) pQueryRequest.get("TSAFEAUDITINSDEL"); - List lcriteria = qb.getCriteria(); - sql.append(QueryAudit.SQL_AUDIT); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(QueryAudit.addSimpleCriteria(sql, lcriteria, qb)); - QueryAudit.setSimpleParameters(qry, qb.getCriteria()); - qry.setParameter("datetoperson", FormatDates.getDefaultExpiryTimestamp()); - qry.setFirstResult((qb.getPage() - 1) * qb.getPageSize()); - qry.setMaxResults(qb.getPageSize()); - @SuppressWarnings("unchecked") - List list = qry.getResultList(); - if (!list.isEmpty()) { - for (Object oj : list) { - Map mapResp = new HashMap(); - Object[] obj = (Object[]) oj; - mapResp.put("pk_changedate", obj[0]); - mapResp.put("pk_tablename", obj[1]); - mapResp.put("pk_realdate", obj[2]); - mapResp.put("terminalcode", obj[3]); - mapResp.put("usercode", obj[4]); - mapResp.put("isinsert", ((String.valueOf(obj[5]).compareTo("Y") == 0) ? "INSERT" : "DELETE")); - mapResp.put("account", obj[6]); - mapResp.put("solicitudenumber", obj[7]); - mapResp.put("personcode", obj[8]); - mapResp.put("name", obj[9]); - mapResp.put("officedesc", obj[10]); - mapResp.put("branchdesc", obj[11]); - mapResp.put("transactiondesc", "(" + String.valueOf(obj[12]) + "-" + String.valueOf(obj[13]) + ") " + String.valueOf(obj[15])); - mapResp.put("recvalue", this.recValueAudit(obj[0], obj[1], obj[16], obj[2])); - listResp.add(mapResp); - } - } - pQueryRequest.getResponse().put("TSAFEAUDITINSDEL", listResp); - return pQueryRequest; - } - - /** - * Metodo que agrega los parametros de una consulta sql - * - * @param sql Creado - * @param lcriteria Criterios de consulta - * @return String del jpql - */ - private static String addSimpleCriteria(StringBuilder sql, List lcriteria, QueryBean qb) { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - if (obj.getProperty().compareTo("enddate") == 0) { - sql.append(" and ").append(obj.getOperation()).append(":").append(obj.getProperty()); - } else { - sql.append(" and ").append(obj.getProperty()).append(" ").append(obj.getOperation()).append(" :").append(obj.getProperty().replace(".", "")); - } - } - } - boolean first = true; - for (QueryCriteria order : qb.getOrder(true)) { - if (first) { - sql.append(" ORDER BY "); - } else { - sql.append(" asc, "); - } - sql.append(order.getProperty()); - first = false; - } - return String.valueOf(sql); - } - - /** - * Metodo que setea los parametros para la consulta - * - * @param qry Query - * @param lcriteria Criterios de consluta - * @throws Exception - */ - private static void setSimpleParameters(Query qry, List lcriteria) throws Exception { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - if (obj.getProperty().replace(".", "").compareTo("tpkchangedate") == 0 || obj.getProperty().compareTo("enddate") == 0) { - APPDates date = new APPDates(obj.getValue().toString()); - qry.setParameter(obj.getProperty().replace(".", ""), date.getDate()); - } else if ((obj.getProperty().replace(".", "").compareTo("ttransactioncode") == 0) || (obj.getProperty().replace(".", "").compareTo("tpersoncode") == 0)) { - qry.setParameter(obj.getProperty().replace(".", ""), Integer.valueOf(obj.getValue().toString())); - } else { - qry.setParameter(obj.getProperty().replace(".", ""), obj.getValue()); - } - } - } - } - - /** - * Metodo que consulta el atributo recvalue del objeto TsafeAuditInsDel - * - * @param changedate - * @param tablename - * @param partitiondb - * @param realdate - * @return recvalue - * @throws Exception - */ - private String recValueAudit(Object changedate, Object tablename, Object partitiondb, Object realdate) throws Exception { - String recvalue = ""; - Date change = (Date) changedate; - Timestamp real = (Timestamp) realdate; - String table = (String) tablename; - String partition = (String) partitiondb; - TsafeAuditInsDel tsafeAuditInsDel = TsafeAuditInsDel.find(PersistenceHelper.getEntityManager(), - new TsafeAuditInsDelKey(change, table, partition, real)); - if (tsafeAuditInsDel != null) { - recvalue = tsafeAuditInsDel.getRecvalue().substring(0, 110); - } else { - recvalue = ""; - } - return recvalue; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/entries b/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/entries deleted file mode 100644 index 95a7436..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/security/rules/query/code -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SearchUser.java -file - - - - -2022-07-28T03:40:43.429806Z -8aa673cc2125dfeb4a28e1c3e51c2bca -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1964 - -TransactionSearch.java -file - - - - -2022-07-28T03:40:43.429806Z -03cc001dcfb0e2fa7b156c0ce8045a4f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3683 - diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/SearchUser.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/SearchUser.java.svn-base deleted file mode 100644 index 437110b..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/SearchUser.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.general.security.rules.query.code; - -import java.util.List; - -import com.fp.bpm.query.Query; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -/** - * - * @author scastillo - */ -public class SearchUser extends QueryRule { - - /** - * Metodo que ejecuta la consulta dado el nombre del cliente - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - if (pQueryRequest.isJsf()) { - this.searchjsf(pQueryRequest); - return pQueryRequest; - } - QueryBean queryBean = (QueryBean) pQueryRequest.get("TSAFEUSERDETAILLOV"); - List criterios = queryBean.getCriteria(); - for (int i = 0; i < criterios.size(); i++) { - QueryCriteria queryCriteria = criterios.get(i); - String propiedad = queryCriteria.getProperty(); - if ((propiedad.compareTo("pk.personcode") == 0) && (queryCriteria.getValue() != null)) { - String operador = "="; - queryCriteria.setOperation("in"); - String valor = (String) queryCriteria.getValue(); - if (valor.indexOf("%") >= 0) { - operador = "like"; - } - queryCriteria - .setValue("select s.pk.personcode from com.fp.persistence.pcustomer.gene.TcustPersonDetail s where s.pk.dateto=t.pk.dateto and s.name " - + operador + " '" + valor + "'"); - } - } - Query query = new Query(); - query.process(pQueryRequest); - return pQueryRequest; - } - - private void searchjsf(QueryRequest pQueryRequest) throws Exception { - DtoQuery dto = pQueryRequest.getQueryTables().get("USERLOV"); - - } -} diff --git a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/TransactionSearch.java.svn-base b/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/TransactionSearch.java.svn-base deleted file mode 100644 index 4510038..0000000 --- a/base/business/general/src/main/java/com/fp/general/security/rules/query/code/.svn/text-base/TransactionSearch.java.svn-base +++ /dev/null @@ -1,86 +0,0 @@ -package com.fp.general.security.rules.query.code; - -import com.fp.common.helper.Constant; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionKey; -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; -import org.hibernate.SQLQuery; - -/** - * Clase que se encarga de devolver los datos de transacció - * - * @author scastillo - */ -public class TransactionSearch extends QueryRule { - - private final String lbl = "transaction"; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - String label = (String) pQueryRequest.get("label"); - TgeneTransactionKey tgeneTransactionKey = new TgeneTransactionKey(pQueryRequest.getTransactionModule(), - pQueryRequest.getTransactionCode(), pQueryRequest.getTransactionVersion()); - TgeneTransaction tgeneTransaction = TgeneTransaction.find(PersistenceHelper.getEntityManager(), tgeneTransactionKey); - Map m = null; - if (tgeneTransaction != null) { - m = new HashMap(); - m.put("t", tgeneTransaction.getName()); - m.put("p", tgeneTransaction.getPage()); - m.put("a", tgeneTransaction.getAutoquery()); - m.put("m", tgeneTransaction.getPk().getTransactionmodule()); - m.put("tr", tgeneTransaction.getPk().getTransactioncode()); - m.put("v", tgeneTransaction.getPk().getTransactionversion()); - m.put("f", tgeneTransaction.getSignature()); - m.put("qa", tgeneTransaction.getQueryagain()); - m.put("sg", this.existGlosary(pQueryRequest.getTransactionModule(), pQueryRequest.getTransactionCode(), - pQueryRequest.getTransactionVersion(), pQueryRequest.getLanguage())); - } - pQueryRequest.getResponse().put(lbl, m); - return pQueryRequest; - } - /** - * Sentencia para saber si existe un glosaio disponible para la transaccion - */ - private static final String HQL = "SELECT count(*) FROM TGENETRANSACTIONGLOSARY" - + " where TRANSACTIONMODULE = :transactionmodule" - + " and TRANSACTIONCODE = :transactioncode" - + " and TRANSACTIONVERSION = :transactionversion" - + " and LANGUAGECODE= :languagecode"; - - /** - * Metodo que devuelve Y o N si existe glosario en una transaccion - * - * @param module Modulo de la transaccion - * @param transaction Codigo de transaccion - * @param version Version de la transaccion - * @param languagecode Lenguaje a utilizar - * @return - * @throws Exception - */ - private String existGlosary(String module, Integer transaction, Integer version, String languagecode) throws Exception { - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(HQL); - qry.setString("transactionmodule", module); - qry.setInteger("transactioncode", transaction); - qry.setInteger("transactionversion", version); - qry.setString("languagecode", languagecode); - Object result = qry.uniqueResult(); - String returnValue = "N"; - if (result instanceof Integer) { - Integer numero = (Integer) result; - if (numero > 0) { - returnValue = "Y"; - } - } else if (result instanceof BigDecimal) { - Integer numero = ((BigDecimal) result).intValue(); - if (numero > 0) { - returnValue = "Y"; - } - } - return returnValue; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/templates/.svn/entries b/base/business/general/src/main/java/com/fp/general/templates/.svn/entries deleted file mode 100644 index d155239..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/templates -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -save -dir - diff --git a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/entries b/base/business/general/src/main/java/com/fp/general/templates/query/.svn/entries deleted file mode 100644 index 73fe1a3..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/templates/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -QueryTemplatesDesc.java -file - - - - -2022-07-28T03:40:44.348810Z -fb6d9dc26e666e86810ede8e492ac72e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3845 - -QueryTemplates.java -file - - - - -2022-07-28T03:40:44.348810Z -afb08e4f1e97b3d1723b77fb8e8050ad -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1143 - diff --git a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplates.java.svn-base b/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplates.java.svn-base deleted file mode 100644 index fc5cb87..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplates.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.templates.query; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; - -/** - * - * @author BPTWPA - */ -public class QueryTemplates extends QueryRule{ - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Integer code = Integer.valueOf(pQueryRequest.getString("code")); - String languaje=pQueryRequest.getString("languaje"); - TgeneMessageTemplatesDesc templates = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), - (new TgeneMessageTemplatesDescKey(code, languaje))); - pQueryRequest.getResponse().put("description", (templates==null)?"":templates.getDescription()); - pQueryRequest.getResponse().put("template", (templates==null)?"":templates.getTemplate()); - return pQueryRequest; - } -} diff --git a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplatesDesc.java.svn-base b/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplatesDesc.java.svn-base deleted file mode 100644 index c069ecb..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/query/.svn/text-base/QueryTemplatesDesc.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ -package com.fp.general.templates.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - *Clase para presentar las plantillas ingresadas - * @author BPTWPA - */ -public class QueryTemplatesDesc extends QueryRule { - - private static final long serialVersionUID = 1L; - private static final String JPQL_TEMPLATES = "select d.pk.code, t.description, d.pk.languagecode, d.description " - + "from TgeneMessageTemplatesDesc d, TgeneMessageTemplates t " - + "where d.pk.code=t.pk "; - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - StringBuilder jpql = new StringBuilder(); - List> listResp = new ArrayList>(); - Response response = pQueryRequest.getResponse(); - QueryBean qb = (QueryBean) pQueryRequest.get("TGENEMESSAGETEMPLATEDESC"); - List lcriteria = qb.getCriteria(); - EntityManager em = PersistenceHelper.getEntityManager(); - jpql.append(QueryTemplatesDesc.JPQL_TEMPLATES); - Query qry = em.createQuery(QueryTemplatesDesc.addSimpleCriteriaJPQL(jpql, lcriteria, qb)); - QueryTemplatesDesc.setSimpleParametersJPQL(qry, lcriteria); - qry.setFirstResult((qb.getPage() - 1) * qb.getPageSize()); - qry.setMaxResults(qb.getPageSize()); - @SuppressWarnings("unchecked") - List list = qry.getResultList(); - if (!list.isEmpty()) { - for (Object oj : list) { - Map mapResp = new HashMap(); - Object[] obj = (Object[]) oj; - mapResp.put("pk_code", obj[0]); - mapResp.put("descmessage", obj[1]); - mapResp.put("pk_languagecode", obj[2]); - mapResp.put("description", obj[3]); - mapResp.put("template", null); - listResp.add(mapResp); - } - } - response.put("TGENEMESSAGETEMPLATEDESC", listResp); - return pQueryRequest; - } - - /** - * Metodo que agrega los parametros de una consulta jpql - * @param jpql Creado - * @param lcriteria Criterios de consulta - * @return String del jpql - */ - public static String addSimpleCriteriaJPQL(StringBuilder jpql, List lcriteria, QueryBean qb) { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - jpql.append(" and ").append(obj.getProperty()).append(" ").append(obj.getOperation()).append(" :").append(obj.getProperty().replace(".", "")); - } - } - boolean first = true; - for (QueryCriteria order : qb.getOrder(true)) { - if (first) { - jpql.append(" ORDER BY "); - } else { - jpql.append(" asc, "); - } - jpql.append(order.getProperty()); - first = false; - } - return String.valueOf(jpql); - } - - /** - * Metodo que setea los parametros para la consulta - * @param qry Query - * @param lcriteria Criterios de consluta - */ - public static void setSimpleParametersJPQL(Query qry, List lcriteria) { - for (QueryCriteria obj : lcriteria) { - if (obj.getValue() != null) { - qry.setParameter(obj.getProperty().replace(".", ""), ((obj.getProperty().replace(".", "").compareTo("dpkcode") == 0) ? Integer.valueOf(obj.getValue().toString()) : obj.getValue())); - } - } - } -} \ No newline at end of file diff --git a/base/business/general/src/main/java/com/fp/general/templates/save/.svn/entries b/base/business/general/src/main/java/com/fp/general/templates/save/.svn/entries deleted file mode 100644 index bd2b80b..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/save/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/java/com/fp/general/templates/save -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SaveTemplatesDesc.java -file - - - - -2022-07-28T03:40:44.395810Z -6bac5c7566a53c4c3c9f18cc6abf4f60 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2854 - diff --git a/base/business/general/src/main/java/com/fp/general/templates/save/.svn/text-base/SaveTemplatesDesc.java.svn-base b/base/business/general/src/main/java/com/fp/general/templates/save/.svn/text-base/SaveTemplatesDesc.java.svn-base deleted file mode 100644 index 2e84788..0000000 --- a/base/business/general/src/main/java/com/fp/general/templates/save/.svn/text-base/SaveTemplatesDesc.java.svn-base +++ /dev/null @@ -1,70 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.general.templates.save; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; -import java.util.List; - -/** - * - * @author BPTWPA - */ -public class SaveTemplatesDesc extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if(pSaveRequest.isJsf()){ - return pSaveRequest; - } - Integer code = pSaveRequest.getInteger("code"); - String languaje =pSaveRequest.getString("languaje"); - String description=pSaveRequest.getString("description"); - String template=pSaveRequest.getString("template"); - String remove=pSaveRequest.getString("remove"); - - TgeneMessageTemplatesDesc templatesDesc=TgeneMessageTemplatesDesc.find( - PersistenceHelper.getEntityManager(), new TgeneMessageTemplatesDescKey(code, languaje)); - if(remove!=null && remove.compareTo("remove")==0){ - PersistenceHelper.delete(templatesDesc); - }else{ - if(templatesDesc!=null){ - templatesDesc.setDescription(description); - templatesDesc.setTemplate(this.replaceCharacter(template)); - PersistenceHelper.update(templatesDesc); - }else{ - TgeneMessageTemplatesDesc templates= new TgeneMessageTemplatesDesc(); - templates.setPk(new TgeneMessageTemplatesDescKey(code, languaje)); - templates.setDescription(description); - templates.setTemplate(template); - PersistenceHelper.save(templates); - } - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - private String replaceCharacter(String content){ - content = content.replaceAll("","Ñ"); - content = content.replaceAll("","ñ"); - content = content.replaceAll("","Á"); - content = content.replaceAll("","É"); - content = content.replaceAll("","Í"); - content = content.replaceAll("","Ó"); - content = content.replaceAll("","Ú"); - content = content.replaceAll("","á"); - content = content.replaceAll("","é"); - content = content.replaceAll("","í"); - content = content.replaceAll("","ó"); - content = content.replaceAll("","ú"); - return content; - } -} diff --git a/base/business/general/src/main/resources/.svn/entries b/base/business/general/src/main/resources/.svn/entries deleted file mode 100644 index 08c0516..0000000 --- a/base/business/general/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -generalmessages_es.properties -file - - - - -2022-07-28T03:40:44.603811Z -84f967238e8de816c901cc137e3a0356 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2881 - diff --git a/base/business/general/src/main/resources/.svn/text-base/generalmessages_es.properties.svn-base b/base/business/general/src/main/resources/.svn/text-base/generalmessages_es.properties.svn-base deleted file mode 100644 index b4c6a25..0000000 --- a/base/business/general/src/main/resources/.svn/text-base/generalmessages_es.properties.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -GENE-0001=SUCURSAL NO DEFINIDA EN TGENEBRANCH: BRANCH:{0} COMPANY:{1} -GENE-0002=OFICINA NO DEFINIDA EN TGENEOFFICE: OFFICE:{0} BRANCH:{1} COMPANY:{2} -GENE-0003=USUARIO O PASSWORD INCORRECTO -GENE-0004=NIVEL DE MENU NO DEFINIDOS EN TEGNEMENULEVEL -GENE-0005=NIVEL DE MENU NO DEFINIDOS EN TEGNEMENUSUBLEVEL -GENE-0006=SEMILLA DE LA SECUENCIA NO DEFINA EN TGENESEQUENCES, CODIGO: {0} -GENE-0007=EL USUARIO {0} HA SIDO BLOQUEADO POR INGRESO DE CLAVE ERRONEA -GENE-0008=EL NUMERO DE INTENTOS HA SOBREPASADO EL PERMITIDO -GENE-0009=EL USUARIO {0} SE ENCUENTRA TRABAJANDO EN EL TERMINAL {1} -GENE-0010=EL USUARIO {0} SE ENCUENTRA {1} -GENE-0011=EL USUARIO NO EXISTE -GENE-0012=REPORTE NO DEFINIDO PARA EL MODULO: {0}, TRANSACCION: {1}, VERSION {2} -GENE-0013=PATH PARA REPORTES NO DEFINIDO EN LA COMPANIA {0}, PARAMETRO {1} -GENE-0014=PATH PARA SUBREPORTES NO DEFINIDO EN LA COMPANIA {0}, PARAMETRO {1} -GENE-0015=REPORTE {0} NO DISPONIBLE -GENE-0016=SE PRESENTO EL SIGUIENTE ERROR {0} AL GENERAR EL REPORTE -GENE-0017=EL PERFIL {0} NO TIENE ASOCIADO UN MENU -GENE-0018=SUCURSALES NO DEFINIDAS PARA LA COMPANIA: {0} -GENE-0019=EL CALENDARIO NO PUEDE DEJAR HUECOS PARA LA SUCURSAL: {0} FCONTABLE ANTERIOR: {1} -GENE-0020=FECHA DE INICIO PARA GENERAR CALENDARIO NO PUEDE SER MENOR A: {0} -GENE-0021=LA CONTRASEA NO CUMPLE CON LA POLITICA DE SEGURIDAD -GENE-0022=NO PUEDE REPETIR LAS LTIMAS: {0} CONTRASEAS -GENE-0023=CONTRASEA EXPIRADA -GENE-0024=CALENDARIO NO DEFINIDO EN TGENEACCOUNTINGDATE PARA LA FECHA :{0} -GENE-0025=CONTRASEA ANTERIOR INCORRECTA -GENE-0026=LA CONTRASEA DEBE TENER POR LO MENOS {0} LETRAS MINSCULAS -GENE-0027=LA CONTRASEA DEBE TENER POR LO MENOS {0} CARACTERES ESPECIALES -GENE-0028=LA CONTRASEA DEBE TENER POR LO MENOS {0} LETRAS MAYSCULAS -GENE-0029=LA CONTRASEA DEBE TENER POR LO MENOS {0} NMEROS -GENE-0030=LA LONGITUD MNIMA DE LA CONTRASEA DEBE SER DE {0} CARACTERES -GENE-0031=VALOR REQUERIDO PARA EL CAMPO: {0} NMERO DE REGISTRO: {1} -GENE-0032=TIPO DE DATO: {0} PARA EL CAMPO: {1} NO SE PUEDE TRANSFORMAR VALOR: {2} REGISTRO {3} -GENE-0033=OFICIAL DE CUENTA NO DEFINIDO PARA EL PRODUCTO EN TGENEOFFICER -GENE-0034=PARMETROS PARA EJECUTAR TAREAS CALENDARIZADAS NO DEFINIDOS EN TGENSCHEDULEPARAMETERS -GENE-0035=USUARIO: {0} NO DEFINIDO EN TSAFEUSERDETAIL -GENE-0036=NMERO DE CARACTERES DEL SECUENCIAL NO DEFINIDO EN TGENEACCONUMSTRUCTURE MODULO: {0} -GENE-0037=ESTRUCTURA DE SECUENCIAL NO DEFINIDA EN TGENESEQUENTIALMODULE MODULO: {0} -GENE-0038=ESTRUCTURA DE SECUENCIAL NO DEFINIDA EN TGENESEQUESTRUCTDETAIL MODULO: {0} -GENE-0039=ESTRUCTURA DE NMERO DE CUENTA NO DEFINIDA EN TGENEACCONUMSTRUCTURE MDULO: {0} -GENE-0040=EL MONTO MNIMO DEBE SER MAYOR AL MONTO MXIMO -GENE-0041=LOS VALORES PARA EL TIPO DE BALANCE {0} SE SOBREPONEN -GENE-0042=CDIGO DE USUARIO YA EXISTE: {0} -GENE-0043=:EL CRITERIO DE BSQUEDA --> {0} NO ES SUFICIENTE \ No newline at end of file diff --git a/base/business/general/src/test/.svn/entries b/base/business/general/src/test/.svn/entries deleted file mode 100644 index 7b99b85..0000000 --- a/base/business/general/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/general/src/test/java/.svn/entries b/base/business/general/src/test/java/.svn/entries deleted file mode 100644 index 50b4aa0..0000000 --- a/base/business/general/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/general/src/test/resources/.svn/entries b/base/business/general/src/test/resources/.svn/entries deleted file mode 100644 index c839458..0000000 --- a/base/business/general/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/general/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/log/.svn/dir-prop-base b/base/business/log/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/business/log/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/business/log/.svn/entries b/base/business/log/.svn/entries deleted file mode 100644 index c076d8e..0000000 --- a/base/business/log/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log -svn://172.17.26.185/COMACO - - - -2014-10-17T05:32:00.734115Z -1669 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:39.054787Z -50d3060ccf5010c2e325cdc0d13d7f83 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -806 - diff --git a/base/business/log/.svn/text-base/pom.xml.svn-base b/base/business/log/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 336a20c..0000000 --- a/base/business/log/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,22 +0,0 @@ - - - - business - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.business - log - log - - - com.fp.base.persistence - plog - ${project.version} - - - diff --git a/base/business/log/src/.svn/entries b/base/business/log/src/.svn/entries deleted file mode 100644 index cbb90f0..0000000 --- a/base/business/log/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/log/src/main/.svn/entries b/base/business/log/src/main/.svn/entries deleted file mode 100644 index 3add472..0000000 --- a/base/business/log/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/log/src/main/java/.svn/entries b/base/business/log/src/main/java/.svn/entries deleted file mode 100644 index 0690b47..0000000 --- a/base/business/log/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/log/src/main/java/com/.svn/entries b/base/business/log/src/main/java/com/.svn/entries deleted file mode 100644 index 8a02c4b..0000000 --- a/base/business/log/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/log/src/main/java/com/fp/.svn/entries b/base/business/log/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 352c429..0000000 --- a/base/business/log/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -log -dir - diff --git a/base/business/log/src/main/java/com/fp/log/.svn/entries b/base/business/log/src/main/java/com/fp/log/.svn/entries deleted file mode 100644 index f5c7134..0000000 --- a/base/business/log/src/main/java/com/fp/log/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main/java/com/fp/log -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:38.850786Z -2023f75ebf300c037dd4c5aeed1151cd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -69 - -LogBook.java -file - - - - -2022-07-28T03:40:38.850786Z -963fa36082a102f999a7995b33c9f6f5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5828 - diff --git a/base/business/log/src/main/java/com/fp/log/.svn/text-base/LogBook.java.svn-base b/base/business/log/src/main/java/com/fp/log/.svn/text-base/LogBook.java.svn-base deleted file mode 100644 index c0e1df7..0000000 --- a/base/business/log/src/main/java/com/fp/log/.svn/text-base/LogBook.java.svn-base +++ /dev/null @@ -1,188 +0,0 @@ -package com.fp.log; - -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.NoSuchElementException; - -import org.apache.log4j.Logger; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.common.helper.BeanManager; -import com.fp.dto.Request; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.plog.log.TlogHeader; -import com.fp.persistence.plog.log.TlogLoad; -import com.fp.persistence.plog.log.TlogLoadError; -import com.fp.persistence.plog.log.TlogLoadErrorKey; -import com.fp.persistence.plog.log.TlogLoadKey; - -// TODO: Auto-generated Javadoc -/** - * The Class LogBook. - */ -public class LogBook { - private static final Logger LOG = Logger.getLogger(LogBook.class); - - /** The request. */ - private Request request; - - /** The header. */ - private TlogHeader header; - - /** The process. */ - private HashMap process = new HashMap(); - - /** The process error. */ - private HashMap processError = new HashMap(); - - /** The process count. */ - private long processCount = 0; - - /** - * Instantiates a new log book. - * - * @param pRequest the request - * @throws Exception the exception - */ - public LogBook(Request pRequest) throws Exception { - this.request = pRequest; - this.manageHeader(); - } - - /** - * Manage header. - * - * @throws Exception the exception - */ - protected void manageHeader() throws Exception { - this.header = new TlogHeader(this.request.getJournalId(), this.request.getTransactionModule(), this.request.getTransactionCode(), - this.request.getTransactionVersion()); - this.header.setUsercode(this.request.getUser()); - this.header.setCompanycode(this.request.getCompany()); - this.header.setOfficecode(this.request.getOfficeCode()); - this.header.setBranchcode(this.request.getBranchCode()); - this.header.setRealdate(FormatDates.getInstance().getDataBaseTimestamp()); - this.header.setAccountingdate(BeanManager.convertObject(this.request.get("accountingdate"), Timestamp.class)); - this.header.setAditionaldata(MessageManager.getMessage(this.request)); - this.save(this.header, false); - } - - /** - * Save. - * - * @param pBean the bean - * @throws Exception the exception - */ - protected void save(HibernateBean pBean, boolean update) throws Exception { - NestedSave ns = new NestedSave(this.request.getCompany(), update, pBean); - LogBook.LOG.info(pBean); - ns.start(); - ns.join(); - } - - /** - * Adds the process. - * - * @param pData the data - * @param pId the id - * @return the long - * @throws Exception the exception - */ - public Long addProcess(String pData, String pId) throws Exception { - long id = ++this.processCount; - TlogLoadKey lk = new TlogLoadKey(this.request.getJournalId(), id); - TlogLoad l = new TlogLoad(lk); - l.setAditionaldata(pData); - l.setLoadid(pId); - l.setStatus("P");// P en proceso, E error, S sucessfull - this.save(l, false); - this.process.put(id, l); - return id; - } - - /** - * Destroy process. - * - * @param pId the id - * @throws Exception the exception - */ - private void destroyProcess(Long pId) throws Exception { - this.process.remove(pId); - this.processError.remove(pId); - } - - /** - * End process. - * - * @param pId the id - * @throws Exception the exception - */ - public void endProcess(Long pId) throws Exception { - TlogLoad load = this.process.get(pId); - if (load == null) { - throw new NoSuchElementException(); - } - load.setStatus("S"); - this.save(load, true); - this.destroyProcess(pId); - } - - public void addDetailError(Long pId, String pData) throws Exception { - this.addDetailError(pId, pData, null, null); - } - - /** - * Adds the detail error. - * - * @param pId the id - * @param pData the data - * @param pResultCode the result code - * @param pIdentifier the identifier - * @throws Exception the exception - */ - public void addDetailError(Long pId, String pData, String pResultCode, String pIdentifier) throws Exception { - Integer errorsequence = this.processError.get(pId); - errorsequence = (errorsequence == null) ? 0 : errorsequence; - TlogLoadErrorKey llk = new TlogLoadErrorKey(this.request.getJournalId(), pId, errorsequence); - this.processError.put(pId, ++errorsequence); - TlogLoadError ll = new TlogLoadError(llk); - ll.setMessage(pData); - ll.setResultcode(pResultCode); - ll.setIdentifier(pIdentifier); - this.save(ll, false); - } - - /** - * Error process. - * - * @param pId the id - * @throws Exception the exception - */ - public void errorProcess(Long pId) throws Exception { - TlogLoad load = this.process.get(pId); - if (load == null) { - throw new NoSuchElementException(); - } - load.setStatus("E"); - this.save(load, true); - this.destroyProcess(pId); - } - - /** - * The main method. - * - * @param args the arguments - * @throws Exception the exception - */ - public static void main(String[] args) throws Exception { - LogBook l = new LogBook(null); - Long id = l.addProcess("aSDFGHJ", "ASDFGHJK"); - l.addDetailError(id, "asdfgh", "12", "123"); - l.addDetailError(id, "asdfgh", "12", "123"); - l.addDetailError(id, "asdfgh", "12", "123"); - l.endProcess(id); - l.errorProcess(id); - } -} diff --git a/base/business/log/src/main/java/com/fp/log/.svn/text-base/package-info.java.svn-base b/base/business/log/src/main/java/com/fp/log/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 6173017..0000000 --- a/base/business/log/src/main/java/com/fp/log/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Clases para el control de la Bitcora. - */ -package com.fp.log; \ No newline at end of file diff --git a/base/business/log/src/main/resources/.svn/entries b/base/business/log/src/main/resources/.svn/entries deleted file mode 100644 index 3e185de..0000000 --- a/base/business/log/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/log/src/test/.svn/entries b/base/business/log/src/test/.svn/entries deleted file mode 100644 index 75922c4..0000000 --- a/base/business/log/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/log/src/test/java/.svn/entries b/base/business/log/src/test/java/.svn/entries deleted file mode 100644 index fb15760..0000000 --- a/base/business/log/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/log/src/test/resources/.svn/entries b/base/business/log/src/test/resources/.svn/entries deleted file mode 100644 index ce7dd28..0000000 --- a/base/business/log/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/log/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/person/.svn/dir-prop-base b/base/business/person/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/business/person/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/business/person/.svn/entries b/base/business/person/.svn/entries deleted file mode 100644 index ed533dd..0000000 --- a/base/business/person/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:42.250801Z -87ffb06b9ed4952d853875d72bf4f063 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1121 - diff --git a/base/business/person/.svn/text-base/pom.xml.svn-base b/base/business/person/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index b0c610d..0000000 --- a/base/business/person/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,32 +0,0 @@ - - - - business - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.business - person - person - - - com.fp.base.persistence - pcustomer - 2.1 - - - - com.fp.base - sessionbeans - 2.1 - - - \ No newline at end of file diff --git a/base/business/person/src/.svn/entries b/base/business/person/src/.svn/entries deleted file mode 100644 index 6bd74c2..0000000 --- a/base/business/person/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/person/src/main/.svn/entries b/base/business/person/src/main/.svn/entries deleted file mode 100644 index 4222e6c..0000000 --- a/base/business/person/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/person/src/main/java/.svn/entries b/base/business/person/src/main/java/.svn/entries deleted file mode 100644 index 581d640..0000000 --- a/base/business/person/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/person/src/main/java/com/.svn/entries b/base/business/person/src/main/java/com/.svn/entries deleted file mode 100644 index 650ea88..0000000 --- a/base/business/person/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/person/src/main/java/com/fp/.svn/entries b/base/business/person/src/main/java/com/fp/.svn/entries deleted file mode 100644 index a8f3657..0000000 --- a/base/business/person/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -person -dir - diff --git a/base/business/person/src/main/java/com/fp/person/.svn/entries b/base/business/person/src/main/java/com/fp/person/.svn/entries deleted file mode 100644 index 705d2cc..0000000 --- a/base/business/person/src/main/java/com/fp/person/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -db -dir - -validate -dir - -rules -dir - diff --git a/base/business/person/src/main/java/com/fp/person/db/.svn/entries b/base/business/person/src/main/java/com/fp/person/db/.svn/entries deleted file mode 100644 index f2878f1..0000000 --- a/base/business/person/src/main/java/com/fp/person/db/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:41.729799Z -b2ca79463acd416301c3a4d4f3bc8bc8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5936 - diff --git a/base/business/person/src/main/java/com/fp/person/db/.svn/text-base/DataHelper.java.svn-base b/base/business/person/src/main/java/com/fp/person/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 7201733..0000000 --- a/base/business/person/src/main/java/com/fp/person/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,149 +0,0 @@ -package com.fp.person.db; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCantonKey; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCityKey; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneParroquiaKey; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.gene.TgeneProvinceKey; - -/** - * Clase utilitaria que maneje sql y hql utiliada en el proyecto person. - * @author Jorge Vaca - * @version 2.1 - */ -public class DataHelper { - - /**Almacena una instancia de DataHelper.*/ - private static DataHelper cache; - - /** - * Entrega una instancia de DataHelper. - * @return DataHelper - */ - public static DataHelper getInstance() { - if (cache != null) { - return cache; - } - synchronized (DataHelper.class) { - if (cache == null) { - cache = new DataHelper(); - } - } - return cache; - } - - /** - * Metodo que entrega datos de una sucursal definidos en TgeneBranch. - * @param pBranch Codigo de sucursal. - * @param pCompany Compania a la que pertenece la cuenta. - * @return TgeneBranch - * @throws Exception - */ - public TcustPersonDetail getTcustPersonDetail(Integer pPersonCode) throws Exception { - return TcustPersonDetail.find(PersistenceHelper.getEntityManager(), pPersonCode); - } - - - - /** - * Metodo que entrega datos de una Direccion definida en TcustPersonAddress. - * @param personcode Codigo de la persona a quien pertenece la Direccion. - * @param addressnumber Numero de la direccion. - * @return tcustPersonAddress - * @throws Exception - */ - public TcustPersonAddress getTcustPersonAddress(Integer personcode, Integer addressnumber) throws Exception { - return TcustPersonAddress.findByPersonCode(PersistenceHelper.getEntityManager(), personcode, addressnumber); - } - - - - /** - * Metodo que entrega datos de un Pais definido en TgeneCountry. - * @param countrycode Codigo que identfica el Pais. - * @return tgeneCountry - * @throws Exception - */ - public TgeneCountry getTgeneCountry(String countrycode) throws Exception { - TgeneCountry tgeneCountry = null; - tgeneCountry = (TgeneCountry) PersistenceHelper.getSession().get(TgeneCountry.class, countrycode); - return tgeneCountry; - } - - - - /** - * Metodo que entrega datos de una Provincia definida en TgeneProvince. - * @param countrycode Codigo del pais al cual pertenece la Provincia. - * @param provincecode Codigo que identfica la Provincia. - * @return tgeneProvince - * @throws Exception - */ - public TgeneProvince getTgeneProvince(String countrycode, String provincecode) throws Exception { - TgeneProvinceKey tgeneProvinceKey = new TgeneProvinceKey(countrycode, provincecode); - TgeneProvince tgeneProvince = null; - tgeneProvince = (TgeneProvince) PersistenceHelper.getSession().get(TgeneProvince.class, tgeneProvinceKey); - return tgeneProvince; - } - - - - /** - * Metodo que devuelve un objeto de tipo TgeneCanton - * @param countrycode Codigo de pais - * @param provincecode Codigo provincia - * @param cantoncode Codigo canton - * @return - * @throws Exception - */ - public TgeneCanton getTgeneCanton(String countrycode, String provincecode, String cantoncode) throws Exception { - TgeneCantonKey tgeneCantonKey = new TgeneCantonKey(countrycode, provincecode, cantoncode); - TgeneCanton tgeneCanton = null; - tgeneCanton = (TgeneCanton) PersistenceHelper.getSession().get(TgeneCanton.class, tgeneCantonKey); - return tgeneCanton; - } - - - - /** - * Metodo que entrega datos de una Ciudad definida en TgeneCity. - * @param countrycode Codigo del pais al cual perteneces la Ciudad. - * @param provincecode Codigo de la provincia al cual pertenece la Ciudad. - * @param cantoncode Codigo del canton de la ciudad - * @param citycode Codigo que identfica la Ciudad. - * @return tgeneCity - * @throws Exception - */ - public TgeneCity getTgeneCity(String countrycode, String provincecode, String cantoncode, String citycode) throws Exception { - TgeneCityKey tgeneCityKey = new TgeneCityKey(countrycode, provincecode, cantoncode, citycode); - TgeneCity tgeneCity = null; - tgeneCity = (TgeneCity) PersistenceHelper.getSession().get(TgeneCity.class, tgeneCityKey); - return tgeneCity; - } - - - - /** - * Metodo que entrega datos de una Parroquia definida en TgeneParroquia. - * @param countrycode Codigo del pais al cual perteneces la Ciudad. - * @param provincecode Codigo de la provincia al cual pertenece la Ciudad. - * @param cantoncode Codigo del canton de la ciudad - * @param parroquiacode Codigo que identfica a la parroquia. - * @return tgeneCity - * @throws Exception - */ - public TgeneParroquia getTgeneParroquia(String countrycode, String provincecode, String cantoncode, String parroquiacode) throws Exception { - TgeneParroquiaKey tgeneParroquiaKey = new TgeneParroquiaKey(countrycode, provincecode, cantoncode, parroquiacode); - TgeneParroquia tgeneParroquia = null; - tgeneParroquia = (TgeneParroquia) PersistenceHelper.getSession().get(TgeneParroquia.class, tgeneParroquiaKey); - return tgeneParroquia; - } - -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/.svn/entries b/base/business/person/src/main/java/com/fp/person/rules/.svn/entries deleted file mode 100644 index 7a61463..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/rules -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -save -dir - diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/entries b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/entries deleted file mode 100644 index 7159c09..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CountryProvinceCity.java -file - - - - -2022-07-28T03:40:41.891799Z -0d7ba27d46c86a724e51d73166005ebf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12029 - -PhonesPerClient.java -file - - - - -2022-07-28T03:40:41.891799Z -b1f63666bf7614074cbe969141d67e41 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1792 - -DirectionFull.java -file - - - - -2022-07-28T03:40:41.891799Z -ac92e1cd3f51cb59d78dde1bf2efed95 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3246 - -PersonName.java -file - - - - -2022-07-28T03:40:41.891799Z -343fc2a94556fbcd533d2376610c4aa6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11672 - -ActivityEconomic.java -file - - - - -2022-07-28T03:40:41.892799Z -e95b2bc109983448531a408f46539cf9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5493 - -code -dir - diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/ActivityEconomic.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/ActivityEconomic.java.svn-base deleted file mode 100644 index dbd71c7..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/ActivityEconomic.java.svn-base +++ /dev/null @@ -1,120 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.person.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.common.helper.CalculationBase; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TgeneActivity; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailKey; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que retorna la descripcion del sector de la actividad econmica - * - * @author jarias - */ -public class ActivityEconomic extends QueryRule { - - private String activitycodedesc = "activitycodedesc"; - private String segmentcode = "segmentcode"; - private String segmentcatalogdesc = "segmentcatalogdesc"; - private String expirationdateinfo = "expirationdateinfo"; - - /** - * Metodo que agrega la descripcion de la actividad economica, el sectoy y descripcion del sector asociadas a una - * persona, cuando una consulta es requerida. Adems verifica la validz de la informacin del cliente. - * - * @param pQueryRequest - * @return pQueryRequest - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query query = new Query(); - query.process(pQueryRequest); - Object people = (Object) response.get("TCUSTPERSONDETAIL"); - completeSector(people); - expirationInfo(people, pQueryRequest); - return pQueryRequest; - } - - /** - * Metodo que completa la descripcion de la actividad el sector y la descripcin del sector - * - * @param detail - * @throws Exception - */ - private void completeSector(Object detail) throws Exception { - if (detail == null) { - return; - } - TcustPersonDetail cusDetail = (TcustPersonDetail) detail; - if (cusDetail.getActivitycode() != null) { - TgeneActivity activity = TgeneActivity.find(PersistenceHelper.getEntityManager(), cusDetail.getActivitycode()); - if (activity != null) { - cusDetail.addAddtionalInfo(activitycodedesc, activity.getDescription()); - cusDetail.addAddtionalInfo(segmentcode, activity.getSegmenttypecatalog()); - TgeneCatalogDetailKey catalogDetailKey = new TgeneCatalogDetailKey(activity.getSegmenttypecatalog(), "SEGMENTTYPE"); - TgeneCatalogDetail detailcatalog = TgeneCatalogDetail.find(PersistenceHelper.getEntityManager(), catalogDetailKey); - if (detailcatalog != null) { - cusDetail.addAddtionalInfo(segmentcatalogdesc, detailcatalog.getDescription()); - } else { - cusDetail.addAddtionalInfo(segmentcatalogdesc, null); - } - } else { - cusDetail.addAddtionalInfo(activitycodedesc, null); - cusDetail.addAddtionalInfo(segmentcode, null); - } - } else { - cusDetail.addAddtionalInfo(activitycodedesc, null); - cusDetail.addAddtionalInfo(segmentcode, null); - cusDetail.addAddtionalInfo(segmentcatalogdesc, null); - } - - } - - /** - * Mtodo que verifica la validez de la informacin del cliente segun la ultima actualizacin - * - * @param tcustPerson - * @param pQueryRequest - * @throws Exception - */ - private void expirationInfo(Object tcustPerson, QueryRequest pQueryRequest) throws Exception { - TcustPersonDetail tcustPersonDetail = (TcustPersonDetail) tcustPerson; - if (tcustPersonDetail == null) { - return; - } - if (tcustPersonDetail.getPk().getPersoncode() != null) { - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("EXPIRATIONDATE", tcustPersonDetail.getCompanycode()); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey); - if (tgeneParameters.getNumbervalue() != null) { - APPDates fechaVigenteRegistro = new APPDates(tcustPersonDetail.getDatefrom().toString().substring(0, 10), CalculationBase.B365365); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pQueryRequest.getCompany(), 0); - APPDates fechaActual = new APPDates(db.getWorkingdate(), CalculationBase.B365365); - if (fechaActual.compareTo(fechaVigenteRegistro) >= 0) { - Integer days = fechaActual.substract(fechaVigenteRegistro); - if (days > tgeneParameters.getNumbervalue().intValue()) { - tcustPersonDetail.addAddtionalInfo(expirationdateinfo, "Y"); - } else { - tcustPersonDetail.addAddtionalInfo(expirationdateinfo, "N"); - } - } else { - tcustPersonDetail.addAddtionalInfo(expirationdateinfo, "N"); - } - } - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/CountryProvinceCity.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/CountryProvinceCity.java.svn-base deleted file mode 100644 index d9de51f..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/CountryProvinceCity.java.svn-base +++ /dev/null @@ -1,202 +0,0 @@ -package com.fp.person.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleRealAssets; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.person.db.DataHelper; -import java.util.List; - -/** - * Clase que se encarga de completar el nombre de pais, provincia y ciudad asociados a una persona. - * @author Wilson Sigcho - * @version 2.1 - */ -public class CountryProvinceCity extends QueryRule { // NOPMD by jorge on 12/10/10 22:28 - - private String country = "countrydesc"; - private String province = "provincedesc"; - private String canton = "cantondesc"; - private String city = "citydesc"; - private String parroquia = "parroquiadesc"; - private String nacionality ="nacionalitydesc"; - - /** - * Metodo que agrega el nombre de pais, provincia y cuidad asociadas a una persona, cuando una consulta es requerida. - * @param pQueryRequest Objeto que posee la consulta requerida. - * @return pQueryRequest - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - Object people = (Object) response.get("TCUSTPEOPLE"); - List address = (List) response.get("TCUSTPERSONADDRESS"); - List realassets = (List) response.get("TCUSTPEOPLEREALASSETS"); - this.completePeople(people); - this.completeAddress(address); - this.completeRealAssets(realassets); - return pQueryRequest; - } - - /** - * Metodo que se encraga de completar el nombre de pais, provincia, cuidad y parroquia de nacimiento de una persona. - * @param detail Objeto que posee un registro consultado en la tabla TcustPeople. - * @throws Exception - */ - private void completePeople(Object detail) throws Exception { // NOPMD by jorge on 12/10/10 22:27 - if (detail == null) { - return; - } - TcustPeople tcustPeople = (TcustPeople) detail; - if (tcustPeople.getBirthcountrycode() != null) { - TgeneCountry tgeneCountry = DataHelper.getInstance().getTgeneCountry(tcustPeople.getBirthcountrycode()); - tcustPeople.addAddtionalInfo(country, tgeneCountry.getDescription()); - } else { - tcustPeople.addAddtionalInfo(country, null); - } - if (tcustPeople.getBirthcountrycode() != null && tcustPeople.getBirthprovincecode() != null) { - TgeneProvince tgeneProvince = DataHelper.getInstance().getTgeneProvince(tcustPeople.getBirthcountrycode(), tcustPeople.getBirthprovincecode()); - tcustPeople.addAddtionalInfo(province, tgeneProvince.getDescription()); - } else { - tcustPeople.addAddtionalInfo(province, null); - } - if (tcustPeople.getBirthcountrycode() != null && tcustPeople.getBirthprovincecode() != null && tcustPeople.getBirthcantoncode() != null) { - TgeneCanton tgeneCanton = DataHelper.getInstance().getTgeneCanton(tcustPeople.getBirthcountrycode(), - tcustPeople.getBirthprovincecode(), tcustPeople.getBirthcantoncode()); - tcustPeople.addAddtionalInfo(canton, tgeneCanton.getDescription()); - } else { - tcustPeople.addAddtionalInfo(canton, null); - } - if (tcustPeople.getBirthcountrycode() != null && tcustPeople.getBirthprovincecode() != null - && tcustPeople.getBirthcantoncode() != null && tcustPeople.getBirthcitycode() != null) { - TgeneCity tgeneCity = DataHelper.getInstance().getTgeneCity(tcustPeople.getBirthcountrycode(), - tcustPeople.getBirthprovincecode(), tcustPeople.getBirthcantoncode(), tcustPeople.getBirthcitycode()); - tcustPeople.addAddtionalInfo(city, tgeneCity.getDescription()); - } else { - tcustPeople.addAddtionalInfo(city, null); - } - if (tcustPeople.getBirthcountrycode() != null && tcustPeople.getBirthprovincecode() != null - && tcustPeople.getBirthcantoncode() != null && tcustPeople.getBirthparroquiacode() != null) { - TgeneParroquia tgeneParroquia = DataHelper.getInstance().getTgeneParroquia(tcustPeople.getBirthcountrycode(), - tcustPeople.getBirthprovincecode(), tcustPeople.getBirthcantoncode(), tcustPeople.getBirthparroquiacode()); - tcustPeople.addAddtionalInfo(parroquia, tgeneParroquia.getDescription()); - } else { - tcustPeople.addAddtionalInfo(parroquia, null); - } - if (tcustPeople.getNacionality() != null) { - TgeneCountry tgeneCountry = DataHelper.getInstance().getTgeneCountry(tcustPeople.getNacionality()); - tcustPeople.addAddtionalInfo(nacionality, tgeneCountry.getCitizenship()); - } else { - tcustPeople.addAddtionalInfo(nacionality, null); - } - } - - /** - * Metodo que se encraga de completar el nombre de pais, provincia y cuidad asociados a direcciones de una persona. - * @param lDetail Objeto que posee una lista de los registros consultados en la tabla TcustPersonAddress. - * @throws Exception - */ - private void completeAddress(List lDetail) throws Exception { // NOPMD by jorge on 12/10/10 22:27 - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPersonAddress tcustPersonAddress = (TcustPersonAddress) object; - if (tcustPersonAddress.getCountrycode() != null) { - TgeneCountry tgeneCountry = DataHelper.getInstance().getTgeneCountry(tcustPersonAddress.getCountrycode()); - tcustPersonAddress.addAddtionalInfo(country, tgeneCountry.getDescription()); - } else { - tcustPersonAddress.addAddtionalInfo(country, null); - } - if (tcustPersonAddress.getCountrycode() != null && tcustPersonAddress.getProvincecode() != null) { - TgeneProvince tgeneProvince = DataHelper.getInstance().getTgeneProvince(tcustPersonAddress.getCountrycode(), - tcustPersonAddress.getProvincecode()); - tcustPersonAddress.addAddtionalInfo(province, tgeneProvince.getDescription()); - } else { - tcustPersonAddress.addAddtionalInfo(province, null); - } - if (tcustPersonAddress.getCountrycode() != null && tcustPersonAddress.getProvincecode() != null - && tcustPersonAddress.getCantoncode() != null) { - TgeneCanton tgeneCanton = DataHelper.getInstance().getTgeneCanton(tcustPersonAddress.getCountrycode(), - tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode()); - tcustPersonAddress.addAddtionalInfo(canton, tgeneCanton.getDescription()); - } else { - tcustPersonAddress.addAddtionalInfo(canton, null); - } - if (tcustPersonAddress.getCountrycode() != null && tcustPersonAddress.getProvincecode() != null - && tcustPersonAddress.getCantoncode() != null && tcustPersonAddress.getCitycode() != null) { - TgeneCity tgeneCity = DataHelper.getInstance().getTgeneCity(tcustPersonAddress.getCountrycode(), tcustPersonAddress.getProvincecode(), tcustPersonAddress.getCantoncode(), tcustPersonAddress.getCitycode()); - tcustPersonAddress.addAddtionalInfo(city, tgeneCity.getDescription()); - } else { - tcustPersonAddress.addAddtionalInfo(city, null); - } - } - } - - /** - * Metodo que se encraga de completar el nombre de pais, provincia, parroquia y cuidad de inmuebles asociados a una persona. - * @param lDetail Objeto que posee una lista de los registros consultados en la tabla TcustPeopleRealAssets. - * @throws Exception - */ - private void completeRealAssets(List lDetail) throws Exception { // NOPMD by jorge on 12/10/10 22:27 - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleRealAssets tcustPeopleRealAssets = (TcustPeopleRealAssets) object; - if (tcustPeopleRealAssets.getCountrycode() != null) { - TgeneCountry tgeneCountry = DataHelper.getInstance().getTgeneCountry(tcustPeopleRealAssets.getCountrycode()); - tcustPeopleRealAssets.addAddtionalInfo(country, tgeneCountry.getDescription()); - } else { - tcustPeopleRealAssets.addAddtionalInfo(country, null); - } - if (tcustPeopleRealAssets.getCountrycode() != null && tcustPeopleRealAssets.getProvincecode() != null) { - TgeneProvince tgeneProvince = DataHelper.getInstance().getTgeneProvince(tcustPeopleRealAssets.getCountrycode(), tcustPeopleRealAssets.getProvincecode()); - tcustPeopleRealAssets.addAddtionalInfo(province, tgeneProvince.getDescription()); - } else { - tcustPeopleRealAssets.addAddtionalInfo(province, null); - } - if (tcustPeopleRealAssets.getCountrycode() != null && tcustPeopleRealAssets.getProvincecode() != null - && tcustPeopleRealAssets.getCantoncode() != null) { - TgeneCanton tgeneCanton = DataHelper.getInstance().getTgeneCanton(tcustPeopleRealAssets.getCountrycode(), - tcustPeopleRealAssets.getProvincecode(), tcustPeopleRealAssets.getCantoncode()); - tcustPeopleRealAssets.addAddtionalInfo(canton, tgeneCanton.getDescription()); - } else { - tcustPeopleRealAssets.addAddtionalInfo(canton, null); - } - if (tcustPeopleRealAssets.getCountrycode() != null && tcustPeopleRealAssets.getProvincecode() != null - && tcustPeopleRealAssets.getCantoncode() != null && tcustPeopleRealAssets.getCitycode() != null) { - TgeneCity tgeneCity = DataHelper.getInstance().getTgeneCity(tcustPeopleRealAssets.getCountrycode(), - tcustPeopleRealAssets.getProvincecode(), tcustPeopleRealAssets.getCantoncode(), tcustPeopleRealAssets.getCitycode()); - tcustPeopleRealAssets.addAddtionalInfo(city, tgeneCity.getDescription()); - } else { - tcustPeopleRealAssets.addAddtionalInfo(city, null); - } - if (tcustPeopleRealAssets.getCountrycode() != null && tcustPeopleRealAssets.getProvincecode() != null - && tcustPeopleRealAssets.getCantoncode() != null && tcustPeopleRealAssets.getParroquiacode() != null) { - TgeneParroquia tgeneParroquia = DataHelper.getInstance().getTgeneParroquia(tcustPeopleRealAssets.getCountrycode(), - tcustPeopleRealAssets.getProvincecode(), tcustPeopleRealAssets.getCantoncode(), tcustPeopleRealAssets.getParroquiacode()); - tcustPeopleRealAssets.addAddtionalInfo(parroquia, tgeneParroquia.getDescription()); - } else { - tcustPeopleRealAssets.addAddtionalInfo(parroquia, null); - } - if (tcustPeopleRealAssets.getMortgagepersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustPeopleRealAssets.getMortgagepersoncode()); - tcustPeopleRealAssets.addAddtionalInfo("name", tcustPersonDetail.getName()); - } else { - tcustPeopleRealAssets.addAddtionalInfo("name", null); - } - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/DirectionFull.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/DirectionFull.java.svn-base deleted file mode 100644 index 20803ad..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/DirectionFull.java.svn-base +++ /dev/null @@ -1,91 +0,0 @@ -package com.fp.person.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import java.util.List; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; - -/** - * - * @author hinga - */ -public class DirectionFull extends QueryRule { - - private String addressaux = "addressaux"; - - /** - * Metodo que entrega la direccion completa (concatenado) - * - * @param pQueryRequest Objeto que posee la consulta requerida. - * @return - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lovDirect = (List) response.get("TCUSTPERSONADDRESSLOVFULL"); - this.completeAddressJob(lovDirect); - if (lovDirect == null || (lovDirect != null && lovDirect.isEmpty())) { - return pQueryRequest; - } - return pQueryRequest; - } - - /** - * Metodo q se encarga de concatenar la direccion en un solo campo - * - * @param lovDirection objeto que posee una lista de registros consultados - * de tcustPersonAddress - * @throws Exception - */ - protected void completeAddressJob(List lovDirection) throws Exception { - - for (Object addre : lovDirection) { - TcustPersonAddress tcustPersonAddress = (TcustPersonAddress) addre; - tcustPersonAddress.addAddtionalInfo(addressaux, DirectionFull.getFullAddress(tcustPersonAddress)); - } - } - - /** - * Metodo que se encarga de armar la direccion dada la direccion - * - * @param tcustPersonAddress - * @return - */ - public static String getFullAddress(TcustPersonAddress tcustPersonAddress) { - if (tcustPersonAddress == null) { - return null; - } else if (tcustPersonAddress.getAddresstypecatalog() != null - && tcustPersonAddress.getAddresstypecatalog().compareTo("3") == 0) { - return tcustPersonAddress.getAddress(); - } else { - String newaddress = ""; - if (tcustPersonAddress.getAddress() != null) { - newaddress += tcustPersonAddress.getAddress(); - } - if (tcustPersonAddress.getStreetnumber() != null) { - newaddress += " " + tcustPersonAddress.getStreetnumber(); - } - if(tcustPersonAddress.getDepartment()!=null) - { - newaddress +=" ("+tcustPersonAddress.getDepartment()+")"; - } - if (tcustPersonAddress.getStreet() != null) { - newaddress += " " + tcustPersonAddress.getStreet(); - } - if (tcustPersonAddress.getUrbanization() != null) { - newaddress += " /" + tcustPersonAddress.getUrbanization(); - } - if (tcustPersonAddress.getRemark() != null) { - newaddress += ", " + tcustPersonAddress.getRemark() ; - } - if (newaddress.compareTo("") == 0) { - newaddress = null; - } - return newaddress; - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PersonName.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PersonName.java.svn-base deleted file mode 100644 index df820ef..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PersonName.java.svn-base +++ /dev/null @@ -1,264 +0,0 @@ -package com.fp.person.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.company.TcustFamiliarlLink; -import com.fp.persistence.pcustomer.company.TcustLegalLink; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.people.TcustPeopleJob; -import com.fp.persistence.pcustomer.people.TcustPeopleOtherAssets; -import com.fp.persistence.pcustomer.people.TcustPeopleTradereferences; -import com.fp.persistence.pcustomer.people.TcustPeopleVehicle; -import com.fp.persistence.pgeneral.gene.TgeneAccountRelationship; -import com.fp.persistence.pgeneral.gene.TgeneCompany; -import com.fp.persistence.pgeneral.gene.TgeneSolicitudeRelationship; -import com.fp.person.db.DataHelper; -import java.util.List; - -/** - * Clase que se encarga de completar el nombre de una persona. - * - * @author Wilson Sigcho - * @version 2.1 - */ -public class PersonName extends QueryRule { - - private String name = "name"; - private String expiratedesignation = "expiratedesignation"; - - /** - * Metodo que agrega el nombre de una persona, cuando una consulta es requerida. - * - * @param pQueryRequest Objeto que posee la consulta requerida. - * @return pQueryRequest - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List legallink = (List) response.get("TCUSTLEGALLINK"); - List familiarlink = (List) response.get("TCUSTFAMILIARLLINK"); - List genecompany = (List) response.get("TGENECOMPANYLOV"); - List jobs = (List) response.get("TCUSTPEOPLEJOB"); - List vehicles = (List) response.get("TCUSTPEOPLEVEHICLE"); - List otherassets = (List) response.get("TCUSTPEOPLEOTHERASSETS"); - List tradereferences = (List) response.get("TCUSTPEOPLETRADEREFERENCES"); - List relationship = (List) response.get("TGENESOLICITUDERELATIONSHIP"); - List accountrelationship = (List) response.get("TGENEACCOUNTRELATIONSHIP"); - this.completeLegalLink(legallink); - this.completeFamiliarlLink(familiarlink); - this.completeGeneCompany(genecompany); - this.completeJob(jobs); - this.completeVehicles(vehicles); - this.completeOtherAssets(otherassets); - this.completeTradeReferences(tradereferences); - this.completeSolicitudeRealtionShip(relationship); - this.completeAccountRelationShip(accountrelationship); - return pQueryRequest; - } - - /** - * Metodo que se encraga de completar el nombre de una persona, en la tabla TcustLegalLink. - * - * @param lDetail Objeto que posee una lista de los registros consultados en la tabla TcustLegalLink. - * @throws Exception - */ - private void completeLegalLink(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustLegalLink tcustLegalLink = (TcustLegalLink) obj; - if (tcustLegalLink.getPk().getLinkpersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustLegalLink.getPk().getLinkpersoncode()); - tcustLegalLink.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustLegalLink.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que se encraga de completar el nombre de una persona, en la tabla TcustFamiliarlLink. - * - * @param lDetail Objeto que posee una lista de los registros consultados en la tabla TcustFamiliarlLink. - * @throws Exception - */ - private void completeFamiliarlLink(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustFamiliarlLink tcustFamiliarlLink = (TcustFamiliarlLink) obj; - if (tcustFamiliarlLink.getPk().getLinkpersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustFamiliarlLink.getPk().getLinkpersoncode()); - tcustFamiliarlLink.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustFamiliarlLink.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que se encraga de completar el nombre de una persona, en la tabla TgeneCompany. - * - * @param lDetail Objeto que posee una lista de los registros consultados en la tabla TgeneCompany. - * @throws Exception - */ - private void completeGeneCompany(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TgeneCompany tgeneCompany = (TgeneCompany) obj; - if (tgeneCompany.getPersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tgeneCompany.getPersoncode()); - tgeneCompany.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tgeneCompany.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que se encarga de completar el nombre del deunio de la empresa - * - * @param lDetail - * @throws Exception - */ - private void completeJob(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustPeopleJob tcustPeopleJob = (TcustPeopleJob) obj; - if (tcustPeopleJob != null) { - if (tcustPeopleJob.getPk().getPersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustPeopleJob.getPk().getPersoncode()); - tcustPeopleJob.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustPeopleJob.addAddtionalInfo(name, null); - } - if (tcustPeopleJob.getPk().getPersoncode() != null && tcustPeopleJob.getAddress() != null) { - TcustPersonAddressKey tcustPersonAddressKey = new TcustPersonAddressKey(tcustPeopleJob.getPk().getPersoncode(), tcustPeopleJob.getAddress(), FormatDates.getDefaultExpiryTimestamp()); - TcustPersonAddress tcustPersonAddress = TcustPersonAddress.find(PersistenceHelper.getEntityManager(), tcustPersonAddressKey); - tcustPeopleJob.addAddtionalInfo("addressaux", DirectionFull.getFullAddress(tcustPersonAddress)); - } else { - tcustPeopleJob.addAddtionalInfo("addressaux", null); - } - } - } - } - - /** - * Metodo que se encarga de completar el nombre del beneficiario de la prenda del vehiculo - * - * @param lDetail - * @throws Exception - */ - private void completeVehicles(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustPeopleVehicle tcustPeopleVehicle = (TcustPeopleVehicle) obj; - if (tcustPeopleVehicle.getPledgedpersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustPeopleVehicle.getPledgedpersoncode()); - tcustPeopleVehicle.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustPeopleVehicle.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que se encarga de completar el nombre del beneficiario de la prenda del vehiculo - * - * @param lDetail - * @throws Exception - */ - private void completeOtherAssets(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustPeopleOtherAssets tcustPeopleOtherAssets = (TcustPeopleOtherAssets) obj; - if (tcustPeopleOtherAssets.getMortgagepersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustPeopleOtherAssets.getMortgagepersoncode()); - tcustPeopleOtherAssets.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustPeopleOtherAssets.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que se encarga de completar el nombre del vendedor en referencias comerciales - * - * @param lDetail - * @throws Exception - */ - private void completeTradeReferences(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TcustPeopleTradereferences tcustPeopleTradereferences = (TcustPeopleTradereferences) obj; - if (tcustPeopleTradereferences.getTradepersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tcustPeopleTradereferences.getTradepersoncode()); - tcustPeopleTradereferences.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tcustPeopleTradereferences.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que completa el nombre de la tabla tgenesolicituderelationship - * - * @param lDetail - * @throws Exception - */ - private void completeSolicitudeRealtionShip(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TgeneSolicitudeRelationship tgeneSolicitudeRelationship = (TgeneSolicitudeRelationship) obj; - if (tgeneSolicitudeRelationship.getPk().getPersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tgeneSolicitudeRelationship.getPk().getPersoncode()); - tgeneSolicitudeRelationship.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tgeneSolicitudeRelationship.addAddtionalInfo(name, null); - } - } - } - - /** - * Metodo que completa el nombre de la tabla tgeneaccountrelationship - * - * @param lDetail - * @throws Exception - */ - private void completeAccountRelationShip(List lDetail) throws Exception { - if (lDetail == null) { - return; - } - for (Object obj : lDetail) { - TgeneAccountRelationship tgeneAccountRelationship = (TgeneAccountRelationship) obj; - if (tgeneAccountRelationship.getPk().getPersoncode() != null) { - TcustPersonDetail tcustPersonDetail = DataHelper.getInstance().getTcustPersonDetail(tgeneAccountRelationship.getPk().getPersoncode()); - tgeneAccountRelationship.addAddtionalInfo(name, tcustPersonDetail.getName()); - } else { - tgeneAccountRelationship.addAddtionalInfo(name, null); - } - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PhonesPerClient.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PhonesPerClient.java.svn-base deleted file mode 100644 index 068172e..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/.svn/text-base/PhonesPerClient.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.person.rules.query; - -import com.fp.bpm.query.Query; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.person.db.DataHelper; -import java.util.List; - -/** - * Clase que se encarga de completar la direccion del telefono. - * @author Wilson Sigcho - * @version 2.1 - */ -public class PhonesPerClient extends QueryRule { - - /** - * Metodo que agrega la direccion asociada a un telefono, cuando una consulta es requerida. - * @param pQueryRequest Objeto que posee la consulta requerida. - * @return pQueryRequest - * @throws Exception - */ - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - Query qry = new Query(); - qry.process(pQueryRequest); - List lobjects = (List) response.get("TCUSTPERSONPHONELOV"); - if (lobjects == null) { - return pQueryRequest; - } - for (Object obj : lobjects) { - TcustPersonPhone tcustPersonPhone = (TcustPersonPhone) obj; - if (tcustPersonPhone.getPk().getPersoncode() != null - && tcustPersonPhone.getAddressnumber() != null) { - TcustPersonAddress tcustPersonAddress = DataHelper.getInstance().getTcustPersonAddress(tcustPersonPhone.getPk().getPersoncode(), tcustPersonPhone.getAddressnumber()); - tcustPersonPhone.addAddtionalInfo("addressdesc", tcustPersonAddress.getAddress()); - } else { - tcustPersonPhone.addAddtionalInfo("addressdesc", null); - } - } - return pQueryRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/entries b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/entries deleted file mode 100644 index b3e72b0..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/rules/query/code -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -PercentageStockholder.java -file - - - - -2022-07-28T03:40:41.859799Z -eec19d6342c8151836c12949d7ebf8c5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1244 - -ValidationAddress.java -file - - - - -2022-07-28T03:40:41.859799Z -2a8c15992d4d2a67b72ed3cca69e1164 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4112 - -LovFinancialInstitutions.java -file - - - - -2022-07-28T03:40:41.859799Z -319b0c0dad4fb0c2dba8ceff514d68bc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2004 - -VerifyManagers.java -file - - - - -2022-07-28T03:40:41.859799Z -53eb64182dea080621ed25db1edb239d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3824 - -sbs -dir - -AddressSequence.java -file - - - - -2022-07-28T03:40:41.860799Z -769eb4d664a1b72fadfe3832580eb66c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1397 - diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/AddressSequence.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/AddressSequence.java.svn-base deleted file mode 100644 index 250f1cd..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/AddressSequence.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.person.rules.query.code; - -import java.math.BigDecimal; - -import javax.persistence.Query; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que se encarga de consultar la secuencia correspondiente al usuario - * - * @author scastillo - */ -public class AddressSequence extends QueryRule { - - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Integer personcode = null; - Object personcodeObj = qr.get("personcode"); - if (personcodeObj instanceof Integer) { - personcode = qr.getInteger("personcode"); - } else if (personcodeObj instanceof String) { - personcode = Integer.valueOf(qr.getString("personcode")); - } - Query qry = PersistenceHelper.getEntityManager().createQuery( - "select coalesce(max(tcpa.pk.addressnumber), 0) from TcustPersonAddress tcpa where tcpa.pk.personcode = :personcode"); - qry.setParameter("personcode", personcode); - Object test = qry.getSingleResult(); - Integer result = null; - if (test instanceof Integer) { - result = (Integer) test; - } else if (test instanceof BigDecimal) { - result = ((BigDecimal) test).intValueExact(); - } - qr.getResponse().put("result", test); - return qr; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/LovFinancialInstitutions.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/LovFinancialInstitutions.java.svn-base deleted file mode 100644 index df182ce..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/LovFinancialInstitutions.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.person.rules.query.code; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.Constant; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import javax.persistence.Query; - -/** - * Clase que realiza la consulta las instituciones financieras y enva los datos - * necesarios para el lov de Instituciones - * - * @author wpatio - */ -public class LovFinancialInstitutions extends QueryRule { - - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - Response response = qr.getResponse(); - QueryBean qb = (QueryBean) qr.get("TCUSTFINANCIALINSTITUTIONSLOV"); - Map mcriteria = new HashMap(); - StringBuilder jpql = new StringBuilder(); - jpql.append("select t.personcode,t.name from TcustPersonDetail t where t.personcode in (select f.personcode from TcustFinancialInstitutions f) and t.dateto = :dateto"); - GeneralQuery.addParameters(qb, jpql, mcriteria,true); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(String.valueOf(jpql)); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - GeneralQuery.setParameters(qb, mcriteria, qry); - List ldata = qry.getResultList(); - List> lresp = new ArrayList>(); - if ((ldata != null) && (!ldata.isEmpty())) { - for (Object obj[] : ldata) { - Map m = new HashMap(); - m.put("pk_personcode", obj[0]); - m.put("name", obj[1]); - lresp.add(m); - } - } else { - if(qb.getPage()==1){ - Map m = new HashMap(); - m.put("pk_personcode", null); - m.put("name", null); - lresp.add(m); - } - } - - response.put("TCUSTFINANCIALINSTITUTIONSLOV", lresp); - return qr; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/PercentageStockholder.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/PercentageStockholder.java.svn-base deleted file mode 100644 index 2f14c39..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/PercentageStockholder.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.person.rules.query.code; - -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.company.TcustCompanyManagers; -import java.math.BigDecimal; -import java.math.BigInteger; -import java.util.List; - -/** - * Clase que devuelve porcentaje de participacion de participacion de accionistas - * @author hinga - */ - -public class PercentageStockholder extends QueryRule { - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response= pQueryRequest.getResponse(); - Integer codPerson=(Integer) pQueryRequest.get("PERSONCODE"); - List tcustCompanyManagers= TcustCompanyManagers.find(PersistenceHelper.getEntityManager(), codPerson); - BigDecimal perc=new BigDecimal(0); - for(TcustCompanyManagers obj:tcustCompanyManagers){ - if(obj.getParticipation()!=null) - perc= perc.add(obj.getParticipation()); - } - response.put("PERCENTAGE", perc); - return pQueryRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/ValidationAddress.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/ValidationAddress.java.svn-base deleted file mode 100644 index acc1609..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/ValidationAddress.java.svn-base +++ /dev/null @@ -1,101 +0,0 @@ -package com.fp.person.rules.query.code; - -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que verifica si las direcciones se encuentran referenciadas en las tablas de TcustPeopleJob y - * TcustCompanyBranch - * - * @author JARIAS - * - */ -public class ValidationAddress extends QueryRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que consulta los datos de manera normal segun el query enviado - */ - @Override - public QueryRequest process(QueryRequest qr) throws Exception { - // TODO Auto-generated method stub - List result = null; - List resultBranch = null; - Integer personcode = null; - Object objpersoncode = qr.get("personcode"); - if (objpersoncode instanceof String) { - personcode = Integer.parseInt(objpersoncode.toString()); - } else if (objpersoncode instanceof String) { - personcode = (Integer) objpersoncode; - } - - Integer addressnumber = (Integer) qr.get("addressnumber"); - result = this.ValidateAddressJob(personcode, addressnumber); - resultBranch = this.ValidateAddressBranch(personcode, addressnumber); - if (((result != null) && (!result.isEmpty())) || ((resultBranch != null) && (!resultBranch.isEmpty()))) { - throw new GeneralException("CUST-0010", "NO SE PUEDE ELIMINAR LA DIRECCIN PORQUE SE ENCUENTRA ASOCIADA"); - } - return qr; - - } - - /** - * Metodo que consulta si la direccion esta refernciada en la tabla TcustPeopleJob - * - * @param personcode codigo de la persona duea de la direccion - * @param addressnumber codigo de la direccion a consultar - * @return numberAddress retorna el codigo de la direccion si esta refenciado si es igual a 0 no existe referencia - */ - private List ValidateAddressJob(Integer personcode, Integer addressnumber) throws Exception { - List numberAddress = new ArrayList(); - Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLJOB); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - qry.setParameter("addressnumber", addressnumber); - return numberAddress = qry.getResultList(); - - } - - /** - * Metodo que consulta si la direccion se encuentra referenciado en la tabla TcustCompanyBranch - * - * @param personcode codigo de la persona duea de la direccion - * @param addressnumber codigo de la direccion a consultar - * @return numberAddress la lista es diferente de null si existe referencia - * @throws Exception - */ - private List ValidateAddressBranch(Integer personcode, Integer addressnumber) throws Exception { - List addressBranch = new ArrayList(); - Query qry = PersistenceHelper.getEntityManager().createQuery(ValidationAddress.JPQLBRANCH); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - qry.setParameter("addressnumber", addressnumber); - return addressBranch = qry.getResultList(); - - } - - /** - * Sentecia para consulta en la TcustPeopleJob - */ - private static final String JPQLJOB = "select t.address from TcustPeopleJob t where t.pk.personcode=:personcode" - + " and t.pk.dateto=:dateto and t.address=:addressnumber"; - - /** - * Sentencia para consultar en la TcustCompanyBranch - */ - private static final String JPQLBRANCH = "select t.addressnumber from TcustCompanyBranch t where t.pk.personcode=:personcode " - + " and t.pk.dateto=:dateto and t.addressnumber=:addressnumber"; - -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/VerifyManagers.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/VerifyManagers.java.svn-base deleted file mode 100644 index d63c663..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/.svn/text-base/VerifyManagers.java.svn-base +++ /dev/null @@ -1,78 +0,0 @@ -package com.fp.person.rules.query.code; - -import com.fp.bpm.query.Query; -import com.fp.common.helper.CalculationBase; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.company.TcustCompanyManagers; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.gene.TgeneLabel; -import com.fp.persistence.pgeneral.gene.TgeneLabelKey; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -/** - * Clase que se va a encargar de verificar si los accionistas o directivos ya caducaron su fecha de expiracion - * - * @author scastillo - */ -public class VerifyManagers extends QueryRule { - - private static final String JPQL = "from TcustCompanyManagers t" - + " where t.pk.personcode = :personcode" - + " and t.pk.dateto = :dateto" - + " and t.expirationdate < :expirationdate"; - - /** - * Metodo que consulta los datos normalemente segn elq uery enviado - * - * @param pQueryRequest - * @return - * @throws Exception - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - Response response = pQueryRequest.getResponse(); - QueryBean queryBean = (QueryBean) pQueryRequest.get("TCUSTCOMPANYMANAGERS"); - List lqueryCriteria = queryBean.getCriteria(); - QueryCriteria queryCriteria = lqueryCriteria.get(0); - Integer personcode = new Integer(String.valueOf(queryCriteria.getValue())); - TgeneAccountingDateBranch tgadb = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch(pQueryRequest.getCompany(), 0); - APPDates workDate = new APPDates(tgadb.getWorkingdate(), CalculationBase.B365365); - javax.persistence.Query query = PersistenceHelper.getEntityManager().createQuery(String.valueOf(JPQL)); - query.setParameter("personcode", personcode); - query.setParameter("dateto", FormatDates.getDefaultExpiryTimestamp()); - query.setParameter("expirationdate", workDate.getDate()); - List ldata = query.getResultList(); - if (!ldata.isEmpty()) { - TgeneLabelKey tgeneLabelKey = new TgeneLabelKey("msg056", pQueryRequest.getLanguage(), pQueryRequest.getChannelCode()); - TgeneLabel tgeneLabel = TgeneLabel.find(PersistenceHelper.getEntityManager(), tgeneLabelKey); - String mensaje = tgeneLabel.getDescription()+":
      "; - int contador = 1; - for (TcustCompanyManagers tcustCompanyManagers : ldata) { - Integer personCodeManager = tcustCompanyManagers.getPk().getManagerpersoncode(); - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey(personCodeManager, FormatDates.getDefaultExpiryTimestamp()); - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), tcustPersonDetailKey); - String nombre = tcustPersonDetail.getName(); - mensaje += ""+contador+".- "+nombre+"
      "; - contador++; - } - contador--; - if(mensaje.compareTo(tgeneLabel.getDescription()+":
      ") != 0){ - response.put("mensaje", mensaje); - } - } - Query qry = new Query(); - qry.process(pQueryRequest); - return pQueryRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/entries b/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/entries deleted file mode 100644 index f4f1349..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EmployeeLov.java -file - - - - -2022-07-28T03:40:41.825799Z -daab6cafd6ac62a29303969dd205edf7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1423 - diff --git a/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/text-base/EmployeeLov.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/text-base/EmployeeLov.java.svn-base deleted file mode 100644 index 0de2191..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/query/code/sbs/.svn/text-base/EmployeeLov.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.person.rules.query.code.sbs; - -import java.util.List; - -import javax.persistence.Query; - -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.GeneralQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que se encarga de obtener una lista de empleados de la sbs. - * @author Jorge Vaca. - * @version 2.1 - */ -/** - * @author jorge - * - */ -public class EmployeeLov extends QueryRule { - - /** - * Version por default de la clase. - */ - private static final long serialVersionUID = 1L; - - - /* (non-Javadoc) - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - StringBuilder jpql = new StringBuilder(400); - jpql.append("select t.cod_emp, t.apellido, t.nombre, t.portal_user, t.num_cedula from vwempleados t where 1=1 "); - DtoQuery dto = pQueryRequest.getQueryTables().get("EMPLOYEESBS"); - GeneralQuery.addParametersJSF(jpql, dto); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(jpql.toString()); - GeneralQuery.setParametersNative(jpql, dto, qry); - List lemployee = qry.getResultList(); - pQueryRequest.getResponse().put("EMPLOYEESBS", lemployee); - return pQueryRequest; - } - -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/entries b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/entries deleted file mode 100644 index 1cccbcf..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/entries +++ /dev/null @@ -1,470 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/rules/save -svn://172.17.26.185/COMACO - - - -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LogoImage.java -file - - - - -2022-07-28T03:40:41.945800Z -6b446b1a2380d1942785f28d778b0506 -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5403 - -VerifyInConsep.java -file - - - - -2022-07-28T03:40:41.945800Z -941f1ed09e305bfebed294bf01e4dbb7 -2015-06-23T07:16:13.584450Z -4127 -cpiedra - - - - - - - - - - - - - - - - - - - - - -13021 - -FinancialSituation.java -file - - - - -2022-07-28T03:40:41.945800Z -dabf0adbd5c69f7dc2023fe8eac6c7dd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8675 - -CompleteHistoryActivity.java -file - - - - -2022-07-28T03:40:41.945800Z -e752041da35a492234a6e18988fe4561 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1525 - -CompletePersonAndCompany.java -file - - - - -2022-07-28T03:40:41.946800Z -f795c99f2d519865934e84bbdcd4cc4e -2015-08-03T04:11:30.569720Z -4244 -fpazmino - - - - - - - - - - - - - - - - - - - - - -12448 - -PersonImage.java -file - - - - -2022-07-28T03:40:41.946800Z -07d1ba90b62a65159f00c1bd1bfa022f -2015-06-23T07:16:13.584450Z -4127 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5164 - -CompleteCompanyCode.java -file - - - - -2022-07-28T03:40:41.946800Z -63858d084ac2c5768f05ac3393cbd5ee -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -20017 - -CompletePersonCode.java -file - - - - -2022-07-28T03:40:41.946800Z -dbb3b9db440973156dd021d3ca2470e5 -2015-08-03T04:11:30.569720Z -4244 -fpazmino - - - - - - - - - - - - - - - - - - - - - -19533 - -VerifyInConsepCompany.java -file - - - - -2022-07-28T03:40:41.947800Z -e317dafdc83d648509e674cf8319830b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4245 - -VerifyInConsepPerson.java -file - - - - -2022-07-28T03:40:41.947800Z -10145ba61e4f88859bd81adc1a5fbed2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3291 - -PersonBalanceFile.java -file - - - - -2022-07-28T03:40:41.947800Z -04ecdcfc8c4f7a477dc82a595e7d3638 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3830 - -ValidateAddressPhones.java -file - - - - -2022-07-28T03:40:41.947800Z -fd7d9313f92303bb64b69d6aa80d7632 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2740 - -JuridicalPerson.java -file - - - - -2022-07-28T03:40:41.948800Z -58a09d755f3a9f4ec2a3650bb24a3877 -2015-09-21T11:33:05.809667Z -4285 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5669 - diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteCompanyCode.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteCompanyCode.java.svn-base deleted file mode 100644 index 199e9fa..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteCompanyCode.java.svn-base +++ /dev/null @@ -1,402 +0,0 @@ -package com.fp.person.rules.save; - -import java.util.List; - -import com.fp.dto.Response; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pcustomer.balance.TcustPersonBalance; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyBranch; -import com.fp.persistence.pcustomer.company.TcustCompanyBranchKey; -import com.fp.persistence.pcustomer.company.TcustCompanyClient; -import com.fp.persistence.pcustomer.company.TcustCompanyClientKey; -import com.fp.persistence.pcustomer.company.TcustCompanyFinancial; -import com.fp.persistence.pcustomer.company.TcustCompanyFinancialKey; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pcustomer.company.TcustCompanyManagers; -import com.fp.persistence.pcustomer.company.TcustCompanyManagersKey; -import com.fp.persistence.pcustomer.company.TcustCompanyProducts; -import com.fp.persistence.pcustomer.company.TcustCompanyProductsKey; -import com.fp.persistence.pcustomer.company.TcustCompanyProvider; -import com.fp.persistence.pcustomer.company.TcustCompanyProviderKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.people.TcustPeopleAssociation; -import com.fp.persistence.pcustomer.people.TcustPeopleAssociationKey; -import com.fp.persistence.pcustomer.people.TcustPeopleFixedIncome; -import com.fp.persistence.pcustomer.people.TcustPeopleFixedIncomeKey; -import com.fp.persistence.pcustomer.people.TcustPeopleLoan; -import com.fp.persistence.pcustomer.people.TcustPeopleLoanKey; -import com.fp.persistence.pcustomer.people.TcustPeopleOtherAssets; -import com.fp.persistence.pcustomer.people.TcustPeopleOtherAssetsKey; -import com.fp.persistence.pcustomer.people.TcustPeopleRealAssets; -import com.fp.persistence.pcustomer.people.TcustPeopleRealAssetsKey; -import com.fp.persistence.pcustomer.people.TcustPeopleVehicle; -import com.fp.persistence.pcustomer.people.TcustPeopleVehicleKey; - -/** - * - * Clase se encarga de completar el codigo para una nueva persona juridica. - * - * @author Wilson Sigcho - * @version 2.1 - */ -public class CompleteCompanyCode extends CompletePersonAndCompany { - - /** - * Metodo que se encarga de completar el codigo de compania para su creacion cuando un save es requerido. - * - * @param pSaveRequest Objeto que posee el save requerido. - * @return SaveRequest - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - TcustPersonDetail tcustPersonDetail = (TcustPersonDetail) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONDETAIL"); - TcustCompany tcustCompany = (TcustCompany) pSaveRequest.getSaveBeanModifiedObject("TCUSTCOMPANY"); - TcustCompanyFinancial tcustCompanyFinancial = (TcustCompanyFinancial) pSaveRequest.getSaveBeanModifiedObject("TCUSTCOMPANYFINANCIAL"); -// TcustPersonBalance tcustPersonBalance = (TcustPersonBalance) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONBALANCE"); - SaveBean sbTcustPersonBalance = (SaveBean) pSaveRequest.get("com.fp.persistence.pcustomer.balance.TcustPersonBalance"); - TcustPersonBalance tcustPersonBalance=null; - if(sbTcustPersonBalance!=null) - tcustPersonBalance = (TcustPersonBalance) sbTcustPersonBalance.getModifiedObject(); - List tcustPersonAddress = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONADDRESS"); - List tcustPersonPhone = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPHONE"); - List bankreference = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONBANKREFERENCE"); - List personalreference = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPERSONALREFERENCE"); - List products = pSaveRequest.getSaveBeanModifiedRecords("TCUSTCOMPANYPRODUCTS"); - List managers = pSaveRequest.getSaveBeanModifiedRecords("TCUSTCOMPANYMANAGERS"); - List branch = pSaveRequest.getSaveBeanModifiedRecords("TCUSTCOMPANYBRANCH"); - List provider = pSaveRequest.getSaveBeanModifiedRecords("TCUSTCOMPANYPROVIDER"); - List client = pSaveRequest.getSaveBeanModifiedRecords("TCUSTCOMPANYCLIENT"); - List loan = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLELOAN"); - List vehicles = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEVEHICLE"); - List otherassets = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEOTHERASSETS"); - List realassets = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEREALASSETS"); - List fixedincome = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEFIXEDINCOME"); - List association = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEASSOCIATION"); - // List balancefinancial = pSaveRequest.getSaveBeanModifiedRecords("TCUSTBALANCEFINANCIAL"); - // List fileItem = (List) pSaveRequest.get("file"); - if ((tcustPersonDetail != null) && (tcustPersonDetail.getPk().getPersoncode() == null)) { - Integer personcode = this.getPersonCode(); - this.createPerson(pSaveRequest, personcode); - this.completePersonDetail(pSaveRequest, tcustPersonDetail, personcode); - this.completeCompany(tcustCompany, personcode,pSaveRequest); - this.completeFinancial(tcustCompanyFinancial, personcode); - this.completeAddress(tcustPersonAddress, personcode); - this.completePhone(tcustPersonPhone, personcode); - this.completeBankReference(bankreference, personcode); - this.completePersonalReference(personalreference, personcode); - this.completeProducts(products, personcode); - this.completeManagers(managers, personcode); - this.completeBranch(branch, personcode); - this.completeProvider(provider, personcode); - this.completeClient(client, personcode); - this.completeLoan(loan, personcode); - this.completeVehicles(vehicles, personcode); - this.completeOtherAssets(otherassets, personcode); - this.completeRealAssets(realassets, personcode); - this.completeFixedIncome(fixedincome, personcode); - this.completeAssociation(association, personcode); - this.completeBalance(tcustPersonBalance, personcode, pSaveRequest); - Response response = pSaveRequest.getResponse(); - response.put("personcode", personcode); - response.put("personname", tcustPersonDetail.getName()); - } - this.completeAditionalInfo(pSaveRequest, tcustPersonDetail); - this.balanceCode(tcustPersonBalance, pSaveRequest); - return pSaveRequest; - } - - /** - * Metodo que me permmite revertir el proceso. - * - * @param pSaveRequest Objeto que posee el save requerido. - * @return pSaveRequest - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Completa el codigo de la nueva persona juridica en la tabla TcustCompany. - * - * @param tcustCompany Objeto que posee el registro a guardar en la tabla TcustCompany. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeCompany(TcustCompany tcustCompany, Integer personcode,SaveRequest pSaverequest) throws Exception { - TcustCompanyKey tcustCompanyKey = new TcustCompanyKey(); - tcustCompanyKey.setPersoncode(personcode); - if(tcustCompany==null){ - TcustCompany tcusCompanyPros = new TcustCompany(); - tcusCompanyPros.setPk(tcustCompanyKey); - tcusCompanyPros.setIngressuser(pSaverequest.getUser()); - pSaverequest.getResponse().remove("TCUSTCOMPANY"); - pSaverequest.putSaveBean("TCUSTCOMPANY", tcusCompanyPros, 2); - - }else{ - tcustCompany.setPk(tcustCompanyKey); - tcustCompany.setIngressuser(pSaverequest.getUser()); - } - - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyManagers - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyManagers. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeManagers(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustCompanyManagers tcustCompanyManagers = (TcustCompanyManagers) object; - if ((tcustCompanyManagers != null) && (tcustCompanyManagers.getPk().getPersoncode() == null)) { - TcustCompanyManagersKey tcustCompanyManagersKey = tcustCompanyManagers.getPk(); - tcustCompanyManagersKey.setPersoncode(personcode); - tcustCompanyManagers.setPk(tcustCompanyManagersKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyBranch - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyBranch. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeBranch(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustCompanyBranch tcustCompanyBranch = (TcustCompanyBranch) object; - if ((tcustCompanyBranch != null) && (tcustCompanyBranch.getPk().getPersoncode() == null)) { - TcustCompanyBranchKey tcustCompanyBranchKey = new TcustCompanyBranchKey(); - tcustCompanyBranchKey.setPersoncode(personcode); - tcustCompanyBranchKey.setBranchsequence(tcustCompanyBranch.getPk().getBranchsequence()); - tcustCompanyBranch.setPk(tcustCompanyBranchKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyProducts - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyProducts. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeProducts(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustCompanyProducts tcustCompanyProducts = (TcustCompanyProducts) object; - if ((tcustCompanyProducts != null) && (tcustCompanyProducts.getPk().getPersoncode() == null)) { - TcustCompanyProductsKey tcustCompanyProductsKey = new TcustCompanyProductsKey(); - tcustCompanyProductsKey.setPersoncode(personcode); - tcustCompanyProductsKey.setProductsequence(tcustCompanyProducts.getPk().getProductsequence()); - tcustCompanyProducts.setPk(tcustCompanyProductsKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyProvider - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyProvider. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeProvider(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustCompanyProvider tcustCompanyProvider = (TcustCompanyProvider) object; - if ((tcustCompanyProvider != null) && (tcustCompanyProvider.getPk().getPersoncode() == null)) { - TcustCompanyProviderKey tcustCompanyProviderKey = new TcustCompanyProviderKey(); - tcustCompanyProviderKey.setPersoncode(personcode); - tcustCompanyProviderKey.setProvidersequence(tcustCompanyProvider.getPk().getProvidersequence()); - tcustCompanyProvider.setPk(tcustCompanyProviderKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyClient - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyClient. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeClient(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustCompanyClient tcustCompanyClient = (TcustCompanyClient) object; - if ((tcustCompanyClient != null) && (tcustCompanyClient.getPk().getPersoncode() == null)) { - TcustCompanyClientKey tcustCompanyClientKey = new TcustCompanyClientKey(); - tcustCompanyClientKey.setPersoncode(personcode); - tcustCompanyClientKey.setClientsequence(tcustCompanyClient.getPk().getClientsequence()); - tcustCompanyClient.setPk(tcustCompanyClientKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustCompanyFinancial - * - * @param lDetail Objeto que posee una lista de los registros a guardar en la tabla TcustCompanyFinancial. - * @param personcode Codigo de la nueva persona juridica a ser guardada. - * @throws Exception - */ - private void completeFinancial(TcustCompanyFinancial tcustCompanyFinancial, Integer personcode) throws Exception { - if ((tcustCompanyFinancial != null) && (tcustCompanyFinancial.getPk().getPersoncode() == null)) { - TcustCompanyFinancialKey tcustCompanyFinancialKey = new TcustCompanyFinancialKey(); - tcustCompanyFinancialKey.setPersoncode(personcode); - tcustCompanyFinancial.setPk(tcustCompanyFinancialKey); - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleLoan - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeLoan(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleLoan tcustPeopleLoan = (TcustPeopleLoan) object; - if ((tcustPeopleLoan != null) && (tcustPeopleLoan.getPk().getPersoncode() == null)) { - TcustPeopleLoanKey tcustPeopleLoanKey = new TcustPeopleLoanKey(); - tcustPeopleLoanKey.setPersoncode(personcode); - tcustPeopleLoanKey.setLoansequence(tcustPeopleLoan.getPk().getLoansequence()); - tcustPeopleLoan.setPk(tcustPeopleLoanKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleVehicle - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeVehicles(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleVehicle tcustPeopleVehicle = (TcustPeopleVehicle) object; - if ((tcustPeopleVehicle != null) && (tcustPeopleVehicle.getPk().getPersoncode() == null)) { - TcustPeopleVehicleKey tcustPeopleVehicleKey = new TcustPeopleVehicleKey(); - tcustPeopleVehicleKey.setPersoncode(personcode); - tcustPeopleVehicleKey.setVehiclesequence(tcustPeopleVehicle.getPk().getVehiclesequence()); - tcustPeopleVehicle.setPk(tcustPeopleVehicleKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleOtherAssets - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeOtherAssets(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleOtherAssets tcustPeopleOtherAssets = (TcustPeopleOtherAssets) object; - if ((tcustPeopleOtherAssets != null) && (tcustPeopleOtherAssets.getPk().getPersoncode() == null)) { - TcustPeopleOtherAssetsKey tcustPeopleOtherAssetsKey = new TcustPeopleOtherAssetsKey(); - tcustPeopleOtherAssetsKey.setPersoncode(personcode); - tcustPeopleOtherAssetsKey.setAssetssequence(tcustPeopleOtherAssets.getPk().getAssetssequence()); - tcustPeopleOtherAssets.setPk(tcustPeopleOtherAssetsKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleRealAssets - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeRealAssets(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleRealAssets tcustPeopleRealAssets = (TcustPeopleRealAssets) object; - if ((tcustPeopleRealAssets != null) && (tcustPeopleRealAssets.getPk().getPersoncode() == null)) { - TcustPeopleRealAssetsKey tcustPeopleRealAssetsKey = new TcustPeopleRealAssetsKey(); - tcustPeopleRealAssetsKey.setPersoncode(personcode); - tcustPeopleRealAssetsKey.setAssetssequence(tcustPeopleRealAssets.getPk().getAssetssequence()); - tcustPeopleRealAssets.setPk(tcustPeopleRealAssetsKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleFixedIncome - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeFixedIncome(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleFixedIncome tcustPeopleFixedIncome = (TcustPeopleFixedIncome) object; - if ((tcustPeopleFixedIncome != null) && (tcustPeopleFixedIncome.getPk().getPersoncode() == null)) { - TcustPeopleFixedIncomeKey tcustPeopleFixedIncomeKey = new TcustPeopleFixedIncomeKey(); - tcustPeopleFixedIncomeKey.setPersoncode(personcode); - tcustPeopleFixedIncomeKey.setFixedincomesequence(tcustPeopleFixedIncome.getPk().getFixedincomesequence()); - tcustPeopleFixedIncome.setPk(tcustPeopleFixedIncomeKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPeopleAssociation - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeAssociation(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleAssociation tcustPeopleAssociation = (TcustPeopleAssociation) object; - if ((tcustPeopleAssociation != null) && (tcustPeopleAssociation.getPk().getPersoncode() == null)) { - TcustPeopleAssociationKey tcustPeopleAssociationKey = new TcustPeopleAssociationKey(); - tcustPeopleAssociationKey.setPersoncode(personcode); - tcustPeopleAssociationKey.setAssociationsequence(tcustPeopleAssociation.getPk().getAssociationsequence()); - tcustPeopleAssociation.setPk(tcustPeopleAssociationKey); - } - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteHistoryActivity.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteHistoryActivity.java.svn-base deleted file mode 100644 index 3faf143..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompleteHistoryActivity.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.person.rules.save; - -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.gene.TgeneActivity; -import java.sql.Timestamp; -import java.util.List; - -/** - * Clase que se encarga de de incluir la fecha en que un registro fue modificado - * @author scastillo - */ -public class CompleteHistoryActivity extends CompletePersonAndCompany { - - /** - * Metodo que verifica si existe o no una fecha de modificacion - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - SaveBean test = (SaveBean) pSaveRequest.get("com.fp.persistence.pcustomer.gene.TgeneActivity"); - List data = test.getModifiedRecords(); - Timestamp modifyDate = FormatDates.getInstance().getDataBaseTimestamp(); - for (int i = 0; i < data.size(); i++) { - TgeneActivity tgeneActivity = (TgeneActivity) data.get(i); - tgeneActivity.setModifyuser(pSaveRequest.getUser()); - tgeneActivity.setModifydate(modifyDate); - } - return pSaveRequest; - } - - /** - * Metodo que se ejecuta en modo reverso - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - throw new UnsupportedOperationException("Not supported yet."); - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonAndCompany.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonAndCompany.java.svn-base deleted file mode 100644 index 866d761..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonAndCompany.java.svn-base +++ /dev/null @@ -1,272 +0,0 @@ -package com.fp.person.rules.save; - -import java.sql.Date; -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.dto.data.SaveData; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.balance.TcustBalance; -import com.fp.persistence.pcustomer.balance.TcustBalanceKey; -import com.fp.persistence.pcustomer.balance.TcustPersonBalance; -import com.fp.persistence.pcustomer.balance.TcustPersonBalanceKey; -import com.fp.persistence.pcustomer.gene.TcustPerson; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pcustomer.gene.TcustPersonBankReference; -import com.fp.persistence.pcustomer.gene.TcustPersonBankReferenceKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pcustomer.gene.TcustPersonPersonalReference; -import com.fp.persistence.pcustomer.gene.TcustPersonPersonalReferenceKey; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase padre que se encarga de completar el personcode cuando se crea una nueva persona: juridica o natural - * - * @author Wilson Sigcho - * @version 2.1 - */ -@SuppressWarnings("serial") -public abstract class CompletePersonAndCompany extends TransactionRule { - - /** - * Metodo que devuelve la secuencia que le pertenece a una nueva persona. - * - * @return Codigo de la nueva persona. - * @throws Exception - */ - protected Integer getPersonCode() throws Exception { - Sequence sequence = new Sequence(); - Integer personcode = Integer.valueOf(sequence.getNextValue("PERSONCODE").toString()); - SaveData.getMap().put("PERSONCODE", personcode.toString()); - return personcode; - } - - /** - * Metodo que devuelve el internalcode que le pertenece a una nueva persona. - * - * @return Codigo de la nueva persona. - * @throws Exception - */ - protected Integer getInternalCode() throws Exception { - Sequence sequence = new Sequence(); - Integer internalcode = Integer.valueOf(sequence.getNextValue("INTERNALCODE").toString()); - return internalcode; - } - - /** - * Metodo que crea un objeto de la clase TcustPerson - * - * @param saveRequest Objeto que posee el save requerido. - * @param personcode Codigo de la nueva persona. - * @throws Exception - */ - protected void createPerson(SaveRequest saveRequest, Integer personcode) throws Exception { - TcustPerson tcustPerson = new TcustPerson(); - tcustPerson.setPk(personcode); - EntityManager entityManager = PersistenceHelper.getEntityManager(); - entityManager.persist(tcustPerson); -// saveRequest.putSaveBean("TCUSTPERSON", tcustPerson, 1); - } - - /** - * Completa el codigo de la persona en la tabla TcustPersonDetail - * - * @param tcustPersonDetail Objeto que posee el registro a guardar en la tabla TcustPersonDetail. - * @param personcode Codigo de la nueva persona a ser guardada. - * @throws Exception - */ - protected void completePersonDetail(SaveRequest pSaveRequest, TcustPersonDetail tcustPersonDetail, Integer personcode) throws Exception { - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey(); - tcustPersonDetailKey.setPersoncode(personcode); - tcustPersonDetail.setPk(tcustPersonDetailKey); - } - - /** - * Metodo que completa informaci�n faltante - * - * @param pSaveRequest - * @param tcustPersonDetail - */ - protected void completeAditionalInfo(SaveRequest pSaveRequest, TcustPersonDetail tcustPersonDetail) { - if (tcustPersonDetail != null) { - if (tcustPersonDetail.getBranchcode() != null) { - return; - } - tcustPersonDetail.setCompanycode(pSaveRequest.getCompany()); - tcustPersonDetail.setBranchcode(pSaveRequest.getBranchCode()); - tcustPersonDetail.setOfficecode(pSaveRequest.getOfficeCode()); - tcustPersonDetail.setIngressuser(pSaveRequest.getUser()); - tcustPersonDetail.setRegisterdate((Date) pSaveRequest.get("accountingdate")); - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPersonAddress - * - * @param lDetail - * @param personcode - * @throws Exception - */ - protected void completeAddress(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPersonAddress tcustPersonAddress = (TcustPersonAddress) object; - if ((tcustPersonAddress != null) && (tcustPersonAddress.getPk().getPersoncode() == null)) { - TcustPersonAddressKey tcustPersonAddressKey = new TcustPersonAddressKey(); - tcustPersonAddressKey.setAddressnumber(tcustPersonAddress.getPk().getAddressnumber()); - tcustPersonAddressKey.setPersoncode(personcode); - tcustPersonAddress.setPk(tcustPersonAddressKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPersonPhone - * - * @param lDetail - * @param personcode - * @throws Exception - */ - protected void completePhone(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPersonPhone tcustPersonPhone = (TcustPersonPhone) object; - if ((tcustPersonPhone != null) && (tcustPersonPhone.getPk().getPersoncode() == null)) { - TcustPersonPhoneKey tcustPersonPhoneKey = new TcustPersonPhoneKey(); - tcustPersonPhoneKey.setPersoncode(personcode); - tcustPersonPhoneKey.setPhonesequence(tcustPersonPhone.getPk().getPhonesequence()); - tcustPersonPhone.setPk(tcustPersonPhoneKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPersonBankReference - * - * @param lDetail - * @param personcode - * @throws Exception - */ - protected void completeBankReference(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPersonBankReference tcustPersonBankReference = (TcustPersonBankReference) object; - if ((tcustPersonBankReference != null) && (tcustPersonBankReference.getPk().getPersoncode() == null)) { - TcustPersonBankReferenceKey tcustPersonBankReferenceKey = new TcustPersonBankReferenceKey(); - tcustPersonBankReferenceKey.setPersoncode(personcode); - tcustPersonBankReferenceKey.setReferencesequence(tcustPersonBankReference.getPk().getReferencesequence()); - tcustPersonBankReference.setPk(tcustPersonBankReferenceKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla TcustPersonPersonalReference - * - * @param lDetail - * @param personcode - * @throws Exception - */ - protected void completePersonalReference(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPersonPersonalReference tcustPersonPersonalReference = (TcustPersonPersonalReference) object; - if ((tcustPersonPersonalReference != null) && (tcustPersonPersonalReference.getPk().getPersoncode() == null)) { - TcustPersonPersonalReferenceKey tcustPersonPersonalReferenceKey = new TcustPersonPersonalReferenceKey(); - tcustPersonPersonalReferenceKey.setPersoncode(personcode); - tcustPersonPersonalReferenceKey.setReferencesequence(tcustPersonPersonalReference.getPk().getReferencesequence()); - tcustPersonPersonalReference.setPk(tcustPersonPersonalReferenceKey); - } - } - } - - /** - * Metodo que crea un objeto TcustBalance - * - * @param saveRequest Objeto que posee el save requerido. - * @param personcode Codigo de la persona. - * @param balancedate Fecha de balance de la nueva persona. - * @throws Exception - */ - protected void createBalance(Integer personcode, Date balancedate, SaveRequest saveRequest) throws Exception { - TcustBalanceKey tcustBalanceKey = new TcustBalanceKey(); - tcustBalanceKey.setPersoncode(personcode); - tcustBalanceKey.setBalancedate(balancedate); - TcustBalance tcustBalance = new TcustBalance(tcustBalanceKey); - PersistenceHelper.save(tcustBalance); -// saveRequest.putSaveBean("TCUSTBALANCE", tcustBalance, 1); - } - - /** - * - * @param tcustPersonBalance - * @param personcode - * @param saveRequest - * @throws Exception - */ - protected void completeBalance(TcustPersonBalance tcustPersonBalance, Integer personcode, SaveRequest saveRequest) throws Exception { - if (tcustPersonBalance == null) { - return; - } - if ((tcustPersonBalance != null) && (tcustPersonBalance.getPk().getPersoncode() == null)) { - TcustBalanceKey tcustBalanceKey = new TcustBalanceKey(personcode, tcustPersonBalance.getPk().getBalancedate()); - TcustBalance tcustBalance = TcustBalance.find(PersistenceHelper.getEntityManager(), tcustBalanceKey); - if (tcustBalance == null) { - this.createBalance(personcode, tcustPersonBalance.getPk().getBalancedate(), saveRequest); - } - TcustPersonBalanceKey tcustPersonBalanceKey = new TcustPersonBalanceKey(); - tcustPersonBalanceKey.setPersoncode(personcode); - tcustPersonBalanceKey.setBalancedate(tcustPersonBalance.getPk().getBalancedate()); - tcustPersonBalance.setPk(tcustPersonBalanceKey); - } - } - - /** - * Metodo que verifica el codigo de balance caso contrario lo crea - * - * @param personbalance Lista de objetos de TcustBalancePerson - * @param pSaveRequest Objeto SaveRequest - * @throws Exception - */ - protected void balanceCode(TcustPersonBalance tcustPersonBalance, SaveRequest pSaveRequest) throws Exception { - FinancialSituation financialSituation = new FinancialSituation(); - if (tcustPersonBalance == null) { - return; - } - TcustPersonBalanceKey tcustPersonBalanceKey = new TcustPersonBalanceKey(tcustPersonBalance.getPk().getPersoncode(), tcustPersonBalance - .getPk().getBalancedate(), tcustPersonBalance.getPk().getBalancecatalog(), tcustPersonBalance.getPk().getBalancecatalogcode(), - FormatDates.getDefaultExpiryTimestamp()); - TcustPersonBalance tcustPersonBalanceAux = TcustPersonBalance.find(PersistenceHelper.getEntityManager(), tcustPersonBalanceKey); - if ((tcustPersonBalanceAux != null) && (tcustPersonBalance.getPk().getDateto() == null) && (tcustPersonBalance.getDatefrom() == null) - && (tcustPersonBalance.getRecordversion() == null)) { - tcustPersonBalance.getPk().setDateto(FormatDates.getDefaultExpiryTimestamp()); - tcustPersonBalance.setRecordversion(tcustPersonBalanceAux.getRecordversion()); - } - TcustBalanceKey tcustBalanceKey = new TcustBalanceKey(tcustPersonBalance.getPk().getPersoncode(), tcustPersonBalance.getPk().getBalancedate()); - TcustBalance tcustBalance = TcustBalance.find(PersistenceHelper.getEntityManager(), tcustBalanceKey); - if (tcustBalance == null) { - this.createBalance(tcustPersonBalance.getPk().getPersoncode(), tcustPersonBalance.getPk().getBalancedate(), pSaveRequest); - } - // List listBalanceFinancial = - financialSituation.completeFinancialSituation(tcustPersonBalance, pSaveRequest); - // if (!listBalanceFinancial.isEmpty()) { - // pSaveRequest.putSaveBean("TCUSTBALANCEFINANCIAL", listBalanceFinancial, 5); - // } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonCode.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonCode.java.svn-base deleted file mode 100644 index d6b467b..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/CompletePersonCode.java.svn-base +++ /dev/null @@ -1,468 +0,0 @@ -package com.fp.person.rules.save; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.dto.Response; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.balance.TcustPersonBalance; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleAditionalData; -import com.fp.persistence.pcustomer.people.TcustPeopleAssociation; -import com.fp.persistence.pcustomer.people.TcustPeopleAssociationKey; -import com.fp.persistence.pcustomer.people.TcustPeopleExpenses; -import com.fp.persistence.pcustomer.people.TcustPeopleExpensesKey; -import com.fp.persistence.pcustomer.people.TcustPeopleFixedIncome; -import com.fp.persistence.pcustomer.people.TcustPeopleFixedIncomeKey; -import com.fp.persistence.pcustomer.people.TcustPeopleIncome; -import com.fp.persistence.pcustomer.people.TcustPeopleIncomeKey; -import com.fp.persistence.pcustomer.people.TcustPeopleJob; -import com.fp.persistence.pcustomer.people.TcustPeopleJobKey; -import com.fp.persistence.pcustomer.people.TcustPeopleKey; -import com.fp.persistence.pcustomer.people.TcustPeopleLoan; -import com.fp.persistence.pcustomer.people.TcustPeopleLoanKey; -import com.fp.persistence.pcustomer.people.TcustPeopleOtherAssets; -import com.fp.persistence.pcustomer.people.TcustPeopleOtherAssetsKey; -import com.fp.persistence.pcustomer.people.TcustPeopleRealAssets; -import com.fp.persistence.pcustomer.people.TcustPeopleRealAssetsKey; -import com.fp.persistence.pcustomer.people.TcustPeopleTradereferences; -import com.fp.persistence.pcustomer.people.TcustPeopleTradereferencesKey; -import com.fp.persistence.pcustomer.people.TcustPeopleVehicle; -import com.fp.persistence.pcustomer.people.TcustPeopleVehicleKey; -import com.fp.persistence.pgeneral.safe.TsafeUser; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetailKey; -import com.fp.person.validate.ValidateIdentification; - -/** - * Clase que se encarga de completar el personcode cuando se crea una nueva - * persona natural - * - * @author Santiago Castillo - * @version 2.1 - */ -public class CompletePersonCode extends CompletePersonAndCompany { - - /** - * Metodo que se encarga de completar el codigo de persona para su creacion - * cuando un save es requerido. - * - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - TcustPersonDetail tcustPersonDetail = (TcustPersonDetail) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONDETAIL"); - TcustPeople tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE"); - - if (tcustPersonDetail != null) { - switch (tcustPersonDetail.getIdentificationcatalog()) { - case "CED": - if (!ValidateIdentification.cedula(tcustPersonDetail.getIdentification())) { - throw new GeneralException("CUST-0013", "CDULA NO VLIDA"); - } - break; - case "RUC": - if (!ValidateIdentification.ruc(tcustPersonDetail.getIdentification())) { - throw new GeneralException("CUST-0014", "RUC NO VLIDO"); - } - break; - } - } - - //TcustPersonBalance tcustPersonBalance = (TcustPersonBalance) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONBALANCE"); - SaveBean sbTcustPersonBalance = (SaveBean) pSaveRequest.get("com.fp.persistence.pcustomer.balance.TcustPersonBalance"); - TcustPersonBalance tcustPersonBalance = null; - if (sbTcustPersonBalance != null) { - tcustPersonBalance = (TcustPersonBalance) sbTcustPersonBalance.getModifiedObject(); - } - Object aditionalData = pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLEADITIONALDATA"); - List tcustPersonAddress = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONADDRESS"); - if(tcustPersonAddress==null || tcustPersonAddress.size()==0){ - Object adress= pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONADDRESS"); - if(adress!=null){ - tcustPersonAddress.add(adress); - } - } - - List tcustPersonPhone = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPHONE"); - if(tcustPersonPhone==null || tcustPersonPhone.size()==0){ - Object phone= pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONPHONE"); - if(phone!=null){ - tcustPersonPhone.add(phone); - } - } - List income = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEINCOME"); - List expenses = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEEXPENSES"); - List job = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEJOB"); - List vehicles = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEVEHICLE"); - List otherassets = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEOTHERASSETS"); - List realassets = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEREALASSETS"); - List tradereferences = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLETRADEREFERENCES"); - List bankreference = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONBANKREFERENCE"); - List personalreference = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPERSONALREFERENCE"); - List loan = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLELOAN"); - List fixedincome = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEFIXEDINCOME"); - List association = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPEOPLEASSOCIATION"); - if ((tcustPersonDetail != null) && (tcustPersonDetail.getPk().getPersoncode() == null)) { - Integer personcode = this.getPersonCode(); - this.createPerson(pSaveRequest, personcode); - this.completePersonDetail(pSaveRequest, tcustPersonDetail, personcode); - if (tcustPeople != null) { - this.completePeople(pSaveRequest, tcustPeople, personcode); - } - this.completeAddress(tcustPersonAddress, personcode); - this.completePhone(tcustPersonPhone, personcode); - - this.completeVehicles(vehicles, personcode); - this.completeOtherAssets(otherassets, personcode); - this.completeRealAssets(realassets, personcode); - this.completeIncome(income, personcode); - this.completeExpenses(expenses, personcode); - this.completeJob(job, personcode); - this.completeTradeReferences(tradereferences, personcode); - this.completeBankReference(bankreference, personcode); - this.completePersonalReference(personalreference, personcode); - this.completeLoan(loan, personcode); - this.completeAditionalData(aditionalData, personcode); - this.completeFixedIncome(fixedincome, personcode); - this.completeAssociation(association, personcode); - this.completeBalance(tcustPersonBalance, personcode, pSaveRequest); - Response response = pSaveRequest.getResponse(); - response.put("personcode", personcode); - response.put("personname", tcustPersonDetail.getName()); - - // Creacion de usuario del sistema - EntityManager entityManager = PersistenceHelper.getEntityManager(); - - Integer internalcode = getInternalCode(); - TsafeUser userObj = new TsafeUser(); - userObj.setPk(tcustPersonDetail.getIdentification()); - userObj.setPersoncode(personcode); - userObj.setCompanycode(1); - userObj.setInternalcode(internalcode); - entityManager.persist(userObj); - - // Creacion de usuario DETALLE del sistema - TsafeUserDetailKey userDetailKeyObj = new TsafeUserDetailKey(); - userDetailKeyObj.setDateto(FormatDates.getDefaultExpiryTimestamp()); - userDetailKeyObj.setPersoncode(personcode); - userDetailKeyObj.setUsercode(tcustPersonDetail.getIdentification()); - TsafeUserDetail userDetailObj = new TsafeUserDetail(); - userDetailObj.setPk(userDetailKeyObj); - userDetailObj.setRecordversion(0); - userDetailObj.setDatefrom(new Timestamp(System.currentTimeMillis())); - userDetailObj.setUserstatuscatalog("ACT"); - userDetailObj.setUserstatuscatalogcode("USERSTATUS"); - userDetailObj.setCompanycode(1); - userDetailObj.setAreacode(1); - userDetailObj.setOfficecode(1); - userDetailObj.setBranchcode(1); - userDetailObj.setChannelcode("BRC"); - userDetailObj.setLanguagecode("ES"); - userDetailObj.setNickname(tcustPersonDetail.getIdentification()); - userDetailObj.setPassword("7c4a8d09ca3762af61e59520943dc26494f8941b"); - userDetailObj.setChangepassword("Y"); - userDetailObj.setIngressuser("ADMIN"); - userDetailObj.setActivateuser("ADMIN"); - userDetailObj.setIsuserbpm("Y"); - entityManager.persist(userDetailObj); - - } - this.completeAditionalInfo(pSaveRequest, tcustPersonDetail); - this.balanceCode(tcustPersonBalance, pSaveRequest); - - } catch (Exception e) { - return pSaveRequest; - } - return pSaveRequest; - } - - /** - * Metodo para reversos - * - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Completa el codigo de la persona en la tabla TcustPeople - * - * @param tcustPeople - * @param personcode - * @throws Exception - */ - private void completePeople(SaveRequest pSaverequest, TcustPeople tcustPeople, Integer personcode) throws Exception { - TcustPeopleKey tcustPeopleKey = new TcustPeopleKey(); - tcustPeopleKey.setPersoncode(personcode); - tcustPeople.setPk(tcustPeopleKey); - tcustPeople.setIngressusercode(pSaverequest.getUser()); - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * Tcustpeoplejob - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeJob(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleJob tcustPeopleJob = (TcustPeopleJob) object; - if ((tcustPeopleJob != null) && (tcustPeopleJob.getPk().getPersoncode() == null)) { - TcustPeopleJobKey tcustPeopleJobKey = new TcustPeopleJobKey(); - tcustPeopleJobKey.setPersoncode(personcode); - tcustPeopleJobKey.setJobsequence(tcustPeopleJob.getPk().getJobsequence()); - tcustPeopleJob.setPk(tcustPeopleJobKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleVehicle - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeVehicles(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleVehicle tcustPeopleVehicle = (TcustPeopleVehicle) object; - if ((tcustPeopleVehicle != null) && (tcustPeopleVehicle.getPk().getPersoncode() == null)) { - TcustPeopleVehicleKey tcustPeopleVehicleKey = new TcustPeopleVehicleKey(); - tcustPeopleVehicleKey.setPersoncode(personcode); - tcustPeopleVehicleKey.setVehiclesequence(tcustPeopleVehicle.getPk().getVehiclesequence()); - tcustPeopleVehicle.setPk(tcustPeopleVehicleKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleOtherAssets - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeOtherAssets(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleOtherAssets tcustPeopleOtherAssets = (TcustPeopleOtherAssets) object; - if ((tcustPeopleOtherAssets != null) && (tcustPeopleOtherAssets.getPk().getPersoncode() == null)) { - TcustPeopleOtherAssetsKey tcustPeopleOtherAssetsKey = new TcustPeopleOtherAssetsKey(); - tcustPeopleOtherAssetsKey.setPersoncode(personcode); - tcustPeopleOtherAssetsKey.setAssetssequence(tcustPeopleOtherAssets.getPk().getAssetssequence()); - tcustPeopleOtherAssets.setPk(tcustPeopleOtherAssetsKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleRealAssets - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeRealAssets(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleRealAssets tcustPeopleRealAssets = (TcustPeopleRealAssets) object; - if ((tcustPeopleRealAssets != null) && (tcustPeopleRealAssets.getPk().getPersoncode() == null)) { - TcustPeopleRealAssetsKey tcustPeopleRealAssetsKey = new TcustPeopleRealAssetsKey(); - tcustPeopleRealAssetsKey.setPersoncode(personcode); - tcustPeopleRealAssetsKey.setAssetssequence(tcustPeopleRealAssets.getPk().getAssetssequence()); - tcustPeopleRealAssets.setPk(tcustPeopleRealAssetsKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleTradeReferences - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeTradeReferences(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleTradereferences tcustPeopleTradereferences = (TcustPeopleTradereferences) object; - if ((tcustPeopleTradereferences != null) && (tcustPeopleTradereferences.getPk().getPersoncode() == null)) { - TcustPeopleTradereferencesKey tcustPeopleTradereferencesKey = new TcustPeopleTradereferencesKey(); - tcustPeopleTradereferencesKey.setPersoncode(personcode); - tcustPeopleTradereferencesKey.setTradesequence(tcustPeopleTradereferences.getPk().getTradesequence()); - tcustPeopleTradereferences.setPk(tcustPeopleTradereferencesKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleIncome - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeIncome(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleIncome tcustPeopleIncome = (TcustPeopleIncome) object; - if ((tcustPeopleIncome != null) && (tcustPeopleIncome.getPk().getPersoncode() == null)) { - TcustPeopleIncomeKey tcustPeopleIncomeKey = new TcustPeopleIncomeKey(); - tcustPeopleIncomeKey.setPersoncode(personcode); - tcustPeopleIncomeKey.setIncomesequence(tcustPeopleIncome.getPk().getIncomesequence()); - tcustPeopleIncome.setPk(tcustPeopleIncomeKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleExpenses - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeExpenses(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleExpenses tcustPeopleExpenses = (TcustPeopleExpenses) object; - if ((tcustPeopleExpenses != null) && (tcustPeopleExpenses.getPk().getPersoncode() == null)) { - TcustPeopleExpensesKey tcustPeopleExpensesKey = new TcustPeopleExpensesKey(); - tcustPeopleExpensesKey.setPersoncode(personcode); - tcustPeopleExpensesKey.setExpensesequence(tcustPeopleExpenses.getPk().getExpensesequence()); - tcustPeopleExpenses.setPk(tcustPeopleExpensesKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleLoan - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeLoan(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleLoan tcustPeopleLoan = (TcustPeopleLoan) object; - if ((tcustPeopleLoan != null) && (tcustPeopleLoan.getPk().getPersoncode() == null)) { - TcustPeopleLoanKey tcustPeopleLoanKey = new TcustPeopleLoanKey(); - tcustPeopleLoanKey.setPersoncode(personcode); - tcustPeopleLoanKey.setLoansequence(tcustPeopleLoan.getPk().getLoansequence()); - tcustPeopleLoan.setPk(tcustPeopleLoanKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleAditionalData - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeAditionalData(Object lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - TcustPeopleAditionalData tcustPeopleAditionalData = (TcustPeopleAditionalData) lDetail; - if ((tcustPeopleAditionalData != null) && (tcustPeopleAditionalData.getPk().getPersoncode() == null)) { - tcustPeopleAditionalData.getPk().setPersoncode(personcode); - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleFixedIncome - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeFixedIncome(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleFixedIncome tcustPeopleFixedIncome = (TcustPeopleFixedIncome) object; - if ((tcustPeopleFixedIncome != null) && (tcustPeopleFixedIncome.getPk().getPersoncode() == null)) { - TcustPeopleFixedIncomeKey tcustPeopleFixedIncomeKey = new TcustPeopleFixedIncomeKey(); - tcustPeopleFixedIncomeKey.setPersoncode(personcode); - tcustPeopleFixedIncomeKey.setFixedincomesequence(tcustPeopleFixedIncome.getPk().getFixedincomesequence()); - tcustPeopleFixedIncome.setPk(tcustPeopleFixedIncomeKey); - } - } - } - - /** - * Metodo que se encarga de completar el personcode en la tabla - * TcustPeopleAssociation - * - * @param lDetail - * @param personcode - * @throws Exception - */ - private void completeAssociation(List lDetail, Integer personcode) throws Exception { - if (lDetail == null) { - return; - } - for (Object object : lDetail) { - TcustPeopleAssociation tcustPeopleAssociation = (TcustPeopleAssociation) object; - if ((tcustPeopleAssociation != null) && (tcustPeopleAssociation.getPk().getPersoncode() == null)) { - TcustPeopleAssociationKey tcustPeopleAssociationKey = new TcustPeopleAssociationKey(); - tcustPeopleAssociationKey.setPersoncode(personcode); - tcustPeopleAssociationKey.setAssociationsequence(tcustPeopleAssociation.getPk().getAssociationsequence()); - tcustPeopleAssociation.setPk(tcustPeopleAssociationKey); - } - } - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/FinancialSituation.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/FinancialSituation.java.svn-base deleted file mode 100644 index 64828e4..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/FinancialSituation.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -package com.fp.person.rules.save; - -import java.math.BigDecimal; -import java.sql.Date; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.save.SaveRequest; -import com.fp.excel.ExcelToMap; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.balance.TcustBalanceAccount; -import com.fp.persistence.pcustomer.balance.TcustBalanceFinancial; -import com.fp.persistence.pcustomer.balance.TcustBalanceFinancialKey; -import com.fp.persistence.pcustomer.balance.TcustPersonBalance; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; - -/** - * Clase que graba la data recibida de Excel en la tabla TcustBalanceFinancial - * - * @author BPTWPA - */ -public class FinancialSituation { - - /** - * M�todo que graba en la base de datos las cuentas del balance subido en excel - * - * @param tcustPersonBalance Objeto TcustPersonBalance - * @param excelMap Mapa obtenido del archivo de excel - * @throws Exception - */ - // public List completeFinancialSituation(TcustPersonBalance tcustPersonBalance, SaveRequest - // pSaveRequest) throws Exception { - public void completeFinancialSituation(TcustPersonBalance tcustPersonBalance, SaveRequest pSaveRequest) throws Exception { - // List lTcustBalanceFinancial = new ArrayList(); - boolean isNew= (Boolean) pSaveRequest.get("nuevo"); - Map mapExcel; - if (tcustPersonBalance == null) { - return;// lTcustBalanceFinancial; - } - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(tcustPersonBalance.getCode(), FormatDates.getDefaultExpiryTimestamp()); - TgeneFilesDetail tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), tgeneFilesDetailKey); - if (tgeneFilesDetail == null) { - return;// lTcustBalanceFinancial; - } - if (tgeneFilesDetail.getExtension().equals("xls") || tgeneFilesDetail.getExtension().equals("xlsx")) { - APPLogger.getLogger().error("2"); - ExcelToMap excelMap = new ExcelToMap(tgeneFilesDetail.getImage(), tgeneFilesDetail.getExtension()); - mapExcel = excelMap.getExcelMap(); - APPLogger.getLogger().error("3"); - if ((mapExcel == null) || mapExcel.isEmpty()) { - throw new GeneralException("CUST-0009","ARCHIVO NO CUMPLE CON FORMATO REQUERIDO"); - } - APPLogger.getLogger().error("3.1"); - - if(!isNew) - this.update(tcustPersonBalance.getPk().getPersoncode(), tcustPersonBalance.getPk().getBalancedate(), tcustPersonBalance.getPk() - .getBalancecatalog(), tcustPersonBalance.getPk().getBalancecatalogcode()); - if (tcustPersonBalance.getPk().getBalancecatalog().compareTo("BG") == 0) { - APPLogger.getLogger().error("3.2"); - Integer rows = mapExcel.size() / 4; - if (!String.valueOf(mapExcel.get("1:0")).equals("") ||!String.valueOf(mapExcel.get("0:1")).equals("ACTIVOS")) { - throw new GeneralException("CUST-0004", "El ARCHIVO NO ES EL CORRECTO - BG"); - } - APPLogger.getLogger().error("3.3"); - for (int i = 1; i <= rows; i++) { - TcustBalanceFinancial tcustBalanceFinancial = new TcustBalanceFinancial(); - String parameter = i + ":3"; - if (mapExcel.containsKey(parameter)) { - TcustBalanceAccount tcustBalanceAccount = TcustBalanceAccount.findPerParameter(PersistenceHelper.getEntityManager(), - parameter); - if (tcustBalanceAccount != null) { - Object value = mapExcel.get(parameter); - TcustBalanceFinancialKey tcustBalanceFinancialKey = new TcustBalanceFinancialKey(); - tcustBalanceFinancialKey.setPersoncode(tcustPersonBalance.getPk().getPersoncode()); - tcustBalanceFinancialKey.setBalancedate(tcustPersonBalance.getPk().getBalancedate()); - tcustBalanceFinancialKey.setBalancecatalog(tcustPersonBalance.getPk().getBalancecatalog()); - tcustBalanceFinancialKey.setBalancecatalogcode(tcustPersonBalance.getPk().getBalancecatalogcode()); - tcustBalanceFinancialKey.setDateto(FormatDates.getDefaultExpiryTimestamp()); - tcustBalanceFinancialKey.setAccountcode(tcustBalanceAccount.getPk().getAccountcode()); - tcustBalanceFinancial.setPk(tcustBalanceFinancialKey); - tcustBalanceFinancial.setValueaccount(new BigDecimal(value.getClass().getSimpleName().equals("BigDecimal") ? String - .valueOf(value) : "0")); - tcustBalanceFinancial.setIngressuser(pSaveRequest.getUser()); - PersistenceHelper.save(tcustBalanceFinancial); - // lTcustBalanceFinancial.add(tcustBalanceFinancial); - - } - } - } - APPLogger.getLogger().error("3.2"); - } else { - APPLogger.getLogger().error("3.4"); - Integer rows = mapExcel.size() / 3; - if (String.valueOf(mapExcel.get("1:0")).equals("") ||!String.valueOf(mapExcel.get("0:1")).equals("Nombre de la Cuenta")) { - throw new GeneralException("CUST-0005", "El ARCHIVO NO ES EL CORRECTO - BG(IFIS)"); - } - for (int i = 1; i <= rows; i++) { - TcustBalanceFinancial tcustBalanceFinancial = new TcustBalanceFinancial(); - String keyCode = i + ":0"; - String keyValue = i + ":2"; - if (mapExcel.containsKey(keyCode) && mapExcel.containsKey(keyValue)) { - Object code = mapExcel.get(keyCode); - Object value = mapExcel.get(keyValue); - TcustBalanceFinancialKey tcustBalanceFinancialKey = new TcustBalanceFinancialKey(); - tcustBalanceFinancialKey.setPersoncode(tcustPersonBalance.getPk().getPersoncode()); - tcustBalanceFinancialKey.setBalancedate(tcustPersonBalance.getPk().getBalancedate()); - tcustBalanceFinancialKey.setBalancecatalog(tcustPersonBalance.getPk().getBalancecatalog()); - tcustBalanceFinancialKey.setBalancecatalogcode(tcustPersonBalance.getPk().getBalancecatalogcode()); - tcustBalanceFinancialKey.setDateto(FormatDates.getDefaultExpiryTimestamp()); - tcustBalanceFinancialKey.setAccountcode(String.valueOf(code)); - tcustBalanceFinancial.setPk(tcustBalanceFinancialKey); - tcustBalanceFinancial.setValueaccount(new BigDecimal(value.getClass().getSimpleName().equals("BigDecimal") ? String - .valueOf(value) : "0")); - tcustBalanceFinancial.setIngressuser(pSaveRequest.getUser()); - PersistenceHelper.save(tcustBalanceFinancial); - // lTcustBalanceFinancial.add(tcustBalanceFinancial); - } - } - APPLogger.getLogger().error("3.5"); - } - } else { - throw new GeneralException("CUST-0006", "EXTENSIN INCORRECTA DEL ARCHIVO"); - } - APPLogger.getLogger().error("4"); - // return lTcustBalanceFinancial; - } - - private void update(Integer pPerson, Date pDate, String pCatalog, String pCatalogCode) throws Exception { - String sql = "update TCUSTBALANCEFINANCIAL set dateto=:dateto where PERSONCODE=:PERSON and BALANCEDATE=:date" - + " and BALANCECATALOG=:TYPE and BALANCECATALOGCODE=:TYPECODE and dateto=:vig"; - Query q = PersistenceHelper.createNativeQuery(sql); - q.setParameter("dateto", FormatDates.getInstance().getDataBaseTimestamp()); - q.setParameter("PERSON", pPerson); - q.setParameter("date", pDate); - q.setParameter("TYPE", pCatalog); - q.setParameter("TYPECODE", pCatalogCode); - q.setParameter("vig", FormatDates.getDefaultExpiryTimestamp()); - q.executeUpdate(); - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/JuridicalPerson.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/JuridicalPerson.java.svn-base deleted file mode 100644 index 2f56e04..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/JuridicalPerson.java.svn-base +++ /dev/null @@ -1,137 +0,0 @@ -package com.fp.person.rules.save; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import org.joda.time.DateTime; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pcustomer.gene.TcustPerson; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey; -import com.fp.sessionbeans.helper.Sequence; - -public class JuridicalPerson extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - try { - TcustPersonDetail detallesPersona=(TcustPersonDetail)pSaveRequest.get("PERSON"); - TcustCompany company=(TcustCompany)pSaveRequest.get("COMPANY"); - List direcciones=(List)pSaveRequest.get("ADDRESSES"); - List telefonos=(List)pSaveRequest.get("PHONES"); - - //Persistiendo el TCUSTPERSON - TcustPersonDetailKey pkDetallesPersona=new TcustPersonDetailKey(); - - Calendar calendarioDateto=Calendar.getInstance(); - calendarioDateto.set(Calendar.YEAR, 2999); - calendarioDateto.set(Calendar.MONTH, Calendar.DECEMBER); - calendarioDateto.set(Calendar.DAY_OF_MONTH,31); - calendarioDateto.set(Calendar.MILLISECOND, 0); - calendarioDateto.set(Calendar.SECOND, 0); - calendarioDateto.set(Calendar.MINUTE, 0); - calendarioDateto.set(Calendar.HOUR, 0); - - //Caso en que la persona es nueva - if(detallesPersona.isnew && (detallesPersona.getPk()==null || detallesPersona.getPk().getPersoncode()==null)){ - Sequence sequence = new Sequence(); - Integer personcode=Integer.valueOf(sequence.getNextValue("PERSONCODE").toString()); - TcustPerson persona=new TcustPerson(); - if(personcode!=null){ - persona.setPk(personcode); - pkDetallesPersona.setPersoncode(personcode); - //PersistenceHelper.getEntityManager().persist(persona); - } - - pkDetallesPersona.setDateto(FormatDates.getDefaultExpiryTimestamp()); - detallesPersona.setPk(pkDetallesPersona); - }else{ - pkDetallesPersona=detallesPersona.getPk(); - } - - //Persistiendo el TCUSTPERSONDETAIL - if(!detallesPersona.isnew){ - detallesPersona=(TcustPersonDetail)PersistenceHelper.getEntityManager().merge(detallesPersona); - } - //PersistenceHelper.getEntityManager().persist(detallesPersona); - - //Persistiendo el TCUSTCOMPANY - //Caso en que la compannia es nueva - // if(company.isnew && (company.getPk()==null || company.getPk().getPersoncode()==null)){ - TcustCompanyKey pkJuridica=new TcustCompanyKey(); - // pkJuridica.setDateto(new Timestamp(calendarioDateto.getTimeInMillis())); - pkJuridica.setDateto(FormatDates.getDefaultExpiryTimestamp()); - pkJuridica.setPersoncode(pkDetallesPersona.getPersoncode()); - company.setPk(pkJuridica); - // } - -/* if(!company.isnew){ - company=(TcustCompany)PersistenceHelper.getEntityManager().merge(company); - }*/ - // PersistenceHelper.getEntityManager().persist(company); - - //Persistiendo las direcciones - for (TcustPersonAddress direccion : direcciones) { - if(direccion.getPk()!=null && direccion.getPk().getAddressnumber()!=null && direccion.getPk().getPersoncode()!=null && direccion.getPk().getDateto()!=null){ - direccion=PersistenceHelper.getEntityManager().merge(direccion); - //PersistenceHelper.getEntityManager().persist(direccion); - }else{ - TcustPersonAddressKey pkDireccion=new TcustPersonAddressKey(); - pkDireccion.setPersoncode(pkDetallesPersona.getPersoncode()); - pkDireccion.setDateto(FormatDates.getDefaultExpiryTimestamp()); - - direccion.setPk(pkDireccion); - direccion.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis())); - PersistenceHelper.getEntityManager().persist(direccion); - } - } - - //Persistiendo los telefonos - for (TcustPersonPhone telefono : telefonos) { - if(telefono.getPk()!=null && telefono.getPk().getPersoncode()!=null){ - telefono=PersistenceHelper.getEntityManager().merge(telefono); - //PersistenceHelper.getEntityManager().persist(telefono); - }else{ - TcustPersonPhoneKey pkTelefono=new TcustPersonPhoneKey(); - pkTelefono.setPersoncode(pkDetallesPersona.getPersoncode()); - pkTelefono.setDateto(FormatDates.getDefaultExpiryTimestamp()); - - telefono.setPk(pkTelefono); - telefono.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis())); - PersistenceHelper.getEntityManager().persist(telefono); - } - } - - // PersistenceHelper.getEntityManager().flush(); - - } catch (Exception e) { - return pSaveRequest; - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest arg0) throws Exception { - - return arg0; - } - - - -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/LogoImage.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/LogoImage.java.svn-base deleted file mode 100644 index b21c3a0..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/LogoImage.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.person.rules.save; - -import com.fp.dto.helper.FileHelper; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import java.sql.Timestamp; -import java.util.List; - -/** - * Clase que se encarga de agregar o modificar los logos de una empresa - * - * @author scastillo - */ -public class LogoImage extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que genera el numero de sequencia de imagenes para el logo de - * empresas - * - * @param sr - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest sr) throws Exception { - Integer personcode = (Integer) sr.get("pk_personcode"); - Integer logocode = (Integer) sr.get("logocode"); - List fileItem = (List) sr.get("file"); - if (fileItem!=null && !fileItem.isEmpty() && fileItem.size() == 1) { - if(fileItem.get(0).getExtension() != null){ - if (fileItem.get(0).getExtension().toLowerCase().compareTo("jpg") == 0 - || fileItem.get(0).getExtension().toLowerCase().compareTo("gif") == 0 - || fileItem.get(0).getExtension().toLowerCase().compareTo("png") == 0) { - int contador = 1; - if (logocode == null) { - logocode = PersonImage.getFileCode(); - TgeneFiles tgeneFiles = new TgeneFiles(); - tgeneFiles.setPk(logocode); - sr.putSaveBean("TGENEFILES", tgeneFiles, (contador++)); - } - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(); - tgeneFilesDetailKey.setCode(logocode); - Timestamp fechaactual = FormatDates.getInstance().getDataBaseTimestamp(); - TgeneFilesDetail tgeneFilesDetail = TgeneFilesDetail.find( - PersistenceHelper.getEntityManager(), - tgeneFilesDetailKey); - if (tgeneFilesDetail == null) { - tgeneFilesDetail = new TgeneFilesDetail(); - tgeneFilesDetail.setPk(tgeneFilesDetailKey); - tgeneFilesDetail.setImage(fileItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.get(0).getSize()))); - tgeneFilesDetail.setIngressuser(sr.getUser()); - tgeneFilesDetail.setExtension(fileItem.get(0).getExtension()); - tgeneFilesDetail.setContenttype(fileItem.get(0).getContentType()); - tgeneFilesDetail.setName(fileItem.get(0).getName()); - } else { - tgeneFilesDetail.setImage(fileItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.get(0).getSize()))); - tgeneFilesDetail.setDatefrom(fechaactual); - tgeneFilesDetail.setModifyuser(sr.getUser()); - tgeneFilesDetail.setContenttype(fileItem.get(0).getContentType()); - tgeneFilesDetail.setName(fileItem.get(0).getName()); - PersistenceHelper.getEntityManager().detach( - tgeneFilesDetail); - } - sr.putSaveBean("TGENEFILESDETAIL", tgeneFilesDetail, - (contador++)); - TcustCompanyKey tcustCompanyKey = new TcustCompanyKey(); - tcustCompanyKey.setPersoncode(personcode); - tcustCompanyKey.setDateto(FormatDates.getDefaultExpiryTimestamp()); - TcustCompany tcustCompany = TcustCompany.find( - PersistenceHelper.getEntityManager(), tcustCompanyKey); - tcustCompany.setModifyuser(sr.getUser()); - tcustCompany.setPicture(fileItem.get(0).getImage()); - tcustCompany.setLogo(logocode); - tcustCompany.setDatefrom(fechaactual); - PersistenceHelper.getEntityManager().detach(tcustCompany); - sr.putSaveBean("TCUSTCOMPANY", tcustCompany, (contador++)); - } else { - throw new GeneralException("CUST-0007", "Los tipos de archivos permitidos son jpg, gif y png"); - } - } - } - sr.getResponse().put("codes", "[" + logocode + "]"); - return sr; - } - - @Override - public SaveRequest reverseProcess(SaveRequest sr) throws Exception { - return sr; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonBalanceFile.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonBalanceFile.java.svn-base deleted file mode 100644 index d6be719..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonBalanceFile.java.svn-base +++ /dev/null @@ -1,79 +0,0 @@ -package com.fp.person.rules.save; - -import java.util.List; - -import javax.persistence.EntityManager; - -import com.fp.dto.helper.FileHelper; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; - -/** - * Clase que se encarga de guardar los datos de la situacin financiera de - * personas y subir un archive a la DB - * - * @author BPTWPA - */ -public class PersonBalanceFile extends TransactionRule { - - /** - * Mtodo que recibe datos para registrar la informacion en la DB - * - * @param pSaveRequest Recibe un objeto SaveRequest - * @return pSaveRequest Retorna un objeto SaveRequest - * @throws Exception - */ - @SuppressWarnings("unchecked") - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String balancefile = (String) pSaveRequest.get("balancefile"); - List fileItem = (List) pSaveRequest.get("file"); - if (fileItem == null || balancefile == null || fileItem.isEmpty()) { - return pSaveRequest; - } - if (balancefile != null && balancefile.compareTo("excelfile") == 0) { - Integer filecode = PersonImage.getFileCode(); - TgeneFiles tgeneFiles = TgeneFiles.find(PersistenceHelper.getEntityManager(), filecode); - if (tgeneFiles == null) { - tgeneFiles = new TgeneFiles(filecode); - pSaveRequest.putSaveBean("TGENEFILES", tgeneFiles, 1); - } - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(filecode, FormatDates.getDefaultExpiryTimestamp()); - TgeneFilesDetail tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(), tgeneFilesDetailKey); - if (tgeneFilesDetail == null) { - tgeneFilesDetail = new TgeneFilesDetail(); - tgeneFilesDetail.setPk(tgeneFilesDetailKey); - tgeneFilesDetail.setImage(fileItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.get(0).getSize()))); - tgeneFilesDetail.setIngressuser(pSaveRequest.getUser()); - tgeneFilesDetail.setExtension(fileItem.get(0).getExtension()); - tgeneFilesDetail.setContenttype(fileItem.get(0).getContentType()); - tgeneFilesDetail.setName(fileItem.get(0).getName()); - } else { - tgeneFilesDetail.setImage(fileItem.get(0).getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.get(0).getSize()))); - tgeneFilesDetail.setDatefrom(FormatDates.getInstance().getDataBaseTimestamp()); - tgeneFilesDetail.setModifyuser(pSaveRequest.getUser()); - tgeneFilesDetail.setContenttype(fileItem.get(0).getContentType()); - tgeneFilesDetail.setName(fileItem.get(0).getName()); - EntityManager em = PersistenceHelper.getEntityManager(); - em.detach(tgeneFilesDetail); - } - pSaveRequest.putSaveBean("TGENEFILESDETAIL", tgeneFilesDetail, 2); - pSaveRequest.getResponse().put("codes", "[" + filecode + "]"); - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonImage.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonImage.java.svn-base deleted file mode 100644 index 82ecf26..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/PersonImage.java.svn-base +++ /dev/null @@ -1,137 +0,0 @@ -package com.fp.person.rules.save; - -import java.util.List; - -import com.fp.dto.helper.FileHelper; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleKey; -import com.fp.persistence.pgeneral.image.TgeneFiles; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetailKey; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de subir a la BDD la imagen y asociar la foto y firma - * del cliente - * - * @author scastillo - */ -public class PersonImage extends TransactionRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que agrega una imagen en la base de datos - * - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Integer personcode = (Integer) pSaveRequest.get("pk_personcode"); - Integer photocode = (Integer) pSaveRequest.get("photocode"); - Integer signaturecode = (Integer) pSaveRequest.get("signaturecode"); - List fileItem = (List) pSaveRequest.get("file"); - if (fileItem.isEmpty() || fileItem.size() != 2) { - return pSaveRequest; - } - TcustPeople tcustPeople=null; - //TcustPeopleKey tcustPeopleKey = new TcustPeopleKey(personcode,FormatDates.getDefaultExpiryTimestamp()); - tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE"); - if(tcustPeople==null){ - TcustPeopleKey tcustPeopleKey = new TcustPeopleKey(personcode,FormatDates.getDefaultExpiryTimestamp()); - tcustPeople = TcustPeople.find(PersistenceHelper.getEntityManager(), tcustPeopleKey); - } - photocode = this.buildImageCode(photocode, fileItem.get(0),pSaveRequest); - signaturecode = this.buildImageCode(signaturecode, fileItem.get(1), pSaveRequest); - if (tcustPeople!=null && tcustPeople.getPhotocode() == null && photocode != null) { - tcustPeople.setPhotocode(photocode); - tcustPeople.setModifyusercode(pSaveRequest.getUser()); - } - if (tcustPeople!=null && tcustPeople.getSignaturecode() == null && signaturecode != null) { - tcustPeople.setSignaturecode(signaturecode); - tcustPeople.setModifyusercode(pSaveRequest.getUser()); - } - - pSaveRequest.getResponse().put("codes", "["+ photocode + "," + signaturecode + "]"); - return pSaveRequest; - } - - /** - * Metodo que se ejecuta en modo reverso - * - * @param pSaveRequest - * @return - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) - throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia que le pertenece a una nueva imagen. - * - * @return Codigo de la nueva persona. - * @throws Exception - */ - public static Integer getFileCode() throws Exception { - Sequence sequence = new Sequence(); - return Integer.valueOf(sequence.getNextValue("FILECODE").toString()); - } - - /** - * Metodo que se encarga de construir la imagen - * - * @param photocode - * @param fileItem - * @param saveRequest - * @throws Exception - */ - private Integer buildImageCode(Integer photocode, FileHelper fileItem, - SaveRequest saveRequest) throws Exception { - if (!fileItem.getName().equals("")) { - if (fileItem.getExtension().toLowerCase().compareTo("jpg") == 0 - || fileItem.getExtension().toLowerCase().compareTo("gif") == 0 - || fileItem.getExtension().toLowerCase().compareTo("png") == 0) { - if (photocode == null) { - photocode = getFileCode(); - TgeneFiles tgeneFiles = new TgeneFiles(photocode); - PersistenceHelper.save(tgeneFiles); - } - TgeneFilesDetailKey tgeneFilesDetailKey = new TgeneFilesDetailKey(photocode, FormatDates.getDefaultExpiryTimestamp()); - TgeneFilesDetail tgeneFilesDetail = TgeneFilesDetail.find(PersistenceHelper.getEntityManager(),tgeneFilesDetailKey); - if (tgeneFilesDetail == null) { - tgeneFilesDetail = new TgeneFilesDetail(tgeneFilesDetailKey); - tgeneFilesDetail.setImage(fileItem.getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.getSize()))); - tgeneFilesDetail.setIngressuser(saveRequest.getUser()); - tgeneFilesDetail.setExtension(fileItem.getExtension()); - PersistenceHelper.save(tgeneFilesDetail); - } else { - tgeneFilesDetail.setImage(fileItem.getImage()); - tgeneFilesDetail.setCapturedate(FormatDates.getInstance().getDataBaseDate()); - tgeneFilesDetail.setImagesize(Integer.parseInt(String.valueOf(fileItem.getSize()))); - tgeneFilesDetail.setModifyuser(saveRequest.getUser()); - tgeneFilesDetail.setExtension(fileItem.getExtension()); - PersistenceHelper.saveOrUpdate(tgeneFilesDetail); - } - } else { - throw new GeneralException("CUST-0007", - "LOS TIPOS DE ARCHIVOS PERMITIDOS SON JPG, GIF Y PNG"); - } - } - return photocode; - } -} \ No newline at end of file diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/ValidateAddressPhones.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/ValidateAddressPhones.java.svn-base deleted file mode 100644 index e986e8e..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/ValidateAddressPhones.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ -package com.fp.person.rules.save; - -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; - -public class ValidateAddressPhones extends TransactionRule { - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Integer personcode = null; - Object objpersoncode = pSaveRequest.get("personcode"); - if (objpersoncode instanceof String) { - personcode = Integer.parseInt(objpersoncode.toString()); - } else if (objpersoncode instanceof String) { - personcode = (Integer) objpersoncode; - } - - if ((pSaveRequest.get("TCUSTPERSONADDRESS") == null) && (pSaveRequest.get("TCUSTPERSONPHONE") == null)) { - return pSaveRequest; - } - - List laddressdel = pSaveRequest.getSaveBeanDeletedRecords("TCUSTPERSONADDRESS"); - List laddressmod = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONADDRESS"); - List laddressbase = TcustPersonAddress.findByPersonCode(PersistenceHelper.getEntityManager(), personcode); - - List laddressFinal = Constant.getFinalList(laddressbase, Constant.convertList(laddressmod, TcustPersonAddress.class), - Constant.convertList(laddressdel, TcustPersonAddress.class)); - - if ((laddressFinal == null) || laddressFinal.isEmpty()) { - throw new GeneralException("CUST-0011", "SE NECESITA INGRESAR UNA DIRECCIN"); - } - - List lphonesdel = pSaveRequest.getSaveBeanDeletedRecords("TCUSTPERSONPHONE"); - List lphonesmod = pSaveRequest.getSaveBeanModifiedRecords("TCUSTPERSONPHONE"); - List lphonebase = TcustPersonPhone.findPhones(PersistenceHelper.getEntityManager(), personcode, - Constant.getDefaultExpiryTimestamp()); - - List lphoneFinal = Constant.getFinalList(lphonebase, Constant.convertList(lphonesmod, TcustPersonPhone.class), - Constant.convertList(lphonesdel, TcustPersonPhone.class)); - - if ((lphoneFinal == null) || lphoneFinal.isEmpty()) { - throw new GeneralException("CUST-0012", "NECESITA UN REGISTRO TELEFNICO"); - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsep.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsep.java.svn-base deleted file mode 100644 index b3d741d..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsep.java.svn-base +++ /dev/null @@ -1,242 +0,0 @@ -package com.fp.person.rules.save; - -import com.fp.common.helper.Constant; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonDetailKey; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.gene.OptmListaNegra; -import com.fp.persistence.pgeneral.gene.TgeneConsepLog; -import com.fp.sessionbeans.helper.Sequence; -import java.sql.Timestamp; -import java.util.List; - -/** - * - * @author hinga - */ -public abstract class VerifyInConsep extends TransactionRule { - - /** - * Metodo q busca personas que se encuentre en la lista de CONSEP y guarda auditoria de la misma - * - * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - * @param ldata lista de objetos OptmListaNegra - * @param personId Identificacin de la persona. - * @throws Exception - */ - protected void fillConsep(SaveRequest pSaveRequest, List ldata, String personId, String firsname, String middlename, String lastname, String surename, String transaction, boolean continueSave) throws Exception { - Response resp = pSaveRequest.getResponse(); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pSaveRequest.getCompany(), 0); - Timestamp datenow = new Timestamp(db.getWorkingdate().getTime()); - Integer cod = this.getLogId(); - resp.setResponseCode("TIME-0016"); - boolean verifysindicado = false; - String saveorupdate = "N"; - if (ldata != null && !ldata.isEmpty()) { - String message = ""; - for (OptmListaNegra obj : ldata) { - if (message.compareTo("") != 0) { - message += "
      "; - } - message += "(" + obj.getNombre() + " " + obj.getApellido() + ") " + "SE ENCUENTRA REGISTRADA EN LA TABLA DE CONSEP - "; - if (obj.getId_tiplisneg() == 1) { - verifysindicado = true; - saveorupdate = "N"; - message += "SINDICADO"; - } else if (obj.getId_tiplisneg() == 2 && "YES".equals((String) pSaveRequest.get("lisnegcontinue"))) { - saveorupdate = "S"; - message += "HOMNIMO"; - } else { - message += "HOMNIMO"; - } - pSaveRequest.putSaveBean("TGENECONSEP", obj); - } - for (OptmListaNegra obj : ldata) { - this.saveConsepLog(pSaveRequest, obj, personId, firsname, middlename, lastname, surename, cod, transaction, datenow, saveorupdate); - cod = cod + 1; - } - if (verifysindicado && transaction.equals("N")) { - if (!continueSave) { - throw new GeneralException("CUST-0002", "
      " + message + "
      NO SE PUEDE REGISTRAR EL CLIENTE"); - } - } else if (verifysindicado && transaction.equals("U")) { - resp.setResponseUserMessage(message); - } else { - if ("YES".equals((String) pSaveRequest.get("lisnegcontinue"))) { - resp.setResponseUserMessage(message); - } else { - if (!continueSave) { - throw new GeneralException("CUST-0003", "
      " + message + "
      NO SE REGISTRO EL CLIENTE"); - } - } - } - } else { - pSaveRequest.putSaveBean("TGENECONSEP", null); - TgeneConsepLog tgeneConsepLog = new TgeneConsepLog(); - tgeneConsepLog.setPk(cod); - tgeneConsepLog.setIdentificacion(personId); - tgeneConsepLog.setNombre_prim(firsname); - tgeneConsepLog.setNombre_seg(middlename); - tgeneConsepLog.setApellido_prim(lastname); - tgeneConsepLog.setApellido_seg(surename); - tgeneConsepLog.setId_listanegra("0"); - tgeneConsepLog.setId_tiplisneg(0L); - tgeneConsepLog.setFec_ing_lisneg(null); - tgeneConsepLog.setUsuario_cod(pSaveRequest.getUser()); - tgeneConsepLog.setFec_transaccion(datenow);//FormatDates.getInstance().getDataBaseTimestamp() - tgeneConsepLog.setTerminal(pSaveRequest.getTerminalCode()); - tgeneConsepLog.setTransaccion(transaction); - if ("N".equals(transaction)) { - tgeneConsepLog.setCreacion_cli("S"); - tgeneConsepLog.setActualizacion_cli("N"); - } else { - tgeneConsepLog.setCreacion_cli("N"); - tgeneConsepLog.setActualizacion_cli("S"); - } - tgeneConsepLog.setConstancia_consep("N"); - //Envia el bean a la base de datos en una session independiente - NestedSave nestedSave = new NestedSave(pSaveRequest.getCompany(), tgeneConsepLog); - nestedSave.start(); - //sb.join(); NO HABILITAR Espera a la ejecuciond el hijo. - resp.setResponseUserMessage("LA PERSONA NO SE ENCUENTRA REGISTRADA EN LA TABLA DEL CONSEP"); - } - } - - /** - * Metodo que guarda auditoria de los registros de CONSEP - * - * @param pSaveRequest - * @param optmListaNegra - * @param identificationConsep - * @param firsname - * @param middlename - * @param lastname - * @param surename - * @param cod - * @param transac - * @param datenow - * @param saveorupdate - * @throws Exception - */ - private void saveConsepLog(SaveRequest pSaveRequest, OptmListaNegra optmListaNegra, String identificationConsep, String firsname, - String middlename, String lastname, String surename, Integer cod, String transac, Timestamp datenow, String saveorupdate) throws Exception { - TgeneConsepLog tgeneConsepLog = new TgeneConsepLog(); - tgeneConsepLog.setPk(cod); - tgeneConsepLog.setIdentificacion(identificationConsep); - tgeneConsepLog.setNombre_prim(firsname); - tgeneConsepLog.setNombre_seg(middlename); - tgeneConsepLog.setApellido_prim(lastname); - tgeneConsepLog.setApellido_seg(surename); - tgeneConsepLog.setId_listanegra(optmListaNegra.getPk()); - tgeneConsepLog.setId_tiplisneg(optmListaNegra.getId_tiplisneg()); - tgeneConsepLog.setFec_ing_lisneg(optmListaNegra.getFec_ing_lisneg()); - tgeneConsepLog.setUsuario_cod((String) pSaveRequest.get("user")); - tgeneConsepLog.setFec_transaccion(datenow);//FormatDates.getInstance().getDataBaseTimestamp() - tgeneConsepLog.setTerminal((String) pSaveRequest.get("terminalCode")); - tgeneConsepLog.setTransaccion(transac); - if ("N".equals(transac)) { - tgeneConsepLog.setCreacion_cli(saveorupdate); - tgeneConsepLog.setActualizacion_cli("N"); - } else { - tgeneConsepLog.setCreacion_cli("N"); - tgeneConsepLog.setActualizacion_cli("S"); - } - tgeneConsepLog.setConstancia_consep("S"); - NestedSave nestedSave = new NestedSave(pSaveRequest.getCompany(), tgeneConsepLog); - nestedSave.start(); - } - - /** - * Metodo que verifica que si cambian la identificación no se encuentre SINDICADA - * - * @param tcustPeople - * @param pSaveRequest - * @param identificationConsep - * @throws Exception - */ - protected void verifyChangeIdentificationPeople(TcustPeople tcustPeople, SaveRequest pSaveRequest, String identificationConsep) throws Exception { - if (tcustPeople != null) { - TcustPersonDetail tcustPersonDetailUpdate = (TcustPersonDetail) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONDETAIL"); - if (tcustPersonDetailUpdate != null && tcustPersonDetailUpdate.getIdentification() != null) { - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey((Integer) pSaveRequest.get("personcode"), Constant.getDefaultExpiryTimestamp()); - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), tcustPersonDetailKey); - if (tcustPersonDetail != null && tcustPersonDetail.getIdentification() != null - && tcustPersonDetailUpdate.getIdentification().compareTo(tcustPersonDetail.getIdentification()) != 0) { - List ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), identificationConsep); - if (ldata != null && !ldata.isEmpty()) { - Integer cod = this.getLogId(); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pSaveRequest.getCompany(), 0); - Timestamp datenow = new Timestamp(db.getWorkingdate().getTime()); - for (int i = 0; i < ldata.size(); i++) { - OptmListaNegra optmListaNegra = ldata.get(i); - if (optmListaNegra != null) { - if (optmListaNegra.getId_tiplisneg() != null && String.valueOf(optmListaNegra.getId_tiplisneg()).compareTo("1") == 0) { - this.saveConsepLog(pSaveRequest, optmListaNegra, identificationConsep, tcustPeople.getFirstname(), tcustPeople.getMiddlename(), - tcustPeople.getLastname(), tcustPeople.getSurename(), cod, "U", datenow, null); - throw new GeneralException("CUST-0008", "NO SE PUEDE CAMBIAR LA IDENTIFICACIN YA QUE ESTA SE ENCUENTRA COMO SINDICADA"); - } - } - } - } - } - } - } - } - - /** - * Metodo para grabar auditoria de personas juridicas en cambio de identificacion si esta como SINDICADA - * - * @param pSaveRequest - * @param identificationConsep - * @throws Exception - */ - protected void verifyChangeIdentificationPeople(SaveRequest pSaveRequest, String identificationConsep) throws Exception { - TcustPersonDetail tcustPersonDetailUpdate = (TcustPersonDetail) pSaveRequest.getSaveBeanModifiedObject("TCUSTPERSONDETAIL"); - if (tcustPersonDetailUpdate != null && tcustPersonDetailUpdate.getIdentification() != null) { - TcustPersonDetailKey tcustPersonDetailKey = new TcustPersonDetailKey((Integer) pSaveRequest.get("personcode"), Constant.getDefaultExpiryTimestamp()); - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), tcustPersonDetailKey); - if (tcustPersonDetail != null && tcustPersonDetail.getIdentification() != null - && tcustPersonDetailUpdate.getIdentification().compareTo(tcustPersonDetail.getIdentification()) != 0) { - List ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), identificationConsep); - if (ldata != null && !ldata.isEmpty()) { - Integer cod = this.getLogId(); - TgeneAccountingDateBranch db = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneAccountingDateBranch( - pSaveRequest.getCompany(), 0); - Timestamp datenow = new Timestamp(db.getWorkingdate().getTime()); - for (int i = 0; i < ldata.size(); i++) { - OptmListaNegra optmListaNegra = ldata.get(i); - if (optmListaNegra != null) { - if (optmListaNegra.getId_tiplisneg() != null && String.valueOf(optmListaNegra.getId_tiplisneg()).compareTo("1") == 0) { - this.saveConsepLog(pSaveRequest, optmListaNegra, identificationConsep, tcustPersonDetail.getName(), null, - null, null, cod, "U", datenow, null); - throw new GeneralException("CUST-0008", "NO SE PUEDE CAMBIAR LA IDENTIFICACIN YA QUE ESTA SE ENCUENTRA COMO SINDICADA"); - } - } - } - } - } - } - } - - /** - * Metodoq ue obtiene la secuencia para guardar los logs - * - * @return - * @throws Exception - */ - protected Integer getLogId() throws Exception { - Sequence sequence = new Sequence(); - Integer personcode = Integer.valueOf(sequence.getNextValue("LOGCONSEP").toString()); - return personcode; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepCompany.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepCompany.java.svn-base deleted file mode 100644 index 2f3c12b..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepCompany.java.svn-base +++ /dev/null @@ -1,87 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.person.rules.save; - -import com.fp.common.helper.Constant; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.company.TcustCompanyKey; -import com.fp.persistence.pcustomer.company.TcustCompanyManagers; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.OptmListaNegra; -import java.util.List; - -/** - * Clase que verifica si la compania se encuentra registrada en el CONSEP - * - * @author hinga - */ -public class VerifyInConsepCompany extends VerifyInConsep { - - /** - * Ejecuta la transaccion en modo normal.
      Verifica que la persona que se intenta regidtrar se encuentra o no en - * la lista negra (CONSEP). - * - * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - * @throws Exception - * @return pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String firsname = null, transaction = null, identificationConsep = null; - identificationConsep = (String) pSaveRequest.get("identification"); - if (pSaveRequest.get("personcode") != null) { - this.verifyChangeIdentificationPeople(pSaveRequest, identificationConsep); - } - SaveBean saveBean = (SaveBean) pSaveRequest.get("TCUSTCOMPANYMANAGERS"); - if (saveBean != null) { - List lTcustCompanyManagers = saveBean.getModifiedRecords(); - for (int i = 0; i < lTcustCompanyManagers.size(); i++) { - TcustCompanyManagers tcustCompanyManagers = (TcustCompanyManagers) lTcustCompanyManagers.get(i); - if (tcustCompanyManagers.getPk() != null && tcustCompanyManagers.getPk().getManagerpersoncode() != null) { - TcustPersonDetail tcustPersonDetail = TcustPersonDetail.find(PersistenceHelper.getEntityManager(), - tcustCompanyManagers.getPk().getManagerpersoncode()); - if (tcustPersonDetail != null && tcustPersonDetail.getIdentification() != null) { - List ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), tcustPersonDetail.getIdentification()); - String typeItem; - String isnew = (String) tcustCompanyManagers.get("isnew"); - if (isnew != null && isnew.compareTo("Y") == 0) { - typeItem = "N"; - } else { - typeItem = "U"; - } - if (identificationConsep.compareTo(tcustPersonDetail.getIdentification()) != 0) { - this.fillConsep(pSaveRequest, ldata, tcustPersonDetail.getIdentification(), tcustPersonDetail.getName(), null, null, null, typeItem, true); - } - } - } - } - } - if (pSaveRequest.get("personcode") == null || "".equals(((Integer) pSaveRequest.get("personcode")).toString())) { - transaction = "N"; - } else { - transaction = "U"; - } - firsname = (String) pSaveRequest.get("socialreason"); - if (identificationConsep != null) { - List ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), identificationConsep); - this.fillConsep(pSaveRequest, ldata, identificationConsep, firsname, null, null, null, transaction, false); - } - return pSaveRequest; - } - - /** - * Ejecuta la transaccion en modo reverso.
      - * - * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepPerson.java.svn-base b/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepPerson.java.svn-base deleted file mode 100644 index 22eba58..0000000 --- a/base/business/person/src/main/java/com/fp/person/rules/save/.svn/text-base/VerifyInConsepPerson.java.svn-base +++ /dev/null @@ -1,75 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.person.rules.save; - -import com.fp.common.helper.Constant; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pcustomer.people.TcustPeopleKey; -import com.fp.persistence.pgeneral.gene.OptmListaNegra; -import java.util.List; - -/** - * Clase que verifica si la persona se encuentra registrada en el CONSEP - * - * @author hinga - */ -public class VerifyInConsepPerson extends VerifyInConsep { - - /** - * Ejecuta la transaccion en modo normal.
      Verifica que la persona que se intenta registrar se encuentra o no en - * la lista negra (CONSEP). - * - * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - * @throws Exception - * @return pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - String firsname = null, middlename = null, lastname = null, surename = null, transaction = null, identificationConsep = null; - String balancefile = (String) pSaveRequest.get("balancefile"); - if (balancefile != null && balancefile.compareTo("excelfile") == 0) { - return pSaveRequest; - } - identificationConsep = (String) pSaveRequest.get("identification"); - TcustPeople tcustPeople = null; - - if (pSaveRequest.get("personcode") == null || pSaveRequest.get("personcode").equals("")) { - tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE"); - transaction = "N"; - } else { - TcustPeopleKey key = new TcustPeopleKey(new Integer((String)pSaveRequest.get("personcode")), Constant.getDefaultExpiryTimestamp()); - tcustPeople = TcustPeople.find(PersistenceHelper.getEntityManager(), key); - transaction = "U"; - } - if(tcustPeople == null){ - tcustPeople = (TcustPeople) pSaveRequest.getSaveBeanModifiedObject("TCUSTPEOPLE"); - } - if(transaction.compareTo("U") == 0){ - this.verifyChangeIdentificationPeople(tcustPeople, pSaveRequest, identificationConsep); - } - firsname = tcustPeople.getFirstname(); - middlename = tcustPeople.getMiddlename(); - lastname = tcustPeople.getLastname(); - surename = tcustPeople.getSurename(); - if (identificationConsep != null) { - List ldata = OptmListaNegra.find(PersistenceHelper.getEntityManager(), identificationConsep); - this.fillConsep(pSaveRequest, ldata, identificationConsep, firsname, middlename, lastname, surename, transaction, false); - } - return pSaveRequest; - } - - /** - * Ejecuta la transaccion en modo reverso.
      - * - * @param pSaveRequest Objeto que almacena referencia a las tablas de que intervienen en el proceso con sus datos. - * @throws Exception - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } -} diff --git a/base/business/person/src/main/java/com/fp/person/validate/.svn/entries b/base/business/person/src/main/java/com/fp/person/validate/.svn/entries deleted file mode 100644 index 7e6e600..0000000 --- a/base/business/person/src/main/java/com/fp/person/validate/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/java/com/fp/person/validate -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ValidateIdentification.java -file - - - - -2022-07-28T03:40:41.762799Z -a67dc6d782ce290b08554cd58ca42fa6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3940 - diff --git a/base/business/person/src/main/java/com/fp/person/validate/.svn/text-base/ValidateIdentification.java.svn-base b/base/business/person/src/main/java/com/fp/person/validate/.svn/text-base/ValidateIdentification.java.svn-base deleted file mode 100644 index 799e894..0000000 --- a/base/business/person/src/main/java/com/fp/person/validate/.svn/text-base/ValidateIdentification.java.svn-base +++ /dev/null @@ -1,144 +0,0 @@ -package com.fp.person.validate; - -import java.math.BigDecimal; - -/** - * Clase para validar la cédula y el RUC de una persona - * @author BPTWPA - * @version 2.1 - */ -public class ValidateIdentification { - /** - * Método para validar la cédula - * - * @param id Número de la cédula - * @return result Retorna V/F según la validez de la cédula - */ - public static boolean cedula(String id) { - - boolean result = true; - - int[] modulo9 = { 2, 1, 2, 1, 2, 1, 2, 1, 2 }; - - BigDecimal verif = new BigDecimal(0); - if (id.length() != 10) - result = false; - else { - for (int i = 0; i < 9; i++) { - BigDecimal temp = new BigDecimal(new BigDecimal(id.substring(i, (i + 1))).multiply(new BigDecimal(modulo9[i])).toString()); - if (temp.doubleValue() > 9){ - temp = temp.subtract(new BigDecimal("9")); - } - verif = verif.add(temp); - } - if (verif.doubleValue() % 10 == 0){ - if (Integer.parseInt(id.substring(9, 10)) == 0){ - result = true; - } else{ - result = false; - } - } else if ((10 - (verif.doubleValue() % 10)) == Integer.parseInt(id.substring(9, 10))){ - result = true; - } else { - result = false; - } - } - return result; - } - - /** - * Método para validar el Ruc - * - * @param ruc Número del Ruc - * @return Retorna V/F según la validez del Ruc - */ - public static boolean ruc(String ruc) { - - boolean result = true; - - int[] modulo11 = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - BigDecimal verif = new BigDecimal(0); - if (ruc.length() < 13) - result = false; - else if (Integer.parseInt(ruc.substring(0, 2)) < 1 - || Integer.parseInt(ruc.substring(0, 2)) > 22) { - result = false; - } else { - if (Integer.parseInt(ruc.substring(2, 3)) < 0 - || (Integer.parseInt(ruc.substring(2, 3)) > 6 && Integer - .parseInt(ruc.substring(2, 3)) < 9)) { - result = false; - } else { - if (Integer.parseInt(ruc.substring(2, 3)) == 9) { // sociedad privada o extranjeros - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - modulo11[0] = 4; - modulo11[1] = 3; - modulo11[2] = 2; - modulo11[3] = 7; - modulo11[4] = 6; - modulo11[5] = 5; - modulo11[6] = 4; - modulo11[7] = 3; - modulo11[8] = 2; - for (int i = 0; i < 9; i++) { - verif = verif.add(new BigDecimal(ruc.substring(i, - (i + 1))).multiply(new BigDecimal( - modulo11[i]))); - } - if (verif.doubleValue() % 11 == 0) - if (Integer.parseInt(ruc.substring(9, 10)) == 0) - result = true; - else - result = false; - else if ((11 - (verif.doubleValue() % 11)) == Integer - .parseInt(ruc.substring(9, 10))) - result = true; - else - result = false; - } - } else if (Integer.parseInt(ruc.substring(2, 3)) == 6) { // sociedad pblicas - - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - modulo11[0] = 3; - modulo11[1] = 2; - modulo11[2] = 7; - modulo11[3] = 6; - modulo11[4] = 5; - modulo11[5] = 4; - modulo11[6] = 3; - modulo11[7] = 2; - for (int i = 0; i < 8; i++) { - verif = verif.add(new BigDecimal(ruc.substring(i, - (i + 1))).multiply(new BigDecimal( - modulo11[i]))); - } - if (verif.doubleValue() % 11 == 0) - if (Integer.parseInt(ruc.substring(8, 9)) == 0) - result = true; - else - result = false; - else if ((11 - (verif.doubleValue() % 11)) == Integer - .parseInt(ruc.substring(8, 9))) - result = true; - else - result = false; - } - } else if (Integer.parseInt(ruc.substring(2, 3)) < 6 - && Integer.parseInt(ruc.substring(2, 3)) >= 0) { // personas naturales - - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - result = cedula(ruc.substring(0, 10)); - } - } - } - } - return result; - } -} diff --git a/base/business/person/src/main/resources/.svn/entries b/base/business/person/src/main/resources/.svn/entries deleted file mode 100644 index 87b3faa..0000000 --- a/base/business/person/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -personmessages_es.properties -file - - - - -2022-07-28T03:40:42.152800Z -4db10bff3a83d02c86220556e4bac0dc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -810 - diff --git a/base/business/person/src/main/resources/.svn/text-base/personmessages_es.properties.svn-base b/base/business/person/src/main/resources/.svn/text-base/personmessages_es.properties.svn-base deleted file mode 100644 index bab0cfc..0000000 --- a/base/business/person/src/main/resources/.svn/text-base/personmessages_es.properties.svn-base +++ /dev/null @@ -1,12 +0,0 @@ -CUST-0001=PERSONA NO DEFINIDA EN TCUSTPERSONDETAIL: PERSONCODE:{0} -CUST-0002=LA PERSONA SE ENCUENTRA REGISTRADA EN LA TABLA DE CONSEP CONSEP - SINDICADO, NO SE PUEDE REGISTRAR EL CLIENTE" -CUST-0003=LA PERSONA SE ENCUENTRA REGISTRADA EN LA TABLA DE CONSEP CONSEP - HOM\u00D3NIMO, NO SE REGISTRO EL CLIENTE -CUST-0004=El ARCHIVO NO ES EL CORRECTO - BG -CUST-0005=El ARCHIVO NO ES EL CORRECTO - BG(IFIS) -CUST-0006=EXTENSI\u00D2N INCORRECTA DEL ARCHIVO -CUST-0007=LOS TIPOS DE ARCHIVOS PERMITIDOS SON JPG, GIF Y PNG -CUST-0008=NO SE PUEDE CAMBIAR LA IDENTIFICACI\u00D3N YA QUE ESTA SE ENCUENTRA COMO SINDICADA -CUST-0009=ARCHIVO NO CUMPLE CON FORMATO REQUERIDO -CUST-0010=NO SE PUEDE ELIMINAR LA DIRECCI\u00D3N PORQUE SE ENCUENTRA ASOCIADA -CUST-0013=C\u00C9DULA NO V\u00C1LIDA -CUST-0014=RUC NO V\u00C1LIDO \ No newline at end of file diff --git a/base/business/person/src/test/.svn/entries b/base/business/person/src/test/.svn/entries deleted file mode 100644 index 820f7e6..0000000 --- a/base/business/person/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/person/src/test/java/.svn/entries b/base/business/person/src/test/java/.svn/entries deleted file mode 100644 index ecba98b..0000000 --- a/base/business/person/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/person/src/test/resources/.svn/entries b/base/business/person/src/test/resources/.svn/entries deleted file mode 100644 index 980d4db..0000000 --- a/base/business/person/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/person/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/.svn/dir-prop-base b/base/business/report/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/business/report/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/business/report/.svn/entries b/base/business/report/.svn/entries deleted file mode 100644 index 8686096..0000000 --- a/base/business/report/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report -svn://172.17.26.185/COMACO - - - -2014-10-17T05:32:00.734115Z -1669 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:43.039804Z -09efa4216cc11c6f20d4cbaec31cd42f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -587 - diff --git a/base/business/report/.svn/text-base/pom.xml.svn-base b/base/business/report/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 3389071..0000000 --- a/base/business/report/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,16 +0,0 @@ - - - - business - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.business - report - report - 2.1 - \ No newline at end of file diff --git a/base/business/report/src/.svn/entries b/base/business/report/src/.svn/entries deleted file mode 100644 index a8b0a4d..0000000 --- a/base/business/report/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/report/src/main/.svn/entries b/base/business/report/src/main/.svn/entries deleted file mode 100644 index 21b994f..0000000 --- a/base/business/report/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/report/src/main/java/.svn/entries b/base/business/report/src/main/java/.svn/entries deleted file mode 100644 index f87c9cc..0000000 --- a/base/business/report/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/report/src/main/java/com/.svn/entries b/base/business/report/src/main/java/com/.svn/entries deleted file mode 100644 index 85bdb19..0000000 --- a/base/business/report/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/report/src/main/java/com/fp/.svn/entries b/base/business/report/src/main/java/com/fp/.svn/entries deleted file mode 100644 index d046ea0..0000000 --- a/base/business/report/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -report -dir - diff --git a/base/business/report/src/main/java/com/fp/report/.svn/entries b/base/business/report/src/main/java/com/fp/report/.svn/entries deleted file mode 100644 index c79b794..0000000 --- a/base/business/report/src/main/java/com/fp/report/.svn/entries +++ /dev/null @@ -1,40 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -db -dir - -query -dir - -rules -dir - -util -dir - diff --git a/base/business/report/src/main/java/com/fp/report/db/.svn/entries b/base/business/report/src/main/java/com/fp/report/db/.svn/entries deleted file mode 100644 index 9281a88..0000000 --- a/base/business/report/src/main/java/com/fp/report/db/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:42.516802Z -07be0dc7dc2017748fcd6ad8dde6c816 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -625 - -SQLUtil.java -file - - - - -2022-07-28T03:40:42.516802Z -cda5c2fa3ad281abf183c2046eac9230 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1150 - diff --git a/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/DataHelper.java.svn-base b/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 8fc067f..0000000 --- a/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.report.db; - -/** - * Clase utilitaria que maneje sql y hql utiliada en el proyecto accounting - * @author scastillo - */ -public class DataHelper { - - /** - * Almacena una instancia de DataHelper. - */ - private static DataHelper cache; - - /** - * Entrega una instancia de DataHelper. - * @return DataHelper - */ - public static DataHelper getInstance() { - if (cache != null) { - return cache; - } - synchronized (DataHelper.class) { - if (cache == null) { - cache = new DataHelper(); - } - } - return cache; - } -} diff --git a/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/SQLUtil.java.svn-base b/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/SQLUtil.java.svn-base deleted file mode 100644 index 23b5a54..0000000 --- a/base/business/report/src/main/java/com/fp/report/db/.svn/text-base/SQLUtil.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.report.db; - -import java.sql.Connection; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.util.ArrayList; -import java.util.List; - -public class SQLUtil { - public static Object execute(Connection pCon, String pSQL, Object[] pParams) throws Exception { - ArrayList a; - PreparedStatement pst = pCon.prepareStatement(pSQL); - ResultSet rst = null; - try { - if (pParams != null) { - for (int i = 0; i < pParams.length; i++) { - Object object = pParams[i]; - pst.setObject(i + 1, object); - } - } - rst = pst.executeQuery(); - return (rst.next()) ? rst.getObject(1) : null; - } finally { - if (rst != null) { - rst.close(); - } - if (pst != null) { - pst.close(); - } - } - } - - public static List prepareParameter(List pData, Object newParam) { - List data = (pData == null) ? new ArrayList() : pData; - data.add(newParam); - return data; - } -} diff --git a/base/business/report/src/main/java/com/fp/report/query/.svn/entries b/base/business/report/src/main/java/com/fp/report/query/.svn/entries deleted file mode 100644 index 37b6510..0000000 --- a/base/business/report/src/main/java/com/fp/report/query/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/src/main/java/com/fp/report/rules/.svn/entries b/base/business/report/src/main/java/com/fp/report/rules/.svn/entries deleted file mode 100644 index 05b6d0b..0000000 --- a/base/business/report/src/main/java/com/fp/report/rules/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/rules -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -save -dir - diff --git a/base/business/report/src/main/java/com/fp/report/rules/query/.svn/entries b/base/business/report/src/main/java/com/fp/report/rules/query/.svn/entries deleted file mode 100644 index aab94d2..0000000 --- a/base/business/report/src/main/java/com/fp/report/rules/query/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/src/main/java/com/fp/report/rules/save/.svn/entries b/base/business/report/src/main/java/com/fp/report/rules/save/.svn/entries deleted file mode 100644 index 87affad..0000000 --- a/base/business/report/src/main/java/com/fp/report/rules/save/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/rules/save -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/src/main/java/com/fp/report/util/.svn/entries b/base/business/report/src/main/java/com/fp/report/util/.svn/entries deleted file mode 100644 index e3649a3..0000000 --- a/base/business/report/src/main/java/com/fp/report/util/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/java/com/fp/report/util -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Utilities.java -file - - - - -2022-07-28T03:40:42.704803Z -8dc1d4f814ab10c325eb36dfc0eacbae -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5218 - diff --git a/base/business/report/src/main/java/com/fp/report/util/.svn/text-base/Utilities.java.svn-base b/base/business/report/src/main/java/com/fp/report/util/.svn/text-base/Utilities.java.svn-base deleted file mode 100644 index 6d3bdef..0000000 --- a/base/business/report/src/main/java/com/fp/report/util/.svn/text-base/Utilities.java.svn-base +++ /dev/null @@ -1,213 +0,0 @@ -package com.fp.report.util; - -import java.io.BufferedReader; -import java.io.IOException; -import java.math.BigDecimal; -import java.sql.Clob; -import java.sql.SQLException; -import java.text.DecimalFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.GregorianCalendar; - -import org.apache.commons.lang.StringUtils; - -/** - * Clase que se encarga de ofrecer utilidades para ser utilizadas por iReports - * - * @author scastillo - */ -public class Utilities { - - /** - * Formato ISO - */ - private static SimpleDateFormat simpleDateFormat = new SimpleDateFormat( - "yyyy-MM-dd"); - /** - * - */ - private static GregorianCalendar gregorianCalendar = new GregorianCalendar(); - - /** - * Constructor por defecto de la clase - */ - public Utilities() { - } - - /** - * Metodo que devuelve la fecha de expiracion para manejo de reportes - * - * @return java.util.Date - */ - public static java.util.Date getDefaultExpiryDate() { - java.util.Date date = null; - try { - date = Utilities.simpleDateFormat.parse("2999-12-31"); - } catch (ParseException ex) { - return null; - } - return date; - } - - /** - * Mtodo que devuelve la fecha de expiracion para manejo de reportes - * - * @return java.sql.Timestamp - */ - public static java.sql.Timestamp getDefaultExpiryTimestamp() { - return java.sql.Timestamp.valueOf("2999-12-31 00:00:00.000"); - } - - /** - * Metodo que se encarga de devolver - * - * @param pDate - * String que contiene la fecha en formato yyyy-MM-dd - * @return java.util.Date - */ - public static java.util.Date StringToDate(String pDate) { - java.util.Date date = null; - try { - date = Utilities.simpleDateFormat.parse(pDate); - } catch (ParseException ex) { - return null; - } - return date; - } - - /** - * Metodo que agrega dias en una fecha - * - * @param pDate - * Fecha en formato yyyy-MM-dd - * @param daysnumber - * Nmero de dias a sumar o restar - * @return - */ - public static java.util.Date addDays(String pDate, int daysnumber) { - try { - java.util.Date date = Utilities.simpleDateFormat.parse(pDate); - Utilities.gregorianCalendar.setTime(date); - Utilities.gregorianCalendar.add(Calendar.DAY_OF_YEAR, daysnumber); - return new java.util.Date(Utilities.gregorianCalendar.getTime() - .getTime()); - } catch (ParseException ex) { - return null; - } - } - - /** - * Metodo que suma/resta meses a una fecha - * - * @param pDate - * Fecha en formato yyyy-MM-dd - * @param Monthsnumber - * Nmero de mese a sumar o restar. Si se resta enviar un nmero - * entero negativo - * @return - */ - public static java.util.Date addMonths(String pDate, int Monthsnumber) { - try { - java.util.Date date = Utilities.simpleDateFormat.parse(pDate); - Utilities.gregorianCalendar.setTime(date); - Utilities.gregorianCalendar.add(Calendar.MONTH, Monthsnumber); - return new java.util.Date(Utilities.gregorianCalendar.getTime() - .getTime()); - } catch (ParseException ex) { - return null; - } - } - - /** - * Metodo que convierte un clob a string - * - * @param clb - * Clob a convertir - * @return - */ - public static String clobToString(Clob clb) { - if (clb == null) { - return null; - } - StringBuilder str = new StringBuilder(); - String strng; - BufferedReader bufferRead; - try { - bufferRead = new BufferedReader(clb.getCharacterStream()); - } catch (SQLException ex) { - return null; - } - try { - while ((strng = bufferRead.readLine()) != null) { - str.append(strng); - } - } catch (IOException ex) { - return null; - } - return str.toString(); - } - - /** - * Metodo que devuelve la particion - * - * @param pDate - * @return - */ - public static String getPartition(String pDate) { - if ((pDate != null) && (pDate.compareTo("") != 0)) { - pDate = pDate.replaceAll("\\-", ""); - pDate = pDate.substring(0, 6); - return pDate; - } else { - return null; - } - } - - public static String lpad(String pData, char pFiller, int pLength) { - return StringUtils.leftPad(pData, pLength, pFiller); - } - - public static String rpad(String pData, char pFiller, int pLength) { - String st = ""; - if (pData.length() > pLength) { - st = pData.substring(0, pLength); - } else { - st = StringUtils.rightPad(pData, pLength, pFiller); - } - return st; - } - - public static String removeCurrencySeparatorsSymbol(BigDecimal pData, - int pLengthDecimal) { - BigDecimal value = pData.setScale(pLengthDecimal, - BigDecimal.ROUND_HALF_UP); - - return value.toString().replaceAll("\\.", "").replaceAll("\\,", ""); - } - - public static String formatCurrency(BigDecimal pData, String format) { - DecimalFormat frmt = new DecimalFormat(format); - String formatted = frmt.format(pData.doubleValue()); - - return formatted; - } - - public static String getFormatedDate(java.util.Date pDate, String format) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); - String date = null; - date = simpleDateFormat.format(pDate); - return date; - - } - - public static String getFormatedDate(java.sql.Date pDate, String format) { - SimpleDateFormat simpleDateFormat = new SimpleDateFormat(format); - String date = null; - date = simpleDateFormat.format(pDate); - return date; - - } - -} diff --git a/base/business/report/src/main/resources/.svn/entries b/base/business/report/src/main/resources/.svn/entries deleted file mode 100644 index b989421..0000000 --- a/base/business/report/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/src/test/.svn/entries b/base/business/report/src/test/.svn/entries deleted file mode 100644 index f436a6d..0000000 --- a/base/business/report/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/report/src/test/java/.svn/entries b/base/business/report/src/test/java/.svn/entries deleted file mode 100644 index fb1e6c4..0000000 --- a/base/business/report/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/report/src/test/resources/.svn/entries b/base/business/report/src/test/resources/.svn/entries deleted file mode 100644 index 7774de3..0000000 --- a/base/business/report/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/report/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/business/viaticos/.svn/dir-prop-base b/base/business/viaticos/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/business/viaticos/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/business/viaticos/.svn/entries b/base/business/viaticos/.svn/entries deleted file mode 100644 index dc3ae7c..0000000 --- a/base/business/viaticos/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:40.207792Z -d4e5da5eb2df5af4758fc822b4dd2830 -2014-09-11T07:02:10.090385Z -665 -jvaca - - - - - - - - - - - - - - - - - - - - - -1362 - diff --git a/base/business/viaticos/.svn/text-base/pom.xml.svn-base b/base/business/viaticos/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index e845f52..0000000 --- a/base/business/viaticos/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,46 +0,0 @@ - - - 4.0.0 - - com.fp.base - business - 2.1 - - com.fp.base.business - viaticos - viaticos - - - com.fp.base.persistence - pviaticos - 2.1 - - - com.fp.base.core - bpm - 2.1 - - - com.fp.base.bpm - simple - 2.1 - - - com.fp.base.bpm - bpmlib - 2.1 - - - com.fp.base - sessionbeans - 2.1 - - - com.fp.base.persistence - pbpm - 2.1 - - - - diff --git a/base/business/viaticos/src/.svn/entries b/base/business/viaticos/src/.svn/entries deleted file mode 100644 index ade6359..0000000 --- a/base/business/viaticos/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/business/viaticos/src/main/.svn/entries b/base/business/viaticos/src/main/.svn/entries deleted file mode 100644 index 93ee238..0000000 --- a/base/business/viaticos/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/business/viaticos/src/main/java/.svn/entries b/base/business/viaticos/src/main/java/.svn/entries deleted file mode 100644 index 515f206..0000000 --- a/base/business/viaticos/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/viaticos/src/main/java/com/.svn/entries b/base/business/viaticos/src/main/java/com/.svn/entries deleted file mode 100644 index dd25838..0000000 --- a/base/business/viaticos/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/.svn/entries b/base/business/viaticos/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 454ff0c..0000000 --- a/base/business/viaticos/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -viaticos -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/.svn/entries deleted file mode 100644 index f173531..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -mail -dir - -task -dir - -rules -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/entries deleted file mode 100644 index e943d40..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/entries +++ /dev/null @@ -1,439 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/mail -svn://172.17.26.185/COMACO - - - -2014-09-11T07:01:34.572119Z -664 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Grupos.java -file - - - - -2022-07-28T03:40:39.364788Z -c2cdeee7546504c17cd955329c4c3dfb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1807 - -MailMasivo.java -file - - - - -2022-07-28T03:40:39.364788Z -800a0d9d052a87151bafa0a18ff2bdfc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3366 - -ResponsableUnidad.java -file - - - - -2022-07-28T03:40:39.364788Z -a58cde142dd748f75b1467a63822e4ae -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1866 - -Movilizacion.java -file - - - - -2022-07-28T03:40:39.365788Z -f1c98157da919d5fa612d14c0e883322 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4060 - -EmpleadoyJefeyResponsableUnidad.java -file - - - - -2022-07-28T03:40:39.365788Z -e562df554f29f80e84b21078388876ec -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2263 - -Empleado.java -file - - - - -2022-07-28T03:40:39.365788Z -fd9ac2d980b9ffa26eb5c8d303d76629 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2038 - -thread -dir - -EmpleadoyJefe.java -file - - - - -2022-07-28T03:40:39.365788Z -4f0821b757d05acc7c0fd02f4dd5cc01 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1917 - -Jefe.java -file - - - - -2022-07-28T03:40:39.366788Z -c9320fa4e1c7263a2c73798a0480b92b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1802 - -Contabilidad.java -file - - - - -2022-07-28T03:40:39.366788Z -d0c3b5e1fb4157900063f33556bf0e0f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3059 - -Tesoreria.java -file - - - - -2022-07-28T03:40:39.366788Z -a76ad72d483ca5938718c0e84ff79b23 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3465 - -TalentoHumano.java -file - - - - -2022-07-28T03:40:39.366788Z -a97fa936f78de39b0fc57ae9ffbf9535 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3063 - -UsaurioIngresoSolicitud.java -file - - - - -2022-07-28T03:40:39.367788Z -39b45707b472d2fbf1bf4a22b49b10d4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2112 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Contabilidad.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Contabilidad.java.svn-base deleted file mode 100644 index f6c2adf..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Contabilidad.java.svn-base +++ /dev/null @@ -1,78 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de objener el email de un usuario asociado a contabilidad. - * - * @version 2.1 - */ -public class Contabilidad extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - - String usuario = this.getUsuario(e.getCodigoLocalidad(), "CONTABILIDAD"); - - // adiciona email del empleado. - lemail.add(ejpql.findPorUsuarioWeb(usuario.toLowerCase()).getEmail()); - - mresp.put("lemail", lemail); - return mresp; - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Empleado.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Empleado.java.svn-base deleted file mode 100644 index 2ce36fd..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Empleado.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de un empleado para enviar notificaciones. - * - * @version 2.1 - */ -public class Empleado extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String csolicitud = (String) mrequest.get("csolicitud"); - mresp.put("lemail", this.getEmail(csolicitud, "S")); - return mresp; - } - - /** - * Entrega el email de un empleado, dado el codigo d solicitud y el tipo de solicitud. - * - * @param csolicitud Codigo de solicitud. - * @param tipo Tipo S solicitud, I informe. - * @return List - * @throws Exception - */ - public List getEmail(String csolicitud, String tipo) throws Exception { - List lemail = new ArrayList(); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, tipo)); - - EmpleadoJpql e = new EmpleadoJpql(); - // adiciona email del empleado. - lemail.add(e.find(vsol.getCod_empleado()).getEmail()); - return lemail; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefe.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefe.java.svn-base deleted file mode 100644 index 1cd7878..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefe.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de un empleado y jefe inmediato a enviar notificaciones. - * - * @version 2.1 - */ -public class EmpleadoyJefe extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoJefe = vsol.getCod_jefe(); - - EmpleadoJpql e = new EmpleadoJpql(); - // adiciona email del empleado. - lemail.add(e.find(vsol.getCod_empleado()).getEmail()); - - if (codigoJefe == null) { - codigoJefe = e.find(vsol.getCod_empleado()).getCodigoJefe(); - } - // adiciona email del jefe del empleado. - lemail.add(e.find(codigoJefe).getEmail()); - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefeyResponsableUnidad.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefeyResponsableUnidad.java.svn-base deleted file mode 100644 index 7a408ca..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/EmpleadoyJefeyResponsableUnidad.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de un empleado y jefe inmediato a enviar notificaciones. - * - * @version 2.1 - */ -public class EmpleadoyJefeyResponsableUnidad extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoJefe = vsol.getCod_jefe(); - String codigoRespUnidad = vsol.getCod_responsable(); - - EmpleadoJpql e = new EmpleadoJpql(); - // adiciona email del empleado. - lemail.add(e.find(vsol.getCod_empleado()).getEmail()); - - if (codigoJefe == null) { - codigoJefe = e.find(vsol.getCod_empleado()).getCodigoJefe(); - } - if (codigoRespUnidad == null) { - codigoRespUnidad = e.find(vsol.getCod_empleado()).getCodigoResponsableUnidad(); - } - // adiciona email del jefe del empleado. - lemail.add(e.find(codigoJefe).getEmail()); - // Adiciona el email del jefe del servidor publico. - lemail.add(e.find(codigoRespUnidad).getEmail()); - - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Grupos.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Grupos.java.svn-base deleted file mode 100644 index 220b0e4..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Grupos.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.simple.maia.MailRecipientGroup; - -/** - * Clase que se encarga de objener la lista de emails asociados a un grupo definod en TbpmGroupsUsers. - * - * @version 2.1 - */ -public class Grupos extends MailRecipientGroup { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipientGroup#getEmailAddress(java.lang.Object, java.lang.String) - */ - @Override - public Map getEmailAddress(Object pParam, String pGroupCode) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - - List lgrupos = TbpmGroupsUsers.find(PersistenceHelper.getEntityManager(), pGroupCode); - for (TbpmGroupsUsers tbpmGroupsUsers : lgrupos) { - String email = this.getEmailPorUsuario(tbpmGroupsUsers.getPk().getUsercode()); - if (email != null) { - lemail.add(email); - } - } - mresp.put("lemail", lemail); - return mresp; - } - - /** - * Obtiene el email de un empleado de la sbs. - * - * @param cusuario Codigo de usaurio. - * @return String - * @throws Exception - */ - private String getEmailPorUsuario(String cusuario) throws Exception { - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.findPorUsuarioWeb(cusuario); - return e.getEmail(); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Jefe.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Jefe.java.svn-base deleted file mode 100644 index ec880e9..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Jefe.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email de un jefe asociado a un empleado de la sbs. - * - * @version 2.1 - */ -public class Jefe extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoJefe = vsol.getCod_jefe(); - EmpleadoJpql e = new EmpleadoJpql(); - if (codigoJefe == null) { - codigoJefe = e.find(vsol.getCod_empleado()).getCodigoJefe(); - } - - // Adiciona el email del jefe del servidor publico. - lemail.add(e.find(codigoJefe).getEmail()); - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/MailMasivo.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/MailMasivo.java.svn-base deleted file mode 100644 index d31c324..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/MailMasivo.java.svn-base +++ /dev/null @@ -1,89 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.concurrent.ExecutorService; -import java.util.concurrent.Executors; - -import org.hibernate.SQLQuery; -import org.hibernate.ScrollableResults; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.viaticos.mail.thread.MailPorSolicitud; - -/** - * Clase que se encarga de almacenar comentarios de la tarea y el estatus actual de la solicitud. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class MailMasivo { - - /** - * Result que contiene los numeros de solicitud o informes por entregar que ya llegaron a la fecha de vencimeinto y - * hay que enviar recordatorios. - */ - protected ScrollableResults rSet; - - /** - * Recorre el resultset que contiene los numeros de operacion a ejecutar el tareas del lote, ejecuta por operacion. - * - * @param numerohilos Numero de hilos a levantar en paralelo para la ejecucion del lote. - * @throws Exception - */ - protected void ejecutar(Integer hilos, SaveRequest pSaverequest) throws Exception { - ExecutorService pool = Executors.newFixedThreadPool(hilos); - try { - if (rSet != null) { - while (rSet.next()) { - try { - Object[] obj = rSet.get(); - // Ejecuta tareas por operacion o por criterio unico de ejecucion. - procesaPorSolicitud(pool, obj, pSaverequest); - } catch (Exception e) { - APPLogger.getLogger().error(e, e); - } - } - } - } finally { - if (rSet != null) { - rSet.close(); - } - } - // control de finalizacion de ejecucion del bathc. - pool.shutdown(); - boolean isfinish = pool.isTerminated(); - while (!isfinish) { - isfinish = pool.isTerminated(); - Thread.sleep(600); - } - } - - /** - * Levanta un hilo por solictud, de la clase que se encarga de enviar notificaciones. - * - * @param pool Objeto que contiene el Ejecutor de hilos. - * @param obj Objeto que contiene la solicitud tipo y numero de dias desde el cual no tomo una accion en el flujo. - * @param pSaverequest - * @throws Exception - */ - private void procesaPorSolicitud(ExecutorService pool, Object[] obj, SaveRequest pSaverequest) throws Exception { - MailPorSolicitud thread = new MailPorSolicitud(pSaverequest, (String) obj[0], (String) obj[1], Integer.valueOf(obj[2].toString())); - pool.execute(thread); - } - - /** Sentencia que entrega las solicitudes a enviar mail. */ - private static final String JPQL = " select cod_solicitud, cod_tipo, ((trunc(sysdate) - fec_fin_viatico)) + 1 dias " - + "from via_solicitud where (trunc(sysdate) - fec_fin_viatico) + 1 between 1 and 4 and cod_estado in ('SAP','IPI') ant tipo = 'SOL' "; - - /** - * Metodo que obtiene las solicitudes a enviar mail masivos. - * - * @throws Exception - */ - protected void fillRset() throws Exception { - SQLQuery qry = PersistenceHelper.getSession().createSQLQuery(MailMasivo.JPQL); - rSet = qry.scroll(); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Movilizacion.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Movilizacion.java.svn-base deleted file mode 100644 index cb8c657..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Movilizacion.java.svn-base +++ /dev/null @@ -1,103 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaNotificacionMovilizacion; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudTransporte; -import com.fp.simple.maia.MailRecipient; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de objener el email de un usuario asociado a la ciudad origen del empleado. - * - * @version 2.1 - */ -public class Movilizacion extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - - String usuario = this.getUsuario(e.getCodigoLocalidad()); - - // adiciona email del empleado. - lemail.add(ejpql.findPorUsuarioWeb(usuario).getEmail()); - - mresp.put("lemail", lemail); - return mresp; - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery("from ViaNotificacionMovilizacion t where t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - - ViaNotificacionMovilizacion obj = null; - try { - obj = (ViaNotificacionMovilizacion) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0010", "USUARIO NO DEFINIDO EN VIA_NOTIFICACION_MOVILIZACION CIUDAD: {0}", ciudad); - } - return obj.getCod_usuario(); - } - - /** - * Obtiene el tipo de transporte de una solicitud, si tiene un registro tipo "A" Aereo, retorna A, casocoantrario - * retorna "T" Terrestre. - * - * @param csolicitud Numero de solictud a obtener el tipo de transporte. - * @return String - * @throws Exception - */ - @SuppressWarnings({ "unchecked", "unused" }) - private String getTipoTransporte(String csolicitud) throws Exception { - String tipotrasp = "T"; - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaSolicitudTransporte t where t.pk.cod_solicitud = :csolicitud and t.pk.cod_tipo = :tipo"); - qry.setParameter("csolicitud", csolicitud); - qry.setParameter("tipo", "S"); - List ldatos = qry.getResultList(); - for (ViaSolicitudTransporte obj : ldatos) { - if (obj.getCod_tip_transporte().equals("A")) { - tipotrasp = "A"; - break; - } - } - return tipotrasp; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/ResponsableUnidad.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/ResponsableUnidad.java.svn-base deleted file mode 100644 index cbc4c8a..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/ResponsableUnidad.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email del responsable de unidad a enviar notificaciones.. - * - * @version 2.1 - */ -public class ResponsableUnidad extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoRespUnidad = vsol.getCod_responsable(); - EmpleadoJpql e = new EmpleadoJpql(); - if (codigoRespUnidad == null) { - codigoRespUnidad = e.find(vsol.getCod_empleado()).getCodigoResponsableUnidad(); - } - - // Adiciona el email del jefe del servidor publico. - lemail.add(e.find(codigoRespUnidad).getEmail()); - mresp.put("lemail", lemail); - return mresp; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/TalentoHumano.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/TalentoHumano.java.svn-base deleted file mode 100644 index 2b2024d..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/TalentoHumano.java.svn-base +++ /dev/null @@ -1,78 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de objener el email de un usuario asociado a talento humano. - * - * @version 2.1 - */ -public class TalentoHumano extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - List lemail = new ArrayList(); - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - - String usuario = this.getUsuario(e.getCodigoLocalidad(), "TALENTOHUMANO"); - - // adiciona email del empleado. - lemail.add(ejpql.findPorUsuarioWeb(usuario.toLowerCase()).getEmail()); - - mresp.put("lemail", lemail); - return mresp; - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Tesoreria.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Tesoreria.java.svn-base deleted file mode 100644 index 22f2fed..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/Tesoreria.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de objener el email de un usuario asociado a tesoreria. - * - * @version 2.1 - */ -public class Tesoreria extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String csolicitud = (String) mrequest.get("csolicitud"); - - mresp.put("lemail", this.getEmail(csolicitud, "S")); - return mresp; - } - - /** - * Entrega el email de un empleado, dado el codigo d solicitud y el tipo de solicitud. - * - * @param csolicitud Codigo de solicitud. - * @param tipo Tipo S solicitud, I informe. - * @return List - * @throws Exception - */ - public List getEmail(String csolicitud, String tipo) throws Exception { - List lemail = new ArrayList(); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, tipo)); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - - String usuario = this.getUsuario(e.getCodigoLocalidad(), "TESORERIA"); - - // adiciona email del empleado. - lemail.add(ejpql.findPorUsuarioWeb(usuario.toLowerCase()).getEmail()); - return lemail; - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/UsaurioIngresoSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/UsaurioIngresoSolicitud.java.svn-base deleted file mode 100644 index 3d6d604..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/.svn/text-base/UsaurioIngresoSolicitud.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package com.fp.viaticos.mail; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.maia.MailRecipient; - -/** - * Clase que se encarga de objener el email del usuario que ingresa la solicitud para enviar notificaciones. - * - * @version 2.1 - */ -public class UsaurioIngresoSolicitud extends MailRecipient { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.maia.MailRecipient#getEmailAddress(java.lang.Object) - */ - @SuppressWarnings("unchecked") - @Override - public Map getEmailAddress(Object pParam) throws Exception { - Map mresp = new HashMap(); - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return mresp; - } - String csolicitud = (String) mrequest.get("csolicitud"); - mresp.put("lemail", this.getEmail(csolicitud, "S")); - return mresp; - } - - /** - * Entrega el email de un empleado que ingresa la solicitud, dado el codigo d solicitud y el tipo de solicitud. - * - * @param csolicitud Codigo de solicitud. - * @param tipo Tipo S solicitud, I informe. - * @return List - * @throws Exception - */ - public List getEmail(String csolicitud, String tipo) throws Exception { - List lemail = new ArrayList(); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, tipo)); - - EmpleadoJpql e = new EmpleadoJpql(); - // adiciona email del empleado. - lemail.add(e.findPorUsuarioWeb(vsol.getCod_usuario()).getEmail()); - return lemail; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/entries deleted file mode 100644 index d6e0119..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread -svn://172.17.26.185/COMACO - - - -2014-09-11T07:01:34.572119Z -664 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MailPorSolicitud.java -file - - - - -2022-07-28T03:40:39.314788Z -69edef22383d74dbfeeb508294984232 -2014-09-11T07:01:34.572119Z -664 -jvaca - - - - - - - - - - - - - - - - - - - - - -3853 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/text-base/MailPorSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/text-base/MailPorSolicitud.java.svn-base deleted file mode 100644 index 4b595f3..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/mail/thread/.svn/text-base/MailPorSolicitud.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.viaticos.mail.thread; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.bpmlib.flow.RuleUtil; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.viaticos.mail.Empleado; -import com.fp.viaticos.mail.Tesoreria; - -/** - * Hilo que se encarga de enviar mail's al empleado y/o tesoreria por solicitud. El mail se envia si el usuario tiene - * tareas en estatus aprobar o por ingresar informe. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class MailPorSolicitud implements Runnable { - - /** - * Request con el que inicia la transaccion de envio de correos. - */ - private final SaveRequest saverequest; - - /** - * Numero de solicitud a obtener informacion asociada a la solicitud con la que se envia el mail. - */ - private final String csolicitud; - - /** - * S solicitud. I informe. - */ - private final String tipo; - - /** - * Numero de dias desde la fecha de vencimiento del viatico. - */ - private final Integer dias; - - /** - * Crea una instancia de MailPorSolicitud. - * - * @param saverequest Objeto con el que inicia una solicitud. - * @param csolicitud Numero de solicitus. - * @param tipo Tipo de registro, S solicitud, I informe. - * @throws Exception - */ - public MailPorSolicitud(SaveRequest saverequest, String csolicitud, String tipo, Integer dias) throws Exception { - this.saverequest = saverequest; - this.csolicitud = csolicitud; - this.tipo = tipo; - this.dias = dias; - } - - /** - * Metodo que se encarga de inicio de ejecucion del hilo. - */ - @Override - public void run() { - try { - process(); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - } - - /** - * Metodo que se encarga de la llamada al ejb para la ejecucion de una cuenta. - * - * @throws Exception Se presenta en el caso que la el proceso de la tarea no haya sido satisfactoria - */ - private void process() throws Exception { - try { - SessionData s = new SessionData(); - s.setCompany(saverequest.getCompany()); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - this.sendMail(); - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackNewTransaction(); - APPLogger.getLogger().error(e); - } - } - - /** - * Envia mail al empleado y a tesoria si tiene 4 dias de reteazo en tomar acciones en el flujo. - * - * @throws Exception - */ - private void sendMail() throws Exception { - RuleUtil.setSubjectTemplate(1); - RuleUtil.setContentTemplate(2); - List lemail = new ArrayList(); - - Empleado emp = new Empleado(); - lemail.addAll(emp.getEmail(csolicitud, tipo)); - - if (dias == 4) { - Tesoreria t = new Tesoreria(); - lemail.addAll(t.getEmail(csolicitud, tipo)); - } - - for (String email : lemail) { - RuleUtil.toAddress(email); - } - if (!lemail.isEmpty()) { - Request request = new Request(); - saverequest.copy(request); - request.put("csolicitud", csolicitud); - RuleUtil.sendMail(request); - } - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/.svn/entries deleted file mode 100644 index c24b542..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -enums -dir - -consulta -dir - -exception -dir - -save -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/.svn/entries deleted file mode 100644 index c1beee7..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/entries deleted file mode 100644 index 5868a34..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ConsultaSolicitud.java -file - - - - -2022-07-28T03:40:39.664790Z -4c2886f18f9f950945001859578b0dcc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4148 - -ConsultaComentarios.java -file - - - - -2022-07-28T03:40:39.664790Z -f716fa9058fe97130c72993688cc4da2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1912 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaComentarios.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaComentarios.java.svn-base deleted file mode 100644 index 4b8088b..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaComentarios.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.viaticos.rules.consulta.solicitud; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudComentarios; -import com.fp.viaticos.rules.enums.EnumCodigos; - -public class ConsultaComentarios extends QueryRule { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQrequest) throws Exception { - Response response = pQrequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQrequest); - List comentarios = (List) response.get("SOLICITUDCOMENTARIOS"); - this.completarDatos(comentarios); - return pQrequest; - } - - /** - * Método que completa los datos de los comentarios - * - * @param comentarios Lista de objetos tipo ViaSolicitudComentarios - */ - private void completarDatos(List comentarios) throws Exception { - if (comentarios == null || comentarios.isEmpty()) { - return; - } - for (Object objeto : comentarios) { - ViaSolicitudComentarios comentario = (ViaSolicitudComentarios) objeto; - Empleado emp = null; - EmpleadoJpql e = new EmpleadoJpql(); - // empleado - if (comentario.getCod_usuario() != null) { - emp = e.findPorUsuarioWeb(comentario.getCod_usuario().toLowerCase()); - if (emp != null) { - comentario.modifiedData.put("empleado", emp.getNombre()); - comentario.modifiedData.put("cargo", emp.getCargo()); - } - } - } - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaSolicitud.java.svn-base deleted file mode 100644 index 27283f1..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/consulta/solicitud/.svn/text-base/ConsultaSolicitud.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.viaticos.rules.consulta.solicitud; - -import java.math.BigDecimal; -import java.util.Calendar; -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaDiasAcumulados; -import com.fp.persistence.pviaticos.param.ViaDiasAcumuladosKey; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes; -import com.fp.viaticos.rules.query.destino.DestinoQuery; - -public class ConsultaSolicitud extends QueryRule{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pQrequest) throws Exception { - Response response = pQrequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQrequest); - Object solicitud = (Object) response.get("SOLICITUD"); - List integrantes = (List)response.get("SOLICITUDINTEGRANTES"); - this.completeInfoSolicitud(solicitud); - this.completeInfoIntegrantes(integrantes); - return pQrequest; - } - - /** - * Completa los datos de la solicitud - * @param object Objeto ViaSolicitud - * @throws Exception - */ - public void completeInfoSolicitud(Object object) throws Exception{ - if(object==null){ - return; - } - ViaSolicitud solicitud = (ViaSolicitud)object; - Empleado emp = null; - EmpleadoJpql e = new EmpleadoJpql(); - DestinoQuery qry = new DestinoQuery(); - - //Funcionario ingresa - emp = e.findPorUsuarioWeb(solicitud.getCod_usuario().toLowerCase()); - if(emp!=null){ - solicitud.modifiedData.put("cod_ingreso", emp.getCodigo()); - solicitud.modifiedData.put("nom_ingreso", emp.getNombre()); - } - //jefe - if(solicitud.getCod_jefe()!=null){ - emp = e.find(solicitud.getCod_jefe()); - if(emp!=null){ - solicitud.modifiedData.put("nombrejefe", emp.getNombre()); - solicitud.modifiedData.put("cargojefe", emp.getNombreCargo()); - } - } - //Responsable - if(solicitud.getCod_responsable()!=null){ - emp = e.find(solicitud.getCod_responsable()); - if(emp!=null){ - solicitud.modifiedData.put("nombreresponsable", emp.getNombre()); - solicitud.modifiedData.put("cargoresponsable", emp.getNombreCargo()); - } - } - //Destino - Object obj = qry.find(solicitud.getCod_destino()); - if(obj!=null){ - Object[] destino = (Object[])obj; - solicitud.modifiedData.put("destinoname", destino[1]); - } - //Dias acumulados por destino - Calendar calendar = Calendar.getInstance(); - calendar.setTime(solicitud.getFec_creacion()); - BigDecimal dias = this.diasPorDestino(solicitud.getCod_empleado(), solicitud.getCod_destino(),calendar.get(Calendar.YEAR)); - solicitud.modifiedData.put("comisionciudad", solicitud.getNum_dias().add(dias)); - } - - /** - * Completa la informacion de los integrantes - * @param objeto - */ - public void completeInfoIntegrantes(List objetos)throws Exception{ - if(objetos==null || objetos.isEmpty()){ - return; - } - for(Object obj:objetos){ - ViaSolicitudIntegrantes integrante = (ViaSolicitudIntegrantes)obj; - EmpleadoJpql e = new EmpleadoJpql(); - Empleado emp = e.find(integrante.getPk().getCod_empleado()); - if(emp!=null){ - integrante.modifiedData.put("empleado", emp.getNombre()); - } - } - - } - - /** - * Entrega los dias acumulados por ciudad - * @param codEmpleado - * @param codDestino - * @param periodo - * @return - * @throws Exception - */ - private BigDecimal diasPorDestino(String codEmpleado, String codDestino, Integer periodo)throws Exception{ - BigDecimal valor = new BigDecimal("0.0"); - ViaDiasAcumuladosKey key = new ViaDiasAcumuladosKey(); - key.setCod_empleado(codEmpleado); - key.setCod_destino(codDestino); - key.setCod_ejercicio(periodo); - ViaDiasAcumulados acumulados = ViaDiasAcumulados.find(PersistenceHelper.getEntityManager(), key); - if(acumulados!=null){ - valor.add(acumulados.getNum_dias()); - } - return valor; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/entries deleted file mode 100644 index 85888df..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EnumEstadosSolicitud.java -file - - - - -2022-07-28T03:40:39.628790Z -0fabfa58e32382027de95b9cacd2bbf1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1463 - -EnumCodigos.java -file - - - - -2022-07-28T03:40:39.628790Z -cb780cc9e1e1fbc568bd0e65755dfffd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -938 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumCodigos.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumCodigos.java.svn-base deleted file mode 100644 index 6e1e783..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumCodigos.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.viaticos.rules.enums; - -/** - * Enumeracion en la que se define codigos utilites de solicitud de viaticos. - * - * @version 2.1 - */ -public enum EnumCodigos { - /** - * Código tipo solicitud - */ - SOLICITUD("S"), - /** - * Código tipo informe - */ - INFORME("I"), - /** - * Código del parametro de días - */ - VIA_03("VIA_03"), - /** - * Código del parametro para permitir días de salida - */ - VIA_04("VIA_04"), - /** - * Código del parametro para permitir días de llegada - */ - VIA_05("VIA_05"); - /** - * Atributo para obtener el valor - */ - private String codigo; - - /** - * @param texto - * @param codigo - */ - private EnumCodigos(String codigo) { - this.codigo = codigo; - } - - /** - * @return the texto - */ - public String getCodigo() { - return codigo; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumEstadosSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumEstadosSolicitud.java.svn-base deleted file mode 100644 index df81b2c..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/enums/.svn/text-base/EnumEstadosSolicitud.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.viaticos.rules.enums; - -/** - * Enumeracion en la que se define codigos de estado de una solicitud. - * - * @version 2.1 - */ -public enum EnumEstadosSolicitud { - /** - * Código estado ingresado - */ - INGRESADO("IN"), - /** - * Código estado por aprobar - */ - ANULACION_POR_APROBAR("SAA"), - /** - * Código estado por aprobar - */ - POR_APROBAR("SPA"), - /** - * Código estado por corregir - */ - POR_CORREGIR("SPC"), - /** - * Código estado aprobado - */ - APROBADA("SAP"), - /** - * Código estado anulada - */ - ANULADA("SAN"), - /** - * Código estado por ingresar informe - */ - POR_ING_INFORME("IPI"), - /** - * Código estado informe aprobado - */ - INF_APROBADO("IAP"), - /** - * Código estado informe por aprobar - */ - INF_POR_APROBAR("IPA"), - /** - * Código estado informe por aprobar - */ - INF_POR_CORREGIR("IPC"); - /** - * ACodigo de estatus de la solicitud. - */ - private String estatus; - - /** - * @param texto - * @param codigo - */ - private EnumEstadosSolicitud(String estatus) { - this.estatus = estatus; - } - - /** - * Entrega el valor de: estatus - * - * @return String - */ - public String getEstatus() { - return estatus; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/entries deleted file mode 100644 index c38c530..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ViaticosException.java -file - - - - -2022-07-28T03:40:39.726790Z -80e2c6985c460b78a03e4304f078da69 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1113 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/text-base/ViaticosException.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/text-base/ViaticosException.java.svn-base deleted file mode 100644 index 3fc7491..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/exception/.svn/text-base/ViaticosException.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -package com.fp.viaticos.rules.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -@ApplicationException(rollback=true) -public class ViaticosException extends APPException{ - - /**Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de ViaticosException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ViaticosException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de ViaticosException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ViaticosException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/.svn/entries deleted file mode 100644 index 19809a4..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -informe -dir - -solicitud -dir - -destino -dir - -empleados -dir - -general -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/entries deleted file mode 100644 index e7e79c0..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DestinoQuery.java -file - - - - -2022-07-28T03:40:39.502789Z -d55d004c7437ee3a41b6b08ddcfdd03d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1522 - -LovDestinoSbs.java -file - - - - -2022-07-28T03:40:39.503789Z -e3dce7045187394118760c5fb232a6e8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -740 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/DestinoQuery.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/DestinoQuery.java.svn-base deleted file mode 100644 index 02dc399..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/DestinoQuery.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.viaticos.rules.query.destino; - -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.DtoQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; - -public class DestinoQuery extends QueryJsf{ - - /** - * Consulta para obtener todas los destinos - */ - private static String SQL = "select t.COD_DESTINO, t.NOM_dESTINO, t.USU_AUD_LUGARES, t.FEC_AUD_LUGARES, t.STS_DESTINO from SCA.SCP_DESTINO t"; - - /** - * Método que obtiene los destinos segun los filtros enviados - * @param dtoquery Objeto DtoQuery - * @return list - * @throws Exception - */ - @SuppressWarnings("unchecked") - public List find(DtoQuery dtoquery) throws Exception{ - super.buildCriteria(dtoquery); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(DestinoQuery.SQL + (super.where == null ? "" : super.where.toString()) ); - super.setParameters(dtoquery, qry); - return qry.getResultList(); - } - - /** - * Entrega el destino - * @param codDestino Codigo destino - * @return obj Object[] - */ - public Object find(String codDestino)throws Exception{ - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(DestinoQuery.SQL + " WHERE t.COD_DESTINO = :CODDESTINO"); - qry.setParameter("CODDESTINO", codDestino); - Object obj = qry.getSingleResult(); - return obj; - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/LovDestinoSbs.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/LovDestinoSbs.java.svn-base deleted file mode 100644 index 9067368..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/destino/.svn/text-base/LovDestinoSbs.java.svn-base +++ /dev/null @@ -1,28 +0,0 @@ -package com.fp.viaticos.rules.query.destino; - -import java.util.List; - -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; - -public class LovDestinoSbs extends QueryRule{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Metodo sobreescrito para gestionar la respuesta de la consulta - */ - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - DtoQuery dtoquery = pQueryRequest.getQueryTables().get("LOVDESTINO"); - DestinoQuery e = new DestinoQuery(); - List ldestinos = e.find(dtoquery); - pQueryRequest.getResponse().put("LOVDESTINO", ldestinos); - return pQueryRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/entries deleted file mode 100644 index ab524e8..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LovEmpleadosSbs.java -file - - - - -2022-07-28T03:40:39.521789Z -596bfdb1224ea4d72c3c14941c54ae8c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1112 - -UsuarioPorCiudad.java -file - - - - -2022-07-28T03:40:39.521789Z -64298cac77bd37c4d9277171fa553537 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1383 - -NotificacionMovilizacion.java -file - - - - -2022-07-28T03:40:39.522789Z -afb2a8b3ac0b8d391a72f1f29ca0de1a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1444 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/LovEmpleadosSbs.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/LovEmpleadosSbs.java.svn-base deleted file mode 100644 index d0ef3d6..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/LovEmpleadosSbs.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.viaticos.rules.query.empleados; - -import java.sql.Date; -import java.util.List; - -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; - -/** - * Clase que se encarga de consultar en la vista HRA.VWDATOSEMPLEADOS de empleados de la sbs dado un dtoquery. - * - * @author Jorge Vaca - * @version 2.1 - */ -@SuppressWarnings("serial") -public class LovEmpleadosSbs extends QueryRule{ - - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - DtoQuery dtoquery = pQueryRequest.getQueryTables().get("LOVEMPLEADOSSBS"); - EmpleadoJpql e = new EmpleadoJpql(); - List lempleados = e.find(dtoquery); - pQueryRequest.getResponse().put("LOVEMPLEADOSSBS", lempleados); - pQueryRequest.getResponse().put("DATE", FormatDates.getInstance().getDataBaseDate()); - return pQueryRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/NotificacionMovilizacion.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/NotificacionMovilizacion.java.svn-base deleted file mode 100644 index f15b1f6..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/NotificacionMovilizacion.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.query.empleados; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaNotificacionMovilizacion; - -/** - * Clase que se encarga de consultar datos de VIA_CIUDAD_USUARIO, y el nombre del empleado sbs asociado al codigo de - * usuario web. - * - * @author Jorge Vaca - * @version 2.1 - */ -@SuppressWarnings("serial") -public class NotificacionMovilizacion extends QueryRule { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @SuppressWarnings({ "unchecked" }) - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryJsf qf = new QueryJsf(); - qf.execute(pQueryRequest); - List ldata = (List) pQueryRequest.getResponse().get("NOTIFIACIONMOVILIZACION"); - for (ViaNotificacionMovilizacion obj : ldata) { - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.findPorUsuarioWeb(obj.getCod_usuario().toLowerCase()); - obj.addAddtionalInfo("nusuario", e.getNombre()); - } - return pQueryRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/UsuarioPorCiudad.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/UsuarioPorCiudad.java.svn-base deleted file mode 100644 index 51f27a7..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/empleados/.svn/text-base/UsuarioPorCiudad.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.query.empleados; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; - -/** - * Clase que se encarga de consultar datos de VIA_CIUDAD_USUARIO, y el nombre del empleado sbs asociado al codigo de - * usuario web.. - * - * @author Jorge Vaca - * @version 2.1 - */ -@SuppressWarnings("serial") -public class UsuarioPorCiudad extends QueryRule { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.QueryRule#process(com.fp.dto.query.QueryRequest) - */ - @SuppressWarnings({ "unchecked" }) - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - QueryJsf qf = new QueryJsf(); - qf.execute(pQueryRequest); - List ldata = (List) pQueryRequest.getResponse().get("CIUDADUSUARIO"); - for (ViaCiudadUsuario obj : ldata) { - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.findPorUsuarioWeb(obj.getCod_usuario().toLowerCase()); - obj.addAddtionalInfo("nusuario", e.getNombre()); - } - return pQueryRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/entries deleted file mode 100644 index 45b5386..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DiasAcumulados.java -file - - - - -2022-07-28T03:40:39.552789Z -39731d581aafc11dc3c7711ab03cf63c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1731 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/text-base/DiasAcumulados.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/text-base/DiasAcumulados.java.svn-base deleted file mode 100644 index a272d1a..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/general/.svn/text-base/DiasAcumulados.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -package com.fp.viaticos.rules.query.general; - -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaDiasAcumulados; -import com.fp.viaticos.rules.query.destino.DestinoQuery; - -public class DiasAcumulados extends QueryRule{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQrequest) throws Exception { - Response response = pQrequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQrequest); - List acumulados = (List)response.get("DIASACUMULADOS"); - this.completarDatos(acumulados); - return pQrequest; - } - - /** - * Método que completa los datos de los comentarios - * @param comentarios Lista de objetos tipo ViaSolicitudComentarios - */ - private void completarDatos(List acumulados) throws Exception{ - if(acumulados==null || acumulados.isEmpty()){ - return; - } - for(Object objeto: acumulados){ - ViaDiasAcumulados acumulado = (ViaDiasAcumulados)objeto; - Empleado emp = null; - EmpleadoJpql e = new EmpleadoJpql(); - //empleado - emp = e.find(acumulado.getPk().getCod_empleado()); - if(emp!=null){ - acumulado.modifiedData.put("empleado", emp.getNombre()); - } - - //Destino - DestinoQuery qry = new DestinoQuery(); - Object[] destino = (Object[])qry.find(acumulado.getPk().getCod_destino()); - if(destino!=null){ - acumulado.modifiedData.put("destino", destino[1]); - } - } - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/entries deleted file mode 100644 index d525b99..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Informe.java -file - - - - -2022-07-28T03:40:39.447789Z -bb6283f149e7b47649d020f11a696600 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4710 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/text-base/Informe.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/text-base/Informe.java.svn-base deleted file mode 100644 index deb6c8f..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/informe/.svn/text-base/Informe.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.viaticos.rules.query.informe; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudTransporte; -import com.fp.viaticos.rules.consulta.solicitud.ConsultaSolicitud; -import com.fp.viaticos.rules.enums.EnumCodigos; - -public class Informe extends QueryRule{ - - /** - * Clase que clona los objetos de la solicitud para el informe - */ - private static final long serialVersionUID = 1L; - - /** - * Metodo sobreescrito para gestionar la respuesta de la consulta - */ - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQueryRequest) throws Exception { - - String codSolicitud = (String)pQueryRequest.get("csolicitud"); - - ViaSolicitud informe = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(codSolicitud, EnumCodigos.INFORME.getCodigo())); - if(informe!=null){ - return pQueryRequest; - } - - this.fijaFiltrosSolicitud(pQueryRequest); - - Response response = pQueryRequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQueryRequest); - - Object object=response.get("SOLICITUD"); - List objectIntegrantes=(List)response.get("SOLICITUDINTEGRANTES"); - List objectTransporte=(List)response.get("SOLICITUDTRANSPORTE"); - - if(object == null){ - return pQueryRequest; - } - - ViaSolicitud solicitud = (ViaSolicitud) object; - solicitud = (ViaSolicitud)solicitud.cloneMe(); - solicitud.setIsnew(true); - ConsultaSolicitud data = new ConsultaSolicitud(); - solicitud.setFec_creacion(FormatDates.getInstance().getDataBaseDate()); - data.completeInfoSolicitud(solicitud); - - response.put("SOLICITUD", solicitud); - response.put("SOLICITUDINTEGRANTES", this.cloneIntegrantes(objectIntegrantes)); - response.put("SOLICITUDTRANSPORTE", this.cloneTransporte(objectTransporte)); - response.put("CLONE", "Y"); - - return pQueryRequest; - } - /** - * Método para cambio de filtros - */ - public void fijaFiltrosSolicitud(QueryRequest pQueryRequest) throws Exception{ - - DtoQuery dtoQuery = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUD"); - DtoQuery dtoQueryInt = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDINTEGRANTES"); - DtoQuery dtoQueryTra = (DtoQuery)pQueryRequest.getQueryTables().get("SOLICITUDTRANSPORTE"); - - List filtros = dtoQuery.getLfilter(); - List filtrosInt = dtoQueryInt.getLfilter(); - List filtrosTra = dtoQueryTra.getLfilter(); - - for(Filter filtro: filtros){ - if(filtro.getField().equals("pk.cod_tipo")){ - filtro.setValue(EnumCodigos.SOLICITUD.getCodigo()); - break; - } - } - for(Filter filtro: filtrosInt){ - if(filtro.getField().equals("pk.cod_tipo")){ - filtro.setValue(EnumCodigos.SOLICITUD.getCodigo()); - break; - } - } - for(Filter filtro: filtrosTra){ - if(filtro.getField().equals("pk.cod_tipo")){ - filtro.setValue(EnumCodigos.SOLICITUD.getCodigo()); - break; - } - } - } - /** - * Mtodo para clonar la lista de objetos ViaSolicitudIntegrantes - * @param object - */ - private List cloneIntegrantes(List objects) throws Exception { - List listIntegrantes = new ArrayList(); - ViaSolicitudIntegrantes integrante; - - for(Object objeto:objects) - { - integrante = (ViaSolicitudIntegrantes)objeto; - ViaSolicitudIntegrantes inte = (ViaSolicitudIntegrantes)integrante.cloneMe(); - listIntegrantes.add(inte); - } - ConsultaSolicitud data = new ConsultaSolicitud(); - data.completeInfoIntegrantes(objects); - return listIntegrantes; - } - - /** - * Mtodo para clonar la lista de objetos ViaSolicitudTransporte - * @param object - */ - private List cloneTransporte(List objects) throws Exception { - List listTransporte = new ArrayList(); - ViaSolicitudTransporte transporte; - - for(Object objeto:objects) - { - transporte = (ViaSolicitudTransporte)objeto; - ViaSolicitudTransporte trans = (ViaSolicitudTransporte)transporte.cloneMe(); - trans.getPk().setCod_secuencia(null); - listTransporte.add(trans); - } - return listTransporte; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/entries deleted file mode 100644 index f1f7b43..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ConsultaEstadoSolicitud.java -file - - - - -2022-07-28T03:40:39.478789Z -c2163ab7c22c21beb25ff764c0de7394 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4345 - -ConsultaLovSolicitud.java -file - - - - -2022-07-28T03:40:39.478789Z -b20d658667c048aab98770bb95a40f6d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1490 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaEstadoSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaEstadoSolicitud.java.svn-base deleted file mode 100644 index f1c1c05..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaEstadoSolicitud.java.svn-base +++ /dev/null @@ -1,132 +0,0 @@ -package com.fp.viaticos.rules.query.solicitud; - -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; - -public class ConsultaEstadoSolicitud extends QueryRule { - - private static final long serialVersionUID = 1L; - private static String query="select coalesce(sum(val_importe),0) from VIA.via_sol_liquidacion where cod_solicitud = :codSolicitud and cod_tipo = :codTipo"; - private static String queryNomRespDirFin ="SELECT em.apellidos||' '||em.nombres AS NOMBRE FROM HRA.vwdatosempleados em WHERE UPPER(EM.USUARIO_WEB)=" - + "(SELECT ciu.cod_usuario FROM MAIADE.via_ciudad_usuario ciu where ciu.cod_actividad_catalog='TESORERIA' and ciu.cod_ciudad_catalog = :codLocalidad)"; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest pQrequest) throws Exception { - Response response = pQrequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQrequest); - - List estadosSolicitud = (List) response - .get("VIASOLICITUDCONSULTA"); - - this.completeInfoSolicitud(estadosSolicitud); - return pQrequest; - } - - - /** - * Completa la información de los integrantes - * - * @param objeto - */ - private void completeInfoSolicitud(List objetos) throws Exception { - if (objetos == null || objetos.isEmpty()) { - return; - } - for (Object obj : objetos) { - - ViaSolicitud solicitud = (ViaSolicitud) obj; - EmpleadoJpql e = new EmpleadoJpql(); - Empleado emp = e.find(solicitud.getCod_empleado()); - - solicitud.modifiedData.put("nombrefuncionario", emp.getNombre()); - - if (solicitud.getCod_jefe() != null) { - Empleado jefe = e.find(solicitud.getCod_jefe()); - if (jefe != null) { - solicitud.modifiedData.put("nombrejefe", jefe.getNombreJefe()); - solicitud.modifiedData.put("cargojefe", jefe.getNombreCargoJefe()); - } - }else - { - if (emp != null) { - solicitud.modifiedData.put("nombrejefe", emp.getNombreJefe()); - solicitud.modifiedData.put("cargojefe", emp.getNombreCargo()); - } - } - - if (solicitud.getCod_responsable() != null) { - - Empleado responsable = e.find(solicitud.getCod_responsable()); - if (responsable != null) { - solicitud.modifiedData.put("nombreresponsable",responsable.getNombreResponsableUnidad()); - solicitud.modifiedData.put("cargoresponsable",responsable.getNombreCargoResponsableUnidad()); - } - } - else - { - if (emp != null) { - solicitud.modifiedData.put("nombreresponsable", emp.getNombreResponsableUnidad()); - solicitud.modifiedData.put("cargoresponsable", emp.getNombreCargoResponsableUnidad()); - } - } - - solicitud.modifiedData.put("gastos",this.getGastos(solicitud)); - solicitud.modifiedData.put("nomResDirFin", this.getNomRespDirFin(emp)==null?"":this.getNomRespDirFin(emp)); - - } - - } - - /** - * Método para obtener el nombre del responsable de la Dirección Financiera - * @param empleado - * @return - * @throws CommondbException - */ - private String getNomRespDirFin(Empleado empleado) throws CommondbException - { - String value = null; - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(queryNomRespDirFin); - qry.setParameter("codLocalidad", empleado.getCodigoLocalidad()); - try{ - value = (String)qry.getSingleResult(); - }catch(NoResultException ex){ - value = null; - } - return value; - } - - - /** - * Método para obtener los gastos totalizados por solicitud y tipo de documento - * @param solicitud - * @return - * @throws CommondbException - */ - private BigDecimal getGastos(ViaSolicitud solicitud) throws CommondbException - { - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(query); - - qry.setParameter("codSolicitud", solicitud.getPk().getCod_solicitud()); - qry.setParameter("codTipo", solicitud.getPk().getCod_tipo()); - - return (BigDecimal)qry.getSingleResult(); - } - - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaLovSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaLovSolicitud.java.svn-base deleted file mode 100644 index a3b44dc..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/query/solicitud/.svn/text-base/ConsultaLovSolicitud.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -package com.fp.viaticos.rules.query.solicitud; - -import java.math.BigDecimal; -import java.util.Calendar; -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.viaticos.rules.query.destino.DestinoQuery; - -public class ConsultaLovSolicitud extends QueryRule{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public QueryRequest process(QueryRequest pQrequest) throws Exception { - Response response = pQrequest.getResponse(); - QueryJsf query = new QueryJsf(); - query.execute(pQrequest); - List solicitudes = (List)response.get("SOLICITUDLOV"); - this.completeInfoSolicitud(solicitudes); - return null; - } - - /** - * Completa los datos de la solicitud - * @param List Objetos ViaSolicitud - * @throws Exception - */ - public void completeInfoSolicitud(List objects) throws Exception{ - if(objects==null){ - return; - } - for(Object object: objects){ - ViaSolicitud solicitud = (ViaSolicitud)object; - DestinoQuery qry = new DestinoQuery(); - //Destino - Object obj = qry.find(solicitud.getCod_destino()); - if(obj!=null){ - Object[] destino = (Object[])obj; - solicitud.modifiedData.put("destinoname", destino[1]); - } - } - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/.svn/entries deleted file mode 100644 index c4531cf..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - -acumulados -dir - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/entries deleted file mode 100644 index 70be502..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DiasAcumulados.java -file - - - - -2022-07-28T03:40:39.877791Z -023012b41e04c8e3183e6424829007cd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2462 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/text-base/DiasAcumulados.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/text-base/DiasAcumulados.java.svn-base deleted file mode 100644 index 7363ab3..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/acumulados/.svn/text-base/DiasAcumulados.java.svn-base +++ /dev/null @@ -1,77 +0,0 @@ -package com.fp.viaticos.rules.save.acumulados; - -import java.math.BigDecimal; -import java.sql.Date; -import java.util.Calendar; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.param.ViaDiasAcumulados; -import com.fp.persistence.pviaticos.param.ViaDiasAcumuladosKey; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.viaticos.rules.enums.EnumCodigos; -/** - * Clase que se encarga de completar informacin para acumulacion de dias en la solicitud de viaticos. - * - * @author WPA. - * @version 2.1 - */ -public class DiasAcumulados extends TransactionRule { - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) { - return pSaveRequest; - } - - String solicitud = (String)pSaveRequest.get("csolicitud"); - - ViaSolicitud informe = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, EnumCodigos.INFORME.getCodigo())); - if(informe == null){ - return pSaveRequest; - } - - ViaDiasAcumuladosKey key = new ViaDiasAcumuladosKey(); - key.setCod_destino(informe.getCod_destino()); - key.setCod_ejercicio(this.getYear(informe.getFec_creacion())); - key.setCod_empleado(informe.getCod_empleado()); - - ViaDiasAcumulados acumulado = ViaDiasAcumulados.find(PersistenceHelper.getEntityManager(), key); - - if(acumulado!=null){ - BigDecimal dias = acumulado.getNum_dias().add(informe.getNum_dias()); - acumulado.setNum_dias(dias); - - }else{ - acumulado = new ViaDiasAcumulados(); - acumulado.setPk(key); - acumulado.setNum_dias(informe.getNum_dias()); - PersistenceHelper.saveOrUpdate(acumulado); - } - - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Entrega el anio - * @param date Fecha - * @return year - */ - private Integer getYear(Date date){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - return calendar.get(Calendar.YEAR); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/entries deleted file mode 100644 index 792c16c..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud -svn://172.17.26.185/COMACO - - - -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Solicitud.java -file - - - - -2022-07-28T03:40:39.827790Z -7f1a6521f5aa8cbfaddb3fb5147408f8 -2015-06-23T07:17:36.315401Z -4128 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2129 - -SolicitudTransporte.java -file - - - - -2022-07-28T03:40:39.827790Z -25f16b2f23662e1353aeca858d963893 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1790 - -estados -dir - -Comentarios.java -file - - - - -2022-07-28T03:40:39.828790Z -52fd902388be70b3ea569d4dd6c589f2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3012 - -SolicitudIntegrantes.java -file - - - - -2022-07-28T03:40:39.828790Z -fd19052b4417aab259c112bf13c30142 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1780 - -ValidaFeriados.java -file - - - - -2022-07-28T03:40:39.828790Z -b222f74f04a3a650d42f97acdd08a702 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7753 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Comentarios.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Comentarios.java.svn-base deleted file mode 100644 index 0796b90..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Comentarios.java.svn-base +++ /dev/null @@ -1,73 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud; - -import java.sql.Date; -import java.text.SimpleDateFormat; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudComentarios; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudComentariosKey; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.viaticos.rules.enums.EnumCodigos; - -/** - * Clase que se encarga de almacenar comentarios de la tarea y el estatus actual de la solicitud. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Comentarios extends TransactionRule { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (pSaveRequest.get("csolicitud") == null || pSaveRequest.get("BPMStatus") == null || pSaveRequest.get("tipo") == null) { - return pSaveRequest; - } - String csolicitud = pSaveRequest.getString("csolicitud"); - // El estado y los comentarios solo van a la solicitud. - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, EnumCodigos.SOLICITUD.getCodigo())); - this.crearComentario(pSaveRequest, vsol); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - private void crearComentario(SaveRequest pSaveRequest, ViaSolicitud vsol) throws Exception { - ViaSolicitudComentariosKey key = new ViaSolicitudComentariosKey(); - key.setCod_solicitud(vsol.getPk().getCod_solicitud()); - key.setCod_tipo(vsol.getPk().getCod_tipo()); - - ViaSolicitudComentarios comen = new ViaSolicitudComentarios(key); - comen.setCod_estado(vsol.getCod_estado()); - comen.setCod_usuario(pSaveRequest.getUser()); - Date f = FormatDates.getInstance().getDataBaseDate(); - SimpleDateFormat sdf = FormatDates.getInstance().getHourSecondsFormat(); - comen.setFec_comentario(f); - comen.setFec_hora(sdf.format(FormatDates.getInstance().getDataBaseTimestamp())); - comen.setTxt_actividad(pSaveRequest.getString("taskname")); - comen.setTxt_comentario(pSaveRequest.getString("BPMObs")); - // Almacena en la base de datos el comentario. - PersistenceHelper.getEntityManager().persist(comen); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base deleted file mode 100644 index 5870a4c..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/Solicitud.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.sessionbeans.helper.Sequence; - -/** - * Clase que se encarga de completar informacin de una solicitud de viaticos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Solicitud extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") != null) { - return pSaveRequest; - } - String codSolicitud = null; - ViaSolicitud viasolicitud = (ViaSolicitud) pSaveRequest.getSaveBeanModifiedObject("SOLICITUD"); - if (viasolicitud == null) { - return pSaveRequest; - } - codSolicitud = viasolicitud.getPk().getCod_solicitud(); - if (viasolicitud.getPk().getCod_solicitud() == null) { - codSolicitud = this.getCodigoSolicitud(); - viasolicitud.getPk().setCod_solicitud(codSolicitud); - pSaveRequest.put("csolicitud", codSolicitud); - } - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - - /** - * Metodo que devuelve la secuencia de una solicitud de viaticos. - * - * @return Codigo de la nueva solicitud de viaticos. - * @throws Exception - */ - private String getCodigoSolicitud() throws Exception { - Sequence sequence = new Sequence(); - Integer solcitud = Integer.valueOf(sequence.getNextValue("VIATICOS").toString()); - return solcitud.toString(); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudIntegrantes.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudIntegrantes.java.svn-base deleted file mode 100644 index fd0718d..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudIntegrantes.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud; - -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudIntegrantes; - -/** - * Clase que se encarga de completar informacin de integrantes de una solicitud de viaticos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class SolicitudIntegrantes extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) { - return pSaveRequest; - } - String codSolicitud = (String) pSaveRequest.get("csolicitud"); - List lintegrantes = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDINTEGRANTES"); - if(lintegrantes==null || lintegrantes.isEmpty()){ - return null; - } - for (Object object : lintegrantes) { - ViaSolicitudIntegrantes obj = (ViaSolicitudIntegrantes) object; - if (obj.getPk().getCod_solicitud() == null) { - obj.getPk().setCod_solicitud(codSolicitud); - } - } - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudTransporte.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudTransporte.java.svn-base deleted file mode 100644 index 2331bcc..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/SolicitudTransporte.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud; - -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudTransporte; - -/** - * Clase que se encarga de completar informacin de medios de transporte utilizados en la solicitud de viaticos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class SolicitudTransporte extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") == null) { - return pSaveRequest; - } - String codSolicitud = (String) pSaveRequest.get("csolicitud"); - List ltransporte = pSaveRequest.getSaveBeanModifiedRecords("SOLICITUDTRANSPORTE"); - if(ltransporte==null || ltransporte.isEmpty()){ - return null; - } - for (Object object : ltransporte) { - ViaSolicitudTransporte obj = (ViaSolicitudTransporte) object; - if (obj.getPk().getCod_solicitud() == null) { - obj.getPk().setCod_solicitud(codSolicitud); - } - } - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/ValidaFeriados.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/ValidaFeriados.java.svn-base deleted file mode 100644 index 3c1870a..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/.svn/text-base/ValidaFeriados.java.svn-base +++ /dev/null @@ -1,207 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud; - -import java.math.BigDecimal; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.List; -import java.util.Locale; - -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.param.ViaParametros; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.viaticos.rules.enums.EnumCodigos; -import com.fp.viaticos.rules.exception.ViaticosException; -/** - * Clase que valida las fechas de la solicitud - * @author BPTWPA - * @version 2.1 - */ -public class ValidaFeriados extends TransactionRule { - - private static final long serialVersionUID = 1L; - - /** - * Milisegundos - */ - private static final long MILISEGUNDOS = 24 * 60 * 60 * 1000; - - /** - * Método que ejecuta el proceso de mantenimiento/control - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - if (Constant.ifYes((String) pSaveRequest.get("isnew")) || pSaveRequest.get("csolicitud") != null) { - return pSaveRequest; - } - - String csolicitud = (String)pSaveRequest.get("csolicitud"); - - ViaSolicitud viasolicitud = (ViaSolicitud) pSaveRequest.getSaveBeanModifiedObject("SOLICITUD"); - if (viasolicitud == null) { - return pSaveRequest; - } - if(csolicitud!=null && viasolicitud.equals(csolicitud)){ - return pSaveRequest; - } - this.validateDates(viasolicitud); - this.validateViatico(viasolicitud); - this.validateSolicitude(viasolicitud); - return pSaveRequest; - } - - /** - * Validaci´n de fechas de la solicitud - * @param solicitud - */ - public void validateSolicitude(ViaSolicitud solicitud) throws Exception{ - - String firstYear = this.getYear(solicitud.getFec_ini_viatico()); - String secondYear = this.getYear(solicitud.getFec_fin_viatico()); - String firstDate = this.getDate(solicitud.getFec_ini_viatico()); - String secondDate = this.getDate(solicitud.getFec_fin_viatico()); - - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(ValidaFeriados.SQL); - qry.setParameter("firstYear", firstYear); - qry.setParameter("secondYear", secondYear); - qry.setParameter("firstDate", firstDate); - qry.setParameter("secondDate", secondDate); - - List feriados = qry.getResultList(); - - if(!feriados.isEmpty()){ - throw new ViaticosException("VIA-0003", "EXISTEN D\u00cdAS FERIADOS PARA EL PERIODO: {0} / {1}", this.getDate(solicitud.getFec_ini_viatico()), this.getDate(solicitud.getFec_fin_viatico())); - } - } - - /** - * Validaci´n de fechas de la solicitud - * @param solicitud - */ - public void validateViatico(ViaSolicitud solicitud) throws Exception{ - - String firstDate = this.getDate(solicitud.getFec_ini_viatico()); - - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(ValidaFeriados.SQL_SOL); - qry.setParameter("firstDate", firstDate); - qry.setParameter("initTime", solicitud.getFec_hora_inicio()); - qry.setParameter("codEmployee", solicitud.getCod_empleado()); - - List solicitudes = qry.getResultList(); - - if(!solicitudes.isEmpty()){ - throw new ViaticosException("VIA-0004", "YA EXISTE UNA SOLICITUD INGRESADA PARA EL PERIODO: {0} / {1}", this.getDate(solicitud.getFec_ini_viatico()), this.getDate(solicitud.getFec_fin_viatico())); - } - } - - /** - * Valída las fechas de comisión - * @param solicitud ViaSolicitud - * @throws Exception - */ - private void validateDates(ViaSolicitud solicitud) throws Exception{ - - long dias = (solicitud.getFec_fin_viatico().getTime() - solicitud.getFec_ini_viatico().getTime()) / ValidaFeriados.MILISEGUNDOS; - - ViaParametros parametroDias = ViaParametros.find(PersistenceHelper.getEntityManager(), EnumCodigos.VIA_03.getCodigo()); - - if(parametroDias==null){ - throw new ViaticosException("VIA-0005", "PAR\u00c1METRO DE N\u00daMERO M\u00c1XIMO DE D\u00CDAS NO ENCONTRADO"); - } - - if(parametroDias.getNum_valor().compareTo(new BigDecimal(dias)) < 0){ - throw new ViaticosException("VIA-0006", "HA EXCEDIDO EL N\u00daMERO DE D\u00cdAS PERMITIDOS PARA EL VI\u00cdTICO"); - } - - if(this.obtieneDia(solicitud.getFec_ini_viatico())==1 || this.obtieneDia(solicitud.getFec_ini_viatico())==7){ - ViaParametros param = ViaParametros.find(PersistenceHelper.getEntityManager(), EnumCodigos.VIA_04.getCodigo()); - if(param.getTex_valor().equals("N")){ - throw new ViaticosException("VIA-0008", "NO PUEDE REGISTRAR UN FIN DE SEMANA COMO SALIDA DEL VI\u00cdTICO {0}",this.getDate(solicitud.getFec_ini_viatico())); - } - } - - if(this.obtieneDia(solicitud.getFec_fin_viatico())==7){ - ViaParametros param = ViaParametros.find(PersistenceHelper.getEntityManager(), EnumCodigos.VIA_05.getCodigo()); - if(param.getTex_valor().equals("N")){ - throw new ViaticosException("VIA-0009", "NO PUEDE REGISTRAR UN FIN DE SEMANA COMO LLEGADA DEL VI\u00cdTICO {0}",this.getDate(solicitud.getFec_fin_viatico())); - } - } - - for(int i=0; i <= dias;i++){ - Date fecha = this.agregarDias(solicitud.getFec_ini_viatico(), i); - int dia = this.obtieneDia(fecha); - if(i == 0 && ( dia == 1 || dia == 7)){ - continue; - } - if(i == dias && dia == 1){ - throw new ViaticosException("VIA-0009", "NO PUEDE REGISTRAR UN FIN DE SEMANA COMO LLEGADA DEL VI\u00cdTICO {0}",this.getDate(solicitud.getFec_fin_viatico())); - } - if(dia == 1 || dia == 7){ - throw new ViaticosException("VIA-0007", "EXISTEn FINES DE SEMANA EN EN EL PERIODO SELECIONADO {0} / {1}",this.getDate(solicitud.getFec_ini_viatico()), this.getDate(solicitud.getFec_fin_viatico())); - } - } - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - // TODO Auto-generated method stub - return pSaveRequest; - } - - /** - * Entrega el anio - * @param date Fecha - * @return year - */ - private String getYear(Date date){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(date); - return String.valueOf(calendar.get(Calendar.YEAR)); - } - - /** - * Obtiene la fecha en string - * @param date - * @return - */ - private String getDate(Date date){ - SimpleDateFormat formato = new SimpleDateFormat("dd-MM-yyyy", new Locale("es", "ES")); - return formato.format(date); - } - /** - * Agrega dias a una fecha - */ - private Date agregarDias(Date fecha, int dias) { - Calendar calendario = Calendar.getInstance(); - calendario.setTime(fecha); - calendario.add(Calendar.DATE, dias); - return new Date(calendario.getTime().getTime()); - } - /** - * obriene el dia de la semana - */ - private Integer obtieneDia(Date fecha) { - Calendar cal = Calendar.getInstance(); - cal.setTime(fecha); - return cal.get(Calendar.DAY_OF_WEEK); - } - /** - * Sql del esquema SRM para los dias feriados - */ - private static String SQL = "select FEC_DIA from SRM.SRM_DIAS_FERIADOS " - + "where (to_char(FEC_DIA, 'yyyy') = :firstYear or to_char(FEC_DIA, 'yyyy') = :secondYear) " - + "AND FEC_DIA BETWEEN TO_DATE(:firstDate, 'dd-MM-yyyy') AND TO_DATE(:secondDate, 'dd-MM-yyyy')"; - - /** - * Sql para obtener las solicitudes ingresadas - */ - private static String SQL_SOL = "SELECT DISTINCT(SOL.COD_SOLICITUD) FROM VIA.VIA_SOLICITUD SOL " - + "WHERE SOL.COD_ESTADO NOT IN ('SAN') AND SOL.COD_EMPLEADO = :codEmployee " - + "AND SOL.FEC_FIN_VIATICO >= TO_DATE( :firstDate, 'dd-MM-yyyy') and SOL.FEC_HORA_FIN >= :initTime "; -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/entries deleted file mode 100644 index 09c322c..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/entries +++ /dev/null @@ -1,436 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EstadoHelper.java -file - - - - -2022-07-28T03:40:39.795790Z -2f789265a85eb85243f96f066030bb33 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1326 - -PorAprobarModificaciones.java -file - - - - -2022-07-28T03:40:39.795790Z -ee7326ce467ae23a6997ade66bad08c7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1087 - -Anulada.java -file - - - - -2022-07-28T03:40:39.795790Z -7bfea3aa21e3d3f29946907f0a789ad0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1207 - -InformeAprobado.java -file - - - - -2022-07-28T03:40:39.796790Z -fd41a11906f15f7ff46a9a12d7e51fce -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1218 - -InformePorAprobar.java -file - - - - -2022-07-28T03:40:39.796790Z -26cdd999caf4e079753e12091136b11c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1112 - -PorAprobar.java -file - - - - -2022-07-28T03:40:39.796790Z -b0c5e14948d614d3ab3d7ee2c8e94cfd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1092 - -ConfirmaAnulacion.java -file - - - - -2022-07-28T03:40:39.796790Z -7b2d1702528e0de9393c546d3ccaf03f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1079 - -Aprobada.java -file - - - - -2022-07-28T03:40:39.797790Z -1917fdfea329a94004d66d16ff15547e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1210 - -PorIngresarInforme.java -file - - - - -2022-07-28T03:40:39.797790Z -b0487f994ad7f339e337ffed90685465 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1239 - -InformePorCorregir.java -file - - - - -2022-07-28T03:40:39.797790Z -f1143e47d056a73da25903bb67ccb4e0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1229 - -NegarComision.java -file - - - - -2022-07-28T03:40:39.797790Z -56508c4038d523181db85135aca6fa08 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1241 - -PorCorregir.java -file - - - - -2022-07-28T03:40:39.798790Z -03e31b2f497424a3554a2fff05e5b267 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1221 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Anulada.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Anulada.java.svn-base deleted file mode 100644 index d83c8ff..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Anulada.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a anulada. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class Anulada extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("D")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.ANULADA.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Aprobada.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Aprobada.java.svn-base deleted file mode 100644 index fdb917e..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/Aprobada.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a aprobada. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class Aprobada extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("A")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.APROBADA.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/ConfirmaAnulacion.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/ConfirmaAnulacion.java.svn-base deleted file mode 100644 index c7d553a..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/ConfirmaAnulacion.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a anulada forzado sin considerar la opcion de la tarea - * aprobar, negar, modificar. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class ConfirmaAnulacion extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - super.cambiar(pSaveRequest, EnumEstadosSolicitud.ANULADA.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/EstadoHelper.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/EstadoHelper.java.svn-base deleted file mode 100644 index a7370c3..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/EstadoHelper.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.viaticos.rules.enums.EnumCodigos; - -/** - * Clase que se encarga de cambiar el estado de una solicitud o de un informe. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public abstract class EstadoHelper extends TransactionRule { - - /** - * Metodo que cambia el estado de una solicitud o de un informe. - * - * @param pSaveRequest Objeto que tien informacion util para el procesamiento de una transaccion. - * @param cestado Codigo de estado a actualziar en la solicitud o el informe. - * @throws Exception - */ - protected void cambiar(SaveRequest pSaveRequest, String cestado) throws Exception { - String csolicitud = pSaveRequest.getString("csolicitud"); - // El tipo siempre es S el informe no maneja estados. - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(csolicitud, EnumCodigos.SOLICITUD.getCodigo())); - vsol.setCod_estado(cestado); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformeAprobado.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformeAprobado.java.svn-base deleted file mode 100644 index 2970090..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformeAprobado.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de un informe a aprobado. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class InformeAprobado extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("A")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.INF_APROBADO.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorAprobar.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorAprobar.java.svn-base deleted file mode 100644 index 8683365..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorAprobar.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de un informe a por aprobar. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class InformePorAprobar extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (pSaveRequest.get("BPMStatus") == null) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.INF_POR_APROBAR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorCorregir.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorCorregir.java.svn-base deleted file mode 100644 index c3a58dc..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/InformePorCorregir.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de un informe a por corregir. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class InformePorCorregir extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("M")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.INF_POR_CORREGIR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/NegarComision.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/NegarComision.java.svn-base deleted file mode 100644 index b531427..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/NegarComision.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a anulacion por aprobar. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class NegarComision extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("D")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.ANULACION_POR_APROBAR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobar.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobar.java.svn-base deleted file mode 100644 index dacadac..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobar.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a por aprobar. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class PorAprobar extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - if (!this.isNew(pSaveRequest)) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.POR_APROBAR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobarModificaciones.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobarModificaciones.java.svn-base deleted file mode 100644 index 3c36489..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorAprobarModificaciones.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a por aprobar cuando el servidor publico realiza - * modificacionesa la solicitud. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class PorAprobarModificaciones extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - super.cambiar(pSaveRequest, EnumEstadosSolicitud.POR_APROBAR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorCorregir.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorCorregir.java.svn-base deleted file mode 100644 index 4eda698..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorCorregir.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a por corregir. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class PorCorregir extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("M")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.POR_CORREGIR.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorIngresarInforme.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorIngresarInforme.java.svn-base deleted file mode 100644 index d03378f..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/rules/save/solicitud/estados/.svn/text-base/PorIngresarInforme.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.rules.save.solicitud.estados; - -import com.fp.dto.save.SaveRequest; -import com.fp.simple.dto.Responses; -import com.fp.viaticos.rules.enums.EnumEstadosSolicitud; - -/** - * Clase que se encarga de cambiar el estado de una solicitud a por ingresar informe. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -public class PorIngresarInforme extends EstadoHelper { - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#normalProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - Responses resp = Responses.findResponse(pSaveRequest.getString("BPMStatus")); - if (!resp.getCode().equals("A")) { - return pSaveRequest; - } - super.cambiar(pSaveRequest, EnumEstadosSolicitud.POR_ING_INFORME.getEstatus()); - return pSaveRequest; - } - - /* - * (non-Javadoc) - * - * @see com.fp.dto.rules.TransactionRule#reverseProcess(com.fp.dto.save.SaveRequest) - */ - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception { - return pSaveRequest; - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/entries b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/entries deleted file mode 100644 index 0f49da3..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/entries +++ /dev/null @@ -1,334 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/java/com/fp/viaticos/task -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AsignarSupervisior.java -file - - - - -2022-07-28T03:40:39.402789Z -a9df1e49e911aef7353cb563a8f0ee95 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1766 - -AsignarSupervisiorInforme.java -file - - - - -2022-07-28T03:40:39.402789Z -5aa91f911a6a120ff3ecbf0554787569 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1775 - -AsignarContabilidad.java -file - - - - -2022-07-28T03:40:39.402789Z -1f93f3475ea261ecce56a13de0e5310e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3014 - -AsignarTesoreria.java -file - - - - -2022-07-28T03:40:39.402789Z -c76b90169e97f9ea6759058d2e1bacc9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3006 - -AsignarTalentoHumano.java -file - - - - -2022-07-28T03:40:39.403789Z -f4b7b588d41596f64d581d959cb24f5a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3018 - -AsignarUsuarioIngresaSolicitud.java -file - - - - -2022-07-28T03:40:39.403789Z -36176d6913a90fd12cae00e64eb8ccad -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1317 - -AsignarEmpleado.java -file - - - - -2022-07-28T03:40:39.403789Z -45b79e520e26850ef919b02256c1d244 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1426 - -AsignarJefe.java -file - - - - -2022-07-28T03:40:39.403789Z -e59339d83fa0576332f6f39cbda54d1e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2081 - -AsignarJefeInforme.java -file - - - - -2022-07-28T03:40:39.403789Z -be6d865e6d12a3e0a5cf522318ab9126 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2085 - diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarContabilidad.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarContabilidad.java.svn-base deleted file mode 100644 index df36e1a..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarContabilidad.java.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de obtener y fijar el usuario responsable de ejecutar la tarea de contabilidad. - * - * @version 2.1 - */ -public class AsignarContabilidad extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - if (e.getCodigoLocalidad() == null) { - throw new ViaticosException("VIA-0001", "CODIGO DE LOCALIDAD NO ASOCIADO AL EMPLEADO: {0} {1}", e.getCodigo(), e.getNombre()); - } - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - m.put("userId", this.getUsuario(e.getCodigoLocalidad(), "CONTABILIDAD")); - m.put("action", "A"); - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarEmpleado.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarEmpleado.java.svn-base deleted file mode 100644 index 7ddfc2e..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarEmpleado.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de empleado asociado a la solicitud en el request campo userId, para asignar - * una tarea. - * - * @version 2.1 - */ -public class AsignarEmpleado extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql e = new EmpleadoJpql(); - m.put("userId", e.find(vsol.getCod_empleado()).getUsuarioweb().toUpperCase()); - m.put("action", "A"); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefe.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefe.java.svn-base deleted file mode 100644 index 2c4dd97..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefe.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de jefe del empleado que realiza una solicitud de viaticos, en el request - * campo userId, para asignar una tarea. - * - * @version 2.1 - */ -public class AsignarJefe extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoJefe = vsol.getCod_jefe(); - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado emp = ejpql.find(vsol.getCod_empleado()); - if (codigoJefe == null) { - codigoJefe = emp.getCodigoJefe(); - } - - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - - m.put("userId", ejpql.find(codigoJefe).getUsuarioweb().toUpperCase()); - if (emp.getCodigoJefe().equals(emp.getCodigoResponsableUnidad())) { - m.put("action", "N"); // Va con N para que no le asigane la tarea al jefe inmediato solo asigana al - // responsable de la unidad. - } else { - m.put("action", "A"); - } - - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefeInforme.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefeInforme.java.svn-base deleted file mode 100644 index df64453..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarJefeInforme.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de jefe del empleado que ingresa el informe de viaticos, en el request campo - * userId, para asignar una tarea. - * - * @version 2.1 - */ -public class AsignarJefeInforme extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "I")); - - String codigoJefe = vsol.getCod_jefe(); - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado emp = ejpql.find(vsol.getCod_empleado()); - if (codigoJefe == null) { - codigoJefe = emp.getCodigoJefe(); - } - - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - - m.put("userId", ejpql.find(codigoJefe).getUsuarioweb().toUpperCase()); - if (emp.getCodigoJefe().equals(emp.getCodigoResponsableUnidad())) { - m.put("action", "N"); // Va con N para que no le asigane la tarea al jefe inmediato solo asigana al - // responsable de la unidad. - } else { - m.put("action", "A"); - } - - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisior.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisior.java.svn-base deleted file mode 100644 index 98803a9..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisior.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de supervisor de area, del empleado que realiza una solicitud de viaticos, en - * el request campo userId, para asignar una tarea. - * - * @version 2.1 - */ -public class AsignarSupervisior extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - String codigoRespUnidad = vsol.getCod_responsable(); - EmpleadoJpql e = new EmpleadoJpql(); - if (codigoRespUnidad == null) { - codigoRespUnidad = e.find(vsol.getCod_empleado()).getCodigoResponsableUnidad(); - } - - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - m.put("userId", e.find(codigoRespUnidad).getUsuarioweb().toUpperCase()); - m.put("action", "A"); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisiorInforme.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisiorInforme.java.svn-base deleted file mode 100644 index 2c3155e..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarSupervisiorInforme.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de supervisor de area, del empleado que realiza una liquidacion de viaticos, - * en el request campo userId, para asignar una tarea. - * - * @version 2.1 - */ -public class AsignarSupervisiorInforme extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "I")); - - String codigoRespUnidad = vsol.getCod_responsable(); - EmpleadoJpql e = new EmpleadoJpql(); - if (codigoRespUnidad == null) { - codigoRespUnidad = e.find(vsol.getCod_empleado()).getCodigoResponsableUnidad(); - } - - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - m.put("userId", e.find(codigoRespUnidad).getUsuarioweb().toUpperCase()); - m.put("action", "A"); - } - -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTalentoHumano.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTalentoHumano.java.svn-base deleted file mode 100644 index 73111b1..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTalentoHumano.java.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de obtener y fijar el usuario responsable de ejecutar la tarea de talento humano. - * - * @version 2.1 - */ -public class AsignarTalentoHumano extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - if (e.getCodigoLocalidad() == null) { - throw new ViaticosException("VIA-0001", "CODIGO DE LOCALIDAD NO ASOCIADO AL EMPLEADO: {0} {1}", e.getCodigo(), e.getNombre()); - } - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - m.put("userId", this.getUsuario(e.getCodigoLocalidad(), "TALENTOHUMANO")); - m.put("action", "A"); - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTesoreria.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTesoreria.java.svn-base deleted file mode 100644 index 6dbd1df..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarTesoreria.java.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; -import com.fp.persistence.pviaticos.param.ViaCiudadUsuario; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; -import com.fp.viaticos.rules.exception.ViaticosException; - -/** - * Clase que se encarga de obtener y fijar el usuario responsable de ejecutar la tarea de tesoreria.. - * - * @version 2.1 - */ -public class AsignarTesoreria extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.simple.flow.DataMap) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - EmpleadoJpql ejpql = new EmpleadoJpql(); - Empleado e = ejpql.find(vsol.getCod_empleado()); - if (e.getCodigoLocalidad() == null) { - throw new ViaticosException("VIA-0001", "CODIGO DE LOCALIDAD NO ASOCIADO AL EMPLEADO: {0} {1}", e.getCodigo(), e.getNombre()); - } - // El userID va en mayusculas asi esta definido en las tablas de jbpm y maia. - m.put("userId", this.getUsuario(e.getCodigoLocalidad(), "TESORERIA")); - m.put("action", "A"); - } - - /** - * Busca en la tabla ViaCiudadUsuario, el codigo de usuario asociado a una localidad a la que pertence un - * funcionario de la SBS. - * - * @param ciudad Codigo de ciudad a obtener el usuario. - * @return String - * @throws Exception - */ - private String getUsuario(String ciudad, String actividad) throws Exception { - Query qry = PersistenceHelper.getEntityManager().createQuery( - "from ViaCiudadUsuario t where t.pk.cod_actividad_catalog = :actividad and t.pk.cod_ciudad_catalog = :ciudad "); - qry.setParameter("ciudad", ciudad); - qry.setParameter("actividad", actividad); - ViaCiudadUsuario obj = null; - try { - obj = (ViaCiudadUsuario) qry.getSingleResult(); - } catch (NoResultException e) { - throw new ViaticosException("VIA-0002", "USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} ACTIVIDAD: {1} ", ciudad, actividad); - } - return obj.getCod_usuario(); - } -} diff --git a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarUsuarioIngresaSolicitud.java.svn-base b/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarUsuarioIngresaSolicitud.java.svn-base deleted file mode 100644 index a68e1b5..0000000 --- a/base/business/viaticos/src/main/java/com/fp/viaticos/task/.svn/text-base/AsignarUsuarioIngresaSolicitud.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.viaticos.task; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitud; -import com.fp.persistence.pviaticos.solicitud.ViaSolicitudKey; -import com.fp.simple.action.TaskAction; - -/** - * Clase que se encarga de fijar el codigo de usuario de ingreso de la solicitud en el request campo userId, para - * asignar una tarea. - * - * @version 2.1 - */ -public class AsignarUsuarioIngresaSolicitud extends TaskAction { - - /* - * (non-Javadoc) - * - * @see com.fp.simple.action.TaskAction#assignOwner(com.fp.dto.Request) - */ - @SuppressWarnings("unchecked") - @Override - public void assignOwner(Object pParam) throws Exception { - HashMap m = (HashMap) pParam; - - Map mrequest = (Map) m.get("request"); - if (mrequest.get("csolicitud") == null) { - return; - } - String solicitud = (String) mrequest.get("csolicitud"); - ViaSolicitud vsol = ViaSolicitud.find(PersistenceHelper.getEntityManager(), new ViaSolicitudKey(solicitud, "S")); - - m.put("userId", vsol.getCod_usuario().toUpperCase()); - m.put("action", "A"); - } - -} diff --git a/base/business/viaticos/src/main/resources/.svn/entries b/base/business/viaticos/src/main/resources/.svn/entries deleted file mode 100644 index 49eab02..0000000 --- a/base/business/viaticos/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -viamessages_es.properties -file - - - - -2022-07-28T03:40:40.126792Z -c2935165fb30ba3689c3abdc4d14323f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -666 - diff --git a/base/business/viaticos/src/main/resources/.svn/text-base/viamessages_es.properties.svn-base b/base/business/viaticos/src/main/resources/.svn/text-base/viamessages_es.properties.svn-base deleted file mode 100644 index fe07c4a..0000000 --- a/base/business/viaticos/src/main/resources/.svn/text-base/viamessages_es.properties.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -# CODIGOS DE MENSAJE -VIA-0001=CODIGO DE LOCALIDAD NO ASOCIADO AL EMPLEADO: {0} {1} -VIA-0002=USUARIO NO DEFINIDO EN VIA_CIUDAD_USUARIO CIUDAD: {0} -VIA-0003=EXISTEN D\u00cdAS FERIADOS PARA EL PERIODO\: {0} / {1} -VIA-0004=YA EXISTE UNA SOLICITUD INGRESADA PARA EL PERIODO: {0} / {1} -VIA-0005=PAR\u00c1METRO DE N\u00daMERO M\u00c1XIMO DE D\u00cdAS NO ENCONTRADO -VIA-0006=HA EXCEDIDO EL N\u00daMERO DE D\u00cdAS PERMITIDO PARA EL VI\u00cdTICO -VIA-0007=EXISTEn FINES DE SEMANA EN EL PERIODO SELECIONADO {0} / {1} - VIA-0008=NO PUEDE REGISTRAR UN FIN DE SEMANA COMO SALIDA DEL VI\u00cdTICO {0} - VIA-0009=NO PUEDE REGISTRAR UN FIN DE SEMANA COMO LLEGADA DEL VI\u00cdTICO {0} diff --git a/base/business/viaticos/src/test/.svn/entries b/base/business/viaticos/src/test/.svn/entries deleted file mode 100644 index d3d5d43..0000000 --- a/base/business/viaticos/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/business/viaticos/src/test/java/.svn/entries b/base/business/viaticos/src/test/java/.svn/entries deleted file mode 100644 index 50088db..0000000 --- a/base/business/viaticos/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/business/viaticos/src/test/java/com/.svn/entries b/base/business/viaticos/src/test/java/com/.svn/entries deleted file mode 100644 index 88c2845..0000000 --- a/base/business/viaticos/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/business/viaticos/src/test/java/com/fp/.svn/entries b/base/business/viaticos/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 6738979..0000000 --- a/base/business/viaticos/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/business/viaticos/src/test/java/com/fp/base/.svn/entries b/base/business/viaticos/src/test/java/com/fp/base/.svn/entries deleted file mode 100644 index 7fa7e0c..0000000 --- a/base/business/viaticos/src/test/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -business -dir - diff --git a/base/business/viaticos/src/test/java/com/fp/base/business/.svn/entries b/base/business/viaticos/src/test/java/com/fp/base/business/.svn/entries deleted file mode 100644 index 6aebdf2..0000000 --- a/base/business/viaticos/src/test/java/com/fp/base/business/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/business/viaticos/src/test/java/com/fp/base/business -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AppTest.java -file - - - - -2022-07-28T03:40:39.105787Z -6169340dd2ff6d4b207fa8fafced0c64 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -686 - diff --git a/base/business/viaticos/src/test/java/com/fp/base/business/.svn/text-base/AppTest.java.svn-base b/base/business/viaticos/src/test/java/com/fp/base/business/.svn/text-base/AppTest.java.svn-base deleted file mode 100644 index 24b4d47..0000000 --- a/base/business/viaticos/src/test/java/com/fp/base/business/.svn/text-base/AppTest.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.base.business; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/base/core/.svn/entries b/base/core/.svn/entries deleted file mode 100644 index a36f422..0000000 --- a/base/core/.svn/entries +++ /dev/null @@ -1,71 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core -svn://172.17.26.185/COMACO - - - -2015-02-20T10:57:23.058271Z -3827 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firmas -dir - -alfresco-client -dir - -pom.xml -file - - - - -2022-07-28T03:40:38.670785Z -247eeb6c7a90a32507357f7f4974d671 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1372 - -bpm -dir - diff --git a/base/core/.svn/text-base/pom.xml.svn-base b/base/core/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index a4d2510..0000000 --- a/base/core/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,42 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - core - flipbean - 2.1 - pom - Financial Lifecycle Process - - bpm - firmas - alfresco-client - - - - - com.fp.base.dto - common - 2.1 - - - com.fp.base.dto - dto - 2.1 - - - org.hibernate - hibernate-core - provided - - - org.hibernate - hibernate-entitymanager - - - \ No newline at end of file diff --git a/base/core/alfresco-client/.svn/dir-prop-base b/base/core/alfresco-client/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/core/alfresco-client/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/core/alfresco-client/.svn/entries b/base/core/alfresco-client/.svn/entries deleted file mode 100644 index 1c8fb7c..0000000 --- a/base/core/alfresco-client/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client -svn://172.17.26.185/COMACO - - - -2015-02-20T10:57:23.058271Z -3827 -cpiedra -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:37.916782Z -783e949153b7d338b61d9a9e7071dbe1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1448 - diff --git a/base/core/alfresco-client/.svn/text-base/pom.xml.svn-base b/base/core/alfresco-client/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index b9e43ab..0000000 --- a/base/core/alfresco-client/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,44 +0,0 @@ - - 4.0.0 - - com.fp.base - core - 2.1 - - com.fp.base.core - alfresco-client - http://maven.apache.org - - UTF-8 - - - - - org.apache.httpcomponents - httpclient - 4.3.1 - provided - - - org.apache.httpcomponents - httpmime - 4.3.1 - provided - - - org.apache.httpcomponents - httpcore - 4.3.1 - provided - - - net.sf.json-lib - json-lib - provided - - - commons-io - commons-io - - - \ No newline at end of file diff --git a/base/core/alfresco-client/src/.svn/entries b/base/core/alfresco-client/src/.svn/entries deleted file mode 100644 index ccd9275..0000000 --- a/base/core/alfresco-client/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src -svn://172.17.26.185/COMACO - - - -2015-02-20T10:57:23.058271Z -3827 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/core/alfresco-client/src/main/.svn/entries b/base/core/alfresco-client/src/main/.svn/entries deleted file mode 100644 index f4af581..0000000 --- a/base/core/alfresco-client/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main -svn://172.17.26.185/COMACO - - - -2015-02-20T10:57:23.058271Z -3827 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/core/alfresco-client/src/main/java/.svn/entries b/base/core/alfresco-client/src/main/java/.svn/entries deleted file mode 100644 index c4c8768..0000000 --- a/base/core/alfresco-client/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java -svn://172.17.26.185/COMACO - - - -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/core/alfresco-client/src/main/java/com/.svn/entries b/base/core/alfresco-client/src/main/java/com/.svn/entries deleted file mode 100644 index fabb1c8..0000000 --- a/base/core/alfresco-client/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/core/alfresco-client/src/main/java/com/fp/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 8e29834..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -alfresco -dir - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/.svn/entries deleted file mode 100644 index e3ae7ba..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/.svn/entries +++ /dev/null @@ -1,43 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco -svn://172.17.26.185/COMACO - - - -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -auth -dir - -enums -dir - -util -dir - -client -dir - -exception -dir - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/entries deleted file mode 100644 index f94a9d2..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Authentication.java -file - - - - -2022-07-28T03:40:37.520780Z -5773957b2b55f7c90c567a8a1c509d46 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1410 - -AlfrescoFileAuth.java -file - - - - -2022-07-28T03:40:37.520780Z -1915fd30504395dcc975e89622917245 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1701 - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/AlfrescoFileAuth.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/AlfrescoFileAuth.java.svn-base deleted file mode 100644 index 6647708..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/AlfrescoFileAuth.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -/** - * - */ -package com.fp.alfresco.auth; - -import net.sf.json.JSONObject; -import net.sf.json.JSONSerializer; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpRequestBase; -import org.apache.http.impl.client.HttpClients; - -import com.fp.alfresco.util.ApiProperties; -import com.fp.alfresco.util.ApiResponseHandler; - -/** - * Autenticación mediante un archivo de propiedades - * @author bpt - * - */ -public class AlfrescoFileAuth extends Authentication{ - - - @Override - public boolean authenticate() { - try{ - super.user = ApiProperties.getProperty("api.user"); - super.password = ApiProperties.getProperty("api.password"); - - HttpClient client = HttpClients.createDefault(); - String authUrl = ApiProperties.getProperty("api.uri.base") +ApiProperties.getProperty("api.uri.login", super.user, super.password); - HttpRequestBase httpRequest = new HttpGet(authUrl); - ApiResponseHandler handler = new ApiResponseHandler(); - HttpResponse response = client.execute(httpRequest); - String responseString = (String) handler.handleResponse(response, false); - - JSONObject json = (JSONObject) JSONSerializer.toJSON(responseString); - super.ticket = json.getJSONObject("data").getString("ticket"); - if(super.ticket!=null){ - return true; - } - }catch(Exception e){ - e.printStackTrace(); - } - return false; - } - - public static void main(String[] args) - { - AlfrescoFileAuth auth = new AlfrescoFileAuth(); - boolean isauth = auth.authenticate(); - System.out.println(isauth); - } -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/Authentication.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/Authentication.java.svn-base deleted file mode 100644 index 4a9c33e..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/auth/.svn/text-base/Authentication.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -/** - * - */ -package com.fp.alfresco.auth; - -/** - * Clase que maneja la autenticación y acceso al repositorio de Alfresco mediante webscripts - * @author bpt - * - */ -public abstract class Authentication { - - protected String user; - - protected String password; - - protected String ticket; - - /** - * M´todo principal que maneja la forma en que se autenticará el API hacia el repositorio de Alfresco mediante webscripts - * @return - */ - public abstract boolean authenticate(); - - /** - * @return Retorna el atributo user - */ - public String getUser() { - return this.user; - } - - /** - * @param user Parámetro a fijar en el atributo user - */ - public void setUser(String user) { - this.user = user; - } - - /** - * @return Retorna el atributo password - */ - public String getPassword() { - return this.password; - } - - /** - * @param password Parámetro a fijar en el atributo password - */ - public void setPassword(String password) { - this.password = password; - } - - /** - * @return Retorna el atributo ticket - */ - public String getTicket() { - return this.ticket; - } - - /** - * @param ticket Parámetro a fijar en el atributo ticket - */ - public void setTicket(String ticket) { - this.ticket = ticket; - } - - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/entries deleted file mode 100644 index 4f0f01c..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco/client -svn://172.17.26.185/COMACO - - - -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AlfrescoApi.java -file - - - - -2022-07-28T03:40:37.616781Z -4176ae212757b4f153ddeb2b3ce1c83c -2014-11-20T05:37:05.456961Z -2997 -dcruz - - - - - - - - - - - - - - - - - - - - - -15293 - -DocumentoAlfresco.java -file - - - - -2022-07-28T03:40:37.616781Z -72df43dfde77145936d01a84e474990d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4811 - -Prueba.java -file - - - - -2022-07-28T03:40:37.616781Z -aced61aa4ab2bbd1ff784054b8ace540 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5109 - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/AlfrescoApi.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/AlfrescoApi.java.svn-base deleted file mode 100644 index ae200fe..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/AlfrescoApi.java.svn-base +++ /dev/null @@ -1,434 +0,0 @@ -/** - * - */ -package com.fp.alfresco.client; - -import java.io.InputStream; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; -import java.util.TimeZone; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; -import net.sf.json.JSONSerializer; - -import org.apache.commons.lang.StringEscapeUtils; -import org.apache.http.Consts; -import org.apache.http.HttpEntity; -import org.apache.http.HttpException; -import org.apache.http.entity.ContentType; -import org.apache.http.entity.mime.MultipartEntityBuilder; -import org.apache.http.entity.mime.content.FileBody; -import org.apache.http.entity.mime.content.StringBody; - -import com.fp.alfresco.enums.EnumDataType; -import com.fp.alfresco.enums.EnumRequestType; -import com.fp.alfresco.exception.ExceptionWebscript; -import com.fp.alfresco.util.ApiProperties; -import com.fp.alfresco.util.ApiRequest; -import com.fp.alfresco.util.UriUtils; - -/** - * - * Clase que proporciona métodos comunes para interactuar con el repositorio de Alfresco - * @author bpt - * - */ -public class AlfrescoApi { - - /** - * Objeto de tipo ApiRequest que realiza las consultas a alfresco - */ - private ApiRequest apiRequest; - - /** - * Variable que contiene el namespace base del API de alfresco - */ - private String baseQuery; - - /** - * Variable que contiene el nombre del sitio que se consumira en la llamada a Alfresco - */ - private String site; - - private static final String MIME_TEXT = ApiProperties.getProperty("api.common.mime.type"); - - private static final String PREFIX_METADATA = ApiProperties.getProperty("api.name.prefix.metadata"); - - /** - * Constructor - */ - public AlfrescoApi(String site){ - this.apiRequest = new ApiRequest(); - this.site = site; - this.baseQuery = ApiProperties.getProperty("api.site.defaultquery", site); - } - - /** - * Método principal para la busqueda de documentos - * @param query - * @param ticket - * @return - * @throws Exception - */ - public List findDocuments(String query) throws Exception{ - String uri = ApiProperties.getProperty("api.uri.search.general")+UriUtils.formatearParametrosUrl("query=" + this.baseQuery+ " AND " + query); - - String response = this.apiRequest.authRequest(EnumRequestType.GET, uri).toString(); - return this.transformeResponse(response); - } - - /** - * Retorna una lista de {@link DocumentoAlfresco} por xpath - * @param xPathLocation la ruta xpath de una carpeta - * @return - * @throws Exception - */ - private List findByXPathLocation(String xPathLocation) throws Exception{ - String uri = ApiProperties.getProperty("api.uri.search.general")+UriUtils.formatearParametrosUrl("query=PATH:\"" + xPathLocation); - String response = this.apiRequest.authRequest(EnumRequestType.GET, uri).toString(); - return this.transformeResponse(response); - } - - /** - * Método que busca por id del documento - * @param documentId - * @return - * @throws Exception - */ - public DocumentoAlfresco findById(String documentId) throws Exception - { - String query = "ID:\""+ documentId +"\""; - List l = this.findDocuments(query); - if(!l.isEmpty()){ - return l.get(0); - } - return null; - } - - /** - * Método que busca un documento por contenido - * @param documentContent - * @return - * @throws Exception - */ - public List findByContent(String documentContent) throws Exception - { - String query = "TEXT:\""+ documentContent+"\""; - return this.findDocuments(query); - } - - /** - * Método que busca un documento por atributo - * @param documentContent - * @return - * @throws Exception - */ - public List findByAttribute(String attributeName, String value) throws Exception - { - attributeName = attributeName.replace(":", "\\:"); - String query = "@"+attributeName+":\""+ value+"\""; - return this.findDocuments(query); - } - - /** - * Método que busca un documento por tipo - * @param type - * @return - * @throws Exception - */ - public List findByType(String type) throws Exception - { - String query = "TYPE:\""+type+"\""; - return this.findDocuments(query); - } - - /** - * Devuelve una lista de {@link DocumentoAlfresco} por xpath de la carpeta - * @param xPathLocationFolder xpath de la carpeta a buscar - * @return - * @throws Exception - */ - public List findListByXPathLocation(String xPathLocationFolder) throws Exception{ - if((xPathLocationFolder==null) || xPathLocationFolder.isEmpty()){ - throw new ExceptionWebscript("Ruta de la carpeta requerido"); - } - xPathLocationFolder+="/*\" AND TYPE:\"cm:content\""; - return this.findByXPathLocation(xPathLocationFolder); - } - - /** - * Retorna un {@link DocumentoAlfresco} por dirección xpath - * @param xPathLocationDocument dirección xpath del documento - * @return - * @throws Exception - */ - public DocumentoAlfresco findOneByXPathLocation(String xPathLocationDocument) throws Exception{ - if((xPathLocationDocument==null) || xPathLocationDocument.isEmpty()){ - throw new ExceptionWebscript("Ruta del documento requerido"); - } - xPathLocationDocument+="\""; - List l = this.findByXPathLocation(xPathLocationDocument); - if(!l.isEmpty()){ - return l.get(0); - } - return null; - } - - /** - * Recibe la respuesta en JSON y retorna una lista de tipo List - * @param response - * - */ - private List transformeResponse(String response) { - List l = new ArrayList(); - JSONObject json = (JSONObject) JSONSerializer.toJSON(response); - Integer resultados = json.getInt("resultados"); - if(resultados>0){ - JSONArray documents = json.getJSONArray("documentos"); - for (Object object : documents) { - JSONObject jo = (JSONObject) object; - DocumentoAlfresco d = this.getSingleDocumentResponse(jo); - l.add(d); - } - } - return l; - } - - /** - * Retorna un {@link DocumentoAlfresco} en base aun {@link JSONObject} enviado - * @param jo Objeto json que formará el {@link DocumentoAlfresco} - * @return - */ - @SuppressWarnings("unchecked") - private DocumentoAlfresco getSingleDocumentResponse(JSONObject jo) { - Map mprops = jo.getJSONObject("propiedades"); - DocumentoAlfresco d = new DocumentoAlfresco(jo.getString("nombre"), ((Map)mprops.get("cm:modifier")).get("userName").toString()); - d.setId(jo.getString("referencia")); - d.setNombre(jo.getString("nombre")); - d.setModificadoPor(((Map)mprops.get("cm:modifier")).get("userName").toString()); - d.setAccesoDescarga(jo.getString("accesoDescarga")); - d.setxPathLocationPadre(jo.getString("xPathLocationPadre")); - d.setxPathLocation(jo.getString("xPathLocation")); - d.setTipo(jo.getString("tipo")); - d.setPropiedades(new HashMap()); - this.fillPropertiesSearch(d.getPropiedades(), jo.getJSONObject("propiedades")); - return d; - } - - /** - * Método recursivo que llena las propiedades de un documento en un mapa - * @param mprop Mapa para llenar las propiedades de un documento - * @param jobject Propiedad de un documento - */ - @SuppressWarnings("unchecked") - private void fillPropertiesSearch(Map mprop, JSONObject jobject) { - Set ks = jobject.keySet(); - for (String key : ks) { - Object item = jobject.get(key); - if(item instanceof JSONObject){ - Map subProp = new HashMap(); - mprop.put(key, subProp); - this.fillPropertiesSearch(subProp, (JSONObject)item); - }else{ - mprop.put(key, item.toString()); - } - } - } - - /** - * Método que arma los parámetros en base al documento - * @param documento - * @return - * @throws Exception - */ - private String armarParametrosPropiedades(DocumentoAlfresco documento) throws Exception { - TimeZone tz = TimeZone.getTimeZone("GMT-05:00"); - DateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - iso8601.setTimeZone(tz); - StringBuffer cadena = new StringBuffer("{"); - Map> map = documento.getPropiedadesToSet(); - if(map==null){ - cadena.append("}"); - return cadena.toString(); - } - boolean existAttrs = false; - Set keys = map.keySet(); - for (String key : keys) { - if(key.startsWith(PREFIX_METADATA)){ - existAttrs = true; - Map prop = map.get(key); - String propValue = null; - Object type = prop.get("type"); - Object value = prop.get("value"); - if(!(type instanceof EnumDataType)){ - throw new ExceptionWebscript("El campo '"+key+"' debe tener el atributo 'type' de tipo [EnumDataType]"); - } - if(value!=null){ - if(type==EnumDataType.STRING){ - if(!(value instanceof String)) { - throw new ExceptionWebscript("El campo '"+key+"' debe tener el atributo 'value' de tipo [String]"); - } - propValue = StringEscapeUtils.escapeJavaScript(value.toString()); - - }else if(type==EnumDataType.DATE){ - if(!(value instanceof Date)) { - throw new ExceptionWebscript("El campo '"+key+"' debe tener el atributo 'value' de tipo [Date]"); - } - propValue = iso8601.format(value); - propValue = propValue.substring(0,22)+":00"; - }else if(type==EnumDataType.NUMBER){ - if(!(value instanceof Number)) { - throw new ExceptionWebscript("El campo '"+key+"' debe tener el atributo 'value' de tipo [Number]"); - } - propValue = value.toString(); - } - } - if((propValue!=null) && !propValue.isEmpty()) { - cadena.append("\""+key+"\":") - .append("{") - .append("\"value\":").append("\""+propValue+"\"") - .append(",") - .append("\"type\":").append("\""+((EnumDataType)type).getValue()+"\"") - .append("},"); - } - } - } - if(existAttrs) { - cadena.deleteCharAt(cadena.length()-1); - } - cadena.append("}"); - return cadena.toString(); - } - - /** - * Se obtiene un documento en base a su id - * @param documentId id del documento - * @return - * @throws Exception - */ - public InputStream downloadDocumentById(String documentId) throws Exception{ - String uriDownload = ApiProperties.getProperty("api.uri.download.id"); - uriDownload+=documentId.replace("://", "/"); - return (InputStream) this.apiRequest.authRequest(EnumRequestType.GET, uriDownload, true, true); - } - - /** - * Se obtiene un documento en base a su xpath - * @param xPathLocation ruta de la dirección en donde se encuentra el documento - * @param includeSite bandera si se debe especificar el sitio - * @return - * @throws Exception - */ - public InputStream downloadDocumentByXPathLocation(String xPathLocation, boolean includeSite) throws Exception{ - if(includeSite){ - xPathLocation = xPathLocation.replace("{0}", this.site); - } - DocumentoAlfresco docAlfresco = findOneByXPathLocation(xPathLocation); - if(docAlfresco == null){ - return null; - } -// xPathLocation = xPathLocation.replace("/app:", "").replace("/st:", "/").replace("/cm:", "/"); -// String uriDownload = ApiProperties.getProperty("api.uri.download.path", xPathLocation); -// (InputStream) this.apiRequest.authRequest(EnumRequestType.GET, uriDownload, true, true) - return downloadDocumentById(docAlfresco.getId()); - } - - public InputStream downloadDocumentByXPathLocation(String xPathLocation) throws Exception{ - return this.downloadDocumentByXPathLocation(xPathLocation, true); - } - - /** - * Método que carga un documento en una ruta especificada - * @param location - * @param document - * @param isUpdate - * @return - * @throws Exception - */ - private DocumentoAlfresco uploadDocument(String location, DocumentoAlfresco document, boolean isUpdate) throws Exception { - if(document.getFile()==null){ - throw new Exception("Debe fijar un archivo"); - } - String ubicacion = null; - if(isUpdate){ - ubicacion = location; - }else{ - ubicacion = ApiProperties.getProperty("api.doclocation.base", this.site)+"/"+ location; - } - String uri = ApiProperties.getProperty("api.uri.create.general")+ - UriUtils.formatearParametrosUrl( - "tipo=" +document.getTipo() - +"&ubicacion=" +ubicacion - +"&modificadoPor="+document.getModificadoPor() - +"&propiedades="+this.armarParametrosPropiedades(document) - ); - - FileBody bin = new FileBody(document.getFile()); - HttpEntity entityHttp = null; - if(isUpdate){ - entityHttp = MultipartEntityBuilder.create() - .addPart("archivo", bin) - .addPart("filename", new StringBody(document.getNombre(), ContentType.create(MIME_TEXT, Consts.ISO_8859_1))) - .addPart("xPathUpdateDocument", new StringBody(document.getxPathLocation(), ContentType.create(MIME_TEXT, Consts.ISO_8859_1))) - .build(); - }else{ - entityHttp = MultipartEntityBuilder.create() - .addPart("archivo", bin) - .addPart("filename", new StringBody(document.getNombre(), ContentType.create(MIME_TEXT, Consts.ISO_8859_1))) - .build(); - } - try { - String response = this.apiRequest.authRequest(EnumRequestType.POST, uri, entityHttp).toString(); - JSONObject jo = (JSONObject) JSONSerializer.toJSON(response); - return this.getSingleDocumentResponse(jo); - } catch (HttpException e) { - throw new ExceptionWebscript("Error al conectar con el servidor de alfresco", e); - } - } - - /** - * Método que carga un nuevo documento en la ruta ingresada - * @param partialxPathLocation ruta xpath en donde se almacenará el documento - * @param document - * @return - * @throws Exception - */ - public DocumentoAlfresco uploadNewDocument(String partialxPathLocation, DocumentoAlfresco document) throws Exception { - return this.uploadDocument(partialxPathLocation, document, false); - } - - /** - * Para actualizar el documento primero lo consulto - * @param document - * @return - * @throws Exception - */ - public DocumentoAlfresco uploadUpdateDocument(DocumentoAlfresco document) throws Exception { - return this.uploadDocument(document.getxPathLocation(), document, true); - } - /** - * Elimina un documento dado un nodeRef. - * @param nodeRef Identificador único del documento o carpeta que se desea eliminar - * @return Boolean indicando si se realizó el proceso de eliminación de forma correcta. - * @throws Exception Se ejecuta una excepción cuando no se encuentra el documento en el repositorio Alfresco - */ - public boolean deleteDocument(String nodeRef) throws Exception { - StringBuilder urlDescarga = new StringBuilder(ApiProperties.getProperty("api.uri.delete.general")); - urlDescarga.append(nodeRef.replace("://", "/")); - Object response = this.apiRequest.authRequest(EnumRequestType.DELETE, urlDescarga.toString(), false, true); - JSONObject jo = (JSONObject) JSONSerializer.toJSON(response); - return Boolean.parseBoolean(jo.get("overallSuccess").toString()); - } - - public String getSite() { - return site; - } - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/DocumentoAlfresco.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/DocumentoAlfresco.java.svn-base deleted file mode 100644 index c4f7ef9..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/DocumentoAlfresco.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -/** - * - */ -package com.fp.alfresco.client; - -import java.io.File; -import java.util.HashMap; -import java.util.Map; - -import com.fp.alfresco.enums.EnumDataType; -import com.fp.alfresco.enums.EnumDocumentType; - -/** - * Documento que contiene las propiedades que posee todo documento alfresco - * @author bpt - * - */ -public class DocumentoAlfresco { - private String id; - private String nombre; - private String modificadoPor; - private String accesoDescarga; - private String xPathLocationPadre; - private String xPathLocation; - private String tipo; - private Map propiedades; - private Map> propiedadesToSet; - private File file; - - public DocumentoAlfresco(String nombre, String modificadoPor){ - this.nombre = nombre; - this.modificadoPor = modificadoPor; - this.tipo = EnumDocumentType.FILE.getValue(); - this.propiedades = new HashMap(); - this.propiedadesToSet = new HashMap>(); - } - - /** - * @return Retorna el atributo id - */ - public String getId() { - return this.id; - } - /** - * @param id Parámetro a fijar en el atributo id - */ - public void setId(String id) { - this.id = id; - } - /** - * @return Retorna el atributo nombre - */ - public String getNombre() { - return this.nombre; - } - /** - * @param nombre Parámetro a fijar en el atributo nombre - */ - public void setNombre(String nombre) { - this.nombre = nombre; - } - - /** - * @return Retorna el atributo modificadoPor - */ - public String getModificadoPor() { - return this.modificadoPor; - } - - /** - * @param modificadoPor Parámetro a fijar en el atributo modificadoPor - */ - public void setModificadoPor(String modificadoPor) { - this.modificadoPor = modificadoPor; - } - /** - * @return Retorna el atributo accesoDescarga - */ - public String getAccesoDescarga() { - return this.accesoDescarga; - } - /** - * @param accesoDescarga Parámetro a fijar en el atributo accesoDescarga - */ - public void setAccesoDescarga(String accesoDescarga) { - this.accesoDescarga = accesoDescarga; - } - - /** - * @return Retorna el atributo xPathLocationPadre - */ - public String getxPathLocationPadre() { - return this.xPathLocationPadre; - } - - /** - * @param xPathLocationPadre Parámetro a fijar en el atributo xPathLocationPadre - */ - public void setxPathLocationPadre(String xPathLocationPadre) { - this.xPathLocationPadre = xPathLocationPadre; - } - - /** - * @return Retorna el atributo xPathLocation - */ - public String getxPathLocation() { - return this.xPathLocation; - } - /** - * @param xPathLocation Parámetro a fijar en el atributo xPathLocation - */ - public void setxPathLocation(String xPathLocation) { - this.xPathLocation = xPathLocation; - } - /** - * @return Retorna el atributo tipo - */ - public String getTipo() { - return this.tipo; - } - /** - * @param tipo Parámetro a fijar en el atributo tipo - */ - public void setTipo(String tipo) { - this.tipo = tipo; - } - /** - * @return Retorna el atributo propiedades - */ - public Map getPropiedades() { - return this.propiedades; - } - /** - * @param propiedades Parámetro a fijar en el atributo propiedades - */ - public void setPropiedades(Map propiedades) { - this.propiedades = propiedades; - } - - /** - * @return Retorna el atributo propiedadesToSet - */ - public Map> getPropiedadesToSet() { - return this.propiedadesToSet; - } - - /** - * @param propiedadesToSet Parámetro a fijar en el atributo propiedadesToSet - */ - public void setPropiedadesToSet( - Map> propiedadesToSet) { - this.propiedadesToSet = propiedadesToSet; - } - - /** - * @return Retorna el atributo file - */ - public File getFile() { - return this.file; - } - /** - * @param file Parámetro a fijar en el atributo file - */ - public void setFile(File file) { - this.file = file; - } - - /** - * Método para agregar una propiedad al documento que se va a subir - * @param name Nombre del campo - * @param value Valor del campo - * @param type Tipo de dato del campo - */ - public void setPropiedadCampo(String name, Object value, EnumDataType type){ - HashMap item = new HashMap(); - item.put("value", value); - item.put("type", type); - this.propiedadesToSet.put(name, item); - } -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/Prueba.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/Prueba.java.svn-base deleted file mode 100644 index f6d6952..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/client/.svn/text-base/Prueba.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -/** - * - */ -package com.fp.alfresco.client; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.text.DateFormat; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.List; - -import org.apache.commons.io.IOUtils; - -/** - * Clases test de Alfresco api client - * @author bpt - * - */ -public class Prueba { - - /** - * Método principal - * @param args - * @throws Exception - */ - public static void main(String[] args) throws Exception { - subirActualizarDocumento(); - } - - /** - * Actualiza documentos - * @throws Exception - */ - public static void subirActualizarDocumento() throws Exception{ - AlfrescoApi api = new AlfrescoApi("ejemplo"); - File f = new File("/home/james/DAVID/xpathAlfBujias.pdf"); - DocumentoAlfresco doc = api.findOneByXPathLocation("/app:company_home/st:sites/cm:ejemplo/cm:documentLibrary/cm:Carga_Archivos_Prueba/cm:xpathAlfBujias.pdf"); - //DocumentoAlfresco doc = api.findOneByXPathLocation("/app:company_home/st:sites/cm:spj/cm:documentLibrary/cm:INTENDENCIAS/cm:INTENDENCIA DE CUENCA/cm:2015/cm:OCTUBRE/cm:torneo_futbol.xlsx"); - doc.setModificadoPor("dcruz"); - doc.setFile(f); - doc.setNombre(f.getName()); - doc = api.uploadUpdateDocument(doc); - } - - /** - * Sube documentos - * @throws Exception - */ - public static void subirDocumento() throws Exception{ - AlfrescoApi api = new AlfrescoApi("ejemplo"); - File f = new File("/home/james/DAVID/xpathAlfBujias.pdf"); - DocumentoAlfresco doc = new DocumentoAlfresco(f.getName(), "dcruz"); -// doc.setTipo("sbspjd:providenciasJudiciales"); - doc.setModificadoPor("dcruz"); - doc.setFile(f); -// doc.setPropiedadCampo("sbspjd:numeroCircular", "SG-2015-3612", EnumDataType.STRING); -// doc.setPropiedadCampo("sbspjd:fechaPubliSist", new Date(), EnumDataType.DATE); -// doc.setPropiedadCampo("sbsgen:remitente", "COACTIVAS DEL SRI DEL NORTE", EnumDataType.STRING); -// doc.setPropiedadCampo("sbspjd:numFojas", 3.0, EnumDataType.NUMBER); - doc.setNombre(f.getName()); - - doc = api.uploadNewDocument("cm:Carga_Archivos_Prueba", doc); - } - - /** - * Descarga documentos - * @throws Exception - */ - public static void descargarDocumento() throws Exception{ - AlfrescoApi api = new AlfrescoApi("ejemplo"); - DocumentoAlfresco doc =api.findById("workspace://SpacesStore/90e9b3d1-cb64-45ca-bd99-087b87052cf7"); - InputStream inputStream = api.downloadDocumentById(doc.getId()); - OutputStream outputStream = new FileOutputStream("/home/james/DAVID/alf_cat_bujias_2011.pdf"); - IOUtils.copy(inputStream, outputStream); - IOUtils.closeQuietly(outputStream); - } - - /** - * Descarga ayudas - * @throws Exception - */ - public static void descargarDocumentoAyudas() throws Exception{ - AlfrescoApi api = new AlfrescoApi("ejemplo"); -// InputStream inputStream = api.downloadDocumentByXPathLocation("/app:company_home/st:sites/cm:seo/cm:documentLibrary/cm:ayudas/cm:parametro.pdf"); - InputStream inputStream = api.downloadDocumentByXPathLocation("/app:company_home/st:sites/cm:{0}/cm:documentLibrary/cm:Carga_Archivos_Prueba/cm:"+"cat_bujias_2011"+".pdf", true); - OutputStream outputStream = new FileOutputStream("/home/james/DAVID/xpathAlfBujias.pdf"); - IOUtils.copy(inputStream, outputStream); - outputStream.close(); - } - - /** - * busca por xpath - * @throws Exception - */ - public static void buscarPorXpathLocation() throws Exception{ - AlfrescoApi api = new AlfrescoApi("jep"); - DocumentoAlfresco doc = api.findOneByXPathLocation("/app:company_home/st:sites/cm:jep/cm:documentLibrary/cm:Carga_Archivos_Plantilla/cm:cat_bujias_2011.pdf"); - System.out.println(doc); -// if(doc!=null){ - //doc.getxPathLocation(); -// } - } - - /** - * Busca por id - * @throws Exception - */ - public static void buscarPorId() throws Exception{ - AlfrescoApi api = new AlfrescoApi("seo"); - DocumentoAlfresco doc = api.findById("workspace://SpacesStore/6b502f0b-39f4-47a8-915d-071cacc953cf"); - System.out.println(doc); - } - - /** - * Busca por contenido - * @throws Exception - */ - public static void buscarPorContenido() throws Exception{ - AlfrescoApi api = new AlfrescoApi("seo"); - List ldoc = api.findByContent("fines pertinentes"); - System.out.println(ldoc); - } - - /** - * Busca por atributos - * @throws Exception - */ - public static void buscarPorAtributo() throws Exception{ - AlfrescoApi api = new AlfrescoApi("seo"); - DateFormat iso8601 = new SimpleDateFormat("yyyy-MM-dd'T'HH:mm:ssZ"); - String string = "2013-12-23"; - Date date = new SimpleDateFormat("yyyy-MM-dd").parse(string); - String ds = iso8601.format(date); - List ldoc = api.findByAttribute("sbspjd:fechaFRecepcion", ds); - System.out.println(ldoc); - } - - /** - * Elimina por id - * @throws Exception - */ - public static void eliminarDocumentoPorId() throws Exception{ - AlfrescoApi api = new AlfrescoApi("ejemplo"); - api.deleteDocument("workspace://SpacesStore/c358fb30-a001-49dc-9ef9-b2b185f48325"); - - } - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/entries deleted file mode 100644 index 80e31b0..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EnumRequestType.java -file - - - - -2022-07-28T03:40:37.540781Z -2f815af5fb270e9af228af10d41acf4d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -337 - -EnumDataType.java -file - - - - -2022-07-28T03:40:37.540781Z -4561884759cfa26fbd49117f20dc6f03 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -896 - -EnumDocumentType.java -file - - - - -2022-07-28T03:40:37.540781Z -d2a53d8945971354d167bc37743944d0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -748 - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDataType.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDataType.java.svn-base deleted file mode 100644 index 1e2b075..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDataType.java.svn-base +++ /dev/null @@ -1,50 +0,0 @@ -/** - * - */ -package com.fp.alfresco.enums; - -import java.util.Date; - -/** - * Enumeración que contiene los valores constantes de los tipos de datos - * @author bpt - * - */ -public enum EnumDataType { - /** - * Tipo de dato {@link String} - */ - STRING("string"), - /** - * Tipo de dato {@link Date} - */ - DATE("date"), - /** - * Tipo de dato {@link Number} - */ - NUMBER("number"); - - /** - * Contiene el valor ingresado de la enumeración - */ - private String value; - - private EnumDataType(String value) { - this.value = value; - } - - /** - * @return Retorna el atributo value - */ - public String getValue() { - return this.value; - } - - /** - * @param value Parámetro a fijar en el atributo value - */ - public void setValue(String value) { - this.value = value; - } - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDocumentType.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDocumentType.java.svn-base deleted file mode 100644 index 6443bb5..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumDocumentType.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -/** - * - */ -package com.fp.alfresco.enums; - -/** - * Enumeración que contiene los tipos de documentos que se van a buscar dentro del repositorio - * @author bpt - * - */ -public enum EnumDocumentType { - /** - * Tipo documento carpeta - */ - FOLDER("cm:folder"), - /** - * Tipo documento contenido - */ - FILE("cm:content"); - - private String value; - - private EnumDocumentType(String value) { - this.value = value; - } - - /** - * @return Retorna el atributo value - */ - public String getValue() { - return this.value; - } - - /** - * @param value Parámetro a fijar en el atributo value - */ - public void setValue(String value) { - this.value = value; - } - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumRequestType.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumRequestType.java.svn-base deleted file mode 100644 index e105bfb..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/enums/.svn/text-base/EnumRequestType.java.svn-base +++ /dev/null @@ -1,24 +0,0 @@ -/** - * - */ -package com.fp.alfresco.enums; - -/** - * Tipos de solicitud que se realizarán en los webscripts - * @author bpt - * - */ -public enum EnumRequestType { - /** - * Método HTTP GET - */ - GET, - /** - * Método HTTP POST - */ - POST, - /** - * Método HTTP DELETE - */ - DELETE -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/entries deleted file mode 100644 index 5a1c283..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ExceptionWebscript.java -file - - - - -2022-07-28T03:40:37.656781Z -a84d50c2c94380d7aae6feb2a5033a9d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -581 - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/text-base/ExceptionWebscript.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/text-base/ExceptionWebscript.java.svn-base deleted file mode 100644 index 934a3d0..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/exception/.svn/text-base/ExceptionWebscript.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -/** - * - */ -package com.fp.alfresco.exception; - -/** - * Excepción que manejará los errores que se producen dentro del API - * @author bpt - * - */ -public class ExceptionWebscript extends Exception { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public ExceptionWebscript() { - super(); - } - - public ExceptionWebscript(String message, Throwable cause) { - super(message, cause); - } - - public ExceptionWebscript(String message) { - super(message); - } - - public ExceptionWebscript(Throwable cause) { - super(cause); - } -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/entries b/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/entries deleted file mode 100644 index d50cbb6..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/java/com/fp/alfresco/util -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -UriUtils.java -file - - - - -2022-07-28T03:40:37.577781Z -c37a6ae280bafe6c0bbfcd23d7282577 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1747 - -ApiRequest.java -file - - - - -2022-07-28T03:40:37.578781Z -7db6115ac77b916fbf765900f28f4690 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5716 - -ApiProperties.java -file - - - - -2022-07-28T03:40:37.578781Z -9bb1e7338885e6be8e08e765efd9fb6f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1457 - -ApiResponseHandler.java -file - - - - -2022-07-28T03:40:37.578781Z -d9f1c83dd40ada7774d3f4926afb665a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1831 - diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiProperties.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiProperties.java.svn-base deleted file mode 100644 index 5b0262b..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiProperties.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -/** - * - */ -package com.fp.alfresco.util; - -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * Clase utilitaria que sirve para manipular archivo de propiedades - * @author bpt - * - */ -public class ApiProperties { - private static final String BUNDLE_NAME = "alfresco-api"; - - private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); - - /** - * Devuelve le valor de una propiedad por medio de su clave - * @param key clave enviada para recuperar su valor - * @return - */ - public static String getProperty(String key) { - try { - return RESOURCE_BUNDLE.getString(key); - } catch (MissingResourceException e) { - return "Archivo:"+BUNDLE_NAME+" no encontrado"; - } catch (Throwable e) { - return null; - } - } - - /** - * Se obtiene el valor de una propiedad en base la clave y los parámetros enviados - * @param pKey clave - * @param pParameters array de parátros enviados - * @return - */ - public static String getProperty(String pKey, Object... pParameters) { - try { - String msg = null; - try{ - msg = RESOURCE_BUNDLE.getString(pKey); - }catch(Exception e){ - msg = null; - } - if(msg == null){ - msg = pKey; - } - return MessageFormat.format(msg, pParameters); - } catch (Throwable e) { - return null; - } - } -} \ No newline at end of file diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiRequest.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiRequest.java.svn-base deleted file mode 100644 index 23ac298..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiRequest.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -/** - * - */ -package com.fp.alfresco.util; - -import org.apache.http.HttpEntity; -import org.apache.http.client.methods.CloseableHttpResponse; -import org.apache.http.client.methods.HttpDelete; -import org.apache.http.client.methods.HttpGet; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.client.methods.HttpRequestBase; -import org.apache.http.impl.client.CloseableHttpClient; -import org.apache.http.impl.client.HttpClients; - -import com.fp.alfresco.auth.AlfrescoFileAuth; -import com.fp.alfresco.auth.Authentication; -import com.fp.alfresco.enums.EnumRequestType; -import com.fp.alfresco.exception.ExceptionWebscript; - - -/** - * - * Clase que gestiona las peticiones realizadas en el API de Alfresco - * @author bpt - * - */ -public class ApiRequest { - private String uriBase = ApiProperties.getProperty("api.uri.base"); - - private CloseableHttpClient client = HttpClients.createDefault(); - - private Authentication auth = new AlfrescoFileAuth(); - - /** - * Retorna una respuesta a una petición REST simple - * @param requestType tipo de petición - * @param uri URI - * @return respuesta a la petición REST - * @throws Exception - */ - public String simpleRequest(EnumRequestType requestType, String uri) throws Exception{ - HttpRequestBase httpRequest; - uri = this.uriBase+uri; - - if(requestType==EnumRequestType.GET){ - httpRequest = new HttpGet(uri); - }else{ - httpRequest = new HttpPost(uri); - } - ApiResponseHandler handler = new ApiResponseHandler(); - CloseableHttpResponse response = this.client.execute(httpRequest); - return handler.handleResponse(response); - } - - /** - * Método de autenticación de acceso al repositorio de Alfresco - * @param requestType tipo de petición - * @param uri URI de la petición - * @param isOnlyTicket si es solo ticket - * @param entity objeto en la request - * @param isGetEntityContent retorna contenido en la petición REST - * @return un objeto con la respuesta a la autenticació - * @throws Exception - */ - private Object authRequest(EnumRequestType requestType, String uri, boolean isOnlyTicket, HttpEntity entity, boolean isGetEntityContent) throws Exception{ - uri = this.uriBase+uri; - if(this.auth.authenticate()){ - if(isOnlyTicket) { - uri+= "?alf_ticket=" + this.auth.getTicket(); - }else{ - uri+= "&alf_ticket=" + this.auth.getTicket(); - } - HttpRequestBase httpRequest; - if(requestType==EnumRequestType.GET){ - httpRequest = new HttpGet(uri); - }else if(requestType==EnumRequestType.POST){ - httpRequest = new HttpPost(uri); - if(entity!=null){ - ((HttpPost)httpRequest).setEntity(entity); - } - }else { - httpRequest = new HttpDelete(uri); - } - ApiResponseHandler handler = new ApiResponseHandler(); - CloseableHttpResponse response = this.client.execute(httpRequest); -// try { - return handler.handleResponse(response, isGetEntityContent); -// }finally { - //response.close(); -// } - }else{ - throw new ExceptionWebscript("Error al autenticar con alfresco"); - } - } - - /** - * Método de autenticación de acceso al repositorio de Alfresco - * @param requestType tipo de petición - * @param uri URI de la petición - * @return un objeto con la respuesta a la autenticació - * @throws Exception - */ - public Object authRequest(EnumRequestType requestType, String uri) throws Exception{ - return this.authRequest(requestType, uri, false, null, false); - } - - /** - * Método de autenticación de acceso al repositorio de Alfresco - * @param requestType tipo de petición - * @param uri URI de la petición - * @param entity objeto en la request - * @return un objeto con la respuesta a la autenticació - * @throws Exception - */ - public Object authRequest(EnumRequestType requestType, String uri, HttpEntity entity) throws Exception{ - return this.authRequest(requestType, uri, false, entity, false); - } - - /** - * Método de autenticación de acceso al repositorio de Alfresco - * @param requestType tipo de petición - * @param uri URI de la petición - * @param isGetEntityContent retorna contenido en la petición REST - * @return un objeto con la respuesta a la autenticació - * @throws Exception - */ - public Object authRequest(EnumRequestType requestType, String uri, boolean isGetEntityContent) throws Exception{ - return this.authRequest(requestType, uri, false, null, isGetEntityContent); - } - - /** - * Método de autenticación de acceso al repositorio de Alfresco - * @param requestType tipo de petición - * @param uri URI de la petición - * @param isGetEntityContent retorna contenido en la petición REST - * @param isOnlyTicket si es solo ticket - * @return un objeto con la respuesta a la autenticació - * @throws Exception - */ - public Object authRequest(EnumRequestType requestType, String uri, boolean isGetEntityContent, boolean includeTicket) throws Exception{ - return this.authRequest(requestType, uri, includeTicket, null, isGetEntityContent); - } - - /** - * @return Retorna el atributo auth - */ - public Authentication getAuth() { - return this.auth; - } - - /** - * @param auth Parámetro a fijar en el atributo auth - */ - public void setAuth(Authentication auth) { - this.auth = auth; - } - -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiResponseHandler.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiResponseHandler.java.svn-base deleted file mode 100644 index 147c465..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/ApiResponseHandler.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -/** - * - */ -package com.fp.alfresco.util; - -import java.io.IOException; - -import net.sf.json.JSONObject; -import net.sf.json.JSONSerializer; - -import org.apache.http.HttpEntity; -import org.apache.http.HttpResponse; -import org.apache.http.client.ClientProtocolException; -import org.apache.http.client.ResponseHandler; -import org.apache.http.util.EntityUtils; - -import com.fp.alfresco.exception.ExceptionWebscript; - -/** - * Clase que maneja las respuestas de una petició en el web scripts api client - * @author bpt - * - */ -public class ApiResponseHandler implements ResponseHandler{ - - /** - * Método manejador de respuestas - */ - /* (non-Javadoc) - * @see org.apache.http.client.ResponseHandler#handleResponse(org.apache.http.HttpResponse) - */ - public String handleResponse(HttpResponse response) throws ClientProtocolException, IOException { - return null; - } - - /** - * Método manejador de respuestas y su conversión a un objeto específico - * @param response respuesta recibida - * @param isGetEntity si se lo debe retornar como un Stream un String o un objeto JSON - * @return la respuesta - * @throws Exception - */ - public Object handleResponse(HttpResponse response, boolean isGetEntity) throws Exception{ - int status = response.getStatusLine().getStatusCode(); - HttpEntity entityResponse = response.getEntity(); - if ((status >= 200) && (status < 300)) { - if(isGetEntity){ - return entityResponse.getContent(); - } else { - return EntityUtils.toString(entityResponse); - } - } else { - JSONObject json = (JSONObject) JSONSerializer.toJSON(EntityUtils.toString(entityResponse)); - String message = json.getString("message"); - throw new ExceptionWebscript(message); - } - } -} diff --git a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/UriUtils.java.svn-base b/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/UriUtils.java.svn-base deleted file mode 100644 index fcf44dd..0000000 --- a/base/core/alfresco-client/src/main/java/com/fp/alfresco/util/.svn/text-base/UriUtils.java.svn-base +++ /dev/null @@ -1,58 +0,0 @@ -/** - * - */ -package com.fp.alfresco.util; - -import java.net.URI; -import java.net.URISyntaxException; - -/** - * Clase utilitaria con funcionalidades adicionales - * @author bpt - * - */ -public final class UriUtils { - - /** - * Método que parsea la url en formato string que el servidor lo pueda - * procesar. - * - * @param url - * Cadena que forma parte de la url - * @return cadena formatea. - * @throws ExceptionWebscript - * Excepción controlada que define los errores posibles durante - * el procesamiento con el webscript de Alfresco. - */ - public static String formatearParametrosUrl(String url) throws Exception { - try { - URI uri = new URI(null, null, null, url, null); - return uri.toString(); - } catch (URISyntaxException e) { - throw new Exception("ERROR: No se pudo formatear la url para ser entendida por el servidor \n\t URL = " + url, e); - } - } - - /** - * Método que parsea la url en formato ASCII que el servidor lo pueda - * procesar. - * - * @param url - * Cadena que forma parte de la url - * @return cadena formatea. - * @throws ExceptionWebscript - * Excepción controlada que define los errores posibles durante - * el procesamiento con el webscript de Alfresco. - */ - public static String formatearParametrosAsciiUrl(String url) throws Exception { - try { - URI uri = new URI(null, null, null, url, null); - return uri.toASCIIString(); - } catch (URISyntaxException e) { - // TODO Auto-generated catch block - throw new Exception("ERROR: No se pudo formatear la url para ser entendida por el servidor \n\t URL = " + url, e); - } - } - - -} diff --git a/base/core/alfresco-client/src/main/resources/.svn/entries b/base/core/alfresco-client/src/main/resources/.svn/entries deleted file mode 100644 index 2df5b8c..0000000 --- a/base/core/alfresco-client/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/main/resources -svn://172.17.26.185/COMACO - - - -2015-02-20T10:57:23.058271Z -3827 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -alfresco-api.properties -file - - - - -2022-07-28T03:40:37.827782Z -10021dad2318b9b2e95c0ea901c1aa41 -2015-02-20T10:57:23.058271Z -3827 -cpiedra - - - - - - - - - - - - - - - - - - - - - -729 - diff --git a/base/core/alfresco-client/src/main/resources/.svn/text-base/alfresco-api.properties.svn-base b/base/core/alfresco-client/src/main/resources/.svn/text-base/alfresco-api.properties.svn-base deleted file mode 100644 index 35ef104..0000000 --- a/base/core/alfresco-client/src/main/resources/.svn/text-base/alfresco-api.properties.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -#Configuracion APP -api.user=admin -api.password=admin -api.uri.base=http://172.17.26.184:8080/alfresco/service -api.uri.delete.general=/slingshot/doclib/action/file/node/ -#Directorio base para las consultas -api.doclocation.base=/app:company_home/st:sites/cm:{0}/cm:documentLibrary -api.site.defaultquery=PATH:"/app:company_home/st:sites/cm:{0}/cm:documentLibrary//*" -#Propiedades servicios -api.uri.login=/api/login.json?u={0}&pw={1} -api.uri.download.id=/api/node/content/ -api.uri.download.path=/api/path/content/workspace/SpacesStore/{0} -api.uri.search.general=/com/fp/general/consulta/buscar -api.uri.create.general=/com/fp/general/mantenimiento/crear - -api.name.prefix.metadata=mcommon -api.common.mime.type=text/plain \ No newline at end of file diff --git a/base/core/alfresco-client/src/test/.svn/entries b/base/core/alfresco-client/src/test/.svn/entries deleted file mode 100644 index 0aea1bf..0000000 --- a/base/core/alfresco-client/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/core/alfresco-client/src/test/java/.svn/entries b/base/core/alfresco-client/src/test/java/.svn/entries deleted file mode 100644 index 66f6628..0000000 --- a/base/core/alfresco-client/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/alfresco-client/src/test/resources/.svn/entries b/base/core/alfresco-client/src/test/resources/.svn/entries deleted file mode 100644 index aeab9b8..0000000 --- a/base/core/alfresco-client/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/alfresco-client/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/bpm/.svn/dir-prop-base b/base/core/bpm/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/core/bpm/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/core/bpm/.svn/entries b/base/core/bpm/.svn/entries deleted file mode 100644 index 801c684..0000000 --- a/base/core/bpm/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:38.645785Z -24fff636df8c33127fd12e871798a753 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1292 - diff --git a/base/core/bpm/.svn/text-base/pom.xml.svn-base b/base/core/bpm/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 6895a66..0000000 --- a/base/core/bpm/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,38 +0,0 @@ - - - - core - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.core - bpm - bpm - - - com.fp.base.persistence - util - 2.1 - - - com.fp.base.persistence - pgeneral - 2.1 - compile - - - net.sf.json-lib - json-lib - provided - - - xom - xom - provided - - - diff --git a/base/core/bpm/src/.svn/entries b/base/core/bpm/src/.svn/entries deleted file mode 100644 index 84fe5cd..0000000 --- a/base/core/bpm/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/core/bpm/src/main/.svn/entries b/base/core/bpm/src/main/.svn/entries deleted file mode 100644 index 55933ec..0000000 --- a/base/core/bpm/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/core/bpm/src/main/java/.svn/entries b/base/core/bpm/src/main/java/.svn/entries deleted file mode 100644 index 9cc20e8..0000000 --- a/base/core/bpm/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/core/bpm/src/main/java/com/.svn/entries b/base/core/bpm/src/main/java/com/.svn/entries deleted file mode 100644 index 453ef1e..0000000 --- a/base/core/bpm/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/core/bpm/src/main/java/com/fp/.svn/entries b/base/core/bpm/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 45240b8..0000000 --- a/base/core/bpm/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bpm -dir - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/.svn/entries deleted file mode 100644 index 0a54443..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/.svn/entries +++ /dev/null @@ -1,114 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm -svn://172.17.26.185/COMACO - - - -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -actions -dir - -EngineExecutor.java -file - - - - -2022-07-28T03:40:38.452784Z -ad7c803c44c25da460cf050749d92dc0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5211 - -query -dir - -rules -dir - -report -dir - -ActionExecutor.java -file - - - - -2022-07-28T03:40:38.452784Z -87091334c2663b77d163c3618bb6ed2a -2014-12-10T05:53:44.943625Z -3397 -gbenavides - - - - - - - - - - - - - - - - - - - - - -10647 - -save -dir - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.netbeans-base b/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.netbeans-base deleted file mode 100644 index 301147c..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.netbeans-base +++ /dev/null @@ -1,272 +0,0 @@ -package com.fp.bpm; - -import java.math.BigDecimal; -import java.net.InetAddress; -import java.util.List; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; -import com.fp.persistence.pgeneral.log.TgeneTransactionMessage; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * @author jorge - * - */ -public abstract class ActionExecutor { - - /** Request de entrada de una transaccion */ - protected Request request; - - /** Objeto que contiene el log de una transaccion. */ - protected TgeneTransactionLog log = null; - - public abstract String execute(String pRequest, List fileItem) throws Exception; - - protected TgeneTransactionLog requestToLog() throws Exception { - InetAddress.getLocalHost().getAddress(); - this.log = new TgeneTransactionLog(); - this.log.setCompanycode(this.request.getCompany()); - this.request.setJournalId(this.request.getJournalId()); - // Fija parametros al objeto - this.log.setPk(this.request.getJournalId()); - this.log.setTransactionmodule(this.request.getTransactionModule()); - this.log.setTransactioncode(this.request.getTransactionCode()); - this.log.setTransactionversion(this.request.getTransactionVersion()); - // Fecha contable - if (this.request.getCompany() != null) { - TgeneAccountingDateBranch d = DataHelper.getInstance().getTgeneAccountingDateBranch(this.request.getCompany(), 0); - this.log.setAccountingdate(d.getAccountingdate()); - this.request.put("accountingdate", d.getAccountingdate()); - this.request.put("workingdate", d.getWorkingdate()); - } - if ((this.request.getTransactionModule() != null) && (this.request.getTransactionCode() != null) - && (this.request.getTransactionVersion() != null)) { - // Almacena en el request los datos generales de la definicion de una transaccion. - this.request.mbeans.put( - "tgenetransaction", - DataHelper.getInstance().getTgeneTransaction(this.request.getTransactionModule(), this.request.getTransactionCode(), - this.request.getTransactionVersion())); - } - this.log.setServer(this.getIp()); - this.log.setRealdate(FormatDates.getInstance().getDataBaseTimestamp()); - this.log.setBranchcode(this.request.getBranchCode()); - this.log.setOfficecode(this.request.getOfficeCode()); - this.log.setTerminalcode(this.request.getTerminalCode()); - this.log.setUsercode(this.request.getUser()); - this.log.setBrowser(this.request.getBrowser()); - this.log.setOperativsystem(this.request.getOperativesystem()); - this.request.mbeans.put("tgenetransactionlog", this.log); - return this.log; - } - - /** - * Metodo que graba el log de transacciones cuando el resultado de ejecucion de la transaccion es ok. - * - * @param pTime Tiempo de ejecucion de la transaccion. - * @throws Exception - */ - public void saveLog(BigDecimal pTime, String pMethod) throws Exception { - // Si el valor del campo transaccion es null no grabar en ese caso se trata de obtener la lista de companias y - // no es la ejecucion de una trabsaccion - // o se trata de una lista de valores. - if (!this.isInsert()) { - return; - } - this.log.setDuration(pTime); - this.log.setResultcode(Response.RESPONSE_OK); - this.log.setUsermessage("OK"); - this.log.setMethod(this.getMethod(pMethod)); - this.setAditionaldata(); - // PersistenceHelper.save(this.log); - // El log se graba en un hilo independiente. - new NestedSave(this.log.getCompanycode(), this.log).start(); - } - - /** - * - * @throws Exception - */ - private void setAditionaldata() throws Exception { - // Fija datos del subject de la agenda, si no tiene un valor previo y el codigo de plantilla de mensaje es - // diferente de null. - this.log.setPersoncode(this.request.getLogperson()); - this.setPerson(); - this.log.setSolicitudenumber(this.request.getLogsolicitude()==null ?this.request.get("csolicitud")==null?this.request.getLogsolicitude():this.request.get("csolicitud").toString():this.request.getLogsolicitude()); - this.setSolicitudnumber(); - this.log.setAccount(this.request.getLogaccount()); - this.setAccount(); - - if (this.request.mbeans.get("tgenetransaction") == null) { - return; - } - Integer messagecode = ((TgeneTransaction) this.request.mbeans.get("tgenetransaction")).getMessagecode(); - if ((this.log.getAditionaldata() == null) && (messagecode != null)) { - String msg = MessageManager.getMessage(this.request); - if(msg.length() > 299){ - this.log.setAditionaldata(msg.substring(0, 298)); - }else{ - this.log.setAditionaldata(msg); - } - if (this.request.getSubject() == null) { - this.request.setSubject(msg); - } - } - - } - - private void setPerson() throws Exception { - if (this.log.getPersoncode() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "personcode", - SaveData.getPersoncode() == null ? null : Integer.valueOf(SaveData.getPersoncode())); - } catch (Exception e) { - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - } - } - - private void setAccount() throws Exception { - if (this.log.getAccount() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "account", SaveData.getAccount()); - } catch (Exception e) { - // TODO: handle exception - } - } - } - - private void setSolicitudnumber() throws Exception { - if (this.log.getSolicitudenumber() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "solicitudenumber", SaveData.getSolicitudenumber()); - } catch (Exception e) { - // TODO: handle exception - } - } - - } - - /** - * Metodo que almacena el log de auditoria, sin que este forme parte del tiempo de la transaccion. - * - * @param pTime Tiempo de ejecucion de la transaccion. - * @param pResultCode Codigo de resultado. - * @param pMessage Messaje de usuario. - * @throws Exception - */ - public void saveLogWithCommit(BigDecimal pTime, String pMethod, String pResultCode, String pMessage, String indata, String outdata) - throws Exception { - // Si el valor del campo transaccion es null no grabar en ese caso se trata de obtener la lista de companias y - // no es la ejecucion de una trabsaccion - // o se trata de una lista de valores. - if (!this.isInsert()) { - return; - } - - this.log.setDuration(pTime); - this.log.setResultcode(pResultCode.length() > 20 ? pResultCode.substring(0, 19) : pResultCode); - this.log.setUsermessage(pMessage.length() > 200 ? pMessage.substring(0, 199) : pMessage); - this.log.setMethod(this.getMethod(pMethod)); - // Mensajes de entrada y salida - TgeneTransactionMessage m = new TgeneTransactionMessage(); - m.setPk(this.request.getJournalId()); - m.setDatain(indata); - m.setDataout(outdata); - if(indata != null){ - new NestedSave(this.log.getCompanycode(), this.log, m).start(); - }else{ - new NestedSave(this.log.getCompanycode(), this.log).start(); - } - - - } - - /** - * Verifica si almacena o no el log de auditoria. - * - * @return boolean - * @throws Exception - */ - private boolean isInsert() throws Exception { - if ((this.log == null) || (this.log.getTransactionmodule() == null) || (this.log.getTransactioncode() == null)) { - return false; - } - return true; - } - - /** - * Entrega las iniciales del metodo a almacenar en la tabla de log de transacciones. - * - * @param pMethod Nombre del metodo a ejecutar. - * @return String - * @throws Exception - */ - private String getMethod(String pMethod) throws Exception { - if (pMethod.compareTo("save") == 0) { - return "S"; - } - if (pMethod.compareTo("query") == 0) { - return "Q"; - } - if (pMethod.compareTo("logon") == 0) { - return "L"; - } - return ""; - } - - /** - * Entrega la ip del servidor de aplicaciones. - * - * @return String - * @throws Exception - */ - private String getIp() throws Exception { - byte[] ip = InetAddress.getLocalHost().getAddress(); - - String sIPAddress = ""; - - for (int x = 0; x < ip.length; x++) { - if (x > 0) { - // A todos los numeros les anteponemos - // un punto menos al primero - sIPAddress += "."; - } - // Jugamos con los bytes y cambiamos el bit del signo - sIPAddress += ip[x] & 255; - } - return sIPAddress; - } - - /** - * Entrega el valor de: request - * - * @return Request - */ - public Request getRequest() { - return this.request; - } - - /** - * Fija el modulo, transaccion y version de origen. - * - * @throws Exception - */ - public void fillOriginalTransaction() throws Exception { - if (this.request != null) { - this.request.setOriginalTransactionModule(this.request.getTransactionModule()); - this.request.setOriginalTransactionCode(this.request.getTransactionCode()); - this.request.setOriginalTransactionVersion(this.request.getTransactionVersion()); - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.svn-base deleted file mode 100644 index 301147c..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/ActionExecutor.java.svn-base +++ /dev/null @@ -1,272 +0,0 @@ -package com.fp.bpm; - -import java.math.BigDecimal; -import java.net.InetAddress; -import java.util.List; - -import com.fp.base.persistence.util.helper.MessageManager; -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.persistence.commondb.NestedSave; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; -import com.fp.persistence.pgeneral.log.TgeneTransactionMessage; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * @author jorge - * - */ -public abstract class ActionExecutor { - - /** Request de entrada de una transaccion */ - protected Request request; - - /** Objeto que contiene el log de una transaccion. */ - protected TgeneTransactionLog log = null; - - public abstract String execute(String pRequest, List fileItem) throws Exception; - - protected TgeneTransactionLog requestToLog() throws Exception { - InetAddress.getLocalHost().getAddress(); - this.log = new TgeneTransactionLog(); - this.log.setCompanycode(this.request.getCompany()); - this.request.setJournalId(this.request.getJournalId()); - // Fija parametros al objeto - this.log.setPk(this.request.getJournalId()); - this.log.setTransactionmodule(this.request.getTransactionModule()); - this.log.setTransactioncode(this.request.getTransactionCode()); - this.log.setTransactionversion(this.request.getTransactionVersion()); - // Fecha contable - if (this.request.getCompany() != null) { - TgeneAccountingDateBranch d = DataHelper.getInstance().getTgeneAccountingDateBranch(this.request.getCompany(), 0); - this.log.setAccountingdate(d.getAccountingdate()); - this.request.put("accountingdate", d.getAccountingdate()); - this.request.put("workingdate", d.getWorkingdate()); - } - if ((this.request.getTransactionModule() != null) && (this.request.getTransactionCode() != null) - && (this.request.getTransactionVersion() != null)) { - // Almacena en el request los datos generales de la definicion de una transaccion. - this.request.mbeans.put( - "tgenetransaction", - DataHelper.getInstance().getTgeneTransaction(this.request.getTransactionModule(), this.request.getTransactionCode(), - this.request.getTransactionVersion())); - } - this.log.setServer(this.getIp()); - this.log.setRealdate(FormatDates.getInstance().getDataBaseTimestamp()); - this.log.setBranchcode(this.request.getBranchCode()); - this.log.setOfficecode(this.request.getOfficeCode()); - this.log.setTerminalcode(this.request.getTerminalCode()); - this.log.setUsercode(this.request.getUser()); - this.log.setBrowser(this.request.getBrowser()); - this.log.setOperativsystem(this.request.getOperativesystem()); - this.request.mbeans.put("tgenetransactionlog", this.log); - return this.log; - } - - /** - * Metodo que graba el log de transacciones cuando el resultado de ejecucion de la transaccion es ok. - * - * @param pTime Tiempo de ejecucion de la transaccion. - * @throws Exception - */ - public void saveLog(BigDecimal pTime, String pMethod) throws Exception { - // Si el valor del campo transaccion es null no grabar en ese caso se trata de obtener la lista de companias y - // no es la ejecucion de una trabsaccion - // o se trata de una lista de valores. - if (!this.isInsert()) { - return; - } - this.log.setDuration(pTime); - this.log.setResultcode(Response.RESPONSE_OK); - this.log.setUsermessage("OK"); - this.log.setMethod(this.getMethod(pMethod)); - this.setAditionaldata(); - // PersistenceHelper.save(this.log); - // El log se graba en un hilo independiente. - new NestedSave(this.log.getCompanycode(), this.log).start(); - } - - /** - * - * @throws Exception - */ - private void setAditionaldata() throws Exception { - // Fija datos del subject de la agenda, si no tiene un valor previo y el codigo de plantilla de mensaje es - // diferente de null. - this.log.setPersoncode(this.request.getLogperson()); - this.setPerson(); - this.log.setSolicitudenumber(this.request.getLogsolicitude()==null ?this.request.get("csolicitud")==null?this.request.getLogsolicitude():this.request.get("csolicitud").toString():this.request.getLogsolicitude()); - this.setSolicitudnumber(); - this.log.setAccount(this.request.getLogaccount()); - this.setAccount(); - - if (this.request.mbeans.get("tgenetransaction") == null) { - return; - } - Integer messagecode = ((TgeneTransaction) this.request.mbeans.get("tgenetransaction")).getMessagecode(); - if ((this.log.getAditionaldata() == null) && (messagecode != null)) { - String msg = MessageManager.getMessage(this.request); - if(msg.length() > 299){ - this.log.setAditionaldata(msg.substring(0, 298)); - }else{ - this.log.setAditionaldata(msg); - } - if (this.request.getSubject() == null) { - this.request.setSubject(msg); - } - } - - } - - private void setPerson() throws Exception { - if (this.log.getPersoncode() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "personcode", - SaveData.getPersoncode() == null ? null : Integer.valueOf(SaveData.getPersoncode())); - } catch (Exception e) { - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - } - } - - private void setAccount() throws Exception { - if (this.log.getAccount() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "account", SaveData.getAccount()); - } catch (Exception e) { - // TODO: handle exception - } - } - } - - private void setSolicitudnumber() throws Exception { - if (this.log.getSolicitudenumber() == null) { - try { - BeanManager.setBeanAttributeValue(this.log, "solicitudenumber", SaveData.getSolicitudenumber()); - } catch (Exception e) { - // TODO: handle exception - } - } - - } - - /** - * Metodo que almacena el log de auditoria, sin que este forme parte del tiempo de la transaccion. - * - * @param pTime Tiempo de ejecucion de la transaccion. - * @param pResultCode Codigo de resultado. - * @param pMessage Messaje de usuario. - * @throws Exception - */ - public void saveLogWithCommit(BigDecimal pTime, String pMethod, String pResultCode, String pMessage, String indata, String outdata) - throws Exception { - // Si el valor del campo transaccion es null no grabar en ese caso se trata de obtener la lista de companias y - // no es la ejecucion de una trabsaccion - // o se trata de una lista de valores. - if (!this.isInsert()) { - return; - } - - this.log.setDuration(pTime); - this.log.setResultcode(pResultCode.length() > 20 ? pResultCode.substring(0, 19) : pResultCode); - this.log.setUsermessage(pMessage.length() > 200 ? pMessage.substring(0, 199) : pMessage); - this.log.setMethod(this.getMethod(pMethod)); - // Mensajes de entrada y salida - TgeneTransactionMessage m = new TgeneTransactionMessage(); - m.setPk(this.request.getJournalId()); - m.setDatain(indata); - m.setDataout(outdata); - if(indata != null){ - new NestedSave(this.log.getCompanycode(), this.log, m).start(); - }else{ - new NestedSave(this.log.getCompanycode(), this.log).start(); - } - - - } - - /** - * Verifica si almacena o no el log de auditoria. - * - * @return boolean - * @throws Exception - */ - private boolean isInsert() throws Exception { - if ((this.log == null) || (this.log.getTransactionmodule() == null) || (this.log.getTransactioncode() == null)) { - return false; - } - return true; - } - - /** - * Entrega las iniciales del metodo a almacenar en la tabla de log de transacciones. - * - * @param pMethod Nombre del metodo a ejecutar. - * @return String - * @throws Exception - */ - private String getMethod(String pMethod) throws Exception { - if (pMethod.compareTo("save") == 0) { - return "S"; - } - if (pMethod.compareTo("query") == 0) { - return "Q"; - } - if (pMethod.compareTo("logon") == 0) { - return "L"; - } - return ""; - } - - /** - * Entrega la ip del servidor de aplicaciones. - * - * @return String - * @throws Exception - */ - private String getIp() throws Exception { - byte[] ip = InetAddress.getLocalHost().getAddress(); - - String sIPAddress = ""; - - for (int x = 0; x < ip.length; x++) { - if (x > 0) { - // A todos los numeros les anteponemos - // un punto menos al primero - sIPAddress += "."; - } - // Jugamos con los bytes y cambiamos el bit del signo - sIPAddress += ip[x] & 255; - } - return sIPAddress; - } - - /** - * Entrega el valor de: request - * - * @return Request - */ - public Request getRequest() { - return this.request; - } - - /** - * Fija el modulo, transaccion y version de origen. - * - * @throws Exception - */ - public void fillOriginalTransaction() throws Exception { - if (this.request != null) { - this.request.setOriginalTransactionModule(this.request.getTransactionModule()); - this.request.setOriginalTransactionCode(this.request.getTransactionCode()); - this.request.setOriginalTransactionVersion(this.request.getTransactionVersion()); - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.netbeans-base b/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.netbeans-base deleted file mode 100644 index 454f690..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.netbeans-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.bpm; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.actions.ActionTypes; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que se encarga de ejecutar acciones o peticiones que llegan desde los distintos canales. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class EngineExecutor { - - /** Objeto que contiene la instancia de la accion a ejecutar. */ - private ActionExecutor action = null; - - /** Almacena el metod a ejecutar, logon,save,query */ - private String method; - - /** Almacena el string de ejecucion de una transaccion. */ - private String data; - - private JSONObject response; - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param pData Datos con los que se procesa la transaccion. - * @param pFileItems Lista de archivos o imagenes a almacenar en la base. - * @return Object - * @throws Exception - */ - public Object process(String pData, List pFileItems) throws Throwable { - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - this.filldata(pData); - this.execute(pFileItems); - PersistenceHelper.flushTransaction(); - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e); - throw e; - } finally { - try { - if (!error) { - this.action.saveLog(this.getTime(sw), this.method); - } else { - this.action.saveLogWithCommit(this.getTime(sw), this.method, this.response.getString("messageCode"), - this.response.getString("message"), this.data, this.response.toString()); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return this.response; - - } - - private void execute(List pFileItems) throws Throwable { - this.action = ActionTypes.getActionTypes(this.method).getInstanceOfAction(); - this.response.put("result", this.action.execute(this.data, pFileItems)); - } - - private void filldata(String pData) throws Throwable { - this.response = new JSONObject(); - JSONObject rpcObject = JSONObject.fromObject(pData); - String id = rpcObject.getString("id"); - if (id != null) { - this.response.put("id", id); - } - JSONArray paramsArray = rpcObject.getJSONArray("params"); - List params = new ArrayList(); - for (int i = 0; i < paramsArray.size(); i++) { - params.add(paramsArray.get(i)); - } - this.method = rpcObject.getString("method"); - this.data = params.get(0).toString(); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - SaveData.setOriginalString(this.data); - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e) throws Exception { - APPLogger.getLogger().error("\nRequest:==>\n" + this.data); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - this.response.put("message", usrmsg); - this.response.put("messageCode", eh.getCode()); - this.response.put("isAplicationMessage", eh.isAppexception()); - this.response.put("trace", eh.getTechnicalMessage()); - if ((e instanceof APPException) || (e instanceof SQLException)) { - this.response.put("stackTrace", eh.getTechnicalMessage()); - } else { - this.response.put("stackTrace", eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + this.response.get("stackTrace")); - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.svn-base deleted file mode 100644 index 454f690..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/.svn/text-base/EngineExecutor.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.bpm; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.List; - -import net.sf.json.JSONArray; -import net.sf.json.JSONObject; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.actions.ActionTypes; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que se encarga de ejecutar acciones o peticiones que llegan desde los distintos canales. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class EngineExecutor { - - /** Objeto que contiene la instancia de la accion a ejecutar. */ - private ActionExecutor action = null; - - /** Almacena el metod a ejecutar, logon,save,query */ - private String method; - - /** Almacena el string de ejecucion de una transaccion. */ - private String data; - - private JSONObject response; - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param pData Datos con los que se procesa la transaccion. - * @param pFileItems Lista de archivos o imagenes a almacenar en la base. - * @return Object - * @throws Exception - */ - public Object process(String pData, List pFileItems) throws Throwable { - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - this.filldata(pData); - this.execute(pFileItems); - PersistenceHelper.flushTransaction(); - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e); - throw e; - } finally { - try { - if (!error) { - this.action.saveLog(this.getTime(sw), this.method); - } else { - this.action.saveLogWithCommit(this.getTime(sw), this.method, this.response.getString("messageCode"), - this.response.getString("message"), this.data, this.response.toString()); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return this.response; - - } - - private void execute(List pFileItems) throws Throwable { - this.action = ActionTypes.getActionTypes(this.method).getInstanceOfAction(); - this.response.put("result", this.action.execute(this.data, pFileItems)); - } - - private void filldata(String pData) throws Throwable { - this.response = new JSONObject(); - JSONObject rpcObject = JSONObject.fromObject(pData); - String id = rpcObject.getString("id"); - if (id != null) { - this.response.put("id", id); - } - JSONArray paramsArray = rpcObject.getJSONArray("params"); - List params = new ArrayList(); - for (int i = 0; i < paramsArray.size(); i++) { - params.add(paramsArray.get(i)); - } - this.method = rpcObject.getString("method"); - this.data = params.get(0).toString(); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - SaveData.setOriginalString(this.data); - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e) throws Exception { - APPLogger.getLogger().error("\nRequest:==>\n" + this.data); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - this.response.put("message", usrmsg); - this.response.put("messageCode", eh.getCode()); - this.response.put("isAplicationMessage", eh.isAppexception()); - this.response.put("trace", eh.getTechnicalMessage()); - if ((e instanceof APPException) || (e instanceof SQLException)) { - this.response.put("stackTrace", eh.getTechnicalMessage()); - } else { - this.response.put("stackTrace", eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + this.response.get("stackTrace")); - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/entries deleted file mode 100644 index bb36466..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/actions -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ActionTypes.java -file - - - - -2022-07-28T03:40:38.270784Z -2b41556f8963ae6df6570100c2f5c118 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2000 - -QueryAction.java -file - - - - -2022-07-28T03:40:38.270784Z -25a87710b759487beec0d52f66f65e22 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6754 - -LogonAction.java -file - - - - -2022-07-28T03:40:38.270784Z -ad98dbfdea3b6463c0167901d7742800 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3093 - -SaveAction.java -file - - - - -2022-07-28T03:40:38.270784Z -5d274d76fe122bfd5b32482aaaaa6fd0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7149 - -SaveActionHelper.java -file - - - - -2022-07-28T03:40:38.271784Z -9a98ff6688420b31e21800164d616da7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11605 - -Action.java -file - - - - -2022-07-28T03:40:38.271784Z -3489d2be1a9b2bfe9ed933e86e07afa0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -63 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/Action.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/Action.java.svn-base deleted file mode 100644 index 0e44f97..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/Action.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -package com.fp.bpm.actions; - -public interface Action { - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/ActionTypes.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/ActionTypes.java.svn-base deleted file mode 100644 index 3307dba..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/ActionTypes.java.svn-base +++ /dev/null @@ -1,80 +0,0 @@ -package com.fp.bpm.actions; - -import com.fp.bpm.ActionExecutor; - -/** - * Enumeracion en la que se define las clases que resuleven o ejecutan una accion. - * @author Jorge Vaca. - * @version 2.1 - */ -public enum ActionTypes { - - QUERY("query","com.fp.bpm.actions.QueryAction"), - SAVE("save","com.fp.bpm.actions.SaveAction"), - LOGON("logon","com.fp.bpm.actions.LogonAction"); - - /** - * Codig de accion al cual se asocia la clase de ejecucion. - */ - private String actionCode; - /** - * Clase especifica que procesa un codigo de accion. - */ - private String actionClass; - - /** - * Crea una instancia de de ActionTypes. - * @param pActionCode Codigo de accion. - * @param pActionClass Clase que procesa la accion.. - */ - private ActionTypes(String pActionCode,String pActionClass) { - actionCode = pActionCode; - actionClass = pActionClass; - } - - /** - * Entraga un objeto ActionTypes dado el codigo de accion. - * @param pActionCode Cdigo de accion. - * @return ActionTypes - * @throws Exception - */ - public static ActionTypes getActionTypes(String pActionCode) throws Exception{ - ActionTypes [] at = null; - at = ActionTypes.values(); - ActionTypes actiontypes = null; - for(ActionTypes obj : at){ - if(obj.actionCode.compareTo(pActionCode) == 0){ - actiontypes = obj; - } - } - return actiontypes; - } - - /** - * Entrega una instancia de la clase que maneja datos por cada accion. - * @return ActionExecutor - * @throws Exception - */ - public ActionExecutor getInstanceOfAction() throws Exception{ - return (ActionExecutor)Class.forName(actionClass).newInstance(); - } - - /** - * Entrega el valor de actionCode. - * @return String - * @throws Exception - */ - public String getActionCode() throws Exception { - return actionCode; - } - - /** - * Entrega el valor de actionClass. - * @return String - * @throws Exception - */ - public String getActionClass() throws Exception { - return actionClass; - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/LogonAction.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/LogonAction.java.svn-base deleted file mode 100644 index a5b033c..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/LogonAction.java.svn-base +++ /dev/null @@ -1,61 +0,0 @@ -package com.fp.bpm.actions; - -import java.util.List; - -import com.fp.bpm.ActionExecutor; -import com.fp.bpm.query.QueryProcessor; -import com.fp.common.fin.MessageGenerator; -import com.fp.dto.Response; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.QueryRequest; - -/** - * Clase que se encarga del logon del usuario. - * - * @author Santiago Castillo. - * @version 2.1 - */ -public class LogonAction extends ActionExecutor { - - @Override - public String execute(String pRequest, List fileItem) throws Exception { - String[] globaldata = pRequest.split(","); - String[] datacompany = globaldata[0].split(":"); - String dataAux = globaldata[1].substring(8, globaldata[1].length() - 3); - String[] data = dataAux.split(":"); - if (data.length != 5) { - return ""; - } - String company = datacompany[1]; - String login = data[0]; - String password = data[1].substring(16, 56); - String jsessionid = data[2]; - String ip = data[3]; - String host = data[4]; - String newRequest = "\"{" + "\"company\":" + company + "," + "\"transactionModule\":\"1\"," + "\"transactionCode\":9998," - + "\"transactionVersion\":1," + "\"login\":\"" + login + "\"," + "\"ip\":\"" + ip + "\"," + "\"itemValue\":\"" + password + "\"," + "\"jsessionid\":\"" + jsessionid - + "\"," + "\"host\":\"" + host + "\"," + "\"TSAFEUSERDETAIL\":{" + "\"automatic\":true," - + "\"beanName\":\"com.fp.persistence.pgeneral.safe.TsafeUserDetail\"," + "\"criteria\":[" + "{" + "\"operation\":\"=\"," - + "\"order\":null," + "\"value\":" + company + "," + "\"property\":\"companycode\"," - + "\"transportBeanClass\":\"com.fp.dto.query.QueryCriteria\"" + "}," + "{" + "\"operation\":\"=\"," + "\"order\":null," - + "\"value\":\"" + login + "\"," + "\"property\":\"pk.usercode\"," + "\"transportBeanClass\":\"com.fp.dto.query.QueryCriteria\"" - + "}," + "{" + "\"operation\":\"=\"," + "\"order\":null," + "\"value\":\"2999-12-31\"," + "\"property\":\"pk.dateto\"," - + "\"transportBeanClass\":\"com.fp.dto.query.QueryCriteria\"" + "}" + "]," + "\"page\":1," + "\"pageSize\":10," - + "\"transportBeanClass\":\"com.fp.dto.query.QueryBean\"," + "\"multirecord\":false" + "}," + "\"querytype\":\"T\"" + "}\""; - Serializer ser = new Serializer(newRequest); - QueryRequest qr = (QueryRequest) ser.toObject(QueryRequest.class); - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - // Log de transaccion - super.request = qr; - super.requestToLog(); - // fin log transaccion - Response res = new Response(Response.RESPONSE_OK, "OK"); - QueryProcessor qp = new QueryProcessor(); - qr.setResponse(res); - qp.process(qr); - ser = new Serializer(res); - return ser.toJSON(); - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.netbeans-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.netbeans-base deleted file mode 100644 index 38dce64..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.netbeans-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.bpm.actions; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.List; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.ActionExecutor; -import com.fp.bpm.helper.TransactionTime; -import com.fp.bpm.query.QueryProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.QueryRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que se encarga del manejo de querys en la aplicacion - */ -public class QueryAction extends ActionExecutor { - - /** - * Metodo que ejecuta el jason enviado desde la web - * - * @param pRequest Json que viaja desde la aplicacion - * @return - * @throws Exception - */ - @Override - public String execute(String pRequest, List fileItem) throws Exception { - Serializer ser = new Serializer(pRequest); - QueryRequest qr = (QueryRequest) ser.toObject(QueryRequest.class); - Response res = new Response(Response.RESPONSE_OK, "OK"); - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - // Log de transaccion - super.request = qr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // fin log transaccion - // Inicializa datos para el log de la transaccion. - this.fillThreadData(pRequest); - if (TransactionTime.verifyTransactionTime(null, qr)) { - qr.setResponse(res); - QueryProcessor qp = new QueryProcessor(); - qp.process(qr); - } else { - res = new Response("CORE-005", "TRANSACCION FUERA DE HORARIO: " + qr.getTransactionModule() + " TRANSACCION: " + qr.getTransactionCode() - + " VERSION: " + qr.getTransactionVersion()); - } - // res.changeAbstractBeanToMap(); - ser = new Serializer(res); - return ser.toJSON(); - } - - /** - * Metodo que almacena en SaveData, los datos del saverequest de entrada. - * - * @throws Exception - */ - private void fillThreadData(String pData) throws Exception { - // Inicializa el thread local. - SaveData.setSaveRequest(null); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - if (SaveData.getOriginalString() == null) { - // En producccion se almacena en el EngineExecutor - SaveData.setOriginalString(pData); - } - } - - - public Object process(Request request) throws Exception { - Response response = new Response(Response.RESPONSE_OK, "OK"); - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - - this.execute(request, response); - - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e, response); - //retorn excepcion para que no haga commit el ejb querybean - throw e; - } finally { - try { - if (!error) { - super.saveLog(this.getTime(sw), "Q"); - } else { - super.saveLogWithCommit(this.getTime(sw), "Q", response.getResponseCode(), - response.getResponseUserMessage(), null, null); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return response; - } - - private void execute(Request request, Response response) throws Exception { - QueryRequest qr = new QueryRequest(); - request.copy(qr); - request.copyMapValues(qr); - - qr.setQueryTables(request.getQueryTables()); - qr.setJsf(true); - qr.setResponse(response); - qr.putAll(request.getModifiedData()); //campos del request codigo de consuta. - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - // Log de transaccion - super.request = qr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // fin log transaccion - - if (TransactionTime.verifyTransactionTime(null, qr)) { - QueryProcessor qp = new QueryProcessor(); - qp.process(qr); - } else { - throw new GeneralException("CORE-0054", "TRANSACCIN FUERA DE HORARIO MODULO: {0} TRANSACCIN: {1} VERSIN: {2}", qr.getTransactionModule(), - qr.getTransactionCode(), qr.getTransactionVersion()); - } - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e,Response response) throws Exception { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - response.setResponseCode(eh.getCode()); - response.setResponseUserMessage(eh.getUserMessage()); - response.setIsAplicationMessage(eh.isAppexception()); - - - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.setResponseStack(eh.getTechnicalMessage()); - } else { - response.setResponseStack( eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + response.getResponseStack()); - } - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.svn-base deleted file mode 100644 index 38dce64..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/QueryAction.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.bpm.actions; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.List; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.ActionExecutor; -import com.fp.bpm.helper.TransactionTime; -import com.fp.bpm.query.QueryProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.QueryRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Clase que se encarga del manejo de querys en la aplicacion - */ -public class QueryAction extends ActionExecutor { - - /** - * Metodo que ejecuta el jason enviado desde la web - * - * @param pRequest Json que viaja desde la aplicacion - * @return - * @throws Exception - */ - @Override - public String execute(String pRequest, List fileItem) throws Exception { - Serializer ser = new Serializer(pRequest); - QueryRequest qr = (QueryRequest) ser.toObject(QueryRequest.class); - Response res = new Response(Response.RESPONSE_OK, "OK"); - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - // Log de transaccion - super.request = qr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // fin log transaccion - // Inicializa datos para el log de la transaccion. - this.fillThreadData(pRequest); - if (TransactionTime.verifyTransactionTime(null, qr)) { - qr.setResponse(res); - QueryProcessor qp = new QueryProcessor(); - qp.process(qr); - } else { - res = new Response("CORE-005", "TRANSACCION FUERA DE HORARIO: " + qr.getTransactionModule() + " TRANSACCION: " + qr.getTransactionCode() - + " VERSION: " + qr.getTransactionVersion()); - } - // res.changeAbstractBeanToMap(); - ser = new Serializer(res); - return ser.toJSON(); - } - - /** - * Metodo que almacena en SaveData, los datos del saverequest de entrada. - * - * @throws Exception - */ - private void fillThreadData(String pData) throws Exception { - // Inicializa el thread local. - SaveData.setSaveRequest(null); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - if (SaveData.getOriginalString() == null) { - // En producccion se almacena en el EngineExecutor - SaveData.setOriginalString(pData); - } - } - - - public Object process(Request request) throws Exception { - Response response = new Response(Response.RESPONSE_OK, "OK"); - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - - this.execute(request, response); - - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e, response); - //retorn excepcion para que no haga commit el ejb querybean - throw e; - } finally { - try { - if (!error) { - super.saveLog(this.getTime(sw), "Q"); - } else { - super.saveLogWithCommit(this.getTime(sw), "Q", response.getResponseCode(), - response.getResponseUserMessage(), null, null); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return response; - } - - private void execute(Request request, Response response) throws Exception { - QueryRequest qr = new QueryRequest(); - request.copy(qr); - request.copyMapValues(qr); - - qr.setQueryTables(request.getQueryTables()); - qr.setJsf(true); - qr.setResponse(response); - qr.putAll(request.getModifiedData()); //campos del request codigo de consuta. - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - // Log de transaccion - super.request = qr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // fin log transaccion - - if (TransactionTime.verifyTransactionTime(null, qr)) { - QueryProcessor qp = new QueryProcessor(); - qp.process(qr); - } else { - throw new GeneralException("CORE-0054", "TRANSACCIN FUERA DE HORARIO MODULO: {0} TRANSACCIN: {1} VERSIN: {2}", qr.getTransactionModule(), - qr.getTransactionCode(), qr.getTransactionVersion()); - } - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e,Response response) throws Exception { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - response.setResponseCode(eh.getCode()); - response.setResponseUserMessage(eh.getUserMessage()); - response.setIsAplicationMessage(eh.isAppexception()); - - - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.setResponseStack(eh.getTechnicalMessage()); - } else { - response.setResponseStack( eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + response.getResponseStack()); - } - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.netbeans-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.netbeans-base deleted file mode 100644 index e2e7b92..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.netbeans-base +++ /dev/null @@ -1,185 +0,0 @@ -package com.fp.bpm.actions; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.List; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.ActionExecutor; -import com.fp.bpm.helper.TransactionTime; -import com.fp.bpm.save.SaveProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Accion que permite el almacenamiento de informacion en la Base de Datos. - * - * @version 2.1 - */ -public class SaveAction extends ActionExecutor { - - /** - * Funcin que gurda los datos enviados en la base de datos - * - * @param pRequest Peticion de Datos para la Accion - * @param fileItem Lista de archivos si van a ser procesados por lote - * @return Respuesta en JSON del proceso del save. - * @throws Exception - */ - @Override - public String execute(String pRequest, List fileItem) throws Exception { - Serializer ser = new Serializer(pRequest); - SaveRequest sr = (SaveRequest) ser.toObject(SaveRequest.class); - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - sr.setJournalId(mg.generateId(sr.getUser())); - // Log de la transaccion. - super.request = sr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // Fin log de transaccion - sr.put("file", fileItem); - Response res = new Response(Response.RESPONSE_OK, "OK"); - - this.fillThreadData(pRequest, sr); - if (TransactionTime.verifyTransactionTime(sr, null)) { - sr.setResponse(res); - SaveProcessor processor = new SaveProcessor(); - processor.process(sr, res); - } else { - res = new Response("CORE-005", "TRANSACCION FUERA DE HORARIO: " + sr.getTransactionModule() + " TRANSACCION: " + sr.getTransactionCode() - + " VERSION: " + sr.getTransactionVersion()); - } - ser = new Serializer(res); - return ser.toJSON(); - } - - /** - * Metodo que almacena en SaveData, los datos del saverequest de entrada. - * - * @throws Exception - */ - private void fillThreadData(String pData, SaveRequest pSaveRequest) throws Exception { - SaveData.setSaveRequest(pSaveRequest); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - if (SaveData.getOriginalString() == null && pData != null) { - // En producccion se almacena en el EngineExecutor - SaveData.setOriginalString(pData); - } - } - - public Object process(Request request) throws Exception { - Response response = new Response(Response.RESPONSE_OK, "OK"); - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - - this.execute(request, response); - - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e, response); - //retorn excepcion para que no haga commit el ejb savebean - throw e; - } finally { - try { - if (!error) { - super.saveLog(this.getTime(sw), "S"); - } else { - super.saveLogWithCommit(this.getTime(sw), "S", response.getResponseCode(), response.getResponseUserMessage(), null, null); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return response; - } - - /** - * Funcin que gurda los datos enviados en la base de datos - * - * @param pRequest Peticion de Datos para la Accion - * @throws Exception - */ - public void execute(Request request, Response response) throws Exception { - SaveRequest sr = new SaveRequest(); - sr.setJsf(true); - request.copy(sr); - request.copyMapValues(sr); - sr.setResponse(response); - sr.putAll(request.getModifiedData()); //campos sueltos del request. - SaveActionHelper sah = new SaveActionHelper(); - sah.addSaveBean(request, sr); // Adiciona sabebean de mantenimiento. - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - sr.setJournalId(mg.generateId(sr.getUser())); - // Log de la transaccion. - super.request = sr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // Fin log de transaccion - this.fillThreadData(null, sr); - if (TransactionTime.verifyTransactionTime(sr, null)) { - SaveProcessor processor = new SaveProcessor(); - processor.process(sr, response); - - sah.addPktoResponse(request, response); - } else { - throw new GeneralException("CORE-0054", "TRANSACCIN FUERA DE HORARIO MODULO: {0} TRANSACCIN: {1} VERSIN: {2}", sr.getTransactionModule(), - sr.getTransactionCode(), sr.getTransactionVersion()); - } - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e, Response response) throws Exception { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - response.setResponseCode(eh.getCode()); - response.setResponseUserMessage(eh.getUserMessage()); - response.setIsAplicationMessage(eh.isAppexception()); - - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.setResponseStack(eh.getTechnicalMessage()); - } else { - response.setResponseStack(eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + response.getResponseStack()); - } - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.svn-base deleted file mode 100644 index e2e7b92..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveAction.java.svn-base +++ /dev/null @@ -1,185 +0,0 @@ -package com.fp.bpm.actions; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.util.List; - -import org.apache.commons.lang.time.StopWatch; - -import com.fp.bpm.ActionExecutor; -import com.fp.bpm.helper.TransactionTime; -import com.fp.bpm.save.SaveProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.data.SaveData; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.save.SaveRequest; -import com.fp.general.exception.GeneralException; -import com.fp.persistence.commondb.helper.FormatDates; - -/** - * Accion que permite el almacenamiento de informacion en la Base de Datos. - * - * @version 2.1 - */ -public class SaveAction extends ActionExecutor { - - /** - * Funcin que gurda los datos enviados en la base de datos - * - * @param pRequest Peticion de Datos para la Accion - * @param fileItem Lista de archivos si van a ser procesados por lote - * @return Respuesta en JSON del proceso del save. - * @throws Exception - */ - @Override - public String execute(String pRequest, List fileItem) throws Exception { - Serializer ser = new Serializer(pRequest); - SaveRequest sr = (SaveRequest) ser.toObject(SaveRequest.class); - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - sr.setJournalId(mg.generateId(sr.getUser())); - // Log de la transaccion. - super.request = sr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // Fin log de transaccion - sr.put("file", fileItem); - Response res = new Response(Response.RESPONSE_OK, "OK"); - - this.fillThreadData(pRequest, sr); - if (TransactionTime.verifyTransactionTime(sr, null)) { - sr.setResponse(res); - SaveProcessor processor = new SaveProcessor(); - processor.process(sr, res); - } else { - res = new Response("CORE-005", "TRANSACCION FUERA DE HORARIO: " + sr.getTransactionModule() + " TRANSACCION: " + sr.getTransactionCode() - + " VERSION: " + sr.getTransactionVersion()); - } - ser = new Serializer(res); - return ser.toJSON(); - } - - /** - * Metodo que almacena en SaveData, los datos del saverequest de entrada. - * - * @throws Exception - */ - private void fillThreadData(String pData, SaveRequest pSaveRequest) throws Exception { - SaveData.setSaveRequest(pSaveRequest); - // Almacena string de datos de entrada en el thread local, se utiliza para llenar - if (SaveData.getOriginalString() == null && pData != null) { - // En producccion se almacena en el EngineExecutor - SaveData.setOriginalString(pData); - } - } - - public Object process(Request request) throws Exception { - Response response = new Response(Response.RESPONSE_OK, "OK"); - StopWatch sw = null; - boolean error = false; - try { - sw = new StopWatch(); - sw.start(); - - this.execute(request, response); - - sw.stop(); - - } catch (Throwable e) { - error = true; - try { - if (sw != null) { - sw.stop(); - } - } catch (IllegalStateException e1) { - // o hacer nada el stopwatch ya esta detenido - } - this.fillError(e, response); - //retorn excepcion para que no haga commit el ejb savebean - throw e; - } finally { - try { - if (!error) { - super.saveLog(this.getTime(sw), "S"); - } else { - super.saveLogWithCommit(this.getTime(sw), "S", response.getResponseCode(), response.getResponseUserMessage(), null, null); - } - } catch (Exception e2) { - APPLogger.getLogger().error("ERROR GRABANDO LOG AUDITORIA \n"); - } - } - return response; - } - - /** - * Funcin que gurda los datos enviados en la base de datos - * - * @param pRequest Peticion de Datos para la Accion - * @throws Exception - */ - public void execute(Request request, Response response) throws Exception { - SaveRequest sr = new SaveRequest(); - sr.setJsf(true); - request.copy(sr); - request.copyMapValues(sr); - sr.setResponse(response); - sr.putAll(request.getModifiedData()); //campos sueltos del request. - SaveActionHelper sah = new SaveActionHelper(); - sah.addSaveBean(request, sr); // Adiciona sabebean de mantenimiento. - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - sr.setJournalId(mg.generateId(sr.getUser())); - // Log de la transaccion. - super.request = sr; - // fija transaccion original - super.fillOriginalTransaction(); - super.requestToLog(); - // Fin log de transaccion - this.fillThreadData(null, sr); - if (TransactionTime.verifyTransactionTime(sr, null)) { - SaveProcessor processor = new SaveProcessor(); - processor.process(sr, response); - - sah.addPktoResponse(request, response); - } else { - throw new GeneralException("CORE-0054", "TRANSACCIN FUERA DE HORARIO MODULO: {0} TRANSACCIN: {1} VERSIN: {2}", sr.getTransactionModule(), - sr.getTransactionCode(), sr.getTransactionVersion()); - } - } - - /** - * Obtiene el tiempo de respuesta resultado de la ejecucion de una transaccion. - * - * @param sw Objeto que contiene el tiempo de ejecucion de una transaccion. - * @return BigDecimal - * @throws Exception - */ - private BigDecimal getTime(StopWatch sw) throws Exception { - Date d = new Date(sw.getTime()); - return new BigDecimal(FormatDates.getInstance().getTimeInSeconds().format(d)); - } - - private void fillError(Throwable e, Response response) throws Exception { - ExceptionHandler eh = new ExceptionHandler(e, "es"); - APPLogger.getLogger().error("User Message:==>\n" + eh.getUserMessage()); - response.setResponseCode(eh.getCode()); - response.setResponseUserMessage(eh.getUserMessage()); - response.setIsAplicationMessage(eh.isAppexception()); - - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.setResponseStack(eh.getTechnicalMessage()); - } else { - response.setResponseStack(eh.getStackTrace().length() > 1536 ? eh.getStackTrace().substring(0, 1536) : eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + response.getResponseStack()); - } - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveActionHelper.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveActionHelper.java.svn-base deleted file mode 100644 index 3b81148..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/actions/.svn/text-base/SaveActionHelper.java.svn-base +++ /dev/null @@ -1,289 +0,0 @@ -package com.fp.bpm.actions; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.EntityManager; - -import com.fp.bpm.save.Save; -import com.fp.common.exception.APPException; -import com.fp.common.helper.BeanManager; -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.History; -import com.fp.dto.save.DtoSave; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Clase utilitaria que crea un SaveRequest dado un request de mantenimiento. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class SaveActionHelper { - - public void addSaveBean(Request request, SaveRequest saverequest) throws Exception { - Map m = request.getSaveTables(); - if (m == null) { - return; - } - Set s = m.keySet(); - for (String key : s) { - DtoSave sdto = m.get(key); - this.addCamposControl(sdto, saverequest); - List lreg = creaObjetosPorTabla(sdto.getLupdated(), key, sdto.getBeanname()); - - SaveBean sb = new SaveBean(sdto.getBeanname()); - sb.setDeletedRecords(sdto.getLdeleted()); - Save save = new Save(); - save.deleteBean(sb); - sb.setDeletedRecords(new ArrayList()); - - sb.addModified(lreg, sdto.isIsForm()); - sb.addInsertObject(sdto.getLinsert(), sdto.isIsForm()); - Integer pos = sdto.getPosition(); - if (pos != null) { - saverequest.putSaveBean(key, sb, pos); - } else { - saverequest.putSaveBean(key, sb); - } - } - } - - /** - * Metodo que entrega una lista de Objetos con sus datos. - * - * @param mdatos Map con los datos a crear un objeto y fijar datos. - * @param criterio Criterio para armar la lista de objetos, el clriterio es; ins (Insert), upd (Update), del - * (delete) - * @param isupdate true indica que se realiza un update a la tabla. - * @param tabla Alias de la tabla a manipular. - * @return List - * @throws Exception - */ - private static List creaObjetosPorTabla(List> ldatos, String tabla, String nombrebean) throws Exception { - List lbeans = new ArrayList(); - if (ldatos == null || ldatos.isEmpty()) { - return lbeans; - } - for (Map map : ldatos) { - // En mantenimiento se ecesita el bean para obtener el pk y leer el registro de la base. - Object bean = SaveActionHelper.getBeanInstance(nombrebean); - // En el mantenimiento se cambia el bean por el de la base y se completa datos del rq. - bean = SaveActionHelper.mapToObjeto(bean, map, tabla); - ((AbstractDataTransport) bean).isupdated = true; - lbeans.add(bean); - } - return lbeans; - } - - /** - * - * @param tabladto - * @throws Exception - */ - private void addCamposControl(DtoSave dtosave, SaveRequest saverequest) throws Exception { - Map m = dtosave.getMdata(); - Set s = m.keySet(); - for (String key : s) { - Object obj = m.get(key); - try { - BeanManager.setBeanAttributeValue(this, key, obj); - } catch (NoSuchMethodException e) { - saverequest.put(key, obj); - } catch (IllegalArgumentException e1) { - fijaValorAlObjeto(key, obj, saverequest); - } - } - } - - /** - * Fija el valor al request convirtiendo el tipo de dato al definido en el request. - * - * @param key Nombre del atrinuto. - * @param obj Valor a fija al request. - * @throws Exception - */ - private void fijaValorAlObjeto(String key, Object obj, SaveRequest saverequest) throws Exception { - try { - Class type = null; - try { - type = BeanManager.getBeanGetterMethod(this, key).getReturnType(); - } catch (Exception e2) { - // No hacer nada. - } - try { - obj = BeanManager.convertObject(obj, type); - } catch (Exception e) { - // No hacer nada. - } - BeanManager.setBeanAttributeValue(this, key, obj); - } catch (Exception e) { - saverequest.put(key, obj); - } - } - - /** - * Metodo que crea y entrega una instancia de un bean persistente. - * - * @param beanname Paquete clase del bean a crear. - * @return Object - * @throws Exception - */ - private static Object getBeanInstance(String beanname) throws Exception { - - Object b = (Class.forName(beanname)).newInstance(); - if (!(b instanceof HibernateBean)) { - return b; - } - try { - Object bkey = Class.forName(beanname + "Key").newInstance(); - BeanManager.setBeanAttributeValue(b, "pk", bkey); - } catch (ClassNotFoundException e) { - // si el objeto no tiene pk compuesto no hacer nada. - return b; - } - return b; - } - - private static Object mapToObjeto(Object bean, Map map, String tabla) throws Exception { - for (String key : map.keySet()) { - Object valor = map.get(key); - setValue(bean, key, valor); - } - // Eso se hace solo si es un update. - if (bean instanceof AbstractDataTransport) { - // si es update y es de tipo trnsaporte de flip - bean = SaveActionHelper.merge(bean, map, tabla); - } - return bean; - } - - private static void setValue(Object bean, String campo, Object valor) throws Exception { - try { - BeanManager.setBeanAttributeValue(bean, campo, valor); - } catch (IllegalArgumentException e) { - Class type = null; - try { - type = BeanManager.getBeanGetterMethod(bean, campo).getReturnType(); - } catch (Exception e2) { - // No hacer nada. - } - try { - valor = BeanManager.convertObject(valor, type); - } catch (Exception e1) { - // No hacer nada. - } - BeanManager.setBeanAttributeValue(bean, campo, valor); - } catch (NullPointerException e) { - throw new APPException("COMMON-0019", "CAMPO: {0} NO EXISTE EN EL BEAN: {1}", campo, bean.getClass().getSimpleName()); - } - } - - private static Object merge(Object bean, Map map, String tablealias) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Object id = BeanManager.getBeanAttributeValue(bean, "pk"); - if ((id instanceof History)) { - History pk = (History) id; - if (pk.getDateto() == null) { - throw new APPException("COMMON-0020", "CAMPO DATETO DEL REGISTRO NO ENVIADO TABLA: {0}", bean.getClass().getSimpleName()); - } - } - HibernateBean beanbase = (HibernateBean) em.find(bean.getClass(), id); - if (beanbase == null) { - // Si no encuentra un registro a modificar en la base, esta cambiando el pk, o el registro tiene que llegar - // como un insert - throw new APPException("COMMON-0021", "TABLA NO PERMITE ACTUALIZAR EL PK: {0}", tablealias); - } - HibernateBean boriginal = (HibernateBean) beanbase.cloneMe(); - for (String key : map.keySet()) { - if (key.compareTo("__id") == 0 || key.compareTo("pk") == 0) { - continue; - } - key = key.replace("pk_", "pk."); - if ((key.length() >= 3) && (key.substring(0, 3).compareTo("pk.") == 0)) { - continue; - } - if (key.equals("recordversion")) { - validateOptlocking(map.get(key), beanbase); - } - Object value = map.get(key); - - BeanManager.setAbstractDataTransportAttributeValue(beanbase, key, value); - } - // va aqui porque en el for anterior se fija el valor de mdatos que llega desde la pantalla. - ((AbstractDataTransport) beanbase).put("ORIGINALBEAN", boriginal); - return beanbase; - } - - /** - * Valida que el campo optlock que llega en el request coincida con el que esta en la base de datos.s - * - * @param opplockrequest Valor del request del campo optlock. - * @param beanbase Objeto que contiene los datos de la base de datos de registro que se modifica. - * @throws Exception - */ - private static void validateOptlocking(Object opplockrequest, HibernateBean beanbase) throws Exception { - Object optlockorig = BeanManager.getBeanAttributeValue(beanbase, "recordversion"); - if (optlockorig != null && !opplockrequest.equals(optlockorig)) { - // Si la version del registro original es diferente el usuario tiene que reconsultar los datos. - throw new APPException("COMMON-0022", "DATOS DE LA TABLA: {0} MODIFICADOS EN OTRA SESSION RECONSULTE LOS DATOS", beanbase.getClass() - .getSimpleName()); - } - } - - public void addPktoResponse(Request request, Response response) throws Exception { - Map m = request.getSaveTables(); - if (m == null) { - return; - } - Set s = m.keySet(); - for (String key : s) { - DtoSave sdto = m.get(key); - if (!sdto.isReturnpk()) { - continue; - } - if (sdto.getLinsert() != null && !sdto.getLinsert().isEmpty()) { - AbstractDataTransport t = sdto.getLinsert().get(0); - if (t instanceof HibernateBean) { - List lpkfields = PersistenceManager.getDataBasePKFields(t.getClass()); - this.addPkbyTable(key, sdto.getLinsert(), lpkfields, response); - } - - } - } - } - - private void addPkbyTable(String key, List ldata, List lpkfields, Response response) throws Exception { - List> lpk = new ArrayList>(); - for (AbstractDataTransport obj : ldata) { - Map m = this.buildMapPk(obj, lpkfields); - lpk.add(m); - } - response.put(key, lpk); - } - - private Map buildMapPk(AbstractDataTransport bean, List lpkfields) throws Exception { - Map m = new HashMap(); - for (String field : lpkfields) { - String aux = field.toLowerCase(); - Object value = BeanManager.getBeanAttributeValue(bean, aux); - - if (aux.compareTo("pk.dateto") == 0 && value == null) { - value = Constant.getDefaultExpiryDate(); - } - m.put(field.replace(".", "_"), value); - } - m.put("rowkey", bean.getRowkey()); - return m; - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/entries deleted file mode 100644 index d83a379..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TransactionTime.java -file - - - - -2022-07-28T03:40:38.233784Z -0634ce082a65ec63d6223169836f1795 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3618 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/text-base/TransactionTime.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/text-base/TransactionTime.java.svn-base deleted file mode 100644 index 168be28..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/helper/.svn/text-base/TransactionTime.java.svn-base +++ /dev/null @@ -1,77 +0,0 @@ -package com.fp.bpm.helper; - -import com.fp.dto.query.QueryRequest; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.safe.TsafeProfileHorary; -import com.fp.persistence.pgeneral.safe.TsafeProfileHoraryKey; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Calendar; - -/** - * Clase que se encarga de verificar si una transaccion se debe ejecutar en una hora determinada - * @author scastillo - */ -public class TransactionTime { - - private static SimpleDateFormat simpleDateFormatCreateTime = new SimpleDateFormat("HHmm"); - - /** - * Metodo que se encarga de verificar si la transaccion a procesar se encuentra dentro de un horario permitido - * @param saveRequest Objeto SaveRequest - * @param queryRequest Objeto QueryRequest - * @return - * @throws Exception - */ - public static boolean verifyTransactionTime(SaveRequest saveRequest, QueryRequest queryRequest) throws Exception { - boolean transactionEnabled = true; - if (queryRequest != null && queryRequest.get("cancelVerification") != null && ((Boolean) queryRequest.get("cancelVerification")).booleanValue()) { - return transactionEnabled; - } - String profile = null; - String module = null; - Integer transactioncode = null; - Integer transactionversion = null; - if (saveRequest != null) { - profile = saveRequest.getProfile(); - module = saveRequest.getTransactionModule(); - transactioncode = saveRequest.getTransactionCode(); - transactionversion = saveRequest.getTransactionVersion(); - } else if (queryRequest != null) { - profile = queryRequest.getProfile(); - module = queryRequest.getTransactionModule(); - transactioncode = queryRequest.getTransactionCode(); - transactionversion = queryRequest.getTransactionVersion(); - if (profile == null || module == null || transactioncode == null || transactionversion == null) { - return transactionEnabled; - } - } - Timestamp date = FormatDates.getInstance().getDataBaseTimestamp(); - Calendar calc = Calendar.getInstance(); - calc.setTime(date); - Integer day = calc.get(Calendar.DAY_OF_WEEK); - Integer hour = new Integer(TransactionTime.simpleDateFormatCreateTime.format(date)); - TsafeProfileHoraryKey tsafeProfileHoraryKey = new TsafeProfileHoraryKey(profile, - module, transactioncode, transactionversion, day); - TsafeProfileHorary tsafeProfileHorary = TsafeProfileHorary.find(PersistenceHelper.getEntityManager(), - tsafeProfileHoraryKey); - if (tsafeProfileHorary != null) { - Integer initTime = new Integer(tsafeProfileHorary.getInittime().replaceAll(":", "")); - Integer finishTime = new Integer(tsafeProfileHorary.getFinishtime().replaceAll(":", "")); - if (hour < initTime || hour > finishTime) { - transactionEnabled = false; - } - if (transactionEnabled && tsafeProfileHorary.getValidateamount() != null - && tsafeProfileHorary.getValidateamount().compareTo("Y") == 0) { - if (saveRequest != null) { - saveRequest.put("validateamount", "Y"); - } else if (queryRequest != null) { - queryRequest.put("validateamount", "Y"); - } - } - } - return transactionEnabled; - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/entries deleted file mode 100644 index abdc52e..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/entries +++ /dev/null @@ -1,269 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -menu -dir - -Query.java -file - - - - -2022-07-28T03:40:38.337784Z -9009274058de23b9ef17f5af03dee0de -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7547 - -QueryHelper.java -file - - - - -2022-07-28T03:40:38.337784Z -0f328699680ab3bb9c6f130ead580874 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13137 - -QueryProcessor.java -file - - - - -2022-07-28T03:40:38.338784Z -a6c0ffdbbc1548adc3a2793ee1722db6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7755 - -QueryOperation.java -file - - - - -2022-07-28T03:40:38.338784Z -8a597ae3f4bd59dac7062d2d0c282312 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -64 - -QueryProcessCriteria.java -file - - - - -2022-07-28T03:40:38.338784Z -8221f620756f7ab915d9dc4d84fc8633 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4618 - -QueryJsf.java -file - - - - -2022-07-28T03:40:38.338784Z -7f619ef2b90c33f8bf9d02459fd1161c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8586 - -QueryHQL.java -file - - - - -2022-07-28T03:40:38.339784Z -2aff521aa09e728fa22cc3b48290b3f9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13607 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/Query.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/Query.java.svn-base deleted file mode 100644 index 5de3c53..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/Query.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.bpm.query; - - -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.persistence.commondb.exception.CommondbException; -import java.util.ArrayList; -import java.util.Hashtable; - -/** - * Clase que se encarga de realizar consultas genericas a la base de datos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Query extends QueryHelper { // NOPMD by jorge on 12/10/10 21:44 - - /** - * Numero maximo de registros a entregar en en la consulta, cuando se trate de una consulta multiregistro. - */ - private int maxresults; - - /** - * Metodo principal que inicia la consulta de datos, El objeto QueryRequest contiene una lista de objetos QueryBean, - * para cada uno de estos objetos arma un Query le asocia parametros y ejecuta la consulta. - * - * @param pQueryRequest Objeto que contiene una lista de objetos QueryBean. - * @return boolean - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - public boolean process(QueryRequest pQueryRequest) throws CommondbException, ClassNotFoundException, InstantiationException, - IllegalAccessException, Exception { - Response response = pQueryRequest.getResponse(); - Map bean = pQueryRequest.getBeans(); - for (String k : bean.keySet()) { - QueryBean qbean = bean.get(k); - if ((qbean.getBeanName() == null)) { - continue; - } - response.put(k, this.processByQueryBean(qbean)); - } - this.query = null; - return true; - } - - /** - * Metodo que se encarga de ejecutar la consulta por QueryBean, genera dicamente la sentencia, adiciona parametros - * ejecuta la consulta y arma la respuesta de los datos del bean. - * - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @return Object - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - private Object processByQueryBean(QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, InstantiationException, - IllegalAccessException, Exception { - if ((pQueryBean.getQuerytype() != null) && (pQueryBean.getQuerytype().compareTo("E") == 0)) { - if (pQueryBean.isMultirecord()) { - List data = new ArrayList(); - data.add((AbstractDataTransport) this.createObject(pQueryBean)); - return data; - } - return this.createObject(pQueryBean); - } - this.buildSenetnce(pQueryBean); - // return null; - return this.queryData(pQueryBean); - } - - /** - * Metodo que se encarga de armar la sentencia del query, adiciona restricciones y criterios de ordenamiento de los - * resultados. - * - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - @SuppressWarnings("rawtypes") - private void buildSenetnce(QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, // NOPMD by jorge - // on 12/10/10 - // 21:44 - InstantiationException, IllegalAccessException, Exception { - Object beanReference = Class.forName(pQueryBean.getBeanName()).newInstance(); - this.query = new StringBuffer(); - this.mParameters = new Hashtable(); - this.query.append("FROM " + pQueryBean.getBeanName() + " t "); - boolean first = true; - for (QueryCriteria criteria : pQueryBean.getCriteria()) { - String condition = criteria.getOperation(); - if ((condition != null) && ((condition.compareTo("isNull") == 0) || (condition.compareTo("isNotNull") == 0))) { - criteria.setValue(""); - } - if ((criteria.getValue() == null) - && ((condition == null) || (condition.compareTo("isNull") != 0) || (condition.compareTo("isNotNull") != 0))) { - continue; - } - if (first) { - this.query.append(" WHERE "); - first = false; - } else { - this.query.append(" AND "); - } - if (criteria.getOperation() == null) { - continue; - } - Class type = null; - try { - type = BeanManager.getBeanGetterMethod(beanReference, criteria.getProperty()).getReturnType(); - } catch (Exception e1) { - } - super.addRestrictions(criteria, type); - } - super.addOrder(pQueryBean); - if ((pQueryBean.getPage() > 0) && (pQueryBean.getPageSize() > 0)) { - this.maxresults = pQueryBean.getPageSize(); - } - } - - /** - * Metodo que se encarga de ejecutar la consulta, crea un HqlStatement, fija los parametros y arma los datos de - * respuesta. - * - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @return Object - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - @SuppressWarnings("unchecked") - private Object queryData(QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException, - Exception { - String searchCatalogDetail = (String) pQueryBean.get("catalogdesc"); - String[] nameAttributes = null; - if (searchCatalogDetail != null) { - nameAttributes = searchCatalogDetail.split("\\*"); - } - APPLogger.getLogger().debug("CONSULTA: " + super.query.toString()); - HqlStatement hql = new HqlStatement(super.query.toString()); - hql.setParametersValue(super.mParameters); - hql.setPage(pQueryBean.getPage()); - hql.setRecordperpage(this.maxresults); - if (pQueryBean.isMultirecord()) { - List data = new ArrayList(); - List ldata = hql.execute().getResultList(); - boolean exists = false; - for (Object object : ldata) { - exists = true; - data.add(this.fillRecord(pQueryBean, object, nameAttributes)); - } - if (!exists) { - Object obj = this.createObject(pQueryBean); - data.add(obj); - } - return (data); - } else { - AbstractDataTransport obj = (AbstractDataTransport) hql.getObject(); - super.completeDescriptionCatalog(obj, nameAttributes); - this.addAditionData(pQueryBean, obj); - return obj; - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHQL.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHQL.java.svn-base deleted file mode 100644 index 3fcd2a2..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHQL.java.svn-base +++ /dev/null @@ -1,333 +0,0 @@ -package com.fp.bpm.query; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; - -import org.hibernate.Criteria; -import org.hibernate.ScrollMode; -import org.hibernate.ScrollableResults; -import org.hibernate.criterion.Criterion; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Property; -import org.hibernate.criterion.Restrictions; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Motor de consultas generico. - * @author Jorge Vaca - * @version 2.1 - */ -public class QueryHQL { - - public QueryHQL() { - } - - /** - * Metodo que se encarga de ejecutar consultas genericas.
      - * Proceso.
      - *
        - *
      • Obtiene una lista de QueryBean del Objeto QueryRequest
      • - *
      • Ejecuta la consulta para cada QueryBean
      • - *
      • Llena la respuesta en el response.
      • - *
      - * @param pReq - * @return boolean - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - public boolean process(QueryRequest pQueryRequest) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException, Exception { - Response response = pQueryRequest.getResponse(); - Map bean = pQueryRequest.getBeans(); - for (String k : bean.keySet()) { - QueryBean qbean = bean.get(k); - response.put(k, this.processByQueryBean(qbean)); - } - return true; - } - - /** - * Metodo que ejecuta una consulta por QueryBean.
      - * Si el QueryType asociado al QueryBean es E, Crea y entrega un objeto vacio. - * @param pQueryBean Datos del QueryBean - * @return Object - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - private Object processByQueryBean(QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException, Exception { - if (pQueryBean.getQuerytype() != null && pQueryBean.getQuerytype().compareTo("E") == 0) { - if (pQueryBean.isMultirecord()) { - List data = new ArrayList(); - data.add(this.createObject(pQueryBean)); - return data; - } - return this.createObject(pQueryBean); - } - Criteria cri = this.prepareCriteria(pQueryBean); - return this.queryData(cri, pQueryBean); - } - - /** - * Metodo que ejecuta la consulta a la base de datos.
      - * Si es un multiregistro obtiene un resultset se recorre y entraga la respuesta, casocontarrio busca un solo - * objeto en la base. - * @param pCriteria Criteria con la cual se obtiene los datos de la base. - * @param pQueryBean Datos del objeto de consulta. - * @return Object - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - * @throws Exception - */ - private Object queryData(Criteria pCriteria, QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException, Exception { - String searchCatalogDetail = (String) pQueryBean.get("catalogdesc"); - String[] nameAttributes = null; - if (searchCatalogDetail != null) { - nameAttributes = searchCatalogDetail.split("\\*"); - } - - if (pQueryBean.isMultirecord()) { - List data = new ArrayList(); - ScrollableResults scroll = pCriteria.scroll(ScrollMode.FORWARD_ONLY); - boolean exists = false; - while (scroll.next()) { - exists = true; - Object[] record = scroll.get(); - data.add(this.fillRecord(record, nameAttributes)); - } - if (!exists && pQueryBean.getPage() == 1) { - Object obj = this.createObject(pQueryBean); - data.add(obj); - } - return data; - } else { - AbstractDataTransport obj = (AbstractDataTransport) pCriteria.uniqueResult(); - this.completeDescriptionCatalog(obj, nameAttributes); - return obj; - } - } - - /** - * Metodo que transforma los campos de un registro a un AbstractDataTransport. - * @param pRecord Datos de un registro obtenidos de la base de datos. - * @param nameAttributes Atributos adicionales con los cuales se completa la descripcion del catalogo. - * @return Object. - * @throws Exception - */ - private Object fillRecord(Object[] pRecord, String[] nameAttributes) throws Exception { - if (pRecord == null) { - return null; - } - if (pRecord.length == 1) { - AbstractDataTransport obj = (AbstractDataTransport) pRecord[0]; - this.completeDescriptionCatalog(obj, nameAttributes); - return obj; - } else { - Map m = new HashMap(); - return m; - } - } - - /** - * Metodo que procesa y adiciona los distintos criterios al bean. - * @param pQueryBean Objeto al cual se adicionan las restricciones de consulta. - * @return Criteria - * @throws CommondbException - * @throws ClassNotFoundException - * @throws InstantiationException - * @throws IllegalAccessException - */ - @SuppressWarnings("rawtypes") - private Criteria prepareCriteria(QueryBean pQueryBean) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException { - Object beanReference = Class.forName(pQueryBean.getBeanName()).newInstance(); - Criteria c = PersistenceHelper.getSession().createCriteria(pQueryBean.getBeanName()); - - for (QueryCriteria criteria : pQueryBean.getCriteria()) { - if (criteria.getOperation() == null) { - continue; - } - Class type = null; - try { - type = BeanManager.getBeanGetterMethod(beanReference, criteria.getProperty()).getReturnType(); - } catch (Exception e1) { - } - c.add(this.fillCriterionByCriteria(criteria, type)); - } - - for (QueryCriteria order : pQueryBean.getOrder(true)) { - c.addOrder(Order.asc(order.getProperty())); - } - for (QueryCriteria order : pQueryBean.getOrder(false)) { - c.addOrder(Order.desc(order.getProperty())); - } - if (pQueryBean.getPage() > 0 && pQueryBean.getPageSize() > 0) { - c.setMaxResults(pQueryBean.getPageSize()); - c.setFirstResult((pQueryBean.getPage() - 1) * pQueryBean.getPageSize()); - } - return c; - } - - /** - * Metodo que crea un Criterion de restriccion a asociar al HQL. - * @param pCriteria Objto que contiene las condiciones del criterio. - * @param pType Tipo de dato del campo a adicionar la restriccion. - * @return Criterion - * @throws CommondbException - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - private Criterion fillCriterionByCriteria(QueryCriteria pCriteria, Class pType) throws CommondbException { - Property prop = Property.forName(pCriteria.getProperty()); - Object value = pCriteria.getValue(); - try { - value = BeanManager.convertObject(pCriteria.getValue(), pType); - } catch (Exception e) { - } - if (pCriteria.getOperation().compareTo("<") == 0) { - return prop.lt(value); - } - if (pCriteria.getOperation().compareTo(">") == 0) { - return prop.gt(value); - } - if (pCriteria.getOperation().compareTo("<=") == 0) { - return prop.le(value); - } - if (pCriteria.getOperation().compareTo(">=") == 0) { - return prop.ge(value); - } - if (pCriteria.getOperation().compareTo("=") == 0) { - return prop.eq(value); - } - if (pCriteria.getOperation().compareTo("<>") == 0) { - return prop.ne(value); - } - if (pCriteria.getOperation().compareTo("like") == 0) { - return prop.like(value); - } - if (pCriteria.getOperation().compareTo("isNull") == 0) { - return prop.isNull(); - } - if (pCriteria.getOperation().compareTo("isNotNull") == 0) { - return prop.isNotNull(); - } - if (pCriteria.getOperation().compareTo("in") == 0) { - // - if (pType.getName().compareTo("java.lang.String") == 0) { - String val = (String) pCriteria.getValue(); - StringTokenizer st = new StringTokenizer(val, ","); - List param = new ArrayList(); - while (st.hasMoreElements()) { - String object = (String) st.nextElement(); - param.add(object.substring(1, (object.length() - 1))); - } - return prop.in(param); - } else if (pType.getName().compareTo("java.lang.Integer") == 0) { - String val = (String) pCriteria.getValue(); - StringTokenizer st = new StringTokenizer(val, ","); - List param = new ArrayList(); - while (st.hasMoreElements()) { - String object = (String) st.nextElement(); - if (object.startsWith("'") || object.startsWith("\"")) { - object = object.substring(1, (object.length() - 1)); - } - param.add(Integer.parseInt(object)); - } - return prop.in(param); - } else { - return prop.in((Collection) pCriteria.getValue()); - } - - } - if (pCriteria.getOperation().compareTo("between") == 0) { - Object[] param = ((Collection) pCriteria.getValue()).toArray(); - return prop.between(param[0], param[1]); - } - if (pCriteria.getOperation().compareTo("sql") == 0) { - return Restrictions.sqlRestriction((String) value); - } - throw new CommondbException("QRY001", "OPERADOR {0} NO DISPONIBLE", pCriteria.getOperation()); - } - - /** - * Metodo que crea un objeto de tipo beanname asociado al QueryBean. - * @param pQueryBean Datos del QueryBean - * @return Object - */ - private Object createObject(QueryBean pQueryBean) { - try { - HibernateBean obj = (HibernateBean) Class.forName(pQueryBean.getBeanName()).newInstance(); - try { - Object id = BeanManager.getBeanAttributeValue(obj, "pk"); - if (id == null) { - Object key = Class.forName(pQueryBean.getBeanName() + "Key").newInstance(); - BeanManager.setBeanAttributeValue(obj, "pk", key); - } - } catch (Exception e) { - return obj; - } - return obj; - - } catch (Exception e) { - return null; - } - } - - /** - * Metodo que se encarga de completar descripciones de catalogo. - * @param pObject Objeto al cual se completa las descripciones de catalogo. - * @param nameAttributes Arreglo con los nombres de catalogo a buscar descripciones ejemlo - * [baserate,calculationbase] - * @throws Exception - */ - private void completeDescriptionCatalog(AbstractDataTransport pObject, String[] nameAttributes) throws Exception { - if (nameAttributes == null) { - return; - } - for (int i = 0; i < nameAttributes.length; i++) { - if (nameAttributes[i].startsWith("pk_")) { - nameAttributes[i] = nameAttributes[i].replaceAll("_", "."); - } - String descCatalog = "catalog"; - String descCatalogCode = "catalogcode"; - if (nameAttributes[i].compareTo("pk.catalog") == 0 || nameAttributes[i].compareTo("catalog") == 0) { - descCatalog = ""; - descCatalogCode = "code"; - } - if (pObject == null) { - break; - } - String catalog = (String) BeanManager.getBeanAttributeValue(pObject, nameAttributes[i] + descCatalog); - String catalogcode = (String) BeanManager.getBeanAttributeValue(pObject, nameAttributes[i] + descCatalogCode); - String nameNewAtribute = nameAttributes[i] + "desc"; - if (nameNewAtribute.startsWith("pk.")) { - nameNewAtribute = nameNewAtribute.substring(3, nameNewAtribute.length()); - } - if (catalog != null && catalogcode != null) { - TgeneCatalogDetail detail = DataHelper.getInstance().getTgeneCatalogDetail(catalog, catalogcode); - pObject.addAddtionalInfo(nameNewAtribute, detail.getDescription()); - } else { - pObject.addAddtionalInfo(nameNewAtribute, null); - } - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHelper.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHelper.java.svn-base deleted file mode 100644 index a63d0ef..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryHelper.java.svn-base +++ /dev/null @@ -1,333 +0,0 @@ -package com.fp.bpm.query; - -import java.util.Collection; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.NoResultException; -import javax.persistence.NonUniqueResultException; -import javax.persistence.Query; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.query.AdditionalQuery; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase utilitaria utiliza en el motor generico de consultas. - * @author Jorge Vaca. - * @version 2.1 - */ -public class QueryHelper { // NOPMD by jorge on 12/10/10 21:53 - - /**Almacena la senetencia dinamica de consulta.*/ - protected StringBuffer query = new StringBuffer(64); // NOPMD by jorge on 12/10/10 21:53 - /**Map que almacen los parametros o restricciones para cada consulta asociada a un Query.*/ - protected Map mParameters; - - /** - * Metodo que se encarga de adicionar a la sentencia las restricciones del query. - * @param pCriteria Objeto que contiene los criterios a aplicar en la sentencia. - * @param pType Tipo de dato del campo al cual se aplica la restriccion. - * @throws CommondbException - * @throws Exception - */ - @SuppressWarnings("rawtypes") - protected void addRestrictions(QueryCriteria pCriteria, Class pType) throws CommondbException,Exception { // NOPMD by jorge on 12/10/10 21:51 - String field = pCriteria.getProperty(); - String condition = pCriteria.getOperation(); - Object value = pCriteria.getValue(); - try { - value = BeanManager.convertObject(pCriteria.getValue(), pType); - } catch (Exception e) { - } - - if (this.basic(condition)) { - String aux = field.substring(field.indexOf(".") + 1,field.length()); // NOPMD by jorge on 12/10/10 21:52 - aux = this.getAux(aux); - query.append("t."+field+" "+condition+" "+":"+aux); - mParameters.put(aux, value); - return; - } - if (condition.compareTo("isNull") == 0 || condition.compareTo("isNotNull") == 0 ) { - query.append("t."+field+" is null "); - return; - } - if ( condition.compareTo("isNotNull") == 0 ) { - query.append("t."+field+" is not null "); - return; - } - if (condition.compareTo("sql") == 0) { - query.append(value); - return; - } - if (condition.compareTo("in") == 0 || condition.compareTo("not in") == 0) { - query.append("t."+field+" "+condition+"("+value+")"); - return; - } - if (pCriteria.getOperation().compareTo("between") == 0) { - Object[] param = ((Collection) pCriteria.getValue()).toArray(); - query.append("t."+field+" "+condition+" "+param[0] +" and "+param[1]); - return; - } - throw new CommondbException("QRY001", "OPERADOR {0} NO DISPONIBLE", pCriteria.getOperation()); - } - - /** - * Metodo que adiciona un numero secuencial si el campo de la restriccion se repite en la sentencia. - * @param pAux Parametro de la sentencia. - * @return String - * @throws Exception - */ - private String getAux(String pAux) throws Exception { - if(!mParameters.containsKey(pAux)){ - return pAux; - } - Set s = mParameters.keySet(); - int i = 0; - for (String obj : s) { - if(!obj.contains("AAA")){ - continue; - } - String data = obj.substring(obj.indexOf("AAA"),obj.length()); - data = data.substring(3, data.length()); - i = Integer.valueOf(data); - ++i; - } - return pAux+"AAA"+i; - } - - /** - * Metodo que se encarga de adicionar a la senetencia los criterios de orden de la consulta. - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @throws Exception - */ - protected void addOrder(QueryBean pQueryBean) throws Exception { - boolean first = true; - for (QueryCriteria order : pQueryBean.getOrder(true)) { - if(first){ - query.append(" ORDER BY "); - }else{ - query.append(" ,"); - } - query.append("t."+order.getProperty()+" asc "); - first = false; - } - for (QueryCriteria order : pQueryBean.getOrder(false)) { - if(first){ - query.append(" ORDER BY "); - }else{ - query.append(" ,"); - } - query.append("t."+order.getProperty()+" desc "); - first = false; - } - } - - - - /** - * Metodo que crea un objeto de tipo beanname asociado al QueryBean. - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @return Object - */ - protected Object createObject(QueryBean pQueryBean) { - try { - HibernateBean obj = (HibernateBean) Class.forName(pQueryBean.getBeanName()).newInstance(); - try { - Object id = BeanManager.getBeanAttributeValue(obj, "pk"); - if (id == null) { - Object key = Class.forName(pQueryBean.getBeanName() + "Key").newInstance(); - BeanManager.setBeanAttributeValue(obj, "pk", key); - } - } catch (Exception e) { - return obj; - } - return obj; - - } catch (Exception e) { - return null; - } - } - - /** - * Metodo que transforma los campos de un registro a un AbstractDataTransport. - * @param pRecord Datos de un registro obtenidos de la base de datos. - * @param nameAttributes Atributos adicionales con los cuales se completa la descripcion del catalogo. - * @return Object. - * @throws Exception - */ - protected AbstractDataTransport fillRecord(QueryBean pQueryBean,Object pRecord, String[] nameAttributes) throws Exception { - if (pRecord == null) { - return null; - } - AbstractDataTransport obj = (AbstractDataTransport) pRecord; - this.completeDescriptionCatalog(obj, nameAttributes); - this.addAditionData(pQueryBean, obj); - return obj; - - } - - /** - * Metodo que se encarga de completar descripciones de catalogo. - * @param pObject Objeto al cual se completa las descripciones de catalogo. - * @param nameAttributes Arreglo con los nombres de catalogo a buscar descripciones ejemlo - * [baserate,calculationbase] - * @throws Exception - */ - protected void completeDescriptionCatalog(AbstractDataTransport pObject, String[] nameAttributes) throws Exception { // NOPMD by jorge on 12/10/10 21:53 - if (nameAttributes == null) { - return; - } - for (int i = 0; i < nameAttributes.length; i++) { - if (nameAttributes[i].startsWith("pk_")) { - nameAttributes[i] = nameAttributes[i].replaceAll("_", "."); - } - String descCatalog = "catalog"; - String descCatalogCode = "catalogcode"; - if (nameAttributes[i].compareTo("pk.catalog") == 0 || nameAttributes[i].compareTo("catalog") == 0) { - descCatalog = ""; - descCatalogCode = "code"; - } - if (pObject == null) { - break; - } - String catalog = (String) BeanManager.getBeanAttributeValue(pObject, nameAttributes[i] + descCatalog); - String catalogcode = (String) BeanManager.getBeanAttributeValue(pObject, nameAttributes[i] + descCatalogCode); - String nameNewAtribute = nameAttributes[i] + "desc"; - if (nameNewAtribute.startsWith("pk.")) { - nameNewAtribute = nameNewAtribute.substring(3, nameNewAtribute.length()); - } - if (catalog != null && catalogcode != null) { - TgeneCatalogDetail detail = DataHelper.getInstance().getTgeneCatalogDetail(catalog, catalogcode); - pObject.addAddtionalInfo(nameNewAtribute, detail.getDescription()); - } else { - pObject.addAddtionalInfo(nameNewAtribute, null); - } - } - } - - /** - * Metodo que verifica que la condicion de la restriccion sea basica. - * @param pCondition Codigo de condicion de la restriccion. - * @return boolean - * @throws Exception - */ - protected boolean basic(String pCondition) throws Exception { - if (pCondition.compareTo("<") == 0) { - return true; - } - if (pCondition.compareTo(">") == 0) { - return true; - } - if (pCondition.compareTo("<=") == 0) { - return true; - } - if (pCondition.compareTo(">=") == 0) { - return true; - } - if (pCondition.compareTo("=") == 0) { - return true; - } - if (pCondition.compareTo("<>") == 0) { - return true; - } - if (pCondition.compareTo("like") == 0) { - return true; - } - return false; - } - - /** - * Metodo que se encarga de ejecutar sentencias que completan informacion de la consulta asociada al QueryBean. - * @param pQueryBean Objeto que contiene el bean a consultas, y las restricciones. - * @param pObject Objeto que contiene la datos resultado del query del bean principal de la consulta. - * @throws Exception - */ - protected void addAditionData(QueryBean pQueryBean,AbstractDataTransport pObject) throws Exception { - List lData = pQueryBean.getAdditionalQuery(); - if(lData == null || lData.isEmpty()){ - return; - } - for (AdditionalQuery additionalQuery : lData) { - this.processByAditionalQuery(additionalQuery, pObject); - } - } - - /** - * Metodo que ejecuta sentecias por cada AdditionalQuery, que llega como parametro.
      - * Los valores de la restriccion los toma del resultado del bean principal. - * @param pAdditional Objeto que contiene las consideraciones necesarias para armar una consula adiciona de datos. - * @param pObject Objeto que contiene la datos resultado del query del bean principal de la consulta. - * @throws Exception - */ - @SuppressWarnings("rawtypes") - private void processByAditionalQuery(AdditionalQuery pAdditional,AbstractDataTransport pObject) throws Exception { // NOPMD by jorge on 12/10/10 21:52 - if(pObject == null){ - return; - } - StringBuffer query = new StringBuffer(); // NOPMD by jorge on 12/10/10 21:52 - query.append("select t."+pAdditional.getField()+" from "+pAdditional.getBean()+" t "); - List> lCriteria = pAdditional.getCriteria(); - mParameters.clear(); - boolean first = true; - boolean execute = true; - for (Map map : lCriteria) { - if(first){ - query.append(" WHERE "); - first = false; - }else{ - query.append(" AND "); - } - String aux = map.get("inner").substring(map.get("inner").indexOf(".") + 1,map.get("inner").length()); // NOPMD by jorge on 12/10/10 21:52 - query.append("t."+map.get("inner")+" = "+":"+aux); - Object value = map.get("value"); - if(value == null){ - Class type = null; - try { - type = BeanManager.getBeanGetterMethod(pObject, map.get("outer")).getReturnType(); - } catch (Exception e1) { - } - String aux1 = map.get("outer"); //Si es pk simple llega pk, si es compuesta llega pk.campo - value = BeanManager.getBeanAttributeValue(pObject, aux1); - if(value == null){ - execute = false; //Si no encuentra valor en la tabla padre no ejecuta el query. - break; - } - if(type != null){ - value = BeanManager.convertObject(value, type); - } - } - mParameters.put(aux, value); - } - if(!execute){ - pObject.addAddtionalInfo(pAdditional.getAlias(), null); - return; - } - Query qry = PersistenceHelper.getEntityManager().createQuery(query.toString()); - Iterator itr = mParameters.keySet().iterator(); - while(itr.hasNext()){ - String key = itr.next(); - qry.setParameter(key, mParameters.get(key)); - } - try { - Object result = qry.getSingleResult(); - pObject.addAddtionalInfo(pAdditional.getAlias(), result); - } catch (NoResultException e) { - pObject.addAddtionalInfo(pAdditional.getAlias(), null); - } catch (NonUniqueResultException e) { - throw new CommondbException("COMMONDB-00015","EXISTE MAS DE UN REGISTRO PARA LA TABAL: {0}", e,pAdditional.getBean()); - } - - - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryJsf.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryJsf.java.svn-base deleted file mode 100644 index c0ca051..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryJsf.java.svn-base +++ /dev/null @@ -1,249 +0,0 @@ -package com.fp.bpm.query; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.NoResultException; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.query.SubQuery; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Clase que se encarga de realizar consultas genericas a la base de datos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class QueryJsf { - /** Map con el orden campos a aplicar a la consulta */ - protected final Map mparameter = new HashMap(); - - /** Parte de la setencia que tiene la instruccion for de la cosnualta. */ - private StringBuffer sql; - - /** Almacena las restriciones de la consulta. */ - protected StringBuffer where; - - private boolean issubquery = false; - - /** - * Metodo que se encarga de realizar consulta de tablas que llegan en el request.
      - * La cosnsulta se ejecuta por tabla. - * - * @param queryRequest Request de consultya que almacena la lista de tablas a consultar. - * @throws Exception - */ - public void execute(QueryRequest queryRequest) throws Exception { - Map mtablas = queryRequest.getQueryTables(); - if (mtablas == null) { - return; - } - Set s = mtablas.keySet(); - for (String key : s) { - // Crea nuevos objetos por cada tabla que se consulta. - sql = new StringBuffer(46); - where = new StringBuffer(46); - mparameter.clear(); - issubquery = false; - // Ejecuta consulta de la tabla. - DtoQuery dtoqry = mtablas.get(key); - if (dtoqry.getBeanname() == null) { - continue; - } - Object resp = queryByBean(dtoqry); - queryRequest.getResponse().put(key, resp); - - } - } - - private Object queryByBean(DtoQuery dtoquey) throws Exception { - buildSentence(dtoquey); - APPLogger.getLogger().debug(sql); - return executeByDtoQuery(dtoquey); - } - - private void buildSentence(DtoQuery dtoquery) throws Exception { - buildSql(dtoquery); - buildCriteria(dtoquery); - sql.append(where); - if (dtoquery.getOrderby() != null) { - sql.append(" order by " + dtoquery.getOrderby()); - } - } - - private Object executeByDtoQuery(DtoQuery dtoquery) throws Exception { - if (dtoquery.isMultirecord()) { - List lresp = queryList(dtoquery); - if (issubquery) { - return buildlistresponse(dtoquery, lresp); - } else { - return lresp; - } - } - Object resp = queryObject(dtoquery); - if ((resp != null) && issubquery) { - return buildobjectresponse(dtoquery, resp); - } - return resp; - } - - private Object buildobjectresponse(DtoQuery dtoquery, Object object) throws Exception { - List lsubquery = dtoquery.getlSubquery(); - Object[] obj = (Object[]) object; - AbstractDataTransport bean = (AbstractDataTransport) obj[0]; - for (int i = 1; i <= lsubquery.size(); i++) { - SubQuery s = lsubquery.get(i - 1); - Object valor = obj[i]; - bean.put(s.getAlias(), valor); - } - return bean; - } - - private Object buildlistresponse(DtoQuery dtoquery, List lresp) throws Exception { - List l = new ArrayList(); - List lsubquery = dtoquery.getlSubquery(); - for (Object object : lresp) { - Object[] obj = (Object[]) object; - AbstractDataTransport bean = (AbstractDataTransport) obj[0]; - for (int i = 1; i <= lsubquery.size(); i++) { - SubQuery s = lsubquery.get(i - 1); - Object valor = obj[i]; - bean.put(s.getAlias(), valor); - } - l.add(bean); - } - return l; - } - - /** - * Metodo que se encarga de construir y adicionar campos a consultar de una tabla. - * - * @throws Exception - */ - protected void buildSql(DtoQuery dtoquery) throws Exception { - sql.append("select t "); - List lsubquery = dtoquery.getlSubquery(); - for (SubQuery subQuery : lsubquery) { - issubquery = true; - sql.append("," + subQuery.getSubQuery()); - } - // Adiciona subqueries. - sql.append(" from " + dtoquery.getBeanname() + " t"); - - } - - protected void buildCriteria(DtoQuery dtoquery) throws Exception { - List lfiltro = dtoquery.getLfilter(); - if ((lfiltro == null) || lfiltro.isEmpty()) { - return; - } - boolean first = true; - for (Filter filtro : lfiltro) { - if (filtro.getSql() != null) { - this.addFiltersql(filtro.getSql(), first); - continue; - } - if (filtro.getValue() == null) { - continue; - } - addFilter(dtoquery.getBeanname(), filtro, first); - first = false; - } - } - - private void addFilter(String bean, Filter filtro, boolean first) throws Exception { - Object valor = filtro.getValue(); - String campo = filtro.getField(); - String condicion = filtro.getCondition() == null ? "=" : filtro.getCondition(); - valor = PersistenceManager.changeType(bean, campo, valor); - if (String.valueOf(valor).indexOf("%") >= 0) { - condicion = "like"; - } - String aux = campo.substring(campo.indexOf(".") + 1, campo.length()); - String cond = "t." + campo + " " + condicion + " " + ":" + aux; - mparameter.put(aux, valor); - if (where == null) { - where = new StringBuffer(46); - } - if (first) { - where.append(" where " + cond); - } else { - where.append(" and " + cond); - } - } - - private void addFiltersql(String sql, boolean first) throws Exception { - if (first) { - where.append(" where " + sql); - } else { - where.append(" and " + sql); - } - } - - /** - * Metodo que entrega una lista de objetos relacionados a la tabla que se consulta. - * - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - private List queryList(DtoQuery dtoquery) throws Exception { - javax.persistence.Query query = createQuery(dtoquery); - return query.getResultList(); - } - - /** - * Metodo que entrega un objeto, de una tabla relacionado a la consulta. - * - * @return Object. - * @throws Exception - */ - private Object queryObject(DtoQuery dtoquery) throws Exception { - Object obj = null; - javax.persistence.Query query = createQuery(dtoquery); - try { - obj = query.getSingleResult(); - } catch (NoResultException e) { - // Si no existe datos no hacer nada. - } - return obj; - } - - private javax.persistence.Query createQuery(DtoQuery dtoquery) throws Exception { - javax.persistence.Query query = PersistenceHelper.getEntityManager().createQuery(sql.toString()); - this.setParameters(dtoquery, query); - return query; - } - - /** - * Fija parametros, primer registro y ultimo registro de comsulta. - * - * @param dtoquery - * @param qry - * @throws Exception - */ - public void setParameters(DtoQuery dtoquery, javax.persistence.Query qry) throws Exception { - Integer pagina = dtoquery.getPage(); - Integer numreg = dtoquery.getRecperpage() == null ? 10 : dtoquery.getRecperpage(); - // Control de paginacion. - if (dtoquery.isMultirecord()) { - qry.setFirstResult(pagina); - qry.setMaxResults(numreg); - } - // Fija parametros a la sentencia - Set s = mparameter.keySet(); - for (String key : s) { - Object valor = mparameter.get(key); - qry.setParameter(key, valor); - } - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryOperation.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryOperation.java.svn-base deleted file mode 100644 index a5a3cf3..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryOperation.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -package com.fp.bpm.query; - -public interface QueryOperation { - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessCriteria.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessCriteria.java.svn-base deleted file mode 100644 index 421e777..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessCriteria.java.svn-base +++ /dev/null @@ -1,143 +0,0 @@ -package com.fp.bpm.query; - -import java.util.ArrayList; -import java.util.Collection; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.hibernate.Criteria; -import org.hibernate.ScrollMode; -import org.hibernate.ScrollableResults; -import org.hibernate.criterion.Criterion; -import org.hibernate.criterion.Order; -import org.hibernate.criterion.Property; -import org.hibernate.criterion.Restrictions; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.Response; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.dto.query.QueryRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; - -public class QueryProcessCriteria { - public QueryProcessCriteria() { - } - - public boolean process(QueryRequest pReq, Response pRes) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException { - Map bean = pReq.getBeans(); - for (String k : bean.keySet()) { - QueryBean qbean = bean.get(k); - pRes.put(k, this.process(qbean)); - } - return true; - } - - private Object process(QueryBean pQuery) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException { - Criteria cri = this.prepareCriteria(pQuery); - return this.fillData(cri, pQuery.isMultirecord()); - } - - private Object fillData(Criteria pCriteria, boolean pMultirecord) { - - if (pMultirecord) { - List data = new ArrayList(); - ScrollableResults scroll = pCriteria.scroll(ScrollMode.FORWARD_ONLY); - while (scroll.next()) { - data.add(this.fillRecord(scroll.get())); - } - return data; - } else { - return pCriteria.uniqueResult(); - } - - } - - private Object fillRecord(Object[] pRecord) { - if (pRecord == null) { - return null; - } - if (pRecord.length == 1) { - return pRecord[0]; - } else { - Map m = new HashMap(); - return m; - } - } - - @SuppressWarnings("unchecked") - private Criteria prepareCriteria(QueryBean pQuery) throws CommondbException, ClassNotFoundException, InstantiationException, IllegalAccessException { - Object beanReference=Class.forName(pQuery.getBeanName()).newInstance(); - Criteria c = PersistenceHelper.getSession().createCriteria(pQuery.getBeanName()); - - for (QueryCriteria criteria : pQuery.getCriteria()) { - Class type=null; - try{ - type=BeanManager.getBeanGetterMethod(beanReference, criteria.getProperty()).getReturnType(); - }catch(Exception e1){ - } - c.add(this.prepareCriterion(criteria,type)); - } - for (QueryCriteria order : pQuery.getOrder(true)) { - c.addOrder(Order.asc(order.getProperty())); - } - for (QueryCriteria order : pQuery.getOrder(false)) { - c.addOrder(Order.desc(order.getProperty())); - } - if (pQuery.getPage() > 0 && pQuery.getPageSize() > 0) { - c.setMaxResults(pQuery.getPageSize()); - c.setFirstResult((pQuery.getPage() - 1) * pQuery.getPageSize()); - } - - return c; - } - - @SuppressWarnings("unchecked") - private Criterion prepareCriterion(QueryCriteria pCriteria,Class pType) throws CommondbException { - Property prop = Property.forName(pCriteria.getProperty()); - Object value=pCriteria.getValue(); - try{ - value=BeanManager.convertObject(pCriteria.getValue(),pType); - }catch(Exception e){} - if (pCriteria.getOperation().compareTo("<") == 0) { - return prop.lt(value); - } - if (pCriteria.getOperation().compareTo(">") == 0) { - return prop.gt(value); - } - if (pCriteria.getOperation().compareTo("<=") == 0) { - return prop.le(value); - } - if (pCriteria.getOperation().compareTo(">=") == 0) { - return prop.ge(value); - } - if (pCriteria.getOperation().compareTo("=") == 0) { - return prop.eq(value); - } - if (pCriteria.getOperation().compareTo("<>") == 0) { - return prop.ne(value); - } - if (pCriteria.getOperation().compareTo("like") == 0) { - return prop.like(value); - } - if (pCriteria.getOperation().compareTo("isNull") == 0) { - return prop.isNull(); - } - if (pCriteria.getOperation().compareTo("isNotNull") == 0) { - return prop.isNotNull(); - } - if (pCriteria.getOperation().compareTo("in") == 0) { - return prop.in((Collection) pCriteria.getValue()); - } - if (pCriteria.getOperation().compareTo("between") == 0) { - Object[] param = ((Collection) pCriteria.getValue()).toArray(); - return prop.between(param[0], param[1]); - } - if (pCriteria.getOperation().compareTo("sql") == 0) { - return Restrictions.sqlRestriction((String) value); - } - throw new CommondbException("QRY001", "OPERADOR {0} NO DISPONIBLE", pCriteria.getOperation()); - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessor.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessor.java.svn-base deleted file mode 100644 index 62d0d8e..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/.svn/text-base/QueryProcessor.java.svn-base +++ /dev/null @@ -1,188 +0,0 @@ -package com.fp.bpm.query; - -import java.util.List; -import java.util.Map; - -import com.fp.common.exception.CommonException; -import com.fp.common.exception.SavePointException; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.dto.rules.TransactionRule; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.gene.TgeneQueryProcess; -import com.fp.persistence.pgeneral.gene.TgeneTransactionQuery; - -/** - * Motor de consultas, el proceso se ejecuta de acuerodo a querytype.
      - * - * @author Jorge Vaca - * @version 2.1 - */ -public class QueryProcessor { - - /** Objeto con beans utilizados en el proceso de consulta. */ - private QueryRequest queryRequest; - - /** - * Metodo que se encarga de ejecutar consultas contra la base de datos, adicionalmente ejecuta consultas especiales - * si estas estarian parametrizadas. Proceso tipo de consulta.
      - * "P" Ejecuta consulta por reglas asociadas a un codigo de consulta. "T" Ejecuta consulta por reglas asociadas a la - * transaccion. "N" Ejecuta consultas genericas. - * - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean process(QueryRequest pQueryRequest) throws CommondbException, Exception { - Thread.currentThread().setName(pQueryRequest.getJournalId()); - this.queryRequest = pQueryRequest; - String queryType = (String) pQueryRequest.get("querytype"); - - if ((queryType == null) || (queryType.compareTo("N") == 0)) { - if(!pQueryRequest.isJsf()){ - Query qry = new Query(); - qry.process(pQueryRequest); - }else{ - QueryJsf qry = new QueryJsf(); - qry.execute(pQueryRequest); - } - - } - // Ejecuta consultas especiales para una transaccion. - if ((queryType != null) && (queryType.compareTo("T") == 0)) { - this.processByTransaction(); - } - // Ejecuta consultas especiales para un codigo de query. - if ((queryType == null) || (queryType.compareTo("P") == 0)) { - // Si es null entra el contro esta en el metodo interno - this.processQueryByAlias(); - } - return true; - } - - /** - * Metodo que se encarga de ejecutar comandos especiales de consulta por queryalias. - * - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @param pResponse Objeto que contiene los datos de respuesta de la consulta. - * @throws Exception - */ - public void processQueryByAlias() throws Exception { - Map bean = this.queryRequest.getBeans(); - for (String k : bean.keySet()) { - QueryBean qbean = bean.get(k); - if (qbean.getQueryalias() != null) { - this.processByQueryCode(qbean.getQueryalias()); - } - } - String queryalias = (String) this.queryRequest.get("queryalias"); - if (queryalias != null) { - this.processByQueryCode(queryalias); - } - } - - /** - * Fija un nuevo valor en queryRequest - * - * @param pQueryRequest nuevo valor para queryRequest - */ - public void setQueryRequest(QueryRequest pQueryRequest) { - this.queryRequest = pQueryRequest; - } - - /** - * Metodo que se encarga de ejecutar procesos especiales de consulta por codigo de consulta. - * - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @param pQueryCode Codigo de consulta. - * @throws Exception - */ - private void processByQueryCode(String pQueryCode) throws Exception { - List lprocess = DataHelper.getInstance().getTgeneQueryProcess(pQueryCode); - if (lprocess == null) { - return; - } - for (TgeneQueryProcess obj : lprocess) { - this.processByCode(obj.getProcesscode(), pQueryCode); - } - } - - /** - * - * @param pResponse Objeto con beans utilizados en el proceso de consulta. - * @param pProcess Codigo de proceso a ejecutar. - * @param pQueryCode Codigo de consulta. - * @throws Exception - */ - private void processByCode(String pProcess, String pQueryCode) throws Exception { - QueryRule rule = null; - try { - rule = (QueryRule) Class.forName(pProcess).newInstance(); - } catch (ClassNotFoundException e) { - throw new CommonException("COMMON-0012", "CLASE {0} A EJECUTAR NO EXISTE CODE: {0}", e, pQueryCode); - } catch (ClassCastException e) { - throw new CommonException("COMMON-0013", "PROCESO {0} A EJECUTAR CODE: {1} NO IMPLEMENTA QUERYRULE", e, pProcess, pQueryCode); - } - APPLogger.getLogger().info("INICIO ==> " + rule); - rule.process(this.queryRequest); - APPLogger.getLogger().info("FIN ==> " + rule); - } - - /** - * Metodo que ejecuta procesos especiales de consulta por transaccion. - * - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @throws Exception - */ - private void processByTransaction() throws Exception { - if ((this.queryRequest.getTransactionModule() == null) || (this.queryRequest.getTransactionCode() == null)) { - return; - } - List lquery = DataHelper.getInstance().getTgeneTransactionQuery(this.queryRequest.getTransactionModule(), - this.queryRequest.getTransactionCode(), this.queryRequest.getTransactionVersion()); - if (lquery == null) { - return; - } - for (TgeneTransactionQuery obj : lquery) { - try { - this.processByTransactionRule(obj); - } catch (SavePointException e) { - // Detiene la ejecucion de componentes de negocio y graba la transaccion. - break; - } - - } - } - - /** - * Metodo encargado de ejecutar cada una de las reglas definidas en la transaccion. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pProcess Objeto que contiene la regla a ejecutar. - * @throws Exception - */ - private void processByTransactionRule(TgeneTransactionQuery pQuery) throws Exception { - QueryRule rule = null; - try { - rule = (QueryRule) Class.forName(pQuery.getProcesscode()).newInstance(); - } catch (ClassNotFoundException e) { - throw new CommonException("COMMON-0014", "CLASE {0} A EJECUTAR NO EXISTE MODULE: {1} TRANS: {2} VERSION {3}", e, - pQuery.getProcesscode(), this.queryRequest.getTransactionModule(), this.queryRequest.getTransactionCode(), - this.queryRequest.getTransactionVersion()); - } catch (ClassCastException e) { - throw new CommonException("COMMON-0015", "PROCESO {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4}", e, - pQuery.getProcesscode(), this.queryRequest.getTransactionModule(), this.queryRequest.getTransactionCode(), - this.queryRequest.getTransactionVersion(), TransactionRule.class.getName()); - } - rule.setFlow(pQuery.getProcessname()); - rule.setRule(pQuery.getRulename()); - APPLogger.getLogger().info("INICIO ==> " + rule); - rule.process(this.queryRequest); - APPLogger.getLogger().info("FIN ==> " + rule); - } -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/entries deleted file mode 100644 index 5646017..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/query/menu -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Menu.java -file - - - - -2022-07-28T03:40:38.310784Z -843f86d73d918de4f7c439f12b40b29f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -207 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/text-base/Menu.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/text-base/Menu.java.svn-base deleted file mode 100644 index fa0f6b4..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/query/menu/.svn/text-base/Menu.java.svn-base +++ /dev/null @@ -1,16 +0,0 @@ -package com.fp.bpm.query.menu; - - - -import com.fp.dto.Response; -import com.fp.dto.query.menu.MenuRequest; - -public class Menu { - - - public boolean process(MenuRequest pReq, Response pRes){ - - return true; - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/entries deleted file mode 100644 index 6fa4d7f..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/report -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ReportProcessor.java -file - - - - -2022-07-28T03:40:38.391784Z -370e03fd0fca3ea801db0fa7c42c1ebc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3218 - -ReportOperation.java -file - - - - -2022-07-28T03:40:38.391784Z -c63a135ff5b569d9a1973b4fc96227f4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -172 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportOperation.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportOperation.java.svn-base deleted file mode 100644 index 19d2b4f..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportOperation.java.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -package com.fp.bpm.report; - -/** - * Interface de operaciones asociadas a reportes. - * @author Jorge Vaca - * @version 2.1 - */ -public interface ReportOperation { - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportProcessor.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportProcessor.java.svn-base deleted file mode 100644 index 447454a..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/report/.svn/text-base/ReportProcessor.java.svn-base +++ /dev/null @@ -1,72 +0,0 @@ -package com.fp.bpm.report; - -import java.util.List; - -import com.fp.common.exception.CommonException; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.ReportRule; -import com.fp.dto.rules.TransactionRule; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.trans.report.TgeneTransactionReports; - -public class ReportProcessor { - - /**Objeto con beans utilizados en el proceso de consulta.*/ - private QueryRequest queryRequest; - - /** - * Metodo que se encarga de llenar tablas utilizadas en la generacion de reportes. - * @param pQueryRequest Datos utilizados en la generacion de reportes. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean process(QueryRequest pQueryRequest) throws CommondbException, Exception { - Thread.currentThread().setName(pQueryRequest.getJournalId()); - queryRequest = pQueryRequest; - //Ejecuta consultas especiales para una transaccion. - this.processByTransaction(); - return true; - } - - /** - * Metodo que ejecuta procesos especiales de consulta por transaccion. - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @throws Exception - */ - private void processByTransaction() throws Exception { - if (queryRequest.getTransactionModule() == null || queryRequest.getTransactionCode() == null) { - return; - } - List lquery = DataHelper.getInstance().getTgeneTransactionReports( - queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion()); - if (lquery == null) { - return; - } - for (TgeneTransactionReports obj : lquery) { - this.processByTransactionRule(obj); - } - } - - /** - * Metodo encargado de ejecutar cada una de las reglas definidas en la transaccion. - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pProcess Objeto que contiene la regla a ejecutar. - * @throws Exception - */ - private void processByTransactionRule(TgeneTransactionReports pObj) throws Exception { - ReportRule rule = null; - try { - rule = (ReportRule) Class.forName(pObj.getProcesscode()).newInstance(); - } catch (ClassNotFoundException e) { - throw new CommonException("COMMON-0014", "CLASE {0} A EJECUTAR NO EXISTE MODULE: {1} TRANS: {2} VERSION {3}", e, pObj.getProcesscode(), - queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion()); - } catch (ClassCastException e) { - throw new CommonException("COMMON-0015", "PROCESO {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4}", e, pObj.getProcesscode(), - queryRequest.getTransactionModule(), queryRequest.getTransactionCode(), queryRequest.getTransactionVersion(), TransactionRule.class.getName()); - } - rule.process(queryRequest); - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/rules/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/rules/.svn/entries deleted file mode 100644 index 2b695a3..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/rules/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/rules -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/entries b/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/entries deleted file mode 100644 index 91194ea..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/java/com/fp/bpm/save -svn://172.17.26.185/COMACO - - - -2014-10-30T07:12:09.504235Z -2212 -wpatino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SaveOperation.java -file - - - - -2022-07-28T03:40:38.426784Z -eeeedf65fabaf683912e104cffe64cd5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -212 - -Save.java -file - - - - -2022-07-28T03:40:38.427784Z -5764715f15bbcc18350e9e0c02c82e83 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5666 - -SaveProcessor.java -file - - - - -2022-07-28T03:40:38.427784Z -92212ad49edc98d6c04d4d80d3a0a534 -2014-10-30T07:12:09.504235Z -2212 -wpatino - - - - - - - - - - - - - - - - - - - - - -8154 - diff --git a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/Save.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/Save.java.svn-base deleted file mode 100644 index d3d5371..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/Save.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -package com.fp.bpm.save; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; - -/** - * Clase que se encarga de persistir en la base de datos los beans. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class Save { - - /** - * Recorre la lista de orden de envio de beans a la base, Obtiene el savebean y ejecuta el dml. - * - * @param pSaveRequest Objeto con los beans a almacenar en la base de datos. - * @param pResponse Respuesta del proceso. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean process(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception { - List lOrderPersistentBeans = pSaveRequest.getLOrderPersistentBeans(); - for (String key : lOrderPersistentBeans) { - Object obj = pSaveRequest.get(key); - if (obj instanceof SaveBean) { - APPLogger.getLogger().debug("Request de Mantenimiento recibido: " + pSaveRequest); - SaveBean sbean = (SaveBean) obj; - if (sbean.isSave()) { - this.saveBean(sbean); - } - } - } - int size = lOrderPersistentBeans.size(); - for (int i = size; i > 0; i--) { - Object obj = pSaveRequest.get(lOrderPersistentBeans.get(i - 1)); - if (obj instanceof SaveBean) { - APPLogger.getLogger().debug("Request de Mantenimiento recibido: " + pSaveRequest); - SaveBean sbean = (SaveBean) obj; - this.deleteBean(sbean); - } - } - - return true; - } - - /** - * Ejecuta sentencias DML contra la base de datos. - * - * @param pSaveBean Referencia a SaveBean - * @throws CommondbException - */ - private void saveBean(SaveBean pSaveBean) throws CommondbException, Exception { - - try { - if (pSaveBean.getModifiedObject() != null) { - APPLogger.getLogger().debug("Bean para mantenimiento: (saveBean) " + pSaveBean); - Object expire = ((AbstractDataTransport) pSaveBean.getModifiedObject()).get("expire"); - if (expire != null && Constant.ifYes(expire.toString())) { - PersistenceHelper.expire((HibernateBean) pSaveBean.getModifiedObject()); - } else { - Object isnew = ((AbstractDataTransport) pSaveBean.getModifiedObject()).get("isnew"); - if (isnew != null && Constant.ifYes(isnew.toString())) { - PersistenceHelper.save((HibernateBean) pSaveBean.getModifiedObject()); - } else { - PersistenceHelper.saveOrUpdate((HibernateBean) pSaveBean.getModifiedObject()); - } - } - } - for (Object obj : pSaveBean.getModifiedRecords()) { - APPLogger.getLogger().debug("Bean para mantenimiento de un List: (saveBean) " + pSaveBean); - Object expire = ((AbstractDataTransport) obj).get("expire"); - if (expire != null && Constant.ifYes(expire.toString())) { - PersistenceHelper.expire((HibernateBean) obj); - } else { - Object isnew = ((AbstractDataTransport) obj).get("isnew"); - if (isnew != null && Constant.ifYes(isnew.toString())) { - PersistenceHelper.save((HibernateBean) obj); - } else { - PersistenceHelper.saveOrUpdate((HibernateBean) obj); - } - } - - } - } catch (ClassCastException e) { - return; - // En este caso no hacer nada si no es un bean persistente. - } - } - - /** - * Ejecuta sentencias DML contra la base de datos. - * - * @param pSaveBean Referencia a SaveBean - * @throws CommondbException - */ - public void deleteBean(SaveBean pSaveBean) throws CommondbException, Exception { - - try { - if (pSaveBean.getDeletedObject() != null) { - APPLogger.getLogger().debug("Bean para delete: (saveBean) " + pSaveBean); - PersistenceHelper.delete((HibernateBean) pSaveBean.getDeletedObject()); - } - - for (Object obj : pSaveBean.getDeletedRecords()) { - APPLogger.getLogger().debug("Bean para delete de un List: (saveBean) " + pSaveBean); - PersistenceHelper.delete((HibernateBean) obj); - } - } catch (ClassCastException e) { - return; - // En este caso no hacer nada si no es un bean persistente. - } - } - - /** - * Metodo que elimina los bean que ya se gha realizado commit. - * - * @throws Exception - */ - public static void cleanSaveBeans(SaveRequest pSaveRequest) throws Exception { - List lOrderPersistentBeans = pSaveRequest.getLOrderPersistentBeans(); - List ldata = new ArrayList(); - for (String key : lOrderPersistentBeans) { - ldata.add(key); - } - for (String key : ldata) { - Object obj = pSaveRequest.get(key); - if (obj instanceof SaveBean) { - lOrderPersistentBeans.remove(((SaveBean) obj).getBeanAlias()); - } - } - } - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveOperation.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveOperation.java.svn-base deleted file mode 100644 index 64192c1..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveOperation.java.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -package com.fp.bpm.save; - -/** - * Interface de las operaciones o acciones que se encarga de hacer un Alata o Modificacin de registros. - * @author Jorge Vaca - * @version 2.1 - */ -public interface SaveOperation { - -} diff --git a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveProcessor.java.svn-base b/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveProcessor.java.svn-base deleted file mode 100644 index f69fb00..0000000 --- a/base/core/bpm/src/main/java/com/fp/bpm/save/.svn/text-base/SaveProcessor.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.bpm.save; - -import java.util.List; - -import com.fp.common.exception.CommonException; -import com.fp.common.exception.SavePointException; -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.db.DataHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.trans.TgeneTransactionProcess; - -/** - * Clase que se encarga del orquestamiento de reglas de negocio asociadas a una transaccion en modo normal.
      - * Proceso.
      - *
        - *
      • Lee la definicion de las reglas definidas en la tabla tgenetransactionrule.
      • - *
      • Recore las reglas.
      • - *
      • Obtiene la clase especifica que implementa la interface TransactionRule.
      • - *
      • Invoca a cada de una de las clases ejecutando el modo normal.
      • - *
      - * NOTA: Si se requere que grabe hay que invocar a la clase que se encarga de esta tarea. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SaveProcessor { - - /** Objeto con beans utilizados en el proceso de una transaccion. */ - private SaveRequest saveRequest; - - /** - * Metodo que se encarga del procesar procesos de negocio en linea. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean processReverse(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception { - Thread.currentThread().setName(pSaveRequest.getJournalId()); - this.saveRequest = pSaveRequest; - this.processrules(pResponse, false); - return true; - } - - /** - * Metodo que se encarga del procesar procesos de negocio en linea. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean process(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception { - Thread.currentThread().setName(pSaveRequest.getJournalId()); - this.saveRequest = pSaveRequest; - this.processrules(pResponse, true); - return true; - } - - /** - * Metodo que se encarga del procesar procesos de negocio en linea. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean processWithoutSave(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception { - try { - this.saveRequest = pSaveRequest; - this.processrules(pResponse, false); - } catch (Exception e) { - throw e; - } - return true; - } - - /** - * Metodo que se encarga del procesar procesos de negocios que se invocan desde un proceso de fin de dia.. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - public boolean processBatch(SaveRequest pSaveRequest, Response pResponse) throws CommondbException, Exception { - try { - this.saveRequest = pSaveRequest; - this.processrules(pResponse, true); - } catch (Exception e) { - throw e; - } - return true; - } - - /** - * Metodo que se encarga del procesar procesos de negocio. - * - * @param pResponse Objeto en el cual se alamcena la respuesta de una transaccion. - * @param pCommit Indica si se hace commit o no. - * @return boolean - * @throws CommondbException - * @throws Exception - */ - private void processrules(Response pResponse, boolean pCommit) throws CommondbException, Exception { - List lObjects = this.getProcess(); - if (lObjects != null) { - for (TgeneTransactionProcess obj : lObjects) { - try { - this.processByRule(obj); - } catch (SavePointException e) { - // Detiene la ejecucion de componentes de negocio y graba la transaccion. - break; - } - - } - } - // Ejecuta dml contra la base - // ojo no hacer commit por que esto se usa en el batch - if (pCommit) { - Save save = new Save(); - save.process(this.saveRequest, pResponse); - } - } - - /** - * Metodo encargado de ejecutar cada una de las reglas definidas en la transaccion. - * - * @param pProcess Objeto que contiene la regla a ejecutar. - * @throws Exception - */ - private void processByRule(TgeneTransactionProcess pProcess) throws Exception { - TransactionRule rule = null; - try { - rule = (TransactionRule) Class.forName(pProcess.getProcesscode()).newInstance(); - } catch (ClassNotFoundException e) { - throw new CommonException("COMMON-0006", "REGLA {0} A EJECUTAR NO DEFINIDO MODULE: {1} TRANS: {2} VERSION {3}", - pProcess.getProcesscode(), e, this.saveRequest.getTransactionModule(), this.saveRequest.getTransactionCode(), - this.saveRequest.getTransactionVersion()); - } catch (ClassCastException e) { - throw new CommonException("COMMON-0007", "REGLA {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4}", e, - pProcess.getProcesscode(), this.saveRequest.getTransactionModule(), this.saveRequest.getTransactionCode(), - this.saveRequest.getTransactionVersion(), TransactionRule.class.getName()); - } - APPLogger.getLogger().info(rule); - String reverse = (String) this.saveRequest.get("reverse"); - rule.setFlow(pProcess.getProcessname()); - rule.setRule(pProcess.getRulename()); - if (Constant.ifYes(reverse)) { - rule.reverseProcess(this.saveRequest); - } else { - rule.normalProcess(this.saveRequest); - } - - } - - /** - * Metodo que obtiene una lista de reglas definidos a nivel de transaccion. - * - * @return List - * @throws Exception - */ - private List getProcess() throws Exception { - List lObjects = DataHelper.getInstance().getTgeneTransactionProcess(this.saveRequest.getTransactionModule(), - this.saveRequest.getTransactionCode(), this.saveRequest.getTransactionVersion()); - - /* - * No va porque existe transacciones normales if(lObjects == null || lObjects.isEmpty()){ throw new - * CommonException("COMMON-0006", - * "REGLAS NO DEFINIDAS RN TGENETRANSACTIONPROCESS MODULE: {1} TRANS: {2} VERSION {3}", - * saveRequest.getTransactionModule(),saveRequest.getTransactionCode(), saveRequest.getTransactionVersion()); } - */ - return lObjects; - } - - /** - * Envia los beans a la base de datos y limpia los bean del save que ya se enviaron a al abse. - * - * @param saverequest - * @throws Exception - */ - public static void saveAndFlush(SaveRequest saverequest) throws Exception { - Save save = new Save(); - save.process(saverequest, saverequest.getResponse()); - PersistenceHelper.flushTransaction(); - Save.cleanSaveBeans(saverequest); - } -} diff --git a/base/core/bpm/src/main/resources/.svn/entries b/base/core/bpm/src/main/resources/.svn/entries deleted file mode 100644 index 85124ef..0000000 --- a/base/core/bpm/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/bpm/src/test/.svn/entries b/base/core/bpm/src/test/.svn/entries deleted file mode 100644 index 289d204..0000000 --- a/base/core/bpm/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/core/bpm/src/test/java/.svn/entries b/base/core/bpm/src/test/java/.svn/entries deleted file mode 100644 index 6b4fb12..0000000 --- a/base/core/bpm/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - diff --git a/base/core/bpm/src/test/java/test/.svn/entries b/base/core/bpm/src/test/java/test/.svn/entries deleted file mode 100644 index 523d0fb..0000000 --- a/base/core/bpm/src/test/java/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/java/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/core/bpm/src/test/java/test/com/.svn/entries b/base/core/bpm/src/test/java/test/com/.svn/entries deleted file mode 100644 index 4261794..0000000 --- a/base/core/bpm/src/test/java/test/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/java/test/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/core/bpm/src/test/java/test/com/fp/.svn/entries b/base/core/bpm/src/test/java/test/com/fp/.svn/entries deleted file mode 100644 index c1e957c..0000000 --- a/base/core/bpm/src/test/java/test/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/java/test/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bpm -dir - diff --git a/base/core/bpm/src/test/java/test/com/fp/bpm/.svn/entries b/base/core/bpm/src/test/java/test/com/fp/bpm/.svn/entries deleted file mode 100644 index be0a6e5..0000000 --- a/base/core/bpm/src/test/java/test/com/fp/bpm/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/java/test/com/fp/bpm -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/bpm/src/test/resources/.svn/entries b/base/core/bpm/src/test/resources/.svn/entries deleted file mode 100644 index a1e1f43..0000000 --- a/base/core/bpm/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/bpm/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/core/firmas/.svn/dir-prop-base b/base/core/firmas/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/core/firmas/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/core/firmas/.svn/entries b/base/core/firmas/.svn/entries deleted file mode 100644 index dca7f57..0000000 --- a/base/core/firmas/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas -svn://172.17.26.185/COMACO - - - -2014-10-17T05:35:34.255544Z -1671 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:37.224779Z -27b5bfab9dbb337de682e87bbb814661 -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -1733 - diff --git a/base/core/firmas/.svn/text-base/pom.xml.svn-base b/base/core/firmas/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index b91217b..0000000 --- a/base/core/firmas/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,57 +0,0 @@ - - - 4.0.0 - - com.fp.base - core - 2.1 - - com.fp.base.core - firmas - firmas - http://maven.apache.org - - UTF-8 - - - - junit - junit - 3.8.1 - test - - - com.fp.base.core - bpm - 2.1 - - - com.fp.base.persistence - pfirmas - 2.1 - provided - - - com.fp.base.persistence - pviaticos - 2.1 - provided - - - org.bouncycastle - bcprov-jdk15on - 1.50 - - - org.bouncycastle - bcmail-jdk15on - 1.50 - - - com.itextpdf - itextpdf - 5.5.0 - - - diff --git a/base/core/firmas/src/.svn/entries b/base/core/firmas/src/.svn/entries deleted file mode 100644 index 4b9ff30..0000000 --- a/base/core/firmas/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/core/firmas/src/main/.svn/entries b/base/core/firmas/src/main/.svn/entries deleted file mode 100644 index 9f84b2a..0000000 --- a/base/core/firmas/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/core/firmas/src/main/java/.svn/entries b/base/core/firmas/src/main/java/.svn/entries deleted file mode 100644 index 79a4b73..0000000 --- a/base/core/firmas/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/core/firmas/src/main/java/com/.svn/entries b/base/core/firmas/src/main/java/com/.svn/entries deleted file mode 100644 index 3a0fd6c..0000000 --- a/base/core/firmas/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/core/firmas/src/main/java/com/fp/.svn/entries b/base/core/firmas/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 80112de..0000000 --- a/base/core/firmas/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firmas -dir - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/.svn/entries deleted file mode 100644 index 8f9e32b..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -rules -dir - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/.svn/entries deleted file mode 100644 index a3bc406..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -query -dir - -common -dir - -save -dir - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/entries deleted file mode 100644 index 79e1aaa..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/entries +++ /dev/null @@ -1,105 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/common -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -enumerator -dir - -CertificateUtils.java -file - - - - -2022-07-28T03:40:36.881778Z -b7e42e1257649916abb4ac6802938c5a -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -29895 - -PDFRendererListener.java -file - - - - -2022-07-28T03:40:36.881778Z -60bd93a23c166f4947fc882b7dc8485d -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -1586 - -resources -dir - -exception -dir - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/CertificateUtils.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/CertificateUtils.java.svn-base deleted file mode 100644 index 25d73f8..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/CertificateUtils.java.svn-base +++ /dev/null @@ -1,738 +0,0 @@ -package com.fp.firmas.rules.common; - -import java.io.BufferedOutputStream; -import java.io.ByteArrayOutputStream; -import java.io.DataOutputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.math.BigInteger; -import java.net.HttpURLConnection; -import java.net.MalformedURLException; -import java.net.URL; -import java.security.GeneralSecurityException; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.PrivateKey; -import java.security.Security; -import java.security.UnrecoverableKeyException; -import java.security.cert.Certificate; -import java.security.cert.CertificateEncodingException; -import java.security.cert.CertificateException; -import java.security.cert.CertificateFactory; -import java.security.cert.X509Certificate; -import java.text.SimpleDateFormat; -import java.util.Date; -import java.util.Enumeration; -import java.util.List; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import org.bouncycastle.cert.X509CertificateHolder; -import org.bouncycastle.cert.ocsp.BasicOCSPResp; -import org.bouncycastle.cert.ocsp.CertificateID; -import org.bouncycastle.cert.ocsp.CertificateStatus; -import org.bouncycastle.cert.ocsp.OCSPException; -import org.bouncycastle.cert.ocsp.OCSPReq; -import org.bouncycastle.cert.ocsp.OCSPReqBuilder; -import org.bouncycastle.cert.ocsp.OCSPResp; -import org.bouncycastle.cert.ocsp.RevokedStatus; -import org.bouncycastle.cert.ocsp.SingleResp; -import org.bouncycastle.jce.provider.BouncyCastleProvider; -import org.bouncycastle.operator.OperatorCreationException; -import org.bouncycastle.operator.jcajce.JcaDigestCalculatorProviderBuilder; - -import com.fp.base.persistence.TfirmDatosFirmante; -import com.fp.common.logger.APPLogger; -import com.fp.firmas.rules.common.enumerator.SignType; -import com.fp.firmas.rules.common.exception.FirmasException; -import com.fp.firmas.rules.common.resources.FirmMessages; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pfirmas.param.TfirmCertificado; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; -import com.itextpdf.text.DocumentException; -import com.itextpdf.text.Font; -import com.itextpdf.text.Rectangle; -import com.itextpdf.text.pdf.AcroFields; -import com.itextpdf.text.pdf.PdfReader; -import com.itextpdf.text.pdf.PdfSignatureAppearance; -import com.itextpdf.text.pdf.PdfStamper; -import com.itextpdf.text.pdf.parser.PdfReaderContentParser; -import com.itextpdf.text.pdf.parser.Vector; -import com.itextpdf.text.pdf.security.BouncyCastleDigest; -import com.itextpdf.text.pdf.security.CertificateInfo; -import com.itextpdf.text.pdf.security.CertificateInfo.X500Name; -import com.itextpdf.text.pdf.security.CertificateUtil; -import com.itextpdf.text.pdf.security.DigestAlgorithms; -import com.itextpdf.text.pdf.security.ExternalDigest; -import com.itextpdf.text.pdf.security.ExternalSignature; -import com.itextpdf.text.pdf.security.MakeSignature; -import com.itextpdf.text.pdf.security.MakeSignature.CryptoStandard; -import com.itextpdf.text.pdf.security.OcspClient; -import com.itextpdf.text.pdf.security.OcspClientBouncyCastle; -import com.itextpdf.text.pdf.security.PrivateKeySignature; -import com.itextpdf.text.pdf.security.TSAClient; - -/** - * Clase que contiene metodos utilitarios para manejar certificados - * - * @author dcruz - * - */ -public class CertificateUtils { - - /* - * CONSTANTES DESIGNADAS SEGUN LA NUEVA ESTRUCTURA DEL BCE - */ - // OIDs de Campos del Certificado: - public static final String OID_CEDULA_PASAPORTE = FirmMessages.getString("oid.cedula_pasaporte"); - - public static final String OID_NOMBRES = FirmMessages.getString("oid.nombres_persona"); - - public static final String OID_APELLIDO_1 = FirmMessages.getString("oid.apellido_persona1"); - - public static final String OID_APELLIDO_2 = FirmMessages.getString("oid.apellido_persona2"); - - public static final String OID_CARGO = FirmMessages.getString("oid.cargo"); - - public static final String OID_INSTITUCION = FirmMessages.getString("oid.institucion"); - - public static final String OID_DIRECCION = FirmMessages.getString("oid.direccion"); - - public static final String OID_TELEFONO = FirmMessages.getString("oid.telefono"); - - public static final String OID_CIUDAD = FirmMessages.getString("oid.ciudad"); - - public static final String OID_RAZON_SOCIAL = FirmMessages.getString("oid.razon_social"); - - public static final String OID_RUC = FirmMessages.getString("oid.ruc"); - - public static final String X509 = "X.509"; - - static { - BouncyCastleProvider provider = new BouncyCastleProvider(); - Security.addProvider(provider); - } - - /** - * Retorna el certificado del usuario contenido en la firma - * - * @param store el store en el que se va a buscar los certificados - * @param aliases los alias que estan dentro del keystore - * @return el {@link java.security.Certificate} - * @throws KeyStoreException - */ - public synchronized static Certificate obtainCertificateInAlias(KeyStore store, Enumeration aliases) throws KeyStoreException { - Certificate certs[] = null; - synchronized (aliases) { - int i = 0; - while (aliases.hasMoreElements()) { - String alias = aliases.nextElement(); - //System.out.println("Se imprime los alias: " + i + " " + alias); - certs = store.getCertificateChain(alias); - for (int j = 0; j < certs.length; j++) { - X509Certificate certificate = (X509Certificate) certs[j]; - boolean[] usages = certificate.getKeyUsage(); - // System.out.println("Certificado en primera posicion usado: " + j + " " + usages[0]); - if (usages[0]) { - return certificate; - } - } - i++; - } - - } - return null; - } - - /** - * Se devuelve todos los datos de la firma del usuario en base al certificado enviado - * - * @param certificate el certificado enviado - * @return Los datos del certificado de dicho usuario - */ - public static TfirmDatosFirmante obtainDataForCertificate(Certificate certificate) { - X509Certificate signedCertificate = (X509Certificate) certificate; - TfirmDatosFirmante datosFirmante = new TfirmDatosFirmante(); - if (signedCertificate.getExtensionValue(OID_CEDULA_PASAPORTE) != null) { - datosFirmante.setIdentificacion(new String(signedCertificate.getExtensionValue(OID_CEDULA_PASAPORTE)).trim()); - } - if (signedCertificate.getExtensionValue(OID_NOMBRES) != null) { - datosFirmante.setNombre(new String(signedCertificate.getExtensionValue(OID_NOMBRES)).trim()); - } - if (signedCertificate.getExtensionValue(OID_APELLIDO_1) != null) { - datosFirmante.setApellido1(new String(signedCertificate.getExtensionValue(OID_APELLIDO_1)).trim()); - if (signedCertificate.getExtensionValue(OID_APELLIDO_2) != null) { - datosFirmante.setApellido2(new String(signedCertificate.getExtensionValue(OID_APELLIDO_2)).trim()); - } else { - datosFirmante.setApellido2(""); - } - } - if (signedCertificate.getExtensionValue(OID_TELEFONO) != null) { - datosFirmante.setTelefono(new String(signedCertificate.getExtensionValue(OID_TELEFONO)).trim()); - } - if (signedCertificate.getExtensionValue(OID_CARGO) != null) { - datosFirmante.setCargo(new String(signedCertificate.getExtensionValue(OID_CARGO)).trim()); - } - if (signedCertificate.getExtensionValue(OID_CIUDAD) != null) { - datosFirmante.setCiudad(new String(signedCertificate.getExtensionValue(OID_CIUDAD)).trim()); - } - if (signedCertificate.getExtensionValue(OID_DIRECCION) != null) { - datosFirmante.setDireccion(new String(signedCertificate.getExtensionValue(OID_DIRECCION)).trim()); - } - if (signedCertificate.getExtensionValue(OID_INSTITUCION) != null) { - datosFirmante.setInstitucion(new String(signedCertificate.getExtensionValue(OID_INSTITUCION)).trim()); - } - if (signedCertificate.getExtensionValue(OID_RAZON_SOCIAL) != null) { - datosFirmante.setInstitucion(new String(signedCertificate.getExtensionValue(OID_RAZON_SOCIAL)).trim()); - } - if (signedCertificate.getExtensionValue(OID_RUC) != null) { - datosFirmante.setRuc(new String(signedCertificate.getExtensionValue(OID_RUC)).trim()); - } - datosFirmante.setFechaInicioVigencia(signedCertificate.getNotBefore()); - datosFirmante.setFechaVigencia(signedCertificate.getNotAfter()); - return datosFirmante; - } - - /** - * Valida que el certificado del usuario sea un certificado valido contra el servicio OCSP del proveedor - * - * @param certificateUser - * @throws FileNotFoundException - * @throws CertificateException - */ - public static void validateOcsCertificate(Certificate certificateUser) throws FileNotFoundException, CertificateException, FirmasException{ - // System.out.println(((X509Certificate) certificateUser).getIssuerDN().getName()); - CertificateFactory cf = CertificateFactory.getInstance(X509); - InputStream subordStream = new FileInputStream(FirmMessages.getString("dir.ruta.base.repositorio") + "/" - + FirmMessages.getString("nombre.certificado.subordinado")); - X509Certificate subordCertificate = (X509Certificate) cf.generateCertificate(subordStream); - check((X509Certificate) certificateUser, subordCertificate); - try{ - subordStream.close(); - }catch(Exception e){} - } - - /** - * Valida que los certificados enviados sean validos por la entidad certificadora - * - * @param issuerCert certificado del usuario - * @param x509Cert certificado que firmo el certificado expedido - */ - public static void check(X509Certificate issuerCert, X509Certificate x509Cert) throws FirmasException{ - - OutputStream out = null; - DataOutputStream dataOut =null; - InputStream in =null; - - try { - - BigInteger serialNumber = issuerCert.getSerialNumber(); - X509CertificateHolder holder; - - try { - holder = new X509CertificateHolder(x509Cert.getEncoded()); - } catch (IOException e) { - throw new RuntimeException(e); - } - - CertificateID id = new CertificateID(new JcaDigestCalculatorProviderBuilder().setProvider(BouncyCastleProvider.PROVIDER_NAME).build() - .get(CertificateID.HASH_SHA1), holder, serialNumber); - - OCSPReqBuilder ocspGen = new OCSPReqBuilder(); - ocspGen.addRequest(id); - OCSPReq ocspReq = ocspGen.build(); - - // Ir al OCSP - String ocspUrl = CertificateUtil.getOCSPURL(issuerCert); - - if (ocspUrl == null) { - APPLogger.getLogger().error("URL de OCSP is null"); - return; - } - - URL url; - - try { - url = new URL(ocspUrl); - } catch (MalformedURLException e) { - throw new RuntimeException(e); - } - - HttpURLConnection con; - OCSPResp ocspResponse; - - - try { - con = (HttpURLConnection) url.openConnection(); - - con.setRequestProperty("Content-Type", "application/ocsp-request"); - con.setRequestProperty("Accept", "application/ocsp-response"); - con.setDoOutput(true); - out = con.getOutputStream(); - dataOut = new DataOutputStream(new BufferedOutputStream(out)); - - dataOut.write(ocspReq.getEncoded()); - - APPLogger.getLogger().info("Estado de respuesta de la peticion=" + con.getResponseCode()); - - /* - * Se parsea la respuesta y se obtiene el estado del certificado retornado por el OCSP - */ - in = (InputStream) con.getContent(); - byte[] resp = read(in); // Read the reponse - ocspResponse = new OCSPResp(resp); - - - } catch (IOException e) { - throw new FirmasException("FIR-0001", "ERROR AL ESTABLECER CONEXI\u00d3N AL SERVICIO: {0}", url); - } - - int status = ocspResponse.getStatus(); - APPLogger.getLogger().info("status=" + status); - - BasicOCSPResp basicResponse = (BasicOCSPResp) ocspResponse.getResponseObject(); - - if (basicResponse != null) { - SingleResp[] responses = basicResponse.getResponses(); - SingleResp response = responses[0]; - CertificateStatus certStatus = response.getCertStatus(); - - if (certStatus instanceof RevokedStatus) { - APPLogger.getLogger().error("REVOKED"); - RevokedStatus revokedStatus = (RevokedStatus) certStatus; - APPLogger.getLogger().error("Reason: " + revokedStatus.getRevocationReason()); - APPLogger.getLogger().error("Date: " + revokedStatus.getRevocationTime()); - - throw new FirmasException("FIR-0002", "ERROR, CERTIFICADO REVOCADO POR {0} CON FECHA {1}", revokedStatus.getRevocationReason(), - revokedStatus.getRevocationTime()); - } - } - } catch (OCSPException e) { - throw new RuntimeException(e); - } catch (CertificateEncodingException e) { - throw new RuntimeException(e); - } catch (OperatorCreationException e) { - throw new RuntimeException(e); - } - finally{ - try { - dataOut.close(); - if(in!=null) { - in.close(); - } - out.close(); - } catch (IOException e) {} - } - } - - /** - * Devuelve los nombres de firmas de un documento PDF - * - * @param docStream el documento a verificar - * @return un lista de nombres de firmas - */ - public static List obtainNameSigns(InputStream docStream) { - PdfReader docPdf = null; - try { - docPdf = new PdfReader(docStream); - AcroFields af = docPdf.getAcroFields(); - return af.getSignatureNames(); - } catch (IOException e) { - APPLogger.getLogger().error("Error al obtener los nombres del documentoss"); - return null; - } finally { - if(docPdf != null){ - docPdf.close(); - } - } - } - - /** - * Metodo para firmar documentos - * @param fileSrc - * @param usuario - * @param password - * @param compania - * @param reason - * @param location - * @param rectangle - * @param numPage - * @param nameSign - * @return - * @throws Exception - */ - public static byte[] sign(InputStream fileSrc, String usuario, String password, Integer compania, String reason, String location, - Rectangle rectangle, int numPage, String nameSign, String pathCertificate) throws Exception { - String path = pathCertificate; - FileInputStream ceritificateInputStream = new FileInputStream(path); - return sign(fileSrc, ceritificateInputStream, password, reason, location, false, true, rectangle, numPage, nameSign); - } - - /** - * Metodo para firmar documentos - * @param fileSrc - * @param usuario - * @param password - * @param compania - * @param reason - * @param location - * @param rectangle - * @param numPage - * @param nameSign - * @return - * @throws Exception - */ - public static byte[] sign(InputStream fileSrc, String usuario, String password, Integer compania, String reason, String location, - Rectangle rectangle, int numPage, String nameSign) throws Exception { - String path = getPath(usuario, compania); - FileInputStream ceritificateInputStream = new FileInputStream(path); - return sign(fileSrc, ceritificateInputStream, password, reason, location, false, true, rectangle, numPage, nameSign); - } - - /** - * Método que firma un documento en base los parámetros indicados - * - * @param fileSrc archivo origen - * @param fileCert archivo destino - * @param password contrasena - * @param reason razón o motivo de la firma. - * @param location localización coemtario adicional de la firma. - * @param withTS tiene TS estamapado de tiempo. - * @param withOCSP tiene OCSP verificacion de la firma por el la entidad certificadora BCE. - * @param rectangle lugar localizaci´n firma - * @param numPage número pagina - * @param nameSign nombre firma - * @return el documento firmado - */ - private static byte[] sign(InputStream fileSrc, InputStream fileCert, String password, String reason, String location, boolean withTS, - boolean withOCSP, Rectangle rectangle, int numPage, String nameSign) { - OutputStream outputStream =null; - PdfStamper stamper = null; - try { - PdfReader pdfReader = new PdfReader(fileSrc); - PDFRendererListener listener = new PDFRendererListener(); - Integer numberPage = pdfReader.getNumberOfPages(); - PdfReaderContentParser parser =new PdfReaderContentParser(pdfReader); - parser.processContent(numberPage, listener); - List listaI = listener.getListaImagenes(); - float llx = listaI.get(3).get(1);//50; - float lly = listaI.get(3).get(1);//210; - float urx = llx+250;//305; - float ury = lly+60;//277; - rectangle = new Rectangle(llx, lly, urx, ury); - - - outputStream = new ByteArrayOutputStream(512); - stamper = PdfStamper.createSignature(pdfReader, outputStream, '\0'); - PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); - - KeyStore store = KeyStore.getInstance("PKCS12"); - store.load(fileCert, password.toCharArray()); - String alias = store.aliases().nextElement(); - ExternalSignature signature = new PrivateKeySignature((PrivateKey) store.getKey(alias, password.toCharArray()), DigestAlgorithms.SHA256, - "SunRsaSign"); - appearance.setLayer2Text(generateSignText(store.getCertificateChain(alias), reason, location)); - appearance.setLayer2Font(new Font(Font.FontFamily.UNDEFINED, 8F)); - appearance.setVisibleSignature(rectangle, numPage, nameSign); - TSAClient tsc = null; - if (withTS) { - - } - OcspClient ocsp = null; - if (withOCSP) { - ocsp = new OcspClientBouncyCastle(); - } - - ExternalDigest externalDigest = new BouncyCastleDigest(); - - MakeSignature.signDetached(appearance, externalDigest, signature, store.getCertificateChain(alias), null, ocsp, tsc, 15000, - CryptoStandard.CADES); - return ((ByteArrayOutputStream) outputStream).toByteArray(); - } catch (IOException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (DocumentException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (KeyStoreException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (CertificateException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (UnrecoverableKeyException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (GeneralSecurityException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } - finally{ - try{ - fileCert.close(); - fileSrc.close(); - try { - stamper.close(); - } catch (Exception e2) { - } - - if(outputStream!=null) { - outputStream.close(); - } - } - catch (IOException e){ - APPLogger.getLogger().error(e); - } - } - return null; - } - - public static byte[] sign(InputStream fileSrc, String usuario, String password, String reason, String location, - String nameSign, String pathCertificate, SignType signType) throws Exception { - String path = pathCertificate; - FileInputStream certificateInputStream = null; - try{ - certificateInputStream = new FileInputStream(path); - return positionSign(fileSrc, certificateInputStream, password, reason, location, false, true, nameSign,signType); - }finally{ - if(certificateInputStream !=null){ - certificateInputStream.close(); - } - } - - } - - /** - * Método que firma un documento en base los parámetros indicados - * @param fileSrc - * @param fileCert - * @param password - * @param reason - * @param location - * @param withTS - * @param withOCSP - * @param nameSign - * @param signType - * @return - */ - private static byte[] positionSign(InputStream fileSrc, InputStream fileCert, String password, String reason, String location, boolean withTS, - boolean withOCSP, String nameSign, SignType signType) { - OutputStream outputStream =null; - PdfStamper stamper = null; - try { - PdfReader pdfReader = new PdfReader(fileSrc); - PDFRendererListener listener = new PDFRendererListener(); - Integer numPage = pdfReader.getNumberOfPages(); - PdfReaderContentParser parser =new PdfReaderContentParser(pdfReader); - parser.processContent(numPage, listener); - List listaI = listener.getListaImagenes(); - float llx = listaI.get(listaI.size()-signType.getIndice()).get(0); - float lly = listaI.get(listaI.size()-signType.getIndice()).get(1); - float urx = llx+250;//305; - float ury = lly+60;//277; - Rectangle rectangle = new Rectangle(llx, lly, urx, ury); - outputStream = new ByteArrayOutputStream(512); - stamper = PdfStamper.createSignature(pdfReader, outputStream, '\0'); - PdfSignatureAppearance appearance = stamper.getSignatureAppearance(); - - KeyStore store = KeyStore.getInstance("PKCS12"); - store.load(fileCert, password.toCharArray()); - String alias = store.aliases().nextElement(); - ExternalSignature signature = new PrivateKeySignature((PrivateKey) store.getKey(alias, password.toCharArray()), DigestAlgorithms.SHA256, - "SunRsaSign"); - appearance.setLayer2Text(generateSignText(store.getCertificateChain(alias), reason, location)); - appearance.setLayer2Font(new Font(Font.FontFamily.UNDEFINED, 8F)); - appearance.setVisibleSignature(rectangle, numPage, nameSign); - TSAClient tsc = null; - if (withTS) { - - } - OcspClient ocsp = null; - if (withOCSP) { - ocsp = new OcspClientBouncyCastle(); - } - - ExternalDigest externalDigest = new BouncyCastleDigest(); - - MakeSignature.signDetached(appearance, externalDigest, signature, store.getCertificateChain(alias), null, ocsp, tsc, 15000, - CryptoStandard.CADES); - return ((ByteArrayOutputStream) outputStream).toByteArray(); - } catch (IOException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (DocumentException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (KeyStoreException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (NoSuchAlgorithmException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (CertificateException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (UnrecoverableKeyException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } catch (GeneralSecurityException e) { - APPLogger.getLogger().error(e); - e.printStackTrace(); - } - finally{ - try{ - fileCert.close(); - fileSrc.close(); - try { - stamper.close(); - } catch (Exception e2) { - } - - if(outputStream!=null) { - outputStream.close(); - } - } - catch (IOException e){ - APPLogger.getLogger().error(e); - } - } - return null; - } - - /** - * Arma documento el texto a mostrar de la plantilla - * @param chains certificados - * @param reason razón - * @param location lugar - * @return una layout de la firma - */ - private static String generateSignText(Certificate[] chains, String reason, String location){ - StringBuffer textLayout = new StringBuffer("Firmado digitalmente por: "); - String name = null; - X500Name x500name = CertificateInfo.getSubjectFields((X509Certificate)chains[0]); - if (x500name != null) { - name = x500name.getField("CN"); - if (name == null) { - name = x500name.getField("E"); - } - } - if(name == null){ - name = ""; - } - textLayout.append(name).append("\n"); - if(reason != null){ - textLayout.append("Raz\u00f3n: ").append(reason).append("\n"); - } - /* - if(location != null){ - textLayout.append("Lugar: ").append(location).append("\n"); - } - */ - SimpleDateFormat format = new SimpleDateFormat("dd/MM/yyyy HH:mm:ss"); - textLayout.append("Fecha: ").append(format.format(new Date(System.currentTimeMillis()))); - return textLayout.toString(); - } - - private static byte[] read(InputStream in) throws IOException { - ByteArrayOutputStream bos = null; - try { - bos = new ByteArrayOutputStream(); - int next = in.read(); - while (next > -1) { - bos.write(next); - next = in.read(); - } - bos.flush(); - - return bos.toByteArray(); - } finally { - if(in != null){ - in.close(); - } - if(bos != null){ - bos.close(); - } - } - - } - - /** - * Entrega el path en el que se encuentra el certificado digital. - * - * @param cusuario Codigo de usuario. - * @param ccompania Codigo de compania. - * @return String - * @throws Exception - */ - private static String getPath(String cusuario, Integer ccompania) throws Exception { - TfirmCertificado tfirmcertificado = getTfirmCertificado(cusuario); - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("PATH_CERTIFICADO_BCE", ccompania); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey); - String path = tgeneParameters.getTextvalue() + "/" + tfirmcertificado.getPk().getIdcertificado(); - return path; - } - - /** - * Sentencia que entrega la defincion vigente de un certificado digital para un usuario. - */ - private static final String JPQL = "from TfirmCertificado where t.codigousuario = :cusuario"; - - /** - * Entrega defincion de certificados digitales vigente. - * - * @param cusuario Codigo de usuario. - * @return TfirmCertificado. - * @throws Exception - */ - private static TfirmCertificado getTfirmCertificado(String cusuario) throws Exception { - TfirmCertificado tfirmCertificado = null; - Query qry = PersistenceHelper.getEntityManager().createQuery(JPQL); - qry.setParameter("cusuario", cusuario); - try { - tfirmCertificado = (TfirmCertificado) qry.getSingleResult(); - } catch (NoResultException e) { - throw new FirmasException("FIR-0001", "PARAMETROS DEL CERTIFICADO DIGITAL NO DEFINIDO PARA EL USUARIO: {0}", cusuario); - } - return tfirmCertificado; - } - - /** - * Método para validar el password ingresado - * @param path - * @param usuario - * @param password - * @param compania - * @return - * @throws Exception - */ - public static boolean validatePassword(String path, String usuario, - String password, Integer compania) { - FileInputStream certificateInputStream =null; - try { - certificateInputStream = new FileInputStream(path); - KeyStore ks = KeyStore.getInstance("PKCS12"); - ks.load(certificateInputStream, password.toCharArray()); - return true; - } catch (Exception e) { - return false; - }finally{ - try { - if(certificateInputStream!=null) - { - certificateInputStream.close(); - } - } catch (IOException e) {} - } - - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/PDFRendererListener.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/PDFRendererListener.java.svn-base deleted file mode 100644 index a755cd0..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/.svn/text-base/PDFRendererListener.java.svn-base +++ /dev/null @@ -1,69 +0,0 @@ -/** - * - */ -package com.fp.firmas.rules.common; - -import java.util.ArrayList; -import java.util.List; - -import com.itextpdf.text.pdf.parser.ImageRenderInfo; -import com.itextpdf.text.pdf.parser.RenderListener; -import com.itextpdf.text.pdf.parser.TextRenderInfo; -import com.itextpdf.text.pdf.parser.Vector; - -/** - * @author Gbensvides - * - */ -public class PDFRendererListener implements RenderListener { - - /* (non-Javadoc) - * @see com.itextpdf.text.pdf.parser.RenderListener#beginTextBlock() - * - */ - - List listaImagenes = new ArrayList(); - - @Override - public void beginTextBlock() { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see com.itextpdf.text.pdf.parser.RenderListener#renderText(com.itextpdf.text.pdf.parser.TextRenderInfo) - */ - @Override - public void renderText(TextRenderInfo renderInfo) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see com.itextpdf.text.pdf.parser.RenderListener#endTextBlock() - */ - @Override - public void endTextBlock() { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see com.itextpdf.text.pdf.parser.RenderListener#renderImage(com.itextpdf.text.pdf.parser.ImageRenderInfo) - */ - @Override - public void renderImage(ImageRenderInfo renderInfo) { - // TODO Auto-generated method stub - listaImagenes.add(renderInfo.getStartPoint()); - - } - - public List getListaImagenes() { - return listaImagenes; - } - - public void setListaImagenes(List listaImagenes) { - this.listaImagenes = listaImagenes; - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/entries deleted file mode 100644 index a6c629e..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SignType.java -file - - - - -2022-07-28T03:40:36.803777Z -8eeea6e36a67dad9a44f3493e2bb7c0b -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -291 - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/text-base/SignType.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/text-base/SignType.java.svn-base deleted file mode 100644 index 5a0c2dc..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/enumerator/.svn/text-base/SignType.java.svn-base +++ /dev/null @@ -1,21 +0,0 @@ -package com.fp.firmas.rules.common.enumerator; - -public enum SignType { - - EMPLEADO(3), - JEFE(2), - SUPERVISOR(1), - JEFE_INFORME(1), - SUPERVISOR_INFORME(2); - - private int cargo; - - private SignType(int a){ - cargo = a; - } - - public int getIndice() { - return cargo; - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/entries deleted file mode 100644 index a6fa0ea..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FirmasException.java -file - - - - -2022-07-28T03:40:36.860778Z -a24f08f02df905811e925b5d343fde3e -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -853 - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/text-base/FirmasException.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/text-base/FirmasException.java.svn-base deleted file mode 100644 index 8b27c9b..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/exception/.svn/text-base/FirmasException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.firmas.rules.common.exception; - -import com.fp.common.exception.APPException; - -/** - * Clase que manejará todos los errores relacionados con la firma digital - * - * @author dcruz - * - */ -public class FirmasException extends APPException { - - - private static final long serialVersionUID = -599185902882644036L; - - /** - * Crea una instancia de {@link FirmasException} - * @param code - * @param message - * @param pCause - * @param pParameters - */ - public FirmasException(String code, String message, Exception pCause, - Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de {@link FirmasException} - * @param code - * @param message - * @param pParameters - */ - public FirmasException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/entries deleted file mode 100644 index ab86ff8..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FirmMessages.java -file - - - - -2022-07-28T03:40:36.838777Z -01a26b97f7ae7710077a63b917f63c52 -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -378 - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/text-base/FirmMessages.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/text-base/FirmMessages.java.svn-base deleted file mode 100644 index 33d2335..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/common/resources/.svn/text-base/FirmMessages.java.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -package com.fp.firmas.rules.common.resources; - -import java.util.ResourceBundle; - -public class FirmMessages { - - private final static String RESOURCE = "firmessages_es"; - - private final static ResourceBundle firmessages; - - static{ - firmessages = ResourceBundle.getBundle(RESOURCE); - } - - public static String getString(String key) { - return firmessages.getString(key); - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/entries deleted file mode 100644 index 690e828..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/query -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -UsuarioCertificado.java -file - - - - -2022-07-28T03:40:36.745777Z -cba4c4b131b0ed3ad6afad14cb392659 -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -1720 - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/text-base/UsuarioCertificado.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/text-base/UsuarioCertificado.java.svn-base deleted file mode 100644 index d559f0f..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/query/.svn/text-base/UsuarioCertificado.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.firmas.rules.query; - -import java.util.Date; -import java.util.List; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.QueryRequest; -import com.fp.dto.rules.QueryRule; -import com.fp.persistence.pfirmas.param.TfirmCertificado; -import com.fp.persistence.pviaticos.hra.Empleado; -import com.fp.persistence.pviaticos.hra.EmpleadoJpql; - -/** - * Completa información del usuario a desplegar en la grilla de consulta de datos del funcionario - * - * @author dcruz - * - */ -public class UsuarioCertificado extends QueryRule { - - private static final long serialVersionUID = 1L; - - @SuppressWarnings("unchecked") - @Override - public QueryRequest process(QueryRequest queryRequest) throws Exception { - QueryJsf queryJsf = new QueryJsf(); - queryJsf.execute(queryRequest); - List certificadosUsuList = (List) queryRequest.getResponse().get("USUARIOCERTIFICADOS"); - completaDatosConsulta(certificadosUsuList); - return queryRequest; - } - - private void completaDatosConsulta(List certificadoList) throws Exception{ - if(certificadoList != null && !certificadoList.isEmpty()){ - for (TfirmCertificado tfirmCertificado : certificadoList) { - //completamos la informacion faltante de los certificados - EmpleadoJpql emJpql = new EmpleadoJpql(); - Empleado empleado = emJpql.findPorUsuarioWeb(tfirmCertificado.getCodigousuario()); - tfirmCertificado.modifiedData.put("nom_servidor", empleado.getNombre()); - tfirmCertificado.modifiedData.put("estado_certificado", tfirmCertificado.getPk().getFcaducidad().compareTo(new Date(System.currentTimeMillis())) >=0 ? "VIGENTE":"CADUCADO"); - tfirmCertificado.setCargo(empleado.getCargo()); - } - } - } - -} diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/entries b/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/entries deleted file mode 100644 index 3323733..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/java/com/fp/firmas/rules/save -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CertificadoFirma.java -file - - - - -2022-07-28T03:40:36.926778Z -39f1b02a2df15f8f3e43a9bf2146131c -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -2725 - diff --git a/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/text-base/CertificadoFirma.java.svn-base b/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/text-base/CertificadoFirma.java.svn-base deleted file mode 100644 index c3e7a98..0000000 --- a/base/core/firmas/src/main/java/com/fp/firmas/rules/save/.svn/text-base/CertificadoFirma.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.firmas.rules.save; - -import java.io.ByteArrayInputStream; -import java.nio.file.Files; -import java.nio.file.Paths; -import java.nio.file.StandardCopyOption; -import java.util.List; - -import com.fp.dto.rules.TransactionRule; -import com.fp.dto.save.SaveRequest; -import com.fp.firmas.rules.common.resources.FirmMessages; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pfirmas.param.TfirmCertificado; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParametersKey; - -/** - * Clase que completa la información acerca de los certificados dentro del repositorio de certificados - * - * @author dcruz - * - */ -public class CertificadoFirma extends TransactionRule{ - - private static final long serialVersionUID = 1L; - - @Override - public SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception { - - List firmCertificados = pSaveRequest.getSaveBeanModifiedRecords("USUARIOCERTIFICADOS"); - String path = (String)pSaveRequest.get("path"); - for (Object object : firmCertificados) { - if(object instanceof TfirmCertificado){ - TfirmCertificado certificado = (TfirmCertificado)object; - guardarCertficadoRepositorio(certificado, path); - } - } - return pSaveRequest; - } - - @Override - public SaveRequest reverseProcess(SaveRequest pSaveRequest) - throws Exception { - return pSaveRequest; - } - - private void guardarCertficadoRepositorio(TfirmCertificado certificado, String pathCertificado) throws CommondbException, Exception{ -// String path = getPath(certificado);//obtiene la ruta a grabar el certificado -// String path = FirmMessages.getString("dir.ruta.base.repositorio") + "/" + certificado.getPk().getIdcertificado();//cambiar por el parametro en la base - String path = pathCertificado + "/" + certificado.getPk().getIdcertificado(); - if(!Files.exists(Paths.get(path))){ - Files.createFile(Paths.get(path)); - Files.copy(new ByteArrayInputStream((byte[])certificado.modifiedData.get("valor_certificado_bin")), Paths.get(path)); - }else{ - Files.copy(new ByteArrayInputStream((byte[])certificado.modifiedData.get("valor_certificado_bin")), Paths.get(path), StandardCopyOption.REPLACE_EXISTING); - } - - } - - private String getPath(TfirmCertificado certificado) throws CommondbException, Exception { - TgeneParametersKey tgeneParametersKey = new TgeneParametersKey("PATH_CERTIFICADO_BCE", 1); - TgeneParameters tgeneParameters = TgeneParameters.find(PersistenceHelper.getEntityManager(), tgeneParametersKey); - String path = tgeneParameters.getTextvalue() + "/" + certificado.getPk().getIdcertificado(); - return path; - } - -} diff --git a/base/core/firmas/src/main/resources/.svn/entries b/base/core/firmas/src/main/resources/.svn/entries deleted file mode 100644 index f055cde..0000000 --- a/base/core/firmas/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firmessages_es.properties -file - - - - -2022-07-28T03:40:37.143779Z -fd28a0db17ea9f914c47011556fddec1 -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - - - - - - - - -2077 - diff --git a/base/core/firmas/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base b/base/core/firmas/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base deleted file mode 100644 index 224b110..0000000 --- a/base/core/firmas/src/main/resources/.svn/text-base/firmessages_es.properties.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#======================================================================================== -#=======CODIGO EXCEPCIONES=============================================================== -#======================================================================================== -FIR-0001=ERROR AL ESTABLECER CONEXI\u00D3N AL SERVICIO\: {0} -FIR-0002=ERROR, CERTIFICADO REVOCADO POR {0} CON FECHA {1} -FIR-0005=ERROR, ES OBLIGATORIO CARGAR UN ARCHIVO -#======================================================================================== -#=======OIDs GENERALES DE IDENTIFICACION DEL USUARIO EN EL CERTIFICADO=================== -#======================================================================================== -oid.cedula_pasaporte=1.3.6.1.4.1.37947.3.1 -oid.nombres_persona=1.3.6.1.4.1.37947.3.2 -oid.apellido_persona1=1.3.6.1.4.1.37947.3.3 -oid.apellido_persona2=1.3.6.1.4.1.37947.3.4 -oid.cargo=1.3.6.1.4.1.37947.3.5 -oid.institucion=1.3.6.1.4.1.37947.3.6 -oid.direccion=1.3.6.1.4.1.37947.3.7 -oid.telefono=1.3.6.1.4.1.37947.3.8 -oid.ciudad=1.3.6.1.4.1.37947.3.9 -oid.razon_social=1.3.6.1.4.1.37947.3.10 -oid.ruc=1.3.6.1.4.1.37947.3.11 -#======================================================================================== -#=======RUTAS DE LOS DIRECTORIOS DEL REPOSITORIO DE CERTIFICADOS========================= -#======================================================================================== -dir.ruta.base.repositorio=/media/store/maia/jboss-eap-6.0/digital_repository -dir.nombre.carpeta.usuarios=users -nombre.certificado.raiz=CARAIZ.cer -nombre.certificado.subordinado=CASUBORDINADO.cer -service.url.address.ocsp=http://ocsp.digsigtrust.com:80 -#service.url.address.ocsp=http://ocsp.openvalidation.org:80 \ No newline at end of file diff --git a/base/core/firmas/src/test/.svn/entries b/base/core/firmas/src/test/.svn/entries deleted file mode 100644 index 4a78f9d..0000000 --- a/base/core/firmas/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/test -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/core/firmas/src/test/java/.svn/entries b/base/core/firmas/src/test/java/.svn/entries deleted file mode 100644 index 98a4f1c..0000000 --- a/base/core/firmas/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/test/java -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/core/firmas/src/test/java/com/.svn/entries b/base/core/firmas/src/test/java/com/.svn/entries deleted file mode 100644 index 7e3f759..0000000 --- a/base/core/firmas/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/core/firmas/src/test/java/com/fp/.svn/entries b/base/core/firmas/src/test/java/com/fp/.svn/entries deleted file mode 100644 index d69d724..0000000 --- a/base/core/firmas/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -firmas -dir - diff --git a/base/core/firmas/src/test/java/com/fp/firmas/.svn/entries b/base/core/firmas/src/test/java/com/fp/firmas/.svn/entries deleted file mode 100644 index 060cec1..0000000 --- a/base/core/firmas/src/test/java/com/fp/firmas/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/core/firmas/src/test/java/com/fp/firmas -svn://172.17.26.185/COMACO - - - -2014-09-11T06:05:22.283455Z -657 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/dto/.svn/entries b/base/dto/.svn/entries deleted file mode 100644 index 19f772e..0000000 --- a/base/dto/.svn/entries +++ /dev/null @@ -1,68 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -dto -dir - -common -dir - -pom.xml -file - - - - -2022-07-28T03:40:36.509776Z -9c346b644ae422e493aa3efa87149832 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1066 - diff --git a/base/dto/.svn/text-base/pom.xml.svn-base b/base/dto/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index a0dafe4..0000000 --- a/base/dto/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,32 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - dto - dto - 2.1 - pom - Financial Lifecycle Process - - common - dto - - - - org.apache.velocity - velocity - - - org.apache.velocity - velocity-tools - - - diff --git a/base/dto/common/.svn/dir-prop-base b/base/dto/common/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/dto/common/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/dto/common/.svn/entries b/base/dto/common/.svn/entries deleted file mode 100644 index 7a10af8..0000000 --- a/base/dto/common/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:36.485776Z -bdf0b774598f9e54739bda000c413439 -2015-10-19T06:08:31.903910Z -4294 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2851 - diff --git a/base/dto/common/.svn/text-base/pom.xml.svn-base b/base/dto/common/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 67f87da..0000000 --- a/base/dto/common/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,86 +0,0 @@ - - - - dto - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.dto - common - common - - - - - com.fp.base.dto - dto - 2.1 - - - net.sf.json-lib - json-lib - - - xom - xom - - - log4j - log4j - - - dom4j - dom4j - 1.6.1 - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - org.hibernate - hibernate-core - - - org.hibernate - hibernate-entitymanager - - - - xalan - serializer - 2.7.1 - jar - provided - - - - org.mvel - mvel2 - - - org.apache.poi - poi - - - org.apache.poi - poi-ooxml - - - javax.mail - mail - - - javax.activation - activation - - - jep - jep - - - diff --git a/base/dto/common/src/.svn/entries b/base/dto/common/src/.svn/entries deleted file mode 100644 index 9e04c9a..0000000 --- a/base/dto/common/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/dto/common/src/main/.svn/entries b/base/dto/common/src/main/.svn/entries deleted file mode 100644 index a63f3e1..0000000 --- a/base/dto/common/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/dto/common/src/main/java/.svn/entries b/base/dto/common/src/main/java/.svn/entries deleted file mode 100644 index a461e98..0000000 --- a/base/dto/common/src/main/java/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -com -dir - diff --git a/base/dto/common/src/main/java/com/.svn/entries b/base/dto/common/src/main/java/com/.svn/entries deleted file mode 100644 index 3f8bdfd..0000000 --- a/base/dto/common/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/common/src/main/java/com/fp/.svn/entries b/base/dto/common/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 0d15849..0000000 --- a/base/dto/common/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,103 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -viaticos -dir - -mail -dir - -persistence -dir - -telered -dir - -dto -dir - -builder -dir - -timedeposit -dir - -teller -dir - -core -dir - -common -dir - -loan -dir - -installment -dir - -accounting -dir - -ach -dir - -creditfacility -dir - -excel -dir - -documents -dir - -receivable -dir - -application -dir - -bpmlib -dir - -bscoring -dir - -term -dir - -warranty -dir - -demandeposit -dir - -general -dir - diff --git a/base/dto/common/src/main/java/com/fp/accounting/.svn/entries b/base/dto/common/src/main/java/com/fp/accounting/.svn/entries deleted file mode 100644 index 5547dc5..0000000 --- a/base/dto/common/src/main/java/com/fp/accounting/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/accounting -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/entries deleted file mode 100644 index 73691cf..0000000 --- a/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/accounting/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AccountingException.java -file - - - - -2022-07-28T03:40:35.408771Z -995fa5cf38917293288a518e2e04808e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1348 - diff --git a/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/text-base/AccountingException.java.svn-base b/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/text-base/AccountingException.java.svn-base deleted file mode 100644 index 2bc913e..0000000 --- a/base/dto/common/src/main/java/com/fp/accounting/exception/.svn/text-base/AccountingException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.accounting.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete accounting o contabilidad - * @author scastillo - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class AccountingException extends APPException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de AccountingException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public AccountingException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de AccountingException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public AccountingException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/ach/.svn/entries b/base/dto/common/src/main/java/com/fp/ach/.svn/entries deleted file mode 100644 index 57be915..0000000 --- a/base/dto/common/src/main/java/com/fp/ach/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/ach -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/ach/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/ach/exception/.svn/entries deleted file mode 100644 index 087ebc1..0000000 --- a/base/dto/common/src/main/java/com/fp/ach/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/ach/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AchException.java -file - - - - -2022-07-28T03:40:35.558772Z -c0e86adb01ab5b6a0868ad2a4e89976f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1283 - diff --git a/base/dto/common/src/main/java/com/fp/ach/exception/.svn/text-base/AchException.java.svn-base b/base/dto/common/src/main/java/com/fp/ach/exception/.svn/text-base/AchException.java.svn-base deleted file mode 100644 index 15bc267..0000000 --- a/base/dto/common/src/main/java/com/fp/ach/exception/.svn/text-base/AchException.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ -package com.fp.ach.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Clase que se encarga del manejo de errores de ACH - * @author scastillo - */ -@ApplicationException(rollback=true) -public class AchException extends APPException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de AchException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public AchException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de AchException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public AchException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/application/.svn/entries b/base/dto/common/src/main/java/com/fp/application/.svn/entries deleted file mode 100644 index 519ae2d..0000000 --- a/base/dto/common/src/main/java/com/fp/application/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/application -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/application/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/application/exception/.svn/entries deleted file mode 100644 index f2c3368..0000000 --- a/base/dto/common/src/main/java/com/fp/application/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/application/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SolicitudeException.java -file - - - - -2022-07-28T03:40:35.852773Z -b2ec3ddef838112799fb18f2646e0044 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1259 - diff --git a/base/dto/common/src/main/java/com/fp/application/exception/.svn/text-base/SolicitudeException.java.svn-base b/base/dto/common/src/main/java/com/fp/application/exception/.svn/text-base/SolicitudeException.java.svn-base deleted file mode 100644 index 5d6df5b..0000000 --- a/base/dto/common/src/main/java/com/fp/application/exception/.svn/text-base/SolicitudeException.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.application.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete de solicitudes. - * @author Jorge Vaca - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class SolicitudeException extends APPException{ - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public SolicitudeException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public SolicitudeException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/bpmlib/.svn/entries b/base/dto/common/src/main/java/com/fp/bpmlib/.svn/entries deleted file mode 100644 index b4294b8..0000000 --- a/base/dto/common/src/main/java/com/fp/bpmlib/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/bpmlib -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BPMException.java -file - - - - -2022-07-28T03:40:35.924774Z -00fe9adca42c4fdba32709790c45c293 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1323 - diff --git a/base/dto/common/src/main/java/com/fp/bpmlib/.svn/text-base/BPMException.java.svn-base b/base/dto/common/src/main/java/com/fp/bpmlib/.svn/text-base/BPMException.java.svn-base deleted file mode 100644 index 8ef66e1..0000000 --- a/base/dto/common/src/main/java/com/fp/bpmlib/.svn/text-base/BPMException.java.svn-base +++ /dev/null @@ -1,43 +0,0 @@ -package com.fp.bpmlib; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete BPM o cuentas a la vista. - * - * @author Jorge Vaca - * @version 2.1 - */ -@ApplicationException(rollback = true) -public class BPMException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de BPMException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public BPMException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de BPMException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public BPMException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/bscoring/.svn/entries b/base/dto/common/src/main/java/com/fp/bscoring/.svn/entries deleted file mode 100644 index b02d63f..0000000 --- a/base/dto/common/src/main/java/com/fp/bscoring/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/bscoring -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BscoringException.java -file - - - - -2022-07-28T03:40:35.956774Z -beaea9f91eeaa4a13cd563998d56d860 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1589 - diff --git a/base/dto/common/src/main/java/com/fp/bscoring/.svn/text-base/BscoringException.java.svn-base b/base/dto/common/src/main/java/com/fp/bscoring/.svn/text-base/BscoringException.java.svn-base deleted file mode 100644 index ec8993c..0000000 --- a/base/dto/common/src/main/java/com/fp/bscoring/.svn/text-base/BscoringException.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -package com.fp.bscoring; - -import com.fp.common.exception.APPException; - -public class BscoringException extends APPException{ - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de BscoringException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public BscoringException(String pCode, String pMessage, Exception pCause, Object... pParameters) { - super(pCode, pMessage, pCause, pParameters); - } - /** - * Crea una instancia de BscoringException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - */ - public BscoringException(String pCode, String pMessage) { - super(pCode, pMessage); - } - /** - * Crea una instancia de BscoringException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - * @param parameters parametros a presentar con el mensaje - */ - public BscoringException(String pCode, String pMessage, Object... pParameters) { - super(pCode, pMessage, pParameters); - } - /** - * Crea una instancia de BscoringException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - * @param cause causa original de la excepcion - */ - public BscoringException(String pCode, String pMessage, Exception pCause) { - super(pCode, pMessage, pCause); - } -} diff --git a/base/dto/common/src/main/java/com/fp/builder/.svn/entries b/base/dto/common/src/main/java/com/fp/builder/.svn/entries deleted file mode 100644 index 0e65b03..0000000 --- a/base/dto/common/src/main/java/com/fp/builder/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/builder -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BuilderException.java -file - - - - -2022-07-28T03:40:34.495767Z -a93f0c13bfe745b01c03498be148293f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -744 - diff --git a/base/dto/common/src/main/java/com/fp/builder/.svn/text-base/BuilderException.java.svn-base b/base/dto/common/src/main/java/com/fp/builder/.svn/text-base/BuilderException.java.svn-base deleted file mode 100644 index efe3b21..0000000 --- a/base/dto/common/src/main/java/com/fp/builder/.svn/text-base/BuilderException.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.builder; - -import com.fp.common.exception.APPException; - -public class BuilderException extends APPException { - - public BuilderException(String pCode, String pMessage, Exception pCause, Object... pParameters) { - super(pCode, pMessage, pCause, pParameters); - } - - public BuilderException(String pCode, String pMessage) { - super(pCode, pMessage); - } - - public BuilderException(String pCode, String pMessage, Object... pParameters) { - super(pCode, pMessage, pParameters); - } - public BuilderException(String pCode, String pMessage, Exception pCause) { - super(pCode, pMessage, pCause); - } - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - -} diff --git a/base/dto/common/src/main/java/com/fp/common/.svn/entries b/base/dto/common/src/main/java/com/fp/common/.svn/entries deleted file mode 100644 index 5db820f..0000000 --- a/base/dto/common/src/main/java/com/fp/common/.svn/entries +++ /dev/null @@ -1,61 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common -svn://172.17.26.185/COMACO - - - -2014-09-17T05:52:10.767036Z -863 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -logger -dir - -files -dir - -soap -dir - -base64 -dir - -formula -dir - -messages -dir - -thread -dir - -fin -dir - -properties -dir - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/common/base64/.svn/entries b/base/dto/common/src/main/java/com/fp/common/base64/.svn/entries deleted file mode 100644 index bd3999e..0000000 --- a/base/dto/common/src/main/java/com/fp/common/base64/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/base64 -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Base64Input.java -file - - - - -2022-07-28T03:40:34.905769Z -fafe8573db1ece7c141c84a863c9fb00 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4137 - diff --git a/base/dto/common/src/main/java/com/fp/common/base64/.svn/text-base/Base64Input.java.svn-base b/base/dto/common/src/main/java/com/fp/common/base64/.svn/text-base/Base64Input.java.svn-base deleted file mode 100644 index 891d1ef..0000000 --- a/base/dto/common/src/main/java/com/fp/common/base64/.svn/text-base/Base64Input.java.svn-base +++ /dev/null @@ -1,171 +0,0 @@ -package com.fp.common.base64; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FilterInputStream; -import java.io.IOException; -import java.io.InputStream; - -import com.fp.common.logger.APPLogger; - -/** - * Clase que se encarga de - * @author Jorge Vaca. - * @version 2.1 - */ -public class Base64Input extends FilterInputStream { - private static final char[] BASE_64 = { 'A', 'B', 'C', 'D', 'E', 'F', 'G', 'H', 'I', 'J', 'K', 'L', 'M', 'N', 'O', - 'P', 'Q', 'R', 'S', 'T', 'U', 'V', 'W', 'X', 'Y', 'Z', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'i', 'j', - 'k', 'l', 'm', 'n', 'o', 'p', 'q', 'r', 's', 't', 'u', 'v', 'w', 'x', 'y', 'z', '0', '1', '2', '3', '4', - '5', '6', '7', '8', '9', '+', '/' }; - - /** - * Decodifica un array de bytes codificado. - * - * @param contenido Array de bytes - * @return array de bytes decodificado - */ - public static String decodificar(String contenido) { - ByteArrayOutputStream o = new ByteArrayOutputStream(); - ByteArrayInputStream i = new ByteArrayInputStream(contenido.replaceAll("\n", "").getBytes()); - Base64Input in = new Base64Input(i); - - try { - while (in.available() > 0) { - o.write(in.read()); - } - } catch (IOException e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return o.toString(); - } - - private int i = 0; - - private byte[] outbuf = new byte[3]; - - /** - * Crea un nuevo objeto Base64InputStream. - * - * @param in Stream de entrada - */ - public Base64Input(InputStream in) { - super(in); - } - - /** - * Esta es una implementacion especial que devuelve 1 si hay aun por leer y - * 0 si ya se acabo. - * - * @return 1 si hay aun bytes por leer o 0 si no. - * @throws IOException En caso de que no se haya abierto el inputstream - */ - @Override - public int available() throws IOException { - return (this.in.available() + this.i > 0) ? 1 : 0; - } - - private int byteDesdeChar() throws IOException { - char c = (char) super.read(); - - while ((c == '\n') && (super.available() > 0)) { - c = (char) super.read(); // se salta las lineas - } - - while ((c == '=') && (super.available() > 0)) { - c = (char) super.read(); // se salta los iguales del final - } - - for (int a = 0; a < BASE_64.length; a++) { - if (BASE_64[a] == c) { - this.i++; - - return a; - } - } - - return 0; - } - - /** - * Indica si se soporta marcas. - * - * @return false siempre - */ - @Override - public boolean markSupported() { - return false; - } - - /** - * Lee un caracter. - * - * @return int con el caracter - * @throws IOException en caso de error - */ - @Override - public int read() throws IOException { - if (this.i == 0) { - int a = this.byteDesdeChar(); - int b = this.byteDesdeChar(); - int c = this.byteDesdeChar(); - int d = this.byteDesdeChar(); - int j = this.i--; - - if (this.i > 0) { - this.outbuf[2 - --this.i] = (byte) (a << 2 | b >> 4); - } - - if (this.i > 0) { - this.outbuf[2 - --this.i] = (byte) (b << 4 | c >> 2); - } - - if (this.i > 0) { - this.outbuf[2 - --this.i] = (byte) (c << 6 | d >> 0); - } - - this.i += j - 1; - } - - return this.outbuf[2 - --this.i]; - } - - /** - * Lee un array de bytes. - * - * @param b Array - * @return entero con el resultado - * @throws IOException en caso de error - */ - @Override - public int read(byte[] b) throws IOException { - throw new IOException("Metodo no implementado"); - } - - /** - * Lee un array de caracteres con un offset y longitud. - * - * @param b Array - * @param off Offset - * @param len Longitud - * @return entero con el resultado - * @throws IOException en caso de error - */ - @Override - public int read(byte[] b, int off, int len) throws IOException { - throw new IOException("Metodo no implementado"); - } - - /** - * Se salta n bytes del stream. No implementado. - * - * @param n Numero de bytes - * @return long con el resultado - * @throws IOException en caso de error - */ - @Override - public long skip(long n) throws IOException { - throw new IOException("Metodo no implementado"); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/common/exception/.svn/entries deleted file mode 100644 index 831c168..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/entries +++ /dev/null @@ -1,436 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -APPException.java -file - - - - -2022-07-28T03:40:35.177770Z -6937b71061ffa80db2b8bc6426394d8a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4049 - -StaleObjectStateException.java -file - - - - -2022-07-28T03:40:35.178770Z -2e98e9933333e9252508b235d37a1315 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1005 - -PropertyValueException.java -file - - - - -2022-07-28T03:40:35.178770Z -4a3a2062b0febfa25f8fa99cfcfee0b1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -926 - -AbstractExceptionMessage.java -file - - - - -2022-07-28T03:40:35.178770Z -207f09856848a0f5dd5f8ae070acd278 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -525 - -CommonException.java -file - - - - -2022-07-28T03:40:35.178770Z -87c31f667c8a976813f1251838b0d2d9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1195 - -NonUniqueObjectException.java -file - - - - -2022-07-28T03:40:35.179770Z -5e7cd6fbae0631c4496ff74a7538d79a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1185 - -SavePointException.java -file - - - - -2022-07-28T03:40:35.179770Z -c327ce42230fa899592c0a0a5b0c2668 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1282 - -ExceptionManager.java -file - - - - -2022-07-28T03:40:35.179770Z -2bdf50d549389bb5c9fd6a6b81345137 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1863 - -SQLExceptionManager.java -file - - - - -2022-07-28T03:40:35.179770Z -82ee28329a2c3f9ef3744bdbb805edfb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10456 - -ExceptionHandler.java -file - - - - -2022-07-28T03:40:35.180770Z -3e7b445cad33a302f4480cd5111aeaaa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9025 - -IdentifierGenerationException.java -file - - - - -2022-07-28T03:40:35.180770Z -10aeb6af9f28c0b674e9db60b60c89fa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -951 - -ExceptionsProperties.java -file - - - - -2022-07-28T03:40:35.180770Z -42d3c1d7b5d8c552023539a277bed9b7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -935 - diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/APPException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/APPException.java.svn-base deleted file mode 100644 index ee9f1d4..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/APPException.java.svn-base +++ /dev/null @@ -1,135 +0,0 @@ -package com.fp.common.exception; - -import java.util.Locale; -import java.util.ResourceBundle; - -import javax.ejb.ApplicationException; - -import com.fp.common.helper.Constant; - -/** - * Clase generica del manejo de excepciones aplicativas. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ApplicationException(rollback = true) -public class APPException extends RuntimeException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Codigo de mensaje aplicativo. - */ - protected String code; - - /** - * Arreglo de parametros a mostrar en la aplicacion como numero de cuenta, tipo de saldo etc... - */ - protected Object[] parameters; - - /** - * Crea una instancia de excepcion aplicativa. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public APPException(String code, String message, Object... pParameters) { - super(code + ": " + message); - this.code = code; - parameters = pParameters; - } - - /** - * Crea una intancia de excepcion aplicativa. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo. - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public APPException(String code, String message, Exception pCause, Object... pParameters) { - super(code + ": " + message); - super.initCause(pCause); - this.code = code; - parameters = pParameters; - } - - /** - * Entrega el valor del codigo de mensaje aplicativo. - * - * @return String - */ - public String getCode() { - return code; - } - - /** - * Entrega el mensaje de la excepcion. - * - * @see java.lang.Throwable#getMessage() - * @return String - */ - @Override - public String getMessage() { - String message = this.getMessage(new Locale("es")); - return message; - } - - /** - * Retorna el mensaje de la excepcion. - * - * @param pLocale Codigo de Locale a utilizar para presentar el mensaje traducido. - * @return String - */ - public String getMessage(Locale pLocale) { - try { - ResourceBundle resource = ResourceBundle.getBundle("userMessages", pLocale); - String msg = resource.getString(code); - if (parameters != null) { - msg = Constant.formatMessage(msg, parameters); - } - return msg; - } catch (Exception e) { - - try { - String msg = super.getMessage() + " <*>"; - msg = Constant.formatMessage(msg, parameters); - return msg; - } catch (Exception e1) { - return super.getMessage() + " <*>"; - } - - } - } - - /** - * Cambia los parametros del mensaje por los de la excepcion. - * - * @param message - * @return - */ - public String getUserMessage(String language) { - String msg = ""; - try { - AbstractExceptionMessage m = (AbstractExceptionMessage) Class.forName("com.fp.general.exception.ExceptionMessage").newInstance(); - msg = m.getMessage(this.getCode(), language.toUpperCase()); - } catch (APPException e) { - msg = super.getMessage(); - } catch (Exception e) { - return "NO PUEDE OBTENER DESCRIPCION DE MENSAJE APLICATIVO EN TGENERESULT CODIGO " + this.getCode() + " IDIOMA " + language; - } - try { - if (parameters != null) { - msg = Constant.formatMessage(msg, parameters); - } - } catch (Exception e) { - // no tomar accion - } - return msg; - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/AbstractExceptionMessage.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/AbstractExceptionMessage.java.svn-base deleted file mode 100644 index 3c5d3df..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/AbstractExceptionMessage.java.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -package com.fp.common.exception; - -/** - * Clase encargada de entregar la descripcion de un mensaje aplicativo. - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class AbstractExceptionMessage { - - /** - * Entrega la descripcion de un mensaje aplicativo. - * - * @param aplicationcode Codigo de mensaje. - * @param language Idioma asociado al lenguaje. - * @return String - */ - public abstract String getMessage(String aplicationcode, String language) throws Exception; -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/CommonException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/CommonException.java.svn-base deleted file mode 100644 index ea96bf6..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/CommonException.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.common.exception; - -import javax.ejb.ApplicationException; - -/** - * Manejo de excepcion del paquete comun del core. - * @author Jorge Vaca. - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class CommonException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de CommonException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CommonException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de CommonException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CommonException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionHandler.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionHandler.java.svn-base deleted file mode 100644 index ba31fc3..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionHandler.java.svn-base +++ /dev/null @@ -1,269 +0,0 @@ -package com.fp.common.exception; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.lang.reflect.InvocationTargetException; -import java.sql.BatchUpdateException; -import java.sql.SQLException; -import java.util.Locale; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import javax.persistence.PersistenceException; - -import org.hibernate.exception.ConstraintViolationException; -import org.hibernate.exception.GenericJDBCException; - -import com.fp.common.logger.APPLogger; - -/** - * Clase encargada del manejo de excepciones - * - * @author Jorge Vaca - * @version 2.1 - */ -public class ExceptionHandler { - - /** - * Referencia a la excepcion presentanda. - */ - private final Throwable exception; - - /** - * Referencia a la causa de la excepcion. - */ - private Throwable cause; - - /** - * Codigo de lenguage - */ - private String language = "es"; - - /** - * Indica que es un mensaje aplicativo. - */ - private boolean appexception = false; - - /** - * Crea una Instancia de ExceptionHandler - * - * @param pException Excepcion por Manejar - */ - public ExceptionHandler(Throwable pException, String pLanguage) { - APPLogger.getLogger().warn(pException, pException); - this.exception = pException; - this.cause = this.exception.getCause(); - if (pException instanceof APPException) { - this.appexception = true; - } - while ((this.cause != null) && (this.cause.getCause() != null)) { - if ((pException instanceof InvocationTargetException) || (pException instanceof PersistenceException) - || (this.cause instanceof PersistenceException) || (this.cause instanceof InvocationTargetException) - || (pException instanceof RuntimeException)) { - if (this.cause instanceof PersistenceException) { - this.cause = this.cause.getCause(); - } - if ((this.cause != null) && (this.cause.getCause() != null)) { - this.cause = this.cause.getCause(); - } - if ((this.cause != null) && (this.cause instanceof ConstraintViolationException)) { - this.cause = this.cause.getCause(); - } - if ((this.cause != null) && (this.cause instanceof GenericJDBCException)) { - this.cause = this.cause.getCause(); - } - } else { - break; - } - if ((this.cause == null) || (this.cause.getCause() == null)) { - break; - } - } - if (pLanguage != null) { - this.language = pLanguage.toLowerCase(); - } - } - - /** - * Metodo que entrega un mensaje tecnico. - * - * @return String - */ - public String getTechnicalMessage() { - if (!(this.exception instanceof APPException)) { - return ""; - } - String message = this.exception.getMessage(); - StackTraceElement[] stack = this.exception.getStackTrace(); - if (this.cause != null) { - message = this.cause.getMessage(); - stack = this.cause.getStackTrace(); - } - for (StackTraceElement element : stack) { - if (element.getClassName().indexOf("com.fp") > -1) { - message += " " + element.getClassName() + " : " + element.getLineNumber(); - break; - } - } - return message; - } - - /** - * Metodo que entrega el StackTrace de la Excepcion. - * - * @return - */ - public String getStackTrace() { - try { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - StackTraceElement[] ele; - if (this.cause != null) { - // pw.println(this.cause.getMessage()); - ele = this.cause.getStackTrace(); - // this.cause.printStackTrace(pw); - } else { - // pw.println(this.exception.getMessage()); - ele = this.exception.getStackTrace(); - // this.exception.printStackTrace(pw); - } - String msg = this.getTechnicalMessage(); - if (msg.length() > 200) { - msg = msg.substring(0, 200); - } - pw.println(msg); - boolean first = true; - for (StackTraceElement element : ele) { - if (first) { - pw.println(element.getClassName() + "." + element.getMethodName() + ":" + element.getLineNumber()); - first = false; - continue; - } - if (element.getClassName().indexOf("com.fp") > -1) { - pw.println(" " + element.getClassName() + "." + element.getMethodName() + ":" + element.getLineNumber()); - } - } - - String data = sw.toString(); - pw.close(); - return data; - } catch (Exception e) { - return null; - } - } - - /** - * Metodo que entrega el mensaje de usuario. - * - * @return String - */ - public String getUserMessage() { - String message = this.exception.getMessage(); - Locale locale = new Locale(this.language, Locale.getDefault().getCountry(), this.getVariant()); - boolean exist = false; - if (this.exception instanceof APPException) { - message = ((APPException) this.exception).getUserMessage(this.language); - exist = true; - } - if (this.cause instanceof APPException) { - message = ((APPException) this.cause).getUserMessage(this.language); - exist = true; - } - if (!exist) { - ExceptionManager man = this.getExceptionManager(); - if (man == null) { - try { - ResourceBundle bdl = ResourceBundle.getBundle("userMessages", locale); - message = bdl.getString(this.exception.getClass().getName()); - } catch (MissingResourceException e) { - message = this.exception.getMessage(); - } - } else { - man.setLocale(locale); - message = man.getUserMessage(this.cause != null ? this.cause : this.exception); - } - } - return message; - } - - /** - * Metodo que entrega la clase que se encarga del manejo de la excepcion. - * - * @return ExceptionManager - */ - private ExceptionManager getExceptionManager() { - try { - ExceptionsProperties param = ExceptionsProperties.getInstance(); - String className = ""; - if (this.cause == null) { - className = param.getValue(this.exception.getClass().getName()); - } else { - className = param.getValue(this.cause.getClass().getName()); - } - return (ExceptionManager) Class.forName(className).newInstance(); - } catch (Exception e) { - return null; - } - } - - /** - * Metodo que entrega el codigo de la excepcion. - * - * @return String - */ - public String getCode() { - String code = this.exception.getClass().getName(); - if (this.cause != null) { - code = this.cause.getClass().getName(); - if ((this.cause instanceof BatchUpdateException) || (this.cause instanceof SQLException)) { - Integer i = ((SQLException) this.cause).getErrorCode(); - code = i.toString(); - if (code.compareTo("0") == 0) { - // Si no puede obtener una coneccion de base devuelve el codigo de error 0 - code = "99999"; - } - } - } else if (this.exception instanceof SQLException) { - Integer i = ((SQLException) this.exception).getErrorCode(); - code = i.toString(); - if (code.compareTo("0") == 0) { - // Si no puede obtener una coneccion de base devuelve el codigo de error 0 - code = "99999"; - } - } - if (this.exception instanceof APPException) { - code = ((APPException) this.exception).getCode(); - } - if (this.cause instanceof APPException) { - code = ((APPException) this.cause).getCode(); - } - return code; - } - - /** - * Metodo que entrega la variante del idioma. - * - * @return String - */ - private String getVariant() { - String code = ""; - for (int i = 0; i < this.getCode().length(); i++) { - if (Character.isDigit(this.getCode().charAt(i))) { - break; - } else { - code += this.getCode().charAt(i); - } - } - return code; - } - - /** - * Entrega el valor de: ExceptionHandler.java - * - * @return boolean - */ - public boolean isAppexception() { - return this.appexception; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionManager.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionManager.java.svn-base deleted file mode 100644 index 1043da9..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionManager.java.svn-base +++ /dev/null @@ -1,73 +0,0 @@ -package com.fp.common.exception; - -import java.text.MessageFormat; -import java.util.Locale; -import java.util.ResourceBundle; - -/** - * Clase que se encarga del manejo de excepciones. - * @author Jorge Vaca. - * @version 2.1 - */ -public abstract class ExceptionManager { - - /**Bundle que maneja los texto de error por idioma, locale*/ - private ResourceBundle messages; - /**Locale con el cual se obtiene el bundle.*/ - private Locale locale; - - /** - * Metodoq ue entrega el mensaje de usuario dada la Excepcion. - * @param pException Excepcion utilizada para obtener el mensaje de usuario. - * @return String - */ - abstract public String getUserMessage(Throwable pException); - - /** - * Metodo que entrega el codigo de excepcion. - * @param pException Excepcion utilizada para obtener el codigo de excepcion. - * @return String - */ - abstract public String getCode(Throwable pException); - - /** - * Metodo que fija el Locale, que sirve para obtener el bundel que maneja los textos de la excepcion. - * @param pLocale - */ - public void setLocale(Locale pLocale) { - locale = pLocale; - messages = ResourceBundle.getBundle("userMessages", locale); - } - - - /** - * Entrega el mensaje del bundle. - * @param pKey Codigo de mensaje del bundle. - * @return - */ - protected String getMessage(String pKey) { - try { - return messages.getString(pKey); - } catch (Throwable e) { - return null; - } - } - - /** - * Entrega el mensaje del bundle. - * @param pKey Codigo de mensaje del bundle. - * @param pParameters Parametros con los que se cpmpleta el mensaje definido en el bundle. - * @return String - */ - protected String getMessage(String pKey, Object... pParameters) { - try { - String msg = this.getMessage(pKey); - if(msg == null){ - msg = pKey; - } - return MessageFormat.format(msg, pParameters); - } catch (Throwable e) { - return null; - } - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionsProperties.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionsProperties.java.svn-base deleted file mode 100644 index f431c91..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/ExceptionsProperties.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.common.exception; - -import java.io.IOException; - -import com.fp.common.properties.PropertiesHandler; - - - -/** - * Clase que se encarga del manejo del archivo de propiedades common. - * @author Jorge Vaca. - * @version 2.1 - */ -public class ExceptionsProperties extends PropertiesHandler { - /** - * Almacena una instancia del tipo ExceptionsProperties en el singleton. - */ - private static ExceptionsProperties instance=null; - /** - * Crea una instancia de CommonProperties. - */ - private ExceptionsProperties() throws IOException,Exception{ - super("exceptions"); - } - /** - * Crea y entrega una instancia de ExceptionsProperties. - * @return ExceptionsProperties - * @throws IOException - */ - public static ExceptionsProperties getInstance() throws IOException,Exception{ - synchronized(ExceptionsProperties.class){ - if(instance==null){ - instance=new ExceptionsProperties(); - } - } - return instance; - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/IdentifierGenerationException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/IdentifierGenerationException.java.svn-base deleted file mode 100644 index 1fa3c37..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/IdentifierGenerationException.java.svn-base +++ /dev/null @@ -1,34 +0,0 @@ -package com.fp.common.exception; - -import com.fp.common.logger.APPLogger; - -/** - * Clase que maneja execpcion de campos de clave primaria requeridos. - * @author Jorge Vaca - * @version 2.1 - */ -public class IdentifierGenerationException extends ExceptionManager{ - - /** - * Metodo que entrega el mensaje de usuario de la excepcion. - */ - public String getUserMessage(Throwable pException) { - try{ - String data=pException.getMessage(); - data=data.substring(data.indexOf(':')+1, data.length()); - data=data.substring(data.indexOf('.')+1); - String[]param=data.split("\\."); - return this.getMessage("Campos de clave primaria de la tabla [{0}] no enviados.",param[param.length -1]); - }catch(Exception e){ - APPLogger.getLogger().warn(e); - } - return pException.getLocalizedMessage(); - } - - /** - * Metodo que entrega el codigo de la excepcion. - */ - public String getCode(Throwable pException) { - return pException.getClass().getName(); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/NonUniqueObjectException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/NonUniqueObjectException.java.svn-base deleted file mode 100644 index b5b7350..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/NonUniqueObjectException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.common.exception; - -import com.fp.common.logger.APPLogger; - -/** - * Clase que se encarga del manejo de excepcion cuando se envia al entity manager mas de un objeto con el mismo pk. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class NonUniqueObjectException extends ExceptionManager { - - /** - * Metodo que entrega el mensaje de usuario. - */ - @Override - public String getUserMessage(Throwable pException) { - try { - String data = pException.getMessage(); - data = data.substring(data.indexOf(':') + 1, data.length()); - data = data.substring(data.indexOf('.') + 1); - data = data.substring(0, data.indexOf('#')); - String[] param = data.split("\\."); - data = param[param.length - 1]; - return this.getMessage("NonUniqueObjectException", data); - } catch (Exception e) { - APPLogger.getLogger().warn(e); - } - return pException.getLocalizedMessage(); - } - - /** - * Metodo que entrega el codigo de excepcion. - */ - @Override - public String getCode(Throwable pException) { - return pException.getClass().getName(); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/PropertyValueException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/PropertyValueException.java.svn-base deleted file mode 100644 index c9d65e1..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/PropertyValueException.java.svn-base +++ /dev/null @@ -1,35 +0,0 @@ -package com.fp.common.exception; - -import com.fp.common.logger.APPLogger; - -/** - * Clase que maneja exepcion de valores requeridos en un bean. - * @author Jorge Vaca - * @version 2.1 - */ -public class PropertyValueException extends ExceptionManager{ - - /** - * Metodo que entrega el mensaje de usuario de la excepcion. - */ - public String getUserMessage(Throwable pException) { - try{ - String data=pException.getMessage(); - data=data.substring(data.indexOf(':')+1, data.length()); - data=data.substring(data.indexOf('.')+1); - String[]param=data.split("\\."); - return this.getMessage("PropertyValueException",param[param.length -2],param[param.length -1]); - }catch(Exception e){ - APPLogger.getLogger().warn(e); - } - return pException.getLocalizedMessage(); - } - - /** - * Metodo que entrega el codigo de la excepcion. - */ - public String getCode(Throwable pException) { - return pException.getClass().getName(); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SQLExceptionManager.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SQLExceptionManager.java.svn-base deleted file mode 100644 index ad60154..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SQLExceptionManager.java.svn-base +++ /dev/null @@ -1,266 +0,0 @@ -package com.fp.common.exception; - -import java.sql.SQLException; - -import com.fp.common.helper.FkException; -import com.fp.common.logger.APPLogger; - -/** - * Clase que se encarga del manejo de excepciones de base de datos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class SQLExceptionManager extends ExceptionManager { - - /** - * campos requeridos - */ - private static final int NOT_NULL = 1400; - /** - * pk duplicado - */ - private static final int UNIQUE = 1; - /** - * pk duplicado - */ - private static final int UNIQUE_SYBASE = 2601; - /** - * pk duplicado - */ - private static final int UNIQUE_INFORM = -239; - /** - * pk duplicado - */ - private static final int UNIQUE_INFORMIX = -268; - /** - * pk duplicado - */ - private static final int UNIQUE_ID = -100; - /** - * pk duplicado - */ - private static final int UNIQUE_IDINF = -346; - /** - * Error cuando se agrega un registro en Oracle y esta tiene referencia en - * una tabla padre y no se encuentra definida - */ - private static final int FKOracle = 2291; - /** - * Error cuando se agrega un registro en Sybase y esta tiene referencia en - * una tabla padre y no se encuentra definida - */ - private static final int FKSybase = 546; - /** - * Error cuando se elimina un registro en oracle y este tiene referencia en - * una tabla hija - */ - private static final int FK1Oracle = 2292; - /** - * Error cuando se elimina un registro en sybase y este tiene referencia en - * una tabla hija - */ - private static final int FK1Sybase = 547; - /** - * Error cuando se elimina un registro en informix y este tiene referencia en - * una tabla hija - */ - private static final int FK1Informix = -692; - /** - * Error de referencia FK - */ - private static final int LOCKSYBASE = 12205; - /** - * Error en oracle cuando se ingresa en un campo numerico mayor a la - * longitud permitida - */ - private static final int VALUELARGERNUMBER = 1438; - /** - * Error en informix cuando se ingresa en un campo numerico mayor a la - * longitud permitida - */ - private static final int LARGENUBER_INFORM= -1226; - /** - * Error en oracle cuando se ingresa en un campo de texto mayor a la - * longitud permitida - */ - private static final int VALUELARGERSTRING = 12899; - - /** - * Metodo que entrega el mensaje de usuario. - * - * @param pException - * @return - */ - @Override - public String getUserMessage(Throwable pException) { - SQLException exception; - try { - exception = (SQLException) pException; - } catch (Exception e) { - return pException.getLocalizedMessage(); - } - try { - if (exception.getErrorCode() == NOT_NULL) { - String data = exception.getMessage(); - data = data.substring(data.indexOf('(') + 1, data.indexOf(')')).replaceAll("\"", ""); - data = data.substring(data.indexOf('.') + 1); - String[] param = data.split("\\."); - return super.getMessage("sql-not-null", param[0], param[1]); - } - if (exception.getErrorCode() == UNIQUE) { - String data = exception.getMessage(); - data = data.substring(data.indexOf('.') + 1, data.indexOf(')')); - return super.getMessage("sql.unique", data); - } - if (exception.getErrorCode() == UNIQUE_INFORM || exception.getErrorCode() == UNIQUE_INFORMIX) { - String data = exception.getMessage(); - data = data.substring(data.indexOf(':') + 1, data.indexOf(')')); - return super.getMessage("sql.unique", data); - } - if (exception.getErrorCode() == UNIQUE_SYBASE) { - //"Attempt to insert duplicate key row in object 'TGENECATALOG' with unique index 'PKTGENECATALOG' " - String data = exception.getMessage(); - data = data.substring(data.indexOf("'") + 1, data.indexOf("' ")); - return super.getMessage("sql.unique", data); - } - if (exception.getErrorCode() == UNIQUE_ID) { - //"Attempt to insert duplicate key row in object 'TGENECATALOG' with unique index 'PKTGENECATALOG' " - String data = exception.getMessage(); - data = data.substring(data.indexOf(":") + 1, data.indexOf(".")); - return super.getMessage("sql.uniqueID", data); - } - if (exception.getErrorCode()==UNIQUE_IDINF) { - String data = exception.getMessage(); - return super.getMessage("sql.uniqueIDINF"); - } - if (exception.getErrorCode() == FKOracle || exception.getErrorCode() == FKSybase) { - String data = this.getFk(exception); - if (data == null) { - return exception.getMessage(); - } - return data; - } - if (exception.getErrorCode() == FK1Oracle || exception.getErrorCode() == FK1Sybase) { - String data = this.getFk1(exception); - if (data == null) { - return exception.getMessage(); - } - return data; - } - if (exception.getErrorCode()==FK1Informix) { - String data = exception.getMessage(); - data = data.substring(data.indexOf(".") + 1, data.indexOf(")")); - return super.getMessage("fk.informix", data); - } - if (exception.getErrorCode() == LOCKSYBASE) { - String data = this.getFk(exception); - if (data == null) { - return super.getMessage("lock", data); - } - return data; - } - if (exception.getErrorCode() == VALUELARGERNUMBER) { - return super.getMessage("valuelarger"); - } - if (exception.getErrorCode() == LARGENUBER_INFORM) { - return super.getMessage("valuelarger"); - } - if (exception.getErrorCode() == VALUELARGERSTRING) { - String mensaje = exception.getMessage(); - int a = mensaje.indexOf("\""); - mensaje = mensaje.substring(a, mensaje.length()); - mensaje = mensaje.replaceAll("\"", ""); - String[] codes = mensaje.split("\\."); - if (codes.length == 3) { - String campo = codes[2].substring(0, codes[2].indexOf("(")).trim(); - String longitud = codes[2].substring(codes[2].indexOf("("), codes[2].length()); - longitud = longitud.replace("actual", "Longitud ingresada"); - longitud = longitud.replace("maximum", "Longitud permitida"); - return super.getMessage("valueLargerWithValue", codes[1], campo, longitud); - } else { - return super.getMessage("valuelarger"); - } - } - } catch (Exception e) { - APPLogger.getLogger().warn(e); - } - return exception.getLocalizedMessage(); - } - - /** - * Entrega el codigo de la excepcion. - * - * @param pException - * @return - */ - @Override - public String getCode(Throwable pException) { - SQLException exception = (SQLException) pException; - return "SQL-" + exception.getErrorCode(); - } - - /** - * Metodo que entrega el mensaje de la exception de FK - * - * @param exception Datos de SQLException - * @return String - */ - private String getFk(SQLException exception) { - try { - String data = exception.getMessage(); - int initialposition = data.indexOf('(') + 1; - int endposition = data.indexOf(')'); - if (initialposition > 0 && endposition > 0) { - data = data.substring(initialposition, endposition).replaceAll("\"", ""); - data = data.substring(data.indexOf('.') + 1); - FkException fk = (FkException) Class.forName("com.fp.persistence.commondb.helper.Fkconstraint").newInstance(); - String[] d = fk.getFkData(data); - return super.getMessage("fk", d[1], d[0]); - } else if (data.indexOf(", table name = '") > 0) { - data = data.substring(data.indexOf(", table name = '") + 16, data.length()); - String patherTable = data.substring(0, data.indexOf("'")); - data = data.substring(data.indexOf(", constraint name = '") + 21, data.length()); - String constraintName = data.substring(0, data.indexOf("'")); - return super.getMessage("fkg", patherTable, constraintName); - } else { - return null; - } - } catch (Exception e) { - return null; - } - - } - - /** - * Metodo que entrega el mensaje de la exception de FK - * - * @param exception Datos de SQLException - * @return String - */ - private String getFk1(SQLException exception) { - try { - String data = exception.getMessage(); - int initialposition = data.indexOf('(') + 1; - int endposition = data.indexOf(')'); - if (initialposition > 0 && endposition > 0) { - data = data.substring(initialposition, endposition).replaceAll("\"", ""); - data = data.substring(data.indexOf('.') + 1); - FkException fk = (FkException) Class.forName("com.fp.persistence.commondb.helper.Fkconstraint").newInstance(); - String[] d = fk.getFkData(data); - return super.getMessage("fk1", d[1], d[0]); - } else if (data.indexOf(", table name = '") > 0) { - data = data.substring(data.indexOf(", table name = '") + 16, data.length()); - String patherTable = data.substring(0, data.indexOf("'")); - data = data.substring(data.indexOf(", constraint name = '") + 21, data.length()); - String constraintName = data.substring(0, data.indexOf("'")); - return super.getMessage("fk1g", patherTable, constraintName); - } else { - return null; - } - } catch (Exception e) { - return null; - } - - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SavePointException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SavePointException.java.svn-base deleted file mode 100644 index 11b7a2c..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/SavePointException.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.common.exception; - -/** - * Clase que se encarga del manejo de excepcion que interrumpe la ejecucion de componentes de negocio y graba la transaccion. - * @author Jorge Vaca - * @version 2.1 - */ -public class SavePointException extends APPException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de SavePointException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public SavePointException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de SavePointException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public SavePointException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/StaleObjectStateException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/StaleObjectStateException.java.svn-base deleted file mode 100644 index 6675f39..0000000 --- a/base/dto/common/src/main/java/com/fp/common/exception/.svn/text-base/StaleObjectStateException.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.common.exception; - -import com.fp.common.logger.APPLogger; - -/** - * Clase que se encarga del manejo de excepcion cuando el registro es modificado en otra session de base - * de datos. - * @author Jorge Vaca - * @version 2.1 - */ -public class StaleObjectStateException extends ExceptionManager{ - - /** - * Metodo que entrega el mensaje de usuario. - */ - public String getUserMessage(Throwable pException) { - try{ - String data=pException.getMessage(); - data=data.substring(data.indexOf(':')+1, data.length()); - data=data.substring(data.indexOf('.')+1); - data=data.substring(0,data.indexOf('#')); - String[]param=data.split("\\."); - data=param[param.length-1]; - return this.getMessage("StaleObjectStateException", data); - }catch(Exception e){ - APPLogger.getLogger().warn(e); - } - return pException.getLocalizedMessage(); - } - - /** - * Metodo que entrega el codigo de excepcion. - */ - public String getCode(Throwable pException) { - return pException.getClass().getName(); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/files/.svn/entries b/base/dto/common/src/main/java/com/fp/common/files/.svn/entries deleted file mode 100644 index 425f17b..0000000 --- a/base/dto/common/src/main/java/com/fp/common/files/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/files -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FileIterator.java -file - - - - -2022-07-28T03:40:34.834769Z -06e1b3b4af1c19caa692c2fb69253866 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3669 - -StreamHelper.java -file - - - - -2022-07-28T03:40:34.834769Z -430c849f3ebdca52797122b7e37c76b3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6112 - -record -dir - diff --git a/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/FileIterator.java.svn-base b/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/FileIterator.java.svn-base deleted file mode 100644 index 1f5852f..0000000 --- a/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/FileIterator.java.svn-base +++ /dev/null @@ -1,128 +0,0 @@ -package com.fp.common.files; - -import java.io.BufferedInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.util.Iterator; - -import com.fp.ach.exception.AchException; -import com.fp.common.logger.APPLogger; - -/** - * Clase que se encarga de la lectura de los archivos Nacha - * Cada Iterable contiene 88 registros cada uno de los cuales esta compuesto por 94 bytes - * @author scastillo - */ -public class FileIterator implements Iterable { - - /* - * Tamanio de bytes de lectura - * Se multiplica los 94 bytes que contiene cada registro por el numero - * de lecturas que se desea efectuar en nuestro caso 88 registros - * LLegan caracteres especiales de fin de registro \r\n son 96 bytes por registro - */ - private int size = 8448; //antes 8272 - /** - * Variable que contiene los bytes del archivo - */ - BufferedInputStream bufferedInputStream = null; - /** - * Variable que contiene los bytes de los 88 registros - */ - byte[] buffer = null; - /* - * Variable que indica el numero de registros leidos - */ - int bytesRead; - /* - * Variable que contiene el contador de registros - */ - int count; - - /** - * Constructor por defecto de la clase - * @param fileName Nombre del archivo a procesar - * @throws Exception - */ - public FileIterator(String fileName, int sizebuffer) throws Exception { - size = sizebuffer; - buffer = new byte[size]; - bytesRead = 0; - count = 0; - try { - bufferedInputStream = new BufferedInputStream(new FileInputStream(fileName)); - } catch (FileNotFoundException ex) { - throw new AchException("ACH-0001", "NO SE PUEDE LEER EL ARCHIVO {0}", fileName); - } - } - - /** - * Interator de la clase NachaFileIterator - * @return - */ - public Iterator iterator() { - return new NFIterator(); - } - - /** - * Metodo que se encarga de cerrar el archivo - * @throws Exception - */ - public void closeBuffer() { - if (bufferedInputStream != null) { - try { - bufferedInputStream.close(); - } catch (IOException ex) { - APPLogger.getLogger().error("No se pudo cerrar el buffer", ex); - } - } - } - - /** - * Clase privada que se encarga de realizar el Interator - */ - private class NFIterator implements Iterator { - /* - * Variable que contiene los 88 registros - */ - - private String currentLine; - - /** - * Metodo que recorre los los 88 registros - * @return - */ - public boolean hasNext() { - try { - if ((bytesRead = bufferedInputStream.read(buffer)) != -1) { - currentLine = new String(buffer, 0, bytesRead, "ISO-8859-1"); - count++; - } else { - currentLine = null; - closeBuffer(); - } - } catch (IOException e) { - currentLine = null; - closeBuffer(); - } - - return currentLine != null; - } - - /** - * Metodo que devuelve los siguientes 88 registros - * @return - */ - public String next() { - return currentLine; - } - - /** - * Metodo que se jecuta al elimnar un registro - * NO HACE NADA - */ - public void remove() { - } - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/StreamHelper.java.svn-base b/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/StreamHelper.java.svn-base deleted file mode 100644 index 15a77ba..0000000 --- a/base/dto/common/src/main/java/com/fp/common/files/.svn/text-base/StreamHelper.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.common.files; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.FileInputStream; -import java.io.FileOutputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.ObjectInputStream; -import java.io.ObjectOutputStream; -import java.util.zip.DataFormatException; -import java.util.zip.Deflater; -import java.util.zip.DeflaterOutputStream; -import java.util.zip.Inflater; -import java.util.zip.InflaterInputStream; - -import org.apache.velocity.exception.ResourceNotFoundException; - -/** - * Clase utilitaria que se encarga del manejo de streams. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class StreamHelper { - public static void serialize(Object pData, String pName) throws IOException { - FileOutputStream sw = new FileOutputStream("/log/" + pName + ".rq"); - ObjectOutputStream oo = new ObjectOutputStream(sw); - oo.writeObject(pData); - oo.close(); - } - - public static String readResource(String pResource) throws Exception { - InputStream in = String.class.getResourceAsStream(pResource); - try { - if (in == null) { - throw new ResourceNotFoundException(pResource); - } - return StreamHelper.readStream(in); - } finally { - if (in != null) { - in.close(); - } - } - } - - public static byte[] objectToBytes(Object pData) throws IOException { - ByteArrayOutputStream sw = new ByteArrayOutputStream(); - ObjectOutputStream oo = new ObjectOutputStream(sw); - oo.writeObject(pData); - oo.close(); - return sw.toByteArray(); - } - - public static Object bytesToObject(byte[] pData) throws IOException, ClassNotFoundException { - ByteArrayInputStream sw = new ByteArrayInputStream(pData); - ObjectInputStream oo = new ObjectInputStream(sw); - Object data = oo.readObject(); - oo.close(); - return data; - } - - public static Object deserialize(String pName) throws IOException, ClassNotFoundException { - FileInputStream sw = new FileInputStream("/log/" + pName + ".rq"); - ObjectInputStream oo = new ObjectInputStream(sw); - Object data = oo.readObject(); - oo.close(); - return data; - } - - public static String readFile(String pPath) throws IOException { - FileInputStream fin = new FileInputStream(pPath); - String data = StreamHelper.readStream(fin); - fin.close(); - return data; - } - - public static void saveFile(String pPath, byte[] pContent) throws IOException { - FileOutputStream fout = new FileOutputStream(pPath); - fout.write(pContent); - fout.close(); - } - - public static String readStream(InputStream pIn) throws IOException { - byte b[] = new byte[9999]; - int car = 0; - String data = ""; - do { - car = pIn.read(b); - if (car > 0) { - data += new String(b, 0, car); - } - } while (car > 0); - return data; - } - - public static void writeFile(String pPath, String pData) throws IOException { - FileOutputStream fos = new FileOutputStream(pPath); - fos.write(pData.getBytes()); - fos.close(); - } - - public static byte[] compress64k(byte[] pData) throws IOException { - byte[] output = new byte[65536]; - Deflater compresser = new Deflater(); - compresser.setInput(pData); - compresser.finish(); - int c = compresser.deflate(output); - ByteArrayInputStream by = new ByteArrayInputStream(output, 0, c); - byte b[] = StreamHelper.streamToBytes(by); - by.close(); - return b; - } - - public static byte[] unCompress64k(byte[] pData) throws IOException, DataFormatException { - Inflater decompresser = new Inflater(); - decompresser.setInput(pData, 0, pData.length); - byte[] result = new byte[65536]; - int resultLength = decompresser.inflate(result); - decompresser.end(); - ByteArrayInputStream by = new ByteArrayInputStream(result, 0, resultLength); - byte b[] = StreamHelper.streamToBytes(by); - by.close(); - return b; - } - - public static byte[] compress(byte[] pData) throws IOException { - ByteArrayOutputStream bout = new ByteArrayOutputStream(); - DeflaterOutputStream dout = new DeflaterOutputStream(bout); - dout.write(pData); - dout.close(); - byte b[] = bout.toByteArray(); - return b; - } - - public static byte[] unCompress(byte[] pData) throws IOException { - ByteArrayInputStream bin = new ByteArrayInputStream(pData); - InflaterInputStream din = new InflaterInputStream(bin); - byte b[] = StreamHelper.streamToBytes(din); - din.close(); - - return b; - } - - public static byte[] streamToBytes(InputStream pData) throws IOException { - ByteArrayOutputStream by = new ByteArrayOutputStream(); - byte b[] = new byte[9999]; - int car = 0; - do { - car = pData.read(b); - if (car > 0) { - by.write(b, 0, car); - } - } while (car > 0); - b = by.toByteArray(); - by.close(); - return b; - } - - public static byte[] compress(String pData) throws IOException { - return StreamHelper.compress(pData.getBytes()); - } - - public static byte[] compressObject(Object pData) throws IOException { - return StreamHelper.compress(StreamHelper.objectToBytes(pData)); - } - - public static String unCompressToString(byte[] pData) throws IOException { - byte[] b = StreamHelper.unCompress(pData); - return new String(b); - } - - public static Object unCompressToObject(byte[] pData) throws IOException, ClassNotFoundException { - byte[] b = StreamHelper.unCompress(pData); - return StreamHelper.bytesToObject(b); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/files/record/.svn/entries b/base/dto/common/src/main/java/com/fp/common/files/record/.svn/entries deleted file mode 100644 index 42d22f8..0000000 --- a/base/dto/common/src/main/java/com/fp/common/files/record/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/files/record -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RecordIterator.java -file - - - - -2022-07-28T03:40:34.810769Z -3b135162902e23bfeacbf4fe31b6852a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2155 - diff --git a/base/dto/common/src/main/java/com/fp/common/files/record/.svn/text-base/RecordIterator.java.svn-base b/base/dto/common/src/main/java/com/fp/common/files/record/.svn/text-base/RecordIterator.java.svn-base deleted file mode 100644 index 6811eca..0000000 --- a/base/dto/common/src/main/java/com/fp/common/files/record/.svn/text-base/RecordIterator.java.svn-base +++ /dev/null @@ -1,85 +0,0 @@ -package com.fp.common.files.record; - -import java.util.Iterator; - - -/** - * Clase que se encarga de la lectura de los bytes de cada registro - * Cada Iterable que contiene los 94 bytes del registro - * @author scastillo - */ -public class RecordIterator implements Iterable { - /* - * Variable que contiene la posicion inicial para armar los 94 bytes - */ - - int startPosition = 0; - /** - * Variable que contine los 88 registros - */ - String inString; - /* - * Variable que indica el tamao de cada registro - */ - private int size = 96; - - /** - * Constructor de la clase - * @param inString - */ - public RecordIterator(String inString,int linesize) { - size = linesize; - this.inString = inString; - } - - /** - * Metodo que reccore los registros - */ - public Iterator iterator() { - return new RIterator(); - } - - /** - * Clase privada que se encarga de realizar el Interator - */ - private class RIterator implements Iterator { - /* - * Variable que contiene los 94 bytes del registro nacha - */ - - String register; - - public boolean hasNext() { - boolean ret = false; - int endPosition = startPosition + size; - if (startPosition == inString.length()) { - return false; - } - if (endPosition > inString.length()) { - endPosition = inString.length(); - } - register = inString.substring(startPosition, endPosition); - if (startPosition < inString.length()) { - startPosition += size; - ret = true; - } else { - ret = false; - } - return ret; - } - - /** - * Metodo que devuelve un registro de 94 bytes - * @return - */ - public String next() { - return register; - } - - /** - * Metodo que se ejecuta al eliminar un registro - */ - public void remove() { - } - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/fin/.svn/entries b/base/dto/common/src/main/java/com/fp/common/fin/.svn/entries deleted file mode 100644 index d931116..0000000 --- a/base/dto/common/src/main/java/com/fp/common/fin/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/fin -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MessageGenerator.java -file - - - - -2022-07-28T03:40:35.064770Z -8fe47d9440415c602537118a1603375c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1504 - diff --git a/base/dto/common/src/main/java/com/fp/common/fin/.svn/text-base/MessageGenerator.java.svn-base b/base/dto/common/src/main/java/com/fp/common/fin/.svn/text-base/MessageGenerator.java.svn-base deleted file mode 100644 index 5060136..0000000 --- a/base/dto/common/src/main/java/com/fp/common/fin/.svn/text-base/MessageGenerator.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.common.fin; - -import java.text.DecimalFormat; -import java.text.SimpleDateFormat; - -/** - * Clase que se encarga de generar un numero de mensaje para procesar transacciones financieras. - * @author Jorge Vaca - * @version 2.1 - */ -public class MessageGenerator { - /*Almacena una instancia de MessageGenerator.*/ - public static MessageGenerator cache; - - /*Monitor para sincronizar la obtencion del numero de mensaje.*/ - private boolean monitor=false; - - /*Formato para obtener la fecha del servidor de aplicaciones.*/ - private SimpleDateFormat sdf=new SimpleDateFormat("yyyyMMMdd-HH:mm:ss.SSSSSS"); - - /** - * Entrega una instancia de MessageGenerator. - * @return MessageGenerator - * @throws Exception - */ - public static MessageGenerator getInstance() throws Exception { - synchronized (MessageGenerator.class) { - if(cache == null){ - cache = new MessageGenerator(); - } - } - return cache; - } - - /** - * Entrega un numero de mensaje dado un prefijo. - * @param pPrefix Prefijo del numero de mensaje. - * @return String - * @throws Exception - */ - public synchronized String generateId(String pPrefix) throws Exception{ - while(monitor){ - wait(); - } - try{ - monitor=true; - Double d = Math.floor((Math.random() * 100000)); - DecimalFormat df = new DecimalFormat("00000"); - return pPrefix+"-"+sdf.format(System.currentTimeMillis()) +"-"+ df.format(d); - }finally{ - monitor=false; - notifyAll(); - } - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/formula/.svn/entries b/base/dto/common/src/main/java/com/fp/common/formula/.svn/entries deleted file mode 100644 index 4527e26..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/formula -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -functions -dir - -FormulaEvaluator.java -file - - - - -2022-07-28T03:40:34.969769Z -bbb24690fa21be234689d9b4f2dd301b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2417 - -AbstractFunction.java -file - - - - -2022-07-28T03:40:34.969769Z -93424cea0dda9f8e8359976dbc85e8c5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2806 - diff --git a/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/AbstractFunction.java.svn-base b/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/AbstractFunction.java.svn-base deleted file mode 100644 index 6af0643..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/AbstractFunction.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.common.formula; - -import java.math.BigDecimal; -import java.sql.Date; -import java.util.Stack; - -import org.apache.log4j.Logger; -import org.nfunk.jep.ParseException; -import org.nfunk.jep.function.PostfixMathCommand; - -import com.fp.common.helper.BeanManager; - -public abstract class AbstractFunction extends PostfixMathCommand { - private static final Logger LOG = Logger.getLogger(AbstractFunction.class); - - public abstract Object eval() throws Exception; - - protected Stack stack; - - @SuppressWarnings("unchecked") - @Override - public void run(Stack pStack) throws ParseException { - this.stack = pStack; - this.checkStack(pStack); - try { - pStack.push(this.eval()); - } catch (Exception e) { - AbstractFunction.LOG.warn(e.getMessage(), e); - throw new ParseException(e.getMessage()); - } - } - - protected Object nextObjectParameter() { - // return this.stack.remove(0); - return this.stack.pop(); - } - - protected Object getConstant(String pName) { - return FormulaEvaluator.getRunning().getConstant(pName); - } - - protected String getStringConstant(String pName) throws Exception { - String val = (String) FormulaEvaluator.getRunning().getConstant(pName); - if (val == null) { - throw new ParseException("Constante no especificada " + pName); - } - return val; - } - - protected BigDecimal getBigDecimalConstant(String pName) throws Exception { - Object val = FormulaEvaluator.getRunning().getConstant(pName); - if (val == null) { - throw new ParseException("Constante no especificada " + pName); - } - if (val instanceof Number) { - return new BigDecimal(val.toString()); - } - throw new ParseException("Valor no Valido"); - } - - protected BigDecimal nextBigDecimalParameter() throws Exception { - Object param = this.nextObjectParameter(); - if (param instanceof Number) { - return new BigDecimal(param.toString()); - } - if (param instanceof String) { - String constant = (String) param; - Object val = this.getConstant(constant); - if ((val != null) && (val instanceof Number)) { - return new BigDecimal(val.toString()); - } - } - throw new ParseException("Tipo de Dato incorrecto"); - - } - - protected Date nextDateParameter() throws Exception { - Object param = this.nextObjectParameter(); - if (param instanceof Date) { - return (Date) param; - } - return BeanManager.convertObject(param, Date.class); - - } - - protected String nextStringParameter() { - Object param = this.nextObjectParameter(); - return param.toString(); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/FormulaEvaluator.java.svn-base b/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/FormulaEvaluator.java.svn-base deleted file mode 100644 index 386866f..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/.svn/text-base/FormulaEvaluator.java.svn-base +++ /dev/null @@ -1,89 +0,0 @@ -package com.fp.common.formula; - -import java.math.BigDecimal; -import java.util.HashMap; -import java.util.Map; - -import org.apache.log4j.Logger; -import org.nfunk.jep.JEP; -import org.nfunk.jep.ParseException; -import org.nfunk.jep.function.PostfixMathCommand; - -public class FormulaEvaluator { - private static final Logger LOG = Logger.getLogger(FormulaEvaluator.class); - - private static final ThreadLocal running = new ThreadLocal(); - - private JEP parser; - - private String expression; - - private Map constants = new HashMap(); - - public FormulaEvaluator() { - this(null); - } - - public static FormulaEvaluator getRunning() { - return FormulaEvaluator.running.get(); - } - - public FormulaEvaluator(String pExpression) { - this.parser = new JEP(); - this.parser.addStandardConstants(); - this.parser.addStandardFunctions(); - this.parser.setAllowUndeclared(false); - this.parser.setImplicitMul(false); - this.expression = pExpression; - - } - - public BigDecimal evalNumeric() throws Exception { - this.parse(); - FormulaEvaluator.running.set(this); - Double val = this.parser.getValue(); - if (val.isNaN()) { - throw new Exception(this.parser.getErrorInfo()); - } - FormulaEvaluator.LOG.debug(val); - return BigDecimal.valueOf(val); - } - - /** - * Entrega el Valor de expression - * - * @return Valor de expression - */ - public String getExpression() { - return this.expression; - } - - public void parse() throws ParseException { - this.parser.parseExpression(this.expression); - if (this.parser.hasError()) { - throw new ParseException(this.parser.getErrorInfo()); - } - } - - public void setConstant(String pName, Object pVal) { - this.constants.put(pName, pVal); - this.parser.addConstant(pName, pVal); - } - - public Object getConstant(String pName) { - return this.constants.get(pName); - } - - /** - * Fija el valor de la propiedad expression - * - * @param expression El valor para expression - */ - public void setExpression(String expression) { - this.expression = expression; - } - - public void setFunction(String pName, PostfixMathCommand pCommand) { - this.parser.addFunction(pName, pCommand); - } -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/entries b/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/entries deleted file mode 100644 index 7eb0b82..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/formula/functions -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Percent.java -file - - - - -2022-07-28T03:40:34.943769Z -01d2f0435dbc26d41ec2b4f380de9cec -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -614 - -Sum.java -file - - - - -2022-07-28T03:40:34.944769Z -a648ce1d88a635b70c18a575da510559 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -830 - diff --git a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Percent.java.svn-base b/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Percent.java.svn-base deleted file mode 100644 index 8fa6832..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Percent.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.common.formula.functions; - -import java.math.BigDecimal; -import java.math.RoundingMode; - -import com.fp.common.formula.AbstractFunction; -import com.fp.common.helper.Constant; - -/** - * @author - */ -public class Percent extends AbstractFunction { - - @Override - public int getNumberOfParameters() { - return 2; - } - - @Override - public Object eval() throws Exception { - BigDecimal total = this.nextBigDecimalParameter(); - BigDecimal value = this.nextBigDecimalParameter(); - - return value.multiply(Constant.BD_ONE_HUNDRED).divide(total, RoundingMode.HALF_UP); - } - -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Sum.java.svn-base b/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Sum.java.svn-base deleted file mode 100644 index cdc97d3..0000000 --- a/base/dto/common/src/main/java/com/fp/common/formula/functions/.svn/text-base/Sum.java.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -package com.fp.common.formula.functions; - -import java.math.BigDecimal; - -import com.fp.common.formula.AbstractFunction; - -/** - * @author - */ -public class Sum extends AbstractFunction { - - @Override - public int getNumberOfParameters() { - return 5; - } - - @Override - public Object eval() throws Exception { - BigDecimal total = BigDecimal.ZERO; -// total = total.add(this.nextBigDecimalParameter()); -// total = total.add(this.nextBigDecimalParameter()); -// total = total.add(this.nextBigDecimalParameter()); -// total = total.add(this.nextBigDecimalParameter()); -// total = total.add(this.nextBigDecimalParameter()); - for(int i=0; i - * El numerador representa los dias mes ejeplo si la base es 360/xxx indica que los meses son de 3o dias, - * si la base es 365/*** indica que los meses son calendario.
      - * El denominador indica el numero de dias que se paga intereses en el anio. - * Ejemplo 360/360, 360/365, 365/360, 365/365.
      - * @author Jorge Vaca - * @version 2.1 - */ -public enum CalculationBase { - B360360(360,360, 30,"360/360"), B360365(360,365, 30,"360/365"), B365360(365,360, 1,"365/360"),B365365(365,365, 1,"365/365"); - /**Numero de dias anio de la base de calculo denomindor. */ - private int yearBase; - /** Numerador de la base de calculo. */ - private int monthBase; - /** Numero de dias por mes de la base de calculo, si es 1 indica que son meses calendario. */ - private int days; - /** Codigo de base de calculo. */ - private String baseCode=""; - - /** - * Crea una enumeracion de la base de calculo. - * @param pMonth Numerador de la base de calculo. - * @param pYearbase Denominador de la base de calculo. - * @param pDays Dias de la base de calculo, si es 1 son dias calendario. - * @param pBase Codigo de la base de calculo. - */ - private CalculationBase(int pMonth,int pYearbase, int pDays,String pBaseCode) { - this.yearBase = pYearbase; - this.monthBase=pMonth; - this.days = pDays; - this.baseCode=pBaseCode; - } - - public int getYearBase() { - return yearBase; - } - - /** - * Entrega el numero de dias de un mes y anio dado los dias mes del numerador de la base de calculo. - * @param pMonth Mes a obtener el numero de dias. - * @param pYear Anio a obtener el numero de dias. - * @return - * @throws Exception - */ - public int getMonthDays(int pMonth, int pYear) throws Exception { - if (this.days == 1) { - GregorianCalendar cal = new GregorianCalendar(); - cal.setTime(new Date()); - cal.set(Calendar.YEAR, pYear); - cal.set(Calendar.MONTH, pMonth); - cal.set(Calendar.DATE, 1); - return cal.getMaximum(Calendar.DATE); - } else { - return this.days; - } - } - - /** - * Entrega el numero de dias de una anio. - * @param pYear - * @return - * @throws Exception - */ - public int getYearDays(int pYear) throws Exception { - if (this.days == -1) { - GregorianCalendar cal = new GregorianCalendar(); - cal.setTime(new Date()); - cal.set(Calendar.YEAR, pYear); - cal.set(Calendar.MONTH, Calendar.JANUARY); - cal.set(Calendar.DATE, 1); - return cal.getMaximum(Calendar.DAY_OF_YEAR); - } else { - return this.days; - } - } - - /** - * Entrega el codigo de la base de calculo. - * @return String - * @throws Exception - */ - public String getBaseCode() throws Exception{ - return this.baseCode; - } - - /** - * Entrega los dias mes de la base de calculo. - * @return int - * @throws Exception - */ - public int getMonthBase() throws Exception{ - return this.monthBase; - } - - /** - * Entrega el numero de dias de la base de calculo. Si la base mes es 365 entrega 1. - * @return this.days - * @throws Exception - */ - public int getDay() throws Exception{ - return days; - } - - /** - * Entrega CalculationBase dada la base de calculo. - * @param pBase Base de calculo 360/360, 360/365, 365/360, 365/365. - * @return CalculationBase - * @throws Exception - */ - public static CalculationBase getCalculationBase(String pBaseCode) throws Exception{ - CalculationBase [] ct = null; - ct = CalculationBase.values(); - CalculationBase ctype = null; - for(CalculationBase obj : ct){ - if(obj.baseCode.compareTo(pBaseCode) == 0){ - ctype = obj; - } - } - return ctype; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/Constant.java.svn-base b/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/Constant.java.svn-base deleted file mode 100644 index e9c987a..0000000 --- a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/Constant.java.svn-base +++ /dev/null @@ -1,448 +0,0 @@ -package com.fp.common.helper; - -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashSet; -import java.util.List; -import javax.persistence.EntityManager; - -/** - * Clase en la cual se definen contantes de la aplicacion. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Constant { - - /** - * Codigo de respuesta ok al ejecutar una transaccion. - */ - public static final String RS_SUCCESS = "0"; - /** - * Constante que define un valor BigDecimal Cero. - */ - public static final BigDecimal BD_ZERO = BigDecimal.ZERO; - /** - * Constante que define un valor BigDecimal uno (1). - */ - public static final BigDecimal BD_ONE = BigDecimal.ONE; - /** - * Constante que define un valor BigDecimal uno negativo (1). - */ - public static final BigDecimal BD_ONE_NEGATIVE = new BigDecimal("-1"); - /** - * Constante que define un valor BigDecimal cien (100). - */ - public static final BigDecimal BD_ONE_HUNDRED = new BigDecimal("100"); - /** - * Constante que define un valor BigDecimal de un centavo (0.01). - */ - public static final BigDecimal BD_ONE_HUNDREDTH = new BigDecimal("0.01"); - /** - * Constante que define un valor 1 en string. - */ - public static final String STR_ONE = "1"; - /** - * Constante que define un valor Y en string. - */ - public static final String STR_Y = "Y"; - /** - * Constante que define un valor N en string. - */ - public static final String STR_N = "N"; - /** - * Codigo de respuesta ok al ejecutar una transaccion. - */ - public static final String NO_DATA_FOUND = "COMMONDB-0006"; - /** - * UNCHECKED WARNING - */ - public static final String WARN_UNCHECKED = "unchecked"; - public static final String INFORMIX_DIALECT = "org.hibernate.dialect.InformixDialect"; - public static final String ORACLE_DIALECT = "org.hibernate.dialect.Oracle10gDialect"; - - /** - * Metodo que valida si el valor de un cadena es "Y". si el valor es null o - * diferente retorna false. - * - * @param pValue Valor a comprobar si es Y, en ese caso retorna true, - * @return boolean - * @throws Exception - */ - public static boolean ifYes(String pValue) throws Exception { - boolean result = false; - if (pValue == null) { - return false; - } - if (pValue.compareTo("Y") == 0) { - return true; - } - return result; - } - - /** - * Metodo que se encarga de cambiar a mayuscula la primera letra de una - * palabra. - * - * @param pString String a cambiar a mayusculas las primeras letras de cada - * palabra del parrafo. - * @return String - * @throws Exception - */ - public static String capitalize(String pString) throws Exception { - String[] words = pString.split("\\s"); - String resp = ""; - for (String s : words) { - resp = resp + Constant.capitalizeword(s) + " "; - } - return resp; - } - - /** - * Metodo que se encarga de cambiar a mayuscula la primera letra de una - * palabra. - * - * @param s Palabra a cambiar a mayuscula la primera letra. - * @return String - * @throws Exception - */ - private static String capitalizeword(String s) throws Exception { - if (s.length() == 0) { - return s; - } - return s.substring(0, 1).toUpperCase() + s.substring(1).toLowerCase(); - } - /** - * Constante que define un unchecked. - */ - public static final String VUNCHECKED = "unchecked"; - /** - * Constante que define la cuenta. - */ - public static final String VACCOUNT = "account"; - /** - * Constante que define la compania asociada a la cuenta. - */ - public static final String VCOMPANY = "company"; - /** - * Constante que define la fecha de vigencia de un registro. - */ - public static final String VDATETO = "dateto"; - /** - * Anio mes de particion de una tabla. - */ - public static final String VPARTITION = "partition"; - /** - * Codigo de modulo. - */ - public static final String VMODULECODE = "modulecode"; - /** - * Codigo de producto. - */ - public static final String VPRODUCTCODE = "productcode"; - /** - * Codigo de subproducto. - */ - public static final String VSUBPRODUCTCODE = "subproductcode"; - /** - * Codigo de moneda. - */ - public static final String VCURRENCYCODE = "currencycode"; - /** - * Fecha de trabajo. - */ - public static final String VWORKINGDATE = "workingdate"; - /** - * Separador del key de maps cuando este se compone de varios atributos. - */ - public static String SEPARATOR = "^"; - /** - * Codigo de modulo asociado a una transaccion. - */ - public static final String VTRANSACTIONMODULE = "transactionmodule"; - /** - * Codigo de transaccion. - */ - public static final String VTRANSACTIONCODE = "transactioncode"; - /** - * Codigo de version de una transaccion. - */ - public static final String VTRANSACTIONVERSION = "transactionversion"; - /** - * Almacena el el timestamp por defecto de expiracion - */ - private static Timestamp vDefaulttimestamp; - - /** - * Devuelve la fecha hasta default de 2999-12-31 - * - * @return Fecha hasta 2999-12-31 - * @throws Exception - */ - public static Timestamp getDefaultExpiryTimestamp() throws Exception { - if (Constant.vDefaulttimestamp == null) { - SimpleDateFormat fd = new SimpleDateFormat("yyyy-MM-dd"); - ; - java.util.Date a = fd.parse("2999-12-31"); - Constant.vDefaulttimestamp = new Timestamp(a.getTime()); - } - return Constant.vDefaulttimestamp; - } - /** - * Almacena la fecha por defecto de expiracion - */ - private static Date vDefaultdate; - - /** - * Devuelve la fecha hasta default de 2999-12-31 - * - * @return Fecha hasta 2999-12-31 - * @throws Exception - */ - public static java.sql.Date getDefaultExpiryDate() throws Exception { - if (Constant.vDefaultdate == null) { - SimpleDateFormat fd = new SimpleDateFormat("yyyy-MM-dd"); - ; - java.util.Date a = fd.parse("2999-12-31"); - Constant.vDefaultdate = new java.sql.Date(a.getTime()); - } - return Constant.vDefaultdate; - } - /** - * Almacena el formato yyyyMM - */ - private static SimpleDateFormat vPartition; - - /** - * Formatea una fecha para ser empleada como campo de particionamiento en - * una Tabla - * - * @param pDate Fecha de Referencia. - * @return String Fecha con el formato yyyyMM - * @throws Exception - */ - public static String getPartition(Date pDate) throws Exception { - if (Constant.vPartition == null) { - Constant.vPartition = new SimpleDateFormat("yyyyMM"); - } - String aux = ""; - try { - aux = Constant.vPartition.format(pDate); - } catch (Exception e) { - aux = Constant.vPartition.format(pDate); - } - return aux; - } - - /** - * Formatea una fecha para ser empleada como campo de particionamiento en - * una Tabla - * - * @param pDate Fecha de Referencia. - * @return String Fecha con el formato yyyyMM - * @throws Exception - */ - public static String getPartition(Timestamp pDate) throws Exception { - if (Constant.vPartition == null) { - Constant.vPartition = new SimpleDateFormat("yyyyMM"); - } - String aux = ""; - try { - aux = Constant.vPartition.format(pDate); - } catch (Exception e) { - aux = Constant.vPartition.format(pDate); - } - return aux; - } - - /** - * Entrega el la particion default de caducidad de registros. - * - * @return Particion con el formato yyyyMM - * @throws Exception - */ - public static String getDefaultPartition() throws Exception { - return "299912"; - } - - /** - * Entrega el dialecto de la base de datos. - * - * @param pEntityManager Referencia a una session de base de datos. - * @return String - * @throws Exception - */ - public static String getDialect(EntityManager pEntityManager) throws Exception { - Object dialect = null; - dialect = pEntityManager.getEntityManagerFactory().getProperties().get("hibernate.dialect"); - return dialect.toString(); - } - - /** - * Retorna true si el dialecto de base es Oracle. - * - * @param pEntityManager Referencia a una session de base de datos. - * @return boolean - * @throws Exception - */ - public static boolean isOracleDialect(EntityManager pEntityManager) throws Exception { - String dialect = null; - dialect = (String) pEntityManager.getEntityManagerFactory().getProperties().get("hibernate.dialect"); - if (DialectDB.ORACLE.getCode().compareTo(dialect) == 0) { - return true; - } - return false; - } - - /** - * Retorna true si el dialecto de base es Oracle. - * - * @param pEntityManager Referencia a una session de base de datos. - * @return boolean - * @throws Exception - */ - public static boolean isSybaseDialect(EntityManager pEntityManager) throws Exception { - String dialect = null; - dialect = (String) pEntityManager.getEntityManagerFactory().getProperties().get("hibernate.dialect"); - if (DialectDB.SYBASE.getCode().compareTo(dialect) == 0) { - return true; - } - return false; - } - - /** - * Para poder realizar la comparacin los objetos deben tener sobreescrito - * el metodo equals - * - * @param obj E del mismo tipo de la lista - * @param l Lista de objetos de tipo E - * @return - * @throws InvocationTargetException - * @throws IllegalAccessException - * @throws - */ - public static int isInList(E obj, List l, String... equalmethods) throws Exception { - Method m = null; - if ((equalmethods != null) && (equalmethods.length > 0) && (equalmethods[0] != null)) { - m = obj.getClass().getMethod(equalmethods[0], Object.class); - } - int i = 0; - if ((l == null) || l.isEmpty()) { - return -1; - } - for (E item : l) { - Boolean result = (Boolean) (m != null ? m.invoke(obj, item) : obj.equals(item)); - if (result) { - return i; - } - i++; - } - return -1; - } - - /** - * Para poder realizar la comparacin los objetos deben tener sobreescrito - * el metodo equals - * - * @param l Lista de beans - * @param obj Bean del mismo tipo de la lista - * @return E | null - */ - public static E isInList(List l, E obj) { - if ((l == null) || l.isEmpty()) { - return null; - } - for (E item : l) { - if (obj.equals(item)) { - return item; - } - } - return null; - } - - public static boolean existRepeated(List lMod) { - if ((lMod == null) || lMod.isEmpty()) { - return false; - } - HashSet hs = new HashSet(); - for (T item : lMod) { - hs.add(item); - } - return lMod.size() == hs.size() ? false : true; - } - - public static List getFinalList(List lDB, List lMod, List lDel, String... equalmethods) throws Exception { - List lFinal = new ArrayList(); - // Quitar eliminados - if (!lDB.isEmpty()) { - for (T rdb : lDB) { - if (Constant.isInList(rdb, lDel, equalmethods) < 0) { - lFinal.add(rdb); - } - } - } - - List lFinalCopy = new ArrayList(lFinal); - // actualizar modificados y agregar nuevos - if ((lMod != null) && !lMod.isEmpty()) { - for (T rmod : lMod) { - int index = Constant.isInList(rmod, lFinalCopy, equalmethods); - if (index >= 0) { - lFinal.set(index, rmod); - } else { - lFinal.add(rmod); - } - } - } - return lFinal; - } - - /** - * Funcin que transforma una lista de objetos a una lista especfica - * - * @param lobj Lista de objetos - * @param cl Clase a la que se va a convertir cada miembro de la lista - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List convertList(List lobj, Class cl) throws Exception { - List l = new ArrayList(); - if (lobj != null) { - for (Object obj : lobj) { - if (cl.isInstance(obj)) { - l.add((T) obj); - } - } - } - return l; - } - - /** - * Método que se encarga de formatear mensajes con parametros - * - * @param message - * @param parameters - * @return - */ - public static String formatMessage(String message, Object... parameters) { - if (parameters != null) { - Object[] parametersAux = parameters; - for (int i = 0; i < parametersAux.length; i++) { - Object objeto = parametersAux[i]; - if (objeto instanceof Integer || objeto instanceof Long) { - message = message.replaceAll("\\{" + i + "\\}", "{" + i + ",number,#}"); - } else if (objeto instanceof BigDecimal) { - message = message.replaceAll("\\{" + i + "\\}", "{" + i + ",number,#,###.##}"); - } - } - message = MessageFormat.format(message, parameters); - } - return message; - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/DialectDB.java.svn-base b/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/DialectDB.java.svn-base deleted file mode 100644 index 265ed9e..0000000 --- a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/DialectDB.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.common.helper; - -/** - * Enumeracion que maneja los distintos dialectos de base de datos. - * @author Jorge Vaca - * @version 2.1 - */ -public enum DialectDB { - - ORACLE("org.hibernate.dialect.Oracle10gDialect"), - SYBASE("org.hibernate.dialect.SybaseDialect") - ; - - /**Codigo de dialecto de la base de datos.*/ - private String code; - - /** - * Crea una instancia de la enumeracion. - * @param pCode Codigo de dialecto. - */ - DialectDB(String pCode){ - code = pCode; - } - - - - /** - * Entrega el valor del dialecto de la enumeracion. - * @return String - * @throws Exception - */ - public String getCode() throws Exception { - return code; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/FkException.java.svn-base b/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/FkException.java.svn-base deleted file mode 100644 index b2c606f..0000000 --- a/base/dto/common/src/main/java/com/fp/common/helper/.svn/text-base/FkException.java.svn-base +++ /dev/null @@ -1,18 +0,0 @@ -package com.fp.common.helper; - - -/** - * Interface a implementar por la clase que entrega tabla padre y tabla dependiente cuando hay un - * fk violado. - * @author Jorge Vaca - * @version 2.1 - */ -public interface FkException { - - /** - * Entrega la tabla padre y dependiente dado un foreing key. - * @param fk constraint con el cual se obtien la tabla padre y la tabla dependiente. - * @return String[] - */ - public String[] getFkData(String fk); -} diff --git a/base/dto/common/src/main/java/com/fp/common/logger/.svn/entries b/base/dto/common/src/main/java/com/fp/common/logger/.svn/entries deleted file mode 100644 index 359a58a..0000000 --- a/base/dto/common/src/main/java/com/fp/common/logger/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/logger -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -APPLogger.java -file - - - - -2022-07-28T03:40:34.771769Z -c1221aa7c0dbcfe44eecd208bd52bc8a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -729 - diff --git a/base/dto/common/src/main/java/com/fp/common/logger/.svn/text-base/APPLogger.java.svn-base b/base/dto/common/src/main/java/com/fp/common/logger/.svn/text-base/APPLogger.java.svn-base deleted file mode 100644 index 60ebe6b..0000000 --- a/base/dto/common/src/main/java/com/fp/common/logger/.svn/text-base/APPLogger.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.common.logger; -import org.apache.log4j.Logger; -import org.apache.log4j.PropertyConfigurator; - -public class APPLogger extends Logger { - - -private static boolean monitorInit=false; - - public APPLogger(String name) { - super(name); - } - - public static Logger getLogger(String name) { - Logger logger=Logger.getLogger(name);//, factory); - return logger; - } - - public static Logger getLogger() { - Exception e=new Exception(); - StackTraceElement el=e.getStackTrace()[1]; - if(!monitorInit){ - PropertyConfigurator.configureAndWatch("log4j.properties"); - monitorInit=true; - } - return getLogger(el.getClassName()); - } - - public void error(Object arg0) { - super.error(arg0); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/messages/.svn/entries b/base/dto/common/src/main/java/com/fp/common/messages/.svn/entries deleted file mode 100644 index 42231df..0000000 --- a/base/dto/common/src/main/java/com/fp/common/messages/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/messages -svn://172.17.26.185/COMACO - - - -2014-09-17T05:52:10.767036Z -863 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MessageUtil.java -file - - - - -2022-07-28T03:40:35.006770Z -aa94044b0e547842f585727261e6e24c -2014-09-17T05:52:10.767036Z -863 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2537 - -ELEval.java -file - - - - -2022-07-28T03:40:35.006770Z -7c2114269b33e970eb153938445e7b47 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -209 - diff --git a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/ELEval.java.svn-base b/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/ELEval.java.svn-base deleted file mode 100644 index 32197bd..0000000 --- a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/ELEval.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -package com.fp.common.messages; - -import org.mvel2.MVEL; - -public class ELEval { - public static Object eval(Object pReference, String pExpression) { - return MVEL.eval(pExpression, pReference); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.netbeans-base b/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.netbeans-base deleted file mode 100644 index a41e7b4..0000000 --- a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.netbeans-base +++ /dev/null @@ -1,81 +0,0 @@ -package com.fp.common.messages; - -import java.io.StringWriter; -import java.util.Locale; -import java.util.Properties; - -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.tools.generic.DateTool; -import org.apache.velocity.tools.generic.MathTool; -import org.apache.velocity.tools.generic.NumberTool; - -import com.fp.common.logger.APPLogger; - -public class MessageUtil { - private String pattern; - - private final VelocityEngine ve; - - VelocityContext context = new VelocityContext(); - - public MessageUtil(String pLanguage) throws Exception { - Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, this); - Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.SimpleLog4JLogSystem"); - this.ve = new VelocityEngine(); - this.ve.init(); - this.init(pLanguage); - } - - public MessageUtil(String pLanguage, Properties p) throws Exception { - this.ve = new VelocityEngine(); - this.ve.init(p); - this.init(pLanguage); - } - - private void init(String pLanguage) { - this.context.put("date", new DateTool()); - this.context.put("math", new MathTool()); - this.context.put("number", new NumberTool()); - try { - - //this.context.put("builder", Class.forName("com.fp.builder.templates.MessageTemplates").newInstance()); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - try { - - this.context.put("general", Class.forName("com.fp.base.persistence.util.helper.GeneralDescriptions").newInstance()); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - - this.context.put("locate", new Locale(pLanguage.toLowerCase())); - } - - public MessageUtil(String pLanguage, String pPattern) throws Exception { - this(pLanguage); - this.pattern = pPattern; - } - - public void setPattern(String pPattern) { - this.pattern = pPattern; - } - - public void setValue(String pName, Object pValue) { - this.context.put(pName, pValue); - } - - public String getMessage() throws Exception { - StringWriter writer = new StringWriter(); - try { - this.ve.evaluate(this.context, writer, "", this.pattern); - } finally { - writer.close(); - } - return writer.toString(); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.svn-base b/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.svn-base deleted file mode 100644 index a41e7b4..0000000 --- a/base/dto/common/src/main/java/com/fp/common/messages/.svn/text-base/MessageUtil.java.svn-base +++ /dev/null @@ -1,81 +0,0 @@ -package com.fp.common.messages; - -import java.io.StringWriter; -import java.util.Locale; -import java.util.Properties; - -import org.apache.velocity.VelocityContext; -import org.apache.velocity.app.Velocity; -import org.apache.velocity.app.VelocityEngine; -import org.apache.velocity.runtime.RuntimeConstants; -import org.apache.velocity.tools.generic.DateTool; -import org.apache.velocity.tools.generic.MathTool; -import org.apache.velocity.tools.generic.NumberTool; - -import com.fp.common.logger.APPLogger; - -public class MessageUtil { - private String pattern; - - private final VelocityEngine ve; - - VelocityContext context = new VelocityContext(); - - public MessageUtil(String pLanguage) throws Exception { - Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM, this); - Velocity.setProperty(RuntimeConstants.RUNTIME_LOG_LOGSYSTEM_CLASS, "org.apache.velocity.runtime.log.SimpleLog4JLogSystem"); - this.ve = new VelocityEngine(); - this.ve.init(); - this.init(pLanguage); - } - - public MessageUtil(String pLanguage, Properties p) throws Exception { - this.ve = new VelocityEngine(); - this.ve.init(p); - this.init(pLanguage); - } - - private void init(String pLanguage) { - this.context.put("date", new DateTool()); - this.context.put("math", new MathTool()); - this.context.put("number", new NumberTool()); - try { - - //this.context.put("builder", Class.forName("com.fp.builder.templates.MessageTemplates").newInstance()); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - try { - - this.context.put("general", Class.forName("com.fp.base.persistence.util.helper.GeneralDescriptions").newInstance()); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - } - - this.context.put("locate", new Locale(pLanguage.toLowerCase())); - } - - public MessageUtil(String pLanguage, String pPattern) throws Exception { - this(pLanguage); - this.pattern = pPattern; - } - - public void setPattern(String pPattern) { - this.pattern = pPattern; - } - - public void setValue(String pName, Object pValue) { - this.context.put(pName, pValue); - } - - public String getMessage() throws Exception { - StringWriter writer = new StringWriter(); - try { - this.ve.evaluate(this.context, writer, "", this.pattern); - } finally { - writer.close(); - } - return writer.toString(); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/common/properties/.svn/entries b/base/dto/common/src/main/java/com/fp/common/properties/.svn/entries deleted file mode 100644 index 94922d0..0000000 --- a/base/dto/common/src/main/java/com/fp/common/properties/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/properties -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CommonProperties.java -file - - - - -2022-07-28T03:40:35.106770Z -dae2f213ada01f950be708491f042709 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -949 - -PropertiesHandler.java -file - - - - -2022-07-28T03:40:35.106770Z -a4ce5b52bb9c308c9da6603bf4d59d6e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7204 - diff --git a/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/CommonProperties.java.svn-base b/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/CommonProperties.java.svn-base deleted file mode 100644 index 49641fc..0000000 --- a/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/CommonProperties.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.common.properties; - -import java.io.IOException; - -/** - * Clase que se encarga del manejo del archivo de propiedades common. - * @author Jorge Vaca. - * @version 2.1 - */ -public final class CommonProperties extends PropertiesHandler { - /** - * Almacena una instancia del tipo CommonProperties en el singleton. - */ - private static CommonProperties instance=null; - - /** - * Crea una instancia de CommonProperties. - * @throws IOException - */ - private CommonProperties() throws IOException,Exception{ - super("common"); - } - - /** - * Crea y entrega una instancia de CommonProperties. - * @return CommonProperties - * @throws IOException - */ - public static CommonProperties getInstance() throws IOException,Exception{ - synchronized (CommonProperties.class) { - if(instance==null){ - instance=new CommonProperties(); - } - } - return instance; - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/PropertiesHandler.java.svn-base b/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/PropertiesHandler.java.svn-base deleted file mode 100644 index fec9dd9..0000000 --- a/base/dto/common/src/main/java/com/fp/common/properties/.svn/text-base/PropertiesHandler.java.svn-base +++ /dev/null @@ -1,241 +0,0 @@ -package com.fp.common.properties; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Properties; -import java.util.Set; -import java.util.StringTokenizer; - - - - -/** - * Clase que permite el acceso en caliente a archivos propiedades. - * Si se cambia un archivo properties no es necesario reiniciar la instancia para que la aplicaicon - * tomo los nuevos valores. - * @author Jorge Vaca. - * @version 2.1 - */ -public class PropertiesHandler { - // ~ Variables de Instancia - // *********************************************************************** - - /** - * Archivo - */ - private File file; - - /** - * Recurso que contiene las propiedades definidas en el Archivo - */ - private Properties resource; - - /** - * Path del Archivo de propiedades - */ - private String resourceFile; - - /** - * Fecha del archivo subido a memoria - */ - private long date; - - private String name; - - private static final String PROPERTIES = ".properties"; - - // ~ Contructores - // ********************************************************************************* - - /** - * Crea una nueva instancia de PropertiesHandler - * - * @throws Exception - * Error - * @param pName - * Raiz del Archivo properties Manejado - */ - public PropertiesHandler(String pName) throws Exception { - this.name = pName; - String path = System.getProperties().getProperty("java.class.path"); - String pathSeparator = System.getProperties().getProperty("path.separator"); - String dirSeparator = System.getProperties().getProperty("file.separator"); - StringTokenizer st = new StringTokenizer(path, pathSeparator); - while (st.hasMoreElements()) { - String f1 = (String) st.nextElement(); - File f2 = new File(f1); - if (!f2.isDirectory()) { - continue; - } - this.resourceFile = f1 + dirSeparator + pName + PROPERTIES; - try { - this.findFile(); - if (this.file.exists()) { - break; - } - } catch (FileNotFoundException e) { - continue; - } - } - - this.reload(); - - } - - // ~ Mtodos - // ************************************************************************************** - - /** - * Verifica si el archivo fuente de las propiedades ha sido modificado - * - * @throws Exception - * Error al verificar el Archivo - */ - private void check() throws Exception { - try { - File f2 = new File(this.resourceFile); - long date1 = f2.lastModified(); - - if (this.date != date1) { - this.date = date1; - this.file = f2; - this.reload(); - } - } catch (NullPointerException e) { - //NO hacer nada - } - } - - /** - * Encuentra el archivo - * - * @throws Exception - * Error al encontrar el archivo - */ - private void findFile() throws Exception { - this.file = new File(this.resourceFile); - this.date = this.file.lastModified(); - } - - /** - * Entrega el valor en booleano de la variable - * - * @param pKey - * Nombre de la variable a entregar - * @return El valor booleano de la variable - * @throws Exception - * Error al convertir el valor encontrado a booleano - */ - public boolean getBooleanValue(String pKey) throws Exception { - return (this.getValue(pKey).compareTo("true") == 0) ? true : false; - } - - /** - * Entrega el valor en entero de la variable - * - * @param pKey - * Nombre de la variable a entregar - * @return El valor entero de la variable - * @throws Exception - * Error al convertir el valor encontrado a entero - */ - public int getIntValue(String pKey) throws Exception { - return Integer.parseInt(this.getValue(pKey)); - } - - public Set getKeyList() throws Exception { - return this.resource.keySet(); - } - - /** - * Entrega la lista de Valores asociados al Key separado por ',' - * - * @param pKey - * Key del archivo - * @return Lista de valores - * @throws Exception - */ - public List getList(String pKey) throws Exception { - return this.getList(pKey, ","); - } - - /** - * Entrega la lista de Valores asociados al Key separado por un token - * - * @param pKey - * Key del archivo - * @param pToken - * Separador de valores - * @return Lista de Valores - * @throws Exception - */ - public List getList(String pKey, String pToken) throws Exception { - String data = this.getStringValue(pKey); - List list = new ArrayList(); - if (data.indexOf(pToken) < 0) { - list.add(data); - } else { - String[] dataArr = data.split(pToken); - for (String string : dataArr) { - list.add(string); - } - } - return list; - } - - public String getStringValue(String pKey) throws Exception { - this.check(); - try { - return this.resource.getProperty(pKey); - } catch (NullPointerException e) { - throw new Exception("Cadena No Encontrada " + pKey, e); - } - } - - /** - * Entrega el valor de la variable - * - * @param pKey - * Nombre de la variable a entregar - * @return El valor de la variable - * @throws Exception - * Error al Encontrar la variable - */ - public String getValue(String pKey) throws Exception { - this.check(); - try { - return this.resource.getProperty(pKey).trim(); - } catch (NullPointerException e) { - throw new Exception("Cadena No Encontrada " + pKey, e); - } - } - - public boolean hasValue(String pKey) throws Exception { - return this.resource.containsKey(pKey); - } - - /** - * Recarga el contenido del Archivo - * - * @throws Exception - * Error al recargar el archivo - */ - private void reload() throws Exception { - InputStream in = null; - try { - in = new FileInputStream(this.file); - } catch (NullPointerException e) { - in = this.getClass().getClassLoader().getResource(this.name + PROPERTIES).openStream(); - } catch (FileNotFoundException e) { - in = this.getClass().getClassLoader().getResource(this.name + PROPERTIES).openStream(); - } - this.resource = new Properties(); - this.resource.load(in); - in.close(); - } -} diff --git a/base/dto/common/src/main/java/com/fp/common/soap/.svn/entries b/base/dto/common/src/main/java/com/fp/common/soap/.svn/entries deleted file mode 100644 index 667cf9a..0000000 --- a/base/dto/common/src/main/java/com/fp/common/soap/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/soap -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -WSClient.java -file - - - - -2022-07-28T03:40:34.872769Z -c72c5c1945cc7f48192b7793d260d7f5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4633 - diff --git a/base/dto/common/src/main/java/com/fp/common/soap/.svn/text-base/WSClient.java.svn-base b/base/dto/common/src/main/java/com/fp/common/soap/.svn/text-base/WSClient.java.svn-base deleted file mode 100644 index eb27ebb..0000000 --- a/base/dto/common/src/main/java/com/fp/common/soap/.svn/text-base/WSClient.java.svn-base +++ /dev/null @@ -1,137 +0,0 @@ -package com.fp.common.soap; - -import java.io.ByteArrayInputStream; -import java.io.FileOutputStream; -import java.io.StringWriter; -import java.net.URL; - -import javax.xml.soap.MessageFactory; -import javax.xml.soap.SOAPConnection; -import javax.xml.soap.SOAPConnectionFactory; -import javax.xml.soap.SOAPMessage; - -import org.apache.log4j.Logger; -import org.apache.xml.serializer.ToXMLStream; -import org.w3c.dom.Node; - -import com.fp.common.files.StreamHelper; -import com.fp.common.properties.PropertiesHandler; - -public final class WSClient { - private static final Logger LOG = Logger.getLogger(WSClient.class); - - /** Instancia singleton de SOAPClient */ - private static WSClient instance = null; - - /** - * Obtiene la instancia singleton de SOAPClient - * - * @return singleton - */ - public static WSClient getInstance() { - synchronized (WSClient.class) { - if (WSClient.instance == null) { - WSClient.instance = new WSClient(); - } - } - return WSClient.instance; - } - - /** - * Contructor sin parametros - */ - private WSClient() { - } - - /** - * Envia una peticion SOAP en base a los parametros definido en el PropertiesHandler - * - * @param pEndpintURL - * @param pSoapRequest - * @param ph - * @return data resultado de la peticion - * @throws Exception - */ - public String soapSend(String pEndpintURL, String pSoapRequest, PropertiesHandler ph) throws Exception { - try { - WSClient.LOG.debug("ENDPOINT " + pEndpintURL); - - String file = ph.getStringValue("ws.ofac.path") + "/FL" + Double.valueOf(Math.random() * 100000).intValue() - + ".txt"; - - FileOutputStream fout = new FileOutputStream(file); - try { - fout.write(pSoapRequest.getBytes()); - } finally { - fout.close(); - } - - String command = ph.getStringValue("ws.ofac.command") + " " + pEndpintURL + " " + file; - - /* - * Descomentar para pruebas en Windows String command =File.separator - * +"Fitbank"+File.separator+"soap"+File.separator+"run.bat" + " " + EndpintURL + " " + file; - */ - - Process p = Runtime.getRuntime().exec(command); - - String data = StreamHelper.readStream(p.getInputStream()); - WSClient.LOG.debug("Respuesta |" + data + "|"); - return data; - } catch (Exception e) { - WSClient.LOG.error(e, e); - throw e; - } - } - - public SOAPMessage prepareMessage(String pSoapRequest) throws Exception { - return this.prepareMessage(pSoapRequest, "ISO-8859-1"); - } - - /** - * Prepara el mensaje SOAP a ser enviado - * - * @param pSoapRequest - * @return - * @throws Exception - */ - public SOAPMessage prepareMessage(String pSoapRequest, String pEncoding) throws Exception { - MessageFactory msgFactory = MessageFactory.newInstance(); - WSClient.LOG.debug("MessageFactory |" + msgFactory.getClass().getName() + "|"); - return msgFactory.createMessage(null, new ByteArrayInputStream( - // ("" + pSoapRequest).getBytes())); - ("" + pSoapRequest).getBytes())); - } - - /** - * Envia una peticion SOAP para pruebas mediante una nueva conexion - * - * @param pEndpintURL - * @param pSoapRequest - * @return resp - * @throws Exception - */ - public String soapSendReal(String pEndpintURL, String pSoapRequest) throws Exception { - WSClient.LOG.debug("EndPoint |" + pEndpintURL + "| Peticion |" + pSoapRequest + "|"); - // MessageFactory msgFactory = new MessageFactoryImpl(); - SOAPConnection con = SOAPConnectionFactory.newInstance().createConnection(); - SOAPMessage reqMsg = this.prepareMessage(pSoapRequest); - URL epURL = new URL(pEndpintURL); - SOAPMessage resMsg = con.call(reqMsg, epURL); - String resp = WSClient.nodeToString(resMsg.getSOAPBody().getOwnerDocument()); - WSClient.LOG.debug(" Respuesta |" + resp + "|"); - return resp; - } - - public static String nodeToString(Node pNode) throws Exception { - String data = ""; - ToXMLStream dser = (ToXMLStream) (new ToXMLStream()).asDOMSerializer(); - - StringWriter sw = new StringWriter(); - dser.setWriter(sw); - dser.serialize(pNode); - String element = sw.toString(); - data = element.substring(element.indexOf(">") + 1); - return data; - } -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/common/thread/.svn/entries b/base/dto/common/src/main/java/com/fp/common/thread/.svn/entries deleted file mode 100644 index f719162..0000000 --- a/base/dto/common/src/main/java/com/fp/common/thread/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/common/thread -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Monitor.java -file - - - - -2022-07-28T03:40:35.038770Z -798fa21e23b37a02978e1328a5b71c89 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3529 - diff --git a/base/dto/common/src/main/java/com/fp/common/thread/.svn/text-base/Monitor.java.svn-base b/base/dto/common/src/main/java/com/fp/common/thread/.svn/text-base/Monitor.java.svn-base deleted file mode 100644 index 5098509..0000000 --- a/base/dto/common/src/main/java/com/fp/common/thread/.svn/text-base/Monitor.java.svn-base +++ /dev/null @@ -1,154 +0,0 @@ -package com.fp.common.thread; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.common.logger.APPLogger; - -/** - * Clase orquestadora de la ejecucion de hilos, controla el numero de operaciones que se ejecutan en paralelo. - * @author Jorge Vaca - * @version 2.1 - */ -/** - * @author Jorge Vaca - * @version 2.1 - */ -/** - * @author Jorge Vaca - * @version 2.1 - */ -public class Monitor { - - /** Indica que para el proceso en ejecucion. */ - private boolean stop = false; - - /** Contador de hilos activos. Cada hilo procesa una cuenta en el fin de dia.*/ - private Long count = Long.valueOf(0); - - /** Monitos de hilo. */ - private boolean available = true; - - /** Monitor de finaliacin de ejecucin de hilos. */ - private boolean end = true; - /** Maximo numero de hilos a levantar en la ejecucin de un batch. */ - protected Integer maxthreads = 0; - - /** Lista que almacena el numero del hilo a procesar. */ - private List lmaxthreads; - - - /** - * Crea una instancia de Monitor. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public Monitor(Integer pMaxthreads) throws Exception{ - maxthreads = pMaxthreads; - lmaxthreads = new ArrayList(); - for (int i = 1; i <= maxthreads; i++) { - lmaxthreads.add(i); - } - } - - - /** - * Metodo que permite controlar la finalizacion de ejecucion de un hilo, resta el contador en 1 para permitir que - * la aplicacion levante la ejecucion de un hilo adicional. - * @param pThreadNumber Numero de hilo en ejecucion, se utiliza en el numero de mensaje con el cual se ejecuta el fin de dia. - * @throws Exception - */ - public synchronized void removeCounter(Integer pThreadNumber) throws Exception { - if (!available) { - wait(); - } - try{ - available = false; - count--; - lmaxthreads.add(pThreadNumber); - }finally{ - available = true; - if (count <= 0) { - end = true; - } - this.notify(); - } - } - - - /** - * Metodo que controla el inicio de ejecucion de un hilo. Suma 1 al contador de hilos en ejecucion. - * @return Integer Numero de hilo en ejecuvion. - * @throws Exception - */ - public synchronized Integer addCounter() throws Exception { - if (!available || count >= this.maxthreads) { - wait(); - } - Integer numthread =0; - try{ - available = false; - int icount = this.count.intValue(); - icount++; - this.count = Long.valueOf(icount); - if(!lmaxthreads.isEmpty()){ - numthread = lmaxthreads.get(0); - lmaxthreads.remove(0); - } - }finally{ - available = true; - end = false; - this.notify(); - } - return numthread; - } - - - /** - * Metodo que controla la finalizacion de ejecucion de todos los hilos que se levantaron en la ejecucion del batch. - * @throws Exception - */ - public synchronized void finish() throws Exception { - while (!end) { - wait(); - } - try { - // this.setStatusProcessed(); - // TODO Change status to executed - APPLogger.getLogger().info("Fin Prceso de Batch "); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Metodo que entrega el numero de hilos en ejecucion. - * @return Long - */ - public Long getCount() { - return count; - } - - - /** - * Entrega el valor de: stop - * @return boolean - */ - public boolean isStop() { - return stop; - } - - - /** - * Fija el valor de: stop - * @param stop valor a almacenar en el objeto. - */ - public void setStop(boolean stop) { - this.stop = stop; - } - - - - - -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/core/.svn/entries b/base/dto/common/src/main/java/com/fp/core/.svn/entries deleted file mode 100644 index 3ab9aca..0000000 --- a/base/dto/common/src/main/java/com/fp/core/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/core -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/core/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/core/exception/.svn/entries deleted file mode 100644 index b615f0a..0000000 --- a/base/dto/common/src/main/java/com/fp/core/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/core/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CoreException.java -file - - - - -2022-07-28T03:40:35.266771Z -866d920f46328403350451a964a1b692 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1233 - diff --git a/base/dto/common/src/main/java/com/fp/core/exception/.svn/text-base/CoreException.java.svn-base b/base/dto/common/src/main/java/com/fp/core/exception/.svn/text-base/CoreException.java.svn-base deleted file mode 100644 index 7a2bace..0000000 --- a/base/dto/common/src/main/java/com/fp/core/exception/.svn/text-base/CoreException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.core.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete comun del core. - * @author Jorge Vaca. - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class CoreException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de CoreException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CoreException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de CoreException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CoreException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} - diff --git a/base/dto/common/src/main/java/com/fp/creditfacility/.svn/entries b/base/dto/common/src/main/java/com/fp/creditfacility/.svn/entries deleted file mode 100644 index 5d2d5a0..0000000 --- a/base/dto/common/src/main/java/com/fp/creditfacility/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/creditfacility -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/entries deleted file mode 100644 index 1e2ee79..0000000 --- a/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/creditfacility/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CreditFacilityException.java -file - - - - -2022-07-28T03:40:35.634772Z -e2b9ae97ef4be4c5d6f1a7edb0542290 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1315 - diff --git a/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/text-base/CreditFacilityException.java.svn-base b/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/text-base/CreditFacilityException.java.svn-base deleted file mode 100644 index dcc88df..0000000 --- a/base/dto/common/src/main/java/com/fp/creditfacility/exception/.svn/text-base/CreditFacilityException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.creditfacility.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete lineas de credito. - * - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback = true) -public class CreditFacilityException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de CreditFacilityException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CreditFacilityException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de CreditFacilityException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CreditFacilityException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/demandeposit/.svn/entries b/base/dto/common/src/main/java/com/fp/demandeposit/.svn/entries deleted file mode 100644 index 8601665..0000000 --- a/base/dto/common/src/main/java/com/fp/demandeposit/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/demandeposit -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/entries deleted file mode 100644 index 4487bca..0000000 --- a/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/demandeposit/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DemandDepositException.java -file - - - - -2022-07-28T03:40:36.122774Z -9c9a2e6c296ac00404f6946bb4dfb8ed -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1301 - diff --git a/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/text-base/DemandDepositException.java.svn-base b/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/text-base/DemandDepositException.java.svn-base deleted file mode 100644 index 545f0fe..0000000 --- a/base/dto/common/src/main/java/com/fp/demandeposit/exception/.svn/text-base/DemandDepositException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.demandeposit.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete demanddeposit o cuentas a la vista. - * @author Jorge Vaca - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class DemandDepositException extends APPException{ - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de DemandDepositException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public DemandDepositException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de DemandDepositException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public DemandDepositException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/documents/.svn/entries b/base/dto/common/src/main/java/com/fp/documents/.svn/entries deleted file mode 100644 index 7ab6f6b..0000000 --- a/base/dto/common/src/main/java/com/fp/documents/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/documents -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DocException.java -file - - - - -2022-07-28T03:40:35.731773Z -5185db13c08d59fe6355211e5021f054 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1229 - diff --git a/base/dto/common/src/main/java/com/fp/documents/.svn/text-base/DocException.java.svn-base b/base/dto/common/src/main/java/com/fp/documents/.svn/text-base/DocException.java.svn-base deleted file mode 100644 index 6549729..0000000 --- a/base/dto/common/src/main/java/com/fp/documents/.svn/text-base/DocException.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.documents; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -@ApplicationException(rollback = true) -public class DocException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de DemandDepositException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public DocException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de DemandDepositException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public DocException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/dto/.svn/entries b/base/dto/common/src/main/java/com/fp/dto/.svn/entries deleted file mode 100644 index a744353..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/dto -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -json -dir - diff --git a/base/dto/common/src/main/java/com/fp/dto/json/.svn/entries b/base/dto/common/src/main/java/com/fp/dto/json/.svn/entries deleted file mode 100644 index 42e7dab..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/.svn/entries +++ /dev/null @@ -1,133 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/dto/json -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ObjectValueProcessor.java -file - - - - -2022-07-28T03:40:34.592768Z -a76590b460cbf0180e2b63d585b2a82e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -845 - -Serializer.java -file - - - - -2022-07-28T03:40:34.592768Z -d6c17ba916798a17e776252f0ed02277 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10615 - -DateValueProcessor.java -file - - - - -2022-07-28T03:40:34.592768Z -092c8277d1c98013d77cb90224051db7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1473 - -morpher -dir - diff --git a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/DateValueProcessor.java.svn-base b/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/DateValueProcessor.java.svn-base deleted file mode 100644 index cfb0708..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/DateValueProcessor.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.dto.json; - -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; - -import net.sf.json.JsonConfig; -import net.sf.json.processors.JsonValueProcessor; - -public class DateValueProcessor implements JsonValueProcessor { - public static final String DATE_TRANSPORT = "yyyy-MM-dd"; - - public static final String TIMESTAMP_TRANSPORT = "yyyy-MM-dd HH:mm:ss"; - - @Override - public Object processArrayValue(Object value, JsonConfig jsonConfig) { - String data = ""; - if (value instanceof Date) { - SimpleDateFormat sdf = new SimpleDateFormat(DateValueProcessor.DATE_TRANSPORT); - data = sdf.format((java.util.Date) value); - } else if (value instanceof Timestamp) { - SimpleDateFormat sdf = new SimpleDateFormat(DateValueProcessor.TIMESTAMP_TRANSPORT); - data = sdf.format((java.util.Date) value); - } - return data; - } - - @Override - public Object processObjectValue(String key, Object value, JsonConfig jsonConfig) { - String data = ""; - if (value instanceof Date) { - SimpleDateFormat sdf = new SimpleDateFormat(DateValueProcessor.DATE_TRANSPORT); - data = sdf.format((Date) value); - } else if (value instanceof Timestamp) { - SimpleDateFormat sdf = new SimpleDateFormat(DateValueProcessor.TIMESTAMP_TRANSPORT); - data = sdf.format((Timestamp) value); - } - return data; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/ObjectValueProcessor.java.svn-base b/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/ObjectValueProcessor.java.svn-base deleted file mode 100644 index 350c50c..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/ObjectValueProcessor.java.svn-base +++ /dev/null @@ -1,28 +0,0 @@ -package com.fp.dto.json; - -import java.math.BigDecimal; - -import net.sf.json.JSONArray; -import net.sf.json.JSONNull; -import net.sf.json.processors.DefaultValueProcessor; -import net.sf.json.util.JSONUtils; - -public class ObjectValueProcessor implements DefaultValueProcessor { - @SuppressWarnings("unchecked") - public Object getDefaultValue( Class type ) { - if( JSONUtils.isArray( type ) ){ - return new JSONArray(); - }else if( JSONUtils.isNumber( type ) ){ - if( JSONUtils.isDouble( type ) ){ - return new BigDecimal("0" ); - }else{ - return new Long( 0 ); - } - }else if( JSONUtils.isBoolean( type ) ){ - return Boolean.FALSE; - }else if( JSONUtils.isString( type ) ){ - return ""; - } - return JSONNull.getInstance(); - } - } \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/Serializer.java.svn-base b/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/Serializer.java.svn-base deleted file mode 100644 index e70f5b3..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/.svn/text-base/Serializer.java.svn-base +++ /dev/null @@ -1,346 +0,0 @@ -package com.fp.dto.json; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import net.sf.ezmorph.Morpher; -import net.sf.ezmorph.MorpherRegistry; -import net.sf.ezmorph.bean.MorphDynaBean; -import net.sf.json.JSONObject; -import net.sf.json.JsonConfig; -import net.sf.json.util.JSONUtils; -import net.sf.json.xml.XMLSerializer; - -import org.apache.commons.beanutils.DynaProperty; -import org.apache.commons.beanutils.PropertyUtils; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.AbstractData; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.dto.json.morpher.DateMorpher; -import com.fp.dto.json.morpher.TimestampMorpher; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; - -public class Serializer { - - private Serializable data; - - private String json; - - private JSONObject jsonObj; - - private JsonConfig jsonConfig; - - private MorpherRegistry morpherRegistry; - - public Serializer(Serializable pData) throws Exception { - if (pData instanceof Response) { - ((Response) pData).changeAbstractBeanToMap(); - } - this.data = pData; - this.config(); - } - - public Serializer(String pXML, boolean pIndex) { - this("" + new XMLSerializer().read(pXML)); - } - - public Serializer(String pJSON) { - this.json = pJSON.trim(); - this.config(); - if ((this.json.charAt(0) == '"') && (this.json.charAt(this.json.length() - 1) == '"')) { - this.json = this.json.substring(1, this.json.length() - 1); - } - this.jsonObj = JSONObject.fromObject(this.json, this.jsonConfig); - } - - private void config() { - this.jsonConfig = new JsonConfig(); - this.jsonConfig.registerJsonValueProcessor(Date.class, new DateValueProcessor()); - this.jsonConfig.registerJsonValueProcessor(Timestamp.class, new DateValueProcessor()); - this.jsonConfig.registerDefaultValueProcessor(Double.class, new ObjectValueProcessor()); - this.morpherRegistry = JSONUtils.getMorpherRegistry(); - Morpher dynaMorpher = new TimestampMorpher(); - this.morpherRegistry.registerMorpher(dynaMorpher); - dynaMorpher = new DateMorpher(); - this.morpherRegistry.registerMorpher(dynaMorpher); - } - - /** - * Entrega un string en formato json. - * - * @return String - * @throws Exception - */ - public final String toJSON() throws Exception { - try { - JSONObject jsonData = JSONObject.fromObject(this.data, this.jsonConfig); - return jsonData.toString(); - } catch (Exception e) { - APPLogger.getLogger().error(e, e); - throw e; - } - } - - public String toXML() throws Exception { - try { - JSONObject jsonData = JSONObject.fromObject(this.data, this.jsonConfig); - XMLSerializer xml = new XMLSerializer(); - xml.setElementName("REGISTRO"); - xml.setObjectName("FP"); - xml.setTrimSpaces(true); - xml.setRemoveNamespacePrefixFromElements(true); - xml.setSkipWhitespace(true); - xml.setSkipNamespaces(true); - String sXML = xml.write(jsonData); - while (sXML.indexOf("null=\"true\"/>") > 0) { - String aux1 = sXML.substring(0, sXML.indexOf("null=\"true\"/>")); - String aux2 = sXML.substring(sXML.indexOf("null=\"true\"/>") + 13); - sXML = aux1.substring(0, aux1.lastIndexOf("<")) + aux2; - } - return sXML; - } catch (Exception e) { - e.printStackTrace(); - throw e; - } - } - - @SuppressWarnings("unchecked") - public Object toObject(Class pType) throws Exception { - Object obj = JSONObject.toBean(this.jsonObj, pType); - if (obj instanceof Map) { - Map m = (Map) obj; - if (!m.containsKey("transportBeanClass")) { - m.put("transportBeanClass", pType.getName()); - } - // m=this.correctMap(m); - obj = this.manageMapBean(m); - } - - return obj; - } - - @SuppressWarnings("unchecked") - public T toObjectGenerics(T pType) throws Exception { - T obj = (T) JSONObject.toBean(this.jsonObj, pType.getClass()); - if (obj instanceof Map) { - Map m = (Map) obj; - if (!m.containsKey("transportBeanClass")) { - m.put("transportBeanClass", pType.getClass().getName()); - } - // m=this.correctMap(m); - obj = (T) this.manageMapBean(m); - } - - return obj; - } - - private List manageList(List pList) throws ClassNotFoundException, InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException, ParseException { - List dataList = new ArrayList(); - for (Object obj : pList) { - dataList.add(this.manageValue(obj, null)); - } - return dataList; - } - - @SuppressWarnings("unchecked") - private Object manageValue(Object pObject, Class pType) throws ClassNotFoundException, InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException, ParseException { - if (pObject == null) { - return null; - } - if (pObject instanceof String) { - if (((String) pObject).compareTo("null") == 0) { - return null; - } - } - if (pObject instanceof JSONObject) { - JSONObject obj = (JSONObject) pObject; - if (obj.isNullObject()) { - return null; - } - } - if (pType != null) { - // System.out.println(pObject+" "+"->"+pType.getName()); - return BeanManager.convertObject(pObject, pType); - } - if (pObject instanceof Double) { - return new BigDecimal("" + pObject); - } - if (pObject instanceof Map) { - Map m = (Map) pObject;// this.correctMap((Map)pObject); - return this.manageMapBean(m); - } - if (pObject instanceof MorphDynaBean) { - return this.manageBean((MorphDynaBean) pObject); - } - if (pObject instanceof List) { - return this.manageList((List) pObject); - } - if (pObject instanceof String) { - String sObj = (String) pObject; - if (sObj.length() == DateValueProcessor.DATE_TRANSPORT.length()) { - try { - return new Date(new SimpleDateFormat(DateValueProcessor.DATE_TRANSPORT).parse(sObj).getTime()); - } catch (Exception e) { - } - } - if (sObj.length() == DateValueProcessor.TIMESTAMP_TRANSPORT.length()) { - try { - return new Timestamp(new SimpleDateFormat(DateValueProcessor.TIMESTAMP_TRANSPORT).parse(sObj).getTime()); - } catch (Exception e) { - } - } - return pObject; - } - return pObject; - } - - @SuppressWarnings("unchecked") - private Object manageBean(MorphDynaBean pMorphDynaBean) throws ClassNotFoundException, InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException { - DynaProperty[] prop = pMorphDynaBean.getDynaClass().getDynaProperties(); - Map mapBean = new HashMap(); - for (DynaProperty dynaProperty : prop) { - String name = dynaProperty.getName(); - mapBean.put(name, pMorphDynaBean.get(name)); - } - if (!mapBean.containsKey("transportBeanClass")) { - mapBean.put("transportBeanClass", "java.util.HashMap"); - } - return this.manageMapBean(mapBean); - } - - private String correctType(String pType) { - if (pType.compareTo("java.util.List") == 0) { - return "java.util.ArrayList"; - } - if (pType.compareTo("java.util.Map") == 0) { - return "java.util.HashMap"; - } - return pType; - } - - @SuppressWarnings("unchecked") - private Object manageMapBean(Map pMapBean) throws ClassNotFoundException, InstantiationException, IllegalAccessException, - InvocationTargetException, NoSuchMethodException { - String classType = (String) pMapBean.get("transportBeanClass"); - if (classType == null) { - return pMapBean; - } - classType = this.correctType(classType); - Object obj = Class.forName(classType).newInstance(); - Set keys = pMapBean.keySet(); - for (Object key : keys) { - String name = (String) key; - if (name.compareTo("transportBeanClass") == 0) { - continue; - } - try { - Class type = PropertyUtils.getPropertyType(obj, name); - try { - - if (type.getPackage().getName().compareTo("java.util") == 0) { - type = null; - } - } catch (Exception e) { - } - Object value = this.manageValue(pMapBean.get(name), type); - try { - // PropertyUtils.setProperty(obj, name, value); - if (classType.compareTo("java.util.HashMap") == 0) { - ((Map) obj).put(name, value); - } else { - if (value instanceof MorphDynaBean) { - value = this.manageBean((MorphDynaBean) value); - } - if (value instanceof Map) { - value = this.manageMapBean((Map) value); - } - BeanManager.setBeanAttributeValue(obj, name, - BeanManager.convertObject(value, BeanManager.getBeanGetterMethod(obj, name).getReturnType())); - } - } catch (Exception eadd) { - if (name.indexOf("transportBeanClass") > 0) { - String prop = name.replaceAll("_transportBeanClass", ""); - Object objProp = this.prepareBean(prop, (String) value, pMapBean); - try { - // PropertyUtils.setProperty(obj, prop, objProp); - BeanManager.setBeanAttributeValue(obj, prop, - BeanManager.convertObject(objProp, BeanManager.getBeanGetterMethod(obj, prop).getReturnType())); - } catch (Exception e) { - try { - AbstractData dt = (AbstractData) obj; - dt.addAddtionalInfo(prop, objProp); - } catch (Exception e1) { - } - } - } else { - try { - if ((obj instanceof SaveRequest) && (value instanceof SaveBean)) { - ((SaveRequest) obj).putSaveBean(((SaveBean) value).getBeanAlias(), value); - } else { - //JVC 22 octubre 2012 todo el if - if(obj instanceof AbstractDataTransport){ - ((AbstractDataTransport)obj).put(name, value); - }else{ - AbstractData dt = (AbstractData) obj; - dt.addAddtionalInfo(name, value); - } - - } - } catch (Exception e1) { - } - } - } - } catch (Exception e) { - e.printStackTrace(); - continue; - } - } - return obj; - } - - @SuppressWarnings("unchecked") - private Object prepareBean(String pPrefix, String pClass, Map pMapBean) throws ClassNotFoundException, InstantiationException, - IllegalAccessException { - Class c = Class.forName(pClass); - Object obj = c.newInstance(); - Field[] fs = c.getDeclaredFields(); - for (Field field : fs) { - try { - String name = field.getName(); - if (name.compareTo("serialVersionUID") == 0) { - continue; - } - Object val = null; - try { - val = pMapBean.get(pPrefix + "_" + name); - } catch (Exception e1) { - continue; - } - BeanManager.setBeanAttributeValue(obj, name, - BeanManager.convertObject(val, BeanManager.getBeanGetterMethod(obj, name).getReturnType())); - } catch (Exception e) { - APPLogger.getLogger().debug(e); - continue; - } - } - return obj; - } -} diff --git a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/entries b/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/entries deleted file mode 100644 index a60f427..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/dto/json/morpher -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TimestampMorpher.java -file - - - - -2022-07-28T03:40:34.539768Z -85e0e0445957e6c1aab96a0a46cd2586 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -660 - -DateMorpher.java -file - - - - -2022-07-28T03:40:34.539768Z -b8f365e8aaba103cf025b5f3ab9555d3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -625 - diff --git a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/DateMorpher.java.svn-base b/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/DateMorpher.java.svn-base deleted file mode 100644 index a74f166..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/DateMorpher.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.dto.json.morpher; - -import java.sql.Date; -import java.text.SimpleDateFormat; - -import com.fp.dto.json.DateValueProcessor; - -import net.sf.ezmorph.object.AbstractObjectMorpher; - -public class DateMorpher extends AbstractObjectMorpher { - - public Object morph(Object pValue) { - if(pValue instanceof Date){ - return (Date)pValue; - } - try{ - if(pValue instanceof String){ - return new Date( new SimpleDateFormat(DateValueProcessor.DATE_TRANSPORT).parse((String)pValue).getTime()); - } - }catch(Exception e){} - return null; - } - - @SuppressWarnings("unchecked") - public Class morphsTo() { - return Date.class; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/TimestampMorpher.java.svn-base b/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/TimestampMorpher.java.svn-base deleted file mode 100644 index 254e057..0000000 --- a/base/dto/common/src/main/java/com/fp/dto/json/morpher/.svn/text-base/TimestampMorpher.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.dto.json.morpher; - -import java.sql.Timestamp; -import java.text.SimpleDateFormat; - -import net.sf.ezmorph.object.AbstractObjectMorpher; - -import com.fp.dto.json.DateValueProcessor; - -public class TimestampMorpher extends AbstractObjectMorpher { - - public Object morph(Object pValue) { - if(pValue instanceof Timestamp){ - return (Timestamp)pValue; - } - try{ - if(pValue instanceof String){ - return new Timestamp( new SimpleDateFormat(DateValueProcessor.TIMESTAMP_TRANSPORT).parse((String)pValue).getTime()); - } - }catch(Exception e){} - return null; - } - - @SuppressWarnings("unchecked") - public Class morphsTo() { - return Timestamp.class; - } - -} diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/entries b/base/dto/common/src/main/java/com/fp/excel/.svn/entries deleted file mode 100644 index f8abc07..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/excel -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ExcelToMap.java -file - - - - -2022-07-28T03:40:35.704773Z -ef7fc74d3c41a48812afe916b7ec836c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9154 - -WorkbookFactory.java -file - - - - -2022-07-28T03:40:35.705773Z -5e2b4471a1c01463536547eba1d2bbf0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3543 - -WorkbookFactoryStreamBytes.java -file - - - - -2022-07-28T03:40:35.705773Z -fb30329d5f5330505bc871e8f47a2bf0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3194 - -ExcelToMapMessages.java -file - - - - -2022-07-28T03:40:35.705773Z -113a530893ef95cc785e10ce8e376b93 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1345 - -XLSXUtil.java -file - - - - -2022-07-28T03:40:35.705773Z -7a9b4689a7d1ab88a5a687ff0a8ea923 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10514 - -FormulaManage.java -file - - - - -2022-07-28T03:40:35.706773Z -120d53ded146012cf8b1e9730d074390 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -84 - diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMap.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMap.java.svn-base deleted file mode 100644 index a3fbd29..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMap.java.svn-base +++ /dev/null @@ -1,201 +0,0 @@ -package com.fp.excel; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellValue; -import org.apache.poi.ss.usermodel.DateUtil; -import org.apache.poi.ss.usermodel.FormulaEvaluator; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; - -/** - * - * @author malmeida - */ -public class ExcelToMap implements ExcelToMapMessages { - - private WorkbookFactory wf; - private WorkbookFactoryStreamBytes wfsb; - - public ExcelToMap(String file_Path) { - this.wf = new WorkbookFactory(file_Path); - } - - /** - * - * @param arrayBytesExcel - * @param extension - */ - public ExcelToMap(byte[] arrayBytesExcel, String extension) { - this.wfsb = new WorkbookFactoryStreamBytes(arrayBytesExcel, extension); - } - - /** - * - * @return - */ - public String get_Workbook_Status() { - return this.wf.get_WorkbookFactory_Status(); - } - - public String getWorkbookStatusByte() { - return this.wfsb.getWorkbookFactoryStatus(); - } - - /** - * - * @return - */ - public Map getExcelMap() { - String workbookStatus = this.wfsb.getWorkbookFactoryStatus(); - if (workbookStatus.equals(ExcelToMapMessages.WORKBOOK_CREATED)) { - Workbook wb = wfsb.getExcelWorkBook(); - FormulaEvaluator fev = wb.getCreationHelper().createFormulaEvaluator(); - int activeSheetIndex = wb.getActiveSheetIndex(); - String activeSheetName = wb.getSheetName(activeSheetIndex); - Sheet activeSheet = wb.getSheet(activeSheetName); - Map cellList = new HashMap(); - for (Row row : activeSheet) { - for (Cell cell : row) { - int cell_Row_Index = cell.getRowIndex(); - int cell_Colum_Index = cell.getColumnIndex(); - String MapKey = "" + cell_Row_Index + ":" + cell_Colum_Index; - switch (cell.getCellType()) { - case Cell.CELL_TYPE_BOOLEAN: -// System.out.println(MapKey); - String cell_value_boolean_str = cell.getStringCellValue(); - Object bool_obj = Boolean.parseBoolean(cell_value_boolean_str); - cellList.put(MapKey, bool_obj); - break; - case Cell.CELL_TYPE_NUMERIC: - if (DateUtil.isCellDateFormatted(cell)) { -// System.out.println(MapKey); - Date cellValue_date = cell.getDateCellValue(); - long cellValue_long = cellValue_date.getTime(); - java.sql.Date sqlDate = new java.sql.Date(cellValue_long); - Object date_obj = sqlDate; - cellList.put(MapKey, date_obj); - } else { -// System.out.println(MapKey); - double cellValue_double = cell.getNumericCellValue(); - Object cell_value_bd = new BigDecimal(cellValue_double); - cellList.put(MapKey, cell_value_bd); - } - break; - case Cell.CELL_TYPE_STRING: -// System.out.println(MapKey); - Object cell_value_str = cell.getStringCellValue(); - cellList.put(MapKey, cell_value_str); - break; - case Cell.CELL_TYPE_BLANK: -// System.out.println(MapKey); - Object cell_value_blank_str = ""; - cellList.put(MapKey, cell_value_blank_str); - break; - case Cell.CELL_TYPE_ERROR: -// System.out.println(MapKey); - Object cell_value_error_str = ""; - cellList.put(MapKey, cell_value_error_str); - break; - case Cell.CELL_TYPE_FORMULA: -// System.out.println(MapKey); - CellValue cellValue = fev.evaluate(cell); - - switch (cellValue.getCellType()) { - case Cell.CELL_TYPE_BOOLEAN: -// System.out.println(MapKey); - String cell_value_boolean_f_str = cell.getStringCellValue(); - Object cell_value_boolean_f = Boolean.parseBoolean(cell_value_boolean_f_str); - cellList.put(MapKey, cell_value_boolean_f); - break; - case Cell.CELL_TYPE_NUMERIC: - if (DateUtil.isCellDateFormatted(cell)) { -// System.out.println(MapKey); - Date cellValue_date = cell.getDateCellValue(); - long cellValue_long = cellValue_date.getTime(); - java.sql.Date sqlDate = new java.sql.Date(cellValue_long); - Object date_obj = sqlDate; - cellList.put(MapKey, date_obj); - } else { -// System.out.println(MapKey); - double cellValue_double = cell.getNumericCellValue(); - Object cell_value_bd = new BigDecimal(cellValue_double); - cellList.put(MapKey, cell_value_bd); - } - break; - case Cell.CELL_TYPE_STRING: -// System.out.println(MapKey); - Object cell_value_str_f = cell.getStringCellValue(); - cellList.put(MapKey, cell_value_str_f); - break; - case Cell.CELL_TYPE_BLANK: -// System.out.println(MapKey); - Object cell_value_blank_str_f = ""; - cellList.put(MapKey, cell_value_blank_str_f); - break; - case Cell.CELL_TYPE_ERROR: -// System.out.println(MapKey); - Object cell_value_error_str_f = ""; - cellList.put(MapKey, cell_value_error_str_f); - break; - case Cell.CELL_TYPE_FORMULA: -// NUNCA OCURRE - break; - default: -// System.out.println(MapKey); - Object cell_value_indeterminado_str_f = ""; - cellList.put(MapKey, cell_value_indeterminado_str_f); - break; - } - break; - default: -// System.out.println(MapKey); - Object cell_value_indeterminado_str = ""; - cellList.put(MapKey, cell_value_indeterminado_str); - break; - } - } - } - return cellList; - } else { - return null; - } - } - - /** - * - * @param fila_init - * @param fila_final - * @param colum_init - * @param colum_final - * @return - */ - public List> get_Especific_Data(int fila_init, int fila_final, int colum_init, int colum_final) { - Map cell_list = this.getExcelMap(); - List> ldata = new ArrayList>(); - for (int i = fila_init; i <= fila_final; i++) { - Map m = new HashMap(); - for (int j = colum_init; j <= colum_final; j++) { - String Key = "" + i + ":" + j; - if (cell_list.containsKey(Key)) { - Object obj = cell_list.get(Key); - m.put(Key, obj); -// System.out.println(obj.toString()); - } else { - Object obj = "blank"; - m.put(Key, obj); -// System.out.println(obj.toString()); - } - } - ldata.add(m); - } - - return ldata; - } -} diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMapMessages.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMapMessages.java.svn-base deleted file mode 100644 index c8d6197..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/ExcelToMapMessages.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.excel; - -/** - * - * @author malmeida - */ -public interface ExcelToMapMessages { - - public final String DIRECTORY_PATH = "C:/BlueNova/Proyectos Bupartech/Netbeans Workspace/MAIA Transformer releases/MAIAWorkbookFactoryApp"; - - public final String FILE_PATH = "IncomeStatements.xlsx"; - -// public final String FILE_PATH = "IncomeStatements.xls"; - - public final String FILE_NOT_FOUND = "Libro de excel no existe en el directorio especificado: WorkbookFactory"; - - public final String INPUT_STREAM_CREATED = "Creado el flujo para el libro de excel: WorkbookFactory"; - - public final String WORKBOOK_NOT_CREATED = "No se pudo crear el libro de excel: WorkbookFactory"; - - public final String WORKBOOK_CREATED = "Libro excel creado: WorkbookFactory"; - - public final String ROW_TITLE = "Row_title"; - - public final String ROW_HEADER = "Row_header"; - - public final String ROW_DATA = "Row_data"; - - public final int CELL_NUMERIC_DATA_TYPE = 0; - - public final int CELL_STRING_DATA_TYPE = 1; - - public final int CELL_DATE_DATA_TYPE = 2; - - public final int CELL_BOOLEAN_DATA_TYPE = 3; - - public final int CELL_FORMULA_DATA_TYPE = 4; - - - -} diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/FormulaManage.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/FormulaManage.java.svn-base deleted file mode 100644 index 24be953..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/FormulaManage.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -package com.fp.excel; - -public enum FormulaManage { - CacheValue, Formula, None; -} diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactory.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactory.java.svn-base deleted file mode 100644 index 3f30bc5..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactory.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.excel; - -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.StringTokenizer; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -/** - * - * @author malmeida - */ -public class WorkbookFactory implements ExcelToMapMessages { - - private InputStream inp; - - private String file_path, workbookFactoryStatus, file_extension; - - private Workbook wb; - - public WorkbookFactory(String file_Path){ - - this.file_path = file_Path; - - this.workbookFactoryStatus = null; - - this.inp = this.input_Stream_Builder(this.file_path); - - this.wb = this.excel_Workbook_Builder(); - - this.file_extension = null; - - } - - private InputStream input_Stream_Builder(String file_Path){ - - try { - - InputStream inpm = new FileInputStream(file_Path); - - this.workbookFactoryStatus = WorkbookFactory.INPUT_STREAM_CREATED; - - return inpm; - - } catch (FileNotFoundException ex) { - - this.workbookFactoryStatus = WorkbookFactory.FILE_NOT_FOUND; - - return null; - - } - - } - - private Workbook excel_Workbook_Builder (){ - - if(this.workbookFactoryStatus.equals(WorkbookFactory.FILE_NOT_FOUND)){ - - this.workbookFactoryStatus = WorkbookFactory.WORKBOOK_NOT_CREATED; - - return null; - - }else{ - - Workbook wbm = null; - - try { - - this.file_extension = this.get_Workbook_Extension(this.file_path); - - if(this.file_extension.equals("xls")){ - - wbm = new HSSFWorkbook(this.inp); - } - - if(this.file_extension.equals("xlsx")){ - - wbm = new XSSFWorkbook(this.inp); - - } - - this.workbookFactoryStatus = WorkbookFactory.WORKBOOK_CREATED; - - return wbm; - - } catch (IOException ex) { - - this.workbookFactoryStatus = WorkbookFactory.WORKBOOK_NOT_CREATED; - - return null; - - }catch (Exception ex) { - - this.workbookFactoryStatus = WorkbookFactory.WORKBOOK_NOT_CREATED; - - return null; - - } - - } - - } - - private String get_Workbook_Extension(String file_path){ - - StringTokenizer tkn = new StringTokenizer(file_path,"."); - - String fe = null; - - while (tkn.hasMoreTokens()){ - - fe = tkn.nextToken(); - - } - - return fe; - - } - - public String get_WorkbookFactory_Status(){ - - return this.workbookFactoryStatus; - - } - - public Workbook get_ExcelWorkBook(){ - - return this.wb; - - } - -} diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactoryStreamBytes.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactoryStreamBytes.java.svn-base deleted file mode 100644 index ba8c81d..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/WorkbookFactoryStreamBytes.java.svn-base +++ /dev/null @@ -1,109 +0,0 @@ -package com.fp.excel; - -import java.io.ByteArrayInputStream; -import java.io.FileInputStream; -import java.io.FileNotFoundException; -import java.io.IOException; -import java.io.InputStream; -import java.util.StringTokenizer; -import org.apache.poi.hssf.usermodel.HSSFWorkbook; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -/** - * Clase que obtiene el archivo de excel a partir de un arreglo de bytes - * - * @author malmeida - */ -public class WorkbookFactoryStreamBytes implements ExcelToMapMessages { - - private InputStream inp; - private String workbookFactoryStatus, file_extension, extension; - private Workbook wb; - private byte[] arrayBytesExcel; - - /** - * - * @param arrayBytesExcel - * @param extension - */ - public WorkbookFactoryStreamBytes(byte[] arrayBytesExcel, String extension) { - this.workbookFactoryStatus = null; - this.arrayBytesExcel = arrayBytesExcel; - this.inp = inputStreamBuilder(this.arrayBytesExcel); - this.extension = extension; - this.wb = this.excelWorkbookBuilder(this.extension); - } - - /** - * - * @param arrayBytesExcel - * @return - */ - private InputStream inputStreamBuilder(byte[] arrayBytesExcel) { - try { - InputStream inpm = new ByteArrayInputStream(arrayBytesExcel); - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.INPUT_STREAM_CREATED; - return inpm; - } catch (Exception ex) { - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.FILE_NOT_FOUND; - return null; - } - } - - /** - * - * @param fileExtension - * @return - */ - private Workbook excelWorkbookBuilder(String fileExtension) { - if (this.workbookFactoryStatus.equals(WorkbookFactoryStreamBytes.FILE_NOT_FOUND)) { - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.WORKBOOK_NOT_CREATED; - return null; - } else { - Workbook wbm = null; - try { - this.file_extension = fileExtension; - if (this.file_extension.equals("xls")) { - wbm = new HSSFWorkbook(this.inp); - } - if (this.file_extension.equals("xlsx")) { - wbm = new XSSFWorkbook(this.inp); - } - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.WORKBOOK_CREATED; - return wbm; - } catch (IOException ex) { - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.WORKBOOK_NOT_CREATED; - return null; - } catch (Exception ex) { - this.workbookFactoryStatus = WorkbookFactoryStreamBytes.WORKBOOK_NOT_CREATED; - return null; - } - } - - } - - /** - * - * @return - */ - public String getWorkbookFactoryStatus() { - return this.workbookFactoryStatus; - } - - /** - * - * @return - */ - public String getWorkbookFactoryStatusByte() { - return this.workbookFactoryStatus; - } - - /** - * - * @return - */ - public Workbook getExcelWorkBook() { - return this.wb; - } -} \ No newline at end of file diff --git a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/XLSXUtil.java.svn-base b/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/XLSXUtil.java.svn-base deleted file mode 100644 index e359fd8..0000000 --- a/base/dto/common/src/main/java/com/fp/excel/.svn/text-base/XLSXUtil.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.excel; - -import java.io.InputStream; -import java.io.OutputStream; -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.NoSuchElementException; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.CellStyle; -import org.apache.poi.ss.usermodel.DataFormat; -import org.apache.poi.ss.usermodel.Font; -import org.apache.poi.ss.usermodel.IndexedColors; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.ss.usermodel.Sheet; -import org.apache.poi.ss.usermodel.Workbook; -import org.apache.poi.xssf.usermodel.XSSFCellStyle; -import org.apache.poi.xssf.usermodel.XSSFColor; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; - -import com.fp.common.helper.BeanManager; - -public class XLSXUtil { - - private Workbook book; - - public Workbook getBook() { - return this.book; - } - private Sheet sheet; - private int sheetIndex; - private int maxSheets; - private int index; - - public XLSXUtil() { - this.book = new XSSFWorkbook(); - this.sheet = this.book.createSheet(); - this.index = 0; - } - - public XLSXUtil(InputStream pIn) throws Exception { - this.book = new XSSFWorkbook(pIn); - this.maxSheets = this.book.getNumberOfSheets(); - this.sheet = this.book.getSheetAt(0); - this.index = 0; - } - - public void addRecord(Object[] pRecord, String styleRow) throws Exception { - - CellStyle style = (styleRow.equals("H"))?this.createStyle(this.book):null; - Row row = this.sheet.createRow(this.index++); - - for (int i = 0; i < pRecord.length; i++) { - Object object = pRecord[i]; - Cell cell = null; - if (object instanceof Number) { - cell = row.createCell(i, Cell.CELL_TYPE_NUMERIC); - cell.setCellValue(BeanManager.convertObject(object, BigDecimal.class).doubleValue()); - cell.setCellStyle(style); - } - if (object instanceof Date) { - cell = row.createCell(i); - CellStyle styleDate = this.book.createCellStyle(); - DataFormat fmt = this.book.createDataFormat(); - styleDate.setDataFormat(fmt.getFormat("yyyy-MM-dd")); - cell.setCellStyle(styleDate); - cell.setCellValue((Date) object); - } - if (cell == null) { - cell = row.createCell(i, Cell.CELL_TYPE_STRING); - cell.setCellValue(BeanManager.convertObject(object, String.class)); - cell.setCellStyle(style); - } - - } - } - - public Map> readSheet() { - Map> data = new HashMap>(); - for (int i = this.sheet.getFirstRowNum(); i <= this.sheet.getLastRowNum(); i++) { - Map record = this.manageRecord(i); - data.put(i, record); - } - return data; - } - - public Map manageRecord(int pIndex) { - return this.manageRecord(pIndex, -1, FormulaManage.None); - } - - public Map manageRecord(int pIndex, int pEnd, FormulaManage pManage) { - Map record = new HashMap(); - Row r = this.sheet.getRow(pIndex); - if (r == null) { - return record; - } - Iterator ic = r.cellIterator(); - while (ic.hasNext()) { - Cell c = ic.next(); - if ((c.getColumnIndex() > pEnd) && (pEnd > 0)) { - break; - } - Object value = this.manageCell(c,pManage);//(pManage==FormulaManage.None)?this.manageCell(c, pManage):this.manageCellValue(c); - if (value == null) { - continue; - } - record.put(c.getColumnIndex(), value); - } - return record; - } - - public Map manageRecordForm(int pIndex, int pInit, int pEnd, FormulaManage pManage) { - Map record = new HashMap(); - Row r = this.sheet.getRow(pIndex); - if (r == null) { - return record; - } - for (Cell c : r) { - if (c.getColumnIndex() >= pInit && c.getColumnIndex() < pEnd) { - Object value = this.manageCellValue(c); - if (value == null) { - continue; - } - record.put(c.getColumnIndex(), value); - } else if (c.getColumnIndex() >= pEnd) { - break; - } - } - return record; - } - - private Object manageCell(Cell pCell, FormulaManage pManage) { - Object val = null; - switch (pCell.getCellType()) { - case Cell.CELL_TYPE_NUMERIC: - val = Math.round(pCell.getNumericCellValue() * 100) / 100d; - break; - case Cell.CELL_TYPE_STRING: - val = pCell.getStringCellValue(); - val = pCell.getRichStringCellValue(); - break; - case Cell.CELL_TYPE_BLANK: - val = pCell.getStringCellValue(); - break; - case Cell.CELL_TYPE_FORMULA: - /* - * FormulaEvaluator evaluator = this.book.getCreationHelper().createFormulaEvaluator(); try { CellValue - * cellValue = evaluator.evaluate(pCell); switch (cellValue.getCellType()) { case Cell.CELL_TYPE_NUMERIC: - * val = cellValue.getNumberValue(); break; case Cell.CELL_TYPE_STRING: val = cellValue.getStringValue(); - * break; case Cell.CELL_TYPE_BOOLEAN: val = cellValue.getBooleanValue(); break; case Cell.CELL_TYPE_ERROR: - * val = cellValue.getErrorValue(); break; default: val = pCell.getCellFormula(); } } catch (Exception e) { - * val = pCell.getCellFormula(); break; } - */ - if (pManage == FormulaManage.None) { - val = null; - break; - } - if (pManage == FormulaManage.Formula) { - val = pCell.getCellFormula(); - break; - } - switch (pCell.getCachedFormulaResultType()) { - case Cell.CELL_TYPE_NUMERIC: - val = pCell.getNumericCellValue(); - break; - case Cell.CELL_TYPE_STRING: - val = pCell.getRichStringCellValue(); - break; - default: - val = pCell.getCellFormula(); - // throw new IllegalArgumentException(); - } - - break; - case Cell.CELL_TYPE_BOOLEAN: - val = pCell.getBooleanCellValue(); - break; - case Cell.CELL_TYPE_ERROR: - val = pCell.getErrorCellValue(); - break; - } - return val; - } - - /** - * Entrega el valor de la celda - * @param pCell Cell - * @return value Object - */ - private Object manageCellValue(Cell pCell) { - Object val = null; - double value=0; - switch (pCell.getCellType()) { - case Cell.CELL_TYPE_NUMERIC: - value=pCell.getNumericCellValue(); - val = Math.round(value * 100) / 100d; - break; - case Cell.CELL_TYPE_STRING: - val = pCell.getStringCellValue(); - break; - case Cell.CELL_TYPE_BLANK: - val = null; - break; - case Cell.CELL_TYPE_FORMULA: - - switch (pCell.getCachedFormulaResultType()) { - case Cell.CELL_TYPE_NUMERIC: - value=pCell.getNumericCellValue(); - val = Math.round(value * 100) / 100d; - break; - case Cell.CELL_TYPE_STRING: - val=pCell.getRichStringCellValue(); - val=pCell.getStringCellValue(); -// val = pCell.getRichStringCellValue(); - break; - case Cell.CELL_TYPE_BLANK: - val = null; - break; - case Cell.CELL_TYPE_ERROR: - val = null; - break; - default: - val=null; -// val = pCell.getCellFormula(); - } - - break; - case Cell.CELL_TYPE_BOOLEAN: - val = pCell.getBooleanCellValue(); - break; - case Cell.CELL_TYPE_ERROR: - val = pCell.getErrorCellValue(); - break; - } - return val; - } - - public void save(OutputStream pOut) throws Exception { - this.book.write(pOut); - } - - public String getSheetName() { - return this.sheet.getSheetName(); - } - - public void nextSheet() { - if (this.sheetIndex >= this.maxSheets) { - throw new NoSuchElementException(); - } - this.sheet = this.book.getSheetAt(++this.sheetIndex); - this.index = 0; - } - - public void goSheet(String pName) { - int ind = this.book.getSheetIndex(pName); - if ((ind < 0) || (ind >= this.maxSheets)) { - throw new NoSuchElementException(); - } - this.sheet = this.book.getSheetAt(ind); - this.index = 0; - } - - private CellStyle createStyle(Workbook wb){ - CellStyle style = wb.createCellStyle(); - style.setBorderRight(CellStyle.BORDER_THIN); - style.setRightBorderColor(IndexedColors.GREY_80_PERCENT.getIndex()); - style.setBorderBottom(CellStyle.BORDER_THIN); - style.setBottomBorderColor(IndexedColors.GREY_80_PERCENT.getIndex()); - style.setBorderLeft(CellStyle.BORDER_THIN); - style.setLeftBorderColor(IndexedColors.GREY_80_PERCENT.getIndex()); - style.setBorderTop(CellStyle.BORDER_THIN); - style.setTopBorderColor(IndexedColors.GREY_80_PERCENT.getIndex()); - - Font header2Font = wb.createFont(); - header2Font.setColor(IndexedColors.WHITE.getIndex()); - XSSFCellStyle style_h_2 = (XSSFCellStyle) style; - style_h_2.setAlignment(CellStyle.ALIGN_CENTER); - style_h_2.setFillForegroundColor(new XSSFColor(new java.awt.Color(86, 142, 213))); - style_h_2.setFillPattern(CellStyle.SOLID_FOREGROUND); - style_h_2.setFont(header2Font); - - return style_h_2; - } -} diff --git a/base/dto/common/src/main/java/com/fp/general/.svn/entries b/base/dto/common/src/main/java/com/fp/general/.svn/entries deleted file mode 100644 index 26c58c8..0000000 --- a/base/dto/common/src/main/java/com/fp/general/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/general -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/general/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/general/exception/.svn/entries deleted file mode 100644 index a7a2a72..0000000 --- a/base/dto/common/src/main/java/com/fp/general/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/general/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -GeneralException.java -file - - - - -2022-07-28T03:40:36.216775Z -b2e93a4b8d7d6333fe127335a8784003 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1095 - diff --git a/base/dto/common/src/main/java/com/fp/general/exception/.svn/text-base/GeneralException.java.svn-base b/base/dto/common/src/main/java/com/fp/general/exception/.svn/text-base/GeneralException.java.svn-base deleted file mode 100644 index 09953e7..0000000 --- a/base/dto/common/src/main/java/com/fp/general/exception/.svn/text-base/GeneralException.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -package com.fp.general.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -@ApplicationException(rollback=true) -public class GeneralException extends APPException{ - - /**Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public GeneralException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public GeneralException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/installment/.svn/entries b/base/dto/common/src/main/java/com/fp/installment/.svn/entries deleted file mode 100644 index 2db1c90..0000000 --- a/base/dto/common/src/main/java/com/fp/installment/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/installment -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/installment/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/installment/exception/.svn/entries deleted file mode 100644 index 6edde85..0000000 --- a/base/dto/common/src/main/java/com/fp/installment/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/installment/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -InstallmentException.java -file - - - - -2022-07-28T03:40:35.483772Z -c401515893115d87b2ba10fae759cb2c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1320 - diff --git a/base/dto/common/src/main/java/com/fp/installment/exception/.svn/text-base/InstallmentException.java.svn-base b/base/dto/common/src/main/java/com/fp/installment/exception/.svn/text-base/InstallmentException.java.svn-base deleted file mode 100644 index acab334..0000000 --- a/base/dto/common/src/main/java/com/fp/installment/exception/.svn/text-base/InstallmentException.java.svn-base +++ /dev/null @@ -1,40 +0,0 @@ -package com.fp.installment.exception; - - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete Installment, el cual se encarga de generacion y manejo de tablas de - * amortizacion. - * @author Jorge Vaca - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class InstallmentException extends APPException{ - - /**Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public InstallmentException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public InstallmentException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/loan/.svn/entries b/base/dto/common/src/main/java/com/fp/loan/.svn/entries deleted file mode 100644 index 7e847f5..0000000 --- a/base/dto/common/src/main/java/com/fp/loan/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/loan -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/loan/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/loan/exception/.svn/entries deleted file mode 100644 index afcd4a0..0000000 --- a/base/dto/common/src/main/java/com/fp/loan/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/loan/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LoanException.java -file - - - - -2022-07-28T03:40:35.333771Z -663542d976a5cd75c89019e9d40013ec -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1218 - diff --git a/base/dto/common/src/main/java/com/fp/loan/exception/.svn/text-base/LoanException.java.svn-base b/base/dto/common/src/main/java/com/fp/loan/exception/.svn/text-base/LoanException.java.svn-base deleted file mode 100644 index 5b8031f..0000000 --- a/base/dto/common/src/main/java/com/fp/loan/exception/.svn/text-base/LoanException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.loan.exception; - - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete loan o cuentas de credito y cartera. - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class LoanException extends APPException{ - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public LoanException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public LoanException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/mail/.svn/entries b/base/dto/common/src/main/java/com/fp/mail/.svn/entries deleted file mode 100644 index 1c25903..0000000 --- a/base/dto/common/src/main/java/com/fp/mail/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/mail -svn://172.17.26.185/COMACO - - - -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Mail.java -file - - - - -2022-07-28T03:40:34.212766Z -4dc066b6c20f5b5deb2381e79938be2c -2016-02-05T16:15:03.013395Z -4436 -fpazmino - - - - - - - - - - - - - - - - - - - - - -13620 - diff --git a/base/dto/common/src/main/java/com/fp/mail/.svn/text-base/Mail.java.svn-base b/base/dto/common/src/main/java/com/fp/mail/.svn/text-base/Mail.java.svn-base deleted file mode 100644 index 19df6f6..0000000 --- a/base/dto/common/src/main/java/com/fp/mail/.svn/text-base/Mail.java.svn-base +++ /dev/null @@ -1,489 +0,0 @@ -/* - * - */ -package com.fp.mail; - -import java.util.Date; -import java.util.Properties; - -import javax.activation.DataHandler; -import javax.activation.FileDataSource; -import javax.mail.Authenticator; -import javax.mail.BodyPart; -import javax.mail.Message; -import javax.mail.PasswordAuthentication; -import javax.mail.Session; -import javax.mail.Transport; -import javax.mail.internet.InternetAddress; -import javax.mail.internet.MimeBodyPart; -import javax.mail.internet.MimeMessage; -import javax.mail.internet.MimeMultipart; -import javax.mail.util.ByteArrayDataSource; - -import com.fp.common.logger.APPLogger; -import com.fp.common.properties.PropertiesHandler; - -// TODO: Auto-generated Javadoc -/** - * Class Mail encargada del envío de correos. - * - * @author gfiallos - */ -public class Mail { - - /** - * Class SMTPAuthenticator encargada de establecer los parametros de autenticación con el Servidor de Correo. - * - * @author gfiallos - */ - private class SMTPAuthenticator extends Authenticator { - - /** - * Obtiene el valor de password authentication. - * - * @return Valor de password authentication - */ - @Override - public PasswordAuthentication getPasswordAuthentication() { - try { - PropertiesHandler ph = new PropertiesHandler("mail"); - String username = ph.getStringValue("mail.smtp.user"); - String password1 = ph.getStringValue("mail.smtp.password"); - return new PasswordAuthentication(username, password1); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - return null; - } - } - - /** El valor de bcc. */ - private String bcc; - - /** El valor de cc. */ - private String cc; - - /** El valor de cont. */ - private String cont = null; - - /** El valor de from. */ - private String from; - - /** El valor de mailer. */ - private String mailer = ""; - - /** El valor de port. */ - private int port; - - /** El valor de user. */ - private String user; - - /** El valor de password. */ - private String password; - - /** El valor de auth. */ - private boolean auth; - - /** El valor de mail data. */ - private MimeMultipart mailData; - - /** El valor de mailhost. */ - private String mailhost = null; - - /** El valor de subject. */ - private String subject = null; - - /** El valor de to. */ - private String to = null; - - /** El valor de smtps. */ - private boolean smtps; - - /** El valor de content message type. */ - private String contentMessageType = "text/html"; - - /** - * Crea una nueva instancia de mail. - * - * @param pSubject the subject - * @param pMessage the message - * @param pTo the to - * @throws Exception la exception - */ - public Mail(String pSubject, String pMessage, String pTo) throws Exception { - this(pSubject, pMessage, pTo, null, null, true); - } - - /** - * Crea una nueva instancia de mail. - * - * @param pSubject the subject - * @param pMessage the message - * @param pTo the to - * @param pCopy the copy - * @throws Exception la exception - */ - public Mail(String pSubject, String pMessage, String pTo, String pCopy) throws Exception { - this(pSubject, pMessage, pTo, pCopy, null, true); - } - - /** - * Crea una nueva instancia de mail. - * - * @param pSubject the subject - * @param pMessage the message - * @param pTo the to - * @param pCopy the copy - * @param pBcc the bcc - * @param pInit the init - * @throws Exception la exception - */ - public Mail(String pSubject, String pMessage, String pTo, String pCopy, String pBcc, boolean pInit) throws Exception { - if (pInit) { - this.init(); - } - this.to = pTo; - this.subject = pSubject; - this.cc = pCopy; - this.bcc = pBcc; - - this.cont = pMessage; - if (this.cont != null) { - this.manageContent(); - } - - } - - /** - * Permite poner una plantilla de descripcion al mail - * @param pMessage - * @throws Exception - */ - public void setCuerpoMail(String pMessage) throws Exception { - this.cont = pMessage; - if (this.cont != null) { - this.manageContent(); - } - } - - /** - * Método que implementa la construcción del contenido del mail. - * - * @throws Exception la exception - */ - private void manageContent() throws Exception { - BodyPart content = new MimeBodyPart(); - ByteArrayDataSource bad = new ByteArrayDataSource(this.cont.getBytes(), this.contentMessageType); - DataHandler dh = new DataHandler(bad); - content.setDataHandler(dh); - - this.mailData = new MimeMultipart(); - this.mailData.addBodyPart(content); - } - - /** - * Entrega el valor de contentMessageType. - * - * @return Valor de contentMessageType - */ - public String getContentMessageType() { - return this.contentMessageType; - } - - /** - * Fija un nuevo valor en contentMessageType. - * - * @param pContentMessageType nuevo valor para contentMessageType - */ - public void setContentMessageType(String pContentMessageType) { - this.contentMessageType = pContentMessageType; - } - - /** - * Inicia los datos básicos para el envío del Correo. - * - * @throws Exception la exception - */ - protected void init() throws Exception { - PropertiesHandler ph = new PropertiesHandler("mail"); - this.from = ph.getValue("mail.from"); - this.mailhost = ph.getValue("mail.smtp.server"); - this.port = ph.getIntValue("mail.smtp.port"); - this.user = ph.getStringValue("mail.smtp.user"); - this.password = ph.getStringValue("mail.smtp.password"); - this.auth = ph.getBooleanValue("mail.smtp.auth"); - this.smtps = ph.getBooleanValue("mail.smtps"); - } - - /** - * Configura el envío de Correos. - * - * @param pFrom Remitente - * @param pMailhost Servidor SMTP - * @param pPort Puerto SMTP - * @param pUser Usuario de ingreso al servidor SMTP - * @param pPassword Password de ingreso al servidor SMTP - * @param pAuth Indicador si se requiere autenticación con el Servidor - * @param pSMTPS Indicador si el servidor maneja protocolo seguro - * @throws Exception la exception - */ - public void config(String pFrom, String pMailhost, int pPort, String pUser, String pPassword, boolean pAuth, boolean pSMTPS) throws Exception { - this.from = pFrom; - this.mailhost = pMailhost; - this.port = pPort; - this.user = pUser; - this.password = pPassword; - this.auth = pAuth; - this.smtps = pSMTPS; - } - - /** - * Adiciona un attachment. - * - * @param pName the name - * @param pPath the path - * @throws Exception la exception - */ - public void addAttachment(String pName, String pPath) throws Exception { - try{ - BodyPart attach = new MimeBodyPart(); - attach.setDataHandler(new DataHandler(new FileDataSource(pPath))); - attach.setFileName(pName); - if(mailData==null){ - this.mailData = new MimeMultipart(); - } - this.mailData.addBodyPart(attach); - }catch(Exception err){ - APPLogger.getLogger().error(err); - } - } - - /** - * Adiciona un attachment. - * - * @param pName the name - * @param bytesAttachment the bytes attachment - * @param contentType the content type - * @throws Exception la exception - */ - public void addAttachment(String pName, byte[] bytesAttachment, String contentType) throws Exception { - try{ - BodyPart attach = new MimeBodyPart(); - ByteArrayDataSource bad = new ByteArrayDataSource(bytesAttachment, contentType); - DataHandler dh = new DataHandler(bad); - attach.setDataHandler(dh); - attach.setFileName(pName); - if(mailData==null){ - this.mailData = new MimeMultipart(); - } - this.mailData.addBodyPart(attach); - }catch(Exception err){ - APPLogger.getLogger().error(err); - } - } - - /** - * Envía el Correo. - * - * @throws Exception la exception - */ - public void send() throws Exception { - if (this.mailData == null) { - this.manageContent(); - } - Properties props = System.getProperties(); - props.put("mail.smtp.localhost", "mail.google.com"); - if (this.mailhost != null) { - props.put("mail.smtp.host", this.mailhost); - props.setProperty("mail.smtp.port", "" + this.port); - if (this.smtps) { - props.put("mail.smtp.ssl", "true"); - props.put("mail.smtp.starttls.enable", "true"); - props.put("mail.smtp.socketFactory.class", "javax.net.ssl.SSLSocketFactory"); - props.put("mail.smtp.socketFactory.fallback", "false"); - } - props.setProperty("mail.smtp.auth", "" + this.auth); - - } - - Session session = null; - if (this.smtps) { - @SuppressWarnings("synthetic-access") - Authenticator auth1 = new SMTPAuthenticator(); - session = Session.getDefaultInstance(props, auth1); - } else { - session = Session.getDefaultInstance(props, null); - } - Message msg = new MimeMessage(session); - - msg.setFrom(new InternetAddress(this.from)); - msg.setRecipients(Message.RecipientType.TO, InternetAddress.parse(this.to, false)); - - if (this.cc != null) { - msg.setRecipients(Message.RecipientType.CC, InternetAddress.parse(this.cc, false)); - } - - if (this.bcc != null) { - msg.setRecipients(Message.RecipientType.BCC, InternetAddress.parse(this.bcc, false)); - } - - msg.setSubject(this.subject); - - msg.setContent(this.mailData); - msg.setHeader("X-Mailer", this.mailer); - msg.setSentDate(new Date()); - Transport t = null; - if (this.smtps || !this.auth) { - Transport.send(msg); - } - else { - t = session.getTransport("smtp"); - t.connect(this.mailhost, this.port, this.user, this.password); - t.sendMessage(msg, msg.getAllRecipients()); - t.close(); - } - - } - - /** - * Entrega el valor de bcc. - * - * @return Valor de bcc - */ - public String getBcc() { - return this.bcc; - } - - /** - * Fija un nuevo valor en bcc. - * - * @param pBcc nuevo valor para bcc - */ - public void setBcc(String pBcc) { - this.bcc = pBcc; - } - - /** - * Entrega el valor de cc. - * - * @return Valor de cc - */ - public String getCc() { - return this.cc; - } - - /** - * Fija un nuevo valor en cc. - * - * @param pCc nuevo valor para cc - */ - public void setCc(String pCc) { - this.cc = pCc; - } - - /** - * Entrega el valor de cont. - * - * @return Valor de cont - */ - public String getCont() { - return this.cont; - } - - /** - * Fija un nuevo valor en cont. - * - * @param pCont nuevo valor para cont - */ - public void setCont(String pCont) { - this.cont = pCont; - } - - /** - * Entrega el valor de from. - * - * @return Valor de from - */ - public String getFrom() { - return this.from; - } - - /** - * Fija un nuevo valor en from. - * - * @param pFrom nuevo valor para from - */ - public void setFrom(String pFrom) { - this.from = pFrom; - } - - /** - * Entrega el valor de mailer. - * - * @return Valor de mailer - */ - public String getMailer() { - return this.mailer; - } - - /** - * Fija un nuevo valor en mailer. - * - * @param pMailer nuevo valor para mailer - */ - public void setMailer(String pMailer) { - this.mailer = pMailer; - } - - /** - * Entrega el valor de subject. - * - * @return Valor de subject - */ - public String getSubject() { - return this.subject; - } - - /** - * Fija un nuevo valor en subject. - * - * @param pSubject nuevo valor para subject - */ - public void setSubject(String pSubject) { - this.subject = pSubject; - } - - /** - * Entrega el valor de to. - * - * @return Valor de to - */ - public String getTo() { - return this.to; - } - - /** - * Fija un nuevo valor en to. - * - * @param pTo nuevo valor para to - */ - public void setTo(String pTo) { - this.to = pTo; - } - - public Mail() { - } - public static void main(String[] args) { - try { - Mail m = new Mail(); - m.config("notificacion@sbs.gob.ec", "5.9.144.187", 26, null, null, false, false); - m.setTo("pruebas@sbs.gob.ec"); - m.setSubject("Prueba mail maia"); - m.setCont("texto de prueba de correo"); - m.send(); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - - } -} diff --git a/base/dto/common/src/main/java/com/fp/persistence/.svn/entries b/base/dto/common/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 29682c4..0000000 --- a/base/dto/common/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -commondb -dir - diff --git a/base/dto/common/src/main/java/com/fp/persistence/commondb/.svn/entries b/base/dto/common/src/main/java/com/fp/persistence/commondb/.svn/entries deleted file mode 100644 index 5fa5cd4..0000000 --- a/base/dto/common/src/main/java/com/fp/persistence/commondb/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/persistence/commondb -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/entries deleted file mode 100644 index f74fa00..0000000 --- a/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/persistence/commondb/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CommondbException.java -file - - - - -2022-07-28T03:40:34.332767Z -fde4d164323d36e319a17ef4f9a91351 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1235 - diff --git a/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/CommondbException.java.svn-base b/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/CommondbException.java.svn-base deleted file mode 100644 index bd13b80..0000000 --- a/base/dto/common/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/CommondbException.java.svn-base +++ /dev/null @@ -1,39 +0,0 @@ - -package com.fp.persistence.commondb.exception; - -import com.fp.common.exception.APPException; - - -/** - * Manejo de excepcion del paquete comun del core. - * @author Jorge Vaca. - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class CommondbException extends APPException { - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de CommonException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CommondbException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de CommonException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public CommondbException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/receivable/.svn/entries b/base/dto/common/src/main/java/com/fp/receivable/.svn/entries deleted file mode 100644 index 24099b7..0000000 --- a/base/dto/common/src/main/java/com/fp/receivable/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/receivable -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/entries deleted file mode 100644 index 5202316..0000000 --- a/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/receivable/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ReceivableException.java -file - - - - -2022-07-28T03:40:35.775773Z -f4b5d036f4f28e73b0a9a578728ef1a4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1248 - diff --git a/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/text-base/ReceivableException.java.svn-base b/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/text-base/ReceivableException.java.svn-base deleted file mode 100644 index d3bcfa6..0000000 --- a/base/dto/common/src/main/java/com/fp/receivable/exception/.svn/text-base/ReceivableException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.receivable.exception; - - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete receivable (cuentas por cobrar). - * @author amerchan - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class ReceivableException extends APPException{ - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de ReceivableException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ReceivableException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de ReceivableException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ReceivableException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/telered/.svn/entries b/base/dto/common/src/main/java/com/fp/telered/.svn/entries deleted file mode 100644 index 3567da5..0000000 --- a/base/dto/common/src/main/java/com/fp/telered/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/telered -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/telered/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/telered/exception/.svn/entries deleted file mode 100644 index 2e40e9e..0000000 --- a/base/dto/common/src/main/java/com/fp/telered/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/telered/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TeleredException.java -file - - - - -2022-07-28T03:40:34.247766Z -f06db173947dcb7a6a562f765b8ccc29 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1248 - diff --git a/base/dto/common/src/main/java/com/fp/telered/exception/.svn/text-base/TeleredException.java.svn-base b/base/dto/common/src/main/java/com/fp/telered/exception/.svn/text-base/TeleredException.java.svn-base deleted file mode 100644 index 27d84da..0000000 --- a/base/dto/common/src/main/java/com/fp/telered/exception/.svn/text-base/TeleredException.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.telered.exception; - -import javax.ejb.ApplicationException; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete de telered. - * @author Jorge Vaca. - * @version 2.1 - */ -@ApplicationException(rollback=true) -public class TeleredException extends APPException{ - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de TeleredException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TeleredException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de TeleredException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TeleredException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } - -} diff --git a/base/dto/common/src/main/java/com/fp/teller/.svn/entries b/base/dto/common/src/main/java/com/fp/teller/.svn/entries deleted file mode 100644 index 244e12b..0000000 --- a/base/dto/common/src/main/java/com/fp/teller/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/teller -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/teller/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/teller/exception/.svn/entries deleted file mode 100644 index 8e608d1..0000000 --- a/base/dto/common/src/main/java/com/fp/teller/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/teller/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TellerException.java -file - - - - -2022-07-28T03:40:34.665768Z -c10af6c644d570f1d8fa5fabbe9140d1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1305 - diff --git a/base/dto/common/src/main/java/com/fp/teller/exception/.svn/text-base/TellerException.java.svn-base b/base/dto/common/src/main/java/com/fp/teller/exception/.svn/text-base/TellerException.java.svn-base deleted file mode 100644 index 5c225f2..0000000 --- a/base/dto/common/src/main/java/com/fp/teller/exception/.svn/text-base/TellerException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.teller.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete demanddeposit o cuentas a la vista. - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class TellerException extends APPException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de TellerException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TellerException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de TellerException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TellerException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/term/.svn/entries b/base/dto/common/src/main/java/com/fp/term/.svn/entries deleted file mode 100644 index 9d8aa62..0000000 --- a/base/dto/common/src/main/java/com/fp/term/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/term -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/term/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/term/exception/.svn/entries deleted file mode 100644 index e143025..0000000 --- a/base/dto/common/src/main/java/com/fp/term/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/term/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TermException.java -file - - - - -2022-07-28T03:40:35.994774Z -7fe071310253a41dc80d81e3c0bbe880 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1211 - diff --git a/base/dto/common/src/main/java/com/fp/term/exception/.svn/text-base/TermException.java.svn-base b/base/dto/common/src/main/java/com/fp/term/exception/.svn/text-base/TermException.java.svn-base deleted file mode 100644 index 122a212..0000000 --- a/base/dto/common/src/main/java/com/fp/term/exception/.svn/text-base/TermException.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.term.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete term, certificados de deposito. - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class TermException extends APPException{ - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TermException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de LoanException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TermException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/timedeposit/.svn/entries b/base/dto/common/src/main/java/com/fp/timedeposit/.svn/entries deleted file mode 100644 index ba809d3..0000000 --- a/base/dto/common/src/main/java/com/fp/timedeposit/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/timedeposit -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/entries deleted file mode 100644 index 116a03c..0000000 --- a/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/timedeposit/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TimeDepositException.java -file - - - - -2022-07-28T03:40:34.423767Z -b94f76f35606e62988980298a5c7c66a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1224 - diff --git a/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/text-base/TimeDepositException.java.svn-base b/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/text-base/TimeDepositException.java.svn-base deleted file mode 100644 index 532967f..0000000 --- a/base/dto/common/src/main/java/com/fp/timedeposit/exception/.svn/text-base/TimeDepositException.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.timedeposit.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete timedeposit o certificados de deposito. - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback=true) -public class TimeDepositException extends APPException{ - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de TimeDepositException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TimeDepositException(String code, String message, Exception pCause,Object... pParameters){ - super(code, message, pCause,pParameters); - } - - /** - * Crea una instancia de TimeDepositException. - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativ - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public TimeDepositException(String code, String message, Object... pParameters){ - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/viaticos/.svn/entries b/base/dto/common/src/main/java/com/fp/viaticos/.svn/entries deleted file mode 100644 index 446c93b..0000000 --- a/base/dto/common/src/main/java/com/fp/viaticos/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/viaticos -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/entries deleted file mode 100644 index aae1228..0000000 --- a/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/viaticos/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ViaticosException.java -file - - - - -2022-07-28T03:40:34.152766Z -ee8ef88974c7e0b4b324452af2da52d4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1340 - diff --git a/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/text-base/ViaticosException.java.svn-base b/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/text-base/ViaticosException.java.svn-base deleted file mode 100644 index 5deb9e4..0000000 --- a/base/dto/common/src/main/java/com/fp/viaticos/exception/.svn/text-base/ViaticosException.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.viaticos.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepcion del paquete demanddeposit o cuentas a la vista. - * - * @author Jorge Vaca - * @version 2.1 - */ -@javax.ejb.ApplicationException(rollback = true) -public class ViaticosException extends APPException { - - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de ViaticosException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - * @param pCause Excepcion original, cuando esta no se origina en api's de terceros. - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ViaticosException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de ViaticosException. - * - * @param code Codigo de mensaje aplicativo. - * @param message Mensaje aplicativo - * @param pParameters Arreglo de parametros a presentar adcionales al mensaje aplicativo. - */ - public ViaticosException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/com/fp/warranty/.svn/entries b/base/dto/common/src/main/java/com/fp/warranty/.svn/entries deleted file mode 100644 index eeb260e..0000000 --- a/base/dto/common/src/main/java/com/fp/warranty/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/warranty -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -exception -dir - diff --git a/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/entries b/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/entries deleted file mode 100644 index af5b9e8..0000000 --- a/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/com/fp/warranty/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -WarrantyException.java -file - - - - -2022-07-28T03:40:36.052774Z -0dba8f60b97a28f8ecab5c5c14848523 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1243 - diff --git a/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/text-base/WarrantyException.java.svn-base b/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/text-base/WarrantyException.java.svn-base deleted file mode 100644 index bb88a88..0000000 --- a/base/dto/common/src/main/java/com/fp/warranty/exception/.svn/text-base/WarrantyException.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.warranty.exception; - -import com.fp.common.exception.APPException; - -/** - * Manejo de excepciones del paquete de garantias - * @author jarias - */ -@javax.ejb.ApplicationException(rollback = true) -public class WarrantyException extends APPException { - - /** - * Version de la clase - */ - private static final long serialVersionUID = 1L; - - /** - * Crea una instancia de WarrantyException - * @param code Codigo de mensaje aplicativo - * @param message Mensaje aplicativo - * @param pCause Excepcion original,cuando esta no se origina en apis de terceros - * @param pParameters Arreglo de parametros a presentar adicionales al mensaje aplicativo - */ - public WarrantyException(String code, String message, Exception pCause, Object... pParameters) { - super(code, message, pCause, pParameters); - } - - /** - * Crea una instancia de WarrantyException - * @param code Codigo de mensaje aplicativo - * @param message Mensaje aplicativo - * @param pParameters Arreglo de parametros a presentar adicionales al mensaje aplicativo - */ - public WarrantyException(String code, String message, Object... pParameters) { - super(code, message, pParameters); - } -} diff --git a/base/dto/common/src/main/java/test/.svn/entries b/base/dto/common/src/main/java/test/.svn/entries deleted file mode 100644 index 4c866a4..0000000 --- a/base/dto/common/src/main/java/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/dto/common/src/main/java/test/com/.svn/entries b/base/dto/common/src/main/java/test/com/.svn/entries deleted file mode 100644 index be9c795..0000000 --- a/base/dto/common/src/main/java/test/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/test/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/common/src/main/java/test/com/fp/.svn/entries b/base/dto/common/src/main/java/test/com/fp/.svn/entries deleted file mode 100644 index e092678..0000000 --- a/base/dto/common/src/main/java/test/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/test/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -json -dir - diff --git a/base/dto/common/src/main/java/test/com/fp/json/.svn/entries b/base/dto/common/src/main/java/test/com/fp/json/.svn/entries deleted file mode 100644 index e7cf4ad..0000000 --- a/base/dto/common/src/main/java/test/com/fp/json/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/java/test/com/fp/json -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TestingBean.java -file - - - - -2022-07-28T03:40:34.007765Z -12b7fc9c14894f964bee67d2274a1c78 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1689 - -TestingBean1.java -file - - - - -2022-07-28T03:40:34.007765Z -e68118692b2098390c3f5b6710691622 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -899 - -TestingBeanKey.java -file - - - - -2022-07-28T03:40:34.007765Z -fcb0372cf587e07ac0fb80dfc686bdcf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -530 - diff --git a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base b/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base deleted file mode 100644 index f250969..0000000 --- a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base +++ /dev/null @@ -1,98 +0,0 @@ -package test.com.fp.json; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import com.fp.dto.AbstractDataTransport; - -public class TestingBean extends AbstractDataTransport { - - /** - * - */ - private static final long serialVersionUID = 1L; - private Date date; - private Timestamp timestamp; - private String string; - private int entero; - private BigDecimal amount; - private boolean flag; - private TestingBeanKey pk; - - public TestingBean() { - - } - - public TestingBean(Date date, Timestamp timestamp, String string, int entero, BigDecimal amount, boolean flag) { - this.date = date; - this.timestamp = timestamp; - this.string = string; - this.entero = entero; - this.amount = amount; - this.flag = flag; - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - TestingBean p = (TestingBean) this.clone(); - return p; - } - - public BigDecimal getAmount() { - return amount; - } - - public Date getDate() { - return date; - } - - public int getEntero() { - return entero; - } - - public TestingBeanKey getPk() { - return pk; - } - - public String getString() { - return string; - } - - public Timestamp getTimestamp() { - return timestamp; - } - - public boolean isFlag() { - return flag; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public void setDate(Date date) { - this.date = date; - } - - public void setEntero(int entero) { - this.entero = entero; - } - - public void setFlag(boolean flag) { - this.flag = flag; - } - - public void setPk(TestingBeanKey pk) { - this.pk = pk; - } - - public void setString(String string) { - this.string = string; - } - - public void setTimestamp(Timestamp timestamp) { - this.timestamp = timestamp; - } - -} diff --git a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base b/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base deleted file mode 100644 index 15a2dd0..0000000 --- a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base +++ /dev/null @@ -1,57 +0,0 @@ -package test.com.fp.json; - - -import com.fp.dto.AbstractDataTransport; - -public class TestingBean1 extends AbstractDataTransport { - - /** - * - */ - private static final long serialVersionUID = 1L; - private String string; - private int entero; - private long pk; - - public TestingBean1() { - - } - @Override - public Object cloneMe() throws CloneNotSupportedException { - TestingBean1 p = (TestingBean1) this.clone(); - return p; - } - - - public TestingBean1(String string, int entero,long pk) { - this.string = string; - this.entero = entero; - this.pk=pk; - } - - public int getEntero() { - return entero; - } - - public void setEntero(int entero) { - this.entero = entero; - } - - public long getPk() { - return pk; - } - - public void setPk(long pk) { - this.pk = pk; - } - - public String getString() { - return string; - } - - public void setString(String string) { - this.string = string; - } - - -} diff --git a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base b/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base deleted file mode 100644 index 6969def..0000000 --- a/base/dto/common/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package test.com.fp.json; - -import com.fp.dto.hb.HibernateId; - -public class TestingBeanKey implements HibernateId{ - private String campo1; - private Long campo2; - - public TestingBeanKey() { - } - - public TestingBeanKey(String campo1, Long campo2) { - this.campo1 = campo1; - this.campo2 = campo2; - } - - public String getCampo1() { - return campo1; - } - - public Long getCampo2() { - return campo2; - } - - public void setCampo1(String campo1) { - this.campo1 = campo1; - } - - public void setCampo2(Long campo2) { - this.campo2 = campo2; - } -} diff --git a/base/dto/common/src/main/resources/.svn/entries b/base/dto/common/src/main/resources/.svn/entries deleted file mode 100644 index 8f0ead6..0000000 --- a/base/dto/common/src/main/resources/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -userMessages_es_EC.properties -file - - - - -2022-07-28T03:40:36.381775Z -d95fc1b90d5259a40af3f1e38cc9db56 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1409 - -userMessages.properties -file - - - - -2022-07-28T03:40:36.381775Z -cbe71e321df31b3db992d6ad9f8e45fe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1644 - -commonmessages_es.properties -file - - - - -2022-07-28T03:40:36.382776Z -c76f2059ca257484bce81a4bd365464c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1382 - -userMessages_es.properties -file - - - - -2022-07-28T03:40:36.382776Z -cc30ed36fa09216feafdc626dfabf633 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1409 - -exceptions.properties -file - - - - -2022-07-28T03:40:36.382776Z -26f8346d07d225644537cd265314553f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1042 - diff --git a/base/dto/common/src/main/resources/.svn/text-base/commonmessages_es.properties.svn-base b/base/dto/common/src/main/resources/.svn/text-base/commonmessages_es.properties.svn-base deleted file mode 100644 index d9a8874..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/commonmessages_es.properties.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -COMMON-0001=Prueba 1 -COMMON-0002=La cuenta se encuentra en estado {0} -COMMON-0003=El usuario {0} no tiene permitido dep\u00F3sitos mayores a {1,number,currency} -COMMON-0005=El saldo promedio de la cuenta {0} al {1,date,dd-MMM-yyyy} es {2,number,###,###,##0.00} -COMMON-0006=PROCESO {0} A EJECUTAR NO DEFINIDO MODULE: {1} TRANS: {2} VERSION {3} -COMMON-0007=PROCESO {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4} -COMMON-0008=PROCESO A EJECUTAR NO DEFINIDAS EN TGENETRANSACTIONPROCESS MODULE: {1} TRANS: {2} VERSION {3} -COMMON-0009=PROCESO {0} A EJECUTAR NO DEFINIDO EN TGENEBATCHPREVIOUSPROCESS MOD: {1} TRAN: {2} VER: {3} -COMMON-0010=PROCESO {0} A EJECUTAR NO IMPLEMENTA: {0} MOD: {1} TRAN: {2} VER: {3} -COMMON-0011=PROCESO {0} A EJECUTAR NO DEFINIDO EN TGENEBATCHPROCESS MOD: {1} TRAN: {2} VER: {3} -COMMON-0012=CLASE {0} A EJECUTAR NO EXISTE CODE: {0} -COMMON-0013=PROCESO {0} A EJECUTAR CODE: {1} NO IMPLEMENTA QUERYRULE -COMMON-0014=CLASE {0} A EJECUTAR NO EXISTE MODULE: {1} TRANS: {2} VERSION {3} -COMMON-0015=PROCESO {0} A EJECUTAR MODULE: {1} TRANS: {2} VERSION {3} NO IMPLEMENTA {4} -COMMON-0016=PROCESOS BATCH NO DEFINIDOS EN TGENEBATCH MODULE: {0} TRANS: {1} VERSION {2} -COMMON-0017=CLASE A EJECUTAR NODEFINIDA EN TGENEBATCHPROCESS ACTION:{0}, MOD: {1} TRANMOD:{2} TRAN:{3} VER: {4} -COMMON-0018=USUARIO INACTIVO -COMMON-0019= -COMMON-0020= \ No newline at end of file diff --git a/base/dto/common/src/main/resources/.svn/text-base/exceptions.properties.svn-base b/base/dto/common/src/main/resources/.svn/text-base/exceptions.properties.svn-base deleted file mode 100644 index b0868f5..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/exceptions.properties.svn-base +++ /dev/null @@ -1,12 +0,0 @@ -java.sql.SQLException=com.fp.common.exception.SQLExceptionManager -java.sql.SQLSyntaxErrorException=com.fp.common.exception.SQLExceptionManager -java.sql.BatchUpdateException=com.fp.common.exception.SQLExceptionManager -java.sql.SQLIntegrityConstraintViolationException=com.fp.common.exception.SQLExceptionManager -org.hibernate.exception.ConstraintViolationException=com.fp.common.exception.SQLExceptionManager -javax.persistence.PersistenceException=com.fp.common.exception.SQLExceptionManager -org.hibernate.exception.GenericJDBCException=com.fp.common.exception.SQLExceptionManager -org.hibernate.NonUniqueObjectException=com.fp.common.exception.NonUniqueObjectException -org.hibernate.PropertyValueException=com.fp.common.exception.PropertyValueException -org.hibernate.StaleObjectStateException=com.fp.common.exception.StaleObjectStateException -org.hibernate.id.IdentifierGenerationException=com.fp.common.exception.IdentifierGenerationException -javax.persistence.EntityExistsException=com.fp.common.exception.NonUniqueObjectException \ No newline at end of file diff --git a/base/dto/common/src/main/resources/.svn/text-base/userMessages.properties.svn-base b/base/dto/common/src/main/resources/.svn/text-base/userMessages.properties.svn-base deleted file mode 100644 index 3600b17..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/userMessages.properties.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -it4b.success = TRANSACCI\u00d3N REALIZADA CORRECTAMENTE -java.lang.ClassNotFoundException = APLICACI\u00d3N NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NoClassDefFoundError = APLICACI\u00d3N NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NullPointerException = ERROR NO CONTROLADO EN LA APLICACI\u00d3N. CONTACTE AL PROVEEDOR -java.lang.NumberFormatException = SE ESPERABA UN VALOR NUM\u00c9RICO -sql-not-null=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -StaleObjectStateException=REGISTRO DE LA TABLA: [{0}] MODIFICADO EN OTRA SESI\u00d3N, RECONSULTE LOS DATOS -NonUniqueObjectException=ESTA INGRESANDO REGISTROS DUPLICADOS EN LA TABLA: [{0}] -PropertyValueException=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -fk=NO EXISTE REFERENCIA DE [{0}] EN [{1}] -fkg=NO SE PUEDE INSERTAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -fk1=NO SE PUEDE ELIMINAR EL REGISTRO YA QUE SE ENCUENTRA REFERENCIADO [{0}] EN [{1}] -fk1g=NO SE PUEDE ELIMINAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -sql.unique=NO PUEDE INGRESAR UN REGISTRO QUE YA EXISTE: [{0}] -lock=RECURSO EN USO INTENTE NUEVAMENTE: [{0}] -valuelarger=EL VALOR INGRESADO SOBREPASA LA LONGITUD PERMITIDA DEL CAMPO -valueLargerWithValue=EL VALOR INGRESADO EN LA TABLA {0} EN EL CAMPO {1} SOBREPASA LA LONGITUD PERMITIDA {2} -sql.uniqueID=N\u00daMERO DE IDENTIFICACI\u00d3N YA EXISTE: [{0}] -fk.informix=NO SE PUEDE ELIMINAR EL REGISTRO YA QUE SE ENCUENTRA REFERENCIADO:[{0}] -sql.uniqueIDINF=N\u00daMERO DE IDENTIFICACI\u00d3N YA EXISTE \ No newline at end of file diff --git a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.netbeans-base b/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.netbeans-base deleted file mode 100644 index 17b4915..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.netbeans-base +++ /dev/null @@ -1,17 +0,0 @@ -it4b.success = TRANSACCION REALIZADA CORRECTAMENTE -java.lang.ClassNotFoundException = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NoClassDefFoundError = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NullPointerException = ERROR NO CONTROLADO EN LA APLICACION. CONTACTE AL PROVEEDOR -java.lang.NumberFormatException = SE ESPERABA UN VALOR NUMERICO -sql-not-null=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -StaleObjectStateException=REGISTRO DE LA TABLA: [{0}] MODIFICADO EN OTRA SESI\u00d3N, RECONSULTE LOS DATOS -NonUniqueObjectException=ESTA INGRESANDO REGISTROS DUPLICADOS EN LA TABLA: [{0}] -PropertyValueException=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -fk=NO EXISTE REFERENCIA DE [{0}] EN [{1}] -fkg=NO SE PUEDE INSERTAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -fk1=NO SE PUEDE ELIMINAR EL REGISTRO YA QUE SE ENCUENTRA REFERENCIADO [{0}] EN [{1}] -fk1g=NO SE PUEDE ELIMINAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -sql.unique=NO PUEDE INGRESAR UN REGISTRO QUE YA EXISTE: [{0}] -lock=RECURSO EN USO INTENTE NUEVAMENTE: [{0}] -valuelarger=EL VALOR INGRESADO SOBREPASA LA LONGITUD PERMITIDA DEL CAMPO -valueLargerWithValue=EL VALOR INGRESADO EN LA TABLA {0} EN EL CAMPO {1} SOBREPASA LA LONGITUD PERMITIDA {2} \ No newline at end of file diff --git a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.svn-base b/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.svn-base deleted file mode 100644 index 17b4915..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es.properties.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -it4b.success = TRANSACCION REALIZADA CORRECTAMENTE -java.lang.ClassNotFoundException = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NoClassDefFoundError = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NullPointerException = ERROR NO CONTROLADO EN LA APLICACION. CONTACTE AL PROVEEDOR -java.lang.NumberFormatException = SE ESPERABA UN VALOR NUMERICO -sql-not-null=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -StaleObjectStateException=REGISTRO DE LA TABLA: [{0}] MODIFICADO EN OTRA SESI\u00d3N, RECONSULTE LOS DATOS -NonUniqueObjectException=ESTA INGRESANDO REGISTROS DUPLICADOS EN LA TABLA: [{0}] -PropertyValueException=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -fk=NO EXISTE REFERENCIA DE [{0}] EN [{1}] -fkg=NO SE PUEDE INSERTAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -fk1=NO SE PUEDE ELIMINAR EL REGISTRO YA QUE SE ENCUENTRA REFERENCIADO [{0}] EN [{1}] -fk1g=NO SE PUEDE ELIMINAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -sql.unique=NO PUEDE INGRESAR UN REGISTRO QUE YA EXISTE: [{0}] -lock=RECURSO EN USO INTENTE NUEVAMENTE: [{0}] -valuelarger=EL VALOR INGRESADO SOBREPASA LA LONGITUD PERMITIDA DEL CAMPO -valueLargerWithValue=EL VALOR INGRESADO EN LA TABLA {0} EN EL CAMPO {1} SOBREPASA LA LONGITUD PERMITIDA {2} \ No newline at end of file diff --git a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es_EC.properties.svn-base b/base/dto/common/src/main/resources/.svn/text-base/userMessages_es_EC.properties.svn-base deleted file mode 100644 index 0827acb..0000000 --- a/base/dto/common/src/main/resources/.svn/text-base/userMessages_es_EC.properties.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -flip.success = TRANSACCION REALIZADA CORRECTAMENTE -java.lang.ClassNotFoundException = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NoClassDefFoundError = APLICACION NO INSTALADA CORRECTAMENTE. CONTACTE AL ADMINISTRADOR DEL SISTEMA -java.lang.NullPointerException = ERROR NO CONTROLADO EN LA APLICACION. CONTACTE AL PROVEEDOR -java.lang.NumberFormatException = SE ESPERABA UN VALOR NUMERICO -sql-not-null=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -StaleObjectStateException=REGISTRO DE LA TABLA: [{0}] MODIFICADO EN OTRA SESI\u00d3N, RECONSULTE LOS DATOS -NonUniqueObjectException=ESTA INGRESANDO REGISTROS DUPLICADOS EN LA TABLA: [{0}] -PropertyValueException=VALOR REQUERIDO PARA LA TABLA: [{0}] CAMPO: [{1}] -fk=NO EXISTE REFERENCIA DE [{0}] EN [{1}] -fkg=NO SE PUEDE INSERTAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -fk1=NO SE PUEDE ELIMINAR EL REGISTRO YA QUE SE ENCUENTRA REFERENCIADO [{0}] EN [{1}] -fk1g=NO SE PUEDE ELIMINAR EL REGISTRO DE LA TABLA {0} PORQUE EXISTE REFERENCIA EN EL CONSTRAINT {1} HACIA OTRA TABLA -sql.unique=NO PUEDE INGRESAR UN REGISTRO QUE YA EXISTE: [{0}] -lock=RECURSO EN USO INTENTE NUEVAMENTE: [{0}] -valuelarger=EL VALOR INGRESADO SOBREPASA LA LONGITUD PERMITIDA DEL CAMPO -valueLargerWithValue=EL VALOR INGRESADO EN LA TABLA {0} EN EL CAMPO {1} SOBREPASA LA LONGITUD PERMITIDA {2} \ No newline at end of file diff --git a/base/dto/common/src/test/.svn/entries b/base/dto/common/src/test/.svn/entries deleted file mode 100644 index c25a491..0000000 --- a/base/dto/common/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/dto/common/src/test/java/.svn/entries b/base/dto/common/src/test/java/.svn/entries deleted file mode 100644 index f4bc478..0000000 --- a/base/dto/common/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - diff --git a/base/dto/common/src/test/java/test/.svn/entries b/base/dto/common/src/test/java/test/.svn/entries deleted file mode 100644 index 7ece153..0000000 --- a/base/dto/common/src/test/java/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/dto/common/src/test/java/test/com/.svn/entries b/base/dto/common/src/test/java/test/com/.svn/entries deleted file mode 100644 index 29e5d83..0000000 --- a/base/dto/common/src/test/java/test/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/common/src/test/java/test/com/fp/.svn/entries b/base/dto/common/src/test/java/test/com/fp/.svn/entries deleted file mode 100644 index bc26ba2..0000000 --- a/base/dto/common/src/test/java/test/com/fp/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -excel -dir - -common -dir - -json -dir - diff --git a/base/dto/common/src/test/java/test/com/fp/common/.svn/entries b/base/dto/common/src/test/java/test/com/fp/common/.svn/entries deleted file mode 100644 index 03b07a0..0000000 --- a/base/dto/common/src/test/java/test/com/fp/common/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test/com/fp/common -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -InternationalitationTest.java -file - - - - -2022-07-28T03:40:33.755764Z -3f5e9a37a59c68e852d7abed6a092885 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -447 - -ELTest.java -file - - - - -2022-07-28T03:40:33.756764Z -d989352a15ddf533e7b643417e84d8a4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2457 - -MessageTest.java -file - - - - -2022-07-28T03:40:33.756764Z -e876389c9c49c75b91913ef85e578dc3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3230 - diff --git a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/ELTest.java.svn-base b/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/ELTest.java.svn-base deleted file mode 100644 index 7d1fbe0..0000000 --- a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/ELTest.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package test.com.fp.common; - -import java.math.BigDecimal; -import java.util.Date; -import java.util.HashMap; -import java.util.Map; - -import org.junit.Assert; -import org.junit.Test; - -import test.com.fp.json.TestingBean; - -import com.fp.common.messages.ELEval; -import com.fp.dto.save.SaveBean; -import com.fp.dto.save.SaveRequest; - -public class ELTest { - private Map maia = new HashMap(); - - public ELTest() throws Exception { - SaveRequest sr = new SaveRequest(); - sr.setUser("GF"); - sr.setTransactionCode(150); - sr.put("OfficeName", "Prueba"); - sr.put("val", new BigDecimal("129983.89")); - sr.put("date", new Date(1323961406815L)); - SaveBean sb = new SaveBean("test.com.fp.json.TestingBean"); - TestingBean tb = new TestingBean(); - tb.setEntero(1200); - sb.addModifiedObject(tb); - sr.putSaveBean("aliasSaveBean", sb); - this.maia.put("request", sr); - } - - @Test - public void name() throws Exception { - Assert.assertEquals("User", "GF", ELEval.eval(this.maia, "request.user")); - Assert.assertEquals("User", String.class, ELEval.eval(this.maia, "request.user").getClass()); - } - - @Test - public void control() throws Exception { - Assert.assertEquals("Control", "Prueba", ELEval.eval(this.maia, "request.OfficeName")); - Assert.assertEquals("Control", String.class, ELEval.eval(this.maia, "request.OfficeName").getClass()); - } - - @Test - public void bigDecimal() throws Exception { - Assert.assertEquals("BigDecimal", new BigDecimal("129983.89"), ELEval.eval(this.maia, "request.val")); - Assert.assertEquals("BigDecimal", BigDecimal.class, ELEval.eval(this.maia, "request.val").getClass()); - } - - @Test - public void date() throws Exception { - Assert.assertEquals("Date", new Date(1323961406815L), ELEval.eval(this.maia, "request.date")); - Assert.assertEquals("Date", Date.class, ELEval.eval(this.maia, "request.date").getClass()); - } - - @Test - public void bean() throws Exception { - Assert.assertEquals("Bean", SaveBean.class, ELEval.eval(this.maia, "request.aliasSaveBean").getClass()); - Assert.assertEquals("Bean", TestingBean.class, ELEval.eval(this.maia, "request.aliasSaveBean.modifiedRecords[0]").getClass()); - Assert.assertEquals("Bean", 1200, ELEval.eval(this.maia, "request.aliasSaveBean.modifiedRecords[0].entero")); - } -} diff --git a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/InternationalitationTest.java.svn-base b/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/InternationalitationTest.java.svn-base deleted file mode 100644 index f92df14..0000000 --- a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/InternationalitationTest.java.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -package test.com.fp.common; - -import java.util.Locale; - -import junit.framework.TestCase; - -public class InternationalitationTest extends TestCase{ - @SuppressWarnings("unused") - public void testEnglish(){ - Locale[] loc=Locale.getAvailableLocales(); - for (Locale locale :loc ) { - //System.out.println("insert into tlanguage (clanguage,name) values('"+ locale.getLanguage()+"','"+locale.getDisplayLanguage()+"');"); - } - } -} - - diff --git a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/MessageTest.java.svn-base b/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/MessageTest.java.svn-base deleted file mode 100644 index 0c46769..0000000 --- a/base/dto/common/src/test/java/test/com/fp/common/.svn/text-base/MessageTest.java.svn-base +++ /dev/null @@ -1,92 +0,0 @@ -package test.com.fp.common; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import org.junit.Assert; -import org.junit.Test; - -import com.fp.common.messages.MessageUtil; -import com.fp.dto.save.SaveRequest; - -public class MessageTest { - private MessageUtil mu; - - public MessageTest() throws Exception { - SaveRequest sr = new SaveRequest(); - sr.setUser("GF"); - sr.setTransactionCode(150); - sr.put("OfficeName", "Prueba"); - sr.put("val", new BigDecimal("129983.89")); - sr.put("per", new BigDecimal("83.89")); - sr.put("date", new Date(1323961406815L)); - this.mu = new MessageUtil("es"); - this.mu.setValue("name", "German Fiallos"); - this.mu.setValue("request", sr); - } - - @Test - public void name() throws Exception { - this.mu.setPattern("$name"); - Assert.assertEquals("Nombre", "German Fiallos", this.mu.getMessage()); - } - - @Test - public void user() throws Exception { - this.mu.setPattern("$request.user"); - Assert.assertEquals("Usuario", "GF", this.mu.getMessage()); - } - - @Test - public void transaction() throws Exception { - this.mu.setPattern("$request.transactionCode"); - Assert.assertEquals("Transaccion", "150", this.mu.getMessage()); - } - - @Test - public void date() throws Exception { - this.mu.setPattern("$date.format('yyyy-MM-dd', $request.date)"); - Assert.assertEquals("Date", "2011-12-15", this.mu.getMessage()); - this.mu.setPattern("$date.format('yyyy-MMM-dd', $request.date,$locate)"); - Assert.assertEquals("Date", "2011-dic-15", this.mu.getMessage()); - this.mu.setPattern("$date.format(\"EEEEEEEEEEEEEEEEE, d 'de' MMMMMMMMMM 'de' yyyy\", $request.date,$locate)"); - Assert.assertEquals("Date", "jueves, 15 de diciembre de 2011", this.mu.getMessage()); - - } - - @Test - public void amount() throws Exception { - this.mu.setPattern("$number.currency($request.val)"); - Assert.assertEquals("Monto", "$129,983.89", this.mu.getMessage()); - this.mu.setPattern("$number.format($request.val)"); - Assert.assertEquals("Monto", "129,983.89", this.mu.getMessage()); - } - - @Test - public void cond() throws Exception { - this.mu.setPattern("#if( $cond ) OK #else NO #end"); - this.mu.setValue("cond", Boolean.TRUE); - Assert.assertEquals("Date", " OK ", this.mu.getMessage()); - this.mu.setValue("cond", Boolean.FALSE); - Assert.assertEquals("Date", " NO ", this.mu.getMessage()); - } - - @Test - public void loop() throws Exception { - this.mu.setPattern("#foreach( $val in $list ) $val.code $val.value #end"); - List> data = new ArrayList>(); - for (int i = 0; i < 3; i++) { - Map rec = new HashMap(); - rec.put("code", i); - rec.put("value", "Prueba-" + i); - data.add(rec); - } - this.mu.setValue("list", data); - Assert.assertEquals("Date", " 0 Prueba-0 1 Prueba-1 2 Prueba-2 ", this.mu.getMessage()); - } - -} diff --git a/base/dto/common/src/test/java/test/com/fp/excel/.svn/entries b/base/dto/common/src/test/java/test/com/fp/excel/.svn/entries deleted file mode 100644 index e1f043c..0000000 --- a/base/dto/common/src/test/java/test/com/fp/excel/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test/com/fp/excel -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ExcelToMapMain.java -file - - - - -2022-07-28T03:40:33.699764Z -13dbbeeb2d477bfe5ed3ac7b778f281c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1275 - diff --git a/base/dto/common/src/test/java/test/com/fp/excel/.svn/text-base/ExcelToMapMain.java.svn-base b/base/dto/common/src/test/java/test/com/fp/excel/.svn/text-base/ExcelToMapMain.java.svn-base deleted file mode 100644 index 5c56c6d..0000000 --- a/base/dto/common/src/test/java/test/com/fp/excel/.svn/text-base/ExcelToMapMain.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package test.com.fp.excel; - -import com.fp.excel.*; -import java.io.FileNotFoundException; -import java.util.List; -import java.util.Map; - - -/** - * - * @author Ingeniero Marco Almeida P. - * 23-Dic-2011 - */ -public class ExcelToMapMain implements ExcelToMapMessages{ - - /** - * @param args the command line arguments - */ - public static void main(String[] args) throws FileNotFoundException { - - ExcelToMap wmp = new ExcelToMap (ExcelToMapMain.FILE_PATH); - - if(wmp.get_Workbook_Status().equals(ExcelToMapMain.WORKBOOK_CREATED)){ - - List> ldata = wmp.get_Especific_Data(0,11,0,2); - - for(Map mp : ldata){ - - String key = "0:1"; - - if(mp.containsKey(key)){ - Object obj = mp.get(key); - System.out.println(obj.toString()); - }else{ - Object obj = "blank"; - System.out.println(obj.toString()); - } - } - - }else{ - - System.err.println(wmp.get_Workbook_Status()); - - } - } -} diff --git a/base/dto/common/src/test/java/test/com/fp/json/.svn/entries b/base/dto/common/src/test/java/test/com/fp/json/.svn/entries deleted file mode 100644 index 1568011..0000000 --- a/base/dto/common/src/test/java/test/com/fp/json/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/java/test/com/fp/json -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SerializerTest.java -file - - - - -2022-07-28T03:40:33.777764Z -8913394653b158829e9d99f235fbc682 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -25542 - diff --git a/base/dto/common/src/test/java/test/com/fp/json/.svn/text-base/SerializerTest.java.svn-base b/base/dto/common/src/test/java/test/com/fp/json/.svn/text-base/SerializerTest.java.svn-base deleted file mode 100644 index 89687a1..0000000 --- a/base/dto/common/src/test/java/test/com/fp/json/.svn/text-base/SerializerTest.java.svn-base +++ /dev/null @@ -1,426 +0,0 @@ -package test.com.fp.json; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import junit.framework.TestCase; - -import com.fp.dto.fin.FinancialRequest; -import com.fp.dto.json.Serializer; -import com.fp.dto.save.SaveRequest; - -public class SerializerTest extends TestCase { - @SuppressWarnings("unchecked") - public void compareList(List pExtected, List pData) { - TestCase.assertEquals(pExtected.size(), pData.size()); - for (int i = 0; i < pExtected.size(); i++) { - this.compareTestingBean((TestingBean) pExtected.get(i), (TestingBean) pData.get(i)); - } - } - - public void compareTestingBean(TestingBean pExtected, TestingBean pData) { - TestCase.assertEquals(pExtected.getEntero(), pData.getEntero()); - TestCase.assertEquals(pExtected.getString(), pData.getString()); - TestCase.assertEquals(pExtected.getAmount(), pData.getAmount()); - TestCase.assertEquals(pExtected.getDate(), pData.getDate()); - TestCase.assertEquals(pExtected.getTimestamp(), pData.getTimestamp()); - TestCase.assertEquals(pExtected.isFlag(), pData.isFlag()); - TestCase.assertEquals(pExtected.getTransportBeanClass(), pData.getTransportBeanClass()); - } - - public void testBean2JSON() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean bean = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - Serializer ser = new Serializer(bean); - System.out.println(ser.toJSON()); - } - - public void testBean2JSON1() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean bean = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - bean.setPk(new TestingBeanKey("Prueba", 21L)); - Serializer ser = new Serializer(bean); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toJSON()); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toXML()); - } - - public void testJson2Bean1() throws Exception { - String json = "{\"amount\":12.34,\"timestamp\":\"2008-11-30 18:45:53\",\"flag\":true,\"pk_campo2\":21,\"string\":\"Value\",\"pk_campo1\":\"Prueba\",\"entero\":10,\"transportBeanClass\":\"test.com.fp.json.TestingBean\",\"date\":\"2008-11-30\",\"pk_transportBeanClass\":\"test.com.fp.json.TestingBeanKey\",\"modified\":false}"; - Serializer ser = new Serializer(json); - TestingBean b = (TestingBean) ser.toObject(TestingBean.class); - System.out.println(b); - } - - public void testQueryRequest() throws Exception { - FinancialRequest fr = new FinancialRequest(); - fr.setBranchCode(1); - fr.setUser("gf"); - fr.setCreditAccount("aaaaa"); - Serializer ser = new Serializer(fr); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toJSON()); - } - - public void testBean2JSONAdditional() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean bean = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - bean.setPk(new TestingBeanKey("Prueba", 21L)); - bean.addAddtionalInfo("add1", "Des1"); - bean.addAddtionalInfo("add2", "Des2"); - Serializer ser = new Serializer(bean); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toJSON()); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toXML()); - ser = new Serializer(new TestingBean1("Prueba", 12, 13)); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toJSON()); - System.out.println(">>>>>>>>>>>>>>>>>>>" + ser.toXML()); - } - - public void testBean2XML() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean bean = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - Serializer ser = new Serializer(bean); - System.out.println("Bean a XML"); - System.out.println(ser.toXML()); - } - - public void testJSON2Bean() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean expected = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - String data = "{\"amount\":12.34,\"date\":\"2008-11-30\",\"entero\":10,\"flag\":true,\"string\":\"Value\",\"timestamp\":\"2008-11-30 18:45:53\",\"transportBeanClass\":\"test.com.fp.json.TestingBean\"}"; - Serializer ser = new Serializer(data); - TestingBean json = (TestingBean) ser.toObject(TestingBean.class); - this.compareTestingBean(expected, json); - } - - public void testJSON2Bean1() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean expected = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - expected.setPk(new TestingBeanKey("Prueba", 21L)); - String data = "{\"amount\":12.34,\"date\":\"2008-11-30\",\"deleted\":false,\"entero\":10,\"flag\":true,\"modified\":false,\"pk\":{\"campo1\":\"Prueba\",\"campo2\":21},\"string\":\"Value\",\"timestamp\":\"2008-11-30 18:45:53\",\"transportBeanClass\":\"test.com.fp.json.TestingBean\"}"; - Serializer ser = new Serializer(data); - TestingBean json = (TestingBean) ser.toObject(TestingBean.class); - this.compareTestingBean(expected, json); - } - - @SuppressWarnings("unchecked") - public void testJSON2Map() throws Exception { - Map expected = new HashMap(); - expected.put("booleano", true); - expected.put("int", 10); - expected.put("string", "Valor"); - expected.put("monto", new BigDecimal("1200.43")); - long time = 1228088753000L; - long date = 1228021200000L; - expected.put("date", new Date(date)); - expected.put("timestamp", new Timestamp(time)); - String data = "{\"monto\":1200.43,\"string\":\"Valor\",\"int\":10,\"timestamp\":\"2008-11-30 18:45:53\",\"date\":\"2008-11-30\",\"booleano\":true}"; - Serializer ser = new Serializer(data); - Map json = (Map) ser.toObject(Map.class); - Set keys = expected.keySet(); - for (String key : keys) { - Object ex = expected.get(key); - Object obj = json.get(key); - TestCase.assertEquals(ex.getClass(), obj.getClass()); - TestCase.assertEquals(ex, obj); - } - } - - @SuppressWarnings("unchecked") - public void testJSON2MapBean() throws Exception { - Map expected = new HashMap(); - expected.put("booleano", true); - expected.put("int", 10); - expected.put("string", "Valor"); - expected.put("monto", new BigDecimal("1200.43")); - long time = 1228088753000L; - long date = 1228021200000L; - expected.put("date", new Date(date)); - expected.put("timestamp", new Timestamp(time)); - expected.put("bean", new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true)); - String data = "{\"monto\":1200.43,\"string\":\"Valor\",\"monto1\":1200,\"int\":10,\"timestamp\":\"2008-11-30 18:45:53\",\"date\":\"2008-11-30\",\"bean\":{\"amount\":12.34,\"date\":\"2008-11-30\",\"entero\":10,\"flag\":true,\"string\":\"Value\",\"timestamp\":\"2008-11-30 18:45:53\",\"transportBeanClass\":\"test.com.fp.json.TestingBean\"},\"booleano\":true}"; - Serializer ser = new Serializer(data); - Map json = (Map) ser.toObject(Map.class); - Set keys = expected.keySet(); - for (String key : keys) { - Object ex = expected.get(key); - Object obj = json.get(key); - TestCase.assertEquals(ex.getClass(), obj.getClass()); - if (ex instanceof TestingBean) { - this.compareTestingBean((TestingBean) ex, (TestingBean) obj); - } else { - TestCase.assertEquals(ex, obj); - } - } - } - - @SuppressWarnings("unchecked") - public void testJSON2MapBeanArray() throws Exception { - Map expected = new HashMap(); - expected.put("booleano", true); - expected.put("int", 10); - expected.put("string", "Valor"); - expected.put("monto", new BigDecimal("1200.43")); - long time = 1228088753000L; - long date = 1228021200000L; - expected.put("date", new Date(date)); - expected.put("timestamp", new Timestamp(time)); - List arr = new ArrayList(); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("12.34"), true)); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("111.34"), false)); - expected.put("bean", arr); - String data = "{\"monto\":1200.43,\"string\":\"Valor\",\"int\":10,\"timestamp\":\"2008-11-30 18:45:53\",\"date\":\"2008-11-30\",\"bean\":[{\"amount\":12.34,\"date\":\"2008-11-30\",\"entero\":10,\"flag\":true,\"string\":\"Value1\",\"timestamp\":\"2008-11-30 18:45:53\",\"transportBeanClass\":\"test.com.fp.json.TestingBean\"},{\"amount\":111.34,\"date\":\"2008-11-30\",\"entero\":10,\"flag\":false,\"string\":\"Value1\",\"timestamp\":\"2008-11-30 18:45:53\",\"transportBeanClass\":\"test.com.fp.json.TestingBean\"}],\"booleano\":true}"; - Serializer ser = new Serializer(data); - Map json = (Map) ser.toObject(Map.class); - Set keys = expected.keySet(); - for (String key : keys) { - Object ex = expected.get(key); - Object obj = json.get(key); - if (ex instanceof List) { - compareList((List) ex, (List) obj); - } else { - TestCase.assertEquals("" + ex + "<-->" + obj, ex.getClass(), obj.getClass()); - TestCase.assertEquals("" + ex.getClass().getName() + "<-->" + obj.getClass().getName(), ex, obj); - } - } - } - - public void testMap2JSON() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println(ser.toJSON()); - - } - - public void testMap2XML() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println("MAP a XML"); - System.out.println(ser.toXML()); - // String expected = - // "\ntrue2008-11-30101200.431200Valor2008-11-30 18:45:53"; - } - - public void testMapBean2JSON() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - data.put("bean", new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true)); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println(ser.toJSON()); - } - - public void testMapBean2XML() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - data.put("bean", new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true)); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println("Map Bean a XML"); - System.out.println(ser.toXML()); - - } - - public void testMapBeanArray2JSON() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - List arr = new ArrayList(); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("12.34"), true)); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("111.34"), false)); - data.put("bean", arr); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println(ser.toJSON()); - } - - public void testMapBeanArray2XML() throws Exception { - Map data = new HashMap(); - data.put("booleano", true); - data.put("int", 10); - data.put("string", "Valor"); - data.put("monto", new BigDecimal("1200.43")); - data.put("monto1", new BigDecimal("1200")); - long time = 1228088753000L; - long date = 1228021200000L; - data.put("date", new Date(date)); - data.put("timestamp", new Timestamp(time)); - List arr = new ArrayList(); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("12.34"), true)); - arr.add(new TestingBean(new Date(date), new Timestamp(time), "Value1", 10, new BigDecimal("111.34"), false)); - data.put("bean", arr); - Serializable sData = (Serializable) data; - Serializer ser = new Serializer(sData); - System.out.println("MAP ARRAY"); - System.out.println(ser.toXML()); - - } - - public void testXML2Bean() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean expected = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - String data = "12.342008-11-3010trueValue2008-11-30 18:45:53test.com.fp.json.TestingBean"; - Serializer ser = new Serializer(data, true); - TestingBean json = (TestingBean) ser.toObject(TestingBean.class); - this.compareTestingBean(expected, json); - } - - public void testXML2Bean1() throws Exception { - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean expected = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - expected.setPk(new TestingBeanKey("Prueba", 21L)); - String data = " 12.342008-11-30false10truefalsePrueba21Value2008-11-30 18:45:53test.com.fp.json.TestingBean"; - Serializer ser = new Serializer(data, true); - TestingBean json = (TestingBean) ser.toObject(TestingBean.class); - this.compareTestingBean(expected, json); - } - - @SuppressWarnings("unchecked") - public void testXML2Map() throws Exception { - Map expected = new HashMap(); - expected.put("booleano", true); - expected.put("int", 10); - expected.put("string", "Valor"); - expected.put("monto", new BigDecimal("1200.43")); - long time = 1228088753000L; - long date = 1228021200000L; - expected.put("date", new Date(date)); - expected.put("timestamp", new Timestamp(time)); - String data = "\ntrue2008-11-30101200.431200Valor2008-11-30 18:45:53"; - Serializer ser = new Serializer(data, true); - Map json = (Map) ser.toObject(Map.class); - Set keys = expected.keySet(); - for (String key : keys) { - Object ex = expected.get(key); - Object obj = json.get(key); - TestCase.assertEquals(ex.getClass(), obj.getClass()); - TestCase.assertEquals(ex, obj); - } - } - - @SuppressWarnings("unchecked") - public void testXML2MapBean() throws Exception { - Map expected = new HashMap(); - expected.put("booleano", true); - expected.put("int", 10); - expected.put("string", "Valor"); - expected.put("monto", new BigDecimal("1200.43")); - long time = 1228088753000L; - long date = 1228021200000L; - expected.put("date", new Date(date)); - expected.put("timestamp", new Timestamp(time)); - expected.put("bean", new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true)); - String data = "12.342008-11-3010trueValue2008-11-30 18:45:53test.com.fp.json.TestingBeantrue2008-11-30101200.431200Valor2008-11-30 18:45:53"; - Serializer ser = new Serializer(data, true); - Map json = (Map) ser.toObject(Map.class); - Set keys = expected.keySet(); - for (String key : keys) { - Object ex = expected.get(key); - Object obj = json.get(key); - TestCase.assertEquals(ex.getClass(), obj.getClass()); - if (ex instanceof TestingBean) { - this.compareTestingBean((TestingBean) ex, (TestingBean) obj); - } else { - TestCase.assertEquals(ex, obj); - } - } - } - - /* - * public void testFinancial() throws Exception{ try{ String - * xml=StreamHelper.readFile("/home/gfiallos/temp/flip/a.xml"); Serializer ser=new Serializer(xml, true); - * FinancialRequest fr=(FinancialRequest)ser.toObject(FinancialRequest.class); Serializer ser1=new Serializer(fr); - * System.out.print(">>>"+ser1.toJSON()); }catch(Exception e){ e.printStackTrace(); } } - */ - /* - * private void testBeanPersistenteToJSON() throws Exception{ SaveRequest sq = new SaveRequest(); long time = - * 1228088753000L; long date = 1228021200000L; TestingBean expected = new TestingBean(new Date(date), new - * Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); sq.putSaveBean("A", expected); Serializer ser = new - * Serializer(sq); String dataJSON=ser.toJSON(); String dataExpected= - * "{\"officeCode\":null,\"journalId\":null,\"channelCode\":null,\"authorizedUser\":null,\"A\":{\"deletedObject\":null,\"beanName\":\"A\",\"automatic\":true,\"modifiedObject\":{\"amount\":12.34,\"timestamp\":\"2008-11-30 18:45:53\",\"flag\":true,\"string\":\"Value\",\"entero\":10,\"transportBeanClass\":\"test.com.fp.json.TestingBean\",\"date\":\"2008-11-30\",\"modified\":false,\"pk\":null},\"modifiedRecords\":[],\"transportBeanClass\":\"com.fp.dto.save.SaveBean\",\"deletedRecords\":[],\"modified\":false},\"transactionCode\":null,\"transactionVersion\":null,\"internalUserCode\":null,\"branchCode\":null,\"lOrderPersistentBeans\":[\"A\"],\"modified\":false,\"terminalCode\":null,\"company\":null,\"transactionModule\":null,\"language\":null,\"transportBeanClass\":\"com.fp.dto.save.SaveRequest\",\"user\":null,\"profile\":null}" - * ; System.out.println("BeanPersistenteToJSON "+dataJSON); TestCase.assertEquals(dataExpected, dataJSON); - * - * } - */ - public void testBeanPersistente() throws Exception { - String json = "{\"officeCode\":null,\"journalId\":null,\"channelCode\":null,\"authorizedUser\":null,\"A\":{\"deletedObject\":null,\"beanName\":\"A\",\"automatic\":true,\"modifiedObject\":{\"amount\":12.34,\"timestamp\":\"2008-11-30 18:45:53\",\"flag\":true,\"string\":\"Value\",\"entero\":10,\"transportBeanClass\":\"test.com.fp.json.TestingBean\",\"date\":\"2008-11-30\",\"pk\":null},\"modifiedRecords\":[],\"transportBeanClass\":\"com.fp.dto.save.SaveBean\",\"deletedRecords\":[]},\"transactionCode\":null,\"transactionVersion\":null,\"internalUserCode\":null,\"branchCode\":null,\"lOrderPersistentBeans\":[\"A\"],\"terminalCode\":null,\"company\":null,\"transactionModule\":null,\"language\":null,\"transportBeanClass\":\"com.fp.dto.save.SaveRequest\",\"user\":null,\"profile\":null}"; - SaveRequest sq = new SaveRequest(); - long time = 1228088753000L; - long date = 1228021200000L; - TestingBean expected = new TestingBean(new Date(date), new Timestamp(time), "Value", 10, new BigDecimal("12.34"), true); - sq.putSaveBean("A", expected); - Serializer ser = new Serializer(json); - SaveRequest srData = (SaveRequest) ser.toObject(SaveRequest.class); - TestingBean val = (TestingBean) srData.getSaveBeanModifiedObject("A"); - - TestCase.assertEquals(expected.toString(), val.toString()); - - } - - public void testFinancial1() throws Exception { - try { - String json = "{\"accountingVoucher\":false,\"newAccountOffice\":null,\"officeCode\":1,\"journalId\":null,\"authorizedUser\":null,\"transactionCode\":200,\"transactionVersion\":1,\"newSubProduct\":null,\"onLine\":true,\"document\":\"ABC\",\"area\":\"1\",\"terminalCode\":\"ter-jvc\",\"commentary\":null,\"originalTransactionModule\":null,\"transactionModule\":\"11\",\"accountingDate\":null,\"processDate\":null,\"profile\":1,\"reverse\":\"N\",\"journalIdReverse\":null,\"valueDate\":null,\"creditQuotaNumber\":null,\"channelCode\":\"PC\",\"depositCode\":null,\"financialItems\":[{\"account\":\"[]\",\"accountStatus\":\"[]\",\"accountingCode\":\"[]\",\"amount\":100,\"companyAccount\":0,\"creditType\":\"[]\",\"currecy\":\"USD\",\"destinyBranch\":0,\"destinyOffice\":0,\"expirationDate\":\"\",\"itemCode\":1,\"overdrawCatalog\":\"[]\",\"overdrawCatalogCode\":\"[]\",\"quotaNumber\":0,\"repeating\":false}],\"creditAccount\":null,\"settlement\":null,\"transactionMode\":\"N\",\"branchCode\":1,\"newAccountBranch\":null,\"modified\":false,\"debitAccount\":\"1110000001\",\"originalTransactionVersion\":null,\"company\":1,\"debitQuotaNumber\":null,\"workingDate\":null,\"language\":\"ES\",\"transportBeanClass\":\"com.fp.dto.fin.FinancialRequest\",\"originalTransactionCode\":null,\"user\":\"jvaca\"}"; - Serializer ser = new Serializer(json); - FinancialRequest fr = (FinancialRequest) ser.toObject(FinancialRequest.class); - System.out.print(fr); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/base/dto/common/src/test/resources/.svn/entries b/base/dto/common/src/test/resources/.svn/entries deleted file mode 100644 index 60cdaf5..0000000 --- a/base/dto/common/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/common/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/dto/dto/.svn/dir-prop-base b/base/dto/dto/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/dto/dto/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/dto/dto/.svn/entries b/base/dto/dto/.svn/entries deleted file mode 100644 index 6208c69..0000000 --- a/base/dto/dto/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:33.649764Z -a1f57667ce7d054132d453e42af4316a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1004 - diff --git a/base/dto/dto/.svn/text-base/pom.xml.svn-base b/base/dto/dto/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 717ce74..0000000 --- a/base/dto/dto/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,35 +0,0 @@ - - - - dto - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.dto - dto - fp Platform - DTO - - - - - commons-beanutils - commons-beanutils - - - log4j - log4j - - - diff --git a/base/dto/dto/src/.svn/entries b/base/dto/dto/src/.svn/entries deleted file mode 100644 index a7d128b..0000000 --- a/base/dto/dto/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/dto/dto/src/main/.svn/entries b/base/dto/dto/src/main/.svn/entries deleted file mode 100644 index b94fc22..0000000 --- a/base/dto/dto/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/dto/dto/src/main/java/.svn/entries b/base/dto/dto/src/main/java/.svn/entries deleted file mode 100644 index 197abbe..0000000 --- a/base/dto/dto/src/main/java/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -com -dir - diff --git a/base/dto/dto/src/main/java/com/.svn/entries b/base/dto/dto/src/main/java/com/.svn/entries deleted file mode 100644 index dfa3c74..0000000 --- a/base/dto/dto/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/dto/src/main/java/com/fp/.svn/entries b/base/dto/dto/src/main/java/com/fp/.svn/entries deleted file mode 100644 index bd4df6f..0000000 --- a/base/dto/dto/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -dto -dir - -common -dir - diff --git a/base/dto/dto/src/main/java/com/fp/common/.svn/entries b/base/dto/dto/src/main/java/com/fp/common/.svn/entries deleted file mode 100644 index ccde0e1..0000000 --- a/base/dto/dto/src/main/java/com/fp/common/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/common -svn://172.17.26.185/COMACO - - - -2014-11-10T13:24:34.397461Z -2562 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - diff --git a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/entries b/base/dto/dto/src/main/java/com/fp/common/helper/.svn/entries deleted file mode 100644 index f47cf2c..0000000 --- a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/common/helper -svn://172.17.26.185/COMACO - - - -2014-11-10T13:24:34.397461Z -2562 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BeanManager.java -file - - - - -2022-07-28T03:40:33.413763Z -e390f837ba673a8d6132c1c2d22da5de -2014-11-10T13:24:34.397461Z -2562 -cpiedra - - - - - - - - - - - - - - - - - - - - - -23366 - diff --git a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.netbeans-base b/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.netbeans-base deleted file mode 100644 index d8d2a18..0000000 --- a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.netbeans-base +++ /dev/null @@ -1,590 +0,0 @@ -package com.fp.common.helper; - -/** - * Clase utilitaria para el manejo de objetos, ejemplo permite comparar dos objetos, obtener el valor de un atributo de un objeto, fijar el valor de un atributo de un objeto, entrega informacin de datos que fueron modificado en el objeto original. - * - * @author Jorge Vaca. - * @version 2.1 - */ - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.HashMap; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.hb.HibernateBean; - -/** - * Clase utilitaria para el manejo de objetos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class BeanManager { - - public static SimpleDateFormat getTransportDateFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - return sdf; - } - - /** - * Obtiene el Formateador para el Transporte de Timestamp - * - * @throws java.lang.Exception Error en la creaci�n del Formateador - * @return Formateador para el Transporte de Timestamp - */ - public static SimpleDateFormat getTransportDatetimeFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - return sdf; - - } - - /** - * Obtiene el formateador de Timestamps para su transaporte en String - * - * @return Formtateador - * @throws Exception - */ - public static SimpleDateFormat getTransportTimestampFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - return sdf; - } - - /** - * Entrega el valor de un atributo perteneciente a un bean persistente. - * - * @param pObject Bean persistente. - * @param pName Nombre del atributo. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws InvocationTargetException - * @throws IllegalAccessException - * @throws IllegalArgumentException - * @throws Exception - */ - public static Object getBeanAttributeValue(Object pObject, String pAttribute) throws Exception { - if (pAttribute.indexOf('.') > 0) { - String name = pAttribute.substring(0, pAttribute.indexOf('.')); - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - name = name.substring(0, 1).toUpperCase() + name.substring(1); - Method m = null; - try { - m = pObject.getClass().getMethod("get" + name, new Class[] {}); - } catch (Exception e) { - m = pObject.getClass().getMethod("is" + name, new Class[] {}); - } - return BeanManager.getBeanAttributeValue(m.invoke(pObject, new Object[] {}), subName); - } else { - Method m = BeanManager.getBeanGetterMethod(pObject, pAttribute); - return m.invoke(pObject, new Object[] {}); - } - } - - /** - * Fija el valro de un un atributo del bean, dado el bean, nombre del atributo y el valor. - * - * @param bean Objeto a fijar el valor. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a alamcenar en el atributo. - * @return Object - * @throws Exception - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public static Object setAbstractDataTransportAttributeValue(HibernateBean bean, String pAttribute, Object pValue) throws Exception { - try { - BeanManager.setBeanAttributeValue(bean, pAttribute, pValue); - } catch (IllegalArgumentException e) { - Class type = BeanManager.getBeanGetterMethod(bean, pAttribute).getReturnType(); - pValue = BeanManager.convertObject(pValue, type); - try { - BeanManager.setBeanAttributeValue(bean, pAttribute, pValue); - } catch (NoSuchMethodException e2) { - ((AbstractDataTransport) bean).put(pAttribute, pValue); - } - } - return bean; - } - - /** - * Fija el valor de un atributo en un TransportBean. - * - * @param pObject Referencia a TransportBean. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a fijar en el atributo del bean. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws InvocationTargetException - * @throws IllegalAccessException - * @throws IllegalArgumentException - * @throws Exception - */ - public static Object setBeanAttributeValue(Object pObject, String pAttribute, Object pValue) throws SecurityException, NoSuchMethodException, - IllegalArgumentException, IllegalAccessException, InvocationTargetException { - if (pAttribute.indexOf('.') > 0) { - String name = pAttribute.substring(0, pAttribute.indexOf('.')); - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - name = name.substring(0, 1).toUpperCase() + name.substring(1); - Method m = pObject.getClass().getMethod("get" + name, new Class[] {}); - return BeanManager.setBeanAttributeValue(m.invoke(pObject, new Object[] {}), subName, pValue); - } else { - Method m = BeanManager.getBeanSetterMethod(pObject, pAttribute, pValue); - return m.invoke(pObject, new Object[] { pValue }); - } - } - - @SuppressWarnings("unchecked") - public static T convertObject(Object pValue, Class pType) throws ParseException { - return BeanManager.convertObject(pValue, pType, false); - } - - @SuppressWarnings("unchecked") - public static T convertObject(Object pValue, Class pType, boolean pUpper) throws ParseException { - Object value = pValue; - if (pType.getName().compareTo("java.lang.String") == 0 && pUpper) { - if (value != null) { - value = value.toString().toUpperCase(); - } - } - try { - if (value == null || value.getClass().getName().compareTo(pType.getName()) == 0) { - return (T) value; - } - if (value != null) { - if (pType.getName().compareTo("java.lang.String") != 0 && pValue.toString().compareTo("") == 0) { - return null; - } - } - - return pType.cast(value); - } catch (ClassCastException e) { - ; - } - String sValue = value.toString(); - Class[] param = { String.class }; - try { - Constructor c = pType.getConstructor(param); - Object[] data = { sValue }; - return (T) c.newInstance(data); - } catch (Exception e) { - // No hacer nada - } - if (pType.getName().compareTo(Timestamp.class.getName()) == 0) { - String val = sValue; - if (sValue.indexOf(".") < 0) { - sValue += ".0"; - } - String d[] = sValue.split(" "); - if (d.length == 2) { - sValue = d[0] + " " + d[1].replaceAll("-", ":"); - } - try { - return (T) new Timestamp(BeanManager.getTransportTimestampFormat().parse(sValue).getTime()); - } catch (Exception e) { - return (T) new Timestamp(BeanManager.getTransportDateFormat().parse(val).getTime()); - } - } - if (pType.getName().compareTo(Date.class.getName()) == 0) { - String d[] = sValue.split(" "); - if (d.length == 2) { - sValue = d[0]; - } - return (T) new Date(BeanManager.getTransportDateFormat().parse(sValue).getTime()); - } - /* - * if(pType.getName().compareTo(Clob.class.getName()) == 0){ ClobImpl clob = new ClobImpl(sValue); return clob; - * } if(pType.getName().compareTo(Blob.class.getName()) == 0){ BlobImpl blob = new BlobImpl(sValue.getBytes()); - * return blob; } - */ - return (T) value; - } - - /** - * Entrega el valor de un atributo para que sea comparable. - * - * @param pObject Bean de referencia. - * @param pAttribute Atributo a obtener el valor. - * @return - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static Comparable getBeanAttributeComparable(Object pObject, String pAttribute) throws SecurityException, - IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - return (Comparable) BeanManager.getBeanAttributeValue(pObject, pAttribute); - } - - /** - * Entrega el valor de un atributo perteneciente a un bean persistente. - * - * @param pObject Bean persistente. - * @param pName Nombre del atributo. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws Exception - */ - public static Method getBeanGetterMethod(Object pObject, String pField) throws SecurityException, NoSuchMethodException, ClassNotFoundException, - IllegalAccessException, InstantiationException { - Method m = null; - if (pField.indexOf('.') > 0) { - m = BeanManager.getMethodpk(pObject, pField); - } else { - m = BeanManager.getMethodnormal(pObject, pField); - } - return m; - } - - private static Method getMethodnormal(Object pObject, String pField) throws SecurityException, NoSuchMethodException { - pField = pField.substring(0, 1).toUpperCase() + pField.substring(1); - Method m = null; - try { - m = BeanManager.getMethod(pObject, "get" + pField, null); - } catch (Exception e) { - m = BeanManager.getMethod(pObject, "is" + pField, null); - } - return m; - } - - private static Method getMethodpk(Object pObject, String pAttribute) throws SecurityException, NoSuchMethodException, ClassNotFoundException, - IllegalAccessException, InstantiationException { - Method m = null; - Object bean = null; - String classpk = ""; - if (pAttribute.indexOf('.') > 0) { - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - subName = subName.substring(0, 1).toUpperCase() + subName.substring(1); - classpk = pObject.getClass().getName() + "Key"; - try { - bean = BeanManager.getBeanAttributeValue(pObject, "pk"); - } catch (Exception e) { - // No hacer nada - } - if (bean == null) { - bean = Class.forName(classpk).newInstance(); - } - try { - m = bean.getClass().getMethod("get" + subName, new Class[] {}); - } catch (Exception e) { - m = bean.getClass().getMethod("is" + subName, new Class[] {}); - } - } - return m; - } - - private static Method getMethod(Object pObject, String pMethod, Object pValue) throws NoSuchMethodException { - Method[] m = pObject.getClass().getMethods(); - Method method = null; - for (Method me : m) { - if (me.getName().compareTo(pMethod) == 0) { - method = me; - break; - } - } - if (method == null) { - method = pObject.getClass().getMethod(pMethod, pValue == null ? null : new Class[] { pValue.getClass() }); - } - return method; - } - - /** - * Entrega el nombre del metodo a invocar para fijar un valor en un Bean. - * - * @param pObject Bean de referencia. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a fijar en el atributo. - * @return - * @throws SecurityException - * @throws NoSuchMethodException - */ - public static Method getBeanSetterMethod(Object pObject, String pAttribute, Object pValue) throws SecurityException, NoSuchMethodException { - pAttribute = pAttribute.substring(0, 1).toUpperCase() + pAttribute.substring(1); - return BeanManager.getMethod(pObject, "set" + pAttribute, pValue); - } - - /** - * Compara dos Objetos, si los objetos son iguales retorna true. - * - * @param pObject Objeto uno. - * @param pOtherObject Objeto dos - * @return - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static boolean compareObject(Object pObject, Object pOtherObject) throws SecurityException, IllegalArgumentException, - NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - Field f[] = pObject.getClass().getDeclaredFields(); - boolean equal = true; - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 || obj.getName().compareTo("class") == 0 - || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - Object value = null; - try { - value = BeanManager.getBeanAttributeValue(pObject, obj.getName()); - } catch (NoSuchMethodException e) { - continue; - } - Object value1 = null; - try { - value1 = BeanManager.getBeanAttributeValue(pOtherObject, obj.getName()); - } catch (Exception e) { - continue; - } - if (value == null && value1 == null) { - continue; - } - if (!(value != null && value instanceof Comparable)) { - continue; - } - if (!(value1 != null && value1 instanceof Comparable)) { - continue; - } - if (value == null && value1 != null) { - return false; - } - if (value1 == null && value != null) { - return false; - } - if (((Comparable) value).compareTo(value1) != 0) { - return false; - } - } - return equal; - } - - /** - * Metodo que se encarga de hacer un merge de dos objetos, si los datos de un campo del objeto origen son diferentes - * a los del destino remplazo los datos destino con los datos del origen. - * - * @param pSourceObject Datos del objeto orgigene a copiar al destino. - * @param pDestinyObject Datos del objeto destino. - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - public static void mergeObject(Object pSourceObject, Object pDestinyObject) throws SecurityException, IllegalArgumentException, - NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - Field f[] = pSourceObject.getClass().getDeclaredFields(); - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 || obj.getName().compareTo("class") == 0 - || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - Object value = BeanManager.getBeanAttributeValue(pSourceObject, obj.getName()); - Object value1 = BeanManager.getBeanAttributeValue(pDestinyObject, obj.getName()); - if (!BeanManager.isEqual(value, value1)) { - BeanManager.setBeanAttributeValue(pDestinyObject, obj.getName(), value); - } - } - } - - /** - * Metodo que compara el valor de dos objetos simples no compuestos, ejemplo BigDecimal, String, Integer etc. - * - * @param pValue valor a compar - * @param pValue1 valor con el que se compara el primer parametro. - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - private static boolean isEqual(Object pValue, Object pValue1) throws Exception { - if (pValue == null && pValue1 == null) { - return true; - } else if (pValue == null && pValue1 != null) { - return false; - } else if (pValue1 == null && pValue != null) { - return false; - } else if (!(pValue != null && pValue instanceof Comparable)) { - return true; - } else if (!(pValue1 != null && pValue1 instanceof Comparable)) { - return true; - } else if (((Comparable) pValue).compareTo(pValue1) != 0) { - return false; - } else { - return true; - } - } - - /** - * Metodo que compara dos string dado la una condicion. - * - * @param pValue Valor del primer string. - * @param pOtherValue Valor con el que se compara el primer string. - * @param pCondition Condicion con la que se evalua los dos strings. - * @return - */ - public static boolean compareString(String pValue, String pOtherValue, String pCondition) { - if (pCondition.compareTo("==") == 0 || pCondition.compareTo("=") == 0) { - if (pValue.compareTo(pOtherValue) == 0) { - return true; - } - } - if (pCondition.compareTo("!=") == 0) { - if (pValue.compareTo(pOtherValue) != 0) { - return true; - } - } - if (pCondition.compareTo(">") == 0) { - if (pValue.compareTo(pOtherValue) > 0) { - return true; - } - } - if (pCondition.compareTo(">=") == 0) { - if (pValue.compareTo(pOtherValue) >= 0) { - return true; - } - } - if (pCondition.compareTo("<") == 0) { - if (pValue.compareTo(pOtherValue) < 0) { - return true; - } - } - if (pCondition.compareTo("<=") == 0) { - if (pValue.compareTo(pOtherValue) <= 0) { - return true; - } - } - return false; - } - - /** - * Metodo que compara dos BigDecimal dado la una condicion. - * - * @param pValue Valor del primer BigDecimal. - * @param pOtherValue Valor con el que se compara el primer BigDecimal. - * @param pCondition Condicion con la que se evalua los dos BigDecimal. - * @return - */ - public static boolean compareBigDecimal(BigDecimal pValue, BigDecimal pOtherValue, String pCondition) { - if (pCondition.compareTo("==") == 0 || pCondition.compareTo("=") == 0) { - if (pValue.compareTo(pOtherValue) == 0) { - return true; - } - } - if (pCondition.compareTo("!=") == 0) { - if (pValue.compareTo(pOtherValue) != 0) { - return true; - } - } - if (pCondition.compareTo(">") == 0) { - if (pValue.compareTo(pOtherValue) > 0) { - return true; - } - } - if (pCondition.compareTo(">=") == 0) { - if (pValue.compareTo(pOtherValue) >= 0) { - return true; - } - } - if (pCondition.compareTo("<") == 0) { - if (pValue.compareTo(pOtherValue) < 0) { - return true; - } - } - if (pCondition.compareTo("<=") == 0) { - if (pValue.compareTo(pOtherValue) <= 0) { - return true; - } - } - return false; - } - - public static Integer getRecordversion(Object bean) throws Exception { - Object optlock; - try { - optlock = BeanManager.getBeanAttributeValue(bean, "recordversion"); - } catch (NoSuchMethodException e) { - return null; - } - if (optlock == null) { - return 0; - } - return Integer.valueOf(optlock.toString()); - } - - @SuppressWarnings("unchecked") - public static HashMap getModified(AbstractDataTransport beanoriginal, AbstractDataTransport beanmodificado) throws Exception { - - HashMap updated = new HashMap(); - Field f[] = beanoriginal.getClass().getDeclaredFields(); - boolean modificado = false; - Integer optlock = null; - - for (Field obj : f) { - modificado = false; - String ncampo = obj.getName(); - if (ncampo.compareTo("pk") == 0 || ncampo.compareTo("hashValue") == 0 || ncampo.compareTo("class") == 0 - || ncampo.compareTo("serialVersionUID") == 0) { - continue; - } - Object valori, valmod = null; - try { - valori = BeanManager.getBeanAttributeValue(beanoriginal, obj.getName()); - valmod = BeanManager.getBeanAttributeValue(beanmodificado, obj.getName()); - } catch (NoSuchMethodException e) { - continue; - } - if (valmod instanceof byte[]) { - updated.put(ncampo, valmod); - continue; - } - if (ncampo.equals("recordversion")) { - optlock = (Integer) valmod; - continue; - } - if (valori == null && valmod == null) { - continue; - } - if (valori == null && valmod != null) { - modificado = true; - } - if (valmod == null && valori != null) { - modificado = true; - } - if (valori != null && valmod != null && ((Comparable) valori).compareTo(valmod) != 0) { - modificado = true; - } - if (modificado) { - updated.put(ncampo, valmod); - } - } - if (!updated.isEmpty()) { - updated.put("pk", BeanManager.getBeanAttributeValue(beanmodificado, "pk")); - if (optlock != null) { - updated.put("recordversion", BeanManager.getBeanAttributeValue(beanmodificado, "recordversion")); - } - - // hay que crear el objeto para poder eliminar el bean original. - HashMap mdata = new HashMap(); - mdata = (HashMap) BeanManager.getBeanAttributeValue(beanmodificado, "modifiedData"); - // mdata.remove("ORIGINALBEAN"); - updated.put("modifiedData", mdata); - updated.put("rowkey", BeanManager.getBeanAttributeValue(beanmodificado, "rowkey")); - - } - return updated; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.svn-base b/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.svn-base deleted file mode 100644 index d8d2a18..0000000 --- a/base/dto/dto/src/main/java/com/fp/common/helper/.svn/text-base/BeanManager.java.svn-base +++ /dev/null @@ -1,590 +0,0 @@ -package com.fp.common.helper; - -/** - * Clase utilitaria para el manejo de objetos, ejemplo permite comparar dos objetos, obtener el valor de un atributo de un objeto, fijar el valor de un atributo de un objeto, entrega informacin de datos que fueron modificado en el objeto original. - * - * @author Jorge Vaca. - * @version 2.1 - */ - -import java.lang.reflect.Constructor; -import java.lang.reflect.Field; -import java.lang.reflect.InvocationTargetException; -import java.lang.reflect.Method; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.HashMap; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.hb.HibernateBean; - -/** - * Clase utilitaria para el manejo de objetos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class BeanManager { - - public static SimpleDateFormat getTransportDateFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd"); - return sdf; - } - - /** - * Obtiene el Formateador para el Transporte de Timestamp - * - * @throws java.lang.Exception Error en la creaci�n del Formateador - * @return Formateador para el Transporte de Timestamp - */ - public static SimpleDateFormat getTransportDatetimeFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - return sdf; - - } - - /** - * Obtiene el formateador de Timestamps para su transaporte en String - * - * @return Formtateador - * @throws Exception - */ - public static SimpleDateFormat getTransportTimestampFormat() { - SimpleDateFormat sdf = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - return sdf; - } - - /** - * Entrega el valor de un atributo perteneciente a un bean persistente. - * - * @param pObject Bean persistente. - * @param pName Nombre del atributo. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws InvocationTargetException - * @throws IllegalAccessException - * @throws IllegalArgumentException - * @throws Exception - */ - public static Object getBeanAttributeValue(Object pObject, String pAttribute) throws Exception { - if (pAttribute.indexOf('.') > 0) { - String name = pAttribute.substring(0, pAttribute.indexOf('.')); - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - name = name.substring(0, 1).toUpperCase() + name.substring(1); - Method m = null; - try { - m = pObject.getClass().getMethod("get" + name, new Class[] {}); - } catch (Exception e) { - m = pObject.getClass().getMethod("is" + name, new Class[] {}); - } - return BeanManager.getBeanAttributeValue(m.invoke(pObject, new Object[] {}), subName); - } else { - Method m = BeanManager.getBeanGetterMethod(pObject, pAttribute); - return m.invoke(pObject, new Object[] {}); - } - } - - /** - * Fija el valro de un un atributo del bean, dado el bean, nombre del atributo y el valor. - * - * @param bean Objeto a fijar el valor. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a alamcenar en el atributo. - * @return Object - * @throws Exception - */ - @SuppressWarnings({ "rawtypes", "unchecked" }) - public static Object setAbstractDataTransportAttributeValue(HibernateBean bean, String pAttribute, Object pValue) throws Exception { - try { - BeanManager.setBeanAttributeValue(bean, pAttribute, pValue); - } catch (IllegalArgumentException e) { - Class type = BeanManager.getBeanGetterMethod(bean, pAttribute).getReturnType(); - pValue = BeanManager.convertObject(pValue, type); - try { - BeanManager.setBeanAttributeValue(bean, pAttribute, pValue); - } catch (NoSuchMethodException e2) { - ((AbstractDataTransport) bean).put(pAttribute, pValue); - } - } - return bean; - } - - /** - * Fija el valor de un atributo en un TransportBean. - * - * @param pObject Referencia a TransportBean. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a fijar en el atributo del bean. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws InvocationTargetException - * @throws IllegalAccessException - * @throws IllegalArgumentException - * @throws Exception - */ - public static Object setBeanAttributeValue(Object pObject, String pAttribute, Object pValue) throws SecurityException, NoSuchMethodException, - IllegalArgumentException, IllegalAccessException, InvocationTargetException { - if (pAttribute.indexOf('.') > 0) { - String name = pAttribute.substring(0, pAttribute.indexOf('.')); - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - name = name.substring(0, 1).toUpperCase() + name.substring(1); - Method m = pObject.getClass().getMethod("get" + name, new Class[] {}); - return BeanManager.setBeanAttributeValue(m.invoke(pObject, new Object[] {}), subName, pValue); - } else { - Method m = BeanManager.getBeanSetterMethod(pObject, pAttribute, pValue); - return m.invoke(pObject, new Object[] { pValue }); - } - } - - @SuppressWarnings("unchecked") - public static T convertObject(Object pValue, Class pType) throws ParseException { - return BeanManager.convertObject(pValue, pType, false); - } - - @SuppressWarnings("unchecked") - public static T convertObject(Object pValue, Class pType, boolean pUpper) throws ParseException { - Object value = pValue; - if (pType.getName().compareTo("java.lang.String") == 0 && pUpper) { - if (value != null) { - value = value.toString().toUpperCase(); - } - } - try { - if (value == null || value.getClass().getName().compareTo(pType.getName()) == 0) { - return (T) value; - } - if (value != null) { - if (pType.getName().compareTo("java.lang.String") != 0 && pValue.toString().compareTo("") == 0) { - return null; - } - } - - return pType.cast(value); - } catch (ClassCastException e) { - ; - } - String sValue = value.toString(); - Class[] param = { String.class }; - try { - Constructor c = pType.getConstructor(param); - Object[] data = { sValue }; - return (T) c.newInstance(data); - } catch (Exception e) { - // No hacer nada - } - if (pType.getName().compareTo(Timestamp.class.getName()) == 0) { - String val = sValue; - if (sValue.indexOf(".") < 0) { - sValue += ".0"; - } - String d[] = sValue.split(" "); - if (d.length == 2) { - sValue = d[0] + " " + d[1].replaceAll("-", ":"); - } - try { - return (T) new Timestamp(BeanManager.getTransportTimestampFormat().parse(sValue).getTime()); - } catch (Exception e) { - return (T) new Timestamp(BeanManager.getTransportDateFormat().parse(val).getTime()); - } - } - if (pType.getName().compareTo(Date.class.getName()) == 0) { - String d[] = sValue.split(" "); - if (d.length == 2) { - sValue = d[0]; - } - return (T) new Date(BeanManager.getTransportDateFormat().parse(sValue).getTime()); - } - /* - * if(pType.getName().compareTo(Clob.class.getName()) == 0){ ClobImpl clob = new ClobImpl(sValue); return clob; - * } if(pType.getName().compareTo(Blob.class.getName()) == 0){ BlobImpl blob = new BlobImpl(sValue.getBytes()); - * return blob; } - */ - return (T) value; - } - - /** - * Entrega el valor de un atributo para que sea comparable. - * - * @param pObject Bean de referencia. - * @param pAttribute Atributo a obtener el valor. - * @return - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static Comparable getBeanAttributeComparable(Object pObject, String pAttribute) throws SecurityException, - IllegalArgumentException, NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - return (Comparable) BeanManager.getBeanAttributeValue(pObject, pAttribute); - } - - /** - * Entrega el valor de un atributo perteneciente a un bean persistente. - * - * @param pObject Bean persistente. - * @param pName Nombre del atributo. - * @return - * @throws NoSuchMethodException - * @throws SecurityException - * @throws Exception - */ - public static Method getBeanGetterMethod(Object pObject, String pField) throws SecurityException, NoSuchMethodException, ClassNotFoundException, - IllegalAccessException, InstantiationException { - Method m = null; - if (pField.indexOf('.') > 0) { - m = BeanManager.getMethodpk(pObject, pField); - } else { - m = BeanManager.getMethodnormal(pObject, pField); - } - return m; - } - - private static Method getMethodnormal(Object pObject, String pField) throws SecurityException, NoSuchMethodException { - pField = pField.substring(0, 1).toUpperCase() + pField.substring(1); - Method m = null; - try { - m = BeanManager.getMethod(pObject, "get" + pField, null); - } catch (Exception e) { - m = BeanManager.getMethod(pObject, "is" + pField, null); - } - return m; - } - - private static Method getMethodpk(Object pObject, String pAttribute) throws SecurityException, NoSuchMethodException, ClassNotFoundException, - IllegalAccessException, InstantiationException { - Method m = null; - Object bean = null; - String classpk = ""; - if (pAttribute.indexOf('.') > 0) { - String subName = pAttribute.substring(pAttribute.indexOf('.') + 1); - subName = subName.substring(0, 1).toUpperCase() + subName.substring(1); - classpk = pObject.getClass().getName() + "Key"; - try { - bean = BeanManager.getBeanAttributeValue(pObject, "pk"); - } catch (Exception e) { - // No hacer nada - } - if (bean == null) { - bean = Class.forName(classpk).newInstance(); - } - try { - m = bean.getClass().getMethod("get" + subName, new Class[] {}); - } catch (Exception e) { - m = bean.getClass().getMethod("is" + subName, new Class[] {}); - } - } - return m; - } - - private static Method getMethod(Object pObject, String pMethod, Object pValue) throws NoSuchMethodException { - Method[] m = pObject.getClass().getMethods(); - Method method = null; - for (Method me : m) { - if (me.getName().compareTo(pMethod) == 0) { - method = me; - break; - } - } - if (method == null) { - method = pObject.getClass().getMethod(pMethod, pValue == null ? null : new Class[] { pValue.getClass() }); - } - return method; - } - - /** - * Entrega el nombre del metodo a invocar para fijar un valor en un Bean. - * - * @param pObject Bean de referencia. - * @param pAttribute Nombre del atributo a fijar el valor. - * @param pValue Valor a fijar en el atributo. - * @return - * @throws SecurityException - * @throws NoSuchMethodException - */ - public static Method getBeanSetterMethod(Object pObject, String pAttribute, Object pValue) throws SecurityException, NoSuchMethodException { - pAttribute = pAttribute.substring(0, 1).toUpperCase() + pAttribute.substring(1); - return BeanManager.getMethod(pObject, "set" + pAttribute, pValue); - } - - /** - * Compara dos Objetos, si los objetos son iguales retorna true. - * - * @param pObject Objeto uno. - * @param pOtherObject Objeto dos - * @return - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static boolean compareObject(Object pObject, Object pOtherObject) throws SecurityException, IllegalArgumentException, - NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - Field f[] = pObject.getClass().getDeclaredFields(); - boolean equal = true; - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 || obj.getName().compareTo("class") == 0 - || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - Object value = null; - try { - value = BeanManager.getBeanAttributeValue(pObject, obj.getName()); - } catch (NoSuchMethodException e) { - continue; - } - Object value1 = null; - try { - value1 = BeanManager.getBeanAttributeValue(pOtherObject, obj.getName()); - } catch (Exception e) { - continue; - } - if (value == null && value1 == null) { - continue; - } - if (!(value != null && value instanceof Comparable)) { - continue; - } - if (!(value1 != null && value1 instanceof Comparable)) { - continue; - } - if (value == null && value1 != null) { - return false; - } - if (value1 == null && value != null) { - return false; - } - if (((Comparable) value).compareTo(value1) != 0) { - return false; - } - } - return equal; - } - - /** - * Metodo que se encarga de hacer un merge de dos objetos, si los datos de un campo del objeto origen son diferentes - * a los del destino remplazo los datos destino con los datos del origen. - * - * @param pSourceObject Datos del objeto orgigene a copiar al destino. - * @param pDestinyObject Datos del objeto destino. - * @throws SecurityException - * @throws IllegalArgumentException - * @throws NoSuchMethodException - * @throws IllegalAccessException - * @throws InvocationTargetException - * @throws Exception - */ - public static void mergeObject(Object pSourceObject, Object pDestinyObject) throws SecurityException, IllegalArgumentException, - NoSuchMethodException, IllegalAccessException, InvocationTargetException, Exception { - Field f[] = pSourceObject.getClass().getDeclaredFields(); - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 || obj.getName().compareTo("class") == 0 - || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - Object value = BeanManager.getBeanAttributeValue(pSourceObject, obj.getName()); - Object value1 = BeanManager.getBeanAttributeValue(pDestinyObject, obj.getName()); - if (!BeanManager.isEqual(value, value1)) { - BeanManager.setBeanAttributeValue(pDestinyObject, obj.getName(), value); - } - } - } - - /** - * Metodo que compara el valor de dos objetos simples no compuestos, ejemplo BigDecimal, String, Integer etc. - * - * @param pValue valor a compar - * @param pValue1 valor con el que se compara el primer parametro. - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - private static boolean isEqual(Object pValue, Object pValue1) throws Exception { - if (pValue == null && pValue1 == null) { - return true; - } else if (pValue == null && pValue1 != null) { - return false; - } else if (pValue1 == null && pValue != null) { - return false; - } else if (!(pValue != null && pValue instanceof Comparable)) { - return true; - } else if (!(pValue1 != null && pValue1 instanceof Comparable)) { - return true; - } else if (((Comparable) pValue).compareTo(pValue1) != 0) { - return false; - } else { - return true; - } - } - - /** - * Metodo que compara dos string dado la una condicion. - * - * @param pValue Valor del primer string. - * @param pOtherValue Valor con el que se compara el primer string. - * @param pCondition Condicion con la que se evalua los dos strings. - * @return - */ - public static boolean compareString(String pValue, String pOtherValue, String pCondition) { - if (pCondition.compareTo("==") == 0 || pCondition.compareTo("=") == 0) { - if (pValue.compareTo(pOtherValue) == 0) { - return true; - } - } - if (pCondition.compareTo("!=") == 0) { - if (pValue.compareTo(pOtherValue) != 0) { - return true; - } - } - if (pCondition.compareTo(">") == 0) { - if (pValue.compareTo(pOtherValue) > 0) { - return true; - } - } - if (pCondition.compareTo(">=") == 0) { - if (pValue.compareTo(pOtherValue) >= 0) { - return true; - } - } - if (pCondition.compareTo("<") == 0) { - if (pValue.compareTo(pOtherValue) < 0) { - return true; - } - } - if (pCondition.compareTo("<=") == 0) { - if (pValue.compareTo(pOtherValue) <= 0) { - return true; - } - } - return false; - } - - /** - * Metodo que compara dos BigDecimal dado la una condicion. - * - * @param pValue Valor del primer BigDecimal. - * @param pOtherValue Valor con el que se compara el primer BigDecimal. - * @param pCondition Condicion con la que se evalua los dos BigDecimal. - * @return - */ - public static boolean compareBigDecimal(BigDecimal pValue, BigDecimal pOtherValue, String pCondition) { - if (pCondition.compareTo("==") == 0 || pCondition.compareTo("=") == 0) { - if (pValue.compareTo(pOtherValue) == 0) { - return true; - } - } - if (pCondition.compareTo("!=") == 0) { - if (pValue.compareTo(pOtherValue) != 0) { - return true; - } - } - if (pCondition.compareTo(">") == 0) { - if (pValue.compareTo(pOtherValue) > 0) { - return true; - } - } - if (pCondition.compareTo(">=") == 0) { - if (pValue.compareTo(pOtherValue) >= 0) { - return true; - } - } - if (pCondition.compareTo("<") == 0) { - if (pValue.compareTo(pOtherValue) < 0) { - return true; - } - } - if (pCondition.compareTo("<=") == 0) { - if (pValue.compareTo(pOtherValue) <= 0) { - return true; - } - } - return false; - } - - public static Integer getRecordversion(Object bean) throws Exception { - Object optlock; - try { - optlock = BeanManager.getBeanAttributeValue(bean, "recordversion"); - } catch (NoSuchMethodException e) { - return null; - } - if (optlock == null) { - return 0; - } - return Integer.valueOf(optlock.toString()); - } - - @SuppressWarnings("unchecked") - public static HashMap getModified(AbstractDataTransport beanoriginal, AbstractDataTransport beanmodificado) throws Exception { - - HashMap updated = new HashMap(); - Field f[] = beanoriginal.getClass().getDeclaredFields(); - boolean modificado = false; - Integer optlock = null; - - for (Field obj : f) { - modificado = false; - String ncampo = obj.getName(); - if (ncampo.compareTo("pk") == 0 || ncampo.compareTo("hashValue") == 0 || ncampo.compareTo("class") == 0 - || ncampo.compareTo("serialVersionUID") == 0) { - continue; - } - Object valori, valmod = null; - try { - valori = BeanManager.getBeanAttributeValue(beanoriginal, obj.getName()); - valmod = BeanManager.getBeanAttributeValue(beanmodificado, obj.getName()); - } catch (NoSuchMethodException e) { - continue; - } - if (valmod instanceof byte[]) { - updated.put(ncampo, valmod); - continue; - } - if (ncampo.equals("recordversion")) { - optlock = (Integer) valmod; - continue; - } - if (valori == null && valmod == null) { - continue; - } - if (valori == null && valmod != null) { - modificado = true; - } - if (valmod == null && valori != null) { - modificado = true; - } - if (valori != null && valmod != null && ((Comparable) valori).compareTo(valmod) != 0) { - modificado = true; - } - if (modificado) { - updated.put(ncampo, valmod); - } - } - if (!updated.isEmpty()) { - updated.put("pk", BeanManager.getBeanAttributeValue(beanmodificado, "pk")); - if (optlock != null) { - updated.put("recordversion", BeanManager.getBeanAttributeValue(beanmodificado, "recordversion")); - } - - // hay que crear el objeto para poder eliminar el bean original. - HashMap mdata = new HashMap(); - mdata = (HashMap) BeanManager.getBeanAttributeValue(beanmodificado, "modifiedData"); - // mdata.remove("ORIGINALBEAN"); - updated.put("modifiedData", mdata); - updated.put("rowkey", BeanManager.getBeanAttributeValue(beanmodificado, "rowkey")); - - } - return updated; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/.svn/entries deleted file mode 100644 index 5d621ee..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/entries +++ /dev/null @@ -1,293 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto -svn://172.17.26.185/COMACO - - - -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -batch -dir - -AbstractDataTransfer.java -file - - - - -2022-07-28T03:40:33.383763Z -fcd55c41de95a86296c5865edc88b178 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5201 - -quota -dir - -hb -dir - -AbstractDataTransport.java -file - - - - -2022-07-28T03:40:33.383763Z -5f1730bfffe59bbf6720e955766ac122 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2632 - -rules -dir - -save -dir - -AbstractDataBalanceTransport.java -file - - - - -2022-07-28T03:40:33.383763Z -83021349decbd8e7523e87358263b3e2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -830 - -query -dir - -GeneralRequest.java -file - - - - -2022-07-28T03:40:33.384763Z -854766c8f6c0321082ec82fbb4b6d77f -2014-09-11T07:18:43.661713Z -674 -jvaca - - - - - - - - - - - - - - - - - - - - - -12577 - -Request.java -file - - - - -2022-07-28T03:40:33.384763Z -c2ceffa195b541e1ec28dec390271aeb -2016-01-28T19:52:45.544614Z -4419 -fpazmino - - - - - - - - - - - - - - - - - - - - - -24465 - -data -dir - -fin -dir - -AbstractData.java -file - - - - -2022-07-28T03:40:33.384763Z -6ab5cd1e41aedc77f8b5592b8c99d20c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5083 - -Response.java -file - - - - -2022-07-28T03:40:33.384763Z -664c73830ac71185744f5f260b8a4335 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6716 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractData.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractData.java.svn-base deleted file mode 100644 index fd208ca..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractData.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.dto; - -import java.beans.PropertyChangeEvent; -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.beanutils.BeanMap; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.hb.HibernateId; - -public abstract class AbstractData extends HashMap implements Serializable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - // protected PropertyChangeSupport pcs = new PropertyChangeSupport(this); - private final Map modifiedData = new HashMap(); - - // private boolean modified = false; - - public Map modifiedData() { - return modifiedData; - } - - @SuppressWarnings({ "unchecked", "rawtypes" }) - private void verifyField(String pField, Object pOld, Object pNew) { - if (pOld == pNew) { - return; - } - if (pOld == null && pNew != null) { - this.putFieldModified(pField, "null"); - return; - } - if (pOld != null && pNew == null) { - this.putFieldModified(pField, pOld); - return; - } - if (pOld.getClass().getName().compareTo(pNew.getClass().getName()) != 0) { - this.putFieldModified(pField, pOld); - return; - } - if (pOld instanceof Comparable) { - if (((Comparable) pOld).compareTo(pNew) != 0) { - this.putFieldModified(pField, pOld); - return; - } - } - this.putFieldModified(pField, pOld); - } - - private void putFieldModified(String pField, Object pData) { - if (!this.modifiedData.containsKey(pField)) { - // modified = true; - modifiedData.put(pField, pData); - } - } - - - /** - * Entrega el valor de: modifiedData - * @return Map - */ - public Map getModifiedData() { - return modifiedData; - } - - public void propertyChange(PropertyChangeEvent evt) { - this.verifyField(evt.getPropertyName(), evt.getOldValue(), evt.getNewValue()); - } - - /* - * public PropertyChangeSupport getPcs() { return pcs; } - */ - public void clean() { - // this.modified=false; - this.modifiedData.clear(); - } - - public String getTransportBeanClass() { - return this.getClass().getCanonicalName(); - } - - public void addAddtionalInfo(String pName, Object pValue) { - super.put(pName, pValue); - } - - /* - * (non-Javadoc) - * - * @see java.util.HashMap#entrySet() - */ - @SuppressWarnings({ "unchecked", "rawtypes" }) - @Override - public Set> entrySet() { - Field[] fs1 = this.getClass().getDeclaredFields(); - List fs = new ArrayList(); - for (Field f : fs1) { - fs.add(f); - } - try { - Class csuper = this.getClass().getSuperclass(); - do { - if (csuper != null) { - Field[] fs2 = csuper.getDeclaredFields(); - for (Field f : fs2) { - fs.add(f); - } - } - csuper = csuper.getSuperclass(); - } while (csuper != null); - } catch (Exception e) { - } - for (Field field : fs) { - try { - String name = field.getName(); - if (name.compareTo("serialVersionUID") == 0) { - continue; - } - Object val = null; - try { - val = BeanManager.getBeanAttributeValue(this, name); - } catch (Exception e1) { - continue; - } - if (val instanceof HibernateId) { - BeanMap bm = new BeanMap(val); - Set> ent = bm.entrySet(); - for (java.util.Map.Entry e : ent) { - String key = e.getKey(); - if (key.compareTo("class") == 0 || key.compareTo("transportBeanClass") == 0 || key.compareTo("empty") == 0) { - // key = "transportBeanClass"; para que no envie el transportbeanclass - continue; - } - super.put(name + "_" + key, e.getValue()); - } - continue; - } - super.put(name, val); - } catch (Exception e) { - continue; - } - } - // super.put("transportBeanClass", this.getTransportBeanClass()); - return super.entrySet(); - } - - public Set> entrySetDefault() { - return super.entrySet(); - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataBalanceTransport.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataBalanceTransport.java.svn-base deleted file mode 100644 index 84c7be5..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataBalanceTransport.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.dto; - -import com.fp.dto.fin.FinancialExchange; - -/** - * Clase a extender en las clase que manejan saldos de cuentas. - * @author Jorge Vaca - * @version 2.1 - */ -public class AbstractDataBalanceTransport extends AbstractDataTransport{ - - private static final long serialVersionUID = 1L; - /**Indica si el registro de la tabla es modificado.*/ - private boolean modified = false; - - /** - * Entrega el valor de: modified - * @return boolean - */ - public boolean isModified() { - return modified; - } - - /** - * Fija el valor de: modified - * @param modified - */ - public void setModified(boolean modified) { - this.modified = modified; - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - AbstractDataBalanceTransport p = (AbstractDataBalanceTransport) this.clone(); - return p; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransfer.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransfer.java.svn-base deleted file mode 100644 index ead471a..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransfer.java.svn-base +++ /dev/null @@ -1,222 +0,0 @@ -package com.fp.dto; - -import java.io.Serializable; -import java.util.HashMap; - -public abstract class AbstractDataTransfer extends HashMap implements Serializable,Cloneable{ - /** - * Codigo de version de la clase. - */ - private static final long serialVersionUID = 1L; - /** Codigo de usuario que ejecuta una transaccion. */ - private String user; - /** Codigo interno de usuario que ejecuta una transaccion. */ - private Integer internalUserCode; - /** Idioma preferido del usuario. */ - protected String language; - /** Perfil del Usuario. */ - protected Integer profile; - /** Codigo del modulo al que pertenece la transaccion. */ - private String transactionModule; - /** Codigo de transaccion a ejecutar. */ - private Integer transactionCode; - /** Version de la transaccion a ejecutar. */ - private Integer transactionVersion; - /** Codigo de terminal asociado al ip de la maquina desde la cual se ejecuta una transaccion. */ - private String terminalCode; - /** Identificador de la transaccion. */ - private String journalId; - /** Codigo de canal desde el cual se ejecuta una transaccion. */ - private String channelCode; - /** Codigo de sucursal origen de la transaccion. */ - private Integer branchCode; - /** Codigo de oficina origen de la transaccion. */ - private Integer officeCode; - /** Codigo de usuario que ejecuta una transaccion. */ - private String authorizedUser; - /** - * Entrega el valor de: user - * @return String - */ - public String getUser() { - return user; - } - /** - * Fija el valor de: user - * @param user - */ - public void setUser(String user) { - this.user = user; - } - - /** - * Entrega el valor de: internalUserCode - * @return Integer - */ - public Integer getInternalUserCode() { - return internalUserCode; - } - /** - * Fija el valor de internalUserCode - * @param internalUserCode value to set - */ - public void setInternalUserCode(Integer internalUserCode) { - this.internalUserCode = internalUserCode; - } - /** - * Entrega el valor de: language - * @return String - */ - public String getLanguage() { - return language; - } - /** - * Fija el valor de: language - * @param language - */ - public void setLanguage(String language) { - this.language = language; - } - /** - * Entrega el valor de: profile - * @return Integer - */ - public Integer getProfile() { - return profile; - } - /** - * Fija el valor de: profile - * @param profile - */ - public void setProfile(Integer profile) { - this.profile = profile; - } - /** - * Entrega el valor de: transactionModule - * @return String - */ - public String getTransactionModule() { - return transactionModule; - } - /** - * Fija el valor de: transactionModule - * @param transactionModule - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - /** - * Entrega el valor de: transactionCode - * @return Integer - */ - public Integer getTransactionCode() { - return transactionCode; - } - /** - * Fija el valor de: transactionCode - * @param transactionCode - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - /** - * Entrega el valor de: transactionVersion - * @return Integer - */ - public Integer getTransactionVersion() { - return transactionVersion; - } - /** - * Fija el valor de: transactionVersion - * @param transactionVersion - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - /** - * Entrega el valor de: terminalCode - * @return String - */ - public String getTerminalCode() { - return terminalCode; - } - /** - * Fija el valor de: terminalCode - * @param terminalCode - */ - public void setTerminalCode(String terminalCode) { - this.terminalCode = terminalCode; - } - /** - * Entrega el valor de: journalId - * @return String - */ - public String getJournalId() { - return journalId; - } - /** - * Fija el valor de: journalId - * @param journalId - */ - public void setJournalId(String journalId) { - this.journalId = journalId; - } - /** - * Entrega el valor de: channelCode - * @return String - */ - public String getChannelCode() { - return channelCode; - } - /** - * Fija el valor de: channelCode - * @param channelCode - */ - public void setChannelCode(String channelCode) { - this.channelCode = channelCode; - } - /** - * Entrega el valor de: branchCode - * @return Integer - */ - public Integer getBranchCode() { - return branchCode; - } - /** - * Fija el valor de: branchCode - * @param branchCode - */ - public void setBranchCode(Integer branchCode) { - this.branchCode = branchCode; - } - /** - * Entrega el valor de: officeCode - * @return Integer - */ - public Integer getOfficeCode() { - return officeCode; - } - /** - * Fija el valor de: officeCode - * @param officeCode - */ - public void setOfficeCode(Integer officeCode) { - this.officeCode = officeCode; - } - /** - * Entrega el valor de: authorizedUser - * @return String - */ - public String getAuthorizedUser() { - return authorizedUser; - } - /** - * Fija el valor de: authorizedUser - * @param authorizedUser - */ - public void setAuthorizedUser(String authorizedUser) { - this.authorizedUser = authorizedUser; - } - - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransport.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransport.java.svn-base deleted file mode 100644 index 8770c7e..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/AbstractDataTransport.java.svn-base +++ /dev/null @@ -1,113 +0,0 @@ -package com.fp.dto; - -import java.io.Serializable; -import java.util.HashMap; -import java.util.Map; - -/** - * Clase a extender en los entity beans, que manejan el mapeo de objetos con la base de datos relacional. - * - * @author Jorge Vaca . - * @version 2.1 - */ -public abstract class AbstractDataTransport implements Serializable, Cloneable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** - * HashCode asociado con la Instancia. - */ - private int rowkey = 0; - - public HashMap modifiedData = new HashMap(); - - /** - * Indica que el registro es nuevo. - */ - public boolean isnew = false; - - /** Indica que el registro se actualiza en la base de datos en save generico. */ - public boolean isupdated = false; - - public abstract Object cloneMe() throws CloneNotSupportedException; - - /** - * Implementacion del metodo rowkey del registro. - * - * @return el hashCode la instancia - */ - public final int rowkey() { - if (rowkey == 0) { - rowkey = (int) (Math.random() * 10000000); - } - return rowkey; - } - - // private boolean modified = false; - - public Map modifiedData() { - return modifiedData; - } - - public Object get(String key) { - return modifiedData.get(key); - } - - public void put(String pField, Object pData) { - modifiedData.put(pField, pData); - } - - public void addAddtionalInfo(String pName, Object pValue) { - modifiedData.put(pName, pValue); - } - - public HashMap getModifiedData() { - return modifiedData; - } - - public void setModifiedData(HashMap modifiedData) { - this.modifiedData = modifiedData; - } - - public String getTransportBeanClass() { - return this.getClass().getCanonicalName(); - } - - /** - * Entrega el valor de: rowkey - * - * @return int - */ - public int getRowkey() { - return rowkey; - } - - /** - * Fija el valor de: rowkey - * - * @param Valor a fijar en el atributo. - */ - public void setRowkey(int rowkey) { - this.rowkey = rowkey; - } - - /** - * Entrega el valor de: isnew - * - * @return boolean - */ - public boolean isIsnew() { - return isnew; - } - - /** - * Fija el valor de: isnew - * - * @param Valor a fijar en el atributo - */ - public void setIsnew(boolean isnew) { - this.isnew = isnew; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/GeneralRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/GeneralRequest.java.svn-base deleted file mode 100644 index 4744d99..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/GeneralRequest.java.svn-base +++ /dev/null @@ -1,524 +0,0 @@ -package com.fp.dto; - -import java.io.Serializable; - -public class GeneralRequest extends AbstractDataTransport implements Serializable { - - private static final long serialVersionUID = 1L; - - /** Objeto que almacena la respuesta de una consulta. */ - private Response response; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String user; - - /** Idioma preferido del usuario. */ - /** Codigo interno de usuario que ejecuta una transaccion. */ - protected Integer internalUserCode; - - /** - * language - */ - protected String language; - - /** Perfil del Usuario. */ - protected String profile; - - /** Codigo del modulo al que pertenece la transaccion. */ - protected String transactionModule; - - /** Codigo de transaccion a ejecutar. */ - protected Integer transactionCode; - - /** Version de la transaccion a ejecutar. */ - protected Integer transactionVersion; - - /** Codigo de terminal asociado al ip de la maquina desde la cual se ejecuta una transaccion. */ - protected String terminalCode; - - /** Identificador de la transaccion. */ - protected String journalId; - - /** Codigo de canal desde el cual se ejecuta una transaccion. */ - protected String channelCode; - - /** Codigo de compania. */ - protected Integer company; - - /** Codigo de sucursal origen de la transaccion. */ - protected Integer branchCode; - - /** Codigo de oficina origen de la transaccion. */ - protected Integer officeCode; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String authorizedUser; - - /** Numero de cuenta a enviar al log de transacion. */ - protected String logaccount; - - /** Numero de solicitud a enviar al log de transacion. */ - protected String logsolicitude; - - /** Codigo de persona a enviar al log de transacion. */ - protected Integer logperson; - - /** - * Subject a presentar en la agenda del usuario. - */ - protected String subject; - - /** Codigo del modulo original al que pertenece la transaccion. */ - private String originalTransactionModule; - - /** Codigo de transaccion original a ejecutar. */ - private Integer originalTransactionCode; - - /** Version de la transaccion original a ejecutar. */ - private Integer originalTransactionVersion; - - /** Secuencia interna de la transaccion por numero de mensaje. */ - private Integer jounalSequence; - - /** Indica que la transaccion que se esta ejecutando es el linea. */ - private boolean onLine = true; - - /** - * Entrega el valor de: response - * - * @return Response - */ - public Response getResponse() { - return response; - } - - /** - * Fija el valor de: response - * - * @param response Valor a fijar en el atributo. - */ - public void setResponse(Response response) { - this.response = response; - } - - /** - * Entrega el valor de: user - * - * @return String - */ - public String getUser() { - return user; - } - - /** - * Fija el valor de: user - * - * @param user Valor a fijar en el atributo. - */ - public void setUser(String user) { - this.user = user; - } - - /** - * Entrega el valor de: internalUserCode - * - * @return Integer - */ - public Integer getInternalUserCode() { - return internalUserCode; - } - - /** - * Fija el valor de: internalUserCode - * - * @param internalUserCode Valor a fijar en el atributo. - */ - public void setInternalUserCode(Integer internalUserCode) { - this.internalUserCode = internalUserCode; - } - - /** - * Entrega el valor de: language - * - * @return String - */ - public String getLanguage() { - return language; - } - - /** - * Fija el valor de: language - * - * @param language Valor a fijar en el atributo. - */ - public void setLanguage(String language) { - this.language = language; - } - - /** - * Entrega el valor de: profile - * - * @return String - */ - public String getProfile() { - return profile; - } - - /** - * Fija el valor de: profile - * - * @param profile Valor a fijar en el atributo. - */ - public void setProfile(String profile) { - this.profile = profile; - } - - /** - * Entrega el valor de: transactionModule - * - * @return String - */ - public String getTransactionModule() { - return transactionModule; - } - - /** - * Fija el valor de: transactionModule - * - * @param transactionModule Valor a fijar en el atributo. - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - - /** - * Entrega el valor de: transactionCode - * - * @return Integer - */ - public Integer getTransactionCode() { - return transactionCode; - } - - /** - * Fija el valor de: transactionCode - * - * @param transactionCode Valor a fijar en el atributo. - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public Integer getTransactionVersion() { - return transactionVersion; - } - - /** - * Fija el valor de: transactionVersion - * - * @param transactionVersion Valor a fijar en el atributo. - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - - /** - * Entrega el valor de: terminalCode - * - * @return String - */ - public String getTerminalCode() { - return terminalCode; - } - - /** - * Fija el valor de: terminalCode - * - * @param terminalCode Valor a fijar en el atributo. - */ - public void setTerminalCode(String terminalCode) { - this.terminalCode = terminalCode; - } - - /** - * Entrega el valor de: journalId - * - * @return String - */ - public String getJournalId() { - return journalId; - } - - /** - * Fija el valor de: journalId - * - * @param journalId Valor a fijar en el atributo. - */ - public void setJournalId(String journalId) { - this.journalId = journalId; - } - - /** - * Entrega el valor de: channelCode - * - * @return String - */ - public String getChannelCode() { - return channelCode; - } - - /** - * Fija el valor de: channelCode - * - * @param channelCode Valor a fijar en el atributo. - */ - public void setChannelCode(String channelCode) { - this.channelCode = channelCode; - } - - /** - * Entrega el valor de: company - * - * @return Integer - */ - public Integer getCompany() { - return company; - } - - /** - * Fija el valor de: company - * - * @param company Valor a fijar en el atributo. - */ - public void setCompany(Integer company) { - this.company = company; - } - - /** - * Entrega el valor de: branchCode - * - * @return Integer - */ - public Integer getBranchCode() { - return branchCode; - } - - /** - * Fija el valor de: branchCode - * - * @param branchCode Valor a fijar en el atributo. - */ - public void setBranchCode(Integer branchCode) { - this.branchCode = branchCode; - } - - /** - * Entrega el valor de: officeCode - * - * @return Integer - */ - public Integer getOfficeCode() { - return officeCode; - } - - /** - * Fija el valor de: officeCode - * - * @param officeCode Valor a fijar en el atributo. - */ - public void setOfficeCode(Integer officeCode) { - this.officeCode = officeCode; - } - - /** - * Entrega el valor de: authorizedUser - * - * @return String - */ - public String getAuthorizedUser() { - return authorizedUser; - } - - /** - * Fija el valor de: authorizedUser - * - * @param authorizedUser Valor a fijar en el atributo. - */ - public void setAuthorizedUser(String authorizedUser) { - this.authorizedUser = authorizedUser; - } - - /** - * Entrega el valor de: logaccount - * - * @return String - */ - public String getLogaccount() { - return logaccount; - } - - /** - * Fija el valor de: logaccount - * - * @param logaccount Valor a fijar en el atributo. - */ - public void setLogaccount(String logaccount) { - this.logaccount = logaccount; - } - - /** - * Entrega el valor de: logsolicitude - * - * @return String - */ - public String getLogsolicitude() { - return logsolicitude; - } - - /** - * Fija el valor de: logsolicitude - * - * @param logsolicitude Valor a fijar en el atributo. - */ - public void setLogsolicitude(String logsolicitude) { - this.logsolicitude = logsolicitude; - } - - /** - * Entrega el valor de: logperson - * - * @return Integer - */ - public Integer getLogperson() { - return logperson; - } - - /** - * Fija el valor de: logperson - * - * @param logperson Valor a fijar en el atributo. - */ - public void setLogperson(Integer logperson) { - this.logperson = logperson; - } - - /** - * Entrega el valor de: subject - * - * @return String - */ - public String getSubject() { - return subject; - } - - /** - * Fija el valor de: subject - * - * @param subject Valor a fijar en el atributo. - */ - public void setSubject(String subject) { - this.subject = subject; - } - - /** - * Entrega el valor de: originalTransactionModule - * - * @return String - */ - public String getOriginalTransactionModule() { - return originalTransactionModule; - } - - /** - * Fija el valor de: originalTransactionModule - * - * @param originalTransactionModule Valor a fijar en el atributo. - */ - public void setOriginalTransactionModule(String originalTransactionModule) { - this.originalTransactionModule = originalTransactionModule; - } - - /** - * Entrega el valor de: originalTransactionCode - * - * @return Integer - */ - public Integer getOriginalTransactionCode() { - return originalTransactionCode; - } - - /** - * Fija el valor de: originalTransactionCode - * - * @param originalTransactionCode Valor a fijar en el atributo. - */ - public void setOriginalTransactionCode(Integer originalTransactionCode) { - this.originalTransactionCode = originalTransactionCode; - } - - /** - * Entrega el valor de: originalTransactionVersion - * - * @return Integer - */ - public Integer getOriginalTransactionVersion() { - return originalTransactionVersion; - } - - /** - * Fija el valor de: originalTransactionVersion - * - * @param originalTransactionVersion Valor a fijar en el atributo. - */ - public void setOriginalTransactionVersion(Integer originalTransactionVersion) { - this.originalTransactionVersion = originalTransactionVersion; - } - - /** - * Entrega el valor de: jounalSequence - * - * @return Integer - */ - public Integer getJounalSequence() { - return jounalSequence; - } - - /** - * Fija el valor de: jounalSequence - * - * @param jounalSequence Valor a fijar en el atributo. - */ - public void setJounalSequence(Integer jounalSequence) { - this.jounalSequence = jounalSequence; - } - - /** - * Entrega el valor de: onLine - * - * @return boolean - */ - public boolean isOnLine() { - return onLine; - } - - /** - * Fija el valor de: onLine - * - * @param onLine Valor a fijar en el atributo. - */ - public void setOnLine(boolean onLine) { - this.onLine = onLine; - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - // No hacer un clone esta definido por la herencia de AbstractDataTransport - return null; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.netbeans-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.netbeans-base deleted file mode 100644 index 8a1bd40..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.netbeans-base +++ /dev/null @@ -1,958 +0,0 @@ -package com.fp.dto; - -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.fin.FinancialRequest; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.dto.save.SaveBean; - -/** - * Requet general utilizado en el procesamiento de transacciones, ejemplo consultas, mantenimiento, reportes financiero. - * - * @author Jorge Vaca . - * @version 2.1 - */ -public class Request extends AbstractData { - - private static final long serialVersionUID = 1L; - - /** Objeto que almacena la respuesta de una consulta. */ - private Response response; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String user; - - /** Idioma preferido del usuario. */ - /** Codigo interno de usuario que ejecuta una transaccion. */ - protected Integer internalUserCode; - - /** - * language - */ - protected String language; - - /** Perfil del Usuario. */ - protected String profile; - - /** Codigo del modulo al que pertenece la transaccion. */ - protected String transactionModule; - - /** Codigo de transaccion a ejecutar. */ - protected Integer transactionCode; - - /** Version de la transaccion a ejecutar. */ - protected Integer transactionVersion; - - /** Codigo de terminal asociado al ip de la maquina desde la cual se ejecuta una transaccion. */ - protected String terminalCode; - - /** Nombre de la transaccion*/ - protected String tname; - - /** Identificador de la transaccion. */ - protected String journalId; - - /** Codigo de canal desde el cual se ejecuta una transaccion. */ - protected String channelCode; - - /** Codigo de compania. */ - protected Integer company; - - /** Codigo de sucursal origen de la transaccion. */ - protected Integer branchCode; - - /** Codigo de oficina origen de la transaccion. */ - protected Integer officeCode; - - /** Codigo de area origen de la transaccion. */ - protected Integer areaCode; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String authorizedUser; - - /** Numero de cuenta a enviar al log de transacion. */ - protected String logaccount; - - /** Numero de solicitud a enviar al log de transacion. */ - protected String logsolicitude; - - /** Codigo de persona a enviar al log de transacion. */ - protected Integer logperson; - - /** Centro de control donde pertenece la persona para enviar al log de transacion. */ - protected String centrocontrol; - - /** Unidad de control donde pertenece la persona para enviar al log de transacion. */ - protected String unidad; - - /** - * Subject a presentar en la agenda del usuario. - */ - protected String subject; - - /** Codigo del modulo original al que pertenece la transaccion. */ - private String originalTransactionModule; - - /** Codigo de transaccion original a ejecutar. */ - private Integer originalTransactionCode; - - /** Version de la transaccion original a ejecutar. */ - private Integer originalTransactionVersion; - - /** Secuencia interna de la transaccion por numero de mensaje. */ - private Integer jounalSequence; - - /** Indica que la transaccion que se esta ejecutando es el linea. */ - private boolean onLine = true; - - /** Navegador utilizado **/ - private String browser; - - /** Sitema operativo utilizado **/ - private String operativesystem; - - /** Cabecera de la transaccion que se esta ejecutando. */ - public Map mbeans = new HashMap(); - - /** - * Entrega el valor de subject - * - * @return Valor de subject - */ - public String getSubject() { - return this.subject; - } - - /** - * Fija un nuevo valor en subject - * - * @param subject nuevo valor para subject - */ - public void setSubject(String subject) { - this.subject = subject; - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copy(Request pRequest) throws Exception { - this.copyFields(Request.class.getDeclaredFields(), pRequest); - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copy(GeneralRequest pGeneralRequest) throws Exception { - this.copyFields(Request.class.getDeclaredFields(), pGeneralRequest); - // copia los datos del request del que estan el map al request general utilizado en el financiero. - Set s = super.keySet(); - for (String key : s) { - pGeneralRequest.put(key, super.get(key)); - } - } - - /** - * Metodo que fina el valor en request actual los datos del request que llegan como parametro. - * - * @param pFields Arreglo de campos que formn parte del request. - * @param pRequest Datos del request original a copiar. - * @throws Exception - */ - private void copyFields(Field[] pFields, GeneralRequest pGeneralRequest) throws Exception { - for (Field f : pFields) { - try { - Object value = f.get(this); - BeanManager.setBeanAttributeValue(pGeneralRequest, f.getName(), value); - } catch (Exception e) { - continue; - } - } - } - - /** - * Metodo que fina el valor en request actual los datos del request que llegan como parametro. - * - * @param pFields Arreglo de campos que formn parte del request. - * @param pRequest Datos del request original a copiar. - * @throws Exception - */ - private void copyFields(Field[] pFields, Request pRequest) throws Exception { - for (Field f : pFields) { - try { - f.set(pRequest, f.get(this)); - } catch (Exception e) { - continue; - } - } - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copyMapValues(Request pRequest) throws Exception { - Set s = this.keySet(); - for (String key : s) { - pRequest.put(key, this.get(key)); - } - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copyMapValuesWithOutSaveBean(Request pRequest) throws Exception { - Set s = this.keySet(); - for (String key : s) { - if(this.get(key) == null || this.get(key) instanceof SaveBean){ - continue; - } - pRequest.put(key, this.get(key)); - } - } - - /** - * Metodo que completa datos del Request en un financial request. - * - * @param pFinancialRequest Objeto a ser completado con los datos del Request. - * @throws Exception - */ - protected void completeFinancialRequest(FinancialRequest pFinancialRequest) throws Exception { - this.copy(pFinancialRequest); - } - - /** - * Metodo que crea y entraga un FinancialRequest dado un SaveRequest. - * - * @return FinancialRequest - * @throws Exception - */ - public FinancialRequest toFinancialRequest() throws Exception { - FinancialRequest financialRequest = new FinancialRequest(); - this.copy(financialRequest); - return financialRequest; - } - - /** - * Entrega el valor de: user - * - * @return String - */ - public String getUser() { - return this.user; - } - - /** - * Fija el valor de: user - * - * @param user - */ - public void setUser(String user) { - this.user = user; - } - - /** - * Entrega el valor de: internalUserCode - * - * @return Integer - */ - public Integer getInternalUserCode() { - return this.internalUserCode; - } - - /** - * Fija el valor de internalUserCode - * - * @param internalUserCode value to set - */ - public void setInternalUserCode(Integer internalUserCode) { - this.internalUserCode = internalUserCode; - } - - /** - * Entrega el valor de: language - * - * @return String - */ - public String getLanguage() { - return this.language; - } - - /** - * Fija el valor de: language - * - * @param language - */ - public void setLanguage(String language) { - this.language = language; - } - - /** - * Entrega el valor de: profile - * - * @return String - */ - public String getProfile() { - return this.profile; - } - - /** - * Fija el valor de: profile - * - * @param profile - */ - public void setProfile(String profile) { - this.profile = profile; - } - - /** - * Entrega el valor de: transactionModule - * - * @return String - */ - public String getTransactionModule() { - return this.transactionModule; - } - - /** - * Fija el valor de: transactionModule - * - * @param transactionModule - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - - /** - * Entrega el valor de: transactionCode - * - * @return Integer - */ - public Integer getTransactionCode() { - return this.transactionCode; - } - - /** - * Fija el valor de: transactionCode - * - * @param transactionCode - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public Integer getTransactionVersion() { - return this.transactionVersion; - } - - /** - * Fija el valor de: transactionVersion - * - * @param transactionVersion - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - - /** - * Entrega el valor de: terminalCode - * - * @return String - */ - public String getTerminalCode() { - return this.terminalCode; - } - - /** - * Fija el valor de: terminalCode - * - * @param terminalCode - */ - public void setTerminalCode(String terminalCode) { - this.terminalCode = terminalCode; - } - - /** - * Entrega el valor de: journalId - * - * @return String - */ - public String getJournalId() { - return this.journalId; - } - - /** - * Fija el valor de: journalId - * - * @param journalId - */ - public void setJournalId(String journalId) { - this.journalId = journalId; - } - - /** - * Entrega el valor de: channelCode - * - * @return String - */ - public String getChannelCode() { - return this.channelCode; - } - - /** - * Fija el valor de: channelCode - * - * @param channelCode - */ - public void setChannelCode(String channelCode) { - this.channelCode = channelCode; - } - - /** - * Entrega el valor de: company - * - * @return Integer - */ - public Integer getCompany() { - return this.company; - } - - /** - * Fija el valor de company - * - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - /** - * Entrega el valor de: branchCode - * - * @return Integer - */ - public Integer getBranchCode() { - return this.branchCode; - } - - /** - * Fija el valor de: branchCode - * - * @param branchCode - */ - public void setBranchCode(Integer branchCode) { - this.branchCode = branchCode; - } - - /** - * Entrega el valor de: officeCode - * - * @return Integer - */ - public Integer getOfficeCode() { - return this.officeCode; - } - - /** - * Fija el valor de: officeCode - * - * @param officeCode - */ - public void setOfficeCode(Integer officeCode) { - this.officeCode = officeCode; - } - - /** - * Entrega el valor de: areaCode - * - * @return Integer - */ - public Integer getAreaCode() { - return this.areaCode; - } - - /** - * Fija el valor de: areaCode - * - * @param areaCode - */ - public void setAreaCode(Integer areaCode) { - this.areaCode = areaCode; - } - - /** - * Entrega el valor de: authorizedUser - * - * @return String - */ - public String getAuthorizedUser() { - return this.authorizedUser; - } - - /** - * Fija el valor de: authorizedUser - * - * @param authorizedUser - */ - public void setAuthorizedUser(String authorizedUser) { - this.authorizedUser = authorizedUser; - } - - /** - * Entrega el valor convertido a Bigdecimal de un objeto del map. - * - * @param key Key de la entrada del map. - * @return BigDecimal - */ - public BigDecimal getBigDecimal(Object key) { - if (this.get(key) instanceof Integer) { - return new BigDecimal((Integer) this.get(key)); - } - if (this.get(key) instanceof Long) { - return new BigDecimal((Long) this.get(key)); - } - if (this.get(key) == null) { - return BigDecimal.ZERO; - } - return (BigDecimal) this.get(key); - } - - /** - * Entrega el valor convertido a Bigdecimal de un objeto del map. - * - * @param key Key de la entrada del map. - * @return BigDecimal - */ - public Date getDate(Object key) throws ParseException { - String value = this.getString(key); - SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd"); - return new Date(formatt.parse(value).getTime()); - } - - /** - * Entrega el valor convertido a String de un objeto del map. - * - * @param key Key de la entrada del map. - * @return String - */ - public String getString(Object key) { - Object val = this.get(key); - if (val == null) { - throw new RuntimeException("NO SE PUDO DETERMINAR EL VALOR DE " + key); - } - return "" + val; - } - - /** - * Entrega el valor convertido a String de un objeto del map. - * - * @param key Key de la entrada del map. - * @return String - */ - public String findString(Object key) { - Object val = this.find(key); - if (val == null) { - throw new RuntimeException("NO SE PUDO DETERMINAR EL VALOR DE " + key); - } - return "" + val; - } - - /** - * Entrega el valor de un objeto, busca en el request si no lo encuentra busca en el response. - * - * @param key Key de la entrada del map. - * @return String - */ - public Object find(Object key) { - Object val = this.get(key); - if ((val == null) && (this.response != null)) { - val = this.response.get(key); - } - return val; - } - - /** - * Entrega el valor convertido a long de un objeto del map. - * - * @param key Key de la entrada del map. - * @return Long - */ - public Long getLong(Object key) { - return Long.valueOf(this.getString(key)); - } - - /** - * Entrega el valor convertido a integer de un objeto del map. - * - * @param key Key de la entrada del map. - * @return Integer - */ - public Integer getInteger(Object key) { - return Integer.valueOf(this.getString(key)); - } - - /** - * Entrega el valor de: logaccount. - * - * @return String - */ - public String getLogaccount() { - return this.logaccount; - } - - /** - * Fija el valor de: logaccount. - * - * @param logaccount - */ - public void setLogaccount(String logaccount) { - this.logaccount = logaccount; - } - - /** - * Entrega el valor de: logsolicitude. - * - * @return String - */ - public String getLogsolicitude() { - return this.logsolicitude; - } - - /** - * Fija el valor de: logsolicitude. - * - * @param logsolicitude - */ - public void setLogsolicitude(String logsolicitude) { - this.logsolicitude = logsolicitude; - } - - /** - * Entrega el valor de: logpPerson. - * - * @return Integer - */ - public Integer getLogperson() { - return this.logperson; - } - - /** - * Fija el valor de: logsolicitude. - * - * @param logsolicitude - */ - public void setLogperson(Integer logperson) { - this.logperson = logperson; - } - - /** - * Entrega el valor de: centrocontrol. - * - * @return String - */ - public String getCentrocontrol() { - return centrocontrol; - } - - /** - * Fija el valor de: centrocontrol. - * - * @param centrocontrol - */ - public void setCentrocontrol(String centrocontrol) { - this.centrocontrol = centrocontrol; - } - - /** - * Entrega el valor de: unidad. - * - * @return String - */ - public String getUnidad() { - return unidad; - } - - /** - * Fija el valor de: unidad. - * - * @param unidad - */ - public void setUnidad(String unidad) { - this.unidad = unidad; - } - - protected Map ruleParameters = new HashMap(); - - /** - * Entrega el valor de ruleParameters - * - * @return Valor de ruleParameters - */ - public Map getRuleParameters() { - return this.ruleParameters; - } - - /** - * Entrega el valor de: originalTransactionModule - * - * @return String - */ - public String getOriginalTransactionModule() { - return this.originalTransactionModule; - } - - /** - * Fija el valor de: originalTransactionModule - * - * @param originalTransactionModule - */ - public void setOriginalTransactionModule(String originalTransactionModule) { - this.originalTransactionModule = originalTransactionModule; - } - - /** - * Entrega el valor de: originalTransactionCode - * - * @return Integer - */ - public Integer getOriginalTransactionCode() { - return this.originalTransactionCode; - } - - /** - * Fija el valor de: originalTransactionCode - * - * @param originalTransactionCode - */ - public void setOriginalTransactionCode(Integer originalTransactionCode) { - this.originalTransactionCode = originalTransactionCode; - } - - /** - * Entrega el valor de: originalTransactionVersion - * - * @return Integer - */ - public Integer getOriginalTransactionVersion() { - return this.originalTransactionVersion; - } - - /** - * Fija el valor de: originalTransactionVersion - * - * @param originalTransactionVersion - */ - public void setOriginalTransactionVersion(Integer originalTransactionVersion) { - this.originalTransactionVersion = originalTransactionVersion; - } - - /** - * Entrega el valor de: jounalSequence - * - * @return Integer - */ - public Integer getJounalSequence() { - return this.jounalSequence; - } - - /** - * Fija el valor de jounalSequence - * - * @param jounalSequence value to set - */ - public void setJounalSequence(Integer jounalSequence) { - this.jounalSequence = jounalSequence; - } - - /** - * Entrega el valor de: onLine - * - * @return boolean - */ - public boolean isOnLine() { - return this.onLine; - } - - /** - * Fija el valor de: onLine - * - * @param onLine - */ - public void setOnLine(boolean onLine) { - this.onLine = onLine; - } - - /** - * Fija un nuevo valor en ruleParameters - * - * @param pRuleParameters nuevo valor para ruleParameters - */ - public void setRuleParameters(Map pRuleParameters) { - this.ruleParameters = pRuleParameters; - } - - public void addRuleParameter(String pName, Object pValue) { - this.ruleParameters.put(pName, pValue); - } - - public void cleanRuleParameters() { - this.ruleParameters = new HashMap(); - } - - public void addRuleParameter(String pNameValue) { - String[] val = pNameValue.split(","); - this.ruleParameters.put(val[0], val[1]); - } - - public String getRuleParameterString(String pKey) { - return "" + this.ruleParameters.get(pKey); - } - - public boolean getRuleParameterIsYes(String pKey) { - return "Y".compareTo(this.getRuleParameterString(pKey)) == 0; - } - - public BigDecimal getRuleParameterBigDecimal(String pKey) { - return new BigDecimal(this.getRuleParameterString(pKey)); - } - - public Integer getRuleParameterInteger(String pKey) { - return Integer.valueOf(this.getRuleParameterString(pKey)); - } - - /** - * Entrega el valor de: QueryRequest.java - * - * @return Response - */ - public Response getResponse() { - return this.response; - } - - /** - * Fija el valor de: response - * - * @param response Valor a almacenar - */ - public void setResponse(Response response) { - this.response = response; - } - - /** - * Filja map con tablas a consultar. - * - * @param mquerytables - * @throws Exception - */ - public void setQueryTables(HashMap mquerytables) throws Exception { - this.put("MQUERY", mquerytables); - } - - /** - * Entrega un map con la metadata de tablas a consultar. - * - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public HashMap getQueryTables() throws Exception { - return (HashMap) this.get("MQUERY"); - } - - /** - * Filja map con tablas a dar mantenimiento. - * - * @param msavetables - * @throws Exception - */ - public void setSaveTables(HashMap msavetables) throws Exception { - this.put("MSAVE", msavetables); - } - - /** - * Entrega un map con la metadata de tablas a dar mantenimiento. - * - * @return HashMap - * @throws Exception - */ - @SuppressWarnings("unchecked") - public HashMap getSaveTables() throws Exception { - return (HashMap) this.get("MSAVE"); - } - - /** - * Entrega la descripcion del navegador - * - * @return browser - */ - public String getBrowser() { - return browser; - } - - /** - * Fija la descripcion del navegador - * - * @param browser - */ - public void setBrowser(String browser) { - this.browser = browser; - } - - /** - * Entrega la descripcion del sistema operativo - * - * @return operativesystem - */ - public String getOperativesystem() { - return operativesystem; - } - - /** - * Fija la descripcion del sistema operativo - * - * @param operativesystem - */ - public void setOperativesystem(String operativesystem) { - this.operativesystem = operativesystem; - } - /** - * Entrega el nombre de la transaccion - * @return tname - */ - public String getTname() { - return tname; - } - /** - * Fija el nombre de la transaccion - * @param tname - */ - public void setTname(String tname) { - this.tname = tname; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.svn-base deleted file mode 100644 index 8a1bd40..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Request.java.svn-base +++ /dev/null @@ -1,958 +0,0 @@ -package com.fp.dto; - -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.fin.FinancialRequest; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.dto.save.SaveBean; - -/** - * Requet general utilizado en el procesamiento de transacciones, ejemplo consultas, mantenimiento, reportes financiero. - * - * @author Jorge Vaca . - * @version 2.1 - */ -public class Request extends AbstractData { - - private static final long serialVersionUID = 1L; - - /** Objeto que almacena la respuesta de una consulta. */ - private Response response; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String user; - - /** Idioma preferido del usuario. */ - /** Codigo interno de usuario que ejecuta una transaccion. */ - protected Integer internalUserCode; - - /** - * language - */ - protected String language; - - /** Perfil del Usuario. */ - protected String profile; - - /** Codigo del modulo al que pertenece la transaccion. */ - protected String transactionModule; - - /** Codigo de transaccion a ejecutar. */ - protected Integer transactionCode; - - /** Version de la transaccion a ejecutar. */ - protected Integer transactionVersion; - - /** Codigo de terminal asociado al ip de la maquina desde la cual se ejecuta una transaccion. */ - protected String terminalCode; - - /** Nombre de la transaccion*/ - protected String tname; - - /** Identificador de la transaccion. */ - protected String journalId; - - /** Codigo de canal desde el cual se ejecuta una transaccion. */ - protected String channelCode; - - /** Codigo de compania. */ - protected Integer company; - - /** Codigo de sucursal origen de la transaccion. */ - protected Integer branchCode; - - /** Codigo de oficina origen de la transaccion. */ - protected Integer officeCode; - - /** Codigo de area origen de la transaccion. */ - protected Integer areaCode; - - /** Codigo de usuario que ejecuta una transaccion. */ - protected String authorizedUser; - - /** Numero de cuenta a enviar al log de transacion. */ - protected String logaccount; - - /** Numero de solicitud a enviar al log de transacion. */ - protected String logsolicitude; - - /** Codigo de persona a enviar al log de transacion. */ - protected Integer logperson; - - /** Centro de control donde pertenece la persona para enviar al log de transacion. */ - protected String centrocontrol; - - /** Unidad de control donde pertenece la persona para enviar al log de transacion. */ - protected String unidad; - - /** - * Subject a presentar en la agenda del usuario. - */ - protected String subject; - - /** Codigo del modulo original al que pertenece la transaccion. */ - private String originalTransactionModule; - - /** Codigo de transaccion original a ejecutar. */ - private Integer originalTransactionCode; - - /** Version de la transaccion original a ejecutar. */ - private Integer originalTransactionVersion; - - /** Secuencia interna de la transaccion por numero de mensaje. */ - private Integer jounalSequence; - - /** Indica que la transaccion que se esta ejecutando es el linea. */ - private boolean onLine = true; - - /** Navegador utilizado **/ - private String browser; - - /** Sitema operativo utilizado **/ - private String operativesystem; - - /** Cabecera de la transaccion que se esta ejecutando. */ - public Map mbeans = new HashMap(); - - /** - * Entrega el valor de subject - * - * @return Valor de subject - */ - public String getSubject() { - return this.subject; - } - - /** - * Fija un nuevo valor en subject - * - * @param subject nuevo valor para subject - */ - public void setSubject(String subject) { - this.subject = subject; - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copy(Request pRequest) throws Exception { - this.copyFields(Request.class.getDeclaredFields(), pRequest); - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copy(GeneralRequest pGeneralRequest) throws Exception { - this.copyFields(Request.class.getDeclaredFields(), pGeneralRequest); - // copia los datos del request del que estan el map al request general utilizado en el financiero. - Set s = super.keySet(); - for (String key : s) { - pGeneralRequest.put(key, super.get(key)); - } - } - - /** - * Metodo que fina el valor en request actual los datos del request que llegan como parametro. - * - * @param pFields Arreglo de campos que formn parte del request. - * @param pRequest Datos del request original a copiar. - * @throws Exception - */ - private void copyFields(Field[] pFields, GeneralRequest pGeneralRequest) throws Exception { - for (Field f : pFields) { - try { - Object value = f.get(this); - BeanManager.setBeanAttributeValue(pGeneralRequest, f.getName(), value); - } catch (Exception e) { - continue; - } - } - } - - /** - * Metodo que fina el valor en request actual los datos del request que llegan como parametro. - * - * @param pFields Arreglo de campos que formn parte del request. - * @param pRequest Datos del request original a copiar. - * @throws Exception - */ - private void copyFields(Field[] pFields, Request pRequest) throws Exception { - for (Field f : pFields) { - try { - f.set(pRequest, f.get(this)); - } catch (Exception e) { - continue; - } - } - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copyMapValues(Request pRequest) throws Exception { - Set s = this.keySet(); - for (String key : s) { - pRequest.put(key, this.get(key)); - } - } - - /** - * Metodo que copia los valoes del requestq que llega como parametro. - * - * @param pRequest Datos del request a copiar. - * @throws Exception - */ - public void copyMapValuesWithOutSaveBean(Request pRequest) throws Exception { - Set s = this.keySet(); - for (String key : s) { - if(this.get(key) == null || this.get(key) instanceof SaveBean){ - continue; - } - pRequest.put(key, this.get(key)); - } - } - - /** - * Metodo que completa datos del Request en un financial request. - * - * @param pFinancialRequest Objeto a ser completado con los datos del Request. - * @throws Exception - */ - protected void completeFinancialRequest(FinancialRequest pFinancialRequest) throws Exception { - this.copy(pFinancialRequest); - } - - /** - * Metodo que crea y entraga un FinancialRequest dado un SaveRequest. - * - * @return FinancialRequest - * @throws Exception - */ - public FinancialRequest toFinancialRequest() throws Exception { - FinancialRequest financialRequest = new FinancialRequest(); - this.copy(financialRequest); - return financialRequest; - } - - /** - * Entrega el valor de: user - * - * @return String - */ - public String getUser() { - return this.user; - } - - /** - * Fija el valor de: user - * - * @param user - */ - public void setUser(String user) { - this.user = user; - } - - /** - * Entrega el valor de: internalUserCode - * - * @return Integer - */ - public Integer getInternalUserCode() { - return this.internalUserCode; - } - - /** - * Fija el valor de internalUserCode - * - * @param internalUserCode value to set - */ - public void setInternalUserCode(Integer internalUserCode) { - this.internalUserCode = internalUserCode; - } - - /** - * Entrega el valor de: language - * - * @return String - */ - public String getLanguage() { - return this.language; - } - - /** - * Fija el valor de: language - * - * @param language - */ - public void setLanguage(String language) { - this.language = language; - } - - /** - * Entrega el valor de: profile - * - * @return String - */ - public String getProfile() { - return this.profile; - } - - /** - * Fija el valor de: profile - * - * @param profile - */ - public void setProfile(String profile) { - this.profile = profile; - } - - /** - * Entrega el valor de: transactionModule - * - * @return String - */ - public String getTransactionModule() { - return this.transactionModule; - } - - /** - * Fija el valor de: transactionModule - * - * @param transactionModule - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - - /** - * Entrega el valor de: transactionCode - * - * @return Integer - */ - public Integer getTransactionCode() { - return this.transactionCode; - } - - /** - * Fija el valor de: transactionCode - * - * @param transactionCode - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public Integer getTransactionVersion() { - return this.transactionVersion; - } - - /** - * Fija el valor de: transactionVersion - * - * @param transactionVersion - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - - /** - * Entrega el valor de: terminalCode - * - * @return String - */ - public String getTerminalCode() { - return this.terminalCode; - } - - /** - * Fija el valor de: terminalCode - * - * @param terminalCode - */ - public void setTerminalCode(String terminalCode) { - this.terminalCode = terminalCode; - } - - /** - * Entrega el valor de: journalId - * - * @return String - */ - public String getJournalId() { - return this.journalId; - } - - /** - * Fija el valor de: journalId - * - * @param journalId - */ - public void setJournalId(String journalId) { - this.journalId = journalId; - } - - /** - * Entrega el valor de: channelCode - * - * @return String - */ - public String getChannelCode() { - return this.channelCode; - } - - /** - * Fija el valor de: channelCode - * - * @param channelCode - */ - public void setChannelCode(String channelCode) { - this.channelCode = channelCode; - } - - /** - * Entrega el valor de: company - * - * @return Integer - */ - public Integer getCompany() { - return this.company; - } - - /** - * Fija el valor de company - * - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - /** - * Entrega el valor de: branchCode - * - * @return Integer - */ - public Integer getBranchCode() { - return this.branchCode; - } - - /** - * Fija el valor de: branchCode - * - * @param branchCode - */ - public void setBranchCode(Integer branchCode) { - this.branchCode = branchCode; - } - - /** - * Entrega el valor de: officeCode - * - * @return Integer - */ - public Integer getOfficeCode() { - return this.officeCode; - } - - /** - * Fija el valor de: officeCode - * - * @param officeCode - */ - public void setOfficeCode(Integer officeCode) { - this.officeCode = officeCode; - } - - /** - * Entrega el valor de: areaCode - * - * @return Integer - */ - public Integer getAreaCode() { - return this.areaCode; - } - - /** - * Fija el valor de: areaCode - * - * @param areaCode - */ - public void setAreaCode(Integer areaCode) { - this.areaCode = areaCode; - } - - /** - * Entrega el valor de: authorizedUser - * - * @return String - */ - public String getAuthorizedUser() { - return this.authorizedUser; - } - - /** - * Fija el valor de: authorizedUser - * - * @param authorizedUser - */ - public void setAuthorizedUser(String authorizedUser) { - this.authorizedUser = authorizedUser; - } - - /** - * Entrega el valor convertido a Bigdecimal de un objeto del map. - * - * @param key Key de la entrada del map. - * @return BigDecimal - */ - public BigDecimal getBigDecimal(Object key) { - if (this.get(key) instanceof Integer) { - return new BigDecimal((Integer) this.get(key)); - } - if (this.get(key) instanceof Long) { - return new BigDecimal((Long) this.get(key)); - } - if (this.get(key) == null) { - return BigDecimal.ZERO; - } - return (BigDecimal) this.get(key); - } - - /** - * Entrega el valor convertido a Bigdecimal de un objeto del map. - * - * @param key Key de la entrada del map. - * @return BigDecimal - */ - public Date getDate(Object key) throws ParseException { - String value = this.getString(key); - SimpleDateFormat formatt = new SimpleDateFormat("yyyy-MM-dd"); - return new Date(formatt.parse(value).getTime()); - } - - /** - * Entrega el valor convertido a String de un objeto del map. - * - * @param key Key de la entrada del map. - * @return String - */ - public String getString(Object key) { - Object val = this.get(key); - if (val == null) { - throw new RuntimeException("NO SE PUDO DETERMINAR EL VALOR DE " + key); - } - return "" + val; - } - - /** - * Entrega el valor convertido a String de un objeto del map. - * - * @param key Key de la entrada del map. - * @return String - */ - public String findString(Object key) { - Object val = this.find(key); - if (val == null) { - throw new RuntimeException("NO SE PUDO DETERMINAR EL VALOR DE " + key); - } - return "" + val; - } - - /** - * Entrega el valor de un objeto, busca en el request si no lo encuentra busca en el response. - * - * @param key Key de la entrada del map. - * @return String - */ - public Object find(Object key) { - Object val = this.get(key); - if ((val == null) && (this.response != null)) { - val = this.response.get(key); - } - return val; - } - - /** - * Entrega el valor convertido a long de un objeto del map. - * - * @param key Key de la entrada del map. - * @return Long - */ - public Long getLong(Object key) { - return Long.valueOf(this.getString(key)); - } - - /** - * Entrega el valor convertido a integer de un objeto del map. - * - * @param key Key de la entrada del map. - * @return Integer - */ - public Integer getInteger(Object key) { - return Integer.valueOf(this.getString(key)); - } - - /** - * Entrega el valor de: logaccount. - * - * @return String - */ - public String getLogaccount() { - return this.logaccount; - } - - /** - * Fija el valor de: logaccount. - * - * @param logaccount - */ - public void setLogaccount(String logaccount) { - this.logaccount = logaccount; - } - - /** - * Entrega el valor de: logsolicitude. - * - * @return String - */ - public String getLogsolicitude() { - return this.logsolicitude; - } - - /** - * Fija el valor de: logsolicitude. - * - * @param logsolicitude - */ - public void setLogsolicitude(String logsolicitude) { - this.logsolicitude = logsolicitude; - } - - /** - * Entrega el valor de: logpPerson. - * - * @return Integer - */ - public Integer getLogperson() { - return this.logperson; - } - - /** - * Fija el valor de: logsolicitude. - * - * @param logsolicitude - */ - public void setLogperson(Integer logperson) { - this.logperson = logperson; - } - - /** - * Entrega el valor de: centrocontrol. - * - * @return String - */ - public String getCentrocontrol() { - return centrocontrol; - } - - /** - * Fija el valor de: centrocontrol. - * - * @param centrocontrol - */ - public void setCentrocontrol(String centrocontrol) { - this.centrocontrol = centrocontrol; - } - - /** - * Entrega el valor de: unidad. - * - * @return String - */ - public String getUnidad() { - return unidad; - } - - /** - * Fija el valor de: unidad. - * - * @param unidad - */ - public void setUnidad(String unidad) { - this.unidad = unidad; - } - - protected Map ruleParameters = new HashMap(); - - /** - * Entrega el valor de ruleParameters - * - * @return Valor de ruleParameters - */ - public Map getRuleParameters() { - return this.ruleParameters; - } - - /** - * Entrega el valor de: originalTransactionModule - * - * @return String - */ - public String getOriginalTransactionModule() { - return this.originalTransactionModule; - } - - /** - * Fija el valor de: originalTransactionModule - * - * @param originalTransactionModule - */ - public void setOriginalTransactionModule(String originalTransactionModule) { - this.originalTransactionModule = originalTransactionModule; - } - - /** - * Entrega el valor de: originalTransactionCode - * - * @return Integer - */ - public Integer getOriginalTransactionCode() { - return this.originalTransactionCode; - } - - /** - * Fija el valor de: originalTransactionCode - * - * @param originalTransactionCode - */ - public void setOriginalTransactionCode(Integer originalTransactionCode) { - this.originalTransactionCode = originalTransactionCode; - } - - /** - * Entrega el valor de: originalTransactionVersion - * - * @return Integer - */ - public Integer getOriginalTransactionVersion() { - return this.originalTransactionVersion; - } - - /** - * Fija el valor de: originalTransactionVersion - * - * @param originalTransactionVersion - */ - public void setOriginalTransactionVersion(Integer originalTransactionVersion) { - this.originalTransactionVersion = originalTransactionVersion; - } - - /** - * Entrega el valor de: jounalSequence - * - * @return Integer - */ - public Integer getJounalSequence() { - return this.jounalSequence; - } - - /** - * Fija el valor de jounalSequence - * - * @param jounalSequence value to set - */ - public void setJounalSequence(Integer jounalSequence) { - this.jounalSequence = jounalSequence; - } - - /** - * Entrega el valor de: onLine - * - * @return boolean - */ - public boolean isOnLine() { - return this.onLine; - } - - /** - * Fija el valor de: onLine - * - * @param onLine - */ - public void setOnLine(boolean onLine) { - this.onLine = onLine; - } - - /** - * Fija un nuevo valor en ruleParameters - * - * @param pRuleParameters nuevo valor para ruleParameters - */ - public void setRuleParameters(Map pRuleParameters) { - this.ruleParameters = pRuleParameters; - } - - public void addRuleParameter(String pName, Object pValue) { - this.ruleParameters.put(pName, pValue); - } - - public void cleanRuleParameters() { - this.ruleParameters = new HashMap(); - } - - public void addRuleParameter(String pNameValue) { - String[] val = pNameValue.split(","); - this.ruleParameters.put(val[0], val[1]); - } - - public String getRuleParameterString(String pKey) { - return "" + this.ruleParameters.get(pKey); - } - - public boolean getRuleParameterIsYes(String pKey) { - return "Y".compareTo(this.getRuleParameterString(pKey)) == 0; - } - - public BigDecimal getRuleParameterBigDecimal(String pKey) { - return new BigDecimal(this.getRuleParameterString(pKey)); - } - - public Integer getRuleParameterInteger(String pKey) { - return Integer.valueOf(this.getRuleParameterString(pKey)); - } - - /** - * Entrega el valor de: QueryRequest.java - * - * @return Response - */ - public Response getResponse() { - return this.response; - } - - /** - * Fija el valor de: response - * - * @param response Valor a almacenar - */ - public void setResponse(Response response) { - this.response = response; - } - - /** - * Filja map con tablas a consultar. - * - * @param mquerytables - * @throws Exception - */ - public void setQueryTables(HashMap mquerytables) throws Exception { - this.put("MQUERY", mquerytables); - } - - /** - * Entrega un map con la metadata de tablas a consultar. - * - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public HashMap getQueryTables() throws Exception { - return (HashMap) this.get("MQUERY"); - } - - /** - * Filja map con tablas a dar mantenimiento. - * - * @param msavetables - * @throws Exception - */ - public void setSaveTables(HashMap msavetables) throws Exception { - this.put("MSAVE", msavetables); - } - - /** - * Entrega un map con la metadata de tablas a dar mantenimiento. - * - * @return HashMap - * @throws Exception - */ - @SuppressWarnings("unchecked") - public HashMap getSaveTables() throws Exception { - return (HashMap) this.get("MSAVE"); - } - - /** - * Entrega la descripcion del navegador - * - * @return browser - */ - public String getBrowser() { - return browser; - } - - /** - * Fija la descripcion del navegador - * - * @param browser - */ - public void setBrowser(String browser) { - this.browser = browser; - } - - /** - * Entrega la descripcion del sistema operativo - * - * @return operativesystem - */ - public String getOperativesystem() { - return operativesystem; - } - - /** - * Fija la descripcion del sistema operativo - * - * @param operativesystem - */ - public void setOperativesystem(String operativesystem) { - this.operativesystem = operativesystem; - } - /** - * Entrega el nombre de la transaccion - * @return tname - */ - public String getTname() { - return tname; - } - /** - * Fija el nombre de la transaccion - * @param tname - */ - public void setTname(String tname) { - this.tname = tname; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Response.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Response.java.svn-base deleted file mode 100644 index 04acab7..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/.svn/text-base/Response.java.svn-base +++ /dev/null @@ -1,224 +0,0 @@ -package com.fp.dto; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import org.apache.commons.beanutils.BeanMap; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.hb.HibernateId; - -public class Response extends HashMap implements Serializable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** Constante que define el codigo de respuesta ok. */ - public static final String RESPONSE_OK = "0"; - - /** Codigo de respuesta. */ - private String responseCode; - - /** Mensaje de usuario asociado al codigo de respuesta. */ - private String responseUserMessage; - - /** Mensaje tecnico asociado al codigo de respuesta. */ - private String responseTechnicalMessage; - - /** Stack trace, del error ocasionada en al ejecucion de una operacion. */ - private String responseStack; - - /** - * Variable para identificar si un mensaje es o no de aplicacion - */ - private boolean isAplicationMessage; - - /** - * Metodo que rerna si el mensaje es de la aplicacion - * - * @return - */ - public boolean isIsAplicationMessage() { - return isAplicationMessage; - } - - /** - * Metodo que fija si el mensaje es de la aplicacion o no - * - * @param isAplicationMessage - */ - public void setIsAplicationMessage(boolean isAplicationMessage) { - this.isAplicationMessage = isAplicationMessage; - this.put("isAplicationMessage", isAplicationMessage); - } - - /** - * Entrega el valor de: responseTechnicalMessage - * - * @return String - */ - public String getResponseTechnicalMessage() { - return responseTechnicalMessage; - } - - /** - * Fija el valor de: responseTechnicalMessage - * - * @param responseTechnicalMessage - */ - public void setResponseTechnicalMessage(String responseTechnicalMessage) { - this.responseTechnicalMessage = responseTechnicalMessage; - this.put("responseTechnicalMessage", responseTechnicalMessage); - } - - /** - * Entrega el valor de: responseStack - * - * @return String - */ - public String getResponseStack() { - return responseStack; - } - - /** - * Fija el valor de: responseStack - * - * @param responseStack - */ - public void setResponseStack(String responseStack) { - this.responseStack = responseStack; - this.put("responseStack", responseStack); - } - - /** - * Entrega el valor de: responseCode - * - * @return String - */ - public String getResponseCode() { - return responseCode; - } - - /** - * Entrega el valor de: responseUserMessage - * - * @return String - */ - public String getResponseUserMessage() { - return responseUserMessage; - } - - public Response(String responseCode, String responseUserMessage) { - this.responseCode = responseCode; - this.responseUserMessage = responseUserMessage; - this.put("messageCode", responseCode); - this.put("message", responseUserMessage); - this.put("isAplicationMessage", true); - } - - /** - * Fija el valor de: responseCode - * - * @param responseCode - */ - public void setResponseCode(String responseCode) { - this.responseCode = responseCode; - this.put("messageCode", responseCode); - } - - /** - * Fija el valor de: responseUserMessage - * - * @param responseUserMessage - */ - public void setResponseUserMessage(String responseUserMessage) { - this.responseUserMessage = responseUserMessage; - this.put("message", responseUserMessage); - } - - public void changeAbstractBeanToMap() throws Exception { - Set s = super.keySet(); - for (String key : s) { - Object obj; - obj = super.get(key); - - if (obj instanceof AbstractDataTransport) { - Map mresp = this.beanToMap((AbstractDataTransport) obj); - super.put(key, mresp); - } - if (obj instanceof List) { - this.changeBeanListToMap(key, obj); - continue; - } - } - } - - @SuppressWarnings("unchecked") - private void changeBeanListToMap(String key, Object data) throws Exception { - List ldata; - try { - ldata = (List) data; - } catch (Exception e) { - return; - } - List> lresp = new ArrayList>(); - for (Object obj : ldata) { - if (obj instanceof AbstractDataTransport) { - Map mresp = this.beanToMap((AbstractDataTransport) obj); - lresp.add(mresp); - } - } - if (!lresp.isEmpty()) { - super.put(key, lresp); - } - - } - - @SuppressWarnings("unchecked") - private Map beanToMap(AbstractDataTransport bean) throws Exception { - Map mresp = new HashMap(); - Field[] fs = bean.getClass().getDeclaredFields(); - for (Field field : fs) { - try { - String name = field.getName(); - if (name.compareTo("serialVersionUID") == 0 || name.compareTo("__id") == 0) { - continue; - } - Object val = null; - try { - val = BeanManager.getBeanAttributeValue(bean, name); - } catch (Exception e1) { - continue; - } - if (val instanceof HibernateId) { - BeanMap bm = new BeanMap(val); - Set> ent = bm.entrySet(); - for (java.util.Map.Entry e : ent) { - String key = e.getKey(); - if (key.compareTo("class") == 0 || key.compareTo("transportBeanClass") == 0 || key.compareTo("empty") == 0 - || key.compareTo("modifiedData") == 0) { - continue; - } - mresp.put(name + "_" + key, e.getValue()); - } - continue; - } - mresp.put(name, val); - } catch (Exception e) { - continue; - } - - } - // completa datos adicionales. - Set s = bean.modifiedData.keySet(); - for (String key : s) { - mresp.put(key, bean.modifiedData.get(key)); - } - return mresp; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/entries deleted file mode 100644 index 5031c01..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/batch -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BatchModuleRequest.java -file - - - - -2022-07-28T03:40:33.036761Z -5a48a435309260be4c6efc2f45c0e4b3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5523 - -BatchAccountRequest.java -file - - - - -2022-07-28T03:40:33.036761Z -f78ce8271bd43e93f2db79611b1c02bb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6727 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchAccountRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchAccountRequest.java.svn-base deleted file mode 100644 index b650e0b..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchAccountRequest.java.svn-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.dto.batch; - -import java.io.Serializable; -import java.sql.Date; -import java.util.HashMap; - -public class BatchAccountRequest extends HashMap implements Cloneable, Serializable { - - private static final long serialVersionUID = -9161287129394163022L; - - /** Nmero de cuenta a la cual se va a ejecutar el proceso de fin de dia. */ - private String account; - - /** Cdigo de compania a la cual se va a proceder a ejecutar el fin de da. */ - private Integer company; - - /** Fecha contable en la cual se ejecuta el proceso de fin de dia, esta fecha pasa a la tabla de journal. */ - private Date accountingDate; - - /** Fecha de trabajo de la aplicacion. */ - private Date workingingDate; - - /** Fecha contable anterior a la fecha contable. */ - private Date previousDccountingDate; - - /** Proxima fecha contable */ - private Date nextAccountingDate; - - /** Modulo asociado a la cuenta a la cual se va a proceder a realizar el cierre de fin de da. */ - private String accountModule; - - /** Numero de hilo con el cual se ejecuta el proceso batch. */ - private Integer threadnumber; - - /** Codigo de modulo al que pertenece la transaccion con la cual se ejecuta el proceso de fin de dia. */ - private String transactionModule; - - /** Codigo de transaccion que origina la ejecucion del batch. */ - private Integer transactionCode; - - /** Version de transaccion que origina la ejecucion del batch. */ - private Integer transactionVersion; - - /** Codigo del modulo. */ - private String modulecode; - - /** - * Devuelve un clon del objeto. - * - * @return BatchAccountRequest - * @throws CloneNotSupportedException - */ - public BatchAccountRequest cloneMe() throws CloneNotSupportedException { - return (BatchAccountRequest) this.clone(); - } - - /** - * Entrega el valor de: account - * - * @return String - */ - public String getAccount() { - return this.account; - } - - /** - * Fija el valor de account - * - * @param account value to set - */ - public void setAccount(String account) { - this.account = account; - } - - /** - * Entrega el valor de: company - * - * @return Integer - */ - public Integer getCompany() { - return this.company; - } - - /** - * Fija el valor de company - * - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - /** - * Entrega el valor de: accountingDate - * - * @return Date - */ - public Date getAccountingDate() { - return this.accountingDate; - } - - /** - * Fija el valor de accountingDate - * - * @param accountingDate value to set - */ - public void setAccountingDate(Date accountingDate) { - this.accountingDate = accountingDate; - } - - /** - * Entrega el valor de: workingingDate - * - * @return Date - */ - public Date getWorkingingDate() { - return this.workingingDate; - } - - /** - * Fija el valor de workingingDate - * - * @param workingingDate value to set - */ - public void setWorkingingDate(Date workingingDate) { - this.workingingDate = workingingDate; - } - - /** - * Entrega el valor de: previousDccountingDate - * - * @return Date - */ - public Date getPreviousDccountingDate() { - return this.previousDccountingDate; - } - - /** - * Fija el valor de previousDccountingDate - * - * @param previousDccountingDate value to set - */ - public void setPreviousDccountingDate(Date previousDccountingDate) { - this.previousDccountingDate = previousDccountingDate; - } - - /** - * Entrega el valor de: nextAccountingDate - * - * @return Date - */ - public Date getNextAccountingDate() { - return this.nextAccountingDate; - } - - /** - * Fija el valor de nextAccountingDate - * - * @param nextAccountingDate value to set - */ - public void setNextAccountingDate(Date nextAccountingDate) { - this.nextAccountingDate = nextAccountingDate; - } - - /** - * Entrega el valor de: accountModule - * - * @return String - */ - public String getAccountModule() { - return this.accountModule; - } - - /** - * Fija el valor de accountModule - * - * @param accountModule value to set - */ - public void setAccountModule(String accountModule) { - this.accountModule = accountModule; - } - - /** - * Entrega el valor de: threadnumber - * - * @return Integer - */ - public Integer getThreadnumber() { - return this.threadnumber; - } - - /** - * Fija el valor de: threadnumber - * - * @param threadnumber - */ - public void setThreadnumber(Integer threadnumber) { - this.threadnumber = threadnumber; - } - - /** - * Entrega el valor de: transactionModule - * - * @return String - */ - public String getTransactionModule() { - return this.transactionModule; - } - - /** - * Fija el valor de: transactionModule - * - * @param transactionModule - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - - /** - * Entrega el valor de: transactionCode - * - * @return Integer - */ - public Integer getTransactionCode() { - return this.transactionCode; - } - - /** - * Fija el valor de: transactionCode - * - * @param transactionCode - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public Integer getTransactionVersion() { - return this.transactionVersion; - } - - /** - * Fija el valor de: transactionVersion - * - * @param transactionVersion - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public String getModuleCode() { - return this.modulecode; - } - - /** - * Fija el valor de: transactionVersion - * - * @param transactionVersion - */ - public void setModuleCode(String modulecode) { - this.modulecode = modulecode; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchModuleRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchModuleRequest.java.svn-base deleted file mode 100644 index 64624f4..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/batch/.svn/text-base/BatchModuleRequest.java.svn-base +++ /dev/null @@ -1,225 +0,0 @@ -package com.fp.dto.batch; - -import java.io.Serializable; -import java.sql.Date; -import java.util.HashMap; - -/** - * Clase que maneja las fecha contables con la cuales se ejecuta el proceso del fin de dia, y la transaccion con la que - * ejecuta el fin de dia. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class BatchModuleRequest extends HashMap implements Serializable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** Fecha contable de la aplicacion. */ - private Date accountingDate; - - /** Fecha de trabajo de la aplicacion. */ - private Date workingingDate; - - /** Fecha contable anterior a la fecha contable. */ - private Date previousAccountingDate; - - /** Proxima fecha contable */ - private Date nextAccountingDate; - - /** Modulo asociado a la cuenta a la cual se va a proceder a realizar el cierre de fin de da. */ - private String moduleCode; - - /** Codigo de modulo al que pertenece la transaccion con la cual se ejecuta el proceso de fin de dia. */ - private String transactionModule; - - /** Codigo de transaccion que origina la ejecucion del batch. */ - private Integer transactionCode; - - /** Version de transaccion que origina la ejecucion del batch. */ - private Integer transactionVersion; - - /** Codigo de compania asociado a cuentas. */ - private Integer company; - - /** Journalid de la transaccion. */ - private String journalid; - - /** - * Entrega el valor de: accountingDate - * - * @return Date - */ - public Date getAccountingDate() { - return this.accountingDate; - } - - /** - * Fija el valor de accountingDate - * - * @param accountingDate value to set - */ - public void setAccountingDate(Date accountingDate) { - this.accountingDate = accountingDate; - } - - /** - * Entrega el valor de: workingingDate - * - * @return Date - */ - public Date getWorkingingDate() { - return this.workingingDate; - } - - /** - * Fija el valor de workingingDate - * - * @param workingingDate value to set - */ - public void setWorkingingDate(Date workingingDate) { - this.workingingDate = workingingDate; - } - - /** - * Entrega el valor de: previousAccountingDate - * - * @return Date - */ - public Date getPreviousAccountingDate() { - return this.previousAccountingDate; - } - - /** - * Fija el valor de previousAccountingDate - * - * @param previousAccountingDate value to set - */ - public void setPreviousAccountingDate(Date previousAccountingDate) { - this.previousAccountingDate = previousAccountingDate; - } - - /** - * Entrega el valor de: nextAccountingDate - * - * @return Date - */ - public Date getNextAccountingDate() { - return this.nextAccountingDate; - } - - /** - * Fija el valor de nextAccountingDate - * - * @param nextAccountingDate value to set - */ - public void setNextAccountingDate(Date nextAccountingDate) { - this.nextAccountingDate = nextAccountingDate; - } - - /** - * Entrega el valor de: moduleCode - * - * @return String - */ - public String getModuleCode() { - return this.moduleCode; - } - - /** - * Fija el valor de moduleCode - * - * @param moduleCode value to set - */ - public void setModuleCode(String moduleCode) { - this.moduleCode = moduleCode; - } - - /** - * Entrega el valor de: transactionModule - * - * @return String - */ - public String getTransactionModule() { - return this.transactionModule; - } - - /** - * Fija el valor de transactionModule - * - * @param transactionModule value to set - */ - public void setTransactionModule(String transactionModule) { - this.transactionModule = transactionModule; - } - - /** - * Entrega el valor de: transactionCode - * - * @return Integer - */ - public Integer getTransactionCode() { - return this.transactionCode; - } - - /** - * Fija el valor de transactionCode - * - * @param transactionCode value to set - */ - public void setTransactionCode(Integer transactionCode) { - this.transactionCode = transactionCode; - } - - /** - * Entrega el valor de: transactionVersion - * - * @return Integer - */ - public Integer getTransactionVersion() { - return this.transactionVersion; - } - - /** - * Fija el valor de transactionVersion - * - * @param transactionVersion value to set - */ - public void setTransactionVersion(Integer transactionVersion) { - this.transactionVersion = transactionVersion; - } - - /** - * Entrega el valor de: company - * - * @return Integer - */ - public Integer getCompany() { - return this.company; - } - - /** - * Fija el valor de: company - * - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - /** - * @return the journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * @param journalid the journalid to set - */ - public void setJournalid(String journalid) { - this.journalid = journalid; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/data/.svn/entries deleted file mode 100644 index b84a8e6..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/data -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SaveData.java -file - - - - -2022-07-28T03:40:33.329762Z -58de37027adc37ae52b6b7e46b6f00f0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5361 - -TransactionDTO.java -file - - - - -2022-07-28T03:40:33.330762Z -732cdf697f7a0342da1f2df306d09bc7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2198 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/SaveData.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/SaveData.java.svn-base deleted file mode 100644 index 236f01b..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/SaveData.java.svn-base +++ /dev/null @@ -1,181 +0,0 @@ -package com.fp.dto.data; - -import java.util.HashMap; -import java.util.Map; - -import com.fp.dto.save.SaveRequest; - -/** - * Thread local que almacena los datos del SaveRequest de entrada. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SaveData { - /** Almacena una instancia de SaaveRequest con los datos de entrada. */ - private static final ThreadLocal> threadsave = new ThreadLocal>(); - - /** - * Metodo que entrega datos del SaveRequest. - * - * @return SaveRequest - */ - public static SaveRequest getSaveRequest() { - Map m = threadsave.get(); - if (m == null) { - return null; - } - return (SaveRequest) m.get("SAVEREQUEST"); - } - - /** - * Metoo que almacena en el thread local datos de SaveRequest. - * - * @param pSaveRequest - */ - public static void setSaveRequest(SaveRequest pSaveRequest) { - Map m = SaveData.getMap(); - m.put("SAVEREQUEST", pSaveRequest); - threadsave.set(m); - } - - /** - * Metodo que entrega datos del SaveRequest. - * - * @return SaveRequest - */ - public static String getOriginalString() { - Map m = threadsave.get(); - return (String) m.get("DATA"); - } - - /** - * Metoo que almacena en el thread local datos de SaveRequest. - * - * @param pSaveRequest - */ - public static void setOriginalString(String pData) { - Map m = SaveData.getMap(); - m.put("DATA", pData); - threadsave.set(m); - } - - /** - * Entrega el map asociado al thread local. - * - * @return Map - * @throws Exception - */ - public static Map getMap() { - Map m = threadsave.get(); - if (m == null) { - m = new HashMap(); - threadsave.set(m); - } - return m; - } - - /** - * Entrega el valor del codigo de persona asociado a una transaccion. - * - * @return String - * @throws Exception - */ - public static String getPersoncode() throws Exception { - String data = getValue("personcode"); - if (data == null) { - data = getValue("PERSONCODE"); - } - if ((data != null) && (data.length() > 10)) { - data = null; - } - return data; - } - - /** - * Entrega el valor del numero de cuenta asociado a una transaccion. - * - * @return String - * @throws Exception - */ - public static String getAccount() throws Exception { - String data = getValue("ACCOUNT"); - if (data == null) { - data = getValue("account"); - } - if (data == null) { - data = getValue("ACCOUNTNUMBER"); - } - if (data == null) { - data = getValue("accountnumber"); - } - if ((data != null) && (data.length() > 20)) { - data = null; - } - return data; - } - - /** - * Entrega el valor del numero de solicitud asociado a una transaccion. - * - * @return String - * @throws Exception - */ - public static String getSolicitudenumber() throws Exception { - String data = getValue("solicitudnumber"); - if (data == null) { - data = getValue("SOLICITUDNUMBER"); - } - if ((data != null) && (data.length() > 20)) { - data = null; - } - return data; - } - - /** - * Entrga el valor de un key, como personcode, account, solicitudnumber. - * - * @param parameter Key a buscar en la cadena json de entrada. - * @return String - * @throws Exception - */ - private static String getValue(String parameter) throws Exception { - // Si ya se cargo el valo se entrag, sio no existe en el map se parsea el mensaje. - Object aux = SaveData.getMap().get(parameter.toUpperCase()); - String data = null; - if ((aux == null) || (aux.toString().compareTo("") == 0)) { - String json = SaveData.getOriginalString(); - int i = json.indexOf(parameter); - if (i > 0) { - int j = json.indexOf(",", i); - data = json.substring(i, j); - String value = null; - int lon = data.indexOf(":"); - if (lon > 0) { - value = data.substring(data.indexOf(":") + 1, data.length()); - value = value.replace("\"", ""); - } - if (data.indexOf(":") > 0) { - data = data.substring(0, data.indexOf(":") - 1); - } else { - data = null; // encera data. - } - if ((data != null) && (data.compareTo(parameter) == 0)) { - SaveData.getMap().put(parameter.toUpperCase(), value); - data = value; - } - } - } else { - data = aux.toString(); - } - return data; - } - - /** - * Encera el thread local. - */ - public static void unset() { - threadsave.set(null); - threadsave.remove(); - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/TransactionDTO.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/TransactionDTO.java.svn-base deleted file mode 100644 index 71cfe88..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/data/.svn/text-base/TransactionDTO.java.svn-base +++ /dev/null @@ -1,102 +0,0 @@ -package com.fp.dto.data; - -import java.io.Serializable; - -public class TransactionDTO implements Serializable, Comparable { - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - private String module; - - private Integer transaction; - - private Integer version; - - /** - * Entrega el valor de module - * - * @return Valor de module - */ - public String getModule() { - return this.module; - } - - /** - * Fija un nuevo valor en module - * - * @param module nuevo valor para module - */ - public void setModule(String module) { - this.module = module; - } - - /** - * Entrega el valor de transaction - * - * @return Valor de transaction - */ - public Integer getTransaction() { - return this.transaction; - } - - /** - * Fija un nuevo valor en transaction - * - * @param transaction nuevo valor para transaction - */ - public void setTransaction(Integer transaction) { - this.transaction = transaction; - } - - /** - * Entrega el valor de version - * - * @return Valor de version - */ - public Integer getVersion() { - return this.version; - } - - /** - * Fija un nuevo valor en version - * - * @param version nuevo valor para version - */ - public void setVersion(Integer version) { - this.version = version; - } - - @Override - public int compareTo(TransactionDTO o) { - int mod = this.module.compareTo(o.module); - if (mod != 0) { - return mod; - } - int trn = this.transaction.compareTo(o.transaction); - if (trn != 0) { - return trn; - } - int ver = this.version.compareTo(o.version); - if (ver != 0) { - return ver; - } - return 0; - } - - public TransactionDTO(String module, Integer transaction, Integer version) { - this.module = module; - this.transaction = transaction; - this.version = version; - } - - public TransactionDTO() { - } - - @Override - public String toString() { - return this.module + "," + this.transaction + "," + this.version; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/entries deleted file mode 100644 index 106a964..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/fin -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FinancialItem.java -file - - - - -2022-07-28T03:40:33.355762Z -108b90df1afe7361ab42ce699e3d518d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -15262 - -FinancialExchange.java -file - - - - -2022-07-28T03:40:33.355762Z -bdd47fe563f6b745548b9b241e45c2ed -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7534 - -Concept.java -file - - - - -2022-07-28T03:40:33.355762Z -358f7fdf6ee0e7a11a1e70e7bc1eb95f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -787 - -FinancialRequest.java -file - - - - -2022-07-28T03:40:33.355762Z -ca98cc2a505ce24e2ab9cd864850ab33 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18787 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/Concept.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/Concept.java.svn-base deleted file mode 100644 index 1fe61a1..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/Concept.java.svn-base +++ /dev/null @@ -1,47 +0,0 @@ -package com.fp.dto.fin; - -import java.io.Serializable; - -public class Concept implements Serializable{ - - /** - * - */ - private static final long serialVersionUID = 1L; - - /**Codigo de concepto.*/ - private Integer code; - /**Descripcion del concepto.*/ - private String description; - /** - * Entrega el valor de: code - * @return Integer - */ - public Integer getCode() { - return code; - } - /** - * Fija el valor de: code - * @param code - */ - public void setCode(Integer code) { - this.code = code; - } - /** - * Entrega el valor de: description - * @return String - */ - public String getDescription() { - return description; - } - /** - * Fija el valor de: description - * @param description - */ - public void setDescription(String description) { - this.description = description; - } - - - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialExchange.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialExchange.java.svn-base deleted file mode 100644 index ee835ab..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialExchange.java.svn-base +++ /dev/null @@ -1,292 +0,0 @@ -package com.fp.dto.fin; - -import java.math.BigDecimal; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.query.AdditionalQuery; - -/** - * Clase que se encarga de almacenar informacion necesaria para generar transacciones de compra venta de divisas. - * Adicionalmente sirve para ejecutar transacciones para la cuenta origen o destino por cada instancia de la clase - * ejemplo credito a cuentas por desembolso de prestamo, debito a cuentas para apertura de un plazo fijo.
      - * Para ejecuar el financiero se utiliza el evento y el lado a generar el financiero que puede ser origene, destino, - * ambos. - * @author Jorge Vaca - * @version 2.1 - * - */ -public class FinancialExchange extends AbstractDataTransport{ - - private static final long serialVersionUID = 1L; - /**Codigo de rubro, asociado al rubro de la transaccion. se utiliza en caja para hacer desglose - * de monedas ejempl deposito cuenta vista rubor efectivo.*/ - private Integer itemcode; - /**Codigo de la moneda origen, si es distinata a la moneda oficial se realiza la compra de divisas.*/ - private String origincurrency; - /**Monto en la moneda origen.*/ - private BigDecimal originamount; - /**Numero de cueta origen utilizada para ejecutar transacciones financieras.*/ - private String originaccount; - /**Codigo de compania a la que pertenece la cuenta origen*/ - private Integer origincompany; - /**Codigo de la moneda origen, si es distinata a la moneda oficial se realiza la compra de divisas.*/ - private String destinycurrency; - /**Monto en la moneda origen.*/ - private BigDecimal destinyamount; - /**Numero de cueta destino utilizada para ejecutar transacciones financieras.*/ - private String destinyaccount; - /**Codigo de compania a la que pertenece la cuenta destino*/ - private Integer destinycompany; - /**Codigo contable utilizado para ejecutar transacciones financieras.*/ - private String accountantcode; - /**Cotizacion de compra a aplicar en la transaccion de compra de divisas.*/ - private BigDecimal purchaserate; - /**Cotizacion de venta a aplicar en la transaccion de venta de divisas.*/ - private BigDecimal salerate; - /**Codigo de evento con el cual se ejecuta la transaccion financiera.*/ - private String event; - /**Codigo de subsistema asociado al evento con el cual se ejecuta la transaccion financiera.*/ - private String eventmodule; - /**"true" se calcula el monto origen, en este caso se conoce el monto destino, - * "false" se calcula el monto destino en este caso se conoce el monto origen..*/ - private boolean calculateOrigin; - /**"O" Indica que se graba el financiero con el origen de la transaccion, - * "D" Indica que se graba el financiero con el destino de la transaccion.*/ - private String financial; - - - @Override - public Object cloneMe() throws CloneNotSupportedException { - FinancialExchange p = (FinancialExchange) this.clone(); - return p; - } - - /** - * Entrega el valor de: itemcode - * @return Integer - */ - public Integer getItemcode() { - return itemcode; - } - /** - * Fija el valor de: itemcode - * @param itemcode - */ - public void setItemcode(Integer itemcode) { - this.itemcode = itemcode; - } - /** - * Entrega el valor de: origincurrency - * @return String - */ - public String getOrigincurrency() { - return origincurrency; - } - /** - * Fija el valor de: origincurrency - * @param origincurrency - */ - public void setOrigincurrency(String origincurrency) { - this.origincurrency = origincurrency; - } - /** - * Entrega el valor de: originamount - * @return BigDecimal - */ - public BigDecimal getOriginamount() { - return originamount; - } - /** - * Fija el valor de: originamount - * @param originamount - */ - public void setOriginamount(BigDecimal originamount) { - this.originamount = originamount; - } - /** - * Entrega el valor de: originaccount - * @return String - */ - public String getOriginaccount() { - return originaccount; - } - /** - * Fija el valor de: originaccount - * @param originaccount - */ - public void setOriginaccount(String originaccount) { - this.originaccount = originaccount; - } - /** - * Entrega el valor de: origincompany - * @return Integer - */ - public Integer getOrigincompany() { - return origincompany; - } - /** - * Fija el valor de: origincompany - * @param origincompany - */ - public void setOrigincompany(Integer origincompany) { - this.origincompany = origincompany; - } - /** - * Entrega el valor de: destinycurrency - * @return String - */ - public String getDestinycurrency() { - return destinycurrency; - } - /** - * Fija el valor de: destinycurrency - * @param destinycurrency - */ - public void setDestinycurrency(String destinycurrency) { - this.destinycurrency = destinycurrency; - } - /** - * Entrega el valor de: destinyamount - * @return BigDecimal - */ - public BigDecimal getDestinyamount() { - return destinyamount; - } - /** - * Fija el valor de: destinyamount - * @param destinyamount - */ - public void setDestinyamount(BigDecimal destinyamount) { - this.destinyamount = destinyamount; - } - /** - * Entrega el valor de: destinyaccount - * @return String - */ - public String getDestinyaccount() { - return destinyaccount; - } - /** - * Fija el valor de: destinyaccount - * @param destinyaccount - */ - public void setDestinyaccount(String destinyaccount) { - this.destinyaccount = destinyaccount; - } - /** - * Entrega el valor de: destinycompany - * @return Integer - */ - public Integer getDestinycompany() { - return destinycompany; - } - /** - * Fija el valor de: destinycompany - * @param destinycompany - */ - public void setDestinycompany(Integer destinycompany) { - this.destinycompany = destinycompany; - } - /** - * Entrega el valor de: accountantcode - * @return String - */ - public String getAccountantcode() { - return accountantcode; - } - /** - * Fija el valor de: accountantcode - * @param accountantcode - */ - public void setAccountantcode(String accountantcode) { - this.accountantcode = accountantcode; - } - /** - * Entrega el valor de: purchaserate - * @return BigDecimal - */ - public BigDecimal getPurchaserate() { - return purchaserate; - } - /** - * Fija el valor de: purchaserate - * @param purchaserate - */ - public void setPurchaserate(BigDecimal purchaserate) { - this.purchaserate = purchaserate; - } - /** - * Entrega el valor de: salerate - * @return BigDecimal - */ - public BigDecimal getSalerate() { - return salerate; - } - /** - * Fija el valor de: salerate - * @param salerate - */ - public void setSalerate(BigDecimal salerate) { - this.salerate = salerate; - } - /** - * Entrega el valor de: event - * @return String - */ - public String getEvent() { - return event; - } - /** - * Fija el valor de: event - * @param event - */ - public void setEvent(String event) { - this.event = event; - } - - /** - * Entrega el valor de: eventmodule - * @return String - */ - public String getEventmodule() { - return eventmodule; - } - /** - * Fija el valor de: eventmodule - * @param eventmodule - */ - public void setEventmodule(String eventmodule) { - this.eventmodule = eventmodule; - } - /** - * Entrega el valor de: calculateOrigin - * @return boolean - */ - public boolean isCalculateOrigin() { - return calculateOrigin; - } - /** - * Fija el valor de: calculateOrigin - * @param calculateOrigin - */ - public void setCalculateOrigin(boolean calculateOrigin) { - this.calculateOrigin = calculateOrigin; - } - /** - * Entrega el valor de: financial - * @return String - */ - public String getFinancial() { - return financial; - } - /** - * Fija el valor de: financial - * @param financial - */ - public void setFinancial(String financial) { - this.financial = financial; - } - - -} - diff --git a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialItem.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialItem.java.svn-base deleted file mode 100644 index 42dcec9..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialItem.java.svn-base +++ /dev/null @@ -1,612 +0,0 @@ -package com.fp.dto.fin; - -import java.math.BigDecimal; -import java.sql.Date; - -import com.fp.dto.AbstractDataTransport; - -/** - * Clase utilizada en el procesos de transacciones financieras. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class FinancialItem extends AbstractDataTransport implements Cloneable { - - private static final long serialVersionUID = 1L; - - /** Codigo de rubro asociado a una transaccion monetaria. */ - private Integer itemCode; - - /** - * Numero de cuenta que se afecta con el rubro. Si el valor del atributo esta vacio se toma la cuenta que llega en - * el FinancialRequest, dependiendo de la definicion del rubro si es debito o credito. - */ - private String account; - - /** Codigo de compania a la que pertenece la cuenta. */ - private Integer companyAccount; - - /** - * Numero de cuota de una tabla de pagos que se afecta, utilizado en cuentas que manejan tablas de pagos ejemplo - * pago, prestamos. - */ - private Integer quotaNumber; - - /** - * Secuencia interna de la cuota de una tabla de pagos que se afecta, utilizado en cuentas que manejan tablas de - * pagos ejemplo pago, prestamos. - */ - private Integer quotaSequence; - - /** - * Codigo contable que se afecta con el movimiento, si llega un valor en este atributo se respeta es valor - * casocontrario el codigo contable lo obtiene la aplicacion. - */ - private String accountingCode; - - /** - * Sucursal destino del movimiento, si afecta a una cuenta producto se toma la sucursal de la cuenta. tambien se - * utiliza en el manejod e intersucursales. - */ - private Integer destinyBranch; - - /** - * Oficina destino del movimiento, si afecta a una cuenta producto se toma la sucursal de la cuenta. tambien se - * utiliza en el manejod e intersucursales. - */ - private Integer destinyOffice; - - /** - * Sucursal origen del movimiento, si afecta a una cuenta producto se toma la sucursal de la cuenta. tambien se - * utiliza en el manejod e intersucursales. - */ - private Integer originBranch; - - /** - * Oficina origen del movimiento, si afecta a una cuenta producto se toma la sucursal de la cuenta. tambien se - * utiliza en el manejod e intersucursales. - */ - private Integer originOffice; - - /** Monto de la transaccion */ - private BigDecimal amount; - - /** Codigo de moneda en la que esta expresado el valor del rubro. */ - private String currecy; - - /** - * Estatus de la cuenta con el que se afecta el moviento, si es una cuneta producto, si llega en blanco se toma de - * la cuenta producto - */ - private String accountStatus; - - /** - * Indica que con el mismo rubro de la transaccion se va a registrar varios asientos en el journal, ejemplo, - * registro de comprobantes contables, contabilizacion de cuotas de plazo fijo o prestamos. - */ - private boolean repeating = false; - - /** Tipo de sobregito , ejemplo CONTRACTED,OCASIONAL,INDIRECT, etc */ - private String overdrawCatalog; - - /** Codigo de tabla de tipo de sobregiro OVERDRAWTYPE. */ - private String overdrawCatalogCode; - - /** Codigo de tipo de credito que se afecta con la transaccion. */ - private String creditType; - - /** Codigo de estatus de la operacion que se afecta con la transaccion. */ - private String operationStatus; - - /** Fecha de inicio de la cuota o del sobregiro. */ - private Date beginingDate; - - /** Fecha de vencimiento de la cuota o del sobregiro. */ - private Date expirationDate; - - /** Indica si el tipo de saldo actualiza saldos. Ejm false, en contabilizacion de desembolso de un credito. */ - private boolean updateBalance = true; - - /** - * Cotizacion de compra o venta, con el cual se calcula el valor en moneda local para grabar en la tbala de journal. - */ - private BigDecimal exchangeQuote; - - /** Codigo de modulo utilizado en el registro contable de provisiones */ - private String accountmodule; - - /** Codigo de producto utilizado en el registro contable de provisiones */ - private String accountproduct; - - /** Codigo de subproducto utilizado en el registro contable de provisiones */ - private String accountsubproduct; - - /** - * Crea una instancia de FinancialItem, vacia. - */ - public FinancialItem() { - } - - /** - * Crea una instancia de FinancialItem. - * - * @param pItemCode Codigo de rubro con el cual se ejecuta la transaccion. - * @param pAmount Monto en el que se afecta el rubro. - * @param pCurrency Codigo de moneda en la que se expresa el monto del rubro. - * @throws Exception - */ - public FinancialItem(Integer pItemCode, BigDecimal pAmount, String pCurrency) throws Exception { - this.itemCode = pItemCode; - this.amount = pAmount; - this.currecy = pCurrency; - } - - /** - * Entrega una copia de la instancia de FinancialItem. - * - * @return FinancialItem - * @throws CloneNotSupportedException - */ - public FinancialItem cloneMe() throws CloneNotSupportedException { - return (FinancialItem) super.clone(); - } - - /** - * Entrega el valor de: itemCode - * - * @return Integer - */ - public Integer getItemCode() { - return this.itemCode; - } - - /** - * Fija el valor de itemCode - * - * @param code - */ - public void setItemCode(Integer itemCode) { - this.itemCode = itemCode; - } - - /** - * Entrega el valor de: account - * - * @return String - */ - public String getAccount() { - return this.account; - } - - /** - * Fija el valor de account - * - * @param account - */ - public void setAccount(String account) { - this.account = account; - } - - /** - * Entrega el valor de: companyAccount - * - * @return Integer - */ - public Integer getCompanyAccount() { - return this.companyAccount; - } - - /** - * Fija el valor de companyAccount - * - * @param companyAccount - */ - public void setCompanyAccount(Integer companyAccount) { - this.companyAccount = companyAccount; - } - - /** - * Entrega el valor de: quotaNumber - * - * @return Integer - */ - public Integer getQuotaNumber() { - return this.quotaNumber; - } - - /** - * Fija el valor de quotaNumber - * - * @param quotaNumber - */ - public void setQuotaNumber(Integer quotaNumber) { - this.quotaNumber = quotaNumber; - } - - /** - * Entrega el valor de: quotaSequence - * - * @return Integer - */ - public Integer getQuotaSequence() { - return this.quotaSequence; - } - - /** - * Fija el valor de quotaSequence - * - * @param quotaSequence value to set - */ - public void setQuotaSequence(Integer quotaSequence) { - this.quotaSequence = quotaSequence; - } - - /** - * Entrega el valor de: accountingCode - * - * @return String - */ - public String getAccountingCode() { - return this.accountingCode; - } - - /** - * Fija el valor de accountingCode - * - * @param accountingCode - */ - public void setAccountingCode(String accountingCode) { - this.accountingCode = accountingCode; - } - - /** - * Entrega el valor de: destinyBranch - * - * @return Integer - */ - public Integer getDestinyBranch() { - return this.destinyBranch; - } - - /** - * Fija el valor de destinyBranch - * - * @param destinyBranch - */ - public void setDestinyBranch(Integer destinyBranch) { - this.destinyBranch = destinyBranch; - } - - /** - * Entrega el valor de: destinyOffice - * - * @return Integer - */ - public Integer getDestinyOffice() { - return this.destinyOffice; - } - - /** - * Fija el valor de destinyOffice - * - * @param destinyOffice - */ - public void setDestinyOffice(Integer destinyOffice) { - this.destinyOffice = destinyOffice; - } - - /** - * Entrega el valor de: originBranch - * - * @return Integer - */ - public Integer getOriginBranch() { - return this.originBranch; - } - - /** - * Fija el valor de: originBranch - * - * @param originBranch value to set - */ - public void setOriginBranch(Integer originBranch) { - this.originBranch = originBranch; - } - - /** - * Entrega el valor de: originOffice - * - * @return Integer - */ - public Integer getOriginOffice() { - return this.originOffice; - } - - /** - * Fija el valor de: originOffice - * - * @param originOffice value to set - */ - public void setOriginOffice(Integer originOffice) { - this.originOffice = originOffice; - } - - /** - * Entrega el valor de: amount - * - * @return BigDecimal - */ - public BigDecimal getAmount() { - return this.amount; - } - - /** - * Fija el valor de amount - * - * @param amount - */ - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - /** - * Entrega el valor de: accountStatus - * - * @return String - */ - public String getAccountStatus() { - return this.accountStatus; - } - - /** - * Fija el valor de accountStatus - * - * @param accountStatus - */ - public void setAccountStatus(String accountStatus) { - this.accountStatus = accountStatus; - } - - /** - * Entrega el valor de: repeating - * - * @return boolean - */ - public boolean isRepeating() { - return this.repeating; - } - - /** - * Fija el valor de: repeating - * - * @param repeating - */ - public void setRepeating(boolean repeating) { - this.repeating = repeating; - } - - /** - * Entrega el valor de: currecy - * - * @return String - */ - public String getCurrecy() { - return this.currecy; - } - - /** - * Fija el valor de: currecy - * - * @param currecy - */ - public void setCurrecy(String currecy) { - this.currecy = currecy; - } - - @Override - public String toString() { - String data = "itemCode:" + this.itemCode + " currecy:" + this.currecy + " account:" + this.account + " cia:" + this.companyAccount - + " amount:" + this.amount + " qn: " + this.quotaNumber; - return data; - } - - /** - * Entrega el valor de: overdrawCatalog - * - * @return String - */ - public String getOverdrawCatalog() { - return this.overdrawCatalog; - } - - /** - * Fija el valor de overdrawCatalog - * - * @param overdrawCatalog value to set - */ - public void setOverdrawCatalog(String overdrawCatalog) { - this.overdrawCatalog = overdrawCatalog; - } - - /** - * Entrega el valor de: overdrawCatalogCode - * - * @return String - */ - public String getOverdrawCatalogCode() { - return this.overdrawCatalogCode; - } - - /** - * Fija el valor de overdrawCatalogCode - * - * @param overdrawCatalogCode value to set - */ - public void setOverdrawCatalogCode(String overdrawCatalogCode) { - this.overdrawCatalogCode = overdrawCatalogCode; - } - - /** - * Entrega el valor de: creditType - * - * @return String - */ - public String getCreditType() { - return this.creditType; - } - - /** - * Fija el valor de creditType - * - * @param creditType value to set - */ - public void setCreditType(String creditType) { - this.creditType = creditType; - } - - /** - * Entrega el valor de: operationStatus - * - * @return String - */ - public String getOperationStatus() { - return this.operationStatus; - } - - /** - * Fija el valor de: operationStatus - * - * @param operationStatus value to set - */ - public void setOperationStatus(String operationStatus) { - this.operationStatus = operationStatus; - } - - /** - * Entrega el valor de: beginingDate - * - * @return Date - */ - public Date getBeginingDate() { - return this.beginingDate; - } - - /** - * Fija el valor de beginingDate - * - * @param beginingDate value to set - */ - public void setBeginingDate(Date beginingDate) { - this.beginingDate = beginingDate; - } - - /** - * Entrega el valor de: expirationDate - * - * @return Date - */ - public Date getExpirationDate() { - return this.expirationDate; - } - - /** - * Fija el valor de expirationDate - * - * @param expirationDate value to set - */ - public void setExpirationDate(Date expirationDate) { - this.expirationDate = expirationDate; - } - - /** - * Entrega el valor de: updateBalance - * - * @return boolean - */ - public boolean isUpdateBalance() { - return this.updateBalance; - } - - /** - * Fija el valor de updateBalance - * - * @param updateBalance value to set - */ - public void setUpdateBalance(boolean updateBalance) { - this.updateBalance = updateBalance; - } - - /** - * Entrega el valor de: exchangeQuote - * - * @return BigDecimal - */ - public BigDecimal getExchangeQuote() { - return this.exchangeQuote; - } - - /** - * Fija el valor de: exchangeQuote - * - * @param exchangeQuote - */ - public void setExchangeQuote(BigDecimal exchangeQuote) { - this.exchangeQuote = exchangeQuote; - } - - /** - * Entrega el valor de: accountmodule - * - * @return String - */ - public String getAccountmodule() { - return this.accountmodule; - } - - /** - * Fija el valor de: accountmodule - * - * @param accountmodule value to set - */ - public void setAccountmodule(String accountmodule) { - this.accountmodule = accountmodule; - } - - /** - * Entrega el valor de: accountproduct - * - * @return String - */ - public String getAccountproduct() { - return this.accountproduct; - } - - /** - * Fija el valor de: accountproduct - * - * @param accountproduct value to set - */ - public void setAccountproduct(String accountproduct) { - this.accountproduct = accountproduct; - } - - /** - * Entrega el valor de: accountsubproduct - * - * @return String - */ - public String getAccountsubproduct() { - return this.accountsubproduct; - } - - /** - * Fija el valor de: accountsubproduct - * - * @param accountsubproduct value to set - */ - public void setAccountsubproduct(String accountsubproduct) { - this.accountsubproduct = accountsubproduct; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialRequest.java.svn-base deleted file mode 100644 index b1007c7..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/fin/.svn/text-base/FinancialRequest.java.svn-base +++ /dev/null @@ -1,754 +0,0 @@ -package com.fp.dto.fin; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.List; - -import com.fp.dto.Request; - -/** - * Clase utilizada en el procesamiento de transacciones finacieras.
      - * Ejemplo: Depositos, Pago cheque, Desembolso creditos, Pago intereses certificados deposito. Etc.. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class FinancialRequest extends Request { - - public static String aux = "Hola mundo"; - - /* Version del objeto. */ - private static final long serialVersionUID = 1L; - - /** Identificador de la transaccion. */ - protected String oldjournalId; - - /** Modo en el que se ejecuta la transaccion N (Normal) I (Imperativo o Forzado) */ - private String transactionMode = "N"; - - /** Fecha contable del movimiento. */ - private Date accountingDate; - - /** Fecha de trabao del movimiento. */ - private Date workingdate; - - /** Fecha de proceso del movimiento, con esta fecha se lleva los saldos de cuentas producto. */ - private Date processDate; - - /** - * Fecha valor del movimiento, se utiliza en el calculo de ajuste de interese, los cuales se contabilizan con la - * fecha de hoy. - */ - private Date valueDate; - - /** True indica que se esta ejecutando un comprobante contable. */ - private boolean accountingVoucher = false; - - /** Numero de documento, papeleta o numero de cheque. */ - private String document; - - /** Numero de documento final, o numero de cheque final, se utiliza en la anulacion de un rango de cheques. */ - private String enddocument; - - /** Glosa de la transaccion,texto libre. */ - private String commentary; - - /** Codigo de area al que pertence el terminal. */ - private String area; - - /** Fecha de compenzacion del movimiento. */ - private Date settlement; - - /** Numero cuenta debito, en una transaccion monetaria. */ - private String debitAccount; - - /** - * Numero de cuota asociada a la cuenta debito, se utiliza si la transaccion afecta a una cuenta que afecta a una - * tabla de pagos. - */ - private Integer debitQuotaNumber; - - /** Numero de cuenta credito, en una transaccion monetaria. */ - private String creditAccount; - - /** - * Numero de cuota asociada a la cuenta credito, se utiliza si la transaccion afecta a una cuenta que afecta a una - * tabla de pagos. - */ - private Integer creditQuotaNumber; - - /** Indica que el request va a ejecutar un reverso de una transaccion. */ - private String reverse = "N"; - - /** Numero de mensaje a reversar. */ - private String journalIdReverse; - - /** Sucursal a la que cambiara la cuenta producto */ - private Integer newAccountBranch; - - /** Oficina a la que cambiara la cuenta producto */ - private Integer newAccountOffice; - - /** Sub Producto al cual cambiara la cuenta producto, no se permite cambios de producto de cuentas. */ - private String newSubProduct; - - /** Codigo de deposito utilizado en depositos codificados. */ - private String depositCode; - - /** Lista de rubros enviados desde un canal para ejecutar una transacion. */ - private List financialItems = new ArrayList(); - - /** - * Indica si se cambia el debito por credito, Ejemplo reverso contable del registro de una CXC en el cobro de la - * misma. - */ - private boolean changeDebitByCredit = false; - - /** Indica que al ejecutar una transaccion calcula provisiones o no. */ - private boolean calculateprovision = true; - - /** Codigo de tipos de identificacion */ - private String identificationcatalog; - - /** Codigo de catalogo de tipo de identificacion */ - private String identificationcatalogcode = "IDENTIFICATION"; - - /** Identificacion del cliente. */ - private String identification; - - /** Codigo de persona beneficiaria */ - private Integer beneficiaryperson; - - /** Nombre del beneficiario. */ - private String beneficiaryname; - - /** Numero de transaccion de caja multiple, asociado a la fecha de trabajo usuario. */ - private Integer mixnumber; - - /** Indica que la transaccion es de contabilizacion del accrual diario de intereses. */ - private boolean accrualdaily = false; - - /** - * Entrega una copia de la instancia de FinancialItem. - * - * @return FinancialItem - * @throws CloneNotSupportedException - */ - public FinancialRequest cloneMe() throws CloneNotSupportedException { - return (FinancialRequest) super.clone(); - } - - /** - * Entrega el valor de: oldjournalId - * - * @return String - */ - public String getOldjournalId() { - return this.oldjournalId; - } - - /** - * Fija el valor de: oldjournalId - * - * @param oldjournalId valor a almacenar en el objeto. - */ - public void setOldjournalId(String oldjournalId) { - this.oldjournalId = oldjournalId; - } - - /** - * Metodo que cambia el codigo de transaccion del FinancialRequest. - * - * @param pModule Codigo de modulo al que pertenece la nueva transaccion. - * @param pTransaction Codigo de la nueva transaccion. - * @param pVersion Version de la nueva transaccion. - * @throws Exception - */ - public void changeTransaction(String pModule, Integer pTransaction, Integer pVersion) throws Exception { - this.transactionModule = pModule; - this.transactionCode = pTransaction; - this.transactionVersion = pVersion; - } - - /** - * Encera financialItems de una transaccion. - */ - public void cleanItems() { - this.financialItems = new ArrayList(); - } - - /** - * Entrega el valor de: transactionMode - * - * @return String - */ - public String getTransactionMode() { - return this.transactionMode; - } - - /** - * Fija el valor de: transactionMode - * - * @param transactionMode - */ - public void setTransactionMode(String transactionMode) { - this.transactionMode = transactionMode; - } - - /** - * Entrega el valor de: accountingDate - * - * @return Date - */ - public Date getAccountingDate() { - return this.accountingDate; - } - - /** - * Fija el valor de: accountingDate - * - * @param accountingDate - */ - public void setAccountingDate(Date accountingDate) { - this.accountingDate = accountingDate; - } - - /** - * Entrega el valor de: workingdate - * - * @return Date - */ - public Date getWorkingdate() { - return this.workingdate; - } - - /** - * Fija el valor de workingDate - * - * @param workingdate value to set - */ - public void setWorkingdate(Date workingdate) { - this.workingdate = workingdate; - } - - /** - * Entrega el valor de: processDate - * - * @return Date - */ - public Date getProcessDate() { - return this.processDate; - } - - /** - * Fija el valor de: processDate - * - * @param processDate - */ - public void setProcessDate(Date processDate) { - this.processDate = processDate; - } - - /** - * Entrega el valor de: valueDate - * - * @return Date - */ - public Date getValueDate() { - return this.valueDate; - } - - /** - * Fija el valor de: valueDate - * - * @param valueDate - */ - public void setValueDate(Date valueDate) { - this.valueDate = valueDate; - } - - /** - * Entrega el valor de: accountingVoucher - * - * @return boolean - */ - public boolean isAccountingVoucher() { - return this.accountingVoucher; - } - - /** - * Fija el valor de: accountingVoucher - * - * @param accountingVoucher - */ - public void setAccountingVoucher(boolean accountingVoucher) { - this.accountingVoucher = accountingVoucher; - } - - /** - * Entrega el valor de: document - * - * @return String - */ - public String getDocument() { - return this.document; - } - - /** - * Fija el valor de: document - * - * @param document - */ - public void setDocument(String document) { - this.document = document; - } - - /** - * @return the enddocument - */ - public String getEnddocument() { - return this.enddocument; - } - - /** - * @param enddocument the enddocument to set - */ - public void setEnddocument(String enddocument) { - this.enddocument = enddocument; - } - - /** - * Entrega el valor de: commentary - * - * @return String - */ - public String getCommentary() { - return this.commentary; - } - - /** - * Fija el valor de: commentary - * - * @param commentary - */ - public void setCommentary(String commentary) { - this.commentary = commentary; - } - - /** - * Entrega el valor de: area - * - * @return String - */ - public String getArea() { - return this.area; - } - - /** - * Fija el valor de: area - * - * @param area - */ - public void setArea(String area) { - this.area = area; - } - - /** - * Entrega el valor de: settlement - * - * @return Date - */ - public Date getSettlement() { - return this.settlement; - } - - /** - * Fija el valor de: settlement - * - * @param settlement - */ - public void setSettlement(Date settlement) { - this.settlement = settlement; - } - - /** - * Entrega el valor de: debitAccount - * - * @return String - */ - public String getDebitAccount() { - return this.debitAccount; - } - - /** - * Fija el valor de: debitAccount - * - * @param debitAccount - */ - public void setDebitAccount(String debitAccount) { - this.debitAccount = debitAccount; - } - - /** - * Entrega el valor de: debitQuotaNumber - * - * @return Integer - */ - public Integer getDebitQuotaNumber() { - return this.debitQuotaNumber; - } - - /** - * Fija el valor de: debitQuotaNumber - * - * @param debitQuotaNumber - */ - public void setDebitQuotaNumber(Integer debitQuotaNumber) { - this.debitQuotaNumber = debitQuotaNumber; - } - - /** - * Entrega el valor de: creditAccount - * - * @return String - */ - public String getCreditAccount() { - return this.creditAccount; - } - - /** - * Fija el valor de: creditAccount - * - * @param creditAccount - */ - public void setCreditAccount(String creditAccount) { - this.creditAccount = creditAccount; - } - - /** - * Entrega el valor de: creditQuotaNumber - * - * @return Integer - */ - public Integer getCreditQuotaNumber() { - return this.creditQuotaNumber; - } - - /** - * Fija el valor de: creditQuotaNumber - * - * @param creditQuotaNumber - */ - public void setCreditQuotaNumber(Integer creditQuotaNumber) { - this.creditQuotaNumber = creditQuotaNumber; - } - - /** - * Entrega el valor de: reverse - * - * @return String - */ - public String getReverse() { - return this.reverse; - } - - /** - * Fija el valor de: reverse - * - * @param reverse - */ - public void setReverse(String reverse) { - this.reverse = reverse; - } - - /** - * Entrega el valor de: journalIdReverse - * - * @return String - */ - public String getJournalIdReverse() { - return this.journalIdReverse; - } - - /** - * Fija el valor de: journalIdReverse - * - * @param journalIdReverse - */ - public void setJournalIdReverse(String journalIdReverse) { - this.journalIdReverse = journalIdReverse; - } - - /** - * Entrega el valor de: newAccountBranch - * - * @return Integer - */ - public Integer getNewAccountBranch() { - return this.newAccountBranch; - } - - /** - * Fija el valor de: newAccountBranch - * - * @param newAccountBranch - */ - public void setNewAccountBranch(Integer newAccountBranch) { - this.newAccountBranch = newAccountBranch; - } - - /** - * Entrega el valor de: newAccountOffice - * - * @return Integer - */ - public Integer getNewAccountOffice() { - return this.newAccountOffice; - } - - /** - * Fija el valor de: newAccountOffice - * - * @param newAccountOffice - */ - public void setNewAccountOffice(Integer newAccountOffice) { - this.newAccountOffice = newAccountOffice; - } - - /** - * Entrega el valor de: newSubProduct - * - * @return String - */ - public String getNewSubProduct() { - return this.newSubProduct; - } - - /** - * Fija el valor de: newSubProduct - * - * @param newSubProduct - */ - public void setNewSubProduct(String newSubProduct) { - this.newSubProduct = newSubProduct; - } - - /** - * Adiciona un item a procesar en la transaccion. - * - * @param pFinancialItem Datos del FinancialItem. - * @throws Exception - */ - public void addFinancialItem(FinancialItem pFinancialItem) throws Exception { - this.financialItems.add(pFinancialItem); - } - - /** - * Adiciona una Lista de item a procesar en la transaccion. - * - * @param pFinancialItems Lista de items. - * @throws Exception - */ - public void addFinancialItems(List pFinancialItems) throws Exception { - this.financialItems.addAll(pFinancialItems); - } - - /** - * Entrega el valor de: financialItems - * - * @return List - */ - public List getFinancialItems() { - return this.financialItems; - } - - /** - * Fija el valor de: financialItems - * - * @param financialItems - */ - public void setFinancialItems(List financialItems) { - this.financialItems = financialItems; - } - - /** - * Entrega el valor de: depositCode - * - * @return String - */ - public String getDepositCode() { - return this.depositCode; - } - - /** - * Fija el valor de: depositCode - * - * @param depositCode - */ - public void setDepositCode(String depositCode) { - this.depositCode = depositCode; - } - - /** - * Entrega el valor de: changeDebitByCredit - * - * @return boolean - */ - public boolean isChangeDebitByCredit() { - return this.changeDebitByCredit; - } - - /** - * Fija el valor de changeDebitByCredit - * - * @param changeDebitByCredit value to set - */ - public void setChangeDebitByCredit(boolean changeDebitByCredit) { - this.changeDebitByCredit = changeDebitByCredit; - } - - /** - * Entrega el valor de: calculateprovision - * - * @return boolean - */ - public boolean isCalculateprovision() { - return this.calculateprovision; - } - - /** - * Fija el valor de: calculateprovision - * - * @param calculateprovision - */ - public void setCalculateprovision(boolean calculateprovision) { - this.calculateprovision = calculateprovision; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return String - */ - public String getIdentificationcatalog() { - return this.identificationcatalog; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param identificationcatalog valor a almacenar en el objeto. - */ - public void setIdentificationcatalog(String identificationcatalog) { - this.identificationcatalog = identificationcatalog; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return String - */ - public String getIdentificationcatalogcode() { - return this.identificationcatalogcode; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param identificationcatalogcode valor a almacenar en el objeto. - */ - public void setIdentificationcatalogcode(String identificationcatalogcode) { - this.identificationcatalogcode = identificationcatalogcode; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return Integer - */ - public Integer getBeneficiaryperson() { - return this.beneficiaryperson; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param beneficiaryperson valor a almacenar en el objeto. - */ - public void setBeneficiaryperson(Integer beneficiaryperson) { - this.beneficiaryperson = beneficiaryperson; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return String - */ - public String getBeneficiaryname() { - return this.beneficiaryname; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param beneficiaryname valor a almacenar en el objeto. - */ - public void setBeneficiaryname(String beneficiaryname) { - this.beneficiaryname = beneficiaryname; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return String - */ - public String getIdentification() { - return this.identification; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param identification valor a almacenar en el objeto. - */ - public void setIdentification(String identification) { - this.identification = identification; - } - - /** - * Entrega el valor de: FinancialRequest.java - * - * @return Integer - */ - public Integer getMixnumber() { - return this.mixnumber; - } - - /** - * Fija el valor de: FinancialRequest.java - * - * @param mixnumber valor a almacenar en el objeto. - */ - public void setMixnumber(Integer mixnumber) { - this.mixnumber = mixnumber; - } - - /** - * Entrega el valor de: accrualdaily - * - * @return boolean - */ - public boolean isAccrualdaily() { - return this.accrualdaily; - } - - /** - * Fija el valor de: accrualdaily - * - * @param accrualdaily value to set - */ - public void setAccrualdaily(boolean accrualdaily) { - this.accrualdaily = accrualdaily; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/entries deleted file mode 100644 index 05bbdde..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/hb -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AbstractExpire.java -file - - - - -2022-07-28T03:40:33.074761Z -bc4d07783c2cf2faade501d56258363e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -383 - -History.java -file - - - - -2022-07-28T03:40:33.074761Z -1e71bb0485d8ae3256ac3b74c1b49f20 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -401 - -Log.java -file - - - - -2022-07-28T03:40:33.075761Z -b2746b8a31f04695cabdffee6501f404 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -107 - -Cache.java -file - - - - -2022-07-28T03:40:33.075761Z -2c0bd68b967cd0c7c5bd805699362f14 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -109 - -HibernateBean.java -file - - - - -2022-07-28T03:40:33.075761Z -29fa8a6586f92f6761ee791977e9fa5a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -276 - -HibernateId.java -file - - - - -2022-07-28T03:40:33.075761Z -adb96cf2d7a9bab496529c05c23c2faf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -109 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/AbstractExpire.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/AbstractExpire.java.svn-base deleted file mode 100644 index 6ad5ce4..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/AbstractExpire.java.svn-base +++ /dev/null @@ -1,19 +0,0 @@ -package com.fp.dto.hb; - -import com.fp.dto.AbstractDataTransport; - -/** - * Interface que indica que una regiostro de una tabla maneja concepto datefrom dateto. - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class AbstractExpire extends AbstractDataTransport implements Cloneable{ - /** - * Version de la clase. - */ - private static final long serialVersionUID = 1L; - - - - -} \ No newline at end of file diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Cache.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Cache.java.svn-base deleted file mode 100644 index 15baf9e..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Cache.java.svn-base +++ /dev/null @@ -1,7 +0,0 @@ -package com.fp.dto.hb; - -import java.io.Serializable; - -public interface Cache extends Serializable{ - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateBean.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateBean.java.svn-base deleted file mode 100644 index b8410e4..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateBean.java.svn-base +++ /dev/null @@ -1,13 +0,0 @@ -package com.fp.dto.hb; - -public interface HibernateBean { - public Object createInstance() throws Exception; - - /** - * Clona la instancia del Bean - * - * @return Instancia nueva - * @throws Exception - */ - Object cloneMe() throws Exception; -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateId.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateId.java.svn-base deleted file mode 100644 index 102fa12..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/HibernateId.java.svn-base +++ /dev/null @@ -1,7 +0,0 @@ -package com.fp.dto.hb; - -import java.io.Serializable; - -public interface HibernateId extends Serializable{ - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/History.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/History.java.svn-base deleted file mode 100644 index b8c89a0..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/History.java.svn-base +++ /dev/null @@ -1,16 +0,0 @@ -package com.fp.dto.hb; - -import java.sql.Timestamp; - -/** - * Interface que indica que una regiostro de una tabla maneja concepto datefrom dateto. - * @author Jorge Vaca - * @version 2.1 - */ -public interface History { - - /**Fija el valor de caducidad del registro.*/ - public void setDateto(Timestamp pDateTo); - /**Entrega la fecha hasta la cual esta vigente un registro.*/ - public Timestamp getDateto(); -} \ No newline at end of file diff --git a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Log.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Log.java.svn-base deleted file mode 100644 index 3d4c6db..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/hb/.svn/text-base/Log.java.svn-base +++ /dev/null @@ -1,7 +0,0 @@ -package com.fp.dto.hb; - -import java.io.Serializable; - -public interface Log extends Serializable{ - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/entries deleted file mode 100644 index c8daec3..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FileHelper.java -file - - - - -2022-07-28T03:40:33.006761Z -254d1fb2b524d7be3b2bcd68a0392697 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2372 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/text-base/FileHelper.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/text-base/FileHelper.java.svn-base deleted file mode 100644 index 8925a7f..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/helper/.svn/text-base/FileHelper.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.dto.helper; - -import java.io.Serializable; - -/** - * Clase que se encarga del manejo de archivo como imagenes - * - * @author scastillo - */ -public class FileHelper implements Serializable { - /* - * Variable que contiene la extencion del archivo - */ - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - private String extension; - - /* - * Variable que contiene el archivo como tal - */ - private byte[] image; - - /* - * Variable que contiene el nombre del archivo - */ - private String name; - - /* - * Variable que contiene el tama�o del archivo - */ - private Integer size; - - private String contentType; - - /** - * Entrega el valor de contentType - * - * @return Valor de contentType - */ - public String getContentType() { - return this.contentType; - } - - /** - * Fija un nuevo valor en contentType - * - * @param pContentType nuevo valor para contentType - */ - public void setContentType(String pContentType) { - this.contentType = pContentType; - } - - /** - * Metodo que devuelve la extencion del archivo - * - * @return - */ - public String getExtension() { - return this.extension; - } - - /** - * Metodo que asigna la extencion del archivo - * - * @param extension - */ - public void setExtension(String extension) { - this.extension = extension; - } - - /** - * Metodo que devuelve el archivo como tal - * - * @return - */ - public byte[] getImage() { - return this.image; - } - - /** - * Metodo que asigna un archivo - * - * @param image - */ - public void setImage(byte[] image) { - this.image = image; - } - - /** - * Metodo que devuelve el nombre del archivo - * - * @return - */ - public String getName() { - return this.name; - } - - /** - * Metodo que asigna el nombre del archivo - * - * @param name - */ - public void setName(String name) { - this.name = name; - } - - /** - * Metodo que devuelve el tamanio del archivo - * - * @return - */ - public Integer getSize() { - return this.size; - } - - /* - * Metodo que asigna el tamanio del archivo - */ - - public void setSize(Integer size) { - this.size = size; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/entries deleted file mode 100644 index 980adab..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/entries +++ /dev/null @@ -1,303 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/query -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SubQuery.java -file - - - - -2022-07-28T03:40:33.305762Z -52339da9eed618634dca53f5c6208736 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2672 - -menu -dir - -Filter.java -file - - - - -2022-07-28T03:40:33.306762Z -c7f277312c802dab67ed78c1e00a4102 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3104 - -QueryCriteria.java -file - - - - -2022-07-28T03:40:33.306762Z -21455130daa6492bcd4f7ea467c139c7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5397 - -FilterTypes.java -file - - - - -2022-07-28T03:40:33.306762Z -d19678a70d4636dd8646fc4060fabae6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -876 - -QueryBean.java -file - - - - -2022-07-28T03:40:33.306762Z -df506bca8e1c9cd4791176cc7e962830 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7241 - -DtoQuery.java -file - - - - -2022-07-28T03:40:33.307762Z -4fe74211ce650ab9a79259b0b6f4d6a6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5499 - -AdditionalQuery.java -file - - - - -2022-07-28T03:40:33.307762Z -2a8f9f256d7ed672176446b98b16b489 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2286 - -QueryRequest.java -file - - - - -2022-07-28T03:40:33.307762Z -f716708cb681624321eaaa8bb30e6eb8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1554 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/AdditionalQuery.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/AdditionalQuery.java.svn-base deleted file mode 100644 index 545a27c..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/AdditionalQuery.java.svn-base +++ /dev/null @@ -1,105 +0,0 @@ -package com.fp.dto.query; - -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import com.fp.dto.AbstractDataTransport; - -/** - * Clase que almacena beans de con los cuales se realiza joins entre tablas en consultas. - * @author Jorge Vaca - * @version 2.1 - */ -public class AdditionalQuery extends AbstractDataTransport implements Cloneable{ - - private static final long serialVersionUID = 1L; - /** - * Nombre del bean. - */ - private String bean; - /** - * Nombre del campo a obtener - */ - private String field; - /** - * Alias del campo en el cual se va a devolver la respuesta - */ - private String alias; - /** - * Criterios a emplearse en el subquery - */ - private List> criteria = new ArrayList>(); - - public AdditionalQuery() { - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - AdditionalQuery p = (AdditionalQuery) this.clone(); - return p; - } - /** - * Metodo que obtiene el b ean del cual se va a realizar el subquery - * @return - */ - public String getBean() { - return bean; - } - - /** - * Metodo que asigna el bean para el subquery - * @param bean - */ - public void setBean(String bean) { - this.bean = bean; - } - - /** - * Metodo que devuelve el alias - * @return - */ - public String getAlias() { - return alias; - } - - /** - * Metodo que asigna el alias - * @param alias - */ - public void setAlias(String alias) { - this.alias = alias; - } - - /** - * Metodo que obtiene el campo a obtener de la consulta - * @return - */ - public String getField() { - return field; - } - - /** - * Metodo que asigna el campo para la consulta - * @param field - */ - public void setField(String field) { - this.field = field; - } - - /** - * Metodo que devuelve los criterios para el subquery - * @return - */ - public List> getCriteria() { - return criteria; - } - - /** - * Metodo que asigna los criterios para el subquery - * @param criteria - */ - public void setCriteria(List> criteria) { - this.criteria = criteria; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/DtoQuery.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/DtoQuery.java.svn-base deleted file mode 100644 index ac74e14..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/DtoQuery.java.svn-base +++ /dev/null @@ -1,212 +0,0 @@ -package com.fp.dto.query; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -/** - * Dto de transporte utilizado en la ejecucin de consultas invocadas desde el front end, contiene metadata necesaria - * para armar y ejecutar consultas en la base de datos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class DtoQuery implements Serializable { - - private static final long serialVersionUID = 6080115615379062328L; - - /** - * Nombre del bean, con el cual se va a ejecutar la consulta. - */ - private String beanname; - - /** - * Numero de pagina se utiliza para consultar mas de un registro. - */ - private Integer page = 0; - - /** - * Numero de registros por pagina. - */ - private Integer recperpage = 0; - - /** - * True indica que la consulta espera de respuesrta de 0..n registros. - */ - private boolean multirecord = false; - - /** - * String que contiene la lista de campos por el cual se va a ordenar la consula.
      - * ejemplo
      - * pk.pais ordenado por pais
      - * pk.pais,pk.provincia,nombre ordenado por 3 campo
      - * nombre desc orden descendente por nombre
      - */ - private String orderby; - - /** - * Lista de filtros con los cuales se arma la sentencia de la consulta. - */ - private final List lfiltros = new ArrayList(); - - private final List lSubquery = new ArrayList(); - - /** - * Crea una instancia de {@link DtoConsulta}. - * - * @param beanname Nombre del bean a consultar. - * @param mcriterios Map de filtros tipo camo-valor. - * @throws Exception - */ - public DtoQuery(String beanname, Map mcriterios) throws Exception { - this.beanname = beanname; - addCriterios(mcriterios); - } - - /** - * Crea una instancia de {@link DtoConsulta}. - * - * @param beanname Nombre del bean a consultar. - * @param mcriterios Map de filtros tipo camo-valor. - * @throws Exception - */ - public DtoQuery(String beanname, Integer page, Integer recperpage, boolean multirecord, Map mcriterios) throws Exception { - this.beanname = beanname; - this.page = page; - this.recperpage = recperpage; - this.multirecord = multirecord; - addCriterios(mcriterios); - } - - /** - * Adiciona criterios a la consulta dado map, campo-valor. - * - * @param mcriterios Map que contiene filtros, campo - valor, al inicio del campo puede estar incluido el criterio. - * @throws Exception - */ - public void addCriterios(Map mcriterios) throws Exception { - if (mcriterios == null) { - return; - } - Set s = mcriterios.keySet(); - for (String campo : s) { - if (mcriterios.get(campo) != "" && mcriterios.get(campo) != null) { - Filter f = new Filter(campo, mcriterios.get(campo)); - lfiltros.add(f); - } - } - } - - /** - * Adiciona un filtro a la consulta. - * - * @param filtro Objeto que contiene los datos del filtro a utilizar en la consulta. - * @throws Exception - */ - public void addFiltro(Filter filtro) throws Exception { - lfiltros.add(filtro); - } - - /** - * Adiciona un subquery a la consulta. - * - * @param subquery Objeto que contiene los datos de subquery a utilizar en la consulta. - * @throws Exception - */ - public void addSubQuery(SubQuery subquery) throws Exception { - lSubquery.add(subquery); - } - - /** - * Entrega el valor de: beanname - * - * @return String - */ - public String getBeanname() { - return beanname; - } - - /** - * Fija el valor de: beanname - * - * @param Valor a fijar en el atributo. - */ - public void setBeanname(String beanname) { - this.beanname = beanname; - } - - /** - * Entrega el valor de: orderby - * - * @return String - */ - public String getOrderby() { - return orderby; - } - - /** - * Fija el valor de: orderby - * - * @param Valor a fijar en el atributo. - */ - public void setOrderby(String orderby) { - this.orderby = orderby; - } - - /** - * Entrega el valor de: page - * - * @return Integer - */ - public Integer getPage() { - return page; - } - - /** - * Entrega el valor de: multirecord - * - * @return boolean - */ - public boolean isMultirecord() { - return multirecord; - } - - /** - * Fija el valor de: multirecord - * - * @param Valor a fijar en el atributo. - */ - public void setMultirecord(boolean multirecord) { - this.multirecord = multirecord; - } - - /** - * Entrega el valor de: recperpage - * - * @return Integer - */ - public Integer getRecperpage() { - return recperpage; - } - - /** - * Entrega el valor de: lfiltros - * - * @return List - */ - public List getLfilter() { - return lfiltros; - } - - /** - * Entrega el valor de: lSubquery - * - * @return List - */ - public List getlSubquery() { - return lSubquery; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/Filter.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/Filter.java.svn-base deleted file mode 100644 index 0bafd83..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/Filter.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.dto.query; - -import java.io.Serializable; - -/** - * Objeto que contiene filtros asociados a una tabla. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Filter implements Serializable { - - private static final long serialVersionUID = -459214658769947266L; - /** - * Nombre del campo perteneciente a la tabla o bean. - */ - private String field; - /** - * Condicion a aplicar, si es null y el tipo de dato es String se toma like. - */ - private String condition; - /** - * Valor de la condicion, si es diferente de null se considera en la sentencia. - */ - private String value; - /** - * Valor de una condicion incluye campo y valor ejemplo: t.modulecode = 12 or t.modulecode is null - * Este valor es prioritario, si existe se adiciona al where. - */ - private String sql; - - /** - * Crea una instancia de FIlter. - */ - public Filter() { - } - - /** - * Crea una instancia de Filtro, Evalua la condicion del filtro que puede llegar en el nombre del campo ejemplo >=pk.cuidad. - * @param campo Nombre de un campo pertenceciente a un entity bean. - * @param valor Valor del criterio. - * @throws Exception - */ - public Filter(String field, String value) throws Exception { - this.field = field; - this.value = value; - if(value.length() > 1){ - evaluadoscriterio(value.substring(0, 2)); - } - if (condition == null && value.length() > 0) { - evaluadoscriterio(value.substring(0, 1)); - } - } - - /** - * Crea una instancia de Filtro. - * @param campo Nombre de un campo pertenceciente a un entity bean. - * @param valor Valor del criterio. - * @throws Exception - */ - public Filter(String field, String condition, String value) { - this.field = field; - this.condition = condition; - this.value = value; - } - - private void evaluadoscriterio(String cond) throws Exception { - if (FilterTypes.getFilterTypes(cond) != null) { - condition = cond; - value = value.substring(cond.length(), value.length()); - } - } - - /** - * Entrega el valor de: field - * @return String - */ - public String getField() { - return field; - } - - /** - * Fija el valor de: field - * @param Valor a fijar en el atributo. - */ - public void setField(String field) { - this.field = field; - } - - /** - * Entrega el valor de: condition - * @return String - */ - public String getCondition() { - return condition; - } - - /** - * Fija el valor de: condition - * @param Valor a fijar en el atributo. - */ - public void setCondition(String condition) { - this.condition = condition; - } - - /** - * Entrega el valor de: value - * @return String - */ - public String getValue() { - return value; - } - - /** - * Fija el valor de: value - * @param Valor a fijar en el atributo. - */ - public void setValue(String value) { - this.value = value; - } - - /** - * Entrega el valor de: sql - * @return String - */ - public String getSql() { - return sql; - } - - /** - * Fija el valor de: sql - * @param sql Valor a fijar en el atributo. - */ - - public void setSql(String sql) { - this.sql = sql; - } - - - -} - diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/FilterTypes.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/FilterTypes.java.svn-base deleted file mode 100644 index aa43581..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/FilterTypes.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.dto.query; - -public enum FilterTypes { - - EQUAL("="), DIFFERENT("!="), MAYOR(">"), GREATERTHAN("<"), LESSOREQUAL(">="), GREATOREQUAL("<="); - - /** - * Codigo de criterio. - */ - private String criteriacondition; - - /** - * Crea una instancia de FilterTypes. - * @param criteriacondition Codigo de criterio. - */ - private FilterTypes(String criteriacondition) { - this.criteriacondition = criteriacondition; - } - - /** - * Entraga un objeto FilterTypes dado una condicion. - * @param criterio Codigo de criterio. - * @return FilterTypes - * @throws Exception - */ - public static FilterTypes getFilterTypes(String criteriacondition) throws Exception { - FilterTypes em = null; - for (FilterTypes obj : FilterTypes.values()) { - if (obj.criteriacondition.compareTo(criteriacondition) == 0) { - em = obj; - } - } - return em; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryBean.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryBean.java.svn-base deleted file mode 100644 index a804f75..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryBean.java.svn-base +++ /dev/null @@ -1,281 +0,0 @@ -package com.fp.dto.query; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.AbstractData; - -/** - * @author Jorge Vaca - * @version 2.1 - */ -/** - * @author jorge - * - */ -public class QueryBean extends AbstractData { - - /** Version de la clase */ - private static final long serialVersionUID = 1L; - - /** Paquete clase asociado al bena. */ - private String beanName; - - /** Numero de registros a consultar por pagina, se utiliaz en la paginacion en una pantalla */ - private int pageSize = 10; - - /** Numero de pagina en que se encuentra la consulta */ - private int page = 1; - - /** true, indica que la consulta entrega mas de un registro. */ - private boolean multirecord = true; - - /** Codigo de query alias, se utiliza para ejecutar consultas por codigo de consulta. */ - private String queryalias; - - /** Tipo de consulta, T transacion, P codigo de consulta */ - private String querytype; - - /** Lista de criterios asociados a al querybean */ - private List criteria = new ArrayList(); - - /** Lista de query adicionales, utilizados para entregar informacion adicional asociada al bean principal */ - private List additionalQuery = new ArrayList(); - - /** - * Entrega el valor de: beanName - * - * @return String - */ - public String getBeanName() { - return this.beanName; - } - - /** - * Fija el valor de: beanName - * - * @param beanName - */ - public void setBeanName(String beanName) { - this.beanName = beanName; - } - - public List getAdditionalQuery() { - return this.additionalQuery; - } - - public void setAdditionalQuery(List additionalQuery) { - this.additionalQuery = additionalQuery; - } - - /** - * Entrega el valor de: criteria - * - * @return List - */ - public List getCriteria() { - return this.criteria; - } - - /** - * Fija el valor de: criteria - * - * @param criteria - */ - public void setCriteria(List criteria) { - this.criteria = criteria; - } - - public QueryBean(String beanName) { - this.beanName = beanName; - } - - public QueryBean() { - } - - /** - * Entrega el valor de: pageSize - * - * @return int - */ - public int getPageSize() { - return this.pageSize; - } - - /** - * Fija el valor de: pageSize - * - * @param pageSize - */ - public void setPageSize(int pageSize) { - this.pageSize = pageSize; - } - - /** - * Entrega el valor de: page - * - * @return int - */ - public int getPage() { - return this.page; - } - - /** - * Fija el valor de: page - * - * @param page - */ - public void setPage(int page) { - this.page = page; - } - - /** - * Entrega el valor de un criterio. - * - * @param pProperty Nombre del parametro de criterio. - * @return Object - * @throws Exception - */ - public Object getCriteriaValue(String pProperty) throws Exception { - Object value = null; - QueryCriteria obj = null; - for (QueryCriteria queryCriteria : this.criteria) { - if (queryCriteria.getProperty().compareTo(pProperty) == 0) { - obj = queryCriteria; - } - } - if (obj != null) { - value = obj.getValue(); - } - return value; - } - - /** - * Entrega el valor de un criterio. - * - * @param pProperty Nombre del parametro de criterio. - * @return Object - * @throws Exception - */ - public boolean isNotin(String pProperty) throws Exception { - boolean exists = false; - String aux = "not in"; - QueryCriteria obj = null; - for (QueryCriteria queryCriteria : this.criteria) { - if (queryCriteria.getProperty().compareTo(pProperty) == 0) { - obj = queryCriteria; - } - } - if (obj != null) { - exists = obj.getOperation().toLowerCase().compareTo(aux) == 0; - } - return exists; - } - - /** - * Metodo que fija un valor de un criterio. - * - * @param pProperty Nombre del criterio. - * @param pValue Valor a almacenar en el criterio. - * @throws Exception - */ - public void setCriteriaValue(String pProperty, Object pValue) throws Exception { - for (QueryCriteria obj : this.criteria) { - if (obj.getProperty().compareTo(pProperty) == 0) { - BeanManager.setBeanAttributeValue(obj, "value", pValue); - } - } - } - - /** - * Metodo que entrega una lista de criterios ordenada. - * - * @param pAsc true entrega una lista de criterios ordenada ascendentemente, false entrega una lista de criterios - * ordenada descendentemente. - * @return List - */ - public List getOrder(boolean pAsc) { - List order = new ArrayList(); - Map aux = new HashMap(); - List key = new ArrayList(); - for (QueryCriteria queryCriteria : this.criteria) { - if (pAsc) { - if (queryCriteria.getOrder() > 0) { - if (key.contains(Math.abs(queryCriteria.getOrder()))) { - continue; - } - key.add(Math.abs(queryCriteria.getOrder())); - aux.put(Math.abs(queryCriteria.getOrder()), queryCriteria); - } - } else { - if (queryCriteria.getOrder() < 0) { - if (key.contains(Math.abs(queryCriteria.getOrder()))) { - continue; - } - key.add(Math.abs(queryCriteria.getOrder())); - aux.put(Math.abs(queryCriteria.getOrder()), queryCriteria); - } - } - } - Collections.sort(key); - for (Integer k : key) { - order.add(aux.get(k)); - } - return order; - } - - /** - * Entrega el valor de: multirecord - * - * @return boolean - */ - public boolean isMultirecord() { - return this.multirecord; - } - - /** - * Fija el valor de: multirecord - * - * @param multirecord - */ - public void setMultirecord(boolean multirecord) { - this.multirecord = multirecord; - } - - /** - * Entrega el valor de: queryalias - * - * @return String - */ - public String getQueryalias() { - return this.queryalias; - } - - /** - * Fija el valor de: queryalias - * - * @param queryalias - */ - public void setQueryalias(String queryalias) { - this.queryalias = queryalias; - } - - /** - * @return the querytype - */ - public String getQuerytype() { - return this.querytype; - } - - /** - * @param querytype the querytype to set - */ - public void setQuerytype(String querytype) { - this.querytype = querytype; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryCriteria.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryCriteria.java.svn-base deleted file mode 100644 index 1b71f12..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryCriteria.java.svn-base +++ /dev/null @@ -1,197 +0,0 @@ -package com.fp.dto.query; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.data.SaveData; - -/** - * Clase de transporte, que se asocia a un querybena con las restricciones a aplicar - * en una sentencia SQL. - * @author Jorge Vaca - * @version 2.1 - */ -public class QueryCriteria extends AbstractDataTransport{ - /**Version de la clase.*/ - private static final long serialVersionUID = 1L; - /**Nombrte del campo de la tabla*/ - private String property; - /**Criterio de la restriccion, =, != , like, >= etc.*/ - private String operation; - /**Valor de la restriccion.*/ - private Object value; - /**Indice del orden en las sentencias.*/ - private int order=0; - - @Override - public Object cloneMe() throws CloneNotSupportedException { - QueryCriteria p = (QueryCriteria) this.clone(); - return p; - } - /** - * Entrega el valor de: property - * @return String - */ - public String getProperty() { - return property; - } - /** - * Fija el valor de: property - * @param property - */ - public void setProperty(String property) { - this.property = property; - if(this.value != null){ - this.setLogData(property, value); - } - } - /** - * Entrega el valor de: operation - * @return String - */ - public String getOperation() { - return operation; - } - /** - * Fija el valor de: operation - * @param operation - */ - public void setOperation(String operation) { - this.operation = operation; - } - /** - * Entrega el valor de: value - * @return Object - */ - public Object getValue() { - if(value instanceof Integer){ - return Long.parseLong(value.toString()); - } - return value; - } - - /** - * Fija el valor de: value - * @param value - */ - public void setValue(Object value) { - this.value = value; - if(this.property != null){ - this.setLogData(property, value); - } - } - /** - * Entrega el valor de: order - * @return int - */ - public int getOrder() { - return order; - } - /** - * Fija el valor de: order - * @param order - */ - public void setOrder(int order) { - this.order = order; - } - public QueryCriteria(){ - - } - - /** - * Crea una instancia de QueryCriteria. - * @param property Nombre del campo a aplicar la restriccion. - * @param operation Condicion =, != , >, >= etc - * @param value Valor de la restriccion. - */ - public QueryCriteria(String property, String operation, Object value) { - this(property,operation,value,0); - } - - /** - * Crea una instancia de QueryCriteria, la condicion de la restriccion es like. - * @param property Nombre del campo a aplicar la restriccion. - * @param value Valor de la restriccion. - */ - public QueryCriteria(String property, Object value) { - this(property,"like",value,0); - } - - /** - * Crea una instancia de QueryCriteria - * @param property Nombre del campo. - * @param operation Condicion =, != , >, >= etc - * @param value Valor de la restriccion. - * @param order Orden de presentacion en la consulta. - */ - public QueryCriteria(String property, String operation, Object value, int order) { - this.property = property; - this.operation = operation; - this.value = value; - this.order = order; - this.setLogData(property, value); - } - - private void setLogData(String property,Object value) { - try { - this.setPersoncode(property, value); - this.setAccount(property, value); - this.setSolicitudenumber(property, value); - } catch (Exception e) { - //no hacer nada - } - } - - /** - * Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo. - * @param property Nombre del campo a verificar. - * @param value Valor del campo. - * @throws Exception - */ - private void setPersoncode(String property,Object value) throws Exception { - String field = "PERSONCODE"; - if (!property.toUpperCase().contains(field) ){ - return; - } - this.setData(property, field, value); - } - - /** - * Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo. - * @param property Nombre del campo a verificar. - * @param value Valor del campo. - * @throws Exception - */ - private void setAccount(String property,Object value) throws Exception { - String field = "ACCOUNT"; - if (!property.toUpperCase().contains(field) ){ - return; - } - this.setData(property, field, value); - } - - /** - * Verifica que el nombre del campo sea PERSONCODE, y almacena en los datos de parametros del log el valor del campo. - * @param property Nombre del campo a verificar. - * @param value Valor del campo. - * @throws Exception - */ - private void setSolicitudenumber(String property,Object value) throws Exception { - String field = "SOLICITUDNUMBER"; - if (!property.toUpperCase().contains(field) ){ - return; - } - this.setData(property, field, value); - } - - private void setData(String property,String field,Object value) throws Exception { - if( SaveData.getMap().get(field) != null) { - return; - } - if (property.indexOf('.') > 0) { - property = property.substring(property.indexOf('.')+1); - } - if(property.toUpperCase().compareTo(field) == 0){ - SaveData.getMap().put(field, value); - } - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryRequest.java.svn-base deleted file mode 100644 index 08e1f20..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/QueryRequest.java.svn-base +++ /dev/null @@ -1,85 +0,0 @@ -package com.fp.dto.query; - -import java.util.HashMap; -import java.util.Map; -import java.util.Set; - -import com.fp.dto.Request; - -/** - * - * @author Jorge Vaca - * @version 2.1 - */ -public class QueryRequest extends Request { - - private static final long serialVersionUID = 1L; - - /** - * indica si la consulta se origina en una pagina jsf. - */ - private boolean jsf = false; - - /* (non-Javadoc) - * @see java.util.HashMap#get(java.lang.Object) - */ - @Override - public Object get(Object key) { - return super.get(key); - } - - /* (non-Javadoc) - * @see java.util.HashMap#put(java.lang.Object, java.lang.Object) - */ - @Override - public Object put(String key, Object value) { - if(key.compareTo("beans")==0){ - return value; - } - return super.put(key, value); - } - - /** - * Entrega un map con los objetos de tipo QueryBean. - * @return Map - */ - public Map getBeans() { - Map beans=new HashMap(); - Set keys=super.keySet(); - for(String key:keys){ - Object obj=super.get(key); - if(obj instanceof QueryBean){ - beans.put(key, (QueryBean)obj); - } - } - return beans; - } - - @Override - public Set> entrySet() { - super.entrySet(); - super.remove("beans"); - return super.entrySetDefault(); - } - - /** - * Entrega el valor de: jsf - * @return boolean - */ - public boolean isJsf() { - return jsf; - } - - /** - * Fija el valor de: jsf - * @param Valor a fijar en el atributo. - */ - public void setJsf(boolean jsf) { - this.jsf = jsf; - } - - - - - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/SubQuery.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/SubQuery.java.svn-base deleted file mode 100644 index 7fa2340..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/.svn/text-base/SubQuery.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.dto.query; - -import java.io.Serializable; - -/** - * Objeto que contiene la definicion de un subquery asociado a un bean. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class SubQuery implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * Nombre del bean, asociado a una tabla a utilziar en el subquery. - */ - private String beanname; - /** - * Campo a consultar en el subquery. - */ - private String field; - /** - * Nombre con el cual se entrega la respuesta, si el alias es null toma el valor de campo. - */ - private String alias; - /** - * Where con el cual se ejecuta el subquery.
      - * Ejemplo considera i.pk.pais = t.pk.pais and i.provincia = t.provincia.
      - * siempre va (i) para el bean del subquery y (t) para la tabla externa. - */ - private String where; - - /** - * Crea una instancia de SubQuery. - * @param beanname Nombre del bean con el que se realiza el subquery. - * @param campo Nombre de campo a consultar. - * @param alias Alias con el cual se entrega la respuesta. - * @param filtro Filtro a utilziar en el subquery. - * @throws Exception - */ - public SubQuery(String beanname, String field, String alias, String joinFields) throws Exception { - this.beanname = beanname; - this.field = field; - this.alias = alias; - if (this.alias == null) { - this.alias = this.field; - } - where = " where " + joinFields; - } - - public String getSubQuery() throws Exception { - return "(select i." + field + " from " + beanname + " i " + where + ")"; - } - - /** - * Entrega el valor de: beanname - * @return String - */ - public String getBeanname() { - return beanname; - } - - /** - * Fija el valor de: beanname - * @param Valor a fijar en el atributo. - */ - public void setBeanname(String beanname) { - this.beanname = beanname; - } - - /** - * Entrega el valor de: field - * @return String - */ - public String getField() { - return field; - } - - /** - * Fija el valor de: field - * @param Valor a fijar en el atributo. - */ - public void setField(String field) { - this.field = field; - } - - /** - * Entrega el valor de: alias - * @return String - */ - public String getAlias() { - return alias; - } - - /** - * Fija el valor de: alias - * @param Valor a fijar en el atributo. - */ - public void setAlias(String alias) { - this.alias = alias; - } - - /** - * Entrega el valor de: where - * @return String - */ - public String getWhere() { - return where; - } - - /** - * Fija el valor de: where - * @param Valor a fijar en el atributo. - */ - public void setWhere(String where) { - this.where = where; - } - - - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/entries deleted file mode 100644 index bae1b6a..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/query/menu -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MenuRequest.java -file - - - - -2022-07-28T03:40:33.289762Z -2a3dfa212f69e90e212029f79f548734 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -618 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/text-base/MenuRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/text-base/MenuRequest.java.svn-base deleted file mode 100644 index 3e326d7..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/query/menu/.svn/text-base/MenuRequest.java.svn-base +++ /dev/null @@ -1,35 +0,0 @@ -package com.fp.dto.query.menu; - -import com.fp.dto.Request; - -public class MenuRequest extends Request{ - private static final long serialVersionUID = 1L; - private String grouping; - private String criteria; - private int page=1; - - public String getCriteria() { - return criteria; - } - - public void setCriteria(String criteria) { - this.criteria = criteria; - } - - public String getGrouping() { - return grouping; - } - - public void setGrouping(String grouping) { - this.grouping = grouping; - } - - public int getPage() { - return page; - } - - public void setPage(int page) { - this.page = page; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/entries deleted file mode 100644 index cb2288b..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/quota -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Quota.java -file - - - - -2022-07-28T03:40:33.101761Z -d5840ed9f204d702d728759085eb4b1c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2570 - -QuotaDetail.java -file - - - - -2022-07-28T03:40:33.102761Z -55d77d5a375cd30871850e9f36aac3b1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7777 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/Quota.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/Quota.java.svn-base deleted file mode 100644 index c65a852..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/Quota.java.svn-base +++ /dev/null @@ -1,105 +0,0 @@ -package com.fp.dto.quota; - -import java.io.Serializable; - -import com.fp.dto.AbstractDataBalanceTransport; - -/** - * Clase utilitaria de la cabecera de tabla de cuotas, se utilzia para alamacenar valores temporales en los procesos - * ejemplo cobro de cuotas. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class Quota extends AbstractDataBalanceTransport implements Serializable, Cloneable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** Indica si paga uno o mas valores en la cuota, se utiliza para recorrer solo las cuotas pagadas del detail. */ - private boolean applyPayment = false; - - /** Indica que la cuota se paga en su totalidad y hay que actualiazar la fecha de pago. */ - private boolean fullPaymet = false; - - /** - * True indica que se genero historia del registro, se utiliza junto a fullpayment Si fullpayment == true && history - * == false se genera un registro de historia. - */ - private boolean history = false; - - /** True indica que se adiciono un nuevo registro. */ - private boolean added = false; - - /** - * Entrega el valor de: applyPayment - * - * @return boolean - */ - public boolean isApplyPayment() { - return this.applyPayment; - } - - /** - * Fija el valor de applyPayment - * - * @param applyPayment value to set - */ - public void setApplyPayment(boolean applyPayment) { - this.applyPayment = applyPayment; - } - - /** - * Entrega el valor de: fullPaymet - * - * @return boolean - */ - public boolean isFullPaymet() { - return this.fullPaymet; - } - - /** - * Fija el valor de fullPaymet - * - * @param fullPaymet value to set - */ - public void setFullPaymet(boolean fullPaymet) { - this.fullPaymet = fullPaymet; - } - - /** - * Entrega el valor de: history - * - * @return boolean - */ - public boolean isHistory() { - return this.history; - } - - /** - * Fija el valor de history - * - * @param history value to set - */ - public void setHistory(boolean history) { - this.history = history; - } - - /** - * Entrega el valor de: added - * - * @return boolean - */ - public boolean isAdded() { - return this.added; - } - - /** - * Fija el valor de added - * - * @param added value to set - */ - public void setAdded(boolean added) { - this.added = added; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/QuotaDetail.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/QuotaDetail.java.svn-base deleted file mode 100644 index 224909e..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/quota/.svn/text-base/QuotaDetail.java.svn-base +++ /dev/null @@ -1,304 +0,0 @@ -package com.fp.dto.quota; - -import java.io.Serializable; -import java.math.BigDecimal; - -import com.fp.dto.AbstractDataBalanceTransport; - -/** - * Clase utilitaria del detalle de uan cuota de la tabla de amortizacion, se utilzia para alamacenar valores temporales - * en los procesos ejemplo cobro de cuotas. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class QuotaDetail extends AbstractDataBalanceTransport implements Serializable, Cloneable { - - /** Version de la clase. */ - private static final long serialVersionUID = 1L; - - /** Indica que se hace un pago al tipo de saldo del detalle de la cuota. */ - private boolean applyPayment = false; - - /** Valor que se paga por tipo de saldo, con este valor se arma el financiero. */ - private BigDecimal paymentValue = BigDecimal.ZERO; - - /** Valor adeudado para el tipo de saldo. */ - private BigDecimal debtValue = BigDecimal.ZERO; - - /** Indica que se hace un pago anticipado al tipo de saldo del detalle de la cuota. */ - private boolean applyProjectedValue = false; - - /** Valor a pagar por adelantado, en los tipos de saldo de provisiones. */ - private BigDecimal projectedValue = BigDecimal.ZERO; - - /** - * Indica que se caduca el registro por que se pago por completo, ejemplo, en cuotas vencidas se cobra el interes - * normal adeudado, en este caso se caduca el registro, los tipos de saldo que no son interes como cargos, si se - * cobra por completo se caduca el registro. - */ - private boolean expire = false; - - /** Indica que se paga por completo el valor adeudado de un tipo de saldo de la cuoata. */ - private boolean fullPaymet = false; - - /** - * Indica que actuliaza el valor de la provision a cero, cuando deja de provisionar una cuota, o cuando esta se paga - * completa. - */ - private boolean updateProvisionToZero = false; - - /** - * Almacena la defincion de cobro, asociado al registro de detalle de la cuota, con la definicion de de la - * transaccion se arma el financiero. - */ - private Object transactionPayment; - - /** Valor que a reversar en pagos con fecha valor. */ - private BigDecimal discountBackValue = BigDecimal.ZERO; - - /** Valor de tipos de saldo ACC que se cobra adelantado. */ - private BigDecimal advancedValue = BigDecimal.ZERO; - - /** - * True indica que se genero historia del registro. - */ - private boolean history = false; - - /** True indica que se adiciono un nuevo registro. */ - private boolean added = false; - - /** - * Entrega el valor de: applyPayment - * - * @return boolean - */ - public boolean isApplyPayment() { - return this.applyPayment; - } - - /** - * Fija el valor de applyPayment - * - * @param applyPayment value to set - */ - public void setApplyPayment(boolean applyPayment) { - this.applyPayment = applyPayment; - } - - /** - * Entrega el valor de: paymentValue - * - * @return BigDecimal - */ - public BigDecimal getPaymentValue() { - return this.paymentValue; - } - - /** - * Fija el valor de paymentValue - * - * @param paymentValue value to set - */ - public void setPaymentValue(BigDecimal paymentValue) { - this.paymentValue = paymentValue; - } - - /** - * Entrega el valor de: debtValue - * - * @return BigDecimal - */ - public BigDecimal getDebtValue() { - return this.debtValue; - } - - /** - * Fija el valor de debtValue - * - * @param debtValue value to set - */ - public void setDebtValue(BigDecimal debtValue) { - this.debtValue = debtValue; - } - - /** - * Entrega el valor de: applyProjectedValue - * - * @return boolean - */ - public boolean isApplyProjectedValue() { - return this.applyProjectedValue; - } - - /** - * Fija el valor de applyProjectedValue - * - * @param applyProjectedValue value to set - */ - public void setApplyProjectedValue(boolean applyProjectedValue) { - this.applyProjectedValue = applyProjectedValue; - } - - /** - * Entrega el valor de: projectedValue - * - * @return BigDecimal - */ - public BigDecimal getProjectedValue() { - return this.projectedValue; - } - - /** - * Fija el valor de projectedValue - * - * @param projectedValue value to set - */ - public void setProjectedValue(BigDecimal projectedValue) { - this.projectedValue = projectedValue; - } - - /** - * Entrega el valor de: expire - * - * @return boolean - */ - public boolean isExpire() { - return this.expire; - } - - /** - * Fija el valor de expire - * - * @param expire value to set - */ - public void setExpire(boolean expire) { - this.expire = expire; - } - - /** - * Entrega el valor de: fullPaymet - * - * @return boolean - */ - public boolean isFullPaymet() { - return this.fullPaymet; - } - - /** - * Fija el valor de fullPaymet - * - * @param fullPaymet value to set - */ - public void setFullPaymet(boolean fullPaymet) { - this.fullPaymet = fullPaymet; - } - - /** - * Entrega el valor de: updateProvisionToZero - * - * @return boolean - */ - public boolean isUpdateProvisionToZero() { - return this.updateProvisionToZero; - } - - /** - * Fija el valor de updateProvisionToZero - * - * @param updateProvisionToZero value to set - */ - public void setUpdateProvisionToZero(boolean updateProvisionToZero) { - this.updateProvisionToZero = updateProvisionToZero; - } - - /** - * Entrega el valor de: transactionPayment - * - * @return Object - */ - public Object getTransactionPayment() { - return this.transactionPayment; - } - - /** - * Fija el valor de transactionPayment - * - * @param transactionPayment value to set - */ - public void setTransactionPayment(Object transactionPayment) { - this.transactionPayment = transactionPayment; - } - - /** - * Entrega el valor de: discountBackValue - * - * @return BigDecimal - */ - public BigDecimal getDiscountBackValue() { - return this.discountBackValue; - } - - /** - * Fija el valor de discountBackValue - * - * @param discountBackValue value to set - */ - public void setDiscountBackValue(BigDecimal discountBackValue) { - this.discountBackValue = discountBackValue; - } - - /** - * Entrega el valor de: advancedValue - * - * @return BigDecimal - */ - public BigDecimal getAdvancedValue() { - return this.advancedValue; - } - - /** - * Fija el valor de advancedValue - * - * @param advancedValue value to set - */ - public void setAdvancedValue(BigDecimal advancedValue) { - this.advancedValue = advancedValue; - } - - /** - * Entrega el valor de: history - * - * @return boolean - */ - public boolean isHistory() { - return this.history; - } - - /** - * Fija el valor de history - * - * @param history value to set - */ - public void setHistory(boolean history) { - this.history = history; - } - - /** - * Entrega el valor de: added - * - * @return boolean - */ - public boolean isAdded() { - return this.added; - } - - /** - * Fija el valor de added - * - * @param added value to set - */ - public void setAdded(boolean added) { - this.added = added; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/entries deleted file mode 100644 index f83973e..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/entries +++ /dev/null @@ -1,269 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/rules -svn://172.17.26.185/COMACO - - - -2014-10-30T07:13:48.982625Z -2214 -wpatino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Service.java -file - - - - -2022-07-28T03:40:33.239762Z -a60552f7873500355326f70acdc576e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -499 - -ReportRule.java -file - - - - -2022-07-28T03:40:33.239762Z -e70ff0da34ee3faf0ffabbbe9a10b4d7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -907 - -ScheduleRule.java -file - - - - -2022-07-28T03:40:33.239762Z -b7ac3f321c6d9067347b81295661b351 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -475 - -ExceptionRule.java -file - - - - -2022-07-28T03:40:33.239762Z -4a709fac0638dae4728ff4b454d7e80f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -598 - -AbstractRule.java -file - - - - -2022-07-28T03:40:33.239762Z -d82fc4655d376e16f3c1e67f4f9c8f0f -2014-10-30T07:13:48.982625Z -2214 -wpatino - - - - - - - - - - - - - - - - - - - - - -1150 - -QueryRule.java -file - - - - -2022-07-28T03:40:33.240762Z -6d1a9c962680231531da701b87cc9963 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -825 - -TransactionRule.java -file - - - - -2022-07-28T03:40:33.240762Z -7fa08f61107ddb7da883d7413d6a4ab8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1390 - -com -dir - diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/AbstractRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/AbstractRule.java.svn-base deleted file mode 100644 index c0db9a5..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/AbstractRule.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ -package com.fp.dto.rules; - -import java.io.Serializable; - -import com.fp.dto.Request; - -public abstract class AbstractRule implements Serializable { - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - public abstract Request execute(Request pRequest) throws Exception; - - protected String rule; - - /** - * Entrega el valor de rule - * - * @return Valor de rule - */ - public String getRule() { - return this.rule; - } - - /** - * Fija un nuevo valor en rule - * - * @param rule nuevo valor para rule - */ - public void setRule(String rule) { - this.rule = rule; - } - - /** - * Entrega el valor de flow - * - * @return Valor de flow - */ - public String getFlow() { - return this.flow; - } - - /** - * Fija un nuevo valor en flow - * - * @param flow nuevo valor para flow - */ - public void setFlow(String flow) { - this.flow = flow; - } - - protected String flow; - - - protected boolean isNew(Request pRequest) throws Exception { - return ("" + pRequest.get("isnew")).compareTo("Y") == 0; - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ExceptionRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ExceptionRule.java.svn-base deleted file mode 100644 index c1608c9..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ExceptionRule.java.svn-base +++ /dev/null @@ -1,20 +0,0 @@ -package com.fp.dto.rules; - -import com.fp.dto.save.SaveRequest; - -/** - * Interface a implemntar por los comandos que generan excepciones de autorizacion en las solicitudes. - * @author Jorge Vaca - * @version 2.1 - */ -public interface ExceptionRule { - - /** - * Implementa logica de negocio a invocar cuando una transaccion se ejecuta en modo normal. - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @return String Condicion de la excepcion. - * @throws Exception - */ - public String execute(SaveRequest pSaveRequest) throws Exception; - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/QueryRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/QueryRule.java.svn-base deleted file mode 100644 index 277f943..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/QueryRule.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -package com.fp.dto.rules; - -import com.fp.dto.Request; -import com.fp.dto.query.QueryRequest; - -/** - * Clase a extender por las clases que se encargan de ejecutar consultas especiales. - * - * @author Jorge Vaca - * @version 2.1 - * - */ -public abstract class QueryRule extends AbstractRule { - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - /** - * Implementa logica de negocio a invocar para ejecutar consultas especiales. - * - * @param pQueryRequest Objeto con beans utilizados en el proceso de consulta. - * @throws Exception - */ - public abstract QueryRequest process(QueryRequest pQueryRequest) throws Exception; - - @Override - public Request execute(Request pRequest) throws Exception { - return this.process((QueryRequest) pRequest); - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ReportRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ReportRule.java.svn-base deleted file mode 100644 index 4ece468..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ReportRule.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.dto.rules; - -import com.fp.dto.Request; -import com.fp.dto.query.QueryRequest; - -/** - * Clase a extender por las clases que se encargan de llenar tablas temporales a utilizar en reportes. - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class ReportRule extends AbstractRule { - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - /** - * Implementa logica de negocio a invocar para ejecutar comandos que llenan tablas para reportes especiale. - * - * @param pQueryRequest Objeto con datos utilizados en la ejecucion de un reportes. - * @throws Exception - */ - public abstract QueryRequest process(QueryRequest pQueryRequest) throws Exception; - - @Override - public Request execute(Request pRequest) throws Exception { - return this.process((QueryRequest) pRequest); - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ScheduleRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ScheduleRule.java.svn-base deleted file mode 100644 index 0b479a7..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/ScheduleRule.java.svn-base +++ /dev/null @@ -1,18 +0,0 @@ -package com.fp.dto.rules; - -import com.fp.dto.save.SaveRequest; -/** - * Interface a implemntar por los comandos que se ejecutan procesos calendarizados. - * @author Jorge Vaca - * @version 2.1 - */ -public interface ScheduleRule { - - /** - * Implementa logica de negocio de tareas calendarizadas. - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @throws Exception - */ - public void execute(SaveRequest pSaveRequest) throws Exception; - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/Service.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/Service.java.svn-base deleted file mode 100644 index 548386e..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/Service.java.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -package com.fp.dto.rules; - -/** - * Clase a extender por las reglas de negocio que levantan demonios o servicios, ejemplo contabilizacion, task server, Scheduler - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class Service { - - /**Metodo que levanta un demonio.*/ - public abstract void start() throws Exception; - /**Metodo que detiene o para un demonio.*/ - public abstract void stop() throws Exception; - /**Metodo que indica .*/ - public abstract boolean isrunning() throws Exception; -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/TransactionRule.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/TransactionRule.java.svn-base deleted file mode 100644 index 6ae96df..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/.svn/text-base/TransactionRule.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.dto.rules; - -import com.fp.dto.Request; -import com.fp.dto.save.SaveRequest; - -/** - * Clase a extender por los comandos que se ejecutan a nivel de transaccion. - * - * @author Jorge Vaca - * @version 2.1 - */ -public abstract class TransactionRule extends AbstractRule { - - /** - * serialVersionUID - */ - private static final long serialVersionUID = 1L; - - /** - * Implementa logica de negocio a invocar cuando una transaccion se ejecuta en modo normal. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @return SaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @throws Exception - */ - public abstract SaveRequest normalProcess(SaveRequest pSaveRequest) throws Exception; - - /** - * Implementa logica de negocio a invocar cuando una transaccion se ejecuta en modo reverso. - * - * @param pSaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @return SaveRequest Objeto con beans utilizados en el proceso de una transaccion. - * @throws Exception - */ - public abstract SaveRequest reverseProcess(SaveRequest pSaveRequest) throws Exception; - - @Override - public Request execute(Request pRequest) throws Exception { - return this.normalProcess((SaveRequest) pRequest); - } -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/com/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/rules/com/.svn/entries deleted file mode 100644 index c4e234b..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/rules/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/.svn/entries deleted file mode 100644 index baad2ab..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -dto -dir - diff --git a/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/dto/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/dto/.svn/entries deleted file mode 100644 index 3456596..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/dto/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/rules/com/fp/dto -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/entries b/base/dto/dto/src/main/java/com/fp/dto/save/.svn/entries deleted file mode 100644 index 77f9327..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/com/fp/dto/save -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SaveBean.java -file - - - - -2022-07-28T03:40:33.270762Z -cbde94016dcfd7b16e0db38d35616aaf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6146 - -DtoSave.java -file - - - - -2022-07-28T03:40:33.270762Z -a98f27118cace9ae8d8c22b32d69bdc5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8413 - -SaveRequest.java -file - - - - -2022-07-28T03:40:33.270762Z -883e6ef5f4f68c5781a022d8709cba95 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8760 - diff --git a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/DtoSave.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/DtoSave.java.svn-base deleted file mode 100644 index 14b9605..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/DtoSave.java.svn-base +++ /dev/null @@ -1,327 +0,0 @@ -package com.fp.dto.save; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.sql.Date; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import com.fp.dto.AbstractDataTransport; - -/** - * Dto de transporte utilizado en insercin, eliminacin, actualizacin de datos en la base, adicionalmente permite - * transportar informacin desde el front end, la misma que ser utilizada en componentes de mantenimiento implementados - * en el back end.e. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class DtoSave implements Serializable { - - private static final long serialVersionUID = 2802444515156689856L; - - /** Nombre del bean a dar mantenimiento insert, update delete o financieros. */ - private String beanname; - - /** Lista de registros a eliminar de en la base de datos. */ - private final List ldeleted = new ArrayList(); - - /** Lista de registros a insertar en la base de datos. */ - private List linsert = new ArrayList(); - - /** Lista de objetos a modificar en la base de datos. */ - private List> lupdated = new ArrayList>(); - - /** Posicion de grabado de los registros, por tabla */ - private Integer position; - - /** Datos adicionales utilizados en el mantenimiento */ - private HashMap mdata = new HashMap(); - - /** - * Atributo para identificar si enviamos un form - */ - private boolean isForm; - - private boolean returnpk = false; - - /** - * Crea una instancia de DtoSave. - */ - public DtoSave() { - } - - public void put(String key, Object value) { - mdata.put(key, value); - } - - public Object get(String key) { - return mdata.get(key); - } - - /** - * Entrega un valor tipo String de un map. - * - * @param key Key del map a obtener un valor. - * @return String - */ - public String getString(Object key) { - // Si el valor en null retorna null. - return (String) mdata.get(key); - } - - /** - * Entrega un valor tipo Date de un map. - * - * @param key Key del map a obtener un valor. - * @return Date - */ - public Date getDate(Object key) { - return (Date) mdata.get(key); - } - - /** - * Entrega un valor tipo Integer de un map. - * - * @param key Key del map a obtener un valor. - * @return Integer - */ - public Integer getInteger(Object key) { - try { - return Integer.valueOf(mdata.get(key).toString()); - } catch (NumberFormatException e) { - // Tiene que retornar null las clases internamete tienen validaciones. - return null; - } catch (NullPointerException e) { - return null; - } - - } - - /** - * Entrega un valor tipo Long de un map. - * - * @param key Key del map a obtener un valor. - * @return Long - */ - public Long getLong(Object key) { - try { - return Long.valueOf(mdata.get(key).toString()); - } catch (NumberFormatException e) { - // Tiene que retornar null las clases internamete tienen validaciones. - return null; - } catch (NullPointerException e) { - return null; - } - } - - /** - * Entrega un valor tipo Long de un map. - * - * @param key Key del map a obtener un valor. - * @return Long - */ - public BigDecimal getBigDecimal(Object key) { - try { - return BigDecimal.valueOf(Double.valueOf(mdata.get(key).toString())); - } catch (NumberFormatException e) { - // Tiene que retornar null las clases internamete tienen validaciones. - return null; - } catch (NullPointerException e) { - return null; - } - } - - /** - * Metodo que adiciona registros a crear en la base. - * - * @param lnew Lista de datos a insertar en la base. - * @throws Exception - */ - public final void addNew(List lnew) throws Exception { - if (lnew.isEmpty()) { - return; - } - linsert.addAll(lnew); - } - - /** - * Metodo que adiciona registros a actualizar en la base. - * - * @param lupdate Lista de datos a modificar en la base. - * @throws Exception - */ - public final void addUpdated(List> lupdate) throws Exception { - if (lupdate.isEmpty()) { - return; - } - lupdated.addAll(lupdate); - } - - /** - * Metodo que adiciona registros a eliminar de la base. - * - * @param ldelete Lista de datos a eliminar en la base. - * @throws Exception - */ - public final void addDeleted(List ldelete) throws Exception { - if (ldelete.isEmpty()) { - return; - } - ldeleted.addAll(ldelete); - } - - /** - * Metodo que verifica que el bean tenga acciones a realizar en la base. - * - * @return boolean. - * @throws Exception - */ - public boolean pendingProcess() throws Exception { - if (linsert.isEmpty() && lupdated.isEmpty() && ldeleted.isEmpty()) { - return false; - } - return true; - } - - /** - * Entrega el valor de: beanname - * - * @return String - */ - public String getBeanname() { - return beanname; - } - - /** - * Fija el valor de: beanname - * - * @param Valor a fijar en el atributo. - */ - public void setBeanname(String beanname) { - this.beanname = beanname; - } - - /** - * Entrega el valor de: linsert - * - * @return List - */ - public List getLinsert() { - return linsert; - } - - /** - * Fija el valor de: linsert - * - * @param Valor a fijar en el atributo. - */ - public void setLinsert(List linsert) { - this.linsert = linsert; - } - - /** - * Entrega el valor de: lupdated - * - * @return List> - */ - public List> getLupdated() { - return lupdated; - } - - /** - * Fija el valor de: lupdated - * - * @param Valor a fijar en el atributo. - */ - public void setLupdated(List> lupdated) { - this.lupdated = lupdated; - } - - /** - * Entrega el valor de: position - * - * @return Integer - */ - public Integer getPosition() { - return position; - } - - /** - * Fija el valor de: position - * - * @param Valor a fijar en el atributo. - */ - public void setPosition(Integer position) { - this.position = position; - } - - /** - * Entrega el valor de: mdata - * - * @return HashMap - */ - public HashMap getMdata() { - return mdata; - } - - /** - * Fija el valor de: mdata - * - * @param Valor a fijar en el atributo. - */ - public void setMdata(HashMap mdata) { - this.mdata = mdata; - } - - /** - * Entrega el valor de: returnpk - * - * @return boolean - */ - public boolean isReturnpk() { - return returnpk; - } - - /** - * Fija el valor de: returnpk - * - * @param Valor a fijar en el atributo. - */ - public void setReturnpk(boolean returnpk) { - this.returnpk = returnpk; - } - - /** - * Entrega el valor de: ldeleted - * - * @return List - */ - public List getLdeleted() { - List l = new ArrayList(); - for (AbstractDataTransport obj : ldeleted) { - l.add(obj); - } - return l; - } - - /** - * Entrega V/F si es formulario - * - * @return isForm V/F - */ - public boolean isIsForm() { - return isForm; - } - - /** - * Fija V/F si es formulario - * - * @param isForm V/F - */ - public void setIsForm(boolean isForm) { - this.isForm = isForm; - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveBean.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveBean.java.svn-base deleted file mode 100644 index bf05ce3..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveBean.java.svn-base +++ /dev/null @@ -1,253 +0,0 @@ -package com.fp.dto.save; - -import java.util.ArrayList; -import java.util.List; - -import com.fp.dto.AbstractData; -import com.fp.dto.AbstractDataTransport; - -public class SaveBean extends AbstractData { - - private static final long serialVersionUID = 1L; - - /** Alias del bean, utilizado como key en los map, si no llega el alias, el key es el nombre del bean. */ - private String beanAlias; - - /** Clase asociada al bean. */ - private String beanName; - - /** Lista de registros modificados de un bean asociado a una tabla. */ - private List modifiedRecords = new ArrayList(); - - /** Lista de registros a eliminar de la basse de datos. */ - private List deletedRecords = new ArrayList(); - - /** Objeto asociado a un registro de una tabla a insertar o actualizar en la base de datos. */ - private Object modifiedObject; - - /** Objeto asociado a un registro de una tabla a eliminar la base de datos. */ - private Object deletedObject; - - /** Orden del insert o update del objeto cuando se envia la base de datos. */ - private Integer position; - - /** true, indica que el registro se almacena en la base de datos, false no se almacena. */ - private boolean save = true; - - /** - * Crea una instancia de SaveBean. - */ - public SaveBean() { - } - - /** - * Crea una instancia de SaveBean, dado el alias del bean. - * - * @param beanName Alias del bean. - */ - public SaveBean(String beanName) { - this.beanName = beanName; - this.beanAlias = beanName; - } - - /** - * Entrega el valor de: beanAlias - * - * @return String - */ - public String getBeanAlias() { - if (beanAlias == null) { - return this.getBeanName(); - } - return beanAlias; - } - - /** - * Fija el valor de: beanAlias - * - * @param beanAlias - */ - public void setBeanAlias(String beanAlias) { - this.beanAlias = beanAlias; - } - - /** - * Entrega el valor de: beanName - * - * @return String - */ - public String getBeanName() { - return beanName; - } - - /** - * Fija el valor de: beanName - * - * @param beanName - */ - public void setBeanName(String beanName) { - this.beanName = beanName; - } - - /** - * Adiciona un elemento a la lista de objetos modificados. - * - * @param pObject Objeto a adicionar a la lista de registros modificados a enviar a almacenar en la base de datos. - * @throws Exception - */ - public void addModifiedObject(Object pObject) throws Exception { - modifiedRecords.add(pObject); - } - - public void addModifiedObject(List ldata) throws Exception { - if(!ldata.isEmpty() && ldata.size() == 1){ - modifiedObject = ldata.get(0) ; - return; - } - for (AbstractDataTransport obj : ldata) { - obj.addAddtionalInfo("isnew", "Y"); - modifiedRecords.add(obj); - } - } - - public void addModified(List ldata, boolean isForm) throws Exception { - if(!ldata.isEmpty() && ldata.size() == 1 && isForm){ - modifiedObject = ldata.get(0) ; - return; - } - for (Object object : ldata) { - AbstractDataTransport obj = (AbstractDataTransport)object; - modifiedRecords.add(obj); - } - } - - public void addInsertObject(List ldata, boolean isForm) throws Exception { - if(!ldata.isEmpty() && ldata.size() == 1 && isForm){ - modifiedObject = ldata.get(0) ; - return; - } - for (AbstractDataTransport obj : ldata) { - obj.addAddtionalInfo("isnew", "Y"); - modifiedRecords.add(obj); - } - } - - /** - * Entrega el valor de: modifiedRecords - * - * @return List - */ - public List getModifiedRecords() { - return modifiedRecords; - } - - /** - * Fija el valor de: modifiedRecords - * - * @param modifiedRecords - */ - public void setModifiedRecords(List modifiedRecords) { - this.modifiedRecords = modifiedRecords; - } - - /** - * Entrega el valor de: deletedRecords - * - * @return List - */ - public List getDeletedRecords() { - return deletedRecords; - } - - /** - * Fija el valor de: deletedRecords - * - * @param deletedRecords - */ - public void setDeletedRecords(List deletedRecords) { - this.deletedRecords = deletedRecords; - } - - /** - * Entrega el valor de: modifiedObject - * - * @return Object - */ - public Object getModifiedObject() { - return modifiedObject; - } - - /** - * Fija el valor de modifiedObject - * - * @param modifiedObject value to set - */ - public void setModifiedObject(Object modifiedObject) { - this.modifiedObject = modifiedObject; - } - - /** - * Entrega el valor de: deletedObject - * - * @return Object - */ - public Object getDeletedObject() { - return deletedObject; - } - - /** - * Fija el valor de deletedObject - * - * @param deletedObject value to set - */ - public void setDeletedObject(Object deletedObject) { - this.deletedObject = deletedObject; - } - - /** - * Entrega el valor de: position - * - * @return Integer - */ - public Integer getPosition() { - return position; - } - - /** - * Fija el valor de: position - * - * @param position - */ - public void setPosition(Integer position) { - this.position = position; - } - - /** - * Entrega el valor de: save - * - * @return the save - */ - public boolean isSave() { - return save; - } - - /** - * Fija el valor de: save - * - * @param save the save to set - */ - public void setSave(boolean save) { - this.save = save; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return "SaveBean:" + this.beanName + " d:" + this.deletedRecords.size() + " m:" + this.modifiedRecords.size(); - } - -} diff --git a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveRequest.java.svn-base b/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveRequest.java.svn-base deleted file mode 100644 index e3c83bc..0000000 --- a/base/dto/dto/src/main/java/com/fp/dto/save/.svn/text-base/SaveRequest.java.svn-base +++ /dev/null @@ -1,298 +0,0 @@ -package com.fp.dto.save; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import com.fp.dto.Request; -import com.fp.dto.fin.FinancialRequest; - -/** - * Clase que contiene beans de insert o update de datos en la base. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class SaveRequest extends Request { - - private static final long serialVersionUID = 1L; - - /** - * indica si la consulta se origina en una pagina jsf. - */ - private boolean jsf = false; - - /** Lista de nombres de beans a almacenar en la base de datos. */ - private final List lOrderPersistentBeans = new ArrayList(); - - /* - * (non-Javadoc) - * - * @see java.util.HashMap#put(java.lang.Object, java.lang.Object) - */ - @Override - public Object put(String key, Object value) { - if (key.compareTo("beans") == 0) { - return value; - } - return super.put(key, value); - } - - /** - * Adiciona un objeto SaveBean persistente al request. - * - * @param key Alias del objeto, es el mismo que el namebean del objeto SaveBean. - * @param pObject Objeto a adicionar al SaveRequest. - * @param pPosition Posicion del objeto para grabar en la base de datos. - * @return Object - */ - @SuppressWarnings("unchecked") - public Object putSaveBean(String key, Object pObject, Integer pPosition) throws Exception { - SaveBean saveBean = null; - if (pObject instanceof SaveBean) { - saveBean = (SaveBean) pObject; - } else { - saveBean = new SaveBean(key); - if (pObject instanceof List) { - saveBean.setModifiedRecords((List) pObject); - } else { - saveBean.setModifiedObject(pObject); - } - saveBean.setPosition(pPosition); - } - if (key.compareTo("beans") == 0) { - return pObject; - } - if (pPosition == null) { - this.addObjecttoList(key); - } else { - int index = --pPosition; - if ((lOrderPersistentBeans.size() == 0) || (index > lOrderPersistentBeans.size())) { - this.addObjecttoList(key); - } else { - this.addObjecttoList(key, index); - } - } - return super.put(key, saveBean); - } - - /** - * Adiciona un key de un objeto a la lista de beans persistentes, si existe en la lista elimina el registro y lo - * adiciona. - * - * @param key Key a almacenar en la lista. - * @throws Exception - */ - private void addObjecttoList(String key) throws Exception { - if (lOrderPersistentBeans.contains(key)) { - lOrderPersistentBeans.remove(key); - } - lOrderPersistentBeans.add(key); - } - - /** - * Adiciona un key de un objeto a la lista de beans persistentes, si existe en la lista elimina el registro y lo - * adiciona. - * - * @param key Key a almacenar en la lista. - * @param index Indice con el que se almacena el key en la lista. - * @throws Exception - */ - private void addObjecttoList(String key, Integer index) throws Exception { - if (lOrderPersistentBeans.contains(key)) { - lOrderPersistentBeans.remove(key); - } - lOrderPersistentBeans.add(index, key); - } - - /** - * Adiciona un objeto SaveBean persistente al request. - * - * @param key Alias del objeto, es el mismo que el namebean del objeto SaveBean. - * @param pObject Objeto a adicionar al SaveRequest. - * @return Object - */ - @SuppressWarnings("unchecked") - public Object putSaveBean(String key, Object pObject) throws Exception { - SaveBean saveBean = null; - if (pObject instanceof SaveBean) { - saveBean = (SaveBean) pObject; - if (saveBean.getPosition() != null) { - return this.putSaveBean(key, pObject, saveBean.getPosition()); - } - } else { - saveBean = new SaveBean(key); - if (pObject instanceof List) { - saveBean.setModifiedRecords((List) pObject); - } else { - saveBean.setModifiedObject(pObject); - } - } - if (key.compareTo("beans") == 0) { - return pObject; - } - this.addObjecttoList(key); - return super.put(key, saveBean); - } - - /** - * Entrega un objeto SaveBean dado el key. - * - * @param pKey Key a buscar y entregarr el objeto. - * @return SaveBean - * @throws Exception - */ - public SaveBean getSaveBeanOLD(Object pKey) throws Exception { - return (SaveBean) super.get(pKey); - } - - /** - * Entrega un objeto SaveBean dado el key. - * - * @param pKey Key a buscar y entregarr el objeto. - * @return SaveBean - * @throws Exception - */ - public Object getSaveBeanModifiedObject(Object pKey) throws Exception { - try { - SaveBean sb = (SaveBean) super.get(pKey); - if (sb != null) { - return sb.getModifiedObject(); - } - } catch (ClassCastException e) { - return null; - } - return null; - } - - /** - * Entrega un SaveBean dato el key del objeto. Si no existe el objeto entrega null; - * - * @param pKey Key del objeto a buscar. - * @return SaveBean - * @throws Exception - */ - public SaveBean getSaveBean(Object pKey) throws Exception { - try { - return (SaveBean) super.get(pKey); - } catch (Exception e) { - return null; - } - } - - /** - * Entrega una Lista de registros modificados dado el key. - * - * @param pKey Key a buscar y entregarr el objeto. - * @return List - * @throws Exception - */ - public List getSaveBeanModifiedRecords(Object pKey) throws Exception { - List lObjects = null; - try { - SaveBean sb = (SaveBean) super.get(pKey); - if (sb == null) { - return lObjects; - } else { - lObjects = sb.getModifiedRecords(); - } - return lObjects; - } catch (ClassCastException e) { - return null; - } - - } - - /** - * Entrega una Lista de registros marcados para eliminar dado el key. - * - * @param pKey Key a buscar y entregarr el objeto. - * @return List - * @throws Exception - */ - public List getSaveBeanDeletedRecords(Object pKey) throws Exception { - List lObjects = null; - try { - SaveBean sb = (SaveBean) super.get(pKey); - if (sb == null) { - return lObjects; - } else { - lObjects = sb.getDeletedRecords(); - } - return lObjects; - } catch (ClassCastException e) { - return null; - } - } - - /** - * Entrega el valor de: beans - * - * @return Map - */ - public Map getBeans() { - Map beans = new HashMap(); - Set keys = super.keySet(); - for (String key : keys) { - Object obj = super.get(key); - if (obj instanceof SaveBean) { - beans.put(key, (SaveBean) obj); - } - } - return beans; - } - - /** - * Metodo que entrega un objeto FinancialRequest, que contiene informacion necesaria para procesar una transaccion - * financiera. - * - * @return FinancialRequest Dto que permite ejecutar transacciones financieras. - * @throws Exception - */ - public FinancialRequest getFinancialRequest() throws Exception { - FinancialRequest frequest = (FinancialRequest) this.getSaveBeanModifiedObject("FINANCIAL"); - if (frequest == null) { - return frequest; - } - super.completeFinancialRequest(frequest); - return frequest; - } - - @Override - public Set> entrySet() { - super.entrySet(); - super.remove("beans"); - return super.entrySetDefault(); - } - - /** - * Entrega una lista con el nombre de los SaveBean a realizar sentencias DML en la base de datos. - * - * @return List - * @throws Exception - */ - public List getLOrderPersistentBeans() throws Exception { - return lOrderPersistentBeans; - } - - /** - * Entrega el valor de: jsf - * - * @return boolean - */ - public boolean isJsf() { - return jsf; - } - - /** - * Fija el valor de: jsf - * - * @param Valor a fijar en el atributo. - */ - public void setJsf(boolean jsf) { - this.jsf = jsf; - } - -} diff --git a/base/dto/dto/src/main/java/test/.svn/entries b/base/dto/dto/src/main/java/test/.svn/entries deleted file mode 100644 index 6d8c8b9..0000000 --- a/base/dto/dto/src/main/java/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/dto/dto/src/main/java/test/com/.svn/entries b/base/dto/dto/src/main/java/test/com/.svn/entries deleted file mode 100644 index 888299a..0000000 --- a/base/dto/dto/src/main/java/test/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/test/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/dto/dto/src/main/java/test/com/fp/.svn/entries b/base/dto/dto/src/main/java/test/com/fp/.svn/entries deleted file mode 100644 index ade3cfd..0000000 --- a/base/dto/dto/src/main/java/test/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/test/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -json -dir - diff --git a/base/dto/dto/src/main/java/test/com/fp/json/.svn/entries b/base/dto/dto/src/main/java/test/com/fp/json/.svn/entries deleted file mode 100644 index 4705307..0000000 --- a/base/dto/dto/src/main/java/test/com/fp/json/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/java/test/com/fp/json -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TestingBean.java -file - - - - -2022-07-28T03:40:32.861760Z -2686393862dc0e24fb4720abc2d45d49 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1714 - -TestingBean1.java -file - - - - -2022-07-28T03:40:32.861760Z -aeed3939deb6737503dd6adbe257eaf4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -893 - -TestingBeanKey.java -file - - - - -2022-07-28T03:40:32.861760Z -fcb0372cf587e07ac0fb80dfc686bdcf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -530 - diff --git a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base b/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base deleted file mode 100644 index 206442b..0000000 --- a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean.java.svn-base +++ /dev/null @@ -1,99 +0,0 @@ -package test.com.fp.json; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import com.fp.dto.AbstractDataTransport; - -public class TestingBean extends AbstractDataTransport implements Cloneable { - - /** - * - */ - private static final long serialVersionUID = 1L; - private Date date; - private Timestamp timestamp; - private String string; - private int entero; - private BigDecimal amount; - private boolean flag; - private TestingBeanKey pk; - - public TestingBean() { - - } - - public TestingBean(Date date, Timestamp timestamp, String string, int entero, BigDecimal amount, boolean flag) { - this.date = date; - this.timestamp = timestamp; - this.string = string; - this.entero = entero; - this.amount = amount; - this.flag = flag; - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - TestingBean p = (TestingBean) this.clone(); - return p; - } - - public BigDecimal getAmount() { - return amount; - } - - public Date getDate() { - return date; - } - - public int getEntero() { - return entero; - } - - public TestingBeanKey getPk() { - return pk; - } - - public String getString() { - return string; - } - - public Timestamp getTimestamp() { - return timestamp; - } - - public boolean isFlag() { - return flag; - } - - public void setAmount(BigDecimal amount) { - this.amount = amount; - } - - public void setDate(Date date) { - this.date = date; - } - - public void setEntero(int entero) { - this.entero = entero; - } - - public void setFlag(boolean flag) { - this.flag = flag; - } - - public void setPk(TestingBeanKey pk) { - this.pk = pk; - } - - public void setString(String string) { - this.string = string; - } - - public void setTimestamp(Timestamp timestamp) { - this.timestamp = timestamp; - } - - -} diff --git a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base b/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base deleted file mode 100644 index 00707ae..0000000 --- a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBean1.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package test.com.fp.json; - -import com.fp.dto.AbstractDataTransport; - -public class TestingBean1 extends AbstractDataTransport implements Cloneable { - - /** - * - */ - private static final long serialVersionUID = 1L; - private String string; - private int entero; - private long pk; - - public TestingBean1() { - - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - TestingBean1 p = (TestingBean1) this.clone(); - return p; - } - - public TestingBean1(String string, int entero, long pk) { - this.string = string; - this.entero = entero; - this.pk = pk; - } - - public int getEntero() { - return entero; - } - - public void setEntero(int entero) { - this.entero = entero; - } - - public long getPk() { - return pk; - } - - public void setPk(long pk) { - this.pk = pk; - } - - public String getString() { - return string; - } - - public void setString(String string) { - this.string = string; - } - -} diff --git a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base b/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base deleted file mode 100644 index 6969def..0000000 --- a/base/dto/dto/src/main/java/test/com/fp/json/.svn/text-base/TestingBeanKey.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package test.com.fp.json; - -import com.fp.dto.hb.HibernateId; - -public class TestingBeanKey implements HibernateId{ - private String campo1; - private Long campo2; - - public TestingBeanKey() { - } - - public TestingBeanKey(String campo1, Long campo2) { - this.campo1 = campo1; - this.campo2 = campo2; - } - - public String getCampo1() { - return campo1; - } - - public Long getCampo2() { - return campo2; - } - - public void setCampo1(String campo1) { - this.campo1 = campo1; - } - - public void setCampo2(Long campo2) { - this.campo2 = campo2; - } -} diff --git a/base/dto/dto/src/main/resources/.svn/entries b/base/dto/dto/src/main/resources/.svn/entries deleted file mode 100644 index e91144a..0000000 --- a/base/dto/dto/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/dto/dto/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/facade/.svn/dir-prop-base b/base/facade/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/facade/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/facade/.svn/entries b/base/facade/.svn/entries deleted file mode 100644 index 0649e69..0000000 --- a/base/facade/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:25.078727Z -f3b8b39cb6a7900054dc6aa3ed648429 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2528 - diff --git a/base/facade/.svn/text-base/pom.xml.svn-base b/base/facade/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index aa3f7b2..0000000 --- a/base/facade/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,85 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - facade - Facade - - - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - org.hibernate - hibernate-core - provided - - - org.hibernate - hibernate-entitymanager - provided - - - - commons-fileupload - commons-fileupload - - - com.fp.base - facadeclient - - - - com.fp.base.core - bpm - 2.1 - - - com.fp.base.dto - dto - 2.1 - provided - - - log4j - log4j - provided - - - com.fp.base.dto - common - 2.1 - provided - - - com.fp.base.business - general - 2.1 - - - com.fp.base.persistence - util - 2.1 - - - net.sf.json-lib - json-lib - provided - - - xom - xom - provided - - - diff --git a/base/facade/src/.svn/entries b/base/facade/src/.svn/entries deleted file mode 100644 index 8b00fe0..0000000 --- a/base/facade/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/facade/src/main/.svn/entries b/base/facade/src/main/.svn/entries deleted file mode 100644 index cd58e5a..0000000 --- a/base/facade/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/facade/src/main/java/.svn/entries b/base/facade/src/main/java/.svn/entries deleted file mode 100644 index a510d28..0000000 --- a/base/facade/src/main/java/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -META-INF -dir - -com -dir - diff --git a/base/facade/src/main/java/META-INF/.svn/entries b/base/facade/src/main/java/META-INF/.svn/entries deleted file mode 100644 index 47ce740..0000000 --- a/base/facade/src/main/java/META-INF/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/META-INF -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MANIFEST.MF -file - - - - -2022-07-28T03:40:24.659725Z -1e64711d4cda5dfa351caeb25e74d938 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -52 - -ejb-jar.xml -file - - - - -2022-07-28T03:40:24.659725Z -799119297c8daeb56bac6c232addfc4c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -448 - diff --git a/base/facade/src/main/java/META-INF/.svn/text-base/MANIFEST.MF.svn-base b/base/facade/src/main/java/META-INF/.svn/text-base/MANIFEST.MF.svn-base deleted file mode 100644 index 6f1be26..0000000 --- a/base/facade/src/main/java/META-INF/.svn/text-base/MANIFEST.MF.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: ejbClient.jar - diff --git a/base/facade/src/main/java/META-INF/.svn/text-base/ejb-jar.xml.svn-base b/base/facade/src/main/java/META-INF/.svn/text-base/ejb-jar.xml.svn-base deleted file mode 100644 index 51787a7..0000000 --- a/base/facade/src/main/java/META-INF/.svn/text-base/ejb-jar.xml.svn-base +++ /dev/null @@ -1,6 +0,0 @@ - - - - ejbmaia - facadeclient.jar - \ No newline at end of file diff --git a/base/facade/src/main/java/com/.svn/entries b/base/facade/src/main/java/com/.svn/entries deleted file mode 100644 index 95c079f..0000000 --- a/base/facade/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/facade/src/main/java/com/fp/.svn/entries b/base/facade/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 26135ac..0000000 --- a/base/facade/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -facade -dir - diff --git a/base/facade/src/main/java/com/fp/facade/.svn/entries b/base/facade/src/main/java/com/fp/facade/.svn/entries deleted file mode 100644 index 60df937..0000000 --- a/base/facade/src/main/java/com/fp/facade/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com/fp/facade -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ejb -dir - -db -dir - diff --git a/base/facade/src/main/java/com/fp/facade/db/.svn/entries b/base/facade/src/main/java/com/fp/facade/db/.svn/entries deleted file mode 100644 index 4b04378..0000000 --- a/base/facade/src/main/java/com/fp/facade/db/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com/fp/facade/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:24.812725Z -453ef9b5ef769162aaa728a10f52393a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -625 - diff --git a/base/facade/src/main/java/com/fp/facade/db/.svn/text-base/DataHelper.java.svn-base b/base/facade/src/main/java/com/fp/facade/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 8e41b23..0000000 --- a/base/facade/src/main/java/com/fp/facade/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.facade.db; - -/** - * Clase utilitaria que maneje sql y hql utiliada en el proyecto accounting - * @author scastillo - */ -public class DataHelper { - - /** - * Almacena una instancia de DataHelper. - */ - private static DataHelper cache; - - /** - * Entrega una instancia de DataHelper. - * @return DataHelper - */ - public static DataHelper getInstance() { - if (cache != null) { - return cache; - } - synchronized (DataHelper.class) { - if (cache == null) { - cache = new DataHelper(); - } - } - return cache; - } -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/entries b/base/facade/src/main/java/com/fp/facade/ejb/.svn/entries deleted file mode 100644 index 0ced8ca..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/entries +++ /dev/null @@ -1,235 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com/fp/facade/ejb -svn://172.17.26.185/COMACO - - - -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -QueryWithCommitBean.java -file - - - - -2022-07-28T03:40:24.790725Z -b1179e2dc8df4364c0a00bd1db5fb185 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2000 - -ReportBean.java -file - - - - -2022-07-28T03:40:24.790725Z -a28a2e9db1bb081dcf1c74015f7d0155 -2014-09-17T08:28:17.153318Z -876 -jvaca - - - - - - - - - - - - - - - - - - - - - -2676 - -SaveBean.java -file - - - - -2022-07-28T03:40:24.791725Z -0aca071598efb61d221b3dee6b17dea4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1967 - -JobsIniciatorBean.java -file - - - - -2022-07-28T03:40:24.791725Z -4950cacabe6aee8fa966b029be3aa014 -2014-09-11T06:58:31.794658Z -663 -jvaca - - - - - - - - - - - - - - - - - - - - - -2640 - -FacadeBean.java -file - - - - -2022-07-28T03:40:24.791725Z -32051ec7811c753e8c46c5447aa3c0cf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6903 - -QueryBean.java -file - - - - -2022-07-28T03:40:24.791725Z -268b9c028d41fe93f6db0cc7d101d280 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2107 - diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.netbeans-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.netbeans-base deleted file mode 100644 index a3b1c92..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.netbeans-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.facade.ejb; - -import java.lang.reflect.Method; -import java.sql.SQLException; -import java.util.List; - -import javax.ejb.Stateless; -import javax.ejb.TransactionAttribute; -import javax.ejb.TransactionAttributeType; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import net.sf.json.JSONObject; - -import com.fp.bpm.EngineExecutor; -import com.fp.bpm.report.ReportProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.QueryRequest; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanRemote; -import com.fp.general.security.rules.CloseAllSessions; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Session Bean implementation class FacadeBean - */ -@Stateless(name = "facadebean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class FacadeBean extends BeanHelper implements FacadeBeanRemote { - - // @PersistenceContext(unitName="ejb") - // EntityManager em; - - /** - * Metodo que permite verificar que el servicio este activo. - * - * @param pData Datos con los que se procesa la transaccion. - * @return Object - * @throws Exception - */ - @Override - public Object ping(String pData) throws Exception { - try { - this.fillThreadFacade(this.getCompany(pData)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - Response res = new Response(Response.RESPONSE_OK, "OK" + pData); - Serializer ser = new Serializer(res); - return ser.toJSON(); - } catch (Exception e) { - throw e; - } finally { - //PersistenceHelper.closeSession(); - } - - } - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param pData Datos con los que se procesa la transaccion. - * @param pFileItems Lista de archivos o imagenes a almacenar en la base. - * @return Object - * @throws Exception - */ - @Override - @TransactionAttribute(TransactionAttributeType.REQUIRED) - public Object process(String pData, List pFileItems) throws Throwable { - this.fillThreadFacade(this.getCompany(pData)); - JSONObject response = new JSONObject(); - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - PersistenceHelper.beginTransaction(); - EngineExecutor ee = new EngineExecutor(); - String resp = ee.process(pData, pFileItems).toString(); - // em.flush(); - PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - PersistenceHelper.rollbackTransaction(); - try { - this.fillError(e, response, pData); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - } - return response.toString(); - } finally { - PersistenceHelper.closeSession(); - } - } - - private void fillError(Throwable e, Object pResponse, String pData) throws Exception { - JSONObject response = (JSONObject) pResponse; - APPLogger.getLogger().error("\nRequest:==>\n" + pData); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - response.put("message", usrmsg); - response.put("messageCode", eh.getCode()); - response.put("isAplicationMessage", eh.isAppexception()); - response.put("trace", eh.getTechnicalMessage()); - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.put("stackTrace", eh.getTechnicalMessage()); - } else { - response.put("stackTrace", eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + eh.getStackTrace()); - } - } - - - /** - * Metodo que se encarga de expirar sessiones de usuario. - * - * @param host IP del servidor web - */ - @Override - public void expireSessions(String host) throws Exception { - try { - this.fillThreadFacade(this.getCompany(null)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - PersistenceHelper.beginTransaction(); - CloseAllSessions.getInstance().expireSessions(host); - PersistenceHelper.commitTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackTransaction(); - APPLogger.getLogger().error("expireSessions==> " + e); - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Metodo que se encarga de ejecutar y/o llenar tablas temporales para la ejeucion de reportes. - * - * @param pQueryRequest Datos de la consulta del reporte. - * @throws Exception - */ - @Override - public Object reportProcessor(Object pQueryRequest) throws Exception { - JSONObject response = new JSONObject(); - try { - QueryRequest queryReq = (QueryRequest) pQueryRequest; - this.fillThreadFacade(queryReq.getCompany()); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - PersistenceHelper.beginTransaction(); - Response res = new Response(Response.RESPONSE_OK, "OK"); - queryReq.setResponse(res); - MessageGenerator mg = MessageGenerator.getInstance(); - queryReq.setJournalId(mg.generateId(queryReq.getUser())); - ReportProcessor rp = new ReportProcessor(); - rp.process(queryReq); - PersistenceHelper.commitTransaction(); - Serializer ser = new Serializer(res); - return ser.toJSON(); - } catch (Exception e) { - PersistenceHelper.rollbackTransaction(); - this.fillError(e, response, ""); - } finally { - PersistenceHelper.closeSession(); - } - return response.toString(); - - } - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.svn-base deleted file mode 100644 index a3b1c92..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/FacadeBean.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.facade.ejb; - -import java.lang.reflect.Method; -import java.sql.SQLException; -import java.util.List; - -import javax.ejb.Stateless; -import javax.ejb.TransactionAttribute; -import javax.ejb.TransactionAttributeType; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import net.sf.json.JSONObject; - -import com.fp.bpm.EngineExecutor; -import com.fp.bpm.report.ReportProcessor; -import com.fp.common.exception.APPException; -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Response; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.QueryRequest; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanRemote; -import com.fp.general.security.rules.CloseAllSessions; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Session Bean implementation class FacadeBean - */ -@Stateless(name = "facadebean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class FacadeBean extends BeanHelper implements FacadeBeanRemote { - - // @PersistenceContext(unitName="ejb") - // EntityManager em; - - /** - * Metodo que permite verificar que el servicio este activo. - * - * @param pData Datos con los que se procesa la transaccion. - * @return Object - * @throws Exception - */ - @Override - public Object ping(String pData) throws Exception { - try { - this.fillThreadFacade(this.getCompany(pData)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - Response res = new Response(Response.RESPONSE_OK, "OK" + pData); - Serializer ser = new Serializer(res); - return ser.toJSON(); - } catch (Exception e) { - throw e; - } finally { - //PersistenceHelper.closeSession(); - } - - } - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param pData Datos con los que se procesa la transaccion. - * @param pFileItems Lista de archivos o imagenes a almacenar en la base. - * @return Object - * @throws Exception - */ - @Override - @TransactionAttribute(TransactionAttributeType.REQUIRED) - public Object process(String pData, List pFileItems) throws Throwable { - this.fillThreadFacade(this.getCompany(pData)); - JSONObject response = new JSONObject(); - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - PersistenceHelper.beginTransaction(); - EngineExecutor ee = new EngineExecutor(); - String resp = ee.process(pData, pFileItems).toString(); - // em.flush(); - PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - PersistenceHelper.rollbackTransaction(); - try { - this.fillError(e, response, pData); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - } - return response.toString(); - } finally { - PersistenceHelper.closeSession(); - } - } - - private void fillError(Throwable e, Object pResponse, String pData) throws Exception { - JSONObject response = (JSONObject) pResponse; - APPLogger.getLogger().error("\nRequest:==>\n" + pData); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - response.put("message", usrmsg); - response.put("messageCode", eh.getCode()); - response.put("isAplicationMessage", eh.isAppexception()); - response.put("trace", eh.getTechnicalMessage()); - if ((e instanceof APPException) || (e instanceof SQLException)) { - response.put("stackTrace", eh.getTechnicalMessage()); - } else { - response.put("stackTrace", eh.getStackTrace()); - APPLogger.getLogger().error("StackTrace:==>" + eh.getStackTrace()); - } - } - - - /** - * Metodo que se encarga de expirar sessiones de usuario. - * - * @param host IP del servidor web - */ - @Override - public void expireSessions(String host) throws Exception { - try { - this.fillThreadFacade(this.getCompany(null)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - PersistenceHelper.beginTransaction(); - CloseAllSessions.getInstance().expireSessions(host); - PersistenceHelper.commitTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackTransaction(); - APPLogger.getLogger().error("expireSessions==> " + e); - } finally { - PersistenceHelper.closeSession(); - } - } - - /** - * Metodo que se encarga de ejecutar y/o llenar tablas temporales para la ejeucion de reportes. - * - * @param pQueryRequest Datos de la consulta del reporte. - * @throws Exception - */ - @Override - public Object reportProcessor(Object pQueryRequest) throws Exception { - JSONObject response = new JSONObject(); - try { - QueryRequest queryReq = (QueryRequest) pQueryRequest; - this.fillThreadFacade(queryReq.getCompany()); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - PersistenceHelper.beginTransaction(); - Response res = new Response(Response.RESPONSE_OK, "OK"); - queryReq.setResponse(res); - MessageGenerator mg = MessageGenerator.getInstance(); - queryReq.setJournalId(mg.generateId(queryReq.getUser())); - ReportProcessor rp = new ReportProcessor(); - rp.process(queryReq); - PersistenceHelper.commitTransaction(); - Serializer ser = new Serializer(res); - return ser.toJSON(); - } catch (Exception e) { - PersistenceHelper.rollbackTransaction(); - this.fillError(e, response, ""); - } finally { - PersistenceHelper.closeSession(); - } - return response.toString(); - - } - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/JobsIniciatorBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/JobsIniciatorBean.java.svn-base deleted file mode 100644 index c4e29cf..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/JobsIniciatorBean.java.svn-base +++ /dev/null @@ -1,84 +0,0 @@ -package com.fp.facade.ejb; - -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.ejb.Singleton; -import javax.ejb.Startup; -import javax.persistence.EntityManager; - -import com.fp.base.persistence.util.job.ServiceManager; -import com.fp.common.logger.APPLogger; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.general.scheduler.MiaScheduler; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -@Singleton -@Startup -public class JobsIniciatorBean extends BeanHelper { - - /** Variable que controla que los job's inicien. */ - private boolean iniciar = false; - private MiaScheduler ms; - @PostConstruct - protected void iniciartareas() { - if (!iniciar) { - APPLogger.getLogger().error("INICIA EJECUCION DE TAREAS O DEMONIOS EN EL SERVIDOR"); - try { - this.startJobs(); - iniciar = true; - } catch (Exception e) { - APPLogger.getLogger().error(e.getStackTrace()); - } - - } - - } - - /** - * Metodo que inicia el Job de tareas automaticas. - * - * @throws Exception - */ - public void startJobs() throws Exception { - this.fillThreadFacade(this.getCompany(null)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - APPLogger.getLogger().error("Inicia Servidor Contable"); - ServiceManager sm = new ServiceManager(); - // Inicia tareas automaticas. - sm.autoamaticInit(); - APPLogger.getLogger().error("Servidor Contable ok"); - } catch (Exception e) { - } finally { - PersistenceHelper.closeSession(); - } - this.scheduleJObs(); - - } - - /** - * Metodo que inicia la ejeciucion de tareas calendarizadas. - * - * @throws Exception - */ - private void scheduleJObs() throws Exception { - this.fillThreadFacade(this.getCompany(null)); - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - // Levanta ejecutor de tareas calendarizadas. - MiaScheduler ms = new MiaScheduler(); - ms.init(); - } catch (Exception e) { - } finally { - PersistenceHelper.closeSession(); - } - } - - @PreDestroy - private void detenerJobs() throws Exception{ - ms.detenerJob(); - } -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.netbeans-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.netbeans-base deleted file mode 100644 index 55b02f4..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.netbeans-base +++ /dev/null @@ -1,61 +0,0 @@ -package com.fp.facade.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import com.fp.bpm.actions.QueryAction; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Ejb, que actua como fachada de transacciones de consulta. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@Stateless(name = "querybean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class QueryBean extends BeanHelper implements FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - @Override - public Object process(Request request) throws Throwable { - this.fillThreadFacade(request.getCompany()); - Object resp = null; - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - // PersistenceHelper.beginTransaction(); - QueryAction qa = new QueryAction(); - resp = qa.process(request); - // PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - // PersistenceHelper.rollbackTransaction(); - try { - return BeanHelper.fillError(e); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - throw e1; - } - } finally { - PersistenceHelper.closeSession(); - } - } - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.svn-base deleted file mode 100644 index 55b02f4..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryBean.java.svn-base +++ /dev/null @@ -1,61 +0,0 @@ -package com.fp.facade.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import com.fp.bpm.actions.QueryAction; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Ejb, que actua como fachada de transacciones de consulta. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@Stateless(name = "querybean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class QueryBean extends BeanHelper implements FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - @Override - public Object process(Request request) throws Throwable { - this.fillThreadFacade(request.getCompany()); - Object resp = null; - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - // PersistenceHelper.beginTransaction(); - QueryAction qa = new QueryAction(); - resp = qa.process(request); - // PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - // PersistenceHelper.rollbackTransaction(); - try { - return BeanHelper.fillError(e); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - throw e1; - } - } finally { - PersistenceHelper.closeSession(); - } - } - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryWithCommitBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryWithCommitBean.java.svn-base deleted file mode 100644 index e40944f..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/QueryWithCommitBean.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.facade.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import com.fp.bpm.actions.QueryAction; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -@Stateless(name = "querywithcommitbean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class QueryWithCommitBean extends BeanHelper implements FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - @Override - public Object process(Request request) throws Throwable { - this.fillThreadFacade(request.getCompany()); - Object resp = null; - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - PersistenceHelper.beginTransaction(); - QueryAction qa = new QueryAction(); - resp = qa.process(request); - PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - PersistenceHelper.rollbackTransaction(); - try { - return BeanHelper.fillError(e); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - throw e1; - } - } finally { - PersistenceHelper.closeSession(); - } - } - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/ReportBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/ReportBean.java.svn-base deleted file mode 100644 index 7f26cda..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/ReportBean.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.facade.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import com.fp.bpm.report.ReportProcessor; -import com.fp.common.fin.MessageGenerator; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.QueryRequest; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -@Stateless(name = "reportbean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class ReportBean extends BeanHelper implements FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - @Override - public Object process(Request request) throws Throwable{ - this.fillThreadFacade(request.getCompany()); - Object resp = null; - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - Response response = new Response(Response.RESPONSE_OK, "OK"); - try { - BeanHelper.cleanThreadLocal(); - QueryRequest qr = new QueryRequest(); - request.copy(qr); - request.copyMapValues(qr); - - qr.setQueryTables(request.getQueryTables()); - qr.setJsf(true); - qr.setResponse(response); - qr.putAll(request.getModifiedData()); //campos del request codigo de consuta. - // fija numero de mensaje - MessageGenerator mg = MessageGenerator.getInstance(); - qr.setJournalId(mg.generateId(qr.getUser())); - - PersistenceHelper.beginTransaction(); - ReportProcessor rp = new ReportProcessor(); - resp = rp.process(qr); - PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - //PersistenceHelper.rollbackTransaction(); - try { - return BeanHelper.fillError(e); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - throw e1; - } - } finally { - PersistenceHelper.closeSession(); - } - } - - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/SaveBean.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/SaveBean.java.svn-base deleted file mode 100644 index 7921e41..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/.svn/text-base/SaveBean.java.svn-base +++ /dev/null @@ -1,54 +0,0 @@ -package com.fp.facade.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; - -import com.fp.bpm.actions.SaveAction; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.facade.ejb.helper.BeanHelper; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -@Stateless(name = "savebean") -@TransactionManagement(value = TransactionManagementType.BEAN) -public class SaveBean extends BeanHelper implements FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - public Object process(Request request) throws Throwable{ - this.fillThreadFacade(request.getCompany()); - Object resp = null; - // Para obtener un EntityManager dinamico - EntityManager em = PersistenceManager.getInstance().createEntityManagerLocal(); - PersistenceHelper.setEntityManager(em); - try { - BeanHelper.cleanThreadLocal(); - PersistenceHelper.beginTransaction(); - SaveAction sa = new SaveAction(); - resp = sa.process(request); - PersistenceHelper.commitTransaction(); - return resp; - } catch (Throwable e) { - APPLogger.getLogger().warn(e, e); - PersistenceHelper.rollbackTransaction(); - try { - return BeanHelper.fillError(e); - } catch (Throwable e1) { - APPLogger.getLogger().warn(e1, e1); - throw e1; - } - } finally { - PersistenceHelper.closeSession(); - } - } - - -} diff --git a/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/entries b/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/entries deleted file mode 100644 index bb3c31f..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/java/com/fp/facade/ejb/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BeanHelper.java -file - - - - -2022-07-28T03:40:24.758725Z -01b929f9d584ef0bb427d0dfa5b7d969 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2734 - diff --git a/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/text-base/BeanHelper.java.svn-base b/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/text-base/BeanHelper.java.svn-base deleted file mode 100644 index bf0fa4f..0000000 --- a/base/facade/src/main/java/com/fp/facade/ejb/helper/.svn/text-base/BeanHelper.java.svn-base +++ /dev/null @@ -1,86 +0,0 @@ -package com.fp.facade.ejb.helper; - -import java.lang.reflect.Method; - -import net.sf.json.JSONObject; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.Response; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; - -public class BeanHelper { - - /** - * LLena el threadlocal con el codigo de comania. - * @param pComany Codigo de compania a asocial al threadlocal. - * @throws Exception - */ - protected void fillThreadFacade(Integer pComany) throws Exception { - SessionData s = new SessionData(); - s.setCompany(pComany); - s.setIsEjb(false); - ThreadFacade.setSaveRequest(s); - } - - /** - * Metodo que entraga el codigo de la compania que llega en el request, con la que trabaja el usuario. - * @param data Json de entrada - * @return Integer - * @throws Exception - */ - protected Integer getCompany(String data) throws Exception { - Integer cia = 1; - try { - PropertiesHandler ph = new PropertiesHandler("fb-facade"); - cia = ph.getIntValue("defaultcompany"); - } catch (Exception e) { - APPLogger.getLogger().error("Error en getCompany"); - e.printStackTrace(); - cia = 1; - } - try { - JSONObject rpcObject = JSONObject.fromObject(data); - String dataux = rpcObject.getJSONArray("params").getString(0); - dataux = dataux.substring(1, dataux.length() - 1); - JSONObject a = JSONObject.fromObject(dataux); - String cp = a.getString("company"); - return Integer.valueOf(cp); - } catch (Exception e) { - return cia; - } - } - - public static void cleanThreadLocal() { - try { - Class c = Class.forName("com.fp.core.fin.helper.ThreadTransaction"); - Method m = c.getDeclaredMethod("unset"); - m.invoke(null); - } catch (Exception e) { - // NO hacer nada - } - } - - /** - * Tranforma las excepciones en un leguaje de usuario, arma y entrega la respuesta. - * @param e Excepcion a transformar a mensaje de usuario. - * @throws Exception - */ - public static final Response fillError(Throwable e) throws Throwable { - try { - // Encera el response. - Response response = null; - // Crea una nueva instancia de response. - ExceptionHandler eh = new ExceptionHandler(e, "ES"); - response = new Response(eh.getCode(), eh.getUserMessage()); - response.setResponseTechnicalMessage(eh.getTechnicalMessage()); - return response; - } catch (Exception e2) { - throw e2; - } - } - - -} diff --git a/base/facade/src/main/resources/.svn/entries b/base/facade/src/main/resources/.svn/entries deleted file mode 100644 index 7142ab5..0000000 --- a/base/facade/src/main/resources/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -META-INF -dir - diff --git a/base/facade/src/main/resources/META-INF/.svn/entries b/base/facade/src/main/resources/META-INF/.svn/entries deleted file mode 100644 index e70fd42..0000000 --- a/base/facade/src/main/resources/META-INF/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/main/resources/META-INF -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/facade/src/test/.svn/entries b/base/facade/src/test/.svn/entries deleted file mode 100644 index 9e8bcdf..0000000 --- a/base/facade/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/facade/src/test/java/.svn/entries b/base/facade/src/test/java/.svn/entries deleted file mode 100644 index 4d81b5e..0000000 --- a/base/facade/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/facade/src/test/resources/.svn/entries b/base/facade/src/test/resources/.svn/entries deleted file mode 100644 index be4f4b6..0000000 --- a/base/facade/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facade/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/facadeclient/.svn/dir-prop-base b/base/facadeclient/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/facadeclient/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/facadeclient/.svn/entries b/base/facadeclient/.svn/entries deleted file mode 100644 index 4a29b60..0000000 --- a/base/facadeclient/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient -svn://172.17.26.185/COMACO - - - -2014-10-17T05:36:16.620015Z -1672 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:24.527724Z -cdd9b1f28aaaa67a7f41517873ee7144 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1724 - diff --git a/base/facadeclient/.svn/text-base/pom.xml.svn-base b/base/facadeclient/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 4e18873..0000000 --- a/base/facadeclient/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,49 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - facadeclient - Facade client - - - - log4j - log4j - provided - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - - com.fp.base.dto - dto - 2.1 - provided - - - com.fp.base.dto - common - 2.1 - provided - - - diff --git a/base/facadeclient/src/.svn/entries b/base/facadeclient/src/.svn/entries deleted file mode 100644 index 514837a..0000000 --- a/base/facadeclient/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/facadeclient/src/main/.svn/entries b/base/facadeclient/src/main/.svn/entries deleted file mode 100644 index 4d93cbc..0000000 --- a/base/facadeclient/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/facadeclient/src/main/java/.svn/entries b/base/facadeclient/src/main/java/.svn/entries deleted file mode 100644 index 7f7486f..0000000 --- a/base/facadeclient/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/facadeclient/src/main/java/com/.svn/entries b/base/facadeclient/src/main/java/com/.svn/entries deleted file mode 100644 index 6808330..0000000 --- a/base/facadeclient/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/facadeclient/src/main/java/com/fp/.svn/entries b/base/facadeclient/src/main/java/com/fp/.svn/entries deleted file mode 100644 index f9da7d9..0000000 --- a/base/facadeclient/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -facadeclient -dir - diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/.svn/entries b/base/facadeclient/src/main/java/com/fp/facadeclient/.svn/entries deleted file mode 100644 index 0374da6..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java/com/fp/facadeclient -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -ejb -dir - diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/entries b/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/entries deleted file mode 100644 index b976a96..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java/com/fp/facadeclient/ejb -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FacadeBeanRemote.java -file - - - - -2022-07-28T03:40:24.313723Z -5d0d06531499b9063959906968be40fe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1242 - -FacadeBeanJsfRemote.java -file - - - - -2022-07-28T03:40:24.314723Z -c42389158d9f59d7a2c9d5afca7b829f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -564 - diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.netbeans-base b/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.netbeans-base deleted file mode 100644 index 1d4a7ff..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.netbeans-base +++ /dev/null @@ -1,23 +0,0 @@ -package com.fp.facadeclient.ejb; - -import javax.ejb.Remote; - -import com.fp.dto.Request; - -/** - * Interface remota de ejb de ejecucion de transacciones. - * @author Jorge Vaca. - * @version 2.1 - */ -@Remote -public interface FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - public Object process(Request request) throws Throwable; - -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.svn-base b/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.svn-base deleted file mode 100644 index 1d4a7ff..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanJsfRemote.java.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -package com.fp.facadeclient.ejb; - -import javax.ejb.Remote; - -import com.fp.dto.Request; - -/** - * Interface remota de ejb de ejecucion de transacciones. - * @author Jorge Vaca. - * @version 2.1 - */ -@Remote -public interface FacadeBeanJsfRemote { - - /** - * Metodo que se encarga de la ejecucion de una accion. - * @param request Request con los datos necesarios para ejecutar una accion, consulta o mantenimiento. - * @return Object - * @throws Exception - */ - public Object process(Request request) throws Throwable; - -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanRemote.java.svn-base b/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanRemote.java.svn-base deleted file mode 100644 index bc97866..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/ejb/.svn/text-base/FacadeBeanRemote.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.facadeclient.ejb; - -import java.util.List; - -import javax.ejb.Remote; - -import com.fp.dto.helper.FileHelper; - -/** - * Interface remota de ejb de ejecucion de transacciones. - * @author Jorge Vaca. - * @version 2.1 - */ -@Remote -public interface FacadeBeanRemote { - - /** - * Metodo que permite verificar que el servicio este activo. - * @param pData Datos con los que se procesa la transaccion. - * @return Object - * @throws Exception - */ - public Object ping(String pData) throws Throwable; - - /** - * Metodo que se encarga de la ejecucion de una accion. - * @param pData Datos con los que se procesa la transaccion. - * @param pFileItems Lista de archivos o imagenes a almacenar en la base. - * @return Object - * @throws Exception - */ - public Object process(String pData, List pFileItems) throws Throwable; - - /** - * Metodo que se encarga de expirar sessiones de usuario. - * @param host IP del servidor web - */ - public void expireSessions(String host) throws Throwable; - - /** - * Metodo que se encarga de procesar los reportes especiales - */ - public Object reportProcessor(Object pQueryRequest) throws Throwable; - -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/entries b/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/entries deleted file mode 100644 index 8d75342..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/java/com/fp/facadeclient/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ServiceLocator.java -file - - - - -2022-07-28T03:40:24.259723Z -310ff322767c3283e447e9d1be9a1903 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3846 - -ServiceLocatorJsf.java -file - - - - -2022-07-28T03:40:24.259723Z -d6fa11827c297be90727073698bd4b34 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2884 - -ServiceLocatorJboss7.java -file - - - - -2022-07-28T03:40:24.259723Z -b27a00a97351f3a06195e2a7ea70e9b0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3847 - diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocator.java.svn-base b/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocator.java.svn-base deleted file mode 100644 index 7765ed7..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocator.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.facadeclient.helper; - -import java.util.Properties; - -import javax.ejb.EJB; -import javax.naming.Context; -import javax.naming.InitialContext; - -import com.fp.common.logger.APPLogger; -import com.fp.common.properties.PropertiesHandler; -import com.fp.facadeclient.ejb.FacadeBeanRemote; -import javax.naming.NamingException; - -/** - * Clase utilitaria que mantiene una coneccion con el bean de fachada de entrada al core. - * @author Jorge Vaca. - * @version 2.1 - */ -public class ServiceLocator { - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - @EJB - private FacadeBeanRemote facadeRemote; - /** - * Almacena una instancia de ServiceLocator. - */ - private static ServiceLocator cache; - - /** - * Entrega una instancia de ServiceLocator. - * @return ServiceLocator - */ - public static ServiceLocator getInstance() { - if (cache != null) { - return cache; - } - synchronized (ServiceLocator.class) { - if (cache == null) { - cache = new ServiceLocator(); - } - } - return cache; - } - - /** - * Entrega el valor de: facadeRemote - * @return FacadeBeanRemote - */ - public FacadeBeanRemote getFacadeRemote() throws Exception { - if (this.facadeRemote == null) { - this.fillFacadeBeanRemote(); - } - return facadeRemote; - } - - /** - * Obtiene una coneccion a bean de entrada al core. - * @throws Exception - */ - private void fillFacadeBeanRemote() { - if (this.facadeRemote == null) { - String server = null; - try { - APPLogger.getLogger().info("\nOBTENIENDO CONTEXT DEL SESSION BEAN"); - PropertiesHandler ph = new PropertiesHandler("fb-facade"); - Properties props = new Properties(); - props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); - server = "jnp://" + ph.getStringValue("server") + ":" + ph.getStringValue("port"); - props.put(Context.PROVIDER_URL, server); - Context jndiContext = new InitialContext(props); - String a = ph.getStringValue("ear") + ph.getStringValue("bean"); - Object obj = jndiContext.lookup(a); - this.facadeRemote = (FacadeBeanRemote) obj; - APPLogger.getLogger().info("\nCONTEXT DEL SESSION BEAN OBTENIDO: " + server); - } catch (NamingException ex) { - APPLogger.getLogger().error("\nNamingException ServiceLocator: " + server, ex); - } catch (Exception ex) { - APPLogger.getLogger().error("\nException ServiceLocator: " + server, ex); - } - - } - } - - /** - * Obtiene una coneccion a bean de entrada al core. - * @throws Exception - */ - protected void fillFacadeBeanRemoteTest() throws Exception { - if (this.facadeRemote == null) { - try { - APPLogger.getLogger().info("\nOBTENIENDO UN CONTEXT DEL SESSION BEAN"); - Properties props = new Properties(); - props.put(Context.INITIAL_CONTEXT_FACTORY, "org.jnp.interfaces.NamingContextFactory"); - props.put(Context.PROVIDER_URL, "jnp://127.0.0.1:1299"); - Context jndiContext = new InitialContext(props); - String a = "maiaear-2.1/" + "FacadeBean/remote"; - Object obj = jndiContext.lookup(a); - this.facadeRemote = (FacadeBeanRemote) obj; - APPLogger.getLogger().info("\nOK CONTEXT"); - } catch (Exception ex) { - APPLogger.getLogger().error(ex); - } - } - } -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJboss7.java.svn-base b/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJboss7.java.svn-base deleted file mode 100644 index 96003fb..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJboss7.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.facadeclient.helper; - -import java.util.Hashtable; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import com.fp.common.logger.APPLogger; -import com.fp.facadeclient.ejb.FacadeBeanRemote; - -/** - * Clase utilitaria que mantiene una coneccion con el bean de fachada de entrada al core que esta desplegado en jboss 7. - * @author Jorge Vaca. - * @version 2.1 - */ -public class ServiceLocatorJboss7 { - - /** - * Almacena una instancia de ServiceLocatorJboss. - */ - private static ServiceLocatorJboss7 cache; - - private FacadeBeanRemote facadebeanremote; - - /** - * Entrega una instancia de ServiceLocatorJboss. - * @return ServiceLocator - */ - public static ServiceLocatorJboss7 getInstance() { - if (ServiceLocatorJboss7.cache != null) { - return ServiceLocatorJboss7.cache; - } - synchronized (ServiceLocatorJboss7.class) { - if (ServiceLocatorJboss7.cache == null) { - ServiceLocatorJboss7.cache = new ServiceLocatorJboss7(); - } - } - return ServiceLocatorJboss7.cache; - } - - /** - * Entrega un proxy de los ejb remotos. - * @return FacadeBeanRemote - */ - public FacadeBeanRemote getFacadeRemote() throws Exception { - if (this.facadebeanremote == null) { - APPLogger.getLogger().error("Obtiene una coneccion con el core"); - this.facadebeanremote = ServiceLocatorJboss7.lookupRemoteStatelessFacadeBean(); - } - return this.facadebeanremote; - } - - /** - * Looks up and returns the proxy to remote stateless calculator bean - * @return - * @throws NamingException - */ - private static FacadeBeanRemote lookupRemoteStatelessFacadeBean() throws NamingException { - Hashtable jndiProperties = new Hashtable(); - jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); - Context context = new InitialContext(jndiProperties); - - // The app name is the application name of the deployed EJBs. This is typically the ear name - // without the .ear suffix. However, the application name could be overridden in the application.xml of the - // EJB deployment on the server. - // Since we haven't deployed the application as a .ear, the app name for us will be an empty string - final String appName = "maiaear-2.1"; - // This is the module name of the deployed EJBs on the server. This is typically the jar name of the - // EJB deployment, without the .jar suffix, but can be overridden via the ejb-jar.xml - // In this example, we have deployed the EJBs in a jboss-as-ejb-remote-app.jar, so the module name is - // jboss-as-ejb-remote-app - final String moduleName = "facade"; - // AS7 allows each deployment to have an (optional) distinct name. We haven't specified a distinct name for - // our EJB deployment, so this is an empty string - final String distinctName = ""; - // The EJB name which by default is the simple class name of the bean implementation class - // final String beanName = FacadeBean.class.getSimpleName(); - final String beanName = "facadebean"; // esto porque en el ejb esta el nombre del bean cambiado. - // the remote view fully qualified class name - final String viewClassName = FacadeBeanRemote.class.getName(); - // let's do the lookup - String aux = "ejb:" + appName + "/" + moduleName + "/" + distinctName + "/" + beanName + "!" + viewClassName; - return (FacadeBeanRemote) context.lookup(aux); - } - - // LIbrerias - // jboss-client-7.1.0.Final.jar esta bajo jbos-as-7.1.0.final\bin\client - -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.netbeans-base b/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.netbeans-base deleted file mode 100644 index 9af41e1..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.netbeans-base +++ /dev/null @@ -1,81 +0,0 @@ -package com.fp.facadeclient.helper; - -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Map; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import com.fp.common.logger.APPLogger; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; - -public class ServiceLocatorJsf { - // Nombre del ear sin .ear - private static final String APP_NAME = "maiaear-2.1"; - // Nombre del modulo ejb es el jar que contiene los ejb sin .jar - private static final String MODULE_NAME = "facade"; - // Paquete clase de la interface remota. - private static final String BEAN_REMOTO = FacadeBeanJsfRemote.class.getName(); - /** - * Almacena una instancia de ServiceLocator. - */ - private static ServiceLocatorJsf cache; - - private final Map mbeans = new HashMap(); - - /** - * Entrega una instancia de ServiceLocator. - * @return ServiceLocator - */ - public static ServiceLocatorJsf getInstance() { - if (ServiceLocatorJsf.cache != null) { - return ServiceLocatorJsf.cache; - } - synchronized (ServiceLocator.class) { - if (ServiceLocatorJsf.cache == null) { - ServiceLocatorJsf.cache = new ServiceLocatorJsf(); - } - } - return ServiceLocatorJsf.cache; - } - - /** - * Entrega un proxy de los ejb remotos. - * @param nombesessionbean Nombre del ejb remoto a obtener un proxy. - * @return FacadeBeanRemote - */ - public FacadeBeanJsfRemote getFacadeRemote(String nombesessionbean) throws Exception { - FacadeBeanJsfRemote bean = this.mbeans.get(nombesessionbean); - if (bean == null) { - synchronized (this.mbeans) { - bean = this.mbeans.get(nombesessionbean); - if (bean == null) { - APPLogger.getLogger().info("Obtiene una coneccion al EJB ==> " + nombesessionbean); - bean = ServiceLocatorJsf.lookupRemoteStatelessFacadeBean(nombesessionbean); - this.mbeans.put(nombesessionbean, bean); - } - } - } - return bean; - } - - /** - * Busca y entrega el proxy de un ejb con el cual se ejecuta un servicio de negocio. - * @return FacadeBeanJsfRemote - * @throws NamingException - */ - private static FacadeBeanJsfRemote lookupRemoteStatelessFacadeBean(String beanname) throws NamingException { - // Tiene que ser hashtable no considerar en el pmd. - Hashtable jndiProperties = new Hashtable(); // NOPMD by jorge on 6/19/12 3:36 PM - jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); - Context context = new InitialContext(jndiProperties); - String aux = "ejb:" + ServiceLocatorJsf.APP_NAME + "/" + ServiceLocatorJsf.MODULE_NAME + "//" + beanname + "!" - + ServiceLocatorJsf.BEAN_REMOTO; - return (FacadeBeanJsfRemote) context.lookup(aux); - } - - // LIbrerias - // jboss-client-7.1.0.Final.jar esta bajo jbos-as-7.1.0.final\bin\client -} diff --git a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.svn-base b/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.svn-base deleted file mode 100644 index 9af41e1..0000000 --- a/base/facadeclient/src/main/java/com/fp/facadeclient/helper/.svn/text-base/ServiceLocatorJsf.java.svn-base +++ /dev/null @@ -1,81 +0,0 @@ -package com.fp.facadeclient.helper; - -import java.util.HashMap; -import java.util.Hashtable; -import java.util.Map; - -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NamingException; - -import com.fp.common.logger.APPLogger; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; - -public class ServiceLocatorJsf { - // Nombre del ear sin .ear - private static final String APP_NAME = "maiaear-2.1"; - // Nombre del modulo ejb es el jar que contiene los ejb sin .jar - private static final String MODULE_NAME = "facade"; - // Paquete clase de la interface remota. - private static final String BEAN_REMOTO = FacadeBeanJsfRemote.class.getName(); - /** - * Almacena una instancia de ServiceLocator. - */ - private static ServiceLocatorJsf cache; - - private final Map mbeans = new HashMap(); - - /** - * Entrega una instancia de ServiceLocator. - * @return ServiceLocator - */ - public static ServiceLocatorJsf getInstance() { - if (ServiceLocatorJsf.cache != null) { - return ServiceLocatorJsf.cache; - } - synchronized (ServiceLocator.class) { - if (ServiceLocatorJsf.cache == null) { - ServiceLocatorJsf.cache = new ServiceLocatorJsf(); - } - } - return ServiceLocatorJsf.cache; - } - - /** - * Entrega un proxy de los ejb remotos. - * @param nombesessionbean Nombre del ejb remoto a obtener un proxy. - * @return FacadeBeanRemote - */ - public FacadeBeanJsfRemote getFacadeRemote(String nombesessionbean) throws Exception { - FacadeBeanJsfRemote bean = this.mbeans.get(nombesessionbean); - if (bean == null) { - synchronized (this.mbeans) { - bean = this.mbeans.get(nombesessionbean); - if (bean == null) { - APPLogger.getLogger().info("Obtiene una coneccion al EJB ==> " + nombesessionbean); - bean = ServiceLocatorJsf.lookupRemoteStatelessFacadeBean(nombesessionbean); - this.mbeans.put(nombesessionbean, bean); - } - } - } - return bean; - } - - /** - * Busca y entrega el proxy de un ejb con el cual se ejecuta un servicio de negocio. - * @return FacadeBeanJsfRemote - * @throws NamingException - */ - private static FacadeBeanJsfRemote lookupRemoteStatelessFacadeBean(String beanname) throws NamingException { - // Tiene que ser hashtable no considerar en el pmd. - Hashtable jndiProperties = new Hashtable(); // NOPMD by jorge on 6/19/12 3:36 PM - jndiProperties.put(Context.URL_PKG_PREFIXES, "org.jboss.ejb.client.naming"); - Context context = new InitialContext(jndiProperties); - String aux = "ejb:" + ServiceLocatorJsf.APP_NAME + "/" + ServiceLocatorJsf.MODULE_NAME + "//" + beanname + "!" - + ServiceLocatorJsf.BEAN_REMOTO; - return (FacadeBeanJsfRemote) context.lookup(aux); - } - - // LIbrerias - // jboss-client-7.1.0.Final.jar esta bajo jbos-as-7.1.0.final\bin\client -} diff --git a/base/facadeclient/src/main/resources/.svn/entries b/base/facadeclient/src/main/resources/.svn/entries deleted file mode 100644 index 217ff81..0000000 --- a/base/facadeclient/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -jboss-ejb-client.properties -file - - - - -2022-07-28T03:40:24.445724Z -296f0db3465f22f7af57e0191952d3a6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -959 - diff --git a/base/facadeclient/src/main/resources/.svn/text-base/jboss-ejb-client.properties.svn-base b/base/facadeclient/src/main/resources/.svn/text-base/jboss-ejb-client.properties.svn-base deleted file mode 100644 index 76b8ebd..0000000 --- a/base/facadeclient/src/main/resources/.svn/text-base/jboss-ejb-client.properties.svn-base +++ /dev/null @@ -1,21 +0,0 @@ -remote.connectionprovider.create.options.org.xnio.Options.SSL_ENABLED=false -remote.connections=default - -remote.connection.default.host=localhost -#remote.connection.default.host=192.168.1.105 -remote.connection.default.port=4447 -remote.connection.default.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false - -#para el servidor remoto que esta en linux -#remote.connection.default.username=jvaca -#remote.connection.default.password=Gato1971 - - -#revisar si finciona en linux -#remote.connection.one.host=${host.ip:172.20.10.2 -#remote.connection.one.port=${host.port:4447} -#remote.connection.one.username=${username:flip} -#remote.connection.one.password=${password:flip01} -#remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOANONYMOUS=false -#remote.connection.one.connect.options.org.xnio.Options.SASL_POLICY_NOPLAINTEXT=false -#remote.connection.one.connect.options.org.xnio.Options.SASL_DISALLOWED_MECHANISMS=${host.auth:JBOSS-LOCAL-USER} \ No newline at end of file diff --git a/base/facadeclient/src/test/.svn/entries b/base/facadeclient/src/test/.svn/entries deleted file mode 100644 index a62ead2..0000000 --- a/base/facadeclient/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/facadeclient/src/test/java/.svn/entries b/base/facadeclient/src/test/java/.svn/entries deleted file mode 100644 index e71c1fb..0000000 --- a/base/facadeclient/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/facadeclient/src/test/resources/.svn/entries b/base/facadeclient/src/test/resources/.svn/entries deleted file mode 100644 index 4cd12fa..0000000 --- a/base/facadeclient/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/facadeclient/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/.svn/entries b/base/persistence/.svn/entries deleted file mode 100644 index 2199164..0000000 --- a/base/persistence/.svn/entries +++ /dev/null @@ -1,89 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pcustomer -dir - -pfirmas -dir - -plog -dir - -pviaticos -dir - -parmas -dir - -pom.xml -file - - - - -2022-07-28T03:40:32.804760Z -9a84500d88534e2437482fe039812bb3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1803 - -pgeneral -dir - -util -dir - -commondb -dir - -pbpm -dir - diff --git a/base/persistence/.svn/text-base/pom.xml.svn-base b/base/persistence/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 777df78..0000000 --- a/base/persistence/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,53 +0,0 @@ - - - - base - com.fp - 2.1 - - 4.0.0 - com.fp.base - persistence - persistence - 2.1 - pom - Financial Lifecycle Process Persistence Beans - - commondb - pgeneral - pcustomer - pbpm - util - plog - pviaticos - pfirmas - parmas - - - - com.fp.base.dto - dto - ${project.version} - - - com.fp.base.dto - common - ${project.version} - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - org.hibernate - hibernate-core - provided - - - org.hibernate - hibernate-entitymanager - provided - - - \ No newline at end of file diff --git a/base/persistence/commondb/.svn/dir-prop-base b/base/persistence/commondb/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/persistence/commondb/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/persistence/commondb/.svn/entries b/base/persistence/commondb/.svn/entries deleted file mode 100644 index f2c3839..0000000 --- a/base/persistence/commondb/.svn/entries +++ /dev/null @@ -1,99 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:32.404758Z -8e446ae3fb296d8a77b58890e44c2655 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -847 - -.pmd -file - - - - -2022-07-28T03:40:32.404758Z -a005c8627d2a64c8f23720db011d5372 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18996 - diff --git a/base/persistence/commondb/.svn/text-base/.pmd.svn-base b/base/persistence/commondb/.svn/text-base/.pmd.svn-base deleted file mode 100644 index 2f1733e..0000000 --- a/base/persistence/commondb/.svn/text-base/.pmd.svn-base +++ /dev/null @@ -1,601 +0,0 @@ - - - false - .ruleset - - - EmptyIfStmt - Basic Rules - - - EmptyWhileStmt - Basic Rules - - - EmptyTryBlock - Basic Rules - - - EmptyFinallyBlock - Basic Rules - - - EmptySwitchStatements - Basic Rules - - - JumbledIncrementer - Basic Rules - - - ForLoopShouldBeWhileLoop - Basic Rules - - - UnnecessaryConversionTemporary - Basic Rules - - - OverrideBothEqualsAndHashcode - Basic Rules - - - DoubleCheckedLocking - Basic Rules - - - ReturnFromFinallyBlock - Basic Rules - - - EmptySynchronizedBlock - Basic Rules - - - UnnecessaryReturn - Basic Rules - - - EmptyStaticInitializer - Basic Rules - - - UnconditionalIfStatement - Basic Rules - - - EmptyStatementNotInLoop - Basic Rules - - - BooleanInstantiation - Basic Rules - - - UnnecessaryFinalModifier - Basic Rules - - - CollapsibleIfStatements - Basic Rules - - - UselessOverridingMethod - Basic Rules - - - ClassCastExceptionWithToArray - Basic Rules - - - AvoidDecimalLiteralsInBigDecimalConstructor - Basic Rules - - - UselessOperationOnImmutable - Basic Rules - - - MisplacedNullCheck - Basic Rules - - - UnusedNullCheckInEquals - Basic Rules - - - AvoidThreadGroup - Basic Rules - - - BrokenNullCheck - Basic Rules - - - AvoidUsingOctalValues - Basic Rules - - - AvoidUsingHardCodedIP - Basic Rules - - - CheckResultSet - Basic Rules - - - AvoidMultipleUnaryOperators - Basic Rules - - - EmptyInitializer - Basic Rules - - - NPathComplexity - Code Size Rules - - - ExcessiveMethodLength - Code Size Rules - - - NcssMethodCount - Code Size Rules - - - NcssTypeCount - Code Size Rules - - - NcssConstructorCount - Code Size Rules - - - VariableNamingConventions - Naming Rules - - - MethodNamingConventions - Naming Rules - - - ClassNamingConventions - Naming Rules - - - AvoidDollarSigns - Naming Rules - - - MethodWithSameNameAsEnclosingClass - Naming Rules - - - SuspiciousHashcodeMethodName - Naming Rules - - - SuspiciousConstantFieldName - Naming Rules - - - SuspiciousEqualsMethodName - Naming Rules - - - AvoidFieldNameMatchingTypeName - Naming Rules - - - AvoidFieldNameMatchingMethodName - Naming Rules - - - NoPackage - Naming Rules - - - PackageCase - Naming Rules - - - MisleadingVariableName - Naming Rules - - - BooleanGetMethodName - Naming Rules - - - MoreThanOneLogger - Java Logging Rules - - - LoggerIsNotStaticFinal - Java Logging Rules - - - SystemPrintln - Java Logging Rules - - - AvoidPrintStackTrace - Java Logging Rules - - - IfStmtsMustUseBraces - Braces Rules - - - WhileLoopsMustUseBraces - Braces Rules - - - IfElseStmtsMustUseBraces - Braces Rules - - - ForLoopsMustUseBraces - Braces Rules - - - UseSingleton - Design Rules - - - SimplifyBooleanReturns - Design Rules - - - SimplifyBooleanExpressions - Design Rules - - - SwitchStmtsShouldHaveDefault - Design Rules - - - SwitchDensity - Design Rules - - - AccessorClassGeneration - Design Rules - - - FinalFieldCouldBeStatic - Design Rules - - - CloseResource - Design Rules - - - NonStaticInitializer - Design Rules - - - DefaultLabelNotLastInSwitchStmt - Design Rules - - - NonCaseLabelInSwitchStatement - Design Rules - - - OptimizableToArrayCall - Design Rules - - - BadComparison - Design Rules - - - EqualsNull - Design Rules - - - InstantiationToGetClass - Design Rules - - - IdempotentOperations - Design Rules - - - AvoidProtectedFieldInFinalClass - Design Rules - - - MissingStaticMethodInNonInstantiatableClass - Design Rules - - - MissingBreakInSwitch - Design Rules - - - UseNotifyAllInsteadOfNotify - Design Rules - - - AvoidInstanceofChecksInCatchClause - Design Rules - - - AbstractClassWithoutAbstractMethod - Design Rules - - - SimplifyConditional - Design Rules - - - CompareObjectsWithEquals - Design Rules - - - PositionLiteralsFirstInComparisons - Design Rules - - - UnnecessaryLocalBeforeReturn - Design Rules - - - NonThreadSafeSingleton - Design Rules - - - UncommentedEmptyMethod - Design Rules - - - AvoidConstantsInterface - Design Rules - - - UnsynchronizedStaticDateFormatter - Design Rules - - - PreserveStackTrace - Design Rules - - - UseCollectionIsEmpty - Design Rules - - - ClassWithOnlyPrivateConstructorsShouldBeFinal - Design Rules - - - EmptyMethodInAbstractClassShouldBeAbstract - Design Rules - - - SingularField - Design Rules - - - ReturnEmptyArrayRatherThanNull - Design Rules - - - AbstractClassWithoutAnyMethod - Design Rules - - - TooFewBranchesForASwitchStatement - Design Rules - - - ReplaceVectorWithList - Migration Rules - - - ReplaceHashtableWithMap - Migration Rules - - - ReplaceEnumerationWithIterator - Migration Rules - - - AvoidEnumAsIdentifier - Migration Rules - - - AvoidAssertAsIdentifier - Migration Rules - - - IntegerInstantiation - Migration Rules - - - ByteInstantiation - Migration Rules - - - ShortInstantiation - Migration Rules - - - LongInstantiation - Migration Rules - - - JUnit4TestShouldUseBeforeAnnotation - Migration Rules - - - JUnit4TestShouldUseAfterAnnotation - Migration Rules - - - JUnit4TestShouldUseTestAnnotation - Migration Rules - - - JUnit4SuitesShouldUseSuiteAnnotation - Migration Rules - - - JUnitUseExpected - Migration Rules - - - AvoidDuplicateLiterals - String and StringBuffer Rules - - - StringToString - String and StringBuffer Rules - - - InefficientStringBuffering - String and StringBuffer Rules - - - UnnecessaryCaseChange - String and StringBuffer Rules - - - UseStringBufferLength - String and StringBuffer Rules - - - AppendCharacterWithChar - String and StringBuffer Rules - - - ConsecutiveLiteralAppends - String and StringBuffer Rules - - - UseIndexOfChar - String and StringBuffer Rules - - - InefficientEmptyStringCheck - String and StringBuffer Rules - - - InsufficientStringBufferDeclaration - String and StringBuffer Rules - - - UselessStringValueOf - String and StringBuffer Rules - - - StringBufferInstantiationWithChar - String and StringBuffer Rules - - - UseEqualsToCompareStrings - String and StringBuffer Rules - - - AvoidStringBufferField - String and StringBuffer Rules - - - LooseCoupling - Type Resolution Rules - - - CloneMethodMustImplementCloneable - Type Resolution Rules - - - UnusedImports - Type Resolution Rules - - - UnnecessaryConstructor - Controversial Rules - - - UnusedModifier - Controversial Rules - - - AssignmentInOperand - Controversial Rules - - - AtLeastOneConstructor - Controversial Rules - - - DontImportSun - Controversial Rules - - - SuspiciousOctalEscape - Controversial Rules - - - DefaultPackage - Controversial Rules - - - BooleanInversion - Controversial Rules - - - AvoidFinalLocalVariable - Controversial Rules - - - AvoidUsingShortType - Controversial Rules - - - AvoidUsingVolatile - Controversial Rules - - - AvoidUsingNativeCode - Controversial Rules - - - AvoidAccessibilityAlteration - Controversial Rules - - - DoNotCallGarbageCollectionExplicitly - Controversial Rules - - - UnusedPrivateField - Unused Code Rules - - - UnusedLocalVariable - Unused Code Rules - - - UnusedPrivateMethod - Unused Code Rules - - - UnusedFormalParameter - Unused Code Rules - - - AvoidDeeplyNestedIfStmts - Design Rules - - - CyclomaticComplexity - Code Size Rules - - - false - true - diff --git a/base/persistence/commondb/.svn/text-base/pom.xml.svn-base b/base/persistence/commondb/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 6866f10..0000000 --- a/base/persistence/commondb/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,27 +0,0 @@ - - - - persistence - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.persistence - commondb - commondb - - - com.fp.base.persistence - pgeneral - 2.1 - - - org.codehaus.btm - btm - provided - - - - diff --git a/base/persistence/commondb/src/.svn/entries b/base/persistence/commondb/src/.svn/entries deleted file mode 100644 index 0283836..0000000 --- a/base/persistence/commondb/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/commondb/src/main/.svn/entries b/base/persistence/commondb/src/main/.svn/entries deleted file mode 100644 index 4cadc91..0000000 --- a/base/persistence/commondb/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/persistence/commondb/src/main/java/.svn/entries b/base/persistence/commondb/src/main/java/.svn/entries deleted file mode 100644 index 607b832..0000000 --- a/base/persistence/commondb/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/commondb/src/main/java/com/.svn/entries b/base/persistence/commondb/src/main/java/com/.svn/entries deleted file mode 100644 index 6d2ee25..0000000 --- a/base/persistence/commondb/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/commondb/src/main/java/com/fp/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/.svn/entries deleted file mode 100644 index d045dce..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index f4845d0..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -commondb -dir - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/entries deleted file mode 100644 index dfbc4b3..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/entries +++ /dev/null @@ -1,284 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -FlipUserTransaction.java -file - - - - -2022-07-28T03:40:31.987757Z -1ddaed4b0e547853814e0761ee6f6434 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1641 - -PersistenceManager.java -file - - - - -2022-07-28T03:40:31.987757Z -80f201f681ffcd6c8fbc95eea00dac81 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13018 - -log -dir - -NestedSave.java -file - - - - -2022-07-28T03:40:31.988757Z -7bb889b33c538f7e2c1e380864efdbcc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2133 - -cache -dir - -GeneralQuery.java -file - - - - -2022-07-28T03:40:31.988757Z -e90dc0f26f61d935e9d91dc49e86b88d -2014-11-25T04:30:55.012264Z -3075 -cpiedra - - - - - - - - - - - - - - - - - - - - - -8103 - -PersistenceHelper.java -file - - - - -2022-07-28T03:40:31.988757Z -4616e9eeef568507b03b8540a9d03eef -2014-10-27T05:10:06.348806Z -1962 -dcruz - - - - - - - - - - - - - - - - - - - - - -31899 - -db -dir - -PersistenceMetadata.java -file - - - - -2022-07-28T03:40:31.988757Z -7f0cb337d9a8536c8fd838be620cc43f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10182 - -data -dir - -HqlStatement.java -file - - - - -2022-07-28T03:40:31.989757Z -c8da52d99cb9371d9ded6af00c8d8a60 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11035 - -exception -dir - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/FlipUserTransaction.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/FlipUserTransaction.java.svn-base deleted file mode 100644 index b5cf667..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/FlipUserTransaction.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.persistence.commondb; - -import javax.persistence.EntityManager; -import javax.persistence.PersistenceException; -import javax.transaction.NotSupportedException; -import javax.transaction.RollbackException; -import javax.transaction.Status; -import javax.transaction.SystemException; -import javax.transaction.UserTransaction; - -public class FlipUserTransaction implements UserTransaction { - - private EntityManager em; - - public FlipUserTransaction(EntityManager em) { - this.em = em; - } - - public void begin() throws NotSupportedException { - if (em.getTransaction().isActive()) { - throw new NotSupportedException(); - } - em.getTransaction().begin(); - } - - public void commit() throws RollbackException { - try { - em.getTransaction().commit(); - } catch (javax.persistence.RollbackException e) { - throw new RollbackException(e.getMessage()); - } - } - - public void rollback() throws SystemException { - try { - em.getTransaction().rollback(); - } catch (PersistenceException e) { - throw new SystemException(e.getMessage()); - } - } - - public void setRollbackOnly() { - em.getTransaction().setRollbackOnly(); - } - - public int getStatus() { - if (em.getTransaction().isActive()) { - return Status.STATUS_ACTIVE; - } else { - return Status.STATUS_NO_TRANSACTION; - } - } - - public void setTransactionTimeout(int timeout) { - throw new UnsupportedOperationException(); - } - - public void close() { - try { - if (em.isOpen()) { - em.clear(); - em.close(); - } - } catch (Exception e) { - // No hacer nada la sessioo no est aabierta - } - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/GeneralQuery.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/GeneralQuery.java.svn-base deleted file mode 100644 index 564aed6..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/GeneralQuery.java.svn-base +++ /dev/null @@ -1,222 +0,0 @@ -package com.fp.persistence.commondb; - -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.Query; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; - -/** - * Clase que agrega los parametros y valores a una consulta - * - * @author wpatio - */ -public class GeneralQuery { - - /** - * Mtodo que agrega los parmetros de una consulta - * - * @param qb - * @param jpql - * @param mcriteria - * @throws Exception - */ - public static void addParameters(QueryBean qb, StringBuilder jpql, Map mcriteria) throws Exception { - GeneralQuery.addParameters(qb, jpql, mcriteria, false); - } - - /** - * Mtodo que agrega los parmetros de una consulta - * - * @param qb - * @param jpql - * @param mcriteria - * @throws Exception - */ - public static void addParameters(QueryBean qb, StringBuilder jpql, Map mcriteria, boolean isnative) throws Exception { - if (qb == null) { - return; - } - List lcriteria = qb.getCriteria(); - for (QueryCriteria obj : lcriteria) { - String condition = obj.getOperation(); - if (obj.getProperty() == null || obj.getValue() == null && condition == null) { - continue; - } - String aux = obj.getProperty(); - if (isnative) { - if (aux.indexOf(".") > 0) { - // Es if va en este punto por que el in puede llegar en un campo de llave primaria o en cualquier - // otro campo. - aux = aux.substring(3, aux.length()); - } - String param = obj.getProperty(); - if (condition.compareTo("in") == 0 || condition.compareTo("not in") == 0) { - jpql.append(" and t.").append(aux).append(" ").append(obj.getOperation()).append(" (").append(obj.getValue()).append(") "); - aux = null; - } else { - jpql.append(" and t.").append(aux).append(" ").append(obj.getOperation()).append(" :").append(param); - aux = param; - } - - } else { - aux = aux.replace(".", "_"); - jpql.append(" and t.").append(obj.getProperty()).append(" ").append(obj.getOperation()).append(" :").append(aux); - } - - if (aux != null) { - mcriteria.put(aux, obj.getValue()); - } - - } - // Order by de la sentencia - boolean first = true; - for (QueryCriteria order : qb.getOrder(true)) { - if (first) { - jpql.append(" ORDER BY "); - } else { - jpql.append(" ,"); - } - jpql.append("t.").append(order.getProperty()).append(" asc "); - first = false; - } - } - - /** - * Metodo que agrega el valos a los parametros para la consulta - * - * @param qb - * @param mcriteria - * @param qry - * @throws Exception - */ - public static void setParameters(QueryBean qb, Map mcriteria, Query qry) throws Exception { - if (qb == null) { - return; - } - Object beanReference = Class.forName(qb.getBeanName()).newInstance(); - Set s = mcriteria.keySet(); - Class type = null; - for (String key : s) { - try { - String aux = key; - aux = aux.replace("_", "."); - type = BeanManager.getBeanGetterMethod(beanReference, aux).getReturnType(); - } catch (Exception e1) { - APPLogger.getLogger().error(e1.getStackTrace()); - } - Object value = mcriteria.get(key); - try { - value = BeanManager.convertObject(value, type); - } catch (Exception e) { - } - qry.setParameter(key, value); - } - Integer page = qb.getPage(); - if (page != null && page >= 0 && qb.getPageSize() > 0) { - if (page > 1) { - qry.setFirstResult((qb.getPage() - 1) * qb.getPageSize()); - } - qry.setMaxResults(qb.getPageSize()); - } - } - - public static void paginate(QueryBean qb, Query qry) throws Exception { - Integer page = new Integer(qb.getPage()); - Integer recordperpage = new Integer(qb.getPageSize()); - if (page != null && recordperpage != null && page >= 0 && recordperpage > 0) { - if (page > 1) { - qry.setFirstResult((page - 1) * recordperpage); - } - qry.setMaxResults(recordperpage); - } - } - - public static void addParametersJSF(StringBuilder jpql, DtoQuery dto) { - GeneralQuery.addParametersJSF(jpql, dto, true); - } - - /** - * Agrega parametros a una consulta JSF - * - * @param jpql Consulta - * @param dto Objeto data transport - */ - public static void addParametersJSF(StringBuilder jpql, DtoQuery dto, boolean addwhere) { - List lfilters = dto.getLfilter(); - boolean first = addwhere; - String aux = " and "; - if (!lfilters.isEmpty()) { - for (Filter filter : lfilters) { - String condition = filter.getCondition() != null ? "=" : filter.getValue().indexOf("%") >= 0 ? "like" : "="; - jpql.append(aux).append("t." + filter.getField() + " ").append(condition).append(" :" + filter.getField().replace(".", "_")); - } - } - } - - /** - * Fija el valor a parametros de una consulta JSF - * - * @param jpql Consulta - * @param dto Objeto data transport - * @param - */ - public static void setParametersJSF(StringBuilder jpql, DtoQuery dto, Query qry) throws Exception { - List lfilters = dto.getLfilter(); - Object beanReference = Class.forName(dto.getBeanname()).newInstance(); - try { - Object beankey = Class.forName(dto.getBeanname() + "Key").newInstance(); - if (beankey != null) { - BeanManager.setBeanAttributeValue(beanReference, "pk", beankey); - } - } catch (Exception e) { - // No hacer nada - } - - Class type = null; - if (!lfilters.isEmpty()) { - for (Filter filter : lfilters) { - type = BeanManager.getBeanGetterMethod(beanReference, filter.getField()).getReturnType(); - Object value = BeanManager.convertObject(filter.getValue(), type); - qry.setParameter(filter.getField().replace(".", "_"), value); - } - } - Integer pagina = dto.getPage(); - Integer numreg = dto.getRecperpage() == null ? 10 : dto.getRecperpage(); - // Control de paginacion. - if (dto.isMultirecord()) { - qry.setFirstResult(pagina); - qry.setMaxResults(numreg); - } - } - - /** - * Fija el valor a parametros de una consulta JSF - * - * @param jpql Consulta - * @param dto Objeto data transport - * @param - */ - public static void setParametersNative(StringBuilder jpql, DtoQuery dto, Query qry) throws Exception { - List lfilters = dto.getLfilter(); - if (!lfilters.isEmpty()) { - for (Filter filter : lfilters) { - qry.setParameter(filter.getField().replace(".", "_"), filter.getValue()); - } - } - Integer page = dto.getPage(); - if (page != null && page >= 0 && dto.getRecperpage() > 0) { - if (page > 1) { - qry.setFirstResult((dto.getPage() - 1) * dto.getRecperpage()); - } - qry.setMaxResults(dto.getRecperpage()); - } - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/HqlStatement.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/HqlStatement.java.svn-base deleted file mode 100644 index fb0424b..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/HqlStatement.java.svn-base +++ /dev/null @@ -1,394 +0,0 @@ -package com.fp.persistence.commondb; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.SQLException; -import java.sql.Timestamp; -import java.text.ParseException; -import java.util.HashMap; -import java.util.Iterator; -import java.util.Map; -import java.util.Set; - -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Parameter; -import javax.persistence.Query; - -import org.apache.log4j.Logger; -import org.hibernate.HibernateException; - -import com.fp.common.exception.CommonException; -import com.fp.common.logger.APPLogger; -import com.fp.dto.hb.Log; -import com.fp.persistence.commondb.exception.CommondbException; - -/** - * @author jorge - * - */ -public class HqlStatement { - - /** - * Map auxiliar empleado para el manejo de Parametros - */ - private Map map; - - /** - * Sentencia HQL a ejecutar - */ - private String sentence; - - /** - * EntityManager de hibernate empleada en la consulta - */ - private EntityManager em; - - /** - * Indicador de si la consulta requiere manejar Cache - */ - private boolean cacheAbled = false; - - /** - * Indicador de si la consulta es de Lectura solamente - */ - private boolean readonly = false; - - /** - * Pagina en la que se encuentra la consulta - */ - private Integer page = null; - - /** - * Numero de registros por pagina - */ - private Integer recordperpage = null; - - private Integer i = null; - - /** - * Referencia al Log - */ - private Logger log = APPLogger.getLogger(); - - /** - * Entrega el valor de page. - * - * @return page. - */ - public Integer getPage() { - return this.page; - } - - /** - * Fija el valor de page. - * - * @param pPage. - */ - public void setPage(Integer pPage) { - this.page = pPage; - } - - /** - * Entrega el valor de recordperpage. - * - * @return recordperpage. - */ - public Integer getRecordperpage() { - return this.recordperpage; - } - - /** - * Fija el valor de recordperpage. - * - * @param pRecordperpage. - */ - public void setRecordperpage(Integer pRecordperpage) { - this.recordperpage = pRecordperpage; - } - - /** - * Crea una nueva instancia de UtilHB - * - * @throws CommonException - * - */ - public HqlStatement() throws CommondbException { - this(null); - } - - /** - * Crea una nueva instancia con una sentencia a ejecutar. - * - * @param pSentence Sentencia a ejecutar - * @param pLockMode Tipo de Bloqueo Pesismista - * @param pLocktime Tiempo de espera para un bloqueo pesimista. - * @throws CommonException - * @throws Exception - */ - public HqlStatement(String pSentence) throws CommondbException { - this.sentence = pSentence; - this.map = new HashMap(); - this.em = PersistenceHelper.getEntityManager(); - } - - /** - * Fija un criterio string de la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pString - */ - public void setString(String pParameter, String pString) { - this.map.put(pParameter, pString); - } - - /** - * Fija un criterio Data a la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pDate - */ - public void setDate(String pParameter, Date pDate) { - this.map.put(pParameter, pDate); - } - - /** - * Fija un criterio Timestamp a la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pTimestamp - */ - public void setTimestamp(String pParameter, Timestamp pTimestamp) { - this.map.put(pParameter, pTimestamp); - } - - /** - * Fija un criterio Integer a la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pInteger - */ - public void setInteger(String pParameter, Integer pInteger) { - if (pInteger == null) { - this.map.put(pParameter, Integer.class); - } else { - this.map.put(pParameter, pInteger); - } - } - - - /** - * Fija un criterio Long a la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pLong - */ - public void setLong(String pParameter, Long pLong) { - if (pLong == null) { - this.map.put(pParameter, Long.class); - } else { - this.map.put(pParameter, pLong); - } - } - - /** - * Fija un criterio BigDecimal a la sentencia. El nombre del parametro debe ser igual al del where de la sentencia. - * - * @param pParameter - * @param pBigdecimal - */ - public void setBigDecimal(String pParameter, BigDecimal pBigdecimal) { - if (pBigdecimal == null) { - this.map.put(pParameter, BigDecimal.class); - } else { - this.map.put(pParameter, pBigdecimal); - } - } - - /** - * Setea valores de parametros definidos previamente en una sentencia. - * - * @param pMparamters Map con el nombre del parametro y el valor del mismo. - * @throws Exception - */ - public void setParametersValue(Map pMparamters) { - Iterator itr = pMparamters.keySet().iterator(); - while (itr.hasNext()) { - String key = itr.next(); - Object value = pMparamters.get(key); - if (value instanceof String) { - this.setString(key, (String) value); - } - if (value instanceof Integer) { - this.setInteger(key, (Integer) value); - } - if (value instanceof Long) { - this.setLong(key, (Long) value); - } - if (value instanceof BigDecimal) { - this.setBigDecimal(key, (BigDecimal) value); - } - if (value instanceof Date) { - this.setDate(key, (Date) value); - } - if (value instanceof Timestamp) { - this.setTimestamp(key, (Timestamp) value); - } - } - } - - /** - * Retorna: un entity si la sentencia retorna un entity, si es un conjunto de campos de una o mas tablas retorna un - * Array. - *
        - *
      1. Objeto que contiene una entidad si la sentencia retorna un entity
        - * sentencia ==> from com.test.Test as t where t.pk.c1 = :valor1
      2. - *
      3. Array que contiene una entidad si la sentencia retorna mas de un campo
        - * sentencia ==> select t.c1,t.c2...t.c3 from com.test.Test as t
      4. - *
      5. Array que contiene una entidades o campos cuando existe junturas. sentencia ==> from com.test.Test a,from - * com.test.Testuno b where a.pk=b.pk and b.pk.lenguage = 'ES'
      6. - *
      - * - * @return - * @throws CommonException - * @throws HibernateException - * @throws ParseException - * @throws Exception - */ - public Object getObject() throws HibernateException, CommondbException, ParseException, SQLException, Exception { - Object obj = null; - try { - obj = this.execute().getSingleResult(); - } catch (NoResultException e) { - return obj; - } - if (this.readonly) { - this.em.detach(obj); - } - return obj; - } - - @SuppressWarnings("unchecked") - public T getObject(@SuppressWarnings("unused") - Class pType) throws HibernateException, CommondbException, ParseException, SQLException, Exception { - T obj = null; - try { - obj = (T) this.execute().getSingleResult(); - } catch (NoResultException e) { - return obj; - } - if (this.readonly) { - this.em.detach(obj); - } - return obj; - } - - /** - * Ejecuta una sentencia. - * - * @return - * @throws CommonException - * @throws ParseException - * @throws Exception - */ - @SuppressWarnings("rawtypes") - public Query execute() throws CommondbException, ParseException, Exception { - if (this.sentence == null) { - throw new CommondbException("COMMONDB-0007", "SENTENCIA INVALIDA"); - } - // Query qry=(QueryImpl)em.createQuery(sentence); - APPLogger.getLogger().debug("Sentencia ==> " + this.sentence); - Query qry = this.em.createQuery(this.sentence); - Set> param = qry.getParameters(); - // String[]param=qry.getNamedParameters(); - for (Parameter par : param) { - String parameter = par.getName(); - Object obj = this.map.get(parameter); - if (obj == null) { - throw new CommondbException("COMMONDB-0008", "VALOR NO ENVIADO {0}", parameter); - } - qry.setParameter(parameter, obj); - } - if ((this.page != null) && (this.recordperpage != null) && (this.page >= 0) && (this.recordperpage > 0)) { - if (this.page > 1) { - qry.setFirstResult((this.page - 1) * this.recordperpage); - } - qry.setMaxResults(this.recordperpage); - } - return qry; - } - - /** - * Fija una sentencia a ejecutar. - * - * @param pSentence - */ - public void setSentence(String pSentence) { - this.map.clear(); - this.sentence = pSentence; - } - - /** - * Entrega la sentencia a ejecutar. - * - * @return - */ - public String getSentence() { - return this.sentence; - } - - /** - * Marca la setencia para cache. - * - * @param cacheAbled - */ - public void setCacheAbled(boolean cacheAbled) { - this.cacheAbled = cacheAbled; - } - - /** - * Indica si la sentencia esta marcada para cache. - * - * @return - */ - public boolean isCacheAbled() { - return this.cacheAbled; - } - - /** - * Fija la sentencia en readonly. - * - * @param readonly - */ - public void setReadonly(boolean readonly) { - this.readonly = readonly; - } - - /** - * Indica si la sentencia a ejecutar es solo de lectura. - * - * @return - */ - public boolean isReadonly() { - return this.readonly; - } - - /** - * Entrega el valor de: i - * - * @return Integer - */ - public Integer getI() { - return this.i; - } - - /** - * Fija el valor de: i - * - * @param i value to set - */ - public void setI(Integer i) { - this.i = i; - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.netbeans-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.netbeans-base deleted file mode 100644 index 0ad5ef8..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.netbeans-base +++ /dev/null @@ -1,62 +0,0 @@ -package com.fp.persistence.commondb; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; - -/** - * Clase que permite grabar o actualizar informacin en la base de datos en una sesin de base de datos independiente a - * la utiliza en la ejecucin de una transaccin.. - * - * @version 2.1 - */ -public class NestedSave extends Thread { - private final HibernateBean[] bean; - - private final Integer company; - - private boolean merge; - - public NestedSave(Integer pCompany, HibernateBean... pBean) { - bean = pBean; - company = pCompany; - } - - public NestedSave(Integer pCompany, boolean merge, HibernateBean... pBean) { - bean = pBean; - company = pCompany; - this.merge = merge; - } - - @Override - public void run() { - try { - SessionData s = new SessionData(); - s.setCompany(company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - for (HibernateBean b : bean) { - if (!merge) { - APPLogger.getLogger().info("Inserta registro de auditoria"); - PersistenceHelper.getEntityManager().detach(b); - PersistenceHelper.save(b); - } else { - PersistenceHelper.getEntityManager().merge(b); - } - - } - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackNewTransaction(); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - APPLogger.getLogger().error("Stack trace:==>\n" + eh.getStackTrace()); - } finally { - PersistenceHelper.closeSession(); - } - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.svn-base deleted file mode 100644 index 0ad5ef8..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/NestedSave.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ -package com.fp.persistence.commondb; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; - -/** - * Clase que permite grabar o actualizar informacin en la base de datos en una sesin de base de datos independiente a - * la utiliza en la ejecucin de una transaccin.. - * - * @version 2.1 - */ -public class NestedSave extends Thread { - private final HibernateBean[] bean; - - private final Integer company; - - private boolean merge; - - public NestedSave(Integer pCompany, HibernateBean... pBean) { - bean = pBean; - company = pCompany; - } - - public NestedSave(Integer pCompany, boolean merge, HibernateBean... pBean) { - bean = pBean; - company = pCompany; - this.merge = merge; - } - - @Override - public void run() { - try { - SessionData s = new SessionData(); - s.setCompany(company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - for (HibernateBean b : bean) { - if (!merge) { - APPLogger.getLogger().info("Inserta registro de auditoria"); - PersistenceHelper.getEntityManager().detach(b); - PersistenceHelper.save(b); - } else { - PersistenceHelper.getEntityManager().merge(b); - } - - } - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - PersistenceHelper.rollbackNewTransaction(); - ExceptionHandler eh = new ExceptionHandler(e, "es"); - String usrmsg = eh.getUserMessage(); - APPLogger.getLogger().error("User Message:==>\n" + usrmsg); - APPLogger.getLogger().error("Stack trace:==>\n" + eh.getStackTrace()); - } finally { - PersistenceHelper.closeSession(); - } - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceHelper.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceHelper.java.svn-base deleted file mode 100644 index 9cc5e0e..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceHelper.java.svn-base +++ /dev/null @@ -1,853 +0,0 @@ -package com.fp.persistence.commondb; - -import java.sql.Timestamp; -import java.util.ResourceBundle; - -import javax.ejb.NoSuchEntityException; -import javax.naming.Context; -import javax.naming.InitialContext; -import javax.naming.NameNotFoundException; -import javax.naming.NamingException; -import javax.persistence.EntityManager; -import javax.persistence.EntityTransaction; -import javax.persistence.Query; -import javax.persistence.TypedQuery; -import javax.transaction.HeuristicMixedException; -import javax.transaction.HeuristicRollbackException; -import javax.transaction.NotSupportedException; -import javax.transaction.RollbackException; -import javax.transaction.SystemException; -import javax.transaction.TransactionManager; -import javax.transaction.UserTransaction; - -import org.hibernate.HibernateException; -import org.hibernate.Session; - -import bitronix.tm.TransactionManagerServices; - -import com.fp.common.exception.APPException; -import com.fp.common.exception.CommonException; -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.data.SaveData; -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.History; -import com.fp.dto.hb.Log; -import com.fp.persistence.commondb.cache.CacheManager; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.commondb.log.Audit; - -public class PersistenceHelper { - - /** - * Almacena un EntityManager de JPA. - */ - private static final ThreadLocal threadSession = new ThreadLocal(); - /** - * Almacena una transaccion de Hibernate. - */ - // private static final ThreadLocal threadTransaction = new ThreadLocal(); - private static final ThreadLocal threadTransaction = new ThreadLocal(); - private static final ThreadLocal threadTransactionManager = new ThreadLocal(); - private static final ThreadLocal threadEntityTransaction = new ThreadLocal(); - private static final ThreadLocal threadcommit = new ThreadLocal(); - - /** - * Retorna una session de hibernate. - * - * @return s - * @throws CommonException - * @throws Exception - */ - public static Session getSession() throws CommondbException { - Session s = (Session) PersistenceHelper.threadSession.get().getDelegate(); - if (s == null) { - throw new CommondbException("COMMONDB-0004", "SESION NO ASOCIADA A UNA TRANSACCION"); - } - return s; - } - - public static boolean isrollbackonly() { - try { - UserTransaction ut = PersistenceHelper.threadTransaction.get(); - if (ut != null) { - int i = ut.getStatus(); - if (i == javax.transaction.Status.STATUS_MARKED_ROLLBACK) { - return true; - } - } - TransactionManager tm = PersistenceHelper.threadTransactionManager.get(); - if (tm != null) { - int i = tm.getStatus(); - if (i == javax.transaction.Status.STATUS_MARKED_ROLLBACK) { - return true; - } - } - return false; - } catch (Exception e) { - return false; - } - } - - /** - * Retorna una Connection de tipo sql - * - * @return Connection - * @throws CommonException - * @throws Exception - */ - @SuppressWarnings("deprecation") - /* - public static Connection getConnection() throws CommondbException { - Session s = (Session) PersistenceHelper.threadSession.get().getDelegate(); - if (s == null) { - throw new CommondbException("COMMONDB-0004", "SESION NO ASOCIADA A UNA TRANSACCION"); - } - return s.connection(); - } - */ - - public static EntityManager getEntityManager() throws CommondbException { - EntityManager em = PersistenceHelper.threadSession.get(); - if (em == null) { - throw new CommondbException("COMMONDB-0004", "SESION NO ASOCIADA A UNA TRANSACCION"); - } - return em; - } - - /** - * Encera y cierra el EntityManager. - */ - public static void closeSession() { - try { - EntityManager em = PersistenceHelper.threadSession.get(); - if ((em != null)) { - em.clear(); - } - if (em.isOpen()) { - em.close(); - } - PersistenceHelper.threadTransaction.set(null); - PersistenceHelper.threadSession.set(null); - PersistenceHelper.threadcommit.set(null); - PersistenceHelper.threadTransactionManager.set(null); - PersistenceHelper.threadEntityTransaction.set(null); - } catch (Exception e) { - APPLogger.getLogger().error(e); - } - } - - /** - * Fija una session de hibernate. - * - * @param session - * @throws Exception - */ - public static boolean getThreadcommit() { - if (PersistenceHelper.threadcommit.get() == null) { - return true; - } - return PersistenceHelper.threadcommit.get(); - } - - /** - * Fija una session de hibernate. - * - * @param session - * @throws Exception - */ - public static void setThreadcommit(boolean pDocommit) { - PersistenceHelper.threadcommit.set(pDocommit); - } - - /** - * Fija una session de hibernate. - * - * @param session - * @throws Exception - */ - public static void setEntityManager(EntityManager pEntityManager) { - PersistenceHelper.threadSession.set(pEntityManager); - } - - /** - * Inicia el proceso de una transaccion de hibernate.. - * - * @throws CommonException - * @throws HibernateException - * @throws SystemException - * @throws NotSupportedException - * @throws NamingException - * @throws Exception - */ - public static EntityTransaction beginTransactionLocal() throws HibernateException, CommondbException, NotSupportedException, SystemException, - NamingException { - EntityTransaction et = PersistenceHelper.getEntityManager().getTransaction(); - PersistenceHelper.threadEntityTransaction.set(et); - et.begin(); - return et; - } - - /** - * Inicia el proceso de una transaccion de hibernate.. - * - * @throws CommonException - * @throws HibernateException - * @throws SystemException - * @throws NotSupportedException - * @throws NamingException - * @throws Exception - */ - public static UserTransaction beginTransaction() throws HibernateException, CommondbException, NotSupportedException, SystemException, - NamingException { - PersistenceHelper.called(); - UserTransaction ut = (UserTransaction) new InitialContext().lookup("java:comp/UserTransaction"); - PersistenceHelper.threadTransaction.set(ut); - ut.begin(); - PersistenceHelper.getEntityManager().joinTransaction(); - return ut; - } - - public static void beginNewTransaction() throws HibernateException, CommondbException, NotSupportedException, SystemException, NamingException { - // WebLogic javax.transaction.TransactionManager - // JBOSS java:/TransactionManager - TransactionManager tm = null; - try { - tm = (TransactionManager) new InitialContext().lookup("java:/TransactionManager"); - } catch (NameNotFoundException e) { - tm = TransactionManagerServices.getTransactionManager(); - } - - PersistenceHelper.threadTransactionManager.set(tm); - tm.begin(); - PersistenceHelper.getEntityManager().joinTransaction(); - - } - - /** - * Graba los dml que estan en la transaccion. - * - * @throws CommonException - * @throws Exception - */ - public static void commitNewTransaction() throws Exception { - if (!PersistenceHelper.getThreadcommit()) { - PersistenceHelper.rollbackNewTransaction(); - return; - } - if (PersistenceHelper.isrollbackonly()) { - PersistenceHelper.called(); - throw new APPException("FLIP01", "TRANSACCION NO PERMITE COMMIT"); - } - TransactionManager tx = PersistenceHelper.threadTransactionManager.get(); - try { - if ((tx != null)) { - try { - if (ResourceBundle.getBundle("jndi").getString(Context.INITIAL_CONTEXT_FACTORY) - .compareTo("bitronix.tm.jndi.BitronixInitialContextFactory") == 0) { - PersistenceHelper.flushTransaction(); - PersistenceHelper.getEntityManager().createNativeQuery("commit").executeUpdate(); - } - } catch (Exception e) { - // No hacer nada - } - - tx.commit(); - } else { - throw new CommondbException("COMMONDB-0005", "TRANSACCION YA APLICADA"); - } - } finally { - PersistenceHelper.getEntityManager().clear(); - PersistenceHelper.threadTransactionManager.set(null); - } - } - - /** - * Graba los dml que estan en la transaccion. - * - * @throws CommonException - * @throws Exception - */ - public static void commitTransaction() throws CommondbException, SecurityException, IllegalStateException, RollbackException, - HeuristicMixedException, HeuristicRollbackException, SystemException, APPException { - if (!PersistenceHelper.getThreadcommit()) { - PersistenceHelper.rollbackTransaction(); - return; - } - PersistenceHelper.called(); - if (PersistenceHelper.isrollbackonly()) { - throw new APPException("COMMONDB-0006", "TRANSACCION NO PUEDE SER PROCESADA "); - } - UserTransaction tx = PersistenceHelper.threadTransaction.get(); - try { - if ((tx != null)) { - tx.commit(); - } else { - throw new CommondbException("COMMONDB-0005", "TRANSACCION YA APLICADA"); - } - } finally { - PersistenceHelper.getEntityManager().clear(); - PersistenceHelper.threadTransaction.set(null); - } - } - - /** - * Graba los dml que estan en la transaccion. - * - * @throws CommonException - * @throws Exception - */ - public static void commitTransactionLocal() throws CommondbException, SecurityException, IllegalStateException, RollbackException, - HeuristicMixedException, HeuristicRollbackException, SystemException, APPException { - if (!PersistenceHelper.getThreadcommit()) { - PersistenceHelper.rollbackTransaction(); - return; - } - PersistenceHelper.called(); - if (PersistenceHelper.isrollbackonly()) { - throw new APPException("COMMONDB-0006", "TRANSACCION NO PUEDE SER PROCESADA "); - } - EntityTransaction tx = PersistenceHelper.threadEntityTransaction.get(); - try { - if ((tx != null)) { - tx.commit(); - } else { - throw new CommondbException("COMMONDB-0005", "TRANSACCION YA APLICADA"); - } - } finally { - PersistenceHelper.getEntityManager().clear(); - PersistenceHelper.threadTransaction.set(null); - } - } - - /** - * Graba los dml que estan en la transaccion. - * - * @throws CommondbException - */ - public static void flushTransaction() throws Exception { - - if (PersistenceHelper.isrollbackonly()) { - PersistenceHelper.called(); - throw new APPException("COMMONDB-0006", "TRANSACCION NO PUEDE SER PROCESADA "); - } - EntityManager em = PersistenceHelper.getEntityManager(); - em.flush(); - } - - private static void called() { - StackTraceElement st = new Exception().getStackTrace()[2]; - StackTraceElement st1 = new Exception().getStackTrace()[1]; - APPLogger.getLogger().info( - st1.getMethodName().toUpperCase() + "==>>" + st.getClassName() + "." + st.getMethodName() + ":" + st.getLineNumber()); - } - - /** - * rollback de los dml que estan dentro de la transaccion. - * - * @throws SystemException - * @throws SecurityException - * @throws IllegalStateException - * - * @throws CommonException - */ - public static void rollbackTransaction() { - PersistenceHelper.called(); - UserTransaction tx = PersistenceHelper.threadTransaction.get(); - try { - if ((tx != null)) { - try { - PersistenceHelper.getEntityManager().createNativeQuery("rollback").executeUpdate(); - } catch (Exception e) { - // NO HACER NADA - } - tx.setRollbackOnly(); - tx.rollback(); - } - } catch (Exception e1) { - APPLogger.getLogger().error(e1, e1); - } finally { - PersistenceHelper.threadTransaction.set(null); - } - } - - /** - * rollback de los dml que estan dentro de la transaccion. - * - * @throws SystemException - * @throws SecurityException - * @throws IllegalStateException - * - * @throws CommonException - */ - public static void rollbackTransactionLocal() { - PersistenceHelper.called(); - EntityTransaction tx = PersistenceHelper.threadEntityTransaction.get(); - try { - if ((tx != null)) { - try { - PersistenceHelper.getEntityManager().createNativeQuery("rollback").executeUpdate(); - } catch (Exception e) { - // NO HACER NADA - } - tx.setRollbackOnly(); - tx.rollback(); - } - } catch (Exception e1) { - APPLogger.getLogger().error(e1, e1); - } finally { - PersistenceHelper.threadTransaction.set(null); - } - } - - /** - * rollback de los dml que estan dentro de la transaccion. - * - * @throws SystemException - * @throws SecurityException - * @throws IllegalStateException - * - * @throws CommonException - */ - public static void rollbackNewTransaction() { - Exception e = new Exception(); - StackTraceElement s = e.getStackTrace()[1]; - APPLogger.getLogger().error(s.getClassName() + "." + s.getMethodName() + ":" + s.getLineNumber()); - TransactionManager tx = PersistenceHelper.threadTransactionManager.get(); - if (PersistenceHelper.isrollbackonly()) { - } - try { - if ((tx != null)) { - try { - PersistenceHelper.getEntityManager().createNativeQuery("rollback").executeUpdate(); - } catch (Exception ex) { - tx.setRollbackOnly(); - // NO HACER NADA - } - tx.setRollbackOnly(); - tx.rollback(); - } - } catch (Exception e1) { - APPLogger.getLogger().error(e1, e1); - } finally { - PersistenceHelper.threadTransactionManager.set(null); - } - } - - /** - * Retorna verdadero si a la transacci�n se dio un commit; - * - * @return boolean - * @throws Exception - */ - public static boolean isCommitted() throws Exception { - // EntityTransaction tx = PersistenceHelper.threadTransaction.get(); - UserTransaction tx = PersistenceHelper.threadTransaction.get(); - // if ((tx != null) && !tx.isActive()) { - if ((tx != null)) { - return false; - } - return true; - } - - /** - * Retorna verdadero si a la transacci�n se dio un commit; - * - * @return boolean - * @throws Exception - */ - public static boolean isRolledBack() throws Exception { - // EntityTransaction tx = PersistenceHelper.threadTransaction.get(); - // if ((tx != null) && !tx.isActive()) { - UserTransaction tx = PersistenceHelper.threadTransaction.get(); - if ((tx != null)) { - return false; - } - return true; - } - - /** - * Inserta un registro en la base de datos. - * - * @param pClassName Nombre de la clase que maneja la persistencia de una - * tabla. - * @param pBean Bean a insertar. - * @throws CommonException - * @throws Exception - */ - public static void save(HibernateBean pBean) throws CommondbException, Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Object id = BeanManager.getBeanAttributeValue(pBean, "pk"); - if ((id instanceof History)) { - if (BeanManager.getBeanAttributeValue(pBean, "datefrom") == null) { - Timestamp t = FormatDates.getInstance().getDataBaseTimestamp(); - BeanManager.setBeanAttributeValue(pBean, "datefrom", t); - } - History pk = (History) id; - BeanManager.setBeanAttributeValue(pk, "dateto", FormatDates.getDefaultExpiryTimestamp()); - } - PersistenceHelper.setIngressUser(pBean); - PersistenceHelper.setLastupdate(pBean); - PersistenceHelper.setCreationDate(pBean); - // s.psave(pClassName,pBean); - em.persist(pBean); - if (pBean instanceof Log) { - Audit.insert(pBean); - } - } - - /** - * Actualiza un registro en la base de datos. - * - * @param pBean Bean a actualiar. - * @throws CommonException - * @throws Exception - */ - public static void update(HibernateBean pBean) throws CommondbException { - EntityManager em = PersistenceHelper.getEntityManager(); - // pBean = em.merge(pBean); - if (!em.contains(pBean)) { - throw new NoSuchEntityException(); - } - } - - /** - * Actualiza o inserta un registro en la base de datos. - * - * @param pBean Bean a actualiar o insertar. - * @throws CommonException - * @throws Exception - */ - public static void saveOrUpdate(HibernateBean pBean) throws CommondbException, Exception { - PersistenceHelper.called(); - APPLogger.getLogger().info(pBean.getClass().getName()); - APPLogger.getLogger().debug(pBean); - EntityManager em = PersistenceHelper.getEntityManager(); - - Object id = BeanManager.getBeanAttributeValue(pBean, "pk"); - if ((id instanceof History)) { - HibernateBean bean = PersistenceHelper.manageHistory(pBean, id); - pBean = em.merge(bean); - } else { - em.detach(pBean); - PersistenceHelper.setModifyUser(pBean); - PersistenceHelper.setLastupdate(pBean); - PersistenceHelper.setCreationDate(pBean); - if (pBean instanceof Cache) { - // Limpia el cache de datos internamente obtiene el nombre real del bean sin considerar el paquete. - CacheManager cm = CacheManager.getInstance(); - cm.clean(pBean.getClass().getName()); - } - if ((pBean instanceof Log)) { - HibernateBean oldbean = em.find(pBean.getClass(), id); - if (oldbean != null) { - // Graba log de auditoria. - Audit.process(pBean, oldbean); - } - } - pBean = em.merge(pBean); - } - } - - public static void persist(HibernateBean pBean) throws CommondbException, Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - PersistenceHelper.setIngressUser(pBean); - em.persist(pBean); - Audit.insert(pBean); - } - - /** - * Metodo que se encarga de caducar un registro que maneja historia. - * - * @param pBean Bean a caducar. - * @throws CommondbException - * @throws Exception - */ - public static void expire(HibernateBean pBean) throws CommondbException, Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Object id = BeanManager.getBeanAttributeValue(pBean, "pk"); - if ((id instanceof History)) { - HibernateBean newbean = (HibernateBean) pBean.cloneMe(); - PersistenceHelper.getEntityManager().remove(pBean);; - History pk = (History) BeanManager.getBeanAttributeValue(newbean, "pk"); - pk.setDateto(FormatDates.getInstance().getDataBaseTimestamp()); - em.persist(newbean); - } - if (pBean instanceof Cache) { - // Limpia el cache de la tabla. - CacheManager cm = CacheManager.getInstance(); - cm.clean(pBean.getClass().getName()); - } - } - - /** - * Caduca registro persistente. - * - * @param pBean Bean a caducar. - * @throws CommonException - * @throws Exception - */ - public static void delete(HibernateBean pBean) throws CommondbException, Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Object id = BeanManager.getBeanAttributeValue(pBean, "pk"); - if (id == null) { - return; - } - if (pBean != null) { - if ((id instanceof History)) { - //Las siguientes 3 lineas corrigen el problema con los registros que manejan auditoria - History pk = (History) BeanManager.getBeanAttributeValue(pBean, "pk"); - if (pk.getDateto() == null) { - pk.setDateto(FormatDates.getDefaultExpiryTimestamp()); - } - HibernateBean newbean = (HibernateBean) pBean.cloneMe(); - PersistenceHelper.expireRecord(newbean, FormatDates.getInstance().getDataBaseTimestamp()); - } - if (!em.contains(pBean)) { - em.remove(em.find(pBean.getClass(), id)); - } else { - em.remove(pBean); - } - if (pBean instanceof Log) { - Audit.delete(pBean); - } - } - if (pBean instanceof Cache) { - // Limpia el cache de la tabla. - CacheManager cm = CacheManager.getInstance(); - cm.clean(pBean.getClass().getName()); - } - } - - /** - * Metodo que se encarga del manejo de la historia de registros en la base, - * si estos manejan date from date to. - * - * @param pBean Bena a almacenar en la base de datos. - * @return HibernateBean - * @throws Exception - */ - private static HibernateBean manageHistory(HibernateBean pBean, Object pid) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - Object id = pid; - HibernateBean oldbean = null; - HibernateBean newbean = pBean; - if ((id instanceof History)) { - History pk = (History) id; - if (pk.getDateto() == null) { - // Si es null y existe un registro en la base indica que se da mantenimiento sobre el mismo registro, en - // este caso - // se elimina de la base. - PersistenceHelper.verifyBean(em, pBean, id); - // pk.setDateto(null); - } - if (pk.getDateto() != null) { - Object obj = ((AbstractDataTransport)pBean).get("ORIGINALBEAN"); - if(obj == null){ - em.detach(pBean); - newbean = (HibernateBean) pBean.cloneMe(); - oldbean = em.find(pBean.getClass(), id); - if(oldbean != null){ - em.detach(oldbean); - } - }else{ - oldbean = (HibernateBean)obj; - } - - id = BeanManager.getBeanAttributeValue(newbean, "pk"); - pk = (History) id; - if (pk.getDateto().compareTo(FormatDates.getDefaultExpiryTimestamp()) < 0) { - return pBean; - } - } - Timestamp t = FormatDates.getInstance().getDataBaseTimestamp(); - if ((pBean instanceof Cache) && (oldbean != null)) { - // Limpia el cache de la tabla unicamente si esta dando mantenimiento a un registro. - CacheManager cm = CacheManager.getInstance(); - cm.clean(pBean.getClass().getName()); - } - if ((pBean instanceof Log)) { - // Graba log de auditoria. - if (oldbean != null) { - Audit.process(pBean, oldbean); - } else { - Audit.insert(pBean); - } - - } - if ((oldbean != null) && !BeanManager.compareObject(pBean, oldbean)) { - PersistenceHelper.expireRecord(oldbean, t); - BeanManager.setBeanAttributeValue(newbean, "datefrom", t); - } - if (BeanManager.getBeanAttributeValue(newbean, "datefrom") == null) { - BeanManager.setBeanAttributeValue(newbean, "datefrom", t); - } - BeanManager.setBeanAttributeValue(pk, "dateto", FormatDates.getDefaultExpiryTimestamp()); - PersistenceHelper.setpartition(pk, pk.getDateto()); - PersistenceHelper.setModifyUser(newbean); - } - return newbean; - } - - /** - * Si valor de dateto es null y existe un registro en la base indica que se - * da mantenimiento sobre el mismo registro, en este caso se elimina el - * registro de la base. - * - * @param em EntityManager utilizado en dml. - * @param pBean Referencia al bean persistente. - * @param id Pk del bean. - * @throws Exception - */ - private static void verifyBean(EntityManager em, HibernateBean pBean, Object id) throws Exception { - try { - History pk = (History) id; - pk.setDateto(FormatDates.getDefaultExpiryTimestamp()); - HibernateBean oldbean = em.find(pBean.getClass(), id); - if (oldbean != null) { - em.detach(pBean); - em.remove(oldbean); - } - } catch (Exception e) { - // No hacer nada - } - - } - - /** - * Metodo que expira un registro en la base de datos. - * - * @param pOldBean Objeto que contiene el registro de una tabla a expirar. - * @param pTimestamp Fecha con la cual se expira un registro. - * @throws Exception - */ - public static void expireRecord(HibernateBean pOldBean, Timestamp pTimestamp) throws Exception { - EntityManager em = PersistenceHelper.getEntityManager(); - History pk = (History) BeanManager.getBeanAttributeValue(pOldBean, "pk"); - pk.setDateto(pTimestamp); - PersistenceHelper.setpartition(pk, pTimestamp); - em.persist(pOldBean); - } - - /** - * Metodo fija la particion en un registro, la particion es yyyymm del campo - * dateto. - * - * @param pHistory Pk de un registro. - * @param pTimestamp fecha con la cual se caduca un registro. - * @throws Exception - */ - private static void setpartition(History pHistory, Timestamp pTimestamp) throws Exception { - try { - BeanManager.setBeanAttributeValue(pHistory, "partition", FormatDates.getPartition(pTimestamp)); - } catch (Exception e1) { - } - } - - /** - * Metodo que separa el objeto de la session de la base de datos. - * - * @param pBean Objeto a separar de la base de datos. - * @throws Exception - */ - public static void detatch(HibernateBean pBean) throws Exception { - if(pBean != null){ - PersistenceHelper.called(); - EntityManager em = PersistenceHelper.getEntityManager(); - em.detach(pBean); - } - } - - /** - * Fija el usuario de creacion de un registro. - * - * @param pBean Objeto a almacenar en la base de datos. - * @throws Exception - */ - public static void setIngressUser(HibernateBean pBean) throws Exception { - try { - BeanManager.setBeanAttributeValue(pBean, "ingressuser", SaveData.getSaveRequest().getUser()); - } catch (Exception e) { - try { - BeanManager.setBeanAttributeValue(pBean, "ingressusercode", SaveData.getSaveRequest().getUser()); - } catch (Exception e2) { - // Si no existe el campo en el bean no hacer nada. - } - } - } - - /** - * Fija el usuario de creacion de un registro. - * - * @param pBean Objeto a almacenar en la base de datos. - * @throws Exception - */ - public static void setLastupdate(HibernateBean pBean) throws Exception { - try { - BeanManager.setBeanAttributeValue(pBean, "lastupdate", SaveData.getSaveRequest().get("accountingdate")); - } catch (Exception e) { - // Si no existe el campo en el bean no hacer nada. - } - } - - /** - * Fija el fecha de admision de un registro. - * - * @param pBean Objeto a almacenar en la base de datos. - * @throws Exception - */ - public static void setCreationDate(HibernateBean pBean) throws Exception { - try { - if (BeanManager.getBeanAttributeValue(pBean, "creationdate") == null) { - BeanManager.setBeanAttributeValue(pBean, "creationdate", SaveData.getSaveRequest().get("accountingdate")); - } - } catch (Exception e) { - // Si no existe el campo en el bean no hacer nada. - } - } - - /** - * Fija el usuario de creacion de un registro. - * - * @param pBean Objeto a almacenar en la base de datos. - * @throws Exception - */ - public static void setModifyUser(HibernateBean pBean) throws Exception { - try { - BeanManager.setBeanAttributeValue(pBean, "modifyuser", SaveData.getSaveRequest().getUser()); - } catch (Exception e) { - try { - BeanManager.setBeanAttributeValue(pBean, "modifyusercode", SaveData.getSaveRequest().getUser()); - } catch (Exception e2) { - // Si no existe el campo en el bean no hacer nada. - } - } - } - - public static Query prepareQuery(String pName, Integer pPage, Integer pRecords) throws Exception { - Query q = PersistenceHelper.getEntityManager().createNamedQuery(pName); - q.setFirstResult((pPage - 1) * pRecords); - q.setMaxResults(pRecords); - return q; - } - - public static Query prepareQuery(String pName) throws Exception { - return PersistenceHelper.getEntityManager().createNamedQuery(pName); - } - - public static Query createQuery(String pJPQL) throws Exception { - return PersistenceHelper.getEntityManager().createQuery(pJPQL); - } - - public static Query createNativeQuery(String pSQL) throws Exception { - return PersistenceHelper.getEntityManager().createNativeQuery(pSQL); - } - - public static TypedQuery prepareQuery(String pName, Class pType) throws Exception { - return PersistenceHelper.getEntityManager().createNamedQuery(pName, pType); - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.netbeans-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.netbeans-base deleted file mode 100644 index bddbe40..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.netbeans-base +++ /dev/null @@ -1,348 +0,0 @@ -package com.fp.persistence.commondb; - -import java.lang.reflect.Field; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.FlushModeType; -import javax.persistence.Persistence; -import javax.persistence.Table; -import javax.persistence.metamodel.EntityType; - -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.data.ThreadFacade; - -/** - * Clase que se encarga del manejo de la favtoria de EntityManager. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class PersistenceManager { - - /** - * Key para genrar un map de los beans mapeados en el archivo de hbconfiguration. - */ - public static final String NAME = "NAMES"; - - /** - * Key que alamacena el numero de sessiones abiertas en el sessionfactory. - */ - public static final String OPEN = "OPEN"; - - /** - * Key que alamacena el numero de sessiones cerradas en el sessionfactory. - */ - public static final String CLOSED = "CLOSED"; - - /** - * Key que almacenal hora en la que se genero el sessionfactory . - */ - public static final String START_TIME = "START TIME"; - - /** - * Instancia a la que hace referencia el Sigleton - */ - private static PersistenceManager instance = null; - - /** - * Map de EntityManagerFactory ejb por compania. - */ - private final Map memfejb = new HashMap(); - - /** - * Map de EntityManagerFactory local por compania. - */ - private final Map memf = new HashMap(); - - /** - * Map de EntityManagerFactory auxiliar por persistence unit. - */ - private final Map memfaux = new HashMap(); - - /** - * Metodo que entrega una instancia de PersistenceManager, si existe una creada la entrega, caso contrario crea una. - * Adicionalmenet hace el mapping de las tablas del modelo relacional al modelo de objetos, creando el - * EntityManagerFactory. - * - * @return PersistenceManager - */ - public static PersistenceManager getInstance() { - synchronized (PersistenceManager.class) { - if (PersistenceManager.instance == null) { - PersistenceManager.instance = new PersistenceManager(); - PersistenceManager.instance.fillEntityManagerFactory(); - } else { - Integer cia = PersistenceManager.getCompany(); - if (((PersistenceManager.instance.memfejb.get(cia) == null) && PersistenceManager.iSEjb()) - || (PersistenceManager.instance.memf.get(cia) == null)) { - PersistenceManager.instance.fillEntityManagerFactory(); - } - } - } - return PersistenceManager.instance; - } - - /** - * Contruye el entitymanager falctory. - */ - private void fillEntityManagerFactory() { - Integer cia = PersistenceManager.getCompany(); - if ((PersistenceManager.instance.memfejb.get(cia) == null) && PersistenceManager.iSEjb()) { - APPLogger.getLogger().error("CREANDO ENTYTY MANAGER FACTORY EJB: " + cia); - try { - PersistenceManager.instance.memfejb.put(cia, PersistenceManager.getEntityManagerFactory("ejb", cia)); - APPLogger.getLogger().error("CREO ENTYTY MANAGER FACTORY EJB: " + cia); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY EJB" + cia); - APPLogger.getLogger().error(e, e); - } - - } - if (PersistenceManager.instance.memf.get(cia) == null) { - APPLogger.getLogger().error("CREANDO ENTYTY MANAGER FACTORY LOCAL: " + cia); - try { - PersistenceManager.instance.memf.put(cia, PersistenceManager.getEntityManagerFactory("local", cia)); - APPLogger.getLogger().error("CREO ENTYTY MANAGER FACTORY LOCAL: " + cia); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY LOCAL" + cia); - APPLogger.getLogger().error(e, e); - } - - } - } - - /** - * Metodo que crea y entrega un EntityManagerFactory, dado el persistenceunit mas el codigo de compania. - * - * @param pUnit Nombre del persistenceunit con el cual se crea el EntityManagerFactory. - * @param pCompany Codigo de compania. - * @return EntityManagerFactory - * @throws Exception - */ - private static EntityManagerFactory getEntityManagerFactory(String pUnit, Integer pCompany) throws Exception { - Map configOverrides = new HashMap(); - configOverrides.put("hibernate.ejb.cfgfile", "hibernateFlipMapping.cfg.xml"); - EntityManagerFactory emf = null; - emf = Persistence.createEntityManagerFactory(pUnit + pCompany, configOverrides); - return emf; - } - - /** - * Metodo que entrega una instancia de PersistenceManager para pruebas, si existe una creada la entrega, caso - * contrario crea una. Adicionalmenet hace el mapping de las tablas del modelo relacional al modelo de objetos, - * creando el EntityManagerFactory. - * - * @return PersistenceManager - */ - public static PersistenceManager getInstanceTest() { - synchronized (PersistenceManager.class) { - if (PersistenceManager.instance == null) { - PersistenceManager.instance = new PersistenceManager(); - } - } - Integer cia = PersistenceManager.getCompany(); - if (PersistenceManager.instance.memf.get(cia) == null) { - try { - PersistenceManager.instance.memf.put(cia, PersistenceManager.getEntityManagerFactory("local", cia)); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY LOCAL" + cia, e); - } - // Para que no construya uno en pruebas. - PersistenceManager.instance.memfejb.put(cia, PersistenceManager.instance.memf.get(cia)); - } - return PersistenceManager.instance; - } - - /** - * Constructor que se encarga de crear una instancia de PersistenceManager - * - * @param test - */ - public PersistenceManager() { - } - - /** - * Metodo que se encarga de crear un objeto EntityManager. - * - * @return EntityManager - */ - public EntityManager createEntityManager() { - EntityManager em = memfejb.get(PersistenceManager.getCompany()).createEntityManager(); - return em; - } - - /** - * Metodo que se encarga de crear un objeto EntityManager. - * - * @return EntityManager - */ - public EntityManager createEntityManagerLocal() { - EntityManager em = memf.get(PersistenceManager.getCompany()).createEntityManager(); - em.setFlushMode(FlushModeType.COMMIT); - return em; - } - - /** Cierra el SessionFactory */ - public void close() { - memfejb.get(PersistenceManager.getCompany()).close(); - } - - /** - * Entrega EntityManagerFactory dado el persistenceunit name, se utiiza para conecciones auxiliares a bases de - * datos, ejemplo cobis. - * - * @return Map - */ - public EntityManagerFactory getEntityManagerFactoryAuxiliar(String pUnit) { - EntityManagerFactory emf = memfaux.get(pUnit); - if (emf == null) { - emf = Persistence.createEntityManagerFactory(pUnit); - memfaux.put(pUnit, emf); - } - return emf; - } - - /** - * Permite Fijar el estado de Trace de la Conexión - * - * @param pSession Session de hibernate de Referencia - * @param pStatus Estado del Trace. - * @throws SQLException - * @throws Exception - */ - public void setTrace(Session pSession, boolean pStatus) { - SQLQuery sql = pSession.createSQLQuery("alter session set sql_trace =" + pStatus); - sql.executeUpdate(); - } - - /** - * Entrega el codigo de compania de trabajo. - * - * @return Integer - * @throws Exception - */ - private static Integer getCompany() { - return ThreadFacade.getSessionData().getCompany(); - } - - private static boolean iSEjb() { - return ThreadFacade.getSessionData().isEjb(); - } - - public Class findEntityClass(String pTable) throws Exception { - return this.findEntity(pTable).getJavaType(); - } - - public EntityType findEntity(String pTable) throws Exception { - EntityManagerFactory emf = PersistenceHelper.getEntityManager().getEntityManagerFactory(); - Set> set = emf.getMetamodel().getEntities(); - EntityType entity = null; - for (EntityType entityType : set) { - Table t = entityType.getJavaType().getAnnotation(Table.class); - if (t.name().compareTo(pTable) == 0) { - entity = entityType; - break; - } - } - return entity; - } - - @SuppressWarnings("rawtypes") - public static List getDataBasePKFields(Class bean) { - List ldata = new ArrayList(); - for (Field f : bean.getDeclaredFields()) { - if (f.isAnnotationPresent(EmbeddedId.class)) { - Class pkT = f.getType(); - for (Field f1 : pkT.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class)) { - ldata.add("pk." + f1.getAnnotation(Column.class).name().toLowerCase()); - } - } - } - } - if (ldata.isEmpty()) { - ldata.add("pk"); - } - return ldata; - } - - public List getDataBaseFields(String pTable) throws Exception { - List data = new ArrayList(); - Class et = this.findEntityClass(pTable); - for (Field f : et.getDeclaredFields()) { - if (f.isAnnotationPresent(Column.class)) { - data.add(f.getAnnotation(Column.class).name()); - } - if (f.isAnnotationPresent(EmbeddedId.class)) { - Class pkT = f.getType(); - for (Field f1 : pkT.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class)) { - data.add(f1.getAnnotation(Column.class).name()); - } - } - } - } - return data; - } - - /** - * Entrega el tipo de dato de un campo de una clase. Si no encuentra el campo retorna null. - * - * @param clase Clase a buscar el tipo de dato de un campo. - * @param field Nombre del campo a buscar en la clase. - * @return Class - */ - public static Class getType(Class clase, String field) { - Class tipo = null; - for (Field f : clase.getDeclaredFields()) { - tipo = f.getType(); - if (f.isAnnotationPresent(EmbeddedId.class)) { - for (Field f1 : tipo.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class) && f1.getName().equals(field)) { - tipo = f1.getType(); - return tipo; - } - } - } - if (f.isAnnotationPresent(Column.class) && f.getName().equals(field)) { - return tipo; - } - } - return null; - } - - /** - * Convierte el valor al tipo de satos del atributo de la clase. - * - * @param bean Nombre de la clase a buscar el tipo de datos de un campo. - * @param field Nombre del campo a buscar el tipo de dato. - * @param value Valor a transformar al tipo de dato de una clase. - * @return Object - * @throws Exception - */ - public static Object changeType(String bean, String field, Object value) throws Exception { - if (value == null) { - return value; - } - // Convierte el valor del criterio al tipo especifico del campo de la clase. - Class tipo = PersistenceManager.getType(Class.forName(bean), field.replace("pk.", "")); - if (tipo != null) { - value = BeanManager.convertObject(value, tipo); - } - return value; - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.svn-base deleted file mode 100644 index bddbe40..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceManager.java.svn-base +++ /dev/null @@ -1,348 +0,0 @@ -package com.fp.persistence.commondb; - -import java.lang.reflect.Field; -import java.sql.SQLException; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.FlushModeType; -import javax.persistence.Persistence; -import javax.persistence.Table; -import javax.persistence.metamodel.EntityType; - -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.data.ThreadFacade; - -/** - * Clase que se encarga del manejo de la favtoria de EntityManager. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class PersistenceManager { - - /** - * Key para genrar un map de los beans mapeados en el archivo de hbconfiguration. - */ - public static final String NAME = "NAMES"; - - /** - * Key que alamacena el numero de sessiones abiertas en el sessionfactory. - */ - public static final String OPEN = "OPEN"; - - /** - * Key que alamacena el numero de sessiones cerradas en el sessionfactory. - */ - public static final String CLOSED = "CLOSED"; - - /** - * Key que almacenal hora en la que se genero el sessionfactory . - */ - public static final String START_TIME = "START TIME"; - - /** - * Instancia a la que hace referencia el Sigleton - */ - private static PersistenceManager instance = null; - - /** - * Map de EntityManagerFactory ejb por compania. - */ - private final Map memfejb = new HashMap(); - - /** - * Map de EntityManagerFactory local por compania. - */ - private final Map memf = new HashMap(); - - /** - * Map de EntityManagerFactory auxiliar por persistence unit. - */ - private final Map memfaux = new HashMap(); - - /** - * Metodo que entrega una instancia de PersistenceManager, si existe una creada la entrega, caso contrario crea una. - * Adicionalmenet hace el mapping de las tablas del modelo relacional al modelo de objetos, creando el - * EntityManagerFactory. - * - * @return PersistenceManager - */ - public static PersistenceManager getInstance() { - synchronized (PersistenceManager.class) { - if (PersistenceManager.instance == null) { - PersistenceManager.instance = new PersistenceManager(); - PersistenceManager.instance.fillEntityManagerFactory(); - } else { - Integer cia = PersistenceManager.getCompany(); - if (((PersistenceManager.instance.memfejb.get(cia) == null) && PersistenceManager.iSEjb()) - || (PersistenceManager.instance.memf.get(cia) == null)) { - PersistenceManager.instance.fillEntityManagerFactory(); - } - } - } - return PersistenceManager.instance; - } - - /** - * Contruye el entitymanager falctory. - */ - private void fillEntityManagerFactory() { - Integer cia = PersistenceManager.getCompany(); - if ((PersistenceManager.instance.memfejb.get(cia) == null) && PersistenceManager.iSEjb()) { - APPLogger.getLogger().error("CREANDO ENTYTY MANAGER FACTORY EJB: " + cia); - try { - PersistenceManager.instance.memfejb.put(cia, PersistenceManager.getEntityManagerFactory("ejb", cia)); - APPLogger.getLogger().error("CREO ENTYTY MANAGER FACTORY EJB: " + cia); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY EJB" + cia); - APPLogger.getLogger().error(e, e); - } - - } - if (PersistenceManager.instance.memf.get(cia) == null) { - APPLogger.getLogger().error("CREANDO ENTYTY MANAGER FACTORY LOCAL: " + cia); - try { - PersistenceManager.instance.memf.put(cia, PersistenceManager.getEntityManagerFactory("local", cia)); - APPLogger.getLogger().error("CREO ENTYTY MANAGER FACTORY LOCAL: " + cia); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY LOCAL" + cia); - APPLogger.getLogger().error(e, e); - } - - } - } - - /** - * Metodo que crea y entrega un EntityManagerFactory, dado el persistenceunit mas el codigo de compania. - * - * @param pUnit Nombre del persistenceunit con el cual se crea el EntityManagerFactory. - * @param pCompany Codigo de compania. - * @return EntityManagerFactory - * @throws Exception - */ - private static EntityManagerFactory getEntityManagerFactory(String pUnit, Integer pCompany) throws Exception { - Map configOverrides = new HashMap(); - configOverrides.put("hibernate.ejb.cfgfile", "hibernateFlipMapping.cfg.xml"); - EntityManagerFactory emf = null; - emf = Persistence.createEntityManagerFactory(pUnit + pCompany, configOverrides); - return emf; - } - - /** - * Metodo que entrega una instancia de PersistenceManager para pruebas, si existe una creada la entrega, caso - * contrario crea una. Adicionalmenet hace el mapping de las tablas del modelo relacional al modelo de objetos, - * creando el EntityManagerFactory. - * - * @return PersistenceManager - */ - public static PersistenceManager getInstanceTest() { - synchronized (PersistenceManager.class) { - if (PersistenceManager.instance == null) { - PersistenceManager.instance = new PersistenceManager(); - } - } - Integer cia = PersistenceManager.getCompany(); - if (PersistenceManager.instance.memf.get(cia) == null) { - try { - PersistenceManager.instance.memf.put(cia, PersistenceManager.getEntityManagerFactory("local", cia)); - } catch (Exception e) { - APPLogger.getLogger().error("NO PUEDE CONSTRUIR EL ENTYTY MANAGER FACTORY LOCAL" + cia, e); - } - // Para que no construya uno en pruebas. - PersistenceManager.instance.memfejb.put(cia, PersistenceManager.instance.memf.get(cia)); - } - return PersistenceManager.instance; - } - - /** - * Constructor que se encarga de crear una instancia de PersistenceManager - * - * @param test - */ - public PersistenceManager() { - } - - /** - * Metodo que se encarga de crear un objeto EntityManager. - * - * @return EntityManager - */ - public EntityManager createEntityManager() { - EntityManager em = memfejb.get(PersistenceManager.getCompany()).createEntityManager(); - return em; - } - - /** - * Metodo que se encarga de crear un objeto EntityManager. - * - * @return EntityManager - */ - public EntityManager createEntityManagerLocal() { - EntityManager em = memf.get(PersistenceManager.getCompany()).createEntityManager(); - em.setFlushMode(FlushModeType.COMMIT); - return em; - } - - /** Cierra el SessionFactory */ - public void close() { - memfejb.get(PersistenceManager.getCompany()).close(); - } - - /** - * Entrega EntityManagerFactory dado el persistenceunit name, se utiiza para conecciones auxiliares a bases de - * datos, ejemplo cobis. - * - * @return Map - */ - public EntityManagerFactory getEntityManagerFactoryAuxiliar(String pUnit) { - EntityManagerFactory emf = memfaux.get(pUnit); - if (emf == null) { - emf = Persistence.createEntityManagerFactory(pUnit); - memfaux.put(pUnit, emf); - } - return emf; - } - - /** - * Permite Fijar el estado de Trace de la Conexión - * - * @param pSession Session de hibernate de Referencia - * @param pStatus Estado del Trace. - * @throws SQLException - * @throws Exception - */ - public void setTrace(Session pSession, boolean pStatus) { - SQLQuery sql = pSession.createSQLQuery("alter session set sql_trace =" + pStatus); - sql.executeUpdate(); - } - - /** - * Entrega el codigo de compania de trabajo. - * - * @return Integer - * @throws Exception - */ - private static Integer getCompany() { - return ThreadFacade.getSessionData().getCompany(); - } - - private static boolean iSEjb() { - return ThreadFacade.getSessionData().isEjb(); - } - - public Class findEntityClass(String pTable) throws Exception { - return this.findEntity(pTable).getJavaType(); - } - - public EntityType findEntity(String pTable) throws Exception { - EntityManagerFactory emf = PersistenceHelper.getEntityManager().getEntityManagerFactory(); - Set> set = emf.getMetamodel().getEntities(); - EntityType entity = null; - for (EntityType entityType : set) { - Table t = entityType.getJavaType().getAnnotation(Table.class); - if (t.name().compareTo(pTable) == 0) { - entity = entityType; - break; - } - } - return entity; - } - - @SuppressWarnings("rawtypes") - public static List getDataBasePKFields(Class bean) { - List ldata = new ArrayList(); - for (Field f : bean.getDeclaredFields()) { - if (f.isAnnotationPresent(EmbeddedId.class)) { - Class pkT = f.getType(); - for (Field f1 : pkT.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class)) { - ldata.add("pk." + f1.getAnnotation(Column.class).name().toLowerCase()); - } - } - } - } - if (ldata.isEmpty()) { - ldata.add("pk"); - } - return ldata; - } - - public List getDataBaseFields(String pTable) throws Exception { - List data = new ArrayList(); - Class et = this.findEntityClass(pTable); - for (Field f : et.getDeclaredFields()) { - if (f.isAnnotationPresent(Column.class)) { - data.add(f.getAnnotation(Column.class).name()); - } - if (f.isAnnotationPresent(EmbeddedId.class)) { - Class pkT = f.getType(); - for (Field f1 : pkT.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class)) { - data.add(f1.getAnnotation(Column.class).name()); - } - } - } - } - return data; - } - - /** - * Entrega el tipo de dato de un campo de una clase. Si no encuentra el campo retorna null. - * - * @param clase Clase a buscar el tipo de dato de un campo. - * @param field Nombre del campo a buscar en la clase. - * @return Class - */ - public static Class getType(Class clase, String field) { - Class tipo = null; - for (Field f : clase.getDeclaredFields()) { - tipo = f.getType(); - if (f.isAnnotationPresent(EmbeddedId.class)) { - for (Field f1 : tipo.getDeclaredFields()) { - if (f1.isAnnotationPresent(Column.class) && f1.getName().equals(field)) { - tipo = f1.getType(); - return tipo; - } - } - } - if (f.isAnnotationPresent(Column.class) && f.getName().equals(field)) { - return tipo; - } - } - return null; - } - - /** - * Convierte el valor al tipo de satos del atributo de la clase. - * - * @param bean Nombre de la clase a buscar el tipo de datos de un campo. - * @param field Nombre del campo a buscar el tipo de dato. - * @param value Valor a transformar al tipo de dato de una clase. - * @return Object - * @throws Exception - */ - public static Object changeType(String bean, String field, Object value) throws Exception { - if (value == null) { - return value; - } - // Convierte el valor del criterio al tipo especifico del campo de la clase. - Class tipo = PersistenceManager.getType(Class.forName(bean), field.replace("pk.", "")); - if (tipo != null) { - value = BeanManager.convertObject(value, tipo); - } - return value; - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceMetadata.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceMetadata.java.svn-base deleted file mode 100644 index da2e185..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/.svn/text-base/PersistenceMetadata.java.svn-base +++ /dev/null @@ -1,294 +0,0 @@ -package com.fp.persistence.commondb; - -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.text.DecimalFormatSymbols; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Iterator; -import java.util.List; - -import org.hibernate.cfg.Configuration; -import org.hibernate.mapping.Column; -import org.hibernate.mapping.PersistentClass; -import org.hibernate.mapping.Property; -import org.hibernate.mapping.RootClass; -import org.hibernate.mapping.SimpleValue; - -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; - - -public class PersistenceMetadata { - private Configuration cfg; - public PersistenceMetadata(Configuration pConf){ - this.cfg=pConf; - } - private PersistentClass getPresistenceClass(String pName) throws CommondbException{ - PersistentClass c=cfg.getClassMapping(pName); - if(c==null){ - throw new CommondbException("COMMONDB-0009","EL BEAN {0} NO SE ENCUENTRA EN EL SESSIONFACTORY",pName); - } - return c; - } - /** - * Entrega el nombre de la propiedad del Bean que hace referencia al Campo Dado - * @param pBean Clase de tipo Bean - * @param pField Campo de la Tabla - * @return Propiedad del Bean. - * @throws CommonException - * @throws Exception - */ - @SuppressWarnings({ "rawtypes" }) -public String getJavaProperty(Class pBean,String pField) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - Iterator it=c.getKey().getColumnIterator(); - int cont = 0; - while(it.hasNext()) { - it.next(); - cont ++; - } - it=c.getKey().getColumnIterator(); - while(it.hasNext()){ - Column col=(Column)it.next(); - if(col.getName().toUpperCase().compareTo(pField.toUpperCase()) == 0){ - if (cont == 1){ - return "pk"; - } - - return "pk."+pField.toLowerCase(); - } - } - return pField.toLowerCase(); - } -@SuppressWarnings("rawtypes") -public String getFieldName(Class pBean,String pField) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - Iterator it=c.getPropertyIterator(); - if(pField.toLowerCase().indexOf("pk.")>-1){ - pField=pField.substring(pField.toLowerCase().indexOf("pk.")+3); - it=c.getKey().getColumnIterator(); - while (it.hasNext()) { - Column element = (Column) it.next(); - if(element.getName().compareTo(pField)==0){ - return element.getName().toUpperCase(); - } - } - throw new CommondbException("",""); - } - if(pField.compareToIgnoreCase("pk")==0){ - it=c.getKey().getColumnIterator(); - Column col = (Column)it.next(); - if(it.hasNext()){ - throw new CommondbException("",""); - } - return col.getName().toUpperCase(); - } - while(it.hasNext()){ - Property col=(Property)it.next(); - if(col.getName().compareToIgnoreCase(pField.toUpperCase()) == 0){ - return pField.toUpperCase(); - } - } - throw new CommondbException("",""); - } - /** - * Verifica si un campo es un atributo del bean. - * @param pBean Nombre del bean que maneja la persistencia de una tabla - * @param pCampo Campo de la Tabla - * @return - * @throws CommonException - * @throws Exception - */ - -@SuppressWarnings("rawtypes") -public boolean isJavaProperty(Class pBean,String pField) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - Iterator it=c.getTable().getColumnIterator(); - while(it.hasNext()){ - Column col=(Column)it.next(); - if(col.getName().toUpperCase().compareTo(pField.toUpperCase()) == 0){ - return true; - } - } - return false; - } - /** - * Entrega el nombre del campo de una tabla. Si la tabla tiene un unicampo campo que forma parte del primary key de la misma. - * @param pBean Nombre del bean que maneja la persistencia de una tabla. - * @return - * @throws CommonException - * @throws Exception - */ -@SuppressWarnings("rawtypes") -public String getFieldnameByPkSingleField(Class pBean) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - Iterator it=c.getKey().getColumnIterator(); - int cont = 0; - Column col = null; - while(it.hasNext()) { - col = (Column)it.next(); - cont ++; - } - if (cont == 1){ - return col.getName().toUpperCase(); - } - if(cont > 1){ - throw new CommondbException("COMMONDB-00010","TABLA {0} TIENE UN PRIMARY KEY COMPUESTO ",c.getTable().getName().toUpperCase()); - } - return null; - } - - /** - * Entrega un lista de campos que forman el primary key de una tabla. - * @param pBean Nombre del bean que maneja la persistencia de una tabla. - * @return lFieldspk - * @throws CommonException - * @throws Exception - */ -@SuppressWarnings("rawtypes") -public List getFieldsPrimaryKey(Class pBean) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - Iterator it=c.getKey().getColumnIterator(); - Column col = null; - List lFieldspk = new ArrayList(); - while(it.hasNext()) { - col = (Column)it.next(); - lFieldspk.add(col.getName().toUpperCase()); - } - return lFieldspk; - } - - /** - * Enterga el campo que maneja el versionamiento de un bean. - * @param pBean Clase de tipo Bean - * @return - * @throws CommonException - * @throws Exception - */ -@SuppressWarnings("rawtypes") -public String getFieldVersion(Class pBean) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - String version = null; - if(c.getVersion() != null){ - version = c.getVersion().getName(); - } - return version; - } - - /** - * Enterga el nombre de la tabla de un bean. - * @param pBean Clase de tipo Bean - * @return - * @throws CommonException - * @throws Exception - */ - @SuppressWarnings("rawtypes") -public String getTableName(Class pBean) throws CommondbException { - PersistentClass c=getPresistenceClass(pBean.getName()); - String table = c.getTable().getName().toUpperCase(); - return table; - } - public String getClassName(String pName) throws CommondbException{ - return this.getPresistenceClass(pName).getClassName(); - } - - /** - * Enterga el bean que maneja una tabla. - * @param pTablename Nombre de la tabla. - * @return Nombre de la clase que implementa el Bean - * @throws CommonException - * @throws Exception - */ - @SuppressWarnings("rawtypes") -public String getBeanname(String pTablename) throws CommondbException { - Iterator itr = cfg.getClassMappings(); - String bean = null; - while (itr.hasNext()) { - RootClass rc = (RootClass)itr.next(); - if(rc.getTable().getName().toUpperCase().compareTo(pTablename.toUpperCase()) == 0){ - bean = rc.getClassName(); - } - } - if(bean == null){ - throw new CommondbException("COMMONDB-00011","BEAN NO DEFINIDO PARA LA TABLA {0} ",pTablename); - } - return bean; - } - /** - * Transforma el valor al tipo de dato del tabla.campo. - * @param pBean Nombre del bean que maneja l apersistencia de una tabla. - * @param pCampo Nombre de un campo que pertenece a una tabla manejada por el bean. - * @param pValue Valor del campo, puede estar en un tipo de dato distinto al de la tabla. - * @return newvalue Valor con el tipo de dato del campo en la tabla. - * @throws CommonException - * @throws ParseException - * @throws ClassNotFoundException - * @throws NoSuchFieldException - * @throws SecurityException - * @throws Exception - */ - @SuppressWarnings("rawtypes") -public Object convertValueType(String pBean,String pCampo,Object pValue) throws CommondbException, ParseException, SecurityException, NoSuchFieldException, ClassNotFoundException { - Object newvalue = null; - String type = ""; - if(pCampo.compareTo("pk")!=0){ - PersistentClass c=getPresistenceClass(pBean); - Iterator it=c.getTable().getColumnIterator(); - Column column = null; - boolean find = false; - while (it.hasNext()){ - column = (Column)it.next(); - if(column.getName().toUpperCase().compareTo(pCampo.toUpperCase()) == 0){ - find = true; - break; - } - } - if(!find){ - throw new CommondbException("COMMONDB-00012","CAMPO {0} NO DEFINIDO EN LA TABLA {1}",pCampo,c.getTable().getName()); - } - SimpleValue simplevalue = (SimpleValue)column.getValue(); - type = simplevalue.getTypeName(); - }else{ - type=Class.forName(pBean).getDeclaredField(pCampo).getType().getName(); - } - if(pValue.getClass().getName().compareTo(type) == 0 ){ - newvalue = pValue; - }else{ - if(type.compareTo("java.lang.String") == 0 ){ - newvalue = pValue; - } - if(type.compareTo("java.lang.Integer") == 0 ){ - newvalue = new Integer(pValue.toString()); - } - if(type.compareTo("java.math.BigDecimal") == 0 ){ - DecimalFormatSymbols dfs = new DecimalFormatSymbols(); - dfs.setDecimalSeparator('.'); - dfs.setGroupingSeparator(','); - DecimalFormat df = new DecimalFormat("##############.#######",dfs); - newvalue = new BigDecimal(df.parse(pValue.toString()).doubleValue()); - } - if(type.compareTo("java.sql.Date") == 0 ){ - SimpleDateFormat sdf = FormatDates.getInstance().getTransportDatetimeFormat(); - newvalue = new Date(sdf.parse(pValue.toString()).getTime()); - } - if(type.compareTo("java.sql.Timestamp") == 0 ){ - SimpleDateFormat sdf = FormatDates.getInstance().getTransportDatetimeFormat(); - try{ - String valor=pValue.toString(); - if(valor.length()==10){ - valor+=" 00:00:00.0"; - } - newvalue = new Timestamp(sdf.parse(valor).getTime()); - - }catch(Exception ex){ - ex.printStackTrace(); - } - } - } - return newvalue; - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/entries deleted file mode 100644 index d4a4bda..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CacheManager.java -file - - - - -2022-07-28T03:40:31.850756Z -2bf3474856b279c9bbcdbee1b061bcc5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3906 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/text-base/CacheManager.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/text-base/CacheManager.java.svn-base deleted file mode 100644 index 94f640a..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/cache/.svn/text-base/CacheManager.java.svn-base +++ /dev/null @@ -1,147 +0,0 @@ -package com.fp.persistence.commondb.cache; - -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.StringTokenizer; - -/** - * Clase utilitaria, que mantiene las variables de cache de informacion de beans - * asociados a tablas de la base de datos. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public final class CacheManager { - - private CacheManager() { - } - - /** Almacena una instancia de DataHelper. */ - private static CacheManager cache; - - /** - * Entrega una instancia de DataHelper. - * - * @return DataHelper - */ - public static CacheManager getInstance() { - if (cache != null) { - return cache; - } - synchronized (CacheManager.class) { - if (cache == null) { - cache = new CacheManager(); - } - } - return cache; - } - - /** Map que almacena definicion de un bean
      - * El key del map es el nombre del bean. - * Object contiene registros dado el pk o una clave que identifica al registro. - * */ - private Map mcache = new HashMap(); - - /** - * Metodo que entrega datos dado el bean y el key de los datos. - * @param pBeanName Nombre del bean. - * @param pKey Key de datos. - * @return Object. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public Object getData(String pBeanName,String pKey) throws Exception { - Map mdata = (Map)mcache.get(pBeanName); - if(mdata == null){ - return null; - } - return mdata.get(pKey); - } - - /** - * Metodo que entrega la defincion de un map, si existe en cache. - * @param pBeanName Nombre del bean. - * @return Map - * @throws Exception - */ - @SuppressWarnings("unchecked") - public Map getMapDefinition(String pBeanName) throws Exception { - Map mdata = (Map)mcache.get(pBeanName); - if(mdata == null){ - mdata = new HashMap(); - } - return mdata; - } - - /** - * Metodo que adiciona datos de una tabla al cache. - * @param pBeanName Nombre del bean. - * @param pData Datos a adicionar al cache. - * @throws Exception - */ - public void putData(String pBeanName,Object pData) throws Exception { - synchronized (mcache) { - if (!mcache.containsKey(pBeanName)) { - mcache.put(pBeanName, pData); - } - } - } - - /** - * Metodo que se encarga de limpiar el cache de un objeto. - * @param pBeanName Key del objeto a limpiar el cache. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void clean(String pBeanName) throws Exception { - String name = pBeanName; - if(pBeanName.indexOf(".") > 0){ - StringTokenizer st = new StringTokenizer(pBeanName, "."); - while (st.hasMoreElements()) { - name = (String) st.nextElement(); - } - } - this.cleanByObject((Map)mcache.get(name)); - synchronized (mcache){ - mcache.remove(name); - } - } - - /** - * Metodo que se encarga el cache total de datos. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void cleanAll() throws Exception { - Iterator itr = mcache.values().iterator(); - while (itr.hasNext()) { - this.cleanByObject((Map) itr.next()); - } - } - - /** - * Metodo que limpia el cache de un objeto, este puede ser una lista de registros de una tabla - * o un registro unico de la tabla. - * @param mData Map que contiene los datos a encerar. - * @throws Exception - */ - @SuppressWarnings("rawtypes") - private void cleanByObject(Map mData) throws Exception { - if(mData == null){ - return; - } - synchronized (mData) { - Iterator itr = mData.values().iterator(); - while (itr.hasNext()) { - Object obj = itr.next(); - if (obj instanceof List) { - ((List) obj).clear(); - } - } - mData.clear(); - } - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/entries deleted file mode 100644 index bd84d22..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ThreadFacade.java -file - - - - -2022-07-28T03:40:31.945756Z -b8523a6e48b68ec26eecd39a453e863e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -821 - -SessionData.java -file - - - - -2022-07-28T03:40:31.945756Z -a872a890ba995d21b4d71bc5d85c7e97 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -935 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.netbeans-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.netbeans-base deleted file mode 100644 index 8e4ca7b..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.netbeans-base +++ /dev/null @@ -1,50 +0,0 @@ -package com.fp.persistence.commondb.data; - - -/** - * Clase utilitaria que almacena datos de session ejemplo codigo de compania. - * @author Jorge Vaca. - * @version 2.1 - */ -public class SessionData { - - /**Codigo de compania de trabajo.*/ - private Integer company; - - /**True Indica que la entrada de la acplicacion es un ejb, False es pruebas.*/ - private boolean isEjb = false; - - /** - * Entrega el valor de: isEjb - * @return Boolean - */ - public boolean isEjb() { - return isEjb; - } - - /** - * Fija el valor de: isEjb - * @param isEjb value to set - */ - public void setIsEjb(boolean isEjb) { - this.isEjb = isEjb; - } - - /** - * Entrega el valor de: company - * @return Integer - */ - public Integer getCompany() { - return company; - } - - /** - * Fija el valor de: company - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.svn-base deleted file mode 100644 index 8e4ca7b..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/SessionData.java.svn-base +++ /dev/null @@ -1,50 +0,0 @@ -package com.fp.persistence.commondb.data; - - -/** - * Clase utilitaria que almacena datos de session ejemplo codigo de compania. - * @author Jorge Vaca. - * @version 2.1 - */ -public class SessionData { - - /**Codigo de compania de trabajo.*/ - private Integer company; - - /**True Indica que la entrada de la acplicacion es un ejb, False es pruebas.*/ - private boolean isEjb = false; - - /** - * Entrega el valor de: isEjb - * @return Boolean - */ - public boolean isEjb() { - return isEjb; - } - - /** - * Fija el valor de: isEjb - * @param isEjb value to set - */ - public void setIsEjb(boolean isEjb) { - this.isEjb = isEjb; - } - - /** - * Entrega el valor de: company - * @return Integer - */ - public Integer getCompany() { - return company; - } - - /** - * Fija el valor de: company - * @param company value to set - */ - public void setCompany(Integer company) { - this.company = company; - } - - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/ThreadFacade.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/ThreadFacade.java.svn-base deleted file mode 100644 index dccdfa7..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/data/.svn/text-base/ThreadFacade.java.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -package com.fp.persistence.commondb.data; - - -/** - * Thread local que almacena datos de codigo de compania, como de UserTransaction a ser utilizados - * en el hilo de ejecucion. - * @author Jorge Vaca. - * @version 2.1 - */ -public class ThreadFacade { - - /**Almacena una instancia de SaaveRequest con los datos de entrada.*/ - private static final ThreadLocal threadsave = new ThreadLocal(); - - /** - * Metodo que entrega datos del SessionData. - * @return SessionData - */ - public static SessionData getSessionData() { - return (SessionData) threadsave.get(); - } - - /** - * Metoo que almacena en el thread local datos de SessionData. - * @param SessionData - */ - public static void setSaveRequest(SessionData pSessionData) { - threadsave.set(pSessionData); - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/entries deleted file mode 100644 index a8978d4..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:31.897756Z -9da7d8c94365c86191871e7c984afe27 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -14566 - -CloneData.java -file - - - - -2022-07-28T03:40:31.897756Z -9335b435e808b9da97ce92f8073bfcaa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5698 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/CloneData.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/CloneData.java.svn-base deleted file mode 100644 index 8ad72b1..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/CloneData.java.svn-base +++ /dev/null @@ -1,195 +0,0 @@ -/* - * - */ -package com.fp.persistence.commondb.db; - -import java.io.PrintWriter; -import java.io.StringWriter; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; - -/** - * Class CloneData encargada de copiar los datos de una tabla a otra tabla empleando una sola Sentencia SQL - * (Insert-select) - * - * @author gfiallos - */ -public class CloneData { - - /** Tabla Origen */ - private String table; - - /** Tabla Destino */ - private String destiny; - - /** El valor de fields. */ - private List fields; - - /** El valor de restrictions. */ - private Map restrictions = new HashMap(); - - /** El valor de replacements. */ - private Map replacements = new HashMap(); - - /** El valor de em. */ - private EntityManager em; - - /** - * Crea una nueva instancia de clone data. - * - * @param pTable Tabla Origen - * @throws Exception la exception - */ - public CloneData(String pTable) throws Exception { - this(pTable, pTable); - } - - /** - * Crea una nueva instancia de clone data. - * - * @param pTable Tabla Origen - * @param pDestiny Tabla Destino - * @throws Exception la exception - */ - public CloneData(String pTable, String pDestiny) throws Exception { - this.destiny = pDestiny; - this.table = pTable; - this.prepare(); - } - - /** - * Crea una nueva instancia de clone data. - * - * @param pTable Tabla Origen - * @param pRestrictions the restrictions - * @throws Exception la exception - */ - public CloneData(String pTable, Map pRestrictions) throws Exception { - this(pTable); - this.restrictions = pRestrictions; - } - - /** - * Adiciona un restriction. - * - * @param pName the name - * @param pValue the value - */ - public void addRestriction(String pName, Object pValue) { - this.restrictions.put(pName, pValue); - } - - /** - * Adiciona un replacement. - * - * @param pName the name - * @param pValue the value - */ - public void addReplacement(String pName, Object pValue) { - this.replacements.put(pName, pValue); - } - - /** - * Prepara los campos para la instrucción dada - * - * @throws Exception la exception - */ - private void prepare() throws Exception { - this.em = PersistenceHelper.getEntityManager(); - this.fields = PersistenceManager.getInstance().getDataBaseFields(this.destiny); - } - - /** - * Prepara la sentencia instert insert. - * - * @return string - * @throws Exception la exception - */ - private String prepareInsert() throws Exception { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - boolean first = true; - for (String name : this.fields) { - if (first) { - pw.print("insert into " + this.destiny + " (" + name); - first = false; - } else { - pw.print(" ," + name); - first = false; - } - } - pw.println(")"); - pw.close(); - return sw.toString(); - } - - /** - * Prepara el select. - * - * @return string - * @throws Exception la exception - */ - private String prepareSelect() throws Exception { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - boolean first = true; - for (String name : this.fields) { - if (this.replacements.containsKey(name)) { - // name = "cast( :r" + name.toLowerCase() + " as varchar(20) )"; - name = "'" + this.replacements.get(name) + "'"; - } - if (first) { - pw.print("select " + name); - first = false; - } else { - pw.print(" ," + name); - first = false; - } - } - pw.println(); - pw.println(" from " + this.table); - first = true; - for (Entry val : this.restrictions.entrySet()) { - if (first) { - pw.println(" where " + val.getKey() + "=:_" + val.getKey().toLowerCase()); - first = false; - } else { - pw.println(" and " + val.getKey() + "=:_" + val.getKey().toLowerCase()); - first = false; - } - } - pw.close(); - return sw.toString(); - } - - /** - * Executa la copia - * - * @return int - * @throws Exception la exception - */ - public int execute() throws Exception { - PersistenceHelper.flushTransaction(); - String sql = this.prepareInsert() + this.prepareSelect(); - APPLogger.getLogger().debug("Instruccion de Copia " + sql); - Query q = this.em.createNativeQuery(sql); - for (Entry val : this.restrictions.entrySet()) { - APPLogger.getLogger().debug("_" + val.getKey().toLowerCase() + ">>>>" + val.getValue()); - q.setParameter("_" + val.getKey().toLowerCase(), val.getValue()); - } - // for (Entry val : this.replacements.entrySet()) { - // q.setParameter("r" + val.getKey().toLowerCase().toLowerCase(), val.getValue()); - // APPLogger.getLogger().debug("r" + val.getKey().toLowerCase() + ">>>>" + val.getValue()); - // } - return q.executeUpdate(); - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/DataHelper.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 3182ab6..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,346 +0,0 @@ -package com.fp.persistence.commondb.db; - -import java.sql.Date; -import java.util.List; -import java.util.Map; - -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import com.fp.common.helper.Constant; -import com.fp.common.properties.CommonProperties; -import com.fp.core.exception.CoreException; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.cache.CacheManager; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.pgeneral.date.TgeneAccountingDate; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranchKey; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneQueryProcess; -import com.fp.persistence.pgeneral.gene.TgeneTransactionQuery; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionProcess; -import com.fp.persistence.pgeneral.trans.report.TgeneTransactionReports; - - -/** - * Clase que se encarga de manejo de sentencias SQL o HQL con la base de datos, - * Existe ciertas tablas con informacion estatica, las cuales se cargan a memoria.
      - * Otras tablas se define para que se cargue a cache la informacion de ciertos regitros que esten marcagos con ManageCache. - * @author Jorge Vaca - * @version 2.1 - */ -public class DataHelper { - /**Almacena una instancia de DataHelper.*/ - private static DataHelper cache; - /**Separador del key de maps cuando este se compone de varios atributos.*/ - private static String separator = "^"; - /** - * Entrega una instancia de DataHelper. - * @return DataHelper - */ - public static DataHelper getInstance(){ - if(cache != null){ - return cache; - } - synchronized(DataHelper.class){ - if (cache == null) { - cache = new DataHelper(); - } - } - return cache; - } - - - /** - * Entrega un objeto con los datos de TgeneAccountingDateBranch. Que contiene la fecha contable de una sucursal. - * @param pComany Codigo de compania a obtener la fecha contable. - * @param pBranch Codigo de sucursal a obtener la fecha contable. - * @return TgeneAccountingDateBranch - * @throws CoreException - * @throws Exception - */ - public TgeneAccountingDateBranch getTgeneAccountingDateBranch(Integer pComany, Integer pBranch) throws CommondbException,Exception { - TgeneAccountingDateBranchKey key = new TgeneAccountingDateBranchKey(); - key.setBranchcode(pBranch); - key.setCompanycode(pComany); - TgeneAccountingDateBranch obj = null; - try { - obj = TgeneAccountingDateBranch.find(PersistenceHelper.getEntityManager(), key); - } catch (NoResultException e) { - throw new CommondbException("COMMONDB-00013","FECHA CONTABLE NO DEFINIDA PARA LA COMPANIA {0}, SUCURSAL {1}",pComany,pBranch); - } - return obj; - } - - - /**Sentencia que devuelve la definicion de una transaccion..*/ - private static final String HQL_TRANSACTION = - "from TgeneTransaction tt " + - " where tt.pk.transactionmodule = :transactionmodule " + - " and tt.pk.transactioncode = :transactioncode "+ - " and tt.pk.transactionversion = :transactionversion "; - - /** - * Entrega la definicion de una transaccion definida en tgenetransaction. - * @param pTransactionModule Codigo del modulo al que pertenece la transaccion. - * @param pTransactionCode Codigo de transaccion. - * @param pTransactionVersion Version de la transaccion. - * @return TgeneTransaction - * @throws Exception - */ - public TgeneTransaction getTgeneTransaction(String pTransactionModule,Integer pTransactionCode,Integer pTransactionVersion) throws Exception { - TgeneTransaction tgeneTransaction = null; - String key = pTransactionModule+separator+pTransactionCode+separator+pTransactionVersion; - - CacheManager cm = CacheManager.getInstance(); - tgeneTransaction = (TgeneTransaction) cm.getData("TgeneTransaction", key); - - if(tgeneTransaction != null){ - return tgeneTransaction; - } - Query qry = PersistenceHelper.getEntityManager().createQuery(HQL_TRANSACTION); - qry.setParameter("transactionmodule", pTransactionModule); - qry.setParameter("transactioncode", pTransactionCode); - qry.setParameter("transactionversion", pTransactionVersion); - try { - tgeneTransaction = (TgeneTransaction)qry.getSingleResult(); - PersistenceHelper.getEntityManager().detach(tgeneTransaction); - } catch (NoResultException e) { - //no hacer nada - } - - //if manage cache - if (tgeneTransaction != null && Constant.ifYes(tgeneTransaction.getManagecache()) ) { - Map m = cm.getMapDefinition("TgeneTransaction"); - m.put(key, tgeneTransaction); - cm.putData("TgeneTransaction", (Object) m); - - } - return tgeneTransaction; - } - - /**Sentencia que devuelve la definicion de procesos de negocio a ejecutar para una transaccion..*/ - private static final String HQL_TRANSACTION_RULE = - "from TgeneTransactionProcess ttp " + - " where ttp.pk.transactionmodule = :transactionmodule " + - " and ttp.pk.transactioncode = :transactioncode "+ - " and ttp.pk.transactionversion = :transactionversion "+ - " and ttp.status = 'A' "+ - " order by ttp.executionorder "; - - - /** - * Entrega la definicion de procesos de negocio de una transaccion definida. - * @param pTransactionModule Codigo del modulo al que pertenece la transaccion. - * @param pTransactionCode Codigo de transaccion. - * @param pTransactionVersion Version de la transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public List getTgeneTransactionProcess(String pTransactionModule,Integer pTransactionCode,Integer pTransactionVersion) throws Exception { - List lTgeneTransactionProcess = null; - String key = pTransactionModule+separator+pTransactionCode+separator+pTransactionVersion; - - CacheManager cm = CacheManager.getInstance(); - lTgeneTransactionProcess = (List) cm.getData("TgeneTransactionProcess", key); - - if(lTgeneTransactionProcess != null){ - return lTgeneTransactionProcess; - } - HqlStatement hql = new HqlStatement(HQL_TRANSACTION_RULE); - hql.setString(Constant.VTRANSACTIONMODULE, pTransactionModule); - hql.setInteger(Constant.VTRANSACTIONCODE, pTransactionCode); - hql.setInteger(Constant.VTRANSACTIONVERSION, pTransactionVersion); - hql.setReadonly(true); - - lTgeneTransactionProcess = hql.execute().getResultList(); - - if(lTgeneTransactionProcess == null || lTgeneTransactionProcess.size() == 0){ - return lTgeneTransactionProcess; - } - /*if manage cache COMMONDB-0006*/ - TgeneTransactionProcess obj = lTgeneTransactionProcess.get(0); - if (obj != null && Constant.ifYes(obj.getManagecache()) ) { - Map m = cm.getMapDefinition("TgeneTransactionProcess"); - m.put(key, lTgeneTransactionProcess); - cm.putData("TgeneTransactionProcess", (Object) m); - } - return lTgeneTransactionProcess; - } - - /**Sentencia que devuelve la definicion de procesos a ejecutar el query para una transaccion..*/ - private static final String HQL_TRANSACTION_QUERY = - "from TgeneTransactionQuery ttq " + - " where ttq.pk.transactionmodule = :transactionmodule " + - " and ttq.pk.transactioncode = :transactioncode "+ - " and ttq.pk.transactionversion = :transactionversion "+ - " and ttq.status = 'A' "+ - " order by ttq.executionorder "; - - /** - * Entrega la definicion de procesos que complementan datos en la consulta para una transaccion. - * @param pTransactionModule Codigo del modulo al que pertenece la transaccion. - * @param pTransactionCode Codigo de transaccion. - * @param pTransactionVersion Version de la transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public List getTgeneTransactionQuery(String pTransactionModule,Integer pTransactionCode,Integer pTransactionVersion) throws Exception { - List lTgeneTransactionQuery = null; - - HqlStatement hql = new HqlStatement(HQL_TRANSACTION_QUERY); - hql.setString(Constant.VTRANSACTIONMODULE, pTransactionModule); - hql.setInteger(Constant.VTRANSACTIONCODE, pTransactionCode); - hql.setInteger(Constant.VTRANSACTIONVERSION, pTransactionVersion); - hql.setReadonly(true); - lTgeneTransactionQuery = hql.execute().getResultList(); - return lTgeneTransactionQuery; - } - - /**Sentencia que devuelve la definicion de procesos a ejecutar en la generacion de reportes..*/ - private static final String HQL_TRANSACTION_REPORT = - "from TgeneTransactionReports ttr " + - " where ttr.pk.transactionmodule = :transactionmodule " + - " and ttr.pk.transactioncode = :transactioncode "+ - " and ttr.pk.transactionversion = :transactionversion "+ - " and ttr.status = 'A' "+ - " order by ttr.executionorder "; - - /** - * Entrega la definicion de procesos que se encargan de generar datos a utilizar en la generacion de reportes. - * @param pTransactionModule Codigo del modulo al que pertenece la transaccion. - * @param pTransactionCode Codigo de transaccion. - * @param pTransactionVersion Version de la transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public List getTgeneTransactionReports(String pTransactionModule,Integer pTransactionCode,Integer pTransactionVersion) throws Exception { - List lReports = null; - HqlStatement hql = new HqlStatement(HQL_TRANSACTION_REPORT); - hql.setString(Constant.VTRANSACTIONMODULE, pTransactionModule); - hql.setInteger(Constant.VTRANSACTIONCODE, pTransactionCode); - hql.setInteger(Constant.VTRANSACTIONVERSION, pTransactionVersion); - hql.setReadonly(true); - lReports = hql.execute().getResultList(); - return lReports; - } - - /**Sentencia que devuelve la definicion de procesos a ejecutar para un codigo de consulta.*/ - private static final String HQL_QUERY_PROCESS = - "from TgeneQueryProcess tqp " + - " where tqp.pk.querycode = :querycode " + - " and tqp.status = 'A' "+ - " order by executionorder "; - - /** - * Entrega la definicion de procesos que complementan datos en la consulta para un codigo de consulta. - * @param pQueryCode Codigo del consulta con el cual se completa datos. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public List getTgeneQueryProcess(String pQueryCode) throws Exception { - List lTgeneQueryProcess = null; - HqlStatement hql = new HqlStatement(HQL_QUERY_PROCESS); - hql.setString("querycode", pQueryCode); - hql.setReadonly(true); - lTgeneQueryProcess = hql.execute().getResultList(); - return lTgeneQueryProcess; - } - - /** - * Metodo que entrega la fecha contable de liberacion de fondos de cheques locales. - * @param pBranch Codigo de sucursal. - * @param pCompany Codigo de compania. - * @param pAccountingDate Fecha contable en la cual se ejecuta la transaccion. - * @return Date - * @throws Exception - */ - public Date getHoldDate(Integer pBranch,Integer pCompany,Date pAccountingDate) throws Exception { - Integer days = CommonProperties.getInstance().getIntValue("localhold"); - List lDates = this.getTgeneAccountingDate(pBranch, pCompany, pAccountingDate); - Date olddate = null; - Date d = null; - int i = 0; - for (TgeneAccountingDate obj : lDates) { - if(olddate == null || olddate.compareTo(obj.getAccountingdate()) != 0){ - i++; - } - olddate = obj.getAccountingdate(); - if(i >= days){ - d = obj.getAccountingdate(); - break; - } - } - if(d == null){ - throw new CommondbException("COMMONDB-00014", "FECHAS CONTABLES NO DEFINIDAS EN: {0} PARA LA COMPANIA {1}, SUCURSAL {2}", - "TGENEACCOUNTINGDATE",pCompany,pBranch); - } - return d; - } - - - /** Sentencia que devuelve lista de fechas contables por sucursal.*/ - private static final String HQL_HOLD_ACCOUNTING_DATE_BRANCH = - "from TgeneAccountingDate d " + - " where d.pk.branchcode = :branch " + - " and d.pk.companycode = :company "+ - " and d.accountingdate > :accountingdate "+ - " and d.accountingdate < :accountingdate + :days "; - - /** - * Metodo que entrega una lista de TgeneAccountingDate, con el cual se obtiene los dias de retencion - * de cheques locales. - * @param pBranch Codigo de sucursal. - * @param pCompany Codigo de compania. - * @param pAccountingDate Fecha contable. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - private List getTgeneAccountingDate(Integer pBranch,Integer pCompany,Date pAccountingDate) throws CommondbException,Exception { - List lDates = null; - HqlStatement hql = new HqlStatement(HQL_HOLD_ACCOUNTING_DATE_BRANCH); - hql.setInteger("branch", pBranch); - hql.setInteger("company", pCompany); - hql.setDate("accountingdate", pAccountingDate); - hql.setInteger("days", 15); - hql.setReadonly(true); - lDates = hql.execute().getResultList(); - if(lDates == null || lDates.size() == 0){ - throw new CommondbException("COMMONDB-00014", "FECHAS CONTABLES NO DEFINIDAS EN: {0} PARA LA COMPANIA {1}, SUCURSAL {2}", - "TGENEACCOUNTINGDATE",pCompany,pBranch); - } - return lDates; - } - - /**Sentencia que devuelve un registro del detalle del catalog.*/ - private static final String HQL_CATALOG_DETAIL = - "from TgeneCatalogDetail tcd " + - " where tcd.pk.catalog = :catalog " + - " and tcd.pk.catalogcode = :catalogcode "; - - /** - * Metodo que entrega la definicion de detalel del catalogo. - * @param pCatalog Codigo dentro del catalogo. - * @param pCatalogcode Codigo de catalogo. - * @return TgeneCatalogDetail - * @throws Exception - */ - public TgeneCatalogDetail getTgeneCatalogDetail(String pCatalog,String pCatalogcode) throws Exception { - TgeneCatalogDetail tgeneCatalogDetail = null; - HqlStatement hql = new HqlStatement(); - hql.setSentence(HQL_CATALOG_DETAIL); - hql.setString("catalog", pCatalog); - hql.setString("catalogcode", pCatalogcode); - tgeneCatalogDetail = (TgeneCatalogDetail)hql.getObject(); - return tgeneCatalogDetail; - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/entries deleted file mode 100644 index 1e37ae9..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Constant.java -file - - - - -2022-07-28T03:40:31.957756Z -4c633ec932638d0155eba7aa2bf3dff2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -446 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/Constant.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/Constant.java.svn-base deleted file mode 100644 index f1edd2f..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/exception/.svn/text-base/Constant.java.svn-base +++ /dev/null @@ -1,17 +0,0 @@ -package com.fp.persistence.commondb.exception; - -/** - * Clase en la cual se definen codigos de excepcion que se usan a menudo.. - * @author Jorge Vaca. - * @version 2.1 - */ -public class Constant { - - /** Codigo de respuesta ok al ejecutar una transaccion. */ - public static final String RS_SUCCESS="0"; - - /** Codigo de respuesta ok al ejecutar una transaccion. */ - public static final String NO_DATA_FOUND ="COMMONDB-0006"; - - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/entries deleted file mode 100644 index 0912efe..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -APPDates.java -file - - - - -2022-07-28T03:40:31.773756Z -acdb676d3b7a9137efa8b456593fbdbe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -17275 - -Frequency.java -file - - - - -2022-07-28T03:40:31.773756Z -2cd5f8a055588b739c74770dcd8605e4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1832 - -Fkconstraint.java -file - - - - -2022-07-28T03:40:31.773756Z -6e8322382bce40a0473acf1a758c102c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1759 - -sequence -dir - -FormatDates.java -file - - - - -2022-07-28T03:40:31.773756Z -59335a745608d557fb4189d38e26606a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8547 - -MapUtil.java -file - - - - -2022-07-28T03:40:31.774756Z -6443daabba4face35d6065f76d66c5f7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2262 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/APPDates.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/APPDates.java.svn-base deleted file mode 100644 index 152c1ec..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/APPDates.java.svn-base +++ /dev/null @@ -1,507 +0,0 @@ -package com.fp.persistence.commondb.helper; - -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.GregorianCalendar; - -import com.fp.common.helper.CalculationBase; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.exception.CommondbException; - -/** - * Clase utilitaria para el manejo de fechas. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class APPDates implements Comparable { - - /* Fecha base para las Operaciones */ - private Date date; - - /* Base de Calculo */ - private CalculationBase base; - - /* Calendario Encargado de las operaciones con las Fechas */ - private final GregorianCalendar calendar; - - /* Formateador de Fechas para transporte */ - private final SimpleDateFormat formateador; - - /** - * Crea una nueva instancia de Dates - * - * @param pDate Fecha base - * @param pBase Base de Calculo; - */ - public APPDates(String pDate, CalculationBase pBase) throws Exception { - this(new Date(FormatDates.getInstance().getTransportDateFormat().parse(pDate).getTime()), pBase); - } - - /** - * Crea una nueva instancia de Dates - * - * @param pDate Fecha base como string formato yyyy-MM-dd - */ - public APPDates(String pDate) throws Exception { - this(pDate, CalculationBase.B360365); - } - - /** - * Crea una nueva instancia de Dates - * - * @param pDate Fecha base - * @param pBase Base de Calculo; - */ - public APPDates(Date pDate, CalculationBase pBase) throws Exception { - this.date = pDate; - this.base = pBase; - this.calendar = new GregorianCalendar(); - this.calendar.setTime(this.date); - this.formateador = FormatDates.getInstance().getTransportDateFormat(); - } - - /** - * Crea una nueva instancia de Dates - * - * @param pDate Fecha base - * @param pBase Base de Calculo; - */ - public APPDates(Date pDate, CalculationBase pBase, SimpleDateFormat sdf) throws Exception { - this.date = pDate; - this.base = pBase; - this.calendar = new GregorianCalendar(); - this.calendar.setTime(this.date); - this.formateador = sdf; - } - - /** - * Crea una nueva instancia de Dates con base 360/365 - * - * @param pDate Fecha base - */ - public APPDates(Date pDate) throws Exception { - this(pDate, CalculationBase.B360365); - } - - /** - * Entrega el Valor de date. - * - * @return Date - */ - public Date getDate() { - return this.date; - } - - /** - * Entrega el Valor de date. - * - * @return Timestamp - */ - public Timestamp getTimestamp() { - return new Timestamp(this.date.getTime()); - } - - /** - * Metodoq ue resta un mes a una fecha y le pone el ultimo dia del mes en la misma. - * - * @throws Exception - */ - public void substractOneMonth365() throws Exception { - this.calendar.add(Calendar.MONTH, -1); - int max1 = this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - this.calendar.set(Calendar.DAY_OF_MONTH, max1); - this.date = new Date(this.calendar.getTimeInMillis()); - } - - /** - * Clase que se encarga de restar dos fechas, a la fecha mayor se resta una fecha menor. - * - * @param pInicialdate Feinicial a restar de una fecha final. - * @return int - * @throws Exception - */ - public int substract(APPDates pInicialdate) throws Exception { - int days = 0; - if (pInicialdate.getDate().after(this.date)) { - throw new CommondbException("COMMONDB-0001", "FECHA A RESTAR: {0,date,yyyy-MM-dd} ES MAYOR A: {1,date,yyyy-MM-dd}", - pInicialdate.getDate(), this.date); - } - if (pInicialdate.getDate().compareTo(this.date) == 0) { - return 0; - } - if (this.base.getMonthBase() == 365) { - days = this.substract365(pInicialdate); - } else { - days = this.substract360(pInicialdate); - } - return days; - } - - /** - * Metodo que resta fechas en base cuando la base es 365/xxx - * - * @param pInicialdate Fecha inicia a restar. - * @return int - * @throws Exception - */ - private int substract365(APPDates pInicialdate) throws Exception { - int days = 0; - GregorianCalendar cal1 = new GregorianCalendar(); - cal1.setTime(pInicialdate.getDate()); - do { - cal1.add(Calendar.DATE, 1); - days++; - } while (this.date.compareTo(cal1.getTime()) != 0); - return days; - } - - /** - * Metodo que se encarga de restar dos fehcas en base 360. - * - * @param pInicialdate - * @return - * @throws Exception - */ - private int substract360(APPDates pInicialdate) throws Exception { - int days = 0; - int nYears = this.getField(Calendar.YEAR) - pInicialdate.getField(Calendar.YEAR); - int nMonths = this.getField(Calendar.MONTH) - pInicialdate.getField(Calendar.MONTH); - int dayone = this.getField(Calendar.DAY_OF_MONTH); - if (dayone == 31) { - dayone = 30; - } - int daytwo = pInicialdate.getField(Calendar.DAY_OF_MONTH); - if (daytwo == 31) { - daytwo = 30; - } - int nMonth = this.getField(Calendar.MONTH); - if (nMonth == 1) { // 0 enero, 1 febrero , 2 marzo - // si el dia de la fecha es igual al maximo dia del mes - if (this.getField(Calendar.DAY_OF_MONTH) == this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH)) { - int day = pInicialdate.getField(Calendar.DAY_OF_MONTH); - if ((day == 30) || (day == 31)) { - dayone = 30; - } - } - } - nMonth = pInicialdate.getField(Calendar.MONTH); - if (nMonth == 1) { // 0 enero, 1 febrero , 2 marzo - // si el dia de la fecha es igual al maximo dia del mes - if (pInicialdate.getField(Calendar.DAY_OF_MONTH) == pInicialdate.calendar.getActualMaximum(Calendar.DAY_OF_MONTH)) { - int day = this.getField(Calendar.DAY_OF_MONTH); - if ((day == 30) || (day == 31)) { - daytwo = 30; - } - } - } - nYears = nYears * 12 * 30; - nMonths = nMonths * 30; - days = dayone - daytwo; - days = nYears + nMonths + days; - /* v_dias_resultado := (nvl(v_anios,0) * 12 * 30) + (nvl(v_meses,0) * 30) + (nvl(v_dia1,0) - nvl(v_dia2,0)); */ - return days; - } - - /** - * Aniadir dias a una Fecha - * - * @param days Numero de dias a aniadir - */ - public void addYearBased(int days) throws Exception { - if (this.base.getYearBase() == 365) { - this.calendar.add(Calendar.DATE, days); - } else { - if (Math.abs(days) >= 30) { - int month = (int) Math.floor(days / 30); - this.calendar.add(Calendar.MONTH, month); - this.calendar.add(Calendar.DATE, days % 30); - } else { - this.calendar.add(Calendar.DATE, days); - } - } - this.date = new Date(this.calendar.getTime().getTime()); - } - - /** - * Aniadir dias a una Fecha, amteniendo un dia fijo en la fecha. - * - * @param days Numero de dias a adicionar. - * @param payDay Fecha de pago. - * @throws Exception - */ - public void addDaysBased(int days, Integer payDay) throws Exception { - if (this.base.getMonthBase() == 365) { - /* - * if( days == 31 || this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH) >= days){ - * this.calendar.add(Calendar.MONTH,1); }else{ this.calendar.add(Calendar.DATE, days); } - */ - this.calendar.add(Calendar.DATE, days); - } else { - if (Math.abs(days) >= 30) { - int diff = 0; - if (this.calendar.get(Calendar.MONTH) == Calendar.FEBRUARY) { - if (this.calendar.get(Calendar.DATE) >= 28) { - if ((payDay != null) && (this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH) < payDay)) { - // diff= (this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH)==29)?1:2; - diff = payDay - this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH); - } - } - } - int month = (int) Math.floor(days / 30); - this.calendar.add(Calendar.MONTH, month); - int d = days % 30; - this.calendar.add(Calendar.DATE, d); - if (diff > 0) { - this.calendar.add(Calendar.DATE, diff); - } - } else { - this.calendar.add(Calendar.DATE, days); - } - } - this.date = new Date(this.calendar.getTime().getTime()); - } - - /** - * Aniadir dias a una Fecha - * - * @param days Numero de dias a aniadir - */ - public void addMonthBased(int days) throws Exception { - if (this.base.getMonthBase() == 365) { - this.calendar.add(Calendar.DATE, days); - } else { - if (Math.abs(days) >= 30) { - int diff = 0; - if (this.calendar.get(Calendar.MONTH) == Calendar.FEBRUARY) { - if (this.calendar.get(Calendar.DATE) >= 28) { - diff = (this.calendar.getActualMaximum(Calendar.DAY_OF_MONTH) == 29) ? 1 : 2; - } - } - int month = (int) Math.floor(days / 30); - this.calendar.add(Calendar.MONTH, month); - this.calendar.add(Calendar.DATE, days % 30); - if (diff > 0) { - this.calendar.add(Calendar.DATE, diff); - } - } else { - this.calendar.add(Calendar.DATE, days); - } - } - this.date = new Date(this.calendar.getTime().getTime()); - } - - /** - * Entrega el Valor de base de calculo. - * - * @return CalculationBase. - */ - public CalculationBase getBase() { - return this.base; - } - - /** - * Fija el valor de base de calculo - * - * @param base Nuevo valor de base. - */ - public void setBase(CalculationBase base) { - this.base = base; - } - - /* - * (non-Javadoc) - * - * @see java.lang.Object#toString() - */ - @Override - public String toString() { - return this.formateador.format(this.date).toString(); - } - - public int getField(int pField) throws Exception { - return this.calendar.get(pField); - } - - /** - * Entrega el Valor de calendar. - * - * @return GregorianCalendar. - */ - public GregorianCalendar getGregorianCalendar() { - return this.calendar; - } - - public APPDates dateFrecuency(Frequency pFrecuency) throws Exception { - this.calendar.add(Calendar.DATE, pFrecuency.getNumDays(this.getDate(), this.formateador)); - return new APPDates(new Date(this.calendar.getTime().getTime())); - } - - public APPDates nextDateofSequence(Frequency pFrecuency, int pDay) throws Exception { - int days = pFrecuency.getNumDays(this.getDate(), this.formateador); - if (days > 31) { - // TODO Incluiy las frecuanias superiores a mensual - throw new CommondbException("COMMONDB-0002", "LA FRECUENCIA DEBE SER MENOR O IGUAL A MENSUAL"); - } - if (pDay > days) { - if ((pFrecuency == Frequency.MONTHLY) && (pDay == 31)) { - pDay = days; - } else { - throw new CommondbException("COMMONDB-0003", "El DIA {0} NO PUEDE MAYOR AL NUMEOR DE DIAS DE LA FRECUENCIA{1}", pDay, days); - } - } - GregorianCalendar cal = new GregorianCalendar(); - cal.setTime(this.date); - if (pFrecuency == Frequency.WEEKLY) { - while (cal.get(Calendar.DAY_OF_WEEK) != pDay) { - cal.add(Calendar.DAY_OF_WEEK, 1); - } - return new APPDates(new Date(cal.getTime().getTime())); - } - cal.set(Calendar.DATE, pDay); - APPLogger.getLogger().debug("Calendario base ==> " + cal.getTime()); - APPLogger.getLogger().debug("Maximo dia del mes ==> " + cal.getActualMaximum(Calendar.DAY_OF_MONTH)); - while (cal.getTime().before(this.date)) { - cal.add(Calendar.DATE, days); - } - while ((cal.get(Calendar.MONTH) != this.getField(Calendar.MONTH)) && (pDay != cal.get(Calendar.DATE))) { - cal.add(Calendar.DATE, -1); - } - if ((cal.get(Calendar.DATE) == 30) && (cal.getActualMaximum(Calendar.DAY_OF_MONTH) == 31)) { - cal.add(Calendar.DATE, 1); - } - return new APPDates(new Date(cal.getTime().getTime())); - } - - public int getJulianDate() throws Exception { - GregorianCalendar c = new GregorianCalendar(); - c.setTime(this.date); - return this.toJulian(c.get(Calendar.YEAR), c.get(Calendar.MONTH), c.get(Calendar.DATE)); - } - - private int toJulian(int year, int month, int day) throws Exception { - int julianYear = year; - if (year < 0) { - julianYear++; - } - int julianMonth = month; - if (month > 2) { - julianMonth++; - } else { - julianYear--; - julianMonth += 13; - } - - double julian = (java.lang.Math.floor(365.25 * julianYear) + java.lang.Math.floor(30.6001 * julianMonth) + day + 1720995.0); - - if ((day + (31 * (month + (12 * year)))) >= JGREG) { - int ja = (int) (0.01 * julianYear); - julian += (2 - ja) + (0.25 * ja); - } - return (int) Math.floor(julian); - } - - public static final int JGREG = 15 + (31 * (10 + (12 * 1582))); - - /** - * Adiciona anios, meses, dias, semanas ..Etc a una fecha. - * - * @param field Constante de anio, mes, dia...Etc - * @param value Numero de anios, dias, meses a adicionar puese der un valor negativo. - * @throws Exception - */ - public void addField(int field, int value) throws Exception { - getGregorianCalendar().add(field, value); - this.date = new Date(getGregorianCalendar().getTimeInMillis()); - } - - /** - * Adiciona anios, meses, dias, semanas ..Etc a una fecha. - * - * @param field Constante de anio, mes, dia...Etc - * @param value Numero de anios, dias, meses a adicionar puese der un valor negativo. - * @throws Exception - */ - public void setField(int field, int value) throws Exception { - if (field == Calendar.DAY_OF_MONTH) { - int maxday = getGregorianCalendar().getActualMaximum(Calendar.DAY_OF_MONTH); - if (value > maxday) { - value = maxday; - } - } - getGregorianCalendar().set(field, value); - this.date = new Date(getGregorianCalendar().getTimeInMillis()); - } - - /** - * Compara dos Dates. - * - * @param o - * @return - */ - @Override - public int compareTo(Object o) { - if (!(o instanceof APPDates)) { - return -1; - } - APPDates d = (APPDates) o; - return this.date.compareTo(d.date); - } - - /** - * Entrega el dia del anio al correspondiente a la Fecha - * - * @return Dia del Anio - * @throws Exception - */ - public int getDayOfYear() throws Exception { - GregorianCalendar gcal = new GregorianCalendar(); - gcal.setTime(this.date); - return gcal.get(Calendar.DAY_OF_YEAR); - } - - /** - * Entrega lso dias del mes correspondiente a la fecha. - * - * @return int - * @throws Exception - */ - public int getDaysOfMonth() throws Exception { - if (this.base.getMonthBase() == 360) { - return 30; - } - GregorianCalendar gcal = new GregorianCalendar(); - gcal.setTime(this.date); - return gcal.getActualMaximum(Calendar.DAY_OF_MONTH); - } - - /** - * Fija el ultimo dia del mes corespondiente a la fecha. - * - * @return - * @throws Exception - */ - public void setLastDateOfMonth() throws Exception { - Calendar gcal = new GregorianCalendar(); - gcal.setTime(this.date); - gcal.set(Calendar.DAY_OF_MONTH, this.getDaysOfMonth()); - this.date = new Date(gcal.getTimeInMillis()); - } - - /** - * Entrega el mes del ao correspondiente a la Fecha - * - * @return mes del ao - * @throws Exception - */ - public String getMonthOfYear() throws Exception { - int month = this.getField(Calendar.MONTH) + 1; - if (month < 10) { - return "0" + month; - } else { - return "" + month; - } - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Fkconstraint.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Fkconstraint.java.svn-base deleted file mode 100644 index 830f795..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Fkconstraint.java.svn-base +++ /dev/null @@ -1,53 +0,0 @@ -package com.fp.persistence.commondb.helper; - -import javax.persistence.Query; - -import com.fp.common.helper.FkException; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que entrega la tabla padre y dependiente dado un foreing key. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class Fkconstraint implements FkException { - - @Override - public String[] getFkData(String pFk) { - try { - String parent = this.getParentTable(pFk); - String child = this.getChildTable(pFk); - String[] data = new String[2]; - data[0] = parent; - data[1] = child; - return data; - } catch (Exception e) { - // No tomar accion. - } - return null; - } - - private String getParentTable(String pFk) throws Exception { - String table = null; - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(Fkconstraint.SQL); - qry.setParameter("fk", pFk); - table = (String) qry.getSingleResult(); - return table; - } - - private String getChildTable(String pFk) throws Exception { - String table = null; - // SQLQuery qry = pSession.createSQLQuery(Fkconstraint.SQL_DEP); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(Fkconstraint.SQL_DEP); - qry.setParameter("fk", pFk); - table = (String) qry.getSingleResult(); - return table; - } - - private static final String SQL = "select table_name from user_constraints where constraint_name = ( " - + "select unique r_constraint_name from all_constraints where constraint_name = :fk)"; - - private static final String SQL_DEP = "select table_name from user_constraints where constraint_name = :fk"; - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/FormatDates.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/FormatDates.java.svn-base deleted file mode 100644 index b018f39..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/FormatDates.java.svn-base +++ /dev/null @@ -1,260 +0,0 @@ -package com.fp.persistence.commondb.helper; - -import java.sql.Date; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.GregorianCalendar; - -import javax.persistence.EntityManager; - -import org.hibernate.HibernateException; -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.common.exception.CommonException; -import com.fp.common.helper.Constant; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.exception.CommondbException; - -public final class FormatDates { - - /** Intancia Singleton */ - private static FormatDates cache = null; - - /** Almacena el formato yyyy-MM-dd HH:mm:ss */ - private SimpleDateFormat vDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - - /** Almacena el formato yyyy-MM-dd */ - private SimpleDateFormat vDate = new SimpleDateFormat("yyyy-MM-dd");; - - /** Almacena el formato yyyy-MM-dd HH:mm:ss.SSS */ - private SimpleDateFormat vTimestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - - /** Almacena el formato HH:mm:ss */ - private SimpleDateFormat vTime = new SimpleDateFormat("mm:ss.SSS"); - - /** Almacena el formato HH:mm:ss */ - private SimpleDateFormat vTimeInseconds = new SimpleDateFormat("ss.SSS"); - - /* Crea una Instancia de FormatDates */ - private FormatDates() { - } - - /** - * Entrega una instancia de la clase. - * - * @return FormatDates - */ - public static FormatDates getInstance() { - synchronized (FormatDates.class) { - if (FormatDates.cache == null) { - FormatDates.cache = new FormatDates(); - } - } - return FormatDates.cache; - } - - /** - * Obtiene el Formateador para el Transporte de Fechas: formato yyyy-MM-dd - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getTimeInSeconds() { - if (vTimeInseconds == null) { - vTimeInseconds = new SimpleDateFormat("ss.SSS"); - } - return vTimeInseconds; - } - - /** - * Obtiene el Formateador para el Transporte de Fechas: formato yyyy-MM-dd - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getTransportDateFormat() { - if (vDate == null) { - vDate = new SimpleDateFormat("yyyy-MM-dd"); - } - return vDate; - } - - /** - * Obtiene el Formateador para el Transporte de Timestamp: formato yyyy-MM-dd HH:mm:ss - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getTransportDatetimeFormat() { - if (vDateTime == null) { - vDateTime = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); - } - return vDateTime; - - } - - /** - * Obtiene el formateador de Timestamps para su transaporte en String: formato yyyy-MM-dd HH:mm:ss.SSS - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getTransportTimestampFormat() { - if (vTimestamp == null) { - vTimestamp = new SimpleDateFormat("yyyy-MM-dd HH:mm:ss.SSS"); - } - return vTimestamp; - } - - /** - * Obtiene el formateador de Horas para su transaporte en String: formato HH:mm - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getHourSecondsFormat() { - return new SimpleDateFormat("HH:mm"); - } - - /** - * Obtiene el formateador de Horas para su transaporte en String: formato HH:mm:ss - * - * @return SimpleDateFormat - */ - public SimpleDateFormat getTimeFormat() { - return new SimpleDateFormat("HH:mm:ss"); - } - - /** - * Obtiene el formateador de un conteo de tiempo en String - * - * @return SimpleDateFormat. - */ - public SimpleDateFormat getTimeCountFormat() { - if (vTime == null) { - vTime = new SimpleDateFormat("mm:ss.SSS"); - } - return vTime; - } - - /** - * Enterga el timestamp de la base de datos. - * - * @return Timestamp - * @throws CommonException - * @throws HibernateException - */ - public Timestamp getDataBaseTimestamp() throws HibernateException, CommondbException, Exception { - Timestamp timestamp = null; - String dialect = Constant.getDialect(PersistenceHelper.getEntityManager()); - String sql = "SELECT systimestamp as timestamp FROM dual "; - if (dialect.compareTo("org.hibernate.dialect.SybaseDialect") == 0) { - sql = "select getDate() as timestamp "; - } - if (dialect.compareTo("org.hibernate.dialect.InformixDialect") == 0) { - sql = "select current as timestamp from dual "; - } - - SQLQuery q = PersistenceHelper.getSession().createSQLQuery(sql); - - q.addScalar("timestamp", new org.hibernate.type.TimestampType()); - timestamp = (Timestamp) q.uniqueResult(); - GregorianCalendar gc = new GregorianCalendar(); - gc.setTimeInMillis(timestamp.getTime()); - if (gc.get(Calendar.MILLISECOND) == 0) { - GregorianCalendar gc1 = new GregorianCalendar(); - gc1.setTimeInMillis(System.currentTimeMillis()); - gc.set(Calendar.MILLISECOND, gc1.get(Calendar.MILLISECOND)); - timestamp = new Timestamp(gc.getTimeInMillis()); - } - return timestamp; - } - - /** - * Enterga el timestamp de la base de datos. - * - * @return Timestamp - * @throws CommonException - * @throws HibernateException - */ - public Timestamp getDataBaseTimestamp(EntityManager pEntityManager) throws HibernateException, CommondbException, Exception { - Timestamp timestamp = null; - String dialect = Constant.getDialect(pEntityManager); - String sql = "SELECT systimestamp as timestamp FROM dual "; - if (dialect.compareTo("org.hibernate.dialect.SybaseDialect") == 0) { - sql = "select getDate() as timestamp "; - } - if (dialect.compareTo("org.hibernate.dialect.InformixDialect") == 0) { - sql = "select current as timestamp from dual"; - } - SQLQuery q = ((Session) pEntityManager.getDelegate()).createSQLQuery(sql); - q.addScalar("timestamp", new org.hibernate.type.TimestampType()); - timestamp = (Timestamp) q.uniqueResult(); - return timestamp; - } - - /** - * Enterga el timestamp de la base de datos. - * - * @return Date - * @throws CommonException - * @throws HibernateException - */ - public Date getDataBaseDate() throws HibernateException, CommondbException { - Date timestamp = null; - SQLQuery q = PersistenceHelper.getSession().createSQLQuery("SELECT sysdate as timestamp FROM dual "); - q.addScalar("timestamp", new org.hibernate.type.DateType()); - timestamp = (Date) q.uniqueResult(); - return timestamp; - } - - /** - * Formatea una fecha para ser empleada como campo de particionamiento en una Tabla - * - * @param pDate Fecha de Referencia. - * @return String Fecha con el formato yyyyMM - * @throws Exception - */ - public static String getPartition(Date pDate) throws Exception { - return Constant.getPartition(pDate); - } - - /** - * Formatea una fecha para ser empleada como campo de particionamiento en una Tabla - * - * @param pDate Fecha de Referencia. - * @return String Fecha con el formato yyyyMM - * @throws Exception - */ - public static String getPartition(Timestamp pDate) throws Exception { - return Constant.getPartition(pDate); - } - - /** - * Entrega el la particion default de caducidad de registros. - * - * @return Particion con el formato yyyyMM - * @throws Exception - */ - public static String getDefaultPartition() throws Exception { - return "299912"; - } - - /** - * Devuelve la fecha hasta default de 2999-12-31 - * - * @return Fecha hasta 2999-12-31 - * @throws Exception - */ - public static Timestamp getDefaultExpiryTimestamp() throws Exception { - return Constant.getDefaultExpiryTimestamp(); - } - - /** - * Devuelve la fecha hasta default de 2999-12-31 - * - * @return Fecha hasta 2999-12-31 - * @throws Exception - */ - public static java.sql.Date getDefaultExpiryDate() throws Exception { - return Constant.getDefaultExpiryDate(); - } - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Frequency.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Frequency.java.svn-base deleted file mode 100644 index c2729a0..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/Frequency.java.svn-base +++ /dev/null @@ -1,76 +0,0 @@ -package com.fp.persistence.commondb.helper; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.Calendar; - -import com.fp.common.helper.CalculationBase; - -/** - * Enumeracion que almacena las distintas frecuencias de calculo de la aplicacion. - * @author Jorge Vaca. - * @version 2.1 - * - */ -public enum Frequency { - DAYLY(1,1), WEEKLY(2,7), BIWEEKLY(3,15), MONTHLY(4,-1), BIMONTHLY(5,-2), TRIMONTHLY(6,-3), - SEMESTRAL(7,-6), ANNUAL(8,-12); - - private int numDays; - private Integer code; - - /** - * Crea una nueva frecuencia. El valor negativo -1 indica 1 mes, -2 indica 2 meses... Etc. - * @param pCode Cdigo de frecuencia. - * @param pDays Das de la frecuencia. - */ - private Frequency(int pCode, int pDays) { - this.numDays = pDays; - this.code = pCode; - } - - /** - * Entrega el Valor de numDays. - * @return numDays. - */ - public int getNumDays(Date pDate,SimpleDateFormat sdf) throws Exception { - int data = numDays; - if (data < 0) { - data = data * -1; - APPDates d = new APPDates(pDate,CalculationBase.B365365,sdf); - d.addField(Calendar.MONTH, data); - APPDates a = new APPDates(pDate,CalculationBase.B365365,sdf); - data = d.substract(a); - } - return data; - } - - /** - * Entraga un objeto Frecuency dado el codigo de frecuencia. - * @param pCode Cdigo de frecuencia. - * @return Frequency - * @throws Exception - */ - public static Frequency getFrecuency(Integer pCode) throws Exception{ - Frequency [] bt = null; - bt = Frequency.values(); - Frequency btype = null; - for(Frequency obj : bt){ - if(obj.code.compareTo(pCode) == 0){ - btype = obj; - } - } - return btype; - } - - /** - * Entrega el valor de: code - * @return Integer - */ - public Integer getCode() { - return code; - } - - - -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/MapUtil.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/MapUtil.java.svn-base deleted file mode 100644 index 6244b11..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/.svn/text-base/MapUtil.java.svn-base +++ /dev/null @@ -1,81 +0,0 @@ -/* - * - */ -package com.fp.persistence.commondb.helper; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import com.fp.persistence.commondb.exception.CommondbException; - -/** - * Class MapUtil encargada de maneja los resultados de un Query. - * - * @author gfiallos - */ -public final class MapUtil { - - /** El valor de instance. */ - private static MapUtil instance = null; - - /** - * Crea una nueva instancia de map util. - */ - private MapUtil() { - } - - /** - * Obtiene la única instancia de MapUtil. - * - * @return única instancia de MapUtil - */ - public static MapUtil getInstance() { - synchronized (MapUtil.class) { - if (MapUtil.instance == null) { - MapUtil.instance = new MapUtil(); - } - return MapUtil.instance; - } - } - - /** - * Convierte los datos de una lista de objectos a una lista de Maps - * - * @param pData data en Arreglo - * @param pNames Nombre de los key por campo - * @return list data convertida - * @throws CommondbException la commondb exception - */ - public List> arrayToMapList(List pData, String... pNames) throws CommondbException { - List> data = new ArrayList>(); - for (Object[] obj : pData) { - data.add(this.arrayToMap(obj, pNames)); - } - return data; - } - - /** - * TRansforma un arreglo de objetos a Map - * - * @param pData Data en arraglo - * @param pNames Nombre de los Keys - * @return map Resultado - * @throws CommondbException la commondb exception - */ - public Map arrayToMap(Object[] pData, String... pNames) throws CommondbException { - Map data = new HashMap(); - if ((pData == null) || (pNames == null) || (pData.length < pNames.length)) { - throw new CommondbException("COMMONDB-00021", "NUMERO DE ETIQUETAS ERRADO"); - } - for (int i = 0; i < pData.length; i++) { - if (i >= pNames.length) { - break; - } - data.put(pNames[i], pData[i]); - - } - return data; - } -} diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/sequence/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/sequence/.svn/entries deleted file mode 100644 index 6c2b950..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/sequence/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/helper/sequence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/entries b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/entries deleted file mode 100644 index 059dc07..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log -svn://172.17.26.185/COMACO - - - -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Audit.java -file - - - - -2022-07-28T03:40:31.809756Z -298e7779ea7357ad17171ea1d0954759 -2015-01-16T05:34:18.740661Z -3756 -cpiedra - - - - - - - - - - - - - - - - - - - - - -11392 - diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.netbeans-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.netbeans-base deleted file mode 100644 index 5b1d2bd..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.netbeans-base +++ /dev/null @@ -1,289 +0,0 @@ -package com.fp.persistence.commondb.log; - -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.Map; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.data.SaveData; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranchKey; -import com.fp.persistence.pgeneral.safe.TsafeAudit; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDelKey; -import com.fp.persistence.pgeneral.safe.TsafeAuditKey; -import com.fp.persistence.pgeneral.safe.TsafeUser; - -/** - * Clase que se encarga del menejo de auditoria de de cambios en tablas. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Audit { - - /** - * Metodo que obtiene lista de campos del registro, y procesa por campo , si el valor cambio se genera un registro - * de auditoria. - * - * @param newBean Datos del registro nuevo. - * @param oldBean Datos del registro anterior. - * @throws Exception - */ - public static void process(HibernateBean newBean, HibernateBean oldBean) throws Exception { - Field f[] = newBean.getClass().getDeclaredFields(); - Timestamp t = null; - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 - || obj.getName().compareTo("class") == 0 || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - if (t == null) { - t = FormatDates.getInstance().getDataBaseTimestamp(); - } - Audit.processByField(obj, newBean, oldBean, t); - } - } - - /** - * Metodo que verifica si los datos del campo son diferente de los valores del registro anterior. - * - * @param f Nombre del campo. - * @param newBean Datos del nuevo registro. - * @param oldBean Datos del registro anterior. - * @throws Exception - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - private static void processByField(Field f, HibernateBean newBean, HibernateBean oldBean, Timestamp t) throws Exception { - Object newvalue; - try { - newvalue = BeanManager.getBeanAttributeValue(newBean, f.getName()); - } catch (NoSuchMethodException e) { - return; - } - Object oldvalue; - try { - oldvalue = BeanManager.getBeanAttributeValue(oldBean, f.getName()); - } catch (Exception e) { - return; - } - if (newvalue == null && oldvalue == null) { - return; - } - if ((newvalue == null && oldvalue != null) || (newvalue != null && oldvalue == null)) { - saveLog(newBean.getClass().getSimpleName(), f, newvalue, oldvalue, t); - return; - } - if (newvalue instanceof Comparable) { - if (((Comparable) newvalue).compareTo(oldvalue) != 0) { - saveLog(newBean.getClass().getSimpleName(), f, newvalue, oldvalue, t); - } - } - } - - /** - * Crea e inserta un rgistro en la tabla de auditoria TsafeAudit. - * - * @param beanName Nombre del bean. - * @param f Nombre del campo de la base. - * @param newvalue Nuevo valor. - * @param oldvalue Valor anterior. - * @throws Exception - */ - private static void saveLog(String beanName, Field f, Object newvalue, Object oldvalue, Timestamp t) throws Exception { - SaveRequest sr = SaveData.getSaveRequest(); - //Crea un objeto con los datos a almacenar auditoria. - TsafeAuditKey key = new TsafeAuditKey(); - //TgeneAccountingDateBranchKey dkey = new TgeneAccountingDateBranchKey(0, sr.getCompany()); - //TgeneAccountingDateBranch d = TgeneAccountingDateBranch.find(PersistenceHelper.getEntityManager(), dkey); - Date fecha = new Date(t.getTime()); - key.setChangedate(fecha);//d.getAccountingdate() - key.setTablename(beanName.toUpperCase()); - key.setColumnname(f.getName().toUpperCase()); - key.setPartitiondb(FormatDates.getPartition(key.getChangedate())); - key.setRealdate(t); - TsafeAudit obj = new TsafeAudit(); - obj.setPk(key); - obj.setCompanycode(sr.getCompany()); - obj.setOfficecode(sr.getOfficeCode()); - obj.setBranchcode(sr.getBranchCode()); - obj.setTerminalcode(sr.getTerminalCode()); - obj.setUsercode(sr.getUser()); - obj.setTransactionmodule(sr.getTransactionModule()); - obj.setTransactioncode(sr.getTransactionCode()); - obj.setTransactionversion(sr.getTransactionVersion()); - obj.setBrowser(sr.getBrowser()); - obj.setOperativesystem(sr.getOperativesystem()); - if (oldvalue != null) { - obj.setOldvalue(oldvalue.toString()); - } - if (newvalue != null) { - obj.setNewvalue(newvalue.toString()); - } - if(sr.getUser()!=null){ - TsafeUser user= TsafeUser.find(PersistenceHelper.getEntityManager(), sr.getUser()); - if(user!=null){ - obj.setPersoncode(user.getPersoncode()); - } - } - setAdicionalData(obj); - //Almacena el registro en la base. - PersistenceHelper.save(obj); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - public static void insert(HibernateBean pBean) throws Exception { - insertdelete(pBean, true); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - public static void delete(HibernateBean pBean) throws Exception { - insertdelete(pBean, false); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - private static void insertdelete(HibernateBean pBean, boolean insert) throws Exception { - Field f[] = pBean.getClass().getDeclaredFields(); - Map m = new HashMap(); - for (Field obj : f) { - if (obj.getName().compareTo("hashValue") == 0 - || obj.getName().compareTo("class") == 0 || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - String value = getBeanValue(pBean, obj.getName()); - m.put(obj.getName(), value); - } - if (!m.isEmpty()) { - saveLogInsertDelete(pBean.getClass().getSimpleName(), m, insert); - } - } - - /** - * Entrega el valor de un campo. - * - * @param pBean bean a obtener el valor de un campo. - * @param pField Nombre del campo a obtener el valor. - * @return String. - * @throws Exception - */ - private static String getBeanValue(HibernateBean pBean, String pField) throws Exception { - String newvalue; - try { - newvalue = BeanManager.getBeanAttributeValue(pBean, pField).toString(); - if (newvalue.contains("from")) { - //Para que no envie sentecias JPL que estan en el bean. - return null; - } - } catch (Exception e) { - return null; - } - return newvalue; - } - - /** - * Crea un registro en la base con datos de insert o update de un registro. - * - * @param beanName Nombre de la tabla. - * @param m Map con los campos de la tabla. - * @param insert true indica que inserta un registro, false indica que se elimian un registro de la base. - * @throws Exception - */ - private static void saveLogInsertDelete(String beanName, Map m, boolean insert) throws Exception { - Timestamp t = FormatDates.getInstance().getDataBaseTimestamp(); - SaveRequest sr = SaveData.getSaveRequest(); - if (sr == null) { - return; - } - //Crea un objeto con los datos a almacenar auditoria. - TsafeAuditInsDelKey key = new TsafeAuditInsDelKey(); - //TgeneAccountingDateBranchKey dkey = new TgeneAccountingDateBranchKey(0, sr.getCompany()); - //TgeneAccountingDateBranch d = TgeneAccountingDateBranch.find(PersistenceHelper.getEntityManager(), dkey); - Date fecha = new Date(t.getTime()); - key.setChangedate(fecha); - key.setTablename(beanName.toUpperCase()); - key.setPartitiondb(FormatDates.getPartition(key.getChangedate())); - key.setRealdate(t); - TsafeAuditInsDel obj = new TsafeAuditInsDel(); - obj.setPk(key); - obj.setCompanycode(sr.getCompany()); - obj.setOfficecode(sr.getOfficeCode()); - obj.setBranchcode(sr.getBranchCode()); - obj.setTerminalcode(sr.getTerminalCode()); - obj.setUsercode(sr.getUser()); - obj.setTransactionmodule(sr.getTransactionModule()); - obj.setTransactioncode(sr.getTransactionCode()); - obj.setTransactionversion(sr.getTransactionVersion()); - obj.setBrowser(sr.getBrowser()); - obj.setOperativesystem(sr.getOperativesystem()); - if (insert) { - obj.setIsinsert("Y"); - obj.setIsdelete("N"); - } else { - obj.setIsinsert("N"); - obj.setIsdelete("Y"); - } - obj.setRecvalue(m.toString()); - setAdicionalData(obj); - - if(sr.getUser()!=null){ - TsafeUser user= TsafeUser.find(PersistenceHelper.getEntityManager(), sr.getUser()); - if(user!=null){ - obj.setPersoncode(user.getPersoncode()); - } - } - - //Almacena el registro en la base. - PersistenceHelper.save(obj); - } -/** - * - * @param obj - * @throws Exception - */ - private static void setAdicionalData(HibernateBean obj) throws Exception { - try{ - try { - BeanManager.setBeanAttributeValue(obj, "account", SaveData.getAccount().substring(0, 19)); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - try { - BeanManager.setBeanAttributeValue(obj, "personcode", SaveData.getPersoncode() == null ? null : Integer.valueOf(SaveData.getPersoncode())); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - try { - BeanManager.setBeanAttributeValue(obj, "solicitudenumber", SaveData.getSolicitudenumber().substring(0, 19)); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - } catch(Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - } -} \ No newline at end of file diff --git a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.svn-base b/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.svn-base deleted file mode 100644 index 5b1d2bd..0000000 --- a/base/persistence/commondb/src/main/java/com/fp/persistence/commondb/log/.svn/text-base/Audit.java.svn-base +++ /dev/null @@ -1,289 +0,0 @@ -package com.fp.persistence.commondb.log; - -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.HashMap; -import java.util.Map; - -import com.fp.common.helper.BeanManager; -import com.fp.common.logger.APPLogger; -import com.fp.dto.data.SaveData; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.save.SaveRequest; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranchKey; -import com.fp.persistence.pgeneral.safe.TsafeAudit; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDelKey; -import com.fp.persistence.pgeneral.safe.TsafeAuditKey; -import com.fp.persistence.pgeneral.safe.TsafeUser; - -/** - * Clase que se encarga del menejo de auditoria de de cambios en tablas. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Audit { - - /** - * Metodo que obtiene lista de campos del registro, y procesa por campo , si el valor cambio se genera un registro - * de auditoria. - * - * @param newBean Datos del registro nuevo. - * @param oldBean Datos del registro anterior. - * @throws Exception - */ - public static void process(HibernateBean newBean, HibernateBean oldBean) throws Exception { - Field f[] = newBean.getClass().getDeclaredFields(); - Timestamp t = null; - for (Field obj : f) { - if (obj.getName().compareTo("pk") == 0 || obj.getName().compareTo("hashValue") == 0 - || obj.getName().compareTo("class") == 0 || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - if (t == null) { - t = FormatDates.getInstance().getDataBaseTimestamp(); - } - Audit.processByField(obj, newBean, oldBean, t); - } - } - - /** - * Metodo que verifica si los datos del campo son diferente de los valores del registro anterior. - * - * @param f Nombre del campo. - * @param newBean Datos del nuevo registro. - * @param oldBean Datos del registro anterior. - * @throws Exception - */ - @SuppressWarnings({"unchecked", "rawtypes"}) - private static void processByField(Field f, HibernateBean newBean, HibernateBean oldBean, Timestamp t) throws Exception { - Object newvalue; - try { - newvalue = BeanManager.getBeanAttributeValue(newBean, f.getName()); - } catch (NoSuchMethodException e) { - return; - } - Object oldvalue; - try { - oldvalue = BeanManager.getBeanAttributeValue(oldBean, f.getName()); - } catch (Exception e) { - return; - } - if (newvalue == null && oldvalue == null) { - return; - } - if ((newvalue == null && oldvalue != null) || (newvalue != null && oldvalue == null)) { - saveLog(newBean.getClass().getSimpleName(), f, newvalue, oldvalue, t); - return; - } - if (newvalue instanceof Comparable) { - if (((Comparable) newvalue).compareTo(oldvalue) != 0) { - saveLog(newBean.getClass().getSimpleName(), f, newvalue, oldvalue, t); - } - } - } - - /** - * Crea e inserta un rgistro en la tabla de auditoria TsafeAudit. - * - * @param beanName Nombre del bean. - * @param f Nombre del campo de la base. - * @param newvalue Nuevo valor. - * @param oldvalue Valor anterior. - * @throws Exception - */ - private static void saveLog(String beanName, Field f, Object newvalue, Object oldvalue, Timestamp t) throws Exception { - SaveRequest sr = SaveData.getSaveRequest(); - //Crea un objeto con los datos a almacenar auditoria. - TsafeAuditKey key = new TsafeAuditKey(); - //TgeneAccountingDateBranchKey dkey = new TgeneAccountingDateBranchKey(0, sr.getCompany()); - //TgeneAccountingDateBranch d = TgeneAccountingDateBranch.find(PersistenceHelper.getEntityManager(), dkey); - Date fecha = new Date(t.getTime()); - key.setChangedate(fecha);//d.getAccountingdate() - key.setTablename(beanName.toUpperCase()); - key.setColumnname(f.getName().toUpperCase()); - key.setPartitiondb(FormatDates.getPartition(key.getChangedate())); - key.setRealdate(t); - TsafeAudit obj = new TsafeAudit(); - obj.setPk(key); - obj.setCompanycode(sr.getCompany()); - obj.setOfficecode(sr.getOfficeCode()); - obj.setBranchcode(sr.getBranchCode()); - obj.setTerminalcode(sr.getTerminalCode()); - obj.setUsercode(sr.getUser()); - obj.setTransactionmodule(sr.getTransactionModule()); - obj.setTransactioncode(sr.getTransactionCode()); - obj.setTransactionversion(sr.getTransactionVersion()); - obj.setBrowser(sr.getBrowser()); - obj.setOperativesystem(sr.getOperativesystem()); - if (oldvalue != null) { - obj.setOldvalue(oldvalue.toString()); - } - if (newvalue != null) { - obj.setNewvalue(newvalue.toString()); - } - if(sr.getUser()!=null){ - TsafeUser user= TsafeUser.find(PersistenceHelper.getEntityManager(), sr.getUser()); - if(user!=null){ - obj.setPersoncode(user.getPersoncode()); - } - } - setAdicionalData(obj); - //Almacena el registro en la base. - PersistenceHelper.save(obj); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - public static void insert(HibernateBean pBean) throws Exception { - insertdelete(pBean, true); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - public static void delete(HibernateBean pBean) throws Exception { - insertdelete(pBean, false); - } - - /** - * Metodo que registra en el log de auditoria los registros nuevos de una tabla. - * - * @param pBean Datos del registro nuevo. - * @throws Exception - */ - private static void insertdelete(HibernateBean pBean, boolean insert) throws Exception { - Field f[] = pBean.getClass().getDeclaredFields(); - Map m = new HashMap(); - for (Field obj : f) { - if (obj.getName().compareTo("hashValue") == 0 - || obj.getName().compareTo("class") == 0 || obj.getName().compareTo("serialVersionUID") == 0) { - continue; - } - String value = getBeanValue(pBean, obj.getName()); - m.put(obj.getName(), value); - } - if (!m.isEmpty()) { - saveLogInsertDelete(pBean.getClass().getSimpleName(), m, insert); - } - } - - /** - * Entrega el valor de un campo. - * - * @param pBean bean a obtener el valor de un campo. - * @param pField Nombre del campo a obtener el valor. - * @return String. - * @throws Exception - */ - private static String getBeanValue(HibernateBean pBean, String pField) throws Exception { - String newvalue; - try { - newvalue = BeanManager.getBeanAttributeValue(pBean, pField).toString(); - if (newvalue.contains("from")) { - //Para que no envie sentecias JPL que estan en el bean. - return null; - } - } catch (Exception e) { - return null; - } - return newvalue; - } - - /** - * Crea un registro en la base con datos de insert o update de un registro. - * - * @param beanName Nombre de la tabla. - * @param m Map con los campos de la tabla. - * @param insert true indica que inserta un registro, false indica que se elimian un registro de la base. - * @throws Exception - */ - private static void saveLogInsertDelete(String beanName, Map m, boolean insert) throws Exception { - Timestamp t = FormatDates.getInstance().getDataBaseTimestamp(); - SaveRequest sr = SaveData.getSaveRequest(); - if (sr == null) { - return; - } - //Crea un objeto con los datos a almacenar auditoria. - TsafeAuditInsDelKey key = new TsafeAuditInsDelKey(); - //TgeneAccountingDateBranchKey dkey = new TgeneAccountingDateBranchKey(0, sr.getCompany()); - //TgeneAccountingDateBranch d = TgeneAccountingDateBranch.find(PersistenceHelper.getEntityManager(), dkey); - Date fecha = new Date(t.getTime()); - key.setChangedate(fecha); - key.setTablename(beanName.toUpperCase()); - key.setPartitiondb(FormatDates.getPartition(key.getChangedate())); - key.setRealdate(t); - TsafeAuditInsDel obj = new TsafeAuditInsDel(); - obj.setPk(key); - obj.setCompanycode(sr.getCompany()); - obj.setOfficecode(sr.getOfficeCode()); - obj.setBranchcode(sr.getBranchCode()); - obj.setTerminalcode(sr.getTerminalCode()); - obj.setUsercode(sr.getUser()); - obj.setTransactionmodule(sr.getTransactionModule()); - obj.setTransactioncode(sr.getTransactionCode()); - obj.setTransactionversion(sr.getTransactionVersion()); - obj.setBrowser(sr.getBrowser()); - obj.setOperativesystem(sr.getOperativesystem()); - if (insert) { - obj.setIsinsert("Y"); - obj.setIsdelete("N"); - } else { - obj.setIsinsert("N"); - obj.setIsdelete("Y"); - } - obj.setRecvalue(m.toString()); - setAdicionalData(obj); - - if(sr.getUser()!=null){ - TsafeUser user= TsafeUser.find(PersistenceHelper.getEntityManager(), sr.getUser()); - if(user!=null){ - obj.setPersoncode(user.getPersoncode()); - } - } - - //Almacena el registro en la base. - PersistenceHelper.save(obj); - } -/** - * - * @param obj - * @throws Exception - */ - private static void setAdicionalData(HibernateBean obj) throws Exception { - try{ - try { - BeanManager.setBeanAttributeValue(obj, "account", SaveData.getAccount().substring(0, 19)); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - try { - BeanManager.setBeanAttributeValue(obj, "personcode", SaveData.getPersoncode() == null ? null : Integer.valueOf(SaveData.getPersoncode())); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - try { - BeanManager.setBeanAttributeValue(obj, "solicitudenumber", SaveData.getSolicitudenumber().substring(0, 19)); - } catch (Exception e) { - //NO hacer nada, - APPLogger.getLogger().debug(e.getStackTrace()[0]); - } - } catch(Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - } -} \ No newline at end of file diff --git a/base/persistence/commondb/src/main/resources/.svn/entries b/base/persistence/commondb/src/main/resources/.svn/entries deleted file mode 100644 index 8280a65..0000000 --- a/base/persistence/commondb/src/main/resources/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -commondbmessages_es.properties -file - - - - -2022-07-28T03:40:32.250758Z -27a0a4585d3e3812b13aa45a9f2a4550 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1016 - diff --git a/base/persistence/commondb/src/main/resources/.svn/text-base/commondbmessages_es.properties.svn-base b/base/persistence/commondb/src/main/resources/.svn/text-base/commondbmessages_es.properties.svn-base deleted file mode 100644 index 5a668cb..0000000 --- a/base/persistence/commondb/src/main/resources/.svn/text-base/commondbmessages_es.properties.svn-base +++ /dev/null @@ -1,23 +0,0 @@ -COMMONDB-0001=FECHA A RESTAR: {0,date,yyyy-MM-dd} ES MAYOR A: {1,date,yyyy-MM-dd} -COMMONDB-0002=LA FRECUENCIA DEBE SER MENOR O IGUAL A MENSUAL -COMMONDB-0003=El DIA {0} NO PUEDE MAYOR AL NUMEOR DE DIAS DE LA FRECUENCIA{1} -COMMONDB-0004=SESION NO ASOCIADA A UNA TRANSACCION -COMMONDB-0005=TRANSACCION YA APLICADA -COMMONDB-0006=CONSULTA NO TIENE REGISTROS -COMMONDB-0007=SENTENCIA INVALIDA -COMMONDB-0008=VALOR NO ENVIADO {0} -COMMONDB-0009=EL BEAN {0} NO SE ENCUENTRA EN EL SESSIONFACTORY -COMMONDB-00010=TABLA {0} TIENE UN PRIMARY KEY COMPUESTO -COMMONDB-00011=BEAN NO DEFINIDO PARA LA TABLA {0} -COMMONDB-00012=CAMPO {0} NO DEFINIDO EN LA TABLA {1} -COMMONDB-00013=FECHA CONTABLE NO DEFINIDA PARA LA COMPANIA {0}, SUCURSAL {1} -COMMONDB-00014=FECHAS CONTABLES NO DEFINIDAS EN: {0} PARA LA COMPANIA {1}, SUCURSAL {2} -COMMONDB-00015=EXISTE MAS DE UN REGISTRO PARA LA TABAL: {0} -COMMONDB-00016= -COMMONDB-00017= -COMMONDB-00018= -COMMONDB-00019= -COMMONDB-00020= -COMMONDB-00021=NUMERO DE ETIQUETAS ERRADO - - diff --git a/base/persistence/commondb/src/test/.svn/entries b/base/persistence/commondb/src/test/.svn/entries deleted file mode 100644 index 9d1b545..0000000 --- a/base/persistence/commondb/src/test/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/persistence/commondb/src/test/java/.svn/entries b/base/persistence/commondb/src/test/java/.svn/entries deleted file mode 100644 index 7beb1be..0000000 --- a/base/persistence/commondb/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/commondb/src/test/resources/.svn/entries b/base/persistence/commondb/src/test/resources/.svn/entries deleted file mode 100644 index cb9f9b4..0000000 --- a/base/persistence/commondb/src/test/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/commondb/src/test/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/parmas/.settings/.svn/entries b/base/persistence/parmas/.settings/.svn/entries deleted file mode 100644 index 4129687..0000000 --- a/base/persistence/parmas/.settings/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/.settings -svn://172.17.26.185/COMACO - - - -2015-12-29T14:44:23.142349Z -4359 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -org.eclipse.jdt.core.prefs -file - - - - -2022-07-28T03:40:28.886743Z -9c5661676ceb67312e95b170dcde2dda -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -430 - -org.eclipse.m2e.core.prefs -file - - - - -2022-07-28T03:40:28.887743Z -66985cccd6a27c2401be11bc75d9ea23 -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -90 - -org.eclipse.core.resources.prefs -file - - - - -2022-07-28T03:40:28.887743Z -a9703a6bb6a3abf4cb5c0472f9db8b48 -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -134 - -org.eclipse.wst.common.project.facet.core.xml -file - - - - -2022-07-28T03:40:28.887743Z -15f8d7ec0431c0a6fbea4f6ca024795b -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -172 - -org.hibernate.eclipse.console.prefs -file - - - - -2022-07-28T03:40:28.887743Z -111170a7f7a4052d29b315f3504ffc72 -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -80 - -org.eclipse.wst.validation.prefs -file - - - - -2022-07-28T03:40:28.887743Z -81a4c1a45fc1cb2ad389f79f65c38de3 -2015-12-29T14:44:23.142349Z -4359 -cvasquez - - - - - - - - - - - - - - - - - - - - - -50 - -org.eclipse.wst.common.component -file - - - - -2022-07-28T03:40:28.888743Z -557719675987419c8a454e8d3c94a28d -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -244 - diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base deleted file mode 100644 index 67a1686..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=ISO-8859-1 -encoding//src/test/java=ISO-8859-1 -encoding/=ISO-8859-1 diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base deleted file mode 100644 index c788ee3..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base +++ /dev/null @@ -1,8 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base deleted file mode 100644 index 14b697b..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base deleted file mode 100644 index 1a7ddce..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base deleted file mode 100644 index d788c0d..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.validation.prefs.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.validation.prefs.svn-base deleted file mode 100644 index 6f1cba6..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.eclipse.wst.validation.prefs.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -disabled=06target -eclipse.preferences.version=1 diff --git a/base/persistence/parmas/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base b/base/persistence/parmas/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base deleted file mode 100644 index d9275ad..0000000 --- a/base/persistence/parmas/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -default.configuration= -eclipse.preferences.version=1 -hibernate3.enabled=true diff --git a/base/persistence/parmas/.svn/dir-prop-base b/base/persistence/parmas/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/parmas/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/parmas/.svn/entries b/base/persistence/parmas/.svn/entries deleted file mode 100644 index 95144af..0000000 --- a/base/persistence/parmas/.svn/entries +++ /dev/null @@ -1,139 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -.classpath -file - - - - -2022-07-28T03:40:28.912743Z -179b3c0571a314fc472173592628377e -2014-10-24T04:09:44.450107Z -1906 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1097 - -.project -file - - - - -2022-07-28T03:40:28.912743Z -565dfa904e5c52c715a373c70d3d87c5 -2015-12-29T14:44:23.142349Z -4359 -cvasquez - - - - - - - - - - - - - - - - - - - - - -1415 - -src -dir - -bin -dir - -pom.xml -file - - - - -2022-07-28T03:40:28.912743Z -be5a646196b70a9a534037d60c672f19 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -541 - -.settings -dir - diff --git a/base/persistence/parmas/.svn/text-base/.classpath.svn-base b/base/persistence/parmas/.svn/text-base/.classpath.svn-base deleted file mode 100644 index 94b6867..0000000 --- a/base/persistence/parmas/.svn/text-base/.classpath.svn-base +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/persistence/parmas/.svn/text-base/.project.svn-base b/base/persistence/parmas/.svn/text-base/.project.svn-base deleted file mode 100644 index eaeb29c..0000000 --- a/base/persistence/parmas/.svn/text-base/.project.svn-base +++ /dev/null @@ -1,48 +0,0 @@ - - - parmas - - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.hibernate.eclipse.console.hibernateBuilder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - org.eclipse.babel.editor.rbeBuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.hibernate.eclipse.console.hibernateNature - org.eclipse.wst.common.project.facet.core.nature - com.jaspersoft.studio.babel.editor.rbeNature - - diff --git a/base/persistence/parmas/.svn/text-base/pom.xml.svn-base b/base/persistence/parmas/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 18e76e0..0000000 --- a/base/persistence/parmas/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,15 +0,0 @@ - - - 4.0.0 - - com.fp.base - persistence - 2.1 - - com.fp.base.persistence - parmas - parmas - - - diff --git a/base/persistence/parmas/bin/.svn/entries b/base/persistence/parmas/bin/.svn/entries deleted file mode 100644 index 0cadb4f..0000000 --- a/base/persistence/parmas/bin/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - diff --git a/base/persistence/parmas/bin/src/.svn/entries b/base/persistence/parmas/bin/src/.svn/entries deleted file mode 100644 index 03be60e..0000000 --- a/base/persistence/parmas/bin/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/persistence/parmas/bin/src/main/.svn/entries b/base/persistence/parmas/bin/src/main/.svn/entries deleted file mode 100644 index 674bf6e..0000000 --- a/base/persistence/parmas/bin/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/parmas/bin/src/main/java/.svn/entries b/base/persistence/parmas/bin/src/main/java/.svn/entries deleted file mode 100644 index 09381d5..0000000 --- a/base/persistence/parmas/bin/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/parmas/bin/src/main/java/com/.svn/entries b/base/persistence/parmas/bin/src/main/java/com/.svn/entries deleted file mode 100644 index 10a1b0e..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/.svn/entries b/base/persistence/parmas/bin/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 85a1b62..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/parmas/bin/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 14deefb..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -parmas -dir - diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/.svn/entries b/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/.svn/entries deleted file mode 100644 index 123e5aa..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -param -dir - diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/entries b/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/entries deleted file mode 100644 index 53f531f..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param -svn://172.17.26.185/COMACO - - - -2014-10-21T05:02:04.597749Z -1761 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmCentroControl.class -file - - - - -2022-07-28T03:40:28.613742Z -92154f670a6c79c7731cb73b61609f0e -2014-10-21T05:02:04.597749Z -1761 -dlopez -has-props - - - - - - - - - - - - - - - - - - - - -10063 - diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmCentroControl.class.svn-base b/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmCentroControl.class.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmCentroControl.class.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.class.svn-base b/base/persistence/parmas/bin/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.class.svn-base deleted file mode 100644 index 93dec4e7d537e59350202209480cedff60bc3154..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 10063 zcmeHNO>-1Q7=9-tY_i!Tkcvc+O#Nm3cB@)!aNXd2R{U z&fD^{lA=zHcKK~9%qr(DEMDV=(5PpbdCLo|QsWwF1&#JytXaaW@`AN$dgfwr!C?5a%`OLzkXlmhfS_FbMfi)2PF_uF+tz zNn%d8rd0+~XR%O1(p}8km0H!3B^IlKQnyvBR2XQ0Y0W7y5quvkPH_vJ8-Bus?aJ1k zaGBucb&b-#7q|d3&%&N0d!=Twpt8?}m0Ma3=0s8tr$>&uWTG};*biS-O~E|} z)+WQaPMDS{PHMCxJGub>=P~jWJ%_P0=W7yOx!v@FHZ*m~a=B+$R(VOsT6D~czeIE} z#bi~z<9fPhewphfZd8~HBZnE+S()o2upV1-#v&_sELgcRVbu}6WOGl)n$xRH7|Xf< z3SV=uSfeP|4P$aQj7f51?Jxr_W)))jK+t>+%>T!IDtAdlCnnSXWf(!q%BC)*T+K1SW7kE!G6rx@Z+Kkc32yTToM)J71n;8qhH_do>@5GyRHAdsYN(Qp=YP(0{-q_7X57ckd zc;wrmH8145#haDagS^u3kv|&v8y&GKUq|s+M=%;+x9Q4rvEh#YrFZ?^(RhF+S`p>? zOEumKZ0#xC6Fjlo^!UJ>uiK+(zE-0bg+GxVmZjGCardwcXnXJ6zk6qUZno#< z&c7+uzb@*^SiE;Z9bV-Xl=B{vTPaOBI+~$F^rA+OWH(F0Qi>cXLUEa?RUuIL z%7@gDZ3DV9gZd1WB`oX|%O=#`)5U+OltU=(gvL|SsFW=Ra?Uifpk2D-5q^PwK0f*% z^p>7nGq~d`>?wi(+tbK*(`y-w{iD%nu-DnwOv$*ZMcu+<_^+6P;$g2EwK&TLlThhVEH9#&b`oiVIxQ?Hbq^HJ?y za&9RYfW>T!o<9JS))MLOd{pF@Ad&noiP5V2BNnr%2v!$cqXE)tLs14+6V13l1{RU* zZq!1?Yl#%>hRMdVoqVOnD%gH4o4CG7t{^xg<4k!!nt}iW0!`h*4%R0o+Hg4*h@4u6 zD96TS9HMBHGNkZ0jj#j)D#N}CIb(~tnj>|6UTSO`L~rKonrra0rVJeI*%S=(qXytw zKzs+$EEzx(=S&2ITw{4XMKUbb&^S}HijY>zIgp|?6tyU(DY^lE;hsp*M;c|K;%kaN z0cK<6r|7emU|ii1nQ7DW5D}Y)V&c&OLNErAvq9>hF4~D)3OSi}BORt5O5=MkzIRXt zfBiHNvDxL952H-h?+epMX}_O;j2`z>JuE*ErXykcM3_DqrcZ_G(_#8dm}Y_3lSDG|=o>k)*lSHaIpgd$Bx z5Vl?qzbFxA=t2ZxYYx9E5oQz2#cxW4HxkUn?@EM=2{`P>FCk0f)UxgewU+>{lYZoq)rL65*W$9I{G; zs|h$9RwBHcfWr|b!g~og98)5^AOD=xPAU;t{Bu&vD-jkG_@SUgFcSD-Mu|{L;D>o7 z0#D$F%SwbLD#tzTwW~^mWilfOTi!U@vJ&B1g1J~#B3!3RYz|*45vo9FzQnA?t8VM@ oe5JtJK@MJK9kfC&QliiCw+F9ci#)2~jrReq(}(miUU{GX17>Hx_W%F@ diff --git a/base/persistence/parmas/src/.svn/entries b/base/persistence/parmas/src/.svn/entries deleted file mode 100644 index 8be7d78..0000000 --- a/base/persistence/parmas/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/parmas/src/main/.svn/entries b/base/persistence/parmas/src/main/.svn/entries deleted file mode 100644 index 02ef074..0000000 --- a/base/persistence/parmas/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/parmas/src/main/java/.svn/entries b/base/persistence/parmas/src/main/java/.svn/entries deleted file mode 100644 index 3752d0f..0000000 --- a/base/persistence/parmas/src/main/java/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ec -dir - -com -dir - diff --git a/base/persistence/parmas/src/main/java/com/.svn/entries b/base/persistence/parmas/src/main/java/com/.svn/entries deleted file mode 100644 index 1cc401c..0000000 --- a/base/persistence/parmas/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/parmas/src/main/java/com/fp/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/.svn/entries deleted file mode 100644 index b92b14a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index d46d9f9..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -parmas -dir - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/.svn/entries deleted file mode 100644 index 5dd3fc9..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/.svn/entries +++ /dev/null @@ -1,49 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -inte -dir - -param -dir - -dto -dir - -soli -dir - -eval -dir - -fun -dir - -ins -dir - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/.svn/entries deleted file mode 100644 index 468e98e..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ws -dir - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/entries deleted file mode 100644 index 42a07dc..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -InfoGuardiaDto.java -file - - - - -2022-07-28T03:40:27.884739Z -46ca6f1de6f3c205ee40c63d79829bb6 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1100 - -DatosArmaDto.java -file - - - - -2022-07-28T03:40:27.884739Z -ad8d8ff70b7d822c9557428ed1d8f84e -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3754 - -DatosSnapDto.java -file - - - - -2022-07-28T03:40:27.884739Z -3d779319b3825cc9233fc3971aeac59b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4004 - -DocumentoDto.java -file - - - - -2022-07-28T03:40:27.885739Z -804852a22a5d5397ae6090b5ea65e736 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4412 - -ArmaDto.java -file - - - - -2022-07-28T03:40:27.885739Z -8ee8674990871ba2f91b2620ad37302b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2579 - -ImagenDto.java -file - - - - -2022-07-28T03:40:27.885739Z -cc73bd7b6d27ec5943ca54b44cc146be -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1298 - -ColaImpresionDto.java -file - - - - -2022-07-28T03:40:27.886739Z -5b892183dd12b0e9bd518c0d592e76c1 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2052 - -JefeCentroControlDto.java -file - - - - -2022-07-28T03:40:27.886739Z -4b154d8f547e698f5ed967ffd2dcbcc5 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1182 - -TramiteDto.java -file - - - - -2022-07-28T03:40:27.886739Z -772f8336b8f8d71ee827fcc6632ba18b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1486 - -PersonaDto.java -file - - - - -2022-07-28T03:40:27.887739Z -ea9d5102fc9c164d4eac415a2965f752 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3144 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ArmaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ArmaDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ArmaDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ColaImpresionDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ColaImpresionDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ColaImpresionDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/DocumentoDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/DocumentoDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/DocumentoDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ImagenDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ImagenDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/ImagenDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/JefeCentroControlDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/JefeCentroControlDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/JefeCentroControlDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/PersonaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/PersonaDto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/prop-base/PersonaDto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ArmaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ArmaDto.java.svn-base deleted file mode 100644 index c666c83..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ArmaDto.java.svn-base +++ /dev/null @@ -1,134 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; - -/** - * DTO que transportará los datos del arma - * @author dcruz - * - */ -public class ArmaDto implements Serializable{ - - private static final long serialVersionUID = 7339086491340802876L; - /** - * id del arma en la base datos - */ - private String idArma; - /** - * serie del arma - */ - private String serie; - /** - * clase del arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipo; - /** - * Marca del arma - */ - private String marca; - /** - * Modelo del arma - */ - private String modelo; - /** - * Calibre del arma - */ - private String calibre; - /** - * Unidad o medida del arma - */ - private String unidadMedidaPeso; - /** - * Longitud arma - */ - private String longitud; - /** - * Estado del arma - */ - private String estado; - /** - * Cantidad de dicha arma - */ - private Integer cantidad; - /** - * Tag asociado al arma - */ - private String tagAsociado; - - public String getIdArma() { - return idArma; - } - public void setIdArma(String idArma) { - this.idArma = idArma; - } - public String getSerie() { - return serie; - } - public void setSerie(String serie) { - this.serie = serie; - } - public String getClase() { - return clase; - } - public void setClase(String clase) { - this.clase = clase; - } - public String getTipo() { - return tipo; - } - public void setTipo(String tipo) { - this.tipo = tipo; - } - public String getMarca() { - return marca; - } - public void setMarca(String marca) { - this.marca = marca; - } - public String getModelo() { - return modelo; - } - public void setModelo(String modelo) { - this.modelo = modelo; - } - public String getCalibre() { - return calibre; - } - public void setCalibre(String calibre) { - this.calibre = calibre; - } - public String getEstado() { - return estado; - } - public void setEstado(String estado) { - this.estado = estado; - } - public Integer getCantidad() { - return cantidad; - } - public void setCantidad(Integer cantidad) { - this.cantidad = cantidad; - } - public String getUnidadMedidaPeso() { - return unidadMedidaPeso; - } - public void setUnidadMedidaPeso(String unidadMedidaPeso) { - this.unidadMedidaPeso = unidadMedidaPeso; - } - public String getLongitud() { - return longitud; - } - public void setLongitud(String longitud) { - this.longitud = longitud; - } - public String getTagAsociado() { - return tagAsociado; - } - public void setTagAsociado(String tagAsociado) { - this.tagAsociado = tagAsociado; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ColaImpresionDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ColaImpresionDto.java.svn-base deleted file mode 100644 index 841b251..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ColaImpresionDto.java.svn-base +++ /dev/null @@ -1,89 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; -import java.sql.Timestamp; -import java.util.Date; - -/** - * DTO que contiene datos para los datos a imprimir en los documentos - * @author dcruz - * - */ -public class ColaImpresionDto implements Serializable { - - private static final long serialVersionUID = 2701742512229268659L; - - /** - * Clave identificatoria del registro impresión - */ - private String idImpresion; - /** - * Fecha de inserción del registro - */ - private Timestamp fechaRegistro; - /** - * Fecha de impresión - */ - private Date fechaImpresion; - /** - * Documento a imprimir - */ - private DocumentoDto documento; - /** - * Datos de la persona - */ - private PersonaDto persona; - /** - * Datos del arma a entregar el permiso - */ - private ArmaDto arma; - - /** - * Bandera que determina si el documento a imprimir es una autorización o un permiso - */ - private String esAutorizacion; - - public String getIdImpresion() { - return idImpresion; - } - public void setIdImpresion(String idImpresion) { - this.idImpresion = idImpresion; - } - public Timestamp getFechaRegistro() { - return fechaRegistro; - } - public void setFechaRegistro(Timestamp fechaRegistro) { - this.fechaRegistro = fechaRegistro; - } - public Date getFechaImpresion() { - return fechaImpresion; - } - public void setFechaImpresion(Date fechaImpresion) { - this.fechaImpresion = fechaImpresion; - } - public PersonaDto getPersona() { - return persona; - } - public void setPersona(PersonaDto persona) { - this.persona = persona; - } - public ArmaDto getArma() { - return arma; - } - public void setArma(ArmaDto arma) { - this.arma = arma; - } - public DocumentoDto getDocumento() { - return documento; - } - public void setDocumento(DocumentoDto documento) { - this.documento = documento; - } - public String getEsAutorizacion() { - return esAutorizacion; - } - public void setEsAutorizacion(String esAutorizacion) { - this.esAutorizacion = esAutorizacion; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosArmaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosArmaDto.java.svn-base deleted file mode 100644 index 0c06b58..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosArmaDto.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; - -/** - * Contiene datos del arma y las imagenes asociadas a una arma - * @author Manuel Cepeda - * - */ -public class DatosArmaDto implements Serializable{ - - private static final long serialVersionUID = 5203532003887140746L; - - private String lote; - private String tipoFabricacion; - private String marca; - private String modelo; - private String estadoArma; - private String tipoPermiso; - private String descripcionClase; - private String descripcionTipo; - private String calibre; - - private String imagenImpronta; - private String imagenArma; - private String fichaTecnicaArma; - - public DatosArmaDto() { - } - - /** - * @return the imagenImpronta - */ - public String getImagenImpronta() { - return imagenImpronta; - } - - /** - * @param imagenImpronta the imagenImpronta to set - */ - public void setImagenImpronta(String imagenImpronta) { - this.imagenImpronta = imagenImpronta; - } - - /** - * @return the imagenArma - */ - public String getImagenArma() { - return imagenArma; - } - - /** - * @param imagenArma the imagenArma to set - */ - public void setImagenArma(String imagenArma) { - this.imagenArma = imagenArma; - } - - /** - * @return the fichaTecnicaArma - */ - public String getFichaTecnicaArma() { - return fichaTecnicaArma; - } - - /** - * @param fichaTecnicaArma the fichaTecnicaArma to set - */ - public void setFichaTecnicaArma(String fichaTecnicaArma) { - this.fichaTecnicaArma = fichaTecnicaArma; - } - - /** - * @return the lote - */ - public String getLote() { - return lote; - } - - /** - * @param lote the lote to set - */ - public void setLote(String lote) { - this.lote = lote; - } - - /** - * @return the tipoFabricacion - */ - public String getTipoFabricacion() { - return tipoFabricacion; - } - - /** - * @param tipoFabricacion the tipoFabricacion to set - */ - public void setTipoFabricacion(String tipoFabricacion) { - this.tipoFabricacion = tipoFabricacion; - } - - /** - * @return the marca - */ - public String getMarca() { - return marca; - } - - /** - * @param marca the marca to set - */ - public void setMarca(String marca) { - this.marca = marca; - } - - /** - * @return the modelo - */ - public String getModelo() { - return modelo; - } - - /** - * @param modelo the modelo to set - */ - public void setModelo(String modelo) { - this.modelo = modelo; - } - - /** - * @return the estadoArma - */ - public String getEstadoArma() { - return estadoArma; - } - - /** - * @param estadoArma the estadoArma to set - */ - public void setEstadoArma(String estadoArma) { - this.estadoArma = estadoArma; - } - - /** - * @return the tipoPermiso - */ - public String getTipoPermiso() { - return tipoPermiso; - } - - /** - * @param tipoPermiso the tipoPermiso to set - */ - public void setTipoPermiso(String tipoPermiso) { - this.tipoPermiso = tipoPermiso; - } - - /** - * @return the descripcionClase - */ - public String getDescripcionClase() { - return descripcionClase; - } - - /** - * @param descripcionClase the descripcionClase to set - */ - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - /** - * @return the descripcionTipo - */ - public String getDescripcionTipo() { - return descripcionTipo; - } - - /** - * @param descripcionTipo the descripcionTipo to set - */ - public void setDescripcionTipo(String descripcionTipo) { - this.descripcionTipo = descripcionTipo; - } - - /** - * @return the calibre - */ - public String getCalibre() { - return calibre; - } - - /** - * @param calibre the calibre to set - */ - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosSnapDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosSnapDto.java.svn-base deleted file mode 100644 index 43b1dd8..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DatosSnapDto.java.svn-base +++ /dev/null @@ -1,181 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; -import java.util.List; - -/** - * Contiene datos de la persona, sea natural o juridica, informacion e images de armas - * @author Manuel Cepeda - * - */ -public class DatosSnapDto implements Serializable{ - - private static final long serialVersionUID = 5203532003887140746L; - /** - * Codigo de la persona en la base de datos - */ - private Integer codigoPersona; - /** - * Nombre de la razonSocial - */ - private String razonSocial; - /** - * Dirección de residencia de la persona - */ - private String direccion; - /** - * Nombre de la email - */ - private String email; - /** - * Teléfono de domicilio de la persona - */ - private String telefonoFijo; - /** - * celular de la persona - */ - private String telefonoCelular; - private String testPsicologico; - private List listaTramites; - private List listaGuardias; - - private String xPathLocation; - - - - - private List listaDatosArma; - - /** - * @return the codigoPersona - */ - public Integer getCodigoPersona() { - return codigoPersona; - } - /** - * @param codigoPersona the codigoPersona to set - */ - public void setCodigoPersona(Integer codigoPersona) { - this.codigoPersona = codigoPersona; - } - /** - * @return the razonSocial - */ - public String getRazonSocial() { - return razonSocial; - } - /** - * @param razonSocial the razonSocial to set - */ - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - /** - * @return the direccion - */ - public String getDireccion() { - return direccion; - } - /** - * @param direccion the direccion to set - */ - public void setDireccion(String direccion) { - this.direccion = direccion; - } - /** - * @return the email - */ - public String getEmail() { - return email; - } - /** - * @param email the email to set - */ - public void setEmail(String email) { - this.email = email; - } - /** - * @return the telefonoFijo - */ - public String getTelefonoFijo() { - return telefonoFijo; - } - /** - * @param telefonoFijo the telefonoFijo to set - */ - public void setTelefonoFijo(String telefonoFijo) { - this.telefonoFijo = telefonoFijo; - } - /** - * @return the telefonoCelular - */ - public String getTelefonoCelular() { - return telefonoCelular; - } - /** - * @param telefonoCelular the telefonoCelular to set - */ - public void setTelefonoCelular(String telefonoCelular) { - this.telefonoCelular = telefonoCelular; - } - /** - * @return the listaTramites - */ - public List getListaTramites() { - return listaTramites; - } - /** - * @param listaTramites the listaTramites to set - */ - public void setListaTramites(List listaTramites) { - this.listaTramites = listaTramites; - } - /** - * @return the listaGuardias - */ - public List getListaGuardias() { - return listaGuardias; - } - /** - * @param listaGuardias the listaGuardias to set - */ - public void setListaGuardias(List listaGuardias) { - this.listaGuardias = listaGuardias; - } - /** - * @return the xPathLocation - */ - public String getxPathLocation() { - return xPathLocation; - } - /** - * @param xPathLocation the xPathLocation to set - */ - public void setxPathLocation(String xPathLocation) { - this.xPathLocation = xPathLocation; - } - /** - * @return the listaDatosArma - */ - public List getListaDatosArma() { - return listaDatosArma; - } - /** - * @param listaDatosArma the listaDatosArma to set - */ - public void setListaDatosArma(List listaDatosArma) { - this.listaDatosArma = listaDatosArma; - } - /** - * @return the testPsicologico - */ - public String getTestPsicologico() { - return testPsicologico; - } - /** - * @param testPsicologico the testPsicologico to set - */ - public void setTestPsicologico(String testPsicologico) { - this.testPsicologico = testPsicologico; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DocumentoDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DocumentoDto.java.svn-base deleted file mode 100644 index 9e52a4f..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/DocumentoDto.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; -import java.util.Date; - -/** - * Contiene datos de los documentos habilitantes - * @author dcruz - * - */ -public class DocumentoDto implements Serializable { - - private static final long serialVersionUID = -955491058987586481L; - /** - * Código del documento - */ - private Long codigoDocumento; - /** - * Número del documento - */ - private String numeroDocumento; - /** - * Fecha en la que emitió el documento - */ - private Date fechaEmision; - /** - * Fecha de expiración del documento - */ - private Date fechaExpiracion; - /** - * Número de solicitud - */ - private String numeroSolicitud; - /** - * Código del arma enlazado con el documento habilitante si es que existe - */ - private String carma; - /** - * El tipo de trámite por el que fue expedido el documento - */ - private String tipoTramite; - /** - * El trámite por el que fue expedido el documento - */ - private String tramite; - /** - * La categoría por el que fue expedido el documento - */ - private String categoria; - /** - * El uso/actividad por el que fue expedido el documento - */ - private String usoActividad; - /** - * Estado en el que se encuentra la solicitud - */ - private String estadoTramite; - - /** - * Bandera que determina si muestra la fecha de expiracion o la descripcion. - */ - private String esFechaExpiracion; - - /** - * Descripcion del documento se utiliza para - * mostrar un texto en caso que no se muestre la fecha de expiracion. - */ - private String descripcion; - - /** - * Descripcion1 del documento se utiliza para - * mostrar el texto de la jurisdiccion(Ecuador, Canton, Parroquia, Provincia). - * Se concatena descripcion1+descripcion2 - */ - private String descripcion1; - - /** - * Descripcion2 del documento se utiliza para - * mostrar el texto del pie del tramite. - * Se concatena descripcion1+descripcion2 - */ - private String descripcion2; - - public Long getCodigoDocumento() { - return codigoDocumento; - } - public void setCodigoDocumento(Long codigoDocumento) { - this.codigoDocumento = codigoDocumento; - } - public String getNumeroDocumento() { - return numeroDocumento; - } - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - public Date getFechaEmision() { - return fechaEmision; - } - public void setFechaEmision(Date fechaEmision) { - this.fechaEmision = fechaEmision; - } - public Date getFechaExpiracion() { - return fechaExpiracion; - } - public void setFechaExpiracion(Date fechaExpiracion) { - this.fechaExpiracion = fechaExpiracion; - } - public String getNumeroSolicitud() { - return numeroSolicitud; - } - public void setNumeroSolicitud(String numeroSolicitud) { - this.numeroSolicitud = numeroSolicitud; - } - public String getCarma() { - return carma; - } - public void setCarma(String carma) { - this.carma = carma; - } - public String getTipoTramite() { - return tipoTramite; - } - public void setTipoTramite(String tipoTramite) { - this.tipoTramite = tipoTramite; - } - public String getTramite() { - return tramite; - } - public void setTramite(String tramite) { - this.tramite = tramite; - } - public String getCategoria() { - return categoria; - } - public void setCategoria(String categoria) { - this.categoria = categoria; - } - public String getUsoActividad() { - return usoActividad; - } - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - public String getEstadoTramite() { - return estadoTramite; - } - public void setEstadoTramite(String estadoTramite) { - this.estadoTramite = estadoTramite; - } - public String getEsFechaExpiracion() { - return esFechaExpiracion; - } - public void setEsFechaExpiracion(String esFechaExpiracion) { - this.esFechaExpiracion = esFechaExpiracion; - } - public String getDescripcion() { - return descripcion; - } - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } - public String getDescripcion1() { - return descripcion1; - } - public void setDescripcion1(String descripcion1) { - this.descripcion1 = descripcion1; - } - public String getDescripcion2() { - return descripcion2; - } - public void setDescripcion2(String descripcion2) { - this.descripcion2 = descripcion2; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ImagenDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ImagenDto.java.svn-base deleted file mode 100644 index 39e0da1..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/ImagenDto.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; - -public class ImagenDto implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * Código de la imagen - */ - private Integer codigoImagen; - /** - * Content type de la imagen - */ - private String tipoContenido; - /** - * La imagen en bytes - */ - private byte[] imagen; - /** - * La extensión de la imagen - */ - private String extension; - /** - * Size de la imagen - */ - private Integer tamanioImagen; - public Integer getCodigoImagen() { - return codigoImagen; - } - public void setCodigoImagen(Integer codigoImagen) { - this.codigoImagen = codigoImagen; - } - public String getTipoContenido() { - return tipoContenido; - } - public void setTipoContenido(String tipoContenido) { - this.tipoContenido = tipoContenido; - } - public byte[] getImagen() { - return imagen; - } - public void setImagen(byte[] imagen) { - this.imagen = imagen; - } - public String getExtension() { - return extension; - } - public void setExtension(String extension) { - this.extension = extension; - } - public Integer getTamanioImagen() { - return tamanioImagen; - } - public void setTamanioImagen(Integer tamanioImagen) { - this.tamanioImagen = tamanioImagen; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/InfoGuardiaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/InfoGuardiaDto.java.svn-base deleted file mode 100644 index 5f554b3..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/InfoGuardiaDto.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; -import java.util.Date; - -/** - * Contiene datos de los guardias que tienes una empresa y los datos del guardia - * @author Manuel Cepeda - * - */ -public class InfoGuardiaDto implements Serializable{ - - private static final long serialVersionUID = 5203532003887140746L; - - private String nombre; - private String estado; - private String empresa; - - public InfoGuardiaDto() { - } - - /** - * @return the nombre - */ - public String getNombre() { - return nombre; - } - /** - * @param nombre the nombre to set - */ - public void setNombre(String nombre) { - this.nombre = nombre; - } - /** - * @return the estado - */ - public String getEstado() { - return estado; - } - /** - * @param estado the estado to set - */ - public void setEstado(String estado) { - this.estado = estado; - } - /** - * @return the empresa - */ - public String getEmpresa() { - return empresa; - } - /** - * @param empresa the empresa to set - */ - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/JefeCentroControlDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/JefeCentroControlDto.java.svn-base deleted file mode 100644 index f5154e7..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/JefeCentroControlDto.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; - -/** - * DTO que contiene los datos del jefe del centro de control centro de control - * @author dcruz - * - */ -public class JefeCentroControlDto implements Serializable { - - private static final long serialVersionUID = 443509338679825612L; - - /** - * Nombre del jefe del centro de control - */ - private String nombre; - /** - * Ubicación del centro de control - */ - private String ubicacion; - /** - * Firma del jefe del centro de control - */ - private byte[] firma; - /** - * Rango del jefe de centro de impresión - */ - private String rangoJefe; - - public String getNombre() { - return nombre; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } - public String getUbicacion() { - return ubicacion; - } - public void setUbicacion(String ubicacion) { - this.ubicacion = ubicacion; - } - public byte[] getFirma() { - return firma; - } - public void setFirma(byte[] firma) { - this.firma = firma; - } - public String getRangoJefe() { - return rangoJefe; - } - public void setRangoJefe(String rangoJefe) { - this.rangoJefe = rangoJefe; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/PersonaDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/PersonaDto.java.svn-base deleted file mode 100644 index d996bf6..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/PersonaDto.java.svn-base +++ /dev/null @@ -1,135 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; - -/** - * Contiene datos de la persona, sea natural o juridica - * @author dcruz - * - */ -public class PersonaDto implements Serializable{ - - private static final long serialVersionUID = 5203532003887140746L; - /** - * Codigo de la persona en la base de datos - */ - private Integer codigoPersona; - /** - * Nombre de la persona - */ - private String nombre; - /** - * Código del usuario atado a esta persona - */ - private String codigoUsuario; - /** - * Identificación de la persona - */ - private String identificacion; - /** - * Tipo de identificación de la persona - */ - private String tipoIdentificacion; - /** - * Provincia de residencia de la persona - */ - private String provincia; - /** - * Cantón de residencia de la persona - */ - private String canton; - /** - * Parroquia de residencia de la persona - */ - private String parroquia; - /** - * Dirección de residencia de la persona - */ - private String direccion; - /** - * Teléfono de domicilio de la persona - */ - private String telefono; - /** - * Representante legal en caso de ser jurídico - */ - private String representanteLegal; - /** - * Grado militar de la persona si lo posee - */ - private String grado; - - public Integer getCodigoPersona() { - return codigoPersona; - } - public void setCodigoPersona(Integer codigoPersona) { - this.codigoPersona = codigoPersona; - } - public String getNombre() { - return nombre; - } - public void setNombre(String nombre) { - this.nombre = nombre; - } - public String getIdentificacion() { - return identificacion; - } - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - public String getTipoIdentificacion() { - return tipoIdentificacion; - } - public void setTipoIdentificacion(String tipoIdentificacion) { - this.tipoIdentificacion = tipoIdentificacion; - } - public String getProvincia() { - return provincia; - } - public void setProvincia(String provincia) { - this.provincia = provincia; - } - public String getCanton() { - return canton; - } - public void setCanton(String canton) { - this.canton = canton; - } - public String getParroquia() { - return parroquia; - } - public void setParroquia(String parroquia) { - this.parroquia = parroquia; - } - public String getDireccion() { - return direccion; - } - public void setDireccion(String direccion) { - this.direccion = direccion; - } - public String getTelefono() { - return telefono; - } - public void setTelefono(String telefono) { - this.telefono = telefono; - } - public String getCodigoUsuario() { - return codigoUsuario; - } - public void setCodigoUsuario(String codigoUsuario) { - this.codigoUsuario = codigoUsuario; - } - public String getRepresentanteLegal() { - return representanteLegal; - } - public void setRepresentanteLegal(String representanteLegal) { - this.representanteLegal = representanteLegal; - } - public String getGrado() { - return grado; - } - public void setGrado(String grado) { - this.grado = grado; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/TramiteDto.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/TramiteDto.java.svn-base deleted file mode 100644 index b7c9acd..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/dto/ws/.svn/text-base/TramiteDto.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.persistence.parmas.dto.ws; - -import java.io.Serializable; -import java.util.Date; - -/** - * Contiene datos de los tramites de una persona - * @author Manuel Cepeda - * - */ -public class TramiteDto implements Serializable{ - - private static final long serialVersionUID = 5203532003887140746L; - - private String tramite; - private Date fechaEmision; - private Date fechaExpiracion; - private String numeroDocumento; - /** - * @return the tramite - */ - public String getTramite() { - return tramite; - } - /** - * @param tramite the tramite to set - */ - public void setTramite(String tramite) { - this.tramite = tramite; - } - /** - * @return the fechaEmision - */ - public Date getFechaEmision() { - return fechaEmision; - } - /** - * @param fechaEmision the fechaEmision to set - */ - public void setFechaEmision(Date fechaEmision) { - this.fechaEmision = fechaEmision; - } - /** - * @return the fechaExpiracion - */ - public Date getFechaExpiracion() { - return fechaExpiracion; - } - /** - * @param fechaExpiracion the fechaExpiracion to set - */ - public void setFechaExpiracion(Date fechaExpiracion) { - this.fechaExpiracion = fechaExpiracion; - } - /** - * @return the numeroDocumento - */ - public String getNumeroDocumento() { - return numeroDocumento; - } - /** - * @param numeroDocumento the numeroDocumento to set - */ - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/entries deleted file mode 100644 index 0505c10..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmRespuestas.java -file - - - - -2022-07-28T03:40:28.058740Z -56daa6d24bc4a1c3dbb1fd84a615ba87 -2015-04-24T07:30:01.320551Z -4057 -dlopez - - - - - - - - - - - - - - - - - - - - - -5612 - -TarmDetallePreguntas.java -file - - - - -2022-07-28T03:40:28.058740Z -3da7fcb9ea74ab76e235d881f591692d -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5590 - -TarmEvaluacion.java -file - - - - -2022-07-28T03:40:28.059740Z -de7adf2c428173c0a5fe2c191d6f5658 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -12716 - -TarmPreguntas.java -file - - - - -2022-07-28T03:40:28.059740Z -50f3384016467512199c7e90003ba864 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7625 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmDetallePreguntas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmDetallePreguntas.java.svn-base deleted file mode 100644 index a2480a7..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmDetallePreguntas.java.svn-base +++ /dev/null @@ -1,201 +0,0 @@ -package com.fp.persistence.parmas.eval; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDETALLEPREGUNTAS*/ -@Entity(name="TarmDetallePreguntas") -@Table(name="TARMDETALLEPREGUNTAS") -public class TarmDetallePreguntas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDetallePreguntas -*/ -@Id -@Column(name="CDETALLEPREGUNTAS" ,nullable=false, updatable=false) -private String pk; -@Column(name="CEVALUACION", nullable=true) - -/** -* Referencia a la Evaluacion -*/ -private String cevaluacion; - -@Column(name="CRESPUESTACORRECTA", nullable=true) - -/** -* Referencia a la respuesta correcta de una pregunta - -*/ -private Integer crespuestacorrecta; - -@Column(name="CPREGUNTA", nullable=true) - -/** -* Referencia a la Pregunta - -*/ -private Integer cpregunta; - -@Column(name="CRESPUESTAINGRESADA", nullable=true) - -/** -* Referencia a la Respuesta Ingresada por el usuario - -*/ -private Integer crespuestaingresada; - -/**Contructor por defecto*/ -public TarmDetallePreguntas(){ -} -/**Contructor de TarmDetallePreguntas -@param pPk Clave Primaria del entity -*/ -public TarmDetallePreguntas(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDetallePreguntas -*/ -public static TarmDetallePreguntas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDetallePreguntas obj = pEntityManager.find(TarmDetallePreguntas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDetallePreguntas -@return El objeto que referencia a la Clave primaria de TarmDetallePreguntas -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDetallePreguntas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDetallePreguntas -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de cevaluacion -@return valor de cevaluacion*/ -public String getCevaluacion(){ - return cevaluacion; -} -/**Fija el valor de cevaluacion -@param pCevaluacion nuevo Valor de cevaluacion*/ -public void setCevaluacion(String pCevaluacion){ - cevaluacion=pCevaluacion; -} - -/**Obtiene el valor de crespuestacorrecta -@return valor de crespuestacorrecta*/ -public Integer getCrespuestacorrecta(){ - return crespuestacorrecta; -} -/**Fija el valor de crespuestacorrecta -@param pCrespuestacorrecta nuevo Valor de crespuestacorrecta*/ -public void setCrespuestacorrecta(Integer pCrespuestacorrecta){ - crespuestacorrecta=pCrespuestacorrecta; -} - -/**Obtiene el valor de cpregunta -@return valor de cpregunta*/ -public Integer getCpregunta(){ - return cpregunta; -} -/**Fija el valor de cpregunta -@param pCpregunta nuevo Valor de cpregunta*/ -public void setCpregunta(Integer pCpregunta){ - cpregunta=pCpregunta; -} - -/**Obtiene el valor de crespuestaingresada -@return valor de crespuestaingresada*/ -public Integer getCrespuestaingresada(){ - return crespuestaingresada; -} -/**Fija el valor de crespuestaingresada -@param pCrespuestaingresada nuevo Valor de crespuestaingresada*/ -public void setCrespuestaingresada(Integer pCrespuestaingresada){ - crespuestaingresada=pCrespuestaingresada; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDetallePreguntas))return false; - TarmDetallePreguntas that = (TarmDetallePreguntas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDetallePreguntas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDetallePreguntas -*/ -public Object createInstance(){ - TarmDetallePreguntas instance=new TarmDetallePreguntas(); - return instance; -} -/**Clona la entidad TarmDetallePreguntas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDetallePreguntas p=(TarmDetallePreguntas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmEvaluacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmEvaluacion.java.svn-base deleted file mode 100644 index e2d30bd..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmEvaluacion.java.svn-base +++ /dev/null @@ -1,514 +0,0 @@ -package com.fp.persistence.parmas.eval; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMEVALUACION*/ -@Entity(name="TarmEvaluacion") -@Table(name="TARMEVALUACION") -public class TarmEvaluacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmEvaluacion -*/ -@Id -@Column(name="CEVALUACION" ,nullable=false, updatable=false) -private String pk; -@Column(name="TIPOEVALUACION", nullable=true) - -/** -* Codigo de catalogo 01 Conocimiento Guardias, 02 Conocimiento Particulares -*/ -private String tipoevaluacion; - -@Column(name="FECHA", nullable=true) - -/** -* Fecha en la que se rindio la evaluacin -*/ -private Timestamp fecha; - -@Column(name="INTENTO", nullable=true) - -/** -* # de Intento en la evaluacin -*/ -private Long intento; - -@Column(name="CENTROMEDICO", nullable=true) - -/** -* null -*/ -private String centromedico; - -@Column(name="VIGENTE", nullable=true) - -/** -* null -*/ -private String vigente; - -@Column(name="FECHADEPOSITO", nullable=true) - -/** -* null -*/ -private Date fechadeposito; - -@Column(name="NOPAPELETA", nullable=true) - -/** -* null -*/ -private String nopapeleta; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona a ser evaluada -*/ -private Integer personcode; - -@Column(name="TIPOEVALUACIONCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de evaluacin -*/ -private String tipoevaluacioncodigo; - -@Column(name="FECHAEXPIRACION", nullable=true) - -/** -* FECHA DE EXPIRACON DE LA EVALUACION -*/ -private Date fechaexpiracion; - -@Column(name="FREGISTRO", nullable=true) - -/** -* null -*/ -private Timestamp fregistro; - -@Column(name="RESULTADOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de resultado - -*/ -private String resultadocodigo; - -@Column(name="PSICOLOGORESPONSABLE", nullable=true) - -/** -* NOMBRE DEL DOCTOR PSICOLOGO RESPONSABLE DE LA EVALUACION PSICOLOGICA -*/ -private String psicologoresponsable; - -@Column(name="OBSERVACION", nullable=true) - -/** -* OBSERVACIONES DENTRO DE LA EVALUACION PSICOLOGICA -*/ -private String observacion; - -@Column(name="FECHAPREOX", nullable=true) - -/** -* Fecha en la cual puede volver a rendir la evalaucion -*/ -private Date fechapreox; - -@Column(name="INFORMEXPATH", nullable=true) - -/** -* PATH DONDE SE ALMACENA LA INFORMACION DE LA EVALUACION PSICOLOGICA -*/ -private String informexpath; - -@Column(name="RESULTADO", nullable=true) - -/** -* Codigo de catalogo 01 Aprobado, 02 Reprobado -*/ -private String resultado; - -@Column(name="CENTROMEDICOCODE", nullable=true) - -/** -* null -*/ -private String centromedicocode; - -@Column(name="EMPRESAPERSONCODE", nullable=true) - -/** -* null -*/ -private Integer empresapersoncode; - -@Column(name="TIPDOCPSICOLOGO", nullable=true) - -/** -* null -*/ -private String tipdocpsicologo; - -@Column(name="TIPDOCCODEPSICOLOGO", nullable=true) - -/** -* null -*/ -private String tipdoccodepsicologo; - -@Column(name="NUMDOCPSICOLOGO", nullable=true) - -/** -* null -*/ -private String numdocpsicologo; - -/**Contructor por defecto*/ -public TarmEvaluacion(){ -} -/**Contructor de TarmEvaluacion -@param pPk Clave Primaria del entity -*/ -public TarmEvaluacion(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmEvaluacion -*/ -public static TarmEvaluacion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmEvaluacion obj = pEntityManager.find(TarmEvaluacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmEvaluacion -@return El objeto que referencia a la Clave primaria de TarmEvaluacion -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmEvaluacion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmEvaluacion -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de tipoevaluacion -@return valor de tipoevaluacion*/ -public String getTipoevaluacion(){ - return tipoevaluacion; -} -/**Fija el valor de tipoevaluacion -@param pTipoevaluacion nuevo Valor de tipoevaluacion*/ -public void setTipoevaluacion(String pTipoevaluacion){ - tipoevaluacion=pTipoevaluacion; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de intento -@return valor de intento*/ -public Long getIntento(){ - return intento; -} -/**Fija el valor de intento -@param pIntento nuevo Valor de intento*/ -public void setIntento(Long pIntento){ - intento=pIntento; -} - -/**Obtiene el valor de centromedico -@return valor de centromedico*/ -public String getCentromedico(){ - return centromedico; -} -/**Fija el valor de centromedico -@param pCentromedico nuevo Valor de centromedico*/ -public void setCentromedico(String pCentromedico){ - centromedico=pCentromedico; -} - -/**Obtiene el valor de vigente -@return valor de vigente*/ -public String getVigente(){ - return vigente; -} -/**Fija el valor de vigente -@param pVigente nuevo Valor de vigente*/ -public void setVigente(String pVigente){ - vigente=pVigente; -} - -/**Obtiene el valor de fechadeposito -@return valor de fechadeposito*/ -public Date getFechadeposito(){ - return fechadeposito; -} -/**Fija el valor de fechadeposito -@param pFechadeposito nuevo Valor de fechadeposito*/ -public void setFechadeposito(Date pFechadeposito){ - fechadeposito=pFechadeposito; -} - -/**Obtiene el valor de nopapeleta -@return valor de nopapeleta*/ -public String getNopapeleta(){ - return nopapeleta; -} -/**Fija el valor de nopapeleta -@param pNopapeleta nuevo Valor de nopapeleta*/ -public void setNopapeleta(String pNopapeleta){ - nopapeleta=pNopapeleta; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de tipoevaluacioncodigo -@return valor de tipoevaluacioncodigo*/ -public String getTipoevaluacioncodigo(){ - return tipoevaluacioncodigo; -} -/**Fija el valor de tipoevaluacioncodigo -@param pTipoevaluacioncodigo nuevo Valor de tipoevaluacioncodigo*/ -public void setTipoevaluacioncodigo(String pTipoevaluacioncodigo){ - tipoevaluacioncodigo=pTipoevaluacioncodigo; -} - -/**Obtiene el valor de fechaexpiracion -@return valor de fechaexpiracion*/ -public Date getFechaexpiracion(){ - return fechaexpiracion; -} -/**Fija el valor de fechaexpiracion -@param pFechaexpiracion nuevo Valor de fechaexpiracion*/ -public void setFechaexpiracion(Date pFechaexpiracion){ - fechaexpiracion=pFechaexpiracion; -} - -/**Obtiene el valor de fregistro -@return valor de fregistro*/ -public Timestamp getFregistro(){ - return fregistro; -} -/**Fija el valor de fregistro -@param pFregistro nuevo Valor de fregistro*/ -public void setFregistro(Timestamp pFregistro){ - fregistro=pFregistro; -} - -/**Obtiene el valor de resultadocodigo -@return valor de resultadocodigo*/ -public String getResultadocodigo(){ - return resultadocodigo; -} -/**Fija el valor de resultadocodigo -@param pResultadocodigo nuevo Valor de resultadocodigo*/ -public void setResultadocodigo(String pResultadocodigo){ - resultadocodigo=pResultadocodigo; -} - -/**Obtiene el valor de psicologoresponsable -@return valor de psicologoresponsable*/ -public String getPsicologoresponsable(){ - return psicologoresponsable; -} -/**Fija el valor de psicologoresponsable -@param pPsicologoresponsable nuevo Valor de psicologoresponsable*/ -public void setPsicologoresponsable(String pPsicologoresponsable){ - psicologoresponsable=pPsicologoresponsable; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de fechapreox -@return valor de fechapreox*/ -public Date getFechapreox(){ - return fechapreox; -} -/**Fija el valor de fechapreox -@param pFechapreox nuevo Valor de fechapreox*/ -public void setFechapreox(Date pFechapreox){ - fechapreox=pFechapreox; -} - -/**Obtiene el valor de informexpath -@return valor de informexpath*/ -public String getInformexpath(){ - return informexpath; -} -/**Fija el valor de informexpath -@param pInformexpath nuevo Valor de informexpath*/ -public void setInformexpath(String pInformexpath){ - informexpath=pInformexpath; -} - -/**Obtiene el valor de resultado -@return valor de resultado*/ -public String getResultado(){ - return resultado; -} -/**Fija el valor de resultado -@param pResultado nuevo Valor de resultado*/ -public void setResultado(String pResultado){ - resultado=pResultado; -} - -/**Obtiene el valor de centromedicocode -@return valor de centromedicocode*/ -public String getCentromedicocode(){ - return centromedicocode; -} -/**Fija el valor de centromedicocode -@param pCentromedicocode nuevo Valor de centromedicocode*/ -public void setCentromedicocode(String pCentromedicocode){ - centromedicocode=pCentromedicocode; -} - -/**Obtiene el valor de empresapersoncode -@return valor de empresapersoncode*/ -public Integer getEmpresapersoncode(){ - return empresapersoncode; -} -/**Fija el valor de empresapersoncode -@param pEmpresapersoncode nuevo Valor de empresapersoncode*/ -public void setEmpresapersoncode(Integer pEmpresapersoncode){ - empresapersoncode=pEmpresapersoncode; -} - -public String getTipdocpsicologo() { - return tipdocpsicologo; -} -public void setTipdocpsicologo(String tipdocpsicologo) { - this.tipdocpsicologo = tipdocpsicologo; -} -public String getTipdoccodepsicologo() { - return tipdoccodepsicologo; -} -public void setTipdoccodepsicologo(String tipdoccodepsicologo) { - this.tipdoccodepsicologo = tipdoccodepsicologo; -} -public String getNumdocpsicologo() { - return numdocpsicologo; -} -public void setNumdocpsicologo(String numdocpsicologo) { - this.numdocpsicologo = numdocpsicologo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmEvaluacion))return false; - TarmEvaluacion that = (TarmEvaluacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmEvaluacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmEvaluacion -*/ -public Object createInstance(){ - TarmEvaluacion instance=new TarmEvaluacion(); - return instance; -} -/**Clona la entidad TarmEvaluacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmEvaluacion p=(TarmEvaluacion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmPreguntas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmPreguntas.java.svn-base deleted file mode 100644 index db6bcd6..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmPreguntas.java.svn-base +++ /dev/null @@ -1,281 +0,0 @@ -package com.fp.persistence.parmas.eval; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMPREGUNTAS*/ -@Entity(name="TarmPreguntas") -@Table(name="TARMPREGUNTAS") -public class TarmPreguntas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmPreguntas -*/ -@Id -@Column(name="CPREGUNTA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMPREGUNTAS"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Number"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "8")}) - @GeneratedValue(generator = "seq_id") -private Integer pk; -@Column(name="TIPOEVALUACION", nullable=true) - -/** -* null -*/ -private String tipoevaluacion; - -@Column(name="TIPOEVALUACIONCODIGO", nullable=true) - -/** -* null -*/ -private String tipoevaluacioncodigo; - -@Column(name="TIPOPERSONA", nullable=true) - -/** -* null -*/ -private String tipopersona; - -@Column(name="TIPOPERSONACODIGO", nullable=true) - -/** -* null -*/ -private String tipopersonacodigo; - -@Column(name="DESCRIPCION", nullable=true) - -/** -* null -*/ -private String descripcion; - -@Column(name="NUMEROPREGUNTA", nullable=true) - -/** -* null -*/ -private Integer numeropregunta; - -@Column(name="ESTADOPREGUNTA", nullable=true) - -/** -* null -*/ -private String estadopregunta; - -@Column(name="ESTADOPREGUNTACODIGO", nullable=true) - -/** -* null -*/ -private String estadopreguntacodigo; - - -/**Contructor por defecto*/ -public TarmPreguntas(){ -} -/**Contructor de TarmPreguntas -@param pPk Clave Primaria del entity -*/ -public TarmPreguntas(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmPreguntas -*/ -public static TarmPreguntas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmPreguntas obj = pEntityManager.find(TarmPreguntas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmPreguntas -@return El objeto que referencia a la Clave primaria de TarmPreguntas -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmPreguntas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmPreguntas -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de tipoevaluacion -@return valor de tipoevaluacion*/ -public String getTipoevaluacion(){ - return tipoevaluacion; -} -/**Fija el valor de tipoevaluacion -@param pTipoevaluacion nuevo Valor de tipoevaluacion*/ -public void setTipoevaluacion(String pTipoevaluacion){ - tipoevaluacion=pTipoevaluacion; -} - -/**Obtiene el valor de tipoevaluacioncodigo -@return valor de tipoevaluacioncodigo*/ -public String getTipoevaluacioncodigo(){ - return tipoevaluacioncodigo; -} -/**Fija el valor de tipoevaluacioncodigo -@param pTipoevaluacioncodigo nuevo Valor de tipoevaluacioncodigo*/ -public void setTipoevaluacioncodigo(String pTipoevaluacioncodigo){ - tipoevaluacioncodigo=pTipoevaluacioncodigo; -} - -/**Obtiene el valor de tipopersona -@return valor de tipopersona*/ -public String getTipopersona(){ - return tipopersona; -} -/**Fija el valor de tipopersona -@param pTipopersona nuevo Valor de tipopersona*/ -public void setTipopersona(String pTipopersona){ - tipopersona=pTipopersona; -} - -/**Obtiene el valor de tipopersonacodigo -@return valor de tipopersonacodigo*/ -public String getTipopersonacodigo(){ - return tipopersonacodigo; -} -/**Fija el valor de tipopersonacodigo -@param pTipopersonacodigo nuevo Valor de tipopersonacodigo*/ -public void setTipopersonacodigo(String pTipopersonacodigo){ - tipopersonacodigo=pTipopersonacodigo; -} - -/**Obtiene el valor de descripcion -@return valor de descripcion*/ -public String getDescripcion(){ - return descripcion; -} -/**Fija el valor de descripcion -@param pDescripcion nuevo Valor de descripcion*/ -public void setDescripcion(String pDescripcion){ - descripcion=pDescripcion; -} - -/**Obtiene el valor de numeropregunta -@return valor de numeropregunta*/ -public Integer getNumeropregunta(){ - return numeropregunta; -} -/**Fija el valor de numeropregunta -@param pNumeropregunta nuevo Valor de numeropregunta*/ -public void setNumeropregunta(Integer pNumeropregunta){ - numeropregunta=pNumeropregunta; -} - -/**Obtiene el valor de estadopregunta -@return valor de estadopregunta*/ -public String getEstadopregunta() { - return estadopregunta; -} -/**Fija el valor de estadopregunta -@param pDescripcion nuevo Valor de estadopregunta*/ -public void setEstadopregunta(String estadopregunta) { - this.estadopregunta = estadopregunta; -} - -/**Obtiene el valor de estadopreguntacodigo -@return valor de estadopreguntacodigo*/ -public String getEstadopreguntacodigo() { - return estadopreguntacodigo; -} -/**Fija el valor de estadopreguntacodigo -@param pDescripcion nuevo Valor de estadopreguntacodigo*/ -public void setEstadopreguntacodigo(String estadopreguntacodigo) { - this.estadopreguntacodigo = estadopreguntacodigo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmPreguntas))return false; - TarmPreguntas that = (TarmPreguntas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmPreguntas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmPreguntas -*/ -public Object createInstance(){ - TarmPreguntas instance=new TarmPreguntas(); - return instance; -} -/**Clona la entidad TarmPreguntas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmPreguntas p=(TarmPreguntas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmRespuestas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmRespuestas.java.svn-base deleted file mode 100644 index f665c28..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/eval/.svn/text-base/TarmRespuestas.java.svn-base +++ /dev/null @@ -1,209 +0,0 @@ -package com.fp.persistence.parmas.eval; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMRESPUESTAS*/ -@Entity(name="TarmRespuestas") -@Table(name="TARMRESPUESTAS") -public class TarmRespuestas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmRespuestas -*/ -@Id -@Column(name="CRESPUESTA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMRESPUESTAS"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Number"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "8")}) - @GeneratedValue(generator = "seq_id") -private Integer pk; -@Column(name="CPREGUNTA", nullable=true) - -/** -* null -*/ -private Integer cpregunta; - -@Column(name="DESCRIPCION", nullable=true) - -/** -* null -*/ -private String descripcion; - -@Column(name="ESCORRECTA", nullable=true) - -/** -* null -*/ -private String escorrecta; - -@Column(name="ISACTIVE", nullable=true) - -/** -* null -*/ -private String isactive; - -/**Contructor por defecto*/ -public TarmRespuestas(){ -} -/**Contructor de TarmRespuestas -@param pPk Clave Primaria del entity -*/ -public TarmRespuestas(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmRespuestas -*/ -public static TarmRespuestas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmRespuestas obj = pEntityManager.find(TarmRespuestas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmRespuestas -@return El objeto que referencia a la Clave primaria de TarmRespuestas -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmRespuestas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmRespuestas -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de cpregunta -@return valor de cpregunta*/ -public Integer getCpregunta(){ - return cpregunta; -} -/**Fija el valor de cpregunta -@param pCpregunta nuevo Valor de cpregunta*/ -public void setCpregunta(Integer pCpregunta){ - cpregunta=pCpregunta; -} - -/**Obtiene el valor de descripcion -@return valor de descripcion*/ -public String getDescripcion(){ - return descripcion; -} -/**Fija el valor de descripcion -@param pDescripcion nuevo Valor de descripcion*/ -public void setDescripcion(String pDescripcion){ - descripcion=pDescripcion; -} - -/**Obtiene el valor de escorrecta -@return valor de escorrecta*/ -public String getEscorrecta(){ - return escorrecta; -} -/**Fija el valor de escorrecta -@param pEscorrecta nuevo Valor de escorrecta*/ -public void setEscorrecta(String pEscorrecta){ - escorrecta=pEscorrecta; -} - -/**Obtiene el valor de escorrecta -@return valor de escorrecta*/ -public String getIsactive() { - return isactive; -} - -/**Fija el valor de escorrecta -@param pEscorrecta nuevo Valor de escorrecta*/ -public void setIsactive(String pIsactive) { - this.isactive = pIsactive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmRespuestas))return false; - TarmRespuestas that = (TarmRespuestas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmRespuestas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmRespuestas -*/ -public Object createInstance(){ - TarmRespuestas instance=new TarmRespuestas(); - return instance; -} -/**Clona la entidad TarmRespuestas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmRespuestas p=(TarmRespuestas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/entries deleted file mode 100644 index ec8ca1a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/entries +++ /dev/null @@ -1,436 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmTotalPersona.java -file - - - - -2022-07-28T03:40:28.258740Z -7c658b8d2be73e58a13751024fd869c7 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -13779 - -TarmCarga.java -file - - - - -2022-07-28T03:40:28.258740Z -2135567cd0e189ce08d133cb52ac37fa -2015-12-29T13:58:56.911893Z -4357 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8133 - -TarmCashManagementHistory.java -file - - - - -2022-07-28T03:40:28.259740Z -bf6b7296eb5b9627130d09b5ce4b85d4 -2015-10-19T06:35:28.927984Z -4298 -fpazmino - - - - - - - - - - - - - - - - - - - - - -6065 - -TarmInventarioSubidoPorPersona.java -file - - - - -2022-07-28T03:40:28.259740Z -1474f467924bbe694de0e892e68e0879 -2015-09-21T11:32:33.372883Z -4284 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4556 - -TarmSolicitudImportacionKey.java -file - - - - -2022-07-28T03:40:28.260740Z -f973267c51e8b3fecefdaca9b380837f -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3733 - -TarmDetalleImportacion.java -file - - - - -2022-07-28T03:40:28.260740Z -a18876b27d5c9223c4c1e16d7906b61f -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -5344 - -TarmRegistroArmas.java -file - - - - -2022-07-28T03:40:28.260740Z -3c8a3a3d8d234f0462623ec130ac41e8 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9054 - -TarmSolicitudImportacion.java -file - - - - -2022-07-28T03:40:28.261740Z -1b56123d609cadf3517a08e66066deac -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -6295 - -TarmVentaArmaTem.java -file - - - - -2022-07-28T03:40:28.261740Z -03232a1e3d09a9388af105bdc46ae6c5 -2021-05-14T20:49:02.138208Z -4637 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6371 - -TarmInventarioSubidoPorPersonaKey.java -file - - - - -2022-07-28T03:40:28.262740Z -c40294a65b4b17d783143a2ff97239e4 -2015-09-21T11:32:33.372883Z -4284 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3427 - -TarmCargaDetalle.java -file - - - - -2022-07-28T03:40:28.262740Z -16fc734c68dd21a1da913809ae27e3e5 -2015-12-29T13:58:56.911893Z -4357 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4349 - -TarmMovimientoArmas.java -file - - - - -2022-07-28T03:40:28.262740Z -41bd0119cc2658cf5ae27528b9bdfb14 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -8257 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmDetalleImportacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmDetalleImportacion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmDetalleImportacion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacionKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacionKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/prop-base/TarmSolicitudImportacionKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCarga.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCarga.java.svn-base deleted file mode 100644 index 69e366e..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCarga.java.svn-base +++ /dev/null @@ -1,329 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCARGA*/ -@Entity(name="TarmCarga") -@Table(name="TARMCARGA") -public class TarmCarga extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCarga -*/ -@Id -@Column(name="CCARGA" ,nullable=false, updatable=false) -private String pk; -@Column(name="PROVINCECODE", nullable=true) - -/** -* null -*/ -private String provincecode; - -@Column(name="CITYCODE", nullable=true) - -/** -* null -*/ -private String citycode; - -@Column(name="AUCP", nullable=true) - -/** -* NUMERO DE SOLICITUD DE IMPORTACION VUE -*/ -private String aucp; - -@Column(name="CANTONCODE", nullable=true) - -/** -* null -*/ -private String cantoncode; - -@Column(name="PERSONCODE", nullable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="ESDESADUANIZADO", nullable=false) - -/** -* CAMPO PARA INDICAR SI UNA IMPORTACION FUE DESADUANIDA -*/ -private String esdesaduanizado; - -@Column(name="TIPOCARGA", nullable=false) - -/** -* INDICA SI LA CARGA ES UNA IMPORTACION, PRODUCCION O INVENTARIO -*/ -private String tipocarga; - -@Column(name="CREGISTRO", nullable=false) - -/** -* null -*/ -private Long cregistro; - -@Column(name="FECHA", nullable=false) - -/** -* FECHA DE LA CARGA -*/ -private Timestamp fecha; - -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud previa importacion a la que esta atada la carga -*/ -private String csolicitud; - -@Column(name="CATEGORIA", nullable=true) - -/** -* null -*/ -private String categoria; - -/**Contructor por defecto*/ -public TarmCarga(){ -} -/**Contructor de TarmCarga -@param pPk Clave Primaria del entity -@param pPersoncode Codigo de persona -@param pEsdesaduanizado CAMPO PARA INDICAR SI UNA IMPORTACION FUE DESADUANIDA -@param pTipocarga INDICA SI LA CARGA ES UNA IMPORTACION, PRODUCCION O INVENTARIO -@param pCregistro null -@param pFecha FECHA DE LA CARGA -*/ -public TarmCarga(String pPk,Integer pPersoncode,String pEsdesaduanizado,String pTipocarga,Long pCregistro,Timestamp pFecha){ - this(); - pk=pPk; - personcode=pPersoncode; - esdesaduanizado=pEsdesaduanizado; - tipocarga=pTipocarga; - cregistro=pCregistro; - fecha=pFecha; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCarga -*/ -public static TarmCarga find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCarga obj = pEntityManager.find(TarmCarga.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCarga -@return El objeto que referencia a la Clave primaria de TarmCarga -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCarga -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCarga -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de aucp -@return valor de aucp*/ -public String getAucp(){ - return aucp; -} -/**Fija el valor de aucp -@param pAucp nuevo Valor de aucp*/ -public void setAucp(String pAucp){ - aucp=pAucp; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de esdesaduanizado -@return valor de esdesaduanizado*/ -public String getEsdesaduanizado(){ - return esdesaduanizado; -} -/**Fija el valor de esdesaduanizado -@param pEsdesaduanizado nuevo Valor de esdesaduanizado*/ -public void setEsdesaduanizado(String pEsdesaduanizado){ - esdesaduanizado=pEsdesaduanizado; -} - -/**Obtiene el valor de tipocarga -@return valor de tipocarga*/ -public String getTipocarga(){ - return tipocarga; -} -/**Fija el valor de tipocarga -@param pTipocarga nuevo Valor de tipocarga*/ -public void setTipocarga(String pTipocarga){ - tipocarga=pTipocarga; -} - -/**Obtiene el valor de cregistro -@return valor de cregistro*/ -public Long getCregistro(){ - return cregistro; -} -/**Fija el valor de cregistro -@param pCregistro nuevo Valor de cregistro*/ -public void setCregistro(Long pCregistro){ - cregistro=pCregistro; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de categoria -@return valor de categoria*/ -public String getCategoria(){ - return categoria; -} -/**Fija el valor de categoria -@param pCategoria nuevo Valor de categoria*/ -public void setCategoria(String pCategoria){ - categoria=pCategoria; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCarga))return false; - TarmCarga that = (TarmCarga) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCarga -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCarga -*/ -public Object createInstance(){ - TarmCarga instance=new TarmCarga(); - return instance; -} -/**Clona la entidad TarmCarga -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCarga p=(TarmCarga)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCargaDetalle.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCargaDetalle.java.svn-base deleted file mode 100644 index 6a38c9f..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCargaDetalle.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCARGADETALLE*/ -@Entity(name="TarmCargaDetalle") -@Table(name="TARMCARGADETALLE") -public class TarmCargaDetalle extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCargaDetalle -*/ -@Id -@Column(name="CCARGADETALLE" ,nullable=false, updatable=false) -private String pk; -@Column(name="CCARGA", nullable=false) - -/** -* CODIGO DE CARGA -*/ -private String ccarga; - -@Column(name="CARMA", nullable=false) - -/** -* CODIGO DE ARMA -*/ -private String carma; - -/**Contructor por defecto*/ -public TarmCargaDetalle(){ -} -/**Contructor de TarmCargaDetalle -@param pPk Clave Primaria del entity -@param pCcarga CODIGO DE CARGA -@param pCarma CODIGO DE ARMA -*/ -public TarmCargaDetalle(String pPk,String pCcarga,String pCarma){ - this(); - pk=pPk; - ccarga=pCcarga; - carma=pCarma; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCargaDetalle -*/ -public static TarmCargaDetalle find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCargaDetalle obj = pEntityManager.find(TarmCargaDetalle.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCargaDetalle -@return El objeto que referencia a la Clave primaria de TarmCargaDetalle -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCargaDetalle -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCargaDetalle -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de ccarga -@return valor de ccarga*/ -public String getCcarga(){ - return ccarga; -} -/**Fija el valor de ccarga -@param pCcarga nuevo Valor de ccarga*/ -public void setCcarga(String pCcarga){ - ccarga=pCcarga; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCargaDetalle))return false; - TarmCargaDetalle that = (TarmCargaDetalle) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCargaDetalle -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCargaDetalle -*/ -public Object createInstance(){ - TarmCargaDetalle instance=new TarmCargaDetalle(); - return instance; -} -/**Clona la entidad TarmCargaDetalle -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCargaDetalle p=(TarmCargaDetalle)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCashManagementHistory.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCashManagementHistory.java.svn-base deleted file mode 100644 index bc465d2..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmCashManagementHistory.java.svn-base +++ /dev/null @@ -1,224 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCASHMANAGEMENTHISTORY*/ -@Entity(name="TarmCashManagementHistory") -@Table(name="TARMCASHMANAGEMENTHISTORY") -public class TarmCashManagementHistory extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCashManagementHistory -*/ -@Id -@Column(name="CCASHMANAGEMENT" ,nullable=false, updatable=false) -private String pk; -@Column(name="PATHREPORTE", nullable=false) - -/** -* null -*/ -private String pathreporte; - -@Column(name="USERCODE", nullable=false) - -/** -* null -*/ -private String usercode; - -@Column(name="DATEFROM", nullable=false) - -/** -* null -*/ -private Timestamp datefrom; - -@Column(name="DATETO", nullable=false) - -/** -* null -*/ -private Timestamp dateto; - -@Column(name="NOMBREARCHIVO", nullable=false) - -/** -* null -*/ -private String nombrearchivo; - -/**Contructor por defecto*/ -public TarmCashManagementHistory(){ -} -/**Contructor de TarmCashManagementHistory -@param pPk Clave Primaria del entity -@param pPathreporte null -@param pUsercode null -@param pDatefrom null -@param pDateto null -@param pNombrearchivo null -*/ -public TarmCashManagementHistory(String pPk,String pPathreporte,String pUsercode,Timestamp pDatefrom,Timestamp pDateto,String pNombrearchivo){ - this(); - pk=pPk; - pathreporte=pPathreporte; - usercode=pUsercode; - datefrom=pDatefrom; - dateto=pDateto; - nombrearchivo=pNombrearchivo; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCashManagementHistory -*/ -public static TarmCashManagementHistory find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCashManagementHistory obj = pEntityManager.find(TarmCashManagementHistory.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCashManagementHistory -@return El objeto que referencia a la Clave primaria de TarmCashManagementHistory -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCashManagementHistory -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCashManagementHistory -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de pathreporte -@return valor de pathreporte*/ -public String getPathreporte(){ - return pathreporte; -} -/**Fija el valor de pathreporte -@param pPathreporte nuevo Valor de pathreporte*/ -public void setPathreporte(String pPathreporte){ - pathreporte=pPathreporte; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de nombrearchivo -@return valor de nombrearchivo*/ -public String getNombrearchivo(){ - return nombrearchivo; -} -/**Fija el valor de nombrearchivo -@param pNombrearchivo nuevo Valor de nombrearchivo*/ -public void setNombrearchivo(String pNombrearchivo){ - nombrearchivo=pNombrearchivo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCashManagementHistory))return false; - TarmCashManagementHistory that = (TarmCashManagementHistory) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCashManagementHistory -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCashManagementHistory -*/ -public Object createInstance(){ - TarmCashManagementHistory instance=new TarmCashManagementHistory(); - return instance; -} -/**Clona la entidad TarmCashManagementHistory -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCashManagementHistory p=(TarmCashManagementHistory)this.clone(); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmDetalleImportacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmDetalleImportacion.java.svn-base deleted file mode 100644 index bc3f26f..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmDetalleImportacion.java.svn-base +++ /dev/null @@ -1,201 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDETALLEIMPORTACION*/ -@Entity(name="TarmDetalleImportacion") -@Table(name="TARMDETALLEIMPORTACION") -public class TarmDetalleImportacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDetalleImportacion -*/ -@Id -@Column(name="CDETALLEIMPORTACION" ,nullable=false, updatable=false) -private Long pk; -@Column(name="CIMPORTACION", nullable=true) - -/** -* null -*/ -private Long cimportacion; - -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TarmDetalleImportacion(){ -} -/**Contructor de TarmDetalleImportacion -@param pPk Clave Primaria del entity -*/ -public TarmDetalleImportacion(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDetalleImportacion -*/ -public static TarmDetalleImportacion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDetalleImportacion obj = pEntityManager.find(TarmDetalleImportacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDetalleImportacion -@return El objeto que referencia a la Clave primaria de TarmDetalleImportacion -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDetalleImportacion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDetalleImportacion -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de cimportacion -@return valor de cimportacion*/ -public Long getCimportacion(){ - return cimportacion; -} -/**Fija el valor de cimportacion -@param pCimportacion nuevo Valor de cimportacion*/ -public void setCimportacion(Long pCimportacion){ - cimportacion=pCimportacion; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDetalleImportacion))return false; - TarmDetalleImportacion that = (TarmDetalleImportacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDetalleImportacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDetalleImportacion -*/ -public Object createInstance(){ - TarmDetalleImportacion instance=new TarmDetalleImportacion(); - return instance; -} -/**Clona la entidad TarmDetalleImportacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDetalleImportacion p=(TarmDetalleImportacion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersona.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersona.java.svn-base deleted file mode 100644 index f924ada..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersona.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMINVENTARIOSUBIDOPORPERSONA*/ -@Entity(name="TarmInventarioSubidoPorPersona") -@Table(name="TARMINVENTARIOSUBIDOPORPERSONA") -public class TarmInventarioSubidoPorPersona extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmInventarioSubidoPorPersona -*/ -@EmbeddedId -private TarmInventarioSubidoPorPersonaKey pk; -@Column(name="FECHACARGA", nullable=true) - -/** -* null -*/ -private Timestamp fechacarga; - -/**Contructor por defecto*/ -public TarmInventarioSubidoPorPersona(){ -} -/**Contructor de TarmInventarioSubidoPorPersona -@param pPk Clave Primaria del entity -*/ -public TarmInventarioSubidoPorPersona(TarmInventarioSubidoPorPersonaKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmInventarioSubidoPorPersona -*/ -public static TarmInventarioSubidoPorPersona find(EntityManager pEntityManager,TarmInventarioSubidoPorPersonaKey pKey) throws Exception{ - TarmInventarioSubidoPorPersona obj = pEntityManager.find(TarmInventarioSubidoPorPersona.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmInventarioSubidoPorPersona -@return El objeto que referencia a la Clave primaria de TarmInventarioSubidoPorPersona -*/ -public TarmInventarioSubidoPorPersonaKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmInventarioSubidoPorPersona -@param pPk El objeto que referencia a la nueva Clave primaria de TarmInventarioSubidoPorPersona -*/ -public void setPk(TarmInventarioSubidoPorPersonaKey pPk){ - pk=pPk; -} -/**Obtiene el valor de fechacarga -@return valor de fechacarga*/ -public Timestamp getFechacarga(){ - return fechacarga; -} -/**Fija el valor de fechacarga -@param pFechacarga nuevo Valor de fechacarga*/ -public void setFechacarga(Timestamp pFechacarga){ - fechacarga=pFechacarga; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmInventarioSubidoPorPersona))return false; - TarmInventarioSubidoPorPersona that = (TarmInventarioSubidoPorPersona) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmInventarioSubidoPorPersona -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmInventarioSubidoPorPersona -*/ -public Object createInstance(){ - TarmInventarioSubidoPorPersona instance=new TarmInventarioSubidoPorPersona(); - instance.setPk(new TarmInventarioSubidoPorPersonaKey()); - return instance; -} -/**Clona la entidad TarmInventarioSubidoPorPersona -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmInventarioSubidoPorPersona p=(TarmInventarioSubidoPorPersona)this.clone(); - p.setPk((TarmInventarioSubidoPorPersonaKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersonaKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersonaKey.java.svn-base deleted file mode 100644 index 1a46332..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmInventarioSubidoPorPersonaKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMINVENTARIOSUBIDOPORPERSONA*/ -@Embeddable -public class TarmInventarioSubidoPorPersonaKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CLASE", nullable=false,updatable=false) - -/** -* null -*/ -private String clase; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* null -*/ -private Integer personcode; - -/**Contructor por defecto*/ -public TarmInventarioSubidoPorPersonaKey(){} -/**Contructor de TarmInventarioSubidoPorPersonaKey -@param pClase null -@param pPersoncode null -*/ -public TarmInventarioSubidoPorPersonaKey(String pClase,Integer pPersoncode){ - clase=pClase; - personcode=pPersoncode; -} -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Implementacion de la comparacion de TarmInventarioSubidoPorPersonaKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmInventarioSubidoPorPersonaKey))return false; - TarmInventarioSubidoPorPersonaKey that = (TarmInventarioSubidoPorPersonaKey) o; - if (this.getClase() == null || that.getClase() == null){ - return false; - } - if (! this.getClase().equals(that.getClase())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmInventarioSubidoPorPersonaKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getClase() == null ? 0 : this.getClase().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmMovimientoArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmMovimientoArmas.java.svn-base deleted file mode 100644 index e0124db..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmMovimientoArmas.java.svn-base +++ /dev/null @@ -1,322 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMMOVIMIENTOARMAS*/ -@Entity(name="TarmMovimientoArmas") -@Table(name="TARMMOVIMIENTOARMAS") -public class TarmMovimientoArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmMovimientoArmas -*/ -@Id -@Column(name="CMOVIMIENTO" ,nullable=false, updatable=false) -private String pk; -@Column(name="FACTURA", nullable=true) - -/** -* Nmero de Factura -*/ -private String factura; - -@Column(name="FECHA", nullable=true) - -/** -* Fecha de registro -*/ -private Timestamp fecha; - -@Column(name="JUSTIFICACION", nullable=true) - -/** -* Comentario en el cual se justifica el movimiento del material -*/ -private String justificacion; - -@Column(name="NOREGISTRO", nullable=true) - -/** -* Nmero de Registro -*/ -private String noregistro; - - - -@Column(name="TIPOMOVIMIENTOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de movimiento -*/ -private String tipomovimientocodigo; - -@Column(name="CARMA", nullable=true) - -/** -* Codigo del arma la cual se vende, transpasa, entre otros. -*/ -private String carma; - -@Column(name="PERSONCODEVENDEDOR", nullable=true) - -/** -* Codigo de persona vendedora -*/ -private Integer personcodevendedor; - -@Column(name="TIPOMOVIMIENTO", nullable=true) - -/** -* Codigo de catalogo 01 Venta, 02 Produccion -*/ -private String tipomovimiento; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Versin del Registro -*/ -private Integer recordversion; - -@Column(name="PERSONCODECOMPRADOR", nullable=true) - -/** -* Codigo de persona compradora - -*/ -private Integer personcodecomprador; - -/**Contructor por defecto*/ -public TarmMovimientoArmas(){ -} -/**Contructor de TarmMovimientoArmas -@param pPk Clave Primaria del entity -*/ -public TarmMovimientoArmas(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmMovimientoArmas -*/ -public static TarmMovimientoArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmMovimientoArmas obj = pEntityManager.find(TarmMovimientoArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmMovimientoArmas -@return El objeto que referencia a la Clave primaria de TarmMovimientoArmas -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmMovimientoArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmMovimientoArmas -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de factura -@return valor de factura*/ -public String getFactura(){ - return factura; -} -/**Fija el valor de factura -@param pFactura nuevo Valor de factura*/ -public void setFactura(String pFactura){ - factura=pFactura; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de justificacion -@return valor de justificacion*/ -public String getJustificacion(){ - return justificacion; -} -/**Fija el valor de justificacion -@param pJustificacion nuevo Valor de justificacion*/ -public void setJustificacion(String pJustificacion){ - justificacion=pJustificacion; -} - -/**Obtiene el valor de noregistro -@return valor de noregistro*/ -public String getNoregistro(){ - return noregistro; -} -/**Fija el valor de noregistro -@param pNoregistro nuevo Valor de noregistro*/ -public void setNoregistro(String pNoregistro){ - noregistro=pNoregistro; -} - -/**Obtiene el valor de fecha - -/**Fija el valor de fecha - - -/**Obtiene el valor de tipomovimientocodigo -@return valor de tipomovimientocodigo*/ -public String getTipomovimientocodigo(){ - return tipomovimientocodigo; -} -/**Fija el valor de tipomovimientocodigo -@param pTipomovimientocodigo nuevo Valor de tipomovimientocodigo*/ -public void setTipomovimientocodigo(String pTipomovimientocodigo){ - tipomovimientocodigo=pTipomovimientocodigo; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de personcodevendedor -@return valor de personcodevendedor*/ -public Integer getPersoncodevendedor(){ - return personcodevendedor; -} -/**Fija el valor de personcodevendedor -@param pPersoncodevendedor nuevo Valor de personcodevendedor*/ -public void setPersoncodevendedor(Integer pPersoncodevendedor){ - personcodevendedor=pPersoncodevendedor; -} - -/**Obtiene el valor de tipomovimiento -@return valor de tipomovimiento*/ -public String getTipomovimiento(){ - return tipomovimiento; -} -/**Fija el valor de tipomovimiento -@param pTipomovimiento nuevo Valor de tipomovimiento*/ -public void setTipomovimiento(String pTipomovimiento){ - tipomovimiento=pTipomovimiento; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de personcodecomprador -@return valor de personcodecomprador*/ -public Integer getPersoncodecomprador(){ - return personcodecomprador; -} -/**Fija el valor de personcodecomprador -@param pPersoncodecomprador nuevo Valor de personcodecomprador*/ -public void setPersoncodecomprador(Integer pPersoncodecomprador){ - personcodecomprador=pPersoncodecomprador; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmMovimientoArmas))return false; - TarmMovimientoArmas that = (TarmMovimientoArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmMovimientoArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmMovimientoArmas -*/ -public Object createInstance(){ - TarmMovimientoArmas instance=new TarmMovimientoArmas(); - return instance; -} -/**Clona la entidad TarmMovimientoArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmMovimientoArmas p=(TarmMovimientoArmas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmRegistroArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmRegistroArmas.java.svn-base deleted file mode 100644 index 5afcdc1..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmRegistroArmas.java.svn-base +++ /dev/null @@ -1,367 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMREGISTROARMAS*/ -@Entity(name="TarmRegistroArmas") -@Table(name="TARMREGISTROARMAS") -public class TarmRegistroArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmRegistroArmas -*/ -@Id -@Column(name="CREGISTRO" ,nullable=false, updatable=false) -private Long pk; -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="TIPOREGISTRO", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tiporegistro; - -@Column(name="TIPOREGISTROCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo Codigo de tabla de tipos de Registro -*/ -private String tiporegistrocodigo; - -@Column(name="PAISORIGEN", nullable=true) - -/** -* Codigo de pais -*/ -private String paisorigen; - -@Column(name="FCREACION", nullable=true) - -/** -* Fecha de creacin del registro - -*/ -private Date fcreacion; - -@Column(name="FABRICANTE", nullable=true) - -/** -* Nombre del fabricante del arma -*/ -private String fabricante; - -@Column(name="DUI", nullable=true) - -/** -* null -*/ -private String dui; - -@Column(name="TOTALFOB", nullable=true) - -/** -* null -*/ -private BigDecimal totalfob; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="TRAMITE", nullable=true) - -/** -* null -*/ -private Long tramite; - -@Column(name="AEROPUERTOPUERTO", nullable=true) - -/** -* Nombre del aeropuerto o puerto referente a la importacion -*/ -private String aeropuertopuerto; - -@Column(name="SOLICITUDNUM", nullable=true) - -/** -* Numero de la solicitud relacionada con la importacion -*/ -private String solicitudnum; - -@Column(name="FECHASOLICITUD", nullable=true) - -/** -* Fecha de la solicitud -*/ -private Date fechasolicitud; - -/**Contructor por defecto*/ -public TarmRegistroArmas(){ -} -/**Contructor de TarmRegistroArmas -@param pPk Clave Primaria del entity -*/ -public TarmRegistroArmas(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmRegistroArmas -*/ -public static TarmRegistroArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmRegistroArmas obj = pEntityManager.find(TarmRegistroArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmRegistroArmas -@return El objeto que referencia a la Clave primaria de TarmRegistroArmas -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmRegistroArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmRegistroArmas -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de tiporegistro -@return valor de tiporegistro*/ -public String getTiporegistro(){ - return tiporegistro; -} -/**Fija el valor de tiporegistro -@param pTiporegistro nuevo Valor de tiporegistro*/ -public void setTiporegistro(String pTiporegistro){ - tiporegistro=pTiporegistro; -} - -/**Obtiene el valor de tiporegistrocodigo -@return valor de tiporegistrocodigo*/ -public String getTiporegistrocodigo(){ - return tiporegistrocodigo; -} -/**Fija el valor de tiporegistrocodigo -@param pTiporegistrocodigo nuevo Valor de tiporegistrocodigo*/ -public void setTiporegistrocodigo(String pTiporegistrocodigo){ - tiporegistrocodigo=pTiporegistrocodigo; -} - -/**Obtiene el valor de paisorigen -@return valor de paisorigen*/ -public String getPaisorigen(){ - return paisorigen; -} -/**Fija el valor de paisorigen -@param pPaisorigen nuevo Valor de paisorigen*/ -public void setPaisorigen(String pPaisorigen){ - paisorigen=pPaisorigen; -} - -/**Obtiene el valor de fcreacion -@return valor de fcreacion*/ -public Date getFcreacion(){ - return fcreacion; -} -/**Fija el valor de fcreacion -@param pFcreacion nuevo Valor de fcreacion*/ -public void setFcreacion(Date pFcreacion){ - fcreacion=pFcreacion; -} - -/**Obtiene el valor de fabricante -@return valor de fabricante*/ -public String getFabricante(){ - return fabricante; -} -/**Fija el valor de fabricante -@param pFabricante nuevo Valor de fabricante*/ -public void setFabricante(String pFabricante){ - fabricante=pFabricante; -} - -/**Obtiene el valor de dui -@return valor de dui*/ -public String getDui(){ - return dui; -} -/**Fija el valor de dui -@param pDui nuevo Valor de dui*/ -public void setDui(String pDui){ - dui=pDui; -} - -/**Obtiene el valor de totalfob -@return valor de totalfob*/ -public BigDecimal getTotalfob(){ - return totalfob; -} -/**Fija el valor de totalfob -@param pTotalfob nuevo Valor de totalfob*/ -public void setTotalfob(BigDecimal pTotalfob){ - totalfob=pTotalfob; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de tramite -@return valor de tramite*/ -public Long getTramite(){ - return tramite; -} -/**Fija el valor de tramite -@param pTramite nuevo Valor de tramite*/ -public void setTramite(Long pTramite){ - tramite=pTramite; -} - -/**Obtiene el valor de aeropuertopuerto -@return valor de aeropuertopuerto*/ -public String getAeropuertopuerto(){ - return aeropuertopuerto; -} -/**Fija el valor de aeropuertopuerto -@param pAeropuertopuerto nuevo Valor de aeropuertopuerto*/ -public void setAeropuertopuerto(String pAeropuertopuerto){ - aeropuertopuerto=pAeropuertopuerto; -} - -/**Obtiene el valor de solicitudnum -@return valor de solicitudnum*/ -public String getSolicitudnum(){ - return solicitudnum; -} -/**Fija el valor de solicitudnum -@param pSolicitudnum nuevo Valor de solicitudnum*/ -public void setSolicitudnum(String pSolicitudnum){ - solicitudnum=pSolicitudnum; -} - -/**Obtiene el valor de fechasolicitud -@return valor de fechasolicitud*/ -public Date getFechasolicitud(){ - return fechasolicitud; -} -/**Fija el valor de fechasolicitud -@param pFechasolicitud nuevo Valor de fechasolicitud*/ -public void setFechasolicitud(Date pFechasolicitud){ - fechasolicitud=pFechasolicitud; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmRegistroArmas))return false; - TarmRegistroArmas that = (TarmRegistroArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmRegistroArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmRegistroArmas -*/ -public Object createInstance(){ - TarmRegistroArmas instance=new TarmRegistroArmas(); - return instance; -} -/**Clona la entidad TarmRegistroArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmRegistroArmas p=(TarmRegistroArmas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacion.java.svn-base deleted file mode 100644 index 15fabde..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacion.java.svn-base +++ /dev/null @@ -1,241 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDIMPORTACION*/ -@Entity(name="TarmSolicitudImportacion") -@Table(name="TARMSOLICITUDIMPORTACION") -public class TarmSolicitudImportacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudImportacion -*/ -@EmbeddedId -private TarmSolicitudImportacionKey pk; -@Column(name="CPAISORIGEN", nullable=true) - -/** -* Codigo de pais -*/ -private String cpaisorigen; - -@Column(name="FCREACION", nullable=true) - -/** -* null -*/ -private Date fcreacion; - -@Column(name="FABRICANTE", nullable=true) - -/** -* null -*/ -private String fabricante; - -@Column(name="DUI", nullable=true) - -/** -* null -*/ -private String dui; - -@Column(name="TOTAL_FOB", nullable=true) - -/** -* null -*/ -private BigDecimal total_fob; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TarmSolicitudImportacion(){ -} -/**Contructor de TarmSolicitudImportacion -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudImportacion(TarmSolicitudImportacionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudImportacion -*/ -public static TarmSolicitudImportacion find(EntityManager pEntityManager,TarmSolicitudImportacionKey pKey) throws Exception{ - TarmSolicitudImportacion obj = pEntityManager.find(TarmSolicitudImportacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudImportacion -@return El objeto que referencia a la Clave primaria de TarmSolicitudImportacion -*/ -public TarmSolicitudImportacionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudImportacion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudImportacion -*/ -public void setPk(TarmSolicitudImportacionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cpaisorigen -@return valor de cpaisorigen*/ -public String getCpaisorigen(){ - return cpaisorigen; -} -/**Fija el valor de cpaisorigen -@param pCpaisorigen nuevo Valor de cpaisorigen*/ -public void setCpaisorigen(String pCpaisorigen){ - cpaisorigen=pCpaisorigen; -} - -/**Obtiene el valor de fcreacion -@return valor de fcreacion*/ -public Date getFcreacion(){ - return fcreacion; -} -/**Fija el valor de fcreacion -@param pFcreacion nuevo Valor de fcreacion*/ -public void setFcreacion(Date pFcreacion){ - fcreacion=pFcreacion; -} - -/**Obtiene el valor de fabricante -@return valor de fabricante*/ -public String getFabricante(){ - return fabricante; -} -/**Fija el valor de fabricante -@param pFabricante nuevo Valor de fabricante*/ -public void setFabricante(String pFabricante){ - fabricante=pFabricante; -} - -/**Obtiene el valor de dui -@return valor de dui*/ -public String getDui(){ - return dui; -} -/**Fija el valor de dui -@param pDui nuevo Valor de dui*/ -public void setDui(String pDui){ - dui=pDui; -} - -/**Obtiene el valor de total_fob -@return valor de total_fob*/ -public BigDecimal getTotal_fob(){ - return total_fob; -} -/**Fija el valor de total_fob -@param pTotal_fob nuevo Valor de total_fob*/ -public void setTotal_fob(BigDecimal pTotal_fob){ - total_fob=pTotal_fob; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudImportacion))return false; - TarmSolicitudImportacion that = (TarmSolicitudImportacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudImportacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudImportacion -*/ -public Object createInstance(){ - TarmSolicitudImportacion instance=new TarmSolicitudImportacion(); - instance.setPk(new TarmSolicitudImportacionKey()); - return instance; -} -/**Clona la entidad TarmSolicitudImportacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudImportacion p=(TarmSolicitudImportacion)this.clone(); - p.setPk((TarmSolicitudImportacionKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacionKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacionKey.java.svn-base deleted file mode 100644 index 1587c71..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmSolicitudImportacionKey.java.svn-base +++ /dev/null @@ -1,131 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Column; - -import java.io.Serializable; - -import com.fp.dto.hb.HibernateId; - -import java.lang.reflect.Field; - -import javax.persistence.Embeddable; -import javax.persistence.GeneratedValue; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDIMPORTACION*/ -@Embeddable -public class TarmSolicitudImportacionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CIMPORTACION", nullable=false,updatable=false) -/** -* null -*/ -private Long cimportacion; - -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -/**Contructor por defecto*/ -public TarmSolicitudImportacionKey(){} -/**Contructor de TarmSolicitudImportacionKey -@param pCimportacion null -@param pCsolicitud Codigo de solicitud de controld e armas -*/ -public TarmSolicitudImportacionKey(Long pCimportacion,String pCsolicitud){ - cimportacion=pCimportacion; - csolicitud=pCsolicitud; -} -/**Obtiene el valor de cimportacion -@return valor de cimportacion*/ -public Long getCimportacion(){ - return cimportacion; -} -/**Fija el valor de cimportacion -@param pCimportacion nuevo Valor de cimportacion*/ -public void setCimportacion(Long pCimportacion){ - cimportacion=pCimportacion; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Implementacion de la comparacion de TarmSolicitudImportacionKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudImportacionKey))return false; - TarmSolicitudImportacionKey that = (TarmSolicitudImportacionKey) o; - if (this.getCimportacion() == null || that.getCimportacion() == null){ - return false; - } - if (! this.getCimportacion().equals(that.getCimportacion())){ - return false; - } - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudImportacionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCimportacion() == null ? 0 : this.getCimportacion().hashCode()); - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmTotalPersona.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmTotalPersona.java.svn-base deleted file mode 100644 index 509ae99..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmTotalPersona.java.svn-base +++ /dev/null @@ -1,483 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import javax.persistence.GeneratedValue; -import javax.persistence.Query; - -import java.util.List; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTOTALPERSONA*/ -@Entity(name="TarmTotalPersona") -@Table(name="TARMTOTALPERSONA") -public class TarmTotalPersona extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTotalPersona -*/ -@Id -@Column(name="CTOTAL" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMTOTALPERSONA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="CANTIDADMOVIMIENTO", nullable=true) - -/** -* Almacena el valor de armas o explosivos ingresados o egresados que modifico el saldo anterior -*/ -private BigDecimal cantidadmovimiento; - -@Column(name="UNIDADMEDIDAPESOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de medida -*/ -private String unidadmedidapesocodigo; - -@Column(name="INGRESOEGRESO", nullable=true) - -/** -* Codigo de catalogo para indicar si es un ingreso o un egreso -*/ -private String ingresoegreso; - -@Column(name="INGRESOEGRESOCODIGO", nullable=true) - -/** -* Codigo de catalogcode ESINGRESOEGRESO -*/ -private String ingresoegresocodigo; - -@Column(name="TIPOARMAEXPLOSIVO", nullable=true) - -/** -* Codigo de catalogo 01 Revolver, 02 Polvora -*/ -private String tipoarmaexplosivo; - -@Column(name="TIPOARMAEXPLOSIVOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de de arma o explosivo -*/ -private String tipoarmaexplosivocodigo; - -@Column(name="PERSONCODIGO", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcodigo; - -@Column(name="FECHA", nullable=true) - -/** -* Fecha de registro -*/ -private Timestamp fecha; - -@Column(name="UNIDADMEDIDAPESO", nullable=true) - -/** -* Codigo de catalogo 01KG, 02 Unidad -*/ -private String unidadmedidapeso; - -@Column(name="SALDOANTERIOR", nullable=true) - -/** -* Valor numerico de la transaccion anterior -*/ -private BigDecimal saldoanterior; - -@Column(name="TOTAL", nullable=false) - -/** -* Suma total de arma explosivos segn tipoexplosivoarma,clase, persona -*/ -private BigDecimal total; - -@Column(name="CMOVIMIENTO", nullable=true) - -/** -* null -*/ -private String cmovimiento; - -@Column(name="CLASECODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo. Codigo de tabla de tipos de Clase de arma -*/ -private String clasecodigo; - -@Column(name="CARMA", nullable=true) - -/** -* Codigo de arma -*/ -private String carma; - -@Column(name="CLASE", nullable=true) - -/** -* Codigo de catalogo 01 Explosivo, 02 Arma de fuego -*/ -private String clase; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Versin del Registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TarmTotalPersona(){ -} -/**Contructor de TarmTotalPersona -@param pPk Clave Primaria del entity -@param pTotal Suma total de arma explosivos segn tipoexplosivoarma,clase, persona -*/ -public TarmTotalPersona(String pPk,BigDecimal pTotal){ - this(); - pk=pPk; - total=pTotal; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTotalPersona -*/ -public static TarmTotalPersona find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTotalPersona obj = pEntityManager.find(TarmTotalPersona.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTotalPersona -@return El objeto que referencia a la Clave primaria de TarmTotalPersona -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTotalPersona -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTotalPersona -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de cantidadmovimiento -@return valor de cantidadmovimiento*/ -public BigDecimal getCantidadmovimiento(){ - return cantidadmovimiento; -} -/**Fija el valor de cantidadmovimiento -@param pCantidadmovimiento nuevo Valor de cantidadmovimiento*/ -public void setCantidadmovimiento(BigDecimal pCantidadmovimiento){ - cantidadmovimiento=pCantidadmovimiento; -} - -/**Obtiene el valor de unidadmedidapesocodigo -@return valor de unidadmedidapesocodigo*/ -public String getUnidadmedidapesocodigo(){ - return unidadmedidapesocodigo; -} -/**Fija el valor de unidadmedidapesocodigo -@param pUnidadmedidapesocodigo nuevo Valor de unidadmedidapesocodigo*/ -public void setUnidadmedidapesocodigo(String pUnidadmedidapesocodigo){ - unidadmedidapesocodigo=pUnidadmedidapesocodigo; -} - -/**Obtiene el valor de ingresoegreso -@return valor de ingresoegreso*/ -public String getIngresoegreso(){ - return ingresoegreso; -} -/**Fija el valor de ingresoegreso -@param pIngresoegreso nuevo Valor de ingresoegreso*/ -public void setIngresoegreso(String pIngresoegreso){ - ingresoegreso=pIngresoegreso; -} - -/**Obtiene el valor de ingresoegresocodigo -@return valor de ingresoegresocodigo*/ -public String getIngresoegresocodigo(){ - return ingresoegresocodigo; -} -/**Fija el valor de ingresoegresocodigo -@param pIngresoegresocodigo nuevo Valor de ingresoegresocodigo*/ -public void setIngresoegresocodigo(String pIngresoegresocodigo){ - ingresoegresocodigo=pIngresoegresocodigo; -} - -/**Obtiene el valor de tipoarmaexplosivo -@return valor de tipoarmaexplosivo*/ -public String getTipoarmaexplosivo(){ - return tipoarmaexplosivo; -} -/**Fija el valor de tipoarmaexplosivo -@param pTipoarmaexplosivo nuevo Valor de tipoarmaexplosivo*/ -public void setTipoarmaexplosivo(String pTipoarmaexplosivo){ - tipoarmaexplosivo=pTipoarmaexplosivo; -} - -/**Obtiene el valor de tipoarmaexplosivocodigo -@return valor de tipoarmaexplosivocodigo*/ -public String getTipoarmaexplosivocodigo(){ - return tipoarmaexplosivocodigo; -} -/**Fija el valor de tipoarmaexplosivocodigo -@param pTipoarmaexplosivocodigo nuevo Valor de tipoarmaexplosivocodigo*/ -public void setTipoarmaexplosivocodigo(String pTipoarmaexplosivocodigo){ - tipoarmaexplosivocodigo=pTipoarmaexplosivocodigo; -} - -/**Obtiene el valor de personcodigo -@return valor de personcodigo*/ -public Integer getPersoncodigo(){ - return personcodigo; -} -/**Fija el valor de personcodigo -@param pPersoncodigo nuevo Valor de personcodigo*/ -public void setPersoncodigo(Integer pPersoncodigo){ - personcodigo=pPersoncodigo; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de unidadmedidapeso -@return valor de unidadmedidapeso*/ -public String getUnidadmedidapeso(){ - return unidadmedidapeso; -} -/**Fija el valor de unidadmedidapeso -@param pUnidadmedidapeso nuevo Valor de unidadmedidapeso*/ -public void setUnidadmedidapeso(String pUnidadmedidapeso){ - unidadmedidapeso=pUnidadmedidapeso; -} - -/**Obtiene el valor de saldoanterior -@return valor de saldoanterior*/ -public BigDecimal getSaldoanterior(){ - return saldoanterior; -} -/**Fija el valor de saldoanterior -@param pSaldoanterior nuevo Valor de saldoanterior*/ -public void setSaldoanterior(BigDecimal pSaldoanterior){ - saldoanterior=pSaldoanterior; -} - -/**Obtiene el valor de total -@return valor de total*/ -public BigDecimal getTotal(){ - return total; -} -/**Fija el valor de total -@param pTotal nuevo Valor de total*/ -public void setTotal(BigDecimal pTotal){ - total=pTotal; -} - -/**Obtiene el valor de cmovimiento -@return valor de cmovimiento*/ -public String getCmovimiento(){ - return cmovimiento; -} -/**Fija el valor de cmovimiento -@param pCmovimiento nuevo Valor de cmovimiento*/ -public void setCmovimiento(String pCmovimiento){ - cmovimiento=pCmovimiento; -} - -/**Obtiene el valor de clasecodigo -@return valor de clasecodigo*/ -public String getClasecodigo(){ - return clasecodigo; -} -/**Fija el valor de clasecodigo -@param pClasecodigo nuevo Valor de clasecodigo*/ -public void setClasecodigo(String pClasecodigo){ - clasecodigo=pClasecodigo; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTotalPersona))return false; - TarmTotalPersona that = (TarmTotalPersona) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTotalPersona -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTotalPersona -*/ -public Object createInstance(){ - TarmTotalPersona instance=new TarmTotalPersona(); - return instance; -} -/**Clona la entidad TarmTotalPersona -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTotalPersona p=(TarmTotalPersona)this.clone(); - return p; -} - -/** - * Sentencia que devuelve un registro vigente de TarmTotalPerson - */ -private static final String JPQL_PERSONA = "from TarmTotalPersona ttp" + " where ttp.personcodigo = :personcode"; - -/** - * Metodo que entrega datos de un total en TarmTotalPerson. - * - * @param pEntityManager Session de la base de datos. - * @param personcode Codigo de la persona a quien pertenece la Direccion. - * @param addressnumber Numero de la direccion. - * @return tcustPersonAddress - * @throws Exception - */ -public static List findByPersona(EntityManager pEntityManager, Integer personcode) throws Exception { - Query qry = pEntityManager.createQuery(TarmTotalPersona.JPQL_PERSONA); - qry.setParameter("personcode", personcode); - return qry.getResultList(); -} - - -/** - * Sentencia que devuelve un registro vigente de TcustPersonAddress - */ -private static final String JPQL_TIPOCLASEPER = "from TarmTotalPersona ttp" + " where ttp.personcodigo = :personcode and ttp.clase = :clase and ttp.tipoarmaexplosivo = :tipoarmaexplosivo" - + " and ttp.fecha = (select max(ttpi.fecha) from TarmTotalPersona ttpi where ttpi.personcodigo = :personcode and ttpi.clase = :clase and ttpi.tipoarmaexplosivo = :tipoarmaexplosivo)"; - -/** - * Metodo que entrega datos de una Direccion definida en TcustPersonAddress. - * - * @param pEntityManager Session de la base de datos. - * @param personcode Codigo de la persona a quien pertenece la Direccion. - * @param addressnumber Numero de la direccion. - * @return tcustPersonAddress - * @throws Exception - */ -public static List findByClase(EntityManager pEntityManager, Integer personcode, String clase, String tipoarmaexplosivo) throws Exception { - Query qry = pEntityManager.createQuery(TarmTotalPersona.JPQL_TIPOCLASEPER); - qry.setParameter("personcode", personcode); - qry.setParameter("clase", clase); - qry.setParameter("tipoarmaexplosivo", tipoarmaexplosivo); - return qry.getResultList(); -} - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmVentaArmaTem.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmVentaArmaTem.java.svn-base deleted file mode 100644 index 9218c66..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/fun/.svn/text-base/TarmVentaArmaTem.java.svn-base +++ /dev/null @@ -1,257 +0,0 @@ -package com.fp.persistence.parmas.fun; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMVENTAARMATEM*/ -@Entity(name="TarmVentaArmaTem") -@Table(name="TARMVENTAARMATEM") -public class TarmVentaArmaTem extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmVentaArmaTem -*/ -@Id -@Column(name="CARMAVENTATEM" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Column(name="FCREACION", nullable=true) - -/** -* null -*/ -private Date fcreacion; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="PERSONCODIGO", nullable=true) - -/** -* null -*/ -private Integer personcodigo; - -@Column(name="FACTURA", nullable=true) -private String factura; - -@Column(name="NOREGISTRO", nullable=true) -private String noregistra; - - - -@Column(name="JUSTIFICACION", nullable=true) -private String justificacion; - -@Column(name="OBSERVACION", nullable=true) -private String observacion; - -@Column(name="PATHDOCUMENTO", nullable=true) -private String pathdocumento; - -@Column(name="CENTROCONTROL", nullable=true) -private String centrocontrol; - -/**Contructor por defecto*/ -public TarmVentaArmaTem(){ -} -/**Contructor de TarmVentaArmaTem -@param pPk Clave Primaria del entity -*/ -public TarmVentaArmaTem(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmVentaArmaTem -*/ -public static TarmVentaArmaTem find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmVentaArmaTem obj = pEntityManager.find(TarmVentaArmaTem.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmVentaArmaTem -@return El objeto que referencia a la Clave primaria de TarmVentaArmaTem -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmVentaArmaTem -@param pPk El objeto que referencia a la nueva Clave primaria de TarmVentaArmaTem -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de fcreacion -@return valor de fcreacion*/ -public Date getFcreacion(){ - return fcreacion; -} -/**Fija el valor de fcreacion -@param pFcreacion nuevo Valor de fcreacion*/ -public void setFcreacion(Date pFcreacion){ - fcreacion=pFcreacion; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de personcodigo -@return valor de personcodigo*/ -public Integer getPersoncodigo(){ - return personcodigo; -} -/**Fija el valor de personcodigo -@param pPersoncodigo nuevo Valor de personcodigo*/ -public void setPersoncodigo(Integer pPersoncodigo){ - personcodigo=pPersoncodigo; -} - - - -public String getFactura() { - return factura; -} -public void setFactura(String factura) { - this.factura = factura; -} -public String getNoregistra() { - return noregistra; -} -public void setNoregistra(String noregistra) { - this.noregistra = noregistra; -} - -public String getJustificacion() { - return justificacion; -} -public void setJustificacion(String justificacion) { - this.justificacion = justificacion; -} -public String getObservacion() { - return observacion; -} -public void setObservacion(String observacion) { - this.observacion = observacion; -} - -public String getPathdocumento() { - return pathdocumento; -} -public void setPathdocumento(String pathdocumento) { - this.pathdocumento = pathdocumento; -} - -public String getCentrocontrol() { - return centrocontrol; -} -public void setCentrocontrol(String centrocontrol) { - this.centrocontrol = centrocontrol; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmVentaArmaTem))return false; - TarmVentaArmaTem that = (TarmVentaArmaTem) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmVentaArmaTem -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmVentaArmaTem -*/ -public Object createInstance(){ - TarmVentaArmaTem instance=new TarmVentaArmaTem(); - return instance; -} -/**Clona la entidad TarmVentaArmaTem -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmVentaArmaTem p=(TarmVentaArmaTem)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/entries deleted file mode 100644 index c726fc0..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins -svn://172.17.26.185/COMACO - - - -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmPlanificacionTramite.java -file - - - - -2022-07-28T03:40:28.295741Z -cddb2493165b007561ecb0a70408067e -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -7808 - -TarmPlanificacionInspeccion.java -file - - - - -2022-07-28T03:40:28.296741Z -e3a680a5aba10caab1f93e97bd132b81 -2016-01-15T17:41:51.430820Z -4381 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8658 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionInspeccion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionInspeccion.java.svn-base deleted file mode 100644 index bfb34ae..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionInspeccion.java.svn-base +++ /dev/null @@ -1,354 +0,0 @@ -package com.fp.persistence.parmas.ins; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMPLANIFICACIONINSPECCION*/ -@Entity(name="TarmPlanificacionInspeccion") -@Table(name="TARMPLANIFICACIONINSPECCION") -public class TarmPlanificacionInspeccion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmPlanificacionInspeccion -*/ -@Id -@Column(name="CPLANIFICACION" ,nullable=false, updatable=false) -private Long pk; -@Column(name="CODIGO", nullable=true) - -/** -* null -*/ -private String codigo; - -@Column(name="DESCRIPCION", nullable=true) - -/** -* null -*/ -private String descripcion; - -@Column(name="FECHAGENERACION", nullable=true) - -/** -* null -*/ -private Date fechageneracion; - -@Column(name="FECHAINICIO", nullable=true) - -/** -* null -*/ -private Date fechainicio; - -@Column(name="FECHAFIN", nullable=true) - -/** -* null -*/ -private Date fechafin; - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* null -*/ -private String ccentrocontrol; - -@Column(name="ANNO", nullable=true) - -/** -* null -*/ -private Long anno; - -@Column(name="APROBADA", nullable=true) - -/** -* null -*/ -private String aprobada; - -@Column(name="XPATH", nullable=true) - -/** -* null -*/ -private String xpath; - -@Column(name="TIPOPLANIFICACIONCODE", nullable=true) - -/** -* null -*/ -private String idPlanificacion; - -@Column(name="TIPOPLANIFICACION", nullable=true) - -/** -* null -*/ -private String Planificacion; - - -@Column(name="PRESUPESTO", nullable=true) - -/** -* null -*/ -private Float presupuesto; - - - -/**Contructor por defecto*/ -public TarmPlanificacionInspeccion(){ -} -/**Contructor de TarmPlanificacionInspeccion -@param pPk Clave Primaria del entity -*/ -public TarmPlanificacionInspeccion(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmPlanificacionInspeccion -*/ -public static TarmPlanificacionInspeccion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmPlanificacionInspeccion obj = pEntityManager.find(TarmPlanificacionInspeccion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmPlanificacionInspeccion -@return El objeto que referencia a la Clave primaria de TarmPlanificacionInspeccion -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmPlanificacionInspeccion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmPlanificacionInspeccion -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de codigo -@return valor de codigo*/ -public String getCodigo(){ - return codigo; -} -/**Fija el valor de codigo -@param pCodigo nuevo Valor de codigo*/ -public void setCodigo(String pCodigo){ - codigo=pCodigo; -} - -/**Obtiene el valor de descripcion -@return valor de descripcion*/ -public String getDescripcion(){ - return descripcion; -} -/**Fija el valor de descripcion -@param pDescripcion nuevo Valor de descripcion*/ -public void setDescripcion(String pDescripcion){ - descripcion=pDescripcion; -} - -/**Obtiene el valor de fechageneracion -@return valor de fechageneracion*/ -public Date getFechageneracion(){ - return fechageneracion; -} -/**Fija el valor de fechageneracion -@param pFechageneracion nuevo Valor de fechageneracion*/ -public void setFechageneracion(Date pFechageneracion){ - fechageneracion=pFechageneracion; -} - -/**Obtiene el valor de fechainicio -@return valor de fechainicio*/ -public Date getFechainicio(){ - return fechainicio; -} -/**Fija el valor de fechainicio -@param pFechainicio nuevo Valor de fechainicio*/ -public void setFechainicio(Date pFechainicio){ - fechainicio=pFechainicio; -} - -/**Obtiene el valor de fechafin -@return valor de fechafin*/ -public Date getFechafin(){ - return fechafin; -} -/**Fija el valor de fechafin -@param pFechafin nuevo Valor de fechafin*/ -public void setFechafin(Date pFechafin){ - fechafin=pFechafin; -} - -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -/**Obtiene el valor de anno -@return valor de ccentrocontrol*/ -public Long getAnno() { - return anno; -} -/**Fija el valor de anno -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setAnno(Long anno) { - this.anno = anno; -} - -/**Obtiene el valor de aprobada -@return valor de aprobada*/ -public String getAprobada() { - return aprobada; -} -/**Fija el valor de aprobada -@param pCcentrocontrol nuevo Valor de aprobada*/ -public void setAprobada(String aprobada) { - this.aprobada = aprobada; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath() { - return xpath; -} -/**Fija el valor de xpath -@param pCcentrocontrol nuevo Valor de xpath*/ -public void setXpath(String xpath) { - this.xpath = xpath; -} - -/**Obtiene el valor de planificacion -@return valor de planificacion*/ -public String getIdPlanificacion() { - return idPlanificacion; -} -/**Fija el valor de planificacion -@param pidPlanificacion nuevo Valor de tipoplanificacionList*/ -public void setIdPlanificacion(String pidPlanificacion) { - this.idPlanificacion = pidPlanificacion; -} - -/**Obtiene el valor de planificacion -@return valor de planificacion*/ -public String getPlanificacion() { - return Planificacion; -} -/**Fija el valor de planificacion -@param pidPlanificacion nuevo Valor de tipoplanificacionList*/ -public void setPlanificacion(String pPlanificacion) { - this.Planificacion = pPlanificacion; -} - -/**Obtiene el valor de presupuesto -@return valor de presupuesto*/ -public Float getPresupuesto() { - return presupuesto; -} -/**Fija el valor de presupuesto -@param pidPlanificacion nuevo Valor de presupuesto*/ -public void setPresupuesto(Float ppresupuesto) { - this.presupuesto = ppresupuesto; -} - - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmPlanificacionInspeccion))return false; - TarmPlanificacionInspeccion that = (TarmPlanificacionInspeccion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmPlanificacionInspeccion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmPlanificacionInspeccion -*/ -public Object createInstance(){ - TarmPlanificacionInspeccion instance=new TarmPlanificacionInspeccion(); - return instance; -} -/**Clona la entidad TarmPlanificacionInspeccion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmPlanificacionInspeccion p=(TarmPlanificacionInspeccion)this.clone(); - return p; -} - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionTramite.java.svn-base deleted file mode 100644 index e167597..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/ins/.svn/text-base/TarmPlanificacionTramite.java.svn-base +++ /dev/null @@ -1,325 +0,0 @@ -package com.fp.persistence.parmas.ins; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMPLANIFICACIONTRAMITE*/ -@Entity(name="TarmPlanificacionTramite") -@Table(name="TARMPLANIFICACIONTRAMITE") -public class TarmPlanificacionTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmPlanificacionTramite -*/ -@Id -@Column(name="CPLANIFICACIONTRAMITE" ,nullable=false, updatable=false) -private Long pk; -@Column(name="CTRAMITE", nullable=true) - -/** -* null -*/ -private Long ctramite; - -@Column(name="MESNUMERO", nullable=true) - -/** -* null -*/ -private Long mesnumero; - -@Column(name="CPLANIFICACION", nullable=true) - -/** -* null -*/ -private Long cplanificacion; - -@Column(name="INSPECCION", nullable=true) - -/** -* null -*/ -private String inspeccion; - -@Column(name="CSOLICITUD", nullable=true) - -/** -* null -*/ -private String csolicitud; - -@Column(name="CDOCUMENTO", nullable=true) - -/** -* null -*/ -private Long cdocumento; - -@Column(name="MES", nullable=true) - -/** -* null -*/ -private String mes; - -@Column(name="PERIODO", nullable=true) - -/** -* null -*/ -private String periodo; - -@Column(name="INSPECTORES", nullable=true) - -/** -* null -*/ -private Long inspectores; - -@Column(name="VEHICULOS", nullable=true) - -/** -* null -*/ -private Long vehiculos; - -@Column(name="PRESUPESTO", nullable=true) - -/** -* null -*/ -private Float presupuesto; - -/**Contructor por defecto*/ -public TarmPlanificacionTramite(){ -} -/**Contructor de TarmPlanificacionTramite -@param pPk Clave Primaria del entity -*/ -public TarmPlanificacionTramite(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmPlanificacionTramite -*/ -public static TarmPlanificacionTramite find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmPlanificacionTramite obj = pEntityManager.find(TarmPlanificacionTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmPlanificacionTramite -@return El objeto que referencia a la Clave primaria de TarmPlanificacionTramite -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmPlanificacionTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmPlanificacionTramite -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de mesnumero -@return valor de mesnumero*/ -public Long getMesnumero(){ - return mesnumero; -} -/**Fija el valor de mesnumero -@param pMesnumero nuevo Valor de mesnumero*/ -public void setMesnumero(Long pMesnumero){ - mesnumero=pMesnumero; -} - -/**Obtiene el valor de cplanificacion -@return valor de cplanificacion*/ -public Long getCplanificacion(){ - return cplanificacion; -} -/**Fija el valor de cplanificacion -@param pCplanificacion nuevo Valor de cplanificacion*/ -public void setCplanificacion(Long pCplanificacion){ - cplanificacion=pCplanificacion; -} - -/**Obtiene el valor de inspeccion -@return valor de inspeccion*/ -public String getInspeccion(){ - return inspeccion; -} -/**Fija el valor de inspeccion -@param pInspeccion nuevo Valor de inspeccion*/ -public void setInspeccion(String pInspeccion){ - inspeccion=pInspeccion; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de cdocumento -@return valor de cdocumento*/ -public Long getCdocumento(){ - return cdocumento; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setCdocumento(Long pCdocumento){ - cdocumento=pCdocumento; -} - -/**Obtiene el valor de mes -@return valor de mes*/ -public String getMes(){ - return mes; -} -/**Fija el valor de mes -@param pMes nuevo Valor de mes*/ -public void setMes(String pMes){ - mes=pMes; -} - -/**Fija el valor de mes -@param pMes nuevo Valor de periodo*/ -public void setPeriodo(String pPeridodo){ - periodo=pPeridodo; -} - -/**Obtiene el valor de periodo -@return valor de mes*/ -public String getPeriodo(){ - return periodo; -} - -/**Obtiene el valor de inspectores -@return valor de inspectores*/ -public Long getInspectores(){ - return inspectores; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setInspectores(Long pinspectores){ - inspectores=pinspectores; -} - -/**Obtiene el valor de vehiculos -@return valor de vehiculos*/ -public Long getVehiculos(){ - return vehiculos; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setVehiculos(Long pvehiculos){ - vehiculos=pvehiculos; -} - -/**Obtiene el valor de presupuesto I -@return valor de presupuesto I*/ -public Float getPresupuesto() { - return presupuesto; -} -/**Fija el valor de presupuesto I -@param pidPlanificacion nuevo Valor de presupuesto I*/ -public void setPresupuesto(Float ppresupuesto) { - this.presupuesto = ppresupuesto; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmPlanificacionTramite))return false; - TarmPlanificacionTramite that = (TarmPlanificacionTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmPlanificacionTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmPlanificacionTramite -*/ -public Object createInstance(){ - TarmPlanificacionTramite instance=new TarmPlanificacionTramite(); - return instance; -} -/**Clona la entidad TarmPlanificacionTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmPlanificacionTramite p=(TarmPlanificacionTramite)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/entries deleted file mode 100644 index 94de4de..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte -svn://172.17.26.185/COMACO - - - -2015-02-20T11:02:07.602745Z -3831 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmTagArma.java -file - - - - -2022-07-28T03:40:27.765738Z -366cce399bebfd556e5d28d084bbceae -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3936 - -TarmColadeImpresion.java -file - - - - -2022-07-28T03:40:27.765738Z -c3ef27e44e401c0490e3781573dd8964 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7028 - -TarmLectura.java -file - - - - -2022-07-28T03:40:27.765738Z -6964a0e0ef3a4cc2a2122853c9e5a336 -2015-02-20T11:02:07.602745Z -3831 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7008 - -TarmLecturaDetalleKey.java -file - - - - -2022-07-28T03:40:27.766738Z -20b0198357fbc3745bb38ef35167af5e -2014-11-06T11:16:58.222919Z -2422 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3342 - -TarmTagArmaKey.java -file - - - - -2022-07-28T03:40:27.766738Z -9a15a3d369252e41f3f41833bfd28be1 -2014-10-17T10:59:07.105580Z -1687 -acevallos - - - - - - - - - - - - - - - - - - - - - -3141 - -TarmLecturaDetalle.java -file - - - - -2022-07-28T03:40:27.766738Z -92d56889e2f049bab914e3af94bfe144 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3829 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmColadeImpresion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmColadeImpresion.java.svn-base deleted file mode 100644 index 1026751..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmColadeImpresion.java.svn-base +++ /dev/null @@ -1,249 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCOLADEIMPRESION*/ -@Entity(name="TarmColadeImpresion") -@Table(name="TARMCOLADEIMPRESION") -public class TarmColadeImpresion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmColadeImpresion -*/ -@Id -@Column(name="CIMPRESION" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMCOLADEIMPRESION"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "10")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="ESTADOIMPRESION", nullable=true) - -/** -* Codigo de catalogo 01 Por Imprimir, 02 Impreso -*/ -private String estadoimpresion; - -@Column(name="FECHAIMPRESION", nullable=true) - -/** -* Fecha de Impresion del Documento -*/ -private Timestamp fechaimpresion; - -@Column(name="ESTADOIMPRESIONCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String estadoimpresioncode; - -@Column(name="CDOCUMENTO", nullable=true) - -/** -* null -*/ -private Long cdocumento; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* null -*/ -private Date fecharegistro; - -@Column(name="CODIGOTARJETA", nullable=true) - -/** -* Codigo interno de la tarjeta fisica -*/ -private String codigotarjeta; - -/**Contructor por defecto*/ -public TarmColadeImpresion(){ -} -/**Contructor de TarmColadeImpresion -@param pPk Clave Primaria del entity -*/ -public TarmColadeImpresion(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmColadeImpresion -*/ -public static TarmColadeImpresion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmColadeImpresion obj = pEntityManager.find(TarmColadeImpresion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmColadeImpresion -@return El objeto que referencia a la Clave primaria de TarmColadeImpresion -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmColadeImpresion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmColadeImpresion -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de estadoimpresion -@return valor de estadoimpresion*/ -public String getEstadoimpresion(){ - return estadoimpresion; -} -/**Fija el valor de estadoimpresion -@param pEstadoimpresion nuevo Valor de estadoimpresion*/ -public void setEstadoimpresion(String pEstadoimpresion){ - estadoimpresion=pEstadoimpresion; -} - -/**Obtiene el valor de fechaimpresion -@return valor de fechaimpresion*/ -public Timestamp getFechaimpresion(){ - return fechaimpresion; -} -/**Fija el valor de fechaimpresion -@param pFechaimpresion nuevo Valor de fechaimpresion*/ -public void setFechaimpresion(Timestamp pFechaimpresion){ - fechaimpresion=pFechaimpresion; -} - -/**Obtiene el valor de estadoimpresioncode -@return valor de estadoimpresioncode*/ -public String getEstadoimpresioncode(){ - return estadoimpresioncode; -} -/**Fija el valor de estadoimpresioncode -@param pEstadoimpresioncode nuevo Valor de estadoimpresioncode*/ -public void setEstadoimpresioncode(String pEstadoimpresioncode){ - estadoimpresioncode=pEstadoimpresioncode; -} - -/**Obtiene el valor de cdocumento -@return valor de cdocumento*/ -public Long getCdocumento(){ - return cdocumento; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setCdocumento(Long pCdocumento){ - cdocumento=pCdocumento; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de codigotarjeta -@return valor de codigotarjeta*/ -public String getCodigotarjeta(){ - return codigotarjeta; -} -/**Fija el valor de codigotarjeta -@param pCodigotarjeta nuevo Valor de codigotarjeta*/ -public void setCodigotarjeta(String pCodigotarjeta){ - codigotarjeta=pCodigotarjeta; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmColadeImpresion))return false; - TarmColadeImpresion that = (TarmColadeImpresion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmColadeImpresion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmColadeImpresion -*/ -public Object createInstance(){ - TarmColadeImpresion instance=new TarmColadeImpresion(); - return instance; -} -/**Clona la entidad TarmColadeImpresion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmColadeImpresion p=(TarmColadeImpresion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLectura.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLectura.java.svn-base deleted file mode 100644 index 4188dc0..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLectura.java.svn-base +++ /dev/null @@ -1,285 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMLECTURA*/ -@Entity(name="TarmLectura") -@Table(name="TARMLECTURA") -public class TarmLectura extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmLectura -*/ -@Id -@Column(name="CLECTURA" ,nullable=false, updatable=false) -private Long pk; -@Column(name="DIRECCION", nullable=true) - -/** -* null -*/ -private String direccion; - -@Column(name="IDPORTAL", nullable=true) - -/** -* null -*/ -private String idportal; - -@Column(name="TIPOLECTURA", nullable=true) - -/** -* null -*/ -private String tipolectura; - -@Column(name="CANTONCODE", nullable=true) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="FECHA", nullable=true) - -/** -* null -*/ -private Timestamp fecha; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia -*/ -private String parroquiacode; - -@Column(name="TIPOLECTURACODE", nullable=true) - -/** -* null -*/ -private String tipolecturacode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia -*/ -private String provincecode; - -/**Contructor por defecto*/ -public TarmLectura(){ -} -/**Contructor de TarmLectura -@param pPk Clave Primaria del entity -*/ -public TarmLectura(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmLectura -*/ -public static TarmLectura find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmLectura obj = pEntityManager.find(TarmLectura.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmLectura -@return El objeto que referencia a la Clave primaria de TarmLectura -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmLectura -@param pPk El objeto que referencia a la nueva Clave primaria de TarmLectura -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de idportal -@return valor de idportal*/ -public String getIdportal(){ - return idportal; -} -/**Fija el valor de idportal -@param pIdportal nuevo Valor de idportal*/ -public void setIdportal(String pIdportal){ - idportal=pIdportal; -} - -/**Obtiene el valor de tipolectura -@return valor de tipolectura*/ -public String getTipolectura(){ - return tipolectura; -} -/**Fija el valor de tipolectura -@param pTipolectura nuevo Valor de tipolectura*/ -public void setTipolectura(String pTipolectura){ - tipolectura=pTipolectura; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de tipolecturacode -@return valor de tipolecturacode*/ -public String getTipolecturacode(){ - return tipolecturacode; -} -/**Fija el valor de tipolecturacode -@param pTipolecturacode nuevo Valor de tipolecturacode*/ -public void setTipolecturacode(String pTipolecturacode){ - tipolecturacode=pTipolecturacode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmLectura))return false; - TarmLectura that = (TarmLectura) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmLectura -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmLectura -*/ -public Object createInstance(){ - TarmLectura instance=new TarmLectura(); - return instance; -} -/**Clona la entidad TarmLectura -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmLectura p=(TarmLectura)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalle.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalle.java.svn-base deleted file mode 100644 index 54e68f4..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalle.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMLECTURADETALLE*/ -@Entity(name="TarmLecturaDetalle") -@Table(name="TARMLECTURADETALLE") -public class TarmLecturaDetalle extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmLecturaDetalle -*/ -@EmbeddedId -private TarmLecturaDetalleKey pk; -/**Contructor por defecto*/ -public TarmLecturaDetalle(){ -} -/**Contructor de TarmLecturaDetalle -@param pPk Clave Primaria del entity -*/ -public TarmLecturaDetalle(TarmLecturaDetalleKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmLecturaDetalle -*/ -public static TarmLecturaDetalle find(EntityManager pEntityManager,TarmLecturaDetalleKey pKey) throws Exception{ - TarmLecturaDetalle obj = pEntityManager.find(TarmLecturaDetalle.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmLecturaDetalle -@return El objeto que referencia a la Clave primaria de TarmLecturaDetalle -*/ -public TarmLecturaDetalleKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmLecturaDetalle -@param pPk El objeto que referencia a la nueva Clave primaria de TarmLecturaDetalle -*/ -public void setPk(TarmLecturaDetalleKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmLecturaDetalle))return false; - TarmLecturaDetalle that = (TarmLecturaDetalle) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmLecturaDetalle -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmLecturaDetalle -*/ -public Object createInstance(){ - TarmLecturaDetalle instance=new TarmLecturaDetalle(); - instance.setPk(new TarmLecturaDetalleKey()); - return instance; -} -/**Clona la entidad TarmLecturaDetalle -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmLecturaDetalle p=(TarmLecturaDetalle)this.clone(); - p.setPk((TarmLecturaDetalleKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalleKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalleKey.java.svn-base deleted file mode 100644 index 6b86d30..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmLecturaDetalleKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMLECTURADETALLE*/ -@Embeddable -public class TarmLecturaDetalleKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CLECTURA", nullable=false,updatable=false) - -/** -* null -*/ -private Long clectura; - -@Column(name="CODIGOTAG", nullable=false,updatable=false) - -/** -* null -*/ -private String codigotag; - -/**Contructor por defecto*/ -public TarmLecturaDetalleKey(){} -/**Contructor de TarmLecturaDetalleKey -@param pClectura null -@param pCodigotag null -*/ -public TarmLecturaDetalleKey(Long pClectura,String pCodigotag){ - clectura=pClectura; - codigotag=pCodigotag; -} -/**Obtiene el valor de clectura -@return valor de clectura*/ -public Long getClectura(){ - return clectura; -} -/**Fija el valor de clectura -@param pClectura nuevo Valor de clectura*/ -public void setClectura(Long pClectura){ - clectura=pClectura; -} - -/**Obtiene el valor de codigotag -@return valor de codigotag*/ -public String getCodigotag(){ - return codigotag; -} -/**Fija el valor de codigotag -@param pCodigotag nuevo Valor de codigotag*/ -public void setCodigotag(String pCodigotag){ - codigotag=pCodigotag; -} - -/**Implementacion de la comparacion de TarmLecturaDetalleKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmLecturaDetalleKey))return false; - TarmLecturaDetalleKey that = (TarmLecturaDetalleKey) o; - if (this.getClectura() == null || that.getClectura() == null){ - return false; - } - if (! this.getClectura().equals(that.getClectura())){ - return false; - } - if (this.getCodigotag() == null || that.getCodigotag() == null){ - return false; - } - if (! this.getCodigotag().equals(that.getCodigotag())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmLecturaDetalleKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getClectura() == null ? 0 : this.getClectura().hashCode()); - result = result * 37 + (this.getCodigotag() == null ? 0 : this.getCodigotag().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArma.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArma.java.svn-base deleted file mode 100644 index 505e974..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArma.java.svn-base +++ /dev/null @@ -1,149 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTAGARMA*/ -@Entity(name="TarmTagArma") -@Table(name="TARMTAGARMA") -public class TarmTagArma extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ - -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTagArma -*/ -@EmbeddedId -private TarmTagArmaKey pk; -@Column(name="FECHA", nullable=true) - -/** -* Fecha de vigencia del Tag -*/ -private Timestamp fecha; - -/**Contructor por defecto*/ -public TarmTagArma(){ -} -/**Contructor de TarmTagArma -@param pPk Clave Primaria del entity -*/ -public TarmTagArma(TarmTagArmaKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTagArma -*/ -public static TarmTagArma find(EntityManager pEntityManager,TarmTagArmaKey pKey) throws Exception{ - TarmTagArma obj = pEntityManager.find(TarmTagArma.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTagArma -@return El objeto que referencia a la Clave primaria de TarmTagArma -*/ -public TarmTagArmaKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTagArma -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTagArma -*/ -public void setPk(TarmTagArmaKey pPk){ - pk=pPk; -} -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTagArma))return false; - TarmTagArma that = (TarmTagArma) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTagArma -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTagArma -*/ -public Object createInstance(){ - TarmTagArma instance=new TarmTagArma(); - instance.setPk(new TarmTagArmaKey()); - return instance; -} -/**Clona la entidad TarmTagArma -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTagArma p=(TarmTagArma)this.clone(); - p.setPk((TarmTagArmaKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArmaKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArmaKey.java.svn-base deleted file mode 100644 index 00bd9d5..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/inte/.svn/text-base/TarmTagArmaKey.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.persistence.parmas.inte; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMTAGARMA*/ -@Embeddable -public class TarmTagArmaKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ - -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CARMA", nullable=false,updatable=false) - -/** -* Codigo del arma -*/ -private String carma; - -@Column(name="CTAG", nullable=false,updatable=false) - -/** -* Codigo del Tag -*/ -private String ctag; - -/**Contructor por defecto*/ -public TarmTagArmaKey(){} -/**Contructor de TarmTagArmaKey -@param pCarma Codigo del arma -@param pCtag Codigo del Tag -*/ -public TarmTagArmaKey(String pCarma,String pCtag){ - carma=pCarma; - ctag=pCtag; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de ctag -@return valor de ctag*/ -public String getCtag(){ - return ctag; -} -/**Fija el valor de ctag -@param pCtag nuevo Valor de ctag*/ -public void setCtag(String pCtag){ - ctag=pCtag; -} - -/**Implementacion de la comparacion de TarmTagArmaKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmTagArmaKey))return false; - TarmTagArmaKey that = (TarmTagArmaKey) o; - if (this.getCarma() == null || that.getCarma() == null){ - return false; - } - if (! this.getCarma().equals(that.getCarma())){ - return false; - } - if (this.getCtag() == null || that.getCtag() == null){ - return false; - } - if (! this.getCtag().equals(that.getCtag())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmTagArmaKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCarma() == null ? 0 : this.getCarma().hashCode()); - result = result * 37 + (this.getCtag() == null ? 0 : this.getCtag().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/entries deleted file mode 100644 index 0b86064..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/entries +++ /dev/null @@ -1,572 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmCentroControlJur.java -file - - - - -2022-07-28T03:40:27.835739Z -7eb557e4a49c961ce1dc0e9f18fc8b6f -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5785 - -TarmComercianteCupo.java -file - - - - -2022-07-28T03:40:27.835739Z -ed7e448a12b2d395727ac7208ec6d473 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -10102 - -TarmOrigenTramiteKey.java -file - - - - -2022-07-28T03:40:27.836739Z -6255607b2dae1240cf14a7b6cfe45984 -2015-12-29T13:58:56.911893Z -4357 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4455 - -TarmTramitesAtendidos.java -file - - - - -2022-07-28T03:40:27.836739Z -13dc6e68d99a963116592fc92ae6dae8 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6512 - -TarmRequisito.java -file - - - - -2022-07-28T03:40:27.836739Z -24b7145ce9ec3f30f655d925ddb6815b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5696 - -TarmTipoArmaExplosivo.java -file - - - - -2022-07-28T03:40:27.837739Z -5c1faa39ee286885456a30620ac93e8b -2015-01-08T09:24:45.800079Z -3722 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -9186 - -TarmSitioAlmacenamiento.java -file - - - - -2022-07-28T03:40:27.837739Z -b61154aa92fb3ee940b38497f5e52846 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -11018 - -TarmTipoSancion.java -file - - - - -2022-07-28T03:40:27.837739Z -ee931c05c7b385e40d9bb71ef9752b55 -2015-01-08T09:24:45.800079Z -3722 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -10576 - -TarmRequisitoPorTipoTramite.java -file - - - - -2022-07-28T03:40:27.838739Z -07c0d9b2e50dd674bbf852d6f4bb667a -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5393 - -TarmCentroControl.java -file - - - - -2022-07-28T03:40:27.838739Z -ce4bf2962c1c4674638da60da40bcde8 -2015-01-29T14:23:34.302245Z -3822 -cpiedra - - - - - - - - - - - - - - - - - - - - - -12263 - -TarmUnidadTipo.java -file - - - - -2022-07-28T03:40:27.838739Z -3a033d0058cee82b8041abc2f21283d7 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4587 - -TarmRequisitoPorTipoTramiteKey.java -file - - - - -2022-07-28T03:40:27.838739Z -5e7866aa75a7b0721fb197f227532462 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3486 - -TarmTipoTramite.java -file - - - - -2022-07-28T03:40:27.839739Z -acf07e9b86a96fd68f136561eb85505d -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4519 - -TarmTramite.java -file - - - - -2022-07-28T03:40:27.839739Z -bc295b48ba31ee0063f4446901783292 -2015-12-29T14:02:56.878326Z -4358 -fpazmino -has-props - - - - - - - - - - - - - - - - - - - - -24425 - -TarmOrigenTramite.java -file - - - - -2022-07-28T03:40:27.839739Z -8ae1cb8c89de7198cbe0cbc0aec18fec -2015-12-29T13:58:56.911893Z -4357 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3717 - -TarmUnidadTipoKey.java -file - - - - -2022-07-28T03:40:27.839739Z -26a8f58116eda7bf6449df6d14ace435 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7704 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmSitioAlmacenamiento.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmSitioAlmacenamiento.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmSitioAlmacenamiento.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoArmaExplosivo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoArmaExplosivo.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoArmaExplosivo.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoSancion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoSancion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTipoSancion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTramite.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/prop-base/TarmTramite.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.java.svn-base deleted file mode 100644 index 7a445f0..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControl.java.svn-base +++ /dev/null @@ -1,461 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCENTROCONTROL*/ -@Entity(name="TarmCentroControl") -@Table(name="TARMCENTROCONTROL") -public class TarmCentroControl extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCentroControl -*/ -@Id -@Column(name="CCENTROCONTROL" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CCENTROCONTROL"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="CUPOSLIBRESULTIMODIA", nullable=true) - -/** -* CUANTOS TRAMITES PUEDO REALIZAR EN LA FECHAPROXIMOTRAMITE PARA COMPLETAR EL NUMERO DE TRAMITES POR DIA DEL CENTRO -*/ -private Integer cuposlibresultimodia; - -@Column(name="DIRECCION", nullable=true) - -/** -* null -*/ -private String direccion; - -@Column(name="NOMBREINSTITUCION", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String nombreinstitucion; - -@Column(name="CANTONCODE", nullable=true) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="NOMBREINSTITUCIONCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String nombreinstitucioncodigo; - -@Column(name="TRAMITESPORDIA", nullable=true) - -/** -* null -*/ -private Integer tramitespordia; - -@Column(name="GRADO", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String grado; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="INSTITUCIONTIPO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String instituciontipo; - -@Column(name="INSTITUCION", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String institucion; - -@Column(name="FECHAPROXIMOTRAMITE", nullable=true) - -/** -* FECHA DE ATENCION AL USUARIO PARA EL PROXIMO TRAMITE DE TIPO PERMISO QUE INGRESE -*/ -private Date fechaproximotramite; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia -*/ -private String parroquiacode; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DATETO", nullable=true) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="GRADOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String gradocodigo; - -/**Contructor por defecto*/ -public TarmCentroControl(){ -} -/**Contructor de TarmCentroControl -@param pPk Clave Primaria del entity -*/ -public TarmCentroControl(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCentroControl -*/ -public static TarmCentroControl find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCentroControl obj = pEntityManager.find(TarmCentroControl.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCentroControl -@return El objeto que referencia a la Clave primaria de TarmCentroControl -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCentroControl -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCentroControl -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de cuposlibresultimodia -@return valor de cuposlibresultimodia*/ -public Integer getCuposlibresultimodia(){ - return cuposlibresultimodia; -} -/**Fija el valor de cuposlibresultimodia -@param pCuposlibresultimodia nuevo Valor de cuposlibresultimodia*/ -public void setCuposlibresultimodia(Integer pCuposlibresultimodia){ - cuposlibresultimodia=pCuposlibresultimodia; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de nombreinstitucion -@return valor de nombreinstitucion*/ -public String getNombreinstitucion(){ - return nombreinstitucion; -} -/**Fija el valor de nombreinstitucion -@param pNombreinstitucion nuevo Valor de nombreinstitucion*/ -public void setNombreinstitucion(String pNombreinstitucion){ - nombreinstitucion=pNombreinstitucion; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de nombreinstitucioncodigo -@return valor de nombreinstitucioncodigo*/ -public String getNombreinstitucioncodigo(){ - return nombreinstitucioncodigo; -} -/**Fija el valor de nombreinstitucioncodigo -@param pNombreinstitucioncodigo nuevo Valor de nombreinstitucioncodigo*/ -public void setNombreinstitucioncodigo(String pNombreinstitucioncodigo){ - nombreinstitucioncodigo=pNombreinstitucioncodigo; -} - -/**Obtiene el valor de tramitespordia -@return valor de tramitespordia*/ -public Integer getTramitespordia(){ - return tramitespordia; -} -/**Fija el valor de tramitespordia -@param pTramitespordia nuevo Valor de tramitespordia*/ -public void setTramitespordia(Integer pTramitespordia){ - tramitespordia=pTramitespordia; -} - -/**Obtiene el valor de grado -@return valor de grado*/ -public String getGrado(){ - return grado; -} -/**Fija el valor de grado -@param pGrado nuevo Valor de grado*/ -public void setGrado(String pGrado){ - grado=pGrado; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de instituciontipo -@return valor de instituciontipo*/ -public String getInstituciontipo(){ - return instituciontipo; -} -/**Fija el valor de instituciontipo -@param pInstituciontipo nuevo Valor de instituciontipo*/ -public void setInstituciontipo(String pInstituciontipo){ - instituciontipo=pInstituciontipo; -} - -/**Obtiene el valor de institucion -@return valor de institucion*/ -public String getInstitucion(){ - return institucion; -} -/**Fija el valor de institucion -@param pInstitucion nuevo Valor de institucion*/ -public void setInstitucion(String pInstitucion){ - institucion=pInstitucion; -} - -/**Obtiene el valor de fechaproximotramite -@return valor de fechaproximotramite*/ -public Date getFechaproximotramite(){ - return fechaproximotramite; -} -/**Fija el valor de fechaproximotramite -@param pFechaproximotramite nuevo Valor de fechaproximotramite*/ -public void setFechaproximotramite(Date pFechaproximotramite){ - fechaproximotramite=pFechaproximotramite; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de gradocodigo -@return valor de gradocodigo*/ -public String getGradocodigo(){ - return gradocodigo; -} -/**Fija el valor de gradocodigo -@param pGradocodigo nuevo Valor de gradocodigo*/ -public void setGradocodigo(String pGradocodigo){ - gradocodigo=pGradocodigo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCentroControl))return false; - TarmCentroControl that = (TarmCentroControl) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCentroControl -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCentroControl -*/ -public Object createInstance(){ - TarmCentroControl instance=new TarmCentroControl(); - return instance; -} -/**Clona la entidad TarmCentroControl -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCentroControl p=(TarmCentroControl)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControlJur.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControlJur.java.svn-base deleted file mode 100644 index 5a68b59..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmCentroControlJur.java.svn-base +++ /dev/null @@ -1,202 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCENCONTROLJUR*/ -@Entity(name="TarmCentroControlJur") -@Table(name="TARMCENCONTROLJUR") -public class TarmCentroControlJur extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCentroControlJur -*/ -@Id -@Column(name="CJURISDICCION" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CJURISDICCION"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* Codigo de centro de control de armas -*/ -private String ccentrocontrol; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Transient -private String provincianombre; - -/**Contructor por defecto*/ -public TarmCentroControlJur(){ -} -/**Contructor de TarmCentroControlJur -@param pPk Clave Primaria del entity -*/ -public TarmCentroControlJur(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCentroControlJur -*/ -public static TarmCentroControlJur find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCentroControlJur obj = pEntityManager.find(TarmCentroControlJur.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCentroControlJur -@return El objeto que referencia a la Clave primaria de TarmCentroControlJur -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCentroControlJur -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCentroControlJur -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCentroControlJur))return false; - TarmCentroControlJur that = (TarmCentroControlJur) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCentroControlJur -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCentroControlJur -*/ -public Object createInstance(){ - TarmCentroControlJur instance=new TarmCentroControlJur(); - return instance; -} -/**Clona la entidad TarmCentroControlJur -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCentroControlJur p=(TarmCentroControlJur)this.clone(); - return p; -} -public String getProvincianombre() { - return provincianombre; -} -public void setProvincianombre(String provincianombre) { - this.provincianombre = provincianombre; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmComercianteCupo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmComercianteCupo.java.svn-base deleted file mode 100644 index 34cc57f..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmComercianteCupo.java.svn-base +++ /dev/null @@ -1,353 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCOMERCIANTECUPO*/ -@Entity(name="TarmComercianteCupo") -@Table(name="TARMCOMERCIANTECUPO") -public class TarmComercianteCupo extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmComercianteCupo -*/ -@Id -@Column(name="CCOMCUPO" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CCOMCUPO"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="CLASE", nullable=true) - -/** -* Codigo de catalogo 01 Explosivo, 02 Arma de Fuego -*/ -private String clase; - -@Column(name="CLASECODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipo de clase de arma -*/ -private String clasecodigo; - -@Column(name="TIPOARMAEXPLOSIVO", nullable=true) - -/** -* Codigo de catalogo 01 Revolver, 02 Plvora -*/ -private String tipoarmaexplosivo; - -@Column(name="TIPOARMAEXPLOSIVOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de armaexplosivo -*/ -private String tipoarmaexplosivocodigo; - -@Column(name="UNIDADMEDIDAPESO", nullable=true) - -/** -* Codigo de catalogo 01 KG, 02 Unidad -*/ -private String unidadmedidapeso; - -@Column(name="UNIDADMEDIDAPESOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de pesounidad -*/ -private String unidadmedidapesocodigo; - -@Column(name="PERSONCODIGO", nullable=true) - -/** -* Codigo de persona comerciante -*/ -private Integer personcodigo; - -@Column(name="TIPOREGISTRO", nullable=true) - -/** -* Codigo de catalogo 01 Importacin, 02 Produccin -*/ -private String tiporegistro; - -@Column(name="TIPOREGISTROCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de registro -*/ -private String tiporegistrocodigo; - -@Column(name="CUPOUNIDAD", nullable=true) - -/** -* Valor de cupo asignado a un comerciante por el tipo de registro, clase, tipoarmaexplosivo. -*/ -private BigDecimal cupounidad; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Versin del Registro -*/ -private Integer recordversion; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* Fecha del registro -*/ -private Timestamp fecharegistro; - -/**Contructor por defecto*/ -public TarmComercianteCupo(){ -} -/**Contructor de TarmComercianteCupo -@param pPk Clave Primaria del entity -*/ -public TarmComercianteCupo(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmComercianteCupo -*/ -public static TarmComercianteCupo find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmComercianteCupo obj = pEntityManager.find(TarmComercianteCupo.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmComercianteCupo -@return El objeto que referencia a la Clave primaria de TarmComercianteCupo -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmComercianteCupo -@param pPk El objeto que referencia a la nueva Clave primaria de TarmComercianteCupo -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de clasecodigo -@return valor de clasecodigo*/ -public String getClasecodigo(){ - return clasecodigo; -} -/**Fija el valor de clasecodigo -@param pClasecodigo nuevo Valor de clasecodigo*/ -public void setClasecodigo(String pClasecodigo){ - clasecodigo=pClasecodigo; -} - -/**Obtiene el valor de tipoarmaexplosivo -@return valor de tipoarmaexplosivo*/ -public String getTipoarmaexplosivo(){ - return tipoarmaexplosivo; -} -/**Fija el valor de tipoarmaexplosivo -@param pTipoarmaexplosivo nuevo Valor de tipoarmaexplosivo*/ -public void setTipoarmaexplosivo(String pTipoarmaexplosivo){ - tipoarmaexplosivo=pTipoarmaexplosivo; -} - -/**Obtiene el valor de tipoarmaexplosivocodigo -@return valor de tipoarmaexplosivocodigo*/ -public String getTipoarmaexplosivocodigo(){ - return tipoarmaexplosivocodigo; -} -/**Fija el valor de tipoarmaexplosivocodigo -@param pTipoarmaexplosivocodigo nuevo Valor de tipoarmaexplosivocodigo*/ -public void setTipoarmaexplosivocodigo(String pTipoarmaexplosivocodigo){ - tipoarmaexplosivocodigo=pTipoarmaexplosivocodigo; -} - -/**Obtiene el valor de unidadmedidapeso -@return valor de unidadmedidapeso*/ -public String getUnidadmedidapeso(){ - return unidadmedidapeso; -} -/**Fija el valor de unidadmedidapeso -@param pUnidadmedidapeso nuevo Valor de unidadmedidapeso*/ -public void setUnidadmedidapeso(String pUnidadmedidapeso){ - unidadmedidapeso=pUnidadmedidapeso; -} - -/**Obtiene el valor de unidadmedidapesocodigo -@return valor de unidadmedidapesocodigo*/ -public String getUnidadmedidapesocodigo(){ - return unidadmedidapesocodigo; -} -/**Fija el valor de unidadmedidapesocodigo -@param pUnidadmedidapesocodigo nuevo Valor de unidadmedidapesocodigo*/ -public void setUnidadmedidapesocodigo(String pUnidadmedidapesocodigo){ - unidadmedidapesocodigo=pUnidadmedidapesocodigo; -} - -/**Obtiene el valor de personcodigo -@return valor de personcodigo*/ -public Integer getPersoncodigo(){ - return personcodigo; -} -/**Fija el valor de personcodigo -@param pPersoncodigo nuevo Valor de personcodigo*/ -public void setPersoncodigo(Integer pPersoncodigo){ - personcodigo=pPersoncodigo; -} - -/**Obtiene el valor de tiporegistro -@return valor de tiporegistro*/ -public String getTiporegistro(){ - return tiporegistro; -} -/**Fija el valor de tiporegistro -@param pTiporegistro nuevo Valor de tiporegistro*/ -public void setTiporegistro(String pTiporegistro){ - tiporegistro=pTiporegistro; -} - -/**Obtiene el valor de tiporegistrocodigo -@return valor de tiporegistrocodigo*/ -public String getTiporegistrocodigo(){ - return tiporegistrocodigo; -} -/**Fija el valor de tiporegistrocodigo -@param pTiporegistrocodigo nuevo Valor de tiporegistrocodigo*/ -public void setTiporegistrocodigo(String pTiporegistrocodigo){ - tiporegistrocodigo=pTiporegistrocodigo; -} - -/**Obtiene el valor de cupounidad -@return valor de cupounidad*/ -public BigDecimal getCupounidad(){ - return cupounidad; -} -/**Fija el valor de cupounidad -@param pCupounidad nuevo Valor de cupounidad*/ -public void setCupounidad(BigDecimal pCupounidad){ - cupounidad=pCupounidad; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Timestamp getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Timestamp pFecharegistro){ - fecharegistro=pFecharegistro; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmComercianteCupo))return false; - TarmComercianteCupo that = (TarmComercianteCupo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmComercianteCupo -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmComercianteCupo -*/ -public Object createInstance(){ - TarmComercianteCupo instance=new TarmComercianteCupo(); - return instance; -} -/**Clona la entidad TarmComercianteCupo -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmComercianteCupo p=(TarmComercianteCupo)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramite.java.svn-base deleted file mode 100644 index 9b476ce..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramite.java.svn-base +++ /dev/null @@ -1,121 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMORIGENTRAMITE*/ -@Entity(name="TarmOrigenTramite") -@Table(name="TARMORIGENTRAMITE") -public class TarmOrigenTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmOrigenTramite -*/ -@EmbeddedId -private TarmOrigenTramiteKey pk; -/**Contructor por defecto*/ -public TarmOrigenTramite(){ -} -/**Contructor de TarmOrigenTramite -@param pPk Clave Primaria del entity -*/ -public TarmOrigenTramite(TarmOrigenTramiteKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmOrigenTramite -*/ -public static TarmOrigenTramite find(EntityManager pEntityManager,TarmOrigenTramiteKey pKey) throws Exception{ - TarmOrigenTramite obj = pEntityManager.find(TarmOrigenTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmOrigenTramite -@return El objeto que referencia a la Clave primaria de TarmOrigenTramite -*/ -public TarmOrigenTramiteKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmOrigenTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmOrigenTramite -*/ -public void setPk(TarmOrigenTramiteKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmOrigenTramite))return false; - TarmOrigenTramite that = (TarmOrigenTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmOrigenTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmOrigenTramite -*/ -public Object createInstance(){ - TarmOrigenTramite instance=new TarmOrigenTramite(); - instance.setPk(new TarmOrigenTramiteKey()); - return instance; -} -/**Clona la entidad TarmOrigenTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmOrigenTramite p=(TarmOrigenTramite)this.clone(); - p.setPk((TarmOrigenTramiteKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramiteKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramiteKey.java.svn-base deleted file mode 100644 index 3de8628..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmOrigenTramiteKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMORIGENTRAMITE*/ -@Embeddable -public class TarmOrigenTramiteKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CTRAMITE", nullable=false,updatable=false) - -/** -* Codigo de tramite -*/ -private Long ctramite; - -@Column(name="ORIGENCATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de catalogcode de origen -*/ -private String origencatalogcode; - -@Column(name="ORIGENCATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo de origen -*/ -private String origencatalog; - -/**Contructor por defecto*/ -public TarmOrigenTramiteKey(){} -/**Contructor de TarmOrigenTramiteKey -@param pCtramite Codigo de tramite -@param pOrigencatalogcode Codigo de catalogcode de origen -@param pOrigencatalog Codigo de catalogo de origen -*/ -public TarmOrigenTramiteKey(Long pCtramite,String pOrigencatalogcode,String pOrigencatalog){ - ctramite=pCtramite; - origencatalogcode=pOrigencatalogcode; - origencatalog=pOrigencatalog; -} -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de origencatalogcode -@return valor de origencatalogcode*/ -public String getOrigencatalogcode(){ - return origencatalogcode; -} -/**Fija el valor de origencatalogcode -@param pOrigencatalogcode nuevo Valor de origencatalogcode*/ -public void setOrigencatalogcode(String pOrigencatalogcode){ - origencatalogcode=pOrigencatalogcode; -} - -/**Obtiene el valor de origencatalog -@return valor de origencatalog*/ -public String getOrigencatalog(){ - return origencatalog; -} -/**Fija el valor de origencatalog -@param pOrigencatalog nuevo Valor de origencatalog*/ -public void setOrigencatalog(String pOrigencatalog){ - origencatalog=pOrigencatalog; -} - -/**Implementacion de la comparacion de TarmOrigenTramiteKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmOrigenTramiteKey))return false; - TarmOrigenTramiteKey that = (TarmOrigenTramiteKey) o; - if (this.getCtramite() == null || that.getCtramite() == null){ - return false; - } - if (! this.getCtramite().equals(that.getCtramite())){ - return false; - } - if (this.getOrigencatalogcode() == null || that.getOrigencatalogcode() == null){ - return false; - } - if (! this.getOrigencatalogcode().equals(that.getOrigencatalogcode())){ - return false; - } - if (this.getOrigencatalog() == null || that.getOrigencatalog() == null){ - return false; - } - if (! this.getOrigencatalog().equals(that.getOrigencatalog())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmOrigenTramiteKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCtramite() == null ? 0 : this.getCtramite().hashCode()); - result = result * 37 + (this.getOrigencatalogcode() == null ? 0 : this.getOrigencatalogcode().hashCode()); - result = result * 37 + (this.getOrigencatalog() == null ? 0 : this.getOrigencatalog().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisito.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisito.java.svn-base deleted file mode 100644 index c2eec12..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisito.java.svn-base +++ /dev/null @@ -1,211 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMREQUISITO*/ -@Entity(name="TarmRequisito") -@Table(name="TARMREQUISITO") -public class TarmRequisito extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmRequisito -*/ -@Id -@Column(name="CREQUISITO" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CREQUISITO"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; - -@Column(name="NOMBRE", nullable=false) - -/** -* Descripcion del requisito -*/ -private String nombre; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPCIONCORTA", nullable=true) - -/** -* Descripcion corta del requisito -*/ -private String descripcioncorta; - -@Column(name="ACTIVE", nullable=true) -/** -* Activo -*/ -private String active; - -/**Contructor por defecto*/ -public TarmRequisito(){ -} -/**Contructor de TarmRequisito -@param pPk Clave Primaria del entity -@param pNombre Descripcion del requisito -*/ -public TarmRequisito(String pPk,String pNombre){ - this(); - pk=pPk; - nombre=pNombre; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmRequisito -*/ -public static TarmRequisito find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmRequisito obj = pEntityManager.find(TarmRequisito.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmRequisito -@return El objeto que referencia a la Clave primaria de TarmRequisito -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmRequisito -@param pPk El objeto que referencia a la nueva Clave primaria de TarmRequisito -*/ -public void setPk(String pPk){ - pk=pPk; - -} -/**Obtiene el valor de nombre -@return valor de nombre*/ -public String getNombre(){ - return nombre; -} -/**Fija el valor de nombre -@param pNombre nuevo Valor de nombre*/ -public void setNombre(String pNombre){ - nombre=pNombre; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmRequisito))return false; - TarmRequisito that = (TarmRequisito) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmRequisito -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmRequisito -*/ -public Object createInstance(){ - TarmRequisito instance=new TarmRequisito(); - return instance; -} -/**Clona la entidad TarmRequisito -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmRequisito p=(TarmRequisito)this.clone(); - return p; -} - -/**Obtiene el valor de descripcioncorta -@return valor de descripcioncorta*/ -public String getDescripcioncorta() { - return descripcioncorta; -} - -/**Fija el valor de descripcioncorta -@param pRecordversion nuevo Valor de descripcioncorta*/ -public void setDescripcioncorta(String descripcioncorta) { - this.descripcioncorta = descripcioncorta; -} -public String getActive() { - return active; -} -public void setActive(String active) { - this.active = active; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramite.java.svn-base deleted file mode 100644 index a1a3d78..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramite.java.svn-base +++ /dev/null @@ -1,182 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMREQUISITOPORTIPOTRAMITE*/ -@Entity(name="TarmRequisitoPorTipoTramite") -@Table(name="TARMREQUISITOPORTIPOTRAMITE") -public class TarmRequisitoPorTipoTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmRequisitoPorTipoTramite -*/ -@EmbeddedId -private TarmRequisitoPorTipoTramiteKey pk; -@Column(name="DEPOSITOPORTRAMITE", nullable=true) - -/** -* null -*/ -private String depositoportramite; - -@Column(name="DEPOSITOPORCUSTODIO", nullable=true) - -/** -* null -*/ -private String depositoporcustodio; - -@Column(name="ACTIVE", nullable=true) - -/** -* null -*/ -private String active; - -/**Contructor por defecto*/ -public TarmRequisitoPorTipoTramite(){ -} -/**Contructor de TarmRequisitoPorTipoTramite -@param pPk Clave Primaria del entity -*/ -public TarmRequisitoPorTipoTramite(TarmRequisitoPorTipoTramiteKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmRequisitoPorTipoTramite -*/ -public static TarmRequisitoPorTipoTramite find(EntityManager pEntityManager,TarmRequisitoPorTipoTramiteKey pKey) throws Exception{ - TarmRequisitoPorTipoTramite obj = pEntityManager.find(TarmRequisitoPorTipoTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmRequisitoPorTipoTramite -@return El objeto que referencia a la Clave primaria de TarmRequisitoPorTipoTramite -*/ -public TarmRequisitoPorTipoTramiteKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmRequisitoPorTipoTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmRequisitoPorTipoTramite -*/ -public void setPk(TarmRequisitoPorTipoTramiteKey pPk){ - pk=pPk; -} -/**Obtiene el valor de depositoportramite -@return valor de depositoportramite*/ -public String getDepositoportramite(){ - return depositoportramite; -} -/**Fija el valor de depositoportramite -@param pDepositoportramite nuevo Valor de depositoportramite*/ -public void setDepositoportramite(String pDepositoportramite){ - depositoportramite=pDepositoportramite; -} - -/**Obtiene el valor de depositoporcustodio -@return valor de depositoporcustodio*/ -public String getDepositoporcustodio(){ - return depositoporcustodio; -} -/**Fija el valor de depositoporcustodio -@param pDepositoporcustodio nuevo Valor de depositoporcustodio*/ -public void setDepositoporcustodio(String pDepositoporcustodio){ - depositoporcustodio=pDepositoporcustodio; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive() { - return active; -} - -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive) { - this.active = pActive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmRequisitoPorTipoTramite))return false; - TarmRequisitoPorTipoTramite that = (TarmRequisitoPorTipoTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmRequisitoPorTipoTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmRequisitoPorTipoTramite -*/ -public Object createInstance(){ - TarmRequisitoPorTipoTramite instance=new TarmRequisitoPorTipoTramite(); - instance.setPk(new TarmRequisitoPorTipoTramiteKey()); - return instance; -} -/**Clona la entidad TarmRequisitoPorTipoTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmRequisitoPorTipoTramite p=(TarmRequisitoPorTipoTramite)this.clone(); - p.setPk((TarmRequisitoPorTipoTramiteKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramiteKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramiteKey.java.svn-base deleted file mode 100644 index 8a86746..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmRequisitoPorTipoTramiteKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMREQUISITOPORTIPOTRAMITE*/ -@Embeddable -public class TarmRequisitoPorTipoTramiteKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CREQUISITO", nullable=false,updatable=false) - -/** -* Codigo de requisito -*/ -private String crequisito; - -@Column(name="CTRAMITE", nullable=false,updatable=false) - -/** -* null -*/ -private Long ctramite; - -/**Contructor por defecto*/ -public TarmRequisitoPorTipoTramiteKey(){} -/**Contructor de TarmRequisitoPorTipoTramiteKey -@param pCrequisito Codigo de requisito -@param pCtramite null -*/ -public TarmRequisitoPorTipoTramiteKey(String pCrequisito,Long pCtramite){ - crequisito=pCrequisito; - ctramite=pCtramite; -} -/**Obtiene el valor de crequisito -@return valor de crequisito*/ -public String getCrequisito(){ - return crequisito; -} -/**Fija el valor de crequisito -@param pCrequisito nuevo Valor de crequisito*/ -public void setCrequisito(String pCrequisito){ - crequisito=pCrequisito; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Implementacion de la comparacion de TarmRequisitoPorTipoTramiteKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmRequisitoPorTipoTramiteKey))return false; - TarmRequisitoPorTipoTramiteKey that = (TarmRequisitoPorTipoTramiteKey) o; - if (this.getCrequisito() == null || that.getCrequisito() == null){ - return false; - } - if (! this.getCrequisito().equals(that.getCrequisito())){ - return false; - } - if (this.getCtramite() == null || that.getCtramite() == null){ - return false; - } - if (! this.getCtramite().equals(that.getCtramite())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmRequisitoPorTipoTramiteKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCrequisito() == null ? 0 : this.getCrequisito().hashCode()); - result = result * 37 + (this.getCtramite() == null ? 0 : this.getCtramite().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmSitioAlmacenamiento.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmSitioAlmacenamiento.java.svn-base deleted file mode 100644 index 70ca38d..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmSitioAlmacenamiento.java.svn-base +++ /dev/null @@ -1,435 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSITIOALMACENAMIENTO*/ -@Entity(name="TarmSitioAlmacenamiento") -@Table(name="TARMSITIOALMACENAMIENTO") -public class TarmSitioAlmacenamiento extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSitioAlmacenamiento -*/ -@Id -@Column(name="CSITIOALMACENAMIENTO" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CSITIOALMACENAMIENTO"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="TIPOCOMERCIO", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tipocomercio; - -@Column(name="TIPOCOMERCIOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String tipocomerciocodigo; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=true) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia -*/ -private String parroquiacode; - -@Column(name="CITYCODE", nullable=true) - -/** -* Codigo de cuidad -*/ -private String citycode; - -@Column(name="BODEGA", nullable=true) - -/** -* null -*/ -private String bodega; - -@Column(name="DIRECCION", nullable=true) - -/** -* null -*/ -private String direccion; - -@Column(name="LATITUD", nullable=true) - -/** -* null -*/ -private BigDecimal latitud; - -@Column(name="LONGITUD", nullable=true) - -/** -* null -*/ -private BigDecimal longitud; - -@Column(name="RESPONSABLE", nullable=true) - -/** -* null -*/ -private String responsable; - -@Column(name="IDENTIFICACION", nullable=true) - -/** -* null -*/ -private String identificacion; - -@Column(name="TELEFONO", nullable=true) - -/** -* Campo qu registra el Telfono de la bodega -*/ -private String telefono; - -@Column(name="REFERENCIA", nullable=true) - -/** -* Campo que registra la referencia deonde esta localizada la bodega -*/ -private String referencia; - -@Column(name="ESTADO", nullable=true) - -/** -* Campo que contiene el estado del registro -*/ -private String estado; - -/**Contructor por defecto*/ -public TarmSitioAlmacenamiento(){ -} -/**Contructor de TarmSitioAlmacenamiento -@param pPk Clave Primaria del entity -*/ -public TarmSitioAlmacenamiento(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSitioAlmacenamiento -*/ -public static TarmSitioAlmacenamiento find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmSitioAlmacenamiento obj = pEntityManager.find(TarmSitioAlmacenamiento.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSitioAlmacenamiento -@return El objeto que referencia a la Clave primaria de TarmSitioAlmacenamiento -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSitioAlmacenamiento -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSitioAlmacenamiento -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de tipocomercio -@return valor de tipocomercio*/ -public String getTipocomercio(){ - return tipocomercio; -} -/**Fija el valor de tipocomercio -@param pTipocomercio nuevo Valor de tipocomercio*/ -public void setTipocomercio(String pTipocomercio){ - tipocomercio=pTipocomercio; -} - -/**Obtiene el valor de tipocomerciocodigo -@return valor de tipocomerciocodigo*/ -public String getTipocomerciocodigo(){ - return tipocomerciocodigo; -} -/**Fija el valor de tipocomerciocodigo -@param pTipocomerciocodigo nuevo Valor de tipocomerciocodigo*/ -public void setTipocomerciocodigo(String pTipocomerciocodigo){ - tipocomerciocodigo=pTipocomerciocodigo; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de bodega -@return valor de bodega*/ -public String getBodega(){ - return bodega; -} -/**Fija el valor de bodega -@param pBodega nuevo Valor de bodega*/ -public void setBodega(String pBodega){ - bodega=pBodega; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de latitud -@return valor de latitud*/ -public BigDecimal getLatitud(){ - return latitud; -} -/**Fija el valor de latitud -@param pLatitud nuevo Valor de latitud*/ -public void setLatitud(BigDecimal pLatitud){ - latitud=pLatitud; -} - -/**Obtiene el valor de longitud -@return valor de longitud*/ -public BigDecimal getLongitud(){ - return longitud; -} -/**Fija el valor de longitud -@param pLongitud nuevo Valor de longitud*/ -public void setLongitud(BigDecimal pLongitud){ - longitud=pLongitud; -} - -/**Obtiene el valor de responsable -@return valor de responsable*/ -public String getResponsable(){ - return responsable; -} -/**Fija el valor de responsable -@param pResponsable nuevo Valor de responsable*/ -public void setResponsable(String pResponsable){ - responsable=pResponsable; -} - -/**Obtiene el valor de identificacion -@return valor de identificacion*/ -public String getIdentificacion(){ - return identificacion; -} -/**Fija el valor de identificacion -@param pIdentificacion nuevo Valor de identificacion*/ -public void setIdentificacion(String pIdentificacion){ - identificacion=pIdentificacion; -} - -/**Obtiene el valor de telefono -@return valor de telefono*/ -public String getTelefono(){ - return telefono; -} -/**Fija el valor de telefono -@param pTelefono nuevo Valor de telefono*/ -public void setTelefono(String pTelefono){ - telefono=pTelefono; -} - -/**Obtiene el valor de referencia -@return valor de referencia*/ -public String getReferencia(){ - return referencia; -} -/**Fija el valor de referencia -@param pReferencia nuevo Valor de referencia*/ -public void setReferencia(String pReferencia){ - referencia=pReferencia; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSitioAlmacenamiento))return false; - TarmSitioAlmacenamiento that = (TarmSitioAlmacenamiento) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSitioAlmacenamiento -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSitioAlmacenamiento -*/ -public Object createInstance(){ - TarmSitioAlmacenamiento instance=new TarmSitioAlmacenamiento(); - return instance; -} -/**Clona la entidad TarmSitioAlmacenamiento -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSitioAlmacenamiento p=(TarmSitioAlmacenamiento)this.clone(); - return p; -} -public String getEstado() { - return estado; -} -public void setEstado(String estado) { - this.estado = estado; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoArmaExplosivo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoArmaExplosivo.java.svn-base deleted file mode 100644 index 4e8339c..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoArmaExplosivo.java.svn-base +++ /dev/null @@ -1,333 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTIPOARMAEXPLOSIVO*/ -@Entity(name="TarmTipoArmaExplosivo") -@Table(name="TARMTIPOARMAEXPLOSIVO") -public class TarmTipoArmaExplosivo extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTipoArmaExplosivo -*/ -@Id -@Column(name="CTIPOARMAEXPLOSIVO" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMTIPOARMAEXPLOSIVO"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="LONGITUD", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String longitud; - -@Column(name="LONGITUDCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String longitudcodigo; - -@Column(name="CALIBRE", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String calibre; - -@Column(name="CALIBRECODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String calibrecodigo; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="CLASE", nullable=true) - -/** -* null -*/ -private String clase; - -@Column(name="TIPOARMAEXPLOSIVO", nullable=true) - -/** -* null -*/ -private String tipoarmaexplosivo; - -@Column(name="TIPOARMAEXPLOSIVOCODIGO", nullable=true) - -/** -* null -*/ -private String tipoarmaexplosivocodigo; - -@Column(name="UNIDADMEDIDAPESO", nullable=true) - -/** -* null -*/ -private String unidadmedidapeso; - -@Column(name="UNIDADMEDIDAPESOCODIGO", nullable=true) - -/** -* null -*/ -private String unidadmedidapesocodigo; - -@Column(name="CLASECODIGO", nullable=true) - -/** -* null -*/ -private String clasecodigo; - -/**Contructor por defecto*/ -public TarmTipoArmaExplosivo(){ -} -/**Contructor de TarmTipoArmaExplosivo -@param pPk Clave Primaria del entity -*/ -public TarmTipoArmaExplosivo(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTipoArmaExplosivo -*/ -public static TarmTipoArmaExplosivo find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTipoArmaExplosivo obj = pEntityManager.find(TarmTipoArmaExplosivo.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTipoArmaExplosivo -@return El objeto que referencia a la Clave primaria de TarmTipoArmaExplosivo -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTipoArmaExplosivo -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTipoArmaExplosivo -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de longitud -@return valor de longitud*/ -public String getLongitud(){ - return longitud; -} -/**Fija el valor de longitud -@param pLongitud nuevo Valor de longitud*/ -public void setLongitud(String pLongitud){ - longitud=pLongitud; -} - -/**Obtiene el valor de longitudcodigo -@return valor de longitudcodigo*/ -public String getLongitudcodigo(){ - return longitudcodigo; -} -/**Fija el valor de longitudcodigo -@param pLongitudcodigo nuevo Valor de longitudcodigo*/ -public void setLongitudcodigo(String pLongitudcodigo){ - longitudcodigo=pLongitudcodigo; -} - -/**Obtiene el valor de calibre -@return valor de calibre*/ -public String getCalibre(){ - return calibre; -} -/**Fija el valor de calibre -@param pCalibre nuevo Valor de calibre*/ -public void setCalibre(String pCalibre){ - calibre=pCalibre; -} - -/**Obtiene el valor de calibrecodigo -@return valor de calibrecodigo*/ -public String getCalibrecodigo(){ - return calibrecodigo; -} -/**Fija el valor de calibrecodigo -@param pCalibrecodigo nuevo Valor de calibrecodigo*/ -public void setCalibrecodigo(String pCalibrecodigo){ - calibrecodigo=pCalibrecodigo; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de tipoarmaexplosivo -@return valor de tipoarmaexplosivo*/ -public String getTipoarmaexplosivo(){ - return tipoarmaexplosivo; -} -/**Fija el valor de tipoarmaexplosivo -@param pTipoarmaexplosivo nuevo Valor de tipoarmaexplosivo*/ -public void setTipoarmaexplosivo(String pTipoarmaexplosivo){ - tipoarmaexplosivo=pTipoarmaexplosivo; -} - -/**Obtiene el valor de tipoarmaexplosivocodigo -@return valor de tipoarmaexplosivocodigo*/ -public String getTipoarmaexplosivocodigo(){ - return tipoarmaexplosivocodigo; -} -/**Fija el valor de tipoarmaexplosivocodigo -@param pTipoarmaexplosivocodigo nuevo Valor de tipoarmaexplosivocodigo*/ -public void setTipoarmaexplosivocodigo(String pTipoarmaexplosivocodigo){ - tipoarmaexplosivocodigo=pTipoarmaexplosivocodigo; -} - -/**Obtiene el valor de unidadmedidapeso -@return valor de unidadmedidapeso*/ -public String getUnidadmedidapeso(){ - return unidadmedidapeso; -} -/**Fija el valor de unidadmedidapeso -@param pUnidadmedidapeso nuevo Valor de unidadmedidapeso*/ -public void setUnidadmedidapeso(String pUnidadmedidapeso){ - unidadmedidapeso=pUnidadmedidapeso; -} - -/**Obtiene el valor de unidadmedidapesocodigo -@return valor de unidadmedidapesocodigo*/ -public String getUnidadmedidapesocodigo(){ - return unidadmedidapesocodigo; -} -/**Fija el valor de unidadmedidapesocodigo -@param pUnidadmedidapesocodigo nuevo Valor de unidadmedidapesocodigo*/ -public void setUnidadmedidapesocodigo(String pUnidadmedidapesocodigo){ - unidadmedidapesocodigo=pUnidadmedidapesocodigo; -} - -/**Obtiene el valor de clasecodigo -@return valor de clasecodigo*/ -public String getClasecodigo(){ - return clasecodigo; -} -/**Fija el valor de clasecodigo -@param pClasecodigo nuevo Valor de clasecodigo*/ -public void setClasecodigo(String pClasecodigo){ - clasecodigo=pClasecodigo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTipoArmaExplosivo))return false; - TarmTipoArmaExplosivo that = (TarmTipoArmaExplosivo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTipoArmaExplosivo -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTipoArmaExplosivo -*/ -public Object createInstance(){ - TarmTipoArmaExplosivo instance=new TarmTipoArmaExplosivo(); - return instance; -} -/**Clona la entidad TarmTipoArmaExplosivo -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTipoArmaExplosivo p=(TarmTipoArmaExplosivo)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoSancion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoSancion.java.svn-base deleted file mode 100644 index 84bd52d..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoSancion.java.svn-base +++ /dev/null @@ -1,376 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTIPOSANCION*/ -@Entity(name="TarmTipoSancion") -@Table(name="TARMTIPOSANCION") -public class TarmTipoSancion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTipoSancion -*/ -@Id -@Column(name="CTIPOSANCION" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "TARMTIPOSANCION"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="CLASE", nullable=false) - -/** -* Codigo de catalogo correspondiente a la clase -*/ -private String clase; - -@Column(name="CLASECODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente a la clase -*/ -private String clasecodigo; - -@Column(name="FALTA", nullable=false) - -/** -* Codigo de catalogo correspondiente a la falta -*/ -private String falta; - -@Column(name="FALTACODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente a la falta -*/ -private String faltacodigo; - -@Column(name="TIPOFALTA", nullable=false) - -/** -* Codigo de catalogo correspondiente al tipo de falta -*/ -private String tipofalta; - -@Column(name="TIPOFALTACODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente al tipo de falta -*/ -private String tipofaltacodigo; - -@Column(name="TRAMITE", nullable=false) - -/** -* Codigo de catalogo correspondiente al tramite -*/ -private String tramite; - -@Column(name="TRAMITECODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente al tramite -*/ -private String tramitecodigo; - -@Column(name="SANCION", nullable=false) - -/** -* Codigo de catalogo correspondiente a la sancion -*/ -private String sancion; - -@Column(name="SANCIONCODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente a la sancion -*/ -private String sancioncodigo; - -@Column(name="TIEMPO", nullable=false) - -/** -* Codigo de catalogo correspondiente al tiempo de la sancion en dias -*/ -private String tiempo; - -@Column(name="TIEMPOCODIGO", nullable=false) - -/** -* Codigo de catalogcode correspondiente al tiempo de vigencia de la sancion en dias -*/ -private String tiempocodigo; - -/**Contructor por defecto*/ -public TarmTipoSancion(){ -} -/**Contructor de TarmTipoSancion -@param pPk Clave Primaria del entity -@param pClase Codigo de catalogo correspondiente a la clase -@param pClasecodigo Codigo de catalogcode correspondiente a la clase -@param pFalta Codigo de catalogo correspondiente a la falta -@param pFaltacodigo Codigo de catalogcode correspondiente a la falta -@param pTipofalta Codigo de catalogo correspondiente al tipo de falta -@param pTipofaltacodigo Codigo de catalogcode correspondiente al tipo de falta -@param pTramite Codigo de catalogo correspondiente al tramite -@param pTramitecodigo Codigo de catalogcode correspondiente al tramite -@param pSancion Codigo de catalogo correspondiente a la sancion -@param pSancioncodigo Codigo de catalogcode correspondiente a la sancion -@param pTiempo Codigo de catalogo correspondiente al tiempo de la sancion en dias -@param pTiempocodigo Codigo de catalogcode correspondiente al tiempo de vigencia de la sancion en dias -*/ -public TarmTipoSancion(String pPk,String pClase,String pClasecodigo,String pFalta,String pFaltacodigo,String pTipofalta,String pTipofaltacodigo,String pTramite,String pTramitecodigo,String pSancion,String pSancioncodigo,String pTiempo,String pTiempocodigo){ - this(); - pk=pPk; - clase=pClase; - clasecodigo=pClasecodigo; - falta=pFalta; - faltacodigo=pFaltacodigo; - tipofalta=pTipofalta; - tipofaltacodigo=pTipofaltacodigo; - tramite=pTramite; - tramitecodigo=pTramitecodigo; - sancion=pSancion; - sancioncodigo=pSancioncodigo; - tiempo=pTiempo; - tiempocodigo=pTiempocodigo; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTipoSancion -*/ -public static TarmTipoSancion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTipoSancion obj = pEntityManager.find(TarmTipoSancion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTipoSancion -@return El objeto que referencia a la Clave primaria de TarmTipoSancion -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTipoSancion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTipoSancion -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de clasecodigo -@return valor de clasecodigo*/ -public String getClasecodigo(){ - return clasecodigo; -} -/**Fija el valor de clasecodigo -@param pClasecodigo nuevo Valor de clasecodigo*/ -public void setClasecodigo(String pClasecodigo){ - clasecodigo=pClasecodigo; -} - -/**Obtiene el valor de falta -@return valor de falta*/ -public String getFalta(){ - return falta; -} -/**Fija el valor de falta -@param pFalta nuevo Valor de falta*/ -public void setFalta(String pFalta){ - falta=pFalta; -} - -/**Obtiene el valor de faltacodigo -@return valor de faltacodigo*/ -public String getFaltacodigo(){ - return faltacodigo; -} -/**Fija el valor de faltacodigo -@param pFaltacodigo nuevo Valor de faltacodigo*/ -public void setFaltacodigo(String pFaltacodigo){ - faltacodigo=pFaltacodigo; -} - -/**Obtiene el valor de tipofalta -@return valor de tipofalta*/ -public String getTipofalta(){ - return tipofalta; -} -/**Fija el valor de tipofalta -@param pTipofalta nuevo Valor de tipofalta*/ -public void setTipofalta(String pTipofalta){ - tipofalta=pTipofalta; -} - -/**Obtiene el valor de tipofaltacodigo -@return valor de tipofaltacodigo*/ -public String getTipofaltacodigo(){ - return tipofaltacodigo; -} -/**Fija el valor de tipofaltacodigo -@param pTipofaltacodigo nuevo Valor de tipofaltacodigo*/ -public void setTipofaltacodigo(String pTipofaltacodigo){ - tipofaltacodigo=pTipofaltacodigo; -} - -/**Obtiene el valor de tramite -@return valor de tramite*/ -public String getTramite(){ - return tramite; -} -/**Fija el valor de tramite -@param pTramite nuevo Valor de tramite*/ -public void setTramite(String pTramite){ - tramite=pTramite; -} - -/**Obtiene el valor de tramitecodigo -@return valor de tramitecodigo*/ -public String getTramitecodigo(){ - return tramitecodigo; -} -/**Fija el valor de tramitecodigo -@param pTramitecodigo nuevo Valor de tramitecodigo*/ -public void setTramitecodigo(String pTramitecodigo){ - tramitecodigo=pTramitecodigo; -} - -/**Obtiene el valor de sancion -@return valor de sancion*/ -public String getSancion(){ - return sancion; -} -/**Fija el valor de sancion -@param pSancion nuevo Valor de sancion*/ -public void setSancion(String pSancion){ - sancion=pSancion; -} - -/**Obtiene el valor de sancioncodigo -@return valor de sancioncodigo*/ -public String getSancioncodigo(){ - return sancioncodigo; -} -/**Fija el valor de sancioncodigo -@param pSancioncodigo nuevo Valor de sancioncodigo*/ -public void setSancioncodigo(String pSancioncodigo){ - sancioncodigo=pSancioncodigo; -} - -/**Obtiene el valor de tiempo -@return valor de tiempo*/ -public String getTiempo(){ - return tiempo; -} -/**Fija el valor de tiempo -@param pTiempo nuevo Valor de tiempo*/ -public void setTiempo(String pTiempo){ - tiempo=pTiempo; -} - -/**Obtiene el valor de tiempocodigo -@return valor de tiempocodigo*/ -public String getTiempocodigo(){ - return tiempocodigo; -} -/**Fija el valor de tiempocodigo -@param pTiempocodigo nuevo Valor de tiempocodigo*/ -public void setTiempocodigo(String pTiempocodigo){ - tiempocodigo=pTiempocodigo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTipoSancion))return false; - TarmTipoSancion that = (TarmTipoSancion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTipoSancion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTipoSancion -*/ -public Object createInstance(){ - TarmTipoSancion instance=new TarmTipoSancion(); - return instance; -} -/**Clona la entidad TarmTipoSancion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTipoSancion p=(TarmTipoSancion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoTramite.java.svn-base deleted file mode 100644 index 25a3d1b..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTipoTramite.java.svn-base +++ /dev/null @@ -1,167 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTIPOTRAMITE*/ -@Entity(name="TarmTipoTramite") -@Table(name="TARMTIPOTRAMITE") -public class TarmTipoTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTipoTramite -*/ -@Id -@Column(name="CTIPOTRAMITE" ,nullable=false, updatable=false) -private String pk; -@Column(name="NOMBRE", nullable=false) - -/** -* Descripcion del tipo de tramite -*/ -private String nombre; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TarmTipoTramite(){ -} -/**Contructor de TarmTipoTramite -@param pPk Clave Primaria del entity -@param pNombre Descripcion del tipo de tramite -*/ -public TarmTipoTramite(String pPk,String pNombre){ - this(); - pk=pPk; - nombre=pNombre; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTipoTramite -*/ -public static TarmTipoTramite find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTipoTramite obj = pEntityManager.find(TarmTipoTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTipoTramite -@return El objeto que referencia a la Clave primaria de TarmTipoTramite -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTipoTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTipoTramite -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de nombre -@return valor de nombre*/ -public String getNombre(){ - return nombre; -} -/**Fija el valor de nombre -@param pNombre nuevo Valor de nombre*/ -public void setNombre(String pNombre){ - nombre=pNombre; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTipoTramite))return false; - TarmTipoTramite that = (TarmTipoTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTipoTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTipoTramite -*/ -public Object createInstance(){ - TarmTipoTramite instance=new TarmTipoTramite(); - return instance; -} -/**Clona la entidad TarmTipoTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTipoTramite p=(TarmTipoTramite)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.netbeans-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.netbeans-base deleted file mode 100644 index c8132a5..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.netbeans-base +++ /dev/null @@ -1,958 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTRAMITE*/ -@Entity(name="TarmTramite") -@Table(name="TARMTRAMITE") -public class TarmTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTramite -*/ -@Id -@Column(name="CTRAMITE" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CTRAMITE"), - @Parameter(name = "type", value = "java.lang.Long"), - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="COSTOCUSTODIO", nullable=true) - -/** -* Costo de cada custodio segun el tramite -*/ -private BigDecimal costocustodio; - -@Column(name="TIPOARCHIVOCODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String tipoarchivocodigo; - -@Column(name="REGISTROGUARDIA", nullable=true) - -/** -* null -*/ -private String registroguardia; - -@Column(name="TIPOTRAMITE", nullable=false) - -/** -* null -*/ -private String tipotramite; - -@Column(name="ESTADOS", nullable=true) - -/** -* campo para validar la busqueda de las armas, segun los estados seleccionados -*/ -private String estados; - -@Column(name="PIE", nullable=true) - -/** -* Detalle del tramite para el pie del reporte -*/ -private String pie; - -@Column(name="CABECERA", nullable=true) - -/** -* Detalle del tramite para la cabecera del reporte -*/ -private String cabecera; - -@Column(name="DOCUMENTOHABILITANTE", nullable=true) - -/** -* null -*/ -private String documentohabilitante; - -@Column(name="REQUIEREEVALUACION", nullable=true) - -/** -* null -*/ -private String requiereevaluacion; - -@Column(name="CATEGORIACODIGO", nullable=false) - -/** -* null -*/ -private String categoriacodigo; - -@Column(name="TIPOPERSONA", nullable=true) - -/** -* null -*/ -private String tipopersona; - -@Column(name="ESTADOFINARMA", nullable=true) - -/** -* se registra el estado final del arma, al finalizar el tramite seleccionado -*/ -private String estadofinarma; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="VIGENCIACODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String vigenciacodigo; - -@Column(name="VIGENCIA", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String vigencia; - -@Column(name="TIPOTRAMITECODIGO", nullable=false) - -/** -* null -*/ -private String tipotramitecodigo; - -@Column(name="FLUJOTRAMITECODE", nullable=true) - -/** -* null -*/ -private String flujotramitecode; - -@Column(name="REQUIEREINSPECCION", nullable=true) - -/** -* null -*/ -private String requiereinspeccion; - -@Column(name="TIPOARCHIVO", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tipoarchivo; - -@Column(name="USOACTIVIDAD", nullable=false) - -/** -* null -*/ -private String usoactividad; - -@Column(name="TIPOAUTORIZACION", nullable=false) - -/** -* null -*/ -private String tipoautorizacion; - -@Column(name="CTRAMITEPADRE", nullable=true) - -/** -* codigo del tramite padre -*/ -private Long ctramitepadre; - -@Column(name="CTRAMITEPADREALT", nullable=true) - -/** -* codigo del tramite padre alterno -*/ -private Long ctramitepadrealt; - -@Column(name="USOACTIVIDADCODIGO", nullable=false) - -/** -* null -*/ -private String usoactividadcodigo; - -@Column(name="CATEGORIA", nullable=false) - -/** -* null -*/ -private String categoria; - -@Column(name="TIPOAUTORIZACIONCODIGO", nullable=false) - -/** -* null -*/ -private String tipoautorizacioncodigo; - -@Column(name="LOGO", nullable=true) - -/** -* null -*/ -private String logo; - -@Column(name="COSTO", nullable=true) - -/** -* null -*/ -private BigDecimal costo; - -@Column(name="NUMEROMAXARMAS", nullable=true) - -/** -* campo para validar el numero maximo de armas para el tramite asociado -*/ -private Long numeromaxarmas; - -@Column(name="REIMPRESION", nullable=true) - -/** -* campo para validar si requiere reimpresion -*/ -private String reimpresion; - -@Column(name="FLUJOTRAMITE", nullable=true) - -/** -* null -*/ -private String flujotramite; - -@Column(name="MULTA", nullable=true) - -/** -* Multa asignada al tramite -*/ -private BigDecimal multa; - -@Column(name="REGISTROAGENCIASUCURSAL", nullable=true) - -/** -* null -*/ -private String registroagenciasucursal; - -@Column(name="REGISTROARMAS", nullable=true) - -/** -* null -*/ -private String registroarmas; - -@Column(name="TIPOCOSTOCODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String tipocostocodigo; - -@Column(name="TIPOCOSTO", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tipocosto; - -@Column(name="SANCIONABLE", nullable=true) - -/** -* null -*/ -private String sancionable; - -@Column(name="TIPOPERSONACODE", nullable=true) - -/** -* null -*/ -private String tipopersonacode; - -@Column(name="CLASE", nullable=true) - -/** -* campo para validar la busqueda de las armas, segun los estados seleccionados -*/ -private String clase; - -@Column(name="VALIDACADUCIDADPADRE", nullable=true) - -/** -* null -*/ -private String validacaducidadpadre; - - -@Column(name="VALIDACADUCIDADPADREALT", nullable=true) - -/** -* null -*/ -private String validacaducidadpadrealt; - -@Column(name="VALIDAFECHAEXPIRACION", nullable=true) - -/** -* null -*/ -private String validaFechaExpiracion; - -@Column(name="VISUALIZARPORFECHAEXPIRACION", nullable=true) - -/** -* null -*/ -private String visualizarPorFechaExpiracion; - -@Column(name="JURISDICCION", nullable=true) - -/** -* null -*/ -private String jurisdiccion; - -@Column(name="JURISDICCIONCODE", nullable=true) - -/** -* null -*/ -private String jurisdiccioncode; - - -@Column(name="TIPOFABRICACION", nullable=true) - -/** -* null -*/ -private String tipofabricacion; - - -/**Contructor por defecto*/ -public TarmTramite(){ -} -/**Contructor de TarmTramite -@param pPk Clave Primaria del entity -@param pTipoarchivocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pTipotramite null -@param pCategoriacodigo null -@param pVigenciacodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pVigencia Codigo de catalogo 01 Natural, 02 Juridico -@param pTipotramitecodigo null -@param pTipoarchivo Codigo de catalogo 01 Natural, 02 Juridico -@param pUsoactividad null -@param pTipoautorizacion null -@param pUsoactividadcodigo null -@param pCategoria null -@param pTipoautorizacioncodigo null -@param pTipocostocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pTipocosto Codigo de catalogo 01 Natural, 02 Juridico -*/ -public TarmTramite(Long pPk,String pTipoarchivocodigo,String pTipotramite,String pCategoriacodigo,String pVigenciacodigo,String pVigencia,String pTipotramitecodigo,String pTipoarchivo,String pUsoactividad,String pTipoautorizacion,String pUsoactividadcodigo,String pCategoria,String pTipoautorizacioncodigo,String pTipocostocodigo,String pTipocosto){ - this(); - pk=pPk; - tipoarchivocodigo=pTipoarchivocodigo; - tipotramite=pTipotramite; - categoriacodigo=pCategoriacodigo; - vigenciacodigo=pVigenciacodigo; - vigencia=pVigencia; - tipotramitecodigo=pTipotramitecodigo; - tipoarchivo=pTipoarchivo; - usoactividad=pUsoactividad; - tipoautorizacion=pTipoautorizacion; - usoactividadcodigo=pUsoactividadcodigo; - categoria=pCategoria; - tipoautorizacioncodigo=pTipoautorizacioncodigo; - tipocostocodigo=pTipocostocodigo; - tipocosto=pTipocosto; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTramite -*/ -public static TarmTramite find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTramite obj = pEntityManager.find(TarmTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTramite -@return El objeto que referencia a la Clave primaria de TarmTramite -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTramite -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de costocustodio -@return valor de costocustodio*/ -public BigDecimal getCostocustodio(){ - return costocustodio; -} -/**Fija el valor de costocustodio -@param pCostocustodio nuevo Valor de costocustodio*/ -public void setCostocustodio(BigDecimal pCostocustodio){ - costocustodio=pCostocustodio; -} - -/**Obtiene el valor de tipoarchivocodigo -@return valor de tipoarchivocodigo*/ -public String getTipoarchivocodigo(){ - return tipoarchivocodigo; -} -/**Fija el valor de tipoarchivocodigo -@param pTipoarchivocodigo nuevo Valor de tipoarchivocodigo*/ -public void setTipoarchivocodigo(String pTipoarchivocodigo){ - tipoarchivocodigo=pTipoarchivocodigo; -} - -/**Obtiene el valor de registroguardia -@return valor de registroguardia*/ -public String getRegistroguardia(){ - return registroguardia; -} -/**Fija el valor de registroguardia -@param pRegistroguardia nuevo Valor de registroguardia*/ -public void setRegistroguardia(String pRegistroguardia){ - registroguardia=pRegistroguardia; -} - -/**Obtiene el valor de tipotramite -@return valor de tipotramite*/ -public String getTipotramite(){ - return tipotramite; -} -/**Fija el valor de tipotramite -@param pTipotramite nuevo Valor de tipotramite*/ -public void setTipotramite(String pTipotramite){ - tipotramite=pTipotramite; -} - -/**Obtiene el valor de estados -@return valor de estados*/ -public String getEstados(){ - return estados; -} -/**Fija el valor de estados -@param pEstados nuevo Valor de estados*/ -public void setEstados(String pEstados){ - estados=pEstados; -} - -/**Obtiene el valor de pie -@return valor de pie*/ -public String getPie(){ - return pie; -} -/**Fija el valor de pie -@param pPie nuevo Valor de pie*/ -public void setPie(String pPie){ - pie=pPie; -} - -/**Obtiene el valor de cabecera -@return valor de cabecera*/ -public String getCabecera(){ - return cabecera; -} -/**Fija el valor de cabecera -@param pCabecera nuevo Valor de cabecera*/ -public void setCabecera(String pCabecera){ - cabecera=pCabecera; -} - -/**Obtiene el valor de documentohabilitante -@return valor de documentohabilitante*/ -public String getDocumentohabilitante(){ - return documentohabilitante; -} -/**Fija el valor de documentohabilitante -@param pDocumentohabilitante nuevo Valor de documentohabilitante*/ -public void setDocumentohabilitante(String pDocumentohabilitante){ - documentohabilitante=pDocumentohabilitante; -} - -/**Obtiene el valor de requiereevaluacion -@return valor de requiereevaluacion*/ -public String getRequiereevaluacion(){ - return requiereevaluacion; -} -/**Fija el valor de requiereevaluacion -@param pRequiereevaluacion nuevo Valor de requiereevaluacion*/ -public void setRequiereevaluacion(String pRequiereevaluacion){ - requiereevaluacion=pRequiereevaluacion; -} - -/**Obtiene el valor de categoriacodigo -@return valor de categoriacodigo*/ -public String getCategoriacodigo(){ - return categoriacodigo; -} -/**Fija el valor de categoriacodigo -@param pCategoriacodigo nuevo Valor de categoriacodigo*/ -public void setCategoriacodigo(String pCategoriacodigo){ - categoriacodigo=pCategoriacodigo; -} - -/**Obtiene el valor de tipopersona -@return valor de tipopersona*/ -public String getTipopersona(){ - return tipopersona; -} -/**Fija el valor de tipopersona -@param pTipopersona nuevo Valor de tipopersona*/ -public void setTipopersona(String pTipopersona){ - tipopersona=pTipopersona; -} - -/**Obtiene el valor de estadofinarma -@return valor de estadofinarma*/ -public String getEstadofinarma(){ - return estadofinarma; -} -/**Fija el valor de estadofinarma -@param pEstadofinarma nuevo Valor de estadofinarma*/ -public void setEstadofinarma(String pEstadofinarma){ - estadofinarma=pEstadofinarma; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de vigenciacodigo -@return valor de vigenciacodigo*/ -public String getVigenciacodigo(){ - return vigenciacodigo; -} -/**Fija el valor de vigenciacodigo -@param pVigenciacodigo nuevo Valor de vigenciacodigo*/ -public void setVigenciacodigo(String pVigenciacodigo){ - vigenciacodigo=pVigenciacodigo; -} - -/**Obtiene el valor de vigencia -@return valor de vigencia*/ -public String getVigencia(){ - return vigencia; -} -/**Fija el valor de vigencia -@param pVigencia nuevo Valor de vigencia*/ -public void setVigencia(String pVigencia){ - vigencia=pVigencia; -} - -/**Obtiene el valor de tipotramitecodigo -@return valor de tipotramitecodigo*/ -public String getTipotramitecodigo(){ - return tipotramitecodigo; -} -/**Fija el valor de tipotramitecodigo -@param pTipotramitecodigo nuevo Valor de tipotramitecodigo*/ -public void setTipotramitecodigo(String pTipotramitecodigo){ - tipotramitecodigo=pTipotramitecodigo; -} - -/**Obtiene el valor de flujotramitecode -@return valor de flujotramitecode*/ -public String getFlujotramitecode(){ - return flujotramitecode; -} -/**Fija el valor de flujotramitecode -@param pFlujotramitecode nuevo Valor de flujotramitecode*/ -public void setFlujotramitecode(String pFlujotramitecode){ - flujotramitecode=pFlujotramitecode; -} - -/**Obtiene el valor de requiereinspeccion -@return valor de requiereinspeccion*/ -public String getRequiereinspeccion(){ - return requiereinspeccion; -} -/**Fija el valor de requiereinspeccion -@param pRequiereinspeccion nuevo Valor de requiereinspeccion*/ -public void setRequiereinspeccion(String pRequiereinspeccion){ - requiereinspeccion=pRequiereinspeccion; -} - -/**Obtiene el valor de tipoarchivo -@return valor de tipoarchivo*/ -public String getTipoarchivo(){ - return tipoarchivo; -} -/**Fija el valor de tipoarchivo -@param pTipoarchivo nuevo Valor de tipoarchivo*/ -public void setTipoarchivo(String pTipoarchivo){ - tipoarchivo=pTipoarchivo; -} - -/**Obtiene el valor de usoactividad -@return valor de usoactividad*/ -public String getUsoactividad(){ - return usoactividad; -} -/**Fija el valor de usoactividad -@param pUsoactividad nuevo Valor de usoactividad*/ -public void setUsoactividad(String pUsoactividad){ - usoactividad=pUsoactividad; -} - -/**Obtiene el valor de tipoautorizacion -@return valor de tipoautorizacion*/ -public String getTipoautorizacion(){ - return tipoautorizacion; -} -/**Fija el valor de tipoautorizacion -@param pTipoautorizacion nuevo Valor de tipoautorizacion*/ -public void setTipoautorizacion(String pTipoautorizacion){ - tipoautorizacion=pTipoautorizacion; -} - -/**Obtiene el valor de ctramitepadre -@return valor de ctramitepadre*/ -public Long getCtramitepadre(){ - return ctramitepadre; -} -/**Fija el valor de ctramitepadre -@param pCtramitepadre nuevo Valor de ctramitepadre*/ -public void setCtramitepadre(Long pCtramitepadre){ - ctramitepadre=pCtramitepadre; -} -/**Obtiene el valor de ctramitepadrealt -@return valor de ctramitepadrealt*/ -public Long getCtramitepadrealt() { - return ctramitepadrealt; -} -/**Fija el valor de ctramitepadrealt -@param pCtramitepadre nuevo Valor de ctramitepadrealt*/ -public void setCtramitepadrealt(Long ctramitepadrealt) { - this.ctramitepadrealt = ctramitepadrealt; -} -/**Obtiene el valor de usoactividadcodigo -@return valor de usoactividadcodigo*/ -public String getUsoactividadcodigo(){ - return usoactividadcodigo; -} -/**Fija el valor de usoactividadcodigo -@param pUsoactividadcodigo nuevo Valor de usoactividadcodigo*/ -public void setUsoactividadcodigo(String pUsoactividadcodigo){ - usoactividadcodigo=pUsoactividadcodigo; -} - -/**Obtiene el valor de categoria -@return valor de categoria*/ -public String getCategoria(){ - return categoria; -} -/**Fija el valor de categoria -@param pCategoria nuevo Valor de categoria*/ -public void setCategoria(String pCategoria){ - categoria=pCategoria; -} - -/**Obtiene el valor de tipoautorizacioncodigo -@return valor de tipoautorizacioncodigo*/ -public String getTipoautorizacioncodigo(){ - return tipoautorizacioncodigo; -} -/**Fija el valor de tipoautorizacioncodigo -@param pTipoautorizacioncodigo nuevo Valor de tipoautorizacioncodigo*/ -public void setTipoautorizacioncodigo(String pTipoautorizacioncodigo){ - tipoautorizacioncodigo=pTipoautorizacioncodigo; -} - -/**Obtiene el valor de logo -@return valor de logo*/ -public String getLogo(){ - return logo; -} -/**Fija el valor de logo -@param pLogo nuevo Valor de logo*/ -public void setLogo(String pLogo){ - logo=pLogo; -} - -/**Obtiene el valor de costo -@return valor de costo*/ -public BigDecimal getCosto(){ - return costo; -} -/**Fija el valor de costo -@param pCosto nuevo Valor de costo*/ -public void setCosto(BigDecimal pCosto){ - costo=pCosto; -} - -/**Obtiene el valor de numeromaxarmas -@return valor de numeromaxarmas*/ -public Long getNumeromaxarmas(){ - return numeromaxarmas; -} -/**Fija el valor de numeromaxarmas -@param pNumeromaxarmas nuevo Valor de numeromaxarmas*/ -public void setNumeromaxarmas(Long pNumeromaxarmas){ - numeromaxarmas=pNumeromaxarmas; -} - -/**Obtiene el valor de reimpresion -@return valor de reimpresion*/ -public String getReimpresion(){ - return reimpresion; -} -/**Fija el valor de reimpresion -@param pReimpresion nuevo Valor de reimpresion*/ -public void setReimpresion(String pReimpresion){ - reimpresion=pReimpresion; -} - -/**Obtiene el valor de flujotramite -@return valor de flujotramite*/ -public String getFlujotramite(){ - return flujotramite; -} -/**Fija el valor de flujotramite -@param pFlujotramite nuevo Valor de flujotramite*/ -public void setFlujotramite(String pFlujotramite){ - flujotramite=pFlujotramite; -} - -/**Obtiene el valor de multa -@return valor de multa*/ -public BigDecimal getMulta(){ - return multa; -} -/**Fija el valor de multa -@param pMulta nuevo Valor de multa*/ -public void setMulta(BigDecimal pMulta){ - multa=pMulta; -} - -/**Obtiene el valor de registroagenciasucursal -@return valor de registroagenciasucursal*/ -public String getRegistroagenciasucursal(){ - return registroagenciasucursal; -} -/**Fija el valor de registroagenciasucursal -@param pRegistroagenciasucursal nuevo Valor de registroagenciasucursal*/ -public void setRegistroagenciasucursal(String pRegistroagenciasucursal){ - registroagenciasucursal=pRegistroagenciasucursal; -} - -/**Obtiene el valor de registroarmas -@return valor de registroarmas*/ -public String getRegistroarmas(){ - return registroarmas; -} -/**Fija el valor de registroarmas -@param pRegistroarmas nuevo Valor de registroarmas*/ -public void setRegistroarmas(String pRegistroarmas){ - registroarmas=pRegistroarmas; -} - -/**Obtiene el valor de tipocostocodigo -@return valor de tipocostocodigo*/ -public String getTipocostocodigo(){ - return tipocostocodigo; -} -/**Fija el valor de tipocostocodigo -@param pTipocostocodigo nuevo Valor de tipocostocodigo*/ -public void setTipocostocodigo(String pTipocostocodigo){ - tipocostocodigo=pTipocostocodigo; -} - -/**Obtiene el valor de tipocosto -@return valor de tipocosto*/ -public String getTipocosto(){ - return tipocosto; -} -/**Fija el valor de tipocosto -@param pTipocosto nuevo Valor de tipocosto*/ -public void setTipocosto(String pTipocosto){ - tipocosto=pTipocosto; -} - -/**Obtiene el valor de sancionable -@return valor de sancionable*/ -public String getSancionable(){ - return sancionable; -} -/**Fija el valor de sancionable -@param pSancionable nuevo Valor de sancionable*/ -public void setSancionable(String pSancionable){ - sancionable=pSancionable; -} - -/**Obtiene el valor de tipopersonacode -@return valor de tipopersonacode*/ -public String getTipopersonacode(){ - return tipopersonacode; -} -/**Fija el valor de tipopersonacode -@param pTipopersonacode nuevo Valor de tipopersonacode*/ -public void setTipopersonacode(String pTipopersonacode){ - tipopersonacode=pTipopersonacode; -} - -public String getClase() { - return clase; -} -public void setClase(String clase) { - this.clase = clase; -} -public String getValidacaducidadpadre() { - return validacaducidadpadre; -} -public void setValidacaducidadpadre(String validacaducidadpadre) { - this.validacaducidadpadre = validacaducidadpadre; -} -public String getValidacaducidadpadrealt() { - return validacaducidadpadrealt; -} -public void setValidacaducidadpadrealt(String validacaducidadpadrealt) { - this.validacaducidadpadrealt = validacaducidadpadrealt; -} - -public String getVisualizarPorFechaExpiracion() { - return visualizarPorFechaExpiracion; -} -public void setVisualizarPorFechaExpiracion(String visualizarPorFechaExpiracion) { - this.visualizarPorFechaExpiracion = visualizarPorFechaExpiracion; -} -public String getValidaFechaExpiracion() { - return validaFechaExpiracion; -} -public void setValidaFechaExpiracion(String validaFechaExpiracion) { - this.validaFechaExpiracion = validaFechaExpiracion; -} - -public String getJurisdiccion() { - return jurisdiccion; -} -public void setJurisdiccion(String jurisdiccion) { - this.jurisdiccion = jurisdiccion; -} - -public String getJurisdiccioncode() { - return jurisdiccioncode; -} -public void setJurisdiccioncode(String jurisdiccioncode) { - this.jurisdiccioncode = jurisdiccioncode; -} -public String getTipofabricacion() { - return tipofabricacion; -} -public void setTipofabricacion(String tipofabricacion) { - this.tipofabricacion = tipofabricacion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTramite))return false; - TarmTramite that = (TarmTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTramite -*/ -public Object createInstance(){ - TarmTramite instance=new TarmTramite(); - return instance; -} -/**Clona la entidad TarmTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTramite p=(TarmTramite)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.svn-base deleted file mode 100644 index c8132a5..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramite.java.svn-base +++ /dev/null @@ -1,958 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTRAMITE*/ -@Entity(name="TarmTramite") -@Table(name="TARMTRAMITE") -public class TarmTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTramite -*/ -@Id -@Column(name="CTRAMITE" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CTRAMITE"), - @Parameter(name = "type", value = "java.lang.Long"), - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="COSTOCUSTODIO", nullable=true) - -/** -* Costo de cada custodio segun el tramite -*/ -private BigDecimal costocustodio; - -@Column(name="TIPOARCHIVOCODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String tipoarchivocodigo; - -@Column(name="REGISTROGUARDIA", nullable=true) - -/** -* null -*/ -private String registroguardia; - -@Column(name="TIPOTRAMITE", nullable=false) - -/** -* null -*/ -private String tipotramite; - -@Column(name="ESTADOS", nullable=true) - -/** -* campo para validar la busqueda de las armas, segun los estados seleccionados -*/ -private String estados; - -@Column(name="PIE", nullable=true) - -/** -* Detalle del tramite para el pie del reporte -*/ -private String pie; - -@Column(name="CABECERA", nullable=true) - -/** -* Detalle del tramite para la cabecera del reporte -*/ -private String cabecera; - -@Column(name="DOCUMENTOHABILITANTE", nullable=true) - -/** -* null -*/ -private String documentohabilitante; - -@Column(name="REQUIEREEVALUACION", nullable=true) - -/** -* null -*/ -private String requiereevaluacion; - -@Column(name="CATEGORIACODIGO", nullable=false) - -/** -* null -*/ -private String categoriacodigo; - -@Column(name="TIPOPERSONA", nullable=true) - -/** -* null -*/ -private String tipopersona; - -@Column(name="ESTADOFINARMA", nullable=true) - -/** -* se registra el estado final del arma, al finalizar el tramite seleccionado -*/ -private String estadofinarma; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="VIGENCIACODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String vigenciacodigo; - -@Column(name="VIGENCIA", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String vigencia; - -@Column(name="TIPOTRAMITECODIGO", nullable=false) - -/** -* null -*/ -private String tipotramitecodigo; - -@Column(name="FLUJOTRAMITECODE", nullable=true) - -/** -* null -*/ -private String flujotramitecode; - -@Column(name="REQUIEREINSPECCION", nullable=true) - -/** -* null -*/ -private String requiereinspeccion; - -@Column(name="TIPOARCHIVO", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tipoarchivo; - -@Column(name="USOACTIVIDAD", nullable=false) - -/** -* null -*/ -private String usoactividad; - -@Column(name="TIPOAUTORIZACION", nullable=false) - -/** -* null -*/ -private String tipoautorizacion; - -@Column(name="CTRAMITEPADRE", nullable=true) - -/** -* codigo del tramite padre -*/ -private Long ctramitepadre; - -@Column(name="CTRAMITEPADREALT", nullable=true) - -/** -* codigo del tramite padre alterno -*/ -private Long ctramitepadrealt; - -@Column(name="USOACTIVIDADCODIGO", nullable=false) - -/** -* null -*/ -private String usoactividadcodigo; - -@Column(name="CATEGORIA", nullable=false) - -/** -* null -*/ -private String categoria; - -@Column(name="TIPOAUTORIZACIONCODIGO", nullable=false) - -/** -* null -*/ -private String tipoautorizacioncodigo; - -@Column(name="LOGO", nullable=true) - -/** -* null -*/ -private String logo; - -@Column(name="COSTO", nullable=true) - -/** -* null -*/ -private BigDecimal costo; - -@Column(name="NUMEROMAXARMAS", nullable=true) - -/** -* campo para validar el numero maximo de armas para el tramite asociado -*/ -private Long numeromaxarmas; - -@Column(name="REIMPRESION", nullable=true) - -/** -* campo para validar si requiere reimpresion -*/ -private String reimpresion; - -@Column(name="FLUJOTRAMITE", nullable=true) - -/** -* null -*/ -private String flujotramite; - -@Column(name="MULTA", nullable=true) - -/** -* Multa asignada al tramite -*/ -private BigDecimal multa; - -@Column(name="REGISTROAGENCIASUCURSAL", nullable=true) - -/** -* null -*/ -private String registroagenciasucursal; - -@Column(name="REGISTROARMAS", nullable=true) - -/** -* null -*/ -private String registroarmas; - -@Column(name="TIPOCOSTOCODIGO", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String tipocostocodigo; - -@Column(name="TIPOCOSTO", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String tipocosto; - -@Column(name="SANCIONABLE", nullable=true) - -/** -* null -*/ -private String sancionable; - -@Column(name="TIPOPERSONACODE", nullable=true) - -/** -* null -*/ -private String tipopersonacode; - -@Column(name="CLASE", nullable=true) - -/** -* campo para validar la busqueda de las armas, segun los estados seleccionados -*/ -private String clase; - -@Column(name="VALIDACADUCIDADPADRE", nullable=true) - -/** -* null -*/ -private String validacaducidadpadre; - - -@Column(name="VALIDACADUCIDADPADREALT", nullable=true) - -/** -* null -*/ -private String validacaducidadpadrealt; - -@Column(name="VALIDAFECHAEXPIRACION", nullable=true) - -/** -* null -*/ -private String validaFechaExpiracion; - -@Column(name="VISUALIZARPORFECHAEXPIRACION", nullable=true) - -/** -* null -*/ -private String visualizarPorFechaExpiracion; - -@Column(name="JURISDICCION", nullable=true) - -/** -* null -*/ -private String jurisdiccion; - -@Column(name="JURISDICCIONCODE", nullable=true) - -/** -* null -*/ -private String jurisdiccioncode; - - -@Column(name="TIPOFABRICACION", nullable=true) - -/** -* null -*/ -private String tipofabricacion; - - -/**Contructor por defecto*/ -public TarmTramite(){ -} -/**Contructor de TarmTramite -@param pPk Clave Primaria del entity -@param pTipoarchivocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pTipotramite null -@param pCategoriacodigo null -@param pVigenciacodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pVigencia Codigo de catalogo 01 Natural, 02 Juridico -@param pTipotramitecodigo null -@param pTipoarchivo Codigo de catalogo 01 Natural, 02 Juridico -@param pUsoactividad null -@param pTipoautorizacion null -@param pUsoactividadcodigo null -@param pCategoria null -@param pTipoautorizacioncodigo null -@param pTipocostocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pTipocosto Codigo de catalogo 01 Natural, 02 Juridico -*/ -public TarmTramite(Long pPk,String pTipoarchivocodigo,String pTipotramite,String pCategoriacodigo,String pVigenciacodigo,String pVigencia,String pTipotramitecodigo,String pTipoarchivo,String pUsoactividad,String pTipoautorizacion,String pUsoactividadcodigo,String pCategoria,String pTipoautorizacioncodigo,String pTipocostocodigo,String pTipocosto){ - this(); - pk=pPk; - tipoarchivocodigo=pTipoarchivocodigo; - tipotramite=pTipotramite; - categoriacodigo=pCategoriacodigo; - vigenciacodigo=pVigenciacodigo; - vigencia=pVigencia; - tipotramitecodigo=pTipotramitecodigo; - tipoarchivo=pTipoarchivo; - usoactividad=pUsoactividad; - tipoautorizacion=pTipoautorizacion; - usoactividadcodigo=pUsoactividadcodigo; - categoria=pCategoria; - tipoautorizacioncodigo=pTipoautorizacioncodigo; - tipocostocodigo=pTipocostocodigo; - tipocosto=pTipocosto; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTramite -*/ -public static TarmTramite find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTramite obj = pEntityManager.find(TarmTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTramite -@return El objeto que referencia a la Clave primaria de TarmTramite -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTramite -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de costocustodio -@return valor de costocustodio*/ -public BigDecimal getCostocustodio(){ - return costocustodio; -} -/**Fija el valor de costocustodio -@param pCostocustodio nuevo Valor de costocustodio*/ -public void setCostocustodio(BigDecimal pCostocustodio){ - costocustodio=pCostocustodio; -} - -/**Obtiene el valor de tipoarchivocodigo -@return valor de tipoarchivocodigo*/ -public String getTipoarchivocodigo(){ - return tipoarchivocodigo; -} -/**Fija el valor de tipoarchivocodigo -@param pTipoarchivocodigo nuevo Valor de tipoarchivocodigo*/ -public void setTipoarchivocodigo(String pTipoarchivocodigo){ - tipoarchivocodigo=pTipoarchivocodigo; -} - -/**Obtiene el valor de registroguardia -@return valor de registroguardia*/ -public String getRegistroguardia(){ - return registroguardia; -} -/**Fija el valor de registroguardia -@param pRegistroguardia nuevo Valor de registroguardia*/ -public void setRegistroguardia(String pRegistroguardia){ - registroguardia=pRegistroguardia; -} - -/**Obtiene el valor de tipotramite -@return valor de tipotramite*/ -public String getTipotramite(){ - return tipotramite; -} -/**Fija el valor de tipotramite -@param pTipotramite nuevo Valor de tipotramite*/ -public void setTipotramite(String pTipotramite){ - tipotramite=pTipotramite; -} - -/**Obtiene el valor de estados -@return valor de estados*/ -public String getEstados(){ - return estados; -} -/**Fija el valor de estados -@param pEstados nuevo Valor de estados*/ -public void setEstados(String pEstados){ - estados=pEstados; -} - -/**Obtiene el valor de pie -@return valor de pie*/ -public String getPie(){ - return pie; -} -/**Fija el valor de pie -@param pPie nuevo Valor de pie*/ -public void setPie(String pPie){ - pie=pPie; -} - -/**Obtiene el valor de cabecera -@return valor de cabecera*/ -public String getCabecera(){ - return cabecera; -} -/**Fija el valor de cabecera -@param pCabecera nuevo Valor de cabecera*/ -public void setCabecera(String pCabecera){ - cabecera=pCabecera; -} - -/**Obtiene el valor de documentohabilitante -@return valor de documentohabilitante*/ -public String getDocumentohabilitante(){ - return documentohabilitante; -} -/**Fija el valor de documentohabilitante -@param pDocumentohabilitante nuevo Valor de documentohabilitante*/ -public void setDocumentohabilitante(String pDocumentohabilitante){ - documentohabilitante=pDocumentohabilitante; -} - -/**Obtiene el valor de requiereevaluacion -@return valor de requiereevaluacion*/ -public String getRequiereevaluacion(){ - return requiereevaluacion; -} -/**Fija el valor de requiereevaluacion -@param pRequiereevaluacion nuevo Valor de requiereevaluacion*/ -public void setRequiereevaluacion(String pRequiereevaluacion){ - requiereevaluacion=pRequiereevaluacion; -} - -/**Obtiene el valor de categoriacodigo -@return valor de categoriacodigo*/ -public String getCategoriacodigo(){ - return categoriacodigo; -} -/**Fija el valor de categoriacodigo -@param pCategoriacodigo nuevo Valor de categoriacodigo*/ -public void setCategoriacodigo(String pCategoriacodigo){ - categoriacodigo=pCategoriacodigo; -} - -/**Obtiene el valor de tipopersona -@return valor de tipopersona*/ -public String getTipopersona(){ - return tipopersona; -} -/**Fija el valor de tipopersona -@param pTipopersona nuevo Valor de tipopersona*/ -public void setTipopersona(String pTipopersona){ - tipopersona=pTipopersona; -} - -/**Obtiene el valor de estadofinarma -@return valor de estadofinarma*/ -public String getEstadofinarma(){ - return estadofinarma; -} -/**Fija el valor de estadofinarma -@param pEstadofinarma nuevo Valor de estadofinarma*/ -public void setEstadofinarma(String pEstadofinarma){ - estadofinarma=pEstadofinarma; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de vigenciacodigo -@return valor de vigenciacodigo*/ -public String getVigenciacodigo(){ - return vigenciacodigo; -} -/**Fija el valor de vigenciacodigo -@param pVigenciacodigo nuevo Valor de vigenciacodigo*/ -public void setVigenciacodigo(String pVigenciacodigo){ - vigenciacodigo=pVigenciacodigo; -} - -/**Obtiene el valor de vigencia -@return valor de vigencia*/ -public String getVigencia(){ - return vigencia; -} -/**Fija el valor de vigencia -@param pVigencia nuevo Valor de vigencia*/ -public void setVigencia(String pVigencia){ - vigencia=pVigencia; -} - -/**Obtiene el valor de tipotramitecodigo -@return valor de tipotramitecodigo*/ -public String getTipotramitecodigo(){ - return tipotramitecodigo; -} -/**Fija el valor de tipotramitecodigo -@param pTipotramitecodigo nuevo Valor de tipotramitecodigo*/ -public void setTipotramitecodigo(String pTipotramitecodigo){ - tipotramitecodigo=pTipotramitecodigo; -} - -/**Obtiene el valor de flujotramitecode -@return valor de flujotramitecode*/ -public String getFlujotramitecode(){ - return flujotramitecode; -} -/**Fija el valor de flujotramitecode -@param pFlujotramitecode nuevo Valor de flujotramitecode*/ -public void setFlujotramitecode(String pFlujotramitecode){ - flujotramitecode=pFlujotramitecode; -} - -/**Obtiene el valor de requiereinspeccion -@return valor de requiereinspeccion*/ -public String getRequiereinspeccion(){ - return requiereinspeccion; -} -/**Fija el valor de requiereinspeccion -@param pRequiereinspeccion nuevo Valor de requiereinspeccion*/ -public void setRequiereinspeccion(String pRequiereinspeccion){ - requiereinspeccion=pRequiereinspeccion; -} - -/**Obtiene el valor de tipoarchivo -@return valor de tipoarchivo*/ -public String getTipoarchivo(){ - return tipoarchivo; -} -/**Fija el valor de tipoarchivo -@param pTipoarchivo nuevo Valor de tipoarchivo*/ -public void setTipoarchivo(String pTipoarchivo){ - tipoarchivo=pTipoarchivo; -} - -/**Obtiene el valor de usoactividad -@return valor de usoactividad*/ -public String getUsoactividad(){ - return usoactividad; -} -/**Fija el valor de usoactividad -@param pUsoactividad nuevo Valor de usoactividad*/ -public void setUsoactividad(String pUsoactividad){ - usoactividad=pUsoactividad; -} - -/**Obtiene el valor de tipoautorizacion -@return valor de tipoautorizacion*/ -public String getTipoautorizacion(){ - return tipoautorizacion; -} -/**Fija el valor de tipoautorizacion -@param pTipoautorizacion nuevo Valor de tipoautorizacion*/ -public void setTipoautorizacion(String pTipoautorizacion){ - tipoautorizacion=pTipoautorizacion; -} - -/**Obtiene el valor de ctramitepadre -@return valor de ctramitepadre*/ -public Long getCtramitepadre(){ - return ctramitepadre; -} -/**Fija el valor de ctramitepadre -@param pCtramitepadre nuevo Valor de ctramitepadre*/ -public void setCtramitepadre(Long pCtramitepadre){ - ctramitepadre=pCtramitepadre; -} -/**Obtiene el valor de ctramitepadrealt -@return valor de ctramitepadrealt*/ -public Long getCtramitepadrealt() { - return ctramitepadrealt; -} -/**Fija el valor de ctramitepadrealt -@param pCtramitepadre nuevo Valor de ctramitepadrealt*/ -public void setCtramitepadrealt(Long ctramitepadrealt) { - this.ctramitepadrealt = ctramitepadrealt; -} -/**Obtiene el valor de usoactividadcodigo -@return valor de usoactividadcodigo*/ -public String getUsoactividadcodigo(){ - return usoactividadcodigo; -} -/**Fija el valor de usoactividadcodigo -@param pUsoactividadcodigo nuevo Valor de usoactividadcodigo*/ -public void setUsoactividadcodigo(String pUsoactividadcodigo){ - usoactividadcodigo=pUsoactividadcodigo; -} - -/**Obtiene el valor de categoria -@return valor de categoria*/ -public String getCategoria(){ - return categoria; -} -/**Fija el valor de categoria -@param pCategoria nuevo Valor de categoria*/ -public void setCategoria(String pCategoria){ - categoria=pCategoria; -} - -/**Obtiene el valor de tipoautorizacioncodigo -@return valor de tipoautorizacioncodigo*/ -public String getTipoautorizacioncodigo(){ - return tipoautorizacioncodigo; -} -/**Fija el valor de tipoautorizacioncodigo -@param pTipoautorizacioncodigo nuevo Valor de tipoautorizacioncodigo*/ -public void setTipoautorizacioncodigo(String pTipoautorizacioncodigo){ - tipoautorizacioncodigo=pTipoautorizacioncodigo; -} - -/**Obtiene el valor de logo -@return valor de logo*/ -public String getLogo(){ - return logo; -} -/**Fija el valor de logo -@param pLogo nuevo Valor de logo*/ -public void setLogo(String pLogo){ - logo=pLogo; -} - -/**Obtiene el valor de costo -@return valor de costo*/ -public BigDecimal getCosto(){ - return costo; -} -/**Fija el valor de costo -@param pCosto nuevo Valor de costo*/ -public void setCosto(BigDecimal pCosto){ - costo=pCosto; -} - -/**Obtiene el valor de numeromaxarmas -@return valor de numeromaxarmas*/ -public Long getNumeromaxarmas(){ - return numeromaxarmas; -} -/**Fija el valor de numeromaxarmas -@param pNumeromaxarmas nuevo Valor de numeromaxarmas*/ -public void setNumeromaxarmas(Long pNumeromaxarmas){ - numeromaxarmas=pNumeromaxarmas; -} - -/**Obtiene el valor de reimpresion -@return valor de reimpresion*/ -public String getReimpresion(){ - return reimpresion; -} -/**Fija el valor de reimpresion -@param pReimpresion nuevo Valor de reimpresion*/ -public void setReimpresion(String pReimpresion){ - reimpresion=pReimpresion; -} - -/**Obtiene el valor de flujotramite -@return valor de flujotramite*/ -public String getFlujotramite(){ - return flujotramite; -} -/**Fija el valor de flujotramite -@param pFlujotramite nuevo Valor de flujotramite*/ -public void setFlujotramite(String pFlujotramite){ - flujotramite=pFlujotramite; -} - -/**Obtiene el valor de multa -@return valor de multa*/ -public BigDecimal getMulta(){ - return multa; -} -/**Fija el valor de multa -@param pMulta nuevo Valor de multa*/ -public void setMulta(BigDecimal pMulta){ - multa=pMulta; -} - -/**Obtiene el valor de registroagenciasucursal -@return valor de registroagenciasucursal*/ -public String getRegistroagenciasucursal(){ - return registroagenciasucursal; -} -/**Fija el valor de registroagenciasucursal -@param pRegistroagenciasucursal nuevo Valor de registroagenciasucursal*/ -public void setRegistroagenciasucursal(String pRegistroagenciasucursal){ - registroagenciasucursal=pRegistroagenciasucursal; -} - -/**Obtiene el valor de registroarmas -@return valor de registroarmas*/ -public String getRegistroarmas(){ - return registroarmas; -} -/**Fija el valor de registroarmas -@param pRegistroarmas nuevo Valor de registroarmas*/ -public void setRegistroarmas(String pRegistroarmas){ - registroarmas=pRegistroarmas; -} - -/**Obtiene el valor de tipocostocodigo -@return valor de tipocostocodigo*/ -public String getTipocostocodigo(){ - return tipocostocodigo; -} -/**Fija el valor de tipocostocodigo -@param pTipocostocodigo nuevo Valor de tipocostocodigo*/ -public void setTipocostocodigo(String pTipocostocodigo){ - tipocostocodigo=pTipocostocodigo; -} - -/**Obtiene el valor de tipocosto -@return valor de tipocosto*/ -public String getTipocosto(){ - return tipocosto; -} -/**Fija el valor de tipocosto -@param pTipocosto nuevo Valor de tipocosto*/ -public void setTipocosto(String pTipocosto){ - tipocosto=pTipocosto; -} - -/**Obtiene el valor de sancionable -@return valor de sancionable*/ -public String getSancionable(){ - return sancionable; -} -/**Fija el valor de sancionable -@param pSancionable nuevo Valor de sancionable*/ -public void setSancionable(String pSancionable){ - sancionable=pSancionable; -} - -/**Obtiene el valor de tipopersonacode -@return valor de tipopersonacode*/ -public String getTipopersonacode(){ - return tipopersonacode; -} -/**Fija el valor de tipopersonacode -@param pTipopersonacode nuevo Valor de tipopersonacode*/ -public void setTipopersonacode(String pTipopersonacode){ - tipopersonacode=pTipopersonacode; -} - -public String getClase() { - return clase; -} -public void setClase(String clase) { - this.clase = clase; -} -public String getValidacaducidadpadre() { - return validacaducidadpadre; -} -public void setValidacaducidadpadre(String validacaducidadpadre) { - this.validacaducidadpadre = validacaducidadpadre; -} -public String getValidacaducidadpadrealt() { - return validacaducidadpadrealt; -} -public void setValidacaducidadpadrealt(String validacaducidadpadrealt) { - this.validacaducidadpadrealt = validacaducidadpadrealt; -} - -public String getVisualizarPorFechaExpiracion() { - return visualizarPorFechaExpiracion; -} -public void setVisualizarPorFechaExpiracion(String visualizarPorFechaExpiracion) { - this.visualizarPorFechaExpiracion = visualizarPorFechaExpiracion; -} -public String getValidaFechaExpiracion() { - return validaFechaExpiracion; -} -public void setValidaFechaExpiracion(String validaFechaExpiracion) { - this.validaFechaExpiracion = validaFechaExpiracion; -} - -public String getJurisdiccion() { - return jurisdiccion; -} -public void setJurisdiccion(String jurisdiccion) { - this.jurisdiccion = jurisdiccion; -} - -public String getJurisdiccioncode() { - return jurisdiccioncode; -} -public void setJurisdiccioncode(String jurisdiccioncode) { - this.jurisdiccioncode = jurisdiccioncode; -} -public String getTipofabricacion() { - return tipofabricacion; -} -public void setTipofabricacion(String tipofabricacion) { - this.tipofabricacion = tipofabricacion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTramite))return false; - TarmTramite that = (TarmTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTramite -*/ -public Object createInstance(){ - TarmTramite instance=new TarmTramite(); - return instance; -} -/**Clona la entidad TarmTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTramite p=(TarmTramite)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramitesAtendidos.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramitesAtendidos.java.svn-base deleted file mode 100644 index 9886c06..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmTramitesAtendidos.java.svn-base +++ /dev/null @@ -1,214 +0,0 @@ -package com.fp.persistence.parmas.param; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTRAMITESATENDIDOS*/ -@Entity(name="TarmTramitesAtendidos") -@Table(name="TARMTRAMITESATENDIDOS") -public class TarmTramitesAtendidos extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTramitesAtendidos -*/ -@Id -@Column(name="CTRAMITEATENDIDO" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CTRAMITEATENDIDO"), - @Parameter(name = "type", value = "java.lang.Long"), - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="CCENTROCONTROL", nullable=false) - -/** -* Clave foranea del centro de control referido -*/ -private String ccentrocontrol; - -@Column(name="CTRAMITE", nullable=false) - -/** -* Clave foranea del codio de tramite referido -*/ -private Long ctramite; - -@Column(name="FECHAREGISTRO", nullable=false) - -/** -* Fecha en que se ingresa el registro -*/ -private Date fecharegistro; - -@Column(name="FECHAATENCION", nullable=false) - -/** -* Fecha programada para la tencion del tramite por el centro de control -*/ -private Date fechaatencion; - -/**Contructor por defecto*/ -public TarmTramitesAtendidos(){ -} -/**Contructor de TarmTramitesAtendidos -@param pPk Clave Primaria del entity -@param pCcentrocontrol Clave foranea del centro de control referido -@param pCtramite Clave foranea del codio de tramite referido -@param pFecharegistro Fecha en que se ingresa el registro -@param pFechaatencion Fecha programada para la tencion del tramite por el centro de control -*/ -public TarmTramitesAtendidos(Long pPk,String pCcentrocontrol,Long pCtramite,Date pFecharegistro,Date pFechaatencion){ - this(); - pk=pPk; - ccentrocontrol=pCcentrocontrol; - ctramite=pCtramite; - fecharegistro=pFecharegistro; - fechaatencion=pFechaatencion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTramitesAtendidos -*/ -public static TarmTramitesAtendidos find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTramitesAtendidos obj = pEntityManager.find(TarmTramitesAtendidos.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTramitesAtendidos -@return El objeto que referencia a la Clave primaria de TarmTramitesAtendidos -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTramitesAtendidos -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTramitesAtendidos -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de fechaatencion -@return valor de fechaatencion*/ -public Date getFechaatencion(){ - return fechaatencion; -} -/**Fija el valor de fechaatencion -@param pFechaatencion nuevo Valor de fechaatencion*/ -public void setFechaatencion(Date pFechaatencion){ - fechaatencion=pFechaatencion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTramitesAtendidos))return false; - TarmTramitesAtendidos that = (TarmTramitesAtendidos) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTramitesAtendidos -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTramitesAtendidos -*/ -public Object createInstance(){ - TarmTramitesAtendidos instance=new TarmTramitesAtendidos(); - return instance; -} -/**Clona la entidad TarmTramitesAtendidos -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTramitesAtendidos p=(TarmTramitesAtendidos)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipo.java.svn-base deleted file mode 100644 index 598ea45..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipo.java.svn-base +++ /dev/null @@ -1,168 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMUNIDADTIPO*/ -@Entity(name="TarmUnidadTipo") -@Table(name="TARMUNIDADTIPO") -public class TarmUnidadTipo extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmUnidadTipo -*/ -@EmbeddedId -private TarmUnidadTipoKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Versin del Registro -*/ -private Integer recordversion; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* Fecha de Registro -*/ -private Date fecharegistro; - -/**Contructor por defecto*/ -public TarmUnidadTipo(){ -} -/**Contructor de TarmUnidadTipo -@param pPk Clave Primaria del entity -*/ -public TarmUnidadTipo(TarmUnidadTipoKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmUnidadTipo -*/ -public static TarmUnidadTipo find(EntityManager pEntityManager,TarmUnidadTipoKey pKey) throws Exception{ - TarmUnidadTipo obj = pEntityManager.find(TarmUnidadTipo.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmUnidadTipo -@return El objeto que referencia a la Clave primaria de TarmUnidadTipo -*/ -public TarmUnidadTipoKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmUnidadTipo -@param pPk El objeto que referencia a la nueva Clave primaria de TarmUnidadTipo -*/ -public void setPk(TarmUnidadTipoKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmUnidadTipo))return false; - TarmUnidadTipo that = (TarmUnidadTipo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmUnidadTipo -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmUnidadTipo -*/ -public Object createInstance(){ - TarmUnidadTipo instance=new TarmUnidadTipo(); - instance.setPk(new TarmUnidadTipoKey()); - return instance; -} -/**Clona la entidad TarmUnidadTipo -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmUnidadTipo p=(TarmUnidadTipo)this.clone(); - p.setPk((TarmUnidadTipoKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipoKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipoKey.java.svn-base deleted file mode 100644 index 30c9abc..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/param/.svn/text-base/TarmUnidadTipoKey.java.svn-base +++ /dev/null @@ -1,234 +0,0 @@ -package com.fp.persistence.parmas.param; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMUNIDADTIPO*/ -@Embeddable -public class TarmUnidadTipoKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CLASE", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Explosivo, 02 Arma de Fuego -*/ -private String clase; - -@Column(name="CLASECODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de clase de arma -*/ -private String clasecode; - -@Column(name="TIPOARMAEXPLOSIVO", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Revolver, 02 Polvora -*/ -private String tipoarmaexplosivo; - -@Column(name="TIPOARMAEXPLOSIVOCODIGO", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de armaexplosivo -*/ -private String tipoarmaexplosivocodigo; - -@Column(name="UNIDADMEDIDAPESO", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 KG, 02 Unidad -*/ -private String unidadmedidapeso; - -@Column(name="UNIDADMEDIDAPESOCODIGO", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de unidad peso - -*/ -private String unidadmedidapesocodigo; - -/**Contructor por defecto*/ -public TarmUnidadTipoKey(){} -/**Contructor de TarmUnidadTipoKey -@param pClase Codigo de catalogo 01 Explosivo, 02 Arma de Fuego -@param pClasecode Codigo de tabla de catalogo 01 Codigo de tabla de clase de arma -@param pTipoarmaexplosivo Codigo de catalogo 01 Revolver, 02 Polvora -@param pTipoarmaexplosivocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de armaexplosivo -@param pUnidadmedidapeso Codigo de catalogo 01 KG, 02 Unidad -@param pUnidadmedidapesocodigo Codigo de tabla de catalogo 01 Codigo de tabla de tipos de unidad peso - -*/ -public TarmUnidadTipoKey(String pClase,String pClasecode,String pTipoarmaexplosivo,String pTipoarmaexplosivocodigo,String pUnidadmedidapeso,String pUnidadmedidapesocodigo){ - clase=pClase; - clasecode=pClasecode; - tipoarmaexplosivo=pTipoarmaexplosivo; - tipoarmaexplosivocodigo=pTipoarmaexplosivocodigo; - unidadmedidapeso=pUnidadmedidapeso; - unidadmedidapesocodigo=pUnidadmedidapesocodigo; -} -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de clasecode -@return valor de clasecode*/ -public String getClasecode(){ - return clasecode; -} -/**Fija el valor de clasecode -@param pClasecode nuevo Valor de clasecode*/ -public void setClasecode(String pClasecode){ - clasecode=pClasecode; -} - -/**Obtiene el valor de tipoarmaexplosivo -@return valor de tipoarmaexplosivo*/ -public String getTipoarmaexplosivo(){ - return tipoarmaexplosivo; -} -/**Fija el valor de tipoarmaexplosivo -@param pTipoarmaexplosivo nuevo Valor de tipoarmaexplosivo*/ -public void setTipoarmaexplosivo(String pTipoarmaexplosivo){ - tipoarmaexplosivo=pTipoarmaexplosivo; -} - -/**Obtiene el valor de tipoarmaexplosivocodigo -@return valor de tipoarmaexplosivocodigo*/ -public String getTipoarmaexplosivocodigo(){ - return tipoarmaexplosivocodigo; -} -/**Fija el valor de tipoarmaexplosivocodigo -@param pTipoarmaexplosivocodigo nuevo Valor de tipoarmaexplosivocodigo*/ -public void setTipoarmaexplosivocodigo(String pTipoarmaexplosivocodigo){ - tipoarmaexplosivocodigo=pTipoarmaexplosivocodigo; -} - -/**Obtiene el valor de unidadmedidapeso -@return valor de unidadmedidapeso*/ -public String getUnidadmedidapeso(){ - return unidadmedidapeso; -} -/**Fija el valor de unidadmedidapeso -@param pUnidadmedidapeso nuevo Valor de unidadmedidapeso*/ -public void setUnidadmedidapeso(String pUnidadmedidapeso){ - unidadmedidapeso=pUnidadmedidapeso; -} - -/**Obtiene el valor de unidadmedidapesocodigo -@return valor de unidadmedidapesocodigo*/ -public String getUnidadmedidapesocodigo(){ - return unidadmedidapesocodigo; -} -/**Fija el valor de unidadmedidapesocodigo -@param pUnidadmedidapesocodigo nuevo Valor de unidadmedidapesocodigo*/ -public void setUnidadmedidapesocodigo(String pUnidadmedidapesocodigo){ - unidadmedidapesocodigo=pUnidadmedidapesocodigo; -} - -/**Implementacion de la comparacion de TarmUnidadTipoKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmUnidadTipoKey))return false; - TarmUnidadTipoKey that = (TarmUnidadTipoKey) o; - if (this.getClase() == null || that.getClase() == null){ - return false; - } - if (! this.getClase().equals(that.getClase())){ - return false; - } - if (this.getClasecode() == null || that.getClasecode() == null){ - return false; - } - if (! this.getClasecode().equals(that.getClasecode())){ - return false; - } - if (this.getTipoarmaexplosivo() == null || that.getTipoarmaexplosivo() == null){ - return false; - } - if (! this.getTipoarmaexplosivo().equals(that.getTipoarmaexplosivo())){ - return false; - } - if (this.getTipoarmaexplosivocodigo() == null || that.getTipoarmaexplosivocodigo() == null){ - return false; - } - if (! this.getTipoarmaexplosivocodigo().equals(that.getTipoarmaexplosivocodigo())){ - return false; - } - if (this.getUnidadmedidapeso() == null || that.getUnidadmedidapeso() == null){ - return false; - } - if (! this.getUnidadmedidapeso().equals(that.getUnidadmedidapeso())){ - return false; - } - if (this.getUnidadmedidapesocodigo() == null || that.getUnidadmedidapesocodigo() == null){ - return false; - } - if (! this.getUnidadmedidapesocodigo().equals(that.getUnidadmedidapesocodigo())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmUnidadTipoKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getClase() == null ? 0 : this.getClase().hashCode()); - result = result * 37 + (this.getClasecode() == null ? 0 : this.getClasecode().hashCode()); - result = result * 37 + (this.getTipoarmaexplosivo() == null ? 0 : this.getTipoarmaexplosivo().hashCode()); - result = result * 37 + (this.getTipoarmaexplosivocodigo() == null ? 0 : this.getTipoarmaexplosivocodigo().hashCode()); - result = result * 37 + (this.getUnidadmedidapeso() == null ? 0 : this.getUnidadmedidapeso().hashCode()); - result = result * 37 + (this.getUnidadmedidapesocodigo() == null ? 0 : this.getUnidadmedidapesocodigo().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/entries b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/entries deleted file mode 100644 index 3f7053e..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/entries +++ /dev/null @@ -1,1456 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TarmCustodiaTemporal.java -file - - - - -2022-07-28T03:40:28.016739Z -75d7572fc40944cc7b40b87cbff4cd9a -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -14102 - -TarmSancionRecomendacion.java -file - - - - -2022-07-28T03:40:28.016739Z -829570e5b81cccd4206def9153c5c857 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5474 - -TarmBodega.java -file - - - - -2022-07-28T03:40:28.016739Z -901180375866af7e0a1232318cb0104c -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4263 - -TarmSolicitudTramite.java -file - - - - -2022-07-28T03:40:28.016739Z -d45412364bbefafa5a16075df6f5acb1 -2021-12-29T13:50:49.591275Z -4660 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -13206 - -TarmSancionDecomisoKey.java -file - - - - -2022-07-28T03:40:28.017739Z -b0365c9d8b55c50e319260c4cbcd52ac -2014-12-18T11:41:31.502002Z -3593 -acevallos - - - - - - - - - - - - - - - - - - - - - -3636 - -TarmSolicitudDocumentoKey.java -file - - - - -2022-07-28T03:40:28.017739Z -1e2f526977d562157faba66b25919cee -2014-11-05T08:07:28.933878Z -2347 -acevallos -has-props - - - - - - - - - - - - - - - - - - - - -3559 - -TarmSolicitudRequisitos.java -file - - - - -2022-07-28T03:40:28.017739Z -4b338d9c55f9847b1ce18b7e9f849d3c -2015-01-08T09:24:45.800079Z -3722 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -5173 - -TarmDocumentoHabilitanteDetall.java -file - - - - -2022-07-28T03:40:28.018739Z -3e1f15a537ff65924e69406b4cfc1106 -2015-01-08T12:13:59.030479Z -3730 -cguzman - - - - - - - - - - - - - - - - - - - - - -5588 - -TarmSolicitudGuardiasKey.java -file - - - - -2022-07-28T03:40:28.018739Z -28e364579d62fd3a143725f0eabfe8c4 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4228 - -TarmSolicitudArmasKey.java -file - - - - -2022-07-28T03:40:28.018739Z -571e4f6d0c848789192e7505cdc35420 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4145 - -TarmSolicitud.java -file - - - - -2022-07-28T03:40:28.019739Z -9622e0d284ae5b600e61ef1c4dd9282b -2015-12-29T13:58:56.911893Z -4357 -fpazmino -has-props - - - - - - - - - - - - - - - - - - - - -15473 - -TarmCertificadoArmas.java -file - - - - -2022-07-28T03:40:28.019739Z -07ce21bcfcb48e375f0941151f1acf3f -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -8933 - -TarmTerminos.java -file - - - - -2022-07-28T03:40:28.019739Z -7da156e9cfe9c27454ab8440d1bbfde7 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4573 - -TarmSolicitudAgenciaSucursalKey.java -file - - - - -2022-07-28T03:40:28.020739Z -16edfd2c571cf1a58942c400c815e880 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3535 - -TarmDecomiso.java -file - - - - -2022-07-28T03:40:28.020739Z -5ec8aa8426cb270b55557c634f5466cf -2016-02-15T20:49:58.089845Z -4450 -cvasquez - - - - - - - - - - - - - - - - - - - - - -17411 - -TarmInspeccionArchivo.java -file - - - - -2022-07-28T03:40:28.020739Z -ef7bd125fd84618c40fb61f74c10fd6b -2021-12-29T13:50:49.591275Z -4660 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6152 - -TarmOrdenTrabajoCustodios.java -file - - - - -2022-07-28T03:40:28.021739Z -7095a2e9eda0ce6023734b7e67023e0c -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -7353 - -TarmTransaccionArmaBodega.java -file - - - - -2022-07-28T03:40:28.021739Z -ac9b7b86ebd73a828e71307c6eac22a7 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7707 - -TarmCertificadoFiscalia.java -file - - - - -2022-07-28T03:40:28.022739Z -a99adc08ed6b2bafc364203ac1ac7271 -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -7655 - -TarmCertificadoArmasKey.java -file - - - - -2022-07-28T03:40:28.022739Z -7af2efe500a13ec3e07746b646bf7092 -2015-08-03T04:31:16.511388Z -4245 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4134 - -TarmOrdenTrabajo.java -file - - - - -2022-07-28T03:40:28.023739Z -19ed3a685d749de09cceffe86ae5657e -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -8166 - -TarmDocumentoAlfresco.java -file - - - - -2022-07-28T03:40:28.023739Z -5857b67a7d7c6ec71454003ca44e6a6c -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -5651 - -TarmSancionDecomiso.java -file - - - - -2022-07-28T03:40:28.024739Z -d7d0e4cd2284c71c2c054bf7fc6f0b52 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6922 - -TarmSolicitudDocumento.java -file - - - - -2022-07-28T03:40:28.023739Z -e1372c2083db2fd53d2f31d9ec9043f5 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5164 - -TarmSolicitudGuardias.java -file - - - - -2022-07-28T03:40:28.024739Z -e92d6755da53c5150625c91610b7d2e9 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3891 - -TarmSolicitudArmas.java -file - - - - -2022-07-28T03:40:28.025739Z -1778d7863e8a8a8a4d44600bba445f50 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4916 - -TarmAgenciaArma.java -file - - - - -2022-07-28T03:40:28.025739Z -9eeb59a6451231bcc13c53555e51cc92 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3730 - -TarmDecomisoArmaTransaccion.java -file - - - - -2022-07-28T03:40:28.025739Z -0c88aced76c2090f76e364f3c08a88e4 -2016-02-15T20:38:39.952729Z -4449 -cvasquez - - - - - - - - - - - - - - - - - - - - - -7148 - -TarmSolicitudAgenciaSucursal.java -file - - - - -2022-07-28T03:40:28.026739Z -1333117f9793e9e7ac17651ea6007614 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4915 - -TarmDetRepDestruirArmas.java -file - - - - -2022-07-28T03:40:28.026739Z -cbdf0e1f6c57cd2d65ad5a44c151a927 -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -8407 - -TarmInspeccion.java -file - - - - -2022-07-28T03:40:28.026739Z -91e91353cd6fadff736ef3e059090f82 -2016-01-21T16:08:24.054690Z -4398 -mcepeda - - - - - - - - - - - - - - - - - - - - - -9352 - -CashManagementDTO.java -file - - - - -2022-07-28T03:40:28.026739Z -60dd4953d97f8aa7158af5271c6d7c40 -2015-11-26T13:41:14.982482Z -4327 -fpazmino - - - - - - - - - - - - - - - - - - - - - -2740 - -TarmSolicitudTramiteKey.java -file - - - - -2022-07-28T03:40:28.027739Z -8aebfcdee7e73febe46a1f669c9534d7 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3455 - -TarmGuardias.java -file - - - - -2022-07-28T03:40:28.027739Z -b98c68a52b9e1edf5f1579650468437a -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4195 - -TarmSolicitudRequisitosKey.java -file - - - - -2022-07-28T03:40:28.027739Z -a0500024d9ae6625ddd651abd7551b34 -2014-08-20T09:24:12.183536Z -242 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -4256 - -TarmAgenciaArmaKey.java -file - - - - -2022-07-28T03:40:28.028739Z -fe5282b54d8ed3a9145cd5ffd4ad8b6a -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3336 - -TarmDocumentoHabilitante.java -file - - - - -2022-07-28T03:40:28.028739Z -3c62db9e6d9ccde1e8ed6746baedb9dd -2021-08-26T17:51:29.138509Z -4639 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -9824 - -TarmArmaPruebas.java -file - - - - -2022-07-28T03:40:28.029739Z -fe6ce9358a0079b97f535b5cecc75228 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -9574 - -TarmCabRepDestruirArmas.java -file - - - - -2022-07-28T03:40:28.029739Z -fa94028239e0ca04ae74723925a34dcc -2015-01-08T09:24:45.800079Z -3722 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5339 - -TarmArmas.java -file - - - - -2022-07-28T03:40:28.029739Z -420a115a46d022d5a51b8ca96b66c31b -2021-11-16T16:57:03.937551Z -4652 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -18133 - -TarmDecomisoArma.java -file - - - - -2022-07-28T03:40:28.030739Z -4cab380db0d98fc3eb9facb29c02d93b -2016-01-20T17:08:28.980461Z -4390 -mcepeda -has-props - - - - - - - - - - - - - - - - - - - - -12948 - -TarmAgenciaSucursal.java -file - - - - -2022-07-28T03:40:28.030739Z -c22d1b941e4f02af66f53a9f7f0e66a2 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -10410 - diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArma.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArma.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArma.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArmaKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArmaKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaArmaKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaSucursal.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaSucursal.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmAgenciaSucursal.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmaPruebas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmaPruebas.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmaPruebas.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmas.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmArmas.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDecomisoArma.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDecomisoArma.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDecomisoArma.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDocumentoHabilitante.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDocumentoHabilitante.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmDocumentoHabilitante.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmGuardias.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmGuardias.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmGuardias.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajo.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajo.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajoCustodios.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajoCustodios.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmOrdenTrabajoCustodios.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitud.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitud.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitud.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursal.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursal.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursal.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursalKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursalKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudAgenciaSucursalKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmas.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmas.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmasKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmasKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudArmasKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudDocumentoKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudDocumentoKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudDocumentoKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardias.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardias.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardias.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardiasKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardiasKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudGuardiasKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitos.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitos.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitos.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitosKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitosKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudRequisitosKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramite.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramite.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramiteKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramiteKey.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/prop-base/TarmSolicitudTramiteKey.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/CashManagementDTO.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/CashManagementDTO.java.svn-base deleted file mode 100644 index d9986c4..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/CashManagementDTO.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.math.BigDecimal; - -public class CashManagementDTO implements Serializable, Cloneable { - /** - * - */ - private static final long serialVersionUID = 1L; - // Codigo de orientacion - private String codigoServicio; - // Contrapartida - private String contrato; - private String moneda; - private String valorapagar; - // Forma de cobro - private String formaCobro; - private String tipoCuenta; - private String numeroCuenta; - // referencia, es el tipo autorizacion - private String referencia; - private String tipoIDCliente; - private String numeroIDCliente; - private String nombreCliente; - private String baseImponible; - private String csolicitud; - public String getCodigoServicio() { - return codigoServicio; - } - public void setCodigoServicio(String codigoServicio) { - this.codigoServicio = codigoServicio; - } - public String getContrato() { - return contrato; - } - public void setContrato(String contrato) { - this.contrato = contrato; - } - public String getMoneda() { - return moneda; - } - public void setMoneda(String moneda) { - this.moneda = moneda; - } - public String getValorapagar() { - return valorapagar; - } - public void setValorapagar(String valorapagar) { - this.valorapagar = valorapagar; - } - public String getFormaCobro() { - return formaCobro; - } - public void setFormaCobro(String formaCobro) { - this.formaCobro = formaCobro; - } - public String getTipoCuenta() { - return tipoCuenta; - } - public void setTipoCuenta(String tipoCuenta) { - this.tipoCuenta = tipoCuenta; - } - public String getNumeroCuenta() { - return numeroCuenta; - } - public void setNumeroCuenta(String numeroCuenta) { - this.numeroCuenta = numeroCuenta; - } - public String getReferencia() { - return referencia; - } - public void setReferencia(String referencia) { - this.referencia = referencia; - } - public String getTipoIDCliente() { - return tipoIDCliente; - } - public void setTipoIDCliente(String tipoIDCliente) { - this.tipoIDCliente = tipoIDCliente; - } - public String getNumeroIDCliente() { - return numeroIDCliente; - } - public void setNumeroIDCliente(String numeroIDCliente) { - this.numeroIDCliente = numeroIDCliente; - } - public String getNombreCliente() { - return nombreCliente; - } - public void setNombreCliente(String nombreCliente) { - this.nombreCliente = nombreCliente; - } - public String getBaseImponible() { - return baseImponible; - } - public void setBaseImponible(String baseImponible) { - this.baseImponible = baseImponible; - } - public String getCsolicitud() { - return csolicitud; - } - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArma.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArma.java.svn-base deleted file mode 100644 index 9790b08..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArma.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMAGENCIAARMA*/ -@Entity(name="TarmAgenciaArma") -@Table(name="TARMAGENCIAARMA") -public class TarmAgenciaArma extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmAgenciaArma -*/ -@EmbeddedId -private TarmAgenciaArmaKey pk; -/**Contructor por defecto*/ -public TarmAgenciaArma(){ -} -/**Contructor de TarmAgenciaArma -@param pPk Clave Primaria del entity -*/ -public TarmAgenciaArma(TarmAgenciaArmaKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmAgenciaArma -*/ -public static TarmAgenciaArma find(EntityManager pEntityManager,TarmAgenciaArmaKey pKey) throws Exception{ - TarmAgenciaArma obj = pEntityManager.find(TarmAgenciaArma.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmAgenciaArma -@return El objeto que referencia a la Clave primaria de TarmAgenciaArma -*/ -public TarmAgenciaArmaKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmAgenciaArma -@param pPk El objeto que referencia a la nueva Clave primaria de TarmAgenciaArma -*/ -public void setPk(TarmAgenciaArmaKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmAgenciaArma))return false; - TarmAgenciaArma that = (TarmAgenciaArma) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmAgenciaArma -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmAgenciaArma -*/ -public Object createInstance(){ - TarmAgenciaArma instance=new TarmAgenciaArma(); - instance.setPk(new TarmAgenciaArmaKey()); - return instance; -} -/**Clona la entidad TarmAgenciaArma -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmAgenciaArma p=(TarmAgenciaArma)this.clone(); - p.setPk((TarmAgenciaArmaKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArmaKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArmaKey.java.svn-base deleted file mode 100644 index 69024dc..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaArmaKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMAGENCIAARMA*/ -@Embeddable -public class TarmAgenciaArmaKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CARMA", nullable=false,updatable=false) - -/** -* PK del arma asociada a la agencia -*/ -private String carma; - -@Column(name="CAGENCIA", nullable=false,updatable=false) - -/** -* PK de la agencia asociada al arma -*/ -private Long cagencia; - -/**Contructor por defecto*/ -public TarmAgenciaArmaKey(){} -/**Contructor de TarmAgenciaArmaKey -@param pCarma PK del arma asociada a la agencia -@param pCagencia PK de la agencia asociada al arma -*/ -public TarmAgenciaArmaKey(String pCarma,Long pCagencia){ - carma=pCarma; - cagencia=pCagencia; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de cagencia -@return valor de cagencia*/ -public Long getCagencia(){ - return cagencia; -} -/**Fija el valor de cagencia -@param pCagencia nuevo Valor de cagencia*/ -public void setCagencia(Long pCagencia){ - cagencia=pCagencia; -} - -/**Implementacion de la comparacion de TarmAgenciaArmaKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmAgenciaArmaKey))return false; - TarmAgenciaArmaKey that = (TarmAgenciaArmaKey) o; - if (this.getCarma() == null || that.getCarma() == null){ - return false; - } - if (! this.getCarma().equals(that.getCarma())){ - return false; - } - if (this.getCagencia() == null || that.getCagencia() == null){ - return false; - } - if (! this.getCagencia().equals(that.getCagencia())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmAgenciaArmaKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCarma() == null ? 0 : this.getCarma().hashCode()); - result = result * 37 + (this.getCagencia() == null ? 0 : this.getCagencia().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaSucursal.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaSucursal.java.svn-base deleted file mode 100644 index 7e93bf2..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmAgenciaSucursal.java.svn-base +++ /dev/null @@ -1,426 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.util.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMAGENCIASUCURSAL*/ -@Entity(name="TarmAgenciaSucursal") -@Table(name="TARMAGENCIASUCURSAL") -public class TarmAgenciaSucursal extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmAgenciaSucursal -*/ -@Id -@Column(name="CAGENCIA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CAGENCIA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=true) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia -*/ -private String parroquiacode; - -@Column(name="CITYCODE", nullable=true) - -/** -* Codigo de cuidad -*/ -private String citycode; - -@Column(name="TIPO", nullable=true) - -/** -* Tipo de agencia o sucursal -*/ -private String tipo; - -@Column(name="TIPOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo -*/ -private String tipocodigo; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de la empresa a la que pertenece la sucursal -*/ -private Integer personcode; - -@Column(name="DIRECCION", nullable=true) - -/** -* Ubicacion en donde se encuentra localizada la agencia -*/ -private String direccion; - -@Column(name="TELEFONO", nullable=true) - -/** -* Numero telefonico de la agencia -*/ -private String telefono; - -@Column(name="CORREO", nullable=true) - -/** -* Correo electronico de contacto para la agencia -*/ -private String correo; - -@Column(name="RESPONSABLE", nullable=true) - -/** -* Responsable encargado de la agencia -*/ -private String responsable; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="ESTADOCODIGO", nullable=true) - -/** -* null -*/ -private String estadocodigo; - -@Column(name="FAUTORIZACION", nullable=true) - -/** -* null -*/ -private Date fautorizacion; - -@Column(name="NOMBRE", nullable=true) - -/** -* null -*/ -private String nombre; - -/**Contructor por defecto*/ -public TarmAgenciaSucursal(){ -} -/**Contructor de TarmAgenciaSucursal -@param pPk Clave Primaria del entity -*/ -public TarmAgenciaSucursal(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmAgenciaSucursal -*/ -public static TarmAgenciaSucursal find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmAgenciaSucursal obj = pEntityManager.find(TarmAgenciaSucursal.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmAgenciaSucursal -@return El objeto que referencia a la Clave primaria de TarmAgenciaSucursal -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmAgenciaSucursal -@param pPk El objeto que referencia a la nueva Clave primaria de TarmAgenciaSucursal -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de tipo -@return valor de tipo*/ -public String getTipo(){ - return tipo; -} -/**Fija el valor de tipo -@param pTipo nuevo Valor de tipo*/ -public void setTipo(String pTipo){ - tipo=pTipo; -} - -/**Obtiene el valor de tipocodigo -@return valor de tipocodigo*/ -public String getTipocodigo(){ - return tipocodigo; -} -/**Fija el valor de tipocodigo -@param pTipocodigo nuevo Valor de tipocodigo*/ -public void setTipocodigo(String pTipocodigo){ - tipocodigo=pTipocodigo; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de telefono -@return valor de telefono*/ -public String getTelefono(){ - return telefono; -} -/**Fija el valor de telefono -@param pTelefono nuevo Valor de telefono*/ -public void setTelefono(String pTelefono){ - telefono=pTelefono; -} - -/**Obtiene el valor de correo -@return valor de correo*/ -public String getCorreo(){ - return correo; -} -/**Fija el valor de correo -@param pCorreo nuevo Valor de correo*/ -public void setCorreo(String pCorreo){ - correo=pCorreo; -} - -/**Obtiene el valor de responsable -@return valor de responsable*/ -public String getResponsable(){ - return responsable; -} -/**Fija el valor de responsable -@param pResponsable nuevo Valor de responsable*/ -public void setResponsable(String pResponsable){ - responsable=pResponsable; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocodigo -@return valor de estadocodigo*/ -public String getEstadocodigo(){ - return estadocodigo; -} -/**Fija el valor de estadocodigo -@param pEstadocodigo nuevo Valor de estadocodigo*/ -public void setEstadocodigo(String pEstadocodigo){ - estadocodigo=pEstadocodigo; -} - -/**Obtiene el valor de fautorizacion -@return valor de fautorizacion*/ -public Date getFautorizacion(){ - return fautorizacion; -} -/**Fija el valor de fautorizacion -@param pFautorizacion nuevo Valor de fautorizacion*/ -public void setFautorizacion(Date pFautorizacion){ - fautorizacion=pFautorizacion; -} - -/**Obtiene el valor de nombre -@return valor de nombre*/ -public String getNombre(){ - return nombre; -} -/**Fija el valor de nombre -@param pNombre nuevo Valor de nombre*/ -public void setNombre(String pNombre){ - nombre=pNombre; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmAgenciaSucursal))return false; - TarmAgenciaSucursal that = (TarmAgenciaSucursal) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmAgenciaSucursal -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmAgenciaSucursal -*/ -public Object createInstance(){ - TarmAgenciaSucursal instance=new TarmAgenciaSucursal(); - return instance; -} -/**Clona la entidad TarmAgenciaSucursal -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmAgenciaSucursal p=(TarmAgenciaSucursal)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.netbeans-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.netbeans-base deleted file mode 100644 index 0876f76..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.netbeans-base +++ /dev/null @@ -1,390 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMARMAPRUEBAS*/ -@Entity(name="TarmArmaPruebas") -@Table(name="TARMARMAPRUEBAS") -public class TarmArmaPruebas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmArmaPruebas -*/ -@Id -@Column(name="CARMAPRUEBA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CARMAPRUEBA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) -@GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Column(name="OBSERVACION", nullable=true) - -/** -* null -*/ -private String observacion; - -@Column(name="XPATHIMPRONTA", nullable=true) - -/** -* null -*/ -private String xpathimpronta; - -@Column(name="XPATHFOTOGRAFIA", nullable=true) - -/** -* null -*/ -private String xpathfotografia; - -@Column(name="APTITUDDISPARO", nullable=true) - -/** -* null -*/ -private String aptituddisparo; - - -@Column(name="XPATHFICHATECARMAS", nullable=true) - -/** -* null -*/ -private String xpathfichatecarmas; - - -@Column(name="BALASTESTIGO", nullable=true) - -/** -* null -*/ -private String balastestigo; - -@Column(name="TUBOCANION", nullable=true) - -/** -* null -*/ -private String tubocanion; - -@Column(name="APRUEBAEVALUACION", nullable=true) - -/** -* null -*/ -private String apruebaevaluacion; - - - -@Column(name="VAINASTESTIGO", nullable=true) - -/** -* null -*/ -private String vainastestigo; - - -@Column(name = "IMAGENIMPRONTA", unique = false, nullable = false, length = 100000) - -/** -* null -*/ -private byte[] imagenimpronta; - -@Column(name = "IMAGENFOTOGRAFIA", unique = false, nullable = false, length = 100000) - -/** -* null -*/ -private byte[] imagenfotografia; - -@Column(name="ISIMPRESO", nullable=true) - -/** -* null -*/ -private String isimpreso; - - -/**Contructor por defecto*/ -public TarmArmaPruebas(){ -} -/**Contructor de TarmArmaPruebas -@param pPk Clave Primaria del entity -*/ -public TarmArmaPruebas(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmArmaPruebas -*/ -public static TarmArmaPruebas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmArmaPruebas obj = pEntityManager.find(TarmArmaPruebas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmArmaPruebas -@return El objeto que referencia a la Clave primaria de TarmArmaPruebas -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmArmaPruebas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmArmaPruebas -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de xpathimpronta -@return valor de xpathimpronta*/ -public String getXpathimpronta(){ - return xpathimpronta; -} -/**Fija el valor de xpathimpronta -@param pXpathimpronta nuevo Valor de xpathimpronta*/ -public void setXpathimpronta(String pXpathimpronta){ - xpathimpronta=pXpathimpronta; -} - -/**Obtiene el valor de xpathfotografia -@return valor de xpathfotografia*/ -public String getXpathfotografia(){ - return xpathfotografia; -} -/**Fija el valor de xpathfotografia -@param pXpathfotografia nuevo Valor de xpathfotografia*/ -public void setXpathfotografia(String pXpathfotografia){ - xpathfotografia=pXpathfotografia; -} - -public String getXpathfichatecarmas() { - return xpathfichatecarmas; -} -public void setXpathfichatecarmas(String xpathfichatecarmas) { - this.xpathfichatecarmas = xpathfichatecarmas; -} -/**Obtiene el valor de aptituddisparo -@return valor de aptituddisparo*/ -public String getAptituddisparo(){ - return aptituddisparo; -} -/**Fija el valor de aptituddisparo -@param pAptituddisparo nuevo Valor de aptituddisparo*/ -public void setAptituddisparo(String pAptituddisparo){ - aptituddisparo=pAptituddisparo; -} - -/**Obtiene el valor de balastestigo -@return valor de balastestigo*/ -public String getBalastestigo(){ - return balastestigo; -} -/**Fija el valor de balastestigo -@param pBalastestigo nuevo Valor de balastestigo*/ -public void setBalastestigo(String pBalastestigo){ - balastestigo=pBalastestigo; -} - -/**Obtiene el valor de vainastestigo -@return valor de vainastestigo*/ -public String getVainastestigo(){ - return vainastestigo; -} -/**Fija el valor de vainastestigo -@param pVainastestigo nuevo Valor de vainastestigo*/ -public void setVainastestigo(String pVainastestigo){ - vainastestigo=pVainastestigo; -} - -/**Obtiene el valor de apruebaevaluacion -@return valor de apruebaevaluacion*/ -public String getApruebaevaluacion(){ - return apruebaevaluacion; -} -/**Fija el valor de apruebaevaluacion -@param pApruebaevaluacion nuevo Valor de apruebaevaluacion*/ -public void setApruebaevaluacion(String pApruebaevaluacion){ - apruebaevaluacion=pApruebaevaluacion; -} - - -public byte[] getImagenimpronta() { - return imagenimpronta; -} -public void setImagenimpronta(byte[] imagenimpronta) { - this.imagenimpronta = imagenimpronta; -} -public byte[] getImagenfotografia() { - return imagenfotografia; -} -public void setImagenfotografia(byte[] imagenfotografia) { - this.imagenfotografia = imagenfotografia; -} - -public String getIsimpreso() { - return isimpreso; -} -public void setIsimpreso(String isimpreso) { - this.isimpreso = isimpreso; -} - -public String getTubocanion() { - return tubocanion; -} -public void setTubocanion(String tubocanion) { - this.tubocanion = tubocanion; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmArmaPruebas))return false; - TarmArmaPruebas that = (TarmArmaPruebas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmArmaPruebas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmArmaPruebas -*/ -public Object createInstance(){ - TarmArmaPruebas instance=new TarmArmaPruebas(); - return instance; -} -/**Clona la entidad TarmArmaPruebas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmArmaPruebas p=(TarmArmaPruebas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.svn-base deleted file mode 100644 index 0876f76..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmaPruebas.java.svn-base +++ /dev/null @@ -1,390 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMARMAPRUEBAS*/ -@Entity(name="TarmArmaPruebas") -@Table(name="TARMARMAPRUEBAS") -public class TarmArmaPruebas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmArmaPruebas -*/ -@Id -@Column(name="CARMAPRUEBA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CARMAPRUEBA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) -@GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Column(name="OBSERVACION", nullable=true) - -/** -* null -*/ -private String observacion; - -@Column(name="XPATHIMPRONTA", nullable=true) - -/** -* null -*/ -private String xpathimpronta; - -@Column(name="XPATHFOTOGRAFIA", nullable=true) - -/** -* null -*/ -private String xpathfotografia; - -@Column(name="APTITUDDISPARO", nullable=true) - -/** -* null -*/ -private String aptituddisparo; - - -@Column(name="XPATHFICHATECARMAS", nullable=true) - -/** -* null -*/ -private String xpathfichatecarmas; - - -@Column(name="BALASTESTIGO", nullable=true) - -/** -* null -*/ -private String balastestigo; - -@Column(name="TUBOCANION", nullable=true) - -/** -* null -*/ -private String tubocanion; - -@Column(name="APRUEBAEVALUACION", nullable=true) - -/** -* null -*/ -private String apruebaevaluacion; - - - -@Column(name="VAINASTESTIGO", nullable=true) - -/** -* null -*/ -private String vainastestigo; - - -@Column(name = "IMAGENIMPRONTA", unique = false, nullable = false, length = 100000) - -/** -* null -*/ -private byte[] imagenimpronta; - -@Column(name = "IMAGENFOTOGRAFIA", unique = false, nullable = false, length = 100000) - -/** -* null -*/ -private byte[] imagenfotografia; - -@Column(name="ISIMPRESO", nullable=true) - -/** -* null -*/ -private String isimpreso; - - -/**Contructor por defecto*/ -public TarmArmaPruebas(){ -} -/**Contructor de TarmArmaPruebas -@param pPk Clave Primaria del entity -*/ -public TarmArmaPruebas(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmArmaPruebas -*/ -public static TarmArmaPruebas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmArmaPruebas obj = pEntityManager.find(TarmArmaPruebas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmArmaPruebas -@return El objeto que referencia a la Clave primaria de TarmArmaPruebas -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmArmaPruebas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmArmaPruebas -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de xpathimpronta -@return valor de xpathimpronta*/ -public String getXpathimpronta(){ - return xpathimpronta; -} -/**Fija el valor de xpathimpronta -@param pXpathimpronta nuevo Valor de xpathimpronta*/ -public void setXpathimpronta(String pXpathimpronta){ - xpathimpronta=pXpathimpronta; -} - -/**Obtiene el valor de xpathfotografia -@return valor de xpathfotografia*/ -public String getXpathfotografia(){ - return xpathfotografia; -} -/**Fija el valor de xpathfotografia -@param pXpathfotografia nuevo Valor de xpathfotografia*/ -public void setXpathfotografia(String pXpathfotografia){ - xpathfotografia=pXpathfotografia; -} - -public String getXpathfichatecarmas() { - return xpathfichatecarmas; -} -public void setXpathfichatecarmas(String xpathfichatecarmas) { - this.xpathfichatecarmas = xpathfichatecarmas; -} -/**Obtiene el valor de aptituddisparo -@return valor de aptituddisparo*/ -public String getAptituddisparo(){ - return aptituddisparo; -} -/**Fija el valor de aptituddisparo -@param pAptituddisparo nuevo Valor de aptituddisparo*/ -public void setAptituddisparo(String pAptituddisparo){ - aptituddisparo=pAptituddisparo; -} - -/**Obtiene el valor de balastestigo -@return valor de balastestigo*/ -public String getBalastestigo(){ - return balastestigo; -} -/**Fija el valor de balastestigo -@param pBalastestigo nuevo Valor de balastestigo*/ -public void setBalastestigo(String pBalastestigo){ - balastestigo=pBalastestigo; -} - -/**Obtiene el valor de vainastestigo -@return valor de vainastestigo*/ -public String getVainastestigo(){ - return vainastestigo; -} -/**Fija el valor de vainastestigo -@param pVainastestigo nuevo Valor de vainastestigo*/ -public void setVainastestigo(String pVainastestigo){ - vainastestigo=pVainastestigo; -} - -/**Obtiene el valor de apruebaevaluacion -@return valor de apruebaevaluacion*/ -public String getApruebaevaluacion(){ - return apruebaevaluacion; -} -/**Fija el valor de apruebaevaluacion -@param pApruebaevaluacion nuevo Valor de apruebaevaluacion*/ -public void setApruebaevaluacion(String pApruebaevaluacion){ - apruebaevaluacion=pApruebaevaluacion; -} - - -public byte[] getImagenimpronta() { - return imagenimpronta; -} -public void setImagenimpronta(byte[] imagenimpronta) { - this.imagenimpronta = imagenimpronta; -} -public byte[] getImagenfotografia() { - return imagenfotografia; -} -public void setImagenfotografia(byte[] imagenfotografia) { - this.imagenfotografia = imagenfotografia; -} - -public String getIsimpreso() { - return isimpreso; -} -public void setIsimpreso(String isimpreso) { - this.isimpreso = isimpreso; -} - -public String getTubocanion() { - return tubocanion; -} -public void setTubocanion(String tubocanion) { - this.tubocanion = tubocanion; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmArmaPruebas))return false; - TarmArmaPruebas that = (TarmArmaPruebas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmArmaPruebas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmArmaPruebas -*/ -public Object createInstance(){ - TarmArmaPruebas instance=new TarmArmaPruebas(); - return instance; -} -/**Clona la entidad TarmArmaPruebas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmArmaPruebas p=(TarmArmaPruebas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.netbeans-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.netbeans-base deleted file mode 100644 index 456e172..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.netbeans-base +++ /dev/null @@ -1,791 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMARMAS*/ -@Entity(name="TarmArmas") -@Table(name="TARMARMAS") -public class TarmArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmArmas -*/ -@Id -@Column(name="CARMA" ,nullable=false, updatable=false) -private String pk; -@Column(name="MARCA", nullable=true) - -/** -* null -*/ -private String marca; - -@Column(name="MARCACODIGO", nullable=true) - -/** -* null -*/ -private String marcacodigo; - -@Column(name="PARTIDAARANCELARIA", nullable=true) - -/** -* Partida arancelaria -*/ -private String partidaarancelaria; - -@Column(name="PARTIDAARANCELARIACODIGO", nullable=true) - -/** -* Partida arancelaria codigo -*/ -private String partidaarancelariacodigo; - -@Column(name="TIPOFABRICACION", nullable=true) - -/** -* null -*/ -private String tipofabricacion; - -@Column(name="TIPOFABRICACIONCODIGO", nullable=true) - -/** -* null -*/ -private String tipofabricacioncodigo; - -@Column(name="COLOR", nullable=true) - -/** -* null -*/ -private String color; - -@Column(name="COLORCODIGO", nullable=true) - -/** -* null -*/ -private String colorcodigo; - -@Column(name="CPAISORIGEN", nullable=true) - -/** -* null -*/ -private String cpaisorigen; - -@Column(name="UNIDADMEDIDACANTIDAD", nullable=true) - -/** -* null -*/ -private String unidadmedidacantidad; - -@Column(name="UNIDADMEDIDACANTIDADCODIGO", nullable=true) - -/** -* null -*/ -private String unidadmedidacantidadcodigo; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="ESTADOCODIGO", nullable=true) - -/** -* null -*/ -private String estadocodigo; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* null -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* null -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=true) - -/** -* null -*/ -private String cantoncode; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* null -*/ -private String parroquiacode; - -@Column(name="CREGISTRO", nullable=true) - -/** -* null -*/ -private Long cregistro; - -@Column(name="CITYCODE", nullable=true) - -/** -* null -*/ -private String citycode; - -@Column(name="LOTE", nullable=true) - -/** -* null -*/ -private String lote; - -@Column(name="CANTIDAD", nullable=true) - -/** -* null -*/ -private Integer cantidad; - -@Column(name="PESO", nullable=true) - -/** -* null -*/ -private BigDecimal peso; - -@Column(name="MODELO", nullable=true) - -/** -* null -*/ -private String modelo; - -@Column(name="SERIECANON", nullable=true) - -/** -* null -*/ -private String seriecanon; - -@Column(name="FEMISIONPERMISO", nullable=true) - -/** -* null -*/ -private Date femisionpermiso; - -@Column(name="DIRECCION", nullable=true) - -/** -* null -*/ -private String direccion; - -@Column(name="NEMONICOARMA", nullable=true) - -/** -* null -*/ -private String nemonicoarma; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* null -*/ -private Date fecharegistro; - -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="CTIPOARMAEXPLOSIVO", nullable=true) - -/** -* null -*/ -private String ctipoarmaexplosivo; - -@Column(name="CODIGOARMA", nullable=true) - -/** -* Codigo identificador de arma -*/ -private String codigoarma; - -@Column(name="FDESADUANIZACION", nullable=true) - -/** -* null -*/ -private Date fdesaduanizacion; - -@Column(name="ESTADODECOMISO", nullable=true) - -/** -* null -*/ -private String estadoDecomiso; - - -@Column(name="ESTADOVENTA", nullable=true) - -/** -* null -*/ -private String estadoventa; - -@Column(name="PATHDOCUMENTO", nullable=true) - -private String pathDocumento; - -/**valor auxiliar - * - */ -@Transient -private int valorAux; - -/**valor auxiliar - * - */ -@Transient -private BigDecimal pesoAux; - -@Column(name="FECHACADUCIDAD", nullable=true) - -/** -* fecha de caducidad del documento habilitante -*/ -private Date fechacaducidad; - -@Column(name="PATHDOCUMENTOCREAR", nullable=true) -private String pathDocumentocrear; - -@Column(name="GENERACERTIFICADO", nullable=true) -private String generacertificado; - - - -public int getValorAux() { - return valorAux; -} -public void setValorAux(int valorAux) { - this.valorAux = valorAux; -} -public BigDecimal getPesoAux() { - return pesoAux; -} -public void setPesoAux(BigDecimal pesoAux) { - this.pesoAux = pesoAux; -} - -/**Contructor por defecto*/ -public TarmArmas(){ -} -/**Contructor de TarmArmas -@param pPk Clave Primaria del entity -*/ -public TarmArmas(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmArmas -*/ -public static TarmArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmArmas obj = pEntityManager.find(TarmArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmArmas -@return El objeto que referencia a la Clave primaria de TarmArmas -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmArmas -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de marca -@return valor de marca*/ -public String getMarca(){ - return marca; -} -/**Fija el valor de marca -@param pMarca nuevo Valor de marca*/ -public void setMarca(String pMarca){ - marca=pMarca; -} - -/**Obtiene el valor de marcacodigo -@return valor de marcacodigo*/ -public String getMarcacodigo(){ - return marcacodigo; -} -/**Fija el valor de marcacodigo -@param pMarcacodigo nuevo Valor de marcacodigo*/ -public void setMarcacodigo(String pMarcacodigo){ - marcacodigo=pMarcacodigo; -} - -/**Obtiene el valor de tipofabricacion -@return valor de tipofabricacion*/ -public String getTipofabricacion(){ - return tipofabricacion; -} -/**Fija el valor de tipofabricacion -@param pTipofabricacion nuevo Valor de tipofabricacion*/ -public void setTipofabricacion(String pTipofabricacion){ - tipofabricacion=pTipofabricacion; -} - -/**Obtiene el valor de tipofabricacioncodigo -@return valor de tipofabricacioncodigo*/ -public String getTipofabricacioncodigo(){ - return tipofabricacioncodigo; -} -/**Fija el valor de tipofabricacioncodigo -@param pTipofabricacioncodigo nuevo Valor de tipofabricacioncodigo*/ -public void setTipofabricacioncodigo(String pTipofabricacioncodigo){ - tipofabricacioncodigo=pTipofabricacioncodigo; -} - -/**Obtiene el valor de color -@return valor de color*/ -public String getColor(){ - return color; -} -/**Fija el valor de color -@param pColor nuevo Valor de color*/ -public void setColor(String pColor){ - color=pColor; -} - -/**Obtiene el valor de colorcodigo -@return valor de colorcodigo*/ -public String getColorcodigo(){ - return colorcodigo; -} -/**Fija el valor de colorcodigo -@param pColorcodigo nuevo Valor de colorcodigo*/ -public void setColorcodigo(String pColorcodigo){ - colorcodigo=pColorcodigo; -} - -/**Obtiene el valor de cpaisorigen -@return valor de cpaisorigen*/ -public String getCpaisorigen(){ - return cpaisorigen; -} -/**Fija el valor de cpaisorigen -@param pCpaisorigen nuevo Valor de cpaisorigen*/ -public void setCpaisorigen(String pCpaisorigen){ - cpaisorigen=pCpaisorigen; -} - -/**Obtiene el valor de unidadmedidacantidad -@return valor de unidadmedidacantidad*/ -public String getUnidadmedidacantidad(){ - return unidadmedidacantidad; -} -/**Fija el valor de unidadmedidacantidad -@param pUnidadmedidacantidad nuevo Valor de unidadmedidacantidad*/ -public void setUnidadmedidacantidad(String pUnidadmedidacantidad){ - unidadmedidacantidad=pUnidadmedidacantidad; -} - -/**Obtiene el valor de unidadmedidacantidadcodigo -@return valor de unidadmedidacantidadcodigo*/ -public String getUnidadmedidacantidadcodigo(){ - return unidadmedidacantidadcodigo; -} -/**Fija el valor de unidadmedidacantidadcodigo -@param pUnidadmedidacantidadcodigo nuevo Valor de unidadmedidacantidadcodigo*/ -public void setUnidadmedidacantidadcodigo(String pUnidadmedidacantidadcodigo){ - unidadmedidacantidadcodigo=pUnidadmedidacantidadcodigo; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocodigo -@return valor de estadocodigo*/ -public String getEstadocodigo(){ - return estadocodigo; -} -/**Fija el valor de estadocodigo -@param pEstadocodigo nuevo Valor de estadocodigo*/ -public void setEstadocodigo(String pEstadocodigo){ - estadocodigo=pEstadocodigo; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de cregistro -@return valor de cregistro*/ -public Long getCregistro(){ - return cregistro; -} -/**Fija el valor de cregistro -@param pCregistro nuevo Valor de cregistro*/ -public void setCregistro(Long pCregistro){ - cregistro=pCregistro; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de lote -@return valor de lote*/ -public String getLote(){ - return lote; -} -/**Fija el valor de lote -@param pLote nuevo Valor de lote*/ -public void setLote(String pLote){ - lote=pLote; -} - -/**Obtiene el valor de cantidad -@return valor de cantidad*/ -public Integer getCantidad(){ - return cantidad; -} -/**Fija el valor de cantidad -@param pCantidad nuevo Valor de cantidad*/ -public void setCantidad(Integer pCantidad){ - cantidad=pCantidad; -} - -/**Obtiene el valor de peso -@return valor de peso*/ -public BigDecimal getPeso(){ - return peso; -} -/**Fija el valor de peso -@param pPeso nuevo Valor de peso*/ -public void setPeso(BigDecimal pPeso){ - peso=pPeso; -} - -/**Obtiene el valor de modelo -@return valor de modelo*/ -public String getModelo(){ - return modelo; -} -/**Fija el valor de modelo -@param pModelo nuevo Valor de modelo*/ -public void setModelo(String pModelo){ - modelo=pModelo; -} - -/**Obtiene el valor de seriecanon -@return valor de seriecanon*/ -public String getSeriecanon(){ - return seriecanon; -} -/**Fija el valor de seriecanon -@param pSeriecanon nuevo Valor de seriecanon*/ -public void setSeriecanon(String pSeriecanon){ - seriecanon=pSeriecanon; -} - -/**Obtiene el valor de femisionpermiso -@return valor de femisionpermiso*/ -public Date getFemisionpermiso(){ - return femisionpermiso; -} -/**Fija el valor de femisionpermiso -@param pFemisionpermiso nuevo Valor de femisionpermiso*/ -public void setFemisionpermiso(Date pFemisionpermiso){ - femisionpermiso=pFemisionpermiso; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de nemonicoarma -@return valor de nemonicoarma*/ -public String getNemonicoarma(){ - return nemonicoarma; -} -/**Fija el valor de nemonicoarma -@param pNemonicoarma nuevo Valor de nemonicoarma*/ -public void setNemonicoarma(String pNemonicoarma){ - nemonicoarma=pNemonicoarma; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de ctipoarmaexplosivo -@return valor de ctipoarmaexplosivo*/ -public String getCtipoarmaexplosivo(){ - return ctipoarmaexplosivo; -} -/**Fija el valor de ctipoarmaexplosivo -@param pCtipoarmaexplosivo nuevo Valor de ctipoarmaexplosivo*/ -public void setCtipoarmaexplosivo(String pCtipoarmaexplosivo){ - ctipoarmaexplosivo=pCtipoarmaexplosivo; -} - -/**Obtiene el valor de codigoarma -@return valor de codigoarma*/ -public String getCodigoarma(){ - return codigoarma; -} -/**Fija el valor de codigoarma -@param pCodigoarma nuevo Valor de codigoarma*/ -public void setCodigoarma(String pCodigoarma){ - codigoarma=pCodigoarma; -} - -/**Obtiene el valor de fdesaduanizacion -@return valor de fdesaduanizacion*/ -public Date getFdesaduanizacion() { - return fdesaduanizacion; -} -/**Fija el valor de fdesaduanizacion -@param pCodigoarma nuevo Valor de fdesaduanizacion*/ -public void setFdesaduanizacion(Date fdesaduanizacion) { - this.fdesaduanizacion = fdesaduanizacion; -} - -/**Obtiene el valor de fechacaducidad -@return valor de fechacaducidad*/ -public Date getFechacaducidad(){ - return fechacaducidad; -} -/**Fija el valor de fechacaducidad -@param pFechacaducidad nuevo Valor de fechacaducidad*/ -public void setFechacaducidad(Date pFechacaducidad){ - fechacaducidad=pFechacaducidad; -} -public String getPartidaarancelaria() { - return partidaarancelaria; -} -public void setPartidaarancelaria(String partidaarancelaria) { - this.partidaarancelaria = partidaarancelaria; -} -public String getPartidaarancelariacodigo() { - return partidaarancelariacodigo; -} -public void setPartidaarancelariacodigo(String partidaarancelariacodigo) { - this.partidaarancelariacodigo = partidaarancelariacodigo; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmArmas))return false; - TarmArmas that = (TarmArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmArmas -*/ -public Object createInstance(){ - TarmArmas instance=new TarmArmas(); - return instance; -} -/**Clona la entidad TarmArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmArmas p=(TarmArmas)this.clone(); - return p; -} -public String getEstadoDecomiso() { - return estadoDecomiso; -} -public void setEstadoDecomiso(String estadoDecomiso) { - this.estadoDecomiso = estadoDecomiso; -} -public String getEstadoventa() { - return estadoventa; -} -public void setEstadoventa(String estadoventa) { - this.estadoventa = estadoventa; -} -public String getPathDocumento() { - return pathDocumento; -} -public void setPathDocumento(String pathDocumento) { - this.pathDocumento = pathDocumento; -} -public String getPathDocumentocrear() { - return pathDocumentocrear; -} -public void setPathDocumentocrear(String pathDocumentocrear) { - this.pathDocumentocrear = pathDocumentocrear; -} -public String getGeneracertificado() { - return generacertificado; -} -public void setGeneracertificado(String generacertificado) { - this.generacertificado = generacertificado; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.svn-base deleted file mode 100644 index 456e172..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmArmas.java.svn-base +++ /dev/null @@ -1,791 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMARMAS*/ -@Entity(name="TarmArmas") -@Table(name="TARMARMAS") -public class TarmArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmArmas -*/ -@Id -@Column(name="CARMA" ,nullable=false, updatable=false) -private String pk; -@Column(name="MARCA", nullable=true) - -/** -* null -*/ -private String marca; - -@Column(name="MARCACODIGO", nullable=true) - -/** -* null -*/ -private String marcacodigo; - -@Column(name="PARTIDAARANCELARIA", nullable=true) - -/** -* Partida arancelaria -*/ -private String partidaarancelaria; - -@Column(name="PARTIDAARANCELARIACODIGO", nullable=true) - -/** -* Partida arancelaria codigo -*/ -private String partidaarancelariacodigo; - -@Column(name="TIPOFABRICACION", nullable=true) - -/** -* null -*/ -private String tipofabricacion; - -@Column(name="TIPOFABRICACIONCODIGO", nullable=true) - -/** -* null -*/ -private String tipofabricacioncodigo; - -@Column(name="COLOR", nullable=true) - -/** -* null -*/ -private String color; - -@Column(name="COLORCODIGO", nullable=true) - -/** -* null -*/ -private String colorcodigo; - -@Column(name="CPAISORIGEN", nullable=true) - -/** -* null -*/ -private String cpaisorigen; - -@Column(name="UNIDADMEDIDACANTIDAD", nullable=true) - -/** -* null -*/ -private String unidadmedidacantidad; - -@Column(name="UNIDADMEDIDACANTIDADCODIGO", nullable=true) - -/** -* null -*/ -private String unidadmedidacantidadcodigo; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="ESTADOCODIGO", nullable=true) - -/** -* null -*/ -private String estadocodigo; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* null -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* null -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=true) - -/** -* null -*/ -private String cantoncode; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* null -*/ -private String parroquiacode; - -@Column(name="CREGISTRO", nullable=true) - -/** -* null -*/ -private Long cregistro; - -@Column(name="CITYCODE", nullable=true) - -/** -* null -*/ -private String citycode; - -@Column(name="LOTE", nullable=true) - -/** -* null -*/ -private String lote; - -@Column(name="CANTIDAD", nullable=true) - -/** -* null -*/ -private Integer cantidad; - -@Column(name="PESO", nullable=true) - -/** -* null -*/ -private BigDecimal peso; - -@Column(name="MODELO", nullable=true) - -/** -* null -*/ -private String modelo; - -@Column(name="SERIECANON", nullable=true) - -/** -* null -*/ -private String seriecanon; - -@Column(name="FEMISIONPERMISO", nullable=true) - -/** -* null -*/ -private Date femisionpermiso; - -@Column(name="DIRECCION", nullable=true) - -/** -* null -*/ -private String direccion; - -@Column(name="NEMONICOARMA", nullable=true) - -/** -* null -*/ -private String nemonicoarma; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* null -*/ -private Date fecharegistro; - -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="CTIPOARMAEXPLOSIVO", nullable=true) - -/** -* null -*/ -private String ctipoarmaexplosivo; - -@Column(name="CODIGOARMA", nullable=true) - -/** -* Codigo identificador de arma -*/ -private String codigoarma; - -@Column(name="FDESADUANIZACION", nullable=true) - -/** -* null -*/ -private Date fdesaduanizacion; - -@Column(name="ESTADODECOMISO", nullable=true) - -/** -* null -*/ -private String estadoDecomiso; - - -@Column(name="ESTADOVENTA", nullable=true) - -/** -* null -*/ -private String estadoventa; - -@Column(name="PATHDOCUMENTO", nullable=true) - -private String pathDocumento; - -/**valor auxiliar - * - */ -@Transient -private int valorAux; - -/**valor auxiliar - * - */ -@Transient -private BigDecimal pesoAux; - -@Column(name="FECHACADUCIDAD", nullable=true) - -/** -* fecha de caducidad del documento habilitante -*/ -private Date fechacaducidad; - -@Column(name="PATHDOCUMENTOCREAR", nullable=true) -private String pathDocumentocrear; - -@Column(name="GENERACERTIFICADO", nullable=true) -private String generacertificado; - - - -public int getValorAux() { - return valorAux; -} -public void setValorAux(int valorAux) { - this.valorAux = valorAux; -} -public BigDecimal getPesoAux() { - return pesoAux; -} -public void setPesoAux(BigDecimal pesoAux) { - this.pesoAux = pesoAux; -} - -/**Contructor por defecto*/ -public TarmArmas(){ -} -/**Contructor de TarmArmas -@param pPk Clave Primaria del entity -*/ -public TarmArmas(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmArmas -*/ -public static TarmArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmArmas obj = pEntityManager.find(TarmArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmArmas -@return El objeto que referencia a la Clave primaria de TarmArmas -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmArmas -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de marca -@return valor de marca*/ -public String getMarca(){ - return marca; -} -/**Fija el valor de marca -@param pMarca nuevo Valor de marca*/ -public void setMarca(String pMarca){ - marca=pMarca; -} - -/**Obtiene el valor de marcacodigo -@return valor de marcacodigo*/ -public String getMarcacodigo(){ - return marcacodigo; -} -/**Fija el valor de marcacodigo -@param pMarcacodigo nuevo Valor de marcacodigo*/ -public void setMarcacodigo(String pMarcacodigo){ - marcacodigo=pMarcacodigo; -} - -/**Obtiene el valor de tipofabricacion -@return valor de tipofabricacion*/ -public String getTipofabricacion(){ - return tipofabricacion; -} -/**Fija el valor de tipofabricacion -@param pTipofabricacion nuevo Valor de tipofabricacion*/ -public void setTipofabricacion(String pTipofabricacion){ - tipofabricacion=pTipofabricacion; -} - -/**Obtiene el valor de tipofabricacioncodigo -@return valor de tipofabricacioncodigo*/ -public String getTipofabricacioncodigo(){ - return tipofabricacioncodigo; -} -/**Fija el valor de tipofabricacioncodigo -@param pTipofabricacioncodigo nuevo Valor de tipofabricacioncodigo*/ -public void setTipofabricacioncodigo(String pTipofabricacioncodigo){ - tipofabricacioncodigo=pTipofabricacioncodigo; -} - -/**Obtiene el valor de color -@return valor de color*/ -public String getColor(){ - return color; -} -/**Fija el valor de color -@param pColor nuevo Valor de color*/ -public void setColor(String pColor){ - color=pColor; -} - -/**Obtiene el valor de colorcodigo -@return valor de colorcodigo*/ -public String getColorcodigo(){ - return colorcodigo; -} -/**Fija el valor de colorcodigo -@param pColorcodigo nuevo Valor de colorcodigo*/ -public void setColorcodigo(String pColorcodigo){ - colorcodigo=pColorcodigo; -} - -/**Obtiene el valor de cpaisorigen -@return valor de cpaisorigen*/ -public String getCpaisorigen(){ - return cpaisorigen; -} -/**Fija el valor de cpaisorigen -@param pCpaisorigen nuevo Valor de cpaisorigen*/ -public void setCpaisorigen(String pCpaisorigen){ - cpaisorigen=pCpaisorigen; -} - -/**Obtiene el valor de unidadmedidacantidad -@return valor de unidadmedidacantidad*/ -public String getUnidadmedidacantidad(){ - return unidadmedidacantidad; -} -/**Fija el valor de unidadmedidacantidad -@param pUnidadmedidacantidad nuevo Valor de unidadmedidacantidad*/ -public void setUnidadmedidacantidad(String pUnidadmedidacantidad){ - unidadmedidacantidad=pUnidadmedidacantidad; -} - -/**Obtiene el valor de unidadmedidacantidadcodigo -@return valor de unidadmedidacantidadcodigo*/ -public String getUnidadmedidacantidadcodigo(){ - return unidadmedidacantidadcodigo; -} -/**Fija el valor de unidadmedidacantidadcodigo -@param pUnidadmedidacantidadcodigo nuevo Valor de unidadmedidacantidadcodigo*/ -public void setUnidadmedidacantidadcodigo(String pUnidadmedidacantidadcodigo){ - unidadmedidacantidadcodigo=pUnidadmedidacantidadcodigo; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocodigo -@return valor de estadocodigo*/ -public String getEstadocodigo(){ - return estadocodigo; -} -/**Fija el valor de estadocodigo -@param pEstadocodigo nuevo Valor de estadocodigo*/ -public void setEstadocodigo(String pEstadocodigo){ - estadocodigo=pEstadocodigo; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de cregistro -@return valor de cregistro*/ -public Long getCregistro(){ - return cregistro; -} -/**Fija el valor de cregistro -@param pCregistro nuevo Valor de cregistro*/ -public void setCregistro(Long pCregistro){ - cregistro=pCregistro; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de lote -@return valor de lote*/ -public String getLote(){ - return lote; -} -/**Fija el valor de lote -@param pLote nuevo Valor de lote*/ -public void setLote(String pLote){ - lote=pLote; -} - -/**Obtiene el valor de cantidad -@return valor de cantidad*/ -public Integer getCantidad(){ - return cantidad; -} -/**Fija el valor de cantidad -@param pCantidad nuevo Valor de cantidad*/ -public void setCantidad(Integer pCantidad){ - cantidad=pCantidad; -} - -/**Obtiene el valor de peso -@return valor de peso*/ -public BigDecimal getPeso(){ - return peso; -} -/**Fija el valor de peso -@param pPeso nuevo Valor de peso*/ -public void setPeso(BigDecimal pPeso){ - peso=pPeso; -} - -/**Obtiene el valor de modelo -@return valor de modelo*/ -public String getModelo(){ - return modelo; -} -/**Fija el valor de modelo -@param pModelo nuevo Valor de modelo*/ -public void setModelo(String pModelo){ - modelo=pModelo; -} - -/**Obtiene el valor de seriecanon -@return valor de seriecanon*/ -public String getSeriecanon(){ - return seriecanon; -} -/**Fija el valor de seriecanon -@param pSeriecanon nuevo Valor de seriecanon*/ -public void setSeriecanon(String pSeriecanon){ - seriecanon=pSeriecanon; -} - -/**Obtiene el valor de femisionpermiso -@return valor de femisionpermiso*/ -public Date getFemisionpermiso(){ - return femisionpermiso; -} -/**Fija el valor de femisionpermiso -@param pFemisionpermiso nuevo Valor de femisionpermiso*/ -public void setFemisionpermiso(Date pFemisionpermiso){ - femisionpermiso=pFemisionpermiso; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de nemonicoarma -@return valor de nemonicoarma*/ -public String getNemonicoarma(){ - return nemonicoarma; -} -/**Fija el valor de nemonicoarma -@param pNemonicoarma nuevo Valor de nemonicoarma*/ -public void setNemonicoarma(String pNemonicoarma){ - nemonicoarma=pNemonicoarma; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de ctipoarmaexplosivo -@return valor de ctipoarmaexplosivo*/ -public String getCtipoarmaexplosivo(){ - return ctipoarmaexplosivo; -} -/**Fija el valor de ctipoarmaexplosivo -@param pCtipoarmaexplosivo nuevo Valor de ctipoarmaexplosivo*/ -public void setCtipoarmaexplosivo(String pCtipoarmaexplosivo){ - ctipoarmaexplosivo=pCtipoarmaexplosivo; -} - -/**Obtiene el valor de codigoarma -@return valor de codigoarma*/ -public String getCodigoarma(){ - return codigoarma; -} -/**Fija el valor de codigoarma -@param pCodigoarma nuevo Valor de codigoarma*/ -public void setCodigoarma(String pCodigoarma){ - codigoarma=pCodigoarma; -} - -/**Obtiene el valor de fdesaduanizacion -@return valor de fdesaduanizacion*/ -public Date getFdesaduanizacion() { - return fdesaduanizacion; -} -/**Fija el valor de fdesaduanizacion -@param pCodigoarma nuevo Valor de fdesaduanizacion*/ -public void setFdesaduanizacion(Date fdesaduanizacion) { - this.fdesaduanizacion = fdesaduanizacion; -} - -/**Obtiene el valor de fechacaducidad -@return valor de fechacaducidad*/ -public Date getFechacaducidad(){ - return fechacaducidad; -} -/**Fija el valor de fechacaducidad -@param pFechacaducidad nuevo Valor de fechacaducidad*/ -public void setFechacaducidad(Date pFechacaducidad){ - fechacaducidad=pFechacaducidad; -} -public String getPartidaarancelaria() { - return partidaarancelaria; -} -public void setPartidaarancelaria(String partidaarancelaria) { - this.partidaarancelaria = partidaarancelaria; -} -public String getPartidaarancelariacodigo() { - return partidaarancelariacodigo; -} -public void setPartidaarancelariacodigo(String partidaarancelariacodigo) { - this.partidaarancelariacodigo = partidaarancelariacodigo; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmArmas))return false; - TarmArmas that = (TarmArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmArmas -*/ -public Object createInstance(){ - TarmArmas instance=new TarmArmas(); - return instance; -} -/**Clona la entidad TarmArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmArmas p=(TarmArmas)this.clone(); - return p; -} -public String getEstadoDecomiso() { - return estadoDecomiso; -} -public void setEstadoDecomiso(String estadoDecomiso) { - this.estadoDecomiso = estadoDecomiso; -} -public String getEstadoventa() { - return estadoventa; -} -public void setEstadoventa(String estadoventa) { - this.estadoventa = estadoventa; -} -public String getPathDocumento() { - return pathDocumento; -} -public void setPathDocumento(String pathDocumento) { - this.pathDocumento = pathDocumento; -} -public String getPathDocumentocrear() { - return pathDocumentocrear; -} -public void setPathDocumentocrear(String pathDocumentocrear) { - this.pathDocumentocrear = pathDocumentocrear; -} -public String getGeneracertificado() { - return generacertificado; -} -public void setGeneracertificado(String generacertificado) { - this.generacertificado = generacertificado; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmBodega.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmBodega.java.svn-base deleted file mode 100644 index 3d167b9..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmBodega.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMBODEGA*/ -@Entity(name="TarmBodega") -@Table(name="TARMBODEGA") -public class TarmBodega extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmBodega -*/ -@Id -@Column(name="CBODEGA" ,nullable=false, updatable=false) -private Long pk; -@Column(name="CARMA", nullable=true) - -/** -* codigo del arma -*/ -private String carma; - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* Codigo de centro de control de armas,codigo de la bodega donde se encuentra el arma -*/ -private String ccentrocontrol; - -/**Contructor por defecto*/ -public TarmBodega(){ -} -/**Contructor de TarmBodega -@param pPk Clave Primaria del entity -*/ -public TarmBodega(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmBodega -*/ -public static TarmBodega find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmBodega obj = pEntityManager.find(TarmBodega.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmBodega -@return El objeto que referencia a la Clave primaria de TarmBodega -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmBodega -@param pPk El objeto que referencia a la nueva Clave primaria de TarmBodega -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmBodega))return false; - TarmBodega that = (TarmBodega) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmBodega -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmBodega -*/ -public Object createInstance(){ - TarmBodega instance=new TarmBodega(); - return instance; -} -/**Clona la entidad TarmBodega -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmBodega p=(TarmBodega)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCabRepDestruirArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCabRepDestruirArmas.java.svn-base deleted file mode 100644 index e549758..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCabRepDestruirArmas.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCABREPDESTRUIRARMAS*/ -@Entity(name="TarmCabRepDestruirArmas") -@Table(name="TARMCABREPDESTRUIRARMAS") -public class TarmCabRepDestruirArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCabRepDestruirArmas -*/ -@Id -@Column(name="CREPORTE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="FREPORTE", nullable=true) - -/** -* Fecha de generacion del reporte -*/ -private Date freporte; - -@Column(name="OBSJEFEDPTO", nullable=true) - -/** -* OBSERVACIONES GENERADAS POR EL JEFE DE DPTO -*/ -private String obsjefedpto; - -@Column(name="OBSJEFECC", nullable=true) - -/** -* OBSERVACIONES GENERADAS POR EL JEFE DEL COMANDO CONJUNTO -*/ -private String obsjefecc; - -@Column(name="XPATH", nullable=true) - -/** -* null -*/ -private String xpath; - -/**Contructor por defecto*/ -public TarmCabRepDestruirArmas(){ -} -/**Contructor de TarmCabRepDestruirArmas -@param pPk Clave Primaria del entity -*/ -public TarmCabRepDestruirArmas(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCabRepDestruirArmas -*/ -public static TarmCabRepDestruirArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCabRepDestruirArmas obj = pEntityManager.find(TarmCabRepDestruirArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCabRepDestruirArmas -@return El objeto que referencia a la Clave primaria de TarmCabRepDestruirArmas -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCabRepDestruirArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCabRepDestruirArmas -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de freporte -@return valor de freporte*/ -public Date getFreporte(){ - return freporte; -} -/**Fija el valor de freporte -@param pFreporte nuevo Valor de freporte*/ -public void setFreporte(Date pFreporte){ - freporte=pFreporte; -} - -/**Obtiene el valor de obsjefedpto -@return valor de obsjefedpto*/ -public String getObsjefedpto(){ - return obsjefedpto; -} -/**Fija el valor de obsjefedpto -@param pObsjefedpto nuevo Valor de obsjefedpto*/ -public void setObsjefedpto(String pObsjefedpto){ - obsjefedpto=pObsjefedpto; -} - -/**Obtiene el valor de obsjefecc -@return valor de obsjefecc*/ -public String getObsjefecc(){ - return obsjefecc; -} -/**Fija el valor de obsjefecc -@param pObsjefecc nuevo Valor de obsjefecc*/ -public void setObsjefecc(String pObsjefecc){ - obsjefecc=pObsjefecc; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath(){ - return xpath; -} -/**Fija el valor de xpath -@param pXpath nuevo Valor de xpath*/ -public void setXpath(String pXpath){ - xpath=pXpath; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCabRepDestruirArmas))return false; - TarmCabRepDestruirArmas that = (TarmCabRepDestruirArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCabRepDestruirArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCabRepDestruirArmas -*/ -public Object createInstance(){ - TarmCabRepDestruirArmas instance=new TarmCabRepDestruirArmas(); - return instance; -} -/**Clona la entidad TarmCabRepDestruirArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCabRepDestruirArmas p=(TarmCabRepDestruirArmas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmas.java.svn-base deleted file mode 100644 index 1c387fa..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmas.java.svn-base +++ /dev/null @@ -1,393 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCERTIFICADOARMAS*/ -@Entity(name="TarmCertificadoArmas") -@Table(name="TARMCERTIFICADOARMAS") -public class TarmCertificadoArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCertificadoArmas -*/ -@EmbeddedId -private TarmCertificadoArmasKey pk; -@Column(name="LOTE", nullable=true) - -/** -* null -*/ -private String lote; - -@Column(name="PAISFABRICACION", nullable=true) - -/** -* null -*/ -private String paisfabricacion; - -@Column(name="NAME", nullable=false) - -/** -* null -*/ -private String name; - -@Column(name="CLASE", nullable=true) - -/** -* null -*/ -private String clase; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="CALIBRE", nullable=true) - -/** -* null -*/ -private String calibre; - -@Column(name="TIPOARMAEXPLOSIVO", nullable=true) - -/** -* null -*/ -private String tipoarmaexplosivo; - -@Column(name="MARCA", nullable=true) - -/** -* null -*/ -private String marca; - -@Column(name="REGISTERDATE", nullable=true) - -/** -* null -*/ -private Date registerdate; - -@Column(name="USERCODE", nullable=true) - -/** -* null -*/ -private String usercode; -@Column(name="TICKET", nullable=true) - -/** -* null -*/ -private Integer ticket; - -@Column(name="IDENTIFICATION", nullable=true) - -/** -* null -*/ -private String identification; - - - - - -@Column(name="PERMISO", nullable=true) - -/** -* null -*/ -private String permiso; - -@Column(name="FECHAEMISON", nullable=true) - -/** -* null -*/ -private Date fechaemison; - -@Column(name="FECHAEXPIRACION", nullable=true) - -/** -* null -*/ -private Date fechaexpiracion; - -/**Contructor por defecto*/ -public TarmCertificadoArmas(){ -} -/**Contructor de TarmCertificadoArmas -@param pPk Clave Primaria del entity -@param pName null -*/ -public TarmCertificadoArmas(TarmCertificadoArmasKey pPk,String pName){ - this(); - pk=pPk; - name=pName; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCertificadoArmas -*/ -public static TarmCertificadoArmas find(EntityManager pEntityManager,TarmCertificadoArmasKey pKey) throws Exception{ - TarmCertificadoArmas obj = pEntityManager.find(TarmCertificadoArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCertificadoArmas -@return El objeto que referencia a la Clave primaria de TarmCertificadoArmas -*/ -public TarmCertificadoArmasKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCertificadoArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCertificadoArmas -*/ -public void setPk(TarmCertificadoArmasKey pPk){ - pk=pPk; -} -/**Obtiene el valor de lote -@return valor de lote*/ -public String getLote(){ - return lote; -} -/**Fija el valor de lote -@param pLote nuevo Valor de lote*/ -public void setLote(String pLote){ - lote=pLote; -} - -/**Obtiene el valor de paisfabricacion -@return valor de paisfabricacion*/ -public String getPaisfabricacion(){ - return paisfabricacion; -} -/**Fija el valor de paisfabricacion -@param pPaisfabricacion nuevo Valor de paisfabricacion*/ -public void setPaisfabricacion(String pPaisfabricacion){ - paisfabricacion=pPaisfabricacion; -} - -/**Obtiene el valor de name -@return valor de name*/ -public String getName(){ - return name; -} -/**Fija el valor de name -@param pName nuevo Valor de name*/ -public void setName(String pName){ - name=pName; -} - -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de calibre -@return valor de calibre*/ -public String getCalibre(){ - return calibre; -} -/**Fija el valor de calibre -@param pCalibre nuevo Valor de calibre*/ -public void setCalibre(String pCalibre){ - calibre=pCalibre; -} - -/**Obtiene el valor de tipoarmaexplosivo -@return valor de tipoarmaexplosivo*/ -public String getTipoarmaexplosivo(){ - return tipoarmaexplosivo; -} -/**Fija el valor de tipoarmaexplosivo -@param pTipoarmaexplosivo nuevo Valor de tipoarmaexplosivo*/ -public void setTipoarmaexplosivo(String pTipoarmaexplosivo){ - tipoarmaexplosivo=pTipoarmaexplosivo; -} - -/**Obtiene el valor de marca -@return valor de marca*/ -public String getMarca(){ - return marca; -} -/**Fija el valor de marca -@param pMarca nuevo Valor de marca*/ -public void setMarca(String pMarca){ - marca=pMarca; -} - -/**Obtiene el valor de registerdate -@return valor de registerdate*/ -public Date getRegisterdate(){ - return registerdate; -} -/**Fija el valor de registerdate -@param pRegisterdate nuevo Valor de registerdate*/ -public void setRegisterdate(Date pRegisterdate){ - registerdate=pRegisterdate; -} - -/**Obtiene el valor de identification -@return valor de identification*/ -public String getIdentification(){ - return identification; -} -/**Fija el valor de identification -@param pIdentification nuevo Valor de identification*/ -public void setIdentification(String pIdentification){ - identification=pIdentification; -} - -public String getUsercode() { - return usercode; -} -public void setUsercode(String usercode) { - this.usercode = usercode; -} - -public Integer getTicket() { - return ticket; -} -public void setTicket(Integer ticket) { - this.ticket = ticket; -} -/** - * @return the permiso - */ -public String getPermiso() { - return permiso; -} -/** - * @param permiso the permiso to set - */ -public void setPermiso(String permiso) { - this.permiso = permiso; -} -/** - * @return the fechaemison - */ -public Date getFechaemison() { - return fechaemison; -} -/** - * @param fechaemison the fechaemison to set - */ -public void setFechaemison(Date fechaemison) { - this.fechaemison = fechaemison; -} -/** - * @return the fechaexpiracion - */ -public Date getFechaexpiracion() { - return fechaexpiracion; -} -/** - * @param fechaexpiracion the fechaexpiracion to set - */ -public void setFechaexpiracion(Date fechaexpiracion) { - this.fechaexpiracion = fechaexpiracion; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCertificadoArmas))return false; - TarmCertificadoArmas that = (TarmCertificadoArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCertificadoArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCertificadoArmas -*/ -public Object createInstance(){ - TarmCertificadoArmas instance=new TarmCertificadoArmas(); - instance.setPk(new TarmCertificadoArmasKey()); - return instance; -} -/**Clona la entidad TarmCertificadoArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCertificadoArmas p=(TarmCertificadoArmas)this.clone(); - p.setPk((TarmCertificadoArmasKey)this.pk.cloneMe()); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmasKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmasKey.java.svn-base deleted file mode 100644 index e5cba79..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoArmasKey.java.svn-base +++ /dev/null @@ -1,153 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMCERTIFICADOARMAS*/ -@Embeddable -public class TarmCertificadoArmasKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SESSIONID", nullable=false,updatable=false) - -/** -* null -*/ -private String sessionid; - -@Column(name="FECHAREPORTE", nullable=false,updatable=false) - -/** -* null -*/ -private Timestamp fechareporte; - -@Column(name="ORDEN", nullable=false,updatable=false) - -/** -* null -*/ -private Integer orden; - -/**Contructor por defecto*/ -public TarmCertificadoArmasKey(){} -/**Contructor de TarmCertificadoArmasKey -@param pSessionid null -@param pFechareporte null -@param pOrden null -*/ -public TarmCertificadoArmasKey(String pSessionid,Timestamp pFechareporte,Integer pOrden){ - sessionid=pSessionid; - fechareporte=pFechareporte; - orden=pOrden; -} -/**Obtiene el valor de sessionid -@return valor de sessionid*/ -public String getSessionid(){ - return sessionid; -} -/**Fija el valor de sessionid -@param pSessionid nuevo Valor de sessionid*/ -public void setSessionid(String pSessionid){ - sessionid=pSessionid; -} - -/**Obtiene el valor de fechareporte -@return valor de fechareporte*/ -public Timestamp getFechareporte(){ - return fechareporte; -} -/**Fija el valor de fechareporte -@param pFechareporte nuevo Valor de fechareporte*/ -public void setFechareporte(Timestamp pFechareporte){ - fechareporte=pFechareporte; -} - -/**Obtiene el valor de orden -@return valor de orden*/ -public Integer getOrden(){ - return orden; -} -/**Fija el valor de orden -@param pOrden nuevo Valor de orden*/ -public void setOrden(Integer pOrden){ - orden=pOrden; -} - -/**Implementacion de la comparacion de TarmCertificadoArmasKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmCertificadoArmasKey))return false; - TarmCertificadoArmasKey that = (TarmCertificadoArmasKey) o; - if (this.getSessionid() == null || that.getSessionid() == null){ - return false; - } - if (! this.getSessionid().equals(that.getSessionid())){ - return false; - } - if (this.getFechareporte() == null || that.getFechareporte() == null){ - return false; - } - if (! this.getFechareporte().equals(that.getFechareporte())){ - return false; - } - if (this.getOrden() == null || that.getOrden() == null){ - return false; - } - if (! this.getOrden().equals(that.getOrden())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmCertificadoArmasKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSessionid() == null ? 0 : this.getSessionid().hashCode()); - result = result * 37 + (this.getFechareporte() == null ? 0 : this.getFechareporte().hashCode()); - result = result * 37 + (this.getOrden() == null ? 0 : this.getOrden().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoFiscalia.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoFiscalia.java.svn-base deleted file mode 100644 index f448af6..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCertificadoFiscalia.java.svn-base +++ /dev/null @@ -1,293 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TarmCertificadoFiscalia*/ -@Entity(name="TarmCertificadoFiscalia") -@Table(name="TARMCERTIFICADOFISCALIA") -public class TarmCertificadoFiscalia extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCertificadoFiscalia -*/ -@Id -@Column(name="CCERTIFICADOFISCALIA" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CERTIFICADOFISCALIA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Number"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "8")}) - @GeneratedValue(generator = "seq_id") -private Long pk; - -/** -* Numero de la Solicitid -*/ -@Column(name="NRSOLICITUD", nullable=true) -private String nrsolicitud; - -/** -* Nombre del Solicitante -*/ -@Column(name="NOMBRESOLICITANTE", nullable=true) -private String nombresolicitante; - -/** -* Numero de la instruccion Fiscal -*/ -@Column(name="NRINSTRUCCIONFISCAL", nullable=true) -private String nrinstruccionfiscal; - -/** -* Codigo de persona -*/ -@Column(name="personcode", nullable=true) -private Integer personcode; - -/** -* Direccion del archivo certificado en alfresco -*/ -@Column(name="XPATH", nullable=true) -private String xpath; - -/** -* Direccion del archivo certificado en alfresco para el Fiscal -*/ -@Column(name="XPATHSOLICITUDARMA", nullable=true) -private String xpathSolicitudArma; - -/** -* Fecha de creacin del registro -*/ -@Column(name="FCREACION", nullable=true) -private Date fcreacion; - -/** -* Nro. de oficio Fiscalia -*/ -@Column(name="NROFICIOFISCALIA", nullable=true) -private String nroficiofiscalia; - -/**Contructor por defecto*/ -public TarmCertificadoFiscalia(){ -} -/**Contructor de TarmCertificadoFiscalia -@param pPk Clave Primaria del entity -*/ -public TarmCertificadoFiscalia(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCertificadoFiscalia -*/ -public static TarmCertificadoFiscalia find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCertificadoFiscalia obj = pEntityManager.find(TarmCertificadoFiscalia.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCertificadoFiscalia -@return El objeto que referencia a la Clave primaria de TarmCertificadoFiscalia -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCertificadoFiscalia -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCertificadoFiscalia -*/ -public void setPk(Long pPk){ - pk=pPk; -} - - -/** - * @return the hashValue - */ -public int getHashValue() { - return hashValue; -} -/** - * @param hashValue the hashValue to set - */ -public void setHashValue(int hashValue) { - this.hashValue = hashValue; -} -/** - * @return the nrsolicitud - */ -public String getNrsolicitud() { - return nrsolicitud; -} -/** - * @param nrsolicitud the nrsolicitud to set - */ -public void setNrsolicitud(String nrsolicitud) { - this.nrsolicitud = nrsolicitud; -} -/** - * @return the nombresolicitante - */ -public String getNombresolicitante() { - return nombresolicitante; -} -/** - * @param nombresolicitante the nombresolicitante to set - */ -public void setNombresolicitante(String nombresolicitante) { - this.nombresolicitante = nombresolicitante; -} -/** - * @return the nrinstruccionfiscal - */ -public String getNrinstruccionfiscal() { - return nrinstruccionfiscal; -} -/** - * @param nrinstruccionfiscal the nrinstruccionfiscal to set - */ -public void setNrinstruccionfiscal(String nrinstruccionfiscal) { - this.nrinstruccionfiscal = nrinstruccionfiscal; -} -/** - * @return the personcode - */ -public Integer getPersoncode() { - return personcode; -} -/** - * @param personcode the personcode to set - */ -public void setPersoncode(Integer personcode) { - this.personcode = personcode; -} -/** - * @return the xpath - */ -public String getXpath() { - return xpath; -} -/** - * @param xpath the xpath to set - */ -public void setXpath(String xpath) { - this.xpath = xpath; -} -/** - * @return the xpathSolicitudArma - */ -public String getXpathSolicitudArma() { - return xpathSolicitudArma; -} -/** - * @param xpathSolicitudArma the xpathSolicitudArma to set - */ -public void setXpathSolicitudArma(String xpathSolicitudArma) { - this.xpathSolicitudArma = xpathSolicitudArma; -} -/** - * @return the fcreacion - */ -public Date getFcreacion() { - return fcreacion; -} -/** - * @param fcreacion the fcreacion to set - */ -public void setFcreacion(Date fcreacion) { - this.fcreacion = fcreacion; -} -/** - * @return the nroficiofiscalia - */ -public String getNroficiofiscalia() { - return nroficiofiscalia; -} -/** - * @param nroficiofiscalia the nroficiofiscalia to set - */ -public void setNroficiofiscalia(String nroficiofiscalia) { - this.nroficiofiscalia = nroficiofiscalia; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCertificadoFiscalia))return false; - TarmCertificadoFiscalia that = (TarmCertificadoFiscalia) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCertificadoFiscalia -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCertificadoFiscalia -*/ -public Object createInstance(){ - TarmCertificadoFiscalia instance=new TarmCertificadoFiscalia(); - return instance; -} -/**Clona la entidad TarmCertificadoFiscalia -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCertificadoFiscalia p=(TarmCertificadoFiscalia)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCustodiaTemporal.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCustodiaTemporal.java.svn-base deleted file mode 100644 index ba3479a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmCustodiaTemporal.java.svn-base +++ /dev/null @@ -1,524 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMCUSTODIATEMPORAL*/ -@Entity(name="TarmCustodiaTemporal") -@Table(name="TARMCUSTODIATEMPORAL") -public class TarmCustodiaTemporal extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmCustodiaTemporal -*/ -@Id -@Column(name="CCUSTEMP" ,nullable=false, updatable=false) -private String pk; -@Column(name="TIPOREGISTRO", nullable=true) - -/** -* Codigo de catalogo 01 custodia temporal, 02 custodia temporal -*/ -private String tiporegistro; - -@Column(name="TIPOREGISTROCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de registros -*/ -private String tiporegistrocode; - -@Column(name="AEROLINEA", nullable=true) - -/** -* Codigo de catalogo 01 Lan, 02 Icaro -*/ -private String aerolinea; - -@Column(name="AEROLINEACODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de aerolineas -*/ -private String aerolineacode; - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* Codigo de centro de control de armas -*/ -private String ccentrocontrol; - -@Column(name="COUNTRYCODEORIGEN", nullable=true) - -/** -* Codigo de pais de origen -*/ -private String countrycodeorigen; - -@Column(name="PROVINCECODEORIGEN", nullable=true) - -/** -* Codigo de provincia de origen -*/ -private String provincecodeorigen; - -@Column(name="CANTONCODEORIGEN", nullable=true) - -/** -* Codigo de canton de origen -*/ -private String cantoncodeorigen; - -@Column(name="CITYCODEORIGEN", nullable=true) - -/** -* Codigo de cuidad de origen -*/ -private String citycodeorigen; - -@Column(name="AEROPUERTOORIG", nullable=true) - -/** -* Codigo de catalogo 01 Mariscal Sucre, 02 Mariscal Lamar -*/ -private String aeropuertoorig; - -@Column(name="AEROPUERTOORIGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de aeropuertos -*/ -private String aeropuertoorigcode; - -@Column(name="COUNTRYCODEDEST", nullable=true) - -/** -* Codigo de pais de destino -*/ -private String countrycodedest; - -@Column(name="PROVINCECODEDEST", nullable=true) - -/** -* Codigo de provincia de destino -*/ -private String provincecodedest; - -@Column(name="CANTONCODEDEST", nullable=true) - -/** -* Codigo de canton de destino -*/ -private String cantoncodedest; - -@Column(name="CITYCODEDEST", nullable=true) - -/** -* Codigo de cuidad de destino -*/ -private String citycodedest; - -@Column(name="AEROPUERTODEST", nullable=true) - -/** -* Codigo de catalogo 01 Mariscal Sucre, 02 Simon Bolivar -*/ -private String aeropuertodest; - -@Column(name="AEROPUERTODESTCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de aeropuertos de destino -*/ -private String aeropuertodestcode; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona que realiza el registro -*/ -private Integer personcode; - -@Column(name="PERSONCODEPROP", nullable=true) - -/** -* Codigo de persona propietaria -*/ -private Integer personcodeprop; - -@Column(name="NOTRANSACCION", nullable=true) - -/** -* Numero de Transaccion de la custodia temporal -*/ -private String notransaccion; - -@Column(name="FECHACUSTODIOS", nullable=true) - -/** -* Fecha del registro de la custodia temporal -*/ -private Date fechacustodios; - -@Column(name="VUELO", nullable=true) - -/** -* Numero de Vuelo en el cual se custodian las armas -*/ -private String vuelo; - -/**Contructor por defecto*/ -public TarmCustodiaTemporal(){ -} -/**Contructor de TarmCustodiaTemporal -@param pPk Clave Primaria del entity -*/ -public TarmCustodiaTemporal(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmCustodiaTemporal -*/ -public static TarmCustodiaTemporal find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmCustodiaTemporal obj = pEntityManager.find(TarmCustodiaTemporal.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmCustodiaTemporal -@return El objeto que referencia a la Clave primaria de TarmCustodiaTemporal -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmCustodiaTemporal -@param pPk El objeto que referencia a la nueva Clave primaria de TarmCustodiaTemporal -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de tiporegistro -@return valor de tiporegistro*/ -public String getTiporegistro(){ - return tiporegistro; -} -/**Fija el valor de tiporegistro -@param pTiporegistro nuevo Valor de tiporegistro*/ -public void setTiporegistro(String pTiporegistro){ - tiporegistro=pTiporegistro; -} - -/**Obtiene el valor de tiporegistrocode -@return valor de tiporegistrocode*/ -public String getTiporegistrocode(){ - return tiporegistrocode; -} -/**Fija el valor de tiporegistrocode -@param pTiporegistrocode nuevo Valor de tiporegistrocode*/ -public void setTiporegistrocode(String pTiporegistrocode){ - tiporegistrocode=pTiporegistrocode; -} - -/**Obtiene el valor de aerolinea -@return valor de aerolinea*/ -public String getAerolinea(){ - return aerolinea; -} -/**Fija el valor de aerolinea -@param pAerolinea nuevo Valor de aerolinea*/ -public void setAerolinea(String pAerolinea){ - aerolinea=pAerolinea; -} - -/**Obtiene el valor de aerolineacode -@return valor de aerolineacode*/ -public String getAerolineacode(){ - return aerolineacode; -} -/**Fija el valor de aerolineacode -@param pAerolineacode nuevo Valor de aerolineacode*/ -public void setAerolineacode(String pAerolineacode){ - aerolineacode=pAerolineacode; -} - -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -/**Obtiene el valor de countrycodeorigen -@return valor de countrycodeorigen*/ -public String getCountrycodeorigen(){ - return countrycodeorigen; -} -/**Fija el valor de countrycodeorigen -@param pCountrycodeorigen nuevo Valor de countrycodeorigen*/ -public void setCountrycodeorigen(String pCountrycodeorigen){ - countrycodeorigen=pCountrycodeorigen; -} - -/**Obtiene el valor de provincecodeorigen -@return valor de provincecodeorigen*/ -public String getProvincecodeorigen(){ - return provincecodeorigen; -} -/**Fija el valor de provincecodeorigen -@param pProvincecodeorigen nuevo Valor de provincecodeorigen*/ -public void setProvincecodeorigen(String pProvincecodeorigen){ - provincecodeorigen=pProvincecodeorigen; -} - -/**Obtiene el valor de cantoncodeorigen -@return valor de cantoncodeorigen*/ -public String getCantoncodeorigen(){ - return cantoncodeorigen; -} -/**Fija el valor de cantoncodeorigen -@param pCantoncodeorigen nuevo Valor de cantoncodeorigen*/ -public void setCantoncodeorigen(String pCantoncodeorigen){ - cantoncodeorigen=pCantoncodeorigen; -} - -/**Obtiene el valor de citycodeorigen -@return valor de citycodeorigen*/ -public String getCitycodeorigen(){ - return citycodeorigen; -} -/**Fija el valor de citycodeorigen -@param pCitycodeorigen nuevo Valor de citycodeorigen*/ -public void setCitycodeorigen(String pCitycodeorigen){ - citycodeorigen=pCitycodeorigen; -} - -/**Obtiene el valor de aeropuertoorig -@return valor de aeropuertoorig*/ -public String getAeropuertoorig(){ - return aeropuertoorig; -} -/**Fija el valor de aeropuertoorig -@param pAeropuertoorig nuevo Valor de aeropuertoorig*/ -public void setAeropuertoorig(String pAeropuertoorig){ - aeropuertoorig=pAeropuertoorig; -} - -/**Obtiene el valor de aeropuertoorigcode -@return valor de aeropuertoorigcode*/ -public String getAeropuertoorigcode(){ - return aeropuertoorigcode; -} -/**Fija el valor de aeropuertoorigcode -@param pAeropuertoorigcode nuevo Valor de aeropuertoorigcode*/ -public void setAeropuertoorigcode(String pAeropuertoorigcode){ - aeropuertoorigcode=pAeropuertoorigcode; -} - -/**Obtiene el valor de countrycodedest -@return valor de countrycodedest*/ -public String getCountrycodedest(){ - return countrycodedest; -} -/**Fija el valor de countrycodedest -@param pCountrycodedest nuevo Valor de countrycodedest*/ -public void setCountrycodedest(String pCountrycodedest){ - countrycodedest=pCountrycodedest; -} - -/**Obtiene el valor de provincecodedest -@return valor de provincecodedest*/ -public String getProvincecodedest(){ - return provincecodedest; -} -/**Fija el valor de provincecodedest -@param pProvincecodedest nuevo Valor de provincecodedest*/ -public void setProvincecodedest(String pProvincecodedest){ - provincecodedest=pProvincecodedest; -} - -/**Obtiene el valor de cantoncodedest -@return valor de cantoncodedest*/ -public String getCantoncodedest(){ - return cantoncodedest; -} -/**Fija el valor de cantoncodedest -@param pCantoncodedest nuevo Valor de cantoncodedest*/ -public void setCantoncodedest(String pCantoncodedest){ - cantoncodedest=pCantoncodedest; -} - -/**Obtiene el valor de citycodedest -@return valor de citycodedest*/ -public String getCitycodedest(){ - return citycodedest; -} -/**Fija el valor de citycodedest -@param pCitycodedest nuevo Valor de citycodedest*/ -public void setCitycodedest(String pCitycodedest){ - citycodedest=pCitycodedest; -} - -/**Obtiene el valor de aeropuertodest -@return valor de aeropuertodest*/ -public String getAeropuertodest(){ - return aeropuertodest; -} -/**Fija el valor de aeropuertodest -@param pAeropuertodest nuevo Valor de aeropuertodest*/ -public void setAeropuertodest(String pAeropuertodest){ - aeropuertodest=pAeropuertodest; -} - -/**Obtiene el valor de aeropuertodestcode -@return valor de aeropuertodestcode*/ -public String getAeropuertodestcode(){ - return aeropuertodestcode; -} -/**Fija el valor de aeropuertodestcode -@param pAeropuertodestcode nuevo Valor de aeropuertodestcode*/ -public void setAeropuertodestcode(String pAeropuertodestcode){ - aeropuertodestcode=pAeropuertodestcode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de personcodeprop -@return valor de personcodeprop*/ -public Integer getPersoncodeprop(){ - return personcodeprop; -} -/**Fija el valor de personcodeprop -@param pPersoncodeprop nuevo Valor de personcodeprop*/ -public void setPersoncodeprop(Integer pPersoncodeprop){ - personcodeprop=pPersoncodeprop; -} - -/**Obtiene el valor de notransaccion -@return valor de notransaccion*/ -public String getNotransaccion(){ - return notransaccion; -} -/**Fija el valor de notransaccion -@param pNotransaccion nuevo Valor de notransaccion*/ -public void setNotransaccion(String pNotransaccion){ - notransaccion=pNotransaccion; -} - -/**Obtiene el valor de fechacustodios -@return valor de fechacustodios*/ -public Date getFechacustodios(){ - return fechacustodios; -} -/**Fija el valor de fechacustodios -@param pFechacustodios nuevo Valor de fechacustodios*/ -public void setFechacustodios(Date pFechacustodios){ - fechacustodios=pFechacustodios; -} - -/**Obtiene el valor de vuelo -@return valor de vuelo*/ -public String getVuelo(){ - return vuelo; -} -/**Fija el valor de vuelo -@param pVuelo nuevo Valor de vuelo*/ -public void setVuelo(String pVuelo){ - vuelo=pVuelo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmCustodiaTemporal))return false; - TarmCustodiaTemporal that = (TarmCustodiaTemporal) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmCustodiaTemporal -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmCustodiaTemporal -*/ -public Object createInstance(){ - TarmCustodiaTemporal instance=new TarmCustodiaTemporal(); - return instance; -} -/**Clona la entidad TarmCustodiaTemporal -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmCustodiaTemporal p=(TarmCustodiaTemporal)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomiso.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomiso.java.svn-base deleted file mode 100644 index 91ba8ec..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomiso.java.svn-base +++ /dev/null @@ -1,694 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import com.fp.dto.hb.Log; - -import javax.persistence.Id; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Column; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDECOMISO*/ -@Entity(name="TarmDecomiso") -@Table(name="TARMDECOMISO") -public class TarmDecomiso extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDecomiso -*/ -@Id -@Column(name="CDECOMISO" ,nullable=false, updatable=false) -private Long pk; -@Column(name="FECHADECOMISO", nullable=true) - -/** -* Fecha del decomiso -*/ -private Date fechadecomiso; - -@Column(name="NUMERORECIBO", nullable=true) - -/** -* Nmero del recibo -*/ -private String numerorecibo; - -@Column(name="PARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia de decomiso -*/ -private String parroquiacode; - -@Column(name="COUNTRYCODE", nullable=true) - -/** -* Codigo de pais de decomiso -*/ -private String countrycode; - -@Column(name="LATITUD", nullable=true) - -/** -* null -*/ -private BigDecimal latitud; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* Fecha de registro -*/ -private Date fecharegistro; - -@Column(name="TIPODOCUMENTO", nullable=true) - -/** -* Codigo de catalogo 01 Cdula, 02 Ruc -*/ -private String tipodocumento; - -@Column(name="TELEFONO", nullable=true) - -/** -* Telfono del decomisado -*/ -private String telefono; - -@Column(name="NUMEROTRANSACCION", nullable=true) - -/** -* Nmero de la transaccin -*/ -private String numerotransaccion; - -@Column(name="GRADOFUNCIONARIOCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de grado -*/ -private String gradofuncionariocode; - -@Column(name="TIPODOCUMENTOCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de documento -*/ -private String tipodocumentocode; - -@Column(name="TIPOPROCESO", nullable=true) - -/** -* Codigo de catalogo 01 Decomiso, 02 Incautacin -*/ -private String tipoproceso; - -@Column(name="PROVINCECODE", nullable=true) - -/** -* Codigo de provincia de decomiso -*/ -private String provincecode; - -@Column(name="FUNCIONARIO", nullable=true) - -/** -* Nombre del funcionario que realiza el decomiso -*/ -private String funcionario; - -@Column(name="GRADOFUNCIONARIO", nullable=true) - -/** -* Codigo de catalogo 01 Crnl, 02 Tnte -*/ -private String gradofuncionario; - -@Column(name="CCENTROCONTROLDESTINO", nullable=true) - -/** -* Codigo de centro de control de armas de destino(Donde se van a ser destruidas o donadas) -*/ -private String ccentrocontroldestino; - -@Column(name="PERSONCODEREGISTRA", nullable=true) - -/** -* codigo de la persona que realiza el registro -*/ -private Integer personcoderegistra; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona portadora del arma -*/ -private Integer personcode; - -@Column(name="CEDULAFUNCIONARIO", nullable=true) - -/** -* cdula de la persona que realiza el decomiso(Funcionario) -*/ -private String cedulafuncionario; - -@Column(name="NUMERODOCUMENTO", nullable=true) - -/** -* Nmero de documento de la persna o empresa a quien se le realiza el decomiso -*/ -private String numerodocumento; - -@Column(name="ORGANISMOCONTROL", nullable=true) - -/** -* Organismo de control "Fuerzas Armadas" -*/ -private String organismocontrol; - -@Column(name="CITYCODE", nullable=true) - -/** -* Codigo de cuidad de decomiso -*/ -private String citycode; - -@Column(name="CANTONCODE", nullable=true) - -/** -* Codigo de canton de decomiso -*/ -private String cantoncode; - -@Column(name="TIPOPROCESOCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Cdigo del tipo de proceso -*/ -private String tipoprocesocode; - -@Column(name="LONGITUD", nullable=true) - -/** -* null -*/ -private BigDecimal longitud; - -@Column(name="NOMBRERAZONSOCIAL", nullable=true) - -/** -* Nombre de la persona o empresa del decomisado -*/ -private String nombrerazonsocial; - -@Column(name="DIRECCION", nullable=true) - -/** -* Direccin del lugar de decomiso -*/ -private String direccion; - - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* Codigo de centro de control de armas -*/ -private String ccentrocontrol; - -@Column(name="REFERENCIA", nullable=true) - -/** -* Refencia de una direccion del decomiso -*/ -private String referencia; - -@Column(name="XPATH", nullable=true) - -/** -* null -*/ -private String xpath; - -@Column(name="COMPROBANTEXPATH", nullable=true) - -/** -* null -*/ -private String comprobantexpath; - -/**Contructor por defecto*/ -public TarmDecomiso(){ -} -/**Contructor de TarmDecomiso -@param pPk Clave Primaria del entity -*/ -public TarmDecomiso(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDecomiso -*/ -public static TarmDecomiso find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDecomiso obj = pEntityManager.find(TarmDecomiso.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDecomiso -@return El objeto que referencia a la Clave primaria de TarmDecomiso -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDecomiso -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDecomiso -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de fechadecomiso -@return valor de fechadecomiso*/ -public Date getFechadecomiso(){ - return fechadecomiso; -} -/**Fija el valor de fechadecomiso -@param pFechadecomiso nuevo Valor de fechadecomiso*/ -public void setFechadecomiso(Date pFechadecomiso){ - fechadecomiso=pFechadecomiso; -} - -/**Obtiene el valor de numerorecibo -@return valor de numerorecibo*/ -public String getNumerorecibo(){ - return numerorecibo; -} -/**Fija el valor de numerorecibo -@param pNumerorecibo nuevo Valor de numerorecibo*/ -public void setNumerorecibo(String pNumerorecibo){ - numerorecibo=pNumerorecibo; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de latitud -@return valor de latitud*/ -public BigDecimal getLatitud(){ - return latitud; -} -/**Fija el valor de latitud -@param pLatitud nuevo Valor de latitud*/ -public void setLatitud(BigDecimal pLatitud){ - latitud=pLatitud; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de tipodocumento -@return valor de tipodocumento*/ -public String getTipodocumento(){ - return tipodocumento; -} -/**Fija el valor de tipodocumento -@param pTipodocumento nuevo Valor de tipodocumento*/ -public void setTipodocumento(String pTipodocumento){ - tipodocumento=pTipodocumento; -} - -/**Obtiene el valor de telefono -@return valor de telefono*/ -public String getTelefono(){ - return telefono; -} -/**Fija el valor de telefono -@param pTelefono nuevo Valor de telefono*/ -public void setTelefono(String pTelefono){ - telefono=pTelefono; -} - -/**Obtiene el valor de numerotransaccion -@return valor de numerotransaccion*/ -public String getNumerotransaccion(){ - return numerotransaccion; -} -/**Fija el valor de numerotransaccion -@param pNumerotransaccion nuevo Valor de numerotransaccion*/ -public void setNumerotransaccion(String pNumerotransaccion){ - numerotransaccion=pNumerotransaccion; -} - -/**Obtiene el valor de gradofuncionariocode -@return valor de gradofuncionariocode*/ -public String getGradofuncionariocode(){ - return gradofuncionariocode; -} -/**Fija el valor de gradofuncionariocode -@param pGradofuncionariocode nuevo Valor de gradofuncionariocode*/ -public void setGradofuncionariocode(String pGradofuncionariocode){ - gradofuncionariocode=pGradofuncionariocode; -} - -/**Obtiene el valor de tipodocumentocode -@return valor de tipodocumentocode*/ -public String getTipodocumentocode(){ - return tipodocumentocode; -} -/**Fija el valor de tipodocumentocode -@param pTipodocumentocode nuevo Valor de tipodocumentocode*/ -public void setTipodocumentocode(String pTipodocumentocode){ - tipodocumentocode=pTipodocumentocode; -} - -/**Obtiene el valor de tipoproceso -@return valor de tipoproceso*/ -public String getTipoproceso(){ - return tipoproceso; -} -/**Fija el valor de tipoproceso -@param pTipoproceso nuevo Valor de tipoproceso*/ -public void setTipoproceso(String pTipoproceso){ - tipoproceso=pTipoproceso; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de funcionario -@return valor de funcionario*/ -public String getFuncionario(){ - return funcionario; -} -/**Fija el valor de funcionario -@param pFuncionario nuevo Valor de funcionario*/ -public void setFuncionario(String pFuncionario){ - funcionario=pFuncionario; -} - -/**Obtiene el valor de gradofuncionario -@return valor de gradofuncionario*/ -public String getGradofuncionario(){ - return gradofuncionario; -} -/**Fija el valor de gradofuncionario -@param pGradofuncionario nuevo Valor de gradofuncionario*/ -public void setGradofuncionario(String pGradofuncionario){ - gradofuncionario=pGradofuncionario; -} - -/**Obtiene el valor de ccentrocontroldestino -@return valor de ccentrocontroldestino*/ -public String getCcentrocontroldestino(){ - return ccentrocontroldestino; -} -/**Fija el valor de ccentrocontroldestino -@param pCcentrocontroldestino nuevo Valor de ccentrocontroldestino*/ -public void setCcentrocontroldestino(String pCcentrocontroldestino){ - ccentrocontroldestino=pCcentrocontroldestino; -} - -/**Obtiene el valor de personcoderegistra -@return valor de personcoderegistra*/ -public Integer getPersoncoderegistra(){ - return personcoderegistra; -} -/**Fija el valor de personcoderegistra -@param pPersoncoderegistra nuevo Valor de personcoderegistra*/ -public void setPersoncoderegistra(Integer pPersoncoderegistra){ - personcoderegistra=pPersoncoderegistra; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de cedulafuncionario -@return valor de cedulafuncionario*/ -public String getCedulafuncionario(){ - return cedulafuncionario; -} -/**Fija el valor de cedulafuncionario -@param pCedulafuncionario nuevo Valor de cedulafuncionario*/ -public void setCedulafuncionario(String pCedulafuncionario){ - cedulafuncionario=pCedulafuncionario; -} - -/**Obtiene el valor de numerodocumento -@return valor de numerodocumento*/ -public String getNumerodocumento(){ - return numerodocumento; -} -/**Fija el valor de numerodocumento -@param pNumerodocumento nuevo Valor de numerodocumento*/ -public void setNumerodocumento(String pNumerodocumento){ - numerodocumento=pNumerodocumento; -} - -/**Obtiene el valor de organismocontrol -@return valor de organismocontrol*/ -public String getOrganismocontrol(){ - return organismocontrol; -} -/**Fija el valor de organismocontrol -@param pOrganismocontrol nuevo Valor de organismocontrol*/ -public void setOrganismocontrol(String pOrganismocontrol){ - organismocontrol=pOrganismocontrol; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de tipoprocesocode -@return valor de tipoprocesocode*/ -public String getTipoprocesocode(){ - return tipoprocesocode; -} -/**Fija el valor de tipoprocesocode -@param pTipoprocesocode nuevo Valor de tipoprocesocode*/ -public void setTipoprocesocode(String pTipoprocesocode){ - tipoprocesocode=pTipoprocesocode; -} - -/**Obtiene el valor de longitud -@return valor de longitud*/ -public BigDecimal getLongitud(){ - return longitud; -} -/**Fija el valor de longitud -@param pLongitud nuevo Valor de longitud*/ -public void setLongitud(BigDecimal pLongitud){ - longitud=pLongitud; -} - -/**Obtiene el valor de nombrerazonsocial -@return valor de nombrerazonsocial*/ -public String getNombrerazonsocial(){ - return nombrerazonsocial; -} -/**Fija el valor de nombrerazonsocial -@param pNombrerazonsocial nuevo Valor de nombrerazonsocial*/ -public void setNombrerazonsocial(String pNombrerazonsocial){ - nombrerazonsocial=pNombrerazonsocial; -} - -/**Obtiene el valor de direccion -@return valor de direccion*/ -public String getDireccion(){ - return direccion; -} -/**Fija el valor de direccion -@param pDireccion nuevo Valor de direccion*/ -public void setDireccion(String pDireccion){ - direccion=pDireccion; -} - -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - /** - * @return the referencia - */ - public String getReferencia() { - return referencia; - } - - /** - * @param referencia the referencia to set - */ - public void setReferencia(String referencia) { - this.referencia = referencia; - } - - - /**Obtiene el valor de xpath - @return valor de xpath*/ - public String getXpath(){ - return xpath; - } - /**Fija el valor de xpath - @param xpathacta nuevo Valor de xpath*/ - public void setXpath(String xpath){ - this.xpath=xpath; - } - /**Obtiene el valor de comprobantexpath - @return valor de comprobantexpath*/ - public String getComprobantexpath() { - return comprobantexpath; - } - /**Fija el valor de comprobantexpath - @param xpathacta nuevo Valor de comprobantexpath*/ - public void setComprobantexpath(String comprobantexpath) { - this.comprobantexpath = comprobantexpath; - } - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDecomiso))return false; - TarmDecomiso that = (TarmDecomiso) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDecomiso -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDecomiso -*/ -public Object createInstance(){ - TarmDecomiso instance=new TarmDecomiso(); - return instance; -} -/**Clona la entidad TarmDecomiso -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDecomiso p=(TarmDecomiso)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArma.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArma.java.svn-base deleted file mode 100644 index e850f3b..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArma.java.svn-base +++ /dev/null @@ -1,493 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDECOMISOARMA*/ -@Entity(name="TarmDecomisoArma") -@Table(name="TARMDECOMISOARMA") -public class TarmDecomisoArma extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDecomisoArma -*/ -@Id -@Column(name="CDECOMISOARMA" ,nullable=false, updatable=false) -private String pk; -@Column(name="CARMA", nullable=true) - -/** -* codigo da la tabla TarmArma -*/ -private String carma; - -@Column(name="MOTIVODECOMISO", nullable=true) - -/** -* Codigo de catalogo 01 Permiso Caducado, 02 Sin Papeles -*/ -private String motivodecomiso; - -@Column(name="MOTIVODECOMISOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String motivodecomisocodigo; - -@Column(name="ESTADO", nullable=true) - -/** -* Codigo de catalogo 01 Decomisado, 02 Incautado -*/ -private String estado; - -@Column(name="ESTADOCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de estados -*/ -private String estadocode; - -@Column(name="UNIDADMEDIDA", nullable=true) - -/** -* Codigo de catalogo 01 Unidad, 02 Peso -*/ -private String unidadmedida; - -@Column(name="UNIDADMEDIDACODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de unidad -*/ -private String unidadmedidacode; - -@Column(name="CDECOMISO", nullable=true) - -/** -* Codigo de la Tabla Decomiso -*/ -private Long cdecomiso; - -@Column(name="FDECOMISO", nullable=true) - -/** -* fecha de registro del decomiso -*/ -private Timestamp fdecomiso; - -@Column(name="CANTIDAD", nullable=true) - -/** -* cantidad decomisada -*/ -private BigDecimal cantidad; - -@Column(name="OBSERVACION", nullable=true) - -/** -* observacin del decomiso -*/ -private String observacion; - -@Column(name="CCUSTEMP", nullable=true) - -/** -* null -*/ -private String ccustemp; - -@Column(name="ADESTRUIRSE", nullable=true) - -/** -* Codigo de catalogo para indicar si el arma esta en algun reporte del flujo de armas a destruir -*/ -private String adestruirse; - -@Column(name="ADESTRUIRSECODE", nullable=true) - -/** -* CatalogCode para indicar si el arma esta en algun reporte del flujo de armas a destruir -*/ -private String adestruirsecode; - -@Column(name="ESTADOANTERIOR", nullable=true) - -/** -* Tabla que contiene los decomisos y la custodia temporal de las armas asignadas a la persona -*/ -private String estadoanterior; - -@Column(name="TIPOREGISTROANTERIOR", nullable=true) - -/** -* CAmpo que registra el estado anterior del registro arma para cuando se devuelva regrese a su estado anterior -*/ -private String tiporegistroanterior; - -@Column(name="ENBODEGA", nullable=true) - -/** -* CAMPO QUE INDICA QUE EL TECNICO DE ALMACENAMIENTO CONFIRMO QUE EL ARMA DECOMISADA SE ENCUENTRA EN BODEGA -*/ -private String enbodega; - -@Column(name="CDECOMISOARMATRANSACCION", nullable=true) - -/** -* Clave foranea a TARMDECOMISOARMATRANSACCION -*/ -private Long cdecomisoarmatransaccion; - -@Column(name="CDECARMTRANRECEPCION", nullable=true) - -/** -* Codigo de la tabla TarmDecomisoArmaTransaccion para obtener el numero de transaccion de recepcion -*/ -private Long cdecarmtranrecepcion; - - -/** -* Operacion actual de la transaccion -*/ -@Column(name="COPERACIONTRANSACCION", nullable=true) -private String coperaciontransaccion; - - - -/**Contructor por defecto*/ -public TarmDecomisoArma(){ -} -/**Contructor de TarmDecomisoArma -@param pPk Clave Primaria del entity -*/ -public TarmDecomisoArma(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDecomisoArma -*/ -public static TarmDecomisoArma find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDecomisoArma obj = pEntityManager.find(TarmDecomisoArma.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDecomisoArma -@return El objeto que referencia a la Clave primaria de TarmDecomisoArma -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDecomisoArma -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDecomisoArma -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de motivodecomiso -@return valor de motivodecomiso*/ -public String getMotivodecomiso(){ - return motivodecomiso; -} -/**Fija el valor de motivodecomiso -@param pMotivodecomiso nuevo Valor de motivodecomiso*/ -public void setMotivodecomiso(String pMotivodecomiso){ - motivodecomiso=pMotivodecomiso; -} - -/**Obtiene el valor de motivodecomisocodigo -@return valor de motivodecomisocodigo*/ -public String getMotivodecomisocodigo(){ - return motivodecomisocodigo; -} -/**Fija el valor de motivodecomisocodigo -@param pMotivodecomisocodigo nuevo Valor de motivodecomisocodigo*/ -public void setMotivodecomisocodigo(String pMotivodecomisocodigo){ - motivodecomisocodigo=pMotivodecomisocodigo; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocode -@return valor de estadocode*/ -public String getEstadocode(){ - return estadocode; -} -/**Fija el valor de estadocode -@param pEstadocode nuevo Valor de estadocode*/ -public void setEstadocode(String pEstadocode){ - estadocode=pEstadocode; -} - -/**Obtiene el valor de unidadmedida -@return valor de unidadmedida*/ -public String getUnidadmedida(){ - return unidadmedida; -} -/**Fija el valor de unidadmedida -@param pUnidadmedida nuevo Valor de unidadmedida*/ -public void setUnidadmedida(String pUnidadmedida){ - unidadmedida=pUnidadmedida; -} - -/**Obtiene el valor de unidadmedidacode -@return valor de unidadmedidacode*/ -public String getUnidadmedidacode(){ - return unidadmedidacode; -} -/**Fija el valor de unidadmedidacode -@param pUnidadmedidacode nuevo Valor de unidadmedidacode*/ -public void setUnidadmedidacode(String pUnidadmedidacode){ - unidadmedidacode=pUnidadmedidacode; -} - -/**Obtiene el valor de cdecomiso -@return valor de cdecomiso*/ -public Long getCdecomiso(){ - return cdecomiso; -} -/**Fija el valor de cdecomiso -@param pCdecomiso nuevo Valor de cdecomiso*/ -public void setCdecomiso(Long pCdecomiso){ - cdecomiso=pCdecomiso; -} - -/**Obtiene el valor de fdecomiso -@return valor de fdecomiso*/ -public Timestamp getFdecomiso(){ - return fdecomiso; -} -/**Fija el valor de fdecomiso -@param pFdecomiso nuevo Valor de fdecomiso*/ -public void setFdecomiso(Timestamp pFdecomiso){ - fdecomiso=pFdecomiso; -} - -/**Obtiene el valor de cantidad -@return valor de cantidad*/ -public BigDecimal getCantidad(){ - return cantidad; -} -/**Fija el valor de cantidad -@param pCantidad nuevo Valor de cantidad*/ -public void setCantidad(BigDecimal pCantidad){ - cantidad=pCantidad; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de ccustemp -@return valor de ccustemp*/ -public String getCcustemp(){ - return ccustemp; -} -/**Fija el valor de ccustemp -@param pCcustemp nuevo Valor de ccustemp*/ -public void setCcustemp(String pCcustemp){ - ccustemp=pCcustemp; -} - -/**Obtiene el valor de adestruirse -@return valor de adestruirse*/ -public String getAdestruirse(){ - return adestruirse; -} -/**Fija el valor de adestruirse -@param pAdestruirse nuevo Valor de adestruirse*/ -public void setAdestruirse(String pAdestruirse){ - adestruirse=pAdestruirse; -} - -/**Obtiene el valor de adestruirsecode -@return valor de adestruirsecode*/ -public String getAdestruirsecode(){ - return adestruirsecode; -} -/**Fija el valor de adestruirsecode -@param pAdestruirsecode nuevo Valor de adestruirsecode*/ -public void setAdestruirsecode(String pAdestruirsecode){ - adestruirsecode=pAdestruirsecode; -} - -/**Obtiene el valor de estadoanterior -@return valor de estadoanterior*/ -public String getEstadoanterior(){ - return estadoanterior; -} -/**Fija el valor de estadoanterior -@param pEstadoanterior nuevo Valor de estadoanterior*/ -public void setEstadoanterior(String pEstadoanterior){ - estadoanterior=pEstadoanterior; -} - -/**Obtiene el valor de tiporegistroanterior -@return valor de tiporegistroanterior*/ -public String getTiporegistroanterior(){ - return tiporegistroanterior; -} -/**Fija el valor de tiporegistroanterior -@param pTiporegistroanterior nuevo Valor de tiporegistroanterior*/ -public void setTiporegistroanterior(String pTiporegistroanterior){ - tiporegistroanterior=pTiporegistroanterior; -} - -/**Obtiene el valor de enbodega -@return valor de enbodega*/ -public String getEnbodega(){ - return enbodega; -} -/**Fija el valor de enbodega -@param pEnbodega nuevo Valor de enbodega*/ -public void setEnbodega(String pEnbodega){ - enbodega=pEnbodega; -} - -/**Obtiene el valor de cdecomisoarmatransaccion -@return valor de cdecomisoarmatransaccion*/ -public Long getCdecomisoarmatransaccion(){ - return cdecomisoarmatransaccion; -} -/**Fija el valor de cdecomisoarmatransaccion -@param pCdecomisoarmatransaccion nuevo Valor de cdecomisoarmatransaccion*/ -public void setCdecomisoarmatransaccion(Long pCdecomisoarmatransaccion){ - cdecomisoarmatransaccion=pCdecomisoarmatransaccion; -} - -/**Obtiene el valor de cdecarmtranrecepcion -@return valor de cdecarmtranrecepcion*/ -public Long getCdecarmtranrecepcion(){ - return cdecarmtranrecepcion; -} -/**Fija el valor de cdecarmtranrecepcion -@param pCdecarmtranrecepcion nuevo Valor de cdecarmtranrecepcion*/ -public void setCdecarmtranrecepcion(Long pCdecarmtranrecepcion){ - cdecarmtranrecepcion=pCdecarmtranrecepcion; -} - -/** - * @return the coperaciontransaccion - */ -public String getCoperaciontransaccion() { - return coperaciontransaccion; -} -/** - * @param coperaciontransaccion the coperaciontransaccion to set - */ -public void setCoperaciontransaccion(String coperaciontransaccion) { - this.coperaciontransaccion = coperaciontransaccion; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDecomisoArma))return false; - TarmDecomisoArma that = (TarmDecomisoArma) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDecomisoArma -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDecomisoArma -*/ -public Object createInstance(){ - TarmDecomisoArma instance=new TarmDecomisoArma(); - return instance; -} -/**Clona la entidad TarmDecomisoArma -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDecomisoArma p=(TarmDecomisoArma)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArmaTransaccion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArmaTransaccion.java.svn-base deleted file mode 100644 index baad37e..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDecomisoArmaTransaccion.java.svn-base +++ /dev/null @@ -1,258 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDECOMISOARMATRANSACCION*/ -@Entity(name="TarmDecomisoArmaTransaccion") -@Table(name="TARMDECOMISOARMATRANSACCION") -public class TarmDecomisoArmaTransaccion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDecomisoArmaTransaccion -*/ -@Id -@Column(name="CDECOMISOARMATRANSACCION" ,nullable=false, updatable=false) -private Long pk; -@Column(name="FCORTE", nullable=false) - -/** -* FECHA DE CORTE EN LA CUAL SE REALIZO LA GENERACION DEL NUMERO DE ENVIO -*/ -private Date fcorte; - -@Column(name="NUMEROTRANSACCION", nullable=true) - -/** -* null -*/ -private String numerotransaccion; - -@Column(name="CCONTROL", nullable=false) - -/** -* CODIGO DEL CENTRO DE CONTROL AL CUAL PERTENECE ESTE ENVIO -*/ -private String ccentrocontrol; - -@Column(name="FTRANSACCION", nullable=false) - -/** -* REGISTRO DE LA FECHA EN LA CUAL SE GENERO ESTE CODIGO DE TRANSACCION -*/ -private Date ftransaccion; - -@Column(name="XPATH", nullable=true) - -/** -* ruta del archivo que se almacena en el alfresco, para la recepcion de las armas -*/ -private String xpath; - -@Column(name="ESTADOFLUJO", nullable=true) - -/** -* null -*/ -private String estadoflujo; - -@Column(name="ESTADOFIRMA", nullable=true) - -/** -* null -*/ -private String estadofirma; - - -/**Contructor por defecto*/ -public TarmDecomisoArmaTransaccion(){ -} -/**Contructor de TarmDecomisoArmaTransaccion -@param pPk Clave Primaria del entity -@param pFcorte FECHA DE CORTE EN LA CUAL SE REALIZO LA GENERACION DEL NUMERO DE ENVIO -@param pCcontrol CODIGO DEL CENTRO DE CONTROL AL CUAL PERTENECE ESTE ENVIO -@param pFtransaccion REGISTRO DE LA FECHA EN LA CUAL SE GENERO ESTE CODIGO DE TRANSACCION -*/ -public TarmDecomisoArmaTransaccion(Long pPk,Date pFcorte,String pCcontrol,Date pFtransaccion){ - this(); - pk=pPk; - fcorte=pFcorte; - ccentrocontrol=pCcontrol; - ftransaccion=pFtransaccion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDecomisoArmaTransaccion -*/ -public static TarmDecomisoArmaTransaccion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDecomisoArmaTransaccion obj = pEntityManager.find(TarmDecomisoArmaTransaccion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDecomisoArmaTransaccion -@return El objeto que referencia a la Clave primaria de TarmDecomisoArmaTransaccion -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDecomisoArmaTransaccion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDecomisoArmaTransaccion -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de fcorte -@return valor de fcorte*/ -public Date getFcorte(){ - return fcorte; -} -/**Fija el valor de fcorte -@param pFcorte nuevo Valor de fcorte*/ -public void setFcorte(Date pFcorte){ - fcorte=pFcorte; -} - -/**Obtiene el valor de numerotransaccion -@return valor de numerotransaccion*/ -public String getNumerotransaccion(){ - return numerotransaccion; -} -/**Fija el valor de numerotransaccion -@param pNumerotransaccion nuevo Valor de numerotransaccion*/ -public void setNumerotransaccion(String pNumerotransaccion){ - numerotransaccion=pNumerotransaccion; -} - -/**Obtiene el valor de ccontrol -@return valor de ccontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccontrol -@param pCcontrol nuevo Valor de ccontrol*/ -public void setCcentrocontrol(String pCcontrol){ - ccentrocontrol=pCcontrol; -} - -/**Obtiene el valor de ftransaccion -@return valor de ftransaccion*/ -public Date getFtransaccion(){ - return ftransaccion; -} -/**Fija el valor de ftransaccion -@param pFtransaccion nuevo Valor de ftransaccion*/ -public void setFtransaccion(Date pFtransaccion){ - ftransaccion=pFtransaccion; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath(){ - return xpath; -} -/**Fija el valor de xpath -@param pXpath nuevo Valor de xpath*/ -public void setXpath(String pXpath){ - xpath=pXpath; -} - -/**Obtiene el valor de estadoflujo -@return valor de estadoflujo*/ -public String getEstadoflujo(){ - return estadoflujo; -} -/** - * @return the estadofirma - */ -public String getEstadofirma() { - return estadofirma; -} -/** - * @param estadofirma the estadofirma to set - */ -public void setEstadofirma(String estadofirma) { - this.estadofirma = estadofirma; -} -/**Fija el valor de estadoflujo -@param pEstadoflujo nuevo Valor de estadoflujo*/ -public void setEstadoflujo(String pEstadoflujo){ - estadoflujo=pEstadoflujo; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDecomisoArmaTransaccion))return false; - TarmDecomisoArmaTransaccion that = (TarmDecomisoArmaTransaccion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDecomisoArmaTransaccion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDecomisoArmaTransaccion -*/ -public Object createInstance(){ - TarmDecomisoArmaTransaccion instance=new TarmDecomisoArmaTransaccion(); - return instance; -} -/**Clona la entidad TarmDecomisoArmaTransaccion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDecomisoArmaTransaccion p=(TarmDecomisoArmaTransaccion)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDetRepDestruirArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDetRepDestruirArmas.java.svn-base deleted file mode 100644 index 53fd215..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDetRepDestruirArmas.java.svn-base +++ /dev/null @@ -1,348 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDETREPDESTRUIRARMAS*/ -@Entity(name="TarmDetRepDestruirArmas") -@Table(name="TARMDETREPDESTRUIRARMAS") -public class TarmDetRepDestruirArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDetRepDestruirArmas -*/ -@Id -@Column(name="CDETREPDESTRUIRARMAS" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="CREPORTE", nullable=false) - -/** -* Codigo del reporte -*/ -private Integer creporte; - -@Column(name="CDECOMISOARMA", nullable=false) - -/** -* Codigo de decomiso arma -*/ -private String cdecomisoarma; - -@Column(name="CLASE", nullable=true) - -/** -* Clase de arma o explosivo -*/ -private String clase; - -@Column(name="TIPO", nullable=true) - -/** -* Tipo de arma o explosivo -*/ -private String tipo; - -@Column(name="CALIBRE", nullable=true) - -/** -* Calibre del arma -*/ -private String calibre; - -@Column(name="MARCA", nullable=true) - -/** -* Marca del arma o explosivo -*/ -private String marca; - -@Column(name="SERIE", nullable=true) - -/** -* Serie del arma o explosivo -*/ -private String serie; - -@Column(name="CANTIDAD", nullable=true) - -/** -* Cantidad de unidades del arma o explosivo -*/ -private String cantidad; - -@Column(name="UNIDAD", nullable=true) - -/** -* Unidad de medida del arma o explosivo -*/ -private String unidad; - -@Column(name="FDECOMISO", nullable=true) - -/** -* Fecha de decomiso del arma o explosivo -*/ -private Date fdecomiso; - -@Column(name="PROPIETARIO", nullable=true) - -/** -* Propietario del arma o explosivo -*/ -private String propietario; - -@Column(name="NRECIBO", nullable=true) - -/** -* Numero de recibo con el que se incauto el arma o explosivo -*/ -private String nrecibo; - -/**Contructor por defecto*/ -public TarmDetRepDestruirArmas(){ -} -/**Contructor de TarmDetRepDestruirArmas -@param pPk Clave Primaria del entity -@param pCreporte Codigo del reporte -@param pCdecomisoarma Codigo de decomiso arma -*/ -public TarmDetRepDestruirArmas(Integer pPk,Integer pCreporte,String pCdecomisoarma){ - this(); - pk=pPk; - creporte=pCreporte; - cdecomisoarma=pCdecomisoarma; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDetRepDestruirArmas -*/ -public static TarmDetRepDestruirArmas find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDetRepDestruirArmas obj = pEntityManager.find(TarmDetRepDestruirArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDetRepDestruirArmas -@return El objeto que referencia a la Clave primaria de TarmDetRepDestruirArmas -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDetRepDestruirArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDetRepDestruirArmas -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de creporte -@return valor de creporte*/ -public Integer getCreporte(){ - return creporte; -} -/**Fija el valor de creporte -@param pCreporte nuevo Valor de creporte*/ -public void setCreporte(Integer pCreporte){ - creporte=pCreporte; -} - -/**Obtiene el valor de cdecomisoarma -@return valor de cdecomisoarma*/ -public String getCdecomisoarma(){ - return cdecomisoarma; -} -/**Fija el valor de cdecomisoarma -@param pCdecomisoarma nuevo Valor de cdecomisoarma*/ -public void setCdecomisoarma(String pCdecomisoarma){ - cdecomisoarma=pCdecomisoarma; -} - -/**Obtiene el valor de clase -@return valor de clase*/ -public String getClase(){ - return clase; -} -/**Fija el valor de clase -@param pClase nuevo Valor de clase*/ -public void setClase(String pClase){ - clase=pClase; -} - -/**Obtiene el valor de tipo -@return valor de tipo*/ -public String getTipo(){ - return tipo; -} -/**Fija el valor de tipo -@param pTipo nuevo Valor de tipo*/ -public void setTipo(String pTipo){ - tipo=pTipo; -} - -/**Obtiene el valor de calibre -@return valor de calibre*/ -public String getCalibre(){ - return calibre; -} -/**Fija el valor de calibre -@param pCalibre nuevo Valor de calibre*/ -public void setCalibre(String pCalibre){ - calibre=pCalibre; -} - -/**Obtiene el valor de marca -@return valor de marca*/ -public String getMarca(){ - return marca; -} -/**Fija el valor de marca -@param pMarca nuevo Valor de marca*/ -public void setMarca(String pMarca){ - marca=pMarca; -} - -/**Obtiene el valor de serie -@return valor de serie*/ -public String getSerie(){ - return serie; -} -/**Fija el valor de serie -@param pSerie nuevo Valor de serie*/ -public void setSerie(String pSerie){ - serie=pSerie; -} - -/**Obtiene el valor de cantidad -@return valor de cantidad*/ -public String getCantidad(){ - return cantidad; -} -/**Fija el valor de cantidad -@param pCantidad nuevo Valor de cantidad*/ -public void setCantidad(String pCantidad){ - cantidad=pCantidad; -} - -/**Obtiene el valor de unidad -@return valor de unidad*/ -public String getUnidad(){ - return unidad; -} -/**Fija el valor de unidad -@param pUnidad nuevo Valor de unidad*/ -public void setUnidad(String pUnidad){ - unidad=pUnidad; -} - -/**Obtiene el valor de fdecomiso -@return valor de fdecomiso*/ -public Date getFdecomiso(){ - return fdecomiso; -} -/**Fija el valor de fdecomiso -@param pFdecomiso nuevo Valor de fdecomiso*/ -public void setFdecomiso(Date pFdecomiso){ - fdecomiso=pFdecomiso; -} - -/**Obtiene el valor de propietario -@return valor de propietario*/ -public String getPropietario(){ - return propietario; -} -/**Fija el valor de propietario -@param pPropietario nuevo Valor de propietario*/ -public void setPropietario(String pPropietario){ - propietario=pPropietario; -} - -/**Obtiene el valor de nrecibo -@return valor de nrecibo*/ -public String getNrecibo(){ - return nrecibo; -} -/**Fija el valor de nrecibo -@param pNrecibo nuevo Valor de nrecibo*/ -public void setNrecibo(String pNrecibo){ - nrecibo=pNrecibo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDetRepDestruirArmas))return false; - TarmDetRepDestruirArmas that = (TarmDetRepDestruirArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDetRepDestruirArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDetRepDestruirArmas -*/ -public Object createInstance(){ - TarmDetRepDestruirArmas instance=new TarmDetRepDestruirArmas(); - return instance; -} -/**Clona la entidad TarmDetRepDestruirArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDetRepDestruirArmas p=(TarmDetRepDestruirArmas)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoAlfresco.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoAlfresco.java.svn-base deleted file mode 100644 index 9b6f06b..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoAlfresco.java.svn-base +++ /dev/null @@ -1,206 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TarmDocumentoAlfresco*/ -@Entity(name="TarmDocumentoAlfresco") -@Table(name="TARMDOCUMENTOALFRESCO") -public class TarmDocumentoAlfresco extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDocumentoAlfresco -*/ -@Id -@Column(name="DOCALFRESCOCODE" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "DOCUMENTOALFRESCO"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Number"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "8")}) - @GeneratedValue(generator = "seq_id") -private Long pk; - -/** -* Codigo de catalogo 01Recepcion, 02 Envio -*/ -@Column(name="CATALOG", nullable=true) -private String catalogo; - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de operaciones -*/ -@Column(name="CATALOGCODE", nullable=true) -private String catalogoCode; - -/** -* codigo del perfil -*/ -@Column(name="PERFIL", nullable=true) -private Integer perfil; - -/** -* Codigo de documento -*/ -@Column(name="DOCUMENTO", nullable=true) -private String documento; - -/**Contructor por defecto*/ -public TarmDocumentoAlfresco(){ -} -/**Contructor de TarmDocumentoAlfresco -@param pPk Clave Primaria del entity -*/ -public TarmDocumentoAlfresco(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDocumentoAlfresco -*/ -public static TarmDocumentoAlfresco find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDocumentoAlfresco obj = pEntityManager.find(TarmDocumentoAlfresco.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDocumentoAlfresco -@return El objeto que referencia a la Clave primaria de TarmDocumentoAlfresco -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDocumentoAlfresco -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDocumentoAlfresco -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/** - * @return the catalogo - */ -public String getCatalogo() { - return catalogo; -} -/** - * @param catalogo the catalogo to set - */ -public void setCatalogo(String catalogo) { - this.catalogo = catalogo; -} -/** - * @return the catalogoCode - */ -public String getCatalogoCode() { - return catalogoCode; -} -/** - * @param catalogoCode the catalogoCode to set - */ -public void setCatalogoCode(String catalogoCode) { - this.catalogoCode = catalogoCode; -} -/** - * @return the perfil - */ -public Integer getPerfil() { - return perfil; -} -/** - * @param perfil the perfil to set - */ -public void setPerfil(Integer perfil) { - this.perfil = perfil; -} -/** - * @return the documento - */ -public String getDocumento() { - return documento; -} -/** - * @param documento the documento to set - */ -public void setDocumento(String documento) { - this.documento = documento; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDocumentoAlfresco))return false; - TarmDocumentoAlfresco that = (TarmDocumentoAlfresco) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDocumentoAlfresco -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDocumentoAlfresco -*/ -public Object createInstance(){ - TarmDocumentoAlfresco instance=new TarmDocumentoAlfresco(); - return instance; -} -/**Clona la entidad TarmDocumentoAlfresco -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDocumentoAlfresco p=(TarmDocumentoAlfresco)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitante.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitante.java.svn-base deleted file mode 100644 index 8976b82..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitante.java.svn-base +++ /dev/null @@ -1,395 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDOCUMENTOHABILITANTE*/ -@Entity(name="TarmDocumentoHabilitante") -@Table(name="TARMDOCUMENTOHABILITANTE") -public class TarmDocumentoHabilitante extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDocumentoHabilitante -*/ -@Id -@Column(name="CDOCUMENTO" ,nullable=false, updatable=false) -private Long pk; -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="NUMERODOCUMENTO", nullable=true) - -/** -* Numero de documento habilitante -*/ -private String numerodocumento; - -@Column(name="FECHAEMISION", nullable=true) - -/** -* Fecha en la que se emitio el documento -*/ -private Date fechaemision; - -@Column(name="FECHAEXPIRACION", nullable=true) - -/** -* Fecha de expiracion del documento -*/ -private Date fechaexpiracion; - -@Column(name="CSOLICITUD", nullable=true) - -/** -* null -*/ -private String csolicitud; - -@Column(name="XPATH", nullable=true) - -/** -* Ruta en Alfresco donde se almacena el documento Habilitante. -*/ -private String xpath; - -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="ESTADOCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de estado de documento habilitante -*/ -private String estadocode; - -@Column(name="CODIGOARMA", nullable=true) - -/** -* Codigo del arma identificador del arma -*/ -private String codigoarma; - -@Column(name="CTRAMITE", nullable=true) - -/** -* null -*/ -private Long ctramite; - - - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* CENTRO DE CONTROL -*/ -private String centrocontrol; - -@Column(name="CUENTAREIMPRESION", nullable=true) - -/** -* null -*/ -private Integer cuentareimpresion; - - -@Column(name="FECHACAMBIOEXPIRACION", nullable=true) - -/** -* Fecha de expiracion del documento -*/ -private Date fechacambioexpiracion; -@Column(name="OBSERVACION", nullable=true) - -/** -* CENTRO DE CONTROL -*/ -private String observacion; - -@Column(name="PATHSUSPENCION", nullable=true) - -/** -* Ruta en Alfresco donde se almacena el documento Habilitante. -*/ -private String pathSuspencion; - -/**Contructor por defecto*/ -public TarmDocumentoHabilitante(){ -} -/**Contructor de TarmDocumentoHabilitante -@param pPk Clave Primaria del entity -*/ -public TarmDocumentoHabilitante(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDocumentoHabilitante -*/ -public static TarmDocumentoHabilitante find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDocumentoHabilitante obj = pEntityManager.find(TarmDocumentoHabilitante.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDocumentoHabilitante -@return El objeto que referencia a la Clave primaria de TarmDocumentoHabilitante -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDocumentoHabilitante -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDocumentoHabilitante -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de numerodocumento -@return valor de numerodocumento*/ -public String getNumerodocumento(){ - return numerodocumento; -} -/**Fija el valor de numerodocumento -@param pNumerodocumento nuevo Valor de numerodocumento*/ -public void setNumerodocumento(String pNumerodocumento){ - numerodocumento=pNumerodocumento; -} - -/**Obtiene el valor de fechaemision -@return valor de fechaemision*/ -public Date getFechaemision(){ - return fechaemision; -} -/**Fija el valor de fechaemision -@param pFechaemision nuevo Valor de fechaemision*/ -public void setFechaemision(Date pFechaemision){ - fechaemision=pFechaemision; -} - -/**Obtiene el valor de fechaexpiracion -@return valor de fechaexpiracion*/ -public Date getFechaexpiracion(){ - return fechaexpiracion; -} -/**Fija el valor de fechaexpiracion -@param pFechaexpiracion nuevo Valor de fechaexpiracion*/ -public void setFechaexpiracion(Date pFechaexpiracion){ - fechaexpiracion=pFechaexpiracion; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath(){ - return xpath; -} -/**Fija el valor de xpath -@param pXpath nuevo Valor de xpath*/ -public void setXpath(String pXpath){ - xpath=pXpath; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocode -@return valor de estadocode*/ -public String getEstadocode(){ - return estadocode; -} -/**Fija el valor de estadocode -@param pEstadocode nuevo Valor de estadocode*/ -public void setEstadocode(String pEstadocode){ - estadocode=pEstadocode; -} - -/**Obtiene el valor de codigoarma -@return valor de codigoarma*/ -public String getCodigoarma(){ - return codigoarma; -} -/**Fija el valor de codigoarma -@param pCodigoarma nuevo Valor de codigoarma*/ -public void setCodigoarma(String pCodigoarma){ - codigoarma=pCodigoarma; -} - -public String getCentrocontrol() { - return centrocontrol; -} -public void setCentrocontrol(String centrocontrol) { - this.centrocontrol = centrocontrol; -} -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de cuentareimpresion -@return valor de cuentareimpresion*/ -public Integer getCuentareimpresion(){ - return cuentareimpresion; -} -/**Fija el valor de cuentareimpresion -@param pCuentareimpresion nuevo Valor de cuentareimpresion*/ -public void setCuentareimpresion(Integer pCuentareimpresion){ - cuentareimpresion=pCuentareimpresion; -} - -public Date getFechacambioexpiracion() { - return fechacambioexpiracion; -} -public void setFechacambioexpiracion(Date fechacambioexpiracion) { - this.fechacambioexpiracion = fechacambioexpiracion; -} -public String getObservacion() { - return observacion; -} -public void setObservacion(String observacion) { - this.observacion = observacion; -} -public String getPathSuspencion() { - return pathSuspencion; -} -public void setPathSuspencion(String pathSuspencion) { - this.pathSuspencion = pathSuspencion; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDocumentoHabilitante))return false; - TarmDocumentoHabilitante that = (TarmDocumentoHabilitante) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDocumentoHabilitante -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDocumentoHabilitante -*/ -public Object createInstance(){ - TarmDocumentoHabilitante instance=new TarmDocumentoHabilitante(); - return instance; -} -/**Clona la entidad TarmDocumentoHabilitante -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDocumentoHabilitante p=(TarmDocumentoHabilitante)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitanteDetall.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitanteDetall.java.svn-base deleted file mode 100644 index 125df66..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmDocumentoHabilitanteDetall.java.svn-base +++ /dev/null @@ -1,190 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMDOCUMENTOHABILITANTEDETALL*/ -@Entity(name="TarmDocumentoHabilitanteDetall") -@Table(name="TARMDOCUMENTOHABILITANTEDETALL") -public class TarmDocumentoHabilitanteDetall extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmDocumentoHabilitanteDetall -*/ -@Id -@Column(name="CODIGODETALLE" ,nullable=false, updatable=false) -/*@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CODIGODETALLE"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.String"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "6")}) - @GeneratedValue(generator = "seq_id")*/ -private String pk; -@Column(name="CARMA", nullable=true) - -/** -* null -*/ -private String carma; - -@Column(name="CDOCUMENTO", nullable=true) - -/** -* null -*/ -private Long cdocumento; - -@Column(name="CODIGOARMA", nullable=true) - -/** -* null -*/ -private String codigoarma; - -/**Contructor por defecto*/ -public TarmDocumentoHabilitanteDetall(){ -} -/**Contructor de TarmDocumentoHabilitanteDetall -@param pPk Clave Primaria del entity -*/ -public TarmDocumentoHabilitanteDetall(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmDocumentoHabilitanteDetall -*/ -public static TarmDocumentoHabilitanteDetall find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmDocumentoHabilitanteDetall obj = pEntityManager.find(TarmDocumentoHabilitanteDetall.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmDocumentoHabilitanteDetall -@return El objeto que referencia a la Clave primaria de TarmDocumentoHabilitanteDetall -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmDocumentoHabilitanteDetall -@param pPk El objeto que referencia a la nueva Clave primaria de TarmDocumentoHabilitanteDetall -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de cdocumento -@return valor de cdocumento*/ -public Long getCdocumento(){ - return cdocumento; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setCdocumento(Long pCdocumento){ - cdocumento=pCdocumento; -} - -/**Obtiene el valor de codigoarma -@return valor de codigoarma*/ -public String getCodigoarma(){ - return codigoarma; -} -/**Fija el valor de codigoarma -@param pCodigoarma nuevo Valor de codigoarma*/ -public void setCodigoarma(String pCodigoarma){ - codigoarma=pCodigoarma; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmDocumentoHabilitanteDetall))return false; - TarmDocumentoHabilitanteDetall that = (TarmDocumentoHabilitanteDetall) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmDocumentoHabilitanteDetall -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmDocumentoHabilitanteDetall -*/ -public Object createInstance(){ - TarmDocumentoHabilitanteDetall instance=new TarmDocumentoHabilitanteDetall(); - return instance; -} -/**Clona la entidad TarmDocumentoHabilitanteDetall -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmDocumentoHabilitanteDetall p=(TarmDocumentoHabilitanteDetall)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmGuardias.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmGuardias.java.svn-base deleted file mode 100644 index 0aaf308..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmGuardias.java.svn-base +++ /dev/null @@ -1,162 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMGUARDIAS*/ -@Entity(name="TarmGuardias") -@Table(name="TARMGUARDIAS") -public class TarmGuardias extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmGuardias -*/ -@Id -@Column(name="CGUARDIA" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="CEMPRESA", nullable=true) - -/** -* Codigo de persona -*/ -private Integer cempresa; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -/**Contructor por defecto*/ -public TarmGuardias(){ -} -/**Contructor de TarmGuardias -@param pPk Clave Primaria del entity -*/ -public TarmGuardias(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmGuardias -*/ -public static TarmGuardias find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmGuardias obj = pEntityManager.find(TarmGuardias.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmGuardias -@return El objeto que referencia a la Clave primaria de TarmGuardias -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmGuardias -@param pPk El objeto que referencia a la nueva Clave primaria de TarmGuardias -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de cempresa -@return valor de cempresa*/ -public Integer getCempresa(){ - return cempresa; -} -/**Fija el valor de cempresa -@param pCempresa nuevo Valor de cempresa*/ -public void setCempresa(Integer pCempresa){ - cempresa=pCempresa; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmGuardias))return false; - TarmGuardias that = (TarmGuardias) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmGuardias -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmGuardias -*/ -public Object createInstance(){ - TarmGuardias instance=new TarmGuardias(); - return instance; -} -/**Clona la entidad TarmGuardias -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmGuardias p=(TarmGuardias)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccion.java.svn-base deleted file mode 100644 index 66b9ff9..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccion.java.svn-base +++ /dev/null @@ -1,365 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMINSPECCION*/ -@Entity(name="TarmInspeccion") -@Table(name="TARMINSPECCION") -public class TarmInspeccion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmInspeccion -*/ -@Id -@Column(name="CINSPECCION" ,nullable=false, updatable=false) -private Long pk; -@Column(name="APLICADECOMISO", nullable=true) - -/** -* si el tramite se niega, el campo es para validar si aplica decomiso -*/ -private String aplicadecomiso; - -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona responsable de la inspeccion -*/ -private Integer personcode; - -@Column(name="CTRAMITE", nullable=true) - -/** -* cdigo de la tabla de tramite -*/ -private Long ctramite; - -@Column(name="TRAMITEPROCESO", nullable=true) - -/** -* campo para validar si el tramite o proceso continua -*/ -private String tramiteproceso; - -@Column(name="OBSERVACION", nullable=true) - -/** -* campo de observacin de la inspeccin -*/ -private String observacion; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* fecha de registro de la inspeccin -*/ -private Date fecharegistro; - -@Column(name="NUMORDENTRABAJO", nullable=true) - -/** -* null -*/ -private String numordentrabajo; - -@Column(name="CSITIOALMACENAMIENTO", nullable=true) - -/** -* cdigo de la tabla de sitios de almacenamiento -*/ -private String csitioalmacenamiento; - -@Column(name="CPLANIFICACIONTRAMITE", nullable=true) - -/** -* codigo de la tabla de planificacion tramite, codigo de la planificacion de la inspeccion -*/ -private Long cplanificaciontramite; - -@Column(name="PLANIFICADO", nullable=true) - -/** -* campo para validar si es el registro de una inspeccion planificada o no planificada -*/ -private String planificado; - -@Column(name="CENTROCONTROL", nullable=true) - -/** -* centro de control al que pertenece la persona que realiza el tramite -*/ -private String centrocontrol; - -@Column(name="ANNO", nullable=true) - -/** -* null -*/ -private Long anno; - -/**Contructor por defecto*/ -public TarmInspeccion(){ -} -/**Contructor de TarmInspeccion -@param pPk Clave Primaria del entity -*/ -public TarmInspeccion(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmInspeccion -*/ -public static TarmInspeccion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmInspeccion obj = pEntityManager.find(TarmInspeccion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmInspeccion -@return El objeto que referencia a la Clave primaria de TarmInspeccion -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmInspeccion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmInspeccion -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de aplicadecomiso -@return valor de aplicadecomiso*/ -public String getAplicadecomiso(){ - return aplicadecomiso; -} -/**Fija el valor de aplicadecomiso -@param pAplicadecomiso nuevo Valor de aplicadecomiso*/ -public void setAplicadecomiso(String pAplicadecomiso){ - aplicadecomiso=pAplicadecomiso; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de tramiteproceso -@return valor de tramiteproceso*/ -public String getTramiteproceso(){ - return tramiteproceso; -} -/**Fija el valor de tramiteproceso -@param pTramiteproceso nuevo Valor de tramiteproceso*/ -public void setTramiteproceso(String pTramiteproceso){ - tramiteproceso=pTramiteproceso; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Date getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Date pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de numordentrabajo -@return valor de numordentrabajo*/ -public String getNumordentrabajo(){ - return numordentrabajo; -} -/**Fija el valor de numordentrabajo -@param pNumordentrabajo nuevo Valor de numordentrabajo*/ -public void setNumordentrabajo(String pNumordentrabajo){ - numordentrabajo=pNumordentrabajo; -} - -/**Obtiene el valor de csitioalmacenamiento -@return valor de csitioalmacenamiento*/ -public String getCsitioalmacenamiento(){ - return csitioalmacenamiento; -} -/**Fija el valor de csitioalmacenamiento -@param pCsitioalmacenamiento nuevo Valor de csitioalmacenamiento*/ -public void setCsitioalmacenamiento(String pCsitioalmacenamiento){ - csitioalmacenamiento=pCsitioalmacenamiento; -} - -/**Obtiene el valor de cplanificaciontramite -@return valor de cplanificaciontramite*/ -public Long getCplanificaciontramite(){ - return cplanificaciontramite; -} -/**Fija el valor de cplanificaciontramite -@param pCplanificaciontramite nuevo Valor de cplanificaciontramite*/ -public void setCplanificaciontramite(Long pCplanificaciontramite){ - cplanificaciontramite=pCplanificaciontramite; -} - -/**Obtiene el valor de planificado -@return valor de planificado*/ -public String getPlanificado(){ - return planificado; -} -/**Fija el valor de planificado -@param pPlanificado nuevo Valor de planificado*/ -public void setPlanificado(String pPlanificado){ - planificado=pPlanificado; -} -/** - * @return the centrocontrol - */ -public String getCentrocontrol() { - return centrocontrol; -} -/** - * @param centrocontrol the centrocontrol to set - */ -public void setCentrocontrol(String centrocontrol) { - this.centrocontrol = centrocontrol; -} -/** - * @return the anno - */ -public Long getAnno() { - return anno; -} -/** - * @param anno the anno to set - */ -public void setAnno(Long anno) { - this.anno = anno; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmInspeccion))return false; - TarmInspeccion that = (TarmInspeccion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmInspeccion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmInspeccion -*/ -public Object createInstance(){ - TarmInspeccion instance=new TarmInspeccion(); - return instance; -} -/**Clona la entidad TarmInspeccion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmInspeccion p=(TarmInspeccion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccionArchivo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccionArchivo.java.svn-base deleted file mode 100644 index 7c44f3d..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmInspeccionArchivo.java.svn-base +++ /dev/null @@ -1,228 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMINSPECCIONARCHIVO*/ -@Entity(name="TarmInspeccionArchivo") -@Table(name="TARMINSPECCIONARCHIVO") -public class TarmInspeccionArchivo extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmInspeccionArchivo -*/ -@Id -@Column(name="CINSPARCH" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CINSPARCH"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Integer"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "10")}) - @GeneratedValue(generator = "seq_id") -private Integer pk; -@Column(name="CINSPECCION", nullable=true) - -/** -* codigo de la tabla de inspeccin -*/ -private Long cinspeccion; - -@Column(name="DESCRIPCION", nullable=true) - -/** -* null -*/ -private String descripcion; - -@Column(name="XPATH", nullable=true) - -/** -* null -*/ -private String xpath; - -@Column(name="XPATHORIGINAL", nullable=true) - -/** -* null -*/ -private String xpathoriginal; - -@Column(name="OBSERVACION", nullable=true) - -/** -* null -*/ -private String observacion; - -@Column(name="USUARIOCAMBIO", nullable=true) - -/** -* null -*/ -private String usuariocambio; - -/**Contructor por defecto*/ -public TarmInspeccionArchivo(){ -} -/**Contructor de TarmInspeccionArchivo -@param pPk Clave Primaria del entity -*/ -public TarmInspeccionArchivo(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmInspeccionArchivo -*/ -public static TarmInspeccionArchivo find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmInspeccionArchivo obj = pEntityManager.find(TarmInspeccionArchivo.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmInspeccionArchivo -@return El objeto que referencia a la Clave primaria de TarmInspeccionArchivo -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmInspeccionArchivo -@param pPk El objeto que referencia a la nueva Clave primaria de TarmInspeccionArchivo -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de cinspeccion -@return valor de cinspeccion*/ -public Long getCinspeccion(){ - return cinspeccion; -} -/**Fija el valor de cinspeccion -@param pCinspeccion nuevo Valor de cinspeccion*/ -public void setCinspeccion(Long pCinspeccion){ - cinspeccion=pCinspeccion; -} - -/**Obtiene el valor de descripcion -@return valor de descripcion*/ -public String getDescripcion(){ - return descripcion; -} -/**Fija el valor de descripcion -@param pDescripcion nuevo Valor de descripcion*/ -public void setDescripcion(String pDescripcion){ - descripcion=pDescripcion; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath(){ - return xpath; -} - - -public String getXpathoriginal() { - return xpathoriginal; -} -public void setXpathoriginal(String xpathoriginal) { - this.xpathoriginal = xpathoriginal; -} -public String getObservacion() { - return observacion; -} -public void setObservacion(String observacion) { - this.observacion = observacion; -} -public String getUsuariocambio() { - return usuariocambio; -} -public void setUsuariocambio(String usuariocambio) { - this.usuariocambio = usuariocambio; -} -/**Fija el valor de xpath -@param pXpath nuevo Valor de xpath*/ -public void setXpath(String pXpath){ - xpath=pXpath; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmInspeccionArchivo))return false; - TarmInspeccionArchivo that = (TarmInspeccionArchivo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmInspeccionArchivo -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmInspeccionArchivo -*/ -public Object createInstance(){ - TarmInspeccionArchivo instance=new TarmInspeccionArchivo(); - return instance; -} -/**Clona la entidad TarmInspeccionArchivo -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmInspeccionArchivo p=(TarmInspeccionArchivo)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajo.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajo.java.svn-base deleted file mode 100644 index 7291d3a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajo.java.svn-base +++ /dev/null @@ -1,330 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMORDENTRABAJO*/ -@Entity(name="TarmOrdenTrabajo") -@Table(name="TARMORDENTRABAJO") -public class TarmOrdenTrabajo extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmOrdenTrabajo -*/ -@Id -@Column(name="CORDENTRABAJO" ,nullable=false, updatable=false) -private Long pk; -@Column(name="CSOLICITUD", nullable=true) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="CTRAMITE", nullable=true) - -/** -* null -*/ -private Long ctramite; - -@Column(name="FSOLICITUD", nullable=true) - -/** -* null -*/ -private Date fsolicitud; - -@Column(name="DOCUMENTOREFERENCIA", nullable=true) - -/** -* null -*/ -private String documentoreferencia; - -@Column(name="EMPRESASOLICITA", nullable=true) - -/** -* null -*/ -private String empresasolicita; - -@Column(name="DIRECCIONCOMISION", nullable=true) - -/** -* null -*/ -private String direccioncomision; - -@Column(name="RUTA", nullable=true) - -/** -* null -*/ -private String ruta; - -@Column(name="TIEMPOESTIMADO", nullable=true) - -/** -* null -*/ -private String tiempoestimado; - -@Column(name="FINICIO", nullable=true) - -/** -* null -*/ -private Date finicio; - -@Column(name="FFINALIZACION", nullable=true) - -/** -* null -*/ -private Date ffinalizacion; - -@Column(name="OBSERVACIONES", nullable=true) - -/** -* null -*/ -private String observaciones; - -/**Contructor por defecto*/ -public TarmOrdenTrabajo(){ -} -/**Contructor de TarmOrdenTrabajo -@param pPk Clave Primaria del entity -*/ -public TarmOrdenTrabajo(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmOrdenTrabajo -*/ -public static TarmOrdenTrabajo find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmOrdenTrabajo obj = pEntityManager.find(TarmOrdenTrabajo.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmOrdenTrabajo -@return El objeto que referencia a la Clave primaria de TarmOrdenTrabajo -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmOrdenTrabajo -@param pPk El objeto que referencia a la nueva Clave primaria de TarmOrdenTrabajo -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de fsolicitud -@return valor de fsolicitud*/ -public Date getFsolicitud(){ - return fsolicitud; -} -/**Fija el valor de fsolicitud -@param pFsolicitud nuevo Valor de fsolicitud*/ -public void setFsolicitud(Date pFsolicitud){ - fsolicitud=pFsolicitud; -} - -/**Obtiene el valor de documentoreferencia -@return valor de documentoreferencia*/ -public String getDocumentoreferencia(){ - return documentoreferencia; -} -/**Fija el valor de documentoreferencia -@param pDocumentoreferencia nuevo Valor de documentoreferencia*/ -public void setDocumentoreferencia(String pDocumentoreferencia){ - documentoreferencia=pDocumentoreferencia; -} - -/**Obtiene el valor de empresasolicita -@return valor de empresasolicita*/ -public String getEmpresasolicita(){ - return empresasolicita; -} -/**Fija el valor de empresasolicita -@param pEmpresasolicita nuevo Valor de empresasolicita*/ -public void setEmpresasolicita(String pEmpresasolicita){ - empresasolicita=pEmpresasolicita; -} - -/**Obtiene el valor de direccioncomision -@return valor de direccioncomision*/ -public String getDireccioncomision(){ - return direccioncomision; -} -/**Fija el valor de direccioncomision -@param pDireccioncomision nuevo Valor de direccioncomision*/ -public void setDireccioncomision(String pDireccioncomision){ - direccioncomision=pDireccioncomision; -} - -/**Obtiene el valor de ruta -@return valor de ruta*/ -public String getRuta(){ - return ruta; -} -/**Fija el valor de ruta -@param pRuta nuevo Valor de ruta*/ -public void setRuta(String pRuta){ - ruta=pRuta; -} - -/**Obtiene el valor de tiempoestimado -@return valor de tiempoestimado*/ -public String getTiempoestimado(){ - return tiempoestimado; -} -/**Fija el valor de tiempoestimado -@param pTiempoestimado nuevo Valor de tiempoestimado*/ -public void setTiempoestimado(String pTiempoestimado){ - tiempoestimado=pTiempoestimado; -} - -/**Obtiene el valor de finicio -@return valor de finicio*/ -public Date getFinicio(){ - return finicio; -} -/**Fija el valor de finicio -@param pFinicio nuevo Valor de finicio*/ -public void setFinicio(Date pFinicio){ - finicio=pFinicio; -} - -/**Obtiene el valor de ffinalizacion -@return valor de ffinalizacion*/ -public Date getFfinalizacion(){ - return ffinalizacion; -} -/**Fija el valor de ffinalizacion -@param pFfinalizacion nuevo Valor de ffinalizacion*/ -public void setFfinalizacion(Date pFfinalizacion){ - ffinalizacion=pFfinalizacion; -} - -/**Obtiene el valor de observaciones -@return valor de observaciones*/ -public String getObservaciones(){ - return observaciones; -} -/**Fija el valor de observaciones -@param pObservaciones nuevo Valor de observaciones*/ -public void setObservaciones(String pObservaciones){ - observaciones=pObservaciones; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmOrdenTrabajo))return false; - TarmOrdenTrabajo that = (TarmOrdenTrabajo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmOrdenTrabajo -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmOrdenTrabajo -*/ -public Object createInstance(){ - TarmOrdenTrabajo instance=new TarmOrdenTrabajo(); - return instance; -} -/**Clona la entidad TarmOrdenTrabajo -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmOrdenTrabajo p=(TarmOrdenTrabajo)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajoCustodios.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajoCustodios.java.svn-base deleted file mode 100644 index 026b29c..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmOrdenTrabajoCustodios.java.svn-base +++ /dev/null @@ -1,263 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMORDENTRABAJOCUSTODIOS*/ -@Entity(name="TarmOrdenTrabajoCustodios") -@Table(name="TARMORDENTRABAJOCUSTODIOS") -public class TarmOrdenTrabajoCustodios extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmOrdenTrabajoCustodios -*/ -@Id -@Column(name="CORDENTRABAJOCUSTODIOS" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CORDENTRABAJOCUSTODIOS"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) -@GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="GRADO", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String grado; - -@Column(name="GRADOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String gradocodigo; - -@Column(name="CORDENTRABAJO", nullable=true) - -/** -* null -*/ -private Long cordentrabajo; - -@Column(name="CEDULACUSTODIO", nullable=true) - -/** -* null -*/ -private String cedulacustodio; - -@Column(name="NOMBRECUSTODIO", nullable=true) - -/** -* null -*/ -private String nombrecustodio; - -@Column(name="APELLIDOSCUSTIDIO", nullable=true) - -/** -* null -*/ -private String apellidoscustidio; - -@Column(name="OBSERVACIONES", nullable=true) - -/** -* null -*/ -private String observaciones; - -/**Contructor por defecto*/ -public TarmOrdenTrabajoCustodios(){ -} -/**Contructor de TarmOrdenTrabajoCustodios -@param pPk Clave Primaria del entity -*/ -public TarmOrdenTrabajoCustodios(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmOrdenTrabajoCustodios -*/ -public static TarmOrdenTrabajoCustodios find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmOrdenTrabajoCustodios obj = pEntityManager.find(TarmOrdenTrabajoCustodios.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmOrdenTrabajoCustodios -@return El objeto que referencia a la Clave primaria de TarmOrdenTrabajoCustodios -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmOrdenTrabajoCustodios -@param pPk El objeto que referencia a la nueva Clave primaria de TarmOrdenTrabajoCustodios -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de grado -@return valor de grado*/ -public String getGrado(){ - return grado; -} -/**Fija el valor de grado -@param pGrado nuevo Valor de grado*/ -public void setGrado(String pGrado){ - grado=pGrado; -} - -/**Obtiene el valor de gradocodigo -@return valor de gradocodigo*/ -public String getGradocodigo(){ - return gradocodigo; -} -/**Fija el valor de gradocodigo -@param pGradocodigo nuevo Valor de gradocodigo*/ -public void setGradocodigo(String pGradocodigo){ - gradocodigo=pGradocodigo; -} - -/**Obtiene el valor de cordentrabajo -@return valor de cordentrabajo*/ -public Long getCordentrabajo(){ - return cordentrabajo; -} -/**Fija el valor de cordentrabajo -@param pCordentrabajo nuevo Valor de cordentrabajo*/ -public void setCordentrabajo(Long pCordentrabajo){ - cordentrabajo=pCordentrabajo; -} - -/**Obtiene el valor de cedulacustodio -@return valor de cedulacustodio*/ -public String getCedulacustodio(){ - return cedulacustodio; -} -/**Fija el valor de cedulacustodio -@param pCedulacustodio nuevo Valor de cedulacustodio*/ -public void setCedulacustodio(String pCedulacustodio){ - cedulacustodio=pCedulacustodio; -} - -/**Obtiene el valor de nombrecustodio -@return valor de nombrecustodio*/ -public String getNombrecustodio(){ - return nombrecustodio; -} -/**Fija el valor de nombrecustodio -@param pNombrecustodio nuevo Valor de nombrecustodio*/ -public void setNombrecustodio(String pNombrecustodio){ - nombrecustodio=pNombrecustodio; -} - -/**Obtiene el valor de apellidoscustidio -@return valor de apellidoscustidio*/ -public String getApellidoscustidio(){ - return apellidoscustidio; -} -/**Fija el valor de apellidoscustidio -@param pApellidoscustidio nuevo Valor de apellidoscustidio*/ -public void setApellidoscustidio(String pApellidoscustidio){ - apellidoscustidio=pApellidoscustidio; -} - -/**Obtiene el valor de observaciones -@return valor de observaciones*/ -public String getObservaciones() { - return observaciones; -} - -/**Fija el valor de observaciones -@param pObservaciones nuevo Valor de observaciones*/ -public void setObservaciones(String observaciones) { - this.observaciones = observaciones; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmOrdenTrabajoCustodios))return false; - TarmOrdenTrabajoCustodios that = (TarmOrdenTrabajoCustodios) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmOrdenTrabajoCustodios -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmOrdenTrabajoCustodios -*/ -public Object createInstance(){ - TarmOrdenTrabajoCustodios instance=new TarmOrdenTrabajoCustodios(); - return instance; -} -/**Clona la entidad TarmOrdenTrabajoCustodios -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmOrdenTrabajoCustodios p=(TarmOrdenTrabajoCustodios)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomiso.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomiso.java.svn-base deleted file mode 100644 index 39f9369..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomiso.java.svn-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSANCIONDECOMISO*/ -@Entity(name="TarmSancionDecomiso") -@Table(name="TARMSANCIONDECOMISO") -public class TarmSancionDecomiso extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSancionDecomiso -*/ -@EmbeddedId -private TarmSancionDecomisoKey pk; -@Column(name="FECHAINICIO", nullable=true) - -/** -* null -*/ -private Date fechainicio; - -@Column(name="NORESOLUCION", nullable=true) - -/** -* Numero de la sancion convertido. SAN-00codigo -*/ -private String noresolucion; - -@Column(name="CTIPOSANCION", nullable=true) - -/** -* Clave primaria de la tabla -*/ -private String ctiposancion; - -@Column(name="FECHAFINAL", nullable=true) - -/** -* Fecha en la que se cumple la sancin -*/ -private Date fechafinal; - -@Column(name="XPATH", nullable=true) - -/** -* xpath del archivo convetido -*/ -private String xpath; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona sancionada -*/ -private Integer personcode; - -@Column(name="CDOCUMENTO", nullable=true) - -/** -* null -*/ -private Long cdocumento; - -@Column(name="CARMA", nullable=true) - -/** -* Codigo de arma -*/ -private String carma; - -/**Contructor por defecto*/ -public TarmSancionDecomiso(){ -} -/**Contructor de TarmSancionDecomiso -@param pPk Clave Primaria del entity -*/ -public TarmSancionDecomiso(TarmSancionDecomisoKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSancionDecomiso -*/ -public static TarmSancionDecomiso find(EntityManager pEntityManager,TarmSancionDecomisoKey pKey) throws Exception{ - TarmSancionDecomiso obj = pEntityManager.find(TarmSancionDecomiso.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSancionDecomiso -@return El objeto que referencia a la Clave primaria de TarmSancionDecomiso -*/ -public TarmSancionDecomisoKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSancionDecomiso -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSancionDecomiso -*/ -public void setPk(TarmSancionDecomisoKey pPk){ - pk=pPk; -} -/**Obtiene el valor de fechainicio -@return valor de fechainicio*/ -public Date getFechainicio(){ - return fechainicio; -} -/**Fija el valor de fechainicio -@param pFechainicio nuevo Valor de fechainicio*/ -public void setFechainicio(Date pFechainicio){ - fechainicio=pFechainicio; -} - -/**Obtiene el valor de noresolucion -@return valor de noresolucion*/ -public String getNoresolucion(){ - return noresolucion; -} -/**Fija el valor de noresolucion -@param pNoresolucion nuevo Valor de noresolucion*/ -public void setNoresolucion(String pNoresolucion){ - noresolucion=pNoresolucion; -} - -/**Obtiene el valor de ctiposancion -@return valor de ctiposancion*/ -public String getCtiposancion(){ - return ctiposancion; -} -/**Fija el valor de ctiposancion -@param pCtiposancion nuevo Valor de ctiposancion*/ -public void setCtiposancion(String pCtiposancion){ - ctiposancion=pCtiposancion; -} - -/**Obtiene el valor de fechafinal -@return valor de fechafinal*/ -public Date getFechafinal(){ - return fechafinal; -} -/**Fija el valor de fechafinal -@param pFechafinal nuevo Valor de fechafinal*/ -public void setFechafinal(Date pFechafinal){ - fechafinal=pFechafinal; -} - -/**Obtiene el valor de xpath -@return valor de xpath*/ -public String getXpath(){ - return xpath; -} -/**Fija el valor de xpath -@param pXpath nuevo Valor de xpath*/ -public void setXpath(String pXpath){ - xpath=pXpath; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de cdocumento -@return valor de cdocumento*/ -public Long getCdocumento(){ - return cdocumento; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setCdocumento(Long pCdocumento){ - cdocumento=pCdocumento; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSancionDecomiso))return false; - TarmSancionDecomiso that = (TarmSancionDecomiso) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSancionDecomiso -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSancionDecomiso -*/ -public Object createInstance(){ - TarmSancionDecomiso instance=new TarmSancionDecomiso(); - instance.setPk(new TarmSancionDecomisoKey()); - return instance; -} -/**Clona la entidad TarmSancionDecomiso -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSancionDecomiso p=(TarmSancionDecomiso)this.clone(); - p.setPk((TarmSancionDecomisoKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomisoKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomisoKey.java.svn-base deleted file mode 100644 index c318c8b..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionDecomisoKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSANCIONDECOMISO*/ -@Embeddable -public class TarmSancionDecomisoKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CSANCIONDECOMISO", nullable=false,updatable=false) - -/** -* Codigo de la sancion aplicada -*/ -private String csanciondecomiso; - -@Column(name="CDECOMISO", nullable=false,updatable=false) - -/** -* Codigo del decomiso asociado -*/ -private Long cdecomiso; - -/**Contructor por defecto*/ -public TarmSancionDecomisoKey(){} -/**Contructor de TarmSancionDecomisoKey -@param pCsanciondecomiso Codigo de la sancion aplicada -@param pCdecomiso Codigo del decomiso asociado -*/ -public TarmSancionDecomisoKey(String pCsanciondecomiso,Long pCdecomiso){ - csanciondecomiso=pCsanciondecomiso; - cdecomiso=pCdecomiso; -} -/**Obtiene el valor de csanciondecomiso -@return valor de csanciondecomiso*/ -public String getCsanciondecomiso(){ - return csanciondecomiso; -} -/**Fija el valor de csanciondecomiso -@param pCsanciondecomiso nuevo Valor de csanciondecomiso*/ -public void setCsanciondecomiso(String pCsanciondecomiso){ - csanciondecomiso=pCsanciondecomiso; -} - -/**Obtiene el valor de cdecomiso -@return valor de cdecomiso*/ -public Long getCdecomiso(){ - return cdecomiso; -} -/**Fija el valor de cdecomiso -@param pCdecomiso nuevo Valor de cdecomiso*/ -public void setCdecomiso(Long pCdecomiso){ - cdecomiso=pCdecomiso; -} - -/**Implementacion de la comparacion de TarmSancionDecomisoKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSancionDecomisoKey))return false; - TarmSancionDecomisoKey that = (TarmSancionDecomisoKey) o; - if (this.getCsanciondecomiso() == null || that.getCsanciondecomiso() == null){ - return false; - } - if (! this.getCsanciondecomiso().equals(that.getCsanciondecomiso())){ - return false; - } - if (this.getCdecomiso() == null || that.getCdecomiso() == null){ - return false; - } - if (! this.getCdecomiso().equals(that.getCdecomiso())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSancionDecomisoKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCsanciondecomiso() == null ? 0 : this.getCsanciondecomiso().hashCode()); - result = result * 37 + (this.getCdecomiso() == null ? 0 : this.getCdecomiso().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionRecomendacion.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionRecomendacion.java.svn-base deleted file mode 100644 index f47d3ac..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSancionRecomendacion.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSANCIONRECOMENDACION*/ -@Entity(name="TarmSancionRecomendacion") -@Table(name="TARMSANCIONRECOMENDACION") -public class TarmSancionRecomendacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSancionRecomendacion -*/ -@Id -@Column(name="CRECOMENDACION" ,nullable=false, updatable=false) -private String pk; -@Column(name="CDECOMISO", nullable=true) - -/** -* Codigo del Decomiso -*/ -private Long cdecomiso; - -@Column(name="CSANCIONDECOMISO", nullable=true) - -/** -* Codigo de la sancion ligada -*/ -private String csanciondecomiso; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de loggeada -*/ -private Integer personcode; - -@Column(name="RECOMENDACION", nullable=true) - -/** -* null -*/ -private String recomendacion; - -/**Contructor por defecto*/ -public TarmSancionRecomendacion(){ -} -/**Contructor de TarmSancionRecomendacion -@param pPk Clave Primaria del entity -*/ -public TarmSancionRecomendacion(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSancionRecomendacion -*/ -public static TarmSancionRecomendacion find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmSancionRecomendacion obj = pEntityManager.find(TarmSancionRecomendacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSancionRecomendacion -@return El objeto que referencia a la Clave primaria de TarmSancionRecomendacion -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSancionRecomendacion -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSancionRecomendacion -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de cdecomiso -@return valor de cdecomiso*/ -public Long getCdecomiso(){ - return cdecomiso; -} -/**Fija el valor de cdecomiso -@param pCdecomiso nuevo Valor de cdecomiso*/ -public void setCdecomiso(Long pCdecomiso){ - cdecomiso=pCdecomiso; -} - -/**Obtiene el valor de csanciondecomiso -@return valor de csanciondecomiso*/ -public String getCsanciondecomiso(){ - return csanciondecomiso; -} -/**Fija el valor de csanciondecomiso -@param pCsanciondecomiso nuevo Valor de csanciondecomiso*/ -public void setCsanciondecomiso(String pCsanciondecomiso){ - csanciondecomiso=pCsanciondecomiso; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de recomendacion -@return valor de recomendacion*/ -public String getRecomendacion(){ - return recomendacion; -} -/**Fija el valor de recomendacion -@param pRecomendacion nuevo Valor de recomendacion*/ -public void setRecomendacion(String pRecomendacion){ - recomendacion=pRecomendacion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSancionRecomendacion))return false; - TarmSancionRecomendacion that = (TarmSancionRecomendacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSancionRecomendacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSancionRecomendacion -*/ -public Object createInstance(){ - TarmSancionRecomendacion instance=new TarmSancionRecomendacion(); - return instance; -} -/**Clona la entidad TarmSancionRecomendacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSancionRecomendacion p=(TarmSancionRecomendacion)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitud.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitud.java.svn-base deleted file mode 100644 index 6dd595b..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitud.java.svn-base +++ /dev/null @@ -1,624 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUD*/ -@Entity(name="TarmSolicitud") -@Table(name="TARMSOLICITUD") -public class TarmSolicitud extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitud -*/ -@Id -@Column(name="CSOLICITUD" ,nullable=false, updatable=false) -private String pk; -@Column(name="LUGARORIGEN", nullable=true) - -/** -* null -*/ -private String lugarorigen; - -@Column(name="ORIGENADQUISICION", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String origenadquisicion; - -@Column(name="CTRAMITE", nullable=true) - -/** -* null -*/ -private Long ctramite; - -@Column(name="CPROVINCIADESTINO", nullable=true) - -/** -* null -*/ -private String cprovinciadestino; - -@Column(name="LUGARDESTINO", nullable=true) - -/** -* null -*/ -private String lugardestino; - -@Column(name="FREAL", nullable=true) - -/** -* null -*/ -private Timestamp freal; - -@Column(name="MULTA", nullable=true) - -/** -* null -*/ -private BigDecimal multa; - -@Column(name="CPAISORIGEN", nullable=true) - -/** -* null -*/ -private String cpaisorigen; - -@Column(name="CPROVINCIAORIGEN", nullable=true) - -/** -* null -*/ -private String cprovinciaorigen; - -@Column(name="ESTADOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String estadocodigo; - -@Column(name="OBSERVACION", nullable=true) - -/** -* null -*/ -private String observacion; - -@Column(name="CCANTONORIGEN", nullable=true) - -/** -* null -*/ -private String ccantonorigen; - -@Column(name="CCANTONDESTINO", nullable=true) -/** -* null -*/ -private String ccantondestino; - -@Column(name="ESTADO", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String estado; - -@Column(name="FREGISTRO", nullable=true) - -/** -* null -*/ -private Date fregistro; - -@Column(name="NUMEROSOLICITUD", nullable=false) - -/** -* null -*/ -private String numerosolicitud; - -@Column(name="CPAISDESTINO", nullable=true) - -/** -* null -*/ -private String cpaisdestino; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="CCENTROCONTROL", nullable=true) - -/** -* Codigo de tipo de tramite -*/ -private String ccentrocontrol; - -@Column(name="ORIGENADQUISICIONCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String origenadquisicioncodigo; - -@Column(name="FVERIFICAREQUISITOS", nullable=true) - -/** -* Fecha en la que se verifica los requisitos de la solicitud -*/ -private Date fverificarequisitos; - -@Column(name="NUMEROCUSTODIOS", nullable=true) - -/** -* Indica el numero de custodios de la solicitud -*/ -private Integer numerocustodios; - -@Column(name="INICIOFLUJO", nullable=true) -/** -* null -*/ -private String inicioFlujo; - -@Column(name="AUCP", nullable=true) -/** -* Codigo de solicitud AUCP -*/ -private String aucp; - -@Column(name="XPATHACTA", nullable=true) - -/** -* null -*/ -private String xpathacta; - -@Column(name="TIPODOCUMENTOORIGEN", nullable=true) - -/** -* Codigo de catalogo 01 Cdula, 02 Ruc -*/ -private String tipodocumentoorigen; - -@Column(name="NUMERODOCUMENTOORIGEN", nullable=true) - -/** -* Nmero de documento de la persna o empresa que realiza la compra -*/ -private String numerodocumentoorigen; - -@Column(name="NOMBRERAZONSOCIALORIGEN", nullable=true) -/** -* Nombre de la persona o empresa de la compra -*/ -private String nombrerazonsocialorigen; - -/**Contructor por defecto*/ -public TarmSolicitud(){ -} -/**Contructor de TarmSolicitud -@param pPk Clave Primaria del entity -@param pNumerosolicitud null -*/ -public TarmSolicitud(String pPk,String pNumerosolicitud){ - this(); - pk=pPk; - numerosolicitud=pNumerosolicitud; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitud -*/ -public static TarmSolicitud find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmSolicitud obj = pEntityManager.find(TarmSolicitud.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitud -@return El objeto que referencia a la Clave primaria de TarmSolicitud -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitud -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitud -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de lugarorigen -@return valor de lugarorigen*/ -public String getLugarorigen(){ - return lugarorigen; -} -/**Fija el valor de lugarorigen -@param pLugarorigen nuevo Valor de lugarorigen*/ -public void setLugarorigen(String pLugarorigen){ - lugarorigen=pLugarorigen; -} - -/**Obtiene el valor de origenadquisicion -@return valor de origenadquisicion*/ -public String getOrigenadquisicion(){ - return origenadquisicion; -} -/**Fija el valor de origenadquisicion -@param pOrigenadquisicion nuevo Valor de origenadquisicion*/ -public void setOrigenadquisicion(String pOrigenadquisicion){ - origenadquisicion=pOrigenadquisicion; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Obtiene el valor de cprovinciadestino -@return valor de cprovinciadestino*/ -public String getCprovinciadestino(){ - return cprovinciadestino; -} -/**Fija el valor de cprovinciadestino -@param pCprovinciadestino nuevo Valor de cprovinciadestino*/ -public void setCprovinciadestino(String pCprovinciadestino){ - cprovinciadestino=pCprovinciadestino; -} - -/**Obtiene el valor de lugardestino -@return valor de lugardestino*/ -public String getLugardestino(){ - return lugardestino; -} -/**Fija el valor de lugardestino -@param pLugardestino nuevo Valor de lugardestino*/ -public void setLugardestino(String pLugardestino){ - lugardestino=pLugardestino; -} - -/**Obtiene el valor de freal -@return valor de freal*/ -public Timestamp getFreal(){ - return freal; -} -/**Fija el valor de freal -@param pFreal nuevo Valor de freal*/ -public void setFreal(Timestamp pFreal){ - freal=pFreal; -} - -/**Obtiene el valor de multa -@return valor de multa*/ -public BigDecimal getMulta(){ - return multa; -} -/**Fija el valor de multa -@param pMulta nuevo Valor de multa*/ -public void setMulta(BigDecimal pMulta){ - multa=pMulta; -} - - -/**Obtiene el valor de cpaisorigen -@return valor de cpaisorigen*/ -public String getCpaisorigen(){ - return cpaisorigen; -} -/**Fija el valor de cpaisorigen -@param pCpaisorigen nuevo Valor de cpaisorigen*/ -public void setCpaisorigen(String pCpaisorigen){ - cpaisorigen=pCpaisorigen; -} - -/**Obtiene el valor de cprovinciaorigen -@return valor de cprovinciaorigen*/ -public String getCprovinciaorigen(){ - return cprovinciaorigen; -} -/**Fija el valor de cprovinciaorigen -@param pCprovinciaorigen nuevo Valor de cprovinciaorigen*/ -public void setCprovinciaorigen(String pCprovinciaorigen){ - cprovinciaorigen=pCprovinciaorigen; -} - -/**Obtiene el valor de estadocodigo -@return valor de estadocodigo*/ -public String getEstadocodigo(){ - return estadocodigo; -} -/**Fija el valor de estadocodigo -@param pEstadocodigo nuevo Valor de estadocodigo*/ -public void setEstadocodigo(String pEstadocodigo){ - estadocodigo=pEstadocodigo; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -/**Obtiene el valor de ccantonorigen -@return valor de ccantonorigen*/ -public String getCcantonorigen(){ - return ccantonorigen; -} -/**Fija el valor de ccantonorigen -@param pCcantonorigen nuevo Valor de ccantonorigen*/ -public void setCcantonorigen(String pCcantonorigen){ - ccantonorigen=pCcantonorigen; -} - -/**Obtiene el valor de ccantondestino -@return valor de ccantondestino*/ -public String getCcantondestino(){ - return ccantondestino; -} -/**Fija el valor de ccantondestino -@param pCcantondestino nuevo Valor de ccantondestino*/ -public void setCcantondestino(String pCcantondestino){ - ccantondestino=pCcantondestino; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de fregistro -@return valor de fregistro*/ -public Date getFregistro(){ - return fregistro; -} -/**Fija el valor de fregistro -@param pFregistro nuevo Valor de fregistro*/ -public void setFregistro(Date pFregistro){ - fregistro=pFregistro; -} - -/**Obtiene el valor de numerosolicitud -@return valor de numerosolicitud*/ -public String getNumerosolicitud(){ - return numerosolicitud; -} -/**Fija el valor de numerosolicitud -@param pNumerosolicitud nuevo Valor de numerosolicitud*/ -public void setNumerosolicitud(String pNumerosolicitud){ - numerosolicitud=pNumerosolicitud; -} - -/**Obtiene el valor de cpaisdestino -@return valor de cpaisdestino*/ -public String getCpaisdestino(){ - return cpaisdestino; -} -/**Fija el valor de cpaisdestino -@param pCpaisdestino nuevo Valor de cpaisdestino*/ -public void setCpaisdestino(String pCpaisdestino){ - cpaisdestino=pCpaisdestino; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de ccentrocontrol -@return valor de ccentrocontrol*/ -public String getCcentrocontrol(){ - return ccentrocontrol; -} -/**Fija el valor de ccentrocontrol -@param pCcentrocontrol nuevo Valor de ccentrocontrol*/ -public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; -} - -/**Obtiene el valor de origenadquisicioncodigo -@return valor de origenadquisicioncodigo*/ -public String getOrigenadquisicioncodigo(){ - return origenadquisicioncodigo; -} -/**Fija el valor de origenadquisicioncodigo -@param pOrigenadquisicioncodigo nuevo Valor de origenadquisicioncodigo*/ -public void setOrigenadquisicioncodigo(String pOrigenadquisicioncodigo){ - origenadquisicioncodigo=pOrigenadquisicioncodigo; -} - -/**Obtiene el valor de fverificarequisitos -@return valor de fverificarequisitos*/ -public Date getFverificarequisitos(){ - return fverificarequisitos; -} -/**Fija el valor de fverificarequisitos -@param pFverificarequisitos nuevo Valor de fverificarequisitos*/ -public void setFverificarequisitos(Date pFverificarequisitos){ - fverificarequisitos=pFverificarequisitos; -} - -/**Obtiene el valor de numerocustodios -@return valor de numerocustodios*/ -public Integer getNumerocustodios(){ - return numerocustodios; -} -/**Fija el valor de numerocustodios -@param pNumerocustodios nuevo Valor de numerocustodios*/ -public void setNumerocustodios(Integer pNumerocustodios){ - numerocustodios=pNumerocustodios; -} - -public String getInicioFlujo() { - return inicioFlujo; -} -public void setInicioFlujo(String inicioFlujo) { - this.inicioFlujo = inicioFlujo; -} -public String getAucp() { - return aucp; -} -public void setAucp(String aucp) { - this.aucp = aucp; -} - -/**Obtiene el valor de xpathacta -@return valor de xpathacta*/ -public String getXpathacta(){ - return xpathacta; -} -/**Fija el valor de xpathacta -@param xpathacta nuevo Valor de xpathacta*/ -public void setXpathacta(String xpathacta){ - this.xpathacta=xpathacta; -} -/**Obtiene el valor de tipodocumento origen -@return valor de tipodocumento*/ -public String getTipodocumentoorigen() { - return tipodocumentoorigen; -} -/**Fija el valor de tipodocumento origen -@param pTipodocumento nuevo Valor de tipodocumento*/ -public void setTipodocumentoorigen(String pTipodocumentoorigen) { - this.tipodocumentoorigen = pTipodocumentoorigen; -} -/**Obtiene el valor de numerodocumento origen -@return valor de numerodocumento*/ -public String getNumerodocumentoorigen() { - return numerodocumentoorigen; -} -/**Fija el valor de numerodocumento origen -@param pNumerodocumento nuevo Valor de numerodocumento*/ -public void setNumerodocumentoorigen(String pNumerodocumentoorigen) { - this.numerodocumentoorigen = pNumerodocumentoorigen; -} -/**Obtiene el valor de nombrerazonsocial origen -@return valor de nombrerazonsocial*/ -public String getNombrerazonsocialorigen() { - return nombrerazonsocialorigen; -} -/**Fija el valor de nombrerazonsocial origen -@param pNombrerazonsocial nuevo Valor de nombrerazonsocial*/ -public void setNombrerazonsocialorigen(String pNombrerazonsocialorigen) { - this.nombrerazonsocialorigen = pNombrerazonsocialorigen; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitud))return false; - TarmSolicitud that = (TarmSolicitud) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitud -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitud -*/ -public Object createInstance(){ - TarmSolicitud instance=new TarmSolicitud(); - return instance; -} -/**Clona la entidad TarmSolicitud -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitud p=(TarmSolicitud)this.clone(); - return p; -} - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursal.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursal.java.svn-base deleted file mode 100644 index 19086b4..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursal.java.svn-base +++ /dev/null @@ -1,163 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDAGENCIASUCURSAL*/ -@Entity(name="TarmSolicitudAgenciaSucursal") -@Table(name="TARMSOLICITUDAGENCIASUCURSAL") -public class TarmSolicitudAgenciaSucursal extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudAgenciaSucursal -*/ -@EmbeddedId -private TarmSolicitudAgenciaSucursalKey pk; -@Column(name="ESTADO", nullable=true) - -/** -* Estado de la agencia en el proceso de la solicitud -*/ -private String estado; - -@Column(name="ESTADOCODIGO", nullable=true) - -/** -* Codigo de tabla de catalogo -*/ -private String estadocodigo; - -/**Contructor por defecto*/ -public TarmSolicitudAgenciaSucursal(){ -} -/**Contructor de TarmSolicitudAgenciaSucursal -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudAgenciaSucursal(TarmSolicitudAgenciaSucursalKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudAgenciaSucursal -*/ -public static TarmSolicitudAgenciaSucursal find(EntityManager pEntityManager,TarmSolicitudAgenciaSucursalKey pKey) throws Exception{ - TarmSolicitudAgenciaSucursal obj = pEntityManager.find(TarmSolicitudAgenciaSucursal.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudAgenciaSucursal -@return El objeto que referencia a la Clave primaria de TarmSolicitudAgenciaSucursal -*/ -public TarmSolicitudAgenciaSucursalKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudAgenciaSucursal -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudAgenciaSucursal -*/ -public void setPk(TarmSolicitudAgenciaSucursalKey pPk){ - pk=pPk; -} -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de estadocodigo -@return valor de estadocodigo*/ -public String getEstadocodigo(){ - return estadocodigo; -} -/**Fija el valor de estadocodigo -@param pEstadocodigo nuevo Valor de estadocodigo*/ -public void setEstadocodigo(String pEstadocodigo){ - estadocodigo=pEstadocodigo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudAgenciaSucursal))return false; - TarmSolicitudAgenciaSucursal that = (TarmSolicitudAgenciaSucursal) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudAgenciaSucursal -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudAgenciaSucursal -*/ -public Object createInstance(){ - TarmSolicitudAgenciaSucursal instance=new TarmSolicitudAgenciaSucursal(); - instance.setPk(new TarmSolicitudAgenciaSucursalKey()); - return instance; -} -/**Clona la entidad TarmSolicitudAgenciaSucursal -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudAgenciaSucursal p=(TarmSolicitudAgenciaSucursal)this.clone(); - p.setPk((TarmSolicitudAgenciaSucursalKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursalKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursalKey.java.svn-base deleted file mode 100644 index 5517f85..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudAgenciaSucursalKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDAGENCIASUCURSAL*/ -@Embeddable -public class TarmSolicitudAgenciaSucursalKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CAGENCIA", nullable=false,updatable=false) - -/** -* null -*/ -private Long cagencia; - -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -/**Contructor por defecto*/ -public TarmSolicitudAgenciaSucursalKey(){} -/**Contructor de TarmSolicitudAgenciaSucursalKey -@param pCagencia null -@param pCsolicitud Codigo de solicitud de controld e armas -*/ -public TarmSolicitudAgenciaSucursalKey(Long pCagencia,String pCsolicitud){ - cagencia=pCagencia; - csolicitud=pCsolicitud; -} -/**Obtiene el valor de cagencia -@return valor de cagencia*/ -public Long getCagencia(){ - return cagencia; -} -/**Fija el valor de cagencia -@param pCagencia nuevo Valor de cagencia*/ -public void setCagencia(Long pCagencia){ - cagencia=pCagencia; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Implementacion de la comparacion de TarmSolicitudAgenciaSucursalKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudAgenciaSucursalKey))return false; - TarmSolicitudAgenciaSucursalKey that = (TarmSolicitudAgenciaSucursalKey) o; - if (this.getCagencia() == null || that.getCagencia() == null){ - return false; - } - if (! this.getCagencia().equals(that.getCagencia())){ - return false; - } - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudAgenciaSucursalKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCagencia() == null ? 0 : this.getCagencia().hashCode()); - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmas.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmas.java.svn-base deleted file mode 100644 index 80d5451..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmas.java.svn-base +++ /dev/null @@ -1,186 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDARMAS*/ -@Entity(name="TarmSolicitudArmas") -@Table(name="TARMSOLICITUDARMAS") -public class TarmSolicitudArmas extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudArmas -*/ -@EmbeddedId -private TarmSolicitudArmasKey pk; -@Column(name="ENTREGADA", nullable=true) - -/** -* null -*/ -private String entregada; - -@Column(name="APROBADA", nullable=true) - -/** -* null -*/ -private String aprobada; - -@Column(name="PORDEVOLUCION", nullable=true) - -/** -* null -*/ -private String pordevolucion; - - -/**Contructor por defecto*/ -public TarmSolicitudArmas(){ -} -/**Contructor de TarmSolicitudArmas -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudArmas(TarmSolicitudArmasKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudArmas -*/ -public static TarmSolicitudArmas find(EntityManager pEntityManager,TarmSolicitudArmasKey pKey) throws Exception{ - TarmSolicitudArmas obj = pEntityManager.find(TarmSolicitudArmas.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudArmas -@return El objeto que referencia a la Clave primaria de TarmSolicitudArmas -*/ -public TarmSolicitudArmasKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudArmas -*/ -public void setPk(TarmSolicitudArmasKey pPk){ - pk=pPk; -} -/**Obtiene el valor de entregada -@return valor de entregada*/ -public String getEntregada(){ - return entregada; -} -/**Fija el valor de entregada -@param pEntregada nuevo Valor de entregada*/ -public void setEntregada(String pEntregada){ - entregada=pEntregada; -} - -/**Obtiene el valor de aprobada -@return valor de aprobada*/ -public String getAprobada(){ - return aprobada; -} -/**Fija el valor de aprobada -@param pAprobada nuevo Valor de aprobada*/ -public void setAprobada(String pAprobada){ - aprobada=pAprobada; -} - -/**Obtiene el valor de pordevolucion -@return valor de aprobada*/ -public String getPordevolucion() { - return pordevolucion; -} -/**Fija el valor de pordevlucion -@param pAprobada nuevo Valor de aprobada*/ -public void setPordevolucion(String pordevolucion) { - this.pordevolucion = pordevolucion; -} - - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudArmas))return false; - TarmSolicitudArmas that = (TarmSolicitudArmas) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudArmas -*/ -public Object createInstance(){ - TarmSolicitudArmas instance=new TarmSolicitudArmas(); - instance.setPk(new TarmSolicitudArmasKey()); - return instance; -} -/**Clona la entidad TarmSolicitudArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudArmas p=(TarmSolicitudArmas)this.clone(); - p.setPk((TarmSolicitudArmasKey)this.pk.cloneMe()); - return p; -} - - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmasKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmasKey.java.svn-base deleted file mode 100644 index 4d029ea..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudArmasKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDARMAS*/ -@Embeddable -public class TarmSolicitudArmasKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="CARMA", nullable=false,updatable=false) - -/** -* null -*/ -private String carma; - -/**Contructor por defecto*/ -public TarmSolicitudArmasKey(){} -/**Contructor de TarmSolicitudArmasKey -@param pCsolicitud Codigo de solicitud de controld e armas -@param pPersoncode Codigo de persona -@param pCarma null -*/ -public TarmSolicitudArmasKey(String pCsolicitud,Integer pPersoncode,String pCarma){ - csolicitud=pCsolicitud; - personcode=pPersoncode; - carma=pCarma; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Implementacion de la comparacion de TarmSolicitudArmasKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudArmasKey))return false; - TarmSolicitudArmasKey that = (TarmSolicitudArmasKey) o; - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getCarma() == null || that.getCarma() == null){ - return false; - } - if (! this.getCarma().equals(that.getCarma())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudArmasKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getCarma() == null ? 0 : this.getCarma().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumento.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumento.java.svn-base deleted file mode 100644 index d895d6a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumento.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDDOCUMENTO*/ -@Entity(name="TarmSolicitudDocumento") -@Table(name="TARMSOLICITUDDOCUMENTO") -public class TarmSolicitudDocumento extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudDocumento -*/ -@EmbeddedId -private TarmSolicitudDocumentoKey pk; -@Column(name="CHKIMPRESION", nullable=true) - -/** -* null -*/ -private String chkimpresion; - -@Column(name="CHKCERTIFICADO", nullable=true) - -/** -* null -*/ -private String chkcertificado; - -@Column(name="VERIFICADO", nullable=true) - -/** -* null -*/ -private String verificado; - -/**Contructor por defecto*/ -public TarmSolicitudDocumento(){ -} -/**Contructor de TarmSolicitudDocumento -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudDocumento(TarmSolicitudDocumentoKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudDocumento -*/ -public static TarmSolicitudDocumento find(EntityManager pEntityManager,TarmSolicitudDocumentoKey pKey) throws Exception{ - TarmSolicitudDocumento obj = pEntityManager.find(TarmSolicitudDocumento.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudDocumento -@return El objeto que referencia a la Clave primaria de TarmSolicitudDocumento -*/ -public TarmSolicitudDocumentoKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudDocumento -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudDocumento -*/ -public void setPk(TarmSolicitudDocumentoKey pPk){ - pk=pPk; -} -/**Obtiene el valor de chkimpresion -@return valor de chkimpresion*/ -public String getChkimpresion(){ - return chkimpresion; -} -/**Fija el valor de chkimpresion -@param pChkimpresion nuevo Valor de chkimpresion*/ -public void setChkimpresion(String pChkimpresion){ - chkimpresion=pChkimpresion; -} - -/**Obtiene el valor de chkcertificado -@return valor de chkcertificado*/ -public String getChkcertificado(){ - return chkcertificado; -} -/**Fija el valor de chkcertificado -@param pChkcertificado nuevo Valor de chkcertificado*/ -public void setChkcertificado(String pChkcertificado){ - chkcertificado=pChkcertificado; -} - -/**Obtiene el valor de verificado -@return valor de verificado*/ -public String getVerificado(){ - return verificado; -} -/**Fija el valor de verificado -@param pVerificado nuevo Valor de verificado*/ -public void setVerificado(String pVerificado){ - verificado=pVerificado; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudDocumento))return false; - TarmSolicitudDocumento that = (TarmSolicitudDocumento) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudDocumento -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudDocumento -*/ -public Object createInstance(){ - TarmSolicitudDocumento instance=new TarmSolicitudDocumento(); - instance.setPk(new TarmSolicitudDocumentoKey()); - return instance; -} -/**Clona la entidad TarmSolicitudDocumento -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudDocumento p=(TarmSolicitudDocumento)this.clone(); - p.setPk((TarmSolicitudDocumentoKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumentoKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumentoKey.java.svn-base deleted file mode 100644 index c21bbe0..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudDocumentoKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDDOCUMENTO*/ -@Embeddable -public class TarmSolicitudDocumentoKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CDOCUMENTO", nullable=false,updatable=false) - -/** -* Codigo secuencial del documento habilitante -*/ -private Long cdocumento; - -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud -*/ -private String csolicitud; - -/**Contructor por defecto*/ -public TarmSolicitudDocumentoKey(){} -/**Contructor de TarmSolicitudDocumentoKey -@param pCdocumento Codigo secuencial del documento habilitante -@param pCsolicitud Codigo de solicitud -*/ -public TarmSolicitudDocumentoKey(Long pCdocumento,String pCsolicitud){ - cdocumento=pCdocumento; - csolicitud=pCsolicitud; -} -/**Obtiene el valor de cdocumento -@return valor de cdocumento*/ -public Long getCdocumento(){ - return cdocumento; -} -/**Fija el valor de cdocumento -@param pCdocumento nuevo Valor de cdocumento*/ -public void setCdocumento(Long pCdocumento){ - cdocumento=pCdocumento; -} - -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Implementacion de la comparacion de TarmSolicitudDocumentoKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudDocumentoKey))return false; - TarmSolicitudDocumentoKey that = (TarmSolicitudDocumentoKey) o; - if (this.getCdocumento() == null || that.getCdocumento() == null){ - return false; - } - if (! this.getCdocumento().equals(that.getCdocumento())){ - return false; - } - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudDocumentoKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCdocumento() == null ? 0 : this.getCdocumento().hashCode()); - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardias.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardias.java.svn-base deleted file mode 100644 index 1503915..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardias.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDGUARDIAS*/ -@Entity(name="TarmSolicitudGuardias") -@Table(name="TARMSOLICITUDGUARDIAS") -public class TarmSolicitudGuardias extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudGuardias -*/ -@EmbeddedId -private TarmSolicitudGuardiasKey pk; -/**Contructor por defecto*/ -public TarmSolicitudGuardias(){ -} -/**Contructor de TarmSolicitudGuardias -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudGuardias(TarmSolicitudGuardiasKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudGuardias -*/ -public static TarmSolicitudGuardias find(EntityManager pEntityManager,TarmSolicitudGuardiasKey pKey) throws Exception{ - TarmSolicitudGuardias obj = pEntityManager.find(TarmSolicitudGuardias.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudGuardias -@return El objeto que referencia a la Clave primaria de TarmSolicitudGuardias -*/ -public TarmSolicitudGuardiasKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudGuardias -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudGuardias -*/ -public void setPk(TarmSolicitudGuardiasKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudGuardias))return false; - TarmSolicitudGuardias that = (TarmSolicitudGuardias) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudGuardias -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudGuardias -*/ -public Object createInstance(){ - TarmSolicitudGuardias instance=new TarmSolicitudGuardias(); - instance.setPk(new TarmSolicitudGuardiasKey()); - return instance; -} -/**Clona la entidad TarmSolicitudGuardias -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudGuardias p=(TarmSolicitudGuardias)this.clone(); - p.setPk((TarmSolicitudGuardiasKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardiasKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardiasKey.java.svn-base deleted file mode 100644 index d8b3b5a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudGuardiasKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDGUARDIAS*/ -@Embeddable -public class TarmSolicitudGuardiasKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="CEMPRESA", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer cempresa; - -@Column(name="CGUARDIA", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer cguardia; - -/**Contructor por defecto*/ -public TarmSolicitudGuardiasKey(){} -/**Contructor de TarmSolicitudGuardiasKey -@param pCsolicitud Codigo de solicitud de controld e armas -@param pCempresa Codigo de persona -@param pCguardia Codigo de persona -*/ -public TarmSolicitudGuardiasKey(String pCsolicitud,Integer pCempresa,Integer pCguardia){ - csolicitud=pCsolicitud; - cempresa=pCempresa; - cguardia=pCguardia; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de cempresa -@return valor de cempresa*/ -public Integer getCempresa(){ - return cempresa; -} -/**Fija el valor de cempresa -@param pCempresa nuevo Valor de cempresa*/ -public void setCempresa(Integer pCempresa){ - cempresa=pCempresa; -} - -/**Obtiene el valor de cguardia -@return valor de cguardia*/ -public Integer getCguardia(){ - return cguardia; -} -/**Fija el valor de cguardia -@param pCguardia nuevo Valor de cguardia*/ -public void setCguardia(Integer pCguardia){ - cguardia=pCguardia; -} - -/**Implementacion de la comparacion de TarmSolicitudGuardiasKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudGuardiasKey))return false; - TarmSolicitudGuardiasKey that = (TarmSolicitudGuardiasKey) o; - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - if (this.getCempresa() == null || that.getCempresa() == null){ - return false; - } - if (! this.getCempresa().equals(that.getCempresa())){ - return false; - } - if (this.getCguardia() == null || that.getCguardia() == null){ - return false; - } - if (! this.getCguardia().equals(that.getCguardia())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudGuardiasKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - result = result * 37 + (this.getCempresa() == null ? 0 : this.getCempresa().hashCode()); - result = result * 37 + (this.getCguardia() == null ? 0 : this.getCguardia().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitos.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitos.java.svn-base deleted file mode 100644 index 5a96d0a..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitos.java.svn-base +++ /dev/null @@ -1,181 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDREQUISITOS*/ -@Entity(name="TarmSolicitudRequisitos") -@Table(name="TARMSOLICITUDREQUISITOS") -public class TarmSolicitudRequisitos extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudRequisitos -*/ -@EmbeddedId -private TarmSolicitudRequisitosKey pk; -@Column(name="CARGADO", nullable=true) - -/** -* null -*/ -private String cargado; - -@Column(name="XPATHREQUISITO", nullable=true) - -/** -* null -*/ -private String xpathrequisito; - -@Column(name="ESTADOVALIDACION", nullable=true) - -/** -* null -*/ -private String estadovalidacion; - -/**Contructor por defecto*/ -public TarmSolicitudRequisitos(){ -} -/**Contructor de TarmSolicitudRequisitos -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudRequisitos(TarmSolicitudRequisitosKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudRequisitos -*/ -public static TarmSolicitudRequisitos find(EntityManager pEntityManager,TarmSolicitudRequisitosKey pKey) throws Exception{ - TarmSolicitudRequisitos obj = pEntityManager.find(TarmSolicitudRequisitos.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudRequisitos -@return El objeto que referencia a la Clave primaria de TarmSolicitudRequisitos -*/ -public TarmSolicitudRequisitosKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudRequisitos -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudRequisitos -*/ -public void setPk(TarmSolicitudRequisitosKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cargado -@return valor de cargado*/ -public String getCargado(){ - return cargado; -} -/**Fija el valor de cargado -@param pCargado nuevo Valor de cargado*/ -public void setCargado(String pCargado){ - cargado=pCargado; -} - -/**Obtiene el valor de xpathrequisito -@return valor de xpathrequisito*/ -public String getXpathrequisito(){ - return xpathrequisito; -} -/**Fija el valor de xpathrequisito -@param pXpathrequisito nuevo Valor de xpathrequisito*/ -public void setXpathrequisito(String pXpathrequisito){ - xpathrequisito=pXpathrequisito; -} - -/**Obtiene el valor de estadovalidacion -@return valor de estadovalidacion*/ -public String getEstadovalidacion(){ - return estadovalidacion; -} -/**Fija el valor de estadovalidacion -@param pEstadovalidacion nuevo Valor de estadovalidacion*/ -public void setEstadovalidacion(String pEstadovalidacion){ - estadovalidacion=pEstadovalidacion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudRequisitos))return false; - TarmSolicitudRequisitos that = (TarmSolicitudRequisitos) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudRequisitos -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudRequisitos -*/ -public Object createInstance(){ - TarmSolicitudRequisitos instance=new TarmSolicitudRequisitos(); - instance.setPk(new TarmSolicitudRequisitosKey()); - return instance; -} -/**Clona la entidad TarmSolicitudRequisitos -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudRequisitos p=(TarmSolicitudRequisitos)this.clone(); - p.setPk((TarmSolicitudRequisitosKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitosKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitosKey.java.svn-base deleted file mode 100644 index f4de8d7..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudRequisitosKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDREQUISITOS*/ -@Embeddable -public class TarmSolicitudRequisitosKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="CREQUISITO", nullable=false,updatable=false) - -/** -* Codigo de requisito -*/ -private String crequisito; - -@Column(name="CTRAMITE", nullable=false,updatable=false) - -/** -* null -*/ -private Long ctramite; - -/**Contructor por defecto*/ -public TarmSolicitudRequisitosKey(){} -/**Contructor de TarmSolicitudRequisitosKey -@param pCsolicitud Codigo de solicitud de controld e armas -@param pCrequisito Codigo de requisito -@param pCtramite null -*/ -public TarmSolicitudRequisitosKey(String pCsolicitud,String pCrequisito,Long pCtramite){ - csolicitud=pCsolicitud; - crequisito=pCrequisito; - ctramite=pCtramite; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de crequisito -@return valor de crequisito*/ -public String getCrequisito(){ - return crequisito; -} -/**Fija el valor de crequisito -@param pCrequisito nuevo Valor de crequisito*/ -public void setCrequisito(String pCrequisito){ - crequisito=pCrequisito; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Implementacion de la comparacion de TarmSolicitudRequisitosKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudRequisitosKey))return false; - TarmSolicitudRequisitosKey that = (TarmSolicitudRequisitosKey) o; - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - if (this.getCrequisito() == null || that.getCrequisito() == null){ - return false; - } - if (! this.getCrequisito().equals(that.getCrequisito())){ - return false; - } - if (this.getCtramite() == null || that.getCtramite() == null){ - return false; - } - if (! this.getCtramite().equals(that.getCtramite())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudRequisitosKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - result = result * 37 + (this.getCrequisito() == null ? 0 : this.getCrequisito().hashCode()); - result = result * 37 + (this.getCtramite() == null ? 0 : this.getCtramite().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramite.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramite.java.svn-base deleted file mode 100644 index c8bb823..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramite.java.svn-base +++ /dev/null @@ -1,518 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMSOLICITUDTRAMITE*/ -@Entity(name="TarmSolicitudTramite") -@Table(name="TARMSOLICITUDTRAMITE") -public class TarmSolicitudTramite extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmSolicitudTramite -*/ -@EmbeddedId -private TarmSolicitudTramiteKey pk; -@Column(name="NUMEROTRAMITE", nullable=true) - -/** -* null -*/ -private String numerotramite; - -@Column(name="VALOR", nullable=true) - -/** -* null -*/ -private BigDecimal valor; - -@Column(name="CANTIDAD", nullable=true) - -/** -* null -*/ -private Integer cantidad; - -@Column(name="NUMEROCOMPROBANTE", nullable=true) - -/** -* null -*/ -private String numerocomprobante; - -@Column(name="XPATHCOMPROBANTE", nullable=true) - -/** -* null -*/ -private String xpathcomprobante; - -@Column(name="XPATHRESOLUCION", nullable=true) - -/** -* null -*/ -private String xpathresolucion; - - -@Column(name="VALORVERIFICACION", nullable=true) - -/** -* null -*/ -private BigDecimal valorverificacion; - -@Column(name="FENTREGAARMAS", nullable=true) - -/** -* null -*/ -private Date fentregaarmas; - -@Column(name="VALORAPAGAR", nullable=true) - -/** -* null -*/ -private BigDecimal valorapagar; - -@Column(name="ESTADOTRAMITE", nullable=true) - -/** -* null -*/ -private String estadotramite; - -@Column(name="ESTADOTRAMITECODIGO", nullable=true) - -/** -* null -*/ -private String estadotramitecodigo; - -@Column(name="FECHACOMPROBANTE", nullable=true) - -/** -* null -*/ -private Date fechacomprobante; - -@Column(name="OBSERVACIONDEPOSITO", nullable=true) - -/** -* null -*/ -private String observaciondeposito; - -@Column(name="VALORVERIFICADO", nullable=true) - -/** -* null -*/ -private BigDecimal valorverificado; - - -@Column(name="OBSERVACIONNOVEDAD", nullable=true) - -/** -* null -*/ -private String observacionnovedad; - -@Column(name="VALORTRAMITEARMAS", nullable=true) - -/** -* Es el valor del tramite en caso de ser de tipo costo total o el valor del arma por el numero de armas en caso de ser de tipo costo parcial -*/ -private BigDecimal valortramitearmas; - -@Column(name="VALORMULTA", nullable=true) - -/** -* Es el valor de las multas no canceladas previas, que seran cobradas en este tramite -*/ -private BigDecimal valormulta; - -@Column(name="VALORCUSTODIOS", nullable=true) - -/** -* Es el valor del numero de custodios por el costo de cada custodio en ese tramite -*/ -private BigDecimal valorcustodios; - -@Column(name="INICIOFLUJO", nullable=true) -/** -* null -*/ -private String inicioFlujo; - -@Column(name="INCASHREPORT", nullable=true) -/** -* null -*/ -private String incashreport; - -@Column(name="XPATHCOMPROBANTEORIGINAL", nullable=true) - -/** -* null -*/ -private String xpathcomprobanteorignal; - -@Column(name="OBSERVACION", nullable=true) - -/** -* null -*/ -private String observacion; - -@Column(name="USUARIOCAMBIO", nullable=true) - -/** -* null -*/ -private String usuariocambio; - -/**Contructor por defecto*/ -public TarmSolicitudTramite(){ -} -/**Contructor de TarmSolicitudTramite -@param pPk Clave Primaria del entity -*/ -public TarmSolicitudTramite(TarmSolicitudTramiteKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmSolicitudTramite -*/ -public static TarmSolicitudTramite find(EntityManager pEntityManager,TarmSolicitudTramiteKey pKey) throws Exception{ - TarmSolicitudTramite obj = pEntityManager.find(TarmSolicitudTramite.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmSolicitudTramite -@return El objeto que referencia a la Clave primaria de TarmSolicitudTramite -*/ -public TarmSolicitudTramiteKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmSolicitudTramite -@param pPk El objeto que referencia a la nueva Clave primaria de TarmSolicitudTramite -*/ -public void setPk(TarmSolicitudTramiteKey pPk){ - pk=pPk; -} -/**Obtiene el valor de numerotramite -@return valor de numerotramite*/ -public String getNumerotramite(){ - return numerotramite; -} -/**Fija el valor de numerotramite -@param pNumerotramite nuevo Valor de numerotramite*/ -public void setNumerotramite(String pNumerotramite){ - numerotramite=pNumerotramite; -} - -/**Obtiene el valor de valor -@return valor de valor*/ -public BigDecimal getValor(){ - return valor; -} -/**Fija el valor de valor -@param pValor nuevo Valor de valor*/ -public void setValor(BigDecimal pValor){ - valor=pValor; -} - -/**Obtiene el valor de cantidad -@return valor de cantidad*/ -public Integer getCantidad(){ - return cantidad; -} -/**Fija el valor de cantidad -@param pCantidad nuevo Valor de cantidad*/ -public void setCantidad(Integer pCantidad){ - cantidad=pCantidad; -} - -/**Obtiene el valor de numerocomprobante -@return valor de numerocomprobante*/ -public String getNumerocomprobante(){ - return numerocomprobante; -} -/**Fija el valor de numerocomprobante -@param pNumerocomprobante nuevo Valor de numerocomprobante*/ -public void setNumerocomprobante(String pNumerocomprobante){ - numerocomprobante=pNumerocomprobante; -} - -/**Obtiene el valor de xpathcomprobante -@return valor de xpathcomprobante*/ -public String getXpathcomprobante(){ - return xpathcomprobante; -} -/**Fija el valor de xpathcomprobante -@param pXpathcomprobante nuevo Valor de xpathcomprobante*/ -public void setXpathcomprobante(String pXpathcomprobante){ - xpathcomprobante=pXpathcomprobante; -} - -/**Obtiene el valor de valorverificacion -@return valor de valorverificacion*/ -public BigDecimal getValorverificacion(){ - return valorverificacion; -} -/**Fija el valor de valorverificacion -@param pValorverificacion nuevo Valor de valorverificacion*/ -public void setValorverificacion(BigDecimal pValorverificacion){ - valorverificacion=pValorverificacion; -} - -/**Obtiene el valor de fentregaarmas -@return valor de fentregaarmas*/ -public Date getFentregaarmas(){ - return fentregaarmas; -} -/**Fija el valor de fentregaarmas -@param pFentregaarmas nuevo Valor de fentregaarmas*/ -public void setFentregaarmas(Date pFentregaarmas){ - fentregaarmas=pFentregaarmas; -} - -/**Obtiene el valor de valorapagar -@return valor de valorapagar*/ -public BigDecimal getValorapagar(){ - return valorapagar; -} -/**Fija el valor de valorapagar -@param pValorapagar nuevo Valor de valorapagar*/ -public void setValorapagar(BigDecimal pValorapagar){ - valorapagar=pValorapagar; -} - -/**Obtiene el valor de estadotramite -@return valor de estadotramite*/ -public String getEstadotramite(){ - return estadotramite; -} -/**Fija el valor de estadotramite -@param pEstadotramite nuevo Valor de estadotramite*/ -public void setEstadotramite(String pEstadotramite){ - estadotramite=pEstadotramite; -} - -/**Obtiene el valor de estadotramitecodigo -@return valor de estadotramitecodigo*/ -public String getEstadotramitecodigo(){ - return estadotramitecodigo; -} -/**Fija el valor de estadotramitecodigo -@param pEstadotramitecodigo nuevo Valor de estadotramitecodigo*/ -public void setEstadotramitecodigo(String pEstadotramitecodigo){ - estadotramitecodigo=pEstadotramitecodigo; -} - -/**Obtiene el valor de fechacomprobante -@return valor de fechacomprobante*/ -public Date getFechacomprobante(){ - return fechacomprobante; -} -/**Fija el valor de fechacomprobante -@param pFechacomprobante nuevo Valor de fechacomprobante*/ -public void setFechacomprobante(Date pFechacomprobante){ - fechacomprobante=pFechacomprobante; -} - -/**Obtiene el valor de observacion al verificar deposito -@return valor de observaciondeposito*/ -public String getObservaciondeposito(){ - return observaciondeposito; -} -/**Fija el valor de observacion al verificar deposito -@param pObservaciondeposito nuevo Valor de observaciondeposito*/ -public void setObservaciondeposito(String pObservaciondeposito){ - observaciondeposito=pObservaciondeposito; -} - -/**Obtiene el valor de valorverificado -@return valor de valorverificado*/ -public BigDecimal getValorverificado(){ - return valorverificado; -} -/**Fija el valor de valorverificado -@param pValorverificado nuevo Valor de valorverificado*/ -public void setValorverificado(BigDecimal pValorverificado){ - valorverificado=pValorverificado; -} - -/**Obtiene el valor de observacionnovedad -@return valor de observacionnovedad*/ -public String getObservacionnovedad() { - return observacionnovedad; -} -/**Fija el valor de observacionnovedad -@param pValorverificado nuevo Valor de observacionnovedad*/ -public void setObservacionnovedad(String observacionnovedad) { - this.observacionnovedad = observacionnovedad; -} - - -/**Obtiene el valor de valortramitearmas -@return valor de valortramitearmas*/ -public BigDecimal getValortramitearmas(){ - return valortramitearmas; -} -/**Fija el valor de valortramitearmas -@param pValortramitearmas nuevo Valor de valortramitearmas*/ -public void setValortramitearmas(BigDecimal pValortramitearmas){ - valortramitearmas=pValortramitearmas; -} -/**Obtiene el valor de valorcustodios -@return valor de valorcustodios*/ -public BigDecimal getValorcustodios(){ - return valorcustodios; -} -/**Fija el valor de valorcustodios -@param pValorcustodios nuevo Valor de valorcustodios*/ -public void setValorcustodios(BigDecimal pValorcustodios){ - valorcustodios=pValorcustodios; -} - -/**Obtiene el valor de valormulta -@return valor de valormulta*/ -public BigDecimal getValormulta(){ - return valormulta; -} -/**Fija el valor de valormulta -@param pValormulta nuevo Valor de valormulta*/ -public void setValormulta(BigDecimal pValormulta){ - valormulta=pValormulta; -} - - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmSolicitudTramite))return false; - TarmSolicitudTramite that = (TarmSolicitudTramite) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmSolicitudTramite -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmSolicitudTramite -*/ -public Object createInstance(){ - TarmSolicitudTramite instance=new TarmSolicitudTramite(); - instance.setPk(new TarmSolicitudTramiteKey()); - return instance; -} -/**Clona la entidad TarmSolicitudTramite -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmSolicitudTramite p=(TarmSolicitudTramite)this.clone(); - p.setPk((TarmSolicitudTramiteKey)this.pk.cloneMe()); - return p; -} -public String getInicioFlujo() { - return inicioFlujo; -} -public void setInicioFlujo(String inicioFlujo) { - this.inicioFlujo = inicioFlujo; -} -public String getIncashreport() { - return incashreport; -} -public void setIncashreport(String incashreport) { - this.incashreport = incashreport; -} -public String getXpathresolucion() { - return xpathresolucion; -} -public void setXpathresolucion(String xpathresolucion) { - this.xpathresolucion = xpathresolucion; -} -public String getXpathcomprobanteorignal() { - return xpathcomprobanteorignal; -} -public void setXpathcomprobanteorignal(String xpathcomprobanteorignal) { - this.xpathcomprobanteorignal = xpathcomprobanteorignal; -} -public String getObservacion() { - return observacion; -} -public void setObservacion(String observacion) { - this.observacion = observacion; -} -public String getUsuariocambio() { - return usuariocambio; -} -public void setUsuariocambio(String usuariocambio) { - this.usuariocambio = usuariocambio; -} - - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramiteKey.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramiteKey.java.svn-base deleted file mode 100644 index 2cfe6cb..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmSolicitudTramiteKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TARMSOLICITUDTRAMITE*/ -@Embeddable -public class TarmSolicitudTramiteKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CSOLICITUD", nullable=false,updatable=false) - -/** -* Codigo de solicitud de controld e armas -*/ -private String csolicitud; - -@Column(name="CTRAMITE", nullable=false,updatable=false) - -/** -* null -*/ -private Long ctramite; - -/**Contructor por defecto*/ -public TarmSolicitudTramiteKey(){} -/**Contructor de TarmSolicitudTramiteKey -@param pCsolicitud Codigo de solicitud de controld e armas -@param pCtramite null -*/ -public TarmSolicitudTramiteKey(String pCsolicitud,Long pCtramite){ - csolicitud=pCsolicitud; - ctramite=pCtramite; -} -/**Obtiene el valor de csolicitud -@return valor de csolicitud*/ -public String getCsolicitud(){ - return csolicitud; -} -/**Fija el valor de csolicitud -@param pCsolicitud nuevo Valor de csolicitud*/ -public void setCsolicitud(String pCsolicitud){ - csolicitud=pCsolicitud; -} - -/**Obtiene el valor de ctramite -@return valor de ctramite*/ -public Long getCtramite(){ - return ctramite; -} -/**Fija el valor de ctramite -@param pCtramite nuevo Valor de ctramite*/ -public void setCtramite(Long pCtramite){ - ctramite=pCtramite; -} - -/**Implementacion de la comparacion de TarmSolicitudTramiteKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TarmSolicitudTramiteKey))return false; - TarmSolicitudTramiteKey that = (TarmSolicitudTramiteKey) o; - if (this.getCsolicitud() == null || that.getCsolicitud() == null){ - return false; - } - if (! this.getCsolicitud().equals(that.getCsolicitud())){ - return false; - } - if (this.getCtramite() == null || that.getCtramite() == null){ - return false; - } - if (! this.getCtramite().equals(that.getCtramite())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TarmSolicitudTramiteKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCsolicitud() == null ? 0 : this.getCsolicitud().hashCode()); - result = result * 37 + (this.getCtramite() == null ? 0 : this.getCtramite().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTerminos.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTerminos.java.svn-base deleted file mode 100644 index 856d0c6..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTerminos.java.svn-base +++ /dev/null @@ -1,189 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTERMINOS*/ -@Entity(name="TarmTerminos") -@Table(name="TARMTERMINOS") -public class TarmTerminos extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmArmas -*/ -@Id -@Column(name="CTERMINOS" ,nullable=false, updatable=false) -private String pk; - -@Column(name="ACEPTA", nullable=true) - -/** -* null -*/ -private String acepta; - - -@Column(name="IDENTIFICACION", nullable=true) - -/** -* null -*/ -private String identificacion; - -@Column(name="DOCUMENTO", nullable=true) - -/** -* Partida arancelaria -*/ -private String documnto; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -*/ -private Date fecharegistro; - -/**Contructor por defecto*/ -public TarmTerminos(){ -} -/**Contructor de TarmArmas -@param pPk Clave Primaria del entity -*/ -public TarmTerminos(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmArmas -*/ -public static TarmTerminos find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTerminos obj = pEntityManager.find(TarmTerminos.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmArmas -@return El objeto que referencia a la Clave primaria de TarmArmas -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmArmas -@param pPk El objeto que referencia a la nueva Clave primaria de TarmArmas -*/ -public void setPk(String pPk){ - pk=pPk; -} - - - -public int getHashValue() { - return hashValue; -} -public void setHashValue(int hashValue) { - this.hashValue = hashValue; -} -public String getAcepta() { - return acepta; -} -public void setAcepta(String acepta) { - this.acepta = acepta; -} - -public String getIdentificacion() { - return identificacion; -} -public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; -} -public String getDocumnto() { - return documnto; -} -public void setDocumnto(String documnto) { - this.documnto = documnto; -} -public Date getFecharegistro() { - return fecharegistro; -} -public void setFecharegistro(Date fecharegistro) { - this.fecharegistro = fecharegistro; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTerminos))return false; - TarmTerminos that = (TarmTerminos) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmArmas -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmArmas -*/ -public Object createInstance(){ - TarmTerminos instance=new TarmTerminos(); - return instance; -} -/**Clona la entidad TarmArmas -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTerminos p=(TarmTerminos)this.clone(); - return p; -} - - -} diff --git a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTransaccionArmaBodega.java.svn-base b/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTransaccionArmaBodega.java.svn-base deleted file mode 100644 index 7ebda1e..0000000 --- a/base/persistence/parmas/src/main/java/com/fp/persistence/parmas/soli/.svn/text-base/TarmTransaccionArmaBodega.java.svn-base +++ /dev/null @@ -1,260 +0,0 @@ -package com.fp.persistence.parmas.soli; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TARMTRANSACCIONARMABODEGA*/ -@Entity(name="TarmTransaccionArmaBodega") -@Table(name="TARMTRANSACCIONARMABODEGA") -public class TarmTransaccionArmaBodega extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable, Log { -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TarmTransaccionArmaBodega -*/ -@Id -@Column(name="CTRANARMBODEGA" ,nullable=false, updatable=false) -/*@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CTRANARMBODEGA"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id")*/ -private Long pk; -@Column(name="FECHA", nullable=true) - -/** -* fecha de registro -*/ -private Timestamp fecha; - -@Column(name="CDECOMISOARMATRANSACCION", nullable=true) - -/** -* codigo de la tabla tarmdecomisoarmatransaccion, se genera el codigo de envio y recepcion -*/ -private Long cdecomisoarmatransaccion; - -@Column(name="CARMA", nullable=true) - -/** -* codigo del arma -*/ -private String carma; - -@Column(name="OPERACION", nullable=true) - -/** -* Codigo de catalogo 01Recepcion, 02 Envio -*/ -private String operacion; - -@Column(name="OPERACIONCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de operaciones -*/ -private String operacioncode; - -@Column(name="CCENTROCONTROLORIGEN", nullable=true) - -/** -* Codigo de centro de control de armas, bodega de origen -*/ -private String ccentrocontrolorigen; - -@Column(name="CCENTROCONTROLDESTINO", nullable=true) - -/** -* Codigo de centro de control de armas, bodega destino -*/ -private String ccentrocontroldestino; - -/**Contructor por defecto*/ -public TarmTransaccionArmaBodega(){ -} -/**Contructor de TarmTransaccionArmaBodega -@param pPk Clave Primaria del entity -*/ -public TarmTransaccionArmaBodega(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TarmTransaccionArmaBodega -*/ -public static TarmTransaccionArmaBodega find(EntityManager pEntityManager,Object pKey) throws Exception{ - TarmTransaccionArmaBodega obj = pEntityManager.find(TarmTransaccionArmaBodega.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TarmTransaccionArmaBodega -@return El objeto que referencia a la Clave primaria de TarmTransaccionArmaBodega -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TarmTransaccionArmaBodega -@param pPk El objeto que referencia a la nueva Clave primaria de TarmTransaccionArmaBodega -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Timestamp getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Timestamp pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de cdecomisoarmatransaccion -@return valor de cdecomisoarmatransaccion*/ -public Long getCdecomisoarmatransaccion(){ - return cdecomisoarmatransaccion; -} -/**Fija el valor de cdecomisoarmatransaccion -@param pCdecomisoarmatransaccion nuevo Valor de cdecomisoarmatransaccion*/ -public void setCdecomisoarmatransaccion(Long pCdecomisoarmatransaccion){ - cdecomisoarmatransaccion=pCdecomisoarmatransaccion; -} - -/**Obtiene el valor de carma -@return valor de carma*/ -public String getCarma(){ - return carma; -} -/**Fija el valor de carma -@param pCarma nuevo Valor de carma*/ -public void setCarma(String pCarma){ - carma=pCarma; -} - -/**Obtiene el valor de operacion -@return valor de operacion*/ -public String getOperacion(){ - return operacion; -} -/**Fija el valor de operacion -@param pOperacion nuevo Valor de operacion*/ -public void setOperacion(String pOperacion){ - operacion=pOperacion; -} - -/**Obtiene el valor de operacioncode -@return valor de operacioncode*/ -public String getOperacioncode(){ - return operacioncode; -} -/**Fija el valor de operacioncode -@param pOperacioncode nuevo Valor de operacioncode*/ -public void setOperacioncode(String pOperacioncode){ - operacioncode=pOperacioncode; -} - -/**Obtiene el valor de ccentrocontrolorigen -@return valor de ccentrocontrolorigen*/ -public String getCcentrocontrolorigen(){ - return ccentrocontrolorigen; -} -/**Fija el valor de ccentrocontrolorigen -@param pCcentrocontrolorigen nuevo Valor de ccentrocontrolorigen*/ -public void setCcentrocontrolorigen(String pCcentrocontrolorigen){ - ccentrocontrolorigen=pCcentrocontrolorigen; -} - -/**Obtiene el valor de ccentrocontroldestino -@return valor de ccentrocontroldestino*/ -public String getCcentrocontroldestino(){ - return ccentrocontroldestino; -} -/**Fija el valor de ccentrocontroldestino -@param pCcentrocontroldestino nuevo Valor de ccentrocontroldestino*/ -public void setCcentrocontroldestino(String pCcentrocontroldestino){ - ccentrocontroldestino=pCcentrocontroldestino; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TarmTransaccionArmaBodega))return false; - TarmTransaccionArmaBodega that = (TarmTransaccionArmaBodega) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TarmTransaccionArmaBodega -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TarmTransaccionArmaBodega -*/ -public Object createInstance(){ - TarmTransaccionArmaBodega instance=new TarmTransaccionArmaBodega(); - return instance; -} -/**Clona la entidad TarmTransaccionArmaBodega -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TarmTransaccionArmaBodega p=(TarmTransaccionArmaBodega)this.clone(); - return p; -} -} diff --git a/base/persistence/parmas/src/main/java/ec/.svn/entries b/base/persistence/parmas/src/main/java/ec/.svn/entries deleted file mode 100644 index 35b6026..0000000 --- a/base/persistence/parmas/src/main/java/ec/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -gob -dir - -gov -dir - diff --git a/base/persistence/parmas/src/main/java/ec/gob/.svn/entries b/base/persistence/parmas/src/main/java/ec/gob/.svn/entries deleted file mode 100644 index 1acd286..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gob -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -registrocivil -dir - diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/.svn/entries b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/.svn/entries deleted file mode 100644 index 7a8e860..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gob/registrocivil -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -consultacedula -dir - diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/entries b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/entries deleted file mode 100644 index 32c933d..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -package-info.java -file - - - - -2022-07-28T03:40:27.425737Z -5950548b67d242747301d9f5e1548432 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -146 - -BusquedaPorCedulaResponse.java -file - - - - -2022-07-28T03:40:27.425737Z -f441944505bd8ce09c647948eb25ba0d -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1567 - -BusquedaPorCedula.java -file - - - - -2022-07-28T03:40:27.425737Z -5dda0fa8cf870ce94db3af68f17329ac -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2897 - -Cedula.java -file - - - - -2022-07-28T03:40:27.426737Z -162c7e687adf50d40d6fc78b1c6bdc7e -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -15823 - -WsUpResponse.java -file - - - - -2022-07-28T03:40:27.426737Z -3ca25d83de6576fdfd639562ede01ad6 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1515 - -ObjectFactory.java -file - - - - -2022-07-28T03:40:27.426737Z -4094941de3897b32aabeb04dd4cfd6a6 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4234 - -WsUp.java -file - - - - -2022-07-28T03:40:27.427737Z -5ca83a7e2173a9d02946ed7d04c5a491 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -742 - diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedula.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedula.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedula.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedulaResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedulaResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/BusquedaPorCedulaResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/Cedula.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/Cedula.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/Cedula.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/ObjectFactory.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/ObjectFactory.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUp.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUp.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUp.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUpResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUpResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/WsUpResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/package-info.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/package-info.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/prop-base/package-info.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedula.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedula.java.svn-base deleted file mode 100644 index da0d887..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedula.java.svn-base +++ /dev/null @@ -1,118 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para BusquedaPorCedula complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="BusquedaPorCedula">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="Cedula" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Usuario" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Contrasenia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "BusquedaPorCedula", propOrder = { - "cedula", - "usuario", - "contrasenia" -}) -public class BusquedaPorCedula { - - @XmlElement(name = "Cedula") - protected String cedula; - @XmlElement(name = "Usuario") - protected String usuario; - @XmlElement(name = "Contrasenia") - protected String contrasenia; - - /** - * Obtiene el valor de la propiedad cedula. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCedula() { - return cedula; - } - - /** - * Define el valor de la propiedad cedula. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCedula(String value) { - this.cedula = value; - } - - /** - * Obtiene el valor de la propiedad usuario. - * - * @return - * possible object is - * {@link String } - * - */ - public String getUsuario() { - return usuario; - } - - /** - * Define el valor de la propiedad usuario. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setUsuario(String value) { - this.usuario = value; - } - - /** - * Obtiene el valor de la propiedad contrasenia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getContrasenia() { - return contrasenia; - } - - /** - * Define el valor de la propiedad contrasenia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setContrasenia(String value) { - this.contrasenia = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedulaResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedulaResponse.java.svn-base deleted file mode 100644 index 4b09b59..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/BusquedaPorCedulaResponse.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para BusquedaPorCedulaResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="BusquedaPorCedulaResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://www.registrocivil.gob.ec/ConsultaCedula}cedula" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "BusquedaPorCedulaResponse", propOrder = { - "_return" -}) -public class BusquedaPorCedulaResponse { - - @XmlElement(name = "return") - protected Cedula _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link Cedula } - * - */ - public Cedula getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link Cedula } - * - */ - public void setReturn(Cedula value) { - this._return = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/Cedula.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/Cedula.java.svn-base deleted file mode 100644 index d1bc37d..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/Cedula.java.svn-base +++ /dev/null @@ -1,622 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para cedula complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="cedula">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="CalleDomicilio" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Cedula" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="CodigoError" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="CondicionCedulado" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Conyuge" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Domicilio" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Error" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="EstadoCivil" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="FechaCedulacion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="FechaNacimiento" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="FirmaElectronica" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Genero" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="IndividualDactilar" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Instruccion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="LugarNacimiento" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Nacionalidad" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="NombreMadre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="NombrePadre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Nombre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="NumeroDomicilio" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="Profesion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "cedula", propOrder = { - "calleDomicilio", - "cedula", - "codigoError", - "condicionCedulado", - "conyuge", - "domicilio", - "error", - "estadoCivil", - "fechaCedulacion", - "fechaNacimiento", - "firmaElectronica", - "genero", - "individualDactilar", - "instruccion", - "lugarNacimiento", - "nacionalidad", - "nombreMadre", - "nombrePadre", - "nombre", - "numeroDomicilio", - "profesion" -}) -public class Cedula { - - @XmlElement(name = "CalleDomicilio") - protected String calleDomicilio; - @XmlElement(name = "Cedula") - protected String cedula; - @XmlElement(name = "CodigoError") - protected String codigoError; - @XmlElement(name = "CondicionCedulado") - protected String condicionCedulado; - @XmlElement(name = "Conyuge") - protected String conyuge; - @XmlElement(name = "Domicilio") - protected String domicilio; - @XmlElement(name = "Error") - protected String error; - @XmlElement(name = "EstadoCivil") - protected String estadoCivil; - @XmlElement(name = "FechaCedulacion") - protected String fechaCedulacion; - @XmlElement(name = "FechaNacimiento") - protected String fechaNacimiento; - @XmlElement(name = "FirmaElectronica") - protected String firmaElectronica; - @XmlElement(name = "Genero") - protected String genero; - @XmlElement(name = "IndividualDactilar") - protected String individualDactilar; - @XmlElement(name = "Instruccion") - protected String instruccion; - @XmlElement(name = "LugarNacimiento") - protected String lugarNacimiento; - @XmlElement(name = "Nacionalidad") - protected String nacionalidad; - @XmlElement(name = "NombreMadre") - protected String nombreMadre; - @XmlElement(name = "NombrePadre") - protected String nombrePadre; - @XmlElement(name = "Nombre") - protected String nombre; - @XmlElement(name = "NumeroDomicilio") - protected String numeroDomicilio; - @XmlElement(name = "Profesion") - protected String profesion; - - /** - * Obtiene el valor de la propiedad calleDomicilio. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCalleDomicilio() { - return calleDomicilio; - } - - /** - * Define el valor de la propiedad calleDomicilio. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCalleDomicilio(String value) { - this.calleDomicilio = value; - } - - /** - * Obtiene el valor de la propiedad cedula. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCedula() { - return cedula; - } - - /** - * Define el valor de la propiedad cedula. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCedula(String value) { - this.cedula = value; - } - - /** - * Obtiene el valor de la propiedad codigoError. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodigoError() { - return codigoError; - } - - /** - * Define el valor de la propiedad codigoError. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodigoError(String value) { - this.codigoError = value; - } - - /** - * Obtiene el valor de la propiedad condicionCedulado. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCondicionCedulado() { - return condicionCedulado; - } - - /** - * Define el valor de la propiedad condicionCedulado. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCondicionCedulado(String value) { - this.condicionCedulado = value; - } - - /** - * Obtiene el valor de la propiedad conyuge. - * - * @return - * possible object is - * {@link String } - * - */ - public String getConyuge() { - return conyuge; - } - - /** - * Define el valor de la propiedad conyuge. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setConyuge(String value) { - this.conyuge = value; - } - - /** - * Obtiene el valor de la propiedad domicilio. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDomicilio() { - return domicilio; - } - - /** - * Define el valor de la propiedad domicilio. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDomicilio(String value) { - this.domicilio = value; - } - - /** - * Obtiene el valor de la propiedad error. - * - * @return - * possible object is - * {@link String } - * - */ - public String getError() { - return error; - } - - /** - * Define el valor de la propiedad error. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setError(String value) { - this.error = value; - } - - /** - * Obtiene el valor de la propiedad estadoCivil. - * - * @return - * possible object is - * {@link String } - * - */ - public String getEstadoCivil() { - return estadoCivil; - } - - /** - * Define el valor de la propiedad estadoCivil. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setEstadoCivil(String value) { - this.estadoCivil = value; - } - - /** - * Obtiene el valor de la propiedad fechaCedulacion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaCedulacion() { - return fechaCedulacion; - } - - /** - * Define el valor de la propiedad fechaCedulacion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaCedulacion(String value) { - this.fechaCedulacion = value; - } - - /** - * Obtiene el valor de la propiedad fechaNacimiento. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaNacimiento() { - return fechaNacimiento; - } - - /** - * Define el valor de la propiedad fechaNacimiento. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaNacimiento(String value) { - this.fechaNacimiento = value; - } - - /** - * Obtiene el valor de la propiedad firmaElectronica. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFirmaElectronica() { - return firmaElectronica; - } - - /** - * Define el valor de la propiedad firmaElectronica. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFirmaElectronica(String value) { - this.firmaElectronica = value; - } - - /** - * Obtiene el valor de la propiedad genero. - * - * @return - * possible object is - * {@link String } - * - */ - public String getGenero() { - return genero; - } - - /** - * Define el valor de la propiedad genero. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setGenero(String value) { - this.genero = value; - } - - /** - * Obtiene el valor de la propiedad individualDactilar. - * - * @return - * possible object is - * {@link String } - * - */ - public String getIndividualDactilar() { - return individualDactilar; - } - - /** - * Define el valor de la propiedad individualDactilar. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setIndividualDactilar(String individualDactilar) { - this.individualDactilar = individualDactilar; - } - - /** - * Obtiene el valor de la propiedad instruccion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getInstruccion() { - return instruccion; - } - - /** - * Define el valor de la propiedad instruccion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setInstruccion(String value) { - this.instruccion = value; - } - - /** - * Obtiene el valor de la propiedad lugarNacimiento. - * - * @return - * possible object is - * {@link String } - * - */ - public String getLugarNacimiento() { - return lugarNacimiento; - } - - /** - * Define el valor de la propiedad lugarNacimiento. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setLugarNacimiento(String value) { - this.lugarNacimiento = value; - } - - /** - * Obtiene el valor de la propiedad nacionalidad. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNacionalidad() { - return nacionalidad; - } - - /** - * Define el valor de la propiedad nacionalidad. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNacionalidad(String value) { - this.nacionalidad = value; - } - - /** - * Obtiene el valor de la propiedad nombreMadre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombreMadre() { - return nombreMadre; - } - - /** - * Define el valor de la propiedad nombreMadre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombreMadre(String value) { - this.nombreMadre = value; - } - - /** - * Obtiene el valor de la propiedad nombrePadre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombrePadre() { - return nombrePadre; - } - - /** - * Define el valor de la propiedad nombrePadre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombrePadre(String value) { - this.nombrePadre = value; - } - - /** - * Obtiene el valor de la propiedad nombre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombre() { - return nombre; - } - - /** - * Define el valor de la propiedad nombre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombre(String value) { - this.nombre = value; - } - - /** - * Obtiene el valor de la propiedad numeroDomicilio. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroDomicilio() { - return numeroDomicilio; - } - - /** - * Define el valor de la propiedad numeroDomicilio. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroDomicilio(String value) { - this.numeroDomicilio = value; - } - - /** - * Obtiene el valor de la propiedad profesion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getProfesion() { - return profesion; - } - - /** - * Define el valor de la propiedad profesion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setProfesion(String value) { - this.profesion = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/ObjectFactory.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/ObjectFactory.java.svn-base deleted file mode 100644 index abf82d2..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,115 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.annotation.XmlElementDecl; -import javax.xml.bind.annotation.XmlRegistry; -import javax.xml.namespace.QName; - - -/** - * This object contains factory methods for each - * Java content interface and Java element interface - * generated in the ec.gob.registrocivil.consultacedula package. - *

      An ObjectFactory allows you to programatically - * construct new instances of the Java representation - * for XML content. The Java representation of XML - * content can consist of schema derived interfaces - * and classes representing the binding of schema - * type definitions, element declarations and model - * groups. Factory methods for each of these are - * provided in this class. - * - */ -@XmlRegistry -public class ObjectFactory { - - private final static QName _BusquedaPorCedula_QNAME = new QName("http://www.registrocivil.gob.ec/ConsultaCedula", "BusquedaPorCedula"); - private final static QName _WsUpResponse_QNAME = new QName("http://www.registrocivil.gob.ec/ConsultaCedula", "WsUpResponse"); - private final static QName _BusquedaPorCedulaResponse_QNAME = new QName("http://www.registrocivil.gob.ec/ConsultaCedula", "BusquedaPorCedulaResponse"); - private final static QName _WsUp_QNAME = new QName("http://www.registrocivil.gob.ec/ConsultaCedula", "WsUp"); - - /** - * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: ec.gob.registrocivil.consultacedula - * - */ - public ObjectFactory() { - } - - /** - * Create an instance of {@link BusquedaPorCedula } - * - */ - public BusquedaPorCedula createBusquedaPorCedula() { - return new BusquedaPorCedula(); - } - - /** - * Create an instance of {@link WsUp } - * - */ - public WsUp createWsUp() { - return new WsUp(); - } - - /** - * Create an instance of {@link BusquedaPorCedulaResponse } - * - */ - public BusquedaPorCedulaResponse createBusquedaPorCedulaResponse() { - return new BusquedaPorCedulaResponse(); - } - - /** - * Create an instance of {@link WsUpResponse } - * - */ - public WsUpResponse createWsUpResponse() { - return new WsUpResponse(); - } - - /** - * Create an instance of {@link Cedula } - * - */ - public Cedula createCedula() { - return new Cedula(); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link BusquedaPorCedula }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://www.registrocivil.gob.ec/ConsultaCedula", name = "BusquedaPorCedula") - public JAXBElement createBusquedaPorCedula(BusquedaPorCedula value) { - return new JAXBElement(_BusquedaPorCedula_QNAME, BusquedaPorCedula.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link WsUpResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://www.registrocivil.gob.ec/ConsultaCedula", name = "WsUpResponse") - public JAXBElement createWsUpResponse(WsUpResponse value) { - return new JAXBElement(_WsUpResponse_QNAME, WsUpResponse.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link BusquedaPorCedulaResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://www.registrocivil.gob.ec/ConsultaCedula", name = "BusquedaPorCedulaResponse") - public JAXBElement createBusquedaPorCedulaResponse(BusquedaPorCedulaResponse value) { - return new JAXBElement(_BusquedaPorCedulaResponse_QNAME, BusquedaPorCedulaResponse.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link WsUp }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://www.registrocivil.gob.ec/ConsultaCedula", name = "WsUp") - public JAXBElement createWsUp(WsUp value) { - return new JAXBElement(_WsUp_QNAME, WsUp.class, null, value); - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUp.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUp.java.svn-base deleted file mode 100644 index f03d290..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUp.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para WsUp complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="WsUp">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "WsUp") -public class WsUp { - - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUpResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUpResponse.java.svn-base deleted file mode 100644 index 44d62fa..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/WsUpResponse.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ - -package ec.gob.registrocivil.consultacedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para WsUpResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="WsUpResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://www.registrocivil.gob.ec/ConsultaCedula}cedula" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "WsUpResponse", propOrder = { - "_return" -}) -public class WsUpResponse { - - @XmlElement(name = "return") - protected Cedula _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link Cedula } - * - */ - public Cedula getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link Cedula } - * - */ - public void setReturn(Cedula value) { - this._return = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/package-info.java.svn-base b/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index e1c1722..0000000 --- a/base/persistence/parmas/src/main/java/ec/gob/registrocivil/consultacedula/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -@javax.xml.bind.annotation.XmlSchema(namespace = "http://www.registrocivil.gob.ec/ConsultaCedula") -package ec.gob.registrocivil.consultacedula; diff --git a/base/persistence/parmas/src/main/java/ec/gov/.svn/entries b/base/persistence/parmas/src/main/java/ec/gov/.svn/entries deleted file mode 100644 index 0201d2f..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gov -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -sri -dir - diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/.svn/entries b/base/persistence/parmas/src/main/java/ec/gov/sri/.svn/entries deleted file mode 100644 index 742c7f4..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gov/sri -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -wsconsultacontribuyente -dir - diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/entries b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/entries deleted file mode 100644 index 85ee03f..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/entries +++ /dev/null @@ -1,674 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente -svn://172.17.26.185/COMACO - - - -2022-04-19T02:46:02.772606Z -4667 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ContribuyenteOnLine.java -file - - - - -2022-07-28T03:40:27.590737Z -f115632345dc8cd0dafb8708e612c47b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -8364 - -ObtenerCompleto.java -file - - - - -2022-07-28T03:40:27.591737Z -57dd3383617c14ae82b9d6d6b1e9a654 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2126 - -UbicacionGeografica.java -file - - - - -2022-07-28T03:40:27.591737Z -fe6f2836eb8ee73bedf60d02199479fd -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -7285 - -ActividadEconomica.java -file - - - - -2022-07-28T03:40:27.592737Z -1693a7bf211371571e22c652173e58c5 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -9528 - -ObtenerSimple.java -file - - - - -2022-07-28T03:40:27.592737Z -3b32998ca92a4be17ceccb2195c03777 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2118 - -ObtenerDatosResponse.java -file - - - - -2022-07-28T03:40:27.592737Z -ca5aa2980a3cb5b5321bc7ef45b3826e -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1619 - -Contador.java -file - - - - -2022-07-28T03:40:27.593738Z -700bb7945266e6c3c373ab906ea3e3ac -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2625 - -AgenteRetencion.java -file - - - - -2022-07-28T03:40:27.593738Z -2bf618ff8cbafa74dd1596faa930fd2d -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1428 - -ListaBlanca.java -file - - - - -2022-07-28T03:40:27.593738Z -aefe8f81d066c327c5fdb8498e1b243b -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1412 - -ObtenerCompletoResponse.java -file - - - - -2022-07-28T03:40:27.594738Z -d6dd69c8eb6f7ce4254a58a2e8e3ed13 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1643 - -EstructuraOrganizacional.java -file - - - - -2022-07-28T03:40:27.594738Z -203fe5a7d1d044c7eeea74a5d4df5861 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4036 - -RepresentanteLegal.java -file - - - - -2022-07-28T03:40:27.595738Z -2f57a0b0afb1533f9217e2600dbcd11f -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2755 - -package-info.java -file - - - - -2022-07-28T03:40:27.595738Z -2fb476d4f82ec86c8fedbfd1b9b33745 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -140 - -TipoContribuyente.java -file - - - - -2022-07-28T03:40:27.595738Z -6b432d305483f28e6a82f97e2dcb8d0f -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -4563 - -ObtenerSimpleResponse.java -file - - - - -2022-07-28T03:40:27.596738Z -9e7f2fc099ed04bb15f834b52f66be0f -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1587 - -ObtenerDatos.java -file - - - - -2022-07-28T03:40:27.596738Z -ea731dd14b51355c4739742c895cdfab -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1443 - -Contribuyente.java -file - - - - -2022-07-28T03:40:27.596738Z -dd8855ccd7e0c83c9b7d943c430d23a4 -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -10867 - -ContribuyenteCompleto.java -file - - - - -2022-07-28T03:40:27.597738Z -6a22d8a9f81f2bed0bd96193213bbe0c -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -16145 - -ObjectFactory.java -file - - - - -2022-07-28T03:40:27.597738Z -e92bf722dfa873263f73a867b8314e0e -2022-04-19T02:46:02.772606Z -4667 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -7859 - diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ActividadEconomica.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ActividadEconomica.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ActividadEconomica.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/AgenteRetencion.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/AgenteRetencion.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/AgenteRetencion.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contador.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contador.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contador.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contribuyente.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contribuyente.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/Contribuyente.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteCompleto.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteCompleto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteCompleto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteOnLine.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteOnLine.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ContribuyenteOnLine.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/EstructuraOrganizacional.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/EstructuraOrganizacional.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/EstructuraOrganizacional.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ListaBlanca.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ListaBlanca.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ListaBlanca.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObjectFactory.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObjectFactory.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompleto.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompleto.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompleto.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompletoResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompletoResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerCompletoResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatos.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatos.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatos.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatosResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatosResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerDatosResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimple.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimple.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimple.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimpleResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimpleResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/ObtenerSimpleResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/RepresentanteLegal.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/RepresentanteLegal.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/RepresentanteLegal.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/TipoContribuyente.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/TipoContribuyente.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/TipoContribuyente.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/UbicacionGeografica.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/UbicacionGeografica.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/UbicacionGeografica.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/package-info.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/package-info.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/prop-base/package-info.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ActividadEconomica.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ActividadEconomica.java.svn-base deleted file mode 100644 index f87847e..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ActividadEconomica.java.svn-base +++ /dev/null @@ -1,384 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para actividadEconomica complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="actividadEconomica">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="actividadGeneral" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN1Familia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN2Grupo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN3SubGrupo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN4Clase" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN5SubClase" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codN6Actividad" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n1Familia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n2Grupo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n3SubGrupo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n4Clase" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n5SubClase" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="n6Actividad" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "actividadEconomica", propOrder = { - "actividadGeneral", - "codN1Familia", - "codN2Grupo", - "codN3SubGrupo", - "codN4Clase", - "codN5SubClase", - "codN6Actividad", - "n1Familia", - "n2Grupo", - "n3SubGrupo", - "n4Clase", - "n5SubClase", - "n6Actividad" -}) -public class ActividadEconomica { - - protected String actividadGeneral; - protected String codN1Familia; - protected String codN2Grupo; - protected String codN3SubGrupo; - protected String codN4Clase; - protected String codN5SubClase; - protected String codN6Actividad; - protected String n1Familia; - protected String n2Grupo; - protected String n3SubGrupo; - protected String n4Clase; - protected String n5SubClase; - protected String n6Actividad; - - /** - * Obtiene el valor de la propiedad actividadGeneral. - * - * @return - * possible object is - * {@link String } - * - */ - public String getActividadGeneral() { - return actividadGeneral; - } - - /** - * Define el valor de la propiedad actividadGeneral. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setActividadGeneral(String value) { - this.actividadGeneral = value; - } - - /** - * Obtiene el valor de la propiedad codN1Familia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN1Familia() { - return codN1Familia; - } - - /** - * Define el valor de la propiedad codN1Familia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN1Familia(String value) { - this.codN1Familia = value; - } - - /** - * Obtiene el valor de la propiedad codN2Grupo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN2Grupo() { - return codN2Grupo; - } - - /** - * Define el valor de la propiedad codN2Grupo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN2Grupo(String value) { - this.codN2Grupo = value; - } - - /** - * Obtiene el valor de la propiedad codN3SubGrupo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN3SubGrupo() { - return codN3SubGrupo; - } - - /** - * Define el valor de la propiedad codN3SubGrupo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN3SubGrupo(String value) { - this.codN3SubGrupo = value; - } - - /** - * Obtiene el valor de la propiedad codN4Clase. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN4Clase() { - return codN4Clase; - } - - /** - * Define el valor de la propiedad codN4Clase. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN4Clase(String value) { - this.codN4Clase = value; - } - - /** - * Obtiene el valor de la propiedad codN5SubClase. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN5SubClase() { - return codN5SubClase; - } - - /** - * Define el valor de la propiedad codN5SubClase. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN5SubClase(String value) { - this.codN5SubClase = value; - } - - /** - * Obtiene el valor de la propiedad codN6Actividad. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodN6Actividad() { - return codN6Actividad; - } - - /** - * Define el valor de la propiedad codN6Actividad. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodN6Actividad(String value) { - this.codN6Actividad = value; - } - - /** - * Obtiene el valor de la propiedad n1Familia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN1Familia() { - return n1Familia; - } - - /** - * Define el valor de la propiedad n1Familia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN1Familia(String value) { - this.n1Familia = value; - } - - /** - * Obtiene el valor de la propiedad n2Grupo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN2Grupo() { - return n2Grupo; - } - - /** - * Define el valor de la propiedad n2Grupo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN2Grupo(String value) { - this.n2Grupo = value; - } - - /** - * Obtiene el valor de la propiedad n3SubGrupo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN3SubGrupo() { - return n3SubGrupo; - } - - /** - * Define el valor de la propiedad n3SubGrupo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN3SubGrupo(String value) { - this.n3SubGrupo = value; - } - - /** - * Obtiene el valor de la propiedad n4Clase. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN4Clase() { - return n4Clase; - } - - /** - * Define el valor de la propiedad n4Clase. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN4Clase(String value) { - this.n4Clase = value; - } - - /** - * Obtiene el valor de la propiedad n5SubClase. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN5SubClase() { - return n5SubClase; - } - - /** - * Define el valor de la propiedad n5SubClase. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN5SubClase(String value) { - this.n5SubClase = value; - } - - /** - * Obtiene el valor de la propiedad n6Actividad. - * - * @return - * possible object is - * {@link String } - * - */ - public String getN6Actividad() { - return n6Actividad; - } - - /** - * Define el valor de la propiedad n6Actividad. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setN6Actividad(String value) { - this.n6Actividad = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/AgenteRetencion.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/AgenteRetencion.java.svn-base deleted file mode 100644 index 3ed72ab..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/AgenteRetencion.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para agenteRetencion complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="agenteRetencion">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="nombre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "agenteRetencion", propOrder = { - "nombre" -}) -public class AgenteRetencion { - - protected String nombre; - - /** - * Obtiene el valor de la propiedad nombre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombre() { - return nombre; - } - - /** - * Define el valor de la propiedad nombre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombre(String value) { - this.nombre = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contador.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contador.java.svn-base deleted file mode 100644 index bc117c9..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contador.java.svn-base +++ /dev/null @@ -1,114 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para contador complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="contador">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="cedula" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nombre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="ruc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "contador", propOrder = { - "cedula", - "nombre", - "ruc" -}) -public class Contador { - - protected String cedula; - protected String nombre; - protected String ruc; - - /** - * Obtiene el valor de la propiedad cedula. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCedula() { - return cedula; - } - - /** - * Define el valor de la propiedad cedula. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCedula(String value) { - this.cedula = value; - } - - /** - * Obtiene el valor de la propiedad nombre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombre() { - return nombre; - } - - /** - * Define el valor de la propiedad nombre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombre(String value) { - this.nombre = value; - } - - /** - * Obtiene el valor de la propiedad ruc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getRuc() { - return ruc; - } - - /** - * Define el valor de la propiedad ruc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setRuc(String value) { - this.ruc = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contribuyente.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contribuyente.java.svn-base deleted file mode 100644 index 408b415..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/Contribuyente.java.svn-base +++ /dev/null @@ -1,416 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para contribuyente complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="contribuyente">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="actividadEconomica" type="{http://sri.gov.ec/wsConsultaContribuyente}actividadEconomica" minOccurs="0"/>
      - *         <element name="codClaseContrib" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codEstado" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="desClaseContrib" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="desEstado" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="direccionCorta" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="email" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nombreComercial" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="numeroRuc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="razonSocial" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="telefonoDomicilio" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="telefonoTrabajo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="tipoContribuyente" type="{http://sri.gov.ec/wsConsultaContribuyente}tipoContribuyente" minOccurs="0"/>
      - *         <element name="ubicacionGeografica" type="{http://sri.gov.ec/wsConsultaContribuyente}ubicacionGeografica" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "contribuyente", propOrder = { - "actividadEconomica", - "codClaseContrib", - "codEstado", - "desClaseContrib", - "desEstado", - "direccionCorta", - "email", - "nombreComercial", - "numeroRuc", - "razonSocial", - "telefonoDomicilio", - "telefonoTrabajo", - "tipoContribuyente", - "ubicacionGeografica" -}) -@XmlSeeAlso({ - ContribuyenteOnLine.class, - ContribuyenteCompleto.class -}) -public class Contribuyente { - - protected ActividadEconomica actividadEconomica; - protected String codClaseContrib; - protected String codEstado; - protected String desClaseContrib; - protected String desEstado; - protected String direccionCorta; - protected String email; - protected String nombreComercial; - protected String numeroRuc; - protected String razonSocial; - protected String telefonoDomicilio; - protected String telefonoTrabajo; - protected TipoContribuyente tipoContribuyente; - protected UbicacionGeografica ubicacionGeografica; - - /** - * Obtiene el valor de la propiedad actividadEconomica. - * - * @return - * possible object is - * {@link ActividadEconomica } - * - */ - public ActividadEconomica getActividadEconomica() { - return actividadEconomica; - } - - /** - * Define el valor de la propiedad actividadEconomica. - * - * @param value - * allowed object is - * {@link ActividadEconomica } - * - */ - public void setActividadEconomica(ActividadEconomica value) { - this.actividadEconomica = value; - } - - /** - * Obtiene el valor de la propiedad codClaseContrib. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodClaseContrib() { - return codClaseContrib; - } - - /** - * Define el valor de la propiedad codClaseContrib. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodClaseContrib(String value) { - this.codClaseContrib = value; - } - - /** - * Obtiene el valor de la propiedad codEstado. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodEstado() { - return codEstado; - } - - /** - * Define el valor de la propiedad codEstado. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodEstado(String value) { - this.codEstado = value; - } - - /** - * Obtiene el valor de la propiedad desClaseContrib. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDesClaseContrib() { - return desClaseContrib; - } - - /** - * Define el valor de la propiedad desClaseContrib. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDesClaseContrib(String value) { - this.desClaseContrib = value; - } - - /** - * Obtiene el valor de la propiedad desEstado. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDesEstado() { - return desEstado; - } - - /** - * Define el valor de la propiedad desEstado. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDesEstado(String value) { - this.desEstado = value; - } - - /** - * Obtiene el valor de la propiedad direccionCorta. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDireccionCorta() { - return direccionCorta; - } - - /** - * Define el valor de la propiedad direccionCorta. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDireccionCorta(String value) { - this.direccionCorta = value; - } - - /** - * Obtiene el valor de la propiedad email. - * - * @return - * possible object is - * {@link String } - * - */ - public String getEmail() { - return email; - } - - /** - * Define el valor de la propiedad email. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setEmail(String value) { - this.email = value; - } - - /** - * Obtiene el valor de la propiedad nombreComercial. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombreComercial() { - return nombreComercial; - } - - /** - * Define el valor de la propiedad nombreComercial. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombreComercial(String value) { - this.nombreComercial = value; - } - - /** - * Obtiene el valor de la propiedad numeroRuc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroRuc() { - return numeroRuc; - } - - /** - * Define el valor de la propiedad numeroRuc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroRuc(String value) { - this.numeroRuc = value; - } - - /** - * Obtiene el valor de la propiedad razonSocial. - * - * @return - * possible object is - * {@link String } - * - */ - public String getRazonSocial() { - return razonSocial; - } - - /** - * Define el valor de la propiedad razonSocial. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setRazonSocial(String value) { - this.razonSocial = value; - } - - /** - * Obtiene el valor de la propiedad telefonoDomicilio. - * - * @return - * possible object is - * {@link String } - * - */ - public String getTelefonoDomicilio() { - return telefonoDomicilio; - } - - /** - * Define el valor de la propiedad telefonoDomicilio. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setTelefonoDomicilio(String value) { - this.telefonoDomicilio = value; - } - - /** - * Obtiene el valor de la propiedad telefonoTrabajo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getTelefonoTrabajo() { - return telefonoTrabajo; - } - - /** - * Define el valor de la propiedad telefonoTrabajo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setTelefonoTrabajo(String value) { - this.telefonoTrabajo = value; - } - - /** - * Obtiene el valor de la propiedad tipoContribuyente. - * - * @return - * possible object is - * {@link TipoContribuyente } - * - */ - public TipoContribuyente getTipoContribuyente() { - return tipoContribuyente; - } - - /** - * Define el valor de la propiedad tipoContribuyente. - * - * @param value - * allowed object is - * {@link TipoContribuyente } - * - */ - public void setTipoContribuyente(TipoContribuyente value) { - this.tipoContribuyente = value; - } - - /** - * Obtiene el valor de la propiedad ubicacionGeografica. - * - * @return - * possible object is - * {@link UbicacionGeografica } - * - */ - public UbicacionGeografica getUbicacionGeografica() { - return ubicacionGeografica; - } - - /** - * Define el valor de la propiedad ubicacionGeografica. - * - * @param value - * allowed object is - * {@link UbicacionGeografica } - * - */ - public void setUbicacionGeografica(UbicacionGeografica value) { - this.ubicacionGeografica = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteCompleto.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteCompleto.java.svn-base deleted file mode 100644 index 8514d32..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteCompleto.java.svn-base +++ /dev/null @@ -1,575 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para contribuyenteCompleto complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="contribuyenteCompleto">
      - *   <complexContent>
      - *     <extension base="{http://sri.gov.ec/wsConsultaContribuyente}contribuyente">
      - *       <sequence>
      - *         <element name="agenteRetencion" type="{http://sri.gov.ec/wsConsultaContribuyente}agenteRetencion" minOccurs="0"/>
      - *         <element name="calificacionArtesanal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="contador" type="{http://sri.gov.ec/wsConsultaContribuyente}contador" minOccurs="0"/>
      - *         <element name="direccionLarga" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="estructuraOrganizacional" type="{http://sri.gov.ec/wsConsultaContribuyente}estructuraOrganizacional" minOccurs="0"/>
      - *         <element name="fax" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaAltaParaEspecial" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaCalificacionArtesanal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaCambioObligado" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaInicioActividades" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaNacimiento" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaNotificacionEspeciales" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaUltimaDeclaracion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="listaBlanca" type="{http://sri.gov.ec/wsConsultaContribuyente}listaBlanca" minOccurs="0"/>
      - *         <element name="numeroCalificacionArtesanal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="obligadoContabilidad" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="representanteLegal" type="{http://sri.gov.ec/wsConsultaContribuyente}representanteLegal" minOccurs="0"/>
      - *         <element name="resolucionAltaParaEspecial" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="tipoCalificacionArtesanal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="ultimoPeriodoFiscalCumplido" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </extension>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "contribuyenteCompleto", propOrder = { - "agenteRetencion", - "calificacionArtesanal", - "contador", - "direccionLarga", - "estructuraOrganizacional", - "fax", - "fechaAltaParaEspecial", - "fechaCalificacionArtesanal", - "fechaCambioObligado", - "fechaInicioActividades", - "fechaNacimiento", - "fechaNotificacionEspeciales", - "fechaUltimaDeclaracion", - "listaBlanca", - "numeroCalificacionArtesanal", - "obligadoContabilidad", - "representanteLegal", - "resolucionAltaParaEspecial", - "tipoCalificacionArtesanal", - "ultimoPeriodoFiscalCumplido" -}) -public class ContribuyenteCompleto - extends Contribuyente -{ - - protected AgenteRetencion agenteRetencion; - protected String calificacionArtesanal; - protected Contador contador; - protected String direccionLarga; - protected EstructuraOrganizacional estructuraOrganizacional; - protected String fax; - protected String fechaAltaParaEspecial; - protected String fechaCalificacionArtesanal; - protected String fechaCambioObligado; - protected String fechaInicioActividades; - protected String fechaNacimiento; - protected String fechaNotificacionEspeciales; - protected String fechaUltimaDeclaracion; - protected ListaBlanca listaBlanca; - protected String numeroCalificacionArtesanal; - protected String obligadoContabilidad; - protected RepresentanteLegal representanteLegal; - protected String resolucionAltaParaEspecial; - protected String tipoCalificacionArtesanal; - protected String ultimoPeriodoFiscalCumplido; - - /** - * Obtiene el valor de la propiedad agenteRetencion. - * - * @return - * possible object is - * {@link AgenteRetencion } - * - */ - public AgenteRetencion getAgenteRetencion() { - return agenteRetencion; - } - - /** - * Define el valor de la propiedad agenteRetencion. - * - * @param value - * allowed object is - * {@link AgenteRetencion } - * - */ - public void setAgenteRetencion(AgenteRetencion value) { - this.agenteRetencion = value; - } - - /** - * Obtiene el valor de la propiedad calificacionArtesanal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCalificacionArtesanal() { - return calificacionArtesanal; - } - - /** - * Define el valor de la propiedad calificacionArtesanal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCalificacionArtesanal(String value) { - this.calificacionArtesanal = value; - } - - /** - * Obtiene el valor de la propiedad contador. - * - * @return - * possible object is - * {@link Contador } - * - */ - public Contador getContador() { - return contador; - } - - /** - * Define el valor de la propiedad contador. - * - * @param value - * allowed object is - * {@link Contador } - * - */ - public void setContador(Contador value) { - this.contador = value; - } - - /** - * Obtiene el valor de la propiedad direccionLarga. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDireccionLarga() { - return direccionLarga; - } - - /** - * Define el valor de la propiedad direccionLarga. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDireccionLarga(String value) { - this.direccionLarga = value; - } - - /** - * Obtiene el valor de la propiedad estructuraOrganizacional. - * - * @return - * possible object is - * {@link EstructuraOrganizacional } - * - */ - public EstructuraOrganizacional getEstructuraOrganizacional() { - return estructuraOrganizacional; - } - - /** - * Define el valor de la propiedad estructuraOrganizacional. - * - * @param value - * allowed object is - * {@link EstructuraOrganizacional } - * - */ - public void setEstructuraOrganizacional(EstructuraOrganizacional value) { - this.estructuraOrganizacional = value; - } - - /** - * Obtiene el valor de la propiedad fax. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFax() { - return fax; - } - - /** - * Define el valor de la propiedad fax. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFax(String value) { - this.fax = value; - } - - /** - * Obtiene el valor de la propiedad fechaAltaParaEspecial. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaAltaParaEspecial() { - return fechaAltaParaEspecial; - } - - /** - * Define el valor de la propiedad fechaAltaParaEspecial. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaAltaParaEspecial(String value) { - this.fechaAltaParaEspecial = value; - } - - /** - * Obtiene el valor de la propiedad fechaCalificacionArtesanal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaCalificacionArtesanal() { - return fechaCalificacionArtesanal; - } - - /** - * Define el valor de la propiedad fechaCalificacionArtesanal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaCalificacionArtesanal(String value) { - this.fechaCalificacionArtesanal = value; - } - - /** - * Obtiene el valor de la propiedad fechaCambioObligado. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaCambioObligado() { - return fechaCambioObligado; - } - - /** - * Define el valor de la propiedad fechaCambioObligado. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaCambioObligado(String value) { - this.fechaCambioObligado = value; - } - - /** - * Obtiene el valor de la propiedad fechaInicioActividades. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaInicioActividades() { - return fechaInicioActividades; - } - - /** - * Define el valor de la propiedad fechaInicioActividades. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaInicioActividades(String value) { - this.fechaInicioActividades = value; - } - - /** - * Obtiene el valor de la propiedad fechaNacimiento. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaNacimiento() { - return fechaNacimiento; - } - - /** - * Define el valor de la propiedad fechaNacimiento. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaNacimiento(String value) { - this.fechaNacimiento = value; - } - - /** - * Obtiene el valor de la propiedad fechaNotificacionEspeciales. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaNotificacionEspeciales() { - return fechaNotificacionEspeciales; - } - - /** - * Define el valor de la propiedad fechaNotificacionEspeciales. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaNotificacionEspeciales(String value) { - this.fechaNotificacionEspeciales = value; - } - - /** - * Obtiene el valor de la propiedad fechaUltimaDeclaracion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaUltimaDeclaracion() { - return fechaUltimaDeclaracion; - } - - /** - * Define el valor de la propiedad fechaUltimaDeclaracion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaUltimaDeclaracion(String value) { - this.fechaUltimaDeclaracion = value; - } - - /** - * Obtiene el valor de la propiedad listaBlanca. - * - * @return - * possible object is - * {@link ListaBlanca } - * - */ - public ListaBlanca getListaBlanca() { - return listaBlanca; - } - - /** - * Define el valor de la propiedad listaBlanca. - * - * @param value - * allowed object is - * {@link ListaBlanca } - * - */ - public void setListaBlanca(ListaBlanca value) { - this.listaBlanca = value; - } - - /** - * Obtiene el valor de la propiedad numeroCalificacionArtesanal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroCalificacionArtesanal() { - return numeroCalificacionArtesanal; - } - - /** - * Define el valor de la propiedad numeroCalificacionArtesanal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroCalificacionArtesanal(String value) { - this.numeroCalificacionArtesanal = value; - } - - /** - * Obtiene el valor de la propiedad obligadoContabilidad. - * - * @return - * possible object is - * {@link String } - * - */ - public String getObligadoContabilidad() { - return obligadoContabilidad; - } - - /** - * Define el valor de la propiedad obligadoContabilidad. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setObligadoContabilidad(String value) { - this.obligadoContabilidad = value; - } - - /** - * Obtiene el valor de la propiedad representanteLegal. - * - * @return - * possible object is - * {@link RepresentanteLegal } - * - */ - public RepresentanteLegal getRepresentanteLegal() { - return representanteLegal; - } - - /** - * Define el valor de la propiedad representanteLegal. - * - * @param value - * allowed object is - * {@link RepresentanteLegal } - * - */ - public void setRepresentanteLegal(RepresentanteLegal value) { - this.representanteLegal = value; - } - - /** - * Obtiene el valor de la propiedad resolucionAltaParaEspecial. - * - * @return - * possible object is - * {@link String } - * - */ - public String getResolucionAltaParaEspecial() { - return resolucionAltaParaEspecial; - } - - /** - * Define el valor de la propiedad resolucionAltaParaEspecial. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setResolucionAltaParaEspecial(String value) { - this.resolucionAltaParaEspecial = value; - } - - /** - * Obtiene el valor de la propiedad tipoCalificacionArtesanal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getTipoCalificacionArtesanal() { - return tipoCalificacionArtesanal; - } - - /** - * Define el valor de la propiedad tipoCalificacionArtesanal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setTipoCalificacionArtesanal(String value) { - this.tipoCalificacionArtesanal = value; - } - - /** - * Obtiene el valor de la propiedad ultimoPeriodoFiscalCumplido. - * - * @return - * possible object is - * {@link String } - * - */ - public String getUltimoPeriodoFiscalCumplido() { - return ultimoPeriodoFiscalCumplido; - } - - /** - * Define el valor de la propiedad ultimoPeriodoFiscalCumplido. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setUltimoPeriodoFiscalCumplido(String value) { - this.ultimoPeriodoFiscalCumplido = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteOnLine.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteOnLine.java.svn-base deleted file mode 100644 index e021464..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ContribuyenteOnLine.java.svn-base +++ /dev/null @@ -1,332 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para contribuyenteOnLine complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="contribuyenteOnLine">
      - *   <complexContent>
      - *     <extension base="{http://sri.gov.ec/wsConsultaContribuyente}contribuyente">
      - *       <sequence>
      - *         <element name="actEcoPrin" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="activEstablec" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codActEcoPrin" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="desUbicaGeograf" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="descTipoContri" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fechaIniAct" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="idRepreLegal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nombreRepreLegal" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="telefonos" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="tipoContri" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="ubicaGeograf" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </extension>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "contribuyenteOnLine", propOrder = { - "actEcoPrin", - "activEstablec", - "codActEcoPrin", - "desUbicaGeograf", - "descTipoContri", - "fechaIniAct", - "idRepreLegal", - "nombreRepreLegal", - "telefonos", - "tipoContri", - "ubicaGeograf" -}) -public class ContribuyenteOnLine - extends Contribuyente -{ - - protected String actEcoPrin; - protected String activEstablec; - protected String codActEcoPrin; - protected String desUbicaGeograf; - protected String descTipoContri; - protected String fechaIniAct; - protected String idRepreLegal; - protected String nombreRepreLegal; - protected String telefonos; - protected String tipoContri; - protected String ubicaGeograf; - - /** - * Obtiene el valor de la propiedad actEcoPrin. - * - * @return - * possible object is - * {@link String } - * - */ - public String getActEcoPrin() { - return actEcoPrin; - } - - /** - * Define el valor de la propiedad actEcoPrin. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setActEcoPrin(String value) { - this.actEcoPrin = value; - } - - /** - * Obtiene el valor de la propiedad activEstablec. - * - * @return - * possible object is - * {@link String } - * - */ - public String getActivEstablec() { - return activEstablec; - } - - /** - * Define el valor de la propiedad activEstablec. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setActivEstablec(String value) { - this.activEstablec = value; - } - - /** - * Obtiene el valor de la propiedad codActEcoPrin. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodActEcoPrin() { - return codActEcoPrin; - } - - /** - * Define el valor de la propiedad codActEcoPrin. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodActEcoPrin(String value) { - this.codActEcoPrin = value; - } - - /** - * Obtiene el valor de la propiedad desUbicaGeograf. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDesUbicaGeograf() { - return desUbicaGeograf; - } - - /** - * Define el valor de la propiedad desUbicaGeograf. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDesUbicaGeograf(String value) { - this.desUbicaGeograf = value; - } - - /** - * Obtiene el valor de la propiedad descTipoContri. - * - * @return - * possible object is - * {@link String } - * - */ - public String getDescTipoContri() { - return descTipoContri; - } - - /** - * Define el valor de la propiedad descTipoContri. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setDescTipoContri(String value) { - this.descTipoContri = value; - } - - /** - * Obtiene el valor de la propiedad fechaIniAct. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFechaIniAct() { - return fechaIniAct; - } - - /** - * Define el valor de la propiedad fechaIniAct. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFechaIniAct(String value) { - this.fechaIniAct = value; - } - - /** - * Obtiene el valor de la propiedad idRepreLegal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getIdRepreLegal() { - return idRepreLegal; - } - - /** - * Define el valor de la propiedad idRepreLegal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setIdRepreLegal(String value) { - this.idRepreLegal = value; - } - - /** - * Obtiene el valor de la propiedad nombreRepreLegal. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombreRepreLegal() { - return nombreRepreLegal; - } - - /** - * Define el valor de la propiedad nombreRepreLegal. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombreRepreLegal(String value) { - this.nombreRepreLegal = value; - } - - /** - * Obtiene el valor de la propiedad telefonos. - * - * @return - * possible object is - * {@link String } - * - */ - public String getTelefonos() { - return telefonos; - } - - /** - * Define el valor de la propiedad telefonos. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setTelefonos(String value) { - this.telefonos = value; - } - - /** - * Obtiene el valor de la propiedad tipoContri. - * - * @return - * possible object is - * {@link String } - * - */ - public String getTipoContri() { - return tipoContri; - } - - /** - * Define el valor de la propiedad tipoContri. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setTipoContri(String value) { - this.tipoContri = value; - } - - /** - * Obtiene el valor de la propiedad ubicaGeograf. - * - * @return - * possible object is - * {@link String } - * - */ - public String getUbicaGeograf() { - return ubicaGeograf; - } - - /** - * Define el valor de la propiedad ubicaGeograf. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setUbicaGeograf(String value) { - this.ubicaGeograf = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/EstructuraOrganizacional.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/EstructuraOrganizacional.java.svn-base deleted file mode 100644 index 3d1af43..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/EstructuraOrganizacional.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para estructuraOrganizacional complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="estructuraOrganizacional">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="codigoProvincia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codigoRegional" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="id" type="{http://www.w3.org/2001/XMLSchema}long"/>
      - *         <element name="nombreProvincia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nombreRegional" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "estructuraOrganizacional", propOrder = { - "codigoProvincia", - "codigoRegional", - "id", - "nombreProvincia", - "nombreRegional" -}) -public class EstructuraOrganizacional { - - protected String codigoProvincia; - protected String codigoRegional; - protected long id; - protected String nombreProvincia; - protected String nombreRegional; - - /** - * Obtiene el valor de la propiedad codigoProvincia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodigoProvincia() { - return codigoProvincia; - } - - /** - * Define el valor de la propiedad codigoProvincia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodigoProvincia(String value) { - this.codigoProvincia = value; - } - - /** - * Obtiene el valor de la propiedad codigoRegional. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodigoRegional() { - return codigoRegional; - } - - /** - * Define el valor de la propiedad codigoRegional. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodigoRegional(String value) { - this.codigoRegional = value; - } - - /** - * Obtiene el valor de la propiedad id. - * - */ - public long getId() { - return id; - } - - /** - * Define el valor de la propiedad id. - * - */ - public void setId(long value) { - this.id = value; - } - - /** - * Obtiene el valor de la propiedad nombreProvincia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombreProvincia() { - return nombreProvincia; - } - - /** - * Define el valor de la propiedad nombreProvincia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombreProvincia(String value) { - this.nombreProvincia = value; - } - - /** - * Obtiene el valor de la propiedad nombreRegional. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombreRegional() { - return nombreRegional; - } - - /** - * Define el valor de la propiedad nombreRegional. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombreRegional(String value) { - this.nombreRegional = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ListaBlanca.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ListaBlanca.java.svn-base deleted file mode 100644 index e64a7e7..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ListaBlanca.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para listaBlanca complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="listaBlanca">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="estado" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "listaBlanca", propOrder = { - "estado" -}) -public class ListaBlanca { - - protected String estado; - - /** - * Obtiene el valor de la propiedad estado. - * - * @return - * possible object is - * {@link String } - * - */ - public String getEstado() { - return estado; - } - - /** - * Define el valor de la propiedad estado. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setEstado(String value) { - this.estado = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObjectFactory.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObjectFactory.java.svn-base deleted file mode 100644 index 1bc6b27..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,231 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.annotation.XmlElementDecl; -import javax.xml.bind.annotation.XmlRegistry; -import javax.xml.namespace.QName; - - -/** - * This object contains factory methods for each - * Java content interface and Java element interface - * generated in the ec.gov.sri.wsconsultacontribuyente package. - *

      An ObjectFactory allows you to programatically - * construct new instances of the Java representation - * for XML content. The Java representation of XML - * content can consist of schema derived interfaces - * and classes representing the binding of schema - * type definitions, element declarations and model - * groups. Factory methods for each of these are - * provided in this class. - * - */ -@XmlRegistry -public class ObjectFactory { - - private final static QName _ObtenerSimple_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerSimple"); - private final static QName _ObtenerCompletoResponse_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerCompletoResponse"); - private final static QName _ObtenerCompleto_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerCompleto"); - private final static QName _ObtenerDatos_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerDatos"); - private final static QName _ObtenerSimpleResponse_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerSimpleResponse"); - private final static QName _ObtenerDatosResponse_QNAME = new QName("http://sri.gov.ec/wsConsultaContribuyente", "obtenerDatosResponse"); - - /** - * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: ec.gov.sri.wsconsultacontribuyente - * - */ - public ObjectFactory() { - } - - /** - * Create an instance of {@link ObtenerSimple } - * - */ - public ObtenerSimple createObtenerSimple() { - return new ObtenerSimple(); - } - - /** - * Create an instance of {@link ObtenerDatosResponse } - * - */ - public ObtenerDatosResponse createObtenerDatosResponse() { - return new ObtenerDatosResponse(); - } - - /** - * Create an instance of {@link ObtenerCompletoResponse } - * - */ - public ObtenerCompletoResponse createObtenerCompletoResponse() { - return new ObtenerCompletoResponse(); - } - - /** - * Create an instance of {@link ObtenerSimpleResponse } - * - */ - public ObtenerSimpleResponse createObtenerSimpleResponse() { - return new ObtenerSimpleResponse(); - } - - /** - * Create an instance of {@link ObtenerDatos } - * - */ - public ObtenerDatos createObtenerDatos() { - return new ObtenerDatos(); - } - - /** - * Create an instance of {@link ObtenerCompleto } - * - */ - public ObtenerCompleto createObtenerCompleto() { - return new ObtenerCompleto(); - } - - /** - * Create an instance of {@link ContribuyenteOnLine } - * - */ - public ContribuyenteOnLine createContribuyenteOnLine() { - return new ContribuyenteOnLine(); - } - - /** - * Create an instance of {@link AgenteRetencion } - * - */ - public AgenteRetencion createAgenteRetencion() { - return new AgenteRetencion(); - } - - /** - * Create an instance of {@link EstructuraOrganizacional } - * - */ - public EstructuraOrganizacional createEstructuraOrganizacional() { - return new EstructuraOrganizacional(); - } - - /** - * Create an instance of {@link ListaBlanca } - * - */ - public ListaBlanca createListaBlanca() { - return new ListaBlanca(); - } - - /** - * Create an instance of {@link RepresentanteLegal } - * - */ - public RepresentanteLegal createRepresentanteLegal() { - return new RepresentanteLegal(); - } - - /** - * Create an instance of {@link Contribuyente } - * - */ - public Contribuyente createContribuyente() { - return new Contribuyente(); - } - - /** - * Create an instance of {@link Contador } - * - */ - public Contador createContador() { - return new Contador(); - } - - /** - * Create an instance of {@link UbicacionGeografica } - * - */ - public UbicacionGeografica createUbicacionGeografica() { - return new UbicacionGeografica(); - } - - /** - * Create an instance of {@link ContribuyenteCompleto } - * - */ - public ContribuyenteCompleto createContribuyenteCompleto() { - return new ContribuyenteCompleto(); - } - - /** - * Create an instance of {@link ActividadEconomica } - * - */ - public ActividadEconomica createActividadEconomica() { - return new ActividadEconomica(); - } - - /** - * Create an instance of {@link TipoContribuyente } - * - */ - public TipoContribuyente createTipoContribuyente() { - return new TipoContribuyente(); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerSimple }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerSimple") - public JAXBElement createObtenerSimple(ObtenerSimple value) { - return new JAXBElement(_ObtenerSimple_QNAME, ObtenerSimple.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerCompletoResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerCompletoResponse") - public JAXBElement createObtenerCompletoResponse(ObtenerCompletoResponse value) { - return new JAXBElement(_ObtenerCompletoResponse_QNAME, ObtenerCompletoResponse.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerCompleto }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerCompleto") - public JAXBElement createObtenerCompleto(ObtenerCompleto value) { - return new JAXBElement(_ObtenerCompleto_QNAME, ObtenerCompleto.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerDatos }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerDatos") - public JAXBElement createObtenerDatos(ObtenerDatos value) { - return new JAXBElement(_ObtenerDatos_QNAME, ObtenerDatos.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerSimpleResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerSimpleResponse") - public JAXBElement createObtenerSimpleResponse(ObtenerSimpleResponse value) { - return new JAXBElement(_ObtenerSimpleResponse_QNAME, ObtenerSimpleResponse.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ObtenerDatosResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://sri.gov.ec/wsConsultaContribuyente", name = "obtenerDatosResponse") - public JAXBElement createObtenerDatosResponse(ObtenerDatosResponse value) { - return new JAXBElement(_ObtenerDatosResponse_QNAME, ObtenerDatosResponse.class, null, value); - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompleto.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompleto.java.svn-base deleted file mode 100644 index 3b0fbc9..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompleto.java.svn-base +++ /dev/null @@ -1,87 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerCompleto complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerCompleto">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="numeroRuc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fuenteDatos" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerCompleto", propOrder = { - "numeroRuc", - "fuenteDatos" -}) -public class ObtenerCompleto { - - protected String numeroRuc; - protected String fuenteDatos; - - /** - * Obtiene el valor de la propiedad numeroRuc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroRuc() { - return numeroRuc; - } - - /** - * Define el valor de la propiedad numeroRuc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroRuc(String value) { - this.numeroRuc = value; - } - - /** - * Obtiene el valor de la propiedad fuenteDatos. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFuenteDatos() { - return fuenteDatos; - } - - /** - * Define el valor de la propiedad fuenteDatos. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFuenteDatos(String value) { - this.fuenteDatos = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompletoResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompletoResponse.java.svn-base deleted file mode 100644 index 9f6de96..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerCompletoResponse.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerCompletoResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerCompletoResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://sri.gov.ec/wsConsultaContribuyente}contribuyenteCompleto" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerCompletoResponse", propOrder = { - "_return" -}) -public class ObtenerCompletoResponse { - - @XmlElement(name = "return") - protected ContribuyenteCompleto _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link ContribuyenteCompleto } - * - */ - public ContribuyenteCompleto getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link ContribuyenteCompleto } - * - */ - public void setReturn(ContribuyenteCompleto value) { - this._return = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatos.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatos.java.svn-base deleted file mode 100644 index 89b7627..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatos.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerDatos complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerDatos">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="numeroRuc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerDatos", propOrder = { - "numeroRuc" -}) -public class ObtenerDatos { - - protected String numeroRuc; - - /** - * Obtiene el valor de la propiedad numeroRuc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroRuc() { - return numeroRuc; - } - - /** - * Define el valor de la propiedad numeroRuc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroRuc(String value) { - this.numeroRuc = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatosResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatosResponse.java.svn-base deleted file mode 100644 index d749f76..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerDatosResponse.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerDatosResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerDatosResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://sri.gov.ec/wsConsultaContribuyente}contribuyenteOnLine" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerDatosResponse", propOrder = { - "_return" -}) -public class ObtenerDatosResponse { - - @XmlElement(name = "return") - protected ContribuyenteOnLine _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link ContribuyenteOnLine } - * - */ - public ContribuyenteOnLine getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link ContribuyenteOnLine } - * - */ - public void setReturn(ContribuyenteOnLine value) { - this._return = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimple.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimple.java.svn-base deleted file mode 100644 index aaeef05..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimple.java.svn-base +++ /dev/null @@ -1,87 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerSimple complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerSimple">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="numeroRuc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="fuenteDatos" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerSimple", propOrder = { - "numeroRuc", - "fuenteDatos" -}) -public class ObtenerSimple { - - protected String numeroRuc; - protected String fuenteDatos; - - /** - * Obtiene el valor de la propiedad numeroRuc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNumeroRuc() { - return numeroRuc; - } - - /** - * Define el valor de la propiedad numeroRuc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNumeroRuc(String value) { - this.numeroRuc = value; - } - - /** - * Obtiene el valor de la propiedad fuenteDatos. - * - * @return - * possible object is - * {@link String } - * - */ - public String getFuenteDatos() { - return fuenteDatos; - } - - /** - * Define el valor de la propiedad fuenteDatos. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setFuenteDatos(String value) { - this.fuenteDatos = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimpleResponse.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimpleResponse.java.svn-base deleted file mode 100644 index 022a18b..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/ObtenerSimpleResponse.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para obtenerSimpleResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="obtenerSimpleResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://sri.gov.ec/wsConsultaContribuyente}contribuyente" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "obtenerSimpleResponse", propOrder = { - "_return" -}) -public class ObtenerSimpleResponse { - - @XmlElement(name = "return") - protected Contribuyente _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link Contribuyente } - * - */ - public Contribuyente getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link Contribuyente } - * - */ - public void setReturn(Contribuyente value) { - this._return = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/RepresentanteLegal.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/RepresentanteLegal.java.svn-base deleted file mode 100644 index 694f157..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/RepresentanteLegal.java.svn-base +++ /dev/null @@ -1,114 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para representanteLegal complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="representanteLegal">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="cargo" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="identificacion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nombre" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "representanteLegal", propOrder = { - "cargo", - "identificacion", - "nombre" -}) -public class RepresentanteLegal { - - protected String cargo; - protected String identificacion; - protected String nombre; - - /** - * Obtiene el valor de la propiedad cargo. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCargo() { - return cargo; - } - - /** - * Define el valor de la propiedad cargo. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCargo(String value) { - this.cargo = value; - } - - /** - * Obtiene el valor de la propiedad identificacion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getIdentificacion() { - return identificacion; - } - - /** - * Define el valor de la propiedad identificacion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setIdentificacion(String value) { - this.identificacion = value; - } - - /** - * Obtiene el valor de la propiedad nombre. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNombre() { - return nombre; - } - - /** - * Define el valor de la propiedad nombre. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNombre(String value) { - this.nombre = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/TipoContribuyente.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/TipoContribuyente.java.svn-base deleted file mode 100644 index 337b0eb..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/TipoContribuyente.java.svn-base +++ /dev/null @@ -1,195 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para tipoContribuyente complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="tipoContribuyente">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="id" type="{http://www.w3.org/2001/XMLSchema}long" minOccurs="0"/>
      - *         <element name="nivel1" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nivel2" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nivel3" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="nivel4" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="ultimoNivel" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "tipoContribuyente", propOrder = { - "id", - "nivel1", - "nivel2", - "nivel3", - "nivel4", - "ultimoNivel" -}) -public class TipoContribuyente { - - protected Long id; - protected String nivel1; - protected String nivel2; - protected String nivel3; - protected String nivel4; - protected String ultimoNivel; - - /** - * Obtiene el valor de la propiedad id. - * - * @return - * possible object is - * {@link Long } - * - */ - public Long getId() { - return id; - } - - /** - * Define el valor de la propiedad id. - * - * @param value - * allowed object is - * {@link Long } - * - */ - public void setId(Long value) { - this.id = value; - } - - /** - * Obtiene el valor de la propiedad nivel1. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNivel1() { - return nivel1; - } - - /** - * Define el valor de la propiedad nivel1. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNivel1(String value) { - this.nivel1 = value; - } - - /** - * Obtiene el valor de la propiedad nivel2. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNivel2() { - return nivel2; - } - - /** - * Define el valor de la propiedad nivel2. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNivel2(String value) { - this.nivel2 = value; - } - - /** - * Obtiene el valor de la propiedad nivel3. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNivel3() { - return nivel3; - } - - /** - * Define el valor de la propiedad nivel3. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNivel3(String value) { - this.nivel3 = value; - } - - /** - * Obtiene el valor de la propiedad nivel4. - * - * @return - * possible object is - * {@link String } - * - */ - public String getNivel4() { - return nivel4; - } - - /** - * Define el valor de la propiedad nivel4. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setNivel4(String value) { - this.nivel4 = value; - } - - /** - * Obtiene el valor de la propiedad ultimoNivel. - * - * @return - * possible object is - * {@link String } - * - */ - public String getUltimoNivel() { - return ultimoNivel; - } - - /** - * Define el valor de la propiedad ultimoNivel. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setUltimoNivel(String value) { - this.ultimoNivel = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/UbicacionGeografica.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/UbicacionGeografica.java.svn-base deleted file mode 100644 index b155226..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/UbicacionGeografica.java.svn-base +++ /dev/null @@ -1,303 +0,0 @@ - -package ec.gov.sri.wsconsultacontribuyente; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para ubicacionGeografica complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="ubicacionGeografica">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="canton" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codCanton" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codPais" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codParroquia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codProvincia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="codRegion" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="pais" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="parroquia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="provincia" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *         <element name="region" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "ubicacionGeografica", propOrder = { - "canton", - "codCanton", - "codPais", - "codParroquia", - "codProvincia", - "codRegion", - "pais", - "parroquia", - "provincia", - "region" -}) -public class UbicacionGeografica { - - protected String canton; - protected String codCanton; - protected String codPais; - protected String codParroquia; - protected String codProvincia; - protected String codRegion; - protected String pais; - protected String parroquia; - protected String provincia; - protected String region; - - /** - * Obtiene el valor de la propiedad canton. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCanton() { - return canton; - } - - /** - * Define el valor de la propiedad canton. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCanton(String value) { - this.canton = value; - } - - /** - * Obtiene el valor de la propiedad codCanton. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodCanton() { - return codCanton; - } - - /** - * Define el valor de la propiedad codCanton. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodCanton(String value) { - this.codCanton = value; - } - - /** - * Obtiene el valor de la propiedad codPais. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodPais() { - return codPais; - } - - /** - * Define el valor de la propiedad codPais. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodPais(String value) { - this.codPais = value; - } - - /** - * Obtiene el valor de la propiedad codParroquia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodParroquia() { - return codParroquia; - } - - /** - * Define el valor de la propiedad codParroquia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodParroquia(String value) { - this.codParroquia = value; - } - - /** - * Obtiene el valor de la propiedad codProvincia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodProvincia() { - return codProvincia; - } - - /** - * Define el valor de la propiedad codProvincia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodProvincia(String value) { - this.codProvincia = value; - } - - /** - * Obtiene el valor de la propiedad codRegion. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCodRegion() { - return codRegion; - } - - /** - * Define el valor de la propiedad codRegion. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCodRegion(String value) { - this.codRegion = value; - } - - /** - * Obtiene el valor de la propiedad pais. - * - * @return - * possible object is - * {@link String } - * - */ - public String getPais() { - return pais; - } - - /** - * Define el valor de la propiedad pais. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setPais(String value) { - this.pais = value; - } - - /** - * Obtiene el valor de la propiedad parroquia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getParroquia() { - return parroquia; - } - - /** - * Define el valor de la propiedad parroquia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setParroquia(String value) { - this.parroquia = value; - } - - /** - * Obtiene el valor de la propiedad provincia. - * - * @return - * possible object is - * {@link String } - * - */ - public String getProvincia() { - return provincia; - } - - /** - * Define el valor de la propiedad provincia. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setProvincia(String value) { - this.provincia = value; - } - - /** - * Obtiene el valor de la propiedad region. - * - * @return - * possible object is - * {@link String } - * - */ - public String getRegion() { - return region; - } - - /** - * Define el valor de la propiedad region. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setRegion(String value) { - this.region = value; - } - -} diff --git a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/package-info.java.svn-base b/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 4878b6d..0000000 --- a/base/persistence/parmas/src/main/java/ec/gov/sri/wsconsultacontribuyente/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -@javax.xml.bind.annotation.XmlSchema(namespace = "http://sri.gov.ec/wsConsultaContribuyente") -package ec.gov.sri.wsconsultacontribuyente; diff --git a/base/persistence/parmas/src/test/.svn/entries b/base/persistence/parmas/src/test/.svn/entries deleted file mode 100644 index f38e426..0000000 --- a/base/persistence/parmas/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/parmas/src/test/java/.svn/entries b/base/persistence/parmas/src/test/java/.svn/entries deleted file mode 100644 index c023622..0000000 --- a/base/persistence/parmas/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/parmas/src/test/java/com/.svn/entries b/base/persistence/parmas/src/test/java/com/.svn/entries deleted file mode 100644 index fe4320b..0000000 --- a/base/persistence/parmas/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/parmas/src/test/java/com/fp/.svn/entries b/base/persistence/parmas/src/test/java/com/fp/.svn/entries deleted file mode 100644 index fbb50a7..0000000 --- a/base/persistence/parmas/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/persistence/parmas/src/test/java/com/fp/base/.svn/entries b/base/persistence/parmas/src/test/java/com/fp/base/.svn/entries deleted file mode 100644 index 919cd62..0000000 --- a/base/persistence/parmas/src/test/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/parmas/src/test/java/com/fp/base/persistence/.svn/entries b/base/persistence/parmas/src/test/java/com/fp/base/persistence/.svn/entries deleted file mode 100644 index 3390f96..0000000 --- a/base/persistence/parmas/src/test/java/com/fp/base/persistence/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/parmas/src/test/java/com/fp/base/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pbpm/.svn/dir-prop-base b/base/persistence/pbpm/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/persistence/pbpm/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/persistence/pbpm/.svn/entries b/base/persistence/pbpm/.svn/entries deleted file mode 100644 index 406bc94..0000000 --- a/base/persistence/pbpm/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:32.762760Z -7e83ba32705e393f266d65be55846921 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -565 - diff --git a/base/persistence/pbpm/.svn/text-base/pom.xml.svn-base b/base/persistence/pbpm/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 560df05..0000000 --- a/base/persistence/pbpm/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,16 +0,0 @@ - - - - persistence - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.persistence - pbpm - pbpm - - diff --git a/base/persistence/pbpm/src/.svn/entries b/base/persistence/pbpm/src/.svn/entries deleted file mode 100644 index 17ed068..0000000 --- a/base/persistence/pbpm/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/persistence/pbpm/src/main/.svn/entries b/base/persistence/pbpm/src/main/.svn/entries deleted file mode 100644 index b23e3b0..0000000 --- a/base/persistence/pbpm/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/persistence/pbpm/src/main/java/.svn/entries b/base/persistence/pbpm/src/main/java/.svn/entries deleted file mode 100644 index 9aadc6c..0000000 --- a/base/persistence/pbpm/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pbpm/src/main/java/com/.svn/entries b/base/persistence/pbpm/src/main/java/com/.svn/entries deleted file mode 100644 index e8a4b3d..0000000 --- a/base/persistence/pbpm/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pbpm/src/main/java/com/fp/.svn/entries b/base/persistence/pbpm/src/main/java/com/fp/.svn/entries deleted file mode 100644 index fe28f64..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/pbpm/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index c73e877..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pbpm -dir - diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/.svn/entries b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/.svn/entries deleted file mode 100644 index 97f441b..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -gene -dir - diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/entries b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/entries deleted file mode 100644 index f5baf91..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/entries +++ /dev/null @@ -1,742 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene -svn://172.17.26.185/COMACO - - - -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TbpmActivitiesKey.java -file - - - - -2022-07-28T03:40:32.477759Z -1e86a7d0d6d991cb6e882b9404cf0fc4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4120 - -TbpmGroups.java -file - - - - -2022-07-28T03:40:32.477759Z -317f20c44509b7d3d4b4d595845a3d3b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4551 - -TbpmProcessVariablesKey.java -file - - - - -2022-07-28T03:40:32.477759Z -85446449fafb4ce2f7e593eb451aa8ce -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3282 - -TbpmField.java -file - - - - -2022-07-28T03:40:32.478759Z -45c3bec1e697b00a81f6b6b5d6ee8ebb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4301 - -TbpmLogMail.java -file - - - - -2022-07-28T03:40:32.478759Z -5f8a0c47bbeae07140902b319a87a172 -2015-02-22T10:58:24.700720Z -3845 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6361 - -TbpmFieldTransactionMaping.java -file - - - - -2022-07-28T03:40:32.478759Z -05d095f75093a0ec98ab2de34f949c52 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6657 - -TbpmGroupsKey.java -file - - - - -2022-07-28T03:40:32.478759Z -3f79bc47ac3fb69cb3e5322a21ebdbe9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3311 - -TbpmFlows.java -file - - - - -2022-07-28T03:40:32.479759Z -b7bcd3628e4a5784561c9fc459d2a98c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4143 - -TbpmRules.java -file - - - - -2022-07-28T03:40:32.479759Z -a8197e49440c7de8ee113da07c203068 -2014-10-30T05:42:15.708160Z -2201 -dcruz - - - - - - - - - - - - - - - - - - - - - -12247 - -TbpmFieldTransactionMapingKey.java -file - - - - -2022-07-28T03:40:32.479759Z -da835abeb2b2f7382ca2ea5434c78fc8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5514 - -TbpmGroupsUsers.java -file - - - - -2022-07-28T03:40:32.480759Z -e2142e79eab4726ee627415fd1edc812 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6978 - -TbpmFieldTransactionOrigin.java -file - - - - -2022-07-28T03:40:32.479759Z -11645cd640011d4c0f365de9646f34d8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6751 - -TbpmProcessInstance.java -file - - - - -2022-07-28T03:40:32.480759Z -d347200eb68b636556fdc465fc64d11f -2014-10-30T05:43:34.974419Z -2203 -dcruz - - - - - - - - - - - - - - - - - - - - - -8228 - -TbpmFlowsKey.java -file - - - - -2022-07-28T03:40:32.480759Z -b53573b9c740afd06aa3299e80733cf9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3234 - -TbpmRulesKey.java -file - - - - -2022-07-28T03:40:32.480759Z -ffd98034f8d48cb6d42567a03d86407b -2014-10-30T05:42:52.942414Z -2202 -dcruz - - - - - - - - - - - - - - - - - - - - - -3256 - -TbpmActivities.java -file - - - - -2022-07-28T03:40:32.481759Z -f0b292dc55ec861c64a9c3b13aff144d -2014-10-30T05:38:19.278054Z -2200 -dcruz - - - - - - - - - - - - - - - - - - - - - -10085 - -TbpmProcessVariables.java -file - - - - -2022-07-28T03:40:32.481759Z -bd5435dac6b6d969811c22e4024009a9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5290 - -TbpmNotify.java -file - - - - -2022-07-28T03:40:32.481759Z -7db2f2eedda26308b2ba7a28237c4e21 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8076 - -TbpmTaskComments.java -file - - - - -2022-07-28T03:40:32.481759Z -6b3a457deadd31ab6754091b7e3f8e95 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4819 - -TbpmGroupsUsersKey.java -file - - - - -2022-07-28T03:40:32.482759Z -7c864a04ae09410f8850960561fd5315 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4055 - -TbpmFieldTransactionOriginKey.java -file - - - - -2022-07-28T03:40:32.482759Z -ffdd487c2547ef46cdd4b381dfdbec33 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5514 - diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivities.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivities.java.svn-base deleted file mode 100644 index f9c2c67..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivities.java.svn-base +++ /dev/null @@ -1,446 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMACTIVITIES*/ -@Entity(name="TbpmActivities") -@Table(name="TBPMACTIVITIES") -public class TbpmActivities extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmActivities -*/ -@EmbeddedId -private TbpmActivitiesKey pk; -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="GROUPCODE", nullable=true) - -/** -* Codigo de grupo de usuarios de un bpm -*/ -private String groupcode; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="ACTION", nullable=true) - -/** -* Tipo de Asignacion -*/ -private String action; - -@Column(name="ADITIONALDATA", nullable=true) - -/** -* Variables adicionales -*/ -private String aditionaldata; - -@Column(name="COMPLETED", nullable=true) - -/** -* Fecha de finalizacion -*/ -private Timestamp completed; - -@Column(name="CREATED", nullable=true) - -/** -* Fecha de creacion -*/ -private Timestamp created; - -@Column(name="EXPECTEDTIME", nullable=true) - -/** -* Tiempo estimado -*/ -private Long expectedtime; - -@Column(name="TASKJOURNALID", nullable=true) - -/** -* Identificador de la transaccion de la Tarea -*/ -private String taskjournalid; - -@Column(name="RESPONSE", nullable=true) - -/** -* Respuesta -*/ -private String response; - -@Column(name="RULECODE", nullable=true) - -/** -* Codigo de la Regla asociada -*/ -private String rulecode; - -@Column(name="RULECODEDEFAULT", nullable=true) - -/** -* Codigo de la Regla adicional -*/ -private String rulecodedefault; - -@Column(name="STARTED", nullable=true) - -/** -* Iniciada -*/ -private Timestamp started; - -@Column(name="TASKID", nullable=true) - -/** -* Identificador de la Tarea -*/ -private Long taskid; - -@Column(name="MODULE", nullable=true) - -/** -* Modulo -*/ -private String module; - -@Column(name="TRANSACTION", nullable=true) - -/** -* Transaccion -*/ -private Long transaction; - -@Column(name="VERSION", nullable=true) - -/** -* Version de la transacion -*/ -private Long version; - -@Column(name="INTERNALCODE", nullable=true) - -/** -* Codigo Auxiliar -*/ -private String internalcode; - -/**Contructor por defecto*/ -public TbpmActivities(){ -} -/**Contructor de TbpmActivities -@param pPk Clave Primaria del entity -*/ -public TbpmActivities(TbpmActivitiesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmActivities -*/ -public static TbpmActivities find(EntityManager pEntityManager,TbpmActivitiesKey pKey) throws Exception{ - TbpmActivities obj = pEntityManager.find(TbpmActivities.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmActivities -@return El objeto que referencia a la Clave primaria de TbpmActivities -*/ -public TbpmActivitiesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmActivities -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmActivities -*/ -public void setPk(TbpmActivitiesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de groupcode -@return valor de groupcode*/ -public String getGroupcode(){ - return groupcode; -} -/**Fija el valor de groupcode -@param pGroupcode nuevo Valor de groupcode*/ -public void setGroupcode(String pGroupcode){ - groupcode=pGroupcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de action -@return valor de action*/ -public String getAction(){ - return action; -} -/**Fija el valor de action -@param pAction nuevo Valor de action*/ -public void setAction(String pAction){ - action=pAction; -} - -/**Obtiene el valor de aditionaldata -@return valor de aditionaldata*/ -public String getAditionaldata(){ - return aditionaldata; -} -/**Fija el valor de aditionaldata -@param pAditionaldata nuevo Valor de aditionaldata*/ -public void setAditionaldata(String pAditionaldata){ - aditionaldata=pAditionaldata; -} - -/**Obtiene el valor de completed -@return valor de completed*/ -public Timestamp getCompleted(){ - return completed; -} -/**Fija el valor de completed -@param pCompleted nuevo Valor de completed*/ -public void setCompleted(Timestamp pCompleted){ - completed=pCompleted; -} - -/**Obtiene el valor de created -@return valor de created*/ -public Timestamp getCreated(){ - return created; -} -/**Fija el valor de created -@param pCreated nuevo Valor de created*/ -public void setCreated(Timestamp pCreated){ - created=pCreated; -} - -/**Obtiene el valor de expectedtime -@return valor de expectedtime*/ -public Long getExpectedtime(){ - return expectedtime; -} -/**Fija el valor de expectedtime -@param pExpectedtime nuevo Valor de expectedtime*/ -public void setExpectedtime(Long pExpectedtime){ - expectedtime=pExpectedtime; -} - -/**Obtiene el valor de taskjournalid -@return valor de taskjournalid*/ -public String getTaskjournalid(){ - return taskjournalid; -} -/**Fija el valor de taskjournalid -@param pTaskjournalid nuevo Valor de taskjournalid*/ -public void setTaskjournalid(String pTaskjournalid){ - taskjournalid=pTaskjournalid; -} - -/**Obtiene el valor de response -@return valor de response*/ -public String getResponse(){ - return response; -} -/**Fija el valor de response -@param pResponse nuevo Valor de response*/ -public void setResponse(String pResponse){ - response=pResponse; -} - -/**Obtiene el valor de rulecode -@return valor de rulecode*/ -public String getRulecode(){ - return rulecode; -} -/**Fija el valor de rulecode -@param pRulecode nuevo Valor de rulecode*/ -public void setRulecode(String pRulecode){ - rulecode=pRulecode; -} - -/**Obtiene el valor de rulecodedefault -@return valor de rulecodedefault*/ -public String getRulecodedefault(){ - return rulecodedefault; -} -/**Fija el valor de rulecodedefault -@param pRulecodedefault nuevo Valor de rulecodedefault*/ -public void setRulecodedefault(String pRulecodedefault){ - rulecodedefault=pRulecodedefault; -} - -/**Obtiene el valor de started -@return valor de started*/ -public Timestamp getStarted(){ - return started; -} -/**Fija el valor de started -@param pStarted nuevo Valor de started*/ -public void setStarted(Timestamp pStarted){ - started=pStarted; -} - -/**Obtiene el valor de taskid -@return valor de taskid*/ -public Long getTaskid(){ - return taskid; -} -/**Fija el valor de taskid -@param pTaskid nuevo Valor de taskid*/ -public void setTaskid(Long pTaskid){ - taskid=pTaskid; -} - -/**Obtiene el valor de module -@return valor de module*/ -public String getModule(){ - return module; -} -/**Fija el valor de module -@param pModule nuevo Valor de module*/ -public void setModule(String pModule){ - module=pModule; -} - -/**Obtiene el valor de transaction -@return valor de transaction*/ -public Long getTransaction(){ - return transaction; -} -/**Fija el valor de transaction -@param pTransaction nuevo Valor de transaction*/ -public void setTransaction(Long pTransaction){ - transaction=pTransaction; -} - -/**Obtiene el valor de version -@return valor de version*/ -public Long getVersion(){ - return version; -} -/**Fija el valor de version -@param pVersion nuevo Valor de version*/ -public void setVersion(Long pVersion){ - version=pVersion; -} - -/**Obtiene el valor de internalcode -@return valor de internalcode*/ -public String getInternalcode(){ - return internalcode; -} -/**Fija el valor de internalcode -@param pInternalcode nuevo Valor de internalcode*/ -public void setInternalcode(String pInternalcode){ - internalcode=pInternalcode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmActivities))return false; - TbpmActivities that = (TbpmActivities) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TbpmActivities -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TbpmActivities -*/ -public Object createInstance(){ - TbpmActivities instance=new TbpmActivities(); - instance.setPk(new TbpmActivitiesKey()); - return instance; -} -/**Clona la entidad TbpmActivities -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmActivities p=(TbpmActivities)this.clone(); - p.setPk((TbpmActivitiesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivitiesKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivitiesKey.java.svn-base deleted file mode 100644 index 49fbc19..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmActivitiesKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMACTIVITIES*/ -@Embeddable -public class TbpmActivitiesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado al a instacioa del flujo. -*/ -private String journalid; - -@Column(name="ACTIVITYNAME", nullable=false,updatable=false) - -/** -* Nombre de la Actividad -*/ -private String activityname; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de Actividades -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TbpmActivitiesKey(){} -/**Contructor de TbpmActivitiesKey -@param pJournalid Numero de mensaje asociado al a instacioa del flujo. -@param pActivityname Nombre de la Actividad -@param pSequence Secuencia de Actividades -*/ -public TbpmActivitiesKey(String pJournalid,String pActivityname,Integer pSequence){ - journalid=pJournalid; - activityname=pActivityname; - sequence=pSequence; -} -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de activityname -@return valor de activityname*/ -public String getActivityname(){ - return activityname; -} -/**Fija el valor de activityname -@param pActivityname nuevo Valor de activityname*/ -public void setActivityname(String pActivityname){ - activityname=pActivityname; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacion de la comparacion de TbpmActivitiesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmActivitiesKey))return false; - TbpmActivitiesKey that = (TbpmActivitiesKey) o; - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getActivityname() == null || that.getActivityname() == null){ - return false; - } - if (! this.getActivityname().equals(that.getActivityname())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TbpmActivitiesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getActivityname() == null ? 0 : this.getActivityname().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmField.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmField.java.svn-base deleted file mode 100644 index 4270a36..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmField.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMFIELD*/ -@Entity(name="TbpmField") -@Table(name="TBPMFIELD") -public class TbpmField extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmField -*/ -@Id -@Column(name="FIELDNAME" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=false) - -/** -* Codigo de session en las tablas del jbpm asociadas al flujo -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion de la utilizacion del campo. -*/ -private String description; - -/**Contructor por defecto*/ -public TbpmField(){ -} -/**Contructor de TbpmField -@param pPk Clave Primaria del entity -@param pRecordversion Codigo de session en las tablas del jbpm asociadas al flujo -*/ -public TbpmField(String pPk,Integer pRecordversion){ - this(); - pk=pPk; - recordversion=pRecordversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmField -*/ -public static TbpmField find(EntityManager pEntityManager,Object pKey) throws Exception{ - TbpmField obj = pEntityManager.find(TbpmField.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmField -@return El objeto que referencia a la Clave primaria de TbpmField -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmField -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmField -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmField))return false; - TbpmField that = (TbpmField) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TbpmField -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TbpmField -*/ -public Object createInstance(){ - TbpmField instance=new TbpmField(); - return instance; -} -/**Clona la entidad TbpmField -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmField p=(TbpmField)this.clone(); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMaping.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMaping.java.svn-base deleted file mode 100644 index b2773f8..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMaping.java.svn-base +++ /dev/null @@ -1,211 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMFIELDTRANSACTIONMAPING */ -@Entity(name = "TbpmFieldTransactionMaping") -@Table(name = "TBPMFIELDTRANSACTIONMAPING") -public class TbpmFieldTransactionMaping extends com.fp.dto.AbstractDataTransport implements Serializable, - HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmFieldTransactionMaping - */ - @EmbeddedId - private TbpmFieldTransactionMapingKey pk; - - @Column(name = "FIELDSCREEN", nullable = true) - /** - * Nombre del campo para la pantalla - */ - private String fieldscreen; - - /** Contructor por defecto */ - public TbpmFieldTransactionMaping() { - } - - /** - * Contructor de TbpmFieldTransactionMaping - * - * @param pPk Clave Primaria del entity - */ - public TbpmFieldTransactionMaping(TbpmFieldTransactionMapingKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmFieldTransactionMaping - */ - public static TbpmFieldTransactionMaping find(EntityManager pEntityManager, TbpmFieldTransactionMapingKey pKey) - throws Exception { - TbpmFieldTransactionMaping obj = pEntityManager.find(TbpmFieldTransactionMaping.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmFieldTransactionMaping - * - * @return El objeto que referencia a la Clave primaria de TbpmFieldTransactionMaping - */ - public TbpmFieldTransactionMapingKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmFieldTransactionMaping - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmFieldTransactionMaping - */ - public void setPk(TbpmFieldTransactionMapingKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de fieldscreen - * - * @return valor de fieldscreen - */ - public String getFieldscreen() { - return this.fieldscreen; - } - - /** - * Fija el valor de fieldscreen - * - * @param pFieldscreen nuevo Valor de fieldscreen - */ - public void setFieldscreen(String pFieldscreen) { - this.fieldscreen = pFieldscreen; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmFieldTransactionMaping)) { - return false; - } - TbpmFieldTransactionMaping that = (TbpmFieldTransactionMaping) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TbpmFieldTransactionMaping - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementaci�n toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementaci�n de la creaci�n de un bean en blanco TbpmFieldTransactionMaping */ - @Override - public Object createInstance() { - TbpmFieldTransactionMaping instance = new TbpmFieldTransactionMaping(); - instance.setPk(new TbpmFieldTransactionMapingKey()); - return instance; - } - - /** - * Clona la entidad TbpmFieldTransactionMaping - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmFieldTransactionMaping p = (TbpmFieldTransactionMaping) this.clone(); - p.setPk((TbpmFieldTransactionMapingKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - - /** Sentecia que entrega una lista de TbpmFieldTransactionOrigin dado un codigo de transaccion. */ - private static final String HQL_FIELDS = "from TbpmFieldTransactionMaping t where t.pk.transactionmodule = :module " - + "and t.pk.transactioncode = :transaction and t.pk.transactionversion = :version "; - - /** - * Metodo que entrega una lista de registros de la tabla TbpmFieldTransactionOrigin dado un codigo de transaccion. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pGroupcode Codigo de grupo a obtener una lista de usuarios. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pModule, - Integer pTransaction, Integer pVersion) throws Exception { - Query qry = pEntityManager.createQuery(TbpmFieldTransactionMaping.HQL_FIELDS); - qry.setParameter("module", pModule); - qry.setParameter("transaction", pTransaction); - qry.setParameter("version", pVersion); - return qry.getResultList(); - - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMapingKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMapingKey.java.svn-base deleted file mode 100644 index 4a80a3d..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionMapingKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMFIELDTRANSACTIONMAPING*/ -@Embeddable -public class TbpmFieldTransactionMapingKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="FIELDNAME", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado al a instacioa del flujo. -*/ -private String fieldname; - -/**Contructor por defecto*/ -public TbpmFieldTransactionMapingKey(){} -/**Contructor de TbpmFieldTransactionMapingKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pFieldname Numero de mensaje asociado al a instacioa del flujo. -*/ -public TbpmFieldTransactionMapingKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pFieldname){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - fieldname=pFieldname; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de fieldname -@return valor de fieldname*/ -public String getFieldname(){ - return fieldname; -} -/**Fija el valor de fieldname -@param pFieldname nuevo Valor de fieldname*/ -public void setFieldname(String pFieldname){ - fieldname=pFieldname; -} - -/**Implementacin de la comparacin de TbpmFieldTransactionMapingKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmFieldTransactionMapingKey))return false; - TbpmFieldTransactionMapingKey that = (TbpmFieldTransactionMapingKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getFieldname() == null || that.getFieldname() == null){ - return false; - } - if (! this.getFieldname().equals(that.getFieldname())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TbpmFieldTransactionMapingKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getFieldname() == null ? 0 : this.getFieldname().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOrigin.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOrigin.java.svn-base deleted file mode 100644 index 48d2e5e..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOrigin.java.svn-base +++ /dev/null @@ -1,211 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMFIELDTRANSACTIONORIGIN */ -@Entity(name = "TbpmFieldTransactionOrigin") -@Table(name = "TBPMFIELDTRANSACTIONORIGIN") -public class TbpmFieldTransactionOrigin extends com.fp.dto.AbstractDataTransport implements Serializable, - HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmFieldTransactionOrigin - */ - @EmbeddedId - private TbpmFieldTransactionOriginKey pk; - - @Column(name = "EXPRESIONLANGUAGE", nullable = true) - /** - * Expresion language que entrega el valor del campo - */ - private String expresionlanguage; - - /** Contructor por defecto */ - public TbpmFieldTransactionOrigin() { - } - - /** - * Contructor de TbpmFieldTransactionOrigin - * - * @param pPk Clave Primaria del entity - */ - public TbpmFieldTransactionOrigin(TbpmFieldTransactionOriginKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmFieldTransactionOrigin - */ - public static TbpmFieldTransactionOrigin find(EntityManager pEntityManager, TbpmFieldTransactionOriginKey pKey) - throws Exception { - TbpmFieldTransactionOrigin obj = pEntityManager.find(TbpmFieldTransactionOrigin.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmFieldTransactionOrigin - * - * @return El objeto que referencia a la Clave primaria de TbpmFieldTransactionOrigin - */ - public TbpmFieldTransactionOriginKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmFieldTransactionOrigin - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmFieldTransactionOrigin - */ - public void setPk(TbpmFieldTransactionOriginKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de expresionlanguage - * - * @return valor de expresionlanguage - */ - public String getExpresionlanguage() { - return this.expresionlanguage; - } - - /** - * Fija el valor de expresionlanguage - * - * @param pExpresionlanguage nuevo Valor de expresionlanguage - */ - public void setExpresionlanguage(String pExpresionlanguage) { - this.expresionlanguage = pExpresionlanguage; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmFieldTransactionOrigin)) { - return false; - } - TbpmFieldTransactionOrigin that = (TbpmFieldTransactionOrigin) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TbpmFieldTransactionOrigin - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementaci�n toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementaci�n de la creaci�n de un bean en blanco TbpmFieldTransactionOrigin */ - @Override - public Object createInstance() { - TbpmFieldTransactionOrigin instance = new TbpmFieldTransactionOrigin(); - instance.setPk(new TbpmFieldTransactionOriginKey()); - return instance; - } - - /** - * Clona la entidad TbpmFieldTransactionOrigin - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmFieldTransactionOrigin p = (TbpmFieldTransactionOrigin) this.clone(); - p.setPk((TbpmFieldTransactionOriginKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - - /** Sentecia que entrega una lista de TbpmFieldTransactionOrigin dado un codigo de transaccion. */ - private static final String HQL_FIELDS = "from TbpmFieldTransactionOrigin t where t.pk.transactionmodule = :module " - + "and t.pk.transactioncode = :transaction and t.pk.transactionversion = :version "; - - /** - * Metodo que entrega una lista de registros de la tabla TbpmFieldTransactionOrigin dado un codigo de transaccion. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pGroupcode Codigo de grupo a obtener una lista de usuarios. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pModule, - Integer pTransaction, Integer pVersion) throws Exception { - Query qry = pEntityManager.createQuery(TbpmFieldTransactionOrigin.HQL_FIELDS); - qry.setParameter("module", pModule); - qry.setParameter("transaction", pTransaction); - qry.setParameter("version", pVersion); - return qry.getResultList(); - - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOriginKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOriginKey.java.svn-base deleted file mode 100644 index 5a62143..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFieldTransactionOriginKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMFIELDTRANSACTIONORIGIN*/ -@Embeddable -public class TbpmFieldTransactionOriginKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="FIELDNAME", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado al a instacioa del flujo. -*/ -private String fieldname; - -/**Contructor por defecto*/ -public TbpmFieldTransactionOriginKey(){} -/**Contructor de TbpmFieldTransactionOriginKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pFieldname Numero de mensaje asociado al a instacioa del flujo. -*/ -public TbpmFieldTransactionOriginKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pFieldname){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - fieldname=pFieldname; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de fieldname -@return valor de fieldname*/ -public String getFieldname(){ - return fieldname; -} -/**Fija el valor de fieldname -@param pFieldname nuevo Valor de fieldname*/ -public void setFieldname(String pFieldname){ - fieldname=pFieldname; -} - -/**Implementacin de la comparacin de TbpmFieldTransactionOriginKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmFieldTransactionOriginKey))return false; - TbpmFieldTransactionOriginKey that = (TbpmFieldTransactionOriginKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getFieldname() == null || that.getFieldname() == null){ - return false; - } - if (! this.getFieldname().equals(that.getFieldname())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TbpmFieldTransactionOriginKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getFieldname() == null ? 0 : this.getFieldname().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlows.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlows.java.svn-base deleted file mode 100644 index a90bc22..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlows.java.svn-base +++ /dev/null @@ -1,157 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMFLOWS*/ -@Entity(name="TbpmFlows") -@Table(name="TBPMFLOWS") -public class TbpmFlows extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmFlows -*/ -@EmbeddedId -private TbpmFlowsKey pk; -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del flujo -*/ -private String description; - -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TbpmFlows(){ -} -/**Contructor de TbpmFlows -@param pPk Clave Primaria del entity -*/ -public TbpmFlows(TbpmFlowsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmFlows -*/ -public static TbpmFlows find(EntityManager pEntityManager,TbpmFlowsKey pKey) throws Exception{ - TbpmFlows obj = pEntityManager.find(TbpmFlows.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmFlows -@return El objeto que referencia a la Clave primaria de TbpmFlows -*/ -public TbpmFlowsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmFlows -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmFlows -*/ -public void setPk(TbpmFlowsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmFlows))return false; - TbpmFlows that = (TbpmFlows) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TbpmFlows -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TbpmFlows -*/ -public Object createInstance(){ - TbpmFlows instance=new TbpmFlows(); - instance.setPk(new TbpmFlowsKey()); - return instance; -} -/**Clona la entidad TbpmFlows -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmFlows p=(TbpmFlows)this.clone(); - p.setPk((TbpmFlowsKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlowsKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlowsKey.java.svn-base deleted file mode 100644 index d2a0a4e..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmFlowsKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMFLOWS*/ -@Embeddable -public class TbpmFlowsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="FLOWCODE", nullable=false,updatable=false) - -/** -* Codigo de flujo -*/ -private String flowcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TbpmFlowsKey(){} -/**Contructor de TbpmFlowsKey -@param pFlowcode Codigo de flujo -@param pCompanycode Codigo de compania -*/ -public TbpmFlowsKey(String pFlowcode,Integer pCompanycode){ - flowcode=pFlowcode; - companycode=pCompanycode; -} -/**Obtiene el valor de flowcode -@return valor de flowcode*/ -public String getFlowcode(){ - return flowcode; -} -/**Fija el valor de flowcode -@param pFlowcode nuevo Valor de flowcode*/ -public void setFlowcode(String pFlowcode){ - flowcode=pFlowcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TbpmFlowsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmFlowsKey))return false; - TbpmFlowsKey that = (TbpmFlowsKey) o; - if (this.getFlowcode() == null || that.getFlowcode() == null){ - return false; - } - if (! this.getFlowcode().equals(that.getFlowcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TbpmFlowsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getFlowcode() == null ? 0 : this.getFlowcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroups.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroups.java.svn-base deleted file mode 100644 index e1cffdb..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroups.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMGROUPS*/ -@Entity(name="TbpmGroups") -@Table(name="TBPMGROUPS") -public class TbpmGroups extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmGroups -*/ -@EmbeddedId -private TbpmGroupsKey pk; -@Column(name="DESCRIPTION", nullable=true) - -/** -* Detalle del grupo de usuario de bpm -*/ -private String description; - -@Column(name="EMAIL", nullable=true) - -/** -* Campo para el ingreso de email -*/ -private String email; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TbpmGroups(){ -} -/**Contructor de TbpmGroups -@param pPk Clave Primaria del entity -*/ -public TbpmGroups(TbpmGroupsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmGroups -*/ -public static TbpmGroups find(EntityManager pEntityManager,TbpmGroupsKey pKey) throws Exception{ - TbpmGroups obj = pEntityManager.find(TbpmGroups.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmGroups -@return El objeto que referencia a la Clave primaria de TbpmGroups -*/ -public TbpmGroupsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmGroups -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmGroups -*/ -public void setPk(TbpmGroupsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de email -@return valor de email*/ -public String getEmail(){ - return email; -} -/**Fija el valor de email -@param pEmail nuevo Valor de email*/ -public void setEmail(String pEmail){ - email=pEmail; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmGroups))return false; - TbpmGroups that = (TbpmGroups) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TbpmGroups -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TbpmGroups -*/ -public Object createInstance(){ - TbpmGroups instance=new TbpmGroups(); - instance.setPk(new TbpmGroupsKey()); - return instance; -} -/**Clona la entidad TbpmGroups -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmGroups p=(TbpmGroups)this.clone(); - p.setPk((TbpmGroupsKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsKey.java.svn-base deleted file mode 100644 index a6e7a52..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMGROUPS*/ -@Embeddable -public class TbpmGroupsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="GROUPCODE", nullable=false,updatable=false) - -/** -* Codigo de grupo de usuarios de un bpm -*/ -private String groupcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TbpmGroupsKey(){} -/**Contructor de TbpmGroupsKey -@param pGroupcode Codigo de grupo de usuarios de un bpm -@param pCompanycode Codigo de compania -*/ -public TbpmGroupsKey(String pGroupcode,Integer pCompanycode){ - groupcode=pGroupcode; - companycode=pCompanycode; -} -/**Obtiene el valor de groupcode -@return valor de groupcode*/ -public String getGroupcode(){ - return groupcode; -} -/**Fija el valor de groupcode -@param pGroupcode nuevo Valor de groupcode*/ -public void setGroupcode(String pGroupcode){ - groupcode=pGroupcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacion de la comparacion de TbpmGroupsKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmGroupsKey))return false; - TbpmGroupsKey that = (TbpmGroupsKey) o; - if (this.getGroupcode() == null || that.getGroupcode() == null){ - return false; - } - if (! this.getGroupcode().equals(that.getGroupcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TbpmGroupsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getGroupcode() == null ? 0 : this.getGroupcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsers.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsers.java.svn-base deleted file mode 100644 index f9363de..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsers.java.svn-base +++ /dev/null @@ -1,227 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMGROUPSUSERS - */ -@Entity(name = "TbpmGroupsUsers") -@Table(name = "TBPMGROUPSUSERS") -public class TbpmGroupsUsers extends com.fp.dto.AbstractDataTransport implements HibernateBean { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmGroupsUsers - */ - @EmbeddedId - private TbpmGroupsUsersKey pk; - - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistick locking del registro - */ - private Integer recordversion; - - /** Contructor por defecto */ - public TbpmGroupsUsers() { - } - - /** - * Contructor de TbpmGroupsUsers - * - * @param pPk Clave Primaria del entity - */ - public TbpmGroupsUsers(TbpmGroupsUsersKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmGroupsUsers - */ - public static TbpmGroupsUsers find(EntityManager pEntityManager, TbpmGroupsUsersKey pKey) throws Exception { - TbpmGroupsUsers obj = pEntityManager.find(TbpmGroupsUsers.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmGroupsUsers - * - * @return El objeto que referencia a la Clave primaria de TbpmGroupsUsers - */ - public TbpmGroupsUsersKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmGroupsUsers - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmGroupsUsers - */ - public void setPk(TbpmGroupsUsersKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmGroupsUsers)) { - return false; - } - TbpmGroupsUsers that = (TbpmGroupsUsers) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TbpmGroupsUsers - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementaci�n toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementaci�n de la creaci�n de un bean en blanco TbpmGroupsUsers */ - @Override - public Object createInstance() { - TbpmGroupsUsers instance = new TbpmGroupsUsers(); - instance.setPk(new TbpmGroupsUsersKey()); - return instance; - } - - /** - * Clona la entidad TbpmGroupsUsers - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmGroupsUsers p = (TbpmGroupsUsers) this.clone(); - p.setPk((TbpmGroupsUsersKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - - /** Sentecia que entrega una lista de TbpmGroupsUsers dado un codigo de grupo. */ - private static final String HQL_USER = "from TbpmGroupsUsers t " + " where t.pk.groupcode = :groupcode order by t.pk.usercode "; - - /** Sentecia que entrega una lista de TbpmGroupsUsers dado un codigo de grupo. */ - private static final String HQL_GROUPS_BY_USER = "from TbpmGroupsUsers t " + " where t.pk.usercode = :user order by t.pk.usercode "; - - /** - * Metodo que entrega una lista de registros de la tabla TbpmGroupsUsers dado un codigo de grupo. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pGroupcode Codigo de grupo a obtener una lista de usuarios. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pGroupcode) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(TbpmGroupsUsers.HQL_USER); - qry.setParameter("groupcode", pGroupcode); - ldata = qry.getResultList(); - return ldata; - } - - /** - * Metodo que entrega una lista de registros de la tabla TbpmGroupsUsers dado un codigo de grupo. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pGroupcode Codigo de grupo a obtener una lista de usuarios. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findGroupsByUser(EntityManager pEntityManager, String pUser) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(TbpmGroupsUsers.HQL_GROUPS_BY_USER); - qry.setParameter("user", pUser); - ldata = qry.getResultList(); - return ldata; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsersKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsersKey.java.svn-base deleted file mode 100644 index cda9b48..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmGroupsUsersKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMGROUPSUSERS*/ -@Embeddable -public class TbpmGroupsUsersKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="GROUPCODE", nullable=false,updatable=false) - -/** -* Codigo de grupo de usuarios de un bpm -*/ -private String groupcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TbpmGroupsUsersKey(){} -/**Contructor de TbpmGroupsUsersKey -@param pUsercode Codigo de usuario -@param pGroupcode Codigo de grupo de usuarios de un bpm -@param pCompanycode Codigo de compania -*/ -public TbpmGroupsUsersKey(String pUsercode,String pGroupcode,Integer pCompanycode){ - usercode=pUsercode; - groupcode=pGroupcode; - companycode=pCompanycode; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de groupcode -@return valor de groupcode*/ -public String getGroupcode(){ - return groupcode; -} -/**Fija el valor de groupcode -@param pGroupcode nuevo Valor de groupcode*/ -public void setGroupcode(String pGroupcode){ - groupcode=pGroupcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TbpmGroupsUsersKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmGroupsUsersKey))return false; - TbpmGroupsUsersKey that = (TbpmGroupsUsersKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getGroupcode() == null || that.getGroupcode() == null){ - return false; - } - if (! this.getGroupcode().equals(that.getGroupcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TbpmGroupsUsersKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getGroupcode() == null ? 0 : this.getGroupcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmLogMail.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmLogMail.java.svn-base deleted file mode 100644 index 67bf305..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmLogMail.java.svn-base +++ /dev/null @@ -1,241 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMLOGMAIL*/ -@Entity(name="TbpmLogMail") -@Table(name="TBPMLOGMAIL") -public class TbpmLogMail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmLogMail -*/ -@Id -@Column(name="CLOGMAIL" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "CLOGMAIL"),//campo secuencial de la tabla - @Parameter(name = "type", value = "java.lang.Long"),// tipo de dato - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "16")}) - @GeneratedValue(generator = "seq_id") -private Long pk; -@Column(name="ESTADO", nullable=true) - -/** -* Estado del envio del mail -*/ -private String estado; - -@Column(name="CORREO", nullable=true) - -/** -* Mail del destinatario -*/ -private String correo; - -@Column(name="FECHAREGISTRO", nullable=true) - -/** -* null -*/ -private Timestamp fecharegistro; - -@Column(name="ASUNTO", nullable=true) - -/** -* Asunto del correo que se esta enviando -*/ -private String asunto; - -@Column(name="CONTENIDO", nullable=true) - -/** -* Contenido del mensaje -*/ -private String contenido; - -@Column(name="DESCRIPCIONERROR", nullable=true) - -/** -* Descripcion del error, que se produjo al tratar de enviar el mail -*/ -private String descripcionerror; - -/**Contructor por defecto*/ -public TbpmLogMail(){ -} -/**Contructor de TbpmLogMail -@param pPk Clave Primaria del entity -*/ -public TbpmLogMail(Long pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmLogMail -*/ -public static TbpmLogMail find(EntityManager pEntityManager,Object pKey) throws Exception{ - TbpmLogMail obj = pEntityManager.find(TbpmLogMail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmLogMail -@return El objeto que referencia a la Clave primaria de TbpmLogMail -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmLogMail -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmLogMail -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de correo -@return valor de correo*/ -public String getCorreo(){ - return correo; -} -/**Fija el valor de correo -@param pCorreo nuevo Valor de correo*/ -public void setCorreo(String pCorreo){ - correo=pCorreo; -} - -/**Obtiene el valor de fecharegistro -@return valor de fecharegistro*/ -public Timestamp getFecharegistro(){ - return fecharegistro; -} -/**Fija el valor de fecharegistro -@param pFecharegistro nuevo Valor de fecharegistro*/ -public void setFecharegistro(Timestamp pFecharegistro){ - fecharegistro=pFecharegistro; -} - -/**Obtiene el valor de asunto -@return valor de asunto*/ -public String getAsunto(){ - return asunto; -} -/**Fija el valor de asunto -@param pAsunto nuevo Valor de asunto*/ -public void setAsunto(String pAsunto){ - asunto=pAsunto; -} - -/**Obtiene el valor de contenido -@return valor de contenido*/ -public String getContenido(){ - return contenido; -} -/**Fija el valor de contenido -@param pContenido nuevo Valor de contenido*/ -public void setContenido(String pContenido){ - contenido=pContenido; -} - -/**Obtiene el valor de descripcionerror -@return valor de descripcionerror*/ -public String getDescripcionerror(){ - return descripcionerror; -} -/**Fija el valor de descripcionerror -@param pDescripcionerror nuevo Valor de descripcionerror*/ -public void setDescripcionerror(String pDescripcionerror){ - descripcionerror=pDescripcionerror; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmLogMail))return false; - TbpmLogMail that = (TbpmLogMail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TbpmLogMail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TbpmLogMail -*/ -public Object createInstance(){ - TbpmLogMail instance=new TbpmLogMail(); - return instance; -} -/**Clona la entidad TbpmLogMail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmLogMail p=(TbpmLogMail)this.clone(); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmNotify.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmNotify.java.svn-base deleted file mode 100644 index c050890..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmNotify.java.svn-base +++ /dev/null @@ -1,302 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; -import javax.persistence.GeneratedValue; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMNOTIFY*/ -@Entity(name="TbpmNotify") -@Table(name="TBPMNOTIFY") -public class TbpmNotify extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmNotify -*/ -@Id -@Column(name="NOTIFYCODE" ,nullable=false, updatable=false) -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "NOTIFYCODE"), @Parameter(name = "type", value = "java.lang.String"), - @Parameter(name = "fill", value = "0"), @Parameter(name = "length", value = "5") }) -@GeneratedValue(generator = "seq_id") -private String pk; -@Column(name="PROCESSCODE", nullable=false) - -/** -* Proceso en el que se encuentra el tramite para envio de notificacion -*/ -private String processcode; - -@Column(name="COMMENTS", nullable=false) - -/** -* El texto de la notificacin. -*/ -private String comments; - -@Column(name="NOTIFYTASK", nullable=false) - -/** -* null -*/ -private String notifytask; - -@Column(name="RESOLUTION", nullable=true) - -/** -* Nro de resolucion en caso de que se requiera -*/ -private String resolution; - -@Column(name="USERWHOREG", nullable=false) - -/** -* Usuario que registro la notificacion -*/ -private String userwhoreg; - -@Column(name="REGISTERDATE", nullable=false) - -/** -* Fecha de Registro -*/ -private Timestamp registerdate; - -@Column(name="NOTIFYTOCATALOG", nullable=true) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String notifytocatalog; - -@Column(name="NOTIFYTOCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String notifytocatalogcode; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TbpmNotify(){ -} -/**Contructor de TbpmNotify -@param pPk Clave Primaria del entity -@param pProcesscode Proceso en el que se encuentra el tramite para envio de notificacion -@param pComments El texto de la notificacin. -@param pNotifytask null -@param pUserwhoreg Usuario que registro la notificacion -@param pRegisterdate Fecha de Registro -*/ -public TbpmNotify(String pPk,String pProcesscode,String pComments,String pNotifytask,String pUserwhoreg,Timestamp pRegisterdate){ - this(); - pk=pPk; - processcode=pProcesscode; - comments=pComments; - notifytask=pNotifytask; - userwhoreg=pUserwhoreg; - registerdate=pRegisterdate; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmNotify -*/ -public static TbpmNotify find(EntityManager pEntityManager,Object pKey) throws Exception{ - TbpmNotify obj = pEntityManager.find(TbpmNotify.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmNotify -@return El objeto que referencia a la Clave primaria de TbpmNotify -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmNotify -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmNotify -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de comments -@return valor de comments*/ -public String getComments(){ - return comments; -} -/**Fija el valor de comments -@param pComments nuevo Valor de comments*/ -public void setComments(String pComments){ - comments=pComments; -} - -/**Obtiene el valor de notifytask -@return valor de notifytask*/ -public String getNotifytask(){ - return notifytask; -} -/**Fija el valor de notifytask -@param pNotifytask nuevo Valor de notifytask*/ -public void setNotifytask(String pNotifytask){ - notifytask=pNotifytask; -} - -/**Obtiene el valor de resolution -@return valor de resolution*/ -public String getResolution(){ - return resolution; -} -/**Fija el valor de resolution -@param pResolution nuevo Valor de resolution*/ -public void setResolution(String pResolution){ - resolution=pResolution; -} - -/**Obtiene el valor de userwhoreg -@return valor de userwhoreg*/ -public String getUserwhoreg(){ - return userwhoreg; -} -/**Fija el valor de userwhoreg -@param pUserwhoreg nuevo Valor de userwhoreg*/ -public void setUserwhoreg(String pUserwhoreg){ - userwhoreg=pUserwhoreg; -} - -/**Obtiene el valor de registerdate -@return valor de registerdate*/ -public Timestamp getRegisterdate(){ - return registerdate; -} -/**Fija el valor de registerdate -@param pRegisterdate nuevo Valor de registerdate*/ -public void setRegisterdate(Timestamp pRegisterdate){ - registerdate=pRegisterdate; -} - -/**Obtiene el valor de notifytocatalog -@return valor de notifytocatalog*/ -public String getNotifytocatalog(){ - return notifytocatalog; -} -/**Fija el valor de notifytocatalog -@param pNotifytocatalog nuevo Valor de notifytocatalog*/ -public void setNotifytocatalog(String pNotifytocatalog){ - notifytocatalog=pNotifytocatalog; -} - -/**Obtiene el valor de notifytocatalogcode -@return valor de notifytocatalogcode*/ -public String getNotifytocatalogcode(){ - return notifytocatalogcode; -} -/**Fija el valor de notifytocatalogcode -@param pNotifytocatalogcode nuevo Valor de notifytocatalogcode*/ -public void setNotifytocatalogcode(String pNotifytocatalogcode){ - notifytocatalogcode=pNotifytocatalogcode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmNotify))return false; - TbpmNotify that = (TbpmNotify) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TbpmNotify -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TbpmNotify -*/ -public Object createInstance(){ - TbpmNotify instance=new TbpmNotify(); - return instance; -} -/**Clona la entidad TbpmNotify -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmNotify p=(TbpmNotify)this.clone(); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessInstance.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessInstance.java.svn-base deleted file mode 100644 index c399d3f..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessInstance.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMPROCESSINSTANCE */ -@Entity(name = "TbpmProcessInstance") -@Table(name = "TBPMPROCESSINSTANCE") -public class TbpmProcessInstance extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmProcessInstance - */ - @Id - @Column(name = "JOURNALID", nullable = false, updatable = false) - private String pk; - - @Column(name = "SESSIONID", nullable = false) - /** - * Codigo de session en las tablas del jbpm asociadas al flujo - */ - private Integer sessionid; - - @Column(name = "PROCESSID", nullable = true) - /** - * Codigo de instancia de proceso asociado a un flujo - */ - private Long processid; - - @Column(name = "FINALIZED", nullable = true) - /** - * Y indica que el flujo esta filizado, N el flujo se esta en proceso - */ - private String finalized; - - @Column(name = "SNAPSHOT", nullable = true) - /** - * Referencia a la base de conocimiento empreada en la creacion del flujo - */ - private String snapshot; - - @Column(name = "CREATIONDATE", nullable = false) - /** - * Fecha de Creación - */ - private Date creationdate; - - @Column(name = "ENDDATE", nullable = true) - /** - * Fecha de Finalización - */ - private Date enddate; - - /** Contructor por defecto */ - public TbpmProcessInstance() { - } - - /** - * Contructor de TbpmProcessInstance - * - * @param pPk Clave Primaria del entity - * @param pSessionid Codigo de session en las tablas del jbpm asociadas al flujo - * @param pCreationdate Fecha de Creación - */ - public TbpmProcessInstance(String pPk, Integer pSessionid, Date pCreationdate) { - this(); - this.pk = pPk; - this.sessionid = pSessionid; - this.creationdate = pCreationdate; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmProcessInstance - */ - public static TbpmProcessInstance find(EntityManager pEntityManager, Object pKey) throws Exception { - TbpmProcessInstance obj = pEntityManager.find(TbpmProcessInstance.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmProcessInstance - * - * @return El objeto que referencia a la Clave primaria de TbpmProcessInstance - */ - public String getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmProcessInstance - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmProcessInstance - */ - public void setPk(String pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de sessionid - * - * @return valor de sessionid - */ - public Integer getSessionid() { - return this.sessionid; - } - - /** - * Fija el valor de sessionid - * - * @param pSessionid nuevo Valor de sessionid - */ - public void setSessionid(Integer pSessionid) { - this.sessionid = pSessionid; - } - - /** - * Obtiene el valor de processid - * - * @return valor de processid - */ - public Long getProcessid() { - return this.processid; - } - - /** - * Fija el valor de processid - * - * @param pProcessid nuevo Valor de processid - */ - public void setProcessid(Long pProcessid) { - this.processid = pProcessid; - } - - /** - * Obtiene el valor de finalized - * - * @return valor de finalized - */ - public String getFinalized() { - return this.finalized; - } - - /** - * Fija el valor de finalized - * - * @param pFinalized nuevo Valor de finalized - */ - public void setFinalized(String pFinalized) { - this.finalized = pFinalized; - } - - /** - * Obtiene el valor de snapshot - * - * @return valor de snapshot - */ - public String getSnapshot() { - return this.snapshot; - } - - /** - * Fija el valor de snapshot - * - * @param pSnapshot nuevo Valor de snapshot - */ - public void setSnapshot(String pSnapshot) { - this.snapshot = pSnapshot; - } - - /** - * Obtiene el valor de creationdate - * - * @return valor de creationdate - */ - public Date getCreationdate() { - return this.creationdate; - } - - /** - * Fija el valor de creationdate - * - * @param pCreationdate nuevo Valor de creationdate - */ - public void setCreationdate(Date pCreationdate) { - this.creationdate = pCreationdate; - } - - /** - * Obtiene el valor de enddate - * - * @return valor de enddate - */ - public Date getEnddate() { - return this.enddate; - } - - /** - * Fija el valor de enddate - * - * @param pEnddate nuevo Valor de enddate - */ - public void setEnddate(Date pEnddate) { - this.enddate = pEnddate; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmProcessInstance)) { - return false; - } - TbpmProcessInstance that = (TbpmProcessInstance) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TbpmProcessInstance - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TbpmProcessInstance */ - @Override - public Object createInstance() { - TbpmProcessInstance instance = new TbpmProcessInstance(); - return instance; - } - - /** - * Clona la entidad TbpmProcessInstance - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmProcessInstance p = (TbpmProcessInstance) this.clone(); - return p; - } - - public static TbpmProcessInstance findByProcessId(EntityManager pEntityManager, long pProcessId) throws Exception { - Query q = pEntityManager.createQuery("from TbpmProcessInstance p where p.processid=:pid"); - q.setParameter("pid", pProcessId); - return (TbpmProcessInstance) q.getSingleResult(); - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariables.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariables.java.svn-base deleted file mode 100644 index f12066c..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariables.java.svn-base +++ /dev/null @@ -1,186 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Lob; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMPROCESSVARIABLES */ -@Entity(name = "TbpmProcessVariables") -@Table(name = "TBPMPROCESSVARIABLES") -public class TbpmProcessVariables extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmProcessVariables - */ - @EmbeddedId - private TbpmProcessVariablesKey pk; - -// @Lob - @Column(name = "CONTENT", nullable = false) - /** - * Valor de la Variable en Formato JSON - */ - private String content; - - /** Contructor por defecto */ - public TbpmProcessVariables() { - } - - /** - * Contructor de TbpmProcessVariables - * - * @param pPk Clave Primaria del entity - * @param pContent Valor de la Variable en Formato JSON - */ - public TbpmProcessVariables(TbpmProcessVariablesKey pPk, String pContent) { - this(); - this.pk = pPk; - this.content = pContent; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmProcessVariables - */ - public static TbpmProcessVariables find(EntityManager pEntityManager, TbpmProcessVariablesKey pKey) throws Exception { - TbpmProcessVariables obj = pEntityManager.find(TbpmProcessVariables.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmProcessVariables - * - * @return El objeto que referencia a la Clave primaria de TbpmProcessVariables - */ - public TbpmProcessVariablesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmProcessVariables - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmProcessVariables - */ - public void setPk(TbpmProcessVariablesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de content - * - * @return valor de content - */ - public String getContent() { - return this.content; - } - - /** - * Fija el valor de content - * - * @param pContent nuevo Valor de content - */ - public void setContent(String pContent) { - this.content = pContent; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmProcessVariables)) { - return false; - } - TbpmProcessVariables that = (TbpmProcessVariables) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TbpmProcessVariables - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TbpmProcessVariables */ - @Override - public Object createInstance() { - TbpmProcessVariables instance = new TbpmProcessVariables(); - instance.setPk(new TbpmProcessVariablesKey()); - return instance; - } - - /** - * Clona la entidad TbpmProcessVariables - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmProcessVariables p = (TbpmProcessVariables) this.clone(); - p.setPk((TbpmProcessVariablesKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariablesKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariablesKey.java.svn-base deleted file mode 100644 index 0a4e6c0..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmProcessVariablesKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMPROCESSVARIABLES*/ -@Embeddable -public class TbpmProcessVariablesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado al a instacioa del flujo. -*/ -private String journalid; - -@Column(name="NAME", nullable=false,updatable=false) - -/** -* Nombre de la Variable -*/ -private String name; - -/**Contructor por defecto*/ -public TbpmProcessVariablesKey(){} -/**Contructor de TbpmProcessVariablesKey -@param pJournalid Numero de mensaje asociado al a instacioa del flujo. -@param pName Nombre de la Variable -*/ -public TbpmProcessVariablesKey(String pJournalid,String pName){ - journalid=pJournalid; - name=pName; -} -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de name -@return valor de name*/ -public String getName(){ - return name; -} -/**Fija el valor de name -@param pName nuevo Valor de name*/ -public void setName(String pName){ - name=pName; -} - -/**Implementacion de la comparacion de TbpmProcessVariablesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmProcessVariablesKey))return false; - TbpmProcessVariablesKey that = (TbpmProcessVariablesKey) o; - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getName() == null || that.getName() == null){ - return false; - } - if (! this.getName().equals(that.getName())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TbpmProcessVariablesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getName() == null ? 0 : this.getName().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRules.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRules.java.svn-base deleted file mode 100644 index 9b48f78..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRules.java.svn-base +++ /dev/null @@ -1,473 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.bpmlib.BPMException; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMRULES */ -@Entity(name = "TbpmRules") -@Table(name = "TBPMRULES") -public class TbpmRules extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TbpmRules - */ - @EmbeddedId - private TbpmRulesKey pk; - - @Column(name = "DESCRIPTION", nullable = true) - /** - * Detalle de lo que hace la regla de negocio - */ - private String description; - - @Column(name = "PACKAGENAME", nullable = true) - /** - * Paquete que contiene la regla de negocio - */ - private String packagename; - - @Column(name = "SNAPSHOT", nullable = true) - /** - * Imagen del paquete que contiene la regla de negocio - */ - private String snapshot; - - @Column(name = "ACTIVE", nullable = true) - /** - * Y Indica que la regla esta activa - */ - private String active; - - @Column(name = "REFRESH", nullable = true) - /** - * Y Indica que se asocia la regla a la base de conocimeintos antes de su ejecucion - */ - private String refresh; - - @Column(name = "PARAMETERTYPE", nullable = true) - /** - * Tipo de dato de parametro a validar ates de disparar la regla - */ - private String parametertype; - - @Column(name = "MESSAGECODE", nullable = true) - /** - * Codigo de plantilla de mensajes - */ - private Integer messagecode; - - @Column(name = "CONTENT", nullable = true) - /** - * null - */ - private byte[] content;; - - @Column(name = "PATH", nullable = true) - /** - * Ubicacion fisica de la regla o flujo - */ - private String path; - - @Column(name = "FILETYPE", nullable = true) - /** - * R Rule, F Flow - */ - private String filetype; - - /** Contructor por defecto */ - public TbpmRules() { - } - - /** - * Contructor de TbpmRules - * - * @param pPk Clave Primaria del entity - */ - public TbpmRules(TbpmRulesKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TbpmRules - */ - public static TbpmRules find(EntityManager pEntityManager, TbpmRulesKey pKey) throws Exception { - TbpmRules obj = pEntityManager.find(TbpmRules.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TbpmRules - * - * @return El objeto que referencia a la Clave primaria de TbpmRules - */ - public TbpmRulesKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TbpmRules - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TbpmRules - */ - public void setPk(TbpmRulesKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de packagename - * - * @return valor de packagename - */ - public String getPackagename() { - return packagename; - } - - /** - * Fija el valor de packagename - * - * @param pPackagename nuevo Valor de packagename - */ - public void setPackagename(String pPackagename) { - packagename = pPackagename; - } - - /** - * Obtiene el valor de snapshot - * - * @return valor de snapshot - */ - public String getSnapshot() { - return snapshot; - } - - /** - * Fija el valor de snapshot - * - * @param pSnapshot nuevo Valor de snapshot - */ - public void setSnapshot(String pSnapshot) { - snapshot = pSnapshot; - } - - /** - * Obtiene el valor de active - * - * @return valor de active - */ - public String getActive() { - return active; - } - - /** - * Fija el valor de active - * - * @param pActive nuevo Valor de active - */ - public void setActive(String pActive) { - active = pActive; - } - - /** - * Obtiene el valor de refresh - * - * @return valor de refresh - */ - public String getRefresh() { - return refresh; - } - - /** - * Fija el valor de refresh - * - * @param pRefresh nuevo Valor de refresh - */ - public void setRefresh(String pRefresh) { - refresh = pRefresh; - } - - /** - * Obtiene el valor de parametertype - * - * @return valor de parametertype - */ - public String getParametertype() { - return parametertype; - } - - /** - * Fija el valor de parametertype - * - * @param pParametertype nuevo Valor de parametertype - */ - public void setParametertype(String pParametertype) { - parametertype = pParametertype; - } - - /** - * Obtiene el valor de messagecode - * - * @return valor de messagecode - */ - public Integer getMessagecode() { - return messagecode; - } - - /** - * Fija el valor de messagecode - * - * @param pMessagecode nuevo Valor de messagecode - */ - public void setMessagecode(Integer pMessagecode) { - messagecode = pMessagecode; - } - - /** - * Obtiene el valor de content - * - * @return valor de content - */ - public byte[] getContent() { - return content; - } - - /** - * Fija el valor de content - * - * @param pContent nuevo Valor de content - */ - public void setContent(byte[] pContent) { - content = pContent; - } - - /** - * Obtiene el valor de path - * - * @return valor de path - */ - public String getPath() { - return path; - } - - /** - * Fija el valor de path - * - * @param pPath nuevo Valor de path - */ - public void setPath(String pPath) { - path = pPath; - } - - /** - * Obtiene el valor de filetype - * - * @return valor de filetype - */ - public String getFiletype() { - return filetype; - } - - /** - * Fija el valor de filetype - * - * @param pFiletype nuevo Valor de filetype - */ - public void setFiletype(String pFiletype) { - filetype = pFiletype; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TbpmRules)) { - return false; - } - TbpmRules that = (TbpmRules) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TbpmRules - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TbpmRules */ - @Override - public Object createInstance() { - TbpmRules instance = new TbpmRules(); - instance.setPk(new TbpmRulesKey()); - return instance; - } - - /** - * Clona la entidad TbpmRules - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TbpmRules p = (TbpmRules) this.clone(); - p.setPk((TbpmRulesKey) this.pk.cloneMe()); - return p; - } - - // MANUALES - - /** Sentecia que entrega una lista de TbpmFieldTransactionOrigin dado un codigo de transaccion. */ - private static final String HQL_BY_SNAPSHOT = "from TbpmRules t where t.packagename = :pkg and t.snapshot = :snp and t.active = 'Y' "; - - /** - * Metodo que entrega una lista de registros de la tabla TbpmRules dado un paquete y snapshot. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pPKG Nombre del Paquete. - * @param pSNP Nombre de la imagen. - * @return List - * @throws Exception - */ - public static TbpmRules find(EntityManager pEntityManager, String pPKG, String pSNP) throws Exception { - Query qry = pEntityManager.createQuery(TbpmRules.HQL_BY_SNAPSHOT); - qry.setParameter("pkg", pPKG); - qry.setParameter("snp", pSNP); - List l = qry.getResultList(); - // TbpmRules r = (TbpmRules) qry.getSingleResult(); - // if (r == null) { - if (l.isEmpty()) { - throw new BPMException("BPM-0003", "NO ESTA DISPONIBLE {0} {1}", pPKG, pSNP); - } - return l.get(0); - } - - /** - * Metodo que entrega una lista de registros de la tabla TbpmRules dado un paquete y snapshot. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pPKG Nombre del Paquete. - * @param pSNP Nombre de la imagen. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findRules(EntityManager pEntityManager, String pPKG, String pSNP) throws Exception { - Query qry = pEntityManager.createQuery(TbpmRules.HQL_BY_SNAPSHOT); - qry.setParameter("pkg", pPKG); - qry.setParameter("snp", pSNP); - List l = qry.getResultList(); - // TbpmRules r = (TbpmRules) qry.getSingleResult(); - // if (r == null) { - if (l.isEmpty()) { - throw new BPMException("BPM-0003", "NO ESTA DISPONIBLE {0} {1}", pPKG, pSNP); - } - return l; - - } - - /** Sentecia que entrega una lista de TbpmFieldTransactionOrigin dado un codigo de transaccion. */ - private static final String HQL_TOTAL = "from TbpmRules t where t.active = 'Y' "; - - /** - * Metodo que entrega una lista de registros de la tabla TbpmRules dado un paquete y snapshot. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findRules(EntityManager pEntityManager) throws Exception { - Query qry = pEntityManager.createQuery(TbpmRules.HQL_TOTAL); - List l = qry.getResultList(); - if (l.isEmpty()) { - throw new BPMException("BPM-0003", "NO ESTA DISPONIBLE"); - } - return l; - } - -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRulesKey.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRulesKey.java.svn-base deleted file mode 100644 index 0aa56ae..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmRulesKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TBPMRULES*/ -@Embeddable -public class TbpmRulesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="RULECODE", nullable=false,updatable=false) - -/** -* Codigo de regla de negocio -*/ -private String rulecode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TbpmRulesKey(){} -/**Contructor de TbpmRulesKey -@param pRulecode Codigo de regla de negocio -@param pCompanycode Codigo de compania -*/ -public TbpmRulesKey(String pRulecode,Integer pCompanycode){ - rulecode=pRulecode; - companycode=pCompanycode; -} -/**Obtiene el valor de rulecode -@return valor de rulecode*/ -public String getRulecode(){ - return rulecode; -} -/**Fija el valor de rulecode -@param pRulecode nuevo Valor de rulecode*/ -public void setRulecode(String pRulecode){ - rulecode=pRulecode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacion de la comparacion de TbpmRulesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TbpmRulesKey))return false; - TbpmRulesKey that = (TbpmRulesKey) o; - if (this.getRulecode() == null || that.getRulecode() == null){ - return false; - } - if (! this.getRulecode().equals(that.getRulecode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TbpmRulesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getRulecode() == null ? 0 : this.getRulecode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmTaskComments.java.svn-base b/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmTaskComments.java.svn-base deleted file mode 100644 index dd3c993..0000000 --- a/base/persistence/pbpm/src/main/java/com/fp/persistence/pbpm/gene/.svn/text-base/TbpmTaskComments.java.svn-base +++ /dev/null @@ -1,199 +0,0 @@ -package com.fp.persistence.pbpm.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TBPMTASKCOMMENTS*/ -@Entity(name="TbpmTaskComments") -@Table(name="TBPMTASKCOMMENTS") -public class TbpmTaskComments extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TbpmTaskComments -*/ -@Id -@Column(name="ID" ,nullable=false, updatable=false) -private Long pk; -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="ADDED", nullable=false) - -/** -* Anadido -*/ -private Date added; - -@Column(name="TEXT", nullable=false) - -/** -* contenido -*/ -private String text; - -@Column(name="TASKID", nullable=false) - -/** -* tarea -*/ -private Long taskid; - -/**Contructor por defecto*/ -public TbpmTaskComments(){ -} -/**Contructor de TbpmTaskComments -@param pPk Clave Primaria del entity -@param pAdded Anadido -@param pText contenido -@param pTaskid tarea -*/ -public TbpmTaskComments(Long pPk,Date pAdded,String pText,Long pTaskid){ - this(); - pk=pPk; - added=pAdded; - text=pText; - taskid=pTaskid; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TbpmTaskComments -*/ -public static TbpmTaskComments find(EntityManager pEntityManager,Object pKey) throws Exception{ - TbpmTaskComments obj = pEntityManager.find(TbpmTaskComments.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TbpmTaskComments -@return El objeto que referencia a la Clave primaria de TbpmTaskComments -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TbpmTaskComments -@param pPk El objeto que referencia a la nueva Clave primaria de TbpmTaskComments -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de added -@return valor de added*/ -public Date getAdded(){ - return added; -} -/**Fija el valor de added -@param pAdded nuevo Valor de added*/ -public void setAdded(Date pAdded){ - added=pAdded; -} - -/**Obtiene el valor de text -@return valor de text*/ -public String getText(){ - return text; -} -/**Fija el valor de text -@param pText nuevo Valor de text*/ -public void setText(String pText){ - text=pText; -} - -/**Obtiene el valor de taskid -@return valor de taskid*/ -public Long getTaskid(){ - return taskid; -} -/**Fija el valor de taskid -@param pTaskid nuevo Valor de taskid*/ -public void setTaskid(Long pTaskid){ - taskid=pTaskid; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TbpmTaskComments))return false; - TbpmTaskComments that = (TbpmTaskComments) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TbpmTaskComments -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TbpmTaskComments -*/ -public Object createInstance(){ - TbpmTaskComments instance=new TbpmTaskComments(); - return instance; -} -/**Clona la entidad TbpmTaskComments -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TbpmTaskComments p=(TbpmTaskComments)this.clone(); - return p; -} -} diff --git a/base/persistence/pbpm/src/main/resources/.svn/entries b/base/persistence/pbpm/src/main/resources/.svn/entries deleted file mode 100644 index a337835..0000000 --- a/base/persistence/pbpm/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pbpm/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pcustomer/.settings/.svn/entries b/base/persistence/pcustomer/.settings/.svn/entries deleted file mode 100644 index 661c7a8..0000000 --- a/base/persistence/pcustomer/.settings/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/.settings -svn://172.17.26.185/COMACO - - - -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -org.eclipse.jdt.core.prefs -file - - - - -2022-07-28T03:40:25.600729Z -9c5661676ceb67312e95b170dcde2dda -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -430 - -org.eclipse.m2e.core.prefs -file - - - - -2022-07-28T03:40:25.600729Z -66985cccd6a27c2401be11bc75d9ea23 -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -90 - -org.eclipse.core.resources.prefs -file - - - - -2022-07-28T03:40:25.601729Z -470db6cc4f0d4d2f382befebd0b0b90c -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -139 - -org.eclipse.wst.common.project.facet.core.xml -file - - - - -2022-07-28T03:40:25.601729Z -15f8d7ec0431c0a6fbea4f6ca024795b -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -172 - -org.hibernate.eclipse.console.prefs -file - - - - -2022-07-28T03:40:25.601729Z -111170a7f7a4052d29b315f3504ffc72 -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -80 - -org.eclipse.wst.common.component -file - - - - -2022-07-28T03:40:25.601729Z -59b1cf8529d45323f5e61b197e44e337 -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -321 - diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base deleted file mode 100644 index 89e6199..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.core.resources.prefs.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -eclipse.preferences.version=1 -encoding//src/main/java=ISO-8859-1 -encoding//src/main/resources=ISO-8859-1 -encoding/=ISO-8859-1 diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base deleted file mode 100644 index c788ee3..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.jdt.core.prefs.svn-base +++ /dev/null @@ -1,8 +0,0 @@ -eclipse.preferences.version=1 -org.eclipse.jdt.core.compiler.codegen.inlineJsrBytecode=enabled -org.eclipse.jdt.core.compiler.codegen.targetPlatform=1.7 -org.eclipse.jdt.core.compiler.compliance=1.7 -org.eclipse.jdt.core.compiler.problem.assertIdentifier=error -org.eclipse.jdt.core.compiler.problem.enumIdentifier=error -org.eclipse.jdt.core.compiler.problem.forbiddenReference=warning -org.eclipse.jdt.core.compiler.source=1.7 diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base deleted file mode 100644 index 14b697b..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.m2e.core.prefs.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -activeProfiles= -eclipse.preferences.version=1 -resolveWorkspaceProjects=true -version=1 diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base deleted file mode 100644 index f275d48..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.component.svn-base +++ /dev/null @@ -1,6 +0,0 @@ - - - - - - diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base deleted file mode 100644 index d788c0d..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.eclipse.wst.common.project.facet.core.xml.svn-base +++ /dev/null @@ -1,5 +0,0 @@ - - - - - diff --git a/base/persistence/pcustomer/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base b/base/persistence/pcustomer/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base deleted file mode 100644 index d9275ad..0000000 --- a/base/persistence/pcustomer/.settings/.svn/text-base/org.hibernate.eclipse.console.prefs.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -default.configuration= -eclipse.preferences.version=1 -hibernate3.enabled=true diff --git a/base/persistence/pcustomer/.svn/dir-prop-base b/base/persistence/pcustomer/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/pcustomer/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/pcustomer/.svn/entries b/base/persistence/pcustomer/.svn/entries deleted file mode 100644 index cd65d93..0000000 --- a/base/persistence/pcustomer/.svn/entries +++ /dev/null @@ -1,170 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -.classpath -file - - - - -2022-07-28T03:40:25.618729Z -ba44b13f85b61103751627c33bd39ff1 -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1299 - -.project -file - - - - -2022-07-28T03:40:25.619729Z -cb014121a85ec9828e657b74728b89ca -2014-11-07T03:37:48.674062Z -2448 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1418 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:25.619729Z -ae4ddfe63de201c39ff0443755a1d22b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -805 - -.settings -dir - -.pmd -file - - - - -2022-07-28T03:40:25.619729Z -a005c8627d2a64c8f23720db011d5372 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18996 - diff --git a/base/persistence/pcustomer/.svn/text-base/.classpath.svn-base b/base/persistence/pcustomer/.svn/text-base/.classpath.svn-base deleted file mode 100644 index 161c246..0000000 --- a/base/persistence/pcustomer/.svn/text-base/.classpath.svn-base +++ /dev/null @@ -1,32 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/base/persistence/pcustomer/.svn/text-base/.pmd.svn-base b/base/persistence/pcustomer/.svn/text-base/.pmd.svn-base deleted file mode 100644 index 2f1733e..0000000 --- a/base/persistence/pcustomer/.svn/text-base/.pmd.svn-base +++ /dev/null @@ -1,601 +0,0 @@ - - - false - .ruleset - - - EmptyIfStmt - Basic Rules - - - EmptyWhileStmt - Basic Rules - - - EmptyTryBlock - Basic Rules - - - EmptyFinallyBlock - Basic Rules - - - EmptySwitchStatements - Basic Rules - - - JumbledIncrementer - Basic Rules - - - ForLoopShouldBeWhileLoop - Basic Rules - - - UnnecessaryConversionTemporary - Basic Rules - - - OverrideBothEqualsAndHashcode - Basic Rules - - - DoubleCheckedLocking - Basic Rules - - - ReturnFromFinallyBlock - Basic Rules - - - EmptySynchronizedBlock - Basic Rules - - - UnnecessaryReturn - Basic Rules - - - EmptyStaticInitializer - Basic Rules - - - UnconditionalIfStatement - Basic Rules - - - EmptyStatementNotInLoop - Basic Rules - - - BooleanInstantiation - Basic Rules - - - UnnecessaryFinalModifier - Basic Rules - - - CollapsibleIfStatements - Basic Rules - - - UselessOverridingMethod - Basic Rules - - - ClassCastExceptionWithToArray - Basic Rules - - - AvoidDecimalLiteralsInBigDecimalConstructor - Basic Rules - - - UselessOperationOnImmutable - Basic Rules - - - MisplacedNullCheck - Basic Rules - - - UnusedNullCheckInEquals - Basic Rules - - - AvoidThreadGroup - Basic Rules - - - BrokenNullCheck - Basic Rules - - - AvoidUsingOctalValues - Basic Rules - - - AvoidUsingHardCodedIP - Basic Rules - - - CheckResultSet - Basic Rules - - - AvoidMultipleUnaryOperators - Basic Rules - - - EmptyInitializer - Basic Rules - - - NPathComplexity - Code Size Rules - - - ExcessiveMethodLength - Code Size Rules - - - NcssMethodCount - Code Size Rules - - - NcssTypeCount - Code Size Rules - - - NcssConstructorCount - Code Size Rules - - - VariableNamingConventions - Naming Rules - - - MethodNamingConventions - Naming Rules - - - ClassNamingConventions - Naming Rules - - - AvoidDollarSigns - Naming Rules - - - MethodWithSameNameAsEnclosingClass - Naming Rules - - - SuspiciousHashcodeMethodName - Naming Rules - - - SuspiciousConstantFieldName - Naming Rules - - - SuspiciousEqualsMethodName - Naming Rules - - - AvoidFieldNameMatchingTypeName - Naming Rules - - - AvoidFieldNameMatchingMethodName - Naming Rules - - - NoPackage - Naming Rules - - - PackageCase - Naming Rules - - - MisleadingVariableName - Naming Rules - - - BooleanGetMethodName - Naming Rules - - - MoreThanOneLogger - Java Logging Rules - - - LoggerIsNotStaticFinal - Java Logging Rules - - - SystemPrintln - Java Logging Rules - - - AvoidPrintStackTrace - Java Logging Rules - - - IfStmtsMustUseBraces - Braces Rules - - - WhileLoopsMustUseBraces - Braces Rules - - - IfElseStmtsMustUseBraces - Braces Rules - - - ForLoopsMustUseBraces - Braces Rules - - - UseSingleton - Design Rules - - - SimplifyBooleanReturns - Design Rules - - - SimplifyBooleanExpressions - Design Rules - - - SwitchStmtsShouldHaveDefault - Design Rules - - - SwitchDensity - Design Rules - - - AccessorClassGeneration - Design Rules - - - FinalFieldCouldBeStatic - Design Rules - - - CloseResource - Design Rules - - - NonStaticInitializer - Design Rules - - - DefaultLabelNotLastInSwitchStmt - Design Rules - - - NonCaseLabelInSwitchStatement - Design Rules - - - OptimizableToArrayCall - Design Rules - - - BadComparison - Design Rules - - - EqualsNull - Design Rules - - - InstantiationToGetClass - Design Rules - - - IdempotentOperations - Design Rules - - - AvoidProtectedFieldInFinalClass - Design Rules - - - MissingStaticMethodInNonInstantiatableClass - Design Rules - - - MissingBreakInSwitch - Design Rules - - - UseNotifyAllInsteadOfNotify - Design Rules - - - AvoidInstanceofChecksInCatchClause - Design Rules - - - AbstractClassWithoutAbstractMethod - Design Rules - - - SimplifyConditional - Design Rules - - - CompareObjectsWithEquals - Design Rules - - - PositionLiteralsFirstInComparisons - Design Rules - - - UnnecessaryLocalBeforeReturn - Design Rules - - - NonThreadSafeSingleton - Design Rules - - - UncommentedEmptyMethod - Design Rules - - - AvoidConstantsInterface - Design Rules - - - UnsynchronizedStaticDateFormatter - Design Rules - - - PreserveStackTrace - Design Rules - - - UseCollectionIsEmpty - Design Rules - - - ClassWithOnlyPrivateConstructorsShouldBeFinal - Design Rules - - - EmptyMethodInAbstractClassShouldBeAbstract - Design Rules - - - SingularField - Design Rules - - - ReturnEmptyArrayRatherThanNull - Design Rules - - - AbstractClassWithoutAnyMethod - Design Rules - - - TooFewBranchesForASwitchStatement - Design Rules - - - ReplaceVectorWithList - Migration Rules - - - ReplaceHashtableWithMap - Migration Rules - - - ReplaceEnumerationWithIterator - Migration Rules - - - AvoidEnumAsIdentifier - Migration Rules - - - AvoidAssertAsIdentifier - Migration Rules - - - IntegerInstantiation - Migration Rules - - - ByteInstantiation - Migration Rules - - - ShortInstantiation - Migration Rules - - - LongInstantiation - Migration Rules - - - JUnit4TestShouldUseBeforeAnnotation - Migration Rules - - - JUnit4TestShouldUseAfterAnnotation - Migration Rules - - - JUnit4TestShouldUseTestAnnotation - Migration Rules - - - JUnit4SuitesShouldUseSuiteAnnotation - Migration Rules - - - JUnitUseExpected - Migration Rules - - - AvoidDuplicateLiterals - String and StringBuffer Rules - - - StringToString - String and StringBuffer Rules - - - InefficientStringBuffering - String and StringBuffer Rules - - - UnnecessaryCaseChange - String and StringBuffer Rules - - - UseStringBufferLength - String and StringBuffer Rules - - - AppendCharacterWithChar - String and StringBuffer Rules - - - ConsecutiveLiteralAppends - String and StringBuffer Rules - - - UseIndexOfChar - String and StringBuffer Rules - - - InefficientEmptyStringCheck - String and StringBuffer Rules - - - InsufficientStringBufferDeclaration - String and StringBuffer Rules - - - UselessStringValueOf - String and StringBuffer Rules - - - StringBufferInstantiationWithChar - String and StringBuffer Rules - - - UseEqualsToCompareStrings - String and StringBuffer Rules - - - AvoidStringBufferField - String and StringBuffer Rules - - - LooseCoupling - Type Resolution Rules - - - CloneMethodMustImplementCloneable - Type Resolution Rules - - - UnusedImports - Type Resolution Rules - - - UnnecessaryConstructor - Controversial Rules - - - UnusedModifier - Controversial Rules - - - AssignmentInOperand - Controversial Rules - - - AtLeastOneConstructor - Controversial Rules - - - DontImportSun - Controversial Rules - - - SuspiciousOctalEscape - Controversial Rules - - - DefaultPackage - Controversial Rules - - - BooleanInversion - Controversial Rules - - - AvoidFinalLocalVariable - Controversial Rules - - - AvoidUsingShortType - Controversial Rules - - - AvoidUsingVolatile - Controversial Rules - - - AvoidUsingNativeCode - Controversial Rules - - - AvoidAccessibilityAlteration - Controversial Rules - - - DoNotCallGarbageCollectionExplicitly - Controversial Rules - - - UnusedPrivateField - Unused Code Rules - - - UnusedLocalVariable - Unused Code Rules - - - UnusedPrivateMethod - Unused Code Rules - - - UnusedFormalParameter - Unused Code Rules - - - AvoidDeeplyNestedIfStmts - Design Rules - - - CyclomaticComplexity - Code Size Rules - - - false - true - diff --git a/base/persistence/pcustomer/.svn/text-base/.project.svn-base b/base/persistence/pcustomer/.svn/text-base/.project.svn-base deleted file mode 100644 index cd8c738..0000000 --- a/base/persistence/pcustomer/.svn/text-base/.project.svn-base +++ /dev/null @@ -1,48 +0,0 @@ - - - pcustomer - - - - - - org.eclipse.wst.common.project.facet.core.builder - - - - - org.eclipse.jdt.core.javabuilder - - - - - org.eclipse.m2e.core.maven2Builder - - - - - org.hibernate.eclipse.console.hibernateBuilder - - - - - org.eclipse.babel.editor.rbeBuilder - - - - - org.eclipse.wst.validation.validationbuilder - - - - - - org.eclipse.jem.workbench.JavaEMFNature - org.eclipse.wst.common.modulecore.ModuleCoreNature - org.eclipse.jdt.core.javanature - org.eclipse.m2e.core.maven2Nature - org.hibernate.eclipse.console.hibernateNature - com.jaspersoft.studio.babel.editor.rbeNature - org.eclipse.wst.common.project.facet.core.nature - - diff --git a/base/persistence/pcustomer/.svn/text-base/pom.xml.svn-base b/base/persistence/pcustomer/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index f3e92bb..0000000 --- a/base/persistence/pcustomer/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,23 +0,0 @@ - - - - persistence - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.persistence - pcustomer - pcustomer - - - com.fp.base.persistence - commondb - 2.1 - jar - - - diff --git a/base/persistence/pcustomer/src/.svn/entries b/base/persistence/pcustomer/src/.svn/entries deleted file mode 100644 index 8a3dccb..0000000 --- a/base/persistence/pcustomer/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/persistence/pcustomer/src/main/.svn/entries b/base/persistence/pcustomer/src/main/.svn/entries deleted file mode 100644 index ed1542e..0000000 --- a/base/persistence/pcustomer/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/persistence/pcustomer/src/main/java/.svn/entries b/base/persistence/pcustomer/src/main/java/.svn/entries deleted file mode 100644 index a48398a..0000000 --- a/base/persistence/pcustomer/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pcustomer/src/main/java/com/.svn/entries b/base/persistence/pcustomer/src/main/java/com/.svn/entries deleted file mode 100644 index 883470d..0000000 --- a/base/persistence/pcustomer/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 72a352a..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index cfec8e0..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pcustomer -dir - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/.svn/entries deleted file mode 100644 index 153a491..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/.svn/entries +++ /dev/null @@ -1,40 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -people -dir - -balance -dir - -company -dir - -gene -dir - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/entries deleted file mode 100644 index b577d40..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/entries +++ /dev/null @@ -1,334 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TcustPersonBalance.java -file - - - - -2022-07-28T03:40:25.225727Z -a4c20f78287634ac9bf027cee1508772 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9506 - -TcustBalanceKey.java -file - - - - -2022-07-28T03:40:25.225727Z -a380d9275df70b8ffeb750ef1e79e302 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3479 - -TcustBalanceAccount.java -file - - - - -2022-07-28T03:40:25.225727Z -0c7deae8655e8b887ceab953128a45d4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9863 - -TcustBalanceAccoLevel.java -file - - - - -2022-07-28T03:40:25.226727Z -d9912da9f03edd24bbe63a7c1447b151 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4634 - -TcustBalanceFinancialKey.java -file - - - - -2022-07-28T03:40:25.226727Z -5bb7d2eda41d7da3b59630f91f24f375 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6944 - -TcustBalance.java -file - - - - -2022-07-28T03:40:25.227727Z -463d3e27e13e9f2f23647e95ae343596 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3580 - -TcustPersonBalanceKey.java -file - - - - -2022-07-28T03:40:25.227727Z -96948cfb0a1852882edb3eae34e94f0c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6125 - -TcustBalanceFinancial.java -file - - - - -2022-07-28T03:40:25.227727Z -d550c11c99e3d75c4e3570f91b3a7ef5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7596 - -TcustBalanceAccountKey.java -file - - - - -2022-07-28T03:40:25.227727Z -7d5244866e0cfa31ac4765550ae4f736 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4578 - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalance.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalance.java.svn-base deleted file mode 100644 index 0b3e871..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalance.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTBALANCE*/ -@Entity(name="TcustBalance") -@Table(name="TCUSTBALANCE") -public class TcustBalance extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustBalance -*/ -@EmbeddedId -private TcustBalanceKey pk; -/**Contructor por defecto*/ -public TcustBalance(){ -} -/**Contructor de TcustBalance -@param pPk Clave Primaria del entity -*/ -public TcustBalance(TcustBalanceKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustBalance -*/ -public static TcustBalance find(EntityManager pEntityManager,TcustBalanceKey pKey) throws Exception{ - TcustBalance obj = pEntityManager.find(TcustBalance.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustBalance -@return El objeto que referencia a la Clave primaria de TcustBalance -*/ -public TcustBalanceKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustBalance -@param pPk El objeto que referencia a la nueva Clave primaria de TcustBalance -*/ -public void setPk(TcustBalanceKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustBalance))return false; - TcustBalance that = (TcustBalance) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TcustBalance -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TcustBalance -*/ -public Object createInstance(){ - TcustBalance instance=new TcustBalance(); - instance.setPk(new TcustBalanceKey()); - return instance; -} -/**Clona la entidad TcustBalance -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustBalance p=(TcustBalance)this.clone(); - p.setPk((TcustBalanceKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccoLevel.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccoLevel.java.svn-base deleted file mode 100644 index 3aadace..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccoLevel.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTBALANCEACCOLEVEL*/ -@Entity(name="TcustBalanceAccoLevel") -@Table(name="TCUSTBALANCEACCOLEVEL") -public class TcustBalanceAccoLevel extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustBalanceAccoLevel -*/ -@Id -@Column(name="ACCOLEVELCODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del nivel de cuenta de balance -*/ -private String description; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TcustBalanceAccoLevel(){ -} -/**Contructor de TcustBalanceAccoLevel -@param pPk Clave Primaria del entity -*/ -public TcustBalanceAccoLevel(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustBalanceAccoLevel -*/ -public static TcustBalanceAccoLevel find(EntityManager pEntityManager,Object pKey) throws Exception{ - TcustBalanceAccoLevel obj = pEntityManager.find(TcustBalanceAccoLevel.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustBalanceAccoLevel -@return El objeto que referencia a la Clave primaria de TcustBalanceAccoLevel -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustBalanceAccoLevel -@param pPk El objeto que referencia a la nueva Clave primaria de TcustBalanceAccoLevel -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustBalanceAccoLevel))return false; - TcustBalanceAccoLevel that = (TcustBalanceAccoLevel) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TcustBalanceAccoLevel -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TcustBalanceAccoLevel -*/ -public Object createInstance(){ - TcustBalanceAccoLevel instance=new TcustBalanceAccoLevel(); - return instance; -} -/**Clona la entidad TcustBalanceAccoLevel -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustBalanceAccoLevel p=(TcustBalanceAccoLevel)this.clone(); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccount.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccount.java.svn-base deleted file mode 100644 index 47adf4e..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccount.java.svn-base +++ /dev/null @@ -1,305 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTBALANCEACCOUNT*/ -@Entity(name = "TcustBalanceAccount") -@Table(name = "TCUSTBALANCEACCOUNT") -public class TcustBalanceAccount extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustBalanceAccount - */ - @EmbeddedId - private TcustBalanceAccountKey pk; - @Column(name = "ACCOLEVELCODE", nullable = true) - /** - * Codigo de nivel de cuenta de balance - */ - private Integer accolevelcode; - @Column(name = "ACCOUNTCATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String accountcatalog; - @Column(name = "ACCOUNTCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String accountcatalogcode; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Descripcion de la cuenta de balance - */ - private String description; - @Column(name = "SIGNACCOUNT", nullable = true) - /** - * S lleva signo la cuenta, N no lleva signo - */ - private String signaccount; - @Column(name = "SIGNVALUE", nullable = true) - /** - * Signo de la cuenta de balnace - */ - private String signvalue; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Manejo de optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "PARAMETERFILE", nullable = true) - /** - * null - */ - private String parameterfile; - - /**Contructor por defecto*/ - public TcustBalanceAccount() { - } - - /**Contructor de TcustBalanceAccount - @param pPk Clave Primaria del entity - */ - public TcustBalanceAccount(TcustBalanceAccountKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustBalanceAccount - */ - public static TcustBalanceAccount find(EntityManager pEntityManager, TcustBalanceAccountKey pKey) throws Exception { - TcustBalanceAccount obj = pEntityManager.find(TcustBalanceAccount.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TcustBalanceAccount - @return El objeto que referencia a la Clave primaria de TcustBalanceAccount - */ - public TcustBalanceAccountKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TcustBalanceAccount - @param pPk El objeto que referencia a la nueva Clave primaria de TcustBalanceAccount - */ - public void setPk(TcustBalanceAccountKey pPk) { - pk = pPk; - } - - /**Obtiene el valor de accolevelcode - @return valor de accolevelcode*/ - public Integer getAccolevelcode() { - return accolevelcode; - } - - /**Fija el valor de accolevelcode - @param pAccolevelcode nuevo Valor de accolevelcode*/ - public void setAccolevelcode(Integer pAccolevelcode) { - accolevelcode = pAccolevelcode; - } - - /**Obtiene el valor de accountcatalog - @return valor de accountcatalog*/ - public String getAccountcatalog() { - return accountcatalog; - } - - /**Fija el valor de accountcatalog - @param pAccountcatalog nuevo Valor de accountcatalog*/ - public void setAccountcatalog(String pAccountcatalog) { - accountcatalog = pAccountcatalog; - } - - /**Obtiene el valor de accountcatalogcode - @return valor de accountcatalogcode*/ - public String getAccountcatalogcode() { - return accountcatalogcode; - } - - /**Fija el valor de accountcatalogcode - @param pAccountcatalogcode nuevo Valor de accountcatalogcode*/ - public void setAccountcatalogcode(String pAccountcatalogcode) { - accountcatalogcode = pAccountcatalogcode; - } - - /**Obtiene el valor de description - @return valor de description*/ - public String getDescription() { - return description; - } - - /**Fija el valor de description - @param pDescription nuevo Valor de description*/ - public void setDescription(String pDescription) { - description = pDescription; - } - - /**Obtiene el valor de signaccount - @return valor de signaccount*/ - public String getSignaccount() { - return signaccount; - } - - /**Fija el valor de signaccount - @param pSignaccount nuevo Valor de signaccount*/ - public void setSignaccount(String pSignaccount) { - signaccount = pSignaccount; - } - - /**Obtiene el valor de signvalue - @return valor de signvalue*/ - public String getSignvalue() { - return signvalue; - } - - /**Fija el valor de signvalue - @param pSignvalue nuevo Valor de signvalue*/ - public void setSignvalue(String pSignvalue) { - signvalue = pSignvalue; - } - - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion() { - return recordversion; - } - - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /**Obtiene el valor de parameterfile - @return valor de parameterfile*/ - public String getParameterfile() { - return parameterfile; - } - - /**Fija el valor de parameterfile - @param pParameterfile nuevo Valor de parameterfile*/ - public void setParameterfile(String pParameterfile) { - parameterfile = pParameterfile; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustBalanceAccount)) { - return false; - } - TcustBalanceAccount that = (TcustBalanceAccount) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacion del metodo hashCode de la la entidad TcustBalanceAccount - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacion toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacion de la creacion de un bean en blanco TcustBalanceAccount - */ - public Object createInstance() { - TcustBalanceAccount instance = new TcustBalanceAccount(); - instance.setPk(new TcustBalanceAccountKey()); - return instance; - } - - /**Clona la entidad TcustBalanceAccount - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustBalanceAccount p = (TcustBalanceAccount) this.clone(); - p.setPk((TcustBalanceAccountKey) this.pk.cloneMe()); - return p; - } - /** - * jpql Que retorna un objeto TcustBalanceAccount a partir de un parametro - * especfico - */ - public static final String JPQL_GET_ACCOUNT_PARAMETER = "from TcustBalanceAccount t where t.parameterfile = :parameter"; - - /** - * Metodo que entrega el Objeto a partir de un campo especfico. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pParameterfile Campo especfico del bean. - * @return - * @throws Exception - */ - public static TcustBalanceAccount findPerParameter(EntityManager pEntityManager, String pParameterfile) throws Exception { - TcustBalanceAccount tcustBalanceAccount = null; - Query qry = pEntityManager.createQuery(JPQL_GET_ACCOUNT_PARAMETER); - qry.setParameter("parameter", pParameterfile); - try { - tcustBalanceAccount = (TcustBalanceAccount) qry.getSingleResult(); - } catch (NoResultException e) { - } - return tcustBalanceAccount; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccountKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccountKey.java.svn-base deleted file mode 100644 index 62bde05..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceAccountKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTBALANCEACCOUNT*/ -@Embeddable -public class TcustBalanceAccountKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNTCODE", nullable=false,updatable=false) - -/** -* Codigo de la cuenta de balance -*/ -private String accountcode; - -@Column(name="BALANCECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String balancecatalog; - -@Column(name="BALANCECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String balancecatalogcode; - -/**Contructor por defecto*/ -public TcustBalanceAccountKey(){} -/**Contructor de TcustBalanceAccountKey -@param pAccountcode Codigo de la cuenta de balance -@param pBalancecatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pBalancecatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -public TcustBalanceAccountKey(String pAccountcode,String pBalancecatalog,String pBalancecatalogcode){ - accountcode=pAccountcode; - balancecatalog=pBalancecatalog; - balancecatalogcode=pBalancecatalogcode; -} -/**Obtiene el valor de accountcode -@return valor de accountcode*/ -public String getAccountcode(){ - return accountcode; -} -/**Fija el valor de accountcode -@param pAccountcode nuevo Valor de accountcode*/ -public void setAccountcode(String pAccountcode){ - accountcode=pAccountcode; -} - -/**Obtiene el valor de balancecatalog -@return valor de balancecatalog*/ -public String getBalancecatalog(){ - return balancecatalog; -} -/**Fija el valor de balancecatalog -@param pBalancecatalog nuevo Valor de balancecatalog*/ -public void setBalancecatalog(String pBalancecatalog){ - balancecatalog=pBalancecatalog; -} - -/**Obtiene el valor de balancecatalogcode -@return valor de balancecatalogcode*/ -public String getBalancecatalogcode(){ - return balancecatalogcode; -} -/**Fija el valor de balancecatalogcode -@param pBalancecatalogcode nuevo Valor de balancecatalogcode*/ -public void setBalancecatalogcode(String pBalancecatalogcode){ - balancecatalogcode=pBalancecatalogcode; -} - -/**Implementacion de la comparacion de TcustBalanceAccountKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustBalanceAccountKey))return false; - TcustBalanceAccountKey that = (TcustBalanceAccountKey) o; - if (this.getAccountcode() == null || that.getAccountcode() == null){ - return false; - } - if (! this.getAccountcode().equals(that.getAccountcode())){ - return false; - } - if (this.getBalancecatalog() == null || that.getBalancecatalog() == null){ - return false; - } - if (! this.getBalancecatalog().equals(that.getBalancecatalog())){ - return false; - } - if (this.getBalancecatalogcode() == null || that.getBalancecatalogcode() == null){ - return false; - } - if (! this.getBalancecatalogcode().equals(that.getBalancecatalogcode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustBalanceAccountKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccountcode() == null ? 0 : this.getAccountcode().hashCode()); - result = result * 37 + (this.getBalancecatalog() == null ? 0 : this.getBalancecatalog().hashCode()); - result = result * 37 + (this.getBalancecatalogcode() == null ? 0 : this.getBalancecatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancial.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancial.java.svn-base deleted file mode 100644 index 3dddec8..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancial.java.svn-base +++ /dev/null @@ -1,295 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTBALANCEFINANCIAL - */ -@Entity(name = "TcustBalanceFinancial") -@Table(name = "TCUSTBALANCEFINANCIAL") -public class TcustBalanceFinancial extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustBalanceFinancial - */ - @EmbeddedId - private TcustBalanceFinancialKey pk; - - @Column(name = "VALUEACCOUNT", nullable = true) - /** - * Saldo de la cuenta en el balance - */ - private BigDecimal valueaccount; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el registro - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del registro - */ - private String modifyuser; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /** - * Contructor por defecto - */ - public TcustBalanceFinancial() { - } - - /** - * Contructor de TcustBalanceFinancial - * - * @param pPk Clave Primaria del entity - */ - public TcustBalanceFinancial(TcustBalanceFinancialKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustBalanceFinancial - */ - public static TcustBalanceFinancial find(EntityManager pEntityManager, TcustBalanceFinancialKey pKey) throws Exception { - TcustBalanceFinancial obj = pEntityManager.find(TcustBalanceFinancial.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustBalanceFinancial - * - * @return El objeto que referencia a la Clave primaria de TcustBalanceFinancial - */ - public TcustBalanceFinancialKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustBalanceFinancial - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustBalanceFinancial - */ - public void setPk(TcustBalanceFinancialKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de valueaccount - * - * @return valor de valueaccount - */ - public BigDecimal getValueaccount() { - return this.valueaccount; - } - - /** - * Fija el valor de valueaccount - * - * @param pValueaccount nuevo Valor de valueaccount - */ - public void setValueaccount(BigDecimal pValueaccount) { - this.valueaccount = pValueaccount; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustBalanceFinancial)) { - return false; - } - TcustBalanceFinancial that = (TcustBalanceFinancial) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementación del metodo hashCode de la la entidad TcustBalanceFinancial - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementación toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementación de la creación de un bean en blanco TcustBalanceFinancial - */ - @Override - public Object createInstance() { - TcustBalanceFinancial instance = new TcustBalanceFinancial(); - instance.setPk(new TcustBalanceFinancialKey()); - return instance; - } - - /** - * Clona la entidad TcustBalanceFinancial - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustBalanceFinancial p = (TcustBalanceFinancial) this.clone(); - p.setPk((TcustBalanceFinancialKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancialKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancialKey.java.svn-base deleted file mode 100644 index 572f211..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceFinancialKey.java.svn-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TCUSTBALANCEFINANCIAL*/ -@Embeddable -public class TcustBalanceFinancialKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="ACCOUNTCODE", nullable=false,updatable=false) - -/** -* Codigo de la cuenta de balance -*/ -private String accountcode; - -@Column(name="BALANCECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String balancecatalog; - -@Column(name="BALANCECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String balancecatalogcode; - -@Column(name="BALANCEDATE", nullable=false,updatable=false) - -/** -* Fecha de balance -*/ -private Date balancedate; - -/**Contructor por defecto*/ -public TcustBalanceFinancialKey(){} -/**Contructor de TcustBalanceFinancialKey -@param pDateto Fecha hasta la cual esta vigente el registro -@param pPersoncode Codigo de persona -@param pAccountcode Codigo de la cuenta de balance -@param pBalancecatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pBalancecatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pBalancedate Fecha de balance -*/ -public TcustBalanceFinancialKey(Timestamp pDateto,Integer pPersoncode,String pAccountcode,String pBalancecatalog,String pBalancecatalogcode,Date pBalancedate){ - dateto=pDateto; - personcode=pPersoncode; - accountcode=pAccountcode; - balancecatalog=pBalancecatalog; - balancecatalogcode=pBalancecatalogcode; - balancedate=pBalancedate; -} -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de accountcode -@return valor de accountcode*/ -public String getAccountcode(){ - return accountcode; -} -/**Fija el valor de accountcode -@param pAccountcode nuevo Valor de accountcode*/ -public void setAccountcode(String pAccountcode){ - accountcode=pAccountcode; -} - -/**Obtiene el valor de balancecatalog -@return valor de balancecatalog*/ -public String getBalancecatalog(){ - return balancecatalog; -} -/**Fija el valor de balancecatalog -@param pBalancecatalog nuevo Valor de balancecatalog*/ -public void setBalancecatalog(String pBalancecatalog){ - balancecatalog=pBalancecatalog; -} - -/**Obtiene el valor de balancecatalogcode -@return valor de balancecatalogcode*/ -public String getBalancecatalogcode(){ - return balancecatalogcode; -} -/**Fija el valor de balancecatalogcode -@param pBalancecatalogcode nuevo Valor de balancecatalogcode*/ -public void setBalancecatalogcode(String pBalancecatalogcode){ - balancecatalogcode=pBalancecatalogcode; -} - -/**Obtiene el valor de balancedate -@return valor de balancedate*/ -public Date getBalancedate(){ - return balancedate; -} -/**Fija el valor de balancedate -@param pBalancedate nuevo Valor de balancedate*/ -public void setBalancedate(Date pBalancedate){ - balancedate=pBalancedate; -} - -/**Implementación de la comparación de TcustBalanceFinancialKey -@param o Objeto de comparación -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustBalanceFinancialKey))return false; - TcustBalanceFinancialKey that = (TcustBalanceFinancialKey) o; - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getAccountcode() == null || that.getAccountcode() == null){ - return false; - } - if (! this.getAccountcode().equals(that.getAccountcode())){ - return false; - } - if (this.getBalancecatalog() == null || that.getBalancecatalog() == null){ - return false; - } - if (! this.getBalancecatalog().equals(that.getBalancecatalog())){ - return false; - } - if (this.getBalancecatalogcode() == null || that.getBalancecatalogcode() == null){ - return false; - } - if (! this.getBalancecatalogcode().equals(that.getBalancecatalogcode())){ - return false; - } - if (this.getBalancedate() == null || that.getBalancedate() == null){ - return false; - } - if (! this.getBalancedate().equals(that.getBalancedate())){ - return false; - } - return true; -} -/**Implementación del método hashCode bajo el patrón de Bloch -@return hashCode de la instancia TcustBalanceFinancialKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getAccountcode() == null ? 0 : this.getAccountcode().hashCode()); - result = result * 37 + (this.getBalancecatalog() == null ? 0 : this.getBalancecatalog().hashCode()); - result = result * 37 + (this.getBalancecatalogcode() == null ? 0 : this.getBalancecatalogcode().hashCode()); - result = result * 37 + (this.getBalancedate() == null ? 0 : this.getBalancedate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementación toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceKey.java.svn-base deleted file mode 100644 index f3b7d65..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustBalanceKey.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TCUSTBALANCE*/ -@Embeddable -public class TcustBalanceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="BALANCEDATE", nullable=false,updatable=false) - -/** -* Fecha de balance financiero -*/ -private Date balancedate; - -/**Contructor por defecto*/ -public TcustBalanceKey(){} -/**Contructor de TcustBalanceKey -@param pPersoncode Codigo de persona -@param pBalancedate Fecha de balance financiero -*/ -public TcustBalanceKey(Integer pPersoncode,Date pBalancedate){ - personcode=pPersoncode; - balancedate=pBalancedate; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de balancedate -@return valor de balancedate*/ -public Date getBalancedate(){ - return balancedate; -} -/**Fija el valor de balancedate -@param pBalancedate nuevo Valor de balancedate*/ -public void setBalancedate(Date pBalancedate){ - balancedate=pBalancedate; -} - -/**Implementacin de la comparacin de TcustBalanceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustBalanceKey))return false; - TcustBalanceKey that = (TcustBalanceKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getBalancedate() == null || that.getBalancedate() == null){ - return false; - } - if (! this.getBalancedate().equals(that.getBalancedate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustBalanceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getBalancedate() == null ? 0 : this.getBalancedate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalance.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalance.java.svn-base deleted file mode 100644 index 0e0646b..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalance.java.svn-base +++ /dev/null @@ -1,379 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import com.fp.dto.hb.Cache; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPERSONBALANCE - */ -@Entity(name = "TcustPersonBalance") -@Table(name = "TCUSTPERSONBALANCE") -public class TcustPersonBalance extends com.fp.dto.AbstractDataTransport - implements Serializable, HibernateBean, Cloneable, Cache, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPersonBalance - */ - @EmbeddedId - private TcustPersonBalanceKey pk; - @Column(name = "STATUSCATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String statuscatalog; - @Column(name = "STATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String statuscatalogcode; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "COMPANYCODE", nullable = true) - /** - * Codigo de compania - */ - private Integer companycode; - @Column(name = "CODE", nullable = true) - /** - * Codigo de imagen. - */ - private Integer code; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el registro - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del registro - */ - private String modifyuser; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /** - * Contructor por defecto - */ - public TcustPersonBalance() { - } - - /** - * Contructor de TcustPersonBalance - * - * @param pPk Clave Primaria del entity - */ - public TcustPersonBalance(TcustPersonBalanceKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPersonBalance - */ - public static TcustPersonBalance find(EntityManager pEntityManager, TcustPersonBalanceKey pKey) throws Exception { - TcustPersonBalance obj = pEntityManager.find(TcustPersonBalance.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPersonBalance - * - * @return El objeto que referencia a la Clave primaria de - * TcustPersonBalance - */ - public TcustPersonBalanceKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPersonBalance - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPersonBalance - */ - public void setPk(TcustPersonBalanceKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de statuscatalog - * - * @return valor de statuscatalog - */ - public String getStatuscatalog() { - return statuscatalog; - } - - /** - * Fija el valor de statuscatalog - * - * @param pStatuscatalog nuevo Valor de statuscatalog - */ - public void setStatuscatalog(String pStatuscatalog) { - statuscatalog = pStatuscatalog; - } - - /** - * Obtiene el valor de statuscatalogcode - * - * @return valor de statuscatalogcode - */ - public String getStatuscatalogcode() { - return statuscatalogcode; - } - - /** - * Fija el valor de statuscatalogcode - * - * @param pStatuscatalogcode nuevo Valor de statuscatalogcode - */ - public void setStatuscatalogcode(String pStatuscatalogcode) { - statuscatalogcode = pStatuscatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de companycode - * - * @return valor de companycode - */ - public Integer getCompanycode() { - return companycode; - } - - /** - * Fija el valor de companycode - * - * @param pCompanycode nuevo Valor de companycode - */ - public void setCompanycode(Integer pCompanycode) { - companycode = pCompanycode; - } - - /** - * Obtiene el valor de code - * - * @return valor de code - */ - public Integer getCode() { - return code; - } - - /** - * Fija el valor de code - * - * @param pCode nuevo Valor de code - */ - public void setCode(Integer pCode) { - code = pCode; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPersonBalance)) { - return false; - } - TcustPersonBalance that = (TcustPersonBalance) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementación del metodo hashCode de la la entidad TcustPersonBalance - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementación toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementación de la creación de un bean en blanco TcustPersonBalance - */ - public Object createInstance() { - TcustPersonBalance instance = new TcustPersonBalance(); - instance.setPk(new TcustPersonBalanceKey()); - return instance; - } - - /** - * Clona la entidad TcustPersonBalance - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustPersonBalance p = (TcustPersonBalance) this.clone(); - p.setPk((TcustPersonBalanceKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalanceKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalanceKey.java.svn-base deleted file mode 100644 index 88dbea1..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/balance/.svn/text-base/TcustPersonBalanceKey.java.svn-base +++ /dev/null @@ -1,211 +0,0 @@ -package com.fp.persistence.pcustomer.balance; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONBALANCE*/ -@Embeddable -public class TcustPersonBalanceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="BALANCEDATE", nullable=false,updatable=false) - -/** -* Fecha de balance -*/ -private Date balancedate; - -@Column(name="BALANCECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String balancecatalog; - -@Column(name="BALANCECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String balancecatalogcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPersonBalanceKey(){} -/**Contructor de TcustPersonBalanceKey -@param pPersoncode Codigo de persona -@param pBalancedate Fecha de balance -@param pBalancecatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pBalancecatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TcustPersonBalanceKey(Integer pPersoncode,Date pBalancedate,String pBalancecatalog,String pBalancecatalogcode,Timestamp pDateto){ - personcode=pPersoncode; - balancedate=pBalancedate; - balancecatalog=pBalancecatalog; - balancecatalogcode=pBalancecatalogcode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de balancedate -@return valor de balancedate*/ -public Date getBalancedate(){ - return balancedate; -} -/**Fija el valor de balancedate -@param pBalancedate nuevo Valor de balancedate*/ -public void setBalancedate(Date pBalancedate){ - balancedate=pBalancedate; -} - -/**Obtiene el valor de balancecatalog -@return valor de balancecatalog*/ -public String getBalancecatalog(){ - return balancecatalog; -} -/**Fija el valor de balancecatalog -@param pBalancecatalog nuevo Valor de balancecatalog*/ -public void setBalancecatalog(String pBalancecatalog){ - balancecatalog=pBalancecatalog; -} - -/**Obtiene el valor de balancecatalogcode -@return valor de balancecatalogcode*/ -public String getBalancecatalogcode(){ - return balancecatalogcode; -} -/**Fija el valor de balancecatalogcode -@param pBalancecatalogcode nuevo Valor de balancecatalogcode*/ -public void setBalancecatalogcode(String pBalancecatalogcode){ - balancecatalogcode=pBalancecatalogcode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementación de la comparación de TcustPersonBalanceKey -@param o Objeto de comparación -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonBalanceKey))return false; - TcustPersonBalanceKey that = (TcustPersonBalanceKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getBalancedate() == null || that.getBalancedate() == null){ - return false; - } - if (! this.getBalancedate().equals(that.getBalancedate())){ - return false; - } - if (this.getBalancecatalog() == null || that.getBalancecatalog() == null){ - return false; - } - if (! this.getBalancecatalog().equals(that.getBalancecatalog())){ - return false; - } - if (this.getBalancecatalogcode() == null || that.getBalancecatalogcode() == null){ - return false; - } - if (! this.getBalancecatalogcode().equals(that.getBalancecatalogcode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementación del método hashCode bajo el patrón de Bloch -@return hashCode de la instancia TcustPersonBalanceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getBalancedate() == null ? 0 : this.getBalancedate().hashCode()); - result = result * 37 + (this.getBalancecatalog() == null ? 0 : this.getBalancecatalog().hashCode()); - result = result * 37 + (this.getBalancecatalogcode() == null ? 0 : this.getBalancecatalogcode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementación toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/entries deleted file mode 100644 index 9236ecc..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/entries +++ /dev/null @@ -1,912 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company -svn://172.17.26.185/COMACO - - - -2014-11-11T07:08:22.962666Z -2603 -ogarcia - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TcustCompanyClientKey.java -file - - - - -2022-07-28T03:40:25.300728Z -81659d04ae4f372d19b09bf683753b59 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4461 - -TcustFamiliarlLink.java -file - - - - -2022-07-28T03:40:25.300728Z -5d83dacb02e07d9b4f5d6de9b55fee88 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10188 - -TcustCompanyKey.java -file - - - - -2022-07-28T03:40:25.300728Z -d9126540f34547425c59203922133771 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3508 - -TcustCompanyProvider.java -file - - - - -2022-07-28T03:40:25.301728Z -ae9d0cd78881b301dfd18bcd7d2d2da6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13481 - -TcustFinancialInstitutions.java -file - - - - -2022-07-28T03:40:25.301728Z -d0ddafefe3547dedbd96ce51935a10b1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4846 - -TcustSupervisor.java -file - - - - -2022-07-28T03:40:25.301728Z -d0441e3265f42e52b8ab72b0da991975 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5211 - -TcustEconomicGroupKey.java -file - - - - -2022-07-28T03:40:25.301728Z -3d56a2c7c26a1e170e450abc15bd9037 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4396 - -TcustCompanyManagers.java -file - - - - -2022-07-28T03:40:25.302728Z -f5c78df572f4d8c3d2726073822c26e5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12166 - -TcustCompanyFinancialKey.java -file - - - - -2022-07-28T03:40:25.302728Z -a20a4444571a07512d1ca79e71a437e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3596 - -TcustCompanyBranch.java -file - - - - -2022-07-28T03:40:25.302728Z -76542d92bbc29e93bdb4889d73cc861e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9040 - -TcustAppraiser.java -file - - - - -2022-07-28T03:40:25.302728Z -845b1fc37f2c2210c2d2cf39bcdb670b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4613 - -TcustFamiliarlLinkKey.java -file - - - - -2022-07-28T03:40:25.303728Z -3b32b9d536ab1662e201b1a93bea9d0a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3577 - -TcustInsurance.java -file - - - - -2022-07-28T03:40:25.303728Z -df7cfd7e9a66ae3aef5528980c988a08 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4510 - -TcustNotaryOffice.java -file - - - - -2022-07-28T03:40:25.303728Z -5e69f6b1cddf067d67959755c5e10a27 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4588 - -TcustCompanyProducts.java -file - - - - -2022-07-28T03:40:25.303728Z -cccf04100adf64f64f41a26f9fc62b57 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11818 - -TcustCompanyProviderKey.java -file - - - - -2022-07-28T03:40:25.304728Z -27ae2f7c5bedefde0e64c576a9453d01 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4531 - -TcustCompanyManagersKey.java -file - - - - -2022-07-28T03:40:25.304728Z -cd590c279283feb66aefa13f29561505 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6542 - -TcustCompanyBranchKey.java -file - - - - -2022-07-28T03:40:25.304728Z -be6d0e899e7500f4ddd98716687cfa79 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4465 - -TcustAppraiserKey.java -file - - - - -2022-07-28T03:40:25.305728Z -6d922b53515e1bf1c47550379ed202d1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3470 - -TcustLegalLink.java -file - - - - -2022-07-28T03:40:25.305728Z -abc733cef10742884f5d48b1daad8a29 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9106 - -TcustCompanyProductsKey.java -file - - - - -2022-07-28T03:40:25.305728Z -edba6d4bbe0a0c2d68731665ad9a87a5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4508 - -TcustCompanyClient.java -file - - - - -2022-07-28T03:40:25.305728Z -00b258744e08eef83052593f8d048799 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13304 - -TcustCompany.java -file - - - - -2022-07-28T03:40:25.306728Z -297ec278ae4b70dfb5cfed4dcf12699f -2014-11-11T07:08:22.962666Z -2603 -ogarcia - - - - - - - - - - - - - - - - - - - - - -19533 - -TcustEconomicGroup.java -file - - - - -2022-07-28T03:40:25.306728Z -6e38db2ce8ba6116d26bb85f5d7612f0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7043 - -TcustCompanyFinancial.java -file - - - - -2022-07-28T03:40:25.306728Z -2eb61535fe467c801616d17cf029e629 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -17596 - -TcustLegalLinkKey.java -file - - - - -2022-07-28T03:40:25.307728Z -bbe5cea658b8d01a3c4fd22000073101 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5028 - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiser.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiser.java.svn-base deleted file mode 100644 index 40a312a..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiser.java.svn-base +++ /dev/null @@ -1,162 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import com.fp.dto.hb.Log; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTAPPRAISER - */ -@Entity(name = "TcustAppraiser") -@Table(name = "TCUSTAPPRAISER") -public class TcustAppraiser extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustAppraiser - */ - @EmbeddedId - private TcustAppraiserKey pk; - - /** - * Contructor por defecto - */ - public TcustAppraiser() { - } - - /** - * Contructor de TcustAppraiser - * - * @param pPk Clave Primaria del entity - */ - public TcustAppraiser(TcustAppraiserKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustAppraiser - */ - public static TcustAppraiser find(EntityManager pEntityManager, TcustAppraiserKey pKey) throws Exception { - TcustAppraiser obj = pEntityManager.find(TcustAppraiser.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustAppraiser - * - * @return El objeto que referencia a la Clave primaria de TcustAppraiser - */ - public TcustAppraiserKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustAppraiser - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustAppraiser - */ - public void setPk(TcustAppraiserKey pPk) { - pk = pPk; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustAppraiser)) { - return false; - } - TcustAppraiser that = (TcustAppraiser) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustAppraiser - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustAppraiser - */ - public Object createInstance() { - TcustAppraiser instance = new TcustAppraiser(); - instance.setPk(new TcustAppraiserKey()); - return instance; - } - - /** - * Clona la entidad TcustAppraiser - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustAppraiser p = (TcustAppraiser) this.clone(); - p.setPk((TcustAppraiserKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiserKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiserKey.java.svn-base deleted file mode 100644 index 91dc3f0..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustAppraiserKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTAPPRAISER*/ -@Embeddable -public class TcustAppraiserKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TcustAppraiserKey(){} -/**Contructor de TcustAppraiserKey -@param pPersoncode Codigo de persona -@param pCompanycode Codigo de compania -*/ -public TcustAppraiserKey(Integer pPersoncode,Integer pCompanycode){ - personcode=pPersoncode; - companycode=pCompanycode; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TcustAppraiserKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustAppraiserKey))return false; - TcustAppraiserKey that = (TcustAppraiserKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustAppraiserKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompany.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompany.java.svn-base deleted file mode 100644 index 60419a3..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompany.java.svn-base +++ /dev/null @@ -1,726 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTCOMPANY - */ -@Entity(name = "TcustCompany") -@Table(name = "TCUSTCOMPANY") -public class TcustCompany extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustCompany - */ - @EmbeddedId - private TcustCompanyKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro. - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro. - */ - private Integer recordversion; - @Column(name = "BUSINESSTYPECATALOG", nullable = true) - /** - * Codigo de catalogo de tipo de empresa, 1 Con fines de lucro, 2 Sin fines - * de lucro - */ - private String businesstypecatalog; - @Column(name = "BUSINESSTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo de tipo de empresa BUSINESSTYPE - */ - private String businesstypecatalogcode; - @Column(name = "BUSINESSCLASSCATALOG", nullable = true) - /** - * Codigo de catalogo de clase de empresa 1, Pequenia, 2 Mediana - */ - private String businessclasscatalog; - @Column(name = "BUSINESSCLASSCATALOGCODE", nullable = true) - /** - * Codigo de catalogo de clase de empresa BUSINESSCLASS - */ - private String businessclasscatalogcode; - @Column(name = "INSTITUTIONTYPECATALOG", nullable = true) - /** - * Codigo de catalogo de tipo de institucion, 1 banco, 2 cooperativa, 3 - * grupo solidario - */ - private String institutiontypecatalog; - @Column(name = "INSTITUTIONTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo de tipo de institucion INSTITUTIONTYPE - */ - private String institutiontypecatalogcode; - @Column(name = "OPERATIVESTATUSCATALOG", nullable = true) - /** - * Codigo de catalogo 1 Disuelto, 2 Suspendido, 3 Vigente - */ - private String operativestatuscatalog; - @Column(name = "OPERATIVESTATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo OPERATIVESTATUS estatus operativo - */ - private String operativestatuscatalogcode; - @Column(name = "COMMERCIALREGISTER", nullable = true) - /** - * Numero de registro mercantil. - */ - private String commercialregister; - @Column(name = "EMPLOYERCODE", nullable = true) - /** - * Codigo de empleador - */ - private String employercode; - @Column(name = "CONSTITUTIONDATE", nullable = true) - /** - * Fecha de constitucion. - */ - private Date constitutiondate; - @Column(name = "EXPIRATIONDATE", nullable = true) - /** - * Fecha de vencimiento de la compania. - */ - private Date expirationdate; - @Column(name = "EMPLOYEENUMBER", nullable = true) - /** - * Numero de empleados - */ - private Integer employeenumber; - @Column(name = "NOMINALCAPITAL", nullable = true) - /** - * Capittal nominal. - */ - private BigDecimal nominalcapital; - @Column(name = "ORIGINALCAPITAL", nullable = true) - /** - * Capital original. - */ - private BigDecimal originalcapital; - @Column(name = "CONTRIBUTEDCAPITAL", nullable = true) - /** - * Capital suscrito - */ - private BigDecimal contributedcapital; - @Column(name = "CORPORATEPURPOSE", nullable = true) - /** - * Proposito general de la empresa. - */ - private String corporatepurpose; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - @Column(name = "MEMBERSNUMBER", nullable = true) - /** - * Numero de socios - */ - private Integer membersnumber; - @Column(name = "LOGO", nullable = true) - /** - * Codigo de imagen - */ - private Integer logo; - - @Column(name = "PICTURE", nullable = true) - /** - * Imagen - */ - private byte[] picture; - - /** - * Contructor por defecto - */ - public TcustCompany() { - } - - /** - * Contructor de TcustCompany - * - * @param pPk Clave Primaria del entity - */ - public TcustCompany(TcustCompanyKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompany - */ - public static TcustCompany find(EntityManager pEntityManager, TcustCompanyKey pKey) throws Exception { - TcustCompany obj = pEntityManager.find(TcustCompany.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompany - * - * @return El objeto que referencia a la Clave primaria de TcustCompany - */ - public TcustCompanyKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompany - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustCompany - */ - public void setPk(TcustCompanyKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de businesstypecatalog - * - * @return valor de businesstypecatalog - */ - public String getBusinesstypecatalog() { - return businesstypecatalog; - } - - /** - * Fija el valor de businesstypecatalog - * - * @param pBusinesstypecatalog nuevo Valor de businesstypecatalog - */ - public void setBusinesstypecatalog(String pBusinesstypecatalog) { - businesstypecatalog = pBusinesstypecatalog; - } - - /** - * Obtiene el valor de businesstypecatalogcode - * - * @return valor de businesstypecatalogcode - */ - public String getBusinesstypecatalogcode() { - return businesstypecatalogcode; - } - - /** - * Fija el valor de businesstypecatalogcode - * - * @param pBusinesstypecatalogcode nuevo Valor de businesstypecatalogcode - */ - public void setBusinesstypecatalogcode(String pBusinesstypecatalogcode) { - businesstypecatalogcode = pBusinesstypecatalogcode; - } - - /** - * Obtiene el valor de businessclasscatalog - * - * @return valor de businessclasscatalog - */ - public String getBusinessclasscatalog() { - return businessclasscatalog; - } - - /** - * Fija el valor de businessclasscatalog - * - * @param pBusinessclasscatalog nuevo Valor de businessclasscatalog - */ - public void setBusinessclasscatalog(String pBusinessclasscatalog) { - businessclasscatalog = pBusinessclasscatalog; - } - - /** - * Obtiene el valor de businessclasscatalogcode - * - * @return valor de businessclasscatalogcode - */ - public String getBusinessclasscatalogcode() { - return businessclasscatalogcode; - } - - /** - * Fija el valor de businessclasscatalogcode - * - * @param pBusinessclasscatalogcode nuevo Valor de businessclasscatalogcode - */ - public void setBusinessclasscatalogcode(String pBusinessclasscatalogcode) { - businessclasscatalogcode = pBusinessclasscatalogcode; - } - - /** - * Obtiene el valor de institutiontypecatalog - * - * @return valor de institutiontypecatalog - */ - public String getInstitutiontypecatalog() { - return institutiontypecatalog; - } - - /** - * Fija el valor de institutiontypecatalog - * - * @param pInstitutiontypecatalog nuevo Valor de institutiontypecatalog - */ - public void setInstitutiontypecatalog(String pInstitutiontypecatalog) { - institutiontypecatalog = pInstitutiontypecatalog; - } - - /** - * Obtiene el valor de institutiontypecatalogcode - * - * @return valor de institutiontypecatalogcode - */ - public String getInstitutiontypecatalogcode() { - return institutiontypecatalogcode; - } - - /** - * Fija el valor de institutiontypecatalogcode - * - * @param pInstitutiontypecatalogcode nuevo Valor de - * institutiontypecatalogcode - */ - public void setInstitutiontypecatalogcode(String pInstitutiontypecatalogcode) { - institutiontypecatalogcode = pInstitutiontypecatalogcode; - } - - /** - * Obtiene el valor de operativestatuscatalog - * - * @return valor de operativestatuscatalog - */ - public String getOperativestatuscatalog() { - return operativestatuscatalog; - } - - /** - * Fija el valor de operativestatuscatalog - * - * @param pOperativestatuscatalog nuevo Valor de operativestatuscatalog - */ - public void setOperativestatuscatalog(String pOperativestatuscatalog) { - operativestatuscatalog = pOperativestatuscatalog; - } - - /** - * Obtiene el valor de operativestatuscatalogcode - * - * @return valor de operativestatuscatalogcode - */ - public String getOperativestatuscatalogcode() { - return operativestatuscatalogcode; - } - - /** - * Fija el valor de operativestatuscatalogcode - * - * @param pOperativestatuscatalogcode nuevo Valor de - * operativestatuscatalogcode - */ - public void setOperativestatuscatalogcode(String pOperativestatuscatalogcode) { - operativestatuscatalogcode = pOperativestatuscatalogcode; - } - - /** - * Obtiene el valor de commercialregister - * - * @return valor de commercialregister - */ - public String getCommercialregister() { - return commercialregister; - } - - /** - * Fija el valor de commercialregister - * - * @param pCommercialregister nuevo Valor de commercialregister - */ - public void setCommercialregister(String pCommercialregister) { - commercialregister = pCommercialregister; - } - - /** - * Obtiene el valor de employercode - * - * @return valor de employercode - */ - public String getEmployercode() { - return employercode; - } - - /** - * Fija el valor de employercode - * - * @param pEmployercode nuevo Valor de employercode - */ - public void setEmployercode(String pEmployercode) { - employercode = pEmployercode; - } - - /** - * Obtiene el valor de constitutiondate - * - * @return valor de constitutiondate - */ - public Date getConstitutiondate() { - return constitutiondate; - } - - /** - * Fija el valor de constitutiondate - * - * @param pConstitutiondate nuevo Valor de constitutiondate - */ - public void setConstitutiondate(Date pConstitutiondate) { - constitutiondate = pConstitutiondate; - } - - /** - * Obtiene el valor de expirationdate - * - * @return valor de expirationdate - */ - public Date getExpirationdate() { - return expirationdate; - } - - /** - * Fija el valor de expirationdate - * - * @param pExpirationdate nuevo Valor de expirationdate - */ - public void setExpirationdate(Date pExpirationdate) { - expirationdate = pExpirationdate; - } - - /** - * Obtiene el valor de employeenumber - * - * @return valor de employeenumber - */ - public Integer getEmployeenumber() { - return employeenumber; - } - - /** - * Fija el valor de employeenumber - * - * @param pEmployeenumber nuevo Valor de employeenumber - */ - public void setEmployeenumber(Integer pEmployeenumber) { - employeenumber = pEmployeenumber; - } - - /** - * Obtiene el valor de nominalcapital - * - * @return valor de nominalcapital - */ - public BigDecimal getNominalcapital() { - return nominalcapital; - } - - /** - * Fija el valor de nominalcapital - * - * @param pNominalcapital nuevo Valor de nominalcapital - */ - public void setNominalcapital(BigDecimal pNominalcapital) { - nominalcapital = pNominalcapital; - } - - /** - * Obtiene el valor de originalcapital - * - * @return valor de originalcapital - */ - public BigDecimal getOriginalcapital() { - return originalcapital; - } - - /** - * Fija el valor de originalcapital - * - * @param pOriginalcapital nuevo Valor de originalcapital - */ - public void setOriginalcapital(BigDecimal pOriginalcapital) { - originalcapital = pOriginalcapital; - } - - /** - * Obtiene el valor de contributedcapital - * - * @return valor de contributedcapital - */ - public BigDecimal getContributedcapital() { - return contributedcapital; - } - - /** - * Fija el valor de contributedcapital - * - * @param pContributedcapital nuevo Valor de contributedcapital - */ - public void setContributedcapital(BigDecimal pContributedcapital) { - contributedcapital = pContributedcapital; - } - - /** - * Obtiene el valor de corporatepurpose - * - * @return valor de corporatepurpose - */ - public String getCorporatepurpose() { - return corporatepurpose; - } - - /** - * Fija el valor de corporatepurpose - * - * @param pCorporatepurpose nuevo Valor de corporatepurpose - */ - public void setCorporatepurpose(String pCorporatepurpose) { - corporatepurpose = pCorporatepurpose; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de membersnumber - * - * @return valor de membersnumber - */ - public Integer getMembersnumber() { - return membersnumber; - } - - /** - * Fija el valor de membersnumber - * - * @param pMembersnumber nuevo Valor de membersnumber - */ - public void setMembersnumber(Integer pMembersnumber) { - membersnumber = pMembersnumber; - } - - /** - * Obtiene el valor de logo - * - * @return valor de logo - */ - public Integer getLogo() { - return logo; - } - - /** - * Fija el valor de logo - * - * @param pLogo nuevo Valor de logo - */ - public void setLogo(Integer pLogo) { - logo = pLogo; - } - - /** - * Obtiene el valor de la imagen - * @return valor de la imagen - */ - public byte[] getPicture() { - return picture; - } - - /** - * Fija el valor de la imagen - * @param pLogo nuevo Valor de la imagen - */ - public void setPicture(byte[] picture) { - this.picture = picture; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompany)) { - return false; - } - TcustCompany that = (TcustCompany) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustCompany - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustCompany - */ - public Object createInstance() { - TcustCompany instance = new TcustCompany(); - instance.setPk(new TcustCompanyKey()); - return instance; - } - - /** - * Clona la entidad TcustCompany - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustCompany p = (TcustCompany) this.clone(); - p.setPk((TcustCompanyKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranch.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranch.java.svn-base deleted file mode 100644 index b919893..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranch.java.svn-base +++ /dev/null @@ -1,326 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTCOMPANYBRANCH - */ -@Entity(name = "TcustCompanyBranch") -@Table(name = "TCUSTCOMPANYBRANCH") -public class TcustCompanyBranch extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustCompanyBranch - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(BRANCHSEQUENCE),0)+1 from TCUSTCOMPANYBRANCH where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "branchsequence")}) - @GeneratedValue(generator = "seq_id") - private TcustCompanyBranchKey pk; - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "NAME", nullable = true) - /** - * Nombre de la sucursal y/o oficina de representyacion - */ - private String name; - @Column(name = "ADDRESSNUMBER", nullable = true) - /** - * Numero de direccion asociada a la sucursal - */ - private Integer addressnumber; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustCompanyBranch() { - } - - /** - * Contructor de TcustCompanyBranch - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro - */ - public TcustCompanyBranch(TcustCompanyBranchKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyBranch - */ - public static TcustCompanyBranch find(EntityManager pEntityManager, TcustCompanyBranchKey pKey) throws Exception { - TcustCompanyBranch obj = pEntityManager.find(TcustCompanyBranch.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyBranch - * - * @return El objeto que referencia a la Clave primaria de - * TcustCompanyBranch - */ - public TcustCompanyBranchKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyBranch - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustCompanyBranch - */ - public void setPk(TcustCompanyBranchKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return this.name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de addressnumber - * - * @return valor de addressnumber - */ - public Integer getAddressnumber() { - return this.addressnumber; - } - - /** - * Fija el valor de addressnumber - * - * @param pAddressnumber nuevo Valor de addressnumber - */ - public void setAddressnumber(Integer pAddressnumber) { - this.addressnumber = pAddressnumber; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyBranch)) { - return false; - } - TcustCompanyBranch that = (TcustCompanyBranch) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustCompanyBranch - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustCompanyBranch - */ - @Override - public Object createInstance() { - TcustCompanyBranch instance = new TcustCompanyBranch(); - instance.setPk(new TcustCompanyBranchKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyBranch - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyBranch p = (TcustCompanyBranch) this.clone(); - p.setPk((TcustCompanyBranchKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranchKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranchKey.java.svn-base deleted file mode 100644 index 1251532..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyBranchKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYBRANCH*/ -@Embeddable -public class TcustCompanyBranchKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="BRANCHSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer branchsequence; - -/**Contructor por defecto*/ -public TcustCompanyBranchKey(){} -/**Contructor de TcustCompanyBranchKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pBranchsequence Secuencia del ingreso de la persona -*/ -public TcustCompanyBranchKey(Integer pPersoncode,Timestamp pDateto,Integer pBranchsequence){ - personcode=pPersoncode; - dateto=pDateto; - branchsequence=pBranchsequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de branchsequence -@return valor de branchsequence*/ -public Integer getBranchsequence(){ - return branchsequence; -} -/**Fija el valor de branchsequence -@param pBranchsequence nuevo Valor de branchsequence*/ -public void setBranchsequence(Integer pBranchsequence){ - branchsequence=pBranchsequence; -} - -/**Implementacin de la comparacin de TcustCompanyBranchKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyBranchKey))return false; - TcustCompanyBranchKey that = (TcustCompanyBranchKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getBranchsequence() == null || that.getBranchsequence() == null){ - return false; - } - if (! this.getBranchsequence().equals(that.getBranchsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyBranchKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getBranchsequence() == null ? 0 : this.getBranchsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClient.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClient.java.svn-base deleted file mode 100644 index 7fad682..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClient.java.svn-base +++ /dev/null @@ -1,489 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTCOMPANYCLIENT - */ -@Entity(name = "TcustCompanyClient") -@Table(name = "TCUSTCOMPANYCLIENT") -public class TcustCompanyClient extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustCompanyClient - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(CLIENTSEQUENCE),0)+1 from TCUSTCOMPANYCLIENT where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "clientsequence")}) - @GeneratedValue(generator = "seq_id") - private TcustCompanyClientKey pk; - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "CLIENTPERSONCODE", nullable = true) - /** - * Codigo de persona asociada al cliente de la empresa - */ - private Integer clientpersoncode; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "PAYMENTMETHODCATALOG", nullable = true) - /** - * Codigo de catalogo 1, efectivo, 2 cheque, 3 credito - */ - private String paymentmethodcatalog; - @Column(name = "PAYMENTMETHODCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PAYMENTMETHOD de la forma de pago - */ - private String paymentmethodcatalogcode; - @Column(name = "MAXCREDIT", nullable = true) - /** - * Monto maximo de creditos. - */ - private BigDecimal maxcredit; - @Column(name = "ANNUALPURCHASE", nullable = true) - /** - * Monto de compras anuales del cliente en la compania - */ - private BigDecimal annualpurchase; - @Column(name = "CLIENTDATE", nullable = true) - /** - * Fecha desde la cual la persona es cliente de la compania - */ - private Date clientdate; - @Column(name = "NAME", nullable = true) - /** - * Nombre del cliente si no esta en la base de personas - */ - private String name; - @Column(name = "REMARK", nullable = true) - /** - * Comentarios - */ - private String remark; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustCompanyClient() { - } - - /** - * Contructor de TcustCompanyClient - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro - */ - public TcustCompanyClient(TcustCompanyClientKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyClient - */ - public static TcustCompanyClient find(EntityManager pEntityManager, TcustCompanyClientKey pKey) throws Exception { - TcustCompanyClient obj = pEntityManager.find(TcustCompanyClient.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyClient - * - * @return El objeto que referencia a la Clave primaria de - * TcustCompanyClient - */ - public TcustCompanyClientKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyClient - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustCompanyClient - */ - public void setPk(TcustCompanyClientKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de clientpersoncode - * - * @return valor de clientpersoncode - */ - public Integer getClientpersoncode() { - return this.clientpersoncode; - } - - /** - * Fija el valor de clientpersoncode - * - * @param pClientpersoncode nuevo Valor de clientpersoncode - */ - public void setClientpersoncode(Integer pClientpersoncode) { - this.clientpersoncode = pClientpersoncode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de paymentmethodcatalog - * - * @return valor de paymentmethodcatalog - */ - public String getPaymentmethodcatalog() { - return this.paymentmethodcatalog; - } - - /** - * Fija el valor de paymentmethodcatalog - * - * @param pPaymentmethodcatalog nuevo Valor de paymentmethodcatalog - */ - public void setPaymentmethodcatalog(String pPaymentmethodcatalog) { - this.paymentmethodcatalog = pPaymentmethodcatalog; - } - - /** - * Obtiene el valor de paymentmethodcatalogcode - * - * @return valor de paymentmethodcatalogcode - */ - public String getPaymentmethodcatalogcode() { - return this.paymentmethodcatalogcode; - } - - /** - * Fija el valor de paymentmethodcatalogcode - * - * @param pPaymentmethodcatalogcode nuevo Valor de paymentmethodcatalogcode - */ - public void setPaymentmethodcatalogcode(String pPaymentmethodcatalogcode) { - this.paymentmethodcatalogcode = pPaymentmethodcatalogcode; - } - - /** - * Obtiene el valor de maxcredit - * - * @return valor de maxcredit - */ - public BigDecimal getMaxcredit() { - return this.maxcredit; - } - - /** - * Fija el valor de maxcredit - * - * @param pMaxcredit nuevo Valor de maxcredit - */ - public void setMaxcredit(BigDecimal pMaxcredit) { - this.maxcredit = pMaxcredit; - } - - /** - * Obtiene el valor de annualpurchase - * - * @return valor de annualpurchase - */ - public BigDecimal getAnnualpurchase() { - return this.annualpurchase; - } - - /** - * Fija el valor de annualpurchase - * - * @param pAnnualpurchase nuevo Valor de annualpurchase - */ - public void setAnnualpurchase(BigDecimal pAnnualpurchase) { - this.annualpurchase = pAnnualpurchase; - } - - /** - * Obtiene el valor de clientdate - * - * @return valor de clientdate - */ - public Date getClientdate() { - return this.clientdate; - } - - /** - * Fija el valor de clientdate - * - * @param pClientdate nuevo Valor de clientdate - */ - public void setClientdate(Date pClientdate) { - this.clientdate = pClientdate; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return this.name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyClient)) { - return false; - } - TcustCompanyClient that = (TcustCompanyClient) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustCompanyClient - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustCompanyClient - */ - @Override - public Object createInstance() { - TcustCompanyClient instance = new TcustCompanyClient(); - instance.setPk(new TcustCompanyClientKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyClient - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyClient p = (TcustCompanyClient) this.clone(); - p.setPk((TcustCompanyClientKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClientKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClientKey.java.svn-base deleted file mode 100644 index 9d63199..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyClientKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYCLIENT*/ -@Embeddable -public class TcustCompanyClientKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="CLIENTSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso del cliente -*/ -private Integer clientsequence; - -/**Contructor por defecto*/ -public TcustCompanyClientKey(){} -/**Contructor de TcustCompanyClientKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pClientsequence Secuencia del ingreso del cliente -*/ -public TcustCompanyClientKey(Integer pPersoncode,Timestamp pDateto,Integer pClientsequence){ - personcode=pPersoncode; - dateto=pDateto; - clientsequence=pClientsequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de clientsequence -@return valor de clientsequence*/ -public Integer getClientsequence(){ - return clientsequence; -} -/**Fija el valor de clientsequence -@param pClientsequence nuevo Valor de clientsequence*/ -public void setClientsequence(Integer pClientsequence){ - clientsequence=pClientsequence; -} - -/**Implementacin de la comparacin de TcustCompanyClientKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyClientKey))return false; - TcustCompanyClientKey that = (TcustCompanyClientKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getClientsequence() == null || that.getClientsequence() == null){ - return false; - } - if (! this.getClientsequence().equals(that.getClientsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyClientKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getClientsequence() == null ? 0 : this.getClientsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancial.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancial.java.svn-base deleted file mode 100644 index a676593..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancial.java.svn-base +++ /dev/null @@ -1,662 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTCOMPANYFINANCIAL - */ -@Entity(name = "TcustCompanyFinancial") -@Table(name = "TCUSTCOMPANYFINANCIAL") -public class TcustCompanyFinancial extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustCompanyFinancial - */ - @EmbeddedId - private TcustCompanyFinancialKey pk; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - @Column(name = "SITUATIONDATE", nullable = true) - /** - * Fecha a la cual se tiene actualizada la situacion financiera de la - * compania. - */ - private Date situationdate; - @Column(name = "SALESAMOUNT", nullable = true) - /** - * Monto ventas a la fecha de ingreso de la situacion financiera - */ - private BigDecimal salesamount; - @Column(name = "CURRENTASSETS", nullable = true) - /** - * Activos corrientes a la fecha de ingreso de la situacion financiera. - */ - private BigDecimal currentassets; - @Column(name = "FIXEDASSETS", nullable = true) - /** - * Activos fijos a la fecha de ingreso de la situacion financiera - */ - private BigDecimal fixedassets; - @Column(name = "TOTALASSETS", nullable = true) - /** - * Total de activos activos corrienets + activos fijos + cuentas por cobrar - * a la fecha de ingreso de la situacion financiera - */ - private BigDecimal totalassets; - @Column(name = "WORKINGCAPITAL", nullable = true) - /** - * Capital de trabajo a la fecha de ingreso de la situacion financiera - */ - private BigDecimal workingcapital; - @Column(name = "NETINCOME", nullable = true) - /** - * Utilidad neta a la fecha de ingreso de la situacion financiera. - */ - private BigDecimal netincome; - @Column(name = "CURRENTLIABILITIES", nullable = true) - /** - * Pasivos corrientes a la fecha de ingreso de la situacion financiera. - */ - private BigDecimal currentliabilities; - @Column(name = "PATRIMONY", nullable = true) - /** - * Patrimonio a la fecha de ingreso de la situacion financiera - */ - private BigDecimal patrimony; - @Column(name = "CASH", nullable = true) - /** - * Monto en caja y bancos a la fecha de ingreso de la situacion financiera - */ - private BigDecimal cash; - @Column(name = "INVENTORY", nullable = true) - /** - * Monto en productos para la venta en stock a la fecha de ingreso de la - * situacion financiera - */ - private BigDecimal inventory; - @Column(name = "LONGTERMDEBT", nullable = true) - /** - * Deuda a largo plazo a la fecha de ingreso de la situacion financiera - */ - private BigDecimal longtermdebt; - @Column(name = "GROSSRECEIPTS", nullable = true) - /** - * Ingreos brutos ventas netas + otros ingresos a la fecha de ingreso de la - * situacion financiera - */ - private BigDecimal grossreceipts; - @Column(name = "INTERESTOPAID", nullable = true) - /** - * Monto pagado en intereses a la fecha de ingreso de la situacion - * financiera - */ - private BigDecimal interestopaid; - @Column(name = "RETAINEDEARNINGS", nullable = true) - /** - * Ganancias retenidas a la fecha de ingreso de la situacion financiera - */ - private BigDecimal retainedearnings; - @Column(name = "SALESEXPENSE", nullable = true) - /** - * Costo de ventas a la fecha de ingreso de la situacion financiera - */ - private BigDecimal salesexpense; - - /** - * Contructor por defecto - */ - public TcustCompanyFinancial() { - } - - /** - * Contructor de TcustCompanyFinancial - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro - */ - public TcustCompanyFinancial(TcustCompanyFinancialKey pPk, Timestamp pDatefrom) { - this(); - pk = pPk; - datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyFinancial - */ - public static TcustCompanyFinancial find(EntityManager pEntityManager, TcustCompanyFinancialKey pKey) throws Exception { - TcustCompanyFinancial obj = pEntityManager.find(TcustCompanyFinancial.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyFinancial - * - * @return El objeto que referencia a la Clave primaria de - * TcustCompanyFinancial - */ - public TcustCompanyFinancialKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyFinancial - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustCompanyFinancial - */ - public void setPk(TcustCompanyFinancialKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de situationdate - * - * @return valor de situationdate - */ - public Date getSituationdate() { - return situationdate; - } - - /** - * Fija el valor de situationdate - * - * @param pSituationdate nuevo Valor de situationdate - */ - public void setSituationdate(Date pSituationdate) { - situationdate = pSituationdate; - } - - /** - * Obtiene el valor de salesamount - * - * @return valor de salesamount - */ - public BigDecimal getSalesamount() { - return salesamount; - } - - /** - * Fija el valor de salesamount - * - * @param pSalesamount nuevo Valor de salesamount - */ - public void setSalesamount(BigDecimal pSalesamount) { - salesamount = pSalesamount; - } - - /** - * Obtiene el valor de currentassets - * - * @return valor de currentassets - */ - public BigDecimal getCurrentassets() { - return currentassets; - } - - /** - * Fija el valor de currentassets - * - * @param pCurrentassets nuevo Valor de currentassets - */ - public void setCurrentassets(BigDecimal pCurrentassets) { - currentassets = pCurrentassets; - } - - /** - * Obtiene el valor de fixedassets - * - * @return valor de fixedassets - */ - public BigDecimal getFixedassets() { - return fixedassets; - } - - /** - * Fija el valor de fixedassets - * - * @param pFixedassets nuevo Valor de fixedassets - */ - public void setFixedassets(BigDecimal pFixedassets) { - fixedassets = pFixedassets; - } - - /** - * Obtiene el valor de totalassets - * - * @return valor de totalassets - */ - public BigDecimal getTotalassets() { - return totalassets; - } - - /** - * Fija el valor de totalassets - * - * @param pTotalassets nuevo Valor de totalassets - */ - public void setTotalassets(BigDecimal pTotalassets) { - totalassets = pTotalassets; - } - - /** - * Obtiene el valor de workingcapital - * - * @return valor de workingcapital - */ - public BigDecimal getWorkingcapital() { - return workingcapital; - } - - /** - * Fija el valor de workingcapital - * - * @param pWorkingcapital nuevo Valor de workingcapital - */ - public void setWorkingcapital(BigDecimal pWorkingcapital) { - workingcapital = pWorkingcapital; - } - - /** - * Obtiene el valor de netincome - * - * @return valor de netincome - */ - public BigDecimal getNetincome() { - return netincome; - } - - /** - * Fija el valor de netincome - * - * @param pNetincome nuevo Valor de netincome - */ - public void setNetincome(BigDecimal pNetincome) { - netincome = pNetincome; - } - - /** - * Obtiene el valor de currentliabilities - * - * @return valor de currentliabilities - */ - public BigDecimal getCurrentliabilities() { - return currentliabilities; - } - - /** - * Fija el valor de currentliabilities - * - * @param pCurrentliabilities nuevo Valor de currentliabilities - */ - public void setCurrentliabilities(BigDecimal pCurrentliabilities) { - currentliabilities = pCurrentliabilities; - } - - /** - * Obtiene el valor de patrimony - * - * @return valor de patrimony - */ - public BigDecimal getPatrimony() { - return patrimony; - } - - /** - * Fija el valor de patrimony - * - * @param pPatrimony nuevo Valor de patrimony - */ - public void setPatrimony(BigDecimal pPatrimony) { - patrimony = pPatrimony; - } - - /** - * Obtiene el valor de cash - * - * @return valor de cash - */ - public BigDecimal getCash() { - return cash; - } - - /** - * Fija el valor de cash - * - * @param pCash nuevo Valor de cash - */ - public void setCash(BigDecimal pCash) { - cash = pCash; - } - - /** - * Obtiene el valor de inventory - * - * @return valor de inventory - */ - public BigDecimal getInventory() { - return inventory; - } - - /** - * Fija el valor de inventory - * - * @param pInventory nuevo Valor de inventory - */ - public void setInventory(BigDecimal pInventory) { - inventory = pInventory; - } - - /** - * Obtiene el valor de longtermdebt - * - * @return valor de longtermdebt - */ - public BigDecimal getLongtermdebt() { - return longtermdebt; - } - - /** - * Fija el valor de longtermdebt - * - * @param pLongtermdebt nuevo Valor de longtermdebt - */ - public void setLongtermdebt(BigDecimal pLongtermdebt) { - longtermdebt = pLongtermdebt; - } - - /** - * Obtiene el valor de grossreceipts - * - * @return valor de grossreceipts - */ - public BigDecimal getGrossreceipts() { - return grossreceipts; - } - - /** - * Fija el valor de grossreceipts - * - * @param pGrossreceipts nuevo Valor de grossreceipts - */ - public void setGrossreceipts(BigDecimal pGrossreceipts) { - grossreceipts = pGrossreceipts; - } - - /** - * Obtiene el valor de interestopaid - * - * @return valor de interestopaid - */ - public BigDecimal getInterestopaid() { - return interestopaid; - } - - /** - * Fija el valor de interestopaid - * - * @param pInterestopaid nuevo Valor de interestopaid - */ - public void setInterestopaid(BigDecimal pInterestopaid) { - interestopaid = pInterestopaid; - } - - /** - * Obtiene el valor de retainedearnings - * - * @return valor de retainedearnings - */ - public BigDecimal getRetainedearnings() { - return retainedearnings; - } - - /** - * Fija el valor de retainedearnings - * - * @param pRetainedearnings nuevo Valor de retainedearnings - */ - public void setRetainedearnings(BigDecimal pRetainedearnings) { - retainedearnings = pRetainedearnings; - } - - /** - * Obtiene el valor de salesexpense - * - * @return valor de salesexpense - */ - public BigDecimal getSalesexpense() { - return salesexpense; - } - - /** - * Fija el valor de salesexpense - * - * @param pSalesexpense nuevo Valor de salesexpense - */ - public void setSalesexpense(BigDecimal pSalesexpense) { - salesexpense = pSalesexpense; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyFinancial)) { - return false; - } - TcustCompanyFinancial that = (TcustCompanyFinancial) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustCompanyFinancial - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustCompanyFinancial - */ - public Object createInstance() { - TcustCompanyFinancial instance = new TcustCompanyFinancial(); - instance.setPk(new TcustCompanyFinancialKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyFinancial - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyFinancial p = (TcustCompanyFinancial) this.clone(); - p.setPk((TcustCompanyFinancialKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancialKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancialKey.java.svn-base deleted file mode 100644 index 96b44c2..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyFinancialKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYFINANCIAL*/ -@Embeddable -public class TcustCompanyFinancialKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustCompanyFinancialKey(){} -/**Contructor de TcustCompanyFinancialKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TcustCompanyFinancialKey(Integer pPersoncode,Timestamp pDateto){ - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustCompanyFinancialKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyFinancialKey))return false; - TcustCompanyFinancialKey that = (TcustCompanyFinancialKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyFinancialKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyKey.java.svn-base deleted file mode 100644 index bb1a4e8..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANY*/ -@Embeddable -public class TcustCompanyKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustCompanyKey(){} -/**Contructor de TcustCompanyKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro. -*/ -public TcustCompanyKey(Integer pPersoncode,Timestamp pDateto){ - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustCompanyKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyKey))return false; - TcustCompanyKey that = (TcustCompanyKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagers.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagers.java.svn-base deleted file mode 100644 index 0e2a757..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagers.java.svn-base +++ /dev/null @@ -1,438 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import com.fp.common.helper.Constant; -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; -import java.util.List; -import javax.persistence.Query; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTCOMPANYMANAGERS - */ -@Entity(name = "TcustCompanyManagers") -@Table(name = "TCUSTCOMPANYMANAGERS") -public class TcustCompanyManagers extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustCompanyManagers - */ - @EmbeddedId - private TcustCompanyManagersKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "DESIGNATIONDATE", nullable = true) - /** - * Fecha de nombramiento - */ - private Date designationdate; - @Column(name = "EXPIRATIONDATE", nullable = true) - /** - * Fecha de vencimiento del nombramiento - */ - private Date expirationdate; - @Column(name = "REGISTERDATE", nullable = true) - /** - * Fecha en la que se incribe el nombramiento en los organismos de control, ejemoplo registro mercail, - * superintendencia de companias - */ - private Date registerdate; - @Column(name = "REMARK", nullable = true) - /** - * Comentario - */ - private String remark; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - @Column(name = "ISREPRESENTLEGAL", nullable = true) - /** - * I dentifica si el directivo es el representante legal de la empresa - */ - private String isrepresentlegal; - @Column(name = "PARTICIPATION", nullable = true) - /** - * Porcentaje de particicion del socio dentro de la empresa. - */ - private BigDecimal participation; - - /** - * Contructor por defecto - */ - public TcustCompanyManagers() { - } - - /** - * Contructor de TcustCompanyManagers - * - * @param pPk Clave Primaria del entity - */ - public TcustCompanyManagers(TcustCompanyManagersKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyManagers - */ - public static TcustCompanyManagers find(EntityManager pEntityManager, TcustCompanyManagersKey pKey) throws Exception { - TcustCompanyManagers obj = pEntityManager.find(TcustCompanyManagers.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyManagers - * - * @return El objeto que referencia a la Clave primaria de TcustCompanyManagers - */ - public TcustCompanyManagersKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyManagers - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustCompanyManagers - */ - public void setPk(TcustCompanyManagersKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de designationdate - * - * @return valor de designationdate - */ - public Date getDesignationdate() { - return designationdate; - } - - /** - * Fija el valor de designationdate - * - * @param pDesignationdate nuevo Valor de designationdate - */ - public void setDesignationdate(Date pDesignationdate) { - designationdate = pDesignationdate; - } - - /** - * Obtiene el valor de expirationdate - * - * @return valor de expirationdate - */ - public Date getExpirationdate() { - return expirationdate; - } - - /** - * Fija el valor de expirationdate - * - * @param pExpirationdate nuevo Valor de expirationdate - */ - public void setExpirationdate(Date pExpirationdate) { - expirationdate = pExpirationdate; - } - - /** - * Obtiene el valor de registerdate - * - * @return valor de registerdate - */ - public Date getRegisterdate() { - return registerdate; - } - - /** - * Fija el valor de registerdate - * - * @param pRegisterdate nuevo Valor de registerdate - */ - public void setRegisterdate(Date pRegisterdate) { - registerdate = pRegisterdate; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - remark = pRemark; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de isrepresentlegal - * - * @return valor de isrepresentlegal - */ - public String getIsrepresentlegal() { - return isrepresentlegal; - } - - /** - * Fija el valor de isrepresentlegal - * - * @param pIsrepresentlegal nuevo Valor de isrepresentlegal - */ - public void setIsrepresentlegal(String pIsrepresentlegal) { - isrepresentlegal = pIsrepresentlegal; - } - - /** - * Obtiene el valor de participation - * - * @return valor de participation - */ - public BigDecimal getParticipation() { - return participation; - } - - /** - * Fija el valor de participation - * - * @param pParticipation nuevo Valor de participation - */ - public void setParticipation(BigDecimal pParticipation) { - participation = pParticipation; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyManagers)) { - return false; - } - TcustCompanyManagers that = (TcustCompanyManagers) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TcustCompanyManagers - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacion toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacion de la creacion de un bean en blanco TcustCompanyManagers - */ - public Object createInstance() { - TcustCompanyManagers instance = new TcustCompanyManagers(); - instance.setPk(new TcustCompanyManagersKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyManagers - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyManagers p = (TcustCompanyManagers) this.clone(); - p.setPk((TcustCompanyManagersKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -//METODOS MANUALES. - private static final String JPQL_MANAGERS = "from TcustCompanyManagers c" + " where c.pk.personcode = :personcode " - + " and c.pk.dateto = :dateto "; - - /** - * Metodo que devuelve una lista de objetos TcustCompanyManagers dado el codigo de persona - * - * @param pEntityManager - * @param personcode codigo de persona - * @return List - * @throws Exception - */ - public static List find(EntityManager pEntityManager, Integer personcode) throws Exception { - List lcomManagers = null; - Query qry = pEntityManager.createQuery(TcustCompanyManagers.JPQL_MANAGERS); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - lcomManagers = qry.getResultList(); - return lcomManagers; - } - //METODOS MANUALES - /** - * Sentencia que devuelve las excepciones de una solicitud. - */ - private static final String JPQL_SOL_TCUSTCOMPANYMANAGERS = "from TcustCompanyManagers tcustCompanyManagers " - + " where tcustCompanyManagers.pk.personcode = :personcode " + "and tcustCompanyManagers.pk.dateto = :dateto"; - - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByPersonCode(EntityManager pEntityManager, Integer pPersonCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TcustCompanyManagers.JPQL_SOL_TCUSTCOMPANYMANAGERS); - qry.setParameter("personcode", pPersonCode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - lObjects = qry.getResultList(); - return lObjects; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagersKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagersKey.java.svn-base deleted file mode 100644 index 908a632..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyManagersKey.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYMANAGERS*/ -@Embeddable -public class TcustCompanyManagersKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="MANAGERPERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona asociado al directivo de la empresa -*/ -private Integer managerpersoncode; - -@Column(name="APPOINTMENTCATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo de tipo de cargo, 1 Gerente, 2 Contador -*/ -private String appointmentcatalog; - -@Column(name="APPOINTMENTCATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo de tipo de empresa APPOINTMENT -*/ -private String appointmentcatalogcode; - -/**Contructor por defecto*/ -public TcustCompanyManagersKey(){} -/**Contructor de TcustCompanyManagersKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pManagerpersoncode Codigo de persona asociado al directivo de la empresa -@param pAppointmentcatalog Codigo de catalogo de tipo de cargo, 1 Gerente, 2 Contador -@param pAppointmentcatalogcode Codigo de tabla de catalogo de tipo de empresa APPOINTMENT -*/ -public TcustCompanyManagersKey(Integer pPersoncode,Timestamp pDateto,Integer pManagerpersoncode,String pAppointmentcatalog,String pAppointmentcatalogcode){ - personcode=pPersoncode; - dateto=pDateto; - managerpersoncode=pManagerpersoncode; - appointmentcatalog=pAppointmentcatalog; - appointmentcatalogcode=pAppointmentcatalogcode; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de managerpersoncode -@return valor de managerpersoncode*/ -public Integer getManagerpersoncode(){ - return managerpersoncode; -} -/**Fija el valor de managerpersoncode -@param pManagerpersoncode nuevo Valor de managerpersoncode*/ -public void setManagerpersoncode(Integer pManagerpersoncode){ - managerpersoncode=pManagerpersoncode; -} - -/**Obtiene el valor de appointmentcatalog -@return valor de appointmentcatalog*/ -public String getAppointmentcatalog(){ - return appointmentcatalog; -} -/**Fija el valor de appointmentcatalog -@param pAppointmentcatalog nuevo Valor de appointmentcatalog*/ -public void setAppointmentcatalog(String pAppointmentcatalog){ - appointmentcatalog=pAppointmentcatalog; -} - -/**Obtiene el valor de appointmentcatalogcode -@return valor de appointmentcatalogcode*/ -public String getAppointmentcatalogcode(){ - return appointmentcatalogcode; -} -/**Fija el valor de appointmentcatalogcode -@param pAppointmentcatalogcode nuevo Valor de appointmentcatalogcode*/ -public void setAppointmentcatalogcode(String pAppointmentcatalogcode){ - appointmentcatalogcode=pAppointmentcatalogcode; -} - -/**Implementacion de la comparacion de TcustCompanyManagersKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyManagersKey))return false; - TcustCompanyManagersKey that = (TcustCompanyManagersKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getManagerpersoncode() == null || that.getManagerpersoncode() == null){ - return false; - } - if (! this.getManagerpersoncode().equals(that.getManagerpersoncode())){ - return false; - } - if (this.getAppointmentcatalog() == null || that.getAppointmentcatalog() == null){ - return false; - } - if (! this.getAppointmentcatalog().equals(that.getAppointmentcatalog())){ - return false; - } - if (this.getAppointmentcatalogcode() == null || that.getAppointmentcatalogcode() == null){ - return false; - } - if (! this.getAppointmentcatalogcode().equals(that.getAppointmentcatalogcode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustCompanyManagersKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getManagerpersoncode() == null ? 0 : this.getManagerpersoncode().hashCode()); - result = result * 37 + (this.getAppointmentcatalog() == null ? 0 : this.getAppointmentcatalog().hashCode()); - result = result * 37 + (this.getAppointmentcatalogcode() == null ? 0 : this.getAppointmentcatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProducts.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProducts.java.svn-base deleted file mode 100644 index bef0217..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProducts.java.svn-base +++ /dev/null @@ -1,428 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTCOMPANYPRODUCTS - */ -@Entity(name = "TcustCompanyProducts") -@Table(name = "TCUSTCOMPANYPRODUCTS") -public class TcustCompanyProducts extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustCompanyProducts - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(PRODUCTSEQUENCE),0)+1 from TCUSTCOMPANYPRODUCTS where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "productsequence") }) - @GeneratedValue(generator = "seq_id") - private TcustCompanyProductsKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "MARKETINGTYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1, masivo, 2 persona a persona, directa, tercerizada - */ - private String marketingtypecatalog; - - @Column(name = "MARKETINGTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo MARKETINGTYPE, forma de comercializacion - */ - private String marketingtypecatalogcode; - - @Column(name = "ANNUALSALES", nullable = true) - /** - * Monto ventas anuales - */ - private BigDecimal annualsales; - - @Column(name = "PRODUCTDETAIL", nullable = true) - /** - * Descripcion del producto - */ - private String productdetail; - - @Column(name = "PERCENT", nullable = true) - /** - * Porcentaje de ventas del producto dentro de la empresa - */ - private BigDecimal percent; - - @Column(name = "ISSERVICE", nullable = true) - /** - * Y indica, que el producto es un servicio, N es un producto final o - * entrada para otro producto - */ - private String isservice; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustCompanyProducts() { - } - - /** - * Contructor de TcustCompanyProducts - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro - */ - public TcustCompanyProducts(TcustCompanyProductsKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyProducts - */ - public static TcustCompanyProducts find(EntityManager pEntityManager, TcustCompanyProductsKey pKey) throws Exception { - TcustCompanyProducts obj = pEntityManager.find(TcustCompanyProducts.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyProducts - * - * @return El objeto que referencia a la Clave primaria de TcustCompanyProducts - */ - public TcustCompanyProductsKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyProducts - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustCompanyProducts - */ - public void setPk(TcustCompanyProductsKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de marketingtypecatalog - * - * @return valor de marketingtypecatalog - */ - public String getMarketingtypecatalog() { - return this.marketingtypecatalog; - } - - /** - * Fija el valor de marketingtypecatalog - * - * @param pMarketingtypecatalog nuevo Valor de marketingtypecatalog - */ - public void setMarketingtypecatalog(String pMarketingtypecatalog) { - this.marketingtypecatalog = pMarketingtypecatalog; - } - - /** - * Obtiene el valor de marketingtypecatalogcode - * - * @return valor de marketingtypecatalogcode - */ - public String getMarketingtypecatalogcode() { - return this.marketingtypecatalogcode; - } - - /** - * Fija el valor de marketingtypecatalogcode - * - * @param pMarketingtypecatalogcode nuevo Valor de marketingtypecatalogcode - */ - public void setMarketingtypecatalogcode(String pMarketingtypecatalogcode) { - this.marketingtypecatalogcode = pMarketingtypecatalogcode; - } - - /** - * Obtiene el valor de annualsales - * - * @return valor de annualsales - */ - public BigDecimal getAnnualsales() { - return this.annualsales; - } - - /** - * Fija el valor de annualsales - * - * @param pAnnualsales nuevo Valor de annualsales - */ - public void setAnnualsales(BigDecimal pAnnualsales) { - this.annualsales = pAnnualsales; - } - - /** - * Obtiene el valor de productdetail - * - * @return valor de productdetail - */ - public String getProductdetail() { - return this.productdetail; - } - - /** - * Fija el valor de productdetail - * - * @param pProductdetail nuevo Valor de productdetail - */ - public void setProductdetail(String pProductdetail) { - this.productdetail = pProductdetail; - } - - /** - * Obtiene el valor de percent - * - * @return valor de percent - */ - public BigDecimal getPercent() { - return this.percent; - } - - /** - * Fija el valor de percent - * - * @param pPercent nuevo Valor de percent - */ - public void setPercent(BigDecimal pPercent) { - this.percent = pPercent; - } - - /** - * Obtiene el valor de isservice - * - * @return valor de isservice - */ - public String getIsservice() { - return this.isservice; - } - - /** - * Fija el valor de isservice - * - * @param pIsservice nuevo Valor de isservice - */ - public void setIsservice(String pIsservice) { - this.isservice = pIsservice; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyProducts)) { - return false; - } - TcustCompanyProducts that = (TcustCompanyProducts) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustCompanyProducts - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustCompanyProducts - */ - @Override - public Object createInstance() { - TcustCompanyProducts instance = new TcustCompanyProducts(); - instance.setPk(new TcustCompanyProductsKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyProducts - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyProducts p = (TcustCompanyProducts) this.clone(); - p.setPk((TcustCompanyProductsKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProductsKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProductsKey.java.svn-base deleted file mode 100644 index 01597ce..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProductsKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYPRODUCTS*/ -@Embeddable -public class TcustCompanyProductsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="PRODUCTSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer productsequence; - -/**Contructor por defecto*/ -public TcustCompanyProductsKey(){} -/**Contructor de TcustCompanyProductsKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pProductsequence Secuencia del ingreso de la persona -*/ -public TcustCompanyProductsKey(Integer pPersoncode,Timestamp pDateto,Integer pProductsequence){ - personcode=pPersoncode; - dateto=pDateto; - productsequence=pProductsequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de productsequence -@return valor de productsequence*/ -public Integer getProductsequence(){ - return productsequence; -} -/**Fija el valor de productsequence -@param pProductsequence nuevo Valor de productsequence*/ -public void setProductsequence(Integer pProductsequence){ - productsequence=pProductsequence; -} - -/**Implementacin de la comparacin de TcustCompanyProductsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyProductsKey))return false; - TcustCompanyProductsKey that = (TcustCompanyProductsKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getProductsequence() == null || that.getProductsequence() == null){ - return false; - } - if (! this.getProductsequence().equals(that.getProductsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyProductsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getProductsequence() == null ? 0 : this.getProductsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProvider.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProvider.java.svn-base deleted file mode 100644 index 365db4b..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProvider.java.svn-base +++ /dev/null @@ -1,500 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTCOMPANYPROVIDER - */ -@Entity(name = "TcustCompanyProvider") -@Table(name = "TCUSTCOMPANYPROVIDER") -public class TcustCompanyProvider extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustCompanyProvider - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(PROVIDERSEQUENCE),0)+1 from TCUSTCOMPANYPROVIDER where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "providersequence") }) - @GeneratedValue(generator = "seq_id") - private TcustCompanyProviderKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "PROVIDERPERSONCODE", nullable = true) - /** - * Codigo de persona asociada al proveedor de la empresa - */ - private Integer providerpersoncode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "PAYMENTMETHODCATALOG", nullable = true) - /** - * Codigo de catalogo 1, efectivo, 2 cheque, 3 credito - */ - private String paymentmethodcatalog; - - @Column(name = "PAYMENTMETHODCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PAYMENTMETHOD de la forma de pago - */ - private String paymentmethodcatalogcode; - - @Column(name = "MAXCREDIT", nullable = true) - /** - * Monto maximo de creditos. - */ - private BigDecimal maxcredit; - - @Column(name = "ANNUALPURCHASE", nullable = true) - /** - * Monto de compras anuales de la compania al proveedor - */ - private BigDecimal annualpurchase; - - @Column(name = "PROVIDERDATE", nullable = true) - /** - * Fecha desde la cual la persona es proveedor de la compania - */ - private Date providerdate; - - @Column(name = "NAME", nullable = true) - /** - * Nombre del proveedor si no esta en la base de personas - */ - private String name; - - @Column(name = "REMARK", nullable = true) - /** - * Comentarios - */ - private String remark; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustCompanyProvider() { - } - - /** - * Contructor de TcustCompanyProvider - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro - */ - public TcustCompanyProvider(TcustCompanyProviderKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustCompanyProvider - */ - public static TcustCompanyProvider find(EntityManager pEntityManager, TcustCompanyProviderKey pKey) throws Exception { - TcustCompanyProvider obj = pEntityManager.find(TcustCompanyProvider.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustCompanyProvider - * - * @return El objeto que referencia a la Clave primaria de TcustCompanyProvider - */ - public TcustCompanyProviderKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustCompanyProvider - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustCompanyProvider - */ - public void setPk(TcustCompanyProviderKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de providerpersoncode - * - * @return valor de providerpersoncode - */ - public Integer getProviderpersoncode() { - return this.providerpersoncode; - } - - /** - * Fija el valor de providerpersoncode - * - * @param pProviderpersoncode nuevo Valor de providerpersoncode - */ - public void setProviderpersoncode(Integer pProviderpersoncode) { - this.providerpersoncode = pProviderpersoncode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de paymentmethodcatalog - * - * @return valor de paymentmethodcatalog - */ - public String getPaymentmethodcatalog() { - return this.paymentmethodcatalog; - } - - /** - * Fija el valor de paymentmethodcatalog - * - * @param pPaymentmethodcatalog nuevo Valor de paymentmethodcatalog - */ - public void setPaymentmethodcatalog(String pPaymentmethodcatalog) { - this.paymentmethodcatalog = pPaymentmethodcatalog; - } - - /** - * Obtiene el valor de paymentmethodcatalogcode - * - * @return valor de paymentmethodcatalogcode - */ - public String getPaymentmethodcatalogcode() { - return this.paymentmethodcatalogcode; - } - - /** - * Fija el valor de paymentmethodcatalogcode - * - * @param pPaymentmethodcatalogcode nuevo Valor de paymentmethodcatalogcode - */ - public void setPaymentmethodcatalogcode(String pPaymentmethodcatalogcode) { - this.paymentmethodcatalogcode = pPaymentmethodcatalogcode; - } - - /** - * Obtiene el valor de maxcredit - * - * @return valor de maxcredit - */ - public BigDecimal getMaxcredit() { - return this.maxcredit; - } - - /** - * Fija el valor de maxcredit - * - * @param pMaxcredit nuevo Valor de maxcredit - */ - public void setMaxcredit(BigDecimal pMaxcredit) { - this.maxcredit = pMaxcredit; - } - - /** - * Obtiene el valor de annualpurchase - * - * @return valor de annualpurchase - */ - public BigDecimal getAnnualpurchase() { - return this.annualpurchase; - } - - /** - * Fija el valor de annualpurchase - * - * @param pAnnualpurchase nuevo Valor de annualpurchase - */ - public void setAnnualpurchase(BigDecimal pAnnualpurchase) { - this.annualpurchase = pAnnualpurchase; - } - - /** - * Obtiene el valor de providerdate - * - * @return valor de providerdate - */ - public Date getProviderdate() { - return this.providerdate; - } - - /** - * Fija el valor de providerdate - * - * @param pProviderdate nuevo Valor de providerdate - */ - public void setProviderdate(Date pProviderdate) { - this.providerdate = pProviderdate; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return this.name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustCompanyProvider)) { - return false; - } - TcustCompanyProvider that = (TcustCompanyProvider) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustCompanyProvider - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustCompanyProvider - */ - @Override - public Object createInstance() { - TcustCompanyProvider instance = new TcustCompanyProvider(); - instance.setPk(new TcustCompanyProviderKey()); - return instance; - } - - /** - * Clona la entidad TcustCompanyProvider - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustCompanyProvider p = (TcustCompanyProvider) this.clone(); - p.setPk((TcustCompanyProviderKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProviderKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProviderKey.java.svn-base deleted file mode 100644 index 2edcab8..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustCompanyProviderKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTCOMPANYPROVIDER*/ -@Embeddable -public class TcustCompanyProviderKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="PROVIDERSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso del proveedor -*/ -private Integer providersequence; - -/**Contructor por defecto*/ -public TcustCompanyProviderKey(){} -/**Contructor de TcustCompanyProviderKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pProvidersequence Secuencia del ingreso del proveedor -*/ -public TcustCompanyProviderKey(Integer pPersoncode,Timestamp pDateto,Integer pProvidersequence){ - personcode=pPersoncode; - dateto=pDateto; - providersequence=pProvidersequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de providersequence -@return valor de providersequence*/ -public Integer getProvidersequence(){ - return providersequence; -} -/**Fija el valor de providersequence -@param pProvidersequence nuevo Valor de providersequence*/ -public void setProvidersequence(Integer pProvidersequence){ - providersequence=pProvidersequence; -} - -/**Implementacin de la comparacin de TcustCompanyProviderKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustCompanyProviderKey))return false; - TcustCompanyProviderKey that = (TcustCompanyProviderKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getProvidersequence() == null || that.getProvidersequence() == null){ - return false; - } - if (! this.getProvidersequence().equals(that.getProvidersequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustCompanyProviderKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getProvidersequence() == null ? 0 : this.getProvidersequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroup.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroup.java.svn-base deleted file mode 100644 index 712ad09..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroup.java.svn-base +++ /dev/null @@ -1,252 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTECONOMICGROUP*/ -@Entity(name="TcustEconomicGroup") -@Table(name="TCUSTECONOMICGROUP") -public class TcustEconomicGroup extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustEconomicGroup -*/ -@EmbeddedId -private TcustEconomicGroupKey pk; -@Column(name="LEGALLINKCATALOG", nullable=true) - -/** -* Codigo de catalogo PG1 Causales P01 y G01 -*/ -private String legallinkcatalog; - -@Column(name="LEGALLINKCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo LEGALLINK vinculaciones legales -*/ -private String legallinkcatalogcode; - -@Version -@Column(name="RECORDVERSION", nullable=false) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="INGRESSDATE", nullable=true) - -/** -* Fecha de inicio de la vinculacion. -*/ -private Date ingressdate; - -@Column(name="EXITDATE", nullable=true) - -/** -* Fecha en la que finaliza la vinculacion de la persona. -*/ -private Date exitdate; - -@Column(name="INGRESSUSER", nullable=true) - -/** -* null -*/ -private String ingressuser; - -@Column(name="MODIFYUSER", nullable=true) - -/** -* Codigo de usuario que modifica datos del cliente -*/ -private String modifyuser; - -/**Contructor por defecto*/ -public TcustEconomicGroup(){ -} -/**Contructor de TcustEconomicGroup -@param pPk Clave Primaria del entity -@param pRecordversion Optimistic locking del registro -*/ -public TcustEconomicGroup(TcustEconomicGroupKey pPk,Integer pRecordversion){ - this(); - pk=pPk; - recordversion=pRecordversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustEconomicGroup -*/ -public static TcustEconomicGroup find(EntityManager pEntityManager,TcustEconomicGroupKey pKey) throws Exception{ - TcustEconomicGroup obj = pEntityManager.find(TcustEconomicGroup.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustEconomicGroup -@return El objeto que referencia a la Clave primaria de TcustEconomicGroup -*/ -public TcustEconomicGroupKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustEconomicGroup -@param pPk El objeto que referencia a la nueva Clave primaria de TcustEconomicGroup -*/ -public void setPk(TcustEconomicGroupKey pPk){ - pk=pPk; -} -/**Obtiene el valor de legallinkcatalog -@return valor de legallinkcatalog*/ -public String getLegallinkcatalog(){ - return legallinkcatalog; -} -/**Fija el valor de legallinkcatalog -@param pLegallinkcatalog nuevo Valor de legallinkcatalog*/ -public void setLegallinkcatalog(String pLegallinkcatalog){ - legallinkcatalog=pLegallinkcatalog; -} - -/**Obtiene el valor de legallinkcatalogcode -@return valor de legallinkcatalogcode*/ -public String getLegallinkcatalogcode(){ - return legallinkcatalogcode; -} -/**Fija el valor de legallinkcatalogcode -@param pLegallinkcatalogcode nuevo Valor de legallinkcatalogcode*/ -public void setLegallinkcatalogcode(String pLegallinkcatalogcode){ - legallinkcatalogcode=pLegallinkcatalogcode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de ingressdate -@return valor de ingressdate*/ -public Date getIngressdate(){ - return ingressdate; -} -/**Fija el valor de ingressdate -@param pIngressdate nuevo Valor de ingressdate*/ -public void setIngressdate(Date pIngressdate){ - ingressdate=pIngressdate; -} - -/**Obtiene el valor de exitdate -@return valor de exitdate*/ -public Date getExitdate(){ - return exitdate; -} -/**Fija el valor de exitdate -@param pExitdate nuevo Valor de exitdate*/ -public void setExitdate(Date pExitdate){ - exitdate=pExitdate; -} - -/**Obtiene el valor de ingressuser -@return valor de ingressuser*/ -public String getIngressuser(){ - return ingressuser; -} -/**Fija el valor de ingressuser -@param pIngressuser nuevo Valor de ingressuser*/ -public void setIngressuser(String pIngressuser){ - ingressuser=pIngressuser; -} - -/**Obtiene el valor de modifyuser -@return valor de modifyuser*/ -public String getModifyuser(){ - return modifyuser; -} -/**Fija el valor de modifyuser -@param pModifyuser nuevo Valor de modifyuser*/ -public void setModifyuser(String pModifyuser){ - modifyuser=pModifyuser; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustEconomicGroup))return false; - TcustEconomicGroup that = (TcustEconomicGroup) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TcustEconomicGroup -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TcustEconomicGroup -*/ -public Object createInstance(){ - TcustEconomicGroup instance=new TcustEconomicGroup(); - instance.setPk(new TcustEconomicGroupKey()); - return instance; -} -/**Clona la entidad TcustEconomicGroup -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustEconomicGroup p=(TcustEconomicGroup)this.clone(); - p.setPk((TcustEconomicGroupKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroupKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroupKey.java.svn-base deleted file mode 100644 index 32f530a..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustEconomicGroupKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTECONOMICGROUP*/ -@Embeddable -public class TcustEconomicGroupKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="GROUPPERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer grouppersoncode; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TcustEconomicGroupKey(){} -/**Contructor de TcustEconomicGroupKey -@param pGrouppersoncode Codigo de persona -@param pPersoncode Codigo de persona -@param pCompanycode Codigo de compania -*/ -public TcustEconomicGroupKey(Integer pGrouppersoncode,Integer pPersoncode,Integer pCompanycode){ - grouppersoncode=pGrouppersoncode; - personcode=pPersoncode; - companycode=pCompanycode; -} -/**Obtiene el valor de grouppersoncode -@return valor de grouppersoncode*/ -public Integer getGrouppersoncode(){ - return grouppersoncode; -} -/**Fija el valor de grouppersoncode -@param pGrouppersoncode nuevo Valor de grouppersoncode*/ -public void setGrouppersoncode(Integer pGrouppersoncode){ - grouppersoncode=pGrouppersoncode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TcustEconomicGroupKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustEconomicGroupKey))return false; - TcustEconomicGroupKey that = (TcustEconomicGroupKey) o; - if (this.getGrouppersoncode() == null || that.getGrouppersoncode() == null){ - return false; - } - if (! this.getGrouppersoncode().equals(that.getGrouppersoncode())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustEconomicGroupKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getGrouppersoncode() == null ? 0 : this.getGrouppersoncode().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLink.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLink.java.svn-base deleted file mode 100644 index 9f62dc9..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLink.java.svn-base +++ /dev/null @@ -1,337 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.util.List; -import javax.persistence.Query; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTFAMILIARLLINK - */ -@Entity(name = "TcustFamiliarlLink") -@Table(name = "TCUSTFAMILIARLLINK") -public class TcustFamiliarlLink extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustFamiliarlLink - */ - @EmbeddedId - private TcustFamiliarlLinkKey pk; - @Column(name = "FAMILIARLINKCATALOG", nullable = true) - /** - * Codigo de catalogo 1 Padre, 3 Madre, 3 Hermano/a, 4 Conyuge. - */ - private String familiarlinkcatalog; - @Column(name = "FAMILIARLINKCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo FAMILIARLINK, vinculaciones familiares - */ - private String familiarlinkcatalogcode; - @Version - @Column(name = "RECORDVERSION", nullable = false) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "PROPERTYDIVISION", nullable = true) - /** - * Y Indica que existe separacion de bienes, N mop existe separacion de - * bienes - */ - private String propertydivision; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - //METODOS MANUALES - /** - * Sentencia que devuelve las excepciones de una solicitud. - */ - private static final String JPQL_SOL_TCUSTFAMILIARLINK = "from TcustFamiliarlLink tcustFamiliarLink " - + " where tcustFamiliarLink.pk.personcode = :personcode "; - /** - * - */ - private static final String JPQL_SOL_TCUSTFAMILIARLINKPERSONCODE = "from TcustFamiliarlLink tcustFamiliarLink " - + " where tcustFamiliarLink.pk.linkpersoncode = :personcode "; - - /** - * Contructor por defecto - */ - public TcustFamiliarlLink() { - } - - /** - * Contructor de TcustFamiliarlLink - * - * @param pPk Clave Primaria del entity - * @param pRecordversion Optimistic locking del registro - */ - public TcustFamiliarlLink(TcustFamiliarlLinkKey pPk, Integer pRecordversion) { - this(); - pk = pPk; - recordversion = pRecordversion; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustFamiliarlLink - */ - public static TcustFamiliarlLink find(EntityManager pEntityManager, TcustFamiliarlLinkKey pKey) throws Exception { - TcustFamiliarlLink obj = pEntityManager.find(TcustFamiliarlLink.class, pKey); - return obj; - } - - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByPersonCode(EntityManager pEntityManager, Integer pPersonCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TcustFamiliarlLink.JPQL_SOL_TCUSTFAMILIARLINK); - qry.setParameter("personcode", pPersonCode); - lObjects = qry.getResultList(); - return lObjects; - } - - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByPersonCodeLink(EntityManager pEntityManager, Integer pPersonCodeLink) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TcustFamiliarlLink.JPQL_SOL_TCUSTFAMILIARLINKPERSONCODE); - qry.setParameter("personcode", pPersonCodeLink); - lObjects = qry.getResultList(); - return lObjects; - } - - /** - * Entrega la Clave primaria de TcustFamiliarlLink - * - * @return El objeto que referencia a la Clave primaria de - * TcustFamiliarlLink - */ - public TcustFamiliarlLinkKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustFamiliarlLink - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustFamiliarlLink - */ - public void setPk(TcustFamiliarlLinkKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de familiarlinkcatalog - * - * @return valor de familiarlinkcatalog - */ - public String getFamiliarlinkcatalog() { - return familiarlinkcatalog; - } - - /** - * Fija el valor de familiarlinkcatalog - * - * @param pFamiliarlinkcatalog nuevo Valor de familiarlinkcatalog - */ - public void setFamiliarlinkcatalog(String pFamiliarlinkcatalog) { - familiarlinkcatalog = pFamiliarlinkcatalog; - } - - /** - * Obtiene el valor de familiarlinkcatalogcode - * - * @return valor de familiarlinkcatalogcode - */ - public String getFamiliarlinkcatalogcode() { - return familiarlinkcatalogcode; - } - - /** - * Fija el valor de familiarlinkcatalogcode - * - * @param pFamiliarlinkcatalogcode nuevo Valor de familiarlinkcatalogcode - */ - public void setFamiliarlinkcatalogcode(String pFamiliarlinkcatalogcode) { - familiarlinkcatalogcode = pFamiliarlinkcatalogcode; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de propertydivision - * - * @return valor de propertydivision - */ - public String getPropertydivision() { - return propertydivision; - } - - /** - * Fija el valor de propertydivision - * - * @param pPropertydivision nuevo Valor de propertydivision - */ - public void setPropertydivision(String pPropertydivision) { - propertydivision = pPropertydivision; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustFamiliarlLink)) { - return false; - } - TcustFamiliarlLink that = (TcustFamiliarlLink) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustFamiliarlLink - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustFamiliarlLink - */ - public Object createInstance() { - TcustFamiliarlLink instance = new TcustFamiliarlLink(); - instance.setPk(new TcustFamiliarlLinkKey()); - return instance; - } - - /** - * Clona la entidad TcustFamiliarlLink - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustFamiliarlLink p = (TcustFamiliarlLink) this.clone(); - p.setPk((TcustFamiliarlLinkKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLinkKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLinkKey.java.svn-base deleted file mode 100644 index 67ab20e..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFamiliarlLinkKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTFAMILIARLLINK*/ -@Embeddable -public class TcustFamiliarlLinkKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="LINKPERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer linkpersoncode; - -/**Contructor por defecto*/ -public TcustFamiliarlLinkKey(){} -/**Contructor de TcustFamiliarlLinkKey -@param pPersoncode Codigo de persona -@param pLinkpersoncode Codigo de persona -*/ -public TcustFamiliarlLinkKey(Integer pPersoncode,Integer pLinkpersoncode){ - personcode=pPersoncode; - linkpersoncode=pLinkpersoncode; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de linkpersoncode -@return valor de linkpersoncode*/ -public Integer getLinkpersoncode(){ - return linkpersoncode; -} -/**Fija el valor de linkpersoncode -@param pLinkpersoncode nuevo Valor de linkpersoncode*/ -public void setLinkpersoncode(Integer pLinkpersoncode){ - linkpersoncode=pLinkpersoncode; -} - -/**Implementacin de la comparacin de TcustFamiliarlLinkKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustFamiliarlLinkKey))return false; - TcustFamiliarlLinkKey that = (TcustFamiliarlLinkKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getLinkpersoncode() == null || that.getLinkpersoncode() == null){ - return false; - } - if (! this.getLinkpersoncode().equals(that.getLinkpersoncode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustFamiliarlLinkKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getLinkpersoncode() == null ? 0 : this.getLinkpersoncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFinancialInstitutions.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFinancialInstitutions.java.svn-base deleted file mode 100644 index ca97ed3..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustFinancialInstitutions.java.svn-base +++ /dev/null @@ -1,164 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTFINANCIALINSTITUTIONS - */ -@Entity(name = "TcustFinancialInstitutions") -@Table(name = "TCUSTFINANCIALINSTITUTIONS") -public class TcustFinancialInstitutions extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustFinancialInstitutions - */ - @Id - @Column(name = "PERSONCODE", nullable = false, updatable = false) - private Integer pk; - - /** - * Contructor por defecto - */ - public TcustFinancialInstitutions() { - } - - /** - * Contructor de TcustFinancialInstitutions - * - * @param pPk Clave Primaria del entity - */ - public TcustFinancialInstitutions(Integer pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustFinancialInstitutions - */ - public static TcustFinancialInstitutions find(EntityManager pEntityManager, Object pKey) throws Exception { - TcustFinancialInstitutions obj = pEntityManager.find(TcustFinancialInstitutions.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustFinancialInstitutions - * - * @return El objeto que referencia a la Clave primaria de - * TcustFinancialInstitutions - */ - public Integer getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustFinancialInstitutions - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustFinancialInstitutions - */ - public void setPk(Integer pPk) { - pk = pPk; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustFinancialInstitutions)) { - return false; - } - TcustFinancialInstitutions that = (TcustFinancialInstitutions) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad - * TcustFinancialInstitutions - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco - * TcustFinancialInstitutions - */ - public Object createInstance() { - TcustFinancialInstitutions instance = new TcustFinancialInstitutions(); - return instance; - } - - /** - * Clona la entidad TcustFinancialInstitutions - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustFinancialInstitutions p = (TcustFinancialInstitutions) this.clone(); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustInsurance.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustInsurance.java.svn-base deleted file mode 100644 index 6d2ffd6..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustInsurance.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTINSURANCE - */ -@Entity(name = "TcustInsurance") -@Table(name = "TCUSTINSURANCE") -public class TcustInsurance extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustInsurance - */ - @Id - @Column(name = "PERSONCODE", nullable = false, updatable = false) - private Integer pk; - - /** - * Contructor por defecto - */ - public TcustInsurance() { - } - - /** - * Contructor de TcustInsurance - * - * @param pPk Clave Primaria del entity - */ - public TcustInsurance(Integer pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustInsurance - */ - public static TcustInsurance find(EntityManager pEntityManager, Object pKey) throws Exception { - TcustInsurance obj = pEntityManager.find(TcustInsurance.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustInsurance - * - * @return El objeto que referencia a la Clave primaria de TcustInsurance - */ - public Integer getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustInsurance - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustInsurance - */ - public void setPk(Integer pPk) { - pk = pPk; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustInsurance)) { - return false; - } - TcustInsurance that = (TcustInsurance) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustInsurance - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustInsurance - */ - public Object createInstance() { - TcustInsurance instance = new TcustInsurance(); - return instance; - } - - /** - * Clona la entidad TcustInsurance - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustInsurance p = (TcustInsurance) this.clone(); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLink.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLink.java.svn-base deleted file mode 100644 index 87d9337..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLink.java.svn-base +++ /dev/null @@ -1,356 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTLEGALLINK - */ -@Entity(name = "TcustLegalLink") -@Table(name = "TCUSTLEGALLINK") -public class TcustLegalLink extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustLegalLink - */ - @EmbeddedId - private TcustLegalLinkKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro del telefono - */ - private Timestamp datefrom; - @Column(name = "LEGALLINKCATALOG", nullable = true) - /** - * Codigo de catalogo PG1 Causales P01 y G01 - */ - private String legallinkcatalog; - @Column(name = "LEGALLINKCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo LEGALLINK vinculaciones legales - */ - private String legallinkcatalogcode; - @Version - @Column(name = "RECORDVERSION", nullable = false) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "INGRESSDATE", nullable = true) - /** - * Fecha de inicio de la vinculacion. - */ - private Date ingressdate; - @Column(name = "EXITDATE", nullable = true) - /** - * Fecha en la que finaliza la vinculacion de la persona. - */ - private Date exitdate; - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustLegalLink() { - } - - /** - * Contructor de TcustLegalLink - * - * @param pPk Clave Primaria del entity - * @param pRecordversion Optimistic locking del registro - */ - public TcustLegalLink(TcustLegalLinkKey pPk, Integer pRecordversion) { - this(); - pk = pPk; - recordversion = pRecordversion; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustLegalLink - */ - public static TcustLegalLink find(EntityManager pEntityManager, TcustLegalLinkKey pKey) throws Exception { - TcustLegalLink obj = pEntityManager.find(TcustLegalLink.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustLegalLink - * - * @return El objeto que referencia a la Clave primaria de TcustLegalLink - */ - public TcustLegalLinkKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustLegalLink - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustLegalLink - */ - public void setPk(TcustLegalLinkKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de legallinkcatalog - * - * @return valor de legallinkcatalog - */ - public String getLegallinkcatalog() { - return legallinkcatalog; - } - - /** - * Fija el valor de legallinkcatalog - * - * @param pLegallinkcatalog nuevo Valor de legallinkcatalog - */ - public void setLegallinkcatalog(String pLegallinkcatalog) { - legallinkcatalog = pLegallinkcatalog; - } - - /** - * Obtiene el valor de legallinkcatalogcode - * - * @return valor de legallinkcatalogcode - */ - public String getLegallinkcatalogcode() { - return legallinkcatalogcode; - } - - /** - * Fija el valor de legallinkcatalogcode - * - * @param pLegallinkcatalogcode nuevo Valor de legallinkcatalogcode - */ - public void setLegallinkcatalogcode(String pLegallinkcatalogcode) { - legallinkcatalogcode = pLegallinkcatalogcode; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de ingressdate - * - * @return valor de ingressdate - */ - public Date getIngressdate() { - return ingressdate; - } - - /** - * Fija el valor de ingressdate - * - * @param pIngressdate nuevo Valor de ingressdate - */ - public void setIngressdate(Date pIngressdate) { - ingressdate = pIngressdate; - } - - /** - * Obtiene el valor de exitdate - * - * @return valor de exitdate - */ - public Date getExitdate() { - return exitdate; - } - - /** - * Fija el valor de exitdate - * - * @param pExitdate nuevo Valor de exitdate - */ - public void setExitdate(Date pExitdate) { - exitdate = pExitdate; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustLegalLink)) { - return false; - } - TcustLegalLink that = (TcustLegalLink) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustLegalLink - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustLegalLink - */ - public Object createInstance() { - TcustLegalLink instance = new TcustLegalLink(); - instance.setPk(new TcustLegalLinkKey()); - return instance; - } - - /** - * Clona la entidad TcustLegalLink - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustLegalLink p = (TcustLegalLink) this.clone(); - p.setPk((TcustLegalLinkKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLinkKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLinkKey.java.svn-base deleted file mode 100644 index 6e10352..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustLegalLinkKey.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTLEGALLINK*/ -@Embeddable -public class TcustLegalLinkKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="LINKPERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer linkpersoncode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del telefono -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustLegalLinkKey(){} -/**Contructor de TcustLegalLinkKey -@param pPersoncode Codigo de persona -@param pLinkpersoncode Codigo de persona -@param pCompanycode Codigo de compania -@param pDateto Fecha hasta la cual esta vigente el registro del telefono -*/ -public TcustLegalLinkKey(Integer pPersoncode,Integer pLinkpersoncode,Integer pCompanycode,Timestamp pDateto){ - personcode=pPersoncode; - linkpersoncode=pLinkpersoncode; - companycode=pCompanycode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de linkpersoncode -@return valor de linkpersoncode*/ -public Integer getLinkpersoncode(){ - return linkpersoncode; -} -/**Fija el valor de linkpersoncode -@param pLinkpersoncode nuevo Valor de linkpersoncode*/ -public void setLinkpersoncode(Integer pLinkpersoncode){ - linkpersoncode=pLinkpersoncode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustLegalLinkKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustLegalLinkKey))return false; - TcustLegalLinkKey that = (TcustLegalLinkKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getLinkpersoncode() == null || that.getLinkpersoncode() == null){ - return false; - } - if (! this.getLinkpersoncode().equals(that.getLinkpersoncode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustLegalLinkKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getLinkpersoncode() == null ? 0 : this.getLinkpersoncode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustNotaryOffice.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustNotaryOffice.java.svn-base deleted file mode 100644 index b28b73b..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustNotaryOffice.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTNOTARYOFFICE - */ -@Entity(name = "TcustNotaryOffice") -@Table(name = "TCUSTNOTARYOFFICE") -public class TcustNotaryOffice extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustNotaryOffice - */ - @Id - @Column(name = "PERSONCODE", nullable = false, updatable = false) - private Integer pk; - - /** - * Contructor por defecto - */ - public TcustNotaryOffice() { - } - - /** - * Contructor de TcustNotaryOffice - * - * @param pPk Clave Primaria del entity - */ - public TcustNotaryOffice(Integer pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustNotaryOffice - */ - public static TcustNotaryOffice find(EntityManager pEntityManager, Object pKey) throws Exception { - TcustNotaryOffice obj = pEntityManager.find(TcustNotaryOffice.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustNotaryOffice - * - * @return El objeto que referencia a la Clave primaria de TcustNotaryOffice - */ - public Integer getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustNotaryOffice - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustNotaryOffice - */ - public void setPk(Integer pPk) { - pk = pPk; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustNotaryOffice)) { - return false; - } - TcustNotaryOffice that = (TcustNotaryOffice) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TcustNotaryOffice - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TcustNotaryOffice - */ - public Object createInstance() { - TcustNotaryOffice instance = new TcustNotaryOffice(); - return instance; - } - - /** - * Clona la entidad TcustNotaryOffice - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustNotaryOffice p = (TcustNotaryOffice) this.clone(); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustSupervisor.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustSupervisor.java.svn-base deleted file mode 100644 index 6364000..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/company/.svn/text-base/TcustSupervisor.java.svn-base +++ /dev/null @@ -1,193 +0,0 @@ -package com.fp.persistence.pcustomer.company; - -import javax.persistence.Entity; -import com.fp.dto.hb.Log; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTSUPERVISOR*/ -@Entity(name="TcustSupervisor") -@Table(name="TCUSTSUPERVISOR") -public class TcustSupervisor extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustSupervisor -*/ -@Id -@Column(name="PERSONCODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="CODEFILE", nullable=true) - -/** -* Codigo de imagen -*/ -private Integer codefile; - -@Column(name="SUPERVISORID", nullable=true) - -/** -* codigo fiscalizador -*/ -private String supervisorid; - -@Column(name="PERFORMANCE", nullable=true) - -/** -* Indice de desempeo -*/ -private Integer performance; - -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TcustSupervisor(){ -} -/**Contructor de TcustSupervisor -@param pPk Clave Primaria del entity -*/ -public TcustSupervisor(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustSupervisor -*/ -public static TcustSupervisor find(EntityManager pEntityManager,Object pKey) throws Exception{ - TcustSupervisor obj = pEntityManager.find(TcustSupervisor.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustSupervisor -@return El objeto que referencia a la Clave primaria de TcustSupervisor -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustSupervisor -@param pPk El objeto que referencia a la nueva Clave primaria de TcustSupervisor -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de codefile -@return valor de codefile*/ -public Integer getCodefile(){ - return codefile; -} -/**Fija el valor de codefile -@param pCodefile nuevo Valor de codefile*/ -public void setCodefile(Integer pCodefile){ - codefile=pCodefile; -} - -/**Obtiene el valor de supervisorid -@return valor de supervisorid*/ -public String getSupervisorid(){ - return supervisorid; -} -/**Fija el valor de supervisorid -@param pSupervisorid nuevo Valor de supervisorid*/ -public void setSupervisorid(String pSupervisorid){ - supervisorid=pSupervisorid; -} - -/**Obtiene el valor de performance -@return valor de performance*/ -public Integer getPerformance(){ - return performance; -} -/**Fija el valor de performance -@param pPerformance nuevo Valor de performance*/ -public void setPerformance(Integer pPerformance){ - performance=pPerformance; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustSupervisor))return false; - TcustSupervisor that = (TcustSupervisor) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TcustSupervisor -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TcustSupervisor -*/ -public Object createInstance(){ - TcustSupervisor instance=new TcustSupervisor(); - return instance; -} -/**Clona la entidad TcustSupervisor -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustSupervisor p=(TcustSupervisor)this.clone(); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/entries deleted file mode 100644 index 481c61e..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/entries +++ /dev/null @@ -1,504 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene -svn://172.17.26.185/COMACO - - - -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TcustPersonAddress.java -file - - - - -2022-07-28T03:40:25.356728Z -6c78a8baef0bf93e40c028719be98d15 -2014-11-11T05:52:33.086071Z -2589 -cpiedra - - - - - - - - - - - - - - - - - - - - - -18846 - -TgeneActivity.java -file - - - - -2022-07-28T03:40:25.356728Z -4bbaaf7a70235a76095bf5bccc575e3b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6486 - -TcustPersonPhone.java -file - - - - -2022-07-28T03:40:25.357728Z -87808c8d3087a0dce59672080a0cf5aa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12196 - -TcustPersonBankReference.java -file - - - - -2022-07-28T03:40:25.357728Z -b17d1d6bca2212187114563f524cca64 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -14635 - -TcustPersonDetailKey.java -file - - - - -2022-07-28T03:40:25.357728Z -4d2ddcd593d5516475b44d92cdd9b063 -2014-09-12T09:18:40.142938Z -701 -dcruz - - - - - - - - - - - - - - - - - - - - - -3424 - -TcustPersonPersonalReferenceKey.java -file - - - - -2022-07-28T03:40:25.357728Z -3b6d2ff621fb1dce54dcf6650a7207c7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4527 - -TcustPersonAddressKey.java -file - - - - -2022-07-28T03:40:25.358728Z -d07f60eec0b5610e9abe9abc264c2449 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4353 - -TcustPerson.java -file - - - - -2022-07-28T03:40:25.358728Z -bac997660519ef9063bae5010fed9474 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3443 - -TcustPersonParametersId.java -file - - - - -2022-07-28T03:40:25.358728Z -929102ef530e79d795f1c17c2c440050 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5734 - -TcustPersonDetail.java -file - - - - -2022-07-28T03:40:25.358728Z -73dd7afe4cee9efe4dae19dd278b8cb3 -2015-03-19T04:16:15.728436Z -3943 -dlopez - - - - - - - - - - - - - - - - - - - - - -21635 - -TcustPersonPersonalReference.java -file - - - - -2022-07-28T03:40:25.359728Z -a28cc3fd9c56356e2ee77e7f2b38896c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10878 - -TcustPersonPhoneKey.java -file - - - - -2022-07-28T03:40:25.359728Z -2fb0218697aeba323a8824ca294c784e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4443 - -TgeneCiiu.java -file - - - - -2022-07-28T03:40:25.359728Z -8641369bc5d01887ac866fb286fea0ee -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6167 - -TcustPersonBankReferenceKey.java -file - - - - -2022-07-28T03:40:25.359728Z -c6fc367fdfc3f645f89be896d7cd4575 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4639 - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPerson.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPerson.java.svn-base deleted file mode 100644 index 641efcb..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPerson.java.svn-base +++ /dev/null @@ -1,120 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPERSON*/ -@Entity(name="TcustPerson") -@Table(name="TCUSTPERSON") -public class TcustPerson extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustPerson -*/ -@Id -@Column(name="PERSONCODE" ,nullable=false, updatable=false) -private Integer pk; -/**Contructor por defecto*/ -public TcustPerson(){ -} -/**Contructor de TcustPerson -@param pPk Clave Primaria del entity -*/ -public TcustPerson(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustPerson -*/ -public static TcustPerson find(EntityManager pEntityManager,Object pKey) throws Exception{ - TcustPerson obj = pEntityManager.find(TcustPerson.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustPerson -@return El objeto que referencia a la Clave primaria de TcustPerson -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustPerson -@param pPk El objeto que referencia a la nueva Clave primaria de TcustPerson -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustPerson))return false; - TcustPerson that = (TcustPerson) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TcustPerson -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TcustPerson -*/ -public Object createInstance(){ - TcustPerson instance=new TcustPerson(); - return instance; -} -/**Clona la entidad TcustPerson -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustPerson p=(TcustPerson)this.clone(); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddress.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddress.java.svn-base deleted file mode 100644 index 64caa80..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddress.java.svn-base +++ /dev/null @@ -1,701 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.GeneratedValue; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPERSONADDRESS - */ -@Entity(name = "TcustPersonAddress") -@Table(name = "TCUSTPERSONADDRESS") -public class TcustPersonAddress extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPersonAddress - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(ADDRESSNUMBER),0)+1 from TCUSTPERSONADDRESS where PERSONCODE = :personcode and DATETO = :dateto"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "personcode,pk.personcode;dateto,pk.dateto"), @Parameter(name = "field", value = "addressnumber") }) - @GeneratedValue(generator = "seq_id") - private TcustPersonAddressKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro de la direccion. - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Manejo de optimistic locking - */ - private Integer recordversion; - - @Column(name = "ADDRESSTYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1 OFICINA, 2 DOMICILIO - */ - private String addresstypecatalog; - - @Column(name = "ADDRESSTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo ADDRESSTYPE, codigo de tipo de saldo - */ - private String addresstypecatalogcode; - - @Column(name = "COUNTRYCODE", nullable = true) - /** - * Codigo de pa�s - */ - private String countrycode; - - @Column(name = "PROVINCECODE", nullable = true) - /** - * Codigo de provincia - */ - private String provincecode; - - @Column(name = "CANTONCODE", nullable = true) - /** - * Codigo de canton - */ - private String cantoncode; - - @Column(name = "CITYCODE", nullable = true) - /** - * Codigo de cuidad - */ - private String citycode; - - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario que crea el registro - */ - private String ingressusercode; - - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario que modifica el registro - */ - private String modifyusercode; - - @Column(name = "PRINCIPAL", nullable = true) - /** - * Y indica que es la direccion principal del cliente, N no es la direccion - * principal - */ - private String principal; - - @Column(name = "STREET", nullable = true) - /** - * Calle o avenida en la que se encuentra la direccion - */ - private String street; - - @Column(name = "STREETNUMBER", nullable = true) - /** - * Numero de casa o departamento - */ - private String streetnumber; - - @Column(name = "DEPARTMENT", nullable = true) - /** - * Numero de departamento - */ - private String department; - - @Column(name = "URBANIZATION", nullable = true) - /** - * Nombre del urbanizacion - */ - private String urbanization; - - @Column(name = "ADDRESS", nullable = true) - /** - * Texto libre de la direccion. - */ - private String address; - - @Column(name = "REMARK", nullable = true) - /** - * Comentarios, texto libre - */ - private String remark; - - @Column(name = "PARROQUIACODE", nullable = true) - /** - * Codigo de parroquia - */ - private String parroquiacode; - - /** - * Contructor por defecto - */ - public TcustPersonAddress() { - } - - /** - * Contructor de TcustPersonAddress - * - * @param pPk Clave Primaria del entity - */ - public TcustPersonAddress(TcustPersonAddressKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPersonAddress - */ - public static TcustPersonAddress find(EntityManager pEntityManager, TcustPersonAddressKey pKey) throws Exception { - TcustPersonAddress obj = pEntityManager.find(TcustPersonAddress.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPersonAddress - * - * @return El objeto que referencia a la Clave primaria de TcustPersonAddress - */ - public TcustPersonAddressKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPersonAddress - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPersonAddress - */ - public void setPk(TcustPersonAddressKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de addresstypecatalog - * - * @return valor de addresstypecatalog - */ - public String getAddresstypecatalog() { - return this.addresstypecatalog; - } - - /** - * Fija el valor de addresstypecatalog - * - * @param pAddresstypecatalog nuevo Valor de addresstypecatalog - */ - public void setAddresstypecatalog(String pAddresstypecatalog) { - this.addresstypecatalog = pAddresstypecatalog; - } - - /** - * Obtiene el valor de addresstypecatalogcode - * - * @return valor de addresstypecatalogcode - */ - public String getAddresstypecatalogcode() { - return this.addresstypecatalogcode; - } - - /** - * Fija el valor de addresstypecatalogcode - * - * @param pAddresstypecatalogcode nuevo Valor de addresstypecatalogcode - */ - public void setAddresstypecatalogcode(String pAddresstypecatalogcode) { - this.addresstypecatalogcode = pAddresstypecatalogcode; - } - - /** - * Obtiene el valor de countrycode - * - * @return valor de countrycode - */ - public String getCountrycode() { - return this.countrycode; - } - - /** - * Fija el valor de countrycode - * - * @param pCountrycode nuevo Valor de countrycode - */ - public void setCountrycode(String pCountrycode) { - this.countrycode = pCountrycode; - } - - /** - * Obtiene el valor de provincecode - * - * @return valor de provincecode - */ - public String getProvincecode() { - return this.provincecode; - } - - /** - * Fija el valor de provincecode - * - * @param pProvincecode nuevo Valor de provincecode - */ - public void setProvincecode(String pProvincecode) { - this.provincecode = pProvincecode; - } - - /** - * Obtiene el valor de cantoncode - * - * @return valor de cantoncode - */ - public String getCantoncode() { - return this.cantoncode; - } - - /** - * Fija el valor de cantoncode - * - * @param pCantoncode nuevo Valor de cantoncode - */ - public void setCantoncode(String pCantoncode) { - this.cantoncode = pCantoncode; - } - - /** - * Obtiene el valor de citycode - * - * @return valor de citycode - */ - public String getCitycode() { - return this.citycode; - } - - /** - * Fija el valor de citycode - * - * @param pCitycode nuevo Valor de citycode - */ - public void setCitycode(String pCitycode) { - this.citycode = pCitycode; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - /** - * Obtiene el valor de principal - * - * @return valor de principal - */ - public String getPrincipal() { - return this.principal; - } - - /** - * Fija el valor de principal - * - * @param pPrincipal nuevo Valor de principal - */ - public void setPrincipal(String pPrincipal) { - this.principal = pPrincipal; - } - - /** - * Obtiene el valor de street - * - * @return valor de street - */ - public String getStreet() { - return this.street; - } - - /** - * Fija el valor de street - * - * @param pStreet nuevo Valor de street - */ - public void setStreet(String pStreet) { - this.street = pStreet; - } - - /** - * Obtiene el valor de streetnumber - * - * @return valor de streetnumber - */ - public String getStreetnumber() { - return this.streetnumber; - } - - /** - * Fija el valor de streetnumber - * - * @param pStreetnumber nuevo Valor de streetnumber - */ - public void setStreetnumber(String pStreetnumber) { - this.streetnumber = pStreetnumber; - } - - /** - * Obtiene el valor de department - * - * @return valor de department - */ - public String getDepartment() { - return this.department; - } - - /** - * Fija el valor de department - * - * @param pDepartment nuevo Valor de department - */ - public void setDepartment(String pDepartment) { - this.department = pDepartment; - } - - /** - * Obtiene el valor de urbanization - * - * @return valor de urbanization - */ - public String getUrbanization() { - return this.urbanization; - } - - /** - * Fija el valor de urbanization - * - * @param pUrbanization nuevo Valor de urbanization - */ - public void setUrbanization(String pUrbanization) { - this.urbanization = pUrbanization; - } - - /** - * Obtiene el valor de address - * - * @return valor de address - */ - public String getAddress() { - return this.address; - } - - /** - * Fija el valor de address - * - * @param pAddress nuevo Valor de address - */ - public void setAddress(String pAddress) { - this.address = pAddress; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de parroquiacode - * - * @return valor de parroquiacode - */ - public String getParroquiacode() { - return this.parroquiacode; - } - - /** - * Fija el valor de parroquiacode - * - * @param pParroquiacode nuevo Valor de parroquiacode - */ - public void setParroquiacode(String pParroquiacode) { - this.parroquiacode = pParroquiacode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPersonAddress)) { - return false; - } - TcustPersonAddress that = (TcustPersonAddress) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPersonAddress - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPersonAddress - */ - @Override - public Object createInstance() { - TcustPersonAddress instance = new TcustPersonAddress(); - instance.setPk(new TcustPersonAddressKey()); - return instance; - } - - /** - * Clona la entidad TcustPersonAddress - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPersonAddress p = (TcustPersonAddress) this.clone(); - p.setPk((TcustPersonAddressKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // Metodos manuales - private static final String JPQL_EMAIL = "from TcustPersonAddress t" + " where t.pk.personcode = :personcode " + " and t.pk.dateto = :dateto " - + " and t.addresstypecatalog = :addresstype "; - - /** - * Metodo que emtrega la direccion email de una persona, si existe mas de una direccion email asociada a una persona - * entrega la primera que encuentre en la base. - * - * @param pEntityManager Session de la base de datos - * @param pPersonCode Codigo de persona. - * @return String - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static String getEmail(EntityManager pEntityManager, Integer pPersonCode) throws Exception { - String email = null; - Query qry = pEntityManager.createQuery(TcustPersonAddress.JPQL_EMAIL); - qry.setParameter("personcode", pPersonCode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - qry.setParameter("addresstype", "3"); - List ldata = qry.getResultList(); - if ((ldata == null) || ldata.isEmpty()) { - return email; - } - for (TcustPersonAddress obj : ldata) { - email = obj.getAddress(); - break; - } - return email; - } - - /** - * Sentencia que devuelve un registro vigente de TcustPersonAddress - */ - private static final String JPQL_PERSON_ADDRESS = "from TcustPersonAddress tcpa" + " where tcpa.pk.personcode = :personcode" - + " and tcpa.pk.addressnumber = :addressnumber" + " and tcpa.pk.dateto = :dateto"; - - /** - * Metodo que entrega datos de una Direccion definida en TcustPersonAddress. - * - * @param pEntityManager Session de la base de datos. - * @param personcode Codigo de la persona a quien pertenece la Direccion. - * @param addressnumber Numero de la direccion. - * @return tcustPersonAddress - * @throws Exception - */ - public static TcustPersonAddress findByPersonCode(EntityManager pEntityManager, Integer personcode, Integer addressnumber) throws Exception { - Query qry = pEntityManager.createQuery(TcustPersonAddress.JPQL_PERSON_ADDRESS); - qry.setParameter("personcode", personcode); - qry.setParameter("addressnumber", addressnumber); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - try { - return (TcustPersonAddress) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - /** - * Sentencia que devuelve un registro vigente de TcustPersonAddress - */ - private static final String JPQL_PERSON = "from TcustPersonAddress tcpa" + " where tcpa.pk.personcode = :personcode" - + " and tcpa.pk.dateto = :dateto"; - - /** - * Metodo que entrega datos de una Direccion definida en TcustPersonAddress. - * - * @param pEntityManager Session de la base de datos. - * @param personcode Codigo de la persona a quien pertenece la Direccion. - * @param addressnumber Numero de la direccion. - * @return tcustPersonAddress - * @throws Exception - */ - public static List findByPersonCode(EntityManager pEntityManager, Integer personcode) throws Exception { - Query qry = pEntityManager.createQuery(TcustPersonAddress.JPQL_PERSON); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - return qry.getResultList(); - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddressKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddressKey.java.svn-base deleted file mode 100644 index 4ee10fa..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonAddressKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONADDRESS*/ -@Embeddable -public class TcustPersonAddressKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="ADDRESSNUMBER", nullable=false,updatable=false) - -/** -* Numero de direccion, secuencia por codigo de persona. -*/ -private Integer addressnumber; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro de la direccion. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPersonAddressKey(){} -/**Contructor de TcustPersonAddressKey -@param pPersoncode Codigo de persona -@param pAddressnumber Numero de direccion, secuencia por codigo de persona. -@param pDateto Fecha hasta la cual esta vigente el registro de la direccion. -*/ -public TcustPersonAddressKey(Integer pPersoncode,Integer pAddressnumber,Timestamp pDateto){ - personcode=pPersoncode; - addressnumber=pAddressnumber; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de addressnumber -@return valor de addressnumber*/ -public Integer getAddressnumber(){ - return addressnumber; -} -/**Fija el valor de addressnumber -@param pAddressnumber nuevo Valor de addressnumber*/ -public void setAddressnumber(Integer pAddressnumber){ - addressnumber=pAddressnumber; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustPersonAddressKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonAddressKey))return false; - TcustPersonAddressKey that = (TcustPersonAddressKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getAddressnumber() == null || that.getAddressnumber() == null){ - return false; - } - if (! this.getAddressnumber().equals(that.getAddressnumber())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPersonAddressKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getAddressnumber() == null ? 0 : this.getAddressnumber().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReference.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReference.java.svn-base deleted file mode 100644 index 7f3b798..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReference.java.svn-base +++ /dev/null @@ -1,534 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPERSONBANKREFERENCE - */ -@Entity(name = "TcustPersonBankReference") -@Table(name = "TCUSTPERSONBANKREFERENCE") -public class TcustPersonBankReference extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPersonBankReference - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(REFERENCESEQUENCE),0)+1 from TCUSTPERSONBANKREFERENCE where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "referencesequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPersonBankReferenceKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro del telefono - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - @Column(name = "BANKPERSONCODE", nullable = true) - /** - * Codigo de persona asociada al banco de referencia de la persona - */ - private Integer bankpersoncode; - @Column(name = "NAME", nullable = true) - /** - * Nombre de la institucion fincniera asociada a la cuenta de referencia - */ - private String name; - @Column(name = "ACCOUNTTYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1 Corriente, 2 Ahorro - */ - private String accounttypecatalog; - @Column(name = "ACCOUNTTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo ACCOUNTTYPE de tipo de cuenta - */ - private String accounttypecatalogcode; - @Column(name = "ACCOUNTNUMBER", nullable = true) - /** - * Numero de cuenta, de referencia bancaria - */ - private String accountnumber; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "FIGURESNUMBER", nullable = true) - /** - * Numero de cifras de manejo - */ - private Integer figuresnumber; - @Column(name = "FIGURESCATALOG", nullable = true) - /** - * Codigo de catalogo 1 Altas, 2 medias, 3 bajas - */ - private String figurescatalog; - @Column(name = "FIGURESCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo FIGURES cifras de manejo - */ - private String figurescatalogcode; - @Column(name = "OPENINGDATE", nullable = true) - /** - * Fecha de apertura de la cuenta - */ - private Date openingdate; - @Column(name = "REMARK", nullable = true) - /** - * Observaciones - */ - private String remark; - - /** - * Contructor por defecto - */ - public TcustPersonBankReference() { - } - - /** - * Contructor de TcustPersonBankReference - * - * @param pPk Clave Primaria del entity - */ - public TcustPersonBankReference(TcustPersonBankReferenceKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPersonBankReference - */ - public static TcustPersonBankReference find(EntityManager pEntityManager, TcustPersonBankReferenceKey pKey) throws Exception { - TcustPersonBankReference obj = pEntityManager.find(TcustPersonBankReference.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPersonBankReference - * - * @return El objeto que referencia a la Clave primaria de - * TcustPersonBankReference - */ - public TcustPersonBankReferenceKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPersonBankReference - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPersonBankReference - */ - public void setPk(TcustPersonBankReferenceKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - /** - * Obtiene el valor de bankpersoncode - * - * @return valor de bankpersoncode - */ - public Integer getBankpersoncode() { - return this.bankpersoncode; - } - - /** - * Fija el valor de bankpersoncode - * - * @param pBankpersoncode nuevo Valor de bankpersoncode - */ - public void setBankpersoncode(Integer pBankpersoncode) { - this.bankpersoncode = pBankpersoncode; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return this.name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de accounttypecatalog - * - * @return valor de accounttypecatalog - */ - public String getAccounttypecatalog() { - return this.accounttypecatalog; - } - - /** - * Fija el valor de accounttypecatalog - * - * @param pAccounttypecatalog nuevo Valor de accounttypecatalog - */ - public void setAccounttypecatalog(String pAccounttypecatalog) { - this.accounttypecatalog = pAccounttypecatalog; - } - - /** - * Obtiene el valor de accounttypecatalogcode - * - * @return valor de accounttypecatalogcode - */ - public String getAccounttypecatalogcode() { - return this.accounttypecatalogcode; - } - - /** - * Fija el valor de accounttypecatalogcode - * - * @param pAccounttypecatalogcode nuevo Valor de accounttypecatalogcode - */ - public void setAccounttypecatalogcode(String pAccounttypecatalogcode) { - this.accounttypecatalogcode = pAccounttypecatalogcode; - } - - /** - * Obtiene el valor de accountnumber - * - * @return valor de accountnumber - */ - public String getAccountnumber() { - return this.accountnumber; - } - - /** - * Fija el valor de accountnumber - * - * @param pAccountnumber nuevo Valor de accountnumber - */ - public void setAccountnumber(String pAccountnumber) { - this.accountnumber = pAccountnumber; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de figuresnumber - * - * @return valor de figuresnumber - */ - public Integer getFiguresnumber() { - return this.figuresnumber; - } - - /** - * Fija el valor de figuresnumber - * - * @param pFiguresnumber nuevo Valor de figuresnumber - */ - public void setFiguresnumber(Integer pFiguresnumber) { - this.figuresnumber = pFiguresnumber; - } - - /** - * Obtiene el valor de figurescatalog - * - * @return valor de figurescatalog - */ - public String getFigurescatalog() { - return this.figurescatalog; - } - - /** - * Fija el valor de figurescatalog - * - * @param pFigurescatalog nuevo Valor de figurescatalog - */ - public void setFigurescatalog(String pFigurescatalog) { - this.figurescatalog = pFigurescatalog; - } - - /** - * Obtiene el valor de figurescatalogcode - * - * @return valor de figurescatalogcode - */ - public String getFigurescatalogcode() { - return this.figurescatalogcode; - } - - /** - * Fija el valor de figurescatalogcode - * - * @param pFigurescatalogcode nuevo Valor de figurescatalogcode - */ - public void setFigurescatalogcode(String pFigurescatalogcode) { - this.figurescatalogcode = pFigurescatalogcode; - } - - /** - * Obtiene el valor de openingdate - * - * @return valor de openingdate - */ - public Date getOpeningdate() { - return this.openingdate; - } - - /** - * Fija el valor de openingdate - * - * @param pOpeningdate nuevo Valor de openingdate - */ - public void setOpeningdate(Date pOpeningdate) { - this.openingdate = pOpeningdate; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPersonBankReference)) { - return false; - } - TcustPersonBankReference that = (TcustPersonBankReference) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad - * TcustPersonBankReference - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco - * TcustPersonBankReference - */ - @Override - public Object createInstance() { - TcustPersonBankReference instance = new TcustPersonBankReference(); - instance.setPk(new TcustPersonBankReferenceKey()); - return instance; - } - - /** - * Clona la entidad TcustPersonBankReference - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPersonBankReference p = (TcustPersonBankReference) this.clone(); - p.setPk((TcustPersonBankReferenceKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReferenceKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReferenceKey.java.svn-base deleted file mode 100644 index f85592f..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonBankReferenceKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONBANKREFERENCE*/ -@Embeddable -public class TcustPersonBankReferenceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="REFERENCESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de referencias bancarias del cliente -*/ -private Integer referencesequence; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del telefono -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPersonBankReferenceKey(){} -/**Contructor de TcustPersonBankReferenceKey -@param pPersoncode Codigo de persona -@param pReferencesequence Secuencia de referencias bancarias del cliente -@param pDateto Fecha hasta la cual esta vigente el registro del telefono -*/ -public TcustPersonBankReferenceKey(Integer pPersoncode,Integer pReferencesequence,Timestamp pDateto){ - personcode=pPersoncode; - referencesequence=pReferencesequence; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de referencesequence -@return valor de referencesequence*/ -public Integer getReferencesequence(){ - return referencesequence; -} -/**Fija el valor de referencesequence -@param pReferencesequence nuevo Valor de referencesequence*/ -public void setReferencesequence(Integer pReferencesequence){ - referencesequence=pReferencesequence; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustPersonBankReferenceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonBankReferenceKey))return false; - TcustPersonBankReferenceKey that = (TcustPersonBankReferenceKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getReferencesequence() == null || that.getReferencesequence() == null){ - return false; - } - if (! this.getReferencesequence().equals(that.getReferencesequence())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPersonBankReferenceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getReferencesequence() == null ? 0 : this.getReferencesequence().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetail.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetail.java.svn-base deleted file mode 100644 index 8195705..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetail.java.svn-base +++ /dev/null @@ -1,821 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import com.fp.dto.hb.Log; - -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -import javax.persistence.NoResultException; - -import com.fp.general.exception.GeneralException; -import com.fp.common.helper.Constant; - -import javax.persistence.Query; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPERSONDETAIL*/ -@Entity(name="TcustPersonDetail") -@Table(name="TCUSTPERSONDETAIL") -public class TcustPersonDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustPersonDetail -*/ -@EmbeddedId -private TcustPersonDetailKey pk; -@Version -@Column(name="RECORDVERSION", nullable=false) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual esta vigente el registro -*/ -private Timestamp datefrom; - -@Column(name="NAME", nullable=false) - -/** -* Nombre Legal de la persona -*/ -private String name; - -@Column(name="NICKNAME", nullable=true) - -/** -* Nombre preferido -*/ -private String nickname; - -@Column(name="IDENTIFICATIONCATALOG", nullable=true) - -/** -* CED, Cedula, RUC ruc, PAS pasoporte etc. -*/ -private String identificationcatalog; - -@Column(name="IDENTIFICATIONCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo IDENTIFICATION -*/ -private String identificationcatalogcode; - -@Column(name="IDENTIFICATION", nullable=false) - -/** -* Numero de cedula, ruc, pasaporte, etc.. -*/ -private String identification; - -@Column(name="INGRESSUSER", nullable=true) - -/** -* Codigo de usuario que crea el cliente -*/ -private String ingressuser; - -@Column(name="MODIFYUSER", nullable=true) - -/** -* Codigo de usuario que modifica datos del cliente -*/ -private String modifyuser; - -@Column(name="LANGUAGECODE", nullable=true) - -/** -* Codigo de idioma -*/ -private String languagecode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina en la que se ingreso la persona. -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal en la que se ingreso la persona. -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="PERSONTYPECATALOG", nullable=true) - -/** -* Codigo de catalogo 1 Natural, 2 Juridico -*/ -private String persontypecatalog; - -@Column(name="PERSONTYPECATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo PERSONTYPE, de tipo de persona -*/ -private String persontypecatalogcode; - -@Column(name="REGISTERDATE", nullable=true) - -/** -* Fecha de ingreso inicial de la persona. -*/ -private Date registerdate; - -@Column(name="INNERSCORE", nullable=true) - -/** -* Calificacion interna del banco. -*/ -private String innerscore; - -@Column(name="PARTHNERNUMBER", nullable=true) - -/** -* Codigo de socio -*/ -private String parthnernumber; - -@Column(name="DATEEXPIDENTIFICATION", nullable=true) - -/** -* Fecha de caducidad del documento de identidad -*/ -private Date dateexpidentification; - -@Column(name="TAXEXEMPT", nullable=true) - -/** -* Excento de impuesto -*/ -private String taxexempt; - -@Column(name="CLIENTTYPECATALOG", nullable=true) - -/** -* Persona natural, Publica Financiera, Privada Financiera -*/ -private String clienttypecatalog; - -@Column(name="CLIENTTYPECATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo CLIENTTYPE Tipo de Cliente -*/ -private String clienttypecatalogcode; - -@Column(name="ECONOMICSECTORCATALOG", nullable=true) - -/** -* Tipos de Sector: Gobierno central, hogares, No residentes , Empresas -*/ -private String economicsectorcatalog; - -@Column(name="ECONOMICSECTORCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo ECONOMICSECTOR Tipo de Sector -*/ -private String economicsectorcatalogcode; - -@Column(name="ACTIVITYCODE", nullable=true) - -/** -* Codigo de actividad -*/ -private String activitycode; - -@Column(name="ISMIGRATED", nullable=true) - -/** -* Y, indica que la informacion actual del cliente proviene de una migracion. -*/ -private String ismigrated; - -@Column(name="SBSEMPLOYEE", nullable=true) - -/** -* Codigo de empleado de la sbs -*/ -private String sbsemployee; - -@Column(name="SBSUSERCODE", nullable=true) - -/** -* Codigo de usuario utilizado en la sbs, se utiliza en la integracion con CAS -*/ -private String sbsusercode; - -@Column(name="LEGALREPRESENT", nullable=true) - -/** -* null -*/ -private String legalrepresent; - -@Column(name="LEGALREPRESENTIDENTIFICATION", nullable=true) - -/** -* null -*/ -private String legalrepresentidentification; - -@Column(name="MILITARYGRADE", nullable=true) - -/** -* Catalog del grado del militar en la tabla de catlogos -*/ -private String militarygrade; - -@Column(name="MILITARYGRADECODE", nullable=true) - -/** -* Catalogcode del grado del militar en la tabla de catlogos -*/ -private String militarygradecode; - -@Column(name="SIGN", nullable=true,length = 100000) - -/** -* Firma digital -*/ -private byte[] sign; - -@Column(name="PICTURE", nullable=true,length = 100000) - -/** -* Firma digital -*/ -private byte[] picture; - -@Column(name = "PHOTO", nullable = true) -/** - * Codigo de imagen - */ -private Integer photo; - -@Column(name="ECONIMICACT", nullable=true) - -/** -* Valor de la actividad economica -*/ -private String econimicact; - -/**Contructor por defecto*/ -public TcustPersonDetail(){ -} -/**Contructor de TcustPersonDetail -@param pPk Clave Primaria del entity -@param pRecordversion Optimistic locking del registro -@param pName Nombre Legal de la persona -@param pIdentification Numero de cedula, ruc, pasaporte, etc.. -*/ -public TcustPersonDetail(TcustPersonDetailKey pPk,Integer pRecordversion,String pName,String pIdentification){ - this(); - pk=pPk; - recordversion=pRecordversion; - name=pName; - identification=pIdentification; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustPersonDetail -*/ -public static TcustPersonDetail find(EntityManager pEntityManager,TcustPersonDetailKey pKey) throws Exception{ - TcustPersonDetail obj = pEntityManager.find(TcustPersonDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustPersonDetail -@return El objeto que referencia a la Clave primaria de TcustPersonDetail -*/ -public TcustPersonDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustPersonDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TcustPersonDetail -*/ -public void setPk(TcustPersonDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de name -@return valor de name*/ -public String getName(){ - return name; -} -/**Fija el valor de name -@param pName nuevo Valor de name*/ -public void setName(String pName){ - name=pName; -} - -/**Obtiene el valor de nickname -@return valor de nickname*/ -public String getNickname(){ - return nickname; -} -/**Fija el valor de nickname -@param pNickname nuevo Valor de nickname*/ -public void setNickname(String pNickname){ - nickname=pNickname; -} - -/**Obtiene el valor de identificationcatalog -@return valor de identificationcatalog*/ -public String getIdentificationcatalog(){ - return identificationcatalog; -} -/**Fija el valor de identificationcatalog -@param pIdentificationcatalog nuevo Valor de identificationcatalog*/ -public void setIdentificationcatalog(String pIdentificationcatalog){ - identificationcatalog=pIdentificationcatalog; -} - -/**Obtiene el valor de identificationcatalogcode -@return valor de identificationcatalogcode*/ -public String getIdentificationcatalogcode(){ - return identificationcatalogcode; -} -/**Fija el valor de identificationcatalogcode -@param pIdentificationcatalogcode nuevo Valor de identificationcatalogcode*/ -public void setIdentificationcatalogcode(String pIdentificationcatalogcode){ - identificationcatalogcode=pIdentificationcatalogcode; -} - -/**Obtiene el valor de identification -@return valor de identification*/ -public String getIdentification(){ - return identification; -} -/**Fija el valor de identification -@param pIdentification nuevo Valor de identification*/ -public void setIdentification(String pIdentification){ - identification=pIdentification; -} - -/**Obtiene el valor de ingressuser -@return valor de ingressuser*/ -public String getIngressuser(){ - return ingressuser; -} -/**Fija el valor de ingressuser -@param pIngressuser nuevo Valor de ingressuser*/ -public void setIngressuser(String pIngressuser){ - ingressuser=pIngressuser; -} - -/**Obtiene el valor de modifyuser -@return valor de modifyuser*/ -public String getModifyuser(){ - return modifyuser; -} -/**Fija el valor de modifyuser -@param pModifyuser nuevo Valor de modifyuser*/ -public void setModifyuser(String pModifyuser){ - modifyuser=pModifyuser; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de persontypecatalog -@return valor de persontypecatalog*/ -public String getPersontypecatalog(){ - return persontypecatalog; -} -/**Fija el valor de persontypecatalog -@param pPersontypecatalog nuevo Valor de persontypecatalog*/ -public void setPersontypecatalog(String pPersontypecatalog){ - persontypecatalog=pPersontypecatalog; -} - -/**Obtiene el valor de persontypecatalogcode -@return valor de persontypecatalogcode*/ -public String getPersontypecatalogcode(){ - return persontypecatalogcode; -} -/**Fija el valor de persontypecatalogcode -@param pPersontypecatalogcode nuevo Valor de persontypecatalogcode*/ -public void setPersontypecatalogcode(String pPersontypecatalogcode){ - persontypecatalogcode=pPersontypecatalogcode; -} - -/**Obtiene el valor de registerdate -@return valor de registerdate*/ -public Date getRegisterdate(){ - return registerdate; -} -/**Fija el valor de registerdate -@param pRegisterdate nuevo Valor de registerdate*/ -public void setRegisterdate(Date pRegisterdate){ - registerdate=pRegisterdate; -} - -/**Obtiene el valor de innerscore -@return valor de innerscore*/ -public String getInnerscore(){ - return innerscore; -} -/**Fija el valor de innerscore -@param pInnerscore nuevo Valor de innerscore*/ -public void setInnerscore(String pInnerscore){ - innerscore=pInnerscore; -} - -/**Obtiene el valor de parthnernumber -@return valor de parthnernumber*/ -public String getParthnernumber(){ - return parthnernumber; -} -/**Fija el valor de parthnernumber -@param pParthnernumber nuevo Valor de parthnernumber*/ -public void setParthnernumber(String pParthnernumber){ - parthnernumber=pParthnernumber; -} - -/**Obtiene el valor de dateexpidentification -@return valor de dateexpidentification*/ -public Date getDateexpidentification(){ - return dateexpidentification; -} -/**Fija el valor de dateexpidentification -@param pDateexpidentification nuevo Valor de dateexpidentification*/ -public void setDateexpidentification(Date pDateexpidentification){ - dateexpidentification=pDateexpidentification; -} - -/**Obtiene el valor de taxexempt -@return valor de taxexempt*/ -public String getTaxexempt(){ - return taxexempt; -} -/**Fija el valor de taxexempt -@param pTaxexempt nuevo Valor de taxexempt*/ -public void setTaxexempt(String pTaxexempt){ - taxexempt=pTaxexempt; -} - -/**Obtiene el valor de clienttypecatalog -@return valor de clienttypecatalog*/ -public String getClienttypecatalog(){ - return clienttypecatalog; -} -/**Fija el valor de clienttypecatalog -@param pClienttypecatalog nuevo Valor de clienttypecatalog*/ -public void setClienttypecatalog(String pClienttypecatalog){ - clienttypecatalog=pClienttypecatalog; -} - -/**Obtiene el valor de clienttypecatalogcode -@return valor de clienttypecatalogcode*/ -public String getClienttypecatalogcode(){ - return clienttypecatalogcode; -} -/**Fija el valor de clienttypecatalogcode -@param pClienttypecatalogcode nuevo Valor de clienttypecatalogcode*/ -public void setClienttypecatalogcode(String pClienttypecatalogcode){ - clienttypecatalogcode=pClienttypecatalogcode; -} - -/**Obtiene el valor de economicsectorcatalog -@return valor de economicsectorcatalog*/ -public String getEconomicsectorcatalog(){ - return economicsectorcatalog; -} -/**Fija el valor de economicsectorcatalog -@param pEconomicsectorcatalog nuevo Valor de economicsectorcatalog*/ -public void setEconomicsectorcatalog(String pEconomicsectorcatalog){ - economicsectorcatalog=pEconomicsectorcatalog; -} - -/**Obtiene el valor de economicsectorcatalogcode -@return valor de economicsectorcatalogcode*/ -public String getEconomicsectorcatalogcode(){ - return economicsectorcatalogcode; -} -/**Fija el valor de economicsectorcatalogcode -@param pEconomicsectorcatalogcode nuevo Valor de economicsectorcatalogcode*/ -public void setEconomicsectorcatalogcode(String pEconomicsectorcatalogcode){ - economicsectorcatalogcode=pEconomicsectorcatalogcode; -} - -/**Obtiene el valor de activitycode -@return valor de activitycode*/ -public String getActivitycode(){ - return activitycode; -} -/**Fija el valor de activitycode -@param pActivitycode nuevo Valor de activitycode*/ -public void setActivitycode(String pActivitycode){ - activitycode=pActivitycode; -} - -/**Obtiene el valor de ismigrated -@return valor de ismigrated*/ -public String getIsmigrated(){ - return ismigrated; -} -/**Fija el valor de ismigrated -@param pIsmigrated nuevo Valor de ismigrated*/ -public void setIsmigrated(String pIsmigrated){ - ismigrated=pIsmigrated; -} - -/**Obtiene el valor de sbsemployee -@return valor de sbsemployee*/ -public String getSbsemployee(){ - return sbsemployee; -} -/**Fija el valor de sbsemployee -@param pSbsemployee nuevo Valor de sbsemployee*/ -public void setSbsemployee(String pSbsemployee){ - sbsemployee=pSbsemployee; -} - -/**Obtiene el valor de sbsusercode -@return valor de sbsusercode*/ -public String getSbsusercode(){ - return sbsusercode; -} -/**Fija el valor de sbsusercode -@param pSbsusercode nuevo Valor de sbsusercode*/ -public void setSbsusercode(String pSbsusercode){ - sbsusercode=pSbsusercode; -} - -/**Obtiene el valor de legalrepresent -@return valor de legalrepresent*/ -public String getLegalrepresent(){ - return legalrepresent; -} -/**Fija el valor de legalrepresent -@param pLegalrepresent nuevo Valor de legalrepresent*/ -public void setLegalrepresent(String pLegalrepresent){ - legalrepresent=pLegalrepresent; -} - -/**Obtiene el valor de legalrepresentidentification -@return valor de legalrepresentidentification*/ -public String getLegalrepresentidentification(){ - return legalrepresentidentification; -} -/**Fija el valor de legalrepresentidentification -@param pLegalrepresentidentification nuevo Valor de legalrepresentidentification*/ -public void setLegalrepresentidentification(String pLegalrepresentidentification){ - legalrepresentidentification=pLegalrepresentidentification; -} - -/**Obtiene el valor de militarygrade -@return valor de militarygrade*/ -public String getMilitarygrade(){ - return militarygrade; -} -/**Fija el valor de militarygrade -@param pMilitarygrade nuevo Valor de militarygrade*/ -public void setMilitarygrade(String pMilitarygrade){ - militarygrade=pMilitarygrade; -} - -/**Obtiene el valor de militarygradecode -@return valor de militarygradecode*/ -public String getMilitarygradecode(){ - return militarygradecode; -} -/**Fija el valor de militarygradecode -@param pMilitarygradecode nuevo Valor de militarygradecode*/ -public void setMilitarygradecode(String pMilitarygradecode){ - militarygradecode=pMilitarygradecode; -} - - -/**Obtiene el valor de sign -@return valor de sign*/ -public byte[] getSign() { - return sign; -} -/**Fija el valor de sign -@param pMilitarygradecode nuevo Valor de sign*/ -public void setSign(byte[] sign) { - this.sign = sign; -} - -/**Obtiene el valor de picture -@return valor de picture*/ -public byte[] getPicture() { - return picture; -} -/**Fija el valor de picture -@param pMilitarygradecode nuevo Valor de picture*/ -public void setPicture(byte[] picture) { - this.picture = picture; -} - -/**Obtiene el valor de photo -@return valor de photo*/ -public Integer getPhoto() { - return photo; -} -/**Fija el valor de v -@param pMilitarygradecode nuevo Valor de photo*/ -public void setPhoto(Integer photo) { - this.photo = photo; -} - - -/**Obtiene el valor de actividad economica -@return valor de econimicact*/ -public String getEconimicact() { - return econimicact; -} -/**Fija el valor de actividad economica -@param pEconimicact nuevo Valor de econimicact*/ -public void setEconimicact(String pEconimicact){ - this.econimicact=pEconimicact; -} - - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustPersonDetail))return false; - TcustPersonDetail that = (TcustPersonDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TcustPersonDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TcustPersonDetail -*/ -public Object createInstance(){ - TcustPersonDetail instance=new TcustPersonDetail(); - instance.setPk(new TcustPersonDetailKey()); - return instance; -} -/**Clona la entidad TcustPersonDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustPersonDetail p=(TcustPersonDetail)this.clone(); - p.setPk((TcustPersonDetailKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} - -public static TcustPersonDetail find(EntityManager pEntityManager, Integer pPersonCode) - throws Exception - { - TcustPersonDetail tcustPersonDetail = null; - Query qry = pEntityManager.createQuery("from TcustPersonDetail tpd where tpd.pk.personcode = :personcode and tpd.pk.dateto = :dateto"); - - qry.setParameter("personcode", pPersonCode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - try - { - tcustPersonDetail = (TcustPersonDetail)qry.getSingleResult(); - } - catch (NoResultException e) - { - throw new GeneralException("CUST-0001", "PERSONA NO DEFINIDA EN TCUSTPERSONDETAIL: PERSONCODE:{0}", new Object[] { pPersonCode }); - } - return tcustPersonDetail; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetailKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetailKey.java.svn-base deleted file mode 100644 index 489b476..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonDetailKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONDETAIL*/ -@Embeddable -public class TcustPersonDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPersonDetailKey(){} -/**Contructor de TcustPersonDetailKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TcustPersonDetailKey(Integer pPersoncode,Timestamp pDateto){ - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TcustPersonDetailKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonDetailKey))return false; - TcustPersonDetailKey that = (TcustPersonDetailKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustPersonDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonParametersId.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonParametersId.java.svn-base deleted file mode 100644 index 763cd94..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonParametersId.java.svn-base +++ /dev/null @@ -1,196 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPERSONPARAMETERSID*/ -@Entity(name="TcustPersonParametersId") -@Table(name="TCUSTPERSONPARAMETERSID") -public class TcustPersonParametersId extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustPersonParametersId -*/ -@Id -@Column(name="IDENTIFICATIONCATALOG" ,nullable=false, updatable=false) -private String pk; -@Column(name="IDENTIFICATIONCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo IDENTIFICATION -*/ -private String identificationcatalogcode; - -@Column(name="MAXLENGTH", nullable=true) - -/** -* Tamao maximo del tipo de identificacion -*/ -private Integer maxlength; - -@Column(name="PERMITLETTER", nullable=true) - -/** -* Y si el tpo de identificacin permite letras N si no permite -*/ -private String permitletter; - -@Column(name="NAMEBEAN", nullable=true) - -/** -* Nombre del bean que contiene la rutina de validacion del tipo de identificacion -*/ -private String namebean; - -/**Contructor por defecto*/ -public TcustPersonParametersId(){ -} -/**Contructor de TcustPersonParametersId -@param pPk Clave Primaria del entity -*/ -public TcustPersonParametersId(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustPersonParametersId -*/ -public static TcustPersonParametersId find(EntityManager pEntityManager,Object pKey) throws Exception{ - TcustPersonParametersId obj = pEntityManager.find(TcustPersonParametersId.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustPersonParametersId -@return El objeto que referencia a la Clave primaria de TcustPersonParametersId -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustPersonParametersId -@param pPk El objeto que referencia a la nueva Clave primaria de TcustPersonParametersId -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de identificationcatalogcode -@return valor de identificationcatalogcode*/ -public String getIdentificationcatalogcode(){ - return identificationcatalogcode; -} -/**Fija el valor de identificationcatalogcode -@param pIdentificationcatalogcode nuevo Valor de identificationcatalogcode*/ -public void setIdentificationcatalogcode(String pIdentificationcatalogcode){ - identificationcatalogcode=pIdentificationcatalogcode; -} - -/**Obtiene el valor de maxlength -@return valor de maxlength*/ -public Integer getMaxlength(){ - return maxlength; -} -/**Fija el valor de maxlength -@param pMaxlength nuevo Valor de maxlength*/ -public void setMaxlength(Integer pMaxlength){ - maxlength=pMaxlength; -} - -/**Obtiene el valor de permitletter -@return valor de permitletter*/ -public String getPermitletter(){ - return permitletter; -} -/**Fija el valor de permitletter -@param pPermitletter nuevo Valor de permitletter*/ -public void setPermitletter(String pPermitletter){ - permitletter=pPermitletter; -} - -/**Obtiene el valor de namebean -@return valor de namebean*/ -public String getNamebean(){ - return namebean; -} -/**Fija el valor de namebean -@param pNamebean nuevo Valor de namebean*/ -public void setNamebean(String pNamebean){ - namebean=pNamebean; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustPersonParametersId))return false; - TcustPersonParametersId that = (TcustPersonParametersId) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TcustPersonParametersId -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TcustPersonParametersId -*/ -public Object createInstance(){ - TcustPersonParametersId instance=new TcustPersonParametersId(); - return instance; -} -/**Clona la entidad TcustPersonParametersId -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustPersonParametersId p=(TcustPersonParametersId)this.clone(); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReference.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReference.java.svn-base deleted file mode 100644 index 302f7da..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReference.java.svn-base +++ /dev/null @@ -1,400 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPERSONPERSONALREFERENCE - */ -@Entity(name = "TcustPersonPersonalReference") -@Table(name = "TCUSTPERSONPERSONALREFERENCE") -public class TcustPersonPersonalReference extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPersonPersonalReference - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(REFERENCESEQUENCE),0)+1 from TCUSTPERSONPERSONALREFERENCE where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "referencesequence") }) - @GeneratedValue(generator = "seq_id") - private TcustPersonPersonalReferenceKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro del telefono - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - @Column(name = "PERSONALREFCATALOG", nullable = true) - /** - * Codigo de catalogo 1 Padre, 2 Madre, 3 Hermano, 4 cuniado - */ - private String personalrefcatalog; - - @Column(name = "PERSONALREFCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PERSONALREF , referencias de personas - */ - private String personalrefcatalogcode; - - @Column(name = "REFERENCEPERSONCODE", nullable = true) - /** - * Codigo de persona de referencia de la persona - */ - private Integer referencepersoncode; - - @Column(name = "NAME", nullable = true) - /** - * Nombre de la persona de referencia - */ - private String name; - - @Column(name = "REMARK", nullable = true) - /** - * Observaciones - */ - private String remark; - - /** - * Contructor por defecto - */ - public TcustPersonPersonalReference() { - } - - /** - * Contructor de TcustPersonPersonalReference - * - * @param pPk Clave Primaria del entity - */ - public TcustPersonPersonalReference(TcustPersonPersonalReferenceKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPersonPersonalReference - */ - public static TcustPersonPersonalReference find(EntityManager pEntityManager, TcustPersonPersonalReferenceKey pKey) throws Exception { - TcustPersonPersonalReference obj = pEntityManager.find(TcustPersonPersonalReference.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPersonPersonalReference - * - * @return El objeto que referencia a la Clave primaria de TcustPersonPersonalReference - */ - public TcustPersonPersonalReferenceKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPersonPersonalReference - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPersonPersonalReference - */ - public void setPk(TcustPersonPersonalReferenceKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - /** - * Obtiene el valor de personalrefcatalog - * - * @return valor de personalrefcatalog - */ - public String getPersonalrefcatalog() { - return this.personalrefcatalog; - } - - /** - * Fija el valor de personalrefcatalog - * - * @param pPersonalrefcatalog nuevo Valor de personalrefcatalog - */ - public void setPersonalrefcatalog(String pPersonalrefcatalog) { - this.personalrefcatalog = pPersonalrefcatalog; - } - - /** - * Obtiene el valor de personalrefcatalogcode - * - * @return valor de personalrefcatalogcode - */ - public String getPersonalrefcatalogcode() { - return this.personalrefcatalogcode; - } - - /** - * Fija el valor de personalrefcatalogcode - * - * @param pPersonalrefcatalogcode nuevo Valor de personalrefcatalogcode - */ - public void setPersonalrefcatalogcode(String pPersonalrefcatalogcode) { - this.personalrefcatalogcode = pPersonalrefcatalogcode; - } - - /** - * Obtiene el valor de referencepersoncode - * - * @return valor de referencepersoncode - */ - public Integer getReferencepersoncode() { - return this.referencepersoncode; - } - - /** - * Fija el valor de referencepersoncode - * - * @param pReferencepersoncode nuevo Valor de referencepersoncode - */ - public void setReferencepersoncode(Integer pReferencepersoncode) { - this.referencepersoncode = pReferencepersoncode; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return this.name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - this.name = pName; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPersonPersonalReference)) { - return false; - } - TcustPersonPersonalReference that = (TcustPersonPersonalReference) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPersonPersonalReference - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPersonPersonalReference - */ - @Override - public Object createInstance() { - TcustPersonPersonalReference instance = new TcustPersonPersonalReference(); - instance.setPk(new TcustPersonPersonalReferenceKey()); - return instance; - } - - /** - * Clona la entidad TcustPersonPersonalReference - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPersonPersonalReference p = (TcustPersonPersonalReference) this.clone(); - p.setPk((TcustPersonPersonalReferenceKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReferenceKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReferenceKey.java.svn-base deleted file mode 100644 index a94b790..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPersonalReferenceKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONPERSONALREFERENCE*/ -@Embeddable -public class TcustPersonPersonalReferenceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="REFERENCESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de referencias personales del cliente -*/ -private Integer referencesequence; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del telefono -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPersonPersonalReferenceKey(){} -/**Contructor de TcustPersonPersonalReferenceKey -@param pPersoncode Codigo de persona -@param pReferencesequence Secuencia de referencias personales del cliente -@param pDateto Fecha hasta la cual esta vigente el registro del telefono -*/ -public TcustPersonPersonalReferenceKey(Integer pPersoncode,Integer pReferencesequence,Timestamp pDateto){ - personcode=pPersoncode; - referencesequence=pReferencesequence; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de referencesequence -@return valor de referencesequence*/ -public Integer getReferencesequence(){ - return referencesequence; -} -/**Fija el valor de referencesequence -@param pReferencesequence nuevo Valor de referencesequence*/ -public void setReferencesequence(Integer pReferencesequence){ - referencesequence=pReferencesequence; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TcustPersonPersonalReferenceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonPersonalReferenceKey))return false; - TcustPersonPersonalReferenceKey that = (TcustPersonPersonalReferenceKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getReferencesequence() == null || that.getReferencesequence() == null){ - return false; - } - if (! this.getReferencesequence().equals(that.getReferencesequence())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPersonPersonalReferenceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getReferencesequence() == null ? 0 : this.getReferencesequence().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhone.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhone.java.svn-base deleted file mode 100644 index 5e74f10..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhone.java.svn-base +++ /dev/null @@ -1,432 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPERSONPHONE - */ -@Entity(name = "TcustPersonPhone") -@Table(name = "TCUSTPERSONPHONE") -public class TcustPersonPhone extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPersonPhone - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(PHONESEQUENCE),0)+1 from TCUSTPERSONPHONE where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "phonesequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPersonPhoneKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro del telefono - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "PHONETYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1 Celular, 2 Fijo - */ - private String phonetypecatalog; - @Column(name = "PHONETYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PHONETYPE - */ - private String phonetypecatalogcode; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario que crea el registro - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario que modifica el registro - */ - private String modifyusercode; - @Column(name = "ADDRESSNUMBER", nullable = true) - /** - * Numero de direccion asociada al telefono - */ - private Integer addressnumber; - @Column(name = "AREACODE", nullable = true) - /** - * Codigo de area del telefono - */ - private Integer areacode; - @Column(name = "PHONENUMBER", nullable = true) - /** - * Numero de telefono - */ - private String phonenumber; - @Column(name = "EXTENSION", nullable = true) - /** - * Codigo de extension del telefono - */ - private Integer extension; - - /** - * Contructor por defecto - */ - public TcustPersonPhone() { - } - - /** - * Contructor de TcustPersonPhone - * - * @param pPk Clave Primaria del entity - */ - public TcustPersonPhone(TcustPersonPhoneKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPersonPhone - */ - public static TcustPersonPhone find(EntityManager pEntityManager, TcustPersonPhoneKey pKey) throws Exception { - TcustPersonPhone obj = pEntityManager.find(TcustPersonPhone.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPersonPhone - * - * @return El objeto que referencia a la Clave primaria de TcustPersonPhone - */ - public TcustPersonPhoneKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPersonPhone - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPersonPhone - */ - public void setPk(TcustPersonPhoneKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de phonetypecatalog - * - * @return valor de phonetypecatalog - */ - public String getPhonetypecatalog() { - return this.phonetypecatalog; - } - - /** - * Fija el valor de phonetypecatalog - * - * @param pPhonetypecatalog nuevo Valor de phonetypecatalog - */ - public void setPhonetypecatalog(String pPhonetypecatalog) { - this.phonetypecatalog = pPhonetypecatalog; - } - - /** - * Obtiene el valor de phonetypecatalogcode - * - * @return valor de phonetypecatalogcode - */ - public String getPhonetypecatalogcode() { - return this.phonetypecatalogcode; - } - - /** - * Fija el valor de phonetypecatalogcode - * - * @param pPhonetypecatalogcode nuevo Valor de phonetypecatalogcode - */ - public void setPhonetypecatalogcode(String pPhonetypecatalogcode) { - this.phonetypecatalogcode = pPhonetypecatalogcode; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - /** - * Obtiene el valor de addressnumber - * - * @return valor de addressnumber - */ - public Integer getAddressnumber() { - return this.addressnumber; - } - - /** - * Fija el valor de addressnumber - * - * @param pAddressnumber nuevo Valor de addressnumber - */ - public void setAddressnumber(Integer pAddressnumber) { - this.addressnumber = pAddressnumber; - } - - /** - * Obtiene el valor de areacode - * - * @return valor de areacode - */ - public Integer getAreacode() { - return this.areacode; - } - - /** - * Fija el valor de areacode - * - * @param pAreacode nuevo Valor de areacode - */ - public void setAreacode(Integer pAreacode) { - this.areacode = pAreacode; - } - - /** - * Obtiene el valor de phonenumber - * - * @return valor de phonenumber - */ - public String getPhonenumber() { - return this.phonenumber; - } - - /** - * Fija el valor de phonenumber - * - * @param pPhonenumber nuevo Valor de phonenumber - */ - public void setPhonenumber(String pPhonenumber) { - this.phonenumber = pPhonenumber; - } - - /** - * Obtiene el valor de extension - * - * @return valor de extension - */ - public Integer getExtension() { - return this.extension; - } - - /** - * Fija el valor de extension - * - * @param pExtension nuevo Valor de extension - */ - public void setExtension(Integer pExtension) { - this.extension = pExtension; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPersonPhone)) { - return false; - } - TcustPersonPhone that = (TcustPersonPhone) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPersonPhone - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPersonPhone - */ - @Override - public Object createInstance() { - TcustPersonPhone instance = new TcustPersonPhone(); - instance.setPk(new TcustPersonPhoneKey()); - return instance; - } - - /** - * Clona la entidad TcustPersonPhone - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPersonPhone p = (TcustPersonPhone) this.clone(); - p.setPk((TcustPersonPhoneKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - /** - * jpql Que retorna un objeto TcustPersonPhone a partir de un parametros - * espec�ficos - */ - public static final String JPQL_GET_ACCOUNT_PARAMETER = "from TcustPersonPhone t" + " where t.pk.personcode = :personcode " - + "and t.pk.dateto = :dateto "; - - public static List findPhones(EntityManager pEntityManager, Integer personcode, Timestamp dateto) throws Exception { - List lTcustPersonPhone = new ArrayList(); - Query qry = pEntityManager.createQuery(TcustPersonPhone.JPQL_GET_ACCOUNT_PARAMETER); - qry.setParameter("personcode", personcode); - qry.setParameter("dateto", dateto); - return lTcustPersonPhone = qry.getResultList(); - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhoneKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhoneKey.java.svn-base deleted file mode 100644 index 547db10..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TcustPersonPhoneKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPERSONPHONE*/ -@Embeddable -public class TcustPersonPhoneKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del telefono -*/ -private Timestamp dateto; - -@Column(name="PHONESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de telefonos del cliente -*/ -private Integer phonesequence; - -/**Contructor por defecto*/ -public TcustPersonPhoneKey(){} -/**Contructor de TcustPersonPhoneKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro del telefono -@param pPhonesequence Secuencia de telefonos del cliente -*/ -public TcustPersonPhoneKey(Integer pPersoncode,Timestamp pDateto,Integer pPhonesequence){ - personcode=pPersoncode; - dateto=pDateto; - phonesequence=pPhonesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de phonesequence -@return valor de phonesequence*/ -public Integer getPhonesequence(){ - return phonesequence; -} -/**Fija el valor de phonesequence -@param pPhonesequence nuevo Valor de phonesequence*/ -public void setPhonesequence(Integer pPhonesequence){ - phonesequence=pPhonesequence; -} - -/**Implementacin de la comparacin de TcustPersonPhoneKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPersonPhoneKey))return false; - TcustPersonPhoneKey that = (TcustPersonPhoneKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getPhonesequence() == null || that.getPhonesequence() == null){ - return false; - } - if (! this.getPhonesequence().equals(that.getPhonesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPersonPhoneKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getPhonesequence() == null ? 0 : this.getPhonesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneActivity.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneActivity.java.svn-base deleted file mode 100644 index 90cd0ea..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneActivity.java.svn-base +++ /dev/null @@ -1,233 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACTIVITY*/ -@Entity(name="TgeneActivity") -@Table(name="TGENEACTIVITY") -public class TgeneActivity extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneActivity -*/ -@Id -@Column(name="ACTIVITYCODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="SEGMENTTYPECATALOG", nullable=false) - -/** -* Codigo de catalogo 1 servicios, 2 minas 3 petrolesos -*/ -private String segmenttypecatalog; - -@Column(name="SEGMENTTYPECATALOGCODE", nullable=false) - -/** -* Codigo de tabla de catalogo SEGMENTTYPE tipo de segmento -*/ -private String segmenttypecatalogcode; - -@Column(name="CIIUCODE", nullable=true) - -/** -* Codigo de ciiu -*/ -private String ciiucode; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion de la actividad -*/ -private String description; - -@Column(name="MODIFYUSER", nullable=true) - -/** -* null -*/ -private String modifyuser; - -@Column(name="MODIFYDATE", nullable=true) - -/** -* null -*/ -private Timestamp modifydate; - -/**Contructor por defecto*/ -public TgeneActivity(){ -} -/**Contructor de TgeneActivity -@param pPk Clave Primaria del entity -@param pSegmenttypecatalog Codigo de catalogo 1 servicios, 2 minas 3 petrolesos -@param pSegmenttypecatalogcode Codigo de tabla de catalogo SEGMENTTYPE tipo de segmento -*/ -public TgeneActivity(String pPk,String pSegmenttypecatalog,String pSegmenttypecatalogcode){ - this(); - pk=pPk; - segmenttypecatalog=pSegmenttypecatalog; - segmenttypecatalogcode=pSegmenttypecatalogcode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneActivity -*/ -public static TgeneActivity find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneActivity obj = pEntityManager.find(TgeneActivity.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneActivity -@return El objeto que referencia a la Clave primaria de TgeneActivity -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneActivity -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneActivity -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de segmenttypecatalog -@return valor de segmenttypecatalog*/ -public String getSegmenttypecatalog(){ - return segmenttypecatalog; -} -/**Fija el valor de segmenttypecatalog -@param pSegmenttypecatalog nuevo Valor de segmenttypecatalog*/ -public void setSegmenttypecatalog(String pSegmenttypecatalog){ - segmenttypecatalog=pSegmenttypecatalog; -} - -/**Obtiene el valor de segmenttypecatalogcode -@return valor de segmenttypecatalogcode*/ -public String getSegmenttypecatalogcode(){ - return segmenttypecatalogcode; -} -/**Fija el valor de segmenttypecatalogcode -@param pSegmenttypecatalogcode nuevo Valor de segmenttypecatalogcode*/ -public void setSegmenttypecatalogcode(String pSegmenttypecatalogcode){ - segmenttypecatalogcode=pSegmenttypecatalogcode; -} - -/**Obtiene el valor de ciiucode -@return valor de ciiucode*/ -public String getCiiucode(){ - return ciiucode; -} -/**Fija el valor de ciiucode -@param pCiiucode nuevo Valor de ciiucode*/ -public void setCiiucode(String pCiiucode){ - ciiucode=pCiiucode; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de modifyuser -@return valor de modifyuser*/ -public String getModifyuser(){ - return modifyuser; -} -/**Fija el valor de modifyuser -@param pModifyuser nuevo Valor de modifyuser*/ -public void setModifyuser(String pModifyuser){ - modifyuser=pModifyuser; -} - -/**Obtiene el valor de modifydate -@return valor de modifydate*/ -public Timestamp getModifydate(){ - return modifydate; -} -/**Fija el valor de modifydate -@param pModifydate nuevo Valor de modifydate*/ -public void setModifydate(Timestamp pModifydate){ - modifydate=pModifydate; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneActivity))return false; - TgeneActivity that = (TgeneActivity) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneActivity -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneActivity -*/ -public Object createInstance(){ - TgeneActivity instance=new TgeneActivity(); - return instance; -} -/**Clona la entidad TgeneActivity -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneActivity p=(TgeneActivity)this.clone(); - return p; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneCiiu.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneCiiu.java.svn-base deleted file mode 100644 index c2d9f86..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/gene/.svn/text-base/TgeneCiiu.java.svn-base +++ /dev/null @@ -1,253 +0,0 @@ -package com.fp.persistence.pcustomer.gene; - -import javax.persistence.Entity; -import com.fp.dto.hb.Log; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENECIIU - */ -@Entity(name = "TgeneCiiu") -@Table(name = "TGENECIIU") -public class TgeneCiiu extends com.fp.dto.AbstractDataTransport - implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneCiiu - */ - @Id - @Column(name = "CIIUCODE", nullable = false, updatable = false) - private String pk; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Descripcion de la actividad - */ - private String description; - @Column(name = "LASTNODE", nullable = true) - /** - * Codigo del ultimo nodo - */ - private String lastnode; - @Column(name = "PARENTCODE", nullable = true) - /** - * Codigo de ciiu padre - */ - private String parentcode; - @Column(name = "LEVELCODE", nullable = true) - /** - * Codigo de nivel - */ - private Integer levelcode; - - /** - * Contructor por defecto - */ - public TgeneCiiu() { - } - - /** - * Contructor de TgeneCiiu - * - * @param pPk Clave Primaria del entity - */ - public TgeneCiiu(String pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCiiu - */ - public static TgeneCiiu find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneCiiu obj = pEntityManager.find(TgeneCiiu.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCiiu - * - * @return El objeto que referencia a la Clave primaria de TgeneCiiu - */ - public String getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCiiu - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneCiiu - */ - public void setPk(String pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de lastnode - * - * @return valor de lastnode - */ - public String getLastnode() { - return lastnode; - } - - /** - * Fija el valor de lastnode - * - * @param pLastnode nuevo Valor de lastnode - */ - public void setLastnode(String pLastnode) { - lastnode = pLastnode; - } - - /** - * Obtiene el valor de parentcode - * - * @return valor de parentcode - */ - public String getParentcode() { - return parentcode; - } - - /** - * Fija el valor de parentcode - * - * @param pParentcode nuevo Valor de parentcode - */ - public void setParentcode(String pParentcode) { - parentcode = pParentcode; - } - - /** - * Obtiene el valor de levelcode - * - * @return valor de levelcode - */ - public Integer getLevelcode() { - return levelcode; - } - - /** - * Fija el valor de levelcode - * - * @param pLevelcode nuevo Valor de levelcode - */ - public void setLevelcode(Integer pLevelcode) { - levelcode = pLevelcode; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCiiu)) { - return false; - } - TgeneCiiu that = (TgeneCiiu) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneCiiu - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TgeneCiiu - */ - public Object createInstance() { - TgeneCiiu instance = new TgeneCiiu(); - return instance; - } - - /** - * Clona la entidad TgeneCiiu - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneCiiu p = (TgeneCiiu) this.clone(); - return p; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/entries b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/entries deleted file mode 100644 index 633fbd5..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/entries +++ /dev/null @@ -1,844 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people -svn://172.17.26.185/COMACO - - - -2014-09-18T12:29:01.681947Z -932 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TcustPeopleAditionalDataKey.java -file - - - - -2022-07-28T03:40:25.168727Z -0b31d821f07602f58de1381ca1e336f9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3625 - -TcustPeopleJob.java -file - - - - -2022-07-28T03:40:25.169727Z -696f6169741ede5f31a2e2d2de0b3f25 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13683 - -TcustPeopleIncome.java -file - - - - -2022-07-28T03:40:25.169727Z -564441a256334bdde78504a81ae06749 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11392 - -TcustPeopleTradereferencesKey.java -file - - - - -2022-07-28T03:40:25.168727Z -789efbf1c4af484967c3db5d8ddf793f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4523 - -TcustPeopleAssociation.java -file - - - - -2022-07-28T03:40:25.169727Z -ff88cd2c073f2ba3a0a911e57a70af29 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9607 - -TcustPeopleOtherAssetsKey.java -file - - - - -2022-07-28T03:40:25.169727Z -3d5219ee065d97a80b83bccd6451122c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4504 - -TcustPeople.java -file - - - - -2022-07-28T03:40:25.170727Z -bda8e00acef82e6dbd7a584b40bed433 -2014-09-18T12:29:01.681947Z -932 -dcruz - - - - - - - - - - - - - - - - - - - - - -16328 - -TcustPeopleRealAssetsKey.java -file - - - - -2022-07-28T03:40:25.170727Z -f6c4bd36865347f9292903379bbd922b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4338 - -TcustPeopleVehicle.java -file - - - - -2022-07-28T03:40:25.170727Z -d771c835397079d5cb2396a9e029da75 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18144 - -TcustPeopleJobKey.java -file - - - - -2022-07-28T03:40:25.171727Z -f779cd01405996a427ad8eef024dfca4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4327 - -TcustPeopleIncomeKey.java -file - - - - -2022-07-28T03:40:25.171727Z -fb87ff3b379d4cafe34b4309f4f0d13e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4454 - -TcustPeopleAssociationKey.java -file - - - - -2022-07-28T03:40:25.171727Z -e8be9cc838727bbcc38387f136565714 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4467 - -TcustPeopleKey.java -file - - - - -2022-07-28T03:40:25.172727Z -8f402868d9c82f928c2aa82db3f58e98 -2014-09-18T12:29:01.681947Z -932 -dcruz - - - - - - - - - - - - - - - - - - - - - -3366 - -TcustPeopleVehicleKey.java -file - - - - -2022-07-28T03:40:25.171727Z -b1334c22ebc3bfc322eca225b15e9561 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4505 - -TcustPeopleLoan.java -file - - - - -2022-07-28T03:40:25.172727Z -a9780273f77caa08fac8103f48cdc8ed -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -15342 - -TcustPeopleFixedIncome.java -file - - - - -2022-07-28T03:40:25.172727Z -686ee09ccbbb2fb4bda88d644b323f8a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13984 - -TcustPeopleExpenses.java -file - - - - -2022-07-28T03:40:25.172727Z -4802719941efde7e785dadfdee43de63 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11520 - -TcustPeopleAditionalData.java -file - - - - -2022-07-28T03:40:25.173727Z -91f038628cceed10e18c91a396a854a5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12759 - -TcustPeopleTradereferences.java -file - - - - -2022-07-28T03:40:25.173727Z -301f7bde8e5fa907fedac13565ce852e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -15334 - -TcustPeopleLoanKey.java -file - - - - -2022-07-28T03:40:25.173727Z -13c15ab2cc7c879ccbb6cc306e6a329e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4232 - -TcustPeopleFixedIncomeKey.java -file - - - - -2022-07-28T03:40:25.173727Z -d2689c1600f6e2ca0c9521c2b8cfd115 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4463 - -TcustPeopleExpensesKey.java -file - - - - -2022-07-28T03:40:25.174727Z -3fd517b1c53683a96e62813a96dd3aaa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4493 - -TcustPeopleOtherAssets.java -file - - - - -2022-07-28T03:40:25.174727Z -7db150376e28f3a02e07ee65295d63a7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -14659 - -TcustPeopleRealAssets.java -file - - - - -2022-07-28T03:40:25.174727Z -c2dc37d34e7d5031b0f39d100de9b558 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -17171 - diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeople.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeople.java.svn-base deleted file mode 100644 index 3385ff1..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeople.java.svn-base +++ /dev/null @@ -1,652 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLE*/ -@Entity(name="TcustPeople") -@Table(name="TCUSTPEOPLE") -public class TcustPeople extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustPeople -*/ -@EmbeddedId -private TcustPeopleKey pk; -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual esta vigente el registro -*/ -private Timestamp datefrom; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="LASTNAME", nullable=true) - -/** -* Primer apellido -*/ -private String lastname; - -@Column(name="SURENAME", nullable=true) - -/** -* Segundo apellido -*/ -private String surename; - -@Column(name="FIRSTNAME", nullable=true) - -/** -* Primer Nombre -*/ -private String firstname; - -@Column(name="MIDDLENAME", nullable=true) - -/** -* Segundo Nombre -*/ -private String middlename; - -@Column(name="MARITALNAME", nullable=true) - -/** -* Apellido de casada -*/ -private String maritalname; - -@Column(name="GENDER", nullable=true) - -/** -* Gnero -*/ -private String gender; - -@Column(name="BIRTHDATE", nullable=true) - -/** -* Fecha de Nacimiento -*/ -private Date birthdate; - -@Column(name="MARITALSTATUSCATALOG", nullable=true) - -/** -* Codigo de catalogo de estados civiles, 1 soltero, 2 casado, -*/ -private String maritalstatuscatalog; - -@Column(name="MARITALSTATUSCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo de estado civil MARITALSTATUS -*/ -private String maritalstatuscatalogcode; - -@Column(name="PROFESSIONCATALOG", nullable=true) - -/** -* Codigo de catalogo de profesiones 1, an=bogado, 2 doctor -*/ -private String professioncatalog; - -@Column(name="PROFESSIONCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo de profesiones PROFESSION -*/ -private String professioncatalogcode; - -@Column(name="EDUCATIONLEVELCATALOG", nullable=true) - -/** -* Codigo de catalogo del nivel de educacion 1, basica, 2 superior -*/ -private String educationlevelcatalog; - -@Column(name="EDUCATIONLEVELCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo del nivel de educacion EDUCATIONLEVEL -*/ -private String educationlevelcatalogcode; - -@Column(name="BIRTHCOUNTRYCODE", nullable=true) - -/** -* Codigo de pas de nacimiento -*/ -private String birthcountrycode; - -@Column(name="BIRTHPROVINCECODE", nullable=true) - -/** -* Codigo de provincia de nacimiento -*/ -private String birthprovincecode; - -@Column(name="BIRTHCANTONCODE", nullable=true) - -/** -* Codigo de canton -*/ -private String birthcantoncode; - -@Column(name="BIRTHCITYCODE", nullable=true) - -/** -* Codigo de cuidad de nacimiento -*/ -private String birthcitycode; - -@Column(name="SIGNATURECODE", nullable=true) - -/** -* Codigo de imagen de la firma del cliente. -*/ -private Integer signaturecode; - -@Column(name="PHOTOCODE", nullable=true) - -/** -* Codigo de imagen de la foto del cliente. -*/ -private Integer photocode; - -@Column(name="INGRESSUSERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String ingressusercode; - -@Column(name="MODIFYUSERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String modifyusercode; - -@Column(name="NACIONALITY", nullable=true) - -/** -* Nacionalidad de la persona -*/ -private String nacionality; - -@Column(name="NOTACTIVITYCATALOG", nullable=true) - -/** -* Actividad no economica Estudiante, Jubilado, Ama de casa -*/ -private String notactivitycatalog; - -@Column(name="NOTACTIVITYCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo NOTACTIVITYEC Actividad no economica -*/ -private String notactivitycatalogcode; - -@Column(name="CODIGOSIB", nullable=true) - -/** -* Codigo de la SIB -*/ -private Integer codigosib; - -@Column(name="BIRTHPARROQUIACODE", nullable=true) - -/** -* Codigo de parroquia de nacimiento -*/ -private String birthparroquiacode; - -@Column(name="HEIGHT", nullable=true) - -/** -* null -*/ -private BigDecimal height; - -/**Contructor por defecto*/ -public TcustPeople(){ -} -/**Contructor de TcustPeople -@param pPk Clave Primaria del entity -*/ -public TcustPeople(TcustPeopleKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustPeople -*/ -public static TcustPeople find(EntityManager pEntityManager,TcustPeopleKey pKey) throws Exception{ - TcustPeople obj = pEntityManager.find(TcustPeople.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustPeople -@return El objeto que referencia a la Clave primaria de TcustPeople -*/ -public TcustPeopleKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustPeople -@param pPk El objeto que referencia a la nueva Clave primaria de TcustPeople -*/ -public void setPk(TcustPeopleKey pPk){ - pk=pPk; -} -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de lastname -@return valor de lastname*/ -public String getLastname(){ - return lastname; -} -/**Fija el valor de lastname -@param pLastname nuevo Valor de lastname*/ -public void setLastname(String pLastname){ - lastname=pLastname; -} - -/**Obtiene el valor de surename -@return valor de surename*/ -public String getSurename(){ - return surename; -} -/**Fija el valor de surename -@param pSurename nuevo Valor de surename*/ -public void setSurename(String pSurename){ - surename=pSurename; -} - -/**Obtiene el valor de firstname -@return valor de firstname*/ -public String getFirstname(){ - return firstname; -} -/**Fija el valor de firstname -@param pFirstname nuevo Valor de firstname*/ -public void setFirstname(String pFirstname){ - firstname=pFirstname; -} - -/**Obtiene el valor de middlename -@return valor de middlename*/ -public String getMiddlename(){ - return middlename; -} -/**Fija el valor de middlename -@param pMiddlename nuevo Valor de middlename*/ -public void setMiddlename(String pMiddlename){ - middlename=pMiddlename; -} - -/**Obtiene el valor de maritalname -@return valor de maritalname*/ -public String getMaritalname(){ - return maritalname; -} -/**Fija el valor de maritalname -@param pMaritalname nuevo Valor de maritalname*/ -public void setMaritalname(String pMaritalname){ - maritalname=pMaritalname; -} - -/**Obtiene el valor de gender -@return valor de gender*/ -public String getGender(){ - return gender; -} -/**Fija el valor de gender -@param pGender nuevo Valor de gender*/ -public void setGender(String pGender){ - gender=pGender; -} - -/**Obtiene el valor de birthdate -@return valor de birthdate*/ -public Date getBirthdate(){ - return birthdate; -} -/**Fija el valor de birthdate -@param pBirthdate nuevo Valor de birthdate*/ -public void setBirthdate(Date pBirthdate){ - birthdate=pBirthdate; -} - -/**Obtiene el valor de maritalstatuscatalog -@return valor de maritalstatuscatalog*/ -public String getMaritalstatuscatalog(){ - return maritalstatuscatalog; -} -/**Fija el valor de maritalstatuscatalog -@param pMaritalstatuscatalog nuevo Valor de maritalstatuscatalog*/ -public void setMaritalstatuscatalog(String pMaritalstatuscatalog){ - maritalstatuscatalog=pMaritalstatuscatalog; -} - -/**Obtiene el valor de maritalstatuscatalogcode -@return valor de maritalstatuscatalogcode*/ -public String getMaritalstatuscatalogcode(){ - return maritalstatuscatalogcode; -} -/**Fija el valor de maritalstatuscatalogcode -@param pMaritalstatuscatalogcode nuevo Valor de maritalstatuscatalogcode*/ -public void setMaritalstatuscatalogcode(String pMaritalstatuscatalogcode){ - maritalstatuscatalogcode=pMaritalstatuscatalogcode; -} - -/**Obtiene el valor de professioncatalog -@return valor de professioncatalog*/ -public String getProfessioncatalog(){ - return professioncatalog; -} -/**Fija el valor de professioncatalog -@param pProfessioncatalog nuevo Valor de professioncatalog*/ -public void setProfessioncatalog(String pProfessioncatalog){ - professioncatalog=pProfessioncatalog; -} - -/**Obtiene el valor de professioncatalogcode -@return valor de professioncatalogcode*/ -public String getProfessioncatalogcode(){ - return professioncatalogcode; -} -/**Fija el valor de professioncatalogcode -@param pProfessioncatalogcode nuevo Valor de professioncatalogcode*/ -public void setProfessioncatalogcode(String pProfessioncatalogcode){ - professioncatalogcode=pProfessioncatalogcode; -} - -/**Obtiene el valor de educationlevelcatalog -@return valor de educationlevelcatalog*/ -public String getEducationlevelcatalog(){ - return educationlevelcatalog; -} -/**Fija el valor de educationlevelcatalog -@param pEducationlevelcatalog nuevo Valor de educationlevelcatalog*/ -public void setEducationlevelcatalog(String pEducationlevelcatalog){ - educationlevelcatalog=pEducationlevelcatalog; -} - -/**Obtiene el valor de educationlevelcatalogcode -@return valor de educationlevelcatalogcode*/ -public String getEducationlevelcatalogcode(){ - return educationlevelcatalogcode; -} -/**Fija el valor de educationlevelcatalogcode -@param pEducationlevelcatalogcode nuevo Valor de educationlevelcatalogcode*/ -public void setEducationlevelcatalogcode(String pEducationlevelcatalogcode){ - educationlevelcatalogcode=pEducationlevelcatalogcode; -} - -/**Obtiene el valor de birthcountrycode -@return valor de birthcountrycode*/ -public String getBirthcountrycode(){ - return birthcountrycode; -} -/**Fija el valor de birthcountrycode -@param pBirthcountrycode nuevo Valor de birthcountrycode*/ -public void setBirthcountrycode(String pBirthcountrycode){ - birthcountrycode=pBirthcountrycode; -} - -/**Obtiene el valor de birthprovincecode -@return valor de birthprovincecode*/ -public String getBirthprovincecode(){ - return birthprovincecode; -} -/**Fija el valor de birthprovincecode -@param pBirthprovincecode nuevo Valor de birthprovincecode*/ -public void setBirthprovincecode(String pBirthprovincecode){ - birthprovincecode=pBirthprovincecode; -} - -/**Obtiene el valor de birthcantoncode -@return valor de birthcantoncode*/ -public String getBirthcantoncode(){ - return birthcantoncode; -} -/**Fija el valor de birthcantoncode -@param pBirthcantoncode nuevo Valor de birthcantoncode*/ -public void setBirthcantoncode(String pBirthcantoncode){ - birthcantoncode=pBirthcantoncode; -} - -/**Obtiene el valor de birthcitycode -@return valor de birthcitycode*/ -public String getBirthcitycode(){ - return birthcitycode; -} -/**Fija el valor de birthcitycode -@param pBirthcitycode nuevo Valor de birthcitycode*/ -public void setBirthcitycode(String pBirthcitycode){ - birthcitycode=pBirthcitycode; -} - -/**Obtiene el valor de signaturecode -@return valor de signaturecode*/ -public Integer getSignaturecode(){ - return signaturecode; -} -/**Fija el valor de signaturecode -@param pSignaturecode nuevo Valor de signaturecode*/ -public void setSignaturecode(Integer pSignaturecode){ - signaturecode=pSignaturecode; -} - -/**Obtiene el valor de photocode -@return valor de photocode*/ -public Integer getPhotocode(){ - return photocode; -} -/**Fija el valor de photocode -@param pPhotocode nuevo Valor de photocode*/ -public void setPhotocode(Integer pPhotocode){ - photocode=pPhotocode; -} - -/**Obtiene el valor de ingressusercode -@return valor de ingressusercode*/ -public String getIngressusercode(){ - return ingressusercode; -} -/**Fija el valor de ingressusercode -@param pIngressusercode nuevo Valor de ingressusercode*/ -public void setIngressusercode(String pIngressusercode){ - ingressusercode=pIngressusercode; -} - -/**Obtiene el valor de modifyusercode -@return valor de modifyusercode*/ -public String getModifyusercode(){ - return modifyusercode; -} -/**Fija el valor de modifyusercode -@param pModifyusercode nuevo Valor de modifyusercode*/ -public void setModifyusercode(String pModifyusercode){ - modifyusercode=pModifyusercode; -} - -/**Obtiene el valor de nacionality -@return valor de nacionality*/ -public String getNacionality(){ - return nacionality; -} -/**Fija el valor de nacionality -@param pNacionality nuevo Valor de nacionality*/ -public void setNacionality(String pNacionality){ - nacionality=pNacionality; -} - -/**Obtiene el valor de notactivitycatalog -@return valor de notactivitycatalog*/ -public String getNotactivitycatalog(){ - return notactivitycatalog; -} -/**Fija el valor de notactivitycatalog -@param pNotactivitycatalog nuevo Valor de notactivitycatalog*/ -public void setNotactivitycatalog(String pNotactivitycatalog){ - notactivitycatalog=pNotactivitycatalog; -} - -/**Obtiene el valor de notactivitycatalogcode -@return valor de notactivitycatalogcode*/ -public String getNotactivitycatalogcode(){ - return notactivitycatalogcode; -} -/**Fija el valor de notactivitycatalogcode -@param pNotactivitycatalogcode nuevo Valor de notactivitycatalogcode*/ -public void setNotactivitycatalogcode(String pNotactivitycatalogcode){ - notactivitycatalogcode=pNotactivitycatalogcode; -} - -/**Obtiene el valor de codigosib -@return valor de codigosib*/ -public Integer getCodigosib(){ - return codigosib; -} -/**Fija el valor de codigosib -@param pCodigosib nuevo Valor de codigosib*/ -public void setCodigosib(Integer pCodigosib){ - codigosib=pCodigosib; -} - -/**Obtiene el valor de birthparroquiacode -@return valor de birthparroquiacode*/ -public String getBirthparroquiacode(){ - return birthparroquiacode; -} -/**Fija el valor de birthparroquiacode -@param pBirthparroquiacode nuevo Valor de birthparroquiacode*/ -public void setBirthparroquiacode(String pBirthparroquiacode){ - birthparroquiacode=pBirthparroquiacode; -} - -/**Obtiene el valor de height -@return valor de height*/ -public BigDecimal getHeight(){ - return height; -} -/**Fija el valor de height -@param pHeight nuevo Valor de height*/ -public void setHeight(BigDecimal pHeight){ - height=pHeight; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustPeople))return false; - TcustPeople that = (TcustPeople) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TcustPeople -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TcustPeople -*/ -public Object createInstance(){ - TcustPeople instance=new TcustPeople(); - instance.setPk(new TcustPeopleKey()); - return instance; -} -/**Clona la entidad TcustPeople -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustPeople p=(TcustPeople)this.clone(); - p.setPk((TcustPeopleKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalData.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalData.java.svn-base deleted file mode 100644 index f9dcbe8..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalData.java.svn-base +++ /dev/null @@ -1,435 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLEADITIONALDATA*/ -@Entity(name="TcustPeopleAditionalData") -@Table(name="TCUSTPEOPLEADITIONALDATA") -public class TcustPeopleAditionalData extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TcustPeopleAditionalData -*/ -@EmbeddedId -private TcustPeopleAditionalDataKey pk; -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual esta vigente el registro -*/ -private Timestamp datefrom; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="HOMETYPECATALOG", nullable=true) - -/** -* Codigo de catalogo P Propia, A alquidada, F familiares -*/ -private String hometypecatalog; - -@Column(name="HOMETYPECATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo HOMETYPE tipo de vivienda. -*/ -private String hometypecatalogcode; - -@Column(name="IDENTIFICATIONCATALOG", nullable=true) - -/** -* Codigo de catalogo CED cedula, RUC ruc identificacion adicional del cliente. -*/ -private String identificationcatalog; - -@Column(name="IDENTIFICATIONCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo IDENTIFICATION tipo de identificacion -*/ -private String identificationcatalogcode; - -@Column(name="IDENTIFICATION", nullable=true) - -/** -* Numero de cedula, ruc, pasaporte, etc.. -*/ -private String identification; - -@Column(name="JOBRELATIONSHIPCATALOG", nullable=true) - -/** -* Codigo de catalogo 1 dependiente, 2 Independiente, 3 jubilado -*/ -private String jobrelationshipcatalog; - -@Column(name="JOBRELATIONSHIPCATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo JOBRELATIONSHIP relacion labolar -*/ -private String jobrelationshipcatalogcode; - -@Column(name="WORKERSNUMBER", nullable=true) - -/** -* Numero de empledos. -*/ -private Integer workersnumber; - -@Column(name="DEPENDENTSNUMBER", nullable=true) - -/** -* Numero de dependientes. -*/ -private Integer dependentsnumber; - -@Column(name="INGRESSUSERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String ingressusercode; - -@Column(name="MODIFYUSERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String modifyusercode; - -@Column(name="HOMEVALUE", nullable=true) - -/** -* Valor de la vivienda -*/ -private BigDecimal homevalue; - -@Column(name="HOMERESIDENCETIME", nullable=true) - -/** -* Aos de residencia en la vivienda actual -*/ -private Integer homeresidencetime; - -@Column(name="MAINSOURCEINCOMECATALOG", nullable=true) - -/** -* null -*/ -private String mainsourceincomecatalog; - -@Column(name="MAINSOURCEINCOMECATALOGCODE", nullable=true) - -/** -* null -*/ -private String mainsourceincomecatalogcode; - -/**Contructor por defecto*/ -public TcustPeopleAditionalData(){ -} -/**Contructor de TcustPeopleAditionalData -@param pPk Clave Primaria del entity -*/ -public TcustPeopleAditionalData(TcustPeopleAditionalDataKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TcustPeopleAditionalData -*/ -public static TcustPeopleAditionalData find(EntityManager pEntityManager,TcustPeopleAditionalDataKey pKey) throws Exception{ - TcustPeopleAditionalData obj = pEntityManager.find(TcustPeopleAditionalData.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TcustPeopleAditionalData -@return El objeto que referencia a la Clave primaria de TcustPeopleAditionalData -*/ -public TcustPeopleAditionalDataKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TcustPeopleAditionalData -@param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleAditionalData -*/ -public void setPk(TcustPeopleAditionalDataKey pPk){ - pk=pPk; -} -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de hometypecatalog -@return valor de hometypecatalog*/ -public String getHometypecatalog(){ - return hometypecatalog; -} -/**Fija el valor de hometypecatalog -@param pHometypecatalog nuevo Valor de hometypecatalog*/ -public void setHometypecatalog(String pHometypecatalog){ - hometypecatalog=pHometypecatalog; -} - -/**Obtiene el valor de hometypecatalogcode -@return valor de hometypecatalogcode*/ -public String getHometypecatalogcode(){ - return hometypecatalogcode; -} -/**Fija el valor de hometypecatalogcode -@param pHometypecatalogcode nuevo Valor de hometypecatalogcode*/ -public void setHometypecatalogcode(String pHometypecatalogcode){ - hometypecatalogcode=pHometypecatalogcode; -} - -/**Obtiene el valor de identificationcatalog -@return valor de identificationcatalog*/ -public String getIdentificationcatalog(){ - return identificationcatalog; -} -/**Fija el valor de identificationcatalog -@param pIdentificationcatalog nuevo Valor de identificationcatalog*/ -public void setIdentificationcatalog(String pIdentificationcatalog){ - identificationcatalog=pIdentificationcatalog; -} - -/**Obtiene el valor de identificationcatalogcode -@return valor de identificationcatalogcode*/ -public String getIdentificationcatalogcode(){ - return identificationcatalogcode; -} -/**Fija el valor de identificationcatalogcode -@param pIdentificationcatalogcode nuevo Valor de identificationcatalogcode*/ -public void setIdentificationcatalogcode(String pIdentificationcatalogcode){ - identificationcatalogcode=pIdentificationcatalogcode; -} - -/**Obtiene el valor de identification -@return valor de identification*/ -public String getIdentification(){ - return identification; -} -/**Fija el valor de identification -@param pIdentification nuevo Valor de identification*/ -public void setIdentification(String pIdentification){ - identification=pIdentification; -} - -/**Obtiene el valor de jobrelationshipcatalog -@return valor de jobrelationshipcatalog*/ -public String getJobrelationshipcatalog(){ - return jobrelationshipcatalog; -} -/**Fija el valor de jobrelationshipcatalog -@param pJobrelationshipcatalog nuevo Valor de jobrelationshipcatalog*/ -public void setJobrelationshipcatalog(String pJobrelationshipcatalog){ - jobrelationshipcatalog=pJobrelationshipcatalog; -} - -/**Obtiene el valor de jobrelationshipcatalogcode -@return valor de jobrelationshipcatalogcode*/ -public String getJobrelationshipcatalogcode(){ - return jobrelationshipcatalogcode; -} -/**Fija el valor de jobrelationshipcatalogcode -@param pJobrelationshipcatalogcode nuevo Valor de jobrelationshipcatalogcode*/ -public void setJobrelationshipcatalogcode(String pJobrelationshipcatalogcode){ - jobrelationshipcatalogcode=pJobrelationshipcatalogcode; -} - -/**Obtiene el valor de workersnumber -@return valor de workersnumber*/ -public Integer getWorkersnumber(){ - return workersnumber; -} -/**Fija el valor de workersnumber -@param pWorkersnumber nuevo Valor de workersnumber*/ -public void setWorkersnumber(Integer pWorkersnumber){ - workersnumber=pWorkersnumber; -} - -/**Obtiene el valor de dependentsnumber -@return valor de dependentsnumber*/ -public Integer getDependentsnumber(){ - return dependentsnumber; -} -/**Fija el valor de dependentsnumber -@param pDependentsnumber nuevo Valor de dependentsnumber*/ -public void setDependentsnumber(Integer pDependentsnumber){ - dependentsnumber=pDependentsnumber; -} - -/**Obtiene el valor de ingressusercode -@return valor de ingressusercode*/ -public String getIngressusercode(){ - return ingressusercode; -} -/**Fija el valor de ingressusercode -@param pIngressusercode nuevo Valor de ingressusercode*/ -public void setIngressusercode(String pIngressusercode){ - ingressusercode=pIngressusercode; -} - -/**Obtiene el valor de modifyusercode -@return valor de modifyusercode*/ -public String getModifyusercode(){ - return modifyusercode; -} -/**Fija el valor de modifyusercode -@param pModifyusercode nuevo Valor de modifyusercode*/ -public void setModifyusercode(String pModifyusercode){ - modifyusercode=pModifyusercode; -} - -/**Obtiene el valor de homevalue -@return valor de homevalue*/ -public BigDecimal getHomevalue(){ - return homevalue; -} -/**Fija el valor de homevalue -@param pHomevalue nuevo Valor de homevalue*/ -public void setHomevalue(BigDecimal pHomevalue){ - homevalue=pHomevalue; -} - -/**Obtiene el valor de homeresidencetime -@return valor de homeresidencetime*/ -public Integer getHomeresidencetime(){ - return homeresidencetime; -} -/**Fija el valor de homeresidencetime -@param pHomeresidencetime nuevo Valor de homeresidencetime*/ -public void setHomeresidencetime(Integer pHomeresidencetime){ - homeresidencetime=pHomeresidencetime; -} - -/**Obtiene el valor de mainsourceincomecatalog -@return valor de mainsourceincomecatalog*/ -public String getMainsourceincomecatalog(){ - return mainsourceincomecatalog; -} -/**Fija el valor de mainsourceincomecatalog -@param pMainsourceincomecatalog nuevo Valor de mainsourceincomecatalog*/ -public void setMainsourceincomecatalog(String pMainsourceincomecatalog){ - mainsourceincomecatalog=pMainsourceincomecatalog; -} - -/**Obtiene el valor de mainsourceincomecatalogcode -@return valor de mainsourceincomecatalogcode*/ -public String getMainsourceincomecatalogcode(){ - return mainsourceincomecatalogcode; -} -/**Fija el valor de mainsourceincomecatalogcode -@param pMainsourceincomecatalogcode nuevo Valor de mainsourceincomecatalogcode*/ -public void setMainsourceincomecatalogcode(String pMainsourceincomecatalogcode){ - mainsourceincomecatalogcode=pMainsourceincomecatalogcode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TcustPeopleAditionalData))return false; - TcustPeopleAditionalData that = (TcustPeopleAditionalData) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TcustPeopleAditionalData -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TcustPeopleAditionalData -*/ -public Object createInstance(){ - TcustPeopleAditionalData instance=new TcustPeopleAditionalData(); - instance.setPk(new TcustPeopleAditionalDataKey()); - return instance; -} -/**Clona la entidad TcustPeopleAditionalData -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TcustPeopleAditionalData p=(TcustPeopleAditionalData)this.clone(); - p.setPk((TcustPeopleAditionalDataKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalDataKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalDataKey.java.svn-base deleted file mode 100644 index 83fc268..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAditionalDataKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEADITIONALDATA*/ -@Embeddable -public class TcustPeopleAditionalDataKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPeopleAditionalDataKey(){} -/**Contructor de TcustPeopleAditionalDataKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TcustPeopleAditionalDataKey(Integer pPersoncode,Timestamp pDateto){ - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TcustPeopleAditionalDataKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleAditionalDataKey))return false; - TcustPeopleAditionalDataKey that = (TcustPeopleAditionalDataKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustPeopleAditionalDataKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociation.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociation.java.svn-base deleted file mode 100644 index 4e52229..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociation.java.svn-base +++ /dev/null @@ -1,352 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLEASSOCIATION - */ -@Entity(name = "TcustPeopleAssociation") -@Table(name = "TCUSTPEOPLEASSOCIATION") -public class TcustPeopleAssociation extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPeopleAssociation - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(ASSOCIATIONSEQUENCE),0)+1 from TCUSTPEOPLEASSOCIATION where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "associationsequence") }) - @GeneratedValue(generator = "seq_id") - private TcustPeopleAssociationKey pk; - - @Column(name = "ASSOCIATIONPERSONCODE", nullable = true) - /** - * Codigo de persona asiganado a la asociacion - */ - private Integer associationpersoncode; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "ASSOCIATIONNAME", nullable = true) - /** - * Nombre de la asociacion cuando no esta definida como una persona - */ - private String associationname; - - @Column(name = "ASSOCIATIONCODE", nullable = true) - /** - * Codigo de registro o de asociacion de la persona - */ - private String associationcode; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que crea el cliente - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifica datos del cliente - */ - private String modifyuser; - - /** - * Contructor por defecto - */ - public TcustPeopleAssociation() { - } - - /** - * Contructor de TcustPeopleAssociation - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleAssociation(TcustPeopleAssociationKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleAssociation - */ - public static TcustPeopleAssociation find(EntityManager pEntityManager, TcustPeopleAssociationKey pKey) throws Exception { - TcustPeopleAssociation obj = pEntityManager.find(TcustPeopleAssociation.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleAssociation - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleAssociation - */ - public TcustPeopleAssociationKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleAssociation - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleAssociation - */ - public void setPk(TcustPeopleAssociationKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de associationpersoncode - * - * @return valor de associationpersoncode - */ - public Integer getAssociationpersoncode() { - return this.associationpersoncode; - } - - /** - * Fija el valor de associationpersoncode - * - * @param pAssociationpersoncode nuevo Valor de associationpersoncode - */ - public void setAssociationpersoncode(Integer pAssociationpersoncode) { - this.associationpersoncode = pAssociationpersoncode; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de associationname - * - * @return valor de associationname - */ - public String getAssociationname() { - return this.associationname; - } - - /** - * Fija el valor de associationname - * - * @param pAssociationname nuevo Valor de associationname - */ - public void setAssociationname(String pAssociationname) { - this.associationname = pAssociationname; - } - - /** - * Obtiene el valor de associationcode - * - * @return valor de associationcode - */ - public String getAssociationcode() { - return this.associationcode; - } - - /** - * Fija el valor de associationcode - * - * @param pAssociationcode nuevo Valor de associationcode - */ - public void setAssociationcode(String pAssociationcode) { - this.associationcode = pAssociationcode; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleAssociation)) { - return false; - } - TcustPeopleAssociation that = (TcustPeopleAssociation) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleAssociation - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleAssociation - */ - @Override - public Object createInstance() { - TcustPeopleAssociation instance = new TcustPeopleAssociation(); - instance.setPk(new TcustPeopleAssociationKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleAssociation - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleAssociation p = (TcustPeopleAssociation) this.clone(); - p.setPk((TcustPeopleAssociationKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociationKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociationKey.java.svn-base deleted file mode 100644 index 3da3528..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleAssociationKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEASSOCIATION*/ -@Embeddable -public class TcustPeopleAssociationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="ASSOCIATIONSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de asociacion de la persona -*/ -private Integer associationsequence; - -/**Contructor por defecto*/ -public TcustPeopleAssociationKey(){} -/**Contructor de TcustPeopleAssociationKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pAssociationsequence Secuencia de asociacion de la persona -*/ -public TcustPeopleAssociationKey(Integer pPersoncode,Timestamp pDateto,Integer pAssociationsequence){ - personcode=pPersoncode; - dateto=pDateto; - associationsequence=pAssociationsequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de associationsequence -@return valor de associationsequence*/ -public Integer getAssociationsequence(){ - return associationsequence; -} -/**Fija el valor de associationsequence -@param pAssociationsequence nuevo Valor de associationsequence*/ -public void setAssociationsequence(Integer pAssociationsequence){ - associationsequence=pAssociationsequence; -} - -/**Implementacin de la comparacin de TcustPeopleAssociationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleAssociationKey))return false; - TcustPeopleAssociationKey that = (TcustPeopleAssociationKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getAssociationsequence() == null || that.getAssociationsequence() == null){ - return false; - } - if (! this.getAssociationsequence().equals(that.getAssociationsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleAssociationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getAssociationsequence() == null ? 0 : this.getAssociationsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpenses.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpenses.java.svn-base deleted file mode 100644 index fd34ffc..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpenses.java.svn-base +++ /dev/null @@ -1,419 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPEOPLEEXPENSES - */ -@Entity(name = "TcustPeopleExpenses") -@Table(name = "TCUSTPEOPLEEXPENSES") -public class TcustPeopleExpenses extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleExpenses - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(EXPENSESEQUENCE),0)+1 from TCUSTPEOPLEEXPENSES where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "expensesequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleExpensesKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "EXPENSESCATALOG", nullable = true) - /** - * Codigo de catalogo de gastos 1 alimentacion, 2 cuota prestamos, 3 - * alimentacion - */ - private String expensescatalog; - @Column(name = "EXPENSESCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo EXPENSES - */ - private String expensescatalogcode; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "AMOUNT", nullable = true) - /** - * Valor del gasto mensual - */ - private BigDecimal amount; - @Column(name = "ISFIXVALUE", nullable = true) - /** - * Y indica que un valor de gasto fijo, N no es un gasto fijo - */ - private String isfixvalue; - @Column(name = "VERIFIEDAMOUNT", nullable = true) - /** - * Monto verificado por una persona de la institucion financiera - */ - private BigDecimal verifiedamount; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleExpenses() { - } - - /** - * Contructor de TcustPeopleExpenses - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleExpenses(TcustPeopleExpensesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleExpenses - */ - public static TcustPeopleExpenses find(EntityManager pEntityManager, TcustPeopleExpensesKey pKey) throws Exception { - TcustPeopleExpenses obj = pEntityManager.find(TcustPeopleExpenses.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleExpenses - * - * @return El objeto que referencia a la Clave primaria de - * TcustPeopleExpenses - */ - public TcustPeopleExpensesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleExpenses - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPeopleExpenses - */ - public void setPk(TcustPeopleExpensesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de expensescatalog - * - * @return valor de expensescatalog - */ - public String getExpensescatalog() { - return this.expensescatalog; - } - - /** - * Fija el valor de expensescatalog - * - * @param pExpensescatalog nuevo Valor de expensescatalog - */ - public void setExpensescatalog(String pExpensescatalog) { - this.expensescatalog = pExpensescatalog; - } - - /** - * Obtiene el valor de expensescatalogcode - * - * @return valor de expensescatalogcode - */ - public String getExpensescatalogcode() { - return this.expensescatalogcode; - } - - /** - * Fija el valor de expensescatalogcode - * - * @param pExpensescatalogcode nuevo Valor de expensescatalogcode - */ - public void setExpensescatalogcode(String pExpensescatalogcode) { - this.expensescatalogcode = pExpensescatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de amount - * - * @return valor de amount - */ - public BigDecimal getAmount() { - return this.amount; - } - - /** - * Fija el valor de amount - * - * @param pAmount nuevo Valor de amount - */ - public void setAmount(BigDecimal pAmount) { - this.amount = pAmount; - } - - /** - * Obtiene el valor de isfixvalue - * - * @return valor de isfixvalue - */ - public String getIsfixvalue() { - return this.isfixvalue; - } - - /** - * Fija el valor de isfixvalue - * - * @param pIsfixvalue nuevo Valor de isfixvalue - */ - public void setIsfixvalue(String pIsfixvalue) { - this.isfixvalue = pIsfixvalue; - } - - /** - * Obtiene el valor de verifiedamount - * - * @return valor de verifiedamount - */ - public BigDecimal getVerifiedamount() { - return this.verifiedamount; - } - - /** - * Fija el valor de verifiedamount - * - * @param pVerifiedamount nuevo Valor de verifiedamount - */ - public void setVerifiedamount(BigDecimal pVerifiedamount) { - this.verifiedamount = pVerifiedamount; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleExpenses)) { - return false; - } - TcustPeopleExpenses that = (TcustPeopleExpenses) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleExpenses - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco - * TcustPeopleExpenses - */ - @Override - public Object createInstance() { - TcustPeopleExpenses instance = new TcustPeopleExpenses(); - instance.setPk(new TcustPeopleExpensesKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleExpenses - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleExpenses p = (TcustPeopleExpenses) this.clone(); - p.setPk((TcustPeopleExpensesKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpensesKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpensesKey.java.svn-base deleted file mode 100644 index 6848a8f..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleExpensesKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEEXPENSES*/ -@Embeddable -public class TcustPeopleExpensesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="EXPENSESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del gasto de la persona -*/ -private Integer expensesequence; - -/**Contructor por defecto*/ -public TcustPeopleExpensesKey(){} -/**Contructor de TcustPeopleExpensesKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pExpensesequence Secuencia del gasto de la persona -*/ -public TcustPeopleExpensesKey(Integer pPersoncode,Timestamp pDateto,Integer pExpensesequence){ - personcode=pPersoncode; - dateto=pDateto; - expensesequence=pExpensesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de expensesequence -@return valor de expensesequence*/ -public Integer getExpensesequence(){ - return expensesequence; -} -/**Fija el valor de expensesequence -@param pExpensesequence nuevo Valor de expensesequence*/ -public void setExpensesequence(Integer pExpensesequence){ - expensesequence=pExpensesequence; -} - -/**Implementacin de la comparacin de TcustPeopleExpensesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleExpensesKey))return false; - TcustPeopleExpensesKey that = (TcustPeopleExpensesKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getExpensesequence() == null || that.getExpensesequence() == null){ - return false; - } - if (! this.getExpensesequence().equals(that.getExpensesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleExpensesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getExpensesequence() == null ? 0 : this.getExpensesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncome.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncome.java.svn-base deleted file mode 100644 index 51d4d11..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncome.java.svn-base +++ /dev/null @@ -1,549 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLEFIXEDINCOME - */ -@Entity(name = "TcustPeopleFixedIncome") -@Table(name = "TCUSTPEOPLEFIXEDINCOME") -public class TcustPeopleFixedIncome extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPeopleFixedIncome - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(FIXEDINCOMESEQUENCE),0)+1 from TCUSTPEOPLEFIXEDINCOME where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "fixedincomesequence") }) - @GeneratedValue(generator = "seq_id") - private TcustPeopleFixedIncomeKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "FIXEDINCOMECATALOG", nullable = true) - /** - * Codigo de catalogo 1 Bonos del banco central, 2 Poliza, 3 Certificado de - * inversion - */ - private String fixedincomecatalog; - - @Column(name = "FIXEDINCOMECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo FIXEDINCOME tipo de inversion - */ - private String fixedincomecatalogcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "BANKPERSONCODE", nullable = true) - /** - * Codigo de persona asociado a la institucion fincnaiera en la cual el - * cliente matiene la inversion - */ - private Integer bankpersoncode; - - @Column(name = "BANKNAME", nullable = true) - /** - * Nombre de la institucion financiera en la cual el cliente mantiene la - * operacion de renta - */ - private String bankname; - - @Column(name = "ORIGINALAMONT", nullable = true) - /** - * Monto original de la inversion - */ - private BigDecimal originalamont; - - @Column(name = "RATE", nullable = true) - /** - * Tada de la inversion. - */ - private BigDecimal rate; - - @Column(name = "BALANCE", nullable = true) - /** - * Saldo de la inversion. - */ - private BigDecimal balance; - - @Column(name = "BALANCEDATE", nullable = true) - /** - * Fecha a la cual se ingresa el saldo de la inversion. - */ - private Date balancedate; - - @Column(name = "EXPIRATIONDATE", nullable = true) - /** - * Fecha de vencimiento de la inversion. - */ - private Date expirationdate; - - @Column(name = "REMARK", nullable = true) - /** - * Comentario. - */ - private String remark; - - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleFixedIncome() { - } - - /** - * Contructor de TcustPeopleFixedIncome - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleFixedIncome(TcustPeopleFixedIncomeKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleFixedIncome - */ - public static TcustPeopleFixedIncome find(EntityManager pEntityManager, TcustPeopleFixedIncomeKey pKey) throws Exception { - TcustPeopleFixedIncome obj = pEntityManager.find(TcustPeopleFixedIncome.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleFixedIncome - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleFixedIncome - */ - public TcustPeopleFixedIncomeKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleFixedIncome - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleFixedIncome - */ - public void setPk(TcustPeopleFixedIncomeKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de fixedincomecatalog - * - * @return valor de fixedincomecatalog - */ - public String getFixedincomecatalog() { - return this.fixedincomecatalog; - } - - /** - * Fija el valor de fixedincomecatalog - * - * @param pFixedincomecatalog nuevo Valor de fixedincomecatalog - */ - public void setFixedincomecatalog(String pFixedincomecatalog) { - this.fixedincomecatalog = pFixedincomecatalog; - } - - /** - * Obtiene el valor de fixedincomecatalogcode - * - * @return valor de fixedincomecatalogcode - */ - public String getFixedincomecatalogcode() { - return this.fixedincomecatalogcode; - } - - /** - * Fija el valor de fixedincomecatalogcode - * - * @param pFixedincomecatalogcode nuevo Valor de fixedincomecatalogcode - */ - public void setFixedincomecatalogcode(String pFixedincomecatalogcode) { - this.fixedincomecatalogcode = pFixedincomecatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de bankpersoncode - * - * @return valor de bankpersoncode - */ - public Integer getBankpersoncode() { - return this.bankpersoncode; - } - - /** - * Fija el valor de bankpersoncode - * - * @param pBankpersoncode nuevo Valor de bankpersoncode - */ - public void setBankpersoncode(Integer pBankpersoncode) { - this.bankpersoncode = pBankpersoncode; - } - - /** - * Obtiene el valor de bankname - * - * @return valor de bankname - */ - public String getBankname() { - return this.bankname; - } - - /** - * Fija el valor de bankname - * - * @param pBankname nuevo Valor de bankname - */ - public void setBankname(String pBankname) { - this.bankname = pBankname; - } - - /** - * Obtiene el valor de originalamont - * - * @return valor de originalamont - */ - public BigDecimal getOriginalamont() { - return this.originalamont; - } - - /** - * Fija el valor de originalamont - * - * @param pOriginalamont nuevo Valor de originalamont - */ - public void setOriginalamont(BigDecimal pOriginalamont) { - this.originalamont = pOriginalamont; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de balance - * - * @return valor de balance - */ - public BigDecimal getBalance() { - return this.balance; - } - - /** - * Fija el valor de balance - * - * @param pBalance nuevo Valor de balance - */ - public void setBalance(BigDecimal pBalance) { - this.balance = pBalance; - } - - /** - * Obtiene el valor de balancedate - * - * @return valor de balancedate - */ - public Date getBalancedate() { - return this.balancedate; - } - - /** - * Fija el valor de balancedate - * - * @param pBalancedate nuevo Valor de balancedate - */ - public void setBalancedate(Date pBalancedate) { - this.balancedate = pBalancedate; - } - - /** - * Obtiene el valor de expirationdate - * - * @return valor de expirationdate - */ - public Date getExpirationdate() { - return this.expirationdate; - } - - /** - * Fija el valor de expirationdate - * - * @param pExpirationdate nuevo Valor de expirationdate - */ - public void setExpirationdate(Date pExpirationdate) { - this.expirationdate = pExpirationdate; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleFixedIncome)) { - return false; - } - TcustPeopleFixedIncome that = (TcustPeopleFixedIncome) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleFixedIncome - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleFixedIncome - */ - @Override - public Object createInstance() { - TcustPeopleFixedIncome instance = new TcustPeopleFixedIncome(); - instance.setPk(new TcustPeopleFixedIncomeKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleFixedIncome - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleFixedIncome p = (TcustPeopleFixedIncome) this.clone(); - p.setPk((TcustPeopleFixedIncomeKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncomeKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncomeKey.java.svn-base deleted file mode 100644 index 134a02e..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleFixedIncomeKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEFIXEDINCOME*/ -@Embeddable -public class TcustPeopleFixedIncomeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="FIXEDINCOMESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer fixedincomesequence; - -/**Contructor por defecto*/ -public TcustPeopleFixedIncomeKey(){} -/**Contructor de TcustPeopleFixedIncomeKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pFixedincomesequence Secuencia del ingreso de la persona -*/ -public TcustPeopleFixedIncomeKey(Integer pPersoncode,Timestamp pDateto,Integer pFixedincomesequence){ - personcode=pPersoncode; - dateto=pDateto; - fixedincomesequence=pFixedincomesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de fixedincomesequence -@return valor de fixedincomesequence*/ -public Integer getFixedincomesequence(){ - return fixedincomesequence; -} -/**Fija el valor de fixedincomesequence -@param pFixedincomesequence nuevo Valor de fixedincomesequence*/ -public void setFixedincomesequence(Integer pFixedincomesequence){ - fixedincomesequence=pFixedincomesequence; -} - -/**Implementacin de la comparacin de TcustPeopleFixedIncomeKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleFixedIncomeKey))return false; - TcustPeopleFixedIncomeKey that = (TcustPeopleFixedIncomeKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getFixedincomesequence() == null || that.getFixedincomesequence() == null){ - return false; - } - if (! this.getFixedincomesequence().equals(that.getFixedincomesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleFixedIncomeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getFixedincomesequence() == null ? 0 : this.getFixedincomesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncome.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncome.java.svn-base deleted file mode 100644 index e2ce444..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncome.java.svn-base +++ /dev/null @@ -1,416 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPEOPLEINCOME - */ -@Entity(name = "TcustPeopleIncome") -@Table(name = "TCUSTPEOPLEINCOME") -public class TcustPeopleIncome extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleIncome - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(INCOMESEQUENCE),0)+1 from TCUSTPEOPLEINCOME where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "incomesequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleIncomeKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "INCOMESCATALOG", nullable = true) - /** - * Codigo de catalogo de ingresos 1 sueldo, 2 comisiones - */ - private String incomescatalog; - @Column(name = "INCOMESCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo INCOMES DE INGRESOS - */ - private String incomescatalogcode; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "AMOUNT", nullable = true) - /** - * Valor del ingreso mensual - */ - private BigDecimal amount; - @Column(name = "ISFIXVALUE", nullable = true) - /** - * Y indica que un valor de ingreso fijo, N no es un ingreso fijo - */ - private String isfixvalue; - @Column(name = "VERIFIEDAMOUNT", nullable = true) - /** - * Monto verificado por una persona de la institucion financiera - */ - private BigDecimal verifiedamount; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleIncome() { - } - - /** - * Contructor de TcustPeopleIncome - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleIncome(TcustPeopleIncomeKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleIncome - */ - public static TcustPeopleIncome find(EntityManager pEntityManager, TcustPeopleIncomeKey pKey) throws Exception { - TcustPeopleIncome obj = pEntityManager.find(TcustPeopleIncome.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleIncome - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleIncome - */ - public TcustPeopleIncomeKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleIncome - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPeopleIncome - */ - public void setPk(TcustPeopleIncomeKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de incomescatalog - * - * @return valor de incomescatalog - */ - public String getIncomescatalog() { - return this.incomescatalog; - } - - /** - * Fija el valor de incomescatalog - * - * @param pIncomescatalog nuevo Valor de incomescatalog - */ - public void setIncomescatalog(String pIncomescatalog) { - this.incomescatalog = pIncomescatalog; - } - - /** - * Obtiene el valor de incomescatalogcode - * - * @return valor de incomescatalogcode - */ - public String getIncomescatalogcode() { - return this.incomescatalogcode; - } - - /** - * Fija el valor de incomescatalogcode - * - * @param pIncomescatalogcode nuevo Valor de incomescatalogcode - */ - public void setIncomescatalogcode(String pIncomescatalogcode) { - this.incomescatalogcode = pIncomescatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de amount - * - * @return valor de amount - */ - public BigDecimal getAmount() { - return this.amount; - } - - /** - * Fija el valor de amount - * - * @param pAmount nuevo Valor de amount - */ - public void setAmount(BigDecimal pAmount) { - this.amount = pAmount; - } - - /** - * Obtiene el valor de isfixvalue - * - * @return valor de isfixvalue - */ - public String getIsfixvalue() { - return this.isfixvalue; - } - - /** - * Fija el valor de isfixvalue - * - * @param pIsfixvalue nuevo Valor de isfixvalue - */ - public void setIsfixvalue(String pIsfixvalue) { - this.isfixvalue = pIsfixvalue; - } - - /** - * Obtiene el valor de verifiedamount - * - * @return valor de verifiedamount - */ - public BigDecimal getVerifiedamount() { - return this.verifiedamount; - } - - /** - * Fija el valor de verifiedamount - * - * @param pVerifiedamount nuevo Valor de verifiedamount - */ - public void setVerifiedamount(BigDecimal pVerifiedamount) { - this.verifiedamount = pVerifiedamount; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleIncome)) { - return false; - } - TcustPeopleIncome that = (TcustPeopleIncome) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleIncome - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleIncome - */ - @Override - public Object createInstance() { - TcustPeopleIncome instance = new TcustPeopleIncome(); - instance.setPk(new TcustPeopleIncomeKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleIncome - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleIncome p = (TcustPeopleIncome) this.clone(); - p.setPk((TcustPeopleIncomeKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncomeKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncomeKey.java.svn-base deleted file mode 100644 index 3394ddb..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleIncomeKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEINCOME*/ -@Embeddable -public class TcustPeopleIncomeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="INCOMESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer incomesequence; - -/**Contructor por defecto*/ -public TcustPeopleIncomeKey(){} -/**Contructor de TcustPeopleIncomeKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pIncomesequence Secuencia del ingreso de la persona -*/ -public TcustPeopleIncomeKey(Integer pPersoncode,Timestamp pDateto,Integer pIncomesequence){ - personcode=pPersoncode; - dateto=pDateto; - incomesequence=pIncomesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de incomesequence -@return valor de incomesequence*/ -public Integer getIncomesequence(){ - return incomesequence; -} -/**Fija el valor de incomesequence -@param pIncomesequence nuevo Valor de incomesequence*/ -public void setIncomesequence(Integer pIncomesequence){ - incomesequence=pIncomesequence; -} - -/**Implementacin de la comparacin de TcustPeopleIncomeKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleIncomeKey))return false; - TcustPeopleIncomeKey that = (TcustPeopleIncomeKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getIncomesequence() == null || that.getIncomesequence() == null){ - return false; - } - if (! this.getIncomesequence().equals(that.getIncomesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleIncomeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getIncomesequence() == null ? 0 : this.getIncomesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJob.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJob.java.svn-base deleted file mode 100644 index d723d3d..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJob.java.svn-base +++ /dev/null @@ -1,508 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPEOPLEJOB - */ -@Entity(name = "TcustPeopleJob") -@Table(name = "TCUSTPEOPLEJOB") -public class TcustPeopleJob extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleJob - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(JOBSEQUENCE),0)+1 from TCUSTPEOPLEJOB where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "jobsequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleJobKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "EMPLOYERPERSONCODE", nullable = true) - /** - * Codigo de persona empleadora - */ - private Integer employerpersoncode; - @Column(name = "JOBCATALOG", nullable = true) - /** - * Codigo de catalogo 1, Gerente, 2 Chofer, 3 Cajero - */ - private String jobcatalog; - @Column(name = "JOBCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo de cargos de personas naturales JOB - */ - private String jobcatalogcode; - @Column(name = "AGREEMENTTYPECATALOG", nullable = true) - /** - * Codigo de contrato, 1 indefinido, 2 un a�o , 3 tres meses etc. - */ - private String agreementtypecatalog; - @Column(name = "AGREEMENTTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo AGREEMENTTYPE tipo de contrato - */ - private String agreementtypecatalogcode; - @Column(name = "ENTRYDATE", nullable = true) - /** - * Fecha de ingreso al trabajo - */ - private Date entrydate; - @Column(name = "DEPARTUREDATE", nullable = true) - /** - * Fecha de salida del trabajo - */ - private Date departuredate; - @Column(name = "EMPLOYERNAME", nullable = true) - /** - * Nombre del empleador - */ - private String employername; - @Column(name = "ISOWNER", nullable = true) - /** - * Y indica que es duenio de la empresa. - */ - private String isowner; - @Column(name = "ADDRESS", nullable = true) - /** - * Numero de direccion asociada al trabajo - */ - private Integer address; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleJob() { - } - - /** - * Contructor de TcustPeopleJob - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleJob(TcustPeopleJobKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleJob - */ - public static TcustPeopleJob find(EntityManager pEntityManager, TcustPeopleJobKey pKey) throws Exception { - TcustPeopleJob obj = pEntityManager.find(TcustPeopleJob.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleJob - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleJob - */ - public TcustPeopleJobKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleJob - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPeopleJob - */ - public void setPk(TcustPeopleJobKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de employerpersoncode - * - * @return valor de employerpersoncode - */ - public Integer getEmployerpersoncode() { - return this.employerpersoncode; - } - - /** - * Fija el valor de employerpersoncode - * - * @param pEmployerpersoncode nuevo Valor de employerpersoncode - */ - public void setEmployerpersoncode(Integer pEmployerpersoncode) { - this.employerpersoncode = pEmployerpersoncode; - } - - /** - * Obtiene el valor de jobcatalog - * - * @return valor de jobcatalog - */ - public String getJobcatalog() { - return this.jobcatalog; - } - - /** - * Fija el valor de jobcatalog - * - * @param pJobcatalog nuevo Valor de jobcatalog - */ - public void setJobcatalog(String pJobcatalog) { - this.jobcatalog = pJobcatalog; - } - - /** - * Obtiene el valor de jobcatalogcode - * - * @return valor de jobcatalogcode - */ - public String getJobcatalogcode() { - return this.jobcatalogcode; - } - - /** - * Fija el valor de jobcatalogcode - * - * @param pJobcatalogcode nuevo Valor de jobcatalogcode - */ - public void setJobcatalogcode(String pJobcatalogcode) { - this.jobcatalogcode = pJobcatalogcode; - } - - /** - * Obtiene el valor de agreementtypecatalog - * - * @return valor de agreementtypecatalog - */ - public String getAgreementtypecatalog() { - return this.agreementtypecatalog; - } - - /** - * Fija el valor de agreementtypecatalog - * - * @param pAgreementtypecatalog nuevo Valor de agreementtypecatalog - */ - public void setAgreementtypecatalog(String pAgreementtypecatalog) { - this.agreementtypecatalog = pAgreementtypecatalog; - } - - /** - * Obtiene el valor de agreementtypecatalogcode - * - * @return valor de agreementtypecatalogcode - */ - public String getAgreementtypecatalogcode() { - return this.agreementtypecatalogcode; - } - - /** - * Fija el valor de agreementtypecatalogcode - * - * @param pAgreementtypecatalogcode nuevo Valor de agreementtypecatalogcode - */ - public void setAgreementtypecatalogcode(String pAgreementtypecatalogcode) { - this.agreementtypecatalogcode = pAgreementtypecatalogcode; - } - - /** - * Obtiene el valor de entrydate - * - * @return valor de entrydate - */ - public Date getEntrydate() { - return this.entrydate; - } - - /** - * Fija el valor de entrydate - * - * @param pEntrydate nuevo Valor de entrydate - */ - public void setEntrydate(Date pEntrydate) { - this.entrydate = pEntrydate; - } - - /** - * Obtiene el valor de departuredate - * - * @return valor de departuredate - */ - public Date getDeparturedate() { - return this.departuredate; - } - - /** - * Fija el valor de departuredate - * - * @param pDeparturedate nuevo Valor de departuredate - */ - public void setDeparturedate(Date pDeparturedate) { - this.departuredate = pDeparturedate; - } - - /** - * Obtiene el valor de employername - * - * @return valor de employername - */ - public String getEmployername() { - return this.employername; - } - - /** - * Fija el valor de employername - * - * @param pEmployername nuevo Valor de employername - */ - public void setEmployername(String pEmployername) { - this.employername = pEmployername; - } - - /** - * Obtiene el valor de isowner - * - * @return valor de isowner - */ - public String getIsowner() { - return this.isowner; - } - - /** - * Fija el valor de isowner - * - * @param pIsowner nuevo Valor de isowner - */ - public void setIsowner(String pIsowner) { - this.isowner = pIsowner; - } - - /** - * Obtiene el valor de address - * - * @return valor de address - */ - public Integer getAddress() { - return this.address; - } - - /** - * Fija el valor de address - * - * @param pAddress nuevo Valor de address - */ - public void setAddress(Integer pAddress) { - this.address = pAddress; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleJob)) { - return false; - } - TcustPeopleJob that = (TcustPeopleJob) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleJob - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleJob - */ - @Override - public Object createInstance() { - TcustPeopleJob instance = new TcustPeopleJob(); - instance.setPk(new TcustPeopleJobKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleJob - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleJob p = (TcustPeopleJob) this.clone(); - p.setPk((TcustPeopleJobKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJobKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJobKey.java.svn-base deleted file mode 100644 index fced40a..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleJobKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEJOB*/ -@Embeddable -public class TcustPeopleJobKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="JOBSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del trabajo -*/ -private Integer jobsequence; - -/**Contructor por defecto*/ -public TcustPeopleJobKey(){} -/**Contructor de TcustPeopleJobKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pJobsequence Secuencia del trabajo -*/ -public TcustPeopleJobKey(Integer pPersoncode,Timestamp pDateto,Integer pJobsequence){ - personcode=pPersoncode; - dateto=pDateto; - jobsequence=pJobsequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de jobsequence -@return valor de jobsequence*/ -public Integer getJobsequence(){ - return jobsequence; -} -/**Fija el valor de jobsequence -@param pJobsequence nuevo Valor de jobsequence*/ -public void setJobsequence(Integer pJobsequence){ - jobsequence=pJobsequence; -} - -/**Implementacin de la comparacin de TcustPeopleJobKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleJobKey))return false; - TcustPeopleJobKey that = (TcustPeopleJobKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getJobsequence() == null || that.getJobsequence() == null){ - return false; - } - if (! this.getJobsequence().equals(that.getJobsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleJobKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getJobsequence() == null ? 0 : this.getJobsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleKey.java.svn-base deleted file mode 100644 index 3da7c3e..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLE*/ -@Embeddable -public class TcustPeopleKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TcustPeopleKey(){} -/**Contructor de TcustPeopleKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TcustPeopleKey(Integer pPersoncode,Timestamp pDateto){ - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TcustPeopleKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleKey))return false; - TcustPeopleKey that = (TcustPeopleKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustPeopleKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoan.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoan.java.svn-base deleted file mode 100644 index f5d24a4..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoan.java.svn-base +++ /dev/null @@ -1,568 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; -import javax.persistence.*; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLELOAN - */ -@Entity(name = "TcustPeopleLoan") -@Table(name = "TCUSTPEOPLELOAN") -public class TcustPeopleLoan extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleLoan - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(LOANSEQUENCE),0)+1 from TCUSTPEOPLELOAN where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "loansequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleLoanKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "CREDITRATINGCATALOG", nullable = true) - /** - * Codigo de catalogo 1, normal, 2 deficiente, dudoso, 3 perdida - */ - private String creditratingcatalog; - @Column(name = "CREDITRATINGCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo CREDITRATING, de la calificacion de creditos - */ - private String creditratingcatalogcode; - @Column(name = "CREDITTYPECLIENTCATALOG", nullable = true) - /** - * Tipos de credito - */ - private String credittypeclientcatalog; - @Column(name = "CREDITTYPECLIENTCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo CREDITTYPECLIENT, para tipos de crédito - */ - private String credittypeclientcatalogcode; - @Column(name = "FREQUENCYCLIENTCATALOG", nullable = true) - /** - * Tipos de credito - */ - private String frequencyclientcatalog; - @Column(name = "FREQUENCYCLIENTCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo FREQUENCYCLIENT, para frecuencias en clientes - */ - private String frequencyclientcatalogcode; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "BANKPERSONCODE", nullable = true) - /** - * Codigo de persona asociado a la institucion fincnaiera en la cual el cliente matiene el prestamo - */ - private Integer bankpersoncode; - @Column(name = "BANKNAME", nullable = true) - /** - * Nombre de la institucion financiera en la cual el cliente mantiene la operacion - */ - private String bankname; - @Column(name = "ORIGINALAMONT", nullable = true) - /** - * Monto original del prestamo - */ - private BigDecimal originalamont; - @Column(name = "BALANCE", nullable = true) - /** - * Saldo del prestamo. - */ - private BigDecimal balance; - @Column(name = "BALANCEDATE", nullable = true) - /** - * Fecha a la cual se ingresa el saldo del prestamo - */ - private Date balancedate; - @Column(name = "QUOTAAMOUNT", nullable = true) - /** - * Valor de la cuota, de acuerdo a la frecuencia de pago - */ - private BigDecimal quotaamount; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleLoan() { - } - - /** - * Contructor de TcustPeopleLoan - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleLoan(TcustPeopleLoanKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleLoan - */ - public static TcustPeopleLoan find(EntityManager pEntityManager, TcustPeopleLoanKey pKey) throws Exception { - TcustPeopleLoan obj = pEntityManager.find(TcustPeopleLoan.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleLoan - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleLoan - */ - public TcustPeopleLoanKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleLoan - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleLoan - */ - public void setPk(TcustPeopleLoanKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de creditratingcatalog - * - * @return valor de creditratingcatalog - */ - public String getCreditratingcatalog() { - return creditratingcatalog; - } - - /** - * Fija el valor de creditratingcatalog - * - * @param pCreditratingcatalog nuevo Valor de creditratingcatalog - */ - public void setCreditratingcatalog(String pCreditratingcatalog) { - creditratingcatalog = pCreditratingcatalog; - } - - /** - * Obtiene el valor de creditratingcatalogcode - * - * @return valor de creditratingcatalogcode - */ - public String getCreditratingcatalogcode() { - return creditratingcatalogcode; - } - - /** - * Fija el valor de creditratingcatalogcode - * - * @param pCreditratingcatalogcode nuevo Valor de creditratingcatalogcode - */ - public void setCreditratingcatalogcode(String pCreditratingcatalogcode) { - creditratingcatalogcode = pCreditratingcatalogcode; - } - - /** - * Obtiene el valor de credittypeclientcatalog - * - * @return valor de credittypeclientcatalog - */ - public String getCredittypeclientcatalog() { - return credittypeclientcatalog; - } - - /** - * Fija el valor de credittypeclientcatalog - * - * @param pCredittypeclientcatalog nuevo Valor de credittypeclientcatalog - */ - public void setCredittypeclientcatalog(String pCredittypeclientcatalog) { - credittypeclientcatalog = pCredittypeclientcatalog; - } - - /** - * Obtiene el valor de credittypeclientcatalogcode - * - * @return valor de credittypeclientcatalogcode - */ - public String getCredittypeclientcatalogcode() { - return credittypeclientcatalogcode; - } - - /** - * Fija el valor de credittypeclientcatalogcode - * - * @param pCredittypeclientcatalogcode nuevo Valor de credittypeclientcatalogcode - */ - public void setCredittypeclientcatalogcode(String pCredittypeclientcatalogcode) { - credittypeclientcatalogcode = pCredittypeclientcatalogcode; - } - - /** - * Obtiene el valor de frequencyclientcatalog - * - * @return valor de frequencyclientcatalog - */ - public String getFrequencyclientcatalog() { - return frequencyclientcatalog; - } - - /** - * Fija el valor de frequencyclientcatalog - * - * @param pFrequencyclientcatalog nuevo Valor de frequencyclientcatalog - */ - public void setFrequencyclientcatalog(String pFrequencyclientcatalog) { - frequencyclientcatalog = pFrequencyclientcatalog; - } - - /** - * Obtiene el valor de frequencyclientcatalogcode - * - * @return valor de frequencyclientcatalogcode - */ - public String getFrequencyclientcatalogcode() { - return frequencyclientcatalogcode; - } - - /** - * Fija el valor de frequencyclientcatalogcode - * - * @param pFrequencyclientcatalogcode nuevo Valor de frequencyclientcatalogcode - */ - public void setFrequencyclientcatalogcode(String pFrequencyclientcatalogcode) { - frequencyclientcatalogcode = pFrequencyclientcatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de bankpersoncode - * - * @return valor de bankpersoncode - */ - public Integer getBankpersoncode() { - return bankpersoncode; - } - - /** - * Fija el valor de bankpersoncode - * - * @param pBankpersoncode nuevo Valor de bankpersoncode - */ - public void setBankpersoncode(Integer pBankpersoncode) { - bankpersoncode = pBankpersoncode; - } - - /** - * Obtiene el valor de bankname - * - * @return valor de bankname - */ - public String getBankname() { - return bankname; - } - - /** - * Fija el valor de bankname - * - * @param pBankname nuevo Valor de bankname - */ - public void setBankname(String pBankname) { - bankname = pBankname; - } - - /** - * Obtiene el valor de originalamont - * - * @return valor de originalamont - */ - public BigDecimal getOriginalamont() { - return originalamont; - } - - /** - * Fija el valor de originalamont - * - * @param pOriginalamont nuevo Valor de originalamont - */ - public void setOriginalamont(BigDecimal pOriginalamont) { - originalamont = pOriginalamont; - } - - /** - * Obtiene el valor de balance - * - * @return valor de balance - */ - public BigDecimal getBalance() { - return balance; - } - - /** - * Fija el valor de balance - * - * @param pBalance nuevo Valor de balance - */ - public void setBalance(BigDecimal pBalance) { - balance = pBalance; - } - - /** - * Obtiene el valor de balancedate - * - * @return valor de balancedate - */ - public Date getBalancedate() { - return balancedate; - } - - /** - * Fija el valor de balancedate - * - * @param pBalancedate nuevo Valor de balancedate - */ - public void setBalancedate(Date pBalancedate) { - balancedate = pBalancedate; - } - - /** - * Obtiene el valor de quotaamount - * - * @return valor de quotaamount - */ - public BigDecimal getQuotaamount() { - return quotaamount; - } - - /** - * Fija el valor de quotaamount - * - * @param pQuotaamount nuevo Valor de quotaamount - */ - public void setQuotaamount(BigDecimal pQuotaamount) { - quotaamount = pQuotaamount; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - modifyusercode = pModifyusercode; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleLoan)) { - return false; - } - TcustPeopleLoan that = (TcustPeopleLoan) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TcustPeopleLoan - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacion toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacion de la creacion de un bean en blanco TcustPeopleLoan - */ - public Object createInstance() { - TcustPeopleLoan instance = new TcustPeopleLoan(); - instance.setPk(new TcustPeopleLoanKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleLoan - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleLoan p = (TcustPeopleLoan) this.clone(); - p.setPk((TcustPeopleLoanKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoanKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoanKey.java.svn-base deleted file mode 100644 index 3ec6776..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleLoanKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLELOAN*/ -@Embeddable -public class TcustPeopleLoanKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="LOANSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer loansequence; - -/**Contructor por defecto*/ -public TcustPeopleLoanKey(){} -/**Contructor de TcustPeopleLoanKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pLoansequence Secuencia del ingreso de la persona -*/ -public TcustPeopleLoanKey(Integer pPersoncode,Timestamp pDateto,Integer pLoansequence){ - personcode=pPersoncode; - dateto=pDateto; - loansequence=pLoansequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de loansequence -@return valor de loansequence*/ -public Integer getLoansequence(){ - return loansequence; -} -/**Fija el valor de loansequence -@param pLoansequence nuevo Valor de loansequence*/ -public void setLoansequence(Integer pLoansequence){ - loansequence=pLoansequence; -} - -/**Implementacion de la comparacion de TcustPeopleLoanKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleLoanKey))return false; - TcustPeopleLoanKey that = (TcustPeopleLoanKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getLoansequence() == null || that.getLoansequence() == null){ - return false; - } - if (! this.getLoansequence().equals(that.getLoansequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TcustPeopleLoanKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getLoansequence() == null ? 0 : this.getLoansequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssets.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssets.java.svn-base deleted file mode 100644 index 295404b..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssets.java.svn-base +++ /dev/null @@ -1,546 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLEOTHERASSETS - */ -@Entity(name = "TcustPeopleOtherAssets") -@Table(name = "TCUSTPEOPLEOTHERASSETS") -public class TcustPeopleOtherAssets extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPeopleOtherAssets - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(ASSETSSEQUENCE),0)+1 from TCUSTPEOPLEOTHERASSETS where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "assetssequence") }) - @GeneratedValue(generator = "seq_id") - private TcustPeopleOtherAssetsKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "PROPERTYTYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1, CASA, 2 OFICINA, 3 JOYAS - */ - private String propertytypecatalog; - - @Column(name = "PROPERTYTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PROPERTYTYPE, DEL TIPO DE BIEN - */ - private String propertytypecatalogcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "ASSESSMENT", nullable = true) - /** - * Valor del avaluo del bien - */ - private BigDecimal assessment; - - @Column(name = "ASSESSMENTDATE", nullable = true) - /** - * Fecha de avaluo. - */ - private Date assessmentdate; - - @Column(name = "MORTGAGEAMOUNT", nullable = true) - /** - * Monto original de la hipoteca - */ - private BigDecimal mortgageamount; - - @Column(name = "MORTGAGEDATE", nullable = true) - /** - * Fecha de la hipoteca - */ - private Date mortgagedate; - - @Column(name = "MORTGAGEBALANCE", nullable = true) - /** - * Saldo de la hipoteca - */ - private BigDecimal mortgagebalance; - - @Column(name = "MORTGAGEPERSONCODE", nullable = true) - /** - * Codigo de persona a la que esta hipotecado el bien - */ - private Integer mortgagepersoncode; - - @Column(name = "MORTGAGENAME", nullable = true) - /** - * Nombre de la entidad poseedora de la hipoteca - */ - private String mortgagename; - - @Column(name = "REMARK", nullable = true) - /** - * Comentario - */ - private String remark; - - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleOtherAssets() { - } - - /** - * Contructor de TcustPeopleOtherAssets - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleOtherAssets(TcustPeopleOtherAssetsKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleOtherAssets - */ - public static TcustPeopleOtherAssets find(EntityManager pEntityManager, TcustPeopleOtherAssetsKey pKey) throws Exception { - TcustPeopleOtherAssets obj = pEntityManager.find(TcustPeopleOtherAssets.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleOtherAssets - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleOtherAssets - */ - public TcustPeopleOtherAssetsKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleOtherAssets - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleOtherAssets - */ - public void setPk(TcustPeopleOtherAssetsKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de propertytypecatalog - * - * @return valor de propertytypecatalog - */ - public String getPropertytypecatalog() { - return this.propertytypecatalog; - } - - /** - * Fija el valor de propertytypecatalog - * - * @param pPropertytypecatalog nuevo Valor de propertytypecatalog - */ - public void setPropertytypecatalog(String pPropertytypecatalog) { - this.propertytypecatalog = pPropertytypecatalog; - } - - /** - * Obtiene el valor de propertytypecatalogcode - * - * @return valor de propertytypecatalogcode - */ - public String getPropertytypecatalogcode() { - return this.propertytypecatalogcode; - } - - /** - * Fija el valor de propertytypecatalogcode - * - * @param pPropertytypecatalogcode nuevo Valor de propertytypecatalogcode - */ - public void setPropertytypecatalogcode(String pPropertytypecatalogcode) { - this.propertytypecatalogcode = pPropertytypecatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de assessment - * - * @return valor de assessment - */ - public BigDecimal getAssessment() { - return this.assessment; - } - - /** - * Fija el valor de assessment - * - * @param pAssessment nuevo Valor de assessment - */ - public void setAssessment(BigDecimal pAssessment) { - this.assessment = pAssessment; - } - - /** - * Obtiene el valor de assessmentdate - * - * @return valor de assessmentdate - */ - public Date getAssessmentdate() { - return this.assessmentdate; - } - - /** - * Fija el valor de assessmentdate - * - * @param pAssessmentdate nuevo Valor de assessmentdate - */ - public void setAssessmentdate(Date pAssessmentdate) { - this.assessmentdate = pAssessmentdate; - } - - /** - * Obtiene el valor de mortgageamount - * - * @return valor de mortgageamount - */ - public BigDecimal getMortgageamount() { - return this.mortgageamount; - } - - /** - * Fija el valor de mortgageamount - * - * @param pMortgageamount nuevo Valor de mortgageamount - */ - public void setMortgageamount(BigDecimal pMortgageamount) { - this.mortgageamount = pMortgageamount; - } - - /** - * Obtiene el valor de mortgagedate - * - * @return valor de mortgagedate - */ - public Date getMortgagedate() { - return this.mortgagedate; - } - - /** - * Fija el valor de mortgagedate - * - * @param pMortgagedate nuevo Valor de mortgagedate - */ - public void setMortgagedate(Date pMortgagedate) { - this.mortgagedate = pMortgagedate; - } - - /** - * Obtiene el valor de mortgagebalance - * - * @return valor de mortgagebalance - */ - public BigDecimal getMortgagebalance() { - return this.mortgagebalance; - } - - /** - * Fija el valor de mortgagebalance - * - * @param pMortgagebalance nuevo Valor de mortgagebalance - */ - public void setMortgagebalance(BigDecimal pMortgagebalance) { - this.mortgagebalance = pMortgagebalance; - } - - /** - * Obtiene el valor de mortgagepersoncode - * - * @return valor de mortgagepersoncode - */ - public Integer getMortgagepersoncode() { - return this.mortgagepersoncode; - } - - /** - * Fija el valor de mortgagepersoncode - * - * @param pMortgagepersoncode nuevo Valor de mortgagepersoncode - */ - public void setMortgagepersoncode(Integer pMortgagepersoncode) { - this.mortgagepersoncode = pMortgagepersoncode; - } - - /** - * Obtiene el valor de mortgagename - * - * @return valor de mortgagename - */ - public String getMortgagename() { - return this.mortgagename; - } - - /** - * Fija el valor de mortgagename - * - * @param pMortgagename nuevo Valor de mortgagename - */ - public void setMortgagename(String pMortgagename) { - this.mortgagename = pMortgagename; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleOtherAssets)) { - return false; - } - TcustPeopleOtherAssets that = (TcustPeopleOtherAssets) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleOtherAssets - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleOtherAssets - */ - @Override - public Object createInstance() { - TcustPeopleOtherAssets instance = new TcustPeopleOtherAssets(); - instance.setPk(new TcustPeopleOtherAssetsKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleOtherAssets - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleOtherAssets p = (TcustPeopleOtherAssets) this.clone(); - p.setPk((TcustPeopleOtherAssetsKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssetsKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssetsKey.java.svn-base deleted file mode 100644 index e50643f..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleOtherAssetsKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEOTHERASSETS*/ -@Embeddable -public class TcustPeopleOtherAssetsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="ASSETSSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer assetssequence; - -/**Contructor por defecto*/ -public TcustPeopleOtherAssetsKey(){} -/**Contructor de TcustPeopleOtherAssetsKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pAssetssequence Secuencia del ingreso de la persona -*/ -public TcustPeopleOtherAssetsKey(Integer pPersoncode,Timestamp pDateto,Integer pAssetssequence){ - personcode=pPersoncode; - dateto=pDateto; - assetssequence=pAssetssequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de assetssequence -@return valor de assetssequence*/ -public Integer getAssetssequence(){ - return assetssequence; -} -/**Fija el valor de assetssequence -@param pAssetssequence nuevo Valor de assetssequence*/ -public void setAssetssequence(Integer pAssetssequence){ - assetssequence=pAssetssequence; -} - -/**Implementacin de la comparacin de TcustPeopleOtherAssetsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleOtherAssetsKey))return false; - TcustPeopleOtherAssetsKey that = (TcustPeopleOtherAssetsKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getAssetssequence() == null || that.getAssetssequence() == null){ - return false; - } - if (! this.getAssetssequence().equals(that.getAssetssequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleOtherAssetsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getAssetssequence() == null ? 0 : this.getAssetssequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssets.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssets.java.svn-base deleted file mode 100644 index 3ad0159..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssets.java.svn-base +++ /dev/null @@ -1,674 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPEOPLEREALASSETS - */ -@Entity(name = "TcustPeopleRealAssets") -@Table(name = "TCUSTPEOPLEREALASSETS") -public class TcustPeopleRealAssets extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleRealAssets - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(ASSETSSEQUENCE),0)+1 from TCUSTPEOPLEREALASSETS where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "assetssequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleRealAssetsKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "REALASSETSTYPECATALOG", nullable = true) - /** - * Codigo de catalogo de tipos de bien 1, casa, 2 oficina, 3 terreno - */ - private String realassetstypecatalog; - @Column(name = "REALASSETSTYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo REALASSETSTYPE, del tipo de bien - */ - private String realassetstypecatalogcode; - @Column(name = "COUNTRYCODE", nullable = true) - /** - * Codigo de pais - */ - private String countrycode; - @Column(name = "PROVINCECODE", nullable = true) - /** - * Codigo de provincia - */ - private String provincecode; - @Column(name = "CANTONCODE", nullable = true) - /** - * Codigo de canton - */ - private String cantoncode; - @Column(name = "CITYCODE", nullable = true) - /** - * Codigo de cuidad - */ - private String citycode; - @Column(name = "LOCATION", nullable = true) - /** - * Ubicacion de la propiedad - */ - private String location; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "ASSESSMENT", nullable = true) - /** - * Valor del avaluo del bien - */ - private BigDecimal assessment; - @Column(name = "ASSESSMENTDATE", nullable = true) - /** - * Fecha de avaluo. - */ - private Date assessmentdate; - @Column(name = "MORTGAGEAMOUNT", nullable = true) - /** - * Monto original de la hipoteca - */ - private BigDecimal mortgageamount; - @Column(name = "MORTGAGEDATE", nullable = true) - /** - * Fecha de la hipoteca - */ - private Date mortgagedate; - @Column(name = "MORTGAGEBALANCE", nullable = true) - /** - * Saldo de la hipoteca - */ - private BigDecimal mortgagebalance; - @Column(name = "MORTGAGEPERSONCODE", nullable = true) - /** - * Codigo de persona a la que esta hipotecado el bien - */ - private Integer mortgagepersoncode; - @Column(name = "PARROQUIACODE", nullable = true) - /** - * Codigo de parroquia - */ - private String parroquiacode; - @Column(name = "MORTGAGENAME", nullable = true) - /** - * Nombre de la entidad poseedora de la hipoteca - */ - private String mortgagename; - @Column(name = "REMARK", nullable = true) - /** - * Comentario - */ - private String remark; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleRealAssets() { - } - - /** - * Contructor de TcustPeopleRealAssets - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleRealAssets(TcustPeopleRealAssetsKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleRealAssets - */ - public static TcustPeopleRealAssets find(EntityManager pEntityManager, TcustPeopleRealAssetsKey pKey) throws Exception { - TcustPeopleRealAssets obj = pEntityManager.find(TcustPeopleRealAssets.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleRealAssets - * - * @return El objeto que referencia a la Clave primaria de - * TcustPeopleRealAssets - */ - public TcustPeopleRealAssetsKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleRealAssets - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPeopleRealAssets - */ - public void setPk(TcustPeopleRealAssetsKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de realassetstypecatalog - * - * @return valor de realassetstypecatalog - */ - public String getRealassetstypecatalog() { - return this.realassetstypecatalog; - } - - /** - * Fija el valor de realassetstypecatalog - * - * @param pRealassetstypecatalog nuevo Valor de realassetstypecatalog - */ - public void setRealassetstypecatalog(String pRealassetstypecatalog) { - this.realassetstypecatalog = pRealassetstypecatalog; - } - - /** - * Obtiene el valor de realassetstypecatalogcode - * - * @return valor de realassetstypecatalogcode - */ - public String getRealassetstypecatalogcode() { - return this.realassetstypecatalogcode; - } - - /** - * Fija el valor de realassetstypecatalogcode - * - * @param pRealassetstypecatalogcode nuevo Valor de - * realassetstypecatalogcode - */ - public void setRealassetstypecatalogcode(String pRealassetstypecatalogcode) { - this.realassetstypecatalogcode = pRealassetstypecatalogcode; - } - - /** - * Obtiene el valor de countrycode - * - * @return valor de countrycode - */ - public String getCountrycode() { - return this.countrycode; - } - - /** - * Fija el valor de countrycode - * - * @param pCountrycode nuevo Valor de countrycode - */ - public void setCountrycode(String pCountrycode) { - this.countrycode = pCountrycode; - } - - /** - * Obtiene el valor de provincecode - * - * @return valor de provincecode - */ - public String getProvincecode() { - return this.provincecode; - } - - /** - * Fija el valor de provincecode - * - * @param pProvincecode nuevo Valor de provincecode - */ - public void setProvincecode(String pProvincecode) { - this.provincecode = pProvincecode; - } - - /** - * Obtiene el valor de cantoncode - * - * @return valor de cantoncode - */ - public String getCantoncode() { - return this.cantoncode; - } - - /** - * Fija el valor de cantoncode - * - * @param pCantoncode nuevo Valor de cantoncode - */ - public void setCantoncode(String pCantoncode) { - this.cantoncode = pCantoncode; - } - - /** - * Obtiene el valor de citycode - * - * @return valor de citycode - */ - public String getCitycode() { - return this.citycode; - } - - /** - * Fija el valor de citycode - * - * @param pCitycode nuevo Valor de citycode - */ - public void setCitycode(String pCitycode) { - this.citycode = pCitycode; - } - - /** - * Obtiene el valor de location - * - * @return valor de location - */ - public String getLocation() { - return this.location; - } - - /** - * Fija el valor de location - * - * @param pLocation nuevo Valor de location - */ - public void setLocation(String pLocation) { - this.location = pLocation; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de assessment - * - * @return valor de assessment - */ - public BigDecimal getAssessment() { - return this.assessment; - } - - /** - * Fija el valor de assessment - * - * @param pAssessment nuevo Valor de assessment - */ - public void setAssessment(BigDecimal pAssessment) { - this.assessment = pAssessment; - } - - /** - * Obtiene el valor de assessmentdate - * - * @return valor de assessmentdate - */ - public Date getAssessmentdate() { - return this.assessmentdate; - } - - /** - * Fija el valor de assessmentdate - * - * @param pAssessmentdate nuevo Valor de assessmentdate - */ - public void setAssessmentdate(Date pAssessmentdate) { - this.assessmentdate = pAssessmentdate; - } - - /** - * Obtiene el valor de mortgageamount - * - * @return valor de mortgageamount - */ - public BigDecimal getMortgageamount() { - return this.mortgageamount; - } - - /** - * Fija el valor de mortgageamount - * - * @param pMortgageamount nuevo Valor de mortgageamount - */ - public void setMortgageamount(BigDecimal pMortgageamount) { - this.mortgageamount = pMortgageamount; - } - - /** - * Obtiene el valor de mortgagedate - * - * @return valor de mortgagedate - */ - public Date getMortgagedate() { - return this.mortgagedate; - } - - /** - * Fija el valor de mortgagedate - * - * @param pMortgagedate nuevo Valor de mortgagedate - */ - public void setMortgagedate(Date pMortgagedate) { - this.mortgagedate = pMortgagedate; - } - - /** - * Obtiene el valor de mortgagebalance - * - * @return valor de mortgagebalance - */ - public BigDecimal getMortgagebalance() { - return this.mortgagebalance; - } - - /** - * Fija el valor de mortgagebalance - * - * @param pMortgagebalance nuevo Valor de mortgagebalance - */ - public void setMortgagebalance(BigDecimal pMortgagebalance) { - this.mortgagebalance = pMortgagebalance; - } - - /** - * Obtiene el valor de mortgagepersoncode - * - * @return valor de mortgagepersoncode - */ - public Integer getMortgagepersoncode() { - return this.mortgagepersoncode; - } - - /** - * Fija el valor de mortgagepersoncode - * - * @param pMortgagepersoncode nuevo Valor de mortgagepersoncode - */ - public void setMortgagepersoncode(Integer pMortgagepersoncode) { - this.mortgagepersoncode = pMortgagepersoncode; - } - - /** - * Obtiene el valor de parroquiacode - * - * @return valor de parroquiacode - */ - public String getParroquiacode() { - return this.parroquiacode; - } - - /** - * Fija el valor de parroquiacode - * - * @param pParroquiacode nuevo Valor de parroquiacode - */ - public void setParroquiacode(String pParroquiacode) { - this.parroquiacode = pParroquiacode; - } - - /** - * Obtiene el valor de mortgagename - * - * @return valor de mortgagename - */ - public String getMortgagename() { - return this.mortgagename; - } - - /** - * Fija el valor de mortgagename - * - * @param pMortgagename nuevo Valor de mortgagename - */ - public void setMortgagename(String pMortgagename) { - this.mortgagename = pMortgagename; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleRealAssets)) { - return false; - } - TcustPeopleRealAssets that = (TcustPeopleRealAssets) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad - * TcustPeopleRealAssets - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco - * TcustPeopleRealAssets - */ - @Override - public Object createInstance() { - TcustPeopleRealAssets instance = new TcustPeopleRealAssets(); - instance.setPk(new TcustPeopleRealAssetsKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleRealAssets - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleRealAssets p = (TcustPeopleRealAssets) this.clone(); - p.setPk((TcustPeopleRealAssetsKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssetsKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssetsKey.java.svn-base deleted file mode 100644 index 63abc5b..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleRealAssetsKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEREALASSETS*/ -@Embeddable -public class TcustPeopleRealAssetsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="ASSETSSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del ingreso de la persona -*/ -private Integer assetssequence; - -/**Contructor por defecto*/ -public TcustPeopleRealAssetsKey(){} -/**Contructor de TcustPeopleRealAssetsKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pAssetssequence Secuencia del ingreso de la persona -*/ -public TcustPeopleRealAssetsKey(Integer pPersoncode,Timestamp pDateto,Integer pAssetssequence){ - personcode=pPersoncode; - dateto=pDateto; - assetssequence=pAssetssequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de assetssequence -@return valor de assetssequence*/ -public Integer getAssetssequence(){ - return assetssequence; -} -/**Fija el valor de assetssequence -@param pAssetssequence nuevo Valor de assetssequence*/ -public void setAssetssequence(Integer pAssetssequence){ - assetssequence=pAssetssequence; -} - -/**Implementacin de la comparacin de TcustPeopleRealAssetsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleRealAssetsKey))return false; - TcustPeopleRealAssetsKey that = (TcustPeopleRealAssetsKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getAssetssequence() == null || that.getAssetssequence() == null){ - return false; - } - if (! this.getAssetssequence().equals(that.getAssetssequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleRealAssetsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getAssetssequence() == null ? 0 : this.getAssetssequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferences.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferences.java.svn-base deleted file mode 100644 index d79c115..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferences.java.svn-base +++ /dev/null @@ -1,573 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TCUSTPEOPLETRADEREFERENCES - */ -@Entity(name = "TcustPeopleTradereferences") -@Table(name = "TCUSTPEOPLETRADEREFERENCES") -public class TcustPeopleTradereferences extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TcustPeopleTradereferences - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(TRADESEQUENCE),0)+1 from TCUSTPEOPLETRADEREFERENCES where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "tradesequence") }) - @GeneratedValue(generator = "seq_id") - private TcustPeopleTradereferencesKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "ITEM", nullable = true) - /** - * Descripcion del articulo comprado. - */ - private String item; - - @Column(name = "PURCHASEYEAR", nullable = true) - /** - * Anio en que se realizo la compra - */ - private String purchaseyear; - - @Column(name = "PAYMENTMETHODCATALOG", nullable = true) - /** - * Codigo de catalogo de metodo de pago 1 Efectivo, 2 Cheques, 3 tarjeta de - * credito - */ - private String paymentmethodcatalog; - - @Column(name = "PAYMENTMETHODCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo PAYMENTMETHOD, metodo de pago - */ - private String paymentmethodcatalogcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda de la compra - */ - private String currencycode; - - @Column(name = "AMOUNT", nullable = true) - /** - * Monto total de la compra - */ - private BigDecimal amount; - - @Column(name = "INPUTAMOUNT", nullable = true) - /** - * Monto de entrada - */ - private BigDecimal inputamount; - - @Column(name = "QUOTASNUMBER", nullable = true) - /** - * Numero de cuotas pactadas si se compro a plazo - */ - private Integer quotasnumber; - - @Column(name = "QUOTAVALUE", nullable = true) - /** - * Monto de la cuota pactada - */ - private BigDecimal quotavalue; - - @Column(name = "TRADEPERSONCODE", nullable = true) - /** - * Codigo de persona asociada a la empresa casa cmercial en donde el cliente - * realizo la compra - */ - private Integer tradepersoncode; - - @Column(name = "TRADENAME", nullable = true) - /** - * Nombre del establesimiento comercial, si no esta registrado en la base de - * personas - */ - private String tradename; - - @Column(name = "TRADEPHONE", nullable = true) - /** - * Telefono asociado al establesimiento comercial si no esta registrado como - * una persona - */ - private String tradephone; - - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleTradereferences() { - } - - /** - * Contructor de TcustPeopleTradereferences - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleTradereferences(TcustPeopleTradereferencesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleTradereferences - */ - public static TcustPeopleTradereferences find(EntityManager pEntityManager, TcustPeopleTradereferencesKey pKey) throws Exception { - TcustPeopleTradereferences obj = pEntityManager.find(TcustPeopleTradereferences.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleTradereferences - * - * @return El objeto que referencia a la Clave primaria de TcustPeopleTradereferences - */ - public TcustPeopleTradereferencesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleTradereferences - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TcustPeopleTradereferences - */ - public void setPk(TcustPeopleTradereferencesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de item - * - * @return valor de item - */ - public String getItem() { - return this.item; - } - - /** - * Fija el valor de item - * - * @param pItem nuevo Valor de item - */ - public void setItem(String pItem) { - this.item = pItem; - } - - /** - * Obtiene el valor de purchaseyear - * - * @return valor de purchaseyear - */ - public String getPurchaseyear() { - return this.purchaseyear; - } - - /** - * Fija el valor de purchaseyear - * - * @param pPurchaseyear nuevo Valor de purchaseyear - */ - public void setPurchaseyear(String pPurchaseyear) { - this.purchaseyear = pPurchaseyear; - } - - /** - * Obtiene el valor de paymentmethodcatalog - * - * @return valor de paymentmethodcatalog - */ - public String getPaymentmethodcatalog() { - return this.paymentmethodcatalog; - } - - /** - * Fija el valor de paymentmethodcatalog - * - * @param pPaymentmethodcatalog nuevo Valor de paymentmethodcatalog - */ - public void setPaymentmethodcatalog(String pPaymentmethodcatalog) { - this.paymentmethodcatalog = pPaymentmethodcatalog; - } - - /** - * Obtiene el valor de paymentmethodcatalogcode - * - * @return valor de paymentmethodcatalogcode - */ - public String getPaymentmethodcatalogcode() { - return this.paymentmethodcatalogcode; - } - - /** - * Fija el valor de paymentmethodcatalogcode - * - * @param pPaymentmethodcatalogcode nuevo Valor de paymentmethodcatalogcode - */ - public void setPaymentmethodcatalogcode(String pPaymentmethodcatalogcode) { - this.paymentmethodcatalogcode = pPaymentmethodcatalogcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de amount - * - * @return valor de amount - */ - public BigDecimal getAmount() { - return this.amount; - } - - /** - * Fija el valor de amount - * - * @param pAmount nuevo Valor de amount - */ - public void setAmount(BigDecimal pAmount) { - this.amount = pAmount; - } - - /** - * Obtiene el valor de inputamount - * - * @return valor de inputamount - */ - public BigDecimal getInputamount() { - return this.inputamount; - } - - /** - * Fija el valor de inputamount - * - * @param pInputamount nuevo Valor de inputamount - */ - public void setInputamount(BigDecimal pInputamount) { - this.inputamount = pInputamount; - } - - /** - * Obtiene el valor de quotasnumber - * - * @return valor de quotasnumber - */ - public Integer getQuotasnumber() { - return this.quotasnumber; - } - - /** - * Fija el valor de quotasnumber - * - * @param pQuotasnumber nuevo Valor de quotasnumber - */ - public void setQuotasnumber(Integer pQuotasnumber) { - this.quotasnumber = pQuotasnumber; - } - - /** - * Obtiene el valor de quotavalue - * - * @return valor de quotavalue - */ - public BigDecimal getQuotavalue() { - return this.quotavalue; - } - - /** - * Fija el valor de quotavalue - * - * @param pQuotavalue nuevo Valor de quotavalue - */ - public void setQuotavalue(BigDecimal pQuotavalue) { - this.quotavalue = pQuotavalue; - } - - /** - * Obtiene el valor de tradepersoncode - * - * @return valor de tradepersoncode - */ - public Integer getTradepersoncode() { - return this.tradepersoncode; - } - - /** - * Fija el valor de tradepersoncode - * - * @param pTradepersoncode nuevo Valor de tradepersoncode - */ - public void setTradepersoncode(Integer pTradepersoncode) { - this.tradepersoncode = pTradepersoncode; - } - - /** - * Obtiene el valor de tradename - * - * @return valor de tradename - */ - public String getTradename() { - return this.tradename; - } - - /** - * Fija el valor de tradename - * - * @param pTradename nuevo Valor de tradename - */ - public void setTradename(String pTradename) { - this.tradename = pTradename; - } - - /** - * Obtiene el valor de tradephone - * - * @return valor de tradephone - */ - public String getTradephone() { - return this.tradephone; - } - - /** - * Fija el valor de tradephone - * - * @param pTradephone nuevo Valor de tradephone - */ - public void setTradephone(String pTradephone) { - this.tradephone = pTradephone; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleTradereferences)) { - return false; - } - TcustPeopleTradereferences that = (TcustPeopleTradereferences) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleTradereferences - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleTradereferences - */ - @Override - public Object createInstance() { - TcustPeopleTradereferences instance = new TcustPeopleTradereferences(); - instance.setPk(new TcustPeopleTradereferencesKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleTradereferences - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleTradereferences p = (TcustPeopleTradereferences) this.clone(); - p.setPk((TcustPeopleTradereferencesKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferencesKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferencesKey.java.svn-base deleted file mode 100644 index ce18acf..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleTradereferencesKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLETRADEREFERENCES*/ -@Embeddable -public class TcustPeopleTradereferencesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="TRADESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de la referencia comercial -*/ -private Integer tradesequence; - -/**Contructor por defecto*/ -public TcustPeopleTradereferencesKey(){} -/**Contructor de TcustPeopleTradereferencesKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pTradesequence Secuencia de la referencia comercial -*/ -public TcustPeopleTradereferencesKey(Integer pPersoncode,Timestamp pDateto,Integer pTradesequence){ - personcode=pPersoncode; - dateto=pDateto; - tradesequence=pTradesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de tradesequence -@return valor de tradesequence*/ -public Integer getTradesequence(){ - return tradesequence; -} -/**Fija el valor de tradesequence -@param pTradesequence nuevo Valor de tradesequence*/ -public void setTradesequence(Integer pTradesequence){ - tradesequence=pTradesequence; -} - -/**Implementacin de la comparacin de TcustPeopleTradereferencesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleTradereferencesKey))return false; - TcustPeopleTradereferencesKey that = (TcustPeopleTradereferencesKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getTradesequence() == null || that.getTradesequence() == null){ - return false; - } - if (! this.getTradesequence().equals(that.getTradesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleTradereferencesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getTradesequence() == null ? 0 : this.getTradesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicle.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicle.java.svn-base deleted file mode 100644 index 24ba3bf..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicle.java.svn-base +++ /dev/null @@ -1,694 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TCUSTPEOPLEVEHICLE - */ -@Entity(name = "TcustPeopleVehicle") -@Table(name = "TCUSTPEOPLEVEHICLE") -public class TcustPeopleVehicle extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TcustPeopleVehicle - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(VEHICLESEQUENCE),0)+1 from TCUSTPEOPLEVEHICLE where personcode=:code"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "code,pk.personcode"), - @Parameter(name = "field", value = "vehiclesequence")}) - @GeneratedValue(generator = "seq_id") - private TcustPeopleVehicleKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "VEHICLETYPECATALOG", nullable = true) - /** - * Codigo de catalogo 1 sedan, 2 coupe, 3 camioneta, 4 furgoneta, 5 suv - */ - private String vehicletypecatalog; - @Column(name = "VEHICLETYPECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo VEHICLETYPE tipo de vehiculo - */ - private String vehicletypecatalogcode; - @Column(name = "CARBRANDSCATALOG", nullable = true) - /** - * Codigo de catalogo 1, chevrolet, 2 Bmw, 3 Audi, 4 Ferrari - */ - private String carbrandscatalog; - @Column(name = "CARBRANDSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo CARBRANDS, marca de auto - */ - private String carbrandscatalogcode; - @Column(name = "MODEL", nullable = true) - /** - * Modelo del vehiculo, ejemplo marca Mazda, modelo 323 - */ - private String model; - @Column(name = "YEAR", nullable = true) - /** - * Anio de fabricacion del vehiculo - */ - private String year; - @Column(name = "MOTORID", nullable = true) - /** - * Numero de motor - */ - private String motorid; - @Column(name = "PLATE", nullable = true) - /** - * Numero de placa - */ - private String plate; - @Column(name = "COLOR", nullable = true) - /** - * Color del vehiculo - */ - private String color; - @Column(name = "ASSESSMENT", nullable = true) - /** - * Avaluo del vehiculo - */ - private BigDecimal assessment; - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - @Column(name = "INPUNTAMOUNT", nullable = true) - /** - * Valor de entrada - */ - private BigDecimal inpuntamount; - @Column(name = "PLEDGEDAMOUNT", nullable = true) - /** - * Valor financiado sobre el cual se constiruye la prenda - */ - private BigDecimal pledgedamount; - @Column(name = "PLEDGEDDATE", nullable = true) - /** - * Saldo del financiamiento - */ - private Date pledgeddate; - @Column(name = "PLEDGEDBALANCE", nullable = true) - /** - * Fecha en la que se ingreso el saldo de la deuda. - */ - private BigDecimal pledgedbalance; - @Column(name = "PLEDGEDPERSONCODE", nullable = true) - /** - * Codigo de persona poseedora de la prena del vehiculo - */ - private Integer pledgedpersoncode; - @Column(name = "PLEDGEDNAME", nullable = true) - /** - * Nombre la entidad beneficiaria de la prenda. - */ - private String pledgedname; - @Column(name = "REMARK", nullable = true) - /** - * Comentario, texto libre. - */ - private String remark; - @Column(name = "INGRESSUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String ingressusercode; - @Column(name = "MODIFYUSERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String modifyusercode; - - /** - * Contructor por defecto - */ - public TcustPeopleVehicle() { - } - - /** - * Contructor de TcustPeopleVehicle - * - * @param pPk Clave Primaria del entity - */ - public TcustPeopleVehicle(TcustPeopleVehicleKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TcustPeopleVehicle - */ - public static TcustPeopleVehicle find(EntityManager pEntityManager, TcustPeopleVehicleKey pKey) throws Exception { - TcustPeopleVehicle obj = pEntityManager.find(TcustPeopleVehicle.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TcustPeopleVehicle - * - * @return El objeto que referencia a la Clave primaria de - * TcustPeopleVehicle - */ - public TcustPeopleVehicleKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TcustPeopleVehicle - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TcustPeopleVehicle - */ - public void setPk(TcustPeopleVehicleKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de vehicletypecatalog - * - * @return valor de vehicletypecatalog - */ - public String getVehicletypecatalog() { - return this.vehicletypecatalog; - } - - /** - * Fija el valor de vehicletypecatalog - * - * @param pVehicletypecatalog nuevo Valor de vehicletypecatalog - */ - public void setVehicletypecatalog(String pVehicletypecatalog) { - this.vehicletypecatalog = pVehicletypecatalog; - } - - /** - * Obtiene el valor de vehicletypecatalogcode - * - * @return valor de vehicletypecatalogcode - */ - public String getVehicletypecatalogcode() { - return this.vehicletypecatalogcode; - } - - /** - * Fija el valor de vehicletypecatalogcode - * - * @param pVehicletypecatalogcode nuevo Valor de vehicletypecatalogcode - */ - public void setVehicletypecatalogcode(String pVehicletypecatalogcode) { - this.vehicletypecatalogcode = pVehicletypecatalogcode; - } - - /** - * Obtiene el valor de carbrandscatalog - * - * @return valor de carbrandscatalog - */ - public String getCarbrandscatalog() { - return this.carbrandscatalog; - } - - /** - * Fija el valor de carbrandscatalog - * - * @param pCarbrandscatalog nuevo Valor de carbrandscatalog - */ - public void setCarbrandscatalog(String pCarbrandscatalog) { - this.carbrandscatalog = pCarbrandscatalog; - } - - /** - * Obtiene el valor de carbrandscatalogcode - * - * @return valor de carbrandscatalogcode - */ - public String getCarbrandscatalogcode() { - return this.carbrandscatalogcode; - } - - /** - * Fija el valor de carbrandscatalogcode - * - * @param pCarbrandscatalogcode nuevo Valor de carbrandscatalogcode - */ - public void setCarbrandscatalogcode(String pCarbrandscatalogcode) { - this.carbrandscatalogcode = pCarbrandscatalogcode; - } - - /** - * Obtiene el valor de model - * - * @return valor de model - */ - public String getModel() { - return this.model; - } - - /** - * Fija el valor de model - * - * @param pModel nuevo Valor de model - */ - public void setModel(String pModel) { - this.model = pModel; - } - - /** - * Obtiene el valor de year - * - * @return valor de year - */ - public String getYear() { - return this.year; - } - - /** - * Fija el valor de year - * - * @param pYear nuevo Valor de year - */ - public void setYear(String pYear) { - this.year = pYear; - } - - /** - * Obtiene el valor de motorid - * - * @return valor de motorid - */ - public String getMotorid() { - return this.motorid; - } - - /** - * Fija el valor de motorid - * - * @param pMotorid nuevo Valor de motorid - */ - public void setMotorid(String pMotorid) { - this.motorid = pMotorid; - } - - /** - * Obtiene el valor de plate - * - * @return valor de plate - */ - public String getPlate() { - return this.plate; - } - - /** - * Fija el valor de plate - * - * @param pPlate nuevo Valor de plate - */ - public void setPlate(String pPlate) { - this.plate = pPlate; - } - - /** - * Obtiene el valor de color - * - * @return valor de color - */ - public String getColor() { - return this.color; - } - - /** - * Fija el valor de color - * - * @param pColor nuevo Valor de color - */ - public void setColor(String pColor) { - this.color = pColor; - } - - /** - * Obtiene el valor de assessment - * - * @return valor de assessment - */ - public BigDecimal getAssessment() { - return this.assessment; - } - - /** - * Fija el valor de assessment - * - * @param pAssessment nuevo Valor de assessment - */ - public void setAssessment(BigDecimal pAssessment) { - this.assessment = pAssessment; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de inpuntamount - * - * @return valor de inpuntamount - */ - public BigDecimal getInpuntamount() { - return this.inpuntamount; - } - - /** - * Fija el valor de inpuntamount - * - * @param pInpuntamount nuevo Valor de inpuntamount - */ - public void setInpuntamount(BigDecimal pInpuntamount) { - this.inpuntamount = pInpuntamount; - } - - /** - * Obtiene el valor de pledgedamount - * - * @return valor de pledgedamount - */ - public BigDecimal getPledgedamount() { - return this.pledgedamount; - } - - /** - * Fija el valor de pledgedamount - * - * @param pPledgedamount nuevo Valor de pledgedamount - */ - public void setPledgedamount(BigDecimal pPledgedamount) { - this.pledgedamount = pPledgedamount; - } - - /** - * Obtiene el valor de pledgeddate - * - * @return valor de pledgeddate - */ - public Date getPledgeddate() { - return this.pledgeddate; - } - - /** - * Fija el valor de pledgeddate - * - * @param pPledgeddate nuevo Valor de pledgeddate - */ - public void setPledgeddate(Date pPledgeddate) { - this.pledgeddate = pPledgeddate; - } - - /** - * Obtiene el valor de pledgedbalance - * - * @return valor de pledgedbalance - */ - public BigDecimal getPledgedbalance() { - return this.pledgedbalance; - } - - /** - * Fija el valor de pledgedbalance - * - * @param pPledgedbalance nuevo Valor de pledgedbalance - */ - public void setPledgedbalance(BigDecimal pPledgedbalance) { - this.pledgedbalance = pPledgedbalance; - } - - /** - * Obtiene el valor de pledgedpersoncode - * - * @return valor de pledgedpersoncode - */ - public Integer getPledgedpersoncode() { - return this.pledgedpersoncode; - } - - /** - * Fija el valor de pledgedpersoncode - * - * @param pPledgedpersoncode nuevo Valor de pledgedpersoncode - */ - public void setPledgedpersoncode(Integer pPledgedpersoncode) { - this.pledgedpersoncode = pPledgedpersoncode; - } - - /** - * Obtiene el valor de pledgedname - * - * @return valor de pledgedname - */ - public String getPledgedname() { - return this.pledgedname; - } - - /** - * Fija el valor de pledgedname - * - * @param pPledgedname nuevo Valor de pledgedname - */ - public void setPledgedname(String pPledgedname) { - this.pledgedname = pPledgedname; - } - - /** - * Obtiene el valor de remark - * - * @return valor de remark - */ - public String getRemark() { - return this.remark; - } - - /** - * Fija el valor de remark - * - * @param pRemark nuevo Valor de remark - */ - public void setRemark(String pRemark) { - this.remark = pRemark; - } - - /** - * Obtiene el valor de ingressusercode - * - * @return valor de ingressusercode - */ - public String getIngressusercode() { - return this.ingressusercode; - } - - /** - * Fija el valor de ingressusercode - * - * @param pIngressusercode nuevo Valor de ingressusercode - */ - public void setIngressusercode(String pIngressusercode) { - this.ingressusercode = pIngressusercode; - } - - /** - * Obtiene el valor de modifyusercode - * - * @return valor de modifyusercode - */ - public String getModifyusercode() { - return this.modifyusercode; - } - - /** - * Fija el valor de modifyusercode - * - * @param pModifyusercode nuevo Valor de modifyusercode - */ - public void setModifyusercode(String pModifyusercode) { - this.modifyusercode = pModifyusercode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TcustPeopleVehicle)) { - return false; - } - TcustPeopleVehicle that = (TcustPeopleVehicle) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementaci�n del metodo hashCode de la la entidad TcustPeopleVehicle - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementaci�n de la creaci�n de un bean en blanco TcustPeopleVehicle - */ - @Override - public Object createInstance() { - TcustPeopleVehicle instance = new TcustPeopleVehicle(); - instance.setPk(new TcustPeopleVehicleKey()); - return instance; - } - - /** - * Clona la entidad TcustPeopleVehicle - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TcustPeopleVehicle p = (TcustPeopleVehicle) this.clone(); - p.setPk((TcustPeopleVehicleKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } -} diff --git a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicleKey.java.svn-base b/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicleKey.java.svn-base deleted file mode 100644 index 9441c5a..0000000 --- a/base/persistence/pcustomer/src/main/java/com/fp/persistence/pcustomer/people/.svn/text-base/TcustPeopleVehicleKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pcustomer.people; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TCUSTPEOPLEVEHICLE*/ -@Embeddable -public class TcustPeopleVehicleKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -@Column(name="VEHICLESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de vehiculo asociado a una persona -*/ -private Integer vehiclesequence; - -/**Contructor por defecto*/ -public TcustPeopleVehicleKey(){} -/**Contructor de TcustPeopleVehicleKey -@param pPersoncode Codigo de persona -@param pDateto Fecha hasta la cual esta vigente el registro -@param pVehiclesequence Secuencia de vehiculo asociado a una persona -*/ -public TcustPeopleVehicleKey(Integer pPersoncode,Timestamp pDateto,Integer pVehiclesequence){ - personcode=pPersoncode; - dateto=pDateto; - vehiclesequence=pVehiclesequence; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de vehiclesequence -@return valor de vehiclesequence*/ -public Integer getVehiclesequence(){ - return vehiclesequence; -} -/**Fija el valor de vehiclesequence -@param pVehiclesequence nuevo Valor de vehiclesequence*/ -public void setVehiclesequence(Integer pVehiclesequence){ - vehiclesequence=pVehiclesequence; -} - -/**Implementacin de la comparacin de TcustPeopleVehicleKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TcustPeopleVehicleKey))return false; - TcustPeopleVehicleKey that = (TcustPeopleVehicleKey) o; - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getVehiclesequence() == null || that.getVehiclesequence() == null){ - return false; - } - if (! this.getVehiclesequence().equals(that.getVehiclesequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TcustPeopleVehicleKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getVehiclesequence() == null ? 0 : this.getVehiclesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pcustomer/src/main/resources/.svn/entries b/base/persistence/pcustomer/src/main/resources/.svn/entries deleted file mode 100644 index 15373de..0000000 --- a/base/persistence/pcustomer/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pcustomer/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pfirmas/.svn/dir-prop-base b/base/persistence/pfirmas/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/pfirmas/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/pfirmas/.svn/entries b/base/persistence/pfirmas/.svn/entries deleted file mode 100644 index 0178021..0000000 --- a/base/persistence/pfirmas/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas -svn://172.17.26.185/COMACO - - - -2014-10-17T05:34:35.839741Z -1670 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:26.042731Z -75eb8ea009d126c0655aac162d347e0f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -549 - diff --git a/base/persistence/pfirmas/.svn/text-base/pom.xml.svn-base b/base/persistence/pfirmas/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 66a9bb2..0000000 --- a/base/persistence/pfirmas/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,17 +0,0 @@ - - - 4.0.0 - - - com.fp.base - persistence - 2.1 - - com.fp.base.persistence - pfirmas - pfirmas - - - - diff --git a/base/persistence/pfirmas/src/.svn/entries b/base/persistence/pfirmas/src/.svn/entries deleted file mode 100644 index decaaed..0000000 --- a/base/persistence/pfirmas/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/pfirmas/src/main/.svn/entries b/base/persistence/pfirmas/src/main/.svn/entries deleted file mode 100644 index 31b5a11..0000000 --- a/base/persistence/pfirmas/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/pfirmas/src/main/java/.svn/entries b/base/persistence/pfirmas/src/main/java/.svn/entries deleted file mode 100644 index b14e768..0000000 --- a/base/persistence/pfirmas/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/.svn/entries b/base/persistence/pfirmas/src/main/java/com/.svn/entries deleted file mode 100644 index ec61bd0..0000000 --- a/base/persistence/pfirmas/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 155d060..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - -base -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/base/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/base/.svn/entries deleted file mode 100644 index 4470c6c..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/entries deleted file mode 100644 index 1f899ae..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp/base/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TfirmDatosFirmante.java -file - - - - -2022-07-28T03:40:25.926730Z -eae15fc1fdafba5db3e4098b32bbbbd4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3469 - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/text-base/TfirmDatosFirmante.java.svn-base b/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/text-base/TfirmDatosFirmante.java.svn-base deleted file mode 100644 index 834a37c..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/base/persistence/.svn/text-base/TfirmDatosFirmante.java.svn-base +++ /dev/null @@ -1,172 +0,0 @@ -package com.fp.base.persistence; - -import java.io.Serializable; -import java.util.Date; - -import com.fp.dto.AbstractDataTransport; - -/** - * Clase que contiene los datos del usuario que es dueno de la firma y en la cual - * - * @author dcruz - * - */ -public class TfirmDatosFirmante extends AbstractDataTransport implements - Serializable, Cloneable { - - private static final long serialVersionUID = 4232773513442100177L; - private String aliasCertificado; - private String identificacion; - private String nombre; - private String apellido1; - private String apellido2; - private String cargo; - private String institucion; - private String direccion; - private String telefono; - private String ciudad; - private String razonSocial; - private String ruc; - private Date fechaInicioVigencia; - private Date fechaVigencia; - - public TfirmDatosFirmante(){} - - public TfirmDatosFirmante(String identificacion, String nombre, - String apellido1, String apellido2, String cargo, - String institucion, String direccion, String telefono, - String ciudad, String razonSocial, String ruc) { - super(); - this.identificacion = identificacion; - this.nombre = nombre; - this.apellido1 = apellido1; - this.apellido2 = apellido2; - this.cargo = cargo; - this.institucion = institucion; - this.direccion = direccion; - this.telefono = telefono; - this.ciudad = ciudad; - this.razonSocial = razonSocial; - this.ruc = ruc; - } - - - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getNombre() { - return nombre; - } - - public void setNombre(String nombre) { - this.nombre = nombre; - } - - public String getApellido1() { - return apellido1; - } - - public void setApellido1(String apellido1) { - this.apellido1 = apellido1; - } - - public String getApellido2() { - return apellido2; - } - - public void setApellido2(String apellido2) { - this.apellido2 = apellido2; - } - - public String getCargo() { - return cargo; - } - - public void setCargo(String cargo) { - this.cargo = cargo; - } - - public String getInstitucion() { - return institucion; - } - - public void setInstitucion(String institucion) { - this.institucion = institucion; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public String getTelefono() { - return telefono; - } - - public void setTelefono(String telefono) { - this.telefono = telefono; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getRuc() { - return ruc; - } - - public void setRuc(String ruc) { - this.ruc = ruc; - } - - @Override - public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); - } - - public Date getFechaVigencia() { - return fechaVigencia; - } - - public void setFechaVigencia(Date fechaVigencia) { - this.fechaVigencia = fechaVigencia; - } - - public Date getFechaInicioVigencia() { - return fechaInicioVigencia; - } - - public void setFechaInicioVigencia(Date fechaInicioVigencia) { - this.fechaInicioVigencia = fechaInicioVigencia; - } - - public String getAliasCertificado() { - return aliasCertificado; - } - - public void setAliasCertificado(String aliasCertificado) { - this.aliasCertificado = aliasCertificado; - } - -} diff --git a/base/persistence/pfirmas/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 9b3c6ac..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pfirmas -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/.svn/entries deleted file mode 100644 index 5add308..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -param -dir - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/entries b/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/entries deleted file mode 100644 index d218137..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TfirmCertificadoKey.java -file - - - - -2022-07-28T03:40:25.896730Z -8f408816f51db382715e557cb2d4e203 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3641 - -TfirmCertificado.java -file - - - - -2022-07-28T03:40:25.896730Z -d6d675c3e06dcbbd059c811261099efb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5449 - diff --git a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificado.java.svn-base b/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificado.java.svn-base deleted file mode 100644 index 315c11a..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificado.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.persistence.pfirmas.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TFIRMCERTIFICADO*/ -@Entity(name="TfirmCertificado") -@Table(name="TFIRMCERTIFICADO") -public class TfirmCertificado extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TfirmCertificado -*/ -@EmbeddedId -private TfirmCertificadoKey pk; -@Column(name="FVIGENCIA", nullable=false) - -/** -* Fecha de vigencia del certificado. -*/ -private Date fvigencia; - -@Column(name="FINGRESO", nullable=false) - -/** -* Fecha de creacion del registro. -*/ -private Date fingreso; - -@Column(name="CODIGOUSUARIO", nullable=true) - -/** -* Codigo de usuario al que se asocia el certificado. -*/ -private String codigousuario; - -@Column(name="CARGO", nullable=true) - -/** -* Nombre del cargo asociado al usuario -*/ -private String cargo; - -/**Contructor por defecto*/ -public TfirmCertificado(){ -} -/**Contructor de TfirmCertificado -@param pPk Clave Primaria del entity -@param pFvigencia Fecha de vigencia del certificado. -@param pFingreso Fecha de creacion del registro. -*/ -public TfirmCertificado(TfirmCertificadoKey pPk,Date pFvigencia,Date pFingreso){ - this(); - pk=pPk; - fvigencia=pFvigencia; - fingreso=pFingreso; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TfirmCertificado -*/ -public static TfirmCertificado find(EntityManager pEntityManager,TfirmCertificadoKey pKey) throws Exception{ - TfirmCertificado obj = pEntityManager.find(TfirmCertificado.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TfirmCertificado -@return El objeto que referencia a la Clave primaria de TfirmCertificado -*/ -public TfirmCertificadoKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TfirmCertificado -@param pPk El objeto que referencia a la nueva Clave primaria de TfirmCertificado -*/ -public void setPk(TfirmCertificadoKey pPk){ - pk=pPk; -} -/**Obtiene el valor de fvigencia -@return valor de fvigencia*/ -public Date getFvigencia(){ - return fvigencia; -} -/**Fija el valor de fvigencia -@param pFvigencia nuevo Valor de fvigencia*/ -public void setFvigencia(Date pFvigencia){ - fvigencia=pFvigencia; -} - -/**Obtiene el valor de fingreso -@return valor de fingreso*/ -public Date getFingreso(){ - return fingreso; -} -/**Fija el valor de fingreso -@param pFingreso nuevo Valor de fingreso*/ -public void setFingreso(Date pFingreso){ - fingreso=pFingreso; -} - -/**Obtiene el valor de codigousuario -@return valor de codigousuario*/ -public String getCodigousuario(){ - return codigousuario; -} -/**Fija el valor de codigousuario -@param pCodigousuario nuevo Valor de codigousuario*/ -public void setCodigousuario(String pCodigousuario){ - codigousuario=pCodigousuario; -} - -/**Obtiene el valor de cargo -@return valor de cargo*/ -public String getCargo(){ - return cargo; -} -/**Fija el valor de cargo -@param pCargo nuevo Valor de cargo*/ -public void setCargo(String pCargo){ - cargo=pCargo; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TfirmCertificado))return false; - TfirmCertificado that = (TfirmCertificado) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TfirmCertificado -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TfirmCertificado -*/ -public Object createInstance(){ - TfirmCertificado instance=new TfirmCertificado(); - instance.setPk(new TfirmCertificadoKey()); - return instance; -} -/**Clona la entidad TfirmCertificado -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TfirmCertificado p=(TfirmCertificado)this.clone(); - p.setPk((TfirmCertificadoKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificadoKey.java.svn-base b/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificadoKey.java.svn-base deleted file mode 100644 index 8a42616..0000000 --- a/base/persistence/pfirmas/src/main/java/com/fp/persistence/pfirmas/param/.svn/text-base/TfirmCertificadoKey.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.persistence.pfirmas.param; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TFIRMCERTIFICADO*/ -@Embeddable -public class TfirmCertificadoKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="IDCERTIFICADO", nullable=false,updatable=false) - -/** -* Id del certificado que viene desde el banco central -*/ -private String idcertificado; - -@Column(name="FCADUCIDAD", nullable=false,updatable=false) - -/** -* Fecha de caducidad del certificado. -*/ -private Date fcaducidad; - -/**Contructor por defecto*/ -public TfirmCertificadoKey(){} -/**Contructor de TfirmCertificadoKey -@param pIdcertificado Id del certificado que viene desde el banco central -@param pFcaducidad Fecha de caducidad del certificado. -*/ -public TfirmCertificadoKey(String pIdcertificado,Date pFcaducidad){ - idcertificado=pIdcertificado; - fcaducidad=pFcaducidad; -} -/**Obtiene el valor de idcertificado -@return valor de idcertificado*/ -public String getIdcertificado(){ - return idcertificado; -} -/**Fija el valor de idcertificado -@param pIdcertificado nuevo Valor de idcertificado*/ -public void setIdcertificado(String pIdcertificado){ - idcertificado=pIdcertificado; -} - -/**Obtiene el valor de fcaducidad -@return valor de fcaducidad*/ -public Date getFcaducidad(){ - return fcaducidad; -} -/**Fija el valor de fcaducidad -@param pFcaducidad nuevo Valor de fcaducidad*/ -public void setFcaducidad(Date pFcaducidad){ - fcaducidad=pFcaducidad; -} - -/**Implementacion de la comparacion de TfirmCertificadoKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TfirmCertificadoKey))return false; - TfirmCertificadoKey that = (TfirmCertificadoKey) o; - if (this.getIdcertificado() == null || that.getIdcertificado() == null){ - return false; - } - if (! this.getIdcertificado().equals(that.getIdcertificado())){ - return false; - } - if (this.getFcaducidad() == null || that.getFcaducidad() == null){ - return false; - } - if (! this.getFcaducidad().equals(that.getFcaducidad())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TfirmCertificadoKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getIdcertificado() == null ? 0 : this.getIdcertificado().hashCode()); - result = result * 37 + (this.getFcaducidad() == null ? 0 : this.getFcaducidad().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pfirmas/src/test/.svn/entries b/base/persistence/pfirmas/src/test/.svn/entries deleted file mode 100644 index 14fea82..0000000 --- a/base/persistence/pfirmas/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/pfirmas/src/test/java/.svn/entries b/base/persistence/pfirmas/src/test/java/.svn/entries deleted file mode 100644 index af78567..0000000 --- a/base/persistence/pfirmas/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pfirmas/src/test/java/com/.svn/entries b/base/persistence/pfirmas/src/test/java/com/.svn/entries deleted file mode 100644 index 25b4162..0000000 --- a/base/persistence/pfirmas/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pfirmas/src/test/java/com/fp/.svn/entries b/base/persistence/pfirmas/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 652b8f4..0000000 --- a/base/persistence/pfirmas/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/persistence/pfirmas/src/test/java/com/fp/base/.svn/entries b/base/persistence/pfirmas/src/test/java/com/fp/base/.svn/entries deleted file mode 100644 index c2476c6..0000000 --- a/base/persistence/pfirmas/src/test/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pfirmas/src/test/java/com/fp/base/persistence/.svn/entries b/base/persistence/pfirmas/src/test/java/com/fp/base/persistence/.svn/entries deleted file mode 100644 index 006c07a..0000000 --- a/base/persistence/pfirmas/src/test/java/com/fp/base/persistence/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pfirmas/src/test/java/com/fp/base/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pgeneral/.settings/.svn/entries b/base/persistence/pgeneral/.settings/.svn/entries deleted file mode 100644 index 01520e8..0000000 --- a/base/persistence/pgeneral/.settings/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/.settings -svn://172.17.26.185/COMACO - - - -2016-01-05T15:14:18.810030Z -4365 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pgeneral/.svn/dir-prop-base b/base/persistence/pgeneral/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/pgeneral/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/pgeneral/.svn/entries b/base/persistence/pgeneral/.svn/entries deleted file mode 100644 index 52954d8..0000000 --- a/base/persistence/pgeneral/.svn/entries +++ /dev/null @@ -1,102 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:30.797751Z -a962d5458c39d047e09cf705e34fdc9b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -556 - -.settings -dir - -.pmd -file - - - - -2022-07-28T03:40:30.797751Z -a005c8627d2a64c8f23720db011d5372 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18996 - diff --git a/base/persistence/pgeneral/.svn/text-base/.pmd.svn-base b/base/persistence/pgeneral/.svn/text-base/.pmd.svn-base deleted file mode 100644 index 2f1733e..0000000 --- a/base/persistence/pgeneral/.svn/text-base/.pmd.svn-base +++ /dev/null @@ -1,601 +0,0 @@ - - - false - .ruleset - - - EmptyIfStmt - Basic Rules - - - EmptyWhileStmt - Basic Rules - - - EmptyTryBlock - Basic Rules - - - EmptyFinallyBlock - Basic Rules - - - EmptySwitchStatements - Basic Rules - - - JumbledIncrementer - Basic Rules - - - ForLoopShouldBeWhileLoop - Basic Rules - - - UnnecessaryConversionTemporary - Basic Rules - - - OverrideBothEqualsAndHashcode - Basic Rules - - - DoubleCheckedLocking - Basic Rules - - - ReturnFromFinallyBlock - Basic Rules - - - EmptySynchronizedBlock - Basic Rules - - - UnnecessaryReturn - Basic Rules - - - EmptyStaticInitializer - Basic Rules - - - UnconditionalIfStatement - Basic Rules - - - EmptyStatementNotInLoop - Basic Rules - - - BooleanInstantiation - Basic Rules - - - UnnecessaryFinalModifier - Basic Rules - - - CollapsibleIfStatements - Basic Rules - - - UselessOverridingMethod - Basic Rules - - - ClassCastExceptionWithToArray - Basic Rules - - - AvoidDecimalLiteralsInBigDecimalConstructor - Basic Rules - - - UselessOperationOnImmutable - Basic Rules - - - MisplacedNullCheck - Basic Rules - - - UnusedNullCheckInEquals - Basic Rules - - - AvoidThreadGroup - Basic Rules - - - BrokenNullCheck - Basic Rules - - - AvoidUsingOctalValues - Basic Rules - - - AvoidUsingHardCodedIP - Basic Rules - - - CheckResultSet - Basic Rules - - - AvoidMultipleUnaryOperators - Basic Rules - - - EmptyInitializer - Basic Rules - - - NPathComplexity - Code Size Rules - - - ExcessiveMethodLength - Code Size Rules - - - NcssMethodCount - Code Size Rules - - - NcssTypeCount - Code Size Rules - - - NcssConstructorCount - Code Size Rules - - - VariableNamingConventions - Naming Rules - - - MethodNamingConventions - Naming Rules - - - ClassNamingConventions - Naming Rules - - - AvoidDollarSigns - Naming Rules - - - MethodWithSameNameAsEnclosingClass - Naming Rules - - - SuspiciousHashcodeMethodName - Naming Rules - - - SuspiciousConstantFieldName - Naming Rules - - - SuspiciousEqualsMethodName - Naming Rules - - - AvoidFieldNameMatchingTypeName - Naming Rules - - - AvoidFieldNameMatchingMethodName - Naming Rules - - - NoPackage - Naming Rules - - - PackageCase - Naming Rules - - - MisleadingVariableName - Naming Rules - - - BooleanGetMethodName - Naming Rules - - - MoreThanOneLogger - Java Logging Rules - - - LoggerIsNotStaticFinal - Java Logging Rules - - - SystemPrintln - Java Logging Rules - - - AvoidPrintStackTrace - Java Logging Rules - - - IfStmtsMustUseBraces - Braces Rules - - - WhileLoopsMustUseBraces - Braces Rules - - - IfElseStmtsMustUseBraces - Braces Rules - - - ForLoopsMustUseBraces - Braces Rules - - - UseSingleton - Design Rules - - - SimplifyBooleanReturns - Design Rules - - - SimplifyBooleanExpressions - Design Rules - - - SwitchStmtsShouldHaveDefault - Design Rules - - - SwitchDensity - Design Rules - - - AccessorClassGeneration - Design Rules - - - FinalFieldCouldBeStatic - Design Rules - - - CloseResource - Design Rules - - - NonStaticInitializer - Design Rules - - - DefaultLabelNotLastInSwitchStmt - Design Rules - - - NonCaseLabelInSwitchStatement - Design Rules - - - OptimizableToArrayCall - Design Rules - - - BadComparison - Design Rules - - - EqualsNull - Design Rules - - - InstantiationToGetClass - Design Rules - - - IdempotentOperations - Design Rules - - - AvoidProtectedFieldInFinalClass - Design Rules - - - MissingStaticMethodInNonInstantiatableClass - Design Rules - - - MissingBreakInSwitch - Design Rules - - - UseNotifyAllInsteadOfNotify - Design Rules - - - AvoidInstanceofChecksInCatchClause - Design Rules - - - AbstractClassWithoutAbstractMethod - Design Rules - - - SimplifyConditional - Design Rules - - - CompareObjectsWithEquals - Design Rules - - - PositionLiteralsFirstInComparisons - Design Rules - - - UnnecessaryLocalBeforeReturn - Design Rules - - - NonThreadSafeSingleton - Design Rules - - - UncommentedEmptyMethod - Design Rules - - - AvoidConstantsInterface - Design Rules - - - UnsynchronizedStaticDateFormatter - Design Rules - - - PreserveStackTrace - Design Rules - - - UseCollectionIsEmpty - Design Rules - - - ClassWithOnlyPrivateConstructorsShouldBeFinal - Design Rules - - - EmptyMethodInAbstractClassShouldBeAbstract - Design Rules - - - SingularField - Design Rules - - - ReturnEmptyArrayRatherThanNull - Design Rules - - - AbstractClassWithoutAnyMethod - Design Rules - - - TooFewBranchesForASwitchStatement - Design Rules - - - ReplaceVectorWithList - Migration Rules - - - ReplaceHashtableWithMap - Migration Rules - - - ReplaceEnumerationWithIterator - Migration Rules - - - AvoidEnumAsIdentifier - Migration Rules - - - AvoidAssertAsIdentifier - Migration Rules - - - IntegerInstantiation - Migration Rules - - - ByteInstantiation - Migration Rules - - - ShortInstantiation - Migration Rules - - - LongInstantiation - Migration Rules - - - JUnit4TestShouldUseBeforeAnnotation - Migration Rules - - - JUnit4TestShouldUseAfterAnnotation - Migration Rules - - - JUnit4TestShouldUseTestAnnotation - Migration Rules - - - JUnit4SuitesShouldUseSuiteAnnotation - Migration Rules - - - JUnitUseExpected - Migration Rules - - - AvoidDuplicateLiterals - String and StringBuffer Rules - - - StringToString - String and StringBuffer Rules - - - InefficientStringBuffering - String and StringBuffer Rules - - - UnnecessaryCaseChange - String and StringBuffer Rules - - - UseStringBufferLength - String and StringBuffer Rules - - - AppendCharacterWithChar - String and StringBuffer Rules - - - ConsecutiveLiteralAppends - String and StringBuffer Rules - - - UseIndexOfChar - String and StringBuffer Rules - - - InefficientEmptyStringCheck - String and StringBuffer Rules - - - InsufficientStringBufferDeclaration - String and StringBuffer Rules - - - UselessStringValueOf - String and StringBuffer Rules - - - StringBufferInstantiationWithChar - String and StringBuffer Rules - - - UseEqualsToCompareStrings - String and StringBuffer Rules - - - AvoidStringBufferField - String and StringBuffer Rules - - - LooseCoupling - Type Resolution Rules - - - CloneMethodMustImplementCloneable - Type Resolution Rules - - - UnusedImports - Type Resolution Rules - - - UnnecessaryConstructor - Controversial Rules - - - UnusedModifier - Controversial Rules - - - AssignmentInOperand - Controversial Rules - - - AtLeastOneConstructor - Controversial Rules - - - DontImportSun - Controversial Rules - - - SuspiciousOctalEscape - Controversial Rules - - - DefaultPackage - Controversial Rules - - - BooleanInversion - Controversial Rules - - - AvoidFinalLocalVariable - Controversial Rules - - - AvoidUsingShortType - Controversial Rules - - - AvoidUsingVolatile - Controversial Rules - - - AvoidUsingNativeCode - Controversial Rules - - - AvoidAccessibilityAlteration - Controversial Rules - - - DoNotCallGarbageCollectionExplicitly - Controversial Rules - - - UnusedPrivateField - Unused Code Rules - - - UnusedLocalVariable - Unused Code Rules - - - UnusedPrivateMethod - Unused Code Rules - - - UnusedFormalParameter - Unused Code Rules - - - AvoidDeeplyNestedIfStmts - Design Rules - - - CyclomaticComplexity - Code Size Rules - - - false - true - diff --git a/base/persistence/pgeneral/.svn/text-base/pom.xml.svn-base b/base/persistence/pgeneral/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 867c49b..0000000 --- a/base/persistence/pgeneral/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,16 +0,0 @@ - - - - persistence - com.fp.base - 2.1 - - 4.0.0 - com.fp.base.persistence - pgeneral - pgeneral - - diff --git a/base/persistence/pgeneral/src/.svn/entries b/base/persistence/pgeneral/src/.svn/entries deleted file mode 100644 index d9f991b..0000000 --- a/base/persistence/pgeneral/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/base/persistence/pgeneral/src/main/.svn/entries b/base/persistence/pgeneral/src/main/.svn/entries deleted file mode 100644 index 3e0856c..0000000 --- a/base/persistence/pgeneral/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/base/persistence/pgeneral/src/main/java/.svn/entries b/base/persistence/pgeneral/src/main/java/.svn/entries deleted file mode 100644 index 6fb1e99..0000000 --- a/base/persistence/pgeneral/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pgeneral/src/main/java/com/.svn/entries b/base/persistence/pgeneral/src/main/java/com/.svn/entries deleted file mode 100644 index 1d8a30e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/.svn/entries deleted file mode 100644 index b03199b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 65425d1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pgeneral -dir - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/.svn/entries deleted file mode 100644 index 8ebf899..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/.svn/entries +++ /dev/null @@ -1,115 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -product -dir - -log -dir - -batch -dir - -image -dir - -receive -dir - -dict -dir - -message -dir - -msg -dir - -prov -dir - -trans -dir - -seq -dir - -charge -dir - -installment -dir - -vault -dir - -schedule -dir - -transf -dir - -excel -dir - -auth -dir - -proc -dir - -menu -dir - -acco -dir - -report -dir - -score -dir - -page -dir - -date -dir - -gene -dir - -result -dir - -safe -dir - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/entries deleted file mode 100644 index 9e3e15f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/entries +++ /dev/null @@ -1,1592 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneAccountLocalHold.java -file - - - - -2022-07-28T03:40:29.982748Z -4c23e8740b5f00604abc07042012eac1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13952 - -TgeneAccoNumStructureKey.java -file - - - - -2022-07-28T03:40:29.982748Z -42e61a45101a2d300a86a8d766bad363 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4935 - -TgeneSequentialModule.java -file - - - - -2022-07-28T03:40:29.982748Z -449416c479ab812072f8930afcf85a54 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4744 - -TgeneTransAccountStatusKey.java -file - - - - -2022-07-28T03:40:29.983748Z -8cb4a504d82d8484bbd726c1a9c74047 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5619 - -TgeneSequStruct.java -file - - - - -2022-07-28T03:40:29.983748Z -06922ab882d2785e03e6638622c1627e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4205 - -TgeneAccountDebitOpening.java -file - - - - -2022-07-28T03:40:29.983748Z -f8a014bb82a7b78a3088a96842b07ac4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8842 - -TgeneAccountForDebitKey.java -file - - - - -2022-07-28T03:40:29.983748Z -a4de3824cecfee47972abc4b74d55f80 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4265 - -TgeneAccountPayable.java -file - - - - -2022-07-28T03:40:29.984748Z -45f49927f1d456a553a04ff8707532ce -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6466 - -TgeneAccount.java -file - - - - -2022-07-28T03:40:29.984748Z -c1b8caeb1e625de381d0d204177785ea -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -33859 - -TgeneWarrantyAccountKey.java -file - - - - -2022-07-28T03:40:29.984748Z -3d342afb753246f4d8920ea5ff7b51fb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5375 - -TgeneAccountForCredit.java -file - - - - -2022-07-28T03:40:29.984748Z -d7c45829bb1f24bc51cad5249a22ae17 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10224 - -TgeneAccountLiquidation.java -file - - - - -2022-07-28T03:40:29.985748Z -eac6eb47278cce164a7184de79dc3e7f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9728 - -TgeneSolicitudeCredit.java -file - - - - -2022-07-28T03:40:29.985748Z -eb2a1ba6dacb827918110e223469d174 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8304 - -TgeneTransAccountOperStatKey.java -file - - - - -2022-07-28T03:40:29.985748Z -9908d37698d1c9f7a7d84e3c65d9992c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5826 - -TgeneAccountNumber.java -file - - - - -2022-07-28T03:40:29.986748Z -abad1043704e269572f288102783c956 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6614 - -TgeneSequStructDetail.java -file - - - - -2022-07-28T03:40:29.985748Z -97187e91e2f2e5ba1da1b8175c977bc6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5465 - -TgeneAccoNumStructure.java -file - - - - -2022-07-28T03:40:29.986748Z -c55f88e55beab601f52f5868c384a040 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7663 - -TgeneAccountCreditOpening.java -file - - - - -2022-07-28T03:40:29.986748Z -f2189fcf9bca5e4d83b052f08f09cd48 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9557 - -TgeneAccountLiquidationKey.java -file - - - - -2022-07-28T03:40:29.987748Z -d962d93ebf54f552fa38acd824b98574 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9354 - -TgeneSolicitudeCreditKey.java -file - - - - -2022-07-28T03:40:29.987748Z -8b259e1986e4d2f77d07cf866616b174 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4686 - -TgeneTransAccountStatus.java -file - - - - -2022-07-28T03:40:29.986748Z -fdde34a6ab6114dc396e480e7694a68d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7460 - -TgeneAccountStatusKey.java -file - - - - -2022-07-28T03:40:29.987748Z -3c7bfc032e02078ca31326ab75bf7915 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3471 - -TgeneAccountNumberKey.java -file - - - - -2022-07-28T03:40:29.988748Z -891b6023ef3972b91e75a1c890a68a96 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3570 - -TgeneSequStructDetailKey.java -file - - - - -2022-07-28T03:40:29.987748Z -d533d474a6ff43eacd3d4522688362f9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5094 - -TgeneAccountRemittanceHold.java -file - - - - -2022-07-28T03:40:29.988748Z -25673658f5f5006114170d9c0ef845a8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10080 - -TgeneSolicitudeForCreditKey.java -file - - - - -2022-07-28T03:40:29.988748Z -2a5fbf3213dd6695f5474249e54f99f2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4716 - -TgeneAccountCreditOpeningKey.java -file - - - - -2022-07-28T03:40:29.988748Z -7936662fdb8b7326831cfb8883176337 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4338 - -TgeneSolicitudeForDebit.java -file - - - - -2022-07-28T03:40:29.989748Z -06d4b0417efabc0f248c006dc16f4f18 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7004 - -TgeneWarrantyAccount.java -file - - - - -2022-07-28T03:40:29.989748Z -4bdb9ee1d52820dcdee3702d5f3bcd2b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12607 - -TgeneAccountSequence.java -file - - - - -2022-07-28T03:40:29.989748Z -9f3403d0aeff41e89ae641a97949730a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11271 - -TgeneTransAccountOperStat.java -file - - - - -2022-07-28T03:40:29.990748Z -a3bd8839361b2bdf2efd784e28c0b5c6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7435 - -TgeneBaseAccount.java -file - - - - -2022-07-28T03:40:29.990748Z -59b9aa93f3c2236f4807d5f8649fc7fe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4071 - -TgeneAccountLocalHoldKey.java -file - - - - -2022-07-28T03:40:29.990748Z -94b4054a490c5a21c068ee535b655075 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5193 - -TgeneAccountCredit.java -file - - - - -2022-07-28T03:40:29.990748Z -52927be54faff729223348b82e2b6867 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9115 - -TgeneAccountRemittanceHoldKey.java -file - - - - -2022-07-28T03:40:29.991748Z -2d98961b2c09de0b6b52a81448a6bf42 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5243 - -TgeneSolicitudeForDebitKey.java -file - - - - -2022-07-28T03:40:29.991748Z -dab2a0ea42a4c1d8237c235b0f5898e3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4679 - -TgeneAccountDebitOpeningKey.java -file - - - - -2022-07-28T03:40:29.991748Z -0e99f17359afc4d3cd1765ee6020164d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4301 - -TgeneAccountSequenceKey.java -file - - - - -2022-07-28T03:40:29.991748Z -54713bfe7fe465a33122062c778b14e1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3466 - -TgeneBaseAccountKey.java -file - - - - -2022-07-28T03:40:29.992748Z -0075f4c8f504120e592198a59e495c3b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3375 - -TgeneAccountStatus.java -file - - - - -2022-07-28T03:40:29.992748Z -2386441e6ef5d04ac928eee753b134c9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5332 - -TgeneAccountCreditKey.java -file - - - - -2022-07-28T03:40:29.992748Z -e67c2f62f9c6e69906c797c56825b73c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5124 - -TgeneAccountPayableKey.java -file - - - - -2022-07-28T03:40:29.992748Z -b89bd74799b0c5d2512b404a2adad7cd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3433 - -TgeneAccountKey.java -file - - - - -2022-07-28T03:40:29.992748Z -7dfb81d1deff89695cc27e3da3f08979 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4235 - -TgeneSolicitudeForCredit.java -file - - - - -2022-07-28T03:40:29.993748Z -40e838b0e329e78875b220e21d39d43c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9611 - -TgeneAccountForCreditKey.java -file - - - - -2022-07-28T03:40:29.993748Z -65716f7ebd7a24fe031e558e101cf4a3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4298 - -TgeneAccountForDebit.java -file - - - - -2022-07-28T03:40:29.993748Z -f927b4d0b4954e93655e99dea6b8589c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7166 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructure.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructure.java.svn-base deleted file mode 100644 index db88a23..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructure.java.svn-base +++ /dev/null @@ -1,260 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCONUMSTRUCTURE */ -@Entity(name = "TgeneAccoNumStructure") -@Table(name = "TGENEACCONUMSTRUCTURE") -public class TgeneAccoNumStructure extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccoNumStructure - */ - @EmbeddedId - private TgeneAccoNumStructureKey pk; - - @Column(name = "SIZEFIELD", nullable = false) - /** - * Campo que almacena la longitud del campo que es parte del numero de cuenta - */ - private Integer sizefield; - - @Column(name = "ORDERFIELD", nullable = false) - /** - * Campo que almacena el orden del campo que sera parte del numero de cuenta - */ - private Integer orderfield; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /** Contructor por defecto */ - public TgeneAccoNumStructure() { - } - - /** - * Contructor de TgeneAccoNumStructure - * - * @param pPk Clave Primaria del entity - * @param pSizefield Campo que almacena la longitud del campo que es parte del numero de cuenta - * @param pOrderfield Campo que almacena el orden del campo que sera parte del numero de cuenta - */ - public TgeneAccoNumStructure(TgeneAccoNumStructureKey pPk, Integer pSizefield, Integer pOrderfield) { - this(); - this.pk = pPk; - this.sizefield = pSizefield; - this.orderfield = pOrderfield; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccoNumStructure - */ - public static TgeneAccoNumStructure find(EntityManager pEntityManager, TgeneAccoNumStructureKey pKey) throws Exception { - TgeneAccoNumStructure obj = pEntityManager.find(TgeneAccoNumStructure.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccoNumStructure - * - * @return El objeto que referencia a la Clave primaria de TgeneAccoNumStructure - */ - public TgeneAccoNumStructureKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccoNumStructure - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccoNumStructure - */ - public void setPk(TgeneAccoNumStructureKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de sizefield - * - * @return valor de sizefield - */ - public Integer getSizefield() { - return this.sizefield; - } - - /** - * Fija el valor de sizefield - * - * @param pSizefield nuevo Valor de sizefield - */ - public void setSizefield(Integer pSizefield) { - this.sizefield = pSizefield; - } - - /** - * Obtiene el valor de orderfield - * - * @return valor de orderfield - */ - public Integer getOrderfield() { - return this.orderfield; - } - - /** - * Fija el valor de orderfield - * - * @param pOrderfield nuevo Valor de orderfield - */ - public void setOrderfield(Integer pOrderfield) { - this.orderfield = pOrderfield; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccoNumStructure)) { - return false; - } - TgeneAccoNumStructure that = (TgeneAccoNumStructure) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccoNumStructure - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneAccoNumStructure */ - @Override - public Object createInstance() { - TgeneAccoNumStructure instance = new TgeneAccoNumStructure(); - instance.setPk(new TgeneAccoNumStructureKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccoNumStructure - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccoNumStructure p = (TgeneAccoNumStructure) this.clone(); - p.setPk((TgeneAccoNumStructureKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** - * Sentencia que obtiene un registro de TgeneAccoNumStructure con la definicion de estructura para crear un numero - * de cuenta. - */ - private static final String JPQL = "from TgeneAccoNumStructure t " + " where t.pk.modulecode = :modulecode order by t.orderfield"; - - /** - * Metodo que entrega la defincion de una cuenta por modulo. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pModule Codigo de modulo - * @return TgeneAccountSequence - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pModule) throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccoNumStructure.JPQL); - qry.setParameter("modulecode", pModule); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructureKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructureKey.java.svn-base deleted file mode 100644 index 87384c8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccoNumStructureKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCONUMSTRUCTURE*/ -@Embeddable -public class TgeneAccoNumStructureKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STRUCTUREACCOUNTCATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo - EMPRESA, OFICINA, PRODUCTO, ETC. -*/ -private String structureaccountcatalog; - -@Column(name="STRUCTUREACCOUNTCATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo - FIELDSSTRUCTURE -*/ -private String structureaccountcatalogcode; - -/**Contructor por defecto*/ -public TgeneAccoNumStructureKey(){} -/**Contructor de TgeneAccoNumStructureKey -@param pModulecode Codigo de modulo -@param pStructureaccountcatalog Codigo de catalogo - EMPRESA, OFICINA, PRODUCTO, ETC. -@param pStructureaccountcatalogcode Codigo de tabla de catalogo - FIELDSSTRUCTURE -*/ -public TgeneAccoNumStructureKey(String pModulecode,String pStructureaccountcatalog,String pStructureaccountcatalogcode){ - modulecode=pModulecode; - structureaccountcatalog=pStructureaccountcatalog; - structureaccountcatalogcode=pStructureaccountcatalogcode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de structureaccountcatalog -@return valor de structureaccountcatalog*/ -public String getStructureaccountcatalog(){ - return structureaccountcatalog; -} -/**Fija el valor de structureaccountcatalog -@param pStructureaccountcatalog nuevo Valor de structureaccountcatalog*/ -public void setStructureaccountcatalog(String pStructureaccountcatalog){ - structureaccountcatalog=pStructureaccountcatalog; -} - -/**Obtiene el valor de structureaccountcatalogcode -@return valor de structureaccountcatalogcode*/ -public String getStructureaccountcatalogcode(){ - return structureaccountcatalogcode; -} -/**Fija el valor de structureaccountcatalogcode -@param pStructureaccountcatalogcode nuevo Valor de structureaccountcatalogcode*/ -public void setStructureaccountcatalogcode(String pStructureaccountcatalogcode){ - structureaccountcatalogcode=pStructureaccountcatalogcode; -} - -/**Implementacin de la comparacin de TgeneAccoNumStructureKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccoNumStructureKey))return false; - TgeneAccoNumStructureKey that = (TgeneAccoNumStructureKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStructureaccountcatalog() == null || that.getStructureaccountcatalog() == null){ - return false; - } - if (! this.getStructureaccountcatalog().equals(that.getStructureaccountcatalog())){ - return false; - } - if (this.getStructureaccountcatalogcode() == null || that.getStructureaccountcatalogcode() == null){ - return false; - } - if (! this.getStructureaccountcatalogcode().equals(that.getStructureaccountcatalogcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccoNumStructureKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStructureaccountcatalog() == null ? 0 : this.getStructureaccountcatalog().hashCode()); - result = result * 37 + (this.getStructureaccountcatalogcode() == null ? 0 : this.getStructureaccountcatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccount.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccount.java.svn-base deleted file mode 100644 index aef9455..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccount.java.svn-base +++ /dev/null @@ -1,1114 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.common.helper.Constant; -import com.fp.core.exception.CoreException; -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNT - */ -@Entity(name = "TgeneAccount") -@Table(name = "TGENEACCOUNT") -public class TgeneAccount extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccount - */ - @EmbeddedId - private TgeneAccountKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro con datos de la cuenta. - */ - private Timestamp datefrom; - - @Column(name = "ACCOUNTNAME", nullable = true) - /** - * Nombre de la cuenta - */ - private String accountname; - - @Column(name = "PERSONCODE", nullable = true) - /** - * Codigo de persona principal de la cuenta - */ - private Integer personcode; - - @Column(name = "MODULECODE", nullable = true) - /** - * Codigo de modulo al que pertenece la cuenta - */ - private String modulecode; - - @Column(name = "PRODUCTCODE", nullable = true) - /** - * Codigo de producto - */ - private String productcode; - - @Column(name = "SUBPRODUCTCODE", nullable = true) - /** - * Codigo de subproducto - */ - private String subproductcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina a la que pertenece la cuenta - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal a la que pertenece la cuenta - */ - private Integer branchcode; - - @Column(name = "OPENOFFICECODE", nullable = true) - /** - * Codigo de oficina de apertura de la cuenta - */ - private Integer openofficecode; - - @Column(name = "OPENBRANCHCODE", nullable = true) - /** - * Codigo de sucursal de apertura de la cuenta - */ - private Integer openbranchcode; - - @Column(name = "ACCOUNTSTATUSCODE", nullable = true) - /** - * Estatus de cuenta - */ - private String accountstatuscode; - - @Column(name = "OFFICER", nullable = true) - /** - * Codigo de usuario oficial de cuenta - */ - private String officer; - - @Column(name = "OPENINGUSERCODE", nullable = true) - /** - * Codigo de usuario de apertura de la cuenta - */ - private String openingusercode; - - @Column(name = "PERSONSCORECATALOG", nullable = true) - /** - * Codigo de catalogo que contiene la calificacion del cliente A, B, C, D, E - */ - private String personscorecatalog; - - @Column(name = "PERSONCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 011 Codigo de tabla de calificaciones de cleinte - */ - private String personcatalogcode; - - @Column(name = "CHARGECATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String chargecatalog; - - @Column(name = "CHARGECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String chargecatalogcode; - - @Column(name = "RATECATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String ratecatalog; - - @Column(name = "RATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String ratecatalogcode; - - @Column(name = "CREDITTYPECODE", nullable = true) - /** - * Codigo de tipo de credito - */ - private String credittypecode; - - @Column(name = "OPERATIVCONDITION", nullable = true) - /** - * Codigo de condicion operativa. - */ - private String operativcondition; - - @Column(name = "OPERATIONSTATUS", nullable = true) - /** - * Codigo de estatus de la operacion, ORI (Original), REF (refinanciada), RES (restructurada) - */ - private String operationstatus; - - @Column(name = "MOTIVESTATUSCATALOG", nullable = true) - /** - * Codigo de catalogo 1 Voluntario, Orden de Gerencia, 3 Orden de la SIB - */ - private String motivestatuscatalog; - - @Column(name = "MOTIVESTATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo MOTIVESTATUS - */ - private String motivestatuscatalogcode; - - @Column(name = "SECURITYLEVEL", nullable = true) - /** - * Nivel de seguridad de la cuenta - */ - private Integer securitylevel; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "JOURNALID", nullable = true) - /** - * Numero de mensaje con el cual se cambio algun campo del registro - */ - private String journalid; - - @Column(name = "OLDJOURNALID", nullable = true) - /** - * NUmero de mensaje anterior con el que se cambio algun campo de la cuenta - */ - private String oldjournalid; - - /** Contructor por defecto */ - public TgeneAccount() { - } - - /** - * Contructor de TgeneAccount - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro con datos de la cuenta. - */ - public TgeneAccount(TgeneAccountKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccount - */ - public static TgeneAccount find(EntityManager pEntityManager, TgeneAccountKey pKey) throws Exception { - TgeneAccount obj = pEntityManager.find(TgeneAccount.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccount - * - * @return El objeto que referencia a la Clave primaria de TgeneAccount - */ - public TgeneAccountKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccount - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccount - */ - public void setPk(TgeneAccountKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de accountname - * - * @return valor de accountname - */ - public String getAccountname() { - return this.accountname; - } - - /** - * Fija el valor de accountname - * - * @param pAccountname nuevo Valor de accountname - */ - public void setAccountname(String pAccountname) { - this.accountname = pAccountname; - } - - /** - * Obtiene el valor de personcode - * - * @return valor de personcode - */ - public Integer getPersoncode() { - return this.personcode; - } - - /** - * Fija el valor de personcode - * - * @param pPersoncode nuevo Valor de personcode - */ - public void setPersoncode(Integer pPersoncode) { - this.personcode = pPersoncode; - } - - /** - * Obtiene el valor de modulecode - * - * @return valor de modulecode - */ - public String getModulecode() { - return this.modulecode; - } - - /** - * Fija el valor de modulecode - * - * @param pModulecode nuevo Valor de modulecode - */ - public void setModulecode(String pModulecode) { - this.modulecode = pModulecode; - } - - /** - * Obtiene el valor de productcode - * - * @return valor de productcode - */ - public String getProductcode() { - return this.productcode; - } - - /** - * Fija el valor de productcode - * - * @param pProductcode nuevo Valor de productcode - */ - public void setProductcode(String pProductcode) { - this.productcode = pProductcode; - } - - /** - * Obtiene el valor de subproductcode - * - * @return valor de subproductcode - */ - public String getSubproductcode() { - return this.subproductcode; - } - - /** - * Fija el valor de subproductcode - * - * @param pSubproductcode nuevo Valor de subproductcode - */ - public void setSubproductcode(String pSubproductcode) { - this.subproductcode = pSubproductcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return this.officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - this.officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return this.branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - this.branchcode = pBranchcode; - } - - /** - * Obtiene el valor de openofficecode - * - * @return valor de openofficecode - */ - public Integer getOpenofficecode() { - return this.openofficecode; - } - - /** - * Fija el valor de openofficecode - * - * @param pOpenofficecode nuevo Valor de openofficecode - */ - public void setOpenofficecode(Integer pOpenofficecode) { - this.openofficecode = pOpenofficecode; - } - - /** - * Obtiene el valor de openbranchcode - * - * @return valor de openbranchcode - */ - public Integer getOpenbranchcode() { - return this.openbranchcode; - } - - /** - * Fija el valor de openbranchcode - * - * @param pOpenbranchcode nuevo Valor de openbranchcode - */ - public void setOpenbranchcode(Integer pOpenbranchcode) { - this.openbranchcode = pOpenbranchcode; - } - - /** - * Obtiene el valor de accountstatuscode - * - * @return valor de accountstatuscode - */ - public String getAccountstatuscode() { - return this.accountstatuscode; - } - - /** - * Fija el valor de accountstatuscode - * - * @param pAccountstatuscode nuevo Valor de accountstatuscode - */ - public void setAccountstatuscode(String pAccountstatuscode) { - this.accountstatuscode = pAccountstatuscode; - } - - /** - * Obtiene el valor de officer - * - * @return valor de officer - */ - public String getOfficer() { - return this.officer; - } - - /** - * Fija el valor de officer - * - * @param pOfficer nuevo Valor de officer - */ - public void setOfficer(String pOfficer) { - this.officer = pOfficer; - } - - /** - * Obtiene el valor de openingusercode - * - * @return valor de openingusercode - */ - public String getOpeningusercode() { - return this.openingusercode; - } - - /** - * Fija el valor de openingusercode - * - * @param pOpeningusercode nuevo Valor de openingusercode - */ - public void setOpeningusercode(String pOpeningusercode) { - this.openingusercode = pOpeningusercode; - } - - /** - * Obtiene el valor de personscorecatalog - * - * @return valor de personscorecatalog - */ - public String getPersonscorecatalog() { - return this.personscorecatalog; - } - - /** - * Fija el valor de personscorecatalog - * - * @param pPersonscorecatalog nuevo Valor de personscorecatalog - */ - public void setPersonscorecatalog(String pPersonscorecatalog) { - this.personscorecatalog = pPersonscorecatalog; - } - - /** - * Obtiene el valor de personcatalogcode - * - * @return valor de personcatalogcode - */ - public String getPersoncatalogcode() { - return this.personcatalogcode; - } - - /** - * Fija el valor de personcatalogcode - * - * @param pPersoncatalogcode nuevo Valor de personcatalogcode - */ - public void setPersoncatalogcode(String pPersoncatalogcode) { - this.personcatalogcode = pPersoncatalogcode; - } - - /** - * Obtiene el valor de chargecatalog - * - * @return valor de chargecatalog - */ - public String getChargecatalog() { - return this.chargecatalog; - } - - /** - * Fija el valor de chargecatalog - * - * @param pChargecatalog nuevo Valor de chargecatalog - */ - public void setChargecatalog(String pChargecatalog) { - this.chargecatalog = pChargecatalog; - } - - /** - * Obtiene el valor de chargecatalogcode - * - * @return valor de chargecatalogcode - */ - public String getChargecatalogcode() { - return this.chargecatalogcode; - } - - /** - * Fija el valor de chargecatalogcode - * - * @param pChargecatalogcode nuevo Valor de chargecatalogcode - */ - public void setChargecatalogcode(String pChargecatalogcode) { - this.chargecatalogcode = pChargecatalogcode; - } - - /** - * Obtiene el valor de ratecatalog - * - * @return valor de ratecatalog - */ - public String getRatecatalog() { - return this.ratecatalog; - } - - /** - * Fija el valor de ratecatalog - * - * @param pRatecatalog nuevo Valor de ratecatalog - */ - public void setRatecatalog(String pRatecatalog) { - this.ratecatalog = pRatecatalog; - } - - /** - * Obtiene el valor de ratecatalogcode - * - * @return valor de ratecatalogcode - */ - public String getRatecatalogcode() { - return this.ratecatalogcode; - } - - /** - * Fija el valor de ratecatalogcode - * - * @param pRatecatalogcode nuevo Valor de ratecatalogcode - */ - public void setRatecatalogcode(String pRatecatalogcode) { - this.ratecatalogcode = pRatecatalogcode; - } - - /** - * Obtiene el valor de credittypecode - * - * @return valor de credittypecode - */ - public String getCredittypecode() { - return this.credittypecode; - } - - /** - * Fija el valor de credittypecode - * - * @param pCredittypecode nuevo Valor de credittypecode - */ - public void setCredittypecode(String pCredittypecode) { - this.credittypecode = pCredittypecode; - } - - /** - * Obtiene el valor de operativcondition - * - * @return valor de operativcondition - */ - public String getOperativcondition() { - return this.operativcondition; - } - - /** - * Fija el valor de operativcondition - * - * @param pOperativcondition nuevo Valor de operativcondition - */ - public void setOperativcondition(String pOperativcondition) { - this.operativcondition = pOperativcondition; - } - - /** - * Obtiene el valor de operationstatus - * - * @return valor de operationstatus - */ - public String getOperationstatus() { - return this.operationstatus; - } - - /** - * Fija el valor de operationstatus - * - * @param pOperationstatus nuevo Valor de operationstatus - */ - public void setOperationstatus(String pOperationstatus) { - this.operationstatus = pOperationstatus; - } - - /** - * Obtiene el valor de motivestatuscatalog - * - * @return valor de motivestatuscatalog - */ - public String getMotivestatuscatalog() { - return this.motivestatuscatalog; - } - - /** - * Fija el valor de motivestatuscatalog - * - * @param pMotivestatuscatalog nuevo Valor de motivestatuscatalog - */ - public void setMotivestatuscatalog(String pMotivestatuscatalog) { - this.motivestatuscatalog = pMotivestatuscatalog; - } - - /** - * Obtiene el valor de motivestatuscatalogcode - * - * @return valor de motivestatuscatalogcode - */ - public String getMotivestatuscatalogcode() { - return this.motivestatuscatalogcode; - } - - /** - * Fija el valor de motivestatuscatalogcode - * - * @param pMotivestatuscatalogcode nuevo Valor de motivestatuscatalogcode - */ - public void setMotivestatuscatalogcode(String pMotivestatuscatalogcode) { - this.motivestatuscatalogcode = pMotivestatuscatalogcode; - } - - /** - * Obtiene el valor de securitylevel - * - * @return valor de securitylevel - */ - public Integer getSecuritylevel() { - return this.securitylevel; - } - - /** - * Fija el valor de securitylevel - * - * @param pSecuritylevel nuevo Valor de securitylevel - */ - public void setSecuritylevel(Integer pSecuritylevel) { - this.securitylevel = pSecuritylevel; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - /** - * Obtiene el valor de oldjournalid - * - * @return valor de oldjournalid - */ - public String getOldjournalid() { - return this.oldjournalid; - } - - /** - * Fija el valor de oldjournalid - * - * @param pOldjournalid nuevo Valor de oldjournalid - */ - public void setOldjournalid(String pOldjournalid) { - this.oldjournalid = pOldjournalid; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccount)) { - return false; - } - TgeneAccount that = (TgeneAccount) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccount - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneAccount */ - @Override - public Object createInstance() { - TgeneAccount instance = new TgeneAccount(); - instance.setPk(new TgeneAccountKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccount - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccount p = (TgeneAccount) this.clone(); - p.setPk((TgeneAccountKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // METODOS MANUALES - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania al que pertenece la cuenta. - * @return TgeneAccount - */ - public static TgeneAccount findVigenteWhitlock(EntityManager pEntityManager, String pAccount, Integer pCompany) throws Exception { - if (!Constant.isOracleDialect(pEntityManager)) { - TgeneAccount.lockBaseAccount(pEntityManager, pAccount, pCompany); - } - TgeneAccountKey key = new TgeneAccountKey(pAccount, pCompany, Constant.getDefaultExpiryTimestamp()); - TgeneAccount obj = pEntityManager.find(TgeneAccount.class, key, LockModeType.PESSIMISTIC_READ); - if (obj == null) { - throw new CoreException("CORE-0007", "CUENTA NO EXISTE: {0} COMPANIA {1}", pAccount, pCompany); - } - return obj; - } - - /** - * Bloquea el registro en la base de datos para garantizar una solo actualizacion de saldos. - * - * @param pEntityManager Referencia a una session de base de datos. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania al que pertenece la cuenta. - * @throws Exception - */ - private static void lockBaseAccount(EntityManager pEntityManager, String pAccount, Integer pCompany) throws Exception { - Query qry = pEntityManager.createQuery("update TgeneBaseAccount set lockdb = 'Y' where pk.account = :account and pk.company = :company"); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.executeUpdate(); - } - - /** - * Sentencia que devuelve datos generales de la cuneta de la tabla TgeneAccount. - */ - private static final String HQL_ACCOUNT_MESSAGE = "from TgeneAccount t " + " where t.pk.account = :account " + " and t.pk.company = :company " - + " and t.journalid = :journalid "; - - /** - * Entrega datos generales de la cuenta. - * - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania. - * @param pJournalid Numero de mensaje a obtener la cuenta. - * @return TgeneAccount - * @throws Exception - */ - public static TgeneAccount findByJournalId(EntityManager pEntityManager, String pAccount, Integer pCompany, String pJournalid) throws Exception { - TgeneAccount tgeneAccount = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_MESSAGE); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.setParameter("journalid", pJournalid); - try { - tgeneAccount = (TgeneAccount) qry.getSingleResult(); - } catch (NoResultException e) { - throw new CoreException("CORE-0007", "CUENTA NO EXISTE: {1} COMPANIA {2}", pAccount, pCompany); - } - return tgeneAccount; - } - - /** - * Sentencia que devuelve datos generales de la cuneta de la tabla TgeneAccount. - */ - private static final String HQL_ACCOUNT_MESSAGE_ = "from TgeneAccount t " + " where t.journalid = :journalid "; - - /** - * Entrega datos generales de la cuenta. - * - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania. - * @param pJournalid Numero de mensaje a obtener la cuenta. - * @return TgeneAccount - * @throws Exception - */ - public static TgeneAccount findByJournalId(EntityManager pEntityManager, String pJournalid) throws Exception { - TgeneAccount tgeneAccount = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_MESSAGE_); - qry.setParameter("journalid", pJournalid); - try { - tgeneAccount = (TgeneAccount) qry.getSingleResult(); - } catch (NoResultException e) { - throw new CoreException("CORE-0007", "CUENTA NO EXISTE PARA EL MENSAJE: {1} ", pJournalid); - } - return tgeneAccount; - } - - /** - * Sentencia que devuelve datos generales de la cuenta de la tabla TgeneAccount. - */ - private static final String HQL_ACCOUNT_OLD_MESSAGE = "from TgeneAccount t " + " where t.pk.account = :account " - + " and t.pk.company = :company " + " and t.oldjournalid = :oldjournalid "; - - /** - * Entrega datos generales de la cuenta. - * - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania. - * @param pJournalid Numero de mensaje a obtener la cuenta. - * @return TgeneAccount - * @throws Exception - */ - public static TgeneAccount findByOldJournalid(EntityManager pEntityManager, String pAccount, Integer pCompany, String pOldJournalid) - throws Exception { - TgeneAccount tgeneAccount = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_OLD_MESSAGE); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.setParameter("oldjournalid", pOldJournalid); - try { - tgeneAccount = (TgeneAccount) qry.getSingleResult(); - } catch (NoResultException e) { - throw new CoreException("CORE-0007", "CUENTA NO EXISTE: {1} COMPANIA {2}", pAccount, pCompany); - } - return tgeneAccount; - } - - /** Sentencia que devuelve una lista de cuentas dado el codigo de persona. */ - private static final String HQL_LIST_ACCOUNT_BY_PERSONCODE = "from TgeneAccount t " + " where t.pk.dateto = :dateto " - + " and t.pk.company = :company " + " and t.personcode = :personcode "; - - /** - * Metodo que entrega una lidta de cuentas dado un codigo de persona. - * - * @param pEntityManager Sessiond e la base de datos. - * @param pCompany Codigo de compania. - * @param pPersoncode Codigo de persona. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, Integer pCompany, Integer pPersoncode) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(HQL_LIST_ACCOUNT_BY_PERSONCODE); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - qry.setParameter("company", pCompany); - qry.setParameter("personcode", pPersoncode); - ldata = qry.getResultList(); - return ldata; - } - - /** - * Sentencia que devuelve un registro de la tabla TgeneAccount - */ - private static final String JPQL_TGENE_ACCOUNT = "from TgeneAccount tga" + " where tga.pk.account = :account" - + " and tga.pk.company = :company" + " and tga.pk.dateto = :dateto"; - - /** - * Metodo que devuelve un registro de la tabla TGENEACCOUNT - * - * @param account Numero de la cuenta - * @param company Compania a la que pertenece la cuenta - * @param dateto Fecha de vigencia de la tarjeta - * @return - */ - public static TgeneAccount findByFechaVigenciaTarjeta(EntityManager pEntityManager, String account, Integer company, Timestamp dateto) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccount.JPQL_TGENE_ACCOUNT); - qry.setParameter("account", account); - qry.setParameter("company", company); - qry.setParameter("dateto", dateto); - try { - return (TgeneAccount) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - private static final String JPQL_CURRENT_BY_PRODUCT = "from TgeneAccount tga " - + "where tga.modulecode = :modulecode and tga.productcode = :productcode " - + "and tga.subproductcode IN (:subproductcode) and tga.pk.dateto = :dateto " - + "and tga.personcode = :personcode and tga.accountstatuscode = :accountstatuscode"; - - /** - * Permite obtener las cuentas deprstamos que esten en estado vigente a partir de los codigos de productos de - * reestructuracion - * - * @param entityManager Administrador de entidades y persistencia - * @param moduleCode Codigo de modulo - * @param productCode Codigo de producto - * @param subProductCode Codigo de subproducto - * @param personCode Codigo de persona - * @return lista de objetos de tipo {@link TgeneAccount} con el resultado de la operacion - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findCurrentByProduct(EntityManager entityManager, String moduleCode, String productCode, - List subProductCode, Integer personCode) throws Exception { - List result = null; - - Query qry = entityManager.createQuery(TgeneAccount.JPQL_CURRENT_BY_PRODUCT); - qry.setParameter(com.fp.common.helper.Constant.VMODULECODE, moduleCode); - qry.setParameter(com.fp.common.helper.Constant.VPRODUCTCODE, productCode); - qry.setParameter(com.fp.common.helper.Constant.VSUBPRODUCTCODE, subProductCode); - qry.setParameter(com.fp.common.helper.Constant.VDATETO, Constant.getDefaultExpiryDate()); - qry.setParameter("personcode", personCode); - qry.setParameter("accountstatuscode", "VIG"); - - result = qry.getResultList(); - - return result; - } - - private static final String JPQL_CURRENT_BY_ACCOUNT = "from TgeneAccount tga " - + "where tga.modulecode = :modulecode and tga.productcode = :productcode " - + "and tga.pk.account IN (:account) and tga.pk.dateto = :dateto " - + "and tga.currencycode = :currencycode and tga.accountstatuscode = :accountstatuscode"; - - /** - * Permite obtener las cuentas deprstamos que esten en estado vigente a partir de los codigos de cuentas de - * prestamo - * - * @param entityManager Administrador de entidades y persistencia - * @param moduleCode Codigo de modulo - * @param productCode Codigo de producto - * @param account Lista de Strings con las cuentas a consultar - * @param currencyCode Codigo de modeda - * @return lista de objetos de tipo {@link TgeneAccount} con el resultado de la operacion - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findCurrentByAccount(EntityManager entityManager, String moduleCode, String productCode, List account, - String currencyCode) throws Exception { - List result = null; - - Query qry = entityManager.createQuery(TgeneAccount.JPQL_CURRENT_BY_ACCOUNT); - qry.setParameter(com.fp.common.helper.Constant.VMODULECODE, moduleCode); - qry.setParameter(com.fp.common.helper.Constant.VPRODUCTCODE, productCode); - qry.setParameter(com.fp.common.helper.Constant.VACCOUNT, account); - qry.setParameter(com.fp.common.helper.Constant.VDATETO, Constant.getDefaultExpiryDate()); - qry.setParameter(com.fp.common.helper.Constant.VCURRENCYCODE, currencyCode); - qry.setParameter("accountstatuscode", "VIG"); - - result = qry.getResultList(); - - return result; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCredit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCredit.java.svn-base deleted file mode 100644 index a329268..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCredit.java.svn-base +++ /dev/null @@ -1,339 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTCREDIT*/ -@Entity(name="TgeneAccountCredit") -@Table(name="TGENEACCOUNTCREDIT") -public class TgeneAccountCredit extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountCredit -*/ -@EmbeddedId -private TgeneAccountCreditKey pk; -@Column(name="QUOTANUMBER", nullable=true) - -/** -* Numero de cuota, a pagar se utiliza en la transaccion de pago en caja sea en efectivo o cheques. -*/ -private Integer quotanumber; - -@Column(name="CREDIT", nullable=true) - -/** -* Indica que el pago se realiaza con credito a una cuenta. -*/ -private String credit; - -@Column(name="CASH", nullable=true) - -/** -* Indica que el pago se realiaza en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el pago se realiaza en cheque. -*/ -private String checks; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* El valor esta expresado en la moneda de la cuenta, del prestamo, plazo fijo etc.. -*/ -private BigDecimal value; - -@Column(name="CREDITACCOUNT", nullable=true) - -/** -* Numero de cuenta a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccount; - -@Column(name="CREDITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccountingcode; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Si el valor se entrega en efectivo o cheque y el benefiniciario esta en las tablas de clientes, en el campo va el codigo de persona asociado. -*/ -private Integer personcode; - -@Column(name="IDBENEFICIARY", nullable=true) - -/** -* Si el beneficiario no esta registrado en la tabla de personas, en el campo va la identificacion del venceficiario. -*/ -private String idbeneficiary; - -@Column(name="BENEFICIARYNAME", nullable=true) - -/** -* Nombre del beneficiario. -*/ -private String beneficiaryname; - -@Column(name="JOURNALID", nullable=true) - -/** -* Numero de mensaje con el que realizo el pago. -*/ -private String journalid; - -/**Contructor por defecto*/ -public TgeneAccountCredit(){ -} -/**Contructor de TgeneAccountCredit -@param pPk Clave Primaria del entity -*/ -public TgeneAccountCredit(TgeneAccountCreditKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountCredit -*/ -public static TgeneAccountCredit find(EntityManager pEntityManager,TgeneAccountCreditKey pKey) throws Exception{ - TgeneAccountCredit obj = pEntityManager.find(TgeneAccountCredit.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountCredit -@return El objeto que referencia a la Clave primaria de TgeneAccountCredit -*/ -public TgeneAccountCreditKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountCredit -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountCredit -*/ -public void setPk(TgeneAccountCreditKey pPk){ - pk=pPk; -} -/**Obtiene el valor de quotanumber -@return valor de quotanumber*/ -public Integer getQuotanumber(){ - return quotanumber; -} -/**Fija el valor de quotanumber -@param pQuotanumber nuevo Valor de quotanumber*/ -public void setQuotanumber(Integer pQuotanumber){ - quotanumber=pQuotanumber; -} - -/**Obtiene el valor de credit -@return valor de credit*/ -public String getCredit(){ - return credit; -} -/**Fija el valor de credit -@param pCredit nuevo Valor de credit*/ -public void setCredit(String pCredit){ - credit=pCredit; -} - -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de creditaccount -@return valor de creditaccount*/ -public String getCreditaccount(){ - return creditaccount; -} -/**Fija el valor de creditaccount -@param pCreditaccount nuevo Valor de creditaccount*/ -public void setCreditaccount(String pCreditaccount){ - creditaccount=pCreditaccount; -} - -/**Obtiene el valor de creditaccountingcode -@return valor de creditaccountingcode*/ -public String getCreditaccountingcode(){ - return creditaccountingcode; -} -/**Fija el valor de creditaccountingcode -@param pCreditaccountingcode nuevo Valor de creditaccountingcode*/ -public void setCreditaccountingcode(String pCreditaccountingcode){ - creditaccountingcode=pCreditaccountingcode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de idbeneficiary -@return valor de idbeneficiary*/ -public String getIdbeneficiary(){ - return idbeneficiary; -} -/**Fija el valor de idbeneficiary -@param pIdbeneficiary nuevo Valor de idbeneficiary*/ -public void setIdbeneficiary(String pIdbeneficiary){ - idbeneficiary=pIdbeneficiary; -} - -/**Obtiene el valor de beneficiaryname -@return valor de beneficiaryname*/ -public String getBeneficiaryname(){ - return beneficiaryname; -} -/**Fija el valor de beneficiaryname -@param pBeneficiaryname nuevo Valor de beneficiaryname*/ -public void setBeneficiaryname(String pBeneficiaryname){ - beneficiaryname=pBeneficiaryname; -} - -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountCredit))return false; - TgeneAccountCredit that = (TgeneAccountCredit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountCredit -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountCredit -*/ -public Object createInstance(){ - TgeneAccountCredit instance=new TgeneAccountCredit(); - instance.setPk(new TgeneAccountCreditKey()); - return instance; -} -/**Clona la entidad TgeneAccountCredit -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountCredit p=(TgeneAccountCredit)this.clone(); - p.setPk((TgeneAccountCreditKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditKey.java.svn-base deleted file mode 100644 index eda4371..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditKey.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTCREDIT*/ -@Embeddable -public class TgeneAccountCreditKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="CREATIONDATE", nullable=false,updatable=false) - -/** -* Fecha de creacion del registro. -*/ -private Date creationdate; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneAccountCreditKey(){} -/**Contructor de TgeneAccountCreditKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pCreationdate Fecha de creacion del registro. -@param pCreditsequence Secuencia del credito. -*/ -public TgeneAccountCreditKey(String pAccount,Integer pCompany,Date pCreationdate,Integer pCreditsequence){ - account=pAccount; - company=pCompany; - creationdate=pCreationdate; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de creationdate -@return valor de creationdate*/ -public Date getCreationdate(){ - return creationdate; -} -/**Fija el valor de creationdate -@param pCreationdate nuevo Valor de creationdate*/ -public void setCreationdate(Date pCreationdate){ - creationdate=pCreationdate; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneAccountCreditKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountCreditKey))return false; - TgeneAccountCreditKey that = (TgeneAccountCreditKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getCreationdate() == null || that.getCreationdate() == null){ - return false; - } - if (! this.getCreationdate().equals(that.getCreationdate())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountCreditKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getCreationdate() == null ? 0 : this.getCreationdate().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpening.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpening.java.svn-base deleted file mode 100644 index 0224055..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpening.java.svn-base +++ /dev/null @@ -1,332 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTCREDITOPENING*/ -@Entity(name="TgeneAccountCreditOpening") -@Table(name="TGENEACCOUNTCREDITOPENING") -public class TgeneAccountCreditOpening extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountCreditOpening -*/ -@EmbeddedId -private TgeneAccountCreditOpeningKey pk; -@Column(name="CASH", nullable=true) - -/** -* Indica que el pago se realiaza en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el pago se realiaza en cheque. -*/ -private String checks; - -@Column(name="CREDIT", nullable=true) - -/** -* Indica que el pago se realiaza con credito a una cuenta. -*/ -private String credit; - -@Column(name="CREDITACCOUNT", nullable=true) - -/** -* Numero de cuenta a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccount; - -@Column(name="CREDITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccountingcode; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* El valor esta expresado en la moneda de la cuenta, del prestamo, plazo fijo etc.. -*/ -private BigDecimal value; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Si el valor se entrega en efectivo o cheque y el benefiniciario esta en las tablas de clientes, en el campo va el codigo de persona asociado. -*/ -private Integer personcode; - -@Column(name="IDBENEFICIARY", nullable=true) - -/** -* Si el beneficiario no esta registrado en la tabla de personas, en el campo va la identificacion del venceficiario. -*/ -private String idbeneficiary; - -@Column(name="BENEFICIARYNAME", nullable=true) - -/** -* Nombre del beneficiario. -*/ -private String beneficiaryname; - -/**Contructor por defecto*/ -public TgeneAccountCreditOpening(){ -} -/**Contructor de TgeneAccountCreditOpening -@param pPk Clave Primaria del entity -*/ -public TgeneAccountCreditOpening(TgeneAccountCreditOpeningKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountCreditOpening -*/ -public static TgeneAccountCreditOpening find(EntityManager pEntityManager,TgeneAccountCreditOpeningKey pKey) throws Exception{ - TgeneAccountCreditOpening obj = pEntityManager.find(TgeneAccountCreditOpening.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountCreditOpening -@return El objeto que referencia a la Clave primaria de TgeneAccountCreditOpening -*/ -public TgeneAccountCreditOpeningKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountCreditOpening -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountCreditOpening -*/ -public void setPk(TgeneAccountCreditOpeningKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de credit -@return valor de credit*/ -public String getCredit(){ - return credit; -} -/**Fija el valor de credit -@param pCredit nuevo Valor de credit*/ -public void setCredit(String pCredit){ - credit=pCredit; -} - -/**Obtiene el valor de creditaccount -@return valor de creditaccount*/ -public String getCreditaccount(){ - return creditaccount; -} -/**Fija el valor de creditaccount -@param pCreditaccount nuevo Valor de creditaccount*/ -public void setCreditaccount(String pCreditaccount){ - creditaccount=pCreditaccount; -} - -/**Obtiene el valor de creditaccountingcode -@return valor de creditaccountingcode*/ -public String getCreditaccountingcode(){ - return creditaccountingcode; -} -/**Fija el valor de creditaccountingcode -@param pCreditaccountingcode nuevo Valor de creditaccountingcode*/ -public void setCreditaccountingcode(String pCreditaccountingcode){ - creditaccountingcode=pCreditaccountingcode; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de idbeneficiary -@return valor de idbeneficiary*/ -public String getIdbeneficiary(){ - return idbeneficiary; -} -/**Fija el valor de idbeneficiary -@param pIdbeneficiary nuevo Valor de idbeneficiary*/ -public void setIdbeneficiary(String pIdbeneficiary){ - idbeneficiary=pIdbeneficiary; -} - -/**Obtiene el valor de beneficiaryname -@return valor de beneficiaryname*/ -public String getBeneficiaryname(){ - return beneficiaryname; -} -/**Fija el valor de beneficiaryname -@param pBeneficiaryname nuevo Valor de beneficiaryname*/ -public void setBeneficiaryname(String pBeneficiaryname){ - beneficiaryname=pBeneficiaryname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountCreditOpening))return false; - TgeneAccountCreditOpening that = (TgeneAccountCreditOpening) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountCreditOpening -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountCreditOpening -*/ -public Object createInstance(){ - TgeneAccountCreditOpening instance=new TgeneAccountCreditOpening(); - instance.setPk(new TgeneAccountCreditOpeningKey()); - return instance; -} -/**Clona la entidad TgeneAccountCreditOpening -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountCreditOpening p=(TgeneAccountCreditOpening)this.clone(); - p.setPk((TgeneAccountCreditOpeningKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales - /**Sentencia que devuelve uan lista con los valores a entregar al cliente asociados a una cuenta.*/ - private static final String HQL_ACCO_CREDIT_OPENING = - " from TgeneAccountCreditOpening t " + - " where t.pk.account = :account "+ - " and t.pk.company = :company "+ - " order by t.pk.creditsequence "; - - /** - * Metodo que entrega una lista de valores a entregar al cliente, en la aperturad e una operacion. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania a la que pertenece la cuenta. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pAccount,Integer pCompany) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_ACCO_CREDIT_OPENING); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpeningKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpeningKey.java.svn-base deleted file mode 100644 index 894015b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountCreditOpeningKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTCREDITOPENING*/ -@Embeddable -public class TgeneAccountCreditOpeningKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneAccountCreditOpeningKey(){} -/**Contructor de TgeneAccountCreditOpeningKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pCreditsequence Secuencia del credito. -*/ -public TgeneAccountCreditOpeningKey(String pAccount,Integer pCompany,Integer pCreditsequence){ - account=pAccount; - company=pCompany; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneAccountCreditOpeningKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountCreditOpeningKey))return false; - TgeneAccountCreditOpeningKey that = (TgeneAccountCreditOpeningKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountCreditOpeningKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpening.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpening.java.svn-base deleted file mode 100644 index b0eb4d5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpening.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTDEBITOPENING*/ -@Entity(name="TgeneAccountDebitOpening") -@Table(name="TGENEACCOUNTDEBITOPENING") -public class TgeneAccountDebitOpening extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountDebitOpening -*/ -@EmbeddedId -private TgeneAccountDebitOpeningKey pk; -@Column(name="CASH", nullable=true) - -/** -* Indica que el cargo se realiaza en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el cargo se realiaza en cheque. -*/ -private String checks; - -@Column(name="DEBIT", nullable=true) - -/** -* Indica que el cargo se realiaza con debito a la cuenta. -*/ -private String debit; - -@Column(name="DEBITACCOUNT", nullable=true) - -/** -* Numero de cuenta a debitar cuando el cargo se cobra con debito a la cuenta. -*/ -private String debitaccount; - -@Column(name="ACCOUNTMODULE", nullable=true) - -/** -* Codigo de modulo al que pertenece la cuenta a debitar -*/ -private String accountmodule; - -@Column(name="DEBITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable cuando el cargo se cobra con debito a la cuenta. -*/ -private String debitaccountingcode; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* Valor en la moneda de la cuenta, la compra venta se hace en funcion a la moneda de la cuenta debito -*/ -private BigDecimal value; - -@Column(name="JOURNALID", nullable=true) - -/** -* Numero de mensaje con el que se realizo el financiero. -*/ -private String journalid; - -/**Contructor por defecto*/ -public TgeneAccountDebitOpening(){ -} -/**Contructor de TgeneAccountDebitOpening -@param pPk Clave Primaria del entity -*/ -public TgeneAccountDebitOpening(TgeneAccountDebitOpeningKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountDebitOpening -*/ -public static TgeneAccountDebitOpening find(EntityManager pEntityManager,TgeneAccountDebitOpeningKey pKey) throws Exception{ - TgeneAccountDebitOpening obj = pEntityManager.find(TgeneAccountDebitOpening.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountDebitOpening -@return El objeto que referencia a la Clave primaria de TgeneAccountDebitOpening -*/ -public TgeneAccountDebitOpeningKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountDebitOpening -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountDebitOpening -*/ -public void setPk(TgeneAccountDebitOpeningKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de debit -@return valor de debit*/ -public String getDebit(){ - return debit; -} -/**Fija el valor de debit -@param pDebit nuevo Valor de debit*/ -public void setDebit(String pDebit){ - debit=pDebit; -} - -/**Obtiene el valor de debitaccount -@return valor de debitaccount*/ -public String getDebitaccount(){ - return debitaccount; -} -/**Fija el valor de debitaccount -@param pDebitaccount nuevo Valor de debitaccount*/ -public void setDebitaccount(String pDebitaccount){ - debitaccount=pDebitaccount; -} - -/**Obtiene el valor de accountmodule -@return valor de accountmodule*/ -public String getAccountmodule(){ - return accountmodule; -} -/**Fija el valor de accountmodule -@param pAccountmodule nuevo Valor de accountmodule*/ -public void setAccountmodule(String pAccountmodule){ - accountmodule=pAccountmodule; -} - -/**Obtiene el valor de debitaccountingcode -@return valor de debitaccountingcode*/ -public String getDebitaccountingcode(){ - return debitaccountingcode; -} -/**Fija el valor de debitaccountingcode -@param pDebitaccountingcode nuevo Valor de debitaccountingcode*/ -public void setDebitaccountingcode(String pDebitaccountingcode){ - debitaccountingcode=pDebitaccountingcode; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de journalid -@return valor de value*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param journalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountDebitOpening))return false; - TgeneAccountDebitOpening that = (TgeneAccountDebitOpening) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountDebitOpening -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountDebitOpening -*/ -public Object createInstance(){ - TgeneAccountDebitOpening instance=new TgeneAccountDebitOpening(); - instance.setPk(new TgeneAccountDebitOpeningKey()); - return instance; -} -/**Clona la entidad TgeneAccountDebitOpening -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountDebitOpening p=(TgeneAccountDebitOpening)this.clone(); - p.setPk((TgeneAccountDebitOpeningKey)this.pk.cloneMe()); - return p; -} - //Metodos manuales. - /**Sentencia que devuelve uan lista con los valores de cargos asociados a una solicitud.*/ - private static final String HQL_ACCO_DEBIT_OPENING = - "from TgeneAccountDebitOpening t " + - " where t.pk.account = :account "+ - " and t.pk.company = :company "+ - " order by t.pk.debitsequence "; - - /** - * Metodo que entrega una lista de valores a cobrar al cliente, en la aperturad e una operacion. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania a la que pertenece la cuenta. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pAccount,Integer pCompany) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_ACCO_DEBIT_OPENING); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpeningKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpeningKey.java.svn-base deleted file mode 100644 index bf0eee1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountDebitOpeningKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTDEBITOPENING*/ -@Embeddable -public class TgeneAccountDebitOpeningKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="DEBITSEQUENCE", nullable=false,updatable=false) - -/** -* Sequencia de debito. -*/ -private Integer debitsequence; - -/**Contructor por defecto*/ -public TgeneAccountDebitOpeningKey(){} -/**Contructor de TgeneAccountDebitOpeningKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pDebitsequence Sequencia de debito. -*/ -public TgeneAccountDebitOpeningKey(String pAccount,Integer pCompany,Integer pDebitsequence){ - account=pAccount; - company=pCompany; - debitsequence=pDebitsequence; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de debitsequence -@return valor de debitsequence*/ -public Integer getDebitsequence(){ - return debitsequence; -} -/**Fija el valor de debitsequence -@param pDebitsequence nuevo Valor de debitsequence*/ -public void setDebitsequence(Integer pDebitsequence){ - debitsequence=pDebitsequence; -} - -/**Implementacin de la comparacin de TgeneAccountDebitOpeningKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountDebitOpeningKey))return false; - TgeneAccountDebitOpeningKey that = (TgeneAccountDebitOpeningKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getDebitsequence() == null || that.getDebitsequence() == null){ - return false; - } - if (! this.getDebitsequence().equals(that.getDebitsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountDebitOpeningKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getDebitsequence() == null ? 0 : this.getDebitsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCredit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCredit.java.svn-base deleted file mode 100644 index 8166320..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCredit.java.svn-base +++ /dev/null @@ -1,401 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTFORCREDIT */ -@Entity(name = "TgeneAccountForCredit") -@Table(name = "TGENEACCOUNTFORCREDIT") -public class TgeneAccountForCredit extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneAccountForCredit - */ - @EmbeddedId - private TgeneAccountForCreditKey pk; - @Column(name = "CASH", nullable = true) - /** - * Indica que el pago se realiaza en efectivo. - */ - private String cash; - - @Column(name = "CHECKS", nullable = true) - /** - * Indica que el pago se realiaza en cheque. - */ - private String checks; - - @Column(name = "CREDIT", nullable = true) - /** - * Indica que el pago se realiaza con credito a una cuenta. - */ - private String credit; - - @Column(name = "CREDITACCOUNT", nullable = true) - /** - * Numero de cuenta a acreditar cuando el cargo se cobra con debito a la cuenta. - */ - private String creditaccount; - - @Column(name = "CREDITACCOUNTINGCODE", nullable = true) - /** - * Codigo contable a acreditar cuando el cargo se cobra con debito a la cuenta. - */ - private String creditaccountingcode; - - @Column(name = "CURRENCY", nullable = true) - /** - * Codigo de moneda de la cuenta de la operacion. - */ - private String currency; - - @Column(name = "VALUE", nullable = true) - /** - * El valor esta expresado en la moneda de la cuenta, del prestamo, plazo fijo etc.. - */ - private BigDecimal value; - - @Column(name = "PERSONCODE", nullable = true) - /** - * Si el valor se entrega en efectivo o cheque y el benefiniciario esta en las tablas de clientes, en el campo va el codigo de persona asociado. - */ - private Integer personcode; - - @Column(name = "IDBENEFICIARY", nullable = true) - /** - * Si el beneficiario no esta registrado en la tabla de personas, en el campo va la identificacion del venceficiario. - */ - private String idbeneficiary; - - @Column(name = "BENEFICIARYNAME", nullable = true) - /** - * Nombre del beneficiario. - */ - private String beneficiaryname; - - /** Contructor por defecto */ - public TgeneAccountForCredit() { - } - /** - * Contructor de TgeneAccountForCredit - * - * @param pPk Clave Primaria del entity - */ - public TgeneAccountForCredit(TgeneAccountForCreditKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountForCredit - */ - public static TgeneAccountForCredit find(EntityManager pEntityManager, TgeneAccountForCreditKey pKey) - throws Exception { - TgeneAccountForCredit obj = pEntityManager.find(TgeneAccountForCredit.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneAccountForCredit - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountForCredit - */ - public TgeneAccountForCreditKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountForCredit - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountForCredit - */ - public void setPk(TgeneAccountForCreditKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de cash - * - * @return valor de cash - */ - public String getCash() { - return cash; - } - /** - * Fija el valor de cash - * - * @param pCash nuevo Valor de cash - */ - public void setCash(String pCash) { - cash = pCash; - } - - /** - * Obtiene el valor de checks - * - * @return valor de checks - */ - public String getChecks() { - return checks; - } - /** - * Fija el valor de checks - * - * @param pChecks nuevo Valor de checks - */ - public void setChecks(String pChecks) { - checks = pChecks; - } - - /** - * Obtiene el valor de credit - * - * @return valor de credit - */ - public String getCredit() { - return credit; - } - /** - * Fija el valor de credit - * - * @param pCredit nuevo Valor de credit - */ - public void setCredit(String pCredit) { - credit = pCredit; - } - - /** - * Obtiene el valor de creditaccount - * - * @return valor de creditaccount - */ - public String getCreditaccount() { - return creditaccount; - } - /** - * Fija el valor de creditaccount - * - * @param pCreditaccount nuevo Valor de creditaccount - */ - public void setCreditaccount(String pCreditaccount) { - creditaccount = pCreditaccount; - } - - /** - * Obtiene el valor de creditaccountingcode - * - * @return valor de creditaccountingcode - */ - public String getCreditaccountingcode() { - return creditaccountingcode; - } - /** - * Fija el valor de creditaccountingcode - * - * @param pCreditaccountingcode nuevo Valor de creditaccountingcode - */ - public void setCreditaccountingcode(String pCreditaccountingcode) { - creditaccountingcode = pCreditaccountingcode; - } - - /** - * Obtiene el valor de currency - * - * @return valor de currency - */ - public String getCurrency() { - return currency; - } - /** - * Fija el valor de currency - * - * @param pCurrency nuevo Valor de currency - */ - public void setCurrency(String pCurrency) { - currency = pCurrency; - } - - /** - * Obtiene el valor de value - * - * @return valor de value - */ - public BigDecimal getValue() { - return value; - } - /** - * Fija el valor de value - * - * @param pValue nuevo Valor de value - */ - public void setValue(BigDecimal pValue) { - value = pValue; - } - - /** - * Obtiene el valor de personcode - * - * @return valor de personcode - */ - public Integer getPersoncode() { - return personcode; - } - /** - * Fija el valor de personcode - * - * @param pPersoncode nuevo Valor de personcode - */ - public void setPersoncode(Integer pPersoncode) { - personcode = pPersoncode; - } - - /** - * Obtiene el valor de idbeneficiary - * - * @return valor de idbeneficiary - */ - public String getIdbeneficiary() { - return idbeneficiary; - } - /** - * Fija el valor de idbeneficiary - * - * @param pIdbeneficiary nuevo Valor de idbeneficiary - */ - public void setIdbeneficiary(String pIdbeneficiary) { - idbeneficiary = pIdbeneficiary; - } - - /** - * Obtiene el valor de beneficiaryname - * - * @return valor de beneficiaryname - */ - public String getBeneficiaryname() { - return beneficiaryname; - } - /** - * Fija el valor de beneficiaryname - * - * @param pBeneficiaryname nuevo Valor de beneficiaryname - */ - public void setBeneficiaryname(String pBeneficiaryname) { - beneficiaryname = pBeneficiaryname; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneAccountForCredit)) - return false; - TgeneAccountForCredit that = (TgeneAccountForCredit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccountForCredit - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneAccountForCredit */ - public Object createInstance() { - TgeneAccountForCredit instance = new TgeneAccountForCredit(); - instance.setPk(new TgeneAccountForCreditKey()); - return instance; - } - /** - * Clona la entidad TgeneAccountForCredit - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountForCredit p = (TgeneAccountForCredit) this.clone(); - p.setPk((TgeneAccountForCreditKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve datos de la tabla TgeneAccountForCredit.*/ - private static final String HQL_ACCOUNT_FOR_CREDIT = - "from TgeneAccountForCredit tafc " + - " where tafc.pk.account = :account "+ - " and tafc.pk.company = :company "+ - " order by tafc.pk.creditsequence "; - - /** - * Entrega datos de cuentas a acreditar ejemplo definicion de la forma de pago de certificado de deposito. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager, - String pAccount,Integer pCompany) throws Exception { - List lcredit = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_FOR_CREDIT); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - lcredit = qry.getResultList(); - return lcredit; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCreditKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCreditKey.java.svn-base deleted file mode 100644 index cb1da7c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForCreditKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTFORCREDIT*/ -@Embeddable -public class TgeneAccountForCreditKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneAccountForCreditKey(){} -/**Contructor de TgeneAccountForCreditKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pCreditsequence Secuencia del credito. -*/ -public TgeneAccountForCreditKey(String pAccount,Integer pCompany,Integer pCreditsequence){ - account=pAccount; - company=pCompany; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneAccountForCreditKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountForCreditKey))return false; - TgeneAccountForCreditKey that = (TgeneAccountForCreditKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountForCreditKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebit.java.svn-base deleted file mode 100644 index ebf7785..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebit.java.svn-base +++ /dev/null @@ -1,262 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTFORDEBIT */ -@Entity(name = "TgeneAccountForDebit") -@Table(name = "TGENEACCOUNTFORDEBIT") -public class TgeneAccountForDebit extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneAccountForDebit - */ - @EmbeddedId - private TgeneAccountForDebitKey pk; - @Column(name = "DEBITACCOUNT", nullable = true) - /** - * Numero de cuenta a debitar cuando el cargo se cobra con debito a la cuenta. - */ - private String debitaccount; - - @Column(name = "DEBITACCOUNTINGCODE", nullable = true) - /** - * Codigo contable cuando el cargo se cobra con debito a la cuenta. - */ - private String debitaccountingcode; - - @Column(name = "CURRENCY", nullable = true) - /** - * Codigo de moneda de la cuenta de la operacion. - */ - private String currency; - - @Column(name = "VALUE", nullable = true) - /** - * Valor en la moneda de la cuenta, la compra venta se hace en funcion a la moneda de la cuenta debito - */ - private BigDecimal value; - - /** Contructor por defecto */ - public TgeneAccountForDebit() { - } - /** - * Contructor de TgeneAccountForDebit - * - * @param pPk Clave Primaria del entity - */ - public TgeneAccountForDebit(TgeneAccountForDebitKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountForDebit - */ - public static TgeneAccountForDebit find(EntityManager pEntityManager, TgeneAccountForDebitKey pKey) - throws Exception { - TgeneAccountForDebit obj = pEntityManager.find(TgeneAccountForDebit.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneAccountForDebit - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountForDebit - */ - public TgeneAccountForDebitKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountForDebit - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountForDebit - */ - public void setPk(TgeneAccountForDebitKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de debitaccount - * - * @return valor de debitaccount - */ - public String getDebitaccount() { - return debitaccount; - } - /** - * Fija el valor de debitaccount - * - * @param pDebitaccount nuevo Valor de debitaccount - */ - public void setDebitaccount(String pDebitaccount) { - debitaccount = pDebitaccount; - } - - /** - * Obtiene el valor de debitaccountingcode - * - * @return valor de debitaccountingcode - */ - public String getDebitaccountingcode() { - return debitaccountingcode; - } - /** - * Fija el valor de debitaccountingcode - * - * @param pDebitaccountingcode nuevo Valor de debitaccountingcode - */ - public void setDebitaccountingcode(String pDebitaccountingcode) { - debitaccountingcode = pDebitaccountingcode; - } - - /** - * Obtiene el valor de currency - * - * @return valor de currency - */ - public String getCurrency() { - return currency; - } - /** - * Fija el valor de currency - * - * @param pCurrency nuevo Valor de currency - */ - public void setCurrency(String pCurrency) { - currency = pCurrency; - } - - /** - * Obtiene el valor de value - * - * @return valor de value - */ - public BigDecimal getValue() { - return value; - } - /** - * Fija el valor de value - * - * @param pValue nuevo Valor de value - */ - public void setValue(BigDecimal pValue) { - value = pValue; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneAccountForDebit)) - return false; - TgeneAccountForDebit that = (TgeneAccountForDebit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccountForDebit - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneAccountForDebit */ - public Object createInstance() { - TgeneAccountForDebit instance = new TgeneAccountForDebit(); - instance.setPk(new TgeneAccountForDebitKey()); - return instance; - } - /** - * Clona la entidad TgeneAccountForDebit - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountForDebit p = (TgeneAccountForDebit) this.clone(); - p.setPk((TgeneAccountForDebitKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales - /** Sentencia que devuelve datos de la tabla TgeneAccountForDebit.*/ - private static final String HQL_ACCOUNT_FOR_DEBIT = - "from TgeneAccountForDebit tafd " + - " where tafd.pk.account = :account "+ - " and tafd.pk.company = :company "; - - /** - * Entrega datos de cuentas a debitar para cancelar el valor de la cuneta. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager, - String pAccount,Integer pCompany) throws Exception { - List ldebits = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_FOR_DEBIT); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - ldebits = qry.getResultList(); - return ldebits; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebitKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebitKey.java.svn-base deleted file mode 100644 index a400089..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountForDebitKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTFORDEBIT*/ -@Embeddable -public class TgeneAccountForDebitKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertenece la cuenta. -*/ -private Integer company; - -@Column(name="DEBITSEQUENCE", nullable=false,updatable=false) - -/** -* Sequencia de debito. -*/ -private Integer debitsequence; - -/**Contructor por defecto*/ -public TgeneAccountForDebitKey(){} -/**Contructor de TgeneAccountForDebitKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertenece la cuenta. -@param pDebitsequence Sequencia de debito. -*/ -public TgeneAccountForDebitKey(String pAccount,Integer pCompany,Integer pDebitsequence){ - account=pAccount; - company=pCompany; - debitsequence=pDebitsequence; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de debitsequence -@return valor de debitsequence*/ -public Integer getDebitsequence(){ - return debitsequence; -} -/**Fija el valor de debitsequence -@param pDebitsequence nuevo Valor de debitsequence*/ -public void setDebitsequence(Integer pDebitsequence){ - debitsequence=pDebitsequence; -} - -/**Implementacin de la comparacin de TgeneAccountForDebitKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountForDebitKey))return false; - TgeneAccountForDebitKey that = (TgeneAccountForDebitKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getDebitsequence() == null || that.getDebitsequence() == null){ - return false; - } - if (! this.getDebitsequence().equals(that.getDebitsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountForDebitKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getDebitsequence() == null ? 0 : this.getDebitsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountKey.java.svn-base deleted file mode 100644 index 2fb6440..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNT*/ -@Embeddable -public class TgeneAccountKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro con datos de la cuenta. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneAccountKey(){} -/**Contructor de TgeneAccountKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pDateto Fecha hasta la cual esta vigente el registro con datos de la cuenta. -*/ -public TgeneAccountKey(String pAccount,Integer pCompany,Timestamp pDateto){ - account=pAccount; - company=pCompany; - dateto=pDateto; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgeneAccountKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountKey))return false; - TgeneAccountKey that = (TgeneAccountKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidation.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidation.java.svn-base deleted file mode 100644 index 31fe675..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidation.java.svn-base +++ /dev/null @@ -1,332 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTLIQUIDATION*/ -@Entity(name="TgeneAccountLiquidation") -@Table(name="TGENEACCOUNTLIQUIDATION") -public class TgeneAccountLiquidation extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountLiquidation -*/ -@EmbeddedId -private TgeneAccountLiquidationKey pk; -@Column(name="BASEAMOUNTBALANCETYPE", nullable=true) - -/** -* Tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancetype; - -@Column(name="BASEAMOUNTBALANCEGROUP", nullable=true) - -/** -* Grupo de balance del tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancegroup; - -@Column(name="CALCULATEORDER", nullable=true) - -/** -* CALCULATEORDER -*/ -private Integer calculateorder; - -@Column(name="NEGOTIABLE", nullable=true) - -/** -* Indica si la tasa se puede negociar con el cliente el valor y las condiciones del cargo -*/ -private String negotiable; - -@Column(name="INCREASE", nullable=true) - -/** -* Indica que incrementa el valor de capital con el cual se genera la tabla de pagos -*/ -private String increase; - -@Column(name="DECREASE", nullable=true) - -/** -* Indica que disminuye el valor de capital con el cual se genera la tabla de pagos -*/ -private String decrease; - -@Column(name="DECREASEDISBURSEMENT", nullable=true) - -/** -* Indica que el valor del cargo se descuenta del monto a entregar al cliente -*/ -private String decreasedisbursement; - -@Column(name="CASH", nullable=true) - -/** -* Indica que el valor se cobra en efectivo. -*/ -private String cash; - -@Column(name="DEBITACCOUNT", nullable=true) - -/** -* Indica que el valor se cobra con debito a una cuneta, esta puede ser cuenta contable o cuenta a la vista -*/ -private String debitaccount; - -@Column(name="VALUE", nullable=true) - -/** -* Valor del cargo en la moneda de la operacion -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneAccountLiquidation(){ -} -/**Contructor de TgeneAccountLiquidation -@param pPk Clave Primaria del entity -*/ -public TgeneAccountLiquidation(TgeneAccountLiquidationKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountLiquidation -*/ -public static TgeneAccountLiquidation find(EntityManager pEntityManager,TgeneAccountLiquidationKey pKey) throws Exception{ - TgeneAccountLiquidation obj = pEntityManager.find(TgeneAccountLiquidation.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountLiquidation -@return El objeto que referencia a la Clave primaria de TgeneAccountLiquidation -*/ -public TgeneAccountLiquidationKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountLiquidation -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountLiquidation -*/ -public void setPk(TgeneAccountLiquidationKey pPk){ - pk=pPk; -} -/**Obtiene el valor de baseamountbalancetype -@return valor de baseamountbalancetype*/ -public String getBaseamountbalancetype(){ - return baseamountbalancetype; -} -/**Fija el valor de baseamountbalancetype -@param pBaseamountbalancetype nuevo Valor de baseamountbalancetype*/ -public void setBaseamountbalancetype(String pBaseamountbalancetype){ - baseamountbalancetype=pBaseamountbalancetype; -} - -/**Obtiene el valor de baseamountbalancegroup -@return valor de baseamountbalancegroup*/ -public String getBaseamountbalancegroup(){ - return baseamountbalancegroup; -} -/**Fija el valor de baseamountbalancegroup -@param pBaseamountbalancegroup nuevo Valor de baseamountbalancegroup*/ -public void setBaseamountbalancegroup(String pBaseamountbalancegroup){ - baseamountbalancegroup=pBaseamountbalancegroup; -} - -/**Obtiene el valor de calculateorder -@return valor de calculateorder*/ -public Integer getCalculateorder(){ - return calculateorder; -} -/**Fija el valor de calculateorder -@param pCalculateorder nuevo Valor de calculateorder*/ -public void setCalculateorder(Integer pCalculateorder){ - calculateorder=pCalculateorder; -} - -/**Obtiene el valor de negotiable -@return valor de negotiable*/ -public String getNegotiable(){ - return negotiable; -} -/**Fija el valor de negotiable -@param pNegotiable nuevo Valor de negotiable*/ -public void setNegotiable(String pNegotiable){ - negotiable=pNegotiable; -} - -/**Obtiene el valor de increase -@return valor de increase*/ -public String getIncrease(){ - return increase; -} -/**Fija el valor de increase -@param pIncrease nuevo Valor de increase*/ -public void setIncrease(String pIncrease){ - increase=pIncrease; -} - -/**Obtiene el valor de decrease -@return valor de decrease*/ -public String getDecrease(){ - return decrease; -} -/**Fija el valor de decrease -@param pDecrease nuevo Valor de decrease*/ -public void setDecrease(String pDecrease){ - decrease=pDecrease; -} - -/**Obtiene el valor de decreasedisbursement -@return valor de decreasedisbursement*/ -public String getDecreasedisbursement(){ - return decreasedisbursement; -} -/**Fija el valor de decreasedisbursement -@param pDecreasedisbursement nuevo Valor de decreasedisbursement*/ -public void setDecreasedisbursement(String pDecreasedisbursement){ - decreasedisbursement=pDecreasedisbursement; -} - -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de debitaccount -@return valor de debitaccount*/ -public String getDebitaccount(){ - return debitaccount; -} -/**Fija el valor de debitaccount -@param pDebitaccount nuevo Valor de debitaccount*/ -public void setDebitaccount(String pDebitaccount){ - debitaccount=pDebitaccount; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountLiquidation))return false; - TgeneAccountLiquidation that = (TgeneAccountLiquidation) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountLiquidation -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountLiquidation -*/ -public Object createInstance(){ - TgeneAccountLiquidation instance=new TgeneAccountLiquidation(); - instance.setPk(new TgeneAccountLiquidationKey()); - return instance; -} -/**Clona la entidad TgeneAccountLiquidation -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountLiquidation p=(TgeneAccountLiquidation)this.clone(); - p.setPk((TgeneAccountLiquidationKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve uan lista de cargos de liquidacion asociados a una cuenta.*/ - private static final String HQL_ACCO_LIQUIDATION = - " from TgeneAccountLiquidation t " + - " where t.pk.account = :account "+ - " and t.pk.company = :company "; - - /** - * Metodo que entrega una lista de valores a entregar al cliente, en la aperturad e una operacion. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania a la que pertenece la cuenta. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - String pAccount,Integer pCompany) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_ACCO_LIQUIDATION); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidationKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidationKey.java.svn-base deleted file mode 100644 index 9ab8d1c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLiquidationKey.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTLIQUIDATION*/ -@Embeddable -public class TgeneAccountLiquidationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneAccountLiquidationKey(){} -/**Contructor de TgeneAccountLiquidationKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCurrencycode Codigo de moneda -@param pBalancetype Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneAccountLiquidationKey(String pAccount,Integer pCompany,String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,String pCurrencycode,String pBalancetype,String pBalancegroup){ - account=pAccount; - company=pCompany; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - currencycode=pCurrencycode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneAccountLiquidationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountLiquidationKey))return false; - TgeneAccountLiquidationKey that = (TgeneAccountLiquidationKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountLiquidationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHold.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHold.java.svn-base deleted file mode 100644 index ca7d3a3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHold.java.svn-base +++ /dev/null @@ -1,521 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTLOCALHOLD */ -@Entity(name = "TgeneAccountLocalHold") -@Table(name = "TGENEACCOUNTLOCALHOLD") -public class TgeneAccountLocalHold extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccountLocalHold - */ - @EmbeddedId - private TgeneAccountLocalHoldKey pk; - - @Column(name = "ACCOUNTMODULE", nullable = true) - /** - * Codigo de modulo al que pertenece la cuenta depositada. - */ - private String accountmodule; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal - */ - private Integer branchcode; - - @Column(name = "ACCOUNTINGDATE", nullable = true) - /** - * Fecha contable con la cual se crea el registro de cheques locales - */ - private Date accountingdate; - - @Column(name = "OWNACCOUNT", nullable = true) - /** - * Numero de cuenta duenia del cheque - */ - private String ownaccount; - - @Column(name = "CHECKNUMBER", nullable = true) - /** - * Numero de cheque - */ - private Integer checknumber; - - @Column(name = "CHECKVALUE", nullable = true) - /** - * Valor del cheque, si no existe numero de cheque y el deposito se recibe cheque es el valor total de cheques. - */ - private BigDecimal checkvalue; - - @Column(name = "TRANSITROUTE", nullable = true) - /** - * Codigo de ruta transito asociada al cheque - */ - private String transitroute; - - @Column(name = "DATETORELEASE", nullable = true) - /** - * Fecha en la que se tiene que confirma los fondos en la cuenta depositada. - */ - private Date datetorelease; - - @Column(name = "RELEASED", nullable = true) - /** - * Y indica que el cheque esta confirmado. - */ - private String released; - - @Column(name = "RELEASEDDATE", nullable = true) - /** - * Fecha de confirmacion de fondos en la cuenta depositada - */ - private Date releaseddate; - - @Column(name = "RETURNED", nullable = true) - /** - * Indica, si el cheque esta devuelto. - */ - private String returned; - - @Column(name = "RETURNEDDATE", nullable = true) - /** - * Fecha en la que se devolvio el cheque. - */ - private Date returneddate; - - @Column(name = "JOURNALID", nullable = true) - /** - * Numero de mensaje con el que se registra los datos del cheque - */ - private String journalid; - - /** Contructor por defecto */ - public TgeneAccountLocalHold() { - } - - /** - * Contructor de TgeneAccountLocalHold - * - * @param pPk Clave Primaria del entity - */ - public TgeneAccountLocalHold(TgeneAccountLocalHoldKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountLocalHold - */ - public static TgeneAccountLocalHold find(EntityManager pEntityManager, TgeneAccountLocalHoldKey pKey) throws Exception { - TgeneAccountLocalHold obj = pEntityManager.find(TgeneAccountLocalHold.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccountLocalHold - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountLocalHold - */ - public TgeneAccountLocalHoldKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountLocalHold - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountLocalHold - */ - public void setPk(TgeneAccountLocalHoldKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de accountmodule - * - * @return valor de accountmodule - */ - public String getAccountmodule() { - return this.accountmodule; - } - - /** - * Fija el valor de accountmodule - * - * @param pAccountmodule nuevo Valor de accountmodule - */ - public void setAccountmodule(String pAccountmodule) { - this.accountmodule = pAccountmodule; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return this.officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - this.officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return this.branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - this.branchcode = pBranchcode; - } - - /** - * Obtiene el valor de accountingdate - * - * @return valor de accountingdate - */ - public Date getAccountingdate() { - return this.accountingdate; - } - - /** - * Fija el valor de accountingdate - * - * @param pAccountingdate nuevo Valor de accountingdate - */ - public void setAccountingdate(Date pAccountingdate) { - this.accountingdate = pAccountingdate; - } - - /** - * Obtiene el valor de ownaccount - * - * @return valor de ownaccount - */ - public String getOwnaccount() { - return this.ownaccount; - } - - /** - * Fija el valor de ownaccount - * - * @param pOwnaccount nuevo Valor de ownaccount - */ - public void setOwnaccount(String pOwnaccount) { - this.ownaccount = pOwnaccount; - } - - /** - * Obtiene el valor de checknumber - * - * @return valor de checknumber - */ - public Integer getChecknumber() { - return this.checknumber; - } - - /** - * Fija el valor de checknumber - * - * @param pChecknumber nuevo Valor de checknumber - */ - public void setChecknumber(Integer pChecknumber) { - this.checknumber = pChecknumber; - } - - /** - * Obtiene el valor de checkvalue - * - * @return valor de checkvalue - */ - public BigDecimal getCheckvalue() { - return this.checkvalue; - } - - /** - * Fija el valor de checkvalue - * - * @param pCheckvalue nuevo Valor de checkvalue - */ - public void setCheckvalue(BigDecimal pCheckvalue) { - this.checkvalue = pCheckvalue; - } - - /** - * Obtiene el valor de transitroute - * - * @return valor de transitroute - */ - public String getTransitroute() { - return this.transitroute; - } - - /** - * Fija el valor de transitroute - * - * @param pTransitroute nuevo Valor de transitroute - */ - public void setTransitroute(String pTransitroute) { - this.transitroute = pTransitroute; - } - - /** - * Obtiene el valor de datetorelease - * - * @return valor de datetorelease - */ - public Date getDatetorelease() { - return this.datetorelease; - } - - /** - * Fija el valor de datetorelease - * - * @param pDatetorelease nuevo Valor de datetorelease - */ - public void setDatetorelease(Date pDatetorelease) { - this.datetorelease = pDatetorelease; - } - - /** - * Obtiene el valor de released - * - * @return valor de released - */ - public String getReleased() { - return this.released; - } - - /** - * Fija el valor de released - * - * @param pReleased nuevo Valor de released - */ - public void setReleased(String pReleased) { - this.released = pReleased; - } - - /** - * Obtiene el valor de releaseddate - * - * @return valor de releaseddate - */ - public Date getReleaseddate() { - return this.releaseddate; - } - - /** - * Fija el valor de releaseddate - * - * @param pReleaseddate nuevo Valor de releaseddate - */ - public void setReleaseddate(Date pReleaseddate) { - this.releaseddate = pReleaseddate; - } - - /** - * Obtiene el valor de returned - * - * @return valor de returned - */ - public String getReturned() { - return this.returned; - } - - /** - * Fija el valor de returned - * - * @param pReturned nuevo Valor de returned - */ - public void setReturned(String pReturned) { - this.returned = pReturned; - } - - /** - * Obtiene el valor de returneddate - * - * @return valor de returneddate - */ - public Date getReturneddate() { - return this.returneddate; - } - - /** - * Fija el valor de returneddate - * - * @param pReturneddate nuevo Valor de returneddate - */ - public void setReturneddate(Date pReturneddate) { - this.returneddate = pReturneddate; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountLocalHold)) { - return false; - } - TgeneAccountLocalHold that = (TgeneAccountLocalHold) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccountLocalHold - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneAccountLocalHold */ - @Override - public Object createInstance() { - TgeneAccountLocalHold instance = new TgeneAccountLocalHold(); - instance.setPk(new TgeneAccountLocalHoldKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccountLocalHold - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountLocalHold p = (TgeneAccountLocalHold) this.clone(); - p.setPk((TgeneAccountLocalHoldKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** Sentencia que entrega los datos de un registro de TgeneAccountLocalHold, dado un numero de mensaje. */ - private static final String JPQL_LOCAL_HOLD = "from TgeneAccountLocalHold t " + " where t.journalid = :journalid "; - - /** - * Metodo que entrega datos de TgeneAccountLocalHold dado un numero de mensaje. - * - * @param pEntityManager Session de la base de datos. - * @param pJournalid Numero de mensaje a obtener TgeneAccountLocalHold. - * @return TgeneAccountLocalHold - * @throws Exception - */ - public static TgeneAccountLocalHold findByJournalId(EntityManager pEntityManager, String pJournalid) throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccountLocalHold.JPQL_LOCAL_HOLD); - qry.setParameter("journalid", pJournalid); - try { - return (TgeneAccountLocalHold) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHoldKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHoldKey.java.svn-base deleted file mode 100644 index 8a78100..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountLocalHoldKey.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTLOCALHOLD*/ -@Embeddable -public class TgeneAccountLocalHoldKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Y, Indica que el registro se encuentra en una particion vigente, N el registro no esta en la particion vigente. -*/ -private String partitiondb; - -@Column(name="REALDATE", nullable=true, insertable=false) - -/** -* Fecha real de carga de registro -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TgeneAccountLocalHoldKey(){} -/**Contructor de TgeneAccountLocalHoldKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pPartitiondb Y, Indica que el registro se encuentra en una particion vigente, N el registro no esta en la particion vigente. -@param pRealdate Fecha real de carga de registro -*/ -public TgeneAccountLocalHoldKey(String pAccount,Integer pCompany,String pPartitiondb,Timestamp pRealdate){ - account=pAccount; - company=pCompany; - partitiondb=pPartitiondb; - realdate=pRealdate; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TgeneAccountLocalHoldKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountLocalHoldKey))return false; - TgeneAccountLocalHoldKey that = (TgeneAccountLocalHoldKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountLocalHoldKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumber.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumber.java.svn-base deleted file mode 100644 index cb3fdbe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumber.java.svn-base +++ /dev/null @@ -1,213 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.common.exception.CommonException; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTNUMBER*/ -@Entity(name="TgeneAccountNumber") -@Table(name="TGENEACCOUNTNUMBER") -public class TgeneAccountNumber extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountNumber -*/ -@EmbeddedId -private TgeneAccountNumberKey pk; -@Column(name="PRODUCTCODE", nullable=true) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="CURRENCYCODE", nullable=true) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="ACCOUNTNUMBER", nullable=false) - -/** -* Consecutivo de cuenta -*/ -private String accountnumber; - -/**Contructor por defecto*/ -public TgeneAccountNumber(){ -} -/**Contructor de TgeneAccountNumber -@param pPk Clave Primaria del entity -@param pAccountnumber Consecutivo de cuenta -*/ -public TgeneAccountNumber(TgeneAccountNumberKey pPk,String pAccountnumber){ - this(); - pk=pPk; - accountnumber=pAccountnumber; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountNumber -*/ -public static TgeneAccountNumber find(EntityManager pEntityManager,TgeneAccountNumberKey pKey) throws Exception{ - TgeneAccountNumber obj = pEntityManager.find(TgeneAccountNumber.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountNumber -@return El objeto que referencia a la Clave primaria de TgeneAccountNumber -*/ -public TgeneAccountNumberKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountNumber -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountNumber -*/ -public void setPk(TgeneAccountNumberKey pPk){ - pk=pPk; -} -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de accountnumber -@return valor de accountnumber*/ -public String getAccountnumber(){ - return accountnumber; -} -/**Fija el valor de accountnumber -@param pAccountnumber nuevo Valor de accountnumber*/ -public void setAccountnumber(String pAccountnumber){ - accountnumber=pAccountnumber; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountNumber))return false; - TgeneAccountNumber that = (TgeneAccountNumber) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountNumber -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountNumber -*/ -public Object createInstance(){ - TgeneAccountNumber instance=new TgeneAccountNumber(); - instance.setPk(new TgeneAccountNumberKey()); - return instance; -} -/**Clona la entidad TgeneAccountNumber -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountNumber p=(TgeneAccountNumber)this.clone(); - p.setPk((TgeneAccountNumberKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /**Sentencia que obtiene un registro de TgeneAccountNumber con la secuencia de numeros de cuenta.*/ - private static final String HQL = "from com.fp.persistence.pgeneral.acco.TgeneAccountNumber t "+ - " where t.pk.modulecode = :modulecode "+ - " and coalesce(productcode,:productcode) = :productcode "+ - " and coalesce(currencycode,:currencycode) = :currencycode "; - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pModule Codigo de modulo - * @param pProduct Codigo de producto - * @param pCurrency Codigo de moneda - * @return TgeneAccountNumber - */ - public static TgeneAccountNumber findWithhold(EntityManager pEntityManager,String pModule, - String pProduct,String pCurrency) throws Exception{ - TgeneAccountNumber tgeneAccountNumber = null; - Query qry = pEntityManager.createQuery(HQL); - qry.setParameter("modulecode", pModule); - qry.setParameter("productcode", pProduct); - qry.setParameter("currencycode", pCurrency); - qry.setLockMode(LockModeType.PESSIMISTIC_READ); - tgeneAccountNumber = (TgeneAccountNumber)qry.getSingleResult(); - if(tgeneAccountNumber == null){ - throw new CommonException("CORE-0025","SECUENCIA DE CUENTA NO DEFINIDA EN TGENEACCOUNTNUMBER MODULO: {}",pModule); - } - return tgeneAccountNumber; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumberKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumberKey.java.svn-base deleted file mode 100644 index 46d628b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountNumberKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTNUMBER*/ -@Embeddable -public class TgeneAccountNumberKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="ACCOUNTSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia -*/ -private String accountsequence; - -/**Contructor por defecto*/ -public TgeneAccountNumberKey(){} -/**Contructor de TgeneAccountNumberKey -@param pModulecode Codigo de modulo -@param pAccountsequence Secuencia -*/ -public TgeneAccountNumberKey(String pModulecode,String pAccountsequence){ - modulecode=pModulecode; - accountsequence=pAccountsequence; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de accountsequence -@return valor de accountsequence*/ -public String getAccountsequence(){ - return accountsequence; -} -/**Fija el valor de accountsequence -@param pAccountsequence nuevo Valor de accountsequence*/ -public void setAccountsequence(String pAccountsequence){ - accountsequence=pAccountsequence; -} - -/**Implementacin de la comparacin de TgeneAccountNumberKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountNumberKey))return false; - TgeneAccountNumberKey that = (TgeneAccountNumberKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getAccountsequence() == null || that.getAccountsequence() == null){ - return false; - } - if (! this.getAccountsequence().equals(that.getAccountsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountNumberKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getAccountsequence() == null ? 0 : this.getAccountsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayable.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayable.java.svn-base deleted file mode 100644 index fd706a8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayable.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTPAYABLE */ -@Entity(name = "TgeneAccountPayable") -@Table(name = "TGENEACCOUNTPAYABLE") -public class TgeneAccountPayable extends com.fp.dto.AbstractDataBalanceTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccountPayable - */ - @EmbeddedId - private TgeneAccountPayableKey pk; - - @Column(name = "BALANCE", nullable = true) - /** - * Saldo de la cuenta por pagar. - */ - private BigDecimal balance; - - /** Contructor por defecto */ - public TgeneAccountPayable() { - } - - /** - * Contructor de TgeneAccountPayable - * - * @param pPk Clave Primaria del entity - */ - public TgeneAccountPayable(TgeneAccountPayableKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountPayable - */ - public static TgeneAccountPayable find(EntityManager pEntityManager, TgeneAccountPayableKey pKey) throws Exception { - TgeneAccountPayable obj = pEntityManager.find(TgeneAccountPayable.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccountPayable - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountPayable - */ - public TgeneAccountPayableKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountPayable - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountPayable - */ - public void setPk(TgeneAccountPayableKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de balance - * - * @return valor de balance - */ - public BigDecimal getBalance() { - return this.balance; - } - - /** - * Fija el valor de balance - * - * @param pBalance nuevo Valor de balance - */ - public void setBalance(BigDecimal pBalance) { - this.balance = pBalance; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountPayable)) { - return false; - } - TgeneAccountPayable that = (TgeneAccountPayable) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccountPayable - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneAccountPayable */ - @Override - public Object createInstance() { - TgeneAccountPayable instance = new TgeneAccountPayable(); - instance.setPk(new TgeneAccountPayableKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccountPayable - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountPayable p = (TgeneAccountPayable) this.clone(); - p.setPk((TgeneAccountPayableKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** Sentencia que devuelve saldos de cuentas por pagar. */ - private static final String JPQL_PAYABLE = "from TgeneAccountPayable t " + " where t.pk.account = :account " + " and t.pk.company = :company "; - - /** - * Entrega un registro de saldos de cuentas por pagar. - * - * @param pEntityManager Session de la base de datos. - * @param pAccount Numero de cuenta. - * @param pCompany Codigo de compania a la que pertenece la cuenta. - * @return TgeneAccountPayable - * @throws Exception - */ - public static TgeneAccountPayable findByAccountNumber(EntityManager pEntityManager, String pAccount, Integer pCompany) throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccountPayable.JPQL_PAYABLE); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - try { - return (TgeneAccountPayable) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayableKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayableKey.java.svn-base deleted file mode 100644 index 50b3689..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountPayableKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTPAYABLE*/ -@Embeddable -public class TgeneAccountPayableKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta por pagar. -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertenece la cuenta. -*/ -private Integer company; - -/**Contructor por defecto*/ -public TgeneAccountPayableKey(){} -/**Contructor de TgeneAccountPayableKey -@param pAccount Numero de cuenta por pagar. -@param pCompany Codigo de compania a la que pertenece la cuenta. -*/ -public TgeneAccountPayableKey(String pAccount,Integer pCompany){ - account=pAccount; - company=pCompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacin de la comparacin de TgeneAccountPayableKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountPayableKey))return false; - TgeneAccountPayableKey that = (TgeneAccountPayableKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountPayableKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHold.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHold.java.svn-base deleted file mode 100644 index 78d1328..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHold.java.svn-base +++ /dev/null @@ -1,376 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTREMITTANCEHOLD*/ -@Entity(name="TgeneAccountRemittanceHold") -@Table(name="TGENEACCOUNTREMITTANCEHOLD") -public class TgeneAccountRemittanceHold extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountRemittanceHold -*/ -@EmbeddedId -private TgeneAccountRemittanceHoldKey pk; -@Column(name="REMITTANCENUMBER", nullable=true) - -/** -* Numero de carta remesa -*/ -private String remittancenumber; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="ACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable con la cual se crea el registro de cheques locales -*/ -private Date accountingdate; - -@Column(name="OWNACCOUNT", nullable=true) - -/** -* Numero de cuenta duenia del cheque -*/ -private String ownaccount; - -@Column(name="CHECKNUMBER", nullable=true) - -/** -* Numero de cheque -*/ -private Integer checknumber; - -@Column(name="CHECKVALUE", nullable=true) - -/** -* Valor del cheque, si no existe numero de cheque y el deposito se recibe cheque es el valor total de cheques. -*/ -private BigDecimal checkvalue; - -@Column(name="TRANSITROUTE", nullable=true) - -/** -* Codigo de ruta transito asociada al cheque -*/ -private String transitroute; - -@Column(name="DATETORELEASE", nullable=true) - -/** -* Fecha en la que se tiene que confirma los fondos en la cuenta depositada. -*/ -private Date datetorelease; - -@Column(name="RELEASE", nullable=true) - -/** -* Y indica que el cheque esta confirmado. -*/ -private String release; - -@Column(name="RELEASEDATE", nullable=true) - -/** -* Fecha de confirmacion de fondos en la cuenta depositada -*/ -private Date releasedate; - -@Column(name="RETURNED", nullable=true) - -/** -* Indica, si el cheque esta devuelto. -*/ -private String returned; - -@Column(name="RETURNEDDATE", nullable=true) - -/** -* Fecha en la que se devolvio el cheque. -*/ -private Date returneddate; - -@Column(name="JOURNALID", nullable=true) - -/** -* Numero de mensaje con el que se registra los datos del cheque -*/ -private String journalid; - -/**Contructor por defecto*/ -public TgeneAccountRemittanceHold(){ -} -/**Contructor de TgeneAccountRemittanceHold -@param pPk Clave Primaria del entity -*/ -public TgeneAccountRemittanceHold(TgeneAccountRemittanceHoldKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountRemittanceHold -*/ -public static TgeneAccountRemittanceHold find(EntityManager pEntityManager,TgeneAccountRemittanceHoldKey pKey) throws Exception{ - TgeneAccountRemittanceHold obj = pEntityManager.find(TgeneAccountRemittanceHold.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountRemittanceHold -@return El objeto que referencia a la Clave primaria de TgeneAccountRemittanceHold -*/ -public TgeneAccountRemittanceHoldKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountRemittanceHold -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountRemittanceHold -*/ -public void setPk(TgeneAccountRemittanceHoldKey pPk){ - pk=pPk; -} -/**Obtiene el valor de remittancenumber -@return valor de remittancenumber*/ -public String getRemittancenumber(){ - return remittancenumber; -} -/**Fija el valor de remittancenumber -@param pRemittancenumber nuevo Valor de remittancenumber*/ -public void setRemittancenumber(String pRemittancenumber){ - remittancenumber=pRemittancenumber; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Date getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Date pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de ownaccount -@return valor de ownaccount*/ -public String getOwnaccount(){ - return ownaccount; -} -/**Fija el valor de ownaccount -@param pOwnaccount nuevo Valor de ownaccount*/ -public void setOwnaccount(String pOwnaccount){ - ownaccount=pOwnaccount; -} - -/**Obtiene el valor de checknumber -@return valor de checknumber*/ -public Integer getChecknumber(){ - return checknumber; -} -/**Fija el valor de checknumber -@param pChecknumber nuevo Valor de checknumber*/ -public void setChecknumber(Integer pChecknumber){ - checknumber=pChecknumber; -} - -/**Obtiene el valor de checkvalue -@return valor de checkvalue*/ -public BigDecimal getCheckvalue(){ - return checkvalue; -} -/**Fija el valor de checkvalue -@param pCheckvalue nuevo Valor de checkvalue*/ -public void setCheckvalue(BigDecimal pCheckvalue){ - checkvalue=pCheckvalue; -} - -/**Obtiene el valor de transitroute -@return valor de transitroute*/ -public String getTransitroute(){ - return transitroute; -} -/**Fija el valor de transitroute -@param pTransitroute nuevo Valor de transitroute*/ -public void setTransitroute(String pTransitroute){ - transitroute=pTransitroute; -} - -/**Obtiene el valor de datetorelease -@return valor de datetorelease*/ -public Date getDatetorelease(){ - return datetorelease; -} -/**Fija el valor de datetorelease -@param pDatetorelease nuevo Valor de datetorelease*/ -public void setDatetorelease(Date pDatetorelease){ - datetorelease=pDatetorelease; -} - -/**Obtiene el valor de release -@return valor de release*/ -public String getRelease(){ - return release; -} -/**Fija el valor de release -@param pRelease nuevo Valor de release*/ -public void setRelease(String pRelease){ - release=pRelease; -} - -/**Obtiene el valor de releasedate -@return valor de releasedate*/ -public Date getReleasedate(){ - return releasedate; -} -/**Fija el valor de releasedate -@param pReleasedate nuevo Valor de releasedate*/ -public void setReleasedate(Date pReleasedate){ - releasedate=pReleasedate; -} - -/**Obtiene el valor de returned -@return valor de returned*/ -public String getReturned(){ - return returned; -} -/**Fija el valor de returned -@param pReturned nuevo Valor de returned*/ -public void setReturned(String pReturned){ - returned=pReturned; -} - -/**Obtiene el valor de returneddate -@return valor de returneddate*/ -public Date getReturneddate(){ - return returneddate; -} -/**Fija el valor de returneddate -@param pReturneddate nuevo Valor de returneddate*/ -public void setReturneddate(Date pReturneddate){ - returneddate=pReturneddate; -} - -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountRemittanceHold))return false; - TgeneAccountRemittanceHold that = (TgeneAccountRemittanceHold) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountRemittanceHold -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountRemittanceHold -*/ -public Object createInstance(){ - TgeneAccountRemittanceHold instance=new TgeneAccountRemittanceHold(); - instance.setPk(new TgeneAccountRemittanceHoldKey()); - return instance; -} -/**Clona la entidad TgeneAccountRemittanceHold -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountRemittanceHold p=(TgeneAccountRemittanceHold)this.clone(); - p.setPk((TgeneAccountRemittanceHoldKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHoldKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHoldKey.java.svn-base deleted file mode 100644 index 107ec07..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountRemittanceHoldKey.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTREMITTANCEHOLD*/ -@Embeddable -public class TgeneAccountRemittanceHoldKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Y, Indica que el registro se encuentra en una particion vigente, N el registro no esta en la particion vigente. -*/ -private String partitiondb; - -@Column(name="REALDATE", nullable=true, insertable=false) - -/** -* Fecha real de carga de registro -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TgeneAccountRemittanceHoldKey(){} -/**Contructor de TgeneAccountRemittanceHoldKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pPartitiondb Y, Indica que el registro se encuentra en una particion vigente, N el registro no esta en la particion vigente. -@param pRealdate Fecha real de carga de registro -*/ -public TgeneAccountRemittanceHoldKey(String pAccount,Integer pCompany,String pPartitiondb,Timestamp pRealdate){ - account=pAccount; - company=pCompany; - partitiondb=pPartitiondb; - realdate=pRealdate; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TgeneAccountRemittanceHoldKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountRemittanceHoldKey))return false; - TgeneAccountRemittanceHoldKey that = (TgeneAccountRemittanceHoldKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountRemittanceHoldKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequence.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequence.java.svn-base deleted file mode 100644 index cb7293e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequence.java.svn-base +++ /dev/null @@ -1,368 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.exception.CommonException; -import com.fp.dto.hb.HibernateBean; -import com.fp.general.exception.GeneralException; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTSEQUENCE */ -@Entity(name = "TgeneAccountSequence") -@Table(name = "TGENEACCOUNTSEQUENCE") -public class TgeneAccountSequence extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccountSequence - */ - @EmbeddedId - private TgeneAccountSequenceKey pk; - - @Column(name = "PRODUCTCODE", nullable = true) - /** - * Codigo de producto - */ - private String productcode; - - @Column(name = "SUBPRODUCTCODE", nullable = true) - /** - * Codigo de subproducto - */ - private String subproductcode; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal - */ - private Integer branchcode; - - @Column(name = "COMPANYCODE", nullable = true) - /** - * Codigo de compania al que pertenece la oficina - */ - private Integer companycode; - - @Column(name = "SEQUENTIALNUMBER", nullable = false) - /** - * Consecutivo de cuenta - */ - private String sequentialnumber; - - /** Contructor por defecto */ - public TgeneAccountSequence() { - } - - /** - * Contructor de TgeneAccountSequence - * - * @param pPk Clave Primaria del entity - * @param pSequentialnumber Consecutivo de cuenta - */ - public TgeneAccountSequence(TgeneAccountSequenceKey pPk, String pSequentialnumber) { - this(); - this.pk = pPk; - this.sequentialnumber = pSequentialnumber; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountSequence - */ - public static TgeneAccountSequence find(EntityManager pEntityManager, TgeneAccountSequenceKey pKey) throws Exception { - TgeneAccountSequence obj = pEntityManager.find(TgeneAccountSequence.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccountSequence - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountSequence - */ - public TgeneAccountSequenceKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountSequence - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountSequence - */ - public void setPk(TgeneAccountSequenceKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de productcode - * - * @return valor de productcode - */ - public String getProductcode() { - return this.productcode; - } - - /** - * Fija el valor de productcode - * - * @param pProductcode nuevo Valor de productcode - */ - public void setProductcode(String pProductcode) { - this.productcode = pProductcode; - } - - /** - * Obtiene el valor de subproductcode - * - * @return valor de subproductcode - */ - public String getSubproductcode() { - return this.subproductcode; - } - - /** - * Fija el valor de subproductcode - * - * @param pSubproductcode nuevo Valor de subproductcode - */ - public void setSubproductcode(String pSubproductcode) { - this.subproductcode = pSubproductcode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return this.officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - this.officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return this.branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - this.branchcode = pBranchcode; - } - - /** - * Obtiene el valor de companycode - * - * @return valor de companycode - */ - public Integer getCompanycode() { - return this.companycode; - } - - /** - * Fija el valor de companycode - * - * @param pCompanycode nuevo Valor de companycode - */ - public void setCompanycode(Integer pCompanycode) { - this.companycode = pCompanycode; - } - - /** - * Obtiene el valor de sequentialnumber - * - * @return valor de sequentialnumber - */ - public String getSequentialnumber() { - return this.sequentialnumber; - } - - /** - * Fija el valor de sequentialnumber - * - * @param pSequentialnumber nuevo Valor de sequentialnumber - */ - public void setSequentialnumber(String pSequentialnumber) { - this.sequentialnumber = pSequentialnumber; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountSequence)) { - return false; - } - TgeneAccountSequence that = (TgeneAccountSequence) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneAccountSequence - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneAccountSequence */ - @Override - public Object createInstance() { - TgeneAccountSequence instance = new TgeneAccountSequence(); - instance.setPk(new TgeneAccountSequenceKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccountSequence - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountSequence p = (TgeneAccountSequence) this.clone(); - p.setPk((TgeneAccountSequenceKey) this.pk.cloneMe()); - return p; - } - - - // METODOS MANUALES - - /** Sentencia que obtiene un registro de TgeneAccountSequence con la secuencia de numeros de cuenta. */ - private static final String HQL = "from TgeneAccountSequence t " + " where t.pk.modulecode = :modulecode " - + " and coalesce(productcode,:productcode) = :productcode " + " and coalesce(subproductcode,:subproductcode) = :subproductcode " - + " and coalesce(officecode,:officecode) = :officecode " + " and coalesce(branchcode,:branchcode) = :branchcode " - + " and coalesce(companycode,:companycode) = :companycode "; - - /** Sentencia que obtiene la cuenta de secuencias en TgeneAccountSequence por modulo. */ - private static final String HQL_SEQ = "select count(t.pk.modulecode) " + " from TgeneAccountSequence t " + " where t.pk.modulecode = :modulecode "; - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pModule Codigo de modulo - * @param pProduct Codigo de producto - * @param pSubproduct Codigo de sub producto - * @param pBranchcode Codigo de sucursal - * @param pOfficecode Codigo de oficina - * @param pCompany Codigo de compania - * @return TgeneAccountSequence - */ - public static TgeneAccountSequence findWithhold(EntityManager pEntityManager, String pModule, String pProduct, String pSubproduct, - Integer pBranch, Integer pOffice, Integer pCompany) throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccountSequence.HQL); - qry.setParameter("modulecode", pModule); - qry.setParameter("productcode", pProduct); - qry.setParameter("subproductcode", pSubproduct); - qry.setParameter("branchcode", pBranch); - qry.setParameter("officecode", pOffice); - qry.setParameter("companycode", pCompany); - qry.setLockMode(LockModeType.PESSIMISTIC_READ); - try { - return (TgeneAccountSequence) qry.getSingleResult(); - } catch (NoResultException e) { - throw new CommonException("CORE-0025", "SECUENCIA DE CUENTA NO DEFINIDA EN TGENEACCOUNTSEQUENCE MODULO: {0}", pModule); - } - } - - /** - * Metodo que entrega la cuenta de secuencias en TgeneAccountSequence por modulo. Devuelve '0' si no hay ningun registro - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pModule Codigo de modulo - * @return Numero de secuencias por modulo - */ - public static String getAmountSequences(EntityManager pEntityManager, String pModule) throws Exception { - Query qry = pEntityManager.createQuery(TgeneAccountSequence.HQL_SEQ); - qry.setParameter("modulecode", pModule); - try { - return qry.getSingleResult().toString(); - } catch (NoResultException e) { - throw new GeneralException("CORE-0025", "SECUENCIA DE CUENTA NO DEFINIDA EN TGENEACCOUNTSEQUENCE MODULO: {}", pModule); - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequenceKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequenceKey.java.svn-base deleted file mode 100644 index 88d49fe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountSequenceKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTSEQUENCE*/ -@Embeddable -public class TgeneAccountSequenceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="ACCOUNTSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia -*/ -private String accountsequence; - -/**Contructor por defecto*/ -public TgeneAccountSequenceKey(){} -/**Contructor de TgeneAccountSequenceKey -@param pModulecode Codigo de modulo -@param pAccountsequence Secuencia -*/ -public TgeneAccountSequenceKey(String pModulecode,String pAccountsequence){ - modulecode=pModulecode; - accountsequence=pAccountsequence; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de accountsequence -@return valor de accountsequence*/ -public String getAccountsequence(){ - return accountsequence; -} -/**Fija el valor de accountsequence -@param pAccountsequence nuevo Valor de accountsequence*/ -public void setAccountsequence(String pAccountsequence){ - accountsequence=pAccountsequence; -} - -/**Implementacin de la comparacin de TgeneAccountSequenceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountSequenceKey))return false; - TgeneAccountSequenceKey that = (TgeneAccountSequenceKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getAccountsequence() == null || that.getAccountsequence() == null){ - return false; - } - if (! this.getAccountsequence().equals(that.getAccountsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountSequenceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getAccountsequence() == null ? 0 : this.getAccountsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatus.java.svn-base deleted file mode 100644 index 32e35b0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatus.java.svn-base +++ /dev/null @@ -1,181 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTSTATUS*/ -@Entity(name="TgeneAccountStatus") -@Table(name="TGENEACCOUNTSTATUS") -public class TgeneAccountStatus extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountStatus -*/ -@EmbeddedId -private TgeneAccountStatusKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="ISACCOUNTSTATUS", nullable=true) - -/** -* Indica si es un estatus de cuenta, en vista un estatus es de un sobregiro pero de una cuenta -*/ -private String isaccountstatus; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del estatus de la cuenta -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneAccountStatus(){ -} -/**Contructor de TgeneAccountStatus -@param pPk Clave Primaria del entity -@param pDescription Descripcion del estatus de la cuenta -*/ -public TgeneAccountStatus(TgeneAccountStatusKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountStatus -*/ -public static TgeneAccountStatus find(EntityManager pEntityManager,TgeneAccountStatusKey pKey) throws Exception{ - TgeneAccountStatus obj = pEntityManager.find(TgeneAccountStatus.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountStatus -@return El objeto que referencia a la Clave primaria de TgeneAccountStatus -*/ -public TgeneAccountStatusKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountStatus -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountStatus -*/ -public void setPk(TgeneAccountStatusKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de isaccountstatus -@return valor de isaccountstatus*/ -public String getIsaccountstatus(){ - return isaccountstatus; -} -/**Fija el valor de isaccountstatus -@param pIsaccountstatus nuevo Valor de isaccountstatus*/ -public void setIsaccountstatus(String pIsaccountstatus){ - isaccountstatus=pIsaccountstatus; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountStatus))return false; - TgeneAccountStatus that = (TgeneAccountStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountStatus -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountStatus -*/ -public Object createInstance(){ - TgeneAccountStatus instance=new TgeneAccountStatus(); - instance.setPk(new TgeneAccountStatusKey()); - return instance; -} -/**Clona la entidad TgeneAccountStatus -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountStatus p=(TgeneAccountStatus)this.clone(); - p.setPk((TgeneAccountStatusKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatusKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatusKey.java.svn-base deleted file mode 100644 index a7a709d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneAccountStatusKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTSTATUS*/ -@Embeddable -public class TgeneAccountStatusKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -/**Contructor por defecto*/ -public TgeneAccountStatusKey(){} -/**Contructor de TgeneAccountStatusKey -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de cuenta -*/ -public TgeneAccountStatusKey(String pModulecode,String pStatuscode){ - modulecode=pModulecode; - statuscode=pStatuscode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Implementacin de la comparacin de TgeneAccountStatusKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountStatusKey))return false; - TgeneAccountStatusKey that = (TgeneAccountStatusKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountStatusKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccount.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccount.java.svn-base deleted file mode 100644 index dd72943..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccount.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBASEACCOUNT*/ -@Entity(name="TgeneBaseAccount") -@Table(name="TGENEBASEACCOUNT") -public class TgeneBaseAccount extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBaseAccount -*/ -@EmbeddedId -private TgeneBaseAccountKey pk; -@Column(name="LOCKDB", nullable=true) - -/** -* Marca utilizada en el control de actualizacion de saldos de cuentas -*/ -private String lockdb; - -/**Contructor por defecto*/ -public TgeneBaseAccount(){ -} -/**Contructor de TgeneBaseAccount -@param pPk Clave Primaria del entity -*/ -public TgeneBaseAccount(TgeneBaseAccountKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBaseAccount -*/ -public static TgeneBaseAccount find(EntityManager pEntityManager,TgeneBaseAccountKey pKey) throws Exception{ - TgeneBaseAccount obj = pEntityManager.find(TgeneBaseAccount.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBaseAccount -@return El objeto que referencia a la Clave primaria de TgeneBaseAccount -*/ -public TgeneBaseAccountKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBaseAccount -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBaseAccount -*/ -public void setPk(TgeneBaseAccountKey pPk){ - pk=pPk; -} -/**Obtiene el valor de lockdb -@return valor de lockdb*/ -public String getLockdb(){ - return lockdb; -} -/**Fija el valor de lockdb -@param pLockdb nuevo Valor de lockdb*/ -public void setLockdb(String pLockdb){ - lockdb=pLockdb; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBaseAccount))return false; - TgeneBaseAccount that = (TgeneBaseAccount) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBaseAccount -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBaseAccount -*/ -public Object createInstance(){ - TgeneBaseAccount instance=new TgeneBaseAccount(); - instance.setPk(new TgeneBaseAccountKey()); - return instance; -} -/**Clona la entidad TgeneBaseAccount -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBaseAccount p=(TgeneBaseAccount)this.clone(); - p.setPk((TgeneBaseAccountKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccountKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccountKey.java.svn-base deleted file mode 100644 index 9b50dc0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneBaseAccountKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBASEACCOUNT*/ -@Embeddable -public class TgeneBaseAccountKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -/**Contructor por defecto*/ -public TgeneBaseAccountKey(){} -/**Contructor de TgeneBaseAccountKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -*/ -public TgeneBaseAccountKey(String pAccount,Integer pCompany){ - account=pAccount; - company=pCompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacin de la comparacin de TgeneBaseAccountKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBaseAccountKey))return false; - TgeneBaseAccountKey that = (TgeneBaseAccountKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBaseAccountKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStruct.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStruct.java.svn-base deleted file mode 100644 index 4ac4755..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStruct.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESEQUSTRUCT*/ -@Entity(name="TgeneSequStruct") -@Table(name="TGENESEQUSTRUCT") -public class TgeneSequStruct extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSequStruct -*/ -@Id -@Column(name="SEQUCODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="SEQUDESCRIPTION", nullable=false) - -/** -* Campo que almacena la descripcion del secuencial de un numero de cuenta -*/ -private String sequdescription; - -/**Contructor por defecto*/ -public TgeneSequStruct(){ -} -/**Contructor de TgeneSequStruct -@param pPk Clave Primaria del entity -@param pSequdescription Campo que almacena la descripcion del secuencial de un numero de cuenta -*/ -public TgeneSequStruct(String pPk,String pSequdescription){ - this(); - pk=pPk; - sequdescription=pSequdescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSequStruct -*/ -public static TgeneSequStruct find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneSequStruct obj = pEntityManager.find(TgeneSequStruct.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSequStruct -@return El objeto que referencia a la Clave primaria de TgeneSequStruct -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSequStruct -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSequStruct -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de sequdescription -@return valor de sequdescription*/ -public String getSequdescription(){ - return sequdescription; -} -/**Fija el valor de sequdescription -@param pSequdescription nuevo Valor de sequdescription*/ -public void setSequdescription(String pSequdescription){ - sequdescription=pSequdescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSequStruct))return false; - TgeneSequStruct that = (TgeneSequStruct) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSequStruct -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSequStruct -*/ -public Object createInstance(){ - TgeneSequStruct instance=new TgeneSequStruct(); - return instance; -} -/**Clona la entidad TgeneSequStruct -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSequStruct p=(TgeneSequStruct)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetail.java.svn-base deleted file mode 100644 index a97435d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetail.java.svn-base +++ /dev/null @@ -1,168 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.LockModeType; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESEQUSTRUCTDETAIL*/ -@Entity(name="TgeneSequStructDetail") -@Table(name="TGENESEQUSTRUCTDETAIL") -public class TgeneSequStructDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneSequStructDetail - */ - @EmbeddedId - private TgeneSequStructDetailKey pk; - @Version - @Column(name="RECORDVERSION", nullable=true) - - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /**Contructor por defecto*/ - public TgeneSequStructDetail(){ - } - /**Contructor de TgeneSequStructDetail - @param pPk Clave Primaria del entity - */ - public TgeneSequStructDetail(TgeneSequStructDetailKey pPk){ - this(); - pk=pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSequStructDetail - */ - public static TgeneSequStructDetail find(EntityManager pEntityManager,TgeneSequStructDetailKey pKey) throws Exception{ - TgeneSequStructDetail obj = pEntityManager.find(TgeneSequStructDetail.class,pKey); - return obj; - } - /**Entrega la Clave primaria de TgeneSequStructDetail - @return El objeto que referencia a la Clave primaria de TgeneSequStructDetail - */ - public TgeneSequStructDetailKey getPk(){ - return pk; - } - /**Fija un nuevo valor a la Clave primaria de TgeneSequStructDetail - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSequStructDetail - */ - public void setPk(TgeneSequStructDetailKey pPk){ - pk=pPk; - } - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion(){ - return recordversion; - } - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; - } - - public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSequStructDetail))return false; - TgeneSequStructDetail that = (TgeneSequStructDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /**Implementacin del metodo hashCode de la la entidad TgeneSequStructDetail - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /**Implementacin toString - */ - public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } - /**Implementacin de la creacin de un bean en blanco TgeneSequStructDetail - */ - public Object createInstance(){ - TgeneSequStructDetail instance=new TgeneSequStructDetail(); - instance.setPk(new TgeneSequStructDetailKey()); - return instance; - } - /**Clona la entidad TgeneSequStructDetail - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException{ - TgeneSequStructDetail p=(TgeneSequStructDetail)this.clone(); - p.setPk((TgeneSequStructDetailKey)this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** - * Sentencia que obtiene la estructura de secuencial para crear un numero de cuenta. - */ - private static final String JPQL = "from TgeneSequStructDetail t " + " where t.pk.sequcode = :sequcode"; - - /** - * Metodo que entrega la estructura de secuencial para un numero de cuenta - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pSequcode Codigo del secuencial - * @return TgeneSequStructDetail - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pSecucode) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSequStructDetail.JPQL); - qry.setParameter("sequcode", pSecucode); - qry.setLockMode(LockModeType.PESSIMISTIC_READ); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetailKey.java.svn-base deleted file mode 100644 index 26d2ee2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequStructDetailKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESEQUSTRUCTDETAIL*/ -@Embeddable -public class TgeneSequStructDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SEQUCODE", nullable=false,updatable=false) - -/** -* Campo que almacena el codigo del secuencial -*/ -private String sequcode; - -@Column(name="STRUCTUREACCOUNTCATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo - EMPRESA, OFICINA, PRODUCTO, ETC. -*/ -private String structureaccountcatalog; - -@Column(name="STRUCTUREACCOUNTCATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo - FIELDSSTRUCTURE -*/ -private String structureaccountcatalogcode; - -/**Contructor por defecto*/ -public TgeneSequStructDetailKey(){} -/**Contructor de TgeneSequStructDetailKey -@param pSequcode Campo que almacena el codigo del secuencial -@param pStructureaccountcatalog Codigo de catalogo - EMPRESA, OFICINA, PRODUCTO, ETC. -@param pStructureaccountcatalogcode Codigo de tabla de catalogo - FIELDSSTRUCTURE -*/ -public TgeneSequStructDetailKey(String pSequcode,String pStructureaccountcatalog,String pStructureaccountcatalogcode){ - sequcode=pSequcode; - structureaccountcatalog=pStructureaccountcatalog; - structureaccountcatalogcode=pStructureaccountcatalogcode; -} -/**Obtiene el valor de sequcode -@return valor de sequcode*/ -public String getSequcode(){ - return sequcode; -} -/**Fija el valor de sequcode -@param pSequcode nuevo Valor de sequcode*/ -public void setSequcode(String pSequcode){ - sequcode=pSequcode; -} - -/**Obtiene el valor de structureaccountcatalog -@return valor de structureaccountcatalog*/ -public String getStructureaccountcatalog(){ - return structureaccountcatalog; -} -/**Fija el valor de structureaccountcatalog -@param pStructureaccountcatalog nuevo Valor de structureaccountcatalog*/ -public void setStructureaccountcatalog(String pStructureaccountcatalog){ - structureaccountcatalog=pStructureaccountcatalog; -} - -/**Obtiene el valor de structureaccountcatalogcode -@return valor de structureaccountcatalogcode*/ -public String getStructureaccountcatalogcode(){ - return structureaccountcatalogcode; -} -/**Fija el valor de structureaccountcatalogcode -@param pStructureaccountcatalogcode nuevo Valor de structureaccountcatalogcode*/ -public void setStructureaccountcatalogcode(String pStructureaccountcatalogcode){ - structureaccountcatalogcode=pStructureaccountcatalogcode; -} - -/**Implementacin de la comparacin de TgeneSequStructDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSequStructDetailKey))return false; - TgeneSequStructDetailKey that = (TgeneSequStructDetailKey) o; - if (this.getSequcode() == null || that.getSequcode() == null){ - return false; - } - if (! this.getSequcode().equals(that.getSequcode())){ - return false; - } - if (this.getStructureaccountcatalog() == null || that.getStructureaccountcatalog() == null){ - return false; - } - if (! this.getStructureaccountcatalog().equals(that.getStructureaccountcatalog())){ - return false; - } - if (this.getStructureaccountcatalogcode() == null || that.getStructureaccountcatalogcode() == null){ - return false; - } - if (! this.getStructureaccountcatalogcode().equals(that.getStructureaccountcatalogcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSequStructDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSequcode() == null ? 0 : this.getSequcode().hashCode()); - result = result * 37 + (this.getStructureaccountcatalog() == null ? 0 : this.getStructureaccountcatalog().hashCode()); - result = result * 37 + (this.getStructureaccountcatalogcode() == null ? 0 : this.getStructureaccountcatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequentialModule.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequentialModule.java.svn-base deleted file mode 100644 index 6c50a75..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSequentialModule.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESEQUENTIALMODULE*/ -@Entity(name="TgeneSequentialModule") -@Table(name="TGENESEQUENTIALMODULE") -public class TgeneSequentialModule extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneSequentialModule - */ - @Id - @Column(name="MODULECODE" ,nullable=false, updatable=false) - private String pk; - @Column(name="SEQUCODE", nullable=true) - - /** - * Campo que almacena el codigo del secuencial de un numero de cuenta - */ - private String sequcode; - - @Version - @Column(name="RECORDVERSION", nullable=true) - - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /**Contructor por defecto*/ - public TgeneSequentialModule(){ - } - /**Contructor de TgeneSequentialModule - @param pPk Clave Primaria del entity - */ - public TgeneSequentialModule(String pPk){ - this(); - pk=pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSequentialModule - */ - public static TgeneSequentialModule find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneSequentialModule obj = pEntityManager.find(TgeneSequentialModule.class,pKey); - return obj; - } - /**Entrega la Clave primaria de TgeneSequentialModule - @return El objeto que referencia a la Clave primaria de TgeneSequentialModule - */ - public String getPk(){ - return pk; - } - /**Fija un nuevo valor a la Clave primaria de TgeneSequentialModule - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSequentialModule - */ - public void setPk(String pPk){ - pk=pPk; - } - /**Obtiene el valor de sequcode - @return valor de sequcode*/ - public String getSequcode(){ - return sequcode; - } - /**Fija el valor de sequcode - @param pSequcode nuevo Valor de sequcode*/ - public void setSequcode(String pSequcode){ - sequcode=pSequcode; - } - - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion(){ - return recordversion; - } - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; - } - - public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSequentialModule))return false; - TgeneSequentialModule that = (TgeneSequentialModule) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /**Implementacin del metodo hashCode de la la entidad TgeneSequentialModule - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /**Implementacin toString - */ - public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } - /**Implementacin de la creacin de un bean en blanco TgeneSequentialModule - */ - public Object createInstance(){ - TgeneSequentialModule instance=new TgeneSequentialModule(); - return instance; - } - /**Clona la entidad TgeneSequentialModule - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException{ - TgeneSequentialModule p=(TgeneSequentialModule)this.clone(); - return p; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCredit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCredit.java.svn-base deleted file mode 100644 index 784f1e7..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCredit.java.svn-base +++ /dev/null @@ -1,302 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDECREDIT*/ -@Entity(name="TgeneSolicitudeCredit") -@Table(name="TGENESOLICITUDECREDIT") -public class TgeneSolicitudeCredit extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeCredit -*/ -@EmbeddedId -private TgeneSolicitudeCreditKey pk; -@Column(name="CASH", nullable=true) - -/** -* Indica que el pago se realiaza en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el pago se realiaza en cheque. -*/ -private String checks; - -@Column(name="CREDIT", nullable=true) - -/** -* Indica que el pago se realiaza con credito a una cuenta. -*/ -private String credit; - -@Column(name="CREDITACCOUNT", nullable=true) - -/** -* Numero de cuenta a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccount; - -@Column(name="CREDITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccountingcode; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* El valor esta expresado en la moneda de la cuenta, del prestamo, plazo fijo etc.. -*/ -private BigDecimal value; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Si el valor se entrega en efectivo o cheque y el benefiniciario esta en las tablas de clientes, en el campo va el codigo de persona asociado. -*/ -private Integer personcode; - -@Column(name="IDBENEFICIARY", nullable=true) - -/** -* Si el beneficiario no esta registrado en la tabla de personas, en el campo va la identificacion del venceficiario. -*/ -private String idbeneficiary; - -@Column(name="BENEFICIARYNAME", nullable=true) - -/** -* Nombre del beneficiario. -*/ -private String beneficiaryname; - -/**Contructor por defecto*/ -public TgeneSolicitudeCredit(){ -} -/**Contructor de TgeneSolicitudeCredit -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeCredit(TgeneSolicitudeCreditKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeCredit -*/ -public static TgeneSolicitudeCredit find(EntityManager pEntityManager,TgeneSolicitudeCreditKey pKey) throws Exception{ - TgeneSolicitudeCredit obj = pEntityManager.find(TgeneSolicitudeCredit.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeCredit -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeCredit -*/ -public TgeneSolicitudeCreditKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeCredit -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeCredit -*/ -public void setPk(TgeneSolicitudeCreditKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de credit -@return valor de credit*/ -public String getCredit(){ - return credit; -} -/**Fija el valor de credit -@param pCredit nuevo Valor de credit*/ -public void setCredit(String pCredit){ - credit=pCredit; -} - -/**Obtiene el valor de creditaccount -@return valor de creditaccount*/ -public String getCreditaccount(){ - return creditaccount; -} -/**Fija el valor de creditaccount -@param pCreditaccount nuevo Valor de creditaccount*/ -public void setCreditaccount(String pCreditaccount){ - creditaccount=pCreditaccount; -} - -/**Obtiene el valor de creditaccountingcode -@return valor de creditaccountingcode*/ -public String getCreditaccountingcode(){ - return creditaccountingcode; -} -/**Fija el valor de creditaccountingcode -@param pCreditaccountingcode nuevo Valor de creditaccountingcode*/ -public void setCreditaccountingcode(String pCreditaccountingcode){ - creditaccountingcode=pCreditaccountingcode; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de idbeneficiary -@return valor de idbeneficiary*/ -public String getIdbeneficiary(){ - return idbeneficiary; -} -/**Fija el valor de idbeneficiary -@param pIdbeneficiary nuevo Valor de idbeneficiary*/ -public void setIdbeneficiary(String pIdbeneficiary){ - idbeneficiary=pIdbeneficiary; -} - -/**Obtiene el valor de beneficiaryname -@return valor de beneficiaryname*/ -public String getBeneficiaryname(){ - return beneficiaryname; -} -/**Fija el valor de beneficiaryname -@param pBeneficiaryname nuevo Valor de beneficiaryname*/ -public void setBeneficiaryname(String pBeneficiaryname){ - beneficiaryname=pBeneficiaryname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeCredit))return false; - TgeneSolicitudeCredit that = (TgeneSolicitudeCredit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeCredit -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeCredit -*/ -public Object createInstance(){ - TgeneSolicitudeCredit instance=new TgeneSolicitudeCredit(); - instance.setPk(new TgeneSolicitudeCreditKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeCredit -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeCredit p=(TgeneSolicitudeCredit)this.clone(); - p.setPk((TgeneSolicitudeCreditKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCreditKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCreditKey.java.svn-base deleted file mode 100644 index 8405151..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeCreditKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDECREDIT*/ -@Embeddable -public class TgeneSolicitudeCreditKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeCreditKey(){} -/**Contructor de TgeneSolicitudeCreditKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pCreditsequence Secuencia del credito. -*/ -public TgeneSolicitudeCreditKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pCreditsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeCreditKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeCreditKey))return false; - TgeneSolicitudeCreditKey that = (TgeneSolicitudeCreditKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeCreditKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCredit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCredit.java.svn-base deleted file mode 100644 index 87acb01..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCredit.java.svn-base +++ /dev/null @@ -1,332 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEFORCREDIT*/ -@Entity(name="TgeneSolicitudeForCredit") -@Table(name="TGENESOLICITUDEFORCREDIT") -public class TgeneSolicitudeForCredit extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeForCredit -*/ -@EmbeddedId -private TgeneSolicitudeForCreditKey pk; -@Column(name="CASH", nullable=true) - -/** -* Indica que el pago se realiaza en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el pago se realiaza en cheque. -*/ -private String checks; - -@Column(name="CREDIT", nullable=true) - -/** -* Indica que el pago se realiaza con credito a una cuenta. -*/ -private String credit; - -@Column(name="CREDITACCOUNT", nullable=true) - -/** -* Numero de cuenta a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccount; - -@Column(name="CREDITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a acreditar cuando el cargo se cobra con debito a la cuenta. -*/ -private String creditaccountingcode; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* El valor esta expresado en la moneda de la cuenta, del prestamo, plazo fijo etc.. -*/ -private BigDecimal value; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Si el valor se entrega en efectivo o cheque y el benefiniciario esta en las tablas de clientes, en el campo va el codigo de persona asociado. -*/ -private Integer personcode; - -@Column(name="IDBENEFICIARY", nullable=true) - -/** -* Si el beneficiario no esta registrado en la tabla de personas, en el campo va la identificacion del venceficiario. -*/ -private String idbeneficiary; - -@Column(name="BENEFICIARYNAME", nullable=true) - -/** -* Nombre del beneficiario. -*/ -private String beneficiaryname; - -/**Contructor por defecto*/ -public TgeneSolicitudeForCredit(){ -} -/**Contructor de TgeneSolicitudeForCredit -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeForCredit(TgeneSolicitudeForCreditKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeForCredit -*/ -public static TgeneSolicitudeForCredit find(EntityManager pEntityManager,TgeneSolicitudeForCreditKey pKey) throws Exception{ - TgeneSolicitudeForCredit obj = pEntityManager.find(TgeneSolicitudeForCredit.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeForCredit -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeForCredit -*/ -public TgeneSolicitudeForCreditKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeForCredit -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeForCredit -*/ -public void setPk(TgeneSolicitudeForCreditKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de credit -@return valor de credit*/ -public String getCredit(){ - return credit; -} -/**Fija el valor de credit -@param pCredit nuevo Valor de credit*/ -public void setCredit(String pCredit){ - credit=pCredit; -} - -/**Obtiene el valor de creditaccount -@return valor de creditaccount*/ -public String getCreditaccount(){ - return creditaccount; -} -/**Fija el valor de creditaccount -@param pCreditaccount nuevo Valor de creditaccount*/ -public void setCreditaccount(String pCreditaccount){ - creditaccount=pCreditaccount; -} - -/**Obtiene el valor de creditaccountingcode -@return valor de creditaccountingcode*/ -public String getCreditaccountingcode(){ - return creditaccountingcode; -} -/**Fija el valor de creditaccountingcode -@param pCreditaccountingcode nuevo Valor de creditaccountingcode*/ -public void setCreditaccountingcode(String pCreditaccountingcode){ - creditaccountingcode=pCreditaccountingcode; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de idbeneficiary -@return valor de idbeneficiary*/ -public String getIdbeneficiary(){ - return idbeneficiary; -} -/**Fija el valor de idbeneficiary -@param pIdbeneficiary nuevo Valor de idbeneficiary*/ -public void setIdbeneficiary(String pIdbeneficiary){ - idbeneficiary=pIdbeneficiary; -} - -/**Obtiene el valor de beneficiaryname -@return valor de beneficiaryname*/ -public String getBeneficiaryname(){ - return beneficiaryname; -} -/**Fija el valor de beneficiaryname -@param pBeneficiaryname nuevo Valor de beneficiaryname*/ -public void setBeneficiaryname(String pBeneficiaryname){ - beneficiaryname=pBeneficiaryname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeForCredit))return false; - TgeneSolicitudeForCredit that = (TgeneSolicitudeForCredit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeForCredit -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeForCredit -*/ -public Object createInstance(){ - TgeneSolicitudeForCredit instance=new TgeneSolicitudeForCredit(); - instance.setPk(new TgeneSolicitudeForCreditKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeForCredit -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeForCredit p=(TgeneSolicitudeForCredit)this.clone(); - p.setPk((TgeneSolicitudeForCreditKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales - /**Sentencia que devuelve uan lista con los valores de cuentas para creditos asociadas a una solicitud.*/ - private static final String HQL_SOLICITUDE_FORCREDIT = - "from TgeneSolicitudeForCredit t " + - " where t.pk.solicitudnumber = :solicitudnumber "+ - " and t.pk.solicitudsequence = :solicitudsequence "+ - " order by t.pk.creditsequence "; - - /** - * Metodo que entrega una lista de valores a acreditar al cliente, en procesos batch. - * @param pSolicitudNumber Numero de solicitud. - * @param pSolicitudSequence Secuencia dentro de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pSolicitudNumber,Integer pSolicitudSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_FORCREDIT); - qry.setParameter("solicitudnumber", pSolicitudNumber); - qry.setParameter("solicitudsequence", pSolicitudSequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCreditKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCreditKey.java.svn-base deleted file mode 100644 index 07dd5c5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForCreditKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEFORCREDIT*/ -@Embeddable -public class TgeneSolicitudeForCreditKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeForCreditKey(){} -/**Contructor de TgeneSolicitudeForCreditKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pCreditsequence Secuencia del credito. -*/ -public TgeneSolicitudeForCreditKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pCreditsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeForCreditKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeForCreditKey))return false; - TgeneSolicitudeForCreditKey that = (TgeneSolicitudeForCreditKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeForCreditKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebit.java.svn-base deleted file mode 100644 index 5061463..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebit.java.svn-base +++ /dev/null @@ -1,225 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEFORDEBIT*/ -@Entity(name="TgeneSolicitudeForDebit") -@Table(name="TGENESOLICITUDEFORDEBIT") -public class TgeneSolicitudeForDebit extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeForDebit -*/ -@EmbeddedId -private TgeneSolicitudeForDebitKey pk; -@Column(name="DEBITACCOUNT", nullable=true) - -/** -* Numero de cuenta a debitar cuando el cargo se cobra con debito a la cuenta. -*/ -private String debitaccount; - -@Column(name="DEBITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable cuando el cargo se cobra con debito a la cuenta. -*/ -private String debitaccountingcode; - -@Column(name="CURRENCY", nullable=true) - -/** -* Codigo de moneda de la cuenta de la operacion. -*/ -private String currency; - -@Column(name="VALUE", nullable=true) - -/** -* Valor en la moneda de la cuenta, la compra venta se hace en funcion a la moneda de la cuenta debito -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneSolicitudeForDebit(){ -} -/**Contructor de TgeneSolicitudeForDebit -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeForDebit(TgeneSolicitudeForDebitKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeForDebit -*/ -public static TgeneSolicitudeForDebit find(EntityManager pEntityManager,TgeneSolicitudeForDebitKey pKey) throws Exception{ - TgeneSolicitudeForDebit obj = pEntityManager.find(TgeneSolicitudeForDebit.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeForDebit -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeForDebit -*/ -public TgeneSolicitudeForDebitKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeForDebit -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeForDebit -*/ -public void setPk(TgeneSolicitudeForDebitKey pPk){ - pk=pPk; -} -/**Obtiene el valor de debitaccount -@return valor de debitaccount*/ -public String getDebitaccount(){ - return debitaccount; -} -/**Fija el valor de debitaccount -@param pDebitaccount nuevo Valor de debitaccount*/ -public void setDebitaccount(String pDebitaccount){ - debitaccount=pDebitaccount; -} - -/**Obtiene el valor de debitaccountingcode -@return valor de debitaccountingcode*/ -public String getDebitaccountingcode(){ - return debitaccountingcode; -} -/**Fija el valor de debitaccountingcode -@param pDebitaccountingcode nuevo Valor de debitaccountingcode*/ -public void setDebitaccountingcode(String pDebitaccountingcode){ - debitaccountingcode=pDebitaccountingcode; -} - -/**Obtiene el valor de currency -@return valor de currency*/ -public String getCurrency(){ - return currency; -} -/**Fija el valor de currency -@param pCurrency nuevo Valor de currency*/ -public void setCurrency(String pCurrency){ - currency=pCurrency; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeForDebit))return false; - TgeneSolicitudeForDebit that = (TgeneSolicitudeForDebit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeForDebit -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeForDebit -*/ -public Object createInstance(){ - TgeneSolicitudeForDebit instance=new TgeneSolicitudeForDebit(); - instance.setPk(new TgeneSolicitudeForDebitKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeForDebit -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeForDebit p=(TgeneSolicitudeForDebit)this.clone(); - p.setPk((TgeneSolicitudeForDebitKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve uan lista con los valores de cuentas para debitos asociadas a una solicitud.*/ - private static final String HQL_SOLICITUDE_FORDEBIT = - "from TgeneSolicitudeForDebit tsd " + - " where tsd.pk.solicitudnumber = :solicitudnumber "+ - " and tsd.pk.solicitudsequence = :solicitudsequence "+ - " order by tsd.pk.debitsequence "; - - /** - * Metodo que entrega una lista de valores a cobrar al cliente, en la aperturad e una operacion. - * @param pSolicitudNumber Numero de solicitud. - * @param pSolicitudSequence Secuencia dentro de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - String pSolicitudNumber,Integer pSolicitudSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_FORDEBIT); - qry.setParameter("solicitudnumber", pSolicitudNumber); - qry.setParameter("solicitudsequence", pSolicitudSequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebitKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebitKey.java.svn-base deleted file mode 100644 index 706afff..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneSolicitudeForDebitKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEFORDEBIT*/ -@Embeddable -public class TgeneSolicitudeForDebitKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="DEBITSEQUENCE", nullable=false,updatable=false) - -/** -* Sequencia de debito. -*/ -private Integer debitsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeForDebitKey(){} -/**Contructor de TgeneSolicitudeForDebitKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pDebitsequence Sequencia de debito. -*/ -public TgeneSolicitudeForDebitKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pDebitsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - debitsequence=pDebitsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de debitsequence -@return valor de debitsequence*/ -public Integer getDebitsequence(){ - return debitsequence; -} -/**Fija el valor de debitsequence -@param pDebitsequence nuevo Valor de debitsequence*/ -public void setDebitsequence(Integer pDebitsequence){ - debitsequence=pDebitsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeForDebitKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeForDebitKey))return false; - TgeneSolicitudeForDebitKey that = (TgeneSolicitudeForDebitKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getDebitsequence() == null || that.getDebitsequence() == null){ - return false; - } - if (! this.getDebitsequence().equals(that.getDebitsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeForDebitKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getDebitsequence() == null ? 0 : this.getDebitsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStat.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStat.java.svn-base deleted file mode 100644 index 02262f5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStat.java.svn-base +++ /dev/null @@ -1,249 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.demandeposit.exception.DemandDepositException; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACCOUNTOPERSTAT */ -@Entity(name = "TgeneTransAccountOperStat") -@Table(name = "TGENETRANSACCOUNTOPERSTAT") -public class TgeneTransAccountOperStat extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTransAccountOperStat - */ - @EmbeddedId - private TgeneTransAccountOperStatKey pk; - @Column(name = "EVALUATETRUE", nullable = true) - /** - * Y, Indica que el estatus actual del ceque tiene que estar en esta condicion, N, el estatus actual del cheque no tiene que estar en la condicion del registro - */ - private String evaluatetrue; - - @Column(name = "VALIDATEDEBIT", nullable = true) - /** - * Y, Indica que valida cuenta debito - */ - private String validatedebit; - - @Column(name = "VALIDATECREDIT", nullable = true) - /** - * Y, Indica que valida la cuenta credito - */ - private String validatecredit; - - /** Contructor por defecto */ - public TgeneTransAccountOperStat() { - } - /** - * Contructor de TgeneTransAccountOperStat - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransAccountOperStat(TgeneTransAccountOperStatKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransAccountOperStat - */ - public static TgeneTransAccountOperStat find(EntityManager pEntityManager, TgeneTransAccountOperStatKey pKey) - throws Exception { - TgeneTransAccountOperStat obj = pEntityManager.find(TgeneTransAccountOperStat.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTransAccountOperStat - * - * @return El objeto que referencia a la Clave primaria de TgeneTransAccountOperStat - */ - public TgeneTransAccountOperStatKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransAccountOperStat - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransAccountOperStat - */ - public void setPk(TgeneTransAccountOperStatKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de evaluatetrue - * - * @return valor de evaluatetrue - */ - public String getEvaluatetrue() { - return evaluatetrue; - } - /** - * Fija el valor de evaluatetrue - * - * @param pEvaluatetrue nuevo Valor de evaluatetrue - */ - public void setEvaluatetrue(String pEvaluatetrue) { - evaluatetrue = pEvaluatetrue; - } - - /** - * Obtiene el valor de validatedebit - * - * @return valor de validatedebit - */ - public String getValidatedebit() { - return validatedebit; - } - /** - * Fija el valor de validatedebit - * - * @param pValidatedebit nuevo Valor de validatedebit - */ - public void setValidatedebit(String pValidatedebit) { - validatedebit = pValidatedebit; - } - - /** - * Obtiene el valor de validatecredit - * - * @return valor de validatecredit - */ - public String getValidatecredit() { - return validatecredit; - } - /** - * Fija el valor de validatecredit - * - * @param pValidatecredit nuevo Valor de validatecredit - */ - public void setValidatecredit(String pValidatecredit) { - validatecredit = pValidatecredit; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransAccountOperStat)) - return false; - TgeneTransAccountOperStat that = (TgeneTransAccountOperStat) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransAccountOperStat - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTransAccountOperStat */ - public Object createInstance() { - TgeneTransAccountOperStat instance = new TgeneTransAccountOperStat(); - instance.setPk(new TgeneTransAccountOperStatKey()); - return instance; - } - /** - * Clona la entidad TgeneTransAccountOperStat - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransAccountOperStat p = (TgeneTransAccountOperStat) this.clone(); - p.setPk((TgeneTransAccountOperStatKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve lista de registros de TgeneTransAccountOperStat.*/ - private static final String HQL_TRAN_ACCOUNT_OPER = - " from TgeneTransAccountOperStat t " + - " where t.pk.transactionmodule = :module " + - " and t.pk.transactioncode = :code " + - " and t.pk.transactionversion = :version " ; - - /** - * Metodo que entrega datos de condicion operativa de cuentas por transaccion. - * @param pEntityManager Referencia a la session de la base de datos. - * @param pModule Codigo de modulo. - * @param pTransaction Codigo de transaccion. - * @param pVersion Codigo de version de transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager,String pModule,Integer pTransaction, - Integer pVersion) throws Exception { - List lobj = null; - Query qry = pEntityManager.createQuery(HQL_TRAN_ACCOUNT_OPER); - qry.setParameter("module", pModule); - qry.setParameter("code", pTransaction); - qry.setParameter("version", pVersion); - lobj = qry.getResultList(); - if(lobj.isEmpty()){ - throw new DemandDepositException("CORE-0049","CONDICION OPERATIVA DE CUENTA NO DEFINO EN TGENETRANSACCOUNTOPERSTAT: MODULE: {0} TRAN: {1} VER: {2}", - pModule,pTransaction,pVersion); - } - return lobj; - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStatKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStatKey.java.svn-base deleted file mode 100644 index 6d8ab41..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountOperStatKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACCOUNTOPERSTAT*/ -@Embeddable -public class TgeneTransAccountOperStatKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="OPERATIVCONDITION", nullable=false,updatable=false) - -/** -* Codigo de condicion operativa. -*/ -private String operativcondition; - -/**Contructor por defecto*/ -public TgeneTransAccountOperStatKey(){} -/**Contructor de TgeneTransAccountOperStatKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pOperativcondition Codigo de condicion operativa. -*/ -public TgeneTransAccountOperStatKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pOperativcondition){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - operativcondition=pOperativcondition; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de operativcondition -@return valor de operativcondition*/ -public String getOperativcondition(){ - return operativcondition; -} -/**Fija el valor de operativcondition -@param pOperativcondition nuevo Valor de operativcondition*/ -public void setOperativcondition(String pOperativcondition){ - operativcondition=pOperativcondition; -} - -/**Implementacin de la comparacin de TgeneTransAccountOperStatKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransAccountOperStatKey))return false; - TgeneTransAccountOperStatKey that = (TgeneTransAccountOperStatKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getOperativcondition() == null || that.getOperativcondition() == null){ - return false; - } - if (! this.getOperativcondition().equals(that.getOperativcondition())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransAccountOperStatKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getOperativcondition() == null ? 0 : this.getOperativcondition().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatus.java.svn-base deleted file mode 100644 index fa3e7dd..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatus.java.svn-base +++ /dev/null @@ -1,247 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.demandeposit.exception.DemandDepositException; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACCOUNTSTATUS */ -@Entity(name = "TgeneTransAccountStatus") -@Table(name = "TGENETRANSACCOUNTSTATUS") -public class TgeneTransAccountStatus extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTransAccountStatus - */ - @EmbeddedId - private TgeneTransAccountStatusKey pk; - @Column(name = "EVALUATETRUE", nullable = true) - /** - * Y, Indica que el estatus actual del ceque tiene que estar en esta condicion, N, el estatus actual del cheque no tiene que estar en la condicion del registro - */ - private String evaluatetrue; - - @Column(name = "VALIDATEDEBIT", nullable = true) - /** - * Y, Indica que valida cuenta debito - */ - private String validatedebit; - - @Column(name = "VALIDATECREDIT", nullable = true) - /** - * Y, Indica que valida la cuenta credito - */ - private String validatecredit; - - /** Contructor por defecto */ - public TgeneTransAccountStatus() { - } - /** - * Contructor de TgeneTransAccountStatus - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransAccountStatus(TgeneTransAccountStatusKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransAccountStatus - */ - public static TgeneTransAccountStatus find(EntityManager pEntityManager, TgeneTransAccountStatusKey pKey) - throws Exception { - TgeneTransAccountStatus obj = pEntityManager.find(TgeneTransAccountStatus.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTransAccountStatus - * - * @return El objeto que referencia a la Clave primaria de TgeneTransAccountStatus - */ - public TgeneTransAccountStatusKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransAccountStatus - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransAccountStatus - */ - public void setPk(TgeneTransAccountStatusKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de evaluatetrue - * - * @return valor de evaluatetrue - */ - public String getEvaluatetrue() { - return evaluatetrue; - } - /** - * Fija el valor de evaluatetrue - * - * @param pEvaluatetrue nuevo Valor de evaluatetrue - */ - public void setEvaluatetrue(String pEvaluatetrue) { - evaluatetrue = pEvaluatetrue; - } - - /** - * Obtiene el valor de validatedebit - * - * @return valor de validatedebit - */ - public String getValidatedebit() { - return validatedebit; - } - /** - * Fija el valor de validatedebit - * - * @param pValidatedebit nuevo Valor de validatedebit - */ - public void setValidatedebit(String pValidatedebit) { - validatedebit = pValidatedebit; - } - - /** - * Obtiene el valor de validatecredit - * - * @return valor de validatecredit - */ - public String getValidatecredit() { - return validatecredit; - } - /** - * Fija el valor de validatecredit - * - * @param pValidatecredit nuevo Valor de validatecredit - */ - public void setValidatecredit(String pValidatecredit) { - validatecredit = pValidatecredit; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransAccountStatus)) - return false; - TgeneTransAccountStatus that = (TgeneTransAccountStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransAccountStatus - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTransAccountStatus */ - public Object createInstance() { - TgeneTransAccountStatus instance = new TgeneTransAccountStatus(); - instance.setPk(new TgeneTransAccountStatusKey()); - return instance; - } - /** - * Clona la entidad TgeneTransAccountStatus - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransAccountStatus p = (TgeneTransAccountStatus) this.clone(); - p.setPk((TgeneTransAccountStatusKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve lista de registros de TgeneTransAccountStatus.*/ - private static final String HQL_TRAN_ACCOUNT_STATUS = - " from TgeneTransAccountStatus ttranaccostat " + - " where ttranaccostat.pk.transactionmodule = :transactionmodule " + - " and ttranaccostat.pk.transactioncode = :transactioncode " + - " and ttranaccostat.pk.transactionversion = :transactionversion " ; - - /** - * Metodo que entrega datos de estatus de cuentas por transaccion. - * @param pEntityManager Referencia a la session de la base de datos. - * @param pModule Codigo de modulo. - * @param pTransaction Codigo de transaccion. - * @param pVersion Codigo de version de transaccion. - * @return List - * @throws Exception - */ - @SuppressWarnings(Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager,String pModule,Integer pTransaction, - Integer pVersion) throws Exception { - List status = null; - Query qry = pEntityManager.createQuery(HQL_TRAN_ACCOUNT_STATUS); - qry.setParameter("transactionmodule", pModule); - qry.setParameter("transactioncode", pTransaction); - qry.setParameter("transactionversion", pVersion); - status = qry.getResultList(); - if(status.isEmpty()){ - throw new DemandDepositException("CORE-0043","ESTATUS DE CUENTA NO DEFINO EN TGENETRANSACCOUNTSTATUS: {0} MODULE: {1} TRAN: {2} VER: {2}", - pModule,pTransaction,pVersion); - } - return status; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatusKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatusKey.java.svn-base deleted file mode 100644 index c70a82c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneTransAccountStatusKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACCOUNTSTATUS*/ -@Embeddable -public class TgeneTransAccountStatusKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -/**Contructor por defecto*/ -public TgeneTransAccountStatusKey(){} -/**Contructor de TgeneTransAccountStatusKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pStatuscode Estatus de cuenta -*/ -public TgeneTransAccountStatusKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pStatuscode){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - statuscode=pStatuscode; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Implementacin de la comparacin de TgeneTransAccountStatusKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransAccountStatusKey))return false; - TgeneTransAccountStatusKey that = (TgeneTransAccountStatusKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransAccountStatusKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccount.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccount.java.svn-base deleted file mode 100644 index 53deb90..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccount.java.svn-base +++ /dev/null @@ -1,345 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import java.util.ArrayList; -import java.util.List; -import javax.persistence.Query; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEWARRANTYACCOUNT*/ -@Entity(name = "TgeneWarrantyAccount") -@Table(name = "TGENEWARRANTYACCOUNT") -public class TgeneWarrantyAccount extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneWarrantyAccount - */ - @EmbeddedId - private TgeneWarrantyAccountKey pk; - @Column(name = "SOLICITUDNUMBER", nullable = false) - /** - * Numero de solicitud - */ - private String solicitudnumber; - @Column(name = "SOLICITUDSEQUENCE", nullable = false) - /** - * secuencia interna de solicitud - */ - private Integer solicitudsequence; - @Column(name = "WARRANTYSEQUENCE", nullable = false) - /** - * Secuencia interna de la solicitud de la garantia. - */ - private Integer warrantysequence; - @Column(name = "PERSONCODE", nullable = false) - /** - * Codigo de persona asociada a una garantia existente, o codigo de persona al cual se le asocia una nueva garantia. - */ - private Integer personcode; - @Column(name = "WARRANTYTYPE", nullable = true) - /** - * Codigo de tipo de garantia - */ - private String warrantytype; - @Column(name = "PROPERTYTYPE", nullable = true) - /** - * Tipo de bien, Edficaciones - */ - private String propertytype; - @Column(name = "GUARANTEEVALUE", nullable = true) - /** - * Valor garantizado, una operacion puede estar avalada o garantiza por mas de una garantia. - */ - private BigDecimal guaranteevalue; - - /**Contructor por defecto*/ - public TgeneWarrantyAccount() { - } - - /**Contructor de TgeneWarrantyAccount - @param pPk Clave Primaria del entity - @param pSolicitudnumber Numero de solicitud - @param pSolicitudsequence secuencia interna de solicitud - @param pWarrantysequence Secuencia interna de la solicitud de la garantia. - @param pPersoncode Codigo de persona asociada a una garantia existente, o codigo de persona al cual se le asocia una nueva garantia. - */ - public TgeneWarrantyAccount(TgeneWarrantyAccountKey pPk, String pSolicitudnumber, Integer pSolicitudsequence, Integer pWarrantysequence, Integer pPersoncode) { - this(); - pk = pPk; - solicitudnumber = pSolicitudnumber; - solicitudsequence = pSolicitudsequence; - warrantysequence = pWarrantysequence; - personcode = pPersoncode; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneWarrantyAccount - */ - public static TgeneWarrantyAccount find(EntityManager pEntityManager, TgeneWarrantyAccountKey pKey) throws Exception { - TgeneWarrantyAccount obj = pEntityManager.find(TgeneWarrantyAccount.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TgeneWarrantyAccount - @return El objeto que referencia a la Clave primaria de TgeneWarrantyAccount - */ - public TgeneWarrantyAccountKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TgeneWarrantyAccount - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneWarrantyAccount - */ - public void setPk(TgeneWarrantyAccountKey pPk) { - pk = pPk; - } - - /**Obtiene el valor de solicitudnumber - @return valor de solicitudnumber*/ - public String getSolicitudnumber() { - return solicitudnumber; - } - - /**Fija el valor de solicitudnumber - @param pSolicitudnumber nuevo Valor de solicitudnumber*/ - public void setSolicitudnumber(String pSolicitudnumber) { - solicitudnumber = pSolicitudnumber; - } - - /**Obtiene el valor de solicitudsequence - @return valor de solicitudsequence*/ - public Integer getSolicitudsequence() { - return solicitudsequence; - } - - /**Fija el valor de solicitudsequence - @param pSolicitudsequence nuevo Valor de solicitudsequence*/ - public void setSolicitudsequence(Integer pSolicitudsequence) { - solicitudsequence = pSolicitudsequence; - } - - /**Obtiene el valor de warrantysequence - @return valor de warrantysequence*/ - public Integer getWarrantysequence() { - return warrantysequence; - } - - /**Fija el valor de warrantysequence - @param pWarrantysequence nuevo Valor de warrantysequence*/ - public void setWarrantysequence(Integer pWarrantysequence) { - warrantysequence = pWarrantysequence; - } - - /**Obtiene el valor de personcode - @return valor de personcode*/ - public Integer getPersoncode() { - return personcode; - } - - /**Fija el valor de personcode - @param pPersoncode nuevo Valor de personcode*/ - public void setPersoncode(Integer pPersoncode) { - personcode = pPersoncode; - } - - /**Obtiene el valor de warrantytype - @return valor de warrantytype*/ - public String getWarrantytype() { - return warrantytype; - } - - /**Fija el valor de warrantytype - @param pWarrantytype nuevo Valor de warrantytype*/ - public void setWarrantytype(String pWarrantytype) { - warrantytype = pWarrantytype; - } - - /**Obtiene el valor de propertytype - @return valor de propertytype*/ - public String getPropertytype() { - return propertytype; - } - - /**Fija el valor de propertytype - @param pPropertytype nuevo Valor de propertytype*/ - public void setPropertytype(String pPropertytype) { - propertytype = pPropertytype; - } - - /**Obtiene el valor de guaranteevalue - @return valor de guaranteevalue*/ - public BigDecimal getGuaranteevalue() { - return guaranteevalue; - } - - /**Fija el valor de guaranteevalue - @param pGuaranteevalue nuevo Valor de guaranteevalue*/ - public void setGuaranteevalue(BigDecimal pGuaranteevalue) { - guaranteevalue = pGuaranteevalue; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneWarrantyAccount)) { - return false; - } - TgeneWarrantyAccount that = (TgeneWarrantyAccount) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacin del metodo hashCode de la la entidad TgeneWarrantyAccount - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacin de la creacin de un bean en blanco TgeneWarrantyAccount - */ - public Object createInstance() { - TgeneWarrantyAccount instance = new TgeneWarrantyAccount(); - instance.setPk(new TgeneWarrantyAccountKey()); - return instance; - } - - /**Clona la entidad TgeneWarrantyAccount - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneWarrantyAccount p = (TgeneWarrantyAccount) this.clone(); - p.setPk((TgeneWarrantyAccountKey) this.pk.cloneMe()); - return p; - } -//METODOS MANUALES - /** Sentencia que entrega datos de TgeneWarrantyAccount, par el un numero de garantia. */ - private static final String JPQL_WARR_ACCO = "from TgeneWarrantyAccount gwa where gwa.pk.warraccount= :warraccount" - + " and gwa.pk.company= :companycod and gwa.pk.warrcompany= :companycod "; - - /** - * Metodo que devuelve una lista de TgeneWarrantyAccount dado el numero de cuenta de un prestamo. - * @param pEntityManager Session de la base de datos. - * @param company Codigo de la compania. - * @param warracco Numero de la garantia. - * @return List - * @throws Exception - */ - public static List find(EntityManager pEntityManager, Integer company, String warracco) throws Exception { - List lwarrantAccount = new ArrayList(); - Query qry = pEntityManager.createQuery(TgeneWarrantyAccount.JPQL_WARR_ACCO); - qry.setParameter("companycod", company); - qry.setParameter("warraccount", warracco); - lwarrantAccount = (List) qry.getResultList(); - return lwarrantAccount; - } - /** Sentencia que entrega datos de TgeneWarrantyAccount, dado el numero de la operacion. */ - private static final String JPQL_ACCO_OPERAT = "from TgeneWarrantyAccount gwa where gwa.pk.account= :account" - + " and gwa.pk.company= :companycod and gwa.pk.warrcompany= :companycod "; - - /** - * Metodo que devuelve una lista de TgeneWarrantyAccount dado el numero de cuenta asociado a una garantia - * @param pEntityManager Session de la base de datos. - * @param company Codigo de la compania. - * @param account Numero de la garantia. - * @return List - * @throws Exception - */ - public static List findPerAccount(EntityManager pEntityManager, Integer company, String account) throws Exception { - List lwarrantAccount = new ArrayList(); - Query qry = pEntityManager.createQuery(TgeneWarrantyAccount.JPQL_ACCO_OPERAT); - qry.setParameter("companycod", company); - qry.setParameter("account", account); - lwarrantAccount = (List) qry.getResultList(); - return lwarrantAccount; - } - - /** - * Sentencia que entrega datos de TgeneWarrantyAccount, par el un numero de - * cuenta respaldada por una garantia. - */ - private static final String JPQL_ACCOUNT = " from TgeneWarrantyAccount gwa " + - " where gwa.pk.account= :accountparam " + - " and gwa.pk.company= :companyparam"; - - /** - * - * @param pEntityManager Session de la base de datos. - * @param company Codigo de la compania. - * @param account Numero de la garantia. - * @return List - * @throws Exception - */ - public static List findByAccount( - EntityManager pEntityManager, Integer company, String account) - throws Exception { - List lwarrantAccount = new ArrayList(); - Query qry = pEntityManager - .createQuery(TgeneWarrantyAccount.JPQL_ACCOUNT); - qry.setParameter("companyparam", company); - qry.setParameter("accountparam", account); - lwarrantAccount = (List) qry.getResultList(); - return lwarrantAccount; - } - - - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccountKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccountKey.java.svn-base deleted file mode 100644 index 6f613c2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/acco/.svn/text-base/TgeneWarrantyAccountKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.acco; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEWARRANTYACCOUNT*/ -@Embeddable -public class TgeneWarrantyAccountKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* No de Cuenta de un Prestamo o Linea de Credito -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta del prestamo o linea de credito -*/ -private Integer company; - -@Column(name="WARRACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta asociado a una garantia, si la misma garantia esta avalando mas de una operacion. -*/ -private String warraccount; - -@Column(name="WARRCOMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta de la garantia. -*/ -private Integer warrcompany; - -/**Contructor por defecto*/ -public TgeneWarrantyAccountKey(){} -/**Contructor de TgeneWarrantyAccountKey -@param pAccount No de Cuenta de un Prestamo o Linea de Credito -@param pCompany Codigo de compania a la que pertence la cuenta del prestamo o linea de credito -@param pWarraccount Numero de cuenta asociado a una garantia, si la misma garantia esta avalando mas de una operacion. -@param pWarrcompany Codigo de compania a la que pertence la cuenta de la garantia. -*/ -public TgeneWarrantyAccountKey(String pAccount,Integer pCompany,String pWarraccount,Integer pWarrcompany){ - account=pAccount; - company=pCompany; - warraccount=pWarraccount; - warrcompany=pWarrcompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de warraccount -@return valor de warraccount*/ -public String getWarraccount(){ - return warraccount; -} -/**Fija el valor de warraccount -@param pWarraccount nuevo Valor de warraccount*/ -public void setWarraccount(String pWarraccount){ - warraccount=pWarraccount; -} - -/**Obtiene el valor de warrcompany -@return valor de warrcompany*/ -public Integer getWarrcompany(){ - return warrcompany; -} -/**Fija el valor de warrcompany -@param pWarrcompany nuevo Valor de warrcompany*/ -public void setWarrcompany(Integer pWarrcompany){ - warrcompany=pWarrcompany; -} - -/**Implementacin de la comparacin de TgeneWarrantyAccountKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneWarrantyAccountKey))return false; - TgeneWarrantyAccountKey that = (TgeneWarrantyAccountKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getWarraccount() == null || that.getWarraccount() == null){ - return false; - } - if (! this.getWarraccount().equals(that.getWarraccount())){ - return false; - } - if (this.getWarrcompany() == null || that.getWarrcompany() == null){ - return false; - } - if (! this.getWarrcompany().equals(that.getWarrcompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneWarrantyAccountKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getWarraccount() == null ? 0 : this.getWarraccount().hashCode()); - result = result * 37 + (this.getWarrcompany() == null ? 0 : this.getWarrcompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/entries deleted file mode 100644 index b9b93a2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneSolicitudeClientdata.java -file - - - - -2022-07-28T03:40:29.792747Z -545ac6ab9406afc4fec030c46f29ddae -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10528 - -TgeneSolicitudeExceptionsKey.java -file - - - - -2022-07-28T03:40:29.792747Z -f63195a1b6951162db112a20731c5394 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6359 - -TgeneExceptions.java -file - - - - -2022-07-28T03:40:29.792747Z -1524a9a8bc553d4c21fc68ad8cc4cff8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7644 - -TgeneSolicitudeClientdataKey.java -file - - - - -2022-07-28T03:40:29.793747Z -1c6aa043591b7326fb9d9aceef6550a6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5380 - -TgeneSolicitudeExceptions.java -file - - - - -2022-07-28T03:40:29.793747Z -6d944d15ac14986a57a29d7b8e7244e4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9065 - -TgeneExceptionsKey.java -file - - - - -2022-07-28T03:40:29.793747Z -cb39261905bb4d63c39bfd7e85e767c8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7650 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptions.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptions.java.svn-base deleted file mode 100644 index 8e6d5d5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptions.java.svn-base +++ /dev/null @@ -1,268 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEEXCEPTIONS*/ -@Entity(name="TgeneExceptions") -@Table(name="TGENEEXCEPTIONS") -public class TgeneExceptions extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneExceptions -*/ -@EmbeddedId -private TgeneExceptionsKey pk; -@Column(name="PROFILECODE", nullable=true) - -/** -* Codigo de perfil de usuario -*/ -private String profilecode; - -@Column(name="CONDITION", nullable=true) - -/** -* Condicion a evaluar -*/ -private String condition; - -@Column(name="STRINGVALUE", nullable=true) - -/** -* Valor a compar con el dato del campo -*/ -private String stringvalue; - -@Column(name="NUMERICVALUE", nullable=true) - -/** -* Valor a compar con el dato del campo -*/ -private BigDecimal numericvalue; - -@Column(name="TITLE", nullable=true) - -/** -* Titulo de la condicion a generar, ejemplo MONTO > 100 -*/ -private String title; - -@Column(name="COMMAND", nullable=true) - -/** -* Clase que genera una condicion especial, ejemplo nacionalidad = ECUATORIANA -*/ -private String command; - -/**Contructor por defecto*/ -public TgeneExceptions(){ -} -/**Contructor de TgeneExceptions -@param pPk Clave Primaria del entity -*/ -public TgeneExceptions(TgeneExceptionsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneExceptions -*/ -public static TgeneExceptions find(EntityManager pEntityManager,TgeneExceptionsKey pKey) throws Exception{ - TgeneExceptions obj = pEntityManager.find(TgeneExceptions.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneExceptions -@return El objeto que referencia a la Clave primaria de TgeneExceptions -*/ -public TgeneExceptionsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneExceptions -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneExceptions -*/ -public void setPk(TgeneExceptionsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de profilecode -@return valor de profilecode*/ -public String getProfilecode(){ - return profilecode; -} -/**Fija el valor de profilecode -@param pProfilecode nuevo Valor de profilecode*/ -public void setProfilecode(String pProfilecode){ - profilecode=pProfilecode; -} - -/**Obtiene el valor de condition -@return valor de condition*/ -public String getCondition(){ - return condition; -} -/**Fija el valor de condition -@param pCondition nuevo Valor de condition*/ -public void setCondition(String pCondition){ - condition=pCondition; -} - -/**Obtiene el valor de stringvalue -@return valor de stringvalue*/ -public String getStringvalue(){ - return stringvalue; -} -/**Fija el valor de stringvalue -@param pStringvalue nuevo Valor de stringvalue*/ -public void setStringvalue(String pStringvalue){ - stringvalue=pStringvalue; -} - -/**Obtiene el valor de numericvalue -@return valor de numericvalue*/ -public BigDecimal getNumericvalue(){ - return numericvalue; -} -/**Fija el valor de numericvalue -@param pNumericvalue nuevo Valor de numericvalue*/ -public void setNumericvalue(BigDecimal pNumericvalue){ - numericvalue=pNumericvalue; -} - -/**Obtiene el valor de title -@return valor de title*/ -public String getTitle(){ - return title; -} -/**Fija el valor de title -@param pTitle nuevo Valor de title*/ -public void setTitle(String pTitle){ - title=pTitle; -} - -/**Obtiene el valor de command -@return valor de command*/ -public String getCommand(){ - return command; -} -/**Fija el valor de command -@param pCommand nuevo Valor de command*/ -public void setCommand(String pCommand){ - command=pCommand; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneExceptions))return false; - TgeneExceptions that = (TgeneExceptions) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneExceptions -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneExceptions -*/ -public Object createInstance(){ - TgeneExceptions instance=new TgeneExceptions(); - instance.setPk(new TgeneExceptionsKey()); - return instance; -} -/**Clona la entidad TgeneExceptions -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneExceptions p=(TgeneExceptions)this.clone(); - p.setPk((TgeneExceptionsKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve la definicion de excepciones que requieren autorizacion, por subproducto moneda.*/ - private static final String HQL_EXCEPTIONS = - "from TgeneExceptions texception " + - " where texception.pk.modulecode = :modulecode "+ - " and texception.pk.productcode = :productcode "+ - " and texception.pk.subproductcode = :subproductcode "+ - " and texception.pk.currencycode = :currencycode "+ - " order by texception.pk.exceptionorder "; - - /** - * Entrega una lista de excepciones de solicitud definidas por subproducto moneda, con la cual - * se generan excepciones a autorizar en una solicitud. - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de product. - * @param pSubproductCode Codigo de subproducto. - * @param pCurrencyCode Codigo de moneda. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pModuleCode,String pProductCode, - String pSubproductCode,String pCurrencyCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_EXCEPTIONS); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProductCode); - qry.setParameter("subproductcode", pSubproductCode); - qry.setParameter("currencycode", pCurrencyCode); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptionsKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptionsKey.java.svn-base deleted file mode 100644 index 8bfdab2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneExceptionsKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEEXCEPTIONS*/ -@Embeddable -public class TgeneExceptionsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="BEAN", nullable=false,updatable=false) - -/** -* Bean del cual se obtiene el valor del atributo a evaluar -*/ -private String bean; - -@Column(name="ATTRIBUTE", nullable=false,updatable=false) - -/** -* Atributo a obtener el valor para aplicar la condicion y comparar con el dato del campo valor -*/ -private String attribute; - -@Column(name="EXCEPTIONORDER", nullable=false,updatable=false) - -/** -* Orden de generacion de autorizaciones -*/ -private Integer exceptionorder; - -/**Contructor por defecto*/ -public TgeneExceptionsKey(){} -/**Contructor de TgeneExceptionsKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -@param pBean Bean del cual se obtiene el valor del atributo a evaluar -@param pAttribute Atributo a obtener el valor para aplicar la condicion y comparar con el dato del campo valor -@param pExceptionorder Orden de generacion de autorizaciones -*/ -public TgeneExceptionsKey(String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode,String pBean,String pAttribute,Integer pExceptionorder){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; - bean=pBean; - attribute=pAttribute; - exceptionorder=pExceptionorder; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de bean -@return valor de bean*/ -public String getBean(){ - return bean; -} -/**Fija el valor de bean -@param pBean nuevo Valor de bean*/ -public void setBean(String pBean){ - bean=pBean; -} - -/**Obtiene el valor de attribute -@return valor de attribute*/ -public String getAttribute(){ - return attribute; -} -/**Fija el valor de attribute -@param pAttribute nuevo Valor de attribute*/ -public void setAttribute(String pAttribute){ - attribute=pAttribute; -} - -/**Obtiene el valor de exceptionorder -@return valor de exceptionorder*/ -public Integer getExceptionorder(){ - return exceptionorder; -} -/**Fija el valor de exceptionorder -@param pExceptionorder nuevo Valor de exceptionorder*/ -public void setExceptionorder(Integer pExceptionorder){ - exceptionorder=pExceptionorder; -} - -/**Implementacin de la comparacin de TgeneExceptionsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneExceptionsKey))return false; - TgeneExceptionsKey that = (TgeneExceptionsKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getBean() == null || that.getBean() == null){ - return false; - } - if (! this.getBean().equals(that.getBean())){ - return false; - } - if (this.getAttribute() == null || that.getAttribute() == null){ - return false; - } - if (! this.getAttribute().equals(that.getAttribute())){ - return false; - } - if (this.getExceptionorder() == null || that.getExceptionorder() == null){ - return false; - } - if (! this.getExceptionorder().equals(that.getExceptionorder())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneExceptionsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getBean() == null ? 0 : this.getBean().hashCode()); - result = result * 37 + (this.getAttribute() == null ? 0 : this.getAttribute().hashCode()); - result = result * 37 + (this.getExceptionorder() == null ? 0 : this.getExceptionorder().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdata.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdata.java.svn-base deleted file mode 100644 index 90a123b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdata.java.svn-base +++ /dev/null @@ -1,341 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDECLIENTDATA */ -@Entity(name = "TgeneSolicitudeClientdata") -@Table(name = "TGENESOLICITUDECLIENTDATA") -public class TgeneSolicitudeClientdata extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSolicitudeClientdata - */ - @EmbeddedId - private TgeneSolicitudeClientdataKey pk; - - @Column(name = "USERCODE", nullable = true) - /** - * Codigo de usuario que verifica la informacion del cliente - */ - private String usercode; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro. - */ - private Integer recordversion; - - @Column(name = "CHECKED", nullable = true) - /** - * Y indica que la informacion fue verificada. N la informacion no esta verificada. - */ - private String checked; - - @Column(name = "CHECKDATE", nullable = true) - /** - * Fecha de verificacion de la informacion. - */ - private Date checkdate; - - @Column(name = "PRESENTATIONORDER", nullable = true) - /** - * Orden de presentacion - */ - private Integer presentationorder; - - /** Contructor por defecto */ - public TgeneSolicitudeClientdata() { - } - - /** - * Contructor de TgeneSolicitudeClientdata - * - * @param pPk Clave Primaria del entity - */ - public TgeneSolicitudeClientdata(TgeneSolicitudeClientdataKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSolicitudeClientdata - */ - public static TgeneSolicitudeClientdata find(EntityManager pEntityManager, TgeneSolicitudeClientdataKey pKey) throws Exception { - TgeneSolicitudeClientdata obj = pEntityManager.find(TgeneSolicitudeClientdata.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSolicitudeClientdata - * - * @return El objeto que referencia a la Clave primaria de TgeneSolicitudeClientdata - */ - public TgeneSolicitudeClientdataKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSolicitudeClientdata - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeClientdata - */ - public void setPk(TgeneSolicitudeClientdataKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de usercode - * - * @return valor de usercode - */ - public String getUsercode() { - return this.usercode; - } - - /** - * Fija el valor de usercode - * - * @param pUsercode nuevo Valor de usercode - */ - public void setUsercode(String pUsercode) { - this.usercode = pUsercode; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de checked - * - * @return valor de checked - */ - public String getChecked() { - return this.checked; - } - - /** - * Fija el valor de checked - * - * @param pChecked nuevo Valor de checked - */ - public void setChecked(String pChecked) { - this.checked = pChecked; - } - - /** - * Obtiene el valor de checkdate - * - * @return valor de checkdate - */ - public Date getCheckdate() { - return this.checkdate; - } - - /** - * Fija el valor de checkdate - * - * @param pCheckdate nuevo Valor de checkdate - */ - public void setCheckdate(Date pCheckdate) { - this.checkdate = pCheckdate; - } - - /** - * Obtiene el valor de presentationorder - * - * @return valor de presentationorder - */ - public Integer getPresentationorder() { - return this.presentationorder; - } - - /** - * Fija el valor de presentationorder - * - * @param pPresentationorder nuevo Valor de presentationorder - */ - public void setPresentationorder(Integer pPresentationorder) { - this.presentationorder = pPresentationorder; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSolicitudeClientdata)) { - return false; - } - TgeneSolicitudeClientdata that = (TgeneSolicitudeClientdata) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneSolicitudeClientdata - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneSolicitudeClientdata */ - @Override - public Object createInstance() { - TgeneSolicitudeClientdata instance = new TgeneSolicitudeClientdata(); - instance.setPk(new TgeneSolicitudeClientdataKey()); - return instance; - } - - /** - * Clona la entidad TgeneSolicitudeClientdata - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSolicitudeClientdata p = (TgeneSolicitudeClientdata) this.clone(); - p.setPk((TgeneSolicitudeClientdataKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - /** Sentencia que entrga una lista de registros de TgeneSolicitudeClientdata. */ - private static String JPQL = "from TgeneSolicitudeClientdata t where t.pk.solicitudnumber = :solicitudnumber and t.pk.solicitudsequence = :solicitudsequence"; - - /** - * Entrega una lista de {@link TgeneSolicitudeClientdata} dado el numero de solicitud y la secuencia de la - * solicitud. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pSolicitudenumber, Integer pSolicitudesequence) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitudeClientdata.JPQL); - qry.setParameter("solicitudnumber", pSolicitudenumber); - qry.setParameter("solicitudsequence", pSolicitudesequence); - return qry.getResultList(); - - } - - - /** - * Sentencia SQL que devuelve un objeto de tipo TgeneSolicitudeClientdata - */ - private static final String JPQL_SOLICITUDE_CLIENT_DATA = "from TgeneSolicitudeClientdata tgs " - + " where tgs.pk.solicitudnumber = :solicitudnumber " + " and tgs.pk.solicitudsequence = :solicitudsequence " - + " and tgs.pk.title = :title " + " and tgs.pk.personcode = :personcode"; - /** - * Metodo que devuelve un objeto de tipo TgeneSolicitudeClientdata - * - * @param solicitudnumber - * @param solicitudsequence - * @param title - * @param personcode - * @return - * @throws Exception - */ - public static TgeneSolicitudeClientdata find(EntityManager pEntityManager, String solicitudnumber, Integer solicitudsequence, String title, Integer personcode) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitudeClientdata.JPQL_SOLICITUDE_CLIENT_DATA); - qry.setParameter("solicitudnumber", solicitudnumber); - qry.setParameter("solicitudsequence", solicitudsequence); - qry.setParameter("title", title); - qry.setParameter("personcode", personcode); - try { - return (TgeneSolicitudeClientdata) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdataKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdataKey.java.svn-base deleted file mode 100644 index 5e5d556..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeClientdataKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDECLIENTDATA*/ -@Embeddable -public class TgeneSolicitudeClientdataKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="TITLE", nullable=false,updatable=false) - -/** -* Codigo de informacion de clientes requerido. -*/ -private String title; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona asociado a la solicitud. -*/ -private Integer personcode; - -/**Contructor por defecto*/ -public TgeneSolicitudeClientdataKey(){} -/**Contructor de TgeneSolicitudeClientdataKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pTitle Codigo de informacion de clientes requerido. -@param pPersoncode Codigo de persona asociado a la solicitud. -*/ -public TgeneSolicitudeClientdataKey(String pSolicitudnumber,Integer pSolicitudsequence,String pTitle,Integer pPersoncode){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - title=pTitle; - personcode=pPersoncode; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de title -@return valor de title*/ -public String getTitle(){ - return title; -} -/**Fija el valor de title -@param pTitle nuevo Valor de title*/ -public void setTitle(String pTitle){ - title=pTitle; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Implementacin de la comparacin de TgeneSolicitudeClientdataKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeClientdataKey))return false; - TgeneSolicitudeClientdataKey that = (TgeneSolicitudeClientdataKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getTitle() == null || that.getTitle() == null){ - return false; - } - if (! this.getTitle().equals(that.getTitle())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeClientdataKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getTitle() == null ? 0 : this.getTitle().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptions.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptions.java.svn-base deleted file mode 100644 index 188f778..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptions.java.svn-base +++ /dev/null @@ -1,315 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.exception.CommondbException; - -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEEXCEPTIONS*/ -@Entity(name="TgeneSolicitudeExceptions") -@Table(name="TGENESOLICITUDEEXCEPTIONS") -public class TgeneSolicitudeExceptions extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeExceptions -*/ -@EmbeddedId -private TgeneSolicitudeExceptionsKey pk; -@Column(name="PROFILECODE", nullable=true) - -/** -* Codigo de perfil de usuario -*/ -private String profilecode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=true) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CONDITION", nullable=true) - -/** -* Condicion a evaluar -*/ -private String condition; - -@Column(name="STRINGVALUE", nullable=true) - -/** -* Valor a compar con el dato del campo -*/ -private String stringvalue; - -@Column(name="NUMERICVALUE", nullable=true) - -/** -* Valor a compar con el dato del campo -*/ -private BigDecimal numericvalue; - -@Column(name="EXCEPTION", nullable=true) - -/** -* Mensaje compuesto por el titulo de la excepcion condicion y valor -*/ -private String exception; - -@Column(name="OBSERVATTION", nullable=true) - -/** -* Texto libre del usuario que aprueba o niega la excepcion -*/ -private String observattion; - -/**Contructor por defecto*/ -public TgeneSolicitudeExceptions(){ -} -/**Contructor de TgeneSolicitudeExceptions -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeExceptions(TgeneSolicitudeExceptionsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeExceptions -*/ -public static TgeneSolicitudeExceptions find(EntityManager pEntityManager,TgeneSolicitudeExceptionsKey pKey) throws Exception{ - TgeneSolicitudeExceptions obj = pEntityManager.find(TgeneSolicitudeExceptions.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeExceptions -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeExceptions -*/ -public TgeneSolicitudeExceptionsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeExceptions -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeExceptions -*/ -public void setPk(TgeneSolicitudeExceptionsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de profilecode -@return valor de profilecode*/ -public String getProfilecode(){ - return profilecode; -} -/**Fija el valor de profilecode -@param pProfilecode nuevo Valor de profilecode*/ -public void setProfilecode(String pProfilecode){ - profilecode=pProfilecode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de condition -@return valor de condition*/ -public String getCondition(){ - return condition; -} -/**Fija el valor de condition -@param pCondition nuevo Valor de condition*/ -public void setCondition(String pCondition){ - condition=pCondition; -} - -/**Obtiene el valor de stringvalue -@return valor de stringvalue*/ -public String getStringvalue(){ - return stringvalue; -} -/**Fija el valor de stringvalue -@param pStringvalue nuevo Valor de stringvalue*/ -public void setStringvalue(String pStringvalue){ - stringvalue=pStringvalue; -} - -/**Obtiene el valor de numericvalue -@return valor de numericvalue*/ -public BigDecimal getNumericvalue(){ - return numericvalue; -} -/**Fija el valor de numericvalue -@param pNumericvalue nuevo Valor de numericvalue*/ -public void setNumericvalue(BigDecimal pNumericvalue){ - numericvalue=pNumericvalue; -} - -/**Obtiene el valor de exception -@return valor de exception*/ -public String getException(){ - return exception; -} -/**Fija el valor de exception -@param pException nuevo Valor de exception*/ -public void setException(String pException){ - exception=pException; -} - -/**Obtiene el valor de observattion -@return valor de observattion*/ -public String getObservattion(){ - return observattion; -} -/**Fija el valor de observattion -@param pObservattion nuevo Valor de observattion*/ -public void setObservattion(String pObservattion){ - observattion=pObservattion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeExceptions))return false; - TgeneSolicitudeExceptions that = (TgeneSolicitudeExceptions) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeExceptions -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeExceptions -*/ -public Object createInstance(){ - TgeneSolicitudeExceptions instance=new TgeneSolicitudeExceptions(); - instance.setPk(new TgeneSolicitudeExceptionsKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeExceptions -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeExceptions p=(TgeneSolicitudeExceptions)this.clone(); - p.setPk((TgeneSolicitudeExceptionsKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve las excepciones de una solicitud. */ - private static final String JPQL_SOLICITUDE_EXCEPTIONS = "from TgeneSolicitudeExceptions solexe " - + " where solexe.pk.solicitudnumber = :solicitudnumber " + " and solexe.pk.solicitudsequence = :solicitudsequence " - + " order by solexe.pk.exceptionorder "; - /** - * Entrega una lista de excepciones de solicitud. - * - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findBySolicitudeNumber(EntityManager pEntityManager, String pSolicitudenumber, Integer pSolicitudesequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TgeneSolicitudeExceptions.JPQL_SOLICITUDE_EXCEPTIONS); - qry.setParameter("solicitudnumber", pSolicitudenumber); - qry.setParameter("solicitudsequence", pSolicitudesequence); - lObjects = qry.getResultList(); - return lObjects; - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptionsKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptionsKey.java.svn-base deleted file mode 100644 index 7a72238..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/auth/.svn/text-base/TgeneSolicitudeExceptionsKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.auth; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEEXCEPTIONS*/ -@Embeddable -public class TgeneSolicitudeExceptionsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="BEAN", nullable=false,updatable=false) - -/** -* Bean del cual se obtiene el valor del atributo a evaluar -*/ -private String bean; - -@Column(name="ATTRIBUTE", nullable=false,updatable=false) - -/** -* Atributo a obtener el valor para aplicar la condicion y comparar con el dato del campo valor -*/ -private String attribute; - -@Column(name="EXCEPTIONORDER", nullable=false,updatable=false) - -/** -* Orden de generacion de autorizaciones -*/ -private Integer exceptionorder; - -/**Contructor por defecto*/ -public TgeneSolicitudeExceptionsKey(){} -/**Contructor de TgeneSolicitudeExceptionsKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pBean Bean del cual se obtiene el valor del atributo a evaluar -@param pAttribute Atributo a obtener el valor para aplicar la condicion y comparar con el dato del campo valor -@param pExceptionorder Orden de generacion de autorizaciones -*/ -public TgeneSolicitudeExceptionsKey(String pSolicitudnumber,Integer pSolicitudsequence,String pBean,String pAttribute,Integer pExceptionorder){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - bean=pBean; - attribute=pAttribute; - exceptionorder=pExceptionorder; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de bean -@return valor de bean*/ -public String getBean(){ - return bean; -} -/**Fija el valor de bean -@param pBean nuevo Valor de bean*/ -public void setBean(String pBean){ - bean=pBean; -} - -/**Obtiene el valor de attribute -@return valor de attribute*/ -public String getAttribute(){ - return attribute; -} -/**Fija el valor de attribute -@param pAttribute nuevo Valor de attribute*/ -public void setAttribute(String pAttribute){ - attribute=pAttribute; -} - -/**Obtiene el valor de exceptionorder -@return valor de exceptionorder*/ -public Integer getExceptionorder(){ - return exceptionorder; -} -/**Fija el valor de exceptionorder -@param pExceptionorder nuevo Valor de exceptionorder*/ -public void setExceptionorder(Integer pExceptionorder){ - exceptionorder=pExceptionorder; -} - -/**Implementacin de la comparacin de TgeneSolicitudeExceptionsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeExceptionsKey))return false; - TgeneSolicitudeExceptionsKey that = (TgeneSolicitudeExceptionsKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getBean() == null || that.getBean() == null){ - return false; - } - if (! this.getBean().equals(that.getBean())){ - return false; - } - if (this.getAttribute() == null || that.getAttribute() == null){ - return false; - } - if (! this.getAttribute().equals(that.getAttribute())){ - return false; - } - if (this.getExceptionorder() == null || that.getExceptionorder() == null){ - return false; - } - if (! this.getExceptionorder().equals(that.getExceptionorder())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeExceptionsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getBean() == null ? 0 : this.getBean().hashCode()); - result = result * 37 + (this.getAttribute() == null ? 0 : this.getAttribute().hashCode()); - result = result * 37 + (this.getExceptionorder() == null ? 0 : this.getExceptionorder().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/entries deleted file mode 100644 index 0f47395..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/entries +++ /dev/null @@ -1,504 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneBatchLogKey.java -file - - - - -2022-07-28T03:40:29.143744Z -43151ba5eeaf70275a6d3468b3b75d88 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4305 - -TgeneAccountBatchProcess.java -file - - - - -2022-07-28T03:40:29.144744Z -ecb1007b1bd284b17af944b2f40e6900 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3973 - -TgeneBatchPreviousProcess.java -file - - - - -2022-07-28T03:40:29.144744Z -47b51ac7742b688accaa49a56487312f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6623 - -TgeneBatchLogPreviousProcess.java -file - - - - -2022-07-28T03:40:29.144744Z -363540362775676d66ef8233074eaca7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6853 - -TgeneBatchProcess.java -file - - - - -2022-07-28T03:40:29.144744Z -abff3e72de858da11f2a0b34eb606c4a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6860 - -TgeneBatch.java -file - - - - -2022-07-28T03:40:29.145744Z -e952654cb33fe8d210c3d39f1e1c4e7d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4709 - -TgeneAccountBatchStatus.java -file - - - - -2022-07-28T03:40:29.145744Z -1125f64e89c971737cea9d7b0b1730bf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6390 - -TgeneBatchLog.java -file - - - - -2022-07-28T03:40:29.145744Z -c9d63aa2a80d4d43aba4e7026fa46cc1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13525 - -TgeneAccountBatchProcessKey.java -file - - - - -2022-07-28T03:40:29.145744Z -2662d704734da9378bfe680455986d32 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8774 - -TgeneBatchPreviousProcessKey.java -file - - - - -2022-07-28T03:40:29.146744Z -a109038cd6631371b68471f613bd23ff -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6472 - -TgeneBatchLogPreviousProcessKey.java -file - - - - -2022-07-28T03:40:29.146744Z -c5828e053b2f38a9c9a95ff4ecb99662 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5220 - -TgeneBatchProcessKey.java -file - - - - -2022-07-28T03:40:29.146744Z -7cb5544c90ba693153266b80bfeb5914 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6392 - -TgeneBatchKey.java -file - - - - -2022-07-28T03:40:29.147744Z -dfcc28493895bc80dc256ab3689bcb85 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5488 - -TgeneAccountBatchStatusKey.java -file - - - - -2022-07-28T03:40:29.147744Z -2674174537c6c4bef72132aea61459bc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8119 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcess.java.svn-base deleted file mode 100644 index 97094ef..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcess.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTBATCHPROCESS*/ -@Entity(name="TgeneAccountBatchProcess") -@Table(name="TGENEACCOUNTBATCHPROCESS") -public class TgeneAccountBatchProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountBatchProcess -*/ -@EmbeddedId -private TgeneAccountBatchProcessKey pk; -/**Contructor por defecto*/ -public TgeneAccountBatchProcess(){ -} -/**Contructor de TgeneAccountBatchProcess -@param pPk Clave Primaria del entity -*/ -public TgeneAccountBatchProcess(TgeneAccountBatchProcessKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountBatchProcess -*/ -public static TgeneAccountBatchProcess find(EntityManager pEntityManager,TgeneAccountBatchProcessKey pKey) throws Exception{ - TgeneAccountBatchProcess obj = pEntityManager.find(TgeneAccountBatchProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountBatchProcess -@return El objeto que referencia a la Clave primaria de TgeneAccountBatchProcess -*/ -public TgeneAccountBatchProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountBatchProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountBatchProcess -*/ -public void setPk(TgeneAccountBatchProcessKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountBatchProcess))return false; - TgeneAccountBatchProcess that = (TgeneAccountBatchProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountBatchProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountBatchProcess -*/ -public Object createInstance(){ - TgeneAccountBatchProcess instance=new TgeneAccountBatchProcess(); - instance.setPk(new TgeneAccountBatchProcessKey()); - return instance; -} -/**Clona la entidad TgeneAccountBatchProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountBatchProcess p=(TgeneAccountBatchProcess)this.clone(); - p.setPk((TgeneAccountBatchProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcessKey.java.svn-base deleted file mode 100644 index e719cd5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchProcessKey.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTBATCHPROCESS*/ -@Embeddable -public class TgeneAccountBatchProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="PROCESSDATE", nullable=false,updatable=false) - -/** -* Fecha de proceso de la ejecucion del batch. -*/ -private Date processdate; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -private String actioncode; - -/**Contructor por defecto*/ -public TgeneAccountBatchProcessKey(){} -/**Contructor de TgeneAccountBatchProcessKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pProcessdate Fecha de proceso de la ejecucion del batch. -@param pModulecode Codigo de modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pActioncode Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -public TgeneAccountBatchProcessKey(String pAccount,Integer pCompany,Date pProcessdate,String pModulecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pActioncode){ - account=pAccount; - company=pCompany; - processdate=pProcessdate; - modulecode=pModulecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - actioncode=pActioncode; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de processdate -@return valor de processdate*/ -public Date getProcessdate(){ - return processdate; -} -/**Fija el valor de processdate -@param pProcessdate nuevo Valor de processdate*/ -public void setProcessdate(Date pProcessdate){ - processdate=pProcessdate; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de actioncode -@return valor de actioncode*/ -public String getActioncode(){ - return actioncode; -} -/**Fija el valor de actioncode -@param pActioncode nuevo Valor de actioncode*/ -public void setActioncode(String pActioncode){ - actioncode=pActioncode; -} - -/**Implementacin de la comparacin de TgeneAccountBatchProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountBatchProcessKey))return false; - TgeneAccountBatchProcessKey that = (TgeneAccountBatchProcessKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getProcessdate() == null || that.getProcessdate() == null){ - return false; - } - if (! this.getProcessdate().equals(that.getProcessdate())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getActioncode() == null || that.getActioncode() == null){ - return false; - } - if (! this.getActioncode().equals(that.getActioncode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountBatchProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getProcessdate() == null ? 0 : this.getProcessdate().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getActioncode() == null ? 0 : this.getActioncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatus.java.svn-base deleted file mode 100644 index d974c10..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatus.java.svn-base +++ /dev/null @@ -1,215 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTBATCHSTATUS*/ -@Entity(name="TgeneAccountBatchStatus") -@Table(name="TGENEACCOUNTBATCHSTATUS") -public class TgeneAccountBatchStatus extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountBatchStatus -*/ -@EmbeddedId -private TgeneAccountBatchStatusKey pk; -@Column(name="RESULTCODE", nullable=false) - -/** -* Codigo de resultado de ejecucion de todos los procesos para la cuenta. -*/ -private String resultcode; - -@Column(name="USERMESSAGE", nullable=true) - -/** -* Mensaje de usuario resultante del proceso de batch para la cuenta. -*/ -private String usermessage; - -@Column(name="TECHNICALMESSAGE", nullable=true) - -/** -* Mensaje tecnico, se llena si la transaccion tiene un resultado diferente de ok. -*/ -private String technicalmessage; - -@Column(name="REALDATE", nullable=true, insertable=false) - -/** -* Fecha real de proceso de la cuenta. -*/ -private Timestamp realdate; - -@Column(name="ACTIONCODE", nullable=true) - -/** -* Si se presenta un error, en el campo se almacena la accion en la se presento el error -*/ -private String actioncode; - -/**Contructor por defecto*/ -public TgeneAccountBatchStatus(){ -} -/**Contructor de TgeneAccountBatchStatus -@param pPk Clave Primaria del entity -@param pResultcode Codigo de resultado de ejecucion de todos los procesos para la cuenta. -*/ -public TgeneAccountBatchStatus(TgeneAccountBatchStatusKey pPk,String pResultcode){ - this(); - pk=pPk; - resultcode=pResultcode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountBatchStatus -*/ -public static TgeneAccountBatchStatus find(EntityManager pEntityManager,TgeneAccountBatchStatusKey pKey) throws Exception{ - TgeneAccountBatchStatus obj = pEntityManager.find(TgeneAccountBatchStatus.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountBatchStatus -@return El objeto que referencia a la Clave primaria de TgeneAccountBatchStatus -*/ -public TgeneAccountBatchStatusKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountBatchStatus -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountBatchStatus -*/ -public void setPk(TgeneAccountBatchStatusKey pPk){ - pk=pPk; -} -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de usermessage -@return valor de usermessage*/ -public String getUsermessage(){ - return usermessage; -} -/**Fija el valor de usermessage -@param pUsermessage nuevo Valor de usermessage*/ -public void setUsermessage(String pUsermessage){ - usermessage=pUsermessage; -} - -/**Obtiene el valor de technicalmessage -@return valor de technicalmessage*/ -public String getTechnicalmessage(){ - return technicalmessage; -} -/**Fija el valor de technicalmessage -@param pTechnicalmessage nuevo Valor de technicalmessage*/ -public void setTechnicalmessage(String pTechnicalmessage){ - technicalmessage=pTechnicalmessage; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de actioncode -@return valor de actioncode*/ -public String getActioncode(){ - return actioncode; -} -/**Fija el valor de actioncode -@param pActioncode nuevo Valor de actioncode*/ -public void setActioncode(String pActioncode){ - actioncode=pActioncode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountBatchStatus))return false; - TgeneAccountBatchStatus that = (TgeneAccountBatchStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountBatchStatus -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountBatchStatus -*/ -public Object createInstance(){ - TgeneAccountBatchStatus instance=new TgeneAccountBatchStatus(); - instance.setPk(new TgeneAccountBatchStatusKey()); - return instance; -} -/**Clona la entidad TgeneAccountBatchStatus -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountBatchStatus p=(TgeneAccountBatchStatus)this.clone(); - p.setPk((TgeneAccountBatchStatusKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatusKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatusKey.java.svn-base deleted file mode 100644 index 3c23994..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneAccountBatchStatusKey.java.svn-base +++ /dev/null @@ -1,260 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTBATCHSTATUS*/ -@Embeddable -public class TgeneAccountBatchStatusKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="PROCESSDATE", nullable=false,updatable=false) - -/** -* Si los proceso a ejecutar en el fin de dia no tienen errores se almacena la proxima fecha contable, este campo se utiliza en el non stop -*/ -private Date processdate; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneAccountBatchStatusKey(){} -/**Contructor de TgeneAccountBatchStatusKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pProcessdate Si los proceso a ejecutar en el fin de dia no tienen errores se almacena la proxima fecha contable, este campo se utiliza en el non stop -@param pModulecode Codigo de modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneAccountBatchStatusKey(String pAccount,Integer pCompany,Date pProcessdate,String pModulecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - account=pAccount; - company=pCompany; - processdate=pProcessdate; - modulecode=pModulecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de processdate -@return valor de processdate*/ -public Date getProcessdate(){ - return processdate; -} -/**Fija el valor de processdate -@param pProcessdate nuevo Valor de processdate*/ -public void setProcessdate(Date pProcessdate){ - processdate=pProcessdate; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacin de la comparacin de TgeneAccountBatchStatusKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountBatchStatusKey))return false; - TgeneAccountBatchStatusKey that = (TgeneAccountBatchStatusKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getProcessdate() == null || that.getProcessdate() == null){ - return false; - } - if (! this.getProcessdate().equals(that.getProcessdate())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountBatchStatusKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getProcessdate() == null ? 0 : this.getProcessdate().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatch.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatch.java.svn-base deleted file mode 100644 index 4bbc032..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatch.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBATCH*/ -@Entity(name="TgeneBatch") -@Table(name="TGENEBATCH") -public class TgeneBatch extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBatch -*/ -@EmbeddedId -private TgeneBatchKey pk; -@Column(name="ACTIVE", nullable=true) - -/** -* Y se ejecuta la regla al ejecutar el fin de dia, N no se ejecuta la regla al ejecutar el fin de dia. -*/ -private String active; - -@Column(name="PROCESSORDER", nullable=true) - -/** -* Orden de ejecucion de modulo -*/ -private Integer processorder; - -@Column(name="THREADS", nullable=true) - -/** -* Numero de hilos a levantar por modulo. -*/ -private Integer threads; - -/**Contructor por defecto*/ -public TgeneBatch(){ -} -/**Contructor de TgeneBatch -@param pPk Clave Primaria del entity -*/ -public TgeneBatch(TgeneBatchKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBatch -*/ -public static TgeneBatch find(EntityManager pEntityManager,TgeneBatchKey pKey) throws Exception{ - TgeneBatch obj = pEntityManager.find(TgeneBatch.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBatch -@return El objeto que referencia a la Clave primaria de TgeneBatch -*/ -public TgeneBatchKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBatch -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBatch -*/ -public void setPk(TgeneBatchKey pPk){ - pk=pPk; -} -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -/**Obtiene el valor de processorder -@return valor de processorder*/ -public Integer getProcessorder(){ - return processorder; -} -/**Fija el valor de processorder -@param pProcessorder nuevo Valor de processorder*/ -public void setProcessorder(Integer pProcessorder){ - processorder=pProcessorder; -} - -/**Obtiene el valor de threads -@return valor de threads*/ -public Integer getThreads(){ - return threads; -} -/**Fija el valor de threads -@param pThreads nuevo Valor de threads*/ -public void setThreads(Integer pThreads){ - threads=pThreads; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBatch))return false; - TgeneBatch that = (TgeneBatch) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBatch -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBatch -*/ -public Object createInstance(){ - TgeneBatch instance=new TgeneBatch(); - instance.setPk(new TgeneBatchKey()); - return instance; -} -/**Clona la entidad TgeneBatch -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBatch p=(TgeneBatch)this.clone(); - p.setPk((TgeneBatchKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchKey.java.svn-base deleted file mode 100644 index f3c9790..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBATCH*/ -@Embeddable -public class TgeneBatchKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneBatchKey(){} -/**Contructor de TgeneBatchKey -@param pModulecode Codigo de modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneBatchKey(String pModulecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - modulecode=pModulecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacin de la comparacin de TgeneBatchKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBatchKey))return false; - TgeneBatchKey that = (TgeneBatchKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBatchKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLog.java.svn-base deleted file mode 100644 index 8ef6201..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLog.java.svn-base +++ /dev/null @@ -1,465 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBATCHLOG */ -@Entity(name = "TgeneBatchLog") -@Table(name = "TGENEBATCHLOG") -public class TgeneBatchLog extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneBatchLog - */ - @EmbeddedId - private TgeneBatchLogKey pk; - - @Column(name = "TRANSACTIONMODULE", nullable = true) - /** - * Modulo al que pertence la transaccion - */ - private String transactionmodule; - - @Column(name = "TRANSACTIONCODE", nullable = true) - /** - * Codigo de transaccion dentro del modulo - */ - private Integer transactioncode; - - @Column(name = "TRANSACTIONVERSION", nullable = true) - /** - * Version de transaccion - */ - private Integer transactionversion; - - @Column(name = "FINITDATE", nullable = true) - /** - * Fecha real de inicio de ejecucin del batch - */ - private Timestamp finitdate; - - @Column(name = "FENDDATE", nullable = true) - /** - * Fecha fin real de ejecucin del batch - */ - private Timestamp fenddate; - - @Column(name = "TOTAL", nullable = true) - /** - * Nmero total de cuentas a procesar - */ - private Integer total; - - @Column(name = "EXECUTED", nullable = true) - /** - * Nmero total de cuentas ejecutadas - */ - private Integer executed; - - @Column(name = "TOTALOK", nullable = true) - /** - * Nmero de cuentas ejecutadas exitosamente - */ - private Integer totalok; - - @Column(name = "TOTALERROR", nullable = true) - /** - * Nmero de cuentas ejecutadas con error - */ - private Integer totalerror; - - /** Contructor por defecto */ - public TgeneBatchLog() { - } - - /** - * Contructor de TgeneBatchLog - * - * @param pPk Clave Primaria del entity - */ - public TgeneBatchLog(TgeneBatchLogKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneBatchLog - */ - public static TgeneBatchLog find(EntityManager pEntityManager, TgeneBatchLogKey pKey) throws Exception { - TgeneBatchLog obj = pEntityManager.find(TgeneBatchLog.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneBatchLog - * - * @return El objeto que referencia a la Clave primaria de TgeneBatchLog - */ - public TgeneBatchLogKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneBatchLog - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneBatchLog - */ - public void setPk(TgeneBatchLogKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de transactionmodule - * - * @return valor de transactionmodule - */ - public String getTransactionmodule() { - return this.transactionmodule; - } - - /** - * Fija el valor de transactionmodule - * - * @param pTransactionmodule nuevo Valor de transactionmodule - */ - public void setTransactionmodule(String pTransactionmodule) { - this.transactionmodule = pTransactionmodule; - } - - /** - * Obtiene el valor de transactioncode - * - * @return valor de transactioncode - */ - public Integer getTransactioncode() { - return this.transactioncode; - } - - /** - * Fija el valor de transactioncode - * - * @param pTransactioncode nuevo Valor de transactioncode - */ - public void setTransactioncode(Integer pTransactioncode) { - this.transactioncode = pTransactioncode; - } - - /** - * Obtiene el valor de transactionversion - * - * @return valor de transactionversion - */ - public Integer getTransactionversion() { - return this.transactionversion; - } - - /** - * Fija el valor de transactionversion - * - * @param pTransactionversion nuevo Valor de transactionversion - */ - public void setTransactionversion(Integer pTransactionversion) { - this.transactionversion = pTransactionversion; - } - - /** - * Obtiene el valor de finitdate - * - * @return valor de finitdate - */ - public Timestamp getFinitdate() { - return this.finitdate; - } - - /** - * Fija el valor de finitdate - * - * @param pFinitdate nuevo Valor de finitdate - */ - public void setFinitdate(Timestamp pFinitdate) { - this.finitdate = pFinitdate; - } - - /** - * Obtiene el valor de fenddate - * - * @return valor de fenddate - */ - public Timestamp getFenddate() { - return this.fenddate; - } - - /** - * Fija el valor de fenddate - * - * @param pFenddate nuevo Valor de fenddate - */ - public void setFenddate(Timestamp pFenddate) { - this.fenddate = pFenddate; - } - - /** - * Obtiene el valor de total - * - * @return valor de total - */ - public Integer getTotal() { - return this.total; - } - - /** - * Fija el valor de total - * - * @param pTotal nuevo Valor de total - */ - public void setTotal(Integer pTotal) { - this.total = pTotal; - } - - /** - * Obtiene el valor de executed - * - * @return valor de executed - */ - public Integer getExecuted() { - return this.executed; - } - - /** - * Fija el valor de executed - * - * @param pExecuted nuevo Valor de executed - */ - public void setExecuted(Integer pExecuted) { - this.executed = pExecuted; - } - - /** - * Obtiene el valor de totalok - * - * @return valor de totalok - */ - public Integer getTotalok() { - return this.totalok; - } - - /** - * Fija el valor de totalok - * - * @param pTotalok nuevo Valor de totalok - */ - public void setTotalok(Integer pTotalok) { - this.totalok = pTotalok; - } - - /** - * Obtiene el valor de totalerror - * - * @return valor de totalerror - */ - public Integer getTotalerror() { - return this.totalerror; - } - - /** - * Fija el valor de totalerror - * - * @param pTotalerror nuevo Valor de totalerror - */ - public void setTotalerror(Integer pTotalerror) { - this.totalerror = pTotalerror; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneBatchLog)) { - return false; - } - TgeneBatchLog that = (TgeneBatchLog) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneBatchLog - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneBatchLog */ - @Override - public Object createInstance() { - TgeneBatchLog instance = new TgeneBatchLog(); - instance.setPk(new TgeneBatchLogKey()); - return instance; - } - - /** - * Clona la entidad TgeneBatchLog - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneBatchLog p = (TgeneBatchLog) this.clone(); - p.setPk((TgeneBatchLogKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - private static final String JPQL_BATCH_IN_EXECUTION = "from TgeneBatchLog t " - + "where t.transactionmodule = :transactionmodule and t.transactioncode = :transactioncode " - + "and t.transactionversion =:transactionversion and t.pk.processdate = :processdate and t.fenddate is null "; - - /** - * Metodo que retorna un registro que representa si un batch est en ejecucion dada la fecha de proceso - * - * @param pEntityManager - * @param transactionmodule - * @param transactioncode - * @param transactionversion - * @param processdate - * @return - * @throws Exception - */ - public static TgeneBatchLog findBatchInExecution(EntityManager pEntityManager, Date processdate, String transactionmodule, - Integer transactioncode, Integer transactionversion) throws Exception { - TgeneBatchLog tgeneBatchLog = null; - Query qry = pEntityManager.createQuery(TgeneBatchLog.JPQL_BATCH_IN_EXECUTION); - qry.setParameter("processdate", processdate); - qry.setParameter("transactionmodule", transactionmodule); - qry.setParameter("transactioncode", transactioncode); - qry.setParameter("transactionversion", transactionversion); - - try { - tgeneBatchLog = (TgeneBatchLog) qry.getSingleResult(); - } catch (NoResultException e) { - } - return tgeneBatchLog; - } - - private static final String JPQL_PENDING_BATCH_BY_MODULE = "from TgeneBatchLog t " - + "where t.pk.processdate = :processdate and t.pk.journalid = :journalid and t.pk.modulecode = :modulecode and t.fenddate is null "; - - /** - * Metodo que retorna un registro que representa si un batch est en ejecucion dada la fecha de proceso - * - * @param pEntityManager - * @param transactionmodule - * @param transactioncode - * @param transactionversion - * @param processdate - * @return - * @throws Exception - */ - public static TgeneBatchLog findPendingBatchByModule(EntityManager pEntityManager, Date processdate, String journalid, String modulecode) - throws Exception { - TgeneBatchLog tgeneBatchLog = null; - Query qry = pEntityManager.createQuery(TgeneBatchLog.JPQL_PENDING_BATCH_BY_MODULE); - qry.setParameter("processdate", processdate); - qry.setParameter("journalid", journalid); - qry.setParameter("modulecode", modulecode); - try { - tgeneBatchLog = (TgeneBatchLog) qry.getSingleResult(); - } catch (NoResultException e) { - } - return tgeneBatchLog; - } - - private static final String JPQL_BATCH_BY_JOURNALID = "from TgeneBatchLog t " - + "where t.pk.processdate = :processdate and t.pk.journalid = :journalid "; - - /** - * Metodo que retorna un registro que representa si un batch est en ejecucion dada la fecha de proceso - * - * @param pEntityManager - * @param transactionmodule - * @param transactioncode - * @param transactionversion - * @param processdate - * @return - * @throws Exception - */ - public static TgeneBatchLog findBatchByJournalid(EntityManager pEntityManager, Date processdate, String modulecode, String journalid) - throws Exception { - TgeneBatchLog tgeneBatchLog = null; - Query qry = pEntityManager.createQuery(TgeneBatchLog.JPQL_BATCH_BY_JOURNALID); - qry.setParameter("processdate", processdate); - qry.setParameter("journalid", journalid); - try { - tgeneBatchLog = (TgeneBatchLog) qry.getSingleResult(); - } catch (NoResultException e) { - } - return tgeneBatchLog; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogKey.java.svn-base deleted file mode 100644 index 8fd5d90..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBATCHLOG*/ -@Embeddable -public class TgeneBatchLogKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PROCESSDATE", nullable=false,updatable=false) - -/** -* Fecha contable de ejecucin del batch -*/ -private Timestamp processdate; - -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Journalid de la ejecucin del batch -*/ -private String journalid; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneBatchLogKey(){} -/**Contructor de TgeneBatchLogKey -@param pProcessdate Fecha contable de ejecucin del batch -@param pJournalid Journalid de la ejecucin del batch -@param pModulecode Codigo de modulo -*/ -public TgeneBatchLogKey(Timestamp pProcessdate,String pJournalid,String pModulecode){ - processdate=pProcessdate; - journalid=pJournalid; - modulecode=pModulecode; -} -/**Obtiene el valor de processdate -@return valor de processdate*/ -public Timestamp getProcessdate(){ - return processdate; -} -/**Fija el valor de processdate -@param pProcessdate nuevo Valor de processdate*/ -public void setProcessdate(Timestamp pProcessdate){ - processdate=pProcessdate; -} - -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacion de la comparacion de TgeneBatchLogKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBatchLogKey))return false; - TgeneBatchLogKey that = (TgeneBatchLogKey) o; - if (this.getProcessdate() == null || that.getProcessdate() == null){ - return false; - } - if (! this.getProcessdate().equals(that.getProcessdate())){ - return false; - } - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneBatchLogKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getProcessdate() == null ? 0 : this.getProcessdate().hashCode()); - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcess.java.svn-base deleted file mode 100644 index f4bba45..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcess.java.svn-base +++ /dev/null @@ -1,218 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBATCHLOGPREVIOUSPROCESS*/ -@Entity(name="TgeneBatchLogPreviousProcess") -@Table(name="TGENEBATCHLOGPREVIOUSPROCESS") -public class TgeneBatchLogPreviousProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBatchLogPreviousProcess -*/ -@EmbeddedId -private TgeneBatchLogPreviousProcessKey pk; -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="RESULTCODE", nullable=true) - -/** -* Codigo de resultado de la insersin de las cuentas -*/ -private String resultcode; - -@Column(name="USERMESSAGE", nullable=true) - -/** -* Mensaje tecnico, se llena si la transaccion tiene un resultado diferente de ok. -*/ -private String usermessage; - -/**Contructor por defecto*/ -public TgeneBatchLogPreviousProcess(){ -} -/**Contructor de TgeneBatchLogPreviousProcess -@param pPk Clave Primaria del entity -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneBatchLogPreviousProcess(TgeneBatchLogPreviousProcessKey pPk,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBatchLogPreviousProcess -*/ -public static TgeneBatchLogPreviousProcess find(EntityManager pEntityManager,TgeneBatchLogPreviousProcessKey pKey) throws Exception{ - TgeneBatchLogPreviousProcess obj = pEntityManager.find(TgeneBatchLogPreviousProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBatchLogPreviousProcess -@return El objeto que referencia a la Clave primaria de TgeneBatchLogPreviousProcess -*/ -public TgeneBatchLogPreviousProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBatchLogPreviousProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBatchLogPreviousProcess -*/ -public void setPk(TgeneBatchLogPreviousProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de usermessage -@return valor de usermessage*/ -public String getUsermessage(){ - return usermessage; -} -/**Fija el valor de usermessage -@param pUsermessage nuevo Valor de usermessage*/ -public void setUsermessage(String pUsermessage){ - usermessage=pUsermessage; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBatchLogPreviousProcess))return false; - TgeneBatchLogPreviousProcess that = (TgeneBatchLogPreviousProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneBatchLogPreviousProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneBatchLogPreviousProcess -*/ -public Object createInstance(){ - TgeneBatchLogPreviousProcess instance=new TgeneBatchLogPreviousProcess(); - instance.setPk(new TgeneBatchLogPreviousProcessKey()); - return instance; -} -/**Clona la entidad TgeneBatchLogPreviousProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBatchLogPreviousProcess p=(TgeneBatchLogPreviousProcess)this.clone(); - p.setPk((TgeneBatchLogPreviousProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcessKey.java.svn-base deleted file mode 100644 index b861b49..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchLogPreviousProcessKey.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBATCHLOGPREVIOUSPROCESS*/ -@Embeddable -public class TgeneBatchLogPreviousProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PROCESSDATE", nullable=false,updatable=false) - -/** -* Fecha contable de ejecucin del batch -*/ -private Timestamp processdate; - -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Journalid de la ejecucin del batch -*/ -private String journalid; - -@Column(name="ACTIONCODE", nullable=false,updatable=false) - -/** -* Cdigo de accion -*/ -private String actioncode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneBatchLogPreviousProcessKey(){} -/**Contructor de TgeneBatchLogPreviousProcessKey -@param pProcessdate Fecha contable de ejecucin del batch -@param pJournalid Journalid de la ejecucin del batch -@param pActioncode Cdigo de accion -@param pModulecode Codigo de modulo -*/ -public TgeneBatchLogPreviousProcessKey(Timestamp pProcessdate,String pJournalid,String pActioncode,String pModulecode){ - processdate=pProcessdate; - journalid=pJournalid; - actioncode=pActioncode; - modulecode=pModulecode; -} -/**Obtiene el valor de processdate -@return valor de processdate*/ -public Timestamp getProcessdate(){ - return processdate; -} -/**Fija el valor de processdate -@param pProcessdate nuevo Valor de processdate*/ -public void setProcessdate(Timestamp pProcessdate){ - processdate=pProcessdate; -} - -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de actioncode -@return valor de actioncode*/ -public String getActioncode(){ - return actioncode; -} -/**Fija el valor de actioncode -@param pActioncode nuevo Valor de actioncode*/ -public void setActioncode(String pActioncode){ - actioncode=pActioncode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacion de la comparacion de TgeneBatchLogPreviousProcessKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBatchLogPreviousProcessKey))return false; - TgeneBatchLogPreviousProcessKey that = (TgeneBatchLogPreviousProcessKey) o; - if (this.getProcessdate() == null || that.getProcessdate() == null){ - return false; - } - if (! this.getProcessdate().equals(that.getProcessdate())){ - return false; - } - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getActioncode() == null || that.getActioncode() == null){ - return false; - } - if (! this.getActioncode().equals(that.getActioncode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneBatchLogPreviousProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getProcessdate() == null ? 0 : this.getProcessdate().hashCode()); - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getActioncode() == null ? 0 : this.getActioncode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcess.java.svn-base deleted file mode 100644 index 22a70d3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcess.java.svn-base +++ /dev/null @@ -1,213 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBATCHPREVIOUSPROCESS*/ -@Entity(name="TgeneBatchPreviousProcess") -@Table(name="TGENEBATCHPREVIOUSPROCESS") -public class TgeneBatchPreviousProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBatchPreviousProcess -*/ -@EmbeddedId -private TgeneBatchPreviousProcessKey pk; -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Column(name="PROCESSORDER", nullable=true) - -/** -* Orden de proceso de la regla. -*/ -private Integer processorder; - -@Column(name="ACTIONCODE", nullable=false) - -/** -* Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -private String actioncode; - -@Column(name="ACTIVE", nullable=true) - -/** -* Y se ejecuta la regla al ejecutar el fin de dia, N no se ejecuta la regla al ejecutar el fin de dia. -*/ -private String active; - -/**Contructor por defecto*/ -public TgeneBatchPreviousProcess(){ -} -/**Contructor de TgeneBatchPreviousProcess -@param pPk Clave Primaria del entity -@param pActioncode Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -public TgeneBatchPreviousProcess(TgeneBatchPreviousProcessKey pPk,String pActioncode){ - this(); - pk=pPk; - actioncode=pActioncode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBatchPreviousProcess -*/ -public static TgeneBatchPreviousProcess find(EntityManager pEntityManager,TgeneBatchPreviousProcessKey pKey) throws Exception{ - TgeneBatchPreviousProcess obj = pEntityManager.find(TgeneBatchPreviousProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBatchPreviousProcess -@return El objeto que referencia a la Clave primaria de TgeneBatchPreviousProcess -*/ -public TgeneBatchPreviousProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBatchPreviousProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBatchPreviousProcess -*/ -public void setPk(TgeneBatchPreviousProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de processorder -@return valor de processorder*/ -public Integer getProcessorder(){ - return processorder; -} -/**Fija el valor de processorder -@param pProcessorder nuevo Valor de processorder*/ -public void setProcessorder(Integer pProcessorder){ - processorder=pProcessorder; -} - -/**Obtiene el valor de actioncode -@return valor de actioncode*/ -public String getActioncode(){ - return actioncode; -} -/**Fija el valor de actioncode -@param pActioncode nuevo Valor de actioncode*/ -public void setActioncode(String pActioncode){ - actioncode=pActioncode; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBatchPreviousProcess))return false; - TgeneBatchPreviousProcess that = (TgeneBatchPreviousProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBatchPreviousProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBatchPreviousProcess -*/ -public Object createInstance(){ - TgeneBatchPreviousProcess instance=new TgeneBatchPreviousProcess(); - instance.setPk(new TgeneBatchPreviousProcessKey()); - return instance; -} -/**Clona la entidad TgeneBatchPreviousProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBatchPreviousProcess p=(TgeneBatchPreviousProcess)this.clone(); - p.setPk((TgeneBatchPreviousProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcessKey.java.svn-base deleted file mode 100644 index b3b1e77..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchPreviousProcessKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBATCHPREVIOUSPROCESS*/ -@Embeddable -public class TgeneBatchPreviousProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="PROCESSCODE", nullable=false,updatable=false) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -/**Contructor por defecto*/ -public TgeneBatchPreviousProcessKey(){} -/**Contructor de TgeneBatchPreviousProcessKey -@param pModulecode Codigo de modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pProcesscode Paquete clase de un comando a ejecutar. -*/ -public TgeneBatchPreviousProcessKey(String pModulecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pProcesscode){ - modulecode=pModulecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - processcode=pProcesscode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Implementacin de la comparacin de TgeneBatchPreviousProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBatchPreviousProcessKey))return false; - TgeneBatchPreviousProcessKey that = (TgeneBatchPreviousProcessKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getProcesscode() == null || that.getProcesscode() == null){ - return false; - } - if (! this.getProcesscode().equals(that.getProcesscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBatchPreviousProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getProcesscode() == null ? 0 : this.getProcesscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcess.java.svn-base deleted file mode 100644 index f83aea1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcess.java.svn-base +++ /dev/null @@ -1,219 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBATCHPROCESS*/ -@Entity(name="TgeneBatchProcess") -@Table(name="TGENEBATCHPROCESS") -public class TgeneBatchProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBatchProcess -*/ -@EmbeddedId -private TgeneBatchProcessKey pk; -@Column(name="CATALOGTYPEPROCESS", nullable=false) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=false) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Column(name="PROCESSORDER", nullable=true) - -/** -* Orden de proceso de la regla. -*/ -private Integer processorder; - -@Column(name="ACTIONCODE", nullable=false) - -/** -* Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -private String actioncode; - -@Column(name="ACTIVE", nullable=true) - -/** -* Y se ejecuta la regla al ejecutar el fin de dia, N no se ejecuta la regla al ejecutar el fin de dia. -*/ -private String active; - -/**Contructor por defecto*/ -public TgeneBatchProcess(){ -} -/**Contructor de TgeneBatchProcess -@param pPk Clave Primaria del entity -@param pCatalogtypeprocess Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -@param pCatalogcodetypeprocess Codigo de tabla de catalogo del proceso de negocio de la aplicacion -@param pActioncode Codigo de accion a ajecutar, ejm, CAPITALIZE, CUT -*/ -public TgeneBatchProcess(TgeneBatchProcessKey pPk,String pCatalogtypeprocess,String pCatalogcodetypeprocess,String pActioncode){ - this(); - pk=pPk; - catalogtypeprocess=pCatalogtypeprocess; - catalogcodetypeprocess=pCatalogcodetypeprocess; - actioncode=pActioncode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBatchProcess -*/ -public static TgeneBatchProcess find(EntityManager pEntityManager,TgeneBatchProcessKey pKey) throws Exception{ - TgeneBatchProcess obj = pEntityManager.find(TgeneBatchProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBatchProcess -@return El objeto que referencia a la Clave primaria de TgeneBatchProcess -*/ -public TgeneBatchProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBatchProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBatchProcess -*/ -public void setPk(TgeneBatchProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de processorder -@return valor de processorder*/ -public Integer getProcessorder(){ - return processorder; -} -/**Fija el valor de processorder -@param pProcessorder nuevo Valor de processorder*/ -public void setProcessorder(Integer pProcessorder){ - processorder=pProcessorder; -} - -/**Obtiene el valor de actioncode -@return valor de actioncode*/ -public String getActioncode(){ - return actioncode; -} -/**Fija el valor de actioncode -@param pActioncode nuevo Valor de actioncode*/ -public void setActioncode(String pActioncode){ - actioncode=pActioncode; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBatchProcess))return false; - TgeneBatchProcess that = (TgeneBatchProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBatchProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBatchProcess -*/ -public Object createInstance(){ - TgeneBatchProcess instance=new TgeneBatchProcess(); - instance.setPk(new TgeneBatchProcessKey()); - return instance; -} -/**Clona la entidad TgeneBatchProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBatchProcess p=(TgeneBatchProcess)this.clone(); - p.setPk((TgeneBatchProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcessKey.java.svn-base deleted file mode 100644 index a6f069a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/batch/.svn/text-base/TgeneBatchProcessKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.batch; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBATCHPROCESS*/ -@Embeddable -public class TgeneBatchProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="PROCESSCODE", nullable=false,updatable=false) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -/**Contructor por defecto*/ -public TgeneBatchProcessKey(){} -/**Contructor de TgeneBatchProcessKey -@param pModulecode Codigo de modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pProcesscode Paquete clase de un comando a ejecutar. -*/ -public TgeneBatchProcessKey(String pModulecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pProcesscode){ - modulecode=pModulecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - processcode=pProcesscode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Implementacin de la comparacin de TgeneBatchProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBatchProcessKey))return false; - TgeneBatchProcessKey that = (TgeneBatchProcessKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getProcesscode() == null || that.getProcesscode() == null){ - return false; - } - if (! this.getProcesscode().equals(that.getProcesscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBatchProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getProcesscode() == null ? 0 : this.getProcesscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/entries deleted file mode 100644 index 0a2385b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/entries +++ /dev/null @@ -1,300 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneCharges.java -file - - - - -2022-07-28T03:40:29.594746Z -50a5be234729f70a376f47a321276e18 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -14508 - -TgeneChargesCheckbookKey.java -file - - - - -2022-07-28T03:40:29.594746Z -c7ede86f4798fc8de17919ec490ccf3f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5898 - -TgeneSubProductChargesKey.java -file - - - - -2022-07-28T03:40:29.594746Z -4efba98235d2d66df117554c6972be9a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9601 - -TgeneChargesGroupKey.java -file - - - - -2022-07-28T03:40:29.594746Z -a6b977fb358cd97aca23414ff3322aee -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9695 - -TgeneChargesCheckbook.java -file - - - - -2022-07-28T03:40:29.595746Z -610241b65e744d932290037c6bffe2fa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4745 - -TgeneChargesKey.java -file - - - - -2022-07-28T03:40:29.595746Z -aef2d73441706405b01af2993127f126 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7804 - -TgeneSubProductCharges.java -file - - - - -2022-07-28T03:40:29.595746Z -d926c20b0debf87b555cd7520fc5fa64 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18963 - -TgeneChargesGroup.java -file - - - - -2022-07-28T03:40:29.595746Z -76677f23d94938f6c090b3aed92deb83 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9168 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneCharges.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneCharges.java.svn-base deleted file mode 100644 index 9f74f99..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneCharges.java.svn-base +++ /dev/null @@ -1,461 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECHARGES */ -@Entity(name = "TgeneCharges") -@Table(name = "TGENECHARGES") -public class TgeneCharges extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneCharges - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(RATESEQUENCE),0)+1 from TGENECHARGES " + "where BALANCETYPE=:btype " - + "and BALANCEGROUP=:bgroup " + "and MODULECODE=:modulecode " + "and STATUSCODE=:statuscode " + "and COMPANYCODE=:companycode " - + "and CURRENCYCODE = :currencycode"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "btype,pk.balancetype;bgroup,pk.balancegroup;modulecode,pk.modulecode;statuscode,pk.statuscode;companycode,pk.companycode;currencycode,pk.currencycode"), - @Parameter(name = "field", value = "ratesequence") }) - @GeneratedValue(generator = "seq_id") - private TgeneChargesKey pk; - - @Column(name = "CHARGECURRENCYCODE", nullable = true) - /** - * Codigo de moneda en la que esta expresado el cargo - */ - private String chargecurrencycode; - - @Column(name = "RATE", nullable = true) - /** - * Tasa anual a aplicar - */ - private BigDecimal rate; - - @Column(name = "PERCENT", nullable = true) - /** - * Porcentaje flat a aplicar - */ - private BigDecimal percent; - - @Column(name = "MINVALUE", nullable = true) - /** - * Valor minimo a cobrar - */ - private BigDecimal minvalue; - - @Column(name = "MAXVALUE", nullable = true) - /** - * Valor maximo a cobrar - */ - private BigDecimal maxvalue; - - @Column(name = "MINAMOUNT", nullable = true) - /** - * Monto minimo para buscar el cargo - */ - private BigDecimal minamount; - - @Column(name = "MAXAMOUNT", nullable = true) - /** - * Monto maximo para buscar el cargo - */ - private BigDecimal maxamount; - - /** Contructor por defecto */ - public TgeneCharges() { - } - - /** - * Contructor de TgeneCharges - * - * @param pPk Clave Primaria del entity - */ - public TgeneCharges(TgeneChargesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCharges - */ - public static TgeneCharges find(EntityManager pEntityManager, TgeneChargesKey pKey) throws Exception { - TgeneCharges obj = pEntityManager.find(TgeneCharges.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCharges - * - * @return El objeto que referencia a la Clave primaria de TgeneCharges - */ - public TgeneChargesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCharges - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneCharges - */ - public void setPk(TgeneChargesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de chargecurrencycode - * - * @return valor de chargecurrencycode - */ - public String getChargecurrencycode() { - return this.chargecurrencycode; - } - - /** - * Fija el valor de chargecurrencycode - * - * @param pChargecurrencycode nuevo Valor de chargecurrencycode - */ - public void setChargecurrencycode(String pChargecurrencycode) { - this.chargecurrencycode = pChargecurrencycode; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de percent - * - * @return valor de percent - */ - public BigDecimal getPercent() { - return this.percent; - } - - /** - * Fija el valor de percent - * - * @param pPercent nuevo Valor de percent - */ - public void setPercent(BigDecimal pPercent) { - this.percent = pPercent; - } - - /** - * Obtiene el valor de minvalue - * - * @return valor de minvalue - */ - public BigDecimal getMinvalue() { - return this.minvalue; - } - - /** - * Fija el valor de minvalue - * - * @param pMinvalue nuevo Valor de minvalue - */ - public void setMinvalue(BigDecimal pMinvalue) { - this.minvalue = pMinvalue; - } - - /** - * Obtiene el valor de maxvalue - * - * @return valor de maxvalue - */ - public BigDecimal getMaxvalue() { - return this.maxvalue; - } - - /** - * Fija el valor de maxvalue - * - * @param pMaxvalue nuevo Valor de maxvalue - */ - public void setMaxvalue(BigDecimal pMaxvalue) { - this.maxvalue = pMaxvalue; - } - - /** - * Obtiene el valor de minamount - * - * @return valor de minamount - */ - public BigDecimal getMinamount() { - return this.minamount; - } - - /** - * Fija el valor de minamount - * - * @param pMinamount nuevo Valor de minamount - */ - public void setMinamount(BigDecimal pMinamount) { - this.minamount = pMinamount; - } - - /** - * Obtiene el valor de maxamount - * - * @return valor de maxamount - */ - public BigDecimal getMaxamount() { - return this.maxamount; - } - - /** - * Fija el valor de maxamount - * - * @param pMaxamount nuevo Valor de maxamount - */ - public void setMaxamount(BigDecimal pMaxamount) { - this.maxamount = pMaxamount; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCharges)) { - return false; - } - TgeneCharges that = (TgeneCharges) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneCharges - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneCharges */ - @Override - public Object createInstance() { - TgeneCharges instance = new TgeneCharges(); - instance.setPk(new TgeneChargesKey()); - return instance; - } - - /** - * Clona la entidad TgeneCharges - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneCharges p = (TgeneCharges) this.clone(); - p.setPk((TgeneChargesKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales - - public boolean equalsWithoutSequence(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCharges)) { - return false; - } - TgeneCharges that = (TgeneCharges) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - - TgeneChargesKey thispk = this.getPk(); - TgeneChargesKey thatpk = that.getPk(); - - if (thatpk == null) { - return false; - } - if (!(thatpk instanceof TgeneChargesKey)) { - return false; - } - if ((thispk.getBalancetype() == null) || (thatpk.getBalancetype() == null)) { - return false; - } - if (!thispk.getBalancetype().equals(thatpk.getBalancetype())) { - return false; - } - if ((thispk.getBalancegroup() == null) || (thatpk.getBalancegroup() == null)) { - return false; - } - if (!thispk.getBalancegroup().equals(thatpk.getBalancegroup())) { - return false; - } - if ((thispk.getModulecode() == null) || (thatpk.getModulecode() == null)) { - return false; - } - if (!thispk.getModulecode().equals(thatpk.getModulecode())) { - return false; - } - if ((thispk.getStatuscode() == null) || (thatpk.getStatuscode() == null)) { - return false; - } - if (!thispk.getStatuscode().equals(thatpk.getStatuscode())) { - return false; - } - if ((thispk.getCompanycode() == null) || (thatpk.getCompanycode() == null)) { - return false; - } - if (!thispk.getCompanycode().equals(thatpk.getCompanycode())) { - return false; - } - if ((thispk.getCurrencycode() == null) || (thatpk.getCurrencycode() == null)) { - return false; - } - if (!thispk.getCurrencycode().equals(thatpk.getCurrencycode())) { - return false; - } - return true; - } - - /** Sentencia que devuelve un registro de TgeneCharges. */ - private static final String HQL_CHARGES = "from TgeneCharges tcharges " + " where tcharges.pk.balancetype = :balancetype " - + " and tcharges.pk.balancegroup = :balancegroup " + " and tcharges.pk.modulecode = :modulecode " - + " and tcharges.pk.statuscode = :statuscode " + " and tcharges.pk.companycode = :companycode " - + " and tcharges.pk.currencycode = :currencycode " + " and :amount between tcharges.minamount and tcharges.maxamount "; - - /** - * Metodo que entrega la definicion de cargos generales. - * - * @param pBalanceType Codigo de tipo de saldo a entregar buscar cargo. - * @param pBanceGroup Codigo de tipo grupo de balance a entregar buscar cargo. - * @param pModuleCode Codigo de modulo asociado al estatus de la cuenta a buscar el cargo. - * @param pStatusCode Codigo de estatus de la cuenta a buscar el saldo. - * @param pComapny Codigo de compania de la cuenta a buscar le cargo. - * @param pCurrency Codigo de moneda de la cuenta a buscar le cargo. - * @param pAmount Monto base con el cual se obtiene el cargo. - * @return TgeneCharges - * @throws Exception - */ - public static TgeneCharges find(EntityManager pEntitymanager, String pBalanceType, String pBanceGroup, String pModuleCode, String pStatusCode, - Integer pComapny, String pCurrency, BigDecimal pAmount) throws Exception { - TgeneCharges obj = null; - Query qry = pEntitymanager.createQuery(TgeneCharges.HQL_CHARGES); - qry.setParameter("balancetype", pBalanceType); - qry.setParameter("balancegroup", pBanceGroup); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("statuscode", pStatusCode); - qry.setParameter("companycode", pComapny); - qry.setParameter("currencycode", pCurrency); - qry.setParameter("amount", pAmount); - try { - obj = (TgeneCharges) qry.getSingleResult(); - } catch (NoResultException e) { - return obj; - } - return obj; - } - - /** Sentencia que devuelve una lista de TgeneSubProductCharges por compania. */ - private static final String JQL_CHARGES_BY_MODULE = "from TgeneCharges tchar " + " where tchar.pk.modulecode = :modulecode "; - - /** - * Metodo que entrega la definicion de cargos definidos por subproducto. - * - * @param pCompany Codigo de compania. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByModule(EntityManager pEntityManager, String pModuleCode) { - List list = null; - Query qry = pEntityManager.createQuery(TgeneCharges.JQL_CHARGES_BY_MODULE); - qry.setParameter("modulecode", pModuleCode); - list = qry.getResultList(); - return list; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbook.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbook.java.svn-base deleted file mode 100644 index 921c40f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbook.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECHARGESCHECKBOOK*/ -@Entity(name="TgeneChargesCheckbook") -@Table(name="TGENECHARGESCHECKBOOK") -public class TgeneChargesCheckbook extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneChargesCheckbook -*/ -@EmbeddedId -private TgeneChargesCheckbookKey pk; -@Column(name="CHARGECURRENCYCODE", nullable=true) - -/** -* Codigo de moneda en la que esta expresado el cargo -*/ -private String chargecurrencycode; - -@Column(name="VALUE", nullable=true) - -/** -* Costo de la chequera -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneChargesCheckbook(){ -} -/**Contructor de TgeneChargesCheckbook -@param pPk Clave Primaria del entity -*/ -public TgeneChargesCheckbook(TgeneChargesCheckbookKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneChargesCheckbook -*/ -public static TgeneChargesCheckbook find(EntityManager pEntityManager,TgeneChargesCheckbookKey pKey) throws Exception{ - TgeneChargesCheckbook obj = pEntityManager.find(TgeneChargesCheckbook.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneChargesCheckbook -@return El objeto que referencia a la Clave primaria de TgeneChargesCheckbook -*/ -public TgeneChargesCheckbookKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneChargesCheckbook -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneChargesCheckbook -*/ -public void setPk(TgeneChargesCheckbookKey pPk){ - pk=pPk; -} -/**Obtiene el valor de chargecurrencycode -@return valor de chargecurrencycode*/ -public String getChargecurrencycode(){ - return chargecurrencycode; -} -/**Fija el valor de chargecurrencycode -@param pChargecurrencycode nuevo Valor de chargecurrencycode*/ -public void setChargecurrencycode(String pChargecurrencycode){ - chargecurrencycode=pChargecurrencycode; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneChargesCheckbook))return false; - TgeneChargesCheckbook that = (TgeneChargesCheckbook) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneChargesCheckbook -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneChargesCheckbook -*/ -public Object createInstance(){ - TgeneChargesCheckbook instance=new TgeneChargesCheckbook(); - instance.setPk(new TgeneChargesCheckbookKey()); - return instance; -} -/**Clona la entidad TgeneChargesCheckbook -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneChargesCheckbook p=(TgeneChargesCheckbook)this.clone(); - p.setPk((TgeneChargesCheckbookKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbookKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbookKey.java.svn-base deleted file mode 100644 index 0b069b8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesCheckbookKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECHARGESCHECKBOOK*/ -@Embeddable -public class TgeneChargesCheckbookKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CHECKBOOKTYPECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo ejemlo con talon de 50 cheques. -*/ -private String checkbooktypecatalog; - -@Column(name="CHECKBOOKTYPECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo de tipo de chequeras CHECKBOOKTYPE -*/ -private String checkbooktypecatalogcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta, asociada a la chequera. -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneChargesCheckbookKey(){} -/**Contructor de TgeneChargesCheckbookKey -@param pCheckbooktypecatalog Codigo de catalogo ejemlo con talon de 50 cheques. -@param pCheckbooktypecatalogcode Codigo de tabla de catalogo de tipo de chequeras CHECKBOOKTYPE -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda de la cuenta, asociada a la chequera. -*/ -public TgeneChargesCheckbookKey(String pCheckbooktypecatalog,String pCheckbooktypecatalogcode,Integer pCompanycode,String pCurrencycode){ - checkbooktypecatalog=pCheckbooktypecatalog; - checkbooktypecatalogcode=pCheckbooktypecatalogcode; - companycode=pCompanycode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de checkbooktypecatalog -@return valor de checkbooktypecatalog*/ -public String getCheckbooktypecatalog(){ - return checkbooktypecatalog; -} -/**Fija el valor de checkbooktypecatalog -@param pCheckbooktypecatalog nuevo Valor de checkbooktypecatalog*/ -public void setCheckbooktypecatalog(String pCheckbooktypecatalog){ - checkbooktypecatalog=pCheckbooktypecatalog; -} - -/**Obtiene el valor de checkbooktypecatalogcode -@return valor de checkbooktypecatalogcode*/ -public String getCheckbooktypecatalogcode(){ - return checkbooktypecatalogcode; -} -/**Fija el valor de checkbooktypecatalogcode -@param pCheckbooktypecatalogcode nuevo Valor de checkbooktypecatalogcode*/ -public void setCheckbooktypecatalogcode(String pCheckbooktypecatalogcode){ - checkbooktypecatalogcode=pCheckbooktypecatalogcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneChargesCheckbookKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneChargesCheckbookKey))return false; - TgeneChargesCheckbookKey that = (TgeneChargesCheckbookKey) o; - if (this.getCheckbooktypecatalog() == null || that.getCheckbooktypecatalog() == null){ - return false; - } - if (! this.getCheckbooktypecatalog().equals(that.getCheckbooktypecatalog())){ - return false; - } - if (this.getCheckbooktypecatalogcode() == null || that.getCheckbooktypecatalogcode() == null){ - return false; - } - if (! this.getCheckbooktypecatalogcode().equals(that.getCheckbooktypecatalogcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneChargesCheckbookKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCheckbooktypecatalog() == null ? 0 : this.getCheckbooktypecatalog().hashCode()); - result = result * 37 + (this.getCheckbooktypecatalogcode() == null ? 0 : this.getCheckbooktypecatalogcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroup.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroup.java.svn-base deleted file mode 100644 index 7b5e195..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroup.java.svn-base +++ /dev/null @@ -1,331 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECHARGESGROUP */ -@Entity(name = "TgeneChargesGroup") -@Table(name = "TGENECHARGESGROUP") -public class TgeneChargesGroup extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneChargesGroup - */ - @EmbeddedId - private TgeneChargesGroupKey pk; - @Column(name = "CHARGECURRENCYCODE", nullable = true) - /** - * Codigo de moneda en la que esta expresado el cargo - */ - private String chargecurrencycode; - - @Column(name = "RATE", nullable = true) - /** - * Tasa anual a aplicar - */ - private BigDecimal rate; - - @Column(name = "PERCENT", nullable = true) - /** - * Porcentaje flat a aplicar - */ - private BigDecimal percent; - - @Column(name = "MINVALUE", nullable = true) - /** - * Valor minimo a cobrar - */ - private BigDecimal minvalue; - - @Column(name = "MAXVALUE", nullable = true) - /** - * Valor maximo a cobrar - */ - private BigDecimal maxvalue; - - @Column(name = "MAXAMOUNT", nullable = true) - /** - * Monto maximo para buscar el cargo - */ - private BigDecimal maxamount; - - /** Contructor por defecto */ - public TgeneChargesGroup() { - } - /** - * Contructor de TgeneChargesGroup - * - * @param pPk Clave Primaria del entity - */ - public TgeneChargesGroup(TgeneChargesGroupKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneChargesGroup - */ - public static TgeneChargesGroup find(EntityManager pEntityManager, TgeneChargesGroupKey pKey) throws Exception { - TgeneChargesGroup obj = pEntityManager.find(TgeneChargesGroup.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneChargesGroup - * - * @return El objeto que referencia a la Clave primaria de TgeneChargesGroup - */ - public TgeneChargesGroupKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneChargesGroup - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneChargesGroup - */ - public void setPk(TgeneChargesGroupKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de chargecurrencycode - * - * @return valor de chargecurrencycode - */ - public String getChargecurrencycode() { - return chargecurrencycode; - } - /** - * Fija el valor de chargecurrencycode - * - * @param pChargecurrencycode nuevo Valor de chargecurrencycode - */ - public void setChargecurrencycode(String pChargecurrencycode) { - chargecurrencycode = pChargecurrencycode; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return rate; - } - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - rate = pRate; - } - - /** - * Obtiene el valor de percent - * - * @return valor de percent - */ - public BigDecimal getPercent() { - return percent; - } - /** - * Fija el valor de percent - * - * @param pPercent nuevo Valor de percent - */ - public void setPercent(BigDecimal pPercent) { - percent = pPercent; - } - - /** - * Obtiene el valor de minvalue - * - * @return valor de minvalue - */ - public BigDecimal getMinvalue() { - return minvalue; - } - /** - * Fija el valor de minvalue - * - * @param pMinvalue nuevo Valor de minvalue - */ - public void setMinvalue(BigDecimal pMinvalue) { - minvalue = pMinvalue; - } - - /** - * Obtiene el valor de maxvalue - * - * @return valor de maxvalue - */ - public BigDecimal getMaxvalue() { - return maxvalue; - } - /** - * Fija el valor de maxvalue - * - * @param pMaxvalue nuevo Valor de maxvalue - */ - public void setMaxvalue(BigDecimal pMaxvalue) { - maxvalue = pMaxvalue; - } - - /** - * Obtiene el valor de maxamount - * - * @return valor de maxamount - */ - public BigDecimal getMaxamount() { - return maxamount; - } - /** - * Fija el valor de maxamount - * - * @param pMaxamount nuevo Valor de maxamount - */ - public void setMaxamount(BigDecimal pMaxamount) { - maxamount = pMaxamount; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneChargesGroup)) - return false; - TgeneChargesGroup that = (TgeneChargesGroup) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneChargesGroup - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneChargesGroup */ - public Object createInstance() { - TgeneChargesGroup instance = new TgeneChargesGroup(); - instance.setPk(new TgeneChargesGroupKey()); - return instance; - } - /** - * Clona la entidad TgeneChargesGroup - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneChargesGroup p = (TgeneChargesGroup) this.clone(); - p.setPk((TgeneChargesGroupKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve un registro de TgeneChargesGroup.*/ - private static final String HQL_CHARGES_GROUP = - "from TgeneChargesGroup tchargrp " + - " where tchargrp.pk.catalog = :catalog " + - " and tchargrp.pk.catalogcode = :catalogcode "+ - " and tchargrp.pk.balancetype = :balancetype "+ - " and tchargrp.pk.balancegroup = :balancegroup "+ - " and tchargrp.pk.modulecode = :modulecode "+ - " and tchargrp.pk.statuscode = :statuscode "+ - " and tchargrp.pk.companycode = :companycode "+ - " and tchargrp.pk.currencycode = :currencycode "+ - " and :amount between tchargrp.pk.minamount and tchargrp.maxamount "; - - - /** - * Metodo que entrega la definicion de cargos de grupos de clientes. - * @param pCatalog Codigo de aagrupacion de cargos, Empleados, Clientes vip - * @param pCatalogCode Codigo de catalogo de agrupacion de cargos (CHARGES) - * @param pBalanceType Codigo de tipo de saldo a entregar buscar cargo. - * @param pBanceGroup Codigo de tipo grupo de balance a entregar buscar cargo. - * @param pModuleCode Codigo de modulo asociado al estatus de la cuenta a buscar el cargo. - * @param pStatusCode Codigo de estatus de la cuenta a buscar el saldo. - * @param pCompany Codigo de compania de la cuenta a buscar le cargo. - * @param pCurrency Codigo de moneda de la cuenta a buscar le cargo. - * @param pAmount Monto base con el cual se obtiene el cargo. - * @return TgeneChargesGroup - * @throws Exception - */ - public static TgeneChargesGroup find(EntityManager pEntityManager,String pCatalog,String pCatalogCode,String pBalanceType, - String pBanceGroup,String pModuleCode,String pStatusCode,Integer pCompany,String pCurrency,BigDecimal pAmount) throws Exception { - TgeneChargesGroup obj = null; - Query qry = pEntityManager.createQuery(HQL_CHARGES_GROUP); - qry.setParameter("catalog", pCatalog); - qry.setParameter("catalogcode", pCatalog); - qry.setParameter("balancetype", pCatalog); - qry.setParameter("balancegroup", pCatalog); - qry.setParameter("modulecode", pCatalog); - qry.setParameter("statuscode", pCatalog); - qry.setParameter("companycode", pCatalog); - qry.setParameter("currencycode", pCatalog); - qry.setParameter("amount", pCatalog); - try { - obj = (TgeneChargesGroup)qry.getSingleResult(); - } catch (NoResultException e) { - return obj; - } - return obj; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroupKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroupKey.java.svn-base deleted file mode 100644 index b38d691..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesGroupKey.java.svn-base +++ /dev/null @@ -1,314 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECHARGESGROUP*/ -@Embeddable -public class TgeneChargesGroupKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CHARGECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo EMPLOYEE, VIP etc -*/ -private String chargecatalog; - -@Column(name="CHARGECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo (CHARGES) -*/ -private String chargecatalogcode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta -*/ -private String currencycode; - -@Column(name="MINAMOUNT", nullable=false,updatable=false) - -/** -* Monto minimo para buscar el cargo -*/ -private BigDecimal minamount; - -/**Contructor por defecto*/ -public TgeneChargesGroupKey(){} -/**Contructor de TgeneChargesGroupKey -@param pChargecatalog Codigo de catalogo EMPLOYEE, VIP etc -@param pChargecatalogcode Codigo de tabla de catalogo (CHARGES) -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de cuenta -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda de la cuenta -@param pMinamount Monto minimo para buscar el cargo -*/ -public TgeneChargesGroupKey(String pChargecatalog,String pChargecatalogcode,String pBalancetype,String pBalancegroup,String pModulecode,String pStatuscode,Integer pCompanycode,String pCurrencycode,BigDecimal pMinamount){ - chargecatalog=pChargecatalog; - chargecatalogcode=pChargecatalogcode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; - modulecode=pModulecode; - statuscode=pStatuscode; - companycode=pCompanycode; - currencycode=pCurrencycode; - minamount=pMinamount; -} -/**Obtiene el valor de chargecatalog -@return valor de chargecatalog*/ -public String getChargecatalog(){ - return chargecatalog; -} -/**Fija el valor de chargecatalog -@param pChargecatalog nuevo Valor de chargecatalog*/ -public void setChargecatalog(String pChargecatalog){ - chargecatalog=pChargecatalog; -} - -/**Obtiene el valor de chargecatalogcode -@return valor de chargecatalogcode*/ -public String getChargecatalogcode(){ - return chargecatalogcode; -} -/**Fija el valor de chargecatalogcode -@param pChargecatalogcode nuevo Valor de chargecatalogcode*/ -public void setChargecatalogcode(String pChargecatalogcode){ - chargecatalogcode=pChargecatalogcode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de minamount -@return valor de minamount*/ -public BigDecimal getMinamount(){ - return minamount; -} -/**Fija el valor de minamount -@param pMinamount nuevo Valor de minamount*/ -public void setMinamount(BigDecimal pMinamount){ - minamount=pMinamount; -} - -/**Implementacin de la comparacin de TgeneChargesGroupKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneChargesGroupKey))return false; - TgeneChargesGroupKey that = (TgeneChargesGroupKey) o; - if (this.getChargecatalog() == null || that.getChargecatalog() == null){ - return false; - } - if (! this.getChargecatalog().equals(that.getChargecatalog())){ - return false; - } - if (this.getChargecatalogcode() == null || that.getChargecatalogcode() == null){ - return false; - } - if (! this.getChargecatalogcode().equals(that.getChargecatalogcode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getMinamount() == null || that.getMinamount() == null){ - return false; - } - if (! this.getMinamount().equals(that.getMinamount())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneChargesGroupKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getChargecatalog() == null ? 0 : this.getChargecatalog().hashCode()); - result = result * 37 + (this.getChargecatalogcode() == null ? 0 : this.getChargecatalogcode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getMinamount() == null ? 0 : this.getMinamount().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesKey.java.svn-base deleted file mode 100644 index 01b61e6..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneChargesKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECHARGES*/ -@Embeddable -public class TgeneChargesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta -*/ -private String currencycode; - -@Column(name="RATESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencial para tasas -*/ -private Integer ratesequence; - -/**Contructor por defecto*/ -public TgeneChargesKey(){} -/**Contructor de TgeneChargesKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de cuenta -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda de la cuenta -@param pRatesequence Secuencial para tasas -*/ -public TgeneChargesKey(String pBalancetype,String pBalancegroup,String pModulecode,String pStatuscode,Integer pCompanycode,String pCurrencycode,Integer pRatesequence){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; - modulecode=pModulecode; - statuscode=pStatuscode; - companycode=pCompanycode; - currencycode=pCurrencycode; - ratesequence=pRatesequence; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de ratesequence -@return valor de ratesequence*/ -public Integer getRatesequence(){ - return ratesequence; -} -/**Fija el valor de ratesequence -@param pRatesequence nuevo Valor de ratesequence*/ -public void setRatesequence(Integer pRatesequence){ - ratesequence=pRatesequence; -} - -/**Implementacion de la comparacion de TgeneChargesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneChargesKey))return false; - TgeneChargesKey that = (TgeneChargesKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getRatesequence() == null || that.getRatesequence() == null){ - return false; - } - if (! this.getRatesequence().equals(that.getRatesequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneChargesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getRatesequence() == null ? 0 : this.getRatesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductCharges.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductCharges.java.svn-base deleted file mode 100644 index b12a6e7..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductCharges.java.svn-base +++ /dev/null @@ -1,534 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTCHARGES */ -@Entity(name = "TgeneSubProductCharges") -@Table(name = "TGENESUBPRODUCTCHARGES") -public class TgeneSubProductCharges extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSubProductCharges - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(RATESEQUENCE),0)+1 from TGENESUBPRODUCTCHARGES " + "where BALANCETYPE=:btype " - + "and BALANCEGROUP=:bgroup " + "and MODULECODE=:modulecode " + "and PRODUCTCODE=:productcode " - + "and SUBPRODUCTCODE=:subproductcode " + "and STATUSCODE=:statuscode " + "and COMPANYCODE=:companycode " - + "and CURRENCYCODE = :currencycode"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "btype,pk.balancetype;bgroup,pk.balancegroup;modulecode,pk.modulecode;productcode,pk.productcode;subproductcode,pk.subproductcode;statuscode,pk.statuscode;companycode,pk.companycode;currencycode,pk.currencycode"), - @Parameter(name = "field", value = "ratesequence") }) - @GeneratedValue(generator = "seq_id") - private TgeneSubProductChargesKey pk; - - @Column(name = "CHARGECURRENCYCODE", nullable = true) - /** - * Codigo de moneda en la que esta expresado el cargo - */ - private String chargecurrencycode; - - @Column(name = "RATE", nullable = true) - /** - * Tasa anual a aplicar - */ - private BigDecimal rate; - - @Column(name = "PERCENT", nullable = true) - /** - * Porcentaje flat a aplicar - */ - private BigDecimal percent; - - @Column(name = "MINVALUE", nullable = true) - /** - * Valor minimo a cobrar - */ - private BigDecimal minvalue; - - @Column(name = "MAXVALUE", nullable = true) - /** - * Valor maximo a cobrar - */ - private BigDecimal maxvalue; - - @Column(name = "MINAMOUNT", nullable = false) - /** - * Monto minimo para buscar el cargo - */ - private BigDecimal minamount; - - @Column(name = "MAXAMOUNT", nullable = true) - /** - * Monto maximo para buscar el cargo - */ - private BigDecimal maxamount; - - /** Contructor por defecto */ - public TgeneSubProductCharges() { - } - - /** - * Contructor de TgeneSubProductCharges - * - * @param pPk Clave Primaria del entity - * @param pMinamount Monto minimo para buscar el cargo - */ - public TgeneSubProductCharges(TgeneSubProductChargesKey pPk, BigDecimal pMinamount) { - this(); - this.pk = pPk; - this.minamount = pMinamount; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSubProductCharges - */ - public static TgeneSubProductCharges find(EntityManager pEntityManager, TgeneSubProductChargesKey pKey) throws Exception { - TgeneSubProductCharges obj = pEntityManager.find(TgeneSubProductCharges.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSubProductCharges - * - * @return El objeto que referencia a la Clave primaria de TgeneSubProductCharges - */ - public TgeneSubProductChargesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSubProductCharges - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductCharges - */ - public void setPk(TgeneSubProductChargesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de chargecurrencycode - * - * @return valor de chargecurrencycode - */ - public String getChargecurrencycode() { - return this.chargecurrencycode; - } - - /** - * Fija el valor de chargecurrencycode - * - * @param pChargecurrencycode nuevo Valor de chargecurrencycode - */ - public void setChargecurrencycode(String pChargecurrencycode) { - this.chargecurrencycode = pChargecurrencycode; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de percent - * - * @return valor de percent - */ - public BigDecimal getPercent() { - return this.percent; - } - - /** - * Fija el valor de percent - * - * @param pPercent nuevo Valor de percent - */ - public void setPercent(BigDecimal pPercent) { - this.percent = pPercent; - } - - /** - * Obtiene el valor de minvalue - * - * @return valor de minvalue - */ - public BigDecimal getMinvalue() { - return this.minvalue; - } - - /** - * Fija el valor de minvalue - * - * @param pMinvalue nuevo Valor de minvalue - */ - public void setMinvalue(BigDecimal pMinvalue) { - this.minvalue = pMinvalue; - } - - /** - * Obtiene el valor de maxvalue - * - * @return valor de maxvalue - */ - public BigDecimal getMaxvalue() { - return this.maxvalue; - } - - /** - * Fija el valor de maxvalue - * - * @param pMaxvalue nuevo Valor de maxvalue - */ - public void setMaxvalue(BigDecimal pMaxvalue) { - this.maxvalue = pMaxvalue; - } - - /** - * Obtiene el valor de minamount - * - * @return valor de minamount - */ - public BigDecimal getMinamount() { - return this.minamount; - } - - /** - * Fija el valor de minamount - * - * @param pMinamount nuevo Valor de minamount - */ - public void setMinamount(BigDecimal pMinamount) { - this.minamount = pMinamount; - } - - /** - * Obtiene el valor de maxamount - * - * @return valor de maxamount - */ - public BigDecimal getMaxamount() { - return this.maxamount; - } - - /** - * Fija el valor de maxamount - * - * @param pMaxamount nuevo Valor de maxamount - */ - public void setMaxamount(BigDecimal pMaxamount) { - this.maxamount = pMaxamount; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubProductCharges)) { - return false; - } - TgeneSubProductCharges that = (TgeneSubProductCharges) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneSubProductCharges - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneSubProductCharges */ - @Override - public Object createInstance() { - TgeneSubProductCharges instance = new TgeneSubProductCharges(); - instance.setPk(new TgeneSubProductChargesKey()); - return instance; - } - - /** - * Clona la entidad TgeneSubProductCharges - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSubProductCharges p = (TgeneSubProductCharges) this.clone(); - p.setPk((TgeneSubProductChargesKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - - public boolean equalsWithoutSequence(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubProductCharges)) { - return false; - } - TgeneSubProductCharges that = (TgeneSubProductCharges) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - - TgeneSubProductChargesKey thispk = this.getPk(); - TgeneSubProductChargesKey thatpk = that.getPk(); - - if (thatpk == null) { - return false; - } - if (!(thatpk instanceof TgeneSubProductChargesKey)) { - return false; - } - if ((thispk.getBalancetype() == null) || (thatpk.getBalancetype() == null)) { - return false; - } - if (!thispk.getBalancetype().equals(thatpk.getBalancetype())) { - return false; - } - if ((thispk.getBalancegroup() == null) || (thatpk.getBalancegroup() == null)) { - return false; - } - if (!thispk.getBalancegroup().equals(thatpk.getBalancegroup())) { - return false; - } - if ((thispk.getModulecode() == null) || (thatpk.getModulecode() == null)) { - return false; - } - if (!thispk.getModulecode().equals(thatpk.getModulecode())) { - return false; - } - if ((thispk.getProductcode() == null) || (thatpk.getProductcode() == null)) { - return false; - } - if (!thispk.getProductcode().equals(thatpk.getProductcode())) { - return false; - } - if ((thispk.getSubproductcode() == null) || (thatpk.getSubproductcode() == null)) { - return false; - } - if (!thispk.getSubproductcode().equals(thatpk.getSubproductcode())) { - return false; - } - if ((thispk.getStatuscode() == null) || (thatpk.getStatuscode() == null)) { - return false; - } - if (!thispk.getStatuscode().equals(thatpk.getStatuscode())) { - return false; - } - if ((thispk.getCompanycode() == null) || (thatpk.getCompanycode() == null)) { - return false; - } - if (!thispk.getCompanycode().equals(thatpk.getCompanycode())) { - return false; - } - if ((thispk.getCurrencycode() == null) || (thatpk.getCurrencycode() == null)) { - return false; - } - if (!thispk.getCurrencycode().equals(thatpk.getCurrencycode())) { - return false; - } - - return true; - } - - /** Sentencia que devuelve un registro de TgeneSubProductCharges. */ - private static final String HQL_CHARGES_SUBPRODUCT = "from TgeneSubProductCharges tsubpchar " - + " where tsubpchar.pk.balancetype = :balancetype " + " and tsubpchar.pk.balancegroup = :balancegroup " - + " and tsubpchar.pk.modulecode = :modulecode " + " and tsubpchar.pk.productcode = :productcode " - + " and tsubpchar.pk.subproductcode = :subproductcode " + " and tsubpchar.pk.statuscode = :statuscode " - + " and tsubpchar.pk.companycode = :companycode " + " and tsubpchar.pk.currencycode = :currencycode " - + " and :amount between tsubpchar.minamount and tsubpchar.maxamount "; - - /** - * Metodo que entrega la definicion de cargos definidos por subproducto. - * - * @param pBalanceType Codigo de tipo de saldo a entregar buscar cargo. - * @param pBanceGroup Codigo de tipo grupo de balance a entregar buscar cargo. - * @param pModuleCode Codigo de modulo asociado al estatus y producto de la cuenta a buscar el cargo. - * @param pProduct Codigo de producto de la cuenta a buscar el cargo. - * @param pSubProduct Codigo de sub producto de la cuenta a buscar el cargo. - * @param pStatusCode Codigo de estatus de la cuenta a buscar el saldo. - * @param pCompany Codigo de compania de la cuenta a buscar le cargo. - * @param pCurrency Codigo de moneda de la cuenta a buscar le cargo. - * @param pAmount Monto base a obtener el cargo. - * @return TgeneSubProductCharges - * @throws Exception - */ - public static final TgeneSubProductCharges find(EntityManager pEntityManager, String pBalanceType, String pBanceGroup, String pModuleCode, - String pProduct, String pSubProduct, String pStatusCode, Integer pCompany, String pCurrency, BigDecimal pAmount) throws Exception { - TgeneSubProductCharges obj = null; - Query qry = pEntityManager.createQuery(TgeneSubProductCharges.HQL_CHARGES_SUBPRODUCT); - qry.setParameter("balancetype", pBalanceType); - qry.setParameter("balancegroup", pBanceGroup); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProduct); - qry.setParameter("subproductcode", pSubProduct); - qry.setParameter("statuscode", pStatusCode); - qry.setParameter("companycode", pCompany); - qry.setParameter("currencycode", pCurrency); - qry.setParameter("amount", pAmount); - try { - obj = (TgeneSubProductCharges) qry.getSingleResult(); - } catch (NoResultException e) { - return obj; - } - return obj; - } - - /** Sentencia que devuelve un registro de TgeneSubProductCharges. */ - private static final String JQL_CHARGES = "from TgeneSubProductCharges tsubpchar " + " where tsubpchar.pk.modulecode = :modulecode " - + " and tsubpchar.pk.productcode = :productcode " + " and tsubpchar.pk.subproductcode = :subproductcode "; - - /** - * Metodo que entrega la definicion de cargos definidos por subproducto. - * - * @param pBalanceType Codigo de tipo de saldo a entregar buscar cargo. - * @param pBanceGroup Codigo de tipo grupo de balance a entregar buscar cargo. - * @param pModuleCode Codigo de modulo asociado al estatus y producto de la cuenta a buscar el cargo. - * @param pProduct Codigo de producto de la cuenta a buscar el cargo. - * @param pSubProduct Codigo de sub producto de la cuenta a buscar el cargo. - * @param pStatusCode Codigo de estatus de la cuenta a buscar el saldo. - * @param pCompany Codigo de compania de la cuenta a buscar le cargo. - * @param pCurrency Codigo de moneda de la cuenta a buscar le cargo. - * @param pAmount Monto base a obtener el cargo. - * @return TgeneSubProductCharges - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static final List find(EntityManager pEntityManager, String pModuleCode, String pProduct, String pSubProduct) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneSubProductCharges.JQL_CHARGES); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProduct); - qry.setParameter("subproductcode", pSubProduct); - - return qry.getResultList(); - } - - /** Sentencia que devuelve una lista de TgeneSubProductCharges por compania. */ - private static final String HQL_CHARGES_SUBPRODUCT_BY_COMPANY = "from TgeneSubProductCharges tspc " - + " where tspc.pk.companycode = :companycode "; - - /** - * Metodo que entrega la definicion de cargos definidos por subproducto. - * - * @param pCompany Codigo de compania. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByCompany(EntityManager pEntityManager, Integer pCompany) { - List list = null; - Query qry = pEntityManager.createQuery(TgeneSubProductCharges.HQL_CHARGES_SUBPRODUCT_BY_COMPANY); - qry.setParameter("companycode", pCompany); - list = qry.getResultList(); - return list; - } - - /** Sentencia que devuelve una lista de TgeneSubProductCharges por compania. */ - private static final String JQL_CHARGES_SUBPRODUCT_BY_MODULE = "from TgeneSubProductCharges tsubpchar " - + " where tsubpchar.pk.modulecode = :modulecode "; - - /** - * Metodo que entrega la definicion de cargos definidos por subproducto. - * - * @param pCompany Codigo de compania. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByModule(EntityManager pEntityManager, String pModuleCode) { - List list = null; - Query qry = pEntityManager.createQuery(TgeneSubProductCharges.JQL_CHARGES_SUBPRODUCT_BY_MODULE); - qry.setParameter("modulecode", pModuleCode); - list = qry.getResultList(); - return list; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductChargesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductChargesKey.java.svn-base deleted file mode 100644 index ab5b913..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/charge/.svn/text-base/TgeneSubProductChargesKey.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pgeneral.charge; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTCHARGES*/ -@Embeddable -public class TgeneSubProductChargesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta -*/ -private String currencycode; - -@Column(name="RATESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia para las tasas por subproducto -*/ -private Integer ratesequence; - -/**Contructor por defecto*/ -public TgeneSubProductChargesKey(){} -/**Contructor de TgeneSubProductChargesKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda de la cuenta -@param pRatesequence Secuencia para las tasas por subproducto -*/ -public TgeneSubProductChargesKey(String pBalancetype,String pBalancegroup,String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,Integer pCompanycode,String pCurrencycode,Integer pRatesequence){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - companycode=pCompanycode; - currencycode=pCurrencycode; - ratesequence=pRatesequence; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de ratesequence -@return valor de ratesequence*/ -public Integer getRatesequence(){ - return ratesequence; -} -/**Fija el valor de ratesequence -@param pRatesequence nuevo Valor de ratesequence*/ -public void setRatesequence(Integer pRatesequence){ - ratesequence=pRatesequence; -} - -/**Implementacion de la comparacion de TgeneSubProductChargesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductChargesKey))return false; - TgeneSubProductChargesKey that = (TgeneSubProductChargesKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getRatesequence() == null || that.getRatesequence() == null){ - return false; - } - if (! this.getRatesequence().equals(that.getRatesequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneSubProductChargesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getRatesequence() == null ? 0 : this.getRatesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/entries deleted file mode 100644 index 4d3bd02..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneAccountingDateBranchKey.java -file - - - - -2022-07-28T03:40:30.174749Z -a944495ee8adf93ca493ef8596a5faa0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3636 - -TgeneAccountingDateKey.java -file - - - - -2022-07-28T03:40:30.174749Z -b47f410451578a36b7ceba3c633482a6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4310 - -TgeneNotAccountingDayKey.java -file - - - - -2022-07-28T03:40:30.174749Z -18c3657530c0f3817314c0c8ef72dcc3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3393 - -TgeneAccountingDateBranch.java -file - - - - -2022-07-28T03:40:30.174749Z -1b015cfd9bf247c368e23e8540255104 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7278 - -TgeneAccountingDate.java -file - - - - -2022-07-28T03:40:30.175749Z -6d90706c41def8481f6a0bfff0c5819b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4647 - -TgeneNotAccountingDay.java -file - - - - -2022-07-28T03:40:30.175749Z -01557bb2605c8196bab49ccfa1f632af -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5682 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDate.java.svn-base deleted file mode 100644 index c04bebe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDate.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTINGDATE*/ -@Entity(name="TgeneAccountingDate") -@Table(name="TGENEACCOUNTINGDATE") -public class TgeneAccountingDate extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountingDate -*/ -@EmbeddedId -private TgeneAccountingDateKey pk; -@Column(name="ACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable. -*/ -private Date accountingdate; - -@Column(name="WORKINGDATE", nullable=true) - -/** -* Fecha de proceso o de trabajo -*/ -private Date workingdate; - -/**Contructor por defecto*/ -public TgeneAccountingDate(){ -} -/**Contructor de TgeneAccountingDate -@param pPk Clave Primaria del entity -*/ -public TgeneAccountingDate(TgeneAccountingDateKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountingDate -*/ -public static TgeneAccountingDate find(EntityManager pEntityManager,TgeneAccountingDateKey pKey) throws Exception{ - TgeneAccountingDate obj = pEntityManager.find(TgeneAccountingDate.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountingDate -@return El objeto que referencia a la Clave primaria de TgeneAccountingDate -*/ -public TgeneAccountingDateKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountingDate -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountingDate -*/ -public void setPk(TgeneAccountingDateKey pPk){ - pk=pPk; -} -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Date getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Date pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountingDate))return false; - TgeneAccountingDate that = (TgeneAccountingDate) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountingDate -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountingDate -*/ -public Object createInstance(){ - TgeneAccountingDate instance=new TgeneAccountingDate(); - instance.setPk(new TgeneAccountingDateKey()); - return instance; -} -/**Clona la entidad TgeneAccountingDate -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountingDate p=(TgeneAccountingDate)this.clone(); - p.setPk((TgeneAccountingDateKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranch.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranch.java.svn-base deleted file mode 100644 index c6172fe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranch.java.svn-base +++ /dev/null @@ -1,252 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTINGDATEBRANCH*/ -@Entity(name="TgeneAccountingDateBranch") -@Table(name="TGENEACCOUNTINGDATEBRANCH") -public class TgeneAccountingDateBranch extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountingDateBranch -*/ -@EmbeddedId -private TgeneAccountingDateBranchKey pk; -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="REALDATE", nullable=true) - -/** -* Fecha real o calendario -*/ -private Date realdate; - -@Column(name="ACCOUNTINGDATE", nullable=false) - -/** -* Fecha contable de la sucursal -*/ -private Date accountingdate; - -@Column(name="WORKINGDATE", nullable=true) - -/** -* Fecha de trabajo de la aplicacion -*/ -private Date workingdate; - -@Column(name="PREVIOUSACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable anterior a la fecha contable actual -*/ -private Date previousaccountingdate; - -@Column(name="NEXTACCOUNTINGDATE", nullable=true) - -/** -* Proxima fecha contable a la fecha contable actual -*/ -private Date nextaccountingdate; - -/**Contructor por defecto*/ -public TgeneAccountingDateBranch(){ -} -/**Contructor de TgeneAccountingDateBranch -@param pPk Clave Primaria del entity -@param pAccountingdate Fecha contable de la sucursal -*/ -public TgeneAccountingDateBranch(TgeneAccountingDateBranchKey pPk,Date pAccountingdate){ - this(); - pk=pPk; - accountingdate=pAccountingdate; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountingDateBranch -*/ -public static TgeneAccountingDateBranch find(EntityManager pEntityManager,TgeneAccountingDateBranchKey pKey) throws Exception{ - TgeneAccountingDateBranch obj = pEntityManager.find(TgeneAccountingDateBranch.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountingDateBranch -@return El objeto que referencia a la Clave primaria de TgeneAccountingDateBranch -*/ -public TgeneAccountingDateBranchKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountingDateBranch -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountingDateBranch -*/ -public void setPk(TgeneAccountingDateBranchKey pPk){ - pk=pPk; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Date getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Date pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Date getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Date pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de previousaccountingdate -@return valor de previousaccountingdate*/ -public Date getPreviousaccountingdate(){ - return previousaccountingdate; -} -/**Fija el valor de previousaccountingdate -@param pPreviousaccountingdate nuevo Valor de previousaccountingdate*/ -public void setPreviousaccountingdate(Date pPreviousaccountingdate){ - previousaccountingdate=pPreviousaccountingdate; -} - -/**Obtiene el valor de nextaccountingdate -@return valor de nextaccountingdate*/ -public Date getNextaccountingdate(){ - return nextaccountingdate; -} -/**Fija el valor de nextaccountingdate -@param pNextaccountingdate nuevo Valor de nextaccountingdate*/ -public void setNextaccountingdate(Date pNextaccountingdate){ - nextaccountingdate=pNextaccountingdate; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountingDateBranch))return false; - TgeneAccountingDateBranch that = (TgeneAccountingDateBranch) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountingDateBranch -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountingDateBranch -*/ -public Object createInstance(){ - TgeneAccountingDateBranch instance=new TgeneAccountingDateBranch(); - instance.setPk(new TgeneAccountingDateBranchKey()); - return instance; -} -/**Clona la entidad TgeneAccountingDateBranch -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountingDateBranch p=(TgeneAccountingDateBranch)this.clone(); - p.setPk((TgeneAccountingDateBranchKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchKey.java.svn-base deleted file mode 100644 index dcc5f17..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTINGDATEBRANCH*/ -@Embeddable -public class TgeneAccountingDateBranchKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la sucursal -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneAccountingDateBranchKey(){} -/**Contructor de TgeneAccountingDateBranchKey -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la sucursal -*/ -public TgeneAccountingDateBranchKey(Integer pBranchcode,Integer pCompanycode){ - branchcode=pBranchcode; - companycode=pCompanycode; -} -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TgeneAccountingDateBranchKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountingDateBranchKey))return false; - TgeneAccountingDateBranchKey that = (TgeneAccountingDateBranchKey) o; - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountingDateBranchKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateKey.java.svn-base deleted file mode 100644 index 48d1f7a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneAccountingDateKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTINGDATE*/ -@Embeddable -public class TgeneAccountingDateKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la sucursal -*/ -private Integer companycode; - -@Column(name="REALDATE", nullable=false,updatable=false) - -/** -* Fecha calendario -*/ -private Date realdate; - -/**Contructor por defecto*/ -public TgeneAccountingDateKey(){} -/**Contructor de TgeneAccountingDateKey -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la sucursal -@param pRealdate Fecha calendario -*/ -public TgeneAccountingDateKey(Integer pBranchcode,Integer pCompanycode,Date pRealdate){ - branchcode=pBranchcode; - companycode=pCompanycode; - realdate=pRealdate; -} -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Date getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Date pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TgeneAccountingDateKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountingDateKey))return false; - TgeneAccountingDateKey that = (TgeneAccountingDateKey) o; - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountingDateKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDay.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDay.java.svn-base deleted file mode 100644 index 2ff4223..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDay.java.svn-base +++ /dev/null @@ -1,219 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENENOTACCOUNTINGDAY - */ -@Entity(name = "TgeneNotAccountingDay") -@Table(name = "TGENENOTACCOUNTINGDAY") -public class TgeneNotAccountingDay extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneNotAccountingDay - */ - @EmbeddedId - private TgeneNotAccountingDayKey pk; - @Column(name = "CATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo MONTHS, Asociado a los meses del anio - */ - private String catalogcode; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - /** Contructor por defecto */ - public TgeneNotAccountingDay() { - } - - /** - * Contructor de TgeneNotAccountingDay - * - * @param pPk Clave Primaria del entity - */ - public TgeneNotAccountingDay(TgeneNotAccountingDayKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneNotAccountingDay - */ - public static TgeneNotAccountingDay find(EntityManager pEntityManager, TgeneNotAccountingDayKey pKey) - throws Exception { - TgeneNotAccountingDay obj = pEntityManager.find(TgeneNotAccountingDay.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneNotAccountingDay - * - * @return El objeto que referencia a la Clave primaria de - * TgeneNotAccountingDay - */ - public TgeneNotAccountingDayKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneNotAccountingDay - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneNotAccountingDay - */ - public void setPk(TgeneNotAccountingDayKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de catalogcode - * - * @return valor de catalogcode - */ - public String getCatalogcode() { - return catalogcode; - } - - /** - * Fija el valor de catalogcode - * - * @param pCatalogcode nuevo Valor de catalogcode - */ - public void setCatalogcode(String pCatalogcode) { - catalogcode = pCatalogcode; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneNotAccountingDay)) - return false; - TgeneNotAccountingDay that = (TgeneNotAccountingDay) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneNotAccountingDay - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneNotAccountingDay */ - public Object createInstance() { - TgeneNotAccountingDay instance = new TgeneNotAccountingDay(); - instance.setPk(new TgeneNotAccountingDayKey()); - return instance; - } - - /** - * Clona la entidad TgeneNotAccountingDay - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneNotAccountingDay p = (TgeneNotAccountingDay) this.clone(); - p.setPk((TgeneNotAccountingDayKey) this.pk.cloneMe()); - return p; - } - - //METODOS MANUALES - - /** - * Metodo que entrega una lista de dias no contables por mes. - */ - @SuppressWarnings("unchecked") - public static List findAll(EntityManager pEntityManager) throws Exception { - List obj = null; - Query qry = pEntityManager.createQuery("from TgeneNotAccountingDay t order by t.pk.catalog, t.pk.day "); - obj = qry.getResultList(); - return obj; - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDayKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDayKey.java.svn-base deleted file mode 100644 index df4d894..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/date/.svn/text-base/TgeneNotAccountingDayKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.date; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENENOTACCOUNTINGDAY*/ -@Embeddable -public class TgeneNotAccountingDayKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 0 Enero, 1 Febreo, 2 Marzo -*/ -private String catalog; - -@Column(name="DAY", nullable=false,updatable=false) - -/** -* Dia del mes que no se considera como contable -*/ -private Integer day; - -/**Contructor por defecto*/ -public TgeneNotAccountingDayKey(){} -/**Contructor de TgeneNotAccountingDayKey -@param pCatalog Codigo de catalogo 0 Enero, 1 Febreo, 2 Marzo -@param pDay Dia del mes que no se considera como contable -*/ -public TgeneNotAccountingDayKey(String pCatalog,Integer pDay){ - catalog=pCatalog; - day=pDay; -} -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de day -@return valor de day*/ -public Integer getDay(){ - return day; -} -/**Fija el valor de day -@param pDay nuevo Valor de day*/ -public void setDay(Integer pDay){ - day=pDay; -} - -/**Implementacin de la comparacin de TgeneNotAccountingDayKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneNotAccountingDayKey))return false; - TgeneNotAccountingDayKey that = (TgeneNotAccountingDayKey) o; - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getDay() == null || that.getDay() == null){ - return false; - } - if (! this.getDay().equals(that.getDay())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneNotAccountingDayKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getDay() == null ? 0 : this.getDay().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/entries deleted file mode 100644 index 26628ee..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneDictionaryKey.java -file - - - - -2022-07-28T03:40:29.351745Z -f6a588630152a02739dafd19b48bfb00 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3550 - -TgeneDictionary.java -file - - - - -2022-07-28T03:40:29.351745Z -e68b88152bcd9e9470d94e2e58e27c21 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4529 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionary.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionary.java.svn-base deleted file mode 100644 index 87b3ad0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionary.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.dict; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEDICTIONARY*/ -@Entity(name="TgeneDictionary") -@Table(name="TGENEDICTIONARY") -public class TgeneDictionary extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneDictionary -*/ -@EmbeddedId -private TgeneDictionaryKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* null -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneDictionary(){ -} -/**Contructor de TgeneDictionary -@param pPk Clave Primaria del entity -*/ -public TgeneDictionary(TgeneDictionaryKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneDictionary -*/ -public static TgeneDictionary find(EntityManager pEntityManager,TgeneDictionaryKey pKey) throws Exception{ - TgeneDictionary obj = pEntityManager.find(TgeneDictionary.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneDictionary -@return El objeto que referencia a la Clave primaria de TgeneDictionary -*/ -public TgeneDictionaryKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneDictionary -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneDictionary -*/ -public void setPk(TgeneDictionaryKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneDictionary))return false; - TgeneDictionary that = (TgeneDictionary) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneDictionary -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneDictionary -*/ -public Object createInstance(){ - TgeneDictionary instance=new TgeneDictionary(); - instance.setPk(new TgeneDictionaryKey()); - return instance; -} -/**Clona la entidad TgeneDictionary -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneDictionary p=(TgeneDictionary)this.clone(); - p.setPk((TgeneDictionaryKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionaryKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionaryKey.java.svn-base deleted file mode 100644 index 7d2c3fe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/dict/.svn/text-base/TgeneDictionaryKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.dict; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEDICTIONARY*/ -@Embeddable -public class TgeneDictionaryKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TABLENAME", nullable=false,updatable=false) - -/** -* Nombre de la tabla asociada al diccionario -*/ -private String tablename; - -@Column(name="COLUMNNAME", nullable=false,updatable=false) - -/** -* Nombre de la columna que almacena condiciones especiales. -*/ -private String columnname; - -/**Contructor por defecto*/ -public TgeneDictionaryKey(){} -/**Contructor de TgeneDictionaryKey -@param pTablename Nombre de la tabla asociada al diccionario -@param pColumnname Nombre de la columna que almacena condiciones especiales. -*/ -public TgeneDictionaryKey(String pTablename,String pColumnname){ - tablename=pTablename; - columnname=pColumnname; -} -/**Obtiene el valor de tablename -@return valor de tablename*/ -public String getTablename(){ - return tablename; -} -/**Fija el valor de tablename -@param pTablename nuevo Valor de tablename*/ -public void setTablename(String pTablename){ - tablename=pTablename; -} - -/**Obtiene el valor de columnname -@return valor de columnname*/ -public String getColumnname(){ - return columnname; -} -/**Fija el valor de columnname -@param pColumnname nuevo Valor de columnname*/ -public void setColumnname(String pColumnname){ - columnname=pColumnname; -} - -/**Implementacin de la comparacin de TgeneDictionaryKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneDictionaryKey))return false; - TgeneDictionaryKey that = (TgeneDictionaryKey) o; - if (this.getTablename() == null || that.getTablename() == null){ - return false; - } - if (! this.getTablename().equals(that.getTablename())){ - return false; - } - if (this.getColumnname() == null || that.getColumnname() == null){ - return false; - } - if (! this.getColumnname().equals(that.getColumnname())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneDictionaryKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTablename() == null ? 0 : this.getTablename().hashCode()); - result = result * 37 + (this.getColumnname() == null ? 0 : this.getColumnname().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/entries deleted file mode 100644 index e6070a4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneReadExcel.java -file - - - - -2022-07-28T03:40:29.752747Z -219edd0a26f2e4682dcb2329badd20f6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5507 - -TgeneFileType.java -file - - - - -2022-07-28T03:40:29.752747Z -31ad6e2c5203a452f4d78428d96acf63 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4573 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneFileType.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneFileType.java.svn-base deleted file mode 100644 index 76d50f2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneFileType.java.svn-base +++ /dev/null @@ -1,176 +0,0 @@ -package com.fp.persistence.pgeneral.excel; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEFILETYPE*/ -@Entity(name="TgeneFileType") -@Table(name="TGENEFILETYPE") -public class TgeneFileType extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneFileType -*/ -@Id -@Column(name="FILECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripción del tipo de dato -*/ -private String description; - -@Column(name="MANAGED", nullable=true) - -/** -* Manejado por internamente -*/ -private String managed; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TgeneFileType(){ -} -/**Contructor de TgeneFileType -@param pPk Clave Primaria del entity -*/ -public TgeneFileType(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneFileType -*/ -public static TgeneFileType find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneFileType obj = pEntityManager.find(TgeneFileType.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneFileType -@return El objeto que referencia a la Clave primaria de TgeneFileType -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneFileType -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneFileType -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de managed -@return valor de managed*/ -public String getManaged(){ - return managed; -} -/**Fija el valor de managed -@param pManaged nuevo Valor de managed*/ -public void setManaged(String pManaged){ - managed=pManaged; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneFileType))return false; - TgeneFileType that = (TgeneFileType) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneFileType -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneFileType -*/ -public Object createInstance(){ - TgeneFileType instance=new TgeneFileType(); - return instance; -} -/**Clona la entidad TgeneFileType -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneFileType p=(TgeneFileType)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneReadExcel.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneReadExcel.java.svn-base deleted file mode 100644 index ee6d98f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/excel/.svn/text-base/TgeneReadExcel.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.excel; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEREADEXCEL*/ -@Entity(name="TgeneReadExcel") -@Table(name="TGENEREADEXCEL") -public class TgeneReadExcel extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneReadExcel -*/ -@Id -@Column(name="FILECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="FIRSTROW", nullable=true) - -/** -* Primera fila del archivo a leer -*/ -private Integer firstrow; - -@Column(name="MAXROW", nullable=true) - -/** -* ltima fila del archivo a leer -*/ -private Integer maxrow; - -@Column(name="FIRSTCOLUMN", nullable=true) - -/** -* Primera columna del archivo a leer -*/ -private Integer firstcolumn; - -@Column(name="MAXCOLUM", nullable=true) - -/** -* ltima columan del archivo a leer -*/ -private Integer maxcolum; - -@Column(name="CLASSNAME", nullable=true) - -/** -* Paquete clase de negocio que se encarga de manipular la lista de objetos que fueron ledos del excel -*/ -private String classname; - -/**Contructor por defecto*/ -public TgeneReadExcel(){ -} -/**Contructor de TgeneReadExcel -@param pPk Clave Primaria del entity -*/ -public TgeneReadExcel(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneReadExcel -*/ -public static TgeneReadExcel find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneReadExcel obj = pEntityManager.find(TgeneReadExcel.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneReadExcel -@return El objeto que referencia a la Clave primaria de TgeneReadExcel -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneReadExcel -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneReadExcel -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de firstrow -@return valor de firstrow*/ -public Integer getFirstrow(){ - return firstrow; -} -/**Fija el valor de firstrow -@param pFirstrow nuevo Valor de firstrow*/ -public void setFirstrow(Integer pFirstrow){ - firstrow=pFirstrow; -} - -/**Obtiene el valor de maxrow -@return valor de maxrow*/ -public Integer getMaxrow(){ - return maxrow; -} -/**Fija el valor de maxrow -@param pMaxrow nuevo Valor de maxrow*/ -public void setMaxrow(Integer pMaxrow){ - maxrow=pMaxrow; -} - -/**Obtiene el valor de firstcolumn -@return valor de firstcolumn*/ -public Integer getFirstcolumn(){ - return firstcolumn; -} -/**Fija el valor de firstcolumn -@param pFirstcolumn nuevo Valor de firstcolumn*/ -public void setFirstcolumn(Integer pFirstcolumn){ - firstcolumn=pFirstcolumn; -} - -/**Obtiene el valor de maxcolum -@return valor de maxcolum*/ -public Integer getMaxcolum(){ - return maxcolum; -} -/**Fija el valor de maxcolum -@param pMaxcolum nuevo Valor de maxcolum*/ -public void setMaxcolum(Integer pMaxcolum){ - maxcolum=pMaxcolum; -} - -/**Obtiene el valor de classname -@return valor de classname*/ -public String getClassname(){ - return classname; -} -/**Fija el valor de classname -@param pClassname nuevo Valor de classname*/ -public void setClassname(String pClassname){ - classname=pClassname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneReadExcel))return false; - TgeneReadExcel that = (TgeneReadExcel) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneReadExcel -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneReadExcel -*/ -public Object createInstance(){ - TgeneReadExcel instance=new TgeneReadExcel(); - return instance; -} -/**Clona la entidad TgeneReadExcel -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneReadExcel p=(TgeneReadExcel)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/entries deleted file mode 100644 index b9ba147..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/entries +++ /dev/null @@ -1,3870 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneCreditType.java -file - - - - -2022-07-28T03:40:30.366749Z -b4540c6bd1569516bc51b141529b9651 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5403 - -TgeneSolicitudeNumber.java -file - - - - -2022-07-28T03:40:30.366749Z -8423c5d0b6f77f303e0916fdc5979447 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3850 - -TgeneOperativeConditionKey.java -file - - - - -2022-07-28T03:40:30.367749Z -ec5254b8cebb8e7b278d061c7c0d4a94 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3708 - -TgeneTellerTransferHeaderKey.java -file - - - - -2022-07-28T03:40:30.366749Z -a147574d3482a2aba685bea992799177 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5466 - -TgeneCurrencyRateKey.java -file - - - - -2022-07-28T03:40:30.367749Z -cd46f47f2f4aaaaafa08709797477715 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3628 - -TgeneRevokeSolicitude.java -file - - - - -2022-07-28T03:40:30.367749Z -8b63131dc5e5ad64a83d4f87d3a7f5f0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5200 - -TgeneAccountInstallRates.java -file - - - - -2022-07-28T03:40:30.368749Z -ac2b74d7839dd8224ca60a6580401d6f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -19731 - -TgeneCanton.java -file - - - - -2022-07-28T03:40:30.368749Z -da873e6ab1f503d3b4dc7c2b3ed52a2b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4424 - -TgeneDenomination.java -file - - - - -2022-07-28T03:40:30.368749Z -fca5333004bd259d7501e390770ab778 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3748 - -TgeneTransactionQueryKey.java -file - - - - -2022-07-28T03:40:30.368749Z -c43b2c52622f3a3a9b8ffd6557aef00b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5393 - -TgeneSolicitudeNumberKey.java -file - - - - -2022-07-28T03:40:30.369750Z -815d7ed6a30535f94bfdda96430cb8ec -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3813 - -TgeneBalanceType.java -file - - - - -2022-07-28T03:40:30.369750Z -22c359d7eb19c622b746028cb63156a3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5781 - -TgeneLabelKey.java -file - - - - -2022-07-28T03:40:30.370750Z -28caa2108081a05a0055b0d09abac640 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4114 - -TgeneSolicitudeCreditOpeningKey.java -file - - - - -2022-07-28T03:40:30.369750Z -89ee6429fd929f0f70634516050f2859 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4904 - -TgeneSolicitudeInstallCharges.java -file - - - - -2022-07-28T03:40:30.369750Z -c0e091f0cab5d42d49c07b7a810d3eed -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7892 - -TgeneConsepLog.java -file - - - - -2022-07-28T03:40:30.370750Z -7a5aee0427b4bddce553ec2c5e6fddde -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12737 - -TgeneCurrency.java -file - - - - -2022-07-28T03:40:30.370750Z -1da96804704c3435eb5ef8130063d625 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4973 - -TgeneTellerTransfer.java -file - - - - -2022-07-28T03:40:30.370750Z -d3e2483d41ccb1333bf07eef480dd9bd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6262 - -TgeneTechnicalPatrimony.java -file - - - - -2022-07-28T03:40:30.371750Z -5d816e5b408a86fdc25c4b162e5b191c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5319 - -TgeneCashCloseDetailKey.java -file - - - - -2022-07-28T03:40:30.371750Z -b25709a961e951ac2e0fe55ce563d0d9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9532 - -TgeneTransactionMix.java -file - - - - -2022-07-28T03:40:30.371750Z -bd2484c5c7a56a6cb0e22fe6547c5b1d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11661 - -TgeneOfficeKey.java -file - - - - -2022-07-28T03:40:30.371750Z -cbe098384621ebe86dfd9735bdf79a11 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4265 - -TgeneSolicitudeDebitOpeningKey.java -file - - - - -2022-07-28T03:40:30.372750Z -424de9564f3cd33b645e108fcc88910a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4869 - -TgeneCurrencyRate.java -file - - - - -2022-07-28T03:40:30.372750Z -601fe163d732bb5c103b05d2467e87e2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5526 - -OptmListaNegra.java -file - - - - -2022-07-28T03:40:30.372750Z -d180a3d5da1eeb36a59e32b6b6831586 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -15543 - -TgeneTechnicalPatrimonyKey.java -file - - - - -2022-07-28T03:40:30.372750Z -553b2b8ac42e7afde3cfd00a72c70bf7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3683 - -TgeneCity.java -file - - - - -2022-07-28T03:40:30.373750Z -cb733de8938486249d03788192015141 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4275 - -TgeneArea.java -file - - - - -2022-07-28T03:40:30.373750Z -9de2d4603348e7d1a70608aef4663245 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4355 - -TgeneSolicitudeStatus.java -file - - - - -2022-07-28T03:40:30.373750Z -e56747fd7449814cd18026321a478926 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4872 - -ABSTgeneSolicitudeRelationship.java -file - - - - -2022-07-28T03:40:30.373750Z -08d7c3b50a305ed29aa94a7f3239e67d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6590 - -TgeneCashCloseHeader.java -file - - - - -2022-07-28T03:40:30.374750Z -af8227c1696dd26e94257a3b92bf0483 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11765 - -TgeneTellerTransferDetail.java -file - - - - -2022-07-28T03:40:30.374750Z -131a8c95af92b5ea5eb5428de2800a5f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6774 - -TgeneAccountInstallCharges.java -file - - - - -2022-07-28T03:40:30.374750Z -ad76eafeab695c9c70661cfb6bfb7c26 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6435 - -TgeneLanguage.java -file - - - - -2022-07-28T03:40:30.375750Z -a8d3d9ced3e52e0ac11e698c891f1dbd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3991 - -TgeneCurrencyRateGroup.java -file - - - - -2022-07-28T03:40:30.375750Z -e08295ca0647bb9276fce7e1f73c3f38 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5731 - -TgeneServices.java -file - - - - -2022-07-28T03:40:30.375750Z -d23eef0e9639d4e7a0a0333435d832cc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5643 - -TgeneTransactionMixPages.java -file - - - - -2022-07-28T03:40:30.375750Z -933f3d23da990b28c2b965b9627edc27 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4833 - -TgeneProvince.java -file - - - - -2022-07-28T03:40:30.376750Z -54fec1b1c662e756cca1c6b6df71cc79 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4574 - -TgeneCashCloseHeaderKey.java -file - - - - -2022-07-28T03:40:30.376750Z -d0f88eb77e4a1131610a37d22312fd94 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7680 - -TgeneConsep.java -file - - - - -2022-07-28T03:40:30.376750Z -57046797cca6d39082c163631e04d19a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12942 - -TgeneRevokeSolicitudeKey.java -file - - - - -2022-07-28T03:40:30.376750Z -46b1d0aab7ea34a117f817bedbd163c4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3825 - -TgeneDenominationKey.java -file - - - - -2022-07-28T03:40:30.377750Z -aaad2cf5e505988f4804ff06d28bd735 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5090 - -TgeneCatalogDetailTest.java -file - - - - -2022-07-28T03:40:30.377750Z -ee141a9ac67bd3eedc4f8d09cff617a4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5676 - -TgeneTellerBalance.java -file - - - - -2022-07-28T03:40:30.377750Z -620948b6e716e55685bbda7b17ed0e04 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7023 - -TgeneProvinceKey.java -file - - - - -2022-07-28T03:40:30.378750Z -4ee437291ba1897858e6253d1234fcc3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3490 - -TgeneSolicitudeRelationshipKey.java -file - - - - -2022-07-28T03:40:30.378750Z -5a6393db9fc198b7f0170b0fbfd2d48d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4644 - -TgeneTransactionReportLink.java -file - - - - -2022-07-28T03:40:30.378750Z -003a340e9dca5f103ea0707a50541364 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5049 - -TgeneFrequency.java -file - - - - -2022-07-28T03:40:30.379750Z -b688e4c39efc150770d4c929c4e10f44 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4973 - -TgeneSolicitudeInstallChargesKey.java -file - - - - -2022-07-28T03:40:30.378750Z -69316172f8516dc747a8cccbf1691bd2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9854 - -TgeneCountry.java -file - - - - -2022-07-28T03:40:30.379750Z -2447c8202001d47aa6ef7b3769c6b7bd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5684 - -TgeneOperationStatus.java -file - - - - -2022-07-28T03:40:30.380750Z -4677d869d026a45c04c9afdb3f934a15 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4747 - -TgeneConceptKey.java -file - - - - -2022-07-28T03:40:30.380750Z -6d775fbc365c81e69849135169c6e9fe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3509 - -TgeneCashClose.java -file - - - - -2022-07-28T03:40:30.380750Z -6ff68ea7bcfacd5246058ad7512a8f90 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3642 - -TgeneQueryProcess.java -file - - - - -2022-07-28T03:40:30.379750Z -cc8b8c4a2fce97862e7b83b1080a3257 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6645 - -TgeneSolicitude.java -file - - - - -2022-07-28T03:40:30.379750Z -0a47bcf004a9f6acfe1c972ae94e51f4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -26429 - -TgeneTellerTransferKey.java -file - - - - -2022-07-28T03:40:30.380750Z -470b9bc23a51760b8cdf19e1aad01cf6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4554 - -TgeneCatalogDetailTestKey.java -file - - - - -2022-07-28T03:40:30.381750Z -ef2dd5019a7ca6248e22fd8c8373d7bd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3617 - -TgeneTellerBalanceKey.java -file - - - - -2022-07-28T03:40:30.381750Z -36a7b20679fcaf156b0d8ff32f8adb41 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4274 - -TgeneTransactionQuery.java -file - - - - -2022-07-28T03:40:30.381750Z -8437a7eb5e3b86bdd4abb62f0235f8f5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8119 - -TgeneEntity.java -file - - - - -2022-07-28T03:40:30.382750Z -60e9e688411e89128e912ad858ee1a00 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8557 - -TgeneParametersKey.java -file - - - - -2022-07-28T03:40:30.382750Z -6a4be54be32cfc308ce36d786a81f4ab -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3340 - -TgeneParroquiaKey.java -file - - - - -2022-07-28T03:40:30.382750Z -fb821b3866cb2d35634b5750d74ed56d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4927 - -TgeneUserSolicitudeNumber.java -file - - - - -2022-07-28T03:40:30.381750Z -cc305154d7383c8fc8293b11450cc814 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4289 - -TgeneLabel.java -file - - - - -2022-07-28T03:40:30.382750Z -abf87868994aec88a11e08d509edf389 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6613 - -TgeneSolicitudeCreditOpening.java -file - - - - -2022-07-28T03:40:30.383750Z -affb189678bf8507f34a9406191be232 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9885 - -TgeneSolicitudeLiquidationKey.java -file - - - - -2022-07-28T03:40:30.383750Z -d1c09baada024306a5f3291ba4cebf04 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9772 - -TgeneCityKey.java -file - - - - -2022-07-28T03:40:30.383750Z -afa62f86ff063ccf045ae580375d2c39 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4756 - -TgeneAreaKey.java -file - - - - -2022-07-28T03:40:30.383750Z -18e8d7c569b14b05020b4adcdc18e30f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3434 - -TgeneSolicitudeStatusKey.java -file - - - - -2022-07-28T03:40:30.384750Z -f0dfba3a90744c0ea6a6fa872094b0fa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3513 - -TgeneBalanceTypeDetailKey.java -file - - - - -2022-07-28T03:40:30.384750Z -6a6e9b6d79abf8f70235454bc926d6e2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3912 - -TgeneSolicitudeRelationship.java -file - - - - -2022-07-28T03:40:30.384750Z -9bc1df777a494d3297a96551ca5410d2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8910 - -TgeneAccountRelationshipKey.java -file - - - - -2022-07-28T03:40:30.384750Z -799151269bcdcdd2885ad6c30edc90fe -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4226 - -TgeneCashCloseDetail.java -file - - - - -2022-07-28T03:40:30.385750Z -d8eda38b93c7236e883972ef657be30b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4605 - -TgeneAccountInstallChargesKey.java -file - - - - -2022-07-28T03:40:30.385750Z -7dafbef279ef8594f6bdbc78dcf90875 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6376 - -TgeneCatalogEquivalenceDet.java -file - - - - -2022-07-28T03:40:30.385750Z -1076198af5c70cc78771b715e3785301 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12991 - -TgeneOffice.java -file - - - - -2022-07-28T03:40:30.385750Z -1bcc54ad5c00be10ed943e7bfe9a050d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8930 - -TgeneBranch.java -file - - - - -2022-07-28T03:40:30.386750Z -6da7a151d6b2d7c267bde63ee2b9aa9d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6117 - -TgeneBalanceTypeKey.java -file - - - - -2022-07-28T03:40:30.386750Z -eccaf9639bc1946f30e61e247f141026 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3852 - -TgeneBalanceGroup.java -file - - - - -2022-07-28T03:40:30.386750Z -22b3173f528241e921ffe2677e866da4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5615 - -TgeneSolicitudeInstallRatesKey.java -file - - - - -2022-07-28T03:40:30.387750Z -32cd512e93f8a97ac9a1d8e169f259b0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9347 - -TgeneBranchKey.java -file - - - - -2022-07-28T03:40:30.387750Z -8926124c626a5ccebe16ebe12d4b52e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3496 - -TgeneFunctions.java -file - - - - -2022-07-28T03:40:30.387750Z -124a3cac48877cd401a736f554d3c637 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6263 - -TgeneBalanceTypeDetail.java -file - - - - -2022-07-28T03:40:30.387750Z -8f6f53841c352f392fb1b2b34004576e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7705 - -TgeneCatalog.java -file - - - - -2022-07-28T03:40:30.388750Z -413238b4979146a502bca0f5bd0b553a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4471 - -TgeneTransactionMixKey.java -file - - - - -2022-07-28T03:40:30.388750Z -212045469d9a64f58a0731ee675ad1ca -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4171 - -TgeneOperationStatusKey.java -file - - - - -2022-07-28T03:40:30.388750Z -76dcd04328182ae3bcd97df45866caf6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3752 - -TgeneOfficer.java -file - - - - -2022-07-28T03:40:30.388750Z -9cafccdae6d60473c9e953dbd27e7685 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3553 - -TgeneCashCloseKey.java -file - - - - -2022-07-28T03:40:30.389750Z -ccc174e372871b4aad43f729f969ca4e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6766 - -TgeneQueryProcessKey.java -file - - - - -2022-07-28T03:40:30.389750Z -2e463ced75c7cd74ed52b94c880d8848 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3416 - -TgeneSolicitudeKey.java -file - - - - -2022-07-28T03:40:30.389750Z -4d8a103d93bc0555a13e6238c41513e8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4631 - -TgeneAccountRelationship.java -file - - - - -2022-07-28T03:40:30.389750Z -e2518e4daed9d2979ae5e32815e983f3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -14097 - -TgeneEntityKey.java -file - - - - -2022-07-28T03:40:30.390750Z -c4aa127cb4ec51b2cce63842caeb6fbc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3264 - -TgeneOfficerKey.java -file - - - - -2022-07-28T03:40:30.390750Z -e6dc9984cb50e222297cb52409c95fdd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5820 - -TgeneTellerTransferDetailKey.java -file - - - - -2022-07-28T03:40:30.390750Z -ff735d7d53fb68e04f062cc38ebbc762 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7320 - -TgeneWildcard.java -file - - - - -2022-07-28T03:40:30.390750Z -423bca93495f0d69fbb3099d620c04a0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6734 - -TgeneSolicitudeInstallRates.java -file - - - - -2022-07-28T03:40:30.391750Z -49c82e280df7fecca56a06946550e74b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -18458 - -TgeneConcept.java -file - - - - -2022-07-28T03:40:30.391750Z -6139831cb5dd39042387cdc8dcc77c39 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4822 - -TgeneChannels.java -file - - - - -2022-07-28T03:40:30.391750Z -f51e5f3119a486ec0a7bfea24ebd2d01 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4398 - -TgeneAccountInstallRatesKey.java -file - - - - -2022-07-28T03:40:30.392750Z -aa51f22db4099b4507dd0cbcd37b9084 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6630 - -TgeneCantonKey.java -file - - - - -2022-07-28T03:40:30.392750Z -bb51b3ee4193df0eb522bd50f8217e5e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4235 - -TgeneCurrencyRateGroupKey.java -file - - - - -2022-07-28T03:40:30.392750Z -362dbc4d11e5dab41675c26c5e627e98 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5896 - -TgeneCatalogEquivalence.java -file - - - - -2022-07-28T03:40:30.392750Z -aebc3f8d84f97faa5df55bf0785630d7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4678 - -TgeneSolicitudeDebitOpening.java -file - - - - -2022-07-28T03:40:30.393750Z -45da21c46f6d73725d5584ddbd8364fd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8853 - -TgeneTransactionMixPagesKey.java -file - - - - -2022-07-28T03:40:30.393750Z -141d5313c4a3bf73b1884d3f9550af75 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4862 - -TgeneCatalogDetail.java -file - - - - -2022-07-28T03:40:30.393750Z -3f9a1b00415f08bd79ca89fd6307cd61 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7083 - -TgeneParameters.java -file - - - - -2022-07-28T03:40:30.393750Z -adbed023059810f1eb50e3eba8b2d356 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4935 - -TgeneParroquia.java -file - - - - -2022-07-28T03:40:30.394750Z -28cecbce00d81e5c4d1aac860e6fb240 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4355 - -TgeneOperativeCondition.java -file - - - - -2022-07-28T03:40:30.394750Z -7b284e8871f56840fbea1936971c38b0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4834 - -TgeneTellerTransferHeader.java -file - - - - -2022-07-28T03:40:30.394750Z -c83624e7b64607b9d553ae92f2d15c90 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -16094 - -TgeneCompany.java -file - - - - -2022-07-28T03:40:30.394750Z -ef3ce141ffa42e5ee0db49c6df355ac8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6823 - -TgeneCatalogDetailKey.java -file - - - - -2022-07-28T03:40:30.395750Z -e59b7f5b4995196a4d2b7d748bad31a7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3453 - -TgeneSolicitudeLiquidation.java -file - - - - -2022-07-28T03:40:30.395750Z -96cfb24303bbf5fc00e7112e05348279 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9947 - -TgeneTransactionReportLinkKey.java -file - - - - -2022-07-28T03:40:30.395750Z -ce7b7fedac6eeda3c19e099c6568fb5c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5678 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/ABSTgeneSolicitudeRelationship.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/ABSTgeneSolicitudeRelationship.java.svn-base deleted file mode 100644 index 9f7a691..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/ABSTgeneSolicitudeRelationship.java.svn-base +++ /dev/null @@ -1,239 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDERELATIONSHIP*/ -@Entity(name="ABSTgeneSolicitudeRelationship") -@Table(name="TGENESOLICITUDERELATIONSHIP") -public abstract class ABSTgeneSolicitudeRelationship extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeRelationship -*/ -@EmbeddedId -private TgeneSolicitudeRelationshipKey pk; -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="RELATIONSHIPCODE", nullable=true) - -/** -* Codigo de relacion de la cuenta con el cliente -*/ -private String relationshipcode; - -@Column(name="ISPRINCIPAL", nullable=true) - -/** -* Indica si el codigo de relacion es principal, en este caso el codigo de cliente se asocia a la tabla tgeneaccount -*/ -private String isprincipal; - -@Column(name="PRIORITY", nullable=true) - -/** -* Prioridad del cleinte con la solicitud. -*/ -private Integer priority; - -@Column(name="CONDITION", nullable=true) - -/** -* Codicion del cliente con la solicitud. -*/ -private String condition; - -@Column(name="PARTICIPATION", nullable=true) - -/** -* Porcentaje de participacion del cliente con la solicitud. -*/ -private BigDecimal participation; - -@Column(name="ADDRESSNUMBER", nullable=true) - -/** -* Direccion asociada -*/ -private Integer addressnumber; - -@Column(name="PERSONTYPE", nullable=true) - -/** -* 1, Persona natural, 2 Persona Juridica. -*/ -private String persontype; - -/**Entrega la Clave primaria de TgeneSolicitudeRelationship -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeRelationship -*/ -public TgeneSolicitudeRelationshipKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeRelationship -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeRelationship -*/ -public void setPk(TgeneSolicitudeRelationshipKey pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de relationshipcode -@return valor de relationshipcode*/ -public String getRelationshipcode(){ - return relationshipcode; -} -/**Fija el valor de relationshipcode -@param pRelationshipcode nuevo Valor de relationshipcode*/ -public void setRelationshipcode(String pRelationshipcode){ - relationshipcode=pRelationshipcode; -} - -/**Obtiene el valor de isprincipal -@return valor de isprincipal*/ -public String getIsprincipal(){ - return isprincipal; -} -/**Fija el valor de isprincipal -@param pIsprincipal nuevo Valor de isprincipal*/ -public void setIsprincipal(String pIsprincipal){ - isprincipal=pIsprincipal; -} - -/**Obtiene el valor de priority -@return valor de priority*/ -public Integer getPriority(){ - return priority; -} -/**Fija el valor de priority -@param pPriority nuevo Valor de priority*/ -public void setPriority(Integer pPriority){ - priority=pPriority; -} - -/**Obtiene el valor de condition -@return valor de condition*/ -public String getCondition(){ - return condition; -} -/**Fija el valor de condition -@param pCondition nuevo Valor de condition*/ -public void setCondition(String pCondition){ - condition=pCondition; -} - -/**Obtiene el valor de participation -@return valor de participation*/ -public BigDecimal getParticipation(){ - return participation; -} -/**Fija el valor de participation -@param pParticipation nuevo Valor de participation*/ -public void setParticipation(BigDecimal pParticipation){ - participation=pParticipation; -} - -/**Obtiene el valor de addressnumber -@return valor de addressnumber*/ -public Integer getAddressnumber(){ - return addressnumber; -} -/**Fija el valor de addressnumber -@param pAddressnumber nuevo Valor de addressnumber*/ -public void setAddressnumber(Integer pAddressnumber){ - addressnumber=pAddressnumber; -} - -/**Obtiene el valor de persontype -@return valor de persontype*/ -public String getPersontype(){ - return persontype; -} -/**Fija el valor de persontype -@param pPersontype nuevo Valor de persontype*/ -public void setPersontype(String pPersontype){ - persontype=pPersontype; -} - -/**Implementacin de la comparacin de la entidad TgeneSolicitudeRelationship -@param rhs Elemento de Comparacin -@return el resultado de la comparacin -*/ -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeRelationship))return false; - TgeneSolicitudeRelationship that = (TgeneSolicitudeRelationship) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeRelationship -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeRelationship p=(TgeneSolicitudeRelationship)this.clone(); - p.setPk((TgeneSolicitudeRelationshipKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/OptmListaNegra.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/OptmListaNegra.java.svn-base deleted file mode 100644 index c15daca..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/OptmListaNegra.java.svn-base +++ /dev/null @@ -1,582 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; -import java.util.List; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla OPTMLISTANEGRA*/ -@Entity(name="OptmListaNegra") -@Table(name="OPTMLISTANEGRA") -public class OptmListaNegra extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad OptmListaNegra - */ - @Id - @Column(name="ID_LISTANEGRA" ,nullable=false, updatable=false) - private String pk; - @Column(name="PARTMREGIONCOD", nullable=true) - - /** - * Region donde se encuentra registrada la informacin - */ - private String partmregioncod; - - @Column(name="PARTMSUCCOD", nullable=true) - - /** - * Sucursal donde se encuentra registrada la informacin - */ - private String partmsuccod; - - @Column(name="PARTMAGECOD", nullable=true) - - /** - * Agencia donde se encuentra registrada la informacin - */ - private String partmagecod; - - @Column(name="PARTMUNIADMCOD", nullable=true) - - /** - * Departamento donde se encuentra registrada la informacin - */ - private String partmuniadmcod; - - @Column(name="NOMBRE", nullable=true) - - /** - * Nombre de la persona registrada en dicha lista - */ - private String nombre; - - @Column(name="APELLIDO", nullable=true) - - /** - * Apellido de la persona registrada en dicha lista - */ - private String apellido; - - @Column(name="ID_TIPLISNEG", nullable=true) - - /** - * Tipo de Registro codigo Tipo llista (Sindicado,Homonimo) - */ - private Long id_tiplisneg; - - @Column(name="ESTADO", nullable=true) - - /** - * Estado del registro - */ - private String estado; - - @Column(name="FEC_ING_LISNEG", nullable=true) - - /** - * Fecha de registro en la lista negra - */ - private Date fec_ing_lisneg; - - @Column(name="PERMITIR_TRX", nullable=true) - - /** - * Bandera que identifica si el registro es bloque o advertencia - */ - private String permitir_trx; - - @Column(name="IDENTIFICACION", nullable=true) - - /** - * Identificacin de la persona registrada en dicha lista - */ - private String identificacion; - - @Column(name="PARTMCIUDADCOD", nullable=true) - - /** - * Ciudad donde esta registrado segn el CONSEP - */ - private String partmciudadcod; - - @Column(name="FEC_ING_CARGO", nullable=true) - - /** - * Fecha en el que se subio el archivo al sistema - */ - private Date fec_ing_cargo; - - @Column(name="FEC_SAL_CARGO", nullable=true) - - /** - * Fecha en la que se dio de baja del sistema - */ - private Date fec_sal_cargo; - - @Column(name="ID_CARGO", nullable=true) - - /** - * Cdigo del cargo que realizo la actualizacin - */ - private Integer id_cargo; - - @Column(name="ULT_ESTADO", nullable=true) - - /** - * Ultimo estado - */ - private String ult_estado; - - @Column(name="FEC_SAL_LISNEG", nullable=true) - - /** - * Fecha de salida del registro de lista negra - */ - private Date fec_sal_lisneg; - - @Column(name="USU_INGRESA", nullable=true) - - /** - * Usuario que ingreso el registro - */ - private String usu_ingresa; - - @Column(name="USU_MODIFICA", nullable=true) - - /** - * Usuario que modifico el registro - */ - private String usu_modifica; - - @Column(name="FEC_MODIFICA", nullable=true) - - /** - * Fecha de modificacin - */ - private Date fec_modifica; - - @Column(name="ARCHIVO_ORIG", nullable=true) - - /** - * Nombre del archivo plano de la lista negra - */ - private String archivo_orig; - - @Column(name="OBSERVACIONLP", nullable=true) - - /** - * Observaciones del archivo subido - */ - private String observacionlp; - - @Column(name="ID_TIPLISPROPIAS", nullable=true) - - /** - * Identificador de listas propias (actualmente no implementado) - */ - private Long id_tiplispropias; - - @Column(name="OBSERVACION", nullable=true) - - /** - * Observaciones del registro - */ - private String observacion; - - /**Contructor por defecto*/ - public OptmListaNegra(){ - } - /**Contructor de OptmListaNegra - @param pPk Clave Primaria del entity - */ - public OptmListaNegra(String pPk){ - this(); - pk=pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return OptmListaNegra - */ - public static OptmListaNegra find(EntityManager pEntityManager,Object pKey) throws Exception{ - OptmListaNegra obj = pEntityManager.find(OptmListaNegra.class,pKey); - return obj; - } - /**Entrega la Clave primaria de OptmListaNegra - @return El objeto que referencia a la Clave primaria de OptmListaNegra - */ - public String getPk(){ - return pk; - } - /**Fija un nuevo valor a la Clave primaria de OptmListaNegra - @param pPk El objeto que referencia a la nueva Clave primaria de OptmListaNegra - */ - public void setPk(String pPk){ - pk=pPk; - } - /**Obtiene el valor de partmregioncod - @return valor de partmregioncod*/ - public String getPartmregioncod(){ - return partmregioncod; - } - /**Fija el valor de partmregioncod - @param pPartmregioncod nuevo Valor de partmregioncod*/ - public void setPartmregioncod(String pPartmregioncod){ - partmregioncod=pPartmregioncod; - } - - /**Obtiene el valor de partmsuccod - @return valor de partmsuccod*/ - public String getPartmsuccod(){ - return partmsuccod; - } - /**Fija el valor de partmsuccod - @param pPartmsuccod nuevo Valor de partmsuccod*/ - public void setPartmsuccod(String pPartmsuccod){ - partmsuccod=pPartmsuccod; - } - - /**Obtiene el valor de partmagecod - @return valor de partmagecod*/ - public String getPartmagecod(){ - return partmagecod; - } - /**Fija el valor de partmagecod - @param pPartmagecod nuevo Valor de partmagecod*/ - public void setPartmagecod(String pPartmagecod){ - partmagecod=pPartmagecod; - } - - /**Obtiene el valor de partmuniadmcod - @return valor de partmuniadmcod*/ - public String getPartmuniadmcod(){ - return partmuniadmcod; - } - /**Fija el valor de partmuniadmcod - @param pPartmuniadmcod nuevo Valor de partmuniadmcod*/ - public void setPartmuniadmcod(String pPartmuniadmcod){ - partmuniadmcod=pPartmuniadmcod; - } - - /**Obtiene el valor de nombre - @return valor de nombre*/ - public String getNombre(){ - return nombre; - } - /**Fija el valor de nombre - @param pNombre nuevo Valor de nombre*/ - public void setNombre(String pNombre){ - nombre=pNombre; - } - - /**Obtiene el valor de apellido - @return valor de apellido*/ - public String getApellido(){ - return apellido; - } - /**Fija el valor de apellido - @param pApellido nuevo Valor de apellido*/ - public void setApellido(String pApellido){ - apellido=pApellido; - } - - /**Obtiene el valor de id_tiplisneg - @return valor de id_tiplisneg*/ - public Long getId_tiplisneg(){ - return id_tiplisneg; - } - /**Fija el valor de id_tiplisneg - @param pId_tiplisneg nuevo Valor de id_tiplisneg*/ - public void setId_tiplisneg(Long pId_tiplisneg){ - id_tiplisneg=pId_tiplisneg; - } - - /**Obtiene el valor de estado - @return valor de estado*/ - public String getEstado(){ - return estado; - } - /**Fija el valor de estado - @param pEstado nuevo Valor de estado*/ - public void setEstado(String pEstado){ - estado=pEstado; - } - - /**Obtiene el valor de fec_ing_lisneg - @return valor de fec_ing_lisneg*/ - public Date getFec_ing_lisneg(){ - return fec_ing_lisneg; - } - /**Fija el valor de fec_ing_lisneg - @param pFec_ing_lisneg nuevo Valor de fec_ing_lisneg*/ - public void setFec_ing_lisneg(Date pFec_ing_lisneg){ - fec_ing_lisneg=pFec_ing_lisneg; - } - - /**Obtiene el valor de permitir_trx - @return valor de permitir_trx*/ - public String getPermitir_trx(){ - return permitir_trx; - } - /**Fija el valor de permitir_trx - @param pPermitir_trx nuevo Valor de permitir_trx*/ - public void setPermitir_trx(String pPermitir_trx){ - permitir_trx=pPermitir_trx; - } - - /**Obtiene el valor de identificacion - @return valor de identificacion*/ - public String getIdentificacion(){ - return identificacion; - } - /**Fija el valor de identificacion - @param pIdentificacion nuevo Valor de identificacion*/ - public void setIdentificacion(String pIdentificacion){ - identificacion=pIdentificacion; - } - - /**Obtiene el valor de partmciudadcod - @return valor de partmciudadcod*/ - public String getPartmciudadcod(){ - return partmciudadcod; - } - /**Fija el valor de partmciudadcod - @param pPartmciudadcod nuevo Valor de partmciudadcod*/ - public void setPartmciudadcod(String pPartmciudadcod){ - partmciudadcod=pPartmciudadcod; - } - - /**Obtiene el valor de fec_ing_cargo - @return valor de fec_ing_cargo*/ - public Date getFec_ing_cargo(){ - return fec_ing_cargo; - } - /**Fija el valor de fec_ing_cargo - @param pFec_ing_cargo nuevo Valor de fec_ing_cargo*/ - public void setFec_ing_cargo(Date pFec_ing_cargo){ - fec_ing_cargo=pFec_ing_cargo; - } - - /**Obtiene el valor de fec_sal_cargo - @return valor de fec_sal_cargo*/ - public Date getFec_sal_cargo(){ - return fec_sal_cargo; - } - /**Fija el valor de fec_sal_cargo - @param pFec_sal_cargo nuevo Valor de fec_sal_cargo*/ - public void setFec_sal_cargo(Date pFec_sal_cargo){ - fec_sal_cargo=pFec_sal_cargo; - } - - /**Obtiene el valor de id_cargo - @return valor de id_cargo*/ - public Integer getId_cargo(){ - return id_cargo; - } - /**Fija el valor de id_cargo - @param pId_cargo nuevo Valor de id_cargo*/ - public void setId_cargo(Integer pId_cargo){ - id_cargo=pId_cargo; - } - - /**Obtiene el valor de ult_estado - @return valor de ult_estado*/ - public String getUlt_estado(){ - return ult_estado; - } - /**Fija el valor de ult_estado - @param pUlt_estado nuevo Valor de ult_estado*/ - public void setUlt_estado(String pUlt_estado){ - ult_estado=pUlt_estado; - } - - /**Obtiene el valor de fec_sal_lisneg - @return valor de fec_sal_lisneg*/ - public Date getFec_sal_lisneg(){ - return fec_sal_lisneg; - } - /**Fija el valor de fec_sal_lisneg - @param pFec_sal_lisneg nuevo Valor de fec_sal_lisneg*/ - public void setFec_sal_lisneg(Date pFec_sal_lisneg){ - fec_sal_lisneg=pFec_sal_lisneg; - } - - /**Obtiene el valor de usu_ingresa - @return valor de usu_ingresa*/ - public String getUsu_ingresa(){ - return usu_ingresa; - } - /**Fija el valor de usu_ingresa - @param pUsu_ingresa nuevo Valor de usu_ingresa*/ - public void setUsu_ingresa(String pUsu_ingresa){ - usu_ingresa=pUsu_ingresa; - } - - /**Obtiene el valor de usu_modifica - @return valor de usu_modifica*/ - public String getUsu_modifica(){ - return usu_modifica; - } - /**Fija el valor de usu_modifica - @param pUsu_modifica nuevo Valor de usu_modifica*/ - public void setUsu_modifica(String pUsu_modifica){ - usu_modifica=pUsu_modifica; - } - - /**Obtiene el valor de fec_modifica - @return valor de fec_modifica*/ - public Date getFec_modifica(){ - return fec_modifica; - } - /**Fija el valor de fec_modifica - @param pFec_modifica nuevo Valor de fec_modifica*/ - public void setFec_modifica(Date pFec_modifica){ - fec_modifica=pFec_modifica; - } - - /**Obtiene el valor de archivo_orig - @return valor de archivo_orig*/ - public String getArchivo_orig(){ - return archivo_orig; - } - /**Fija el valor de archivo_orig - @param pArchivo_orig nuevo Valor de archivo_orig*/ - public void setArchivo_orig(String pArchivo_orig){ - archivo_orig=pArchivo_orig; - } - - /**Obtiene el valor de observacionlp - @return valor de observacionlp*/ - public String getObservacionlp(){ - return observacionlp; - } - /**Fija el valor de observacionlp - @param pObservacionlp nuevo Valor de observacionlp*/ - public void setObservacionlp(String pObservacionlp){ - observacionlp=pObservacionlp; - } - - /**Obtiene el valor de id_tiplispropias - @return valor de id_tiplispropias*/ - public Long getId_tiplispropias(){ - return id_tiplispropias; - } - /**Fija el valor de id_tiplispropias - @param pId_tiplispropias nuevo Valor de id_tiplispropias*/ - public void setId_tiplispropias(Long pId_tiplispropias){ - id_tiplispropias=pId_tiplispropias; - } - - /**Obtiene el valor de observacion - @return valor de observacion*/ - public String getObservacion(){ - return observacion; - } - /**Fija el valor de observacion - @param pObservacion nuevo Valor de observacion*/ - public void setObservacion(String pObservacion){ - observacion=pObservacion; - } - - public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof OptmListaNegra))return false; - OptmListaNegra that = (OptmListaNegra) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /**Implementacin del metodo hashCode de la la entidad OptmListaNegra - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /**Implementacin toString - */ - public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } - /**Implementacin de la creacin de un bean en blanco OptmListaNegra - */ - public Object createInstance(){ - OptmListaNegra instance=new OptmListaNegra(); - return instance; - } - /**Clona la entidad OptmListaNegra - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException{ - OptmListaNegra p=(OptmListaNegra)this.clone(); - return p; - } - - - // Metodos manuales - - /** Sentencia que devuelve una lista de personas dado el nmero de identificacin.*/ - private static final String HQL_LIST_CONSEP_BY_IDENTIFICATION = - "from OptmListaNegra t " - + " where t.identificacion = :identifica " - + " and t.id_tiplisneg in('1','2')"; - - /** - * Metodo que entrega una lista de personas dado un nmero de identificacin. - * @param pEntityManager Sesion de la base de datos - * @param pIdentification Nmero de identificacin - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pIdentification) throws Exception { - List lneg = null; - Query qry = pEntityManager.createQuery(HQL_LIST_CONSEP_BY_IDENTIFICATION); - qry.setParameter("identifica", pIdentification); - lneg = qry.getResultList(); - return lneg; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallCharges.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallCharges.java.svn-base deleted file mode 100644 index 0aa5882..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallCharges.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTINSTALLCHARGES*/ -@Entity(name="TgeneAccountInstallCharges") -@Table(name="TGENEACCOUNTINSTALLCHARGES") -public class TgeneAccountInstallCharges extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountInstallCharges -*/ -@EmbeddedId -private TgeneAccountInstallChargesKey pk; -@Column(name="DATEFROM", nullable=false) - -/** -* Fecha desde la cual esta definido el valor de cargos a asociar a las cuentas en regeneracion de tablas -*/ -private Timestamp datefrom; - -@Column(name="VALUE", nullable=true) - -/** -* Valor del cargo en la moneda de la operacion -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneAccountInstallCharges(){ -} -/**Contructor de TgeneAccountInstallCharges -@param pPk Clave Primaria del entity -@param pDatefrom Fecha desde la cual esta definido el valor de cargos a asociar a las cuentas en regeneracion de tablas -*/ -public TgeneAccountInstallCharges(TgeneAccountInstallChargesKey pPk,Timestamp pDatefrom){ - this(); - pk=pPk; - datefrom=pDatefrom; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountInstallCharges -*/ -public static TgeneAccountInstallCharges find(EntityManager pEntityManager,TgeneAccountInstallChargesKey pKey) throws Exception{ - TgeneAccountInstallCharges obj = pEntityManager.find(TgeneAccountInstallCharges.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountInstallCharges -@return El objeto que referencia a la Clave primaria de TgeneAccountInstallCharges -*/ -public TgeneAccountInstallChargesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountInstallCharges -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountInstallCharges -*/ -public void setPk(TgeneAccountInstallChargesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountInstallCharges))return false; - TgeneAccountInstallCharges that = (TgeneAccountInstallCharges) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneAccountInstallCharges -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneAccountInstallCharges -*/ -public Object createInstance(){ - TgeneAccountInstallCharges instance=new TgeneAccountInstallCharges(); - instance.setPk(new TgeneAccountInstallChargesKey()); - return instance; -} -/**Clona la entidad TgeneAccountInstallCharges -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountInstallCharges p=(TgeneAccountInstallCharges)this.clone(); - p.setPk((TgeneAccountInstallChargesKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} - - //Metodos manuales. - /**Sentencia que devuelve la definicion de cargos a adicionar a la tabla de amortizacion.*/ - private static final String HQL_ACCOUNT_INSTALLMENT_CHARGES = - "from TgeneAccountInstallCharges taccoinstchr " - + " where taccoinstchr.pk.account = :account " - + " and taccoinstchr.pk.company = :company " - + " and taccoinstchr.pk.dateto = :dateto "; - - /** - * Metodo que entrega una lista con los cargos a adicionar a la tabla de amortizacion para una cuenta. - * @param pAccount Numero de cuenta. - * @param pCompany Compania a la que pertenece la cuenta. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pAccount, - Integer pCompany) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_INSTALLMENT_CHARGES); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - lObjects = qry.getResultList(); - return lObjects; - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallChargesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallChargesKey.java.svn-base deleted file mode 100644 index a2d2184..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallChargesKey.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTINSTALLCHARGES*/ -@Embeddable -public class TgeneAccountInstallChargesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta definido el valor de cargos a asociar a las cuentas en regeneracion de tablas -*/ -private Timestamp dateto; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -/**Contructor por defecto*/ -public TgeneAccountInstallChargesKey(){} -/**Contructor de TgeneAccountInstallChargesKey -@param pAccount Numero de cuenta -@param pDateto Fecha hasta la cual esta definido el valor de cargos a asociar a las cuentas en regeneracion de tablas -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pCompany Codigo de compania a la que pertence la cuenta -*/ -public TgeneAccountInstallChargesKey(String pAccount,Timestamp pDateto,String pBalancetype,String pBalancegroup,Integer pCompany){ - account=pAccount; - dateto=pDateto; - balancetype=pBalancetype; - balancegroup=pBalancegroup; - company=pCompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacin de la comparacin de TgeneAccountInstallChargesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountInstallChargesKey))return false; - TgeneAccountInstallChargesKey that = (TgeneAccountInstallChargesKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountInstallChargesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRates.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRates.java.svn-base deleted file mode 100644 index 4e05b48..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRates.java.svn-base +++ /dev/null @@ -1,696 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTINSTALLRATES */ -@Entity(name = "TgeneAccountInstallRates") -@Table(name = "TGENEACCOUNTINSTALLRATES") -public class TgeneAccountInstallRates extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccountInstallRates - */ - @EmbeddedId - private TgeneAccountInstallRatesKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta definido el registro de tasas que se aplican en una operacio - */ - private Timestamp datefrom; - - @Column(name = "BASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base, BCE tasa banco central - */ - private String baseratecatalog; - - @Column(name = "BASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String baseratecatalogcode; - - @Column(name = "PRINCIPALBALANCETYPE", nullable = true) - /** - * Cdigo de tipo de capital sobre el cual se aplica una tasa y se calcula un valor a provisionar - */ - private String principalbalancetype; - - @Column(name = "PRINCIPALBALANCEGROUP", nullable = true) - /** - * Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor - */ - private String principalbalancegroup; - - @Column(name = "NEGOTIABLE", nullable = true) - /** - * Indica si la tasa se puede negociar con el cliente - */ - private String negotiable; - - @Column(name = "BASERATE", nullable = true) - /** - * Tasa base - */ - private BigDecimal baserate; - - @Column(name = "MARGIN", nullable = true) - /** - * Margen a aplicar dado el operador - */ - private BigDecimal margin; - - @Column(name = "OPERATOR", nullable = true) - /** - * Operador a aplicar sobre la tasa base, +, - , % - */ - private String operator; - - @Column(name = "RATE", nullable = true) - /** - * Tasa total con la cual se calcula provisiones y tabla de pagos - */ - private BigDecimal rate; - - @Column(name = "EFFECTIVERATE", nullable = true) - /** - * Tasa efectiva - */ - private BigDecimal effectiverate; - - @Column(name = "WORKINGDATE", nullable = true) - /** - * Fecha en la que se produjo un cambio - */ - private Date workingdate; - - @Column(name = "REASON", nullable = true) - /** - * Motivo por el que se produjo el cambio: DES (desembolso) , etc - */ - private String reason; - - @Column(name = "READJUSTMENTOPERATOR", nullable = true) - /** - * Operador que se utilizara el momento del reajuste - */ - private String readjustmentoperator; - - @Column(name = "READJUSTMENTMARGIN", nullable = true) - /** - * Margen a aplicar en el reajuste - */ - private BigDecimal readjustmentmargin; - - @Column(name = "CALCULATEDRATE", nullable = true) - /** - * Tasa que se genero al calcular el reajuste. Esta tasa no necesariamente se aplicara, puesto que puede ser mayor que el maximo permitido por la tasa base. - */ - private BigDecimal calculatedrate; - - @Column(name = "ISNOMINALRATE", nullable = true) - /** - * Y, Indica que la defincion de la tasa base es efectiva, en este caso se calcula la tasa nominal, N la tasa base es nominal en este caso se calcula la tasa efectiva. - */ - private String isnominalrate; - - @Column(name = "READJUSTBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base de reajuste, BCE tasa banco central - */ - private String readjustbaseratecatalog; - - @Column(name = "READJUSTBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String readjustbaseratecatalogcode; - - @Column(name = "MAXBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base maxima, BCE tasa banco central - */ - private String maxbaseratecatalog; - - @Column(name = "MAXBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String maxbaseratecatalogcode; - - /** Contructor por defecto */ - public TgeneAccountInstallRates() { - } - - /** - * Contructor de TgeneAccountInstallRates - * - * @param pPk Clave Primaria del entity - */ - public TgeneAccountInstallRates(TgeneAccountInstallRatesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountInstallRates - */ - public static TgeneAccountInstallRates find(EntityManager pEntityManager, TgeneAccountInstallRatesKey pKey) throws Exception { - TgeneAccountInstallRates obj = pEntityManager.find(TgeneAccountInstallRates.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccountInstallRates - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountInstallRates - */ - public TgeneAccountInstallRatesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountInstallRates - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountInstallRates - */ - public void setPk(TgeneAccountInstallRatesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de baseratecatalog - * - * @return valor de baseratecatalog - */ - public String getBaseratecatalog() { - return this.baseratecatalog; - } - - /** - * Fija el valor de baseratecatalog - * - * @param pBaseratecatalog nuevo Valor de baseratecatalog - */ - public void setBaseratecatalog(String pBaseratecatalog) { - this.baseratecatalog = pBaseratecatalog; - } - - /** - * Obtiene el valor de baseratecatalogcode - * - * @return valor de baseratecatalogcode - */ - public String getBaseratecatalogcode() { - return this.baseratecatalogcode; - } - - /** - * Fija el valor de baseratecatalogcode - * - * @param pBaseratecatalogcode nuevo Valor de baseratecatalogcode - */ - public void setBaseratecatalogcode(String pBaseratecatalogcode) { - this.baseratecatalogcode = pBaseratecatalogcode; - } - - /** - * Obtiene el valor de principalbalancetype - * - * @return valor de principalbalancetype - */ - public String getPrincipalbalancetype() { - return this.principalbalancetype; - } - - /** - * Fija el valor de principalbalancetype - * - * @param pPrincipalbalancetype nuevo Valor de principalbalancetype - */ - public void setPrincipalbalancetype(String pPrincipalbalancetype) { - this.principalbalancetype = pPrincipalbalancetype; - } - - /** - * Obtiene el valor de principalbalancegroup - * - * @return valor de principalbalancegroup - */ - public String getPrincipalbalancegroup() { - return this.principalbalancegroup; - } - - /** - * Fija el valor de principalbalancegroup - * - * @param pPrincipalbalancegroup nuevo Valor de principalbalancegroup - */ - public void setPrincipalbalancegroup(String pPrincipalbalancegroup) { - this.principalbalancegroup = pPrincipalbalancegroup; - } - - /** - * Obtiene el valor de negotiable - * - * @return valor de negotiable - */ - public String getNegotiable() { - return this.negotiable; - } - - /** - * Fija el valor de negotiable - * - * @param pNegotiable nuevo Valor de negotiable - */ - public void setNegotiable(String pNegotiable) { - this.negotiable = pNegotiable; - } - - /** - * Obtiene el valor de baserate - * - * @return valor de baserate - */ - public BigDecimal getBaserate() { - return this.baserate; - } - - /** - * Fija el valor de baserate - * - * @param pBaserate nuevo Valor de baserate - */ - public void setBaserate(BigDecimal pBaserate) { - this.baserate = pBaserate; - } - - /** - * Obtiene el valor de margin - * - * @return valor de margin - */ - public BigDecimal getMargin() { - return this.margin; - } - - /** - * Fija el valor de margin - * - * @param pMargin nuevo Valor de margin - */ - public void setMargin(BigDecimal pMargin) { - this.margin = pMargin; - } - - /** - * Obtiene el valor de operator - * - * @return valor de operator - */ - public String getOperator() { - return this.operator; - } - - /** - * Fija el valor de operator - * - * @param pOperator nuevo Valor de operator - */ - public void setOperator(String pOperator) { - this.operator = pOperator; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de effectiverate - * - * @return valor de effectiverate - */ - public BigDecimal getEffectiverate() { - return this.effectiverate; - } - - /** - * Fija el valor de effectiverate - * - * @param pEffectiverate nuevo Valor de effectiverate - */ - public void setEffectiverate(BigDecimal pEffectiverate) { - this.effectiverate = pEffectiverate; - } - - /** - * Obtiene el valor de workingdate - * - * @return valor de workingdate - */ - public Date getWorkingdate() { - return this.workingdate; - } - - /** - * Fija el valor de workingdate - * - * @param pWorkingdate nuevo Valor de workingdate - */ - public void setWorkingdate(Date pWorkingdate) { - this.workingdate = pWorkingdate; - } - - /** - * Obtiene el valor de reason - * - * @return valor de reason - */ - public String getReason() { - return this.reason; - } - - /** - * Fija el valor de reason - * - * @param pReason nuevo Valor de reason - */ - public void setReason(String pReason) { - this.reason = pReason; - } - - /** - * Obtiene el valor de readjustmentoperator - * - * @return valor de readjustmentoperator - */ - public String getReadjustmentoperator() { - return this.readjustmentoperator; - } - - /** - * Fija el valor de readjustmentoperator - * - * @param pReadjustmentoperator nuevo Valor de readjustmentoperator - */ - public void setReadjustmentoperator(String pReadjustmentoperator) { - this.readjustmentoperator = pReadjustmentoperator; - } - - /** - * Obtiene el valor de readjustmentmargin - * - * @return valor de readjustmentmargin - */ - public BigDecimal getReadjustmentmargin() { - return this.readjustmentmargin; - } - - /** - * Fija el valor de readjustmentmargin - * - * @param pReadjustmentmargin nuevo Valor de readjustmentmargin - */ - public void setReadjustmentmargin(BigDecimal pReadjustmentmargin) { - this.readjustmentmargin = pReadjustmentmargin; - } - - /** - * Obtiene el valor de calculatedrate - * - * @return valor de calculatedrate - */ - public BigDecimal getCalculatedrate() { - return this.calculatedrate; - } - - /** - * Fija el valor de calculatedrate - * - * @param pCalculatedrate nuevo Valor de calculatedrate - */ - public void setCalculatedrate(BigDecimal pCalculatedrate) { - this.calculatedrate = pCalculatedrate; - } - - /** - * Obtiene el valor de isnominalrate - * - * @return valor de isnominalrate - */ - public String getIsnominalrate() { - return this.isnominalrate; - } - - /** - * Fija el valor de isnominalrate - * - * @param pIsnominalrate nuevo Valor de isnominalrate - */ - public void setIsnominalrate(String pIsnominalrate) { - this.isnominalrate = pIsnominalrate; - } - - /** - * Obtiene el valor de readjustbaseratecatalog - * - * @return valor de readjustbaseratecatalog - */ - public String getReadjustbaseratecatalog() { - return this.readjustbaseratecatalog; - } - - /** - * Fija el valor de readjustbaseratecatalog - * - * @param pReadjustbaseratecatalog nuevo Valor de readjustbaseratecatalog - */ - public void setReadjustbaseratecatalog(String pReadjustbaseratecatalog) { - this.readjustbaseratecatalog = pReadjustbaseratecatalog; - } - - /** - * Obtiene el valor de readjustbaseratecatalogcode - * - * @return valor de readjustbaseratecatalogcode - */ - public String getReadjustbaseratecatalogcode() { - return this.readjustbaseratecatalogcode; - } - - /** - * Fija el valor de readjustbaseratecatalogcode - * - * @param pReadjustbaseratecatalogcode nuevo Valor de readjustbaseratecatalogcode - */ - public void setReadjustbaseratecatalogcode(String pReadjustbaseratecatalogcode) { - this.readjustbaseratecatalogcode = pReadjustbaseratecatalogcode; - } - - /** - * Obtiene el valor de maxbaseratecatalog - * - * @return valor de maxbaseratecatalog - */ - public String getMaxbaseratecatalog() { - return this.maxbaseratecatalog; - } - - /** - * Fija el valor de maxbaseratecatalog - * - * @param pMaxbaseratecatalog nuevo Valor de maxbaseratecatalog - */ - public void setMaxbaseratecatalog(String pMaxbaseratecatalog) { - this.maxbaseratecatalog = pMaxbaseratecatalog; - } - - /** - * Obtiene el valor de maxbaseratecatalogcode - * - * @return valor de maxbaseratecatalogcode - */ - public String getMaxbaseratecatalogcode() { - return this.maxbaseratecatalogcode; - } - - /** - * Fija el valor de maxbaseratecatalogcode - * - * @param pMaxbaseratecatalogcode nuevo Valor de maxbaseratecatalogcode - */ - public void setMaxbaseratecatalogcode(String pMaxbaseratecatalogcode) { - this.maxbaseratecatalogcode = pMaxbaseratecatalogcode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountInstallRates)) { - return false; - } - TgeneAccountInstallRates that = (TgeneAccountInstallRates) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneAccountInstallRates - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneAccountInstallRates */ - @Override - public Object createInstance() { - TgeneAccountInstallRates instance = new TgeneAccountInstallRates(); - instance.setPk(new TgeneAccountInstallRatesKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccountInstallRates - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountInstallRates p = (TgeneAccountInstallRates) this.clone(); - p.setPk((TgeneAccountInstallRatesKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // Metodos manuales. - - /** Sentencia que devuelve la definicion de valores a provisionar asociados de una cuenta. */ - private static final String HQL_ACCOUNT_RATES = "from TgeneAccountInstallRates taccoinstrate " + " where taccoinstrate.pk.account = :account " - + " and taccoinstrate.pk.company = :company " + " and taccoinstrate.pk.dateto = :dateto "; - - /** - * Metodo que entrega una lista con los tipos de saldos a calcular tabla de amortizacion para una cuenta. - * - * @param pAccount Numero de cuenta. - * @param pCompany Compania a la que pertenece la cuenta. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pAccount, Integer pCompany) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_ACCOUNT_RATES); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.setParameter("dateto", com.fp.common.helper.Constant.getDefaultExpiryDate()); - lObjects = qry.getResultList(); - return lObjects; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRatesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRatesKey.java.svn-base deleted file mode 100644 index dcd1ad9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountInstallRatesKey.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTINSTALLRATES*/ -@Embeddable -public class TgeneAccountInstallRatesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta definido el registro de tasas que se aplican en una operacion -*/ -private Timestamp dateto; - -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Codigo de tipo de saldo que provisiona en la tabla de cuotas. -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String interestbalancegroup; - -/**Contructor por defecto*/ -public TgeneAccountInstallRatesKey(){} -/**Contructor de TgeneAccountInstallRatesKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pDateto Fecha hasta la cual esta definido el registro de tasas que se aplican en una operacion -@param pInterestbalancetype Codigo de tipo de saldo que provisiona en la tabla de cuotas. -@param pInterestbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneAccountInstallRatesKey(String pAccount,Integer pCompany,Timestamp pDateto,String pInterestbalancetype,String pInterestbalancegroup){ - account=pAccount; - company=pCompany; - dateto=pDateto; - interestbalancetype=pInterestbalancetype; - interestbalancegroup=pInterestbalancegroup; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Implementacion de la comparacion de TgeneAccountInstallRatesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountInstallRatesKey))return false; - TgeneAccountInstallRatesKey that = (TgeneAccountInstallRatesKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneAccountInstallRatesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationship.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationship.java.svn-base deleted file mode 100644 index ca39072..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationship.java.svn-base +++ /dev/null @@ -1,378 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTRELATIONSHIP*/ -@Entity(name = "TgeneAccountRelationship") -@Table(name = "TGENEACCOUNTRELATIONSHIP") -public class TgeneAccountRelationship extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneAccountRelationship - */ - @EmbeddedId - private TgeneAccountRelationshipKey pk; - @Column(name = "MODULECODE", nullable = true) - /** - * Codigo de modulo - */ - private String modulecode; - @Column(name = "RELATIONSHIPCODE", nullable = true) - /** - * Codigo de relacion de la cuenta con el cliente - */ - private String relationshipcode; - @Column(name = "ISPRINCIPAL", nullable = true) - /** - * Indica si el codigo de relacion es principal, en este caso el codigo de cliente se asocia a la tabla tgeneaccount - */ - private String isprincipal; - @Column(name = "PRIORITY", nullable = true) - /** - * Prioridad del cliente en la cuenta. - */ - private Integer priority; - @Column(name = "CONDITION", nullable = true) - /** - * Condicion del cliente con la cuenta - */ - private String condition; - @Column(name = "PARTICIPATION", nullable = true) - /** - * Porcentaje de participacion del cliente con la solicitud. - */ - private BigDecimal participation; - @Column(name = "PERSONTYPE", nullable = true) - /** - * 1 Persona natural, 2 Persona Juridica. - */ - private String persontype; - - /**Contructor por defecto*/ - public TgeneAccountRelationship() { - } - - /**Contructor de TgeneAccountRelationship - @param pPk Clave Primaria del entity - */ - public TgeneAccountRelationship(TgeneAccountRelationshipKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountRelationship - */ - public static TgeneAccountRelationship find(EntityManager pEntityManager, TgeneAccountRelationshipKey pKey) throws Exception { - TgeneAccountRelationship obj = pEntityManager.find(TgeneAccountRelationship.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TgeneAccountRelationship - @return El objeto que referencia a la Clave primaria de TgeneAccountRelationship - */ - public TgeneAccountRelationshipKey getPk() { - return this.pk; - } - - /**Fija un nuevo valor a la Clave primaria de TgeneAccountRelationship - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountRelationship - */ - public void setPk(TgeneAccountRelationshipKey pPk) { - this.pk = pPk; - } - - /**Obtiene el valor de modulecode - @return valor de modulecode*/ - public String getModulecode() { - return this.modulecode; - } - - /**Fija el valor de modulecode - @param pModulecode nuevo Valor de modulecode*/ - public void setModulecode(String pModulecode) { - this.modulecode = pModulecode; - } - - /**Obtiene el valor de relationshipcode - @return valor de relationshipcode*/ - public String getRelationshipcode() { - return this.relationshipcode; - } - - /**Fija el valor de relationshipcode - @param pRelationshipcode nuevo Valor de relationshipcode*/ - public void setRelationshipcode(String pRelationshipcode) { - this.relationshipcode = pRelationshipcode; - } - - /**Obtiene el valor de isprincipal - @return valor de isprincipal*/ - public String getIsprincipal() { - return this.isprincipal; - } - - /**Fija el valor de isprincipal - @param pIsprincipal nuevo Valor de isprincipal*/ - public void setIsprincipal(String pIsprincipal) { - this.isprincipal = pIsprincipal; - } - - /**Obtiene el valor de priority - @return valor de priority*/ - public Integer getPriority() { - return this.priority; - } - - /**Fija el valor de priority - @param pPriority nuevo Valor de priority*/ - public void setPriority(Integer pPriority) { - this.priority = pPriority; - } - - /**Obtiene el valor de condition - @return valor de condition*/ - public String getCondition() { - return this.condition; - } - - /**Fija el valor de condition - @param pCondition nuevo Valor de condition*/ - public void setCondition(String pCondition) { - this.condition = pCondition; - } - - /**Obtiene el valor de participation - @return valor de participation*/ - public BigDecimal getParticipation() { - return this.participation; - } - - /**Fija el valor de participation - @param pParticipation nuevo Valor de participation*/ - public void setParticipation(BigDecimal pParticipation) { - this.participation = pParticipation; - } - - /**Obtiene el valor de persontype - @return valor de persontype*/ - public String getPersontype() { - return this.persontype; - } - - /**Fija el valor de persontype - @param pPersontype nuevo Valor de persontype*/ - public void setPersontype(String pPersontype) { - this.persontype = pPersontype; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountRelationship)) { - return false; - } - TgeneAccountRelationship that = (TgeneAccountRelationship) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementaci�n del metodo hashCode de la la entidad TgeneAccountRelationship - @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementaci�n toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementaci�n de la creaci�n de un bean en blanco TgeneAccountRelationship - */ - @Override - public Object createInstance() { - TgeneAccountRelationship instance = new TgeneAccountRelationship(); - instance.setPk(new TgeneAccountRelationshipKey()); - return instance; - } - - /**Clona la entidad TgeneAccountRelationship - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountRelationship p = (TgeneAccountRelationship) this.clone(); - p.setPk((TgeneAccountRelationshipKey) this.pk.cloneMe()); - return p; - } - //METODOS MANUALES - /** Sentencia que devuelve las productos de un cliente. */ - private static final String JPQL_ACC_RELATIONSHIP = "from TgeneAccountRelationship solrel " - + " where solrel.modulecode = :modulecode " + " and solrel.pk.personcode = :personcode "; - /** Sentencia que devuelve las productos de un cliente dado el companycode. */ - private static final String JPQL_ACC_RELATIONSHIP_COMPANY = "from TgeneAccountRelationship solrel " - + " where solrel.modulecode = :modulecode " + " and solrel.pk.personcode = :personcode " + " and solrel.pk.company = :companycode "; - - /** - * Entrega los cuentas de un cliente dado el módulo - * - * @param pModulecode Codigo del modulo. - * @param pPersoncode Codigo del cliente. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findbyclient(EntityManager pEntityManager, String pModulecode, Integer pPersoncode) { - List lAccounts = null; - Query qry = pEntityManager.createQuery(TgeneAccountRelationship.JPQL_ACC_RELATIONSHIP); - qry.setParameter("modulecode", pModulecode); - qry.setParameter("personcode", pPersoncode); - lAccounts = qry.getResultList(); - return lAccounts; - } - - /** - * Entrega los cuentas de un cliente dado el módulo - * - * @param pModulecode Codigo del modulo. - * @param pPersoncode Codigo del cliente. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findbyCompany(EntityManager pEntityManager, String pModulecode, Integer pPersoncode, Integer pCompanycode) { - List lAccounts = null; - Query qry = pEntityManager.createQuery(TgeneAccountRelationship.JPQL_ACC_RELATIONSHIP_COMPANY); - qry.setParameter("modulecode", pModulecode); - qry.setParameter("personcode", pPersoncode); - qry.setParameter("companycode", pCompanycode); - lAccounts = qry.getResultList(); - return lAccounts; - } - - /** Sentencia que devuelve las productos de un cliente. */ - private static final String JPQL_ACC_CLIENTS = "from TgeneAccountRelationship accrel " - + " where accrel.pk.account = :account " + " and accrel.pk.company = :company "; - /** - * Entrega los clientes asociados a una cuenta - * - * @param paccount Cuenta. - * @param pcompany compania de la cuenta - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findbyAccount(EntityManager pEntityManager,String pAccount, Integer pCompany) { - List lAccounts = null; - Query qry = pEntityManager.createQuery(TgeneAccountRelationship.JPQL_ACC_CLIENTS); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - lAccounts = qry.getResultList(); - return lAccounts; - } - - /** Sentencia que devuelve las productos de un cliente. */ - private static final String JPQL_ACC_RELATIONSHIP_PRINCIPAL = " from TgeneAccountRelationship rel " - + "where rel.modulecode = :strCrFacilityProduct and rel.pk.personcode = :pPersoncode " - + "and rel.isprincipal = :clientype and rel.pk.company = :pcompany and rel.pk.account in " - + "( select cfdet.pk.account from TcreditFacilityDetail cfdet where cfdet.pk.modulecode = :pModulecode " - + "and cfdet.pk.productcode = :productcode and cfdet.pk.subproductcode = :subproductcode " - + "and cfdet.pk.company = :pcompany and cfdet.pk.currencycode = :currencycode)"; - - /** - * Findbyclient. - * - * @param pEntityManager the entity manager - * @param pcompany the pcompany - * @param pModulecode the modulecode - * @param productcode the productcode - * @param subproductcode the subproductcode - * @param currencycode the currencycode - * @param pPersoncode the personcode - * @param pisprincipal the pisprincipal - * @return the list - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findbyclient(EntityManager pEntityManager, Integer pcompany, String pModulecode, String productcode, - String subproductcode, String currencycode, Integer pPersoncode, boolean pisprincipal) { - List lAccounts = null; - - String strCrFacilityProduct = "16"; - String strclienttype = !pisprincipal ? "N" : "Y"; - - Query qry = pEntityManager.createQuery(TgeneAccountRelationship.JPQL_ACC_RELATIONSHIP_PRINCIPAL); - qry.setParameter("pcompany", pcompany); - qry.setParameter("pModulecode", pModulecode); - qry.setParameter("productcode", productcode); - qry.setParameter("subproductcode", subproductcode); - qry.setParameter("currencycode", currencycode); - qry.setParameter("pPersoncode", pPersoncode); - qry.setParameter("strCrFacilityProduct", strCrFacilityProduct); - qry.setParameter("clientype", strclienttype); - - lAccounts = qry.getResultList(); - return lAccounts; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationshipKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationshipKey.java.svn-base deleted file mode 100644 index 0d1afe2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAccountRelationshipKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTRELATIONSHIP*/ -@Embeddable -public class TgeneAccountRelationshipKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -/**Contructor por defecto*/ -public TgeneAccountRelationshipKey(){} -/**Contructor de TgeneAccountRelationshipKey -@param pAccount Numero de cuenta -@param pPersoncode Codigo de persona -@param pCompany Codigo de compania a la que pertence la cuenta -*/ -public TgeneAccountRelationshipKey(String pAccount,Integer pPersoncode,Integer pCompany){ - account=pAccount; - personcode=pPersoncode; - company=pCompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacin de la comparacin de TgeneAccountRelationshipKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountRelationshipKey))return false; - TgeneAccountRelationshipKey that = (TgeneAccountRelationshipKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAccountRelationshipKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneArea.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneArea.java.svn-base deleted file mode 100644 index c0b85e4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneArea.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEAREA*/ -@Entity(name="TgeneArea") -@Table(name="TGENEAREA") -public class TgeneArea extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneArea -*/ -@EmbeddedId -private TgeneAreaKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPCTION", nullable=true) - -/** -* Nombre del area -*/ -private String descripction; - -/**Contructor por defecto*/ -public TgeneArea(){ -} -/**Contructor de TgeneArea -@param pPk Clave Primaria del entity -*/ -public TgeneArea(TgeneAreaKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneArea -*/ -public static TgeneArea find(EntityManager pEntityManager,TgeneAreaKey pKey) throws Exception{ - TgeneArea obj = pEntityManager.find(TgeneArea.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneArea -@return El objeto que referencia a la Clave primaria de TgeneArea -*/ -public TgeneAreaKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneArea -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneArea -*/ -public void setPk(TgeneAreaKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de descripction -@return valor de descripction*/ -public String getDescripction(){ - return descripction; -} -/**Fija el valor de descripction -@param pDescripction nuevo Valor de descripction*/ -public void setDescripction(String pDescripction){ - descripction=pDescripction; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneArea))return false; - TgeneArea that = (TgeneArea) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneArea -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneArea -*/ -public Object createInstance(){ - TgeneArea instance=new TgeneArea(); - instance.setPk(new TgeneAreaKey()); - return instance; -} -/**Clona la entidad TgeneArea -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneArea p=(TgeneArea)this.clone(); - p.setPk((TgeneAreaKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAreaKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAreaKey.java.svn-base deleted file mode 100644 index d2e3688..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneAreaKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEAREA*/ -@Embeddable -public class TgeneAreaKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertenece el departamento -*/ -private Integer companycode; - -@Column(name="AREACODE", nullable=false,updatable=false) - -/** -* Codigo de area -*/ -private Integer areacode; - -/**Contructor por defecto*/ -public TgeneAreaKey(){} -/**Contructor de TgeneAreaKey -@param pCompanycode Codigo de compania a la que pertenece el departamento -@param pAreacode Codigo de area -*/ -public TgeneAreaKey(Integer pCompanycode,Integer pAreacode){ - companycode=pCompanycode; - areacode=pAreacode; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de areacode -@return valor de areacode*/ -public Integer getAreacode(){ - return areacode; -} -/**Fija el valor de areacode -@param pAreacode nuevo Valor de areacode*/ -public void setAreacode(Integer pAreacode){ - areacode=pAreacode; -} - -/**Implementacin de la comparacin de TgeneAreaKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAreaKey))return false; - TgeneAreaKey that = (TgeneAreaKey) o; - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getAreacode() == null || that.getAreacode() == null){ - return false; - } - if (! this.getAreacode().equals(that.getAreacode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneAreaKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getAreacode() == null ? 0 : this.getAreacode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceGroup.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceGroup.java.svn-base deleted file mode 100644 index bdc3fb3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceGroup.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBALANCEGROUP*/ -@Entity(name="TgeneBalanceGroup") -@Table(name="TGENEBALANCEGROUP") -public class TgeneBalanceGroup extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBalanceGroup -*/ -@Id -@Column(name="BALANCEGROUP" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="ISADD", nullable=false) - -/** -* Indica que lado de la transaccion relaliza la suma, ejemplo en activos suma D, pasivos suma C -*/ -private String isadd; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del grupo de balance -*/ -private String description; - -@Column(name="OPPOSITE", nullable=true) - -/** -* Codigo de grupo de balance que se afecta por el contrario ejl Balancegroup 61, opposite 62 -*/ -private String opposite; - -/**Contructor por defecto*/ -public TgeneBalanceGroup(){ -} -/**Contructor de TgeneBalanceGroup -@param pPk Clave Primaria del entity -@param pIsadd Indica que lado de la transaccion relaliza la suma, ejemplo en activos suma D, pasivos suma C -@param pDescription Descripcion del grupo de balance -*/ -public TgeneBalanceGroup(String pPk,String pIsadd,String pDescription){ - this(); - pk=pPk; - isadd=pIsadd; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBalanceGroup -*/ -public static TgeneBalanceGroup find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneBalanceGroup obj = pEntityManager.find(TgeneBalanceGroup.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBalanceGroup -@return El objeto que referencia a la Clave primaria de TgeneBalanceGroup -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBalanceGroup -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBalanceGroup -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de isadd -@return valor de isadd*/ -public String getIsadd(){ - return isadd; -} -/**Fija el valor de isadd -@param pIsadd nuevo Valor de isadd*/ -public void setIsadd(String pIsadd){ - isadd=pIsadd; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de opposite -@return valor de opposite*/ -public String getOpposite(){ - return opposite; -} -/**Fija el valor de opposite -@param pOpposite nuevo Valor de opposite*/ -public void setOpposite(String pOpposite){ - opposite=pOpposite; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBalanceGroup))return false; - TgeneBalanceGroup that = (TgeneBalanceGroup) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBalanceGroup -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBalanceGroup -*/ -public Object createInstance(){ - TgeneBalanceGroup instance=new TgeneBalanceGroup(); - return instance; -} -/**Clona la entidad TgeneBalanceGroup -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBalanceGroup p=(TgeneBalanceGroup)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceType.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceType.java.svn-base deleted file mode 100644 index 631106f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceType.java.svn-base +++ /dev/null @@ -1,197 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBALANCETYPE*/ -@Entity(name="TgeneBalanceType") -@Table(name="TGENEBALANCETYPE") -public class TgeneBalanceType extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBalanceType -*/ -@EmbeddedId -private TgeneBalanceTypeKey pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcin del tipo de saldo -*/ -private String description; - -@Column(name="BALANCECATEGORY", nullable=true) - -/** -* Categoria del tipo de saldo, Interes, Capita; Seguros, Cargos, Impuestos etc, -*/ -private String balancecategory; - -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo al que pertenece el tipo de saldo. -*/ -private String modulecode; - -@Column(name="CHARGEFORINSTALLMENT", nullable=true) - -/** -* Y indica que el cargo sirve para incluir en tablas de amortizacion, N el cargo no va a tablas de amortizacion. -*/ -private String chargeforinstallment; - -/**Contructor por defecto*/ -public TgeneBalanceType(){ -} -/**Contructor de TgeneBalanceType -@param pPk Clave Primaria del entity -@param pDescription Descripcin del tipo de saldo -*/ -public TgeneBalanceType(TgeneBalanceTypeKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBalanceType -*/ -public static TgeneBalanceType find(EntityManager pEntityManager,TgeneBalanceTypeKey pKey) throws Exception{ - TgeneBalanceType obj = pEntityManager.find(TgeneBalanceType.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBalanceType -@return El objeto que referencia a la Clave primaria de TgeneBalanceType -*/ -public TgeneBalanceTypeKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBalanceType -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBalanceType -*/ -public void setPk(TgeneBalanceTypeKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de balancecategory -@return valor de balancecategory*/ -public String getBalancecategory(){ - return balancecategory; -} -/**Fija el valor de balancecategory -@param pBalancecategory nuevo Valor de balancecategory*/ -public void setBalancecategory(String pBalancecategory){ - balancecategory=pBalancecategory; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de chargeforinstallment -@return valor de chargeforinstallment*/ -public String getChargeforinstallment(){ - return chargeforinstallment; -} -/**Fija el valor de chargeforinstallment -@param pChargeforinstallment nuevo Valor de chargeforinstallment*/ -public void setChargeforinstallment(String pChargeforinstallment){ - chargeforinstallment=pChargeforinstallment; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBalanceType))return false; - TgeneBalanceType that = (TgeneBalanceType) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBalanceType -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBalanceType -*/ -public Object createInstance(){ - TgeneBalanceType instance=new TgeneBalanceType(); - instance.setPk(new TgeneBalanceTypeKey()); - return instance; -} -/**Clona la entidad TgeneBalanceType -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBalanceType p=(TgeneBalanceType)this.clone(); - p.setPk((TgeneBalanceTypeKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetail.java.svn-base deleted file mode 100644 index 3174975..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetail.java.svn-base +++ /dev/null @@ -1,269 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBALANCETYPEDETAIL*/ -@Entity(name="TgeneBalanceTypeDetail") -@Table(name="TGENEBALANCETYPEDETAIL") -public class TgeneBalanceTypeDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBalanceTypeDetail -*/ -@EmbeddedId -private TgeneBalanceTypeDetailKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de bloqueo optimista del registro -*/ -private Integer recordversion; - -@Column(name="COMMANDBALANCE", nullable=true) - -/** -* Clase que se encarga de la actualizacin de saldos -*/ -private String commandbalance; - -@Column(name="FIELDNAME", nullable=true) - -/** -* Campo que actualiza la actualiza en el commandbalance asociado al tipo de saldo, Ejemplo cash, Locked -*/ -private String fieldname; - -@Column(name="ACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable asociado al tipo de saldo grupo de balance, Ejemplo 2101PPMMEE01 o 51040101 -*/ -private String accountingcode; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro se almacena en cache del servidor de aplicaciones. -*/ -private String managecache; - -@Column(name="ISPROVISON", nullable=true) - -/** -* Indica que en valor del tipo de saldo es resultado del calculo de provisiones -*/ -private String isprovison; - -@Column(name="CALCULATEPROVISION", nullable=true) - -/** -* Indica si se calcula accruales sobre el saldo asociado al tipo de saldo -*/ -private String calculateprovision; - -@Column(name="BRANCHAMONG", nullable=true) - -/** -* null -*/ -private String branchamong; - -/**Contructor por defecto*/ -public TgeneBalanceTypeDetail(){ -} -/**Contructor de TgeneBalanceTypeDetail -@param pPk Clave Primaria del entity -*/ -public TgeneBalanceTypeDetail(TgeneBalanceTypeDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBalanceTypeDetail -*/ -public static TgeneBalanceTypeDetail find(EntityManager pEntityManager,TgeneBalanceTypeDetailKey pKey) throws Exception{ - TgeneBalanceTypeDetail obj = pEntityManager.find(TgeneBalanceTypeDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBalanceTypeDetail -@return El objeto que referencia a la Clave primaria de TgeneBalanceTypeDetail -*/ -public TgeneBalanceTypeDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBalanceTypeDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBalanceTypeDetail -*/ -public void setPk(TgeneBalanceTypeDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de commandbalance -@return valor de commandbalance*/ -public String getCommandbalance(){ - return commandbalance; -} -/**Fija el valor de commandbalance -@param pCommandbalance nuevo Valor de commandbalance*/ -public void setCommandbalance(String pCommandbalance){ - commandbalance=pCommandbalance; -} - -/**Obtiene el valor de fieldname -@return valor de fieldname*/ -public String getFieldname(){ - return fieldname; -} -/**Fija el valor de fieldname -@param pFieldname nuevo Valor de fieldname*/ -public void setFieldname(String pFieldname){ - fieldname=pFieldname; -} - -/**Obtiene el valor de accountingcode -@return valor de accountingcode*/ -public String getAccountingcode(){ - return accountingcode; -} -/**Fija el valor de accountingcode -@param pAccountingcode nuevo Valor de accountingcode*/ -public void setAccountingcode(String pAccountingcode){ - accountingcode=pAccountingcode; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -/**Obtiene el valor de isprovison -@return valor de isprovison*/ -public String getIsprovison(){ - return isprovison; -} -/**Fija el valor de isprovison -@param pIsprovison nuevo Valor de isprovison*/ -public void setIsprovison(String pIsprovison){ - isprovison=pIsprovison; -} - -/**Obtiene el valor de calculateprovision -@return valor de calculateprovision*/ -public String getCalculateprovision(){ - return calculateprovision; -} -/**Fija el valor de calculateprovision -@param pCalculateprovision nuevo Valor de calculateprovision*/ -public void setCalculateprovision(String pCalculateprovision){ - calculateprovision=pCalculateprovision; -} - -/**Obtiene el valor de branchamong -@return valor de branchamong*/ -public String getBranchamong(){ - return branchamong; -} -/**Fija el valor de branchamong -@param pBranchamong nuevo Valor de branchamong*/ -public void setBranchamong(String pBranchamong){ - branchamong=pBranchamong; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBalanceTypeDetail))return false; - TgeneBalanceTypeDetail that = (TgeneBalanceTypeDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneBalanceTypeDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneBalanceTypeDetail -*/ -public Object createInstance(){ - TgeneBalanceTypeDetail instance=new TgeneBalanceTypeDetail(); - instance.setPk(new TgeneBalanceTypeDetailKey()); - return instance; -} -/**Clona la entidad TgeneBalanceTypeDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBalanceTypeDetail p=(TgeneBalanceTypeDetail)this.clone(); - p.setPk((TgeneBalanceTypeDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetailKey.java.svn-base deleted file mode 100644 index 2a487e1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeDetailKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBALANCETYPEDETAIL*/ -@Embeddable -public class TgeneBalanceTypeDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneBalanceTypeDetailKey(){} -/**Contructor de TgeneBalanceTypeDetailKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneBalanceTypeDetailKey(String pBalancetype,String pBalancegroup){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneBalanceTypeDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBalanceTypeDetailKey))return false; - TgeneBalanceTypeDetailKey that = (TgeneBalanceTypeDetailKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBalanceTypeDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeKey.java.svn-base deleted file mode 100644 index 157434a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBalanceTypeKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBALANCETYPE*/ -@Embeddable -public class TgeneBalanceTypeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneBalanceTypeKey(){} -/**Contructor de TgeneBalanceTypeKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneBalanceTypeKey(String pBalancetype,String pBalancegroup){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneBalanceTypeKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBalanceTypeKey))return false; - TgeneBalanceTypeKey that = (TgeneBalanceTypeKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBalanceTypeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranch.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranch.java.svn-base deleted file mode 100644 index 825b6bd..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranch.java.svn-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; -import com.fp.general.exception.GeneralException; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEBRANCH - */ -@Entity(name = "TgeneBranch") -@Table(name = "TGENEBRANCH") -public class TgeneBranch extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneBranch - */ - @EmbeddedId - private TgeneBranchKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = true) - /** - * Nombre de la sucursal - */ - private String description; - - /** Contructor por defecto */ - public TgeneBranch() { - } - - /** - * Contructor de TgeneBranch - * - * @param pPk - * Clave Primaria del entity - */ - public TgeneBranch(TgeneBranchKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneBranch - */ - public static TgeneBranch find(EntityManager pEntityManager, - TgeneBranchKey pKey) throws Exception { - TgeneBranch obj = pEntityManager.find(TgeneBranch.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneBranch - * - * @return El objeto que referencia a la Clave primaria de TgeneBranch - */ - public TgeneBranchKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneBranch - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneBranch - */ - public void setPk(TgeneBranchKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription - * nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneBranch)) - return false; - TgeneBranch that = (TgeneBranch) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneBranch - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneBranch */ - public Object createInstance() { - TgeneBranch instance = new TgeneBranch(); - instance.setPk(new TgeneBranchKey()); - return instance; - } - - /** - * Clona la entidad TgeneBranch - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneBranch p = (TgeneBranch) this.clone(); - p.setPk((TgeneBranchKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve un registro de TgeneBranch.*/ - private static final String JPQL_BRANCH = - "from TgeneBranch tb " - + " where tb.pk.branchcode = :branch " - + " and tb.pk.companycode = :company "; - - /** - * Metodo que entrega datos de una sucursal definidos en TgeneBranch. - * @param pBranch Codigo de sucursal. - * @param pCompany Compania a la que pertenece la cuenta. - * @return TgeneBranch - * @throws Exception - */ - public static TgeneBranch find(EntityManager pEntityManager ,Integer pBranch, Integer pCompany) throws Exception { - Query qry = pEntityManager.createQuery(JPQL_BRANCH); - qry.setParameter("branch", pBranch); - qry.setParameter("company", pCompany); - try { - return (TgeneBranch) qry.getSingleResult(); - } catch (NoResultException e) { - throw new GeneralException("GENE-0001", "SUCURSAL NO DEFINIDA EN TGENEBRANCH: BRANCH:{0} COMPANY:{1}", - pBranch, pCompany); - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranchKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranchKey.java.svn-base deleted file mode 100644 index 0a31e06..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneBranchKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBRANCH*/ -@Embeddable -public class TgeneBranchKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la sucursal -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneBranchKey(){} -/**Contructor de TgeneBranchKey -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la sucursal -*/ -public TgeneBranchKey(Integer pBranchcode,Integer pCompanycode){ - branchcode=pBranchcode; - companycode=pCompanycode; -} -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TgeneBranchKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBranchKey))return false; - TgeneBranchKey that = (TgeneBranchKey) o; - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneBranchKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCanton.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCanton.java.svn-base deleted file mode 100644 index 1e935db..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCanton.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECANTON*/ -@Entity(name="TgeneCanton") -@Table(name="TGENECANTON") -public class TgeneCanton extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCanton -*/ -@EmbeddedId -private TgeneCantonKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del canton. -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneCanton(){ -} -/**Contructor de TgeneCanton -@param pPk Clave Primaria del entity -*/ -public TgeneCanton(TgeneCantonKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCanton -*/ -public static TgeneCanton find(EntityManager pEntityManager,TgeneCantonKey pKey) throws Exception{ - TgeneCanton obj = pEntityManager.find(TgeneCanton.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCanton -@return El objeto que referencia a la Clave primaria de TgeneCanton -*/ -public TgeneCantonKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCanton -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCanton -*/ -public void setPk(TgeneCantonKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCanton))return false; - TgeneCanton that = (TgeneCanton) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCanton -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCanton -*/ -public Object createInstance(){ - TgeneCanton instance=new TgeneCanton(); - instance.setPk(new TgeneCantonKey()); - return instance; -} -/**Clona la entidad TgeneCanton -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCanton p=(TgeneCanton)this.clone(); - p.setPk((TgeneCantonKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCantonKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCantonKey.java.svn-base deleted file mode 100644 index c56cc6d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCantonKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECANTON*/ -@Embeddable -public class TgeneCantonKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COUNTRYCODE", nullable=false,updatable=false) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=false,updatable=false) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=false,updatable=false) - -/** -* Codigo de canton -*/ -private String cantoncode; - -/**Contructor por defecto*/ -public TgeneCantonKey(){} -/**Contructor de TgeneCantonKey -@param pCountrycode Codigo de pais -@param pProvincecode Codigo de provincia -@param pCantoncode Codigo de canton -*/ -public TgeneCantonKey(String pCountrycode,String pProvincecode,String pCantoncode){ - countrycode=pCountrycode; - provincecode=pProvincecode; - cantoncode=pCantoncode; -} -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Implementacin de la comparacin de TgeneCantonKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCantonKey))return false; - TgeneCantonKey that = (TgeneCantonKey) o; - if (this.getCountrycode() == null || that.getCountrycode() == null){ - return false; - } - if (! this.getCountrycode().equals(that.getCountrycode())){ - return false; - } - if (this.getProvincecode() == null || that.getProvincecode() == null){ - return false; - } - if (! this.getProvincecode().equals(that.getProvincecode())){ - return false; - } - if (this.getCantoncode() == null || that.getCantoncode() == null){ - return false; - } - if (! this.getCantoncode().equals(that.getCantoncode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCantonKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCountrycode() == null ? 0 : this.getCountrycode().hashCode()); - result = result * 37 + (this.getProvincecode() == null ? 0 : this.getProvincecode().hashCode()); - result = result * 37 + (this.getCantoncode() == null ? 0 : this.getCantoncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashClose.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashClose.java.svn-base deleted file mode 100644 index 1d47c7b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashClose.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECASHCLOSE*/ -@Entity(name="TgeneCashClose") -@Table(name="TGENECASHCLOSE") -public class TgeneCashClose extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCashClose -*/ -@EmbeddedId -private TgeneCashCloseKey pk; -/**Contructor por defecto*/ -public TgeneCashClose(){ -} -/**Contructor de TgeneCashClose -@param pPk Clave Primaria del entity -*/ -public TgeneCashClose(TgeneCashCloseKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCashClose -*/ -public static TgeneCashClose find(EntityManager pEntityManager,TgeneCashCloseKey pKey) throws Exception{ - TgeneCashClose obj = pEntityManager.find(TgeneCashClose.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCashClose -@return El objeto que referencia a la Clave primaria de TgeneCashClose -*/ -public TgeneCashCloseKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCashClose -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCashClose -*/ -public void setPk(TgeneCashCloseKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCashClose))return false; - TgeneCashClose that = (TgeneCashClose) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCashClose -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCashClose -*/ -public Object createInstance(){ - TgeneCashClose instance=new TgeneCashClose(); - instance.setPk(new TgeneCashCloseKey()); - return instance; -} -/**Clona la entidad TgeneCashClose -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCashClose p=(TgeneCashClose)this.clone(); - p.setPk((TgeneCashCloseKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetail.java.svn-base deleted file mode 100644 index 3e67032..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetail.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECASHCLOSEDETAIL*/ -@Entity(name="TgeneCashCloseDetail") -@Table(name="TGENECASHCLOSEDETAIL") -public class TgeneCashCloseDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCashCloseDetail -*/ -@EmbeddedId -private TgeneCashCloseDetailKey pk; -@Column(name="QUANTITY", nullable=true) - -/** -* Numero de billetes o monedas por denominacion -*/ -private Integer quantity; - -@Column(name="TOTAL", nullable=true) - -/** -* Total de la denominacion -*/ -private BigDecimal total; - -/**Contructor por defecto*/ -public TgeneCashCloseDetail(){ -} -/**Contructor de TgeneCashCloseDetail -@param pPk Clave Primaria del entity -*/ -public TgeneCashCloseDetail(TgeneCashCloseDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCashCloseDetail -*/ -public static TgeneCashCloseDetail find(EntityManager pEntityManager,TgeneCashCloseDetailKey pKey) throws Exception{ - TgeneCashCloseDetail obj = pEntityManager.find(TgeneCashCloseDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCashCloseDetail -@return El objeto que referencia a la Clave primaria de TgeneCashCloseDetail -*/ -public TgeneCashCloseDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCashCloseDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCashCloseDetail -*/ -public void setPk(TgeneCashCloseDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de quantity -@return valor de quantity*/ -public Integer getQuantity(){ - return quantity; -} -/**Fija el valor de quantity -@param pQuantity nuevo Valor de quantity*/ -public void setQuantity(Integer pQuantity){ - quantity=pQuantity; -} - -/**Obtiene el valor de total -@return valor de total*/ -public BigDecimal getTotal(){ - return total; -} -/**Fija el valor de total -@param pTotal nuevo Valor de total*/ -public void setTotal(BigDecimal pTotal){ - total=pTotal; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCashCloseDetail))return false; - TgeneCashCloseDetail that = (TgeneCashCloseDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCashCloseDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCashCloseDetail -*/ -public Object createInstance(){ - TgeneCashCloseDetail instance=new TgeneCashCloseDetail(); - instance.setPk(new TgeneCashCloseDetailKey()); - return instance; -} -/**Clona la entidad TgeneCashCloseDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCashCloseDetail p=(TgeneCashCloseDetail)this.clone(); - p.setPk((TgeneCashCloseDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetailKey.java.svn-base deleted file mode 100644 index 6f3d8df..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseDetailKey.java.svn-base +++ /dev/null @@ -1,315 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENECASHCLOSEDETAIL*/ -@Embeddable -public class TgeneCashCloseDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -@Column(name="DENOMINATIONVALUE", nullable=false,updatable=false) - -/** -* Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -private BigDecimal denominationvalue; - -/**Contructor por defecto*/ -public TgeneCashCloseDetailKey(){} -/**Contructor de TgeneCashCloseDetailKey -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pUsercode Codigo de usuario que origina la transferencia -@param pCurrencycode Codigo de moneda -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pDenominationvalue Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -public TgeneCashCloseDetailKey(Date pWorkingdate,String pUsercode,String pCurrencycode,Integer pOfficecode,Integer pBranchcode,Integer pCompanycode,String pCatalog,String pCatalogcode,BigDecimal pDenominationvalue){ - workingdate=pWorkingdate; - usercode=pUsercode; - currencycode=pCurrencycode; - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; - catalog=pCatalog; - catalogcode=pCatalogcode; - denominationvalue=pDenominationvalue; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Obtiene el valor de denominationvalue -@return valor de denominationvalue*/ -public BigDecimal getDenominationvalue(){ - return denominationvalue; -} -/**Fija el valor de denominationvalue -@param pDenominationvalue nuevo Valor de denominationvalue*/ -public void setDenominationvalue(BigDecimal pDenominationvalue){ - denominationvalue=pDenominationvalue; -} - -/**Implementacin de la comparacin de TgeneCashCloseDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCashCloseDetailKey))return false; - TgeneCashCloseDetailKey that = (TgeneCashCloseDetailKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - if (this.getDenominationvalue() == null || that.getDenominationvalue() == null){ - return false; - } - if (! this.getDenominationvalue().equals(that.getDenominationvalue())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCashCloseDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - result = result * 37 + (this.getDenominationvalue() == null ? 0 : this.getDenominationvalue().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeader.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeader.java.svn-base deleted file mode 100644 index 2f8eb6a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeader.java.svn-base +++ /dev/null @@ -1,365 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECASHCLOSEHEADER */ -@Entity(name = "TgeneCashCloseHeader") -@Table(name = "TGENECASHCLOSEHEADER") -public class TgeneCashCloseHeader extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneCashCloseHeader - */ - @EmbeddedId - private TgeneCashCloseHeaderKey pk; - - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el registro - */ - private Timestamp datefrom; - - @Column(name = "STATUSCATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String statuscatalog; - - @Column(name = "STATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String statuscatalogcode; - - @Column(name = "TOTAL", nullable = true) - /** - * Monto total del cierre de caja por moneda - */ - private BigDecimal total; - - @Column(name = "JOURNALID", nullable = true) - /** - * Numero de mensaje con el que se genera el financiero. - */ - private String journalid; - - /** Contructor por defecto */ - public TgeneCashCloseHeader() { - } - - /** - * Contructor de TgeneCashCloseHeader - * - * @param pPk Clave Primaria del entity - */ - public TgeneCashCloseHeader(TgeneCashCloseHeaderKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCashCloseHeader - */ - public static TgeneCashCloseHeader find(EntityManager pEntityManager, TgeneCashCloseHeaderKey pKey) throws Exception { - TgeneCashCloseHeader obj = pEntityManager.find(TgeneCashCloseHeader.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCashCloseHeader - * - * @return El objeto que referencia a la Clave primaria de TgeneCashCloseHeader - */ - public TgeneCashCloseHeaderKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCashCloseHeader - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneCashCloseHeader - */ - public void setPk(TgeneCashCloseHeaderKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de statuscatalog - * - * @return valor de statuscatalog - */ - public String getStatuscatalog() { - return this.statuscatalog; - } - - /** - * Fija el valor de statuscatalog - * - * @param pStatuscatalog nuevo Valor de statuscatalog - */ - public void setStatuscatalog(String pStatuscatalog) { - this.statuscatalog = pStatuscatalog; - } - - /** - * Obtiene el valor de statuscatalogcode - * - * @return valor de statuscatalogcode - */ - public String getStatuscatalogcode() { - return this.statuscatalogcode; - } - - /** - * Fija el valor de statuscatalogcode - * - * @param pStatuscatalogcode nuevo Valor de statuscatalogcode - */ - public void setStatuscatalogcode(String pStatuscatalogcode) { - this.statuscatalogcode = pStatuscatalogcode; - } - - /** - * Obtiene el valor de total - * - * @return valor de total - */ - public BigDecimal getTotal() { - return this.total; - } - - /** - * Fija el valor de total - * - * @param pTotal nuevo Valor de total - */ - public void setTotal(BigDecimal pTotal) { - this.total = pTotal; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCashCloseHeader)) { - return false; - } - TgeneCashCloseHeader that = (TgeneCashCloseHeader) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneCashCloseHeader - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneCashCloseHeader */ - @Override - public Object createInstance() { - TgeneCashCloseHeader instance = new TgeneCashCloseHeader(); - instance.setPk(new TgeneCashCloseHeaderKey()); - return instance; - } - - /** - * Clona la entidad TgeneCashCloseHeader - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneCashCloseHeader p = (TgeneCashCloseHeader) this.clone(); - p.setPk((TgeneCashCloseHeaderKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // METODOS MANUALES - /** Sentencia que entrega la los datos de TgeneCashCloseHeader */ - private static final String JPQL_CASH_CLOSE_HEADER = " from TgeneCashCloseHeader cch" + " where cch.pk.workingdate = :workingdate" - + " and cch.pk.usercode = :usercode" + " and cch.pk.currencycode = :currencycode" + " and cch.pk.officecode = :officecode" - + " and cch.pk.branchcode = :branchcode" + " and cch.pk.companycode = :companycode" + " and cch.pk.dateto = :dateto"; - - /** - * Metodo que entrega los datos de TgeneCashCloseHeader - * - * @param pEntityManager Session de la base de datos. - * @param workingdate Fecha de trabajo - * @param usercode Codigo de usuario - * @param currencycode Codigo de moneda - * @param companycode Codigo de compania - * @param branchcode Codigo de sucursal - * @param officecode Codigo de oficina - * @return - * @throws Exception - */ - public static TgeneCashCloseHeader find(EntityManager pEntityManager, Date workingdate, String usercode, String currencycode, - Integer companycode, Integer branchcode, Integer officecode) throws Exception { - Query qry = pEntityManager.createQuery(TgeneCashCloseHeader.JPQL_CASH_CLOSE_HEADER); - qry.setParameter(Constant.VWORKINGDATE, workingdate); - qry.setParameter("usercode", usercode); - qry.setParameter("currencycode", currencycode); - qry.setParameter("officecode", officecode); - qry.setParameter("branchcode", branchcode); - qry.setParameter("companycode", companycode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - try { - return (TgeneCashCloseHeader) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - /** - * Sentencia que entrega la los datos de TgeneCashCloseHeader - */ - private static final String JPQL_CASH_CLOSE_HEADER_WITH_STATUS = " from TgeneCashCloseHeader cch" + " where cch.pk.workingdate = :workingdate" - + " and cch.pk.usercode = :usercode" + " and cch.pk.currencycode = :currencycode" + " and cch.pk.officecode = :officecode" - + " and cch.pk.branchcode = :branchcode" + " and cch.pk.companycode = :companycode" + " and cch.pk.dateto = :dateto" - + " and cch.statuscatalog = :statuscatalog"; - - /** - * Metodo que entrega los datos de TgeneCashCloseHeader, dada la fecha de trabajo, usuario y secuencia. - * - * @param pEntityManager Session de la base de datos. - * @param workingdate Fecha de trabajo - * @param usercode Codigo de usuario - * @param workingdate - * @param currencycode - * @param companycode - * @param branchcode - * @param officecode - * @return - * @throws Exception - */ - public static TgeneCashCloseHeader find(EntityManager pEntityManager, String usercode, String statuscatalog, Date workingdate, - String currencycode, Integer companycode, Integer branchcode, Integer officecode) throws Exception { - Query qry = pEntityManager.createQuery(TgeneCashCloseHeader.JPQL_CASH_CLOSE_HEADER_WITH_STATUS); - qry.setParameter(Constant.VWORKINGDATE, workingdate); - qry.setParameter("usercode", usercode); - qry.setParameter("currencycode", currencycode); - qry.setParameter("officecode", officecode); - qry.setParameter("branchcode", branchcode); - qry.setParameter("companycode", companycode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("statuscatalog", statuscatalog); - try { - return (TgeneCashCloseHeader) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeaderKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeaderKey.java.svn-base deleted file mode 100644 index 16d2027..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseHeaderKey.java.svn-base +++ /dev/null @@ -1,265 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENECASHCLOSEHEADER*/ -@Embeddable -public class TgeneCashCloseHeaderKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneCashCloseHeaderKey(){} -/**Contructor de TgeneCashCloseHeaderKey -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pUsercode Codigo de usuario que origina la transferencia -@param pCurrencycode Codigo de moneda -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pDateto Fecha hasta la cual esta vigente el registro. -*/ -public TgeneCashCloseHeaderKey(Date pWorkingdate,String pUsercode,String pCurrencycode,Integer pOfficecode,Integer pBranchcode,Integer pCompanycode,Timestamp pDateto){ - workingdate=pWorkingdate; - usercode=pUsercode; - currencycode=pCurrencycode; - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; - dateto=pDateto; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgeneCashCloseHeaderKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCashCloseHeaderKey))return false; - TgeneCashCloseHeaderKey that = (TgeneCashCloseHeaderKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCashCloseHeaderKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseKey.java.svn-base deleted file mode 100644 index 746b851..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCashCloseKey.java.svn-base +++ /dev/null @@ -1,233 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENECASHCLOSE*/ -@Embeddable -public class TgeneCashCloseKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneCashCloseKey(){} -/**Contructor de TgeneCashCloseKey -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pUsercode Codigo de usuario que origina la transferencia -@param pCurrencycode Codigo de moneda -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -*/ -public TgeneCashCloseKey(Date pWorkingdate,String pUsercode,String pCurrencycode,Integer pOfficecode,Integer pBranchcode,Integer pCompanycode){ - workingdate=pWorkingdate; - usercode=pUsercode; - currencycode=pCurrencycode; - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TgeneCashCloseKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCashCloseKey))return false; - TgeneCashCloseKey that = (TgeneCashCloseKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCashCloseKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalog.java.svn-base deleted file mode 100644 index 85b646c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalog.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECATALOG*/ -@Entity(name="TgeneCatalog") -@Table(name="TGENECATALOG") -public class TgeneCatalog extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCatalog -*/ -@Id -@Column(name="CATALOGCODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Nombre de la tabla de catalogo -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneCatalog(){ -} -/**Contructor de TgeneCatalog -@param pPk Clave Primaria del entity -@param pDescription Nombre de la tabla de catalogo -*/ -public TgeneCatalog(String pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCatalog -*/ -public static TgeneCatalog find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneCatalog obj = pEntityManager.find(TgeneCatalog.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCatalog -@return El objeto que referencia a la Clave primaria de TgeneCatalog -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCatalog -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCatalog -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCatalog))return false; - TgeneCatalog that = (TgeneCatalog) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCatalog -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCatalog -*/ -public Object createInstance(){ - TgeneCatalog instance=new TgeneCatalog(); - return instance; -} -/**Clona la entidad TgeneCatalog -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCatalog p=(TgeneCatalog)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetail.java.svn-base deleted file mode 100644 index fea3d66..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetail.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECATALOGDETAIL */ -@Entity(name = "TgeneCatalogDetail") -@Table(name = "TGENECATALOGDETAIL") -public class TgeneCatalogDetail extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneCatalogDetail - */ - @EmbeddedId - private TgeneCatalogDetailKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = false) - /** - * Descripcion del catalogo - */ - private String description; - - @Column(name = "LEGALCODE", nullable = true) - /** - * Codigo del organismo de control - */ - private String legalcode; - - /** Contructor por defecto */ - public TgeneCatalogDetail() { - } - - /** - * Contructor de TgeneCatalogDetail - * - * @param pPk Clave Primaria del entity - * @param pDescription Descripcion del catalogo - */ - public TgeneCatalogDetail(TgeneCatalogDetailKey pPk, String pDescription) { - this(); - pk = pPk; - description = pDescription; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCatalogDetail - */ - public static TgeneCatalogDetail find(EntityManager pEntityManager, TgeneCatalogDetailKey pKey) throws Exception { - TgeneCatalogDetail obj = pEntityManager.find(TgeneCatalogDetail.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCatalogDetail - * - * @return El objeto que referencia a la Clave primaria de TgeneCatalogDetail - */ - public TgeneCatalogDetailKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCatalogDetail - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneCatalogDetail - */ - public void setPk(TgeneCatalogDetailKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de legalcode - * - * @return valor de legalcode - */ - public String getLegalcode() { - return legalcode; - } - - /** - * Fija el valor de legalcode - * - * @param pLegalcode nuevo Valor de legalcode - */ - public void setLegalcode(String pLegalcode) { - legalcode = pLegalcode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCatalogDetail)) { - return false; - } - TgeneCatalogDetail that = (TgeneCatalogDetail) rhs; - if (getPk() == null || that.getPk() == null) { - return false; - } - return getPk().equals(that.getPk()); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneCatalogDetail - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (hashValue == 0) { - int result = 17; - if (getPk() == null) { - result = super.hashCode(); - } else { - result = getPk().hashCode(); - } - hashValue = result; - } - return hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneCatalogDetail */ - @Override - public Object createInstance() { - TgeneCatalogDetail instance = new TgeneCatalogDetail(); - instance.setPk(new TgeneCatalogDetailKey()); - return instance; - } - - /** - * Clona la entidad TgeneCatalogDetail - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneCatalogDetail p = (TgeneCatalogDetail) clone(); - p.setPk((TgeneCatalogDetailKey) pk.cloneMe()); - return p; - } - - /* Mtodos manuales */ - - /** Sentencia para seleccionar una lista de catalogos */ - private static final String JPQL_CATALOG_LIST = " from TgeneCatalogDetail t " + " where t.pk.catalogcode = :catalogcode "; - - /** - * Mtodo que selecciona una lista de catalogos dado el cdigo del catalogo - * - * @param entityManager - * @param pCatalogcode Cdigo del catalogo - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager entityManager, String pCatalogcode) throws Exception { - Query qry = entityManager.createQuery(JPQL_CATALOG_LIST); - qry.setParameter("catalogcode", pCatalogcode); - - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailKey.java.svn-base deleted file mode 100644 index 8b6dc82..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECATALOGDETAIL*/ -@Embeddable -public class TgeneCatalogDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -/**Contructor por defecto*/ -public TgeneCatalogDetailKey(){} -/**Contructor de TgeneCatalogDetailKey -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -public TgeneCatalogDetailKey(String pCatalog,String pCatalogcode){ - catalog=pCatalog; - catalogcode=pCatalogcode; -} -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Implementacin de la comparacin de TgeneCatalogDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCatalogDetailKey))return false; - TgeneCatalogDetailKey that = (TgeneCatalogDetailKey) o; - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCatalogDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTest.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTest.java.svn-base deleted file mode 100644 index 411b414..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTest.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import com.fp.dto.hb.Cache; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECATALOGDETAILTEST*/ -@Entity(name="TgeneCatalogDetailTest") -@Table(name="TGENECATALOGDETAILTEST") -public class TgeneCatalogDetailTest extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCatalogDetailTest -*/ -@EmbeddedId -private TgeneCatalogDetailTestKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del catalogo -*/ -private String description; - -@Column(name="LEGALCODE", nullable=true) - -/** -* Codigo del organismo de control -*/ -private String legalcode; - -@Column(name="IDALFRESCO", nullable=true) - -/** -* null -*/ -private String idalfresco; - -/**Contructor por defecto*/ -public TgeneCatalogDetailTest(){ -} -/**Contructor de TgeneCatalogDetailTest -@param pPk Clave Primaria del entity -@param pDescription Descripcion del catalogo -*/ -public TgeneCatalogDetailTest(TgeneCatalogDetailTestKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCatalogDetailTest -*/ -public static TgeneCatalogDetailTest find(EntityManager pEntityManager,TgeneCatalogDetailTestKey pKey) throws Exception{ - TgeneCatalogDetailTest obj = pEntityManager.find(TgeneCatalogDetailTest.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCatalogDetailTest -@return El objeto que referencia a la Clave primaria de TgeneCatalogDetailTest -*/ -public TgeneCatalogDetailTestKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCatalogDetailTest -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCatalogDetailTest -*/ -public void setPk(TgeneCatalogDetailTestKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de legalcode -@return valor de legalcode*/ -public String getLegalcode(){ - return legalcode; -} -/**Fija el valor de legalcode -@param pLegalcode nuevo Valor de legalcode*/ -public void setLegalcode(String pLegalcode){ - legalcode=pLegalcode; -} - -/**Obtiene el valor de idalfresco -@return valor de idalfresco*/ -public String getIdalfresco(){ - return idalfresco; -} -/**Fija el valor de idalfresco -@param pIdalfresco nuevo Valor de idalfresco*/ -public void setIdalfresco(String pIdalfresco){ - idalfresco=pIdalfresco; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCatalogDetailTest))return false; - TgeneCatalogDetailTest that = (TgeneCatalogDetailTest) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneCatalogDetailTest -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneCatalogDetailTest -*/ -public Object createInstance(){ - TgeneCatalogDetailTest instance=new TgeneCatalogDetailTest(); - instance.setPk(new TgeneCatalogDetailTestKey()); - return instance; -} -/**Clona la entidad TgeneCatalogDetailTest -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCatalogDetailTest p=(TgeneCatalogDetailTest)this.clone(); - p.setPk((TgeneCatalogDetailTestKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTestKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTestKey.java.svn-base deleted file mode 100644 index 79e3437..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogDetailTestKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECATALOGDETAILTEST*/ -@Embeddable -public class TgeneCatalogDetailTestKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -/**Contructor por defecto*/ -public TgeneCatalogDetailTestKey(){} -/**Contructor de TgeneCatalogDetailTestKey -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -public TgeneCatalogDetailTestKey(String pCatalog,String pCatalogcode){ - catalog=pCatalog; - catalogcode=pCatalogcode; -} -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Implementacion de la comparacion de TgeneCatalogDetailTestKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCatalogDetailTestKey))return false; - TgeneCatalogDetailTestKey that = (TgeneCatalogDetailTestKey) o; - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneCatalogDetailTestKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalence.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalence.java.svn-base deleted file mode 100644 index f1de611..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalence.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECATALOGEQUIVALENCE*/ -@Entity(name="TgeneCatalogEquivalence") -@Table(name="TGENECATALOGEQUIVALENCE") -public class TgeneCatalogEquivalence extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCatalogEquivalence -*/ -@Id -@Column(name="CATALOGCECODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* null -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneCatalogEquivalence(){ -} -/**Contructor de TgeneCatalogEquivalence -@param pPk Clave Primaria del entity -@param pDescription null -*/ -public TgeneCatalogEquivalence(String pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCatalogEquivalence -*/ -public static TgeneCatalogEquivalence find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneCatalogEquivalence obj = pEntityManager.find(TgeneCatalogEquivalence.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCatalogEquivalence -@return El objeto que referencia a la Clave primaria de TgeneCatalogEquivalence -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCatalogEquivalence -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCatalogEquivalence -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCatalogEquivalence))return false; - TgeneCatalogEquivalence that = (TgeneCatalogEquivalence) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneCatalogEquivalence -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneCatalogEquivalence -*/ -public Object createInstance(){ - TgeneCatalogEquivalence instance=new TgeneCatalogEquivalence(); - return instance; -} -/**Clona la entidad TgeneCatalogEquivalence -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCatalogEquivalence p=(TgeneCatalogEquivalence)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalenceDet.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalenceDet.java.svn-base deleted file mode 100644 index 47a8e78..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCatalogEquivalenceDet.java.svn-base +++ /dev/null @@ -1,465 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECATALOGEQUIVALENCEDET */ -@Entity(name = "TgeneCatalogEquivalenceDet") -@Table(name = "TGENECATALOGEQUIVALENCEDET") -public class TgeneCatalogEquivalenceDet extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - // CAMPO MANUAL private Long pk; - /** - * Clave primaria de la Entidad TgeneCatalogEquivalenceDet - */ - @Id - @Column(name = "ID", nullable = false, updatable = false) - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SequenceKey", parameters = { - @Parameter(name = "name", value = "IDCATALOGEQUIV"), - @Parameter(name = "type", value = "java.lang.Long"), - @Parameter(name = "fill", value = "0"), - @Parameter(name = "length", value = "5") }) - - @GeneratedValue(generator = "seq_id") - private Long pk; - - @Column(name = "CATALOGCECODE", nullable = false) - /** - * CATALOGO DE ENTIDAD DE CONTROL - */ - private String catalogcecode; - - @Column(name = "CATALOGCE", nullable = false) - /** - * VALOR CATALOGO ENTIDAD DE CONTROL - */ - private String catalogce; - - @Column(name = "DESCATALOGCE", nullable = true) - /** - * DESCRIPCION VALOR CATALOGO ENTIDAD DE CONTROL - */ - private String descatalogce; - - @Column(name = "ORIGINCATALOGCODE", nullable = true) - /** - * CATALOGO ORIGEN (MAIA) - */ - private String origincatalogcode; - - @Column(name = "ORIGINCATALOG", nullable = false) - /** - * VALOR CATALOGO ORIGEN (MAIA) - */ - private String origincatalog; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * VERSION DEL REGISTRO - */ - private Integer recordversion; - - @Column(name = "ORIGINCATALOGCODE_N1", nullable = true) - /** - * null - */ - private String origincatalogcode_n1; - - @Column(name = "ORIGINCATALOG_N1", nullable = true) - /** - * null - */ - private String origincatalog_n1; - - @Column(name = "ORIGINCATALOGCODE_N2", nullable = true) - /** - * null - */ - private String origincatalogcode_n2; - - @Column(name = "ORIGINCATALOG_N2", nullable = true) - /** - * null - */ - private String origincatalog_n2; - - @Column(name = "ORIGINCATALOGCODE_N3", nullable = true) - /** - * null - */ - private String origincatalogcode_n3; - - @Column(name = "ORIGINCATALOG_N3", nullable = true) - /** - * null - */ - private String origincatalog_n3; - - /** Contructor por defecto */ - public TgeneCatalogEquivalenceDet() { - } - - /** - * Contructor de TgeneCatalogEquivalenceDet - * - * @param pPk Clave Primaria del entity - * @param pCatalogcecode CATALOGO DE ENTIDAD DE CONTROL - * @param pCatalogce VALOR CATALOGO ENTIDAD DE CONTROL - * @param pOrigincatalog VALOR CATALOGO ORIGEN (MAIA) - */ - public TgeneCatalogEquivalenceDet(Long pPk, String pCatalogcecode, String pCatalogce, String pOrigincatalog) { - this(); - this.pk = pPk; - this.catalogcecode = pCatalogcecode; - this.catalogce = pCatalogce; - this.origincatalog = pOrigincatalog; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCatalogEquivalenceDet - */ - public static TgeneCatalogEquivalenceDet find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneCatalogEquivalenceDet obj = pEntityManager.find(TgeneCatalogEquivalenceDet.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCatalogEquivalenceDet - * - * @return El objeto que referencia a la Clave primaria de TgeneCatalogEquivalenceDet - */ - public Long getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCatalogEquivalenceDet - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneCatalogEquivalenceDet - */ - public void setPk(Long pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de catalogcecode - * - * @return valor de catalogcecode - */ - public String getCatalogcecode() { - return this.catalogcecode; - } - - /** - * Fija el valor de catalogcecode - * - * @param pCatalogcecode nuevo Valor de catalogcecode - */ - public void setCatalogcecode(String pCatalogcecode) { - this.catalogcecode = pCatalogcecode; - } - - /** - * Obtiene el valor de catalogce - * - * @return valor de catalogce - */ - public String getCatalogce() { - return this.catalogce; - } - - /** - * Fija el valor de catalogce - * - * @param pCatalogce nuevo Valor de catalogce - */ - public void setCatalogce(String pCatalogce) { - this.catalogce = pCatalogce; - } - - /** - * Obtiene el valor de descatalogce - * - * @return valor de descatalogce - */ - public String getDescatalogce() { - return this.descatalogce; - } - - /** - * Fija el valor de descatalogce - * - * @param pDescatalogce nuevo Valor de descatalogce - */ - public void setDescatalogce(String pDescatalogce) { - this.descatalogce = pDescatalogce; - } - - /** - * Obtiene el valor de origincatalogcode - * - * @return valor de origincatalogcode - */ - public String getOrigincatalogcode() { - return this.origincatalogcode; - } - - /** - * Fija el valor de origincatalogcode - * - * @param pOrigincatalogcode nuevo Valor de origincatalogcode - */ - public void setOrigincatalogcode(String pOrigincatalogcode) { - this.origincatalogcode = pOrigincatalogcode; - } - - /** - * Obtiene el valor de origincatalog - * - * @return valor de origincatalog - */ - public String getOrigincatalog() { - return this.origincatalog; - } - - /** - * Fija el valor de origincatalog - * - * @param pOrigincatalog nuevo Valor de origincatalog - */ - public void setOrigincatalog(String pOrigincatalog) { - this.origincatalog = pOrigincatalog; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de origincatalogcode_n1 - * - * @return valor de origincatalogcode_n1 - */ - public String getOrigincatalogcode_n1() { - return this.origincatalogcode_n1; - } - - /** - * Fija el valor de origincatalogcode_n1 - * - * @param pOrigincatalogcode_n1 nuevo Valor de origincatalogcode_n1 - */ - public void setOrigincatalogcode_n1(String pOrigincatalogcode_n1) { - this.origincatalogcode_n1 = pOrigincatalogcode_n1; - } - - /** - * Obtiene el valor de origincatalog_n1 - * - * @return valor de origincatalog_n1 - */ - public String getOrigincatalog_n1() { - return this.origincatalog_n1; - } - - /** - * Fija el valor de origincatalog_n1 - * - * @param pOrigincatalog_n1 nuevo Valor de origincatalog_n1 - */ - public void setOrigincatalog_n1(String pOrigincatalog_n1) { - this.origincatalog_n1 = pOrigincatalog_n1; - } - - /** - * Obtiene el valor de origincatalogcode_n2 - * - * @return valor de origincatalogcode_n2 - */ - public String getOrigincatalogcode_n2() { - return this.origincatalogcode_n2; - } - - /** - * Fija el valor de origincatalogcode_n2 - * - * @param pOrigincatalogcode_n2 nuevo Valor de origincatalogcode_n2 - */ - public void setOrigincatalogcode_n2(String pOrigincatalogcode_n2) { - this.origincatalogcode_n2 = pOrigincatalogcode_n2; - } - - /** - * Obtiene el valor de origincatalog_n2 - * - * @return valor de origincatalog_n2 - */ - public String getOrigincatalog_n2() { - return this.origincatalog_n2; - } - - /** - * Fija el valor de origincatalog_n2 - * - * @param pOrigincatalog_n2 nuevo Valor de origincatalog_n2 - */ - public void setOrigincatalog_n2(String pOrigincatalog_n2) { - this.origincatalog_n2 = pOrigincatalog_n2; - } - - /** - * Obtiene el valor de origincatalogcode_n3 - * - * @return valor de origincatalogcode_n3 - */ - public String getOrigincatalogcode_n3() { - return this.origincatalogcode_n3; - } - - /** - * Fija el valor de origincatalogcode_n3 - * - * @param pOrigincatalogcode_n3 nuevo Valor de origincatalogcode_n3 - */ - public void setOrigincatalogcode_n3(String pOrigincatalogcode_n3) { - this.origincatalogcode_n3 = pOrigincatalogcode_n3; - } - - /** - * Obtiene el valor de origincatalog_n3 - * - * @return valor de origincatalog_n3 - */ - public String getOrigincatalog_n3() { - return this.origincatalog_n3; - } - - /** - * Fija el valor de origincatalog_n3 - * - * @param pOrigincatalog_n3 nuevo Valor de origincatalog_n3 - */ - public void setOrigincatalog_n3(String pOrigincatalog_n3) { - this.origincatalog_n3 = pOrigincatalog_n3; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneCatalogEquivalenceDet)) { - return false; - } - TgeneCatalogEquivalenceDet that = (TgeneCatalogEquivalenceDet) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneCatalogEquivalenceDet - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneCatalogEquivalenceDet */ - @Override - public Object createInstance() { - TgeneCatalogEquivalenceDet instance = new TgeneCatalogEquivalenceDet(); - return instance; - } - - /** - * Clona la entidad TgeneCatalogEquivalenceDet - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneCatalogEquivalenceDet p = (TgeneCatalogEquivalenceDet) this.clone(); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneChannels.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneChannels.java.svn-base deleted file mode 100644 index 2f599f6..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneChannels.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECHANNELS*/ -@Entity(name="TgeneChannels") -@Table(name="TGENECHANNELS") -public class TgeneChannels extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneChannels -*/ -@Id -@Column(name="CHANNELCODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro. -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del registro. -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneChannels(){ -} -/**Contructor de TgeneChannels -@param pPk Clave Primaria del entity -*/ -public TgeneChannels(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneChannels -*/ -public static TgeneChannels find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneChannels obj = pEntityManager.find(TgeneChannels.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneChannels -@return El objeto que referencia a la Clave primaria de TgeneChannels -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneChannels -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneChannels -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneChannels))return false; - TgeneChannels that = (TgeneChannels) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneChannels -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneChannels -*/ -public Object createInstance(){ - TgeneChannels instance=new TgeneChannels(); - return instance; -} -/**Clona la entidad TgeneChannels -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneChannels p=(TgeneChannels)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCity.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCity.java.svn-base deleted file mode 100644 index 400bbaf..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCity.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECITY*/ -@Entity(name="TgeneCity") -@Table(name="TGENECITY") -public class TgeneCity extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCity -*/ -@EmbeddedId -private TgeneCityKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Nombre de la cuidad -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneCity(){ -} -/**Contructor de TgeneCity -@param pPk Clave Primaria del entity -@param pDescription Nombre de la cuidad -*/ -public TgeneCity(TgeneCityKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCity -*/ -public static TgeneCity find(EntityManager pEntityManager,TgeneCityKey pKey) throws Exception{ - TgeneCity obj = pEntityManager.find(TgeneCity.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCity -@return El objeto que referencia a la Clave primaria de TgeneCity -*/ -public TgeneCityKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCity -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCity -*/ -public void setPk(TgeneCityKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCity))return false; - TgeneCity that = (TgeneCity) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneCity -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneCity -*/ -public Object createInstance(){ - TgeneCity instance=new TgeneCity(); - instance.setPk(new TgeneCityKey()); - return instance; -} -/**Clona la entidad TgeneCity -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCity p=(TgeneCity)this.clone(); - p.setPk((TgeneCityKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCityKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCityKey.java.svn-base deleted file mode 100644 index 93631d3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCityKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECITY*/ -@Embeddable -public class TgeneCityKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COUNTRYCODE", nullable=false,updatable=false) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=false,updatable=false) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=false,updatable=false) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="CITYCODE", nullable=false,updatable=false) - -/** -* Codigo de cuidad -*/ -private String citycode; - -/**Contructor por defecto*/ -public TgeneCityKey(){} -/**Contructor de TgeneCityKey -@param pCountrycode Codigo de pais -@param pProvincecode Codigo de provincia -@param pCantoncode Codigo de canton -@param pCitycode Codigo de cuidad -*/ -public TgeneCityKey(String pCountrycode,String pProvincecode,String pCantoncode,String pCitycode){ - countrycode=pCountrycode; - provincecode=pProvincecode; - cantoncode=pCantoncode; - citycode=pCitycode; -} -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de citycode -@return valor de citycode*/ -public String getCitycode(){ - return citycode; -} -/**Fija el valor de citycode -@param pCitycode nuevo Valor de citycode*/ -public void setCitycode(String pCitycode){ - citycode=pCitycode; -} - -/**Implementacion de la comparacion de TgeneCityKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCityKey))return false; - TgeneCityKey that = (TgeneCityKey) o; - if (this.getCountrycode() == null || that.getCountrycode() == null){ - return false; - } - if (! this.getCountrycode().equals(that.getCountrycode())){ - return false; - } - if (this.getProvincecode() == null || that.getProvincecode() == null){ - return false; - } - if (! this.getProvincecode().equals(that.getProvincecode())){ - return false; - } - if (this.getCantoncode() == null || that.getCantoncode() == null){ - return false; - } - if (! this.getCantoncode().equals(that.getCantoncode())){ - return false; - } - if (this.getCitycode() == null || that.getCitycode() == null){ - return false; - } - if (! this.getCitycode().equals(that.getCitycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneCityKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCountrycode() == null ? 0 : this.getCountrycode().hashCode()); - result = result * 37 + (this.getProvincecode() == null ? 0 : this.getProvincecode().hashCode()); - result = result * 37 + (this.getCantoncode() == null ? 0 : this.getCantoncode().hashCode()); - result = result * 37 + (this.getCitycode() == null ? 0 : this.getCitycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCompany.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCompany.java.svn-base deleted file mode 100644 index ad583c3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCompany.java.svn-base +++ /dev/null @@ -1,293 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENECOMPANY - */ -@Entity(name = "TgeneCompany") -@Table(name = "TGENECOMPANY") -public class TgeneCompany extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable,Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneCompany - */ - @Id - @Column(name = "COMPANYCODE", nullable = false, updatable = false) - private Integer pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "LEGALCURRENCY", nullable = true) - /** - * Moneda oficial de la compania. - */ - private String legalcurrency; - - @Column(name = "PERSONCODE", nullable = true) - /** - * Codigo de persona - */ - private Integer personcode; - - @Column(name = "ACTIVE", nullable = true) - /** - * Y indica que la compania esta activa - */ - private String active; - - @Column(name = "ACCOSERVER", nullable = true) - /** - * Y indica que ejecuta el servidor contable, N no ejecuta - */ - private String accoserver; - - /** Contructor por defecto */ - public TgeneCompany() { - } - - /** - * Contructor de TgeneCompany - * - * @param pPk Clave Primaria del entity - */ - public TgeneCompany(Integer pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneCompany - */ - public static TgeneCompany find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneCompany obj = pEntityManager.find(TgeneCompany.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneCompany - * - * @return El objeto que referencia a la Clave primaria de TgeneCompany - */ - public Integer getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneCompany - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneCompany - */ - public void setPk(Integer pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de legalcurrency - * - * @return valor de legalcurrency - */ - public String getLegalcurrency() { - return legalcurrency; - } - - /** - * Fija el valor de legalcurrency - * - * @param pLegalcurrency nuevo Valor de legalcurrency - */ - public void setLegalcurrency(String pLegalcurrency) { - legalcurrency = pLegalcurrency; - } - - /** - * Obtiene el valor de personcode - * - * @return valor de personcode - */ - public Integer getPersoncode() { - return personcode; - } - - /** - * Fija el valor de personcode - * - * @param pPersoncode nuevo Valor de personcode - */ - public void setPersoncode(Integer pPersoncode) { - personcode = pPersoncode; - } - - /** - * Obtiene el valor de active - * - * @return valor de active - */ - public String getActive() { - return active; - } - - /** - * Fija el valor de active - * - * @param pActive nuevo Valor de active - */ - public void setActive(String pActive) { - active = pActive; - } - - /** - * Obtiene el valor de accoserver - * - * @return valor de accoserver - */ - public String getAccoserver() { - return accoserver; - } - - /** - * Fija el valor de accoserver - * - * @param pAccoserver nuevo Valor de accoserver - */ - public void setAccoserver(String pAccoserver) { - accoserver = pAccoserver; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneCompany)) - return false; - TgeneCompany that = (TgeneCompany) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneCompany - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneCompany */ - public Object createInstance() { - TgeneCompany instance = new TgeneCompany(); - return instance; - } - - /** - * Clona la entidad TgeneCompany - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneCompany p = (TgeneCompany) this.clone(); - return p; - } - - - //METODOS MANUALES - - private static final String sql ="from TgeneCompany t where t.active = 'Y' "; - - /** - * Metodo que entrega una lista de companias que estan definidas en la aplicacion. - * @param pEntityManager Referecnia a una session de base de datos. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager) throws Exception{ - List ldata = null; - Query qry = pEntityManager.createQuery(sql); - ldata = qry.getResultList(); - return ldata; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConcept.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConcept.java.svn-base deleted file mode 100644 index 9174544..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConcept.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECONCEPT*/ -@Entity(name="TgeneConcept") -@Table(name="TGENECONCEPT") -public class TgeneConcept extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneConcept -*/ -@EmbeddedId -private TgeneConceptKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking -*/ -private Integer recordversion; - -@Column(name="DEBITO", nullable=true) - -/** -* Indica si el concepto se utiliza en el debito o credito -*/ -private String debito; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del concepto -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneConcept(){ -} -/**Contructor de TgeneConcept -@param pPk Clave Primaria del entity -*/ -public TgeneConcept(TgeneConceptKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneConcept -*/ -public static TgeneConcept find(EntityManager pEntityManager,TgeneConceptKey pKey) throws Exception{ - TgeneConcept obj = pEntityManager.find(TgeneConcept.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneConcept -@return El objeto que referencia a la Clave primaria de TgeneConcept -*/ -public TgeneConceptKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneConcept -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneConcept -*/ -public void setPk(TgeneConceptKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de debito -@return valor de debito*/ -public String getDebito(){ - return debito; -} -/**Fija el valor de debito -@param pDebito nuevo Valor de debito*/ -public void setDebito(String pDebito){ - debito=pDebito; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneConcept))return false; - TgeneConcept that = (TgeneConcept) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneConcept -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneConcept -*/ -public Object createInstance(){ - TgeneConcept instance=new TgeneConcept(); - instance.setPk(new TgeneConceptKey()); - return instance; -} -/**Clona la entidad TgeneConcept -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneConcept p=(TgeneConcept)this.clone(); - p.setPk((TgeneConceptKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConceptKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConceptKey.java.svn-base deleted file mode 100644 index 8574d11..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConceptKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECONCEPT*/ -@Embeddable -public class TgeneConceptKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CONCEPTMODULE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String conceptmodule; - -@Column(name="CONCEPTCODE", nullable=false,updatable=false) - -/** -* Codigo de concepto -*/ -private Integer conceptcode; - -/**Contructor por defecto*/ -public TgeneConceptKey(){} -/**Contructor de TgeneConceptKey -@param pConceptmodule Codigo de modulo -@param pConceptcode Codigo de concepto -*/ -public TgeneConceptKey(String pConceptmodule,Integer pConceptcode){ - conceptmodule=pConceptmodule; - conceptcode=pConceptcode; -} -/**Obtiene el valor de conceptmodule -@return valor de conceptmodule*/ -public String getConceptmodule(){ - return conceptmodule; -} -/**Fija el valor de conceptmodule -@param pConceptmodule nuevo Valor de conceptmodule*/ -public void setConceptmodule(String pConceptmodule){ - conceptmodule=pConceptmodule; -} - -/**Obtiene el valor de conceptcode -@return valor de conceptcode*/ -public Integer getConceptcode(){ - return conceptcode; -} -/**Fija el valor de conceptcode -@param pConceptcode nuevo Valor de conceptcode*/ -public void setConceptcode(Integer pConceptcode){ - conceptcode=pConceptcode; -} - -/**Implementacin de la comparacin de TgeneConceptKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneConceptKey))return false; - TgeneConceptKey that = (TgeneConceptKey) o; - if (this.getConceptmodule() == null || that.getConceptmodule() == null){ - return false; - } - if (! this.getConceptmodule().equals(that.getConceptmodule())){ - return false; - } - if (this.getConceptcode() == null || that.getConceptcode() == null){ - return false; - } - if (! this.getConceptcode().equals(that.getConceptcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneConceptKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getConceptmodule() == null ? 0 : this.getConceptmodule().hashCode()); - result = result * 37 + (this.getConceptcode() == null ? 0 : this.getConceptcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsep.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsep.java.svn-base deleted file mode 100644 index 3089766..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsep.java.svn-base +++ /dev/null @@ -1,556 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECONSEP*/ -@Entity(name="TgeneConsep") -@Table(name="TGENECONSEP") -public class TgeneConsep extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneConsep -*/ -@Id -@Column(name="ID_LISTANEGRA_" ,nullable=false, updatable=false) -private String pk; -@Column(name="PARTMREGIONCOD", nullable=true) - -/** -* Codigo del negocio -*/ -private String partmregioncod; - -@Column(name="PARTMSUCCOD", nullable=true) - -/** -* Clase que se encarga de iniciar o detener el servicio -*/ -private String partmsuccod; - -@Column(name="PARTMAGECOD", nullable=true) - -/** -* Y, Indica que el servicio se levanta al moemento de subir el servidor de aplicaciones -*/ -private String partmagecod; - -@Column(name="PARTMUNIADMCOD", nullable=true) - -/** -* null -*/ -private String partmuniadmcod; - -@Column(name="NOMBRE", nullable=true) - -/** -* Nombre de la persona -*/ -private String nombre; - -@Column(name="APELLIDO", nullable=true) - -/** -* Apellido de la persona - -*/ -private String apellido; - -@Column(name="ID_TIPLISNEG", nullable=true) - -/** -* Codigo Tipo llista (Sindicado,Homonimo) -*/ -private Long id_tiplisneg; - -@Column(name="ESTADO", nullable=true) - -/** -* null -*/ -private String estado; - -@Column(name="FEC_ING_LISNEG", nullable=true) - -/** -* Fecha en que se registro en lista CONSEP -*/ -private Date fec_ing_lisneg; - -@Column(name="PERMITIR_TRX", nullable=true) - -/** -* null -*/ -private String permitir_trx; - -@Column(name="IDENTIFICACION", nullable=true) - -/** -* Identificacion (RUC, C.I. ,Pasaporte) -*/ -private String identificacion; - -@Column(name="PARTMCIUDADCOD", nullable=true) - -/** -* Codigo de la ciudad a la que pertenece -*/ -private String partmciudadcod; - -@Column(name="FEC_ING_CARGO", nullable=true) - -/** -* Fecha de ingreso al cargo - -*/ -private Date fec_ing_cargo; - -@Column(name="FEC_SAL_CARGO", nullable=true) - -/** -* Fecha de salida al cargo -*/ -private Date fec_sal_cargo; - -@Column(name="ID_CARGO", nullable=true) - -/** -* Codigo del cargo de la persona -*/ -private Integer id_cargo; - -@Column(name="ULT_ESTADO", nullable=true) - -/** -* null -*/ -private String ult_estado; - -@Column(name="FEC_SAL_LISNEG", nullable=true) - -/** -* Fecha de salida de la lista de CONSEP -*/ -private Date fec_sal_lisneg; - -@Column(name="USU_INGRESA", nullable=true) - -/** -* Usuario que ingreso el registro - -*/ -private String usu_ingresa; - -@Column(name="USU_MODIFICA", nullable=true) - -/** -* Usuario que modifico el registro -*/ -private String usu_modifica; - -@Column(name="FEC_MODIFICA", nullable=true) - -/** -* Fecha en la que se modifico el registro -*/ -private Date fec_modifica; - -@Column(name="ARCHIVO_ORIG", nullable=true) - -/** -* null -*/ -private String archivo_orig; - -@Column(name="OBSERVACIONLP", nullable=true) - -/** -* null -*/ -private String observacionlp; - -@Column(name="ID_TIPLISPROPIAS", nullable=true) - -/** -* null -*/ -private Long id_tiplispropias; - -@Column(name="OBSERVACION", nullable=true) - -/** -* Observaciones de la persona -*/ -private String observacion; - -/**Contructor por defecto*/ -public TgeneConsep(){ -} -/**Contructor de TgeneConsep -@param pPk Clave Primaria del entity -*/ -public TgeneConsep(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneConsep -*/ -public static TgeneConsep find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneConsep obj = pEntityManager.find(TgeneConsep.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneConsep -@return El objeto que referencia a la Clave primaria de TgeneConsep -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneConsep -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneConsep -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de partmregioncod -@return valor de partmregioncod*/ -public String getPartmregioncod(){ - return partmregioncod; -} -/**Fija el valor de partmregioncod -@param pPartmregioncod nuevo Valor de partmregioncod*/ -public void setPartmregioncod(String pPartmregioncod){ - partmregioncod=pPartmregioncod; -} - -/**Obtiene el valor de partmsuccod -@return valor de partmsuccod*/ -public String getPartmsuccod(){ - return partmsuccod; -} -/**Fija el valor de partmsuccod -@param pPartmsuccod nuevo Valor de partmsuccod*/ -public void setPartmsuccod(String pPartmsuccod){ - partmsuccod=pPartmsuccod; -} - -/**Obtiene el valor de partmagecod -@return valor de partmagecod*/ -public String getPartmagecod(){ - return partmagecod; -} -/**Fija el valor de partmagecod -@param pPartmagecod nuevo Valor de partmagecod*/ -public void setPartmagecod(String pPartmagecod){ - partmagecod=pPartmagecod; -} - -/**Obtiene el valor de partmuniadmcod -@return valor de partmuniadmcod*/ -public String getPartmuniadmcod(){ - return partmuniadmcod; -} -/**Fija el valor de partmuniadmcod -@param pPartmuniadmcod nuevo Valor de partmuniadmcod*/ -public void setPartmuniadmcod(String pPartmuniadmcod){ - partmuniadmcod=pPartmuniadmcod; -} - -/**Obtiene el valor de nombre -@return valor de nombre*/ -public String getNombre(){ - return nombre; -} -/**Fija el valor de nombre -@param pNombre nuevo Valor de nombre*/ -public void setNombre(String pNombre){ - nombre=pNombre; -} - -/**Obtiene el valor de apellido -@return valor de apellido*/ -public String getApellido(){ - return apellido; -} -/**Fija el valor de apellido -@param pApellido nuevo Valor de apellido*/ -public void setApellido(String pApellido){ - apellido=pApellido; -} - -/**Obtiene el valor de id_tiplisneg -@return valor de id_tiplisneg*/ -public Long getId_tiplisneg(){ - return id_tiplisneg; -} -/**Fija el valor de id_tiplisneg -@param pId_tiplisneg nuevo Valor de id_tiplisneg*/ -public void setId_tiplisneg(Long pId_tiplisneg){ - id_tiplisneg=pId_tiplisneg; -} - -/**Obtiene el valor de estado -@return valor de estado*/ -public String getEstado(){ - return estado; -} -/**Fija el valor de estado -@param pEstado nuevo Valor de estado*/ -public void setEstado(String pEstado){ - estado=pEstado; -} - -/**Obtiene el valor de fec_ing_lisneg -@return valor de fec_ing_lisneg*/ -public Date getFec_ing_lisneg(){ - return fec_ing_lisneg; -} -/**Fija el valor de fec_ing_lisneg -@param pFec_ing_lisneg nuevo Valor de fec_ing_lisneg*/ -public void setFec_ing_lisneg(Date pFec_ing_lisneg){ - fec_ing_lisneg=pFec_ing_lisneg; -} - -/**Obtiene el valor de permitir_trx -@return valor de permitir_trx*/ -public String getPermitir_trx(){ - return permitir_trx; -} -/**Fija el valor de permitir_trx -@param pPermitir_trx nuevo Valor de permitir_trx*/ -public void setPermitir_trx(String pPermitir_trx){ - permitir_trx=pPermitir_trx; -} - -/**Obtiene el valor de identificacion -@return valor de identificacion*/ -public String getIdentificacion(){ - return identificacion; -} -/**Fija el valor de identificacion -@param pIdentificacion nuevo Valor de identificacion*/ -public void setIdentificacion(String pIdentificacion){ - identificacion=pIdentificacion; -} - -/**Obtiene el valor de partmciudadcod -@return valor de partmciudadcod*/ -public String getPartmciudadcod(){ - return partmciudadcod; -} -/**Fija el valor de partmciudadcod -@param pPartmciudadcod nuevo Valor de partmciudadcod*/ -public void setPartmciudadcod(String pPartmciudadcod){ - partmciudadcod=pPartmciudadcod; -} - -/**Obtiene el valor de fec_ing_cargo -@return valor de fec_ing_cargo*/ -public Date getFec_ing_cargo(){ - return fec_ing_cargo; -} -/**Fija el valor de fec_ing_cargo -@param pFec_ing_cargo nuevo Valor de fec_ing_cargo*/ -public void setFec_ing_cargo(Date pFec_ing_cargo){ - fec_ing_cargo=pFec_ing_cargo; -} - -/**Obtiene el valor de fec_sal_cargo -@return valor de fec_sal_cargo*/ -public Date getFec_sal_cargo(){ - return fec_sal_cargo; -} -/**Fija el valor de fec_sal_cargo -@param pFec_sal_cargo nuevo Valor de fec_sal_cargo*/ -public void setFec_sal_cargo(Date pFec_sal_cargo){ - fec_sal_cargo=pFec_sal_cargo; -} - -/**Obtiene el valor de id_cargo -@return valor de id_cargo*/ -public Integer getId_cargo(){ - return id_cargo; -} -/**Fija el valor de id_cargo -@param pId_cargo nuevo Valor de id_cargo*/ -public void setId_cargo(Integer pId_cargo){ - id_cargo=pId_cargo; -} - -/**Obtiene el valor de ult_estado -@return valor de ult_estado*/ -public String getUlt_estado(){ - return ult_estado; -} -/**Fija el valor de ult_estado -@param pUlt_estado nuevo Valor de ult_estado*/ -public void setUlt_estado(String pUlt_estado){ - ult_estado=pUlt_estado; -} - -/**Obtiene el valor de fec_sal_lisneg -@return valor de fec_sal_lisneg*/ -public Date getFec_sal_lisneg(){ - return fec_sal_lisneg; -} -/**Fija el valor de fec_sal_lisneg -@param pFec_sal_lisneg nuevo Valor de fec_sal_lisneg*/ -public void setFec_sal_lisneg(Date pFec_sal_lisneg){ - fec_sal_lisneg=pFec_sal_lisneg; -} - -/**Obtiene el valor de usu_ingresa -@return valor de usu_ingresa*/ -public String getUsu_ingresa(){ - return usu_ingresa; -} -/**Fija el valor de usu_ingresa -@param pUsu_ingresa nuevo Valor de usu_ingresa*/ -public void setUsu_ingresa(String pUsu_ingresa){ - usu_ingresa=pUsu_ingresa; -} - -/**Obtiene el valor de usu_modifica -@return valor de usu_modifica*/ -public String getUsu_modifica(){ - return usu_modifica; -} -/**Fija el valor de usu_modifica -@param pUsu_modifica nuevo Valor de usu_modifica*/ -public void setUsu_modifica(String pUsu_modifica){ - usu_modifica=pUsu_modifica; -} - -/**Obtiene el valor de fec_modifica -@return valor de fec_modifica*/ -public Date getFec_modifica(){ - return fec_modifica; -} -/**Fija el valor de fec_modifica -@param pFec_modifica nuevo Valor de fec_modifica*/ -public void setFec_modifica(Date pFec_modifica){ - fec_modifica=pFec_modifica; -} - -/**Obtiene el valor de archivo_orig -@return valor de archivo_orig*/ -public String getArchivo_orig(){ - return archivo_orig; -} -/**Fija el valor de archivo_orig -@param pArchivo_orig nuevo Valor de archivo_orig*/ -public void setArchivo_orig(String pArchivo_orig){ - archivo_orig=pArchivo_orig; -} - -/**Obtiene el valor de observacionlp -@return valor de observacionlp*/ -public String getObservacionlp(){ - return observacionlp; -} -/**Fija el valor de observacionlp -@param pObservacionlp nuevo Valor de observacionlp*/ -public void setObservacionlp(String pObservacionlp){ - observacionlp=pObservacionlp; -} - -/**Obtiene el valor de id_tiplispropias -@return valor de id_tiplispropias*/ -public Long getId_tiplispropias(){ - return id_tiplispropias; -} -/**Fija el valor de id_tiplispropias -@param pId_tiplispropias nuevo Valor de id_tiplispropias*/ -public void setId_tiplispropias(Long pId_tiplispropias){ - id_tiplispropias=pId_tiplispropias; -} - -/**Obtiene el valor de observacion -@return valor de observacion*/ -public String getObservacion(){ - return observacion; -} -/**Fija el valor de observacion -@param pObservacion nuevo Valor de observacion*/ -public void setObservacion(String pObservacion){ - observacion=pObservacion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneConsep))return false; - TgeneConsep that = (TgeneConsep) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementación del metodo hashCode de la la entidad TgeneConsep -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementación toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementación de la creación de un bean en blanco TgeneConsep -*/ -public Object createInstance(){ - TgeneConsep instance=new TgeneConsep(); - return instance; -} -/**Clona la entidad TgeneConsep -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneConsep p=(TgeneConsep)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsepLog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsepLog.java.svn-base deleted file mode 100644 index 57144ae..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneConsepLog.java.svn-base +++ /dev/null @@ -1,509 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; -import java.util.List; -import javax.persistence.Query; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENECONSEPLOG - */ -@Entity(name = "TgeneConsepLog") -@Table(name = "TGENECONSEPLOG") -public class TgeneConsepLog extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneConsepLog - */ - @Id - @Column(name = "ID_LOG", nullable = false, updatable = false) - private Integer pk; - @Column(name = "IDENTIFICACION", nullable = true) - /** - * Numero de identificaion del cliente (RUC, CI, Pasaporte) - */ - private String identificacion; - @Column(name = "NOMBRE_PRIM", nullable = true) - /** - * Primer nombre del cliente - */ - private String nombre_prim; - @Column(name = "NOMBRE_SEG", nullable = true) - /** - * Segundo nombre del cliente - */ - private String nombre_seg; - @Column(name = "APELLIDO_PRIM", nullable = true) - /** - * Primer apellido del cliente - */ - private String apellido_prim; - @Column(name = "APELLIDO_SEG", nullable = true) - /** - * Segundo apellido del cliente opcional - */ - private String apellido_seg; - @Column(name = "ID_LISTANEGRA", nullable = true) - /** - * Identificador de la lista negra (CONSEP) - */ - private String id_listanegra; - @Column(name = "ID_TIPLISNEG", nullable = true) - /** - * Codigo del tipo CONSEP 1,2(SindicadoHomonimo,) respectivamente - */ - private Long id_tiplisneg; - @Column(name = "FEC_ING_LISNEG", nullable = true) - /** - * Fecha de regsitro en la tabla de CONSEP - */ - private Date fec_ing_lisneg; - @Column(name = "USUARIO_COD", nullable = true) - /** - * Codigo de usuario que aplica la transaccion - */ - private String usuario_cod; - @Column(name = "FEC_TRANSACCION", nullable = true) - /** - * Fecha que se ingreso a la transaccion - */ - private Timestamp fec_transaccion; - @Column(name = "TERMINAL", nullable = true) - /** - * Terminal desde donde se ingresos al aplicativo - */ - private String terminal; - @Column(name = "TRANSACCION", nullable = true) - /** - * Tipo de transaccion N, U (nuevo o actualizacion) respectivamente - */ - private String transaccion; - @Column(name = "CREACION_CLI", nullable = true) - /** - * En la transaccion actual se creo un nuevo cliente si/no (S/N) - */ - private String creacion_cli; - @Column(name = "ACTUALIZACION_CLI", nullable = true) - /** - * En la transaccion actual se realizo una actualizacion del cliente si/no - * (S/N) - */ - private String actualizacion_cli; - @Column(name = "CONSTANCIA_CONSEP", nullable = true) - /** - * La persona se encuentra en la lista de CONSEP si/no (S/N) - */ - private String constancia_consep; - - /** - * Contructor por defecto - */ - public TgeneConsepLog() { - } - - /** - * Contructor de TgeneConsepLog - * - * @param pPk Clave Primaria del entity - */ - public TgeneConsepLog(Integer pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneConsepLog - */ - public static TgeneConsepLog find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneConsepLog obj = pEntityManager.find(TgeneConsepLog.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneConsepLog - * - * @return El objeto que referencia a la Clave primaria de TgeneConsepLog - */ - public Integer getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneConsepLog - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneConsepLog - */ - public void setPk(Integer pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de identificacion - * - * @return valor de identificacion - */ - public String getIdentificacion() { - return identificacion; - } - - /** - * Fija el valor de identificacion - * - * @param pIdentificacion nuevo Valor de identificacion - */ - public void setIdentificacion(String pIdentificacion) { - identificacion = pIdentificacion; - } - - /** - * Obtiene el valor de nombre_prim - * - * @return valor de nombre_prim - */ - public String getNombre_prim() { - return nombre_prim; - } - - /** - * Fija el valor de nombre_prim - * - * @param pNombre_prim nuevo Valor de nombre_prim - */ - public void setNombre_prim(String pNombre_prim) { - nombre_prim = pNombre_prim; - } - - /** - * Obtiene el valor de nombre_seg - * - * @return valor de nombre_seg - */ - public String getNombre_seg() { - return nombre_seg; - } - - /** - * Fija el valor de nombre_seg - * - * @param pNombre_seg nuevo Valor de nombre_seg - */ - public void setNombre_seg(String pNombre_seg) { - nombre_seg = pNombre_seg; - } - - /** - * Obtiene el valor de apellido_prim - * - * @return valor de apellido_prim - */ - public String getApellido_prim() { - return apellido_prim; - } - - /** - * Fija el valor de apellido_prim - * - * @param pApellido_prim nuevo Valor de apellido_prim - */ - public void setApellido_prim(String pApellido_prim) { - apellido_prim = pApellido_prim; - } - - /** - * Obtiene el valor de apellido_seg - * - * @return valor de apellido_seg - */ - public String getApellido_seg() { - return apellido_seg; - } - - /** - * Fija el valor de apellido_seg - * - * @param pApellido_seg nuevo Valor de apellido_seg - */ - public void setApellido_seg(String pApellido_seg) { - apellido_seg = pApellido_seg; - } - - /** - * Obtiene el valor de id_listanegra - * - * @return valor de id_listanegra - */ - public String getId_listanegra() { - return id_listanegra; - } - - /** - * Fija el valor de id_listanegra - * - * @param pId_listanegra nuevo Valor de id_listanegra - */ - public void setId_listanegra(String pId_listanegra) { - id_listanegra = pId_listanegra; - } - - /** - * Obtiene el valor de id_tiplisneg - * - * @return valor de id_tiplisneg - */ - public Long getId_tiplisneg() { - return id_tiplisneg; - } - - /** - * Fija el valor de id_tiplisneg - * - * @param pId_tiplisneg nuevo Valor de id_tiplisneg - */ - public void setId_tiplisneg(Long pId_tiplisneg) { - id_tiplisneg = pId_tiplisneg; - } - - /** - * Obtiene el valor de fec_ing_lisneg - * - * @return valor de fec_ing_lisneg - */ - public Date getFec_ing_lisneg() { - return fec_ing_lisneg; - } - - /** - * Fija el valor de fec_ing_lisneg - * - * @param pFec_ing_lisneg nuevo Valor de fec_ing_lisneg - */ - public void setFec_ing_lisneg(Date pFec_ing_lisneg) { - fec_ing_lisneg = pFec_ing_lisneg; - } - - /** - * Obtiene el valor de usuario_cod - * - * @return valor de usuario_cod - */ - public String getUsuario_cod() { - return usuario_cod; - } - - /** - * Fija el valor de usuario_cod - * - * @param pUsuario_cod nuevo Valor de usuario_cod - */ - public void setUsuario_cod(String pUsuario_cod) { - usuario_cod = pUsuario_cod; - } - - /** - * Obtiene el valor de fec_transaccion - * - * @return valor de fec_transaccion - */ - public Timestamp getFec_transaccion() { - return fec_transaccion; - } - - /** - * Fija el valor de fec_transaccion - * - * @param pFec_transaccion nuevo Valor de fec_transaccion - */ - public void setFec_transaccion(Timestamp pFec_transaccion) { - fec_transaccion = pFec_transaccion; - } - - /** - * Obtiene el valor de terminal - * - * @return valor de terminal - */ - public String getTerminal() { - return terminal; - } - - /** - * Fija el valor de terminal - * - * @param pTerminal nuevo Valor de terminal - */ - public void setTerminal(String pTerminal) { - terminal = pTerminal; - } - - /** - * Obtiene el valor de transaccion - * - * @return valor de transaccion - */ - public String getTransaccion() { - return transaccion; - } - - /** - * Fija el valor de transaccion - * - * @param pTransaccion nuevo Valor de transaccion - */ - public void setTransaccion(String pTransaccion) { - transaccion = pTransaccion; - } - - /** - * Obtiene el valor de creacion_cli - * - * @return valor de creacion_cli - */ - public String getCreacion_cli() { - return creacion_cli; - } - - /** - * Fija el valor de creacion_cli - * - * @param pCreacion_cli nuevo Valor de creacion_cli - */ - public void setCreacion_cli(String pCreacion_cli) { - creacion_cli = pCreacion_cli; - } - - /** - * Obtiene el valor de actualizacion_cli - * - * @return valor de actualizacion_cli - */ - public String getActualizacion_cli() { - return actualizacion_cli; - } - - /** - * Fija el valor de actualizacion_cli - * - * @param pActualizacion_cli nuevo Valor de actualizacion_cli - */ - public void setActualizacion_cli(String pActualizacion_cli) { - actualizacion_cli = pActualizacion_cli; - } - - /** - * Obtiene el valor de constancia_consep - * - * @return valor de constancia_consep - */ - public String getConstancia_consep() { - return constancia_consep; - } - - /** - * Fija el valor de constancia_consep - * - * @param pConstancia_consep nuevo Valor de constancia_consep - */ - public void setConstancia_consep(String pConstancia_consep) { - constancia_consep = pConstancia_consep; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneConsepLog)) { - return false; - } - TgeneConsepLog that = (TgeneConsepLog) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneConsepLog - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco TgeneConsepLog - */ - public Object createInstance() { - TgeneConsepLog instance = new TgeneConsepLog(); - return instance; - } - - /** - * Clona la entidad TgeneConsepLog - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneConsepLog p = (TgeneConsepLog) this.clone(); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCountry.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCountry.java.svn-base deleted file mode 100644 index aed4b8c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCountry.java.svn-base +++ /dev/null @@ -1,216 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECOUNTRY*/ -@Entity(name="TgeneCountry") -@Table(name="TGENECOUNTRY") -public class TgeneCountry extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCountry -*/ -@Id -@Column(name="COUNTRYCODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="INITIALS", nullable=true) - -/** -* Siglas del pais -*/ -private String initials; - -@Column(name="AREACODE", nullable=true) - -/** -* Codigo de area del pais -*/ -private Integer areacode; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Nombre del pais -*/ -private String description; - -@Column(name="CITIZENSHIP", nullable=false) - -/** -* Nacionalidad asociada al pais -*/ -private String citizenship; - -/**Contructor por defecto*/ -public TgeneCountry(){ -} -/**Contructor de TgeneCountry -@param pPk Clave Primaria del entity -@param pDescription Nombre del pais -@param pCitizenship Nacionalidad asociada al pais -*/ -public TgeneCountry(String pPk,String pDescription,String pCitizenship){ - this(); - pk=pPk; - description=pDescription; - citizenship=pCitizenship; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCountry -*/ -public static TgeneCountry find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneCountry obj = pEntityManager.find(TgeneCountry.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCountry -@return El objeto que referencia a la Clave primaria de TgeneCountry -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCountry -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCountry -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de initials -@return valor de initials*/ -public String getInitials(){ - return initials; -} -/**Fija el valor de initials -@param pInitials nuevo Valor de initials*/ -public void setInitials(String pInitials){ - initials=pInitials; -} - -/**Obtiene el valor de areacode -@return valor de areacode*/ -public Integer getAreacode(){ - return areacode; -} -/**Fija el valor de areacode -@param pAreacode nuevo Valor de areacode*/ -public void setAreacode(Integer pAreacode){ - areacode=pAreacode; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de citizenship -@return valor de citizenship*/ -public String getCitizenship(){ - return citizenship; -} -/**Fija el valor de citizenship -@param pCitizenship nuevo Valor de citizenship*/ -public void setCitizenship(String pCitizenship){ - citizenship=pCitizenship; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCountry))return false; - TgeneCountry that = (TgeneCountry) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCountry -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCountry -*/ -public Object createInstance(){ - TgeneCountry instance=new TgeneCountry(); - return instance; -} -/**Clona la entidad TgeneCountry -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCountry p=(TgeneCountry)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCreditType.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCreditType.java.svn-base deleted file mode 100644 index cbe5b70..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCreditType.java.svn-base +++ /dev/null @@ -1,194 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECREDITTYPE*/ -@Entity(name="TgeneCreditType") -@Table(name="TGENECREDITTYPE") -public class TgeneCreditType extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCreditType -*/ -@Id -@Column(name="CREDITTYPECODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del tipo de credito -*/ -private String description; - -@Column(name="GRACEDAYS", nullable=true) - -/** -* Dias de gracia para paso a vencido de la cuota -*/ -private Integer gracedays; - -@Column(name="CREDITGRACEDAYS", nullable=true) - -/** -* Dias de gracia para pasar todas las cuotas a vencido, depende de la primera cuota vencida -*/ -private Integer creditgracedays; - -/**Contructor por defecto*/ -public TgeneCreditType(){ -} -/**Contructor de TgeneCreditType -@param pPk Clave Primaria del entity -*/ -public TgeneCreditType(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCreditType -*/ -public static TgeneCreditType find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneCreditType obj = pEntityManager.find(TgeneCreditType.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCreditType -@return El objeto que referencia a la Clave primaria de TgeneCreditType -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCreditType -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCreditType -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de gracedays -@return valor de gracedays*/ -public Integer getGracedays(){ - return gracedays; -} -/**Fija el valor de gracedays -@param pGracedays nuevo Valor de gracedays*/ -public void setGracedays(Integer pGracedays){ - gracedays=pGracedays; -} - -/**Obtiene el valor de creditgracedays -@return valor de creditgracedays*/ -public Integer getCreditgracedays(){ - return creditgracedays; -} -/**Fija el valor de creditgracedays -@param pCreditgracedays nuevo Valor de creditgracedays*/ -public void setCreditgracedays(Integer pCreditgracedays){ - creditgracedays=pCreditgracedays; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCreditType))return false; - TgeneCreditType that = (TgeneCreditType) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCreditType -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCreditType -*/ -public Object createInstance(){ - TgeneCreditType instance=new TgeneCreditType(); - return instance; -} -/**Clona la entidad TgeneCreditType -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCreditType p=(TgeneCreditType)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrency.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrency.java.svn-base deleted file mode 100644 index 444833e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrency.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECURRENCY*/ -@Entity(name="TgeneCurrency") -@Table(name="TGENECURRENCY") -public class TgeneCurrency extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCurrency -*/ -@Id -@Column(name="CURRENCYCODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="PRESISION", nullable=false) - -/** -* Numero de decimales de la moneda -*/ -private Integer presision; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion de la moneda -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneCurrency(){ -} -/**Contructor de TgeneCurrency -@param pPk Clave Primaria del entity -@param pPresision Numero de decimales de la moneda -@param pDescription Descripcion de la moneda -*/ -public TgeneCurrency(String pPk,Integer pPresision,String pDescription){ - this(); - pk=pPk; - presision=pPresision; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCurrency -*/ -public static TgeneCurrency find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneCurrency obj = pEntityManager.find(TgeneCurrency.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCurrency -@return El objeto que referencia a la Clave primaria de TgeneCurrency -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCurrency -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCurrency -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de presision -@return valor de presision*/ -public Integer getPresision(){ - return presision; -} -/**Fija el valor de presision -@param pPresision nuevo Valor de presision*/ -public void setPresision(Integer pPresision){ - presision=pPresision; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCurrency))return false; - TgeneCurrency that = (TgeneCurrency) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCurrency -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCurrency -*/ -public Object createInstance(){ - TgeneCurrency instance=new TgeneCurrency(); - return instance; -} -/**Clona la entidad TgeneCurrency -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCurrency p=(TgeneCurrency)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRate.java.svn-base deleted file mode 100644 index 1d18e2c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRate.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECURRENCYRATE*/ -@Entity(name="TgeneCurrencyRate") -@Table(name="TGENECURRENCYRATE") -public class TgeneCurrencyRate extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCurrencyRate -*/ -@EmbeddedId -private TgeneCurrencyRateKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="BUYRATE", nullable=true) - -/** -* Cotizacion de compra asociada a la moneda -*/ -private BigDecimal buyrate; - -@Column(name="SELLRATE", nullable=true) - -/** -* Cotizacion de venta asociada a la moneda -*/ -private BigDecimal sellrate; - -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual estan viegnetes las cotizaciones de las monedas. -*/ -private Timestamp datefrom; - -/**Contructor por defecto*/ -public TgeneCurrencyRate(){ -} -/**Contructor de TgeneCurrencyRate -@param pPk Clave Primaria del entity -*/ -public TgeneCurrencyRate(TgeneCurrencyRateKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCurrencyRate -*/ -public static TgeneCurrencyRate find(EntityManager pEntityManager,TgeneCurrencyRateKey pKey) throws Exception{ - TgeneCurrencyRate obj = pEntityManager.find(TgeneCurrencyRate.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCurrencyRate -@return El objeto que referencia a la Clave primaria de TgeneCurrencyRate -*/ -public TgeneCurrencyRateKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCurrencyRate -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCurrencyRate -*/ -public void setPk(TgeneCurrencyRateKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de buyrate -@return valor de buyrate*/ -public BigDecimal getBuyrate(){ - return buyrate; -} -/**Fija el valor de buyrate -@param pBuyrate nuevo Valor de buyrate*/ -public void setBuyrate(BigDecimal pBuyrate){ - buyrate=pBuyrate; -} - -/**Obtiene el valor de sellrate -@return valor de sellrate*/ -public BigDecimal getSellrate(){ - return sellrate; -} -/**Fija el valor de sellrate -@param pSellrate nuevo Valor de sellrate*/ -public void setSellrate(BigDecimal pSellrate){ - sellrate=pSellrate; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCurrencyRate))return false; - TgeneCurrencyRate that = (TgeneCurrencyRate) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCurrencyRate -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCurrencyRate -*/ -public Object createInstance(){ - TgeneCurrencyRate instance=new TgeneCurrencyRate(); - instance.setPk(new TgeneCurrencyRateKey()); - return instance; -} -/**Clona la entidad TgeneCurrencyRate -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCurrencyRate p=(TgeneCurrencyRate)this.clone(); - p.setPk((TgeneCurrencyRateKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroup.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroup.java.svn-base deleted file mode 100644 index 6e04a1e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroup.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENECURRENCYRATEGROUP*/ -@Entity(name="TgeneCurrencyRateGroup") -@Table(name="TGENECURRENCYRATEGROUP") -public class TgeneCurrencyRateGroup extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneCurrencyRateGroup -*/ -@EmbeddedId -private TgeneCurrencyRateGroupKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejod e optimistick locking del registro -*/ -private Integer recordversion; - -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual estan vigentes las cotizaciones de las monedas. -*/ -private Timestamp datefrom; - -@Column(name="BUYRATE", nullable=true) - -/** -* Cotizacion de compro de la moneda respecto a la moneda local -*/ -private BigDecimal buyrate; - -@Column(name="SELLRATE", nullable=true) - -/** -* Cotizacion de venta de la moneda respecto a la moneda local. -*/ -private BigDecimal sellrate; - -/**Contructor por defecto*/ -public TgeneCurrencyRateGroup(){ -} -/**Contructor de TgeneCurrencyRateGroup -@param pPk Clave Primaria del entity -*/ -public TgeneCurrencyRateGroup(TgeneCurrencyRateGroupKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneCurrencyRateGroup -*/ -public static TgeneCurrencyRateGroup find(EntityManager pEntityManager,TgeneCurrencyRateGroupKey pKey) throws Exception{ - TgeneCurrencyRateGroup obj = pEntityManager.find(TgeneCurrencyRateGroup.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneCurrencyRateGroup -@return El objeto que referencia a la Clave primaria de TgeneCurrencyRateGroup -*/ -public TgeneCurrencyRateGroupKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneCurrencyRateGroup -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneCurrencyRateGroup -*/ -public void setPk(TgeneCurrencyRateGroupKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de buyrate -@return valor de buyrate*/ -public BigDecimal getBuyrate(){ - return buyrate; -} -/**Fija el valor de buyrate -@param pBuyrate nuevo Valor de buyrate*/ -public void setBuyrate(BigDecimal pBuyrate){ - buyrate=pBuyrate; -} - -/**Obtiene el valor de sellrate -@return valor de sellrate*/ -public BigDecimal getSellrate(){ - return sellrate; -} -/**Fija el valor de sellrate -@param pSellrate nuevo Valor de sellrate*/ -public void setSellrate(BigDecimal pSellrate){ - sellrate=pSellrate; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneCurrencyRateGroup))return false; - TgeneCurrencyRateGroup that = (TgeneCurrencyRateGroup) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneCurrencyRateGroup -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneCurrencyRateGroup -*/ -public Object createInstance(){ - TgeneCurrencyRateGroup instance=new TgeneCurrencyRateGroup(); - instance.setPk(new TgeneCurrencyRateGroupKey()); - return instance; -} -/**Clona la entidad TgeneCurrencyRateGroup -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneCurrencyRateGroup p=(TgeneCurrencyRateGroup)this.clone(); - p.setPk((TgeneCurrencyRateGroupKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroupKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroupKey.java.svn-base deleted file mode 100644 index 4bf7fa6..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateGroupKey.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECURRENCYRATEGROUP*/ -@Embeddable -public class TgeneCurrencyRateGroupKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CURRENCYRATECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo de cotizacion de moendas EMP Empleados -*/ -private String currencyratecatalog; - -@Column(name="CURRENCYRATECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de catalogo de grupos de cotizacion de monedas CURRENCYGROUP -*/ -private String currencyratecatalogcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente la cotizacion de la moneda -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneCurrencyRateGroupKey(){} -/**Contructor de TgeneCurrencyRateGroupKey -@param pCurrencyratecatalog Codigo de catalogo de cotizacion de moendas EMP Empleados -@param pCurrencyratecatalogcode Codigo de catalogo de grupos de cotizacion de monedas CURRENCYGROUP -@param pCurrencycode Codigo de moneda -@param pDateto Fecha hasta la cual esta vigente la cotizacion de la moneda -*/ -public TgeneCurrencyRateGroupKey(String pCurrencyratecatalog,String pCurrencyratecatalogcode,String pCurrencycode,Timestamp pDateto){ - currencyratecatalog=pCurrencyratecatalog; - currencyratecatalogcode=pCurrencyratecatalogcode; - currencycode=pCurrencycode; - dateto=pDateto; -} -/**Obtiene el valor de currencyratecatalog -@return valor de currencyratecatalog*/ -public String getCurrencyratecatalog(){ - return currencyratecatalog; -} -/**Fija el valor de currencyratecatalog -@param pCurrencyratecatalog nuevo Valor de currencyratecatalog*/ -public void setCurrencyratecatalog(String pCurrencyratecatalog){ - currencyratecatalog=pCurrencyratecatalog; -} - -/**Obtiene el valor de currencyratecatalogcode -@return valor de currencyratecatalogcode*/ -public String getCurrencyratecatalogcode(){ - return currencyratecatalogcode; -} -/**Fija el valor de currencyratecatalogcode -@param pCurrencyratecatalogcode nuevo Valor de currencyratecatalogcode*/ -public void setCurrencyratecatalogcode(String pCurrencyratecatalogcode){ - currencyratecatalogcode=pCurrencyratecatalogcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgeneCurrencyRateGroupKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCurrencyRateGroupKey))return false; - TgeneCurrencyRateGroupKey that = (TgeneCurrencyRateGroupKey) o; - if (this.getCurrencyratecatalog() == null || that.getCurrencyratecatalog() == null){ - return false; - } - if (! this.getCurrencyratecatalog().equals(that.getCurrencyratecatalog())){ - return false; - } - if (this.getCurrencyratecatalogcode() == null || that.getCurrencyratecatalogcode() == null){ - return false; - } - if (! this.getCurrencyratecatalogcode().equals(that.getCurrencyratecatalogcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCurrencyRateGroupKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCurrencyratecatalog() == null ? 0 : this.getCurrencyratecatalog().hashCode()); - result = result * 37 + (this.getCurrencyratecatalogcode() == null ? 0 : this.getCurrencyratecatalogcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateKey.java.svn-base deleted file mode 100644 index 4fb1a2c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneCurrencyRateKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENECURRENCYRATE*/ -@Embeddable -public class TgeneCurrencyRateKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente las cotizaciones de la moneda -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneCurrencyRateKey(){} -/**Contructor de TgeneCurrencyRateKey -@param pCurrencycode Codigo de moneda -@param pDateto Fecha hasta la cual esta vigente las cotizaciones de la moneda -*/ -public TgeneCurrencyRateKey(String pCurrencycode,Timestamp pDateto){ - currencycode=pCurrencycode; - dateto=pDateto; -} -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgeneCurrencyRateKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneCurrencyRateKey))return false; - TgeneCurrencyRateKey that = (TgeneCurrencyRateKey) o; - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneCurrencyRateKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenomination.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenomination.java.svn-base deleted file mode 100644 index 48d6043..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenomination.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEDENOMINATION*/ -@Entity(name="TgeneDenomination") -@Table(name="TGENEDENOMINATION") -public class TgeneDenomination extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneDenomination -*/ -@EmbeddedId -private TgeneDenominationKey pk; -/**Contructor por defecto*/ -public TgeneDenomination(){ -} -/**Contructor de TgeneDenomination -@param pPk Clave Primaria del entity -*/ -public TgeneDenomination(TgeneDenominationKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneDenomination -*/ -public static TgeneDenomination find(EntityManager pEntityManager,TgeneDenominationKey pKey) throws Exception{ - TgeneDenomination obj = pEntityManager.find(TgeneDenomination.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneDenomination -@return El objeto que referencia a la Clave primaria de TgeneDenomination -*/ -public TgeneDenominationKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneDenomination -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneDenomination -*/ -public void setPk(TgeneDenominationKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneDenomination))return false; - TgeneDenomination that = (TgeneDenomination) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneDenomination -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneDenomination -*/ -public Object createInstance(){ - TgeneDenomination instance=new TgeneDenomination(); - instance.setPk(new TgeneDenominationKey()); - return instance; -} -/**Clona la entidad TgeneDenomination -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneDenomination p=(TgeneDenomination)this.clone(); - p.setPk((TgeneDenominationKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenominationKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenominationKey.java.svn-base deleted file mode 100644 index 7eb845d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneDenominationKey.java.svn-base +++ /dev/null @@ -1,179 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEDENOMINATION*/ -@Embeddable -public class TgeneDenominationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -@Column(name="VALUE", nullable=false,updatable=false) - -/** -* Valor de la denominacion -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneDenominationKey(){} -/**Contructor de TgeneDenominationKey -@param pCurrencycode Codigo de moneda -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pValue Valor de la denominacion -*/ -public TgeneDenominationKey(String pCurrencycode,String pCatalog,String pCatalogcode,BigDecimal pValue){ - currencycode=pCurrencycode; - catalog=pCatalog; - catalogcode=pCatalogcode; - value=pValue; -} -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Implementacin de la comparacin de TgeneDenominationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneDenominationKey))return false; - TgeneDenominationKey that = (TgeneDenominationKey) o; - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - if (this.getValue() == null || that.getValue() == null){ - return false; - } - if (! this.getValue().equals(that.getValue())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneDenominationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - result = result * 37 + (this.getValue() == null ? 0 : this.getValue().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntity.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntity.java.svn-base deleted file mode 100644 index 541489c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntity.java.svn-base +++ /dev/null @@ -1,327 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEENTITY*/ -@Entity(name="TgeneEntity") -@Table(name="TGENEENTITY") -public class TgeneEntity extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneEntity -*/ -@EmbeddedId -private TgeneEntityKey pk; -@Column(name="PROJECT", nullable=true) - -/** -* Projecto en el cual se maneja el bean. -*/ -private String project; - -@Column(name="PAC", nullable=false) - -/** -* Nombre del subpaquete en el cual se creara la clase -*/ -private String pac; - -@Column(name="JAVAEXTENDS", nullable=true) - -/** -* Indica si el bean extiende de alguna clase en particular -*/ -private String javaextends; - -@Column(name="JAVAIMPLEMENTS", nullable=true) - -/** -* Indica si la clase implementa alguna clase en particular -*/ -private String javaimplements; - -@Column(name="CREATEREFERENCES", nullable=false) - -/** -* Indica si el entity genera referencias a entities padre. -*/ -private String createreferences; - -@Column(name="OPTIMISTICLOCKING", nullable=false) - -/** -* Indca si en enity lleva control de bloqueo optimista -*/ -private String optimisticlocking; - -@Column(name="HISTORY", nullable=false) - -/** -* Indica si el entity maneja historia. -*/ -private String history; - -@Column(name="AUTOIMPORT", nullable=true) - -/** -* Indica -*/ -private String autoimport; - -@Column(name="INMANUAL", nullable=true) - -/** -* Indica que la clase tiene implementados metodos manualmete y no se puede generar el bean automaticamente. -*/ -private String inmanual; - -@Column(name="CACHE", nullable=true) - -/** -* Indica que la tabla manaja cache, si se da mantenimiento se limpia el cache de la tabla -*/ -private String cache; - -@Column(name="LOG", nullable=true) - -/** -* Indica que la tabla manaja auditoria de cambios -*/ -private String log; - -/**Contructor por defecto*/ -public TgeneEntity(){ -} -/**Contructor de TgeneEntity -@param pPk Clave Primaria del entity -@param pPac Nombre del subpaquete en el cual se creara la clase -@param pCreatereferences Indica si el entity genera referencias a entities padre. -@param pOptimisticlocking Indca si en enity lleva control de bloqueo optimista -@param pHistory Indica si el entity maneja historia. -*/ -public TgeneEntity(TgeneEntityKey pPk,String pPac,String pCreatereferences,String pOptimisticlocking,String pHistory){ - this(); - pk=pPk; - pac=pPac; - createreferences=pCreatereferences; - optimisticlocking=pOptimisticlocking; - history=pHistory; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneEntity -*/ -public static TgeneEntity find(EntityManager pEntityManager,TgeneEntityKey pKey) throws Exception{ - TgeneEntity obj = pEntityManager.find(TgeneEntity.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneEntity -@return El objeto que referencia a la Clave primaria de TgeneEntity -*/ -public TgeneEntityKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneEntity -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneEntity -*/ -public void setPk(TgeneEntityKey pPk){ - pk=pPk; -} -/**Obtiene el valor de project -@return valor de project*/ -public String getProject(){ - return project; -} -/**Fija el valor de project -@param pProject nuevo Valor de project*/ -public void setProject(String pProject){ - project=pProject; -} - -/**Obtiene el valor de pac -@return valor de pac*/ -public String getPac(){ - return pac; -} -/**Fija el valor de pac -@param pPac nuevo Valor de pac*/ -public void setPac(String pPac){ - pac=pPac; -} - -/**Obtiene el valor de javaextends -@return valor de javaextends*/ -public String getJavaextends(){ - return javaextends; -} -/**Fija el valor de javaextends -@param pJavaextends nuevo Valor de javaextends*/ -public void setJavaextends(String pJavaextends){ - javaextends=pJavaextends; -} - -/**Obtiene el valor de javaimplements -@return valor de javaimplements*/ -public String getJavaimplements(){ - return javaimplements; -} -/**Fija el valor de javaimplements -@param pJavaimplements nuevo Valor de javaimplements*/ -public void setJavaimplements(String pJavaimplements){ - javaimplements=pJavaimplements; -} - -/**Obtiene el valor de createreferences -@return valor de createreferences*/ -public String getCreatereferences(){ - return createreferences; -} -/**Fija el valor de createreferences -@param pCreatereferences nuevo Valor de createreferences*/ -public void setCreatereferences(String pCreatereferences){ - createreferences=pCreatereferences; -} - -/**Obtiene el valor de optimisticlocking -@return valor de optimisticlocking*/ -public String getOptimisticlocking(){ - return optimisticlocking; -} -/**Fija el valor de optimisticlocking -@param pOptimisticlocking nuevo Valor de optimisticlocking*/ -public void setOptimisticlocking(String pOptimisticlocking){ - optimisticlocking=pOptimisticlocking; -} - -/**Obtiene el valor de history -@return valor de history*/ -public String getHistory(){ - return history; -} -/**Fija el valor de history -@param pHistory nuevo Valor de history*/ -public void setHistory(String pHistory){ - history=pHistory; -} - -/**Obtiene el valor de autoimport -@return valor de autoimport*/ -public String getAutoimport(){ - return autoimport; -} -/**Fija el valor de autoimport -@param pAutoimport nuevo Valor de autoimport*/ -public void setAutoimport(String pAutoimport){ - autoimport=pAutoimport; -} - -/**Obtiene el valor de inmanual -@return valor de inmanual*/ -public String getInmanual(){ - return inmanual; -} -/**Fija el valor de inmanual -@param pInmanual nuevo Valor de inmanual*/ -public void setInmanual(String pInmanual){ - inmanual=pInmanual; -} - -/**Obtiene el valor de cache -@return valor de cache*/ -public String getCache(){ - return cache; -} -/**Fija el valor de cache -@param pCache nuevo Valor de cache*/ -public void setCache(String pCache){ - cache=pCache; -} - -/**Obtiene el valor de log -@return valor de log*/ -public String getLog(){ - return log; -} -/**Fija el valor de log -@param pLog nuevo Valor de log*/ -public void setLog(String pLog){ - log=pLog; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneEntity))return false; - TgeneEntity that = (TgeneEntity) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneEntity -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneEntity -*/ -public Object createInstance(){ - TgeneEntity instance=new TgeneEntity(); - instance.setPk(new TgeneEntityKey()); - return instance; -} -/**Clona la entidad TgeneEntity -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneEntity p=(TgeneEntity)this.clone(); - p.setPk((TgeneEntityKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntityKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntityKey.java.svn-base deleted file mode 100644 index fd31b1a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneEntityKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEENTITY*/ -@Embeddable -public class TgeneEntityKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TNAME", nullable=false,updatable=false) - -/** -* Nombre de la tabla en el diccionario de datos -*/ -private String tname; - -@Column(name="ENTITY", nullable=false,updatable=false) - -/** -* Nombre del bean a crear -*/ -private String entity; - -/**Contructor por defecto*/ -public TgeneEntityKey(){} -/**Contructor de TgeneEntityKey -@param pTname Nombre de la tabla en el diccionario de datos -@param pEntity Nombre del bean a crear -*/ -public TgeneEntityKey(String pTname,String pEntity){ - tname=pTname; - entity=pEntity; -} -/**Obtiene el valor de tname -@return valor de tname*/ -public String getTname(){ - return tname; -} -/**Fija el valor de tname -@param pTname nuevo Valor de tname*/ -public void setTname(String pTname){ - tname=pTname; -} - -/**Obtiene el valor de entity -@return valor de entity*/ -public String getEntity(){ - return entity; -} -/**Fija el valor de entity -@param pEntity nuevo Valor de entity*/ -public void setEntity(String pEntity){ - entity=pEntity; -} - -/**Implementacin de la comparacin de TgeneEntityKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneEntityKey))return false; - TgeneEntityKey that = (TgeneEntityKey) o; - if (this.getTname() == null || that.getTname() == null){ - return false; - } - if (! this.getTname().equals(that.getTname())){ - return false; - } - if (this.getEntity() == null || that.getEntity() == null){ - return false; - } - if (! this.getEntity().equals(that.getEntity())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneEntityKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTname() == null ? 0 : this.getTname().hashCode()); - result = result * 37 + (this.getEntity() == null ? 0 : this.getEntity().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFrequency.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFrequency.java.svn-base deleted file mode 100644 index df496d3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFrequency.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEFREQUENCY*/ -@Entity(name="TgeneFrequency") -@Table(name="TGENEFREQUENCY") -public class TgeneFrequency extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneFrequency -*/ -@Id -@Column(name="FRECQENCYCODE" ,nullable=false, updatable=false) -private Integer pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DAYS", nullable=false) - -/** -* Numero de dias del cliclo diario 1 dia, mensula 30 dias -*/ -private Integer days; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion de la frecuencia -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneFrequency(){ -} -/**Contructor de TgeneFrequency -@param pPk Clave Primaria del entity -@param pDays Numero de dias del cliclo diario 1 dia, mensula 30 dias -@param pDescription Descripcion de la frecuencia -*/ -public TgeneFrequency(Integer pPk,Integer pDays,String pDescription){ - this(); - pk=pPk; - days=pDays; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneFrequency -*/ -public static TgeneFrequency find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneFrequency obj = pEntityManager.find(TgeneFrequency.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneFrequency -@return El objeto que referencia a la Clave primaria de TgeneFrequency -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneFrequency -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneFrequency -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de days -@return valor de days*/ -public Integer getDays(){ - return days; -} -/**Fija el valor de days -@param pDays nuevo Valor de days*/ -public void setDays(Integer pDays){ - days=pDays; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneFrequency))return false; - TgeneFrequency that = (TgeneFrequency) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneFrequency -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneFrequency -*/ -public Object createInstance(){ - TgeneFrequency instance=new TgeneFrequency(); - return instance; -} -/**Clona la entidad TgeneFrequency -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneFrequency p=(TgeneFrequency)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFunctions.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFunctions.java.svn-base deleted file mode 100644 index f5248f2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneFunctions.java.svn-base +++ /dev/null @@ -1,244 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEFUNCTIONS */ -@Entity(name = "TgeneFunctions") -@Table(name = "TGENEFUNCTIONS") -public class TgeneFunctions extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneFunctions - */ - @Id - @Column(name = "NAME", nullable = false, updatable = false) - private String pk; - - @Column(name = "CLASSNAME", nullable = false) - /** - * NOMBRE DE LA CLASE - */ - private String classname; - - @Column(name = "DESCRIPTION", nullable = true) - private String description; - - @Column(name = "ACTIVE", nullable = true) - /** - * ESTADO DE LA FUNCION - */ - private String active; - - public String getDescription() { - return this.description; - } - - public void setDescription(String pDescription) { - this.description = pDescription; - } - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * MANEJO DE OPTIMISTIC LOCKING - */ - private Integer recordversion; - - /** Contructor por defecto */ - public TgeneFunctions() { - } - - /** - * Contructor de TgeneFunctions - * - * @param pPk Clave Primaria del entity - * @param pClassname NOMBRE DE LA CLASE - */ - public TgeneFunctions(String pPk, String pClassname) { - this(); - this.pk = pPk; - this.classname = pClassname; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneFunctions - */ - public static TgeneFunctions find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneFunctions obj = pEntityManager.find(TgeneFunctions.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneFunctions - * - * @return El objeto que referencia a la Clave primaria de TgeneFunctions - */ - public String getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneFunctions - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneFunctions - */ - public void setPk(String pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de classname - * - * @return valor de classname - */ - public String getClassname() { - return this.classname; - } - - /** - * Fija el valor de classname - * - * @param pClassname nuevo Valor de classname - */ - public void setClassname(String pClassname) { - this.classname = pClassname; - } - - /** - * Obtiene el valor de active - * - * @return valor de active - */ - public String getActive() { - return this.active; - } - - /** - * Fija el valor de active - * - * @param pActive nuevo Valor de active - */ - public void setActive(String pActive) { - this.active = pActive; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneFunctions)) { - return false; - } - TgeneFunctions that = (TgeneFunctions) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneFunctions - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneFunctions */ - @Override - public Object createInstance() { - TgeneFunctions instance = new TgeneFunctions(); - return instance; - } - - /** - * Clona la entidad TgeneFunctions - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneFunctions p = (TgeneFunctions) this.clone(); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabel.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabel.java.svn-base deleted file mode 100644 index a5ee04e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabel.java.svn-base +++ /dev/null @@ -1,219 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import java.util.List; -import javax.persistence.Query; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENELABEL*/ -@Entity(name = "TgeneLabel") -@Table(name = "TGENELABEL") -public class TgeneLabel extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneLabel - */ - @EmbeddedId - private TgeneLabelKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "TYPE", nullable = true) - /** - * null - */ - private String type; - @Column(name = "DESCRIPTION", nullable = true) - /** - * null - */ - private String description; - - /**Contructor por defecto*/ - public TgeneLabel() { - } - - /**Contructor de TgeneLabel - @param pPk Clave Primaria del entity - */ - public TgeneLabel(TgeneLabelKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneLabel - */ - public static TgeneLabel find(EntityManager pEntityManager, TgeneLabelKey pKey) throws Exception { - TgeneLabel obj = pEntityManager.find(TgeneLabel.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TgeneLabel - @return El objeto que referencia a la Clave primaria de TgeneLabel - */ - public TgeneLabelKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TgeneLabel - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneLabel - */ - public void setPk(TgeneLabelKey pPk) { - pk = pPk; - } - - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion() { - return recordversion; - } - - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /**Obtiene el valor de type - @return valor de type*/ - public String getType() { - return type; - } - - /**Fija el valor de type - @param pType nuevo Valor de type*/ - public void setType(String pType) { - type = pType; - } - - /**Obtiene el valor de description - @return valor de description*/ - public String getDescription() { - return description; - } - - /**Fija el valor de description - @param pDescription nuevo Valor de description*/ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneLabel)) { - return false; - } - TgeneLabel that = (TgeneLabel) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacin del metodo hashCode de la la entidad TgeneLabel - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacin de la creacin de un bean en blanco TgeneLabel - */ - public Object createInstance() { - TgeneLabel instance = new TgeneLabel(); - instance.setPk(new TgeneLabelKey()); - return instance; - } - - /**Clona la entidad TgeneLabel - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneLabel p = (TgeneLabel) this.clone(); - p.setPk((TgeneLabelKey) this.pk.cloneMe()); - return p; - } - //METODOS MANUALES - private static final String SQL = - "from TgeneLabel tl" - + " where tl.pk.languagecode = :languagecode" - + " and tl.pk.channelcode = :channelcode"; - - /** - * Metodo que devuelve la lista de eiquetas a ser utilizadas en la aplicacin - * @param pEntityManager - * @param languagecode - * @param channelcode - * @return - * @throws Exception - */ - public static List getTgeneLabel(EntityManager pEntityManager, - String languagecode, String channelcode) throws Exception { - List lTgeneLabel = null; - Query qry = pEntityManager.createQuery(SQL); - qry.setParameter("languagecode", languagecode); - qry.setParameter("channelcode", channelcode); - lTgeneLabel = qry.getResultList(); - return lTgeneLabel; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabelKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabelKey.java.svn-base deleted file mode 100644 index 5d5828f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLabelKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENELABEL*/ -@Embeddable -public class TgeneLabelKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="LABEL", nullable=false,updatable=false) - -/** -* Codigo de etiqueta -*/ -private String label; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -@Column(name="CHANNELCODE", nullable=false,updatable=false) - -/** -* Codigo de canal. -*/ -private String channelcode; - -/**Contructor por defecto*/ -public TgeneLabelKey(){} -/**Contructor de TgeneLabelKey -@param pLabel Codigo de etiqueta -@param pLanguagecode Codigo de idioma -@param pChannelcode Codigo de canal. -*/ -public TgeneLabelKey(String pLabel,String pLanguagecode,String pChannelcode){ - label=pLabel; - languagecode=pLanguagecode; - channelcode=pChannelcode; -} -/**Obtiene el valor de label -@return valor de label*/ -public String getLabel(){ - return label; -} -/**Fija el valor de label -@param pLabel nuevo Valor de label*/ -public void setLabel(String pLabel){ - label=pLabel; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Obtiene el valor de channelcode -@return valor de channelcode*/ -public String getChannelcode(){ - return channelcode; -} -/**Fija el valor de channelcode -@param pChannelcode nuevo Valor de channelcode*/ -public void setChannelcode(String pChannelcode){ - channelcode=pChannelcode; -} - -/**Implementacin de la comparacin de TgeneLabelKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneLabelKey))return false; - TgeneLabelKey that = (TgeneLabelKey) o; - if (this.getLabel() == null || that.getLabel() == null){ - return false; - } - if (! this.getLabel().equals(that.getLabel())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - if (this.getChannelcode() == null || that.getChannelcode() == null){ - return false; - } - if (! this.getChannelcode().equals(that.getChannelcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneLabelKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getLabel() == null ? 0 : this.getLabel().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - result = result * 37 + (this.getChannelcode() == null ? 0 : this.getChannelcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLanguage.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLanguage.java.svn-base deleted file mode 100644 index 78cb762..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneLanguage.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENELANGUAGE*/ -@Entity(name="TgeneLanguage") -@Table(name="TGENELANGUAGE") -public class TgeneLanguage extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneLanguage -*/ -@Id -@Column(name="LANGUAGECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del idioma -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneLanguage(){ -} -/**Contructor de TgeneLanguage -@param pPk Clave Primaria del entity -@param pDescription Descripcion del idioma -*/ -public TgeneLanguage(String pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneLanguage -*/ -public static TgeneLanguage find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneLanguage obj = pEntityManager.find(TgeneLanguage.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneLanguage -@return El objeto que referencia a la Clave primaria de TgeneLanguage -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneLanguage -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneLanguage -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneLanguage))return false; - TgeneLanguage that = (TgeneLanguage) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneLanguage -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneLanguage -*/ -public Object createInstance(){ - TgeneLanguage instance=new TgeneLanguage(); - return instance; -} -/**Clona la entidad TgeneLanguage -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneLanguage p=(TgeneLanguage)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOffice.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOffice.java.svn-base deleted file mode 100644 index 7f9765c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOffice.java.svn-base +++ /dev/null @@ -1,355 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; -import com.fp.general.exception.GeneralException; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEOFFICE */ -@Entity(name = "TgeneOffice") -@Table(name = "TGENEOFFICE") -public class TgeneOffice extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneOffice - */ - @EmbeddedId - private TgeneOfficeKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = true) - /** - * Nombre de la oficina - */ - private String description; - - @Column(name = "COUNTRYCODE", nullable = true) - /** - * Codigo de pais - */ - private String countrycode; - - @Column(name = "PROVINCECODE", nullable = true) - /** - * Codigo de provincia - */ - private String provincecode; - - @Column(name = "CITYCODE", nullable = true) - /** - * Codigo de cuidad - */ - private String citycode; - - @Column(name = "ADDRESS", nullable = true) - /** - * Dieccion de la oficina. - */ - private String address; - - @Column(name = "PHONE", nullable = true) - /** - * Numero de telefono asociado a la oficina. - */ - private String phone; - - @Column(name = "CANTONCODE", nullable = true) - /** - * Codigo de canton - */ - private String cantoncode; - - /** Contructor por defecto */ - public TgeneOffice() { - } - - /** - * Contructor de TgeneOffice - * - * @param pPk Clave Primaria del entity - */ - public TgeneOffice(TgeneOfficeKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneOffice - */ - public static TgeneOffice find(EntityManager pEntityManager, TgeneOfficeKey pKey) throws Exception { - TgeneOffice obj = pEntityManager.find(TgeneOffice.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneOffice - * - * @return El objeto que referencia a la Clave primaria de TgeneOffice - */ - public TgeneOfficeKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneOffice - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneOffice - */ - public void setPk(TgeneOfficeKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return this.description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - this.description = pDescription; - } - - /** - * Obtiene el valor de countrycode - * - * @return valor de countrycode - */ - public String getCountrycode() { - return this.countrycode; - } - - /** - * Fija el valor de countrycode - * - * @param pCountrycode nuevo Valor de countrycode - */ - public void setCountrycode(String pCountrycode) { - this.countrycode = pCountrycode; - } - - /** - * Obtiene el valor de provincecode - * - * @return valor de provincecode - */ - public String getProvincecode() { - return this.provincecode; - } - - /** - * Fija el valor de provincecode - * - * @param pProvincecode nuevo Valor de provincecode - */ - public void setProvincecode(String pProvincecode) { - this.provincecode = pProvincecode; - } - - /** - * Obtiene el valor de citycode - * - * @return valor de citycode - */ - public String getCitycode() { - return this.citycode; - } - - /** - * Fija el valor de citycode - * - * @param pCitycode nuevo Valor de citycode - */ - public void setCitycode(String pCitycode) { - this.citycode = pCitycode; - } - - /** - * Obtiene el valor de address - * - * @return valor de address - */ - public String getAddress() { - return this.address; - } - - /** - * Fija el valor de address - * - * @param pAddress nuevo Valor de address - */ - public void setAddress(String pAddress) { - this.address = pAddress; - } - - /** - * Obtiene el valor de phone - * - * @return valor de phone - */ - public String getPhone() { - return this.phone; - } - - /** - * Fija el valor de phone - * - * @param pPhone nuevo Valor de phone - */ - public void setPhone(String pPhone) { - this.phone = pPhone; - } - - /** - * Obtiene el valor de cantoncode - * - * @return valor de cantoncode - */ - public String getCantoncode() { - return this.cantoncode; - } - - /** - * Fija el valor de cantoncode - * - * @param pCantoncode nuevo Valor de cantoncode - */ - public void setCantoncode(String pCantoncode) { - this.cantoncode = pCantoncode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneOffice)) { - return false; - } - TgeneOffice that = (TgeneOffice) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneOffice - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneOffice */ - @Override - public Object createInstance() { - TgeneOffice instance = new TgeneOffice(); - instance.setPk(new TgeneOfficeKey()); - return instance; - } - - /** - * Clona la entidad TgeneOffice - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneOffice p = (TgeneOffice) this.clone(); - p.setPk((TgeneOfficeKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficeKey.java.svn-base deleted file mode 100644 index 59200aa..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficeKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEOFFICE*/ -@Embeddable -public class TgeneOfficeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneOfficeKey(){} -/**Contructor de TgeneOfficeKey -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -*/ -public TgeneOfficeKey(Integer pOfficecode,Integer pBranchcode,Integer pCompanycode){ - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; -} -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacion de la comparacion de TgeneOfficeKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneOfficeKey))return false; - TgeneOfficeKey that = (TgeneOfficeKey) o; - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneOfficeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficer.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficer.java.svn-base deleted file mode 100644 index ca264cb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficer.java.svn-base +++ /dev/null @@ -1,121 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEOFFICER*/ -@Entity(name="TgeneOfficer") -@Table(name="TGENEOFFICER") -public class TgeneOfficer extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneOfficer -*/ -@EmbeddedId -private TgeneOfficerKey pk; -/**Contructor por defecto*/ -public TgeneOfficer(){ -} -/**Contructor de TgeneOfficer -@param pPk Clave Primaria del entity -*/ -public TgeneOfficer(TgeneOfficerKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneOfficer -*/ -public static TgeneOfficer find(EntityManager pEntityManager,TgeneOfficerKey pKey) throws Exception{ - TgeneOfficer obj = pEntityManager.find(TgeneOfficer.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneOfficer -@return El objeto que referencia a la Clave primaria de TgeneOfficer -*/ -public TgeneOfficerKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneOfficer -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneOfficer -*/ -public void setPk(TgeneOfficerKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneOfficer))return false; - TgeneOfficer that = (TgeneOfficer) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneOfficer -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneOfficer -*/ -public Object createInstance(){ - TgeneOfficer instance=new TgeneOfficer(); - instance.setPk(new TgeneOfficerKey()); - return instance; -} -/**Clona la entidad TgeneOfficer -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneOfficer p=(TgeneOfficer)this.clone(); - p.setPk((TgeneOfficerKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficerKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficerKey.java.svn-base deleted file mode 100644 index 2ba368a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOfficerKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEOFFICER*/ -@Embeddable -public class TgeneOfficerKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -/**Contructor por defecto*/ -public TgeneOfficerKey(){} -/**Contructor de TgeneOfficerKey -@param pUsercode Codigo de usuario -@param pCompanycode Codigo de compania -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -*/ -public TgeneOfficerKey(String pUsercode,Integer pCompanycode,String pModulecode,String pProductcode,String pSubproductcode){ - usercode=pUsercode; - companycode=pCompanycode; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Implementacin de la comparacin de TgeneOfficerKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneOfficerKey))return false; - TgeneOfficerKey that = (TgeneOfficerKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneOfficerKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatus.java.svn-base deleted file mode 100644 index a4b0fb6..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatus.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEOPERATIONSTATUS*/ -@Entity(name="TgeneOperationStatus") -@Table(name="TGENEOPERATIONSTATUS") -public class TgeneOperationStatus extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneOperationStatus -*/ -@EmbeddedId -private TgeneOperationStatusKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del codigo de status de la operacion. -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneOperationStatus(){ -} -/**Contructor de TgeneOperationStatus -@param pPk Clave Primaria del entity -*/ -public TgeneOperationStatus(TgeneOperationStatusKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneOperationStatus -*/ -public static TgeneOperationStatus find(EntityManager pEntityManager,TgeneOperationStatusKey pKey) throws Exception{ - TgeneOperationStatus obj = pEntityManager.find(TgeneOperationStatus.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneOperationStatus -@return El objeto que referencia a la Clave primaria de TgeneOperationStatus -*/ -public TgeneOperationStatusKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneOperationStatus -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneOperationStatus -*/ -public void setPk(TgeneOperationStatusKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneOperationStatus))return false; - TgeneOperationStatus that = (TgeneOperationStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneOperationStatus -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneOperationStatus -*/ -public Object createInstance(){ - TgeneOperationStatus instance=new TgeneOperationStatus(); - instance.setPk(new TgeneOperationStatusKey()); - return instance; -} -/**Clona la entidad TgeneOperationStatus -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneOperationStatus p=(TgeneOperationStatus)this.clone(); - p.setPk((TgeneOperationStatusKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatusKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatusKey.java.svn-base deleted file mode 100644 index 5a43da7..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperationStatusKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEOPERATIONSTATUS*/ -@Embeddable -public class TgeneOperationStatusKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="OPERATIONSTATUS", nullable=false,updatable=false) - -/** -* Codigo de estatus de la operacion, ORI (Original), REF (refinanciada), RES (restructurada) -*/ -private String operationstatus; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneOperationStatusKey(){} -/**Contructor de TgeneOperationStatusKey -@param pOperationstatus Codigo de estatus de la operacion, ORI (Original), REF (refinanciada), RES (restructurada) -@param pModulecode Codigo de modulo -*/ -public TgeneOperationStatusKey(String pOperationstatus,String pModulecode){ - operationstatus=pOperationstatus; - modulecode=pModulecode; -} -/**Obtiene el valor de operationstatus -@return valor de operationstatus*/ -public String getOperationstatus(){ - return operationstatus; -} -/**Fija el valor de operationstatus -@param pOperationstatus nuevo Valor de operationstatus*/ -public void setOperationstatus(String pOperationstatus){ - operationstatus=pOperationstatus; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneOperationStatusKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneOperationStatusKey))return false; - TgeneOperationStatusKey that = (TgeneOperationStatusKey) o; - if (this.getOperationstatus() == null || that.getOperationstatus() == null){ - return false; - } - if (! this.getOperationstatus().equals(that.getOperationstatus())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneOperationStatusKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getOperationstatus() == null ? 0 : this.getOperationstatus().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeCondition.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeCondition.java.svn-base deleted file mode 100644 index 972d1e1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeCondition.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEOPERATIVECONDITION*/ -@Entity(name="TgeneOperativeCondition") -@Table(name="TGENEOPERATIVECONDITION") -public class TgeneOperativeCondition extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneOperativeCondition -*/ -@EmbeddedId -private TgeneOperativeConditionKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del codigo de condicion operativa -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneOperativeCondition(){ -} -/**Contructor de TgeneOperativeCondition -@param pPk Clave Primaria del entity -*/ -public TgeneOperativeCondition(TgeneOperativeConditionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneOperativeCondition -*/ -public static TgeneOperativeCondition find(EntityManager pEntityManager,TgeneOperativeConditionKey pKey) throws Exception{ - TgeneOperativeCondition obj = pEntityManager.find(TgeneOperativeCondition.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneOperativeCondition -@return El objeto que referencia a la Clave primaria de TgeneOperativeCondition -*/ -public TgeneOperativeConditionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneOperativeCondition -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneOperativeCondition -*/ -public void setPk(TgeneOperativeConditionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneOperativeCondition))return false; - TgeneOperativeCondition that = (TgeneOperativeCondition) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneOperativeCondition -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneOperativeCondition -*/ -public Object createInstance(){ - TgeneOperativeCondition instance=new TgeneOperativeCondition(); - instance.setPk(new TgeneOperativeConditionKey()); - return instance; -} -/**Clona la entidad TgeneOperativeCondition -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneOperativeCondition p=(TgeneOperativeCondition)this.clone(); - p.setPk((TgeneOperativeConditionKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeConditionKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeConditionKey.java.svn-base deleted file mode 100644 index 41db126..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneOperativeConditionKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEOPERATIVECONDITION*/ -@Embeddable -public class TgeneOperativeConditionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="OPERATIVCONDITION", nullable=false,updatable=false) - -/** -* Codigo de condicion operativa. -*/ -private String operativcondition; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneOperativeConditionKey(){} -/**Contructor de TgeneOperativeConditionKey -@param pOperativcondition Codigo de condicion operativa. -@param pModulecode Codigo de modulo -*/ -public TgeneOperativeConditionKey(String pOperativcondition,String pModulecode){ - operativcondition=pOperativcondition; - modulecode=pModulecode; -} -/**Obtiene el valor de operativcondition -@return valor de operativcondition*/ -public String getOperativcondition(){ - return operativcondition; -} -/**Fija el valor de operativcondition -@param pOperativcondition nuevo Valor de operativcondition*/ -public void setOperativcondition(String pOperativcondition){ - operativcondition=pOperativcondition; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneOperativeConditionKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneOperativeConditionKey))return false; - TgeneOperativeConditionKey that = (TgeneOperativeConditionKey) o; - if (this.getOperativcondition() == null || that.getOperativcondition() == null){ - return false; - } - if (! this.getOperativcondition().equals(that.getOperativcondition())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneOperativeConditionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getOperativcondition() == null ? 0 : this.getOperativcondition().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.netbeans-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.netbeans-base deleted file mode 100644 index 83c0024..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.netbeans-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPARAMETERS*/ -@Entity(name="TgeneParameters") -@Table(name="TGENEPARAMETERS") -public class TgeneParameters extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneParameters -*/ -@EmbeddedId -private TgeneParametersKey pk; -@Column(name="TEXTVALUE", nullable=true) - -/** -* Valor texto del parametro. -*/ -private String textvalue; - -@Column(name="NUMBERVALUE", nullable=true) - -/** -* Valor numero del parametro. -*/ -private BigDecimal numbervalue; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del parametro -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneParameters(){ -} -/**Contructor de TgeneParameters -@param pPk Clave Primaria del entity -*/ -public TgeneParameters(TgeneParametersKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneParameters -*/ -public static TgeneParameters find(EntityManager pEntityManager,TgeneParametersKey pKey) throws Exception{ - TgeneParameters obj = pEntityManager.find(TgeneParameters.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneParameters -@return El objeto que referencia a la Clave primaria de TgeneParameters -*/ -public TgeneParametersKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneParameters -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneParameters -*/ -public void setPk(TgeneParametersKey pPk){ - pk=pPk; -} -/**Obtiene el valor de textvalue -@return valor de textvalue*/ -public String getTextvalue(){ - return textvalue; -} -/**Fija el valor de textvalue -@param pTextvalue nuevo Valor de textvalue*/ -public void setTextvalue(String pTextvalue){ - textvalue=pTextvalue; -} - -/**Obtiene el valor de numbervalue -@return valor de numbervalue*/ -public BigDecimal getNumbervalue(){ - return numbervalue; -} -/**Fija el valor de numbervalue -@param pNumbervalue nuevo Valor de numbervalue*/ -public void setNumbervalue(BigDecimal pNumbervalue){ - numbervalue=pNumbervalue; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneParameters))return false; - TgeneParameters that = (TgeneParameters) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneParameters -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneParameters -*/ -public Object createInstance(){ - TgeneParameters instance=new TgeneParameters(); - instance.setPk(new TgeneParametersKey()); - return instance; -} -/**Clona la entidad TgeneParameters -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneParameters p=(TgeneParameters)this.clone(); - p.setPk((TgeneParametersKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.svn-base deleted file mode 100644 index 83c0024..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParameters.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPARAMETERS*/ -@Entity(name="TgeneParameters") -@Table(name="TGENEPARAMETERS") -public class TgeneParameters extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneParameters -*/ -@EmbeddedId -private TgeneParametersKey pk; -@Column(name="TEXTVALUE", nullable=true) - -/** -* Valor texto del parametro. -*/ -private String textvalue; - -@Column(name="NUMBERVALUE", nullable=true) - -/** -* Valor numero del parametro. -*/ -private BigDecimal numbervalue; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del parametro -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneParameters(){ -} -/**Contructor de TgeneParameters -@param pPk Clave Primaria del entity -*/ -public TgeneParameters(TgeneParametersKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneParameters -*/ -public static TgeneParameters find(EntityManager pEntityManager,TgeneParametersKey pKey) throws Exception{ - TgeneParameters obj = pEntityManager.find(TgeneParameters.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneParameters -@return El objeto que referencia a la Clave primaria de TgeneParameters -*/ -public TgeneParametersKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneParameters -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneParameters -*/ -public void setPk(TgeneParametersKey pPk){ - pk=pPk; -} -/**Obtiene el valor de textvalue -@return valor de textvalue*/ -public String getTextvalue(){ - return textvalue; -} -/**Fija el valor de textvalue -@param pTextvalue nuevo Valor de textvalue*/ -public void setTextvalue(String pTextvalue){ - textvalue=pTextvalue; -} - -/**Obtiene el valor de numbervalue -@return valor de numbervalue*/ -public BigDecimal getNumbervalue(){ - return numbervalue; -} -/**Fija el valor de numbervalue -@param pNumbervalue nuevo Valor de numbervalue*/ -public void setNumbervalue(BigDecimal pNumbervalue){ - numbervalue=pNumbervalue; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneParameters))return false; - TgeneParameters that = (TgeneParameters) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneParameters -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneParameters -*/ -public Object createInstance(){ - TgeneParameters instance=new TgeneParameters(); - instance.setPk(new TgeneParametersKey()); - return instance; -} -/**Clona la entidad TgeneParameters -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneParameters p=(TgeneParameters)this.clone(); - p.setPk((TgeneParametersKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParametersKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParametersKey.java.svn-base deleted file mode 100644 index 7b6dd2c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParametersKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPARAMETERS*/ -@Embeddable -public class TgeneParametersKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CODE", nullable=false,updatable=false) - -/** -* Codigo del parametro -*/ -private String code; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneParametersKey(){} -/**Contructor de TgeneParametersKey -@param pCode Codigo del parametro -@param pCompanycode Codigo de compania -*/ -public TgeneParametersKey(String pCode,Integer pCompanycode){ - code=pCode; - companycode=pCompanycode; -} -/**Obtiene el valor de code -@return valor de code*/ -public String getCode(){ - return code; -} -/**Fija el valor de code -@param pCode nuevo Valor de code*/ -public void setCode(String pCode){ - code=pCode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TgeneParametersKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneParametersKey))return false; - TgeneParametersKey that = (TgeneParametersKey) o; - if (this.getCode() == null || that.getCode() == null){ - return false; - } - if (! this.getCode().equals(that.getCode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneParametersKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCode() == null ? 0 : this.getCode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquia.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquia.java.svn-base deleted file mode 100644 index e72b910..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquia.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPARROQUIA*/ -@Entity(name="TgeneParroquia") -@Table(name="TGENEPARROQUIA") -public class TgeneParroquia extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneParroquia -*/ -@EmbeddedId -private TgeneParroquiaKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Nombre de la parroquia -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneParroquia(){ -} -/**Contructor de TgeneParroquia -@param pPk Clave Primaria del entity -*/ -public TgeneParroquia(TgeneParroquiaKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneParroquia -*/ -public static TgeneParroquia find(EntityManager pEntityManager,TgeneParroquiaKey pKey) throws Exception{ - TgeneParroquia obj = pEntityManager.find(TgeneParroquia.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneParroquia -@return El objeto que referencia a la Clave primaria de TgeneParroquia -*/ -public TgeneParroquiaKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneParroquia -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneParroquia -*/ -public void setPk(TgeneParroquiaKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneParroquia))return false; - TgeneParroquia that = (TgeneParroquia) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneParroquia -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneParroquia -*/ -public Object createInstance(){ - TgeneParroquia instance=new TgeneParroquia(); - instance.setPk(new TgeneParroquiaKey()); - return instance; -} -/**Clona la entidad TgeneParroquia -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneParroquia p=(TgeneParroquia)this.clone(); - p.setPk((TgeneParroquiaKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquiaKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquiaKey.java.svn-base deleted file mode 100644 index 1796ef5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneParroquiaKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPARROQUIA*/ -@Embeddable -public class TgeneParroquiaKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COUNTRYCODE", nullable=false,updatable=false) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=false,updatable=false) - -/** -* Codigo de provincia -*/ -private String provincecode; - -@Column(name="CANTONCODE", nullable=false,updatable=false) - -/** -* Codigo de canton -*/ -private String cantoncode; - -@Column(name="PARROQUIACODE", nullable=false,updatable=false) - -/** -* Codigo de parroquia -*/ -private String parroquiacode; - -/**Contructor por defecto*/ -public TgeneParroquiaKey(){} -/**Contructor de TgeneParroquiaKey -@param pCountrycode Codigo de pais -@param pProvincecode Codigo de provincia -@param pCantoncode Codigo de canton -@param pParroquiacode Codigo de parroquia -*/ -public TgeneParroquiaKey(String pCountrycode,String pProvincecode,String pCantoncode,String pParroquiacode){ - countrycode=pCountrycode; - provincecode=pProvincecode; - cantoncode=pCantoncode; - parroquiacode=pParroquiacode; -} -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Obtiene el valor de cantoncode -@return valor de cantoncode*/ -public String getCantoncode(){ - return cantoncode; -} -/**Fija el valor de cantoncode -@param pCantoncode nuevo Valor de cantoncode*/ -public void setCantoncode(String pCantoncode){ - cantoncode=pCantoncode; -} - -/**Obtiene el valor de parroquiacode -@return valor de parroquiacode*/ -public String getParroquiacode(){ - return parroquiacode; -} -/**Fija el valor de parroquiacode -@param pParroquiacode nuevo Valor de parroquiacode*/ -public void setParroquiacode(String pParroquiacode){ - parroquiacode=pParroquiacode; -} - -/**Implementacin de la comparacin de TgeneParroquiaKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneParroquiaKey))return false; - TgeneParroquiaKey that = (TgeneParroquiaKey) o; - if (this.getCountrycode() == null || that.getCountrycode() == null){ - return false; - } - if (! this.getCountrycode().equals(that.getCountrycode())){ - return false; - } - if (this.getProvincecode() == null || that.getProvincecode() == null){ - return false; - } - if (! this.getProvincecode().equals(that.getProvincecode())){ - return false; - } - if (this.getCantoncode() == null || that.getCantoncode() == null){ - return false; - } - if (! this.getCantoncode().equals(that.getCantoncode())){ - return false; - } - if (this.getParroquiacode() == null || that.getParroquiacode() == null){ - return false; - } - if (! this.getParroquiacode().equals(that.getParroquiacode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneParroquiaKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCountrycode() == null ? 0 : this.getCountrycode().hashCode()); - result = result * 37 + (this.getProvincecode() == null ? 0 : this.getProvincecode().hashCode()); - result = result * 37 + (this.getCantoncode() == null ? 0 : this.getCantoncode().hashCode()); - result = result * 37 + (this.getParroquiacode() == null ? 0 : this.getParroquiacode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvince.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvince.java.svn-base deleted file mode 100644 index 56028ed..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvince.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPROVINCE*/ -@Entity(name="TgeneProvince") -@Table(name="TGENEPROVINCE") -public class TgeneProvince extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneProvince -*/ -@EmbeddedId -private TgeneProvinceKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Nombre de la provincia -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneProvince(){ -} -/**Contructor de TgeneProvince -@param pPk Clave Primaria del entity -@param pDescription Nombre de la provincia -*/ -public TgeneProvince(TgeneProvinceKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneProvince -*/ -public static TgeneProvince find(EntityManager pEntityManager,TgeneProvinceKey pKey) throws Exception{ - TgeneProvince obj = pEntityManager.find(TgeneProvince.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneProvince -@return El objeto que referencia a la Clave primaria de TgeneProvince -*/ -public TgeneProvinceKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneProvince -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneProvince -*/ -public void setPk(TgeneProvinceKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneProvince))return false; - TgeneProvince that = (TgeneProvince) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneProvince -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneProvince -*/ -public Object createInstance(){ - TgeneProvince instance=new TgeneProvince(); - instance.setPk(new TgeneProvinceKey()); - return instance; -} -/**Clona la entidad TgeneProvince -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneProvince p=(TgeneProvince)this.clone(); - p.setPk((TgeneProvinceKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvinceKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvinceKey.java.svn-base deleted file mode 100644 index d7d1f91..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneProvinceKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPROVINCE*/ -@Embeddable -public class TgeneProvinceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COUNTRYCODE", nullable=false,updatable=false) - -/** -* Codigo de pais -*/ -private String countrycode; - -@Column(name="PROVINCECODE", nullable=false,updatable=false) - -/** -* Codigo de provincia -*/ -private String provincecode; - -/**Contructor por defecto*/ -public TgeneProvinceKey(){} -/**Contructor de TgeneProvinceKey -@param pCountrycode Codigo de pais -@param pProvincecode Codigo de provincia -*/ -public TgeneProvinceKey(String pCountrycode,String pProvincecode){ - countrycode=pCountrycode; - provincecode=pProvincecode; -} -/**Obtiene el valor de countrycode -@return valor de countrycode*/ -public String getCountrycode(){ - return countrycode; -} -/**Fija el valor de countrycode -@param pCountrycode nuevo Valor de countrycode*/ -public void setCountrycode(String pCountrycode){ - countrycode=pCountrycode; -} - -/**Obtiene el valor de provincecode -@return valor de provincecode*/ -public String getProvincecode(){ - return provincecode; -} -/**Fija el valor de provincecode -@param pProvincecode nuevo Valor de provincecode*/ -public void setProvincecode(String pProvincecode){ - provincecode=pProvincecode; -} - -/**Implementacin de la comparacin de TgeneProvinceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneProvinceKey))return false; - TgeneProvinceKey that = (TgeneProvinceKey) o; - if (this.getCountrycode() == null || that.getCountrycode() == null){ - return false; - } - if (! this.getCountrycode().equals(that.getCountrycode())){ - return false; - } - if (this.getProvincecode() == null || that.getProvincecode() == null){ - return false; - } - if (! this.getProvincecode().equals(that.getProvincecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneProvinceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCountrycode() == null ? 0 : this.getCountrycode().hashCode()); - result = result * 37 + (this.getProvincecode() == null ? 0 : this.getProvincecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcess.java.svn-base deleted file mode 100644 index 3777891..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcess.java.svn-base +++ /dev/null @@ -1,227 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEQUERYPROCESS*/ -@Entity(name="TgeneQueryProcess") -@Table(name="TGENEQUERYPROCESS") -public class TgeneQueryProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneQueryProcess -*/ -@EmbeddedId -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(SEQUENCE),0)+1 from TGENEQUERYPROCESS " - + "where QUERYCODE=:querycode "), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "querycode,pk.querycode"), - @Parameter(name = "field", value = "sequence") }) -@GeneratedValue(generator = "seq_id") -private TgeneQueryProcessKey pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Column(name="EXECUTIONORDER", nullable=true) - -/** -* orden de ejecucion de la regla de negocio. -*/ -private Integer executionorder; - -@Column(name="STATUS", nullable=true) - -/** -* A indica que la regla esta activa, I regla Inactiva -*/ -private String status; - -/**Contructor por defecto*/ -public TgeneQueryProcess(){ -} -/**Contructor de TgeneQueryProcess -@param pPk Clave Primaria del entity -*/ -public TgeneQueryProcess(TgeneQueryProcessKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneQueryProcess -*/ -public static TgeneQueryProcess find(EntityManager pEntityManager,TgeneQueryProcessKey pKey) throws Exception{ - TgeneQueryProcess obj = pEntityManager.find(TgeneQueryProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneQueryProcess -@return El objeto que referencia a la Clave primaria de TgeneQueryProcess -*/ -public TgeneQueryProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneQueryProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneQueryProcess -*/ -public void setPk(TgeneQueryProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de executionorder -@return valor de executionorder*/ -public Integer getExecutionorder(){ - return executionorder; -} -/**Fija el valor de executionorder -@param pExecutionorder nuevo Valor de executionorder*/ -public void setExecutionorder(Integer pExecutionorder){ - executionorder=pExecutionorder; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneQueryProcess))return false; - TgeneQueryProcess that = (TgeneQueryProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneQueryProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneQueryProcess -*/ -public Object createInstance(){ - TgeneQueryProcess instance=new TgeneQueryProcess(); - instance.setPk(new TgeneQueryProcessKey()); - return instance; -} -/**Clona la entidad TgeneQueryProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneQueryProcess p=(TgeneQueryProcess)this.clone(); - p.setPk((TgeneQueryProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcessKey.java.svn-base deleted file mode 100644 index 8f53cde..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneQueryProcessKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEQUERYPROCESS*/ -@Embeddable -public class TgeneQueryProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="QUERYCODE", nullable=false,updatable=false) - -/** -* Codigo de query que se encarga de completar datos de una consulta o lista de valores -*/ -private String querycode; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del comando -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneQueryProcessKey(){} -/**Contructor de TgeneQueryProcessKey -@param pQuerycode Codigo de query que se encarga de completar datos de una consulta o lista de valores -@param pSequence Secuencia del comando -*/ -public TgeneQueryProcessKey(String pQuerycode,Integer pSequence){ - querycode=pQuerycode; - sequence=pSequence; -} -/**Obtiene el valor de querycode -@return valor de querycode*/ -public String getQuerycode(){ - return querycode; -} -/**Fija el valor de querycode -@param pQuerycode nuevo Valor de querycode*/ -public void setQuerycode(String pQuerycode){ - querycode=pQuerycode; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneQueryProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneQueryProcessKey))return false; - TgeneQueryProcessKey that = (TgeneQueryProcessKey) o; - if (this.getQuerycode() == null || that.getQuerycode() == null){ - return false; - } - if (! this.getQuerycode().equals(that.getQuerycode())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneQueryProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getQuerycode() == null ? 0 : this.getQuerycode().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitude.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitude.java.svn-base deleted file mode 100644 index 13859e9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitude.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEREVOKESOLICITUDE*/ -@Entity(name="TgeneRevokeSolicitude") -@Table(name="TGENEREVOKESOLICITUDE") -public class TgeneRevokeSolicitude extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneRevokeSolicitude -*/ -@EmbeddedId -private TgeneRevokeSolicitudeKey pk; -@Column(name="ACCOUNT", nullable=true) - -/** -* Numero de cuenta asociado a la solicitud -*/ -private String account; - -@Column(name="REMARK", nullable=false) - -/** -* Motivo de anulacion de la solicitud -*/ -private String remark; - -@Column(name="WORKINGDATE", nullable=false) - -/** -* Fecha de trabajo de la aplicacion -*/ -private Date workingdate; - -/**Contructor por defecto*/ -public TgeneRevokeSolicitude(){ -} -/**Contructor de TgeneRevokeSolicitude -@param pPk Clave Primaria del entity -@param pRemark Motivo de anulacion de la solicitud -@param pWorkingdate Fecha de trabajo de la aplicacion -*/ -public TgeneRevokeSolicitude(TgeneRevokeSolicitudeKey pPk,String pRemark,Date pWorkingdate){ - this(); - pk=pPk; - remark=pRemark; - workingdate=pWorkingdate; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneRevokeSolicitude -*/ -public static TgeneRevokeSolicitude find(EntityManager pEntityManager,TgeneRevokeSolicitudeKey pKey) throws Exception{ - TgeneRevokeSolicitude obj = pEntityManager.find(TgeneRevokeSolicitude.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneRevokeSolicitude -@return El objeto que referencia a la Clave primaria de TgeneRevokeSolicitude -*/ -public TgeneRevokeSolicitudeKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneRevokeSolicitude -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneRevokeSolicitude -*/ -public void setPk(TgeneRevokeSolicitudeKey pPk){ - pk=pPk; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de remark -@return valor de remark*/ -public String getRemark(){ - return remark; -} -/**Fija el valor de remark -@param pRemark nuevo Valor de remark*/ -public void setRemark(String pRemark){ - remark=pRemark; -} - -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneRevokeSolicitude))return false; - TgeneRevokeSolicitude that = (TgeneRevokeSolicitude) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneRevokeSolicitude -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneRevokeSolicitude -*/ -public Object createInstance(){ - TgeneRevokeSolicitude instance=new TgeneRevokeSolicitude(); - instance.setPk(new TgeneRevokeSolicitudeKey()); - return instance; -} -/**Clona la entidad TgeneRevokeSolicitude -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneRevokeSolicitude p=(TgeneRevokeSolicitude)this.clone(); - p.setPk((TgeneRevokeSolicitudeKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitudeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitudeKey.java.svn-base deleted file mode 100644 index 65e6bbb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneRevokeSolicitudeKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEREVOKESOLICITUDE*/ -@Embeddable -public class TgeneRevokeSolicitudeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero unico de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -/**Contructor por defecto*/ -public TgeneRevokeSolicitudeKey(){} -/**Contructor de TgeneRevokeSolicitudeKey -@param pSolicitudnumber Numero unico de solicitud -@param pSolicitudsequence Secuencia interna de solicitud -*/ -public TgeneRevokeSolicitudeKey(String pSolicitudnumber,Integer pSolicitudsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Implementacion de la comparacion de TgeneRevokeSolicitudeKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneRevokeSolicitudeKey))return false; - TgeneRevokeSolicitudeKey that = (TgeneRevokeSolicitudeKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneRevokeSolicitudeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneServices.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneServices.java.svn-base deleted file mode 100644 index 1fce10b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneServices.java.svn-base +++ /dev/null @@ -1,250 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENESERVICES - */ -@Entity(name = "TgeneServices") -@Table(name = "TGENESERVICES") -public class TgeneServices extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneServices - */ - @Id - @Column(name = "SERVICECODE", nullable = false, updatable = false) - private String pk; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Nombre del servicio - */ - private String description; - - @Column(name = "CLASSNAME", nullable = true) - /** - * Clase que se encarga de iniciar o detener el servicio - */ - private String classname; - - @Column(name = "AUTOMATIC", nullable = true) - /** - * Y, Indica que el servicio se levanta al moemento de subir el servidor de aplicaciones - */ - private String automatic; - - /** Contructor por defecto */ - public TgeneServices() { - } - - /** - * Contructor de TgeneServices - * - * @param pPk - * Clave Primaria del entity - */ - public TgeneServices(String pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneServices - */ - public static TgeneServices find(EntityManager pEntityManager, Object pKey) - throws Exception { - TgeneServices obj = pEntityManager.find(TgeneServices.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneServices - * - * @return El objeto que referencia a la Clave primaria de TgeneServices - */ - public String getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneServices - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneServices - */ - public void setPk(String pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription - * nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de classname - * - * @return valor de classname - */ - public String getClassname() { - return classname; - } - - /** - * Fija el valor de classname - * - * @param pClassname - * nuevo Valor de classname - */ - public void setClassname(String pClassname) { - classname = pClassname; - } - - /** - * Obtiene el valor de automatic - * - * @return valor de automatic - */ - public String getAutomatic() { - return automatic; - } - - /** - * Fija el valor de automatic - * - * @param pAutomatic - * nuevo Valor de automatic - */ - public void setAutomatic(String pAutomatic) { - automatic = pAutomatic; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneServices)) - return false; - TgeneServices that = (TgeneServices) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneServices - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneServices */ - public Object createInstance() { - TgeneServices instance = new TgeneServices(); - return instance; - } - - /** - * Clona la entidad TgeneServices - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneServices p = (TgeneServices) this.clone(); - return p; - } - - //Metodos manuales - private static String JPQL = " from TgeneServices "; - - /** - * Metodo que entrega una lista de servicios a subir al servidor de aplicacion. - * @param pEntityManager - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(JPQL); - ldata = qry.getResultList(); - return ldata; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitude.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitude.java.svn-base deleted file mode 100644 index 2dba468..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitude.java.svn-base +++ /dev/null @@ -1,917 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDE - */ -@Entity(name = "TgeneSolicitude") -@Table(name = "TGENESOLICITUDE") -public class TgeneSolicitude extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSolicitude - */ - @EmbeddedId - private TgeneSolicitudeKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro de solicitud - */ - private Timestamp datefrom; - - @Column(name = "ACCOUNT", nullable = true) - /** - * Numero de cuenta asociado a la solicitud - */ - private String account; - - @Column(name = "COMPANY", nullable = false) - /** - * Codigo de compania a la que pertence la cuenta - */ - private Integer company; - - @Column(name = "CURRENCYCODE", nullable = false) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "ACCOUNTNAME", nullable = true) - /** - * Nombre de la cuenta - */ - private String accountname; - - @Column(name = "PERSONCODE", nullable = true) - /** - * Codigo de persona principal de la cuenta - */ - private Integer personcode; - - @Column(name = "MODULECODE", nullable = true) - /** - * Codigo de modulo al que pertenece la cuenta - */ - private String modulecode; - - @Column(name = "STATUSCODE", nullable = true) - /** - * Estatus de la solicitud - */ - private String statuscode; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina a la que pertenece la cuenta - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal a la que pertenece la cuenta - */ - private Integer branchcode; - - @Column(name = "OPENOFFICECODE", nullable = true) - /** - * Codigo de oficina de apertura de la cuenta - */ - private Integer openofficecode; - - @Column(name = "OPENBRANCHCODE", nullable = true) - /** - * Codigo de sucursal de apertura de la cuenta - */ - private Integer openbranchcode; - - @Column(name = "OPENINGUSERCODE", nullable = true) - /** - * Codigo de usuario de apertura de la cuenta - */ - private String openingusercode; - - @Column(name = "CHARGECATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String chargecatalog; - - @Column(name = "CHARGECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String chargecatalogcode; - - @Column(name = "RATECATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String ratecatalog; - - @Column(name = "RATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String ratecatalogcode; - - @Column(name = "CREDITTYPECODE", nullable = true) - /** - * Codigo de tipo de credito - */ - private String credittypecode; - - @Column(name = "PRODUCTCODE", nullable = true) - /** - * Codigo de producto - */ - private String productcode; - - @Column(name = "SUBPRODUCTCODE", nullable = true) - /** - * Codigo de subproducto - */ - private String subproductcode; - - @Column(name = "OFFICER", nullable = true) - /** - * Codigo de usuario oficial de cuenta - */ - private String officer; - - @Column(name = "SECURITYLEVEL", nullable = true) - /** - * Nivel de seguridad de la cuenta - */ - private Integer securitylevel; - - @Column(name = "JOURNALID", nullable = true) - /** - * Numero de mensaje con el que se modifico el registro vigente - */ - private String journalid; - - @Column(name = "OLDJOURNALID", nullable = true) - /** - * Numero de mensaje anterior - */ - private String oldjournalid; - - /** - * Contructor por defecto - */ - public TgeneSolicitude() { - } - - /** - * Contructor de TgeneSolicitude - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro de solicitud - * @param pCompany Codigo de compania a la que pertence la cuenta - * @param pCurrencycode Codigo de moneda - */ - public TgeneSolicitude(TgeneSolicitudeKey pPk, Timestamp pDatefrom, Integer pCompany, String pCurrencycode) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - this.company = pCompany; - this.currencycode = pCurrencycode; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSolicitude - */ - public static TgeneSolicitude find(EntityManager pEntityManager, TgeneSolicitudeKey pKey) throws Exception { - TgeneSolicitude obj = pEntityManager.find(TgeneSolicitude.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSolicitude - * - * @return El objeto que referencia a la Clave primaria de TgeneSolicitude - */ - public TgeneSolicitudeKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSolicitude - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitude - */ - public void setPk(TgeneSolicitudeKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de account - * - * @return valor de account - */ - public String getAccount() { - return this.account; - } - - /** - * Fija el valor de account - * - * @param pAccount nuevo Valor de account - */ - public void setAccount(String pAccount) { - this.account = pAccount; - } - - /** - * Obtiene el valor de company - * - * @return valor de company - */ - public Integer getCompany() { - return this.company; - } - - /** - * Fija el valor de company - * - * @param pCompany nuevo Valor de company - */ - public void setCompany(Integer pCompany) { - this.company = pCompany; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de accountname - * - * @return valor de accountname - */ - public String getAccountname() { - return this.accountname; - } - - /** - * Fija el valor de accountname - * - * @param pAccountname nuevo Valor de accountname - */ - public void setAccountname(String pAccountname) { - this.accountname = pAccountname; - } - - /** - * Obtiene el valor de personcode - * - * @return valor de personcode - */ - public Integer getPersoncode() { - return this.personcode; - } - - /** - * Fija el valor de personcode - * - * @param pPersoncode nuevo Valor de personcode - */ - public void setPersoncode(Integer pPersoncode) { - this.personcode = pPersoncode; - } - - /** - * Obtiene el valor de modulecode - * - * @return valor de modulecode - */ - public String getModulecode() { - return this.modulecode; - } - - /** - * Fija el valor de modulecode - * - * @param pModulecode nuevo Valor de modulecode - */ - public void setModulecode(String pModulecode) { - this.modulecode = pModulecode; - } - - /** - * Obtiene el valor de statuscode - * - * @return valor de statuscode - */ - public String getStatuscode() { - return this.statuscode; - } - - /** - * Fija el valor de statuscode - * - * @param pStatuscode nuevo Valor de statuscode - */ - public void setStatuscode(String pStatuscode) { - this.statuscode = pStatuscode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return this.officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - this.officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return this.branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - this.branchcode = pBranchcode; - } - - /** - * Obtiene el valor de openofficecode - * - * @return valor de openofficecode - */ - public Integer getOpenofficecode() { - return this.openofficecode; - } - - /** - * Fija el valor de openofficecode - * - * @param pOpenofficecode nuevo Valor de openofficecode - */ - public void setOpenofficecode(Integer pOpenofficecode) { - this.openofficecode = pOpenofficecode; - } - - /** - * Obtiene el valor de openbranchcode - * - * @return valor de openbranchcode - */ - public Integer getOpenbranchcode() { - return this.openbranchcode; - } - - /** - * Fija el valor de openbranchcode - * - * @param pOpenbranchcode nuevo Valor de openbranchcode - */ - public void setOpenbranchcode(Integer pOpenbranchcode) { - this.openbranchcode = pOpenbranchcode; - } - - /** - * Obtiene el valor de openingusercode - * - * @return valor de openingusercode - */ - public String getOpeningusercode() { - return this.openingusercode; - } - - /** - * Fija el valor de openingusercode - * - * @param pOpeningusercode nuevo Valor de openingusercode - */ - public void setOpeningusercode(String pOpeningusercode) { - this.openingusercode = pOpeningusercode; - } - - /** - * Obtiene el valor de chargecatalog - * - * @return valor de chargecatalog - */ - public String getChargecatalog() { - return this.chargecatalog; - } - - /** - * Fija el valor de chargecatalog - * - * @param pChargecatalog nuevo Valor de chargecatalog - */ - public void setChargecatalog(String pChargecatalog) { - this.chargecatalog = pChargecatalog; - } - - /** - * Obtiene el valor de chargecatalogcode - * - * @return valor de chargecatalogcode - */ - public String getChargecatalogcode() { - return this.chargecatalogcode; - } - - /** - * Fija el valor de chargecatalogcode - * - * @param pChargecatalogcode nuevo Valor de chargecatalogcode - */ - public void setChargecatalogcode(String pChargecatalogcode) { - this.chargecatalogcode = pChargecatalogcode; - } - - /** - * Obtiene el valor de ratecatalog - * - * @return valor de ratecatalog - */ - public String getRatecatalog() { - return this.ratecatalog; - } - - /** - * Fija el valor de ratecatalog - * - * @param pRatecatalog nuevo Valor de ratecatalog - */ - public void setRatecatalog(String pRatecatalog) { - this.ratecatalog = pRatecatalog; - } - - /** - * Obtiene el valor de ratecatalogcode - * - * @return valor de ratecatalogcode - */ - public String getRatecatalogcode() { - return this.ratecatalogcode; - } - - /** - * Fija el valor de ratecatalogcode - * - * @param pRatecatalogcode nuevo Valor de ratecatalogcode - */ - public void setRatecatalogcode(String pRatecatalogcode) { - this.ratecatalogcode = pRatecatalogcode; - } - - /** - * Obtiene el valor de credittypecode - * - * @return valor de credittypecode - */ - public String getCredittypecode() { - return this.credittypecode; - } - - /** - * Fija el valor de credittypecode - * - * @param pCredittypecode nuevo Valor de credittypecode - */ - public void setCredittypecode(String pCredittypecode) { - this.credittypecode = pCredittypecode; - } - - /** - * Obtiene el valor de productcode - * - * @return valor de productcode - */ - public String getProductcode() { - return this.productcode; - } - - /** - * Fija el valor de productcode - * - * @param pProductcode nuevo Valor de productcode - */ - public void setProductcode(String pProductcode) { - this.productcode = pProductcode; - } - - /** - * Obtiene el valor de subproductcode - * - * @return valor de subproductcode - */ - public String getSubproductcode() { - return this.subproductcode; - } - - /** - * Fija el valor de subproductcode - * - * @param pSubproductcode nuevo Valor de subproductcode - */ - public void setSubproductcode(String pSubproductcode) { - this.subproductcode = pSubproductcode; - } - - /** - * Obtiene el valor de officer - * - * @return valor de officer - */ - public String getOfficer() { - return this.officer; - } - - /** - * Fija el valor de officer - * - * @param pOfficer nuevo Valor de officer - */ - public void setOfficer(String pOfficer) { - this.officer = pOfficer; - } - - /** - * Obtiene el valor de securitylevel - * - * @return valor de securitylevel - */ - public Integer getSecuritylevel() { - return this.securitylevel; - } - - /** - * Fija el valor de securitylevel - * - * @param pSecuritylevel nuevo Valor de securitylevel - */ - public void setSecuritylevel(Integer pSecuritylevel) { - this.securitylevel = pSecuritylevel; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - /** - * Obtiene el valor de oldjournalid - * - * @return valor de oldjournalid - */ - public String getOldjournalid() { - return this.oldjournalid; - } - - /** - * Fija el valor de oldjournalid - * - * @param pOldjournalid nuevo Valor de oldjournalid - */ - public void setOldjournalid(String pOldjournalid) { - this.oldjournalid = pOldjournalid; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSolicitude)) { - return false; - } - TgeneSolicitude that = (TgeneSolicitude) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneSolicitude - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacion toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacion de la creacion de un bean en blanco TgeneSolicitude - */ - @Override - public Object createInstance() { - TgeneSolicitude instance = new TgeneSolicitude(); - instance.setPk(new TgeneSolicitudeKey()); - return instance; - } - - /** - * Clona la entidad TgeneSolicitude - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSolicitude p = (TgeneSolicitude) this.clone(); - p.setPk((TgeneSolicitudeKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // METODOS MANUALES - /** - * Sentencia SQL que obtiene un objeto de tipo TgeneSolicitude - */ - private static final String JPQL_SOLICITUDE = "from TgeneSolicitude tgs" + " where tgs.pk.solicitudnumber = :solicitudnumber" - + " and tgs.pk.solicitudsequence = :solicitudsequence" + " and tgs.pk.dateto = :dateto"; - - /** - * Metodo que devuelve un objeto de tipo TgeneSolicitude - * - * @param solicitudnumber - * @param solicitudsequence - * @return - * @throws Exception - */ - public static TgeneSolicitude find(EntityManager pEntityManager, String solicitudnumber, Integer solicitudsequence) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE); - qry.setParameter("solicitudnumber", solicitudnumber); - qry.setParameter("solicitudsequence", solicitudsequence); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - try { - return (TgeneSolicitude) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - /** - * Sentencia SQL que obtiene un objeto de tipo TgeneSolicitude por codigo modulo - */ - private static final String JPQL_SOLICITUDE_WITHOUT_DISB_BY_ACCOUNT = "from TgeneSolicitude sol where (coalesce(sol.account, 'null') = 'null'" - + " or sol.account in(select acc.pk.account from TgeneAccount acc where acc.accountstatuscode!='VIG' and acc.pk.dateto = :dateto ))" - + "and sol.statuscode in('ENT', 'APR') and sol.modulecode = :modulecode and sol.account = :account and sol.pk.dateto = :dateto"; - - /** - * Metodo que devuelve una lista de TgeneSolicitude nuevas y que no tengan cuentas con estado VIG por codigo de - * cuenta - * - * @param pEntityManager - * @param moduleCode - * @param accountNumber - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findWithoutDisbursementByAccount(EntityManager pEntityManager, String moduleCode, String accountNumber, - Integer page, Integer recordperpage) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE_WITHOUT_DISB_BY_ACCOUNT); - qry.setParameter("modulecode", moduleCode); - qry.setParameter("account", accountNumber); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - if ((page != null) && (recordperpage != null) && (page >= 0) && (recordperpage > 0)) { - if (page > 1) { - qry.setFirstResult((page - 1) * recordperpage); - } - qry.setMaxResults(recordperpage); - } - return qry.getResultList(); - } - - /** - * Sentencia SQL que obtiene un objeto de tipo TgeneSolicitude por codigo de persona - */ - private static final String JPQL_SOLICITUDE_WITHOUT_DISB_BY_PERSON = "from TgeneSolicitude sol where (coalesce(sol.account, 'null') = 'null'" - + " or sol.account in(select acc.pk.account from TgeneAccount acc where acc.accountstatuscode!='VIG' and acc.pk.dateto = :dateto ))" - + "and sol.statuscode in('ENT', 'APR') and sol.modulecode = :modulecode and sol.personcode = :personcode and sol.pk.dateto = :dateto"; - - /** - * Metodo que devuelve una lista de TgeneSolicitude nuevas y que no tengan cuentas con estado VIG por codigo de - * persona - * - * @param pEntityManager - * @param moduleCode - * @param personCode - * @return - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findWithoutDisbursementByPerson(EntityManager pEntityManager, String moduleCode, Integer personCode, - Integer page, Integer recordperpage) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE_WITHOUT_DISB_BY_PERSON); - qry.setParameter("modulecode", moduleCode); - qry.setParameter("personcode", personCode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - if ((page != null) && (recordperpage != null) && (page >= 0) && (recordperpage > 0)) { - if (page > 1) { - qry.setFirstResult((page - 1) * recordperpage); - } - qry.setMaxResults(recordperpage); - } - return qry.getResultList(); - } - - /** - * Sentencia SQL que consulta retorna la solicitud dada una cuenta y estatus - */ - private static final String JPQL_SOLICITUDE_BY_ACCOUNT_AND_STATUS = "from TgeneSolicitude sol " + " where sol.account = :account " - + " and sol.company = :company " + " and sol.statuscode = :statuscode and sol.pk.dateto = :dateto"; - - /** - * Sentencia SQL que consulta retorna la solicitud dada una cuenta - */ - private static final String JPQL_SOLICITUDE_BY_ACCOUNT = "from TgeneSolicitude sol " + " where sol.account = :account " - + " and sol.company = :company " + " and sol.pk.dateto = :dateto"; - - /** - * Metodo que devuelve una solicitud por medio de la cuenta que ha creado y el estado de la solicitud - * - * @param pEntityManager - * @param paccount - * @param pcompany - * @param status - * @return - * @throws Exception - */ - public static TgeneSolicitude findByAccountAndStatus(EntityManager pEntityManager, String paccount, Integer pcompany, String status) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE_BY_ACCOUNT_AND_STATUS); - qry.setParameter("account", paccount); - qry.setParameter("company", pcompany); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("statuscode", status); - qry.setMaxResults(1); - if (qry.getResultList().isEmpty()) { - return null; - } - return (TgeneSolicitude) qry.getResultList().get(0); - } - - /** - * Metodo que devuelve una solicitud por medio de la cuenta que ha creado - * - * @param pEntityManager - * @param paccount - * @param pcompany - * @return - * @throws Exception - */ - public static TgeneSolicitude findByAccount(EntityManager pEntityManager, String paccount, Integer pcompany) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE_BY_ACCOUNT); - qry.setParameter("account", paccount); - qry.setParameter("company", pcompany); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setMaxResults(1); - return (TgeneSolicitude) qry.getResultList().get(0); - } - - private static final String JPQL_SOLICITUDE_APPDATE = " select min(datefrom) from TgeneSolicitude sol " - + " where sol.pk.solicitudnumber = :solicitudnumber" + " and sol.company = :company "; - - public static Date findApplicationDate(EntityManager pEntityManager, String solicitudnumber, Integer company) { - Query qry = pEntityManager.createQuery(TgeneSolicitude.JPQL_SOLICITUDE_APPDATE); - qry.setParameter("solicitudnumber", solicitudnumber); - qry.setParameter("company", company); - Timestamp obj = (Timestamp) qry.getSingleResult(); - return new Date(obj.getTime()); - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpening.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpening.java.svn-base deleted file mode 100644 index 4e1c68a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpening.java.svn-base +++ /dev/null @@ -1,332 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDECREDITOPENING*/ -@Entity(name="TgeneSolicitudeCreditOpening") -@Table(name="TGENESOLICITUDECREDITOPENING") -public class TgeneSolicitudeCreditOpening extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeCreditOpening -*/ -@EmbeddedId -private TgeneSolicitudeCreditOpeningKey pk; -@Column(name="CURRENCYCODE", nullable=true) - -/** -* Codigo de moneda en la que esta expresado el valor a aplicar dependiendo al forma de debito -*/ -private String currencycode; - -@Column(name="CASH", nullable=true) - -/** -* Indica que el valor se entrega en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el valor se entrega en cheques. -*/ -private String checks; - -@Column(name="CREDIT", nullable=true) - -/** -* Indica que el valor se entrega con credito a uan cuenta o credito a un codigo contable. -*/ -private String credit; - -@Column(name="CREDITACCOUNT", nullable=true) - -/** -* Numero de cuenta a la vista a realizar el credito, si la moneda de la cuenta es diferente a la moneda en la cual esta expresado el valor se tiene que hacer la compra venta de divisas -*/ -private String creditaccount; - -@Column(name="CREDITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a relaizar el credito. -*/ -private String creditaccountingcode; - -@Column(name="VALUE", nullable=true) - -/** -* Valor en la moneda de la solicitud, la compra venta se hace en funcion a la moneda de la cuenta credito -*/ -private BigDecimal value; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona a emitir el cheque -*/ -private Integer personcode; - -@Column(name="IDBENEFICIARY", nullable=true) - -/** -* Si no esta registrado como cliente, identificacion del beneficiario del cheque -*/ -private String idbeneficiary; - -@Column(name="BENEFICIARYNAME", nullable=true) - -/** -* Nombre del beneficiario del cheque. -*/ -private String beneficiaryname; - -/**Contructor por defecto*/ -public TgeneSolicitudeCreditOpening(){ -} -/**Contructor de TgeneSolicitudeCreditOpening -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeCreditOpening(TgeneSolicitudeCreditOpeningKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeCreditOpening -*/ -public static TgeneSolicitudeCreditOpening find(EntityManager pEntityManager,TgeneSolicitudeCreditOpeningKey pKey) throws Exception{ - TgeneSolicitudeCreditOpening obj = pEntityManager.find(TgeneSolicitudeCreditOpening.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeCreditOpening -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeCreditOpening -*/ -public TgeneSolicitudeCreditOpeningKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeCreditOpening -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeCreditOpening -*/ -public void setPk(TgeneSolicitudeCreditOpeningKey pPk){ - pk=pPk; -} -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de credit -@return valor de credit*/ -public String getCredit(){ - return credit; -} -/**Fija el valor de credit -@param pCredit nuevo Valor de credit*/ -public void setCredit(String pCredit){ - credit=pCredit; -} - -/**Obtiene el valor de creditaccount -@return valor de creditaccount*/ -public String getCreditaccount(){ - return creditaccount; -} -/**Fija el valor de creditaccount -@param pCreditaccount nuevo Valor de creditaccount*/ -public void setCreditaccount(String pCreditaccount){ - creditaccount=pCreditaccount; -} - -/**Obtiene el valor de creditaccountingcode -@return valor de creditaccountingcode*/ -public String getCreditaccountingcode(){ - return creditaccountingcode; -} -/**Fija el valor de creditaccountingcode -@param pCreditaccountingcode nuevo Valor de creditaccountingcode*/ -public void setCreditaccountingcode(String pCreditaccountingcode){ - creditaccountingcode=pCreditaccountingcode; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de idbeneficiary -@return valor de idbeneficiary*/ -public String getIdbeneficiary(){ - return idbeneficiary; -} -/**Fija el valor de idbeneficiary -@param pIdbeneficiary nuevo Valor de idbeneficiary*/ -public void setIdbeneficiary(String pIdbeneficiary){ - idbeneficiary=pIdbeneficiary; -} - -/**Obtiene el valor de beneficiaryname -@return valor de beneficiaryname*/ -public String getBeneficiaryname(){ - return beneficiaryname; -} -/**Fija el valor de beneficiaryname -@param pBeneficiaryname nuevo Valor de beneficiaryname*/ -public void setBeneficiaryname(String pBeneficiaryname){ - beneficiaryname=pBeneficiaryname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeCreditOpening))return false; - TgeneSolicitudeCreditOpening that = (TgeneSolicitudeCreditOpening) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeCreditOpening -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeCreditOpening -*/ -public Object createInstance(){ - TgeneSolicitudeCreditOpening instance=new TgeneSolicitudeCreditOpening(); - instance.setPk(new TgeneSolicitudeCreditOpeningKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeCreditOpening -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeCreditOpening p=(TgeneSolicitudeCreditOpening)this.clone(); - p.setPk((TgeneSolicitudeCreditOpeningKey)this.pk.cloneMe()); - return p; -} - //Metodos manuales. - /**Sentencia que devuelve uan lista con los valores a entregar al cliente asociados a una solicitud.*/ - private static final String HQL_SOLICITUDE_CREDIT = - " from TgeneSolicitudeCreditOpening t " + - " where t.pk.solicitudnumber = :solicitudnumber "+ - " and t.pk.solicitudsequence = :solicitudsequence "+ - " order by t.pk.creditsequence "; - - /** - * Metodo que entrega una lista de valores a entregar al cliente, en la aperturad e una operacion. - * @param pSolicitudNumber Numero de solicitud. - * @param pSolicitudSequence Secuencia dentro de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager, - String pSolicitudNumber,Integer pSolicitudSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_CREDIT); - qry.setParameter("solicitudnumber", pSolicitudNumber); - qry.setParameter("solicitudsequence", pSolicitudSequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpeningKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpeningKey.java.svn-base deleted file mode 100644 index e5d1c1b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeCreditOpeningKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDECREDITOPENING*/ -@Embeddable -public class TgeneSolicitudeCreditOpeningKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="CREDITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de debito, utilizada para formar el pk y permitir ingresar varias opciones de credito. -*/ -private Integer creditsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeCreditOpeningKey(){} -/**Contructor de TgeneSolicitudeCreditOpeningKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pCreditsequence Secuencia de debito, utilizada para formar el pk y permitir ingresar varias opciones de credito. -*/ -public TgeneSolicitudeCreditOpeningKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pCreditsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - creditsequence=pCreditsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de creditsequence -@return valor de creditsequence*/ -public Integer getCreditsequence(){ - return creditsequence; -} -/**Fija el valor de creditsequence -@param pCreditsequence nuevo Valor de creditsequence*/ -public void setCreditsequence(Integer pCreditsequence){ - creditsequence=pCreditsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeCreditOpeningKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeCreditOpeningKey))return false; - TgeneSolicitudeCreditOpeningKey that = (TgeneSolicitudeCreditOpeningKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getCreditsequence() == null || that.getCreditsequence() == null){ - return false; - } - if (! this.getCreditsequence().equals(that.getCreditsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeCreditOpeningKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getCreditsequence() == null ? 0 : this.getCreditsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpening.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpening.java.svn-base deleted file mode 100644 index a70f66f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpening.java.svn-base +++ /dev/null @@ -1,297 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEDEBITOPENING*/ -@Entity(name="TgeneSolicitudeDebitOpening") -@Table(name="TGENESOLICITUDEDEBITOPENING") -public class TgeneSolicitudeDebitOpening extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeDebitOpening -*/ -@EmbeddedId -private TgeneSolicitudeDebitOpeningKey pk; -@Column(name="CURRENCYCODE", nullable=true) - -/** -* Codigo de moneda en la que esta expresado el valor a aplicar dependiendo al forma de debito -*/ -private String currencycode; - -@Column(name="CASH", nullable=true) - -/** -* Indica que el valor se cobra en efectivo. -*/ -private String cash; - -@Column(name="CHECKS", nullable=true) - -/** -* Indica que el valor se cobra en cheques. -*/ -private String checks; - -@Column(name="DEBIT", nullable=true) - -/** -* Indica que el valor se cobra con debito a uan cuenta o debito a un codigo contable. -*/ -private String debit; - -@Column(name="DEBITACCOUNT", nullable=true) - -/** -* Numero de cuenta a la vista a debitar, si la moneda de la cuenta es diferente a la moneda en la cual esta expresado el valor se tiene que hacer la compra venta de divisas -*/ -private String debitaccount; - -@Column(name="ACCOUNTMODULE", nullable=true) - -/** -* Codigo de modulo al que pertenece la cuenta -*/ -private String accountmodule; - -@Column(name="DEBITACCOUNTINGCODE", nullable=true) - -/** -* Codigo contable a relaizar el debito de la cuenta. -*/ -private String debitaccountingcode; - -@Column(name="VALUE", nullable=true) - -/** -* Valor en la moneda de la solicitud, la compra venta se hace en funcion a la moneda de la cuenta debito -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneSolicitudeDebitOpening(){ -} -/**Contructor de TgeneSolicitudeDebitOpening -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeDebitOpening(TgeneSolicitudeDebitOpeningKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeDebitOpening -*/ -public static TgeneSolicitudeDebitOpening find(EntityManager pEntityManager,TgeneSolicitudeDebitOpeningKey pKey) throws Exception{ - TgeneSolicitudeDebitOpening obj = pEntityManager.find(TgeneSolicitudeDebitOpening.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeDebitOpening -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeDebitOpening -*/ -public TgeneSolicitudeDebitOpeningKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeDebitOpening -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeDebitOpening -*/ -public void setPk(TgeneSolicitudeDebitOpeningKey pPk){ - pk=pPk; -} -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de checks -@return valor de checks*/ -public String getChecks(){ - return checks; -} -/**Fija el valor de checks -@param pChecks nuevo Valor de checks*/ -public void setChecks(String pChecks){ - checks=pChecks; -} - -/**Obtiene el valor de debit -@return valor de debit*/ -public String getDebit(){ - return debit; -} -/**Fija el valor de debit -@param pDebit nuevo Valor de debit*/ -public void setDebit(String pDebit){ - debit=pDebit; -} - -/**Obtiene el valor de debitaccount -@return valor de debitaccount*/ -public String getDebitaccount(){ - return debitaccount; -} -/**Fija el valor de debitaccount -@param pDebitaccount nuevo Valor de debitaccount*/ -public void setDebitaccount(String pDebitaccount){ - debitaccount=pDebitaccount; -} - -/**Obtiene el valor de accountmodule -@return valor de accountmodule*/ -public String getAccountmodule(){ - return accountmodule; -} -/**Fija el valor de accountmodule -@param pAccountmodule nuevo Valor de accountmodule*/ -public void setAccountmodule(String pAccountmodule){ - accountmodule=pAccountmodule; -} - -/**Obtiene el valor de debitaccountingcode -@return valor de debitaccountingcode*/ -public String getDebitaccountingcode(){ - return debitaccountingcode; -} -/**Fija el valor de debitaccountingcode -@param pDebitaccountingcode nuevo Valor de debitaccountingcode*/ -public void setDebitaccountingcode(String pDebitaccountingcode){ - debitaccountingcode=pDebitaccountingcode; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeDebitOpening))return false; - TgeneSolicitudeDebitOpening that = (TgeneSolicitudeDebitOpening) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeDebitOpening -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeDebitOpening -*/ -public Object createInstance(){ - TgeneSolicitudeDebitOpening instance=new TgeneSolicitudeDebitOpening(); - instance.setPk(new TgeneSolicitudeDebitOpeningKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeDebitOpening -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeDebitOpening p=(TgeneSolicitudeDebitOpening)this.clone(); - p.setPk((TgeneSolicitudeDebitOpeningKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales - /**Sentencia que devuelve uan lista con los valores de cargos asociados a una solicitud.*/ - private static final String HQL_SOLICITUDE_DEBIT = - "from TgeneSolicitudeDebitOpening tsdo " + - " where tsdo.pk.solicitudnumber = :solicitudnumber "+ - " and tsdo.pk.solicitudsequence = :solicitudsequence "+ - " order by tsdo.pk.debitsequence "; - - /** - * Metodo que entrega una lista de valores a cobrar al cliente, en la aperturad e una operacion. - * @param pSolicitudNumber Numero de solicitud. - * @param pSolicitudSequence Secuencia dentro de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pSolicitudNumber, - Integer pSolicitudSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_DEBIT); - qry.setParameter("solicitudnumber", pSolicitudNumber); - qry.setParameter("solicitudsequence", pSolicitudSequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpeningKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpeningKey.java.svn-base deleted file mode 100644 index ebf28ad..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeDebitOpeningKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEDEBITOPENING*/ -@Embeddable -public class TgeneSolicitudeDebitOpeningKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="DEBITSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de debito, utilizada para formar el pk y permitir ingresar varias opciones de debito. -*/ -private Integer debitsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeDebitOpeningKey(){} -/**Contructor de TgeneSolicitudeDebitOpeningKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pDebitsequence Secuencia de debito, utilizada para formar el pk y permitir ingresar varias opciones de debito. -*/ -public TgeneSolicitudeDebitOpeningKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pDebitsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - debitsequence=pDebitsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de debitsequence -@return valor de debitsequence*/ -public Integer getDebitsequence(){ - return debitsequence; -} -/**Fija el valor de debitsequence -@param pDebitsequence nuevo Valor de debitsequence*/ -public void setDebitsequence(Integer pDebitsequence){ - debitsequence=pDebitsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeDebitOpeningKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeDebitOpeningKey))return false; - TgeneSolicitudeDebitOpeningKey that = (TgeneSolicitudeDebitOpeningKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getDebitsequence() == null || that.getDebitsequence() == null){ - return false; - } - if (! this.getDebitsequence().equals(that.getDebitsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeDebitOpeningKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getDebitsequence() == null ? 0 : this.getDebitsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallCharges.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallCharges.java.svn-base deleted file mode 100644 index b046cc9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallCharges.java.svn-base +++ /dev/null @@ -1,242 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEINSTALLCHARGES*/ -@Entity(name="TgeneSolicitudeInstallCharges") -@Table(name="TGENESOLICITUDEINSTALLCHARGES") -public class TgeneSolicitudeInstallCharges extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeInstallCharges -*/ -@EmbeddedId -private TgeneSolicitudeInstallChargesKey pk; -@Column(name="BASEAMOUNTBALANCETYPE", nullable=true) - -/** -* Tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancetype; - -@Column(name="BASEAMOUNTBALANCEGROUP", nullable=true) - -/** -* Grupo de balance del tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancegroup; - -@Column(name="CALCULATEORDER", nullable=true) - -/** -* Orden de calculo de los cargos. -*/ -private Integer calculateorder; - -@Column(name="NEGOTIABLE", nullable=true) - -/** -* Indica si la tasa se puede negociar con el cliente el valor y las condiciones del cargo -*/ -private String negotiable; - -@Column(name="VALUE", nullable=true) - -/** -* Valor del cargo en la moneda de la operacion -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneSolicitudeInstallCharges(){ -} -/**Contructor de TgeneSolicitudeInstallCharges -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeInstallCharges(TgeneSolicitudeInstallChargesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeInstallCharges -*/ -public static TgeneSolicitudeInstallCharges find(EntityManager pEntityManager,TgeneSolicitudeInstallChargesKey pKey) throws Exception{ - TgeneSolicitudeInstallCharges obj = pEntityManager.find(TgeneSolicitudeInstallCharges.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeInstallCharges -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeInstallCharges -*/ -public TgeneSolicitudeInstallChargesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeInstallCharges -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeInstallCharges -*/ -public void setPk(TgeneSolicitudeInstallChargesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de baseamountbalancetype -@return valor de baseamountbalancetype*/ -public String getBaseamountbalancetype(){ - return baseamountbalancetype; -} -/**Fija el valor de baseamountbalancetype -@param pBaseamountbalancetype nuevo Valor de baseamountbalancetype*/ -public void setBaseamountbalancetype(String pBaseamountbalancetype){ - baseamountbalancetype=pBaseamountbalancetype; -} - -/**Obtiene el valor de baseamountbalancegroup -@return valor de baseamountbalancegroup*/ -public String getBaseamountbalancegroup(){ - return baseamountbalancegroup; -} -/**Fija el valor de baseamountbalancegroup -@param pBaseamountbalancegroup nuevo Valor de baseamountbalancegroup*/ -public void setBaseamountbalancegroup(String pBaseamountbalancegroup){ - baseamountbalancegroup=pBaseamountbalancegroup; -} - -/**Obtiene el valor de calculateorder -@return valor de calculateorder*/ -public Integer getCalculateorder(){ - return calculateorder; -} -/**Fija el valor de calculateorder -@param pCalculateorder nuevo Valor de calculateorder*/ -public void setCalculateorder(Integer pCalculateorder){ - calculateorder=pCalculateorder; -} - -/**Obtiene el valor de negotiable -@return valor de negotiable*/ -public String getNegotiable(){ - return negotiable; -} -/**Fija el valor de negotiable -@param pNegotiable nuevo Valor de negotiable*/ -public void setNegotiable(String pNegotiable){ - negotiable=pNegotiable; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeInstallCharges))return false; - TgeneSolicitudeInstallCharges that = (TgeneSolicitudeInstallCharges) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeInstallCharges -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeInstallCharges -*/ -public Object createInstance(){ - TgeneSolicitudeInstallCharges instance=new TgeneSolicitudeInstallCharges(); - instance.setPk(new TgeneSolicitudeInstallChargesKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeInstallCharges -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeInstallCharges p=(TgeneSolicitudeInstallCharges)this.clone(); - p.setPk((TgeneSolicitudeInstallChargesKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve la definicion de cargos a adicionar a la tabla de amortizacion.*/ - private static final String HQL_SOLICITUDE_INSTALLMENT_CHARGES = - "from TgeneSolicitudeInstallCharges t " - + " where t.pk.solicitudnumber = :solicitudnumber " - + " and t.pk.solicitudsequence = :solicitudsequence "; - - /** - * Metodo que entrega una lista con los cargos a adicionar a la tabla de amortizacion para una solicitud. - * @param pSolicitudeNumber Numero de solicitud. - * @param pSolicitudeSequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pSolicitudeNumber, - Integer pSolicitudeSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_INSTALLMENT_CHARGES); - qry.setParameter("solicitudnumber", pSolicitudeNumber); - qry.setParameter("solicitudsequence", pSolicitudeSequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallChargesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallChargesKey.java.svn-base deleted file mode 100644 index f524d43..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallChargesKey.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEINSTALLCHARGES*/ -@Embeddable -public class TgeneSolicitudeInstallChargesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneSolicitudeInstallChargesKey(){} -/**Contructor de TgeneSolicitudeInstallChargesKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCurrencycode Codigo de moneda de la cuenta -*/ -public TgeneSolicitudeInstallChargesKey(String pSolicitudnumber,Integer pSolicitudsequence,String pBalancetype,String pBalancegroup,String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,String pCurrencycode){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - balancetype=pBalancetype; - balancegroup=pBalancegroup; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneSolicitudeInstallChargesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeInstallChargesKey))return false; - TgeneSolicitudeInstallChargesKey that = (TgeneSolicitudeInstallChargesKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeInstallChargesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRates.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRates.java.svn-base deleted file mode 100644 index 8d64682..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRates.java.svn-base +++ /dev/null @@ -1,641 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDEINSTALLRATES */ -@Entity(name = "TgeneSolicitudeInstallRates") -@Table(name = "TGENESOLICITUDEINSTALLRATES") -public class TgeneSolicitudeInstallRates extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSolicitudeInstallRates - */ - @EmbeddedId - private TgeneSolicitudeInstallRatesKey pk; - - @Column(name = "BASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base, BCE tasa banco central - */ - private String baseratecatalog; - - @Column(name = "BASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String baseratecatalogcode; - - @Column(name = "PRINCIPALBALANCETYPE", nullable = true) - /** - * Cdigo de tipo de capital sobre el cual se aplica una tasa y se calcula un valor a provisionar - */ - private String principalbalancetype; - - @Column(name = "PRINCIPALBALANCEGROUP", nullable = true) - /** - * Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor - */ - private String principalbalancegroup; - - @Column(name = "NEGOTIABLE", nullable = true) - /** - * Indica si la tasa se puede negociar con el cliente - */ - private String negotiable; - - @Column(name = "BASERATE", nullable = true) - /** - * Tasa base - */ - private BigDecimal baserate; - - @Column(name = "MARGIN", nullable = true) - /** - * Margen a aplicar dado el operador - */ - private BigDecimal margin; - - @Column(name = "OPERATOR", nullable = true) - /** - * Operador a aplicar sobre la tasa base, +, - , % - */ - private String operator; - - @Column(name = "RATE", nullable = true) - /** - * Tasa total con la cual se calcula provisiones y tabla de pagos - */ - private BigDecimal rate; - - @Column(name = "READJUSTMENTOPERATOR", nullable = true) - /** - * Operador que se utilizara el momento del reajuste - */ - private String readjustmentoperator; - - @Column(name = "READJUSTMENTMARGIN", nullable = true) - /** - * Margen a aplicar en el reajuste - */ - private BigDecimal readjustmentmargin; - - @Column(name = "EFFECTIVERATE", nullable = true) - /** - * Tasa Efectiva - */ - private BigDecimal effectiverate; - - @Column(name = "ISNOMINALRATE", nullable = true) - /** - * Y, Indica que la defincion de la tasa base es efectiva, en este caso se calcula la tasa nominal, N la tasa base es nominal en este caso se calcula la tasa efectiva. - */ - private String isnominalrate; - - @Column(name = "READJUSTBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base de reajuste, BCE tasa banco central - */ - private String readjustbaseratecatalog; - - @Column(name = "READJUSTBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String readjustbaseratecatalogcode; - - @Column(name = "MAXBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base maxima, BCE tasa banco central - */ - private String maxbaseratecatalog; - - @Column(name = "MAXBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String maxbaseratecatalogcode; - - @Column(name = "MINRATE", nullable = true) - /** - * Minimo permitido en la negociacion del prestamo - */ - private BigDecimal minrate; - - @Column(name = "MAXRATE", nullable = true) - /** - * Maximo permitido en la negociacion del prestamo - */ - private BigDecimal maxrate; - - /** Contructor por defecto */ - public TgeneSolicitudeInstallRates() { - } - - /** - * Contructor de TgeneSolicitudeInstallRates - * - * @param pPk Clave Primaria del entity - */ - public TgeneSolicitudeInstallRates(TgeneSolicitudeInstallRatesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSolicitudeInstallRates - */ - public static TgeneSolicitudeInstallRates find(EntityManager pEntityManager, TgeneSolicitudeInstallRatesKey pKey) throws Exception { - TgeneSolicitudeInstallRates obj = pEntityManager.find(TgeneSolicitudeInstallRates.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSolicitudeInstallRates - * - * @return El objeto que referencia a la Clave primaria de TgeneSolicitudeInstallRates - */ - public TgeneSolicitudeInstallRatesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSolicitudeInstallRates - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeInstallRates - */ - public void setPk(TgeneSolicitudeInstallRatesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de baseratecatalog - * - * @return valor de baseratecatalog - */ - public String getBaseratecatalog() { - return this.baseratecatalog; - } - - /** - * Fija el valor de baseratecatalog - * - * @param pBaseratecatalog nuevo Valor de baseratecatalog - */ - public void setBaseratecatalog(String pBaseratecatalog) { - this.baseratecatalog = pBaseratecatalog; - } - - /** - * Obtiene el valor de baseratecatalogcode - * - * @return valor de baseratecatalogcode - */ - public String getBaseratecatalogcode() { - return this.baseratecatalogcode; - } - - /** - * Fija el valor de baseratecatalogcode - * - * @param pBaseratecatalogcode nuevo Valor de baseratecatalogcode - */ - public void setBaseratecatalogcode(String pBaseratecatalogcode) { - this.baseratecatalogcode = pBaseratecatalogcode; - } - - /** - * Obtiene el valor de principalbalancetype - * - * @return valor de principalbalancetype - */ - public String getPrincipalbalancetype() { - return this.principalbalancetype; - } - - /** - * Fija el valor de principalbalancetype - * - * @param pPrincipalbalancetype nuevo Valor de principalbalancetype - */ - public void setPrincipalbalancetype(String pPrincipalbalancetype) { - this.principalbalancetype = pPrincipalbalancetype; - } - - /** - * Obtiene el valor de principalbalancegroup - * - * @return valor de principalbalancegroup - */ - public String getPrincipalbalancegroup() { - return this.principalbalancegroup; - } - - /** - * Fija el valor de principalbalancegroup - * - * @param pPrincipalbalancegroup nuevo Valor de principalbalancegroup - */ - public void setPrincipalbalancegroup(String pPrincipalbalancegroup) { - this.principalbalancegroup = pPrincipalbalancegroup; - } - - /** - * Obtiene el valor de negotiable - * - * @return valor de negotiable - */ - public String getNegotiable() { - return this.negotiable; - } - - /** - * Fija el valor de negotiable - * - * @param pNegotiable nuevo Valor de negotiable - */ - public void setNegotiable(String pNegotiable) { - this.negotiable = pNegotiable; - } - - /** - * Obtiene el valor de baserate - * - * @return valor de baserate - */ - public BigDecimal getBaserate() { - return this.baserate; - } - - /** - * Fija el valor de baserate - * - * @param pBaserate nuevo Valor de baserate - */ - public void setBaserate(BigDecimal pBaserate) { - this.baserate = pBaserate; - } - - /** - * Obtiene el valor de margin - * - * @return valor de margin - */ - public BigDecimal getMargin() { - return this.margin; - } - - /** - * Fija el valor de margin - * - * @param pMargin nuevo Valor de margin - */ - public void setMargin(BigDecimal pMargin) { - this.margin = pMargin; - } - - /** - * Obtiene el valor de operator - * - * @return valor de operator - */ - public String getOperator() { - return this.operator; - } - - /** - * Fija el valor de operator - * - * @param pOperator nuevo Valor de operator - */ - public void setOperator(String pOperator) { - this.operator = pOperator; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de readjustmentoperator - * - * @return valor de readjustmentoperator - */ - public String getReadjustmentoperator() { - return this.readjustmentoperator; - } - - /** - * Fija el valor de readjustmentoperator - * - * @param pReadjustmentoperator nuevo Valor de readjustmentoperator - */ - public void setReadjustmentoperator(String pReadjustmentoperator) { - this.readjustmentoperator = pReadjustmentoperator; - } - - /** - * Obtiene el valor de readjustmentmargin - * - * @return valor de readjustmentmargin - */ - public BigDecimal getReadjustmentmargin() { - return this.readjustmentmargin; - } - - /** - * Fija el valor de readjustmentmargin - * - * @param pReadjustmentmargin nuevo Valor de readjustmentmargin - */ - public void setReadjustmentmargin(BigDecimal pReadjustmentmargin) { - this.readjustmentmargin = pReadjustmentmargin; - } - - /** - * Obtiene el valor de effectiverate - * - * @return valor de effectiverate - */ - public BigDecimal getEffectiverate() { - return this.effectiverate; - } - - /** - * Fija el valor de effectiverate - * - * @param pEffectiverate nuevo Valor de effectiverate - */ - public void setEffectiverate(BigDecimal pEffectiverate) { - this.effectiverate = pEffectiverate; - } - - /** - * Obtiene el valor de isnominalrate - * - * @return valor de isnominalrate - */ - public String getIsnominalrate() { - return this.isnominalrate; - } - - /** - * Fija el valor de isnominalrate - * - * @param pIsnominalrate nuevo Valor de isnominalrate - */ - public void setIsnominalrate(String pIsnominalrate) { - this.isnominalrate = pIsnominalrate; - } - - /** - * Obtiene el valor de readjustbaseratecatalog - * - * @return valor de readjustbaseratecatalog - */ - public String getReadjustbaseratecatalog() { - return this.readjustbaseratecatalog; - } - - /** - * Fija el valor de readjustbaseratecatalog - * - * @param pReadjustbaseratecatalog nuevo Valor de readjustbaseratecatalog - */ - public void setReadjustbaseratecatalog(String pReadjustbaseratecatalog) { - this.readjustbaseratecatalog = pReadjustbaseratecatalog; - } - - /** - * Obtiene el valor de readjustbaseratecatalogcode - * - * @return valor de readjustbaseratecatalogcode - */ - public String getReadjustbaseratecatalogcode() { - return this.readjustbaseratecatalogcode; - } - - /** - * Fija el valor de readjustbaseratecatalogcode - * - * @param pReadjustbaseratecatalogcode nuevo Valor de readjustbaseratecatalogcode - */ - public void setReadjustbaseratecatalogcode(String pReadjustbaseratecatalogcode) { - this.readjustbaseratecatalogcode = pReadjustbaseratecatalogcode; - } - - /** - * Obtiene el valor de maxbaseratecatalog - * - * @return valor de maxbaseratecatalog - */ - public String getMaxbaseratecatalog() { - return this.maxbaseratecatalog; - } - - /** - * Fija el valor de maxbaseratecatalog - * - * @param pMaxbaseratecatalog nuevo Valor de maxbaseratecatalog - */ - public void setMaxbaseratecatalog(String pMaxbaseratecatalog) { - this.maxbaseratecatalog = pMaxbaseratecatalog; - } - - /** - * Obtiene el valor de maxbaseratecatalogcode - * - * @return valor de maxbaseratecatalogcode - */ - public String getMaxbaseratecatalogcode() { - return this.maxbaseratecatalogcode; - } - - /** - * Fija el valor de maxbaseratecatalogcode - * - * @param pMaxbaseratecatalogcode nuevo Valor de maxbaseratecatalogcode - */ - public void setMaxbaseratecatalogcode(String pMaxbaseratecatalogcode) { - this.maxbaseratecatalogcode = pMaxbaseratecatalogcode; - } - - /** - * Obtiene el valor de minrate - * - * @return valor de minrate - */ - public BigDecimal getMinrate() { - return this.minrate; - } - - /** - * Fija el valor de minrate - * - * @param pMinrate nuevo Valor de minrate - */ - public void setMinrate(BigDecimal pMinrate) { - this.minrate = pMinrate; - } - - /** - * Obtiene el valor de maxrate - * - * @return valor de maxrate - */ - public BigDecimal getMaxrate() { - return this.maxrate; - } - - /** - * Fija el valor de maxrate - * - * @param pMaxrate nuevo Valor de maxrate - */ - public void setMaxrate(BigDecimal pMaxrate) { - this.maxrate = pMaxrate; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSolicitudeInstallRates)) { - return false; - } - TgeneSolicitudeInstallRates that = (TgeneSolicitudeInstallRates) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneSolicitudeInstallRates - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneSolicitudeInstallRates */ - @Override - public Object createInstance() { - TgeneSolicitudeInstallRates instance = new TgeneSolicitudeInstallRates(); - instance.setPk(new TgeneSolicitudeInstallRatesKey()); - return instance; - } - - /** - * Clona la entidad TgeneSolicitudeInstallRates - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSolicitudeInstallRates p = (TgeneSolicitudeInstallRates) this.clone(); - p.setPk((TgeneSolicitudeInstallRatesKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - /** Sentencia que devuelve la definicion de valores a provisionar asociados de una solicitud. */ - private static final String HQL_SOLICITUDE_INSTALLMENT_RATES = "from TgeneSolicitudeInstallRates tsolinstrate " - + " where tsolinstrate.pk.solicitudnumber = :solicitudnumber " + " and tsolinstrate.pk.solicitudsequence = :solicitudsequence "; - - /** - * Metodo que entrega una lista con los tipos de saldos a calcular tabla de amortizacion para una solicitud. - * - * @param pSolicitudeNumber Numero de solicitud. - * @param pSolicitudeSequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pSolicitudeNumber, Integer pSolicitudeSequence) - throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TgeneSolicitudeInstallRates.HQL_SOLICITUDE_INSTALLMENT_RATES); - qry.setParameter("solicitudnumber", pSolicitudeNumber); - qry.setParameter("solicitudsequence", pSolicitudeSequence); - lObjects = qry.getResultList(); - return lObjects; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRatesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRatesKey.java.svn-base deleted file mode 100644 index 67f6dfc..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeInstallRatesKey.java.svn-base +++ /dev/null @@ -1,286 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDEINSTALLRATES*/ -@Embeddable -public class TgeneSolicitudeInstallRatesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Codigo de tipo de saldo que provisiona en la tabla de cuotas. -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String interestbalancegroup; - -/**Contructor por defecto*/ -public TgeneSolicitudeInstallRatesKey(){} -/**Contructor de TgeneSolicitudeInstallRatesKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -@param pInterestbalancetype Codigo de tipo de saldo que provisiona en la tabla de cuotas. -@param pInterestbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneSolicitudeInstallRatesKey(String pSolicitudnumber,Integer pSolicitudsequence,String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode,String pInterestbalancetype,String pInterestbalancegroup){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; - interestbalancetype=pInterestbalancetype; - interestbalancegroup=pInterestbalancegroup; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Implementacion de la comparacion de TgeneSolicitudeInstallRatesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeInstallRatesKey))return false; - TgeneSolicitudeInstallRatesKey that = (TgeneSolicitudeInstallRatesKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneSolicitudeInstallRatesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeKey.java.svn-base deleted file mode 100644 index 5e6ba12..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDE*/ -@Embeddable -public class TgeneSolicitudeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro de solicitud -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneSolicitudeKey(){} -/**Contructor de TgeneSolicitudeKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pDateto Fecha hasta la cual esta vigente el registro de solicitud -*/ -public TgeneSolicitudeKey(String pSolicitudnumber,Integer pSolicitudsequence,Timestamp pDateto){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - dateto=pDateto; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TgeneSolicitudeKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeKey))return false; - TgeneSolicitudeKey that = (TgeneSolicitudeKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneSolicitudeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidation.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidation.java.svn-base deleted file mode 100644 index 0577441..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidation.java.svn-base +++ /dev/null @@ -1,333 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDELIQUIDATION*/ -@Entity(name="TgeneSolicitudeLiquidation") -@Table(name="TGENESOLICITUDELIQUIDATION") -public class TgeneSolicitudeLiquidation extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeLiquidation -*/ -@EmbeddedId -private TgeneSolicitudeLiquidationKey pk; -@Column(name="BASEAMOUNTBALANCETYPE", nullable=true) - -/** -* Tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancetype; - -@Column(name="BASEAMOUNTBALANCEGROUP", nullable=true) - -/** -* Grupo de balance del tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancegroup; - -@Column(name="CALCULATEORDER", nullable=true) - -/** -* CALCULATEORDER -*/ -private Integer calculateorder; - -@Column(name="NEGOTIABLE", nullable=true) - -/** -* Indica si la tasa se puede negociar con el cliente el valor y las condiciones del cargo -*/ -private String negotiable; - -@Column(name="INCREASE", nullable=true) - -/** -* Indica que incrementa el valor de capital con el cual se genera la tabla de pagos -*/ -private String increase; - -@Column(name="DECREASE", nullable=true) - -/** -* Indica que disminuye el valor de capital con el cual se genera la tabla de pagos -*/ -private String decrease; - -@Column(name="DECREASEDISBURSEMENT", nullable=true) - -/** -* Indica que el valor del cargo se descuenta del monto a entregar al cliente -*/ -private String decreasedisbursement; - -@Column(name="CASH", nullable=true) - -/** -* Indica que el valor se cobra en efectivo. -*/ -private String cash; - -@Column(name="DEBITACCOUNT", nullable=true) - -/** -* Indica que el valor se cobra con debito a una cuneta, esta puede ser cuenta contable o cuenta a la vista -*/ -private String debitaccount; - -@Column(name="VALUE", nullable=true) - -/** -* Valor del cargo en la moneda de la operacion -*/ -private BigDecimal value; - -/**Contructor por defecto*/ -public TgeneSolicitudeLiquidation(){ -} -/**Contructor de TgeneSolicitudeLiquidation -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeLiquidation(TgeneSolicitudeLiquidationKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeLiquidation -*/ -public static TgeneSolicitudeLiquidation find(EntityManager pEntityManager,TgeneSolicitudeLiquidationKey pKey) throws Exception{ - TgeneSolicitudeLiquidation obj = pEntityManager.find(TgeneSolicitudeLiquidation.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeLiquidation -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeLiquidation -*/ -public TgeneSolicitudeLiquidationKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeLiquidation -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeLiquidation -*/ -public void setPk(TgeneSolicitudeLiquidationKey pPk){ - pk=pPk; -} -/**Obtiene el valor de baseamountbalancetype -@return valor de baseamountbalancetype*/ -public String getBaseamountbalancetype(){ - return baseamountbalancetype; -} -/**Fija el valor de baseamountbalancetype -@param pBaseamountbalancetype nuevo Valor de baseamountbalancetype*/ -public void setBaseamountbalancetype(String pBaseamountbalancetype){ - baseamountbalancetype=pBaseamountbalancetype; -} - -/**Obtiene el valor de baseamountbalancegroup -@return valor de baseamountbalancegroup*/ -public String getBaseamountbalancegroup(){ - return baseamountbalancegroup; -} -/**Fija el valor de baseamountbalancegroup -@param pBaseamountbalancegroup nuevo Valor de baseamountbalancegroup*/ -public void setBaseamountbalancegroup(String pBaseamountbalancegroup){ - baseamountbalancegroup=pBaseamountbalancegroup; -} - -/**Obtiene el valor de calculateorder -@return valor de calculateorder*/ -public Integer getCalculateorder(){ - return calculateorder; -} -/**Fija el valor de calculateorder -@param pCalculateorder nuevo Valor de calculateorder*/ -public void setCalculateorder(Integer pCalculateorder){ - calculateorder=pCalculateorder; -} - -/**Obtiene el valor de negotiable -@return valor de negotiable*/ -public String getNegotiable(){ - return negotiable; -} -/**Fija el valor de negotiable -@param pNegotiable nuevo Valor de negotiable*/ -public void setNegotiable(String pNegotiable){ - negotiable=pNegotiable; -} - -/**Obtiene el valor de increase -@return valor de increase*/ -public String getIncrease(){ - return increase; -} -/**Fija el valor de increase -@param pIncrease nuevo Valor de increase*/ -public void setIncrease(String pIncrease){ - increase=pIncrease; -} - -/**Obtiene el valor de decrease -@return valor de decrease*/ -public String getDecrease(){ - return decrease; -} -/**Fija el valor de decrease -@param pDecrease nuevo Valor de decrease*/ -public void setDecrease(String pDecrease){ - decrease=pDecrease; -} - -/**Obtiene el valor de decreasedisbursement -@return valor de decreasedisbursement*/ -public String getDecreasedisbursement(){ - return decreasedisbursement; -} -/**Fija el valor de decreasedisbursement -@param pDecreasedisbursement nuevo Valor de decreasedisbursement*/ -public void setDecreasedisbursement(String pDecreasedisbursement){ - decreasedisbursement=pDecreasedisbursement; -} - -/**Obtiene el valor de cash -@return valor de cash*/ -public String getCash(){ - return cash; -} -/**Fija el valor de cash -@param pCash nuevo Valor de cash*/ -public void setCash(String pCash){ - cash=pCash; -} - -/**Obtiene el valor de debitaccount -@return valor de debitaccount*/ -public String getDebitaccount(){ - return debitaccount; -} -/**Fija el valor de debitaccount -@param pDebitaccount nuevo Valor de debitaccount*/ -public void setDebitaccount(String pDebitaccount){ - debitaccount=pDebitaccount; -} - -/**Obtiene el valor de value -@return valor de value*/ -public BigDecimal getValue(){ - return value; -} -/**Fija el valor de value -@param pValue nuevo Valor de value*/ -public void setValue(BigDecimal pValue){ - value=pValue; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeLiquidation))return false; - TgeneSolicitudeLiquidation that = (TgeneSolicitudeLiquidation) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeLiquidation -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeLiquidation -*/ -public Object createInstance(){ - TgeneSolicitudeLiquidation instance=new TgeneSolicitudeLiquidation(); - instance.setPk(new TgeneSolicitudeLiquidationKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeLiquidation -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeLiquidation p=(TgeneSolicitudeLiquidation)this.clone(); - p.setPk((TgeneSolicitudeLiquidationKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve uan lista con los valores a entregar al cliente asociados a una solicitud.*/ - private static final String HQL_SOLICITUDE_LIQUIDATION = - " from TgeneSolicitudeLiquidation t " + - " where t.pk.solicitudnumber = :solicitudnumber "+ - " and t.pk.solicitudsequence = :solicitudsequence "; - - /** - * Metodo que entrega una lista con los cargos de liquidacion de una solicitud. - * @param pSolicitudNumber Numero de solicitud. - * @param pSolicitudSequence Secuencia dentro de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - String pSolicitudNumber,Integer pSolicitudSequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_SOLICITUDE_LIQUIDATION); - qry.setParameter("solicitudnumber", pSolicitudNumber); - qry.setParameter("solicitudsequence", pSolicitudSequence); - lObjects = qry.getResultList(); - return lObjects; - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidationKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidationKey.java.svn-base deleted file mode 100644 index f3adb5c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeLiquidationKey.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDELIQUIDATION*/ -@Embeddable -public class TgeneSolicitudeLiquidationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneSolicitudeLiquidationKey(){} -/**Contructor de TgeneSolicitudeLiquidationKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCurrencycode Codigo de moneda -@param pBalancetype Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneSolicitudeLiquidationKey(String pSolicitudnumber,Integer pSolicitudsequence,String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,String pCurrencycode,String pBalancetype,String pBalancegroup){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - currencycode=pCurrencycode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneSolicitudeLiquidationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeLiquidationKey))return false; - TgeneSolicitudeLiquidationKey that = (TgeneSolicitudeLiquidationKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeLiquidationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumber.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumber.java.svn-base deleted file mode 100644 index 124a09c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumber.java.svn-base +++ /dev/null @@ -1,121 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDENUMBER*/ -@Entity(name="TgeneSolicitudeNumber") -@Table(name="TGENESOLICITUDENUMBER") -public class TgeneSolicitudeNumber extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeNumber -*/ -@EmbeddedId -private TgeneSolicitudeNumberKey pk; -/**Contructor por defecto*/ -public TgeneSolicitudeNumber(){ -} -/**Contructor de TgeneSolicitudeNumber -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeNumber(TgeneSolicitudeNumberKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeNumber -*/ -public static TgeneSolicitudeNumber find(EntityManager pEntityManager,TgeneSolicitudeNumberKey pKey) throws Exception{ - TgeneSolicitudeNumber obj = pEntityManager.find(TgeneSolicitudeNumber.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeNumber -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeNumber -*/ -public TgeneSolicitudeNumberKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeNumber -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeNumber -*/ -public void setPk(TgeneSolicitudeNumberKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeNumber))return false; - TgeneSolicitudeNumber that = (TgeneSolicitudeNumber) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeNumber -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeNumber -*/ -public Object createInstance(){ - TgeneSolicitudeNumber instance=new TgeneSolicitudeNumber(); - instance.setPk(new TgeneSolicitudeNumberKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeNumber -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeNumber p=(TgeneSolicitudeNumber)this.clone(); - p.setPk((TgeneSolicitudeNumberKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumberKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumberKey.java.svn-base deleted file mode 100644 index c2f0197..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeNumberKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDENUMBER*/ -@Embeddable -public class TgeneSolicitudeNumberKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -/**Contructor por defecto*/ -public TgeneSolicitudeNumberKey(){} -/**Contructor de TgeneSolicitudeNumberKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -*/ -public TgeneSolicitudeNumberKey(String pSolicitudnumber,Integer pSolicitudsequence){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Implementacin de la comparacin de TgeneSolicitudeNumberKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeNumberKey))return false; - TgeneSolicitudeNumberKey that = (TgeneSolicitudeNumberKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeNumberKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationship.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationship.java.svn-base deleted file mode 100644 index dea174d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationship.java.svn-base +++ /dev/null @@ -1,294 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import java.math.BigDecimal; -import java.util.List; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.exception.CommondbException; - -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDERELATIONSHIP*/ -@Entity(name="TgeneSolicitudeRelationship") -@Table(name="TGENESOLICITUDERELATIONSHIP") -public class TgeneSolicitudeRelationship extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeRelationship -*/ -@EmbeddedId -private TgeneSolicitudeRelationshipKey pk; -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="RELATIONSHIPCODE", nullable=true) - -/** -* Codigo de relacion de la cuenta con el cliente -*/ -private String relationshipcode; - -@Column(name="ISPRINCIPAL", nullable=true) - -/** -* Indica si el codigo de relacion es principal, en este caso el codigo de cliente se asocia a la tabla tgeneaccount -*/ -private String isprincipal; - -@Column(name="PRIORITY", nullable=true) - -/** -* Prioridad del cleinte con la solicitud. -*/ -private Integer priority; - -@Column(name="CONDITION", nullable=true) - -/** -* Codicion del cliente con la solicitud. -*/ -private String condition; - -@Column(name="PARTICIPATION", nullable=true) - -/** -* Porcentaje de participacion del cliente con la solicitud. -*/ -private BigDecimal participation; - -@Column(name="ADDRESSNUMBER", nullable=true) - -/** -* Direccion asociada -*/ -private Integer addressnumber; - -@Column(name="PERSONTYPE", nullable=true) - -/** -* 1, Persona natural, 2 Persona Juridica. -*/ -private String persontype; - -/**Contructor por defecto*/ -public TgeneSolicitudeRelationship(){ -} -/**Contructor de TgeneSolicitudeRelationship -@param pPk Clave Primaria del entity -*/ -public TgeneSolicitudeRelationship(TgeneSolicitudeRelationshipKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeRelationship -*/ -public static TgeneSolicitudeRelationship find(EntityManager pEntityManager,TgeneSolicitudeRelationshipKey pKey) throws Exception{ - TgeneSolicitudeRelationship obj = pEntityManager.find(TgeneSolicitudeRelationship.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeRelationship -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeRelationship -*/ -public TgeneSolicitudeRelationshipKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeRelationship -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeRelationship -*/ -public void setPk(TgeneSolicitudeRelationshipKey pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de relationshipcode -@return valor de relationshipcode*/ -public String getRelationshipcode(){ - return relationshipcode; -} -/**Fija el valor de relationshipcode -@param pRelationshipcode nuevo Valor de relationshipcode*/ -public void setRelationshipcode(String pRelationshipcode){ - relationshipcode=pRelationshipcode; -} - -/**Obtiene el valor de isprincipal -@return valor de isprincipal*/ -public String getIsprincipal(){ - return isprincipal; -} -/**Fija el valor de isprincipal -@param pIsprincipal nuevo Valor de isprincipal*/ -public void setIsprincipal(String pIsprincipal){ - isprincipal=pIsprincipal; -} - -/**Obtiene el valor de priority -@return valor de priority*/ -public Integer getPriority(){ - return priority; -} -/**Fija el valor de priority -@param pPriority nuevo Valor de priority*/ -public void setPriority(Integer pPriority){ - priority=pPriority; -} - -/**Obtiene el valor de condition -@return valor de condition*/ -public String getCondition(){ - return condition; -} -/**Fija el valor de condition -@param pCondition nuevo Valor de condition*/ -public void setCondition(String pCondition){ - condition=pCondition; -} - -/**Obtiene el valor de participation -@return valor de participation*/ -public BigDecimal getParticipation(){ - return participation; -} -/**Fija el valor de participation -@param pParticipation nuevo Valor de participation*/ -public void setParticipation(BigDecimal pParticipation){ - participation=pParticipation; -} - -/**Obtiene el valor de addressnumber -@return valor de addressnumber*/ -public Integer getAddressnumber(){ - return addressnumber; -} -/**Fija el valor de addressnumber -@param pAddressnumber nuevo Valor de addressnumber*/ -public void setAddressnumber(Integer pAddressnumber){ - addressnumber=pAddressnumber; -} - -/**Obtiene el valor de persontype -@return valor de persontype*/ -public String getPersontype(){ - return persontype; -} -/**Fija el valor de persontype -@param pPersontype nuevo Valor de persontype*/ -public void setPersontype(String pPersontype){ - persontype=pPersontype; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeRelationship))return false; - TgeneSolicitudeRelationship that = (TgeneSolicitudeRelationship) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeRelationship -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeRelationship -*/ -public Object createInstance(){ - TgeneSolicitudeRelationship instance=new TgeneSolicitudeRelationship(); - instance.setPk(new TgeneSolicitudeRelationshipKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeRelationship -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeRelationship p=(TgeneSolicitudeRelationship)this.clone(); - p.setPk((TgeneSolicitudeRelationshipKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve las excepciones de una solicitud. */ - private static final String JPQL_SOL_RELATIONSHIP = "from TgeneSolicitudeRelationship solrel " - + " where solrel.pk.solicitudnumber = :solicitudnumber " + " and solrel.pk.solicitudsequence = :solicitudsequence "; - /** - * Entrega una lista de clientes relacionados a la solicitud. - * - * @param pSolicitudenumber Numero de solicitud. - * @param pSolicitudesequence Secuencia interna de la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findBySolicitudeNumber(EntityManager pEntityManager, String pSolicitudenumber, Integer pSolicitudesequence) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TgeneSolicitudeRelationship.JPQL_SOL_RELATIONSHIP); - qry.setParameter("solicitudnumber", pSolicitudenumber); - qry.setParameter("solicitudsequence", pSolicitudesequence); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationshipKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationshipKey.java.svn-base deleted file mode 100644 index 2079f42..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeRelationshipKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDERELATIONSHIP*/ -@Embeddable -public class TgeneSolicitudeRelationshipKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SOLICITUDNUMBER", nullable=false,updatable=false) - -/** -* Numero de solicitud -*/ -private String solicitudnumber; - -@Column(name="SOLICITUDSEQUENCE", nullable=false,updatable=false) - -/** -* secuencia interna de solicitud -*/ -private Integer solicitudsequence; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona -*/ -private Integer personcode; - -/**Contructor por defecto*/ -public TgeneSolicitudeRelationshipKey(){} -/**Contructor de TgeneSolicitudeRelationshipKey -@param pSolicitudnumber Numero de solicitud -@param pSolicitudsequence secuencia interna de solicitud -@param pPersoncode Codigo de persona -*/ -public TgeneSolicitudeRelationshipKey(String pSolicitudnumber,Integer pSolicitudsequence,Integer pPersoncode){ - solicitudnumber=pSolicitudnumber; - solicitudsequence=pSolicitudsequence; - personcode=pPersoncode; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -/**Obtiene el valor de solicitudsequence -@return valor de solicitudsequence*/ -public Integer getSolicitudsequence(){ - return solicitudsequence; -} -/**Fija el valor de solicitudsequence -@param pSolicitudsequence nuevo Valor de solicitudsequence*/ -public void setSolicitudsequence(Integer pSolicitudsequence){ - solicitudsequence=pSolicitudsequence; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Implementacin de la comparacin de TgeneSolicitudeRelationshipKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeRelationshipKey))return false; - TgeneSolicitudeRelationshipKey that = (TgeneSolicitudeRelationshipKey) o; - if (this.getSolicitudnumber() == null || that.getSolicitudnumber() == null){ - return false; - } - if (! this.getSolicitudnumber().equals(that.getSolicitudnumber())){ - return false; - } - if (this.getSolicitudsequence() == null || that.getSolicitudsequence() == null){ - return false; - } - if (! this.getSolicitudsequence().equals(that.getSolicitudsequence())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeRelationshipKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getSolicitudnumber() == null ? 0 : this.getSolicitudnumber().hashCode()); - result = result * 37 + (this.getSolicitudsequence() == null ? 0 : this.getSolicitudsequence().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatus.java.svn-base deleted file mode 100644 index d0ee7d4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatus.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESOLICITUDESTATUS*/ -@Entity(name="TgeneSolicitudeStatus") -@Table(name="TGENESOLICITUDESTATUS") -public class TgeneSolicitudeStatus extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSolicitudeStatus -*/ -@EmbeddedId -private TgeneSolicitudeStatusKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del estatus de la solicitud -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneSolicitudeStatus(){ -} -/**Contructor de TgeneSolicitudeStatus -@param pPk Clave Primaria del entity -@param pDescription Descripcion del estatus de la solicitud -*/ -public TgeneSolicitudeStatus(TgeneSolicitudeStatusKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSolicitudeStatus -*/ -public static TgeneSolicitudeStatus find(EntityManager pEntityManager,TgeneSolicitudeStatusKey pKey) throws Exception{ - TgeneSolicitudeStatus obj = pEntityManager.find(TgeneSolicitudeStatus.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSolicitudeStatus -@return El objeto que referencia a la Clave primaria de TgeneSolicitudeStatus -*/ -public TgeneSolicitudeStatusKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSolicitudeStatus -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSolicitudeStatus -*/ -public void setPk(TgeneSolicitudeStatusKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSolicitudeStatus))return false; - TgeneSolicitudeStatus that = (TgeneSolicitudeStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSolicitudeStatus -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSolicitudeStatus -*/ -public Object createInstance(){ - TgeneSolicitudeStatus instance=new TgeneSolicitudeStatus(); - instance.setPk(new TgeneSolicitudeStatusKey()); - return instance; -} -/**Clona la entidad TgeneSolicitudeStatus -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSolicitudeStatus p=(TgeneSolicitudeStatus)this.clone(); - p.setPk((TgeneSolicitudeStatusKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatusKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatusKey.java.svn-base deleted file mode 100644 index 5876792..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneSolicitudeStatusKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESOLICITUDESTATUS*/ -@Embeddable -public class TgeneSolicitudeStatusKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de la solicitud -*/ -private String statuscode; - -/**Contructor por defecto*/ -public TgeneSolicitudeStatusKey(){} -/**Contructor de TgeneSolicitudeStatusKey -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de la solicitud -*/ -public TgeneSolicitudeStatusKey(String pModulecode,String pStatuscode){ - modulecode=pModulecode; - statuscode=pStatuscode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Implementacin de la comparacin de TgeneSolicitudeStatusKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSolicitudeStatusKey))return false; - TgeneSolicitudeStatusKey that = (TgeneSolicitudeStatusKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSolicitudeStatusKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimony.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimony.java.svn-base deleted file mode 100644 index 5aef101..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimony.java.svn-base +++ /dev/null @@ -1,182 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETECHNICALPATRIMONY*/ -@Entity(name="TgeneTechnicalPatrimony") -@Table(name="TGENETECHNICALPATRIMONY") -public class TgeneTechnicalPatrimony extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTechnicalPatrimony -*/ -@EmbeddedId -private TgeneTechnicalPatrimonyKey pk; -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="AMOUNT", nullable=true) - -/** -* Monto del patrimonio tcnico -*/ -private BigDecimal amount; - -@Column(name="DATEFROM", nullable=false) - -/** -* Fecha desde la cual esta vigente el registro de datos del prestamo -*/ -private Timestamp datefrom; - -/**Contructor por defecto*/ -public TgeneTechnicalPatrimony(){ -} -/**Contructor de TgeneTechnicalPatrimony -@param pPk Clave Primaria del entity -@param pDatefrom Fecha desde la cual esta vigente el registro de datos del prestamo -*/ -public TgeneTechnicalPatrimony(TgeneTechnicalPatrimonyKey pPk,Timestamp pDatefrom){ - this(); - pk=pPk; - datefrom=pDatefrom; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTechnicalPatrimony -*/ -public static TgeneTechnicalPatrimony find(EntityManager pEntityManager,TgeneTechnicalPatrimonyKey pKey) throws Exception{ - TgeneTechnicalPatrimony obj = pEntityManager.find(TgeneTechnicalPatrimony.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTechnicalPatrimony -@return El objeto que referencia a la Clave primaria de TgeneTechnicalPatrimony -*/ -public TgeneTechnicalPatrimonyKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTechnicalPatrimony -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTechnicalPatrimony -*/ -public void setPk(TgeneTechnicalPatrimonyKey pPk){ - pk=pPk; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de amount -@return valor de amount*/ -public BigDecimal getAmount(){ - return amount; -} -/**Fija el valor de amount -@param pAmount nuevo Valor de amount*/ -public void setAmount(BigDecimal pAmount){ - amount=pAmount; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTechnicalPatrimony))return false; - TgeneTechnicalPatrimony that = (TgeneTechnicalPatrimony) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneTechnicalPatrimony -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneTechnicalPatrimony -*/ -public Object createInstance(){ - TgeneTechnicalPatrimony instance=new TgeneTechnicalPatrimony(); - instance.setPk(new TgeneTechnicalPatrimonyKey()); - return instance; -} -/**Clona la entidad TgeneTechnicalPatrimony -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTechnicalPatrimony p=(TgeneTechnicalPatrimony)this.clone(); - p.setPk((TgeneTechnicalPatrimonyKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimonyKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimonyKey.java.svn-base deleted file mode 100644 index 1e7b116..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTechnicalPatrimonyKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETECHNICALPATRIMONY*/ -@Embeddable -public class TgeneTechnicalPatrimonyKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro de datos del prestamo. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneTechnicalPatrimonyKey(){} -/**Contructor de TgeneTechnicalPatrimonyKey -@param pCompanycode Codigo de compania -@param pDateto Fecha hasta la cual esta vigente el registro de datos del prestamo. -*/ -public TgeneTechnicalPatrimonyKey(Integer pCompanycode,Timestamp pDateto){ - companycode=pCompanycode; - dateto=pDateto; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TgeneTechnicalPatrimonyKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTechnicalPatrimonyKey))return false; - TgeneTechnicalPatrimonyKey that = (TgeneTechnicalPatrimonyKey) o; - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneTechnicalPatrimonyKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalance.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalance.java.svn-base deleted file mode 100644 index 18a0565..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalance.java.svn-base +++ /dev/null @@ -1,271 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETELLERBALANCE*/ -@Entity(name="TgeneTellerBalance") -@Table(name="TGENETELLERBALANCE") -public class TgeneTellerBalance extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTellerBalance -*/ -@EmbeddedId -private TgeneTellerBalanceKey pk; -@Column(name="BALANCE", nullable=true) - -/** -* Saldo de la caja para la fecha de trabajo, usuario y moneda. -*/ -private BigDecimal balance; - -@Column(name="DEBITS", nullable=true) - -/** -* Total de debitos de caja. -*/ -private BigDecimal debits; - -@Column(name="CREDITS", nullable=true) - -/** -* Total de creditos de caja. -*/ -private BigDecimal credits; - -@Column(name="OWNCHECKS", nullable=true) - -/** -* Saldo en cheques propios. -*/ -private BigDecimal ownchecks; - -@Column(name="LOCALCHECKS", nullable=true) - -/** -* Saldo en cheques locales. -*/ -private BigDecimal localchecks; - -@Column(name="REMCHECKS", nullable=true) - -/** -* Saldo en cheques de remesas. -*/ -private BigDecimal remchecks; - -@Column(name="PLACESCHECKS", nullable=true) - -/** -* Saldo en cheques otras plazas. -*/ -private BigDecimal placeschecks; - -@Column(name="ISCLOSED", nullable=true) - -/** -* Y, indica que el cierre de caja ya fue ejecutado y el cajero no puede ejecutar mas transacciones. -*/ -private String isclosed; - -/**Contructor por defecto*/ -public TgeneTellerBalance(){ -} -/**Contructor de TgeneTellerBalance -@param pPk Clave Primaria del entity -*/ -public TgeneTellerBalance(TgeneTellerBalanceKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTellerBalance -*/ -public static TgeneTellerBalance find(EntityManager pEntityManager,TgeneTellerBalanceKey pKey) throws Exception{ - TgeneTellerBalance obj = pEntityManager.find(TgeneTellerBalance.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTellerBalance -@return El objeto que referencia a la Clave primaria de TgeneTellerBalance -*/ -public TgeneTellerBalanceKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTellerBalance -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTellerBalance -*/ -public void setPk(TgeneTellerBalanceKey pPk){ - pk=pPk; -} -/**Obtiene el valor de balance -@return valor de balance*/ -public BigDecimal getBalance(){ - return balance; -} -/**Fija el valor de balance -@param pBalance nuevo Valor de balance*/ -public void setBalance(BigDecimal pBalance){ - balance=pBalance; -} - -/**Obtiene el valor de debits -@return valor de debits*/ -public BigDecimal getDebits(){ - return debits; -} -/**Fija el valor de debits -@param pDebits nuevo Valor de debits*/ -public void setDebits(BigDecimal pDebits){ - debits=pDebits; -} - -/**Obtiene el valor de credits -@return valor de credits*/ -public BigDecimal getCredits(){ - return credits; -} -/**Fija el valor de credits -@param pCredits nuevo Valor de credits*/ -public void setCredits(BigDecimal pCredits){ - credits=pCredits; -} - -/**Obtiene el valor de ownchecks -@return valor de ownchecks*/ -public BigDecimal getOwnchecks(){ - return ownchecks; -} -/**Fija el valor de ownchecks -@param pOwnchecks nuevo Valor de ownchecks*/ -public void setOwnchecks(BigDecimal pOwnchecks){ - ownchecks=pOwnchecks; -} - -/**Obtiene el valor de localchecks -@return valor de localchecks*/ -public BigDecimal getLocalchecks(){ - return localchecks; -} -/**Fija el valor de localchecks -@param pLocalchecks nuevo Valor de localchecks*/ -public void setLocalchecks(BigDecimal pLocalchecks){ - localchecks=pLocalchecks; -} - -/**Obtiene el valor de remchecks -@return valor de remchecks*/ -public BigDecimal getRemchecks(){ - return remchecks; -} -/**Fija el valor de remchecks -@param pRemchecks nuevo Valor de remchecks*/ -public void setRemchecks(BigDecimal pRemchecks){ - remchecks=pRemchecks; -} - -/**Obtiene el valor de placeschecks -@return valor de placeschecks*/ -public BigDecimal getPlaceschecks(){ - return placeschecks; -} -/**Fija el valor de placeschecks -@param pPlaceschecks nuevo Valor de placeschecks*/ -public void setPlaceschecks(BigDecimal pPlaceschecks){ - placeschecks=pPlaceschecks; -} - -/**Obtiene el valor de isclosed -@return valor de isclosed*/ -public String getIsclosed(){ - return isclosed; -} -/**Fija el valor de isclosed -@param pIsclosed nuevo Valor de isclosed*/ -public void setIsclosed(String pIsclosed){ - isclosed=pIsclosed; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTellerBalance))return false; - TgeneTellerBalance that = (TgeneTellerBalance) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTellerBalance -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTellerBalance -*/ -public Object createInstance(){ - TgeneTellerBalance instance=new TgeneTellerBalance(); - instance.setPk(new TgeneTellerBalanceKey()); - return instance; -} -/**Clona la entidad TgeneTellerBalance -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTellerBalance p=(TgeneTellerBalance)this.clone(); - p.setPk((TgeneTellerBalanceKey)this.pk.cloneMe()); - return p; -} - - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalanceKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalanceKey.java.svn-base deleted file mode 100644 index 01b9b4f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerBalanceKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENETELLERBALANCE*/ -@Embeddable -public class TgeneTellerBalanceKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneTellerBalanceKey(){} -/**Contructor de TgeneTellerBalanceKey -@param pWorkingdate Fecha de trabajo -@param pUsercode Codigo de usuario -@param pCurrencycode Codigo de moneda -*/ -public TgeneTellerBalanceKey(Date pWorkingdate,String pUsercode,String pCurrencycode){ - workingdate=pWorkingdate; - usercode=pUsercode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneTellerBalanceKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTellerBalanceKey))return false; - TgeneTellerBalanceKey that = (TgeneTellerBalanceKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTellerBalanceKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransfer.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransfer.java.svn-base deleted file mode 100644 index ccce3b9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransfer.java.svn-base +++ /dev/null @@ -1,194 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETELLERTRANSFER */ -@Entity(name = "TgeneTellerTransfer") -@Table(name = "TGENETELLERTRANSFER") -public class TgeneTellerTransfer extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTellerTransfer - */ - @EmbeddedId - private TgeneTellerTransferKey pk; - /** Contructor por defecto */ - public TgeneTellerTransfer() { - } - /** - * Contructor de TgeneTellerTransfer - * - * @param pPk Clave Primaria del entity - */ - public TgeneTellerTransfer(TgeneTellerTransferKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTellerTransfer - */ - public static TgeneTellerTransfer find(EntityManager pEntityManager, TgeneTellerTransferKey pKey) throws Exception { - TgeneTellerTransfer obj = pEntityManager.find(TgeneTellerTransfer.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTellerTransfer - * - * @return El objeto que referencia a la Clave primaria de TgeneTellerTransfer - */ - public TgeneTellerTransferKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTellerTransfer - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTellerTransfer - */ - public void setPk(TgeneTellerTransferKey pPk) { - pk = pPk; - } - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTellerTransfer)) - return false; - TgeneTellerTransfer that = (TgeneTellerTransfer) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTellerTransfer - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTellerTransfer */ - public Object createInstance() { - TgeneTellerTransfer instance = new TgeneTellerTransfer(); - instance.setPk(new TgeneTellerTransferKey()); - return instance; - } - /** - * Clona la entidad TgeneTellerTransfer - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTellerTransfer p = (TgeneTellerTransfer) this.clone(); - p.setPk((TgeneTellerTransferKey) this.pk.cloneMe()); - return p; - } - //Metodos manuales. - - /**sentencia que elimina TgeneTellerTransfer*/ - private static final String DEL_TRANSF = - " delete from TGENETELLERTRANSFER t " - + " where t.WORKINGDATE = :workingdate " - + " and t.USERCODE = :usercode " - + " and t.TRANSFERNUMBER = :transfernumber"; - - /** - * Elimina un registro de la tabla para el usuario, fecha de trabajo y numero de transferencia. - * @param pEntityManager Referencia la session de la base de datos. - * @param pWorkingdate Fecha de trabajo. - * @param pUser Codigo de usuario. - * @param pTransfernumber Numero de transferencia. - * @throws Exception - */ - public static void delete(EntityManager pEntityManager,Date pWorkingdate,String pUser,Integer pTransfernumber) throws Exception { - //Elimina TgeneTellerTransfer - Session s = (Session)pEntityManager.getDelegate(); - SQLQuery sqldet = s.createSQLQuery(DEL_TRANSF); - sqldet.setDate("workingdate", pWorkingdate); - sqldet.setString("usercode", pUser); - sqldet.setInteger("transfernumber", pTransfernumber); - sqldet.executeUpdate(); - } - - /**sentencia que obtiene la secuencia por fecha de trabajo, usuario.*/ - private static final String SQL = "select coalesce( max(TRANSFERNUMBER),0) from TGENETELLERTRANSFER " - + " where WORKINGDATE = :workingdate and USERCODE = :usercode "; - - /** - * Entrega la secuencia de transferencia. - * @param pWorkingDate Fecha de trabajo. - * @param pUsercode Codigo de usuario. - * @return Integer - * @throws Exception - */ - public static Integer getTransfernumber(EntityManager pEntityManager,Date pWorkingDate, String pUsercode) throws Exception { - Integer transfernumber = null; - Session s = (Session)pEntityManager.getDelegate(); - SQLQuery sql = s.createSQLQuery(SQL); - sql.setDate("workingdate", pWorkingDate); - sql.setString("usercode", pUsercode); - transfernumber = Integer.parseInt(sql.uniqueResult().toString()); - transfernumber++; - return transfernumber; - } - - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetail.java.svn-base deleted file mode 100644 index 1a7651e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetail.java.svn-base +++ /dev/null @@ -1,226 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; -import com.fp.teller.exception.TellerException; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETELLERTRANSFERDETAIL */ -@Entity(name = "TgeneTellerTransferDetail") -@Table(name = "TGENETELLERTRANSFERDETAIL") -public class TgeneTellerTransferDetail extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTellerTransferDetail - */ - @EmbeddedId - private TgeneTellerTransferDetailKey pk; - @Column(name = "QUANTITY", nullable = true) - /** - * Numero de billetes o monedas por denominacion - */ - private Integer quantity; - - @Column(name = "TOTAL", nullable = true) - /** - * Total de la denominacion - */ - private BigDecimal total; - - /** Contructor por defecto */ - public TgeneTellerTransferDetail() { - } - /** - * Contructor de TgeneTellerTransferDetail - * - * @param pPk Clave Primaria del entity - */ - public TgeneTellerTransferDetail(TgeneTellerTransferDetailKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTellerTransferDetail - */ - public static TgeneTellerTransferDetail find(EntityManager pEntityManager, TgeneTellerTransferDetailKey pKey) - throws Exception { - TgeneTellerTransferDetail obj = pEntityManager.find(TgeneTellerTransferDetail.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTellerTransferDetail - * - * @return El objeto que referencia a la Clave primaria de TgeneTellerTransferDetail - */ - public TgeneTellerTransferDetailKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTellerTransferDetail - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTellerTransferDetail - */ - public void setPk(TgeneTellerTransferDetailKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de quantity - * - * @return valor de quantity - */ - public Integer getQuantity() { - return quantity; - } - /** - * Fija el valor de quantity - * - * @param pQuantity nuevo Valor de quantity - */ - public void setQuantity(Integer pQuantity) { - quantity = pQuantity; - } - - /** - * Obtiene el valor de total - * - * @return valor de total - */ - public BigDecimal getTotal() { - return total; - } - /** - * Fija el valor de total - * - * @param pTotal nuevo Valor de total - */ - public void setTotal(BigDecimal pTotal) { - total = pTotal; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTellerTransferDetail)) - return false; - TgeneTellerTransferDetail that = (TgeneTellerTransferDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTellerTransferDetail - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTellerTransferDetail */ - public Object createInstance() { - TgeneTellerTransferDetail instance = new TgeneTellerTransferDetail(); - instance.setPk(new TgeneTellerTransferDetailKey()); - return instance; - } - /** - * Clona la entidad TgeneTellerTransferDetail - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTellerTransferDetail p = (TgeneTellerTransferDetail) this.clone(); - p.setPk((TgeneTellerTransferDetailKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /**Sentencia que entrega la los datos de TgeneTellerTransferDetail*/ - private static final String HQL_TELLER_TRANSFER_DETAIL = - " from TgeneTellerTransferDetail tgtd" - + " where tgtd.pk.workingdate = :workingdate" - + " and tgtd.pk.usercode = :usercode" - + " and tgtd.pk.transfernumber = :transfernumber"; - - /** - * Metodo que entrega los datos de TgeneTellerTransferDetail, dada la fecha de trabajo, usuario y secuencia. - * @param workingdate Fecha de trabajo. - * @param usercode Codigo de usuario. - * @param transfernumber Numero de transferencia. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - Date workingdate, String usercode, Integer transfernumber) throws Exception{ - List ldata = null; - Query qry = pEntityManager.createQuery(HQL_TELLER_TRANSFER_DETAIL); - qry.setParameter("workingdate", workingdate); - qry.setParameter("usercode", usercode); - qry.setParameter("transfernumber", transfernumber); - ldata = qry.getResultList(); - if(ldata == null){ - throw new TellerException("TELLER-0001", "TRANSFERENCIA NO DEFINIDA EN TGENETELLERTRANSFERHEADER TRANSFERNUMBER:{0} USERCODE:{1} WORKINGDATE:{2}", transfernumber, usercode, workingdate); - } - return ldata; - } - - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetailKey.java.svn-base deleted file mode 100644 index 7489bca..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferDetailKey.java.svn-base +++ /dev/null @@ -1,234 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENETELLERTRANSFERDETAIL*/ -@Embeddable -public class TgeneTellerTransferDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="TRANSFERNUMBER", nullable=false,updatable=false) - -/** -* Secuencia de transferencia para el usuaio fecha de trabajo -*/ -private Integer transfernumber; - -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -@Column(name="DENOMINATIONVALUE", nullable=false,updatable=false) - -/** -* Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -private BigDecimal denominationvalue; - -/**Contructor por defecto*/ -public TgeneTellerTransferDetailKey(){} -/**Contructor de TgeneTellerTransferDetailKey -@param pUsercode Codigo de usuario que origina la transferencia -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pTransfernumber Secuencia de transferencia para el usuaio fecha de trabajo -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pDenominationvalue Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -public TgeneTellerTransferDetailKey(String pUsercode,Date pWorkingdate,Integer pTransfernumber,String pCatalog,String pCatalogcode,BigDecimal pDenominationvalue){ - usercode=pUsercode; - workingdate=pWorkingdate; - transfernumber=pTransfernumber; - catalog=pCatalog; - catalogcode=pCatalogcode; - denominationvalue=pDenominationvalue; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de transfernumber -@return valor de transfernumber*/ -public Integer getTransfernumber(){ - return transfernumber; -} -/**Fija el valor de transfernumber -@param pTransfernumber nuevo Valor de transfernumber*/ -public void setTransfernumber(Integer pTransfernumber){ - transfernumber=pTransfernumber; -} - -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Obtiene el valor de denominationvalue -@return valor de denominationvalue*/ -public BigDecimal getDenominationvalue(){ - return denominationvalue; -} -/**Fija el valor de denominationvalue -@param pDenominationvalue nuevo Valor de denominationvalue*/ -public void setDenominationvalue(BigDecimal pDenominationvalue){ - denominationvalue=pDenominationvalue; -} - -/**Implementacin de la comparacin de TgeneTellerTransferDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTellerTransferDetailKey))return false; - TgeneTellerTransferDetailKey that = (TgeneTellerTransferDetailKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getTransfernumber() == null || that.getTransfernumber() == null){ - return false; - } - if (! this.getTransfernumber().equals(that.getTransfernumber())){ - return false; - } - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - if (this.getDenominationvalue() == null || that.getDenominationvalue() == null){ - return false; - } - if (! this.getDenominationvalue().equals(that.getDenominationvalue())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTellerTransferDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getTransfernumber() == null ? 0 : this.getTransfernumber().hashCode()); - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - result = result * 37 + (this.getDenominationvalue() == null ? 0 : this.getDenominationvalue().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeader.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeader.java.svn-base deleted file mode 100644 index 2f8c01c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeader.java.svn-base +++ /dev/null @@ -1,574 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; -import com.fp.teller.exception.TellerException; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETELLERTRANSFERHEADER */ -@Entity(name = "TgeneTellerTransferHeader") -@Table(name = "TGENETELLERTRANSFERHEADER") -public class TgeneTellerTransferHeader extends com.fp.dto.AbstractDataTransport - implements - Serializable, - HibernateBean, - Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTellerTransferHeader - */ - @EmbeddedId - private TgeneTellerTransferHeaderKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Numero de mensaje con el que se procersa el financiero. - */ - private Timestamp datefrom; - - @Column(name = "CURRENCYCODE", nullable = false) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "OFFICECODE", nullable = false) - /** - * Codigo de oficina origen - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = false) - /** - * Codigo de sucursal origen - */ - private Integer branchcode; - - @Column(name = "COMPANYCODE", nullable = false) - /** - * Codigo de compania al que pertenece la oficina - */ - private Integer companycode; - - @Column(name = "DESTINYUSERCODE", nullable = true) - /** - * Codigo de usuario destino - */ - private String destinyusercode; - - @Column(name = "DESTINYOFFICECODE", nullable = true) - /** - * Codigo de oficina destino - */ - private Integer destinyofficecode; - - @Column(name = "DESTINYBRANCHCODE", nullable = true) - /** - * Codigo de sucursal destino - */ - private Integer destinybranchcode; - - @Column(name = "STATUSCATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String statuscatalog; - - @Column(name = "STATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String statuscatalogcode; - - @Column(name = "ISVAULT", nullable = true) - /** - * Y indica que la transferencia de saldos en de Boveda - */ - private String isvault; - - @Column(name = "TOTAL", nullable = true) - /** - * Monto total de la transaccion - */ - private BigDecimal total; - - @Column(name = "JOURNALID", nullable = true) - /** - * Numero de mensaje con el que se procersa el financiero. - */ - private String journalid; - - @Column(name = "OLDJOURNALID", nullable = true) - /** - * Numero de mensaje anterior se utiliza en los reversos. - */ - private String oldjournalid; - - - /** Contructor por defecto */ - public TgeneTellerTransferHeader() { - } - /** - * Contructor de TgeneTellerTransferHeader - * - * @param pPk Clave Primaria del entity - * @param pCurrencycode Codigo de moneda - * @param pOfficecode Codigo de oficina origen - * @param pBranchcode Codigo de sucursal origen - * @param pCompanycode Codigo de compania al que pertenece la oficina - */ - public TgeneTellerTransferHeader(TgeneTellerTransferHeaderKey pPk, String pCurrencycode, Integer pOfficecode, - Integer pBranchcode, Integer pCompanycode) { - this(); - pk = pPk; - currencycode = pCurrencycode; - officecode = pOfficecode; - branchcode = pBranchcode; - companycode = pCompanycode; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTellerTransferHeader - */ - public static TgeneTellerTransferHeader find(EntityManager pEntityManager, TgeneTellerTransferHeaderKey pKey) - throws Exception { - TgeneTellerTransferHeader obj = pEntityManager.find(TgeneTellerTransferHeader.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTellerTransferHeader - * - * @return El objeto que referencia a la Clave primaria de TgeneTellerTransferHeader - */ - public TgeneTellerTransferHeaderKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTellerTransferHeader - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTellerTransferHeader - */ - public void setPk(TgeneTellerTransferHeaderKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return currencycode; - } - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return officecode; - } - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return branchcode; - } - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - branchcode = pBranchcode; - } - - /** - * Obtiene el valor de companycode - * - * @return valor de companycode - */ - public Integer getCompanycode() { - return companycode; - } - /** - * Fija el valor de companycode - * - * @param pCompanycode nuevo Valor de companycode - */ - public void setCompanycode(Integer pCompanycode) { - companycode = pCompanycode; - } - - /** - * Obtiene el valor de destinyusercode - * - * @return valor de destinyusercode - */ - public String getDestinyusercode() { - return destinyusercode; - } - /** - * Fija el valor de destinyusercode - * - * @param pDestinyusercode nuevo Valor de destinyusercode - */ - public void setDestinyusercode(String pDestinyusercode) { - destinyusercode = pDestinyusercode; - } - - /** - * Obtiene el valor de destinyofficecode - * - * @return valor de destinyofficecode - */ - public Integer getDestinyofficecode() { - return destinyofficecode; - } - /** - * Fija el valor de destinyofficecode - * - * @param pDestinyofficecode nuevo Valor de destinyofficecode - */ - public void setDestinyofficecode(Integer pDestinyofficecode) { - destinyofficecode = pDestinyofficecode; - } - - /** - * Obtiene el valor de destinybranchcode - * - * @return valor de destinybranchcode - */ - public Integer getDestinybranchcode() { - return destinybranchcode; - } - /** - * Fija el valor de destinybranchcode - * - * @param pDestinybranchcode nuevo Valor de destinybranchcode - */ - public void setDestinybranchcode(Integer pDestinybranchcode) { - destinybranchcode = pDestinybranchcode; - } - - /** - * Obtiene el valor de statuscatalog - * - * @return valor de statuscatalog - */ - public String getStatuscatalog() { - return statuscatalog; - } - /** - * Fija el valor de statuscatalog - * - * @param pStatuscatalog nuevo Valor de statuscatalog - */ - public void setStatuscatalog(String pStatuscatalog) { - statuscatalog = pStatuscatalog; - } - - /** - * Obtiene el valor de statuscatalogcode - * - * @return valor de statuscatalogcode - */ - public String getStatuscatalogcode() { - return statuscatalogcode; - } - /** - * Fija el valor de statuscatalogcode - * - * @param pStatuscatalogcode nuevo Valor de statuscatalogcode - */ - public void setStatuscatalogcode(String pStatuscatalogcode) { - statuscatalogcode = pStatuscatalogcode; - } - - /** - * Obtiene el valor de isvault - * - * @return valor de isvault - */ - public String getIsvault() { - return isvault; - } - /** - * Fija el valor de isvault - * - * @param pIsvault nuevo Valor de isvault - */ - public void setIsvault(String pIsvault) { - isvault = pIsvault; - } - - /** - * Obtiene el valor de total - * - * @return valor de total - */ - public BigDecimal getTotal() { - return total; - } - /** - * Fija el valor de total - * - * @param pTotal nuevo Valor de total - */ - public void setTotal(BigDecimal pTotal) { - total = pTotal; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return journalid; - } - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - journalid = pJournalid; - } - - /** - * Obtiene el valor de oldjournalid - * - * @return valor de oldjournalid - */ - public String getOldjournalid() { - return oldjournalid; - } - /** - * Fija el valor de oldjournalid - * - * @param pOldjournalid nuevo Valor de oldjournalid - */ - public void setOldjournalid(String pOldjournalid) { - oldjournalid = pOldjournalid; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTellerTransferHeader)) - return false; - TgeneTellerTransferHeader that = (TgeneTellerTransferHeader) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTellerTransferHeader - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTellerTransferHeader */ - public Object createInstance() { - TgeneTellerTransferHeader instance = new TgeneTellerTransferHeader(); - instance.setPk(new TgeneTellerTransferHeaderKey()); - return instance; - } - /** - * Clona la entidad TgeneTellerTransferHeader - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTellerTransferHeader p = (TgeneTellerTransferHeader) this.clone(); - p.setPk((TgeneTellerTransferHeaderKey) this.pk.cloneMe()); - return p; - } - public Object getId() { - return this.pk; - } - - // metodos manuales. - /** Sentencia que entrega la los datos de TgeneTellerTransferHeader */ - private static final String HQL_TELLER_TRANSFER_HEADER_JID = " from TgeneTellerTransferHeader tgth" - + " where tgth.pk.workingdate = :workingdate" + " and tgth.journalid = :journalid"; - - /** - * Metodo que entrega los datos de TgeneTellerTransferHeader, dada la fecha de trabajo y el journalid. - * @param pEntityManager Referecia a la session de la base de datos. - * @param pWorkingdate Fecha de trabajo. - * @param pJournalid Numero de journal. - * @param isold Indica si obtiene el registro de journalid o de oldjournalid. - * @return TgeneTellerTransferHeader - * @throws Exception - */ - public static TgeneTellerTransferHeader find(EntityManager pEntityManager,Date pWorkingdate, String pJournalid) - throws Exception { - TgeneTellerTransferHeader tgeneTellerTransferHeader = null; - Query qry = pEntityManager.createQuery(HQL_TELLER_TRANSFER_HEADER_JID); - qry.setParameter("workingdate", pWorkingdate); - qry.setParameter("journalid", pJournalid); - try { - tgeneTellerTransferHeader = (TgeneTellerTransferHeader)qry.getSingleResult(); - } catch (NoResultException e) { - return tgeneTellerTransferHeader; - } - return tgeneTellerTransferHeader; - } - - - - /**sentencia que elimina TgeneTellerTransferHeader*/ - private static final String DEL_TRANSF_HEAD = - " delete from TGENETELLERTRANSFERHEADER t " - + " where t.WORKINGDATE = :workingdate " - + " and t.USERCODE = :usercode " - + " and t.TRANSFERNUMBER = :transfernumber"; - - /** - * Elimina un registro de la tabla para el usuario, fecha de trabajo y numero de transferencia. - * @param pEntityManager Referencia la session de la base de datos. - * @param pWorkingdate Fecha de trabajo. - * @param pUser Codigo de usuario. - * @param pTransfernumber Numero de transferencia. - * @throws Exception - */ - public static void delete(EntityManager pEntityManager,Date pWorkingdate,String pUser,Integer pTransfernumber) throws Exception { - //Elimina TgeneTellerTransferHeader - Session s = (Session)pEntityManager.getDelegate(); - SQLQuery sqldet = s.createSQLQuery(DEL_TRANSF_HEAD); - sqldet.setDate("workingdate", pWorkingdate); - sqldet.setString("usercode", pUser); - sqldet.setInteger("transfernumber", pTransfernumber); - sqldet.executeUpdate(); - } - - - - /**Sentencia que entrega la los datos de TgeneTellerTransferHeader*/ - private static final String JPQL_TELLER_TRANSFER_HEADER = - " from TgeneTellerTransferHeader tgth" - + " where tgth.pk.workingdate = :workingdate" - + " and tgth.pk.usercode = :usercode" - + " and tgth.pk.transfernumber = :transfernumber"; - /** - * Metodo que entrega los datos de TgeneTellerTransferHeader, dada la fecha de trabajo, usuario y numero de transferencia. - * - * @param pEntityManager Session de la base de datos. - * @param workingdate Fecha de trabajo. - * @param usercode Codigo de usuario. - * @param transfernumber Numero de transferencia. - * @return TgeneTellerTransferHeader - * @throws Exception - */ - public static TgeneTellerTransferHeader find(EntityManager pEntityManager, Date workingdate, String usercode, Integer transfernumber) throws Exception{ - TgeneTellerTransferHeader tgeneTellerTransferHeader = null; - Query qry = pEntityManager.createQuery(TgeneTellerTransferHeader.JPQL_TELLER_TRANSFER_HEADER); - qry.setParameter(Constant.VWORKINGDATE, workingdate); - qry.setParameter("usercode", usercode); - qry.setParameter("transfernumber", transfernumber); - try { - tgeneTellerTransferHeader = (TgeneTellerTransferHeader) qry.getSingleResult(); - } catch (NoResultException e) { - throw new TellerException("TELLER-0001", "TRANSFERENCIA NO DEFINIDA EN TGENETELLERTRANSFERHEADER TRANSFERNUMBER:{0} USERCODE:{1} WORKINGDATE:{2}", transfernumber, usercode, workingdate); - } - return tgeneTellerTransferHeader; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeaderKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeaderKey.java.svn-base deleted file mode 100644 index ca12537..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferHeaderKey.java.svn-base +++ /dev/null @@ -1,184 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENETELLERTRANSFERHEADER*/ -@Embeddable -public class TgeneTellerTransferHeaderKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="TRANSFERNUMBER", nullable=false,updatable=false) - -/** -* Secuencia de transferencia para el usuaio fecha de trabajo -*/ -private Integer transfernumber; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneTellerTransferHeaderKey(){} -/**Contructor de TgeneTellerTransferHeaderKey -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pUsercode Codigo de usuario que origina la transferencia -@param pTransfernumber Secuencia de transferencia para el usuaio fecha de trabajo -@param pDateto Fecha hasta la cual esta vigente el registro -*/ -public TgeneTellerTransferHeaderKey(Date pWorkingdate,String pUsercode,Integer pTransfernumber,Timestamp pDateto){ - workingdate=pWorkingdate; - usercode=pUsercode; - transfernumber=pTransfernumber; - dateto=pDateto; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de transfernumber -@return valor de transfernumber*/ -public Integer getTransfernumber(){ - return transfernumber; -} -/**Fija el valor de transfernumber -@param pTransfernumber nuevo Valor de transfernumber*/ -public void setTransfernumber(Integer pTransfernumber){ - transfernumber=pTransfernumber; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgeneTellerTransferHeaderKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTellerTransferHeaderKey))return false; - TgeneTellerTransferHeaderKey that = (TgeneTellerTransferHeaderKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getTransfernumber() == null || that.getTransfernumber() == null){ - return false; - } - if (! this.getTransfernumber().equals(that.getTransfernumber())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTellerTransferHeaderKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getTransfernumber() == null ? 0 : this.getTransfernumber().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferKey.java.svn-base deleted file mode 100644 index 05f6179..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTellerTransferKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENETELLERTRANSFER*/ -@Embeddable -public class TgeneTellerTransferKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario que origina la transferencia -*/ -private String usercode; - -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo en la cual se origina la transferencia -*/ -private Date workingdate; - -@Column(name="TRANSFERNUMBER", nullable=false,updatable=false) - -/** -* Secuencia de transferencia para el usuaio fecha de trabajo -*/ -private Integer transfernumber; - -/**Contructor por defecto*/ -public TgeneTellerTransferKey(){} -/**Contructor de TgeneTellerTransferKey -@param pUsercode Codigo de usuario que origina la transferencia -@param pWorkingdate Fecha de trabajo en la cual se origina la transferencia -@param pTransfernumber Secuencia de transferencia para el usuaio fecha de trabajo -*/ -public TgeneTellerTransferKey(String pUsercode,Date pWorkingdate,Integer pTransfernumber){ - usercode=pUsercode; - workingdate=pWorkingdate; - transfernumber=pTransfernumber; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de transfernumber -@return valor de transfernumber*/ -public Integer getTransfernumber(){ - return transfernumber; -} -/**Fija el valor de transfernumber -@param pTransfernumber nuevo Valor de transfernumber*/ -public void setTransfernumber(Integer pTransfernumber){ - transfernumber=pTransfernumber; -} - -/**Implementacin de la comparacin de TgeneTellerTransferKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTellerTransferKey))return false; - TgeneTellerTransferKey that = (TgeneTellerTransferKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getTransfernumber() == null || that.getTransfernumber() == null){ - return false; - } - if (! this.getTransfernumber().equals(that.getTransfernumber())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTellerTransferKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getTransfernumber() == null ? 0 : this.getTransfernumber().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMix.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMix.java.svn-base deleted file mode 100644 index 64f4ee3..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMix.java.svn-base +++ /dev/null @@ -1,432 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONMIX */ -@Entity(name = "TgeneTransactionMix") -@Table(name = "TGENETRANSACTIONMIX") -public class TgeneTransactionMix extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneTransactionMix - */ - @EmbeddedId - private TgeneTransactionMixKey pk; - - @Column(name = "PERSONCODE", nullable = true) - /** - * Codigo de persona - */ - private Integer personcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal - */ - private Integer branchcode; - - @Column(name = "COMPANYCODE", nullable = true) - /** - * Codigo de compania al que pertenece la oficina - */ - private Integer companycode; - - @Column(name = "ACCOUNTINGDATE", nullable = true) - /** - * null - */ - private Date accountingdate; - - @Column(name = "CASH", nullable = true) - /** - * null - */ - private BigDecimal cash; - - @Column(name = "CHECKS", nullable = true) - /** - * null - */ - private BigDecimal checks; - - @Column(name = "CASHBALANCE", nullable = true) - /** - * null - */ - private BigDecimal cashbalance; - - @Column(name = "CHECKBALANCE", nullable = true) - /** - * null - */ - private BigDecimal checkbalance; - - /** Contructor por defecto */ - public TgeneTransactionMix() { - } - - /** - * Contructor de TgeneTransactionMix - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransactionMix(TgeneTransactionMixKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransactionMix - */ - public static TgeneTransactionMix find(EntityManager pEntityManager, TgeneTransactionMixKey pKey) throws Exception { - TgeneTransactionMix obj = pEntityManager.find(TgeneTransactionMix.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneTransactionMix - * - * @return El objeto que referencia a la Clave primaria de TgeneTransactionMix - */ - public TgeneTransactionMixKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransactionMix - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionMix - */ - public void setPk(TgeneTransactionMixKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de personcode - * - * @return valor de personcode - */ - public Integer getPersoncode() { - return this.personcode; - } - - /** - * Fija el valor de personcode - * - * @param pPersoncode nuevo Valor de personcode - */ - public void setPersoncode(Integer pPersoncode) { - this.personcode = pPersoncode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return this.officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - this.officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return this.branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - this.branchcode = pBranchcode; - } - - /** - * Obtiene el valor de companycode - * - * @return valor de companycode - */ - public Integer getCompanycode() { - return this.companycode; - } - - /** - * Fija el valor de companycode - * - * @param pCompanycode nuevo Valor de companycode - */ - public void setCompanycode(Integer pCompanycode) { - this.companycode = pCompanycode; - } - - /** - * Obtiene el valor de accountingdate - * - * @return valor de accountingdate - */ - public Date getAccountingdate() { - return this.accountingdate; - } - - /** - * Fija el valor de accountingdate - * - * @param pAccountingdate nuevo Valor de accountingdate - */ - public void setAccountingdate(Date pAccountingdate) { - this.accountingdate = pAccountingdate; - } - - /** - * Obtiene el valor de cash - * - * @return valor de cash - */ - public BigDecimal getCash() { - return this.cash; - } - - /** - * Fija el valor de cash - * - * @param pCash nuevo Valor de cash - */ - public void setCash(BigDecimal pCash) { - this.cash = pCash; - } - - /** - * Obtiene el valor de checks - * - * @return valor de checks - */ - public BigDecimal getChecks() { - return this.checks; - } - - /** - * Fija el valor de checks - * - * @param pChecks nuevo Valor de checks - */ - public void setChecks(BigDecimal pChecks) { - this.checks = pChecks; - } - - /** - * Obtiene el valor de cashbalance - * - * @return valor de cashbalance - */ - public BigDecimal getCashbalance() { - return this.cashbalance; - } - - /** - * Fija el valor de cashbalance - * - * @param pCashbalance nuevo Valor de cashbalance - */ - public void setCashbalance(BigDecimal pCashbalance) { - this.cashbalance = pCashbalance; - } - - /** - * Obtiene el valor de checkbalance - * - * @return valor de checkbalance - */ - public BigDecimal getCheckbalance() { - return this.checkbalance; - } - - /** - * Fija el valor de checkbalance - * - * @param pCheckbalance nuevo Valor de checkbalance - */ - public void setCheckbalance(BigDecimal pCheckbalance) { - this.checkbalance = pCheckbalance; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneTransactionMix)) { - return false; - } - TgeneTransactionMix that = (TgeneTransactionMix) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransactionMix - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneTransactionMix */ - @Override - public Object createInstance() { - TgeneTransactionMix instance = new TgeneTransactionMix(); - instance.setPk(new TgeneTransactionMixKey()); - return instance; - } - - /** - * Clona la entidad TgeneTransactionMix - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransactionMix p = (TgeneTransactionMix) this.clone(); - p.setPk((TgeneTransactionMixKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** Sentencia que entrega datos de TgeneTransactionMix, para la fecha de tarbajo, usuario y numero de caja multiple. */ - private static final String JPQL_TRANS_MIX = " from TgeneTransactionMix tmix" + " where tmix.pk.workingdate = :workingdate " - + " and tmix.pk.usercode = :user" + " and tmix.pk.mixnumber = :mixnumber "; - - /** - * Metodo que entrega un registro de TgeneTransactionMix, dada la fecha de trabajo, codigo de usuario y secuencia de - * caja multiple, que se calcula por fecha de trabajo y usuario. - * - * @param pEntityManager Session de la base de datos. - * @param pWorkingdate Fecha de trabajo. - * @param pUser Codigo de usuario. - * @param pMixnumber Secuencia de caja multiple. - * @return TgeneTransactionMix - * @throws Exception - */ - public static TgeneTransactionMix find(EntityManager pEntityManager, Date pWorkingdate, String pUser, Integer pMixnumber) throws Exception { - Query qry = pEntityManager.createQuery(TgeneTransactionMix.JPQL_TRANS_MIX); - qry.setParameter(Constant.VWORKINGDATE, pWorkingdate); - qry.setParameter("user", pUser); - qry.setParameter("mixnumber", pMixnumber); - try { - return (TgeneTransactionMix) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixKey.java.svn-base deleted file mode 100644 index d124dae..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONMIX*/ -@Embeddable -public class TgeneTransactionMixKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* null -*/ -private Date workingdate; - -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="MIXNUMBER", nullable=false,updatable=false) - -/** -* null -*/ -private Integer mixnumber; - -/**Contructor por defecto*/ -public TgeneTransactionMixKey(){} -/**Contructor de TgeneTransactionMixKey -@param pWorkingdate null -@param pUsercode Codigo de usuario -@param pMixnumber null -*/ -public TgeneTransactionMixKey(Date pWorkingdate,String pUsercode,Integer pMixnumber){ - workingdate=pWorkingdate; - usercode=pUsercode; - mixnumber=pMixnumber; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de mixnumber -@return valor de mixnumber*/ -public Integer getMixnumber(){ - return mixnumber; -} -/**Fija el valor de mixnumber -@param pMixnumber nuevo Valor de mixnumber*/ -public void setMixnumber(Integer pMixnumber){ - mixnumber=pMixnumber; -} - -/**Implementacin de la comparacin de TgeneTransactionMixKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionMixKey))return false; - TgeneTransactionMixKey that = (TgeneTransactionMixKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getMixnumber() == null || that.getMixnumber() == null){ - return false; - } - if (! this.getMixnumber().equals(that.getMixnumber())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionMixKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getMixnumber() == null ? 0 : this.getMixnumber().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPages.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPages.java.svn-base deleted file mode 100644 index 66d4ccf..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPages.java.svn-base +++ /dev/null @@ -1,157 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONMIXPAGES*/ -@Entity(name="TgeneTransactionMixPages") -@Table(name="TGENETRANSACTIONMIXPAGES") -public class TgeneTransactionMixPages extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionMixPages -*/ -@EmbeddedId -private TgeneTransactionMixPagesKey pk; -@Column(name="ORIGIN", nullable=true) - -/** -* Y Indica que la transaccion sirve para fondeo del efectivo, N resta los fondos -*/ -private String origin; - -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de presentacion -*/ -private Integer presentationorder; - -/**Contructor por defecto*/ -public TgeneTransactionMixPages(){ -} -/**Contructor de TgeneTransactionMixPages -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionMixPages(TgeneTransactionMixPagesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionMixPages -*/ -public static TgeneTransactionMixPages find(EntityManager pEntityManager,TgeneTransactionMixPagesKey pKey) throws Exception{ - TgeneTransactionMixPages obj = pEntityManager.find(TgeneTransactionMixPages.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionMixPages -@return El objeto que referencia a la Clave primaria de TgeneTransactionMixPages -*/ -public TgeneTransactionMixPagesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionMixPages -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionMixPages -*/ -public void setPk(TgeneTransactionMixPagesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de origin -@return valor de origin*/ -public String getOrigin(){ - return origin; -} -/**Fija el valor de origin -@param pOrigin nuevo Valor de origin*/ -public void setOrigin(String pOrigin){ - origin=pOrigin; -} - -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionMixPages))return false; - TgeneTransactionMixPages that = (TgeneTransactionMixPages) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionMixPages -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionMixPages -*/ -public Object createInstance(){ - TgeneTransactionMixPages instance=new TgeneTransactionMixPages(); - instance.setPk(new TgeneTransactionMixPagesKey()); - return instance; -} -/**Clona la entidad TgeneTransactionMixPages -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionMixPages p=(TgeneTransactionMixPages)this.clone(); - p.setPk((TgeneTransactionMixPagesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPagesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPagesKey.java.svn-base deleted file mode 100644 index 80ff26b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionMixPagesKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONMIXPAGES*/ -@Embeddable -public class TgeneTransactionMixPagesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneTransactionMixPagesKey(){} -/**Contructor de TgeneTransactionMixPagesKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneTransactionMixPagesKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacin de la comparacin de TgeneTransactionMixPagesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionMixPagesKey))return false; - TgeneTransactionMixPagesKey that = (TgeneTransactionMixPagesKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionMixPagesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQuery.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQuery.java.svn-base deleted file mode 100644 index 2b0a787..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQuery.java.svn-base +++ /dev/null @@ -1,282 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONQUERY*/ -@Entity(name="TgeneTransactionQuery") -@Table(name="TGENETRANSACTIONQUERY") -public class TgeneTransactionQuery extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionQuery -*/ -@EmbeddedId -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(SEQUENCE),0)+1 from TGENETRANSACTIONQUERY " - + "where TRANSACTIONMODULE=:transactionmodule " + "and TRANSACTIONCODE=:transactioncode " - + "and TRANSACTIONVERSION=:transactionversion "), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "transactionmodule,pk.transactionmodule;transactioncode,pk.transactioncode;transactionversion,pk.transactionversion"), - @Parameter(name = "field", value = "sequence") }) -@GeneratedValue(generator = "seq_id") -private TgeneTransactionQueryKey pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Column(name="EXECUTIONORDER", nullable=true) - -/** -* orden de ejecucion de la regla de negocio. -*/ -private Integer executionorder; - -@Column(name="STATUS", nullable=true) - -/** -* A indica que la regla esta activa, I regla Inactiva -*/ -private String status; - -@Column(name="ISFLOW", nullable=true) - -/** -* Y Indica que el origen de ejecucion del componente es un flujo del bpm -*/ -private String isflow; - -@Column(name="RULENAME", nullable=true) - -/** -* Nombre de la regla a ejecutar -*/ -private String rulename; - -@Column(name="PROCESSNAME", nullable=true) - -/** -* Nombre del flujo bpm a ejecutar -*/ -private String processname; - -/**Contructor por defecto*/ -public TgeneTransactionQuery(){ -} -/**Contructor de TgeneTransactionQuery -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionQuery(TgeneTransactionQueryKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionQuery -*/ -public static TgeneTransactionQuery find(EntityManager pEntityManager,TgeneTransactionQueryKey pKey) throws Exception{ - TgeneTransactionQuery obj = pEntityManager.find(TgeneTransactionQuery.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionQuery -@return El objeto que referencia a la Clave primaria de TgeneTransactionQuery -*/ -public TgeneTransactionQueryKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionQuery -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionQuery -*/ -public void setPk(TgeneTransactionQueryKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de executionorder -@return valor de executionorder*/ -public Integer getExecutionorder(){ - return executionorder; -} -/**Fija el valor de executionorder -@param pExecutionorder nuevo Valor de executionorder*/ -public void setExecutionorder(Integer pExecutionorder){ - executionorder=pExecutionorder; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -/**Obtiene el valor de isflow -@return valor de isflow*/ -public String getIsflow(){ - return isflow; -} -/**Fija el valor de isflow -@param pIsflow nuevo Valor de isflow*/ -public void setIsflow(String pIsflow){ - isflow=pIsflow; -} - -/**Obtiene el valor de rulename -@return valor de rulename*/ -public String getRulename(){ - return rulename; -} -/**Fija el valor de rulename -@param pRulename nuevo Valor de rulename*/ -public void setRulename(String pRulename){ - rulename=pRulename; -} - -/**Obtiene el valor de processname -@return valor de processname*/ -public String getProcessname(){ - return processname; -} -/**Fija el valor de processname -@param pProcessname nuevo Valor de processname*/ -public void setProcessname(String pProcessname){ - processname=pProcessname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionQuery))return false; - TgeneTransactionQuery that = (TgeneTransactionQuery) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionQuery -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionQuery -*/ -public Object createInstance(){ - TgeneTransactionQuery instance=new TgeneTransactionQuery(); - instance.setPk(new TgeneTransactionQueryKey()); - return instance; -} -/**Clona la entidad TgeneTransactionQuery -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionQuery p=(TgeneTransactionQuery)this.clone(); - p.setPk((TgeneTransactionQueryKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQueryKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQueryKey.java.svn-base deleted file mode 100644 index 3f92a46..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionQueryKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONQUERY*/ -@Embeddable -public class TgeneTransactionQueryKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de la consulta -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionQueryKey(){} -/**Contructor de TgeneTransactionQueryKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pSequence Secuencia de la consulta -*/ -public TgeneTransactionQueryKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneTransactionQueryKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionQueryKey))return false; - TgeneTransactionQueryKey that = (TgeneTransactionQueryKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionQueryKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLink.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLink.java.svn-base deleted file mode 100644 index a97cb61..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLink.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONREPORTLINK*/ -@Entity(name="TgeneTransactionReportLink") -@Table(name="TGENETRANSACTIONREPORTLINK") -public class TgeneTransactionReportLink extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionReportLink -*/ -@EmbeddedId -private TgeneTransactionReportLinkKey pk; -@Column(name="PERSISTENCEUNIT", nullable=true) - -/** -* Nombre del persistence unit, si esta en null toma la coneccion por defecto de la compania -*/ -private String persistenceunit; - -@Column(name="REPORTNAME", nullable=false) - -/** -* Nombre del reporte -*/ -private String reportname; - -/**Contructor por defecto*/ -public TgeneTransactionReportLink(){ -} -/**Contructor de TgeneTransactionReportLink -@param pPk Clave Primaria del entity -@param pReportname Nombre del reporte -*/ -public TgeneTransactionReportLink(TgeneTransactionReportLinkKey pPk,String pReportname){ - this(); - pk=pPk; - reportname=pReportname; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionReportLink -*/ -public static TgeneTransactionReportLink find(EntityManager pEntityManager,TgeneTransactionReportLinkKey pKey) throws Exception{ - TgeneTransactionReportLink obj = pEntityManager.find(TgeneTransactionReportLink.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionReportLink -@return El objeto que referencia a la Clave primaria de TgeneTransactionReportLink -*/ -public TgeneTransactionReportLinkKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionReportLink -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionReportLink -*/ -public void setPk(TgeneTransactionReportLinkKey pPk){ - pk=pPk; -} -/**Obtiene el valor de persistenceunit -@return valor de persistenceunit*/ -public String getPersistenceunit(){ - return persistenceunit; -} -/**Fija el valor de persistenceunit -@param pPersistenceunit nuevo Valor de persistenceunit*/ -public void setPersistenceunit(String pPersistenceunit){ - persistenceunit=pPersistenceunit; -} - -/**Obtiene el valor de reportname -@return valor de reportname*/ -public String getReportname(){ - return reportname; -} -/**Fija el valor de reportname -@param pReportname nuevo Valor de reportname*/ -public void setReportname(String pReportname){ - reportname=pReportname; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionReportLink))return false; - TgeneTransactionReportLink that = (TgeneTransactionReportLink) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionReportLink -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionReportLink -*/ -public Object createInstance(){ - TgeneTransactionReportLink instance=new TgeneTransactionReportLink(); - instance.setPk(new TgeneTransactionReportLinkKey()); - return instance; -} -/**Clona la entidad TgeneTransactionReportLink -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionReportLink p=(TgeneTransactionReportLink)this.clone(); - p.setPk((TgeneTransactionReportLinkKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLinkKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLinkKey.java.svn-base deleted file mode 100644 index f10e1df..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneTransactionReportLinkKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONREPORTLINK*/ -@Embeddable -public class TgeneTransactionReportLinkKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneTransactionReportLinkKey(){} -/**Contructor de TgeneTransactionReportLinkKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pCompanycode Codigo de compania -*/ -public TgeneTransactionReportLinkKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pCompanycode){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - companycode=pCompanycode; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TgeneTransactionReportLinkKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionReportLinkKey))return false; - TgeneTransactionReportLinkKey that = (TgeneTransactionReportLinkKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionReportLinkKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneUserSolicitudeNumber.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneUserSolicitudeNumber.java.svn-base deleted file mode 100644 index f4a0953..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneUserSolicitudeNumber.java.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEUSERSOLICITUDENUMBER*/ -@Entity(name="TgeneUserSolicitudeNumber") -@Table(name="TGENEUSERSOLICITUDENUMBER") -public class TgeneUserSolicitudeNumber extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneUserSolicitudeNumber -*/ -@Id -@Column(name="USERCODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="SOLICITUDNUMBER", nullable=true) - -/** -* Numero de secuencia de solicitud asociada al usuario. -*/ -private String solicitudnumber; - -/**Contructor por defecto*/ -public TgeneUserSolicitudeNumber(){ -} -/**Contructor de TgeneUserSolicitudeNumber -@param pPk Clave Primaria del entity -*/ -public TgeneUserSolicitudeNumber(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneUserSolicitudeNumber -*/ -public static TgeneUserSolicitudeNumber find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneUserSolicitudeNumber obj = pEntityManager.find(TgeneUserSolicitudeNumber.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneUserSolicitudeNumber -@return El objeto que referencia a la Clave primaria de TgeneUserSolicitudeNumber -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneUserSolicitudeNumber -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneUserSolicitudeNumber -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de solicitudnumber -@return valor de solicitudnumber*/ -public String getSolicitudnumber(){ - return solicitudnumber; -} -/**Fija el valor de solicitudnumber -@param pSolicitudnumber nuevo Valor de solicitudnumber*/ -public void setSolicitudnumber(String pSolicitudnumber){ - solicitudnumber=pSolicitudnumber; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneUserSolicitudeNumber))return false; - TgeneUserSolicitudeNumber that = (TgeneUserSolicitudeNumber) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneUserSolicitudeNumber -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneUserSolicitudeNumber -*/ -public Object createInstance(){ - TgeneUserSolicitudeNumber instance=new TgeneUserSolicitudeNumber(); - return instance; -} -/**Clona la entidad TgeneUserSolicitudeNumber -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneUserSolicitudeNumber p=(TgeneUserSolicitudeNumber)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneWildcard.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneWildcard.java.svn-base deleted file mode 100644 index bce5b94..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/gene/.svn/text-base/TgeneWildcard.java.svn-base +++ /dev/null @@ -1,251 +0,0 @@ -package com.fp.persistence.pgeneral.gene; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEWILDCARD */ -@Entity(name = "TgeneWildcard") -@Table(name = "TGENEWILDCARD") -public class TgeneWildcard extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneWildcard - */ - @Id - @Column(name = "WILDCARD", nullable = false, updatable = false) - private String pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "PROCESSCODE", nullable = true) - /** - * null - */ - private String processcode; - - @Column(name = "CATALOGTYPEPROCESS", nullable = true) - /** - * Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia - */ - private String catalogtypeprocess; - - @Column(name = "CATALOGCODETYPEPROCESS", nullable = true) - /** - * Codigo de tabla de catalogo del proceso de negocio de la aplicacion - */ - private String catalogcodetypeprocess; - - /** Contructor por defecto */ - public TgeneWildcard() { - } - /** - * Contructor de TgeneWildcard - * - * @param pPk Clave Primaria del entity - */ - public TgeneWildcard(String pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneWildcard - */ - public static TgeneWildcard find(EntityManager pEntityManager, Object pKey) throws Exception { - TgeneWildcard obj = pEntityManager.find(TgeneWildcard.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneWildcard - * - * @return El objeto que referencia a la Clave primaria de TgeneWildcard - */ - public String getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneWildcard - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneWildcard - */ - public void setPk(String pPk) { - pk = pPk; - } - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de processcode - * - * @return valor de processcode - */ - public String getProcesscode() { - return processcode; - } - /** - * Fija el valor de processcode - * - * @param pProcesscode nuevo Valor de processcode - */ - public void setProcesscode(String pProcesscode) { - processcode = pProcesscode; - } - - /** - * Obtiene el valor de catalogtypeprocess - * - * @return valor de catalogtypeprocess - */ - public String getCatalogtypeprocess() { - return catalogtypeprocess; - } - /** - * Fija el valor de catalogtypeprocess - * - * @param pCatalogtypeprocess nuevo Valor de catalogtypeprocess - */ - public void setCatalogtypeprocess(String pCatalogtypeprocess) { - catalogtypeprocess = pCatalogtypeprocess; - } - - /** - * Obtiene el valor de catalogcodetypeprocess - * - * @return valor de catalogcodetypeprocess - */ - public String getCatalogcodetypeprocess() { - return catalogcodetypeprocess; - } - /** - * Fija el valor de catalogcodetypeprocess - * - * @param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess - */ - public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess) { - catalogcodetypeprocess = pCatalogcodetypeprocess; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneWildcard)) - return false; - TgeneWildcard that = (TgeneWildcard) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneWildcard - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneWildcard */ - public Object createInstance() { - TgeneWildcard instance = new TgeneWildcard(); - return instance; - } - /** - * Clona la entidad TgeneWildcard - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneWildcard p = (TgeneWildcard) this.clone(); - return p; - } - - //Metodos manuales. - - private static String HQL = "from TgeneWildcard " ; - - /** - * Metodo que entrega una lista de clases que resuelven los comodines contables. - * @param pEntityManager referencia a la session de la base de datos. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findAll(EntityManager pEntityManager) throws Exception { - Query qry = pEntityManager.createQuery(HQL); - List ldata = null; - ldata = qry.getResultList(); - return ldata; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/entries deleted file mode 100644 index b6c38d4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneFilesDetailKey.java -file - - - - -2022-07-28T03:40:29.319745Z -b3789e6e4979a97f7e382523e4ce4591 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3282 - -TgeneFiles.java -file - - - - -2022-07-28T03:40:29.319745Z -aad9bae8f7064111070b7eacee21f080 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3411 - -TgeneFilesDetail.java -file - - - - -2022-07-28T03:40:29.319745Z -6092ef74785099e4bf0c6fb8a796bf0f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7711 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFiles.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFiles.java.svn-base deleted file mode 100644 index 685b614..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFiles.java.svn-base +++ /dev/null @@ -1,120 +0,0 @@ -package com.fp.persistence.pgeneral.image; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEFILES*/ -@Entity(name="TgeneFiles") -@Table(name="TGENEFILES") -public class TgeneFiles extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneFiles -*/ -@Id -@Column(name="CODE" ,nullable=false, updatable=false) -private Integer pk; -/**Contructor por defecto*/ -public TgeneFiles(){ -} -/**Contructor de TgeneFiles -@param pPk Clave Primaria del entity -*/ -public TgeneFiles(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneFiles -*/ -public static TgeneFiles find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneFiles obj = pEntityManager.find(TgeneFiles.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneFiles -@return El objeto que referencia a la Clave primaria de TgeneFiles -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneFiles -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneFiles -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneFiles))return false; - TgeneFiles that = (TgeneFiles) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneFiles -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneFiles -*/ -public Object createInstance(){ - TgeneFiles instance=new TgeneFiles(); - return instance; -} -/**Clona la entidad TgeneFiles -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneFiles p=(TgeneFiles)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetail.java.svn-base deleted file mode 100644 index 42b99bc..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetail.java.svn-base +++ /dev/null @@ -1,325 +0,0 @@ -package com.fp.persistence.pgeneral.image; - -import java.sql.Timestamp; -import com.fp.dto.hb.Log; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEFILESDETAIL*/ -@Entity(name="TgeneFilesDetail") -@Table(name="TGENEFILESDETAIL") -public class TgeneFilesDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneFilesDetail -*/ -@EmbeddedId -private TgeneFilesDetailKey pk; -@Column(name="IMAGE", nullable=true) - -/** -* Imagen -*/ -private byte[] image; - -@Column(name="EXTENSION", nullable=true) - -/** -* Extension de la imagen. -*/ -private String extension; - -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual esta vigenete el registro de la imagen -*/ -private Timestamp datefrom; - -@Column(name="IMAGESIZE", nullable=true) - -/** -* Tamaño en bytes de la imagen -*/ -private Integer imagesize; - -@Column(name="CAPTUREDATE", nullable=true) - -/** -* Fecha de captura de la imagen. -*/ -private Date capturedate; - -@Column(name="INGRESSUSER", nullable=true) - -/** -* Codigo de usuario que ingreso la imagen -*/ -private String ingressuser; - -@Column(name="MODIFYUSER", nullable=true) - -/** -* Codigo de usuario que modificio la imagen -*/ -private String modifyuser; - -@Column(name="ORIGINCODE", nullable=true) - -/** -* Codigo de imagen -*/ -private Integer origincode; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion -*/ -private String description; - -@Column(name="CONTENTTYPE", nullable=true) - -/** -* Tipo de contenido -*/ -private String contenttype; - -@Column(name="NAME", nullable=true) - -/** -* null -*/ -private String name; - -/**Contructor por defecto*/ -public TgeneFilesDetail(){ -} -/**Contructor de TgeneFilesDetail -@param pPk Clave Primaria del entity -*/ -public TgeneFilesDetail(TgeneFilesDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneFilesDetail -*/ -public static TgeneFilesDetail find(EntityManager pEntityManager,TgeneFilesDetailKey pKey) throws Exception{ - TgeneFilesDetail obj = pEntityManager.find(TgeneFilesDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneFilesDetail -@return El objeto que referencia a la Clave primaria de TgeneFilesDetail -*/ -public TgeneFilesDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneFilesDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneFilesDetail -*/ -public void setPk(TgeneFilesDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de image -@return valor de image*/ -public byte[] getImage(){ - return image; -} -/**Fija el valor de image -@param pImage nuevo Valor de image*/ -public void setImage(byte[] pImage){ - image=pImage; -} - -/**Obtiene el valor de extension -@return valor de extension*/ -public String getExtension(){ - return extension; -} -/**Fija el valor de extension -@param pExtension nuevo Valor de extension*/ -public void setExtension(String pExtension){ - extension=pExtension; -} - -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de imagesize -@return valor de imagesize*/ -public Integer getImagesize(){ - return imagesize; -} -/**Fija el valor de imagesize -@param pImagesize nuevo Valor de imagesize*/ -public void setImagesize(Integer pImagesize){ - imagesize=pImagesize; -} - -/**Obtiene el valor de capturedate -@return valor de capturedate*/ -public Date getCapturedate(){ - return capturedate; -} -/**Fija el valor de capturedate -@param pCapturedate nuevo Valor de capturedate*/ -public void setCapturedate(Date pCapturedate){ - capturedate=pCapturedate; -} - -/**Obtiene el valor de ingressuser -@return valor de ingressuser*/ -public String getIngressuser(){ - return ingressuser; -} -/**Fija el valor de ingressuser -@param pIngressuser nuevo Valor de ingressuser*/ -public void setIngressuser(String pIngressuser){ - ingressuser=pIngressuser; -} - -/**Obtiene el valor de modifyuser -@return valor de modifyuser*/ -public String getModifyuser(){ - return modifyuser; -} -/**Fija el valor de modifyuser -@param pModifyuser nuevo Valor de modifyuser*/ -public void setModifyuser(String pModifyuser){ - modifyuser=pModifyuser; -} - -/**Obtiene el valor de origincode -@return valor de origincode*/ -public Integer getOrigincode(){ - return origincode; -} -/**Fija el valor de origincode -@param pOrigincode nuevo Valor de origincode*/ -public void setOrigincode(Integer pOrigincode){ - origincode=pOrigincode; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de contenttype -@return valor de contenttype*/ -public String getContenttype(){ - return contenttype; -} -/**Fija el valor de contenttype -@param pContenttype nuevo Valor de contenttype*/ -public void setContenttype(String pContenttype){ - contenttype=pContenttype; -} - -/**Obtiene el valor de name -@return valor de name*/ -public String getName(){ - return name; -} -/**Fija el valor de name -@param pName nuevo Valor de name*/ -public void setName(String pName){ - name=pName; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneFilesDetail))return false; - TgeneFilesDetail that = (TgeneFilesDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneFilesDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneFilesDetail -*/ -public Object createInstance(){ - TgeneFilesDetail instance=new TgeneFilesDetail(); - instance.setPk(new TgeneFilesDetailKey()); - return instance; -} -/**Clona la entidad TgeneFilesDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneFilesDetail p=(TgeneFilesDetail)this.clone(); - p.setPk((TgeneFilesDetailKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetailKey.java.svn-base deleted file mode 100644 index 321ece4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/image/.svn/text-base/TgeneFilesDetailKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pgeneral.image; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEFILESDETAIL*/ -@Embeddable -public class TgeneFilesDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CODE", nullable=false,updatable=false) - -/** -* Codigo de imagen. -*/ -private Integer code; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esrta vigente el registro. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgeneFilesDetailKey(){} -/**Contructor de TgeneFilesDetailKey -@param pCode Codigo de imagen. -@param pDateto Fecha hasta la cual esrta vigente el registro. -*/ -public TgeneFilesDetailKey(Integer pCode,Timestamp pDateto){ - code=pCode; - dateto=pDateto; -} -/**Obtiene el valor de code -@return valor de code*/ -public Integer getCode(){ - return code; -} -/**Fija el valor de code -@param pCode nuevo Valor de code*/ -public void setCode(Integer pCode){ - code=pCode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacion de la comparacion de TgeneFilesDetailKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneFilesDetailKey))return false; - TgeneFilesDetailKey that = (TgeneFilesDetailKey) o; - if (this.getCode() == null || that.getCode() == null){ - return false; - } - if (! this.getCode().equals(that.getCode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneFilesDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCode() == null ? 0 : this.getCode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/entries deleted file mode 100644 index 51ce799..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneInstallmentType.java -file - - - - -2022-07-28T03:40:29.618746Z -909cb857a704a5b0e75ef5ff5e74be22 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5137 - -TgeneInstallmentTypeKey.java -file - - - - -2022-07-28T03:40:29.618746Z -a2bdd96f24408cb0e7d66712c452c0c8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3747 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentType.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentType.java.svn-base deleted file mode 100644 index 7c452cf..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentType.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.persistence.pgeneral.installment; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEINSTALLMENTTYPE*/ -@Entity(name="TgeneInstallmentType") -@Table(name="TGENEINSTALLMENTTYPE") -public class TgeneInstallmentType extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneInstallmentType -*/ -@EmbeddedId -private TgeneInstallmentTypeKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del tipo de tabla de pagos -*/ -private String description; - -@Column(name="COMMAND", nullable=true) - -/** -* Comando encargado de la generacion de tabla de pagos -*/ -private String command; - -/**Contructor por defecto*/ -public TgeneInstallmentType(){ -} -/**Contructor de TgeneInstallmentType -@param pPk Clave Primaria del entity -*/ -public TgeneInstallmentType(TgeneInstallmentTypeKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneInstallmentType -*/ -public static TgeneInstallmentType find(EntityManager pEntityManager,TgeneInstallmentTypeKey pKey) throws Exception{ - TgeneInstallmentType obj = pEntityManager.find(TgeneInstallmentType.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneInstallmentType -@return El objeto que referencia a la Clave primaria de TgeneInstallmentType -*/ -public TgeneInstallmentTypeKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneInstallmentType -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneInstallmentType -*/ -public void setPk(TgeneInstallmentTypeKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de command -@return valor de command*/ -public String getCommand(){ - return command; -} -/**Fija el valor de command -@param pCommand nuevo Valor de command*/ -public void setCommand(String pCommand){ - command=pCommand; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneInstallmentType))return false; - TgeneInstallmentType that = (TgeneInstallmentType) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneInstallmentType -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneInstallmentType -*/ -public Object createInstance(){ - TgeneInstallmentType instance=new TgeneInstallmentType(); - instance.setPk(new TgeneInstallmentTypeKey()); - return instance; -} -/**Clona la entidad TgeneInstallmentType -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneInstallmentType p=(TgeneInstallmentType)this.clone(); - p.setPk((TgeneInstallmentTypeKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentTypeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentTypeKey.java.svn-base deleted file mode 100644 index 49fec30..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/installment/.svn/text-base/TgeneInstallmentTypeKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.installment; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEINSTALLMENTTYPE*/ -@Embeddable -public class TgeneInstallmentTypeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="INSTALLMENTTYPE", nullable=false,updatable=false) - -/** -* Codigo de tipo de tabla de amortizacion -*/ -private String installmenttype; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo asociado al comando de tabla de amortizacion -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneInstallmentTypeKey(){} -/**Contructor de TgeneInstallmentTypeKey -@param pInstallmenttype Codigo de tipo de tabla de amortizacion -@param pModulecode Codigo de modulo asociado al comando de tabla de amortizacion -*/ -public TgeneInstallmentTypeKey(String pInstallmenttype,String pModulecode){ - installmenttype=pInstallmenttype; - modulecode=pModulecode; -} -/**Obtiene el valor de installmenttype -@return valor de installmenttype*/ -public String getInstallmenttype(){ - return installmenttype; -} -/**Fija el valor de installmenttype -@param pInstallmenttype nuevo Valor de installmenttype*/ -public void setInstallmenttype(String pInstallmenttype){ - installmenttype=pInstallmenttype; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneInstallmentTypeKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneInstallmentTypeKey))return false; - TgeneInstallmentTypeKey that = (TgeneInstallmentTypeKey) o; - if (this.getInstallmenttype() == null || that.getInstallmenttype() == null){ - return false; - } - if (! this.getInstallmenttype().equals(that.getInstallmenttype())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneInstallmentTypeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getInstallmenttype() == null ? 0 : this.getInstallmenttype().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/entries deleted file mode 100644 index bd32ba5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneTransactionLog.java -file - - - - -2022-07-28T03:40:29.184744Z -11c3f99302aed2f1f6b1673d5eac9265 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13098 - -TgeneTransactionMessage.java -file - - - - -2022-07-28T03:40:29.184744Z -63716847148e1915fd2bb40152ac4fa6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4506 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.netbeans-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.netbeans-base deleted file mode 100644 index 29f0b9c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.netbeans-base +++ /dev/null @@ -1,507 +0,0 @@ -package com.fp.persistence.pgeneral.log; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONLOG*/ -@Entity(name="TgeneTransactionLog") -@Table(name="TGENETRANSACTIONLOG") -public class TgeneTransactionLog extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionLog -*/ -@Id -@Column(name="JOURNALID" ,nullable=false, updatable=false) -private String pk; -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable en la que se ejecuta la transaccion -*/ -private Date accountingdate; - -@Column(name="SERVER", nullable=true) - -/** -* Nombre del servidor de applicaicones desde el cual se ejecuta una transaccion -*/ -private String server; - -@Column(name="REALDATE", nullable=true) - -/** -* Fecha real de ejecucion de una transaccion -*/ -private Timestamp realdate; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal de ejecucion de la transaccion. -*/ -private Integer branchcode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina de ejecucion de la transaccion -*/ -private Integer officecode; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal desde el cual se ejecuto la transaccion. -*/ -private String terminalcode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario que ejecuta la transaccion -*/ -private String usercode; - -@Column(name="DURATION", nullable=true) - -/** -* Tiempo que toma la ejeciucion de la transaccion -*/ -private BigDecimal duration; - -@Column(name="RESULTCODE", nullable=true) - -/** -* Codigo de resultado de ejecucion de la transaccion. -*/ -private String resultcode; - -@Column(name="USERMESSAGE", nullable=true) - -/** -* Mensaje de usuario resultado de la ejecucion de la transaccion. -*/ -private String usermessage; - -@Column(name="ACCOUNT", nullable=true) - -/** -* Numero de cuenta que se afecta en una transaccion -*/ -private String account; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona asociado a la cuenta -*/ -private Integer personcode; - -@Column(name="SOLICITUDENUMBER", nullable=true) - -/** -* Nuemero de solicitud -*/ -private String solicitudenumber; - -@Column(name="METHOD", nullable=true) - -/** -* Metod que origina la ejecucion de la transaccion, Save, Query, Reporte -*/ -private String method; - -@Column(name="ADITIONALDATA", nullable=true) - -/** -* Texto libre -*/ -private String aditionaldata; - -@Column(name="BROWSER", nullable=true) - -/** -* Navegador de trabajo -*/ -private String browser; - -@Column(name="OPERATIVSYSTEM", nullable=true) - -/** -* Sistema operativo de la mquina cliente -*/ -private String operativsystem; - -/**Contructor por defecto*/ -public TgeneTransactionLog(){ -} -/**Contructor de TgeneTransactionLog -@param pPk Clave Primaria del entity -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneTransactionLog(String pPk,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionLog -*/ -public static TgeneTransactionLog find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneTransactionLog obj = pEntityManager.find(TgeneTransactionLog.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionLog -@return El objeto que referencia a la Clave primaria de TgeneTransactionLog -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionLog -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionLog -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Date getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Date pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de server -@return valor de server*/ -public String getServer(){ - return server; -} -/**Fija el valor de server -@param pServer nuevo Valor de server*/ -public void setServer(String pServer){ - server=pServer; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de duration -@return valor de duration*/ -public BigDecimal getDuration(){ - return duration; -} -/**Fija el valor de duration -@param pDuration nuevo Valor de duration*/ -public void setDuration(BigDecimal pDuration){ - duration=pDuration; -} - -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de usermessage -@return valor de usermessage*/ -public String getUsermessage(){ - return usermessage; -} -/**Fija el valor de usermessage -@param pUsermessage nuevo Valor de usermessage*/ -public void setUsermessage(String pUsermessage){ - usermessage=pUsermessage; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de solicitudenumber -@return valor de solicitudenumber*/ -public String getSolicitudenumber(){ - return solicitudenumber; -} -/**Fija el valor de solicitudenumber -@param pSolicitudenumber nuevo Valor de solicitudenumber*/ -public void setSolicitudenumber(String pSolicitudenumber){ - solicitudenumber=pSolicitudenumber; -} - -/**Obtiene el valor de method -@return valor de method*/ -public String getMethod(){ - return method; -} -/**Fija el valor de method -@param pMethod nuevo Valor de method*/ -public void setMethod(String pMethod){ - method=pMethod; -} - -/**Obtiene el valor de aditionaldata -@return valor de aditionaldata*/ -public String getAditionaldata(){ - return aditionaldata; -} -/**Fija el valor de aditionaldata -@param pAditionaldata nuevo Valor de aditionaldata*/ -public void setAditionaldata(String pAditionaldata){ - aditionaldata=pAditionaldata; -} - -/**Obtiene el valor de browser -@return valor de browser*/ -public String getBrowser(){ - return browser; -} -/**Fija el valor de browser -@param pBrowser nuevo Valor de browser*/ -public void setBrowser(String pBrowser){ - browser=pBrowser; -} - -/**Obtiene el valor de operativsystem -@return valor de operativsystem*/ -public String getOperativsystem(){ - return operativsystem; -} -/**Fija el valor de operativsystem -@param pOperativsystem nuevo Valor de operativsystem*/ -public void setOperativsystem(String pOperativsystem){ - operativsystem=pOperativsystem; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionLog))return false; - TgeneTransactionLog that = (TgeneTransactionLog) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneTransactionLog -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneTransactionLog -*/ -public Object createInstance(){ - TgeneTransactionLog instance=new TgeneTransactionLog(); - return instance; -} -/**Clona la entidad TgeneTransactionLog -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionLog p=(TgeneTransactionLog)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.svn-base deleted file mode 100644 index 29f0b9c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionLog.java.svn-base +++ /dev/null @@ -1,507 +0,0 @@ -package com.fp.persistence.pgeneral.log; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONLOG*/ -@Entity(name="TgeneTransactionLog") -@Table(name="TGENETRANSACTIONLOG") -public class TgeneTransactionLog extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionLog -*/ -@Id -@Column(name="JOURNALID" ,nullable=false, updatable=false) -private String pk; -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable en la que se ejecuta la transaccion -*/ -private Date accountingdate; - -@Column(name="SERVER", nullable=true) - -/** -* Nombre del servidor de applicaicones desde el cual se ejecuta una transaccion -*/ -private String server; - -@Column(name="REALDATE", nullable=true) - -/** -* Fecha real de ejecucion de una transaccion -*/ -private Timestamp realdate; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal de ejecucion de la transaccion. -*/ -private Integer branchcode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina de ejecucion de la transaccion -*/ -private Integer officecode; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal desde el cual se ejecuto la transaccion. -*/ -private String terminalcode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario que ejecuta la transaccion -*/ -private String usercode; - -@Column(name="DURATION", nullable=true) - -/** -* Tiempo que toma la ejeciucion de la transaccion -*/ -private BigDecimal duration; - -@Column(name="RESULTCODE", nullable=true) - -/** -* Codigo de resultado de ejecucion de la transaccion. -*/ -private String resultcode; - -@Column(name="USERMESSAGE", nullable=true) - -/** -* Mensaje de usuario resultado de la ejecucion de la transaccion. -*/ -private String usermessage; - -@Column(name="ACCOUNT", nullable=true) - -/** -* Numero de cuenta que se afecta en una transaccion -*/ -private String account; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona asociado a la cuenta -*/ -private Integer personcode; - -@Column(name="SOLICITUDENUMBER", nullable=true) - -/** -* Nuemero de solicitud -*/ -private String solicitudenumber; - -@Column(name="METHOD", nullable=true) - -/** -* Metod que origina la ejecucion de la transaccion, Save, Query, Reporte -*/ -private String method; - -@Column(name="ADITIONALDATA", nullable=true) - -/** -* Texto libre -*/ -private String aditionaldata; - -@Column(name="BROWSER", nullable=true) - -/** -* Navegador de trabajo -*/ -private String browser; - -@Column(name="OPERATIVSYSTEM", nullable=true) - -/** -* Sistema operativo de la mquina cliente -*/ -private String operativsystem; - -/**Contructor por defecto*/ -public TgeneTransactionLog(){ -} -/**Contructor de TgeneTransactionLog -@param pPk Clave Primaria del entity -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneTransactionLog(String pPk,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionLog -*/ -public static TgeneTransactionLog find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneTransactionLog obj = pEntityManager.find(TgeneTransactionLog.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionLog -@return El objeto que referencia a la Clave primaria de TgeneTransactionLog -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionLog -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionLog -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Date getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Date pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de server -@return valor de server*/ -public String getServer(){ - return server; -} -/**Fija el valor de server -@param pServer nuevo Valor de server*/ -public void setServer(String pServer){ - server=pServer; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de duration -@return valor de duration*/ -public BigDecimal getDuration(){ - return duration; -} -/**Fija el valor de duration -@param pDuration nuevo Valor de duration*/ -public void setDuration(BigDecimal pDuration){ - duration=pDuration; -} - -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de usermessage -@return valor de usermessage*/ -public String getUsermessage(){ - return usermessage; -} -/**Fija el valor de usermessage -@param pUsermessage nuevo Valor de usermessage*/ -public void setUsermessage(String pUsermessage){ - usermessage=pUsermessage; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de solicitudenumber -@return valor de solicitudenumber*/ -public String getSolicitudenumber(){ - return solicitudenumber; -} -/**Fija el valor de solicitudenumber -@param pSolicitudenumber nuevo Valor de solicitudenumber*/ -public void setSolicitudenumber(String pSolicitudenumber){ - solicitudenumber=pSolicitudenumber; -} - -/**Obtiene el valor de method -@return valor de method*/ -public String getMethod(){ - return method; -} -/**Fija el valor de method -@param pMethod nuevo Valor de method*/ -public void setMethod(String pMethod){ - method=pMethod; -} - -/**Obtiene el valor de aditionaldata -@return valor de aditionaldata*/ -public String getAditionaldata(){ - return aditionaldata; -} -/**Fija el valor de aditionaldata -@param pAditionaldata nuevo Valor de aditionaldata*/ -public void setAditionaldata(String pAditionaldata){ - aditionaldata=pAditionaldata; -} - -/**Obtiene el valor de browser -@return valor de browser*/ -public String getBrowser(){ - return browser; -} -/**Fija el valor de browser -@param pBrowser nuevo Valor de browser*/ -public void setBrowser(String pBrowser){ - browser=pBrowser; -} - -/**Obtiene el valor de operativsystem -@return valor de operativsystem*/ -public String getOperativsystem(){ - return operativsystem; -} -/**Fija el valor de operativsystem -@param pOperativsystem nuevo Valor de operativsystem*/ -public void setOperativsystem(String pOperativsystem){ - operativsystem=pOperativsystem; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionLog))return false; - TgeneTransactionLog that = (TgeneTransactionLog) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneTransactionLog -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneTransactionLog -*/ -public Object createInstance(){ - TgeneTransactionLog instance=new TgeneTransactionLog(); - return instance; -} -/**Clona la entidad TgeneTransactionLog -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionLog p=(TgeneTransactionLog)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionMessage.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionMessage.java.svn-base deleted file mode 100644 index 02702e8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/log/.svn/text-base/TgeneTransactionMessage.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.log; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONMESSAGE*/ -@Entity(name="TgeneTransactionMessage") -@Table(name="TGENETRANSACTIONMESSAGE") -public class TgeneTransactionMessage extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionMessage -*/ -@Id -@Column(name="JOURNALID" ,nullable=false, updatable=false) -private String pk; -@Column(name="DATAIN", nullable=true) - -/** -* Datos de entrada de ejecucion de la transaccion. -*/ -private String datain; - -@Column(name="DATAOUT", nullable=true) - -/** -* Datos de salida resltado de la ejecucion de la transaccion. -*/ -private String dataout; - -/**Contructor por defecto*/ -public TgeneTransactionMessage(){ -} -/**Contructor de TgeneTransactionMessage -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionMessage(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionMessage -*/ -public static TgeneTransactionMessage find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneTransactionMessage obj = pEntityManager.find(TgeneTransactionMessage.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionMessage -@return El objeto que referencia a la Clave primaria de TgeneTransactionMessage -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionMessage -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionMessage -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de datain -@return valor de datain*/ -public String getDatain(){ - return datain; -} -/**Fija el valor de datain -@param pDatain nuevo Valor de datain*/ -public void setDatain(String pDatain){ - datain=pDatain; -} - -/**Obtiene el valor de dataout -@return valor de dataout*/ -public String getDataout(){ - return dataout; -} -/**Fija el valor de dataout -@param pDataout nuevo Valor de dataout*/ -public void setDataout(String pDataout){ - dataout=pDataout; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionMessage))return false; - TgeneTransactionMessage that = (TgeneTransactionMessage) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionMessage -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionMessage -*/ -public Object createInstance(){ - TgeneTransactionMessage instance=new TgeneTransactionMessage(); - return instance; -} -/**Clona la entidad TgeneTransactionMessage -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionMessage p=(TgeneTransactionMessage)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/entries deleted file mode 100644 index b397094..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/entries +++ /dev/null @@ -1,504 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneMenuLevel.java -file - - - - -2022-07-28T03:40:29.878747Z -8d99c2d2ec15ea0dfb12c99d21a02025 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5642 - -TgeneMenuSubLevelDescKey.java -file - - - - -2022-07-28T03:40:29.878747Z -2dc09053e6bbb25e59001585efa17da0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4988 - -TgeneMenuSubLevelKey.java -file - - - - -2022-07-28T03:40:29.879747Z -519adb8d46309bde3934a8cdcc7826c5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4137 - -TgeneMenuLevelTran.java -file - - - - -2022-07-28T03:40:29.879747Z -4552248552bf21cdca23f6b28261e247 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5553 - -TgeneMenu.java -file - - - - -2022-07-28T03:40:29.879747Z -21b49a99053658ce3102af917b66308d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3800 - -TgeneMenuLevelDescKey.java -file - - - - -2022-07-28T03:40:29.879747Z -031a9b5c73bf129517b737fe190d6199 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4231 - -TgeneMenuSubLevelTranKey.java -file - - - - -2022-07-28T03:40:29.880747Z -a192e9d188fdbc9bb9b6579af6ad88b4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7040 - -TgeneMenuLevelKey.java -file - - - - -2022-07-28T03:40:29.880747Z -698a2e9cce3b76b80972529c3bcca8a9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3382 - -TgeneMenuProfile.java -file - - - - -2022-07-28T03:40:29.880747Z -50c6a634c55de54b3e52ad75f19c89e5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4819 - -TgeneMenuSubLevelDesc.java -file - - - - -2022-07-28T03:40:29.880747Z -cd2b63de13fc510dbb88219b9bbe767d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6160 - -TgeneMenuSubLevel.java -file - - - - -2022-07-28T03:40:29.881747Z -faaea36cb2bddca4194d2434e522a7d4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5436 - -TgeneMenuLevelTranKey.java -file - - - - -2022-07-28T03:40:29.881747Z -0bdd68692dc3d59891bb08ae94ccd318 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6285 - -TgeneMenuLevelDesc.java -file - - - - -2022-07-28T03:40:29.881747Z -15401ee00c6488129d7becd84a246ac4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5890 - -TgeneMenuSubLevelTran.java -file - - - - -2022-07-28T03:40:29.881747Z -6ee4550dab295494f1d67b5224bc3d43 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4336 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenu.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenu.java.svn-base deleted file mode 100644 index 664a97e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenu.java.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENU*/ -@Entity(name="TgeneMenu") -@Table(name="TGENEMENU") -public class TgeneMenu extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenu -*/ -@Id -@Column(name="MENUCODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default del menu -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneMenu(){ -} -/**Contructor de TgeneMenu -@param pPk Clave Primaria del entity -*/ -public TgeneMenu(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenu -*/ -public static TgeneMenu find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneMenu obj = pEntityManager.find(TgeneMenu.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenu -@return El objeto que referencia a la Clave primaria de TgeneMenu -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenu -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenu -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenu))return false; - TgeneMenu that = (TgeneMenu) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenu -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenu -*/ -public Object createInstance(){ - TgeneMenu instance=new TgeneMenu(); - return instance; -} -/**Clona la entidad TgeneMenu -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenu p=(TgeneMenu)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevel.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevel.java.svn-base deleted file mode 100644 index 8aa43f1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevel.java.svn-base +++ /dev/null @@ -1,186 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.core.exception.CoreException; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.exception.CommondbException; - -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENULEVEL*/ -@Entity(name="TgeneMenuLevel") -@Table(name="TGENEMENULEVEL") -public class TgeneMenuLevel extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuLevel -*/ -@EmbeddedId -private TgeneMenuLevelKey pk; -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de presentacion de la agrupacion en el primer nivel del menu -*/ -private Integer presentationorder; - -@Column(name="HAVESUBLEVEL", nullable=true) - -/** -* Y, Indica que tiene un subnivel de menu. -*/ -private String havesublevel; - -/**Contructor por defecto*/ -public TgeneMenuLevel(){ -} -/**Contructor de TgeneMenuLevel -@param pPk Clave Primaria del entity -*/ -public TgeneMenuLevel(TgeneMenuLevelKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuLevel -*/ -public static TgeneMenuLevel find(EntityManager pEntityManager,TgeneMenuLevelKey pKey) throws Exception{ - TgeneMenuLevel obj = pEntityManager.find(TgeneMenuLevel.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuLevel -@return El objeto que referencia a la Clave primaria de TgeneMenuLevel -*/ -public TgeneMenuLevelKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuLevel -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuLevel -*/ -public void setPk(TgeneMenuLevelKey pPk){ - pk=pPk; -} -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -/**Obtiene el valor de havesublevel -@return valor de havesublevel*/ -public String getHavesublevel(){ - return havesublevel; -} -/**Fija el valor de havesublevel -@param pHavesublevel nuevo Valor de havesublevel*/ -public void setHavesublevel(String pHavesublevel){ - havesublevel=pHavesublevel; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuLevel))return false; - TgeneMenuLevel that = (TgeneMenuLevel) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuLevel -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuLevel -*/ -public Object createInstance(){ - TgeneMenuLevel instance=new TgeneMenuLevel(); - instance.setPk(new TgeneMenuLevelKey()); - return instance; -} -/**Clona la entidad TgeneMenuLevel -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuLevel p=(TgeneMenuLevel)this.clone(); - p.setPk((TgeneMenuLevelKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuLevel. */ - private static final String JPQL_MENU_LEVEL = "from TgeneMenuLevel tmg " + " where tmg.pk.menucode = :menucode" - + " order by tmg.presentationorder "; - /** - * Metodo que entrega la definicion del primer nivel del menu. - * - * @param pMenucode Codigo de menu. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByMenuCode(EntityManager pEntityManager, Integer pMenucode) throws Exception { - List lmenu = null; - Query qry = pEntityManager.createQuery(TgeneMenuLevel.JPQL_MENU_LEVEL); - qry.setParameter("menucode", pMenucode); - lmenu = qry.getResultList(); - return lmenu; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDesc.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDesc.java.svn-base deleted file mode 100644 index bc6d605..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDesc.java.svn-base +++ /dev/null @@ -1,188 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENULEVELDESC*/ -@Entity(name="TgeneMenuLevelDesc") -@Table(name="TGENEMENULEVELDESC") -public class TgeneMenuLevelDesc extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuLevelDesc -*/ -@EmbeddedId -private TgeneMenuLevelDescKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion por idioma de la agrupacion del menu -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneMenuLevelDesc(){ -} -/**Contructor de TgeneMenuLevelDesc -@param pPk Clave Primaria del entity -*/ -public TgeneMenuLevelDesc(TgeneMenuLevelDescKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuLevelDesc -*/ -public static TgeneMenuLevelDesc find(EntityManager pEntityManager,TgeneMenuLevelDescKey pKey) throws Exception{ - TgeneMenuLevelDesc obj = pEntityManager.find(TgeneMenuLevelDesc.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuLevelDesc -@return El objeto que referencia a la Clave primaria de TgeneMenuLevelDesc -*/ -public TgeneMenuLevelDescKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuLevelDesc -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuLevelDesc -*/ -public void setPk(TgeneMenuLevelDescKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuLevelDesc))return false; - TgeneMenuLevelDesc that = (TgeneMenuLevelDesc) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuLevelDesc -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuLevelDesc -*/ -public Object createInstance(){ - TgeneMenuLevelDesc instance=new TgeneMenuLevelDesc(); - instance.setPk(new TgeneMenuLevelDescKey()); - return instance; -} -/**Clona la entidad TgeneMenuLevelDesc -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuLevelDesc p=(TgeneMenuLevelDesc)this.clone(); - p.setPk((TgeneMenuLevelDescKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuLevelDesc. */ - private static final String JPQL_MENU_GRUP_DESC = "from TgeneMenuLevelDesc tmgd" + " where tmgd.pk.menucode = :menucode" - + " and tmgd.pk.levelcode = :levelcode" + " and tmgd.pk.languagecode = :languagecode"; - /** - * Metodo que entrega descripcion del primer nivel del menu. - * - * @param pmenucode Codigo de menu. - * @param pLevel Codigo de nivel. - * @param planguagecode Codigo de lenguaje del usuario. - * @return TgeneMenuLevelDesc - * @throws Exception - */ - public static TgeneMenuLevelDesc find(EntityManager pEntityManager, Integer pmenucode, Integer pLevel, String planguagecode) throws Exception { - Query qry = pEntityManager.createQuery(TgeneMenuLevelDesc.JPQL_MENU_GRUP_DESC); - qry.setParameter("menucode", pmenucode); - qry.setParameter("levelcode", pLevel); - qry.setParameter("languagecode", planguagecode); - try { - return (TgeneMenuLevelDesc) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDescKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDescKey.java.svn-base deleted file mode 100644 index 4ef6319..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelDescKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENULEVELDESC*/ -@Embeddable -public class TgeneMenuLevelDescKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu -*/ -private Integer levelcode; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -/**Contructor por defecto*/ -public TgeneMenuLevelDescKey(){} -/**Contructor de TgeneMenuLevelDescKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu -@param pLanguagecode Codigo de idioma -*/ -public TgeneMenuLevelDescKey(Integer pMenucode,Integer pLevelcode,String pLanguagecode){ - menucode=pMenucode; - levelcode=pLevelcode; - languagecode=pLanguagecode; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Implementacin de la comparacin de TgeneMenuLevelDescKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuLevelDescKey))return false; - TgeneMenuLevelDescKey that = (TgeneMenuLevelDescKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuLevelDescKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelKey.java.svn-base deleted file mode 100644 index 98102b2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENULEVEL*/ -@Embeddable -public class TgeneMenuLevelKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu. -*/ -private Integer levelcode; - -/**Contructor por defecto*/ -public TgeneMenuLevelKey(){} -/**Contructor de TgeneMenuLevelKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu. -*/ -public TgeneMenuLevelKey(Integer pMenucode,Integer pLevelcode){ - menucode=pMenucode; - levelcode=pLevelcode; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Implementacin de la comparacin de TgeneMenuLevelKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuLevelKey))return false; - TgeneMenuLevelKey that = (TgeneMenuLevelKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuLevelKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTran.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTran.java.svn-base deleted file mode 100644 index 767c9f4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTran.java.svn-base +++ /dev/null @@ -1,168 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.exception.CommondbException; - -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENULEVELTRAN*/ -@Entity(name="TgeneMenuLevelTran") -@Table(name="TGENEMENULEVELTRAN") -public class TgeneMenuLevelTran extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuLevelTran -*/ -@EmbeddedId -private TgeneMenuLevelTranKey pk; -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de presentacion de las transacciones dentro de la agrupacion que forma parte delprimer nivel del menu. -*/ -private Integer presentationorder; - -/**Contructor por defecto*/ -public TgeneMenuLevelTran(){ -} -/**Contructor de TgeneMenuLevelTran -@param pPk Clave Primaria del entity -*/ -public TgeneMenuLevelTran(TgeneMenuLevelTranKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuLevelTran -*/ -public static TgeneMenuLevelTran find(EntityManager pEntityManager,TgeneMenuLevelTranKey pKey) throws Exception{ - TgeneMenuLevelTran obj = pEntityManager.find(TgeneMenuLevelTran.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuLevelTran -@return El objeto que referencia a la Clave primaria de TgeneMenuLevelTran -*/ -public TgeneMenuLevelTranKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuLevelTran -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuLevelTran -*/ -public void setPk(TgeneMenuLevelTranKey pPk){ - pk=pPk; -} -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuLevelTran))return false; - TgeneMenuLevelTran that = (TgeneMenuLevelTran) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuLevelTran -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuLevelTran -*/ -public Object createInstance(){ - TgeneMenuLevelTran instance=new TgeneMenuLevelTran(); - instance.setPk(new TgeneMenuLevelTranKey()); - return instance; -} -/**Clona la entidad TgeneMenuLevelTran -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuLevelTran p=(TgeneMenuLevelTran)this.clone(); - p.setPk((TgeneMenuLevelTranKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuGroup. */ - private static final String JPQL_MENUGRP_TRAN = "from TgeneMenuLevelTran tmgt " + " where tmgt.pk.menucode = :menucode" - + " and tmgt.pk.groupcode = :groupcode" + " order by tmgt.pk.transactionmodule,tmgt.pk.transactioncode "; - /** - * Metodo que entrega transacciones asociadas al codigo de menu y codigo de nivel. - * - * @param pMenucode Codigo de menu. - * @param pLevel Codigo de Nivel. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List findByCodeMenuNivel(EntityManager pEntityManager, Integer pMenucode, Integer pLevel) throws Exception { - List lmenu = null; - Query qry = pEntityManager.createQuery(TgeneMenuLevelTran.JPQL_MENUGRP_TRAN); - qry.setParameter("menucode", pMenucode); - qry.setParameter("groupcode", pLevel); - lmenu = qry.getResultList(); - return lmenu; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTranKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTranKey.java.svn-base deleted file mode 100644 index bad775a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuLevelTranKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENULEVELTRAN*/ -@Embeddable -public class TgeneMenuLevelTranKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu. -*/ -private Integer levelcode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneMenuLevelTranKey(){} -/**Contructor de TgeneMenuLevelTranKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu. -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneMenuLevelTranKey(Integer pMenucode,Integer pLevelcode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - menucode=pMenucode; - levelcode=pLevelcode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacin de la comparacin de TgeneMenuLevelTranKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuLevelTranKey))return false; - TgeneMenuLevelTranKey that = (TgeneMenuLevelTranKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuLevelTranKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuProfile.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuProfile.java.svn-base deleted file mode 100644 index b884c2f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuProfile.java.svn-base +++ /dev/null @@ -1,163 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; - -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENUPROFILE*/ -@Entity(name="TgeneMenuProfile") -@Table(name="TGENEMENUPROFILE") -public class TgeneMenuProfile extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuProfile -*/ -@Id -@Column(name="PROFILECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="MENUCODE", nullable=true) - -/** -* Cdigo del tem de men -*/ -private Integer menucode; - -/**Contructor por defecto*/ -public TgeneMenuProfile(){ -} -/**Contructor de TgeneMenuProfile -@param pPk Clave Primaria del entity -*/ -public TgeneMenuProfile(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuProfile -*/ -public static TgeneMenuProfile find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneMenuProfile obj = pEntityManager.find(TgeneMenuProfile.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuProfile -@return El objeto que referencia a la Clave primaria de TgeneMenuProfile -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuProfile -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuProfile -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuProfile))return false; - TgeneMenuProfile that = (TgeneMenuProfile) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuProfile -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuProfile -*/ -public Object createInstance(){ - TgeneMenuProfile instance=new TgeneMenuProfile(); - return instance; -} -/**Clona la entidad TgeneMenuProfile -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuProfile p=(TgeneMenuProfile)this.clone(); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuProfile. */ - private static final String JPQL_MENU_PROFILE = "from TgeneMenuProfile tmp " + " where tmp.pk = :profilecode"; - /** - * Metodo que entrega datos de TgeneMenuProfile. - * - * @param pProfile Codigo de perfil del usuario. - * @return TgeneMenuProfile - * @throws Exception - */ - public static TgeneMenuProfile findByCodePerfilUsuario(EntityManager pEntityManager, String pProfile) throws Exception { - Query qry = pEntityManager.createQuery(TgeneMenuProfile.JPQL_MENU_PROFILE); - qry.setParameter("profilecode", pProfile); - try { - return (TgeneMenuProfile) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevel.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevel.java.svn-base deleted file mode 100644 index c32b0bd..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevel.java.svn-base +++ /dev/null @@ -1,168 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.exception.CommondbException; - -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENUSUBLEVEL*/ -@Entity(name="TgeneMenuSubLevel") -@Table(name="TGENEMENUSUBLEVEL") -public class TgeneMenuSubLevel extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuSubLevel -*/ -@EmbeddedId -private TgeneMenuSubLevelKey pk; -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de presentacion de la agrupacion en el primer nivel del menu -*/ -private Integer presentationorder; - -/**Contructor por defecto*/ -public TgeneMenuSubLevel(){ -} -/**Contructor de TgeneMenuSubLevel -@param pPk Clave Primaria del entity -*/ -public TgeneMenuSubLevel(TgeneMenuSubLevelKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuSubLevel -*/ -public static TgeneMenuSubLevel find(EntityManager pEntityManager,TgeneMenuSubLevelKey pKey) throws Exception{ - TgeneMenuSubLevel obj = pEntityManager.find(TgeneMenuSubLevel.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuSubLevel -@return El objeto que referencia a la Clave primaria de TgeneMenuSubLevel -*/ -public TgeneMenuSubLevelKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuSubLevel -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuSubLevel -*/ -public void setPk(TgeneMenuSubLevelKey pPk){ - pk=pPk; -} -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuSubLevel))return false; - TgeneMenuSubLevel that = (TgeneMenuSubLevel) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuSubLevel -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuSubLevel -*/ -public Object createInstance(){ - TgeneMenuSubLevel instance=new TgeneMenuSubLevel(); - instance.setPk(new TgeneMenuSubLevelKey()); - return instance; -} -/**Clona la entidad TgeneMenuSubLevel -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuSubLevel p=(TgeneMenuSubLevel)this.clone(); - p.setPk((TgeneMenuSubLevelKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuSubLevel. */ - private static final String JPQL_MENU_SUB_LEVEL = "from TgeneMenuSubLevel tmsl " + " where tmsl.pk.menucode = :menucode" - + " and tmsl.pk.levelcode = :levelcode " + " order by tmsl.presentationorder "; - /** - * Metodo que entrega uns lista de definicion del menu de segundo nivel. - * - * @param pMenucode Codigo de menu. - * @param pLevel Codigo del primer nivel. - * @return List - * @throws Exception - */ - @SuppressWarnings(com.fp.common.helper.Constant.VUNCHECKED) - public static List find(EntityManager pEntityManager, Integer pMenucode, Integer pLevel) throws Exception { - List lmenu = null; - Query qry = pEntityManager.createQuery(TgeneMenuSubLevel.JPQL_MENU_SUB_LEVEL); - qry.setParameter("menucode", pMenucode); - qry.setParameter("levelcode", pLevel); - lmenu = qry.getResultList(); - return lmenu; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDesc.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDesc.java.svn-base deleted file mode 100644 index 086366a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDesc.java.svn-base +++ /dev/null @@ -1,192 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENUSUBLEVELDESC*/ -@Entity(name="TgeneMenuSubLevelDesc") -@Table(name="TGENEMENUSUBLEVELDESC") -public class TgeneMenuSubLevelDesc extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuSubLevelDesc -*/ -@EmbeddedId -private TgeneMenuSubLevelDescKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion del sub nivel -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneMenuSubLevelDesc(){ -} -/**Contructor de TgeneMenuSubLevelDesc -@param pPk Clave Primaria del entity -*/ -public TgeneMenuSubLevelDesc(TgeneMenuSubLevelDescKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuSubLevelDesc -*/ -public static TgeneMenuSubLevelDesc find(EntityManager pEntityManager,TgeneMenuSubLevelDescKey pKey) throws Exception{ - TgeneMenuSubLevelDesc obj = pEntityManager.find(TgeneMenuSubLevelDesc.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuSubLevelDesc -@return El objeto que referencia a la Clave primaria de TgeneMenuSubLevelDesc -*/ -public TgeneMenuSubLevelDescKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuSubLevelDesc -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuSubLevelDesc -*/ -public void setPk(TgeneMenuSubLevelDescKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuSubLevelDesc))return false; - TgeneMenuSubLevelDesc that = (TgeneMenuSubLevelDesc) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuSubLevelDesc -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuSubLevelDesc -*/ -public Object createInstance(){ - TgeneMenuSubLevelDesc instance=new TgeneMenuSubLevelDesc(); - instance.setPk(new TgeneMenuSubLevelDescKey()); - return instance; -} -/**Clona la entidad TgeneMenuSubLevelDesc -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuSubLevelDesc p=(TgeneMenuSubLevelDesc)this.clone(); - p.setPk((TgeneMenuSubLevelDescKey)this.pk.cloneMe()); - return p; -} - - //METODOS MANUALES - /** Sentencia que devuelve un registro de TgeneMenuSubLevelDesc. */ - private static final String JPQL_MENU_SLEVEL_DESC = "from TgeneMenuSubLevelDesc tsld" + " where tsld.pk.menucode = :menucode" - + " and tsld.pk.levelcode = :levelcode" + " and tsld.pk.sublevel = :sublevel" + " and tsld.pk.languagecode = :languagecode"; - /** - * Metodo que emtrega la descripcion de un subnivel del menu. - * - * @param pmenucode Codigo de menu. - * @param pLevel Codigo de nivel de menu. - * @param pSublevel Codigo de subnivel de menu. - * @param planguagecode Codigo de lenguaje. - * @return TgeneMenuSubLevelDesc - * @throws Exception - */ - public static TgeneMenuSubLevelDesc find(EntityManager pEntityManager, Integer pmenucode, Integer pLevel, Integer pSublevel, String planguagecode) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneMenuSubLevelDesc.JPQL_MENU_SLEVEL_DESC); - qry.setParameter("menucode", pmenucode); - qry.setParameter("levelcode", pLevel); - qry.setParameter("sublevel", pSublevel); - qry.setParameter("languagecode", planguagecode); - try { - return (TgeneMenuSubLevelDesc) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDescKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDescKey.java.svn-base deleted file mode 100644 index 47f069f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelDescKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENUSUBLEVELDESC*/ -@Embeddable -public class TgeneMenuSubLevelDescKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu. -*/ -private Integer levelcode; - -@Column(name="SUBLEVEL", nullable=false,updatable=false) - -/** -* Sub grupo de menu -*/ -private Integer sublevel; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -/**Contructor por defecto*/ -public TgeneMenuSubLevelDescKey(){} -/**Contructor de TgeneMenuSubLevelDescKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu. -@param pSublevel Sub grupo de menu -@param pLanguagecode Codigo de idioma -*/ -public TgeneMenuSubLevelDescKey(Integer pMenucode,Integer pLevelcode,Integer pSublevel,String pLanguagecode){ - menucode=pMenucode; - levelcode=pLevelcode; - sublevel=pSublevel; - languagecode=pLanguagecode; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Obtiene el valor de sublevel -@return valor de sublevel*/ -public Integer getSublevel(){ - return sublevel; -} -/**Fija el valor de sublevel -@param pSublevel nuevo Valor de sublevel*/ -public void setSublevel(Integer pSublevel){ - sublevel=pSublevel; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Implementacin de la comparacin de TgeneMenuSubLevelDescKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuSubLevelDescKey))return false; - TgeneMenuSubLevelDescKey that = (TgeneMenuSubLevelDescKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - if (this.getSublevel() == null || that.getSublevel() == null){ - return false; - } - if (! this.getSublevel().equals(that.getSublevel())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuSubLevelDescKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - result = result * 37 + (this.getSublevel() == null ? 0 : this.getSublevel().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelKey.java.svn-base deleted file mode 100644 index 7d79a34..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENUSUBLEVEL*/ -@Embeddable -public class TgeneMenuSubLevelKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu. -*/ -private Integer levelcode; - -@Column(name="SUBLEVEL", nullable=false,updatable=false) - -/** -* Sub grupo de menu -*/ -private Integer sublevel; - -/**Contructor por defecto*/ -public TgeneMenuSubLevelKey(){} -/**Contructor de TgeneMenuSubLevelKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu. -@param pSublevel Sub grupo de menu -*/ -public TgeneMenuSubLevelKey(Integer pMenucode,Integer pLevelcode,Integer pSublevel){ - menucode=pMenucode; - levelcode=pLevelcode; - sublevel=pSublevel; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Obtiene el valor de sublevel -@return valor de sublevel*/ -public Integer getSublevel(){ - return sublevel; -} -/**Fija el valor de sublevel -@param pSublevel nuevo Valor de sublevel*/ -public void setSublevel(Integer pSublevel){ - sublevel=pSublevel; -} - -/**Implementacin de la comparacin de TgeneMenuSubLevelKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuSubLevelKey))return false; - TgeneMenuSubLevelKey that = (TgeneMenuSubLevelKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - if (this.getSublevel() == null || that.getSublevel() == null){ - return false; - } - if (! this.getSublevel().equals(that.getSublevel())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuSubLevelKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - result = result * 37 + (this.getSublevel() == null ? 0 : this.getSublevel().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTran.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTran.java.svn-base deleted file mode 100644 index 272bd49..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTran.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMENUSUBLEVELTRAN*/ -@Entity(name="TgeneMenuSubLevelTran") -@Table(name="TGENEMENUSUBLEVELTRAN") -public class TgeneMenuSubLevelTran extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMenuSubLevelTran -*/ -@EmbeddedId -private TgeneMenuSubLevelTranKey pk; -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de presentacion -*/ -private Integer presentationorder; - -/**Contructor por defecto*/ -public TgeneMenuSubLevelTran(){ -} -/**Contructor de TgeneMenuSubLevelTran -@param pPk Clave Primaria del entity -*/ -public TgeneMenuSubLevelTran(TgeneMenuSubLevelTranKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMenuSubLevelTran -*/ -public static TgeneMenuSubLevelTran find(EntityManager pEntityManager,TgeneMenuSubLevelTranKey pKey) throws Exception{ - TgeneMenuSubLevelTran obj = pEntityManager.find(TgeneMenuSubLevelTran.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMenuSubLevelTran -@return El objeto que referencia a la Clave primaria de TgeneMenuSubLevelTran -*/ -public TgeneMenuSubLevelTranKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMenuSubLevelTran -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMenuSubLevelTran -*/ -public void setPk(TgeneMenuSubLevelTranKey pPk){ - pk=pPk; -} -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMenuSubLevelTran))return false; - TgeneMenuSubLevelTran that = (TgeneMenuSubLevelTran) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMenuSubLevelTran -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMenuSubLevelTran -*/ -public Object createInstance(){ - TgeneMenuSubLevelTran instance=new TgeneMenuSubLevelTran(); - instance.setPk(new TgeneMenuSubLevelTranKey()); - return instance; -} -/**Clona la entidad TgeneMenuSubLevelTran -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMenuSubLevelTran p=(TgeneMenuSubLevelTran)this.clone(); - p.setPk((TgeneMenuSubLevelTranKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTranKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTranKey.java.svn-base deleted file mode 100644 index 081535e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/menu/.svn/text-base/TgeneMenuSubLevelTranKey.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.persistence.pgeneral.menu; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMENUSUBLEVELTRAN*/ -@Embeddable -public class TgeneMenuSubLevelTranKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MENUCODE", nullable=false,updatable=false) - -/** -* Codigo de menu -*/ -private Integer menucode; - -@Column(name="LEVELCODE", nullable=false,updatable=false) - -/** -* Codigo de nivel del menu. -*/ -private Integer levelcode; - -@Column(name="SUBLEVEL", nullable=false,updatable=false) - -/** -* Sub grupo de menu -*/ -private Integer sublevel; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneMenuSubLevelTranKey(){} -/**Contructor de TgeneMenuSubLevelTranKey -@param pMenucode Codigo de menu -@param pLevelcode Codigo de nivel del menu. -@param pSublevel Sub grupo de menu -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneMenuSubLevelTranKey(Integer pMenucode,Integer pLevelcode,Integer pSublevel,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - menucode=pMenucode; - levelcode=pLevelcode; - sublevel=pSublevel; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de menucode -@return valor de menucode*/ -public Integer getMenucode(){ - return menucode; -} -/**Fija el valor de menucode -@param pMenucode nuevo Valor de menucode*/ -public void setMenucode(Integer pMenucode){ - menucode=pMenucode; -} - -/**Obtiene el valor de levelcode -@return valor de levelcode*/ -public Integer getLevelcode(){ - return levelcode; -} -/**Fija el valor de levelcode -@param pLevelcode nuevo Valor de levelcode*/ -public void setLevelcode(Integer pLevelcode){ - levelcode=pLevelcode; -} - -/**Obtiene el valor de sublevel -@return valor de sublevel*/ -public Integer getSublevel(){ - return sublevel; -} -/**Fija el valor de sublevel -@param pSublevel nuevo Valor de sublevel*/ -public void setSublevel(Integer pSublevel){ - sublevel=pSublevel; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacin de la comparacin de TgeneMenuSubLevelTranKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMenuSubLevelTranKey))return false; - TgeneMenuSubLevelTranKey that = (TgeneMenuSubLevelTranKey) o; - if (this.getMenucode() == null || that.getMenucode() == null){ - return false; - } - if (! this.getMenucode().equals(that.getMenucode())){ - return false; - } - if (this.getLevelcode() == null || that.getLevelcode() == null){ - return false; - } - if (! this.getLevelcode().equals(that.getLevelcode())){ - return false; - } - if (this.getSublevel() == null || that.getSublevel() == null){ - return false; - } - if (! this.getSublevel().equals(that.getSublevel())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMenuSubLevelTranKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getMenucode() == null ? 0 : this.getMenucode().hashCode()); - result = result * 37 + (this.getLevelcode() == null ? 0 : this.getLevelcode().hashCode()); - result = result * 37 + (this.getSublevel() == null ? 0 : this.getSublevel().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/entries deleted file mode 100644 index a240e8a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneMessageTemplatesDesc.java -file - - - - -2022-07-28T03:40:29.386745Z -9d9afeedf70194b7407089fa38c766fd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6493 - -TgeneMessageTemplates.java -file - - - - -2022-07-28T03:40:29.386745Z -73263db2ebfb96f77f614992f008f2e9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4462 - -TgeneMessageTemplatesDescKey.java -file - - - - -2022-07-28T03:40:29.387745Z -f77360429e24a91fd0445ec53e0d3692 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3360 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplates.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplates.java.svn-base deleted file mode 100644 index f432219..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplates.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pgeneral.message; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMESSAGETEMPLATES*/ -@Entity(name="TgeneMessageTemplates") -@Table(name="TGENEMESSAGETEMPLATES") -public class TgeneMessageTemplates extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMessageTemplates -*/ -@Id -@Column(name="CODE" ,nullable=false, updatable=false) -private Integer pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion default de la plantilla del mensaje -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneMessageTemplates(){ -} -/**Contructor de TgeneMessageTemplates -@param pPk Clave Primaria del entity -*/ -public TgeneMessageTemplates(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMessageTemplates -*/ -public static TgeneMessageTemplates find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneMessageTemplates obj = pEntityManager.find(TgeneMessageTemplates.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMessageTemplates -@return El objeto que referencia a la Clave primaria de TgeneMessageTemplates -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMessageTemplates -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMessageTemplates -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMessageTemplates))return false; - TgeneMessageTemplates that = (TgeneMessageTemplates) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMessageTemplates -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMessageTemplates -*/ -public Object createInstance(){ - TgeneMessageTemplates instance=new TgeneMessageTemplates(); - return instance; -} -/**Clona la entidad TgeneMessageTemplates -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMessageTemplates p=(TgeneMessageTemplates)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDesc.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDesc.java.svn-base deleted file mode 100644 index 3ef17bd..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDesc.java.svn-base +++ /dev/null @@ -1,233 +0,0 @@ -package com.fp.persistence.pgeneral.message; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Lob; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMESSAGETEMPLATESDESC */ -@Entity(name = "TgeneMessageTemplatesDesc") -@Table(name = "TGENEMESSAGETEMPLATESDESC") -public class TgeneMessageTemplatesDesc extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneMessageTemplatesDesc - */ - @EmbeddedId - private TgeneMessageTemplatesDescKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistick locking del registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = true) - /** - * Descripcion default de la plantilla del mensaje - */ - private String description; - - @Column(name = "TEMPLATE", nullable = true) - /** - * Plantilla del mensaje - */ - private String template; - - /** Contructor por defecto */ - public TgeneMessageTemplatesDesc() { - } - - /** - * Contructor de TgeneMessageTemplatesDesc - * - * @param pPk Clave Primaria del entity - */ - public TgeneMessageTemplatesDesc(TgeneMessageTemplatesDescKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneMessageTemplatesDesc - */ - public static TgeneMessageTemplatesDesc find(EntityManager pEntityManager, TgeneMessageTemplatesDescKey pKey) throws Exception { - TgeneMessageTemplatesDesc obj = pEntityManager.find(TgeneMessageTemplatesDesc.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneMessageTemplatesDesc - * - * @return El objeto que referencia a la Clave primaria de TgeneMessageTemplatesDesc - */ - public TgeneMessageTemplatesDescKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneMessageTemplatesDesc - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneMessageTemplatesDesc - */ - public void setPk(TgeneMessageTemplatesDescKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return this.description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - this.description = pDescription; - } - - /** - * Obtiene el valor de template - * - * @return valor de template - */ - public String getTemplate() { - return this.template; - } - - /** - * Fija el valor de template - * - * @param pTemplate nuevo Valor de template - */ - public void setTemplate(String pTemplate) { - this.template = pTemplate; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneMessageTemplatesDesc)) { - return false; - } - TgeneMessageTemplatesDesc that = (TgeneMessageTemplatesDesc) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneMessageTemplatesDesc - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneMessageTemplatesDesc */ - @Override - public Object createInstance() { - TgeneMessageTemplatesDesc instance = new TgeneMessageTemplatesDesc(); - instance.setPk(new TgeneMessageTemplatesDescKey()); - return instance; - } - - /** - * Clona la entidad TgeneMessageTemplatesDesc - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneMessageTemplatesDesc p = (TgeneMessageTemplatesDesc) this.clone(); - p.setPk((TgeneMessageTemplatesDescKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDescKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDescKey.java.svn-base deleted file mode 100644 index 4fa1b05..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/message/.svn/text-base/TgeneMessageTemplatesDescKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.message; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMESSAGETEMPLATESDESC*/ -@Embeddable -public class TgeneMessageTemplatesDescKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CODE", nullable=false,updatable=false) - -/** -* Codigo de plantilla de mensajes -*/ -private Integer code; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -/**Contructor por defecto*/ -public TgeneMessageTemplatesDescKey(){} -/**Contructor de TgeneMessageTemplatesDescKey -@param pCode Codigo de plantilla de mensajes -@param pLanguagecode Codigo de idioma -*/ -public TgeneMessageTemplatesDescKey(Integer pCode,String pLanguagecode){ - code=pCode; - languagecode=pLanguagecode; -} -/**Obtiene el valor de code -@return valor de code*/ -public Integer getCode(){ - return code; -} -/**Fija el valor de code -@param pCode nuevo Valor de code*/ -public void setCode(Integer pCode){ - code=pCode; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Implementacin de la comparacin de TgeneMessageTemplatesDescKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMessageTemplatesDescKey))return false; - TgeneMessageTemplatesDescKey that = (TgeneMessageTemplatesDescKey) o; - if (this.getCode() == null || that.getCode() == null){ - return false; - } - if (! this.getCode().equals(that.getCode())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMessageTemplatesDescKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCode() == null ? 0 : this.getCode().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/entries deleted file mode 100644 index 398f9d4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneMessageStructureHeader.java -file - - - - -2022-07-28T03:40:29.439745Z -479a90227766d5ac9fba8c8b2d171e6e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11449 - -TgeneMessageStructureData.java -file - - - - -2022-07-28T03:40:29.439745Z -9cad336153264e79d65f62669077e277 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11369 - -TgeneMessageStructure.java -file - - - - -2022-07-28T03:40:29.439745Z -4de7777259f10c280b718c54ebdc9f2c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9267 - -TgeneMessageStructureHeaderKey.java -file - - - - -2022-07-28T03:40:29.439745Z -a70e620f25ce0d61c7da826d449bac98 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3553 - -TgeneMessageStructureDataKey.java -file - - - - -2022-07-28T03:40:29.440745Z -176ecb59c2467f2c23d96e802298b1b6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3533 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructure.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructure.java.svn-base deleted file mode 100644 index f7ff950..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructure.java.svn-base +++ /dev/null @@ -1,339 +0,0 @@ -package com.fp.persistence.pgeneral.msg; - -import javax.persistence.Entity; -import com.fp.dto.hb.Log; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMESSAGESTRUCTURE*/ -@Entity(name="TgeneMessageStructure") -@Table(name="TGENEMESSAGESTRUCTURE") -public class TgeneMessageStructure extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMessageStructure -*/ -@Id -@Column(name="STRUCTURECODE" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion de la estructuura, propisito de la estructura -*/ -private String description; - -@Column(name="HAVEHEADER", nullable=true) - -/** -* Y indica que el archivo tiene cabecera, N el archivo no tiene cabecera. -*/ -private String haveheader; - -@Column(name="HEADERLENGTH", nullable=true) - -/** -* Longitud del header si tiene header, puede tener longitud o caracter de finalizacion. -*/ -private Integer headerlength; - -@Column(name="HEADERSEPARATOR", nullable=true) - -/** -* Serador de campos del header. -*/ -private String headerseparator; - -@Column(name="ENDDATACHARACTER", nullable=true) - -/** -* Caracter de finalizacion de un registro de datos. -*/ -private String enddatacharacter; - -@Column(name="RECORDLENGTH", nullable=true) - -/** -* Longuitud de un registro de datos. -*/ -private Integer recordlength; - -@Column(name="RECORDSEPARATOR", nullable=true) - -/** -* Separador de campos de datos. -*/ -private String recordseparator; - -@Column(name="FORMATDATE", nullable=true) - -/** -* Formato de fecha que llega en los registros puede ser del header o de la data. -*/ -private String formatdate; - -@Column(name="FORMATTIME", nullable=true) - -/** -* Formato de tiempo, horas minutos, segundos -*/ -private String formattime; - -@Column(name="HEADERCLASS", nullable=true) - -/** -* Clase que se encarga de manipular el header, ejemplo almacenar los datos en una tabla. -*/ -private String headerclass; - -@Column(name="DETAILCLASS", nullable=true) - -/** -* Clase que se encarga de manipular los registros de datos, ejemplo almacenar los datos en una tabla. -*/ -private String detailclass; - -/**Contructor por defecto*/ -public TgeneMessageStructure(){ -} -/**Contructor de TgeneMessageStructure -@param pPk Clave Primaria del entity -*/ -public TgeneMessageStructure(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMessageStructure -*/ -public static TgeneMessageStructure find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneMessageStructure obj = pEntityManager.find(TgeneMessageStructure.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMessageStructure -@return El objeto que referencia a la Clave primaria de TgeneMessageStructure -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMessageStructure -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMessageStructure -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de haveheader -@return valor de haveheader*/ -public String getHaveheader(){ - return haveheader; -} -/**Fija el valor de haveheader -@param pHaveheader nuevo Valor de haveheader*/ -public void setHaveheader(String pHaveheader){ - haveheader=pHaveheader; -} - -/**Obtiene el valor de headerlength -@return valor de headerlength*/ -public Integer getHeaderlength(){ - return headerlength; -} -/**Fija el valor de headerlength -@param pHeaderlength nuevo Valor de headerlength*/ -public void setHeaderlength(Integer pHeaderlength){ - headerlength=pHeaderlength; -} - -/**Obtiene el valor de headerseparator -@return valor de headerseparator*/ -public String getHeaderseparator(){ - return headerseparator; -} -/**Fija el valor de headerseparator -@param pHeaderseparator nuevo Valor de headerseparator*/ -public void setHeaderseparator(String pHeaderseparator){ - headerseparator=pHeaderseparator; -} - -/**Obtiene el valor de enddatacharacter -@return valor de enddatacharacter*/ -public String getEnddatacharacter(){ - return enddatacharacter; -} -/**Fija el valor de enddatacharacter -@param pEnddatacharacter nuevo Valor de enddatacharacter*/ -public void setEnddatacharacter(String pEnddatacharacter){ - enddatacharacter=pEnddatacharacter; -} - -/**Obtiene el valor de recordlength -@return valor de recordlength*/ -public Integer getRecordlength(){ - return recordlength; -} -/**Fija el valor de recordlength -@param pRecordlength nuevo Valor de recordlength*/ -public void setRecordlength(Integer pRecordlength){ - recordlength=pRecordlength; -} - -/**Obtiene el valor de recordseparator -@return valor de recordseparator*/ -public String getRecordseparator(){ - return recordseparator; -} -/**Fija el valor de recordseparator -@param pRecordseparator nuevo Valor de recordseparator*/ -public void setRecordseparator(String pRecordseparator){ - recordseparator=pRecordseparator; -} - -/**Obtiene el valor de formatdate -@return valor de formatdate*/ -public String getFormatdate(){ - return formatdate; -} -/**Fija el valor de formatdate -@param pFormatdate nuevo Valor de formatdate*/ -public void setFormatdate(String pFormatdate){ - formatdate=pFormatdate; -} - -/**Obtiene el valor de formattime -@return valor de formattime*/ -public String getFormattime(){ - return formattime; -} -/**Fija el valor de formattime -@param pFormattime nuevo Valor de formattime*/ -public void setFormattime(String pFormattime){ - formattime=pFormattime; -} - -/**Obtiene el valor de headerclass -@return valor de headerclass*/ -public String getHeaderclass(){ - return headerclass; -} -/**Fija el valor de headerclass -@param pHeaderclass nuevo Valor de headerclass*/ -public void setHeaderclass(String pHeaderclass){ - headerclass=pHeaderclass; -} - -/**Obtiene el valor de detailclass -@return valor de detailclass*/ -public String getDetailclass(){ - return detailclass; -} -/**Fija el valor de detailclass -@param pDetailclass nuevo Valor de detailclass*/ -public void setDetailclass(String pDetailclass){ - detailclass=pDetailclass; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMessageStructure))return false; - TgeneMessageStructure that = (TgeneMessageStructure) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMessageStructure -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMessageStructure -*/ -public Object createInstance(){ - TgeneMessageStructure instance=new TgeneMessageStructure(); - return instance; -} -/**Clona la entidad TgeneMessageStructure -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMessageStructure p=(TgeneMessageStructure)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureData.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureData.java.svn-base deleted file mode 100644 index 0435aa4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureData.java.svn-base +++ /dev/null @@ -1,474 +0,0 @@ -package com.fp.persistence.pgeneral.msg; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEMESSAGESTRUCTUREDATA - */ -@Entity(name = "TgeneMessageStructureData") -@Table(name = "TGENEMESSAGESTRUCTUREDATA") -public class TgeneMessageStructureData extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, - Cloneable, Log { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneMessageStructureData - */ - @EmbeddedId - private TgeneMessageStructureDataKey pk; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Nombre de la columna dentro del archivo - */ - private String description; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DATATYPE", nullable = false) - /** - * Tipo de dato del campo, sirve para verificar si es un numero no se ingrese caracteres. - */ - private String datatype; - - @Column(name = "LENGTH", nullable = true) - /** - * Longitud de lectura del campo. - */ - private Integer length; - - @Column(name = "REQUIRED", nullable = true) - /** - * Y si el campo es requerido - */ - private String required; - - @Column(name = "INITPOSITION", nullable = true) - /** - * Si el campo no maneja separadores, aqui se define la posicion inicial del registro. - */ - private Integer initposition; - - @Column(name = "ENDPOSITION", nullable = true) - /** - * Si el campo no maneja separadores, aqui se define la posicion final del registro. - */ - private Integer endposition; - - @Column(name = "DECIMALNUMBER", nullable = true) - /** - * Numero de decimales - */ - private Integer decimalnumber; - - @Column(name = "INITVALUE", nullable = true) - /** - * Valor por defecto o inicial del campo. - */ - private String initvalue; - - @Column(name = "FILLERCHARACTER", nullable = true) - /** - * Caracter de relleno del campo - */ - private String fillercharacter; - - @Column(name = "LEFTREFILLER", nullable = true) - /** - * Y indica que el campo se rellena a la izquiera con el caracter de relleno hasta completar la longitud del campo. - */ - private String leftrefiller; - - @Column(name = "ATTRIBUTE", nullable = true) - /** - * Nombre del campo asociado a un bean. - */ - private String attribute; - - /** Contructor por defecto */ - public TgeneMessageStructureData() { - } - - /** - * Contructor de TgeneMessageStructureData - * - * @param pPk Clave Primaria del entity - * @param pDatatype Tipo de dato del campo, sirve para verificar si es un - * numero no se ingrese caracteres. - */ - public TgeneMessageStructureData(TgeneMessageStructureDataKey pPk, String pDatatype) { - this(); - pk = pPk; - datatype = pDatatype; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneMessageStructureData - */ - public static TgeneMessageStructureData find(EntityManager pEntityManager, TgeneMessageStructureDataKey pKey) - throws Exception { - TgeneMessageStructureData obj = pEntityManager.find(TgeneMessageStructureData.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneMessageStructureData - * - * @return El objeto que referencia a la Clave primaria de - * TgeneMessageStructureData - */ - public TgeneMessageStructureDataKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneMessageStructureData - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneMessageStructureData - */ - public void setPk(TgeneMessageStructureDataKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de datatype - * - * @return valor de datatype - */ - public String getDatatype() { - return datatype; - } - - /** - * Fija el valor de datatype - * - * @param pDatatype nuevo Valor de datatype - */ - public void setDatatype(String pDatatype) { - datatype = pDatatype; - } - - /** - * Obtiene el valor de length - * - * @return valor de length - */ - public Integer getLength() { - return length; - } - - /** - * Fija el valor de length - * - * @param pLength nuevo Valor de length - */ - public void setLength(Integer pLength) { - length = pLength; - } - - /** - * Obtiene el valor de required - * - * @return valor de required - */ - public String getRequired() { - return required; - } - - /** - * Fija el valor de required - * - * @param pRequired nuevo Valor de required - */ - public void setRequired(String pRequired) { - required = pRequired; - } - - /** - * Obtiene el valor de initposition - * - * @return valor de initposition - */ - public Integer getInitposition() { - return initposition; - } - - /** - * Fija el valor de initposition - * - * @param pInitposition nuevo Valor de initposition - */ - public void setInitposition(Integer pInitposition) { - initposition = pInitposition; - } - - /** - * Obtiene el valor de endposition - * - * @return valor de endposition - */ - public Integer getEndposition() { - return endposition; - } - - /** - * Fija el valor de endposition - * - * @param pEndposition nuevo Valor de endposition - */ - public void setEndposition(Integer pEndposition) { - endposition = pEndposition; - } - - /** - * Obtiene el valor de decimalnumber - * - * @return valor de decimalnumber - */ - public Integer getDecimalnumber() { - return decimalnumber; - } - - /** - * Fija el valor de decimalnumber - * - * @param pDecimalnumber nuevo Valor de decimalnumber - */ - public void setDecimalnumber(Integer pDecimalnumber) { - decimalnumber = pDecimalnumber; - } - - /** - * Obtiene el valor de initvalue - * - * @return valor de initvalue - */ - public String getInitvalue() { - return initvalue; - } - - /** - * Fija el valor de initvalue - * - * @param pInitvalue nuevo Valor de initvalue - */ - public void setInitvalue(String pInitvalue) { - initvalue = pInitvalue; - } - - /** - * Obtiene el valor de fillercharacter - * - * @return valor de fillercharacter - */ - public String getFillercharacter() { - return fillercharacter; - } - - /** - * Fija el valor de fillercharacter - * - * @param pFillercharacter nuevo Valor de fillercharacter - */ - public void setFillercharacter(String pFillercharacter) { - fillercharacter = pFillercharacter; - } - - /** - * Obtiene el valor de leftrefiller - * - * @return valor de leftrefiller - */ - public String getLeftrefiller() { - return leftrefiller; - } - - /** - * Fija el valor de leftrefiller - * - * @param pLeftrefiller nuevo Valor de leftrefiller - */ - public void setLeftrefiller(String pLeftrefiller) { - leftrefiller = pLeftrefiller; - } - - /** - * Obtiene el valor de attribute - * - * @return valor de attribute - */ - public String getAttribute() { - return attribute; - } - - /** - * Fija el valor de attribute - * - * @param pAttribute nuevo Valor de attribute - */ - public void setAttribute(String pAttribute) { - attribute = pAttribute; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneMessageStructureData)) - return false; - TgeneMessageStructureData that = (TgeneMessageStructureData) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad - * TgeneMessageStructureData - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco - * TgeneMessageStructureData - */ - public Object createInstance() { - TgeneMessageStructureData instance = new TgeneMessageStructureData(); - instance.setPk(new TgeneMessageStructureDataKey()); - return instance; - } - - /** - * Clona la entidad TgeneMessageStructureData - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneMessageStructureData p = (TgeneMessageStructureData) this.clone(); - p.setPk((TgeneMessageStructureDataKey) this.pk.cloneMe()); - return p; - } - - //METODOS MANUALES - private static final String HQL_WITH_FILTER = - "from TgeneMessageStructureData tb " - + " where tb.pk.structurecode = :structurecode " - + " order by tb.pk.code "; - - /** - * Metodo que devuelve una lista de objetos TgeneMessageStructureData - * @param pEntityManager - * @param structurecode Codigo de estructura - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String structurecode) throws Exception { - List lStructure = null; - Query qry = pEntityManager.createQuery(HQL_WITH_FILTER); - qry.setParameter("structurecode", structurecode); - lStructure = qry.getResultList(); - return lStructure; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureDataKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureDataKey.java.svn-base deleted file mode 100644 index 3262cf8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureDataKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.msg; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMESSAGESTRUCTUREDATA*/ -@Embeddable -public class TgeneMessageStructureDataKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="STRUCTURECODE", nullable=false,updatable=false) - -/** -* Codigo de estructura de mensaje -*/ -private String structurecode; - -@Column(name="CODE", nullable=false,updatable=false) - -/** -* Codigo de estructura de mensaje -*/ -private Integer code; - -/**Contructor por defecto*/ -public TgeneMessageStructureDataKey(){} -/**Contructor de TgeneMessageStructureDataKey -@param pStructurecode Codigo de estructura de mensaje -@param pCode Codigo de estructura de mensaje -*/ -public TgeneMessageStructureDataKey(String pStructurecode,Integer pCode){ - structurecode=pStructurecode; - code=pCode; -} -/**Obtiene el valor de structurecode -@return valor de structurecode*/ -public String getStructurecode(){ - return structurecode; -} -/**Fija el valor de structurecode -@param pStructurecode nuevo Valor de structurecode*/ -public void setStructurecode(String pStructurecode){ - structurecode=pStructurecode; -} - -/**Obtiene el valor de code -@return valor de code*/ -public Integer getCode(){ - return code; -} -/**Fija el valor de code -@param pCode nuevo Valor de code*/ -public void setCode(Integer pCode){ - code=pCode; -} - -/**Implementacin de la comparacin de TgeneMessageStructureDataKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMessageStructureDataKey))return false; - TgeneMessageStructureDataKey that = (TgeneMessageStructureDataKey) o; - if (this.getStructurecode() == null || that.getStructurecode() == null){ - return false; - } - if (! this.getStructurecode().equals(that.getStructurecode())){ - return false; - } - if (this.getCode() == null || that.getCode() == null){ - return false; - } - if (! this.getCode().equals(that.getCode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMessageStructureDataKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getStructurecode() == null ? 0 : this.getStructurecode().hashCode()); - result = result * 37 + (this.getCode() == null ? 0 : this.getCode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeader.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeader.java.svn-base deleted file mode 100644 index d33a099..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeader.java.svn-base +++ /dev/null @@ -1,474 +0,0 @@ -package com.fp.persistence.pgeneral.msg; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEMESSAGESTRUCTUREHEADER - */ -@Entity(name = "TgeneMessageStructureHeader") -@Table(name = "TGENEMESSAGESTRUCTUREHEADER") -public class TgeneMessageStructureHeader extends com.fp.dto.AbstractDataTransport implements Serializable, - HibernateBean, Cloneable, Log { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneMessageStructureHeader - */ - @EmbeddedId - private TgeneMessageStructureHeaderKey pk; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Nombre de la columna dentro del archivo - */ - private String description; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DATATYPE", nullable = false) - /** - * Tipo de dato del campo, sirve para verificar si es un numero no se ingrese caracteres. - */ - private String datatype; - - @Column(name = "LENGTH", nullable = true) - /** - * Longitud de lectura del campo. - */ - private Integer length; - - @Column(name = "REQUIRED", nullable = true) - /** - * Y si el campo es requerido - */ - private String required; - - @Column(name = "INITPOSITION", nullable = true) - /** - * Si el campo no maneja separadores, aqui se define la posicion inicial del registro. - */ - private Integer initposition; - - @Column(name = "ENDPOSITION", nullable = true) - /** - * Si el campo no maneja separadores, aqui se define la posicion final del registro. - */ - private Integer endposition; - - @Column(name = "DECIMALNUMBER", nullable = true) - /** - * Numero de decimales - */ - private Integer decimalnumber; - - @Column(name = "INITVALUE", nullable = true) - /** - * Valor por defecto o inicial del campo. - */ - private String initvalue; - - @Column(name = "FILLERCHARACTER", nullable = true) - /** - * Caracter de relleno del campo - */ - private String fillercharacter; - - @Column(name = "LEFTREFILLER", nullable = true) - /** - * Y indica que el campo se rellena a la izquiera con el caracter de relleno hasta completar la longitud del campo. - */ - private String leftrefiller; - - @Column(name = "ATTRIBUTE", nullable = true) - /** - * Nombre del campo asociado a un bean. - */ - private String attribute; - - /** Contructor por defecto */ - public TgeneMessageStructureHeader() { - } - - /** - * Contructor de TgeneMessageStructureHeader - * - * @param pPk Clave Primaria del entity - * @param pDatatype Tipo de dato del campo, sirve para verificar si es un - * numero no se ingrese caracteres. - */ - public TgeneMessageStructureHeader(TgeneMessageStructureHeaderKey pPk, String pDatatype) { - this(); - pk = pPk; - datatype = pDatatype; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneMessageStructureHeader - */ - public static TgeneMessageStructureHeader find(EntityManager pEntityManager, TgeneMessageStructureHeaderKey pKey) - throws Exception { - TgeneMessageStructureHeader obj = pEntityManager.find(TgeneMessageStructureHeader.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneMessageStructureHeader - * - * @return El objeto que referencia a la Clave primaria de - * TgeneMessageStructureHeader - */ - public TgeneMessageStructureHeaderKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneMessageStructureHeader - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneMessageStructureHeader - */ - public void setPk(TgeneMessageStructureHeaderKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de datatype - * - * @return valor de datatype - */ - public String getDatatype() { - return datatype; - } - - /** - * Fija el valor de datatype - * - * @param pDatatype nuevo Valor de datatype - */ - public void setDatatype(String pDatatype) { - datatype = pDatatype; - } - - /** - * Obtiene el valor de length - * - * @return valor de length - */ - public Integer getLength() { - return length; - } - - /** - * Fija el valor de length - * - * @param pLength nuevo Valor de length - */ - public void setLength(Integer pLength) { - length = pLength; - } - - /** - * Obtiene el valor de required - * - * @return valor de required - */ - public String getRequired() { - return required; - } - - /** - * Fija el valor de required - * - * @param pRequired nuevo Valor de required - */ - public void setRequired(String pRequired) { - required = pRequired; - } - - /** - * Obtiene el valor de initposition - * - * @return valor de initposition - */ - public Integer getInitposition() { - return initposition; - } - - /** - * Fija el valor de initposition - * - * @param pInitposition nuevo Valor de initposition - */ - public void setInitposition(Integer pInitposition) { - initposition = pInitposition; - } - - /** - * Obtiene el valor de endposition - * - * @return valor de endposition - */ - public Integer getEndposition() { - return endposition; - } - - /** - * Fija el valor de endposition - * - * @param pEndposition nuevo Valor de endposition - */ - public void setEndposition(Integer pEndposition) { - endposition = pEndposition; - } - - /** - * Obtiene el valor de decimalnumber - * - * @return valor de decimalnumber - */ - public Integer getDecimalnumber() { - return decimalnumber; - } - - /** - * Fija el valor de decimalnumber - * - * @param pDecimalnumber nuevo Valor de decimalnumber - */ - public void setDecimalnumber(Integer pDecimalnumber) { - decimalnumber = pDecimalnumber; - } - - /** - * Obtiene el valor de initvalue - * - * @return valor de initvalue - */ - public String getInitvalue() { - return initvalue; - } - - /** - * Fija el valor de initvalue - * - * @param pInitvalue nuevo Valor de initvalue - */ - public void setInitvalue(String pInitvalue) { - initvalue = pInitvalue; - } - - /** - * Obtiene el valor de fillercharacter - * - * @return valor de fillercharacter - */ - public String getFillercharacter() { - return fillercharacter; - } - - /** - * Fija el valor de fillercharacter - * - * @param pFillercharacter nuevo Valor de fillercharacter - */ - public void setFillercharacter(String pFillercharacter) { - fillercharacter = pFillercharacter; - } - - /** - * Obtiene el valor de leftrefiller - * - * @return valor de leftrefiller - */ - public String getLeftrefiller() { - return leftrefiller; - } - - /** - * Fija el valor de leftrefiller - * - * @param pLeftrefiller nuevo Valor de leftrefiller - */ - public void setLeftrefiller(String pLeftrefiller) { - leftrefiller = pLeftrefiller; - } - - /** - * Obtiene el valor de attribute - * - * @return valor de attribute - */ - public String getAttribute() { - return attribute; - } - - /** - * Fija el valor de attribute - * - * @param pAttribute nuevo Valor de attribute - */ - public void setAttribute(String pAttribute) { - attribute = pAttribute; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneMessageStructureHeader)) - return false; - TgeneMessageStructureHeader that = (TgeneMessageStructureHeader) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad - * TgeneMessageStructureHeader - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacin de la creacin de un bean en blanco - * TgeneMessageStructureHeader - */ - public Object createInstance() { - TgeneMessageStructureHeader instance = new TgeneMessageStructureHeader(); - instance.setPk(new TgeneMessageStructureHeaderKey()); - return instance; - } - - /** - * Clona la entidad TgeneMessageStructureHeader - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneMessageStructureHeader p = (TgeneMessageStructureHeader) this.clone(); - p.setPk((TgeneMessageStructureHeaderKey) this.pk.cloneMe()); - return p; - } - - //METODOS MANUALES - private static final String HQL_WITH_FILTER = - "from TgeneMessageStructureHeader tb " - + " where tb.pk.structurecode = :structurecode " - + " order by tb.pk.code "; - - /** - * Metodo que devuelve una lista de objetos TgeneMessageStructureHeader - * @param pEntityManager - * @param structurecode Codigo de estructura - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String structurecode) throws Exception { - List lStructure = null; - Query qry = pEntityManager.createQuery(HQL_WITH_FILTER); - qry.setParameter("structurecode", structurecode); - lStructure = qry.getResultList(); - return lStructure; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeaderKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeaderKey.java.svn-base deleted file mode 100644 index 2b8d5c4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/msg/.svn/text-base/TgeneMessageStructureHeaderKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.msg; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMESSAGESTRUCTUREHEADER*/ -@Embeddable -public class TgeneMessageStructureHeaderKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="STRUCTURECODE", nullable=false,updatable=false) - -/** -* Codigo de estructura de mensaje -*/ -private String structurecode; - -@Column(name="CODE", nullable=false,updatable=false) - -/** -* Codigo de estructura de mensaje -*/ -private Integer code; - -/**Contructor por defecto*/ -public TgeneMessageStructureHeaderKey(){} -/**Contructor de TgeneMessageStructureHeaderKey -@param pStructurecode Codigo de estructura de mensaje -@param pCode Codigo de estructura de mensaje -*/ -public TgeneMessageStructureHeaderKey(String pStructurecode,Integer pCode){ - structurecode=pStructurecode; - code=pCode; -} -/**Obtiene el valor de structurecode -@return valor de structurecode*/ -public String getStructurecode(){ - return structurecode; -} -/**Fija el valor de structurecode -@param pStructurecode nuevo Valor de structurecode*/ -public void setStructurecode(String pStructurecode){ - structurecode=pStructurecode; -} - -/**Obtiene el valor de code -@return valor de code*/ -public Integer getCode(){ - return code; -} -/**Fija el valor de code -@param pCode nuevo Valor de code*/ -public void setCode(Integer pCode){ - code=pCode; -} - -/**Implementacin de la comparacin de TgeneMessageStructureHeaderKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMessageStructureHeaderKey))return false; - TgeneMessageStructureHeaderKey that = (TgeneMessageStructureHeaderKey) o; - if (this.getStructurecode() == null || that.getStructurecode() == null){ - return false; - } - if (! this.getStructurecode().equals(that.getStructurecode())){ - return false; - } - if (this.getCode() == null || that.getCode() == null){ - return false; - } - if (! this.getCode().equals(that.getCode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMessageStructureHeaderKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getStructurecode() == null ? 0 : this.getStructurecode().hashCode()); - result = result * 37 + (this.getCode() == null ? 0 : this.getCode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/entries deleted file mode 100644 index 00cca54..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page -svn://172.17.26.185/COMACO - - - -2015-02-20T11:05:06.934139Z -3833 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneTransactionPagesKey.java -file - - - - -2022-07-28T03:40:30.138749Z -25d1a0b95a09fa307790db22f380b0b0 -2015-02-20T11:05:06.934139Z -3833 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5675 - -TgeneSubproductPagesKey.java -file - - - - -2022-07-28T03:40:30.138749Z -d49d01aa80bb9163f6d959cf9867ae9e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7830 - -TgeneTransactionPages.java -file - - - - -2022-07-28T03:40:30.138749Z -50299884d5bad2ef24b9257cab580fee -2015-02-20T11:05:06.934139Z -3833 -cpiedra - - - - - - - - - - - - - - - - - - - - - -8414 - -TgeneSubproductPages.java -file - - - - -2022-07-28T03:40:30.139749Z -47465a8ac00f862117d2261920eca908 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7015 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPages.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPages.java.svn-base deleted file mode 100644 index 8b1db09..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPages.java.svn-base +++ /dev/null @@ -1,267 +0,0 @@ -package com.fp.persistence.pgeneral.page; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTPAGES*/ -@Entity(name="TgeneSubproductPages") -@Table(name="TGENESUBPRODUCTPAGES") -public class TgeneSubproductPages extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubproductPages -*/ -@EmbeddedId -private TgeneSubproductPagesKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de preentacion de la pagina en la pantalla -*/ -private Integer presentationorder; - -@Column(name="PAGE", nullable=true) - -/** -* Nombre de la pagina asociada al tab -*/ -private String page; - -@Column(name="TITLE", nullable=true) - -/** -* Titulo del tab -*/ -private String title; - -@Column(name="QUERYFUNCTION", nullable=true) - -/** -* Nombre de la funcion de la pagina que ejecuta la consulta -*/ -private String queryfunction; - -@Column(name="SAVEFUNCTION", nullable=true) - -/** -* Nombre de la funcion que se encarga de hacer el commit de la pagina -*/ -private String savefunction; - -@Column(name="ACTIVE", nullable=true) - -/** -* Y Indica que la pagina esta activa -*/ -private String active; - -@Column(name="AUTODOWNLOAD", nullable=true) - -/** -* Y Indica que la definicon de la pagina tiene un autodownload y no espera a que se presione un click en el tab para descargar la pagina -*/ -private String autodownload; - -/**Contructor por defecto*/ -public TgeneSubproductPages(){ -} -/**Contructor de TgeneSubproductPages -@param pPk Clave Primaria del entity -*/ -public TgeneSubproductPages(TgeneSubproductPagesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubproductPages -*/ -public static TgeneSubproductPages find(EntityManager pEntityManager,TgeneSubproductPagesKey pKey) throws Exception{ - TgeneSubproductPages obj = pEntityManager.find(TgeneSubproductPages.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubproductPages -@return El objeto que referencia a la Clave primaria de TgeneSubproductPages -*/ -public TgeneSubproductPagesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubproductPages -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubproductPages -*/ -public void setPk(TgeneSubproductPagesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -/**Obtiene el valor de page -@return valor de page*/ -public String getPage(){ - return page; -} -/**Fija el valor de page -@param pPage nuevo Valor de page*/ -public void setPage(String pPage){ - page=pPage; -} - -/**Obtiene el valor de title -@return valor de title*/ -public String getTitle(){ - return title; -} -/**Fija el valor de title -@param pTitle nuevo Valor de title*/ -public void setTitle(String pTitle){ - title=pTitle; -} - -/**Obtiene el valor de queryfunction -@return valor de queryfunction*/ -public String getQueryfunction(){ - return queryfunction; -} -/**Fija el valor de queryfunction -@param pQueryfunction nuevo Valor de queryfunction*/ -public void setQueryfunction(String pQueryfunction){ - queryfunction=pQueryfunction; -} - -/**Obtiene el valor de savefunction -@return valor de savefunction*/ -public String getSavefunction(){ - return savefunction; -} -/**Fija el valor de savefunction -@param pSavefunction nuevo Valor de savefunction*/ -public void setSavefunction(String pSavefunction){ - savefunction=pSavefunction; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -/**Obtiene el valor de autodownload -@return valor de autodownload*/ -public String getAutodownload(){ - return autodownload; -} -/**Fija el valor de autodownload -@param pAutodownload nuevo Valor de autodownload*/ -public void setAutodownload(String pAutodownload){ - autodownload=pAutodownload; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubproductPages))return false; - TgeneSubproductPages that = (TgeneSubproductPages) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubproductPages -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubproductPages -*/ -public Object createInstance(){ - TgeneSubproductPages instance=new TgeneSubproductPages(); - instance.setPk(new TgeneSubproductPagesKey()); - return instance; -} -/**Clona la entidad TgeneSubproductPages -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubproductPages p=(TgeneSubproductPages)this.clone(); - p.setPk((TgeneSubproductPagesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPagesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPagesKey.java.svn-base deleted file mode 100644 index 08adb04..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneSubproductPagesKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.page; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTPAGES*/ -@Embeddable -public class TgeneSubproductPagesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del registro ulizada cuando la transaccion tiene mas de una pagina -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneSubproductPagesKey(){} -/**Contructor de TgeneSubproductPagesKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pSequence Secuencia del registro ulizada cuando la transaccion tiene mas de una pagina -*/ -public TgeneSubproductPagesKey(String pModulecode,String pProductcode,String pSubproductcode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pSequence){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneSubproductPagesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubproductPagesKey))return false; - TgeneSubproductPagesKey that = (TgeneSubproductPagesKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubproductPagesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPages.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPages.java.svn-base deleted file mode 100644 index 9c31796..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPages.java.svn-base +++ /dev/null @@ -1,321 +0,0 @@ -package com.fp.persistence.pgeneral.page; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONPAGES*/ -@Entity(name="TgeneTransactionPages") -@Table(name="TGENETRANSACTIONPAGES") -public class TgeneTransactionPages extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionPages -*/ -@EmbeddedId -private TgeneTransactionPagesKey pk; -@Column(name="CONTROLLER", nullable=true) - -/** -* null -*/ -private String controller; - -@Column(name="ACTIVE", nullable=true) - -/** -* Y Indica que la pagina esta activa -*/ -private String active; - -@Column(name="AUTODOWNLOAD", nullable=true) - -/** -* Y Indica que la definicon de la pagina tiene un autodownload y no espera a que se presione un click en el tab para descargar la pagina -*/ -private String autodownload; - -@Column(name="PAGEJSF", nullable=true) - -/** -* null -*/ -private String pagejsf; - -@Column(name="PRESENTATIONORDER", nullable=true) - -/** -* Orden de preentacion de la pagina en la pantalla -*/ -private Integer presentationorder; - -@Column(name="PAGE", nullable=true) - -/** -* Nombre de la pagina asociada al tab -*/ -private String page; - -@Column(name="TITLE", nullable=true) - -/** -* Titulo del tab -*/ -private String title; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* null -*/ -private String description; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="QUERYFUNCTION", nullable=true) - -/** -* Nombre de la funcion de la pagina que ejecuta la consulta -*/ -private String queryfunction; - -@Column(name="SAVEFUNCTION", nullable=true) - -/** -* Nombre de la funcion que se encarga de hacer el commit de la pagina -*/ -private String savefunction; - -/**Contructor por defecto*/ -public TgeneTransactionPages(){ -} -/**Contructor de TgeneTransactionPages -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionPages(TgeneTransactionPagesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionPages -*/ -public static TgeneTransactionPages find(EntityManager pEntityManager,TgeneTransactionPagesKey pKey) throws Exception{ - TgeneTransactionPages obj = pEntityManager.find(TgeneTransactionPages.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionPages -@return El objeto que referencia a la Clave primaria de TgeneTransactionPages -*/ -public TgeneTransactionPagesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionPages -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionPages -*/ -public void setPk(TgeneTransactionPagesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de controller -@return valor de controller*/ -public String getController(){ - return controller; -} -/**Fija el valor de controller -@param pController nuevo Valor de controller*/ -public void setController(String pController){ - controller=pController; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -/**Obtiene el valor de autodownload -@return valor de autodownload*/ -public String getAutodownload(){ - return autodownload; -} -/**Fija el valor de autodownload -@param pAutodownload nuevo Valor de autodownload*/ -public void setAutodownload(String pAutodownload){ - autodownload=pAutodownload; -} - -/**Obtiene el valor de pagejsf -@return valor de pagejsf*/ -public String getPagejsf(){ - return pagejsf; -} -/**Fija el valor de pagejsf -@param pPagejsf nuevo Valor de pagejsf*/ -public void setPagejsf(String pPagejsf){ - pagejsf=pPagejsf; -} - -/**Obtiene el valor de presentationorder -@return valor de presentationorder*/ -public Integer getPresentationorder(){ - return presentationorder; -} -/**Fija el valor de presentationorder -@param pPresentationorder nuevo Valor de presentationorder*/ -public void setPresentationorder(Integer pPresentationorder){ - presentationorder=pPresentationorder; -} - -/**Obtiene el valor de page -@return valor de page*/ -public String getPage(){ - return page; -} -/**Fija el valor de page -@param pPage nuevo Valor de page*/ -public void setPage(String pPage){ - page=pPage; -} - -/**Obtiene el valor de title -@return valor de title*/ -public String getTitle(){ - return title; -} -/**Fija el valor de title -@param pTitle nuevo Valor de title*/ -public void setTitle(String pTitle){ - title=pTitle; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de queryfunction -@return valor de queryfunction*/ -public String getQueryfunction(){ - return queryfunction; -} -/**Fija el valor de queryfunction -@param pQueryfunction nuevo Valor de queryfunction*/ -public void setQueryfunction(String pQueryfunction){ - queryfunction=pQueryfunction; -} - -/**Obtiene el valor de savefunction -@return valor de savefunction*/ -public String getSavefunction(){ - return savefunction; -} -/**Fija el valor de savefunction -@param pSavefunction nuevo Valor de savefunction*/ -public void setSavefunction(String pSavefunction){ - savefunction=pSavefunction; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionPages))return false; - TgeneTransactionPages that = (TgeneTransactionPages) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneTransactionPages -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneTransactionPages -*/ -public Object createInstance(){ - TgeneTransactionPages instance=new TgeneTransactionPages(); - instance.setPk(new TgeneTransactionPagesKey()); - return instance; -} -/**Clona la entidad TgeneTransactionPages -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionPages p=(TgeneTransactionPages)this.clone(); - p.setPk((TgeneTransactionPagesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPagesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPagesKey.java.svn-base deleted file mode 100644 index f62f55f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/page/.svn/text-base/TgeneTransactionPagesKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.page; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONPAGES*/ -@Embeddable -public class TgeneTransactionPagesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del registro ulizada cuando la transaccion tiene mas de una pagina -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionPagesKey(){} -/**Contructor de TgeneTransactionPagesKey -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactionversion Version de transaccion -@param pSequence Secuencia del registro ulizada cuando la transaccion tiene mas de una pagina -*/ -public TgeneTransactionPagesKey(Integer pTransactioncode,String pTransactionmodule,Integer pTransactionversion,Integer pSequence){ - transactioncode=pTransactioncode; - transactionmodule=pTransactionmodule; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacion de la comparacion de TgeneTransactionPagesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionPagesKey))return false; - TgeneTransactionPagesKey that = (TgeneTransactionPagesKey) o; - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneTransactionPagesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/entries deleted file mode 100644 index ed1ea18..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneProcess.java -file - - - - -2022-07-28T03:40:29.826747Z -2e08bd878794dc63fb8037bc4dd51fb8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4492 - -TgeneProcessKey.java -file - - - - -2022-07-28T03:40:29.826747Z -a21a2c74aac2b5325baf2e5eafcf8f01 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5139 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcess.java.svn-base deleted file mode 100644 index 3b25356..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcess.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.proc; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPROCESS*/ -@Entity(name="TgeneProcess") -@Table(name="TGENEPROCESS") -public class TgeneProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneProcess -*/ -@EmbeddedId -private TgeneProcessKey pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descricin generral de las actividades que realiza el comando -*/ -private String description; - -@Column(name="SHORTDESC", nullable=true) - -/** -* null -*/ -private String shortdesc; - -/**Contructor por defecto*/ -public TgeneProcess(){ -} -/**Contructor de TgeneProcess -@param pPk Clave Primaria del entity -@param pDescription Descricin generral de las actividades que realiza el comando -*/ -public TgeneProcess(TgeneProcessKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneProcess -*/ -public static TgeneProcess find(EntityManager pEntityManager,TgeneProcessKey pKey) throws Exception{ - TgeneProcess obj = pEntityManager.find(TgeneProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneProcess -@return El objeto que referencia a la Clave primaria de TgeneProcess -*/ -public TgeneProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneProcess -*/ -public void setPk(TgeneProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de shortdesc -@return valor de shortdesc*/ -public String getShortdesc(){ - return shortdesc; -} -/**Fija el valor de shortdesc -@param pShortdesc nuevo Valor de shortdesc*/ -public void setShortdesc(String pShortdesc){ - shortdesc=pShortdesc; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneProcess))return false; - TgeneProcess that = (TgeneProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneProcess -*/ -public Object createInstance(){ - TgeneProcess instance=new TgeneProcess(); - instance.setPk(new TgeneProcessKey()); - return instance; -} -/**Clona la entidad TgeneProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneProcess p=(TgeneProcess)this.clone(); - p.setPk((TgeneProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcessKey.java.svn-base deleted file mode 100644 index eab5c05..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/proc/.svn/text-base/TgeneProcessKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.proc; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPROCESS*/ -@Embeddable -public class TgeneProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PROCESSCODE", nullable=false,updatable=false) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=false,updatable=false) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -/**Contructor por defecto*/ -public TgeneProcessKey(){} -/**Contructor de TgeneProcessKey -@param pProcesscode Paquete clase de un comando a ejecutar. -@param pCatalogtypeprocess Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -@param pCatalogcodetypeprocess Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -public TgeneProcessKey(String pProcesscode,String pCatalogtypeprocess,String pCatalogcodetypeprocess){ - processcode=pProcesscode; - catalogtypeprocess=pCatalogtypeprocess; - catalogcodetypeprocess=pCatalogcodetypeprocess; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Implementacin de la comparacin de TgeneProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneProcessKey))return false; - TgeneProcessKey that = (TgeneProcessKey) o; - if (this.getProcesscode() == null || that.getProcesscode() == null){ - return false; - } - if (! this.getProcesscode().equals(that.getProcesscode())){ - return false; - } - if (this.getCatalogtypeprocess() == null || that.getCatalogtypeprocess() == null){ - return false; - } - if (! this.getCatalogtypeprocess().equals(that.getCatalogtypeprocess())){ - return false; - } - if (this.getCatalogcodetypeprocess() == null || that.getCatalogcodetypeprocess() == null){ - return false; - } - if (! this.getCatalogcodetypeprocess().equals(that.getCatalogcodetypeprocess())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getProcesscode() == null ? 0 : this.getProcesscode().hashCode()); - result = result * 37 + (this.getCatalogtypeprocess() == null ? 0 : this.getCatalogtypeprocess().hashCode()); - result = result * 37 + (this.getCatalogcodetypeprocess() == null ? 0 : this.getCatalogcodetypeprocess().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/entries deleted file mode 100644 index ff579d9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/entries +++ /dev/null @@ -1,473 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneSubProductCurrencyKey.java -file - - - - -2022-07-28T03:40:29.091744Z -7853f10a6fe66908be650912cc94a88c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5227 - -TgeneProduct.java -file - - - - -2022-07-28T03:40:29.091744Z -25cdc4b873e3a888c747bd279424cfac -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6173 - -TgeneSubprodClientDataKey.java -file - - - - -2022-07-28T03:40:29.091744Z -f307eb6e27ff506b764572e85e00124d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8173 - -TgeneSubprodInstallTypeKey.java -file - - - - -2022-07-28T03:40:29.091744Z -cc8bd26f9075f9174ea978d2af6194e3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5342 - -TgeneProductRelationship.java -file - - - - -2022-07-28T03:40:29.092744Z -c4a1b1344ade69aa4158a16103d4387e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4449 - -TgeneSubProductKey.java -file - - - - -2022-07-28T03:40:29.092744Z -c56ff88f0dae8c6f6ffd39df9b63dd2c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4336 - -TgeneModule.java -file - - - - -2022-07-28T03:40:29.092744Z -71aa69559c5240665729930960df26b6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5779 - -TgeneSubProductCurrency.java -file - - - - -2022-07-28T03:40:29.092744Z -e74394f9e735aec6370f394a0e24c84d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3919 - -TgeneSubprodClientData.java -file - - - - -2022-07-28T03:40:29.093744Z -a634c5936a7ee1374bec1de715ab766d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12752 - -TgeneSubprodInstallType.java -file - - - - -2022-07-28T03:40:29.093744Z -c8cfc189f80cddcb0540a8052b3737bb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4408 - -rate -dir - -TgeneProductKey.java -file - - - - -2022-07-28T03:40:29.093744Z -8e5baabd9b02395fcdee9839a7d0eb85 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3439 - -TgeneSubProduct.java -file - - - - -2022-07-28T03:40:29.093744Z -e9a9fe318831b2fe71945b22e34fec0f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7010 - -TgeneProductRelationshipKey.java -file - - - - -2022-07-28T03:40:29.094744Z -d1045e6909fdf3b7949f21e314e4adc6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3730 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneModule.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneModule.java.svn-base deleted file mode 100644 index 5df5aa5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneModule.java.svn-base +++ /dev/null @@ -1,206 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMODULE*/ -@Entity(name="TgeneModule") -@Table(name="TGENEMODULE") -public class TgeneModule extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneModule - */ - @Id - @Column(name="MODULECODE" ,nullable=false, updatable=false) - private String pk; - @Version - @Column(name="RECORDVERSION", nullable=true) - - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name="DESCRIPTION", nullable=false) - - /** - * Descripcion del modulo - */ - private String description; - - @Column(name="ISVISIBLE", nullable=true) - - /** - * null - */ - private String isvisible; - - /**Contructor por defecto*/ - public TgeneModule(){ - } - /**Contructor de TgeneModule - @param pPk Clave Primaria del entity - @param pDescription Descripcion del modulo - */ - public TgeneModule(String pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneModule - */ - public static TgeneModule find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneModule obj = pEntityManager.find(TgeneModule.class,pKey); - return obj; - } - /**Entrega la Clave primaria de TgeneModule - @return El objeto que referencia a la Clave primaria de TgeneModule - */ - public String getPk(){ - return pk; - } - /**Fija un nuevo valor a la Clave primaria de TgeneModule - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneModule - */ - public void setPk(String pPk){ - pk=pPk; - } - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion(){ - return recordversion; - } - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; - } - - /**Obtiene el valor de description - @return valor de description*/ - public String getDescription(){ - return description; - } - /**Fija el valor de description - @param pDescription nuevo Valor de description*/ - public void setDescription(String pDescription){ - description=pDescription; - } - - /**Obtiene el valor de isvisible - @return valor de isvisible*/ - public String getIsvisible(){ - return isvisible; - } - /**Fija el valor de isvisible - @param pIsvisible nuevo Valor de isvisible*/ - public void setIsvisible(String pIsvisible){ - isvisible=pIsvisible; - } - - public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneModule))return false; - TgeneModule that = (TgeneModule) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /**Implementacin del metodo hashCode de la la entidad TgeneModule - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /**Implementacin toString - */ - public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } - /**Implementacin de la creacin de un bean en blanco TgeneModule - */ - public Object createInstance(){ - TgeneModule instance=new TgeneModule(); - return instance; - } - /**Clona la entidad TgeneModule - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException{ - TgeneModule p=(TgeneModule)this.clone(); - return p; - } - - //Metodos manuales - - /** - * Sentencia que devuelve un registro de TgeneModule. - */ - private static final String JPQL_TGENE_MODULE = - "from TgeneModule tmod " - + " where tmod.pk = :modulecode"; - - /** - * Metodo que obtiene datos de un registro del modulo. - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @return TgeneModule - * @throws Exception - */ - public static TgeneModule find(EntityManager pEntityManager,String pModulecode) throws Exception { - Query qry = pEntityManager.createQuery(JPQL_TGENE_MODULE); - qry.setParameter("modulecode", pModulecode); - try { - return (TgeneModule) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProduct.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProduct.java.svn-base deleted file mode 100644 index d570912..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProduct.java.svn-base +++ /dev/null @@ -1,242 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEPRODUCT - */ -@Entity(name = "TgeneProduct") -@Table(name = "TGENEPRODUCT") -public class TgeneProduct extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneProduct - */ - @EmbeddedId - private TgeneProductKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = false) - /** - * Nombre del producto - */ - private String description; - - /** Contructor por defecto */ - public TgeneProduct() { - } - - /** - * Contructor de TgeneProduct - * - * @param pPk - * Clave Primaria del entity - * @param pDescription - * Nombre del producto - */ - public TgeneProduct(TgeneProductKey pPk, String pDescription) { - this(); - pk = pPk; - description = pDescription; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneProduct - */ - public static TgeneProduct find(EntityManager pEntityManager, - TgeneProductKey pKey) throws Exception { - TgeneProduct obj = pEntityManager.find(TgeneProduct.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneProduct - * - * @return El objeto que referencia a la Clave primaria de TgeneProduct - */ - public TgeneProductKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneProduct - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneProduct - */ - public void setPk(TgeneProductKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription - * nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneProduct)) - return false; - TgeneProduct that = (TgeneProduct) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneProduct - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneProduct */ - public Object createInstance() { - TgeneProduct instance = new TgeneProduct(); - instance.setPk(new TgeneProductKey()); - return instance; - } - - /** - * Clona la entidad TgeneProduct - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneProduct p = (TgeneProduct) this.clone(); - p.setPk((TgeneProductKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** - * Sentencia que devuelve un registro de TgeneProduct. - */ - private static final String JPQL_TGENE_PRODUCT = - "from TgeneProduct tprod " - + " where tprod.pk.modulecode = :modulecode " - + " and tprod.pk.productcode = :productcode "; - - /** - * Metodo que obtiene datos de un registro del producto. - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @return TgeneProduct - * @throws Exception - */ - public static TgeneProduct find(EntityManager pEntityManager,String pModulecode, String pProductcode) throws Exception { - Query qry = pEntityManager.createQuery(JPQL_TGENE_PRODUCT); - qry.setParameter("modulecode", pModulecode); - qry.setParameter("productcode", pProductcode); - try { - return (TgeneProduct) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductKey.java.svn-base deleted file mode 100644 index 7e641fe..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPRODUCT*/ -@Embeddable -public class TgeneProductKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -/**Contructor por defecto*/ -public TgeneProductKey(){} -/**Contructor de TgeneProductKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -*/ -public TgeneProductKey(String pModulecode,String pProductcode){ - modulecode=pModulecode; - productcode=pProductcode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Implementacin de la comparacin de TgeneProductKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneProductKey))return false; - TgeneProductKey that = (TgeneProductKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneProductKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationship.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationship.java.svn-base deleted file mode 100644 index c0b1589..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationship.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEPRODUCTRELATIONSHIP*/ -@Entity(name="TgeneProductRelationship") -@Table(name="TGENEPRODUCTRELATIONSHIP") -public class TgeneProductRelationship extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneProductRelationship -*/ -@EmbeddedId -private TgeneProductRelationshipKey pk; -@Column(name="ISPRINCIPAL", nullable=true) - -/** -* Indica si el codigo de relacion es principal, en este caso el codigo de cliente se asocia a la tabla tgeneaccount -*/ -private String isprincipal; - -/**Contructor por defecto*/ -public TgeneProductRelationship(){ -} -/**Contructor de TgeneProductRelationship -@param pPk Clave Primaria del entity -*/ -public TgeneProductRelationship(TgeneProductRelationshipKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneProductRelationship -*/ -public static TgeneProductRelationship find(EntityManager pEntityManager,TgeneProductRelationshipKey pKey) throws Exception{ - TgeneProductRelationship obj = pEntityManager.find(TgeneProductRelationship.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneProductRelationship -@return El objeto que referencia a la Clave primaria de TgeneProductRelationship -*/ -public TgeneProductRelationshipKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneProductRelationship -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneProductRelationship -*/ -public void setPk(TgeneProductRelationshipKey pPk){ - pk=pPk; -} -/**Obtiene el valor de isprincipal -@return valor de isprincipal*/ -public String getIsprincipal(){ - return isprincipal; -} -/**Fija el valor de isprincipal -@param pIsprincipal nuevo Valor de isprincipal*/ -public void setIsprincipal(String pIsprincipal){ - isprincipal=pIsprincipal; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneProductRelationship))return false; - TgeneProductRelationship that = (TgeneProductRelationship) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneProductRelationship -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneProductRelationship -*/ -public Object createInstance(){ - TgeneProductRelationship instance=new TgeneProductRelationship(); - instance.setPk(new TgeneProductRelationshipKey()); - return instance; -} -/**Clona la entidad TgeneProductRelationship -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneProductRelationship p=(TgeneProductRelationship)this.clone(); - p.setPk((TgeneProductRelationshipKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationshipKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationshipKey.java.svn-base deleted file mode 100644 index c656031..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneProductRelationshipKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPRODUCTRELATIONSHIP*/ -@Embeddable -public class TgeneProductRelationshipKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="RELATIONSHIPCODE", nullable=false,updatable=false) - -/** -* Codigo de relacion de la cuenta con el cliente -*/ -private String relationshipcode; - -/**Contructor por defecto*/ -public TgeneProductRelationshipKey(){} -/**Contructor de TgeneProductRelationshipKey -@param pModulecode Codigo de modulo -@param pRelationshipcode Codigo de relacion de la cuenta con el cliente -*/ -public TgeneProductRelationshipKey(String pModulecode,String pRelationshipcode){ - modulecode=pModulecode; - relationshipcode=pRelationshipcode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de relationshipcode -@return valor de relationshipcode*/ -public String getRelationshipcode(){ - return relationshipcode; -} -/**Fija el valor de relationshipcode -@param pRelationshipcode nuevo Valor de relationshipcode*/ -public void setRelationshipcode(String pRelationshipcode){ - relationshipcode=pRelationshipcode; -} - -/**Implementacin de la comparacin de TgeneProductRelationshipKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneProductRelationshipKey))return false; - TgeneProductRelationshipKey that = (TgeneProductRelationshipKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getRelationshipcode() == null || that.getRelationshipcode() == null){ - return false; - } - if (! this.getRelationshipcode().equals(that.getRelationshipcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneProductRelationshipKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getRelationshipcode() == null ? 0 : this.getRelationshipcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProduct.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProduct.java.svn-base deleted file mode 100644 index b187472..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProduct.java.svn-base +++ /dev/null @@ -1,270 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENESUBPRODUCT - */ -@Entity(name = "TgeneSubProduct") -@Table(name = "TGENESUBPRODUCT") -public class TgeneSubProduct extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneSubProduct - */ - @EmbeddedId - private TgeneSubProductKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "INITIALS", nullable = true) - /** - * Siglas del producto - */ - private String initials; - - @Column(name = "DESCRIPTION", nullable = false) - /** - * Descripcion del sub producto. - */ - private String description; - - /** Contructor por defecto */ - public TgeneSubProduct() { - } - - /** - * Contructor de TgeneSubProduct - * - * @param pPk - * Clave Primaria del entity - * @param pDescription - * Descripcion del sub producto. - */ - public TgeneSubProduct(TgeneSubProductKey pPk, String pDescription) { - this(); - pk = pPk; - description = pDescription; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneSubProduct - */ - public static TgeneSubProduct find(EntityManager pEntityManager, - TgeneSubProductKey pKey) throws Exception { - TgeneSubProduct obj = pEntityManager.find(TgeneSubProduct.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSubProduct - * - * @return El objeto que referencia a la Clave primaria de TgeneSubProduct - */ - public TgeneSubProductKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSubProduct - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneSubProduct - */ - public void setPk(TgeneSubProductKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de initials - * - * @return valor de initials - */ - public String getInitials() { - return initials; - } - - /** - * Fija el valor de initials - * - * @param pInitials - * nuevo Valor de initials - */ - public void setInitials(String pInitials) { - initials = pInitials; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription - * nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneSubProduct)) - return false; - TgeneSubProduct that = (TgeneSubProduct) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneSubProduct - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneSubProduct */ - public Object createInstance() { - TgeneSubProduct instance = new TgeneSubProduct(); - instance.setPk(new TgeneSubProductKey()); - return instance; - } - - /** - * Clona la entidad TgeneSubProduct - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneSubProduct p = (TgeneSubProduct) this.clone(); - p.setPk((TgeneSubProductKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales - /** - * Sentencia que devuelve un registro de TgeneSubProduct. - */ - private static final String JPQL_TGENE_SUBPRODUCT = - "from TgeneSubProduct tsubprod " - + " where tsubprod.pk.modulecode = :modulecode " - + " and tsubprod.pk.productcode = :productcode " - + " and tsubprod.pk.subproductcode = :subproductcode "; - - /** - * Metodo que obtiene datos de un registro del subproducto. - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @param pSubproductcode Codigo de subproducto a obtener datos de la base. - * @return TgeneSubProduct - * @throws Exception - */ - public static TgeneSubProduct find(EntityManager pEntityManager,String pModulecode, String pProductcode, String pSubproductcode) throws Exception { - Query qry = pEntityManager.createQuery(JPQL_TGENE_SUBPRODUCT); - qry.setParameter("modulecode", pModulecode); - qry.setParameter("productcode", pProductcode); - qry.setParameter("subproductcode", pSubproductcode); - try { - return (TgeneSubProduct) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrency.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrency.java.svn-base deleted file mode 100644 index 785cd52..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrency.java.svn-base +++ /dev/null @@ -1,121 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTCURRENCY*/ -@Entity(name="TgeneSubProductCurrency") -@Table(name="TGENESUBPRODUCTCURRENCY") -public class TgeneSubProductCurrency extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubProductCurrency -*/ -@EmbeddedId -private TgeneSubProductCurrencyKey pk; -/**Contructor por defecto*/ -public TgeneSubProductCurrency(){ -} -/**Contructor de TgeneSubProductCurrency -@param pPk Clave Primaria del entity -*/ -public TgeneSubProductCurrency(TgeneSubProductCurrencyKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubProductCurrency -*/ -public static TgeneSubProductCurrency find(EntityManager pEntityManager,TgeneSubProductCurrencyKey pKey) throws Exception{ - TgeneSubProductCurrency obj = pEntityManager.find(TgeneSubProductCurrency.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubProductCurrency -@return El objeto que referencia a la Clave primaria de TgeneSubProductCurrency -*/ -public TgeneSubProductCurrencyKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubProductCurrency -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductCurrency -*/ -public void setPk(TgeneSubProductCurrencyKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubProductCurrency))return false; - TgeneSubProductCurrency that = (TgeneSubProductCurrency) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubProductCurrency -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubProductCurrency -*/ -public Object createInstance(){ - TgeneSubProductCurrency instance=new TgeneSubProductCurrency(); - instance.setPk(new TgeneSubProductCurrencyKey()); - return instance; -} -/**Clona la entidad TgeneSubProductCurrency -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubProductCurrency p=(TgeneSubProductCurrency)this.clone(); - p.setPk((TgeneSubProductCurrencyKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrencyKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrencyKey.java.svn-base deleted file mode 100644 index 7464218..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductCurrencyKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTCURRENCY*/ -@Embeddable -public class TgeneSubProductCurrencyKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneSubProductCurrencyKey(){} -/**Contructor de TgeneSubProductCurrencyKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -*/ -public TgeneSubProductCurrencyKey(String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneSubProductCurrencyKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductCurrencyKey))return false; - TgeneSubProductCurrencyKey that = (TgeneSubProductCurrencyKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubProductCurrencyKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductKey.java.svn-base deleted file mode 100644 index 56ea262..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubProductKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCT*/ -@Embeddable -public class TgeneSubProductKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -/**Contructor por defecto*/ -public TgeneSubProductKey(){} -/**Contructor de TgeneSubProductKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -*/ -public TgeneSubProductKey(String pModulecode,String pProductcode,String pSubproductcode){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Implementacin de la comparacin de TgeneSubProductKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductKey))return false; - TgeneSubProductKey that = (TgeneSubProductKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubProductKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientData.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientData.java.svn-base deleted file mode 100644 index 4ae3134..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientData.java.svn-base +++ /dev/null @@ -1,358 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODCLIENTDATA */ -@Entity(name = "TgeneSubprodClientData") -@Table(name = "TGENESUBPRODCLIENTDATA") -public class TgeneSubprodClientData extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSubprodClientData - */ - @EmbeddedId - private TgeneSubprodClientDataKey pk; - - @Column(name = "MODIFIABLE", nullable = true) - /** - * Y indica que la informacion del cliente es modificable en la transaccion de verificaciond e informacion de clientes. - */ - private String modifiable; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro. - */ - private Integer recordversion; - - @Column(name = "ACTIVE", nullable = true) - /** - * Y indica que la validacion de la pagina esta activa. - */ - private String active; - - @Column(name = "PRESENTATIONORDER", nullable = true) - /** - * Orden de presentacion - */ - private Integer presentationorder; - - /** Contructor por defecto */ - public TgeneSubprodClientData() { - } - - /** - * Contructor de TgeneSubprodClientData - * - * @param pPk Clave Primaria del entity - */ - public TgeneSubprodClientData(TgeneSubprodClientDataKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSubprodClientData - */ - public static TgeneSubprodClientData find(EntityManager pEntityManager, TgeneSubprodClientDataKey pKey) throws Exception { - TgeneSubprodClientData obj = pEntityManager.find(TgeneSubprodClientData.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSubprodClientData - * - * @return El objeto que referencia a la Clave primaria de TgeneSubprodClientData - */ - public TgeneSubprodClientDataKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSubprodClientData - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubprodClientData - */ - public void setPk(TgeneSubprodClientDataKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de modifiable - * - * @return valor de modifiable - */ - public String getModifiable() { - return this.modifiable; - } - - /** - * Fija el valor de modifiable - * - * @param pModifiable nuevo Valor de modifiable - */ - public void setModifiable(String pModifiable) { - this.modifiable = pModifiable; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de active - * - * @return valor de active - */ - public String getActive() { - return this.active; - } - - /** - * Fija el valor de active - * - * @param pActive nuevo Valor de active - */ - public void setActive(String pActive) { - this.active = pActive; - } - - /** - * Obtiene el valor de presentationorder - * - * @return valor de presentationorder - */ - public Integer getPresentationorder() { - return this.presentationorder; - } - - /** - * Fija el valor de presentationorder - * - * @param pPresentationorder nuevo Valor de presentationorder - */ - public void setPresentationorder(Integer pPresentationorder) { - this.presentationorder = pPresentationorder; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubprodClientData)) { - return false; - } - TgeneSubprodClientData that = (TgeneSubprodClientData) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneSubprodClientData - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneSubprodClientData */ - @Override - public Object createInstance() { - TgeneSubprodClientData instance = new TgeneSubprodClientData(); - instance.setPk(new TgeneSubprodClientDataKey()); - return instance; - } - - /** - * Clona la entidad TgeneSubprodClientData - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSubprodClientData p = (TgeneSubprodClientData) this.clone(); - p.setPk((TgeneSubprodClientDataKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - /** Sentencia que devuelve la definicion datos de clientes requeridos para aprobar una solicitud. */ - private static final String JPQL_SUBPROD_CLIENT_DATA = "from TgeneSubprodClientData tcd " + " where tcd.pk.modulecode = :modulecode " - + " and tcd.pk.productcode = :productcode " + " and tcd.pk.subproductcode = :subproductcode " - + " and tcd.pk.persontypecatalog = :persontype " + " and tcd.pk.relationshipcode = :relationshipcode " - + " order by tcd.presentationorder "; - - /** - * Metodo que entrega una lista de datos requeridos de clientes por producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findByProduct(EntityManager pEntityManager, String pModuleCode, String pProductCode, - String pSubproductCode, String pPersontype, String pRelationshipcode) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(TgeneSubprodClientData.JPQL_SUBPROD_CLIENT_DATA); - qry.setParameter(com.fp.common.helper.Constant.VMODULECODE, pModuleCode); - qry.setParameter(com.fp.common.helper.Constant.VPRODUCTCODE, pProductCode); - qry.setParameter(com.fp.common.helper.Constant.VSUBPRODUCTCODE, pSubproductCode); - qry.setParameter("persontype", pPersontype); - qry.setParameter("relationshipcode", pRelationshipcode); - ldata = qry.getResultList(); - return ldata; - } - - /** Sentencia que devuelve la definicion datos de clientes requeridos para aprobar una solicitud. */ - private static final String JPQL_SUBPROD_CLIENT_DATA_ACTIVE = "from TgeneSubprodClientData tcd " + " where tcd.pk.modulecode = :modulecode " - + " and tcd.pk.productcode = :productcode " + " and tcd.pk.subproductcode = :subproductcode " - + " and tcd.pk.persontypecatalog = :persontype " + " and tcd.pk.relationshipcode = :relationshipcode " + " and tcd.active = 'Y' " - + " order by tcd.presentationorder "; - - /** - * Metodo que entrega una lista de datos requeridos de clientes por producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findByProductActive(EntityManager pEntityManager, String pModuleCode, String pProductCode, - String pSubproductCode, String pPersontype, String pRelationshipcode) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(TgeneSubprodClientData.JPQL_SUBPROD_CLIENT_DATA_ACTIVE); - qry.setParameter(com.fp.common.helper.Constant.VMODULECODE, pModuleCode); - qry.setParameter(com.fp.common.helper.Constant.VPRODUCTCODE, pProductCode); - qry.setParameter(com.fp.common.helper.Constant.VSUBPRODUCTCODE, pSubproductCode); - qry.setParameter("persontype", pPersontype); - qry.setParameter("relationshipcode", pRelationshipcode); - ldata = qry.getResultList(); - return ldata; - } - - /** - * Sentencia SQL que obtiene un objeto de tipo TgeneSolicitude - */ - private static final String JPQL_SUBPRODUCT_CLIENT_DATA = "from TgeneSubprodClientData tgs" + " where tgs.pk.modulecode = :modulecode" - + " and tgs.pk.productcode = :productcode" + " and tgs.pk.subproductcode = :subproductcode" - + " and tgs.pk.persontypecatalog = :persontypecatalog" + " and tgs.pk.persontypecatalogcode = :persontypecatalogcode" - + " and tgs.pk.relationshipcode = :relationshipcode" + " and tgs.pk.title = :title"; - - /** - * Metodo que devuelve un objeto de tipo TgeneSubprodClientData - * - * @param modulecode - * @param productcode - * @param subproductcode - * @param persontype - * @param relationshipcode - * @param title - * @return - * @throws Exception - */ - public static TgeneSubprodClientData find(EntityManager pEntityManager, String modulecode, String productcode, String subproductcode, - String persontype, String relationshipcode, String title) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSubprodClientData.JPQL_SUBPRODUCT_CLIENT_DATA); - qry.setParameter("modulecode", modulecode); - qry.setParameter("productcode", productcode); - qry.setParameter("subproductcode", subproductcode); - qry.setParameter("persontypecatalog", persontype); - qry.setParameter("persontypecatalogcode", "PERSONTYPE"); - qry.setParameter("relationshipcode", relationshipcode); - qry.setParameter("title", title); - try { - return (TgeneSubprodClientData) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientDataKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientDataKey.java.svn-base deleted file mode 100644 index 7323ad8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodClientDataKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODCLIENTDATA*/ -@Embeddable -public class TgeneSubprodClientDataKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="PERSONTYPECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String persontypecatalog; - -@Column(name="PERSONTYPECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String persontypecatalogcode; - -@Column(name="RELATIONSHIPCODE", nullable=false,updatable=false) - -/** -* Codigo de relacion de la cuenta con el cliente -*/ -private String relationshipcode; - -@Column(name="TITLE", nullable=false,updatable=false) - -/** -* Codigo de informacion de clientes requerido. -*/ -private String title; - -/**Contructor por defecto*/ -public TgeneSubprodClientDataKey(){} -/**Contructor de TgeneSubprodClientDataKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pPersontypecatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pPersontypecatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pRelationshipcode Codigo de relacion de la cuenta con el cliente -@param pTitle Codigo de informacion de clientes requerido. -*/ -public TgeneSubprodClientDataKey(String pModulecode,String pProductcode,String pSubproductcode,String pPersontypecatalog,String pPersontypecatalogcode,String pRelationshipcode,String pTitle){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - persontypecatalog=pPersontypecatalog; - persontypecatalogcode=pPersontypecatalogcode; - relationshipcode=pRelationshipcode; - title=pTitle; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de persontypecatalog -@return valor de persontypecatalog*/ -public String getPersontypecatalog(){ - return persontypecatalog; -} -/**Fija el valor de persontypecatalog -@param pPersontypecatalog nuevo Valor de persontypecatalog*/ -public void setPersontypecatalog(String pPersontypecatalog){ - persontypecatalog=pPersontypecatalog; -} - -/**Obtiene el valor de persontypecatalogcode -@return valor de persontypecatalogcode*/ -public String getPersontypecatalogcode(){ - return persontypecatalogcode; -} -/**Fija el valor de persontypecatalogcode -@param pPersontypecatalogcode nuevo Valor de persontypecatalogcode*/ -public void setPersontypecatalogcode(String pPersontypecatalogcode){ - persontypecatalogcode=pPersontypecatalogcode; -} - -/**Obtiene el valor de relationshipcode -@return valor de relationshipcode*/ -public String getRelationshipcode(){ - return relationshipcode; -} -/**Fija el valor de relationshipcode -@param pRelationshipcode nuevo Valor de relationshipcode*/ -public void setRelationshipcode(String pRelationshipcode){ - relationshipcode=pRelationshipcode; -} - -/**Obtiene el valor de title -@return valor de title*/ -public String getTitle(){ - return title; -} -/**Fija el valor de title -@param pTitle nuevo Valor de title*/ -public void setTitle(String pTitle){ - title=pTitle; -} - -/**Implementacin de la comparacin de TgeneSubprodClientDataKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubprodClientDataKey))return false; - TgeneSubprodClientDataKey that = (TgeneSubprodClientDataKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getPersontypecatalog() == null || that.getPersontypecatalog() == null){ - return false; - } - if (! this.getPersontypecatalog().equals(that.getPersontypecatalog())){ - return false; - } - if (this.getPersontypecatalogcode() == null || that.getPersontypecatalogcode() == null){ - return false; - } - if (! this.getPersontypecatalogcode().equals(that.getPersontypecatalogcode())){ - return false; - } - if (this.getRelationshipcode() == null || that.getRelationshipcode() == null){ - return false; - } - if (! this.getRelationshipcode().equals(that.getRelationshipcode())){ - return false; - } - if (this.getTitle() == null || that.getTitle() == null){ - return false; - } - if (! this.getTitle().equals(that.getTitle())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubprodClientDataKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getPersontypecatalog() == null ? 0 : this.getPersontypecatalog().hashCode()); - result = result * 37 + (this.getPersontypecatalogcode() == null ? 0 : this.getPersontypecatalogcode().hashCode()); - result = result * 37 + (this.getRelationshipcode() == null ? 0 : this.getRelationshipcode().hashCode()); - result = result * 37 + (this.getTitle() == null ? 0 : this.getTitle().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallType.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallType.java.svn-base deleted file mode 100644 index e26d2d8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallType.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODINSTALLTYPE*/ -@Entity(name="TgeneSubprodInstallType") -@Table(name="TGENESUBPRODINSTALLTYPE") -public class TgeneSubprodInstallType extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubprodInstallType -*/ -@EmbeddedId -private TgeneSubprodInstallTypeKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TgeneSubprodInstallType(){ -} -/**Contructor de TgeneSubprodInstallType -@param pPk Clave Primaria del entity -*/ -public TgeneSubprodInstallType(TgeneSubprodInstallTypeKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubprodInstallType -*/ -public static TgeneSubprodInstallType find(EntityManager pEntityManager,TgeneSubprodInstallTypeKey pKey) throws Exception{ - TgeneSubprodInstallType obj = pEntityManager.find(TgeneSubprodInstallType.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubprodInstallType -@return El objeto que referencia a la Clave primaria de TgeneSubprodInstallType -*/ -public TgeneSubprodInstallTypeKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubprodInstallType -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubprodInstallType -*/ -public void setPk(TgeneSubprodInstallTypeKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubprodInstallType))return false; - TgeneSubprodInstallType that = (TgeneSubprodInstallType) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubprodInstallType -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubprodInstallType -*/ -public Object createInstance(){ - TgeneSubprodInstallType instance=new TgeneSubprodInstallType(); - instance.setPk(new TgeneSubprodInstallTypeKey()); - return instance; -} -/**Clona la entidad TgeneSubprodInstallType -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubprodInstallType p=(TgeneSubprodInstallType)this.clone(); - p.setPk((TgeneSubprodInstallTypeKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallTypeKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallTypeKey.java.svn-base deleted file mode 100644 index 39feb99..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/.svn/text-base/TgeneSubprodInstallTypeKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.product; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODINSTALLTYPE*/ -@Embeddable -public class TgeneSubprodInstallTypeKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="INSTALLMENTTYPE", nullable=false,updatable=false) - -/** -* Codigo de tipo de tabla de amortizacion -*/ -private String installmenttype; - -/**Contructor por defecto*/ -public TgeneSubprodInstallTypeKey(){} -/**Contructor de TgeneSubprodInstallTypeKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pInstallmenttype Codigo de tipo de tabla de amortizacion -*/ -public TgeneSubprodInstallTypeKey(String pModulecode,String pProductcode,String pSubproductcode,String pInstallmenttype){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - installmenttype=pInstallmenttype; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de installmenttype -@return valor de installmenttype*/ -public String getInstallmenttype(){ - return installmenttype; -} -/**Fija el valor de installmenttype -@param pInstallmenttype nuevo Valor de installmenttype*/ -public void setInstallmenttype(String pInstallmenttype){ - installmenttype=pInstallmenttype; -} - -/**Implementacin de la comparacin de TgeneSubprodInstallTypeKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubprodInstallTypeKey))return false; - TgeneSubprodInstallTypeKey that = (TgeneSubprodInstallTypeKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getInstallmenttype() == null || that.getInstallmenttype() == null){ - return false; - } - if (! this.getInstallmenttype().equals(that.getInstallmenttype())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubprodInstallTypeKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getInstallmenttype() == null ? 0 : this.getInstallmenttype().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/entries deleted file mode 100644 index c25f115..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/entries +++ /dev/null @@ -1,572 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneSubProductInstallmentRatesKey.java -file - - - - -2022-07-28T03:40:29.061744Z -a300bb9b84d41665128b76239423f6e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7547 - -TgeneSegmentRate.java -file - - - - -2022-07-28T03:40:29.061744Z -d4f7bf194293b3c4fff9641a150e896e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12526 - -TgeneSubProductRateKey.java -file - - - - -2022-07-28T03:40:29.061744Z -0f1ce914f9026c9f29c2b8e5538b1bec -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8936 - -TgeneBaseRateDetailKey.java -file - - - - -2022-07-28T03:40:29.061744Z -69f8cff5dfb17c6c9040dbb16e090dd0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5533 - -TgeneBaseRate.java -file - - - - -2022-07-28T03:40:29.062744Z -c51ae68fdab7498aba9e3902ed04e047 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3594 - -TgeneSegmentRateKey.java -file - - - - -2022-07-28T03:40:29.062744Z -0712bf68602af675e576a6f6a63d217a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9319 - -TgeneRatesGroup.java -file - - - - -2022-07-28T03:40:29.062744Z -6d902d45ed8ecd52414a39cfa005840e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6995 - -TgeneSubProductLiquidation.java -file - - - - -2022-07-28T03:40:29.062744Z -943ea5356287d31af142277b562a2748 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9891 - -TgeneBaseRateKey.java -file - - - - -2022-07-28T03:40:29.063744Z -745bca38019715ee21fa829ffa4cdf3c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4682 - -TgeneSubProductInstallmentCharges.java -file - - - - -2022-07-28T03:40:29.063744Z -0ca4f8eb1a46a15e9f2b19ad422777b0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8601 - -TgeneSubProductInstallmentRates.java -file - - - - -2022-07-28T03:40:29.063744Z -80459a5d6b4838071ff0cefaa6e0024f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11773 - -TgeneRatesGroupKey.java -file - - - - -2022-07-28T03:40:29.063744Z -d7f2c972aeb36e55bd3779adc8d32660 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9083 - -TgeneSubProductRate.java -file - - - - -2022-07-28T03:40:29.064744Z -4c5e34a6571321fd4cfebada85ac1e99 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -22331 - -TgeneSubProductLiquidationKey.java -file - - - - -2022-07-28T03:40:29.064744Z -1949e68ad3c9b33406b712c2187c6152 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7936 - -TgeneBaseRateDetail.java -file - - - - -2022-07-28T03:40:29.064744Z -0ec9a5a3c29575ce9d7cf0af015ea766 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13355 - -TgeneSubProductInstallmentChargesKey.java -file - - - - -2022-07-28T03:40:29.065744Z -b9d8c915d4c7c34c7f8f8cd29dd9ff8e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8054 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRate.java.svn-base deleted file mode 100644 index 948c1a4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRate.java.svn-base +++ /dev/null @@ -1,121 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEBASERATE*/ -@Entity(name="TgeneBaseRate") -@Table(name="TGENEBASERATE") -public class TgeneBaseRate extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneBaseRate -*/ -@EmbeddedId -private TgeneBaseRateKey pk; -/**Contructor por defecto*/ -public TgeneBaseRate(){ -} -/**Contructor de TgeneBaseRate -@param pPk Clave Primaria del entity -*/ -public TgeneBaseRate(TgeneBaseRateKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneBaseRate -*/ -public static TgeneBaseRate find(EntityManager pEntityManager,TgeneBaseRateKey pKey) throws Exception{ - TgeneBaseRate obj = pEntityManager.find(TgeneBaseRate.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneBaseRate -@return El objeto que referencia a la Clave primaria de TgeneBaseRate -*/ -public TgeneBaseRateKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneBaseRate -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneBaseRate -*/ -public void setPk(TgeneBaseRateKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneBaseRate))return false; - TgeneBaseRate that = (TgeneBaseRate) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneBaseRate -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneBaseRate -*/ -public Object createInstance(){ - TgeneBaseRate instance=new TgeneBaseRate(); - instance.setPk(new TgeneBaseRateKey()); - return instance; -} -/**Clona la entidad TgeneBaseRate -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneBaseRate p=(TgeneBaseRate)this.clone(); - p.setPk((TgeneBaseRateKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetail.java.svn-base deleted file mode 100644 index 5f7907b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetail.java.svn-base +++ /dev/null @@ -1,404 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import javax.persistence.GeneratedValue; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEBASERATEDETAIL - */ -@Entity(name = "TgeneBaseRateDetail") -@Table(name = "TGENEBASERATEDETAIL") -public class TgeneBaseRateDetail extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Cache, Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneBaseRateDetail - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(RATESEQUENCE),0)+1 from TGENEBASERATEDETAIL where BASERATECATALOG=:baseratecatalog and BASERATECATALOGCODE=:baseratecatalogcode and CURRENCYCODE=:currencycode"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "baseratecatalog,pk.baseratecatalog;baseratecatalogcode,pk.baseratecatalogcode;currencycode,pk.currencycode"), - @Parameter(name = "field", value = "ratesequence")}) - @GeneratedValue(generator = "seq_id") - private TgeneBaseRateDetailKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Manejo de optimistic locking - */ - private Integer recordversion; - @Column(name = "RATE", nullable = true) - /** - * Tasa asociada - */ - private BigDecimal rate; - @Column(name = "NOMINALRATE", nullable = false) - /** - * Y, Indica que el tipo de tasa referencial es nominal, N el tipo de tasa - * es efectiva. - */ - private String nominalrate; - @Column(name = "VALIDITYRATE", nullable = false) - /** - * Fecha desde la cual esta vigente la defincion de la tasa base. - */ - private Date validityrate; - @Column(name = "EXPIRATIONDATE", nullable = false) - /** - * Fecha hasta la cual esta vigente la definicion de la tasa base. - */ - private Date expirationdate; - - /** - * Contructor por defecto - */ - public TgeneBaseRateDetail() { - } - - /** - * Contructor de TgeneBaseRateDetail - * - * @param pPk Clave Primaria del entity - * @param pNominalrate Y, Indica que el tipo de tasa referencial es nominal, - * N el tipo de tasa es efectiva. - * @param pValidityrate Fecha desde la cual esta vigente la defincion de la - * tasa base. - * @param pExpirationdate Fecha hasta la cual esta vigente la definicion de - * la tasa base. - */ - public TgeneBaseRateDetail(TgeneBaseRateDetailKey pPk, String pNominalrate, Date pValidityrate, Date pExpirationdate) { - this(); - this.pk = pPk; - this.nominalrate = pNominalrate; - this.validityrate = pValidityrate; - this.expirationdate = pExpirationdate; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneBaseRateDetail - */ - public static TgeneBaseRateDetail find(EntityManager pEntityManager, TgeneBaseRateDetailKey pKey) throws Exception { - TgeneBaseRateDetail obj = pEntityManager.find(TgeneBaseRateDetail.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneBaseRateDetail - * - * @return El objeto que referencia a la Clave primaria de - * TgeneBaseRateDetail - */ - public TgeneBaseRateDetailKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneBaseRateDetail - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneBaseRateDetail - */ - public void setPk(TgeneBaseRateDetailKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de rate - * - * @return valor de rate - */ - public BigDecimal getRate() { - return this.rate; - } - - /** - * Fija el valor de rate - * - * @param pRate nuevo Valor de rate - */ - public void setRate(BigDecimal pRate) { - this.rate = pRate; - } - - /** - * Obtiene el valor de nominalrate - * - * @return valor de nominalrate - */ - public String getNominalrate() { - return this.nominalrate; - } - - /** - * Fija el valor de nominalrate - * - * @param pNominalrate nuevo Valor de nominalrate - */ - public void setNominalrate(String pNominalrate) { - this.nominalrate = pNominalrate; - } - - /** - * Obtiene el valor de validityrate - * - * @return valor de validityrate - */ - public Date getValidityrate() { - return this.validityrate; - } - - /** - * Fija el valor de validityrate - * - * @param pValidityrate nuevo Valor de validityrate - */ - public void setValidityrate(Date pValidityrate) { - this.validityrate = pValidityrate; - } - - /** - * Obtiene el valor de expirationdate - * - * @return valor de expirationdate - */ - public Date getExpirationdate() { - return this.expirationdate; - } - - /** - * Fija el valor de expirationdate - * - * @param pExpirationdate nuevo Valor de expirationdate - */ - public void setExpirationdate(Date pExpirationdate) { - this.expirationdate = pExpirationdate; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneBaseRateDetail)) { - return false; - } - TgeneBaseRateDetail that = (TgeneBaseRateDetail) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneBaseRateDetail - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacion toString - */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacion de la creacion de un bean en blanco TgeneBaseRateDetail - */ - @Override - public Object createInstance() { - TgeneBaseRateDetail instance = new TgeneBaseRateDetail(); - instance.setPk(new TgeneBaseRateDetailKey()); - return instance; - } - - /** - * Clona la entidad TgeneBaseRateDetail - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneBaseRateDetail p = (TgeneBaseRateDetail) this.clone(); - p.setPk((TgeneBaseRateDetailKey) this.pk.cloneMe()); - return p; - } - - // METODOS MANUALES - public boolean equalsWithoutRateSequence(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneBaseRateDetail)) { - return false; - } - TgeneBaseRateDetail that = (TgeneBaseRateDetail) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - // Validacion de claves primarias - TgeneBaseRateDetailKey thatpk = that.getPk(); - TgeneBaseRateDetailKey thispk = this.getPk(); - - if (thatpk == null) { - return false; - } - if (!(thatpk instanceof TgeneBaseRateDetailKey)) { - return false; - } - if ((thispk.getBaseratecatalog() == null) || (thatpk.getBaseratecatalog() == null)) { - return false; - } - if (!thispk.getBaseratecatalog().equals(thatpk.getBaseratecatalog())) { - return false; - } - if ((thispk.getBaseratecatalogcode() == null) || (thatpk.getBaseratecatalogcode() == null)) { - return false; - } - if (!thispk.getBaseratecatalogcode().equals(thatpk.getBaseratecatalogcode())) { - return false; - } - if ((thispk.getCurrencycode() == null) || (thatpk.getCurrencycode() == null)) { - return false; - } - if (!thispk.getCurrencycode().equals(thatpk.getCurrencycode())) { - return false; - } - - return true; - } - private static final String JPQL_RATEDETAIL = " from TgeneBaseRateDetail tdet " + " where tdet.pk.currencycode = :currencycode " - + " and tdet.pk.baseratecatalog = :baseratecatalog" + " and tdet.pk.baseratecatalogcode = :baseratecatalogcode"; - - /** - * Metodo que entrega una lista de datos requeridos de clientes por - * producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String currencycode, String baseratecatalog, String baseratecatalogcode) - throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(TgeneBaseRateDetail.JPQL_RATEDETAIL); - qry.setParameter("currencycode", currencycode); - qry.setParameter("baseratecatalog", baseratecatalog); - qry.setParameter("baseratecatalogcode", baseratecatalogcode); - ldata = qry.getResultList(); - return ldata; - } - private static final String JPQL_RATEDETAIL_VIGENTS = " from TgeneBaseRateDetail tdet " + " where tdet.pk.currencycode = :currencycode " - + " and tdet.pk.baseratecatalog = :baseratecatalog" - + " and tdet.pk.baseratecatalogcode = :baseratecatalogcode and tdet.expirationdate>=:workingdate"; - - /** - * Metodo que entrega una lista de datos requeridos de clientes por - * producto. - * - * @param pModuleCode Codigo de modulo. - * @param pProductCode Codigo de producto. - * @param pSubproductCode Codigo de subproducto. - * @param pPersontype Tipo de persona. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findVigents(EntityManager pEntityManager, String currencycode, String baseratecatalog, - String baseratecatalogcode, Date workingdate) throws Exception { - Query qry = pEntityManager.createQuery(TgeneBaseRateDetail.JPQL_RATEDETAIL_VIGENTS); - qry.setParameter("currencycode", currencycode); - qry.setParameter("baseratecatalog", baseratecatalog); - qry.setParameter("baseratecatalogcode", baseratecatalogcode); - qry.setParameter("workingdate", workingdate); - return qry.getResultList(); - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetailKey.java.svn-base deleted file mode 100644 index 2ffc5b0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateDetailKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBASERATEDETAIL*/ -@Embeddable -public class TgeneBaseRateDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BASERATECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo de tasas base, BCE tasa banco central -*/ -private String baseratecatalog; - -@Column(name="BASERATECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo BASERATE -*/ -private String baseratecatalogcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="RATESEQUENCE", nullable=false,updatable=false) - -/** -* null -*/ -private Integer ratesequence; - -/**Contructor por defecto*/ -public TgeneBaseRateDetailKey(){} -/**Contructor de TgeneBaseRateDetailKey -@param pBaseratecatalog Codigo de catalogo de tasas base, BCE tasa banco central -@param pBaseratecatalogcode Codigo de tabla de catalogo BASERATE -@param pCurrencycode Codigo de moneda -@param pRatesequence null -*/ -public TgeneBaseRateDetailKey(String pBaseratecatalog,String pBaseratecatalogcode,String pCurrencycode,Integer pRatesequence){ - baseratecatalog=pBaseratecatalog; - baseratecatalogcode=pBaseratecatalogcode; - currencycode=pCurrencycode; - ratesequence=pRatesequence; -} -/**Obtiene el valor de baseratecatalog -@return valor de baseratecatalog*/ -public String getBaseratecatalog(){ - return baseratecatalog; -} -/**Fija el valor de baseratecatalog -@param pBaseratecatalog nuevo Valor de baseratecatalog*/ -public void setBaseratecatalog(String pBaseratecatalog){ - baseratecatalog=pBaseratecatalog; -} - -/**Obtiene el valor de baseratecatalogcode -@return valor de baseratecatalogcode*/ -public String getBaseratecatalogcode(){ - return baseratecatalogcode; -} -/**Fija el valor de baseratecatalogcode -@param pBaseratecatalogcode nuevo Valor de baseratecatalogcode*/ -public void setBaseratecatalogcode(String pBaseratecatalogcode){ - baseratecatalogcode=pBaseratecatalogcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de ratesequence -@return valor de ratesequence*/ -public Integer getRatesequence(){ - return ratesequence; -} -/**Fija el valor de ratesequence -@param pRatesequence nuevo Valor de ratesequence*/ -public void setRatesequence(Integer pRatesequence){ - ratesequence=pRatesequence; -} - -/**Implementacion de la comparacion de TgeneBaseRateDetailKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBaseRateDetailKey))return false; - TgeneBaseRateDetailKey that = (TgeneBaseRateDetailKey) o; - if (this.getBaseratecatalog() == null || that.getBaseratecatalog() == null){ - return false; - } - if (! this.getBaseratecatalog().equals(that.getBaseratecatalog())){ - return false; - } - if (this.getBaseratecatalogcode() == null || that.getBaseratecatalogcode() == null){ - return false; - } - if (! this.getBaseratecatalogcode().equals(that.getBaseratecatalogcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getRatesequence() == null || that.getRatesequence() == null){ - return false; - } - if (! this.getRatesequence().equals(that.getRatesequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneBaseRateDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBaseratecatalog() == null ? 0 : this.getBaseratecatalog().hashCode()); - result = result * 37 + (this.getBaseratecatalogcode() == null ? 0 : this.getBaseratecatalogcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getRatesequence() == null ? 0 : this.getRatesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateKey.java.svn-base deleted file mode 100644 index eefa4fa..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneBaseRateKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEBASERATE*/ -@Embeddable -public class TgeneBaseRateKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BASERATECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo de tasas base, BCE tasa banco central -*/ -private String baseratecatalog; - -@Column(name="BASERATECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo BASERATE -*/ -private String baseratecatalogcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneBaseRateKey(){} -/**Contructor de TgeneBaseRateKey -@param pBaseratecatalog Codigo de catalogo de tasas base, BCE tasa banco central -@param pBaseratecatalogcode Codigo de tabla de catalogo BASERATE -@param pCurrencycode Codigo de moneda -*/ -public TgeneBaseRateKey(String pBaseratecatalog,String pBaseratecatalogcode,String pCurrencycode){ - baseratecatalog=pBaseratecatalog; - baseratecatalogcode=pBaseratecatalogcode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de baseratecatalog -@return valor de baseratecatalog*/ -public String getBaseratecatalog(){ - return baseratecatalog; -} -/**Fija el valor de baseratecatalog -@param pBaseratecatalog nuevo Valor de baseratecatalog*/ -public void setBaseratecatalog(String pBaseratecatalog){ - baseratecatalog=pBaseratecatalog; -} - -/**Obtiene el valor de baseratecatalogcode -@return valor de baseratecatalogcode*/ -public String getBaseratecatalogcode(){ - return baseratecatalogcode; -} -/**Fija el valor de baseratecatalogcode -@param pBaseratecatalogcode nuevo Valor de baseratecatalogcode*/ -public void setBaseratecatalogcode(String pBaseratecatalogcode){ - baseratecatalogcode=pBaseratecatalogcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacion de la comparacion de TgeneBaseRateKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneBaseRateKey))return false; - TgeneBaseRateKey that = (TgeneBaseRateKey) o; - if (this.getBaseratecatalog() == null || that.getBaseratecatalog() == null){ - return false; - } - if (! this.getBaseratecatalog().equals(that.getBaseratecatalog())){ - return false; - } - if (this.getBaseratecatalogcode() == null || that.getBaseratecatalogcode() == null){ - return false; - } - if (! this.getBaseratecatalogcode().equals(that.getBaseratecatalogcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneBaseRateKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBaseratecatalog() == null ? 0 : this.getBaseratecatalog().hashCode()); - result = result * 37 + (this.getBaseratecatalogcode() == null ? 0 : this.getBaseratecatalogcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroup.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroup.java.svn-base deleted file mode 100644 index c7b8346..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroup.java.svn-base +++ /dev/null @@ -1,254 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENERATESGROUP*/ -@Entity(name="TgeneRatesGroup") -@Table(name="TGENERATESGROUP") -public class TgeneRatesGroup extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneRatesGroup -*/ -@EmbeddedId -private TgeneRatesGroupKey pk; -@Column(name="BASERATECATALOG", nullable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String baseratecatalog; - -@Column(name="BASERATECATALOGCODE", nullable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String baseratecatalogcode; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking -*/ -private Integer recordversion; - -@Column(name="MAXTERM", nullable=true) - -/** -* Plazo maximo -*/ -private Integer maxterm; - -@Column(name="MAXAMOUNT", nullable=true) - -/** -* Monto Maximo -*/ -private BigDecimal maxamount; - -@Column(name="MARGIN", nullable=true) - -/** -* Margen a aplicar dado el operador -*/ -private BigDecimal margin; - -@Column(name="OPERATOR", nullable=true) - -/** -* Operador a aplicar sobre la tasa base, +, - , % -*/ -private String operator; - -/**Contructor por defecto*/ -public TgeneRatesGroup(){ -} -/**Contructor de TgeneRatesGroup -@param pPk Clave Primaria del entity -@param pBaseratecatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pBaseratecatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -public TgeneRatesGroup(TgeneRatesGroupKey pPk,String pBaseratecatalog,String pBaseratecatalogcode){ - this(); - pk=pPk; - baseratecatalog=pBaseratecatalog; - baseratecatalogcode=pBaseratecatalogcode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneRatesGroup -*/ -public static TgeneRatesGroup find(EntityManager pEntityManager,TgeneRatesGroupKey pKey) throws Exception{ - TgeneRatesGroup obj = pEntityManager.find(TgeneRatesGroup.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneRatesGroup -@return El objeto que referencia a la Clave primaria de TgeneRatesGroup -*/ -public TgeneRatesGroupKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneRatesGroup -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneRatesGroup -*/ -public void setPk(TgeneRatesGroupKey pPk){ - pk=pPk; -} -/**Obtiene el valor de baseratecatalog -@return valor de baseratecatalog*/ -public String getBaseratecatalog(){ - return baseratecatalog; -} -/**Fija el valor de baseratecatalog -@param pBaseratecatalog nuevo Valor de baseratecatalog*/ -public void setBaseratecatalog(String pBaseratecatalog){ - baseratecatalog=pBaseratecatalog; -} - -/**Obtiene el valor de baseratecatalogcode -@return valor de baseratecatalogcode*/ -public String getBaseratecatalogcode(){ - return baseratecatalogcode; -} -/**Fija el valor de baseratecatalogcode -@param pBaseratecatalogcode nuevo Valor de baseratecatalogcode*/ -public void setBaseratecatalogcode(String pBaseratecatalogcode){ - baseratecatalogcode=pBaseratecatalogcode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de maxterm -@return valor de maxterm*/ -public Integer getMaxterm(){ - return maxterm; -} -/**Fija el valor de maxterm -@param pMaxterm nuevo Valor de maxterm*/ -public void setMaxterm(Integer pMaxterm){ - maxterm=pMaxterm; -} - -/**Obtiene el valor de maxamount -@return valor de maxamount*/ -public BigDecimal getMaxamount(){ - return maxamount; -} -/**Fija el valor de maxamount -@param pMaxamount nuevo Valor de maxamount*/ -public void setMaxamount(BigDecimal pMaxamount){ - maxamount=pMaxamount; -} - -/**Obtiene el valor de margin -@return valor de margin*/ -public BigDecimal getMargin(){ - return margin; -} -/**Fija el valor de margin -@param pMargin nuevo Valor de margin*/ -public void setMargin(BigDecimal pMargin){ - margin=pMargin; -} - -/**Obtiene el valor de operator -@return valor de operator*/ -public String getOperator(){ - return operator; -} -/**Fija el valor de operator -@param pOperator nuevo Valor de operator*/ -public void setOperator(String pOperator){ - operator=pOperator; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneRatesGroup))return false; - TgeneRatesGroup that = (TgeneRatesGroup) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneRatesGroup -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneRatesGroup -*/ -public Object createInstance(){ - TgeneRatesGroup instance=new TgeneRatesGroup(); - instance.setPk(new TgeneRatesGroupKey()); - return instance; -} -/**Clona la entidad TgeneRatesGroup -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneRatesGroup p=(TgeneRatesGroup)this.clone(); - p.setPk((TgeneRatesGroupKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroupKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroupKey.java.svn-base deleted file mode 100644 index d00f405..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneRatesGroupKey.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENERATESGROUP*/ -@Embeddable -public class TgeneRatesGroupKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String interestbalancegroup; - -@Column(name="RATECATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo VIP, EMP empleado -*/ -private String ratecatalog; - -@Column(name="RATECATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo de grupo de tasas RATES -*/ -private String ratecatalogcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="MINTERM", nullable=false,updatable=false) - -/** -* Plazo minnimo -*/ -private Integer minterm; - -@Column(name="MINAMOUNT", nullable=false,updatable=false) - -/** -* Monto minimo -*/ -private BigDecimal minamount; - -/**Contructor por defecto*/ -public TgeneRatesGroupKey(){} -/**Contructor de TgeneRatesGroupKey -@param pInterestbalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pInterestbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pRatecatalog Codigo de catalogo VIP, EMP empleado -@param pRatecatalogcode Codigo de tabla de catalogo de grupo de tasas RATES -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda -@param pMinterm Plazo minnimo -@param pMinamount Monto minimo -*/ -public TgeneRatesGroupKey(String pInterestbalancetype,String pInterestbalancegroup,String pRatecatalog,String pRatecatalogcode,Integer pCompanycode,String pCurrencycode,Integer pMinterm,BigDecimal pMinamount){ - interestbalancetype=pInterestbalancetype; - interestbalancegroup=pInterestbalancegroup; - ratecatalog=pRatecatalog; - ratecatalogcode=pRatecatalogcode; - companycode=pCompanycode; - currencycode=pCurrencycode; - minterm=pMinterm; - minamount=pMinamount; -} -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Obtiene el valor de ratecatalog -@return valor de ratecatalog*/ -public String getRatecatalog(){ - return ratecatalog; -} -/**Fija el valor de ratecatalog -@param pRatecatalog nuevo Valor de ratecatalog*/ -public void setRatecatalog(String pRatecatalog){ - ratecatalog=pRatecatalog; -} - -/**Obtiene el valor de ratecatalogcode -@return valor de ratecatalogcode*/ -public String getRatecatalogcode(){ - return ratecatalogcode; -} -/**Fija el valor de ratecatalogcode -@param pRatecatalogcode nuevo Valor de ratecatalogcode*/ -public void setRatecatalogcode(String pRatecatalogcode){ - ratecatalogcode=pRatecatalogcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de minterm -@return valor de minterm*/ -public Integer getMinterm(){ - return minterm; -} -/**Fija el valor de minterm -@param pMinterm nuevo Valor de minterm*/ -public void setMinterm(Integer pMinterm){ - minterm=pMinterm; -} - -/**Obtiene el valor de minamount -@return valor de minamount*/ -public BigDecimal getMinamount(){ - return minamount; -} -/**Fija el valor de minamount -@param pMinamount nuevo Valor de minamount*/ -public void setMinamount(BigDecimal pMinamount){ - minamount=pMinamount; -} - -/**Implementacin de la comparacin de TgeneRatesGroupKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneRatesGroupKey))return false; - TgeneRatesGroupKey that = (TgeneRatesGroupKey) o; - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - if (this.getRatecatalog() == null || that.getRatecatalog() == null){ - return false; - } - if (! this.getRatecatalog().equals(that.getRatecatalog())){ - return false; - } - if (this.getRatecatalogcode() == null || that.getRatecatalogcode() == null){ - return false; - } - if (! this.getRatecatalogcode().equals(that.getRatecatalogcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getMinterm() == null || that.getMinterm() == null){ - return false; - } - if (! this.getMinterm().equals(that.getMinterm())){ - return false; - } - if (this.getMinamount() == null || that.getMinamount() == null){ - return false; - } - if (! this.getMinamount().equals(that.getMinamount())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneRatesGroupKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - result = result * 37 + (this.getRatecatalog() == null ? 0 : this.getRatecatalog().hashCode()); - result = result * 37 + (this.getRatecatalogcode() == null ? 0 : this.getRatecatalogcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getMinterm() == null ? 0 : this.getMinterm().hashCode()); - result = result * 37 + (this.getMinamount() == null ? 0 : this.getMinamount().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRate.java.svn-base deleted file mode 100644 index 367b859..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRate.java.svn-base +++ /dev/null @@ -1,377 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.util.List; -import javax.persistence.Query; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESEGMENTRATE*/ -@Entity(name = "TgeneSegmentRate") -@Table(name = "TGENESEGMENTRATE") -public class TgeneSegmentRate extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneSegmentRate - */ - @EmbeddedId - private TgeneSegmentRateKey pk; - @Column(name = "BASERATECATALOG", nullable = false) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String baseratecatalog; - @Column(name = "BASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String baseratecatalogcode; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Manejo de optimistic locking - */ - private Integer recordversion; - @Column(name = "MAXTERM", nullable = false) - /** - * Plazo maximo - */ - private Integer maxterm; - @Column(name = "MAXAMOUNT", nullable = true) - /** - * Monto Maximo - */ - private BigDecimal maxamount; - @Column(name = "MARGIN", nullable = true) - /** - * Margen a aplicar dado el operador - */ - private BigDecimal margin; - @Column(name = "OPERATOR", nullable = true) - /** - * Operador a aplicar sobre la tasa base, +, - , % - */ - private String operator; - @Column(name = "READJUSTMENTOPERATOR", nullable = true) - /** - * Operador que se utilizara el momento del reajuste - */ - private String readjustmentoperator; - @Column(name = "READJUSTMENTMARGIN", nullable = true) - /** - * Margen a aplicar en el reajuste - */ - private BigDecimal readjustmentmargin; - @Column(name = "MINRATE", nullable = true) - /** - * Minimo permitido en la negociacion del prestamo - */ - private BigDecimal minrate; - @Column(name = "MAXRATE", nullable = true) - /** - * Maximo permitido en la negociacion del prestamo - */ - private BigDecimal maxrate; - - /**Contructor por defecto*/ - public TgeneSegmentRate() { - } - - /**Contructor de TgeneSegmentRate - @param pPk Clave Primaria del entity - @param pBaseratecatalog Codigo de catalogo 01 Natural, 02 Juridico - @param pMaxterm Plazo maximo - */ - public TgeneSegmentRate(TgeneSegmentRateKey pPk, String pBaseratecatalog, Integer pMaxterm) { - this(); - pk = pPk; - baseratecatalog = pBaseratecatalog; - maxterm = pMaxterm; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSegmentRate - */ - public static TgeneSegmentRate find(EntityManager pEntityManager, TgeneSegmentRateKey pKey) throws Exception { - TgeneSegmentRate obj = pEntityManager.find(TgeneSegmentRate.class, pKey); - return obj; - } - /** - * Mtodos manuales - * INTERESTBALANCETYPE - * interestbalancetype - * INTERESTBALANCEGROUP - * interestbalancegroup - * CREDITSEGMENTCATALOG - * creditsegmentcatalog - */ - private static final String JPQL_SOL_TGENESEGMENTRATE = - " from TgeneSegmentRate tgenesr " - + "where " - + "tgenesr.pk.interestbalancetype = :interestbalancetype and " - + "tgenesr.pk.interestbalancegroup = :interestbalancegroup and " - + "tgenesr.pk.currencycode = :currencycode and " - + "tgenesr.pk.companycode = :companycode and " - + "tgenesr.pk.creditsegmentcatalog = :creditsegmentcatalog and " - + "tgenesr.pk.minterm <= :term and tgenesr.maxterm >= :term and " - + "tgenesr.pk.minamount <= :amount and tgenesr.maxamount >= :amount"; - - /** - * Metodo que entrega datos para consultar el segmento monto plazo y tipo de saldo. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSegmentRate - */ - @SuppressWarnings("unchecked") - public static List findBySegment(EntityManager pEntityManager, String pInterestbalancetype, String pInterestbalancegroup, String pCreditsegmentcatalog, Integer pCompany, String pCurrencycode,Integer pTerm,BigDecimal pAmount) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(TgeneSegmentRate.JPQL_SOL_TGENESEGMENTRATE); - qry.setParameter("interestbalancetype", pInterestbalancetype); - qry.setParameter("interestbalancegroup", pInterestbalancegroup); - qry.setParameter("creditsegmentcatalog", pCreditsegmentcatalog); - qry.setParameter("companycode", pCompany); - qry.setParameter("currencycode", pCurrencycode); - qry.setParameter("term", pTerm); - qry.setParameter("amount", pAmount); - lObjects = qry.getResultList(); - return lObjects; - } - - /**Entrega la Clave primaria de TgeneSegmentRate - @return El objeto que referencia a la Clave primaria de TgeneSegmentRate - */ - public TgeneSegmentRateKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TgeneSegmentRate - @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSegmentRate - */ - public void setPk(TgeneSegmentRateKey pPk) { - pk = pPk; - } - - /**Obtiene el valor de baseratecatalog - @return valor de baseratecatalog*/ - public String getBaseratecatalog() { - return baseratecatalog; - } - - /**Fija el valor de baseratecatalog - @param pBaseratecatalog nuevo Valor de baseratecatalog*/ - public void setBaseratecatalog(String pBaseratecatalog) { - baseratecatalog = pBaseratecatalog; - } - - /**Obtiene el valor de baseratecatalogcode - @return valor de baseratecatalogcode*/ - public String getBaseratecatalogcode() { - return baseratecatalogcode; - } - - /**Fija el valor de baseratecatalogcode - @param pBaseratecatalogcode nuevo Valor de baseratecatalogcode*/ - public void setBaseratecatalogcode(String pBaseratecatalogcode) { - baseratecatalogcode = pBaseratecatalogcode; - } - - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion() { - return recordversion; - } - - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /**Obtiene el valor de maxterm - @return valor de maxterm*/ - public Integer getMaxterm() { - return maxterm; - } - - /**Fija el valor de maxterm - @param pMaxterm nuevo Valor de maxterm*/ - public void setMaxterm(Integer pMaxterm) { - maxterm = pMaxterm; - } - - /**Obtiene el valor de maxamount - @return valor de maxamount*/ - public BigDecimal getMaxamount() { - return maxamount; - } - - /**Fija el valor de maxamount - @param pMaxamount nuevo Valor de maxamount*/ - public void setMaxamount(BigDecimal pMaxamount) { - maxamount = pMaxamount; - } - - /**Obtiene el valor de margin - @return valor de margin*/ - public BigDecimal getMargin() { - return margin; - } - - /**Fija el valor de margin - @param pMargin nuevo Valor de margin*/ - public void setMargin(BigDecimal pMargin) { - margin = pMargin; - } - - /**Obtiene el valor de operator - @return valor de operator*/ - public String getOperator() { - return operator; - } - - /**Fija el valor de operator - @param pOperator nuevo Valor de operator*/ - public void setOperator(String pOperator) { - operator = pOperator; - } - - /**Obtiene el valor de readjustmentoperator - @return valor de readjustmentoperator*/ - public String getReadjustmentoperator() { - return readjustmentoperator; - } - - /**Fija el valor de readjustmentoperator - @param pReadjustmentoperator nuevo Valor de readjustmentoperator*/ - public void setReadjustmentoperator(String pReadjustmentoperator) { - readjustmentoperator = pReadjustmentoperator; - } - - /**Obtiene el valor de readjustmentmargin - @return valor de readjustmentmargin*/ - public BigDecimal getReadjustmentmargin() { - return readjustmentmargin; - } - - /**Fija el valor de readjustmentmargin - @param pReadjustmentmargin nuevo Valor de readjustmentmargin*/ - public void setReadjustmentmargin(BigDecimal pReadjustmentmargin) { - readjustmentmargin = pReadjustmentmargin; - } - - /**Obtiene el valor de minrate - @return valor de minrate*/ - public BigDecimal getMinrate() { - return minrate; - } - - /**Fija el valor de minrate - @param pMinrate nuevo Valor de minrate*/ - public void setMinrate(BigDecimal pMinrate) { - minrate = pMinrate; - } - - /**Obtiene el valor de maxrate - @return valor de maxrate*/ - public BigDecimal getMaxrate() { - return maxrate; - } - - /**Fija el valor de maxrate - @param pMaxrate nuevo Valor de maxrate*/ - public void setMaxrate(BigDecimal pMaxrate) { - maxrate = pMaxrate; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSegmentRate)) { - return false; - } - TgeneSegmentRate that = (TgeneSegmentRate) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacion del metodo hashCode de la la entidad TgeneSegmentRate - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacion toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacion de la creacion de un bean en blanco TgeneSegmentRate - */ - public Object createInstance() { - TgeneSegmentRate instance = new TgeneSegmentRate(); - instance.setPk(new TgeneSegmentRateKey()); - return instance; - } - - /**Clona la entidad TgeneSegmentRate - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneSegmentRate p = (TgeneSegmentRate) this.clone(); - p.setPk((TgeneSegmentRateKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRateKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRateKey.java.svn-base deleted file mode 100644 index 838f16f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSegmentRateKey.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESEGMENTRATE*/ -@Embeddable -public class TgeneSegmentRateKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo de interes a calcular. -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Cdigo de grupo de balance del tipo de saldo. -*/ -private String interestbalancegroup; - -@Column(name="CREDITSEGMENTCATALOG", nullable=false,updatable=false) - -/** -* Segmento asociado al tipo de producto de prestamo -*/ -private String creditsegmentcatalog; - -@Column(name="CREDITSEGMENTCATALOGCODE", nullable=false,updatable=false) - -/** -* Catalogo asociado al segmento de producto de prestamo -*/ -private String creditsegmentcatalogcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="MINTERM", nullable=false,updatable=false) - -/** -* Plazo minnimo -*/ -private Integer minterm; - -@Column(name="MINAMOUNT", nullable=false,updatable=false) - -/** -* Monto minimo -*/ -private BigDecimal minamount; - -/**Contructor por defecto*/ -public TgeneSegmentRateKey(){} -/**Contructor de TgeneSegmentRateKey -@param pInterestbalancetype Cdigo de tipo de saldo de interes a calcular. -@param pInterestbalancegroup Cdigo de grupo de balance del tipo de saldo. -@param pCreditsegmentcatalog Segmento asociado al tipo de producto de prestamo -@param pCreditsegmentcatalogcode Catalogo asociado al segmento de producto de prestamo -@param pCompanycode Codigo de compania -@param pCurrencycode Codigo de moneda -@param pMinterm Plazo minnimo -@param pMinamount Monto minimo -*/ -public TgeneSegmentRateKey(String pInterestbalancetype,String pInterestbalancegroup,String pCreditsegmentcatalog,String pCreditsegmentcatalogcode,Integer pCompanycode,String pCurrencycode,Integer pMinterm,BigDecimal pMinamount){ - interestbalancetype=pInterestbalancetype; - interestbalancegroup=pInterestbalancegroup; - creditsegmentcatalog=pCreditsegmentcatalog; - creditsegmentcatalogcode=pCreditsegmentcatalogcode; - companycode=pCompanycode; - currencycode=pCurrencycode; - minterm=pMinterm; - minamount=pMinamount; -} -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Obtiene el valor de creditsegmentcatalog -@return valor de creditsegmentcatalog*/ -public String getCreditsegmentcatalog(){ - return creditsegmentcatalog; -} -/**Fija el valor de creditsegmentcatalog -@param pCreditsegmentcatalog nuevo Valor de creditsegmentcatalog*/ -public void setCreditsegmentcatalog(String pCreditsegmentcatalog){ - creditsegmentcatalog=pCreditsegmentcatalog; -} - -/**Obtiene el valor de creditsegmentcatalogcode -@return valor de creditsegmentcatalogcode*/ -public String getCreditsegmentcatalogcode(){ - return creditsegmentcatalogcode; -} -/**Fija el valor de creditsegmentcatalogcode -@param pCreditsegmentcatalogcode nuevo Valor de creditsegmentcatalogcode*/ -public void setCreditsegmentcatalogcode(String pCreditsegmentcatalogcode){ - creditsegmentcatalogcode=pCreditsegmentcatalogcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de minterm -@return valor de minterm*/ -public Integer getMinterm(){ - return minterm; -} -/**Fija el valor de minterm -@param pMinterm nuevo Valor de minterm*/ -public void setMinterm(Integer pMinterm){ - minterm=pMinterm; -} - -/**Obtiene el valor de minamount -@return valor de minamount*/ -public BigDecimal getMinamount(){ - return minamount; -} -/**Fija el valor de minamount -@param pMinamount nuevo Valor de minamount*/ -public void setMinamount(BigDecimal pMinamount){ - minamount=pMinamount; -} - -/**Implementacion de la comparacion de TgeneSegmentRateKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSegmentRateKey))return false; - TgeneSegmentRateKey that = (TgeneSegmentRateKey) o; - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - if (this.getCreditsegmentcatalog() == null || that.getCreditsegmentcatalog() == null){ - return false; - } - if (! this.getCreditsegmentcatalog().equals(that.getCreditsegmentcatalog())){ - return false; - } - if (this.getCreditsegmentcatalogcode() == null || that.getCreditsegmentcatalogcode() == null){ - return false; - } - if (! this.getCreditsegmentcatalogcode().equals(that.getCreditsegmentcatalogcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getMinterm() == null || that.getMinterm() == null){ - return false; - } - if (! this.getMinterm().equals(that.getMinterm())){ - return false; - } - if (this.getMinamount() == null || that.getMinamount() == null){ - return false; - } - if (! this.getMinamount().equals(that.getMinamount())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneSegmentRateKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - result = result * 37 + (this.getCreditsegmentcatalog() == null ? 0 : this.getCreditsegmentcatalog().hashCode()); - result = result * 37 + (this.getCreditsegmentcatalogcode() == null ? 0 : this.getCreditsegmentcatalogcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getMinterm() == null ? 0 : this.getMinterm().hashCode()); - result = result * 37 + (this.getMinamount() == null ? 0 : this.getMinamount().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentCharges.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentCharges.java.svn-base deleted file mode 100644 index 1145e35..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentCharges.java.svn-base +++ /dev/null @@ -1,253 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTINSTALLCHARGES*/ -@Entity(name="TgeneSubProductInstallmentCharges") -@Table(name="TGENESUBPRODUCTINSTALLCHARGES") -public class TgeneSubProductInstallmentCharges extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubProductInstallmentCharges -*/ -@EmbeddedId -private TgeneSubProductInstallmentChargesKey pk; -@Column(name="CALCULTATEORDER", nullable=true) - -/** -* Orden de calculo de los cargos. -*/ -private Integer calcultateorder; - -@Column(name="BASEAMOUNTBALANCETYPE", nullable=true) - -/** -* Tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancetype; - -@Column(name="BASEAMOUNTBALANCEGROUP", nullable=true) - -/** -* Grupo de balance asociado al tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancegroup; - -@Column(name="NEGOTIABLE", nullable=true) - -/** -* Indica si la tasa se puede negociar con el cliente el valor y las condiciones del cargo -*/ -private String negotiable; - -@Column(name="ACTIVE", nullable=true) - -/** -* null -*/ -private String active; - -/**Contructor por defecto*/ -public TgeneSubProductInstallmentCharges(){ -} -/**Contructor de TgeneSubProductInstallmentCharges -@param pPk Clave Primaria del entity -*/ -public TgeneSubProductInstallmentCharges(TgeneSubProductInstallmentChargesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubProductInstallmentCharges -*/ -public static TgeneSubProductInstallmentCharges find(EntityManager pEntityManager,TgeneSubProductInstallmentChargesKey pKey) throws Exception{ - TgeneSubProductInstallmentCharges obj = pEntityManager.find(TgeneSubProductInstallmentCharges.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubProductInstallmentCharges -@return El objeto que referencia a la Clave primaria de TgeneSubProductInstallmentCharges -*/ -public TgeneSubProductInstallmentChargesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubProductInstallmentCharges -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductInstallmentCharges -*/ -public void setPk(TgeneSubProductInstallmentChargesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de calcultateorder -@return valor de calcultateorder*/ -public Integer getCalcultateorder(){ - return calcultateorder; -} -/**Fija el valor de calcultateorder -@param pCalcultateorder nuevo Valor de calcultateorder*/ -public void setCalcultateorder(Integer pCalcultateorder){ - calcultateorder=pCalcultateorder; -} - -/**Obtiene el valor de baseamountbalancetype -@return valor de baseamountbalancetype*/ -public String getBaseamountbalancetype(){ - return baseamountbalancetype; -} -/**Fija el valor de baseamountbalancetype -@param pBaseamountbalancetype nuevo Valor de baseamountbalancetype*/ -public void setBaseamountbalancetype(String pBaseamountbalancetype){ - baseamountbalancetype=pBaseamountbalancetype; -} - -/**Obtiene el valor de baseamountbalancegroup -@return valor de baseamountbalancegroup*/ -public String getBaseamountbalancegroup(){ - return baseamountbalancegroup; -} -/**Fija el valor de baseamountbalancegroup -@param pBaseamountbalancegroup nuevo Valor de baseamountbalancegroup*/ -public void setBaseamountbalancegroup(String pBaseamountbalancegroup){ - baseamountbalancegroup=pBaseamountbalancegroup; -} - -/**Obtiene el valor de negotiable -@return valor de negotiable*/ -public String getNegotiable(){ - return negotiable; -} -/**Fija el valor de negotiable -@param pNegotiable nuevo Valor de negotiable*/ -public void setNegotiable(String pNegotiable){ - negotiable=pNegotiable; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubProductInstallmentCharges))return false; - TgeneSubProductInstallmentCharges that = (TgeneSubProductInstallmentCharges) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubProductInstallmentCharges -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubProductInstallmentCharges -*/ -public Object createInstance(){ - TgeneSubProductInstallmentCharges instance=new TgeneSubProductInstallmentCharges(); - instance.setPk(new TgeneSubProductInstallmentChargesKey()); - return instance; -} -/**Clona la entidad TgeneSubProductInstallmentCharges -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubProductInstallmentCharges p=(TgeneSubProductInstallmentCharges)this.clone(); - p.setPk((TgeneSubProductInstallmentChargesKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve la definicion de cargos asociados al producto de una solicitud.*/ - private static final String HQL_INSTALLMENT_CHARGES = - "from TgeneSubProductInstallmentCharges tinstcharg " + - " where tinstcharg.pk.modulecode = :modulecode "+ - " and tinstcharg.pk.productcode = :productcode "+ - " and tinstcharg.pk.subproductcode = :subproductcode "+ - " and tinstcharg.pk.statuscode = :statuscode "+ - " and tinstcharg.pk.currencycode = :currencycode "+ - " and tinstcharg.active = 'Y' " ; - - - /** - * Entrega una lista de cargos asociados a una tabla de amortizacion. - * @param pModuleCode Codigo de modulo a obtener cargos asociados a la solicitud. - * @param pProductCode Codigo de producto a obtener cargos asociados a la solicitud. - * @param pSubproductCode Codigo de subproducto a obtener cargos asociados a la solicitud. - * @param pStatusCode Codigo de status a obtener cargos asociados a la solicitud. - * @param pCurrencyCode Codigo de moneda a obtener cargos asociados a la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - String pModuleCode,String pProductCode, - String pSubproductCode,String pStatusCode,String pCurrencyCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_INSTALLMENT_CHARGES); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProductCode); - qry.setParameter("subproductcode", pSubproductCode); - qry.setParameter("statuscode", pStatusCode); - qry.setParameter("currencycode", pCurrencyCode); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentChargesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentChargesKey.java.svn-base deleted file mode 100644 index c33db4a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentChargesKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTINSTALLCHARGES*/ -@Embeddable -public class TgeneSubProductInstallmentChargesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda de la cuenta -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneSubProductInstallmentChargesKey(){} -/**Contructor de TgeneSubProductInstallmentChargesKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCurrencycode Codigo de moneda de la cuenta -*/ -public TgeneSubProductInstallmentChargesKey(String pBalancetype,String pBalancegroup,String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,String pCurrencycode){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneSubProductInstallmentChargesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductInstallmentChargesKey))return false; - TgeneSubProductInstallmentChargesKey that = (TgeneSubProductInstallmentChargesKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubProductInstallmentChargesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRates.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRates.java.svn-base deleted file mode 100644 index 1a5d054..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRates.java.svn-base +++ /dev/null @@ -1,317 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTINSTALLRATES */ -@Entity(name = "TgeneSubProductInstallmentRates") -@Table(name = "TGENESUBPRODUCTINSTALLRATES") -public class TgeneSubProductInstallmentRates extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSubProductInstallmentRates - */ - @EmbeddedId - private TgeneSubProductInstallmentRatesKey pk; - - @Column(name = "PRINCIPALBALANCETYPE", nullable = true) - /** - * Cdigo de tipo de capital sobre el cual se aplica una tasa y se calcula un valor a provisionar - */ - private String principalbalancetype; - - @Column(name = "PRINCIPALBALANCEGROUP", nullable = true) - /** - * Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor - */ - private String principalbalancegroup; - - @Column(name = "NEGOTIABLE", nullable = true) - /** - * Indica si la tasa se puede negociar con el cliente - */ - private String negotiable; - - @Column(name = "ACTIVE", nullable = true) - /** - * null - */ - private String active; - - /** Contructor por defecto */ - public TgeneSubProductInstallmentRates() { - } - - /** - * Contructor de TgeneSubProductInstallmentRates - * - * @param pPk Clave Primaria del entity - */ - public TgeneSubProductInstallmentRates(TgeneSubProductInstallmentRatesKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSubProductInstallmentRates - */ - public static TgeneSubProductInstallmentRates find(EntityManager pEntityManager, TgeneSubProductInstallmentRatesKey pKey) throws Exception { - TgeneSubProductInstallmentRates obj = pEntityManager.find(TgeneSubProductInstallmentRates.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSubProductInstallmentRates - * - * @return El objeto que referencia a la Clave primaria de TgeneSubProductInstallmentRates - */ - public TgeneSubProductInstallmentRatesKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSubProductInstallmentRates - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductInstallmentRates - */ - public void setPk(TgeneSubProductInstallmentRatesKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de principalbalancetype - * - * @return valor de principalbalancetype - */ - public String getPrincipalbalancetype() { - return this.principalbalancetype; - } - - /** - * Fija el valor de principalbalancetype - * - * @param pPrincipalbalancetype nuevo Valor de principalbalancetype - */ - public void setPrincipalbalancetype(String pPrincipalbalancetype) { - this.principalbalancetype = pPrincipalbalancetype; - } - - /** - * Obtiene el valor de principalbalancegroup - * - * @return valor de principalbalancegroup - */ - public String getPrincipalbalancegroup() { - return this.principalbalancegroup; - } - - /** - * Fija el valor de principalbalancegroup - * - * @param pPrincipalbalancegroup nuevo Valor de principalbalancegroup - */ - public void setPrincipalbalancegroup(String pPrincipalbalancegroup) { - this.principalbalancegroup = pPrincipalbalancegroup; - } - - /** - * Obtiene el valor de negotiable - * - * @return valor de negotiable - */ - public String getNegotiable() { - return this.negotiable; - } - - /** - * Fija el valor de negotiable - * - * @param pNegotiable nuevo Valor de negotiable - */ - public void setNegotiable(String pNegotiable) { - this.negotiable = pNegotiable; - } - - /** - * Obtiene el valor de active - * - * @return valor de active - */ - public String getActive() { - return this.active; - } - - /** - * Fija el valor de active - * - * @param pActive nuevo Valor de active - */ - public void setActive(String pActive) { - this.active = pActive; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubProductInstallmentRates)) { - return false; - } - TgeneSubProductInstallmentRates that = (TgeneSubProductInstallmentRates) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneSubProductInstallmentRates - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneSubProductInstallmentRates */ - @Override - public Object createInstance() { - TgeneSubProductInstallmentRates instance = new TgeneSubProductInstallmentRates(); - instance.setPk(new TgeneSubProductInstallmentRatesKey()); - return instance; - } - - /** - * Clona la entidad TgeneSubProductInstallmentRates - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSubProductInstallmentRates p = (TgeneSubProductInstallmentRates) this.clone(); - p.setPk((TgeneSubProductInstallmentRatesKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - /** Sentencia que devuelve la definicion de valores a provisionar asociados al producto de una solicitud. */ - private static final String HQL_INSTALLMENT_RATES = "from TgeneSubProductInstallmentRates t " + " where t.pk.modulecode = :modulecode " - + " and t.pk.productcode = :productcode " + " and t.pk.subproductcode = :subproductcode " + " and t.pk.currencycode = :currencycode " - + " and t.active = 'Y' "; - - /** - * Entrega una lista de cargos asociados a una tabla de amortizacion, estos se pueden cobrar en la cuota, - * incrementar el valor del credito, o el cliente puede pagar en caja o con debito a la cuenta. - * - * @param pModuleCode Codigo de modulo a obtener valores a provisionar asociados a la solicitud. - * @param pProductCode Codigo de producto a obtener valores a provisionar asociados a la solicitud. - * @param pSubproductCode Codigo de subproducto a obtener valores a provisionar asociados a la solicitud. - * @param pCurrencyCode Codigo de moneda a obtener valores a provisionar asociados a la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pModuleCode, String pProductCode, - String pSubproductCode, String pCurrencyCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_INSTALLMENT_RATES); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProductCode); - qry.setParameter("subproductcode", pSubproductCode); - qry.setParameter("currencycode", pCurrencyCode); - lObjects = qry.getResultList(); - return lObjects; - } - - /** Sentencia que devuelve la definicion de valores a provisionar asociados al producto de una solicitud. */ - private static final String HQL_INSTALLMENT_RATES_BTYPE = "from TgeneSubProductInstallmentRates t " + " where t.pk.modulecode = :modulecode " - + " and t.pk.productcode = :productcode " + " and t.pk.subproductcode = :subproductcode " + " and t.pk.currencycode = :currencycode " - + " and t.principalbalancetype = :btype " + " and t.principalbalancegroup = :bgroup " + " and t.active = 'Y' "; - - /** - * Entrega una lista de cargos asociados a una tabla de amortizacion, estos se pueden cobrar en la cuota, - * incrementar el valor del credito, o el cliente puede pagar en caja o con debito a la cuenta. - * - * @param pModuleCode Codigo de modulo a obtener valores a provisionar asociados a la solicitud. - * @param pProductCode Codigo de producto a obtener valores a provisionar asociados a la solicitud. - * @param pSubproductCode Codigo de subproducto a obtener valores a provisionar asociados a la solicitud. - * @param pCurrencyCode Codigo de moneda a obtener valores a provisionar asociados a la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pModuleCode, String pProductCode, - String pSubproductCode, String pCurrencyCode, String pBalanceType, String pBalanceGroup) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_INSTALLMENT_RATES_BTYPE); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProductCode); - qry.setParameter("subproductcode", pSubproductCode); - qry.setParameter("currencycode", pCurrencyCode); - qry.setParameter("btype", pBalanceType); - qry.setParameter("bgroup", pBalanceGroup); - lObjects = qry.getResultList(); - return lObjects; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRatesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRatesKey.java.svn-base deleted file mode 100644 index c15effb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductInstallmentRatesKey.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTINSTALLRATES*/ -@Embeddable -public class TgeneSubProductInstallmentRatesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Codigo de tipo de saldo que provisiona en la tabla de cuotas. -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String interestbalancegroup; - -/**Contructor por defecto*/ -public TgeneSubProductInstallmentRatesKey(){} -/**Contructor de TgeneSubProductInstallmentRatesKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -@param pInterestbalancetype Codigo de tipo de saldo que provisiona en la tabla de cuotas. -@param pInterestbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneSubProductInstallmentRatesKey(String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode,String pInterestbalancetype,String pInterestbalancegroup){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; - interestbalancetype=pInterestbalancetype; - interestbalancegroup=pInterestbalancegroup; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Implementacin de la comparacin de TgeneSubProductInstallmentRatesKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductInstallmentRatesKey))return false; - TgeneSubProductInstallmentRatesKey that = (TgeneSubProductInstallmentRatesKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubProductInstallmentRatesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidation.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidation.java.svn-base deleted file mode 100644 index c4ea167..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidation.java.svn-base +++ /dev/null @@ -1,308 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTLIQUIDATION*/ -@Entity(name="TgeneSubProductLiquidation") -@Table(name="TGENESUBPRODUCTLIQUIDATION") -public class TgeneSubProductLiquidation extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubProductLiquidation -*/ -@EmbeddedId -private TgeneSubProductLiquidationKey pk; -@Column(name="CALCULATEORDER", nullable=true) - -/** -* Orden de calculo de los cargos. -*/ -private Integer calculateorder; - -@Column(name="BASEAMOUNTBALANCETYPE", nullable=true) - -/** -* Tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancetype; - -@Column(name="BASEAMOUNTBALANCEGROUP", nullable=true) - -/** -* Grupo de balance del tipo de saldo del cual se toma el monto para calcular el tarifario. -*/ -private String baseamountbalancegroup; - -@Column(name="NEGOTIABLE", nullable=true) - -/** -* Indica si la tasa se puede negociar con el cliente el valor y las condiciones del cargo -*/ -private String negotiable; - -@Column(name="INCREASE", nullable=true) - -/** -* Indica que incrementa el valor de capital con el cual se genera la tabla de pagos -*/ -private String increase; - -@Column(name="DECREASE", nullable=true) - -/** -* Indica que disminuye el valor de capital con el cual se genera la tabla de pagos -*/ -private String decrease; - -@Column(name="DECREASEDISBURSEMENT", nullable=true) - -/** -* Indica que el valor del cargo se descuenta del monto a entregar al cliente -*/ -private String decreasedisbursement; - -@Column(name="ACTIVE", nullable=true) - -/** -* null -*/ -private String active; - -/**Contructor por defecto*/ -public TgeneSubProductLiquidation(){ -} -/**Contructor de TgeneSubProductLiquidation -@param pPk Clave Primaria del entity -*/ -public TgeneSubProductLiquidation(TgeneSubProductLiquidationKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubProductLiquidation -*/ -public static TgeneSubProductLiquidation find(EntityManager pEntityManager,TgeneSubProductLiquidationKey pKey) throws Exception{ - TgeneSubProductLiquidation obj = pEntityManager.find(TgeneSubProductLiquidation.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubProductLiquidation -@return El objeto que referencia a la Clave primaria de TgeneSubProductLiquidation -*/ -public TgeneSubProductLiquidationKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubProductLiquidation -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductLiquidation -*/ -public void setPk(TgeneSubProductLiquidationKey pPk){ - pk=pPk; -} -/**Obtiene el valor de calculateorder -@return valor de calculateorder*/ -public Integer getCalculateorder(){ - return calculateorder; -} -/**Fija el valor de calculateorder -@param pCalculateorder nuevo Valor de calculateorder*/ -public void setCalculateorder(Integer pCalculateorder){ - calculateorder=pCalculateorder; -} - -/**Obtiene el valor de baseamountbalancetype -@return valor de baseamountbalancetype*/ -public String getBaseamountbalancetype(){ - return baseamountbalancetype; -} -/**Fija el valor de baseamountbalancetype -@param pBaseamountbalancetype nuevo Valor de baseamountbalancetype*/ -public void setBaseamountbalancetype(String pBaseamountbalancetype){ - baseamountbalancetype=pBaseamountbalancetype; -} - -/**Obtiene el valor de baseamountbalancegroup -@return valor de baseamountbalancegroup*/ -public String getBaseamountbalancegroup(){ - return baseamountbalancegroup; -} -/**Fija el valor de baseamountbalancegroup -@param pBaseamountbalancegroup nuevo Valor de baseamountbalancegroup*/ -public void setBaseamountbalancegroup(String pBaseamountbalancegroup){ - baseamountbalancegroup=pBaseamountbalancegroup; -} - -/**Obtiene el valor de negotiable -@return valor de negotiable*/ -public String getNegotiable(){ - return negotiable; -} -/**Fija el valor de negotiable -@param pNegotiable nuevo Valor de negotiable*/ -public void setNegotiable(String pNegotiable){ - negotiable=pNegotiable; -} - -/**Obtiene el valor de increase -@return valor de increase*/ -public String getIncrease(){ - return increase; -} -/**Fija el valor de increase -@param pIncrease nuevo Valor de increase*/ -public void setIncrease(String pIncrease){ - increase=pIncrease; -} - -/**Obtiene el valor de decrease -@return valor de decrease*/ -public String getDecrease(){ - return decrease; -} -/**Fija el valor de decrease -@param pDecrease nuevo Valor de decrease*/ -public void setDecrease(String pDecrease){ - decrease=pDecrease; -} - -/**Obtiene el valor de decreasedisbursement -@return valor de decreasedisbursement*/ -public String getDecreasedisbursement(){ - return decreasedisbursement; -} -/**Fija el valor de decreasedisbursement -@param pDecreasedisbursement nuevo Valor de decreasedisbursement*/ -public void setDecreasedisbursement(String pDecreasedisbursement){ - decreasedisbursement=pDecreasedisbursement; -} - -/**Obtiene el valor de active -@return valor de active*/ -public String getActive(){ - return active; -} -/**Fija el valor de active -@param pActive nuevo Valor de active*/ -public void setActive(String pActive){ - active=pActive; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubProductLiquidation))return false; - TgeneSubProductLiquidation that = (TgeneSubProductLiquidation) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubProductLiquidation -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubProductLiquidation -*/ -public Object createInstance(){ - TgeneSubProductLiquidation instance=new TgeneSubProductLiquidation(); - instance.setPk(new TgeneSubProductLiquidationKey()); - return instance; -} -/**Clona la entidad TgeneSubProductLiquidation -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubProductLiquidation p=(TgeneSubProductLiquidation)this.clone(); - p.setPk((TgeneSubProductLiquidationKey)this.pk.cloneMe()); - return p; -} - - //Metodos manuales. - /**Sentencia que devuelve la definicion de cargos asociados al producto de una solicitud.*/ - private static final String HQL_LIQUIDATION_CHARGES = - "from TgeneSubProductLiquidation tprodliq " + - " where tprodliq.pk.modulecode = :modulecode "+ - " and tprodliq.pk.productcode = :productcode "+ - " and tprodliq.pk.subproductcode = :subproductcode "+ - " and tprodliq.pk.statuscode = :statuscode "+ - " and tprodliq.pk.currencycode = :currencycode "+ - " and tprodliq.active = 'Y' "; - - - /** - * Entrega una lista de cargos asociados a solicitud estos se pueden incrementar el valor del credito, o el - * cliente puede pagar en caja o con debito a la cuenta, o disminuir del valor a entregar al cliente. - * @param pModuleCode Codigo de modulo a obtener cargos asociados a la solicitud. - * @param pProductCode Codigo de producto a obtener cargos asociados a la solicitud. - * @param pSubproductCode Codigo de subproducto a obtener cargos asociados a la solicitud. - * @param pStatusCode Codigo de status a obtener cargos asociados a la solicitud. - * @param pCurrencyCode Codigo de moneda a obtener cargos asociados a la solicitud. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, - String pModuleCode,String pProductCode, - String pSubproductCode,String pStatusCode,String pCurrencyCode) throws Exception { - List lObjects = null; - Query qry = pEntityManager.createQuery(HQL_LIQUIDATION_CHARGES); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProductCode); - qry.setParameter("subproductcode", pSubproductCode); - qry.setParameter("statuscode", pStatusCode); - qry.setParameter("currencycode", pCurrencyCode); - lObjects = qry.getResultList(); - return lObjects; - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidationKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidationKey.java.svn-base deleted file mode 100644 index 34574d8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductLiquidationKey.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTLIQUIDATION*/ -@Embeddable -public class TgeneSubProductLiquidationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneSubProductLiquidationKey(){} -/**Contructor de TgeneSubProductLiquidationKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pStatuscode Estatus de cuenta -@param pCurrencycode Codigo de moneda -@param pBalancetype Cdigo de tipo de saldo. de valores a cobrar en la liquidacion de una operacion -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneSubProductLiquidationKey(String pModulecode,String pProductcode,String pSubproductcode,String pStatuscode,String pCurrencycode,String pBalancetype,String pBalancegroup){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - statuscode=pStatuscode; - currencycode=pCurrencycode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneSubProductLiquidationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductLiquidationKey))return false; - TgeneSubProductLiquidationKey that = (TgeneSubProductLiquidationKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubProductLiquidationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRate.java.svn-base deleted file mode 100644 index 7d7f785..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRate.java.svn-base +++ /dev/null @@ -1,721 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODUCTRATE */ -@Entity(name = "TgeneSubProductRate") -@Table(name = "TGENESUBPRODUCTRATE") -public class TgeneSubProductRate extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneSubProductRate - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(RATESEQUENCE),0)+1 from TGENESUBPRODUCTRATE " + "where PRODUCTCODE=:procode " - + "and SUBPRODUCTCODE=:sprcode " + "and CURRENCYCODE=:curcode " + "and INTERESTBALANCETYPE=:interestbt " - + "and COMPANYCODE=:comcode " + "and INTERESTBALANCEGROUP=:interestbg " + "and MODULECODE=:modcode"), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "procode,pk.productcode;sprcode,pk.subproductcode;curcode,pk.currencycode;interestbt,pk.interestbalancetype;comcode,pk.companycode;interestbg,pk.interestbalancegroup;modcode,pk.modulecode"), - @Parameter(name = "field", value = "ratesequence") }) - @GeneratedValue(generator = "seq_id") - private TgeneSubProductRateKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Manejo de optimistic locking - */ - private Integer recordversion; - - @Column(name = "BASERATECATALOG", nullable = true) - /** - * Codigo de catalogo 01 Natural, 02 Juridico - */ - private String baseratecatalog; - - @Column(name = "BASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona - */ - private String baseratecatalogcode; - - @Column(name = "MARGIN", nullable = true) - /** - * Margen a aplicar dado el operador - */ - private BigDecimal margin; - - @Column(name = "OPERATOR", nullable = true) - /** - * Operador a aplicar sobre la tasa base, +, - , % - */ - private String operator; - - @Column(name = "MINTERM", nullable = false) - /** - * Plazo minnimo - */ - private Integer minterm; - - @Column(name = "MAXTERM", nullable = true) - /** - * Plazo maximo - */ - private Integer maxterm; - - @Column(name = "MINAMOUNT", nullable = false) - /** - * Monto minimo - */ - private BigDecimal minamount; - - @Column(name = "MAXAMOUNT", nullable = true) - /** - * Monto Maximo - */ - private BigDecimal maxamount; - - @Column(name = "MINRATE", nullable = true) - /** - * Minimo permitido en la negociacion del prestamo - */ - private BigDecimal minrate; - - @Column(name = "MAXRATE", nullable = true) - /** - * Maximo permitido en la negociacion del prestamo - */ - private BigDecimal maxrate; - - @Column(name = "READJUSTBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base de reajuste, BCE tasa banco central - */ - private String readjustbaseratecatalog; - - @Column(name = "READJUSTBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String readjustbaseratecatalogcode; - - @Column(name = "READJUSTMENTOPERATOR", nullable = true) - /** - * Operador que se utilizara el momento del reajuste - */ - private String readjustmentoperator; - - @Column(name = "READJUSTMENTMARGIN", nullable = true) - /** - * Margen a aplicar en el reajuste - */ - private BigDecimal readjustmentmargin; - - @Column(name = "MAXBASERATECATALOG", nullable = true) - /** - * Codigo de catalogo de tasas base maxima, BCE tasa banco central - */ - private String maxbaseratecatalog; - - @Column(name = "MAXBASERATECATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo BASERATE - */ - private String maxbaseratecatalogcode; - - /** Contructor por defecto */ - public TgeneSubProductRate() { - } - - /** - * Contructor de TgeneSubProductRate - * - * @param pPk Clave Primaria del entity - * @param pMinterm Plazo minnimo - * @param pMinamount Monto minimo - */ - public TgeneSubProductRate(TgeneSubProductRateKey pPk, Integer pMinterm, BigDecimal pMinamount) { - this(); - this.pk = pPk; - this.minterm = pMinterm; - this.minamount = pMinamount; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSubProductRate - */ - public static TgeneSubProductRate find(EntityManager pEntityManager, TgeneSubProductRateKey pKey) throws Exception { - TgeneSubProductRate obj = pEntityManager.find(TgeneSubProductRate.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneSubProductRate - * - * @return El objeto que referencia a la Clave primaria de TgeneSubProductRate - */ - public TgeneSubProductRateKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneSubProductRate - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubProductRate - */ - public void setPk(TgeneSubProductRateKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de baseratecatalog - * - * @return valor de baseratecatalog - */ - public String getBaseratecatalog() { - return this.baseratecatalog; - } - - /** - * Fija el valor de baseratecatalog - * - * @param pBaseratecatalog nuevo Valor de baseratecatalog - */ - public void setBaseratecatalog(String pBaseratecatalog) { - this.baseratecatalog = pBaseratecatalog; - } - - /** - * Obtiene el valor de baseratecatalogcode - * - * @return valor de baseratecatalogcode - */ - public String getBaseratecatalogcode() { - return this.baseratecatalogcode; - } - - /** - * Fija el valor de baseratecatalogcode - * - * @param pBaseratecatalogcode nuevo Valor de baseratecatalogcode - */ - public void setBaseratecatalogcode(String pBaseratecatalogcode) { - this.baseratecatalogcode = pBaseratecatalogcode; - } - - /** - * Obtiene el valor de margin - * - * @return valor de margin - */ - public BigDecimal getMargin() { - return this.margin; - } - - /** - * Fija el valor de margin - * - * @param pMargin nuevo Valor de margin - */ - public void setMargin(BigDecimal pMargin) { - this.margin = pMargin; - } - - /** - * Obtiene el valor de operator - * - * @return valor de operator - */ - public String getOperator() { - return this.operator; - } - - /** - * Fija el valor de operator - * - * @param pOperator nuevo Valor de operator - */ - public void setOperator(String pOperator) { - this.operator = pOperator; - } - - /** - * Obtiene el valor de minterm - * - * @return valor de minterm - */ - public Integer getMinterm() { - return this.minterm; - } - - /** - * Fija el valor de minterm - * - * @param pMinterm nuevo Valor de minterm - */ - public void setMinterm(Integer pMinterm) { - this.minterm = pMinterm; - } - - /** - * Obtiene el valor de maxterm - * - * @return valor de maxterm - */ - public Integer getMaxterm() { - return this.maxterm; - } - - /** - * Fija el valor de maxterm - * - * @param pMaxterm nuevo Valor de maxterm - */ - public void setMaxterm(Integer pMaxterm) { - this.maxterm = pMaxterm; - } - - /** - * Obtiene el valor de minamount - * - * @return valor de minamount - */ - public BigDecimal getMinamount() { - return this.minamount; - } - - /** - * Fija el valor de minamount - * - * @param pMinamount nuevo Valor de minamount - */ - public void setMinamount(BigDecimal pMinamount) { - this.minamount = pMinamount; - } - - /** - * Obtiene el valor de maxamount - * - * @return valor de maxamount - */ - public BigDecimal getMaxamount() { - return this.maxamount; - } - - /** - * Fija el valor de maxamount - * - * @param pMaxamount nuevo Valor de maxamount - */ - public void setMaxamount(BigDecimal pMaxamount) { - this.maxamount = pMaxamount; - } - - /** - * Obtiene el valor de minrate - * - * @return valor de minrate - */ - public BigDecimal getMinrate() { - return this.minrate; - } - - /** - * Fija el valor de minrate - * - * @param pMinrate nuevo Valor de minrate - */ - public void setMinrate(BigDecimal pMinrate) { - this.minrate = pMinrate; - } - - /** - * Obtiene el valor de maxrate - * - * @return valor de maxrate - */ - public BigDecimal getMaxrate() { - return this.maxrate; - } - - /** - * Fija el valor de maxrate - * - * @param pMaxrate nuevo Valor de maxrate - */ - public void setMaxrate(BigDecimal pMaxrate) { - this.maxrate = pMaxrate; - } - - /** - * Obtiene el valor de readjustbaseratecatalog - * - * @return valor de readjustbaseratecatalog - */ - public String getReadjustbaseratecatalog() { - return this.readjustbaseratecatalog; - } - - /** - * Fija el valor de readjustbaseratecatalog - * - * @param pReadjustbaseratecatalog nuevo Valor de readjustbaseratecatalog - */ - public void setReadjustbaseratecatalog(String pReadjustbaseratecatalog) { - this.readjustbaseratecatalog = pReadjustbaseratecatalog; - } - - /** - * Obtiene el valor de readjustbaseratecatalogcode - * - * @return valor de readjustbaseratecatalogcode - */ - public String getReadjustbaseratecatalogcode() { - return this.readjustbaseratecatalogcode; - } - - /** - * Fija el valor de readjustbaseratecatalogcode - * - * @param pReadjustbaseratecatalogcode nuevo Valor de readjustbaseratecatalogcode - */ - public void setReadjustbaseratecatalogcode(String pReadjustbaseratecatalogcode) { - this.readjustbaseratecatalogcode = pReadjustbaseratecatalogcode; - } - - /** - * Obtiene el valor de readjustmentoperator - * - * @return valor de readjustmentoperator - */ - public String getReadjustmentoperator() { - return this.readjustmentoperator; - } - - /** - * Fija el valor de readjustmentoperator - * - * @param pReadjustmentoperator nuevo Valor de readjustmentoperator - */ - public void setReadjustmentoperator(String pReadjustmentoperator) { - this.readjustmentoperator = pReadjustmentoperator; - } - - /** - * Obtiene el valor de readjustmentmargin - * - * @return valor de readjustmentmargin - */ - public BigDecimal getReadjustmentmargin() { - return this.readjustmentmargin; - } - - /** - * Fija el valor de readjustmentmargin - * - * @param pReadjustmentmargin nuevo Valor de readjustmentmargin - */ - public void setReadjustmentmargin(BigDecimal pReadjustmentmargin) { - this.readjustmentmargin = pReadjustmentmargin; - } - - /** - * Obtiene el valor de maxbaseratecatalog - * - * @return valor de maxbaseratecatalog - */ - public String getMaxbaseratecatalog() { - return this.maxbaseratecatalog; - } - - /** - * Fija el valor de maxbaseratecatalog - * - * @param pMaxbaseratecatalog nuevo Valor de maxbaseratecatalog - */ - public void setMaxbaseratecatalog(String pMaxbaseratecatalog) { - this.maxbaseratecatalog = pMaxbaseratecatalog; - } - - /** - * Obtiene el valor de maxbaseratecatalogcode - * - * @return valor de maxbaseratecatalogcode - */ - public String getMaxbaseratecatalogcode() { - return this.maxbaseratecatalogcode; - } - - /** - * Fija el valor de maxbaseratecatalogcode - * - * @param pMaxbaseratecatalogcode nuevo Valor de maxbaseratecatalogcode - */ - public void setMaxbaseratecatalogcode(String pMaxbaseratecatalogcode) { - this.maxbaseratecatalogcode = pMaxbaseratecatalogcode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubProductRate)) { - return false; - } - TgeneSubProductRate that = (TgeneSubProductRate) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneSubProductRate - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneSubProductRate */ - @Override - public Object createInstance() { - TgeneSubProductRate instance = new TgeneSubProductRate(); - instance.setPk(new TgeneSubProductRateKey()); - return instance; - } - - /** - * Clona la entidad TgeneSubProductRate - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneSubProductRate p = (TgeneSubProductRate) this.clone(); - p.setPk((TgeneSubProductRateKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - public boolean equalsWithoutSequence(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneSubProductRate)) { - return false; - } - TgeneSubProductRate that = (TgeneSubProductRate) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - - TgeneSubProductRateKey thispk = this.getPk(); - TgeneSubProductRateKey thatpk = that.getPk(); - - if (thatpk == null) { - return false; - } - if (!(thatpk instanceof TgeneSubProductRateKey)) { - return false; - } - if ((thispk.getModulecode() == null) || (thatpk.getModulecode() == null)) { - return false; - } - if (!thispk.getModulecode().equals(thatpk.getModulecode())) { - return false; - } - if ((thispk.getProductcode() == null) || (thatpk.getProductcode() == null)) { - return false; - } - if (!thispk.getProductcode().equals(thatpk.getProductcode())) { - return false; - } - if ((thispk.getSubproductcode() == null) || (thatpk.getSubproductcode() == null)) { - return false; - } - if (!thispk.getSubproductcode().equals(thatpk.getSubproductcode())) { - return false; - } - if ((thispk.getCurrencycode() == null) || (thatpk.getCurrencycode() == null)) { - return false; - } - if (!thispk.getCurrencycode().equals(thatpk.getCurrencycode())) { - return false; - } - if ((thispk.getInterestbalancetype() == null) || (thatpk.getInterestbalancetype() == null)) { - return false; - } - if (!thispk.getInterestbalancetype().equals(thatpk.getInterestbalancetype())) { - return false; - } - if ((thispk.getCompanycode() == null) || (thatpk.getCompanycode() == null)) { - return false; - } - if (!thispk.getCompanycode().equals(thatpk.getCompanycode())) { - return false; - } - if ((thispk.getInterestbalancegroup() == null) || (thatpk.getInterestbalancegroup() == null)) { - return false; - } - if (!thispk.getInterestbalancegroup().equals(thatpk.getInterestbalancegroup())) { - return false; - } - - return true; - } - - /** Sentencia que devuelve una lista de TgeneSubPproductRate. */ - private static final String HQL_SUBPRODUCT_RATE = "from TgeneSubProductRate tsubprate " - + " where tsubprate.pk.interestbalancetype = :interestbalancetype " + " and tsubprate.pk.interestbalancegroup = :interestbalancegroup " - + " and tsubprate.pk.modulecode = :modulecode " + " and tsubprate.pk.productcode = :productcode " - + " and tsubprate.pk.subproductcode = :subproductcode " + " and tsubprate.pk.companycode = :companycode " - + " and tsubprate.pk.currencycode = :currencycode "; - - /** - * Metodo que entrega una lista de tasas definidas por subproducto compania. - * - * @param pEntityManager Referencia a la session de la base de datos. - * @param pInterestbalancetype Tipo de saldo. - * @param pInterestbalancegroup Grupo de balance. - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @param pSubProduct Codigo de subproducto. - * @param pCompany Codigo de compania. - * @param pCurrency Codigo de moneda. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static final List find(EntityManager pEntityManager, String pInterestbalancetype, String pInterestbalancegroup, - String pModule, String pProduct, String pSubProduct, Integer pCompany, String pCurrency) throws Exception { - List lRates = null; - Query qry = pEntityManager.createQuery(TgeneSubProductRate.HQL_SUBPRODUCT_RATE); - qry.setParameter("interestbalancetype", pInterestbalancetype); - qry.setParameter("interestbalancegroup", pInterestbalancegroup); - qry.setParameter("modulecode", pModule); - qry.setParameter("productcode", pProduct); - qry.setParameter("subproductcode", pSubProduct); - qry.setParameter("companycode", pCompany); - qry.setParameter("currencycode", pCurrency); - lRates = qry.getResultList(); - return lRates; - } - - /** Sentencia que devuelve un registro de TgeneSubProductCharges. */ - private static final String JQL_RATES = "from TgeneSubProductRate tsubpchar " + " where tsubpchar.pk.modulecode = :modulecode " - + " and tsubpchar.pk.productcode = :productcode " + " and tsubpchar.pk.subproductcode = :subproductcode " - + " and tsubpchar.pk.currencycode = :currencycode " + " and tsubpchar.pk.companycode = :companycode "; - - /** - * - * @param pEntityManager - * @param pModuleCode - * @param pProduct - * @param pSubProduct - * @return - * @throws Exception - */ - - @SuppressWarnings("unchecked") - public static final List find(EntityManager pEntityManager, String pModuleCode, String pProduct, String pSubProduct, - String pCurrencyCode, Integer pCompanyCode) throws Exception { - Query qry = pEntityManager.createQuery(TgeneSubProductRate.JQL_RATES); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("productcode", pProduct); - qry.setParameter("subproductcode", pSubProduct); - qry.setParameter("currencycode", pCurrencyCode); - qry.setParameter("companycode", pCompanyCode); - - return qry.getResultList(); - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRateKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRateKey.java.svn-base deleted file mode 100644 index e499be1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/product/rate/.svn/text-base/TgeneSubProductRateKey.java.svn-base +++ /dev/null @@ -1,286 +0,0 @@ -package com.fp.persistence.pgeneral.product.rate; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODUCTRATE*/ -@Embeddable -public class TgeneSubProductRateKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="INTERESTBALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo de interes a calcular. -*/ -private String interestbalancetype; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="INTERESTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Cdigo de grupo de balance del tipo de saldo. -*/ -private String interestbalancegroup; - -@Column(name="RATESEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia para las tasas por subproducto -*/ -private Integer ratesequence; - -/**Contructor por defecto*/ -public TgeneSubProductRateKey(){} -/**Contructor de TgeneSubProductRateKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -@param pInterestbalancetype Cdigo de tipo de saldo de interes a calcular. -@param pCompanycode Codigo de compania -@param pInterestbalancegroup Cdigo de grupo de balance del tipo de saldo. -@param pRatesequence Secuencia para las tasas por subproducto -*/ -public TgeneSubProductRateKey(String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode,String pInterestbalancetype,Integer pCompanycode,String pInterestbalancegroup,Integer pRatesequence){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; - interestbalancetype=pInterestbalancetype; - companycode=pCompanycode; - interestbalancegroup=pInterestbalancegroup; - ratesequence=pRatesequence; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Obtiene el valor de ratesequence -@return valor de ratesequence*/ -public Integer getRatesequence(){ - return ratesequence; -} -/**Fija el valor de ratesequence -@param pRatesequence nuevo Valor de ratesequence*/ -public void setRatesequence(Integer pRatesequence){ - ratesequence=pRatesequence; -} - -/**Implementacion de la comparacion de TgeneSubProductRateKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubProductRateKey))return false; - TgeneSubProductRateKey that = (TgeneSubProductRateKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getInterestbalancetype() == null || that.getInterestbalancetype() == null){ - return false; - } - if (! this.getInterestbalancetype().equals(that.getInterestbalancetype())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getInterestbalancegroup() == null || that.getInterestbalancegroup() == null){ - return false; - } - if (! this.getInterestbalancegroup().equals(that.getInterestbalancegroup())){ - return false; - } - if (this.getRatesequence() == null || that.getRatesequence() == null){ - return false; - } - if (! this.getRatesequence().equals(that.getRatesequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneSubProductRateKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getInterestbalancetype() == null ? 0 : this.getInterestbalancetype().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getInterestbalancegroup() == null ? 0 : this.getInterestbalancegroup().hashCode()); - result = result * 37 + (this.getRatesequence() == null ? 0 : this.getRatesequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/entries deleted file mode 100644 index e690760..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneDefaultProvision.java -file - - - - -2022-07-28T03:40:29.418745Z -03f9405bc166701eda01aa707e722702 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6844 - -TgeneDefaultProvisionKey.java -file - - - - -2022-07-28T03:40:29.418745Z -5bf67048d29cb2790a2792e3b23984f3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5658 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvision.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvision.java.svn-base deleted file mode 100644 index 5d96a4a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvision.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.persistence.pgeneral.prov; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEDEFAULTPROVISION*/ -@Entity(name="TgeneDefaultProvision") -@Table(name="TGENEDEFAULTPROVISION") -public class TgeneDefaultProvision extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneDefaultProvision -*/ -@EmbeddedId -private TgeneDefaultProvisionKey pk; -@Column(name="INTERESTBALANCETYPE", nullable=true) - -/** -* Cdigo de tipo de saldo. Del interes normal, sirve para obtener la tasa anterior. -*/ -private String interestbalancetype; - -@Column(name="INTERESTBALANCEGROUP", nullable=true) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String interestbalancegroup; - -@Column(name="GRACEDAYS", nullable=true) - -/** -* Y, Indica que se considera dias de gracia para el calculo de la provision, N no considera dias de gracia y calcula desde el vencimiento de la cuota -*/ -private String gracedays; - -@Column(name="OPERATOR", nullable=true) - -/** -* Operador a aplicar sobre la tasa base, +, - , % -*/ -private String operator; - -@Column(name="MARGIN", nullable=true) - -/** -* Margen a aplicar sobre la tasa real del tipo de saldo de interes. -*/ -private BigDecimal margin; - -@Column(name="RATEFROMTARIF", nullable=true) - -/** -* Y indica que la tasa se obtiene del tarifario -*/ -private String ratefromtarif; - -/**Contructor por defecto*/ -public TgeneDefaultProvision(){ -} -/**Contructor de TgeneDefaultProvision -@param pPk Clave Primaria del entity -*/ -public TgeneDefaultProvision(TgeneDefaultProvisionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneDefaultProvision -*/ -public static TgeneDefaultProvision find(EntityManager pEntityManager,TgeneDefaultProvisionKey pKey) throws Exception{ - TgeneDefaultProvision obj = pEntityManager.find(TgeneDefaultProvision.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneDefaultProvision -@return El objeto que referencia a la Clave primaria de TgeneDefaultProvision -*/ -public TgeneDefaultProvisionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneDefaultProvision -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneDefaultProvision -*/ -public void setPk(TgeneDefaultProvisionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de interestbalancetype -@return valor de interestbalancetype*/ -public String getInterestbalancetype(){ - return interestbalancetype; -} -/**Fija el valor de interestbalancetype -@param pInterestbalancetype nuevo Valor de interestbalancetype*/ -public void setInterestbalancetype(String pInterestbalancetype){ - interestbalancetype=pInterestbalancetype; -} - -/**Obtiene el valor de interestbalancegroup -@return valor de interestbalancegroup*/ -public String getInterestbalancegroup(){ - return interestbalancegroup; -} -/**Fija el valor de interestbalancegroup -@param pInterestbalancegroup nuevo Valor de interestbalancegroup*/ -public void setInterestbalancegroup(String pInterestbalancegroup){ - interestbalancegroup=pInterestbalancegroup; -} - -/**Obtiene el valor de gracedays -@return valor de gracedays*/ -public String getGracedays(){ - return gracedays; -} -/**Fija el valor de gracedays -@param pGracedays nuevo Valor de gracedays*/ -public void setGracedays(String pGracedays){ - gracedays=pGracedays; -} - -/**Obtiene el valor de operator -@return valor de operator*/ -public String getOperator(){ - return operator; -} -/**Fija el valor de operator -@param pOperator nuevo Valor de operator*/ -public void setOperator(String pOperator){ - operator=pOperator; -} - -/**Obtiene el valor de margin -@return valor de margin*/ -public BigDecimal getMargin(){ - return margin; -} -/**Fija el valor de margin -@param pMargin nuevo Valor de margin*/ -public void setMargin(BigDecimal pMargin){ - margin=pMargin; -} - -/**Obtiene el valor de ratefromtarif -@return valor de ratefromtarif*/ -public String getRatefromtarif(){ - return ratefromtarif; -} -/**Fija el valor de ratefromtarif -@param pRatefromtarif nuevo Valor de ratefromtarif*/ -public void setRatefromtarif(String pRatefromtarif){ - ratefromtarif=pRatefromtarif; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneDefaultProvision))return false; - TgeneDefaultProvision that = (TgeneDefaultProvision) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneDefaultProvision -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneDefaultProvision -*/ -public Object createInstance(){ - TgeneDefaultProvision instance=new TgeneDefaultProvision(); - instance.setPk(new TgeneDefaultProvisionKey()); - return instance; -} -/**Clona la entidad TgeneDefaultProvision -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneDefaultProvision p=(TgeneDefaultProvision)this.clone(); - p.setPk((TgeneDefaultProvisionKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvisionKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvisionKey.java.svn-base deleted file mode 100644 index a549c08..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/prov/.svn/text-base/TgeneDefaultProvisionKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.prov; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEDEFAULTPROVISION*/ -@Embeddable -public class TgeneDefaultProvisionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="DEFAULTBALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Ehemplo ISCV, MORA -*/ -private String defaultbalancetype; - -@Column(name="DEFAULTBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String defaultbalancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -/**Contructor por defecto*/ -public TgeneDefaultProvisionKey(){} -/**Contructor de TgeneDefaultProvisionKey -@param pDefaultbalancetype Cdigo de tipo de saldo. Ehemplo ISCV, MORA -@param pDefaultbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de cuenta -*/ -public TgeneDefaultProvisionKey(String pDefaultbalancetype,String pDefaultbalancegroup,String pModulecode,String pStatuscode){ - defaultbalancetype=pDefaultbalancetype; - defaultbalancegroup=pDefaultbalancegroup; - modulecode=pModulecode; - statuscode=pStatuscode; -} -/**Obtiene el valor de defaultbalancetype -@return valor de defaultbalancetype*/ -public String getDefaultbalancetype(){ - return defaultbalancetype; -} -/**Fija el valor de defaultbalancetype -@param pDefaultbalancetype nuevo Valor de defaultbalancetype*/ -public void setDefaultbalancetype(String pDefaultbalancetype){ - defaultbalancetype=pDefaultbalancetype; -} - -/**Obtiene el valor de defaultbalancegroup -@return valor de defaultbalancegroup*/ -public String getDefaultbalancegroup(){ - return defaultbalancegroup; -} -/**Fija el valor de defaultbalancegroup -@param pDefaultbalancegroup nuevo Valor de defaultbalancegroup*/ -public void setDefaultbalancegroup(String pDefaultbalancegroup){ - defaultbalancegroup=pDefaultbalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Implementacin de la comparacin de TgeneDefaultProvisionKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneDefaultProvisionKey))return false; - TgeneDefaultProvisionKey that = (TgeneDefaultProvisionKey) o; - if (this.getDefaultbalancetype() == null || that.getDefaultbalancetype() == null){ - return false; - } - if (! this.getDefaultbalancetype().equals(that.getDefaultbalancetype())){ - return false; - } - if (this.getDefaultbalancegroup() == null || that.getDefaultbalancegroup() == null){ - return false; - } - if (! this.getDefaultbalancegroup().equals(that.getDefaultbalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneDefaultProvisionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getDefaultbalancetype() == null ? 0 : this.getDefaultbalancetype().hashCode()); - result = result * 37 + (this.getDefaultbalancegroup() == null ? 0 : this.getDefaultbalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/entries deleted file mode 100644 index 44057ce..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TreceivableTemplateDesc.java -file - - - - -2022-07-28T03:40:29.281745Z -9159150d1b7e636773b9b189dfa58096 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4869 - -TreceivableTemplate.java -file - - - - -2022-07-28T03:40:29.282745Z -4426ff86b2c1155a9f1671696d749ee6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4959 - -TreceivableTemplateDetail.java -file - - - - -2022-07-28T03:40:29.282745Z -07e4f551f2061a07f08c1ff2427fe64f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9040 - -acco -dir - -TreceivableTemplateDescKey.java -file - - - - -2022-07-28T03:40:29.282745Z -d13567cdc3e661e936bc8c228d6e2658 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3672 - -TreceivableTemplateDetailKey.java -file - - - - -2022-07-28T03:40:29.283745Z -b32f4b7dc7c75a9be5768be7ac6804e6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3677 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplate.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplate.java.svn-base deleted file mode 100644 index b8d8695..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplate.java.svn-base +++ /dev/null @@ -1,176 +0,0 @@ -package com.fp.persistence.pgeneral.receive; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TRECEIVABLETEMPLATE*/ -@Entity(name="TreceivableTemplate") -@Table(name="TRECEIVABLETEMPLATE") -public class TreceivableTemplate extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TreceivableTemplate -*/ -@Id -@Column(name="TEMPLATECODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistik locking del registro. -*/ -private Integer recordversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion de la cuenta por cobrar. -*/ -private String description; - -/**Contructor por defecto*/ -public TreceivableTemplate(){ -} -/**Contructor de TreceivableTemplate -@param pPk Clave Primaria del entity -*/ -public TreceivableTemplate(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TreceivableTemplate -*/ -public static TreceivableTemplate find(EntityManager pEntityManager,Object pKey) throws Exception{ - TreceivableTemplate obj = pEntityManager.find(TreceivableTemplate.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TreceivableTemplate -@return El objeto que referencia a la Clave primaria de TreceivableTemplate -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TreceivableTemplate -@param pPk El objeto que referencia a la nueva Clave primaria de TreceivableTemplate -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TreceivableTemplate))return false; - TreceivableTemplate that = (TreceivableTemplate) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TreceivableTemplate -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TreceivableTemplate -*/ -public Object createInstance(){ - TreceivableTemplate instance=new TreceivableTemplate(); - return instance; -} -/**Clona la entidad TreceivableTemplate -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TreceivableTemplate p=(TreceivableTemplate)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDesc.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDesc.java.svn-base deleted file mode 100644 index 4d3fc2f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDesc.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pgeneral.receive; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TRECEIVABLETEMPLATEDESC*/ -@Entity(name="TreceivableTemplateDesc") -@Table(name="TRECEIVABLETEMPLATEDESC") -public class TreceivableTemplateDesc extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TreceivableTemplateDesc -*/ -@EmbeddedId -private TreceivableTemplateDescKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick loking del registro -*/ -private Integer recordversion; - -@Column(name="DESCRIPCTION", nullable=true) - -/** -* Descripcion del codigo de plantilla de cuenta por cobrar. -*/ -private String descripction; - -/**Contructor por defecto*/ -public TreceivableTemplateDesc(){ -} -/**Contructor de TreceivableTemplateDesc -@param pPk Clave Primaria del entity -*/ -public TreceivableTemplateDesc(TreceivableTemplateDescKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TreceivableTemplateDesc -*/ -public static TreceivableTemplateDesc find(EntityManager pEntityManager,TreceivableTemplateDescKey pKey) throws Exception{ - TreceivableTemplateDesc obj = pEntityManager.find(TreceivableTemplateDesc.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TreceivableTemplateDesc -@return El objeto que referencia a la Clave primaria de TreceivableTemplateDesc -*/ -public TreceivableTemplateDescKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TreceivableTemplateDesc -@param pPk El objeto que referencia a la nueva Clave primaria de TreceivableTemplateDesc -*/ -public void setPk(TreceivableTemplateDescKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de descripction -@return valor de descripction*/ -public String getDescripction(){ - return descripction; -} -/**Fija el valor de descripction -@param pDescripction nuevo Valor de descripction*/ -public void setDescripction(String pDescripction){ - descripction=pDescripction; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TreceivableTemplateDesc))return false; - TreceivableTemplateDesc that = (TreceivableTemplateDesc) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TreceivableTemplateDesc -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TreceivableTemplateDesc -*/ -public Object createInstance(){ - TreceivableTemplateDesc instance=new TreceivableTemplateDesc(); - instance.setPk(new TreceivableTemplateDescKey()); - return instance; -} -/**Clona la entidad TreceivableTemplateDesc -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TreceivableTemplateDesc p=(TreceivableTemplateDesc)this.clone(); - p.setPk((TreceivableTemplateDescKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDescKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDescKey.java.svn-base deleted file mode 100644 index 32c92eb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDescKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.receive; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TRECEIVABLETEMPLATEDESC*/ -@Embeddable -public class TreceivableTemplateDescKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TEMPLATECODE", nullable=false,updatable=false) - -/** -* Cdigo de plantilla de cuentas por cobrar. -*/ -private Integer templatecode; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -/**Contructor por defecto*/ -public TreceivableTemplateDescKey(){} -/**Contructor de TreceivableTemplateDescKey -@param pTemplatecode Cdigo de plantilla de cuentas por cobrar. -@param pLanguagecode Codigo de idioma -*/ -public TreceivableTemplateDescKey(Integer pTemplatecode,String pLanguagecode){ - templatecode=pTemplatecode; - languagecode=pLanguagecode; -} -/**Obtiene el valor de templatecode -@return valor de templatecode*/ -public Integer getTemplatecode(){ - return templatecode; -} -/**Fija el valor de templatecode -@param pTemplatecode nuevo Valor de templatecode*/ -public void setTemplatecode(Integer pTemplatecode){ - templatecode=pTemplatecode; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Implementacin de la comparacin de TreceivableTemplateDescKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TreceivableTemplateDescKey))return false; - TreceivableTemplateDescKey that = (TreceivableTemplateDescKey) o; - if (this.getTemplatecode() == null || that.getTemplatecode() == null){ - return false; - } - if (! this.getTemplatecode().equals(that.getTemplatecode())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TreceivableTemplateDescKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTemplatecode() == null ? 0 : this.getTemplatecode().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetail.java.svn-base deleted file mode 100644 index 831206f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetail.java.svn-base +++ /dev/null @@ -1,307 +0,0 @@ -package com.fp.persistence.pgeneral.receive; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TRECEIVABLETEMPLATEDETAIL*/ -@Entity(name="TreceivableTemplateDetail") -@Table(name="TRECEIVABLETEMPLATEDETAIL") -public class TreceivableTemplateDetail extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TreceivableTemplateDetail -*/ -@Id -@Column(name="TEMPLATECODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="BALANCETYPE", nullable=false) - -/** -* Cdigo de tipo de saldo d registro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="RECOVERBALANCETYPE", nullable=true) - -/** -* Cdigo de tipo de saldo d cobro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String recoverbalancetype; - -@Column(name="RECOVERBALANCEGROUP", nullable=true) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String recoverbalancegroup; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="PRIORITY", nullable=true) - -/** -* Prioridad de cobro de la cuenta por cobrar dentro del dia -*/ -private Integer priority; - -@Column(name="ISPARTIAL", nullable=true) - -/** -* Indica si permite cobros parciales de cuenta por cobrar. -*/ -private String ispartial; - -@Column(name="MINIMUNPAYMENT", nullable=true) - -/** -* Si permite cobro parcial cual es el valor minimo a cobrar. -*/ -private BigDecimal minimunpayment; - -@Column(name="TERM", nullable=true) - -/** -* Plazo de vigencia de la cuenta por cobrar, al vencimiento se da de baja la cxc -*/ -private Integer term; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro de plantilla se almacena en cache en el servidor de aplicaciones -*/ -private String managecache; - -/**Contructor por defecto*/ -public TreceivableTemplateDetail(){ -} -/**Contructor de TreceivableTemplateDetail -@param pPk Clave Primaria del entity -@param pBalancetype Cdigo de tipo de saldo d registro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TreceivableTemplateDetail(Integer pPk,String pBalancetype,String pBalancegroup){ - this(); - pk=pPk; - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TreceivableTemplateDetail -*/ -public static TreceivableTemplateDetail find(EntityManager pEntityManager,Object pKey) throws Exception{ - TreceivableTemplateDetail obj = pEntityManager.find(TreceivableTemplateDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TreceivableTemplateDetail -@return El objeto que referencia a la Clave primaria de TreceivableTemplateDetail -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TreceivableTemplateDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TreceivableTemplateDetail -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de recoverbalancetype -@return valor de recoverbalancetype*/ -public String getRecoverbalancetype(){ - return recoverbalancetype; -} -/**Fija el valor de recoverbalancetype -@param pRecoverbalancetype nuevo Valor de recoverbalancetype*/ -public void setRecoverbalancetype(String pRecoverbalancetype){ - recoverbalancetype=pRecoverbalancetype; -} - -/**Obtiene el valor de recoverbalancegroup -@return valor de recoverbalancegroup*/ -public String getRecoverbalancegroup(){ - return recoverbalancegroup; -} -/**Fija el valor de recoverbalancegroup -@param pRecoverbalancegroup nuevo Valor de recoverbalancegroup*/ -public void setRecoverbalancegroup(String pRecoverbalancegroup){ - recoverbalancegroup=pRecoverbalancegroup; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de priority -@return valor de priority*/ -public Integer getPriority(){ - return priority; -} -/**Fija el valor de priority -@param pPriority nuevo Valor de priority*/ -public void setPriority(Integer pPriority){ - priority=pPriority; -} - -/**Obtiene el valor de ispartial -@return valor de ispartial*/ -public String getIspartial(){ - return ispartial; -} -/**Fija el valor de ispartial -@param pIspartial nuevo Valor de ispartial*/ -public void setIspartial(String pIspartial){ - ispartial=pIspartial; -} - -/**Obtiene el valor de minimunpayment -@return valor de minimunpayment*/ -public BigDecimal getMinimunpayment(){ - return minimunpayment; -} -/**Fija el valor de minimunpayment -@param pMinimunpayment nuevo Valor de minimunpayment*/ -public void setMinimunpayment(BigDecimal pMinimunpayment){ - minimunpayment=pMinimunpayment; -} - -/**Obtiene el valor de term -@return valor de term*/ -public Integer getTerm(){ - return term; -} -/**Fija el valor de term -@param pTerm nuevo Valor de term*/ -public void setTerm(Integer pTerm){ - term=pTerm; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TreceivableTemplateDetail))return false; - TreceivableTemplateDetail that = (TreceivableTemplateDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TreceivableTemplateDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TreceivableTemplateDetail -*/ -public Object createInstance(){ - TreceivableTemplateDetail instance=new TreceivableTemplateDetail(); - return instance; -} -/**Clona la entidad TreceivableTemplateDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TreceivableTemplateDetail p=(TreceivableTemplateDetail)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetailKey.java.svn-base deleted file mode 100644 index bde5643..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/.svn/text-base/TreceivableTemplateDetailKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.receive; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TRECEIVABLETEMPLATEDETAIL*/ -@Embeddable -public class TreceivableTemplateDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TEMPLATECODE", nullable=false,updatable=false) - -/** -* Cdigo de plantilla de cuentas por cobrar. -*/ -private Integer templatecode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TreceivableTemplateDetailKey(){} -/**Contructor de TreceivableTemplateDetailKey -@param pTemplatecode Cdigo de plantilla de cuentas por cobrar. -@param pCompanycode Codigo de compania -*/ -public TreceivableTemplateDetailKey(Integer pTemplatecode,Integer pCompanycode){ - templatecode=pTemplatecode; - companycode=pCompanycode; -} -/**Obtiene el valor de templatecode -@return valor de templatecode*/ -public Integer getTemplatecode(){ - return templatecode; -} -/**Fija el valor de templatecode -@param pTemplatecode nuevo Valor de templatecode*/ -public void setTemplatecode(Integer pTemplatecode){ - templatecode=pTemplatecode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TreceivableTemplateDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TreceivableTemplateDetailKey))return false; - TreceivableTemplateDetailKey that = (TreceivableTemplateDetailKey) o; - if (this.getTemplatecode() == null || that.getTemplatecode() == null){ - return false; - } - if (! this.getTemplatecode().equals(that.getTemplatecode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TreceivableTemplateDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTemplatecode() == null ? 0 : this.getTemplatecode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/entries deleted file mode 100644 index bac6ce9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TreceivableAccountDemanDepo.java -file - - - - -2022-07-28T03:40:29.225745Z -f53c21b96794b0f91cea0fdfb3c6ed4e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -22415 - -TreceivableAccountDemanDepoKey.java -file - - - - -2022-07-28T03:40:29.225745Z -1dc8be90075916d717aff7d5f59ff24f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6202 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepo.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepo.java.svn-base deleted file mode 100644 index 547fc24..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepo.java.svn-base +++ /dev/null @@ -1,757 +0,0 @@ -package com.fp.persistence.pgeneral.receive.acco; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TRECEIVABLEACCOUNTDEMANDEPO */ -@Entity(name = "TreceivableAccountDemanDepo") -@Table(name = "TRECEIVABLEACCOUNTDEMANDEPO") -public class TreceivableAccountDemanDepo extends com.fp.dto.AbstractDataBalanceTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TreceivableAccountDemanDepo - */ - @EmbeddedId - private TreceivableAccountDemanDepoKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro de la cuenta por cobrar - */ - private Timestamp datefrom; - - @Column(name = "ACCOUNTINGDATE", nullable = true) - /** - * Fecha contable con la que se crea la cuenta por cobrar - */ - private Date accountingdate; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "BALANCETYPE", nullable = true) - /** - * Cdigo de tipo de saldo de registro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc - */ - private String balancetype; - - @Column(name = "BALANCEGROUP", nullable = true) - /** - * Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor - */ - private String balancegroup; - - @Column(name = "RECOVERBALANCETYPE", nullable = true) - /** - * Cdigo de tipo de saldo de cobro de la CXC. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc - */ - private String recoverbalancetype; - - @Column(name = "RECOVERBALANCEGROUP", nullable = true) - /** - * Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor - */ - private String recoverbalancegroup; - - @Column(name = "PRIORITY", nullable = true) - /** - * Prioridad de cobro de la cuenta por cobrar dentro en el dia - */ - private Integer priority; - - @Column(name = "ISPARTIAL", nullable = true) - /** - * Indica si la cuenta por cobrar permite cobros parciales - */ - private String ispartial; - - @Column(name = "MINIMUMPAYMENT", nullable = true) - /** - * Si permite cobros parciales, Valor minimo de cobro - */ - private BigDecimal minimumpayment; - - @Column(name = "EXPIREDATE", nullable = true) - /** - * Fecha de vencimiento de la cuenta por cobrar. - */ - private Date expiredate; - - @Column(name = "MESSAGE", nullable = true) - /** - * Numero de mensaje con el cual se realizo la ultima transaccin en la cuenta. - */ - private String message; - - @Column(name = "ORIGINALMESSAGE", nullable = true) - /** - * Numero de mensaje con el cual se creo la cuenta por cobrar. - */ - private String originalmessage; - - @Column(name = "REVERSEMESSAGE", nullable = true) - /** - * Numero de mensaje de reverso de la cuenta por cobrar. - */ - private String reversemessage; - - @Column(name = "REVERSE", nullable = true) - /** - * Indica si la cuenta por cobrar esta reversada. - */ - private String reverse; - - @Column(name = "ORIGINALAMOUNT", nullable = true) - /** - * Monto original - */ - private BigDecimal originalamount; - - @Column(name = "PENDINGAMOUNT", nullable = true) - /** - * Monto pendiente de pago - */ - private BigDecimal pendingamount; - - @Column(name = "LASTPAYAMOUNT", nullable = true) - /** - * Ultimo monto pagado - */ - private BigDecimal lastpayamount; - - @Column(name = "LASTPAY", nullable = true) - /** - * Fecha de ultimo pago - */ - private Date lastpay; - - @Column(name = "DESCRIPTION", nullable = true) - /** - * Glosa de la cuenta por cobrar. - */ - private String description; - - /** Contructor por defecto */ - public TreceivableAccountDemanDepo() { - } - - /** - * Contructor de TreceivableAccountDemanDepo - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro de la cuenta por cobrar - */ - public TreceivableAccountDemanDepo(TreceivableAccountDemanDepoKey pPk, Timestamp pDatefrom) { - this(); - pk = pPk; - datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TreceivableAccountDemanDepo - */ - public static TreceivableAccountDemanDepo find(EntityManager pEntityManager, TreceivableAccountDemanDepoKey pKey) throws Exception { - TreceivableAccountDemanDepo obj = pEntityManager.find(TreceivableAccountDemanDepo.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TreceivableAccountDemanDepo - * - * @return El objeto que referencia a la Clave primaria de TreceivableAccountDemanDepo - */ - public TreceivableAccountDemanDepoKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TreceivableAccountDemanDepo - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TreceivableAccountDemanDepo - */ - public void setPk(TreceivableAccountDemanDepoKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de accountingdate - * - * @return valor de accountingdate - */ - public Date getAccountingdate() { - return accountingdate; - } - - /** - * Fija el valor de accountingdate - * - * @param pAccountingdate nuevo Valor de accountingdate - */ - public void setAccountingdate(Date pAccountingdate) { - accountingdate = pAccountingdate; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de balancetype - * - * @return valor de balancetype - */ - public String getBalancetype() { - return balancetype; - } - - /** - * Fija el valor de balancetype - * - * @param pBalancetype nuevo Valor de balancetype - */ - public void setBalancetype(String pBalancetype) { - balancetype = pBalancetype; - } - - /** - * Obtiene el valor de balancegroup - * - * @return valor de balancegroup - */ - public String getBalancegroup() { - return balancegroup; - } - - /** - * Fija el valor de balancegroup - * - * @param pBalancegroup nuevo Valor de balancegroup - */ - public void setBalancegroup(String pBalancegroup) { - balancegroup = pBalancegroup; - } - - /** - * Obtiene el valor de recoverbalancetype - * - * @return valor de recoverbalancetype - */ - public String getRecoverbalancetype() { - return recoverbalancetype; - } - - /** - * Fija el valor de recoverbalancetype - * - * @param pRecoverbalancetype nuevo Valor de recoverbalancetype - */ - public void setRecoverbalancetype(String pRecoverbalancetype) { - recoverbalancetype = pRecoverbalancetype; - } - - /** - * Obtiene el valor de recoverbalancegroup - * - * @return valor de recoverbalancegroup - */ - public String getRecoverbalancegroup() { - return recoverbalancegroup; - } - - /** - * Fija el valor de recoverbalancegroup - * - * @param pRecoverbalancegroup nuevo Valor de recoverbalancegroup - */ - public void setRecoverbalancegroup(String pRecoverbalancegroup) { - recoverbalancegroup = pRecoverbalancegroup; - } - - /** - * Obtiene el valor de priority - * - * @return valor de priority - */ - public Integer getPriority() { - return priority; - } - - /** - * Fija el valor de priority - * - * @param pPriority nuevo Valor de priority - */ - public void setPriority(Integer pPriority) { - priority = pPriority; - } - - /** - * Obtiene el valor de ispartial - * - * @return valor de ispartial - */ - public String getIspartial() { - return ispartial; - } - - /** - * Fija el valor de ispartial - * - * @param pIspartial nuevo Valor de ispartial - */ - public void setIspartial(String pIspartial) { - ispartial = pIspartial; - } - - /** - * Obtiene el valor de minimumpayment - * - * @return valor de minimumpayment - */ - public BigDecimal getMinimumpayment() { - return minimumpayment; - } - - /** - * Fija el valor de minimumpayment - * - * @param pMinimumpayment nuevo Valor de minimumpayment - */ - public void setMinimumpayment(BigDecimal pMinimumpayment) { - minimumpayment = pMinimumpayment; - } - - /** - * Obtiene el valor de expiredate - * - * @return valor de expiredate - */ - public Date getExpiredate() { - return expiredate; - } - - /** - * Fija el valor de expiredate - * - * @param pExpiredate nuevo Valor de expiredate - */ - public void setExpiredate(Date pExpiredate) { - expiredate = pExpiredate; - } - - /** - * Obtiene el valor de message - * - * @return valor de message - */ - public String getMessage() { - return message; - } - - /** - * Fija el valor de message - * - * @param pMessage nuevo Valor de message - */ - public void setMessage(String pMessage) { - message = pMessage; - } - - /** - * Obtiene el valor de originalmessage - * - * @return valor de originalmessage - */ - public String getOriginalmessage() { - return originalmessage; - } - - /** - * Fija el valor de originalmessage - * - * @param pOriginalmessage nuevo Valor de originalmessage - */ - public void setOriginalmessage(String pOriginalmessage) { - originalmessage = pOriginalmessage; - } - - /** - * Obtiene el valor de reversemessage - * - * @return valor de reversemessage - */ - public String getReversemessage() { - return reversemessage; - } - - /** - * Fija el valor de reversemessage - * - * @param pReversemessage nuevo Valor de reversemessage - */ - public void setReversemessage(String pReversemessage) { - reversemessage = pReversemessage; - } - - /** - * Obtiene el valor de reverse - * - * @return valor de reverse - */ - public String getReverse() { - return reverse; - } - - /** - * Fija el valor de reverse - * - * @param pReverse nuevo Valor de reverse - */ - public void setReverse(String pReverse) { - reverse = pReverse; - } - - /** - * Obtiene el valor de originalamount - * - * @return valor de originalamount - */ - public BigDecimal getOriginalamount() { - return originalamount; - } - - /** - * Fija el valor de originalamount - * - * @param pOriginalamount nuevo Valor de originalamount - */ - public void setOriginalamount(BigDecimal pOriginalamount) { - originalamount = pOriginalamount; - } - - /** - * Obtiene el valor de pendingamount - * - * @return valor de pendingamount - */ - public BigDecimal getPendingamount() { - return pendingamount; - } - - /** - * Fija el valor de pendingamount - * - * @param pPendingamount nuevo Valor de pendingamount - */ - public void setPendingamount(BigDecimal pPendingamount) { - pendingamount = pPendingamount; - } - - /** - * Obtiene el valor de lastpayamount - * - * @return valor de lastpayamount - */ - public BigDecimal getLastpayamount() { - return lastpayamount; - } - - /** - * Fija el valor de lastpayamount - * - * @param pLastpayamount nuevo Valor de lastpayamount - */ - public void setLastpayamount(BigDecimal pLastpayamount) { - lastpayamount = pLastpayamount; - } - - /** - * Obtiene el valor de lastpay - * - * @return valor de lastpay - */ - public Date getLastpay() { - return lastpay; - } - - /** - * Fija el valor de lastpay - * - * @param pLastpay nuevo Valor de lastpay - */ - public void setLastpay(Date pLastpay) { - lastpay = pLastpay; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TreceivableAccountDemanDepo)) - return false; - TreceivableAccountDemanDepo that = (TreceivableAccountDemanDepo) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TreceivableAccountDemanDepo - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TreceivableAccountDemanDepo */ - public Object createInstance() { - TreceivableAccountDemanDepo instance = new TreceivableAccountDemanDepo(); - instance.setPk(new TreceivableAccountDemanDepoKey()); - return instance; - } - - /** - * Clona la entidad TreceivableAccountDemanDepo - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TreceivableAccountDemanDepo p = (TreceivableAccountDemanDepo) this.clone(); - p.setPk((TreceivableAccountDemanDepoKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - //Metodos manuales. - - /**Sentencia que obtiene una lista de TreceivableAccount dado un numero de mensaje. */ - private static final String HQL_MSG = "from TreceivableAccountDemanDepo t " + - " where t.message = :message" ; - - /** - * Entrega una lista de TreceivableAccount dado un numeor de mensaje. - * @param pEntityManager Referencia a la session de base de datos. - * @param pMessage Numero de mensaje a buscar registros de TreceivableAccount - * @return List - */ - @SuppressWarnings("unchecked") - public static List findByMessage(EntityManager pEntityManager,String pMessage) { - List ldata = null; - Query qry = pEntityManager.createQuery(HQL_MSG); - qry.setParameter("message", pMessage); - ldata = qry.getResultList(); - return ldata; - } - - - /**Sentencia que obtiene una lista de TreceivableAccount dado un numero de mensaje orgiginal. */ - private static final String HQL_ORIMSG = "from TreceivableAccountDemanDepo t " + - " where t.originalmessage = :originalmessage "+ - " and t.message != t.originalmessage "; - - /** - * Entrega una lista de TreceivableAccount dado un numeor de mensaje original. - * @param pEntityManager Referencia a la session de base de datos. - * @param pMessage Numero de mensaje a buscar registros de TreceivableAccount - * @return List - */ - @SuppressWarnings("unchecked") - public static List findByOriginalMessage(EntityManager pEntityManager,String pMessage) { - List ldata = null; - Query qry = pEntityManager.createQuery(HQL_ORIMSG); - qry.setParameter("originalmessage", pMessage); - ldata = qry.getResultList(); - return ldata; - } - - - /** Sentencia que devuelve una lista de cuentas por cobrar, pendientes de pago.*/ - private static String HQL_RECOVERY = " from TreceivableAccountDemanDepo ra "+ - " where ra.pk.account = :account "+ - " and ra.pk.dateto = :dateto "+ - " and ra.pk.company = :company "+ - " and ra.pk.partitiondb = :partition "+ - " and ra.expiredate >= :accountingdate"+ - " and ra.pendingamount > 0 "+ - " order by ra.priority,ra.pk.creationdate "; - - /** - * Metodo que entrega una lista de cuenta por pagar pendientes de pago. - * @param pEntityManager Referencia a una session de base de datos. - * @param pAccount Numero de cuenta por cobrar. - * @param pCompany Codido de compania asociada a la cuenta por cobrar. - * @param pAccountingDate Fecha contable. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pAccount,Integer pCompany, - Date pAccountingDate) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(HQL_RECOVERY); - qry.setParameter("account", pAccount); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("company", pCompany); - qry.setParameter("partition", Constant.getPartition(Constant.getDefaultExpiryDate())); - qry.setParameter("accountingdate", pAccountingDate); - ldata = qry.getResultList(); - return ldata; - } - - /** Sentencia que devuelve un registro de la cuenta por pagar vigente, para la cuenta tipo de saldo grupo balance.*/ - private static String HQL_VIGENT = " from TreceivableAccountDemanDepo ra "+ - " where ra.pk.account = :account "+ - " and ra.pk.dateto = :dateto "+ - " and ra.pk.company = :company "+ - " and ra.pk.partitiondb = :partition "+ - " and ra.balancetype >= :balancetype "+ - " and ra.balancegroup >= :balancegroup "; - - /** - * Metodo que entrega una datos de cuenta por pagar dada la cuenta, tipo de saldo grupo de balance. - * @param pEntityManager Referencia a una session de base de datos. - * @param pAccount Numero de cuenta por cobrar. - * @param pCompany Codido de compania asociada a la cuenta por cobrar. - * @param pBalanceType Tipo de saldo. - * @param pBalanceGroup Grupo de balance. - * @return TreceivableAccount - * @throws Exception - */ - public static TreceivableAccountDemanDepo findVigent(EntityManager pEntityManager,String pAccount,Integer pCompany, - String pBalanceType,String pBalanceGroup) throws Exception { - TreceivableAccountDemanDepo obj = null; - Query qry = pEntityManager.createQuery(HQL_VIGENT); - qry.setParameter("account", pAccount); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("company", pCompany); - qry.setParameter("partition", Constant.getPartition(Constant.getDefaultExpiryDate())); - qry.setParameter("balancetype", pBalanceType); - qry.setParameter("balancegroup", pBalanceGroup); - try { - obj = (TreceivableAccountDemanDepo)qry.getSingleResult(); - } catch (NoResultException e) { - return obj; - } - return obj; - } - - - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepoKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepoKey.java.svn-base deleted file mode 100644 index dc37a24..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/receive/acco/.svn/text-base/TreceivableAccountDemanDepoKey.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.receive.acco; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TRECEIVABLEACCOUNTDEMANDEPO*/ -@Embeddable -public class TreceivableAccountDemanDepoKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro de cuenta por cobrar. -*/ -private Timestamp dateto; - -@Column(name="CREATIONDATE", nullable=false,updatable=false) - -/** -* Timestamp de fecha de creacin de cuentas por cobrar. -*/ -private Timestamp creationdate; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Ao mes de la fecha hasta la cual esta vigente un registro de cuenta por cobrar. -*/ -private String partitiondb; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -/**Contructor por defecto*/ -public TreceivableAccountDemanDepoKey(){} -/**Contructor de TreceivableAccountDemanDepoKey -@param pAccount Numero de cuenta -@param pDateto Fecha hasta la cual esta vigente el registro de cuenta por cobrar. -@param pCreationdate Timestamp de fecha de creacin de cuentas por cobrar. -@param pPartitiondb Ao mes de la fecha hasta la cual esta vigente un registro de cuenta por cobrar. -@param pCompany Codigo de compania a la que pertence la cuenta -*/ -public TreceivableAccountDemanDepoKey(String pAccount,Timestamp pDateto,Timestamp pCreationdate,String pPartitiondb,Integer pCompany){ - account=pAccount; - dateto=pDateto; - creationdate=pCreationdate; - partitiondb=pPartitiondb; - company=pCompany; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de creationdate -@return valor de creationdate*/ -public Timestamp getCreationdate(){ - return creationdate; -} -/**Fija el valor de creationdate -@param pCreationdate nuevo Valor de creationdate*/ -public void setCreationdate(Timestamp pCreationdate){ - creationdate=pCreationdate; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacin de la comparacin de TreceivableAccountDemanDepoKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TreceivableAccountDemanDepoKey))return false; - TreceivableAccountDemanDepoKey that = (TreceivableAccountDemanDepoKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getCreationdate() == null || that.getCreationdate() == null){ - return false; - } - if (! this.getCreationdate().equals(that.getCreationdate())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TreceivableAccountDemanDepoKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getCreationdate() == null ? 0 : this.getCreationdate().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/entries deleted file mode 100644 index dbf3a74..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneSubprodReports.java -file - - - - -2022-07-28T03:40:30.023748Z -bfb5d1242efb165fdd6139ad56fc88f8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4275 - -TgeneReportDetail.java -file - - - - -2022-07-28T03:40:30.024748Z -632f1aac5f303e74d56d6f826d0e7b85 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5073 - -TgeneReportKey.java -file - - - - -2022-07-28T03:40:30.024748Z -856ed5bd3723ad15f3152de8e62f38b9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3405 - -TgeneSubprodReportsKey.java -file - - - - -2022-07-28T03:40:30.024748Z -10d2ef3ebe423a326ca32bb41dc5b2cf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5144 - -TgeneReportDetailKey.java -file - - - - -2022-07-28T03:40:30.024748Z -a94fd2022fc9711ac5a4648e8a451d7f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4419 - -TgeneReport.java -file - - - - -2022-07-28T03:40:30.025748Z -6872bd155d971def02e2f183a6cc935d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5227 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReport.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReport.java.svn-base deleted file mode 100644 index 0231e42..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReport.java.svn-base +++ /dev/null @@ -1,197 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEREPORT*/ -@Entity(name="TgeneReport") -@Table(name="TGENEREPORT") -public class TgeneReport extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneReport -*/ -@EmbeddedId -private TgeneReportKey pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcion del Reporte -*/ -private String description; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="REPORTNAME", nullable=true) - -/** -* Nombre del reporte a ejecutar -*/ -private String reportname; - -@Column(name="PATH", nullable=true) - -/** -* Ubicacion del reporte. -*/ -private String path; - -/**Contructor por defecto*/ -public TgeneReport(){ -} -/**Contructor de TgeneReport -@param pPk Clave Primaria del entity -@param pDescription Descripcion del Reporte -*/ -public TgeneReport(TgeneReportKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneReport -*/ -public static TgeneReport find(EntityManager pEntityManager,TgeneReportKey pKey) throws Exception{ - TgeneReport obj = pEntityManager.find(TgeneReport.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneReport -@return El objeto que referencia a la Clave primaria de TgeneReport -*/ -public TgeneReportKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneReport -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneReport -*/ -public void setPk(TgeneReportKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de reportname -@return valor de reportname*/ -public String getReportname(){ - return reportname; -} -/**Fija el valor de reportname -@param pReportname nuevo Valor de reportname*/ -public void setReportname(String pReportname){ - reportname=pReportname; -} - -/**Obtiene el valor de path -@return valor de path*/ -public String getPath(){ - return path; -} -/**Fija el valor de path -@param pPath nuevo Valor de path*/ -public void setPath(String pPath){ - path=pPath; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneReport))return false; - TgeneReport that = (TgeneReport) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneReport -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneReport -*/ -public Object createInstance(){ - TgeneReport instance=new TgeneReport(); - instance.setPk(new TgeneReportKey()); - return instance; -} -/**Clona la entidad TgeneReport -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneReport p=(TgeneReport)this.clone(); - p.setPk((TgeneReportKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetail.java.svn-base deleted file mode 100644 index edccbb0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetail.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEREPORTDETAIL*/ -@Entity(name="TgeneReportDetail") -@Table(name="TGENEREPORTDETAIL") -public class TgeneReportDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneReportDetail -*/ -@EmbeddedId -private TgeneReportDetailKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="SOURCEPARAMETER", nullable=true) - -/** -* Origen de dato del parametro. -*/ -private String sourceparameter; - -@Column(name="MANDATORY", nullable=true) - -/** -* Y Indica que el parametro es obligatorio. -*/ -private String mandatory; - -/**Contructor por defecto*/ -public TgeneReportDetail(){ -} -/**Contructor de TgeneReportDetail -@param pPk Clave Primaria del entity -*/ -public TgeneReportDetail(TgeneReportDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneReportDetail -*/ -public static TgeneReportDetail find(EntityManager pEntityManager,TgeneReportDetailKey pKey) throws Exception{ - TgeneReportDetail obj = pEntityManager.find(TgeneReportDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneReportDetail -@return El objeto que referencia a la Clave primaria de TgeneReportDetail -*/ -public TgeneReportDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneReportDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneReportDetail -*/ -public void setPk(TgeneReportDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de sourceparameter -@return valor de sourceparameter*/ -public String getSourceparameter(){ - return sourceparameter; -} -/**Fija el valor de sourceparameter -@param pSourceparameter nuevo Valor de sourceparameter*/ -public void setSourceparameter(String pSourceparameter){ - sourceparameter=pSourceparameter; -} - -/**Obtiene el valor de mandatory -@return valor de mandatory*/ -public String getMandatory(){ - return mandatory; -} -/**Fija el valor de mandatory -@param pMandatory nuevo Valor de mandatory*/ -public void setMandatory(String pMandatory){ - mandatory=pMandatory; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneReportDetail))return false; - TgeneReportDetail that = (TgeneReportDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneReportDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneReportDetail -*/ -public Object createInstance(){ - TgeneReportDetail instance=new TgeneReportDetail(); - instance.setPk(new TgeneReportDetailKey()); - return instance; -} -/**Clona la entidad TgeneReportDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneReportDetail p=(TgeneReportDetail)this.clone(); - p.setPk((TgeneReportDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetailKey.java.svn-base deleted file mode 100644 index 75f4892..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportDetailKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEREPORTDETAIL*/ -@Embeddable -public class TgeneReportDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="REPORTCODE", nullable=false,updatable=false) - -/** -* Nombre del Reporte -*/ -private String reportcode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="REPORTPARAMETER", nullable=false,updatable=false) - -/** -* Nombre de parametro con el cual se invoca al reporte. -*/ -private String reportparameter; - -/**Contructor por defecto*/ -public TgeneReportDetailKey(){} -/**Contructor de TgeneReportDetailKey -@param pReportcode Nombre del Reporte -@param pModulecode Codigo de modulo -@param pReportparameter Nombre de parametro con el cual se invoca al reporte. -*/ -public TgeneReportDetailKey(String pReportcode,String pModulecode,String pReportparameter){ - reportcode=pReportcode; - modulecode=pModulecode; - reportparameter=pReportparameter; -} -/**Obtiene el valor de reportcode -@return valor de reportcode*/ -public String getReportcode(){ - return reportcode; -} -/**Fija el valor de reportcode -@param pReportcode nuevo Valor de reportcode*/ -public void setReportcode(String pReportcode){ - reportcode=pReportcode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de reportparameter -@return valor de reportparameter*/ -public String getReportparameter(){ - return reportparameter; -} -/**Fija el valor de reportparameter -@param pReportparameter nuevo Valor de reportparameter*/ -public void setReportparameter(String pReportparameter){ - reportparameter=pReportparameter; -} - -/**Implementacin de la comparacin de TgeneReportDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneReportDetailKey))return false; - TgeneReportDetailKey that = (TgeneReportDetailKey) o; - if (this.getReportcode() == null || that.getReportcode() == null){ - return false; - } - if (! this.getReportcode().equals(that.getReportcode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getReportparameter() == null || that.getReportparameter() == null){ - return false; - } - if (! this.getReportparameter().equals(that.getReportparameter())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneReportDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getReportcode() == null ? 0 : this.getReportcode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getReportparameter() == null ? 0 : this.getReportparameter().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportKey.java.svn-base deleted file mode 100644 index d0de980..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneReportKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEREPORT*/ -@Embeddable -public class TgeneReportKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="REPORTCODE", nullable=false,updatable=false) - -/** -* Nombre del Reporte -*/ -private String reportcode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneReportKey(){} -/**Contructor de TgeneReportKey -@param pReportcode Nombre del Reporte -@param pModulecode Codigo de modulo -*/ -public TgeneReportKey(String pReportcode,String pModulecode){ - reportcode=pReportcode; - modulecode=pModulecode; -} -/**Obtiene el valor de reportcode -@return valor de reportcode*/ -public String getReportcode(){ - return reportcode; -} -/**Fija el valor de reportcode -@param pReportcode nuevo Valor de reportcode*/ -public void setReportcode(String pReportcode){ - reportcode=pReportcode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneReportKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneReportKey))return false; - TgeneReportKey that = (TgeneReportKey) o; - if (this.getReportcode() == null || that.getReportcode() == null){ - return false; - } - if (! this.getReportcode().equals(that.getReportcode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneReportKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getReportcode() == null ? 0 : this.getReportcode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReports.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReports.java.svn-base deleted file mode 100644 index 062f17e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReports.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESUBPRODREPORTS*/ -@Entity(name="TgeneSubprodReports") -@Table(name="TGENESUBPRODREPORTS") -public class TgeneSubprodReports extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSubprodReports -*/ -@EmbeddedId -private TgeneSubprodReportsKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TgeneSubprodReports(){ -} -/**Contructor de TgeneSubprodReports -@param pPk Clave Primaria del entity -*/ -public TgeneSubprodReports(TgeneSubprodReportsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSubprodReports -*/ -public static TgeneSubprodReports find(EntityManager pEntityManager,TgeneSubprodReportsKey pKey) throws Exception{ - TgeneSubprodReports obj = pEntityManager.find(TgeneSubprodReports.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSubprodReports -@return El objeto que referencia a la Clave primaria de TgeneSubprodReports -*/ -public TgeneSubprodReportsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSubprodReports -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSubprodReports -*/ -public void setPk(TgeneSubprodReportsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSubprodReports))return false; - TgeneSubprodReports that = (TgeneSubprodReports) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSubprodReports -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSubprodReports -*/ -public Object createInstance(){ - TgeneSubprodReports instance=new TgeneSubprodReports(); - instance.setPk(new TgeneSubprodReportsKey()); - return instance; -} -/**Clona la entidad TgeneSubprodReports -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSubprodReports p=(TgeneSubprodReports)this.clone(); - p.setPk((TgeneSubprodReportsKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReportsKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReportsKey.java.svn-base deleted file mode 100644 index bc14054..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/report/.svn/text-base/TgeneSubprodReportsKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.report; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESUBPRODREPORTS*/ -@Embeddable -public class TgeneSubprodReportsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="REPORTCODE", nullable=false,updatable=false) - -/** -* Nombre del Reporte -*/ -private String reportcode; - -/**Contructor por defecto*/ -public TgeneSubprodReportsKey(){} -/**Contructor de TgeneSubprodReportsKey -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pReportcode Nombre del Reporte -*/ -public TgeneSubprodReportsKey(String pModulecode,String pProductcode,String pSubproductcode,String pReportcode){ - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - reportcode=pReportcode; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de reportcode -@return valor de reportcode*/ -public String getReportcode(){ - return reportcode; -} -/**Fija el valor de reportcode -@param pReportcode nuevo Valor de reportcode*/ -public void setReportcode(String pReportcode){ - reportcode=pReportcode; -} - -/**Implementacin de la comparacin de TgeneSubprodReportsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneSubprodReportsKey))return false; - TgeneSubprodReportsKey that = (TgeneSubprodReportsKey) o; - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getReportcode() == null || that.getReportcode() == null){ - return false; - } - if (! this.getReportcode().equals(that.getReportcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneSubprodReportsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getReportcode() == null ? 0 : this.getReportcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/entries deleted file mode 100644 index 5f952ea..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneResults.java -file - - - - -2022-07-28T03:40:30.418750Z -1dc2aeca6bfd19c5a1cb3fee08616fc9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7203 - -TgeneResultsKey.java -file - - - - -2022-07-28T03:40:30.418750Z -689fe977e4dca7be92b35ca1106ae7bb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3529 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResults.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResults.java.svn-base deleted file mode 100644 index 4745419..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResults.java.svn-base +++ /dev/null @@ -1,242 +0,0 @@ -package com.fp.persistence.pgeneral.result; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; -import com.fp.general.exception.GeneralException; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENERESULTS */ -@Entity(name = "TgeneResults") -@Table(name = "TGENERESULTS") -public class TgeneResults extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneResults - */ - @EmbeddedId - private TgeneResultsKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Codigo que valida caducidad de registro - */ - private Integer recordversion; - - @Column(name = "DESCRIPTION", nullable = false) - /** - * Mensaje a presentar - */ - private String description; - - /** Contructor por defecto */ - public TgeneResults() { - } - - /** - * Contructor de TgeneResults - * - * @param pPk Clave Primaria del entity - * @param pDescription Mensaje a presentar - */ - public TgeneResults(TgeneResultsKey pPk, String pDescription) { - this(); - this.pk = pPk; - this.description = pDescription; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneResults - */ - public static TgeneResults find(EntityManager pEntityManager, TgeneResultsKey pKey) throws Exception { - TgeneResults obj = pEntityManager.find(TgeneResults.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneResults - * - * @return El objeto que referencia a la Clave primaria de TgeneResults - */ - public TgeneResultsKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneResults - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneResults - */ - public void setPk(TgeneResultsKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return this.recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - this.recordversion = pRecordversion; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return this.description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - this.description = pDescription; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneResults)) { - return false; - } - TgeneResults that = (TgeneResults) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneResults - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneResults */ - @Override - public Object createInstance() { - TgeneResults instance = new TgeneResults(); - instance.setPk(new TgeneResultsKey()); - return instance; - } - - /** - * Clona la entidad TgeneResults - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneResults p = (TgeneResults) this.clone(); - p.setPk((TgeneResultsKey) this.pk.cloneMe()); - return p; - } - - // Metodos manuales. - - /** - * Sentencia que entrega el texto asociado a un codigo de error e idioma. - */ - private static final String JPQL = "from TgeneResults t where t.pk.resultcode = :resultcode and t.pk.languagecode = :languagecode"; - - /** - * Entrega la descripcion de un codigo de error. - * - * @param entityManager Referencia a una session de base de datos. - * @param resultcode Codigo de resultado a buscar la descripcion. - * @param languagecode Codigo de lenguaje a buscar la descripcion. - * @return TgeneResults - * @throws Exception - */ - public static TgeneResults find(EntityManager entityManager, String resultcode, String languagecode) throws Exception { - Query qry = entityManager.createQuery(JPQL); - qry.setParameter("resultcode", resultcode); - qry.setParameter("languagecode", languagecode); - try { - return (TgeneResults) qry.getSingleResult(); - } catch (NoResultException e) { - throw new GeneralException("GENE-0044", "DESCRIPCIN DEL MENSAJE APLICATIVO: {0} IDIOMA: {1} NO DEFINIDO EN TGENERESULTS", resultcode, - languagecode); - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResultsKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResultsKey.java.svn-base deleted file mode 100644 index 00c4362..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/result/.svn/text-base/TgeneResultsKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.result; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENERESULTS*/ -@Embeddable -public class TgeneResultsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="RESULTCODE", nullable=false,updatable=false) - -/** -* Codigo identificador asociado al mensaje o excepcion -*/ -private String resultcode; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -/**Contructor por defecto*/ -public TgeneResultsKey(){} -/**Contructor de TgeneResultsKey -@param pResultcode Codigo identificador asociado al mensaje o excepcion -@param pLanguagecode Codigo de idioma -*/ -public TgeneResultsKey(String pResultcode,String pLanguagecode){ - resultcode=pResultcode; - languagecode=pLanguagecode; -} -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Implementacion de la comparacion de TgeneResultsKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneResultsKey))return false; - TgeneResultsKey that = (TgeneResultsKey) o; - if (this.getResultcode() == null || that.getResultcode() == null){ - return false; - } - if (! this.getResultcode().equals(that.getResultcode())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneResultsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getResultcode() == null ? 0 : this.getResultcode().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/entries deleted file mode 100644 index 5ad8c4f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/entries +++ /dev/null @@ -1,844 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe -svn://172.17.26.185/COMACO - - - -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TsafeUser.java -file - - - - -2022-07-28T03:40:30.484750Z -cfec0dfdd180ac46a0c8f4be70f856a2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4652 - -TsafeAuditInsDelKey.java -file - - - - -2022-07-28T03:40:30.484750Z -d0352792f139c7015116b271a4c57722 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5220 - -TsafeJavaScriptKey.java -file - - - - -2022-07-28T03:40:30.485750Z -b377261fb65dd3a35e3ab0ebf59d4896 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4262 - -TsafeAuditKey.java -file - - - - -2022-07-28T03:40:30.484750Z -f8dbebefa109860283cd50a1f91147e7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5959 - -TsafeProfileHoraryAmountKey.java -file - - - - -2022-07-28T03:40:30.485750Z -fc729348fbf5d2daecad7a73ff458b39 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6109 - -TsafeUserSession.java -file - - - - -2022-07-28T03:40:30.485750Z -f05bbb216c796afb04aa43caf468f696 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5914 - -TsafeTerminalKey.java -file - - - - -2022-07-28T03:40:30.486750Z -9b2d9f04b681972ff6cbe4abfb589037 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3556 - -TsafeUserSessionLog.java -file - - - - -2022-07-28T03:40:30.485750Z -04803b4c88fd37b07bb7c2cc34be936b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8317 - -TsafeProfileHorary.java -file - - - - -2022-07-28T03:40:30.486750Z -bcfc5e39a8c66f3ce356178bc6102a58 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6521 - -TsafeUserSessionKey.java -file - - - - -2022-07-28T03:40:30.486750Z -b387ce43afb174a74ce073a4058e34dd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3494 - -TsafeUserSessionLogKey.java -file - - - - -2022-07-28T03:40:30.486750Z -bdddbcd63f6b2646e6a9e72cb11f59b7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4379 - -TsafeProfileHoraryKey.java -file - - - - -2022-07-28T03:40:30.487750Z -9416ecb3100ea1fd8e1fd9d231a75034 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6310 - -TsafeUserProfile.java -file - - - - -2022-07-28T03:40:30.487750Z -41ecc5d1ee603d7194e53e9c54d910ab -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7618 - -TsafeProfile.java -file - - - - -2022-07-28T03:40:30.487750Z -05bcb6899620cdd01d3d7ecb6533c72c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4444 - -TsafeUserDetail.java -file - - - - -2022-07-28T03:40:30.487750Z -31ecf0e51b131b0fcaa1193abc5e90d2 -2016-01-21T17:28:58.351554Z -4400 -cvasquez - - - - - - - - - - - - - - - - - - - - - -17396 - -TsafePassword.java -file - - - - -2022-07-28T03:40:30.488750Z -5faced4dba2b5f5e18b7339301a11ddc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7844 - -TsafeAuditInsDel.java -file - - - - -2022-07-28T03:40:30.488750Z -cbd2d21694556e11be952c1b7b2b95f8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11101 - -TsafeJavaScript.java -file - - - - -2022-07-28T03:40:30.488750Z -b02311b88d7bf74c2165ef5b2ffc07b8 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5310 - -TsafeAudit.java -file - - - - -2022-07-28T03:40:30.489750Z -62f7125c4ca488a1f287e69714257526 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10483 - -TsafeUserProfileKey.java -file - - - - -2022-07-28T03:40:30.489750Z -b79b8264e4b69b96cbd11921dba34721 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4352 - -TsafeProfileHoraryAmount.java -file - - - - -2022-07-28T03:40:30.489750Z -418acf8a1bdb7b1f75fb7d84684870ea -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4849 - -TsafeUserDetailKey.java -file - - - - -2022-07-28T03:40:30.490750Z -4f8fca6999f12a771e3dcb2b8bc79192 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4169 - -TsafeTerminal.java -file - - - - -2022-07-28T03:40:30.490750Z -c47a0933f0202ddd80a10177c06936a7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8742 - -TsafePasswordKey.java -file - - - - -2022-07-28T03:40:30.490750Z -16e448d757d80bce5efe34a1b96fe200 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3473 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAudit.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAudit.java.svn-base deleted file mode 100644 index 5c281f5..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAudit.java.svn-base +++ /dev/null @@ -1,408 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; - -import java.sql.Timestamp; - -import javax.persistence.Column; -import javax.persistence.EntityManager; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEAUDIT*/ -@Entity(name="TsafeAudit") -@Table(name="TSAFEAUDIT") -public class TsafeAudit extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeAudit -*/ -@EmbeddedId -private TsafeAuditKey pk; -@Column(name="COMPANYCODE", nullable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal -*/ -private String terminalcode; - -@Column(name="USERCODE", nullable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="OLDVALUE", nullable=true) - -/** -* Valor anterior del campo -*/ -private String oldvalue; - -@Column(name="NEWVALUE", nullable=true) - -/** -* Nuevo valor del campo -*/ -private String newvalue; - -@Column(name="ACCOUNT", nullable=true) - -/** -* Numero de cuenta que se afecta -*/ -private String account; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona asociada a la tabla que se modifica -*/ -private Integer personcode; - -@Column(name="SOLICITUDENUMBER", nullable=true) - -/** -* Numero de solicitud asociada a la tabla que se modifica. -*/ -private String solicitudenumber; - -@Column(name="BROWSER", nullable=true) - -/** -* Ingresa la informacion del browser. -*/ -private String browser; - -@Column(name="OPERATIVSYSTEM", nullable=true) - -/** -* Ingresa la informacion del sistema operativo. -*/ -private String operativesystem; - -/**Contructor por defecto*/ -public TsafeAudit(){ -} -/**Contructor de TsafeAudit -@param pPk Clave Primaria del entity -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pUsercode Codigo de usuario -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TsafeAudit(TsafeAuditKey pPk,Integer pCompanycode,String pUsercode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - companycode=pCompanycode; - usercode=pUsercode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeAudit -*/ -public static TsafeAudit find(EntityManager pEntityManager,TsafeAuditKey pKey) throws Exception{ - TsafeAudit obj = pEntityManager.find(TsafeAudit.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeAudit -@return El objeto que referencia a la Clave primaria de TsafeAudit -*/ -public TsafeAuditKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeAudit -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeAudit -*/ -public void setPk(TsafeAuditKey pPk){ - pk=pPk; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de oldvalue -@return valor de oldvalue*/ -public String getOldvalue(){ - return oldvalue; -} -/**Fija el valor de oldvalue -@param pOldvalue nuevo Valor de oldvalue*/ -public void setOldvalue(String pOldvalue){ - oldvalue=pOldvalue; -} - -/**Obtiene el valor de newvalue -@return valor de newvalue*/ -public String getNewvalue(){ - return newvalue; -} -/**Fija el valor de newvalue -@param pNewvalue nuevo Valor de newvalue*/ -public void setNewvalue(String pNewvalue){ - newvalue=pNewvalue; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de solicitudenumber -@return valor de solicitudenumber*/ -public String getSolicitudenumber(){ - return solicitudenumber; -} -/**Fija el valor de solicitudenumber -@param pSolicitudenumber nuevo Valor de solicitudenumber*/ -public void setSolicitudenumber(String pSolicitudenumber){ - solicitudenumber=pSolicitudenumber; -} -/**Obtiene el valor de browser -@return valor de browser*/ -public String getBrowser() { - return browser; -} -/**Fija el valor de browser -@param pBrowser nuevo Valor de browser*/ -public void setBrowser(String pBrowser) { - this.browser = pBrowser; -} -/**Obtiene el valor de operativesystem -@return valor de operativesystem*/ -public String getOperativesystem() { - return operativesystem; -} -/**Fija el valor de operativesystem -@param pOperativesystem nuevo Valor de operativesystem*/ -public void setOperativesystem(String pOperativesystem) { - this.operativesystem = pOperativesystem; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeAudit))return false; - TsafeAudit that = (TsafeAudit) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeAudit -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeAudit -*/ -public Object createInstance(){ - TsafeAudit instance=new TsafeAudit(); - instance.setPk(new TsafeAuditKey()); - return instance; -} -/**Clona la entidad TsafeAudit -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeAudit p=(TsafeAudit)this.clone(); - p.setPk((TsafeAuditKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDel.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDel.java.svn-base deleted file mode 100644 index 8e19ba1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDel.java.svn-base +++ /dev/null @@ -1,418 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEAUDITINSDEL*/ -@Entity(name="TsafeAuditInsDel") -@Table(name="TSAFEAUDITINSDEL") -public class TsafeAuditInsDel extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeAuditInsDel -*/ -@EmbeddedId -private TsafeAuditInsDelKey pk; -@Column(name="COMPANYCODE", nullable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal -*/ -private String terminalcode; - -@Column(name="USERCODE", nullable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ISINSERT", nullable=true) - -/** -* Y, Indica que los datos del registro son de insert -*/ -private String isinsert; - -@Column(name="ISDELETE", nullable=true) - -/** -* Y, Indica que los datos son de un registro eliminado -*/ -private String isdelete; - -@Column(name="RECVALUE", nullable=true) - -/** -* Datos del registro que se elimina -*/ -private String recvalue; - -@Column(name="ACCOUNT", nullable=true) - -/** -* Numero de cuenta que se afecta -*/ -private String account; - -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona asociada a la tabla que se modifica -*/ -private Integer personcode; - -@Column(name="SOLICITUDENUMBER", nullable=true) - -/** -* Numero de solicitud asociada a la tabla que se modifica. -*/ -private String solicitudenumber; - -@Column(name="BROWSER", nullable=true) - -/** -* Ingresa la informacion del browser. -*/ -private String browser; - -@Column(name="OPERATIVSYSTEM", nullable=true) - -/** -* Ingresa la informacion del sistema operativo. -*/ -private String operativesystem; - -/**Contructor por defecto*/ -public TsafeAuditInsDel(){ -} -/**Contructor de TsafeAuditInsDel -@param pPk Clave Primaria del entity -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pUsercode Codigo de usuario -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TsafeAuditInsDel(TsafeAuditInsDelKey pPk,Integer pCompanycode,String pUsercode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - companycode=pCompanycode; - usercode=pUsercode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeAuditInsDel -*/ -public static TsafeAuditInsDel find(EntityManager pEntityManager,TsafeAuditInsDelKey pKey) throws Exception{ - TsafeAuditInsDel obj = pEntityManager.find(TsafeAuditInsDel.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeAuditInsDel -@return El objeto que referencia a la Clave primaria de TsafeAuditInsDel -*/ -public TsafeAuditInsDelKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeAuditInsDel -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeAuditInsDel -*/ -public void setPk(TsafeAuditInsDelKey pPk){ - pk=pPk; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de isinsert -@return valor de isinsert*/ -public String getIsinsert(){ - return isinsert; -} -/**Fija el valor de isinsert -@param pIsinsert nuevo Valor de isinsert*/ -public void setIsinsert(String pIsinsert){ - isinsert=pIsinsert; -} - -/**Obtiene el valor de isdelete -@return valor de isdelete*/ -public String getIsdelete(){ - return isdelete; -} -/**Fija el valor de isdelete -@param pIsdelete nuevo Valor de isdelete*/ -public void setIsdelete(String pIsdelete){ - isdelete=pIsdelete; -} - -/**Obtiene el valor de recvalue -@return valor de recvalue*/ -public String getRecvalue(){ - return recvalue; -} -/**Fija el valor de recvalue -@param pRecvalue nuevo Valor de recvalue*/ -public void setRecvalue(String pRecvalue){ - recvalue=pRecvalue; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de solicitudenumber -@return valor de solicitudenumber*/ -public String getSolicitudenumber(){ - return solicitudenumber; -} -/**Fija el valor de solicitudenumber -@param pSolicitudenumber nuevo Valor de solicitudenumber*/ -public void setSolicitudenumber(String pSolicitudenumber){ - solicitudenumber=pSolicitudenumber; -} -/**Obtiene el valor de browser -@return valor de browser*/ -public String getBrowser() { - return browser; -} -/**Fija el valor de browser -@param pBrowser nuevo Valor de browser*/ -public void setBrowser(String pBrowser) { - this.browser = pBrowser; -} -/**Obtiene el valor de operativesystem -@return valor de operativesystem*/ -public String getOperativesystem() { - return operativesystem; -} -/**Fija el valor de operativesystem -@param pOperativesystem nuevo Valor de operativesystem*/ -public void setOperativesystem(String pOperativesystem) { - this.operativesystem = pOperativesystem; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeAuditInsDel))return false; - TsafeAuditInsDel that = (TsafeAuditInsDel) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeAuditInsDel -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeAuditInsDel -*/ -public Object createInstance(){ - TsafeAuditInsDel instance=new TsafeAuditInsDel(); - instance.setPk(new TsafeAuditInsDelKey()); - return instance; -} -/**Clona la entidad TsafeAuditInsDel -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeAuditInsDel p=(TsafeAuditInsDel)this.clone(); - p.setPk((TsafeAuditInsDelKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDelKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDelKey.java.svn-base deleted file mode 100644 index 079cd6a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditInsDelKey.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TSAFEAUDITINSDEL*/ -@Embeddable -public class TsafeAuditInsDelKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CHANGEDATE", nullable=false,updatable=false) - -/** -* Fecha del log, es la fecha en la que se realizo el cambio de una tabla -*/ -private Date changedate; - -@Column(name="TABLENAME", nullable=false,updatable=false) - -/** -* Nombre de la tabla -*/ -private String tablename; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Anio mes de la fecha del cambio, con este dato se particiona la tabla. -*/ -private String partitiondb; - -@Column(name="REALDATE", nullable=false,updatable=false) - -/** -* Fecha real del cambio -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TsafeAuditInsDelKey(){} -/**Contructor de TsafeAuditInsDelKey -@param pChangedate Fecha del log, es la fecha en la que se realizo el cambio de una tabla -@param pTablename Nombre de la tabla -@param pPartitiondb Anio mes de la fecha del cambio, con este dato se particiona la tabla. -@param pRealdate Fecha real del cambio -*/ -public TsafeAuditInsDelKey(Date pChangedate,String pTablename,String pPartitiondb,Timestamp pRealdate){ - changedate=pChangedate; - tablename=pTablename; - partitiondb=pPartitiondb; - realdate=pRealdate; -} -/**Obtiene el valor de changedate -@return valor de changedate*/ -public Date getChangedate(){ - return changedate; -} -/**Fija el valor de changedate -@param pChangedate nuevo Valor de changedate*/ -public void setChangedate(Date pChangedate){ - changedate=pChangedate; -} - -/**Obtiene el valor de tablename -@return valor de tablename*/ -public String getTablename(){ - return tablename; -} -/**Fija el valor de tablename -@param pTablename nuevo Valor de tablename*/ -public void setTablename(String pTablename){ - tablename=pTablename; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TsafeAuditInsDelKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeAuditInsDelKey))return false; - TsafeAuditInsDelKey that = (TsafeAuditInsDelKey) o; - if (this.getChangedate() == null || that.getChangedate() == null){ - return false; - } - if (! this.getChangedate().equals(that.getChangedate())){ - return false; - } - if (this.getTablename() == null || that.getTablename() == null){ - return false; - } - if (! this.getTablename().equals(that.getTablename())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeAuditInsDelKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getChangedate() == null ? 0 : this.getChangedate().hashCode()); - result = result * 37 + (this.getTablename() == null ? 0 : this.getTablename().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditKey.java.svn-base deleted file mode 100644 index 6970256..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeAuditKey.java.svn-base +++ /dev/null @@ -1,207 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TSAFEAUDIT*/ -@Embeddable -public class TsafeAuditKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CHANGEDATE", nullable=false,updatable=false) - -/** -* Fecha del log, es la fecha en la que se realizo el cambio de una tabla -*/ -private Date changedate; - -@Column(name="TABLENAME", nullable=false,updatable=false) - -/** -* Nombre de la tabla -*/ -private String tablename; - -@Column(name="COLUMNNAME", nullable=false,updatable=false) - -/** -* Nombre del campo que se modifico -*/ -private String columnname; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Anio mes de la fecha del cambio, con este dato se particiona la tabla. -*/ -private String partitiondb; - -@Column(name="REALDATE", nullable=false,updatable=false) - -/** -* Fecha real del cambio -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TsafeAuditKey(){} -/**Contructor de TsafeAuditKey -@param pChangedate Fecha del log, es la fecha en la que se realizo el cambio de una tabla -@param pTablename Nombre de la tabla -@param pColumnname Nombre del campo que se modifico -@param pPartitiondb Anio mes de la fecha del cambio, con este dato se particiona la tabla. -@param pRealdate Fecha real del cambio -*/ -public TsafeAuditKey(Date pChangedate,String pTablename,String pColumnname,String pPartitiondb,Timestamp pRealdate){ - changedate=pChangedate; - tablename=pTablename; - columnname=pColumnname; - partitiondb=pPartitiondb; - realdate=pRealdate; -} -/**Obtiene el valor de changedate -@return valor de changedate*/ -public Date getChangedate(){ - return changedate; -} -/**Fija el valor de changedate -@param pChangedate nuevo Valor de changedate*/ -public void setChangedate(Date pChangedate){ - changedate=pChangedate; -} - -/**Obtiene el valor de tablename -@return valor de tablename*/ -public String getTablename(){ - return tablename; -} -/**Fija el valor de tablename -@param pTablename nuevo Valor de tablename*/ -public void setTablename(String pTablename){ - tablename=pTablename; -} - -/**Obtiene el valor de columnname -@return valor de columnname*/ -public String getColumnname(){ - return columnname; -} -/**Fija el valor de columnname -@param pColumnname nuevo Valor de columnname*/ -public void setColumnname(String pColumnname){ - columnname=pColumnname; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TsafeAuditKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeAuditKey))return false; - TsafeAuditKey that = (TsafeAuditKey) o; - if (this.getChangedate() == null || that.getChangedate() == null){ - return false; - } - if (! this.getChangedate().equals(that.getChangedate())){ - return false; - } - if (this.getTablename() == null || that.getTablename() == null){ - return false; - } - if (! this.getTablename().equals(that.getTablename())){ - return false; - } - if (this.getColumnname() == null || that.getColumnname() == null){ - return false; - } - if (! this.getColumnname().equals(that.getColumnname())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeAuditKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getChangedate() == null ? 0 : this.getChangedate().hashCode()); - result = result * 37 + (this.getTablename() == null ? 0 : this.getTablename().hashCode()); - result = result * 37 + (this.getColumnname() == null ? 0 : this.getColumnname().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScript.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScript.java.svn-base deleted file mode 100644 index fefa37f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScript.java.svn-base +++ /dev/null @@ -1,163 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import java.util.List; -import javax.persistence.Query; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEJAVASCRIPT*/ -@Entity(name = "TsafeJavaScript") -@Table(name = "TSAFEJAVASCRIPT") -public class TsafeJavaScript extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TsafeJavaScript - */ - @EmbeddedId - private TsafeJavaScriptKey pk; - - /**Contructor por defecto*/ - public TsafeJavaScript() { - } - - /**Contructor de TsafeJavaScript - @param pPk Clave Primaria del entity - */ - public TsafeJavaScript(TsafeJavaScriptKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TsafeJavaScript - */ - public static TsafeJavaScript find(EntityManager pEntityManager, TsafeJavaScriptKey pKey) throws Exception { - TsafeJavaScript obj = pEntityManager.find(TsafeJavaScript.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TsafeJavaScript - @return El objeto que referencia a la Clave primaria de TsafeJavaScript - */ - public TsafeJavaScriptKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TsafeJavaScript - @param pPk El objeto que referencia a la nueva Clave primaria de TsafeJavaScript - */ - public void setPk(TsafeJavaScriptKey pPk) { - pk = pPk; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TsafeJavaScript)) { - return false; - } - TsafeJavaScript that = (TsafeJavaScript) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacin del metodo hashCode de la la entidad TsafeJavaScript - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacin de la creacin de un bean en blanco TsafeJavaScript - */ - public Object createInstance() { - TsafeJavaScript instance = new TsafeJavaScript(); - instance.setPk(new TsafeJavaScriptKey()); - return instance; - } - - /**Clona la entidad TsafeJavaScript - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TsafeJavaScript p = (TsafeJavaScript) this.clone(); - p.setPk((TsafeJavaScriptKey) this.pk.cloneMe()); - return p; - } - //METODOS MANAUALES - private static final String HQL = - "select tb.pk.filename from TsafeJavaScript tb " - + " where tb.pk.companycode = :companycode" - + " and tb.pk.channelcode = :channelcode"; - - /** - * Metodo que devuelve los javascript a ser utilizados en la aplicacion - * @param pEntityManager - * @param companycode - * @param channelcode - * @return - */ - public static List find(EntityManager pEntityManager, Integer companycode, String channelcode) { - List lTsafeJavaScript = null; - Query qry = pEntityManager.createQuery(HQL); - qry.setParameter("companycode", companycode); - qry.setParameter("channelcode", channelcode); - lTsafeJavaScript = qry.getResultList(); - return lTsafeJavaScript; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScriptKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScriptKey.java.svn-base deleted file mode 100644 index 21c5e82..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeJavaScriptKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEJAVASCRIPT*/ -@Embeddable -public class TsafeJavaScriptKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CHANNELCODE", nullable=false,updatable=false) - -/** -* Codigo de canal. -*/ -private String channelcode; - -@Column(name="FILENAME", nullable=false,updatable=false) - -/** -* Nombre del java script a enviar al canal. -*/ -private String filename; - -/**Contructor por defecto*/ -public TsafeJavaScriptKey(){} -/**Contructor de TsafeJavaScriptKey -@param pCompanycode Codigo de compania -@param pChannelcode Codigo de canal. -@param pFilename Nombre del java script a enviar al canal. -*/ -public TsafeJavaScriptKey(Integer pCompanycode,String pChannelcode,String pFilename){ - companycode=pCompanycode; - channelcode=pChannelcode; - filename=pFilename; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de channelcode -@return valor de channelcode*/ -public String getChannelcode(){ - return channelcode; -} -/**Fija el valor de channelcode -@param pChannelcode nuevo Valor de channelcode*/ -public void setChannelcode(String pChannelcode){ - channelcode=pChannelcode; -} - -/**Obtiene el valor de filename -@return valor de filename*/ -public String getFilename(){ - return filename; -} -/**Fija el valor de filename -@param pFilename nuevo Valor de filename*/ -public void setFilename(String pFilename){ - filename=pFilename; -} - -/**Implementacin de la comparacin de TsafeJavaScriptKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeJavaScriptKey))return false; - TsafeJavaScriptKey that = (TsafeJavaScriptKey) o; - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getChannelcode() == null || that.getChannelcode() == null){ - return false; - } - if (! this.getChannelcode().equals(that.getChannelcode())){ - return false; - } - if (this.getFilename() == null || that.getFilename() == null){ - return false; - } - if (! this.getFilename().equals(that.getFilename())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeJavaScriptKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getChannelcode() == null ? 0 : this.getChannelcode().hashCode()); - result = result * 37 + (this.getFilename() == null ? 0 : this.getFilename().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePassword.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePassword.java.svn-base deleted file mode 100644 index 85bf6bb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePassword.java.svn-base +++ /dev/null @@ -1,284 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import com.fp.dto.hb.Log; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEPASSWORD*/ -@Entity(name="TsafePassword") -@Table(name="TSAFEPASSWORD") -public class TsafePassword extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafePassword -*/ -@EmbeddedId -private TsafePasswordKey pk; -@Column(name="VALIDITYDAYS", nullable=true) - -/** -* Dias de validez del password -*/ -private Integer validitydays; - -@Column(name="MINLENGTH", nullable=true) - -/** -* Longitud minica del password -*/ -private Integer minlength; - -@Column(name="MINNOTREPEATED", nullable=true) - -/** -* Numero de las ultimas n veces que el password no se puede repetir, ejemplo 3, el nuevo password tiene que ser diferente a los ultimos 3 password -*/ -private Integer minnotrepeated; - -@Column(name="MINNUMBER", nullable=true) - -/** -* Numero minimo de digios del 0-9 que formen parte del password -*/ -private Integer minnumber; - -@Column(name="MINSPECIALCHARACTERS", nullable=true) - -/** -* Numero minimo de caracteres especiales no numeros si a-z o A_Z -*/ -private Integer minspecialcharacters; - -@Column(name="MINUPPERCASE", nullable=true) - -/** -* Minimo numero de minusculas compredidas entre la a-z -*/ -private Integer minuppercase; - -@Column(name="MINLOWERCASE", nullable=true) - -/** -* Minimo numero de mayusculas comprendidas entre la A_Z -*/ -private Integer minlowercase; - -@Column(name="MESSAGEDAYS", nullable=true) - -/** -* Numero de dias antes del vencimiento del password para enviar mensajes de notificaion -*/ -private Integer messagedays; - -@Column(name="INTENTNUMBER", nullable=true) - -/** -* Numero de intentos, de ingreso de password fallido para bloquear al usuario -*/ -private Integer intentnumber; - -/**Contructor por defecto*/ -public TsafePassword(){ -} -/**Contructor de TsafePassword -@param pPk Clave Primaria del entity -*/ -public TsafePassword(TsafePasswordKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafePassword -*/ -public static TsafePassword find(EntityManager pEntityManager,TsafePasswordKey pKey) throws Exception{ - TsafePassword obj = pEntityManager.find(TsafePassword.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafePassword -@return El objeto que referencia a la Clave primaria de TsafePassword -*/ -public TsafePasswordKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafePassword -@param pPk El objeto que referencia a la nueva Clave primaria de TsafePassword -*/ -public void setPk(TsafePasswordKey pPk){ - pk=pPk; -} -/**Obtiene el valor de validitydays -@return valor de validitydays*/ -public Integer getValiditydays(){ - return validitydays; -} -/**Fija el valor de validitydays -@param pValiditydays nuevo Valor de validitydays*/ -public void setValiditydays(Integer pValiditydays){ - validitydays=pValiditydays; -} - -/**Obtiene el valor de minlength -@return valor de minlength*/ -public Integer getMinlength(){ - return minlength; -} -/**Fija el valor de minlength -@param pMinlength nuevo Valor de minlength*/ -public void setMinlength(Integer pMinlength){ - minlength=pMinlength; -} - -/**Obtiene el valor de minnotrepeated -@return valor de minnotrepeated*/ -public Integer getMinnotrepeated(){ - return minnotrepeated; -} -/**Fija el valor de minnotrepeated -@param pMinnotrepeated nuevo Valor de minnotrepeated*/ -public void setMinnotrepeated(Integer pMinnotrepeated){ - minnotrepeated=pMinnotrepeated; -} - -/**Obtiene el valor de minnumber -@return valor de minnumber*/ -public Integer getMinnumber(){ - return minnumber; -} -/**Fija el valor de minnumber -@param pMinnumber nuevo Valor de minnumber*/ -public void setMinnumber(Integer pMinnumber){ - minnumber=pMinnumber; -} - -/**Obtiene el valor de minspecialcharacters -@return valor de minspecialcharacters*/ -public Integer getMinspecialcharacters(){ - return minspecialcharacters; -} -/**Fija el valor de minspecialcharacters -@param pMinspecialcharacters nuevo Valor de minspecialcharacters*/ -public void setMinspecialcharacters(Integer pMinspecialcharacters){ - minspecialcharacters=pMinspecialcharacters; -} - -/**Obtiene el valor de minuppercase -@return valor de minuppercase*/ -public Integer getMinuppercase(){ - return minuppercase; -} -/**Fija el valor de minuppercase -@param pMinuppercase nuevo Valor de minuppercase*/ -public void setMinuppercase(Integer pMinuppercase){ - minuppercase=pMinuppercase; -} - -/**Obtiene el valor de minlowercase -@return valor de minlowercase*/ -public Integer getMinlowercase(){ - return minlowercase; -} -/**Fija el valor de minlowercase -@param pMinlowercase nuevo Valor de minlowercase*/ -public void setMinlowercase(Integer pMinlowercase){ - minlowercase=pMinlowercase; -} - -/**Obtiene el valor de messagedays -@return valor de messagedays*/ -public Integer getMessagedays(){ - return messagedays; -} -/**Fija el valor de messagedays -@param pMessagedays nuevo Valor de messagedays*/ -public void setMessagedays(Integer pMessagedays){ - messagedays=pMessagedays; -} - -/**Obtiene el valor de intentnumber -@return valor de intentnumber*/ -public Integer getIntentnumber(){ - return intentnumber; -} -/**Fija el valor de intentnumber -@param pIntentnumber nuevo Valor de intentnumber*/ -public void setIntentnumber(Integer pIntentnumber){ - intentnumber=pIntentnumber; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafePassword))return false; - TsafePassword that = (TsafePassword) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafePassword -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafePassword -*/ -public Object createInstance(){ - TsafePassword instance=new TsafePassword(); - instance.setPk(new TsafePasswordKey()); - return instance; -} -/**Clona la entidad TsafePassword -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafePassword p=(TsafePassword)this.clone(); - p.setPk((TsafePasswordKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePasswordKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePasswordKey.java.svn-base deleted file mode 100644 index 1262fe9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafePasswordKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEPASSWORD*/ -@Embeddable -public class TsafePasswordKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="CHANNELCODE", nullable=false,updatable=false) - -/** -* Codigo de canal. -*/ -private String channelcode; - -/**Contructor por defecto*/ -public TsafePasswordKey(){} -/**Contructor de TsafePasswordKey -@param pCompanycode Codigo de compania -@param pChannelcode Codigo de canal. -*/ -public TsafePasswordKey(Integer pCompanycode,String pChannelcode){ - companycode=pCompanycode; - channelcode=pChannelcode; -} -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de channelcode -@return valor de channelcode*/ -public String getChannelcode(){ - return channelcode; -} -/**Fija el valor de channelcode -@param pChannelcode nuevo Valor de channelcode*/ -public void setChannelcode(String pChannelcode){ - channelcode=pChannelcode; -} - -/**Implementacin de la comparacin de TsafePasswordKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafePasswordKey))return false; - TsafePasswordKey that = (TsafePasswordKey) o; - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getChannelcode() == null || that.getChannelcode() == null){ - return false; - } - if (! this.getChannelcode().equals(that.getChannelcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafePasswordKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getChannelcode() == null ? 0 : this.getChannelcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfile.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfile.java.svn-base deleted file mode 100644 index e5dd0ac..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfile.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEPROFILE*/ -@Entity(name="TsafeProfile") -@Table(name="TSAFEPROFILE") -public class TsafeProfile extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeProfile -*/ -@Id -@Column(name="PROFILECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Nombre del perfil -*/ -private String description; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistick locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TsafeProfile(){ -} -/**Contructor de TsafeProfile -@param pPk Clave Primaria del entity -@param pDescription Nombre del perfil -*/ -public TsafeProfile(String pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeProfile -*/ -public static TsafeProfile find(EntityManager pEntityManager,Object pKey) throws Exception{ - TsafeProfile obj = pEntityManager.find(TsafeProfile.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeProfile -@return El objeto que referencia a la Clave primaria de TsafeProfile -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeProfile -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeProfile -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeProfile))return false; - TsafeProfile that = (TsafeProfile) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeProfile -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeProfile -*/ -public Object createInstance(){ - TsafeProfile instance=new TsafeProfile(); - return instance; -} -/**Clona la entidad TsafeProfile -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeProfile p=(TsafeProfile)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHorary.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHorary.java.svn-base deleted file mode 100644 index 923f361..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHorary.java.svn-base +++ /dev/null @@ -1,221 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEPROFILEHORARY*/ -@Entity(name="TsafeProfileHorary") -@Table(name="TSAFEPROFILEHORARY") -public class TsafeProfileHorary extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Log{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeProfileHorary -*/ -@EmbeddedId -private TsafeProfileHoraryKey pk; -@Column(name="REGISTERCODE", nullable=false) - -/** -* Codigo de registro es la suma de los campos de la llave primaria -*/ -private String registercode; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="INITTIME", nullable=false) - -/** -* Horas y minutos desde la cual es disponible la transaccion para el dia -*/ -private String inittime; - -@Column(name="FINISHTIME", nullable=false) - -/** -* Horas y minutos hasta la cual es disponible la transaccion para el dia -*/ -private String finishtime; - -@Column(name="VALIDATEAMOUNT", nullable=true) - -/** -* Y Indica que valida monto de la transaccion utilizada en transacciones financieras. N no valida monto. -*/ -private String validateamount; - -/**Contructor por defecto*/ -public TsafeProfileHorary(){ -} -/**Contructor de TsafeProfileHorary -@param pPk Clave Primaria del entity -@param pRegistercode Codigo de registro es la suma de los campos de la llave primaria -@param pInittime Horas y minutos desde la cual es disponible la transaccion para el dia -@param pFinishtime Horas y minutos hasta la cual es disponible la transaccion para el dia -*/ -public TsafeProfileHorary(TsafeProfileHoraryKey pPk,String pRegistercode,String pInittime,String pFinishtime){ - this(); - pk=pPk; - registercode=pRegistercode; - inittime=pInittime; - finishtime=pFinishtime; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeProfileHorary -*/ -public static TsafeProfileHorary find(EntityManager pEntityManager,TsafeProfileHoraryKey pKey) throws Exception{ - TsafeProfileHorary obj = pEntityManager.find(TsafeProfileHorary.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeProfileHorary -@return El objeto que referencia a la Clave primaria de TsafeProfileHorary -*/ -public TsafeProfileHoraryKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeProfileHorary -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeProfileHorary -*/ -public void setPk(TsafeProfileHoraryKey pPk){ - pk=pPk; -} -/**Obtiene el valor de registercode -@return valor de registercode*/ -public String getRegistercode(){ - return registercode; -} -/**Fija el valor de registercode -@param pRegistercode nuevo Valor de registercode*/ -public void setRegistercode(String pRegistercode){ - registercode=pRegistercode; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de inittime -@return valor de inittime*/ -public String getInittime(){ - return inittime; -} -/**Fija el valor de inittime -@param pInittime nuevo Valor de inittime*/ -public void setInittime(String pInittime){ - inittime=pInittime; -} - -/**Obtiene el valor de finishtime -@return valor de finishtime*/ -public String getFinishtime(){ - return finishtime; -} -/**Fija el valor de finishtime -@param pFinishtime nuevo Valor de finishtime*/ -public void setFinishtime(String pFinishtime){ - finishtime=pFinishtime; -} - -/**Obtiene el valor de validateamount -@return valor de validateamount*/ -public String getValidateamount(){ - return validateamount; -} -/**Fija el valor de validateamount -@param pValidateamount nuevo Valor de validateamount*/ -public void setValidateamount(String pValidateamount){ - validateamount=pValidateamount; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeProfileHorary))return false; - TsafeProfileHorary that = (TsafeProfileHorary) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeProfileHorary -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeProfileHorary -*/ -public Object createInstance(){ - TsafeProfileHorary instance=new TsafeProfileHorary(); - instance.setPk(new TsafeProfileHoraryKey()); - return instance; -} -/**Clona la entidad TsafeProfileHorary -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeProfileHorary p=(TsafeProfileHorary)this.clone(); - p.setPk((TsafeProfileHoraryKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmount.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmount.java.svn-base deleted file mode 100644 index a8e1124..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmount.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEPROFILEHORARYAMOUNT*/ -@Entity(name="TsafeProfileHoraryAmount") -@Table(name="TSAFEPROFILEHORARYAMOUNT") -public class TsafeProfileHoraryAmount extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeProfileHoraryAmount -*/ -@EmbeddedId -private TsafeProfileHoraryAmountKey pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="AMOUNT", nullable=true) - -/** -* Monto maximo permitido para la transaccion moneda. -*/ -private BigDecimal amount; - -/**Contructor por defecto*/ -public TsafeProfileHoraryAmount(){ -} -/**Contructor de TsafeProfileHoraryAmount -@param pPk Clave Primaria del entity -*/ -public TsafeProfileHoraryAmount(TsafeProfileHoraryAmountKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeProfileHoraryAmount -*/ -public static TsafeProfileHoraryAmount find(EntityManager pEntityManager,TsafeProfileHoraryAmountKey pKey) throws Exception{ - TsafeProfileHoraryAmount obj = pEntityManager.find(TsafeProfileHoraryAmount.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeProfileHoraryAmount -@return El objeto que referencia a la Clave primaria de TsafeProfileHoraryAmount -*/ -public TsafeProfileHoraryAmountKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeProfileHoraryAmount -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeProfileHoraryAmount -*/ -public void setPk(TsafeProfileHoraryAmountKey pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de amount -@return valor de amount*/ -public BigDecimal getAmount(){ - return amount; -} -/**Fija el valor de amount -@param pAmount nuevo Valor de amount*/ -public void setAmount(BigDecimal pAmount){ - amount=pAmount; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeProfileHoraryAmount))return false; - TsafeProfileHoraryAmount that = (TsafeProfileHoraryAmount) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeProfileHoraryAmount -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeProfileHoraryAmount -*/ -public Object createInstance(){ - TsafeProfileHoraryAmount instance=new TsafeProfileHoraryAmount(); - instance.setPk(new TsafeProfileHoraryAmountKey()); - return instance; -} -/**Clona la entidad TsafeProfileHoraryAmount -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeProfileHoraryAmount p=(TsafeProfileHoraryAmount)this.clone(); - p.setPk((TsafeProfileHoraryAmountKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmountKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmountKey.java.svn-base deleted file mode 100644 index a2c8e39..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryAmountKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEPROFILEHORARYAMOUNT*/ -@Embeddable -public class TsafeProfileHoraryAmountKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="REGISTERCODE", nullable=false,updatable=false) - -/** -* Codigo de registro de perfil + transaccion + dia -*/ -private String registercode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=false,updatable=false) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TsafeProfileHoraryAmountKey(){} -/**Contructor de TsafeProfileHoraryAmountKey -@param pRegistercode Codigo de registro de perfil + transaccion + dia -@param pModulecode Codigo de modulo -@param pProductcode Codigo de producto -@param pSubproductcode Codigo de subproducto -@param pCurrencycode Codigo de moneda -*/ -public TsafeProfileHoraryAmountKey(String pRegistercode,String pModulecode,String pProductcode,String pSubproductcode,String pCurrencycode){ - registercode=pRegistercode; - modulecode=pModulecode; - productcode=pProductcode; - subproductcode=pSubproductcode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de registercode -@return valor de registercode*/ -public String getRegistercode(){ - return registercode; -} -/**Fija el valor de registercode -@param pRegistercode nuevo Valor de registercode*/ -public void setRegistercode(String pRegistercode){ - registercode=pRegistercode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TsafeProfileHoraryAmountKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeProfileHoraryAmountKey))return false; - TsafeProfileHoraryAmountKey that = (TsafeProfileHoraryAmountKey) o; - if (this.getRegistercode() == null || that.getRegistercode() == null){ - return false; - } - if (! this.getRegistercode().equals(that.getRegistercode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getProductcode() == null || that.getProductcode() == null){ - return false; - } - if (! this.getProductcode().equals(that.getProductcode())){ - return false; - } - if (this.getSubproductcode() == null || that.getSubproductcode() == null){ - return false; - } - if (! this.getSubproductcode().equals(that.getSubproductcode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeProfileHoraryAmountKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getRegistercode() == null ? 0 : this.getRegistercode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getProductcode() == null ? 0 : this.getProductcode().hashCode()); - result = result * 37 + (this.getSubproductcode() == null ? 0 : this.getSubproductcode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryKey.java.svn-base deleted file mode 100644 index 71abd02..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeProfileHoraryKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEPROFILEHORARY*/ -@Embeddable -public class TsafeProfileHoraryKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="PROFILECODE", nullable=false,updatable=false) - -/** -* Codigo de perfil de usuario -*/ -private String profilecode; - -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="DAY", nullable=false,updatable=false) - -/** -* Dia de la semana para la cual esta disponible la transaccion -*/ -private Integer day; - -/**Contructor por defecto*/ -public TsafeProfileHoraryKey(){} -/**Contructor de TsafeProfileHoraryKey -@param pProfilecode Codigo de perfil de usuario -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pDay Dia de la semana para la cual esta disponible la transaccion -*/ -public TsafeProfileHoraryKey(String pProfilecode,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pDay){ - profilecode=pProfilecode; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - day=pDay; -} -/**Obtiene el valor de profilecode -@return valor de profilecode*/ -public String getProfilecode(){ - return profilecode; -} -/**Fija el valor de profilecode -@param pProfilecode nuevo Valor de profilecode*/ -public void setProfilecode(String pProfilecode){ - profilecode=pProfilecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de day -@return valor de day*/ -public Integer getDay(){ - return day; -} -/**Fija el valor de day -@param pDay nuevo Valor de day*/ -public void setDay(Integer pDay){ - day=pDay; -} - -/**Implementacin de la comparacin de TsafeProfileHoraryKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeProfileHoraryKey))return false; - TsafeProfileHoraryKey that = (TsafeProfileHoraryKey) o; - if (this.getProfilecode() == null || that.getProfilecode() == null){ - return false; - } - if (! this.getProfilecode().equals(that.getProfilecode())){ - return false; - } - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getDay() == null || that.getDay() == null){ - return false; - } - if (! this.getDay().equals(that.getDay())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeProfileHoraryKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getProfilecode() == null ? 0 : this.getProfilecode().hashCode()); - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getDay() == null ? 0 : this.getDay().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminal.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminal.java.svn-base deleted file mode 100644 index d0b998b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminal.java.svn-base +++ /dev/null @@ -1,288 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import com.fp.general.exception.GeneralException; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFETERMINAL*/ -@Entity(name = "TsafeTerminal") -@Table(name = "TSAFETERMINAL") -public class TsafeTerminal extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable,Log { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TsafeTerminal - */ - @EmbeddedId - private TsafeTerminalKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic blocking del registro - */ - private Integer recordversion; - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina - */ - private Integer officecode; - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal - */ - private Integer branchcode; - @Column(name = "AREACODE", nullable = true) - /** - * Codigo de area - */ - private Integer areacode; - @Column(name = "IPADDRESS", nullable = true) - /** - * Ip de la maquina - */ - private String ipaddress; - @Column(name = "MACADDRESS", nullable = true) - /** - * Mac de la maquina - */ - private String macaddress; - @Column(name = "SLIPTPRINTER", nullable = true) - /** - * Nombre de la impresora en la que se imprime el slipt de validacion de caja - */ - private String sliptprinter; - - /**Contructor por defecto*/ - public TsafeTerminal() { - } - - /**Contructor de TsafeTerminal - @param pPk Clave Primaria del entity - */ - public TsafeTerminal(TsafeTerminalKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TsafeTerminal - */ - public static TsafeTerminal find(EntityManager pEntityManager, TsafeTerminalKey pKey) throws Exception { - TsafeTerminal obj = pEntityManager.find(TsafeTerminal.class, pKey); - return obj; - } - - /**Entrega la Clave primaria de TsafeTerminal - @return El objeto que referencia a la Clave primaria de TsafeTerminal - */ - public TsafeTerminalKey getPk() { - return pk; - } - - /**Fija un nuevo valor a la Clave primaria de TsafeTerminal - @param pPk El objeto que referencia a la nueva Clave primaria de TsafeTerminal - */ - public void setPk(TsafeTerminalKey pPk) { - pk = pPk; - } - - /**Obtiene el valor de recordversion - @return valor de recordversion*/ - public Integer getRecordversion() { - return recordversion; - } - - /**Fija el valor de recordversion - @param pRecordversion nuevo Valor de recordversion*/ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /**Obtiene el valor de officecode - @return valor de officecode*/ - public Integer getOfficecode() { - return officecode; - } - - /**Fija el valor de officecode - @param pOfficecode nuevo Valor de officecode*/ - public void setOfficecode(Integer pOfficecode) { - officecode = pOfficecode; - } - - /**Obtiene el valor de branchcode - @return valor de branchcode*/ - public Integer getBranchcode() { - return branchcode; - } - - /**Fija el valor de branchcode - @param pBranchcode nuevo Valor de branchcode*/ - public void setBranchcode(Integer pBranchcode) { - branchcode = pBranchcode; - } - - /**Obtiene el valor de areacode - @return valor de areacode*/ - public Integer getAreacode() { - return areacode; - } - - /**Fija el valor de areacode - @param pAreacode nuevo Valor de areacode*/ - public void setAreacode(Integer pAreacode) { - areacode = pAreacode; - } - - /**Obtiene el valor de ipaddress - @return valor de ipaddress*/ - public String getIpaddress() { - return ipaddress; - } - - /**Fija el valor de ipaddress - @param pIpaddress nuevo Valor de ipaddress*/ - public void setIpaddress(String pIpaddress) { - ipaddress = pIpaddress; - } - - /**Obtiene el valor de macaddress - @return valor de macaddress*/ - public String getMacaddress() { - return macaddress; - } - - /**Fija el valor de macaddress - @param pMacaddress nuevo Valor de macaddress*/ - public void setMacaddress(String pMacaddress) { - macaddress = pMacaddress; - } - - /**Obtiene el valor de sliptprinter - @return valor de sliptprinter*/ - public String getSliptprinter() { - return sliptprinter; - } - - /**Fija el valor de sliptprinter - @param pSliptprinter nuevo Valor de sliptprinter*/ - public void setSliptprinter(String pSliptprinter) { - sliptprinter = pSliptprinter; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TsafeTerminal)) { - return false; - } - TsafeTerminal that = (TsafeTerminal) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /**Implementacin del metodo hashCode de la la entidad TsafeTerminal - @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /**Implementacin toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /**Implementacin de la creacin de un bean en blanco TsafeTerminal - */ - public Object createInstance() { - TsafeTerminal instance = new TsafeTerminal(); - instance.setPk(new TsafeTerminalKey()); - return instance; - } - - /**Clona la entidad TsafeTerminal - @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TsafeTerminal p = (TsafeTerminal) this.clone(); - p.setPk((TsafeTerminalKey) this.pk.cloneMe()); - return p; - } - private static final String HQL_TERMINAL = "from TsafeTerminal t where t.pk.companycode = :company and ipaddress = :ip"; - - /** - * Metodo que devuelve un objeto de tipo TsafeTerminal - * @param pEntityManager - * @param company - * @param ip - * @return - * @throws Exception - */ - public static TsafeTerminal find(EntityManager pEntityManager, Integer company, String ip) throws Exception { - TsafeTerminal tsafeTerminal = null; - Query qry = (Query) pEntityManager.createQuery(HQL_TERMINAL); - qry.setParameter("company", company); - qry.setParameter("ip", ip); - try { - tsafeTerminal = (TsafeTerminal) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - return tsafeTerminal; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminalKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminalKey.java.svn-base deleted file mode 100644 index 2150bc8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeTerminalKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFETERMINAL*/ -@Embeddable -public class TsafeTerminalKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TERMINALCODE", nullable=false,updatable=false) - -/** -* Codigo de terminal -*/ -private String terminalcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TsafeTerminalKey(){} -/**Contructor de TsafeTerminalKey -@param pTerminalcode Codigo de terminal -@param pCompanycode Codigo de compania al que pertenece la oficina -*/ -public TsafeTerminalKey(String pTerminalcode,Integer pCompanycode){ - terminalcode=pTerminalcode; - companycode=pCompanycode; -} -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacin de la comparacin de TsafeTerminalKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeTerminalKey))return false; - TsafeTerminalKey that = (TsafeTerminalKey) o; - if (this.getTerminalcode() == null || that.getTerminalcode() == null){ - return false; - } - if (! this.getTerminalcode().equals(that.getTerminalcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeTerminalKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTerminalcode() == null ? 0 : this.getTerminalcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUser.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUser.java.svn-base deleted file mode 100644 index 7f3d36f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUser.java.svn-base +++ /dev/null @@ -1,174 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEUSER*/ -@Entity(name="TsafeUser") -@Table(name="TSAFEUSER") -public class TsafeUser extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeUser -*/ -@Id -@Column(name="USERCODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="PERSONCODE", nullable=true) - -/** -* Codigo de persona -*/ -private Integer personcode; - -@Column(name="INTERNALCODE", nullable=true) - -/** -* Codigo de usuario interno, se utiliza para crear secuencias por usuario. -*/ -private Integer internalcode; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TsafeUser(){ -} -/**Contructor de TsafeUser -@param pPk Clave Primaria del entity -*/ -public TsafeUser(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeUser -*/ -public static TsafeUser find(EntityManager pEntityManager,Object pKey) throws Exception{ - TsafeUser obj = pEntityManager.find(TsafeUser.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeUser -@return El objeto que referencia a la Clave primaria de TsafeUser -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeUser -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeUser -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de internalcode -@return valor de internalcode*/ -public Integer getInternalcode(){ - return internalcode; -} -/**Fija el valor de internalcode -@param pInternalcode nuevo Valor de internalcode*/ -public void setInternalcode(Integer pInternalcode){ - internalcode=pInternalcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeUser))return false; - TsafeUser that = (TsafeUser) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeUser -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeUser -*/ -public Object createInstance(){ - TsafeUser instance=new TsafeUser(); - return instance; -} -/**Clona la entidad TsafeUser -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeUser p=(TsafeUser)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetail.java.svn-base deleted file mode 100644 index ed9ca9f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetail.java.svn-base +++ /dev/null @@ -1,746 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; -import com.fp.general.exception.GeneralException; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TSAFEUSERDETAIL - */ -@Entity(name = "TsafeUserDetail") -@Table(name = "TSAFEUSERDETAIL") -public class TsafeUserDetail extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Log { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TsafeUserDetail - */ - @EmbeddedId - private TsafeUserDetailKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic blocking del registro - */ - private Integer recordversion; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro del detalle de usuarios - */ - private Timestamp datefrom; - - @Column(name = "USERSTATUSCATALOG", nullable = true) - /** - * Codigo de catalogo ACT, Activo, BLQ Bloqueado, RET Retirado - */ - private String userstatuscatalog; - - @Column(name = "USERSTATUSCATALOGCODE", nullable = true) - /** - * Codigo de tabla de catalogo USERSTATUS del estatus del usuario - */ - private String userstatuscatalogcode; - - @Column(name = "COMPANYCODE", nullable = true) - /** - * Codigo de compania a la que pertenece el departamento - */ - private Integer companycode; - - @Column(name = "AREACODE", nullable = true) - /** - * Codigo de area - */ - private Integer areacode; - - @Column(name = "OFFICECODE", nullable = true) - /** - * Codigo de oficina - */ - private Integer officecode; - - @Column(name = "BRANCHCODE", nullable = true) - /** - * Codigo de sucursal - */ - private Integer branchcode; - - @Column(name = "CHANNELCODE", nullable = true) - /** - * Codigo de canal. - */ - private String channelcode; - - @Column(name = "LANGUAGECODE", nullable = true) - /** - * Codigo de idioma - */ - private String languagecode; - - @Column(name = "NICKNAME", nullable = false) - /** - * Nombre corto o nombre comn del usuario. - */ - private String nickname; - - @Column(name = "PASSWORD", nullable = true) - /** - * Password - */ - private String password; - - @Column(name = "BRANCHFROMTERMINAL", nullable = true) - /** - * Y indica que la sucursal, oficina area toma del terminal de la maquina - */ - private String branchfromterminal; - - @Column(name = "CHANGEPASSWORD", nullable = true) - /** - * Y Indica que el usuario tiene que cambiar de password al momento de logon, cuando el administrador resea el password - */ - private String changepassword; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que ingreso la informacion - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifico la informacion - */ - private String modifyuser; - - @Column(name = "ACTIVATEUSER", nullable = true) - /** - * Codigo de usuario que pone operativo o activa al usuario. - */ - private String activateuser; - - @Column(name = "TERMINALCODE", nullable = true) - /** - * null - */ - private String terminalcode; - - @Column(name = "ISUSERBPM", nullable = true) - /** - * Y indica que el usuario esta habilitado para trabajar en el JBPM - */ - private String isuserbpm; - - @Column(name="CCENTROCONTROL", nullable=true) - - /** - * Codigo de centro de control de armas - */ - private String ccentrocontrol; - - /** Contructor por defecto */ - public TsafeUserDetail() { - } - - /** - * Contructor de TsafeUserDetail - * - * @param pPk - * Clave Primaria del entity - * @param pDatefrom - * Fecha desde la cual esta vigente el registro del detalle de - * usuarios - * @param pNickname - * Nombre corto o nombre comn del usuario. - */ - public TsafeUserDetail(TsafeUserDetailKey pPk, Timestamp pDatefrom, - String pNickname) { - this(); - pk = pPk; - datefrom = pDatefrom; - nickname = pNickname; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TsafeUserDetail - */ - public static TsafeUserDetail find(EntityManager pEntityManager, - TsafeUserDetailKey pKey) throws Exception { - TsafeUserDetail obj = pEntityManager.find(TsafeUserDetail.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TsafeUserDetail - * - * @return El objeto que referencia a la Clave primaria de TsafeUserDetail - */ - public TsafeUserDetailKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TsafeUserDetail - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TsafeUserDetail - */ - public void setPk(TsafeUserDetailKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom - * nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de userstatuscatalog - * - * @return valor de userstatuscatalog - */ - public String getUserstatuscatalog() { - return userstatuscatalog; - } - - /** - * Fija el valor de userstatuscatalog - * - * @param pUserstatuscatalog - * nuevo Valor de userstatuscatalog - */ - public void setUserstatuscatalog(String pUserstatuscatalog) { - userstatuscatalog = pUserstatuscatalog; - } - - /** - * Obtiene el valor de userstatuscatalogcode - * - * @return valor de userstatuscatalogcode - */ - public String getUserstatuscatalogcode() { - return userstatuscatalogcode; - } - - /** - * Fija el valor de userstatuscatalogcode - * - * @param pUserstatuscatalogcode - * nuevo Valor de userstatuscatalogcode - */ - public void setUserstatuscatalogcode(String pUserstatuscatalogcode) { - userstatuscatalogcode = pUserstatuscatalogcode; - } - - /** - * Obtiene el valor de companycode - * - * @return valor de companycode - */ - public Integer getCompanycode() { - return companycode; - } - - /** - * Fija el valor de companycode - * - * @param pCompanycode - * nuevo Valor de companycode - */ - public void setCompanycode(Integer pCompanycode) { - companycode = pCompanycode; - } - - /** - * Obtiene el valor de areacode - * - * @return valor de areacode - */ - public Integer getAreacode() { - return areacode; - } - - /** - * Fija el valor de areacode - * - * @param pAreacode - * nuevo Valor de areacode - */ - public void setAreacode(Integer pAreacode) { - areacode = pAreacode; - } - - /** - * Obtiene el valor de officecode - * - * @return valor de officecode - */ - public Integer getOfficecode() { - return officecode; - } - - /** - * Fija el valor de officecode - * - * @param pOfficecode - * nuevo Valor de officecode - */ - public void setOfficecode(Integer pOfficecode) { - officecode = pOfficecode; - } - - /** - * Obtiene el valor de branchcode - * - * @return valor de branchcode - */ - public Integer getBranchcode() { - return branchcode; - } - - /** - * Fija el valor de branchcode - * - * @param pBranchcode - * nuevo Valor de branchcode - */ - public void setBranchcode(Integer pBranchcode) { - branchcode = pBranchcode; - } - - /** - * Obtiene el valor de channelcode - * - * @return valor de channelcode - */ - public String getChannelcode() { - return channelcode; - } - - /** - * Fija el valor de channelcode - * - * @param pChannelcode - * nuevo Valor de channelcode - */ - public void setChannelcode(String pChannelcode) { - channelcode = pChannelcode; - } - - /** - * Obtiene el valor de languagecode - * - * @return valor de languagecode - */ - public String getLanguagecode() { - return languagecode; - } - - /** - * Fija el valor de languagecode - * - * @param pLanguagecode - * nuevo Valor de languagecode - */ - public void setLanguagecode(String pLanguagecode) { - languagecode = pLanguagecode; - } - - /** - * Obtiene el valor de nickname - * - * @return valor de nickname - */ - public String getNickname() { - return nickname; - } - - /** - * Fija el valor de nickname - * - * @param pNickname - * nuevo Valor de nickname - */ - public void setNickname(String pNickname) { - nickname = pNickname; - } - - /** - * Obtiene el valor de password - * - * @return valor de password - */ - public String getPassword() { - return password; - } - - /** - * Fija el valor de password - * - * @param pPassword - * nuevo Valor de password - */ - public void setPassword(String pPassword) { - password = pPassword; - } - - /** - * Obtiene el valor de branchfromterminal - * - * @return valor de branchfromterminal - */ - public String getBranchfromterminal() { - return branchfromterminal; - } - - /** - * Fija el valor de branchfromterminal - * - * @param pBranchfromterminal - * nuevo Valor de branchfromterminal - */ - public void setBranchfromterminal(String pBranchfromterminal) { - branchfromterminal = pBranchfromterminal; - } - - /** - * Obtiene el valor de changepassword - * - * @return valor de changepassword - */ - public String getChangepassword() { - return changepassword; - } - - /** - * Fija el valor de changepassword - * - * @param pChangepassword - * nuevo Valor de changepassword - */ - public void setChangepassword(String pChangepassword) { - changepassword = pChangepassword; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser - * nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser - * nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - modifyuser = pModifyuser; - } - - /** - * Obtiene el valor de activateuser - * - * @return valor de activateuser - */ - public String getActivateuser() { - return activateuser; - } - - /** - * Fija el valor de activateuser - * - * @param pActivateuser - * nuevo Valor de activateuser - */ - public void setActivateuser(String pActivateuser) { - activateuser = pActivateuser; - } - - /** - * Obtiene el valor de terminalcode - * - * @return valor de terminalcode - */ - public String getTerminalcode() { - return terminalcode; - } - - /** - * Fija el valor de terminalcode - * - * @param pTerminalcode - * nuevo Valor de terminalcode - */ - public void setTerminalcode(String pTerminalcode) { - terminalcode = pTerminalcode; - } - - /** - * Obtiene el valor de isuserbpm - * - * @return valor de isuserbpm - */ - public String getIsuserbpm() { - return isuserbpm; - } - - /** - * Fija el valor de isuserbpm - * - * @param pIsuserbpm - * nuevo Valor de isuserbpm - */ - public void setIsuserbpm(String pIsuserbpm) { - isuserbpm = pIsuserbpm; - } - - /**Obtiene el valor de ccentrocontrol - @return valor de ccentrocontrol*/ - public String getCcentrocontrol(){ - return ccentrocontrol; - } - /**Fija el valor de ccentrocontrol - @param pCcentrocontrol nuevo Valor de ccentrocontrol*/ - public void setCcentrocontrol(String pCcentrocontrol){ - ccentrocontrol=pCcentrocontrol; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TsafeUserDetail)) - return false; - TsafeUserDetail that = (TsafeUserDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TsafeUserDetail - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TsafeUserDetail */ - public Object createInstance() { - TsafeUserDetail instance = new TsafeUserDetail(); - instance.setPk(new TsafeUserDetailKey()); - return instance; - } - - /** - * Clona la entidad TsafeUserDetail - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TsafeUserDetail p = (TsafeUserDetail) this.clone(); - p.setPk((TsafeUserDetailKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - //METODOS MANUALES - /**Sentecnia que entrega lista de los ultimos n passwords del usuario ordenados en forma decendente*/ - private static String SQL = "from TsafeUserDetail t where t.pk.usercode = :usercode " - + " order by t.pk.dateto desc "; - - /** - * Enterga una lista de registros asociados a un usuario de TsafeUserDetail ordenados en forma decendenete. - * @param pEntityManager Session de la base de datos. - * @param pUserCode Codigo de usuario - * @param pNumReg Numero de registros a obtener en la lista . - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pUserCode, Integer pNumReg) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(SQL); - qry.setParameter("usercode", pUserCode); - qry.setMaxResults(pNumReg); - ldata = qry.getResultList(); - return ldata; - } - - /**Sentecnia que entrega un objeto con los datos de un usuario.*/ - private static String JPQL_BY_USER = "from TsafeUserDetail t where t.pk.usercode = :usercode " - + " and t.pk.dateto = :dateto "; - - /** - * Enterga un objeto con los datos de un usuario de TsafeUserDetail. - * @param pEntityManager Session de la base de datos. - * @param pUserCode Codigo de usuario - * @return TsafeUserDetail - * @throws Exception - */ - public static TsafeUserDetail find(EntityManager pEntityManager, String pUserCode) throws Exception { - TsafeUserDetail obj = null; - Query qry = pEntityManager.createQuery(JPQL_BY_USER); - qry.setParameter("usercode", pUserCode); - qry.setParameter("dateto",Constant.getDefaultExpiryDate()); - try { - obj = (TsafeUserDetail)qry.getSingleResult(); - } catch (NoResultException e) { - throw new GeneralException("GENE-0035", "USUARIO: {0} NO DEFINIDO EN TSAFEUSERDETAIL", pUserCode); - } - return obj; - } - - - /** - * Sentencia que devuelve un registro de TgeneSubProduct. - */ - private static final String JPQL_NAME_USER = "from TsafeUserDetail tsu " + " where tsu.pk.usercode = :usercode " - + " and tsu.pk.dateto = :dateto "; - /** - * Metodo que obtiene datos de un registro del subproducto. - * - * @param pEntityManager Session de la base de datos. - * @param pModulecode Codigo de modulo a obtener datos de la base. - * @param pProductcode Codigo de producto a obtener datos de la base. - * @param pSubproductcode Codigo de subproducto a obtener datos de la base. - * @return TgeneSubProduct - * @throws Exception - */ - public static TsafeUserDetail findByUserCode(EntityManager pEntityManager, String usercode) throws Exception { - Query qry = pEntityManager.createQuery(TsafeUserDetail.JPQL_NAME_USER); - qry.setParameter("usercode", usercode); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - try { - return (TsafeUserDetail) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetailKey.java.svn-base deleted file mode 100644 index 0e47a06..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserDetailKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEUSERDETAIL*/ -@Embeddable -public class TsafeUserDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="PERSONCODE", nullable=false,updatable=false) - -/** -* Codigo de persona del usuario -*/ -private Integer personcode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del detalle de usuarios -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TsafeUserDetailKey(){} -/**Contructor de TsafeUserDetailKey -@param pUsercode Codigo de usuario -@param pPersoncode Codigo de persona del usuario -@param pDateto Fecha hasta la cual esta vigente el registro del detalle de usuarios -*/ -public TsafeUserDetailKey(String pUsercode,Integer pPersoncode,Timestamp pDateto){ - usercode=pUsercode; - personcode=pPersoncode; - dateto=pDateto; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de personcode -@return valor de personcode*/ -public Integer getPersoncode(){ - return personcode; -} -/**Fija el valor de personcode -@param pPersoncode nuevo Valor de personcode*/ -public void setPersoncode(Integer pPersoncode){ - personcode=pPersoncode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TsafeUserDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeUserDetailKey))return false; - TsafeUserDetailKey that = (TsafeUserDetailKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getPersoncode() == null || that.getPersoncode() == null){ - return false; - } - if (! this.getPersoncode().equals(that.getPersoncode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeUserDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getPersoncode() == null ? 0 : this.getPersoncode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfile.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfile.java.svn-base deleted file mode 100644 index 3febdf9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfile.java.svn-base +++ /dev/null @@ -1,264 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; -import com.fp.dto.hb.Log; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEUSERPROFILE */ -@Entity(name = "TsafeUserProfile") -@Table(name = "TSAFEUSERPROFILE") -public class TsafeUserProfile extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable, Log { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TsafeUserProfile - */ - @EmbeddedId - private TsafeUserProfileKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro del detalle de usuarios - */ - private Timestamp datefrom; - - @Column(name = "INGRESSUSER", nullable = true) - /** - * Codigo de usuario que ingreso la informacion - */ - private String ingressuser; - - @Column(name = "MODIFYUSER", nullable = true) - /** - * Codigo de usuario que modifico la informacion - */ - private String modifyuser; - - /** Contructor por defecto */ - public TsafeUserProfile() { - } - - /** - * Contructor de TsafeUserProfile - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro del detalle de usuarios - */ - public TsafeUserProfile(TsafeUserProfileKey pPk, Timestamp pDatefrom) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TsafeUserProfile - */ - public static TsafeUserProfile find(EntityManager pEntityManager, TsafeUserProfileKey pKey) throws Exception { - TsafeUserProfile obj = pEntityManager.find(TsafeUserProfile.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TsafeUserProfile - * - * @return El objeto que referencia a la Clave primaria de TsafeUserProfile - */ - public TsafeUserProfileKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TsafeUserProfile - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TsafeUserProfile - */ - public void setPk(TsafeUserProfileKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de ingressuser - * - * @return valor de ingressuser - */ - public String getIngressuser() { - return this.ingressuser; - } - - /** - * Fija el valor de ingressuser - * - * @param pIngressuser nuevo Valor de ingressuser - */ - public void setIngressuser(String pIngressuser) { - this.ingressuser = pIngressuser; - } - - /** - * Obtiene el valor de modifyuser - * - * @return valor de modifyuser - */ - public String getModifyuser() { - return this.modifyuser; - } - - /** - * Fija el valor de modifyuser - * - * @param pModifyuser nuevo Valor de modifyuser - */ - public void setModifyuser(String pModifyuser) { - this.modifyuser = pModifyuser; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TsafeUserProfile)) { - return false; - } - TsafeUserProfile that = (TsafeUserProfile) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TsafeUserProfile - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TsafeUserProfile */ - @Override - public Object createInstance() { - TsafeUserProfile instance = new TsafeUserProfile(); - instance.setPk(new TsafeUserProfileKey()); - return instance; - } - - /** - * Clona la entidad TsafeUserProfile - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TsafeUserProfile p = (TsafeUserProfile) this.clone(); - p.setPk((TsafeUserProfileKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - // Metodos manuales. - /** - * Sentencia que devuelve un registro de TsafeUserProfile. - */ - private static final String JPQL_USER_PROFILE = "from TsafeUserProfile tsup " + " where tsup.pk.usercode = :usercode" - + " and tsup.pk.dateto = :dateto"; - - /** - * Metodo que obtiene datos del perfil del usuario. - * - * @param pusercode Codigo de usuario. - * @return TsafeUserProfile - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager, String pusercode) throws Exception { - Query qry = pEntityManager.createQuery(TsafeUserProfile.JPQL_USER_PROFILE); - qry.setParameter("usercode", pusercode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfileKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfileKey.java.svn-base deleted file mode 100644 index cb85ea9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserProfileKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEUSERPROFILE*/ -@Embeddable -public class TsafeUserProfileKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="PROFILECODE", nullable=false,updatable=false) - -/** -* Codigo de perfil de usuario -*/ -private String profilecode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro del detalle de usuarios -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TsafeUserProfileKey(){} -/**Contructor de TsafeUserProfileKey -@param pUsercode Codigo de usuario -@param pProfilecode Codigo de perfil de usuario -@param pDateto Fecha hasta la cual esta vigente el registro del detalle de usuarios -*/ -public TsafeUserProfileKey(String pUsercode,String pProfilecode,Timestamp pDateto){ - usercode=pUsercode; - profilecode=pProfilecode; - dateto=pDateto; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de profilecode -@return valor de profilecode*/ -public String getProfilecode(){ - return profilecode; -} -/**Fija el valor de profilecode -@param pProfilecode nuevo Valor de profilecode*/ -public void setProfilecode(String pProfilecode){ - profilecode=pProfilecode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TsafeUserProfileKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeUserProfileKey))return false; - TsafeUserProfileKey that = (TsafeUserProfileKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getProfilecode() == null || that.getProfilecode() == null){ - return false; - } - if (! this.getProfilecode().equals(that.getProfilecode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeUserProfileKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getProfilecode() == null ? 0 : this.getProfilecode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSession.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSession.java.svn-base deleted file mode 100644 index 5621ed8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSession.java.svn-base +++ /dev/null @@ -1,215 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEUSERSESSION*/ -@Entity(name="TsafeUserSession") -@Table(name="TSAFEUSERSESSION") -public class TsafeUserSession extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeUserSession -*/ -@EmbeddedId -private TsafeUserSessionKey pk; -@Column(name="DATEFROM", nullable=true) - -/** -* Fecha desde la cual esta vigente el registro. -*/ -private Timestamp datefrom; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal desde el cual se conecta el usuario. -*/ -private String terminalcode; - -@Column(name="TRYNUMBER", nullable=true) - -/** -* Numero de intentos de coneccion. -*/ -private Integer trynumber; - -@Column(name="SESSIONID", nullable=true) - -/** -* Session id del browser con el servlet. -*/ -private String sessionid; - -@Column(name="WEBSERVERIP", nullable=true) - -/** -* Ip del servidor de aplicaciones al cual esta conectado un usuario, sirve para caducar las sessiones de usuario asociadas a esta ip -*/ -private String webserverip; - -/**Contructor por defecto*/ -public TsafeUserSession(){ -} -/**Contructor de TsafeUserSession -@param pPk Clave Primaria del entity -*/ -public TsafeUserSession(TsafeUserSessionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeUserSession -*/ -public static TsafeUserSession find(EntityManager pEntityManager,TsafeUserSessionKey pKey) throws Exception{ - TsafeUserSession obj = pEntityManager.find(TsafeUserSession.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeUserSession -@return El objeto que referencia a la Clave primaria de TsafeUserSession -*/ -public TsafeUserSessionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeUserSession -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeUserSession -*/ -public void setPk(TsafeUserSessionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de datefrom -@return valor de datefrom*/ -public Timestamp getDatefrom(){ - return datefrom; -} -/**Fija el valor de datefrom -@param pDatefrom nuevo Valor de datefrom*/ -public void setDatefrom(Timestamp pDatefrom){ - datefrom=pDatefrom; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de trynumber -@return valor de trynumber*/ -public Integer getTrynumber(){ - return trynumber; -} -/**Fija el valor de trynumber -@param pTrynumber nuevo Valor de trynumber*/ -public void setTrynumber(Integer pTrynumber){ - trynumber=pTrynumber; -} - -/**Obtiene el valor de sessionid -@return valor de sessionid*/ -public String getSessionid(){ - return sessionid; -} -/**Fija el valor de sessionid -@param pSessionid nuevo Valor de sessionid*/ -public void setSessionid(String pSessionid){ - sessionid=pSessionid; -} - -/**Obtiene el valor de webserverip -@return valor de webserverip*/ -public String getWebserverip(){ - return webserverip; -} -/**Fija el valor de webserverip -@param pWebserverip nuevo Valor de webserverip*/ -public void setWebserverip(String pWebserverip){ - webserverip=pWebserverip; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeUserSession))return false; - TsafeUserSession that = (TsafeUserSession) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TsafeUserSession -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TsafeUserSession -*/ -public Object createInstance(){ - TsafeUserSession instance=new TsafeUserSession(); - instance.setPk(new TsafeUserSessionKey()); - return instance; -} -/**Clona la entidad TsafeUserSession -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeUserSession p=(TsafeUserSession)this.clone(); - p.setPk((TsafeUserSessionKey)this.pk.cloneMe()); - return p; -} -public Object getId() { - return this.pk; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionKey.java.svn-base deleted file mode 100644 index b7e70db..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionKey.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TSAFEUSERSESSION*/ -@Embeddable -public class TsafeUserSessionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro. -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TsafeUserSessionKey(){} -/**Contructor de TsafeUserSessionKey -@param pUsercode Codigo de usuario -@param pDateto Fecha hasta la cual esta vigente el registro. -*/ -public TsafeUserSessionKey(String pUsercode,Timestamp pDateto){ - usercode=pUsercode; - dateto=pDateto; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TsafeUserSessionKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeUserSessionKey))return false; - TsafeUserSessionKey that = (TsafeUserSessionKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TsafeUserSessionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLog.java.svn-base deleted file mode 100644 index 157cd6a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLog.java.svn-base +++ /dev/null @@ -1,299 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TSAFEUSERSESSIONLOG*/ -@Entity(name="TsafeUserSessionLog") -@Table(name="TSAFEUSERSESSIONLOG") -public class TsafeUserSessionLog extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TsafeUserSessionLog -*/ -@EmbeddedId -private TsafeUserSessionLogKey pk; -@Column(name="USERCODE", nullable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="TERMINALCODE", nullable=false) - -/** -* Codigo de terminal desde el cual se conecta el usuario. -*/ -private String terminalcode; - -@Column(name="SESSIONID", nullable=false) - -/** -* Session id del browser con el servlet. -*/ -private String sessionid; - -@Column(name="WEBSERVERIP", nullable=false) - -/** -* Ip del servidor de aplicaciones al cual esta conectado un usuario, sirve para caducar las sessiones de usuario asociadas a esta ip -*/ -private String webserverip; - -@Column(name="REALDATE", nullable=false) - -/** -* Fecha en la que se realiza el login -*/ -private Timestamp realdate; - -@Column(name="ERRORCODE", nullable=false) - -/** -* Codigo de error -*/ -private String errorcode; - -@Column(name="MESSAGELOGIN", nullable=false) - -/** -* Mensaje al intentar loguearse -*/ -private String messagelogin; - -/**Contructor por defecto*/ -public TsafeUserSessionLog(){ -} -/**Contructor de TsafeUserSessionLog -@param pPk Clave Primaria del entity -@param pUsercode Codigo de usuario -@param pTerminalcode Codigo de terminal desde el cual se conecta el usuario. -@param pSessionid Session id del browser con el servlet. -@param pWebserverip Ip del servidor de aplicaciones al cual esta conectado un usuario, sirve para caducar las sessiones de usuario asociadas a esta ip -@param pRealdate Fecha en la que se realiza el login -@param pErrorcode Codigo de error -@param pMessagelogin Mensaje al intentar loguearse -*/ -public TsafeUserSessionLog(TsafeUserSessionLogKey pPk,String pUsercode,String pTerminalcode,String pSessionid,String pWebserverip,Timestamp pRealdate,String pErrorcode,String pMessagelogin){ - this(); - pk=pPk; - usercode=pUsercode; - terminalcode=pTerminalcode; - sessionid=pSessionid; - webserverip=pWebserverip; - realdate=pRealdate; - errorcode=pErrorcode; - messagelogin=pMessagelogin; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TsafeUserSessionLog -*/ -public static TsafeUserSessionLog find(EntityManager pEntityManager,TsafeUserSessionLogKey pKey) throws Exception{ - TsafeUserSessionLog obj = pEntityManager.find(TsafeUserSessionLog.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TsafeUserSessionLog -@return El objeto que referencia a la Clave primaria de TsafeUserSessionLog -*/ -public TsafeUserSessionLogKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TsafeUserSessionLog -@param pPk El objeto que referencia a la nueva Clave primaria de TsafeUserSessionLog -*/ -public void setPk(TsafeUserSessionLogKey pPk){ - pk=pPk; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de sessionid -@return valor de sessionid*/ -public String getSessionid(){ - return sessionid; -} -/**Fija el valor de sessionid -@param pSessionid nuevo Valor de sessionid*/ -public void setSessionid(String pSessionid){ - sessionid=pSessionid; -} - -/**Obtiene el valor de webserverip -@return valor de webserverip*/ -public String getWebserverip(){ - return webserverip; -} -/**Fija el valor de webserverip -@param pWebserverip nuevo Valor de webserverip*/ -public void setWebserverip(String pWebserverip){ - webserverip=pWebserverip; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de errorcode -@return valor de errorcode*/ -public String getErrorcode(){ - return errorcode; -} -/**Fija el valor de errorcode -@param pErrorcode nuevo Valor de errorcode*/ -public void setErrorcode(String pErrorcode){ - errorcode=pErrorcode; -} - -/**Obtiene el valor de messagelogin -@return valor de messagelogin*/ -public String getMessagelogin(){ - return messagelogin; -} -/**Fija el valor de messagelogin -@param pMessagelogin nuevo Valor de messagelogin*/ -public void setMessagelogin(String pMessagelogin){ - messagelogin=pMessagelogin; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TsafeUserSessionLog))return false; - TsafeUserSessionLog that = (TsafeUserSessionLog) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TsafeUserSessionLog -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TsafeUserSessionLog -*/ -public Object createInstance(){ - TsafeUserSessionLog instance=new TsafeUserSessionLog(); - instance.setPk(new TsafeUserSessionLogKey()); - return instance; -} -/**Clona la entidad TsafeUserSessionLog -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TsafeUserSessionLog p=(TsafeUserSessionLog)this.clone(); - p.setPk((TsafeUserSessionLogKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLogKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLogKey.java.svn-base deleted file mode 100644 index 6de0ea2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/safe/.svn/text-base/TsafeUserSessionLogKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.safe; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TSAFEUSERSESSIONLOG*/ -@Embeddable -public class TsafeUserSessionLogKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="WORKINGDATE", nullable=false,updatable=false) - -/** -* Fecha de trabajo del sistema -*/ -private Date workingdate; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de la tabla -*/ -private Integer sequence; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania donde se realiza el inicio de sesion -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TsafeUserSessionLogKey(){} -/**Contructor de TsafeUserSessionLogKey -@param pWorkingdate Fecha de trabajo del sistema -@param pSequence Secuencia de la tabla -@param pCompanycode Codigo de compania donde se realiza el inicio de sesion -*/ -public TsafeUserSessionLogKey(Date pWorkingdate,Integer pSequence,Integer pCompanycode){ - workingdate=pWorkingdate; - sequence=pSequence; - companycode=pCompanycode; -} -/**Obtiene el valor de workingdate -@return valor de workingdate*/ -public Date getWorkingdate(){ - return workingdate; -} -/**Fija el valor de workingdate -@param pWorkingdate nuevo Valor de workingdate*/ -public void setWorkingdate(Date pWorkingdate){ - workingdate=pWorkingdate; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacion de la comparacion de TsafeUserSessionLogKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TsafeUserSessionLogKey))return false; - TsafeUserSessionLogKey that = (TsafeUserSessionLogKey) o; - if (this.getWorkingdate() == null || that.getWorkingdate() == null){ - return false; - } - if (! this.getWorkingdate().equals(that.getWorkingdate())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TsafeUserSessionLogKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getWorkingdate() == null ? 0 : this.getWorkingdate().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/entries deleted file mode 100644 index 5b4d32f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneScheduleEvent.java -file - - - - -2022-07-28T03:40:29.689747Z -7c302f13910668df7555f53fee261a82 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7058 - -TgeneScheduleLog.java -file - - - - -2022-07-28T03:40:29.689747Z -fedcd5dc574a0988192406727d4e60ca -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5221 - -TgeneScheduleParameters.java -file - - - - -2022-07-28T03:40:29.690747Z -8aa1a4ea32b6bac238465fd36d5899b7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5851 - -TgeneScheduleLogKey.java -file - - - - -2022-07-28T03:40:29.690747Z -6dafa01c4b8aa78ca011fabb7ddc537f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3369 - -TgeneScheduleProcess.java -file - - - - -2022-07-28T03:40:29.690747Z -9d5b877f130bef32956ef612f5771619 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6599 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleEvent.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleEvent.java.svn-base deleted file mode 100644 index f52db0e..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleEvent.java.svn-base +++ /dev/null @@ -1,327 +0,0 @@ -package com.fp.persistence.pgeneral.schedule; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENESCHEDULEEVENT - */ -@Entity(name = "TgeneScheduleEvent") -@Table(name = "TGENESCHEDULEEVENT") -public class TgeneScheduleEvent extends com.fp.dto.AbstractDataTransport - implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneScheduleEvent - */ - @Id - @Column(name = "EVENTCODE", nullable = false, updatable = false) - private String pk; - @Column(name = "DESCRIPTION", nullable = true) - /** - * Descripcion del codigo de evento - */ - private String description; - - @Column(name = "EXEHOUR", nullable = true) - /** - * Hora de ejecucion. - */ - private Integer exehour; - - @Column(name = "EXEMINUTE", nullable = true) - /** - * Minuto de ejecucion. - */ - private Integer exeminute; - - @Column(name = "EXESECOND", nullable = true) - /** - * Segundo de ejecucion. - */ - private Integer exesecond; - - @Column(name = "BEGINWEEKDAY", nullable = true) - /** - * Dia de inicio de ejecucion - */ - private Integer beginweekday; - - @Column(name = "ENDWEEKDAY", nullable = true) - /** - * Dia final de ejecucion - */ - private Integer endweekday; - - /** Contructor por defecto */ - public TgeneScheduleEvent() { - } - - /** - * Contructor de TgeneScheduleEvent - * - * @param pPk - * Clave Primaria del entity - */ - public TgeneScheduleEvent(String pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneScheduleEvent - */ - public static TgeneScheduleEvent find(EntityManager pEntityManager, - Object pKey) throws Exception { - TgeneScheduleEvent obj = pEntityManager.find(TgeneScheduleEvent.class, - pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneScheduleEvent - * - * @return El objeto que referencia a la Clave primaria de - * TgeneScheduleEvent - */ - public String getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneScheduleEvent - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneScheduleEvent - */ - public void setPk(String pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription - * nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - /** - * Obtiene el valor de exehour - * - * @return valor de exehour - */ - public Integer getExehour() { - return exehour; - } - - /** - * Fija el valor de exehour - * - * @param pExehour - * nuevo Valor de exehour - */ - public void setExehour(Integer pExehour) { - exehour = pExehour; - } - - /** - * Obtiene el valor de exeminute - * - * @return valor de exeminute - */ - public Integer getExeminute() { - return exeminute; - } - - /** - * Fija el valor de exeminute - * - * @param pExeminute - * nuevo Valor de exeminute - */ - public void setExeminute(Integer pExeminute) { - exeminute = pExeminute; - } - - /** - * Obtiene el valor de exesecond - * - * @return valor de exesecond - */ - public Integer getExesecond() { - return exesecond; - } - - /** - * Fija el valor de exesecond - * - * @param pExesecond - * nuevo Valor de exesecond - */ - public void setExesecond(Integer pExesecond) { - exesecond = pExesecond; - } - - /** - * Obtiene el valor de beginweekday - * - * @return valor de beginweekday - */ - public Integer getBeginweekday() { - return beginweekday; - } - - /** - * Fija el valor de beginweekday - * - * @param pBeginweekday - * nuevo Valor de beginweekday - */ - public void setBeginweekday(Integer pBeginweekday) { - beginweekday = pBeginweekday; - } - - /** - * Obtiene el valor de endweekday - * - * @return valor de endweekday - */ - public Integer getEndweekday() { - return endweekday; - } - - /** - * Fija el valor de endweekday - * - * @param pEndweekday - * nuevo Valor de endweekday - */ - public void setEndweekday(Integer pEndweekday) { - endweekday = pEndweekday; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneScheduleEvent)) - return false; - TgeneScheduleEvent that = (TgeneScheduleEvent) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneScheduleEvent - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneScheduleEvent */ - public Object createInstance() { - TgeneScheduleEvent instance = new TgeneScheduleEvent(); - return instance; - } - - /** - * Clona la entidad TgeneScheduleEvent - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneScheduleEvent p = (TgeneScheduleEvent) this.clone(); - return p; - } - - //Metodos manuales - - /**Sentencia que devuelve una lista de los eventos a calendarizar..*/ - private static final String JPQL = - "from TgeneScheduleEvent t "; - - /** - * Entrega una lista de eventos a ser calendarizados. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager) throws Exception { - Query qry = pEntityManager.createQuery(JPQL); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLog.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLog.java.svn-base deleted file mode 100644 index d43208b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLog.java.svn-base +++ /dev/null @@ -1,195 +0,0 @@ -package com.fp.persistence.pgeneral.schedule; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCHEDULELOG*/ -@Entity(name="TgeneScheduleLog") -@Table(name="TGENESCHEDULELOG") -public class TgeneScheduleLog extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneScheduleLog -*/ -@EmbeddedId -private TgeneScheduleLogKey pk; -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="PROCESSDATE", nullable=true) - -/** -* Fecha de ejecucion de la tarea calendarizada -*/ -private Date processdate; - -@Column(name="RESULTCODE", nullable=true) - -/** -* Codigo de resultado de ejecucion de la transaccion -*/ -private String resultcode; - -@Column(name="RESULTMESSAGE", nullable=true) - -/** -* Texto de resultado de la ejecucion de la tarea calendarizada. -*/ -private String resultmessage; - -/**Contructor por defecto*/ -public TgeneScheduleLog(){ -} -/**Contructor de TgeneScheduleLog -@param pPk Clave Primaria del entity -*/ -public TgeneScheduleLog(TgeneScheduleLogKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneScheduleLog -*/ -public static TgeneScheduleLog find(EntityManager pEntityManager,TgeneScheduleLogKey pKey) throws Exception{ - TgeneScheduleLog obj = pEntityManager.find(TgeneScheduleLog.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneScheduleLog -@return El objeto que referencia a la Clave primaria de TgeneScheduleLog -*/ -public TgeneScheduleLogKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneScheduleLog -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneScheduleLog -*/ -public void setPk(TgeneScheduleLogKey pPk){ - pk=pPk; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de processdate -@return valor de processdate*/ -public Date getProcessdate(){ - return processdate; -} -/**Fija el valor de processdate -@param pProcessdate nuevo Valor de processdate*/ -public void setProcessdate(Date pProcessdate){ - processdate=pProcessdate; -} - -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de resultmessage -@return valor de resultmessage*/ -public String getResultmessage(){ - return resultmessage; -} -/**Fija el valor de resultmessage -@param pResultmessage nuevo Valor de resultmessage*/ -public void setResultmessage(String pResultmessage){ - resultmessage=pResultmessage; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneScheduleLog))return false; - TgeneScheduleLog that = (TgeneScheduleLog) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneScheduleLog -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneScheduleLog -*/ -public Object createInstance(){ - TgeneScheduleLog instance=new TgeneScheduleLog(); - instance.setPk(new TgeneScheduleLogKey()); - return instance; -} -/**Clona la entidad TgeneScheduleLog -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneScheduleLog p=(TgeneScheduleLog)this.clone(); - p.setPk((TgeneScheduleLogKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLogKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLogKey.java.svn-base deleted file mode 100644 index c8a81ed..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleLogKey.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.persistence.pgeneral.schedule; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESCHEDULELOG*/ -@Embeddable -public class TgeneScheduleLogKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="EVENTCODE", nullable=false,updatable=false) - -/** -* Codigo de evento -*/ -private String eventcode; - -@Column(name="REALDATE", nullable=false,updatable=false) - -/** -* Fecha real de ejecucion de una tarea calensarizada. -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TgeneScheduleLogKey(){} -/**Contructor de TgeneScheduleLogKey -@param pEventcode Codigo de evento -@param pRealdate Fecha real de ejecucion de una tarea calensarizada. -*/ -public TgeneScheduleLogKey(String pEventcode,Timestamp pRealdate){ - eventcode=pEventcode; - realdate=pRealdate; -} -/**Obtiene el valor de eventcode -@return valor de eventcode*/ -public String getEventcode(){ - return eventcode; -} -/**Fija el valor de eventcode -@param pEventcode nuevo Valor de eventcode*/ -public void setEventcode(String pEventcode){ - eventcode=pEventcode; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacin de la comparacin de TgeneScheduleLogKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneScheduleLogKey))return false; - TgeneScheduleLogKey that = (TgeneScheduleLogKey) o; - if (this.getEventcode() == null || that.getEventcode() == null){ - return false; - } - if (! this.getEventcode().equals(that.getEventcode())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneScheduleLogKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getEventcode() == null ? 0 : this.getEventcode().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleParameters.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleParameters.java.svn-base deleted file mode 100644 index 67f84e1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleParameters.java.svn-base +++ /dev/null @@ -1,228 +0,0 @@ -package com.fp.persistence.pgeneral.schedule; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENSCHEDULEPARAMETERS*/ -@Entity(name="TgeneScheduleParameters") -@Table(name="TGENSCHEDULEPARAMETERS") -public class TgeneScheduleParameters extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneScheduleParameters -*/ -@Id -@Column(name="COMPANYCODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="CHANNELCODE", nullable=true) - -/** -* Codigo de canal. -*/ -private String channelcode; - -@Column(name="TERMINALCODE", nullable=true) - -/** -* Codigo de terminal -*/ -private String terminalcode; - -@Column(name="AREACODE", nullable=true) - -/** -* Codigo de area -*/ -private Integer areacode; - -/**Contructor por defecto*/ -public TgeneScheduleParameters(){ -} -/**Contructor de TgeneScheduleParameters -@param pPk Clave Primaria del entity -*/ -public TgeneScheduleParameters(Integer pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneScheduleParameters -*/ -public static TgeneScheduleParameters find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneScheduleParameters obj = pEntityManager.find(TgeneScheduleParameters.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneScheduleParameters -@return El objeto que referencia a la Clave primaria de TgeneScheduleParameters -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneScheduleParameters -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneScheduleParameters -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de channelcode -@return valor de channelcode*/ -public String getChannelcode(){ - return channelcode; -} -/**Fija el valor de channelcode -@param pChannelcode nuevo Valor de channelcode*/ -public void setChannelcode(String pChannelcode){ - channelcode=pChannelcode; -} - -/**Obtiene el valor de terminalcode -@return valor de terminalcode*/ -public String getTerminalcode(){ - return terminalcode; -} -/**Fija el valor de terminalcode -@param pTerminalcode nuevo Valor de terminalcode*/ -public void setTerminalcode(String pTerminalcode){ - terminalcode=pTerminalcode; -} - -/**Obtiene el valor de areacode -@return valor de areacode*/ -public Integer getAreacode(){ - return areacode; -} -/**Fija el valor de areacode -@param pAreacode nuevo Valor de areacode*/ -public void setAreacode(Integer pAreacode){ - areacode=pAreacode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneScheduleParameters))return false; - TgeneScheduleParameters that = (TgeneScheduleParameters) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneScheduleParameters -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneScheduleParameters -*/ -public Object createInstance(){ - TgeneScheduleParameters instance=new TgeneScheduleParameters(); - return instance; -} -/**Clona la entidad TgeneScheduleParameters -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneScheduleParameters p=(TgeneScheduleParameters)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleProcess.java.svn-base deleted file mode 100644 index a0e1984..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/schedule/.svn/text-base/TgeneScheduleProcess.java.svn-base +++ /dev/null @@ -1,228 +0,0 @@ -package com.fp.persistence.pgeneral.schedule; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCHEDULEPROCESS*/ -@Entity(name="TgeneScheduleProcess") -@Table(name="TGENESCHEDULEPROCESS") -public class TgeneScheduleProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneScheduleProcess -*/ -@Id -@Column(name="EVENTCODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Column(name="TRANSACTIONMODULE", nullable=true) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=true) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=true) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneScheduleProcess(){ -} -/**Contructor de TgeneScheduleProcess -@param pPk Clave Primaria del entity -*/ -public TgeneScheduleProcess(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneScheduleProcess -*/ -public static TgeneScheduleProcess find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneScheduleProcess obj = pEntityManager.find(TgeneScheduleProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneScheduleProcess -@return El objeto que referencia a la Clave primaria de TgeneScheduleProcess -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneScheduleProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneScheduleProcess -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneScheduleProcess))return false; - TgeneScheduleProcess that = (TgeneScheduleProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneScheduleProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneScheduleProcess -*/ -public Object createInstance(){ - TgeneScheduleProcess instance=new TgeneScheduleProcess(); - return instance; -} -/**Clona la entidad TgeneScheduleProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneScheduleProcess p=(TgeneScheduleProcess)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/entries deleted file mode 100644 index 3346cac..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/entries +++ /dev/null @@ -1,606 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneScoreFileIssuesKey.java -file - - - - -2022-07-28T03:40:30.084748Z -5d66eb9ad1b42dc32d21e178239d8db0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5667 - -TgeneScoreAdjustmentKey.java -file - - - - -2022-07-28T03:40:30.084748Z -5ad378e8c871ccec443041a75fa2f70c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5118 - -TgeneAccountScoreJournal.java -file - - - - -2022-07-28T03:40:30.084748Z -9cde19166d94dada8314a21ca4069b60 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -16648 - -TgeneScoreHeader.java -file - - - - -2022-07-28T03:40:30.085748Z -007a98e9369668af41ff1af426f0ec28 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6523 - -TgeneAccountScoreDetailKey.java -file - - - - -2022-07-28T03:40:30.085748Z -d0c8f5e0c6ddc537796092842e9fbd0e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4239 - -TgeneScoreRank.java -file - - - - -2022-07-28T03:40:30.085748Z -2da7a7992d41618769427ecb2107bd4d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8516 - -TgeneAccountScore.java -file - - - - -2022-07-28T03:40:30.086748Z -418e3b737cfa8f01941fc93ac58931bf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -26062 - -TgenePercentScore.java -file - - - - -2022-07-28T03:40:30.086748Z -74e1f70913c2462a305a6dcc225e4a72 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6515 - -TgeneAccountScoreJournalKey.java -file - - - - -2022-07-28T03:40:30.086748Z -9d4ec486a9b4b36634704667e2e86d6d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4371 - -TgeneScoreHeaderKey.java -file - - - - -2022-07-28T03:40:30.086748Z -a5bc069346775ede7adafd9da52d317a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3485 - -TgeneScoreRankKey.java -file - - - - -2022-07-28T03:40:30.087748Z -7404b21c3e7b835aef7875793ecef035 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6152 - -TgeneAccountScoreKey.java -file - - - - -2022-07-28T03:40:30.087748Z -d47cb64215b5a925ac7458d02e40f29c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4179 - -TgenePercentScoreKey.java -file - - - - -2022-07-28T03:40:30.087748Z -30f6bd4d4f8edae5663623ce739f52c7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4443 - -TgeneScoreFileIssues.java -file - - - - -2022-07-28T03:40:30.087748Z -075a1bf7bb1228759e1aff10a118b48e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5304 - -TgeneScoreAdjustment.java -file - - - - -2022-07-28T03:40:30.088748Z -d0d66e4dde68486fdf5a965dbce736fa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -15975 - -TgeneScore.java -file - - - - -2022-07-28T03:40:30.088748Z -31ff043815c4af4ca18252e0098e85ce -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4113 - -TgeneAccountScoreDetail.java -file - - - - -2022-07-28T03:40:30.088748Z -a656aa7637a515a19a22dc94ab88f328 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -10228 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScore.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScore.java.svn-base deleted file mode 100644 index 3e997ca..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScore.java.svn-base +++ /dev/null @@ -1,857 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTSCORE */ -@Entity(name = "TgeneAccountScore") -@Table(name = "TGENEACCOUNTSCORE") -public class TgeneAccountScore extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneAccountScore - */ - @EmbeddedId - private TgeneAccountScoreKey pk; - - @Column(name = "OPERATIONSTATUS", nullable = true) - /** - * Codigo de estatus de la operacion con el que se realiza la calificacion, ORI (Original), REF (refinanciada), RES (restructurada) - */ - private String operationstatus; - - @Column(name = "MODULECODE", nullable = true) - /** - * Codigo de modulo - */ - private String modulecode; - - @Column(name = "PRODUCTCODE", nullable = true) - /** - * Codigo de producto - */ - private String productcode; - - @Column(name = "SUBPRODUCTCODE", nullable = true) - /** - * Codigo de subproducto - */ - private String subproductcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "CREDITTYPECODE", nullable = true) - /** - * Codigo de tipo de credito - */ - private String credittypecode; - - @Column(name = "STATUSCODE", nullable = true) - /** - * Estatus de cuenta - */ - private String statuscode; - - @Column(name = "USERCODE", nullable = true) - /** - * Codigo de usuario - */ - private String usercode; - - @Column(name = "AMOUNT", nullable = true) - /** - * Monto base sobre el que se realiza la provision - */ - private BigDecimal amount; - - @Column(name = "SCORE", nullable = true) - /** - * Codigo de calificacion actual del prestamo. Proceso automatico. - */ - private String score; - - @Column(name = "PROVISIONPERCENT", nullable = true) - /** - * Porcentaje de provision constituido.Proceso automatico. - */ - private BigDecimal provisionpercent; - - @Column(name = "PROVISIONVALUE", nullable = true) - /** - * Saldo de provision de la cuentaProceso automatico. - */ - private BigDecimal provisionvalue; - - @Column(name = "MANUALSCORE", nullable = true) - /** - * Codigo de calificacion actual del prestamo. Calificacion manual o por medio del archivo. - */ - private String manualscore; - - @Column(name = "MANUALPROVISIONPERCENT", nullable = true) - /** - * Porcentaje de provision constituido.Calificacion manual o por medio del archivo. - */ - private BigDecimal manualprovisionpercent; - - @Column(name = "MANUALPROVISIONVALUE", nullable = true) - /** - * Saldo de provision de la cuenta.Calificacion manual o por medio del archivo. - */ - private BigDecimal manualprovisionvalue; - - @Column(name = "FINALSCORE", nullable = true) - /** - * Codigo de calificacion actual del prestamo.Calificacion final y homologada. - */ - private String finalscore; - - @Column(name = "FINALPROVISIONPERCENT", nullable = true) - /** - * Porcentaje de provision constituido.Calificacion final y homologada. - */ - private BigDecimal finalprovisionpercent; - - @Column(name = "FINALPROVISIONVALUE", nullable = true) - /** - * Saldo de provision de la cuenta.Calificacion final y homologada. - */ - private BigDecimal finalprovisionvalue; - - @Column(name = "PREVIOUSSCORE", nullable = true) - /** - * Codigo de calificacion actual del prestamo.Calificacion final y homologada del periodo anterior - */ - private String previousscore; - - @Column(name = "PREVIOUSPROVISIONPERCENT", nullable = true) - /** - * Porcentaje de provision constituido.Calificacion final y homologada del periodo anterior - */ - private BigDecimal previousprovisionpercent; - - @Column(name = "PREVIOUSPROVISIONVALUE", nullable = true) - /** - * Saldo de provision de la cuent.Calificacion final y homologada del periodo anterior - */ - private BigDecimal previousprovisionvalue; - - @Column(name = "EXPIRATIONDATE", nullable = true) - /** - * Fecha de vencimiento de la menor cuota no pagada - */ - private Date expirationdate; - - @Column(name = "ISCOMPUTEDSCORE", nullable = true) - /** - * N Indica que la calificacion se creo al crear la cuenta, Y Indica que es una calificacion a reportar a un organismo de control - */ - private String iscomputedscore; - - @Column(name = "JOURNALID", nullable = false) - /** - * Numero de movimiento - */ - private String journalid; - - /** Contructor por defecto */ - public TgeneAccountScore() { - } - - /** - * Contructor de TgeneAccountScore - * - * @param pPk Clave Primaria del entity - * @param pJournalid Numero de movimiento - */ - public TgeneAccountScore(TgeneAccountScoreKey pPk, String pJournalid) { - this(); - this.pk = pPk; - this.journalid = pJournalid; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneAccountScore - */ - public static TgeneAccountScore find(EntityManager pEntityManager, TgeneAccountScoreKey pKey) throws Exception { - TgeneAccountScore obj = pEntityManager.find(TgeneAccountScore.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneAccountScore - * - * @return El objeto que referencia a la Clave primaria de TgeneAccountScore - */ - public TgeneAccountScoreKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneAccountScore - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountScore - */ - public void setPk(TgeneAccountScoreKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de operationstatus - * - * @return valor de operationstatus - */ - public String getOperationstatus() { - return this.operationstatus; - } - - /** - * Fija el valor de operationstatus - * - * @param pOperationstatus nuevo Valor de operationstatus - */ - public void setOperationstatus(String pOperationstatus) { - this.operationstatus = pOperationstatus; - } - - /** - * Obtiene el valor de modulecode - * - * @return valor de modulecode - */ - public String getModulecode() { - return this.modulecode; - } - - /** - * Fija el valor de modulecode - * - * @param pModulecode nuevo Valor de modulecode - */ - public void setModulecode(String pModulecode) { - this.modulecode = pModulecode; - } - - /** - * Obtiene el valor de productcode - * - * @return valor de productcode - */ - public String getProductcode() { - return this.productcode; - } - - /** - * Fija el valor de productcode - * - * @param pProductcode nuevo Valor de productcode - */ - public void setProductcode(String pProductcode) { - this.productcode = pProductcode; - } - - /** - * Obtiene el valor de subproductcode - * - * @return valor de subproductcode - */ - public String getSubproductcode() { - return this.subproductcode; - } - - /** - * Fija el valor de subproductcode - * - * @param pSubproductcode nuevo Valor de subproductcode - */ - public void setSubproductcode(String pSubproductcode) { - this.subproductcode = pSubproductcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de credittypecode - * - * @return valor de credittypecode - */ - public String getCredittypecode() { - return this.credittypecode; - } - - /** - * Fija el valor de credittypecode - * - * @param pCredittypecode nuevo Valor de credittypecode - */ - public void setCredittypecode(String pCredittypecode) { - this.credittypecode = pCredittypecode; - } - - /** - * Obtiene el valor de statuscode - * - * @return valor de statuscode - */ - public String getStatuscode() { - return this.statuscode; - } - - /** - * Fija el valor de statuscode - * - * @param pStatuscode nuevo Valor de statuscode - */ - public void setStatuscode(String pStatuscode) { - this.statuscode = pStatuscode; - } - - /** - * Obtiene el valor de usercode - * - * @return valor de usercode - */ - public String getUsercode() { - return this.usercode; - } - - /** - * Fija el valor de usercode - * - * @param pUsercode nuevo Valor de usercode - */ - public void setUsercode(String pUsercode) { - this.usercode = pUsercode; - } - - /** - * Obtiene el valor de amount - * - * @return valor de amount - */ - public BigDecimal getAmount() { - return this.amount; - } - - /** - * Fija el valor de amount - * - * @param pAmount nuevo Valor de amount - */ - public void setAmount(BigDecimal pAmount) { - this.amount = pAmount; - } - - /** - * Obtiene el valor de score - * - * @return valor de score - */ - public String getScore() { - return this.score; - } - - /** - * Fija el valor de score - * - * @param pScore nuevo Valor de score - */ - public void setScore(String pScore) { - this.score = pScore; - } - - /** - * Obtiene el valor de provisionpercent - * - * @return valor de provisionpercent - */ - public BigDecimal getProvisionpercent() { - return this.provisionpercent; - } - - /** - * Fija el valor de provisionpercent - * - * @param pProvisionpercent nuevo Valor de provisionpercent - */ - public void setProvisionpercent(BigDecimal pProvisionpercent) { - this.provisionpercent = pProvisionpercent; - } - - /** - * Obtiene el valor de provisionvalue - * - * @return valor de provisionvalue - */ - public BigDecimal getProvisionvalue() { - return this.provisionvalue; - } - - /** - * Fija el valor de provisionvalue - * - * @param pProvisionvalue nuevo Valor de provisionvalue - */ - public void setProvisionvalue(BigDecimal pProvisionvalue) { - this.provisionvalue = pProvisionvalue; - } - - /** - * Obtiene el valor de manualscore - * - * @return valor de manualscore - */ - public String getManualscore() { - return this.manualscore; - } - - /** - * Fija el valor de manualscore - * - * @param pManualscore nuevo Valor de manualscore - */ - public void setManualscore(String pManualscore) { - this.manualscore = pManualscore; - } - - /** - * Obtiene el valor de manualprovisionpercent - * - * @return valor de manualprovisionpercent - */ - public BigDecimal getManualprovisionpercent() { - return this.manualprovisionpercent; - } - - /** - * Fija el valor de manualprovisionpercent - * - * @param pManualprovisionpercent nuevo Valor de manualprovisionpercent - */ - public void setManualprovisionpercent(BigDecimal pManualprovisionpercent) { - this.manualprovisionpercent = pManualprovisionpercent; - } - - /** - * Obtiene el valor de manualprovisionvalue - * - * @return valor de manualprovisionvalue - */ - public BigDecimal getManualprovisionvalue() { - return this.manualprovisionvalue; - } - - /** - * Fija el valor de manualprovisionvalue - * - * @param pManualprovisionvalue nuevo Valor de manualprovisionvalue - */ - public void setManualprovisionvalue(BigDecimal pManualprovisionvalue) { - this.manualprovisionvalue = pManualprovisionvalue; - } - - /** - * Obtiene el valor de finalscore - * - * @return valor de finalscore - */ - public String getFinalscore() { - return this.finalscore; - } - - /** - * Fija el valor de finalscore - * - * @param pFinalscore nuevo Valor de finalscore - */ - public void setFinalscore(String pFinalscore) { - this.finalscore = pFinalscore; - } - - /** - * Obtiene el valor de finalprovisionpercent - * - * @return valor de finalprovisionpercent - */ - public BigDecimal getFinalprovisionpercent() { - return this.finalprovisionpercent; - } - - /** - * Fija el valor de finalprovisionpercent - * - * @param pFinalprovisionpercent nuevo Valor de finalprovisionpercent - */ - public void setFinalprovisionpercent(BigDecimal pFinalprovisionpercent) { - this.finalprovisionpercent = pFinalprovisionpercent; - } - - /** - * Obtiene el valor de finalprovisionvalue - * - * @return valor de finalprovisionvalue - */ - public BigDecimal getFinalprovisionvalue() { - return this.finalprovisionvalue; - } - - /** - * Fija el valor de finalprovisionvalue - * - * @param pFinalprovisionvalue nuevo Valor de finalprovisionvalue - */ - public void setFinalprovisionvalue(BigDecimal pFinalprovisionvalue) { - this.finalprovisionvalue = pFinalprovisionvalue; - } - - /** - * Obtiene el valor de previousscore - * - * @return valor de previousscore - */ - public String getPreviousscore() { - return this.previousscore; - } - - /** - * Fija el valor de previousscore - * - * @param pPreviousscore nuevo Valor de previousscore - */ - public void setPreviousscore(String pPreviousscore) { - this.previousscore = pPreviousscore; - } - - /** - * Obtiene el valor de previousprovisionpercent - * - * @return valor de previousprovisionpercent - */ - public BigDecimal getPreviousprovisionpercent() { - return this.previousprovisionpercent; - } - - /** - * Fija el valor de previousprovisionpercent - * - * @param pPreviousprovisionpercent nuevo Valor de previousprovisionpercent - */ - public void setPreviousprovisionpercent(BigDecimal pPreviousprovisionpercent) { - this.previousprovisionpercent = pPreviousprovisionpercent; - } - - /** - * Obtiene el valor de previousprovisionvalue - * - * @return valor de previousprovisionvalue - */ - public BigDecimal getPreviousprovisionvalue() { - return this.previousprovisionvalue; - } - - /** - * Fija el valor de previousprovisionvalue - * - * @param pPreviousprovisionvalue nuevo Valor de previousprovisionvalue - */ - public void setPreviousprovisionvalue(BigDecimal pPreviousprovisionvalue) { - this.previousprovisionvalue = pPreviousprovisionvalue; - } - - /** - * Obtiene el valor de expirationdate - * - * @return valor de expirationdate - */ - public Date getExpirationdate() { - return this.expirationdate; - } - - /** - * Fija el valor de expirationdate - * - * @param pExpirationdate nuevo Valor de expirationdate - */ - public void setExpirationdate(Date pExpirationdate) { - this.expirationdate = pExpirationdate; - } - - /** - * Obtiene el valor de iscomputedscore - * - * @return valor de iscomputedscore - */ - public String getIscomputedscore() { - return this.iscomputedscore; - } - - /** - * Fija el valor de iscomputedscore - * - * @param pIscomputedscore nuevo Valor de iscomputedscore - */ - public void setIscomputedscore(String pIscomputedscore) { - this.iscomputedscore = pIscomputedscore; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneAccountScore)) { - return false; - } - TgeneAccountScore that = (TgeneAccountScore) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return this.getPk().equals(that.getPk()); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneAccountScore - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneAccountScore */ - @Override - public Object createInstance() { - TgeneAccountScore instance = new TgeneAccountScore(); - instance.setPk(new TgeneAccountScoreKey()); - return instance; - } - - /** - * Clona la entidad TgeneAccountScore - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneAccountScore p = (TgeneAccountScore) this.clone(); - p.setPk((TgeneAccountScoreKey) this.pk.cloneMe()); - return p; - } - - /* Mtodos manuales */ - - /** Sentencia para seleccionar la ultima calificacin de una cuenta */ - private static final String JPQL_LAST_SCORE = " select t from TgeneAccountScore t " + " where t.pk.account = :account " - + " and t.pk.company = :company " + " and t.modulecode = :modulecode " + " and t.pk.scoredate = ( " - + " select max(t.pk.scoredate) from TgeneAccountScore t " + " where t.pk.account = :account " + " and t.pk.company = :company " - + " and t.modulecode = :modulecode " + " and t.iscomputedscore = 'Y' " + " group by t.pk.account )"; - - /** - * Mtodo que selecciona la ultima calificacin de una cuenta - * - * @param entityManager - * @param pAccount - * @param pCompany - * @param pModulecode - * @return - * @throws Exception - */ - public static TgeneAccountScore getLastScore(EntityManager entityManager, String pAccount, Integer pCompany, String pModulecode) throws Exception { - Query qry = entityManager.createQuery(TgeneAccountScore.JPQL_LAST_SCORE); - qry.setParameter("account", pAccount); - qry.setParameter("company", pCompany); - qry.setParameter("modulecode", pModulecode); - - try { - return (TgeneAccountScore) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - // Metodos personalizados - - // select * from tgeneaccountscore where account = 1 and companycode =1; - - private static final String JPQL_FIND_BY_ACCOUNT = "" + " from TgeneAccountScore tga " + "where tga.pk.account = :account " - + " and tga.pk.company = :company"; - - /** - * Permite consultar el registro asociado a la cuenta - * - * @param entityManager Administrador de entidades y persistencia - * @param account String con la cuenta a consultar - * @param company int con la empresa asociada a la cuenta - * @return Registro TgeneAccountScore - * @throws Exception - */ - public static TgeneAccountScore findByAccount(EntityManager entityManager, String account, int company) { - Query qry = entityManager.createQuery(TgeneAccountScore.JPQL_FIND_BY_ACCOUNT); - qry.setParameter("account", account); - qry.setParameter("company", company); - return (TgeneAccountScore) qry.getSingleResult(); - } - - private static final String JPQL_FIND_WORST_SCORE_CONSTRUCTOR = "" - + " from TGENEACCOUNTSCORE " - + " where account in (select LOANACCOUNT " - + " from TCREDITFACILITYDETAILLOAN cf " - + " where ACCOUNT in (select ACCOUNT from TCREDITFACILITYDETAILLOAN where LOANACCOUNT = :account and COMPANY = :company)) " - + " and score in (select max(SCORE) " - + " from TGENEACCOUNTSCORE " - + " where account in (select LOANACCOUNT " - + " from TCREDITFACILITYDETAILLOAN cf " - + " where ACCOUNT in (select ACCOUNT from TCREDITFACILITYDETAILLOAN where LOANACCOUNT = :account and COMPANY = :company))) "; - - @SuppressWarnings("unchecked") - public static List findByWorstScore(EntityManager entityManager, String account, int company, boolean isConstructor) { - Query qry = entityManager.createQuery(TgeneAccountScore.JPQL_FIND_WORST_SCORE_CONSTRUCTOR); - qry.setParameter("account", account); - qry.setParameter("company", company); - qry.setMaxResults(1); - return qry.getResultList(); - } - - private static final String JPQL_FIND_WORST_SCORE = "" + "select score.* " + " from tgeneaccountscore score inner join TGENEACCOUNT aco1 " - + " on score.account = aco1.account " + " and score.company = aco1.company " + " and score.modulecode = aco1.modulecode " - + " inner join TGENEACCOUNT aco2 " + " on aco1.PERSONCODE = aco2.personcode " + " and aco1.COMPANY = aco2.COMPANY " - + " and aco1.DATETO = aco2.DATETO " + " and aco2.account = :account " + " and aco1.MODULECODE = aco2.MODULECODE " - + " and aco1.PRODUCTCODE = aco2.PRODUCTCODE " + " and aco2.DATETO = aco1.DATETO " + " and aco2.DATETO = TO_DATE('31/12/2999') " - + " and aco2.company = :company " + " order by score.finalscore desc"; - - @SuppressWarnings("unchecked") - public static TgeneAccountScore findByWorstScore(EntityManager entityManager, String account, int company) { - Query qry = entityManager.createQuery(TgeneAccountScore.JPQL_FIND_WORST_SCORE); - qry.setParameter("account", account); - qry.setParameter("company", company); - qry.setMaxResults(1); - List objresultado = qry.getResultList(); - if (objresultado.size() == 1) { - return objresultado.get(0); - } else { - return new TgeneAccountScore(); - } - } - - private final static String JPQL_ACCOUNT_SCORE = " from TgeneAccountScore tls where " - + "tls.pk.account IN (:accountList) and tls.score IN (:scoreList)"; - - /** - * Permite obtener la cuentas de prestamo que esten en estado vigente y que ademas tengan el score necesario para - * reestructuracion - * - * @param entityManager Administrador de persistencia y entidades - * @param accountList Lista de {@link String} con las cuentas a validar - * @param scoreList Lista de {@link String} con los puntajes a validar - * @return lista de datos {@link TloanAccountScore } con los valores de la operacion - */ - @SuppressWarnings("unchecked") - public static List findAccountsByScore(EntityManager entityManager, List accountList, List scoreList) { - Query qry = entityManager.createQuery(TgeneAccountScore.JPQL_ACCOUNT_SCORE); - qry.setParameter("accountList", accountList); - qry.setParameter("scoreList", scoreList); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetail.java.svn-base deleted file mode 100644 index 24fa976..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetail.java.svn-base +++ /dev/null @@ -1,339 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TLOANACCOUNTSCOREDETAIL*/ -@Entity(name="TgeneAccountScoreDetail") -@Table(name="TLOANACCOUNTSCOREDETAIL") -public class TgeneAccountScoreDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountScoreDetail -*/ -@EmbeddedId -private TgeneAccountScoreDetailKey pk; -@Column(name="PRINCIPALSUSPEND", nullable=true) - -/** -* null -*/ -private BigDecimal principalsuspend; - -@Column(name="PRINCIPALPUNISHED", nullable=true) - -/** -* null -*/ -private String principalpunished; - -@Column(name="PRINCIPALJUDIAL", nullable=true) - -/** -* null -*/ -private String principaljudial; - -@Column(name="MORTGAGEWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal mortgagewarranties; - -@Column(name="APPRAISALMORTGAGEWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal appraisalmortgagewarranties; - -@Column(name="FULFILMENMORTGAGEWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal fulfilmenmortgagewarranties; - -@Column(name="BANKWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal bankwarranties; - -@Column(name="APPRAISALBANKWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal appraisalbankwarranties; - -@Column(name="FULFILMENBANKWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal fulfilmenbankwarranties; - -@Column(name="POLICYWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal policywarranties; - -@Column(name="APPRAISALPOLICYWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal appraisalpolicywarranties; - -@Column(name="FULFILMENPOLICYWARRANTIES", nullable=true) - -/** -* null -*/ -private BigDecimal fulfilmenpolicywarranties; - -/**Contructor por defecto*/ -public TgeneAccountScoreDetail(){ -} -/**Contructor de TgeneAccountScoreDetail -@param pPk Clave Primaria del entity -*/ -public TgeneAccountScoreDetail(TgeneAccountScoreDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountScoreDetail -*/ -public static TgeneAccountScoreDetail find(EntityManager pEntityManager,TgeneAccountScoreDetailKey pKey) throws Exception{ - TgeneAccountScoreDetail obj = pEntityManager.find(TgeneAccountScoreDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountScoreDetail -@return El objeto que referencia a la Clave primaria de TgeneAccountScoreDetail -*/ -public TgeneAccountScoreDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountScoreDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountScoreDetail -*/ -public void setPk(TgeneAccountScoreDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de principalsuspend -@return valor de principalsuspend*/ -public BigDecimal getPrincipalsuspend(){ - return principalsuspend; -} -/**Fija el valor de principalsuspend -@param pPrincipalsuspend nuevo Valor de principalsuspend*/ -public void setPrincipalsuspend(BigDecimal pPrincipalsuspend){ - principalsuspend=pPrincipalsuspend; -} - -/**Obtiene el valor de principalpunished -@return valor de principalpunished*/ -public String getPrincipalpunished(){ - return principalpunished; -} -/**Fija el valor de principalpunished -@param pPrincipalpunished nuevo Valor de principalpunished*/ -public void setPrincipalpunished(String pPrincipalpunished){ - principalpunished=pPrincipalpunished; -} - -/**Obtiene el valor de principaljudial -@return valor de principaljudial*/ -public String getPrincipaljudial(){ - return principaljudial; -} -/**Fija el valor de principaljudial -@param pPrincipaljudial nuevo Valor de principaljudial*/ -public void setPrincipaljudial(String pPrincipaljudial){ - principaljudial=pPrincipaljudial; -} - -/**Obtiene el valor de mortgagewarranties -@return valor de mortgagewarranties*/ -public BigDecimal getMortgagewarranties(){ - return mortgagewarranties; -} -/**Fija el valor de mortgagewarranties -@param pMortgagewarranties nuevo Valor de mortgagewarranties*/ -public void setMortgagewarranties(BigDecimal pMortgagewarranties){ - mortgagewarranties=pMortgagewarranties; -} - -/**Obtiene el valor de appraisalmortgagewarranties -@return valor de appraisalmortgagewarranties*/ -public BigDecimal getAppraisalmortgagewarranties(){ - return appraisalmortgagewarranties; -} -/**Fija el valor de appraisalmortgagewarranties -@param pAppraisalmortgagewarranties nuevo Valor de appraisalmortgagewarranties*/ -public void setAppraisalmortgagewarranties(BigDecimal pAppraisalmortgagewarranties){ - appraisalmortgagewarranties=pAppraisalmortgagewarranties; -} - -/**Obtiene el valor de fulfilmenmortgagewarranties -@return valor de fulfilmenmortgagewarranties*/ -public BigDecimal getFulfilmenmortgagewarranties(){ - return fulfilmenmortgagewarranties; -} -/**Fija el valor de fulfilmenmortgagewarranties -@param pFulfilmenmortgagewarranties nuevo Valor de fulfilmenmortgagewarranties*/ -public void setFulfilmenmortgagewarranties(BigDecimal pFulfilmenmortgagewarranties){ - fulfilmenmortgagewarranties=pFulfilmenmortgagewarranties; -} - -/**Obtiene el valor de bankwarranties -@return valor de bankwarranties*/ -public BigDecimal getBankwarranties(){ - return bankwarranties; -} -/**Fija el valor de bankwarranties -@param pBankwarranties nuevo Valor de bankwarranties*/ -public void setBankwarranties(BigDecimal pBankwarranties){ - bankwarranties=pBankwarranties; -} - -/**Obtiene el valor de appraisalbankwarranties -@return valor de appraisalbankwarranties*/ -public BigDecimal getAppraisalbankwarranties(){ - return appraisalbankwarranties; -} -/**Fija el valor de appraisalbankwarranties -@param pAppraisalbankwarranties nuevo Valor de appraisalbankwarranties*/ -public void setAppraisalbankwarranties(BigDecimal pAppraisalbankwarranties){ - appraisalbankwarranties=pAppraisalbankwarranties; -} - -/**Obtiene el valor de fulfilmenbankwarranties -@return valor de fulfilmenbankwarranties*/ -public BigDecimal getFulfilmenbankwarranties(){ - return fulfilmenbankwarranties; -} -/**Fija el valor de fulfilmenbankwarranties -@param pFulfilmenbankwarranties nuevo Valor de fulfilmenbankwarranties*/ -public void setFulfilmenbankwarranties(BigDecimal pFulfilmenbankwarranties){ - fulfilmenbankwarranties=pFulfilmenbankwarranties; -} - -/**Obtiene el valor de policywarranties -@return valor de policywarranties*/ -public BigDecimal getPolicywarranties(){ - return policywarranties; -} -/**Fija el valor de policywarranties -@param pPolicywarranties nuevo Valor de policywarranties*/ -public void setPolicywarranties(BigDecimal pPolicywarranties){ - policywarranties=pPolicywarranties; -} - -/**Obtiene el valor de appraisalpolicywarranties -@return valor de appraisalpolicywarranties*/ -public BigDecimal getAppraisalpolicywarranties(){ - return appraisalpolicywarranties; -} -/**Fija el valor de appraisalpolicywarranties -@param pAppraisalpolicywarranties nuevo Valor de appraisalpolicywarranties*/ -public void setAppraisalpolicywarranties(BigDecimal pAppraisalpolicywarranties){ - appraisalpolicywarranties=pAppraisalpolicywarranties; -} - -/**Obtiene el valor de fulfilmenpolicywarranties -@return valor de fulfilmenpolicywarranties*/ -public BigDecimal getFulfilmenpolicywarranties(){ - return fulfilmenpolicywarranties; -} -/**Fija el valor de fulfilmenpolicywarranties -@param pFulfilmenpolicywarranties nuevo Valor de fulfilmenpolicywarranties*/ -public void setFulfilmenpolicywarranties(BigDecimal pFulfilmenpolicywarranties){ - fulfilmenpolicywarranties=pFulfilmenpolicywarranties; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountScoreDetail))return false; - TgeneAccountScoreDetail that = (TgeneAccountScoreDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneAccountScoreDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneAccountScoreDetail -*/ -public Object createInstance(){ - TgeneAccountScoreDetail instance=new TgeneAccountScoreDetail(); - instance.setPk(new TgeneAccountScoreDetailKey()); - return instance; -} -/**Clona la entidad TgeneAccountScoreDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountScoreDetail p=(TgeneAccountScoreDetail)this.clone(); - p.setPk((TgeneAccountScoreDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetailKey.java.svn-base deleted file mode 100644 index 74bbc68..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreDetailKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TLOANACCOUNTSCOREDETAIL*/ -@Embeddable -public class TgeneAccountScoreDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="SCOREDATE", nullable=false,updatable=false) - -/** -* Fecha de calificacion de la cuenta -*/ -private Date scoredate; - -/**Contructor por defecto*/ -public TgeneAccountScoreDetailKey(){} -/**Contructor de TgeneAccountScoreDetailKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pScoredate Fecha de calificacion de la cuenta -*/ -public TgeneAccountScoreDetailKey(String pAccount,Integer pCompany,Date pScoredate){ - account=pAccount; - company=pCompany; - scoredate=pScoredate; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de scoredate -@return valor de scoredate*/ -public Date getScoredate(){ - return scoredate; -} -/**Fija el valor de scoredate -@param pScoredate nuevo Valor de scoredate*/ -public void setScoredate(Date pScoredate){ - scoredate=pScoredate; -} - -/**Implementacion de la comparacion de TgeneAccountScoreDetailKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountScoreDetailKey))return false; - TgeneAccountScoreDetailKey that = (TgeneAccountScoreDetailKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getScoredate() == null || that.getScoredate() == null){ - return false; - } - if (! this.getScoredate().equals(that.getScoredate())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneAccountScoreDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getScoredate() == null ? 0 : this.getScoredate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournal.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournal.java.svn-base deleted file mode 100644 index c4dd320..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournal.java.svn-base +++ /dev/null @@ -1,616 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEACCOUNTSCOREJOURNAL*/ -@Entity(name="TgeneAccountScoreJournal") -@Table(name="TGENEACCOUNTSCOREJOURNAL") -public class TgeneAccountScoreJournal extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneAccountScoreJournal -*/ -@EmbeddedId -private TgeneAccountScoreJournalKey pk; -@Column(name="PROCESSDESCRIPTION", nullable=true) - -/** -* null -*/ -private String processdescription; - -@Column(name="ACCOUNT", nullable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="SCOREDATE", nullable=false) - -/** -* Fecha de calificacion de la cuenta -*/ -private Date scoredate; - -@Column(name="OPERATIONSTATUS", nullable=true) - -/** -* Codigo de estatus de la operacion con el que se realiza la calificacion, ORI (Original), REF (refinanciada), RES (restructurada) -*/ -private String operationstatus; - -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="PRODUCTCODE", nullable=true) - -/** -* Codigo de producto -*/ -private String productcode; - -@Column(name="SUBPRODUCTCODE", nullable=true) - -/** -* Codigo de subproducto -*/ -private String subproductcode; - -@Column(name="CURRENCYCODE", nullable=true) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="CREDITTYPECODE", nullable=true) - -/** -* Codigo de tipo de credito -*/ -private String credittypecode; - -@Column(name="STATUSCODE", nullable=true) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="AMOUNT", nullable=true) - -/** -* null -*/ -private BigDecimal amount; - -@Column(name="SCORE", nullable=true) - -/** -* Codigo de calificacion actual del prestamo -*/ -private String score; - -@Column(name="PROVISIONPERCENT", nullable=true) - -/** -* Porcentaje de provision constituido. -*/ -private BigDecimal provisionpercent; - -@Column(name="PROVISIONVALUE", nullable=true) - -/** -* Saldo de provision de la cuenta -*/ -private BigDecimal provisionvalue; - -@Column(name="MANUALSCORE", nullable=true) - -/** -* Codigo de calificacion actual del prestamo -*/ -private String manualscore; - -@Column(name="MANUALPROVISIONPERCENT", nullable=true) - -/** -* Porcentaje de provision constituido. -*/ -private BigDecimal manualprovisionpercent; - -@Column(name="MANUALPROVISIONVALUE", nullable=true) - -/** -* Saldo de provision de la cuenta -*/ -private BigDecimal manualprovisionvalue; - -@Column(name="FINALSCORE", nullable=true) - -/** -* Codigo de calificacion actual del prestamo -*/ -private String finalscore; - -@Column(name="FINALPROVISIONPERCENT", nullable=true) - -/** -* Porcentaje de provision constituido. -*/ -private BigDecimal finalprovisionpercent; - -@Column(name="FINALPROVISIONVALUE", nullable=true) - -/** -* Saldo de provision de la cuenta -*/ -private BigDecimal finalprovisionvalue; - -@Column(name="PREVIOUSSCORE", nullable=true) - -/** -* Codigo de calificacion actual del prestamo -*/ -private String previousscore; - -@Column(name="PREVIOUSPROVISIONPERCENT", nullable=true) - -/** -* Porcentaje de provision constituido. -*/ -private BigDecimal previousprovisionpercent; - -@Column(name="PREVIOUSPROVISIONVALUE", nullable=true) - -/** -* Saldo de provision de la cuenta -*/ -private BigDecimal previousprovisionvalue; - -@Column(name="EXPIRATIONDATE", nullable=true) - -/** -* Fecha de vencimiento de la menor cuota no pagada -*/ -private Date expirationdate; - -@Column(name="ISCOMPUTEDSCORE", nullable=true) - -/** -* N Indica que la calificacion se creo al crear la cuenta, Y Indica que es una calificacion a reportar a un organismo de control -*/ -private String iscomputedscore; - -/**Contructor por defecto*/ -public TgeneAccountScoreJournal(){ -} -/**Contructor de TgeneAccountScoreJournal -@param pPk Clave Primaria del entity -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pScoredate Fecha de calificacion de la cuenta -*/ -public TgeneAccountScoreJournal(TgeneAccountScoreJournalKey pPk,String pAccount,Integer pCompany,Date pScoredate){ - this(); - pk=pPk; - account=pAccount; - company=pCompany; - scoredate=pScoredate; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneAccountScoreJournal -*/ -public static TgeneAccountScoreJournal find(EntityManager pEntityManager,TgeneAccountScoreJournalKey pKey) throws Exception{ - TgeneAccountScoreJournal obj = pEntityManager.find(TgeneAccountScoreJournal.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneAccountScoreJournal -@return El objeto que referencia a la Clave primaria de TgeneAccountScoreJournal -*/ -public TgeneAccountScoreJournalKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneAccountScoreJournal -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneAccountScoreJournal -*/ -public void setPk(TgeneAccountScoreJournalKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processdescription -@return valor de processdescription*/ -public String getProcessdescription(){ - return processdescription; -} -/**Fija el valor de processdescription -@param pProcessdescription nuevo Valor de processdescription*/ -public void setProcessdescription(String pProcessdescription){ - processdescription=pProcessdescription; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de scoredate -@return valor de scoredate*/ -public Date getScoredate(){ - return scoredate; -} -/**Fija el valor de scoredate -@param pScoredate nuevo Valor de scoredate*/ -public void setScoredate(Date pScoredate){ - scoredate=pScoredate; -} - -/**Obtiene el valor de operationstatus -@return valor de operationstatus*/ -public String getOperationstatus(){ - return operationstatus; -} -/**Fija el valor de operationstatus -@param pOperationstatus nuevo Valor de operationstatus*/ -public void setOperationstatus(String pOperationstatus){ - operationstatus=pOperationstatus; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de productcode -@return valor de productcode*/ -public String getProductcode(){ - return productcode; -} -/**Fija el valor de productcode -@param pProductcode nuevo Valor de productcode*/ -public void setProductcode(String pProductcode){ - productcode=pProductcode; -} - -/**Obtiene el valor de subproductcode -@return valor de subproductcode*/ -public String getSubproductcode(){ - return subproductcode; -} -/**Fija el valor de subproductcode -@param pSubproductcode nuevo Valor de subproductcode*/ -public void setSubproductcode(String pSubproductcode){ - subproductcode=pSubproductcode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de credittypecode -@return valor de credittypecode*/ -public String getCredittypecode(){ - return credittypecode; -} -/**Fija el valor de credittypecode -@param pCredittypecode nuevo Valor de credittypecode*/ -public void setCredittypecode(String pCredittypecode){ - credittypecode=pCredittypecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de amount -@return valor de amount*/ -public BigDecimal getAmount(){ - return amount; -} -/**Fija el valor de amount -@param pAmount nuevo Valor de amount*/ -public void setAmount(BigDecimal pAmount){ - amount=pAmount; -} - -/**Obtiene el valor de score -@return valor de score*/ -public String getScore(){ - return score; -} -/**Fija el valor de score -@param pScore nuevo Valor de score*/ -public void setScore(String pScore){ - score=pScore; -} - -/**Obtiene el valor de provisionpercent -@return valor de provisionpercent*/ -public BigDecimal getProvisionpercent(){ - return provisionpercent; -} -/**Fija el valor de provisionpercent -@param pProvisionpercent nuevo Valor de provisionpercent*/ -public void setProvisionpercent(BigDecimal pProvisionpercent){ - provisionpercent=pProvisionpercent; -} - -/**Obtiene el valor de provisionvalue -@return valor de provisionvalue*/ -public BigDecimal getProvisionvalue(){ - return provisionvalue; -} -/**Fija el valor de provisionvalue -@param pProvisionvalue nuevo Valor de provisionvalue*/ -public void setProvisionvalue(BigDecimal pProvisionvalue){ - provisionvalue=pProvisionvalue; -} - -/**Obtiene el valor de manualscore -@return valor de manualscore*/ -public String getManualscore(){ - return manualscore; -} -/**Fija el valor de manualscore -@param pManualscore nuevo Valor de manualscore*/ -public void setManualscore(String pManualscore){ - manualscore=pManualscore; -} - -/**Obtiene el valor de manualprovisionpercent -@return valor de manualprovisionpercent*/ -public BigDecimal getManualprovisionpercent(){ - return manualprovisionpercent; -} -/**Fija el valor de manualprovisionpercent -@param pManualprovisionpercent nuevo Valor de manualprovisionpercent*/ -public void setManualprovisionpercent(BigDecimal pManualprovisionpercent){ - manualprovisionpercent=pManualprovisionpercent; -} - -/**Obtiene el valor de manualprovisionvalue -@return valor de manualprovisionvalue*/ -public BigDecimal getManualprovisionvalue(){ - return manualprovisionvalue; -} -/**Fija el valor de manualprovisionvalue -@param pManualprovisionvalue nuevo Valor de manualprovisionvalue*/ -public void setManualprovisionvalue(BigDecimal pManualprovisionvalue){ - manualprovisionvalue=pManualprovisionvalue; -} - -/**Obtiene el valor de finalscore -@return valor de finalscore*/ -public String getFinalscore(){ - return finalscore; -} -/**Fija el valor de finalscore -@param pFinalscore nuevo Valor de finalscore*/ -public void setFinalscore(String pFinalscore){ - finalscore=pFinalscore; -} - -/**Obtiene el valor de finalprovisionpercent -@return valor de finalprovisionpercent*/ -public BigDecimal getFinalprovisionpercent(){ - return finalprovisionpercent; -} -/**Fija el valor de finalprovisionpercent -@param pFinalprovisionpercent nuevo Valor de finalprovisionpercent*/ -public void setFinalprovisionpercent(BigDecimal pFinalprovisionpercent){ - finalprovisionpercent=pFinalprovisionpercent; -} - -/**Obtiene el valor de finalprovisionvalue -@return valor de finalprovisionvalue*/ -public BigDecimal getFinalprovisionvalue(){ - return finalprovisionvalue; -} -/**Fija el valor de finalprovisionvalue -@param pFinalprovisionvalue nuevo Valor de finalprovisionvalue*/ -public void setFinalprovisionvalue(BigDecimal pFinalprovisionvalue){ - finalprovisionvalue=pFinalprovisionvalue; -} - -/**Obtiene el valor de previousscore -@return valor de previousscore*/ -public String getPreviousscore(){ - return previousscore; -} -/**Fija el valor de previousscore -@param pPreviousscore nuevo Valor de previousscore*/ -public void setPreviousscore(String pPreviousscore){ - previousscore=pPreviousscore; -} - -/**Obtiene el valor de previousprovisionpercent -@return valor de previousprovisionpercent*/ -public BigDecimal getPreviousprovisionpercent(){ - return previousprovisionpercent; -} -/**Fija el valor de previousprovisionpercent -@param pPreviousprovisionpercent nuevo Valor de previousprovisionpercent*/ -public void setPreviousprovisionpercent(BigDecimal pPreviousprovisionpercent){ - previousprovisionpercent=pPreviousprovisionpercent; -} - -/**Obtiene el valor de previousprovisionvalue -@return valor de previousprovisionvalue*/ -public BigDecimal getPreviousprovisionvalue(){ - return previousprovisionvalue; -} -/**Fija el valor de previousprovisionvalue -@param pPreviousprovisionvalue nuevo Valor de previousprovisionvalue*/ -public void setPreviousprovisionvalue(BigDecimal pPreviousprovisionvalue){ - previousprovisionvalue=pPreviousprovisionvalue; -} - -/**Obtiene el valor de expirationdate -@return valor de expirationdate*/ -public Date getExpirationdate(){ - return expirationdate; -} -/**Fija el valor de expirationdate -@param pExpirationdate nuevo Valor de expirationdate*/ -public void setExpirationdate(Date pExpirationdate){ - expirationdate=pExpirationdate; -} - -/**Obtiene el valor de iscomputedscore -@return valor de iscomputedscore*/ -public String getIscomputedscore(){ - return iscomputedscore; -} -/**Fija el valor de iscomputedscore -@param pIscomputedscore nuevo Valor de iscomputedscore*/ -public void setIscomputedscore(String pIscomputedscore){ - iscomputedscore=pIscomputedscore; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneAccountScoreJournal))return false; - TgeneAccountScoreJournal that = (TgeneAccountScoreJournal) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneAccountScoreJournal -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneAccountScoreJournal -*/ -public Object createInstance(){ - TgeneAccountScoreJournal instance=new TgeneAccountScoreJournal(); - instance.setPk(new TgeneAccountScoreJournalKey()); - return instance; -} -/**Clona la entidad TgeneAccountScoreJournal -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneAccountScoreJournal p=(TgeneAccountScoreJournal)this.clone(); - p.setPk((TgeneAccountScoreJournalKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournalKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournalKey.java.svn-base deleted file mode 100644 index 4a89329..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreJournalKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTSCOREJOURNAL*/ -@Embeddable -public class TgeneAccountScoreJournalKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Numero de movimiento -*/ -private String journalid; - -@Column(name="PARTITIONDB", nullable=false,updatable=false) - -/** -* Particion yyyymm anio mas mes de la fecha contable hasta -*/ -private String partitiondb; - -@Column(name="REALDATE", nullable=false,updatable=false) - -/** -* Fecha real -*/ -private Timestamp realdate; - -/**Contructor por defecto*/ -public TgeneAccountScoreJournalKey(){} -/**Contructor de TgeneAccountScoreJournalKey -@param pJournalid Numero de movimiento -@param pPartitiondb Particion yyyymm anio mas mes de la fecha contable hasta -@param pRealdate Fecha real -*/ -public TgeneAccountScoreJournalKey(String pJournalid,String pPartitiondb,Timestamp pRealdate){ - journalid=pJournalid; - partitiondb=pPartitiondb; - realdate=pRealdate; -} -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de partitiondb -@return valor de partitiondb*/ -public String getPartitiondb(){ - return partitiondb; -} -/**Fija el valor de partitiondb -@param pPartitiondb nuevo Valor de partitiondb*/ -public void setPartitiondb(String pPartitiondb){ - partitiondb=pPartitiondb; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Implementacion de la comparacion de TgeneAccountScoreJournalKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountScoreJournalKey))return false; - TgeneAccountScoreJournalKey that = (TgeneAccountScoreJournalKey) o; - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getPartitiondb() == null || that.getPartitiondb() == null){ - return false; - } - if (! this.getPartitiondb().equals(that.getPartitiondb())){ - return false; - } - if (this.getRealdate() == null || that.getRealdate() == null){ - return false; - } - if (! this.getRealdate().equals(that.getRealdate())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneAccountScoreJournalKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getPartitiondb() == null ? 0 : this.getPartitiondb().hashCode()); - result = result * 37 + (this.getRealdate() == null ? 0 : this.getRealdate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreKey.java.svn-base deleted file mode 100644 index 7f37a81..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneAccountScoreKey.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENEACCOUNTSCORE*/ -@Embeddable -public class TgeneAccountScoreKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* Codigo de compania a la que pertence la cuenta -*/ -private Integer company; - -@Column(name="SCOREDATE", nullable=false,updatable=false) - -/** -* Fecha de calificacion de la cuenta -*/ -private Date scoredate; - -/**Contructor por defecto*/ -public TgeneAccountScoreKey(){} -/**Contructor de TgeneAccountScoreKey -@param pAccount Numero de cuenta -@param pCompany Codigo de compania a la que pertence la cuenta -@param pScoredate Fecha de calificacion de la cuenta -*/ -public TgeneAccountScoreKey(String pAccount,Integer pCompany,Date pScoredate){ - account=pAccount; - company=pCompany; - scoredate=pScoredate; -} -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Obtiene el valor de scoredate -@return valor de scoredate*/ -public Date getScoredate(){ - return scoredate; -} -/**Fija el valor de scoredate -@param pScoredate nuevo Valor de scoredate*/ -public void setScoredate(Date pScoredate){ - scoredate=pScoredate; -} - -/**Implementacion de la comparacion de TgeneAccountScoreKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneAccountScoreKey))return false; - TgeneAccountScoreKey that = (TgeneAccountScoreKey) o; - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - if (this.getScoredate() == null || that.getScoredate() == null){ - return false; - } - if (! this.getScoredate().equals(that.getScoredate())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneAccountScoreKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - result = result * 37 + (this.getScoredate() == null ? 0 : this.getScoredate().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScore.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScore.java.svn-base deleted file mode 100644 index 92f42e8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScore.java.svn-base +++ /dev/null @@ -1,269 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import java.util.List; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Query; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EmbeddedId; -import com.fp.dto.hb.Cache; - -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENEPERCENTSCORE - */ -@Entity(name = "TgenePercentScore") -@Table(name = "TGENEPERCENTSCORE") -public class TgenePercentScore extends com.fp.dto.AbstractDataTransport - implements Serializable, HibernateBean, Cloneable, Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgenePercentScore - */ - @EmbeddedId - private TgenePercentScoreKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el porcentaje de calificacion - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistick locking del registro. - */ - private Integer recordversion; - - @Column(name = "PERCENT", nullable = true) - /** - * Porcentaje de provision de la calificacion tipo de credito - */ - private BigDecimal percent; - - /** Contructor por defecto */ - public TgenePercentScore() { - } - - /** - * Contructor de TgenePercentScore - * - * @param pPk - * Clave Primaria del entity - */ - public TgenePercentScore(TgenePercentScoreKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgenePercentScore - */ - public static TgenePercentScore find(EntityManager pEntityManager, - TgenePercentScoreKey pKey) throws Exception { - TgenePercentScore obj = pEntityManager.find(TgenePercentScore.class, - pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgenePercentScore - * - * @return El objeto que referencia a la Clave primaria de TgenePercentScore - */ - public TgenePercentScoreKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgenePercentScore - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgenePercentScore - */ - public void setPk(TgenePercentScoreKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom - * nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de percent - * - * @return valor de percent - */ - public BigDecimal getPercent() { - return percent; - } - - /** - * Fija el valor de percent - * - * @param pPercent - * nuevo Valor de percent - */ - public void setPercent(BigDecimal pPercent) { - percent = pPercent; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgenePercentScore)) - return false; - TgenePercentScore that = (TgenePercentScore) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgenePercentScore - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgenePercentScore */ - public Object createInstance() { - TgenePercentScore instance = new TgenePercentScore(); - instance.setPk(new TgenePercentScoreKey()); - return instance; - } - - /** - * Clona la entidad TgenePercentScore - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgenePercentScore p = (TgenePercentScore) this.clone(); - p.setPk((TgenePercentScoreKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - - /** - * - * METODOS MANUALES - * - */ - - private static final String JPQL_SCORE_PERCENT = "" + - " from TgenePercentScore tsol " + - " where tsol.pk.dateto = :dateto " + - " and tsol.pk.credittypecode = :credittype " + - " and tsol.percent <= :percent "; - - public static List findbyScorePercent(EntityManager pEntityManager, String credittype, Number percent) throws Exception{ - //javax.persistence.Query qry = pEntityManager.createQuery(JPQL_SCORE_PERCENT); - Query qry = pEntityManager.createQuery(JPQL_SCORE_PERCENT); - qry.setParameter("credittype", credittype); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("percent", percent); - - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScoreKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScoreKey.java.svn-base deleted file mode 100644 index 7915039..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgenePercentScoreKey.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEPERCENTSCORE*/ -@Embeddable -public class TgenePercentScoreKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SCORECODE", nullable=false,updatable=false) - -/** -* Codigo de calificacion con el cual se realiza el calculo de provisiones -*/ -private String scorecode; - -@Column(name="CREDITTYPECODE", nullable=false,updatable=false) - -/** -* Codigo de tipo de credito -*/ -private String credittypecode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el porcentaje de provision de acuerdo a la calificacion -*/ -private Timestamp dateto; - -/**Contructor por defecto*/ -public TgenePercentScoreKey(){} -/**Contructor de TgenePercentScoreKey -@param pScorecode Codigo de calificacion con el cual se realiza el calculo de provisiones -@param pCredittypecode Codigo de tipo de credito -@param pDateto Fecha hasta la cual esta vigente el porcentaje de provision de acuerdo a la calificacion -*/ -public TgenePercentScoreKey(String pScorecode,String pCredittypecode,Timestamp pDateto){ - scorecode=pScorecode; - credittypecode=pCredittypecode; - dateto=pDateto; -} -/**Obtiene el valor de scorecode -@return valor de scorecode*/ -public String getScorecode(){ - return scorecode; -} -/**Fija el valor de scorecode -@param pScorecode nuevo Valor de scorecode*/ -public void setScorecode(String pScorecode){ - scorecode=pScorecode; -} - -/**Obtiene el valor de credittypecode -@return valor de credittypecode*/ -public String getCredittypecode(){ - return credittypecode; -} -/**Fija el valor de credittypecode -@param pCredittypecode nuevo Valor de credittypecode*/ -public void setCredittypecode(String pCredittypecode){ - credittypecode=pCredittypecode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Implementacin de la comparacin de TgenePercentScoreKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgenePercentScoreKey))return false; - TgenePercentScoreKey that = (TgenePercentScoreKey) o; - if (this.getScorecode() == null || that.getScorecode() == null){ - return false; - } - if (! this.getScorecode().equals(that.getScorecode())){ - return false; - } - if (this.getCredittypecode() == null || that.getCredittypecode() == null){ - return false; - } - if (! this.getCredittypecode().equals(that.getCredittypecode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgenePercentScoreKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getScorecode() == null ? 0 : this.getScorecode().hashCode()); - result = result * 37 + (this.getCredittypecode() == null ? 0 : this.getCredittypecode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScore.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScore.java.svn-base deleted file mode 100644 index 2d1d379..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScore.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCORE*/ -@Entity(name="TgeneScore") -@Table(name="TGENESCORE") -public class TgeneScore extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneScore -*/ -@Id -@Column(name="SCORECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="REALSCORE", nullable=true) - -/** -* Codigo de calificacion real a presentar a los organismos de control. -*/ -private String realscore; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion asociada al codigo de calificacion. -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneScore(){ -} -/**Contructor de TgeneScore -@param pPk Clave Primaria del entity -*/ -public TgeneScore(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneScore -*/ -public static TgeneScore find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneScore obj = pEntityManager.find(TgeneScore.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneScore -@return El objeto que referencia a la Clave primaria de TgeneScore -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneScore -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneScore -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de realscore -@return valor de realscore*/ -public String getRealscore(){ - return realscore; -} -/**Fija el valor de realscore -@param pRealscore nuevo Valor de realscore*/ -public void setRealscore(String pRealscore){ - realscore=pRealscore; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneScore))return false; - TgeneScore that = (TgeneScore) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneScore -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneScore -*/ -public Object createInstance(){ - TgeneScore instance=new TgeneScore(); - return instance; -} -/**Clona la entidad TgeneScore -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneScore p=(TgeneScore)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustment.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustment.java.svn-base deleted file mode 100644 index a0f3f68..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustment.java.svn-base +++ /dev/null @@ -1,524 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.math.BigDecimal; -import java.sql.Date; -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCOREADJUSTMENT */ -@Entity(name = "TgeneScoreAdjustment") -@Table(name = "TGENESCOREADJUSTMENT") -public class TgeneScoreAdjustment extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneScoreAdjustment - */ - @EmbeddedId - private TgeneScoreAdjustmentKey pk; - - @Column(name = "DATEFROM", nullable = false) - /** - * Fecha desde la cual esta vigente el registro con datos de la cuenta. - */ - private Timestamp datefrom; - - @Column(name = "MODULECODE", nullable = true) - /** - * Codigo de modulo - */ - private String modulecode; - - @Column(name = "PRODUCTCODE", nullable = true) - /** - * Codigo de producto - */ - private String productcode; - - @Column(name = "SUBPRODUCTCODE", nullable = true) - /** - * Codigo de subproducto - */ - private String subproductcode; - - @Column(name = "CURRENCYCODE", nullable = true) - /** - * Codigo de moneda - */ - private String currencycode; - - @Column(name = "ADJUSTMENTTYPE", nullable = false) - /** - * null - */ - private String adjustmenttype; - - @Column(name = "MANUALPROVISIONPERCENT", nullable = false) - /** - * Porcentaje de provision constituido. - */ - private BigDecimal manualprovisionpercent; - - @Column(name = "JOURNALID", nullable = false) - /** - * Numero de movimiento - */ - private String journalid; - - @Column(name = "FILENAME", nullable = true) - /** - * Nombre de archivo - */ - private String filename; - - @Column(name = "STATUS", nullable = true) - /** - * Estado del registro - */ - private String status; - - /** Contructor por defecto */ - public TgeneScoreAdjustment() { - } - - /** - * Contructor de TgeneScoreAdjustment - * - * @param pPk Clave Primaria del entity - * @param pDatefrom Fecha desde la cual esta vigente el registro con datos de la cuenta. - * @param pAdjustmenttype null - * @param pManualprovisionpercent Porcentaje de provision constituido. - * @param pJournalid Numero de movimiento - */ - public TgeneScoreAdjustment(TgeneScoreAdjustmentKey pPk, Timestamp pDatefrom, String pAdjustmenttype, BigDecimal pManualprovisionpercent, - String pJournalid) { - this(); - this.pk = pPk; - this.datefrom = pDatefrom; - this.adjustmenttype = pAdjustmenttype; - this.manualprovisionpercent = pManualprovisionpercent; - this.journalid = pJournalid; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneScoreAdjustment - */ - public static TgeneScoreAdjustment find(EntityManager pEntityManager, TgeneScoreAdjustmentKey pKey) throws Exception { - TgeneScoreAdjustment obj = pEntityManager.find(TgeneScoreAdjustment.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneScoreAdjustment - * - * @return El objeto que referencia a la Clave primaria de TgeneScoreAdjustment - */ - public TgeneScoreAdjustmentKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneScoreAdjustment - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneScoreAdjustment - */ - public void setPk(TgeneScoreAdjustmentKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return this.datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - this.datefrom = pDatefrom; - } - - /** - * Obtiene el valor de modulecode - * - * @return valor de modulecode - */ - public String getModulecode() { - return this.modulecode; - } - - /** - * Fija el valor de modulecode - * - * @param pModulecode nuevo Valor de modulecode - */ - public void setModulecode(String pModulecode) { - this.modulecode = pModulecode; - } - - /** - * Obtiene el valor de productcode - * - * @return valor de productcode - */ - public String getProductcode() { - return this.productcode; - } - - /** - * Fija el valor de productcode - * - * @param pProductcode nuevo Valor de productcode - */ - public void setProductcode(String pProductcode) { - this.productcode = pProductcode; - } - - /** - * Obtiene el valor de subproductcode - * - * @return valor de subproductcode - */ - public String getSubproductcode() { - return this.subproductcode; - } - - /** - * Fija el valor de subproductcode - * - * @param pSubproductcode nuevo Valor de subproductcode - */ - public void setSubproductcode(String pSubproductcode) { - this.subproductcode = pSubproductcode; - } - - /** - * Obtiene el valor de currencycode - * - * @return valor de currencycode - */ - public String getCurrencycode() { - return this.currencycode; - } - - /** - * Fija el valor de currencycode - * - * @param pCurrencycode nuevo Valor de currencycode - */ - public void setCurrencycode(String pCurrencycode) { - this.currencycode = pCurrencycode; - } - - /** - * Obtiene el valor de adjustmenttype - * - * @return valor de adjustmenttype - */ - public String getAdjustmenttype() { - return this.adjustmenttype; - } - - /** - * Fija el valor de adjustmenttype - * - * @param pAdjustmenttype nuevo Valor de adjustmenttype - */ - public void setAdjustmenttype(String pAdjustmenttype) { - this.adjustmenttype = pAdjustmenttype; - } - - /** - * Obtiene el valor de manualprovisionpercent - * - * @return valor de manualprovisionpercent - */ - public BigDecimal getManualprovisionpercent() { - return this.manualprovisionpercent; - } - - /** - * Fija el valor de manualprovisionpercent - * - * @param pManualprovisionpercent nuevo Valor de manualprovisionpercent - */ - public void setManualprovisionpercent(BigDecimal pManualprovisionpercent) { - this.manualprovisionpercent = pManualprovisionpercent; - } - - /** - * Obtiene el valor de journalid - * - * @return valor de journalid - */ - public String getJournalid() { - return this.journalid; - } - - /** - * Fija el valor de journalid - * - * @param pJournalid nuevo Valor de journalid - */ - public void setJournalid(String pJournalid) { - this.journalid = pJournalid; - } - - /** - * Obtiene el valor de filename - * - * @return valor de filename - */ - public String getFilename() { - return this.filename; - } - - /** - * Fija el valor de filename - * - * @param pFilename nuevo Valor de filename - */ - public void setFilename(String pFilename) { - this.filename = pFilename; - } - - /** - * Obtiene el valor de status - * - * @return valor de status - */ - public String getStatus() { - return this.status; - } - - /** - * Fija el valor de status - * - * @param pStatus nuevo Valor de status - */ - public void setStatus(String pStatus) { - this.status = pStatus; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneScoreAdjustment)) { - return false; - } - TgeneScoreAdjustment that = (TgeneScoreAdjustment) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneScoreAdjustment - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneScoreAdjustment */ - @Override - public Object createInstance() { - TgeneScoreAdjustment instance = new TgeneScoreAdjustment(); - instance.setPk(new TgeneScoreAdjustmentKey()); - return instance; - } - - /** - * Clona la entidad TgeneScoreAdjustment - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneScoreAdjustment p = (TgeneScoreAdjustment) this.clone(); - p.setPk((TgeneScoreAdjustmentKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - /** - * - * METODOS MANUALES - * - */ - - /** - * Sentencia para buscar los registros asociados a un scoredate - */ - private static final String JPQL_ACCOUNT_SCOREDATE = "from TgeneScoreAdjustment tsol " - + " where tsol.pk.dateto = :dateto " - + " and tsol.pk.companycode = :companycode " - + " and tsol.pk.scoredate in (select sh.pk.scoredate from TgeneScoreHeader sh " - + " where sh.pk.companycode = :companycode " - + " and sh.tabulated = :tabulated " - + " and sh.pk.scoredate = :scoredate) "; - - public static List findbyScoreDate(EntityManager pEntityManager, Integer company, String tabulated, Date scoredate) - throws Exception { - Query qry = pEntityManager.createQuery(TgeneScoreAdjustment.JPQL_ACCOUNT_SCOREDATE); - qry.setParameter("companycode", company); - qry.setParameter("dateto", Constant.getDefaultExpiryDate()); - qry.setParameter("tabulated", tabulated); - qry.setParameter("scoredate", scoredate); - return qry.getResultList(); - } - - /* Calificacin por archivo */ - - /** - * Sentencia para buscar los registros que tienen el nombre de archivo dado - */ - private static final String JPQL_FILE = "select distinct t.filename " + " from TgeneScoreAdjustment t " + " where t.pk.companycode = :company" - + " and t.filename = :filename"; - - /** - * Mtodo que selecciona los registros que tienen el nombre de archivo dado - * - * @param pEntityManager Referencia de la session a obtener datos del bean - * @param pCompany Cdigo de la compaia - * @param pFilename Nombre del archivo - * @return Nombre del archivo si existe, de lo contrario null - * @throws Exception - */ - public static String find(EntityManager pEntityManager, Integer pCompany, String pFilename) throws Exception { - try { - Query qry = pEntityManager.createQuery(TgeneScoreAdjustment.JPQL_FILE); - qry.setParameter("company", pCompany); - qry.setParameter("filename", pFilename); - - return (String) qry.getSingleResult(); - } catch (NoResultException e) { - return null; - } - } - - /** - * Sentencia para buscar los registros asociados a una entidad financiera dada que no hayan sido procesados - */ - private static final String JPQL_BANK = "from TgeneScoreAdjustment t " + " where t.pk.companycode = :company "; - // + " and t.pk.bank = coalesce(:bank, t.pk.bank) "; - - // /** - // * Mtodo que selecciona los registros asociados a una entidad financiera dada que no hayan sido procesados - // * - // * @param pEntityManager Referencia de la session a obtener datos del bean - // * @param pCompany Nombre de la compaia - // * @param pBank Cdigo del banco - // * @return Lista de registro de TloanPaymentAccoBank - // * @throws Exception - // */ - // @SuppressWarnings("unchecked") - // public static List findByBank(EntityManager pEntityManager, Integer pCompany, String pBank) - // throws Exception { - // Query qry = pEntityManager.createQuery(JPQL_BANK); - // qry.setParameter("company", pCompany); - // qry.setParameter("bank", pBank); - // - // return qry.getResultList(); - // } - // - // /** - // * Sentencia para buscar los registros asociados a una cuenta dada que no hayan sido procesados - // */ - // private static final String JPQL_ACCOUNT = "from TgeneScoreAdjustment t " + " where t.pk.companycode = :company " - // + " and t.pk.account = :account " + " and t.status = 'N' " ; - // - // /** - // * Mtodo que selecciona los registros asociados a una cuenta dada que no hayan sido procesados - // * - // * @param pEntityManager Referencia de la session a obtener datos del bean - // * @param pCompany Nombre de la compaia - // * @param pAccount Cdigo de la cuenta - // * @return Lista de registro de TloanPaymentAccoBank - // * @throws Exception - // */ - // @SuppressWarnings("unchecked") - // public static List findByAccount(EntityManager pEntityManager, Integer pCompany, String - // pAccount) throws Exception { - // Query qry = pEntityManager.createQuery(JPQL_ACCOUNT); - // qry.setParameter("company", pCompany); - // qry.setParameter("account", pAccount); - // - // return qry.getResultList(); - // } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustmentKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustmentKey.java.svn-base deleted file mode 100644 index f1bb637..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreAdjustmentKey.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESCOREADJUSTMENT*/ -@Embeddable -public class TgeneScoreAdjustmentKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el registro con datos de la cuenta. -*/ -private Timestamp dateto; - -@Column(name="SCOREDATE", nullable=false,updatable=false) - -/** -* Fecha de calificacion -*/ -private Timestamp scoredate; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* Numero de cuenta -*/ -private String account; - -/**Contructor por defecto*/ -public TgeneScoreAdjustmentKey(){} -/**Contructor de TgeneScoreAdjustmentKey -@param pDateto Fecha hasta la cual esta vigente el registro con datos de la cuenta. -@param pScoredate Fecha de calificacion -@param pCompanycode Codigo de compania -@param pAccount Numero de cuenta -*/ -public TgeneScoreAdjustmentKey(Timestamp pDateto,Timestamp pScoredate,Integer pCompanycode,String pAccount){ - dateto=pDateto; - scoredate=pScoredate; - companycode=pCompanycode; - account=pAccount; -} -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de scoredate -@return valor de scoredate*/ -public Timestamp getScoredate(){ - return scoredate; -} -/**Fija el valor de scoredate -@param pScoredate nuevo Valor de scoredate*/ -public void setScoredate(Timestamp pScoredate){ - scoredate=pScoredate; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Implementacion de la comparacion de TgeneScoreAdjustmentKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneScoreAdjustmentKey))return false; - TgeneScoreAdjustmentKey that = (TgeneScoreAdjustmentKey) o; - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getScoredate() == null || that.getScoredate() == null){ - return false; - } - if (! this.getScoredate().equals(that.getScoredate())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneScoreAdjustmentKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getScoredate() == null ? 0 : this.getScoredate().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssues.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssues.java.svn-base deleted file mode 100644 index f8fbb10..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssues.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCOREFILEISSUES*/ -@Entity(name="TgeneScoreFileIssues") -@Table(name="TGENESCOREFILEISSUES") -public class TgeneScoreFileIssues extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneScoreFileIssues -*/ -@EmbeddedId -private TgeneScoreFileIssuesKey pk; -@Column(name="LINECONTENT", nullable=false) - -/** -* Contenido de la linea con problemas -*/ -private String linecontent; - -@Column(name="USERMESSAGE", nullable=true) - -/** -* Mensaje del usuario por el cual no se subio esa linea -*/ -private String usermessage; - -@Column(name="TECHNICALMESSAGE", nullable=true) - -/** -* Mensaje tecnico de porque no se subio esa linea -*/ -private String technicalmessage; - -/**Contructor por defecto*/ -public TgeneScoreFileIssues(){ -} -/**Contructor de TgeneScoreFileIssues -@param pPk Clave Primaria del entity -@param pLinecontent Contenido de la linea con problemas -*/ -public TgeneScoreFileIssues(TgeneScoreFileIssuesKey pPk,String pLinecontent){ - this(); - pk=pPk; - linecontent=pLinecontent; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneScoreFileIssues -*/ -public static TgeneScoreFileIssues find(EntityManager pEntityManager,TgeneScoreFileIssuesKey pKey) throws Exception{ - TgeneScoreFileIssues obj = pEntityManager.find(TgeneScoreFileIssues.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneScoreFileIssues -@return El objeto que referencia a la Clave primaria de TgeneScoreFileIssues -*/ -public TgeneScoreFileIssuesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneScoreFileIssues -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneScoreFileIssues -*/ -public void setPk(TgeneScoreFileIssuesKey pPk){ - pk=pPk; -} -/**Obtiene el valor de linecontent -@return valor de linecontent*/ -public String getLinecontent(){ - return linecontent; -} -/**Fija el valor de linecontent -@param pLinecontent nuevo Valor de linecontent*/ -public void setLinecontent(String pLinecontent){ - linecontent=pLinecontent; -} - -/**Obtiene el valor de usermessage -@return valor de usermessage*/ -public String getUsermessage(){ - return usermessage; -} -/**Fija el valor de usermessage -@param pUsermessage nuevo Valor de usermessage*/ -public void setUsermessage(String pUsermessage){ - usermessage=pUsermessage; -} - -/**Obtiene el valor de technicalmessage -@return valor de technicalmessage*/ -public String getTechnicalmessage(){ - return technicalmessage; -} -/**Fija el valor de technicalmessage -@param pTechnicalmessage nuevo Valor de technicalmessage*/ -public void setTechnicalmessage(String pTechnicalmessage){ - technicalmessage=pTechnicalmessage; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneScoreFileIssues))return false; - TgeneScoreFileIssues that = (TgeneScoreFileIssues) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneScoreFileIssues -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneScoreFileIssues -*/ -public Object createInstance(){ - TgeneScoreFileIssues instance=new TgeneScoreFileIssues(); - instance.setPk(new TgeneScoreFileIssuesKey()); - return instance; -} -/**Clona la entidad TgeneScoreFileIssues -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneScoreFileIssues p=(TgeneScoreFileIssues)this.clone(); - p.setPk((TgeneScoreFileIssuesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssuesKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssuesKey.java.svn-base deleted file mode 100644 index 8cc6d02..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreFileIssuesKey.java.svn-base +++ /dev/null @@ -1,206 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESCOREFILEISSUES*/ -@Embeddable -public class TgeneScoreFileIssuesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="LINENUMBER", nullable=false,updatable=false) - -/** -* Numero de linea con problemas -*/ -private Integer linenumber; - -@Column(name="FILENAME", nullable=false,updatable=false) - -/** -* Nombre del archivo -*/ -private String filename; - -@Column(name="UPLOADDATE", nullable=false,updatable=false) - -/** -* Fecha de carga del archivo -*/ -private Timestamp uploaddate; - -@Column(name="ACCOUNT", nullable=false,updatable=false) - -/** -* ID del banco -*/ -private String account; - -@Column(name="COMPANY", nullable=false,updatable=false) - -/** -* null -*/ -private Integer company; - -/**Contructor por defecto*/ -public TgeneScoreFileIssuesKey(){} -/**Contructor de TgeneScoreFileIssuesKey -@param pLinenumber Numero de linea con problemas -@param pFilename Nombre del archivo -@param pUploaddate Fecha de carga del archivo -@param pAccount ID del banco -@param pCompany null -*/ -public TgeneScoreFileIssuesKey(Integer pLinenumber,String pFilename,Timestamp pUploaddate,String pAccount,Integer pCompany){ - linenumber=pLinenumber; - filename=pFilename; - uploaddate=pUploaddate; - account=pAccount; - company=pCompany; -} -/**Obtiene el valor de linenumber -@return valor de linenumber*/ -public Integer getLinenumber(){ - return linenumber; -} -/**Fija el valor de linenumber -@param pLinenumber nuevo Valor de linenumber*/ -public void setLinenumber(Integer pLinenumber){ - linenumber=pLinenumber; -} - -/**Obtiene el valor de filename -@return valor de filename*/ -public String getFilename(){ - return filename; -} -/**Fija el valor de filename -@param pFilename nuevo Valor de filename*/ -public void setFilename(String pFilename){ - filename=pFilename; -} - -/**Obtiene el valor de uploaddate -@return valor de uploaddate*/ -public Timestamp getUploaddate(){ - return uploaddate; -} -/**Fija el valor de uploaddate -@param pUploaddate nuevo Valor de uploaddate*/ -public void setUploaddate(Timestamp pUploaddate){ - uploaddate=pUploaddate; -} - -/**Obtiene el valor de account -@return valor de account*/ -public String getAccount(){ - return account; -} -/**Fija el valor de account -@param pAccount nuevo Valor de account*/ -public void setAccount(String pAccount){ - account=pAccount; -} - -/**Obtiene el valor de company -@return valor de company*/ -public Integer getCompany(){ - return company; -} -/**Fija el valor de company -@param pCompany nuevo Valor de company*/ -public void setCompany(Integer pCompany){ - company=pCompany; -} - -/**Implementacion de la comparacion de TgeneScoreFileIssuesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneScoreFileIssuesKey))return false; - TgeneScoreFileIssuesKey that = (TgeneScoreFileIssuesKey) o; - if (this.getLinenumber() == null || that.getLinenumber() == null){ - return false; - } - if (! this.getLinenumber().equals(that.getLinenumber())){ - return false; - } - if (this.getFilename() == null || that.getFilename() == null){ - return false; - } - if (! this.getFilename().equals(that.getFilename())){ - return false; - } - if (this.getUploaddate() == null || that.getUploaddate() == null){ - return false; - } - if (! this.getUploaddate().equals(that.getUploaddate())){ - return false; - } - if (this.getAccount() == null || that.getAccount() == null){ - return false; - } - if (! this.getAccount().equals(that.getAccount())){ - return false; - } - if (this.getCompany() == null || that.getCompany() == null){ - return false; - } - if (! this.getCompany().equals(that.getCompany())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneScoreFileIssuesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getLinenumber() == null ? 0 : this.getLinenumber().hashCode()); - result = result * 37 + (this.getFilename() == null ? 0 : this.getFilename().hashCode()); - result = result * 37 + (this.getUploaddate() == null ? 0 : this.getUploaddate().hashCode()); - result = result * 37 + (this.getAccount() == null ? 0 : this.getAccount().hashCode()); - result = result * 37 + (this.getCompany() == null ? 0 : this.getCompany().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeader.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeader.java.svn-base deleted file mode 100644 index 8537b44..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeader.java.svn-base +++ /dev/null @@ -1,227 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Query; -import javax.persistence.Table; -import javax.persistence.Transient; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESCOREHEADER */ -@Entity(name = "TgeneScoreHeader") -@Table(name = "TGENESCOREHEADER") -public class TgeneScoreHeader extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneScoreHeader - */ - @EmbeddedId - private TgeneScoreHeaderKey pk; - - @Column(name = "FILECODE", nullable = true) - /** - * Codigo de imagen - */ - private Integer filecode; - - @Column(name = "TABULATED", nullable = true) - /** - * Y Indica que la calificacion esta contabilizada y enviada a la super - */ - private String tabulated; - - /** Contructor por defecto */ - public TgeneScoreHeader() { - } - - /** - * Contructor de TgeneScoreHeader - * - * @param pPk Clave Primaria del entity - */ - public TgeneScoreHeader(TgeneScoreHeaderKey pPk) { - this(); - this.pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneScoreHeader - */ - public static TgeneScoreHeader find(EntityManager pEntityManager, TgeneScoreHeaderKey pKey) throws Exception { - TgeneScoreHeader obj = pEntityManager.find(TgeneScoreHeader.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneScoreHeader - * - * @return El objeto que referencia a la Clave primaria de TgeneScoreHeader - */ - public TgeneScoreHeaderKey getPk() { - return this.pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneScoreHeader - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneScoreHeader - */ - public void setPk(TgeneScoreHeaderKey pPk) { - this.pk = pPk; - } - - /** - * Obtiene el valor de filecode - * - * @return valor de filecode - */ - public Integer getFilecode() { - return this.filecode; - } - - /** - * Fija el valor de filecode - * - * @param pFilecode nuevo Valor de filecode - */ - public void setFilecode(Integer pFilecode) { - this.filecode = pFilecode; - } - - /** - * Obtiene el valor de tabulated - * - * @return valor de tabulated - */ - public String getTabulated() { - return this.tabulated; - } - - /** - * Fija el valor de tabulated - * - * @param pTabulated nuevo Valor de tabulated - */ - public void setTabulated(String pTabulated) { - this.tabulated = pTabulated; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneScoreHeader)) { - return false; - } - TgeneScoreHeader that = (TgeneScoreHeader) rhs; - if ((this.getPk() == null) || (that.getPk() == null)) { - return false; - } - return this.getPk().equals(that.getPk()); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneScoreHeader - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if ((name.compareTo("hashValue") == 0) || (name.compareTo("serialVersionUID") == 0)) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneScoreHeader */ - @Override - public Object createInstance() { - TgeneScoreHeader instance = new TgeneScoreHeader(); - instance.setPk(new TgeneScoreHeaderKey()); - return instance; - } - - /** - * Clona la entidad TgeneScoreHeader - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneScoreHeader p = (TgeneScoreHeader) this.clone(); - p.setPk((TgeneScoreHeaderKey) this.pk.cloneMe()); - return p; - } - - /* METODOS MANUALES */ - - private static final String JPQL_BY_COMPANY = "from TgeneScoreHeader tga " + "where tga.pk.companycode = :companycode"; - - /** - * Permite consultar si existe un periodo de calificacion abierto - * - * @param companycode Codigo de empresa - * @return lista de objetos de tipo - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List findByCompany(EntityManager entityManager, Integer companycode) throws Exception { - Query qry = entityManager.createQuery(TgeneScoreHeader.JPQL_BY_COMPANY); - qry.setParameter("companycode", companycode); - return qry.getResultList(); - } - -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeaderKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeaderKey.java.svn-base deleted file mode 100644 index b1ca320..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreHeaderKey.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que hace referencia a la Clave Primaria de TGENESCOREHEADER*/ -@Embeddable -public class TgeneScoreHeaderKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SCOREDATE", nullable=false,updatable=false) - -/** -* Fecha de calificacion -*/ -private Date scoredate; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania -*/ -private Integer companycode; - -/**Contructor por defecto*/ -public TgeneScoreHeaderKey(){} -/**Contructor de TgeneScoreHeaderKey -@param pScoredate Fecha de calificacion -@param pCompanycode Codigo de compania -*/ -public TgeneScoreHeaderKey(Date pScoredate,Integer pCompanycode){ - scoredate=pScoredate; - companycode=pCompanycode; -} -/**Obtiene el valor de scoredate -@return valor de scoredate*/ -public Date getScoredate(){ - return scoredate; -} -/**Fija el valor de scoredate -@param pScoredate nuevo Valor de scoredate*/ -public void setScoredate(Date pScoredate){ - scoredate=pScoredate; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Implementacion de la comparacion de TgeneScoreHeaderKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneScoreHeaderKey))return false; - TgeneScoreHeaderKey that = (TgeneScoreHeaderKey) o; - if (this.getScoredate() == null || that.getScoredate() == null){ - return false; - } - if (! this.getScoredate().equals(that.getScoredate())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneScoreHeaderKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getScoredate() == null ? 0 : this.getScoredate().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRank.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRank.java.svn-base deleted file mode 100644 index 2b31dba..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRank.java.svn-base +++ /dev/null @@ -1,323 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import com.fp.common.helper.Constant; -import com.fp.dto.hb.Cache; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Query; - -import java.sql.Timestamp; -import java.util.List; - -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla - * TGENESCORERANK - */ -@Entity(name = "TgeneScoreRank") -@Table(name = "TGENESCORERANK") -public class TgeneScoreRank extends com.fp.dto.AbstractDataTransport implements - Serializable, HibernateBean, Cloneable, Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneScoreRank - */ - @EmbeddedId - private TgeneScoreRankKey pk; - @Column(name = "DATEFROM", nullable = true) - /** - * Fecha desde la cual esta vigente el porcentaje de calificacion - */ - private Timestamp datefrom; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistick locking del registro. - */ - private Integer recordversion; - - @Column(name = "DAYSFROM", nullable = true) - /** - * Dias minimos para definir la calificacion del prestamo - */ - private Integer daysfrom; - - @Column(name = "DAYSTO", nullable = true) - /** - * Dias maximos para definir la calificacion del prestamo - */ - private Integer daysto; - - /** Contructor por defecto */ - public TgeneScoreRank() { - } - - /** - * Contructor de TgeneScoreRank - * - * @param pPk - * Clave Primaria del entity - */ - public TgeneScoreRank(TgeneScoreRankKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager - * referencia de la session a obtener datos del bean. - * @param pKey - * Caleve primaria del bean. - * @return TgeneScoreRank - */ - public static TgeneScoreRank find(EntityManager pEntityManager, - TgeneScoreRankKey pKey) throws Exception { - TgeneScoreRank obj = pEntityManager.find(TgeneScoreRank.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneScoreRank - * - * @return El objeto que referencia a la Clave primaria de TgeneScoreRank - */ - public TgeneScoreRankKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneScoreRank - * - * @param pPk - * El objeto que referencia a la nueva Clave primaria de - * TgeneScoreRank - */ - public void setPk(TgeneScoreRankKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de datefrom - * - * @return valor de datefrom - */ - public Timestamp getDatefrom() { - return datefrom; - } - - /** - * Fija el valor de datefrom - * - * @param pDatefrom - * nuevo Valor de datefrom - */ - public void setDatefrom(Timestamp pDatefrom) { - datefrom = pDatefrom; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion - * nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de daysfrom - * - * @return valor de daysfrom - */ - public Integer getDaysfrom() { - return daysfrom; - } - - /** - * Fija el valor de daysfrom - * - * @param pDaysfrom - * nuevo Valor de daysfrom - */ - public void setDaysfrom(Integer pDaysfrom) { - daysfrom = pDaysfrom; - } - - /** - * Obtiene el valor de daysto - * - * @return valor de daysto - */ - public Integer getDaysto() { - return daysto; - } - - /** - * Fija el valor de daysto - * - * @param pDaysto - * nuevo Valor de daysto - */ - public void setDaysto(Integer pDaysto) { - daysto = pDaysto; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneScoreRank)) - return false; - TgeneScoreRank that = (TgeneScoreRank) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneScoreRank - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 - || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneScoreRank */ - public Object createInstance() { - TgeneScoreRank instance = new TgeneScoreRank(); - instance.setPk(new TgeneScoreRankKey()); - return instance; - } - - /** - * Clona la entidad TgeneScoreRank - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneScoreRank p = (TgeneScoreRank) this.clone(); - p.setPk((TgeneScoreRankKey) this.pk.cloneMe()); - return p; - } - - public Object getId() { - return this.pk; - } - - //Metodos manuales. - /**Sentencia que entrega la definicion de rangos de calificacion de cartera.*/ - private static final String JPQL = "from TgeneScoreRank t "+ - " where t.pk.credittypecode = :credittypecode " + - " and t.pk.operationstatus = :operationstatus"+ - " and t.pk.modulecode = :modulecode "+ - " and t.pk.dateto = :dateto "; - - /** - * Metodo que entrega una lista de calificacion de cartera dado el tipo de credito, estado de la operacion y modulo. - * @param pEntityManager Referencia a una session de base de datos. - * @param pCreditType Codigo de tipo de credito, CON consumo, COM comercial, etc - * @param pOperationStatus Estado de la operacion Orginal, Restructurada - * @param pModuleCode Modulo asociado al estado de la operacion. - * @return List - * @throws Exception - */ - @SuppressWarnings("unchecked") - public static List find(EntityManager pEntityManager,String pCreditType,String pOperationStatus,String pModuleCode) throws Exception { - List ldata = null; - Query qry = pEntityManager.createQuery(JPQL); - qry.setParameter("credittypecode", pCreditType); - qry.setParameter("operationstatus", pOperationStatus); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - ldata = qry.getResultList(); - return ldata; - } - - /**Sentencia que entrega la definicion de rangos de calificacion de cartera.*/ - private static final String JPQL_FIRST_SCORE = "from TgeneScoreRank t "+ - " where t.pk.credittypecode = :credittypecode " + - " and t.pk.operationstatus = :operationstatus"+ - " and t.pk.modulecode = :modulecode "+ - " and t.pk.dateto = :dateto " + - " and 0 between t.daysfrom and t.daysto "; - - /** - * Metodo que entrega una lista de calificacion de cartera dado el tipo de credito y modulo. - * @param pEntityManager Referencia a una session de base de datos. - * @param pCreditType Codigo de tipo de credito, CON consumo, COM comercial, etc - * @param pModuleCode Modulo asociado al estado de la operacion. - * @return List - * @throws Exception - */ - public static TgeneScoreRank find(EntityManager pEntityManager,String pCreditType,String pModuleCode) throws Exception { - TgeneScoreRank obj = null; - Query qry = pEntityManager.createQuery(JPQL_FIRST_SCORE); - qry.setParameter("credittypecode", pCreditType); - qry.setParameter("operationstatus", "ORI"); - qry.setParameter("modulecode", pModuleCode); - qry.setParameter("dateto", Constant.getDefaultExpiryTimestamp()); - obj = (TgeneScoreRank)qry.getSingleResult(); - return obj; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRankKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRankKey.java.svn-base deleted file mode 100644 index 1edff66..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/score/.svn/text-base/TgeneScoreRankKey.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.persistence.pgeneral.score; - -import java.sql.Timestamp; -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import com.fp.dto.hb.History; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENESCORERANK*/ -@Embeddable -public class TgeneScoreRankKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId,History{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="SCORECODE", nullable=false,updatable=false) - -/** -* Codigo de calificacion con el cual se realiza el calculo de provisiones -*/ -private String scorecode; - -@Column(name="CREDITTYPECODE", nullable=false,updatable=false) - -/** -* Codigo de tipo de credito -*/ -private String credittypecode; - -@Column(name="DATETO", nullable=false,updatable=false) - -/** -* Fecha hasta la cual esta vigente el porcentaje de provision de acuerdo a la calificacion -*/ -private Timestamp dateto; - -@Column(name="OPERATIONSTATUS", nullable=false,updatable=false) - -/** -* Codigo de estatus de la operacion, ORI (Original), REF (refinanciada), RES (restructurada) -*/ -private String operationstatus; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneScoreRankKey(){} -/**Contructor de TgeneScoreRankKey -@param pScorecode Codigo de calificacion con el cual se realiza el calculo de provisiones -@param pCredittypecode Codigo de tipo de credito -@param pDateto Fecha hasta la cual esta vigente el porcentaje de provision de acuerdo a la calificacion -@param pOperationstatus Codigo de estatus de la operacion, ORI (Original), REF (refinanciada), RES (restructurada) -@param pModulecode Codigo de modulo -*/ -public TgeneScoreRankKey(String pScorecode,String pCredittypecode,Timestamp pDateto,String pOperationstatus,String pModulecode){ - scorecode=pScorecode; - credittypecode=pCredittypecode; - dateto=pDateto; - operationstatus=pOperationstatus; - modulecode=pModulecode; -} -/**Obtiene el valor de scorecode -@return valor de scorecode*/ -public String getScorecode(){ - return scorecode; -} -/**Fija el valor de scorecode -@param pScorecode nuevo Valor de scorecode*/ -public void setScorecode(String pScorecode){ - scorecode=pScorecode; -} - -/**Obtiene el valor de credittypecode -@return valor de credittypecode*/ -public String getCredittypecode(){ - return credittypecode; -} -/**Fija el valor de credittypecode -@param pCredittypecode nuevo Valor de credittypecode*/ -public void setCredittypecode(String pCredittypecode){ - credittypecode=pCredittypecode; -} - -/**Obtiene el valor de dateto -@return valor de dateto*/ -public Timestamp getDateto(){ - return dateto; -} -/**Fija el valor de dateto -@param pDateto nuevo Valor de dateto*/ -public void setDateto(Timestamp pDateto){ - dateto=pDateto; -} - -/**Obtiene el valor de operationstatus -@return valor de operationstatus*/ -public String getOperationstatus(){ - return operationstatus; -} -/**Fija el valor de operationstatus -@param pOperationstatus nuevo Valor de operationstatus*/ -public void setOperationstatus(String pOperationstatus){ - operationstatus=pOperationstatus; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneScoreRankKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneScoreRankKey))return false; - TgeneScoreRankKey that = (TgeneScoreRankKey) o; - if (this.getScorecode() == null || that.getScorecode() == null){ - return false; - } - if (! this.getScorecode().equals(that.getScorecode())){ - return false; - } - if (this.getCredittypecode() == null || that.getCredittypecode() == null){ - return false; - } - if (! this.getCredittypecode().equals(that.getCredittypecode())){ - return false; - } - if (this.getDateto() == null || that.getDateto() == null){ - return false; - } - if (! this.getDateto().equals(that.getDateto())){ - return false; - } - if (this.getOperationstatus() == null || that.getOperationstatus() == null){ - return false; - } - if (! this.getOperationstatus().equals(that.getOperationstatus())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneScoreRankKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getScorecode() == null ? 0 : this.getScorecode().hashCode()); - result = result * 37 + (this.getCredittypecode() == null ? 0 : this.getCredittypecode().hashCode()); - result = result * 37 + (this.getDateto() == null ? 0 : this.getDateto().hashCode()); - result = result * 37 + (this.getOperationstatus() == null ? 0 : this.getOperationstatus().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -public Object getId() { - return null; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/entries deleted file mode 100644 index ff8b035..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneSequences.java -file - - - - -2022-07-28T03:40:29.551746Z -d038accd7d3d38c123231decdfdc68ac -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6690 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/text-base/TgeneSequences.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/text-base/TgeneSequences.java.svn-base deleted file mode 100644 index 7e3462c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/seq/.svn/text-base/TgeneSequences.java.svn-base +++ /dev/null @@ -1,241 +0,0 @@ -package com.fp.persistence.pgeneral.seq; - -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Id; -import javax.persistence.Column; - -import javax.persistence.LockModeType; - -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import com.fp.general.exception.GeneralException; - -import java.lang.reflect.Field; -import javax.persistence.Transient; - - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENESEQUENCES*/ -@Entity(name="TgeneSequences") -@Table(name="TGENESEQUENCES") -public class TgeneSequences extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneSequences -*/ -@Id -@Column(name="CODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="CURRENTVALUE", nullable=false) - -/** -* Valor actual de la secuencia -*/ -private Long currentvalue; - -@Column(name="INITIALVALUE", nullable=false) - -/** -* Valor inicial de la secuenta -*/ -private Long initialvalue; - -@Column(name="LASTVALUE", nullable=false) - -/** -* Vvalor maximo de la secuencia -*/ -private Long lastvalue; - -@Column(name="CYCLIC", nullable=true) - -/** -* Y indica que la secuencia es ciclica, cuando llega al valor maximo, toma el valor inicial -*/ -private String cyclic; - -@Column(name="INCREASE", nullable=false) - -/** -* Valor de incremento de la secuencia. -*/ -private Integer increase; - -/**Contructor por defecto*/ -public TgeneSequences(){ -} -/**Contructor de TgeneSequences -@param pPk Clave Primaria del entity -@param pCurrentvalue Valor actual de la secuencia -@param pInitialvalue Valor inicial de la secuenta -@param pLastvalue Vvalor maximo de la secuencia -@param pIncrease Valor de incremento de la secuencia. -*/ -public TgeneSequences(String pPk,Long pCurrentvalue,Long pInitialvalue,Long pLastvalue,Integer pIncrease){ - this(); - pk=pPk; - currentvalue=pCurrentvalue; - initialvalue=pInitialvalue; - lastvalue=pLastvalue; - increase=pIncrease; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneSequences -*/ -public static TgeneSequences find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneSequences obj = pEntityManager.find(TgeneSequences.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneSequences -@return El objeto que referencia a la Clave primaria de TgeneSequences -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneSequences -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneSequences -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de currentvalue -@return valor de currentvalue*/ -public Long getCurrentvalue(){ - return currentvalue; -} -/**Fija el valor de currentvalue -@param pCurrentvalue nuevo Valor de currentvalue*/ -public void setCurrentvalue(Long pCurrentvalue){ - currentvalue=pCurrentvalue; -} - -/**Obtiene el valor de initialvalue -@return valor de initialvalue*/ -public Long getInitialvalue(){ - return initialvalue; -} -/**Fija el valor de initialvalue -@param pInitialvalue nuevo Valor de initialvalue*/ -public void setInitialvalue(Long pInitialvalue){ - initialvalue=pInitialvalue; -} - -/**Obtiene el valor de lastvalue -@return valor de lastvalue*/ -public Long getLastvalue(){ - return lastvalue; -} -/**Fija el valor de lastvalue -@param pLastvalue nuevo Valor de lastvalue*/ -public void setLastvalue(Long pLastvalue){ - lastvalue=pLastvalue; -} - -/**Obtiene el valor de cyclic -@return valor de cyclic*/ -public String getCyclic(){ - return cyclic; -} -/**Fija el valor de cyclic -@param pCyclic nuevo Valor de cyclic*/ -public void setCyclic(String pCyclic){ - cyclic=pCyclic; -} - -/**Obtiene el valor de increase -@return valor de increase*/ -public Integer getIncrease(){ - return increase; -} -/**Fija el valor de increase -@param pIncrease nuevo Valor de increase*/ -public void setIncrease(Integer pIncrease){ - increase=pIncrease; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneSequences))return false; - TgeneSequences that = (TgeneSequences) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneSequences -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneSequences -*/ -public Object createInstance(){ - TgeneSequences instance=new TgeneSequences(); - return instance; -} -/**Clona la entidad TgeneSequences -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneSequences p=(TgeneSequences)this.clone(); - return p; -} - - //METODOS MANUALES - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneSequences - */ - public static TgeneSequences findWithLock(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneSequences tgeneSequences = pEntityManager.find(TgeneSequences.class, pKey, LockModeType.PESSIMISTIC_READ); - if (tgeneSequences == null) { - throw new GeneralException("GENE-0006", "SEMILLA DE LA SECUENCIA NO DEFINA EN TGENESEQUENCES, CODIGO: {0}", - pKey); - } - return tgeneSequences; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/entries deleted file mode 100644 index dd13c8d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TtestValores.java -file - - - - -2022-07-28T03:40:28.980743Z -a0d9a6e46d2829e477c4febcdde92baf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5625 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/text-base/TtestValores.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/text-base/TtestValores.java.svn-base deleted file mode 100644 index d8c78d4..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/test/.svn/text-base/TtestValores.java.svn-base +++ /dev/null @@ -1,223 +0,0 @@ -package com.fp.persistence.pgeneral.test; - -import java.sql.Timestamp; -import javax.persistence.Id; -import java.io.Serializable; -import javax.persistence.Table; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Column; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TTESTVALORES*/ -@Entity(name="TtestValores") -@Table(name="TTESTVALORES") -public class TtestValores extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TtestValores -*/ -@Id -@Column(name="ID" ,nullable=false, updatable=false) -private Long pk; -@Column(name="DESCRIPCION", nullable=false) - -/** -* null -*/ -private String descripcion; - -@Column(name="MONTO", nullable=false) - -/** -* null -*/ -private BigDecimal monto; - -@Column(name="FECHA", nullable=false) - -/** -* null -*/ -private Date fecha; - -@Column(name="FECHAHORA", nullable=false) - -/** -* null -*/ -private Timestamp fechahora; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* null -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public TtestValores(){ -} -/**Contructor de TtestValores -@param pPk Clave Primaria del entity -@param pDescripcion null -@param pMonto null -@param pFecha null -@param pFechahora null -*/ -public TtestValores(Long pPk,String pDescripcion,BigDecimal pMonto,Date pFecha,Timestamp pFechahora){ - this(); - pk=pPk; - descripcion=pDescripcion; - monto=pMonto; - fecha=pFecha; - fechahora=pFechahora; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TtestValores -*/ -public static TtestValores find(EntityManager pEntityManager,Object pKey) throws Exception{ - TtestValores obj = pEntityManager.find(TtestValores.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TtestValores -@return El objeto que referencia a la Clave primaria de TtestValores -*/ -public Long getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TtestValores -@param pPk El objeto que referencia a la nueva Clave primaria de TtestValores -*/ -public void setPk(Long pPk){ - pk=pPk; -} -/**Obtiene el valor de descripcion -@return valor de descripcion*/ -public String getDescripcion(){ - return descripcion; -} -/**Fija el valor de descripcion -@param pDescripcion nuevo Valor de descripcion*/ -public void setDescripcion(String pDescripcion){ - descripcion=pDescripcion; -} - -/**Obtiene el valor de monto -@return valor de monto*/ -public BigDecimal getMonto(){ - return monto; -} -/**Fija el valor de monto -@param pMonto nuevo Valor de monto*/ -public void setMonto(BigDecimal pMonto){ - monto=pMonto; -} - -/**Obtiene el valor de fecha -@return valor de fecha*/ -public Date getFecha(){ - return fecha; -} -/**Fija el valor de fecha -@param pFecha nuevo Valor de fecha*/ -public void setFecha(Date pFecha){ - fecha=pFecha; -} - -/**Obtiene el valor de fechahora -@return valor de fechahora*/ -public Timestamp getFechahora(){ - return fechahora; -} -/**Fija el valor de fechahora -@param pFechahora nuevo Valor de fechahora*/ -public void setFechahora(Timestamp pFechahora){ - fechahora=pFechahora; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TtestValores))return false; - TtestValores that = (TtestValores) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TtestValores -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TtestValores -*/ -public Object createInstance(){ - TtestValores instance=new TtestValores(); - return instance; -} -/**Clona la entidad TtestValores -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TtestValores p=(TtestValores)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/entries deleted file mode 100644 index 73bd56f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/entries +++ /dev/null @@ -1,643 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans -svn://172.17.26.185/COMACO - - - -2014-10-30T05:45:24.149371Z -2205 -dcruz - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneTransactionItemProcessKey.java -file - - - - -2022-07-28T03:40:29.514746Z -94fce96d377d26c7e100a158f7efe80b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6429 - -TgeneTransactionItemKey.java -file - - - - -2022-07-28T03:40:29.514746Z -13b490f81c82bd0f66ee0927f4abc945 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5600 - -TgeneTransactionProcess.java -file - - - - -2022-07-28T03:40:29.514746Z -1d612b7362c3c0ecc2fd98ede89b8683 -2014-10-30T05:45:05.666266Z -2204 -dcruz - - - - - - - - - - - - - - - - - - - - - -11820 - -TgeneTransaction.java -file - - - - -2022-07-28T03:40:29.515746Z -fdc07170ef1250cdfe549aef6d79a292 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13612 - -TgeneTransactionGlosary.java -file - - - - -2022-07-28T03:40:29.515746Z -b8f6cf6c12ab7f38b2d18ad4d6514bc7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7629 - -TgeneTransactionItemDetail.java -file - - - - -2022-07-28T03:40:29.515746Z -8cfd21b13a2ba0497af77d4cda2c9020 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13224 - -TgeneTransactionEvent.java -file - - - - -2022-07-28T03:40:29.515746Z -c7f1ecc12aaf450730fd57d19d9654ac -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7032 - -TgeneTransactionProcessKey.java -file - - - - -2022-07-28T03:40:29.516746Z -0fb99d976f86f682baeb821eb64b45fa -2014-10-30T05:45:24.149371Z -2205 -dcruz - - - - - - - - - - - - - - - - - - - - - -5408 - -TgeneTransactionKey.java -file - - - - -2022-07-28T03:40:29.516746Z -06c1efb6e86e63b59e080afd324890db -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4632 - -TgeneTransactionProvision.java -file - - - - -2022-07-28T03:40:29.516746Z -cfa0e6d20507519869df1caddad62d96 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5643 - -TgeneTransactionGlosaryKey.java -file - - - - -2022-07-28T03:40:29.516746Z -f60ffac11caf3c688fd07c2eab60b144 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6186 - -TgeneTransactionItemDetailKey.java -file - - - - -2022-07-28T03:40:29.517746Z -8a9b5994b39d85f7fcf9ef341c4f1419 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5660 - -TgeneTransactionFinanProcess.java -file - - - - -2022-07-28T03:40:29.517746Z -4b854978bc326f498c55eea4dffef078 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8311 - -TgeneTransactionEventKey.java -file - - - - -2022-07-28T03:40:29.517746Z -2ce525446f29cd6a15e49143082d4bee -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3565 - -TgeneTransactionItemProcess.java -file - - - - -2022-07-28T03:40:29.517746Z -4fad7ff08bf30081c903531bdfa3aea1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8225 - -TgeneTransactionItem.java -file - - - - -2022-07-28T03:40:29.518746Z -8bbc0ca3f7d86018eec77d23afd54016 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5648 - -TgeneTransactionProvisionKey.java -file - - - - -2022-07-28T03:40:29.518746Z -758f6fa553903e9801f129b3ffeb112b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7638 - -report -dir - -TgeneTransactionFinanProcessKey.java -file - - - - -2022-07-28T03:40:29.518746Z -5a6c7d5dff8d49c410fc8de75fdc3aa3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5674 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransaction.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransaction.java.svn-base deleted file mode 100644 index 0993992..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransaction.java.svn-base +++ /dev/null @@ -1,542 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTION */ -@Entity(name = "TgeneTransaction") -@Table(name = "TGENETRANSACTION") -public class TgeneTransaction extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneTransaction - */ - @EmbeddedId - private TgeneTransactionKey pk; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "NAME", nullable = true) - /** - * Nombre de la Transaccion - */ - private String name; - - @Column(name = "PAGE", nullable = true) - /** - * Pagina que dispara el inicio de la transacion - */ - private String page; - - @Column(name = "AUTOQUERY", nullable = true) - /** - * Indicador de si la transaccion debe consultarse automaticamente al ser llamada - */ - private String autoquery; - - @Column(name = "INTERNAL", nullable = true) - /** - * Transaccion interna. Las transacciones internas no se presentan en el men. - */ - private String internal; - - @Column(name = "IMMOBILIZATION", nullable = true) - /** - * Indica si la transaccin es de cliente y afecta la fecha de ultimo movimiento de cuenta para inmovilizacion. - */ - private String immobilization; - - @Column(name = "COMPLETETARIFFITEMS", nullable = true) - /** - * Indica que la transaccion completa rubros de impuestos, cargos, comisiones - */ - private String completetariffitems; - - @Column(name = "FINANCIALPROCESS", nullable = true) - /** - * Indica si la transaccion, tiene definido procesos que se ejecutan, junto a la transaccion finanicera. - */ - private String financialprocess; - - @Column(name = "MANAGECACHE", nullable = true) - /** - * Indica si el registro se almacena en cache del servidor de aplicaicones - */ - private String managecache; - - @Column(name = "SIGNATURE", nullable = true) - /** - * Indica si se habilita la presentacion de la firma en la transaccion, ejemplo pago de cheques - */ - private String signature; - - @Column(name = "INBOX", nullable = true) - /** - * Y indica que cuando se ejecuta la transaccion, se consulta informacion del indbox. - */ - private String inbox; - - @Column(name = "MESSAGECODE", nullable = true) - /** - * Codigo de plantilla de mensajes - */ - private Integer messagecode; - - @Column(name = "QUERYAGAIN", nullable = true) - /** - * Campo que indica si se debe realizar o no una consulta despues de un mantenimiento - */ - private String queryagain; - - @Column(name = "QUERYCODE", nullable = true) - /** - * QUERYCODE - */ - private String querycode; - - @Column(name = "BRANCHAMONG", nullable = true) - /** - * Indica si la transaccion genera intersucursales - */ - private String branchamong; - - @Column(name = "JSFPAGE", nullable = true) - /** - * Pagina jsf - */ - private String jsfpage; - - - - - /** Contructor por defecto */ - public TgeneTransaction() { - } - - /** - * Contructor de TgeneTransaction - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransaction(TgeneTransactionKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransaction - */ - public static TgeneTransaction find(EntityManager pEntityManager, TgeneTransactionKey pKey) throws Exception { - TgeneTransaction obj = pEntityManager.find(TgeneTransaction.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneTransaction - * - * @return El objeto que referencia a la Clave primaria de TgeneTransaction - */ - public TgeneTransactionKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransaction - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransaction - */ - public void setPk(TgeneTransactionKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de name - * - * @return valor de name - */ - public String getName() { - return name; - } - - /** - * Fija el valor de name - * - * @param pName nuevo Valor de name - */ - public void setName(String pName) { - name = pName; - } - - /** - * Obtiene el valor de page - * - * @return valor de page - */ - public String getPage() { - return page; - } - - /** - * Fija el valor de page - * - * @param pPage nuevo Valor de page - */ - public void setPage(String pPage) { - page = pPage; - } - - /** - * Obtiene el valor de page - * - * @return valor de page - */ - public String getJsfpage() { - return jsfpage; - } - - /** - * Fija el valor de page - * - * @param pPage nuevo Valor de page - */ - public void setJsfpage(String pJsfpage) { - jsfpage = pJsfpage; - } - - /** - * Obtiene el valor de autoquery - * - * @return valor de autoquery - */ - public String getAutoquery() { - return autoquery; - } - - /** - * Fija el valor de autoquery - * - * @param pAutoquery nuevo Valor de autoquery - */ - public void setAutoquery(String pAutoquery) { - autoquery = pAutoquery; - } - - /** - * Obtiene el valor de internal - * - * @return valor de internal - */ - public String getInternal() { - return internal; - } - - /** - * Fija el valor de internal - * - * @param pInternal nuevo Valor de internal - */ - public void setInternal(String pInternal) { - internal = pInternal; - } - - /** - * Obtiene el valor de immobilization - * - * @return valor de immobilization - */ - public String getImmobilization() { - return immobilization; - } - - /** - * Fija el valor de immobilization - * - * @param pImmobilization nuevo Valor de immobilization - */ - public void setImmobilization(String pImmobilization) { - immobilization = pImmobilization; - } - - /** - * Obtiene el valor de completetariffitems - * - * @return valor de completetariffitems - */ - public String getCompletetariffitems() { - return completetariffitems; - } - - /** - * Fija el valor de completetariffitems - * - * @param pCompletetariffitems nuevo Valor de completetariffitems - */ - public void setCompletetariffitems(String pCompletetariffitems) { - completetariffitems = pCompletetariffitems; - } - - /** - * Obtiene el valor de financialprocess - * - * @return valor de financialprocess - */ - public String getFinancialprocess() { - return financialprocess; - } - - /** - * Fija el valor de financialprocess - * - * @param pFinancialprocess nuevo Valor de financialprocess - */ - public void setFinancialprocess(String pFinancialprocess) { - financialprocess = pFinancialprocess; - } - - /** - * Obtiene el valor de managecache - * - * @return valor de managecache - */ - public String getManagecache() { - return managecache; - } - - /** - * Fija el valor de managecache - * - * @param pManagecache nuevo Valor de managecache - */ - public void setManagecache(String pManagecache) { - managecache = pManagecache; - } - - /** - * Obtiene el valor de signature - * - * @return valor de signature - */ - public String getSignature() { - return signature; - } - - /** - * Fija el valor de signature - * - * @param pSignature nuevo Valor de signature - */ - public void setSignature(String pSignature) { - signature = pSignature; - } - - /** - * Obtiene el valor de inbox - * - * @return valor de inbox - */ - public String getInbox() { - return inbox; - } - - /** - * Fija el valor de inbox - * - * @param pInbox nuevo Valor de inbox - */ - public void setInbox(String pInbox) { - inbox = pInbox; - } - - /** - * Obtiene el valor de messagecode - * - * @return valor de messagecode - */ - public Integer getMessagecode() { - return messagecode; - } - - /** - * Fija el valor de messagecode - * - * @param pMessagecode nuevo Valor de messagecode - */ - public void setMessagecode(Integer pMessagecode) { - messagecode = pMessagecode; - } - - /** - * Obtiene el valor de queryagain - * - * @return valor de queryagain - */ - public String getQueryagain() { - return queryagain; - } - - /** - * Fija el valor de queryagain - * - * @param pQueryagain nuevo Valor de queryagain - */ - public void setQueryagain(String pQueryagain) { - queryagain = pQueryagain; - } - - /** - * Obtiene el valor de querycode - * - * @return valor de querycode - */ - public String getQuerycode() { - return querycode; - } - - /** - * Fija el valor de querycode - * - * @param pQuerycode nuevo Valor de querycode - */ - public void setQuerycode(String pQuerycode) { - querycode = pQuerycode; - } - - /** - * Obtiene el valor de branchamong - * - * @return valor de branchamong - */ - public String getBranchamong() { - return branchamong; - } - - /** - * Fija el valor de branchamong - * - * @param pBranchamong nuevo Valor de branchamong - */ - public void setBranchamong(String pBranchamong) { - branchamong = pBranchamong; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransaction)) - return false; - TgeneTransaction that = (TgeneTransaction) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad TgeneTransaction - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco TgeneTransaction */ - @Override - public Object createInstance() { - TgeneTransaction instance = new TgeneTransaction(); - instance.setPk(new TgeneTransactionKey()); - return instance; - } - - /** - * Clona la entidad TgeneTransaction - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransaction p = (TgeneTransaction) this.clone(); - p.setPk((TgeneTransactionKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEvent.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEvent.java.svn-base deleted file mode 100644 index 6798f73..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEvent.java.svn-base +++ /dev/null @@ -1,241 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.NoResultException; -import javax.persistence.Query; - -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.core.exception.CoreException; -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONEVENT */ -@Entity(name = "TgeneTransactionEvent") -@Table(name = "TGENETRANSACTIONEVENT") -public class TgeneTransactionEvent extends com.fp.dto.AbstractDataTransport - implements - Serializable,HibernateBean,Cloneable,Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTransactionEvent - */ - @EmbeddedId - private TgeneTransactionEventKey pk; - @Column(name = "TRANSACTIONMODULE", nullable = true) - /** - * Modulo al que pertence la transaccion - */ - private String transactionmodule; - - @Column(name = "TRANSACTIONCODE", nullable = true) - /** - * Codigo de transaccion dentro del modulo - */ - private Integer transactioncode; - - @Column(name = "TRANSACTIONVERSION", nullable = true) - /** - * Version de transaccion - */ - private Integer transactionversion; - - /** Contructor por defecto */ - public TgeneTransactionEvent() { - } - /** - * Contructor de TgeneTransactionEvent - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransactionEvent(TgeneTransactionEventKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransactionEvent - */ - public static TgeneTransactionEvent find(EntityManager pEntityManager, TgeneTransactionEventKey pKey) - throws Exception { - TgeneTransactionEvent obj = pEntityManager.find(TgeneTransactionEvent.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTransactionEvent - * - * @return El objeto que referencia a la Clave primaria de TgeneTransactionEvent - */ - public TgeneTransactionEventKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransactionEvent - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionEvent - */ - public void setPk(TgeneTransactionEventKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de transactionmodule - * - * @return valor de transactionmodule - */ - public String getTransactionmodule() { - return transactionmodule; - } - /** - * Fija el valor de transactionmodule - * - * @param pTransactionmodule nuevo Valor de transactionmodule - */ - public void setTransactionmodule(String pTransactionmodule) { - transactionmodule = pTransactionmodule; - } - - /** - * Obtiene el valor de transactioncode - * - * @return valor de transactioncode - */ - public Integer getTransactioncode() { - return transactioncode; - } - /** - * Fija el valor de transactioncode - * - * @param pTransactioncode nuevo Valor de transactioncode - */ - public void setTransactioncode(Integer pTransactioncode) { - transactioncode = pTransactioncode; - } - - /** - * Obtiene el valor de transactionversion - * - * @return valor de transactionversion - */ - public Integer getTransactionversion() { - return transactionversion; - } - /** - * Fija el valor de transactionversion - * - * @param pTransactionversion nuevo Valor de transactionversion - */ - public void setTransactionversion(Integer pTransactionversion) { - transactionversion = pTransactionversion; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransactionEvent)) - return false; - TgeneTransactionEvent that = (TgeneTransactionEvent) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransactionEvent - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTransactionEvent */ - public Object createInstance() { - TgeneTransactionEvent instance = new TgeneTransactionEvent(); - instance.setPk(new TgeneTransactionEventKey()); - return instance; - } - /** - * Clona la entidad TgeneTransactionEvent - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransactionEvent p = (TgeneTransactionEvent) this.clone(); - p.setPk((TgeneTransactionEventKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /** Sentencia que devuelve un registro de TgeneTransactionEvent.*/ - private static final String HQL_EVENT = - "from TgeneTransactionEvent t " + - " where t.pk.eventcode = :eventcode "+ - " and t.pk.modulecode = :modulecode "; - - /** - * Metodo que entrega la transaccion a ejecutar dado un codigo de evento. - * @param pEntityManager Referencia a la session de base de datos. - * @param pEventCode Codigo de evento. - * @param pModuleCode Modulo al que pertenece el evento. - * @return TgeneTransactionEvent - * @throws Exception - */ - public static TgeneTransactionEvent find(EntityManager pEntityManager,String pEventCode,String pModuleCode) throws Exception { - Query qry = pEntityManager.createQuery(HQL_EVENT); - TgeneTransactionEvent obj = null; - qry.setParameter("eventcode", pEventCode); - qry.setParameter("modulecode", pModuleCode); - try { - obj = (TgeneTransactionEvent)qry.getSingleResult(); - } catch (NoResultException e) { - throw new CoreException("CORE-0036","EVENTO NO DEFINIDO EN TGENETRANSACTIONEVENT EVENT:{0} MODULE:{1}", - pEventCode,pModuleCode); - } - return obj; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEventKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEventKey.java.svn-base deleted file mode 100644 index 3219b41..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionEventKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONEVENT*/ -@Embeddable -public class TgeneTransactionEventKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="EVENTCODE", nullable=false,updatable=false) - -/** -* Codigo de evento a ejecutar, Ejemplo PAYMENT pago de credito -*/ -private String eventcode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -/**Contructor por defecto*/ -public TgeneTransactionEventKey(){} -/**Contructor de TgeneTransactionEventKey -@param pEventcode Codigo de evento a ejecutar, Ejemplo PAYMENT pago de credito -@param pModulecode Codigo de modulo -*/ -public TgeneTransactionEventKey(String pEventcode,String pModulecode){ - eventcode=pEventcode; - modulecode=pModulecode; -} -/**Obtiene el valor de eventcode -@return valor de eventcode*/ -public String getEventcode(){ - return eventcode; -} -/**Fija el valor de eventcode -@param pEventcode nuevo Valor de eventcode*/ -public void setEventcode(String pEventcode){ - eventcode=pEventcode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Implementacin de la comparacin de TgeneTransactionEventKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionEventKey))return false; - TgeneTransactionEventKey that = (TgeneTransactionEventKey) o; - if (this.getEventcode() == null || that.getEventcode() == null){ - return false; - } - if (! this.getEventcode().equals(that.getEventcode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionEventKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getEventcode() == null ? 0 : this.getEventcode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcess.java.svn-base deleted file mode 100644 index 761b8fb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcess.java.svn-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONFINANPROCESS*/ -@Entity(name="TgeneTransactionFinanProcess") -@Table(name="TGENETRANSACTIONFINANPROCESS") -public class TgeneTransactionFinanProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionFinanProcess -*/ -@EmbeddedId -private TgeneTransactionFinanProcessKey pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="EVENT", nullable=false) - -/** -* Proceso de negocio a ejecuatr en B (Begin) inicio de la transaccion, P (Process) proceso de la transaccion, E (End) Fin de la transaccion -*/ -private String event; - -@Column(name="EXECUTIONORDER", nullable=false) - -/** -* Orden de ejecucion del comando. -*/ -private Integer executionorder; - -@Column(name="STATUS", nullable=true) - -/** -* A indica que la regla esta activa, I regla Inactiva -*/ -private String status; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro se almacena en cache del servidor de aplicaicones -*/ -private String managecache; - -/**Contructor por defecto*/ -public TgeneTransactionFinanProcess(){ -} -/**Contructor de TgeneTransactionFinanProcess -@param pPk Clave Primaria del entity -@param pEvent Proceso de negocio a ejecuatr en B (Begin) inicio de la transaccion, P (Process) proceso de la transaccion, E (End) Fin de la transaccion -@param pExecutionorder Orden de ejecucion del comando. -*/ -public TgeneTransactionFinanProcess(TgeneTransactionFinanProcessKey pPk,String pEvent,Integer pExecutionorder){ - this(); - pk=pPk; - event=pEvent; - executionorder=pExecutionorder; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionFinanProcess -*/ -public static TgeneTransactionFinanProcess find(EntityManager pEntityManager,TgeneTransactionFinanProcessKey pKey) throws Exception{ - TgeneTransactionFinanProcess obj = pEntityManager.find(TgeneTransactionFinanProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionFinanProcess -@return El objeto que referencia a la Clave primaria de TgeneTransactionFinanProcess -*/ -public TgeneTransactionFinanProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionFinanProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionFinanProcess -*/ -public void setPk(TgeneTransactionFinanProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de event -@return valor de event*/ -public String getEvent(){ - return event; -} -/**Fija el valor de event -@param pEvent nuevo Valor de event*/ -public void setEvent(String pEvent){ - event=pEvent; -} - -/**Obtiene el valor de executionorder -@return valor de executionorder*/ -public Integer getExecutionorder(){ - return executionorder; -} -/**Fija el valor de executionorder -@param pExecutionorder nuevo Valor de executionorder*/ -public void setExecutionorder(Integer pExecutionorder){ - executionorder=pExecutionorder; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionFinanProcess))return false; - TgeneTransactionFinanProcess that = (TgeneTransactionFinanProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionFinanProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionFinanProcess -*/ -public Object createInstance(){ - TgeneTransactionFinanProcess instance=new TgeneTransactionFinanProcess(); - instance.setPk(new TgeneTransactionFinanProcessKey()); - return instance; -} -/**Clona la entidad TgeneTransactionFinanProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionFinanProcess p=(TgeneTransactionFinanProcess)this.clone(); - p.setPk((TgeneTransactionFinanProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcessKey.java.svn-base deleted file mode 100644 index b83d34c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionFinanProcessKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONFINANPROCESS*/ -@Embeddable -public class TgeneTransactionFinanProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del comando de la transaccion. -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionFinanProcessKey(){} -/**Contructor de TgeneTransactionFinanProcessKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pSequence Secuencia del comando de la transaccion. -*/ -public TgeneTransactionFinanProcessKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneTransactionFinanProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionFinanProcessKey))return false; - TgeneTransactionFinanProcessKey that = (TgeneTransactionFinanProcessKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionFinanProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosary.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosary.java.svn-base deleted file mode 100644 index b5d1c58..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosary.java.svn-base +++ /dev/null @@ -1,251 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.*; -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/** - * Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONGLOSARY - */ -@Entity(name = "TgeneTransactionGlosary") -@Table(name = "TGENETRANSACTIONGLOSARY") -public class TgeneTransactionGlosary extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTransactionGlosary - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(SEQUENCE),0)+1 from TGENETRANSACTIONGLOSARY " - + "where TRANSACTIONMODULE=:transactionmodule " - + "and TRANSACTIONCODE=:transactioncode " - + "and TRANSACTIONVERSION=:transactionversion " - + "and LANGUAGECODE = :languagecode"), - @Parameter(name = "type", value = "java.lang.Long"), - @Parameter(name = "param", value = "transactionmodule,pk.transactionmodule;transactioncode,pk.transactioncode;transactionversion,pk.transactionversion;languagecode,pk.languagecode"), - @Parameter(name = "field", value = "sequence")}) - @GeneratedValue(generator = "seq_id") - private TgeneTransactionGlosaryKey pk; - @Version - @Column(name = "RECORDVERSION", nullable = false) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - @Column(name = "DESCRIPTIONSHORT", nullable = false) - /** - * Descripcion de glosario - */ - private String descriptionshort; - @Column(name = "DESCRIPTION", nullable = false) - /** - * Descripcion del glosario - */ - private String description; - - /** - * Contructor por defecto - */ - public TgeneTransactionGlosary() { - } - - /** - * Contructor de TgeneTransactionGlosary - * - * @param pPk Clave Primaria del entity - * @param pRecordversion Optimistic locking del registro - * @param pDescriptionshort Descripcion de glosario - * @param pDescription Descripcion del glosario - */ - public TgeneTransactionGlosary(TgeneTransactionGlosaryKey pPk, Integer pRecordversion, String pDescriptionshort, String pDescription) { - this(); - pk = pPk; - recordversion = pRecordversion; - descriptionshort = pDescriptionshort; - description = pDescription; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransactionGlosary - */ - public static TgeneTransactionGlosary find(EntityManager pEntityManager, TgeneTransactionGlosaryKey pKey) throws Exception { - TgeneTransactionGlosary obj = pEntityManager.find(TgeneTransactionGlosary.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneTransactionGlosary - * - * @return El objeto que referencia a la Clave primaria de - * TgeneTransactionGlosary - */ - public TgeneTransactionGlosaryKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransactionGlosary - * - * @param pPk El objeto que referencia a la nueva Clave primaria de - * TgeneTransactionGlosary - */ - public void setPk(TgeneTransactionGlosaryKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de descriptionshort - * - * @return valor de descriptionshort - */ - public String getDescriptionshort() { - return descriptionshort; - } - - /** - * Fija el valor de descriptionshort - * - * @param pDescriptionshort nuevo Valor de descriptionshort - */ - public void setDescriptionshort(String pDescriptionshort) { - descriptionshort = pDescriptionshort; - } - - /** - * Obtiene el valor de description - * - * @return valor de description - */ - public String getDescription() { - return description; - } - - /** - * Fija el valor de description - * - * @param pDescription nuevo Valor de description - */ - public void setDescription(String pDescription) { - description = pDescription; - } - - public boolean equals(Object rhs) { - if (rhs == null) { - return false; - } - if (!(rhs instanceof TgeneTransactionGlosary)) { - return false; - } - TgeneTransactionGlosary that = (TgeneTransactionGlosary) rhs; - if (this.getPk() == null || that.getPk() == null) { - return false; - } - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad - * TgeneTransactionGlosary - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** - * Implementacion toString - */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) { - continue; - } - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) { - continue; - } - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** - * Implementacion de la creacion de un bean en blanco - * TgeneTransactionGlosary - */ - public Object createInstance() { - TgeneTransactionGlosary instance = new TgeneTransactionGlosary(); - instance.setPk(new TgeneTransactionGlosaryKey()); - return instance; - } - - /** - * Clona la entidad TgeneTransactionGlosary - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransactionGlosary p = (TgeneTransactionGlosary) this.clone(); - p.setPk((TgeneTransactionGlosaryKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosaryKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosaryKey.java.svn-base deleted file mode 100644 index e928ec9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionGlosaryKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONGLOSARY*/ -@Embeddable -public class TgeneTransactionGlosaryKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="LANGUAGECODE", nullable=false,updatable=false) - -/** -* Codigo de idioma -*/ -private String languagecode; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia parael ingreso -*/ -private Long sequence; - -/**Contructor por defecto*/ -public TgeneTransactionGlosaryKey(){} -/**Contructor de TgeneTransactionGlosaryKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pLanguagecode Codigo de idioma -@param pSequence Secuencia parael ingreso -*/ -public TgeneTransactionGlosaryKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,String pLanguagecode,Long pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - languagecode=pLanguagecode; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de languagecode -@return valor de languagecode*/ -public String getLanguagecode(){ - return languagecode; -} -/**Fija el valor de languagecode -@param pLanguagecode nuevo Valor de languagecode*/ -public void setLanguagecode(String pLanguagecode){ - languagecode=pLanguagecode; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Long getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Long pSequence){ - sequence=pSequence; -} - -/**Implementacion de la comparacion de TgeneTransactionGlosaryKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionGlosaryKey))return false; - TgeneTransactionGlosaryKey that = (TgeneTransactionGlosaryKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getLanguagecode() == null || that.getLanguagecode() == null){ - return false; - } - if (! this.getLanguagecode().equals(that.getLanguagecode())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneTransactionGlosaryKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getLanguagecode() == null ? 0 : this.getLanguagecode().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItem.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItem.java.svn-base deleted file mode 100644 index 304e2d7..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItem.java.svn-base +++ /dev/null @@ -1,195 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONITEM*/ -@Entity(name="TgeneTransactionItem") -@Table(name="TGENETRANSACTIONITEM") -public class TgeneTransactionItem extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionItem -*/ -@EmbeddedId -private TgeneTransactionItemKey pk; -@Column(name="DESCRIPTION", nullable=false) - -/** -* Descripcipn del item de la transaccin Ejemplo Efectivo. -*/ -private String description; - -@Column(name="SHOWINPAGE", nullable=true) - -/** -* null -*/ -private String showinpage; - -@Column(name="CALCUTATETARIFF", nullable=true) - -/** -* Se utiliza en paginas, Y indica que se tiene calcular el valor de un rubor en funcion a un tarifario. -*/ -private String calcutatetariff; - -@Column(name="EDITABLE", nullable=true) - -/** -* null -*/ -private String editable; - -/**Contructor por defecto*/ -public TgeneTransactionItem(){ -} -/**Contructor de TgeneTransactionItem -@param pPk Clave Primaria del entity -@param pDescription Descripcipn del item de la transaccin Ejemplo Efectivo. -*/ -public TgeneTransactionItem(TgeneTransactionItemKey pPk,String pDescription){ - this(); - pk=pPk; - description=pDescription; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionItem -*/ -public static TgeneTransactionItem find(EntityManager pEntityManager,TgeneTransactionItemKey pKey) throws Exception{ - TgeneTransactionItem obj = pEntityManager.find(TgeneTransactionItem.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionItem -@return El objeto que referencia a la Clave primaria de TgeneTransactionItem -*/ -public TgeneTransactionItemKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionItem -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionItem -*/ -public void setPk(TgeneTransactionItemKey pPk){ - pk=pPk; -} -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -/**Obtiene el valor de showinpage -@return valor de showinpage*/ -public String getShowinpage(){ - return showinpage; -} -/**Fija el valor de showinpage -@param pShowinpage nuevo Valor de showinpage*/ -public void setShowinpage(String pShowinpage){ - showinpage=pShowinpage; -} - -/**Obtiene el valor de calcutatetariff -@return valor de calcutatetariff*/ -public String getCalcutatetariff(){ - return calcutatetariff; -} -/**Fija el valor de calcutatetariff -@param pCalcutatetariff nuevo Valor de calcutatetariff*/ -public void setCalcutatetariff(String pCalcutatetariff){ - calcutatetariff=pCalcutatetariff; -} - -/**Obtiene el valor de editable -@return valor de editable*/ -public String getEditable(){ - return editable; -} -/**Fija el valor de editable -@param pEditable nuevo Valor de editable*/ -public void setEditable(String pEditable){ - editable=pEditable; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionItem))return false; - TgeneTransactionItem that = (TgeneTransactionItem) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionItem -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionItem -*/ -public Object createInstance(){ - TgeneTransactionItem instance=new TgeneTransactionItem(); - instance.setPk(new TgeneTransactionItemKey()); - return instance; -} -/**Clona la entidad TgeneTransactionItem -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionItem p=(TgeneTransactionItem)this.clone(); - p.setPk((TgeneTransactionItemKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetail.java.svn-base deleted file mode 100644 index 19b0778..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetail.java.svn-base +++ /dev/null @@ -1,466 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import com.fp.dto.hb.Cache; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONITEMDETAIL*/ -@Entity(name="TgeneTransactionItemDetail") -@Table(name="TGENETRANSACTIONITEMDETAIL") -public class TgeneTransactionItemDetail extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionItemDetail -*/ -@EmbeddedId -private TgeneTransactionItemDetailKey pk; -@Column(name="DEBITCREDIT", nullable=true) - -/** -* Indica si el item afecta al debito o credito del par contable -*/ -private String debitcredit; - -@Column(name="BALANCETYPE", nullable=true) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=true) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="COMPLEMENTARYITEM", nullable=true) - -/** -* Item complementario utilizado para armar el asiento contable. -*/ -private Integer complementaryitem; - -@Column(name="REFERENCEITEM", nullable=true) - -/** -* Item de referencia del cual se obtien el monto base para calcular IMP, CAR, COM. -*/ -private Integer referenceitem; - -@Column(name="ASSOCIATEDITEM", nullable=true) - -/** -* Rubro asociado, se adiciona a la transaccion cuando se ejecuta un rubro de la transaccion ejemplo cobro de intereses en orden, se reversa de cuentas de orden -*/ -private Integer associateditem; - -@Column(name="COPYACCOUNTFROMREQUEST", nullable=true) - -/** -* Indica si el journal se graba con la cuenta del request, si el rubro es de debito se copia la cuenta debito, si el rubro es credito se copia la cuenta credito -*/ -private String copyaccountfromrequest; - -@Column(name="CONCEPTMODULE", nullable=true) - -/** -* Codigo de modulo -*/ -private String conceptmodule; - -@Column(name="CONCEPTCODE", nullable=true) - -/** -* Codigo de concepto -*/ -private Integer conceptcode; - -@Column(name="TEMPLATECODE", nullable=true) - -/** -* Cdigo de plantilla de cuentas por cobrar. -*/ -private Integer templatecode; - -@Column(name="REGISTERMOVEMENT", nullable=true) - -/** -* Indica si el item se graba en la tabla de movimiento y afecta el saldo de la cuenta -*/ -private String registermovement; - -@Column(name="TARIFF", nullable=true) - -/** -* Indica si sobre el rubro se calcula impouestos, cargos o comisiones. -*/ -private String tariff; - -@Column(name="ISTAX", nullable=true) - -/** -* Indica si el rubro es un impuesto, si la cuenta no tiene saldo para ejecutar la transaccin se cobra el cargo mas el proporcinal del impuesto, En la cxc se define calcula nuevamente el imopuesto -*/ -private String istax; - -@Column(name="ACCOUNTSTATEMENT", nullable=true) - -/** -* Indica si el movimiento se presenta en el estado de cuenta -*/ -private String accountstatement; - -@Column(name="OVERDRAW", nullable=true) - -/** -* Indica si el valor del rubro genera un sobregiro indirecto o un vario deudor en cuentas de ahorro, se utiliza en los cargos por servicios -*/ -private String overdraw; - -@Column(name="PROCESS", nullable=true) - -/** -* Indica si tiene o no procesos de negocio a ejecutar en el rubro. -*/ -private String process; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro se almacena en cache del servidor de aplicaciones. -*/ -private String managecache; - -@Column(name="ADDORSUB", nullable=true) - -/** -* Indica se suma o resta el saldo de la cuenta producto,Los valores pueden ser '+','-' y null -*/ -private String addorsub; - -/**Contructor por defecto*/ -public TgeneTransactionItemDetail(){ -} -/**Contructor de TgeneTransactionItemDetail -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionItemDetail(TgeneTransactionItemDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionItemDetail -*/ -public static TgeneTransactionItemDetail find(EntityManager pEntityManager,TgeneTransactionItemDetailKey pKey) throws Exception{ - TgeneTransactionItemDetail obj = pEntityManager.find(TgeneTransactionItemDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionItemDetail -@return El objeto que referencia a la Clave primaria de TgeneTransactionItemDetail -*/ -public TgeneTransactionItemDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionItemDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionItemDetail -*/ -public void setPk(TgeneTransactionItemDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de debitcredit -@return valor de debitcredit*/ -public String getDebitcredit(){ - return debitcredit; -} -/**Fija el valor de debitcredit -@param pDebitcredit nuevo Valor de debitcredit*/ -public void setDebitcredit(String pDebitcredit){ - debitcredit=pDebitcredit; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de complementaryitem -@return valor de complementaryitem*/ -public Integer getComplementaryitem(){ - return complementaryitem; -} -/**Fija el valor de complementaryitem -@param pComplementaryitem nuevo Valor de complementaryitem*/ -public void setComplementaryitem(Integer pComplementaryitem){ - complementaryitem=pComplementaryitem; -} - -/**Obtiene el valor de referenceitem -@return valor de referenceitem*/ -public Integer getReferenceitem(){ - return referenceitem; -} -/**Fija el valor de referenceitem -@param pReferenceitem nuevo Valor de referenceitem*/ -public void setReferenceitem(Integer pReferenceitem){ - referenceitem=pReferenceitem; -} - -/**Obtiene el valor de associateditem -@return valor de associateditem*/ -public Integer getAssociateditem(){ - return associateditem; -} -/**Fija el valor de associateditem -@param pAssociateditem nuevo Valor de associateditem*/ -public void setAssociateditem(Integer pAssociateditem){ - associateditem=pAssociateditem; -} - -/**Obtiene el valor de copyaccountfromrequest -@return valor de copyaccountfromrequest*/ -public String getCopyaccountfromrequest(){ - return copyaccountfromrequest; -} -/**Fija el valor de copyaccountfromrequest -@param pCopyaccountfromrequest nuevo Valor de copyaccountfromrequest*/ -public void setCopyaccountfromrequest(String pCopyaccountfromrequest){ - copyaccountfromrequest=pCopyaccountfromrequest; -} - -/**Obtiene el valor de conceptmodule -@return valor de conceptmodule*/ -public String getConceptmodule(){ - return conceptmodule; -} -/**Fija el valor de conceptmodule -@param pConceptmodule nuevo Valor de conceptmodule*/ -public void setConceptmodule(String pConceptmodule){ - conceptmodule=pConceptmodule; -} - -/**Obtiene el valor de conceptcode -@return valor de conceptcode*/ -public Integer getConceptcode(){ - return conceptcode; -} -/**Fija el valor de conceptcode -@param pConceptcode nuevo Valor de conceptcode*/ -public void setConceptcode(Integer pConceptcode){ - conceptcode=pConceptcode; -} - -/**Obtiene el valor de templatecode -@return valor de templatecode*/ -public Integer getTemplatecode(){ - return templatecode; -} -/**Fija el valor de templatecode -@param pTemplatecode nuevo Valor de templatecode*/ -public void setTemplatecode(Integer pTemplatecode){ - templatecode=pTemplatecode; -} - -/**Obtiene el valor de registermovement -@return valor de registermovement*/ -public String getRegistermovement(){ - return registermovement; -} -/**Fija el valor de registermovement -@param pRegistermovement nuevo Valor de registermovement*/ -public void setRegistermovement(String pRegistermovement){ - registermovement=pRegistermovement; -} - -/**Obtiene el valor de tariff -@return valor de tariff*/ -public String getTariff(){ - return tariff; -} -/**Fija el valor de tariff -@param pTariff nuevo Valor de tariff*/ -public void setTariff(String pTariff){ - tariff=pTariff; -} - -/**Obtiene el valor de istax -@return valor de istax*/ -public String getIstax(){ - return istax; -} -/**Fija el valor de istax -@param pIstax nuevo Valor de istax*/ -public void setIstax(String pIstax){ - istax=pIstax; -} - -/**Obtiene el valor de accountstatement -@return valor de accountstatement*/ -public String getAccountstatement(){ - return accountstatement; -} -/**Fija el valor de accountstatement -@param pAccountstatement nuevo Valor de accountstatement*/ -public void setAccountstatement(String pAccountstatement){ - accountstatement=pAccountstatement; -} - -/**Obtiene el valor de overdraw -@return valor de overdraw*/ -public String getOverdraw(){ - return overdraw; -} -/**Fija el valor de overdraw -@param pOverdraw nuevo Valor de overdraw*/ -public void setOverdraw(String pOverdraw){ - overdraw=pOverdraw; -} - -/**Obtiene el valor de process -@return valor de process*/ -public String getProcess(){ - return process; -} -/**Fija el valor de process -@param pProcess nuevo Valor de process*/ -public void setProcess(String pProcess){ - process=pProcess; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -/**Obtiene el valor de addorsub -@return valor de addorsub*/ -public String getAddorsub(){ - return addorsub; -} -/**Fija el valor de addorsub -@param pAddorsub nuevo Valor de addorsub*/ -public void setAddorsub(String pAddorsub){ - addorsub=pAddorsub; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionItemDetail))return false; - TgeneTransactionItemDetail that = (TgeneTransactionItemDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TgeneTransactionItemDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TgeneTransactionItemDetail -*/ -public Object createInstance(){ - TgeneTransactionItemDetail instance=new TgeneTransactionItemDetail(); - instance.setPk(new TgeneTransactionItemDetailKey()); - return instance; -} -/**Clona la entidad TgeneTransactionItemDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionItemDetail p=(TgeneTransactionItemDetail)this.clone(); - p.setPk((TgeneTransactionItemDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetailKey.java.svn-base deleted file mode 100644 index fc138b0..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemDetailKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONITEMDETAIL*/ -@Embeddable -public class TgeneTransactionItemDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ITEMCODE", nullable=false,updatable=false) - -/** -* Sequencia de items dentro de la transaccion -*/ -private Integer itemcode; - -/**Contructor por defecto*/ -public TgeneTransactionItemDetailKey(){} -/**Contructor de TgeneTransactionItemDetailKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pItemcode Sequencia de items dentro de la transaccion -*/ -public TgeneTransactionItemDetailKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pItemcode){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - itemcode=pItemcode; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de itemcode -@return valor de itemcode*/ -public Integer getItemcode(){ - return itemcode; -} -/**Fija el valor de itemcode -@param pItemcode nuevo Valor de itemcode*/ -public void setItemcode(Integer pItemcode){ - itemcode=pItemcode; -} - -/**Implementacion de la comparacion de TgeneTransactionItemDetailKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionItemDetailKey))return false; - TgeneTransactionItemDetailKey that = (TgeneTransactionItemDetailKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getItemcode() == null || that.getItemcode() == null){ - return false; - } - if (! this.getItemcode().equals(that.getItemcode())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneTransactionItemDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getItemcode() == null ? 0 : this.getItemcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemKey.java.svn-base deleted file mode 100644 index 4fd3182..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONITEM*/ -@Embeddable -public class TgeneTransactionItemKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ITEMCODE", nullable=false,updatable=false) - -/** -* Sequencia de items dentro de la transaccion -*/ -private Integer itemcode; - -/**Contructor por defecto*/ -public TgeneTransactionItemKey(){} -/**Contructor de TgeneTransactionItemKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pItemcode Sequencia de items dentro de la transaccion -*/ -public TgeneTransactionItemKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pItemcode){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - itemcode=pItemcode; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de itemcode -@return valor de itemcode*/ -public Integer getItemcode(){ - return itemcode; -} -/**Fija el valor de itemcode -@param pItemcode nuevo Valor de itemcode*/ -public void setItemcode(Integer pItemcode){ - itemcode=pItemcode; -} - -/**Implementacin de la comparacin de TgeneTransactionItemKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionItemKey))return false; - TgeneTransactionItemKey that = (TgeneTransactionItemKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getItemcode() == null || that.getItemcode() == null){ - return false; - } - if (! this.getItemcode().equals(that.getItemcode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionItemKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getItemcode() == null ? 0 : this.getItemcode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcess.java.svn-base deleted file mode 100644 index d634988..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcess.java.svn-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONITEMPROCESS*/ -@Entity(name="TgeneTransactionItemProcess") -@Table(name="TGENETRANSACTIONITEMPROCESS") -public class TgeneTransactionItemProcess extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionItemProcess -*/ -@EmbeddedId -private TgeneTransactionItemProcessKey pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="ISVALIDATE", nullable=false) - -/** -* Indica que la regla de negocio, es de validacion -*/ -private String isvalidate; - -@Column(name="EXECUTIONORDER", nullable=false) - -/** -* A indica que la regla esta activa, I regla Inactiva -*/ -private Integer executionorder; - -@Column(name="STATUS", nullable=true) - -/** -* A indica que el comando esta activo, I comando Inactivo -*/ -private String status; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro se almacena en cache del servidor de aplicaicones -*/ -private String managecache; - -/**Contructor por defecto*/ -public TgeneTransactionItemProcess(){ -} -/**Contructor de TgeneTransactionItemProcess -@param pPk Clave Primaria del entity -@param pIsvalidate Indica que la regla de negocio, es de validacion -@param pExecutionorder A indica que la regla esta activa, I regla Inactiva -*/ -public TgeneTransactionItemProcess(TgeneTransactionItemProcessKey pPk,String pIsvalidate,Integer pExecutionorder){ - this(); - pk=pPk; - isvalidate=pIsvalidate; - executionorder=pExecutionorder; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionItemProcess -*/ -public static TgeneTransactionItemProcess find(EntityManager pEntityManager,TgeneTransactionItemProcessKey pKey) throws Exception{ - TgeneTransactionItemProcess obj = pEntityManager.find(TgeneTransactionItemProcess.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionItemProcess -@return El objeto que referencia a la Clave primaria de TgeneTransactionItemProcess -*/ -public TgeneTransactionItemProcessKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionItemProcess -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionItemProcess -*/ -public void setPk(TgeneTransactionItemProcessKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de isvalidate -@return valor de isvalidate*/ -public String getIsvalidate(){ - return isvalidate; -} -/**Fija el valor de isvalidate -@param pIsvalidate nuevo Valor de isvalidate*/ -public void setIsvalidate(String pIsvalidate){ - isvalidate=pIsvalidate; -} - -/**Obtiene el valor de executionorder -@return valor de executionorder*/ -public Integer getExecutionorder(){ - return executionorder; -} -/**Fija el valor de executionorder -@param pExecutionorder nuevo Valor de executionorder*/ -public void setExecutionorder(Integer pExecutionorder){ - executionorder=pExecutionorder; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionItemProcess))return false; - TgeneTransactionItemProcess that = (TgeneTransactionItemProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionItemProcess -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionItemProcess -*/ -public Object createInstance(){ - TgeneTransactionItemProcess instance=new TgeneTransactionItemProcess(); - instance.setPk(new TgeneTransactionItemProcessKey()); - return instance; -} -/**Clona la entidad TgeneTransactionItemProcess -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionItemProcess p=(TgeneTransactionItemProcess)this.clone(); - p.setPk((TgeneTransactionItemProcessKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcessKey.java.svn-base deleted file mode 100644 index 543753c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionItemProcessKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONITEMPROCESS*/ -@Embeddable -public class TgeneTransactionItemProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="ITEMCODE", nullable=false,updatable=false) - -/** -* Sequencia de items dentro de la transaccion -*/ -private Integer itemcode; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del comando para el item -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionItemProcessKey(){} -/**Contructor de TgeneTransactionItemProcessKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pItemcode Sequencia de items dentro de la transaccion -@param pSequence Secuencia del comando para el item -*/ -public TgeneTransactionItemProcessKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pItemcode,Integer pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - itemcode=pItemcode; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de itemcode -@return valor de itemcode*/ -public Integer getItemcode(){ - return itemcode; -} -/**Fija el valor de itemcode -@param pItemcode nuevo Valor de itemcode*/ -public void setItemcode(Integer pItemcode){ - itemcode=pItemcode; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneTransactionItemProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionItemProcessKey))return false; - TgeneTransactionItemProcessKey that = (TgeneTransactionItemProcessKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getItemcode() == null || that.getItemcode() == null){ - return false; - } - if (! this.getItemcode().equals(that.getItemcode())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionItemProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getItemcode() == null ? 0 : this.getItemcode().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionKey.java.svn-base deleted file mode 100644 index 0498d20..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTION*/ -@Embeddable -public class TgeneTransactionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -/**Contructor por defecto*/ -public TgeneTransactionKey(){} -/**Contructor de TgeneTransactionKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TgeneTransactionKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Implementacion de la comparacion de TgeneTransactionKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionKey))return false; - TgeneTransactionKey that = (TgeneTransactionKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TgeneTransactionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcess.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcess.java.svn-base deleted file mode 100644 index 0d1bde8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcess.java.svn-base +++ /dev/null @@ -1,431 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import java.io.Serializable; -import java.lang.reflect.Field; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; -import javax.persistence.Version; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONPROCESS */ -@Entity(name = "TgeneTransactionProcess") -@Table(name = "TGENETRANSACTIONPROCESS") -public class TgeneTransactionProcess extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad TgeneTransactionProcess - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(SEQUENCE),0)+1 from TGENETRANSACTIONPROCESS " - + "where TRANSACTIONMODULE=:transactionmodule " + "and TRANSACTIONCODE=:transactioncode " - + "and TRANSACTIONVERSION=:transactionversion "), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "transactionmodule,pk.transactionmodule;transactioncode,pk.transactioncode;transactionversion,pk.transactionversion"), - @Parameter(name = "field", value = "sequence") }) - @GeneratedValue(generator = "seq_id") - private TgeneTransactionProcessKey pk; - - @Column(name = "PROCESSCODE", nullable = true) - /** - * Paquete clase de un comando a ejecutar. - */ - private String processcode; - - @Column(name = "CATALOGTYPEPROCESS", nullable = true) - /** - * Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia - */ - private String catalogtypeprocess; - - @Column(name = "CATALOGCODETYPEPROCESS", nullable = true) - /** - * Codigo de tabla de catalogo del proceso de negocio de la aplicacion - */ - private String catalogcodetypeprocess; - - @Version - @Column(name = "RECORDVERSION", nullable = true) - /** - * Optimistic locking del registro - */ - private Integer recordversion; - - @Column(name = "EXECUTIONORDER", nullable = true) - /** - * orden de ejecucion de la regla de negocio. - */ - private Integer executionorder; - - @Column(name = "STATUS", nullable = true) - /** - * A indica que la regla esta activa, I regla Inactiva - */ - private String status; - - @Column(name = "MANAGECACHE", nullable = true) - /** - * Indica si el registro se almacena en cache del servidor de aplicaicones - */ - private String managecache; - - @Column(name = "ISFLOW", nullable = true) - /** - * Y Indica que el origen de ejecucion del componente es un flujo del bpm - */ - private String isflow; - - @Column(name = "PROCESSNAME", nullable = true) - /** - * Nombre del flujo bpm a ejecutar - */ - private String processname; - - @Column(name = "RULENAME", nullable = true) - /** - * Nombre de la regla a ejecutar - */ - private String rulename; - - @Column(name = "FLOWMESSAGECODE", nullable = true) - /** - * Codigo de mensaje del flujo a presentar al cliente - */ - private String flowmessagecode; - - /** Contructor por defecto */ - public TgeneTransactionProcess() { - } - - /** - * Contructor de TgeneTransactionProcess - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransactionProcess(TgeneTransactionProcessKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransactionProcess - */ - public static TgeneTransactionProcess find(EntityManager pEntityManager, TgeneTransactionProcessKey pKey) throws Exception { - TgeneTransactionProcess obj = pEntityManager.find(TgeneTransactionProcess.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de TgeneTransactionProcess - * - * @return El objeto que referencia a la Clave primaria de TgeneTransactionProcess - */ - public TgeneTransactionProcessKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransactionProcess - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionProcess - */ - public void setPk(TgeneTransactionProcessKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de processcode - * - * @return valor de processcode - */ - public String getProcesscode() { - return processcode; - } - - /** - * Fija el valor de processcode - * - * @param pProcesscode nuevo Valor de processcode - */ - public void setProcesscode(String pProcesscode) { - processcode = pProcesscode; - } - - /** - * Obtiene el valor de catalogtypeprocess - * - * @return valor de catalogtypeprocess - */ - public String getCatalogtypeprocess() { - return catalogtypeprocess; - } - - /** - * Fija el valor de catalogtypeprocess - * - * @param pCatalogtypeprocess nuevo Valor de catalogtypeprocess - */ - public void setCatalogtypeprocess(String pCatalogtypeprocess) { - catalogtypeprocess = pCatalogtypeprocess; - } - - /** - * Obtiene el valor de catalogcodetypeprocess - * - * @return valor de catalogcodetypeprocess - */ - public String getCatalogcodetypeprocess() { - return catalogcodetypeprocess; - } - - /** - * Fija el valor de catalogcodetypeprocess - * - * @param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess - */ - public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess) { - catalogcodetypeprocess = pCatalogcodetypeprocess; - } - - /** - * Obtiene el valor de recordversion - * - * @return valor de recordversion - */ - public Integer getRecordversion() { - return recordversion; - } - - /** - * Fija el valor de recordversion - * - * @param pRecordversion nuevo Valor de recordversion - */ - public void setRecordversion(Integer pRecordversion) { - recordversion = pRecordversion; - } - - /** - * Obtiene el valor de executionorder - * - * @return valor de executionorder - */ - public Integer getExecutionorder() { - return executionorder; - } - - /** - * Fija el valor de executionorder - * - * @param pExecutionorder nuevo Valor de executionorder - */ - public void setExecutionorder(Integer pExecutionorder) { - executionorder = pExecutionorder; - } - - /** - * Obtiene el valor de status - * - * @return valor de status - */ - public String getStatus() { - return status; - } - - /** - * Fija el valor de status - * - * @param pStatus nuevo Valor de status - */ - public void setStatus(String pStatus) { - status = pStatus; - } - - /** - * Obtiene el valor de managecache - * - * @return valor de managecache - */ - public String getManagecache() { - return managecache; - } - - /** - * Fija el valor de managecache - * - * @param pManagecache nuevo Valor de managecache - */ - public void setManagecache(String pManagecache) { - managecache = pManagecache; - } - - /** - * Obtiene el valor de isflow - * - * @return valor de isflow - */ - public String getIsflow() { - return isflow; - } - - /** - * Fija el valor de isflow - * - * @param pIsflow nuevo Valor de isflow - */ - public void setIsflow(String pIsflow) { - isflow = pIsflow; - } - - /** - * Obtiene el valor de processname - * - * @return valor de processname - */ - public String getProcessname() { - return processname; - } - - /** - * Fija el valor de processname - * - * @param pProcessname nuevo Valor de processname - */ - public void setProcessname(String pProcessname) { - processname = pProcessname; - } - - /** - * Obtiene el valor de rulename - * - * @return valor de rulename - */ - public String getRulename() { - return rulename; - } - - /** - * Fija el valor de rulename - * - * @param pRulename nuevo Valor de rulename - */ - public void setRulename(String pRulename) { - rulename = pRulename; - } - - /** - * Obtiene el valor de flowmessagecode - * - * @return valor de flowmessagecode - */ - public String getFlowmessagecode() { - return flowmessagecode; - } - - /** - * Fija el valor de flowmessagecode - * - * @param pFlowmessagecode nuevo Valor de flowmessagecode - */ - public void setFlowmessagecode(String pFlowmessagecode) { - flowmessagecode = pFlowmessagecode; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransactionProcess)) - return false; - TgeneTransactionProcess that = (TgeneTransactionProcess) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransactionProcess - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - - /** Implementacin toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacin de la creacin de un bean en blanco TgeneTransactionProcess */ - @Override - public Object createInstance() { - TgeneTransactionProcess instance = new TgeneTransactionProcess(); - instance.setPk(new TgeneTransactionProcessKey()); - return instance; - } - - /** - * Clona la entidad TgeneTransactionProcess - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransactionProcess p = (TgeneTransactionProcess) this.clone(); - p.setPk((TgeneTransactionProcessKey) this.pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcessKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcessKey.java.svn-base deleted file mode 100644 index 5e09a13..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProcessKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONPROCESS*/ -@Embeddable -public class TgeneTransactionProcessKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del comando -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionProcessKey(){} -/**Contructor de TgeneTransactionProcessKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pSequence Secuencia del comando -*/ -public TgeneTransactionProcessKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneTransactionProcessKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionProcessKey))return false; - TgeneTransactionProcessKey that = (TgeneTransactionProcessKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionProcessKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvision.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvision.java.svn-base deleted file mode 100644 index d4c63a9..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvision.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONPROVISION*/ -@Entity(name="TgeneTransactionProvision") -@Table(name="TGENETRANSACTIONPROVISION") -public class TgeneTransactionProvision extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransactionProvision -*/ -@EmbeddedId -private TgeneTransactionProvisionKey pk; -@Column(name="PROVISIONFROM", nullable=true) - -/** -* B Indica que provisiona desde la fecha de inicio del sobregiro o de la cuota, E incica que provisiona desde el vencimiento del sobregiro o cuota. -*/ -private String provisionfrom; - -@Column(name="PROVISIONTO", nullable=true) - -/** -* E incica que provisiona hasta el vencimiento del sobregiro o cuota. P indica que provisiona hasta la fecha de pago del sobregiro o cuota. -*/ -private String provisionto; - -@Column(name="BASEAMOUNT", nullable=true) - -/** -* Q El monto base para el calculo es el capital de lac cuota, C El monto base es el capital reducido, E Es un valor especial en el que se suma varios tipos de saldo de una cuota. -*/ -private String baseamount; - -/**Contructor por defecto*/ -public TgeneTransactionProvision(){ -} -/**Contructor de TgeneTransactionProvision -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionProvision(TgeneTransactionProvisionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionProvision -*/ -public static TgeneTransactionProvision find(EntityManager pEntityManager,TgeneTransactionProvisionKey pKey) throws Exception{ - TgeneTransactionProvision obj = pEntityManager.find(TgeneTransactionProvision.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionProvision -@return El objeto que referencia a la Clave primaria de TgeneTransactionProvision -*/ -public TgeneTransactionProvisionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionProvision -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionProvision -*/ -public void setPk(TgeneTransactionProvisionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de provisionfrom -@return valor de provisionfrom*/ -public String getProvisionfrom(){ - return provisionfrom; -} -/**Fija el valor de provisionfrom -@param pProvisionfrom nuevo Valor de provisionfrom*/ -public void setProvisionfrom(String pProvisionfrom){ - provisionfrom=pProvisionfrom; -} - -/**Obtiene el valor de provisionto -@return valor de provisionto*/ -public String getProvisionto(){ - return provisionto; -} -/**Fija el valor de provisionto -@param pProvisionto nuevo Valor de provisionto*/ -public void setProvisionto(String pProvisionto){ - provisionto=pProvisionto; -} - -/**Obtiene el valor de baseamount -@return valor de baseamount*/ -public String getBaseamount(){ - return baseamount; -} -/**Fija el valor de baseamount -@param pBaseamount nuevo Valor de baseamount*/ -public void setBaseamount(String pBaseamount){ - baseamount=pBaseamount; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionProvision))return false; - TgeneTransactionProvision that = (TgeneTransactionProvision) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionProvision -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionProvision -*/ -public Object createInstance(){ - TgeneTransactionProvision instance=new TgeneTransactionProvision(); - instance.setPk(new TgeneTransactionProvisionKey()); - return instance; -} -/**Clona la entidad TgeneTransactionProvision -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionProvision p=(TgeneTransactionProvision)this.clone(); - p.setPk((TgeneTransactionProvisionKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvisionKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvisionKey.java.svn-base deleted file mode 100644 index 7f8bea1..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/.svn/text-base/TgeneTransactionProvisionKey.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.persistence.pgeneral.trans; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONPROVISION*/ -@Embeddable -public class TgeneTransactionProvisionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="CAPITALBALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo de capital sobre el cual se calcula intereses, ejemplo capital prestamos, sobregiro contratado utilizado. -*/ -private String capitalbalancetype; - -@Column(name="CAPITALBALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo al cual pertenece el tipo de saldos de capital -*/ -private String capitalbalancegroup; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="STATUSCODE", nullable=false,updatable=false) - -/** -* Estatus de cuenta -*/ -private String statuscode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo de provision. -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, al que pertenece el tipo de saldo de capital. -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneTransactionProvisionKey(){} -/**Contructor de TgeneTransactionProvisionKey -@param pCapitalbalancetype Cdigo de tipo de saldo de capital sobre el cual se calcula intereses, ejemplo capital prestamos, sobregiro contratado utilizado. -@param pCapitalbalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo al cual pertenece el tipo de saldos de capital -@param pModulecode Codigo de modulo -@param pStatuscode Estatus de cuenta -@param pBalancetype Cdigo de tipo de saldo de provision. -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, al que pertenece el tipo de saldo de capital. -*/ -public TgeneTransactionProvisionKey(String pCapitalbalancetype,String pCapitalbalancegroup,String pModulecode,String pStatuscode,String pBalancetype,String pBalancegroup){ - capitalbalancetype=pCapitalbalancetype; - capitalbalancegroup=pCapitalbalancegroup; - modulecode=pModulecode; - statuscode=pStatuscode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de capitalbalancetype -@return valor de capitalbalancetype*/ -public String getCapitalbalancetype(){ - return capitalbalancetype; -} -/**Fija el valor de capitalbalancetype -@param pCapitalbalancetype nuevo Valor de capitalbalancetype*/ -public void setCapitalbalancetype(String pCapitalbalancetype){ - capitalbalancetype=pCapitalbalancetype; -} - -/**Obtiene el valor de capitalbalancegroup -@return valor de capitalbalancegroup*/ -public String getCapitalbalancegroup(){ - return capitalbalancegroup; -} -/**Fija el valor de capitalbalancegroup -@param pCapitalbalancegroup nuevo Valor de capitalbalancegroup*/ -public void setCapitalbalancegroup(String pCapitalbalancegroup){ - capitalbalancegroup=pCapitalbalancegroup; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de statuscode -@return valor de statuscode*/ -public String getStatuscode(){ - return statuscode; -} -/**Fija el valor de statuscode -@param pStatuscode nuevo Valor de statuscode*/ -public void setStatuscode(String pStatuscode){ - statuscode=pStatuscode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneTransactionProvisionKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionProvisionKey))return false; - TgeneTransactionProvisionKey that = (TgeneTransactionProvisionKey) o; - if (this.getCapitalbalancetype() == null || that.getCapitalbalancetype() == null){ - return false; - } - if (! this.getCapitalbalancetype().equals(that.getCapitalbalancetype())){ - return false; - } - if (this.getCapitalbalancegroup() == null || that.getCapitalbalancegroup() == null){ - return false; - } - if (! this.getCapitalbalancegroup().equals(that.getCapitalbalancegroup())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getStatuscode() == null || that.getStatuscode() == null){ - return false; - } - if (! this.getStatuscode().equals(that.getStatuscode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionProvisionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCapitalbalancetype() == null ? 0 : this.getCapitalbalancetype().hashCode()); - result = result * 37 + (this.getCapitalbalancegroup() == null ? 0 : this.getCapitalbalancegroup().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getStatuscode() == null ? 0 : this.getStatuscode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/entries deleted file mode 100644 index 0d33e7d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneTransactionReportsKey.java -file - - - - -2022-07-28T03:40:29.487746Z -1586ca667cd2080a266776c9e72c3050 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5593 - -TgeneTransactionReports.java -file - - - - -2022-07-28T03:40:29.488746Z -54ba622e10ceac66cbb02b60dfa82a05 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8247 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReports.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReports.java.svn-base deleted file mode 100644 index c26c60f..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReports.java.svn-base +++ /dev/null @@ -1,267 +0,0 @@ -package com.fp.persistence.pgeneral.trans.report; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSACTIONREPORTS*/ -@Entity(name="TgeneTransactionReports") -@Table(name="TGENETRANSACTIONREPORTS") -public class TgeneTransactionReports extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** - * Clave primaria de la Entidad TgeneTransactionProcess - */ -@EmbeddedId -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(SEQUENCE),0)+1 from TGENETRANSACTIONREPORTS " - + "where TRANSACTIONMODULE=:transactionmodule " + "and TRANSACTIONCODE=:transactioncode " - + "and TRANSACTIONVERSION=:transactionversion "), - @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "transactionmodule,pk.transactionmodule;transactioncode,pk.transactioncode;transactionversion,pk.transactionversion"), - @Parameter(name = "field", value = "sequence") }) -@GeneratedValue(generator = "seq_id") -private TgeneTransactionReportsKey pk; -@Column(name="PROCESSCODE", nullable=true) - -/** -* Paquete clase de un comando a ejecutar. -*/ -private String processcode; - -@Column(name="CATALOGTYPEPROCESS", nullable=true) - -/** -* Codigo de catalogo GEN proceso general consulta, mantenimiento, TRA a nivel de transaccion finacniera, ITEM a niveld e rubro de una trnsaccion financiera, BATH comandos de fin de dia -*/ -private String catalogtypeprocess; - -@Column(name="CATALOGCODETYPEPROCESS", nullable=true) - -/** -* Codigo de tabla de catalogo del proceso de negocio de la aplicacion -*/ -private String catalogcodetypeprocess; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="EXECUTIONORDER", nullable=true) - -/** -* orden de ejecucion de la regla de negocio. -*/ -private Integer executionorder; - -@Column(name="STATUS", nullable=true) - -/** -* A indica que la regla esta activa, I regla Inactiva -*/ -private String status; - -@Column(name="MANAGECACHE", nullable=true) - -/** -* Indica si el registro se almacena en cache del servidor de aplicaicones -*/ -private String managecache; - -/**Contructor por defecto*/ -public TgeneTransactionReports(){ -} -/**Contructor de TgeneTransactionReports -@param pPk Clave Primaria del entity -*/ -public TgeneTransactionReports(TgeneTransactionReportsKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransactionReports -*/ -public static TgeneTransactionReports find(EntityManager pEntityManager,TgeneTransactionReportsKey pKey) throws Exception{ - TgeneTransactionReports obj = pEntityManager.find(TgeneTransactionReports.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransactionReports -@return El objeto que referencia a la Clave primaria de TgeneTransactionReports -*/ -public TgeneTransactionReportsKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransactionReports -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransactionReports -*/ -public void setPk(TgeneTransactionReportsKey pPk){ - pk=pPk; -} -/**Obtiene el valor de processcode -@return valor de processcode*/ -public String getProcesscode(){ - return processcode; -} -/**Fija el valor de processcode -@param pProcesscode nuevo Valor de processcode*/ -public void setProcesscode(String pProcesscode){ - processcode=pProcesscode; -} - -/**Obtiene el valor de catalogtypeprocess -@return valor de catalogtypeprocess*/ -public String getCatalogtypeprocess(){ - return catalogtypeprocess; -} -/**Fija el valor de catalogtypeprocess -@param pCatalogtypeprocess nuevo Valor de catalogtypeprocess*/ -public void setCatalogtypeprocess(String pCatalogtypeprocess){ - catalogtypeprocess=pCatalogtypeprocess; -} - -/**Obtiene el valor de catalogcodetypeprocess -@return valor de catalogcodetypeprocess*/ -public String getCatalogcodetypeprocess(){ - return catalogcodetypeprocess; -} -/**Fija el valor de catalogcodetypeprocess -@param pCatalogcodetypeprocess nuevo Valor de catalogcodetypeprocess*/ -public void setCatalogcodetypeprocess(String pCatalogcodetypeprocess){ - catalogcodetypeprocess=pCatalogcodetypeprocess; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de executionorder -@return valor de executionorder*/ -public Integer getExecutionorder(){ - return executionorder; -} -/**Fija el valor de executionorder -@param pExecutionorder nuevo Valor de executionorder*/ -public void setExecutionorder(Integer pExecutionorder){ - executionorder=pExecutionorder; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -/**Obtiene el valor de managecache -@return valor de managecache*/ -public String getManagecache(){ - return managecache; -} -/**Fija el valor de managecache -@param pManagecache nuevo Valor de managecache*/ -public void setManagecache(String pManagecache){ - managecache=pManagecache; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransactionReports))return false; - TgeneTransactionReports that = (TgeneTransactionReports) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransactionReports -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransactionReports -*/ -public Object createInstance(){ - TgeneTransactionReports instance=new TgeneTransactionReports(); - instance.setPk(new TgeneTransactionReportsKey()); - return instance; -} -/**Clona la entidad TgeneTransactionReports -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransactionReports p=(TgeneTransactionReports)this.clone(); - p.setPk((TgeneTransactionReportsKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReportsKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReportsKey.java.svn-base deleted file mode 100644 index bbbf736..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/trans/report/.svn/text-base/TgeneTransactionReportsKey.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pgeneral.trans.report; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSACTIONREPORTS*/ -@Embeddable -public class TgeneTransactionReportsKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSACTIONMODULE", nullable=false,updatable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false,updatable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false,updatable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="SEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia del comando -*/ -private Integer sequence; - -/**Contructor por defecto*/ -public TgeneTransactionReportsKey(){} -/**Contructor de TgeneTransactionReportsKey -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -@param pSequence Secuencia del comando -*/ -public TgeneTransactionReportsKey(String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion,Integer pSequence){ - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; - sequence=pSequence; -} -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de sequence -@return valor de sequence*/ -public Integer getSequence(){ - return sequence; -} -/**Fija el valor de sequence -@param pSequence nuevo Valor de sequence*/ -public void setSequence(Integer pSequence){ - sequence=pSequence; -} - -/**Implementacin de la comparacin de TgeneTransactionReportsKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransactionReportsKey))return false; - TgeneTransactionReportsKey that = (TgeneTransactionReportsKey) o; - if (this.getTransactionmodule() == null || that.getTransactionmodule() == null){ - return false; - } - if (! this.getTransactionmodule().equals(that.getTransactionmodule())){ - return false; - } - if (this.getTransactioncode() == null || that.getTransactioncode() == null){ - return false; - } - if (! this.getTransactioncode().equals(that.getTransactioncode())){ - return false; - } - if (this.getTransactionversion() == null || that.getTransactionversion() == null){ - return false; - } - if (! this.getTransactionversion().equals(that.getTransactionversion())){ - return false; - } - if (this.getSequence() == null || that.getSequence() == null){ - return false; - } - if (! this.getSequence().equals(that.getSequence())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransactionReportsKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransactionmodule() == null ? 0 : this.getTransactionmodule().hashCode()); - result = result * 37 + (this.getTransactioncode() == null ? 0 : this.getTransactioncode().hashCode()); - result = result * 37 + (this.getTransactionversion() == null ? 0 : this.getTransactionversion().hashCode()); - result = result * 37 + (this.getSequence() == null ? 0 : this.getSequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/entries deleted file mode 100644 index 1af94c2..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneMaturationKey.java -file - - - - -2022-07-28T03:40:29.724747Z -1caa3711c28a0541c8dff4eb823119a6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3844 - -TgeneTransferDetailKey.java -file - - - - -2022-07-28T03:40:29.724747Z -4b737d2209fdb122f7e3bb6ccce1b3d5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7032 - -TgeneMaturation.java -file - - - - -2022-07-28T03:40:29.725747Z -f8d6e931958aeb53bbb924dfc5336ad5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6313 - -TgeneTransfer.java -file - - - - -2022-07-28T03:40:29.725747Z -736ce0f4729eddbec35eb4090ff92076 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5898 - -TgeneTransferDetail.java -file - - - - -2022-07-28T03:40:29.725747Z -d6019621aa2affde840d35f0c1510de1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9022 - -TgeneTransferStatus.java -file - - - - -2022-07-28T03:40:29.725747Z -32f3b48e749d29edc23a0c05e1e500cc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5068 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturation.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturation.java.svn-base deleted file mode 100644 index c0cbb7c..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturation.java.svn-base +++ /dev/null @@ -1,231 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEMATURATION*/ -@Entity(name="TgeneMaturation") -@Table(name="TGENEMATURATION") -public class TgeneMaturation extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneMaturation -*/ -@EmbeddedId -private TgeneMaturationKey pk; -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=true) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=true) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=true) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="DEBITITEM", nullable=true) - -/** -* Item debito -*/ -private Integer debititem; - -@Column(name="CREDITITEM", nullable=true) - -/** -* Item credito -*/ -private Integer credititem; - -/**Contructor por defecto*/ -public TgeneMaturation(){ -} -/**Contructor de TgeneMaturation -@param pPk Clave Primaria del entity -*/ -public TgeneMaturation(TgeneMaturationKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneMaturation -*/ -public static TgeneMaturation find(EntityManager pEntityManager,TgeneMaturationKey pKey) throws Exception{ - TgeneMaturation obj = pEntityManager.find(TgeneMaturation.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneMaturation -@return El objeto que referencia a la Clave primaria de TgeneMaturation -*/ -public TgeneMaturationKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneMaturation -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneMaturation -*/ -public void setPk(TgeneMaturationKey pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de debititem -@return valor de debititem*/ -public Integer getDebititem(){ - return debititem; -} -/**Fija el valor de debititem -@param pDebititem nuevo Valor de debititem*/ -public void setDebititem(Integer pDebititem){ - debititem=pDebititem; -} - -/**Obtiene el valor de credititem -@return valor de credititem*/ -public Integer getCredititem(){ - return credititem; -} -/**Fija el valor de credititem -@param pCredititem nuevo Valor de credititem*/ -public void setCredititem(Integer pCredititem){ - credititem=pCredititem; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneMaturation))return false; - TgeneMaturation that = (TgeneMaturation) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneMaturation -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneMaturation -*/ -public Object createInstance(){ - TgeneMaturation instance=new TgeneMaturation(); - instance.setPk(new TgeneMaturationKey()); - return instance; -} -/**Clona la entidad TgeneMaturation -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneMaturation p=(TgeneMaturation)this.clone(); - p.setPk((TgeneMaturationKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturationKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturationKey.java.svn-base deleted file mode 100644 index de36b70..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneMaturationKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEMATURATION*/ -@Embeddable -public class TgeneMaturationKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -/**Contructor por defecto*/ -public TgeneMaturationKey(){} -/**Contructor de TgeneMaturationKey -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -public TgeneMaturationKey(String pBalancetype,String pBalancegroup){ - balancetype=pBalancetype; - balancegroup=pBalancegroup; -} -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Implementacin de la comparacin de TgeneMaturationKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneMaturationKey))return false; - TgeneMaturationKey that = (TgeneMaturationKey) o; - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneMaturationKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransfer.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransfer.java.svn-base deleted file mode 100644 index df7255b..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransfer.java.svn-base +++ /dev/null @@ -1,214 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSFER*/ -@Entity(name="TgeneTransfer") -@Table(name="TGENETRANSFER") -public class TgeneTransfer extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransfer -*/ -@Id -@Column(name="TRANSFERCODE" ,nullable=false, updatable=false) -private Integer pk; -@Column(name="MODULECODE", nullable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="TRANSACTIONMODULE", nullable=true) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=true) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=true) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="DESCRIPTION", nullable=true) - -/** -* Descripcion de la transferencia. -*/ -private String description; - -/**Contructor por defecto*/ -public TgeneTransfer(){ -} -/**Contructor de TgeneTransfer -@param pPk Clave Primaria del entity -@param pModulecode Codigo de modulo -*/ -public TgeneTransfer(Integer pPk,String pModulecode){ - this(); - pk=pPk; - modulecode=pModulecode; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransfer -*/ -public static TgeneTransfer find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneTransfer obj = pEntityManager.find(TgeneTransfer.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransfer -@return El objeto que referencia a la Clave primaria de TgeneTransfer -*/ -public Integer getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransfer -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransfer -*/ -public void setPk(Integer pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de description -@return valor de description*/ -public String getDescription(){ - return description; -} -/**Fija el valor de description -@param pDescription nuevo Valor de description*/ -public void setDescription(String pDescription){ - description=pDescription; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransfer))return false; - TgeneTransfer that = (TgeneTransfer) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransfer -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransfer -*/ -public Object createInstance(){ - TgeneTransfer instance=new TgeneTransfer(); - return instance; -} -/**Clona la entidad TgeneTransfer -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransfer p=(TgeneTransfer)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetail.java.svn-base deleted file mode 100644 index 9d51ac8..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetail.java.svn-base +++ /dev/null @@ -1,329 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.SQLQuery; -import org.hibernate.Session; - -import com.fp.dto.hb.Cache; -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSFERDETAIL */ -@Entity(name = "TgeneTransferDetail") -@Table(name = "TGENETRANSFERDETAIL") -public class TgeneTransferDetail extends com.fp.dto.AbstractDataTransport - implements - Serializable,HibernateBean,Cloneable,Cache { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - /** - * Clave primaria de la Entidad TgeneTransferDetail - */ - @EmbeddedId - private TgeneTransferDetailKey pk; - @Column(name = "TRANSACTIONMODULE", nullable = true) - /** - * Modulo al que pertence la transaccion - */ - private String transactionmodule; - - @Column(name = "TRANSACTIONCODE", nullable = true) - /** - * Codigo de transaccion dentro del modulo - */ - private Integer transactioncode; - - @Column(name = "TRANSACTIONVERSION", nullable = true) - /** - * Version de transaccion - */ - private Integer transactionversion; - - @Column(name = "DEBITITEM", nullable = true) - /** - * Codigo de rubro debito. - */ - private Integer debititem; - - @Column(name = "CREDITITEM", nullable = true) - /** - * Codigo de rubro credito. - */ - private Integer credititem; - - @Column(name = "REVERSEDEBITITEM", nullable = true) - /** - * Codigo de rubro asociado al debito de reverso. - */ - private Integer reversedebititem; - - @Column(name = "REVERSECREDITITEM", nullable = true) - /** - * Codigo de rubro asociado al credito de reverso. - */ - private Integer reversecredititem; - - /** Contructor por defecto */ - public TgeneTransferDetail() { - } - /** - * Contructor de TgeneTransferDetail - * - * @param pPk Clave Primaria del entity - */ - public TgeneTransferDetail(TgeneTransferDetailKey pPk) { - this(); - pk = pPk; - } - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return TgeneTransferDetail - */ - public static TgeneTransferDetail find(EntityManager pEntityManager, TgeneTransferDetailKey pKey) throws Exception { - TgeneTransferDetail obj = pEntityManager.find(TgeneTransferDetail.class, pKey); - return obj; - } - /** - * Entrega la Clave primaria de TgeneTransferDetail - * - * @return El objeto que referencia a la Clave primaria de TgeneTransferDetail - */ - public TgeneTransferDetailKey getPk() { - return pk; - } - /** - * Fija un nuevo valor a la Clave primaria de TgeneTransferDetail - * - * @param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransferDetail - */ - public void setPk(TgeneTransferDetailKey pPk) { - pk = pPk; - } - /** - * Obtiene el valor de transactionmodule - * - * @return valor de transactionmodule - */ - public String getTransactionmodule() { - return transactionmodule; - } - /** - * Fija el valor de transactionmodule - * - * @param pTransactionmodule nuevo Valor de transactionmodule - */ - public void setTransactionmodule(String pTransactionmodule) { - transactionmodule = pTransactionmodule; - } - - /** - * Obtiene el valor de transactioncode - * - * @return valor de transactioncode - */ - public Integer getTransactioncode() { - return transactioncode; - } - /** - * Fija el valor de transactioncode - * - * @param pTransactioncode nuevo Valor de transactioncode - */ - public void setTransactioncode(Integer pTransactioncode) { - transactioncode = pTransactioncode; - } - - /** - * Obtiene el valor de transactionversion - * - * @return valor de transactionversion - */ - public Integer getTransactionversion() { - return transactionversion; - } - /** - * Fija el valor de transactionversion - * - * @param pTransactionversion nuevo Valor de transactionversion - */ - public void setTransactionversion(Integer pTransactionversion) { - transactionversion = pTransactionversion; - } - - /** - * Obtiene el valor de debititem - * - * @return valor de debititem - */ - public Integer getDebititem() { - return debititem; - } - /** - * Fija el valor de debititem - * - * @param pDebititem nuevo Valor de debititem - */ - public void setDebititem(Integer pDebititem) { - debititem = pDebititem; - } - - /** - * Obtiene el valor de credititem - * - * @return valor de credititem - */ - public Integer getCredititem() { - return credititem; - } - /** - * Fija el valor de credititem - * - * @param pCredititem nuevo Valor de credititem - */ - public void setCredititem(Integer pCredititem) { - credititem = pCredititem; - } - - /** - * Obtiene el valor de reversedebititem - * - * @return valor de reversedebititem - */ - public Integer getReversedebititem() { - return reversedebititem; - } - /** - * Fija el valor de reversedebititem - * - * @param pReversedebititem nuevo Valor de reversedebititem - */ - public void setReversedebititem(Integer pReversedebititem) { - reversedebititem = pReversedebititem; - } - - /** - * Obtiene el valor de reversecredititem - * - * @return valor de reversecredititem - */ - public Integer getReversecredititem() { - return reversecredititem; - } - /** - * Fija el valor de reversecredititem - * - * @param pReversecredititem nuevo Valor de reversecredititem - */ - public void setReversecredititem(Integer pReversecredititem) { - reversecredititem = pReversecredititem; - } - - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof TgeneTransferDetail)) - return false; - TgeneTransferDetail that = (TgeneTransferDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - /** - * Implementacin del metodo hashCode de la la entidad TgeneTransferDetail - * - * @return el hashCode la instancia - */ - public int hashCode() { - if (this.hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; - } - /** Implementacin toString */ - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - /** Implementacin de la creacin de un bean en blanco TgeneTransferDetail */ - public Object createInstance() { - TgeneTransferDetail instance = new TgeneTransferDetail(); - instance.setPk(new TgeneTransferDetailKey()); - return instance; - } - /** - * Clona la entidad TgeneTransferDetail - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - public Object cloneMe() throws CloneNotSupportedException { - TgeneTransferDetail p = (TgeneTransferDetail) this.clone(); - p.setPk((TgeneTransferDetailKey) this.pk.cloneMe()); - return p; - } - - //Metodos manuales. - /**sentencia que elimina tgenetellertransferdetail*/ - private static final String DEL_TRANSF_DETAIL = - " delete from TGENETELLERTRANSFERDETAIL t " - + " where t.WORKINGDATE = :workingdate " - + " and t.USERCODE = :usercode " - + " and t.TRANSFERNUMBER = :transfernumber"; - /** - * Elimina un registro de la tabla para el usuario, fecha de trabajo y numero de transferencia. - * @param pEntityManager Referencia la session de la base de datos. - * @param pWorkingdate Fecha de trabajo. - * @param pUser Codigo de usuario. - * @param pTransfernumber Numero de transferencia. - * @throws Exception - */ - public static void delete(EntityManager pEntityManager,Date pWorkingdate,String pUser,Integer pTransfernumber) throws Exception { - //Elimina tgenetellertransferdetail - Session s = (Session)pEntityManager.getDelegate(); - SQLQuery sqldet = s.createSQLQuery(DEL_TRANSF_DETAIL); - sqldet.setDate("workingdate", pWorkingdate); - sqldet.setString("usercode", pUser); - sqldet.setInteger("transfernumber", pTransfernumber); - sqldet.executeUpdate(); - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetailKey.java.svn-base deleted file mode 100644 index 278d5cb..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferDetailKey.java.svn-base +++ /dev/null @@ -1,232 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENETRANSFERDETAIL*/ -@Embeddable -public class TgeneTransferDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="TRANSFERCODE", nullable=false,updatable=false) - -/** -* Codigo de transferencia -*/ -private Integer transfercode; - -@Column(name="MODULECODE", nullable=false,updatable=false) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="BALANCETYPE", nullable=false,updatable=false) - -/** -* Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -*/ -private String balancetype; - -@Column(name="BALANCEGROUP", nullable=false,updatable=false) - -/** -* Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -*/ -private String balancegroup; - -@Column(name="STATUSFROM", nullable=false,updatable=false) - -/** -* Estatus de cuenta actual -*/ -private String statusfrom; - -@Column(name="STATUSTO", nullable=false,updatable=false) - -/** -* Estatus al que se realiza la transaferencia -*/ -private String statusto; - -/**Contructor por defecto*/ -public TgeneTransferDetailKey(){} -/**Contructor de TgeneTransferDetailKey -@param pTransfercode Codigo de transferencia -@param pModulecode Codigo de modulo -@param pBalancetype Cdigo de tipo de saldo. Efectivo, Bloqueado , Pignorado, Retenciones Locales, remesas ..Etc -@param pBalancegroup Codigo del grupo de balance 1 Activo, 2 Pasivo, 3 Patrimonio .. 62 contingente deudor 61 por contra deudor -@param pStatusfrom Estatus de cuenta actual -@param pStatusto Estatus al que se realiza la transaferencia -*/ -public TgeneTransferDetailKey(Integer pTransfercode,String pModulecode,String pBalancetype,String pBalancegroup,String pStatusfrom,String pStatusto){ - transfercode=pTransfercode; - modulecode=pModulecode; - balancetype=pBalancetype; - balancegroup=pBalancegroup; - statusfrom=pStatusfrom; - statusto=pStatusto; -} -/**Obtiene el valor de transfercode -@return valor de transfercode*/ -public Integer getTransfercode(){ - return transfercode; -} -/**Fija el valor de transfercode -@param pTransfercode nuevo Valor de transfercode*/ -public void setTransfercode(Integer pTransfercode){ - transfercode=pTransfercode; -} - -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de balancetype -@return valor de balancetype*/ -public String getBalancetype(){ - return balancetype; -} -/**Fija el valor de balancetype -@param pBalancetype nuevo Valor de balancetype*/ -public void setBalancetype(String pBalancetype){ - balancetype=pBalancetype; -} - -/**Obtiene el valor de balancegroup -@return valor de balancegroup*/ -public String getBalancegroup(){ - return balancegroup; -} -/**Fija el valor de balancegroup -@param pBalancegroup nuevo Valor de balancegroup*/ -public void setBalancegroup(String pBalancegroup){ - balancegroup=pBalancegroup; -} - -/**Obtiene el valor de statusfrom -@return valor de statusfrom*/ -public String getStatusfrom(){ - return statusfrom; -} -/**Fija el valor de statusfrom -@param pStatusfrom nuevo Valor de statusfrom*/ -public void setStatusfrom(String pStatusfrom){ - statusfrom=pStatusfrom; -} - -/**Obtiene el valor de statusto -@return valor de statusto*/ -public String getStatusto(){ - return statusto; -} -/**Fija el valor de statusto -@param pStatusto nuevo Valor de statusto*/ -public void setStatusto(String pStatusto){ - statusto=pStatusto; -} - -/**Implementacin de la comparacin de TgeneTransferDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneTransferDetailKey))return false; - TgeneTransferDetailKey that = (TgeneTransferDetailKey) o; - if (this.getTransfercode() == null || that.getTransfercode() == null){ - return false; - } - if (! this.getTransfercode().equals(that.getTransfercode())){ - return false; - } - if (this.getModulecode() == null || that.getModulecode() == null){ - return false; - } - if (! this.getModulecode().equals(that.getModulecode())){ - return false; - } - if (this.getBalancetype() == null || that.getBalancetype() == null){ - return false; - } - if (! this.getBalancetype().equals(that.getBalancetype())){ - return false; - } - if (this.getBalancegroup() == null || that.getBalancegroup() == null){ - return false; - } - if (! this.getBalancegroup().equals(that.getBalancegroup())){ - return false; - } - if (this.getStatusfrom() == null || that.getStatusfrom() == null){ - return false; - } - if (! this.getStatusfrom().equals(that.getStatusfrom())){ - return false; - } - if (this.getStatusto() == null || that.getStatusto() == null){ - return false; - } - if (! this.getStatusto().equals(that.getStatusto())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneTransferDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getTransfercode() == null ? 0 : this.getTransfercode().hashCode()); - result = result * 37 + (this.getModulecode() == null ? 0 : this.getModulecode().hashCode()); - result = result * 37 + (this.getBalancetype() == null ? 0 : this.getBalancetype().hashCode()); - result = result * 37 + (this.getBalancegroup() == null ? 0 : this.getBalancegroup().hashCode()); - result = result * 37 + (this.getStatusfrom() == null ? 0 : this.getStatusfrom().hashCode()); - result = result * 37 + (this.getStatusto() == null ? 0 : this.getStatusto().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferStatus.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferStatus.java.svn-base deleted file mode 100644 index af0dfce..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/transf/.svn/text-base/TgeneTransferStatus.java.svn-base +++ /dev/null @@ -1,174 +0,0 @@ -package com.fp.persistence.pgeneral.transf; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENETRANSFERSTATUS*/ -@Entity(name="TgeneTransferStatus") -@Table(name="TGENETRANSFERSTATUS") -public class TgeneTransferStatus extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneTransferStatus -*/ -@Id -@Column(name="CREDITTYPECODE" ,nullable=false, updatable=false) -private String pk; -@Column(name="MODULECODE", nullable=true) - -/** -* Codigo de modulo -*/ -private String modulecode; - -@Column(name="EXPIREDSTATUSCODE", nullable=true) - -/** -* Estatus de cuotas que llegaron a la fecha de vencimiento. -*/ -private String expiredstatuscode; - -@Column(name="FUTURESTATUSCODE", nullable=true) - -/** -* Estatus de cotas cuya fecha de vencimiento esta en el futuro. -*/ -private String futurestatuscode; - -/**Contructor por defecto*/ -public TgeneTransferStatus(){ -} -/**Contructor de TgeneTransferStatus -@param pPk Clave Primaria del entity -*/ -public TgeneTransferStatus(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneTransferStatus -*/ -public static TgeneTransferStatus find(EntityManager pEntityManager,Object pKey) throws Exception{ - TgeneTransferStatus obj = pEntityManager.find(TgeneTransferStatus.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneTransferStatus -@return El objeto que referencia a la Clave primaria de TgeneTransferStatus -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneTransferStatus -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneTransferStatus -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de modulecode -@return valor de modulecode*/ -public String getModulecode(){ - return modulecode; -} -/**Fija el valor de modulecode -@param pModulecode nuevo Valor de modulecode*/ -public void setModulecode(String pModulecode){ - modulecode=pModulecode; -} - -/**Obtiene el valor de expiredstatuscode -@return valor de expiredstatuscode*/ -public String getExpiredstatuscode(){ - return expiredstatuscode; -} -/**Fija el valor de expiredstatuscode -@param pExpiredstatuscode nuevo Valor de expiredstatuscode*/ -public void setExpiredstatuscode(String pExpiredstatuscode){ - expiredstatuscode=pExpiredstatuscode; -} - -/**Obtiene el valor de futurestatuscode -@return valor de futurestatuscode*/ -public String getFuturestatuscode(){ - return futurestatuscode; -} -/**Fija el valor de futurestatuscode -@param pFuturestatuscode nuevo Valor de futurestatuscode*/ -public void setFuturestatuscode(String pFuturestatuscode){ - futurestatuscode=pFuturestatuscode; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneTransferStatus))return false; - TgeneTransferStatus that = (TgeneTransferStatus) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneTransferStatus -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneTransferStatus -*/ -public Object createInstance(){ - TgeneTransferStatus instance=new TgeneTransferStatus(); - return instance; -} -/**Clona la entidad TgeneTransferStatus -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneTransferStatus p=(TgeneTransferStatus)this.clone(); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/entries b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/entries deleted file mode 100644 index f52c76a..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneVaultDetail.java -file - - - - -2022-07-28T03:40:29.654746Z -43d77fc207ca43d956e20cb45d2e6b03 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4458 - -TgeneVaultKey.java -file - - - - -2022-07-28T03:40:29.655746Z -df1c728629d1d0cd47308e67ee37837c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5788 - -TgeneVaultDetailKey.java -file - - - - -2022-07-28T03:40:29.655746Z -6c93cc2cd55fddf6d214708f9a18297b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8554 - -TgeneVault.java -file - - - - -2022-07-28T03:40:29.655746Z -24608df41a31b5dc867330f8426fa1ea -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3884 - diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVault.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVault.java.svn-base deleted file mode 100644 index ea0b882..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVault.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.persistence.pgeneral.vault; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEVAULT*/ -@Entity(name="TgeneVault") -@Table(name="TGENEVAULT") -public class TgeneVault extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneVault -*/ -@EmbeddedId -private TgeneVaultKey pk; -@Column(name="BALANCE", nullable=true) - -/** -* Saldo de boveda -*/ -private BigDecimal balance; - -/**Contructor por defecto*/ -public TgeneVault(){ -} -/**Contructor de TgeneVault -@param pPk Clave Primaria del entity -*/ -public TgeneVault(TgeneVaultKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneVault -*/ -public static TgeneVault find(EntityManager pEntityManager,TgeneVaultKey pKey) throws Exception{ - TgeneVault obj = pEntityManager.find(TgeneVault.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneVault -@return El objeto que referencia a la Clave primaria de TgeneVault -*/ -public TgeneVaultKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneVault -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneVault -*/ -public void setPk(TgeneVaultKey pPk){ - pk=pPk; -} -/**Obtiene el valor de balance -@return valor de balance*/ -public BigDecimal getBalance(){ - return balance; -} -/**Fija el valor de balance -@param pBalance nuevo Valor de balance*/ -public void setBalance(BigDecimal pBalance){ - balance=pBalance; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneVault))return false; - TgeneVault that = (TgeneVault) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneVault -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneVault -*/ -public Object createInstance(){ - TgeneVault instance=new TgeneVault(); - instance.setPk(new TgeneVaultKey()); - return instance; -} -/**Clona la entidad TgeneVault -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneVault p=(TgeneVault)this.clone(); - p.setPk((TgeneVaultKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetail.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetail.java.svn-base deleted file mode 100644 index d9d5e98..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetail.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.persistence.pgeneral.vault; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TGENEVAULTDETAIL*/ -@Entity(name="TgeneVaultDetail") -@Table(name="TGENEVAULTDETAIL") -public class TgeneVaultDetail extends com.fp.dto.AbstractDataBalanceTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TgeneVaultDetail -*/ -@EmbeddedId -private TgeneVaultDetailKey pk; -@Column(name="QUANTITY", nullable=true) - -/** -* Numero de billetes o monedas por denominacion -*/ -private Integer quantity; - -@Column(name="TOTAL", nullable=true) - -/** -* Total de la denominacion -*/ -private BigDecimal total; - -/**Contructor por defecto*/ -public TgeneVaultDetail(){ -} -/**Contructor de TgeneVaultDetail -@param pPk Clave Primaria del entity -*/ -public TgeneVaultDetail(TgeneVaultDetailKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TgeneVaultDetail -*/ -public static TgeneVaultDetail find(EntityManager pEntityManager,TgeneVaultDetailKey pKey) throws Exception{ - TgeneVaultDetail obj = pEntityManager.find(TgeneVaultDetail.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TgeneVaultDetail -@return El objeto que referencia a la Clave primaria de TgeneVaultDetail -*/ -public TgeneVaultDetailKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TgeneVaultDetail -@param pPk El objeto que referencia a la nueva Clave primaria de TgeneVaultDetail -*/ -public void setPk(TgeneVaultDetailKey pPk){ - pk=pPk; -} -/**Obtiene el valor de quantity -@return valor de quantity*/ -public Integer getQuantity(){ - return quantity; -} -/**Fija el valor de quantity -@param pQuantity nuevo Valor de quantity*/ -public void setQuantity(Integer pQuantity){ - quantity=pQuantity; -} - -/**Obtiene el valor de total -@return valor de total*/ -public BigDecimal getTotal(){ - return total; -} -/**Fija el valor de total -@param pTotal nuevo Valor de total*/ -public void setTotal(BigDecimal pTotal){ - total=pTotal; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TgeneVaultDetail))return false; - TgeneVaultDetail that = (TgeneVaultDetail) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacin del metodo hashCode de la la entidad TgeneVaultDetail -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacin de la creacin de un bean en blanco TgeneVaultDetail -*/ -public Object createInstance(){ - TgeneVaultDetail instance=new TgeneVaultDetail(); - instance.setPk(new TgeneVaultDetailKey()); - return instance; -} -/**Clona la entidad TgeneVaultDetail -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TgeneVaultDetail p=(TgeneVaultDetail)this.clone(); - p.setPk((TgeneVaultDetailKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetailKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetailKey.java.svn-base deleted file mode 100644 index 9ff0b9d..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultDetailKey.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.persistence.pgeneral.vault; - -import javax.persistence.Column; -import java.io.Serializable; -import java.math.BigDecimal; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEVAULTDETAIL*/ -@Embeddable -public class TgeneVaultDetailKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -@Column(name="CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 01 Natural, 02 Juridico -*/ -private String catalog; - -@Column(name="CATALOGCODE", nullable=false,updatable=false) - -/** -* Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -*/ -private String catalogcode; - -@Column(name="DENOMINATIONVALUE", nullable=false,updatable=false) - -/** -* Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -private BigDecimal denominationvalue; - -/**Contructor por defecto*/ -public TgeneVaultDetailKey(){} -/**Contructor de TgeneVaultDetailKey -@param pUsercode Codigo de usuario -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pCurrencycode Codigo de moneda -@param pCatalog Codigo de catalogo 01 Natural, 02 Juridico -@param pCatalogcode Codigo de tabla de catalogo 01 Codigo de tabla de tipos de persona -@param pDenominationvalue Valor de la denominacion, ejemplo billetes de 100, 50, 20,10 etc -*/ -public TgeneVaultDetailKey(String pUsercode,Integer pOfficecode,Integer pBranchcode,Integer pCompanycode,String pCurrencycode,String pCatalog,String pCatalogcode,BigDecimal pDenominationvalue){ - usercode=pUsercode; - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; - currencycode=pCurrencycode; - catalog=pCatalog; - catalogcode=pCatalogcode; - denominationvalue=pDenominationvalue; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Obtiene el valor de catalog -@return valor de catalog*/ -public String getCatalog(){ - return catalog; -} -/**Fija el valor de catalog -@param pCatalog nuevo Valor de catalog*/ -public void setCatalog(String pCatalog){ - catalog=pCatalog; -} - -/**Obtiene el valor de catalogcode -@return valor de catalogcode*/ -public String getCatalogcode(){ - return catalogcode; -} -/**Fija el valor de catalogcode -@param pCatalogcode nuevo Valor de catalogcode*/ -public void setCatalogcode(String pCatalogcode){ - catalogcode=pCatalogcode; -} - -/**Obtiene el valor de denominationvalue -@return valor de denominationvalue*/ -public BigDecimal getDenominationvalue(){ - return denominationvalue; -} -/**Fija el valor de denominationvalue -@param pDenominationvalue nuevo Valor de denominationvalue*/ -public void setDenominationvalue(BigDecimal pDenominationvalue){ - denominationvalue=pDenominationvalue; -} - -/**Implementacin de la comparacin de TgeneVaultDetailKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneVaultDetailKey))return false; - TgeneVaultDetailKey that = (TgeneVaultDetailKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - if (this.getCatalog() == null || that.getCatalog() == null){ - return false; - } - if (! this.getCatalog().equals(that.getCatalog())){ - return false; - } - if (this.getCatalogcode() == null || that.getCatalogcode() == null){ - return false; - } - if (! this.getCatalogcode().equals(that.getCatalogcode())){ - return false; - } - if (this.getDenominationvalue() == null || that.getDenominationvalue() == null){ - return false; - } - if (! this.getDenominationvalue().equals(that.getDenominationvalue())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneVaultDetailKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - result = result * 37 + (this.getCatalog() == null ? 0 : this.getCatalog().hashCode()); - result = result * 37 + (this.getCatalogcode() == null ? 0 : this.getCatalogcode().hashCode()); - result = result * 37 + (this.getDenominationvalue() == null ? 0 : this.getDenominationvalue().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultKey.java.svn-base b/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultKey.java.svn-base deleted file mode 100644 index b175d89..0000000 --- a/base/persistence/pgeneral/src/main/java/com/fp/persistence/pgeneral/vault/.svn/text-base/TgeneVaultKey.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.persistence.pgeneral.vault; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TGENEVAULT*/ -@Embeddable -public class TgeneVaultKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="USERCODE", nullable=false,updatable=false) - -/** -* Codigo de usuario -*/ -private String usercode; - -@Column(name="OFFICECODE", nullable=false,updatable=false) - -/** -* Codigo de oficina -*/ -private Integer officecode; - -@Column(name="BRANCHCODE", nullable=false,updatable=false) - -/** -* Codigo de sucursal -*/ -private Integer branchcode; - -@Column(name="COMPANYCODE", nullable=false,updatable=false) - -/** -* Codigo de compania al que pertenece la oficina -*/ -private Integer companycode; - -@Column(name="CURRENCYCODE", nullable=false,updatable=false) - -/** -* Codigo de moneda -*/ -private String currencycode; - -/**Contructor por defecto*/ -public TgeneVaultKey(){} -/**Contructor de TgeneVaultKey -@param pUsercode Codigo de usuario -@param pOfficecode Codigo de oficina -@param pBranchcode Codigo de sucursal -@param pCompanycode Codigo de compania al que pertenece la oficina -@param pCurrencycode Codigo de moneda -*/ -public TgeneVaultKey(String pUsercode,Integer pOfficecode,Integer pBranchcode,Integer pCompanycode,String pCurrencycode){ - usercode=pUsercode; - officecode=pOfficecode; - branchcode=pBranchcode; - companycode=pCompanycode; - currencycode=pCurrencycode; -} -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de currencycode -@return valor de currencycode*/ -public String getCurrencycode(){ - return currencycode; -} -/**Fija el valor de currencycode -@param pCurrencycode nuevo Valor de currencycode*/ -public void setCurrencycode(String pCurrencycode){ - currencycode=pCurrencycode; -} - -/**Implementacin de la comparacin de TgeneVaultKey -@param o Objeto de comparacin -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TgeneVaultKey))return false; - TgeneVaultKey that = (TgeneVaultKey) o; - if (this.getUsercode() == null || that.getUsercode() == null){ - return false; - } - if (! this.getUsercode().equals(that.getUsercode())){ - return false; - } - if (this.getOfficecode() == null || that.getOfficecode() == null){ - return false; - } - if (! this.getOfficecode().equals(that.getOfficecode())){ - return false; - } - if (this.getBranchcode() == null || that.getBranchcode() == null){ - return false; - } - if (! this.getBranchcode().equals(that.getBranchcode())){ - return false; - } - if (this.getCompanycode() == null || that.getCompanycode() == null){ - return false; - } - if (! this.getCompanycode().equals(that.getCompanycode())){ - return false; - } - if (this.getCurrencycode() == null || that.getCurrencycode() == null){ - return false; - } - if (! this.getCurrencycode().equals(that.getCurrencycode())){ - return false; - } - return true; -} -/**Implementacin del mtodo hashCode bajo el patrn de Bloch -@return hashCode de la instancia TgeneVaultKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getUsercode() == null ? 0 : this.getUsercode().hashCode()); - result = result * 37 + (this.getOfficecode() == null ? 0 : this.getOfficecode().hashCode()); - result = result * 37 + (this.getBranchcode() == null ? 0 : this.getBranchcode().hashCode()); - result = result * 37 + (this.getCompanycode() == null ? 0 : this.getCompanycode().hashCode()); - result = result * 37 + (this.getCurrencycode() == null ? 0 : this.getCurrencycode().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacin toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pgeneral/src/main/resources/.svn/entries b/base/persistence/pgeneral/src/main/resources/.svn/entries deleted file mode 100644 index 77c30f0..0000000 --- a/base/persistence/pgeneral/src/main/resources/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pgeneral/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/plog/.svn/dir-prop-base b/base/persistence/plog/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/plog/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/plog/.svn/entries b/base/persistence/plog/.svn/entries deleted file mode 100644 index 8708a7b..0000000 --- a/base/persistence/plog/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog -svn://172.17.26.185/COMACO - - - -2014-10-17T05:34:35.839741Z -1670 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:26.438733Z -2fa09b88961b71498cd63487cfe0c966 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -527 - diff --git a/base/persistence/plog/.svn/text-base/pom.xml.svn-base b/base/persistence/plog/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 44cdd84..0000000 --- a/base/persistence/plog/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,14 +0,0 @@ - - - 4.0.0 - - persistence - com.fp.base - 2.1 - - com.fp.base.persistence - plog - 2.1 - plog - diff --git a/base/persistence/plog/src/.svn/entries b/base/persistence/plog/src/.svn/entries deleted file mode 100644 index b08ea0d..0000000 --- a/base/persistence/plog/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/plog/src/main/.svn/entries b/base/persistence/plog/src/main/.svn/entries deleted file mode 100644 index ccdcd2f..0000000 --- a/base/persistence/plog/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/plog/src/main/java/.svn/entries b/base/persistence/plog/src/main/java/.svn/entries deleted file mode 100644 index 603bda3..0000000 --- a/base/persistence/plog/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/plog/src/main/java/com/.svn/entries b/base/persistence/plog/src/main/java/com/.svn/entries deleted file mode 100644 index 57bb890..0000000 --- a/base/persistence/plog/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/plog/src/main/java/com/fp/.svn/entries b/base/persistence/plog/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 925ed27..0000000 --- a/base/persistence/plog/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/plog/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 0f44281..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -plog -dir - diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/.svn/entries b/base/persistence/plog/src/main/java/com/fp/persistence/plog/.svn/entries deleted file mode 100644 index f5853f8..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java/com/fp/persistence/plog -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -log -dir - diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/entries b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/entries deleted file mode 100644 index 20c6860..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/main/java/com/fp/persistence/plog/log -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TlogLoadError.java -file - - - - -2022-07-28T03:40:26.128731Z -ce1a8a23a84307b55847386b5236be50 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4542 - -TlogLoad.java -file - - - - -2022-07-28T03:40:26.128731Z -630025b9bcdbd709cfea6eeef8461756 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4450 - -TlogLoadErrorKey.java -file - - - - -2022-07-28T03:40:26.129731Z -cee290eaaa2afc3beeeef492c10ecdd1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4234 - -TlogHeader.java -file - - - - -2022-07-28T03:40:26.129731Z -e3aaa5027dd23e9399a02d9b2d040b08 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7925 - -TlogLoadKey.java -file - - - - -2022-07-28T03:40:26.129731Z -9c6f35a1bab0778d028a703c4372b303 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3369 - diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogHeader.java.svn-base b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogHeader.java.svn-base deleted file mode 100644 index 667f1e2..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogHeader.java.svn-base +++ /dev/null @@ -1,307 +0,0 @@ -package com.fp.persistence.plog.log; - -import javax.persistence.Entity; -import java.sql.Timestamp; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TLOGHEADER*/ -@Entity(name="TlogHeader") -@Table(name="TLOGHEADER") -public class TlogHeader extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TlogHeader -*/ -@Id -@Column(name="JOURNALID" ,nullable=false, updatable=false) -private String pk; -@Column(name="ACCOUNTINGDATE", nullable=true) - -/** -* Fecha contable en la que se ejecuta la transaccion -*/ -private Timestamp accountingdate; - -@Column(name="TRANSACTIONMODULE", nullable=false) - -/** -* Modulo al que pertence la transaccion -*/ -private String transactionmodule; - -@Column(name="TRANSACTIONCODE", nullable=false) - -/** -* Codigo de transaccion dentro del modulo -*/ -private Integer transactioncode; - -@Column(name="TRANSACTIONVERSION", nullable=false) - -/** -* Version de transaccion -*/ -private Integer transactionversion; - -@Column(name="REALDATE", nullable=true) - -/** -* Fecha real de ejecucion de una transaccion -*/ -private Timestamp realdate; - -@Column(name="COMPANYCODE", nullable=true) - -/** -* Codigo de compania -*/ -private Integer companycode; - -@Column(name="BRANCHCODE", nullable=true) - -/** -* Codigo de sucursal de ejecucion de la transaccion. -*/ -private Integer branchcode; - -@Column(name="OFFICECODE", nullable=true) - -/** -* Codigo de oficina de ejecucion de la transaccion -*/ -private Integer officecode; - -@Column(name="USERCODE", nullable=true) - -/** -* Codigo de usuario que ejecuta la transaccion -*/ -private String usercode; - -@Column(name="ADITIONALDATA", nullable=true) - -/** -* Texto libre -*/ -private String aditionaldata; - -/**Contructor por defecto*/ -public TlogHeader(){ -} -/**Contructor de TlogHeader -@param pPk Clave Primaria del entity -@param pTransactionmodule Modulo al que pertence la transaccion -@param pTransactioncode Codigo de transaccion dentro del modulo -@param pTransactionversion Version de transaccion -*/ -public TlogHeader(String pPk,String pTransactionmodule,Integer pTransactioncode,Integer pTransactionversion){ - this(); - pk=pPk; - transactionmodule=pTransactionmodule; - transactioncode=pTransactioncode; - transactionversion=pTransactionversion; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TlogHeader -*/ -public static TlogHeader find(EntityManager pEntityManager,Object pKey) throws Exception{ - TlogHeader obj = pEntityManager.find(TlogHeader.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TlogHeader -@return El objeto que referencia a la Clave primaria de TlogHeader -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TlogHeader -@param pPk El objeto que referencia a la nueva Clave primaria de TlogHeader -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de accountingdate -@return valor de accountingdate*/ -public Timestamp getAccountingdate(){ - return accountingdate; -} -/**Fija el valor de accountingdate -@param pAccountingdate nuevo Valor de accountingdate*/ -public void setAccountingdate(Timestamp pAccountingdate){ - accountingdate=pAccountingdate; -} - -/**Obtiene el valor de transactionmodule -@return valor de transactionmodule*/ -public String getTransactionmodule(){ - return transactionmodule; -} -/**Fija el valor de transactionmodule -@param pTransactionmodule nuevo Valor de transactionmodule*/ -public void setTransactionmodule(String pTransactionmodule){ - transactionmodule=pTransactionmodule; -} - -/**Obtiene el valor de transactioncode -@return valor de transactioncode*/ -public Integer getTransactioncode(){ - return transactioncode; -} -/**Fija el valor de transactioncode -@param pTransactioncode nuevo Valor de transactioncode*/ -public void setTransactioncode(Integer pTransactioncode){ - transactioncode=pTransactioncode; -} - -/**Obtiene el valor de transactionversion -@return valor de transactionversion*/ -public Integer getTransactionversion(){ - return transactionversion; -} -/**Fija el valor de transactionversion -@param pTransactionversion nuevo Valor de transactionversion*/ -public void setTransactionversion(Integer pTransactionversion){ - transactionversion=pTransactionversion; -} - -/**Obtiene el valor de realdate -@return valor de realdate*/ -public Timestamp getRealdate(){ - return realdate; -} -/**Fija el valor de realdate -@param pRealdate nuevo Valor de realdate*/ -public void setRealdate(Timestamp pRealdate){ - realdate=pRealdate; -} - -/**Obtiene el valor de companycode -@return valor de companycode*/ -public Integer getCompanycode(){ - return companycode; -} -/**Fija el valor de companycode -@param pCompanycode nuevo Valor de companycode*/ -public void setCompanycode(Integer pCompanycode){ - companycode=pCompanycode; -} - -/**Obtiene el valor de branchcode -@return valor de branchcode*/ -public Integer getBranchcode(){ - return branchcode; -} -/**Fija el valor de branchcode -@param pBranchcode nuevo Valor de branchcode*/ -public void setBranchcode(Integer pBranchcode){ - branchcode=pBranchcode; -} - -/**Obtiene el valor de officecode -@return valor de officecode*/ -public Integer getOfficecode(){ - return officecode; -} -/**Fija el valor de officecode -@param pOfficecode nuevo Valor de officecode*/ -public void setOfficecode(Integer pOfficecode){ - officecode=pOfficecode; -} - -/**Obtiene el valor de usercode -@return valor de usercode*/ -public String getUsercode(){ - return usercode; -} -/**Fija el valor de usercode -@param pUsercode nuevo Valor de usercode*/ -public void setUsercode(String pUsercode){ - usercode=pUsercode; -} - -/**Obtiene el valor de aditionaldata -@return valor de aditionaldata*/ -public String getAditionaldata(){ - return aditionaldata; -} -/**Fija el valor de aditionaldata -@param pAditionaldata nuevo Valor de aditionaldata*/ -public void setAditionaldata(String pAditionaldata){ - aditionaldata=pAditionaldata; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TlogHeader))return false; - TlogHeader that = (TlogHeader) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TlogHeader -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TlogHeader -*/ -public Object createInstance(){ - TlogHeader instance=new TlogHeader(); - return instance; -} -/**Clona la entidad TlogHeader -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TlogHeader p=(TlogHeader)this.clone(); - return p; -} -} diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoad.java.svn-base b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoad.java.svn-base deleted file mode 100644 index e8fa433..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoad.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.persistence.plog.log; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TLOGLOAD*/ -@Entity(name="TlogLoad") -@Table(name="TLOGLOAD") -public class TlogLoad extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TlogLoad -*/ -@EmbeddedId -private TlogLoadKey pk; -@Column(name="LOADID", nullable=true) - -/** -* Id de la carga, puede ser el codigo de persona, numero de lote, numero de cuenta. -*/ -private String loadid; - -@Column(name="STATUS", nullable=true) - -/** -* Status de ejecucion de la carga P en proceso, E error, S sucessfull -*/ -private String status; - -@Column(name="ADITIONALDATA", nullable=true) - -/** -* Texto libre -*/ -private String aditionaldata; - -/**Contructor por defecto*/ -public TlogLoad(){ -} -/**Contructor de TlogLoad -@param pPk Clave Primaria del entity -*/ -public TlogLoad(TlogLoadKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TlogLoad -*/ -public static TlogLoad find(EntityManager pEntityManager,TlogLoadKey pKey) throws Exception{ - TlogLoad obj = pEntityManager.find(TlogLoad.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TlogLoad -@return El objeto que referencia a la Clave primaria de TlogLoad -*/ -public TlogLoadKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TlogLoad -@param pPk El objeto que referencia a la nueva Clave primaria de TlogLoad -*/ -public void setPk(TlogLoadKey pPk){ - pk=pPk; -} -/**Obtiene el valor de loadid -@return valor de loadid*/ -public String getLoadid(){ - return loadid; -} -/**Fija el valor de loadid -@param pLoadid nuevo Valor de loadid*/ -public void setLoadid(String pLoadid){ - loadid=pLoadid; -} - -/**Obtiene el valor de status -@return valor de status*/ -public String getStatus(){ - return status; -} -/**Fija el valor de status -@param pStatus nuevo Valor de status*/ -public void setStatus(String pStatus){ - status=pStatus; -} - -/**Obtiene el valor de aditionaldata -@return valor de aditionaldata*/ -public String getAditionaldata(){ - return aditionaldata; -} -/**Fija el valor de aditionaldata -@param pAditionaldata nuevo Valor de aditionaldata*/ -public void setAditionaldata(String pAditionaldata){ - aditionaldata=pAditionaldata; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TlogLoad))return false; - TlogLoad that = (TlogLoad) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TlogLoad -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TlogLoad -*/ -public Object createInstance(){ - TlogLoad instance=new TlogLoad(); - instance.setPk(new TlogLoadKey()); - return instance; -} -/**Clona la entidad TlogLoad -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TlogLoad p=(TlogLoad)this.clone(); - p.setPk((TlogLoadKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadError.java.svn-base b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadError.java.svn-base deleted file mode 100644 index 9c6f4f1..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadError.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.persistence.plog.log; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla TLOGLOADERROR*/ -@Entity(name="TlogLoadError") -@Table(name="TLOGLOADERROR") -public class TlogLoadError extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad TlogLoadError -*/ -@EmbeddedId -private TlogLoadErrorKey pk; -@Column(name="RESULTCODE", nullable=true) - -/** -* Codigo de resultado -*/ -private String resultcode; - -@Column(name="MESSAGE", nullable=true) - -/** -* Texto del error -*/ -private String message; - -@Column(name="IDENTIFIER", nullable=true) - -/** -* Identificado del subproceso -*/ -private String identifier; - -/**Contructor por defecto*/ -public TlogLoadError(){ -} -/**Contructor de TlogLoadError -@param pPk Clave Primaria del entity -*/ -public TlogLoadError(TlogLoadErrorKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return TlogLoadError -*/ -public static TlogLoadError find(EntityManager pEntityManager,TlogLoadErrorKey pKey) throws Exception{ - TlogLoadError obj = pEntityManager.find(TlogLoadError.class,pKey); - return obj; -} -/**Entrega la Clave primaria de TlogLoadError -@return El objeto que referencia a la Clave primaria de TlogLoadError -*/ -public TlogLoadErrorKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de TlogLoadError -@param pPk El objeto que referencia a la nueva Clave primaria de TlogLoadError -*/ -public void setPk(TlogLoadErrorKey pPk){ - pk=pPk; -} -/**Obtiene el valor de resultcode -@return valor de resultcode*/ -public String getResultcode(){ - return resultcode; -} -/**Fija el valor de resultcode -@param pResultcode nuevo Valor de resultcode*/ -public void setResultcode(String pResultcode){ - resultcode=pResultcode; -} - -/**Obtiene el valor de message -@return valor de message*/ -public String getMessage(){ - return message; -} -/**Fija el valor de message -@param pMessage nuevo Valor de message*/ -public void setMessage(String pMessage){ - message=pMessage; -} - -/**Obtiene el valor de identifier -@return valor de identifier*/ -public String getIdentifier(){ - return identifier; -} -/**Fija el valor de identifier -@param pIdentifier nuevo Valor de identifier*/ -public void setIdentifier(String pIdentifier){ - identifier=pIdentifier; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof TlogLoadError))return false; - TlogLoadError that = (TlogLoadError) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad TlogLoadError -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco TlogLoadError -*/ -public Object createInstance(){ - TlogLoadError instance=new TlogLoadError(); - instance.setPk(new TlogLoadErrorKey()); - return instance; -} -/**Clona la entidad TlogLoadError -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - TlogLoadError p=(TlogLoadError)this.clone(); - p.setPk((TlogLoadErrorKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadErrorKey.java.svn-base b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadErrorKey.java.svn-base deleted file mode 100644 index 8c20759..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadErrorKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.plog.log; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TLOGLOADERROR*/ -@Embeddable -public class TlogLoadErrorKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado a la transaccion. -*/ -private String journalid; - -@Column(name="LOADSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de la carga cuando se porcesa lotes -*/ -private Long loadsequence; - -@Column(name="ERRORSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de error -*/ -private Integer errorsequence; - -/**Contructor por defecto*/ -public TlogLoadErrorKey(){} -/**Contructor de TlogLoadErrorKey -@param pJournalid Numero de mensaje asociado a la transaccion. -@param pLoadsequence Secuencia de la carga cuando se porcesa lotes -@param pErrorsequence Secuencia de error -*/ -public TlogLoadErrorKey(String pJournalid,Long pLoadsequence,Integer pErrorsequence){ - journalid=pJournalid; - loadsequence=pLoadsequence; - errorsequence=pErrorsequence; -} -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de loadsequence -@return valor de loadsequence*/ -public Long getLoadsequence(){ - return loadsequence; -} -/**Fija el valor de loadsequence -@param pLoadsequence nuevo Valor de loadsequence*/ -public void setLoadsequence(Long pLoadsequence){ - loadsequence=pLoadsequence; -} - -/**Obtiene el valor de errorsequence -@return valor de errorsequence*/ -public Integer getErrorsequence(){ - return errorsequence; -} -/**Fija el valor de errorsequence -@param pErrorsequence nuevo Valor de errorsequence*/ -public void setErrorsequence(Integer pErrorsequence){ - errorsequence=pErrorsequence; -} - -/**Implementacion de la comparacion de TlogLoadErrorKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TlogLoadErrorKey))return false; - TlogLoadErrorKey that = (TlogLoadErrorKey) o; - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getLoadsequence() == null || that.getLoadsequence() == null){ - return false; - } - if (! this.getLoadsequence().equals(that.getLoadsequence())){ - return false; - } - if (this.getErrorsequence() == null || that.getErrorsequence() == null){ - return false; - } - if (! this.getErrorsequence().equals(that.getErrorsequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TlogLoadErrorKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getLoadsequence() == null ? 0 : this.getLoadsequence().hashCode()); - result = result * 37 + (this.getErrorsequence() == null ? 0 : this.getErrorsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadKey.java.svn-base b/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadKey.java.svn-base deleted file mode 100644 index a9948e8..0000000 --- a/base/persistence/plog/src/main/java/com/fp/persistence/plog/log/.svn/text-base/TlogLoadKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.plog.log; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de TLOGLOAD*/ -@Embeddable -public class TlogLoadKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="JOURNALID", nullable=false,updatable=false) - -/** -* Numero de mensaje asociado a la transaccion. -*/ -private String journalid; - -@Column(name="LOADSEQUENCE", nullable=false,updatable=false) - -/** -* Secuencia de la carga cuando se porcesa lotes -*/ -private Long loadsequence; - -/**Contructor por defecto*/ -public TlogLoadKey(){} -/**Contructor de TlogLoadKey -@param pJournalid Numero de mensaje asociado a la transaccion. -@param pLoadsequence Secuencia de la carga cuando se porcesa lotes -*/ -public TlogLoadKey(String pJournalid,Long pLoadsequence){ - journalid=pJournalid; - loadsequence=pLoadsequence; -} -/**Obtiene el valor de journalid -@return valor de journalid*/ -public String getJournalid(){ - return journalid; -} -/**Fija el valor de journalid -@param pJournalid nuevo Valor de journalid*/ -public void setJournalid(String pJournalid){ - journalid=pJournalid; -} - -/**Obtiene el valor de loadsequence -@return valor de loadsequence*/ -public Long getLoadsequence(){ - return loadsequence; -} -/**Fija el valor de loadsequence -@param pLoadsequence nuevo Valor de loadsequence*/ -public void setLoadsequence(Long pLoadsequence){ - loadsequence=pLoadsequence; -} - -/**Implementacion de la comparacion de TlogLoadKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof TlogLoadKey))return false; - TlogLoadKey that = (TlogLoadKey) o; - if (this.getJournalid() == null || that.getJournalid() == null){ - return false; - } - if (! this.getJournalid().equals(that.getJournalid())){ - return false; - } - if (this.getLoadsequence() == null || that.getLoadsequence() == null){ - return false; - } - if (! this.getLoadsequence().equals(that.getLoadsequence())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia TlogLoadKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getJournalid() == null ? 0 : this.getJournalid().hashCode()); - result = result * 37 + (this.getLoadsequence() == null ? 0 : this.getLoadsequence().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/plog/src/test/.svn/entries b/base/persistence/plog/src/test/.svn/entries deleted file mode 100644 index 21d0567..0000000 --- a/base/persistence/plog/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/plog/src/test/java/.svn/entries b/base/persistence/plog/src/test/java/.svn/entries deleted file mode 100644 index 5881e59..0000000 --- a/base/persistence/plog/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/plog/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/persistence/pviaticos/.svn/dir-prop-base b/base/persistence/pviaticos/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/persistence/pviaticos/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/persistence/pviaticos/.svn/entries b/base/persistence/pviaticos/.svn/entries deleted file mode 100644 index 5579f19..0000000 --- a/base/persistence/pviaticos/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos -svn://172.17.26.185/COMACO - - - -2014-10-17T05:34:35.839741Z -1670 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:27.210736Z -dccea537a1348889f4b541484270135b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -682 - diff --git a/base/persistence/pviaticos/.svn/text-base/pom.xml.svn-base b/base/persistence/pviaticos/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index ae17dbc..0000000 --- a/base/persistence/pviaticos/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,21 +0,0 @@ - - - 4.0.0 - - com.fp.base - persistence - 2.1 - - com.fp.base.persistence - pviaticos - pviaticos - - - - com.fp.base.core - bpm - 2.1 - - - diff --git a/base/persistence/pviaticos/src/.svn/entries b/base/persistence/pviaticos/src/.svn/entries deleted file mode 100644 index 52f3de9..0000000 --- a/base/persistence/pviaticos/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/pviaticos/src/main/.svn/entries b/base/persistence/pviaticos/src/main/.svn/entries deleted file mode 100644 index c1ebe2d..0000000 --- a/base/persistence/pviaticos/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/pviaticos/src/main/java/.svn/entries b/base/persistence/pviaticos/src/main/java/.svn/entries deleted file mode 100644 index 1c07e38..0000000 --- a/base/persistence/pviaticos/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pviaticos/src/main/java/com/.svn/entries b/base/persistence/pviaticos/src/main/java/com/.svn/entries deleted file mode 100644 index 323930f..0000000 --- a/base/persistence/pviaticos/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 5b77104..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/persistence/.svn/entries deleted file mode 100644 index 07cb97f..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pviaticos -dir - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/.svn/entries deleted file mode 100644 index fb0e03e..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - -param -dir - -hra -dir - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/entries deleted file mode 100644 index 74e1957..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Empleado.java -file - - - - -2022-07-28T03:40:26.969735Z -006bb16e76cb1762a870f69c34a36668 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -12452 - -EmpleadoJpql.java -file - - - - -2022-07-28T03:40:26.969735Z -d3a22a0761db7892aa6145a9e8e7406a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3374 - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/Empleado.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/Empleado.java.svn-base deleted file mode 100644 index a6cf3ca..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/Empleado.java.svn-base +++ /dev/null @@ -1,540 +0,0 @@ -package com.fp.persistence.pviaticos.hra; - -import java.io.Serializable; - -import com.fp.dto.hb.HibernateBean; - -/** - * Clase de transporte de la informacion de un empleado de la sbs, la informacion la obtiene de la vista - * HRA.VWDATOSEMPLEADOS. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class Empleado extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - - private static final long serialVersionUID = 1L; - - /** - * Codigo de empleado. - */ - private String codigo; - - /** - * Nombre + apellido del empleado. - */ - private String nombre; - - /** - * Numero de cedula del empleado. - */ - private String cedula; - - /** - * Codigo de puesto del empleado. - */ - private String cargo; - - /** - * Nombre de puesto del empleado. - */ - private String nombreCargo; - - /** - * Entrega la direccin email asociada al empleado. - */ - private String email; - - /** - * Nombre del banco en el cual tiene una cuenta el empleado. - */ - private String banco; - - /** - * Tipo de cuenta bancaria del empleado. - */ - private String tipoCuenta; - - /** - * Numero de cuenta que mantiene el empleado de la sbs en el banco. - */ - private String cuenta; - - /** - * Codigo de area a la que pertenece el empleado. - */ - private String codigoArea; - - /** - * Nombre de area a la que pertenece el empleado. - */ - private String nombreArea; - - /** - * Codigo de empleado asociado al jefe del empleado. - */ - private String codigoJefe; - - /** - * Nombre del jefe del empleado. - */ - private String nombreJefe; - - /** - * Codigo del responsable de la unidad asociado al empleado. - */ - private String codigoResponsableUnidad; - - /** - * Nombre del responsable de la unidad a la que pertecene el empleado. - */ - private String nombreResponsableUnidad; - - /** - * Nombre de cargo del jefe. - */ - private String nombreCargoJefe; - - /** - * Nombre de cargo responsable de la unidad. - */ - private String nombreCargoResponsableUnidad; - - /** - * Codiogo de usuario web del servidor publico. - */ - private String usuarioweb; - - /** - * Codiogo de usuario web del servidor publico. - */ - private String codigoLocalidad; - /** - * Estado del servidor - */ - private String estado; - /** - * Atributo localidad - */ - private String localidad; - /** - * Constructor Empleado - * @param obj - * @return - * @throws Exception - */ - public static Empleado cerar(Object[] obj) throws Exception { - Empleado e = new Empleado(); - e.setCodigo((String) obj[0]); - e.setNombre((String) obj[1]); - e.setCedula((String) obj[2]); - e.setCargo((String) obj[3]); - e.setNombreCargo((String) obj[4]); - e.setEmail((String) obj[5]); - e.setBanco((String) obj[6]); - e.setTipoCuenta((String) obj[7]); - e.setCuenta((String) obj[8]); - e.setCodigoArea((String) obj[9]); - e.setNombreArea((String) obj[10]); - e.setCodigoJefe((String) obj[11]); - e.setCodigoResponsableUnidad((String) obj[12]); - e.setNombreJefe((String) obj[13]); - e.setNombreResponsableUnidad((String) obj[14]); - e.setNombreCargoJefe((String) obj[15]); - e.setNombreCargoResponsableUnidad((String) obj[16]); - e.setUsuarioweb((String) obj[17]); - e.setCodigoLocalidad((String) obj[18]); - e.setEstado((String) obj[19]); - e.setLocalidad((String) obj[20]); - return e; - } - - /** - * Entrega el valor de: codigo - * - * @return String - */ - public String getCodigo() { - return codigo; - } - - /** - * Fija el valor de: codigo - * - * @param codigo Valor del parametro a fijar en el atributo - */ - public void setCodigo(String codigo) { - this.codigo = codigo; - } - - /** - * Entrega el valor de: nombre - * - * @return String - */ - public String getNombre() { - return nombre; - } - - /** - * Fija el valor de: nombre - * - * @param nombre Valor del parametro a fijar en el atributo - */ - public void setNombre(String nombre) { - this.nombre = nombre; - } - - /** - * Entrega el valor de: cedula - * - * @return String - */ - public String getCedula() { - return cedula; - } - - /** - * Fija el valor de: cedula - * - * @param cedula Valor del parametro a fijar en el atributo - */ - public void setCedula(String cedula) { - this.cedula = cedula; - } - - /** - * Entrega el valor de: cargo - * - * @return String - */ - public String getCargo() { - return cargo; - } - - /** - * Fija el valor de: cargo - * - * @param cargo Valor del parametro a fijar en el atributo - */ - public void setCargo(String cargo) { - this.cargo = cargo; - } - - /** - * Entrega el valor de: nombreCargo - * - * @return String - */ - public String getNombreCargo() { - return nombreCargo; - } - - /** - * Fija el valor de: nombreCargo - * - * @param nombreCargo Valor del parametro a fijar en el atributo - */ - public void setNombreCargo(String nombreCargo) { - this.nombreCargo = nombreCargo; - } - - /** - * Entrega el valor de: email - * - * @return String - */ - public String getEmail() { - return email; - } - - /** - * Fija el valor de: email - * - * @param email Valor del parametro a fijar en el atributo - */ - public void setEmail(String email) { - this.email = email; - } - - /** - * Entrega el valor de: banco - * - * @return String - */ - public String getBanco() { - return banco; - } - - /** - * Fija el valor de: banco - * - * @param banco Valor del parametro a fijar en el atributo - */ - public void setBanco(String banco) { - this.banco = banco; - } - - /** - * Entrega el valor de: tipoCuenta - * - * @return String - */ - public String getTipoCuenta() { - return tipoCuenta; - } - - /** - * Fija el valor de: tipoCuenta - * - * @param tipoCuenta Valor del parametro a fijar en el atributo - */ - public void setTipoCuenta(String tipoCuenta) { - this.tipoCuenta = tipoCuenta; - } - - /** - * Entrega el valor de: cuenta - * - * @return String - */ - public String getCuenta() { - return cuenta; - } - - /** - * Fija el valor de: cuenta - * - * @param cuenta Valor del parametro a fijar en el atributo - */ - public void setCuenta(String cuenta) { - this.cuenta = cuenta; - } - - /** - * Entrega el valor de: codigoArea - * - * @return String - */ - public String getCodigoArea() { - return codigoArea; - } - - /** - * Fija el valor de: codigoArea - * - * @param codigoArea Valor del parametro a fijar en el atributo - */ - public void setCodigoArea(String codigoArea) { - this.codigoArea = codigoArea; - } - - /** - * Entrega el valor de: nombreArea - * - * @return String - */ - public String getNombreArea() { - return nombreArea; - } - - /** - * Fija el valor de: nombreArea - * - * @param nombreArea Valor del parametro a fijar en el atributo - */ - public void setNombreArea(String nombreArea) { - this.nombreArea = nombreArea; - } - - /** - * Entrega el valor de: codigoJefe - * - * @return String - */ - public String getCodigoJefe() { - return codigoJefe; - } - - /** - * Fija el valor de: codigoJefe - * - * @param codigoJefe Valor del parametro a fijar en el atributo - */ - public void setCodigoJefe(String codigoJefe) { - this.codigoJefe = codigoJefe; - } - - /** - * Entrega el valor de: nombreJefe - * - * @return String - */ - public String getNombreJefe() { - return nombreJefe; - } - - /** - * Fija el valor de: nombreJefe - * - * @param nombreJefe Valor del parametro a fijar en el atributo - */ - public void setNombreJefe(String nombreJefe) { - this.nombreJefe = nombreJefe; - } - - /** - * Entrega el valor de: codigoResponsableUnidad - * - * @return String - */ - public String getCodigoResponsableUnidad() { - return codigoResponsableUnidad; - } - - /** - * Fija el valor de: codigoResponsableUnidad - * - * @param codigoResponsableUnidad Valor del parametro a fijar en el atributo - */ - public void setCodigoResponsableUnidad(String codigoResponsableUnidad) { - this.codigoResponsableUnidad = codigoResponsableUnidad; - } - - /** - * Entrega el valor de: nombreResponsableUnidad - * - * @return String - */ - public String getNombreResponsableUnidad() { - return nombreResponsableUnidad; - } - - /** - * Fija el valor de: nombreResponsableUnidad - * - * @param nombreResponsableUnidad Valor del parametro a fijar en el atributo - */ - public void setNombreResponsableUnidad(String nombreResponsableUnidad) { - this.nombreResponsableUnidad = nombreResponsableUnidad; - } - - /** - * Entrega el valor de: nombreCargoJefe - * - * @return String - */ - public String getNombreCargoJefe() { - return nombreCargoJefe; - } - - /** - * Fija el valor de: nombreCargoJefe - * - * @param nombreCargoJefe Valor del parametro a fijar en el atributo - */ - public void setNombreCargoJefe(String nombreCargoJefe) { - this.nombreCargoJefe = nombreCargoJefe; - } - - /** - * Entrega el valor de: nombreCargoResponsableUnidad - * - * @return String - */ - public String getNombreCargoResponsableUnidad() { - return nombreCargoResponsableUnidad; - } - - /** - * Fija el valor de: nombreCargoResponsableUnidad - * - * @param nombreCargoResponsableUnidad Valor del parametro a fijar en el atributo - */ - public void setNombreCargoResponsableUnidad(String nombreCargoResponsableUnidad) { - this.nombreCargoResponsableUnidad = nombreCargoResponsableUnidad; - } - - /** - * Entrega el valor de: usuarioweb - * - * @return String - */ - public String getUsuarioweb() { - return usuarioweb; - } - - /** - * Fija el valor de: usuarioweb - * - * @param usuarioweb - */ - public void setUsuarioweb(String usuarioweb) { - this.usuarioweb = usuarioweb; - } - - /** - * Entrega el valor de: codigoLocalidad - * - * @return String - */ - public String getCodigoLocalidad() { - return codigoLocalidad; - } - - /** - * Fija el valor de: codigoLocalidad - * - * @param codigoLocalidad - */ - public void setCodigoLocalidad(String codigoLocalidad) { - this.codigoLocalidad = codigoLocalidad; - } - - /** - * Crea una instancia de Empleado. - */ - @Override - public Object createInstance() throws Exception { - Empleado instance = new Empleado(); - return instance; - } - - /** - * Clona y entrega una instancia de empleado. - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - Empleado p = (Empleado) this.clone(); - return p; - } - /** - * Entrega el valor del estado del empleado - * @return estado - */ - public String getEstado() { - return estado; - } - /** - * Fija el valor del estado del empleado - * @param estado - */ - public void setEstado(String estado) { - this.estado = estado; - } - /** - * Entrega el nombre localidad - * @return localidad - */ - public String getLocalidad() { - return localidad; - } - /** - * Fija el nombre localidad - * @fija localidad - */ - public void setLocalidad(String localidad) { - this.localidad = localidad; - } - -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/EmpleadoJpql.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/EmpleadoJpql.java.svn-base deleted file mode 100644 index e06e733..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/hra/.svn/text-base/EmpleadoJpql.java.svn-base +++ /dev/null @@ -1,79 +0,0 @@ -package com.fp.persistence.pviaticos.hra; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.persistence.Query; - -import com.fp.bpm.query.QueryJsf; -import com.fp.dto.query.DtoQuery; -import com.fp.persistence.commondb.PersistenceHelper; - -/** - * Clase que se encarga de consultar informacin de la vista HRA.VWDATOSEMPLEADOS. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class EmpleadoJpql extends QueryJsf { - - private static String SQL = "select codigo_empleado, apellidos ||' '||nombres as nombre, cedula, codigo_puesto as cargo, nombre_puesto as nomcargo, correo, " - + "banco, tipo_cuenta,cuenta, codigo_area, nombre_area, codigo_jefe, codigo_responsable," - + "( select unique(apellidos ||' '||nombres) from HRA.VWDATOSEMPLEADOS i where i.codigo_empleado = t.codigo_jefe) as njefe, " - + "( select unique(apellidos ||' '||nombres) from HRA.VWDATOSEMPLEADOS i where i.codigo_empleado = t.codigo_responsable) as nrespunidad, " - + "(select i.nombre_puesto from HRA.VWDATOSEMPLEADOS i where i.CODIGO_EMPLEADO = t.CODIGO_JEFE) as cargo_jefe, " - + "(select i.nombre_puesto from HRA.VWDATOSEMPLEADOS i where i.CODIGO_EMPLEADO = t.CODIGO_RESPONSABLE) as cargo_supervisor, " - + "usuario_web, codigo_localidad, estado, " - + "(select cd.description from tgenecatalogdetail cd where cd.catalogcode = 'CUDADORIGEN' and cd.catalog = t.codigo_localidad) as localidad" - + " from HRA.VWDATOSEMPLEADOS t"; - - /** - * - * @param codigoEmpleado Codigo de empleado - * @return Empleado - * @throws Exception - */ - public Empleado find(String codigoEmpleado) throws Exception { - Map mcriterios = new HashMap<>(); - mcriterios.put("codigo_empleado", codigoEmpleado); - DtoQuery dtoquery = new DtoQuery("com.fp.persistence.pviaticos.hra.Empleado", mcriterios); - Empleado emp = this.find(dtoquery).get(0); - return emp; - } - - /** - * - * @param codigoUsuarioWeb Codigo de usuario web. - * @return Empleado - * @throws Exception - */ - public Empleado findPorUsuarioWeb(String codigoUsuarioWeb) throws Exception { - Map mcriterios = new HashMap<>(); - mcriterios.put("usuario_web", codigoUsuarioWeb.toLowerCase()); - DtoQuery dtoquery = new DtoQuery("com.fp.persistence.pviaticos.hra.Empleado", mcriterios); - List empleados = this.find(dtoquery); - Empleado emp = null; - if (!empleados.isEmpty()) { - emp = empleados.get(0); - } - return emp; - } - - @SuppressWarnings("unchecked") - public List find(DtoQuery dtoquery) throws Exception { - List ldata = new ArrayList<>(); - where = new StringBuffer(46); - super.mparameter.clear(); - super.buildCriteria(dtoquery); - Query qry = PersistenceHelper.getEntityManager().createNativeQuery(EmpleadoJpql.SQL + (super.where == null ? "" : super.where.toString())); - super.setParameters(dtoquery, qry); - List lresp = qry.getResultList(); - for (Object[] obj : lresp) { - ldata.add(Empleado.cerar(obj)); - } - return ldata; - } - -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/entries deleted file mode 100644 index abf0ccb..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ViaEstado.java -file - - - - -2022-07-28T03:40:26.943735Z -ed6a1b60562c8a63a21bc53e3afae410 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4341 - -ViaCiudadUsuario.java -file - - - - -2022-07-28T03:40:26.943735Z -d07a2be7a77677b2816bd2f472348bb2 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6063 - -ViaDiasAcumuladosKey.java -file - - - - -2022-07-28T03:40:26.944735Z -e0ab8e316338870bc471ae27733edf00 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4163 - -ViaNotificacionMovilizacion.java -file - - - - -2022-07-28T03:40:26.944735Z -21764c44bc14267e9140dde520e53996 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5491 - -ViaCiudadUsuarioKey.java -file - - - - -2022-07-28T03:40:26.944735Z -d407b8f0562b1ac3411fbbc55a2abf4d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3920 - -ViaParametros.java -file - - - - -2022-07-28T03:40:26.944735Z -f5ba55380c3a3d6d28d140f516191cb7 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4773 - -ViaDiasAcumulados.java -file - - - - -2022-07-28T03:40:26.945735Z -2fc748089ae3fb7515f3eb5002ccba38 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4128 - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuario.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuario.java.svn-base deleted file mode 100644 index 308d93b..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuario.java.svn-base +++ /dev/null @@ -1,201 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_CIUDAD_USUARIO*/ -@Entity(name="ViaCiudadUsuario") -@Table(name="VIA_CIUDAD_USUARIO") -public class ViaCiudadUsuario extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaCiudadUsuario -*/ -@EmbeddedId -private ViaCiudadUsuarioKey pk; -@Column(name="COD_ACTIVIDAD_CATALOGCODE", nullable=false) - -/** -* Codigo de tabla de catalogo ACTIVIDAD_ -*/ -private String cod_actividad_catalogcode; - -@Column(name="COD_CIUDAD_CATALOGCODE", nullable=false) - -/** -* Codigo de tabla de catalogo CUDADORIGEN de los empleados de la sbs -*/ -private String cod_ciudad_catalogcode; - -@Column(name="COD_USUARIO", nullable=false) - -/** -* Codigo de usuario asociado a la ciudad -*/ -private String cod_usuario; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public ViaCiudadUsuario(){ -} -/**Contructor de ViaCiudadUsuario -@param pPk Clave Primaria del entity -@param pCod_actividad_catalogcode Codigo de tabla de catalogo ACTIVIDAD_ -@param pCod_ciudad_catalogcode Codigo de tabla de catalogo CUDADORIGEN de los empleados de la sbs -@param pCod_usuario Codigo de usuario asociado a la ciudad -*/ -public ViaCiudadUsuario(ViaCiudadUsuarioKey pPk,String pCod_actividad_catalogcode,String pCod_ciudad_catalogcode,String pCod_usuario){ - this(); - pk=pPk; - cod_actividad_catalogcode=pCod_actividad_catalogcode; - cod_ciudad_catalogcode=pCod_ciudad_catalogcode; - cod_usuario=pCod_usuario; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaCiudadUsuario -*/ -public static ViaCiudadUsuario find(EntityManager pEntityManager,ViaCiudadUsuarioKey pKey) throws Exception{ - ViaCiudadUsuario obj = pEntityManager.find(ViaCiudadUsuario.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaCiudadUsuario -@return El objeto que referencia a la Clave primaria de ViaCiudadUsuario -*/ -public ViaCiudadUsuarioKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaCiudadUsuario -@param pPk El objeto que referencia a la nueva Clave primaria de ViaCiudadUsuario -*/ -public void setPk(ViaCiudadUsuarioKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cod_actividad_catalogcode -@return valor de cod_actividad_catalogcode*/ -public String getCod_actividad_catalogcode(){ - return cod_actividad_catalogcode; -} -/**Fija el valor de cod_actividad_catalogcode -@param pCod_actividad_catalogcode nuevo Valor de cod_actividad_catalogcode*/ -public void setCod_actividad_catalogcode(String pCod_actividad_catalogcode){ - cod_actividad_catalogcode=pCod_actividad_catalogcode; -} - -/**Obtiene el valor de cod_ciudad_catalogcode -@return valor de cod_ciudad_catalogcode*/ -public String getCod_ciudad_catalogcode(){ - return cod_ciudad_catalogcode; -} -/**Fija el valor de cod_ciudad_catalogcode -@param pCod_ciudad_catalogcode nuevo Valor de cod_ciudad_catalogcode*/ -public void setCod_ciudad_catalogcode(String pCod_ciudad_catalogcode){ - cod_ciudad_catalogcode=pCod_ciudad_catalogcode; -} - -/**Obtiene el valor de cod_usuario -@return valor de cod_usuario*/ -public String getCod_usuario(){ - return cod_usuario; -} -/**Fija el valor de cod_usuario -@param pCod_usuario nuevo Valor de cod_usuario*/ -public void setCod_usuario(String pCod_usuario){ - cod_usuario=pCod_usuario; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaCiudadUsuario))return false; - ViaCiudadUsuario that = (ViaCiudadUsuario) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaCiudadUsuario -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaCiudadUsuario -*/ -public Object createInstance(){ - ViaCiudadUsuario instance=new ViaCiudadUsuario(); - instance.setPk(new ViaCiudadUsuarioKey()); - return instance; -} -/**Clona la entidad ViaCiudadUsuario -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaCiudadUsuario p=(ViaCiudadUsuario)this.clone(); - p.setPk((ViaCiudadUsuarioKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuarioKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuarioKey.java.svn-base deleted file mode 100644 index f24991b..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaCiudadUsuarioKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_CIUDAD_USUARIO*/ -@Embeddable -public class ViaCiudadUsuarioKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_ACTIVIDAD_CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo actividades, TESORERIA, CONTABILIDAD -*/ -private String cod_actividad_catalog; - -@Column(name="COD_CIUDAD_CATALOG", nullable=false,updatable=false) - -/** -* Codigo de catalogo 1 Quito, 2 Guayaquil, 3 Cuenca, 4 -*/ -private String cod_ciudad_catalog; - -/**Contructor por defecto*/ -public ViaCiudadUsuarioKey(){} -/**Contructor de ViaCiudadUsuarioKey -@param pCod_actividad_catalog Codigo de catalogo actividades, TESORERIA, CONTABILIDAD -@param pCod_ciudad_catalog Codigo de catalogo 1 Quito, 2 Guayaquil, 3 Cuenca, 4 -*/ -public ViaCiudadUsuarioKey(String pCod_actividad_catalog,String pCod_ciudad_catalog){ - cod_actividad_catalog=pCod_actividad_catalog; - cod_ciudad_catalog=pCod_ciudad_catalog; -} -/**Obtiene el valor de cod_actividad_catalog -@return valor de cod_actividad_catalog*/ -public String getCod_actividad_catalog(){ - return cod_actividad_catalog; -} -/**Fija el valor de cod_actividad_catalog -@param pCod_actividad_catalog nuevo Valor de cod_actividad_catalog*/ -public void setCod_actividad_catalog(String pCod_actividad_catalog){ - cod_actividad_catalog=pCod_actividad_catalog; -} - -/**Obtiene el valor de cod_ciudad_catalog -@return valor de cod_ciudad_catalog*/ -public String getCod_ciudad_catalog(){ - return cod_ciudad_catalog; -} -/**Fija el valor de cod_ciudad_catalog -@param pCod_ciudad_catalog nuevo Valor de cod_ciudad_catalog*/ -public void setCod_ciudad_catalog(String pCod_ciudad_catalog){ - cod_ciudad_catalog=pCod_ciudad_catalog; -} - -/**Implementacion de la comparacion de ViaCiudadUsuarioKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaCiudadUsuarioKey))return false; - ViaCiudadUsuarioKey that = (ViaCiudadUsuarioKey) o; - if (this.getCod_actividad_catalog() == null || that.getCod_actividad_catalog() == null){ - return false; - } - if (! this.getCod_actividad_catalog().equals(that.getCod_actividad_catalog())){ - return false; - } - if (this.getCod_ciudad_catalog() == null || that.getCod_ciudad_catalog() == null){ - return false; - } - if (! this.getCod_ciudad_catalog().equals(that.getCod_ciudad_catalog())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaCiudadUsuarioKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_actividad_catalog() == null ? 0 : this.getCod_actividad_catalog().hashCode()); - result = result * 37 + (this.getCod_ciudad_catalog() == null ? 0 : this.getCod_ciudad_catalog().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumulados.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumulados.java.svn-base deleted file mode 100644 index 50ca979..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumulados.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_DIAS_ACUMULADOS*/ -@Entity(name="ViaDiasAcumulados") -@Table(name="VIA_DIAS_ACUMULADOS") -public class ViaDiasAcumulados extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaDiasAcumulados -*/ -@EmbeddedId -private ViaDiasAcumuladosKey pk; - -@Column(name="NUM_DIAS", nullable=true) -/** -* Numero de dias -*/ -private BigDecimal num_dias; - -/**Contructor por defecto*/ -public ViaDiasAcumulados(){ -} -/**Contructor de ViaDiasAcumulados -@param pPk Clave Primaria del entity -*/ -public ViaDiasAcumulados(ViaDiasAcumuladosKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaDiasAcumulados -*/ -public static ViaDiasAcumulados find(EntityManager pEntityManager,ViaDiasAcumuladosKey pKey) throws Exception{ - ViaDiasAcumulados obj = pEntityManager.find(ViaDiasAcumulados.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaDiasAcumulados -@return El objeto que referencia a la Clave primaria de ViaDiasAcumulados -*/ -public ViaDiasAcumuladosKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaDiasAcumulados -@param pPk El objeto que referencia a la nueva Clave primaria de ViaDiasAcumulados -*/ -public void setPk(ViaDiasAcumuladosKey pPk){ - pk=pPk; -} - -/**Obtiene el valor de num_dias -@return valor de num_dias*/ -public BigDecimal getNum_dias(){ - return num_dias; -} -/**Fija el valor de num_dias -@param pNum_dias nuevo Valor de num_dias*/ -public void setNum_dias(BigDecimal pNum_dias){ - num_dias=pNum_dias; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaDiasAcumulados))return false; - ViaDiasAcumulados that = (ViaDiasAcumulados) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaDiasAcumulados -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaDiasAcumulados -*/ -public Object createInstance(){ - ViaDiasAcumulados instance=new ViaDiasAcumulados(); - instance.setPk(new ViaDiasAcumuladosKey()); - return instance; -} -/**Clona la entidad ViaDiasAcumulados -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaDiasAcumulados p=(ViaDiasAcumulados)this.clone(); - p.setPk((ViaDiasAcumuladosKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumuladosKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumuladosKey.java.svn-base deleted file mode 100644 index c0bfca8..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaDiasAcumuladosKey.java.svn-base +++ /dev/null @@ -1,146 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import javax.persistence.Column; - -import java.io.Serializable; - -import com.fp.dto.hb.HibernateId; - -import java.lang.reflect.Field; - -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_DIAS_ACUMULADOS*/ -@Embeddable -public class ViaDiasAcumuladosKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_EMPLEADO", nullable=false,updatable=false) - -/** -* Codigo de estatus de la solicitud de viaticos -*/ -private String cod_empleado; - -@Column(name="COD_EJERCICIO", nullable=false,updatable=false) - -/** -* Anio asociado a los dias acumulados -*/ -private Integer cod_ejercicio; - -@Column(name="COD_DESTINO", nullable=true) - -/** -* Descripcion default del tipo de tabla de pagos -*/ -private String cod_destino; - -/**Contructor por defecto*/ -public ViaDiasAcumuladosKey(){} -/**Contructor de ViaDiasAcumuladosKey -@param pCod_empleado Codigo de estatus de la solicitud de viaticos -@param pCod_ejercicio Anio asociado a los dias acumulados -*/ -public ViaDiasAcumuladosKey(String pCod_empleado,Integer pCod_ejercicio, String pCod_destino){ - cod_empleado=pCod_empleado; - cod_ejercicio=pCod_ejercicio; - cod_destino=pCod_destino; -} -/**Obtiene el valor de cod_empleado -@return valor de cod_empleado*/ -public String getCod_empleado(){ - return cod_empleado; -} -/**Fija el valor de cod_empleado -@param pCod_empleado nuevo Valor de cod_empleado*/ -public void setCod_empleado(String pCod_empleado){ - cod_empleado=pCod_empleado; -} - -/**Obtiene el valor de cod_ejercicio -@return valor de cod_ejercicio*/ -public Integer getCod_ejercicio(){ - return cod_ejercicio; -} -/**Fija el valor de cod_ejercicio -@param pCod_ejercicio nuevo Valor de cod_ejercicio*/ -public void setCod_ejercicio(Integer pCod_ejercicio){ - cod_ejercicio=pCod_ejercicio; -} - -/**Obtiene el valor de cod_destino -@return valor de cod_destino*/ -public String getCod_destino(){ - return cod_destino; -} -/**Fija el valor de cod_destino -@param pCod_destino nuevo Valor de cod_destino*/ -public void setCod_destino(String pCod_destino){ - cod_destino=pCod_destino; -} -/**Implementacion de la comparacion de ViaDiasAcumuladosKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaDiasAcumuladosKey))return false; - ViaDiasAcumuladosKey that = (ViaDiasAcumuladosKey) o; - if (this.getCod_empleado() == null || that.getCod_empleado() == null){ - return false; - } - if (! this.getCod_empleado().equals(that.getCod_empleado())){ - return false; - } - if (this.getCod_ejercicio() == null || that.getCod_ejercicio() == null){ - return false; - } - if (! this.getCod_ejercicio().equals(that.getCod_ejercicio())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaDiasAcumuladosKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_empleado() == null ? 0 : this.getCod_empleado().hashCode()); - result = result * 37 + (this.getCod_ejercicio() == null ? 0 : this.getCod_ejercicio().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaEstado.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaEstado.java.svn-base deleted file mode 100644 index 2420c8d..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaEstado.java.svn-base +++ /dev/null @@ -1,159 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import com.fp.dto.hb.Cache; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_ESTADO*/ -@Entity(name="ViaEstado") -@Table(name="VIA_ESTADO") -public class ViaEstado extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaEstado -*/ -@Id -@Column(name="COD_ESTADO" ,nullable=false, updatable=false) -private String pk; -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -@Column(name="NOM_ESTADO", nullable=true) - -/** -* Descripcion default del tipo de tabla de pagos -*/ -private String nom_estado; - -/**Contructor por defecto*/ -public ViaEstado(){ -} -/**Contructor de ViaEstado -@param pPk Clave Primaria del entity -*/ -public ViaEstado(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaEstado -*/ -public static ViaEstado find(EntityManager pEntityManager,Object pKey) throws Exception{ - ViaEstado obj = pEntityManager.find(ViaEstado.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaEstado -@return El objeto que referencia a la Clave primaria de ViaEstado -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaEstado -@param pPk El objeto que referencia a la nueva Clave primaria de ViaEstado -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -/**Obtiene el valor de nom_estado -@return valor de nom_estado*/ -public String getNom_estado(){ - return nom_estado; -} -/**Fija el valor de nom_estado -@param pNom_estado nuevo Valor de nom_estado*/ -public void setNom_estado(String pNom_estado){ - nom_estado=pNom_estado; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaEstado))return false; - ViaEstado that = (ViaEstado) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaEstado -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaEstado -*/ -public Object createInstance(){ - ViaEstado instance=new ViaEstado(); - return instance; -} -/**Clona la entidad ViaEstado -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaEstado p=(ViaEstado)this.clone(); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaNotificacionMovilizacion.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaNotificacionMovilizacion.java.svn-base deleted file mode 100644 index a4bd16a..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaNotificacionMovilizacion.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_NOTIFICACION_MOVILIZACION*/ -@Entity(name="ViaNotificacionMovilizacion") -@Table(name="VIA_NOTIFICACION_MOVILIZACION") -public class ViaNotificacionMovilizacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaNotificacionMovilizacion -*/ -@Id -@Column(name="COD_CIUDAD_CATALOG" ,nullable=false, updatable=false) -private String pk; -@Column(name="COD_CIUDAD_CATALOGCODE", nullable=true) - -/** -* Codigo de tabla de catalogo CUDADORIGEN de los empleados de la sbs -*/ -private String cod_ciudad_catalogcode; - -@Column(name="COD_USUARIO", nullable=false) - -/** -* Codigo de usuario asociado a la ciudad -*/ -private String cod_usuario; - -@Version -@Column(name="RECORDVERSION", nullable=true) - -/** -* Manejo de optimistic locking del registro -*/ -private Integer recordversion; - -/**Contructor por defecto*/ -public ViaNotificacionMovilizacion(){ -} -/**Contructor de ViaNotificacionMovilizacion -@param pPk Clave Primaria del entity -@param pCod_usuario Codigo de usuario asociado a la ciudad -*/ -public ViaNotificacionMovilizacion(String pPk,String pCod_usuario){ - this(); - pk=pPk; - cod_usuario=pCod_usuario; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaNotificacionMovilizacion -*/ -public static ViaNotificacionMovilizacion find(EntityManager pEntityManager,Object pKey) throws Exception{ - ViaNotificacionMovilizacion obj = pEntityManager.find(ViaNotificacionMovilizacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaNotificacionMovilizacion -@return El objeto que referencia a la Clave primaria de ViaNotificacionMovilizacion -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaNotificacionMovilizacion -@param pPk El objeto que referencia a la nueva Clave primaria de ViaNotificacionMovilizacion -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de cod_ciudad_catalogcode -@return valor de cod_ciudad_catalogcode*/ -public String getCod_ciudad_catalogcode(){ - return cod_ciudad_catalogcode; -} -/**Fija el valor de cod_ciudad_catalogcode -@param pCod_ciudad_catalogcode nuevo Valor de cod_ciudad_catalogcode*/ -public void setCod_ciudad_catalogcode(String pCod_ciudad_catalogcode){ - cod_ciudad_catalogcode=pCod_ciudad_catalogcode; -} - -/**Obtiene el valor de cod_usuario -@return valor de cod_usuario*/ -public String getCod_usuario(){ - return cod_usuario; -} -/**Fija el valor de cod_usuario -@param pCod_usuario nuevo Valor de cod_usuario*/ -public void setCod_usuario(String pCod_usuario){ - cod_usuario=pCod_usuario; -} - -/**Obtiene el valor de recordversion -@return valor de recordversion*/ -public Integer getRecordversion(){ - return recordversion; -} -/**Fija el valor de recordversion -@param pRecordversion nuevo Valor de recordversion*/ -public void setRecordversion(Integer pRecordversion){ - recordversion=pRecordversion; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaNotificacionMovilizacion))return false; - ViaNotificacionMovilizacion that = (ViaNotificacionMovilizacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaNotificacionMovilizacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaNotificacionMovilizacion -*/ -public Object createInstance(){ - ViaNotificacionMovilizacion instance=new ViaNotificacionMovilizacion(); - return instance; -} -/**Clona la entidad ViaNotificacionMovilizacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaNotificacionMovilizacion p=(ViaNotificacionMovilizacion)this.clone(); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaParametros.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaParametros.java.svn-base deleted file mode 100644 index b8df003..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/param/.svn/text-base/ViaParametros.java.svn-base +++ /dev/null @@ -1,176 +0,0 @@ -package com.fp.persistence.pviaticos.param; - -import com.fp.dto.hb.Cache; -import javax.persistence.Entity; -import javax.persistence.Id; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_PARAMETROS*/ -@Entity(name="ViaParametros") -@Table(name="VIA_PARAMETROS") -public class ViaParametros extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable,Cache{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaParametros -*/ -@Id -@Column(name="COD_PARAMETRO" ,nullable=false, updatable=false) -private String pk; -@Column(name="TEX_VALOR", nullable=true) - -/** -* Valor texto del parametro. -*/ -private String tex_valor; - -@Column(name="NUM_VALOR", nullable=true) - -/** -* Valor numero del parametro. -*/ -private BigDecimal num_valor; - -@Column(name="NOM_PARAMETRO", nullable=true) - -/** -* Nombre del parametro -*/ -private String nom_parametro; - -/**Contructor por defecto*/ -public ViaParametros(){ -} -/**Contructor de ViaParametros -@param pPk Clave Primaria del entity -*/ -public ViaParametros(String pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaParametros -*/ -public static ViaParametros find(EntityManager pEntityManager,Object pKey) throws Exception{ - ViaParametros obj = pEntityManager.find(ViaParametros.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaParametros -@return El objeto que referencia a la Clave primaria de ViaParametros -*/ -public String getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaParametros -@param pPk El objeto que referencia a la nueva Clave primaria de ViaParametros -*/ -public void setPk(String pPk){ - pk=pPk; -} -/**Obtiene el valor de tex_valor -@return valor de tex_valor*/ -public String getTex_valor(){ - return tex_valor; -} -/**Fija el valor de tex_valor -@param pTex_valor nuevo Valor de tex_valor*/ -public void setTex_valor(String pTex_valor){ - tex_valor=pTex_valor; -} - -/**Obtiene el valor de num_valor -@return valor de num_valor*/ -public BigDecimal getNum_valor(){ - return num_valor; -} -/**Fija el valor de num_valor -@param pNum_valor nuevo Valor de num_valor*/ -public void setNum_valor(BigDecimal pNum_valor){ - num_valor=pNum_valor; -} - -/**Obtiene el valor de nom_parametro -@return valor de nom_parametro*/ -public String getNom_parametro(){ - return nom_parametro; -} -/**Fija el valor de nom_parametro -@param pNom_parametro nuevo Valor de nom_parametro*/ -public void setNom_parametro(String pNom_parametro){ - nom_parametro=pNom_parametro; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaParametros))return false; - ViaParametros that = (ViaParametros) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaParametros -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaParametros -*/ -public Object createInstance(){ - ViaParametros instance=new ViaParametros(); - return instance; -} -/**Clona la entidad ViaParametros -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaParametros p=(ViaParametros)this.clone(); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/entries b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/entries deleted file mode 100644 index 933cd6f..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ViaSolicitud.java -file - - - - -2022-07-28T03:40:26.895734Z -72b966f7369a8e4d3129944f6abbf9b6 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11872 - -ViaSolicitudLiquidacion.java -file - - - - -2022-07-28T03:40:26.895734Z -94b535d8f1d88a61476c74bf58de95e9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7490 - -ViaSolicitudTransporte.java -file - - - - -2022-07-28T03:40:26.895734Z -aa610300c9fd668673f487dd046bbb54 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -9063 - -ViaSolicitudComentarios.java -file - - - - -2022-07-28T03:40:26.896734Z -08b8690a57bd7f60f24802b5a095f393 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7019 - -ViaSolicitudIntegrantes.java -file - - - - -2022-07-28T03:40:26.896734Z -370fea3f6a148b432c7a4c92a60c53af -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3827 - -ViaSolicitudKey.java -file - - - - -2022-07-28T03:40:26.896734Z -e543cb5c9efd4b38b44cac54295611a3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3381 - -ViaSolicitudLiquidacionKey.java -file - - - - -2022-07-28T03:40:26.896734Z -107678b6d25fa96b170993804ddabdc1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4329 - -ViaSolicitudTransporteKey.java -file - - - - -2022-07-28T03:40:26.897734Z -51f9a2e87e6518bc117df0b92b560714 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4411 - -ViaSolicitudComentariosKey.java -file - - - - -2022-07-28T03:40:26.897734Z -361872f4cfdc124d6dd39569ef57ec69 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4339 - -ViaSolicitudIntegrantesKey.java -file - - - - -2022-07-28T03:40:26.897734Z -a4cc9cb0713111f8c5f4b9ef820da261 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4328 - diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitud.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitud.java.svn-base deleted file mode 100644 index 04d6fe2..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitud.java.svn-base +++ /dev/null @@ -1,466 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import java.math.BigDecimal; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOLICITUD*/ -@Entity(name="ViaSolicitud") -@Table(name="VIA_SOLICITUD") -public class ViaSolicitud extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaSolicitud -*/ -@EmbeddedId -private ViaSolicitudKey pk; -@Column(name="COD_ESTADO", nullable=true) - -/** -* Codigo de estatus de la solicitud de viaticos -*/ -private String cod_estado; - -@Column(name="COD_EMPLEADO", nullable=true) - -/** -* Codigo de empleados -*/ -private String cod_empleado; - -@Column(name="COD_CREDENCIAL", nullable=true) - -/** -* Numero de credencial del empleado en la sbs -*/ -private String cod_credencial; - -@Column(name="FEC_CREACION", nullable=true) - -/** -* Fecha de creacion de la solicitud se obtiene de la base de datos -*/ -private Date fec_creacion; - -@Column(name="NUM_DIAS", nullable=true) - -/** -* Numero de dias que el servidor sale de comision -*/ -private BigDecimal num_dias; - -@Column(name="NUM_DIAS_ACUMULADOS", nullable=true) - -/** -* Corresponde a los dias acumulados de viaticos del ejercicio actual a la fecha de ingreso de la solicitud -*/ -private BigDecimal num_dias_acumulados; - -@Column(name="STS_VIATICOS", nullable=true) - -/** -* 1, Indica que solicituta viaticos -*/ -private String sts_viaticos; - -@Column(name="STS_MOVILIZACION", nullable=true) - -/** -* 1, Indica que solicituta gastos de movilizacion -*/ -private String sts_movilizacion; - -@Column(name="STS_SUBSISTENCIA", nullable=true) - -/** -* 1, Indica que solicituta gastos de subsistencia -*/ -private String sts_subsistencia; - -@Column(name="STS_ALIMENTACION", nullable=true) - -/** -* 1, Indica que solicituta gastos de alimentacion -*/ -private String sts_alimentacion; - -@Column(name="COD_DESTINO", nullable=true) - -/** -* Descripcion default del tipo de tabla de pagos -*/ -private String cod_destino; - -@Column(name="FEC_INI_VIATICO", nullable=true) - -/** -* Fecha inicio de la comision -*/ -private Date fec_ini_viatico; - -@Column(name="FEC_FIN_VIATICO", nullable=true) - -/** -* Fecha de finalizacion de la comision -*/ -private Date fec_fin_viatico; - -@Column(name="FEC_HORA_INICIO", nullable=true) - -/** -* Hora de inicio de la comision -*/ -private String fec_hora_inicio; - -@Column(name="FEC_HORA_FIN", nullable=true) - -/** -* Hora de fin de la comision -*/ -private String fec_hora_fin; - -@Column(name="TXT_ACTIVIDADES", nullable=true) - -/** -* Detalle de actividades a realizar -*/ -private String txt_actividades; - -@Column(name="COD_USUARIO", nullable=true) - -/** -* Campo para el codigo de usuario que procesa la solicitud -*/ -private String cod_usuario; - -@Column(name="COD_JEFE", nullable=true) - -/** -* Campo para el codigo del jefe -*/ -private String cod_jefe; - -@Column(name="COD_RESPONSABLE", nullable=true) - -/** -* Campo para el codigo del responsable de la unidad. -*/ -private String cod_responsable; - -/**Contructor por defecto*/ -public ViaSolicitud(){ -} -/**Contructor de ViaSolicitud -@param pPk Clave Primaria del entity -*/ -public ViaSolicitud(ViaSolicitudKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaSolicitud -*/ -public static ViaSolicitud find(EntityManager pEntityManager,ViaSolicitudKey pKey) throws Exception{ - ViaSolicitud obj = pEntityManager.find(ViaSolicitud.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaSolicitud -@return El objeto que referencia a la Clave primaria de ViaSolicitud -*/ -public ViaSolicitudKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaSolicitud -@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitud -*/ -public void setPk(ViaSolicitudKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cod_estado -@return valor de cod_estado*/ -public String getCod_estado(){ - return cod_estado; -} -/**Fija el valor de cod_estado -@param pCod_estado nuevo Valor de cod_estado*/ -public void setCod_estado(String pCod_estado){ - cod_estado=pCod_estado; -} - -/**Obtiene el valor de cod_empleado -@return valor de cod_empleado*/ -public String getCod_empleado(){ - return cod_empleado; -} -/**Fija el valor de cod_empleado -@param pCod_empleado nuevo Valor de cod_empleado*/ -public void setCod_empleado(String pCod_empleado){ - cod_empleado=pCod_empleado; -} - -/**Obtiene el valor de cod_credencial -@return valor de cod_credencial*/ -public String getCod_credencial(){ - return cod_credencial; -} -/**Fija el valor de cod_credencial -@param pCod_credencial nuevo Valor de cod_credencial*/ -public void setCod_credencial(String pCod_credencial){ - cod_credencial=pCod_credencial; -} - -/**Obtiene el valor de fec_creacion -@return valor de fec_creacion*/ -public Date getFec_creacion(){ - return fec_creacion; -} -/**Fija el valor de fec_creacion -@param pFec_creacion nuevo Valor de fec_creacion*/ -public void setFec_creacion(Date pFec_creacion){ - fec_creacion=pFec_creacion; -} - -/**Obtiene el valor de num_dias -@return valor de num_dias*/ -public BigDecimal getNum_dias(){ - return num_dias; -} -/**Fija el valor de num_dias -@param pNum_dias nuevo Valor de num_dias*/ -public void setNum_dias(BigDecimal pNum_dias){ - num_dias=pNum_dias; -} - -/**Obtiene el valor de num_dias_acumulados -@return valor de num_dias_acumulados*/ -public BigDecimal getNum_dias_acumulados(){ - return num_dias_acumulados; -} -/**Fija el valor de num_dias_acumulados -@param pNum_dias_acumulados nuevo Valor de num_dias_acumulados*/ -public void setNum_dias_acumulados(BigDecimal pNum_dias_acumulados){ - num_dias_acumulados=pNum_dias_acumulados; -} - -/**Obtiene el valor de sts_viaticos -@return valor de sts_viaticos*/ -public String getSts_viaticos(){ - return sts_viaticos; -} -/**Fija el valor de sts_viaticos -@param pSts_viaticos nuevo Valor de sts_viaticos*/ -public void setSts_viaticos(String pSts_viaticos){ - sts_viaticos=pSts_viaticos; -} - -/**Obtiene el valor de sts_movilizacion -@return valor de sts_movilizacion*/ -public String getSts_movilizacion(){ - return sts_movilizacion; -} -/**Fija el valor de sts_movilizacion -@param pSts_movilizacion nuevo Valor de sts_movilizacion*/ -public void setSts_movilizacion(String pSts_movilizacion){ - sts_movilizacion=pSts_movilizacion; -} - -/**Obtiene el valor de sts_subsistencia -@return valor de sts_subsistencia*/ -public String getSts_subsistencia(){ - return sts_subsistencia; -} -/**Fija el valor de sts_subsistencia -@param pSts_subsistencia nuevo Valor de sts_subsistencia*/ -public void setSts_subsistencia(String pSts_subsistencia){ - sts_subsistencia=pSts_subsistencia; -} - -/**Obtiene el valor de sts_alimentacion -@return valor de sts_alimentacion*/ -public String getSts_alimentacion(){ - return sts_alimentacion; -} -/**Fija el valor de sts_alimentacion -@param pSts_alimentacion nuevo Valor de sts_alimentacion*/ -public void setSts_alimentacion(String pSts_alimentacion){ - sts_alimentacion=pSts_alimentacion; -} - -/**Obtiene el valor de cod_destino -@return valor de cod_destino*/ -public String getCod_destino(){ - return cod_destino; -} -/**Fija el valor de cod_destino -@param pCod_destino nuevo Valor de cod_destino*/ -public void setCod_destino(String pCod_destino){ - cod_destino=pCod_destino; -} - -/**Obtiene el valor de fec_ini_viatico -@return valor de fec_ini_viatico*/ -public Date getFec_ini_viatico(){ - return fec_ini_viatico; -} -/**Fija el valor de fec_ini_viatico -@param pFec_ini_viatico nuevo Valor de fec_ini_viatico*/ -public void setFec_ini_viatico(Date pFec_ini_viatico){ - fec_ini_viatico=pFec_ini_viatico; -} - -/**Obtiene el valor de fec_fin_viatico -@return valor de fec_fin_viatico*/ -public Date getFec_fin_viatico(){ - return fec_fin_viatico; -} -/**Fija el valor de fec_fin_viatico -@param pFec_fin_viatico nuevo Valor de fec_fin_viatico*/ -public void setFec_fin_viatico(Date pFec_fin_viatico){ - fec_fin_viatico=pFec_fin_viatico; -} - -/**Obtiene el valor de fec_hora_inicio -@return valor de fec_hora_inicio*/ -public String getFec_hora_inicio(){ - return fec_hora_inicio; -} -/**Fija el valor de fec_hora_inicio -@param pFec_hora_inicio nuevo Valor de fec_hora_inicio*/ -public void setFec_hora_inicio(String pFec_hora_inicio){ - fec_hora_inicio=pFec_hora_inicio; -} - -/**Obtiene el valor de fec_hora_fin -@return valor de fec_hora_fin*/ -public String getFec_hora_fin(){ - return fec_hora_fin; -} -/**Fija el valor de fec_hora_fin -@param pFec_hora_fin nuevo Valor de fec_hora_fin*/ -public void setFec_hora_fin(String pFec_hora_fin){ - fec_hora_fin=pFec_hora_fin; -} - -/**Obtiene el valor de txt_actividades -@return valor de txt_actividades*/ -public String getTxt_actividades(){ - return txt_actividades; -} -/**Fija el valor de txt_actividades -@param pTxt_actividades nuevo Valor de txt_actividades*/ -public void setTxt_actividades(String pTxt_actividades){ - txt_actividades=pTxt_actividades; -} - -/**Obtiene el valor de cod_usuario -@return valor de cod_usuario*/ -public String getCod_usuario(){ - return cod_usuario; -} -/**Fija el valor de cod_usuario -@param pCod_usuario nuevo Valor de cod_usuario*/ -public void setCod_usuario(String pCod_usuario){ - cod_usuario=pCod_usuario; -} - -/**Obtiene el valor de cod_jefe -@return valor de cod_jefe*/ -public String getCod_jefe(){ - return cod_jefe; -} -/**Fija el valor de cod_jefe -@param pCod_jefe nuevo Valor de cod_jefe*/ -public void setCod_jefe(String pCod_jefe){ - cod_jefe=pCod_jefe; -} - -/**Obtiene el valor de cod_responsable -@return valor de cod_responsable*/ -public String getCod_responsable(){ - return cod_responsable; -} -/**Fija el valor de cod_responsable -@param pCod_responsable nuevo Valor de cod_responsable*/ -public void setCod_responsable(String pCod_responsable){ - cod_responsable=pCod_responsable; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaSolicitud))return false; - ViaSolicitud that = (ViaSolicitud) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaSolicitud -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaSolicitud -*/ -public Object createInstance(){ - ViaSolicitud instance=new ViaSolicitud(); - instance.setPk(new ViaSolicitudKey()); - return instance; -} -/**Clona la entidad ViaSolicitud -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaSolicitud p=(ViaSolicitud)this.clone(); - p.setPk((ViaSolicitudKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentarios.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentarios.java.svn-base deleted file mode 100644 index eec0787..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentarios.java.svn-base +++ /dev/null @@ -1,247 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; - -import java.io.Serializable; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOL_COMENTARIOS*/ -@Entity(name="ViaSolicitudComentarios") -@Table(name="VIA_SOL_COMENTARIOS") -public class ViaSolicitudComentarios extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaSolicitudComentarios -*/ -@EmbeddedId -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(COD_SECUENCIA),0)+1 from VIA_SOL_COMENTARIOS " - + "where COD_SOLICITUD=:cod_solicitud "), @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "cod_solicitud,pk.cod_solicitud"), @Parameter(name = "field", value = "cod_secuencia") }) -@GeneratedValue(generator = "seq_id") -private ViaSolicitudComentariosKey pk; -@Column(name="COD_ESTADO", nullable=true) - -/** -* Codigo de estatus de la solicitud de viaticos -*/ -private String cod_estado; - -@Column(name="COD_USUARIO", nullable=true) - -/** -* Campo para el codigo del funcionario que ingresa el comentario -*/ -private String cod_usuario; - -@Column(name="TXT_ACTIVIDAD", nullable=true) - -/** -* Campo para el ingreso del nombre de la actividad -*/ -private String txt_actividad; - -@Column(name="FEC_COMENTARIO", nullable=true) - -/** -* Campo para registrar la fecha del comentario -*/ -private Date fec_comentario; - -@Column(name="FEC_HORA", nullable=true) - -/** -* Campo para el registro de la hora del comentario -*/ -private String fec_hora; - -@Column(name="TXT_COMENTARIO", nullable=true) - -/** -* Campo para el registro de los comentarios -*/ -private String txt_comentario; - -/**Contructor por defecto*/ -public ViaSolicitudComentarios(){ -} -/**Contructor de ViaSolicitudComentarios -@param pPk Clave Primaria del entity -*/ -public ViaSolicitudComentarios(ViaSolicitudComentariosKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaSolicitudComentarios -*/ -public static ViaSolicitudComentarios find(EntityManager pEntityManager,ViaSolicitudComentariosKey pKey) throws Exception{ - ViaSolicitudComentarios obj = pEntityManager.find(ViaSolicitudComentarios.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaSolicitudComentarios -@return El objeto que referencia a la Clave primaria de ViaSolicitudComentarios -*/ -public ViaSolicitudComentariosKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaSolicitudComentarios -@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitudComentarios -*/ -public void setPk(ViaSolicitudComentariosKey pPk){ - pk=pPk; -} -/**Obtiene el valor de cod_estado -@return valor de cod_estado*/ -public String getCod_estado(){ - return cod_estado; -} -/**Fija el valor de cod_estado -@param pCod_estado nuevo Valor de cod_estado*/ -public void setCod_estado(String pCod_estado){ - cod_estado=pCod_estado; -} - -/**Obtiene el valor de cod_usuario -@return valor de cod_usuario*/ -public String getCod_usuario(){ - return cod_usuario; -} -/**Fija el valor de cod_empleado -@param pCod_usuario nuevo Valor de cod_usuario*/ -public void setCod_usuario(String pCod_usuario){ - cod_usuario=pCod_usuario; -} - -/**Obtiene el valor de txt_actividad -@return valor de txt_actividad*/ -public String getTxt_actividad(){ - return txt_actividad; -} -/**Fija el valor de txt_actividad -@param pTxt_actividad nuevo Valor de txt_actividad*/ -public void setTxt_actividad(String pTxt_actividad){ - txt_actividad=pTxt_actividad; -} - -/**Obtiene el valor de fec_comentario -@return valor de fec_comentario*/ -public Date getFec_comentario(){ - return fec_comentario; -} -/**Fija el valor de fec_comentario -@param pFec_comentario nuevo Valor de fec_comentario*/ -public void setFec_comentario(Date pFec_comentario){ - fec_comentario=pFec_comentario; -} - -/**Obtiene el valor de fec_hora -@return valor de fec_hora*/ -public String getFec_hora(){ - return fec_hora; -} -/**Fija el valor de fec_hora -@param pFec_hora nuevo Valor de fec_hora*/ -public void setFec_hora(String pFec_hora){ - fec_hora=pFec_hora; -} - -/**Obtiene el valor de txt_comentario -@return valor de txt_comentario*/ -public String getTxt_comentario(){ - return txt_comentario; -} -/**Fija el valor de txt_comentario -@param pTxt_comentario nuevo Valor de txt_comentario*/ -public void setTxt_comentario(String pTxt_comentario){ - txt_comentario=pTxt_comentario; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaSolicitudComentarios))return false; - ViaSolicitudComentarios that = (ViaSolicitudComentarios) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaSolicitudComentarios -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaSolicitudComentarios -*/ -public Object createInstance(){ - ViaSolicitudComentarios instance=new ViaSolicitudComentarios(); - instance.setPk(new ViaSolicitudComentariosKey()); - return instance; -} -/**Clona la entidad ViaSolicitudComentarios -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaSolicitudComentarios p=(ViaSolicitudComentarios)this.clone(); - p.setPk((ViaSolicitudComentariosKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentariosKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentariosKey.java.svn-base deleted file mode 100644 index 3c65a90..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudComentariosKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_SOL_COMENTARIOS*/ -@Embeddable -public class ViaSolicitudComentariosKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_SOLICITUD", nullable=false,updatable=false) - -/** -* Numero de solicitud de viaticos -*/ -private String cod_solicitud; - -@Column(name="COD_TIPO", nullable=false,updatable=false) - -/** -* Campo para el codigo del documento -*/ -private String cod_tipo; - -@Column(name="COD_SECUENCIA", nullable=false,updatable=false) - -/** -* Campo secuancial para los comentarios -*/ -private Integer cod_secuencia; - -/**Contructor por defecto*/ -public ViaSolicitudComentariosKey(){} -/**Contructor de ViaSolicitudComentariosKey -@param pCod_solicitud Numero de solicitud de viaticos -@param pCod_tipo Campo para el codigo del documento -@param pCod_secuencia Campo secuancial para los comentarios -*/ -public ViaSolicitudComentariosKey(String pCod_solicitud,String pCod_tipo,Integer pCod_secuencia){ - cod_solicitud=pCod_solicitud; - cod_tipo=pCod_tipo; - cod_secuencia=pCod_secuencia; -} -/**Obtiene el valor de cod_solicitud -@return valor de cod_solicitud*/ -public String getCod_solicitud(){ - return cod_solicitud; -} -/**Fija el valor de cod_solicitud -@param pCod_solicitud nuevo Valor de cod_solicitud*/ -public void setCod_solicitud(String pCod_solicitud){ - cod_solicitud=pCod_solicitud; -} - -/**Obtiene el valor de cod_tipo -@return valor de cod_tipo*/ -public String getCod_tipo(){ - return cod_tipo; -} -/**Fija el valor de cod_tipo -@param pCod_tipo nuevo Valor de cod_tipo*/ -public void setCod_tipo(String pCod_tipo){ - cod_tipo=pCod_tipo; -} - -/**Obtiene el valor de cod_secuencia -@return valor de cod_secuencia*/ -public Integer getCod_secuencia(){ - return cod_secuencia; -} -/**Fija el valor de cod_secuencia -@param pCod_secuencia nuevo Valor de cod_secuencia*/ -public void setCod_secuencia(Integer pCod_secuencia){ - cod_secuencia=pCod_secuencia; -} - -/**Implementacion de la comparacion de ViaSolicitudComentariosKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaSolicitudComentariosKey))return false; - ViaSolicitudComentariosKey that = (ViaSolicitudComentariosKey) o; - if (this.getCod_solicitud() == null || that.getCod_solicitud() == null){ - return false; - } - if (! this.getCod_solicitud().equals(that.getCod_solicitud())){ - return false; - } - if (this.getCod_tipo() == null || that.getCod_tipo() == null){ - return false; - } - if (! this.getCod_tipo().equals(that.getCod_tipo())){ - return false; - } - if (this.getCod_secuencia() == null || that.getCod_secuencia() == null){ - return false; - } - if (! this.getCod_secuencia().equals(that.getCod_secuencia())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaSolicitudComentariosKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_solicitud() == null ? 0 : this.getCod_solicitud().hashCode()); - result = result * 37 + (this.getCod_tipo() == null ? 0 : this.getCod_tipo().hashCode()); - result = result * 37 + (this.getCod_secuencia() == null ? 0 : this.getCod_secuencia().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantes.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantes.java.svn-base deleted file mode 100644 index 3d511a8..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantes.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import java.io.Serializable; -import javax.persistence.Table; -import com.fp.dto.hb.HibernateBean; -import javax.persistence.Version; -import java.lang.reflect.Field; -import javax.persistence.Transient; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOL_INTEGRANTES*/ -@Entity(name="ViaSolicitudIntegrantes") -@Table(name="VIA_SOL_INTEGRANTES") -public class ViaSolicitudIntegrantes extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaSolicitudIntegrantes -*/ -@EmbeddedId -private ViaSolicitudIntegrantesKey pk; -/**Contructor por defecto*/ -public ViaSolicitudIntegrantes(){ -} -/**Contructor de ViaSolicitudIntegrantes -@param pPk Clave Primaria del entity -*/ -public ViaSolicitudIntegrantes(ViaSolicitudIntegrantesKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaSolicitudIntegrantes -*/ -public static ViaSolicitudIntegrantes find(EntityManager pEntityManager,ViaSolicitudIntegrantesKey pKey) throws Exception{ - ViaSolicitudIntegrantes obj = pEntityManager.find(ViaSolicitudIntegrantes.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaSolicitudIntegrantes -@return El objeto que referencia a la Clave primaria de ViaSolicitudIntegrantes -*/ -public ViaSolicitudIntegrantesKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaSolicitudIntegrantes -@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitudIntegrantes -*/ -public void setPk(ViaSolicitudIntegrantesKey pPk){ - pk=pPk; -} -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaSolicitudIntegrantes))return false; - ViaSolicitudIntegrantes that = (ViaSolicitudIntegrantes) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaSolicitudIntegrantes -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaSolicitudIntegrantes -*/ -public Object createInstance(){ - ViaSolicitudIntegrantes instance=new ViaSolicitudIntegrantes(); - instance.setPk(new ViaSolicitudIntegrantesKey()); - return instance; -} -/**Clona la entidad ViaSolicitudIntegrantes -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaSolicitudIntegrantes p=(ViaSolicitudIntegrantes)this.clone(); - p.setPk((ViaSolicitudIntegrantesKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantesKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantesKey.java.svn-base deleted file mode 100644 index 9b16bd1..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudIntegrantesKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_SOL_INTEGRANTES*/ -@Embeddable -public class ViaSolicitudIntegrantesKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_SOLICITUD", nullable=false,updatable=false) - -/** -* Numero de solicitud de viaticos -*/ -private String cod_solicitud; - -@Column(name="COD_TIPO", nullable=false,updatable=false) - -/** -* Campo para el codigo del documento -*/ -private String cod_tipo; - -@Column(name="COD_EMPLEADO", nullable=false,updatable=false) - -/** -* Codigo de estatus de la solicitud de viaticos -*/ -private String cod_empleado; - -/**Contructor por defecto*/ -public ViaSolicitudIntegrantesKey(){} -/**Contructor de ViaSolicitudIntegrantesKey -@param pCod_solicitud Numero de solicitud de viaticos -@param pCod_tipo Campo para el codigo del documento -@param pCod_empleado Codigo de estatus de la solicitud de viaticos -*/ -public ViaSolicitudIntegrantesKey(String pCod_solicitud,String pCod_tipo,String pCod_empleado){ - cod_solicitud=pCod_solicitud; - cod_tipo=pCod_tipo; - cod_empleado=pCod_empleado; -} -/**Obtiene el valor de cod_solicitud -@return valor de cod_solicitud*/ -public String getCod_solicitud(){ - return cod_solicitud; -} -/**Fija el valor de cod_solicitud -@param pCod_solicitud nuevo Valor de cod_solicitud*/ -public void setCod_solicitud(String pCod_solicitud){ - cod_solicitud=pCod_solicitud; -} - -/**Obtiene el valor de cod_tipo -@return valor de cod_tipo*/ -public String getCod_tipo(){ - return cod_tipo; -} -/**Fija el valor de cod_tipo -@param pCod_tipo nuevo Valor de cod_tipo*/ -public void setCod_tipo(String pCod_tipo){ - cod_tipo=pCod_tipo; -} - -/**Obtiene el valor de cod_empleado -@return valor de cod_empleado*/ -public String getCod_empleado(){ - return cod_empleado; -} -/**Fija el valor de cod_empleado -@param pCod_empleado nuevo Valor de cod_empleado*/ -public void setCod_empleado(String pCod_empleado){ - cod_empleado=pCod_empleado; -} - -/**Implementacion de la comparacion de ViaSolicitudIntegrantesKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaSolicitudIntegrantesKey))return false; - ViaSolicitudIntegrantesKey that = (ViaSolicitudIntegrantesKey) o; - if (this.getCod_solicitud() == null || that.getCod_solicitud() == null){ - return false; - } - if (! this.getCod_solicitud().equals(that.getCod_solicitud())){ - return false; - } - if (this.getCod_tipo() == null || that.getCod_tipo() == null){ - return false; - } - if (! this.getCod_tipo().equals(that.getCod_tipo())){ - return false; - } - if (this.getCod_empleado() == null || that.getCod_empleado() == null){ - return false; - } - if (! this.getCod_empleado().equals(that.getCod_empleado())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaSolicitudIntegrantesKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_solicitud() == null ? 0 : this.getCod_solicitud().hashCode()); - result = result * 37 + (this.getCod_tipo() == null ? 0 : this.getCod_tipo().hashCode()); - result = result * 37 + (this.getCod_empleado() == null ? 0 : this.getCod_empleado().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudKey.java.svn-base deleted file mode 100644 index 3585c3f..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudKey.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_SOLICITUD*/ -@Embeddable -public class ViaSolicitudKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_SOLICITUD", nullable=false,updatable=false) - -/** -* Numero de solicitud de viaticos -*/ -private String cod_solicitud; - -@Column(name="COD_TIPO", nullable=false,updatable=false) - -/** -* Campo para el codigo del documento -*/ -private String cod_tipo; - -/**Contructor por defecto*/ -public ViaSolicitudKey(){} -/**Contructor de ViaSolicitudKey -@param pCod_solicitud Numero de solicitud de viaticos -@param pCod_tipo Campo para el codigo del documento -*/ -public ViaSolicitudKey(String pCod_solicitud,String pCod_tipo){ - cod_solicitud=pCod_solicitud; - cod_tipo=pCod_tipo; -} -/**Obtiene el valor de cod_solicitud -@return valor de cod_solicitud*/ -public String getCod_solicitud(){ - return cod_solicitud; -} -/**Fija el valor de cod_solicitud -@param pCod_solicitud nuevo Valor de cod_solicitud*/ -public void setCod_solicitud(String pCod_solicitud){ - cod_solicitud=pCod_solicitud; -} - -/**Obtiene el valor de cod_tipo -@return valor de cod_tipo*/ -public String getCod_tipo(){ - return cod_tipo; -} -/**Fija el valor de cod_tipo -@param pCod_tipo nuevo Valor de cod_tipo*/ -public void setCod_tipo(String pCod_tipo){ - cod_tipo=pCod_tipo; -} - -/**Implementacion de la comparacion de ViaSolicitudKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaSolicitudKey))return false; - ViaSolicitudKey that = (ViaSolicitudKey) o; - if (this.getCod_solicitud() == null || that.getCod_solicitud() == null){ - return false; - } - if (! this.getCod_solicitud().equals(that.getCod_solicitud())){ - return false; - } - if (this.getCod_tipo() == null || that.getCod_tipo() == null){ - return false; - } - if (! this.getCod_tipo().equals(that.getCod_tipo())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaSolicitudKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_solicitud() == null ? 0 : this.getCod_solicitud().hashCode()); - result = result * 37 + (this.getCod_tipo() == null ? 0 : this.getCod_tipo().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacion.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacion.java.svn-base deleted file mode 100644 index d309f06..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacion.java.svn-base +++ /dev/null @@ -1,266 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.Column; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; - -import java.io.Serializable; -import java.math.BigDecimal; - -import javax.persistence.Table; - -import com.fp.dto.hb.HibernateBean; - -import javax.persistence.Version; - -import java.lang.reflect.Field; - -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import java.sql.Date; - -/**Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOL_LIQUIDACION*/ -@Entity(name="ViaSolicitudLiquidacion") -@Table(name="VIA_SOL_LIQUIDACION") -public class ViaSolicitudLiquidacion extends com.fp.dto.AbstractDataTransport implements Serializable,HibernateBean,Cloneable{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -/** -* Clave primaria de la Entidad ViaSolicitudLiquidacion -*/ -@EmbeddedId -@GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(COD_SECUENCIA),0)+1 from VIA_SOL_LIQUIDACION " - + "where COD_SOLICITUD=:cod_solicitud "), @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "cod_solicitud,pk.cod_solicitud"), @Parameter(name = "field", value = "cod_secuencia") }) -@GeneratedValue(generator = "seq_id") -private ViaSolicitudLiquidacionKey pk; -@Column(name="FEC_FACTURA", nullable=true) - -/** -* Campo para el ingreso de la fecha de emision de la factura -*/ -private Date fec_factura; - -@Column(name="NUM_COMPROBANTE", nullable=true) - -/** -* Campo para el ingreso del comprobante de pago -*/ -private String num_comprobante; - -@Column(name="NOM_EMPRESA", nullable=true) - -/** -* Campo para el ingreso del nombre de la empresa de servicio -*/ -private String nom_empresa; - -@Column(name="NUM_RUC", nullable=true) - -/** -* Campo para el ingreso del RUC -*/ -private String num_ruc; - -@Column(name="COD_GASTO", nullable=true) - -/** -* Campo para el ingreso del tipo de gasto empleado en la comision -*/ -private String cod_gasto; - -@Column(name="VAL_IMPORTE", nullable=true) - -/** -* Campo para el ingreso del total de la factura -*/ -private BigDecimal val_importe; - -@Column(name="NOM_LUGAREMISION", nullable=true) - -/** -* Campo para el ingreso del lugar y fecha de emision de la liquidacion -*/ -private String nom_lugaremision; - -/**Contructor por defecto*/ -public ViaSolicitudLiquidacion(){ -} -/**Contructor de ViaSolicitudLiquidacion -@param pPk Clave Primaria del entity -*/ -public ViaSolicitudLiquidacion(ViaSolicitudLiquidacionKey pPk){ - this(); - pk=pPk; -} -/** -* Metodo que entrega datos de la tabla dada la clave primaria. -* @param pEntityManager referencia de la session a obtener datos del bean. -* @param pKey Caleve primaria del bean. -* @return ViaSolicitudLiquidacion -*/ -public static ViaSolicitudLiquidacion find(EntityManager pEntityManager,ViaSolicitudLiquidacionKey pKey) throws Exception{ - ViaSolicitudLiquidacion obj = pEntityManager.find(ViaSolicitudLiquidacion.class,pKey); - return obj; -} -/**Entrega la Clave primaria de ViaSolicitudLiquidacion -@return El objeto que referencia a la Clave primaria de ViaSolicitudLiquidacion -*/ -public ViaSolicitudLiquidacionKey getPk(){ - return pk; -} -/**Fija un nuevo valor a la Clave primaria de ViaSolicitudLiquidacion -@param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitudLiquidacion -*/ -public void setPk(ViaSolicitudLiquidacionKey pPk){ - pk=pPk; -} -/**Obtiene el valor de fec_factura -@return valor de fec_factura*/ -public Date getFec_factura(){ - return fec_factura; -} -/**Fija el valor de fec_factura -@param pFec_factura nuevo Valor de fec_factura*/ -public void setFec_factura(Date pFec_factura){ - fec_factura=pFec_factura; -} - -/**Obtiene el valor de num_comprobante -@return valor de num_comprobante*/ -public String getNum_comprobante(){ - return num_comprobante; -} -/**Fija el valor de num_comprobante -@param pNum_comprobante nuevo Valor de num_comprobante*/ -public void setNum_comprobante(String pNum_comprobante){ - num_comprobante=pNum_comprobante; -} - -/**Obtiene el valor de nom_empresa -@return valor de nom_empresa*/ -public String getNom_empresa(){ - return nom_empresa; -} -/**Fija el valor de nom_empresa -@param pNom_empresa nuevo Valor de nom_empresa*/ -public void setNom_empresa(String pNom_empresa){ - nom_empresa=pNom_empresa; -} - -/**Obtiene el valor de num_ruc -@return valor de num_ruc*/ -public String getNum_ruc(){ - return num_ruc; -} -/**Fija el valor de num_ruc -@param pNum_ruc nuevo Valor de num_ruc*/ -public void setNum_ruc(String pNum_ruc){ - num_ruc=pNum_ruc; -} - -/**Obtiene el valor de cod_gasto -@return valor de cod_gasto*/ -public String getCod_gasto(){ - return cod_gasto; -} -/**Fija el valor de cod_gasto -@param pCod_gasto nuevo Valor de cod_gasto*/ -public void setCod_gasto(String pCod_gasto){ - cod_gasto=pCod_gasto; -} - -/**Obtiene el valor de val_importe -@return valor de val_importe*/ -public BigDecimal getVal_importe(){ - return val_importe; -} -/**Fija el valor de val_importe -@param pVal_importe nuevo Valor de val_importe*/ -public void setVal_importe(BigDecimal pVal_importe){ - val_importe=pVal_importe; -} - -/**Obtiene el valor de nom_lugaremision -@return valor de nom_lugaremision*/ -public String getNom_lugaremision(){ - return nom_lugaremision; -} -/**Fija el valor de nom_lugaremision -@param pNom_lugaremision nuevo Valor de nom_lugaremision*/ -public void setNom_lugaremision(String pNom_lugaremision){ - nom_lugaremision=pNom_lugaremision; -} - -public boolean equals(Object rhs){ - if (rhs == null)return false; - if (! (rhs instanceof ViaSolicitudLiquidacion))return false; - ViaSolicitudLiquidacion that = (ViaSolicitudLiquidacion) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); -} -/**Implementacion del metodo hashCode de la la entidad ViaSolicitudLiquidacion -@return el hashCode la instancia -*/ -public int hashCode() { - if (this.hashValue == 0){ - int result = 17; - if (this.getPk() == null){ - result = super.hashCode(); - }else{ - result = this.getPk().hashCode(); - } - this.hashValue = result; - } - return this.hashValue; -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+=name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -/**Implementacion de la creacion de un bean en blanco ViaSolicitudLiquidacion -*/ -public Object createInstance(){ - ViaSolicitudLiquidacion instance=new ViaSolicitudLiquidacion(); - instance.setPk(new ViaSolicitudLiquidacionKey()); - return instance; -} -/**Clona la entidad ViaSolicitudLiquidacion -@see com.fp.dto.hb.HibernateBean#cloneMe() -*/ -public Object cloneMe() throws CloneNotSupportedException{ - ViaSolicitudLiquidacion p=(ViaSolicitudLiquidacion)this.clone(); - p.setPk((ViaSolicitudLiquidacionKey)this.pk.cloneMe()); - return p; -} -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacionKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacionKey.java.svn-base deleted file mode 100644 index 816a5e9..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudLiquidacionKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_SOL_LIQUIDACION*/ -@Embeddable -public class ViaSolicitudLiquidacionKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_SOLICITUD", nullable=false,updatable=false) - -/** -* Numero de solicitud de viaticos -*/ -private String cod_solicitud; - -@Column(name="COD_TIPO", nullable=false,updatable=false) - -/** -* Campo para el codigo del documento -*/ -private String cod_tipo; - -@Column(name="COD_SECUENCIA", nullable=false,updatable=false) - -/** -* Campo para el codigo secuanecial -*/ -private Integer cod_secuencia; - -/**Contructor por defecto*/ -public ViaSolicitudLiquidacionKey(){} -/**Contructor de ViaSolicitudLiquidacionKey -@param pCod_solicitud Numero de solicitud de viaticos -@param pCod_tipo Campo para el codigo del documento -@param pCod_secuencia Campo para el codigo secuanecial -*/ -public ViaSolicitudLiquidacionKey(String pCod_solicitud,String pCod_tipo,Integer pCod_secuencia){ - cod_solicitud=pCod_solicitud; - cod_tipo=pCod_tipo; - cod_secuencia=pCod_secuencia; -} -/**Obtiene el valor de cod_solicitud -@return valor de cod_solicitud*/ -public String getCod_solicitud(){ - return cod_solicitud; -} -/**Fija el valor de cod_solicitud -@param pCod_solicitud nuevo Valor de cod_solicitud*/ -public void setCod_solicitud(String pCod_solicitud){ - cod_solicitud=pCod_solicitud; -} - -/**Obtiene el valor de cod_tipo -@return valor de cod_tipo*/ -public String getCod_tipo(){ - return cod_tipo; -} -/**Fija el valor de cod_tipo -@param pCod_tipo nuevo Valor de cod_tipo*/ -public void setCod_tipo(String pCod_tipo){ - cod_tipo=pCod_tipo; -} - -/**Obtiene el valor de cod_secuencia -@return valor de cod_secuencia*/ -public Integer getCod_secuencia(){ - return cod_secuencia; -} -/**Fija el valor de cod_secuencia -@param pCod_secuencia nuevo Valor de cod_secuencia*/ -public void setCod_secuencia(Integer pCod_secuencia){ - cod_secuencia=pCod_secuencia; -} - -/**Implementacion de la comparacion de ViaSolicitudLiquidacionKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaSolicitudLiquidacionKey))return false; - ViaSolicitudLiquidacionKey that = (ViaSolicitudLiquidacionKey) o; - if (this.getCod_solicitud() == null || that.getCod_solicitud() == null){ - return false; - } - if (! this.getCod_solicitud().equals(that.getCod_solicitud())){ - return false; - } - if (this.getCod_tipo() == null || that.getCod_tipo() == null){ - return false; - } - if (! this.getCod_tipo().equals(that.getCod_tipo())){ - return false; - } - if (this.getCod_secuencia() == null || that.getCod_secuencia() == null){ - return false; - } - if (! this.getCod_secuencia().equals(that.getCod_secuencia())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaSolicitudLiquidacionKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_solicitud() == null ? 0 : this.getCod_solicitud().hashCode()); - result = result * 37 + (this.getCod_tipo() == null ? 0 : this.getCod_tipo().hashCode()); - result = result * 37 + (this.getCod_secuencia() == null ? 0 : this.getCod_secuencia().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporte.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporte.java.svn-base deleted file mode 100644 index 456c7f2..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporte.java.svn-base +++ /dev/null @@ -1,331 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import java.io.Serializable; -import java.lang.reflect.Field; -import java.sql.Date; - -import javax.persistence.Column; -import javax.persistence.EmbeddedId; -import javax.persistence.Entity; -import javax.persistence.EntityManager; -import javax.persistence.GeneratedValue; -import javax.persistence.Table; -import javax.persistence.Transient; - -import org.hibernate.annotations.GenericGenerator; -import org.hibernate.annotations.Parameter; - -import com.fp.dto.hb.HibernateBean; - -/** Clase que implementa la entidad de Hibernate que hace referencia a la tabla VIA_SOL_TRANSPORTE */ -@Entity(name = "ViaSolicitudTransporte") -@Table(name = "VIA_SOL_TRANSPORTE") -public class ViaSolicitudTransporte extends com.fp.dto.AbstractDataTransport implements Serializable, HibernateBean, Cloneable { - /** - * HashCode asociado con la Instancia - */ - @Transient - private int hashValue = 0; - - /** - * Version de la Clase - */ - private static final long serialVersionUID = 1L; - - /** - * Clave primaria de la Entidad ViaSolicitudTransporte - */ - @EmbeddedId - @GenericGenerator(name = "seq_id", strategy = "com.fp.general.keygen.SubSequenceKey", parameters = { - @Parameter(name = "sql", value = "select coalesce(max(COD_SECUENCIA),0)+1 from VIA_SOL_TRANSPORTE " - + "where COD_SOLICITUD=:cod_solicitud "), @Parameter(name = "type", value = "java.lang.Integer"), - @Parameter(name = "param", value = "cod_solicitud,pk.cod_solicitud"), @Parameter(name = "field", value = "cod_secuencia") }) - @GeneratedValue(generator = "seq_id") - private ViaSolicitudTransporteKey pk; - - @Column(name = "COD_TIP_TRANSPORTE", nullable = true) - /** - * T terrestre, A aereo, M maritimo - */ - private String cod_tip_transporte; - - @Column(name = "TXT_TRANSPORTE", nullable = true) - /** - * Nombre de la empresa de transporte - */ - private String txt_transporte; - - @Column(name = "TXT_RUTA", nullable = true) - /** - * Ruta utilizada para el transporte - */ - private String txt_ruta; - - @Column(name = "FEC_SALIDA", nullable = true) - /** - * Fecha inicio del viaje - */ - private Date fec_salida; - - @Column(name = "FEC_LLEGADA", nullable = true) - /** - * Fecha llegada - */ - private Date fec_llegada; - - @Column(name = "FEC_HORA_SALIDA", nullable = true) - /** - * Hora de inicio del viaje - */ - private String fec_hora_salida; - - @Column(name = "FEC_HORA_LLEGADA", nullable = true) - /** - * Hora de llegada - */ - private String fec_hora_llegada; - - /** Contructor por defecto */ - public ViaSolicitudTransporte() { - } - - /** - * Contructor de ViaSolicitudTransporte - * - * @param pPk Clave Primaria del entity - */ - public ViaSolicitudTransporte(ViaSolicitudTransporteKey pPk) { - this(); - pk = pPk; - } - - /** - * Metodo que entrega datos de la tabla dada la clave primaria. - * - * @param pEntityManager referencia de la session a obtener datos del bean. - * @param pKey Caleve primaria del bean. - * @return ViaSolicitudTransporte - */ - public static ViaSolicitudTransporte find(EntityManager pEntityManager, ViaSolicitudTransporteKey pKey) throws Exception { - ViaSolicitudTransporte obj = pEntityManager.find(ViaSolicitudTransporte.class, pKey); - return obj; - } - - /** - * Entrega la Clave primaria de ViaSolicitudTransporte - * - * @return El objeto que referencia a la Clave primaria de ViaSolicitudTransporte - */ - public ViaSolicitudTransporteKey getPk() { - return pk; - } - - /** - * Fija un nuevo valor a la Clave primaria de ViaSolicitudTransporte - * - * @param pPk El objeto que referencia a la nueva Clave primaria de ViaSolicitudTransporte - */ - public void setPk(ViaSolicitudTransporteKey pPk) { - pk = pPk; - } - - /** - * Obtiene el valor de cod_tip_transporte - * - * @return valor de cod_tip_transporte - */ - public String getCod_tip_transporte() { - return cod_tip_transporte; - } - - /** - * Fija el valor de cod_tip_transporte - * - * @param pCod_tip_transporte nuevo Valor de cod_tip_transporte - */ - public void setCod_tip_transporte(String pCod_tip_transporte) { - cod_tip_transporte = pCod_tip_transporte; - } - - /** - * Obtiene el valor de txt_transporte - * - * @return valor de txt_transporte - */ - public String getTxt_transporte() { - return txt_transporte; - } - - /** - * Fija el valor de txt_transporte - * - * @param pTxt_transporte nuevo Valor de txt_transporte - */ - public void setTxt_transporte(String pTxt_transporte) { - txt_transporte = pTxt_transporte; - } - - /** - * Obtiene el valor de txt_ruta - * - * @return valor de txt_ruta - */ - public String getTxt_ruta() { - return txt_ruta; - } - - /** - * Fija el valor de txt_ruta - * - * @param pTxt_ruta nuevo Valor de txt_ruta - */ - public void setTxt_ruta(String pTxt_ruta) { - txt_ruta = pTxt_ruta; - } - - /** - * Obtiene el valor de fec_salida - * - * @return valor de fec_salida - */ - public Date getFec_salida() { - return fec_salida; - } - - /** - * Fija el valor de fec_salida - * - * @param pFec_salida nuevo Valor de fec_salida - */ - public void setFec_salida(Date pFec_salida) { - fec_salida = pFec_salida; - } - - /** - * Obtiene el valor de fec_llegada - * - * @return valor de fec_llegada - */ - public Date getFec_llegada() { - return fec_llegada; - } - - /** - * Fija el valor de fec_llegada - * - * @param pFec_llegada nuevo Valor de fec_llegada - */ - public void setFec_llegada(Date pFec_llegada) { - fec_llegada = pFec_llegada; - } - - /** - * Obtiene el valor de fec_hora_salida - * - * @return valor de fec_hora_salida - */ - public String getFec_hora_salida() { - return fec_hora_salida; - } - - /** - * Fija el valor de fec_hora_salida - * - * @param pFec_hora_salida nuevo Valor de fec_hora_salida - */ - public void setFec_hora_salida(String pFec_hora_salida) { - fec_hora_salida = pFec_hora_salida; - } - - /** - * Obtiene el valor de fec_hora_llegada - * - * @return valor de fec_hora_llegada - */ - public String getFec_hora_llegada() { - return fec_hora_llegada; - } - - /** - * Fija el valor de fec_hora_llegada - * - * @param pFec_hora_llegada nuevo Valor de fec_hora_llegada - */ - public void setFec_hora_llegada(String pFec_hora_llegada) { - fec_hora_llegada = pFec_hora_llegada; - } - - @Override - public boolean equals(Object rhs) { - if (rhs == null) - return false; - if (!(rhs instanceof ViaSolicitudTransporte)) - return false; - ViaSolicitudTransporte that = (ViaSolicitudTransporte) rhs; - if (this.getPk() == null || that.getPk() == null) - return false; - return (this.getPk().equals(that.getPk())); - } - - /** - * Implementacion del metodo hashCode de la la entidad ViaSolicitudTransporte - * - * @return el hashCode la instancia - */ - @Override - public int hashCode() { - if (hashValue == 0) { - int result = 17; - if (this.getPk() == null) { - result = super.hashCode(); - } else { - result = this.getPk().hashCode(); - } - hashValue = result; - } - return hashValue; - } - - /** Implementacion toString */ - @Override - public String toString() { - Field[] fs = this.getClass().getDeclaredFields(); - String data = ""; - for (Field f : fs) { - try { - String name = f.getName(); - if (f.getType().getName().compareTo("java.util.Set") == 0) - continue; - if (name.compareTo("hashValue") == 0 || name.compareTo("serialVersionUID") == 0) - continue; - data += name + "=" + f.get(this) + ";"; - } catch (Exception e) { - continue; - } - } - if (data.compareTo("") == 0) { - data = super.toString(); - } - return data; - } - - /** Implementacion de la creacion de un bean en blanco ViaSolicitudTransporte */ - @Override - public Object createInstance() { - ViaSolicitudTransporte instance = new ViaSolicitudTransporte(); - instance.setPk(new ViaSolicitudTransporteKey()); - return instance; - } - - /** - * Clona la entidad ViaSolicitudTransporte - * - * @see com.fp.dto.hb.HibernateBean#cloneMe() - */ - @Override - public Object cloneMe() throws CloneNotSupportedException { - ViaSolicitudTransporte p = (ViaSolicitudTransporte) this.clone(); - p.setPk((ViaSolicitudTransporteKey) pk.cloneMe()); - return p; - } -} diff --git a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporteKey.java.svn-base b/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporteKey.java.svn-base deleted file mode 100644 index fdf9ea8..0000000 --- a/base/persistence/pviaticos/src/main/java/com/fp/persistence/pviaticos/solicitud/.svn/text-base/ViaSolicitudTransporteKey.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.persistence.pviaticos.solicitud; - -import javax.persistence.Column; -import java.io.Serializable; -import com.fp.dto.hb.HibernateId; -import java.lang.reflect.Field; -import javax.persistence.Embeddable; -import javax.persistence.Transient; - -/**Clase que hace referencia a la Clave Primaria de VIA_SOL_TRANSPORTE*/ -@Embeddable -public class ViaSolicitudTransporteKey extends com.fp.dto.AbstractDataTransport implements Serializable,Cloneable,HibernateId{ -/** -* HashCode asociado con la Instancia -*/ -@Transient -private int hashValue = 0; -/** -* Version de la Clase -*/ -private static final long serialVersionUID = 1L; -@Column(name="COD_SOLICITUD", nullable=false,updatable=false) - -/** -* Numero de solicitud de viaticos -*/ -private String cod_solicitud; - -@Column(name="COD_TIPO", nullable=false,updatable=false) - -/** -* Campo para el codigo del documento -*/ -private String cod_tipo; - -@Column(name="COD_SECUENCIA", nullable=false,updatable=false) - -/** -* Secuencia interna para cada solicitud de transportes utilizados en la comision -*/ -private Integer cod_secuencia; - -/**Contructor por defecto*/ -public ViaSolicitudTransporteKey(){} -/**Contructor de ViaSolicitudTransporteKey -@param pCod_solicitud Numero de solicitud de viaticos -@param pCod_tipo Campo para el codigo del documento -@param pCod_secuencia Secuencia interna para cada solicitud de transportes utilizados en la comision -*/ -public ViaSolicitudTransporteKey(String pCod_solicitud,String pCod_tipo,Integer pCod_secuencia){ - cod_solicitud=pCod_solicitud; - cod_tipo=pCod_tipo; - cod_secuencia=pCod_secuencia; -} -/**Obtiene el valor de cod_solicitud -@return valor de cod_solicitud*/ -public String getCod_solicitud(){ - return cod_solicitud; -} -/**Fija el valor de cod_solicitud -@param pCod_solicitud nuevo Valor de cod_solicitud*/ -public void setCod_solicitud(String pCod_solicitud){ - cod_solicitud=pCod_solicitud; -} - -/**Obtiene el valor de cod_tipo -@return valor de cod_tipo*/ -public String getCod_tipo(){ - return cod_tipo; -} -/**Fija el valor de cod_tipo -@param pCod_tipo nuevo Valor de cod_tipo*/ -public void setCod_tipo(String pCod_tipo){ - cod_tipo=pCod_tipo; -} - -/**Obtiene el valor de cod_secuencia -@return valor de cod_secuencia*/ -public Integer getCod_secuencia(){ - return cod_secuencia; -} -/**Fija el valor de cod_secuencia -@param pCod_secuencia nuevo Valor de cod_secuencia*/ -public void setCod_secuencia(Integer pCod_secuencia){ - cod_secuencia=pCod_secuencia; -} - -/**Implementacion de la comparacion de ViaSolicitudTransporteKey -@param o Objeto de comparacion -*/ -public boolean equals(Object o){ - if (o == null)return false; - if (! (o instanceof ViaSolicitudTransporteKey))return false; - ViaSolicitudTransporteKey that = (ViaSolicitudTransporteKey) o; - if (this.getCod_solicitud() == null || that.getCod_solicitud() == null){ - return false; - } - if (! this.getCod_solicitud().equals(that.getCod_solicitud())){ - return false; - } - if (this.getCod_tipo() == null || that.getCod_tipo() == null){ - return false; - } - if (! this.getCod_tipo().equals(that.getCod_tipo())){ - return false; - } - if (this.getCod_secuencia() == null || that.getCod_secuencia() == null){ - return false; - } - if (! this.getCod_secuencia().equals(that.getCod_secuencia())){ - return false; - } - return true; -} -/**Implementacion del metodo hashCode bajo el patron de Bloch -@return hashCode de la instancia ViaSolicitudTransporteKey -*/ -public int hashCode(){ - if (this.hashValue == 0){ - int result = 17; - result = result * 37 + (this.getCod_solicitud() == null ? 0 : this.getCod_solicitud().hashCode()); - result = result * 37 + (this.getCod_tipo() == null ? 0 : this.getCod_tipo().hashCode()); - result = result * 37 + (this.getCod_secuencia() == null ? 0 : this.getCod_secuencia().hashCode()); - this.hashValue = result; - } - return this.hashValue; -} -public Object cloneMe() throws CloneNotSupportedException { - return this.clone(); -} -/**Implementacion toString -*/ -public String toString() { - Field[]fs=this.getClass().getDeclaredFields(); - String data=""; - for(Field f:fs){ - try{ - String name=f.getName(); - if(f.getType().getName().compareTo("java.util.Set")==0)continue; - if(name.compareTo("hashValue")==0||name.compareTo("serialVersionUID")==0)continue; - data+="pk."+name+"="+f.get(this)+";"; - }catch(Exception e){ - continue; - } - } - if(data.compareTo("")==0){ - data=super.toString(); - } - return data; - } -} diff --git a/base/persistence/pviaticos/src/test/.svn/entries b/base/persistence/pviaticos/src/test/.svn/entries deleted file mode 100644 index 5be6dc2..0000000 --- a/base/persistence/pviaticos/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/pviaticos/src/test/java/.svn/entries b/base/persistence/pviaticos/src/test/java/.svn/entries deleted file mode 100644 index fd1bf39..0000000 --- a/base/persistence/pviaticos/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/pviaticos/src/test/java/com/.svn/entries b/base/persistence/pviaticos/src/test/java/com/.svn/entries deleted file mode 100644 index 3b04ad9..0000000 --- a/base/persistence/pviaticos/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/pviaticos/src/test/java/com/fp/.svn/entries b/base/persistence/pviaticos/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 820ad50..0000000 --- a/base/persistence/pviaticos/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/entries b/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/entries deleted file mode 100644 index ba2e088..0000000 --- a/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/pviaticos/src/test/java/com/fp/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AppTest.java -file - - - - -2022-07-28T03:40:26.486733Z -31e1e6228ad5533c932208c702c51800 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -684 - diff --git a/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/text-base/AppTest.java.svn-base b/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/text-base/AppTest.java.svn-base deleted file mode 100644 index 2478b52..0000000 --- a/base/persistence/pviaticos/src/test/java/com/fp/persistence/.svn/text-base/AppTest.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.persistence; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/base/persistence/util/.svn/dir-prop-base b/base/persistence/util/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/base/persistence/util/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/base/persistence/util/.svn/entries b/base/persistence/util/.svn/entries deleted file mode 100644 index 1fe83c2..0000000 --- a/base/persistence/util/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util -svn://172.17.26.185/COMACO - - - -2014-10-17T05:34:35.839741Z -1670 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:31.583755Z -9ec07cb41b9cc129434013ed5dde8b39 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -946 - diff --git a/base/persistence/util/.svn/text-base/pom.xml.svn-base b/base/persistence/util/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index efe6a73..0000000 --- a/base/persistence/util/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,31 +0,0 @@ - - - 4.0.0 - - persistence - com.fp.base - 2.1 - - com.fp.base.persistence - util - util - - - - com.fp.base.persistence - pgeneral - 2.1 - - - com.fp.base.persistence - pcustomer - 2.1 - - - com.fp.base.persistence - commondb - 2.1 - - - diff --git a/base/persistence/util/src/.svn/entries b/base/persistence/util/src/.svn/entries deleted file mode 100644 index 75bb928..0000000 --- a/base/persistence/util/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/base/persistence/util/src/main/.svn/entries b/base/persistence/util/src/main/.svn/entries deleted file mode 100644 index 7cd968f..0000000 --- a/base/persistence/util/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/util/src/main/java/.svn/entries b/base/persistence/util/src/main/java/.svn/entries deleted file mode 100644 index e5bf0e6..0000000 --- a/base/persistence/util/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/util/src/main/java/com/.svn/entries b/base/persistence/util/src/main/java/com/.svn/entries deleted file mode 100644 index 45a7e5a..0000000 --- a/base/persistence/util/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/util/src/main/java/com/fp/.svn/entries b/base/persistence/util/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 022e1f3..0000000 --- a/base/persistence/util/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/persistence/util/src/main/java/com/fp/base/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/.svn/entries deleted file mode 100644 index ac32cbe..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/.svn/entries deleted file mode 100644 index 7788b90..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -util -dir - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/util/.svn/entries deleted file mode 100644 index a4f3e3f..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/.svn/entries +++ /dev/null @@ -1,40 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence/util -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -db -dir - -formula -dir - -job -dir - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/entries deleted file mode 100644 index 77716cd..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence/util/db -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DataHelper.java -file - - - - -2022-07-28T03:40:31.102753Z -329f14e4510036a1b29b8467fba01a14 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8969 - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/text-base/DataHelper.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/text-base/DataHelper.java.svn-base deleted file mode 100644 index 056f2f1..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/db/.svn/text-base/DataHelper.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.base.persistence.util.db; - -import java.util.Map; - -import com.fp.core.exception.CoreException; -import com.fp.persistence.commondb.HqlStatement; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.cache.CacheManager; -import com.fp.persistence.pgeneral.gene.TgeneCreditType; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; -import com.fp.persistence.pgeneral.gene.TgeneFrequency; -import com.fp.persistence.pgeneral.installment.TgeneInstallmentType; -import com.fp.persistence.pgeneral.safe.TsafeUser; -import com.fp.persistence.pgeneral.trans.TgeneTransactionItem; - -/** - * Clase que se encarga de manejo de sentencias SQL o HQL con la base de datos, Existe ciertas tablas con informacion - * estatica, las cuales se cargan a memoria.
      - * Otras tablas se define para que se cargue a cache la informacion de ciertos regitros que esten marcados con - * ManageCache. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class DataHelper { - /** Almacena una instancia de DataHelper. */ - private static DataHelper cache; - - /** - * Entrega una instancia de DataHelper. - * - * @return DataHelper - */ - public static DataHelper getInstance() { - if (DataHelper.cache != null) { - return DataHelper.cache; - } - synchronized (DataHelper.class) { - if (DataHelper.cache == null) { - DataHelper.cache = new DataHelper(); - } - } - return DataHelper.cache; - } - - private static final String VMODULECODE = "modulecode"; - - /** Sentencia que devuelve un registro de TgeneCreditType. */ - private static final String HQL_CREDIT_TYPE = "from TgeneCreditType t " + " where t.pk = :credittypecode "; - - /** - * Metodo que entrega la definicion de TgeneCreditType. - * - * @param pCreditType Codigo de tipo de credito a obtener datos. - * @return TgeneCreditType - * @throws Exception - */ - public TgeneCreditType getTgeneCreditType(String pCreditType) throws Exception { - TgeneCreditType tgeneCreditType = null; - CacheManager cm = CacheManager.getInstance(); - tgeneCreditType = (TgeneCreditType) cm.getData("TgeneCreditType", pCreditType); - if (tgeneCreditType == null) { - HqlStatement hql = new HqlStatement(); - hql.setSentence(DataHelper.HQL_CREDIT_TYPE); - hql.setString("credittypecode", pCreditType); - tgeneCreditType = (TgeneCreditType) hql.getObject(); - Map m = cm.getMapDefinition("TgeneCreditType"); - m.put(pCreditType, tgeneCreditType); - cm.putData("TgeneCreditType", m); - } - return tgeneCreditType; - } - - /** Sentencia que devuelve un registro de TgeneInstallmentType. */ - private static final String HQL_INSTALLMENT_TYPE = "from TgeneInstallmentType t " + " where t.pk.installmenttype = :installmenttype " - + " and t.pk.modulecode = :modulecode "; - - /** - * Metodo que entrega la definicion de TgeneInstallmentType - * - * @param TgeneInstallmentType Codigo de tipo de tabla de amortizacion. - * @return TgeneInstallmentType - * @throws Exception - */ - public TgeneInstallmentType getTgeneInstallmentType(String pInstallmentType, String pModule) throws Exception { - String key = pInstallmentType + pModule; - TgeneInstallmentType tgeneInstallmentType = null; - CacheManager cm = CacheManager.getInstance(); - tgeneInstallmentType = (TgeneInstallmentType) cm.getData("TgeneInstallmentType", key); - if (tgeneInstallmentType == null) { - HqlStatement hql = new HqlStatement(); - hql.setSentence(DataHelper.HQL_INSTALLMENT_TYPE); - hql.setString("installmenttype", pInstallmentType); - hql.setString(DataHelper.VMODULECODE, pModule); - hql.setReadonly(true); - tgeneInstallmentType = (TgeneInstallmentType) hql.getObject(); - if (tgeneInstallmentType == null) { - throw new CoreException("CORE-0022", "TIPO TABLA DE AMORTIZACION NO DEFINIDA EN TGENEINSTALLMENTTYPE :{0}", pInstallmentType); - } - - Map m = cm.getMapDefinition("TgeneInstallmentType"); - m.put(key, tgeneInstallmentType); - cm.putData("TgeneInstallmentType", m); - } - return tgeneInstallmentType; - } - - /** Sentencia que devuelve un registro de TgeneFrequency. */ - private static final String HQL_FREQUENCY = "from TgeneFrequency t " + " where t.pk = :frequencycode "; - - /** - * Metodo que entrega la definicion de TgeneFrequency - * - * @param pFrequencyCode Codigo de frecuenia a obtener su definicion. - * @return TgeneFrequency - * @throws Exception - */ - public TgeneFrequency getTgeneFrecuency(Integer pFrequencyCode) throws Exception { - TgeneFrequency tgeneFrequency = null; - String key = "" + pFrequencyCode; - CacheManager cm = CacheManager.getInstance(); - tgeneFrequency = (TgeneFrequency) cm.getData("TgeneFrequency", key); - if (tgeneFrequency == null) { - HqlStatement hql = new HqlStatement(); - hql.setSentence(DataHelper.HQL_FREQUENCY); - hql.setInteger("frequencycode", pFrequencyCode); - hql.setReadonly(true); - tgeneFrequency = (TgeneFrequency) hql.getObject(); - if (tgeneFrequency == null) { - throw new CoreException("CORE-0015", "FRECUENCIA NO DEFINIDA EN TGENEFREQUENCY FRQCODE:{0}", pFrequencyCode); - } - Map m = cm.getMapDefinition("TgeneFrequency"); - m.put(key, tgeneFrequency); - cm.putData("TgeneFrequency", m); - } - return tgeneFrequency; - } - - /** - * Entrega un objeto con los datos de TsafeUser. Que contiene datos de un usuario. - * - * @param pUserCode Codigo de usuario a obtener un registro. - * @return TsafeUser - * @throws CoreException - * @throws Exception - */ - public TsafeUser getTsafeUser(String pUserCode) throws CoreException, Exception { - TsafeUser tsafeUser = TsafeUser.find(PersistenceHelper.getEntityManager(), pUserCode); - if (tsafeUser == null) { - throw new CoreException("CORE-0032", "USUARIO {0} NO DEFINIDO EN TSAFEUSER", pUserCode); - } - if (tsafeUser.getInternalcode() == null) { - throw new CoreException("CORE-0033", "CODIGO USUARIO INTERNO NO DEFINIDO EN TSAFEUSER USERCODE: {0}", pUserCode); - } - return tsafeUser; - } - - /** - * Entrega un registro de tgenecurrency. - * - * @param pCurrency Codigo de moneda a obtener un registro de la base de datos. - * @return TgeneCurrency - * @throws Exception - */ - public TgeneCurrency getTgeneCurrency(String pCurrency) throws Exception { - TgeneCurrency tgeneCurrency = null; - CacheManager cm = CacheManager.getInstance(); - tgeneCurrency = (TgeneCurrency) cm.getData("TgeneCurrency", pCurrency); - if (tgeneCurrency == null) { - tgeneCurrency = TgeneCurrency.find(PersistenceHelper.getEntityManager(), pCurrency); - if (tgeneCurrency == null) { - throw new CoreException("CORE-0017", "MONEDA {0} NO DEFINIDA EN TGENECURRENCY ", pCurrency); - } - Map m = cm.getMapDefinition("TgeneCurrency"); - m.put(pCurrency, tgeneCurrency); - cm.putData("TgeneCurrency", m); - } - return tgeneCurrency; - } - - /** - * Sentecia que devuelve el rubro de una transaccion - */ - private static final String HQL_TRANSACTION_ITEMCODE = "from TgeneTransactionItem tt " + " where tt.pk.transactionmodule = :transactionmodule" - + " and tt.pk.transactioncode = :transactioncode" + " and tt.pk.transactionversion = :transactionversion" - + " and tt.pk.itemcode = :itemcode"; - - /** - * Metodo que retorna el rubro de una transaccion - * - * @param transactionmodule Modulo de la transaccion - * @param transactioncode Codigo de la transaccion - * @param transactionversion Version de la transaccion - * @param itemcode Rubro de la transaccion - * @return - * @throws Exception - */ - public TgeneTransactionItem getTgeneTransactionItem(String transactionmodule, Integer transactioncode, Integer transactionversion, - Integer itemcode) throws Exception { - TgeneTransactionItem tgeneTransactionItem = null; - HqlStatement hql = new HqlStatement(DataHelper.HQL_TRANSACTION_ITEMCODE); - hql.setString("transactionmodule", transactionmodule); - hql.setInteger("transactioncode", transactioncode); - hql.setInteger("transactionversion", transactionversion); - hql.setInteger("itemcode", itemcode); - tgeneTransactionItem = (TgeneTransactionItem) hql.getObject(); - return tgeneTransactionItem; - } - -} diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/entries deleted file mode 100644 index 10bc602..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -FormulaManager.java -file - - - - -2022-07-28T03:40:31.148753Z -ec0c175b04e488da6986dc41f107c89c -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -988 - -package-info.java -file - - - - -2022-07-28T03:40:31.148753Z -14f0d0792c3d6232182bd3722e0a3f16 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -78 - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/FormulaManager.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/FormulaManager.java.svn-base deleted file mode 100644 index 5c552f0..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/FormulaManager.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.base.persistence.util.formula; - -import java.util.List; - -import javax.persistence.Query; - -import org.nfunk.jep.function.PostfixMathCommand; - -import com.fp.common.formula.FormulaEvaluator; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.gene.TgeneFunctions; - -public class FormulaManager { - private FormulaEvaluator fe; - - public FormulaManager() throws Exception { - this.fe = new FormulaEvaluator(); - this.addMaiaFunctions(); - } - - private void addMaiaFunctions() throws Exception { - Query qry = PersistenceHelper.createQuery("from com.fp.persistence.pgeneral.gene.TgeneFunctions p where p.active='Y'"); - List lF = qry.getResultList(); - for (TgeneFunctions f : lF) { - this.fe.setFunction(f.getPk(), (PostfixMathCommand) Class.forName(f.getClassname()).newInstance()); - } - } - - public FormulaEvaluator getEvaluator() { - return this.fe; - } -} diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/package-info.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index 2a769e8..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/formula/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,4 +0,0 @@ -/** - * Manejador de Formulas - */ -package com.fp.base.persistence.util.formula; \ No newline at end of file diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/entries deleted file mode 100644 index 3eb442c..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/entries +++ /dev/null @@ -1,164 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MessageManager.java -file - - - - -2022-07-28T03:40:31.064753Z -b40535a3ab1e3897160d0d4cea02e8ca -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1827 - -SaveBeanInOtherSession.java -file - - - - -2022-07-28T03:40:31.064753Z -ea71b0943ce48393c115d1459fcb75c9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1809 - -GeneralDescriptions.java -file - - - - -2022-07-28T03:40:31.065753Z -39d618dcd5756abf39fab197651a83fa -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -13500 - -MessageDescriptions.java -file - - - - -2022-07-28T03:40:31.065753Z -e141d617f82b69d36bd8cbcefe65159e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -565 - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/GeneralDescriptions.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/GeneralDescriptions.java.svn-base deleted file mode 100644 index bf44be3..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/GeneralDescriptions.java.svn-base +++ /dev/null @@ -1,350 +0,0 @@ -package com.fp.base.persistence.util.helper; - -import com.fp.base.persistence.util.db.DataHelper; -import com.fp.common.helper.Constant; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.acco.TgeneAccount; -import com.fp.persistence.pgeneral.acco.TgeneAccountKey; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatusKey; -import com.fp.persistence.pgeneral.gene.*; -import com.fp.persistence.pgeneral.installment.TgeneInstallmentType; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; -import com.fp.persistence.pgeneral.safe.TsafeUser; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionItem; - -/** - * Clase utilitaria que entrega las descripciones generales, de productos, monedas, tipos de credito, adicionalmente - * completa descripciones en tgeneaccount, tgenesolicitude. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class GeneralDescriptions { - - /** - * Metodo que completa descripciones de cuenta. - * - * @param pTgeneAccount Datos generales de la cuenta. - * @throws Exception - */ - public static void completeAccountDescriptions(TgeneAccount pTgeneAccount) throws Exception { - pTgeneAccount.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(pTgeneAccount.getModulecode())); - pTgeneAccount.addAddtionalInfo("productdesc", - GeneralDescriptions.getProductdesc(pTgeneAccount.getModulecode(), pTgeneAccount.getProductcode())); - pTgeneAccount.addAddtionalInfo( - "subproductdesc", - GeneralDescriptions.getSubProductdesc(pTgeneAccount.getModulecode(), pTgeneAccount.getProductcode(), - pTgeneAccount.getSubproductcode())); - pTgeneAccount.addAddtionalInfo("currencydesc", GeneralDescriptions.getCurrencydesc(pTgeneAccount.getCurrencycode())); - pTgeneAccount.addAddtionalInfo("statusdesc", - GeneralDescriptions.getStatusdesc(pTgeneAccount.getModulecode(), pTgeneAccount.getAccountstatuscode())); - } - - /** - * Metodo que completa descripciones de uan solicitud. - * - * @param pTgeneSolicitude Datos generales de una solicitud. - * @throws Exception - */ - public static void completeSolicitudeDescriptions(TgeneSolicitude pTgeneSolicitude) throws Exception { - pTgeneSolicitude.addAddtionalInfo("moduledesc", GeneralDescriptions.getModuledesc(pTgeneSolicitude.getModulecode())); - pTgeneSolicitude.addAddtionalInfo("productdesc", - GeneralDescriptions.getProductdesc(pTgeneSolicitude.getModulecode(), pTgeneSolicitude.getProductcode())); - pTgeneSolicitude.addAddtionalInfo( - "subproductdesc", - GeneralDescriptions.getSubProductdesc(pTgeneSolicitude.getModulecode(), pTgeneSolicitude.getProductcode(), - pTgeneSolicitude.getSubproductcode())); - pTgeneSolicitude.addAddtionalInfo("currencydesc", GeneralDescriptions.getCurrencydesc(pTgeneSolicitude.getCurrencycode())); - } - - /** - * Metodo que entrega la descripcion del detalle de catalogo. - * - * @param pCatalog Codigo de tiposobregiro, base de calculo, destiono de fondos etc. - * @param pCatalogcode Codigo de catalogo. - * @return String. - * @throws Exception - */ - public static String getCatalogdetaildesc(String pCatalog, String pCatalogcode) throws Exception { - TgeneCatalogDetail detail = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneCatalogDetail(pCatalog, pCatalogcode); - return detail.getDescription(); - } - - /** - * Metodo que entrega la descripcion de tipo de credito. - * - * @param pCredittype Codigo de tipo de credito. - * @return String. - * @throws Exception - */ - public static String getCredittypedesc(String pCredittype) throws Exception { - if (pCredittype == null) { - return ""; - } - TgeneCreditType ctype = DataHelper.getInstance().getTgeneCreditType(pCredittype); - return ctype.getDescription(); - } - - /** - * Metodo que entrega la descripcion del tipo de tabla de amortizacion. - * - * @param pInstallmenttype Codigo de tipo de tabla de amortizacion. - * @return String. - * @throws Exception - */ - public static String getInstallmettypedesc(String pInstallmenttype, String pModule) throws Exception { - if (pInstallmenttype == null) { - return ""; - } - TgeneInstallmentType itype = DataHelper.getInstance().getTgeneInstallmentType(pInstallmenttype, pModule); - return itype.getDescription(); - } - - /** - * Metodo que entrega la descripcion de la frequencia. - * - * @param pFrequencycode Codigo de frequencia. - * @return String. - * @throws Exception - */ - public static String getFrequencydesc(Integer pFrequencycode) throws Exception { - if (pFrequencycode == null) { - return ""; - } - TgeneFrequency frequency = DataHelper.getInstance().getTgeneFrecuency(pFrequencycode); - return frequency.getDescription(); - } - - /** - * Metodo que entrega el nombre del oficial de cuenta. - * - * @param pUser Codigo de usuario. - * @return String. - * @throws Exception - */ - public static String getOfficername(String pUser) throws Exception { - if (pUser == null) { - return ""; - } - TsafeUser user = DataHelper.getInstance().getTsafeUser(pUser); - return GeneralDescriptions.getPersonname(user.getPersoncode()); - } - - /** - * Metodo que entrega el nombre del usuario. - * - * @param pUser Codigo de usuario. - * @return String. - * @throws Exception - */ - public static String getUsername(String pUser) throws Exception { - if (pUser == null) { - return ""; - } - TsafeUser user = DataHelper.getInstance().getTsafeUser(pUser); - return GeneralDescriptions.getPersonname(user.getPersoncode()); - } - - /** - * Metodo que entrega el email de un usuario.s - * - * @param pUser Codigo de usuario. - * @return String. - * @throws Exception - */ - public static String getEmailByUser(String pUser) throws Exception { - if (pUser == null) { - return ""; - } - TsafeUser user = DataHelper.getInstance().getTsafeUser(pUser); - return GeneralDescriptions.getEmail(user.getPersoncode()); - } - - /** - * Metodo que entrega el email de una persona - * - * @param pPersoncode Codigo de persona a obtener el email. - * @return String. - * @throws Exception - */ - public static String getEmail(Integer pPersoncode) throws Exception { - return TcustPersonAddress.getEmail(PersistenceHelper.getEntityManager(), pPersoncode); - } - - /** - * Metodo que entrega el nombre de una persona. - * - * @param pPersoncode Codigo de persona a obtener el nombre. - * @return String. - * @throws Exception - */ - public static String getPersonname(Integer pPersoncode) throws Exception { - return TcustPersonDetail.find(PersistenceHelper.getEntityManager(), pPersoncode).getName(); - } - - /** - * Metodo que entrega la descripcion de la moneda. - * - * @param pBranch Codigo de sucursal. - * @param company Compania a la que pertenece la sucursal - * @return String. - * @throws Exception - */ - public static String getBranchdesc(Integer pBranch, Integer company) throws Exception { - return TgeneBranch.find(PersistenceHelper.getEntityManager(), pBranch, company).getDescription(); - } - - /** - * Metodo que entrega la descripcion de la Etiqueta. - * - * @param pBranch Codigo de sucursal. - * @param company Compania a la que pertenece la sucursal - * @return String. - * @throws Exception - */ - public static String getLabel(String pLabel, String pLanguagecode, String pChannelcode) throws Exception { - TgeneLabelKey k = new TgeneLabelKey(pLabel, pLanguagecode, pChannelcode); - TgeneLabel label = TgeneLabel.find(PersistenceHelper.getEntityManager(), k); - if (label == null) { - return pLabel; - } - return label.getDescription(); - } - - /** - * Metodo que entrega la descripcion de la moneda. - * - * @param pOffice Codigo de oficina. - * @param pBranch Codigo de sucursal. - * @param pCompany Codigo de compania. - * @return String. - * @throws Exception - */ - public static String getOfficedesc(Integer pOffice, Integer pBranch, Integer pCompany) throws Exception { - TgeneOfficeKey tgeneOfficeKey = new TgeneOfficeKey(pOffice, pBranch, pCompany); - TgeneOffice office = TgeneOffice.find(PersistenceHelper.getEntityManager(), tgeneOfficeKey); - return office.getDescription(); - } - - /** - * Metodo que entrega la descripcion de la moneda. - * - * @param pCurrency Codigo de moneda. - * @return String. - * @throws Exception - */ - public static String getCurrencydesc(String pCurrency) throws Exception { - TgeneCurrency currency = DataHelper.getInstance().getTgeneCurrency(pCurrency); - return currency.getDescription(); - } - - /** - * Metodo que entrega la descripcion del status de la cuenta. - * - * @param pModule Codigo de modulo. - * @param pStatus Codigo de status. - * @return String - * @throws Exception - */ - public static String getStatusdesc(String pModule, String pStatus) throws Exception { - TgeneAccountStatusKey key = new TgeneAccountStatusKey(pModule, pStatus); - TgeneAccountStatus status = TgeneAccountStatus.find(PersistenceHelper.getEntityManager(), key); - return status.getDescription(); - } - - /** - * Metodo que entrega la descripcion del modulo. - * - * @param pModule Codigo de modulo. - * @return String. - * @throws Exception - */ - public static String getModuledesc(String pModule) throws Exception { - return TgeneModule.find(PersistenceHelper.getEntityManager(), pModule).getDescription(); - } - - /** - * Metodo que entrega la descripcion del producto. - * - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @return String - * @throws Exception - */ - public static String getProductdesc(String pModule, String pProduct) throws Exception { - if (pProduct == null) { - return ""; - } - return TgeneProduct.find(PersistenceHelper.getEntityManager(), pModule, pProduct).getDescription(); - } - - /** - * Metodo que entrega la descripcion del subproducto. - * - * @param pModule Codigo de modulo. - * @param pProduct Codigo de producto. - * @param pSubProduct Codigo de subproducto. - * @return String - * @throws Exception - */ - public static String getSubProductdesc(String pModule, String pProduct, String pSubProduct) throws Exception { - if (pSubProduct == null) { - return ""; - } - return TgeneSubProduct.find(PersistenceHelper.getEntityManager(), pModule, pProduct, pSubProduct).getDescription(); - } - - /** - * Metodo que devuelve el nombre o descripcion de la tranbsaccion - * - * @param transactionmodule Codigo modulo - * @param transactioncode Codigo transaccion - * @param transactionversion Codigo version - * @return - * @throws Exception - */ - public static String getTransactiondesc(String transactionmodule, Integer transactioncode, Integer transactionversion) throws Exception { - TgeneTransaction tgeneTransaction = com.fp.persistence.commondb.db.DataHelper.getInstance().getTgeneTransaction(transactionmodule, - transactioncode, transactionversion); - if (tgeneTransaction == null) { - return "TRANSACCION NO DEFINIDA"; - } - return tgeneTransaction.getName(); - } - - /** - * Metodo que devuelve la descripcion del rubro de una transaccion - * - * @param transactionmodule Modulo de la transaccion - * @param transactioncode Codigo de la transaccion - * @param transactionversion Version de la transaccion - * @param itemcode Rubro de la transaccion - * @return - * @throws Exception - */ - public static String getTransactionItemdesc(String transactionmodule, Integer transactioncode, Integer transactionversion, Integer itemcode) - throws Exception { - TgeneTransactionItem tgeneTransactionItem = DataHelper.getInstance().getTgeneTransactionItem(transactionmodule, transactioncode, - transactionversion, itemcode); - return tgeneTransactionItem.getDescription(); - } - - /** - * Metodo que devuelve el nombre de una cuenta - * - * @param account Numero de cuenta - * @param company Compania ala que pertenece la cuenta - * @return - * @throws Exception - */ - public static String getAccountName(String account, Integer company) throws Exception { - TgeneAccountKey key = new TgeneAccountKey(account, company, Constant.getDefaultExpiryTimestamp()); - return TgeneAccount.find(PersistenceHelper.getEntityManager(), key).getAccountname(); - } -} diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageDescriptions.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageDescriptions.java.svn-base deleted file mode 100644 index 166cf11..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageDescriptions.java.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -package com.fp.base.persistence.util.helper; - -/** - * Clase utilitaria que se encarga de entregar descripciones a utilizar con velocity. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class MessageDescriptions { - - /** - * Entrega en el nombre de una persona dado el codigo de persona. - * - * @param personcode Codigo de persona a buscar el nombre. - * @return String - * @throws Exception - */ - public String getPersonname(Integer personcode) throws Exception { - return GeneralDescriptions.getPersonname(personcode); - } - -} diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.netbeans-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.netbeans-base deleted file mode 100644 index 4a7401e..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.netbeans-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.base.persistence.util.helper; - -import com.fp.common.messages.MessageUtil; -import com.fp.dto.Request; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase que encarga de completar plantillas de mesajes. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class MessageManager { - - /** - * Verifica que la transaccion tienga definida una plantilla de mensajes, busca el template de mensaje y compelta - * informacion dado el request. - * - * @param request Datos del mensaje de entrada. - * @return String - * @throws Exception - */ - public static String getMessage(Request request) throws Exception { - // Fija datos del subject de la agenda, si no tiene un valor previo y el codigo de plantilla de mensaje es - String message = ""; - if ((request.mbeans == null) || !request.mbeans.containsKey("tgenetransaction")) { - return message; - } - Integer messagecode = ((TgeneTransaction) request.mbeans.get("tgenetransaction")).getMessagecode(); - if (messagecode != null) { - MessageDescriptions md = new MessageDescriptions(); - TgeneMessageTemplatesDescKey key = new TgeneMessageTemplatesDescKey(messagecode, request.getLanguage()); - TgeneMessageTemplatesDesc msg = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), key); - MessageUtil mu = new MessageUtil("es", msg.getTemplate()); - mu.setValue("request", request); - mu.setValue("messagedescripciones", md); - message = mu.getMessage(); - } - return message; - } - -} \ No newline at end of file diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.svn-base deleted file mode 100644 index 4a7401e..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/MessageManager.java.svn-base +++ /dev/null @@ -1,45 +0,0 @@ -package com.fp.base.persistence.util.helper; - -import com.fp.common.messages.MessageUtil; -import com.fp.dto.Request; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDescKey; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase que encarga de completar plantillas de mesajes. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class MessageManager { - - /** - * Verifica que la transaccion tienga definida una plantilla de mensajes, busca el template de mensaje y compelta - * informacion dado el request. - * - * @param request Datos del mensaje de entrada. - * @return String - * @throws Exception - */ - public static String getMessage(Request request) throws Exception { - // Fija datos del subject de la agenda, si no tiene un valor previo y el codigo de plantilla de mensaje es - String message = ""; - if ((request.mbeans == null) || !request.mbeans.containsKey("tgenetransaction")) { - return message; - } - Integer messagecode = ((TgeneTransaction) request.mbeans.get("tgenetransaction")).getMessagecode(); - if (messagecode != null) { - MessageDescriptions md = new MessageDescriptions(); - TgeneMessageTemplatesDescKey key = new TgeneMessageTemplatesDescKey(messagecode, request.getLanguage()); - TgeneMessageTemplatesDesc msg = TgeneMessageTemplatesDesc.find(PersistenceHelper.getEntityManager(), key); - MessageUtil mu = new MessageUtil("es", msg.getTemplate()); - mu.setValue("request", request); - mu.setValue("messagedescripciones", md); - message = mu.getMessage(); - } - return message; - } - -} \ No newline at end of file diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/SaveBeanInOtherSession.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/SaveBeanInOtherSession.java.svn-base deleted file mode 100644 index 486f195..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/helper/.svn/text-base/SaveBeanInOtherSession.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.base.persistence.util.helper; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.common.logger.APPLogger; -import com.fp.dto.hb.HibernateBean; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; - -/** - * Clase que se encarga en insertar o actualizar un registro en la base de datos en un hilo diferente. - * @author Jorge Vaca. - * @version 2.1 - * - */ -public class SaveBeanInOtherSession extends Thread { - - /**Codigo de compania con el cual se obtiene la coneccion a la base de datos.*/ - private Integer company; - - /**Objeto a enviar a la base de datos.*/ - private HibernateBean bean; - - public SaveBeanInOtherSession(Integer pCompany, HibernateBean pHibernateBean) throws Exception { - company = pCompany; - bean = pHibernateBean; - } - - /** - * Metodo que se encarga de inicio de ejecucion del hilo. - */ - public void run(){ - try { - SessionData s = new SessionData(); - s.setCompany(company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginTransaction(); - PersistenceHelper.saveOrUpdate(bean); - PersistenceHelper.commitTransaction(); - } catch (Exception e) { - APPLogger.getLogger().error(e); - }finally{ - try { - //Cierra la sesion de base de datos con la cual se ejecuto el proceso de fin de dia. - PersistenceHelper.closeSession(); - } catch (Exception e) { - ExceptionHandler eh = new ExceptionHandler(e,"es"); - APPLogger.getLogger().error(eh.getStackTrace()); - } - } - } - - -} diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/entries b/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/entries deleted file mode 100644 index b31a3fa..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/main/java/com/fp/base/persistence/util/job -svn://172.17.26.185/COMACO - - - -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ServiceManager.java -file - - - - -2022-07-28T03:40:31.282753Z -7be20f3a14b1d858ce9b92ab84920f91 -2014-09-11T11:45:32.157821Z -689 -jvaca - - - - - - - - - - - - - - - - - - - - - -3735 - diff --git a/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/text-base/ServiceManager.java.svn-base b/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/text-base/ServiceManager.java.svn-base deleted file mode 100644 index 3ca6745..0000000 --- a/base/persistence/util/src/main/java/com/fp/base/persistence/util/job/.svn/text-base/ServiceManager.java.svn-base +++ /dev/null @@ -1,111 +0,0 @@ -package com.fp.base.persistence.util.job; - -import java.lang.reflect.Method; -import java.util.List; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.dto.rules.Service; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.pgeneral.gene.TgeneServices; - -/** - * Clase que se encarga de manejar serviciso o demonios que estan activos en el servidor de aplicaciones. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class ServiceManager { - - /** - * Metodo que inicia todos los servicios declarados como automaticos, el proceso lo ejecuta cuando sube el servidor - * de aplicaciones. - * - * @throws Exception - */ - public void autoamaticInit() throws Exception { - List ldata = TgeneServices.find(PersistenceHelper.getEntityManager()); - for (TgeneServices obj : ldata) { - try { - if(Constant.ifYes(obj.getAutomatic()) ){ - this.startByService(obj); - } - } catch (Exception e) { - APPLogger.getLogger().error("***********NO PUEDE INICIAR EL SERVICIO********** :"+obj.getPk()+" DEFINIDO EN TgeneServices ***********"); - } - } - } - - /** - * Metodo que inicia un servicio, dado un codigo de servicio. - * - * @param pService Codigo de servicio a iniciar - * @throws Exception - */ - public void startService(String pService) throws Exception { - TgeneServices tgeneServices = TgeneServices.find(PersistenceHelper.getEntityManager(), pService); - this.startByService(tgeneServices); - } - - /** - * Metodo que detiene un servicio, dado un codigo de servicio. - * - * @param pService Codigo de servicio a detener. - * @throws Exception - */ - public void stopService(String pService) throws Exception { - TgeneServices tgeneServices = TgeneServices.find(PersistenceHelper.getEntityManager(), pService); - this.stopByService(tgeneServices); - } - - /** - * Metodo que inicia un servicio. - * - * @param pTgeneServices Objeto que contiene la defincion de un servicio. - * @throws Exception - */ - private void startByService(TgeneServices pTgeneServices) throws Exception { - Service service = this.getService(pTgeneServices); - service.start(); - } - - /** - * Metodo que detiene un servicio. - * - * @param pTgeneServices Objeto que contiene la defincion de un servicio. - * @throws Exception - */ - private void stopByService(TgeneServices pTgeneServices) throws Exception { - Service service = this.getService(pTgeneServices); - service.stop(); - } - - /** - * Metodo que indica si el servisio esta en estado de ejecucion o no. - * - * @param pService Codigo de servicio. - * @return boolean - * @throws Exception - */ - public boolean isRunning(String pService) throws Exception { - TgeneServices tgeneServices = TgeneServices.find(PersistenceHelper.getEntityManager(), pService); - Service service = this.getService(tgeneServices); - return service.isrunning(); - } - - /** - * Metodo que obtiene una instancia del servicio, de manera dinamica. - * - * @param pTgeneServices Objeto que contiene la defincion de un servicio. - * @return Service - * @throws Exception - */ - private Service getService(TgeneServices pTgeneServices) throws Exception { - Service service = null; - Method m = Class.forName(pTgeneServices.getClassname()).getDeclaredMethod("getInstance"); - m.setAccessible(true); // if security settings allow this - service = (Service) m.invoke(null); // use null if the method is static - return service; - } - -} diff --git a/base/persistence/util/src/test/.svn/entries b/base/persistence/util/src/test/.svn/entries deleted file mode 100644 index a8ca725..0000000 --- a/base/persistence/util/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/persistence/util/src/test/java/.svn/entries b/base/persistence/util/src/test/java/.svn/entries deleted file mode 100644 index 21a406e..0000000 --- a/base/persistence/util/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/persistence/util/src/test/java/com/.svn/entries b/base/persistence/util/src/test/java/com/.svn/entries deleted file mode 100644 index ff49286..0000000 --- a/base/persistence/util/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/persistence/util/src/test/java/com/fp/.svn/entries b/base/persistence/util/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 9917d1e..0000000 --- a/base/persistence/util/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -base -dir - diff --git a/base/persistence/util/src/test/java/com/fp/base/.svn/entries b/base/persistence/util/src/test/java/com/fp/base/.svn/entries deleted file mode 100644 index 98c670a..0000000 --- a/base/persistence/util/src/test/java/com/fp/base/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test/java/com/fp/base -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -persistence -dir - diff --git a/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/entries b/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/entries deleted file mode 100644 index a6e3f2e..0000000 --- a/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/persistence/util/src/test/java/com/fp/base/persistence -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AppTest.java -file - - - - -2022-07-28T03:40:30.839752Z -1f797add1170cd7049e4e378ab45388e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -651 - diff --git a/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/text-base/AppTest.java.svn-base b/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/text-base/AppTest.java.svn-base deleted file mode 100644 index cd90310..0000000 --- a/base/persistence/util/src/test/java/com/fp/base/persistence/.svn/text-base/AppTest.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.base.persistence; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/base/sessionbeans/.svn/dir-prop-base b/base/sessionbeans/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/base/sessionbeans/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/base/sessionbeans/.svn/entries b/base/sessionbeans/.svn/entries deleted file mode 100644 index 19ff84e..0000000 --- a/base/sessionbeans/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:45.218814Z -ff6eae1412c63a98be37c33e85c08ec1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1413 - diff --git a/base/sessionbeans/.svn/text-base/pom.xml.svn-base b/base/sessionbeans/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index ac565e1..0000000 --- a/base/sessionbeans/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,45 +0,0 @@ - - - 4.0.0 - - base - com.fp - 2.1 - - com.fp.base - sessionbeans - sessionbeans - - - org.jboss.spec.javax.ejb - jboss-ejb-api_3.1_spec - provided - - - org.hibernate - hibernate-core - provided - - - org.hibernate - hibernate-entitymanager - - - com.fp.base.persistence - pgeneral - 2.1 - - - com.fp.base.dto - common - 2.1 - - - com.fp.base.persistence - commondb - 2.1 - - - diff --git a/base/sessionbeans/src/.svn/entries b/base/sessionbeans/src/.svn/entries deleted file mode 100644 index 331357c..0000000 --- a/base/sessionbeans/src/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -META-INF -dir - -main -dir - diff --git a/base/sessionbeans/src/META-INF/.svn/entries b/base/sessionbeans/src/META-INF/.svn/entries deleted file mode 100644 index 2951cbe..0000000 --- a/base/sessionbeans/src/META-INF/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/META-INF -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MANIFEST.MF -file - - - - -2022-07-28T03:40:44.861812Z -b10f37c8bb1803d98c127a01d1a71cc5 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -39 - diff --git a/base/sessionbeans/src/META-INF/.svn/text-base/MANIFEST.MF.svn-base b/base/sessionbeans/src/META-INF/.svn/text-base/MANIFEST.MF.svn-base deleted file mode 100644 index 5e94951..0000000 --- a/base/sessionbeans/src/META-INF/.svn/text-base/MANIFEST.MF.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -Manifest-Version: 1.0 -Class-Path: - diff --git a/base/sessionbeans/src/main/.svn/entries b/base/sessionbeans/src/main/.svn/entries deleted file mode 100644 index a03313f..0000000 --- a/base/sessionbeans/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/sessionbeans/src/main/java/.svn/entries b/base/sessionbeans/src/main/java/.svn/entries deleted file mode 100644 index 1dccd86..0000000 --- a/base/sessionbeans/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/base/sessionbeans/src/main/java/com/.svn/entries b/base/sessionbeans/src/main/java/com/.svn/entries deleted file mode 100644 index 660176c..0000000 --- a/base/sessionbeans/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/base/sessionbeans/src/main/java/com/fp/.svn/entries b/base/sessionbeans/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 5aeceab..0000000 --- a/base/sessionbeans/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -sessionbeans -dir - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/.svn/entries deleted file mode 100644 index b3966cf..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -ejb -dir - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/entries deleted file mode 100644 index e7dcac9..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/entries +++ /dev/null @@ -1,102 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -cobis -dir - -interfaces -dir - -CrudBean.java -file - - - - -2022-07-28T03:40:45.002813Z -b174384b1a74441f11798dc16cdf2ff3 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2175 - -SequenceBean.java -file - - - - -2022-07-28T03:40:45.002813Z -3f7a2a5c214c4bef9613ff2c3a145e20 -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2232 - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/CrudBean.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/CrudBean.java.svn-base deleted file mode 100644 index 6ea87d4..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/CrudBean.java.svn-base +++ /dev/null @@ -1,96 +0,0 @@ -package com.fp.sessionbeans.ejb; - -import java.util.List; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; -import javax.persistence.EntityTransaction; - -import com.fp.dto.hb.HibernateBean; -import com.fp.sessionbeans.ejb.interfaces.CrudBeanLocal; - -/** - * Session Bean utilitario utilizada en insert de registros a la base. - * - * @author Jorge VAca. - * @version 2.1 - */ -@Stateless -@TransactionManagement(value = TransactionManagementType.BEAN) -public class CrudBean implements CrudBeanLocal { - - /** Version de la Clase */ - private static final long serialVersionUID = 1L; - - /** - * Metodo que entrega de grbar un registrp en la base haciendo commit. - * - * @param em - * Referencia a una session de base de datos. - * @param pBean - * Objeto a almacenar en la base de datos. - * @throws Exception - */ - public void insert(EntityManager em, HibernateBean pBean) throws Exception { - EntityTransaction tx = em.getTransaction(); - tx.begin(); - try { - em.persist(pBean); - tx.commit(); - } catch (Exception e) { - if (tx.isActive()) { - tx.rollback(); - } - throw e; - } finally { - try { - if (em.isOpen()) { - em.clear(); - em.close(); - } - } catch (Exception e) { - throw e; - } - } - } - - /** - * Metodo que entrega de grbar un registrp en la base haciendo commit. - * - * @param em - * Referencia a una session de base de datos. - * @param pLbean - * Lista con objetos a almacenar en la base de datos. - * @throws Exception - */ - public void insert(EntityManager em, List pLbean) - throws Exception { - EntityTransaction tx = em.getTransaction(); - tx.begin(); - try { - for (HibernateBean obj : pLbean) { - em.persist(obj); - } - tx.commit(); - } catch (Exception e) { - if (tx.isActive()) { - tx.rollback(); - } - throw e; - } finally { - try { - if (em.isOpen()) { - em.clear(); - em.close(); - } - } catch (Exception e) { - throw e; - } - } - } - - - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/SequenceBean.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/SequenceBean.java.svn-base deleted file mode 100644 index c65343f..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/.svn/text-base/SequenceBean.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.sessionbeans.ejb; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; -import javax.persistence.EntityTransaction; - -import com.fp.common.helper.Constant; -import com.fp.persistence.pgeneral.seq.TgeneSequences; -import com.fp.sessionbeans.ejb.interfaces.SequenceBeanLocal; - -/** - * Session Bean que entrega el nuemero de secuenia, dado un codigo de secuencia. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@Stateless -@TransactionManagement(value = TransactionManagementType.BEAN) -public class SequenceBean implements SequenceBeanLocal { - /** - * Metodo que entrega el valor de uan secuencia, dado el codigo de sequencia. - * - * @param pSequenceCode Codigo de secuencia a obtener el numero de secuenia. - * @return Integer - * @throws Exception - */ - @Override - public Long getNextValueJta(EntityManager em, String pSequenceCode) throws Exception { - EntityTransaction tx = em.getTransaction(); - tx.begin(); - try { - Long sec = null; - TgeneSequences tgeneSequences = TgeneSequences.findWithLock(em, pSequenceCode); - tgeneSequences.setCurrentvalue(tgeneSequences.getCurrentvalue() + tgeneSequences.getIncrease()); - if (Constant.ifYes(tgeneSequences.getCyclic())) { - if (tgeneSequences.getCurrentvalue().compareTo(tgeneSequences.getLastvalue()) >= 0) { - tgeneSequences.setCurrentvalue(tgeneSequences.getInitialvalue()); - } - } - // update del registro - em.merge(tgeneSequences); - sec = Long.valueOf(tgeneSequences.getCurrentvalue().toString()); - tx.commit(); - return sec; - } catch (Exception e) { - if (tx.isActive()) { - tx.rollback(); - } - throw e; - } finally { - try { - if (em.isOpen()) { - em.clear(); - em.close(); - } - } catch (Exception e) { - throw e; - } - } - - } - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/entries deleted file mode 100644 index 7da1a9b..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CobisBean.java -file - - - - -2022-07-28T03:40:44.926812Z -d7a594c00fe8f9b5ad8cdc6a78448496 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -20333 - -ContabilizaCobisBean.java -file - - - - -2022-07-28T03:40:44.926812Z -5a70321309f1b63419331a219ce43c47 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7502 - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/CobisBean.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/CobisBean.java.svn-base deleted file mode 100644 index 48e7e4b..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/CobisBean.java.svn-base +++ /dev/null @@ -1,497 +0,0 @@ -package com.fp.sessionbeans.ejb.cobis; - -import java.sql.CallableStatement; -import java.sql.Connection; -import java.sql.Date; -import java.sql.PreparedStatement; -import java.sql.ResultSet; -import java.sql.Types; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; - -import com.fp.dto.query.QueryBean; -import com.fp.dto.query.QueryCriteria; -import com.fp.sessionbeans.ejb.interfaces.CobisBeanLocal; - -/** - * Session Bean utilitario para obtener informacion de cobis. - * @author Jorge Vaca. - * @version 2.1 - */ -@Stateless -@TransactionManagement(value = TransactionManagementType.BEAN) -public class CobisBean implements CobisBeanLocal { - - /** - * Entrega una lista de clientes de Cobis. - * @return List> - * @throws Exception - */ - @Override - @SuppressWarnings("deprecation") - public List> getClientes(QueryBean queryBean) throws Exception { - EntityManagerFactory emf = null; - EntityManager em = null; - List> ldata = new ArrayList>(); - Integer page = queryBean.getPage(); - Integer rowsPerPage = queryBean.getPageSize(); - Connection connection = null; - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //connection = ((Session) em.getDelegate()).connection(); - String SQL_CLIENT = "select en_ente, en_ced_ruc, en_nomlar, en_nombre, p_p_apellido, p_s_apellido, en_subtipo from cobis..cl_ente"; - SQL_CLIENT = this.getSentenceWithFilter(SQL_CLIENT, queryBean.getCriteria()); - List lcriteria = this.getCriteria(queryBean.getCriteria()); - preparedStatement = connection.prepareStatement(SQL_CLIENT + " order by en_nombre, p_p_apellido", ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - for (int i = 0; i < lcriteria.size(); i++) { - Object value = lcriteria.get(i); - preparedStatement.setObject(i + 1, value); - } - resultSet = preparedStatement.executeQuery(); - if (page > 1) { - resultSet.setFetchSize(rowsPerPage + 1); - resultSet.absolute((page - 1) * rowsPerPage); - } - for (int i = 0; i < rowsPerPage; i++) { - if (!resultSet.next()) { - break; - } - ldata.add(this.getResulsetClientes(resultSet)); - } - } catch (Exception ex) { - throw ex; - } finally { - this.closeSesion(preparedStatement, resultSet, em,emf); - } - return ldata; - } - - /** - * Metodo que se encarga de consultar los datos para consultar el archivo - * @param corte - * @param fecha - * @return - * @throws Exception - */ - @Override - public List getDataSendFile(Integer corte, Date fecha) throws Exception { - List ldata = new ArrayList(); - EntityManagerFactory emf = null; - EntityManager em = null; - Connection connection = null; - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //connection = ((Session) em.getDelegate()).connection(); - String SQL = - "SELECT ta_texto" - + " FROM cobis .. textos_ach" - + " WHERE ta_corte = ?" - + " AND ta_enviado = ?" - + " AND ta_fecha = ?" - + " ORDER BY ta_secuencial"; - preparedStatement = connection.prepareStatement(SQL, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - preparedStatement.setInt(1, corte); - preparedStatement.setString(2, "N"); - preparedStatement.setDate(3, fecha); - resultSet = preparedStatement.executeQuery(); - while (resultSet.next()) { - ldata.add(resultSet.getString(1)); - } - } catch (Exception ex) { - throw ex; - } finally { - this.closeSesion(preparedStatement, resultSet, em,emf); - } - return ldata; - } - - /** - * Metodo que obtiene los datos de la consulta - * @param resultSet - * @return Map - * @throws Exception - */ - private Map getResulsetClientes(ResultSet resultSet) throws Exception { - Map map = new HashMap(); - Object valor = resultSet.getObject("en_ente"); - map.put("en_ente", valor); - valor = resultSet.getObject("en_ced_ruc"); - map.put("en_ced_ruc", valor); - valor = resultSet.getObject("en_nomlar"); - map.put("en_nomlar", valor); - valor = resultSet.getObject("en_nombre"); - map.put("en_nombre", valor); - valor = resultSet.getObject("p_p_apellido"); - map.put("p_p_apellido", valor); - valor = resultSet.getObject("p_s_apellido"); - map.put("p_s_apellido", valor); - String tipopersona = (String) resultSet.getObject("en_subtipo"); - map.put("en_subtipo", tipopersona); - if (tipopersona.compareTo("C") == 0) { - valor = resultSet.getObject("en_nombre"); - } else { - valor = resultSet.getObject("en_nomlar"); - } - map.put("name", valor); - return map; - } - - /** - * Metodo que entrega una lista de cuentas de ahorro - * @param queryBean - * @return - * @throws Exception - */ - @Override - public List> getCuentasAhorro(QueryBean queryBean) throws Exception { - List> ldata = new ArrayList>(); - EntityManagerFactory emf = null; - EntityManager em = null; - Integer page = queryBean.getPage(); - Integer rowsPerPage = queryBean.getPageSize(); - Connection connection = null; - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //connection = ((Session) em.getDelegate()).connection(); - String SQL_SAVING_ACCOUNT = "select ah_cuenta, rtrim(ah_cta_banco) as ah_cta_banco, ah_nombre, ah_cliente from cob_ahorros..ah_cuenta"; - SQL_SAVING_ACCOUNT = this.getSentenceWithFilter(SQL_SAVING_ACCOUNT, queryBean.getCriteria()); - List lcriteria = this.getCriteria(queryBean.getCriteria()); - preparedStatement = connection.prepareStatement(SQL_SAVING_ACCOUNT, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - for (int i = 0; i < lcriteria.size(); i++) { - Object value = lcriteria.get(i); - preparedStatement.setObject(i + 1, value); - } - resultSet = preparedStatement.executeQuery(); - if (page > 1) { - resultSet.setFetchSize(rowsPerPage + 1); - resultSet.absolute((page - 1) * rowsPerPage); - } - for (int i = 0; i < rowsPerPage; i++) { - if (!resultSet.next()) { - break; - } - ldata.add(this.getResulsetSavingsAccounts(resultSet)); - } - } catch (Exception ex) { - throw ex; - } finally { - this.closeSesion(preparedStatement, resultSet, em,emf); - } - return ldata; - } - - /** - * Metodo que obtiene los datos de la consulta - * @param resultSet - * @return Map - * @throws Exception - */ - private Map getResulsetSavingsAccounts(ResultSet resultSet) throws Exception { - Map map = new HashMap(); - Object valor = resultSet.getObject("ah_cuenta"); - map.put("ah_cuenta", valor); - valor = resultSet.getObject("ah_cta_banco"); - map.put("ah_cta_banco", valor); - valor = resultSet.getObject("ah_nombre"); - map.put("ah_nombre", valor); - valor = resultSet.getObject("ah_cliente"); - map.put("ah_cliente", valor); - return map; - } - - /** - * Metodo que obtiene los datos de la consulta - * @param resultSet - * @return Map - * @throws Exception - */ - private Map getResulsetCheckingAccounts(ResultSet resultSet) throws Exception { - Map map = new HashMap(); - Object valor = resultSet.getObject("cc_ctacte"); - map.put("cc_ctacte", valor); - valor = resultSet.getObject("cc_cta_banco"); - map.put("cc_cta_banco", valor); - valor = resultSet.getObject("cc_nombre"); - map.put("cc_nombre", valor); - valor = resultSet.getObject("cc_cliente"); - map.put("cc_cliente", valor); - return map; - } - - /** - * Metodo que entrega una lista de cuentas corrientes - * @param queryBean - * @return - * @throws Exception - */ - @Override - public List> getCuentasCorrientes(QueryBean queryBean) throws Exception { - List> ldata = new ArrayList>(); - Integer page = queryBean.getPage(); - Integer rowsPerPage = queryBean.getPageSize(); - EntityManagerFactory emf = null; - EntityManager em = null; - Connection connection = null; - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //connection = ((Session) em.getDelegate()).connection(); - String SQL_CHECKING_ACCOUNT = "select cc_ctacte, rtrim(cc_cta_banco) as cc_cta_banco, cc_nombre, cc_cliente from cob_cuentas..cc_ctacte"; - SQL_CHECKING_ACCOUNT = this.getSentenceWithFilter(SQL_CHECKING_ACCOUNT, queryBean.getCriteria()); - List lcriteria = this.getCriteria(queryBean.getCriteria()); - preparedStatement = connection.prepareStatement(SQL_CHECKING_ACCOUNT, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - for (int i = 0; i < lcriteria.size(); i++) { - Object value = lcriteria.get(i); - preparedStatement.setObject(i + 1, value); - } - resultSet = preparedStatement.executeQuery(); - if (page > 1) { - resultSet.setFetchSize(rowsPerPage + 1); - resultSet.absolute((page - 1) * rowsPerPage); - } - for (int i = 0; i < rowsPerPage; i++) { - if (!resultSet.next()) { - break; - } - ldata.add(this.getResulsetCheckingAccounts(resultSet)); - } - } catch (Exception ex) { - throw ex; - } finally { - this.closeSesion(preparedStatement, resultSet, em,emf); - } - return ldata; - } - - /** - * Sentencia SQL con filtros si estos son enviados - * @param sentenceSQL - * @param lQueryCriteria - * @return - * @throws Exception - */ - private String getSentenceWithFilter(String sentenceSQL, List lQueryCriteria) throws Exception { - boolean isFirstCriteria = true; - for (int i = 0; i < lQueryCriteria.size(); i++) { - QueryCriteria queryCriteria = lQueryCriteria.get(i); - String attribute = queryCriteria.getProperty(); - Object value = queryCriteria.getValue(); - String operator = queryCriteria.getOperation(); - if (attribute != null && value != null && operator != null) { - if (isFirstCriteria) { - sentenceSQL += " where " + attribute + " " + operator + " ?"; - isFirstCriteria = false; - } else { - sentenceSQL += " and " + attribute + " " + operator + " ?"; - } - } - } - return sentenceSQL; - } - - /** - * Metodo que se encarga de obtener los criterios con los que se debe realizar la consulta - * @param lQueryCriteria - * @throws Exception - */ - protected List getCriteria(List lQueryCriteria) throws Exception { - List lCriteria = new ArrayList(); - for (int i = 0; i < lQueryCriteria.size(); i++) { - QueryCriteria queryCriteria = lQueryCriteria.get(i); - String attribute = queryCriteria.getProperty(); - Object value = queryCriteria.getValue(); - String operator = queryCriteria.getOperation(); - if (attribute != null && value != null && operator != null) { - lCriteria.add(value); - } - } - return lCriteria; - } - - /** - * Entrega datos del repositorio de cobis - * @param queryBean - * @return - * @throws Exception - */ - @Override - public List> getRepositorio(QueryBean queryBean) throws Exception { - List> ldata = new ArrayList>(); - Integer page = queryBean.getPage(); - Integer rowsPerPage = queryBean.getPageSize(); - EntityManagerFactory emf = null; - EntityManager em = null; - Connection connection = null; - ResultSet resultSet = null; - PreparedStatement preparedStatement = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //connection = ((Session) em.getDelegate()).connection(); - String SQL_REPOSITORIO = "select p.pd_descripcion as ea_producto,sum(r.ea_valor)as ea_valor,sum(ea_comision)as ea_comision from cobis..repositorio_ach t ,cobis..envios_ach_wfl r,cobis..cl_producto p"; - SQL_REPOSITORIO = this.getSentenceWithFilter(SQL_REPOSITORIO, queryBean.getCriteria()) + " and t.ra_secuencial=r.ea_sec_corte and t.ra_corte = r.ea_corte and r.ea_producto=p.pd_abreviatura and t.ra_estado ='P' group by p.pd_descripcion"; - List lcriteria = this.getCriteria(queryBean.getCriteria()); - preparedStatement = connection.prepareStatement(SQL_REPOSITORIO, ResultSet.TYPE_SCROLL_INSENSITIVE, ResultSet.CONCUR_READ_ONLY); - for (int i = 0; i < lcriteria.size(); i++) { - Object value = lcriteria.get(i); - preparedStatement.setObject(i + 1, value); - } - resultSet = preparedStatement.executeQuery(); - if (page > 1) { - resultSet.setFetchSize(rowsPerPage + 1); - resultSet.absolute((page - 1) * rowsPerPage); - } - for (int i = 0; i < rowsPerPage; i++) { - if (!resultSet.next()) { - break; - } - ldata.add(this.getResulsetRepositorio(resultSet)); - } - } catch (Exception ex) { - throw ex; - } finally { - this.closeSesion(preparedStatement, resultSet, em,emf); - } - return ldata; - } - - /** - * Metodo que obtiene los datos de la consulta - * @param resultSet - * @return Map - * @throws Exception - */ - private Map getResulsetRepositorio(ResultSet resultSet) throws Exception { - Map map = new HashMap(); - Object valor = resultSet.getObject("ea_producto"); - if (valor.toString().compareTo("OPERACIONES ACH") == 0) { - valor = "OPERACIONES ACH-RECURRENTES"; - } - map.put("ea_producto", valor); - valor = resultSet.getObject("ea_valor"); - map.put("ea_valor", valor); - valor = resultSet.getObject("ea_comision"); - map.put("ea_comision", valor); - return map; - } - - /** - * Metodo que cierra sesiones a la base de datos abiertas - * @param preparedStatement - * @param resultSet - * @param entityManager - * @throws Exception - */ - private void closeSesion(PreparedStatement preparedStatement, ResultSet resultSet, EntityManager em,EntityManagerFactory emf) throws Exception { - if (resultSet != null) { - resultSet.close(); - } - if (preparedStatement != null) { - preparedStatement.close(); - } - if (em != null) { - try { - em.clear(); - } catch (Exception ex) { - } - em.clear(); - em.close(); - emf.close(); - } - } - - /** - * Metodo que cierra sesiones a la base de datos abiertas - * @param preparedStatement - * @param resultSet - * @param connection - * @throws Exception - */ - private void closeSesion(PreparedStatement preparedStatement, ResultSet resultSet, Connection connection) throws Exception { - if (preparedStatement != null) { - preparedStatement.close(); - } - if (resultSet != null) { - resultSet.close(); - } - if (connection != null) { - connection.close(); - } - } - - /** - * Metodo que llena la tabla textos_ach, con los datos de enviadas. - * @param pTransaction Codigo de transaccion con el cual se generan los textos ach. - * @param pOperation Codigo de operaicon. - * @return Map - * @throws Exception - */ - @Override - public Map generaTextoAch(Integer pTransaction, String pOperation) throws Exception { - EntityManagerFactory emf = null; - EntityManager em = null; - Connection c = null; - CallableStatement cs = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //c = ((Session) em.getDelegate()).connection(); - // c.setTransactionIsolation(Connection.TRANSACTION_NONE); - cs = c.prepareCall("{ call maia..sp_genera_texto_ach(?,?,?,?,?) }"); - cs.setInt(1, pTransaction);// Codigo de transaccion 2804 - cs.setString(2, pOperation);// Codigo de operacion "A" - cs.setInt(3, 0); //Numero de corte con el cual se genera el archivo texto de enviadas. - cs.setString(4, ""); // Codigo de resultado - cs.setString(5, ""); // Texto de resultado - // parametro de salida - cs.registerOutParameter(3, Types.INTEGER); - cs.registerOutParameter(4, Types.CHAR); - cs.registerOutParameter(5, Types.CHAR); - // ejecutar el SP - cs.execute(); - Integer corte = cs.getInt(3); - String cresultado = cs.getString(4); - String textoerror = cs.getString(5); - Map m = new HashMap(); - m.put("corte", corte); - m.put("cresultado", cresultado); - m.put("textoerror", textoerror); - return m; - } catch (Exception e) { - throw e; - } finally { - if (cs != null) { - cs.close(); - } - if (c != null) { - c.close(); - } - if (em != null) { - em.clear(); - em.close(); - emf.close(); - } - } - - } -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/ContabilizaCobisBean.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/ContabilizaCobisBean.java.svn-base deleted file mode 100644 index dea4616..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/cobis/.svn/text-base/ContabilizaCobisBean.java.svn-base +++ /dev/null @@ -1,185 +0,0 @@ -package com.fp.sessionbeans.ejb.cobis; - -import java.math.BigDecimal; -import java.sql.CallableStatement; -import java.sql.Connection; -import java.sql.Date; -import java.sql.Types; - -import javax.ejb.Stateless; -import javax.ejb.TransactionManagement; -import javax.ejb.TransactionManagementType; -import javax.persistence.EntityManager; -import javax.persistence.EntityManagerFactory; -import javax.persistence.Persistence; - -import com.fp.ach.exception.AchException; -import com.fp.dto.save.SaveRequest; -import com.fp.sessionbeans.ejb.interfaces.ContabilizaCobisLocal; - -/** - * Session Bean utilitario para obtener informacion de cobis. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@Stateless -@TransactionManagement(value = TransactionManagementType.BEAN) -public class ContabilizaCobisBean implements ContabilizaCobisLocal { - - /** - * Metodo que ejecuta la transaccion en cobis. - * - * @param pSaveRequest Mensaje de entrada de ejecucion de la transaccion. - * @param pAmount Monto de la afectacion contable. - * @param pCurrency MOneda de la afectacion contable. - * @param pProfile Perfil de afectacion contable. - * @param pServer Codigo de servidor cobis con el que se ejecuta una - * transaccion. - * @param pOffcie Codigo de oficina cobis con la que se ejecuta la - * transaccion. - * @throws Exception - */ - @SuppressWarnings("deprecation") - @Override - public void process(SaveRequest pSaveRequest, BigDecimal pAmount, Integer pCurrency, String pProfile, - String pServer, Integer pOffcie, Integer pArea) throws Exception { - EntityManagerFactory emf = null; - EntityManager em = null; - Connection c = null; - CallableStatement cs = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //c = ((Session) em.getDelegate()).connection(); - // c.setTransactionIsolation(Connection.TRANSACTION_NONE); - cs = c.prepareCall("{ call maia..sp_contabiliza(?,?,?,?,?,?,?,?,?,?,?) }"); - this.fillParameters(pSaveRequest, cs, pAmount, pCurrency, pProfile, pServer, pOffcie, pArea); - // ejecutar el SP - cs.execute(); - String cresultado = cs.getString(10); - if (cresultado.compareTo("0") == 0) { - return; - } - String textoerror = cs.getString(11); - throw new AchException(cresultado, textoerror); - } catch (Exception e) { - throw e; - } finally { - if (cs != null) { - cs.close(); - } - if (em != null) { - em.clear(); - em.close(); - emf.close(); - } - } - } - - /** - * Metodo que fija los parametros necesarios para ejecutar el proceso de - * base. - * - * @param pSaveRequest Mensaje de entrada de ejecucion de la transaccion. - * @param pEntryDetail Datos del registro a procesar. - * @param cs Referencia a CallableStatement - * @throws Exception - */ - private void fillParameters(SaveRequest pSaveRequest, CallableStatement cs, BigDecimal pAmount, Integer pCurrency, - String pProfile, String pServer, Integer pOffcie, Integer pArea) throws Exception { - cs.setString(1, pServer); // Nombre del servidor COBIS - cs.setInt(2, pOffcie); // Oficina COBIS - cs.setString(3, pSaveRequest.getUser()); // Usuario - cs.setString(4, "127.0.0.1"); // Terminal - cs.setBigDecimal(5, pAmount); // MOnto de la transacion - cs.setInt(6, pCurrency);// MOneda 0 = U.S. - cs.setString(7, pProfile);// Fecha proceso de Cobis - cs.setInt(8, pArea);// area - cs.setString(9, "");// Glosa del comprobante - cs.setString(10, ""); // Codigo de resultado - cs.setString(11, ""); // Texto de resultado - // parametro de salida - cs.registerOutParameter(10, Types.CHAR); - cs.registerOutParameter(11, Types.CHAR); - } - - /** - * Metodo que se encarga de contabilizar valores del repositorio unico. - * - * @param pSaveRequest Datos del request original. - * @param pServer Nombre del servidor cobis. - * @param pOffcie Codigo de oficina. - * @param pDate Fecha de contabilizacion. - * @param pUser Codigo de usuario. - * @param pTransaction Codigo de transaccion cobis 2804, - * @param pOperation Codigo de operacion "C" - * @param pProduct Codigo de producto ach 33 - * @throws Exception - */ - @SuppressWarnings("deprecation") - @Override - public void processRepository(SaveRequest pSaveRequest, String pServer, Integer pOffcie, Date pDate, String pUser, - Integer pTransaction, String pOperation, Integer pProduct) throws Exception { - EntityManagerFactory emf = null; - EntityManager em = null; - Connection c = null; - CallableStatement cs = null; - try { - emf = Persistence.createEntityManagerFactory("cobis"); - em = emf.createEntityManager(); - //c = ((Session) em.getDelegate()).connection(); - // c.setTransactionIsolation(Connection.TRANSACTION_NONE); - cs = c.prepareCall("{ call maia..sp_afecta_conta_ach(?,?,?,?,?,?,?,?,?) }"); - this.fillParameters(cs, pServer, pOffcie, pDate, pUser, pTransaction, pOperation, pProduct); - // ejecutar el SP - cs.execute(); - c.close(); - String cresultado = cs.getString(8); - if (cresultado.compareTo("0") == 0) { - return; - } - String textoerror = cs.getString(9); - throw new AchException(cresultado, textoerror); - } catch (Exception e) { - throw e; - } finally { - if (cs != null) { - cs.close(); - } - if (em != null) { - em.clear(); - em.close(); - emf.close(); - } - } - } - - /** - * Fija parametros en el CallableStatement. - * @param cs Objeto utilizado para la ejecucion del sp de cobis. - * @param pServer Nombre del servidor cobis. - * @param pOffcie Codigo de oficina. - * @param pDate Fecha de contabilizacion. - * @param pUser Codigo de usuario. - * @param pTransaction Codigo de transaccion cobis 2804, - * @param pOperation Codigo de operacion "C" - * @param pProduct Codigo de producto ach 33 - * @throws Exception - */ - private void fillParameters(CallableStatement cs, String pServer, Integer pOffcie, Date pDate, String pUser, - Integer pTransaction, String pOperation, Integer pProduct) throws Exception { - cs.setString(1, pServer); // Nombre del servidor COBIS - cs.setInt(2, pOffcie); // Oficina COBIS - cs.setDate(3, pDate); // Fecha - cs.setString(4, pUser); // Usuario - cs.setInt(5, pTransaction); // Codigo de transaccion - cs.setString(6, pOperation);// Codigo de operacion - cs.setInt(7, pProduct);// area - cs.setString(8, ""); // Codigo de resultado - cs.setString(9, ""); // Texto de resultado - // parametro de salida - cs.registerOutParameter(8, Types.CHAR); - cs.registerOutParameter(9, Types.CHAR); - } -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/entries deleted file mode 100644 index 34b5511..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/entries +++ /dev/null @@ -1,167 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -cobis -dir - -CobisBeanLocal.java -file - - - - -2022-07-28T03:40:44.972813Z -03ba13e48501e09f95e94c868a699b84 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1995 - -SequenceBeanLocal.java -file - - - - -2022-07-28T03:40:44.972813Z -5ff80288e36d62020f6f08f47f67ff6d -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - - - - - - - - -577 - -ContabilizaCobisLocal.java -file - - - - -2022-07-28T03:40:44.973813Z -7d1fda2664cc0394032479c9e985075a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1743 - -CrudBeanLocal.java -file - - - - -2022-07-28T03:40:44.973813Z -06583af84078adcfc4dae13dc361e575 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -956 - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CobisBeanLocal.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CobisBeanLocal.java.svn-base deleted file mode 100644 index 7618652..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CobisBeanLocal.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -package com.fp.sessionbeans.ejb.interfaces; - -import java.util.List; -import java.util.Map; - -import javax.ejb.Local; - -import com.fp.dto.query.QueryBean; -import java.sql.Date; - -/** - * Interface de ejb de de consulta de informacion en cobis. - * @author Jorge Vaca. - * @version 2.1 - */ -@Local -public interface CobisBeanLocal { - - /** - * Entrega una lista de clientes de Cobis. - * @return List> - * @throws Exception - */ - public List> getClientes(QueryBean queryBean) throws Exception; - - /** - * Entrega una lista de cuentas de ahorro de Cobis. - * @return List> - * @throws Exception - */ - public List> getCuentasAhorro(QueryBean queryBean) throws Exception; - - /** - * Entrega una lista de cuentas de corriente de Cobis. - * @return List> - * @throws Exception - */ - public List> getCuentasCorrientes(QueryBean queryBean) throws Exception; - - /** - * Entrega la consulta del repositorio_ach de cobis - * @param queryBean - * @return List> - * @throws Exception - */ - public List> getRepositorio(QueryBean queryBean) throws Exception; - - /** - * Metodo que devuelve la informacion para el archivo de enviadas - * @param corte - * @param fecha - * @return - * @throws Exception - */ - public List getDataSendFile(Integer corte, Date fecha) throws Exception; - - /** - * Metodo que llena la tabla textos_ach, con los datos de enviadas. - * @param pTransaction Codigo de transaccion con el cual se generan los textos ach. - * @param pOperation Codigo de operaicon. - * @return Map - * @throws Exception - */ - public Map generaTextoAch(Integer pTransaction,String pOperation) throws Exception; - - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/ContabilizaCobisLocal.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/ContabilizaCobisLocal.java.svn-base deleted file mode 100644 index 120c8d9..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/ContabilizaCobisLocal.java.svn-base +++ /dev/null @@ -1,46 +0,0 @@ -package com.fp.sessionbeans.ejb.interfaces; - -import java.math.BigDecimal; -import java.sql.Date; - -import javax.ejb.Local; - -import com.fp.dto.save.SaveRequest; - -/** - * Interface de ejb de contabilizacion de contabilizacion en cobis. - * @author Jorge Vaca. - * @version 2.1 - */ -@Local -public interface ContabilizaCobisLocal { - - /** - * Metodo que ejecuta la transaccion en cobis. - * @param pSaveRequest Mensaje de entrada de ejecucion de la transaccion. - * @param pAmount Monto de la afectacion contable. - * @param pCurrency MOneda de la afectacion contable. - * @param pProfile Perfil de afectacion contable. - * @param pServer Codigo de servidor cobis con el que se ejecuta una transaccion. - * @param pOffcie Codigo de oficina cobis con la que se ejecuta la transaccion. - * @throws Exception - */ - public void process(SaveRequest pSaveRequest,BigDecimal pAmount,Integer pCurrency,String pProfile, - String pServer,Integer pOffcie,Integer pArea) throws Exception; - - /** - * Metodo que se encarga de contabilizar valores del repositorio unico. - * @param pSaveRequest Datos del request original. - * @param pServer Nombre del servidor cobis. - * @param pOffcie Codigo de oficina. - * @param pDate Fecha de contabilizacion. - * @param pUser Codigo de usuario. - * @param pTransaction Codigo de transaccion cobis 2804, - * @param pOperation Codigo de operacion "C" - * @param pProduct Codigo de producto ach 33 - * @throws Exception - */ - public void processRepository(SaveRequest pSaveRequest,String pServer,Integer pOffcie, - Date pDate,String pUser,Integer pTransaction,String pOperation,Integer pProduct) throws Exception; - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CrudBeanLocal.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CrudBeanLocal.java.svn-base deleted file mode 100644 index 6c71016..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/CrudBeanLocal.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.sessionbeans.ejb.interfaces; - -import java.util.List; - -import javax.ejb.Local; -import javax.persistence.EntityManager; - -import com.fp.dto.hb.HibernateBean; - -/** - * Interface de ejb de de CRUD de beans. - * @author Jorge Vaca. - * @version 2.1 - */ -@Local -public interface CrudBeanLocal { - - /** - * Metodo que entrega de grbar un registrp en la base haciendo commit. - * @param em Referencia a una session de base de datos. - * @param pBean Objeto a almacenar en la base de datos. - * @throws Exception - */ - public void insert(EntityManager em,HibernateBean pBean) throws Exception; - - /** - * Metodo que entrega de grbar un registrp en la base haciendo commit. - * @param em Referencia a una session de base de datos. - * @param pLbean Lista con objetos a almacenar en la base de datos. - * @throws Exception - */ - public void insert(EntityManager em,List pLbean) throws Exception; - - - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/SequenceBeanLocal.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/SequenceBeanLocal.java.svn-base deleted file mode 100644 index dece34b..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/.svn/text-base/SequenceBeanLocal.java.svn-base +++ /dev/null @@ -1,22 +0,0 @@ -package com.fp.sessionbeans.ejb.interfaces; - -import javax.ejb.Local; -import javax.persistence.EntityManager; - -/** - * Interface de ejb de ejecucion de transacciones. - * @author Jorge Vaca. - * @version 2.1 - */ -@Local -public interface SequenceBeanLocal { - - /** - * Metodo que entrega el valor de uan secuencia, dado el codigo de sequencia. - * @param pSequenceCode Codigo de secuencia a obtener el numero de secuenia. - * @return Integer - * @throws Exception - */ - public Long getNextValueJta(EntityManager em,String pSequenceCode) throws Exception; - -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/cobis/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/cobis/.svn/entries deleted file mode 100644 index b9b3d57..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/cobis/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans/ejb/interfaces/cobis -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/entries b/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/entries deleted file mode 100644 index f7e44e4..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper -svn://172.17.26.185/COMACO - - - -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SequenceThread.java -file - - - - -2022-07-28T03:40:44.898812Z -a67276f64a4faf0406e169c5a8087f02 -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2197 - -Sequence.java -file - - - - -2022-07-28T03:40:44.898812Z -37763b0be7c377ad311923e415c9e86b -2015-06-23T07:18:19.905071Z -4129 -cpiedra - - - - - - - - - - - - - - - - - - - - - -2513 - diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/Sequence.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/Sequence.java.svn-base deleted file mode 100644 index 27c65e6..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/Sequence.java.svn-base +++ /dev/null @@ -1,75 +0,0 @@ -package com.fp.sessionbeans.helper; - -import javax.naming.InitialContext; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.sessionbeans.ejb.interfaces.SequenceBeanLocal; - -/** - * Calse que se encarga de entregar el consecutivo de una secuencia dado un codigo de sequencia. Ejemplo Codigo dde - * secuencia, PERSONCODE, entrega el siguiente numero de persona. - * - * @author Jorge Vaca - * @version 2.1 - */ -public class Sequence { - - private Long nextvalue; - - /** - * Metodo que entrega el numero de solicitud, para el usuario. - * - * @param pQueryRequest Datos del request. - * @throws Exception - */ - synchronized public Long getNextValue(String pSequenceCode) throws Exception { - SessionData sd = ThreadFacade.getSessionData(); - if (sd.isEjb()) { - return this.getNextValueJta(pSequenceCode); - } - this.getNextValueNonJta(pSequenceCode); - return Long.valueOf(this.nextvalue.toString()); - } - - /** - * Metodo que entrega el numero de solicitud, para el usuario. - * - * @param pQueryRequest Datos del request. - * @throws Exception - */ - public Long getNextValueJta(String pSequenceCode) throws Exception { - SequenceBeanLocal local = null; - try { - PropertiesHandler ph = new PropertiesHandler("fb-facade"); - InitialContext ctx = new InitialContext(); - local = (SequenceBeanLocal) ctx.lookup(ph.getStringValue("ear") + "SequenceBean/local"); - Long sec = local.getNextValueJta(PersistenceManager.getInstance().createEntityManagerLocal(), pSequenceCode); - return sec; - } catch (Exception exp) { - throw exp; - } - } - - /** - * Metodo que entrega el numero de solicitud, para el usuario. - * - * @param pQueryRequest Datos del request. - * @throws Exception - */ - private void getNextValueNonJta(String pSequenceCode) throws Exception { - SequenceThread st = new SequenceThread(this, ThreadFacade.getSessionData().getCompany(), pSequenceCode); - st.start(); - st.join(); - } - - public void setNextvalue(Long nextvalue) { - this.nextvalue = nextvalue; - } - - public Long getNextvalue() { - return this.nextvalue; - } -} diff --git a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/SequenceThread.java.svn-base b/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/SequenceThread.java.svn-base deleted file mode 100644 index 01fd610..0000000 --- a/base/sessionbeans/src/main/java/com/fp/sessionbeans/helper/.svn/text-base/SequenceThread.java.svn-base +++ /dev/null @@ -1,52 +0,0 @@ -package com.fp.sessionbeans.helper; - -import com.fp.common.helper.Constant; -import com.fp.common.logger.APPLogger; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.commondb.PersistenceManager; -import com.fp.persistence.commondb.data.SessionData; -import com.fp.persistence.commondb.data.ThreadFacade; -import com.fp.persistence.pgeneral.seq.TgeneSequences; - -public class SequenceThread extends Thread { - - private final Sequence sequence; - - private final Integer company; - - private final String sequencecode; - - public SequenceThread(Sequence sequence, Integer pCompany, String pSequenceCode) { - this.sequence = sequence; - this.sequencecode = pSequenceCode; - this.company = pCompany; - } - - @Override - public void run() { - try { - SessionData s = new SessionData(); - s.setCompany(this.company); - ThreadFacade.setSaveRequest(s); - PersistenceHelper.setEntityManager(PersistenceManager.getInstance().createEntityManagerLocal()); - PersistenceHelper.beginNewTransaction(); - TgeneSequences tgeneSequences = TgeneSequences.findWithLock(PersistenceHelper.getEntityManager(), this.sequencecode); - tgeneSequences.setCurrentvalue(tgeneSequences.getCurrentvalue() + tgeneSequences.getIncrease()); - if (Constant.ifYes(tgeneSequences.getCyclic())) { - if (tgeneSequences.getCurrentvalue().compareTo(tgeneSequences.getLastvalue()) >= 0) { - tgeneSequences.setCurrentvalue(tgeneSequences.getInitialvalue()); - } - } - this.sequence.setNextvalue(tgeneSequences.getCurrentvalue()); - // update del registro - PersistenceHelper.getEntityManager().merge(tgeneSequences); - // Integer.valueOf(tgeneSequences.getCurrentvalue().toString()); - PersistenceHelper.commitNewTransaction(); - } catch (Exception e) { - APPLogger.getLogger().warn(e, e); - PersistenceHelper.rollbackNewTransaction(); - } finally { - PersistenceHelper.closeSession(); - } - } -} diff --git a/base/sessionbeans/src/test/.svn/entries b/base/sessionbeans/src/test/.svn/entries deleted file mode 100644 index aefb824..0000000 --- a/base/sessionbeans/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/base/sessionbeans/src/test/java/.svn/entries b/base/sessionbeans/src/test/java/.svn/entries deleted file mode 100644 index bea418b..0000000 --- a/base/sessionbeans/src/test/java/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/base/sessionbeans/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/clients/.svn/entries b/clients/.svn/entries deleted file mode 100644 index 25c5484..0000000 --- a/clients/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -comaco -dir - -pom.xml -file - - - - -2022-07-28T03:40:23.357719Z -c6e4ebf7cf19fe65ac3a9574f34374a0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6004 - diff --git a/clients/.svn/text-base/pom.xml.svn-base b/clients/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 0512f1a..0000000 --- a/clients/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,163 +0,0 @@ - - - - FlipBean - com.fp - 2.1 - - 4.0.0 - com.fp - clients - Clients - 2.1 - pom - - 5.5.0.Final - 5.4.0.Final - ISO-8859-1 - - - comaco - - - - - - - org.drools - drools-persistence-jpa - ${drools.version} - provided - - - org.drools - knowledge-api - ${drools.version} - provided - - - org.drools - knowledge-internal-api - ${drools.version} - provided - - - - org.drools - drools-core - ${drools.version} - provided - - - org.drools - drools-compiler - ${drools.version} - provided - - - org.drools - drools-decisiontables - ${drools.version} - provided - - - org.drools - drools-templates - ${drools.version} - provided - - - org.apache.mina - mina-core - 2.0.1 - provided - - - - - org.jbpm - jbpm-flow - ${jbpm.version} - provided - - - org.jbpm - jbpm-flow-builder - ${jbpm.version} - provided - - - org.jbpm - jbpm-persistence-jpa - ${jbpm.version} - provided - - - org.jbpm - jbpm-bpmn2 - ${jbpm.version} - provided - - - org.jbpm - jbpm-human-task - ${jbpm.version} - provided - - - org.jbpm - jbpm-human-task-core - ${jbpm.version} - provided - - - org.jbpm - jbpm-human-task-mina - ${jbpm.version} - provided - - - org.jbpm - jbpm-bam - ${jbpm.version} - provided - - - org.jbpm - jbpm-workitems - ${jbpm.version} - provided - - - - - org.apache.poi - poi - 3.5-FINAL - jar - provided - - - org.apache.poi - poi-ooxml-schemas - 3.6 - jar - provided - - - org.apache.poi - poi-ooxml - 3.5-FINAL - jar - provided - - - org.apache.poi - ooxml-schemas - 1.0 - jar - provided - - - - diff --git a/clients/comaco/.svn/entries b/clients/comaco/.svn/entries deleted file mode 100644 index 89dcfcc..0000000 --- a/clients/comaco/.svn/entries +++ /dev/null @@ -1,68 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ear -dir - -pom.xml -file - - - - -2022-07-28T03:40:23.323719Z -b450fc1248873a063865d05e8dcabc2f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1242 - -environment-eap6 -dir - diff --git a/clients/comaco/.svn/text-base/pom.xml.svn-base b/clients/comaco/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 14648bb..0000000 --- a/clients/comaco/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,48 +0,0 @@ - - - - clients - com.fp - 2.1 - - 4.0.0 - com.fp.clients - maia - FlipBean - 2.1 - pom - - environment-eap6 - ear - - - - flipbean - Flipbean - flipbean.s.a@gmail.com - - Project Manager - Architect - - - - - - - log4j - log4j - 1.2.14 - - - - - - junit - junit - 4.0 - test - - - - - diff --git a/clients/comaco/ear/.svn/dir-prop-base b/clients/comaco/ear/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/clients/comaco/ear/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/clients/comaco/ear/.svn/entries b/clients/comaco/ear/.svn/entries deleted file mode 100644 index 082ae44..0000000 --- a/clients/comaco/ear/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear -svn://172.17.26.185/COMACO - - - -2014-10-17T05:29:48.567075Z -1668 -jvaca -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:22.658716Z -8308e4c280b72d2c37bd91c0c5011e0d -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -12509 - diff --git a/clients/comaco/ear/.svn/text-base/pom.xml.svn-base b/clients/comaco/ear/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 8c45fb0..0000000 --- a/clients/comaco/ear/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,338 +0,0 @@ - - - - maia - com.fp.clients - 2.1 - - 4.0.0 - com.fp.clients.maia - maiaear - ear maia - 2.1 - ear - - - com.fp.clients.maia - environment-eap6 - ${project.version} - - - com.fp.base.dto - common - ${project.version} - - - com.fp.base.dto - dto - ${project.version} - - - - com.fp.base - facade - ${project.version} - ejb - - - com.fp.base - facadeclient - ${project.version} - ejb - - - com.fp.base - sessionbeans - ${project.version} - ejb - - - - com.fp.base.persistence - commondb - ${project.version} - - - com.fp.base.persistence - util - ${project.version} - - - - - com.fp.base.core - bpm - ${project.version} - - - com.fp.base.core - firmas - ${project.version} - - - - - com.fp.base.business - general - ${project.version} - - - com.fp.base.persistence - pgeneral - ${project.version} - - - com.fp.base.persistence - pfirmas - ${project.version} - - - - - com.fp.base.business - log - ${project.version} - - - com.fp.base.persistence - plog - ${project.version} - - - - - com.fp.base.business - person - ${project.version} - - - com.fp.base.persistence - pcustomer - ${project.version} - - - - - com.fp.base.business - report - ${project.version} - - - - - com.fp.base.business - armas - ${project.version} - - - com.fp.base.persistence - parmas - ${project.version} - - - - - com.fp.base.bpm - simple - ${project.version} - - - com.fp.base.bpm - bpmlib - ${project.version} - ejb - - - com.fp.base.persistence - pbpm - ${project.version} - - - - - org.apache.velocity - velocity-tools - provided - - - org.apache.velocity - velocity - provided - - - - - - - - - - org.apache.maven.plugins - maven-ear-plugin - 2.8 - - - - 6 - - - - ${basedir}/src/main/resources - - - META-INF/jboss-deployment-structure.xml,META-INF/persistence.xml - - - - true - - - - - - com.fp.clients.maia - environment-eap6 - true - - - com.fp.base.dto - common - true - - - com.fp.base.dto - dto - true - - - - - com.fp.base - facade - facade.jar - - - com.fp.base - facadeclient - facadeclient.jar - - - com.fp.base - sessionbeans - sessionbeans.jar - - - com.fp.base.bpm - bpmlib - bpmlib.jar - - - - - com.fp.base.persistence - commondb - true - - - com.fp.base.persistence - util - true - - - - - - com.fp.base.core - bpm - true - - - com.fp.base.core - firmas - true - - - - - com.fp.base.business - general - true - - - com.fp.base.persistence - pgeneral - true - - - - - - com.fp.base.business - log - true - - - com.fp.base.persistence - plog - true - - - - - com.fp.base.business - person - true - - - com.fp.base.persistence - pcustomer - true - - - - - com.fp.base.business - armas - true - - - com.fp.base.persistence - parmas - true - - - - - com.fp.base.business - report - true - - - - - com.fp.base.bpm - simple - true - - - com.fp.base.persistence - pbpm - true - - - com.fp.base.persistence - pfirmas - true - - - - - - - - - diff --git a/clients/comaco/ear/src/.svn/entries b/clients/comaco/ear/src/.svn/entries deleted file mode 100644 index 8c7b90d..0000000 --- a/clients/comaco/ear/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src -svn://172.17.26.185/COMACO - - - -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/clients/comaco/ear/src/main/.svn/entries b/clients/comaco/ear/src/main/.svn/entries deleted file mode 100644 index 6fe362f..0000000 --- a/clients/comaco/ear/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main -svn://172.17.26.185/COMACO - - - -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/clients/comaco/ear/src/main/java/.svn/entries b/clients/comaco/ear/src/main/java/.svn/entries deleted file mode 100644 index 7ee19ad..0000000 --- a/clients/comaco/ear/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/clients/comaco/ear/src/main/java/com/.svn/entries b/clients/comaco/ear/src/main/java/com/.svn/entries deleted file mode 100644 index db03cd5..0000000 --- a/clients/comaco/ear/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/clients/comaco/ear/src/main/java/com/fp/.svn/entries b/clients/comaco/ear/src/main/java/com/fp/.svn/entries deleted file mode 100644 index 01a8525..0000000 --- a/clients/comaco/ear/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -clients -dir - diff --git a/clients/comaco/ear/src/main/java/com/fp/clients/.svn/entries b/clients/comaco/ear/src/main/java/com/fp/clients/.svn/entries deleted file mode 100644 index 7b2f17c..0000000 --- a/clients/comaco/ear/src/main/java/com/fp/clients/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/java/com/fp/clients -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -maia -dir - diff --git a/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/entries b/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/entries deleted file mode 100644 index 02c0981..0000000 --- a/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/java/com/fp/clients/maia -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -App.java -file - - - - -2022-07-28T03:40:22.372715Z -6ef12b6027f1ac1067ce16aa120ba3bd -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -195 - diff --git a/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/text-base/App.java.svn-base b/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/text-base/App.java.svn-base deleted file mode 100644 index db0e2f3..0000000 --- a/clients/comaco/ear/src/main/java/com/fp/clients/maia/.svn/text-base/App.java.svn-base +++ /dev/null @@ -1,13 +0,0 @@ -package com.fp.clients.maia; - -/** - * Hello world! - * - */ -public class App -{ - public static void main( String[] args ) - { - System.out.println( "Hello World!" ); - } -} diff --git a/clients/comaco/ear/src/main/resources/.svn/entries b/clients/comaco/ear/src/main/resources/.svn/entries deleted file mode 100644 index ff6097e..0000000 --- a/clients/comaco/ear/src/main/resources/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/resources -svn://172.17.26.185/COMACO - - - -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -META-INF -dir - diff --git a/clients/comaco/ear/src/main/resources/META-INF/.svn/entries b/clients/comaco/ear/src/main/resources/META-INF/.svn/entries deleted file mode 100644 index 5e9a6a5..0000000 --- a/clients/comaco/ear/src/main/resources/META-INF/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/main/resources/META-INF -svn://172.17.26.185/COMACO - - - -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -jboss-deployment-structure.xml -file - - - - -2022-07-28T03:40:22.531716Z -80b63d5d973f3a33521699419199afa4 -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -1693 - diff --git a/clients/comaco/ear/src/main/resources/META-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base b/clients/comaco/ear/src/main/resources/META-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base deleted file mode 100644 index 5f1e9f9..0000000 --- a/clients/comaco/ear/src/main/resources/META-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base +++ /dev/null @@ -1,43 +0,0 @@ - - false - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clients/comaco/ear/src/test/.svn/entries b/clients/comaco/ear/src/test/.svn/entries deleted file mode 100644 index 551ab66..0000000 --- a/clients/comaco/ear/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/clients/comaco/ear/src/test/java/.svn/entries b/clients/comaco/ear/src/test/java/.svn/entries deleted file mode 100644 index c2d96b5..0000000 --- a/clients/comaco/ear/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/clients/comaco/ear/src/test/java/com/.svn/entries b/clients/comaco/ear/src/test/java/com/.svn/entries deleted file mode 100644 index 74aa283..0000000 --- a/clients/comaco/ear/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/clients/comaco/ear/src/test/java/com/fp/.svn/entries b/clients/comaco/ear/src/test/java/com/fp/.svn/entries deleted file mode 100644 index d136ddb..0000000 --- a/clients/comaco/ear/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -clients -dir - diff --git a/clients/comaco/ear/src/test/java/com/fp/clients/.svn/entries b/clients/comaco/ear/src/test/java/com/fp/clients/.svn/entries deleted file mode 100644 index 4cb3cdb..0000000 --- a/clients/comaco/ear/src/test/java/com/fp/clients/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test/java/com/fp/clients -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -maia -dir - diff --git a/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/entries b/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/entries deleted file mode 100644 index 65fdb46..0000000 --- a/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/ear/src/test/java/com/fp/clients/maia -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AppTest.java -file - - - - -2022-07-28T03:40:22.176714Z -cff7ea6778066ebbb0f0ad1a1326d65e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -685 - diff --git a/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/text-base/AppTest.java.svn-base b/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/text-base/AppTest.java.svn-base deleted file mode 100644 index c3d70fe..0000000 --- a/clients/comaco/ear/src/test/java/com/fp/clients/maia/.svn/text-base/AppTest.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.clients.maia; - -import junit.framework.Test; -import junit.framework.TestCase; -import junit.framework.TestSuite; - -/** - * Unit test for simple App. - */ -public class AppTest - extends TestCase -{ - /** - * Create the test case - * - * @param testName name of the test case - */ - public AppTest( String testName ) - { - super( testName ); - } - - /** - * @return the suite of tests being tested - */ - public static Test suite() - { - return new TestSuite( AppTest.class ); - } - - /** - * Rigourous Test :-) - */ - public void testApp() - { - assertTrue( true ); - } -} diff --git a/clients/comaco/environment-eap6/.svn/dir-prop-base b/clients/comaco/environment-eap6/.svn/dir-prop-base deleted file mode 100644 index 40820ff..0000000 --- a/clients/comaco/environment-eap6/.svn/dir-prop-base +++ /dev/null @@ -1,6 +0,0 @@ -K 10 -svn:ignore -V 7 -target - -END diff --git a/clients/comaco/environment-eap6/.svn/entries b/clients/comaco/environment-eap6/.svn/entries deleted file mode 100644 index 0909639..0000000 --- a/clients/comaco/environment-eap6/.svn/entries +++ /dev/null @@ -1,65 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6 -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:23.290719Z -dbbbf5c9ef0a04dd11f72c0f5b6f1e4e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -780 - diff --git a/clients/comaco/environment-eap6/.svn/text-base/pom.xml.svn-base b/clients/comaco/environment-eap6/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index 2c3c85b..0000000 --- a/clients/comaco/environment-eap6/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,23 +0,0 @@ - - - 4.0.0 - - maia - com.fp.clients - 2.1 - - com.fp.clients.maia - environment-eap6 - 2.1 - varibales de ambiente - http://maven.apache.org - - - junit - junit - 3.8.1 - test - - - diff --git a/clients/comaco/environment-eap6/src/.svn/entries b/clients/comaco/environment-eap6/src/.svn/entries deleted file mode 100644 index d7edea0..0000000 --- a/clients/comaco/environment-eap6/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/clients/comaco/environment-eap6/src/main/.svn/entries b/clients/comaco/environment-eap6/src/main/.svn/entries deleted file mode 100644 index 3e07422..0000000 --- a/clients/comaco/environment-eap6/src/main/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - diff --git a/clients/comaco/environment-eap6/src/main/java/.svn/entries b/clients/comaco/environment-eap6/src/main/java/.svn/entries deleted file mode 100644 index abfebf6..0000000 --- a/clients/comaco/environment-eap6/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/clients/comaco/environment-eap6/src/main/java/com/.svn/entries b/clients/comaco/environment-eap6/src/main/java/com/.svn/entries deleted file mode 100644 index f55aeeb..0000000 --- a/clients/comaco/environment-eap6/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/clients/comaco/environment-eap6/src/main/java/com/fp/.svn/entries b/clients/comaco/environment-eap6/src/main/java/com/fp/.svn/entries deleted file mode 100644 index dedada8..0000000 --- a/clients/comaco/environment-eap6/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -clients -dir - diff --git a/clients/comaco/environment-eap6/src/main/java/com/fp/clients/.svn/entries b/clients/comaco/environment-eap6/src/main/java/com/fp/clients/.svn/entries deleted file mode 100644 index f0ea6a5..0000000 --- a/clients/comaco/environment-eap6/src/main/java/com/fp/clients/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/java/com/fp/clients -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -maia -dir - diff --git a/clients/comaco/environment-eap6/src/main/java/com/fp/clients/maia/.svn/entries b/clients/comaco/environment-eap6/src/main/java/com/fp/clients/maia/.svn/entries deleted file mode 100644 index e8592d7..0000000 --- a/clients/comaco/environment-eap6/src/main/java/com/fp/clients/maia/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/java/com/fp/clients/maia -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/entries b/clients/comaco/environment-eap6/src/main/resources/.svn/entries deleted file mode 100644 index af6fd46..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/resources -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -META-INF -dir - -common.properties -file - - - - -2022-07-28T03:40:23.188718Z -16274b04e9cb10a83efae22a12fd29c4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -429 - -fb-facade.properties -file - - - - -2022-07-28T03:40:23.188718Z -10aef3a0cf2ed24b87300b26b60c7883 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -58 - -hibernateFlipMapping.cfg.xml -file - - - - -2022-07-28T03:40:23.188718Z -acfae474b38da3771234c5e0d3baf8f7 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -20262 - -bpm.properties -file - - - - -2022-07-28T03:40:23.189718Z -ccd4a41bd8d25a3422345809360fd6a1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -972 - -log4j.properties -file - - - - -2022-07-28T03:40:23.189718Z -3492c8160528621ca1a145122b6c5b4d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -773 - diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/bpm.properties.svn-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/bpm.properties.svn-base deleted file mode 100644 index 5444a7a..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/bpm.properties.svn-base +++ /dev/null @@ -1,16 +0,0 @@ -guvnor.url=http\://127.0.0.1\:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/{0}/{1} -vnor.url=http\://127.0.0.1\:8080/drools-guvnor/org.drools.guvnor.Guvnor/package/{0}/{1} -guvnor.change.set= -guvnor.security.basicAuthentication=enabled -guvnor.security.username=gfiallos -guvnor.security.password=gfiallos -guvnor.refresh=false -bpm.memory=false -#task.ip=192.168.2.210 -task.ip=127.0.0.1 -task.ip.server=0.0.0.0 -task.port=9123 -flows.package=maia.flows -flows.snapshot=LATEST -inbox.icon.path=images/bpm/ -inbox.icon.extension=.gif diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/common.properties.svn-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/common.properties.svn-base deleted file mode 100644 index e332127..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/common.properties.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -bean.class.path=/logs/fp -#codigo de moneda oficial -localCurrency=USD -# True indica que la aplicacion trabaja con tasas nominales, false indica que la aplicacion trabaja con tasas efectiva. -nominalRate=true -# Parametro que define el numero de dias de retencion default de valores depositados en cheque. -localhold=2 -#tipos de saldo sobre los cuales se paga intereses en cuentas a la vista -btypeinterest=Cash-Locked-Pawned \ No newline at end of file diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/fb-facade.properties.svn-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/fb-facade.properties.svn-base deleted file mode 100644 index 4d0474f..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/fb-facade.properties.svn-base +++ /dev/null @@ -1,3 +0,0 @@ -ear=maiaear-2.1/ -bean=FacadeBean/remote -defaultcompany=1 \ No newline at end of file diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.netbeans-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.netbeans-base deleted file mode 100644 index 1f4a7d6..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.netbeans-base +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.svn-base deleted file mode 100644 index 1f4a7d6..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/hibernateFlipMapping.cfg.xml.svn-base +++ /dev/null @@ -1,273 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/log4j.properties.svn-base b/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/log4j.properties.svn-base deleted file mode 100644 index a150115..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/.svn/text-base/log4j.properties.svn-base +++ /dev/null @@ -1,18 +0,0 @@ -log4j.rootLogger=error,com.fp -log4j.logger.com.fp=error -log4j.appender.com.fp=org.apache.log4j.ConsoleAppender -log4j.appender.com.fp.layout=org.apache.log4j.PatternLayout -#log4j.appender.com.fp.layout.ConversionPattern=%d{dd-MMM-yyyy HH\:mm\:ss.SSS} %p [%t] <%l> - %m%n -log4j.appender.com.fp.layout.ConversionPattern=%d{HH\:mm\:ss.SSS} %p [%t] <%l> - %m%n -log4j.category.org.hibernate=fatal -log4j.category.javax=error -log4j.category.org.hibernate.cfg.AnnotationBinder=off -log4j.category.org.hibernate.cfg.annotations.EntityBinder=off -log4j.category.org.apache.tomcat.util.http.Cookies=off -log4j.category.net.sf.json=error -log4j.category.org.springframework=error -log4j.category.com.fp.commondb.PersistenceManager=info -log4j.category.com.fp.bpmlib=info - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/entries b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/entries deleted file mode 100644 index 1c57306..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/main/resources/META-INF -svn://172.17.26.185/COMACO - - - -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -Taskorm.xml -file - - - - -2022-07-28T03:40:23.152718Z -a8eb210e9efe8f0a857f54251813f5fe -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -45185 - -Servicesorm.xml -file - - - - -2022-07-28T03:40:23.153718Z -cb3156c534953d04e9a587754cb1217d -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -9902 - -persistence.xml -file - - - - -2022-07-28T03:40:23.153718Z -86bf04187d0b7f1beea0ab3b0945aa6b -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -5217 - -JBPMorm.xml -file - - - - -2022-07-28T03:40:23.153718Z -152833f30a88745a123a0720abcaef8b -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -1273 - -TaskAuditorm.xml -file - - - - -2022-07-28T03:40:23.153718Z -ca76037d90a20efb70dcfd13f140d1bb -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -1869 - -Executor-orm.xml -file - - - - -2022-07-28T03:40:23.154718Z -c304f3ee3a33c29170f66284a96fb12c -2014-09-11T06:13:12.553770Z -659 -jvaca - - - - - - - - - - - - - - - - - - - - - -2843 - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Executor-orm.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Executor-orm.xml.svn-base deleted file mode 100644 index eec1cf5..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Executor-orm.xml.svn-base +++ /dev/null @@ -1,84 +0,0 @@ - - - - - Select r from RequestInfo as r where (r.status ='QUEUED' or r.status = 'RETRYING') and r.time < :now ORDER BY r.time DESC - - - - - Select r from RequestInfo as r where (r.status ='QUEUED' or r.status ='RETRYING') and id = :id - - - - - Select r from RequestInfo as r where r.status ='RUNNING' - - - - - Select r from RequestInfo as r where r.status ='QUEUED' - - - - - Select r from RequestInfo as r where r.status ='QUEUED' and r.time > :now ORDER BY r.time ASC - - - - - Select r from RequestInfo as r where r.status ='DONE' - - - - - - Select r from RequestInfo as r where r.status ='ERROR' - - - - - - Select r from RequestInfo as r where r.status ='CANCELLED' - - - - - - Select r from RequestInfo as r - - - - - - Select e from ErrorInfo as e - - - - - - Select e from ErrorInfo as e where e.requestInfo.id = :id - - - - - - Select r from RequestInfo as r where r.status in (:statuses) ORDER BY r.time DESC - - - - - - Select r from RequestInfo as r where r.key = :businessKey - - - - - Select r from RequestInfo as r where (r.status ='QUEUED' or r.status = 'RETRYING') and r.time < :now - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/JBPMorm.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/JBPMorm.xml.svn-base deleted file mode 100644 index 1300b1e..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/JBPMorm.xml.svn-base +++ /dev/null @@ -1,44 +0,0 @@ - - - - - -select - processInstanceInfo.processInstanceId -from - ProcessInstanceInfo processInstanceInfo join processInstanceInfo.eventTypes eventTypes -where - eventTypes = :type - - - - - -select - key.processInstanceId -from - CorrelationKeyInfo key - left join key.properties props -where - cast(:elem_count as integer) = - (select count(id) from CorrelationPropertyInfo cpi where cpi.correlationKey.id = key.id) and - props.value in :properties - group by key.id,key.processInstanceId -having count(key.id) = :elem_count - - - - -select - key -from - CorrelationKeyInfo key -where - key.processInstanceId = :pId - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Servicesorm.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Servicesorm.xml.svn-base deleted file mode 100644 index 01762d4..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Servicesorm.xml.svn-base +++ /dev/null @@ -1,372 +0,0 @@ - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - ORDER BY - log.processId, log.start - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) and log.identity = :initiator - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.externalId=:externalId - and log.status in (:states) - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.processId =:processDefId - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.processInstanceId =:processId - - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) and log.processId like :processId - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) and log.processId like :processId and log.identity = :initiator - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) and log.processName like :processName - - - - - - - select - new org.jbpm.kie.services.impl.model.ProcessInstanceDesc( - log.processInstanceId, - log.processId, - log.processName, - log.processVersion, - log.status, - log.externalId, - log.start, - log.identity - ) - from - ProcessInstanceLog log - where - log.status in (:states) and log.processName like :processName and log.identity = :initiator - - - - - - - - select - new org.jbpm.kie.services.impl.model.NodeInstanceDesc( - log.nodeInstanceId, - log.nodeId, - log.nodeName, - log.nodeType, - log.externalId, - log.processInstanceId, - log.date, - log.connection, - log.type - ) - from - NodeInstanceLog log - where - log.processInstanceId=:processId AND log.externalId=:externalId AND log.type =:type - ORDER BY - log.date DESC, log.id DESC - - - - - - - - select - new org.jbpm.kie.services.impl.model.NodeInstanceDesc( - log.nodeInstanceId, - log.nodeId, - log.nodeName, - log.nodeType, - log.externalId, - log.processInstanceId, - log.date, - log.connection, - log.type - ) - from - NodeInstanceLog log - where - log.processInstanceId=:processId AND log.externalId=:externalId - ORDER BY - log.date DESC, log.id DESC - - - - - - - - select - new org.jbpm.kie.services.impl.model.NodeInstanceDesc( - log.nodeInstanceId, - log.nodeId, - log.nodeName, - log.nodeType, - log.externalId, - log.processInstanceId, - log.date, - log.connection, - log.type - ) - from - NodeInstanceLog log - where - log.nodeInstanceId in ( select nil.nodeInstanceId from NodeInstanceLog nil where nil.processInstanceId=:processId AND nil.externalId=:externalId - GROUP BY nil.nodeInstanceId - HAVING sum(nil.type) = 0) - and log.type = 0 - and log.processInstanceId=:processId - order by - log.id ASC - - - - - - - select - new org.jbpm.kie.services.impl.model.NodeInstanceDesc( - log.nodeInstanceId, - log.nodeId, - log.nodeName, - log.nodeType, - log.externalId, - log.processInstanceId, - log.date, - log.connection, - log.type - ) - from - NodeInstanceLog log - where - log.nodeInstanceId in (select nodeInstanceId from NodeInstanceLog nid where nid.processInstanceId=:processId AND nid.externalId=:externalId AND nid.type = 1 - GROUP BY nid.nodeInstanceId - HAVING sum(nid.type) >= 1) - and log.type = 1 - and log.processInstanceId=:processId - ORDER BY - log.nodeInstanceId, log.id ASC - - - - - - - - - select - new org.jbpm.kie.services.impl.model.VariableStateDesc( - log.variableId, - log.variableInstanceId, - log.oldValue, - log.value, - log.externalId, - log.processInstanceId, - log.date - ) - from - VariableInstanceLog log - where - log.processInstanceId =:processInstanceId AND log.id in (select max(vss.id) FROM VariableInstanceLog vss WHERE vss.processInstanceId =:processInstanceId group by vss.variableId ) order by log.id - - - - - - - select - new org.jbpm.kie.services.impl.model.VariableStateDesc( - log.variableId, - log.variableInstanceId, - log.oldValue, - log.value, - log.externalId, - log.processInstanceId, - log.date - ) - from - VariableInstanceLog log - where - log.processInstanceId =:processInstanceId AND log.variableId =:variableId - order by - log.id DESC - - - - - - \ No newline at end of file diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/TaskAuditorm.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/TaskAuditorm.xml.svn-base deleted file mode 100644 index 2f0266f..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/TaskAuditorm.xml.svn-base +++ /dev/null @@ -1,42 +0,0 @@ - - - - select t from TaskEventImpl t where t.taskId = :taskId - - - - select b from BAMTaskSummaryImpl b where b.taskId = :taskId - - - - delete from BAMTaskSummaryImpl b where b.taskId = :taskId - - - - delete from BAMTaskSummaryImpl b - - - - - - select a from AuditTaskImpl a order by a.taskId DESC - - - - - - select a from AuditTaskImpl a where a.actualOwner = :owner order by a.taskId DESC - - - - - - select a from AuditTaskImpl a where a.taskId = :taskId - - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Taskorm.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Taskorm.xml.svn-base deleted file mode 100644 index ac0ebca..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/Taskorm.xml.svn-base +++ /dev/null @@ -1,1297 +0,0 @@ - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl businessAdministrator - where - t.archived = 0 and - businessAdministrator.id = :userId and - businessAdministrator in elements ( t.peopleAssignments.businessAdministrators ) - - - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl excludedOwners - where - t.archived = 0 and - excludedOwners.id = :userId and - excludedOwners in elements ( t.peopleAssignments.excludedOwners ) - - - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - potentialOwners.id = :userId and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - potentialOwners.id = :userId and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - - t.taskData.status in (:status) - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - t.taskData.status in (:status) - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t , - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t , - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - t.taskData.status in (:status) - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t , - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - t.taskData.actualOwner = null and - potentialOwners.id = :groupId and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - order by t.id DESC - - - - - - - select - - t.id, - potentialOwners.id - - from - TaskImpl t, - - OrganizationalEntityImpl potentialOwners - - where - - potentialOwners.id in (:groupIds) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.archived = 0 and - t.taskData.actualOwner = null and - - - - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - - - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - t.taskData.expirationTime = :expirationDate and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - (t.taskData.expirationTime = :expirationDate or t.taskData.expirationTime is null) and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - select - - t.id, - potentialOwners.id - - from - TaskImpl t, - - OrganizationalEntityImpl potentialOwners - - where - - potentialOwners.id in (:groupIds) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.archived = 0 and - t.taskData.actualOwner = null and - t.taskData.expirationTime = :expirationDate and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - - - - - - - - - - - - select - t.id, - potentialOwners - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - - where - t.id in (:taskIds) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) - - - - - - - - - select - - t.id, - potentialOwners.id - - from - TaskImpl t, - - OrganizationalEntityImpl potentialOwners - - where - - potentialOwners.id in (:groupIds) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.archived = 0 and - t.taskData.actualOwner = null and - (t.taskData.expirationTime = :expirationDate or t.taskData.expirationTime is null) and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - - - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - t.taskData.parentId = :parentId and - (potentialOwners.id = :userId or potentialOwners.id in (:groupIds)) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - t.taskData.parentId = :parentId and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - order by t.id DESC - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl recipients - where - t.archived = 0 and - recipients.id = :userId and - recipients in elements ( t.peopleAssignments.recipients ) - - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl taskInitiator - where - t.archived = 0 and - taskInitiator.id = :userId and - taskInitiator = t.peopleAssignments.taskInitiator - - - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl taskStakeholder - where - t.archived = 0 and - taskStakeholder.id = :userId and - taskStakeholder in elements ( t.peopleAssignments.taskStakeholders ) - - - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.actualOwner.id = :userId - - - order by t.id DESC - - - - - - - select - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - left join t.peopleAssignments.potentialOwners potOwners - where - t.archived = 0 and - (t.taskData.actualOwner.id = :userId or potOwners.id = :userId) and - t.taskData.status in (:status) and - t.taskData.expirationTime = :expirationDate - - order by t.id DESC - - - - - - - select - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - left join t.peopleAssignments.potentialOwners potOwners - where - t.archived = 0 and - (t.taskData.actualOwner.id = :userId or potOwners.id = :userId) and - t.taskData.status in (:status) and - t.taskData.expirationTime < :date - - order by t.id DESC - - - - - - - select - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - left join t.peopleAssignments.potentialOwners potOwners - where - t.archived = 0 and - (t.taskData.actualOwner.id = :userId or potOwners.id = :userId) and - t.taskData.status in (:status) and - (t.taskData.expirationTime = :expirationDate or - t.taskData.expirationTime is null) - - - order by t.id DESC - - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.status = :status - order by t.id DESC - - - - - - select - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.status = :status and - - - - t.taskData.activationTime < :since - - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - where - t.archived = 1 - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.actualOwner.id = :userId and - t.taskData.status in (:status) - - - order by t.id DESC - - - - - - - - select - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.id in (:taskIds) - order by t.id DESC - - - - - - - - select - - t.id, - potentialOwners.id - - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - - where - - t.id in (:taskIds) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.archived = 0 and - t.taskData.status in ('Created', 'Ready', 'Reserved', 'InProgress', 'Suspended') - - - - - - - - - - - select - new org.jbpm.services.task.query.DeadlineSummaryImpl( - t.id, - d.id, - d.date) - from - TaskImpl t, - DeadlineImpl d - where - t.archived = 0 and - d in elements( t.deadlines.endDeadlines ) and - d.escalated = 0 - order by - d.date - - - - - - - select - new org.jbpm.services.task.query.DeadlineSummaryImpl( - t.id, - d.id, - d.date) - from - TaskImpl t, - DeadlineImpl d - where - t.archived = 0 and - d in elements( t.deadlines.startDeadlines ) and - d.escalated = 0 - order by - d.date - - - - - - select - new org.jbpm.services.task.query.DeadlineSummaryImpl( - t.id, - d.id, - d.date) - from - TaskImpl t, - DeadlineImpl d - where - t.id = :taskId and - t.archived = 0 and - d in elements( t.deadlines.endDeadlines ) and - d.escalated = 0 - order by - d.date - - - - - - - select - new org.jbpm.services.task.query.DeadlineSummaryImpl( - t.id, - d.id, - d.date) - from - TaskImpl t, - DeadlineImpl d - where - t.id = :taskId and - t.archived = 0 and - d in elements( t.deadlines.startDeadlines ) and - d.escalated = 0 - order by - d.date - - - - - - select - t - from - TaskImpl t - where - t.archived = 0 and - t.taskData.workItemId = :workItemId - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.processInstanceId = :processInstanceId and - - - t.taskData.status in (:status) - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - - where - t.archived = 0 and - t.taskData.processInstanceId = :processInstanceId and - t.name = :taskName and - t.taskData.status in (:status) - order by t.id DESC - - - - - - select - t.id - from - TaskImpl t - where - t.archived = 0 and - t.taskData.processInstanceId = :processInstanceId - - - - - - - - - select - a - from - TaskImpl t - join t.taskData.attachments as a - where - t.id = :taskId - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t , - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - (t.taskData.expirationTime = :expirationDate or t.taskData.expirationTime is null) and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t , - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - - t.taskData.expirationTime = :expirationDate and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.taskData.status in (:status) - order by t.id DESC - - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - (t.taskData.expirationTime = :expirationDate or t.taskData.expirationTime is null) and - t.taskData.status in (:status) - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t, - OrganizationalEntityImpl potentialOwners - where - t.archived = 0 and - ( potentialOwners.id = :userId or potentialOwners.id in (:groupIds) ) and - potentialOwners in elements ( t.peopleAssignments.potentialOwners ) and - t.taskData.expirationTime = :expirationDate and - t.taskData.status in (:status) - order by t.id DESC - - - - - - select distinct - new org.jbpm.services.task.query.TaskSummaryImpl( - t.id, - t.name, - t.description, - t.taskData.status, - t.priority, - t.taskData.actualOwner.id, - t.taskData.createdBy.id, - t.taskData.createdOn, - t.taskData.activationTime, - t.taskData.expirationTime, - t.taskData.processId, - t.taskData.processInstanceId, - t.taskData.parentId, - t.taskData.deploymentId ) - from - TaskImpl t - where - t.archived = 0 and - t.taskData.actualOwner.id = :userId and - t.taskData.status in (:status) - order by t.id DESC - - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.netbeans-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.netbeans-base deleted file mode 100644 index a243d13..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.netbeans-base +++ /dev/null @@ -1,94 +0,0 @@ - - - - - org.hibernate.ejb.HibernatePersistence - java:jboss/datasources/jbpmDS - META-INF/Taskorm.xml - META-INF/JBPMorm.xml - META-INF/Executor-orm.xml - META-INF/Servicesorm.xml - META-INF/TaskAuditorm.xml - - - org.jbpm.services.task.impl.model.AttachmentImpl - org.jbpm.services.task.impl.model.ContentImpl - org.jbpm.services.task.impl.model.BooleanExpressionImpl - org.jbpm.services.task.impl.model.CommentImpl - org.jbpm.services.task.impl.model.DeadlineImpl - org.jbpm.services.task.impl.model.DelegationImpl - org.jbpm.services.task.impl.model.EscalationImpl - org.jbpm.services.task.impl.model.GroupImpl - org.jbpm.services.task.impl.model.I18NTextImpl - org.jbpm.services.task.impl.model.NotificationImpl - org.jbpm.services.task.impl.model.EmailNotificationImpl - org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl - org.jbpm.services.task.impl.model.PeopleAssignmentsImpl - org.jbpm.services.task.impl.model.ReassignmentImpl - org.jbpm.services.task.impl.model.TaskImpl - org.jbpm.services.task.impl.model.TaskDefImpl - org.jbpm.services.task.impl.model.TaskDataImpl - org.jbpm.services.task.impl.model.UserImpl - org.jbpm.executor.entities.ErrorInfo - org.jbpm.executor.entities.RequestInfo - - org.jbpm.services.task.audit.impl.model.TaskEventImpl - - - org.jbpm.services.task.audit.impl.model.AuditTaskImpl - - - org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl - - - org.drools.persistence.info.SessionInfo - org.jbpm.persistence.processinstance.ProcessInstanceInfo - org.drools.persistence.info.WorkItemInfo - org.jbpm.persistence.correlation.CorrelationKeyInfo - org.jbpm.persistence.correlation.CorrelationPropertyInfo - - org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo - - - org.jbpm.process.audit.ProcessInstanceLog - org.jbpm.process.audit.NodeInstanceLog - org.jbpm.process.audit.VariableInstanceLog - - - - - - - - - - - - - - - - org.hibernate.ejb.HibernatePersistence - java:jboss/datasources/FLIPDS1 - - - - - - - - - - - - - - - - - - diff --git a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.svn-base b/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.svn-base deleted file mode 100644 index a243d13..0000000 --- a/clients/comaco/environment-eap6/src/main/resources/META-INF/.svn/text-base/persistence.xml.svn-base +++ /dev/null @@ -1,94 +0,0 @@ - - - - - org.hibernate.ejb.HibernatePersistence - java:jboss/datasources/jbpmDS - META-INF/Taskorm.xml - META-INF/JBPMorm.xml - META-INF/Executor-orm.xml - META-INF/Servicesorm.xml - META-INF/TaskAuditorm.xml - - - org.jbpm.services.task.impl.model.AttachmentImpl - org.jbpm.services.task.impl.model.ContentImpl - org.jbpm.services.task.impl.model.BooleanExpressionImpl - org.jbpm.services.task.impl.model.CommentImpl - org.jbpm.services.task.impl.model.DeadlineImpl - org.jbpm.services.task.impl.model.DelegationImpl - org.jbpm.services.task.impl.model.EscalationImpl - org.jbpm.services.task.impl.model.GroupImpl - org.jbpm.services.task.impl.model.I18NTextImpl - org.jbpm.services.task.impl.model.NotificationImpl - org.jbpm.services.task.impl.model.EmailNotificationImpl - org.jbpm.services.task.impl.model.EmailNotificationHeaderImpl - org.jbpm.services.task.impl.model.PeopleAssignmentsImpl - org.jbpm.services.task.impl.model.ReassignmentImpl - org.jbpm.services.task.impl.model.TaskImpl - org.jbpm.services.task.impl.model.TaskDefImpl - org.jbpm.services.task.impl.model.TaskDataImpl - org.jbpm.services.task.impl.model.UserImpl - org.jbpm.executor.entities.ErrorInfo - org.jbpm.executor.entities.RequestInfo - - org.jbpm.services.task.audit.impl.model.TaskEventImpl - - - org.jbpm.services.task.audit.impl.model.AuditTaskImpl - - - org.jbpm.services.task.audit.impl.model.BAMTaskSummaryImpl - - - org.drools.persistence.info.SessionInfo - org.jbpm.persistence.processinstance.ProcessInstanceInfo - org.drools.persistence.info.WorkItemInfo - org.jbpm.persistence.correlation.CorrelationKeyInfo - org.jbpm.persistence.correlation.CorrelationPropertyInfo - - org.jbpm.runtime.manager.impl.jpa.ContextMappingInfo - - - org.jbpm.process.audit.ProcessInstanceLog - org.jbpm.process.audit.NodeInstanceLog - org.jbpm.process.audit.VariableInstanceLog - - - - - - - - - - - - - - - - org.hibernate.ejb.HibernatePersistence - java:jboss/datasources/FLIPDS1 - - - - - - - - - - - - - - - - - - diff --git a/clients/comaco/environment-eap6/src/test/.svn/entries b/clients/comaco/environment-eap6/src/test/.svn/entries deleted file mode 100644 index f340e73..0000000 --- a/clients/comaco/environment-eap6/src/test/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - diff --git a/clients/comaco/environment-eap6/src/test/java/.svn/entries b/clients/comaco/environment-eap6/src/test/java/.svn/entries deleted file mode 100644 index 882ee2b..0000000 --- a/clients/comaco/environment-eap6/src/test/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test/java -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/clients/comaco/environment-eap6/src/test/java/com/.svn/entries b/clients/comaco/environment-eap6/src/test/java/com/.svn/entries deleted file mode 100644 index aae3f8b..0000000 --- a/clients/comaco/environment-eap6/src/test/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test/java/com -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/clients/comaco/environment-eap6/src/test/java/com/fp/.svn/entries b/clients/comaco/environment-eap6/src/test/java/com/fp/.svn/entries deleted file mode 100644 index 6c82478..0000000 --- a/clients/comaco/environment-eap6/src/test/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test/java/com/fp -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -clients -dir - diff --git a/clients/comaco/environment-eap6/src/test/java/com/fp/clients/.svn/entries b/clients/comaco/environment-eap6/src/test/java/com/fp/clients/.svn/entries deleted file mode 100644 index 3c882f2..0000000 --- a/clients/comaco/environment-eap6/src/test/java/com/fp/clients/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test/java/com/fp/clients -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -maia -dir - diff --git a/clients/comaco/environment-eap6/src/test/java/com/fp/clients/maia/.svn/entries b/clients/comaco/environment-eap6/src/test/java/com/fp/clients/maia/.svn/entries deleted file mode 100644 index 050ad3a..0000000 --- a/clients/comaco/environment-eap6/src/test/java/com/fp/clients/maia/.svn/entries +++ /dev/null @@ -1,28 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/clients/comaco/environment-eap6/src/test/java/com/fp/clients/maia -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - diff --git a/frontend/.metadata/.svn/entries b/frontend/.metadata/.svn/entries deleted file mode 100644 index e34043f..0000000 --- a/frontend/.metadata/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/.metadata -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - diff --git a/frontend/.metadata/src/.svn/entries b/frontend/.metadata/src/.svn/entries deleted file mode 100644 index 0d1d938..0000000 --- a/frontend/.metadata/src/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/.metadata/src -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -main -dir - diff --git a/frontend/.metadata/src/main/.svn/entries b/frontend/.metadata/src/main/.svn/entries deleted file mode 100644 index c0fc8f2..0000000 --- a/frontend/.metadata/src/main/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/.metadata/src/main -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -webapp -dir - diff --git a/frontend/.metadata/src/main/webapp/.svn/entries b/frontend/.metadata/src/main/webapp/.svn/entries deleted file mode 100644 index 7888bd9..0000000 --- a/frontend/.metadata/src/main/webapp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/.metadata/src/main/webapp -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -WEB-INF -dir - diff --git a/frontend/.metadata/src/main/webapp/WEB-INF/.svn/entries b/frontend/.metadata/src/main/webapp/WEB-INF/.svn/entries deleted file mode 100644 index c14fb1e..0000000 --- a/frontend/.metadata/src/main/webapp/WEB-INF/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/.metadata/src/main/webapp/WEB-INF -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -faces-config.pageflow -file - - - - -2022-07-28T03:40:15.653686Z -b830e48595347dabbb640fb71ee28ae4 -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -202 - diff --git a/frontend/.metadata/src/main/webapp/WEB-INF/.svn/text-base/faces-config.pageflow.svn-base b/frontend/.metadata/src/main/webapp/WEB-INF/.svn/text-base/faces-config.pageflow.svn-base deleted file mode 100644 index 2383095..0000000 --- a/frontend/.metadata/src/main/webapp/WEB-INF/.svn/text-base/faces-config.pageflow.svn-base +++ /dev/null @@ -1,2 +0,0 @@ - - diff --git a/frontend/.svn/dir-prop-base b/frontend/.svn/dir-prop-base deleted file mode 100644 index 3e2a6f2..0000000 --- a/frontend/.svn/dir-prop-base +++ /dev/null @@ -1,9 +0,0 @@ -K 10 -svn:ignore -V 37 -.classpath -.project -.settings -target - -END diff --git a/frontend/.svn/entries b/frontend/.svn/entries deleted file mode 100644 index 2125b0d..0000000 --- a/frontend/.svn/entries +++ /dev/null @@ -1,68 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -src -dir - -pom.xml -file - - - - -2022-07-28T03:40:15.762686Z -793d44f24092e3bb0f6336ce85d5636a -2022-01-20T04:14:54.721239Z -4663 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -16000 - -.metadata -dir - diff --git a/frontend/.svn/text-base/pom.xml.netbeans-base b/frontend/.svn/text-base/pom.xml.netbeans-base deleted file mode 100644 index a5e4003..0000000 --- a/frontend/.svn/text-base/pom.xml.netbeans-base +++ /dev/null @@ -1,465 +0,0 @@ - - 4.0.0 - com.fp - frontend - 2.1 - war - Frontend primefaces - - - - - log4j - log4j - 1.2.16 - - provided - - - dom4j - dom4j - 1.6.1 - provided - - - org.jboss.as - jboss-as-ejb-client-bom - 7.1.3.Final - pom - - provided - - - - org.hibernate - hibernate-entitymanager - 4.0.1.Final - - provided - - - - javax - javaee-web-api - 6.0 - provided - - - com.sun.faces - jsf-api - 2.2.4 - - provided - - - com.sun.faces - jsf-impl - 2.2.4 - - provided - - - javax.servlet - jstl - 1.2 - - provided - - - javax.servlet - servlet-api - 2.5 - - provided - - - - org.primefaces - primefaces - 5.0.8 - - - org.primefaces.extensions - primefaces-extensions - 2.0.0 - - - org.primefaces.themes - redmond - 1.0.10 - - - org.omnifaces - omnifaces - 1.3 - - - net.sf.json-lib - json-lib - 2.2.3 - - - - - - - - com.fp.base.dto - dto - 2.1 - - - com.fp.base - facadeclient - 2.1 - - - com.fp.base.bpm - simple - 2.1 - - - - com.fp.base.persistence - pgeneral - 2.1 - - - com.fp.base.persistence - pcustomer - 2.1 - - - com.fp.base.persistence - pbpm - 2.1 - - - com.fp.base.persistence - parmas - 2.1 - - - - com.fp.general - general-mail - 2.1 - - - - - com.fp.base.core - firmas - 2.1 - - - com.fp.base.persistence - pfirmas - 2.1 - - - com.fp.base.core - alfresco-client - 2.1 - provided - - - - - log4j - log4j - - - dom4j - dom4j - - - org.jboss.as - jboss-as-ejb-client-bom - pom - - - - - org.hibernate - hibernate-entitymanager - - - - javax - javaee-web-api - - - - com.sun.faces - jsf-api - - - com.sun.faces - jsf-impl - - - javax.servlet - jstl - - - - - - org.primefaces - primefaces - - - org.primefaces.extensions - primefaces-extensions - - - org.primefaces.themes - redmond - - - junit - junit - 4.8.2 - test - - - org.omnifaces - omnifaces - - - - - net.sf.jasperreports - jasperreports - 5.6.0 - provided - - - - com.google.zxing - core - 2.2 - - - - com.jaspersoft.ireport - jaspersoft.ireport - 5.6.0 - provided - - - - com.jaspersoft.ireport.jasperserver - jaspersoft.ireport.jasperserver - 5.6.0 - provided - - - - com.jaspersoft.jasperserver - jasperserver-common-ws - 5.6.0 - provided - - - - com.lowagie - itext - 2.1.7 - provided - - - org.codeartisans.thirdparties.swing - org-openide-util - 8.6.2 - provided - - - javax.activation - activation - 1.1 - provided - - - org.apache.axis - axis - 1.4 - provided - - - commons-codec - commons-codec - 1.10 - compile - - - commons-discovery - commons-discovery - 0.2 - provided - - - commons-httpclient - commons-httpclient - 3.1 - provided - - - commons-collections - commons-collections - 3.2.1 - compile - - - commons-digester - commons-digester - 2.1 - provided - - - xerces - xercesImpl - 2.9.1 - provided - - - javax.xml - jaxrpc-api - 1.1 - provided - - - javax.mail - mail - 1.4 - provided - - - - axis - axis-wsdl4j - 1.5.1 - provided - - - - - net.sf.json-lib - json-lib - - - - org.apache.httpcomponents - httpclient - 4.3.1 - - - org.apache.httpcomponents - httpmime - 4.3.1 - - - org.apache.httpcomponents - httpcore - 4.3.1 - - - - - - commons-io - commons-io - 2.4 - - - commons-fileupload - commons-fileupload - 1.3 - - - - - org.apache.poi - poi - 3.10-FINAL - - - org.apache.poi - poi-ooxml - 3.10-FINAL - - - org.apache.poi - poi-ooxml-schemas - 3.10-FINAL - - - org.apache.poi - poi-scratchpad - 3.10-FINAL - - - - - com.thetransactioncompany - cors-filter - 2.5 - - - org.bitbucket.b_c - jose4j - 0.7.9 - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - true - ${project.build.sourceEncoding} - 1.7 - 1.7 - - - - maia - - - - - diff --git a/frontend/.svn/text-base/pom.xml.svn-base b/frontend/.svn/text-base/pom.xml.svn-base deleted file mode 100644 index a5e4003..0000000 --- a/frontend/.svn/text-base/pom.xml.svn-base +++ /dev/null @@ -1,465 +0,0 @@ - - 4.0.0 - com.fp - frontend - 2.1 - war - Frontend primefaces - - - - - log4j - log4j - 1.2.16 - - provided - - - dom4j - dom4j - 1.6.1 - provided - - - org.jboss.as - jboss-as-ejb-client-bom - 7.1.3.Final - pom - - provided - - - - org.hibernate - hibernate-entitymanager - 4.0.1.Final - - provided - - - - javax - javaee-web-api - 6.0 - provided - - - com.sun.faces - jsf-api - 2.2.4 - - provided - - - com.sun.faces - jsf-impl - 2.2.4 - - provided - - - javax.servlet - jstl - 1.2 - - provided - - - javax.servlet - servlet-api - 2.5 - - provided - - - - org.primefaces - primefaces - 5.0.8 - - - org.primefaces.extensions - primefaces-extensions - 2.0.0 - - - org.primefaces.themes - redmond - 1.0.10 - - - org.omnifaces - omnifaces - 1.3 - - - net.sf.json-lib - json-lib - 2.2.3 - - - - - - - - com.fp.base.dto - dto - 2.1 - - - com.fp.base - facadeclient - 2.1 - - - com.fp.base.bpm - simple - 2.1 - - - - com.fp.base.persistence - pgeneral - 2.1 - - - com.fp.base.persistence - pcustomer - 2.1 - - - com.fp.base.persistence - pbpm - 2.1 - - - com.fp.base.persistence - parmas - 2.1 - - - - com.fp.general - general-mail - 2.1 - - - - - com.fp.base.core - firmas - 2.1 - - - com.fp.base.persistence - pfirmas - 2.1 - - - com.fp.base.core - alfresco-client - 2.1 - provided - - - - - log4j - log4j - - - dom4j - dom4j - - - org.jboss.as - jboss-as-ejb-client-bom - pom - - - - - org.hibernate - hibernate-entitymanager - - - - javax - javaee-web-api - - - - com.sun.faces - jsf-api - - - com.sun.faces - jsf-impl - - - javax.servlet - jstl - - - - - - org.primefaces - primefaces - - - org.primefaces.extensions - primefaces-extensions - - - org.primefaces.themes - redmond - - - junit - junit - 4.8.2 - test - - - org.omnifaces - omnifaces - - - - - net.sf.jasperreports - jasperreports - 5.6.0 - provided - - - - com.google.zxing - core - 2.2 - - - - com.jaspersoft.ireport - jaspersoft.ireport - 5.6.0 - provided - - - - com.jaspersoft.ireport.jasperserver - jaspersoft.ireport.jasperserver - 5.6.0 - provided - - - - com.jaspersoft.jasperserver - jasperserver-common-ws - 5.6.0 - provided - - - - com.lowagie - itext - 2.1.7 - provided - - - org.codeartisans.thirdparties.swing - org-openide-util - 8.6.2 - provided - - - javax.activation - activation - 1.1 - provided - - - org.apache.axis - axis - 1.4 - provided - - - commons-codec - commons-codec - 1.10 - compile - - - commons-discovery - commons-discovery - 0.2 - provided - - - commons-httpclient - commons-httpclient - 3.1 - provided - - - commons-collections - commons-collections - 3.2.1 - compile - - - commons-digester - commons-digester - 2.1 - provided - - - xerces - xercesImpl - 2.9.1 - provided - - - javax.xml - jaxrpc-api - 1.1 - provided - - - javax.mail - mail - 1.4 - provided - - - - axis - axis-wsdl4j - 1.5.1 - provided - - - - - net.sf.json-lib - json-lib - - - - org.apache.httpcomponents - httpclient - 4.3.1 - - - org.apache.httpcomponents - httpmime - 4.3.1 - - - org.apache.httpcomponents - httpcore - 4.3.1 - - - - - - commons-io - commons-io - 2.4 - - - commons-fileupload - commons-fileupload - 1.3 - - - - - org.apache.poi - poi - 3.10-FINAL - - - org.apache.poi - poi-ooxml - 3.10-FINAL - - - org.apache.poi - poi-ooxml-schemas - 3.10-FINAL - - - org.apache.poi - poi-scratchpad - 3.10-FINAL - - - - - com.thetransactioncompany - cors-filter - 2.5 - - - org.bitbucket.b_c - jose4j - 0.7.9 - - - - - - - - org.apache.maven.plugins - maven-compiler-plugin - 3.0 - - true - ${project.build.sourceEncoding} - 1.7 - 1.7 - - - - maia - - - - - diff --git a/frontend/src/.svn/entries b/frontend/src/.svn/entries deleted file mode 100644 index 52fd174..0000000 --- a/frontend/src/.svn/entries +++ /dev/null @@ -1,34 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -main -dir - diff --git a/frontend/src/main/.svn/entries b/frontend/src/main/.svn/entries deleted file mode 100644 index 899fac1..0000000 --- a/frontend/src/main/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -java -dir - -resources -dir - -webapp -dir - diff --git a/frontend/src/main/java/.svn/entries b/frontend/src/main/java/.svn/entries deleted file mode 100644 index af4f988..0000000 --- a/frontend/src/main/java/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -com -dir - diff --git a/frontend/src/main/java/com/.svn/entries b/frontend/src/main/java/com/.svn/entries deleted file mode 100644 index 0a4091b..0000000 --- a/frontend/src/main/java/com/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -fp -dir - diff --git a/frontend/src/main/java/com/fp/.svn/entries b/frontend/src/main/java/com/fp/.svn/entries deleted file mode 100644 index b4d82c5..0000000 --- a/frontend/src/main/java/com/fp/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -frontend -dir - diff --git a/frontend/src/main/java/com/fp/frontend/.svn/entries b/frontend/src/main/java/com/fp/frontend/.svn/entries deleted file mode 100644 index 807d2fb..0000000 --- a/frontend/src/main/java/com/fp/frontend/.svn/entries +++ /dev/null @@ -1,58 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -helper -dir - -webservices -dir - -controller -dir - -utility -dir - -servlet -dir - -filter -dir - -enums -dir - -validators -dir - -converters -dir - -prueba -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/.svn/entries deleted file mode 100644 index cda0820..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/.svn/entries +++ /dev/null @@ -1,132 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -ReportController.java -file - - - - -2022-07-28T03:39:55.950601Z -dcec68f6a39a1198dca16927ce5931d6 -2017-02-08T23:39:58.950238Z -4577 -jespinosa - - - - - - - - - - - - - - - - - - - - - -12562 - -pcustomer -dir - -armas -dir - -security -dir - -AbstractController.java -file - - - - -2022-07-28T03:39:55.950601Z -fc18f2839b0c0b6be16c55d27a169bb9 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -34013 - -error -dir - -accounting -dir - -general -dir - -pgeneral -dir - -alfresco -dir - -bpm -dir - -pbpm -dir - -pentaho -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.netbeans-base deleted file mode 100644 index f5f4be8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.netbeans-base +++ /dev/null @@ -1,1355 +0,0 @@ -package com.fp.frontend.controller; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.faces.bean.ManagedProperty; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.firmas.rules.common.CertificateUtils; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; - -/** - * Clase principal para los controladores - * - * @author jvaca - * @author amerchan Cambio atributos, metodos genericos - * - * @param - */ -public abstract class AbstractController - implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * Registro a ser usado cuando se crea uno nuevo o para edicion - */ - protected T record; - - /** - * Lista de registros a presentar en una tabla de mantenimiento - */ - protected List lrecord; - - /** - * Identificador para obtener la lista de registros del mapa de resultados - * del core - */ - protected String beanalias; - - /** - * Tipo de dato de la entidad que maneja el controlador - */ - protected Class classType; - - // Valores posibles Q(query), P(previous), N(next) - private String queryType; - - /** - * Numero de pagina o registro desde el cual se va a ejecutar la consulta. - */ - protected Integer page = 0; - - /** - * Numero de registros por pagina a consultar. - */ - protected Integer recperpage = 10; - - /** - * Crease utilitaria, para ejecutar una accion en el core, ejecmpo consulta, - * mantenimiento. - */ - protected CallerHelper callerhelper; - - /** - * Lista de registros eliminados associates a una tabla o entitybean. - */ - private final List ldeleted = new ArrayList<>(); - - /** - * Lista de registros nuevos asociados a una tabla o entitybean. - */ - private final List lnew = new ArrayList<>(); - - /** - * Lista de registros modificados asociados a una tabla o entitybean. - */ - private final List lupdated = new ArrayList<>(); - - /** - * Map que contiene los criterios de busqueda de una tabla. - */ - private Map mfilters = new HashMap(); - - /** - * Map que contiene campos extras como descripciones. - */ - private Map mfilelds = new HashMap(); - - /** - * Numero de decimales a manejar en las pantallas. - */ - private Integer decimal = 2; - - /** - * Formato de numeros a utilizar en los outputtext. - */ - private String numberformat = "#,##,##0.000000"; - - /** - * Variable que indica si se ejecuta el autoquery, Ej: en el lov de personas - * deberia ser falso. - */ - protected boolean forceautoquery = true; - - /** - * Variable que indica si la pagina es del BPM y ademas si tiene parametros - * para pegar en la pagina - */ - boolean bpmPage = false; - - /** - * Para indicar que el registro se va a visualizar. - */ - private boolean showRow; - - /** - * Para indicar que se va a insertar un nuevo registro. - */ - private boolean newRow; - - /** - * Id de la tarea de jbpm a ejecutar. - */ - protected String tid; - - /** - * Codigo de estatus de bpm A aprobano, D negado - */ - protected String bpmDataStatus; - - /** - * Cometario de ejecucion de una tarea. - */ - protected String bpmDataComment; - /** - * Atributo para la contrasena de la firma - */ - private String signaturePass; - /** - * Atributo para el comentario de la firma - */ - private String signatureComments; - /* - * Atributo para el mensaje de la solicitud - */ - private String message; - /** - * Referencia al controlador de session - */ - @ManagedProperty(value = "#{loginController}") - private LoginController loginController; - - /** - * Constructor del controlador - * - * @param type - * Tipo de clase - * @throws Exception - */ - protected AbstractController(Class type) throws Exception { - this.classType = type; - if (this.callerhelper == null) { - this.callerhelper = new CallerHelper( - FacesContext.getCurrentInstance()); - } - } - - /** - * Metodo que verifica si la pagina es de autoconsulta y si debe pegar - * valores del BPM - */ - public void startQuery() { - try { - this.bpmPage = this.pasteBpmScreenParameters(); - if (!this.bpmPage && this.forceautoquery - && this.callerhelper.isautoquery()) { - this.query(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que verifica si la pagina es de BPM, pega los valores en los - * filtros y realiza la consulta de la p´gina - * - * @return - * @throws Exception - */ - public boolean pasteBpmScreenParameters() throws Exception { - this.getLoginController().setRenderBpmData(false); - String bpmParamsJson = this.getRequestParameter("bpmParams"); - if (bpmParamsJson == null) { - return false; - } - bpmParamsJson = bpmParamsJson.substring(1, bpmParamsJson.length() - 1); - if (!bpmParamsJson.isEmpty()) { - String[] bpmParams = bpmParamsJson.split(","); - for (String item : bpmParams) { - String[] param = item.split("="); - this.manageBpmParameter(param); - } - return true; - } - return false; - } - - private void manageBpmParameter(String[] param) throws Exception { - String key = param[0].trim(); - String value = param[1]; - if (key.equals("null")) { - return; - } - if (key.equals("TID")) { - tid = param[1]; - return; - } - if (key.equals("KIND")) { - if (value.compareTo("OK_NO") == 0) { - this.getLoginController().setRenderBpmData(true); - } else if (value.compareTo("OK") == 0) { - this.bpmDataStatus = "A"; - } - return; - } - - this.mfilters.put(param[0].trim(), param[1]); - } - - /** - * Funcion que verifica que exista al menos un filtro de busqueda - * - * @return boolean - */ - public boolean existAtLeastOneFilterValue() { - Set keys = this.mfilters.keySet(); - for (String key : keys) { - String val = this.mfilters.get(key); - if (!key.equals("pk.dateto")) { - if ((val != null) && !val.isEmpty()) { - return true; - } - } - } - return false; - } - - /** - * Metodo que agrega la fecha hasta (dateto) al mapa de filtros - * - * @throws Exception - */ - public void addFilterDateto() throws Exception { - this.mfilters.put("pk.dateto", "2999-12-31"); - } - - /** - * Crea una instancia de una entidad T y marca el registro como nuevo. - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void create() throws Exception { - this.record = (T) Class.forName(this.classType.getName()).newInstance(); - BeanManager.setBeanAttributeValue(this.record, "isnew", true); - try { - BeanManager.setBeanAttributeValue(this.record, "pk", - Class.forName(this.classType.getName() + "Key") - .newInstance()); - } catch (Exception e) { - } - } - - /** - * Metodo a ser sobreescrito en los controladores. En este método a - * sobrescribir se debe colocar la lógica para invocar al core y - * guardar los registros. - */ - public void save() { - }; - - /** - * Adiciona datos de un registro a ser eliminado de la base de datos. - * - * @param bean - * Objeto a eliminar. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void remove() throws Exception { - if (this.record == null) { - return; - } - this.removefromlista(this.lrecord, this.record); - if (!this.record.isnew) { - this.ldeleted.add(this.record); - } - this.removefromlista((List) this.lnew, this.record); - this.removefromlista((List) this.lupdated, this.record); - } - - /** - * Elimina un registro de la lista comparando el rowkey del registro. - * - * @param ldata - * Lista de registros a buscar y remover un objeto. - * @param abstractbean - * Bean a remover de la lista. - * @throws Exception - */ - private void removefromlista(List ldata, T abstractbean) - throws Exception { - int size = ldata.size(); - for (int i = 0; i < size; i++) { - if (ldata.get(i).rowkey() == abstractbean.rowkey()) { - ldata.remove(i); - break; - } - } - } - - /** - * Adiciona un registro a la lista de registros que se va a insertar en la - * base de datos. - * - * @param bean - * Abjeto a insertar. - * @throws Exception - */ - protected void addNew(AbstractDataTransport bean) throws Exception { - if (!this.lnew.contains(bean)) { - this.lnew.add(bean); - } - } - - /** - * Adiciona un registro a la lista de registros que se va a actualizar en la - * base de datos. - * - * @param bean - * @throws Exception - */ - protected void addUpdated(AbstractDataTransport bean) throws Exception { - if (!this.lupdated.contains(bean)) { - this.lupdated.add(bean); - } - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void update() throws Exception { - AbstractDataTransport bean = this.record; - if (bean == null) { - return; - } - if (bean.isnew) { - if (!this.exist(bean, (List) this.lrecord)) { - this.addNew(bean); - this.lrecord.add((T) bean); - } - } else { - this.addUpdated(bean); - } - } - - /** - * - * @param bean - * @param ldata - * @return - * @throws Exception - */ - private boolean exist(AbstractDataTransport bean, - List ldata) throws Exception { - for (AbstractDataTransport obj : ldata) { - if (obj.rowkey() == bean.rowkey()) { - return true; - } - } - return false; - } - - /** - * Metodo que tiene que sobreescribir las clases que trabajen con el core. - * En este metodo se debe implementar la consulta de las las tablas que se - * requieran - */ - protected abstract void querydatabase(); - - /** - * Ejecuta consulta de datos en la base para la tabla. - * - * @throws Exception - */ - public void query() throws Exception { - this.queryType = "Q"; - if (this.validateQuery()) { - this.page = 0; - this.querydatabase(); - } - } - - private boolean validateQuery() { - if (this.lupdated.isEmpty() && this.lnew.isEmpty() - && this.ldeleted.isEmpty()) { - return true; - } else { - RequestContext.getCurrentInstance().execute( - "PF('queryConfirmDialog').show()"); - } - return false; - } - - public void forcedQuery() throws Exception { - this.lupdated.clear(); - this.lnew.clear(); - this.ldeleted.clear(); - this.lrecord.clear(); - if (this.queryType == null) { - this.queryType = "default"; // valor dummy para que no de null - // pointer exception en el switch - } - switch (this.queryType) { - case "P": - this.previous(); - break; - case "N": - this.next(); - break; - default: - this.query(); - break; - } - } - - /** - * Ejecuta consulta de la sigueinte pagina. - * - * @throws Exception - */ - public void next() throws Exception { - this.queryType = "N"; - if (this.validateQuery()) { - this.page = ((this.page > 0) && (this.lrecord.size() == 0)) ? this.page - : this.page + this.recperpage; - this.querydatabase(); - } - } - - /** - * Ejecuta consulta de la pagina anterior. - * - * @throws Exception - */ - public void previous() throws Exception { - this.queryType = "P"; - if (this.validateQuery()) { - this.page = this.page - this.recperpage; - this.page = this.page < 0 ? 0 : this.page; - this.querydatabase(); - } - } - - /** - * Entrega el dto de save, con los registros a insertar, eliminar, modificar - * para una tabla. - * - * @param beanname - * Nombre del bean. - * @return - * @throws Exception - */ - public DtoSave getDtoSave() throws Exception { - DtoSave dto = new DtoSave(); - dto.setBeanname(this.classType.getName()); - for (AbstractDataTransport bean : this.lnew) { - // para que siempre fije el valor del rowkey. - bean.rowkey(); - bean.getModifiedData().put("isnew", "1"); - } - dto.addNew(this.lnew); - dto.addDeleted(this.ldeleted); - // Quita el bean original de los modificados y marca el bean para - // actualizacion. - for (AbstractDataTransport mod : this.lupdated) { - if (mod.get("ORIGINALBEAN") == null) { - continue; - } - mod.isupdated = false; - AbstractDataTransport boriginal = (AbstractDataTransport) mod - .get("ORIGINALBEAN"); - HashMap modificados = BeanManager.getModified( - boriginal, mod); - if (!modificados.isEmpty()) { - mod.isupdated = true; - // solo si existe cambios se adiciona a la lista de modificado. - dto.getLupdated().add(modificados); - } - } - // adiciona campos sueltos. - return dto; - } - - /** - * Entrega el dto de save, con los registros a insertar, eliminar, modificar - * para una tabla. - * - * @param isForm - * V si es formulario. - * @return dto - * @throws Exception - */ - public DtoSave getDtoSave(boolean isForm) throws Exception { - DtoSave dto = this.getDtoSave(); - dto.setIsForm(isForm); - return dto; - } - - /** - * Metodo que retorna un objeto de tipo DtoQuery que sirve para realizar - * consultas - * - * @param isMultirecord - * @return - * @throws Exception - */ - public DtoQuery getDtoQuery(boolean isMultirecord) throws Exception { - DtoQuery dto = new DtoQuery(this.classType.getName(), this.page, - this.recperpage, isMultirecord, this.getMfilters()); - return dto; - } - - /** - * Metodo usado despues de grabar exitosamente los datos en la base - * - * @param response - * @throws Exception - */ - public void postCommit(Response response) throws Exception { - this.postCommitGeneric(response, this.beanalias); - } - - /** - * Si el commit se relaliza con exito, suma 1 al campo optlock para poder - * hacer un nuevo mantenimiento del registro. Completa las claves primarias - * de los registros nuevos - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - protected void postCommitGeneric(Response response, String alias) - throws Exception { - for (AbstractDataTransport bean : this.lupdated) { - this.postcommitbean(bean); - } - // marca el registro como no nuevo va antes de actualizar pk. - for (AbstractDataTransport bean : this.lnew) { - bean.isnew = false; - this.postcommitbean(bean); - } - // Actualiza pk de los registros nuevos. - if (response.get(alias) != null) { - List> lresp = (List>) response - .get(alias); - for (Map m : lresp) { - this.updatePkOnRecords(m); - } - } - // Encera registros nuevos. - this.lnew.clear(); - this.ldeleted.clear(); - this.lupdated.clear(); - } - - /** - * Metodo que maneja la version de registros de una entidad - * - * @param bean - * @throws Exception - */ - private void postcommitbean(AbstractDataTransport bean) throws Exception { - Integer optlock = BeanManager.getRecordversion(bean); - if (optlock != null) { - if (bean.isupdated) { - BeanManager.setBeanAttributeValue(bean, "recordversion", - optlock + 1); - } else { - BeanManager.setBeanAttributeValue(bean, "recordversion", - optlock); - } - } - this.postQuery(bean); - } - - /** - * Metodo que actualiza los pk's de los registros nuevos - * - * @param m - * @throws Exception - */ - private void updatePkOnRecords(Map m) throws Exception { - String id = m.get("rowkey").toString(); - AbstractDataTransport bean = this.getNewBeanById(Integer.valueOf(id)); - if (bean == null) { - return; - } - Set s = m.keySet(); - for (String key : s) { - if (key.equals("rowkey")) { - continue; - } - BeanManager.setBeanAttributeValue(bean, key.replace("pk_", "pk."), - m.get(key)); - } - } - - /** - * Metodo que obtiene una entidad de la lista de registros nuevos por id - * - * @param id - * @return - * @throws Exception - */ - private AbstractDataTransport getNewBeanById(Integer id) throws Exception { - AbstractDataTransport bean = null; - for (AbstractDataTransport obj : this.lnew) { - if (obj.rowkey() == id) { - bean = obj; - } - } - return bean; - } - - /** - * Metodo que clona una lista de entidades - * - * @param lbeans - * @throws Exception - */ - @SuppressWarnings("rawtypes") - public void postQuery(List lbeans) throws Exception { - for (Object bean : lbeans) { - if (bean instanceof AbstractDataTransport) { - this.postQuery((AbstractDataTransport) bean); - } - } - } - - /** - * Metodo que clona una entidad y lo coloca en un mapa dentro de la misma - * para poder dar mantenimiento - * - * @param bean - * @throws Exception - */ - public void postQuery(AbstractDataTransport bean) throws Exception { - if (bean == null) { - return; - } - bean.isupdated = false; // Se cambia a true cuando arma el mensaje que - // se envia al core. - AbstractDataTransport boriginal = (AbstractDataTransport) bean - .cloneMe(); - bean.put("ORIGINALBEAN", boriginal); - } - - /** - * Metodo que limplia las listas de objetos - */ - public void clearAll() { - this.mfilelds.clear(); - this.mfilters.clear(); - this.lupdated.clear(); - this.lnew.clear(); - this.ldeleted.clear(); - this.lrecord.clear(); - } - - /** - * Metodo que obtiene el valor de un parametro enviado desde la p´gina - * - * @param key - * @return - * @throws Exception - */ - public String getRequestParameter(String key) throws Exception { - return FacesContext.getCurrentInstance().getExternalContext() - .getRequestParameterMap().get(key); - } - - /** - * Metodo que retorna un mapa de parametros enviados desde una pagina - * - * @return - * @throws Exception - */ - public Map getRequestParameterMap() throws Exception { - return FacesContext.getCurrentInstance().getExternalContext() - .getRequestParameterMap(); - } - - /** - * Metodo usado para descargar archivos - * - * @param fileByte - * @param contentType - * @param extension - */ - public void downloadFile(byte[] fileByte, String contentType, - String extension) { - try { - int read = 0; - byte[] bytes = new byte[1024]; - - InputStream input = new ByteArrayInputStream(fileByte); - FacesContext context = FacesContext.getCurrentInstance(); - ExternalContext external = context.getExternalContext(); - HttpServletResponse response = (HttpServletResponse) external - .getResponse(); - response.setContentType(contentType); - response.setHeader("Content-Disposition", - "attachment; filename=fileDownload." + extension); - ServletOutputStream out = response.getOutputStream(); - - while ((read = input.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - out.flush(); - out.close(); - context.responseComplete(); - } catch (Exception ex) { - - } - } - - /** - * Entrega el valor de: recperpage - * - * @return Integer - */ - public Integer getRecperpage() { - return this.recperpage; - } - - /** - * Fija el valor de: recperpage - * - * @param Valor - * a fijar en el atributo. - */ - public void setRecperpage(Integer recperpage) { - this.recperpage = recperpage; - } - - /** - * Entrega el valor de: callerhelper - * - * @return CallerHelper - */ - public CallerHelper getCallerhelper() { - return this.callerhelper; - } - - /** - * Fija el valor de: callerhelper - * - * @param Valor - * a fijar en el atributo. - */ - public void setCallerhelper(CallerHelper callerhelper) { - this.callerhelper = callerhelper; - } - - /** - * Entrega el valor de: mfilters - * - * @return Map - */ - public Map getMfilters() { - return this.mfilters; - } - - /** - * Fija el valor de: mfilters - * - * @param Valor - * a fijar en el atributo. - */ - public void setMfilters(Map mfilters) { - this.mfilters = mfilters; - } - - public void addFilter(String field, String value) { - this.mfilters.put(field, value); - } - - /** - * Entrega el valor de: mfilelds - * - * @return Map - */ - public Map getMfilelds() { - return this.mfilelds; - } - - /** - * Fija el valor de: mfilelds - * - * @param Valor - * a fijar en el atributo. - */ - public void setMfilelds(Map mfilelds) { - this.mfilelds = mfilelds; - } - - /** - * Entrega el valor de: decimal - * - * @return Integer - */ - public Integer getDecimal() { - return this.decimal; - } - - /** - * Fija el valor de: decimal - * - * @param Valor - * a fijar en el atributo. - */ - public void setDecimal(Integer decimal) { - this.decimal = decimal; - } - - /** - * Entrega el valor de: numberformat - * - * @return String - */ - public String getNumberformat() { - return this.numberformat; - } - - /** - * Fija el valor de: numberformat - * - * @param Valor - * a fijar en el atributo. - */ - public void setNumberformat(String numberformat) { - this.numberformat = numberformat; - } - - /** - * Entrega el valor de: forceautoquery - * - * @return boolean - */ - public boolean isForceautoquery() { - return this.forceautoquery; - } - - /** - * Fija el valor de: forceautoquery - * - * @param Valor - * a fijar en el atributo. - */ - public void setForceautoquery(boolean forceautoquery) { - this.forceautoquery = forceautoquery; - } - - /** - * Entrega el valor de: bpmPage - * - * @return boolean - */ - public boolean isBpmPage() { - return this.bpmPage; - } - - /** - * Fija el valor de: bpmPage - * - * @param bpmPage - * Valor a fijar en el atributo - */ - public void setBpmPage(boolean bpmPage) { - this.bpmPage = bpmPage; - } - - /** - * Entrega el valor de: record - * - * @return T - */ - public T getRecord() { - return this.record; - } - - /** - * Fija el valor de: record - * - * @param Valor - * a fijar en el atributo - */ - public void setRecord(T record) { - this.record = record; - } - - /** - * Entrega el valor de: lrecord - * - * @return List - */ - public List getLrecord() { - return this.lrecord; - } - - /** - * Fija el valor de: lrecord - * - * @param Valor - * a fijar en el atributo - */ - public void setLrecord(List lrecord) { - this.lrecord = lrecord; - } - - /** - * Entrega el valor de: beanalias - * - * @return String - */ - public String getBeanalias() { - return this.beanalias; - } - - /** - * Entrega el valor de: beanalias - * - * @return String - */ - public void setBeanalias(String beanalias) { - this.beanalias = beanalias; - } - - /** - * Entrega el valor de: showRow - * - * @return boolean - */ - public boolean isShowRow() { - return this.showRow; - } - - /** - * Fija el valor de: showRow - * - * @param Valor - * a fijar en el atributo. - */ - public void setShowRow(boolean showRow) { - this.showRow = showRow; - } - - public boolean isNewRow() { - return this.newRow; - } - - public void setNewRow(boolean newRow) { - this.newRow = newRow; - } - - public void addField(String field, Object value) { - this.mfilelds.put(field, value); - } - - public Object getFieldvalue(String field) { - return this.mfilelds.get(field); - } - - /** - * Entrega el valor de: loginController - * - * @return LoginController - */ - public LoginController getLoginController() { - return this.loginController; - } - - /** - * Fija el valor de: loginController - * - * @param Valor - * a fijar en el atributo. - */ - public void setLoginController(LoginController loginController) { - this.loginController = loginController; - } - - /** - * Entrega el valor de: bpmDataStatus - * - * @return String - */ - public String getBpmDataStatus() { - return bpmDataStatus; - } - - /** - * Fija el valor de: bpmDataStatus - * - * @param bpmDataStatus - * Valor a fijar en el atributo. - */ - public void setBpmDataStatus(String bpmDataStatus) { - this.bpmDataStatus = bpmDataStatus; - } - - /** - * Entrega el valor de: bpmDataComment - * - * @return String - */ - public String getBpmDataComment() { - return bpmDataComment; - } - - /** - * Fija el valor de: bpmDataComment - * - * @param bpmDataComment - * Valor a fijar en el atributo. - */ - public void setBpmDataComment(String bpmDataComment) { - this.bpmDataComment = bpmDataComment; - } - - /** - * Metodo que se encarga de encerar datos de consultas, mantenimeintos y - * datos adicionales de un request, se utliza para iniciar flujos de un bpm. - * - * @param request - * Objeto a limpiar informacion. - * @throws Exception - */ - public void cleanRequest(Request request) throws Exception { - request.modifiedData().clear(); - if (request.getSaveTables() != null) { - request.getSaveTables().clear(); - } - if (request.getQueryTables() != null) { - request.getQueryTables().clear(); - } - - } - /** - * Entrega el password del firmante - * @return signaturePass - */ - public String getSignaturePass() { - return signaturePass; - } - /** - * Fija el password del firmante - * @param signaturePass - */ - public void setSignaturePass(String signaturePass) { - this.signaturePass = signaturePass; - } - /** - * Entrega el motivo del firmado - * @return - */ - public String getSignatureComments() { - return signatureComments; - } - /** - * Fija el motivo del firmado - * @param signatureComments - */ - public void setSignatureComments(String signatureComments) { - this.signatureComments = signatureComments; - } - /** - * Entrega el valor del mensaje - * @return message - */ - public String getMessage() { - return message; - } - /** - * Fija el valor del mensaje - * @param message - */ - public void setMessage(String message) { - this.message = message; - } - /** - * Metodo que comprueba las firmas de un documento - * @param codSol - * @param codEmp - * @param nomTipo - */ - public boolean checkSignature(String codSol, String codEmp, String nomTipo) { - int count=0; - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - if(originalDocTemplate==null){ - return false; - } - List signs = CertificateUtils.obtainNameSigns(originalDocTemplate); - if (signs!=null && signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - ++count; - } - } - if(count==0) - { - return true; - } - } - return false; - } - - /** - * Metodo para el firmado electronico de documentos - * - * @param codSol - * - Codigo de la solicitud - * @param codEmp - * - Codigo del empleado - * @param nomTipo - * - Tipo de documento (solicitud, informe) - */ - /*public void signatureDocument(String codSol, String codEmp, String nomTipo, - int company, String usuario) { - - String pathStoreCertificates= ParametersController.find(EnumParametros.PATH_CERTIFICADO_BCE.getCodigo(),(company+"")).getTextvalue(); - String nomCert = CertificadosController.find(usuario).getPk().getIdcertificado(); - - - String path =pathStoreCertificates+"/"+nomCert; - - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - List signs = CertificateUtils - .obtainNameSigns(originalDocTemplate); - float llx = 50; - float lly = 210; - float urx = 305; - float ury = 277; - Rectangle rectangle = new Rectangle(llx, lly, urx, ury); - - if (signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - MessageHelper.setMessageWarn("msg_firmaExistente"); - return; - } - } - - } - - InputStream originalDoc = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - byte[] signedDoc = null; - try { - signedDoc = CertificateUtils.sign(originalDoc, usuario, - this.signaturePass, company, this.signatureComments, - this.signatureComments, rectangle, 1, codEmp, - path); - - if (signedDoc != null) { - InputStream uploadDoc = new ByteArrayInputStream(signedDoc); - - AlfrescoController.uploadSignedDocument(uploadDoc, codSol, - nomTipo); - - } - originalDocTemplate.close(); - originalDoc.close(); - } catch (Exception e1) { - - e1.printStackTrace(); - } - - }*/ - - /** - * Metodo para el firmado electronico de documentos; Aprobaciones - * - * @param codSol - * - Codigo de la solicitud - * @param codEmp - * - Codigo del empleado - * @param nomTipo - * - Tipo de documento (solicitud, informe) - */ - /*public void signatureDocumentAPR(String codSol, String codEmp, String nomTipo, - int company, String usuario) { - - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - TfirmCertificado certificado = CertificadosController.find(usuario); - if(certificado == null){ - MessageHelper.setMessageError("msg_certificateNotParam"); - return; - } - String nomCert = certificado.getPk().getIdcertificado(); - String pathStoreCertificates= ParametersController.find(EnumParametros.PATH_CERTIFICADO_BCE.getCodigo(),(company+"")).getTextvalue(); - - String path =pathStoreCertificates+"/"+nomCert; - - List signs = CertificateUtils - .obtainNameSigns(originalDocTemplate); - float llx = 50; - float lly = 210; - float urx = 305; - float ury = 277; - Rectangle rectangle = new Rectangle(llx, lly, urx, ury); - - if (signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - MessageHelper.setMessageWarn("msg_firmaExistente"); - return; - } - } - - InputStream originalDoc = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - byte[] signedDoc = null; - try { - signedDoc = CertificateUtils.sign(originalDoc, usuario, - this.signaturePass, company, this.signatureComments, - this.signatureComments, rectangle, 1, codEmp, - path); - - if (signedDoc != null) { - InputStream uploadDoc = new ByteArrayInputStream(signedDoc); - - AlfrescoController.uploadSignedDocument(uploadDoc, codSol, - nomTipo); - - } - originalDocTemplate.close(); - originalDoc.close(); - } catch (Exception e1) { - - e1.printStackTrace(); - } - - } - else - { - MessageHelper.setMessageWarn("msg_sinFirma"); - return; - } - - }*/ - /** - * Metodo que comprueba las firmas de un documento - * @param codSol - * @param codEmp - * @param nomTipo - */ - public void signature(String codSol, String nomTipo, String tipo) { - int count=0; - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - if(originalDocTemplate==null){ - this.message = MsgGeneral.getProperty("msg_solicitudeNotSign"); - return; - } - List signs = CertificateUtils.obtainNameSigns(originalDocTemplate); - if (signs!=null && !signs.isEmpty()) { - this.message = tipo.equals("S")?MsgGeneral.getProperty("msg_solicitudeSign"):MsgGeneral.getProperty("msg_informSign"); - } - this.message = tipo.equals("S")?MsgGeneral.getProperty("msg_solicitudeNotSign"):MsgGeneral.getProperty("msg_informNotSign"); - } - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - - Request request = callerhelper.getRequest(); - this.cleanRequest(request); - - request.modifiedData().put("csolicitud", "123456"); - request.modifiedData().put("isnew", "Y"); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - this.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment); - //request.modifiedData().put("validate", "Y"); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.svn-base deleted file mode 100644 index f5f4be8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/AbstractController.java.svn-base +++ /dev/null @@ -1,1355 +0,0 @@ -package com.fp.frontend.controller; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.faces.bean.ManagedProperty; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.BeanManager; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.firmas.rules.common.CertificateUtils; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; - -/** - * Clase principal para los controladores - * - * @author jvaca - * @author amerchan Cambio atributos, metodos genericos - * - * @param - */ -public abstract class AbstractController - implements Serializable { - - private static final long serialVersionUID = 1L; - - /** - * Registro a ser usado cuando se crea uno nuevo o para edicion - */ - protected T record; - - /** - * Lista de registros a presentar en una tabla de mantenimiento - */ - protected List lrecord; - - /** - * Identificador para obtener la lista de registros del mapa de resultados - * del core - */ - protected String beanalias; - - /** - * Tipo de dato de la entidad que maneja el controlador - */ - protected Class classType; - - // Valores posibles Q(query), P(previous), N(next) - private String queryType; - - /** - * Numero de pagina o registro desde el cual se va a ejecutar la consulta. - */ - protected Integer page = 0; - - /** - * Numero de registros por pagina a consultar. - */ - protected Integer recperpage = 10; - - /** - * Crease utilitaria, para ejecutar una accion en el core, ejecmpo consulta, - * mantenimiento. - */ - protected CallerHelper callerhelper; - - /** - * Lista de registros eliminados associates a una tabla o entitybean. - */ - private final List ldeleted = new ArrayList<>(); - - /** - * Lista de registros nuevos asociados a una tabla o entitybean. - */ - private final List lnew = new ArrayList<>(); - - /** - * Lista de registros modificados asociados a una tabla o entitybean. - */ - private final List lupdated = new ArrayList<>(); - - /** - * Map que contiene los criterios de busqueda de una tabla. - */ - private Map mfilters = new HashMap(); - - /** - * Map que contiene campos extras como descripciones. - */ - private Map mfilelds = new HashMap(); - - /** - * Numero de decimales a manejar en las pantallas. - */ - private Integer decimal = 2; - - /** - * Formato de numeros a utilizar en los outputtext. - */ - private String numberformat = "#,##,##0.000000"; - - /** - * Variable que indica si se ejecuta el autoquery, Ej: en el lov de personas - * deberia ser falso. - */ - protected boolean forceautoquery = true; - - /** - * Variable que indica si la pagina es del BPM y ademas si tiene parametros - * para pegar en la pagina - */ - boolean bpmPage = false; - - /** - * Para indicar que el registro se va a visualizar. - */ - private boolean showRow; - - /** - * Para indicar que se va a insertar un nuevo registro. - */ - private boolean newRow; - - /** - * Id de la tarea de jbpm a ejecutar. - */ - protected String tid; - - /** - * Codigo de estatus de bpm A aprobano, D negado - */ - protected String bpmDataStatus; - - /** - * Cometario de ejecucion de una tarea. - */ - protected String bpmDataComment; - /** - * Atributo para la contrasena de la firma - */ - private String signaturePass; - /** - * Atributo para el comentario de la firma - */ - private String signatureComments; - /* - * Atributo para el mensaje de la solicitud - */ - private String message; - /** - * Referencia al controlador de session - */ - @ManagedProperty(value = "#{loginController}") - private LoginController loginController; - - /** - * Constructor del controlador - * - * @param type - * Tipo de clase - * @throws Exception - */ - protected AbstractController(Class type) throws Exception { - this.classType = type; - if (this.callerhelper == null) { - this.callerhelper = new CallerHelper( - FacesContext.getCurrentInstance()); - } - } - - /** - * Metodo que verifica si la pagina es de autoconsulta y si debe pegar - * valores del BPM - */ - public void startQuery() { - try { - this.bpmPage = this.pasteBpmScreenParameters(); - if (!this.bpmPage && this.forceautoquery - && this.callerhelper.isautoquery()) { - this.query(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que verifica si la pagina es de BPM, pega los valores en los - * filtros y realiza la consulta de la p´gina - * - * @return - * @throws Exception - */ - public boolean pasteBpmScreenParameters() throws Exception { - this.getLoginController().setRenderBpmData(false); - String bpmParamsJson = this.getRequestParameter("bpmParams"); - if (bpmParamsJson == null) { - return false; - } - bpmParamsJson = bpmParamsJson.substring(1, bpmParamsJson.length() - 1); - if (!bpmParamsJson.isEmpty()) { - String[] bpmParams = bpmParamsJson.split(","); - for (String item : bpmParams) { - String[] param = item.split("="); - this.manageBpmParameter(param); - } - return true; - } - return false; - } - - private void manageBpmParameter(String[] param) throws Exception { - String key = param[0].trim(); - String value = param[1]; - if (key.equals("null")) { - return; - } - if (key.equals("TID")) { - tid = param[1]; - return; - } - if (key.equals("KIND")) { - if (value.compareTo("OK_NO") == 0) { - this.getLoginController().setRenderBpmData(true); - } else if (value.compareTo("OK") == 0) { - this.bpmDataStatus = "A"; - } - return; - } - - this.mfilters.put(param[0].trim(), param[1]); - } - - /** - * Funcion que verifica que exista al menos un filtro de busqueda - * - * @return boolean - */ - public boolean existAtLeastOneFilterValue() { - Set keys = this.mfilters.keySet(); - for (String key : keys) { - String val = this.mfilters.get(key); - if (!key.equals("pk.dateto")) { - if ((val != null) && !val.isEmpty()) { - return true; - } - } - } - return false; - } - - /** - * Metodo que agrega la fecha hasta (dateto) al mapa de filtros - * - * @throws Exception - */ - public void addFilterDateto() throws Exception { - this.mfilters.put("pk.dateto", "2999-12-31"); - } - - /** - * Crea una instancia de una entidad T y marca el registro como nuevo. - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void create() throws Exception { - this.record = (T) Class.forName(this.classType.getName()).newInstance(); - BeanManager.setBeanAttributeValue(this.record, "isnew", true); - try { - BeanManager.setBeanAttributeValue(this.record, "pk", - Class.forName(this.classType.getName() + "Key") - .newInstance()); - } catch (Exception e) { - } - } - - /** - * Metodo a ser sobreescrito en los controladores. En este método a - * sobrescribir se debe colocar la lógica para invocar al core y - * guardar los registros. - */ - public void save() { - }; - - /** - * Adiciona datos de un registro a ser eliminado de la base de datos. - * - * @param bean - * Objeto a eliminar. - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void remove() throws Exception { - if (this.record == null) { - return; - } - this.removefromlista(this.lrecord, this.record); - if (!this.record.isnew) { - this.ldeleted.add(this.record); - } - this.removefromlista((List) this.lnew, this.record); - this.removefromlista((List) this.lupdated, this.record); - } - - /** - * Elimina un registro de la lista comparando el rowkey del registro. - * - * @param ldata - * Lista de registros a buscar y remover un objeto. - * @param abstractbean - * Bean a remover de la lista. - * @throws Exception - */ - private void removefromlista(List ldata, T abstractbean) - throws Exception { - int size = ldata.size(); - for (int i = 0; i < size; i++) { - if (ldata.get(i).rowkey() == abstractbean.rowkey()) { - ldata.remove(i); - break; - } - } - } - - /** - * Adiciona un registro a la lista de registros que se va a insertar en la - * base de datos. - * - * @param bean - * Abjeto a insertar. - * @throws Exception - */ - protected void addNew(AbstractDataTransport bean) throws Exception { - if (!this.lnew.contains(bean)) { - this.lnew.add(bean); - } - } - - /** - * Adiciona un registro a la lista de registros que se va a actualizar en la - * base de datos. - * - * @param bean - * @throws Exception - */ - protected void addUpdated(AbstractDataTransport bean) throws Exception { - if (!this.lupdated.contains(bean)) { - this.lupdated.add(bean); - } - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void update() throws Exception { - AbstractDataTransport bean = this.record; - if (bean == null) { - return; - } - if (bean.isnew) { - if (!this.exist(bean, (List) this.lrecord)) { - this.addNew(bean); - this.lrecord.add((T) bean); - } - } else { - this.addUpdated(bean); - } - } - - /** - * - * @param bean - * @param ldata - * @return - * @throws Exception - */ - private boolean exist(AbstractDataTransport bean, - List ldata) throws Exception { - for (AbstractDataTransport obj : ldata) { - if (obj.rowkey() == bean.rowkey()) { - return true; - } - } - return false; - } - - /** - * Metodo que tiene que sobreescribir las clases que trabajen con el core. - * En este metodo se debe implementar la consulta de las las tablas que se - * requieran - */ - protected abstract void querydatabase(); - - /** - * Ejecuta consulta de datos en la base para la tabla. - * - * @throws Exception - */ - public void query() throws Exception { - this.queryType = "Q"; - if (this.validateQuery()) { - this.page = 0; - this.querydatabase(); - } - } - - private boolean validateQuery() { - if (this.lupdated.isEmpty() && this.lnew.isEmpty() - && this.ldeleted.isEmpty()) { - return true; - } else { - RequestContext.getCurrentInstance().execute( - "PF('queryConfirmDialog').show()"); - } - return false; - } - - public void forcedQuery() throws Exception { - this.lupdated.clear(); - this.lnew.clear(); - this.ldeleted.clear(); - this.lrecord.clear(); - if (this.queryType == null) { - this.queryType = "default"; // valor dummy para que no de null - // pointer exception en el switch - } - switch (this.queryType) { - case "P": - this.previous(); - break; - case "N": - this.next(); - break; - default: - this.query(); - break; - } - } - - /** - * Ejecuta consulta de la sigueinte pagina. - * - * @throws Exception - */ - public void next() throws Exception { - this.queryType = "N"; - if (this.validateQuery()) { - this.page = ((this.page > 0) && (this.lrecord.size() == 0)) ? this.page - : this.page + this.recperpage; - this.querydatabase(); - } - } - - /** - * Ejecuta consulta de la pagina anterior. - * - * @throws Exception - */ - public void previous() throws Exception { - this.queryType = "P"; - if (this.validateQuery()) { - this.page = this.page - this.recperpage; - this.page = this.page < 0 ? 0 : this.page; - this.querydatabase(); - } - } - - /** - * Entrega el dto de save, con los registros a insertar, eliminar, modificar - * para una tabla. - * - * @param beanname - * Nombre del bean. - * @return - * @throws Exception - */ - public DtoSave getDtoSave() throws Exception { - DtoSave dto = new DtoSave(); - dto.setBeanname(this.classType.getName()); - for (AbstractDataTransport bean : this.lnew) { - // para que siempre fije el valor del rowkey. - bean.rowkey(); - bean.getModifiedData().put("isnew", "1"); - } - dto.addNew(this.lnew); - dto.addDeleted(this.ldeleted); - // Quita el bean original de los modificados y marca el bean para - // actualizacion. - for (AbstractDataTransport mod : this.lupdated) { - if (mod.get("ORIGINALBEAN") == null) { - continue; - } - mod.isupdated = false; - AbstractDataTransport boriginal = (AbstractDataTransport) mod - .get("ORIGINALBEAN"); - HashMap modificados = BeanManager.getModified( - boriginal, mod); - if (!modificados.isEmpty()) { - mod.isupdated = true; - // solo si existe cambios se adiciona a la lista de modificado. - dto.getLupdated().add(modificados); - } - } - // adiciona campos sueltos. - return dto; - } - - /** - * Entrega el dto de save, con los registros a insertar, eliminar, modificar - * para una tabla. - * - * @param isForm - * V si es formulario. - * @return dto - * @throws Exception - */ - public DtoSave getDtoSave(boolean isForm) throws Exception { - DtoSave dto = this.getDtoSave(); - dto.setIsForm(isForm); - return dto; - } - - /** - * Metodo que retorna un objeto de tipo DtoQuery que sirve para realizar - * consultas - * - * @param isMultirecord - * @return - * @throws Exception - */ - public DtoQuery getDtoQuery(boolean isMultirecord) throws Exception { - DtoQuery dto = new DtoQuery(this.classType.getName(), this.page, - this.recperpage, isMultirecord, this.getMfilters()); - return dto; - } - - /** - * Metodo usado despues de grabar exitosamente los datos en la base - * - * @param response - * @throws Exception - */ - public void postCommit(Response response) throws Exception { - this.postCommitGeneric(response, this.beanalias); - } - - /** - * Si el commit se relaliza con exito, suma 1 al campo optlock para poder - * hacer un nuevo mantenimiento del registro. Completa las claves primarias - * de los registros nuevos - * - * @throws Exception - */ - @SuppressWarnings("unchecked") - protected void postCommitGeneric(Response response, String alias) - throws Exception { - for (AbstractDataTransport bean : this.lupdated) { - this.postcommitbean(bean); - } - // marca el registro como no nuevo va antes de actualizar pk. - for (AbstractDataTransport bean : this.lnew) { - bean.isnew = false; - this.postcommitbean(bean); - } - // Actualiza pk de los registros nuevos. - if (response.get(alias) != null) { - List> lresp = (List>) response - .get(alias); - for (Map m : lresp) { - this.updatePkOnRecords(m); - } - } - // Encera registros nuevos. - this.lnew.clear(); - this.ldeleted.clear(); - this.lupdated.clear(); - } - - /** - * Metodo que maneja la version de registros de una entidad - * - * @param bean - * @throws Exception - */ - private void postcommitbean(AbstractDataTransport bean) throws Exception { - Integer optlock = BeanManager.getRecordversion(bean); - if (optlock != null) { - if (bean.isupdated) { - BeanManager.setBeanAttributeValue(bean, "recordversion", - optlock + 1); - } else { - BeanManager.setBeanAttributeValue(bean, "recordversion", - optlock); - } - } - this.postQuery(bean); - } - - /** - * Metodo que actualiza los pk's de los registros nuevos - * - * @param m - * @throws Exception - */ - private void updatePkOnRecords(Map m) throws Exception { - String id = m.get("rowkey").toString(); - AbstractDataTransport bean = this.getNewBeanById(Integer.valueOf(id)); - if (bean == null) { - return; - } - Set s = m.keySet(); - for (String key : s) { - if (key.equals("rowkey")) { - continue; - } - BeanManager.setBeanAttributeValue(bean, key.replace("pk_", "pk."), - m.get(key)); - } - } - - /** - * Metodo que obtiene una entidad de la lista de registros nuevos por id - * - * @param id - * @return - * @throws Exception - */ - private AbstractDataTransport getNewBeanById(Integer id) throws Exception { - AbstractDataTransport bean = null; - for (AbstractDataTransport obj : this.lnew) { - if (obj.rowkey() == id) { - bean = obj; - } - } - return bean; - } - - /** - * Metodo que clona una lista de entidades - * - * @param lbeans - * @throws Exception - */ - @SuppressWarnings("rawtypes") - public void postQuery(List lbeans) throws Exception { - for (Object bean : lbeans) { - if (bean instanceof AbstractDataTransport) { - this.postQuery((AbstractDataTransport) bean); - } - } - } - - /** - * Metodo que clona una entidad y lo coloca en un mapa dentro de la misma - * para poder dar mantenimiento - * - * @param bean - * @throws Exception - */ - public void postQuery(AbstractDataTransport bean) throws Exception { - if (bean == null) { - return; - } - bean.isupdated = false; // Se cambia a true cuando arma el mensaje que - // se envia al core. - AbstractDataTransport boriginal = (AbstractDataTransport) bean - .cloneMe(); - bean.put("ORIGINALBEAN", boriginal); - } - - /** - * Metodo que limplia las listas de objetos - */ - public void clearAll() { - this.mfilelds.clear(); - this.mfilters.clear(); - this.lupdated.clear(); - this.lnew.clear(); - this.ldeleted.clear(); - this.lrecord.clear(); - } - - /** - * Metodo que obtiene el valor de un parametro enviado desde la p´gina - * - * @param key - * @return - * @throws Exception - */ - public String getRequestParameter(String key) throws Exception { - return FacesContext.getCurrentInstance().getExternalContext() - .getRequestParameterMap().get(key); - } - - /** - * Metodo que retorna un mapa de parametros enviados desde una pagina - * - * @return - * @throws Exception - */ - public Map getRequestParameterMap() throws Exception { - return FacesContext.getCurrentInstance().getExternalContext() - .getRequestParameterMap(); - } - - /** - * Metodo usado para descargar archivos - * - * @param fileByte - * @param contentType - * @param extension - */ - public void downloadFile(byte[] fileByte, String contentType, - String extension) { - try { - int read = 0; - byte[] bytes = new byte[1024]; - - InputStream input = new ByteArrayInputStream(fileByte); - FacesContext context = FacesContext.getCurrentInstance(); - ExternalContext external = context.getExternalContext(); - HttpServletResponse response = (HttpServletResponse) external - .getResponse(); - response.setContentType(contentType); - response.setHeader("Content-Disposition", - "attachment; filename=fileDownload." + extension); - ServletOutputStream out = response.getOutputStream(); - - while ((read = input.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - out.flush(); - out.close(); - context.responseComplete(); - } catch (Exception ex) { - - } - } - - /** - * Entrega el valor de: recperpage - * - * @return Integer - */ - public Integer getRecperpage() { - return this.recperpage; - } - - /** - * Fija el valor de: recperpage - * - * @param Valor - * a fijar en el atributo. - */ - public void setRecperpage(Integer recperpage) { - this.recperpage = recperpage; - } - - /** - * Entrega el valor de: callerhelper - * - * @return CallerHelper - */ - public CallerHelper getCallerhelper() { - return this.callerhelper; - } - - /** - * Fija el valor de: callerhelper - * - * @param Valor - * a fijar en el atributo. - */ - public void setCallerhelper(CallerHelper callerhelper) { - this.callerhelper = callerhelper; - } - - /** - * Entrega el valor de: mfilters - * - * @return Map - */ - public Map getMfilters() { - return this.mfilters; - } - - /** - * Fija el valor de: mfilters - * - * @param Valor - * a fijar en el atributo. - */ - public void setMfilters(Map mfilters) { - this.mfilters = mfilters; - } - - public void addFilter(String field, String value) { - this.mfilters.put(field, value); - } - - /** - * Entrega el valor de: mfilelds - * - * @return Map - */ - public Map getMfilelds() { - return this.mfilelds; - } - - /** - * Fija el valor de: mfilelds - * - * @param Valor - * a fijar en el atributo. - */ - public void setMfilelds(Map mfilelds) { - this.mfilelds = mfilelds; - } - - /** - * Entrega el valor de: decimal - * - * @return Integer - */ - public Integer getDecimal() { - return this.decimal; - } - - /** - * Fija el valor de: decimal - * - * @param Valor - * a fijar en el atributo. - */ - public void setDecimal(Integer decimal) { - this.decimal = decimal; - } - - /** - * Entrega el valor de: numberformat - * - * @return String - */ - public String getNumberformat() { - return this.numberformat; - } - - /** - * Fija el valor de: numberformat - * - * @param Valor - * a fijar en el atributo. - */ - public void setNumberformat(String numberformat) { - this.numberformat = numberformat; - } - - /** - * Entrega el valor de: forceautoquery - * - * @return boolean - */ - public boolean isForceautoquery() { - return this.forceautoquery; - } - - /** - * Fija el valor de: forceautoquery - * - * @param Valor - * a fijar en el atributo. - */ - public void setForceautoquery(boolean forceautoquery) { - this.forceautoquery = forceautoquery; - } - - /** - * Entrega el valor de: bpmPage - * - * @return boolean - */ - public boolean isBpmPage() { - return this.bpmPage; - } - - /** - * Fija el valor de: bpmPage - * - * @param bpmPage - * Valor a fijar en el atributo - */ - public void setBpmPage(boolean bpmPage) { - this.bpmPage = bpmPage; - } - - /** - * Entrega el valor de: record - * - * @return T - */ - public T getRecord() { - return this.record; - } - - /** - * Fija el valor de: record - * - * @param Valor - * a fijar en el atributo - */ - public void setRecord(T record) { - this.record = record; - } - - /** - * Entrega el valor de: lrecord - * - * @return List - */ - public List getLrecord() { - return this.lrecord; - } - - /** - * Fija el valor de: lrecord - * - * @param Valor - * a fijar en el atributo - */ - public void setLrecord(List lrecord) { - this.lrecord = lrecord; - } - - /** - * Entrega el valor de: beanalias - * - * @return String - */ - public String getBeanalias() { - return this.beanalias; - } - - /** - * Entrega el valor de: beanalias - * - * @return String - */ - public void setBeanalias(String beanalias) { - this.beanalias = beanalias; - } - - /** - * Entrega el valor de: showRow - * - * @return boolean - */ - public boolean isShowRow() { - return this.showRow; - } - - /** - * Fija el valor de: showRow - * - * @param Valor - * a fijar en el atributo. - */ - public void setShowRow(boolean showRow) { - this.showRow = showRow; - } - - public boolean isNewRow() { - return this.newRow; - } - - public void setNewRow(boolean newRow) { - this.newRow = newRow; - } - - public void addField(String field, Object value) { - this.mfilelds.put(field, value); - } - - public Object getFieldvalue(String field) { - return this.mfilelds.get(field); - } - - /** - * Entrega el valor de: loginController - * - * @return LoginController - */ - public LoginController getLoginController() { - return this.loginController; - } - - /** - * Fija el valor de: loginController - * - * @param Valor - * a fijar en el atributo. - */ - public void setLoginController(LoginController loginController) { - this.loginController = loginController; - } - - /** - * Entrega el valor de: bpmDataStatus - * - * @return String - */ - public String getBpmDataStatus() { - return bpmDataStatus; - } - - /** - * Fija el valor de: bpmDataStatus - * - * @param bpmDataStatus - * Valor a fijar en el atributo. - */ - public void setBpmDataStatus(String bpmDataStatus) { - this.bpmDataStatus = bpmDataStatus; - } - - /** - * Entrega el valor de: bpmDataComment - * - * @return String - */ - public String getBpmDataComment() { - return bpmDataComment; - } - - /** - * Fija el valor de: bpmDataComment - * - * @param bpmDataComment - * Valor a fijar en el atributo. - */ - public void setBpmDataComment(String bpmDataComment) { - this.bpmDataComment = bpmDataComment; - } - - /** - * Metodo que se encarga de encerar datos de consultas, mantenimeintos y - * datos adicionales de un request, se utliza para iniciar flujos de un bpm. - * - * @param request - * Objeto a limpiar informacion. - * @throws Exception - */ - public void cleanRequest(Request request) throws Exception { - request.modifiedData().clear(); - if (request.getSaveTables() != null) { - request.getSaveTables().clear(); - } - if (request.getQueryTables() != null) { - request.getQueryTables().clear(); - } - - } - /** - * Entrega el password del firmante - * @return signaturePass - */ - public String getSignaturePass() { - return signaturePass; - } - /** - * Fija el password del firmante - * @param signaturePass - */ - public void setSignaturePass(String signaturePass) { - this.signaturePass = signaturePass; - } - /** - * Entrega el motivo del firmado - * @return - */ - public String getSignatureComments() { - return signatureComments; - } - /** - * Fija el motivo del firmado - * @param signatureComments - */ - public void setSignatureComments(String signatureComments) { - this.signatureComments = signatureComments; - } - /** - * Entrega el valor del mensaje - * @return message - */ - public String getMessage() { - return message; - } - /** - * Fija el valor del mensaje - * @param message - */ - public void setMessage(String message) { - this.message = message; - } - /** - * Metodo que comprueba las firmas de un documento - * @param codSol - * @param codEmp - * @param nomTipo - */ - public boolean checkSignature(String codSol, String codEmp, String nomTipo) { - int count=0; - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - if(originalDocTemplate==null){ - return false; - } - List signs = CertificateUtils.obtainNameSigns(originalDocTemplate); - if (signs!=null && signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - ++count; - } - } - if(count==0) - { - return true; - } - } - return false; - } - - /** - * Metodo para el firmado electronico de documentos - * - * @param codSol - * - Codigo de la solicitud - * @param codEmp - * - Codigo del empleado - * @param nomTipo - * - Tipo de documento (solicitud, informe) - */ - /*public void signatureDocument(String codSol, String codEmp, String nomTipo, - int company, String usuario) { - - String pathStoreCertificates= ParametersController.find(EnumParametros.PATH_CERTIFICADO_BCE.getCodigo(),(company+"")).getTextvalue(); - String nomCert = CertificadosController.find(usuario).getPk().getIdcertificado(); - - - String path =pathStoreCertificates+"/"+nomCert; - - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - List signs = CertificateUtils - .obtainNameSigns(originalDocTemplate); - float llx = 50; - float lly = 210; - float urx = 305; - float ury = 277; - Rectangle rectangle = new Rectangle(llx, lly, urx, ury); - - if (signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - MessageHelper.setMessageWarn("msg_firmaExistente"); - return; - } - } - - } - - InputStream originalDoc = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - byte[] signedDoc = null; - try { - signedDoc = CertificateUtils.sign(originalDoc, usuario, - this.signaturePass, company, this.signatureComments, - this.signatureComments, rectangle, 1, codEmp, - path); - - if (signedDoc != null) { - InputStream uploadDoc = new ByteArrayInputStream(signedDoc); - - AlfrescoController.uploadSignedDocument(uploadDoc, codSol, - nomTipo); - - } - originalDocTemplate.close(); - originalDoc.close(); - } catch (Exception e1) { - - e1.printStackTrace(); - } - - }*/ - - /** - * Metodo para el firmado electronico de documentos; Aprobaciones - * - * @param codSol - * - Codigo de la solicitud - * @param codEmp - * - Codigo del empleado - * @param nomTipo - * - Tipo de documento (solicitud, informe) - */ - /*public void signatureDocumentAPR(String codSol, String codEmp, String nomTipo, - int company, String usuario) { - - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - TfirmCertificado certificado = CertificadosController.find(usuario); - if(certificado == null){ - MessageHelper.setMessageError("msg_certificateNotParam"); - return; - } - String nomCert = certificado.getPk().getIdcertificado(); - String pathStoreCertificates= ParametersController.find(EnumParametros.PATH_CERTIFICADO_BCE.getCodigo(),(company+"")).getTextvalue(); - - String path =pathStoreCertificates+"/"+nomCert; - - List signs = CertificateUtils - .obtainNameSigns(originalDocTemplate); - float llx = 50; - float lly = 210; - float urx = 305; - float ury = 277; - Rectangle rectangle = new Rectangle(llx, lly, urx, ury); - - if (signs.size() > 0) { - for (String sign : signs) { - if (sign.equalsIgnoreCase(codEmp)) { - MessageHelper.setMessageWarn("msg_firmaExistente"); - return; - } - } - - InputStream originalDoc = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - - byte[] signedDoc = null; - try { - signedDoc = CertificateUtils.sign(originalDoc, usuario, - this.signaturePass, company, this.signatureComments, - this.signatureComments, rectangle, 1, codEmp, - path); - - if (signedDoc != null) { - InputStream uploadDoc = new ByteArrayInputStream(signedDoc); - - AlfrescoController.uploadSignedDocument(uploadDoc, codSol, - nomTipo); - - } - originalDocTemplate.close(); - originalDoc.close(); - } catch (Exception e1) { - - e1.printStackTrace(); - } - - } - else - { - MessageHelper.setMessageWarn("msg_sinFirma"); - return; - } - - }*/ - /** - * Metodo que comprueba las firmas de un documento - * @param codSol - * @param codEmp - * @param nomTipo - */ - public void signature(String codSol, String nomTipo, String tipo) { - int count=0; - InputStream originalDocTemplate = AlfrescoController.getDocumentByCode(codSol, nomTipo, this.getLoginController().getRequest().getCompany().toString()); - if(originalDocTemplate==null){ - this.message = MsgGeneral.getProperty("msg_solicitudeNotSign"); - return; - } - List signs = CertificateUtils.obtainNameSigns(originalDocTemplate); - if (signs!=null && !signs.isEmpty()) { - this.message = tipo.equals("S")?MsgGeneral.getProperty("msg_solicitudeSign"):MsgGeneral.getProperty("msg_informSign"); - } - this.message = tipo.equals("S")?MsgGeneral.getProperty("msg_solicitudeNotSign"):MsgGeneral.getProperty("msg_informNotSign"); - } - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - - Request request = callerhelper.getRequest(); - this.cleanRequest(request); - - request.modifiedData().put("csolicitud", "123456"); - request.modifiedData().put("isnew", "Y"); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - this.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment); - //request.modifiedData().put("validate", "Y"); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.netbeans-base deleted file mode 100644 index 7e79396..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.netbeans-base +++ /dev/null @@ -1,274 +0,0 @@ -package com.fp.frontend.controller; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.HashMap; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import net.sf.jasperreports.engine.JRExporterParameter; -import net.sf.jasperreports.engine.JRParameter; -import net.sf.jasperreports.engine.JasperExportManager; -import net.sf.jasperreports.engine.JasperPrint; -import net.sf.jasperreports.engine.export.JRXlsExporterParameter; -import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; - -import org.primefaces.model.StreamedContent; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.jaspersoft.ireport.jasperserver.JServer; -import com.jaspersoft.ireport.jasperserver.ws.WSClient; -import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceDescriptor; - -/** - * Clase controladora de reportes. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ReportController { - - private StreamedContent streamedContent; - - public ReportController() { - } - - public void execute(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception { - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".pdf"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - OutputStream outputStream = response.getOutputStream(); - - JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); - FacesContext.getCurrentInstance().responseComplete(); - - } - /** - * Método que exporta el reporte a formato .xlsx - * @param path, ruta de acceso al reporte en el servidor jaspersoft - * @param parameters, parámetros que se envían desde el controlador - * @param format, formato de archivo, en este caso xlsx - * @param filename, nombre que tendrá el archivo - * @param logincontroller - * @throws Exception - */ - @SuppressWarnings("deprecation") - public void executeXls(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception { - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".xlsx"); - System.out.println(logincontroller.getRequest().getCompany()+"/modules/"+ path); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - OutputStream ouputStream = response.getOutputStream(); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - JRXlsxExporter exporter = new JRXlsxExporter(); - exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); - exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteArrayOutputStream); - exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); - exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); - exporter.exportReport(); - ouputStream.write(byteArrayOutputStream.toByteArray()); - ouputStream.flush(); - ouputStream.close(); - FacesContext.getCurrentInstance().responseComplete(); - - } - - - - - private JasperPrint executereport(String pathJasper, HashMap parameters) throws Exception { - PropertiesHandler ph = new PropertiesHandler("jasper"); - - JServer server = new JServer(); - //server.setUsername("jasperadmin"); - server.setUsername(ph.getStringValue("jasperserver.user")); - //server.setPassword("jasperadmin"); - server.setPassword(ph.getStringValue("jasperserver.password")); - //server.setUrl("http://localhost:8080/jasperserver/services/repository"); - server.setUrl(ph.getStringValue("jasperserver.repository")); - ResourceDescriptor rd = new ResourceDescriptor(); - rd.setWsType(ResourceDescriptor.TYPE_REPORTUNIT); - rd.setUriString("/maia/" + pathJasper); - WSClient wsClient = server.getWSClient(); - return wsClient.runReport(rd, parameters); - } - - /** - * Recupera un input stream del reporte pdf - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public InputStream jaspertoInputstream(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".pdf"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - - OutputStream outputStream = response.getOutputStream(); - JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); - InputStream inputStream; - - - byte[] byteArray=JasperExportManager.exportReportToPdf(jasperPrint); - inputStream = new ByteArrayInputStream(byteArray); - FacesContext.getCurrentInstance().responseComplete(); - - return inputStream; - - } - - /** - * Recupera un byte array del reporte pdf - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public byte[] jaspertoByteArray(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - JasperExportManager.exportReportToPdfFile(jasperPrint, filename+"."+format); - byte[] byteArray=JasperExportManager.exportReportToPdf(jasperPrint); - return byteArray; - - } - - /** - * Recupera un input stream del reporte xls - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public InputStream jaspertoInputstreamXls(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "xls"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".xls"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - - OutputStream ouputStream = response.getOutputStream(); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - JRXlsxExporter exporter = new JRXlsxExporter(); - exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); - exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteArrayOutputStream); - exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); - exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); - exporter.exportReport(); - ouputStream.write(byteArrayOutputStream.toByteArray()); - byte[] byteArray=byteArrayOutputStream.toByteArray(); - ouputStream.flush(); - ouputStream.close(); - FacesContext.getCurrentInstance().responseComplete(); - - InputStream inputStream; - inputStream = new ByteArrayInputStream(byteArray); - FacesContext.getCurrentInstance().responseComplete(); - return inputStream; - } - - - private void adddefaultparameters(HashMap parameters, LoginController logincontroller) throws Exception { - if (parameters == null) { - parameters = new HashMap(); - } - parameters.put("pathimage", "repo:/maia/" + logincontroller.getRequest().getCompany()+"/image/logo"); - parameters.put("pathstyle", "repo:/maia/" + logincontroller.getRequest().getCompany() + "/style/style"); - - - TgeneAccountingDateBranch accodate = TgeneAccountingDateBranchController.find(logincontroller.getRequest().getCompany()); - parameters.put("workingdate", accodate.getWorkingdate()); - parameters.put("accountingdate", accodate.getAccountingdate()); - //parameters.workingtime = User.getHour(); - parameters.put("companycode", logincontroller.getRequest().getCompany()); - parameters.put("usercode", logincontroller.getRequest().getUser()); - parameters.put("languagecode", logincontroller.getRequest().getLanguage().toUpperCase()); - - } - - /** - * Formato de fechas utilizado en la ejecucion de reportes. - */ - private static SimpleDateFormat FORMATOFECHAREPORTES = new SimpleDateFormat("yyyy-MM-dd"); - - /** - * Entrega un string con la fecha en formato "yyyy-MM-dd" - * @param value Fecha a transformar a un string. - * @return String - */ - public String getFechaReporte(Date value) { - if(value == null){ - return null; - } - return FORMATOFECHAREPORTES.format(value); - } - - public StreamedContent getStreamedContent() { - return streamedContent; - } - - public void setStreamedContent(StreamedContent streamedContent) { - this.streamedContent = streamedContent; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.svn-base deleted file mode 100644 index 7e79396..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/.svn/text-base/ReportController.java.svn-base +++ /dev/null @@ -1,274 +0,0 @@ -package com.fp.frontend.controller; - -import java.io.ByteArrayInputStream; -import java.io.ByteArrayOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.HashMap; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import net.sf.jasperreports.engine.JRExporterParameter; -import net.sf.jasperreports.engine.JRParameter; -import net.sf.jasperreports.engine.JasperExportManager; -import net.sf.jasperreports.engine.JasperPrint; -import net.sf.jasperreports.engine.export.JRXlsExporterParameter; -import net.sf.jasperreports.engine.export.ooxml.JRXlsxExporter; - -import org.primefaces.model.StreamedContent; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; -import com.jaspersoft.ireport.jasperserver.JServer; -import com.jaspersoft.ireport.jasperserver.ws.WSClient; -import com.jaspersoft.jasperserver.api.metadata.xml.domain.impl.ResourceDescriptor; - -/** - * Clase controladora de reportes. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ReportController { - - private StreamedContent streamedContent; - - public ReportController() { - } - - public void execute(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception { - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".pdf"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - OutputStream outputStream = response.getOutputStream(); - - JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); - FacesContext.getCurrentInstance().responseComplete(); - - } - /** - * Método que exporta el reporte a formato .xlsx - * @param path, ruta de acceso al reporte en el servidor jaspersoft - * @param parameters, parámetros que se envían desde el controlador - * @param format, formato de archivo, en este caso xlsx - * @param filename, nombre que tendrá el archivo - * @param logincontroller - * @throws Exception - */ - @SuppressWarnings("deprecation") - public void executeXls(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception { - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".xlsx"); - System.out.println(logincontroller.getRequest().getCompany()+"/modules/"+ path); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - OutputStream ouputStream = response.getOutputStream(); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - JRXlsxExporter exporter = new JRXlsxExporter(); - exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); - exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteArrayOutputStream); - exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); - exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); - exporter.exportReport(); - ouputStream.write(byteArrayOutputStream.toByteArray()); - ouputStream.flush(); - ouputStream.close(); - FacesContext.getCurrentInstance().responseComplete(); - - } - - - - - private JasperPrint executereport(String pathJasper, HashMap parameters) throws Exception { - PropertiesHandler ph = new PropertiesHandler("jasper"); - - JServer server = new JServer(); - //server.setUsername("jasperadmin"); - server.setUsername(ph.getStringValue("jasperserver.user")); - //server.setPassword("jasperadmin"); - server.setPassword(ph.getStringValue("jasperserver.password")); - //server.setUrl("http://localhost:8080/jasperserver/services/repository"); - server.setUrl(ph.getStringValue("jasperserver.repository")); - ResourceDescriptor rd = new ResourceDescriptor(); - rd.setWsType(ResourceDescriptor.TYPE_REPORTUNIT); - rd.setUriString("/maia/" + pathJasper); - WSClient wsClient = server.getWSClient(); - return wsClient.runReport(rd, parameters); - } - - /** - * Recupera un input stream del reporte pdf - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public InputStream jaspertoInputstream(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".pdf"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - - OutputStream outputStream = response.getOutputStream(); - JasperExportManager.exportReportToPdfStream(jasperPrint, outputStream); - InputStream inputStream; - - - byte[] byteArray=JasperExportManager.exportReportToPdf(jasperPrint); - inputStream = new ByteArrayInputStream(byteArray); - FacesContext.getCurrentInstance().responseComplete(); - - return inputStream; - - } - - /** - * Recupera un byte array del reporte pdf - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public byte[] jaspertoByteArray(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "pdf"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - JasperExportManager.exportReportToPdfFile(jasperPrint, filename+"."+format); - byte[] byteArray=JasperExportManager.exportReportToPdf(jasperPrint); - return byteArray; - - } - - /** - * Recupera un input stream del reporte xls - * @param path - * @param parameters - * @param format - * @param filename - * @param logincontroller - * @return - * @throws Exception - */ - public InputStream jaspertoInputstreamXls(String path, HashMap parameters, String format, String filename, LoginController logincontroller) throws Exception{ - this.adddefaultparameters(parameters, logincontroller); - if (format == null) { - format = "xls"; - } - if ((format.compareTo("xls") == 0) || (format.compareTo("xlsx") == 0)) { - parameters.put(JRParameter.IS_IGNORE_PAGINATION, Boolean.TRUE); - } - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".xls"); - JasperPrint jasperPrint = this.executereport(logincontroller.getRequest().getCompany()+"/modules/"+ path, parameters); - - OutputStream ouputStream = response.getOutputStream(); - ByteArrayOutputStream byteArrayOutputStream = new ByteArrayOutputStream(); - JRXlsxExporter exporter = new JRXlsxExporter(); - exporter.setParameter(JRXlsExporterParameter.JASPER_PRINT, jasperPrint); - exporter.setParameter(JRExporterParameter.OUTPUT_STREAM, byteArrayOutputStream); - exporter.setParameter(JRXlsExporterParameter.IS_ONE_PAGE_PER_SHEET, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_DETECT_CELL_TYPE, Boolean.TRUE); - exporter.setParameter(JRXlsExporterParameter.IS_WHITE_PAGE_BACKGROUND, Boolean.FALSE); - exporter.setParameter(JRXlsExporterParameter.IS_REMOVE_EMPTY_SPACE_BETWEEN_ROWS, Boolean.TRUE); - exporter.exportReport(); - ouputStream.write(byteArrayOutputStream.toByteArray()); - byte[] byteArray=byteArrayOutputStream.toByteArray(); - ouputStream.flush(); - ouputStream.close(); - FacesContext.getCurrentInstance().responseComplete(); - - InputStream inputStream; - inputStream = new ByteArrayInputStream(byteArray); - FacesContext.getCurrentInstance().responseComplete(); - return inputStream; - } - - - private void adddefaultparameters(HashMap parameters, LoginController logincontroller) throws Exception { - if (parameters == null) { - parameters = new HashMap(); - } - parameters.put("pathimage", "repo:/maia/" + logincontroller.getRequest().getCompany()+"/image/logo"); - parameters.put("pathstyle", "repo:/maia/" + logincontroller.getRequest().getCompany() + "/style/style"); - - - TgeneAccountingDateBranch accodate = TgeneAccountingDateBranchController.find(logincontroller.getRequest().getCompany()); - parameters.put("workingdate", accodate.getWorkingdate()); - parameters.put("accountingdate", accodate.getAccountingdate()); - //parameters.workingtime = User.getHour(); - parameters.put("companycode", logincontroller.getRequest().getCompany()); - parameters.put("usercode", logincontroller.getRequest().getUser()); - parameters.put("languagecode", logincontroller.getRequest().getLanguage().toUpperCase()); - - } - - /** - * Formato de fechas utilizado en la ejecucion de reportes. - */ - private static SimpleDateFormat FORMATOFECHAREPORTES = new SimpleDateFormat("yyyy-MM-dd"); - - /** - * Entrega un string con la fecha en formato "yyyy-MM-dd" - * @param value Fecha a transformar a un string. - * @return String - */ - public String getFechaReporte(Date value) { - if(value == null){ - return null; - } - return FORMATOFECHAREPORTES.format(value); - } - - public StreamedContent getStreamedContent() { - return streamedContent; - } - - public void setStreamedContent(StreamedContent streamedContent) { - this.streamedContent = streamedContent; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/entries deleted file mode 100644 index 2929747..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/accounting -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ChangeAccoDateControllerController.java -file - - - - -2022-07-28T03:39:54.874596Z -c85dea7b503365d62ed1aa8fba059e98 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4026 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/text-base/ChangeAccoDateControllerController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/text-base/ChangeAccoDateControllerController.java.svn-base deleted file mode 100644 index 58ef4c5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/accounting/.svn/text-base/ChangeAccoDateControllerController.java.svn-base +++ /dev/null @@ -1,134 +0,0 @@ -package com.fp.frontend.controller.accounting; - -import java.util.HashMap; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ChangeAccoDateControllerController extends AbstractController { - - private Map nextDateMap; - - /** - * Constructor - * @throws Exception - */ - public ChangeAccoDateControllerController() throws Exception { - super(TgeneAccountingDateBranch.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.beanalias = "TGENEACCOUNTINGDATEBRANCH"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - Map mcriterios = new HashMap(); - mcriterios.put("pk.branchcode", "0"); - mcriterios.put("pk.companycode", request.getCompany().toString()); - - DtoQuery dto = super.getDtoQuery(false); - dto.addCriterios(mcriterios); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - this.nextDateMap = new HashMap(); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TgeneAccountingDateBranch(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TgeneAccountingDateBranch) resp.get(this.beanalias); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - this.update(); - - DtoSave dtosave = super.getDtoSave(true); - if(!this.nextDateMap.isEmpty()){ - MessageHelper.setMessageError("msg_accodate_already_generated"); - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.nextDateMap = (Map) resp.get("NEXTDATE"); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * @return Retorna el atributo nextDateMap - */ - public Map getNextDateMap() { - return this.nextDateMap; - } - - /** - * @param nextDateMap Parametro a fijar en el atributo nextDateMap - */ - public void setNextDateMap(Map nextDateMap) { - this.nextDateMap = nextDateMap; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/entries deleted file mode 100644 index 5c6affe..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/alfresco -svn://172.17.26.185/COMACO - - - -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AlfrescoController.java -file - - - - -2022-07-28T03:39:55.687600Z -45814a2a0692361c5268e3d6aeb8b23a -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -20542 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/text-base/AlfrescoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/text-base/AlfrescoController.java.svn-base deleted file mode 100644 index 6d95533..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/alfresco/.svn/text-base/AlfrescoController.java.svn-base +++ /dev/null @@ -1,534 +0,0 @@ -/** - * - */ -package com.fp.frontend.controller.alfresco; - -import java.io.File; -import java.io.FileOutputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.List; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.faces.event.ActionEvent; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.DefaultStreamedContent; -import org.primefaces.model.StreamedContent; -import org.primefaces.model.UploadedFile; - -import com.fp.alfresco.client.AlfrescoApi; -import com.fp.alfresco.client.DocumentoAlfresco; -import com.fp.alfresco.exception.ExceptionWebscript; -import com.fp.alfresco.util.ApiProperties; -import com.fp.frontend.controller.pentaho.PentahoController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.EnumParametros; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * @author amerchan - * @author dcruz - * - */ -@ManagedBean -@ViewScoped -public class AlfrescoController implements Serializable { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{loginController}") - private LoginController logincontroler; - - @ManagedProperty(value = "#{pentahoController}") - private PentahoController pentahoController; - - private AlfrescoApi api; - - private List lDocuments; - - private List lUploadedDocuments; - - public AlfrescoController() { - lUploadedDocuments = new ArrayList(); - api = new AlfrescoApi("comaco"); - } - - public boolean uploadFile(InputStream document, String fileName, String xPathLocation) { - return uploadFile(null, document, fileName, xPathLocation); - } - - public boolean uploadFile(String site, InputStream document, String fileName, String xPathLocation) { - Boolean resp = Boolean.FALSE; - try { - fileName=Utilidades.caractersEspeciales(fileName); - } catch (Exception e1) { - e1.printStackTrace(); - MessageHelper.setMessageError(e1.getMessage()); - return Boolean.FALSE; - } - try { - - if(site != null){ - api = new AlfrescoApi(site); - } - String name = FilenameUtils.getBaseName(fileName); - String extension = FilenameUtils.getExtension(fileName); - File archivoTemporal = File.createTempFile(name, extension); - OutputStream outputStream = new FileOutputStream(archivoTemporal); - IOUtils.copy(document, outputStream); - IOUtils.closeQuietly(document); - IOUtils.closeQuietly(outputStream); - - DocumentoAlfresco documentoAlfresco = api.findOneByXPathLocation(ApiProperties.getProperty("api.doclocation.base", api.getSite())+"/"+xPathLocation+"/cm:"+fileName); - if (documentoAlfresco != null && documentoAlfresco.getId() != null) { -// DocumentoAlfresco docUpdate = documentoAlfresco.get(0); - documentoAlfresco.setFile(archivoTemporal); - documentoAlfresco.setNombre(fileName); - api.uploadUpdateDocument(documentoAlfresco); - } else { - DocumentoAlfresco doc = new DocumentoAlfresco(fileName, logincontroler.getRequest().getUser()); - doc.setFile(archivoTemporal); - doc.setNombre(fileName); - api.uploadNewDocument(xPathLocation, doc); - } - resp = Boolean.TRUE; - - } catch (ExceptionWebscript e) { - resp = Boolean.FALSE; - MessageHelper.setMessageError(e.getMessage()); - } catch (Throwable e) { - resp = Boolean.FALSE; - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_subir_arch"); - } - return resp; - } - - public boolean uploadFileWebService(InputStream document, String fileName, String xPathLocation,String user) { - Boolean resp = Boolean.FALSE; - - try { - - String name = FilenameUtils.getBaseName(fileName); - String extension = FilenameUtils.getExtension(fileName); - File archivoTemporal = File.createTempFile(name, extension); - OutputStream outputStream = new FileOutputStream(archivoTemporal); - IOUtils.copy(document, outputStream); - IOUtils.closeQuietly(document); - IOUtils.closeQuietly(outputStream); - DocumentoAlfresco documentoAlfresco = api.findOneByXPathLocation(ApiProperties.getProperty("api.doclocation.base", api.getSite())+"/"+xPathLocation+"/cm:"+fileName); - if (documentoAlfresco != null && documentoAlfresco.getId() != null) { - documentoAlfresco.setFile(archivoTemporal); - documentoAlfresco.setNombre(fileName); - api.uploadUpdateDocument(documentoAlfresco); - } else { - DocumentoAlfresco doc = new DocumentoAlfresco(fileName, user); - doc.setFile(archivoTemporal); - doc.setNombre(fileName); - api.uploadNewDocument(xPathLocation, doc); - } - resp = Boolean.TRUE; - - } catch (ExceptionWebscript e) { - resp = Boolean.FALSE; - MessageHelper.setMessageError(e.getMessage()); - } catch (Throwable e) { - resp = Boolean.FALSE; - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_subir_arch"); - } - return resp; - } - - public void listenerUpload(FileUploadEvent event) { - UploadedFile item = event.getFile(); - try { - Utilidades.caractersEspeciales(item.getFileName()); - } catch (Exception e1) { - e1.printStackTrace(); - MessageHelper.setMessageError(e1.getMessage()); - return; - } -// String[] nameArr = item.getFileName().split("[.]"); -// String name = nameArr[0]; -// String extension = nameArr[1]; - String name = FilenameUtils.getBaseName(item.getFileName()); - String extension = FilenameUtils.getExtension(item.getFileName()); - - String xPathLocation = (String) event.getComponent().getAttributes().get("xPathLocation"); - if ((xPathLocation == null) || xPathLocation.isEmpty()) { - MessageHelper.setMessageError("msg_location_req"); - return; - } - try { - File archivoTemporal = File.createTempFile(name, extension); - OutputStream outputStream = new FileOutputStream(archivoTemporal); - InputStream inputStream = item.getInputstream(); - IOUtils.copy(inputStream, outputStream); - IOUtils.closeQuietly(inputStream); - IOUtils.closeQuietly(outputStream); - - DocumentoAlfresco doc = new DocumentoAlfresco(item.getFileName(), logincontroler.getRequest().getUser()); - doc.setFile(archivoTemporal); - doc.setNombre(item.getFileName()); - doc = api.uploadNewDocument(xPathLocation, doc); - doc.setFile(archivoTemporal); - lUploadedDocuments.add(doc); - RequestContext.getCurrentInstance().execute("onUploadAlfrescoListener()"); - } catch (ExceptionWebscript e) { - MessageHelper.setMessageError(e.getMessage()); - return; - } catch (Exception e) { - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_subir_arch"); - } - } - - public byte[] downloadReturnDocument(String location) { - FacesContext context = FacesContext.getCurrentInstance(); - ExternalContext external = context.getExternalContext(); -// HttpServletResponse response = (HttpServletResponse) external.getResponse(); - try { - TgeneParameters parameters =ParametersController.find("PATH.ALFRESCO.ARCHIVOS", "1"); - String xPathLocation=parameters.getTextvalue()+location; -// xPathLocation+=(String) event.getComponent().getAttributes().get("xPathLocation"); - DocumentoAlfresco doc = null; - if ((xPathLocation != null) && !xPathLocation.isEmpty()) { - doc = api.findOneByXPathLocation(xPathLocation); - } - if (doc == null) { - MessageHelper.setMessageError("msg_doc_no_existe"); - return null; - } -// response.setHeader("Pragma", "no-cache"); -// response.setDateHeader("Expires", 0); -// response.setContentType("application/octet-stream"); -// response.setHeader("Content-Disposition", "attachment;filename=\"" + doc.getNombre() + "\""); - - InputStream inputStream = api.downloadDocumentByXPathLocation(xPathLocation); - byte[] bytes = IOUtils.toByteArray(inputStream); - return bytes; -// OutputStream outputStream = response.getOutputStream(); -// IOUtils.copy(inputStream, outputStream); -// IOUtils.closeQuietly(inputStream); -// IOUtils.closeQuietly(outputStream); - } catch (Exception e) { - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_bajar_arch"); - return null; - } -// context.responseComplete(); - } - - public void downloadDocument(ActionEvent event) { - FacesContext context = FacesContext.getCurrentInstance(); - ExternalContext external = context.getExternalContext(); - HttpServletResponse response = (HttpServletResponse) external.getResponse(); - try { - TgeneParameters parameters =ParametersController.find("PATH.ALFRESCO.ARCHIVOS", "1"); - String xPathLocation=parameters.getTextvalue(); - xPathLocation+=(String) event.getComponent().getAttributes().get("xPathLocation"); - DocumentoAlfresco doc = null; - if ((xPathLocation != null) && !xPathLocation.isEmpty()) { - doc = api.findOneByXPathLocation(xPathLocation); - } - if (doc == null) { - MessageHelper.setMessageError("msg_doc_no_existe"); - return; - } - response.setHeader("Pragma", "no-cache"); - response.setDateHeader("Expires", 0); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=\"" + doc.getNombre() + "\""); - - InputStream inputStream = api.downloadDocumentByXPathLocation(xPathLocation); - OutputStream outputStream = response.getOutputStream(); - IOUtils.copy(inputStream, outputStream); - IOUtils.closeQuietly(inputStream); - IOUtils.closeQuietly(outputStream); - } catch (Exception e) { - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_bajar_arch"); - return; - } - context.responseComplete(); - } - - public static StreamedContent downloadDocument(String ruta) { - FacesContext context = FacesContext.getCurrentInstance(); - ExternalContext external = context.getExternalContext(); - HttpServletResponse response = (HttpServletResponse) external.getResponse(); - try { - TgeneParameters parameters =ParametersController.find("PATH.ALFRESCO.ARCHIVOS", "1"); - String xPathLocation=parameters.getTextvalue(); - xPathLocation+=ruta; - DocumentoAlfresco doc = null; - AlfrescoApi api = new AlfrescoApi("comaco"); - if ((xPathLocation != null) && !xPathLocation.isEmpty()) { - doc = api.findOneByXPathLocation(xPathLocation); - } - if (doc == null) { - MessageHelper.setMessageError("msg_doc_no_existe"); - return null; - } - response.setHeader("Pragma", "no-cache"); - response.setDateHeader("Expires", 0); - response.setContentType("application/octet-stream"); - response.setHeader("Content-Disposition", "attachment;filename=\"" + doc.getNombre() + "\""); - - InputStream inputStream = api.downloadDocumentByXPathLocation(xPathLocation); - return new DefaultStreamedContent(inputStream, "application/pdf", "TerminosCondiciones.pdf"); - } catch (Exception e) { - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_bajar_arch"); - return null; - } - } - - public void prepareDocumentList(ActionEvent event) { - String xPathLocationFolder = (String) event.getComponent().getAttributes().get("xPathLocation"); - try { - DocumentoAlfresco doc = api.findOneByXPathLocation(xPathLocationFolder); - if (doc == null) { - MessageHelper.setMessageError("msg_carp_no_existe", xPathLocationFolder); - return; - } - lDocuments = api.findListByXPathLocation(xPathLocationFolder); - } catch (Exception e) { - e.printStackTrace(); - MessageHelper.setMessageError("msg_error_consulta_docs"); - } - } - - public static InputStream getDocument(String name, String path) { - - AlfrescoController alfresco = new AlfrescoController(); - String xPath = path + name; - - InputStream input = null; - try { - - input = alfresco.api.downloadDocumentByXPathLocation(xPath) != null ? alfresco.api.downloadDocumentByXPathLocation(xPath) : null; - } catch (ExceptionWebscript e) { - MessageHelper.setMessageError(e); - input = null; - } catch (Exception ex) { - - } - return input; - - } - - /** - * Descarga un documento Alfresco - * - * @param name - * @param path - * @return - */ - public static InputStream getDocumentByCode(String codDocument, String nomTipo, String company) { - - AlfrescoController alfresco = new AlfrescoController(); - - String xPath = ParametersController.find(EnumParametros.PATH_ALFRESCO.getCodigo(), company).getTextvalue() + codDocument + "/cm:" + nomTipo - + "_" + codDocument + ".pdf"; - - InputStream input = null; - try { - - input = alfresco.api.downloadDocumentByXPathLocation(xPath) != null ? alfresco.api.downloadDocumentByXPathLocation(xPath) : null; - } catch (ExceptionWebscript e) { - MessageHelper.setMessageError(e); - input = null; - } catch (Exception ex) { - // TODO Auto-generated catch block - } - return input; - - } - - /** - * Carga un documento - * - * @param codDocument - * @param nomTipo (solicitud - informe) - * @throws Exception - */ - /*public void uploadDocument(String codDocument, String nomTipo, String tipo) throws Exception { - - String reporte = nomTipo; - Map parameters = new HashMap(); - parameters.put("cod_solicitud", codDocument); - parameters.put("cod_tipo", tipo); - - this.uploadFile(pentahoController.generateTemporalReport(reporte, parameters, "pdf"), nomTipo + "_" + codDocument + ".pdf", "pdf", - codDocument); - }*/ - - /** - * Carga un documento - * - * @param codDocument - * @param nomTipo (solicitud - informe) - * @throws Exception - */ - /*public static boolean uploadSignedDocument(InputStream document, String codDocument, String nomTipo) { - - AlfrescoController alfresco = new AlfrescoController(); - - try { - alfresco.uploadFile(document, nomTipo + "_" + codDocument + ".pdf", "pdf", codDocument); - return true; - } catch (Exception e) { - e.printStackTrace(); - return false; - } - }*/ - - public boolean uploadDocumentRepository(InputStream document, String fileName, String xPathLocation) { - return uploadDocumentRepository(null, document, fileName, xPathLocation); - } - - /** - * Método general de carga de documentos en alfresco - * - * @param document documento a cargar - * @param site sitio a cargar el documento - * @param fileName nombre con el que se cargara el archivo - * @param xPathFile ruta dentro del sitio que se almacenara el documento - * @return - */ - public boolean uploadDocumentRepository(String site, InputStream document, String fileName, String xPathLocation) { - Boolean resp = Boolean.FALSE; - try { - if(site != null){ - api = new AlfrescoApi(site); - } - String name = FilenameUtils.getName(fileName); - String extension = FilenameUtils.getExtension(fileName); - File archivoTemporal = File.createTempFile(name, extension); - OutputStream outputStream = new FileOutputStream(archivoTemporal); - IOUtils.copy(document, outputStream); - IOUtils.closeQuietly(document); - IOUtils.closeQuietly(outputStream); - - DocumentoAlfresco doc = new DocumentoAlfresco(fileName, logincontroler.getRequest().getUser()); - doc.setFile(archivoTemporal); - doc.setNombre(fileName); - doc = api.uploadNewDocument(xPathLocation, doc); - resp = true; - } catch (Throwable e) { - resp = false; - } - return resp; - } - - /** - * Carga un documento - * - * @param codDocument - * @param nomTipo (solicitud - informe) - * @throws Exception - */ - /*public void uploadDocument(InputStream document, String codDocument, String nomTipo) throws Exception { - - this.uploadFile(document, nomTipo + "_" + codDocument + ".pdf", "pdf", codDocument); - }*/ - - /** - * @return Retorna el atributo logincontroler - */ - public LoginController getLogincontroler() { - return logincontroler; - } - - /** - * @param logincontroler Parametro a fijar en el atributo logincontroler - */ - public void setLogincontroler(LoginController logincontroler) { - this.logincontroler = logincontroler; - } - - /** - * @return Retorna el atributo lDocuments - */ - public List getlDocuments() { - return lDocuments; - } - - /** - * @param lDocuments Parametro a fijar en el atributo lDocuments - */ - public void setlDocuments(List lDocuments) { - this.lDocuments = lDocuments; - } - - /** - * @return Retorna el atributo lUploadedDocuments - */ - public List getlUploadedDocuments() { - return lUploadedDocuments; - } - - /** - * @param lUploadedDocuments Parametro a fijar en el atributo lUploadedDocuments - */ - public void setlUploadedDocuments(List lUploadedDocuments) { - this.lUploadedDocuments = lUploadedDocuments; - } - - public void clearlUploadedDocuments() { - if (lUploadedDocuments != null) { - lUploadedDocuments.clear(); - } else { - lUploadedDocuments = new ArrayList(); - } - } - - /** - * @return Retorna el atributo api - */ - public AlfrescoApi getApi() { - return api; - } - - /** - * @param Fija el par�metro del atributo api - */ - public void setApi(AlfrescoApi api) { - this.api = api; - } - - /** - * Entrega una instancia de PentahoController - * - * @return pentahoController - */ - public PentahoController getPentahoController() { - return pentahoController; - } - - /** - * Fija una instancia de PentahoController - * - * @param pentahoController - */ - public void setPentahoController(PentahoController pentahoController) { - this.pentahoController = pentahoController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/entries deleted file mode 100644 index 3fb57d6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/entries +++ /dev/null @@ -1,111 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -solicitud -dir - -funcionalidad -dir - -lov -dir - -TipoTramiteController.java -file - - - - -2022-07-28T03:39:54.554595Z -a93b73d7346c382fc51c0ef28d8850bb -2020-10-01T15:35:45.801439Z -4629 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4322 - -eval -dir - -RequisitoPorTipoTramiteController.java -file - - - - -2022-07-28T03:39:54.554595Z -0833e357b8af5d7fffb8d1fb8fdabc37 -2014-08-19T10:33:45.613393Z -234 -ogarcia - - - - - - - - - - - - - - - - - - - - - -5945 - -parametros -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/RequisitoPorTipoTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/RequisitoPorTipoTramiteController.java.svn-base deleted file mode 100644 index 01fbb82..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/RequisitoPorTipoTramiteController.java.svn-base +++ /dev/null @@ -1,187 +0,0 @@ -package com.fp.frontend.controller.armas; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmRequisito; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.param.TarmTipoTramite; - -/** - * Clase controladora del bean TarmRequisitoPorTipoTramite. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RequisitoPorTipoTramiteController extends AbstractController { - - List ltipotramite; - - List lrequisito; - - public RequisitoPorTipoTramiteController() throws Exception { - super(TarmRequisitoPorTipoTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - ltipotramite = TipoTramiteController.find(); - lrequisito = RequisitoController.find(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REQUISITOPORTIPOTRAMITE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - // record.getPk().setCtipotramite(super.getMfilters().get("pk.ctipotramite")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.crequisito"); - // Subquery - SubQuery subquery = new SubQuery("TarmRequisito", "nombre", "nrequisito", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Fija la descripcion del perfil en el record - */ - public void setNombreReqisito() { - for (TarmRequisito r : lrequisito) { - if (r.getPk().compareTo(record.getPk().getCrequisito()) == 0) { - record.put("nrequisito", r.getNombre()); - } - } - } - - /** - * @return the ltipotramite - */ - public List getLtipotramite() { - return ltipotramite; - } - - /** - * @param ltipotramite the ltipotramite to set - */ - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - /** - * @return the lrequisito - */ - public List getLrequisito() { - return lrequisito; - } - - /** - * @param lrequisito the lrequisito to set - */ - public void setLrequisito(List lrequisito) { - this.lrequisito = lrequisito; - } - - /** - * Entrega una lista de requisitos por tipo de tramite. - * - * @param ctipotramite - * @return - * @throws Exception - */ - public static List find(String ctipotramite) throws Exception { - RequisitoPorTipoTramiteController r = new RequisitoPorTipoTramiteController(); - r.addFilter("pk.ctipotramite", ctipotramite); - r.querydatabase(); - return r.getLrecord(); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/TipoTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/TipoTramiteController.java.svn-base deleted file mode 100644 index 8657650..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/.svn/text-base/TipoTramiteController.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.frontend.controller.armas; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoTramite; - -/** - * Clase controladora del bean TarmTipoTramite. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TipoTramiteController extends AbstractController { - - public TipoTramiteController() throws Exception { - super(TarmTipoTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TIPOTRAMITE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.nombre"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Entrega una lista de tipos de tramite. - * - * @return List - */ - public static List find() { - try { - TipoTramiteController cc = new TipoTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/entries deleted file mode 100644 index 5ef89cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/eval -svn://172.17.26.185/COMACO - - - -2021-12-08T19:17:47.063140Z -4656 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RespuestasController.java -file - - - - -2022-07-28T03:39:53.595590Z -59fe2f1d649b70648231d46fa998fe81 -2015-04-20T12:00:26.947603Z -4042 -dlopez - - - - - - - - - - - - - - - - - - - - - -4496 - -Evaluacion.java -file - - - - -2022-07-28T03:39:53.595590Z -6e3833abfc41d888c5b61320c29f43ec -2014-12-16T10:19:33.564414Z -3532 -acevallos - - - - - - - - - - - - - - - - - - - - - -1317 - -DetallePreguntasController.java -file - - - - -2022-07-28T03:39:53.595590Z -c97f582b1300a6468ff6a9bce9272a12 -2014-09-19T06:04:56.930662Z -950 -acevallos - - - - - - - - - - - - - - - - - - - - - -3510 - -EvaluacionController.java -file - - - - -2022-07-28T03:39:53.596591Z -a854164ed604b1fbdfe074ba45ee081a -2021-12-08T19:17:47.063140Z -4656 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -45641 - -ConocimientoLovController.java -file - - - - -2022-07-28T03:39:53.596591Z -5b3e4e8be98ac8e10ed53d6f26ce2238 -2014-11-06T04:58:59.072653Z -2390 -acevallos - - - - - - - - - - - - - - - - - - - - - -12442 - -EvaluacionCompleta.java -file - - - - -2022-07-28T03:39:53.596591Z -7dcfcb9e69a0d32a15fa1291b2edc298 -2014-10-06T03:32:48.546712Z -1382 -acevallos - - - - - - - - - - - - - - - - - - - - - -582 - -TestConocimientosController.java -file - - - - -2022-07-28T03:39:53.596591Z -4f4c2b1b70c13d9c3581e14bfa3a6d7d -2015-07-09T07:54:47.328172Z -4183 -cpiedra - - - - - - - - - - - - - - - - - - - - - -19182 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/ConocimientoLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/ConocimientoLovController.java.svn-base deleted file mode 100644 index d027b1f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/ConocimientoLovController.java.svn-base +++ /dev/null @@ -1,464 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - - - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.PreguntasParaEvaluacionesController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.eval.TarmPreguntas; -import com.fp.persistence.parmas.eval.TarmRespuestas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora del lov asociado con la evaluacion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ConocimientoLovController extends AbstractController { - - - - private static final long serialVersionUID = 1L; - /** - * Instancia de la clase TarmPreguntas - */ - private TarmPreguntas pregunta; - /** - * Boleano que comprueba si la pregunta fue respondida correctamente - */ - private Boolean isCorrecta; - /** - * Lista de Preguntas - */ - private List lpreguntas; - /** - * Lista de Respuestas - */ - private List lrespuestas; - /** - * Instancia de TcustpersonDetail, corresponde a la persona a ser - * evaluada - */ - private static TcustPersonDetail personevaluada; - /** - * Instancia de una Evaluacion, maneja una pregunta y sus respectivasrespuestas - * que son mostradas en pantalla - */ - private Evaluacion currentEvaluacion; - - /** - * Lista del objetos Evaluacion - */ - private List leva; - /** - * Tipo de Evaluacion - */ - private static String tipoeval; - /** - * Contador que Lleva el numero de pregunta en el que se encuentra - */ - private int numeropregunta; - /** - * Maneja la ultima pregunta - */ - private boolean finalizar; - /** - * Fecha Actual del Sistema - */ - private Date fecha; - /** - * Objeto que sera retornado conteniendo todas las preguntas. - */ - EvaluacionCompleta evaluacionCompleta; - /** - * Tipo de persona referenciada en el catalogo - */ - private TgeneCatalogDetail tipopersona; - - /** - * Tipo de evaluacion referenciado en el catalogo - */ - private TgeneCatalogDetail tipoevaluacion; - /** - * Numero de preguntas que tendra la evaluacion - */ - int npreguntas=4; - private Boolean errorrend=false; - - private String error; - public ConocimientoLovController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - lpreguntas = new ArrayList(); - this.beanalias = "EVALUACIONLOV"; - tipoevaluacion = new TgeneCatalogDetail(); - TgeneParameters parametro= ParametersController.find("NUMEROPREGUNTAS", "1"); - - try{ - npreguntas=parametro.getNumbervalue().intValue(); - tipoevaluacion=CatalogDetailController.findxCodigoCodcatalogo(tipoeval, "TIPOEVALUACION"); - setTipopersona(CatalogDetailController.findxCodigoCodcatalogo(personevaluada.getPersontypecatalog(), personevaluada.getPersontypecatalogcode())); - lpreguntas.addAll( PreguntasParaEvaluacionesController.findxPregunta(tipopersona.getPk().getCatalog(),"CONOCIMIENTO")); - } - catch(Exception e){ - MessageHelper.setMessageError("PROBLEMAS DE PARAMETRIZACION. CONSULTE AL EVALUADOR"); - error="PROBLEMAS DE PARAMETRIZACION. CONSULTE AL EVALUADOR"; - errorrend=true; - System.out.println("Error"); - return; - } - - - - numeropregunta=0; - finalizar=false; - - fecha=Calendar.getInstance().getTime(); - evaluacionCompleta=new EvaluacionCompleta(); - evaluacionCompleta.inicializa(); - construirEvaluacion(); - currentEvaluacion=leva.get(numeropregunta); - comprobarpreguntafinal(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Construye la evaluacion en base a las preguntas que se tengan catalogadas - */ - public void construirEvaluacion(){ - - leva = new ArrayList(); - - - int i=0; - while(i> params, TcustPersonDetail persona,String catalogo) { - personevaluada=persona; - tipoeval=catalogo; - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 350); - options.put(EnumLovOption.WIDTH.getLabel(), 900); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - options.put("closable", false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/conocimientoLov.xhtml", options, params); - } - - /** - * Crea una instancia y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - isCorrecta = false; -// record.setCpregunta(pregunta.getPk()); - } - - /** - * Actualiza la lista de registros a grabar - * - * @throws Exception - */ - public void update() throws Exception { - //if(record.getEscorrecta()==null){ - // record.setEscorrecta("N"); - // } - //super.update(); - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TarmPreguntas getPregunta() { - return pregunta; - } - - public void setPregunta(TarmPreguntas pregunta) { - this.pregunta = pregunta; - } - - public Boolean getIsCorrecta() { - return isCorrecta; - } - - public void setIsCorrecta(Boolean isCorrecta) { - this.isCorrecta = isCorrecta; - } - - public void onChangeEsCorrecta() { - /* if (isCorrecta) { - record.setEscorrecta("Y"); - } else { - record.setEscorrecta("N"); - }*/ - } - - public List getLpreguntas() { - return lpreguntas; - } - - public void setLpreguntas(List lpreguntas) { - this.lpreguntas = lpreguntas; - } - - public List getLrespuestas() { - return lrespuestas; - } - - public void setLrespuestas(List lrespuestas) { - this.lrespuestas = lrespuestas; - } - - public List getLeva() { - return leva; - } - - public void setLeva(List leva) { - this.leva = leva; - } - - public TcustPersonDetail getPersonevaluada() { - return personevaluada; - } - - public void setPersonevaluada(TcustPersonDetail personevaluada) { - this.personevaluada = personevaluada; - } - - public TgeneCatalogDetail getTipopersona() { - return tipopersona; - } - - public void setTipopersona(TgeneCatalogDetail tipopersona) { - this.tipopersona = tipopersona; - } - - - - public TgeneCatalogDetail getTipoevaluacion() { - return tipoevaluacion; - } - - public void setTipoevaluacion(TgeneCatalogDetail tipoevaluacion) { - this.tipoevaluacion = tipoevaluacion; - } - - public Evaluacion getCurrentEvaluacion() { - return currentEvaluacion; - } - - public void setCurrentEvaluacion(Evaluacion currentEvaluacion) { - this.currentEvaluacion = currentEvaluacion; - } - - public boolean isFinalizar() { - return finalizar; - } - - public void setFinalizar(boolean finalizar) { - this.finalizar = finalizar; - } - - - public int getNumeropregunta() { - return numeropregunta; - } - - public void setNumeropregunta(int numeropregunta) { - this.numeropregunta = numeropregunta; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public String getError() { - return error; - } - - public void setError(String error) { - this.error = error; - } - - public Boolean getErrorrend() { - return errorrend; - } - - public void setErrorrend(Boolean errorrend) { - this.errorrend = errorrend; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/DetallePreguntasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/DetallePreguntasController.java.svn-base deleted file mode 100644 index 02ae0cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/DetallePreguntasController.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; - -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.eval.TarmDetallePreguntas; - - - -/** - * Clase controladora del bean TarmDetallePreguntas. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DetallePreguntasController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public DetallePreguntasController() throws Exception { - super(TarmDetallePreguntas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "DETALLEPREGUNTAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * M´todo para generar un reporte - * - * @throws Exception - */ - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/Evaluacion.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/Evaluacion.java.svn-base deleted file mode 100644 index c2def8b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/Evaluacion.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.List; - -import com.fp.persistence.parmas.eval.TarmPreguntas; -import com.fp.persistence.parmas.eval.TarmRespuestas; - -/** - * Objeto que encapsula las preguntas y las respuestas - * @author Andres Cevallos - * - */ -public class Evaluacion { - - /** - * Instancia de TarmPreguntas - */ - private TarmPreguntas pregunta; - /** - * Lista de Respuestas asociadas a la pregunta - */ - private List respuesta; - /** - * Codigo de respuesta seleccionada - */ - - private Integer codigorespuesta; - /** - * Respuesta seleccionada - */ - private TarmRespuestas respues; - - public TarmPreguntas getPregunta() { - return pregunta; - } - - public void setPregunta(TarmPreguntas pregunta) { - this.pregunta = pregunta; - } - - public List getRespuesta() { - return respuesta; - } - - public void setRespuesta(List respuesta) { - this.respuesta = respuesta; - } - - public Integer getCodigorespuesta() { - return codigorespuesta; - } - - public void setCodigorespuesta(Integer codigorespuesta) { - this.codigorespuesta = codigorespuesta; - } - - public TarmRespuestas getRespues() { - return respues; - } - - public void setRespues(TarmRespuestas respues) { - this.respues = respues; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionCompleta.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionCompleta.java.svn-base deleted file mode 100644 index cda8e00..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionCompleta.java.svn-base +++ /dev/null @@ -1,29 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.List; - -/** - * @author Andres Cevallos - *Contiene la lista de respuestas y preguntas - */ -public class EvaluacionCompleta { - - /** - *Contiene una lista de evaluaciones - */ - private List levaluacion; - - public void inicializa(){ - levaluacion = new ArrayList(); - } - - public List getLevaluacion() { - return levaluacion; - } - - public void setLevaluacion(List levaluacion) { - this.levaluacion = levaluacion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionController.java.svn-base deleted file mode 100644 index 2de34f3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/EvaluacionController.java.svn-base +++ /dev/null @@ -1,1258 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.frontend.webservices.snap.cedula.ClienteCedula; -import com.fp.frontend.webservices.snap.ruc.ClienteRUC; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -import ec.gob.registrocivil.consultacedula.Cedula; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - - -/** - * Clase controladora del bean TarmEvaluacion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class EvaluacionController extends AbstractController { - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value = "#{guardiasController}") - private GuardiasController guardiasController; -// private TcustPersonDetail evaluado; - private Boolean aprobado; - TgeneCatalogDetail lTipoPersona; - private TgeneCatalogDetail centromed; - public String centro; - public List lcentro; -// private List lTipoEvaluacion; - TgeneCatalogDetail tipoEvaluacion; - private TcustPersonDetail empresa; - private UploadedFile file; - private Date fecha; - private Date fechaactual; - private Date fechadeposito; - private TcustPersonDetail personafiltro; - private TcustPersonDetail personafiltroSNAP; - private List eliminar; - private boolean subio=false; - private String deposito; - private String papeleta; - private Boolean centroMedico; - private String nombreArchivo; - private Boolean isGuardia; - private String tipoTest; - - private Boolean isPasaporte; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo del pasaporte - */ - private String codigoPasaporte; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoDocumentoLst; - - /** - * Atributo para setear el psicologo responsable - */ - private TcustPersonDetail tcustPersonDetailPsicologo; - - /** - * Constructor - * @throws Exception - */ - public EvaluacionController() throws Exception { - super(TarmEvaluacion.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - querydatabase(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - eliminar=new ArrayList(); - this.beanalias = "EVALUACION"; - this.tipoTest = "PSICOLOGICA"; - aprobado=false; - fecha=new Date(); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - tipoDocumentoLst = CatalogDetailController.find("IDENTIFICATION"); -// lTipoEvaluacion=CatalogDetailController.find("TIPOEVALUACION"); - tipoEvaluacion=CatalogDetailController.findCatalogo("TIPOEVALUACION", "PSICOLOGICA"); - lcentro=CatalogDetailController.find("CENTROMEDICO"); - setFechaactual(new Date()); - centroMedico=Boolean.FALSE; - - // CARGAR INFORMACION DEL USUARIO LOGUEADO DEL SNAP - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - personafiltro = PersonLovController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - lTipoPersona=CatalogDetailController.findxCodigoCodcatalogo(personafiltro.getPersontypecatalog(), personafiltro.getPersontypecatalogcode()); - super.create(); - this.record.setPersoncode(personafiltro.getPk().getPersoncode()); - this.record.getModifiedData().put("nombre", personafiltro.getName()); - this.record.getModifiedData().put("identificacion", personafiltro.getIdentification()); - this.record.getModifiedData().put("tipopersona", lTipoPersona.getDescription()); - - - - if(personafiltro.getIdentification() == null || personafiltro.getIdentification() == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - - if(personafiltro.getIdentificationcatalog().equals("CED")){ - // valido validez CEDULA - if(!ValidateIdentification.cedula(personafiltro.getIdentification())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - personafiltroSNAP=buscarPersonaSnap(personafiltro.getIdentification(),personafiltro.getIdentificationcatalog()); - - }else if(personafiltro.getIdentificationcatalog().equals("RUC")){ - // valido validez RUC - if(!ValidateIdentification.ruc(personafiltro.getIdentification())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - personafiltroSNAP=buscarPersonaSnap(personafiltro.getIdentification(),personafiltro.getIdentificationcatalog()); - } - else{ - // PASAPORTE - personafiltroSNAP = new TcustPersonDetail(); - personafiltroSNAP.setName(personafiltro.getName()); - personafiltroSNAP.setIdentification(personafiltro.getIdentification()); - personafiltroSNAP.setIdentificationcatalog("PAS"); - personafiltroSNAP.setIdentificationcatalogcode("IDENTIFICATION"); - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - /** - * Método para obtener los codigos - */ - public Integer valorInt(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getNumbervalue().intValue(); - } - - public String getCentro() { - return centro; - } - - public void setCentro(String centro) { - this.centro = centro; - } - - public List getLcentro() { - return lcentro; - } - - public void setLcentro(List lcentro) { - this.lcentro = lcentro; - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fecha,t.tipoevaluacion"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identificacion", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery persontipe= new SubQuery - ("TcustPersonDetail", "persontypecatalog", "tipopersona", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery persontipecode= new SubQuery - ("TcustPersonDetail", "persontypecatalogcode", "tipopersonacode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalogcode= new SubQuery - ("TcustPersonDetail", "identificationcatalogcode", "identificationcatalogcode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery tipoevaluacion = new SubQuery - ("TgeneCatalogDetail", "description", "tipoevaluaciondesc", "i.pk.catalog=t.tipoevaluacion and i.pk.catalogcode=t.tipoevaluacioncodigo"); - - - Filter filtrofecha=new Filter(); -// filtrofecha.setSql("t.fecha=(select max(te.fecha) from TarmEvaluacion te where te.personcode=t.personcode and te.tipoevaluacion=t.tipoevaluacion)"); - filtrofecha.setSql("t.personcode="+personafiltro.getPk().getPersoncode().toString()+" and t.tipoevaluacion='"+tipoTest+"'"); // - dto.addFiltro(filtrofecha); - dto.addSubQuery(snombre); - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(persontipe); - dto.addSubQuery(identificationcatalogcode); - dto.addSubQuery(persontipecode); - dto.addSubQuery(tipoevaluacion); - // dto.addSubQuery(maxdate); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - completar(); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void cargarDeposito(){ - centromed = CatalogDetailController.findxCodigoCodcatalogo(centro, "CENTROMEDICO"); - this.record.setCentromedico(centro); - TgeneParameters parameters= ParametersController.find("CODIGO.OTROS", "1"); - centroMedico=Boolean.FALSE; - if(centro.equals(parameters.getTextvalue())){ - fechadeposito= new Date(); - record.setNopapeleta(null); - centroMedico=Boolean.TRUE; - } - } - /** - * Conpleta la informacion de la Evaluacion - */ - @SuppressWarnings("deprecation") - public void completar(){ - for(int i=0;i< this.lrecord.size();i++){ - try{ - if(lrecord.get(i).getModifiedData().get("tipoevaluaciondesc").toString().equals("EVALUACION DE CONOCIMIENTOS")) - this.lrecord.get(i).getModifiedData().put("eliminar", "true"); - else if(fecha.getDay()!=lrecord.get(i).getFecha().getDay() || fecha.getMonth()!=lrecord.get(i).getFecha().getMonth() || fecha.getYear()!=lrecord.get(i).getFecha().getYear()) - this.lrecord.get(i).getModifiedData().put("eliminar", "true"); - //else if(lrecord.get(i)) - else - this.lrecord.get(i).getModifiedData().put("eliminar", "false"); - - - - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tipopersona").toString(), this.lrecord.get(i).getModifiedData().get("tipopersonacode").toString()); - this.lrecord.get(i).getModifiedData().put("tipopersonadesc", tipo.getDescription()); - - if(lrecord.get(i).getFechaexpiracion()!=null && lrecord.get(i).getFechaexpiracion().after(new Date())){ - this.lrecord.get(i).getModifiedData().put("estadovig", "VIGENTE"); - }else{ - this.lrecord.get(i).getModifiedData().put("estadovig", "NO VIGENTE"); - } - } - catch (Exception e){ - e.printStackTrace(); - } - } - } - - /** - * Ruta para la evaluacion de conocimientos - * @param eva - * @return - */ - public String getRutaDocumentoPrueba(TarmEvaluacion eva) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Pruebas"); - ruta = ruta.append("/cm:ID-").append(eva.modifiedData().get("identificacion").toString()); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Valida la fecha - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fecha=new Date(); - } - } - - /** - * Evento el cual carga los archivos - * @param event - */ - public void upload(FileUploadEvent event) { - - file = event.getFile(); - subio=true; - nombreArchivo=Utilidades.recorteNombre(file.getFileName()); - - } - /** - * Crea un registro de actualizacion - */ - @SuppressWarnings("deprecation") - public void actualizar(){ - - try { - if(personafiltro==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_persona")); - return; - } - -// if(empresa==null){ -// MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_persona")); -// return; -// } - - if(file==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_debesubir")); - return; - } - - Date horas=new Date(); - fecha.setHours(horas.getHours()); - fecha.setMinutes(horas.getMinutes()); - fecha.setSeconds(horas.getSeconds()); - this.record.getModifiedData().put("file", file); - String xPathLocation= getRutaDocumentoPrueba(record); - this.record.setTipoevaluacion("PSICOLOGICA"); - this.record.setTipoevaluacioncodigo("TIPOEVALUACION"); - this.record.setTipdoccodepsicologo("IDENTIFICATION"); - this.record.setInformexpath(xPathLocation + "/cm:Pruebas/cm:"+"Psicologico.pdf"); - this.record.setFecha(new java.sql.Timestamp(new Date().getTime()) ); - aprobar(); - // Para validar el estado del guardia - Integer numTestPsicologicosAPB = EvaluacionController.findEvaluacionesAprobadasVigentes(record.getPersoncode().toString(), "PSICOLOGICA"); - Integer numTestConocimientososAPB = EvaluacionController.findEvaluacionesAprobadasVigentes(record.getPersoncode().toString(), "CONOCIMIENTO"); - if(this.record.getResultado().equalsIgnoreCase("APROBADO")){ - // En caso de que el actual test sea aprobado sumo uno a los antes aprobados - numTestPsicologicosAPB++; - Date fechaexpiracion=new Date(); - //fechaexpiracion.setYear(fechaexpiracion.getYear()+2); - Integer month= valorInt("VIGENCIA_MES_EVAL"); - fechaexpiracion.setMonth(fechaexpiracion.getMonth()+month); - this.record.setFechaexpiracion(new java.sql.Date(fechaexpiracion.getTime())); - } - this.record.setCentromedico(centromed.getPk().getCatalog()); - if(empresa!=null && empresa.getPk()!=null && empresa.getPk().getPersoncode()!=null){ - this.record.setEmpresapersoncode(empresa.getPk().getPersoncode()); - } - this.record.setCentromedicocode("CENTROMEDICO"); - this.record.setFechadeposito(new java.sql.Date(fechadeposito.getTime())); - this.record.getModifiedData().put("tipopersonadesc",lTipoPersona.getDescription()); - this.record.getModifiedData().put("tipoevaluaciondesc",CatalogDetailController.findxCodigoCodcatalogo(this.record.getTipoevaluacion(), this.record.getTipoevaluacioncodigo()).getDescription()); - TarmEvaluacion oeva=EvaluacionController.findVigencia(record.getPersoncode().toString(), record.getTipoevaluacion()); - - if(oeva==null || record.getFecha().before(oeva.getFecha())){ - record.setVigente("N"); - update(); - TarmGuardias guardia; - guardia=GuardiasController.findxcguardia(personafiltro.getPk().getPersoncode().toString()); - - if(guardia!=null){ - guardiasController.setRecord(guardia); - guardiasController.getRecord().setIsnew(false); - } - else{ - guardiasController.create(); - } - if(empresa!=null && empresa.getPk()!=null && empresa.getPk().getPersoncode()!=null){ - guardiasController.getRecord().setCempresa(empresa.getPk().getPersoncode()); - } - - guardiasController.getRecord().setPk(personafiltro.getPk().getPersoncode()); - - if(numTestPsicologicosAPB<=0 || numTestConocimientososAPB <=0 ){ - guardiasController.getRecord().setEstado("NAPT"); - } - else{ - guardiasController.getRecord().setEstado("APT"); - } - guardiasController.update(); - - return; - } - record.setVigente("Y"); - update(); - TarmGuardias guardia; - guardia=GuardiasController.findxcguardia(personafiltro.getPk().getPersoncode().toString()); - - if(guardia!=null){ - guardiasController.setRecord(guardia); - guardiasController.getRecord().setIsnew(false); - } - else{ - guardiasController.create(); - } - if(empresa!=null && empresa.getPk()!=null && empresa.getPk().getPersoncode()!=null){ - guardiasController.getRecord().setCempresa(empresa.getPk().getPersoncode()); - } - guardiasController.getRecord().setPk(personafiltro.getPk().getPersoncode()); - if(numTestPsicologicosAPB<=0 || numTestConocimientososAPB <=0 ){ - guardiasController.getRecord().setEstado("NAPT"); - } - else{ - guardiasController.getRecord().setEstado("APT"); - } - guardiasController.update(); - - oeva.setVigente("N"); - oeva.setIsnew(false); - this.record=oeva; - update(); - }catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - - } - - - public GuardiasController getGuardiasController() { - return guardiasController; - } - - public void setGuardiasController(GuardiasController guardiasController) { - this.guardiasController = guardiasController; - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - -// /** -// * Retorna y carga datos de la persona -// * @param event -// * @throws Exception -// */ -// public void onReturnPersonLov(SelectEvent event) throws Exception { -//// setEvaluado( (TcustPersonDetail) event.getObject()); -// lTipoPersona=CatalogDetailController.findxCodigoCodcatalogo(personafiltro.getPersontypecatalog(), personafiltro.getPersontypecatalogcode()); -// this.record.setPersoncode(personafiltro.getPk().getPersoncode()); -// this.record.getModifiedData().put("nombre", personafiltro.getName()); -// this.record.getModifiedData().put("identificacion", personafiltro.getIdentification()); -// try{ -// this.record.getModifiedData().put("tipopersona", lTipoPersona.getDescription()); -// } -// catch(Exception e){ -// e.printStackTrace(); -// } -// } - - public void onRetrunPersonLovEmpresa(SelectEvent event) throws Exception{ - setEmpresa((TcustPersonDetail) event.getObject()); - this.record.setEmpresapersoncode(empresa.getPk().getPersoncode()); - } -// /** -// * Regresa una persona para guardarla en un nuevo registro de evaluacio psicologica -// * @param event -// * @throws Exceptionq -// */ -// public void onReturnPersonLov2(SelectEvent event) throws Exception{ -// personafiltro=(TcustPersonDetail) event.getObject(); -// this.addFilter("personcode", personafiltro.getPk().getPersoncode().toString()); -// } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - - /** - * Metodo de guardado de la evaluacion. Ademas sube el archivo alfresco seleccionado - */ - @Override - public void save(){ - try { - for(int i=0;i msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - DtoSave dtoguardias = this.guardiasController.getDtoSave(true); - msave.put(guardiasController.getBeanalias(), dtoguardias); // adicionar metadata de mantenimiento para cada tabla. - dtoguardias.setPosition(2); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - postconstruct(); - } - - /** - * Metodo el cual borra un registro. Revisa si el registro coincide con la fecha maxima. - */ - @SuppressWarnings("deprecation") - @Override - public void remove(){ - fecha=new Date(); - if(fecha.getDay()==record.getFecha().getDay() && fecha.getMonth()==record.getFecha().getMonth() && fecha.getYear()==record.getFecha().getYear()){ - try { - eliminar.add(record.getInformexpath()); - super.remove(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - else{ - MessageHelper.setMessageError("NO SE PUEDE BORRAR ESTE REGISTRO"); - } - } - /** - * aprueba la o reprueba la evaluacion - */ - public void aprobar(){ - if(aprobado){ - this.record.setResultado("APROBADO"); - this.record.setResultadocodigo("RESULTADO"); - } - else{ - this.record.setResultado("REPROBADO"); - this.record.setResultadocodigo("RESULTADO"); - } - } - - /** - * find para encontrar los registros anteriores - */ - public static Integer findIntentos(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydata(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.size(); - } - return 0; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return 0; - } - - } - - /** - * find para encontrar evaluaciones aprobadas anteriores en estado vigente - */ - public static Integer findEvaluacionesAprobadasVigentes(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("resultado", "APROBADO"); - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydatabaseVigentes(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.size(); - } - return 0; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return 0; - } - - } - - /** - * find para encontrar los registros anteriores - */ - public static Integer findIntentosReprobados(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("resultado", "REPROBADO"); - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydata(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.size(); - } - return 0; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return 0; - } - - } - -// /* (non-Javadoc) -// * @see com.fp.frontend.controller.AbstractController#create() -// */ -// @Override -// public void create(){ -// limpiar(); -// try { -// super.create(); -// } catch (Exception e) { -// // TODO Auto-generated catch block -// e.printStackTrace(); -// } -// } - - - /** - * Limpia los registros anteriores - */ - public void limpiar(){ - personafiltro=null; - file=null; - lTipoPersona=null; - subio=false; - fechadeposito=new Date(); - empresa=new TcustPersonDetail(); - deposito=""; - nombreArchivo=null; - init(); - } - - - /** - * Find para encontrar la fecha en la que debe rendir la prueba - * @param personcode - * @param tipoevaluacion - * @return - */ - public static TarmEvaluacion findFecha(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydat(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - /** - * find para encontrar evaluaciones aprobadas anteriores en estado vigente - */ - public static TarmEvaluacion findEvaluacionesVigentes(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 100; - cc.addFilter("resultado", "APROBADO"); - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydataVigentes(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public void querydataVigentes(String personcode, String tipoevaluacion) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fecha desc"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Encuentra la evaluacion vigente - * @param personcode - * @param tipoevaluacion - * @return - */ - public static TarmEvaluacion findVigencia(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.addFilter("vigente","Y"); - cc.querydat(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmEvaluacion find(String personcode, String tipoevaluacion) { - try { - EvaluacionController cc = new EvaluacionController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("personcode", personcode); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.querydat(personcode,tipoevaluacion); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - if(cc.lrecord.get(0).getFechaexpiracion()!=null && cc.lrecord.get(0).getFechaexpiracion().after(new Date())){ - return cc.lrecord.get(0); - }else{ - return null; - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - /** - * consulta en la cual se busca la fecha proxima para rendir la evaluacion - * @param personcode - * @param tipoevaluacion - */ - public void querydat(String personcode, String tipoevaluacion) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fechapreox"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - Filter sql= new Filter(); - sql.setSql("t.fecha=(select max(fecha) from TarmEvaluacion where personcode='"+personcode+"' and tipoevaluacion='"+tipoevaluacion+"')"); - dto.addFiltro(sql); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void queryByTipoEvaluacion(String personcode, String tipoevaluacion) { - try { - Request request = this.callerhelper.getRequest(); - this.lrecord = new ArrayList<>(); - DtoQuery dto = super.getDtoQuery(true); - this.recperpage = 300000; - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identificacion", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery persontipe= new SubQuery - ("TcustPersonDetail", "persontypecatalog", "tipopersona", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery persontipecode= new SubQuery - ("TcustPersonDetail", "persontypecatalogcode", "tipopersonacode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalogcode= new SubQuery - ("TcustPersonDetail", "identificationcatalogcode", "identificationcatalogcode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery tipoevaluacionSQ = new SubQuery - ("TgeneCatalogDetail", "description", "tipoevaluaciondesc", "i.pk.catalog=t.tipoevaluacion and i.pk.catalogcode=t.tipoevaluacioncodigo"); - Filter filtropersona=new Filter();// - filtropersona.setSql("t.personcode="+personcode+" and t.tipoevaluacion='"+tipoevaluacion+"' "); - dto.addFiltro(filtropersona); - dto.addSubQuery(snombre); - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(persontipe); - dto.addSubQuery(identificationcatalogcode); - dto.addSubQuery(persontipecode); - dto.addSubQuery(tipoevaluacionSQ); -// this.getMfilters().put("t.personcode", personcode); -// this.getMfilters().put("t.tipoevaluacion", tipoevaluacion); - dto.setOrderby("t.fechaexpiracion desc"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - completar(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void querydata(String personcode, String tipoevaluacion) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fechapreox"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void querydatabaseVigentes(String personcode, String tipoevaluacion) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter filtro = new Filter(); - filtro.setSql("t.fechaexpiracion>=sysdate"); - dto.addFiltro(filtro); - dto.setOrderby("t.fechapreox"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Query hacia la base de datos - */ - public void querybase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fecha"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void onChangeTipoDocumento(){ - if(this.getRecord().getTipdocpsicologo().equalsIgnoreCase("CED")|| this.getRecord().getTipdocpsicologo().equalsIgnoreCase("RUC")){ - this.setIsPasaporte(Boolean.FALSE); - this.getRecord().setNumdocpsicologo(null); - this.getRecord().setPsicologoresponsable(null); - }else{ - this.setIsPasaporte(Boolean.TRUE); - } - } - - /** - * Método que valida la persona portadora del arma o explosivo - * en las tablas de maia y en la snap - * - */ - public void validarPsicologoResponsable(){ - if(this.getRecord().getNumdocpsicologo() ==null || this.getRecord().getTipdocpsicologo() ==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - if(this.getRecord().getTipdocpsicologo().equals(codigoCedula)){ - // SI ES CEDULA - if(!ValidateIdentification.cedula(this.getRecord().getNumdocpsicologo())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en la SNAP - tcustPersonDetailPsicologo=buscarPersonaSnap(this.getRecord().getNumdocpsicologo(),this.getRecord().getTipdocpsicologo()); - }else if(this.getRecord().getTipdocpsicologo().equals(codigoRuc)){ - // SI ES RUC - if(!ValidateIdentification.ruc(this.getRecord().getNumdocpsicologo())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - // envia a buscar en la snap - tcustPersonDetailPsicologo=buscarPersonaSnap(this.getRecord().getNumdocpsicologo(),this.getRecord().getTipdocpsicologo()); - } - if(tcustPersonDetailPsicologo!=null){ - this.record.setPsicologoresponsable(tcustPersonDetailPsicologo.getName()); - } - else if(this.getRecord().getTipdocpsicologo().equals(codigoCedula)||this.getRecord().getTipdocpsicologo().equals(codigoRuc)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_psicologoinvalido")); - this.record.setPsicologoresponsable(null); - } - } - - /** - * Método para buscar a la persona en la snap - * @param documento - */ - public TcustPersonDetail buscarPersonaSnap(String documento,String tipoDocumento){ - if(tipoDocumento.equals("CED")){ - Cedula cedula= ClienteCedula.obtenerCedula(documento); - if(cedula!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(cedula.getNombre()); - detail.setIdentification(cedula.getCedula()); - detail.setIdentificationcatalog("CED"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - }else { - Contribuyente contribuyente= ClienteRUC.obtenerRUC(documento); - if(contribuyente!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(contribuyente.getRazonSocial()); - detail.setIdentification(contribuyente.getNumeroRuc()); - detail.setIdentificationcatalog("RUC"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - } - } - - public Boolean getAprobado() { - return aprobado; - } - - public void setAprobado(Boolean aprobado) { - this.aprobado = aprobado; - } - - - public TgeneCatalogDetail getlTipoPersona() { - return lTipoPersona; - } - - public void setlTipoPersona(TgeneCatalogDetail lTipoPersona) { - this.lTipoPersona = lTipoPersona; - } - - public UploadedFile getFile() { - return file; - } - - public void setFile(UploadedFile file) { - this.file = file; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public TcustPersonDetail getPersonafiltro() { - return personafiltro; - } - - public void setPersonafiltro(TcustPersonDetail personafiltro) { - this.personafiltro = personafiltro; - } - - public Date getFechaactual() { - return fechaactual; - } - - public void setFechaactual(Date fechaactual) { - this.fechaactual = fechaactual; - } - - public List getEliminar() { - return eliminar; - } - - public void setEliminar(List eliminar) { - this.eliminar = eliminar; - } - - public TgeneCatalogDetail getTipoEvaluacion() { - return tipoEvaluacion; - } - - public void setTipoEvaluacion(TgeneCatalogDetail tipoEvaluacion) { - this.tipoEvaluacion = tipoEvaluacion; - } - - public boolean isSubio() { - return subio; - } - - public void setSubio(boolean subio) { - this.subio = subio; - } - - public TcustPersonDetail getEmpresa() { - return empresa; - } - - public void setEmpresa(TcustPersonDetail empresa) { - this.empresa = empresa; - } - - public Date getFechadeposito() { - return fechadeposito; - } - - public void setFechadeposito(Date fechadeposito) { - this.fechadeposito = fechadeposito; - } - - public String getDeposito() { - return deposito; - } - - public void setDeposito(String deposito) { - this.deposito = deposito; - } - - public TgeneCatalogDetail getCentromed() { - return centromed; - } - - public void setCentromed(TgeneCatalogDetail centromed) { - this.centromed = centromed; - } - - public String getPapeleta() { - return papeleta; - } - - public void setPapeleta(String papeleta) { - this.papeleta = papeleta; - } - - public Boolean getCentroMedico() { - return centroMedico; - } - - public void setCentroMedico(Boolean centroMedico) { - this.centroMedico = centroMedico; - } - - public String getNombreArchivo() { - return nombreArchivo; - } - - public void setNombreArchivo(String nombreArchivo) { - this.nombreArchivo = nombreArchivo; - } - - public Boolean getIsGuardia() { - return isGuardia; - } - - public void setIsGuardia(Boolean isGuardia) { - this.isGuardia = isGuardia; - } - - public TcustPersonDetail getPersonafiltroSNAP() { - return personafiltroSNAP; - } - - public void setPersonafiltroSNAP(TcustPersonDetail personafiltroSNAP) { - this.personafiltroSNAP = personafiltroSNAP; - } - - public String getTipoTest() { - return tipoTest; - } - - public void setTipoTest(String tipoTest) { - this.tipoTest = tipoTest; - } - - public List getTipoDocumentoLst() { - return tipoDocumentoLst; - } - - public void setTipoDocumentoLst(List tipoDocumentoLst) { - this.tipoDocumentoLst = tipoDocumentoLst; - } - - public TcustPersonDetail getTcustPersonDetailPsicologo() { - return tcustPersonDetailPsicologo; - } - - public void setTcustPersonDetailPsicologo( - TcustPersonDetail tcustPersonDetailPsicologo) { - this.tcustPersonDetailPsicologo = tcustPersonDetailPsicologo; - } - - public Boolean getIsPasaporte() { - return isPasaporte; - } - public void setIsPasaporte(Boolean isPasaporte) { - this.isPasaporte = isPasaporte; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/RespuestasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/RespuestasController.java.svn-base deleted file mode 100644 index 53aa372..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/RespuestasController.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.eval.TarmRespuestas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RespuestasController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public RespuestasController() throws Exception { - super(TarmRespuestas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static List findxPregunta(String pregunta) { - try {//TgeneCatalogDetailKey - RespuestasController cc = new RespuestasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cpregunta", pregunta); - cc.addFilter("isactive", "Y"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static String findxPk(Integer pk) { - try {//TgeneCatalogDetailKey - RespuestasController cc = new RespuestasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", pk.toString()); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0).getEscorrecta(); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/TestConocimientosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/TestConocimientosController.java.svn-base deleted file mode 100644 index c2537ca..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/eval/.svn/text-base/TestConocimientosController.java.svn-base +++ /dev/null @@ -1,571 +0,0 @@ -package com.fp.frontend.controller.armas.eval; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.MovimientoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.ArmaController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.PreguntasParaEvaluacionesController; -import com.fp.frontend.controller.armas.solicitud.ArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.frontend.webservices.snap.cedula.ClienteCedula; -import com.fp.frontend.webservices.snap.ruc.ClienteRUC; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.date.TgeneNotAccountingDay; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -import ec.gob.registrocivil.consultacedula.Cedula; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - -/** - * @author Andres Cevallos - * Clase la cual valida que un usuario pueda rendir una evaluacion. Almacena la evaluacion en la Base de Datos - */ -@ManagedBean -@ViewScoped -public class TestConocimientosController extends AbstractController { - - /** - * Persona a ser evaluada - */ - private TcustPersonDetail evaluado; - - /** - *Controlador inyectado EvaluacionController - */ - @ManagedProperty(value = "#{evaluacionController}") - private EvaluacionController evaluacionController; - private TarmGuardias guardia; - /** - *Controlador inyectado DetallePreguntasController - */ - @ManagedProperty(value = "#{detallePreguntasController}") - private DetallePreguntasController detallePreguntas; - - private TcustPersonDetail evaluadoSNAP; - - /** - *Controlador Fecha - */ - private Date fecha; - - /** - *Booleano que activa la opcion de guardar - */ - private Boolean guardar; - /** - *Tipo de persona referenciada en el catalogo - */ - TgeneCatalogDetail lTipoPersona; - /** - *numero de intentos - */ - Integer numeroIntentos; - /** - *intento actual - */ - Long intento; - /** - *Referencia en el catalogo del tipo de evaluacion - */ - private List ltipoevaluacion; - /** - *Lista de las preguntas y respuestas de una evaluacion - */ - private List levaluacion; - private String tipoevaluacion; - - private boolean bloquear = Boolean.FALSE; - - private TcustPersonDetail compania; - - public TestConocimientosController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @PostConstruct - private void postconstruct() { - - - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "TCONOCIMIENTO"; - setLtipoevaluacion(CatalogDetailController.find("TIPOEVALUACION")); - fecha = new Date(); - tipoevaluacion = "CONOCIMIENTO"; - numeroIntentos=ParametersController.find("INTENTOS", "1").getNumbervalue().intValue(); - guardar=false; - - - - // CARGAR INFORMACION DEL USUARIO LOGUEADO DEL SNAP - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - evaluado = PersonLovController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - evaluacionController.setTipoTest("CONOCIMIENTO"); - evaluacionController.queryByTipoEvaluacion(tsafeUserDetail.getPk().getPersoncode().toString(), tipoevaluacion); - - guardia=GuardiasController.findxcguardia(evaluado.getPk().getPersoncode().toString()); - lTipoPersona=CatalogDetailController.findxCodigoCodcatalogo(evaluado.getPersontypecatalog(), evaluado.getPersontypecatalogcode()); - -// super.create(); -// this.record.setPersoncode(evaluado.getPk().getPersoncode()); -// this.record.getModifiedData().put("nombre", evaluado.getName()); -// this.record.getModifiedData().put("identificacion", evaluado.getIdentification()); -// this.record.getModifiedData().put("tipopersona", lTipoPersona.getDescription()); - - - - if(evaluado.getIdentification() == null || evaluado.getIdentification() == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - - if(evaluado.getIdentificationcatalog().equals("CED")){ - // valido validez CEDULA - if(!ValidateIdentification.cedula(evaluado.getIdentification())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - evaluadoSNAP=buscarPersonaSnap(evaluado.getIdentification(),evaluado.getIdentificationcatalog()); - - }else if(evaluado.getIdentificationcatalog().equals("RUC")){ - // valido validez RUC - if(!ValidateIdentification.ruc(evaluado.getIdentification())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - evaluadoSNAP=buscarPersonaSnap(evaluado.getIdentification(),evaluado.getIdentificationcatalog()); - } - else{ - // PASAPORTE - evaluadoSNAP = new TcustPersonDetail(); - evaluadoSNAP.setName(evaluado.getName()); - evaluadoSNAP.setIdentification(evaluado.getIdentification()); - evaluadoSNAP.setIdentificationcatalog("PAS"); - evaluadoSNAP.setIdentificationcatalogcode("IDENTIFICATION"); - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getTipoevaluacion() { - return tipoevaluacion; - } - - public void setTipoevaluacion(String tipoevaluacion) { - this.tipoevaluacion = tipoevaluacion; - } - - /** - * Abre el lov donde se realiza la evaluacion. Valida la fecha en la que se puede dar la prueba y el numero de intentos - */ - public void openTest() { - if(evaluado==null){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_seleccionepersona")); - return; - } - - if(EvaluacionController.find(evaluado.getPk().getPersoncode().toString(), "PSICOLOGICA") == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("lbl_psicologicanecesaria")); - return; - } -// if(guardia==null){ -// MessageHelper.setMessageError(MsgControlArmas.getProperty("lbl_psicologicanecesaria")); -// return; -// } -// if(tipoevaluacion==null){ -// MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_tipoevaluacion")); -// } - if(numeroIntentos>EvaluacionController.findIntentosReprobados(evaluado.getPk().getPersoncode().toString(), tipoevaluacion)){ - intento=EvaluacionController.findIntentosReprobados(evaluado.getPk().getPersoncode().toString(), tipoevaluacion).longValue()+1; - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_numerointentos")); - return; - } -// if(EvaluacionController.findIntentos(evaluado.getPk().getPersoncode().toString(), tipoevaluacion)!=0) -// if(fecha.getTime()< EvaluacionController.findFecha(evaluado.getPk().getPersoncode().toString(), tipoevaluacion).getFechapreox().getTime()){ -// MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechaprox") +" " +EvaluacionController.findFecha(evaluado.getPk().getPersoncode().toString(), tipoevaluacion).getFechapreox()); -// return; -// } - - Map> params = new HashMap<>(); - - ConocimientoLovController.openLov(params,evaluado,tipoevaluacion); - - } - - /** - * Funcion que llama a una evaluacion - * @param event - * @throws Exception - */ - public void onReturnOpenTest(SelectEvent event) throws Exception{ - EvaluacionCompleta eval = new EvaluacionCompleta(); - eval = (EvaluacionCompleta) event.getObject(); - ingresarDatosEvaluacion(); - ingresarDetalleEvaluacion(eval); - guardar=true; - - save(); - } - - /** - * Llama al record de evaluaciones y carga los datos que se llevaran a la base - * @throws Exception - */ - public void ingresarDatosEvaluacion() throws Exception{ - evaluacionController.create(); - Date fecha = new Date(); - Date fechalaboral=new Date(); - Integer dias = null; - try{ - dias=ParametersController.find("INTENTOS", "1").getNumbervalue().intValue(); - } - catch(Exception e){ - e.printStackTrace(); - } - if(dias== null || dias<=0){ - dias=2; - } - Calendar calendario = Calendar.getInstance(); - for(int i=0;i> params = new HashMap<>(); -// PersonLovController.openLov(params); -// } - - -// /** -// * Love que regresa la informacion de una persona -// * @param event -// * @throws Exception -// */ -// public void onReturnPersonLov(SelectEvent event) throws Exception { -// setEvaluado( (TcustPersonDetail) event.getObject()); -// if(evaluado.getPersontypecatalog()==null){ -// lTipoPersona=null; -// return; -// } -// lTipoPersona=CatalogDetailController.findxCodigoCodcatalogo(evaluado.getPersontypecatalog(), evaluado.getPersontypecatalogcode()); -//// guardia=GuardiasController.findxcguardia(evaluado.getPk().getPersoncode().toString()); -//// if(guardia==null){ -//// MessageHelper.setMessageError(MsgControlArmas.getProperty("lbl_psicologicanecesaria")); -//// } -// } - - /** - *Limpia la persona seleccionada - */ - public void limpiar(){ - evaluado= null; - lTipoPersona=null; - bloquear=false; - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save() { - try { - if(!guardar) - { - return; - } - Request request = this.callerhelper.getRequest(); - DtoSave dtosavevaluacion = this.evaluacionController.getDtoSave(true); - HashMap msave = new HashMap(); - msave.put(evaluacionController.getBeanalias(), dtosavevaluacion); // adicionar metadata de mantenimiento para cada tabla. - dtosavevaluacion.setPosition(1); - - - DtoSave dtosavepreguntas = this.detallePreguntas.getDtoSave(true); - - msave.put(detallePreguntas.getBeanalias(), dtosavepreguntas); // adicionar metadata de mantenimiento para cada tabla. - dtosavepreguntas.setPosition(2); - - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - - - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("lbl_examenfinalizado")); - String calificacion =(String) resp.get("result"); - if(calificacion.equals("APR")){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("lbl_aprobado")); - } - else{ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("lbl_reprobado")+", Debe Realizar el Test Nuevamente"); //+"."+MsgControlArmas.getProperty("msg_fechaprox") +" " +EvaluacionController.findFecha(evaluado.getPk().getPersoncode().toString(), tipoevaluacion).getFechapreox()); - } - - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - finally { - guardar=false; - evaluacionController.clearAll(); - detallePreguntas.clearAll(); - bloquear=true; - init(); - - } - } - - /** - * Método para buscar a la persona en la snap - * @param documento - */ - public TcustPersonDetail buscarPersonaSnap(String documento,String tipoDocumento){ - if(tipoDocumento.equals("CED")){ - Cedula cedula= ClienteCedula.obtenerCedula(documento); - if(cedula!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(cedula.getNombre()); - detail.setIdentification(cedula.getCedula()); - detail.setIdentificationcatalog("CED"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - }else { - Contribuyente contribuyente= ClienteRUC.obtenerRUC(documento); - if(contribuyente!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(contribuyente.getRazonSocial()); - detail.setIdentification(contribuyente.getNumeroRuc()); - detail.setIdentificationcatalog("RUC"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - } - } - - - public EvaluacionController getEvaluacionController() { - return evaluacionController; - } - - public void setEvaluacionController(EvaluacionController evaluacionController) { - this.evaluacionController = evaluacionController; - } - - public DetallePreguntasController getDetallePreguntas() { - return detallePreguntas; - } - - public void setDetallePreguntas(DetallePreguntasController detallePreguntas) { - this.detallePreguntas = detallePreguntas; - } - - public TcustPersonDetail getEvaluado() { - return evaluado; - } - - public void setEvaluado(TcustPersonDetail evaluado) { - this.evaluado = evaluado; - } - - public List getLtipoevaluacion() { - return ltipoevaluacion; - } - - public void setLtipoevaluacion(List ltipoevaluacion) { - this.ltipoevaluacion = ltipoevaluacion; - } - - public List getLevaluacion() { - return levaluacion; - } - - public void setLevaluacion(List levaluacion) { - this.levaluacion = levaluacion; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public TgeneCatalogDetail getlTipoPersona() { - return lTipoPersona; - } - - public void setlTipoPersona(TgeneCatalogDetail lTipoPersona) { - this.lTipoPersona = lTipoPersona; - } - - public boolean isBloquear() { - return bloquear; - } - - public void setBloquear(boolean bloquear) { - this.bloquear = bloquear; - } - - public TcustPersonDetail getCompania() { - return compania; - } - - public void setCompania(TcustPersonDetail compania) { - this.compania = compania; - } - - public TarmGuardias getGuardia() { - return guardia; - } - - public void setGuardia(TarmGuardias guardia) { - this.guardia = guardia; - } - - public TcustPersonDetail getEvaluadoSNAP() { - return evaluadoSNAP; - } - - public void setEvaluadoSNAP(TcustPersonDetail evaluadoSNAP) { - this.evaluadoSNAP = evaluadoSNAP; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/entries deleted file mode 100644 index 97fa85b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/entries +++ /dev/null @@ -1,1082 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ReporteCompInscritaController.java -file - - - - -2022-07-28T03:39:53.170589Z -82c63be7dbdf0c94b02e1226f1964deb -2019-06-04T23:56:53.400737Z -4621 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -13725 - -ReporteTipoArmasController.java -file - - - - -2022-07-28T03:39:53.171589Z -db29e2ec0885914a2a9ff6246d880e28 -2018-12-03T11:43:03.396680Z -4616 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9339 - -ProvinceLovController.java -file - - - - -2022-07-28T03:39:53.174589Z -4b964478098f8a75598daa5c94e96fb5 -2014-09-08T05:32:36.948396Z -590 -abenalcazar - - - - - - - - - - - - - - - - - - - - - -6230 - -TotalArmasController.java -file - - - - -2022-07-28T03:39:53.174589Z -04f0a0449918f7bc8d04ced51dea5afc -2014-09-08T04:31:57.354359Z -581 -acevallos - - - - - - - - - - - - - - - - - - - - - -4197 - -ReporteCashManagmentController.java -file - - - - -2022-07-28T03:39:53.175589Z -afa0c6471808ac6b72972890ad1fddd6 -2015-11-19T22:50:14.672068Z -4321 -fpazmino - - - - - - - - - - - - - - - - - - - - - -18799 - -VisualizacionSitiosAlmacenamientoController.java -file - - - - -2022-07-28T03:39:53.176589Z -abdc6707337ca16d6c3023df38048d31 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7284 - -ReporteTipoArma.java -file - - - - -2022-07-28T03:39:53.175589Z -2c316a0eef0605616864287845fa6217 -2019-06-04T23:56:53.400737Z -4621 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -15930 - -ConsultaArmasVentaController.java -file - - - - -2022-07-28T03:39:53.176589Z -2b69a46eccc6e632f6594028b8b44f55 -2015-06-28T11:36:41.606576Z -4151 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5400 - -ReporteImportacionProduccionController.java -file - - - - -2022-07-28T03:39:53.176589Z -7c3ce5acf9a7e723e1faaaf0480147b4 -2015-09-30T04:00:04.739636Z -4289 -fpazmino - - - - - - - - - - - - - - - - - - - - - -11364 - -VentaController.java -file - - - - -2022-07-28T03:39:53.177589Z -1606d2e09b5609b8ef350386d6d8ee8f -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -29720 - -CargaController.java -file - - - - -2022-07-28T03:39:53.177589Z -9415fff3c7432e7384c35f0c9beb735d -2015-12-29T13:56:10.923396Z -4355 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4883 - -ArmaVentaController.java -file - - - - -2022-07-28T03:39:53.177589Z -813ed754eddccb7d1539efc2777b0f37 -2015-06-28T11:36:41.606576Z -4151 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7170 - -ReporteNumArmasEstadoController.java -file - - - - -2022-07-28T03:39:53.178589Z -d610d12e9ee54da017f27047243bb1d4 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -14043 - -MovimientoController.java -file - - - - -2022-07-28T03:39:53.178589Z -9a7ab3a086693d16e505a6fdf5534039 -2014-10-25T04:23:49.396971Z -1934 -acevallos - - - - - - - - - - - - - - - - - - - - - -3324 - -VentasVariasArmasController.java -file - - - - -2022-07-28T03:39:53.179589Z -a53998e419b17ad4b582e92f23a73390 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -22075 - -ReporteTipoFabricacionController.java -file - - - - -2022-07-28T03:39:53.170589Z -15bdd636c8ba65cf78200d01eea35297 -2019-06-04T23:56:53.400737Z -4621 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -13859 - -ReportePermisosAutorizacionesSuspController.java -file - - - - -2022-07-28T03:39:53.170589Z -109bca65ade5290bcc0363e0415d9d7b -2021-09-08T20:05:22.862791Z -4642 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6217 - -RegistroArmController.java -file - - - - -2022-07-28T03:39:53.171589Z -f0077208209612d0674d481395df3e2e -2015-07-11T05:56:57.512540Z -4192 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5086 - -DesaduanizacionOldController.java -file - - - - -2022-07-28T03:39:53.171589Z -72994dd7d67842ca0dd98837ca5e65b4 -2016-04-18T16:22:46.835695Z -4536 -fpazmino - - - - - - - - - - - - - - - - - - - - - -17430 - -DesaduanizacionController.java -file - - - - -2022-07-28T03:39:53.172589Z -85407c0209b8c2101dcecdb5ebc3acc4 -2019-01-14T03:06:37.641608Z -4617 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -21623 - -ReporteCompaniasCCentrol.java -file - - - - -2022-07-28T03:39:53.172589Z -195a816334625f52a5fee305eeb109b7 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -13834 - -ReporteDecomisoController.java -file - - - - -2022-07-28T03:39:53.173589Z -3455b4ca97dbfcb17fdbbf7d4001aad8 -2015-03-04T10:57:48.692824Z -3896 -dlopez - - - - - - - - - - - - - - - - - - - - - -11524 - -ReporteTipoAutorizacionController.java -file - - - - -2022-07-28T03:39:53.173589Z -6a38b78664677c59eefdd3765d7efbe2 -2019-06-04T23:56:53.400737Z -4621 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -15900 - -ReporteArmasController.java -file - - - - -2022-07-28T03:39:53.173589Z -3f7b67b51aea35cdeae92e957176dafe -2021-12-15T03:30:14.444318Z -4658 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -14548 - -ReporteArmasPrevImportacionController.java -file - - - - -2022-07-28T03:39:53.174589Z -df6b7e3f3ee87d697893bec403be0b25 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2766 - -CargaDetalleController.java -file - - - - -2022-07-28T03:39:53.175589Z -8be65f0c88d8184609bcdb6455a9dde7 -2015-12-29T13:56:10.923396Z -4355 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3439 - -VentaTraspasoDominioController.java -file - - - - -2022-07-28T03:39:53.176589Z -d017224d9e7f1038cb3c0131bcfa2f73 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -10790 - -ArmaExcell.java -file - - - - -2022-07-28T03:39:53.175589Z -75fd7088b92bc8223825aef799aee156 -2014-10-22T10:19:20.410968Z -1838 -ogarcia - - - - - - - - - - - - - - - - - - - - - -6969 - -ReporteTramiteCentroController.java -file - - - - -2022-07-28T03:39:53.177589Z -b5250d142045f5f9be3732160108e4d0 -2016-03-18T22:08:37.710677Z -4517 -fpazmino - - - - - - - - - - - - - - - - - - - - - -13459 - -ReporteNumPermisosController.java -file - - - - -2022-07-28T03:39:53.178589Z -dfad06bad8039e7ce96f5e85c9a18416 -2019-06-04T23:56:53.400737Z -4621 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -15005 - -ReportePermisosAutorizacionesCconController.java -file - - - - -2022-07-28T03:39:53.178589Z -cb683ae5d00242beaea5b3a922fe4a86 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4793 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaExcell.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaExcell.java.svn-base deleted file mode 100644 index d0457ce..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaExcell.java.svn-base +++ /dev/null @@ -1,302 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -//import com.fp.persistence.parmas.soli.TarmArmasProduccion; -import com.fp.persistence.parmas.soli.TarmCustodiaTemporal; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - - -public class ArmaExcell { - - private String textoNumero; - private int numero; - - private String serie; - private String clase; - private String longitud; - private String tipo; - private String calibre; - private String color; - private String marca; - - private String textoCantidad; - private double cantidad; - - private String unidadMedidaCantidad; - - private String textoPeso; - private double peso; - - private String unidadMedidaPeso; - - private Boolean camposIncompletos=false; - private Boolean duplicada=false; - private Boolean existeCatalogo=false; - private Boolean existeTARMTIPOARMAEXPLOSIVO=false; - private Boolean cupoInsuficiente=false; - private Boolean existeBaseDatos=false; - - private TgeneCatalogDetail catalogoColor; - private TgeneCatalogDetail catalogoMarca; - private TgeneCatalogDetail catalogoClase; - private TgeneCatalogDetail catalogoLongitud; - private TgeneCatalogDetail catalogoTipoArma; - private TgeneCatalogDetail catalogoCalibre; - - private TarmComercianteCupo cupo; - private TarmTotalPersona totalPersona; - private TarmTipoArmaExplosivo tipoArmaExplosivo; - private TarmArmas arma; - //private TarmArmasProduccion arma; - - public ArmaExcell() { - super(); - // TODO Auto-generated constructor stub - } - - public int getNumero() { - return numero; - } - public void setNumero(int numero) { - this.numero = numero; - } - public String getSerie() { - return serie; - } - public void setSerie(String serie) { - this.serie = serie; - } - public String getClase() { - return clase; - } - public void setClase(String clase) { - this.clase = clase; - } - public String getLongitud() { - return longitud; - } - public void setLongitud(String longitud) { - this.longitud = longitud; - } - public String getTipo() { - return tipo; - } - public void setTipo(String tipo) { - this.tipo = tipo; - } - public String getCalibre() { - return calibre; - } - public void setCalibre(String calibre) { - this.calibre = calibre; - } - public String getColor() { - return color; - } - public void setColor(String color) { - this.color = color; - } - public String getMarca() { - return marca; - } - public void setMarca(String marca) { - this.marca = marca; - } - - public double getCantidad() { - return cantidad; - } - - public void setCantidad(double cantidad) { - this.cantidad = cantidad; - } - - public double getPeso() { - return peso; - } - - public void setPeso(double peso) { - this.peso = peso; - } - - public Boolean getCamposIncompletos() { - return camposIncompletos; - } - public void setCamposIncompletos(Boolean camposIncompletos) { - this.camposIncompletos = camposIncompletos; - } - - public String getTextoNumero() { - return textoNumero; - } - - public void setTextoNumero(String textoNumero) { - this.textoNumero = textoNumero; - } - - public String getTextoCantidad() { - return textoCantidad; - } - - public void setTextoCantidad(String textoCantidad) { - this.textoCantidad = textoCantidad; - } - - public String getTextoPeso() { - return textoPeso; - } - - public void setTextoPeso(String textoPeso) { - this.textoPeso = textoPeso; - } - - public String getUnidadMedidaCantidad() { - return unidadMedidaCantidad; - } - - public void setUnidadMedidaCantidad(String unidadMedidaCantidad) { - this.unidadMedidaCantidad = unidadMedidaCantidad; - } - - public String getUnidadMedidaPeso() { - return unidadMedidaPeso; - } - - public void setUnidadMedidaPeso(String unidadMedidaPeso) { - this.unidadMedidaPeso = unidadMedidaPeso; - } - - public Boolean getDuplicada() { - return duplicada; - } - - public void setDuplicada(Boolean duplicada) { - this.duplicada = duplicada; - } - - public Boolean getExisteCatalogo() { - return existeCatalogo; - } - - public void setExisteCatalogo(Boolean existeCatalogo) { - this.existeCatalogo = existeCatalogo; - } - - public Boolean getExisteTARMTIPOARMAEXPLOSIVO() { - return existeTARMTIPOARMAEXPLOSIVO; - } - - public void setExisteTARMTIPOARMAEXPLOSIVO(Boolean existeTARMTIPOARMAEXPLOSIVO) { - this.existeTARMTIPOARMAEXPLOSIVO = existeTARMTIPOARMAEXPLOSIVO; - } - - public Boolean getCupoInsuficiente() { - return cupoInsuficiente; - } - - public void setCupoInsuficiente(Boolean cupoInsuficiente) { - this.cupoInsuficiente = cupoInsuficiente; - } - - public TgeneCatalogDetail getCatalogoColor() { - return catalogoColor; - } - - public void setCatalogoColor(TgeneCatalogDetail catalogoColor) { - this.catalogoColor = catalogoColor; - } - - public TgeneCatalogDetail getCatalogoMarca() { - return catalogoMarca; - } - - public void setCatalogoMarca(TgeneCatalogDetail catalogoMarca) { - this.catalogoMarca = catalogoMarca; - } - - public TgeneCatalogDetail getCatalogoClase() { - return catalogoClase; - } - - public void setCatalogoClase(TgeneCatalogDetail catalogoClase) { - this.catalogoClase = catalogoClase; - } - - public TgeneCatalogDetail getCatalogoLongitud() { - return catalogoLongitud; - } - - public void setCatalogoLongitud(TgeneCatalogDetail catalogoLongitud) { - this.catalogoLongitud = catalogoLongitud; - } - - public TgeneCatalogDetail getCatalogoTipoArma() { - return catalogoTipoArma; - } - - public void setCatalogoTipoArma(TgeneCatalogDetail catalogoTipoArma) { - this.catalogoTipoArma = catalogoTipoArma; - } - - public TgeneCatalogDetail getCatalogoCalibre() { - return catalogoCalibre; - } - - public void setCatalogoCalibre(TgeneCatalogDetail catalogoCalibre) { - this.catalogoCalibre = catalogoCalibre; - } - - public TarmComercianteCupo getCupo() { - return cupo; - } - - public void setCupo(TarmComercianteCupo cupo) { - this.cupo = cupo; - } - - public Boolean getExisteBaseDatos() { - return existeBaseDatos; - } - - public void setExisteBaseDatos(Boolean existeBaseDatos) { - this.existeBaseDatos = existeBaseDatos; - } - - public TarmTotalPersona getTotalPersona() { - return totalPersona; - } - - public void setTotalPersona(TarmTotalPersona totalPersona) { - this.totalPersona = totalPersona; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public TarmArmas getArma() { - return arma; - } - - public void setArma(TarmArmas arma) { - this.arma = arma; - } - - /* - public TarmArmasProduccion getArma() { - return arma; - } - - public void setArma(TarmArmasProduccion arma) { - this.arma = arma; - } - */ - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaVentaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaVentaController.java.svn-base deleted file mode 100644 index c31c858..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ArmaVentaController.java.svn-base +++ /dev/null @@ -1,189 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora para la entidad TarmArma - * Incluye metodo de consulta para la busqueda de persona y registro - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmaVentaController extends AbstractController { - - //Variabgles globales - - /** - *String el cual tendr un nombre de filtro - */ - private String csolicitud; - - - public ArmaVentaController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "ARMAS"; - this.filtro(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - //this.addFilter("estado", "REG"); - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - //Filter filtrofecha=new Filter(); - //filtrofecha.setSql( - String filtrofecha= "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado in("+MsgControlArmas.getProperty("codigo_estado_arma_busqueda_venta")+") and (t.peso>0 or t.cantidad>0)"; - //dto.addFiltro(filtrofecha); - - String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(filtrofecha +" and "+sql); - dto.addFiltro(filtro); - } - else{ - return; - } - - dto.setOrderby("pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para armar el registro - * @param lsolicitud - * @throws Exception - */ - public void filtro() throws Exception{ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - RegistroArmController registroArmas = new RegistroArmController(); - registroArmas.init(); - registroArmas.setRecperpage(3000000); - registroArmas.addFilter("personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - registroArmas.query(); - - for(TarmRegistroArmas soli : registroArmas.getLrecord()){ - if(csolicitud==null){ - csolicitud="(cregistro="+soli.getPk(); - } - else{ - csolicitud+=" or cregistro="+soli.getPk(); - } - } - csolicitud+=")"; - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.netbeans-base deleted file mode 100644 index 8dd67f2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.netbeans-base +++ /dev/null @@ -1,171 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.InventarioSubidoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; -import com.fp.persistence.parmas.soli.TarmArmas; - -/** - * Clase controladora del bean TarmCarga. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CargaController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CargaController() throws Exception { - super(TarmCarga.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CARGA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void update(TarmCarga bean) throws Exception { - this.setRecord(bean); - super.update(); - } - - - /** - * Obtiene una carga por codigo AUCP - * @param codigopersona - * @return - */ - public static TarmCarga findByAUCP(String aucp) { - try { - CargaController cc = new CargaController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("aucp", aucp); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TarmCarga - * @param personcode categoria - * @return lrecord Lista de objetos TarmCarga - */ - public static List findXPersonaYCategoria(String personcode, String categoria, String tipoCarga) { - try { - CargaController cc = new CargaController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("personcode", personcode); - cc.addFilter("categoria", categoria); - cc.addFilter("tipocarga", tipoCarga); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.svn-base deleted file mode 100644 index 8dd67f2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaController.java.svn-base +++ /dev/null @@ -1,171 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.InventarioSubidoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; -import com.fp.persistence.parmas.soli.TarmArmas; - -/** - * Clase controladora del bean TarmCarga. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CargaController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CargaController() throws Exception { - super(TarmCarga.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CARGA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void update(TarmCarga bean) throws Exception { - this.setRecord(bean); - super.update(); - } - - - /** - * Obtiene una carga por codigo AUCP - * @param codigopersona - * @return - */ - public static TarmCarga findByAUCP(String aucp) { - try { - CargaController cc = new CargaController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("aucp", aucp); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TarmCarga - * @param personcode categoria - * @return lrecord Lista de objetos TarmCarga - */ - public static List findXPersonaYCategoria(String personcode, String categoria, String tipoCarga) { - try { - CargaController cc = new CargaController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("personcode", personcode); - cc.addFilter("categoria", categoria); - cc.addFilter("tipocarga", tipoCarga); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaDetalleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaDetalleController.java.svn-base deleted file mode 100644 index ca297c1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/CargaDetalleController.java.svn-base +++ /dev/null @@ -1,120 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmCargaDetalle; - -/** - * Clase controladora del bean TarmCargaDetalle. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CargaDetalleController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CargaDetalleController() throws Exception { - super(TarmCargaDetalle.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CARGADETALLE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void update(TarmCargaDetalle bean) throws Exception { - this.setRecord(bean); - super.update(); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ConsultaArmasVentaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ConsultaArmasVentaController.java.svn-base deleted file mode 100644 index 8de32ed..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ConsultaArmasVentaController.java.svn-base +++ /dev/null @@ -1,124 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ConsultaArmasVentaController extends AbstractController { - - public ConsultaArmasVentaController() throws Exception { - super(TarmArmas.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "CONSULTAARMASVENTA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - Filter filtro=new Filter(); - String filtrofecha= "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado in("+MsgControlArmas.getProperty("codigo_estado_arma_busqueda_venta")+")"; - filtro.setSql(filtrofecha); - dto.addFiltro(filtro); - dto.setOrderby("pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ARMASCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionController.java.svn-base deleted file mode 100644 index 7d53aea..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionController.java.svn-base +++ /dev/null @@ -1,505 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.armas.solicitud.SolicitudController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.armas.solicitud.TarmSolicitudTramiteController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DesaduanizacionController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{solicitudTramiteController}") - private SolicitudTramiteController tarmSolicitudTramiteController; - - private Date fechaDesaduanizacion; - private List tramites; - //private TarmTramite tramiteSeleccionado; - private String noSolicitud; - //private List larmas=new ArrayList(); - private Boolean salvarDeshabilitado=false; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - /** - * Listado de colores - */ - private List lcolor; - - /*@ManagedProperty(value = "#{tarmSolicitudArmasController}") - private TarmSolicitudArmasController tarmSolicitudArmasController;*/ - - - public DesaduanizacionController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta -// super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - noSolicitud = null; -// this.record=new TarmArmas(); - this.beanalias = "DESADUANIZACION"; - lcolor = CatalogDetailController.find("COLOR"); - this.create(); - - //Fecha de desaduanizacion - this.fechaDesaduanizacion=Calendar.getInstance().getTime(); - - //Cargando los tramites - caragarTramiteSolicitud(); - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - this.salvarDeshabilitado = true; - - tarmSolicitudTramiteController.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void caragarTramiteSolicitud(){ - this.tramites=TarmSolicitudTramiteController.findTramites(); - } - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - - SubQuery subqueryCalibreD= new SubQuery("TgeneCatalogDetail","description","calibreD","i.pk.catalog= (select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibreD); - - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - return dto; - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - Filter filtro = new Filter(); - if(this.getMfilelds().get("cregistro") != null){ - filtro.setSql(this.getMfilelds().get("cregistro").toString() +" and t.estado = 'IMPO' and t.lote is null " - + " and t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)" - + " and t.pk in (select tar.codigoarma from TarmArmas tar where tar.pk in( select ar.pk.carma from TarmSolicitudArmas ar where ar.pk.csolicitud= '"+this.noSolicitud+"'))" - + " and (t.peso>0 or t.cantidad>0)"); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); -// for(int i = 0; i(); -// MessageHelper.setMessageError(resp); -// } else { -// lrecord = (List) resp.get(beanalias); -// if(!lrecord.isEmpty()){ -// record=lrecord.get(0); -// } -// super.postQuery(lrecord); -// Collections.sort(lrecord,new Comparator(){ -// public int compare(TarmArmas f1, TarmArmas f2) -// { -// return f1.getModifiedData().get("tipo").toString().compareTo(f1.getModifiedData().get("tipo").toString()); -// } -// }); -// } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public boolean validarSerieDuplicadas(){ - Set lista= new HashSet(); - for(TarmArmas ar:this.lrecord){ - lista.add(ar.getLote()); - } - if(this.lrecord.size()>lista.size()){ - return true; - } - return false; - - } - - - @Override - public void save() { - try { - for(TarmArmas armas:this.lrecord){ - this.record = armas; - this.record.setEstado("REG"); - this.record.setColorcodigo("COLOR"); - Calendar calendario=Calendar.getInstance(); - calendario.setTime(this.fechaDesaduanizacion); - this.record.setFdesaduanizacion(new java.sql.Date(calendario.getTimeInMillis())); - if(this.record.getLote() != null){ - if(this.validarSerieDuplicadas()){ - MessageHelper.setMessageError("LOS ARTCULOS NO PUEDEN TENER SERIES IGUALES"); - return; - } - update(); - }else { - StringBuilder err=new StringBuilder("EL CAMPO SERIE NO PUEDE ESTAR VACO"); - //err.append(this.record.getPk()); - MessageHelper.setMessageError(err.toString()); - return; - } - - } - HashMap msave = new HashMap(); - Request request = callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - for(TarmSolicitudTramite tramite:tramites){ - if(this.noSolicitud.equals(tramite.getPk().getCsolicitud())){ - tarmSolicitudTramiteController.setRecord(tramite); - break; - } - } - - -// tarmSolicitudTramiteController.getRecord().setEstadotramite("FIN"); -// tarmSolicitudTramiteController.update(); -// DtoSave dtosaveTramite = tarmSolicitudTramiteController.getDtoSave(); -// msave.put(tarmSolicitudTramiteController.getBeanalias(), dtosaveTramite); // adicionar metadata de mantenimiento para cada tabla. - request.getModifiedData().put("noSolicitud", noSolicitud); - request.setSaveTables(msave); - request.getModifiedData().put("REQUIEREDESGLOCE", Boolean.FALSE); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); -// tarmSolicitudTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.salvarDeshabilitado=true; - caragarTramiteSolicitud(); - this.query(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void desaduanizarArmas() { - try { - System.out.println("*** INICIA PROCESO DESADUANIZACION ARMAS: " + noSolicitud); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - TarmSolicitud solicitudObj = SolicitudController.findSolicitudxcodsolicitud(noSolicitud); - if(solicitudObj!=null){ - request.getModifiedData().put("SOLICITUD", solicitudObj); - request.getModifiedData().put("REQUIEREDESGLOCE", Boolean.TRUE); - } - else{ - MessageHelper.setMessageError("NO EXISTE UN CODIGO DE AUCP ASOCIADO A LA SOLICITUD"); - return; - } - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - querydatabase(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - -// try { -// System.out.println("*** INICIA PROCESO DESADUANIZACION ARMAS: " + noSolicitud); -// Request request = this.callerhelper.getRequest(); -//// request.modifiedData().put("querytype", "P"); -//// request.modifiedData().put("queryalias", "DESGLOCEDESADUANIZACION"); -// TarmSolicitud solicitudObj = SolicitudController.findSolicitudxcodsolicitud(noSolicitud); -// if(solicitudObj!=null){ -// request.getModifiedData().put("SOLICITUD", solicitudObj); -// } -// else{ -// MessageHelper.setMessageError("NO EXISTE UN CODIGO DE AUCP ASOCIADO A LA SOLICITUD"); -// return; -// } -// Response resp = this.callerhelper.executeQuery(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { -// this.lrecord = new ArrayList(); -// MessageHelper.setMessageError(resp); -// } else { -// this.lrecord = (List) resp.get(this.beanalias); -// } -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } - } - - /** - * Obtiene un arma por su codigo - * @param codigopersona - * @return - */ - public static TarmArmas findByCode(String carma) { - try { - DesaduanizacionController cc = new DesaduanizacionController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("pk", carma); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public Date getFechaDesaduanizacion() { - return fechaDesaduanizacion; - } - - public void setFechaDesaduanizacion(Date fechaDesaduanizacion) { - this.fechaDesaduanizacion = fechaDesaduanizacion; - } - - public void setDatos(final AjaxBehaviorEvent event){ - try { - TarmSolicitudTramite soltra = TarmSolicitudTramiteController.findPorCSolicitud(this.noSolicitud); - // Verificacion del desgloce de desaduanizacion - TarmSolicitud solicitudObj = SolicitudController.findSolicitudxcodsolicitud(soltra.getPk().getCsolicitud()); - TarmCarga carga = CargaController.findByAUCP(solicitudObj.getAucp()); - - this.record=new TarmArmas(); - this.record.modifiedData().put("tipotramitedesc", soltra.modifiedData().get("tipotramitedesc")); - this.record.modifiedData().put("categoriadesc", soltra.modifiedData().get("categoriadesc")); - this.record.modifiedData().put("usodesc", soltra.modifiedData().get("usodesc")); - this.record.modifiedData().put("cedula", soltra.modifiedData().get("cedula")); - this.record.modifiedData().put("nombre", soltra.modifiedData().get("nombre")); - this.record.modifiedData().put("personcode", soltra.modifiedData().get("personcode")); - this.record.modifiedData().put("aucp", (solicitudObj.getAucp()!=null&&!solicitudObj.getAucp().isEmpty())?solicitudObj.getAucp():""); - TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(solicitudObj.getCcentrocontrol()); - if(centroControlObj!=null){ - String ccentrocontrol = CatalogDetailController.findxCodigoCodcatalogo( centroControlObj.getNombreinstitucion(), - centroControlObj.getNombreinstitucioncodigo()).getDescription(); - this.record.modifiedData().put("nombreCentroControl",(ccentrocontrol!=null&&!ccentrocontrol.isEmpty())?ccentrocontrol:""); - } - - TarmDocumentoHabilitante dochab = DocumentoHabilitanteController.findPorSolicitud(this.noSolicitud); - if(dochab != null){ - this.record.modifiedData().put("fechaemision", dochab.getFechaemision()); - } - - //cregistro propietario -// List regArmas = RegistroArmController.findxPersoncode(soltra.modifiedData().get("personcode").toString()); -// StringBuilder sql = new StringBuilder("cregistro in"); -// Integer aux=0; -// for(TarmRegistroArmas t :regArmas){ -// if(aux==0){ -// sql.append("("+t.getPk()); -// aux++; -// }else{ -// sql.append(","+t.getPk()); -// } -// } -// sql.append(")"); - //armas codigoarma que debe filtar - String sql = "cregistro in (Select r.pk from TarmRegistroArmas r where personcode="+soltra.modifiedData().get("personcode").toString()+")"; - addField("cregistro", sql); - this.salvarDeshabilitado = true; - if(carga.getEsdesaduanizado().equals("N")){ - RequestContext.getCurrentInstance().execute("PF('dialog').show()"); - } - else{ - querydatabase(); - - } - } catch (Exception e) { - // TODO: handle exception - } - } - - /** - * Metodo que indica las acciones asociadas de cerrar el dialogo sin desanuanizar - */ - public void cerrar() { - init(); - } - - public void habilitaGrabar(final AjaxBehaviorEvent event){ - Integer aux=0; - for(TarmArmas armas:this.lrecord){ - if(!this.lrecord.isEmpty() && armas.getLote() != null){ - aux++; - } - } - if(aux.compareTo(this.lrecord.size()) == 0){ - this.salvarDeshabilitado = false; - } - } - - public static long getSerialversionuid() { - return serialVersionUID; - } - - public List getTramites() { - return tramites; - } - - public void setTramites(List tramites) { - this.tramites = tramites; - } - - public String getNoSolicitud() { - return noSolicitud; - } - - public void setNoSolicitud(String noSolicitud) { - this.noSolicitud = noSolicitud; - } - - public Boolean getSalvarDeshabilitado() { - return salvarDeshabilitado; - } - - public void setSalvarDeshabilitado(Boolean salvarDeshabilitado) { - this.salvarDeshabilitado = salvarDeshabilitado; - } - - public SolicitudTramiteController getTarmSolicitudTramiteController() { - return tarmSolicitudTramiteController; - } - - public void setTarmSolicitudTramiteController( - SolicitudTramiteController tarmSolicitudTramiteController) { - this.tarmSolicitudTramiteController = tarmSolicitudTramiteController; - } - - public List getLcolor() { - return lcolor; - } - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionOldController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionOldController.java.svn-base deleted file mode 100644 index a417e6c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/DesaduanizacionOldController.java.svn-base +++ /dev/null @@ -1,408 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.armas.solicitud.TarmSolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.TarmSolicitudTramiteController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.eval.TarmDetallePreguntas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DesaduanizacionOldController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{solicitudTramiteController}") - private SolicitudTramiteController tarmSolicitudTramiteController; - - private Date fechaDesaduanizacion; - private List tramites; - //private TarmTramite tramiteSeleccionado; - private String noSolicitud; - //private List larmas=new ArrayList(); - private Boolean salvarDeshabilitado=false; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - /*@ManagedProperty(value = "#{tarmSolicitudArmasController}") - private TarmSolicitudArmasController tarmSolicitudArmasController;*/ - - - public DesaduanizacionOldController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta -// super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. -// this.lrecord = new ArrayList<>(); -// this.record=new TarmArmas(); - this.beanalias = "DESADUANIZACION"; -// this.create(); - - //Fecha de desaduanizacion - this.fechaDesaduanizacion=Calendar.getInstance().getTime(); - - //Cargando los tramites - caragarTramiteSolicitud(); - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - this.salvarDeshabilitado = true; - - tarmSolicitudTramiteController.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void caragarTramiteSolicitud(){ - this.tramites=TarmSolicitudTramiteController.findTramites(); - } - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - - SubQuery subqueryCalibreD= new SubQuery("TgeneCatalogDetail","description","calibreD","i.pk.catalog= (select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibreD); - - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - return dto; - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - Filter filtro = new Filter(); - if(this.getMfilelds().get("cregistro") != null){ - filtro.setSql(this.getMfilelds().get("cregistro").toString() +" and t.estado = 'IMPO' and t.lote is null " - + " and t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)" - + " and t.pk in (select tar.codigoarma from TarmArmas tar where tar.pk in( select ar.pk.carma from TarmSolicitudArmas ar where ar.pk.csolicitud= '"+this.noSolicitud+"'))" - + " and (t.peso>0 or t.cantidad>0)"); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); -// for(int i = 0; i(); -// MessageHelper.setMessageError(resp); -// } else { -// lrecord = (List) resp.get(beanalias); -// if(!lrecord.isEmpty()){ -// record=lrecord.get(0); -// } -// super.postQuery(lrecord); -// Collections.sort(lrecord,new Comparator(){ -// public int compare(TarmArmas f1, TarmArmas f2) -// { -// return f1.getModifiedData().get("tipo").toString().compareTo(f1.getModifiedData().get("tipo").toString()); -// } -// }); -// } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public boolean validarSerieDuplicadas(){ - Set lista= new HashSet(); - for(TarmArmas ar:this.lrecord){ - lista.add(ar.getLote()); - } - if(this.lrecord.size()>lista.size()){ - return true; - } - return false; - - } - - - @Override - public void save() { - try { - for(TarmArmas armas:this.lrecord){ - this.record = armas; - this.record.setEstado("REG"); - Calendar calendario=Calendar.getInstance(); - calendario.setTime(this.fechaDesaduanizacion); - this.record.setFdesaduanizacion(new java.sql.Date(calendario.getTimeInMillis())); - if(this.record.getLote() != null){ - if(this.validarSerieDuplicadas()){ - MessageHelper.setMessageError("LOS ARTCULOS NO PUEDEN TENER SERIES IGUALES"); - return; - } - update(); - }else { - StringBuilder err=new StringBuilder("EL CAMPO SERIE NO PUEDE ESTAR VACO"); - //err.append(this.record.getPk()); - MessageHelper.setMessageError(err.toString()); - return; - - } - - } - HashMap msave = new HashMap(); - Request request = callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - for(TarmSolicitudTramite tramite:tramites){ - if(this.noSolicitud.equals(tramite.getPk().getCsolicitud())){ - tarmSolicitudTramiteController.setRecord(tramite); - break; - } - } - - -// tarmSolicitudTramiteController.getRecord().setEstadotramite("FIN"); -// tarmSolicitudTramiteController.update(); -// DtoSave dtosaveTramite = tarmSolicitudTramiteController.getDtoSave(); -// msave.put(tarmSolicitudTramiteController.getBeanalias(), dtosaveTramite); // adicionar metadata de mantenimiento para cada tabla. - request.getModifiedData().put("noSolicitud", noSolicitud); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); -// tarmSolicitudTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.salvarDeshabilitado=true; - caragarTramiteSolicitud(); - this.query(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene un arma por su codigo - * @param codigopersona - * @return - */ - public static TarmArmas findByCode(String carma) { - try { - DesaduanizacionOldController cc = new DesaduanizacionOldController(); - cc.init(); - cc.recperpage = 300000; - cc.addFilter("pk", carma); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public Date getFechaDesaduanizacion() { - return fechaDesaduanizacion; - } - - public void setFechaDesaduanizacion(Date fechaDesaduanizacion) { - this.fechaDesaduanizacion = fechaDesaduanizacion; - } - - public void setDatos(final AjaxBehaviorEvent event){ - try { - TarmSolicitudTramite soltra = TarmSolicitudTramiteController.findPorCSolicitud(this.noSolicitud); - this.record=new TarmArmas(); - this.record.modifiedData().put("tipotramitedesc", soltra.modifiedData().get("tipotramitedesc")); - this.record.modifiedData().put("categoriadesc", soltra.modifiedData().get("categoriadesc")); - this.record.modifiedData().put("usodesc", soltra.modifiedData().get("usodesc")); - this.record.modifiedData().put("cedula", soltra.modifiedData().get("cedula")); - this.record.modifiedData().put("nombre", soltra.modifiedData().get("nombre")); - this.record.modifiedData().put("personcode", soltra.modifiedData().get("personcode")); - TarmDocumentoHabilitante dochab = DocumentoHabilitanteController.findPorSolicitud(this.noSolicitud); - if(dochab != null){ - this.record.modifiedData().put("fechaemision", dochab.getFechaemision()); - } - - //cregistro propietario -// List regArmas = RegistroArmController.findxPersoncode(soltra.modifiedData().get("personcode").toString()); -// StringBuilder sql = new StringBuilder("cregistro in"); -// Integer aux=0; -// for(TarmRegistroArmas t :regArmas){ -// if(aux==0){ -// sql.append("("+t.getPk()); -// aux++; -// }else{ -// sql.append(","+t.getPk()); -// } -// } -// sql.append(")"); - //armas codigoarma que debe filtar - String sql = "cregistro in (Select r.pk from TarmRegistroArmas r where personcode="+soltra.modifiedData().get("personcode").toString()+")"; - addField("cregistro", sql); - this.salvarDeshabilitado = true; - - } catch (Exception e) { - // TODO: handle exception - } - } - - - - public void habilitaGrabar(final AjaxBehaviorEvent event){ - Integer aux=0; - for(TarmArmas armas:this.lrecord){ - if(!this.lrecord.isEmpty() && armas.getLote() != null){ - aux++; - } - } - if(aux.compareTo(this.lrecord.size()) == 0){ - this.salvarDeshabilitado = false; - } - } - - public static long getSerialversionuid() { - return serialVersionUID; - } - - public List getTramites() { - return tramites; - } - - public void setTramites(List tramites) { - this.tramites = tramites; - } - - public String getNoSolicitud() { - return noSolicitud; - } - - public void setNoSolicitud(String noSolicitud) { - this.noSolicitud = noSolicitud; - } - - public Boolean getSalvarDeshabilitado() { - return salvarDeshabilitado; - } - - public void setSalvarDeshabilitado(Boolean salvarDeshabilitado) { - this.salvarDeshabilitado = salvarDeshabilitado; - } - - public SolicitudTramiteController getTarmSolicitudTramiteController() { - return tarmSolicitudTramiteController; - } - - public void setTarmSolicitudTramiteController( - SolicitudTramiteController tarmSolicitudTramiteController) { - this.tarmSolicitudTramiteController = tarmSolicitudTramiteController; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/MovimientoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/MovimientoController.java.svn-base deleted file mode 100644 index 64ce07c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/MovimientoController.java.svn-base +++ /dev/null @@ -1,112 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -/** - * Clase controladora del bean TarmMovimiento. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class MovimientoController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public MovimientoController() throws Exception { - super(TarmMovimientoArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MOVIMIENTO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ProvinceLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ProvinceLovController.java.svn-base deleted file mode 100644 index 3d9bbdf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ProvinceLovController.java.svn-base +++ /dev/null @@ -1,224 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TarmSitioAlmacenamiento. - * - * @author abenalcazar - * - */ - -@ManagedBean -@ViewScoped -public class ProvinceLovController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public ProvinceLovController() throws Exception { - super(TgeneProvince.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROVINCELOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los - // campos de orden - // ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega el listado objetos TgeneProvince provincias - * - * @param countrycode - * Código de país - * @return lrecord Lista de objetos TgeneProvince - */ - public static List find(String countrycode) { - try { - ProvinceLovController cc = new ProvinceLovController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo para buscar por codigo de provincia - * - * @param provincecode - * @return - */ - public static List findPorCodigo(String countrycode, - String provincecode) { - try { - ProvinceLovController cc = new ProvinceLovController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findxDescripcion(String countrycode, - String codigoProvincia, String descripcion) { - try { - ProvinceLovController cc = new ProvinceLovController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - if (codigoProvincia != null && codigoProvincia.length() > 0) { - cc.addFilter("pk.provincecode", codigoProvincia); - } - if (descripcion != null && descripcion.length() > 0) { - cc.addFilter("description", descripcion); - } - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog( - "/pages/armas/lov/provinciaLov.xhtml", options, params); - } - - public void setprovince() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setprovince(TgeneProvince tgeneProvince) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneProvince); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/RegistroArmController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/RegistroArmController.java.svn-base deleted file mode 100644 index 578a392..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/RegistroArmController.java.svn-base +++ /dev/null @@ -1,181 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; - -/** - * Clase controladora del bean TarmSolicitudImportacion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RegistroArmController extends AbstractController { - - - - - public RegistroArmController() throws Exception { - super(TarmRegistroArmas.class); - } - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Ingreso de Datos Quemados - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - public void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - // record = new TarmSolicitudImportacion(); - this.beanalias = "TREGISTROARMAS"; -// this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public static List find() { - try { - RegistroArmController cc = new RegistroArmController(); - cc.init(); - cc.recperpage = 5000; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static List findxPersoncode(String personcode) { - try { - RegistroArmController cc = new RegistroArmController(); - cc.init(); - cc.addFilter("personcode", personcode); - cc.recperpage = 5000; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static TarmRegistroArmas findByCodigo(String cRegistro) { - try { - RegistroArmController cc = new RegistroArmController(); - cc.init(); - cc.recperpage = 3000000; - cc.addFilter("pk", cRegistro); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - public void update(TarmRegistroArmas bean) throws Exception { - record=bean; - update(); - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.netbeans-base deleted file mode 100644 index 79cc62a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.netbeans-base +++ /dev/null @@ -1,372 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - - - -/** - * @author Andres Cevallos - * Clase Controladora la cual genera el reporte de armas - */ -@ManagedBean -@ViewScoped -public class ReporteArmasController extends AbstractController { - - public ReporteArmasController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - - public Date fecha; - private TcustPersonDetail customerperson; - private List lestados; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TsafeUserDetail userDetail; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String estado; - private String serieLote; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - - - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - - - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - - - - public ReportController getReportController() { - return reportController; - } - - - - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - - - - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - lestados = CatalogDetailController.find("ESTADOARMA"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - estado=""; - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - - } - - @Override - protected void querydatabase() { - - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - setCustomerperson( (TcustPersonDetail) event.getObject()); - - } - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - public void generarReporte(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - filtro=" "; - String path = "armas/reports/reporteArmas"; - if(customerperson!=null){ - filtro=" and tarma.cregistro in " - + " (select regarma.cregistro from tarmregistroarmas regarma where regarma.personcode='"+customerperson.getPk().getPersoncode()+"')"; - } - if(estado!=null && !estado.equals("")){ - if(estado.equals("APTA")){ - filtro+=" and tarma.carma in (select carma from tarmarmapruebas p " - + " where p.carmaprueba=(select max(prue.carmaprueba)" - + " from tarmarmapruebas prue where prue.apruebaevaluacion='Y' and prue.carma in(select codar.carma from tarmarmas codar" - + " where codar.codigoarma =(select ar.codigoarma from tarmarmas ar where carma=tarma.carma) ))) "; - //"and pru.apruebaevaluacion='Y'"; - } - else{ - filtro+=" and tarma.estado='"+estado+"' "; - } - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - // parameters.put("fechaCorte", (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCorte).toString()); - // parameters.put("gradoUsuario",gradoUsuario); - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - //filtro = "where tarma.personcode='1138'"; - parameters.put("filtro", filtro); - SimpleDateFormat fechatxt=new SimpleDateFormat("yyyy-MM-dd"); - parameters.put("fechainicial", fechatxt.format(fechainicial)); - parameters.put("fechafinal", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - // parameters.put("tecnicoAlmacenamiento",MsgControlArmas.getProperty("tecnicoAlmacenamiento")+" "+institucionCentroControl); - // parameters.put("jefe",MsgControlArmas.getProperty("jefe")+" "+institucionCentroControl); - String format="xlsx"; - String filename= MsgControlArmas.getProperty("lbl_nombreexcel"); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - // parameters.put("transaccion",numeroTransaccionEnvioConvertido); - parameters.put("codigoQR", "PRUEBAARMAS"+fechaActualSB.toString()); - - // format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - // this.reportController.execute(path, parameters, null, filename, this.getLoginController()); - // xpathflujo = generarXpath(); - - // alfrescoController.uploadFile(file,numeroTransaccionEnvioConvertido+".pdf",xpathflujo); - // iniciarFlujo(xpathflujo+"/cm:"+numeroTransaccionEnvioConvertido+ ".pdf");//="cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf" - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } - - - public void generarReporteHistorico(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - String path = "armas/reports/reporteHistoricoArmas.jrxml"; - filtro=""; - if(serieLote!=null && serieLote.trim().length()>0){ - filtro=" and tarma.lote='"+serieLote+"' "; - } - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - //filtro = "where tarma.personcode='1138'"; - parameters.put("filtro", filtro); - SimpleDateFormat fechatxt=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", fechatxt.format(fechainicial)); - parameters.put("fechafinal", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - String format="xlsx"; - String filename= MsgControlArmas.getProperty("lbl_nombreexcelhistorico"); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public List getLestados() { - return lestados; - } - - public void setLestados(List lestados) { - this.lestados = lestados; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getSerieLote() { - return serieLote; - } - - public void setSerieLote(String serieLote) { - this.serieLote = serieLote; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.svn-base deleted file mode 100644 index 79cc62a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasController.java.svn-base +++ /dev/null @@ -1,372 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - - - -/** - * @author Andres Cevallos - * Clase Controladora la cual genera el reporte de armas - */ -@ManagedBean -@ViewScoped -public class ReporteArmasController extends AbstractController { - - public ReporteArmasController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - - public Date fecha; - private TcustPersonDetail customerperson; - private List lestados; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TsafeUserDetail userDetail; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String estado; - private String serieLote; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - - - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - - - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - - - - public ReportController getReportController() { - return reportController; - } - - - - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - - - - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - lestados = CatalogDetailController.find("ESTADOARMA"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - estado=""; - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - - } - - @Override - protected void querydatabase() { - - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - setCustomerperson( (TcustPersonDetail) event.getObject()); - - } - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - public void generarReporte(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - filtro=" "; - String path = "armas/reports/reporteArmas"; - if(customerperson!=null){ - filtro=" and tarma.cregistro in " - + " (select regarma.cregistro from tarmregistroarmas regarma where regarma.personcode='"+customerperson.getPk().getPersoncode()+"')"; - } - if(estado!=null && !estado.equals("")){ - if(estado.equals("APTA")){ - filtro+=" and tarma.carma in (select carma from tarmarmapruebas p " - + " where p.carmaprueba=(select max(prue.carmaprueba)" - + " from tarmarmapruebas prue where prue.apruebaevaluacion='Y' and prue.carma in(select codar.carma from tarmarmas codar" - + " where codar.codigoarma =(select ar.codigoarma from tarmarmas ar where carma=tarma.carma) ))) "; - //"and pru.apruebaevaluacion='Y'"; - } - else{ - filtro+=" and tarma.estado='"+estado+"' "; - } - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - // parameters.put("fechaCorte", (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCorte).toString()); - // parameters.put("gradoUsuario",gradoUsuario); - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - //filtro = "where tarma.personcode='1138'"; - parameters.put("filtro", filtro); - SimpleDateFormat fechatxt=new SimpleDateFormat("yyyy-MM-dd"); - parameters.put("fechainicial", fechatxt.format(fechainicial)); - parameters.put("fechafinal", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - // parameters.put("tecnicoAlmacenamiento",MsgControlArmas.getProperty("tecnicoAlmacenamiento")+" "+institucionCentroControl); - // parameters.put("jefe",MsgControlArmas.getProperty("jefe")+" "+institucionCentroControl); - String format="xlsx"; - String filename= MsgControlArmas.getProperty("lbl_nombreexcel"); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - // parameters.put("transaccion",numeroTransaccionEnvioConvertido); - parameters.put("codigoQR", "PRUEBAARMAS"+fechaActualSB.toString()); - - // format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - // this.reportController.execute(path, parameters, null, filename, this.getLoginController()); - // xpathflujo = generarXpath(); - - // alfrescoController.uploadFile(file,numeroTransaccionEnvioConvertido+".pdf",xpathflujo); - // iniciarFlujo(xpathflujo+"/cm:"+numeroTransaccionEnvioConvertido+ ".pdf");//="cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf" - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } - - - public void generarReporteHistorico(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - String path = "armas/reports/reporteHistoricoArmas.jrxml"; - filtro=""; - if(serieLote!=null && serieLote.trim().length()>0){ - filtro=" and tarma.lote='"+serieLote+"' "; - } - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - //filtro = "where tarma.personcode='1138'"; - parameters.put("filtro", filtro); - SimpleDateFormat fechatxt=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", fechatxt.format(fechainicial)); - parameters.put("fechafinal", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - String format="xlsx"; - String filename= MsgControlArmas.getProperty("lbl_nombreexcelhistorico"); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public List getLestados() { - return lestados; - } - - public void setLestados(List lestados) { - this.lestados = lestados; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getSerieLote() { - return serieLote; - } - - public void setSerieLote(String serieLote) { - this.serieLote = serieLote; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasPrevImportacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasPrevImportacionController.java.svn-base deleted file mode 100644 index e846791..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteArmasPrevImportacionController.java.svn-base +++ /dev/null @@ -1,84 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * - * @author David Cruz - * - */ -@ManagedBean -@ViewScoped -public class ReporteArmasPrevImportacionController extends AbstractController { - - private static final long serialVersionUID = -6726028201723692500L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TsafeUserDetail userDetail; - - public ReporteArmasPrevImportacionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void init() { - beanalias = "REPORTE"; - lrecord = new ArrayList<>(); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public void generarReporte() { - String path = "armas/reports/reporteArmasPrevImportacion"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - String format="xlsx"; - String filename= "permisosprevimportacion"; - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCashManagmentController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCashManagmentController.java.svn-base deleted file mode 100644 index fd8c648..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCashManagmentController.java.svn-base +++ /dev/null @@ -1,441 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.io.File; -import java.io.FileInputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.text.NumberFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CashManagementHistoryController; -import com.fp.frontend.controller.armas.solicitud.SolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCashManagementHistory; -import com.fp.persistence.parmas.soli.CashManagementDTO; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author Christian Pazmino - * Cash management - */ -@ManagedBean -@ViewScoped -public class ReporteCashManagmentController extends AbstractController { - - public ReporteCashManagmentController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - // Fecha inicial - private Date fechainicial; - // Fecha final - private Date fechafinal; - // Fecha inicial con mascara - private String fechaInicialStr; - // Fecha final con mascara - private String fechaFinalStr; - // Lista con informacion de los tramites habilitados para realizar los depositos en la cuenta - private List cashManagementList = new ArrayList(); - // Fecha del ultimo reporte generado - private String fechaUltReporte; - // Autor del ultimo reporte generado - private String autorUltReporte; - // Path del reporte en el alfresco - private String xpathReporte; - // Controlador de Solicitud Tramite - @ManagedProperty(value="#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - // Controlador del alfresco - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - // Nombre identificador del archivo cash management generado - private String nombreArchivo; - - private File archivo; - /** - * Controlador que maneja los datos de generacion ultima vez del reporte - */ - @ManagedProperty(value = "#{cashManagementHistoryController}") - private CashManagementHistoryController cashManagementHistoryController; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - TarmCashManagementHistory ultimoReporteObj = CashManagementHistoryController.findUltimoReporteGenerado(); - if(ultimoReporteObj!=null){ - SimpleDateFormat sdfUltimaFecha = new SimpleDateFormat("dd/MM/yyyy HH:mm"); - fechaUltReporte = sdfUltimaFecha.format(ultimoReporteObj.getDatefrom()); - autorUltReporte = ultimoReporteObj.getModifiedData().get("personname")!=null? ultimoReporteObj.getModifiedData().get("personname").toString():null; - } - this.beanalias = "CASHMANAGEMENT"; - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - int diasLaborablesPermitidos = Integer.parseInt(ParametersController.find("DIASDEPOSITO", "1").getNumbervalue().toString()); - // La fecha inicial se calcula en funcion del numero de dias laborables permitidos para el deposito - fechainicial = TgeneNotAccountingDayController.diasLaborablesPreviosAUnaFecha(new Date(), diasLaborablesPermitidos); - // La fecha final es la fecha actual - Calendar fechaFinalCldr = Calendar.getInstance(); - System.out.println("Fecha final "+fechaFinalCldr.getTime()); - fechaFinalStr = sdf.format(fechaFinalCldr.getTime()); - System.out.println("Fecha inicial "+fechainicial); - fechaInicialStr = sdf.format(fechainicial); - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - protected void querydatabase() { - try{ - System.out.println("Ejecuta querydatabase cash managment..."); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("queryalias", "CASHMANAGEMENT"); - request.put("querytype", "P"); - request.put("fechaInicialStr", fechaInicialStr); - request.put("fechaFinalStr", fechaFinalStr); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - List lCashManagement = (List)resp.get("CASHMANAGEMENTLIST"); - construirListaCashDTO(lCashManagement); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void construirListaCashDTO(List lCashManagement){ - for(Object[]cashObj:lCashManagement){ - CashManagementDTO cashManagementDTO = new CashManagementDTO(); - // Codigo orientacion - cashManagementDTO.setCodigoServicio(cashObj[0]!=null?cashObj[0].toString():null); - // Contra partida - cashObj[1]=Integer.parseInt(cashObj[1].toString().substring(4, cashObj[1].toString().length())); - cashManagementDTO.setContrato(cashObj[1]!=null?cashObj[1].toString():null); - // Moneda - cashManagementDTO.setMoneda(cashObj[2]!=null?cashObj[2].toString():null); - // Valor - String valorDosDecimalesStr = null; - if(cashObj[3]!=null){ - BigDecimal valorDosDecimales = ((BigDecimal)cashObj[3]).setScale(2); -// valorDosDecimales.setScale(2, BigDecimal.ROUND_HALF_UP); - valorDosDecimalesStr = valorDosDecimales.toString().replace(".", ""); - } - cashManagementDTO.setValorapagar(valorDosDecimalesStr); - // Forma de cobro, forma de pago - cashManagementDTO.setFormaCobro(cashObj[4]!=null?cashObj[4].toString():null); - // Tipo de cuenta - cashManagementDTO.setTipoCuenta(cashObj[5]!=null?cashObj[5].toString():null); - // NUmero de cuenta - cashManagementDTO.setNumeroCuenta(cashObj[6]!=null?cashObj[6].toString():null); - // Referencia - cashManagementDTO.setReferencia(cashObj[7]!=null?Utilidades.reemplazaAcentosCaractEspeciales(cashObj[7].toString()):null); - // Tipo ID cliente - cashManagementDTO.setTipoIDCliente(cashObj[8]!=null?cashObj[8].toString():null); - // Nombre del cliente - cashManagementDTO.setNumeroIDCliente(cashObj[9]!=null?cashObj[9].toString():null); - // Si el nombre del cliente es mayor a 41 caracteres - if(cashObj[10]!=null && cashObj[10].toString().length()>41){ - cashObj[10]=cashObj[10].toString().substring(0, 41); - } - // Nombre del cliente - cashManagementDTO.setNombreCliente(cashObj[10]!=null?Utilidades.reemplazaAcentosCaractEspeciales(cashObj[10].toString()):null); - // Base Imponible - cashManagementDTO.setBaseImponible(cashObj[11]!=null?cashObj[11].toString():null); - // Csolicitud - cashManagementDTO.setCsolicitud(cashObj[12]!=null?cashObj[12].toString():null); - cashManagementList.add(cashManagementDTO); - } - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - - /** - * Obtiene el reporte de cash management - */ - public void generarReporte(String filename) { - try { - if(cashManagementList.isEmpty()){ - MessageHelper.setMessageInfo("NO EXISTEN DATOS PARA GENERAR EL REPORTE..."); -// return null; - } - archivo = File.createTempFile(filename,".txt"); -// File archivo = File.createTempFile("cashmanagement"+fechaFinalStr,".txt"); - PrintWriter escribir = new PrintWriter(archivo); - for(CashManagementDTO cashManagementDTO : cashManagementList){ - escribir.print(cashManagementDTO.getCodigoServicio()!=null?cashManagementDTO.getCodigoServicio() +"\t":"\t"); - escribir.print(cashManagementDTO.getContrato()!=null?cashManagementDTO.getContrato()+"\t":"\t"); - escribir.print(cashManagementDTO.getMoneda()!=null?cashManagementDTO.getMoneda()+"\t":"\t"); - escribir.print(cashManagementDTO.getValorapagar()!=null?cashManagementDTO.getValorapagar()+"\t":"\t"); - escribir.print(cashManagementDTO.getFormaCobro()!=null?cashManagementDTO.getFormaCobro()+"\t":"\t"); - escribir.print(cashManagementDTO.getTipoCuenta()!=null?cashManagementDTO.getTipoCuenta()+"\t":"\t"); - escribir.print(cashManagementDTO.getNumeroCuenta()!=null?cashManagementDTO.getNumeroCuenta()+"\t":"\t"); - escribir.print(cashManagementDTO.getReferencia()!=null?cashManagementDTO.getReferencia()+"\t":"\t"); - escribir.print(cashManagementDTO.getTipoIDCliente()!=null?cashManagementDTO.getTipoIDCliente()+"\t":"\t"); - escribir.print(cashManagementDTO.getNumeroIDCliente()!=null?cashManagementDTO.getNumeroIDCliente()+"\t":"\t"); - escribir.print(cashManagementDTO.getNombreCliente()!=null?cashManagementDTO.getNombreCliente()+"\r\n":"\r\n"); - TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(cashManagementDTO.getCsolicitud()); - solicitudTramiteObj.setIncashreport("S"); - solicitudTramiteController.updateSimple(solicitudTramiteObj); - // escribir.println(cashManagementDTO.getBaseImponible()); - - } - solicitudTramiteController.save(); - escribir.flush(); - escribir.close(); -// return archivo; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); -// return null; - } - - } - - - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo(){ - -// File archivoTemporal=generarReporte(); - try { - obtenerSecuencialSolicitud(); - this.xpathReporte = this.getRutaDocumento(); - Calendar calendar = Calendar.getInstance(); - SimpleDateFormat sdfFechaParaNombre = new SimpleDateFormat("ddMMyyyyHHmm"); - String fechaParaNombre = sdfFechaParaNombre.format(calendar.getTime()); - String filename="COMACO"+fechaParaNombre+this.nombreArchivo; - - generarReporte(filename); - filename=filename+".txt"; - -// if(archivoTemporal==null){ - if(archivo==null){ - return; - } - InputStream inputStream = new FileInputStream(archivo); //(archivoTemporal); - - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename="+filename); - OutputStream out = response.getOutputStream(); - - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - out.flush(); - - FacesContext.getCurrentInstance().responseComplete(); - - generarReporte(filename); - InputStream inputStream2 = new FileInputStream(archivo); - -// if(!this.alfrescoController.uploadFile(inputStream, filename, this.xpathReporte)){ - if(!this.alfrescoController.uploadFile(inputStream2, filename, this.xpathReporte)){ - throw new Exception("ERROR AL CARGAR EL REPORTE"); - } - - inputStream.close(); - inputStream2.close(); - - // Guardar datos ultima generacion del archivo - TarmCashManagementHistory actualCashManagementHistory = new TarmCashManagementHistory(); - actualCashManagementHistory.setDatefrom(new Timestamp(calendar.getTimeInMillis())); - actualCashManagementHistory.setDateto(Utilidades.getFechaExpiracion()); - actualCashManagementHistory.setIsnew(true); - actualCashManagementHistory.setNombrearchivo(filename); - actualCashManagementHistory.setPathreporte(this.xpathReporte + "/cm:" + filename); - actualCashManagementHistory.setPk(nombreArchivo); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - actualCashManagementHistory.setUsercode(tsafeUserDetail.getPk().getUsercode()); - - cashManagementHistoryController.update(actualCashManagementHistory); - - List ultimoCashManagementHistoryList = CashManagementHistoryController.findReportesGeneradosVigentes(); - if(ultimoCashManagementHistoryList!=null){ - for(TarmCashManagementHistory ultimoCashManagementHistory:ultimoCashManagementHistoryList){ - ultimoCashManagementHistory.setDateto(new Timestamp(calendar.getTimeInMillis())); - ultimoCashManagementHistory.setIsnew(Boolean.FALSE); - cashManagementHistoryController.update(ultimoCashManagementHistory); - } - } - cashManagementHistoryController.save(); - - } catch (Exception e) { - // TODO: handle exception - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Arma la petición al core para solicitar un número de secuencial para la solicitud antes de guardarla - * @throws Throwable - */ - private void obtenerSecuencialSolicitud() throws Throwable{ - Request request = callerhelper.getRequest(); - DtoQuery dtoQuery = super.getDtoQuery(true); - HashMap mapQuery = new HashMap(); - mapQuery.put(beanalias, dtoQuery); - request.put("querytype", "T"); - request.setQueryTables(mapQuery); - Response response = callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(response); - }else{ - nombreArchivo = response.get("CASHHISTORICOSEQUENCE").toString(); - } - } - - /** - * Metodo para armar la ruta del documento - * @return - */ - public String getRutaDocumento() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:CashManagement"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append( - (calendar.get(Calendar.MONTH) + 1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH) + 1)); - ruta = ruta.append("/cm:D-").append( - (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); - return ruta.toString(); - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - public String getFechaInicialStr() { - return fechaInicialStr; - } - public void setFechaInicialStr(String fechaInicialStr) { - this.fechaInicialStr = fechaInicialStr; - } - public String getFechaFinalStr() { - return fechaFinalStr; - } - public void setFechaFinalStr(String fechaFinalStr) { - this.fechaFinalStr = fechaFinalStr; - } - public String getFechaUltReporte() { - return fechaUltReporte; - } - public void setFechaUltReporte(String fechaUltReporte) { - this.fechaUltReporte = fechaUltReporte; - } - public String getAutorUltReporte() { - return autorUltReporte; - } - public void setAutorUltReporte(String autorUltReporte) { - this.autorUltReporte = autorUltReporte; - } - public CashManagementHistoryController getCashManagementHistoryController() { - return cashManagementHistoryController; - } - public void setCashManagementHistoryController( - CashManagementHistoryController cashManagementHistoryController) { - this.cashManagementHistoryController = cashManagementHistoryController; - } - public String getXpathReporte() { - return xpathReporte; - } - public void setXpathReporte(String xpathReporte) { - this.xpathReporte = xpathReporte; - } - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - public String getNombreArchivo() { - return nombreArchivo; - } - public void setNombreArchivo(String nombreArchivo) { - this.nombreArchivo = nombreArchivo; - } - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompInscritaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompInscritaController.java.svn-base deleted file mode 100644 index ed0256b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompInscritaController.java.svn-base +++ /dev/null @@ -1,431 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.log4j.Logger; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteCompInscritaController extends AbstractController{ - - /** - * - */ - public ReporteCompInscritaController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private final static Logger LOGGER = Logger.getLogger(ReporteCompInscritaController.class); - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lestadosArma = null; - private List ltipoFabArma = null; - private List estadosSeleccionados = null; - //Tipo de Fabricacion Arma Seleccionada - private List tipoFabArmaSeleccionada = null; - - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lestadosArma = CatalogDetailController.find("ESTADOARMA"); - //tipo de Fabricacion Arma - this.ltipoFabArma = CatalogDetailController.find("TIPOFABRICACION"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); -// this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Tipo de Fabricacion de las Armas - */ - public void reporteCompaniaInscrita() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCompaniaInscrita"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public void reporteCompaniaInscritaXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCompaniaInscrita"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - - -// } - - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - private String obtenerTipoFabArmaSeleccionada(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder armaSel = new StringBuilder(); - for (String tipos : tipoFabArmaSeleccionada) { - armaSel.append("'"); - armaSel.append(tipos); - armaSel.append("',"); - } - - filtro.append(" AND A.TIPOFABRICACION IN ("); - filtro.append(armaSel.substring(0, armaSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido tipo Arma es el siguiente::" + filtro); - return filtro.toString(); - } - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLestadosArma() { - return lestadosArma; - } - - public void setLestadosArma(List lestadosArma) { - this.lestadosArma = lestadosArma; - } - - public List getEstadosSeleccionados() { - return estadosSeleccionados; - } - - public void setEstadosSeleccionados(List estadosSeleccionados) { - this.estadosSeleccionados = estadosSeleccionados; - } - - - public List getLtipoFabArma() { - return ltipoFabArma; - } - - public void setLtipoFabArma(List ltipoFabArma) { - this.ltipoFabArma = ltipoFabArma; - } - - public List getTipoFabArmaSeleccionada() { - return tipoFabArmaSeleccionada; - } - - public void setTipoFabArmaSeleccionada(List tipoFabArmaSeleccionada) { - this.tipoFabArmaSeleccionada = tipoFabArmaSeleccionada; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompaniasCCentrol.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompaniasCCentrol.java.svn-base deleted file mode 100644 index db58480..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteCompaniasCCentrol.java.svn-base +++ /dev/null @@ -1,430 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author usermaia2 - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteCompaniasCCentrol extends AbstractController { - - public ReporteCompaniasCCentrol() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lorgcontrol = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - - - - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lorgcontrol = CatalogDetailController.find("INSTITUCION"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTramitesCentro() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCompaniasCControl"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.codCentroControl); - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { -// parameters.put("filtro", ""); -// } - - if(this.codCentroControl!=null && !this.codCentroControl.equals("TODOS")){ - parameters.put("centroControl", this.codCentroControl); - }else { - parameters.put("centroControl", ""); - } - - - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public void reporteTramitesCentroXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCompaniasCControl"; - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.codCentroControl); - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - if(this.codCentroControl!=null && !this.codCentroControl.equals("TODOS")){ - parameters.put("centroControl", this.codCentroControl); - }else { - parameters.put("centroControl", ""); - } - - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLorgcontrol() { - return lorgcontrol; - } - - public void setLorgcontrol(List lorgcontrol) { - this.lorgcontrol = lorgcontrol; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteDecomisoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteDecomisoController.java.svn-base deleted file mode 100644 index 405cae8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteDecomisoController.java.svn-base +++ /dev/null @@ -1,368 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.eclipse.jdt.core.dom.ThisExpression; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author DLO - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteDecomisoController extends AbstractController { - - public ReporteDecomisoController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List ltiporeg = null; - private List lorgcontrol = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String idOrgControl; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lorgcontrol = CatalogDetailController.find("INSTITUCION"); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.idOrgControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTramitesCentro() { - try { - if(this.fechainicial.getTime()>this.fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - String path = "armas/reports/reporteDecomiso"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador - SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", df.format(this.fechainicial)); - parameters.put("fechafinal", df.format(this.fechafinal)); - - if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ - this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; - parameters.put("filtro", this.filtro); - }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { - this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; - parameters.put("filtro", this.filtro); - }else { - parameters.put("filtro", ""); - } - - if(this.idOrgControl!=null && !this.idOrgControl.equals("TODOS")){ - this.filtro2 = " and cc.institucion = '"+this.idOrgControl+"' "; - parameters.put("filtro2", this.filtro2); - }else { - parameters.put("filtro2", ""); - } - - - - String format = "xlsx"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLorgcontrol() { - return lorgcontrol; - } - - public void setLorgcontrol(List lorgcontrol) { - this.lorgcontrol = lorgcontrol; - } - - public String getIdOrgControl() { - return idOrgControl; - } - - public void setIdOrgControl(String idOrgControl) { - this.idOrgControl = idOrgControl; - } - - - - - - - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteImportacionProduccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteImportacionProduccionController.java.svn-base deleted file mode 100644 index 08e20a1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteImportacionProduccionController.java.svn-base +++ /dev/null @@ -1,356 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.eclipse.jdt.core.dom.ThisExpression; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author DLO - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteImportacionProduccionController extends AbstractController { - - public ReporteImportacionProduccionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentros = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String idRegistro; - private String estado; - private Date fec_actual; - private String tituloRep; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - lcentros = CatalogDetailController.find("NOMBREINSTITUCION"); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - //this.obtenerResponsableCentroControl(); - this.idRegistro=""; - this.tituloRep=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - else{ - return ""; - } - - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTramitesCentro() { - try { - if(this.fechainicial.getTime()>this.fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - String path = "armas/reports/reporteImportacionProduccion"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - customerperson=PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - //usuario - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador - SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", df.format(this.fechainicial)); - parameters.put("fechafinal", df.format(this.fechafinal)); - - - if(this.idRegistro.equals("IMP") && this.idRegistro!=null){ - this.filtro = " and ra.tiporegistro = '"+this.idRegistro+"' "; - parameters.put("filtro", this.filtro); - this.tituloRep = "REGISTRO DE IMPORTACIONES"; - parameters.put("titulo", this.tituloRep); - }else if (this.idRegistro.equals("PRO") && this.idRegistro!=null) { - this.filtro = " and ra.tiporegistro = '"+this.idRegistro+"' "; - parameters.put("filtro", this.filtro); - this.tituloRep = "REGISTRO DE PRODUCCI\u00d3N"; - parameters.put("titulo", this.tituloRep); - }else { - parameters.put("filtro", ""); - this.tituloRep="REGISTRO DE IMPORTACIONES Y PRODUCCI\u00d3N"; - parameters.put("titulo", this.tituloRep); - } - - - - String format = "xlsx"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - - - public String getIdRegistro() { - return idRegistro; - } - - public void setIdRegistro(String idRegistro) { - this.idRegistro = idRegistro; - } - - public List getLcentros() { - return lcentros; - } - - public void setLcentros(List lcentros) { - this.lcentros = lcentros; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumArmasEstadoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumArmasEstadoController.java.svn-base deleted file mode 100644 index 3949116..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumArmasEstadoController.java.svn-base +++ /dev/null @@ -1,433 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.eclipse.jdt.core.dom.ThisExpression; -import org.jboss.logging.Logger; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author usermaia2 - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteNumArmasEstadoController extends AbstractController { - - private final static Logger LOGGER = Logger.getLogger(ReporteNumArmasEstadoController.class); - - public ReporteNumArmasEstadoController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lestadosArma = null; - private List estadosSeleccionados = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lestadosArma = CatalogDetailController.find("ESTADOARMA"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteNumArmas() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteArmasCompania"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); -// } - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public void reporteNumArmasXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteArmasCompania"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); - - - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - private String obtenerEstadosSeleccionados(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder estadosSel = new StringBuilder(); - for (String estado : estadosSeleccionados) { - estadosSel.append("'"); - estadosSel.append(estado); - estadosSel.append("',"); - } - filtro.append(" AND A.ESTADO IN ("); - filtro.append(estadosSel.substring(0, estadosSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido es el siguiente::" + filtro); - return filtro.toString(); - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLestadosArma() { - return lestadosArma; - } - - public void setLestadosArma(List lestadosArma) { - this.lestadosArma = lestadosArma; - } - - public List getEstadosSeleccionados() { - return estadosSeleccionados; - } - - public void setEstadosSeleccionados(List estadosSeleccionados) { - this.estadosSeleccionados = estadosSeleccionados; - } - - - - - - - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumPermisosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumPermisosController.java.svn-base deleted file mode 100644 index 5c2ef64..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteNumPermisosController.java.svn-base +++ /dev/null @@ -1,477 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.eclipse.jdt.core.dom.ThisExpression; -import org.jboss.logging.Logger; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author usermaia2 - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteNumPermisosController extends AbstractController { - - private final static Logger LOGGER = Logger.getLogger(ReporteNumPermisosController.class); - - public ReporteNumPermisosController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lestadosArma = null; - private List estadosSeleccionados = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - //Datos para buscar persona - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lestadosArma = CatalogDetailController.find("ESTADOARMA"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); -// this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTotalPermisos() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteNumeroPermisos"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - parameters.put("filtroPersona", obtenerPersonaSeleccionada()); - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public void reporteTotalPermisosXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteNumeroPermisos"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - parameters.put("filtroPersona", obtenerPersonaSeleccionada()); - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLestadosArma() { - return lestadosArma; - } - - public void setLestadosArma(List lestadosArma) { - this.lestadosArma = lestadosArma; - } - - public List getEstadosSeleccionados() { - return estadosSeleccionados; - } - - public void setEstadosSeleccionados(List estadosSeleccionados) { - this.estadosSeleccionados = estadosSeleccionados; - } - -//BUSQUEDA DE PERSONA - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getFiltroPersona() { - return filtroPersona; - } - - public void setFiltroPersona(String filtroPersona) { - this.filtroPersona = filtroPersona; - } - - - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - filtroPersona = ""; - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial=personaDetailSelecionada.getName(); - numeroDocumento=personaDetailSelecionada.getIdentification(); - filtroPersona=personaDetailSelecionada.getPk().getPersoncode().toString(); - LOGGER.info("parametro seleccionado " +filtroPersona); - //this.setLrecord(new ArrayList()); - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickSeleccionarArmas"))); - - } - - - - private String obtenerPersonaSeleccionada(){ - StringBuilder filtro = new StringBuilder(); - filtro.append(" AND personadetalle.identification IN ('"); - filtro.append(numeroDocumento); - filtro.append("')"); - LOGGER.info("el filtro obtenido de persona es el siguiente::" + filtro); - return filtro.toString(); - } - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesCconController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesCconController.java.svn-base deleted file mode 100644 index f7e0ef8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesCconController.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * - * @author David Cruz - * - */ -@ManagedBean -@ViewScoped -public class ReportePermisosAutorizacionesCconController extends AbstractController { - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TsafeUserDetail userDetail; - private TgeneParameters paramDiasCaducidad; - private String centroControl=""; - private List lcentroControl; - - - public ReportePermisosAutorizacionesCconController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - public void init() { - beanalias = "REPORTE"; - lrecord = new ArrayList<>(); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - paramDiasCaducidad = ParametersController.find("DIASCADUCIDADCERT", "1"); - lcentroControl = CentroControlArmasController.findAll(); - } - - private static final long serialVersionUID = 1L; - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public void generarReporte() { - String path = "armas/reports/reportePermisosAutorizacionesxSuspCcon"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } -// TarmCentroControl ccentroControl= CentroControlArmasController.findPorCodigo(centroControl); -// String institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( ccentroControl.getNombreinstitucion(), ccentroControl.getNombreinstitucioncodigo()).getDescription(); - SimpleDateFormat fechatxt=new SimpleDateFormat("dd/MM/yyyy"); - Date fechainicial = Calendar.getInstance().getTime(); - Calendar calendar = Calendar.getInstance(); - calendar.setTime(fechainicial); - calendar.add(Calendar.DATE, (paramDiasCaducidad != null && paramDiasCaducidad.getNumbervalue() != null) ? paramDiasCaducidad.getNumbervalue().intValue() : 0); - Date fechafinal = calendar.getTime(); - parameters.put("usuario", nombreUsuario); -// parameters.put("centroControl", centroControl); -// parameters.put("nombrecentro", institucionCentroControl); - parameters.put("fechainicio", fechatxt.format(fechainicial)); - parameters.put("fechafin", fechatxt.format(fechafinal)); - String format="xlsx"; - String filename= "permisosautorizacionesxsusp"; - //Fecha actual - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getCentroControl() { - return centroControl; - } - - public void setCentroControl(String centroControl) { - this.centroControl = centroControl; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesSuspController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesSuspController.java.svn-base deleted file mode 100644 index 5b9e0f3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReportePermisosAutorizacionesSuspController.java.svn-base +++ /dev/null @@ -1,168 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - - - -/** - * @author Andres Cevallos - * Clase Controladora la cual genera el reporte de armas - */ -@ManagedBean -@ViewScoped -public class ReportePermisosAutorizacionesSuspController extends AbstractController { - - public ReportePermisosAutorizacionesSuspController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TsafeUserDetail userDetail; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private Date fechainicial; - private Date fechafinal; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - @Override - protected void querydatabase() { - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - } - - public void generarReporte(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String path = "armas/reports/reportePermisosAutorizacionesSusp"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - SimpleDateFormat fechatxt=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicio", fechatxt.format(fechainicial)); - parameters.put("fechafin", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - String format="xlsx"; - String filename= "permisosautorizacionessusp"; - //Fecha actual - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArma.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArma.java.svn-base deleted file mode 100644 index 04d9549..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArma.java.svn-base +++ /dev/null @@ -1,477 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.log4j.Logger; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteTipoArma extends AbstractController{ - - /** - * - */ - public ReporteTipoArma() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private final static Logger LOGGER = Logger.getLogger(ReporteTipoArma.class); - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lestadosArma = null; - private List ltipoArma = null; - private List estadosSeleccionados = null; - //Tipo de Arma Seleccionada - private List tipoArmaSeleccionada = null; - - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lestadosArma = CatalogDetailController.find("ESTADOARMA"); - //tipo de Arma - this.ltipoArma = CatalogDetailController.find("TIPOARMAEXPLOSIVO", "0010000001"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); -// this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTotalArmaCompania() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoArmasCompania"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); - - parameters.put("filtroTipos", obtenerTipoArmaSeleccionada()); -// } - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public void reporteTotalArmaCompaniaXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoArmasCompania"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); - - parameters.put("filtroTipos", obtenerTipoArmaSeleccionada()); -// } - - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - - private String obtenerEstadosSeleccionados(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder estadosSel = new StringBuilder(); - for (String estado : estadosSeleccionados) { - estadosSel.append("'"); - estadosSel.append(estado); - estadosSel.append("',"); - } - filtro.append(" AND A.ESTADO IN ("); - filtro.append(estadosSel.substring(0, estadosSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido es el siguiente::" + filtro); - return filtro.toString(); - } - - - private String obtenerTipoArmaSeleccionada(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder armaSel = new StringBuilder(); - for (String tipos : tipoArmaSeleccionada) { - armaSel.append("'"); - armaSel.append(tipos); - armaSel.append("',"); - } - - filtro.append(" AND T.CATALOG IN ("); - filtro.append(armaSel.substring(0, armaSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido tipo Arma es el siguiente::" + filtro); - return filtro.toString(); - } - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLestadosArma() { - return lestadosArma; - } - - public void setLestadosArma(List lestadosArma) { - this.lestadosArma = lestadosArma; - } - - public List getEstadosSeleccionados() { - return estadosSeleccionados; - } - - public void setEstadosSeleccionados(List estadosSeleccionados) { - this.estadosSeleccionados = estadosSeleccionados; - } - - public List getLtipoArma() { - return ltipoArma; - } - - public void setLtipoArma(List ltipoArma) { - this.ltipoArma = ltipoArma; - } - - public List getTipoArmaSeleccionada() { - return tipoArmaSeleccionada; - } - - public void setTipoArmaSeleccionada(List tipoArmaSeleccionada) { - this.tipoArmaSeleccionada = tipoArmaSeleccionada; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArmasController.java.svn-base deleted file mode 100644 index 74ce978..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoArmasController.java.svn-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -@ManagedBean (name="reporteTipoArmasController") -@ViewScoped -public class ReporteTipoArmasController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - - private List lestados; - private TsafeUserDetail userDetail; - /** - * INSTITUCION A LA QUE PERTENECE - */ - private String institucionCentroControl; - /** - * VARIABLES PARA EL REPORTE - */ - private Date fechainicial; - private Date fechafinal; - private String estado; - private TcustPersonDetail customerperson; - - @PostConstruct - private void postconstruct() { - this.init(); - } - - public ReporteTipoArmasController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTETIPOARMAS"; - lestados = CatalogDetailController.find("ESTADOARMA"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - estado=""; - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - - } - - @Override - protected void querydatabase() { - - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - setCustomerperson( (TcustPersonDetail) event.getObject()); - - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - } - - public void generarReporte(){ - if(fechainicial.getTime()>fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String filtro=" "; - String path = "armas/reports/reporteTipoArmas"; - if(customerperson!=null){ - filtro=" and tarma.cregistro in " - + " (select regarma.cregistro from tarmregistroarmas regarma where regarma.personcode='"+customerperson.getPk().getPersoncode()+"')"; - } - if(estado!=null && !estado.equals("")){ - if(estado.equals("APTA")){ - filtro+=" and tarma.carma in (select carma from tarmarmapruebas p " - + " where p.carmaprueba=(select max(prue.carmaprueba)" - + " from tarmarmapruebas prue where prue.apruebaevaluacion='Y' and prue.carma in(select codar.carma from tarmarmas codar" - + " where codar.codigoarma =(select ar.codigoarma from tarmarmas ar where carma=tarma.carma) ))) "; - } - else{ - filtro+=" and tarma.estado='"+estado+"' "; - } - }else{ - filtro+=" and tarma.estado!='VEND' and tarma.estado!='MING' and tarma.estado!='DUPL'"; - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - //filtro = "where tarma.personcode='1138'"; - parameters.put("filtro", filtro); - SimpleDateFormat fechatxt=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", fechatxt.format(fechainicial)); - parameters.put("fechafinal", fechatxt.format(fechafinal)); - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - String format="xlsx"; - String filename= MsgControlArmas.getProperty("lbl_nombreexcel"); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public List getLestados() { - return lestados; - } - - public void setLestados(List lestados) { - this.lestados = lestados; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoAutorizacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoAutorizacionController.java.svn-base deleted file mode 100644 index 45628ed..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoAutorizacionController.java.svn-base +++ /dev/null @@ -1,476 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.log4j.Logger; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteTipoAutorizacionController extends AbstractController{ - - /** - * - */ - public ReporteTipoAutorizacionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private final static Logger LOGGER = Logger.getLogger(ReporteTipoAutorizacionController.class); - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List ltipoAuto = null; - private List ltipoArma = null; - private List tipoAutoSeleccionado = null; - //Tipo de Arma Seleccionada - private List tipoArmaSeleccionada = null; - - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.ltipoAuto = CatalogDetailController.find("TIPOAUTORIZACION"); - //tipo de Arma - this.ltipoArma = CatalogDetailController.find("TIPOARMAEXPLOSIVO", "0010000001"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); -// this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTipoAutorizacion() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoAutorizacion"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); - - -// } - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - public void reporteTipoAutorizacionXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoAutorizacion"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador -// SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); -// parameters.put("fechainicial", df.format(this.fechainicial)); -// parameters.put("fechafinal", df.format(this.fechafinal)); - -// if(this.idTipoReg.equals("DECO") && this.idTipoReg!=null){ -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else if (this.idTipoReg.equals("INCA") && this.idTipoReg!=null) { -// this.filtro = " and d.tipoproceso = '"+this.idTipoReg+"' "; -// parameters.put("filtro", this.filtro); -// }else { - parameters.put("filtroEstados", obtenerEstadosSeleccionados()); - - -// } - - String format = "xls"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - private String obtenerEstadosSeleccionados(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder autorizacionSel = new StringBuilder(); - for (String autorizacion : tipoAutoSeleccionado) { - autorizacionSel.append("'"); - autorizacionSel.append(autorizacion); - autorizacionSel.append("',"); - } - filtro.append(" AND autorizacion.CATALOG IN ("); - filtro.append(autorizacionSel.substring(0, autorizacionSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido es el siguiente::" + filtro); - return filtro.toString(); - } - - - private String obtenerTipoArmaSeleccionada(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder armaSel = new StringBuilder(); - for (String tipos : tipoArmaSeleccionada) { - armaSel.append("'"); - armaSel.append(tipos); - armaSel.append("',"); - } - - filtro.append(" AND T.CATALOG IN ("); - filtro.append(armaSel.substring(0, armaSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido tipo Arma es el siguiente::" + filtro); - return filtro.toString(); - } - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLtipoAuto() { - return ltipoAuto; - } - - public void setLtipoAuto(List lestadosArma) { - this.ltipoAuto = lestadosArma; - } - - public List getTipoAutoSeleccionado() { - return tipoAutoSeleccionado; - } - - public void setTipoAutoSeleccionado(List estadosSeleccionados) { - this.tipoAutoSeleccionado = estadosSeleccionados; - } - - public List getLtipoArma() { - return ltipoArma; - } - - public void setLtipoArma(List ltipoArma) { - this.ltipoArma = ltipoArma; - } - - public List getTipoArmaSeleccionada() { - return tipoArmaSeleccionada; - } - - public void setTipoArmaSeleccionada(List tipoArmaSeleccionada) { - this.tipoArmaSeleccionada = tipoArmaSeleccionada; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoFabricacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoFabricacionController.java.svn-base deleted file mode 100644 index 1209a07..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTipoFabricacionController.java.svn-base +++ /dev/null @@ -1,434 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.log4j.Logger; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteTipoFabricacionController extends AbstractController{ - - /** - * - */ - public ReporteTipoFabricacionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private final static Logger LOGGER = Logger.getLogger(ReporteTipoArma.class); - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentroControl = null; - private List ltiporeg = null; - private List lestadosArma = null; - private List ltipoFabArma = null; - private List estadosSeleccionados = null; - //Tipo de Fabricacion Arma Seleccionada - private List tipoFabArmaSeleccionada = null; - - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idTipoReg; - private Date fec_actual; - private String codCentroControl; - - - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - ltiporeg = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - this.lestadosArma = CatalogDetailController.find("ESTADOARMA"); - //tipo de Fabricacion Arma - this.ltipoFabArma = CatalogDetailController.find("TIPOFABRICACION"); - this.lcentroControl = CentroControlArmasController.findAll(); - this.responsableCentroControl = new TcustPersonDetail(); -// this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //this.obtenerResponsableCentroControl(); - this.idTipoReg=""; - this.codCentroControl=""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Tipo de Fabricacion de las Armas - */ - public void reporteTipoFabricacion() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoFabricacion"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - - parameters.put("filtroTipos", obtenerTipoFabArmaSeleccionada()); -// } - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public void reporteTipoFabricacionXls() { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteTipoFabricacion"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - - parameters.put("filtroTipos", obtenerTipoFabArmaSeleccionada()); -// } - - String format = "xls"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - private String obtenerTipoFabArmaSeleccionada(){ - StringBuilder filtro = new StringBuilder(); - StringBuilder armaSel = new StringBuilder(); - for (String tipos : tipoFabArmaSeleccionada) { - armaSel.append("'"); - armaSel.append(tipos); - armaSel.append("',"); - } - - filtro.append(" AND A.TIPOFABRICACION IN ("); - filtro.append(armaSel.substring(0, armaSel.length() - 1)); - filtro.append(")"); - LOGGER.info("el filtro obtenido tipo Arma es el siguiente::" + filtro); - return filtro.toString(); - } - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdTipoReg() { - return idTipoReg; - } - - public void setIdTipoReg(String idTipoReg) { - this.idTipoReg = idTipoReg; - } - - public List getLtiporeg() { - return ltiporeg; - } - - public void setLtiporeg(List ltiporeg) { - this.ltiporeg = ltiporeg; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLcentroControl() { - return lcentroControl; - } - - public void setLcentroControl(List lcentroControl) { - this.lcentroControl = lcentroControl; - } - - public String getCodCentroControl() { - return codCentroControl; - } - - public void setCodCentroControl(String codCentroControl) { - this.codCentroControl = codCentroControl; - } - - public List getLestadosArma() { - return lestadosArma; - } - - public void setLestadosArma(List lestadosArma) { - this.lestadosArma = lestadosArma; - } - - public List getEstadosSeleccionados() { - return estadosSeleccionados; - } - - public void setEstadosSeleccionados(List estadosSeleccionados) { - this.estadosSeleccionados = estadosSeleccionados; - } - - - public List getLtipoFabArma() { - return ltipoFabArma; - } - - public void setLtipoFabArma(List ltipoFabArma) { - this.ltipoFabArma = ltipoFabArma; - } - - public List getTipoFabArmaSeleccionada() { - return tipoFabArmaSeleccionada; - } - - public void setTipoFabArmaSeleccionada(List tipoFabArmaSeleccionada) { - this.tipoFabArmaSeleccionada = tipoFabArmaSeleccionada; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTramiteCentroController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTramiteCentroController.java.svn-base deleted file mode 100644 index 9325016..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/ReporteTramiteCentroController.java.svn-base +++ /dev/null @@ -1,401 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.eclipse.jdt.core.dom.ThisExpression; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * @author DLO - * Clase Controladora la cual genera el reporte de trámite por centro de control - */ -@ManagedBean -@ViewScoped -public class ReporteTramiteCentroController extends AbstractController { - - public ReporteTramiteCentroController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - - @ManagedProperty(value = "#{centroControlController}") - private CentroControlArmasController centroControlController; - - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmCentroControl centroControl = new TarmCentroControl(); - private List lcentros = null; - private List lestados = null; - private String institucionCentroControl=""; - private Date fechainicial; - private Date fechafinal; - private String filtro=""; - private String filtro2=""; - private String idCentroControl; - private String estado; - private Date fec_actual; - private String estadoDoc; - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTE"; - lcentros = CatalogDetailController.find("NOMBREINSTITUCION"); - this.lestados = CatalogDetailController.find("ESTADODOCUMENTO"); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - //this.obtenerResponsableCentroControl(); - this.idCentroControl=""; - this.estadoDoc =""; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - else{ - return ""; - } - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - @Override - protected void querydatabase() { - - } - - - - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - - - } - - /** - * Obtiene el reporte de Ficha de Armas - */ - public void reporteTramitesCentro() { - try { - if(this.fechainicial.getTime()>this.fechafinal.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_fechafinal")); - return; - } - String gradoUsuario =""; - String path = "armas/reports/reporteTremiteXCentro"; - String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - //String filename="reporte"; - - // Datos del centro de control del usuario logueado - institucionCentroControl = obtenerCentroControl(); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("centroControl", institucionCentroControl); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson=PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - - //fechas inicial y final que vienen desde el controlador - SimpleDateFormat df=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechainicial", df.format(this.fechainicial)); - parameters.put("fechafinal", df.format(this.fechafinal)); - - TarmCentroControl centro =null; - if(!this.idCentroControl.toString().equals("TODOS")){ - centro = CentroControlArmasController.findPorCentroControl(this.idCentroControl.toString()); - } -// if(centro == null){ -// MessageHelper.setMessageInfo("EL CENTRO DE CONTROL DE ARMAS SELECCIONADO NO TIENE DATOS A MOSTRAR"); -// return; -// } - - if(centro!=null && centro.getPk()!=null && this.idCentroControl.toString()!="TODOS"){ - this.filtro = " and h.ccentrocontrol = '"+centro.getPk()+"' "; - parameters.put("filtro", this.filtro); - }else { - parameters.put("filtro", ""); - } - - if(this.estadoDoc.equals("APR") && this.estadoDoc!=null){ - this.filtro2 = " and h.estado = '"+this.estadoDoc+"' "; - parameters.put("filtro2", this.filtro2); - }else if (this.estadoDoc.equals("CAN") && this.estadoDoc!=null) { - this.filtro2 = " and h.estado = '"+this.estadoDoc+"' "; - parameters.put("filtro2", this.filtro2); - }else if (this.estadoDoc.equals("SUS") && this.estadoDoc!=null) { - this.filtro2 = " and h.estado = '"+this.estadoDoc+"' "; - parameters.put("filtro2", this.filtro2); - }else if (this.estadoDoc.equals("FIN") && this.estadoDoc!=null) { - this.filtro2 = " and h.estado = '"+this.estadoDoc+"' "; - parameters.put("filtro2", this.filtro2); - }else { - parameters.put("filtro2", ""); - } - - - String format = "xlsx"; - - try { - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TcustPersonDetail getCustomerperson() { - return customerperson; - } - - public void setCustomerperson(TcustPersonDetail customerperson) { - this.customerperson = customerperson; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public List getLcentros() { - return lcentros; - } - - public void setLcentros(List lcentros) { - this.lcentros = lcentros; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public CentroControlArmasController getCentroControlController() { - return centroControlController; - } - - public void setCentroControlController( - CentroControlArmasController centroControlController) { - this.centroControlController = centroControlController; - } - - public List getLestados() { - return lestados; - } - - public void setLestados(List lestados) { - this.lestados = lestados; - } - - public String getEstadoDoc() { - return estadoDoc; - } - - public void setEstadoDoc(String estadoDoc) { - this.estadoDoc = estadoDoc; - } - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - - - - - - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/TotalArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/TotalArmasController.java.svn-base deleted file mode 100644 index 6995c00..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/TotalArmasController.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.pgeneral.gene.TgeneCountry; - - -/** - * Clase controladora del bean TarmTotalPersona. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TotalArmasController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public TotalArmasController() throws Exception { - super(TarmTotalPersona.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TOTALCONTROLLER"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmTotalPersona findbyClase(String clase, String tipoarmaexplosivo, String personcodigo) { - try { - TotalArmasController cc = new TotalArmasController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.addFilter("personcodigo", personcodigo); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.netbeans-base deleted file mode 100644 index dc7c09f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.netbeans-base +++ /dev/null @@ -1,823 +0,0 @@ - package com.fp.frontend.controller.armas.funcionalidad; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmVentaArmaTemporalController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.armas.parametros.VentaTotalPersonaController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora la cual maneja la venta de armas - */ -@ManagedBean -@ViewScoped -public class VentaController extends AbstractController { - - public VentaController() throws Exception { - super(TarmArmas.class); - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{movimientoController}") - private MovimientoController movimientoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - - @ManagedProperty(value = "#{ventaTotalPersonaController}") - private VentaTotalPersonaController ventaTotalPersonaController; - - @ManagedProperty(value = "#{tarmVentaArmaTemporalController}") - private TarmVentaArmaTemporalController ventaArmaTemp; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - - private String loteFilter; - - /** - * Lisat de personas - */ - private List lperson; - private TarmMovimientoArmas movimientoArma; - - /** - * Persona Cliente a la cual se le vende un arma - */ - private TcustPersonDetail compradorArma; - /** - * Cantidad de producto en venta - */ - private Integer cantidad; - /** - * Peso del producto en venta - */ - private BigDecimal peso; - /** - * Referencia de los Movimientos en el catalogo - */ - private List lmovimientos; - /** - * Lista referenciada al catalogo - */ - private List lcatalog; - /** - * Referencia del cliente en el catalogo - */ - private TgeneCatalogDetail cdetalle; - /** - * Detalle de la persona que vende el arma - */ - private TcustPersonDetail persondetail; - /** - * Fecha actual del sistema - */ - private Date fecha; - /** - * Lista de centros de control - */ - private List centroControlList; - - /** - * Codigo del centro de control - */ - private String ccentrocontrol; - - /** - * umero de solicitud - */ - private String numerosolicitud; - /** - * bandera para el flujo de venta - */ - private String flujoventa; - /** - * bandera para el consumo de municion - */ - private String consumomunicion; - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @PostConstruct - private void postconstruct() { - this.init(); - centroControlList=CentroControlArmasController.findEstadoInst("Y","1");//Departamento - querydatabase(); - } - - private void init() { - try { - peso=null; - cantidad=null; - this.lrecord = new ArrayList<>(); - this.beanalias = "VENTAARMAS"; - // tipomovimiento=false; - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.persondetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - lmovimientos = CatalogDetailController.find("TIPOREGISTRO","MOV");//catalogo de movimientos - cdetalle = CatalogDetailController.findxCodigoCodcatalogo(getPersondetail().getIdentificationcatalog(),getPersondetail().getIdentificationcatalogcode()); - fecha = new Date(); - lcatalog=CatalogDetailController.find("IDENTIFICATION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryLonguitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryLonguitud); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArma); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryUnidad= new SubQuery("TgeneCatalogDetail","description","unidadmedidapeso","i.pk.catalog=(select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidad); - - dto.setOrderby("lote, ctipoarmaexplosivo,cregistro"); - - Filter filtro=new Filter(); - String filtrofecha= "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado in("+MsgControlArmas.getProperty("codigo_estado_arma_busqueda_venta")+") "//'REG','REN','APTA','DEV','ECO','COLE' - + " and cregistro in (select reg.pk from TarmRegistroArmas reg where reg.personcode ='"+persondetail.getPk().getPersoncode()+"' )" - + " and (t.peso>0 or t.cantidad>0)"; - - if(loteFilter!=null && !loteFilter.isEmpty()){ - filtrofecha+=" and UPPER(t.lote) like '"+loteFilter+"'"; - } - - filtro.setSql(filtrofecha); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ARMASCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Cambia el valor del movimiento de Venta a Materia Prima - */ - public void changeType(){ - compradorArma=new TcustPersonDetail(); - } - /** - * Valida que la fecha de venta no seaa superior a la fecha del sistema - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fecha=new Date(); - } - } - - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Actualiza la informacion en el lrecord - */ - @Override - public void update(){ - try { - String pathRuta=""; - //ACTUALIZA ELRESTO DE DATOS DE LA TABLA DE MOVIMIENTO - this.movimientoArma.setPersoncodevendedor(persondetail.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaVemdedor", persondetail); - if(movimientoArma.getTipomovimiento().equals("VENT")){ - if(compradorArma!=null && compradorArma.getPk()!=null){ - //if(verificaDocHabilitante(compradorArma.getPk().getPersoncode())){ - this.movimientoArma.setPersoncodecomprador(compradorArma.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaComprador", compradorArma); - } - else{ - MessageHelper.setMessageWarn("DEBE INGRESAR UN CLIENTE"); - return; - } - //VALIDA SI ES ARMA: LETAL Y NO LETAL - TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(this.record.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && ((this.flujoventa !=null && this.flujoventa.equals("SI") && movimientoArma.getTipomovimiento().equals("VENT")) || - (this.consumomunicion!=null && this.consumomunicion.equals("SI") && movimientoArma.getTipomovimiento().equals("CONS"))) - && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001") - || tipoArmaExplosivo.getClase().equals("0010000002"))){//0010000002 MUNICION - - String xPathLocation= getRutaDocumentoSolBase() + "/cm:I-" +persondetail.getIdentification()+ "/cm:C-" + record.getCodigoarma() ; - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = "PERMISO-"+this.record.getCodigoarma()+"."+extencionArchivo; - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - pathRuta=xPathLocation + "/cm:" + nombreArchivo; - }else{ - MessageHelper.setMessageError("Adjunte el documento erroneo"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento "); - return; - } - - if(ccentrocontrol!=null && !ccentrocontrol.trim().isEmpty()){ - saveVentaArma(pathRuta); - //retorna - return; - }else{ - MessageHelper.setMessageWarn("SELECCIONE EL CENTRO DE CONTROL"); - return; - } - } - }else{ - this.movimientoArma.getModifiedData().put("personaComprador", persondetail); - this.movimientoArma.setPersoncodecomprador(persondetail.getPk().getPersoncode());//es el mismo si el tipo movimientoArma.getTipomovimiento() es diferente de nenta - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:VentaTem-"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - public void saveVentaArma(String pathRuta) { - try { - System.out.println("-------------Ingresa Venta Armas Save: "+numerosolicitud); - - //actualiza el arma a un estado pendiente de venta - this.record.setEstadoventa("PENVEN"); - numerosolicitud=record.getPk(); - System.out.println("------------Ingresa Venta Armas Save2: "+numerosolicitud); - - super.update(); - - ventaArmaTemp.clearAll(); - ventaArmaTemp.create(); - ventaArmaTemp.getRecord().setCarma(record.getPk()); - //this.movimientoArma.setPersoncodecomprador(compradorArma.getPk().getPersoncode()); - ventaArmaTemp.getRecord().setPersoncodigo(compradorArma.getPk().getPersoncode()); - ventaArmaTemp.getRecord().setEstado("PENDIENTE"); - ventaArmaTemp.getRecord().setFcreacion(new java.sql.Date(new Date().getTime())); - ventaArmaTemp.getRecord().setFactura( movimientoArma.getFactura()); - ventaArmaTemp.getRecord().setNoregistra(movimientoArma.getNoregistro()); - ventaArmaTemp.getRecord().setJustificacion(movimientoArma.getJustificacion()); - ventaArmaTemp.getRecord().setPathdocumento(pathRuta); - ventaArmaTemp.getRecord().setCentrocontrol(ccentrocontrol); - ventaArmaTemp.update(); - - Request request = this.callerhelper.getRequest(); - super.cleanRequest(request); - - HashMap msave = new HashMap(); - - DtoSave dtosaveArma = this.getDtoSave(true); - dtosaveArma.setPosition(1); - msave.put(this.getBeanalias(), dtosaveArma);//2 - - DtoSave dtosaveRegistro = this.ventaArmaTemp.getDtoSave(true); - dtosaveRegistro.setPosition(2); - msave.put(ventaArmaTemp.getBeanalias(), dtosaveRegistro); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.ventaArmaTemp.postCommit(resp); - this.record= new TarmArmas(); - MessageHelper.setMessageInfo(resp); - //inicio del flujo - iniciarFlujo(); - super.cleanRequest(request); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - System.out.println("--------------Ingresa Venta Armas Inicio Flujo: "+numerosolicitud); - - String cprovincia=null; - for(TarmCentroControl centro: centroControlList){ - if(ccentrocontrol.equals(centro.getPk())){ - cprovincia=centro.getProvincecode(); - } - } - ; - if(cprovincia==null || cprovincia.length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", numerosolicitud);//nuemro del arma carma pk - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault()); - request.modifiedData().put("numerosolicitud", numerosolicitud+"-"+this.persondetail.getPk().getPersoncode()+"-"+dateFormat.format(new Date()) ); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(numerosolicitud); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - cantidad=null; - peso=null; - //crea un movimiento para la tabla TarmMovimientoArmas - movimientoArma= null; - //crea a la persona compradora - compradorArma=null; - // tipomovimiento=false; - flujoventa=null; - consumomunicion=null; - //flujoiniciado = true; - //deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: " + numerosolicitud); - //saveInicioFlujoEnYES(); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param cantidad - */ - public void validarCantidadMexima(Integer cantidad){ - this.peso=null; - if(cantidad==null || cantidad==0 || cantidad<0|| cantidad.compareTo(record.getCantidad())>0){ - this.cantidad=record.getCantidad(); - } - } - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param peso - */ - public void validarPesoMexima(BigDecimal peso){ - this.cantidad=null; - if(peso==null || peso.compareTo(new BigDecimal(0))==0|| peso.compareTo(new BigDecimal(0))<0|| peso.compareTo(record.getPeso())>0){ - this.peso=getRecord().getPeso(); - } - } - - /** - * Crea un registro de arma - * @param arm - */ - public void create(TarmArmas arm){ - try { - cantidad=arm.getCantidad(); - peso=arm.getPeso(); - //crea un movimiento para la tabla TarmMovimientoArmas - movimientoArma= new TarmMovimientoArmas(); - //crea a la persona compradora - compradorArma=new TcustPersonDetail(); - // tipomovimiento=false; - flujoventa=null; - consumomunicion=null; - //VALIDA SI ES ARMA: LETAL Y NO LETAL - TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(arm.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001"))){ - flujoventa="SI"; - } - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && tipoArmaExplosivo.getClase().equals("0010000002")){ - consumomunicion="SI"; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public TgeneCatalogDetail getCdetalle() { - return cdetalle; - } - - public void setCdetalle(TgeneCatalogDetail cdetalle) { - this.cdetalle = cdetalle; - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - compradorArma= (TcustPersonDetail) event.getObject(); - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - try { - //actualiza el movimiento - this.movimientoArma.setCarma(record.getPk()); - this.movimientoArma.setTipomovimientocodigo("TIPOMOVIMIENTO"); - this.movimientoArma.setFecha(new java.sql.Timestamp(fecha.getTime()) ); - this.movimientoController.create(); - this.movimientoController.setRecord(movimientoArma); - this.movimientoController.getRecord().setIsnew(true); - this.movimientoController.update(); - //actualiza el arma - //this.record.setPk(null); - if(cantidad!=null){ - this.record.setValorAux(cantidad); - } - if(peso!=null){ - this.record.setPesoAux(peso); - } - super.update(); - - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosaveRegistro = this.registroArmController.getDtoSave(true); - dtosaveRegistro.setPosition(1); - msave.put(registroArmController.getBeanalias(), dtosaveRegistro); - - DtoSave dtosaveMovimiento = this.movimientoController.getDtoSave(true); - dtosaveMovimiento.setPosition(2); - msave.put(movimientoController.getBeanalias(), dtosaveMovimiento);//1 - - DtoSave dtosaveTotalPersona = this.ventaTotalPersonaController.getDtoSave(true); - dtosaveTotalPersona.setPosition(3); - msave.put(ventaTotalPersonaController.getBeanalias(), dtosaveTotalPersona); - - DtoSave dtosaveArma = this.getDtoSave(true); - dtosaveArma.setPosition(4); - msave.put(this.getBeanalias(), dtosaveArma);//2 - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.ventaTotalPersonaController.postCommit(resp); - this.movimientoController.postCommit(resp); - this.registroArmController.postCommit(resp); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - -// private boolean verificaDocHabilitante(Integer personcode) { -// boolean verifica = false; -// TsafeUserDetail userDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); -// TgeneParameters habVenta = ParametersController.find("TRAHABVENTAS", userDetail.getCompanycode().toString()); -// List ldocs = DocumentoHabilitanteController.findPorPersoncode(personcode.toString()); -// if(ldocs != null && !ldocs.isEmpty()){ -// for (TarmDocumentoHabilitante doc : ldocs) { -// String[] tramites = habVenta.getTextvalue().split(","); -// int ind = Arrays.binarySearch(tramites, doc.getCtramite().toString()); -// if(ind >= 0 && Calendar.getInstance().getTime().compareTo(doc.getFechaexpiracion()) <= 0){ -// verifica = true; -// break; -// } -// } -// } -// return verifica; -// } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - @Override - public void postCommit(Response response) throws Exception { - super.postCommit(response); - } - - - public TcustPersonDetail getPersondetail() { - return persondetail; - } - - public void setPersondetail(TcustPersonDetail persondetail) { - this.persondetail = persondetail; - } - - public List getLcatalog() { - return lcatalog; - } - - public void setLcatalog(List lcatalog) { - this.lcatalog = lcatalog; - } - - public TcustPersonDetail getCompradorArma() { - return compradorArma; - } - - public void setCompradorArma(TcustPersonDetail compradorArma) { - this.compradorArma = compradorArma; - } - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController(RegistroArmController registroArmController) { - this.registroArmController = registroArmController; - } - - public Integer getCantidad() { - return cantidad; - } - - public void setCantidad(Integer cantidad) { - this.cantidad = cantidad; - } - - public BigDecimal getPeso() { - return peso; - } - - public void setPeso(BigDecimal peso) { - this.peso = peso; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public List getLmovimientos() { - return lmovimientos; - } - - public void setLmovimientos(List lmovimientos) { - this.lmovimientos = new ArrayList(); - for(TgeneCatalogDetail mov:lmovimientos){ - //No se incluye el tipo de registro TRASLADO (TRASL) - if(!mov.getPk().getCatalog().equalsIgnoreCase("TRASL")){ - this.lmovimientos.add(mov); - } - } - } - - public List getLperson() { - return lperson; - } - - public void setLperson(List lperson) { - this.lperson = lperson; - } - - public TarmMovimientoArmas getMovimientoArma() { - return movimientoArma; - } - - public void setMovimientoArma(TarmMovimientoArmas movimientoArma) { - this.movimientoArma = movimientoArma; - } - - public MovimientoController getMovimientoController() { - return movimientoController; - } - - public void setMovimientoController(MovimientoController movimientoController) { - this.movimientoController = movimientoController; - } - - public VentaTotalPersonaController getVentaTotalPersonaController() { - return ventaTotalPersonaController; - } - - public void setVentaTotalPersonaController( - VentaTotalPersonaController ventaTotalPersonaController) { - this.ventaTotalPersonaController = ventaTotalPersonaController; - } - - public String getLoteFilter() { - return loteFilter; - } - - public void setLoteFilter(String loteFilter) { - this.loteFilter = loteFilter; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public String getCcentrocontrol() { - return ccentrocontrol; - } - - public void setCcentrocontrol(String ccentrocontrol) { - this.ccentrocontrol = ccentrocontrol; - } - - public String getFlujoventa() { - return flujoventa; - } - - public void setFlujoventa(String flujoventa) { - this.flujoventa = flujoventa; - } - - public String getConsumomunicion() { - return consumomunicion; - } - - public void setConsumomunicion(String consumomunicion) { - this.consumomunicion = consumomunicion; - } - - public TarmVentaArmaTemporalController getVentaArmaTemp() { - return ventaArmaTemp; - } - - public void setVentaArmaTemp(TarmVentaArmaTemporalController ventaArmaTemp) { - this.ventaArmaTemp = ventaArmaTemp; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.svn-base deleted file mode 100644 index dc7c09f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaController.java.svn-base +++ /dev/null @@ -1,823 +0,0 @@ - package com.fp.frontend.controller.armas.funcionalidad; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Locale; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmVentaArmaTemporalController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.armas.parametros.VentaTotalPersonaController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora la cual maneja la venta de armas - */ -@ManagedBean -@ViewScoped -public class VentaController extends AbstractController { - - public VentaController() throws Exception { - super(TarmArmas.class); - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{movimientoController}") - private MovimientoController movimientoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - - @ManagedProperty(value = "#{ventaTotalPersonaController}") - private VentaTotalPersonaController ventaTotalPersonaController; - - @ManagedProperty(value = "#{tarmVentaArmaTemporalController}") - private TarmVentaArmaTemporalController ventaArmaTemp; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - - private String loteFilter; - - /** - * Lisat de personas - */ - private List lperson; - private TarmMovimientoArmas movimientoArma; - - /** - * Persona Cliente a la cual se le vende un arma - */ - private TcustPersonDetail compradorArma; - /** - * Cantidad de producto en venta - */ - private Integer cantidad; - /** - * Peso del producto en venta - */ - private BigDecimal peso; - /** - * Referencia de los Movimientos en el catalogo - */ - private List lmovimientos; - /** - * Lista referenciada al catalogo - */ - private List lcatalog; - /** - * Referencia del cliente en el catalogo - */ - private TgeneCatalogDetail cdetalle; - /** - * Detalle de la persona que vende el arma - */ - private TcustPersonDetail persondetail; - /** - * Fecha actual del sistema - */ - private Date fecha; - /** - * Lista de centros de control - */ - private List centroControlList; - - /** - * Codigo del centro de control - */ - private String ccentrocontrol; - - /** - * umero de solicitud - */ - private String numerosolicitud; - /** - * bandera para el flujo de venta - */ - private String flujoventa; - /** - * bandera para el consumo de municion - */ - private String consumomunicion; - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @PostConstruct - private void postconstruct() { - this.init(); - centroControlList=CentroControlArmasController.findEstadoInst("Y","1");//Departamento - querydatabase(); - } - - private void init() { - try { - peso=null; - cantidad=null; - this.lrecord = new ArrayList<>(); - this.beanalias = "VENTAARMAS"; - // tipomovimiento=false; - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.persondetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - lmovimientos = CatalogDetailController.find("TIPOREGISTRO","MOV");//catalogo de movimientos - cdetalle = CatalogDetailController.findxCodigoCodcatalogo(getPersondetail().getIdentificationcatalog(),getPersondetail().getIdentificationcatalogcode()); - fecha = new Date(); - lcatalog=CatalogDetailController.find("IDENTIFICATION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryLonguitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryLonguitud); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArma); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryUnidad= new SubQuery("TgeneCatalogDetail","description","unidadmedidapeso","i.pk.catalog=(select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidad); - - dto.setOrderby("lote, ctipoarmaexplosivo,cregistro"); - - Filter filtro=new Filter(); - String filtrofecha= "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado in("+MsgControlArmas.getProperty("codigo_estado_arma_busqueda_venta")+") "//'REG','REN','APTA','DEV','ECO','COLE' - + " and cregistro in (select reg.pk from TarmRegistroArmas reg where reg.personcode ='"+persondetail.getPk().getPersoncode()+"' )" - + " and (t.peso>0 or t.cantidad>0)"; - - if(loteFilter!=null && !loteFilter.isEmpty()){ - filtrofecha+=" and UPPER(t.lote) like '"+loteFilter+"'"; - } - - filtro.setSql(filtrofecha); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ARMASCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Cambia el valor del movimiento de Venta a Materia Prima - */ - public void changeType(){ - compradorArma=new TcustPersonDetail(); - } - /** - * Valida que la fecha de venta no seaa superior a la fecha del sistema - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fecha=new Date(); - } - } - - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Actualiza la informacion en el lrecord - */ - @Override - public void update(){ - try { - String pathRuta=""; - //ACTUALIZA ELRESTO DE DATOS DE LA TABLA DE MOVIMIENTO - this.movimientoArma.setPersoncodevendedor(persondetail.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaVemdedor", persondetail); - if(movimientoArma.getTipomovimiento().equals("VENT")){ - if(compradorArma!=null && compradorArma.getPk()!=null){ - //if(verificaDocHabilitante(compradorArma.getPk().getPersoncode())){ - this.movimientoArma.setPersoncodecomprador(compradorArma.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaComprador", compradorArma); - } - else{ - MessageHelper.setMessageWarn("DEBE INGRESAR UN CLIENTE"); - return; - } - //VALIDA SI ES ARMA: LETAL Y NO LETAL - TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(this.record.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && ((this.flujoventa !=null && this.flujoventa.equals("SI") && movimientoArma.getTipomovimiento().equals("VENT")) || - (this.consumomunicion!=null && this.consumomunicion.equals("SI") && movimientoArma.getTipomovimiento().equals("CONS"))) - && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001") - || tipoArmaExplosivo.getClase().equals("0010000002"))){//0010000002 MUNICION - - String xPathLocation= getRutaDocumentoSolBase() + "/cm:I-" +persondetail.getIdentification()+ "/cm:C-" + record.getCodigoarma() ; - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = "PERMISO-"+this.record.getCodigoarma()+"."+extencionArchivo; - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - pathRuta=xPathLocation + "/cm:" + nombreArchivo; - }else{ - MessageHelper.setMessageError("Adjunte el documento erroneo"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento "); - return; - } - - if(ccentrocontrol!=null && !ccentrocontrol.trim().isEmpty()){ - saveVentaArma(pathRuta); - //retorna - return; - }else{ - MessageHelper.setMessageWarn("SELECCIONE EL CENTRO DE CONTROL"); - return; - } - } - }else{ - this.movimientoArma.getModifiedData().put("personaComprador", persondetail); - this.movimientoArma.setPersoncodecomprador(persondetail.getPk().getPersoncode());//es el mismo si el tipo movimientoArma.getTipomovimiento() es diferente de nenta - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:VentaTem-"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - public void saveVentaArma(String pathRuta) { - try { - System.out.println("-------------Ingresa Venta Armas Save: "+numerosolicitud); - - //actualiza el arma a un estado pendiente de venta - this.record.setEstadoventa("PENVEN"); - numerosolicitud=record.getPk(); - System.out.println("------------Ingresa Venta Armas Save2: "+numerosolicitud); - - super.update(); - - ventaArmaTemp.clearAll(); - ventaArmaTemp.create(); - ventaArmaTemp.getRecord().setCarma(record.getPk()); - //this.movimientoArma.setPersoncodecomprador(compradorArma.getPk().getPersoncode()); - ventaArmaTemp.getRecord().setPersoncodigo(compradorArma.getPk().getPersoncode()); - ventaArmaTemp.getRecord().setEstado("PENDIENTE"); - ventaArmaTemp.getRecord().setFcreacion(new java.sql.Date(new Date().getTime())); - ventaArmaTemp.getRecord().setFactura( movimientoArma.getFactura()); - ventaArmaTemp.getRecord().setNoregistra(movimientoArma.getNoregistro()); - ventaArmaTemp.getRecord().setJustificacion(movimientoArma.getJustificacion()); - ventaArmaTemp.getRecord().setPathdocumento(pathRuta); - ventaArmaTemp.getRecord().setCentrocontrol(ccentrocontrol); - ventaArmaTemp.update(); - - Request request = this.callerhelper.getRequest(); - super.cleanRequest(request); - - HashMap msave = new HashMap(); - - DtoSave dtosaveArma = this.getDtoSave(true); - dtosaveArma.setPosition(1); - msave.put(this.getBeanalias(), dtosaveArma);//2 - - DtoSave dtosaveRegistro = this.ventaArmaTemp.getDtoSave(true); - dtosaveRegistro.setPosition(2); - msave.put(ventaArmaTemp.getBeanalias(), dtosaveRegistro); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.ventaArmaTemp.postCommit(resp); - this.record= new TarmArmas(); - MessageHelper.setMessageInfo(resp); - //inicio del flujo - iniciarFlujo(); - super.cleanRequest(request); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - System.out.println("--------------Ingresa Venta Armas Inicio Flujo: "+numerosolicitud); - - String cprovincia=null; - for(TarmCentroControl centro: centroControlList){ - if(ccentrocontrol.equals(centro.getPk())){ - cprovincia=centro.getProvincecode(); - } - } - ; - if(cprovincia==null || cprovincia.length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", numerosolicitud);//nuemro del arma carma pk - SimpleDateFormat dateFormat = new SimpleDateFormat("dd/MM/yyyy HH:mm", Locale.getDefault()); - request.modifiedData().put("numerosolicitud", numerosolicitud+"-"+this.persondetail.getPk().getPersoncode()+"-"+dateFormat.format(new Date()) ); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(numerosolicitud); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - cantidad=null; - peso=null; - //crea un movimiento para la tabla TarmMovimientoArmas - movimientoArma= null; - //crea a la persona compradora - compradorArma=null; - // tipomovimiento=false; - flujoventa=null; - consumomunicion=null; - //flujoiniciado = true; - //deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: " + numerosolicitud); - //saveInicioFlujoEnYES(); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param cantidad - */ - public void validarCantidadMexima(Integer cantidad){ - this.peso=null; - if(cantidad==null || cantidad==0 || cantidad<0|| cantidad.compareTo(record.getCantidad())>0){ - this.cantidad=record.getCantidad(); - } - } - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param peso - */ - public void validarPesoMexima(BigDecimal peso){ - this.cantidad=null; - if(peso==null || peso.compareTo(new BigDecimal(0))==0|| peso.compareTo(new BigDecimal(0))<0|| peso.compareTo(record.getPeso())>0){ - this.peso=getRecord().getPeso(); - } - } - - /** - * Crea un registro de arma - * @param arm - */ - public void create(TarmArmas arm){ - try { - cantidad=arm.getCantidad(); - peso=arm.getPeso(); - //crea un movimiento para la tabla TarmMovimientoArmas - movimientoArma= new TarmMovimientoArmas(); - //crea a la persona compradora - compradorArma=new TcustPersonDetail(); - // tipomovimiento=false; - flujoventa=null; - consumomunicion=null; - //VALIDA SI ES ARMA: LETAL Y NO LETAL - TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(arm.getCtipoarmaexplosivo()); - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001"))){ - flujoventa="SI"; - } - if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") - && tipoArmaExplosivo.getClase().equals("0010000002")){ - consumomunicion="SI"; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public TgeneCatalogDetail getCdetalle() { - return cdetalle; - } - - public void setCdetalle(TgeneCatalogDetail cdetalle) { - this.cdetalle = cdetalle; - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - compradorArma= (TcustPersonDetail) event.getObject(); - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - try { - //actualiza el movimiento - this.movimientoArma.setCarma(record.getPk()); - this.movimientoArma.setTipomovimientocodigo("TIPOMOVIMIENTO"); - this.movimientoArma.setFecha(new java.sql.Timestamp(fecha.getTime()) ); - this.movimientoController.create(); - this.movimientoController.setRecord(movimientoArma); - this.movimientoController.getRecord().setIsnew(true); - this.movimientoController.update(); - //actualiza el arma - //this.record.setPk(null); - if(cantidad!=null){ - this.record.setValorAux(cantidad); - } - if(peso!=null){ - this.record.setPesoAux(peso); - } - super.update(); - - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosaveRegistro = this.registroArmController.getDtoSave(true); - dtosaveRegistro.setPosition(1); - msave.put(registroArmController.getBeanalias(), dtosaveRegistro); - - DtoSave dtosaveMovimiento = this.movimientoController.getDtoSave(true); - dtosaveMovimiento.setPosition(2); - msave.put(movimientoController.getBeanalias(), dtosaveMovimiento);//1 - - DtoSave dtosaveTotalPersona = this.ventaTotalPersonaController.getDtoSave(true); - dtosaveTotalPersona.setPosition(3); - msave.put(ventaTotalPersonaController.getBeanalias(), dtosaveTotalPersona); - - DtoSave dtosaveArma = this.getDtoSave(true); - dtosaveArma.setPosition(4); - msave.put(this.getBeanalias(), dtosaveArma);//2 - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.ventaTotalPersonaController.postCommit(resp); - this.movimientoController.postCommit(resp); - this.registroArmController.postCommit(resp); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - -// private boolean verificaDocHabilitante(Integer personcode) { -// boolean verifica = false; -// TsafeUserDetail userDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); -// TgeneParameters habVenta = ParametersController.find("TRAHABVENTAS", userDetail.getCompanycode().toString()); -// List ldocs = DocumentoHabilitanteController.findPorPersoncode(personcode.toString()); -// if(ldocs != null && !ldocs.isEmpty()){ -// for (TarmDocumentoHabilitante doc : ldocs) { -// String[] tramites = habVenta.getTextvalue().split(","); -// int ind = Arrays.binarySearch(tramites, doc.getCtramite().toString()); -// if(ind >= 0 && Calendar.getInstance().getTime().compareTo(doc.getFechaexpiracion()) <= 0){ -// verifica = true; -// break; -// } -// } -// } -// return verifica; -// } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - @Override - public void postCommit(Response response) throws Exception { - super.postCommit(response); - } - - - public TcustPersonDetail getPersondetail() { - return persondetail; - } - - public void setPersondetail(TcustPersonDetail persondetail) { - this.persondetail = persondetail; - } - - public List getLcatalog() { - return lcatalog; - } - - public void setLcatalog(List lcatalog) { - this.lcatalog = lcatalog; - } - - public TcustPersonDetail getCompradorArma() { - return compradorArma; - } - - public void setCompradorArma(TcustPersonDetail compradorArma) { - this.compradorArma = compradorArma; - } - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController(RegistroArmController registroArmController) { - this.registroArmController = registroArmController; - } - - public Integer getCantidad() { - return cantidad; - } - - public void setCantidad(Integer cantidad) { - this.cantidad = cantidad; - } - - public BigDecimal getPeso() { - return peso; - } - - public void setPeso(BigDecimal peso) { - this.peso = peso; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public List getLmovimientos() { - return lmovimientos; - } - - public void setLmovimientos(List lmovimientos) { - this.lmovimientos = new ArrayList(); - for(TgeneCatalogDetail mov:lmovimientos){ - //No se incluye el tipo de registro TRASLADO (TRASL) - if(!mov.getPk().getCatalog().equalsIgnoreCase("TRASL")){ - this.lmovimientos.add(mov); - } - } - } - - public List getLperson() { - return lperson; - } - - public void setLperson(List lperson) { - this.lperson = lperson; - } - - public TarmMovimientoArmas getMovimientoArma() { - return movimientoArma; - } - - public void setMovimientoArma(TarmMovimientoArmas movimientoArma) { - this.movimientoArma = movimientoArma; - } - - public MovimientoController getMovimientoController() { - return movimientoController; - } - - public void setMovimientoController(MovimientoController movimientoController) { - this.movimientoController = movimientoController; - } - - public VentaTotalPersonaController getVentaTotalPersonaController() { - return ventaTotalPersonaController; - } - - public void setVentaTotalPersonaController( - VentaTotalPersonaController ventaTotalPersonaController) { - this.ventaTotalPersonaController = ventaTotalPersonaController; - } - - public String getLoteFilter() { - return loteFilter; - } - - public void setLoteFilter(String loteFilter) { - this.loteFilter = loteFilter; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public String getCcentrocontrol() { - return ccentrocontrol; - } - - public void setCcentrocontrol(String ccentrocontrol) { - this.ccentrocontrol = ccentrocontrol; - } - - public String getFlujoventa() { - return flujoventa; - } - - public void setFlujoventa(String flujoventa) { - this.flujoventa = flujoventa; - } - - public String getConsumomunicion() { - return consumomunicion; - } - - public void setConsumomunicion(String consumomunicion) { - this.consumomunicion = consumomunicion; - } - - public TarmVentaArmaTemporalController getVentaArmaTemp() { - return ventaArmaTemp; - } - - public void setVentaArmaTemp(TarmVentaArmaTemporalController ventaArmaTemp) { - this.ventaArmaTemp = ventaArmaTemp; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaTraspasoDominioController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaTraspasoDominioController.java.svn-base deleted file mode 100644 index c376282..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentaTraspasoDominioController.java.svn-base +++ /dev/null @@ -1,261 +0,0 @@ - package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TarmVentaArmaTemporalController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * @author CP - * Clase Controladora flujo venta de armas - */ -@ManagedBean -@ViewScoped -public class VentaTraspasoDominioController extends AbstractController { - - public VentaTraspasoDominioController() throws Exception { - super(TarmArmas.class); - } - - private static final long serialVersionUID = 1L; - - /** - * Constante usada para referirse a la opcion general aprobar - */ - private final String APROBAR = "APR"; - - /** - * Opciones de aceptar o rechazar - */ - private List accionList; - /** - * numero de solicitud - */ - private String numerosolicitud; - /** - * Numero del arma a vender - */ - private String csolicitud; - /** - * Accion tomada por el usuario, aprobar o rechazar - */ - private String accionTomada; - - /** - * Propiedad usada para el manejo del Alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @PostConstruct - private void postconstruct() { - startQuery(); - this.getMfilters().clear(); - accionList=CatalogDetailController.find("ACCION"); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - //codigo del arma carma pk - csolicitud=super.getMfilters().get("csolicitud"); - //codigo persona compra - numerosolicitud=super.getMfilters().get("numerosolicitud"); - this.getMfilters().clear(); - querydatabase(); - for (TarmArmas item : this.lrecord) { - TarmVentaArmaTem ventaArma=TarmVentaArmaTemporalController.findPendienteCarma(item.getPk()); - if(ventaArma!=null){ - item.getModifiedData().put("pathdocumento", ventaArma.getPathdocumento()); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryLonguitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryLonguitud); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArma); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryUnidad= new SubQuery("TgeneCatalogDetail","description","unidadmedidapeso","i.pk.catalog=(select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidad); - - dto.setOrderby("lote, ctipoarmaexplosivo,cregistro"); - - Filter filtro=new Filter(); - String filtroCarma= "t.pk='"+csolicitud+"' and t.estadoventa='PENVEN'"; - - - filtro.setSql(filtroCarma); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ARMASCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - @Override - public void postCommit(Response response) throws Exception { - super.postCommit(response); - } - - /** - * Método para finalizar la tarea del flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - //mail - Map datosmail = new HashMap(); - datosmail.put("sol", numerosolicitud); - TarmCentroControl centroControl= obtenerCentroControl(); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - // Completar tarea en el flujo - if(accionTomada.equalsIgnoreCase(APROBAR)){ - request.modifiedData().put("BPMStatus", "A"); - datosmail.put("observaciones", "Aprobada"); - }else{ - request.modifiedData().put("BPMStatus", "D"); - datosmail.put("observaciones", "Rechazada"); - } - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("csolicitud", csolicitud);//nuemro del arma carma pk - request.modifiedData().put("numerosolicitud", numerosolicitud); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - this.clearAll(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Exception e) { - e.printStackTrace(); - } catch (Throwable e) { - e.printStackTrace(); - } - } - - /** - * Método para obtener el centro de control - * @throws Exception - */ - private TarmCentroControl obtenerCentroControl() throws Exception { - try { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return centroControl; - } catch (Exception e) { - e.getMessage(); - } - return null; - - } - - public List getAccionList() { - return accionList; - } - - public void setAccionList(List accionList) { - this.accionList = accionList; - } - - public String getAccionTomada() { - return accionTomada; - } - - public void setAccionTomada(String accionTomada) { - this.accionTomada = accionTomada; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentasVariasArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentasVariasArmasController.java.svn-base deleted file mode 100644 index 17eab23..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VentasVariasArmasController.java.svn-base +++ /dev/null @@ -1,627 +0,0 @@ - package com.fp.frontend.controller.armas.funcionalidad; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmVentaArmaTemporalController; -import com.fp.frontend.controller.armas.parametros.VentaTotalPersonaController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmMovimientoArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * Clase Controladora la cual maneja la venta de varias armas - */ -@ManagedBean -@ViewScoped -public class VentasVariasArmasController extends AbstractController { - - public VentasVariasArmasController() throws Exception { - super(TarmArmas.class); - } - - private static final long serialVersionUID = 1L; - - private ListlrecordSelccionadas; - - @ManagedProperty(value = "#{movimientoController}") - private MovimientoController movimientoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - - @ManagedProperty(value = "#{ventaTotalPersonaController}") - private VentaTotalPersonaController ventaTotalPersonaController; - - @ManagedProperty(value = "#{tarmVentaArmaTemporalController}") - private TarmVentaArmaTemporalController ventaArmaTemp; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - - private String loteFilter; - - /** - * Lisat de personas - */ - private List lperson; - private TarmMovimientoArmas movimientoArma; - - /** - * Persona Cliente a la cual se le vende un arma - */ - private TcustPersonDetail compradorArma; - /** - * Referencia de los Movimientos en el catalogo - */ - private List lmovimientos; - /** - * Lista referenciada al catalogo - */ - private List lcatalog; - /** - * Referencia del cliente en el catalogo - */ - private TgeneCatalogDetail cdetalle; - /** - * Detalle de la persona que vende el arma - */ - private TcustPersonDetail persondetail; - /** - * Fecha actual del sistema - */ - private Date fecha; - /** - * Lista de centros de control - */ - private List centroControlList; - - /** - * Codigo del centro de control - */ - private String ccentrocontrol; - - /** - * bandera para el flujo de venta - */ - private String flujoventa; - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @PostConstruct - private void postconstruct() { - this.init(); - centroControlList=CentroControlArmasController.findEstadoInst("Y","1");//Departamento - querydatabase(); - } - - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "VENTAVARIASARMAS"; - // tipomovimiento=false; - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.persondetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - lmovimientos = CatalogDetailController.find("TIPOREGISTRO","MOV");//catalogo de movimientos - cdetalle = CatalogDetailController.findxCodigoCodcatalogo(getPersondetail().getIdentificationcatalog(),getPersondetail().getIdentificationcatalogcode()); - fecha = new Date(); - lcatalog=CatalogDetailController.find("IDENTIFICATION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryLonguitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryLonguitud); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArma); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryUnidad= new SubQuery("TgeneCatalogDetail","description","unidadmedidapeso","i.pk.catalog=(select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidad); - - dto.setOrderby("lote, ctipoarmaexplosivo,cregistro"); - - Filter filtro=new Filter(); - String filtrofecha= "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado in("+MsgControlArmas.getProperty("codigo_estado_arma_busqueda_venta")+") "//'REG','REN','APTA','DEV','ECO','COLE' - + " and cregistro in (select reg.pk from TarmRegistroArmas reg where reg.personcode ='"+persondetail.getPk().getPersoncode()+"' )" - + " and (t.peso>0 or t.cantidad>0)"; - - if(loteFilter!=null && !loteFilter.isEmpty()){ - filtrofecha+=" and UPPER(t.lote) like '"+loteFilter+"'"; - } - filtrofecha+=" and t.ctipoarmaexplosivo not in " - + "(select ta.pk from TarmTipoArmaExplosivo ta where ta.clasecodigo='CLASE' and (ta.clase='0010000008' or ta.clase='0010000001'))"; - - //VALIDA SI ES ARMA: LETAL Y NO LETAL -// TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(arm.getCtipoarmaexplosivo()); -// if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") -// && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001"))){ -// flujoventa="SI"; -// } - - - filtro.setSql(filtrofecha); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ARMASCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Cambia el valor del movimiento de Venta a Materia Prima - */ - public void changeType(){ - compradorArma=new TcustPersonDetail(); - } - /** - * Valida que la fecha de venta no seaa superior a la fecha del sistema - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fecha=new Date(); - } - } - - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Actualiza la informacion en el lrecord - */ - @Override - public void update(){ - try { - for (TarmArmas item : this.lrecordSelccionadas) { - if((item.getPesoAux()==null ||item.getPesoAux().equals(new BigDecimal(0)))&& - (item.getValorAux()==0)){ - MessageHelper.setMessageWarn("Ingrese el peso / cantidad"); - return; - } - super.create(); - record=item; - super.update(); - } - //ACTUALIZA ELRESTO DE DATOS DE LA TABLA DE MOVIMIENTO - this.movimientoArma.setPersoncodevendedor(persondetail.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaVemdedor", persondetail); - if(movimientoArma.getTipomovimiento().equals("VENT")){ - if(compradorArma!=null && compradorArma.getPk()!=null){ - this.movimientoArma.setPersoncodecomprador(compradorArma.getPk().getPersoncode()); - this.movimientoArma.getModifiedData().put("personaComprador", compradorArma); - } - else{ - MessageHelper.setMessageWarn("DEBE INGRESAR UN CLIENTE"); - return; - } - }else{ - this.movimientoArma.getModifiedData().put("personaComprador", persondetail); - this.movimientoArma.setPersoncodecomprador(persondetail.getPk().getPersoncode());//es el mismo si el tipo movimientoArma.getTipomovimiento() es diferente de nenta - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param cantidad - */ - public void validarCantidadMaxima(Integer cantidad,TarmArmas arma){ - //this.peso=null; - if(cantidad==null || cantidad==0 || cantidad<0|| cantidad.compareTo(arma.getCantidad())>0){ - arma.setValorAux(0); - MessageHelper.setMessageWarn("Ingrese la cantidad"); - return; - } - } - - /** - * Valida que la cantidad que se desea vender no sea superior a la cantidad maxima que se tiene - * @param peso - */ - public void validarPesoMaxima(BigDecimal peso,TarmArmas arma){ - // this.cantidad=null; - if(peso==null || peso.compareTo(new BigDecimal(0))==0|| peso.compareTo(new BigDecimal(0))<0|| peso.compareTo(arma.getPeso())>0){ - arma.setPesoAux(null); - MessageHelper.setMessageWarn("Ingrese el peso"); - return; - } - } - - /** - * Crea un registro de arma - * @param arm - */ - public void create(){ - try { - lrecordSelccionadas=new ArrayList(); - int aux=0; - for (TarmArmas item: this.lrecord) { - if(item.getModifiedData().get("seleccionado")!=null && (Boolean)item.getModifiedData().get("seleccionado")){ - aux=1; - lrecordSelccionadas.add(item); - } - } - if(aux==0){ - MessageHelper.setMessageError("Seleccione un registro"); - return; - } - //crea un movimiento para la tabla TarmMovimientoArmas - movimientoArma= new TarmMovimientoArmas(); - //crea a la persona compradora - compradorArma=new TcustPersonDetail(); - // tipomovimiento=false; - flujoventa=null; -// //VALIDA SI ES ARMA: LETAL Y NO LETAL -// TarmTipoArmaExplosivo tipoArmaExplosivo=TiposArmasExplosivosController.findarma(arm.getCtipoarmaexplosivo()); -// if(tipoArmaExplosivo!=null && tipoArmaExplosivo.getClasecodigo().equals("CLASE") -// && (tipoArmaExplosivo.getClase().equals("0010000008") || tipoArmaExplosivo.getClase().equals("0010000001"))){ -// flujoventa="SI"; -// } - } catch (Exception e) { - e.printStackTrace(); - } - } - - - public TgeneCatalogDetail getCdetalle() { - return cdetalle; - } - - public void setCdetalle(TgeneCatalogDetail cdetalle) { - this.cdetalle = cdetalle; - } - - /** - * Abre el Lov de Persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Carga los datos que se devuelven en el Lov de personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - compradorArma= (TcustPersonDetail) event.getObject(); - } - - /** - * Graba los registros en la base de datos - */ - @Override - public void save() { - try { - //actualiza el movimiento - //this.movimientoArma.setCarma(record.getPk()); - this.movimientoArma.setTipomovimientocodigo("TIPOMOVIMIENTO"); - this.movimientoArma.setFecha(new java.sql.Timestamp(fecha.getTime()) ); - - Request request = this.callerhelper.getRequest(); - request.put("tarmMovimientoArmas", movimientoArma); - HashMap msave = new HashMap(); - - DtoSave dtosaveRegistro = this.registroArmController.getDtoSave(true); - dtosaveRegistro.setPosition(1); - msave.put(registroArmController.getBeanalias(), dtosaveRegistro); - - DtoSave dtosaveMovimiento = this.movimientoController.getDtoSave(true); - dtosaveMovimiento.setPosition(2); - msave.put(movimientoController.getBeanalias(), dtosaveMovimiento);//1 - - DtoSave dtosaveTotalPersona = this.ventaTotalPersonaController.getDtoSave(true); - dtosaveTotalPersona.setPosition(3); - msave.put(ventaTotalPersonaController.getBeanalias(), dtosaveTotalPersona); - - DtoSave dtosaveArma = this.getDtoSave(true); - dtosaveArma.setPosition(4); - msave.put(this.getBeanalias(), dtosaveArma);//2 - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.ventaTotalPersonaController.postCommit(resp); - this.movimientoController.postCommit(resp); - this.registroArmController.postCommit(resp); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - -// private boolean verificaDocHabilitante(Integer personcode) { -// boolean verifica = false; -// TsafeUserDetail userDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); -// TgeneParameters habVenta = ParametersController.find("TRAHABVENTAS", userDetail.getCompanycode().toString()); -// List ldocs = DocumentoHabilitanteController.findPorPersoncode(personcode.toString()); -// if(ldocs != null && !ldocs.isEmpty()){ -// for (TarmDocumentoHabilitante doc : ldocs) { -// String[] tramites = habVenta.getTextvalue().split(","); -// int ind = Arrays.binarySearch(tramites, doc.getCtramite().toString()); -// if(ind >= 0 && Calendar.getInstance().getTime().compareTo(doc.getFechaexpiracion()) <= 0){ -// verifica = true; -// break; -// } -// } -// } -// return verifica; -// } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#postCommit(com.fp.dto.Response) - */ - @Override - public void postCommit(Response response) throws Exception { - super.postCommit(response); - } - - - public TcustPersonDetail getPersondetail() { - return persondetail; - } - - public void setPersondetail(TcustPersonDetail persondetail) { - this.persondetail = persondetail; - } - - public List getLcatalog() { - return lcatalog; - } - - public void setLcatalog(List lcatalog) { - this.lcatalog = lcatalog; - } - - public TcustPersonDetail getCompradorArma() { - return compradorArma; - } - - public void setCompradorArma(TcustPersonDetail compradorArma) { - this.compradorArma = compradorArma; - } - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController(RegistroArmController registroArmController) { - this.registroArmController = registroArmController; - } - - public Date getFecha() { - return fecha; - } - - public void setFecha(Date fecha) { - this.fecha = fecha; - } - - public List getLmovimientos() { - return lmovimientos; - } - - public void setLmovimientos(List lmovimientos) { - this.lmovimientos = new ArrayList(); - for(TgeneCatalogDetail mov:lmovimientos){ - //No se incluye el tipo de registro TRASLADO (TRASL) - if(!mov.getPk().getCatalog().equalsIgnoreCase("TRASL")){ - this.lmovimientos.add(mov); - } - } - } - - public List getLperson() { - return lperson; - } - - public void setLperson(List lperson) { - this.lperson = lperson; - } - - public TarmMovimientoArmas getMovimientoArma() { - return movimientoArma; - } - - public void setMovimientoArma(TarmMovimientoArmas movimientoArma) { - this.movimientoArma = movimientoArma; - } - - public MovimientoController getMovimientoController() { - return movimientoController; - } - - public void setMovimientoController(MovimientoController movimientoController) { - this.movimientoController = movimientoController; - } - - public VentaTotalPersonaController getVentaTotalPersonaController() { - return ventaTotalPersonaController; - } - - public void setVentaTotalPersonaController( - VentaTotalPersonaController ventaTotalPersonaController) { - this.ventaTotalPersonaController = ventaTotalPersonaController; - } - - public String getLoteFilter() { - return loteFilter; - } - - public void setLoteFilter(String loteFilter) { - this.loteFilter = loteFilter; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public String getCcentrocontrol() { - return ccentrocontrol; - } - - public void setCcentrocontrol(String ccentrocontrol) { - this.ccentrocontrol = ccentrocontrol; - } - - public String getFlujoventa() { - return flujoventa; - } - - public void setFlujoventa(String flujoventa) { - this.flujoventa = flujoventa; - } - - public TarmVentaArmaTemporalController getVentaArmaTemp() { - return ventaArmaTemp; - } - - public void setVentaArmaTemp(TarmVentaArmaTemporalController ventaArmaTemp) { - this.ventaArmaTemp = ventaArmaTemp; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public List getLrecordSelccionadas() { - return lrecordSelccionadas; - } - - public void setLrecordSelccionadas(List lrecordSelccionadas) { - this.lrecordSelccionadas = lrecordSelccionadas; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VisualizacionSitiosAlmacenamientoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VisualizacionSitiosAlmacenamientoController.java.svn-base deleted file mode 100644 index 4d8389f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/funcionalidad/.svn/text-base/VisualizacionSitiosAlmacenamientoController.java.svn-base +++ /dev/null @@ -1,284 +0,0 @@ -package com.fp.frontend.controller.armas.funcionalidad; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; -import org.primefaces.event.map.MarkerDragEvent; -import org.primefaces.event.map.OverlaySelectEvent; -import org.primefaces.model.map.DefaultMapModel; -import org.primefaces.model.map.LatLng; -import org.primefaces.model.map.MapModel; -import org.primefaces.model.map.Marker; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TarmSitioAlmacenamiento. - * - * @author abenalcazar - * - */ -@SuppressWarnings("serial") -@ManagedBean(name = "visualizacionSitiosAlmacenamientoController") -@ViewScoped -public class VisualizacionSitiosAlmacenamientoController extends - AbstractController { - - public VisualizacionSitiosAlmacenamientoController() throws Exception { - super(TarmSitioAlmacenamiento.class); - } - - - - /** - * Model para GMAP - */ - private MapModel simpleModel; - /** - * Marcador de Gmap - */ - private Marker marker; - /** - * Atributo que oculta boton Generar Mapa - */ - private boolean ocultarBtnGmap; - - /** - * Incializa el controlador, cuando se esta utilizando una página que - * utiliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "SITIOALMACENAMIENTO"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Post Construct - * - * @throws Exception - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - - ocultarBtnGmap = true; - } - - /** - * Método para consultar registros de la base de datos - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.addFilter("estado", "ACT"); - DtoQuery dto = super.getDtoQuery(true); - - SubQuery sprovincia = new SubQuery("TgeneProvince", "description", - "desprovincia", - "i.pk.countrycode = t.countrycode and i.pk.provincecode= t.provincecode"); - SubQuery scanton = new SubQuery( - "TgeneCanton", - "description", - "descanton", - "i.pk.countrycode = t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode"); - SubQuery sparroquia = new SubQuery( - "TgeneParroquia", - "description", - "desparroquia", - "i.pk.countrycode = t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - - //nombre - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - - - dto.addSubQuery(sprovincia); - dto.addSubQuery(scanton); - dto.addSubQuery(sparroquia); - - dto.addSubQuery(snombre); - - dto.setOrderby("t.countrycode"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp - .get(this.beanalias); - super.postQuery(this.lrecord); - listaVacia(); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void listaVacia() { - if (lrecord.size() != 0) { - ocultarBtnGmap = false; - } else { - ocultarBtnGmap = true; - } - - } - - /** - * Método para abrir el lov de Provincia. - */ - public void openProvinciaLov() { - Map> params = new HashMap<>(); - ProvinceLovController.openLov(params); - } - - public void onReturnProvinceLov(SelectEvent event) throws Exception { - TgeneProvince t = (TgeneProvince) event.getObject(); - super.addFilter("pk.provincecode", t.getPk().getProvincecode()); - super.addField("description", t.getDescription()); - this.query(); - } - - /** - * Método para generar Mapa y mostrar los marcadores de latitud y - * longitud dentro del mapa - */ - public void generarMapa() { - - if (lrecord != null) { - LatLng coord = null; - simpleModel = new DefaultMapModel(); - for (TarmSitioAlmacenamiento c : lrecord) { - try { - coord = new LatLng(c.getLatitud().doubleValue(), c - .getLongitud().doubleValue()); - } catch (Exception e) { - // TODO: handle exception - } - simpleModel.addOverlay(new Marker(coord, "quito")); - } - } - } - - public void limpiar() - { - lrecord = new ArrayList<>(); - simpleModel = new DefaultMapModel(); - this.getMfilters().remove("pk.provincecode"); - this.getMfilelds().remove("description"); - } - - /** - * Lanza el evento simpleModel - * - * @param event - */ - public void onMarkerDrag(MarkerDragEvent event) { - // since marker's state is already kept in draggableModel you do not - // necessarily - } - - /** - * Selecciona un marcador dentro de gmap - * - * @param event - */ - public void onMarkerSelect(OverlaySelectEvent event) { - marker = (Marker) event.getOverlay(); - - addMessage(new FacesMessage(FacesMessage.SEVERITY_INFO, - "Marker Selected", marker.getTitle())); - } - - public void addMessage(FacesMessage message) { - FacesContext.getCurrentInstance().addMessage(null, message); - } - - /** - * Incrementa el numero del documento - * @param arma - * @return - */ - public int incrementarRowkey(TarmSitioAlmacenamiento sitio){ - int n=0; - - for (int i = 0; i < this.lrecord.size(); i++) { - if(sitio.getPk()==this.lrecord.get(i).getPk()){ - n=i+1; - break; - } - } - - return n; - } - - // ** - // **ACCESORES Y MUTADORES - // ** - public final MapModel getSimpleModel() { - return simpleModel; - } - - public final void setSimpleModel(MapModel simpleModel) { - this.simpleModel = simpleModel; - } - - public final Marker getMarker() { - return marker; - } - - public final void setMarker(Marker marker) { - this.marker = marker; - } - - /** - * Entrega V/F - * - * @return ocultarBtnGmap - */ - public boolean isOcultarBtnGmap() { - return ocultarBtnGmap; - } - - /** - * Fija V/F - * - * @param ocultarBtnGmap - */ - public void setOcultarBtnGmap(boolean ocultarBtnGmap) { - this.ocultarBtnGmap = ocultarBtnGmap; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/entries deleted file mode 100644 index 13e1aac..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/lov -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CatalogoArmaLovController.java -file - - - - -2022-07-28T03:39:53.349589Z -a6179b5aed452d9111fbbb8f82509020 -2014-09-29T13:58:18.593909Z -1228 -cpiedra - - - - - - - - - - - - - - - - - - - - - -4251 - -CentroControlLovController.java -file - - - - -2022-07-28T03:39:53.349589Z -fb4151ee6ff5744fb7fd529baf9f4b9c -2014-10-13T09:23:23.914479Z -1551 -cguzman - - - - - - - - - - - - - - - - - - - - - -3078 - -SancionarLovController.java -file - - - - -2022-07-28T03:39:53.350589Z -a4f0352afe4104217aa21e9bbda530cc -2019-01-14T03:06:37.641608Z -4617 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5746 - -CargasLovController.java -file - - - - -2022-07-28T03:39:53.350589Z -5b4e7bec86d163aee4f85e8dfa8d9799 -2015-12-29T13:56:10.923396Z -4355 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4668 - -UnidadTipoLovController.java -file - - - - -2022-07-28T03:39:53.350589Z -a637bbf64aec9b453021e9180078bc58 -2014-09-04T08:02:49.024731Z -518 -cpiedra - - - - - - - - - - - - - - - - - - - - - -8751 - -CertArmasLovController.java -file - - - - -2022-07-28T03:39:53.351589Z -29d652bc9c5aa8cee1f53480e34d43c7 -2015-10-19T06:17:44.255745Z -4295 -fpazmino - - - - - - - - - - - - - - - - - - - - - -13561 - -ArmasLovController.java -file - - - - -2022-07-28T03:39:53.351589Z -826120057d96d3693cf931cdefafbe87 -2016-05-07T15:04:27.540845Z -4541 -cvasquez - - - - - - - - - - - - - - - - - - - - - -13656 - -PlanificacionTramiteLovController.java -file - - - - -2022-07-28T03:39:53.351589Z -2954bfc5d3b9e90140a4329daa64e5d8 -2014-11-13T08:18:25.709004Z -2706 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6943 - -SitioAlmacenamientoLovController.java -file - - - - -2022-07-28T03:39:53.352589Z -2c426269673b51e35aadb0ae42cd5dfa -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5125 - -ArmaExplosivoLovController.java -file - - - - -2022-07-28T03:39:53.352589Z -c35b0b38dce55aded4cef195549c5ab4 -2015-12-29T22:25:37.144732Z -4364 -fpazmino - - - - - - - - - - - - - - - - - - - - - -6932 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmaExplosivoLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmaExplosivoLovController.java.svn-base deleted file mode 100644 index 4d3f690..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmaExplosivoLovController.java.svn-base +++ /dev/null @@ -1,184 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author C.P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ArmaExplosivoLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String tituloLOV; - private String categoriaParam; - - private String descripcionClase; - private String descripcionTipo; - - public ArmaExplosivoLovController() throws Exception { - super(TarmTipoArmaExplosivo.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - tituloLOV = CallerHelper.getLovParameter("tituloLOV"); - categoriaParam = CallerHelper.getLovParameter("categoria"); - if(categoriaParam!=null){ - categoriaParam = " and t.clase in ('"+categoriaParam+"')"; - categoriaParam=categoriaParam.replace(",", "','"); - } - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TIPOARMAEXPLOSIVOLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", "description", "nclase", "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryTipoArmaExplosivo = new SubQuery("TgeneCatalogDetail", "description", "ntipo", "i.pk.catalog = t.tipoarmaexplosivo and i.pk.catalogcode = t.tipoarmaexplosivocodigo"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - - SubQuery subqueryLongitud = new SubQuery("TgeneCatalogDetail", "description", "nlongitud", "i.pk.catalog = t.longitud and i.pk.catalogcode = t.longitudcodigo"); - dto.addSubQuery(subqueryLongitud); - - SubQuery subqueryCalibre = new SubQuery("TgeneCatalogDetail", "description", "ncalibre", "i.pk.catalog = t.calibre and i.pk.catalogcode = t.calibrecodigo"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subunidad= new SubQuery("TgeneCatalogDetail", "description", "desunidad", "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - dto.addSubQuery(subunidad); - - SubQuery subunidadlegalcode= new SubQuery("TgeneCatalogDetail", "legalcode", "deslegalcode", "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - dto.addSubQuery(subunidadlegalcode); - String sql=" 1=1 "; - - - if(descripcionClase!= null && descripcionClase.trim().length()>0){ - sql=sql+" and clase in (select o.pk.catalog from TgeneCatalogDetail o where o.description like '%"+descripcionClase+"%' and o.pk.catalogcode='CLASE')"; - }//TarmTipoArmaExplosivo - - if(descripcionTipo!= null && descripcionTipo.trim().length()>0){ - sql=sql+" and tipoarmaexplosivo in (select o.pk.catalog from TgeneCatalogDetail o where o.description like '%"+descripcionTipo+"%' and o.pk.catalogcode='TIPOARMAEXPLOSIVO')"; //TarmTipoArmaExplosivo//catalogcode - } - - Filter filtro= new Filter(); - sql += categoriaParam!=null?categoriaParam:""; - filtro.setSql(sql); //TarmTipoArmaExplosivo//catalogcode - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TarmTipoArmaExplosivo armaExplosivo) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(armaExplosivo); - } - - public String getTituloLOV() { - return tituloLOV; - } - - public void setTituloLOV(String tituloLOV) { - this.tituloLOV = tituloLOV; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/armaExplosivoLov.xhtml", options, params); - } - - public String getDescripcionClase() { - return descripcionClase; - } - - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - public String getDescripcionTipo() { - return descripcionTipo; - } - - public void setDescripcionTipo(String descripcionTipo) { - this.descripcionTipo = descripcionTipo; - } - - public String getCategoriaParam() { - return categoriaParam; - } - - public void setCategoriaParam(String categoriaParam) { - this.categoriaParam = categoriaParam; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmasLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmasLovController.java.svn-base deleted file mode 100644 index 588c3f7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/ArmasLovController.java.svn-base +++ /dev/null @@ -1,271 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Controlador principal de armas - * @author C.P. - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmasLovController extends AbstractController { - - private String ccodigosarmas; - private String estadosArma; - private String codigopersona; - - public ArmasLovController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - try { - ccodigosarmas = CallerHelper.getLovParameter("ccodigosarmas"); - estadosArma = CallerHelper.getLovParameter("estadosarmas"); - codigopersona=CallerHelper.getLovParameter("codigopersona"); - super.startQuery(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 5000; // Cambiar al # reg a mirar. - record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroEstados = ""; - String sqlFiltroCodigosArmas = "";//1 - - String sqlFiltroEstadosDec = (String) this.getMfilelds().get("codigosarmasdec"); - String sqlFiltroCodigosArmasDec = (String) this.getMfilelds().get("estadosarmasdec"); - - //codigos de las armas seleccionadas - if (ccodigosarmas != null) { - sqlFiltroCodigosArmas=ccodigosarmas; - } - //filtro de los estados de las armas - if (estadosArma != null) { - sqlFiltroEstados=estadosArma;//estado distinto de destruidas - cambiodepropietario - vendidas - decomisadas - suspendida - cancelada - incautada - } - if(codigopersona!=null && !codigopersona.equals("null") && codigopersona.trim().length()>1){ - sqlFiltroEstados=sqlFiltroEstados+" and t.cregistro in (select per from TarmRegistroArmas per where per.personcode="+codigopersona+")"; - } - - dto.setOrderby("pk"); - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and (t.peso>0 or t.cantidad>0)";// and (t.cregistro=ta.cregistro) para el manejo de los explosivos - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroEstadosDec, sqlFiltroCodigosArmasDec, sqlFiltroEstados, sqlFiltroCodigosArmas, sqlActual); - System.out.println("SQL ARMA: "+sqlFinal); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - cargarPropietario(); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para buscar el propietario del arma y asignarle al arma - */ - private void cargarPropietario(){ - for(TarmArmas arma:this.lrecord){ - //asigmnamos un valor al arma para ordenarla - arma.getModifiedData().put("ordenarma",arma.getPk()); - if(arma.getModifiedData().get("personcode")!=null){ - TcustPersonDetail personaDetalle=PersonDetailController.find(arma.getModifiedData().get("personcode").toString()); - arma.getModifiedData().put("propietario", personaDetalle.getName()); - arma.getModifiedData().put("noDocumento", personaDetalle.getIdentification()); - } - } - } - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryPaisOrigen= new SubQuery("TgeneCountry","description","paisorigen","i.pk=t.cpaisorigen"); - dto.addSubQuery(subqueryPaisOrigen); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","unidadmedidadesc","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidadTipo); -// SubQuery subqueryestadopermiso= new SubQuery("TgeneCatalogDetail","description","estadopermiso", -// "i.pk.catalog=(select dh.estado from TarmDocumentoHabilitante dh where dh.personcode = (select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and dh.carma = t.pk)" -// + "and i.pk.catalogcode=(select dh.estadocode from TarmDocumentoHabilitante dh where dh.personcode = (select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and dh.carma = t.pk)"); -// dto.addSubQuery(subqueryestadopermiso); - - - - SubQuery subqueryFechaemiperm= new SubQuery("TarmDocumentoHabilitante","fechaemision","fechaemision", - //" i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro)" - + " and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaemiperm); - SubQuery subqueryFechaexpperm= new SubQuery("TarmDocumentoHabilitante","fechaexpiracion","fechaexpiracion", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaexpperm); - return dto; - } - - @Override - public void save() { - try { - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - Listarmas=new ArrayList(); - armas.add(this.record); - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(armas); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TarmArmas tarmArmas) { - Listarmas=new ArrayList(); - armas.add(tarmArmas); - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(armas); - } - - public void selecionaTodos(){ - RequestContext.getCurrentInstance().closeDialog(lrecord); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 1200); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/armasLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CargasLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CargasLovController.java.svn-base deleted file mode 100644 index e281ace..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CargasLovController.java.svn-base +++ /dev/null @@ -1,147 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TarmCarga. - * - * @author Christian Pazmino - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CargasLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String tituloLOV; - private String personcode; - - - public CargasLovController() throws Exception { - super(TarmCarga.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - personcode = CallerHelper.getLovParameter("personcode"); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 500; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CARGASLOV"; - this.querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fecha desc"); - String sql=""; - if(personcode!= null){ - sql="t.esdesaduanizado = 'N' and t.tipocarga='IMP' and t.personcode ="+ personcode; - // Filtro para la TX 30-20 - if(!this.getLoginController().getRequest().getTransactionCode().equals(37)){ - sql=sql+" and t.csolicitud is null"; - } - }else{ - MessageHelper.setMessageError("EL CODIGO DE PERSONA ES REQUERIDO"); - return; - } - Filter filtro= new Filter(); - filtro.setSql(sql); //TarmTipoArmaExplosivo//catalogcode - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setCarga() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setCarga(TarmCarga carga) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(carga); - } - - public String getTituloLOV() { - return tituloLOV; - } - - public void setTituloLOV(String tituloLOV) { - this.tituloLOV = tituloLOV; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/cargasLov.xhtml", options, params); - } - - public String getPersoncode() { - return personcode; - } - - public void setPersoncode(String personcode) { - this.personcode = personcode; - } - - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CatalogoArmaLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CatalogoArmaLovController.java.svn-base deleted file mode 100644 index 00073c4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CatalogoArmaLovController.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author C.P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CatalogoArmaLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String tituloLOV; - - public CatalogoArmaLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - tituloLOV = CallerHelper.getLovParameter("tituloLOV"); - String catalogcode = CallerHelper.getLovParameter("catalogcode"); - if (catalogcode != null) { - super.addFilter("pk.catalogcode", catalogcode); - } - String legalcode =CallerHelper.getLovParameter("legalcode"); - if (catalogcode != null) { - super.addFilter("legalcode", legalcode); - } - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CLASELOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public String getTituloLOV() { - return tituloLOV; - } - - public void setTituloLOV(String tituloLOV) { - this.tituloLOV = tituloLOV; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/catalogoArmaLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CentroControlLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CentroControlLovController.java.svn-base deleted file mode 100644 index 8ffa9d2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CentroControlLovController.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CentroControlLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CentroControlLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { -/* String codeperson = CallerHelper.getLovParameter("personcode"); - if (codeperson != null) { - super.addFilter("personcode", codeperson); - }*/ - super.startQuery(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CENTROCONTROLLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - List listaCatalogoDetail = CatalogDetailController.find("NOMBREINSTITUCION"); - for(TgeneCatalogDetail catalogDetail:listaCatalogoDetail){ - record = catalogDetail; - System.out.println("***********" + catalogDetail.getDescription()); - } - System.out.println("Fin"); - this.lrecord = listaCatalogoDetail; - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog(TgeneCatalogDetail catalogD) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(catalogD); - } - - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/centroControlLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CertArmasLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CertArmasLovController.java.svn-base deleted file mode 100644 index 7dd81a7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/CertArmasLovController.java.svn-base +++ /dev/null @@ -1,269 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Controlador principal de armas - * @author C.P. - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CertArmasLovController extends AbstractController { - - private String ccodigosarmas; - private String estadosArma; - private String codigopersona; - - public CertArmasLovController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - try { - ccodigosarmas = CallerHelper.getLovParameter("ccodigosarmas"); - estadosArma = CallerHelper.getLovParameter("estadosarmas"); - codigopersona=CallerHelper.getLovParameter("codigopersona"); - if(codigopersona!=null && !codigopersona.equalsIgnoreCase("")){ - querydatabase(); - } -// super.startQuery(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 5000; // Cambiar al # reg a mirar. - record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroEstados = ""; - String sqlFiltroCodigosArmas = "";//1 - //codigos de las armas seleccionadas - if (ccodigosarmas != null) { - sqlFiltroCodigosArmas=ccodigosarmas; - } - //filtro de los estados de las armas - if (estadosArma != null) { - sqlFiltroEstados=estadosArma;//estado distinto de destruidas - cambiodepropietario - vendidas - decomisadas - suspendida - cancelada - incautada - } - if(codigopersona!=null && !codigopersona.equals("null") && codigopersona.trim().length()>1){ - sqlFiltroEstados=sqlFiltroEstados+" and t.cregistro in (select per from TarmRegistroArmas per where per.personcode="+codigopersona+") and ((select tae.clase from TarmTipoArmaExplosivo tae WHERE tae.pk = t.ctipoarmaexplosivo) in ('0010000001','0010000008'))"; - } - - dto.setOrderby("pk"); - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and (t.peso>0 or t.cantidad>0)";// and (t.cregistro=ta.cregistro) para el manejo de los explosivos - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroEstados, sqlFiltroCodigosArmas, sqlActual); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - cargarPropietario(); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para buscar el propietario del arma y asignarle al arma - */ - private void cargarPropietario(){ - for(TarmArmas arma:this.lrecord){ - //asigmnamos un valor al arma para ordenarla - arma.getModifiedData().put("ordenarma",arma.getPk()); - if(arma.getModifiedData().get("personcode")!=null){ - TcustPersonDetail personaDetalle=PersonDetailController.find(arma.getModifiedData().get("personcode").toString()); - arma.getModifiedData().put("propietario", personaDetalle.getName()); - arma.getModifiedData().put("noDocumento", personaDetalle.getIdentification()); - } - } - } - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryPaisOrigen= new SubQuery("TgeneCountry","description","paisorigen","i.pk=t.cpaisorigen"); - dto.addSubQuery(subqueryPaisOrigen); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","unidadmedidadesc","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidadTipo); -// SubQuery subqueryestadopermiso= new SubQuery("TgeneCatalogDetail","description","estadopermiso", -// "i.pk.catalog=(select dh.estado from TarmDocumentoHabilitante dh where dh.personcode = (select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and dh.carma = t.pk)" -// + "and i.pk.catalogcode=(select dh.estadocode from TarmDocumentoHabilitante dh where dh.personcode = (select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and dh.carma = t.pk)"); -// dto.addSubQuery(subqueryestadopermiso); - - - - SubQuery subqueryFechaemiperm= new SubQuery("TarmDocumentoHabilitante","fechaemision","fechaemision", - //" i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro)" - + " and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaemiperm); - SubQuery subqueryFechaexpperm= new SubQuery("TarmDocumentoHabilitante","fechaexpiracion","fechaexpiracion", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaexpperm); - return dto; - } - - @Override - public void save() { - try { - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - Listarmas=new ArrayList(); - armas.add(this.record); - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(armas); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TarmArmas tarmArmas) { - Listarmas=new ArrayList(); - armas.add(tarmArmas); - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(armas); - } - - public void selecionaTodos(){ - RequestContext.getCurrentInstance().closeDialog(lrecord); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 1200); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/certArmasLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/PlanificacionTramiteLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/PlanificacionTramiteLovController.java.svn-base deleted file mode 100644 index 6fd6449..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/PlanificacionTramiteLovController.java.svn-base +++ /dev/null @@ -1,155 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author c.p. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PlanificacionTramiteLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - String centrocontrol; - public PlanificacionTramiteLovController() throws Exception { - super(TarmPlanificacionTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - centrocontrol = CallerHelper.getLovParameter("centrocontrol"); -// if (centrocontrol != null) { -// super.addFilter("personcode", centrocontrol);f -// } - super.startQuery(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (centrocontrol != null) { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.mes , 9 "); - - Filter filtro= new Filter(); - filtro.setSql("(inspeccion is null or inspeccion != 'Y') and cplanificacion in (select o.pk from TarmPlanificacionInspeccion o where o.ccentrocontrol='"+centrocontrol.trim()+"' and aprobada='Y')"); - dto.addFiltro(filtro); - - SubQuery subqueryName = new SubQuery("TcustPersonDetail", "name", "name", - " i.pk.personcode = (select o.personcode from TarmDocumentoHabilitante o where o.pk=t.cdocumento)" - + " and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryName); - - SubQuery subqueryCodigoPlanificacion = new SubQuery("TarmPlanificacionInspeccion", "codigo", "codigoplanificacion", " i.pk = t.cplanificacion"); - dto.addSubQuery(subqueryCodigoPlanificacion); - - SubQuery subqueryPersoncode = new SubQuery("TarmDocumentoHabilitante", "personcode", "personcode", " i.pk = t.cdocumento"); - dto.addSubQuery(subqueryPersoncode); - - - SubQuery subqueryIdentificacion = new SubQuery("TcustPersonDetail", "identification", "identification", - " i.pk.personcode = (select o.personcode from TarmDocumentoHabilitante o where o.pk=t.cdocumento)" - + " and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryIdentificacion); - - SubQuery subqueryTramite = new SubQuery("TgeneCatalogDetail", "description", "tramite", - " i.pk.catalog = (select o.tipotramite from TarmTramite o where o.pk=t.ctramite) " - + " and i.pk.catalogcode=(select o.tipotramitecodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryTramite); - - SubQuery subqueryCategoria = new SubQuery("TgeneCatalogDetail", "description", "categoria", - " i.pk.catalog = (select o.categoria from TarmTramite o where o.pk=t.ctramite) " - + " and i.pk.catalogcode=(select o.categoriacodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoria); - - SubQuery subqueryUsoActividad = new SubQuery("TgeneCatalogDetail", "description", "usoactividad", - " i.pk.catalog = (select o.usoactividad from TarmTramite o where o.pk=t.ctramite) " - + " and i.pk.catalogcode=(select o.usoactividadcodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsoActividad); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - }else{ - MessageHelper.setMessageError("NO TIENE ASIGNADO UN CENTRO DE CONTROL"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TarmPlanificacionTramite tarmPlanificacionTramite) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmPlanificacionTramite); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/planificacionTramiteLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SancionarLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SancionarLovController.java.svn-base deleted file mode 100644 index 3942ed6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SancionarLovController.java.svn-base +++ /dev/null @@ -1,164 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoSancion; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - - -/** - * Clase controladora del lov asociado al bean TarmTipoSancion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class SancionarLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - private String clase; - //static List ltiposancion; - private String tramite; - public List lsancion; - //private List tsancion; - public SancionarLovController() throws Exception { - super(TarmTipoSancion.class); - } - -// public static List getLtiposancion() { -// return ltiposancion; -// } - - public List getLsancion() { - return lsancion; - } - - public void setLsancion(List lsancion) { - this.lsancion = lsancion; - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGLOV"; - String clase = CallerHelper.getLovParameter("clase"); - String tramite = CallerHelper.getLovParameter("tramite"); - if(clase!=null){ - this.getMfilters().put("clase", clase); - } - if(tramite!=null){ - this.getMfilters().put("tramite", tramite); - } - lsancion = CatalogDetailController.find("TIPODEFALTA"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - // Subquery - SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", "description", "nclase", "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryFalta = new SubQuery("TgeneCatalogDetail", "description", "nfalta", "i.pk.catalog = t.falta and i.pk.catalogcode = t.faltacodigo"); - dto.addSubQuery(subqueryFalta); - - SubQuery subqueryTipoFalta = new SubQuery("TgeneCatalogDetail", "description", "ntipoFalta", "i.pk.catalog = t.tipofalta and i.pk.catalogcode = t.tipofaltacodigo"); - dto.addSubQuery(subqueryTipoFalta); - - SubQuery subqueryTramite = new SubQuery("TgeneCatalogDetail", "description", "ntramite", "i.pk.catalog = t.tramite and i.pk.catalogcode = t.tramitecodigo"); - dto.addSubQuery(subqueryTramite); - - SubQuery subquerySancion = new SubQuery("TgeneCatalogDetail", "description", "nsancion", "i.pk.catalog = t.sancion and i.pk.catalogcode = t.sancioncodigo"); - dto.addSubQuery(subquerySancion); - - SubQuery subqueryTiempo = new SubQuery("TgeneCatalogDetail", "description", "ntiempo", "i.pk.catalog = t.tiempo and i.pk.catalogcode = t.tiempocodigo"); - dto.addSubQuery(subqueryTiempo); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TarmTipoSancion tarmTipoSancion) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmTipoSancion); - } - - public static void openLov(Map> params) {//, List tsancion - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 850); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/sancionarLov.xhtml", options, params); - } - -// public List getTsancion() { -// return tsancion; -// } -// -// public void setTsancion(List tsancion) { -// this.tsancion = tsancion; -// } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SitioAlmacenamientoLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SitioAlmacenamientoLovController.java.svn-base deleted file mode 100644 index c1063c9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/SitioAlmacenamientoLovController.java.svn-base +++ /dev/null @@ -1,133 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.pgeneral.gene.TgeneCityKey; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class SitioAlmacenamientoLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SitioAlmacenamientoLovController() throws Exception { - super(TarmSitioAlmacenamiento.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - String codeperson = CallerHelper.getLovParameter("personcode"); - if (codeperson != null) { - super.addFilter("personcode", codeperson); - this.querydatabase(); - } - super.startQuery(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 200; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.addFilter("estado", "ACT"); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - SubQuery subqueryProvincia = new SubQuery("TgeneProvince", "description", "provincia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode"); - dto.addSubQuery(subqueryProvincia); - - SubQuery subqueryCanton = new SubQuery("TgeneCanton", "description", "canton", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode"); - dto.addSubQuery(subqueryCanton); - - SubQuery subqueryCiudad = new SubQuery("TgeneCity", "description", "ciudad", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode "); - dto.addSubQuery(subqueryCiudad); - - SubQuery subqueryParroquia = new SubQuery("TgeneParroquia", "description", "parroquia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - dto.addSubQuery(subqueryParroquia); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TarmSitioAlmacenamiento tarmSitioAlmacenamiento) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmSitioAlmacenamiento); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/sitioAlmacenamientoLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/UnidadTipoLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/UnidadTipoLovController.java.svn-base deleted file mode 100644 index 785d160..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/lov/.svn/text-base/UnidadTipoLovController.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.frontend.controller.armas.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TarmUnidTipo. - * - * @author C.P. - * @version 2.1 - */ -/** - * @author User - * - */ -@ManagedBean -@ViewScoped -public class UnidadTipoLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String descripcionClase; - private String descripcionTipoArma; - private String codigoClase; - private String btnAcctivar; - - @ManagedProperty(value = "#{claseLovController}") - private ClaseLovController claseLovController; - - public UnidadTipoLovController() throws Exception { - super(TarmUnidadTipo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - this.beanalias = "UNIDADTIPO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - //dto.setOrderby("t.pk"); - SubQuery sclasearma= new SubQuery - ("TgeneCatalogDetail", "description", "desclasearma", "i.pk.catalog = t.pk.clase and i.pk.catalogcode=t.pk.clasecode"); - SubQuery stipoarma= new SubQuery - ("TgeneCatalogDetail", "description", "destipoarma", "i.pk.catalog = t.pk.tipoarmaexplosivo and i.pk.catalogcode=t.pk.tipoarmaexplosivocodigo"); - SubQuery sunidad= new SubQuery - ("TgeneCatalogDetail", "description", "desunidad", "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - dto.addSubQuery(stipoarma); - dto.addSubQuery(sclasearma); - dto.addSubQuery(sunidad); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - //busquedas desde en un dialogo - public void openClaseLov() { - try { - btnAcctivar="clase"; - claseLovController.setLrecord(new ArrayList()); - claseLovController.getMfilters().clear(); - claseLovController.getMfilters().put("pk.catalogcode", "CLASE"); - claseLovController.query(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - //del catalogo para la clase - private TgeneCatalogDetail sel; - - public void setcatalogDialog(TgeneCatalogDetail tgeneCatalog) { - sel = tgeneCatalog; - super.getMfilters().put("pk.clase", sel.getPk().getCatalog()); - descripcionClase=sel.getDescription(); - codigoClase=sel.getPk().getCatalog(); - claseLovController.setLrecord(new ArrayList()); - claseLovController.getMfilters().clear(); - super.getMfilters().put("pk.tipoarmaexplosivo", null); - descripcionTipoArma=null; - } - - //busquedas desde en un dialogo - public void openTipoArmaDialog() { - try { - if(codigoClase==null || codigoClase.trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE LA CLASE"); - return; - } - claseLovController.setLrecord(new ArrayList()); - claseLovController.getMfilters().clear(); - btnAcctivar="tipoArma"; - String legalcode=""; - String legalcode2 =""; - Listlista=CatalogDetailController.find("LONGITUD", codigoClase); - if(lista!=null){ - for(TgeneCatalogDetail catalogo:lista){ - if(legalcode==null || legalcode.length()==0){ - legalcode+= catalogo.getPk().getCatalog(); - }else if(legalcode2==null || legalcode2.length()==0){ - legalcode2+=" legalcode= '"+catalogo.getPk().getCatalog()+"'"; - }else{ - legalcode2+=" or t.legalcode= '"+catalogo.getPk().getCatalog()+"'"; - } - } - }else{ - legalcode=codigoClase; - } - claseLovController.getMfilters().put("pk.catalogcode", "TIPOARMAEXPLOSIVO"); - - if (legalcode != null && legalcode.trim().length()>0) { - if (legalcode2 != null && legalcode2.trim().length()>0) { - claseLovController.getMfilters().put(legalcode2+" or t.legalcode", legalcode); - }else{ - claseLovController.getMfilters().put("legalcode", legalcode); - } - } - - claseLovController.query(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - //del catalogo para la clase - - public void setDialogTipoArma(TgeneCatalogDetail tgeneCatalog) { - sel = tgeneCatalog; - super.getMfilters().put("pk.tipoarmaexplosivo", sel.getPk().getCatalog()); - descripcionTipoArma=sel.getDescription(); - claseLovController.setLrecord(new ArrayList()); - claseLovController.getMfilters().clear(); - } - - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/unidadTipoLov.xhtml", options, params); - } - - public void setunidTipo() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setunidTipo(TarmUnidadTipo tarmUnidadTipo) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmUnidadTipo); - } - - public String getDescripcionClase() { - return descripcionClase; - } - - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - public String getDescripcionTipoArma() { - return descripcionTipoArma; - } - - public void setDescripcionTipoArma(String descripcionTipoArma) { - this.descripcionTipoArma = descripcionTipoArma; - } - - public TgeneCatalogDetail getSel() { - return sel; - } - - public void setSel(TgeneCatalogDetail sel) { - this.sel = sel; - } - - public ClaseLovController getClaseLovController() { - return claseLovController; - } - - public void setClaseLovController(ClaseLovController claseLovController) { - this.claseLovController = claseLovController; - } - - public String getBtnAcctivar() { - return btnAcctivar; - } - - public void setBtnAcctivar(String btnAcctivar) { - this.btnAcctivar = btnAcctivar; - } - - public String getCodigoClase() { - return codigoClase; - } - - public void setCodigoClase(String codigoClase) { - this.codigoClase = codigoClase; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/entries deleted file mode 100644 index 39f6329..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/entries +++ /dev/null @@ -1,1323 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/parametros -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RequisitoPorTramiteController.java -file - - - - -2022-07-28T03:39:54.508594Z -938720e0f959f75907857dee5f130afe -2016-01-08T15:10:02.437044Z -4370 -jespinosa - - - - - - - - - - - - - - - - - - - - - -12932 - -FirmarDocumentoController.java -file - - - - -2022-07-28T03:39:54.509594Z -fae83084e47bf99cbfb9308f14e87db2 -2016-07-28T21:02:51.840314Z -4553 -cvasquez - - - - - - - - - - - - - - - - - - - - - -26352 - -GuardiasController.java -file - - - - -2022-07-28T03:39:54.509594Z -6afdbdda8d53410d08a825cf395ba82f -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -5647 - -TarmCentroControlJurController.java -file - - - - -2022-07-28T03:39:54.510594Z -f61066b0ac1081c6bb58ba3219073cbc -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -11659 - -CatalogFilterLovController.java -file - - - - -2022-07-28T03:39:54.510594Z -5680057e68bb93cfd9973d2e8f7a63b6 -2014-10-17T04:27:01.373611Z -1661 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5210 - -ImportacionArmasDetalleController.java -file - - - - -2022-07-28T03:39:54.510594Z -dd8e3dcaf0c2ad2d39065a122dadc466 -2014-08-25T06:56:55.717394Z -316 -acevallos - - - - - - - - - - - - - - - - - - - - - -3927 - -TipoArmaExpLovController.java -file - - - - -2022-07-28T03:39:54.511594Z -a3d6fef16579ee75b16b7e56e7dc0496 -2015-07-10T10:46:23.842001Z -4190 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4743 - -PreguntasParaEvaluacionesController.java -file - - - - -2022-07-28T03:39:54.511594Z -a6e2bda6939cc01dbe5249514cb0cbff -2014-11-12T11:33:27.145114Z -2683 -fpazmino - - - - - - - - - - - - - - - - - - - - - -14514 - -TotalPersonaController.java -file - - - - -2022-07-28T03:39:54.511594Z -7b7b90bf5d41e16dd381d7b2fc86ccc3 -2015-04-28T07:18:10.043932Z -4058 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5499 - -TiposArmasExplosivosController.java -file - - - - -2022-07-28T03:39:54.512594Z -2d88b8371044f65541a9afa6e106ec0b -2015-08-06T11:48:46.589882Z -4259 -fpazmino - - - - - - - - - - - - - - - - - - - - - -32359 - -RespuestasLovController.java -file - - - - -2022-07-28T03:39:54.512594Z -83f3c6d3566e012791a63c437d02de87 -2015-04-20T12:00:32.629179Z -4043 -dlopez - - - - - - - - - - - - - - - - - - - - - -8772 - -CentroControlArmasController.java -file - - - - -2022-07-28T03:39:54.512594Z -3121d1437849eff48b2dc46ccfa8189f -2016-02-15T19:57:14.669988Z -4444 -cvasquez - - - - - - - - - - - - - - - - - - - - - -22395 - -ImportacionDetalleController.java -file - - - - -2022-07-28T03:39:54.513594Z -7554b2782b93cf7db59b0908fb02cb34 -2014-08-25T06:59:21.531443Z -318 -acevallos - - - - - - - - - - - - - - - - - - - - - -106 - -ArmaController.java -file - - - - -2022-07-28T03:39:54.513594Z -6d87916c6c035c8224b214030cda9c23 -2015-12-07T21:31:14.267090Z -4337 -fpazmino - - - - - - - - - - - - - - - - - - - - - -75085 - -CalibreLovController.java -file - - - - -2022-07-28T03:39:54.514594Z -57b5abae6ae6b84d961bd6deee7338ec -2014-11-06T07:07:59.457269Z -2409 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3795 - -InventarioSubidoController.java -file - - - - -2022-07-28T03:39:54.514594Z -c76cfd5caf50019ebe1fbffe54057b23 -2015-09-04T07:02:37.538139Z -4274 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4061 - -ImporteArmasExcelController.java -file - - - - -2022-07-28T03:39:54.514594Z -cddf7439cbab9a95f40174e3a55fa610 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -26817 - -ImportacionController.java -file - - - - -2022-07-28T03:39:54.514594Z -dac77eec3008b30a884731cf984a4dab -2014-10-22T10:18:50.915275Z -1836 -ogarcia - - - - - - - - - - - - - - - - - - - - - -13307 - -CashManagementHistoryController.java -file - - - - -2022-07-28T03:39:54.515594Z -c1a84701c05b4d111b945ba5b47ad07d -2016-01-21T16:01:36.970774Z -4397 -mcepeda - - - - - - - - - - - - - - - - - - - - - -10692 - -UnidadTipoController.java -file - - - - -2022-07-28T03:39:54.515594Z -f60632542158211c988db0ac13ac93fa -2015-08-06T11:48:46.589882Z -4259 -fpazmino - - - - - - - - - - - - - - - - - - - - - -14124 - -ImporteArmasController.java -file - - - - -2022-07-28T03:39:54.515594Z -23692bef9a21c0eb3dcbb3253b254718 -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -30660 - -IngresoInventarioController.java -file - - - - -2022-07-28T03:39:54.516594Z -8abfa700e4d0e699656a1b05b33d4c99 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -75225 - -LongitudLovController.java -file - - - - -2022-07-28T03:39:54.516594Z -690c89aae80057928999f348866f6a5e -2014-11-06T07:07:47.103942Z -2407 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3799 - -TarmVentaArmaTemporalController.java -file - - - - -2022-07-28T03:39:54.516594Z -d5d6de36cbba63086f514954f9e9c392 -2021-09-08T20:06:35.809021Z -4643 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7197 - -ClaseLovController.java -file - - - - -2022-07-28T03:39:54.516594Z -46252e153155586fbbc5ec2a69eaff93 -2014-11-06T07:07:40.889953Z -2406 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5326 - -OrigenTramiteController.java -file - - - - -2022-07-28T03:39:54.518594Z -15c665baadda50af36240b66d329bf23 -2016-01-18T19:47:54.300889Z -4383 -cvasquez - - - - - - - - - - - - - - - - - - - - - -15855 - -VentaTotalPersonaController.java -file - - - - -2022-07-28T03:39:54.516594Z -eb45bce686198e26bd848bb4a8985401 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2853 - -IngresoDatosTipoTramite.java -file - - - - -2022-07-28T03:39:54.518594Z -df6d454a888d64e8cf536a514e0f1567 -2016-07-25T20:45:07.323347Z -4550 -cvasquez - - - - - - - - - - - - - - - - - - - - - -29117 - -AuxCargaArmasController.java -file - - - - -2022-07-28T03:39:54.518594Z -4a05d5daba7df7c9a6eb15f13fe507ce -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -15007 - -ComercianteCupoController.java -file - - - - -2022-07-28T03:39:54.518594Z -cb1188001a3c9254cbb2361b90ca7890 -2015-03-05T12:30:19.289381Z -3905 -cguzman - - - - - - - - - - - - - - - - - - - - - -15518 - -DatosParaSancionesController.java -file - - - - -2022-07-28T03:39:54.519594Z -4698adca72ab97b9c266581fd8d8862a -2015-01-19T09:09:59.162875Z -3768 -cpiedra - - - - - - - - - - - - - - - - - - - - - -17338 - -SancionesController.java -file - - - - -2022-07-28T03:39:54.519594Z -6f0ae818544f9c9d4bbe3227e4cb959a -2014-10-20T09:33:12.700047Z -1738 -acevallos - - - - - - - - - - - - - - - - - - - - - -7085 - -RequisitoController.java -file - - - - -2022-07-28T03:39:54.519594Z -ecd0986b106f475cd54f9b0ec978a200 -2015-05-07T05:42:46.680912Z -4079 -cpiedra - - - - - - - - - - - - - - - - - - - - - -7478 - -SitioAlmacenamientoController.java -file - - - - -2022-07-28T03:39:54.519594Z -a27830024d5ed6360047b21736ca7ed1 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18503 - -ImporteTipoArmaExplosivoController.java -file - - - - -2022-07-28T03:39:54.520594Z -85186760c3069029ce7dce167775edcc -2017-03-04T15:15:58.643449Z -4578 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3077 - -BuscarTramiteLovController.java -file - - - - -2022-07-28T03:39:54.520594Z -fb8619f7957cd69f51b1d30f08d03284 -2015-12-29T18:34:31.727682Z -4362 -cvasquez - - - - - - - - - - - - - - - - - - - - - -9516 - -SolicitudImportacionArmasController.java -file - - - - -2022-07-28T03:39:54.520594Z -20d5645b4679acd856c00e5c638aa4bc -2014-08-25T07:00:02.404990Z -320 -acevallos - - - - - - - - - - - - - - - - - - - - - -2719 - -util -dir - -FirmarDocumentoFiscaliaController.java -file - - - - -2022-07-28T03:39:54.520594Z -b3ea83167056c199e4465562cb703ef9 -2016-07-28T21:02:51.840314Z -4553 -cvasquez - - - - - - - - - - - - - - - - - - - - - -17543 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/prop-base/GuardiasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/prop-base/GuardiasController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/prop-base/GuardiasController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.netbeans-base deleted file mode 100644 index 7ae946e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.netbeans-base +++ /dev/null @@ -1,1693 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.ArmasController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora para la entidad TarmArma - * Incluye metodo de consulta para la busqueda de persona y registro - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmaController extends AbstractController { - - //Variabgles globales - private Integer personcode; - - private Boolean descargar; - private String csolicitud; - InputStream filei; - - //Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - - Date fechaActual; - private List tiposRegistro; - private TgeneCatalogDetail tipoRegistro; - - //Detalle del material - //Pais - private List lpaises; - private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; - private TgeneCity ciudad; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Variables de las armas - private TcustPersonDetail usuario; - private TcustPersonAddress direccion; - private List listaFilas; - private List listaErrores; -// private List cuposArmas; - - //private BigDecimal pesoTotal; - private TarmTipoArmaExplosivo tipoArmaExplosivo; - private List listaArmas; - private ArmaExcell armaexcell; - - private List laexel; - private List armas=new ArrayList(); - private List totalesPersoan=new ArrayList(); - - //Aeropuertos - List laeropuertos=new ArrayList<>(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - -// @ManagedProperty(value = "#{comercianteCupoController}") -// private ComercianteCupoController comercianteCupoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalPersonaController; - - private List ldocumentospersona; - - private String clase; - public ArmaController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "ARMAS"; - this.create(); - - //Globales - descargar=false; - csolicitud=null; - - //Datos generales - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo los datos de la persona - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - - //Fecha actual - this.fechaActual=Calendar.getInstance().getTime(); - - //Tipos de registro - tiposRegistro=CatalogDetailController.find("TIPOREGISTRO", "REG"); - - //Detalle del material - lpaises=CountryController.find(); - registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - - //Obteniendo la direccion de la persona - String tipoDireccion=""; - - if(detallesPersona!=null){ - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - } - //direccion= personAddressController.findByPersonCode(usuario.getPk().getPersoncode().toString()); - direccion= personAddressController.findPrincipal(String.valueOf(usuario.getPk().getPersoncode().toString())) ; - - - //Imprtacion - this.lprovincias=ProvinceController.find("EC"); - - //Armas - listaErrores = new ArrayList(); - - //Controlador de totales -// this.totalPersonaController=new TotalPersonaController(); -// this.totalPersonaController.create(); -// this.totalPersonaController.setLrecord(new ArrayList()); - - RegistroArmController registroArmas = new RegistroArmController(); - registroArmas.init(); - registroArmas.setRecperpage(3000000); - registroArmas.addFilter("personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - registroArmas.query(); - this.addFilter("estado", "REG"); - filtro(registroArmas.getLrecord()); - - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - public void querydatabaseMarcaSerie(String cregistro,String marca, String serie) { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo");// and i.clase='" + clase + "' and i.tipoarmaexplosivo='" + tipoArmaExplosivo + "'"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado !='CDP' and t.lote " + (serie==null?" is null":("= '" + serie + "'")) + " and t.cregistro= '" - + cregistro + "' and t.marca " + (marca==null?" is null":("= '" + marca + "'"))); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - /* String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - }*/ - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - /* Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE");*/ - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecOked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para armar el registro - * @param lsolicitud - */ - public void filtro(List lsolicitud){ - - for(TarmRegistroArmas soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="(cregistro="+soli.getPk(); - } - else{ - csolicitud+=" or cregistro="+soli.getPk(); - } - } - csolicitud+=")"; - - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - - registroArmasController.clearAll(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(), dtosaveregistroarma); - - totalPersonaController.clearAll(); - DtoSave dtosavetotalper = totalPersonaController.getDtoSave(true); - dtosavetotalper.setPosition(3); - msave.put(totalPersonaController.getBeanalias(), dtosavetotalper); - - request.setSaveTables(msave); - request.getModifiedData().put("LISTAARMAS", this.armas); - request.getModifiedData().put("LISTATOTALES", this.totalesPersoan); - request.getModifiedData().put("REGISTRO", this.registro); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - //this.totalPersonaController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que carga y valida el contenido de un archivo excel con información de armas - * @param event - */ - public void cargarArchivo(FileUploadEvent event){ - HashMap mapaTotalesTemporales = new HashMap<>(); - int f1=0; - try { - //Completando los datos del registro - this.registro.setPersoncode(this.usuario.getPk().getPersoncode()); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); - this.registro.setFechasolicitud(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - //Inicializando las listas - listaFilas=new ArrayList(); - listaArmas= new ArrayList(); - listaErrores= new ArrayList(); - //caraga el excel - UploadedFile selectedFile = event.getFile(); - InputStream archivo=selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - //Iterando sobre las filas - int cont=0; - Iterator rowIterator = hoja.iterator(); - //Cargando el contenido de las celdas a una lista de objetos - while(rowIterator.hasNext()) { - cont++; - Row row = rowIterator.next(); - if(cont>1){ - Cell numero=row.getCell(0); - Cell serie=row.getCell(1); - Cell clase=row.getCell(2); - Cell longitud=row.getCell(3); - Cell tipo=row.getCell(4); - Cell calibre=row.getCell(5); - Cell color=row.getCell(6); - Cell marca=row.getCell(7); - Cell cantidad=row.getCell(8); - Cell umcantidad=row.getCell(9); - Cell peso=row.getCell(10); - Cell umpeso=row.getCell(11); - Boolean filaEnBlanco=false; - if(this.celdaVacia(numero) && this.celdaVacia(serie) && this.celdaVacia(clase) - && this.celdaVacia(longitud) && this.celdaVacia(tipo) && this.celdaVacia(calibre) - && this.celdaVacia(color) && this.celdaVacia(marca) && this.celdaVacia(cantidad) - && this.celdaVacia(umcantidad) && this.celdaVacia(peso) && this.celdaVacia(umpeso)){ - filaEnBlanco=true; - }else{ - listaFilas.add(row); - } - if(!filaEnBlanco){ - //arma la lista de las armas en un dto aniade en la lista listaArmas - armarlistaArmasExcel(numero, serie, clase, longitud, tipo, calibre, color, marca, cantidad, umcantidad, peso, umpeso, row); - } - } - } - //Verificando las filas duplicadas en el archivo - verificarFilasDuplicadas(listaArmas); - if(this.registro.getTiporegistro().equals("PRO")){ - //Verificando las filas duplicadas en la BD - verificarArmasExistentesEnBaseDeDatos(listaArmas, this.usuario.getPk().getPersoncode()); - } - Boolean contieneSerie=false; - //RECORRE LA LISTA DE LAS ARMAS y valida el CUPO DEL ARMA - //Validando los campos requeridos que estan vacios - recorreListaArmasExcel(contieneSerie,f1,mapaTotalesTemporales); - //Seteando los atributos de las armas y totales si no hay ningun error - if(listaErrores.isEmpty()){ - for (int i = 0; i < listaArmas.size(); i++) { - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada() && listaArmas.get(i).getExisteCatalogo() - && listaArmas.get(i).getExisteTARMTIPOARMAEXPLOSIVO()){ //&& !listaArmas.get(i).getCupoInsuficiente() - //Marca - if(listaArmas.get(i).getCatalogoMarca()!=null){ - listaArmas.get(i).getArma().setMarcacodigo("MARCA"); - listaArmas.get(i).getArma().setMarca(listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - } - //Color - if(listaArmas.get(i).getCatalogoColor()!=null){ - listaArmas.get(i).getArma().setColorcodigo("COLOR"); - listaArmas.get(i).getArma().setColor(listaArmas.get(i).getCatalogoColor().getPk().getCatalog()); - } - //Unidad medida cantidad - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - Double doubleNum=0.0; - //Cargando el catalodo del tipo de unidad de medida - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaCantidad()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoCantidad()); - //Cantidad - Integer intNum=(int)doubleNum.doubleValue(); - listaArmas.get(i).getArma().setCantidad(intNum); - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaPeso()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoPeso()); - //Peso - listaArmas.get(i).getArma().setPeso(new BigDecimal(doubleNum)); - } - } - //Estado - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).getArma().setEstado("IMPO"); - }else{ - listaArmas.get(i).getArma().setEstado("PRO"); - } - listaArmas.get(i).getArma().setEstadocodigo("ESTADOARMA"); - if(direccion!=null){ - //Codigo de pais - listaArmas.get(i).getArma().setCountrycode(direccion.getCountrycode()); - //Codigo de provincia - listaArmas.get(i).getArma().setProvincecode(direccion.getProvincecode()); - //Codigo de canton - listaArmas.get(i).getArma().setCantoncode(direccion.getCantoncode()); - //Codigo de parroquia - listaArmas.get(i).getArma().setParroquiacode(direccion.getParroquiacode()); - //Codigo de ciudad - listaArmas.get(i).getArma().setCitycode(direccion.getCitycode()); - } - //Lote - listaArmas.get(i).getArma().setLote(listaArmas.get(i).getSerie()); - //Peso - if(listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().isEmpty()){ - listaArmas.get(i).getArma().setPeso(BigDecimal.valueOf(Double.parseDouble(listaArmas.get(i).getTextoPeso()))); - } - //Direccion - listaArmas.get(i).getArma().setDireccion(direccion.getAddress()); - - //Fecha de registro - listaArmas.get(i).getArma().setFecharegistro(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Tipo de arma explosivo - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setCtipoarmaexplosivo(listaArmas.get(i).getTipoArmaExplosivo().getPk()); - } - armas.add(listaArmas.get(i).getArma()); - } - } - //Se rrecorre el mapa HashMap mapaTotalesTemporales - for (TarmTotalPersona value : mapaTotalesTemporales.values()) { - totalesPersoan.add(value); - } - save(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - }finally{ - if (!listaErrores.isEmpty()) { - listaArmas.clear(); - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: ");// + errores.toString()); - descargar=true; - }else{ -// MessageHelper.setMessageInfo("ARCHIVO CARGADO EXITOSAMENTE"); - descargar=false; - } - } - } - /** - * Metodo para cargar los valores del EXCEL EN UNA CLASE DTO(ArmaExcell ) - * @param numero * @param serie * @param clase * @param longitud * @param tipo * @param calibre - * @param color * @param marca * @param cantidad * @param umcantidad * @param peso * @param umpeso * @param row - */ - public void armarlistaArmasExcel(Cell numero,Cell serie,Cell clase,Cell longitud,Cell tipo,Cell calibre,Cell color,Cell marca, - Cell cantidad,Cell umcantidad,Cell peso,Cell umpeso,Row row){ - ArmaExcell arma=new ArmaExcell(); - arma.setTextoNumero(Utilidades.setearValorCelda(numero));//Numero - arma.setSerie(Utilidades.setearValorCelda(serie));//Serie - arma.setClase(Utilidades.setearValorCelda(clase));//Clase - arma.setLongitud(Utilidades.setearValorCelda(longitud));//Longitud - arma.setTipo(Utilidades.setearValorCelda(tipo));//Tipo - arma.setCalibre(Utilidades.setearValorCelda(calibre));//Calibre - arma.setColor(Utilidades.setearValorCelda(color));//Color - arma.setMarca(Utilidades.setearValorCelda(marca));//Marca - arma.setTextoCantidad(Utilidades.setearValorCelda(cantidad));//Cantidad - arma.setUnidadMedidaCantidad(Utilidades.setearValorCelda(umcantidad));//U. Medida Cantidad - arma.setTextoPeso(Utilidades.setearValorCelda(peso));//Peso - arma.setUnidadMedidaPeso(Utilidades.setearValorCelda(umpeso));//U. Medida Peso - if(this.registro.getTiporegistro().equals("PRO")){ - if(arma.getSerie()!=null){ - if(arma.getClase().equalsIgnoreCase("arma de fuego") && !arma.getTextoCantidad().equals("1.0") ){ - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_limitecantidadarma")); - return; - } - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - return; - } - }else { - if(arma.getClase().equalsIgnoreCase("arma de fuego") && arma.getTextoCantidad().equals("1.0")){ - listaArmas.add(arma); - }else if (!arma.getClase().equalsIgnoreCase("arma de fuego")) { - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_limitecantidadarma")); - return; - } - } - } - - /** - * Metodo que verifica si existen filas duplicadas en el archivo de excell - * @param listaArmas - */ - private void verificarFilasDuplicadas(List listaArmas){ - for (int i = 0; i < listaArmas.size()-1; i++) { - for (int j = i+1; j < listaArmas.size(); j++) { - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && ((listaArmas.get(i).getSerie().equalsIgnoreCase(listaArmas.get(j).getSerie())) - && listaArmas.get(i).getClase().equalsIgnoreCase(listaArmas.get(j).getClase()) - && listaArmas.get(i).getTipo().equalsIgnoreCase(listaArmas.get(j).getTipo()) - && (!listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") - || (listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") && listaArmas.get(j).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")) - && listaArmas.get(i).getCalibre().equalsIgnoreCase(listaArmas.get(j).getCalibre())) - && listaArmas.get(i).getMarca().equalsIgnoreCase(listaArmas.get(j).getMarca()))){ - listaArmas.get(j).setDuplicada(true); - break; - } - } - } - } - - /** - * @param listaArmas - * @throws Exception - */ - @SuppressWarnings("static-access") - private void verificarArmasExistentesEnBaseDeDatos(List listaArmas, Integer codigoPersona) throws Exception{ - TgeneCatalogDetail codigoClase = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoMarca = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoTipo = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoCalibre = new TgeneCatalogDetail(); - String codigoSerie; - List lstRegistroArmas = registroArmasController.findxPersoncode(String.valueOf(codigoPersona)); - if(lstRegistroArmas==null || listaArmas==null || lstRegistroArmas.isEmpty() || listaArmas.isEmpty()){ - return; - } - for (int i = 0; i < listaArmas.size(); i++) { - codigoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - codigoTipo=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - codigoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - codigoSerie = this.registro.getTiporegistro().equalsIgnoreCase("IMP")?null:listaArmas.get(i).getSerie(); - codigoCalibre=listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")?CatalogDetailController.findByCatalogcodeDescrption("CALIBRE",listaArmas.get(i).getCalibre()):null; - - if((codigoClase==null && (listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().trim().isEmpty())) || (codigoTipo==null && (listaArmas.get(i).getTipo()!=null && !listaArmas.get(i).getTipo().trim().isEmpty())) - || (codigoMarca==null && (listaArmas.get(i).getMarca()!=null && !listaArmas.get(i).getMarca().trim().isEmpty())) || (codigoSerie==null && (listaArmas.get(i).getSerie()!=null && !listaArmas.get(i).getSerie().trim().isEmpty())) - || (codigoCalibre==null && (listaArmas.get(i).getCalibre()!=null && !listaArmas.get(i).getCalibre().trim().isEmpty())) - || listaArmas.get(i).getClase()==null || listaArmas.get(i).getMarca()==null || listaArmas.get(i).getCalibre()==null - || listaArmas.get(i).getClase().isEmpty() || listaArmas.get(i).getMarca().isEmpty() || listaArmas.get(i).getCalibre().isEmpty()){ - continue; - } - for(TarmRegistroArmas registroArmas :lstRegistroArmas){ - List lstArmasEncontradas = findByMarcaSerie(String.valueOf(registroArmas.getPk()),codigoMarca.getPk().getCatalog(), codigoSerie); - if(lstArmasEncontradas!=null){ - for(TarmArmas armas:lstArmasEncontradas){ - TarmTipoArmaExplosivo tipoArma = TiposArmasExplosivosController.findarma(armas.getCtipoarmaexplosivo()); - if(tipoArma.getClase().equalsIgnoreCase(codigoClase.getPk().getCatalog()) && codigoCalibre!=null?tipoArma.getCalibre().equalsIgnoreCase(codigoCalibre.getPk().getCatalog()):true && tipoArma.getTipoarmaexplosivo().equalsIgnoreCase(codigoTipo.getPk().getCatalog())){ - listaArmas.get(i).setDuplicada(true); - break; - } - } - } - } - } - } - /** - * Metodo que recorre la lista de las armas con los valores cargados del EXCEL - * @param contieneSerie - * @param f1 - * @param mapaTotalesTemporales - */ - public void recorreListaArmasExcel(Boolean contieneSerie, int f1,HashMap mapaTotalesTemporales){ - for (int i = 0; i < listaArmas.size(); i++) { - Integer fila=i+1; - f1=i; - Boolean campoCantidad=false; - //0-Datos duplicados - if(listaArmas.get(i).getDuplicada()){ - listaErrores.add("Fila "+fila.toString()+": "+MsgControlArmas.getProperty("msg_datosDuplicados")); - } - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()!=null) && !contieneSerie){ - contieneSerie=true; - listaErrores.add(MsgControlArmas.getProperty("msg_archivoImportacionSerie")); - } - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()==null || listaArmas.get(i).getSerie().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - //2-Clase - if(listaArmas.get(i).getClase()==null || listaArmas.get(i).getClase().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_claseVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //3-Validando que cuando la clase sea ARMA DE FUEGO la longitud no este vacia - }else if(listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()==null || listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //Validando que cuando la clase no sea ARMA DE FUEGO la longitud este vacia - }else if(!listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()!=null && !listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoVacia")); - } - //Carga de catalogos - TgeneCatalogDetail catalogoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - listaArmas.get(i).setCatalogoClase(catalogoClase); - if(catalogoClase!=null && catalogoClase.getPk()!=null && catalogoClase.getPk().getCatalog()!=null && !clase.contains(catalogoClase.getPk().getCatalog())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene permiso para cargar "+catalogoClase.getDescription()); - listaArmas.get(i).setCamposIncompletos(true); - }else if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene ingresado una Clase V\u00e1lida "); - listaArmas.get(i).setCamposIncompletos(true); - } - TgeneCatalogDetail catalogoLongitud=CatalogDetailController.findByCatalogcodeDescrption("LONGITUD", listaArmas.get(i).getLongitud()); - listaArmas.get(i).setCatalogoLongitud(catalogoLongitud); - TgeneCatalogDetail catalogoTipoArma=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - listaArmas.get(i).setCatalogoTipoArma(catalogoTipoArma); - TgeneCatalogDetail catalogoCalibre=CatalogDetailController.findByCatalogcodeDescrption("CALIBRE", listaArmas.get(i).getCalibre()); - listaArmas.get(i).setCatalogoCalibre(catalogoCalibre); - TgeneCatalogDetail catalogoColor=CatalogDetailController.findByCatalogcodeDescrption("COLOR", listaArmas.get(i).getColor()); - listaArmas.get(i).setCatalogoColor(catalogoColor); - TgeneCatalogDetail catalogoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - listaArmas.get(i).setCatalogoMarca(catalogoMarca); - TarmUnidadTipo tipoUnidadSeleccionada =null;// new TarmUnidadTipo(); - if(catalogoClase!=null){ - //Obteniendo la configuracion de TARMUNIDADTIPO - if(!(listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()) && !(listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9,11: "+MsgControlArmas.getProperty("msg_unidadMedidaSoloUna")); - } - String unidadMedidaIngresada = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?listaArmas.get(i).getUnidadMedidaPeso():listaArmas.get(i).getUnidadMedidaCantidad(); - String columnaUnidadMedidaError = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?"Columna 11":"Columna 9"; - if (listaArmas.get(i).getCatalogoTipoArma() == null) { - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: El Tipo de Arma Explosivo no existe en el Catlogo. Revise los espacios entre cada palabra y que este bien escrito."); - listaArmas.get(i).setCamposIncompletos(true); - tipoUnidadSeleccionada=null; - }else { - tipoUnidadSeleccionada= UnidadTipoController.findByClaseAndClasecode(catalogoClase.getPk().getCatalog(), catalogoClase.getPk().getCatalogcode(),listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), unidadMedidaIngresada); - } - if(tipoUnidadSeleccionada!=null && tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()!=null && !tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().isEmpty()){ - if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDAD") || tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDADES")){ - campoCantidad=true; - }else if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("KG")){ - campoCantidad=false; - } - } - else if (tipoUnidadSeleccionada==null){ - listaErrores.add("Fila "+fila.toString()+": "+ columnaUnidadMedidaError + ": " +MsgControlArmas.getProperty("msg_unidadMedidaNoExiste")); - } - } - //4-Tipo - if(listaArmas.get(i).getTipo()==null || listaArmas.get(i).getTipo().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_tipoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - } - //5-Calibre - if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty() - && listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getCalibre()==null || listaArmas.get(i).getCalibre().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreVacio")); - } - //Marca - if(listaArmas.get(i).getMarca()==null || listaArmas.get(i).getMarca().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - if(campoCantidad){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(8).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadValorNumerico")); - } - - //U. Medida Cantidad - if((listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadVacia")); - } - - //Peso - if((listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoNoVacio")); - } - - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoNoVacia")); - } - //Validando que cuando la clase NO sea ARMA DE FUEGO, MUNICION, - //Explosivos, Accesorios, Fuegos Pirotecnicos, Sustancia Quimica, Armas no Letales - //la cantidad y unidad de medida cantidad esten vacios - //y el peso y unidad de medida peso NO esten vacios - }else if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty()){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()!=null && !listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadNoVacia")); - } - //U. Medida Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty() && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadNoVacia")); - } - //Peso - if((listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(10).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoValorNumerico")); - } - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - } - //Verificando que no existan problemas en el arma proveniente del archivo EXCEL - //para validar entonces los datos en la base de datos - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada()){ - //Verificando los datos en los catalogos - //Verificando la existencia de la clase en el catalogo - if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia de la longitud en el catalogo - if(catalogoLongitud==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del tipo de arma en el catalogo - if(catalogoTipoArma==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_noExisteTipoArmaCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del calibre en el catalogo - if(catalogoCalibre==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del color en el catalogo - if(listaArmas.get(i).getColor()!=null && !listaArmas.get(i).getColor().isEmpty()){ - if(catalogoColor==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 6: "+MsgControlArmas.getProperty("msg_colorNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - } - //Verificando la existencia de la marca en el catalogo - if(catalogoMarca==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Validacio 4- Verificando que exista la combinacion clase, longitud, tipo arma y calibre - //en la tabla TARMTIPOARMAEXPLOSIVO - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - if(catalogoClase!=null && catalogoLongitud!=null && catalogoTipoArma!=null && catalogoCalibre!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseLongitudCalibreTipoArma(catalogoLongitud.getPk().getCatalog(), - catalogoCalibre.getPk().getCatalog(), catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getLongitud()+", "+listaArmas.get(i).getTipo()+", "+listaArmas.get(i).getCalibre()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo"); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - }else{ - if(catalogoCalibre!=null && catalogoCalibre.getDescription()!=null && !catalogoCalibre.getDescription().equals("")){ - // Caso donde existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseCalibreTipoArma(catalogoClase.getPk().getCatalog(), catalogoCalibre.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - else{ - // Caso donde no existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseTipo(catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - - } - if(listaArmas.get(i).getCatalogoClase()!=null && listaArmas.get(i).getCatalogoTipoArma()!=null && listaArmas.get(i).getCatalogoMarca()!=null){ - TarmArmas armaBD; - //Si el tipo de registro es de Importacion, el arma se persiste como nueva - //no se busca en la base de datos - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - //Verificando que el arma exista en la base de datos - //si el tipo de registro es de produccion - armaBD=null; //ArmasController.findBySerieMarca(listaArmas.get(i).getSerie(), listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - if(armaBD==null){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - List listaExplosivos=TiposArmasExplosivosController.findByClaseTipoAll(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - if(listaExplosivos==null){ - listaArmas.get(i).setExisteBaseDatos(false); - }else{ - listaArmas.get(i).setExisteBaseDatos(false); - for (TarmTipoArmaExplosivo explosivo : listaExplosivos) { - if(explosivo.getPk().equalsIgnoreCase(armaBD.getCtipoarmaexplosivo())){ - listaArmas.get(i).setExisteBaseDatos(true); - armaBD.setIsnew(false); - break; - } - } - } - } - } - listaArmas.get(i).setArma(armaBD); - String unidadTipoIngresada = campoCantidad?listaArmas.get(i).getUnidadMedidaCantidad():listaArmas.get(i).getUnidadMedidaPeso(); - // CARGA EL CUPO ***** //persona,clase,tipoarmaexplosivo -// List cupo =ComercianteCupoController.findByPersonCode(usuario.getPk().getPersoncode().toString(), -// listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), -// unidadTipoIngresada); -// -// if(cupo!=null && !cupo.isEmpty() && cupo.get(0).getTiporegistro().equalsIgnoreCase(this.registro.getTiporegistro())){ - //metodo de los TOTALES SETEADOS EN UN MAPA - cupoArmasExplosivos(i, mapaTotalesTemporales, fila,tipoUnidadSeleccionada); -// }else{ -// if(cupo==null || cupo.isEmpty()){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no asignado para "+listaArmas.get(i).getClase()+"."); -// } -// else{ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()+"."); -// } -// listaArmas.get(i).setCupoInsuficiente(true); -// } - } - } - tipoUnidadSeleccionada = null; - } - } - - public void cupoArmasExplosivos(int i,HashMap mapaTotalesTemporales,Integer fila,TarmUnidadTipo tipoUnidadSeleccionada){ - -// listaArmas.get(i).setCupo1(0); - //Cargando el total - //saldo de la TotalPersona - BigDecimal saldoPasaraaAnterior = new BigDecimal(0); - //TarmTotalPersona totalMapa= new BigDecimal(0); - TarmTotalPersona totalPersona=null; -// Double cupoMaximo=listaArmas.get(i).getCupo().getCupounidad().doubleValue(); - //no existe - if(mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog())==null){ - totalPersona =TotalPersonaController.findMaxFecha(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), usuario.getPk().getPersoncode().toString(), - tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(totalPersona==null){ - totalPersona=new TarmTotalPersona(); - totalPersona.setTotal(new BigDecimal(0)); - }else{ - saldoPasaraaAnterior = (totalPersona==null?new BigDecimal(0):totalPersona.getTotal()); - } - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso)); - totalPersona.setTotal(new BigDecimal(0));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - Double suma=0.0; - //Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).setCantidad(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaCantidad()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getCantidad(); - totalPersona.setTotal(new BigDecimal(suma)); - //Peso - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).setPeso(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaPeso()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getPeso(); - totalPersona.setTotal(new BigDecimal(suma)); - } - } - else{//existe la combinacion - totalPersona = mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso).add(totalPersona.getCantidadmovimiento())); - totalPersona.setTotal(totalPersona.getSaldoanterior().add(totalPersona.getCantidadmovimiento()));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - saldoPasaraaAnterior=totalPersona.getSaldoanterior(); - } - totalPersona.setPk(null); - totalPersona.setPersoncodigo(usuario.getPk().getPersoncode()); - totalPersona.setClase(listaArmas.get(i).getCatalogoClase().getPk().getCatalog()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setIngresoegreso("ING"); - totalPersona.setCarma(listaArmas.get(i).getArma().getPk()); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setFecha(new java.sql.Timestamp(new Date().getTime())); - totalPersona.setSaldoanterior(saldoPasaraaAnterior==null?new BigDecimal(0):saldoPasaraaAnterior); - totalPersona.setIsnew(true); - //Verificando si el usuario tiene cupo disponible para el arma - - //mapa con el nuevo total por clase tipo unidad - mapaTotalesTemporales.put(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(),totalPersona); - listaArmas.get(i).setTotalPersona(totalPersona); - //Verificando que el la suma del total con la cantidad de armas - //no sea mayor que el cupo -// if(totalPersona.getTotal().doubleValue()>cupoMaximo){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()); -// listaArmas.get(i).setCupoInsuficiente(true); -// }else{ -// //Actualizando el valor del total y del total anterior -// listaArmas.get(i).getTotalPersona().setSaldoanterior(listaArmas.get(i).getTotalPersona().getSaldoanterior()); -// listaArmas.get(i).getTotalPersona().setTotal(totalPersona.getTotal()); -// } - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - public Boolean celdaVacia(Cell celda){ - Boolean vacia=false; - if(celda==null || celda.getCellType()==Cell.CELL_TYPE_BLANK || (celda.getCellType()==Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())){ - vacia=true; - } - return vacia; - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - ArmaController cc = new ArmaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("lote", serie); - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - /** - * - * Metodo para encontrar por marca y tipoarmaexplosivo - * @param marca - * @param tipoArmaExplosivo - * @return - * @throws Exception - */ - public static List findByMarcaSerie(String cregistro,String marca, String serie) throws Exception { - - ArmaController cc = new ArmaController(); - //cc.init(); - cc.recperpage = 300; - cc.querydatabaseMarcaSerie(cregistro,marca, serie ); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } - - @SuppressWarnings("finally") - public File generarArchivoError(Long key){ - if(listaErrores.isEmpty()){ - - //MessageHelper.setMessageInfo("ARCHIVO SUBIDO CORRECTAMENTE"); - return null; - } - PrintWriter escribir=null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog"+key,".txt"); - escribir = new PrintWriter(archivo); - - - for(String err : listaErrores){ - System.out.println(err); - - - escribir.print(err+"\r\n"); - } - //escribir.close(); - limpiar(); - - - - } - catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - finally{ - escribir.flush(); - escribir.close(); - return archivo; - } - - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo(){ - - Long key=new Date().getTime(); - File archivoTemporal=generarArchivoError(key); - if(archivoTemporal==null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=errorlog"+key+".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - - FacesContext.getCurrentInstance().responseComplete(); - - - } catch (Exception e) { - // TODO: handle exception - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar(){ - try { - create(); - while(lrecord.iterator().hasNext()){ - record =lrecord.get(0); - remove(); - } - listaArmas = new ArrayList(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { - codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", record.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { - codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", record.getProvincecode(), record.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - public void cargarDocumentosHabilitantes(String categoria){ - ldocumentospersona= new ArrayList<>(); - List listadocum=DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - //Forma nmero 1 (Uso de Maps). - Map mapPersonas = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapPersonas.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - System.out.println("Lista sin repetidos:"); - for(Entry p : mapPersonas.entrySet()) { - ldocumentospersona.add(p.getValue()); - } -// ldocumentospersona =DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - } - - public void cambioTipoRegistro(){ - if(registro.getTiporegistro()!=null){ - if("PRO".equals(registro.getTiporegistro())){ - cargarDocumentosHabilitantes("4");//4 Fabrica, 5Fabricante - }else{// IMP - cargarDocumentosHabilitantes("8");//8 importador - } - }else{ - ldocumentospersona=new ArrayList<>(); - } - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - public void codigoCiudad(){ - - - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getLarmexcell() { - return listaArmas; - } - - public void setLarmexcell(List larmexcell) { - this.listaArmas = larmexcell; - } - - public ArmaExcell getArmaexcell() { - return armaexcell; - } - - public void setArmaexcell(ArmaExcell armaexcell) { - this.armaexcell = armaexcell; - } - - public TarmTipoArmaExplosivo getTipoarmexplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoarmexplosivo(TarmTipoArmaExplosivo tipoarmexplosivo) { - this.tipoArmaExplosivo = tipoarmexplosivo; - } - - public List getLaexel() { - return laexel; - } - - public void setLaexel(List laexel) { - this.laexel = laexel; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getListaFilas() { - return listaFilas; - } - - public void setListaFilas(List listaFilas) { - this.listaFilas = listaFilas; - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public InputStream getFilei() { - return filei; - } - - public void setFilei(InputStream filei) { - this.filei = filei; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TcustPersonAddress getDireccion() { - return direccion; - } - - public void setDireccion(TcustPersonAddress direccion) { - this.direccion = direccion; - } - -// public List getCuposArmas() { -// return cuposArmas; -// } - // -// public void setCuposArmas(List cuposArmas) { -// this.cuposArmas = cuposArmas; -// } - -// public ComercianteCupoController getComercianteCupoController() { -// return comercianteCupoController; -// } - // -// public void setComercianteCupoController( -// ComercianteCupoController comercianteCupoController) { -// this.comercianteCupoController = comercianteCupoController; -// } - - public Boolean getDescargar() { - return descargar; - } - - public void setDescargar(Boolean descargar) { - this.descargar = descargar; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - - public TotalArmasController getTotalPersonaController() { - return totalPersonaController; - } - - public void setTotalPersonaController( - TotalArmasController totalPersonaController) { - this.totalPersonaController = totalPersonaController; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCity getCiudad() { - return ciudad; - } - - public void setCiudad(TgeneCity ciudad) { - this.ciudad = ciudad; - } - - public List getArmas() { - return armas; - } - - public void setArmas(List armas) { - this.armas = armas; - } - - public List getTotalesPersoan() { - return totalesPersoan; - } - - public void setTotalesPersoan(List totalesPersoan) { - this.totalesPersoan = totalesPersoan; - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TgeneCatalogDetail getTipoRegistro() { - return tipoRegistro; - } - - public void setTipoRegistro(TgeneCatalogDetail tipoRegistro) { - this.tipoRegistro = tipoRegistro; - } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public Integer getPersoncode() { - return personcode; - } - - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - - - - - - } diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.svn-base deleted file mode 100644 index 7ae946e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ArmaController.java.svn-base +++ /dev/null @@ -1,1693 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.ArmasController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora para la entidad TarmArma - * Incluye metodo de consulta para la busqueda de persona y registro - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmaController extends AbstractController { - - //Variabgles globales - private Integer personcode; - - private Boolean descargar; - private String csolicitud; - InputStream filei; - - //Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - - Date fechaActual; - private List tiposRegistro; - private TgeneCatalogDetail tipoRegistro; - - //Detalle del material - //Pais - private List lpaises; - private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; - private TgeneCity ciudad; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Variables de las armas - private TcustPersonDetail usuario; - private TcustPersonAddress direccion; - private List listaFilas; - private List listaErrores; -// private List cuposArmas; - - //private BigDecimal pesoTotal; - private TarmTipoArmaExplosivo tipoArmaExplosivo; - private List listaArmas; - private ArmaExcell armaexcell; - - private List laexel; - private List armas=new ArrayList(); - private List totalesPersoan=new ArrayList(); - - //Aeropuertos - List laeropuertos=new ArrayList<>(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - -// @ManagedProperty(value = "#{comercianteCupoController}") -// private ComercianteCupoController comercianteCupoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalPersonaController; - - private List ldocumentospersona; - - private String clase; - public ArmaController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "ARMAS"; - this.create(); - - //Globales - descargar=false; - csolicitud=null; - - //Datos generales - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo los datos de la persona - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - - //Fecha actual - this.fechaActual=Calendar.getInstance().getTime(); - - //Tipos de registro - tiposRegistro=CatalogDetailController.find("TIPOREGISTRO", "REG"); - - //Detalle del material - lpaises=CountryController.find(); - registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - - //Obteniendo la direccion de la persona - String tipoDireccion=""; - - if(detallesPersona!=null){ - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - } - //direccion= personAddressController.findByPersonCode(usuario.getPk().getPersoncode().toString()); - direccion= personAddressController.findPrincipal(String.valueOf(usuario.getPk().getPersoncode().toString())) ; - - - //Imprtacion - this.lprovincias=ProvinceController.find("EC"); - - //Armas - listaErrores = new ArrayList(); - - //Controlador de totales -// this.totalPersonaController=new TotalPersonaController(); -// this.totalPersonaController.create(); -// this.totalPersonaController.setLrecord(new ArrayList()); - - RegistroArmController registroArmas = new RegistroArmController(); - registroArmas.init(); - registroArmas.setRecperpage(3000000); - registroArmas.addFilter("personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - registroArmas.query(); - this.addFilter("estado", "REG"); - filtro(registroArmas.getLrecord()); - - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - public void querydatabaseMarcaSerie(String cregistro,String marca, String serie) { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo");// and i.clase='" + clase + "' and i.tipoarmaexplosivo='" + tipoArmaExplosivo + "'"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado !='CDP' and t.lote " + (serie==null?" is null":("= '" + serie + "'")) + " and t.cregistro= '" - + cregistro + "' and t.marca " + (marca==null?" is null":("= '" + marca + "'"))); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - /* String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - }*/ - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - /* Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE");*/ - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecOked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para armar el registro - * @param lsolicitud - */ - public void filtro(List lsolicitud){ - - for(TarmRegistroArmas soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="(cregistro="+soli.getPk(); - } - else{ - csolicitud+=" or cregistro="+soli.getPk(); - } - } - csolicitud+=")"; - - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - - registroArmasController.clearAll(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(), dtosaveregistroarma); - - totalPersonaController.clearAll(); - DtoSave dtosavetotalper = totalPersonaController.getDtoSave(true); - dtosavetotalper.setPosition(3); - msave.put(totalPersonaController.getBeanalias(), dtosavetotalper); - - request.setSaveTables(msave); - request.getModifiedData().put("LISTAARMAS", this.armas); - request.getModifiedData().put("LISTATOTALES", this.totalesPersoan); - request.getModifiedData().put("REGISTRO", this.registro); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - //this.totalPersonaController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que carga y valida el contenido de un archivo excel con información de armas - * @param event - */ - public void cargarArchivo(FileUploadEvent event){ - HashMap mapaTotalesTemporales = new HashMap<>(); - int f1=0; - try { - //Completando los datos del registro - this.registro.setPersoncode(this.usuario.getPk().getPersoncode()); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); - this.registro.setFechasolicitud(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - //Inicializando las listas - listaFilas=new ArrayList(); - listaArmas= new ArrayList(); - listaErrores= new ArrayList(); - //caraga el excel - UploadedFile selectedFile = event.getFile(); - InputStream archivo=selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - //Iterando sobre las filas - int cont=0; - Iterator rowIterator = hoja.iterator(); - //Cargando el contenido de las celdas a una lista de objetos - while(rowIterator.hasNext()) { - cont++; - Row row = rowIterator.next(); - if(cont>1){ - Cell numero=row.getCell(0); - Cell serie=row.getCell(1); - Cell clase=row.getCell(2); - Cell longitud=row.getCell(3); - Cell tipo=row.getCell(4); - Cell calibre=row.getCell(5); - Cell color=row.getCell(6); - Cell marca=row.getCell(7); - Cell cantidad=row.getCell(8); - Cell umcantidad=row.getCell(9); - Cell peso=row.getCell(10); - Cell umpeso=row.getCell(11); - Boolean filaEnBlanco=false; - if(this.celdaVacia(numero) && this.celdaVacia(serie) && this.celdaVacia(clase) - && this.celdaVacia(longitud) && this.celdaVacia(tipo) && this.celdaVacia(calibre) - && this.celdaVacia(color) && this.celdaVacia(marca) && this.celdaVacia(cantidad) - && this.celdaVacia(umcantidad) && this.celdaVacia(peso) && this.celdaVacia(umpeso)){ - filaEnBlanco=true; - }else{ - listaFilas.add(row); - } - if(!filaEnBlanco){ - //arma la lista de las armas en un dto aniade en la lista listaArmas - armarlistaArmasExcel(numero, serie, clase, longitud, tipo, calibre, color, marca, cantidad, umcantidad, peso, umpeso, row); - } - } - } - //Verificando las filas duplicadas en el archivo - verificarFilasDuplicadas(listaArmas); - if(this.registro.getTiporegistro().equals("PRO")){ - //Verificando las filas duplicadas en la BD - verificarArmasExistentesEnBaseDeDatos(listaArmas, this.usuario.getPk().getPersoncode()); - } - Boolean contieneSerie=false; - //RECORRE LA LISTA DE LAS ARMAS y valida el CUPO DEL ARMA - //Validando los campos requeridos que estan vacios - recorreListaArmasExcel(contieneSerie,f1,mapaTotalesTemporales); - //Seteando los atributos de las armas y totales si no hay ningun error - if(listaErrores.isEmpty()){ - for (int i = 0; i < listaArmas.size(); i++) { - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada() && listaArmas.get(i).getExisteCatalogo() - && listaArmas.get(i).getExisteTARMTIPOARMAEXPLOSIVO()){ //&& !listaArmas.get(i).getCupoInsuficiente() - //Marca - if(listaArmas.get(i).getCatalogoMarca()!=null){ - listaArmas.get(i).getArma().setMarcacodigo("MARCA"); - listaArmas.get(i).getArma().setMarca(listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - } - //Color - if(listaArmas.get(i).getCatalogoColor()!=null){ - listaArmas.get(i).getArma().setColorcodigo("COLOR"); - listaArmas.get(i).getArma().setColor(listaArmas.get(i).getCatalogoColor().getPk().getCatalog()); - } - //Unidad medida cantidad - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - Double doubleNum=0.0; - //Cargando el catalodo del tipo de unidad de medida - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaCantidad()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoCantidad()); - //Cantidad - Integer intNum=(int)doubleNum.doubleValue(); - listaArmas.get(i).getArma().setCantidad(intNum); - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaPeso()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoPeso()); - //Peso - listaArmas.get(i).getArma().setPeso(new BigDecimal(doubleNum)); - } - } - //Estado - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).getArma().setEstado("IMPO"); - }else{ - listaArmas.get(i).getArma().setEstado("PRO"); - } - listaArmas.get(i).getArma().setEstadocodigo("ESTADOARMA"); - if(direccion!=null){ - //Codigo de pais - listaArmas.get(i).getArma().setCountrycode(direccion.getCountrycode()); - //Codigo de provincia - listaArmas.get(i).getArma().setProvincecode(direccion.getProvincecode()); - //Codigo de canton - listaArmas.get(i).getArma().setCantoncode(direccion.getCantoncode()); - //Codigo de parroquia - listaArmas.get(i).getArma().setParroquiacode(direccion.getParroquiacode()); - //Codigo de ciudad - listaArmas.get(i).getArma().setCitycode(direccion.getCitycode()); - } - //Lote - listaArmas.get(i).getArma().setLote(listaArmas.get(i).getSerie()); - //Peso - if(listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().isEmpty()){ - listaArmas.get(i).getArma().setPeso(BigDecimal.valueOf(Double.parseDouble(listaArmas.get(i).getTextoPeso()))); - } - //Direccion - listaArmas.get(i).getArma().setDireccion(direccion.getAddress()); - - //Fecha de registro - listaArmas.get(i).getArma().setFecharegistro(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Tipo de arma explosivo - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setCtipoarmaexplosivo(listaArmas.get(i).getTipoArmaExplosivo().getPk()); - } - armas.add(listaArmas.get(i).getArma()); - } - } - //Se rrecorre el mapa HashMap mapaTotalesTemporales - for (TarmTotalPersona value : mapaTotalesTemporales.values()) { - totalesPersoan.add(value); - } - save(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - }finally{ - if (!listaErrores.isEmpty()) { - listaArmas.clear(); - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: ");// + errores.toString()); - descargar=true; - }else{ -// MessageHelper.setMessageInfo("ARCHIVO CARGADO EXITOSAMENTE"); - descargar=false; - } - } - } - /** - * Metodo para cargar los valores del EXCEL EN UNA CLASE DTO(ArmaExcell ) - * @param numero * @param serie * @param clase * @param longitud * @param tipo * @param calibre - * @param color * @param marca * @param cantidad * @param umcantidad * @param peso * @param umpeso * @param row - */ - public void armarlistaArmasExcel(Cell numero,Cell serie,Cell clase,Cell longitud,Cell tipo,Cell calibre,Cell color,Cell marca, - Cell cantidad,Cell umcantidad,Cell peso,Cell umpeso,Row row){ - ArmaExcell arma=new ArmaExcell(); - arma.setTextoNumero(Utilidades.setearValorCelda(numero));//Numero - arma.setSerie(Utilidades.setearValorCelda(serie));//Serie - arma.setClase(Utilidades.setearValorCelda(clase));//Clase - arma.setLongitud(Utilidades.setearValorCelda(longitud));//Longitud - arma.setTipo(Utilidades.setearValorCelda(tipo));//Tipo - arma.setCalibre(Utilidades.setearValorCelda(calibre));//Calibre - arma.setColor(Utilidades.setearValorCelda(color));//Color - arma.setMarca(Utilidades.setearValorCelda(marca));//Marca - arma.setTextoCantidad(Utilidades.setearValorCelda(cantidad));//Cantidad - arma.setUnidadMedidaCantidad(Utilidades.setearValorCelda(umcantidad));//U. Medida Cantidad - arma.setTextoPeso(Utilidades.setearValorCelda(peso));//Peso - arma.setUnidadMedidaPeso(Utilidades.setearValorCelda(umpeso));//U. Medida Peso - if(this.registro.getTiporegistro().equals("PRO")){ - if(arma.getSerie()!=null){ - if(arma.getClase().equalsIgnoreCase("arma de fuego") && !arma.getTextoCantidad().equals("1.0") ){ - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_limitecantidadarma")); - return; - } - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - return; - } - }else { - if(arma.getClase().equalsIgnoreCase("arma de fuego") && arma.getTextoCantidad().equals("1.0")){ - listaArmas.add(arma); - }else if (!arma.getClase().equalsIgnoreCase("arma de fuego")) { - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_limitecantidadarma")); - return; - } - } - } - - /** - * Metodo que verifica si existen filas duplicadas en el archivo de excell - * @param listaArmas - */ - private void verificarFilasDuplicadas(List listaArmas){ - for (int i = 0; i < listaArmas.size()-1; i++) { - for (int j = i+1; j < listaArmas.size(); j++) { - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && ((listaArmas.get(i).getSerie().equalsIgnoreCase(listaArmas.get(j).getSerie())) - && listaArmas.get(i).getClase().equalsIgnoreCase(listaArmas.get(j).getClase()) - && listaArmas.get(i).getTipo().equalsIgnoreCase(listaArmas.get(j).getTipo()) - && (!listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") - || (listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") && listaArmas.get(j).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")) - && listaArmas.get(i).getCalibre().equalsIgnoreCase(listaArmas.get(j).getCalibre())) - && listaArmas.get(i).getMarca().equalsIgnoreCase(listaArmas.get(j).getMarca()))){ - listaArmas.get(j).setDuplicada(true); - break; - } - } - } - } - - /** - * @param listaArmas - * @throws Exception - */ - @SuppressWarnings("static-access") - private void verificarArmasExistentesEnBaseDeDatos(List listaArmas, Integer codigoPersona) throws Exception{ - TgeneCatalogDetail codigoClase = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoMarca = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoTipo = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoCalibre = new TgeneCatalogDetail(); - String codigoSerie; - List lstRegistroArmas = registroArmasController.findxPersoncode(String.valueOf(codigoPersona)); - if(lstRegistroArmas==null || listaArmas==null || lstRegistroArmas.isEmpty() || listaArmas.isEmpty()){ - return; - } - for (int i = 0; i < listaArmas.size(); i++) { - codigoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - codigoTipo=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - codigoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - codigoSerie = this.registro.getTiporegistro().equalsIgnoreCase("IMP")?null:listaArmas.get(i).getSerie(); - codigoCalibre=listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")?CatalogDetailController.findByCatalogcodeDescrption("CALIBRE",listaArmas.get(i).getCalibre()):null; - - if((codigoClase==null && (listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().trim().isEmpty())) || (codigoTipo==null && (listaArmas.get(i).getTipo()!=null && !listaArmas.get(i).getTipo().trim().isEmpty())) - || (codigoMarca==null && (listaArmas.get(i).getMarca()!=null && !listaArmas.get(i).getMarca().trim().isEmpty())) || (codigoSerie==null && (listaArmas.get(i).getSerie()!=null && !listaArmas.get(i).getSerie().trim().isEmpty())) - || (codigoCalibre==null && (listaArmas.get(i).getCalibre()!=null && !listaArmas.get(i).getCalibre().trim().isEmpty())) - || listaArmas.get(i).getClase()==null || listaArmas.get(i).getMarca()==null || listaArmas.get(i).getCalibre()==null - || listaArmas.get(i).getClase().isEmpty() || listaArmas.get(i).getMarca().isEmpty() || listaArmas.get(i).getCalibre().isEmpty()){ - continue; - } - for(TarmRegistroArmas registroArmas :lstRegistroArmas){ - List lstArmasEncontradas = findByMarcaSerie(String.valueOf(registroArmas.getPk()),codigoMarca.getPk().getCatalog(), codigoSerie); - if(lstArmasEncontradas!=null){ - for(TarmArmas armas:lstArmasEncontradas){ - TarmTipoArmaExplosivo tipoArma = TiposArmasExplosivosController.findarma(armas.getCtipoarmaexplosivo()); - if(tipoArma.getClase().equalsIgnoreCase(codigoClase.getPk().getCatalog()) && codigoCalibre!=null?tipoArma.getCalibre().equalsIgnoreCase(codigoCalibre.getPk().getCatalog()):true && tipoArma.getTipoarmaexplosivo().equalsIgnoreCase(codigoTipo.getPk().getCatalog())){ - listaArmas.get(i).setDuplicada(true); - break; - } - } - } - } - } - } - /** - * Metodo que recorre la lista de las armas con los valores cargados del EXCEL - * @param contieneSerie - * @param f1 - * @param mapaTotalesTemporales - */ - public void recorreListaArmasExcel(Boolean contieneSerie, int f1,HashMap mapaTotalesTemporales){ - for (int i = 0; i < listaArmas.size(); i++) { - Integer fila=i+1; - f1=i; - Boolean campoCantidad=false; - //0-Datos duplicados - if(listaArmas.get(i).getDuplicada()){ - listaErrores.add("Fila "+fila.toString()+": "+MsgControlArmas.getProperty("msg_datosDuplicados")); - } - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()!=null) && !contieneSerie){ - contieneSerie=true; - listaErrores.add(MsgControlArmas.getProperty("msg_archivoImportacionSerie")); - } - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()==null || listaArmas.get(i).getSerie().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - //2-Clase - if(listaArmas.get(i).getClase()==null || listaArmas.get(i).getClase().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_claseVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //3-Validando que cuando la clase sea ARMA DE FUEGO la longitud no este vacia - }else if(listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()==null || listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //Validando que cuando la clase no sea ARMA DE FUEGO la longitud este vacia - }else if(!listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()!=null && !listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoVacia")); - } - //Carga de catalogos - TgeneCatalogDetail catalogoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - listaArmas.get(i).setCatalogoClase(catalogoClase); - if(catalogoClase!=null && catalogoClase.getPk()!=null && catalogoClase.getPk().getCatalog()!=null && !clase.contains(catalogoClase.getPk().getCatalog())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene permiso para cargar "+catalogoClase.getDescription()); - listaArmas.get(i).setCamposIncompletos(true); - }else if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene ingresado una Clase V\u00e1lida "); - listaArmas.get(i).setCamposIncompletos(true); - } - TgeneCatalogDetail catalogoLongitud=CatalogDetailController.findByCatalogcodeDescrption("LONGITUD", listaArmas.get(i).getLongitud()); - listaArmas.get(i).setCatalogoLongitud(catalogoLongitud); - TgeneCatalogDetail catalogoTipoArma=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - listaArmas.get(i).setCatalogoTipoArma(catalogoTipoArma); - TgeneCatalogDetail catalogoCalibre=CatalogDetailController.findByCatalogcodeDescrption("CALIBRE", listaArmas.get(i).getCalibre()); - listaArmas.get(i).setCatalogoCalibre(catalogoCalibre); - TgeneCatalogDetail catalogoColor=CatalogDetailController.findByCatalogcodeDescrption("COLOR", listaArmas.get(i).getColor()); - listaArmas.get(i).setCatalogoColor(catalogoColor); - TgeneCatalogDetail catalogoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - listaArmas.get(i).setCatalogoMarca(catalogoMarca); - TarmUnidadTipo tipoUnidadSeleccionada =null;// new TarmUnidadTipo(); - if(catalogoClase!=null){ - //Obteniendo la configuracion de TARMUNIDADTIPO - if(!(listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()) && !(listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9,11: "+MsgControlArmas.getProperty("msg_unidadMedidaSoloUna")); - } - String unidadMedidaIngresada = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?listaArmas.get(i).getUnidadMedidaPeso():listaArmas.get(i).getUnidadMedidaCantidad(); - String columnaUnidadMedidaError = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?"Columna 11":"Columna 9"; - if (listaArmas.get(i).getCatalogoTipoArma() == null) { - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: El Tipo de Arma Explosivo no existe en el Catlogo. Revise los espacios entre cada palabra y que este bien escrito."); - listaArmas.get(i).setCamposIncompletos(true); - tipoUnidadSeleccionada=null; - }else { - tipoUnidadSeleccionada= UnidadTipoController.findByClaseAndClasecode(catalogoClase.getPk().getCatalog(), catalogoClase.getPk().getCatalogcode(),listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), unidadMedidaIngresada); - } - if(tipoUnidadSeleccionada!=null && tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()!=null && !tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().isEmpty()){ - if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDAD") || tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDADES")){ - campoCantidad=true; - }else if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("KG")){ - campoCantidad=false; - } - } - else if (tipoUnidadSeleccionada==null){ - listaErrores.add("Fila "+fila.toString()+": "+ columnaUnidadMedidaError + ": " +MsgControlArmas.getProperty("msg_unidadMedidaNoExiste")); - } - } - //4-Tipo - if(listaArmas.get(i).getTipo()==null || listaArmas.get(i).getTipo().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_tipoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - } - //5-Calibre - if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty() - && listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getCalibre()==null || listaArmas.get(i).getCalibre().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreVacio")); - } - //Marca - if(listaArmas.get(i).getMarca()==null || listaArmas.get(i).getMarca().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - if(campoCantidad){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(8).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadValorNumerico")); - } - - //U. Medida Cantidad - if((listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadVacia")); - } - - //Peso - if((listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoNoVacio")); - } - - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoNoVacia")); - } - //Validando que cuando la clase NO sea ARMA DE FUEGO, MUNICION, - //Explosivos, Accesorios, Fuegos Pirotecnicos, Sustancia Quimica, Armas no Letales - //la cantidad y unidad de medida cantidad esten vacios - //y el peso y unidad de medida peso NO esten vacios - }else if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty()){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()!=null && !listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadNoVacia")); - } - //U. Medida Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty() && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadNoVacia")); - } - //Peso - if((listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(10).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoValorNumerico")); - } - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - } - //Verificando que no existan problemas en el arma proveniente del archivo EXCEL - //para validar entonces los datos en la base de datos - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada()){ - //Verificando los datos en los catalogos - //Verificando la existencia de la clase en el catalogo - if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia de la longitud en el catalogo - if(catalogoLongitud==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del tipo de arma en el catalogo - if(catalogoTipoArma==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_noExisteTipoArmaCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del calibre en el catalogo - if(catalogoCalibre==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del color en el catalogo - if(listaArmas.get(i).getColor()!=null && !listaArmas.get(i).getColor().isEmpty()){ - if(catalogoColor==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 6: "+MsgControlArmas.getProperty("msg_colorNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - } - //Verificando la existencia de la marca en el catalogo - if(catalogoMarca==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Validacio 4- Verificando que exista la combinacion clase, longitud, tipo arma y calibre - //en la tabla TARMTIPOARMAEXPLOSIVO - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - if(catalogoClase!=null && catalogoLongitud!=null && catalogoTipoArma!=null && catalogoCalibre!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseLongitudCalibreTipoArma(catalogoLongitud.getPk().getCatalog(), - catalogoCalibre.getPk().getCatalog(), catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getLongitud()+", "+listaArmas.get(i).getTipo()+", "+listaArmas.get(i).getCalibre()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo"); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - }else{ - if(catalogoCalibre!=null && catalogoCalibre.getDescription()!=null && !catalogoCalibre.getDescription().equals("")){ - // Caso donde existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseCalibreTipoArma(catalogoClase.getPk().getCatalog(), catalogoCalibre.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - else{ - // Caso donde no existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseTipo(catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - - } - if(listaArmas.get(i).getCatalogoClase()!=null && listaArmas.get(i).getCatalogoTipoArma()!=null && listaArmas.get(i).getCatalogoMarca()!=null){ - TarmArmas armaBD; - //Si el tipo de registro es de Importacion, el arma se persiste como nueva - //no se busca en la base de datos - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - //Verificando que el arma exista en la base de datos - //si el tipo de registro es de produccion - armaBD=null; //ArmasController.findBySerieMarca(listaArmas.get(i).getSerie(), listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - if(armaBD==null){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - List listaExplosivos=TiposArmasExplosivosController.findByClaseTipoAll(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - if(listaExplosivos==null){ - listaArmas.get(i).setExisteBaseDatos(false); - }else{ - listaArmas.get(i).setExisteBaseDatos(false); - for (TarmTipoArmaExplosivo explosivo : listaExplosivos) { - if(explosivo.getPk().equalsIgnoreCase(armaBD.getCtipoarmaexplosivo())){ - listaArmas.get(i).setExisteBaseDatos(true); - armaBD.setIsnew(false); - break; - } - } - } - } - } - listaArmas.get(i).setArma(armaBD); - String unidadTipoIngresada = campoCantidad?listaArmas.get(i).getUnidadMedidaCantidad():listaArmas.get(i).getUnidadMedidaPeso(); - // CARGA EL CUPO ***** //persona,clase,tipoarmaexplosivo -// List cupo =ComercianteCupoController.findByPersonCode(usuario.getPk().getPersoncode().toString(), -// listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), -// unidadTipoIngresada); -// -// if(cupo!=null && !cupo.isEmpty() && cupo.get(0).getTiporegistro().equalsIgnoreCase(this.registro.getTiporegistro())){ - //metodo de los TOTALES SETEADOS EN UN MAPA - cupoArmasExplosivos(i, mapaTotalesTemporales, fila,tipoUnidadSeleccionada); -// }else{ -// if(cupo==null || cupo.isEmpty()){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no asignado para "+listaArmas.get(i).getClase()+"."); -// } -// else{ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()+"."); -// } -// listaArmas.get(i).setCupoInsuficiente(true); -// } - } - } - tipoUnidadSeleccionada = null; - } - } - - public void cupoArmasExplosivos(int i,HashMap mapaTotalesTemporales,Integer fila,TarmUnidadTipo tipoUnidadSeleccionada){ - -// listaArmas.get(i).setCupo1(0); - //Cargando el total - //saldo de la TotalPersona - BigDecimal saldoPasaraaAnterior = new BigDecimal(0); - //TarmTotalPersona totalMapa= new BigDecimal(0); - TarmTotalPersona totalPersona=null; -// Double cupoMaximo=listaArmas.get(i).getCupo().getCupounidad().doubleValue(); - //no existe - if(mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog())==null){ - totalPersona =TotalPersonaController.findMaxFecha(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), usuario.getPk().getPersoncode().toString(), - tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(totalPersona==null){ - totalPersona=new TarmTotalPersona(); - totalPersona.setTotal(new BigDecimal(0)); - }else{ - saldoPasaraaAnterior = (totalPersona==null?new BigDecimal(0):totalPersona.getTotal()); - } - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso)); - totalPersona.setTotal(new BigDecimal(0));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - Double suma=0.0; - //Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).setCantidad(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaCantidad()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getCantidad(); - totalPersona.setTotal(new BigDecimal(suma)); - //Peso - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).setPeso(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaPeso()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getPeso(); - totalPersona.setTotal(new BigDecimal(suma)); - } - } - else{//existe la combinacion - totalPersona = mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso).add(totalPersona.getCantidadmovimiento())); - totalPersona.setTotal(totalPersona.getSaldoanterior().add(totalPersona.getCantidadmovimiento()));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - saldoPasaraaAnterior=totalPersona.getSaldoanterior(); - } - totalPersona.setPk(null); - totalPersona.setPersoncodigo(usuario.getPk().getPersoncode()); - totalPersona.setClase(listaArmas.get(i).getCatalogoClase().getPk().getCatalog()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setIngresoegreso("ING"); - totalPersona.setCarma(listaArmas.get(i).getArma().getPk()); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setFecha(new java.sql.Timestamp(new Date().getTime())); - totalPersona.setSaldoanterior(saldoPasaraaAnterior==null?new BigDecimal(0):saldoPasaraaAnterior); - totalPersona.setIsnew(true); - //Verificando si el usuario tiene cupo disponible para el arma - - //mapa con el nuevo total por clase tipo unidad - mapaTotalesTemporales.put(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(),totalPersona); - listaArmas.get(i).setTotalPersona(totalPersona); - //Verificando que el la suma del total con la cantidad de armas - //no sea mayor que el cupo -// if(totalPersona.getTotal().doubleValue()>cupoMaximo){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()); -// listaArmas.get(i).setCupoInsuficiente(true); -// }else{ -// //Actualizando el valor del total y del total anterior -// listaArmas.get(i).getTotalPersona().setSaldoanterior(listaArmas.get(i).getTotalPersona().getSaldoanterior()); -// listaArmas.get(i).getTotalPersona().setTotal(totalPersona.getTotal()); -// } - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - public Boolean celdaVacia(Cell celda){ - Boolean vacia=false; - if(celda==null || celda.getCellType()==Cell.CELL_TYPE_BLANK || (celda.getCellType()==Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())){ - vacia=true; - } - return vacia; - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - ArmaController cc = new ArmaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("lote", serie); - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - /** - * - * Metodo para encontrar por marca y tipoarmaexplosivo - * @param marca - * @param tipoArmaExplosivo - * @return - * @throws Exception - */ - public static List findByMarcaSerie(String cregistro,String marca, String serie) throws Exception { - - ArmaController cc = new ArmaController(); - //cc.init(); - cc.recperpage = 300; - cc.querydatabaseMarcaSerie(cregistro,marca, serie ); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } - - @SuppressWarnings("finally") - public File generarArchivoError(Long key){ - if(listaErrores.isEmpty()){ - - //MessageHelper.setMessageInfo("ARCHIVO SUBIDO CORRECTAMENTE"); - return null; - } - PrintWriter escribir=null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog"+key,".txt"); - escribir = new PrintWriter(archivo); - - - for(String err : listaErrores){ - System.out.println(err); - - - escribir.print(err+"\r\n"); - } - //escribir.close(); - limpiar(); - - - - } - catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - finally{ - escribir.flush(); - escribir.close(); - return archivo; - } - - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo(){ - - Long key=new Date().getTime(); - File archivoTemporal=generarArchivoError(key); - if(archivoTemporal==null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=errorlog"+key+".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - - FacesContext.getCurrentInstance().responseComplete(); - - - } catch (Exception e) { - // TODO: handle exception - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar(){ - try { - create(); - while(lrecord.iterator().hasNext()){ - record =lrecord.get(0); - remove(); - } - listaArmas = new ArrayList(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { - codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", record.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { - codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", record.getProvincecode(), record.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - public void cargarDocumentosHabilitantes(String categoria){ - ldocumentospersona= new ArrayList<>(); - List listadocum=DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - //Forma nmero 1 (Uso de Maps). - Map mapPersonas = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapPersonas.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - System.out.println("Lista sin repetidos:"); - for(Entry p : mapPersonas.entrySet()) { - ldocumentospersona.add(p.getValue()); - } -// ldocumentospersona =DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - } - - public void cambioTipoRegistro(){ - if(registro.getTiporegistro()!=null){ - if("PRO".equals(registro.getTiporegistro())){ - cargarDocumentosHabilitantes("4");//4 Fabrica, 5Fabricante - }else{// IMP - cargarDocumentosHabilitantes("8");//8 importador - } - }else{ - ldocumentospersona=new ArrayList<>(); - } - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - public void codigoCiudad(){ - - - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getLarmexcell() { - return listaArmas; - } - - public void setLarmexcell(List larmexcell) { - this.listaArmas = larmexcell; - } - - public ArmaExcell getArmaexcell() { - return armaexcell; - } - - public void setArmaexcell(ArmaExcell armaexcell) { - this.armaexcell = armaexcell; - } - - public TarmTipoArmaExplosivo getTipoarmexplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoarmexplosivo(TarmTipoArmaExplosivo tipoarmexplosivo) { - this.tipoArmaExplosivo = tipoarmexplosivo; - } - - public List getLaexel() { - return laexel; - } - - public void setLaexel(List laexel) { - this.laexel = laexel; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getListaFilas() { - return listaFilas; - } - - public void setListaFilas(List listaFilas) { - this.listaFilas = listaFilas; - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public InputStream getFilei() { - return filei; - } - - public void setFilei(InputStream filei) { - this.filei = filei; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TcustPersonAddress getDireccion() { - return direccion; - } - - public void setDireccion(TcustPersonAddress direccion) { - this.direccion = direccion; - } - -// public List getCuposArmas() { -// return cuposArmas; -// } - // -// public void setCuposArmas(List cuposArmas) { -// this.cuposArmas = cuposArmas; -// } - -// public ComercianteCupoController getComercianteCupoController() { -// return comercianteCupoController; -// } - // -// public void setComercianteCupoController( -// ComercianteCupoController comercianteCupoController) { -// this.comercianteCupoController = comercianteCupoController; -// } - - public Boolean getDescargar() { - return descargar; - } - - public void setDescargar(Boolean descargar) { - this.descargar = descargar; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - - public TotalArmasController getTotalPersonaController() { - return totalPersonaController; - } - - public void setTotalPersonaController( - TotalArmasController totalPersonaController) { - this.totalPersonaController = totalPersonaController; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCity getCiudad() { - return ciudad; - } - - public void setCiudad(TgeneCity ciudad) { - this.ciudad = ciudad; - } - - public List getArmas() { - return armas; - } - - public void setArmas(List armas) { - this.armas = armas; - } - - public List getTotalesPersoan() { - return totalesPersoan; - } - - public void setTotalesPersoan(List totalesPersoan) { - this.totalesPersoan = totalesPersoan; - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TgeneCatalogDetail getTipoRegistro() { - return tipoRegistro; - } - - public void setTipoRegistro(TgeneCatalogDetail tipoRegistro) { - this.tipoRegistro = tipoRegistro; - } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public Integer getPersoncode() { - return personcode; - } - - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - - - - - - } diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/AuxCargaArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/AuxCargaArmasController.java.svn-base deleted file mode 100644 index b7b9b19..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/AuxCargaArmasController.java.svn-base +++ /dev/null @@ -1,517 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.jboss.logging.Logger; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.solicitud.AuxArmasController; -import com.fp.frontend.controller.armas.solicitud.DecomisoArmaController; -import com.fp.frontend.controller.armas.solicitud.DecomisoController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AuxCargaArmasController extends AbstractController { - - /** - * Variable para listar los errores al cargar el excel - */ - private List listaErrores; - /** - * Mensaje de error - */ - private String mensajeError; - /** - * numero de armas procesadas - */ - private Integer numArmasProcesadas; - /** - * numero de armas con error - */ - private Integer numArmasError; - /** - * numero de armas con error - */ - private Integer numCorrectas; - /** - * Centro de control Policoa Judicia 2/PN07 - */ - private TarmCentroControl centroControl; - - /** - * Detalle del usuario - */ - @SuppressWarnings("unused") - private TcustPersonDetail usuario; - - /** - * Nombre del centro de control logeado - */ - private String centroControlNombreLogeado; - - /*Constante centro control*/ - @SuppressWarnings("unused") - private String nombreInstitucion; - @SuppressWarnings("unused") - private String institucion; - /*Cedula del propietario*/ - @SuppressWarnings("unused") - private String cedulaPropietario; - /*motivo incautacion*/ - @SuppressWarnings("unused") - private String motivocatalogo; - /*cantidad de armas*/ - @SuppressWarnings("unused") - private Integer cantidad=1; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - /** - * Controlador que maneja el decomiso TarmDecomiso - */ - @ManagedProperty(value = "#{decomisoController}") - private DecomisoController decomisoController; - - /** - * Controlador que maneja TarmDecomisoArma - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - private final static Logger LOG = Logger.getLogger(AuxCargaArmasController.class.getName()); - - public AuxCargaArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina - * que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record = new TarmArmas(); - this.beanalias = "AUXARMAS"; -// listArmas = new ArrayList(); - cargaParametros(); - cargaUsuarioLogeado(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cargaParametros(){ - nombreInstitucion=codigos("CODIGO.NOM.INSTIT.IMPORTE");//"PJ01" - institucion=codigos("CODIGO.INSTITUCION.IMPORTE");//2 - /*Cedula del propietario*/ - cedulaPropietario=codigos("CEDULA.PROPIETARIO.IMPORTE");//"999999999"; - /*motivo incautacion*/ - motivocatalogo=codigos("MOTIVO.IMPORTE");//"9"; - } - - /** - * Método para obtener los codigos - */ - private String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - - public void cargaUsuarioLogeado(){ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - centroControlNombreLogeado = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - } - - - /* - * (non-Javadoc) - * - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - Filter filtrofecha = new Filter(); - filtrofecha - .setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if (!lrecord.isEmpty()) { - record = lrecord.get(0); - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - if(lrecord==null || lrecord.size()==0 || lrecord.isEmpty()){ - MessageHelper.setMessageError("NO EXISTEN ARMAS CARGADAS "); - return; - } - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(1); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - //request.getModifiedData().put("REGISTRO", this.registroArma); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - mensajeError=null; - MessageHelper.setMessageInfo(resp); - lrecord.clear(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo que carga y valida el contenido de un archivo excel con - * información de armas - * - * @param event - */ - public void cargarArchivo(FileUploadEvent event) { - // cargar Armas - lrecord.clear(); - this.clearAll(); - listaErrores = new ArrayList(); - int cont = 0; - try { - UploadedFile selectedFile = event.getFile(); - InputStream archivo = selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - // Iterando sobre las filas - Iterator rowIterator = hoja.iterator(); - // Cargando el contenido de las celdas a una lista de objetos - SetlistaCodigoArmas = new HashSet(); - while (rowIterator.hasNext()) { - Row row = rowIterator.next(); - System.out.println("contador........."+cont); - if(cont!=0){ - Cell codigoArma = row.getCell(0); - if (!this.celdaVacia(codigoArma)) { - listaCodigoArmas.add(codigoArma.toString().trim()); - } else { - listaErrores.add("CELDA VACIA: "+codigoArma+" Num:" + cont); - } - cont++; - LOG.info("Contador "+cont); - }else{ - cont++; - } - } - archivo.close(); - LOG.info("ARMAS CARGADAS: "+listaCodigoArmas.size()); - int auxi=0; - //procesar armas - for (String item : listaCodigoArmas) { - System.out.println("contador2: "+auxi++); - TarmArmas arma = AuxArmasController.findByPK(item); - if (arma != null) { - record=arma; - record.setPk(null); - record.setIsnew(true); - record.setEstado("DEST"); - record.setFecharegistro(new java.sql.Date(new Date().getTime())); - SimpleDateFormat formato= new SimpleDateFormat("dd/MM/yyyy"); - record.setEstadoDecomiso("DESTRUIDAS: "+formato.format(new Date())); - super.update(); - }else{ - listaErrores.add("ARMA NO ENCONTRADA: "+item+" "); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } finally { - numArmasProcesadas=cont-1; - if (!listaErrores.isEmpty()) { - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: "); - mensajeError="ERROR EN LA CARGA DE ARMAS"; - numCorrectas=lrecord.size(); - lrecord.clear(); - this.clearAll(); - }else{ - numCorrectas=lrecord.size(); - } - numArmasError =listaErrores.size(); - } - } - - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - private Boolean celdaVacia(Cell celda) { - Boolean vacia = false; - if (celda == null || celda.getCellType() == Cell.CELL_TYPE_BLANK|| - (celda.getCellType() == Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())) { - vacia = true; - } - return vacia; - } - - @SuppressWarnings("finally") - private File generarArchivoError(Long key) { - if (listaErrores.isEmpty()) { - return null; - } - PrintWriter escribir = null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog" + key, ".txt"); - escribir = new PrintWriter(archivo); - for (String err : listaErrores) { - escribir.print(err + "\r\n"); - } - limpiar(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - escribir.flush(); - escribir.close(); - return archivo; - } - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo() { - if(listaErrores!=null && listaErrores.size()>0){ - Long key = new Date().getTime(); - File archivoTemporal = generarArchivoError(key); - if (archivoTemporal == null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition","attachment; filename=errorlog" + key + ".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - FacesContext.getCurrentInstance().responseComplete(); - } catch (Exception e) { - } - }else{ - MessageHelper.setMessageError("NO TIENE ERRORES"); - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar() { - try { - create(); - while (lrecord.iterator().hasNext()) { - record = lrecord.get(0); - remove(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - - public void codigoCiudad() { - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - public String getMensajeError() { - return mensajeError; - } - - public void setMensajeError(String mensajeError) { - this.mensajeError = mensajeError; - } - - public Integer getNumArmasProcesadas() { - return numArmasProcesadas; - } - - public void setNumArmasProcesadas(Integer numArmasProcesadas) { - this.numArmasProcesadas = numArmasProcesadas; - } - - public Integer getNumArmasError() { - return numArmasError; - } - - public void setNumArmasError(Integer numArmasError) { - this.numArmasError = numArmasError; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getCentroControlNombreLogeado() { - return centroControlNombreLogeado; - } - - public void setCentroControlNombreLogeado(String centroControlNombreLogeado) { - this.centroControlNombreLogeado = centroControlNombreLogeado; - } - - public DecomisoController getDecomisoController() { - return decomisoController; - } - - public void setDecomisoController(DecomisoController decomisoController) { - this.decomisoController = decomisoController; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public Integer getNumCorrectas() { - return numCorrectas; - } - - public void setNumCorrectas(Integer numCorrectas) { - this.numCorrectas = numCorrectas; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.netbeans-base deleted file mode 100644 index c61da98..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.netbeans-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.solicitud.TarmTramiteController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - - -/** - * Clase controladora del lov asociado al bean TarmTramite. - * - * @author Christian Pazmino. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class BuscarTramiteLovController extends AbstractController { - - - /** - * - */ - private static final long serialVersionUID = 1L; - private List ltipoTramite; - private List ltipoAutorizacion; - private List lcategoria; - private List lusoActividad; - private String ctramite; - private String tipoPersonaAmbos; - private List tarmTramite; - private String tipoautorizacion; - private String tipotramite; - private String categoria; - - public BuscarTramiteLovController() throws Exception { - super(TarmTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - ctramite = CallerHelper.getLovParameter("ctramite"); - String tipopersonasol=CallerHelper.getLovParameter("tipopersonasol"); - if(tipopersonasol!=null && tipopersonasol.trim().length()>0){ - tipoPersonaAmbos=ParametersController.find("CODIGO.PERSONTYPE.AMBOS", "1").getTextvalue(); - this.getMfilelds().put("tipopersonasol", "(tipopersona='"+tipoPersonaAmbos+"' or tipopersona='"+tipopersonasol+"') "); - } - // Inicializa autoconsulta - super.startQuery(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRAMITE"; - ltipoAutorizacion=CatalogDetailController.find("TIPOAUTORIZACION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.tipotramite, t.tipoautorizacion, t.categoria, t.usoactividad"); - SubQuery stipoAutorizacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoAutorizacion", "i.pk.catalog = t.tipoautorizacion and i.pk.catalogcode=t.tipoautorizacioncodigo"); - SubQuery stipoTramite= new SubQuery - ("TgeneCatalogDetail", "description", "destipoTramite", "i.pk.catalog = t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo"); - SubQuery scategoria= new SubQuery - ("TgeneCatalogDetail", "description", "descategoria", "i.pk.catalog = t.categoria and i.pk.catalogcode=t.categoriacodigo"); - SubQuery susoactividad= new SubQuery - ("TgeneCatalogDetail", "description", "desusoactividad", "i.pk.catalog = t.usoactividad and i.pk.catalogcode=t.usoactividadcodigo"); - - dto.addSubQuery(stipoAutorizacion); - dto.addSubQuery(stipoTramite); - dto.addSubQuery(scategoria); - dto.addSubQuery(susoactividad); - //valida si tiene el codigo del tramite padre - if (ctramite != null) { - Filter filtro= new Filter(); - filtro.setSql("pk !="+ctramite); - dto.addFiltro(filtro); - } - - if(this.getMfilelds().get("tipopersonasol")!=null){ - Filter filtro= new Filter(); - filtro.setSql(this.getMfilelds().get("tipopersonasol").toString()); - dto.addFiltro(filtro); - } - -// dto.setOrderby("t.tipotramite"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 980); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/buscartramiteLov.xhtml", options, params); - } - - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo==item.getPk().getCatalog()){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Método para el evento change del combo tramite - */ - public void executeTramite() { - tarmTramite = new ArrayList<>(); - ltipoTramite = new ArrayList<>(); - lcategoria = new ArrayList<>(); - lusoActividad = new ArrayList<>(); - - tipoautorizacion = (String) this.getMfilters().get("pk.tipoautorizacion"); - - tarmTramite = TarmTramiteController.findPorCriteriosTramite(tipoautorizacion); - - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getTipotramitecodigo(),tramite.getTipotramite()); - if(!ltipoTramite.contains(catalogDetail)){ - ltipoTramite.add(catalogDetail); - } - } - - } - - /** - * Método para el evento change del combo autorizacion - */ - public void executeTipoTramite() { - lusoActividad = new ArrayList<>(); - tipotramite = (String) this.getMfilters().get("pk.tipotramite"); - - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - if(tramite.getTipotramite().equals(tipotramite) && tramite.getCategoriacodigo().equals("CATEGORIA")){ - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getCategoriacodigo(),tramite.getCategoria()); - - if(!lcategoria.contains(catalogDetail)){ - lcategoria.add(catalogDetail); - } - } - - } - - } - - /** - * Método para el evento change del combo categoria - */ - public void executeCategoria() { - - categoria = (String) this.getMfilters().get("pk.categoria"); - lusoActividad = new ArrayList<>(); - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - if(tramite.getTipotramite().equals(tipotramite) && tramite.getCategoria().equals(categoria) && - tramite.getCategoriacodigo().equals("CATEGORIA") && tramite.getUsoactividadcodigo().equals("USOACTIVIDAD")){ - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getUsoactividadcodigo(),tramite.getUsoactividad()); - - if(!lusoActividad.contains(catalogDetail)){ - lusoActividad.add(catalogDetail); - } - } - } - } - - public List getLtipoTramite() { - return ltipoTramite; - } - - public void setLtipoTramite(List ltipoTramite) { - this.ltipoTramite = ltipoTramite; - } - - public List getLcategoria() { - return lcategoria; - } - - public void setLcategoria(List lcategoria) { - this.lcategoria = lcategoria; - } - - public List getLusoActividad() { - return lusoActividad; - } - - public void setLusoActividad(List lusoActividad) { - this.lusoActividad = lusoActividad; - } - - public List getLtipoAutorizacion() { - return ltipoAutorizacion; - } - - public void setLtipoAutorizacion(List ltipoAutorizacion) { - this.ltipoAutorizacion = ltipoAutorizacion; - } - - public void setTramite() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setTramite(TarmTramite tarmTramite) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmTramite); - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.svn-base deleted file mode 100644 index c61da98..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/BuscarTramiteLovController.java.svn-base +++ /dev/null @@ -1,273 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.HashSet; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.solicitud.TarmTramiteController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - - -/** - * Clase controladora del lov asociado al bean TarmTramite. - * - * @author Christian Pazmino. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class BuscarTramiteLovController extends AbstractController { - - - /** - * - */ - private static final long serialVersionUID = 1L; - private List ltipoTramite; - private List ltipoAutorizacion; - private List lcategoria; - private List lusoActividad; - private String ctramite; - private String tipoPersonaAmbos; - private List tarmTramite; - private String tipoautorizacion; - private String tipotramite; - private String categoria; - - public BuscarTramiteLovController() throws Exception { - super(TarmTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - ctramite = CallerHelper.getLovParameter("ctramite"); - String tipopersonasol=CallerHelper.getLovParameter("tipopersonasol"); - if(tipopersonasol!=null && tipopersonasol.trim().length()>0){ - tipoPersonaAmbos=ParametersController.find("CODIGO.PERSONTYPE.AMBOS", "1").getTextvalue(); - this.getMfilelds().put("tipopersonasol", "(tipopersona='"+tipoPersonaAmbos+"' or tipopersona='"+tipopersonasol+"') "); - } - // Inicializa autoconsulta - super.startQuery(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRAMITE"; - ltipoAutorizacion=CatalogDetailController.find("TIPOAUTORIZACION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.tipotramite, t.tipoautorizacion, t.categoria, t.usoactividad"); - SubQuery stipoAutorizacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoAutorizacion", "i.pk.catalog = t.tipoautorizacion and i.pk.catalogcode=t.tipoautorizacioncodigo"); - SubQuery stipoTramite= new SubQuery - ("TgeneCatalogDetail", "description", "destipoTramite", "i.pk.catalog = t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo"); - SubQuery scategoria= new SubQuery - ("TgeneCatalogDetail", "description", "descategoria", "i.pk.catalog = t.categoria and i.pk.catalogcode=t.categoriacodigo"); - SubQuery susoactividad= new SubQuery - ("TgeneCatalogDetail", "description", "desusoactividad", "i.pk.catalog = t.usoactividad and i.pk.catalogcode=t.usoactividadcodigo"); - - dto.addSubQuery(stipoAutorizacion); - dto.addSubQuery(stipoTramite); - dto.addSubQuery(scategoria); - dto.addSubQuery(susoactividad); - //valida si tiene el codigo del tramite padre - if (ctramite != null) { - Filter filtro= new Filter(); - filtro.setSql("pk !="+ctramite); - dto.addFiltro(filtro); - } - - if(this.getMfilelds().get("tipopersonasol")!=null){ - Filter filtro= new Filter(); - filtro.setSql(this.getMfilelds().get("tipopersonasol").toString()); - dto.addFiltro(filtro); - } - -// dto.setOrderby("t.tipotramite"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 980); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/buscartramiteLov.xhtml", options, params); - } - - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo==item.getPk().getCatalog()){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Método para el evento change del combo tramite - */ - public void executeTramite() { - tarmTramite = new ArrayList<>(); - ltipoTramite = new ArrayList<>(); - lcategoria = new ArrayList<>(); - lusoActividad = new ArrayList<>(); - - tipoautorizacion = (String) this.getMfilters().get("pk.tipoautorizacion"); - - tarmTramite = TarmTramiteController.findPorCriteriosTramite(tipoautorizacion); - - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getTipotramitecodigo(),tramite.getTipotramite()); - if(!ltipoTramite.contains(catalogDetail)){ - ltipoTramite.add(catalogDetail); - } - } - - } - - /** - * Método para el evento change del combo autorizacion - */ - public void executeTipoTramite() { - lusoActividad = new ArrayList<>(); - tipotramite = (String) this.getMfilters().get("pk.tipotramite"); - - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - if(tramite.getTipotramite().equals(tipotramite) && tramite.getCategoriacodigo().equals("CATEGORIA")){ - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getCategoriacodigo(),tramite.getCategoria()); - - if(!lcategoria.contains(catalogDetail)){ - lcategoria.add(catalogDetail); - } - } - - } - - } - - /** - * Método para el evento change del combo categoria - */ - public void executeCategoria() { - - categoria = (String) this.getMfilters().get("pk.categoria"); - lusoActividad = new ArrayList<>(); - for (int i = 0; i < tarmTramite.size(); i++) { - TarmTramite tramite = tarmTramite.get(i); - if(tramite.getTipotramite().equals(tipotramite) && tramite.getCategoria().equals(categoria) && - tramite.getCategoriacodigo().equals("CATEGORIA") && tramite.getUsoactividadcodigo().equals("USOACTIVIDAD")){ - TgeneCatalogDetail catalogDetail = CatalogDetailController.findCatalogo(tramite.getUsoactividadcodigo(),tramite.getUsoactividad()); - - if(!lusoActividad.contains(catalogDetail)){ - lusoActividad.add(catalogDetail); - } - } - } - } - - public List getLtipoTramite() { - return ltipoTramite; - } - - public void setLtipoTramite(List ltipoTramite) { - this.ltipoTramite = ltipoTramite; - } - - public List getLcategoria() { - return lcategoria; - } - - public void setLcategoria(List lcategoria) { - this.lcategoria = lcategoria; - } - - public List getLusoActividad() { - return lusoActividad; - } - - public void setLusoActividad(List lusoActividad) { - this.lusoActividad = lusoActividad; - } - - public List getLtipoAutorizacion() { - return ltipoAutorizacion; - } - - public void setLtipoAutorizacion(List ltipoAutorizacion) { - this.ltipoAutorizacion = ltipoAutorizacion; - } - - public void setTramite() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setTramite(TarmTramite tarmTramite) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tarmTramite); - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CalibreLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CalibreLovController.java.svn-base deleted file mode 100644 index 0d856eb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CalibreLovController.java.svn-base +++ /dev/null @@ -1,116 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CalibreLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CalibreLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "LONGITUDLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - this.getMfilters().put("pk.catalogcode", "CALIBRE"); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/calibreLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CashManagementHistoryController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CashManagementHistoryController.java.svn-base deleted file mode 100644 index 075129a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CashManagementHistoryController.java.svn-base +++ /dev/null @@ -1,295 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.apache.commons.lang.StringUtils; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmCashManagementHistory; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Christian Pazmino. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CashManagementHistoryController extends AbstractController { - - // Fecha inicial - private Date fechainicial; - // Fecha final - private Date fechafinal; - - public CashManagementHistoryController() throws Exception { - super(TarmCashManagementHistory.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - if(fechainicial!=null && fechafinal!=null){ - super.startQuery(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CASHMANAGEMENTHISTORY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - - if(fechainicial!= null && fechafinal!=null){ - if(this.fechainicial.getTime() > this.fechafinal.getTime()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - this.lrecord = new ArrayList<>(); - return; - } - Filter filtroFecha = new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - filtroFecha.setSql("trunc(t.datefrom)>=TO_DATE('" + formato.format(fechainicial)+ "','yyyy-MM-dd')" +" and "+ "trunc(t.datefrom)<=TO_DATE('" + formato.format(fechafinal)+ "','yyyy-MM-dd')"); - dto.addFiltro(filtroFecha); - } - dto.setOrderby("t.datefrom"); - SubQuery queryPersonDetail = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode=(Select max(o.pk.personcode) from TsafeUserDetail o where o.pk.usercode = t.usercode and o.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')) and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(queryPersonDetail); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - for(TarmCashManagementHistory tmp:lrecord){ - // path del alfresco arreglado - tmp.getModifiedData().put("pathAlfresco", tmp.getPathreporte().replace("cm:", "")); -// SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm"); - // Fecha y hora separados - Calendar fechaTmpCal = Calendar.getInstance(); - fechaTmpCal.setTimeInMillis(tmp.getDatefrom().getTime()); - tmp.getModifiedData().put("hora", StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.HOUR_OF_DAY)),2,'0')+":"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.MINUTE)),2,'0')); - tmp.getModifiedData().put("fecha", fechaTmpCal.get(Calendar.YEAR)+"-"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.MONTH)+1),2,'0')+"-"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.DAY_OF_MONTH)),2,'0')); - - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void update(TarmCashManagementHistory bean) throws Exception { - record=bean; - update(); - } - - /** - * - */ - public static TarmCashManagementHistory findUltimoReporteGenerado() { - try { - CashManagementHistoryController cc = new CashManagementHistoryController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("dateto", "2999-12-31"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - */ - public static List findReportesGeneradosVigentes() { - try { - CashManagementHistoryController cc = new CashManagementHistoryController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("dateto", "2999-12-31"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - */ - public static List findReportesByDate(Date fechainicial, Date fechafinal) { - try { - CashManagementHistoryController cc = new CashManagementHistoryController(); - cc.init(); - cc.recperpage = 10000; -// cc.addFilter("dateto", "2999-12-31"); - cc.querydatabaseByDate(fechainicial, fechafinal);; - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseByDate(Date fechainicial, Date fechafinal) { - try { - - DtoQuery dto = super.getDtoQuery(true); - - if(fechainicial!= null && fechafinal!=null){ - if(fechainicial.getTime() > fechafinal.getTime()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - this.lrecord = new ArrayList<>(); - return; - } - Filter filtroFecha = new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - filtroFecha.setSql("trunc(t.datefrom)>=TO_DATE('" + formato.format(fechainicial)+ "','yyyy-MM-dd')" +" and "+ "trunc(t.datefrom)<=TO_DATE('" + formato.format(fechafinal)+ "','yyyy-MM-dd')"); - dto.addFiltro(filtroFecha); - } - dto.setOrderby("t.datefrom"); - SubQuery queryPersonDetail = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode=(Select max(o.pk.personcode) from TsafeUserDetail o where o.pk.usercode = t.usercode and o.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')) and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(queryPersonDetail); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - for(TarmCashManagementHistory tmp:lrecord){ - // path del alfresco arreglado - tmp.getModifiedData().put("pathAlfresco", tmp.getPathreporte().replace("cm:", "")); -// SimpleDateFormat sdfHora=new SimpleDateFormat("HH:mm"); - // Fecha y hora separados - Calendar fechaTmpCal = Calendar.getInstance(); - fechaTmpCal.setTimeInMillis(tmp.getDatefrom().getTime()); - tmp.getModifiedData().put("hora", StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.HOUR_OF_DAY)),2,'0')+":"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.MINUTE)),2,'0')); - tmp.getModifiedData().put("fecha", fechaTmpCal.get(Calendar.YEAR)+"-"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.MONTH)+1),2,'0')+"-"+StringUtils.leftPad(String.valueOf(fechaTmpCal.get(Calendar.DAY_OF_MONTH)),2,'0')); - - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Limpia los registros anteriores - */ - public void limpiar(){ - this.lrecord = new ArrayList<>(); - fechainicial= null; - fechafinal= null; - } - - public Date getFechainicial() { - return fechainicial; - } - - public void setFechainicial(Date fechainicial) { - this.fechainicial = fechainicial; - } - - public Date getFechafinal() { - return fechafinal; - } - - public void setFechafinal(Date fechafinal) { - this.fechafinal = fechafinal; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CatalogFilterLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CatalogFilterLovController.java.svn-base deleted file mode 100644 index dbbf5a1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CatalogFilterLovController.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Christian Pazmino. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CatalogFilterLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String tituloLOV; - private String filtro; - - public CatalogFilterLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - tituloLOV = CallerHelper.getLovParameter("tituloLOV"); - - String catalogcode = CallerHelper.getLovParameter("catalogcode"); - if (catalogcode != null) { - super.addFilter("pk.catalogcode", catalogcode); - } - // Valor usado para filtrar registros de la tabla TGENECATALOGDETAIL - filtro = CallerHelper.getLovParameter("filtro"); - - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CLASELOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - Filter filtroGeneral = new Filter(); - filtroGeneral.setSql(filtro); - dto.addFiltro(filtroGeneral); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public String getTituloLOV() { - return tituloLOV; - } - - public void setTituloLOV(String tituloLOV) { - this.tituloLOV = tituloLOV; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/catalogFilterLov.xhtml", options, params); - } - - public static List findTramiteSancion() { - try { - CatalogFilterLovController cc = new CatalogFilterLovController(); - cc.init(); - cc.recperpage = 300; - cc.filtro = "t.pk.catalog in ('1','6')"; - cc.addFilter("pk.catalogcode", "TIPOAUTORIZACION"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CentroControlArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CentroControlArmasController.java.svn-base deleted file mode 100644 index b88afef..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/CentroControlArmasController.java.svn-base +++ /dev/null @@ -1,668 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CentroControlArmasController extends AbstractController { - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List linstitucion; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List lnombreInstitucion; - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneParroquia - */ - private List lparroquias; - /** - * Atributo para la lista de objetos TgeneCatalogDetail (catalogo de grados asignados a los militares) - */ - private List lgrados; - /** - * Variable para activar o desactivar los campos segun la opcion seleccionada - */ - private String editarReg; - /** - * Variable de tipo TcustPersonDetail para setear cuando seleccione del lov - */ - private TcustPersonDetail personaDetailSelecionada; - - public CentroControlArmasController() throws Exception { - super(TarmCentroControl.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CENTCONTARMAS"; - //CARGA DE CATALOGOS - linstitucion=CatalogDetailController.find("INSTITUCION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - SubQuery stipoInstitucion= new SubQuery - ("TgeneCatalogDetail", "description", "desinstitucion", "i.pk.catalog = t.institucion and i.pk.catalogcode=t.instituciontipo"); - SubQuery stipoInstitucionLegalcode= new SubQuery - ("TgeneCatalogDetail", "legalcode", "legalcode", "i.pk.catalog = t.institucion and i.pk.catalogcode=t.instituciontipo"); - SubQuery snombreinstitucion= new SubQuery - ("TgeneCatalogDetail", "description", "desnombreinstitucion", "i.pk.catalog = t.nombreinstitucion and i.pk.catalogcode=t.nombreinstitucioncodigo"); - SubQuery sprovincia= new SubQuery - ("TgeneProvince", "description", "desprovincia", "i.pk.countrycode = t.countrycode and i.pk.provincecode= t.provincecode"); - SubQuery scanton= new SubQuery - ("TgeneCanton", "description", "descanton", "i.pk.countrycode = t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode"); - SubQuery sparroquia= new SubQuery - ("TgeneParroquia", "description", "desparroquia", "i.pk.countrycode = t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - SubQuery spersona= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode=t.personcode and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - SubQuery sgrado= new SubQuery - ("TgeneCatalogDetail", "description", "desgrado", "i.pk.catalog = t.grado and i.pk.catalogcode=t.gradocodigo"); - dto.addSubQuery(stipoInstitucion); - dto.addSubQuery(stipoInstitucionLegalcode); - dto.addSubQuery(snombreinstitucion); - dto.addSubQuery(sprovincia); - dto.addSubQuery(scanton); - dto.addSubQuery(sparroquia); - dto.addSubQuery(spersona); - dto.addSubQuery(sgrado); - dto.setOrderby("t.institucion"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(this.lrecord!=null && !this.lrecord.isEmpty()){ - this.record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el evento change del combo institucion - */ - public void executeInstitucion() { - if ((getMfilters().get("institucion")!= null) && (getMfilters().get("institucion").compareTo("") != 0)) { - lnombreInstitucion=CatalogDetailController.find("NOMBREINSTITUCION",getMfilters().get("institucion")); - } - } - - /** - * Metodo q se ejecuta cuando pulsamos el boton crear - */ - @Override - public void create() throws Exception{ - if (super.getMfilters().get("institucion") == null || super.getMfilters().get("institucion").equals("%")) { - MessageHelper.setMessageError("INSTITUCI\u00D3N REQUERIDA"); - return; - } - editarReg=null; - super.create(); - //se carga el nombre de la institucion seleccionada - catalogos(linstitucion, getMfilters().get("institucion"), "desinstitucion"); - record.setInstituciontipo("INSTITUCION"); - record.setInstitucion(super.getMfilters().get("institucion")); - record.setNombreinstitucioncodigo("NOMBREINSTITUCION"); - record.setGradocodigo("MILITARYGRADE"); - //se consulta las provincias del ecuador - record.setCountrycode("EC"); - if(lprovinces==null || lprovinces.size()==0){ - lprovinces = ProvinceController.find(record.getCountrycode()); - } - //consulta los grados - if(lgrados== null || lgrados.size()==0){ - lgrados=CatalogDetailController.find("MILITARYGRADE"); - } - personaDetailSelecionada= new TcustPersonDetail(); - } - - @Override - public void update() throws Exception { - catalogos(lnombreInstitucion, record.getNombreinstitucion(), "desnombreinstitucion");//lista, campo a validar, pk del mdafile - catalogos(linstitucion, record.getInstitucion(), "desinstitucion"); - catalogos(lgrados, record.getGrado(), "desgrado"); - nombreProvincia(); - nombreCanton(); - nombreParroquia(); - super.update(); - } - - - /** - * Método para cargar datos en el editar - */ - public void loadEdit() { - personaDetailSelecionada= new TcustPersonDetail(); - personaDetailSelecionada.setName(record.getModifiedData().get("nombre").toString()); - //consulta los nombres de las intituciones - lnombreInstitucion=CatalogDetailController.find("NOMBREINSTITUCION",record.getInstitucion()); - if(lprovinces==null || lprovinces.size()==0){ - lprovinces = ProvinceController.find(record.getCountrycode()); - } - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - //consulta los grados - if(lgrados== null || lgrados.size()==0){ - lgrados=CatalogDetailController.find("MILITARYGRADE"); - } - editarReg="SI"; - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - /** - * Metodos para recorreer los combos y setear las descripciones de lo q se escoge - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Metodo para obtener la descripcion de la provincia - */ - public void nombreProvincia(){ - for(TgeneProvince provincia:lprovinces){ - if(provincia.getPk().getProvincecode().equals(record.getProvincecode())){ - record.getModifiedData().put("desprovincia", provincia.getDescription()); - - } - } - } - - /** - * Metodo para obtener la descripcion del canton - */ - public void nombreCanton(){ - for(TgeneCanton canton:lcantones){ - if(canton.getPk().getProvincecode().equals(record.getProvincecode()) && canton.getPk().getCantoncode().equals(record.getCantoncode())){ - record.getModifiedData().put("descanton", canton.getDescription()); - - } - } - } - - /** - * Metodo para obtener la descripcion de la provincia - */ - public void nombreParroquia(){ - for(TgeneParroquia parroquia:lparroquias){ - if(parroquia.getPk().getProvincecode().equals(record.getProvincecode()) && parroquia.getPk().getCantoncode().equals(record.getCantoncode()) - && parroquia.getPk().getParroquiacode().equals(record.getParroquiacode())){ - record.getModifiedData().put("desparroquia", parroquia.getDescription()); - - } - } - } - - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - openLov(params); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personLov.xhtml", options, params); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - this.record.put("dateto", personaDetailSelecionada.getPk().getDateto()); - this.record.put("personcode", personaDetailSelecionada.getPk().getPersoncode()); - this.record.put("nombre", personaDetailSelecionada.getName()); - //seteo de los codigos de persona - record.setPersoncode(personaDetailSelecionada.getPk().getPersoncode()); - record.setDateto(personaDetailSelecionada.getPk().getDateto()); - } - - - /** - * Metodo para buscar todos los centros de control - * @param ccentrocontrol - * @return - */ - public static List findAll() { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar por codigo de centro de control - * @param ccentrocontrol - * @return - */ - public static List find(String ccentrocontrol) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 15; - cc.addFilter("pk", ccentrocontrol); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para validar el campo de jefe de centro - * @param tc - */ - public void validarJefe(TarmCentroControl tc){ - System.out.println("nombre...selec..."+tc.getPersoncode()); - if(tc.getPersoncode()!=null && tc.getPersoncode()>0){ - record.getModifiedData().put("nombre", personaDetailSelecionada.getName()); - return ; - } - record.getModifiedData().put("nombre", null); - - } - - /** - * Metodo que devuelve un centro de control de armas por su codigo - * @param codigoSolicitud - * @return - */ - public static TarmCentroControl findPorCodigo(String codigo) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigo); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que devuelve un centro de control de armas por su codigo de Catalogo - * @param codigoSolicitud - * @return - */ - public static TarmCentroControl findPorCentroControl(String codigo) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("nombreinstitucion", codigo); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static TarmCentroControl findxpersoncode(String personcode) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcode", personcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo para buscar los centros de control asociados a un organismo o unidad - * @param codigoSolicitud - * @return - */ - public static List findxOrganismoUnidad(String organismo, String unidad) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("institucion", organismo); - cc.addFilter("nombreinstitucion", unidad); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar el centros de control asociado a un organismo y unidad - * @param codigoSolicitud - * @return - */ - public static TarmCentroControl findxCcontrolUnidad(String ccontrol, String unidad) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("institucion", ccontrol); - cc.addFilter("nombreinstitucion", unidad); - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar los centros de control asociados a un organismo o unidad - * @param codigoSolicitud - * @return - */ - public static List findxInstitucion(String organismo) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("institucion", organismo); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar por codigo de centro de control - * @param ccentrocontrol - * @return - */ - public static List findEstadoInst(String estado,String institucion) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("estado", estado); - cc.addFilter("institucion", institucion); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmCentroControl departamento=new TarmCentroControl(); - for(TarmCentroControl centro:cc.lrecord){ - if("DPCA".equals(centro.getNombreinstitucion())){ - departamento=centro; - } - } - cc.lrecord.remove(departamento); - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar por codigo de centro de control - * @param ccentrocontrol - * @return - */ - public static List findEstado(String estado) { - try { - CentroControlArmasController cc = new CentroControlArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("estado", estado); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmCentroControl departamento=new TarmCentroControl(); - for(TarmCentroControl centro:cc.lrecord){ - if("DPCA".equals(centro.getNombreinstitucion())){ - departamento=centro; - } - } - cc.lrecord.remove(departamento); - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public List getLinstitucion() { - return linstitucion; - } - - public void setLinstitucion(List linstitucion) { - this.linstitucion = linstitucion; - } - - public List getLnombreInstitucion() { - return lnombreInstitucion; - } - - public void setLnombreInstitucion(List lnombreInstitucion) { - this.lnombreInstitucion = lnombreInstitucion; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLgrados() { - return lgrados; - } - - public void setLgrados(List lgrados) { - this.lgrados = lgrados; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - /** - * Metodo para actualizar un bean en el record desde otros controladores - */ - public void update(TarmCentroControl bean) throws Exception { - record=bean; - super.update(); - } - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ClaseLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ClaseLovController.java.svn-base deleted file mode 100644 index 66af631..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ClaseLovController.java.svn-base +++ /dev/null @@ -1,157 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Christian Pazmino - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ClaseLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - /** - * Titulo que se le asignara al dialogo desplegado - */ - private String tituloLOV; - - public ClaseLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - tituloLOV = CallerHelper.getLovParameter("tituloLOV"); - if(tituloLOV!=null){ - MsgControlArmas.getProperty("lvh_clase"); - } - String catalogcode = CallerHelper.getLovParameter("catalogcode"); - if (catalogcode != null) { - super.addFilter("pk.catalogcode", catalogcode); - } - // Valor usado para filtro del campo legalcode de la tabla TGENECATALOGDETAIL - String legalcode = CallerHelper.getLovParameter("legalcode"); - // Valor opcional usado para filtro del campo legalcode de la tabla TGENECATALOGDETAIL - String legalcode2 = CallerHelper.getLovParameter("legalcode2"); - if (legalcode != null) { - if (legalcode2 != null) { - super.addFilter(legalcode2+" or t.legalcode", legalcode); - }else{ - super.addFilter("legalcode", legalcode); - } - } - if(tituloLOV==null && catalogcode==null && legalcode==null){ - super.addFilter("pk.catalogcode", "CLASE"); - tituloLOV=MsgControlArmas.getProperty("lvh_clase"); - } - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CLASELOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - //this.getMfilters().put("pk.catalogcode", "CLASE"); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public String getTituloLOV() { - return tituloLOV; - } - - public void setTituloLOV(String tituloLOV) { - this.tituloLOV = tituloLOV; - } - - /** - * Metodo usado para abrir el dialogo definiendo el tamano que tendra el mismo - * @param params - */ - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/claseLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ComercianteCupoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ComercianteCupoController.java.svn-base deleted file mode 100644 index 904a54e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ComercianteCupoController.java.svn-base +++ /dev/null @@ -1,472 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.lov.UnidadTipoLovController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmUnidTipo. - * - * @author C.P. - * @version 2 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ComercianteCupoController extends AbstractController { - - private List ltiposRegistro; - - private String descripcionClase; - private String descripcionTipoArma; - - private String nombreComerciante; - private String numeroDocumento; - - //variables para el popup - private String nombreComercianteDialog; - private String numeroDocumentoDialog; - private String descripcionClaseDialog; - private String descripcionTipoArmaDialog; - private String descripcionUnidadMedida; - private BigDecimal cupoAsignado; - private Boolean regEditar; - - - public ComercianteCupoController() throws Exception { - super(TarmComercianteCupo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "COMCUOP"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); -// dto.setOrderby("t.description"); nombre identification desclasearma destipoarma desunidad destiporegistro - - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcodigo and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcodigo)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identification", "i.pk.personcode = t.personcodigo and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcodigo)"); - SubQuery sclasearma= new SubQuery - ("TgeneCatalogDetail", "description", "desclasearma", "i.pk.catalog = t.clase and i.pk.catalogcode=t.clasecodigo"); - SubQuery stipoarma= new SubQuery - ("TgeneCatalogDetail", "description", "destipoarma", "i.pk.catalog = t.tipoarmaexplosivo and i.pk.catalogcode=t.tipoarmaexplosivocodigo"); - SubQuery sunidad= new SubQuery - ("TgeneCatalogDetail", "description", "desunidad", "i.pk.catalog = t.unidadmedidapeso and i.pk.catalogcode=t.unidadmedidapesocodigo"); - SubQuery stiporegistro= new SubQuery - ("TgeneCatalogDetail", "description", "destiporegistro", "i.pk.catalog = t.tiporegistro and i.pk.catalogcode=t.tiporegistrocodigo"); - dto.addSubQuery(snombre); - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(stipoarma); - dto.addSubQuery(sclasearma); - dto.addSubQuery(sunidad); - dto.addSubQuery(stiporegistro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp - .get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Crea una instancia del registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - cupoAsignado=new BigDecimal(0); - regEditar=Boolean.FALSE; - nombreComercianteDialog=null; - numeroDocumentoDialog=null; - descripcionClaseDialog=null; - descripcionTipoArmaDialog=null; - descripcionUnidadMedida=null; - super.create(); - this.record.setFecharegistro(new Timestamp(new Date().getTime())); - if(ltiposRegistro==null || ltiposRegistro.size()==0){ - ltiposRegistro=CatalogDetailController.find("TIPOREGISTRO"); - } - } - - @Override - public void update() throws Exception { - if(record.getPersoncodigo()!=null){ - if(record.getClase()!=null && record.getClase().trim().length()>0){ - this.record.setTiporegistrocodigo("TIPOREGISTRO"); - if(record.getCupounidad().compareTo(new BigDecimal(0))>0 && record.getCupounidad().compareTo(cupoAsignado)>=0){ - if(!regEditar){ - catalogos(ltiposRegistro, record.getTiporegistro(), "destiporegistro"); - } - super.update(); - }else{ - if(!regEditar){ - MessageHelper.setMessageError("EL CUPO DEDE SER MAYOR A CERO"); - }else{ - MessageHelper.setMessageError("EL CUPO DEDE SER MAYOR AL ASIGNADO INICIALMENTE"); - } - - } - }else{ - MessageHelper.setMessageError("SELECCIONE LA CLASE"); - } - }else{ - MessageHelper.setMessageError("SELECCIONE EL No. DE DOCUMENTO"); - } - - } - - public void updateSimple(TarmComercianteCupo bean) throws Exception { - record=bean; - super.update(); - } - - /** - * Metodo para cargar las variables para editar - */ - public void loadEdit() { - regEditar=Boolean.TRUE; - cupoAsignado=record.getCupounidad(); - nombreComercianteDialog=record.getModifiedData().get("nombre").toString(); - numeroDocumentoDialog=record.getModifiedData().get("identification").toString(); - descripcionClaseDialog=record.getModifiedData().get("desclasearma").toString(); - descripcionTipoArmaDialog=record.getModifiedData().get("destipoarma").toString(); - descripcionUnidadMedida=record.getModifiedData().get("desunidad").toString(); - // destiporegistro - } - - /** - * Metodo para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * - * @param catalogcode - * Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String code) { - try { - ComercianteCupoController cc = new ComercianteCupoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", code); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Devuelve la lista de cupos de una persona - * @param catalogcode - */ - public static List findByPersonCode(String personCode, String classCode, String tipoArmaExplosivoCodigo, String unidad) { - try { - ComercianteCupoController cc = new ComercianteCupoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcodigo", personCode); - cc.addFilter("clase", classCode); - cc.addFilter("tipoarmaexplosivo", tipoArmaExplosivoCodigo); - cc.addFilter("unidadmedidapeso", unidad); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - //lov de persona - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - nombreComerciante=personaDetailSelecionada.getName(); - numeroDocumento=personaDetailSelecionada.getIdentification(); - super.getMfilters().put("personcodigo", personaDetailSelecionada.getPk().getPersoncode().toString()); - } - - /** - * Maneja la respuesta del Lov de Personas que se ejecuta desde el dialog de comerciante cupo - * @param event - * @throws Exception - */ - public void onReturnPersonLovDialog(SelectEvent event) throws Exception { - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - nombreComercianteDialog=personaDetailSelecionada.getName(); - numeroDocumentoDialog=personaDetailSelecionada.getIdentification(); - record.setPersoncodigo(personaDetailSelecionada.getPk().getPersoncode()); - record.getModifiedData().put("nombre", personaDetailSelecionada.getName()); - record.getModifiedData().put("identification", personaDetailSelecionada.getIdentification()); - - } - - - //lov de UnidadTipo - /** - * Método para abrir el lov de UnidadTipo - */ - public void openUnidadTipoLov() { - Map> params = new HashMap<>(); - UnidadTipoLovController.openLov(params); - } - - /** - * Return del LOV de UnidadTipo - * @param event - * @throws Exception - */ - public void onReturnUnidadTipoLov(SelectEvent event) throws Exception { - TarmUnidadTipo t = (TarmUnidadTipo) event.getObject(); - super.getMfilters().put("clase", t.getPk().getClase()); - super.getMfilters().put("clasecodigo", t.getPk().getClasecode()); - super.getMfilters().put("tipoarmaexplosivo", t.getPk().getTipoarmaexplosivo()); - super.getMfilters().put("tipoarmaexplosivocodigo", t.getPk().getTipoarmaexplosivocodigo()); - descripcionClase=t.getModifiedData().get("desclasearma").toString(); - descripcionTipoArma=t.getModifiedData().get("destipoarma").toString(); - } - - /** - * Return del LOV de UnidadTipo ejecutado desde el Dialog - * @param event - * @throws Exception - */ - public void onReturnUnidadTipoLovDialog(SelectEvent event) throws Exception { - TarmUnidadTipo t = (TarmUnidadTipo) event.getObject(); - record.setClase(t.getPk().getClase()); - record.setClasecodigo(t.getPk().getClasecode()); - record.setTipoarmaexplosivo(t.getPk().getTipoarmaexplosivo()); - record.setTipoarmaexplosivocodigo( t.getPk().getTipoarmaexplosivocodigo()); - record.setUnidadmedidapeso(t.getPk().getUnidadmedidapeso()); - record.setUnidadmedidapesocodigo(t.getPk().getUnidadmedidapesocodigo()); - descripcionClaseDialog=t.getModifiedData().get("desclasearma").toString(); - descripcionTipoArmaDialog=t.getModifiedData().get("destipoarma").toString(); - descripcionUnidadMedida=t.getModifiedData().get("desunidad").toString(); - record.getModifiedData().put("desclasearma", t.getModifiedData().get("desclasearma").toString()); - record.getModifiedData().put("destipoarma", t.getModifiedData().get("destipoarma").toString()); - record.getModifiedData().put("desunidad", t.getModifiedData().get("desunidad").toString()); - } - - - - public String getDescripcionClase() { - return descripcionClase; - } - - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - public String getDescripcionTipoArma() { - return descripcionTipoArma; - } - - public void setDescripcionTipoArma(String descripcionTipoArma) { - this.descripcionTipoArma = descripcionTipoArma; - } - - public String getNombreComerciante() { - return nombreComerciante; - } - - public void setNombreComerciante(String nombreComerciante) { - this.nombreComerciante = nombreComerciante; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getNombreComercianteDialog() { - return nombreComercianteDialog; - } - - public void setNombreComercianteDialog(String nombreComercianteDialog) { - this.nombreComercianteDialog = nombreComercianteDialog; - } - - public String getNumeroDocumentoDialog() { - return numeroDocumentoDialog; - } - - public void setNumeroDocumentoDialog(String numeroDocumentoDialog) { - this.numeroDocumentoDialog = numeroDocumentoDialog; - } - - public String getDescripcionClaseDialog() { - return descripcionClaseDialog; - } - - public void setDescripcionClaseDialog(String descripcionClaseDialog) { - this.descripcionClaseDialog = descripcionClaseDialog; - } - - public String getDescripcionTipoArmaDialog() { - return descripcionTipoArmaDialog; - } - - public void setDescripcionTipoArmaDialog(String descripcionTipoArmaDialog) { - this.descripcionTipoArmaDialog = descripcionTipoArmaDialog; - } - - public String getDescripcionUnidadMedida() { - return descripcionUnidadMedida; - } - - public void setDescripcionUnidadMedida(String descripcionUnidadMedida) { - this.descripcionUnidadMedida = descripcionUnidadMedida; - } - - public List getLtiposRegistro() { - return ltiposRegistro; - } - - public void setLtiposRegistro(List ltiposRegistro) { - this.ltiposRegistro = ltiposRegistro; - } - - public Boolean getRegEditar() { - return regEditar; - } - - public void setRegEditar(Boolean regEditar) { - this.regEditar = regEditar; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/DatosParaSancionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/DatosParaSancionesController.java.svn-base deleted file mode 100644 index ca732a3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/DatosParaSancionesController.java.svn-base +++ /dev/null @@ -1,543 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmTipoSancion; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmTipoSancion. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DatosParaSancionesController extends AbstractController { - - /** - * Lista de tipos de tramites a ser seleccionados por el usuario (Autorizacion, Permiso) - */ - private List tramiteList; - /** - * Lista de tipos de faltas a ser seleccionadados por el usuario (Leve, Grave, etc) - */ - private List tipoDeFaltaList; - /** - * Lista de tipos de sanciones a ser seleccionados por el usuario (Suspencion, Decomiso, etc) - */ - private List sancionList; - /** - * Lista de periodos en dias que durara la sancion (180 dias, 270 dias, etc) - */ - private List tiempoList; - /** - * Codigo de la clase seleccionada por el usuario - */ - private String claseFiltroStr; - /** - * Variable que indica si el usuario esta negado para continuar en la pantalla - */ - private Boolean esEdicionBln; - /** - * Constante usada para referirse al catalogo de tipo de falta - */ - private final String TIPOFALTACODIGO = "TIPODEFALTA"; - /** - * Constante usada para referirse al catalogo de vigencia en dias - */ - private final String TIEMPOCODIGO = "VIGENCIADIAS"; - /** - * Constante usada para referirse al catalogo de sanciones - */ - private final String SANCIONCODIGO = "SANCION"; - /** - * Constante usada para referirse al catalogo de tipo autorizacion - */ - private final String TRAMITECODIGO = "TIPOAUTORIZACION"; - - public DatosParaSancionesController() throws Exception { - super(TarmTipoSancion.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - record = new TarmTipoSancion(); - tipoDeFaltaList = CatalogDetailController.find("TIPODEFALTA"); - tramiteList = CatalogFilterLovController.findTramiteSancion(); - tiempoList = CatalogDetailController.find("VIGENCIADIAS"); - sancionList = CatalogDetailController.find("SANCION"); - esEdicionBln = Boolean.FALSE; - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "DATOSPARASANCION"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo utilizado al escoger tipo de falta - */ - public void changeTipoFalta() { - for (TgeneCatalogDetail r : tipoDeFaltaList) { - if (r.getPk().getCatalog().compareTo(record.getTipofalta()) == 0) { - record.put("ntipoFalta", r.getDescription()); - break; - } - } - record.setTipofaltacodigo(TIPOFALTACODIGO); - } - - /** - * Metodo utilizado al escoger tramite - */ - public void changeTramite() { - for (TgeneCatalogDetail r : tramiteList) { - if (r.getPk().getCatalog().compareTo(record.getTramite()) == 0) { - record.put("ntramite", r.getDescription()); - break; - } - } - record.setTramitecodigo(TRAMITECODIGO); - } - - /** - * Metodo utilizado al escoger sancion - */ - public void changeSancion() { - for (TgeneCatalogDetail r : sancionList) { - if (r.getPk().getCatalog().compareTo(record.getSancion()) == 0) { - record.put("nsancion", r.getDescription()); - break; - } - } - record.setSancioncodigo(SANCIONCODIGO); - } - - /** - * Metodo utilizado al escoger tiempo - */ - public void changeTiempo() { - for (TgeneCatalogDetail r : tiempoList) { - if (r.getPk().getCatalog().compareTo(record.getTiempo()) == 0) { - record.put("ntiempo", r.getDescription()); - break; - } - } - record.setTiempocodigo(TIEMPOCODIGO); - } - - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como - * nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); -// if(!esEdicionBln){ -// record.setNumeropregunta(null); -// }else{ -// record.setNumeropregunta(record.getNumeropregunta()); -// } - esEdicionBln = Boolean.FALSE; - super.addField("claseDescriptionD", null); - super.addField("faltaDescriptionD", null); - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - // Subquery - SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", "description", "nclase", "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryFalta = new SubQuery("TgeneCatalogDetail", "description", "nfalta", "i.pk.catalog = t.falta and i.pk.catalogcode = t.faltacodigo"); - dto.addSubQuery(subqueryFalta); - - SubQuery subqueryTipoFalta = new SubQuery("TgeneCatalogDetail", "description", "ntipoFalta", "i.pk.catalog = t.tipofalta and i.pk.catalogcode = t.tipofaltacodigo"); - dto.addSubQuery(subqueryTipoFalta); - - SubQuery subqueryTramite = new SubQuery("TgeneCatalogDetail", "description", "ntramite", "i.pk.catalog = t.tramite and i.pk.catalogcode = t.tramitecodigo"); - dto.addSubQuery(subqueryTramite); - - SubQuery subquerySancion = new SubQuery("TgeneCatalogDetail", "description", "nsancion", "i.pk.catalog = t.sancion and i.pk.catalogcode = t.sancioncodigo"); - dto.addSubQuery(subquerySancion); - - SubQuery subqueryTiempo = new SubQuery("TgeneCatalogDetail", "description", "ntiempo", "i.pk.catalog = t.tiempo and i.pk.catalogcode = t.tiempocodigo"); - dto.addSubQuery(subqueryTiempo); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo usado para abrir el dialogo de falta en de la pantalla crear/editar - */ - public void openFaltaDialogLov() { - try { - if(this.record.getClase()!=null){ - Map> params = new HashMap<>(); - //Codigo de catalogcode - List lcatalogcode = new ArrayList<>(); - lcatalogcode.add("FALTA"); - params.put("catalogcode", lcatalogcode); - //tITULO DEL LOV - List ltituloLOV = new ArrayList<>(); - ltituloLOV.add("lov_falta"); - params.put("tituloLOV", ltituloLOV); - //Filtro - List lfiltro = new ArrayList<>(); - - if(this.record.getClase().equals("0010000001")||this.record.getClase().equals("0010000002")){ - //Filtro para armas de fuego y municiones - lfiltro.add("t.legalcode = 'ARMASYMUNICIONES'"); - }// - else if(this.record.getClase().equals("0010000003")||this.record.getClase().equals("0010000007")){ - //Filtro para explosivos y pirotecnicos - lfiltro.add("t.legalcode = 'EXPLOSIVOSYPIROTECNICOS'"); - } - else if(this.record.getClase().equals("0010000004")){ - //Filtro para accesorios - lfiltro.add("t.legalcode = 'ACCESORIOS'"); - } - else if(this.record.getClase().equals("0010000006")){ - //Filtro para accesorios - lfiltro.add("t.legalcode = 'ACCESORIOS'"); - } - params.put("filtro", lfiltro); - CatalogFilterLovController.openLov(params); - //ClaseLovController.openLov(params); - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo de consulta de datos para sanciones segun la clase pasada como parametro - */ - public static List find(String clase) { - try { - DatosParaSancionesController cc = new DatosParaSancionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo de consulta de dato para sancion segun la clave primaria pasada como parametro - */ - public static TarmTipoSancion findxPk(String pk) { - try { - DatosParaSancionesController cc = new DatosParaSancionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", pk); - - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo usado para abrir el dialogo de seleccionar falta en de la pantalla principal - */ - public void openFaltaLov() { - try { - if(claseFiltroStr!=null){ - Map> params = new HashMap<>(); - //Codigo de catalogcode - List lcatalogcode = new ArrayList<>(); - lcatalogcode.add("FALTA"); - params.put("catalogcode", lcatalogcode); - //tITULO DEL LOV - List ltituloLOV = new ArrayList<>(); - ltituloLOV.add("lov_falta"); - params.put("tituloLOV", ltituloLOV); - //Filtro - List lfiltro = new ArrayList<>(); - - if(claseFiltroStr.equals("0010000001")||claseFiltroStr.equals("0010000002")){ - //Filtro para armas de fuego y municiones - lfiltro.add("t.legalcode = 'ARMASYMUNICIONES'"); - }// - else if(claseFiltroStr.equals("0010000003")||claseFiltroStr.equals("0010000007")){ - //Filtro para explosivos y pirotecnicos - lfiltro.add("t.legalcode = 'EXPLOSIVOSYPIROTECNICOS'"); - } - else if(claseFiltroStr.equals("0010000004")){ - //Filtro para accesorios - lfiltro.add("t.legalcode = 'ACCESORIOS'"); - } - else if(claseFiltroStr.equals("0010000006")){ - //Filtro para accesorios - lfiltro.add("t.legalcode = 'ACCESORIOS'"); - } - params.put("filtro", lfiltro); - CatalogFilterLovController.openLov(params); - //ClaseLovController.openLov(params); - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar falta de la pantalla principal - */ - public void onReturnFaltaLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addFilter("falta", t.getPk().getCatalog()); - super.addFilter("faltacodigo", t.getPk().getCatalogcode()); - super.addField("faltaDescription", t.getDescription()); - this.query(); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar falta de la pantalla crear/editar - */ - public void onReturnFaltaDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addField("faltaDescriptionD", t.getDescription()); - this.record.setFalta(t.getPk().getCatalog()); - this.record.setFaltacodigo(t.getPk().getCatalogcode()); - record.put("nfalta", t.getDescription()); - } - - /** - * Metodo usado para abrir el dialogo de seleccionar clase en de la pantalla principal - */ - public void openClaseLov() { - try { - Map> params = new HashMap<>(); - //Codigo de catalogcode - List lcatalogcode = new ArrayList<>(); - lcatalogcode.add("CLASE"); - params.put("catalogcode", lcatalogcode); - //tITULO DEL LOV - List ltituloLOV = new ArrayList<>(); - ltituloLOV.add("lvh_clase"); - params.put("tituloLOV", ltituloLOV); - //Filtro -// List lfiltro = new ArrayList<>(); -// lfiltro.add("t.pk.catalog in ('0010000001','0010000002','0010000003','0010000007','0010000004','0010000006')"); -// params.put("filtro", lfiltro); - CatalogFilterLovController.openLov(params); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar clase de la pantalla principal - */ - public void onReturnClaseLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - claseFiltroStr = t.getPk().getCatalog(); - super.addFilter("clase", t.getPk().getCatalog()); - super.addFilter("clasecodigo", t.getPk().getCatalogcode()); - super.addField("claseDescription", t.getDescription()); - this.query(); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar clase de la pantalla crear/editar - */ - public void onReturnClaseDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addField("claseDescriptionD", t.getDescription()); - super.addField("faltaDescriptionD", null); - record.setFalta(null); - this.record.setClase(t.getPk().getCatalog()); - this.record.setClasecodigo(t.getPk().getCatalogcode()); - record.put("nclase", t.getDescription()); - } - - @Override - public void update() throws Exception { - if(record.getClase()!=null){ - if(record.getFalta()!=null){ - super.update(); - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_faltaRequerido")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_claseRequerido")); - } - } - - /** - * Metodo que actualiza las descripciones seleccionadas en el dialogo crear/editar a la variable record y marca una bandera ser edicion - */ - public void actualizar(){ - esEdicionBln = Boolean.TRUE; - super.addField("claseDescriptionD", record.get("nclase")); - super.addField("faltaDescriptionD", record.get("nfalta")); - } - - public List getTramiteList() { - return tramiteList; - } - - public void setTramiteList(List tramiteList) { - this.tramiteList = tramiteList; - } - - public List getTipoDeFaltaList() { - return tipoDeFaltaList; - } - - public void setTipoDeFaltaList(List tipoDeFaltaList) { - this.tipoDeFaltaList = tipoDeFaltaList; - } - - public List getSancionList() { - return sancionList; - } - - public void setSancionList(List sancionList) { - this.sancionList = sancionList; - } - - public List getTiempoList() { - return tiempoList; - } - - public void setTiempoList(List tiempoList) { - this.tiempoList = tiempoList; - } - - public Boolean getEsEdicionBln() { - return esEdicionBln; - } - - public void setEsEdicionBln(Boolean esEdicionBln) { - this.esEdicionBln = esEdicionBln; - } - - public String getClaseFiltroStr() { - return claseFiltroStr; - } - - public void setClaseFiltroStr(String claseFiltroStr) { - this.claseFiltroStr = claseFiltroStr; - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoController.java.svn-base deleted file mode 100644 index 926b495..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoController.java.svn-base +++ /dev/null @@ -1,666 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.solicitud.DecomisoArmaTransaccionController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.armas.solicitud.PlanificacionInspeccionController; -import com.fp.frontend.controller.armas.solicitud.SolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.TarmSolicitudTramiteController; -import com.fp.frontend.controller.armas.solicitud.TarmTramiteController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesDescController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.validators.DocFirmaValidator; -import com.fp.mail.Mail; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * Clase controladora para firmar documentos. - * - * @author Carlos Guzman. - * @modificacion David Cruz - * @modificacion Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class FirmarDocumentoController extends AbstractController { - - private String xpathflujo; - private String xpath; - private String numerotransaccion; - private String numerosolicitud; - private String cplanificacion; - private String creporte; - private String appletCoordenadallx=""; - private String appletCoordenadally=""; - private String appletCoordenadaurx=""; - private String appletCoordenadaury=""; - private String appletLugar=""; - private String appletFirma=""; - private UploadedFile uploadedFile; - private TsafeUserDetail userDetail; - private boolean mensajeGuardar=false; - private boolean mensajeNoFirma=false; - private String btnFlujo; - private TarmSolicitud solicitud; - TarmPlanificacionInspeccion planificacionInspeccion=null; - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - @ManagedProperty(value="#{personAddressController}") - private PersonAddressController personAddress; - @ManagedProperty(value = "#{decomisoArmaTransaccionController}") - private DecomisoArmaTransaccionController decomisoArmaTransaccionController; - - // Variables para envio de mail - - private String funcionarioStr; - private String razonsStr; - private String tramiteStr; - private String centrocontrolStr; - private String fechanotificacionStr; - private String tipoTramiteStr; - private String tipoAutorizacionStr; - private String usoactividadStr; - private String categoriaStr; - /** - * Constructor - * @throws Exception - */ - public FirmarDocumentoController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - numerotransaccion=super.getMfilters().get("numerotransaccion"); - numerosolicitud=super.getMfilters().get("csolicitud"); - creporte=super.getMfilters().get("creporte"); - cplanificacion=super.getMfilters().get("cplanificacion"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - if(userDetail.getPk().getPersoncode()!=null){ - appletFirma = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName() + " " + (new Timestamp(new Date().getTime())).toString().split("\\.")[0]; - if(creporte!=null && !creporte.equals("null")){ - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); - List provinceList = ProvinceController.findPorCodigo("EC", tcustPersonAddres.getProvincecode()); - appletLugar = provinceList.get(0).getDescription(); - } - } - else{ - appletFirma = ""; - } - if(numerosolicitud!=null &&!numerosolicitud.equals("null") && numerosolicitud.trim().length()>0){ - solicitud = SolicitudArmasController.find(numerosolicitud); - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); - appletLugar = lciudades.get(0).getDescription(); - }else if(numerotransaccion!=null && !numerotransaccion.equals("null")){ - TarmDecomisoArmaTransaccion decomisoArmaTransaccion= DecomisoArmaTransaccionController.find(numerotransaccion); - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(decomisoArmaTransaccion.getCcentrocontrol()); - List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); - appletLugar = lciudades.get(0).getDescription(); - }else if(cplanificacion!=null && !cplanificacion.equals("null")){ - planificacionInspeccion= PlanificacionInspeccionController.findPorCodigo(Long.parseLong(cplanificacion)); - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(planificacionInspeccion.getCcentrocontrol()); - List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); - appletLugar = lciudades.get(0).getDescription(); - } - - System.out.println("xpath .."+xpathflujo); - obtenerXpath(); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para opbtener el xpath de alfresco - */ - private void obtenerXpath() { - // TODO Auto-generated method stub - TarmDocumentoHabilitante documentohabilitante = new TarmDocumentoHabilitante(); - xpathflujo=super.getMfilters().get("xpath");//formato de archivo "cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - - if(MsgControlArmas.getProperty("xpathFujoDocumentoHabilitante").equalsIgnoreCase(xpathflujo) || xpathflujo==null || xpathflujo.isEmpty() || xpathflujo.equals("null")){ - if(numerosolicitud!=null && !numerosolicitud.equals("null")){ - documentohabilitante = DocumentoHabilitanteController.findPorSolicitud(numerosolicitud); - xpathflujo = documentohabilitante.getXpath(); - } - } - if(planificacionInspeccion!=null && (xpathflujo==null || xpathflujo.isEmpty() || xpathflujo.equals("null") || xpathflujo.trim().length()==0)){ - xpathflujo=planificacionInspeccion.getXpath(); - } - xpath=xpathflujo.substring( 0, xpathflujo.lastIndexOf("/cm:")); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "FIRMARDOCUMENTO"; - btnFlujo=null; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo que analiza si el archivo tiene la extension permitida - * @param nombreArchivo - * @return - */ - public Boolean esExtensionDeArchivoPermitida(String nombreArchivo){ - String[]archivosPermitidosLst = {".pdf"}; - for(String extensionValida:archivosPermitidosLst){ - if(nombreArchivo.contains(extensionValida)){ - return Boolean.TRUE; - } - } - return Boolean.FALSE; - } - - /** - * Metodo para grabar el documento en alfresco - */ - public void saveWithDocumentAlfresco() { - try { - - if(uploadedFile!=null && esExtensionDeArchivoPermitida(uploadedFile.getFileName())){ - - if(!uploadedFile.getFileName().equals(xpathflujo.substring( xpathflujo.lastIndexOf(":") + 1,xpathflujo.length()))){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nombrearchivo_xpath")); - return; - } - alfrescoController.uploadFile(uploadedFile.getInputstream(),xpathflujo.substring( xpathflujo.lastIndexOf(":") + 1,xpathflujo.length()), xpath); - //completa la tarea - //completarTarea(); - btnFlujo="ok"; - - } - else if(uploadedFile==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinarchivo")); - return; - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo_firma")); - return; - } - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo_firma")); - e.printStackTrace(); - return; - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo")); - e.printStackTrace(); - } - - } - - - - - - public void guardarRegistro() { - -} - -// /** -// * Metodo para finalizar la tarea del flujo -// */ -// public void completarTarea() { -// -// try { -// BigDecimal numeroCustodios = new BigDecimal("0"); -// if(this.solicitud.getNumerocustodios()!=null){ -// numeroCustodios = new BigDecimal(this.solicitud.getNumerocustodios()); -// } -// if(numeroCustodios.compareTo(new BigDecimal("0"))==0 && this.getLoginController().getRequest().getTransactionCode()==109){ -// this.envioCorreoDocumentoAdjunto(); -// } -// -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } -// } - - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cplanificacion", cplanificacion); - request.modifiedData().put("numerotransaccion", numerotransaccion); - request.modifiedData().put("xpath", xpathflujo); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", "A" ); // A,D,R - request.modifiedData().put("BPMObs","OK" ); - - //Actualiza el campo estadofirma en la tabla TARMDECOMISOARMATRANSACCION - if(this.getLoginController().getRequest().getTransactionCode()==94){ - TarmDecomisoArmaTransaccion armaTransaccion = DecomisoArmaTransaccionController.find(numerotransaccion); - this.decomisoArmaTransaccionController.setRecord(armaTransaccion); - this.decomisoArmaTransaccionController.getRecord().setEstadofirma("Y"); - this.decomisoArmaTransaccionController.update(); - - DtoSave dtosaveDecomisoTran = this.decomisoArmaTransaccionController.getDtoSave(true); - dtosaveDecomisoTran.setReturnpk(true); - dtosaveDecomisoTran.setPosition(1); - msave.put(decomisoArmaTransaccionController.getBeanalias(), dtosaveDecomisoTran); - }else if(this.getLoginController().getRequest().getTransactionCode()==109){ - Map datosmail = new HashMap(); - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - SimpleDateFormat sdf1 = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - TarmSolicitudTramite solicitudTramite =TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - // Variables para envio de mail - funcionarioStr=persona ==null?"":((persona.getMilitarygrade()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),"MILITARYGRADE").getDescription()) + " " + persona.getName(); - razonsStr=(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre").toString(); - tramiteStr=solicitudTramite.getNumerotramite(); - //El centro de control se saca de la solicitud donde inicio el tramite - TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - if(centroControlObj!=null && centroControlObj.getNombreinstitucion()!=null && centroControlObj.getNombreinstitucioncodigo()!=null){ - centrocontrolStr= CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(), centroControlObj.getNombreinstitucioncodigo()).getDescription();; - } - fechanotificacionStr=sdf1.format(new Date()); - TarmTramite tramiteObj =TarmTramiteController.find(String.valueOf(solicitud.getCtramite())); - tipoTramiteStr=(tramiteObj==null || tramiteObj.getModifiedData().get("tipotramite")==null)?"":tramiteObj.getModifiedData().get("tipotramite").toString(); - tipoAutorizacionStr=(tramiteObj==null || tramiteObj.getModifiedData().get("tipoautorizacion")==null)?"":tramiteObj.getModifiedData().get("tipoautorizacion").toString(); - usoactividadStr=(tramiteObj==null || tramiteObj.getModifiedData().get("usoactividad")==null)?"":tramiteObj.getModifiedData().get("usoactividad").toString(); - categoriaStr=(tramiteObj==null || tramiteObj.getModifiedData().get("categoria")==null)?"":tramiteObj.getModifiedData().get("categoria").toString(); - - datosmail.put("funcionario",funcionarioStr); - datosmail.put("razons",razonsStr); - datosmail.put("tramite",tramiteStr); - datosmail.put("centrocontrol",centrocontrolStr); - datosmail.put("fechanotificacion",fechanotificacionStr); - datosmail.put("tipoTramite",tipoTramiteStr); - datosmail.put("tipoAutorizacion",tipoAutorizacionStr); - datosmail.put("usoactividad",usoactividadStr); - datosmail.put("categoria",categoriaStr); - request.modifiedData().put("datosmail", datosmail); - } - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.decomisoArmaTransaccionController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - BigDecimal numeroCustodios = new BigDecimal("0"); - if(this.solicitud!=null && this.solicitud.getNumerocustodios()!=null){ - numeroCustodios = new BigDecimal(this.solicitud.getNumerocustodios()); - } - if(numeroCustodios !=null && numeroCustodios.compareTo(new BigDecimal("0"))==0 && this.getLoginController().getRequest().getTransactionCode()==109){ - this.envioCorreoDocumentoAdjunto(); - } - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - btnFlujo=null; - - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Envía el correo de cambio de email - * @throws Exception - */ - private void envioCorreoDocumentoAdjunto() throws Exception{ - Mail m = new Mail(); - m.config(ParametersController.find("MAIL.FROM", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.SERVER", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.PORT", "1").getNumbervalue().intValue(), - ParametersController.find("MAIL.SMTP.USER", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.PASSWORD", "1").getTextvalue(), - Boolean.valueOf(ParametersController.find("MAIL.SMTP.AUTH", "1").getTextvalue()), - Boolean.valueOf(ParametersController.find("MAIL.SMTPS", "1").getTextvalue())); - TcustPersonAddress mail = personAddress.findPersonaPorDireccionTipoCatalogo(solicitud.getPersoncode().toString(), "3"); - m.setTo(personAddress.getRecord().getAddress()); - MessageTemplatesController message = new MessageTemplatesController(); - message.addFilter("pk", "64"); - message.query(); - if(message.getLrecord() != null && !message.getLrecord().isEmpty()){ - TgeneMessageTemplates asunto = message.getLrecord().get(0); - MessageTemplatesDescController content = new MessageTemplatesDescController(); - content.addFilter("pk.code", "64"); - content.addFilter("pk.languagecode", "ES"); - content.query(); - if(content.getLrecord() != null && !content.getLrecord().isEmpty()){ - TgeneMessageTemplatesDesc descripcionContenido = content.getLrecord().get(0); - m.setSubject(asunto.getDescription()); - String sw = descripcionContenido.getTemplate(); - // Reemplazar variables de la plantilla en mail - sw=sw.replace("$request.funcionario", this.funcionarioStr); - sw=sw.replace("$request.razons", this.razonsStr) ; - sw=sw.replace("$request.tramite", this.tramiteStr) ; - sw=sw.replace("$request.centrocontrol", this.centrocontrolStr) ; - sw=sw.replace("$request.fechanotificacion", this.fechanotificacionStr) ; - sw=sw.replace("$request.tipoTramite", this.tipoTramiteStr) ; - sw=sw.replace("$request.tipoAutorizacion", this.tipoAutorizacionStr) ; - sw=sw.replace("$request.usoactividad", this.usoactividadStr) ; - sw=sw.replace("$request.categoria", this.categoriaStr) ; - m.setCuerpoMail(sw.toString()); - m.setContentMessageType("text/html"); - // Descargar el documento habilitante a adjuntar - byte[] bytes = alfrescoController.downloadReturnDocument(this.xpathflujo); - m.addAttachment("documento.pdf", bytes, "application/pdf"); -// m.addAttachment("Documento Habilitante","C:\\Users\\JALVARADO\\Downloads\\DOC-000362250.pdf"); - m.send(); - } - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){} - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - - public String getXpath() { - return xpath; - } - - public void setXpath(String xpath) { - this.xpath = xpath; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public void upload(FileUploadEvent event) { - uploadedFile = event.getFile(); - try { - boolean isValid = DocFirmaValidator.validDocSign(uploadedFile.getInputstream()); - if(isValid){ - mensajeNoFirma = false; - mensajeGuardar = true; - - }else{ - uploadedFile = null; - btnFlujo=null; - mensajeNoFirma = true; - mensajeGuardar = false; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinfirmararchivo")); - } - } catch (IOException e) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinfirmararchivo")); - } - - } - - public String getAppletCoordenadallx() { - return appletCoordenadallx; - } - - public void setAppletCoordenadallx(String appletCoordenadallx) { - this.appletCoordenadallx = appletCoordenadallx; - } - - public String getAppletCoordenadally() { - return appletCoordenadally; - } - - public void setAppletCoordenadally(String appletCoordenadally) { - this.appletCoordenadally = appletCoordenadally; - } - - public String getAppletCoordenadaurx() { - return appletCoordenadaurx; - } - - public void setAppletCoordenadaurx(String appletCoordenadaurx) { - this.appletCoordenadaurx = appletCoordenadaurx; - } - - public String getAppletCoordenadaury() { - return appletCoordenadaury; - } - - public boolean isMensajeGuardar() { - return mensajeGuardar; - } - - public void setMensajeGuardar(boolean mensajeGuardar) { - this.mensajeGuardar = mensajeGuardar; - } - - public void setAppletCoordenadaury(String appletCoordenadaury) { - this.appletCoordenadaury = appletCoordenadaury; - } - - public String getAppletLugar() { - return appletLugar; - } - - public void setAppletLugar(String appletLugar) { - this.appletLugar = appletLugar; - } - - public String getAppletFirma() { - return appletFirma; - } - - public void setAppletFirma(String appletFirma) { - this.appletFirma = appletFirma; - } - - public String getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(String btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public PersonAddressController getPersonAddress() { - return personAddress; - } - - public void setPersonAddress(PersonAddressController personAddress) { - this.personAddress = personAddress; - } - - public DecomisoArmaTransaccionController getDecomisoArmaTransaccionController() { - return decomisoArmaTransaccionController; - } - - public void setDecomisoArmaTransaccionController( - DecomisoArmaTransaccionController decomisoArmaTransaccionController) { - this.decomisoArmaTransaccionController = decomisoArmaTransaccionController; - } - - public String getFuncionarioStr() { - return funcionarioStr; - } - - public void setFuncionarioStr(String funcionarioStr) { - this.funcionarioStr = funcionarioStr; - } - - public String getRazonsStr() { - return razonsStr; - } - - public void setRazonsStr(String razonsStr) { - this.razonsStr = razonsStr; - } - - public String getTramiteStr() { - return tramiteStr; - } - - public void setTramiteStr(String tramiteStr) { - this.tramiteStr = tramiteStr; - } - - public String getCentrocontrolStr() { - return centrocontrolStr; - } - - public void setCentrocontrolStr(String centrocontrolStr) { - this.centrocontrolStr = centrocontrolStr; - } - - public String getFechanotificacionStr() { - return fechanotificacionStr; - } - - public void setFechanotificacionStr(String fechanotificacionStr) { - this.fechanotificacionStr = fechanotificacionStr; - } - - public String getTipoTramiteStr() { - return tipoTramiteStr; - } - - public void setTipoTramiteStr(String tipoTramiteStr) { - this.tipoTramiteStr = tipoTramiteStr; - } - - public String getTipoAutorizacionStr() { - return tipoAutorizacionStr; - } - - public void setTipoAutorizacionStr(String tipoAutorizacionStr) { - this.tipoAutorizacionStr = tipoAutorizacionStr; - } - - public String getUsoactividadStr() { - return usoactividadStr; - } - - public void setUsoactividadStr(String usoactividadStr) { - this.usoactividadStr = usoactividadStr; - } - - public String getCategoriaStr() { - return categoriaStr; - } - - public void setCategoriaStr(String categoriaStr) { - this.categoriaStr = categoriaStr; - } - - public boolean isMensajeNoFirma() { - return mensajeNoFirma; - } - - public void setMensajeNoFirma(boolean mensajeNoFirma) { - this.mensajeNoFirma = mensajeNoFirma; - } - - - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoFiscaliaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoFiscaliaController.java.svn-base deleted file mode 100644 index 28688ea..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/FirmarDocumentoFiscaliaController.java.svn-base +++ /dev/null @@ -1,481 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.io.IOException; -import java.io.InputStream; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.solicitud.DecomisoArmaTransaccionController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.armas.solicitud.PlanificacionInspeccionController; -import com.fp.frontend.controller.armas.solicitud.SolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudCertificadoController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesDescController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.validators.DocFirmaValidator; -import com.fp.mail.Mail; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmCertificadoFiscalia; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * Clase controladora para firmar documentos. - * - * @author Carlos Guzman. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class FirmarDocumentoFiscaliaController extends AbstractController { - - private String xpathflujo; - private String xpathSolicitud; - private String xpath; - private String numerosolicitud; - private String appletCoordenadallx=""; - private String appletCoordenadally=""; - private String appletCoordenadaurx=""; - private String appletCoordenadaury=""; - private String appletLugar=""; - private String appletFirma=""; - private UploadedFile uploadedFile; - private TsafeUserDetail userDetail; - private boolean mensajeGuardar=false; - private boolean mensajeNoFirma=false; - private String btnFlujo; -// private TarmSolicitud solicitud; - private TarmCertificadoFiscalia certificadoFiscalia; - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - @ManagedProperty(value="#{personAddressController}") - private PersonAddressController personAddress; - - /** - * Constructor - * @throws Exception - */ - public FirmarDocumentoFiscaliaController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - numerosolicitud=super.getMfilters().get("csolicitud"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - if(userDetail.getPk().getPersoncode()!=null){ - appletFirma = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName() + " " + (new Timestamp(new Date().getTime())).toString().split("\\.")[0]; -// if(creporte!=null && !creporte.equals("null")){ -// PersonAddressController personAddressController = new PersonAddressController(); -// TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); -// List provinceList = ProvinceController.findPorCodigo("EC", tcustPersonAddres.getProvincecode()); -// appletLugar = provinceList.get(0).getDescription(); -// } - } - else{ - appletFirma = ""; - } - if(numerosolicitud!=null &&!numerosolicitud.equals("null") && numerosolicitud.trim().length()>0){ - certificadoFiscalia = SolicitudCertificadoController.findPorSolicitud(numerosolicitud.trim()); - if(certificadoFiscalia!=null && certificadoFiscalia.getXpathSolicitudArma()!=null){ - xpathflujo = certificadoFiscalia.getXpathSolicitudArma(); - xpathSolicitud = certificadoFiscalia.getXpath(); - } - Request request = this.callerhelper.getRequest(); - if(request!=null && request.getCentrocontrol()!=null) { - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(request.getCentrocontrol()); - List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); - appletLugar = lciudades.get(0).getDescription(); - } - } -// else if(numerotransaccion!=null && !numerotransaccion.equals("null")){ -// TarmDecomisoArmaTransaccion decomisoArmaTransaccion= DecomisoArmaTransaccionController.find(numerotransaccion); -// TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(decomisoArmaTransaccion.getCcentrocontrol()); -// List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); -// appletLugar = lciudades.get(0).getDescription(); -// }else if(cplanificacion!=null && !cplanificacion.equals("null")){ -// planificacionInspeccion= PlanificacionInspeccionController.findPorCodigo(Long.parseLong(cplanificacion)); -// TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(planificacionInspeccion.getCcentrocontrol()); -// List lciudades = CityController.find("EC", centroControl.getProvincecode(), centroControl.getCantoncode()); -// appletLugar = lciudades.get(0).getDescription(); -// } - - - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Metodo para extrer solo elnoimbre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "FIRMARDOCUMENTOCERTIFICADO"; - btnFlujo=null; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo que analiza si el archivo tiene la extension permitida - * @param nombreArchivo - * @return - */ - public Boolean esExtensionDeArchivoPermitida(String nombreArchivo){ - String[]archivosPermitidosLst = {".pdf"}; - for(String extensionValida:archivosPermitidosLst){ - if(nombreArchivo.contains(extensionValida)){ - return Boolean.TRUE; - } - } - return Boolean.FALSE; - } - - /** - * Metodo para grabar el documento en alfresco - */ - public void saveWithDocumentAlfresco() { - try { - if(uploadedFile!=null && esExtensionDeArchivoPermitida(uploadedFile.getFileName())){ - - if(!uploadedFile.getFileName().equals(xpathflujo.substring( xpathflujo.lastIndexOf(":") + 1,xpathflujo.length()))){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nombrearchivo_xpath")); - return; - } - alfrescoController.uploadFile(uploadedFile.getInputstream(),xpathflujo.substring( xpathflujo.lastIndexOf(":") + 1,xpathflujo.length()), xpathflujo.substring(0,xpathflujo.lastIndexOf(":")-2)); - //completa la tarea - //completarTarea(); - btnFlujo="ok"; - } - else if(uploadedFile==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinarchivo")); - return; - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo_firma")); - return; - } - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo_firma")); - e.printStackTrace(); - return; - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo")); - e.printStackTrace(); - } - - } - - - - - - public void guardarRegistro() { - -} - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", "A" ); // A,D,R - request.modifiedData().put("BPMObs","OK" ); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - this.envioCorreoDocumentoAdjunto(); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - btnFlujo=null; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Envía el correo de cambio de email - * @throws Exception - */ - private void envioCorreoDocumentoAdjunto() throws Exception{ - Mail m = new Mail(); - m.config(ParametersController.find("MAIL.FROM", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.SERVER", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.PORT", "1").getNumbervalue().intValue(), - ParametersController.find("MAIL.SMTP.USER", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.PASSWORD", "1").getTextvalue(), - Boolean.valueOf(ParametersController.find("MAIL.SMTP.AUTH", "1").getTextvalue()), - Boolean.valueOf(ParametersController.find("MAIL.SMTPS", "1").getTextvalue())); - TcustPersonAddress mail = personAddress.findPersonaPorDireccionTipoCatalogo(certificadoFiscalia.getPersoncode().toString(), "3"); - m.setTo(personAddress.getRecord().getAddress()); - MessageTemplatesController message = new MessageTemplatesController(); - message.addFilter("pk", "67"); - message.query(); - if(message.getLrecord() != null && !message.getLrecord().isEmpty()){ - TgeneMessageTemplates asunto = message.getLrecord().get(0); - MessageTemplatesDescController content = new MessageTemplatesDescController(); - content.addFilter("pk.code", "67"); - content.addFilter("pk.languagecode", "ES"); - content.query(); - if(content.getLrecord() != null && !content.getLrecord().isEmpty()){ - TgeneMessageTemplatesDesc descripcionContenido = content.getLrecord().get(0); - //Velocity.init(); - //VelocityContext context = new VelocityContext(); - //context.put("nombreusuario", this.getLoginController().getRequest().getUser()); - //context.put("clave", this.record.get("newpassword")); - m.setSubject(asunto.getDescription()); - //StringWriter sw = new StringWriter(); -// String sw=descripcionContenido.getTemplate().replace("$clave", this.record.get("newpassword").toString()); -// sw=sw.replace("$nombreusuario", this.record.get("name")+""); - //Velocity.evaluate(context, sw, "", descripcionContenido.getTemplate()); - String sw = "Mail de prueba documento habilitante con adjunto"; - m.setCont(sw.toString()); - m.setContentMessageType("text/html"); - // Descargar el documento habilitante a adjuntar - byte[] bytes = alfrescoController.downloadReturnDocument(this.xpathflujo); - m.addAttachment("documento.pdf", bytes, "application/pdf"); -// m.addAttachment("Documento Habilitante","C:\\Users\\JALVARADO\\Downloads\\DOC-000362250.pdf"); - m.send(); - } - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){} - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - - public String getXpath() { - return xpathSolicitud; - } - - public void setXpath(String xpathSolicitud) { - this.xpathSolicitud = xpathSolicitud; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public void upload(FileUploadEvent event) { - uploadedFile = event.getFile(); - try { - boolean isValid = DocFirmaValidator.validDocSign(uploadedFile.getInputstream()); - if(isValid){ - mensajeNoFirma = false; - mensajeGuardar = true; - - }else{ - uploadedFile = null; - btnFlujo=null; - mensajeNoFirma = true; - mensajeGuardar = false; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinfirmararchivo")); - } - } catch (IOException e) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinfirmararchivo")); - } - - } - - public String getAppletCoordenadallx() { - return appletCoordenadallx; - } - - public void setAppletCoordenadallx(String appletCoordenadallx) { - this.appletCoordenadallx = appletCoordenadallx; - } - - public String getAppletCoordenadally() { - return appletCoordenadally; - } - - public void setAppletCoordenadally(String appletCoordenadally) { - this.appletCoordenadally = appletCoordenadally; - } - - public String getAppletCoordenadaurx() { - return appletCoordenadaurx; - } - - public void setAppletCoordenadaurx(String appletCoordenadaurx) { - this.appletCoordenadaurx = appletCoordenadaurx; - } - - public String getAppletCoordenadaury() { - return appletCoordenadaury; - } - - public boolean isMensajeGuardar() { - return mensajeGuardar; - } - - public void setMensajeGuardar(boolean mensajeGuardar) { - this.mensajeGuardar = mensajeGuardar; - } - - public void setAppletCoordenadaury(String appletCoordenadaury) { - this.appletCoordenadaury = appletCoordenadaury; - } - - public String getAppletLugar() { - return appletLugar; - } - - public void setAppletLugar(String appletLugar) { - this.appletLugar = appletLugar; - } - - public String getAppletFirma() { - return appletFirma; - } - - public void setAppletFirma(String appletFirma) { - this.appletFirma = appletFirma; - } - - public String getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(String btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public PersonAddressController getPersonAddress() { - return personAddress; - } - - public void setPersonAddress(PersonAddressController personAddress) { - this.personAddress = personAddress; - } - - public String getXpathSolicitud() { - return xpathSolicitud; - } - - public void setXpathSolicitud(String xpathSolicitud) { - this.xpathSolicitud = xpathSolicitud; - } - - public String getNumerosolicitud() { - return numerosolicitud; - } - - public void setNumerosolicitud(String numerosolicitud) { - this.numerosolicitud = numerosolicitud; - } - - public boolean isMensajeNoFirma() { - return mensajeNoFirma; - } - - public void setMensajeNoFirma(boolean mensajeNoFirma) { - this.mensajeNoFirma = mensajeNoFirma; - } - - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/GuardiasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/GuardiasController.java.svn-base deleted file mode 100644 index 74570cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/GuardiasController.java.svn-base +++ /dev/null @@ -1,169 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmGuardias; - -/** - * Controlador que maneja guardias de seguridad - * @author james - * - */ -@ManagedBean -@ViewScoped -public class GuardiasController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public GuardiasController() throws Exception { - super(TarmGuardias.class); - } - - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "GUARDIAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método ejecutado después de ejecutarse el constructor - */ - @PostConstruct - public void postConstruct(){ - - init(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dtoQuery = super.getDtoQuery(Boolean.TRUE); - HashMapmtables = new HashMap(); - mtables.put(beanalias, dtoQuery); - SubQuery subQueryGuardia1 = new SubQuery("TcustPersonDetail", "name", "gnombre", "i.pk.personcode=t.pk and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.pk)"); - SubQuery subQueryGuardia2 = new SubQuery("TcustPersonDetail", "identification", "gcedula", "i.pk.personcode=t.pk and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.pk)"); - SubQuery subQueryEmpresa1 = new SubQuery("TcustPersonDetail","name","nempresa","i.pk.personcode=t.cempresa and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.cempresa)"); - SubQuery subQueryEmpresa2 = new SubQuery("TcustPersonDetail", "identification", "iempresa", "i.pk.personcode=t.cempresa and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.cempresa)"); - dtoQuery.addSubQuery(subQueryGuardia1); - dtoQuery.addSubQuery(subQueryGuardia2); - dtoQuery.addSubQuery(subQueryEmpresa1); - dtoQuery.addSubQuery(subQueryEmpresa2); - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0){ - this.lrecord = new ArrayList<>(); - MessageHelper.setMessageError(response); - } else{ - this.lrecord = (List) response.get(beanalias); - this.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return - */ - public static TarmGuardias find(String guardiaCode, String empresaCode) { - try { - GuardiasController cc = new GuardiasController(); - //cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", guardiaCode); - cc.addFilter("cempresa", empresaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response response = this.callerhelper.executeSave(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(response); - MessageHelper.setMessageInfo(response); - } else { - MessageHelper.setMessageError(response); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmGuardias guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmGuardias findxcguardia(String codigopersona){ - try { - GuardiasController cc = new GuardiasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigopersona); - - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionArmasDetalleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionArmasDetalleController.java.svn-base deleted file mode 100644 index 59d99e8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionArmasDetalleController.java.svn-base +++ /dev/null @@ -1,143 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.util.ArrayList; -import java.util.HashMap; - -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmDetalleImportacion; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean Tdireccion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImportacionArmasDetalleController extends AbstractController { - - - - public ImportacionArmasDetalleController() throws Exception { - super(TarmDetalleImportacion.class); - } - - - @PostConstruct - private void postconstruct() { - this.init(); - - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - - this.beanalias = "TARMASDETALLE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void executeProvincia() { - - - } - - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - - - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.netbeans-base deleted file mode 100644 index c00b418..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.netbeans-base +++ /dev/null @@ -1,459 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - - - - - - -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -/** - * Clase controladora del bean - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ImportacionController extends AbstractController { - - public ImportacionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - - @ManagedProperty(value = "#{armaController}") - private ArmaController armaController; - - /* - @ManagedProperty(value = "#{armaControllerProduccion}") - private ArmaControllerProduccion armaControllerProduccion; - */ - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalArmasController; - - private Boolean tiporegistro; - - private Boolean aux; - - private Date fechaactual; - private List ltiporegistro; - - private List laddresstype; - - private List lprovinces; - - private List lcantones; - - private List lciudades; - - private List lcountry; - - private TgeneCountry pais; - - private List lcities; - - - - private TgeneCatalogDetail cdetalle; - - private Date fechadesolicitud; - - public void changeType(){ - if(this.registroArmController.getRecord().getTiporegistro()==null){ - setTiporegistro(false); - } - else if(this.registroArmController.getRecord().getTiporegistro().equals("PRO")){ - - setTiporegistro(false); - - } - else{ - setTiporegistro(true); - - - } - } - - - - public Boolean getAux() { - return aux; - } - - public void setAux(Boolean aux) { - this.aux = aux; - } - - public TotalArmasController getTotalArmasController() { - return totalArmasController; - } - - public void setTotalArmasController(TotalArmasController totalArmasController) { - this.totalArmasController = totalArmasController; - } - - // @ManagedProperty(value = "#{importacionArmasDetalleController}") -// private ImportacionArmasDetalleController importacionArmasDetalleController; - @ManagedProperty(value = "#{loginController}") - private LoginController loginController; - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController( - RegistroArmController RegistroArmController) { - this.registroArmController = RegistroArmController; - } - - - - - //Datos quemados de Prueba - private List lsolicitud; - - private TarmSolicitud solicitud; - //Fin de Datos quemados de prueba - - private TcustPersonDetail persondetail; - - //private TarmSolicitud solicitudpersondata; - - private List lperson; - - - - public List getLaddresstype() { - return laddresstype; - } - - public void setLaddresstype(List laddresstype) { - this.laddresstype = laddresstype; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLcountry() { - return lcountry; - } - - public void setLcountry(List lcountry) { - this.lcountry = lcountry; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public List getLsolicitud() { - return lsolicitud; - } - - public void setLsolicitud(List lsolicitud) { - this.lsolicitud = lsolicitud; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - - - public List getLperson() { - return lperson; - } - - public void setLperson(List lperson) { - this.lperson = lperson; - } - - - @PostConstruct - private void postconstruct() { - - - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - crearRegistro(); - this.lrecord = new ArrayList<>(); - this.beanalias = "IMPORTACION"; - - pais = new TgeneCountry(); - aux=false; - fechaactual=new Date(); - fechadesolicitud=new Date(); - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //solicitud.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - setPersondetail(PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString())); - setLtiporegistro(CatalogDetailController.find("TIPOREGISTRO", "REG")); - armaController.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - setLaddresstype(CatalogDetailController.find("ADDRESSTYPE")); - setLcountry(CountryController.find()); - pais=CountryController.findcountry("EC"); - //armaController.setPais(pais.getPk()); - setTiporegistro(false); - setLprovinces(ProvinceController.find(pais.getPk())); - cdetalle = CatalogDetailController.findxCodigoCodcatalogo(getPersondetail().getIdentificationcatalog(),getPersondetail().getIdentificationcatalogcode()); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - } - - - public void actualizarsolicitudImportacionArmas() throws Exception{ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - registroArmController.getRecord().setFcreacion(new java.sql.Date(new Date().getTime())); - - if(fechadesolicitud!=null) - registroArmController.getRecord().setFechasolicitud(new java.sql.Date(fechadesolicitud.getTime())); - registroArmController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - registroArmController.getRecord().setTiporegistrocodigo("TIPOREGISTRO"); - registroArmController.update(); - -} - - public void crearRegistro() throws Exception{ - registroArmController.create(); - } - -public void validarTramite(String tramite){ - - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - String solicitud = SolicitudTramiteController.findByNumTramite(tramite).getPk().getCsolicitud(); - aux=SolicitudController.existeRegistroPersona(tsafeUserDetail.getPk().getPersoncode(), solicitud); - -} - -public void actualizarTotales() throws Exception{ - - totalArmasController.update(); - for (TarmArmas object : armaController.getLrecord() ){ - TiposArmasExplosivosController.findarma(object.getCtipoarmaexplosivo()); - } -} -//importacionController.armaController.record.provincecode - - @Override - public void save() { - try { - if(armaController.getLrecord()==null||armaController.getLrecord().isEmpty()) - return; - actualizarsolicitudImportacionArmas(); - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = this.armaController.getDtoSave(true); - HashMap msave = new HashMap(); - msave.put(armaController.getBeanalias(), dtosave); // adicionar metadata de mantenimiento para cada tabla. - dtosave.setPosition(1); - - DtoSave dtosaveSol = this.registroArmController.getDtoSave(true); - dtosaveSol.setPosition(2); - msave.put(registroArmController.getBeanalias(), dtosaveSol); - - DtoSave dtosaveTot = this.totalArmasController.getDtoSave(true); - dtosaveTot.setPosition(3); - msave.put(totalArmasController.getBeanalias(), dtosaveTot); - request.setSaveTables(msave); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - - this.armaController.postCommit(resp); - this.registroArmController.postCommit(resp); - this.totalArmasController.postCommit(resp); - this.armaController.clearAll(); - this.registroArmController.clearAll(); - this.totalArmasController.clearAll(); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - //armaController.setSave(false); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - //armaController.setSave(false); - } - finally{ - try { - crearRegistro(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - } - - @Override - public void postCommit(Response response) throws Exception { - this.armaController.postCommit(response); - this.registroArmController.postCommit(response); - this.totalArmasController.postCommit(response); - } - - public ArmaController getArmaController() { - return armaController; - } - - public void setArmaController(ArmaController armaController) { - this.armaController = armaController; - } - - public LoginController getLoginController() { - return loginController; - } - - public void setLoginController(LoginController loginController) { - this.loginController = loginController; - } - - public TcustPersonDetail getPersondetail() { - return persondetail; - } - - public void setPersondetail(TcustPersonDetail persondetail) { - this.persondetail = persondetail; - } - - public TgeneCatalogDetail getCdetalle() { - return cdetalle; - } - - public void setCdetalle(TgeneCatalogDetail cdetalle) { - this.cdetalle = cdetalle; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLtiporegistro() { - return ltiporegistro; - } - - public void setLtiporegistro(List ltiporegistro) { - this.ltiporegistro = ltiporegistro; - } - - public Boolean getTiporegistro() { - return tiporegistro; - } - - public void setTiporegistro(Boolean tiporegistro) { - this.tiporegistro = tiporegistro; - } - - public Date getFechadesolicitud() { - return fechadesolicitud; - } - - public void setFechadesolicitud(Date fechadesolicitud) { - this.fechadesolicitud = fechadesolicitud; - } - - public Date getFechaactual() { - return fechaactual; - } - public void setFechaactual(Date fechaactual) { - this.fechaactual = fechaactual; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.svn-base deleted file mode 100644 index c00b418..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionController.java.svn-base +++ /dev/null @@ -1,459 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - - - - - - -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -/** - * Clase controladora del bean - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ImportacionController extends AbstractController { - - public ImportacionController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - - @ManagedProperty(value = "#{armaController}") - private ArmaController armaController; - - /* - @ManagedProperty(value = "#{armaControllerProduccion}") - private ArmaControllerProduccion armaControllerProduccion; - */ - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalArmasController; - - private Boolean tiporegistro; - - private Boolean aux; - - private Date fechaactual; - private List ltiporegistro; - - private List laddresstype; - - private List lprovinces; - - private List lcantones; - - private List lciudades; - - private List lcountry; - - private TgeneCountry pais; - - private List lcities; - - - - private TgeneCatalogDetail cdetalle; - - private Date fechadesolicitud; - - public void changeType(){ - if(this.registroArmController.getRecord().getTiporegistro()==null){ - setTiporegistro(false); - } - else if(this.registroArmController.getRecord().getTiporegistro().equals("PRO")){ - - setTiporegistro(false); - - } - else{ - setTiporegistro(true); - - - } - } - - - - public Boolean getAux() { - return aux; - } - - public void setAux(Boolean aux) { - this.aux = aux; - } - - public TotalArmasController getTotalArmasController() { - return totalArmasController; - } - - public void setTotalArmasController(TotalArmasController totalArmasController) { - this.totalArmasController = totalArmasController; - } - - // @ManagedProperty(value = "#{importacionArmasDetalleController}") -// private ImportacionArmasDetalleController importacionArmasDetalleController; - @ManagedProperty(value = "#{loginController}") - private LoginController loginController; - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController( - RegistroArmController RegistroArmController) { - this.registroArmController = RegistroArmController; - } - - - - - //Datos quemados de Prueba - private List lsolicitud; - - private TarmSolicitud solicitud; - //Fin de Datos quemados de prueba - - private TcustPersonDetail persondetail; - - //private TarmSolicitud solicitudpersondata; - - private List lperson; - - - - public List getLaddresstype() { - return laddresstype; - } - - public void setLaddresstype(List laddresstype) { - this.laddresstype = laddresstype; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLcountry() { - return lcountry; - } - - public void setLcountry(List lcountry) { - this.lcountry = lcountry; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public List getLsolicitud() { - return lsolicitud; - } - - public void setLsolicitud(List lsolicitud) { - this.lsolicitud = lsolicitud; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - - - public List getLperson() { - return lperson; - } - - public void setLperson(List lperson) { - this.lperson = lperson; - } - - - @PostConstruct - private void postconstruct() { - - - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - - crearRegistro(); - this.lrecord = new ArrayList<>(); - this.beanalias = "IMPORTACION"; - - pais = new TgeneCountry(); - aux=false; - fechaactual=new Date(); - fechadesolicitud=new Date(); - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //solicitud.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - setPersondetail(PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString())); - setLtiporegistro(CatalogDetailController.find("TIPOREGISTRO", "REG")); - armaController.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - setLaddresstype(CatalogDetailController.find("ADDRESSTYPE")); - setLcountry(CountryController.find()); - pais=CountryController.findcountry("EC"); - //armaController.setPais(pais.getPk()); - setTiporegistro(false); - setLprovinces(ProvinceController.find(pais.getPk())); - cdetalle = CatalogDetailController.findxCodigoCodcatalogo(getPersondetail().getIdentificationcatalog(),getPersondetail().getIdentificationcatalogcode()); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - } - - - public void actualizarsolicitudImportacionArmas() throws Exception{ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - registroArmController.getRecord().setFcreacion(new java.sql.Date(new Date().getTime())); - - if(fechadesolicitud!=null) - registroArmController.getRecord().setFechasolicitud(new java.sql.Date(fechadesolicitud.getTime())); - registroArmController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - registroArmController.getRecord().setTiporegistrocodigo("TIPOREGISTRO"); - registroArmController.update(); - -} - - public void crearRegistro() throws Exception{ - registroArmController.create(); - } - -public void validarTramite(String tramite){ - - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - String solicitud = SolicitudTramiteController.findByNumTramite(tramite).getPk().getCsolicitud(); - aux=SolicitudController.existeRegistroPersona(tsafeUserDetail.getPk().getPersoncode(), solicitud); - -} - -public void actualizarTotales() throws Exception{ - - totalArmasController.update(); - for (TarmArmas object : armaController.getLrecord() ){ - TiposArmasExplosivosController.findarma(object.getCtipoarmaexplosivo()); - } -} -//importacionController.armaController.record.provincecode - - @Override - public void save() { - try { - if(armaController.getLrecord()==null||armaController.getLrecord().isEmpty()) - return; - actualizarsolicitudImportacionArmas(); - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = this.armaController.getDtoSave(true); - HashMap msave = new HashMap(); - msave.put(armaController.getBeanalias(), dtosave); // adicionar metadata de mantenimiento para cada tabla. - dtosave.setPosition(1); - - DtoSave dtosaveSol = this.registroArmController.getDtoSave(true); - dtosaveSol.setPosition(2); - msave.put(registroArmController.getBeanalias(), dtosaveSol); - - DtoSave dtosaveTot = this.totalArmasController.getDtoSave(true); - dtosaveTot.setPosition(3); - msave.put(totalArmasController.getBeanalias(), dtosaveTot); - request.setSaveTables(msave); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - - this.armaController.postCommit(resp); - this.registroArmController.postCommit(resp); - this.totalArmasController.postCommit(resp); - this.armaController.clearAll(); - this.registroArmController.clearAll(); - this.totalArmasController.clearAll(); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - //armaController.setSave(false); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - //armaController.setSave(false); - } - finally{ - try { - crearRegistro(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - } - - @Override - public void postCommit(Response response) throws Exception { - this.armaController.postCommit(response); - this.registroArmController.postCommit(response); - this.totalArmasController.postCommit(response); - } - - public ArmaController getArmaController() { - return armaController; - } - - public void setArmaController(ArmaController armaController) { - this.armaController = armaController; - } - - public LoginController getLoginController() { - return loginController; - } - - public void setLoginController(LoginController loginController) { - this.loginController = loginController; - } - - public TcustPersonDetail getPersondetail() { - return persondetail; - } - - public void setPersondetail(TcustPersonDetail persondetail) { - this.persondetail = persondetail; - } - - public TgeneCatalogDetail getCdetalle() { - return cdetalle; - } - - public void setCdetalle(TgeneCatalogDetail cdetalle) { - this.cdetalle = cdetalle; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLtiporegistro() { - return ltiporegistro; - } - - public void setLtiporegistro(List ltiporegistro) { - this.ltiporegistro = ltiporegistro; - } - - public Boolean getTiporegistro() { - return tiporegistro; - } - - public void setTiporegistro(Boolean tiporegistro) { - this.tiporegistro = tiporegistro; - } - - public Date getFechadesolicitud() { - return fechadesolicitud; - } - - public void setFechadesolicitud(Date fechadesolicitud) { - this.fechadesolicitud = fechadesolicitud; - } - - public Date getFechaactual() { - return fechaactual; - } - public void setFechaactual(Date fechaactual) { - this.fechaactual = fechaactual; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionDetalleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionDetalleController.java.svn-base deleted file mode 100644 index ea1ad10..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImportacionDetalleController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -public class ImportacionDetalleController { - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasController.java.svn-base deleted file mode 100644 index 731b756..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasController.java.svn-base +++ /dev/null @@ -1,853 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.jboss.logging.Logger; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.util.ArmasExcel; -import com.fp.frontend.controller.armas.parametros.util.TipoArmaExplosivoPKExcel; -import com.fp.frontend.controller.armas.solicitud.DecomisoArmaController; -import com.fp.frontend.controller.armas.solicitud.DecomisoController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImporteArmasController extends AbstractController { - - /* CATALOGOS */ - /* TIPO ARMA EXPLOSIVO */ - private List listLongitudes; - private List listCalibres; - private List listClases; - private List listTipoArmaExplosivos; - /* ADICONAL */ - private List listMarcas; - private List listTipoFabricacion; - - /** - * Variable para a;adir las armas que se van a Guardar - */ - private List listArmas; - /** - * registro del Arma Due;o de las armas - */ - private TarmRegistroArmas registroArma; - /** - * Cabecera del decomiso - */ - private TarmDecomiso tarmDecomiso; - /** - * Variable para listar los errores al cargar el excel - */ - private List listaErrores; - /** - * Mensaje de error - */ - private String mensajeError; - /** - * numero de armas procesadas - */ - private Integer numArmasProcesadas; - /** - * numero de armas con error - */ - private Integer numArmasError; - /** - * numero de armas con error - */ - private Integer numCorrectas; - /** - * Centro de control Policoa Judicia 2/PN07 - */ - private TarmCentroControl centroControl; - - /** - * Detalle del usuario - */ - private TcustPersonDetail usuario; - - /** - * Nombre del centro de control logeado - */ - private String centroControlNombreLogeado; - /** - * Numero de registro - */ - private String numeroRecibo; - - /*Constante centro control*/ - private String nombreInstitucion; - private String institucion; - /*Cedula del propietario*/ - private String cedulaPropietario; - /*motivo incautacion*/ - private String motivocatalogo; - /*cantidad de armas*/ - private Integer cantidad=1; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - /** - * Controlador que maneja el decomiso TarmDecomiso - */ - @ManagedProperty(value = "#{decomisoController}") - private DecomisoController decomisoController; - - /** - * Controlador que maneja TarmDecomisoArma - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - private MapmapaProvincia; - private MapmapaCanton; - private SetlistaTipoArmaExplosivoPk; - - private final static Logger LOG = Logger.getLogger(ImporteArmasController.class.getName()); - - public ImporteArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina - * que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record = new TarmArmas(); - this.beanalias = "ARMASIMPORTE"; - listArmas = new ArrayList(); - registroArma = new TarmRegistroArmas(); - mapaProvincia=new HashMap(); - mapaCanton=new HashMap(); - listaTipoArmaExplosivoPk=new HashSet<>(); - cargaParametros(); - cargaCatalogos(); - cargaRegistroArma(); - cargaUsuarioLogeado(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cargaParametros(){ - nombreInstitucion=codigos("CODIGO.NOM.INSTIT.IMPORTE");//"PJ01" - institucion=codigos("CODIGO.INSTITUCION.IMPORTE");//2 - /*Cedula del propietario*/ - cedulaPropietario=codigos("CEDULA.PROPIETARIO.IMPORTE");//"999999999"; - /*motivo incautacion*/ - motivocatalogo=codigos("MOTIVO.IMPORTE");//"9"; - } - - /** - * Método para obtener los codigos - */ - private String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - public void cargaCatalogos() { - /* TIPOARMAEXPLOSIVO */ - listLongitudes = CatalogDetailController.find("LONGITUD"); - listCalibres = CatalogDetailController.find("CALIBRE"); - listClases = CatalogDetailController.find("CLASE"); - listTipoArmaExplosivos = CatalogDetailController.find("TIPOARMAEXPLOSIVO"); - /* CATALOGO AD */ - listMarcas = CatalogDetailController.find("MARCA"); - listTipoFabricacion = CatalogDetailController.find("TIPOFABRICACION"); - //listColor = CatalogDetailController.find("COLOR"); - } - - public void cargaUsuarioLogeado(){ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - centroControlNombreLogeado = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - } - - public void cargaRegistroArma() { - TcustPersonDetail tcustPersonDetail = PersonDetailController.findByIdentification(cedulaPropietario); - registroArma.setPersoncode(tcustPersonDetail.getPk().getPersoncode()); - registroArma.setFcreacion(new java.sql.Date(new Date().getTime())); - registroArma.setTiporegistro("INCA"); - registroArma.setTiporegistrocodigo("TIPOREGISTRO"); - registroArma.setPaisorigen(""); - registroArma.setIsnew(true); - - ListlistCentroControls= CentroControlArmasController.findxOrganismoUnidad(institucion,nombreInstitucion); - if(listCentroControls!=null && listCentroControls.size()==1){ - centroControl=listCentroControls.get(0); - }else{ - centroControl=null; - mensajeError="NO TIENE REGISTRADO UN CENTRO DE CONTROL O TIENE REGISTRADO MAS DE UNO CON EL MISMO NOMBRE DE INSTITUCI\u00d3N Y NOMBRE INSTITUCI\u00d3N"; - } - } - - /* - * (non-Javadoc) - * - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - Filter filtrofecha = new Filter(); - filtrofecha - .setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if (!lrecord.isEmpty()) { - record = lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - if(centroControl==null){ - MessageHelper.setMessageError("NO TIENE CENTRO DE CONTROL REVISE EL CENTRO DE CONTROL"); - return; - } - if(listArmas==null || listArmas.size()==0 || listArmas.isEmpty()){ - MessageHelper.setMessageError("NO EXISTEN ARMAS CARGADAS "); - return; - } - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - // regstroArma - registroArmasController.clearAll(); - registroArmasController.setRecord(registroArma); - registroArmasController.update(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(),dtosaveregistroarma); - - // cargar Armas - this.clearAll(); - cargarArmas(); - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - msave.put(this.beanalias, dtosave); - - //carga tarmdecomiso - decomisoController.clearAll(); - tarmDecomiso= new TarmDecomiso(); - tarmDecomiso.setIsnew(true); - tarmDecomiso.setTipoprocesocode("TIPOREGISTRO"); - tarmDecomiso.setTipoproceso("INCA"); - tarmDecomiso.setCcentrocontrol(centroControl.getPk()); - tarmDecomiso.setNumerorecibo(numeroRecibo);//numero de oficio - tarmDecomiso.setFecharegistro(new java.sql.Date(new Date().getTime())); - //tarmDecomiso.setOrganismocontrol(centroControlNombreLogeado); - tarmDecomiso.setOrganismocontrol(centroControl.getModifiedData().get("desinstitucion").toString()); - tarmDecomiso.setPersoncoderegistra(usuario.getPk().getPersoncode()); - - //tarmDecomiso.setNumerotransaccion(pNumerotransaccion); - decomisoController.setRecord(tarmDecomiso); - decomisoController.update(); - DtoSave dtoDecomiso = decomisoController.getDtoSave(true); - dtoDecomiso.setPosition(3); - msave.put("IMPORTEDECOMISO",dtoDecomiso); - - //Tarmdecomisoarma - decomisoArmaController.clearAll(); - DtoSave dtoDecomisoArma = decomisoArmaController.getDtoSave(true); - dtoDecomisoArma.setPosition(4); - msave.put(decomisoArmaController.getBeanalias(),dtoDecomisoArma); - - request.setSaveTables(msave); - //request.getModifiedData().put("REGISTRO", this.registroArma); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - mensajeError=null; - MessageHelper.setMessageInfo(resp); - listArmas.clear(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void cargarArmas() throws Exception { - for (TarmArmas item : listArmas) { - item.setEstadoDecomiso(numeroRecibo); - this.record = item; - record.setIsnew(true); - super.update(); - } - } - - /** - * Metodo que carga y valida el contenido de un archivo excel con - * información de armas - * - * @param event - */ - public void cargarArchivo(FileUploadEvent event) { - listArmas = new ArrayList(); - listaErrores = new ArrayList(); - int contador = 0; - try { - UploadedFile selectedFile = event.getFile(); - InputStream archivo = selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - // Iterando sobre las filas - Iterator rowIterator = hoja.iterator(); - ListlistaArmasExcel = new ArrayList(); - // Cargando el contenido de las celdas a una lista de objetos - while (rowIterator.hasNext()) { - Row row = rowIterator.next(); - if(contador!=0){ - Cell orden = row.getCell(0); - Cell longuitud = row.getCell(14); - Cell calibre = row.getCell(5); - Cell clase = row.getCell(1);//material - Cell tipoArmaExplosivo = row.getCell(2);// modelo: REVOLVER CARTUCHERA CARTUCHERANO CARABINA SUB-AMETRALLADORA*revisar - Cell marca = row.getCell(3); - Cell tipoFabricacion = row.getCell(7); - Cell serie = row.getCell(4); - Cell fechaRecepcion = row.getCell(9); - Cell motivo = row.getCell(10); - Cell descripcionProvincia= row.getCell(12); - Cell descripcionCanton= row.getCell(13); - Cell observaciones= row.getCell(15); - if (!this.celdaVacia(orden) - && !this.celdaVacia(longuitud) - && !this.celdaVacia(calibre) - && !this.celdaVacia(clase) - && !this.celdaVacia(tipoArmaExplosivo) - && !this.celdaVacia(marca) - && !this.celdaVacia(tipoFabricacion) - && !this.celdaVacia(serie) - && !this.celdaVacia(fechaRecepcion) - && !this.celdaVacia(motivo) - && !this.celdaVacia(descripcionProvincia) - && !this.celdaVacia(descripcionCanton) - && !this.celdaVacia(observaciones)) { - - ArmasExcel armasExcel = new ArmasExcel(orden.toString().trim(),longuitud.toString().trim(),calibre.toString().trim(), - clase.toString().trim(),tipoArmaExplosivo.toString().trim(),marca.toString().trim(), - tipoFabricacion.toString().trim(),serie.toString().trim(),fechaRecepcion.toString().trim(), - motivo.toString().trim(),descripcionProvincia.toString().trim(),descripcionCanton.toString().trim(), - observaciones.toString().trim(),contador); - listaArmasExcel.add(armasExcel); - LOG.info("CONTADOR........"+contador); - } else { - listaErrores.add("EL REGISTRO TIENE CAMPOS EN BLANCO, REGISTRO: " + contador); - } - contador++; - }else{ - contador++; - } - } - archivo.close(); - - LOG.info("NUMERO REGISTROS........."+listaArmasExcel.size()); - LOG.info("Procesar armas adjuntas"); - MapmapaSerie=new HashMap(); - int auxi=0; - for (ArmasExcel armasExcel : listaArmasExcel) { - LOG.info("CONTADOR 2: "+auxi++); - TarmArmas arma = armarlistaArmasExcel(armasExcel.getLonguitud(),armasExcel.getCalibre(),armasExcel.getClase(), - armasExcel.getTipoArmaExplosivo(),armasExcel.getMarca(),armasExcel.getTipoFabricacion(), - armasExcel.getCont(), armasExcel.getSerie(),armasExcel.getDescripcionProvincia(),armasExcel.getDescripcionCanton()); - if (arma != null) { - arma.getModifiedData().put("motivo", armasExcel.getMotivo()); - arma.getModifiedData().put("observaciondecomiso", armasExcel.getObservaciones()); - arma.getModifiedData().put("cantidad",cantidad); - arma.getModifiedData().put("motivocatalogocode","MOTIVODECOMISO"); - arma.getModifiedData().put("motivocatalogo",motivocatalogo);//entrega voluntaria - //dd/MM/yyyy - try { - //validar si la serie es repetida - if(mapaSerie.get(armasExcel.getSerie())!=null){ - listaErrores.add("SERIE DUPLICADA" + armasExcel.getSerie()+ " DEL REGISTRO: "+armasExcel.getCont()); - continue; - }else{ - mapaSerie.put(armasExcel.getSerie(),armasExcel.getSerie()); - } - - SimpleDateFormat formatter = new SimpleDateFormat("dd-MMM-yyyy"); //formatter.parse("7-OCT-016"); - Date date = formatter.parse(armasExcel.getFechaRecepcion()); - Calendar cal= Calendar.getInstance(); - cal.setTime(date); - String anio=cal.get(Calendar.YEAR)+""; - if(anio!=null && anio.trim().length()==4 && cal.get(Calendar.YEAR)>1900){ - arma.getModifiedData().put("fechaRecepcion",date); - arma.getModifiedData().put("fechaDecomiso",date); - //ANIADE EL ARMA - listArmas.add(arma); - }else{ - listaErrores.add("PROBLEMA CON LA FECHA DE RECEPCI\u00d3N " + armasExcel.getFechaRecepcion()+ ", EL A\u00d1O: "+anio+ - " NO CORRESPONDE AL FORMATO, EL FORMATO ES dd-MMM-yyyy EJ:(04-OCT-2017), DEL REGISTRO: "+armasExcel.getCont()); - } - } catch (Exception e) { - listaErrores.add("PROBLEMA CON LA FECHA DE RECEPCI\u00d3N " + armasExcel.getFechaRecepcion()+ - ", EL FORMATO ES dd-MMM-yyyy EJ:(04-OCT-2017), DEL REGISTRO: "+armasExcel.getCont()); - } - } - } - LOG.info("ARMAS PROCESADAS 2: "+listArmas.size()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - e.printStackTrace(); - } finally { - numArmasProcesadas=contador-1; - if (!listaErrores.isEmpty()) { - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: "); - mensajeError="ERROR EN LA CARGA DE ARMAS"; - numCorrectas=listArmas.size(); - listArmas.clear(); - }else{ - numCorrectas=listArmas.size(); - } - numArmasError =listaErrores.size(); - } - } - - private TarmArmas armarlistaArmasExcel(String longuitud, String calibre,String clase, String tipoArmaExplosivo, String marca, - String tipoFabricacion, int cont, String serie,String descripcionProvincia,String descripcionCanton) { - TarmArmas armaRegistro = null; - String longuitudCodigo = validarCatalogo(listLongitudes, longuitud); - if(longuitudCodigo==null || longuitudCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DE LA LONGUITUD: "+longuitud.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String calibreCodigo = validarCatalogo(listCalibres, calibre); - if(calibreCodigo==null || calibreCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DEL CALIBRE: "+calibre.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String claseCodigo = validarCatalogo(listClases, clase); - if(claseCodigo==null || claseCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DE LA CLASE: "+clase.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String tipoArmaExplosivoCodigo = validarCatalogo(listTipoArmaExplosivos, tipoArmaExplosivo); - if(tipoArmaExplosivoCodigo==null || tipoArmaExplosivoCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DEL TIPO ARMA EXPLOSIVO: "+tipoArmaExplosivo.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String unidadMedidaPesoCodigo = "UNIDAD"; - - String marcaCodigo = validarCatalogo(listMarcas, marca);// MARCA - if (marcaCodigo == null) { - listaErrores.add("LA MARCA DEL ARMA: "+marca.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String tipoFabricacionCodigo = validarCatalogo(listTipoFabricacion, tipoFabricacion);// TIPOFABRICACION - if (tipoFabricacionCodigo == null) { - listaErrores.add("EL TIPO DE FABRICACI\u00d3N: "+tipoFabricacion.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - /*Ubicacion Provincia canton*/ - TgeneProvince province=null; - TgeneCanton canton=null; - //provincia - if(mapaProvincia.get("descripcionProvincia")!=null){ - province=(TgeneProvince)mapaProvincia.get(descripcionProvincia); - }else{ - ListlistProvincias=ProvinceController.findxDescripcion("EC", null, descripcionProvincia); - if(listProvincias!=null ){ - if(listProvincias.size()==1){ - province=listProvincias.get(0); - mapaProvincia.get("descripcionProvincia"); - }else{ - listaErrores.add(" EXISTE MAS DE UNA PROVINCIA: "+descripcionProvincia.toString()+" CON ESTA DESCRIPCI\u00d3N, DEL REGISTRO: "+ cont); - return null; - } - }else{ - listaErrores.add(" NO EXISTE LA PROVINCIA: "+descripcionProvincia.toString()+" EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - return null; - } - } - //canton - if(mapaCanton.get(descripcionProvincia)!=null && province != null && province.getPk()!=null){ - canton=(TgeneCanton)mapaCanton.get(descripcionProvincia); - }else if(province != null && province.getPk()!=null){ - List listCantons= CantonController.find("EC", province.getPk().getProvincecode()); - if(listCantons!=null && listCantons.size()!=0){ - for (TgeneCanton item : listCantons) { - if(item.getDescription().trim().equals(descripcionCanton)){ - canton=item; - mapaCanton.put(descripcionProvincia,item); - break; - } - } - if(canton==null){ - listaErrores.add(" NO EXISTEN CANTONES ASOCIADOS CON LA PROVINCIA: "+descripcionProvincia.toString()+", DEL REGISTRO: "+ cont); - return null; - } - }else{ - listaErrores.add(" NO EXISTEN CANTONES ASOCIADOS CON LA PROVINCIA: "+descripcionProvincia.toString()+", DEL REGISTRO: "+ cont); - return null; - } - } - - if (marcaCodigo == null || tipoFabricacionCodigo == null || province==null || canton==null) { - return null; - } - - if (longuitudCodigo != null && calibreCodigo != null && claseCodigo != null && tipoArmaExplosivoCodigo != null) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo =null; - TipoArmaExplosivoPKExcel tipoArmaPk = validarTipoArma(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo); - if(tipoArmaPk!=null){ - tarmTipoArmaExplosivo=tipoArmaPk.getTipoArmaExplosivoClase(); - }else{ - tarmTipoArmaExplosivo = ImporteTipoArmaExplosivoController.findpk(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo); - if(tarmTipoArmaExplosivo!=null){ - tipoArmaPk = new TipoArmaExplosivoPKExcel(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo,tarmTipoArmaExplosivo); - listaTipoArmaExplosivoPk.add(tipoArmaPk); - } - } - if (tarmTipoArmaExplosivo != null) { - armaRegistro = new TarmArmas(); - armaRegistro.setMarca(marcaCodigo); - armaRegistro.setMarcacodigo("MARCA"); - armaRegistro.setTipofabricacion(tipoFabricacionCodigo); - armaRegistro.setTipofabricacioncodigo("TIPOFABRICACION"); - //armaRegistro.setColor(colorCodigo); - armaRegistro.setColorcodigo("COLOR"); - armaRegistro.setUnidadmedidacantidad("UNIDAD"); - armaRegistro.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - armaRegistro.setEstado("INC"); - armaRegistro.setEstadocodigo("ESTADOARMA"); - armaRegistro.setCountrycode("EC"); - armaRegistro.setProvincecode(province.getPk().getProvincecode()); - armaRegistro.setCantoncode(canton.getPk().getCantoncode()); - //armaRegistro.setParroquiacode(""); - // armaRegistro.setCregistro(); - armaRegistro.setCitycode(""); - armaRegistro.setLote(serie); - armaRegistro.setCantidad(cantidad); - // armaRegistro.setSeriecanon(); - // armaRegistro.setDireccion(); - armaRegistro.setFecharegistro(new java.sql.Date(new Date().getTime())); - armaRegistro.setCtipoarmaexplosivo(tarmTipoArmaExplosivo.getPk()); - armaRegistro.setEstadoDecomiso("INC"); - } else { - listaErrores.add("LA COMBINACION DEL ARMA NO EXISTE EN EL REGISTRO: " + cont+ " "); - } - } - return armaRegistro; - } - - private TipoArmaExplosivoPKExcel validarTipoArma(String longitud, String calibre, - String clase, String tipoarmaexplosivo,String unidadmedidapeso){ - for (TipoArmaExplosivoPKExcel item : listaTipoArmaExplosivoPk) { - if(longitud.equals(item.getLongitud()) && - calibre.equals(item.getCalibre()) && - clase.equals(item.getClase()) && - tipoarmaexplosivo.equals(item.getTipoarmaexplosivo()) && - unidadmedidapeso.equals(item.getUnidadmedidapeso()) ){ - return item; - } - } - return null; - } - - public String validarCatalogo(List listCatalogo,String descripcion) { - String codigo = null; - for (TgeneCatalogDetail item : listCatalogo) { - if (item.getDescription().equals(descripcion)) { - codigo = item.getPk().getCatalog(); - break; - } - } - return codigo; - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - private Boolean celdaVacia(Cell celda) { - Boolean vacia = false; - if (celda == null || celda.getCellType() == Cell.CELL_TYPE_BLANK|| - (celda.getCellType() == Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())) { - vacia = true; - } - return vacia; - } - - @SuppressWarnings("finally") - private File generarArchivoError(Long key) { - if (listaErrores.isEmpty()) { - return null; - } - PrintWriter escribir = null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog" + key, ".txt"); - escribir = new PrintWriter(archivo); - for (String err : listaErrores) { - escribir.print(err + "\r\n"); - } - limpiar(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - escribir.flush(); - escribir.close(); - return archivo; - } - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo() { - if(listaErrores!=null && listaErrores.size()>0){ - Long key = new Date().getTime(); - File archivoTemporal = generarArchivoError(key); - if (archivoTemporal == null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition","attachment; filename=errorlog" + key + ".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - FacesContext.getCurrentInstance().responseComplete(); - } catch (Exception e) { - } - }else{ - MessageHelper.setMessageError("NO TIENE ERRORES"); - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar() { - try { - create(); - while (lrecord.iterator().hasNext()) { - record = lrecord.get(0); - remove(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - - public void codigoCiudad() { - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - public String getMensajeError() { - return mensajeError; - } - - public void setMensajeError(String mensajeError) { - this.mensajeError = mensajeError; - } - - public Integer getNumArmasProcesadas() { - return numArmasProcesadas; - } - - public void setNumArmasProcesadas(Integer numArmasProcesadas) { - this.numArmasProcesadas = numArmasProcesadas; - } - - public Integer getNumArmasError() { - return numArmasError; - } - - public void setNumArmasError(Integer numArmasError) { - this.numArmasError = numArmasError; - } - - public String getNumeroRecibo() { - return numeroRecibo; - } - - public void setNumeroRecibo(String numeroRecibo) { - this.numeroRecibo = numeroRecibo; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getCentroControlNombreLogeado() { - return centroControlNombreLogeado; - } - - public void setCentroControlNombreLogeado(String centroControlNombreLogeado) { - this.centroControlNombreLogeado = centroControlNombreLogeado; - } - - public DecomisoController getDecomisoController() { - return decomisoController; - } - - public void setDecomisoController(DecomisoController decomisoController) { - this.decomisoController = decomisoController; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public Integer getNumCorrectas() { - return numCorrectas; - } - - public void setNumCorrectas(Integer numCorrectas) { - this.numCorrectas = numCorrectas; - } - - public TarmDecomiso getTarmDecomiso() { - return tarmDecomiso; - } - - public void setTarmDecomiso(TarmDecomiso tarmDecomiso) { - this.tarmDecomiso = tarmDecomiso; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasExcelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasExcelController.java.svn-base deleted file mode 100644 index b54d88c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteArmasExcelController.java.svn-base +++ /dev/null @@ -1,760 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.jboss.logging.Logger; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.util.ArmasExcel; -import com.fp.frontend.controller.armas.parametros.util.TipoArmaExplosivoPKExcel; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImporteArmasExcelController extends AbstractController { - - /* CATALOGOS */ - /* TIPO ARMA EXPLOSIVO */ - private List listLongitudes; - private List listCalibres; - private List listClases; - private List listTipoArmaExplosivos; - /* ADICONAL */ - private List listMarcas; - private List listTipoFabricacion; - - /** - * Variable para a;adir las armas que se van a Guardar - */ - private List listArmas; - /** - * registro del Arma Due;o de las armas - */ - private TarmRegistroArmas registroArma; - /** - * Variable para listar los errores al cargar el excel - */ - private List listaErrores; - /** - * Mensaje de error - */ - private String mensajeError; - /** - * numero de armas procesadas - */ - private Integer numArmasProcesadas; - /** - * numero de armas con error - */ - private Integer numArmasError; - /** - * numero de armas con error - */ - private Integer numCorrectas; -// /** -// * Centro de control Policoa Judicia 2/PN07 -// */ -// private TarmCentroControl centroControl; - - /** - * Detalle del usuario - */ - private TcustPersonDetail usuario; - - /** - * Nombre del centro de control logeado - */ - private String centroControlNombreLogeado; - /** - * Numero de registro - */ - private String numeroRecibo; - -// /*Constante centro control*/ -// private String nombreInstitucion; -// private String institucion; - /*Cedula del propietario*/ - private String cedulaPropietario; - /*cantidad de armas*/ - private Integer cantidad=1; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - - private MapmapaProvincia; - private MapmapaCanton; - private SetlistaTipoArmaExplosivoPk; - - private final static Logger LOG = Logger.getLogger(ImporteArmasExcelController.class.getName()); - - public ImporteArmasExcelController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina - * que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record = new TarmArmas(); - this.beanalias = "ARMASIMPORTEEXCEL"; - listArmas = new ArrayList(); - registroArma = new TarmRegistroArmas(); - mapaProvincia=new HashMap(); - mapaCanton=new HashMap(); - listaTipoArmaExplosivoPk=new HashSet<>(); - cargaParametros(); - cargaCatalogos(); - cargaRegistroArma(); - cargaUsuarioLogeado(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cargaParametros(){ -// nombreInstitucion=codigos("CODIGO.NOM.INSTIT.IMPORTE");//"PJ01" -// institucion=codigos("CODIGO.INSTITUCION.IMPORTE");//2 - /*Cedula del propietario*/ - cedulaPropietario=codigos("CEDULA.RUC.PROPIETARIO.ARMA");//"999999999"; - } - - /** - * Método para obtener los codigos - */ - private String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - public void cargaCatalogos() { - /* TIPOARMAEXPLOSIVO */ - listLongitudes = CatalogDetailController.find("LONGITUD"); - listCalibres = CatalogDetailController.find("CALIBRE"); - listClases = CatalogDetailController.find("CLASE"); - listTipoArmaExplosivos = CatalogDetailController.find("TIPOARMAEXPLOSIVO"); - /* CATALOGO AD */ - listMarcas = CatalogDetailController.find("MARCA"); - listTipoFabricacion = CatalogDetailController.find("TIPOFABRICACION"); - //listColor = CatalogDetailController.find("COLOR"); - } - - public void cargaUsuarioLogeado(){ - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - centroControlNombreLogeado = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - } - - public void cargaRegistroArma() { - TcustPersonDetail tcustPersonDetail = PersonDetailController.findByIdentification(cedulaPropietario); - registroArma.setPersoncode(tcustPersonDetail.getPk().getPersoncode()); - registroArma.setFcreacion(new java.sql.Date(new Date().getTime())); - registroArma.setTiporegistro("INCA"); - registroArma.setTiporegistrocodigo("TIPOREGISTRO"); - registroArma.setPaisorigen(""); - registroArma.setIsnew(true); - -// ListlistCentroControls= CentroControlArmasController.findxOrganismoUnidad(institucion,nombreInstitucion); -// if(listCentroControls!=null && listCentroControls.size()==1){ -// centroControl=listCentroControls.get(0); -// }else{ -// centroControl=null; -// mensajeError="NO TIENE REGISTRADO UN CENTRO DE CONTROL O TIENE REGISTRADO MAS DE UNO CON EL MISMO NOMBRE DE INSTITUCI\u00d3N Y NOMBRE INSTITUCI\u00d3N"; -// } - } - - /* - * (non-Javadoc) - * - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - Filter filtrofecha = new Filter(); - filtrofecha - .setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if (!lrecord.isEmpty()) { - record = lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { -// if(centroControl==null){ -// MessageHelper.setMessageError("NO TIENE CENTRO DE CONTROL REVISE EL CENTRO DE CONTROL"); -// return; -// } - if(listArmas==null || listArmas.size()==0 || listArmas.isEmpty()){ - MessageHelper.setMessageError("NO EXISTEN ARMAS CARGADAS "); - return; - } - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - // regstroArma - registroArmasController.clearAll(); - registroArmasController.setRecord(registroArma); - registroArmasController.update(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(),dtosaveregistroarma); - - // cargar Armas - this.clearAll(); - cargarArmas(); - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - mensajeError=null; - MessageHelper.setMessageInfo(resp); - listArmas.clear(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void cargarArmas() throws Exception { - for (TarmArmas item : listArmas) { - item.setEstadoDecomiso(numeroRecibo); - this.record = item; - record.setIsnew(true); - super.update(); - } - } - - /** - * Metodo que carga y valida el contenido de un archivo excel con - * información de armas - * - * @param event - */ - public void cargarArchivo(FileUploadEvent event) { - listArmas = new ArrayList(); - listaErrores = new ArrayList(); - int contador = 0; - try { - UploadedFile selectedFile = event.getFile(); - InputStream archivo = selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - // Iterando sobre las filas - Iterator rowIterator = hoja.iterator(); - ListlistaArmasExcel = new ArrayList(); - // Cargando el contenido de las celdas a una lista de objetos - while (rowIterator.hasNext()) { - Row row = rowIterator.next(); - if(contador!=0){ - Cell orden = row.getCell(0); - Cell longuitud = row.getCell(14); - Cell calibre = row.getCell(5); - Cell clase = row.getCell(1);//material - Cell tipoArmaExplosivo = row.getCell(2);// modelo: REVOLVER CARTUCHERA CARTUCHERANO CARABINA SUB-AMETRALLADORA*revisar - Cell marca = row.getCell(3); - Cell tipoFabricacion = row.getCell(7); - Cell serie = row.getCell(4); - Cell fechaRecepcion = row.getCell(9); - Cell motivo = row.getCell(10); - Cell descripcionProvincia= row.getCell(12); - Cell descripcionCanton= row.getCell(13); - Cell observaciones= row.getCell(15); - if (!this.celdaVacia(orden) - && !this.celdaVacia(longuitud) - && !this.celdaVacia(calibre) - && !this.celdaVacia(clase) - && !this.celdaVacia(tipoArmaExplosivo) - && !this.celdaVacia(marca) - && !this.celdaVacia(tipoFabricacion) - && !this.celdaVacia(serie) - //&& !this.celdaVacia(fechaRecepcion) - // && !this.celdaVacia(motivo) - && !this.celdaVacia(descripcionProvincia) - && !this.celdaVacia(descripcionCanton) - //&& !this.celdaVacia(observaciones) - ) { - - ArmasExcel armasExcel = new ArmasExcel(orden.toString().trim(),longuitud.toString().trim(),calibre.toString().trim(), - clase.toString().trim(),tipoArmaExplosivo.toString().trim(),marca.toString().trim(), - tipoFabricacion.toString().trim(),serie.toString().trim(),null, - null,descripcionProvincia.toString().trim(),descripcionCanton.toString().trim(), - null,contador); - listaArmasExcel.add(armasExcel); - LOG.info("CONTADOR........"+contador); - } else { - listaErrores.add("EL REGISTRO TIENE CAMPOS EN BLANCO, REGISTRO: " + contador); - } - contador++; - }else{ - contador++; - } - } - archivo.close(); - - LOG.info("NUMERO REGISTROS........."+listaArmasExcel.size()); - LOG.info("Procesar armas adjuntas"); - MapmapaSerie=new HashMap(); - int auxi=0; - for (ArmasExcel armasExcel : listaArmasExcel) { - LOG.info("CONTADOR 2: "+auxi++); - TarmArmas arma = armarlistaArmasExcel(armasExcel.getLonguitud(),armasExcel.getCalibre(),armasExcel.getClase(), - armasExcel.getTipoArmaExplosivo(),armasExcel.getMarca(),armasExcel.getTipoFabricacion(), - armasExcel.getCont(), armasExcel.getSerie(),armasExcel.getDescripcionProvincia(),armasExcel.getDescripcionCanton()); - if (arma != null) { -// arma.getModifiedData().put("motivo", armasExcel.getMotivo()); -// arma.getModifiedData().put("observaciondecomiso", armasExcel.getObservaciones()); - arma.getModifiedData().put("cantidad",cantidad); -// arma.getModifiedData().put("motivocatalogocode","MOTIVODECOMISO"); -// arma.getModifiedData().put("motivocatalogo",motivocatalogo);//entrega voluntaria - //validar si la serie es repetida - if(mapaSerie.get(armasExcel.getSerie())!=null){ - listaErrores.add("SERIE DUPLICADA" + armasExcel.getSerie()+ " DEL REGISTRO: "+armasExcel.getCont()); - continue; - }else{ - mapaSerie.put(armasExcel.getSerie(),armasExcel.getSerie()); - } - - //ANIADE EL ARMA - listArmas.add(arma); - } - } - LOG.info("ARMAS PROCESADAS 2: "+listArmas.size()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - e.printStackTrace(); - } finally { - numArmasProcesadas=contador-1; - if (!listaErrores.isEmpty()) { - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: "); - mensajeError="ERROR EN LA CARGA DE ARMAS"; - numCorrectas=listArmas.size(); - listArmas.clear(); - }else{ - numCorrectas=listArmas.size(); - } - numArmasError =listaErrores.size(); - } - } - - private TarmArmas armarlistaArmasExcel(String longuitud, String calibre,String clase, String tipoArmaExplosivo, String marca, - String tipoFabricacion, int cont, String serie,String descripcionProvincia,String descripcionCanton) { - TarmArmas armaRegistro = null; - String longuitudCodigo = validarCatalogo(listLongitudes, longuitud); - if(longuitudCodigo==null || longuitudCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DE LA LONGUITUD: "+longuitud.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String calibreCodigo = validarCatalogo(listCalibres, calibre); - if(calibreCodigo==null || calibreCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DEL CALIBRE: "+calibre.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String claseCodigo = validarCatalogo(listClases, clase); - if(claseCodigo==null || claseCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DE LA CLASE: "+clase.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String tipoArmaExplosivoCodigo = validarCatalogo(listTipoArmaExplosivos, tipoArmaExplosivo); - if(tipoArmaExplosivoCodigo==null || tipoArmaExplosivoCodigo.isEmpty()){ - listaErrores.add("LA DESCRIPCI\u00d3N DEL TIPO ARMA EXPLOSIVO: "+tipoArmaExplosivo.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String unidadMedidaPesoCodigo = "UNIDAD"; - - String marcaCodigo = validarCatalogo(listMarcas, marca);// MARCA - if (marcaCodigo == null) { - listaErrores.add("LA MARCA DEL ARMA: "+marca.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - String tipoFabricacionCodigo = validarCatalogo(listTipoFabricacion, tipoFabricacion);// TIPOFABRICACION - if (tipoFabricacionCodigo == null) { - listaErrores.add("EL TIPO DE FABRICACI\u00d3N: "+tipoFabricacion.toString()+" NO EXISTE EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - } - /*Ubicacion Provincia canton*/ - TgeneProvince province=null; - TgeneCanton canton=null; - //provincia - if(mapaProvincia.get("descripcionProvincia")!=null){ - province=(TgeneProvince)mapaProvincia.get(descripcionProvincia); - }else{ - ListlistProvincias=ProvinceController.findxDescripcion("EC", null, descripcionProvincia); - if(listProvincias!=null ){ - if(listProvincias.size()==1){ - province=listProvincias.get(0); - mapaProvincia.get("descripcionProvincia"); - }else{ - listaErrores.add(" EXISTE MAS DE UNA PROVINCIA: "+descripcionProvincia.toString()+" CON ESTA DESCRIPCI\u00d3N, DEL REGISTRO: "+ cont); - return null; - } - }else{ - listaErrores.add(" NO EXISTE LA PROVINCIA: "+descripcionProvincia.toString()+" EN EL CAT\u00c1LOGO, DEL REGISTRO: "+ cont); - return null; - } - } - //canton - if(mapaCanton.get(descripcionProvincia)!=null && province != null && province.getPk()!=null){ - canton=(TgeneCanton)mapaCanton.get(descripcionProvincia); - }else if(province != null && province.getPk()!=null){ - List listCantons= CantonController.find("EC", province.getPk().getProvincecode()); - if(listCantons!=null && listCantons.size()!=0){ - for (TgeneCanton item : listCantons) { - if(item.getDescription().trim().equals(descripcionCanton)){ - canton=item; - mapaCanton.put(descripcionProvincia,item); - break; - } - } - if(canton==null){ - listaErrores.add(" NO EXISTEN CANTONES ASOCIADOS CON LA PROVINCIA: "+descripcionProvincia.toString()+", DEL REGISTRO: "+ cont); - return null; - } - }else{ - listaErrores.add(" NO EXISTEN CANTONES ASOCIADOS CON LA PROVINCIA: "+descripcionProvincia.toString()+", DEL REGISTRO: "+ cont); - return null; - } - } - - if (marcaCodigo == null || tipoFabricacionCodigo == null || province==null || canton==null) { - return null; - } - - if (longuitudCodigo != null && calibreCodigo != null && claseCodigo != null && tipoArmaExplosivoCodigo != null) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo =null; - TipoArmaExplosivoPKExcel tipoArmaPk = validarTipoArma(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo); - if(tipoArmaPk!=null){ - tarmTipoArmaExplosivo=tipoArmaPk.getTipoArmaExplosivoClase(); - }else{ - tarmTipoArmaExplosivo = ImporteTipoArmaExplosivoController.findpk(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo); - if(tarmTipoArmaExplosivo!=null){ - tipoArmaPk = new TipoArmaExplosivoPKExcel(longuitudCodigo, calibreCodigo, claseCodigo,tipoArmaExplosivoCodigo, unidadMedidaPesoCodigo,tarmTipoArmaExplosivo); - listaTipoArmaExplosivoPk.add(tipoArmaPk); - } - } - if (tarmTipoArmaExplosivo != null) { - armaRegistro = new TarmArmas(); - armaRegistro.setMarca(marcaCodigo); - armaRegistro.setMarcacodigo("MARCA"); - armaRegistro.setTipofabricacion(tipoFabricacionCodigo); - armaRegistro.setTipofabricacioncodigo("TIPOFABRICACION"); - //armaRegistro.setColor(colorCodigo); - armaRegistro.setColorcodigo("COLOR"); - armaRegistro.setUnidadmedidacantidad("UNIDAD"); - armaRegistro.setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - armaRegistro.setEstado("REG"); - armaRegistro.setEstadocodigo("ESTADOARMA"); - armaRegistro.setCountrycode("EC"); - armaRegistro.setProvincecode(province.getPk().getProvincecode()); - armaRegistro.setCantoncode(canton.getPk().getCantoncode()); - //armaRegistro.setParroquiacode(""); - // armaRegistro.setCregistro(); - armaRegistro.setCitycode(""); - armaRegistro.setLote(serie); - armaRegistro.setCantidad(cantidad); - // armaRegistro.setSeriecanon(); - // armaRegistro.setDireccion(); - armaRegistro.setFecharegistro(new java.sql.Date(new Date().getTime())); - armaRegistro.setCtipoarmaexplosivo(tarmTipoArmaExplosivo.getPk()); - //armaRegistro.setEstadoDecomiso("INC"); - } else { - listaErrores.add("LA COMBINACION DEL ARMA NO EXISTE EN EL REGISTRO: " + cont+ " "); - } - } - return armaRegistro; - } - - private TipoArmaExplosivoPKExcel validarTipoArma(String longitud, String calibre, - String clase, String tipoarmaexplosivo,String unidadmedidapeso){ - for (TipoArmaExplosivoPKExcel item : listaTipoArmaExplosivoPk) { - if(longitud.equals(item.getLongitud()) && - calibre.equals(item.getCalibre()) && - clase.equals(item.getClase()) && - tipoarmaexplosivo.equals(item.getTipoarmaexplosivo()) && - unidadmedidapeso.equals(item.getUnidadmedidapeso()) ){ - return item; - } - } - return null; - } - - public String validarCatalogo(List listCatalogo,String descripcion) { - String codigo = null; - for (TgeneCatalogDetail item : listCatalogo) { - if (item.getDescription().equals(descripcion)) { - codigo = item.getPk().getCatalog(); - break; - } - } - return codigo; - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - private Boolean celdaVacia(Cell celda) { - Boolean vacia = false; - if (celda == null || celda.getCellType() == Cell.CELL_TYPE_BLANK|| - (celda.getCellType() == Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())) { - vacia = true; - } - return vacia; - } - - @SuppressWarnings("finally") - private File generarArchivoError(Long key) { - if (listaErrores.isEmpty()) { - return null; - } - PrintWriter escribir = null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog" + key, ".txt"); - escribir = new PrintWriter(archivo); - for (String err : listaErrores) { - escribir.print(err + "\r\n"); - } - limpiar(); - } catch (IOException e) { - e.printStackTrace(); - } finally { - escribir.flush(); - escribir.close(); - return archivo; - } - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo() { - if(listaErrores!=null && listaErrores.size()>0){ - Long key = new Date().getTime(); - File archivoTemporal = generarArchivoError(key); - if (archivoTemporal == null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition","attachment; filename=errorlog" + key + ".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - FacesContext.getCurrentInstance().responseComplete(); - } catch (Exception e) { - } - }else{ - MessageHelper.setMessageError("NO TIENE ERRORES"); - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar() { - try { - create(); - while (lrecord.iterator().hasNext()) { - record = lrecord.get(0); - remove(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - - public void codigoCiudad() { - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - public String getMensajeError() { - return mensajeError; - } - - public void setMensajeError(String mensajeError) { - this.mensajeError = mensajeError; - } - - public Integer getNumArmasProcesadas() { - return numArmasProcesadas; - } - - public void setNumArmasProcesadas(Integer numArmasProcesadas) { - this.numArmasProcesadas = numArmasProcesadas; - } - - public Integer getNumArmasError() { - return numArmasError; - } - - public void setNumArmasError(Integer numArmasError) { - this.numArmasError = numArmasError; - } - - public String getNumeroRecibo() { - return numeroRecibo; - } - - public void setNumeroRecibo(String numeroRecibo) { - this.numeroRecibo = numeroRecibo; - } - -// public TarmCentroControl getCentroControl() { -// return centroControl; -// } -// -// public void setCentroControl(TarmCentroControl centroControl) { -// this.centroControl = centroControl; -// } - - public String getCentroControlNombreLogeado() { - return centroControlNombreLogeado; - } - - public void setCentroControlNombreLogeado(String centroControlNombreLogeado) { - this.centroControlNombreLogeado = centroControlNombreLogeado; - } - - public Integer getNumCorrectas() { - return numCorrectas; - } - - public void setNumCorrectas(Integer numCorrectas) { - this.numCorrectas = numCorrectas; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteTipoArmaExplosivoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteTipoArmaExplosivoController.java.svn-base deleted file mode 100644 index a199bf9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/ImporteTipoArmaExplosivoController.java.svn-base +++ /dev/null @@ -1,115 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; - - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImporteTipoArmaExplosivoController extends - AbstractController { - - - public ImporteTipoArmaExplosivoController() throws Exception { - super(TarmTipoArmaExplosivo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "IMPORTETIPOARMAEXPLOSIVO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Find para encontrar el pk mediante las caracteristicas. - */ - public static TarmTipoArmaExplosivo findpk(String longitud, String calibre, - String clase, String tipoarmaexplosivo,String unidadmedidapeso) { - try { - ImporteTipoArmaExplosivoController cc = new ImporteTipoArmaExplosivoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("longitud", longitud); - cc.addFilter("calibre", calibre); - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.addFilter("unidadmedidapeso", unidadmedidapeso); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoDatosTipoTramite.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoDatosTipoTramite.java.svn-base deleted file mode 100644 index a920332..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoDatosTipoTramite.java.svn-base +++ /dev/null @@ -1,892 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class IngresoDatosTipoTramite extends AbstractController { - - /** - * Variable auxiliar para bloquerar los campos al crear o editar - */ - private String editarReg; - /** - * Variables de tipo boolean para selecionar si registroGuardia - */ - private boolean registroGuardia; - /** - * Variables de tipo boolean para selecionar si tiene logo - */ - private boolean logo; - /** - * Variables de tipo boolean para selecionar si registroArmas - */ - private boolean registroArmas; - /** - * Variables de tipo boolean para selecionar si registroAgenciasSucursales - */ - private boolean registroAgenciasSucursales; - /** - * Variables de tipo boolean para selecionar si requiereEvaluacion - */ - private boolean requiereEvaluacion; - /** - * Variables de tipo boolean para selecionar si requiereInspeccion - */ - private boolean requiereInspeccion; - /** - * Variables de tipo boolean para selecionar documentosHabilitantes - */ - private boolean documentosHabilitantes; - /** - * Variables de tipo boolean para selecionar reimpresion - */ - private boolean reimpresion; - /** - * Variables de tipo boolean para selecionar si la transaccion es sancionable - */ - private boolean sancionable; - /** - * Valida caducidad tramite padre - */ - private boolean caducidadTramitePadreBln; - /** - * Valida caducidad tramite padre alterno - */ - private boolean caducidadTramitePadreAltBln; - /** - * Valida si visualiza la fecha de expiracion - */ - private boolean visualizaFechaExpiracionBln; - /** - * Variables de tipo boolean para selecionar si requiereJurisdiccion - */ - private boolean requiereJurisdiccion; - /** - * Catalogo de tipos de tramites - */ - private List ltipoTramite; - /** - * Catalogo de Autorizacion - */ - private List ltipoAutorizacion; - /** - * Catalogo de categoria - */ - private List lcategoria; - /** - * Catalogo de tipos de Uso actividad - */ - private List lusoActividad; - /** - * Catalogo de tipos de Costo - */ - private List ltipoCosto; - /** - * Catalogo de Vigencia de meses - */ - private List lvigenciaMeses; - /** - * Catalogo de tipos de archivo - */ - private List ltipoArchivo; - /** - * Catalogo de tipos de caminos para el flujo - */ - private List lflujoTramite; - /** - * Catalogo de tipos de archivo - */ - private List lestadosarma; - /** - * Catalogo de tipos de fabricacion - */ - private List ltipofabricacionarma; - /** - * Catalogo de tipos de archivo - */ - private List ltipoPersona; - /** - * Catalogo de tipos de archivo - */ - private List ljurisdiccion; - /** - * Arreglo de los estados seleccionados - */ - private String[] selectedEstados; - /** - * Arreglo de los tipos de fabricacion seleccionados - */ - private String[] selectedTipoFabric; - - private String descripcionTrmitePadre; - - private String descripcionTrmitePadreAlt; - - public IngresoDatosTipoTramite() throws Exception { - super(TarmTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRAMITE"; - //CARGA DE CATALOGOS - ltipoTramite=CatalogDetailController.find("TIPOTRAMITE"); - ltipoAutorizacion=CatalogDetailController.find("TIPOAUTORIZACION"); - lcategoria=CatalogDetailController.find("CATEGORIA"); - lusoActividad=CatalogDetailController.find("USOACTIVIDAD"); - ltipoCosto=CatalogDetailController.find("TIPOCOSTO"); - lvigenciaMeses=CatalogDetailController.find("VIGENCIAMESES"); - //ordena la lista lvigenciaMeses - Collections.sort(lvigenciaMeses, new Comparator() { - public int compare(TgeneCatalogDetail p1, TgeneCatalogDetail p2) { - return new Integer(p1.getDescription()).compareTo(new Integer(p2.getDescription())); - } - }); - - ltipoArchivo=CatalogDetailController.find("TIPOARCHIVO"); - lflujoTramite=CatalogDetailController.find("FLUJOTRAMITE"); - lestadosarma=CatalogDetailController.find("ESTADOARMA"); - setLtipofabricacionarma(CatalogDetailController.find("TIPOFABRICACION")); - ltipoPersona=CatalogDetailController.find("PERSONTYPE"); - ljurisdiccion=CatalogDetailController.find("JURISDICCION"); - Collections.swap(ljurisdiccion, 0, 2); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - SubQuery stipoTramite= new SubQuery - ("TgeneCatalogDetail", "description", "destipoTramite", "i.pk.catalog = t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo"); - SubQuery stipoAutorizacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoAutorizacion", "i.pk.catalog = t.tipoautorizacion and i.pk.catalogcode=t.tipoautorizacioncodigo"); - SubQuery scategoria= new SubQuery - ("TgeneCatalogDetail", "description", "descategoria", "i.pk.catalog = t.categoria and i.pk.catalogcode=t.categoriacodigo"); - SubQuery susoactividad= new SubQuery - ("TgeneCatalogDetail", "description", "desusoactividad", "i.pk.catalog = t.usoactividad and i.pk.catalogcode=t.usoactividadcodigo"); - SubQuery stipocosto= new SubQuery - ("TgeneCatalogDetail", "description", "destipocosto", "i.pk.catalog = t.tipocosto and i.pk.catalogcode=t.tipocostocodigo"); - SubQuery svigencia= new SubQuery - ("TgeneCatalogDetail", "description", "desvigencia", "i.pk.catalog = t.vigencia and i.pk.catalogcode=t.vigenciacodigo"); - SubQuery stipoarchivo= new SubQuery - ("TgeneCatalogDetail", "description", "destipoarchivo", "i.pk.catalog = t.tipoarchivo and i.pk.catalogcode=t.tipoarchivocodigo"); - SubQuery sjurisdiccion= new SubQuery - ("TgeneCatalogDetail", "description", "desjurisdiccion", "i.pk.catalog = t.jurisdiccion and i.pk.catalogcode=t.jurisdiccioncode"); - dto.addSubQuery(stipoTramite); - dto.addSubQuery(stipoAutorizacion); - dto.addSubQuery(scategoria); - dto.addSubQuery(susoactividad); - dto.addSubQuery(stipocosto); - dto.addSubQuery(svigencia); - dto.addSubQuery(stipoarchivo); - dto.addSubQuery(sjurisdiccion); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - if(!dtosave.pendingProcess()){ - return; - } - - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para cargar las variables para editar - */ - public void loadEdit() { - System.out.println("cargar"); - editarReg="SI"; - registroGuardia = ((record.getRegistroguardia() != null) && record.getRegistroguardia().equals("Y") ? true : false); - registroArmas = ((record.getRegistroarmas() != null) && record.getRegistroarmas().equals("Y") ? true : false); - registroAgenciasSucursales = ((record.getRegistroagenciasucursal() != null) && record.getRegistroagenciasucursal().equals("Y") ? true : false); - requiereEvaluacion = ((record.getRequiereevaluacion() != null) && record.getRequiereevaluacion().equals("Y") ? true : false); - requiereInspeccion = ((record.getRequiereinspeccion()!= null) && record.getRequiereinspeccion().equals("Y") ? true : false); - documentosHabilitantes = ((record.getDocumentohabilitante() != null) && record.getDocumentohabilitante().equals("Y") ? true : false); - reimpresion=((record.getReimpresion() != null) && record.getReimpresion().equals("Y") ? true : false); - logo=((record.getLogo()!= null) && record.getLogo().equals("Y") ? true : false); - sancionable=((record.getSancionable()!= null) && record.getSancionable().equals("Y") ? true : false); - caducidadTramitePadreBln =((record.getValidacaducidadpadre()!= null) && record.getValidacaducidadpadre().equals("Y") ? true : false); - caducidadTramitePadreAltBln=((record.getValidacaducidadpadrealt()!= null) && record.getValidacaducidadpadrealt().equals("Y") ? true : false); - visualizaFechaExpiracionBln=((record.getValidaFechaExpiracion()!= null) && record.getValidaFechaExpiracion().equals("Y") ? true : false); - requiereJurisdiccion = ((record.getTipoautorizacion()!= null) && record.getTipoautorizacion().equals("6") ? true : false); - - if(record.getEstados()!=null){ - selectedEstados = record.getEstados().split(","); - }else{ - selectedEstados=null; - } - - if(record.getTipofabricacion()!=null){ - selectedTipoFabric = record.getTipofabricacion().split(","); - - }else{ - selectedTipoFabric=null; - } - - if(record.getCtramitepadre()!=null){ - TarmTramite tarmTramite= find(record.getCtramitepadre().toString()); - descripcionTrmitePadre=tarmTramite.getPk().toString()+": "+tarmTramite.getModifiedData().get("destipoTramite")+" "+ - tarmTramite.getModifiedData().get("destipoAutorizacion")+" "+tarmTramite.getModifiedData().get("descategoria")+" "+ - tarmTramite.getModifiedData().get("desusoactividad"); - }else{ - descripcionTrmitePadre=null; - } - if(record.getCtramitepadrealt()!=null){ - TarmTramite tarmTramite= find(record.getCtramitepadrealt().toString()); - descripcionTrmitePadreAlt=tarmTramite.getPk().toString()+": "+tarmTramite.getModifiedData().get("destipoTramite")+" "+ - tarmTramite.getModifiedData().get("destipoAutorizacion")+" "+tarmTramite.getModifiedData().get("descategoria")+" "+ - tarmTramite.getModifiedData().get("desusoactividad"); - }else{ - descripcionTrmitePadreAlt=null; - } - } - - @Override - public void create() throws Exception{ - System.out.println("create"); - editarReg=null; - - super.create(); - registroGuardia=Boolean.FALSE; - registroArmas=Boolean.FALSE; - registroAgenciasSucursales=Boolean.FALSE; - requiereEvaluacion=Boolean.FALSE; - requiereInspeccion=Boolean.FALSE; - documentosHabilitantes=Boolean.FALSE; - reimpresion=Boolean.FALSE; - logo=Boolean.FALSE; - sancionable=Boolean.FALSE; - selectedEstados=null; - setSelectedTipoFabric(null); - descripcionTrmitePadre=null; - descripcionTrmitePadreAlt=null; - caducidadTramitePadreBln=Boolean.FALSE; - caducidadTramitePadreAltBln=Boolean.FALSE; - visualizaFechaExpiracionBln=Boolean.TRUE; - requiereJurisdiccion=Boolean.FALSE; - - } - - @Override - public void update() throws Exception { - this.record.setTipotramitecodigo("TIPOTRAMITE"); - this.record.setTipoautorizacioncodigo("TIPOAUTORIZACION"); - this.record.setCategoriacodigo("CATEGORIA"); - this.record.setUsoactividadcodigo("USOACTIVIDAD"); - this.record.setTipocostocodigo("TIPOCOSTO"); - this.record.setVigenciacodigo("VIGENCIAMESES"); - this.record.setTipoarchivocodigo("TIPOARCHIVO"); - this.record.setFlujotramitecode("FLUJOTRAMITE"); - this.record.setTipopersonacode("PERSONTYPE"); - this.record.setJurisdiccioncode("JURISDICCION"); - - //validaciones para la vista - if(editarReg==null || !editarReg.equals("SI")){ - catalogos(ltipoTramite, record.getTipotramite(), "destipoTramite"); - catalogos(ltipoAutorizacion, record.getTipoautorizacion(), "destipoAutorizacion"); - catalogos(lcategoria, record.getCategoria(), "descategoria"); - catalogos(lusoActividad, record.getUsoactividad(), "desusoactividad"); - } - catalogos(ltipoCosto, record.getTipocosto(), "destipocosto"); - catalogos(lvigenciaMeses, record.getVigencia(), "desvigencia"); - catalogos(ltipoArchivo, record.getTipoarchivo(), "destipoarchivo"); - if(record.getJurisdiccion() == null || record.getJurisdiccion().equals("")){ - record.setJurisdiccion("JURECU"); - } - catalogos(ljurisdiccion, record.getJurisdiccion(), "desjurisdiccion"); - - onChangeRegistroArmas(); - onChangeRegistroGuardia(); - onChangeRegistroAgenciaSucursal(); - onChangeRequiereEvaluacion(); - onChangeRequiereInspeccion(); - onChangeDocumentosHabilitantes(); - onChangeReimpresion(); - onChangeLogo(); - onChangeSancionable(); - onChangeCaducidadTramPadre(); - onChangeCaducidadTramPadreAlt(); - - //recorre la lsita de estado - this.record.setEstados(null); - for(String estado:selectedEstados){ - if(this.record.getEstados()==null || this.record.getEstados().trim().length()==0){ - this.record.setEstados(estado); - } - this.record.setEstados(record.getEstados()+","+estado); - } - //recorre la lsita de tipoFabricacion - this.record.setTipofabricacion(null); - for(String tipoFac:selectedTipoFabric){ - if(this.record.getTipofabricacion()==null || this.record.getTipofabricacion().trim().length()==0){ - this.record.setTipofabricacion(tipoFac); - } - this.record.setTipofabricacion(record.getTipofabricacion()+","+tipoFac); - } - - if(record.getNumeromaxarmas()!=null && record.getNumeromaxarmas()==0l){ - record.setNumeromaxarmas(null); - } - super.update(); - } - - /** - * Metodo para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRegistroArmas() { - if (registroArmas) { - record.setRegistroarmas("Y"); - } else { - record.setRegistroarmas("N"); - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRegistroGuardia() { - if (registroGuardia) { - record.setRegistroguardia("Y"); - } else { - record.setRegistroguardia("N"); - } - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRegistroAgenciaSucursal() { - if (registroAgenciasSucursales) { - record.setRegistroagenciasucursal("Y"); - } else { - record.setRegistroagenciasucursal("N"); - } - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRequiereEvaluacion() { - if (requiereEvaluacion) { - record.setRequiereevaluacion("Y"); - } else { - record.setRequiereevaluacion("N"); - } - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRequiereInspeccion() { - if (requiereInspeccion) { - record.setRequiereinspeccion("Y"); - } else { - record.setRequiereinspeccion("N"); - } - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeDocumentosHabilitantes() { - if (documentosHabilitantes) { - record.setDocumentohabilitante("Y"); - } else { - record.setDocumentohabilitante("N"); - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeReimpresion() { - if (reimpresion) { - record.setReimpresion("Y"); - } else { - record.setReimpresion("N"); - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeLogo() { - if (logo) { - record.setLogo("Y"); - } else { - record.setLogo("N"); - } - } - - /** - * Método para manejar el evento change en el CheckBox sancionable - */ - public void onChangeCaducidadTramPadre() { - if (caducidadTramitePadreBln) { - record.setValidacaducidadpadre("Y"); - } else { - record.setValidacaducidadpadre("N"); - } - } - - public void onChangeCaducidadTramPadreAlt() { - if (caducidadTramitePadreAltBln) { - record.setValidacaducidadpadrealt("Y"); - } else { - record.setValidacaducidadpadrealt("N"); - } - } - - public void onChangeVisualizaFechaExpiracion() { - if (visualizaFechaExpiracionBln) { - record.setValidaFechaExpiracion("Y"); - record.setVisualizarPorFechaExpiracion(""); - } else { - record.setValidaFechaExpiracion("N"); - if(record.getVisualizarPorFechaExpiracion()==null || record.getVisualizarPorFechaExpiracion().isEmpty()){ - record.setVisualizarPorFechaExpiracion("AL CANJEAR ARMA"); - } - - } - } - - /** - * Método para manejar el evento change en el CheckBox sancionable - */ - public void onChangeSancionable() { - if (sancionable) { - record.setSancionable("Y"); - } else { - record.setSancionable("N"); - } - } - - /** - * Método para manejar el render en el ComboBox jurisdiccion - */ - public void onChangeJurisdiccion() { - requiereJurisdiccion = ((record.getTipoautorizacion()!= null) && record.getTipoautorizacion().equals("6") ? true : false); - } - - public static TarmTramite find(String ctramite) { - try { - IngresoDatosTipoTramite cc = new IngresoDatosTipoTramite(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", ctramite); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List find(String tipoTramite,String tipoAutorizacion, String categria, String usoActividad) { - try { - IngresoDatosTipoTramite cc = new IngresoDatosTipoTramite(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("tipotramite", tipoTramite); - cc.addFilter("tipoautorizacion", tipoTramite); - cc.addFilter("categoria", tipoTramite); - cc.addFilter("usoActividad", tipoTramite); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaTramiteLov() { - Map> params = new HashMap<>(); - Listpa=new ArrayList<>(); - if(record.getPk()!=null){ - pa.add(record.getPk().toString()); - } - params.put("ctramitepadre", pa); - BuscarTramiteLovController.openLov(params); - } - - /** - * Regresa del LOV de tramite - * @param event - */ - public void onReturnTramite(SelectEvent event) { - TarmTramite tarmTramite = (TarmTramite) event.getObject(); - record.setCtramitepadre(tarmTramite.getPk()); - descripcionTrmitePadre=tarmTramite.getPk().toString()+": "+tarmTramite.getModifiedData().get("destipoTramite")+" "+ - tarmTramite.getModifiedData().get("destipoAutorizacion")+" "+tarmTramite.getModifiedData().get("descategoria")+" "+ - tarmTramite.getModifiedData().get("desusoactividad"); - } - - /** - * Regresa del LOV de tramiteAlt - * @param event - */ - public void onReturnTramiteAlt(SelectEvent event) { - TarmTramite tarmTramite = (TarmTramite) event.getObject(); - record.setCtramitepadrealt(tarmTramite.getPk()); - descripcionTrmitePadreAlt=tarmTramite.getPk().toString()+": "+tarmTramite.getModifiedData().get("destipoTramite")+" "+ - tarmTramite.getModifiedData().get("destipoAutorizacion")+" "+tarmTramite.getModifiedData().get("descategoria")+" "+ - tarmTramite.getModifiedData().get("desusoactividad"); - } - - /** - * Limpia el tramite padre - * @param event - */ - public void eliminarTramitePadre() { - record.setCtramitepadre(null); - descripcionTrmitePadre=null; - } - - /** - * Limpia el tramite padre alterno - * @param event - */ - public void eliminarTramitePadreAlt() { - record.setCtramitepadrealt(null); - descripcionTrmitePadreAlt=null; - } - - public boolean isRegistroGuardia() { - return registroGuardia; - } - - public void setRegistroGuardia(boolean registroGuardia) { - this.registroGuardia = registroGuardia; - } - - public boolean isRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(boolean registroArmas) { - this.registroArmas = registroArmas; - } - - public boolean isRegistroAgenciasSucursales() { - return registroAgenciasSucursales; - } - - public void setRegistroAgenciasSucursales(boolean registroAgenciasSucursales) { - this.registroAgenciasSucursales = registroAgenciasSucursales; - } - - public boolean isRequiereEvaluacion() { - return requiereEvaluacion; - } - - public void setRequiereEvaluacion(boolean requiereEvaluacion) { - this.requiereEvaluacion = requiereEvaluacion; - } - - public boolean isRequiereInspeccion() { - return requiereInspeccion; - } - - public void setRequiereInspeccion(boolean requiereInspeccion) { - this.requiereInspeccion = requiereInspeccion; - } - - public boolean isDocumentosHabilitantes() { - return documentosHabilitantes; - } - - public void setDocumentosHabilitantes(boolean documentosHabilitantes) { - this.documentosHabilitantes = documentosHabilitantes; - } - - public List getLtipoTramite() { - return ltipoTramite; - } - - public void setLtipoTramite(List ltipoTramite) { - this.ltipoTramite = ltipoTramite; - } - - public List getLcategoria() { - return lcategoria; - } - - public void setLcategoria(List lcategoria) { - this.lcategoria = lcategoria; - } - - public List getLusoActividad() { - return lusoActividad; - } - - public void setLusoActividad(List lusoActividad) { - this.lusoActividad = lusoActividad; - } - - public List getLtipoCosto() { - return ltipoCosto; - } - - public void setLtipoCosto(List ltipoCosto) { - this.ltipoCosto = ltipoCosto; - } - - public List getLvigenciaMeses() { - return lvigenciaMeses; - } - - public void setLvigenciaMeses(List lvigenciaMeses) { - this.lvigenciaMeses = lvigenciaMeses; - } - - public List getLtipoArchivo() { - return ltipoArchivo; - } - - public void setLtipoArchivo(List ltipoArchivo) { - this.ltipoArchivo = ltipoArchivo; - } - - public List getLtipoAutorizacion() { - return ltipoAutorizacion; - } - - public void setLtipoAutorizacion(List ltipoAutorizacion) { - this.ltipoAutorizacion = ltipoAutorizacion; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - public List getLflujoTramite() { - return lflujoTramite; - } - - public void setLflujoTramite(List lflujoTramite) { - this.lflujoTramite = lflujoTramite; - } - - public boolean isReimpresion() { - return reimpresion; - } - - public void setReimpresion(boolean reimpresion) { - this.reimpresion = reimpresion; - } - - public String[] getSelectedEstados() { - return selectedEstados; - } - - public void setSelectedEstados(String[] selectedEstados) { - this.selectedEstados = selectedEstados; - } - - public List getLestadosarma() { - return lestadosarma; - } - - public void setLestadosarma(List lestadosarma) { - this.lestadosarma = lestadosarma; - } - - public String getDescripcionTrmitePadre() { - return descripcionTrmitePadre; - } - - public void setDescripcionTrmitePadre(String descripcionTrmitePadre) { - this.descripcionTrmitePadre = descripcionTrmitePadre; - } - - public String getDescripcionTrmitePadreAlt() { - return descripcionTrmitePadreAlt; - } - - public void setDescripcionTrmitePadreAlt(String descripcionTrmitePadreAlt) { - this.descripcionTrmitePadreAlt = descripcionTrmitePadreAlt; - } - - public List getLtipoPersona() { - return ltipoPersona; - } - - public void setLtipoPersona(List ltipoPersona) { - this.ltipoPersona = ltipoPersona; - } - - public List getLjurisdiccion() { - return ljurisdiccion; - } - - public void setLjurisdiccion(List ljurisdiccion) { - this.ljurisdiccion = ljurisdiccion; - } - - public boolean isLogo() { - return logo; - } - - public void setLogo(boolean logo) { - this.logo = logo; - } - - public boolean isSancionable() { - return sancionable; - } - - public void setSancionable(boolean sancionable) { - this.sancionable = sancionable; - } - - public boolean isCaducidadTramitePadreBln() { - return caducidadTramitePadreBln; - } - - public void setCaducidadTramitePadreBln(boolean caducidadTramitePadreBln) { - this.caducidadTramitePadreBln = caducidadTramitePadreBln; - } - - public boolean isCaducidadTramitePadreAltBln() { - return caducidadTramitePadreAltBln; - } - - public void setCaducidadTramitePadreAltBln(boolean caducidadTramitePadreAltBln) { - this.caducidadTramitePadreAltBln = caducidadTramitePadreAltBln; - } - - public boolean isVisualizaFechaExpiracionBln() { - return visualizaFechaExpiracionBln; - } - - public void setVisualizaFechaExpiracionBln(boolean visualizaFechaExpiracionBln) { - this.visualizaFechaExpiracionBln = visualizaFechaExpiracionBln; - } - - public boolean isRequiereJurisdiccion() { - return requiereJurisdiccion; - } - - public void setRequiereJurisdiccion(boolean requiereJurisdiccion) { - this.requiereJurisdiccion = requiereJurisdiccion; - } - - public List getLtipofabricacionarma() { - return ltipofabricacionarma; - } - - public void setLtipofabricacionarma(List ltipofabricacionarma) { - this.ltipofabricacionarma = ltipofabricacionarma; - } - - public String[] getSelectedTipoFabric() { - return selectedTipoFabric; - } - - public void setSelectedTipoFabric(String[] selectedTipoFabric) { - this.selectedTipoFabric = selectedTipoFabric; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.netbeans-base deleted file mode 100644 index 51f085d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.netbeans-base +++ /dev/null @@ -1,1715 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.ArmasController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersonaKey; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -//import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora para la entidad TarmArma - * Incluye metodo de consulta para la busqueda de persona y registro - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class IngresoInventarioController extends AbstractController { - - //Variabgles globales - private Integer personcode; - - private Boolean descargar; - private String csolicitud; - InputStream filei; - - //Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - - Date fechaActual; - private List tiposRegistro; - private TgeneCatalogDetail tipoRegistro; - - //Detalle del material - //Pais - private List lpaises; - private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; - private TgeneCity ciudad; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Variables de las armas - private TcustPersonDetail usuario; - private TcustPersonAddress direccion; - private List listaFilas; - private List listaErrores; -// private List cuposArmas; - - //private BigDecimal pesoTotal; - private TarmTipoArmaExplosivo tipoArmaExplosivo; - private List listaArmas; - private ArmaExcell armaexcell; - - private List laexel; - private List armas=new ArrayList(); - private List totalesPersoan=new ArrayList(); - - //Aeropuertos - List laeropuertos=new ArrayList<>(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - -// @ManagedProperty(value = "#{comercianteCupoController}") -// private ComercianteCupoController comercianteCupoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalPersonaController; - - @ManagedProperty(value = "#{inventarioSubidoController}") - private InventarioSubidoController inventarioSubidoController; - - private List ldocumentospersona; - - private String clase; - public IngresoInventarioController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "ARMAS"; - this.create(); - - //Globales - descargar=false; - csolicitud=null; - - //Datos generales - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo los datos de la persona - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - - //Fecha actual - this.fechaActual=Calendar.getInstance().getTime(); - - //Tipos de registro - ListtiposRegistroAux = CatalogDetailController.find("TIPOREGISTRO", "REG"); - tiposRegistro = new ArrayList(); - for(TgeneCatalogDetail tipoReg : tiposRegistroAux){ - if(tipoReg.getPk().getCatalog().equalsIgnoreCase("PRO")){ - tiposRegistro.add(tipoReg); - } - } - - //Detalle del material - lpaises=CountryController.find(); - registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - - //Obteniendo la direccion de la persona - String tipoDireccion=""; - - if(detallesPersona!=null){ - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - } - //direccion= personAddressController.findByPersonCode(usuario.getPk().getPersoncode().toString()); - direccion= personAddressController.findPrincipal(String.valueOf(usuario.getPk().getPersoncode().toString())) ; - - - //Imprtacion - this.lprovincias=ProvinceController.find("EC"); - - //Armas - listaErrores = new ArrayList(); - - //Controlador de totales -// this.totalPersonaController=new TotalPersonaController(); -// this.totalPersonaController.create(); -// this.totalPersonaController.setLrecord(new ArrayList()); - - RegistroArmController registroArmas = new RegistroArmController(); - registroArmas.init(); - registroArmas.setRecperpage(3000000); - registroArmas.addFilter("personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - registroArmas.query(); - this.addFilter("estado", "REG"); - filtro(registroArmas.getLrecord()); - - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - public void querydatabaseMarcaSerie(String cregistro,String marca, String serie) { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo");// and i.clase='" + clase + "' and i.tipoarmaexplosivo='" + tipoArmaExplosivo + "'"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado !='CDP' and t.lote " + (serie==null?" is null":("= '" + serie + "'")) + " and t.cregistro= '" - + cregistro + "' and t.marca " + (marca==null?" is null":("= '" + marca + "'"))); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); -/* String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - }*/ - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - -/* Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE");*/ - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecOked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para armar el registro - * @param lsolicitud - */ - public void filtro(List lsolicitud){ - - for(TarmRegistroArmas soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="(cregistro="+soli.getPk(); - } - else{ - csolicitud+=" or cregistro="+soli.getPk(); - } - } - csolicitud+=")"; - - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - - registroArmasController.clearAll(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(), dtosaveregistroarma); - - totalPersonaController.clearAll(); - DtoSave dtosavetotalper = totalPersonaController.getDtoSave(true); - dtosavetotalper.setPosition(3); - msave.put(totalPersonaController.getBeanalias(), dtosavetotalper); - - DtoSave dtoInventarioSubido = inventarioSubidoController.getDtoSave(true); - dtoInventarioSubido.setPosition(4); - msave.put(inventarioSubidoController.getBeanalias(), dtoInventarioSubido); - - request.setSaveTables(msave); - request.getModifiedData().put("LISTAARMAS", this.armas); - request.getModifiedData().put("LISTATOTALES", this.totalesPersoan); - request.getModifiedData().put("REGISTRO", this.registro); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmasController.postCommit(resp); - this.totalPersonaController.postCommit(resp); - this.inventarioSubidoController.postCommit(resp); - //this.totalPersonaController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que carga y valida el contenido de un archivo excel con información de armas - * @param event - */ - public void cargarArchivo(FileUploadEvent event){ - - HashMap mapaTotalesTemporales = new HashMap<>(); - int f1=0; - try { - // Verifico si ya se hizo una carga de inventario previa para al clase seleccionada - List inventarioPrevioIngresadoLst = InventarioSubidoController.findXPersonaYClase(this.usuario.getPk().getPersoncode().toString(), clase); - if(inventarioPrevioIngresadoLst!=null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_inventarioCargadoPreviamente")); - return; - }else{ - TarmInventarioSubidoPorPersonaKey pkInventarioSubidoObj = new TarmInventarioSubidoPorPersonaKey(); - pkInventarioSubidoObj.setPersoncode(this.usuario.getPk().getPersoncode()); - pkInventarioSubidoObj.setClase(clase); - TarmInventarioSubidoPorPersona inventarioSubidoObj = new TarmInventarioSubidoPorPersona(); - inventarioSubidoObj.setPk(pkInventarioSubidoObj); - java.util.Date today = new java.util.Date(); - java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); - inventarioSubidoObj.setFechacarga(fechaReporte); - inventarioSubidoObj.setIsnew(Boolean.TRUE); - inventarioSubidoController.update(inventarioSubidoObj); - } - - //Completando los datos del registro - this.registro.setPersoncode(this.usuario.getPk().getPersoncode()); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); - this.registro.setFechasolicitud(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - //Inicializando las listas - listaFilas=new ArrayList(); - listaArmas= new ArrayList(); - listaErrores= new ArrayList(); - //caraga el excel - UploadedFile selectedFile = event.getFile(); - InputStream archivo=selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - //Iterando sobre las filas - int cont=0; - Iterator rowIterator = hoja.iterator(); - //Cargando el contenido de las celdas a una lista de objetos - while(rowIterator.hasNext()) { - cont++; - Row row = rowIterator.next(); - if(cont>1){ - Cell numero=row.getCell(0); - Cell serie=row.getCell(1); - Cell clase=row.getCell(2); - Cell longitud=row.getCell(3); - Cell tipo=row.getCell(4); - Cell calibre=row.getCell(5); - Cell color=row.getCell(6); - Cell marca=row.getCell(7); - Cell cantidad=row.getCell(8); - Cell umcantidad=row.getCell(9); - Cell peso=row.getCell(10); - Cell umpeso=row.getCell(11); - Boolean filaEnBlanco=false; - if(this.celdaVacia(numero) && this.celdaVacia(serie) && this.celdaVacia(clase) - && this.celdaVacia(longitud) && this.celdaVacia(tipo) && this.celdaVacia(calibre) - && this.celdaVacia(color) && this.celdaVacia(marca) && this.celdaVacia(cantidad) - && this.celdaVacia(umcantidad) && this.celdaVacia(peso) && this.celdaVacia(umpeso)){ - filaEnBlanco=true; - }else{ - listaFilas.add(row); - } - if(!filaEnBlanco){ - //arma la lista de las armas en un dto aniade en la lista listaArmas - armarlistaArmasExcel(numero, serie, clase, longitud, tipo, calibre, color, marca, cantidad, umcantidad, peso, umpeso, row); - } - } - } - //Verificando las filas duplicadas en el archivo - verificarFilasDuplicadas(listaArmas); - if(this.registro.getTiporegistro().equals("PRO")){ - //Verificando las filas duplicadas en la BD - verificarArmasExistentesEnBaseDeDatos(listaArmas, this.usuario.getPk().getPersoncode()); - } - Boolean contieneSerie=false; - //RECORRE LA LISTA DE LAS ARMAS y valida el CUPO DEL ARMA - //Validando los campos requeridos que estan vacios - recorreListaArmasExcel(contieneSerie,f1,mapaTotalesTemporales); - //Seteando los atributos de las armas y totales si no hay ningun error - if(listaErrores.isEmpty()){ - for (int i = 0; i < listaArmas.size(); i++) { - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada() && listaArmas.get(i).getExisteCatalogo() - && listaArmas.get(i).getExisteTARMTIPOARMAEXPLOSIVO()){ //&& !listaArmas.get(i).getCupoInsuficiente() - //Marca - if(listaArmas.get(i).getCatalogoMarca()!=null){ - listaArmas.get(i).getArma().setMarcacodigo("MARCA"); - listaArmas.get(i).getArma().setMarca(listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - } - //Color - if(listaArmas.get(i).getCatalogoColor()!=null){ - listaArmas.get(i).getArma().setColorcodigo("COLOR"); - listaArmas.get(i).getArma().setColor(listaArmas.get(i).getCatalogoColor().getPk().getCatalog()); - } - //Unidad medida cantidad - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - Double doubleNum=0.0; - //Cargando el catalodo del tipo de unidad de medida - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaCantidad()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoCantidad()); - //Cantidad - Integer intNum=(int)doubleNum.doubleValue(); - listaArmas.get(i).getArma().setCantidad(intNum); - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaPeso()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoPeso()); - //Peso - listaArmas.get(i).getArma().setPeso(new BigDecimal(doubleNum)); - } - } - //Estado DEL ARMA - listaArmas.get(i).getArma().setEstado("REG"); - listaArmas.get(i).getArma().setEstadocodigo("ESTADOARMA"); - if(direccion!=null){ - //Codigo de pais - listaArmas.get(i).getArma().setCountrycode(direccion.getCountrycode()); - //Codigo de provincia - listaArmas.get(i).getArma().setProvincecode(direccion.getProvincecode()); - //Codigo de canton - listaArmas.get(i).getArma().setCantoncode(direccion.getCantoncode()); - //Codigo de parroquia - listaArmas.get(i).getArma().setParroquiacode(direccion.getParroquiacode()); - //Codigo de ciudad - listaArmas.get(i).getArma().setCitycode(direccion.getCitycode()); - } - //Lote - listaArmas.get(i).getArma().setLote(listaArmas.get(i).getSerie()); - //Peso - if(listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().isEmpty()){ - listaArmas.get(i).getArma().setPeso(BigDecimal.valueOf(Double.parseDouble(listaArmas.get(i).getTextoPeso()))); - } - //Direccion - listaArmas.get(i).getArma().setDireccion(direccion.getAddress()); - - //Fecha de registro - listaArmas.get(i).getArma().setFecharegistro(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Tipo de arma explosivo - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setCtipoarmaexplosivo(listaArmas.get(i).getTipoArmaExplosivo().getPk()); - } - armas.add(listaArmas.get(i).getArma()); - } - } - //Se rrecorre el mapa HashMap mapaTotalesTemporales - for (TarmTotalPersona value : mapaTotalesTemporales.values()) { - totalesPersoan.add(value); - } - save(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - }finally{ - if (!listaErrores.isEmpty()) { - listaArmas.clear(); - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: ");// + errores.toString()); - descargar=true; - }else{ - MessageHelper.setMessageInfo("ARCHIVO CARGADO EXITOSAMENTE"); - descargar=false; - } - } - } - /** - * Metodo para cargar los valores del EXCEL EN UNA CLASE DTO(ArmaExcell ) - * @param numero * @param serie * @param clase * @param longitud * @param tipo * @param calibre - * @param color * @param marca * @param cantidad * @param umcantidad * @param peso * @param umpeso * @param row - */ - public void armarlistaArmasExcel(Cell numero,Cell serie,Cell clase,Cell longitud,Cell tipo,Cell calibre,Cell color,Cell marca, - Cell cantidad,Cell umcantidad,Cell peso,Cell umpeso,Row row){ - ArmaExcell arma=new ArmaExcell(); - arma.setTextoNumero(Utilidades.setearValorCelda(numero));//Numero - arma.setSerie(Utilidades.setearValorCelda(serie));//Serie - arma.setClase(Utilidades.setearValorCelda(clase));//Clase - arma.setLongitud(Utilidades.setearValorCelda(longitud));//Longitud - arma.setTipo(Utilidades.setearValorCelda(tipo));//Tipo - arma.setCalibre(Utilidades.setearValorCelda(calibre));//Calibre - arma.setColor(Utilidades.setearValorCelda(color));//Color - arma.setMarca(Utilidades.setearValorCelda(marca));//Marca - arma.setTextoCantidad(Utilidades.setearValorCelda(cantidad));//Cantidad - arma.setUnidadMedidaCantidad(Utilidades.setearValorCelda(umcantidad));//U. Medida Cantidad - arma.setTextoPeso(Utilidades.setearValorCelda(peso));//Peso - arma.setUnidadMedidaPeso(Utilidades.setearValorCelda(umpeso));//U. Medida Peso - - // El ingreso de inventario sera para todas las clases excepto armas de fuego y armas no letales - if(!arma.getClase().equalsIgnoreCase("ARMA DE FUEGO") && !arma.getClase().equalsIgnoreCase("ARMAS NO LETALES")){ - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna clase: "+MsgControlArmas.getProperty("msg_inventarioNoArmasFuegoNiNoLetales")); - return; - } - } - - /** - * Metodo que verifica si existen filas duplicadas en el archivo de excell - * @param listaArmas - */ - private void verificarFilasDuplicadas(List listaArmas){ - for (int i = 0; i < listaArmas.size()-1; i++) { - for (int j = i+1; j < listaArmas.size(); j++) { - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && ((listaArmas.get(i).getSerie().equalsIgnoreCase(listaArmas.get(j).getSerie())) - && listaArmas.get(i).getClase().equalsIgnoreCase(listaArmas.get(j).getClase()) - && listaArmas.get(i).getTipo().equalsIgnoreCase(listaArmas.get(j).getTipo()) - && (!listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") - || (listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") && listaArmas.get(j).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")) - && listaArmas.get(i).getCalibre().equalsIgnoreCase(listaArmas.get(j).getCalibre())) - && listaArmas.get(i).getMarca().equalsIgnoreCase(listaArmas.get(j).getMarca()))){ - listaArmas.get(j).setDuplicada(true); - break; - } - } - } - } - - /** - * @param listaArmas - * @throws Exception - */ - @SuppressWarnings("static-access") - private void verificarArmasExistentesEnBaseDeDatos(List listaArmas, Integer codigoPersona) throws Exception{ - TgeneCatalogDetail codigoClase = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoMarca = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoTipo = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoCalibre = new TgeneCatalogDetail(); - String codigoSerie; - List lstRegistroArmas = registroArmasController.findxPersoncode(String.valueOf(codigoPersona)); - if(lstRegistroArmas==null || listaArmas==null || lstRegistroArmas.isEmpty() || listaArmas.isEmpty()){ - return; - } - for (int i = 0; i < listaArmas.size(); i++) { - codigoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - codigoTipo=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - codigoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - codigoSerie = this.registro.getTiporegistro().equalsIgnoreCase("IMP")?null:listaArmas.get(i).getSerie(); - codigoCalibre=listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")?CatalogDetailController.findByCatalogcodeDescrption("CALIBRE",listaArmas.get(i).getCalibre()):null; - - if((codigoClase==null && (listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().trim().isEmpty())) || (codigoTipo==null && (listaArmas.get(i).getTipo()!=null && !listaArmas.get(i).getTipo().trim().isEmpty())) - || (codigoMarca==null && (listaArmas.get(i).getMarca()!=null && !listaArmas.get(i).getMarca().trim().isEmpty())) || (codigoSerie==null && (listaArmas.get(i).getSerie()!=null && !listaArmas.get(i).getSerie().trim().isEmpty())) - || (codigoCalibre==null && (listaArmas.get(i).getCalibre()!=null && !listaArmas.get(i).getCalibre().trim().isEmpty())) - || listaArmas.get(i).getClase()==null || listaArmas.get(i).getMarca()==null || listaArmas.get(i).getCalibre()==null - || listaArmas.get(i).getClase().isEmpty() || listaArmas.get(i).getMarca().isEmpty() || listaArmas.get(i).getCalibre().isEmpty()){ - continue; - } - for(TarmRegistroArmas registroArmas :lstRegistroArmas){ - List lstArmasEncontradas = findByMarcaSerie(String.valueOf(registroArmas.getPk()),codigoMarca.getPk().getCatalog(), codigoSerie); - if(lstArmasEncontradas!=null){ - for(TarmArmas armas:lstArmasEncontradas){ - TarmTipoArmaExplosivo tipoArma = TiposArmasExplosivosController.findarma(armas.getCtipoarmaexplosivo()); - if(tipoArma.getClase().equalsIgnoreCase(codigoClase.getPk().getCatalog()) && codigoCalibre!=null?tipoArma.getCalibre().equalsIgnoreCase(codigoCalibre.getPk().getCatalog()):true && tipoArma.getTipoarmaexplosivo().equalsIgnoreCase(codigoTipo.getPk().getCatalog())){ - listaArmas.get(i).setDuplicada(true); - break; - } - } - } - } - } - } - /** - * Metodo que recorre la lista de las armas con los valores cargados del EXCEL - * @param contieneSerie - * @param f1 - * @param mapaTotalesTemporales - */ - public void recorreListaArmasExcel(Boolean contieneSerie, int f1,HashMap mapaTotalesTemporales){ - for (int i = 0; i < listaArmas.size(); i++) { - Integer fila=i+1; - f1=i; - Boolean campoCantidad=false; - //0-Datos duplicados - if(listaArmas.get(i).getDuplicada()){ - listaErrores.add("Fila "+fila.toString()+": "+MsgControlArmas.getProperty("msg_datosDuplicados")); - } - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()!=null) && !contieneSerie){ - contieneSerie=true; - listaErrores.add(MsgControlArmas.getProperty("msg_archivoImportacionSerie")); - } - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()==null || listaArmas.get(i).getSerie().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - //2-Clase - if(listaArmas.get(i).getClase()==null || listaArmas.get(i).getClase().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_claseVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //3-Validando que cuando la clase sea ARMA DE FUEGO la longitud no este vacia - }else if(listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()==null || listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //Validando que cuando la clase no sea ARMA DE FUEGO la longitud este vacia - }else if(!listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()!=null && !listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoVacia")); - } - //Carga de catalogos - TgeneCatalogDetail catalogoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - listaArmas.get(i).setCatalogoClase(catalogoClase); - if(catalogoClase!=null && catalogoClase.getPk()!=null && catalogoClase.getPk().getCatalog()!=null && !clase.contains(catalogoClase.getPk().getCatalog())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene permiso para cargar "+catalogoClase.getDescription()); - listaArmas.get(i).setCamposIncompletos(true); - }else if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene ingresado una Clase V\u00e1lida "); - listaArmas.get(i).setCamposIncompletos(true); - } - TgeneCatalogDetail catalogoLongitud=CatalogDetailController.findByCatalogcodeDescrption("LONGITUD", listaArmas.get(i).getLongitud()); - listaArmas.get(i).setCatalogoLongitud(catalogoLongitud); - TgeneCatalogDetail catalogoTipoArma=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - listaArmas.get(i).setCatalogoTipoArma(catalogoTipoArma); - TgeneCatalogDetail catalogoCalibre=CatalogDetailController.findByCatalogcodeDescrption("CALIBRE", listaArmas.get(i).getCalibre()); - listaArmas.get(i).setCatalogoCalibre(catalogoCalibre); - TgeneCatalogDetail catalogoColor=CatalogDetailController.findByCatalogcodeDescrption("COLOR", listaArmas.get(i).getColor()); - listaArmas.get(i).setCatalogoColor(catalogoColor); - TgeneCatalogDetail catalogoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - listaArmas.get(i).setCatalogoMarca(catalogoMarca); - TarmUnidadTipo tipoUnidadSeleccionada =null;// new TarmUnidadTipo(); - if(catalogoClase!=null){ - //Obteniendo la configuracion de TARMUNIDADTIPO - if(!(listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()) && !(listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9,11: "+MsgControlArmas.getProperty("msg_unidadMedidaSoloUna")); - } - String unidadMedidaIngresada = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?listaArmas.get(i).getUnidadMedidaPeso():listaArmas.get(i).getUnidadMedidaCantidad(); - String columnaUnidadMedidaError = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?"Columna 11":"Columna 9"; - if (listaArmas.get(i).getCatalogoTipoArma() == null) { - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: El Tipo de Arma Explosivo no existe en el Catlogo. Revise los espacios entre cada palabra y que este bien escrito."); - listaArmas.get(i).setCamposIncompletos(true); - tipoUnidadSeleccionada=null; - }else { - tipoUnidadSeleccionada= UnidadTipoController.findByClaseAndClasecode(catalogoClase.getPk().getCatalog(), catalogoClase.getPk().getCatalogcode(),listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), unidadMedidaIngresada); - } - if(tipoUnidadSeleccionada!=null && tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()!=null && !tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().isEmpty()){ - if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDAD") || tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDADES")){ - campoCantidad=true; - }else if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("KG")){ - campoCantidad=false; - } - } - else if (tipoUnidadSeleccionada==null){ - listaErrores.add("Fila "+fila.toString()+": "+ columnaUnidadMedidaError + ": " +MsgControlArmas.getProperty("msg_unidadMedidaNoExiste")); - } - } - //4-Tipo - if(listaArmas.get(i).getTipo()==null || listaArmas.get(i).getTipo().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_tipoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - } - //5-Calibre - if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty() - && listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getCalibre()==null || listaArmas.get(i).getCalibre().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreVacio")); - } - //Marca - if(listaArmas.get(i).getMarca()==null || listaArmas.get(i).getMarca().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - if(campoCantidad){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(8).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadValorNumerico")); - } - - //U. Medida Cantidad - if((listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadVacia")); - } - - //Peso - if((listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoNoVacio")); - } - - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoNoVacia")); - } - //Validando que cuando la clase NO sea ARMA DE FUEGO, MUNICION, - //Explosivos, Accesorios, Fuegos Pirotecnicos, Sustancia Quimica, Armas no Letales - //la cantidad y unidad de medida cantidad esten vacios - //y el peso y unidad de medida peso NO esten vacios - }else if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty()){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()!=null && !listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadNoVacia")); - } - //U. Medida Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty() && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadNoVacia")); - } - //Peso - if((listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(10).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoValorNumerico")); - } - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - } - //Verificando que no existan problemas en el arma proveniente del archivo EXCEL - //para validar entonces los datos en la base de datos - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada()){ - //Verificando los datos en los catalogos - //Verificando la existencia de la clase en el catalogo - if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia de la longitud en el catalogo - if(catalogoLongitud==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del tipo de arma en el catalogo - if(catalogoTipoArma==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_noExisteTipoArmaCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del calibre en el catalogo - if(catalogoCalibre==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del color en el catalogo - if(listaArmas.get(i).getColor()!=null && !listaArmas.get(i).getColor().isEmpty()){ - if(catalogoColor==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 6: "+MsgControlArmas.getProperty("msg_colorNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - } - //Verificando la existencia de la marca en el catalogo - if(catalogoMarca==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Validacio 4- Verificando que exista la combinacion clase, longitud, tipo arma y calibre - //en la tabla TARMTIPOARMAEXPLOSIVO - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - if(catalogoClase!=null && catalogoLongitud!=null && catalogoTipoArma!=null && catalogoCalibre!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseLongitudCalibreTipoArma(catalogoLongitud.getPk().getCatalog(), - catalogoCalibre.getPk().getCatalog(), catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getLongitud()+", "+listaArmas.get(i).getTipo()+", "+listaArmas.get(i).getCalibre()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo"); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - }else{ - if(catalogoCalibre!=null && catalogoCalibre.getDescription()!=null && !catalogoCalibre.getDescription().equals("")){ - // Caso donde existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseCalibreTipoArma(catalogoClase.getPk().getCatalog(), catalogoCalibre.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - else{ - // Caso donde no existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseTipo(catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - - } - if(listaArmas.get(i).getCatalogoClase()!=null && listaArmas.get(i).getCatalogoTipoArma()!=null && listaArmas.get(i).getCatalogoMarca()!=null){ - TarmArmas armaBD; - //Si el tipo de registro es de Importacion, el arma se persiste como nueva - //no se busca en la base de datos - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - //Verificando que el arma exista en la base de datos - //si el tipo de registro es de produccion - armaBD=ArmasController.findBySerieMarca(listaArmas.get(i).getSerie(), listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - if(armaBD==null){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - List listaExplosivos=TiposArmasExplosivosController.findByClaseTipoAll(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - if(listaExplosivos==null){ - listaArmas.get(i).setExisteBaseDatos(false); - }else{ - listaArmas.get(i).setExisteBaseDatos(false); - for (TarmTipoArmaExplosivo explosivo : listaExplosivos) { - if(explosivo.getPk().equalsIgnoreCase(armaBD.getCtipoarmaexplosivo())){ - listaArmas.get(i).setExisteBaseDatos(true); - armaBD.setIsnew(false); - break; - } - } - } - } - } - listaArmas.get(i).setArma(armaBD); - String unidadTipoIngresada = campoCantidad?listaArmas.get(i).getUnidadMedidaCantidad():listaArmas.get(i).getUnidadMedidaPeso(); - // CARGA EL CUPO ***** //persona,clase,tipoarmaexplosivo -// List cupo =ComercianteCupoController.findByPersonCode(usuario.getPk().getPersoncode().toString(), -// listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), -// unidadTipoIngresada); -// -// if(cupo!=null && !cupo.isEmpty() && cupo.get(0).getTiporegistro().equalsIgnoreCase(this.registro.getTiporegistro())){ - //metodo de los TOTALES SETEADOS EN UN MAPA - cupoArmasExplosivos(i, mapaTotalesTemporales, fila,tipoUnidadSeleccionada); -// }else{ -// if(cupo==null || cupo.isEmpty()){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no asignado para "+listaArmas.get(i).getClase()+"."); -// } -// else{ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()+"."); -// } -// listaArmas.get(i).setCupoInsuficiente(true); -// } - } - } - tipoUnidadSeleccionada = null; - } - } - - public void cupoArmasExplosivos(int i,HashMap mapaTotalesTemporales,Integer fila,TarmUnidadTipo tipoUnidadSeleccionada){ - - BigDecimal saldoPasaraaAnterior = new BigDecimal(0); - TarmTotalPersona totalPersona=null; - - if(mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog() - + "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog())==null){ - totalPersona =TotalPersonaController.findMaxFecha(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), usuario.getPk().getPersoncode().toString(), - tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(totalPersona==null){ - totalPersona=new TarmTotalPersona(); - totalPersona.setTotal(new BigDecimal(0)); - }else{ - saldoPasaraaAnterior = (totalPersona==null?new BigDecimal(0):totalPersona.getTotal()); - } - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso)); - totalPersona.setTotal(new BigDecimal(0));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - Double suma=0.0; - //Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).setCantidad(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaCantidad()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getCantidad(); - totalPersona.setTotal(new BigDecimal(suma)); - //Peso - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).setPeso(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaPeso()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getPeso(); - totalPersona.setTotal(new BigDecimal(suma)); - } - } - else{//existe la combinacion - totalPersona = mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso).add(totalPersona.getCantidadmovimiento())); - totalPersona.setTotal(totalPersona.getSaldoanterior().add(totalPersona.getCantidadmovimiento()));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - saldoPasaraaAnterior=totalPersona.getSaldoanterior(); - } - totalPersona.setPk(null); - totalPersona.setPersoncodigo(usuario.getPk().getPersoncode()); - totalPersona.setClase(listaArmas.get(i).getCatalogoClase().getPk().getCatalog()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setIngresoegreso("ING"); - totalPersona.setCarma(listaArmas.get(i).getArma().getPk()); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setFecha(new java.sql.Timestamp(new Date().getTime())); - totalPersona.setSaldoanterior(saldoPasaraaAnterior==null?new BigDecimal(0):saldoPasaraaAnterior); - totalPersona.setIsnew(true); - //Verificando si el usuario tiene cupo disponible para el arma - - //mapa con el nuevo total por clase tipo unidad - mapaTotalesTemporales.put(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(),totalPersona); - listaArmas.get(i).setTotalPersona(totalPersona); - //Verificando que el la suma del total con la cantidad de armas - //no sea mayor que el cupo -// if(totalPersona.getTotal().doubleValue()>cupoMaximo){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()); -// listaArmas.get(i).setCupoInsuficiente(true); -// }else{ -// //Actualizando el valor del total y del total anterior -// listaArmas.get(i).getTotalPersona().setSaldoanterior(listaArmas.get(i).getTotalPersona().getSaldoanterior()); -// listaArmas.get(i).getTotalPersona().setTotal(totalPersona.getTotal()); -// } - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - public Boolean celdaVacia(Cell celda){ - Boolean vacia=false; - if(celda==null || celda.getCellType()==Cell.CELL_TYPE_BLANK || (celda.getCellType()==Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())){ - vacia=true; - } - return vacia; - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - IngresoInventarioController cc = new IngresoInventarioController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("lote", serie); - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - /** - * - * Metodo para encontrar por marca y tipoarmaexplosivo - * @param marca - * @param tipoArmaExplosivo - * @return - * @throws Exception - */ - public static List findByMarcaSerie(String cregistro,String marca, String serie) throws Exception { - - IngresoInventarioController cc = new IngresoInventarioController(); - //cc.init(); - cc.recperpage = 300; - cc.querydatabaseMarcaSerie(cregistro,marca, serie ); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } - - @SuppressWarnings("finally") - public File generarArchivoError(Long key){ - if(listaErrores.isEmpty()){ - - //MessageHelper.setMessageInfo("ARCHIVO SUBIDO CORRECTAMENTE"); - return null; - } - PrintWriter escribir=null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog"+key,".txt"); - escribir = new PrintWriter(archivo); - - - for(String err : listaErrores){ - System.out.println(err); - - - escribir.print(err+"\r\n"); - } - //escribir.close(); - limpiar(); - - - - } - catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - finally{ - escribir.flush(); - escribir.close(); - return archivo; - } - - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo(){ - - Long key=new Date().getTime(); - File archivoTemporal=generarArchivoError(key); - if(archivoTemporal==null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=errorlog"+key+".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - - FacesContext.getCurrentInstance().responseComplete(); - - - } catch (Exception e) { - // TODO: handle exception - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar(){ - try { - create(); - while(lrecord.iterator().hasNext()){ - record =lrecord.get(0); - remove(); - } - listaArmas = new ArrayList(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { - codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", record.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { - codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", record.getProvincecode(), record.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - public void cargarDocumentosHabilitantes(String categoria){ - ldocumentospersona= new ArrayList<>(); - List listadocum=DocumentoHabilitanteController.findpersoncodeInventario(usuario.getPk().getPersoncode().toString(),categoria); - //Forma nmero 1 (Uso de Maps). - Map mapPersonas = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapPersonas.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - System.out.println("Lista sin repetidos:"); - for(Entry p : mapPersonas.entrySet()) { - // Se cargan las categorias diferentes a armas de fuego y armas no letales -// if(!p.getValue().getModifiedData().get("clase").toString().contains("0010000001")||!p.getValue().getModifiedData().get("clase").toString().contains("0010000008")){ - ldocumentospersona.add(p.getValue()); -// } - } -// ldocumentospersona =DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - } - - public void cambioTipoRegistro(){ - if(registro.getTiporegistro()!=null){ - cargarDocumentosHabilitantes("4");//4 Fabrica, 5Fabricante - }else{ - ldocumentospersona=new ArrayList<>(); - } - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - public void codigoCiudad(){ - - - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getLarmexcell() { - return listaArmas; - } - - public void setLarmexcell(List larmexcell) { - this.listaArmas = larmexcell; - } - - public ArmaExcell getArmaexcell() { - return armaexcell; - } - - public void setArmaexcell(ArmaExcell armaexcell) { - this.armaexcell = armaexcell; - } - - public TarmTipoArmaExplosivo getTipoarmexplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoarmexplosivo(TarmTipoArmaExplosivo tipoarmexplosivo) { - this.tipoArmaExplosivo = tipoarmexplosivo; - } - - public List getLaexel() { - return laexel; - } - - public void setLaexel(List laexel) { - this.laexel = laexel; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getListaFilas() { - return listaFilas; - } - - public void setListaFilas(List listaFilas) { - this.listaFilas = listaFilas; - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public InputStream getFilei() { - return filei; - } - - public void setFilei(InputStream filei) { - this.filei = filei; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TcustPersonAddress getDireccion() { - return direccion; - } - - public void setDireccion(TcustPersonAddress direccion) { - this.direccion = direccion; - } - -// public List getCuposArmas() { -// return cuposArmas; -// } -// -// public void setCuposArmas(List cuposArmas) { -// this.cuposArmas = cuposArmas; -// } - -// public ComercianteCupoController getComercianteCupoController() { -// return comercianteCupoController; -// } -// -// public void setComercianteCupoController( -// ComercianteCupoController comercianteCupoController) { -// this.comercianteCupoController = comercianteCupoController; -// } - - public Boolean getDescargar() { - return descargar; - } - - public void setDescargar(Boolean descargar) { - this.descargar = descargar; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - - public TotalArmasController getTotalPersonaController() { - return totalPersonaController; - } - - public void setTotalPersonaController( - TotalArmasController totalPersonaController) { - this.totalPersonaController = totalPersonaController; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCity getCiudad() { - return ciudad; - } - - public void setCiudad(TgeneCity ciudad) { - this.ciudad = ciudad; - } - - public List getArmas() { - return armas; - } - - public void setArmas(List armas) { - this.armas = armas; - } - - public List getTotalesPersoan() { - return totalesPersoan; - } - - public void setTotalesPersoan(List totalesPersoan) { - this.totalesPersoan = totalesPersoan; - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TgeneCatalogDetail getTipoRegistro() { - return tipoRegistro; - } - - public void setTipoRegistro(TgeneCatalogDetail tipoRegistro) { - this.tipoRegistro = tipoRegistro; - } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public Integer getPersoncode() { - return personcode; - } - - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - - public InventarioSubidoController getInventarioSubidoController() { - return inventarioSubidoController; - } - - public void setInventarioSubidoController( - InventarioSubidoController inventarioSubidoController) { - this.inventarioSubidoController = inventarioSubidoController; - } - - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.svn-base deleted file mode 100644 index 51f085d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/IngresoInventarioController.java.svn-base +++ /dev/null @@ -1,1715 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.io.File; -import java.io.FileInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.poi.ss.usermodel.Cell; -import org.apache.poi.ss.usermodel.Row; -import org.apache.poi.xssf.usermodel.XSSFSheet; -import org.apache.poi.xssf.usermodel.XSSFWorkbook; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.ArmaExcell; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.funcionalidad.TotalArmasController; -import com.fp.frontend.controller.armas.solicitud.ArmasController; -import com.fp.frontend.controller.armas.solicitud.DocumentoHabilitanteController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersonaKey; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.fun.TarmTotalPersona; -//import com.fp.persistence.parmas.param.TarmComercianteCupo; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - - -/** - * @author Andres Cevallos - * Clase Controladora para la entidad TarmArma - * Incluye metodo de consulta para la busqueda de persona y registro - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class IngresoInventarioController extends AbstractController { - - //Variabgles globales - private Integer personcode; - - private Boolean descargar; - private String csolicitud; - InputStream filei; - - //Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - - Date fechaActual; - private List tiposRegistro; - private TgeneCatalogDetail tipoRegistro; - - //Detalle del material - //Pais - private List lpaises; - private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; - private TgeneCity ciudad; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Variables de las armas - private TcustPersonDetail usuario; - private TcustPersonAddress direccion; - private List listaFilas; - private List listaErrores; -// private List cuposArmas; - - //private BigDecimal pesoTotal; - private TarmTipoArmaExplosivo tipoArmaExplosivo; - private List listaArmas; - private ArmaExcell armaexcell; - - private List laexel; - private List armas=new ArrayList(); - private List totalesPersoan=new ArrayList(); - - //Aeropuertos - List laeropuertos=new ArrayList<>(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - -// @ManagedProperty(value = "#{comercianteCupoController}") -// private ComercianteCupoController comercianteCupoController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmasController; - - @ManagedProperty(value = "#{totalArmasController}") - private TotalArmasController totalPersonaController; - - @ManagedProperty(value = "#{inventarioSubidoController}") - private InventarioSubidoController inventarioSubidoController; - - private List ldocumentospersona; - - private String clase; - public IngresoInventarioController() throws Exception { - super(TarmArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record=new TarmArmas(); - this.beanalias = "ARMAS"; - this.create(); - - //Globales - descargar=false; - csolicitud=null; - - //Datos generales - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo los datos de la persona - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - - //Fecha actual - this.fechaActual=Calendar.getInstance().getTime(); - - //Tipos de registro - ListtiposRegistroAux = CatalogDetailController.find("TIPOREGISTRO", "REG"); - tiposRegistro = new ArrayList(); - for(TgeneCatalogDetail tipoReg : tiposRegistroAux){ - if(tipoReg.getPk().getCatalog().equalsIgnoreCase("PRO")){ - tiposRegistro.add(tipoReg); - } - } - - //Detalle del material - lpaises=CountryController.find(); - registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - - //Obteniendo la direccion de la persona - String tipoDireccion=""; - - if(detallesPersona!=null){ - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - } - //direccion= personAddressController.findByPersonCode(usuario.getPk().getPersoncode().toString()); - direccion= personAddressController.findPrincipal(String.valueOf(usuario.getPk().getPersoncode().toString())) ; - - - //Imprtacion - this.lprovincias=ProvinceController.find("EC"); - - //Armas - listaErrores = new ArrayList(); - - //Controlador de totales -// this.totalPersonaController=new TotalPersonaController(); -// this.totalPersonaController.create(); -// this.totalPersonaController.setLrecord(new ArrayList()); - - RegistroArmController registroArmas = new RegistroArmController(); - registroArmas.init(); - registroArmas.setRecperpage(3000000); - registroArmas.addFilter("personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - registroArmas.query(); - this.addFilter("estado", "REG"); - filtro(registroArmas.getLrecord()); - - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP'"); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); - String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - public void querydatabaseMarcaSerie(String cregistro,String marca, String serie) { - try { - - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo");// and i.clase='" + clase + "' and i.tipoarmaexplosivo='" + tipoArmaExplosivo + "'"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - - - Filter filtrofecha=new Filter(); - filtrofecha.setSql("t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado !='CDP' and t.lote " + (serie==null?" is null":("= '" + serie + "'")) + " and t.cregistro= '" - + cregistro + "' and t.marca " + (marca==null?" is null":("= '" + marca + "'"))); - dto.addFiltro(filtrofecha); - dto.setOrderby("pk"); -/* String sql=csolicitud; - if(csolicitud!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - }*/ - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - -/* Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE");*/ - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecOked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para armar el registro - * @param lsolicitud - */ - public void filtro(List lsolicitud){ - - for(TarmRegistroArmas soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="(cregistro="+soli.getPk(); - } - else{ - csolicitud+=" or cregistro="+soli.getPk(); - } - } - csolicitud+=")"; - - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - - registroArmasController.clearAll(); - DtoSave dtosaveregistroarma = registroArmasController.getDtoSave(true); - dtosaveregistroarma.setPosition(1); - msave.put(registroArmasController.getBeanalias(), dtosaveregistroarma); - - totalPersonaController.clearAll(); - DtoSave dtosavetotalper = totalPersonaController.getDtoSave(true); - dtosavetotalper.setPosition(3); - msave.put(totalPersonaController.getBeanalias(), dtosavetotalper); - - DtoSave dtoInventarioSubido = inventarioSubidoController.getDtoSave(true); - dtoInventarioSubido.setPosition(4); - msave.put(inventarioSubidoController.getBeanalias(), dtoInventarioSubido); - - request.setSaveTables(msave); - request.getModifiedData().put("LISTAARMAS", this.armas); - request.getModifiedData().put("LISTATOTALES", this.totalesPersoan); - request.getModifiedData().put("REGISTRO", this.registro); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmasController.postCommit(resp); - this.totalPersonaController.postCommit(resp); - this.inventarioSubidoController.postCommit(resp); - //this.totalPersonaController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que carga y valida el contenido de un archivo excel con información de armas - * @param event - */ - public void cargarArchivo(FileUploadEvent event){ - - HashMap mapaTotalesTemporales = new HashMap<>(); - int f1=0; - try { - // Verifico si ya se hizo una carga de inventario previa para al clase seleccionada - List inventarioPrevioIngresadoLst = InventarioSubidoController.findXPersonaYClase(this.usuario.getPk().getPersoncode().toString(), clase); - if(inventarioPrevioIngresadoLst!=null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_inventarioCargadoPreviamente")); - return; - }else{ - TarmInventarioSubidoPorPersonaKey pkInventarioSubidoObj = new TarmInventarioSubidoPorPersonaKey(); - pkInventarioSubidoObj.setPersoncode(this.usuario.getPk().getPersoncode()); - pkInventarioSubidoObj.setClase(clase); - TarmInventarioSubidoPorPersona inventarioSubidoObj = new TarmInventarioSubidoPorPersona(); - inventarioSubidoObj.setPk(pkInventarioSubidoObj); - java.util.Date today = new java.util.Date(); - java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); - inventarioSubidoObj.setFechacarga(fechaReporte); - inventarioSubidoObj.setIsnew(Boolean.TRUE); - inventarioSubidoController.update(inventarioSubidoObj); - } - - //Completando los datos del registro - this.registro.setPersoncode(this.usuario.getPk().getPersoncode()); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); - this.registro.setFechasolicitud(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - //Inicializando las listas - listaFilas=new ArrayList(); - listaArmas= new ArrayList(); - listaErrores= new ArrayList(); - //caraga el excel - UploadedFile selectedFile = event.getFile(); - InputStream archivo=selectedFile.getInputstream(); - XSSFWorkbook libro = new XSSFWorkbook(archivo); - XSSFSheet hoja = libro.getSheetAt(0); - //Iterando sobre las filas - int cont=0; - Iterator rowIterator = hoja.iterator(); - //Cargando el contenido de las celdas a una lista de objetos - while(rowIterator.hasNext()) { - cont++; - Row row = rowIterator.next(); - if(cont>1){ - Cell numero=row.getCell(0); - Cell serie=row.getCell(1); - Cell clase=row.getCell(2); - Cell longitud=row.getCell(3); - Cell tipo=row.getCell(4); - Cell calibre=row.getCell(5); - Cell color=row.getCell(6); - Cell marca=row.getCell(7); - Cell cantidad=row.getCell(8); - Cell umcantidad=row.getCell(9); - Cell peso=row.getCell(10); - Cell umpeso=row.getCell(11); - Boolean filaEnBlanco=false; - if(this.celdaVacia(numero) && this.celdaVacia(serie) && this.celdaVacia(clase) - && this.celdaVacia(longitud) && this.celdaVacia(tipo) && this.celdaVacia(calibre) - && this.celdaVacia(color) && this.celdaVacia(marca) && this.celdaVacia(cantidad) - && this.celdaVacia(umcantidad) && this.celdaVacia(peso) && this.celdaVacia(umpeso)){ - filaEnBlanco=true; - }else{ - listaFilas.add(row); - } - if(!filaEnBlanco){ - //arma la lista de las armas en un dto aniade en la lista listaArmas - armarlistaArmasExcel(numero, serie, clase, longitud, tipo, calibre, color, marca, cantidad, umcantidad, peso, umpeso, row); - } - } - } - //Verificando las filas duplicadas en el archivo - verificarFilasDuplicadas(listaArmas); - if(this.registro.getTiporegistro().equals("PRO")){ - //Verificando las filas duplicadas en la BD - verificarArmasExistentesEnBaseDeDatos(listaArmas, this.usuario.getPk().getPersoncode()); - } - Boolean contieneSerie=false; - //RECORRE LA LISTA DE LAS ARMAS y valida el CUPO DEL ARMA - //Validando los campos requeridos que estan vacios - recorreListaArmasExcel(contieneSerie,f1,mapaTotalesTemporales); - //Seteando los atributos de las armas y totales si no hay ningun error - if(listaErrores.isEmpty()){ - for (int i = 0; i < listaArmas.size(); i++) { - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada() && listaArmas.get(i).getExisteCatalogo() - && listaArmas.get(i).getExisteTARMTIPOARMAEXPLOSIVO()){ //&& !listaArmas.get(i).getCupoInsuficiente() - //Marca - if(listaArmas.get(i).getCatalogoMarca()!=null){ - listaArmas.get(i).getArma().setMarcacodigo("MARCA"); - listaArmas.get(i).getArma().setMarca(listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - } - //Color - if(listaArmas.get(i).getCatalogoColor()!=null){ - listaArmas.get(i).getArma().setColorcodigo("COLOR"); - listaArmas.get(i).getArma().setColor(listaArmas.get(i).getCatalogoColor().getPk().getCatalog()); - } - //Unidad medida cantidad - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - Double doubleNum=0.0; - //Cargando el catalodo del tipo de unidad de medida - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaCantidad()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoCantidad()); - //Cantidad - Integer intNum=(int)doubleNum.doubleValue(); - listaArmas.get(i).getArma().setCantidad(intNum); - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).getArma().setUnidadmedidacantidad(listaArmas.get(i).getUnidadMedidaPeso()); - doubleNum=Double.parseDouble(listaArmas.get(i).getTextoPeso()); - //Peso - listaArmas.get(i).getArma().setPeso(new BigDecimal(doubleNum)); - } - } - //Estado DEL ARMA - listaArmas.get(i).getArma().setEstado("REG"); - listaArmas.get(i).getArma().setEstadocodigo("ESTADOARMA"); - if(direccion!=null){ - //Codigo de pais - listaArmas.get(i).getArma().setCountrycode(direccion.getCountrycode()); - //Codigo de provincia - listaArmas.get(i).getArma().setProvincecode(direccion.getProvincecode()); - //Codigo de canton - listaArmas.get(i).getArma().setCantoncode(direccion.getCantoncode()); - //Codigo de parroquia - listaArmas.get(i).getArma().setParroquiacode(direccion.getParroquiacode()); - //Codigo de ciudad - listaArmas.get(i).getArma().setCitycode(direccion.getCitycode()); - } - //Lote - listaArmas.get(i).getArma().setLote(listaArmas.get(i).getSerie()); - //Peso - if(listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().isEmpty()){ - listaArmas.get(i).getArma().setPeso(BigDecimal.valueOf(Double.parseDouble(listaArmas.get(i).getTextoPeso()))); - } - //Direccion - listaArmas.get(i).getArma().setDireccion(direccion.getAddress()); - - //Fecha de registro - listaArmas.get(i).getArma().setFecharegistro(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Tipo de arma explosivo - if(listaArmas.get(i).getTipoArmaExplosivo()!=null){ - listaArmas.get(i).getArma().setCtipoarmaexplosivo(listaArmas.get(i).getTipoArmaExplosivo().getPk()); - } - armas.add(listaArmas.get(i).getArma()); - } - } - //Se rrecorre el mapa HashMap mapaTotalesTemporales - for (TarmTotalPersona value : mapaTotalesTemporales.values()) { - totalesPersoan.add(value); - } - save(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - }finally{ - if (!listaErrores.isEmpty()) { - listaArmas.clear(); - MessageHelper.setMessageError("ERRORES ENCONTRADOS DENTRO DEL ARCHIVO EXCEL: ");// + errores.toString()); - descargar=true; - }else{ - MessageHelper.setMessageInfo("ARCHIVO CARGADO EXITOSAMENTE"); - descargar=false; - } - } - } - /** - * Metodo para cargar los valores del EXCEL EN UNA CLASE DTO(ArmaExcell ) - * @param numero * @param serie * @param clase * @param longitud * @param tipo * @param calibre - * @param color * @param marca * @param cantidad * @param umcantidad * @param peso * @param umpeso * @param row - */ - public void armarlistaArmasExcel(Cell numero,Cell serie,Cell clase,Cell longitud,Cell tipo,Cell calibre,Cell color,Cell marca, - Cell cantidad,Cell umcantidad,Cell peso,Cell umpeso,Row row){ - ArmaExcell arma=new ArmaExcell(); - arma.setTextoNumero(Utilidades.setearValorCelda(numero));//Numero - arma.setSerie(Utilidades.setearValorCelda(serie));//Serie - arma.setClase(Utilidades.setearValorCelda(clase));//Clase - arma.setLongitud(Utilidades.setearValorCelda(longitud));//Longitud - arma.setTipo(Utilidades.setearValorCelda(tipo));//Tipo - arma.setCalibre(Utilidades.setearValorCelda(calibre));//Calibre - arma.setColor(Utilidades.setearValorCelda(color));//Color - arma.setMarca(Utilidades.setearValorCelda(marca));//Marca - arma.setTextoCantidad(Utilidades.setearValorCelda(cantidad));//Cantidad - arma.setUnidadMedidaCantidad(Utilidades.setearValorCelda(umcantidad));//U. Medida Cantidad - arma.setTextoPeso(Utilidades.setearValorCelda(peso));//Peso - arma.setUnidadMedidaPeso(Utilidades.setearValorCelda(umpeso));//U. Medida Peso - - // El ingreso de inventario sera para todas las clases excepto armas de fuego y armas no letales - if(!arma.getClase().equalsIgnoreCase("ARMA DE FUEGO") && !arma.getClase().equalsIgnoreCase("ARMAS NO LETALES")){ - listaArmas.add(arma); - }else { - listaErrores.add("Fila "+row.getRowNum()+": "+"Columna clase: "+MsgControlArmas.getProperty("msg_inventarioNoArmasFuegoNiNoLetales")); - return; - } - } - - /** - * Metodo que verifica si existen filas duplicadas en el archivo de excell - * @param listaArmas - */ - private void verificarFilasDuplicadas(List listaArmas){ - for (int i = 0; i < listaArmas.size()-1; i++) { - for (int j = i+1; j < listaArmas.size(); j++) { - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && ((listaArmas.get(i).getSerie().equalsIgnoreCase(listaArmas.get(j).getSerie())) - && listaArmas.get(i).getClase().equalsIgnoreCase(listaArmas.get(j).getClase()) - && listaArmas.get(i).getTipo().equalsIgnoreCase(listaArmas.get(j).getTipo()) - && (!listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") - || (listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego") && listaArmas.get(j).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")) - && listaArmas.get(i).getCalibre().equalsIgnoreCase(listaArmas.get(j).getCalibre())) - && listaArmas.get(i).getMarca().equalsIgnoreCase(listaArmas.get(j).getMarca()))){ - listaArmas.get(j).setDuplicada(true); - break; - } - } - } - } - - /** - * @param listaArmas - * @throws Exception - */ - @SuppressWarnings("static-access") - private void verificarArmasExistentesEnBaseDeDatos(List listaArmas, Integer codigoPersona) throws Exception{ - TgeneCatalogDetail codigoClase = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoMarca = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoTipo = new TgeneCatalogDetail(); - TgeneCatalogDetail codigoCalibre = new TgeneCatalogDetail(); - String codigoSerie; - List lstRegistroArmas = registroArmasController.findxPersoncode(String.valueOf(codigoPersona)); - if(lstRegistroArmas==null || listaArmas==null || lstRegistroArmas.isEmpty() || listaArmas.isEmpty()){ - return; - } - for (int i = 0; i < listaArmas.size(); i++) { - codigoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - codigoTipo=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - codigoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - codigoSerie = this.registro.getTiporegistro().equalsIgnoreCase("IMP")?null:listaArmas.get(i).getSerie(); - codigoCalibre=listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")?CatalogDetailController.findByCatalogcodeDescrption("CALIBRE",listaArmas.get(i).getCalibre()):null; - - if((codigoClase==null && (listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().trim().isEmpty())) || (codigoTipo==null && (listaArmas.get(i).getTipo()!=null && !listaArmas.get(i).getTipo().trim().isEmpty())) - || (codigoMarca==null && (listaArmas.get(i).getMarca()!=null && !listaArmas.get(i).getMarca().trim().isEmpty())) || (codigoSerie==null && (listaArmas.get(i).getSerie()!=null && !listaArmas.get(i).getSerie().trim().isEmpty())) - || (codigoCalibre==null && (listaArmas.get(i).getCalibre()!=null && !listaArmas.get(i).getCalibre().trim().isEmpty())) - || listaArmas.get(i).getClase()==null || listaArmas.get(i).getMarca()==null || listaArmas.get(i).getCalibre()==null - || listaArmas.get(i).getClase().isEmpty() || listaArmas.get(i).getMarca().isEmpty() || listaArmas.get(i).getCalibre().isEmpty()){ - continue; - } - for(TarmRegistroArmas registroArmas :lstRegistroArmas){ - List lstArmasEncontradas = findByMarcaSerie(String.valueOf(registroArmas.getPk()),codigoMarca.getPk().getCatalog(), codigoSerie); - if(lstArmasEncontradas!=null){ - for(TarmArmas armas:lstArmasEncontradas){ - TarmTipoArmaExplosivo tipoArma = TiposArmasExplosivosController.findarma(armas.getCtipoarmaexplosivo()); - if(tipoArma.getClase().equalsIgnoreCase(codigoClase.getPk().getCatalog()) && codigoCalibre!=null?tipoArma.getCalibre().equalsIgnoreCase(codigoCalibre.getPk().getCatalog()):true && tipoArma.getTipoarmaexplosivo().equalsIgnoreCase(codigoTipo.getPk().getCatalog())){ - listaArmas.get(i).setDuplicada(true); - break; - } - } - } - } - } - } - /** - * Metodo que recorre la lista de las armas con los valores cargados del EXCEL - * @param contieneSerie - * @param f1 - * @param mapaTotalesTemporales - */ - public void recorreListaArmasExcel(Boolean contieneSerie, int f1,HashMap mapaTotalesTemporales){ - for (int i = 0; i < listaArmas.size(); i++) { - Integer fila=i+1; - f1=i; - Boolean campoCantidad=false; - //0-Datos duplicados - if(listaArmas.get(i).getDuplicada()){ - listaErrores.add("Fila "+fila.toString()+": "+MsgControlArmas.getProperty("msg_datosDuplicados")); - } - //1-Serie - //Validando que si el tipo de registro es de importacion - //las armas no contengan numero de serie - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()!=null) && !contieneSerie){ - contieneSerie=true; - listaErrores.add(MsgControlArmas.getProperty("msg_archivoImportacionSerie")); - } - if(!this.registro.getTiporegistro().equalsIgnoreCase("IMP") && (listaArmas.get(i).getSerie()==null || listaArmas.get(i).getSerie().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 1: "+MsgControlArmas.getProperty("msg_serieVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - //2-Clase - if(listaArmas.get(i).getClase()==null || listaArmas.get(i).getClase().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_claseVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //3-Validando que cuando la clase sea ARMA DE FUEGO la longitud no este vacia - }else if(listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()==null || listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - //Validando que cuando la clase no sea ARMA DE FUEGO la longitud este vacia - }else if(!listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getLongitud()!=null && !listaArmas.get(i).getLongitud().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoVacia")); - } - //Carga de catalogos - TgeneCatalogDetail catalogoClase=CatalogDetailController.findByCatalogcodeDescrption("CLASE", listaArmas.get(i).getClase()); - listaArmas.get(i).setCatalogoClase(catalogoClase); - if(catalogoClase!=null && catalogoClase.getPk()!=null && catalogoClase.getPk().getCatalog()!=null && !clase.contains(catalogoClase.getPk().getCatalog())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene permiso para cargar "+catalogoClase.getDescription()); - listaArmas.get(i).setCamposIncompletos(true); - }else if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+" No tiene ingresado una Clase V\u00e1lida "); - listaArmas.get(i).setCamposIncompletos(true); - } - TgeneCatalogDetail catalogoLongitud=CatalogDetailController.findByCatalogcodeDescrption("LONGITUD", listaArmas.get(i).getLongitud()); - listaArmas.get(i).setCatalogoLongitud(catalogoLongitud); - TgeneCatalogDetail catalogoTipoArma=CatalogDetailController.findByCatalogcodeDescrption("TIPOARMAEXPLOSIVO", listaArmas.get(i).getTipo()); - listaArmas.get(i).setCatalogoTipoArma(catalogoTipoArma); - TgeneCatalogDetail catalogoCalibre=CatalogDetailController.findByCatalogcodeDescrption("CALIBRE", listaArmas.get(i).getCalibre()); - listaArmas.get(i).setCatalogoCalibre(catalogoCalibre); - TgeneCatalogDetail catalogoColor=CatalogDetailController.findByCatalogcodeDescrption("COLOR", listaArmas.get(i).getColor()); - listaArmas.get(i).setCatalogoColor(catalogoColor); - TgeneCatalogDetail catalogoMarca=CatalogDetailController.findByCatalogcodeDescrption("MARCA", listaArmas.get(i).getMarca()); - listaArmas.get(i).setCatalogoMarca(catalogoMarca); - TarmUnidadTipo tipoUnidadSeleccionada =null;// new TarmUnidadTipo(); - if(catalogoClase!=null){ - //Obteniendo la configuracion de TARMUNIDADTIPO - if(!(listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()) && !(listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9,11: "+MsgControlArmas.getProperty("msg_unidadMedidaSoloUna")); - } - String unidadMedidaIngresada = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?listaArmas.get(i).getUnidadMedidaPeso():listaArmas.get(i).getUnidadMedidaCantidad(); - String columnaUnidadMedidaError = (listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().isEmpty())?"Columna 11":"Columna 9"; - if (listaArmas.get(i).getCatalogoTipoArma() == null) { - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: El Tipo de Arma Explosivo no existe en el Catlogo. Revise los espacios entre cada palabra y que este bien escrito."); - listaArmas.get(i).setCamposIncompletos(true); - tipoUnidadSeleccionada=null; - }else { - tipoUnidadSeleccionada= UnidadTipoController.findByClaseAndClasecode(catalogoClase.getPk().getCatalog(), catalogoClase.getPk().getCatalogcode(),listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), unidadMedidaIngresada); - } - if(tipoUnidadSeleccionada!=null && tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()!=null && !tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().isEmpty()){ - if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDAD") || tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("UNIDADES")){ - campoCantidad=true; - }else if(tipoUnidadSeleccionada.getPk().getUnidadmedidapeso().equalsIgnoreCase("KG")){ - campoCantidad=false; - } - } - else if (tipoUnidadSeleccionada==null){ - listaErrores.add("Fila "+fila.toString()+": "+ columnaUnidadMedidaError + ": " +MsgControlArmas.getProperty("msg_unidadMedidaNoExiste")); - } - } - //4-Tipo - if(listaArmas.get(i).getTipo()==null || listaArmas.get(i).getTipo().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_tipoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - } - //5-Calibre - if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty() - && listaArmas.get(i).getClase().equalsIgnoreCase("ARMA DE FUEGO") - && (listaArmas.get(i).getCalibre()==null || listaArmas.get(i).getCalibre().trim().isEmpty())){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreVacio")); - } - //Marca - if(listaArmas.get(i).getMarca()==null || listaArmas.get(i).getMarca().trim().isEmpty()){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - if(campoCantidad){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadVacia")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(8).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadValorNumerico")); - } - - //U. Medida Cantidad - if((listaArmas.get(i).getUnidadMedidaCantidad()==null || listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadVacia")); - } - - //Peso - if((listaArmas.get(i).getTextoPeso()!=null && !listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoNoVacio")); - } - - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoNoVacia")); - } - //Validando que cuando la clase NO sea ARMA DE FUEGO, MUNICION, - //Explosivos, Accesorios, Fuegos Pirotecnicos, Sustancia Quimica, Armas no Letales - //la cantidad y unidad de medida cantidad esten vacios - //y el peso y unidad de medida peso NO esten vacios - }else if(listaArmas.get(i).getClase()!=null && !listaArmas.get(i).getClase().isEmpty()){ - //Cantidad - if((listaArmas.get(i).getTextoCantidad()!=null && !listaArmas.get(i).getTextoCantidad().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 8: "+MsgControlArmas.getProperty("msg_cantidadNoVacia")); - } - //U. Medida Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().trim().isEmpty() && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 9: "+MsgControlArmas.getProperty("msg_unidadMedidaCantidadNoVacia")); - } - //Peso - if((listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoVacio")); - listaArmas.get(i).setCamposIncompletos(true); - - }else if(listaFilas.get(i).getCell(10).getCellType()!=Cell.CELL_TYPE_NUMERIC && tipoUnidadSeleccionada!=null){ - //Verificando el tipo de dato numerico - listaErrores.add("Fila "+fila.toString()+": "+"Columna 10: "+MsgControlArmas.getProperty("msg_pesoValorNumerico")); - } - //U. Medida Peso - if((listaArmas.get(i).getUnidadMedidaPeso()==null || listaArmas.get(i).getUnidadMedidaPeso().trim().isEmpty()) && tipoUnidadSeleccionada!=null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 11: "+MsgControlArmas.getProperty("msg_unidadMedidaPesoVacia")); - listaArmas.get(i).setCamposIncompletos(true); - } - } - //Verificando que no existan problemas en el arma proveniente del archivo EXCEL - //para validar entonces los datos en la base de datos - if(!listaArmas.get(i).getCamposIncompletos() && !listaArmas.get(i).getDuplicada()){ - //Verificando los datos en los catalogos - //Verificando la existencia de la clase en el catalogo - if(catalogoClase==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 2: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia de la longitud en el catalogo - if(catalogoLongitud==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 3: "+MsgControlArmas.getProperty("msg_longitudNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del tipo de arma en el catalogo - if(catalogoTipoArma==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 4: "+MsgControlArmas.getProperty("msg_noExisteTipoArmaCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del calibre en el catalogo - if(catalogoCalibre==null){ - listaArmas.get(i).setExisteCatalogo(false); - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 5: "+MsgControlArmas.getProperty("msg_calibreNoExisteCatalogo")); - } - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Verificando la existencia del color en el catalogo - if(listaArmas.get(i).getColor()!=null && !listaArmas.get(i).getColor().isEmpty()){ - if(catalogoColor==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 6: "+MsgControlArmas.getProperty("msg_colorNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - } - //Verificando la existencia de la marca en el catalogo - if(catalogoMarca==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Columna 7: "+MsgControlArmas.getProperty("msg_marcaNoExisteCatalogo")); - listaArmas.get(i).setExisteCatalogo(false); - }else{ - listaArmas.get(i).setExisteCatalogo(true); - } - //Validacio 4- Verificando que exista la combinacion clase, longitud, tipo arma y calibre - //en la tabla TARMTIPOARMAEXPLOSIVO - if(listaArmas.get(i).getClase().toLowerCase().equalsIgnoreCase("arma de fuego")){ - if(catalogoClase!=null && catalogoLongitud!=null && catalogoTipoArma!=null && catalogoCalibre!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseLongitudCalibreTipoArma(catalogoLongitud.getPk().getCatalog(), - catalogoCalibre.getPk().getCatalog(), catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getLongitud()+", "+listaArmas.get(i).getTipo()+", "+listaArmas.get(i).getCalibre()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo"); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - }else{ - if(catalogoCalibre!=null && catalogoCalibre.getDescription()!=null && !catalogoCalibre.getDescription().equals("")){ - // Caso donde existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseCalibreTipoArma(catalogoClase.getPk().getCatalog(), catalogoCalibre.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - else{ - // Caso donde no existe calibre - if(catalogoClase!=null && catalogoTipoArma!=null && tipoUnidadSeleccionada!=null){ - tipoArmaExplosivo=TiposArmasExplosivosController.findByClaseTipo(catalogoClase.getPk().getCatalog(), catalogoTipoArma.getPk().getCatalog(),tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(tipoArmaExplosivo==null){ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado: "+listaArmas.get(i).getClase()+", "+listaArmas.get(i).getTipo()); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - }else{ - listaArmas.get(i).setTipoArmaExplosivo(tipoArmaExplosivo); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(true); - } - }else{ - listaErrores.add("Fila "+fila.toString()+": "+"Registro no encontrado la combinaci\u00f3n del Tipo Arma Explosivo "); - listaArmas.get(i).setExisteTARMTIPOARMAEXPLOSIVO(false); - } - } - - } - if(listaArmas.get(i).getCatalogoClase()!=null && listaArmas.get(i).getCatalogoTipoArma()!=null && listaArmas.get(i).getCatalogoMarca()!=null){ - TarmArmas armaBD; - //Si el tipo de registro es de Importacion, el arma se persiste como nueva - //no se busca en la base de datos - if(this.registro.getTiporegistro().equalsIgnoreCase("IMP")){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - //Verificando que el arma exista en la base de datos - //si el tipo de registro es de produccion - armaBD=ArmasController.findBySerieMarca(listaArmas.get(i).getSerie(), listaArmas.get(i).getCatalogoMarca().getPk().getCatalog()); - if(armaBD==null){ - listaArmas.get(i).setExisteBaseDatos(false); - armaBD=new TarmArmas(); - armaBD.setIsnew(true); - }else{ - List listaExplosivos=TiposArmasExplosivosController.findByClaseTipoAll(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - if(listaExplosivos==null){ - listaArmas.get(i).setExisteBaseDatos(false); - }else{ - listaArmas.get(i).setExisteBaseDatos(false); - for (TarmTipoArmaExplosivo explosivo : listaExplosivos) { - if(explosivo.getPk().equalsIgnoreCase(armaBD.getCtipoarmaexplosivo())){ - listaArmas.get(i).setExisteBaseDatos(true); - armaBD.setIsnew(false); - break; - } - } - } - } - } - listaArmas.get(i).setArma(armaBD); - String unidadTipoIngresada = campoCantidad?listaArmas.get(i).getUnidadMedidaCantidad():listaArmas.get(i).getUnidadMedidaPeso(); - // CARGA EL CUPO ***** //persona,clase,tipoarmaexplosivo -// List cupo =ComercianteCupoController.findByPersonCode(usuario.getPk().getPersoncode().toString(), -// listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), -// unidadTipoIngresada); -// -// if(cupo!=null && !cupo.isEmpty() && cupo.get(0).getTiporegistro().equalsIgnoreCase(this.registro.getTiporegistro())){ - //metodo de los TOTALES SETEADOS EN UN MAPA - cupoArmasExplosivos(i, mapaTotalesTemporales, fila,tipoUnidadSeleccionada); -// }else{ -// if(cupo==null || cupo.isEmpty()){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no asignado para "+listaArmas.get(i).getClase()+"."); -// } -// else{ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()+"."); -// } -// listaArmas.get(i).setCupoInsuficiente(true); -// } - } - } - tipoUnidadSeleccionada = null; - } - } - - public void cupoArmasExplosivos(int i,HashMap mapaTotalesTemporales,Integer fila,TarmUnidadTipo tipoUnidadSeleccionada){ - - BigDecimal saldoPasaraaAnterior = new BigDecimal(0); - TarmTotalPersona totalPersona=null; - - if(mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog() - + "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog())==null){ - totalPersona =TotalPersonaController.findMaxFecha(listaArmas.get(i).getCatalogoClase().getPk().getCatalog(), - listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(), usuario.getPk().getPersoncode().toString(), - tipoUnidadSeleccionada.getPk().getUnidadmedidapeso()); - if(totalPersona==null){ - totalPersona=new TarmTotalPersona(); - totalPersona.setTotal(new BigDecimal(0)); - }else{ - saldoPasaraaAnterior = (totalPersona==null?new BigDecimal(0):totalPersona.getTotal()); - } - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso)); - totalPersona.setTotal(new BigDecimal(0));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - Double suma=0.0; - //Cantidad - if(listaArmas.get(i).getUnidadMedidaCantidad()!=null && !listaArmas.get(i).getUnidadMedidaCantidad().isEmpty()){ - listaArmas.get(i).setCantidad(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaCantidad()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getCantidad(); - totalPersona.setTotal(new BigDecimal(suma)); - //Peso - }else if(listaArmas.get(i).getUnidadMedidaPeso()!=null && !listaArmas.get(i).getUnidadMedidaPeso().isEmpty()){ - listaArmas.get(i).setPeso(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - totalPersona.setUnidadmedidapeso(listaArmas.get(i).getUnidadMedidaPeso()); - //suma eltotal anterior + la cantidad a ingresar - suma=saldoPasaraaAnterior.doubleValue()+listaArmas.get(i).getPeso(); - totalPersona.setTotal(new BigDecimal(suma)); - } - } - else{//existe la combinacion - totalPersona = mapaTotalesTemporales.get(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - BigDecimal peso = (listaArmas==null || listaArmas.get(i).getTextoPeso()==null || listaArmas.get(i).getTextoPeso().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoPeso())); - BigDecimal cantidad = (listaArmas==null || listaArmas.get(i).getTextoCantidad()==null || listaArmas.get(i).getTextoCantidad().isEmpty())?new BigDecimal(0.0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())); - totalPersona.setCantidadmovimiento(cantidad.add(peso).add(totalPersona.getCantidadmovimiento())); - totalPersona.setTotal(totalPersona.getSaldoanterior().add(totalPersona.getCantidadmovimiento()));//saldoPasaraaAnterior.add((listaArmas==null || listaArmas.get(i).getTextoCantidad()==null)?new BigDecimal(0):new BigDecimal(Double.parseDouble(listaArmas.get(i).getTextoCantidad())))); - saldoPasaraaAnterior=totalPersona.getSaldoanterior(); - } - totalPersona.setPk(null); - totalPersona.setPersoncodigo(usuario.getPk().getPersoncode()); - totalPersona.setClase(listaArmas.get(i).getCatalogoClase().getPk().getCatalog()); - totalPersona.setClasecodigo("CLASE"); - totalPersona.setTipoarmaexplosivo(listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog()); - totalPersona.setTipoarmaexplosivocodigo("TIPOARMAEXPLOSIVO"); - totalPersona.setIngresoegreso("ING"); - totalPersona.setCarma(listaArmas.get(i).getArma().getPk()); - totalPersona.setIngresoegresocodigo("ESINGRESOEGRESO"); - totalPersona.setUnidadmedidapesocodigo("UNIDADMEDIDA"); - totalPersona.setFecha(new java.sql.Timestamp(new Date().getTime())); - totalPersona.setSaldoanterior(saldoPasaraaAnterior==null?new BigDecimal(0):saldoPasaraaAnterior); - totalPersona.setIsnew(true); - //Verificando si el usuario tiene cupo disponible para el arma - - //mapa con el nuevo total por clase tipo unidad - mapaTotalesTemporales.put(usuario.getPk().getPersoncode().toString()+ "|" + listaArmas.get(i).getCatalogoClase().getPk().getCatalog()+ "|" + listaArmas.get(i).getCatalogoTipoArma().getPk().getCatalog(),totalPersona); - listaArmas.get(i).setTotalPersona(totalPersona); - //Verificando que el la suma del total con la cantidad de armas - //no sea mayor que el cupo -// if(totalPersona.getTotal().doubleValue()>cupoMaximo){ -// listaErrores.add("Fila "+fila.toString()+": Cupo no disponible para "+listaArmas.get(i).getClase()); -// listaArmas.get(i).setCupoInsuficiente(true); -// }else{ -// //Actualizando el valor del total y del total anterior -// listaArmas.get(i).getTotalPersona().setSaldoanterior(listaArmas.get(i).getTotalPersona().getSaldoanterior()); -// listaArmas.get(i).getTotalPersona().setTotal(totalPersona.getTotal()); -// } - } - - /** - * Metodo que indica cuando una celda esta vacia - * @param celda - * @return - */ - public Boolean celdaVacia(Cell celda){ - Boolean vacia=false; - if(celda==null || celda.getCellType()==Cell.CELL_TYPE_BLANK || (celda.getCellType()==Cell.CELL_TYPE_STRING && celda.getStringCellValue().isEmpty())){ - vacia=true; - } - return vacia; - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - IngresoInventarioController cc = new IngresoInventarioController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("lote", serie); - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - /** - * - * Metodo para encontrar por marca y tipoarmaexplosivo - * @param marca - * @param tipoArmaExplosivo - * @return - * @throws Exception - */ - public static List findByMarcaSerie(String cregistro,String marca, String serie) throws Exception { - - IngresoInventarioController cc = new IngresoInventarioController(); - //cc.init(); - cc.recperpage = 300; - cc.querydatabaseMarcaSerie(cregistro,marca, serie ); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } - - @SuppressWarnings("finally") - public File generarArchivoError(Long key){ - if(listaErrores.isEmpty()){ - - //MessageHelper.setMessageInfo("ARCHIVO SUBIDO CORRECTAMENTE"); - return null; - } - PrintWriter escribir=null; - File archivo = null; - try { - archivo = File.createTempFile("errorlog"+key,".txt"); - escribir = new PrintWriter(archivo); - - - for(String err : listaErrores){ - System.out.println(err); - - - escribir.print(err+"\r\n"); - } - //escribir.close(); - limpiar(); - - - - } - catch (IOException e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - finally{ - escribir.flush(); - escribir.close(); - return archivo; - } - - } - - /** - * Llama a la construccion del metodo para recargar - */ - public void descargarArchivo(){ - - Long key=new Date().getTime(); - File archivoTemporal=generarArchivoError(key); - if(archivoTemporal==null) - return; - try { - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - response.addHeader("Content-disposition", "attachment; filename=errorlog"+key+".txt"); - OutputStream out = response.getOutputStream(); - InputStream inputStream = new FileInputStream(archivoTemporal.getAbsolutePath()); - - int read = 0; - byte[] bytes = new byte[1024]; - - while ((read = inputStream.read(bytes)) != -1) { - out.write(bytes, 0, read); - } - - inputStream.close(); - out.flush(); - - FacesContext.getCurrentInstance().responseComplete(); - - - } catch (Exception e) { - // TODO: handle exception - } - } - - /** - * Limpia las los valores en las listas - */ - public void limpiar(){ - try { - create(); - while(lrecord.iterator().hasNext()){ - record =lrecord.get(0); - remove(); - } - listaArmas = new ArrayList(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { - codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", record.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { - codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", record.getProvincecode(), record.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - public void cargarDocumentosHabilitantes(String categoria){ - ldocumentospersona= new ArrayList<>(); - List listadocum=DocumentoHabilitanteController.findpersoncodeInventario(usuario.getPk().getPersoncode().toString(),categoria); - //Forma nmero 1 (Uso de Maps). - Map mapPersonas = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapPersonas.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - System.out.println("Lista sin repetidos:"); - for(Entry p : mapPersonas.entrySet()) { - // Se cargan las categorias diferentes a armas de fuego y armas no letales -// if(!p.getValue().getModifiedData().get("clase").toString().contains("0010000001")||!p.getValue().getModifiedData().get("clase").toString().contains("0010000008")){ - ldocumentospersona.add(p.getValue()); -// } - } -// ldocumentospersona =DocumentoHabilitanteController.findpersoncode(usuario.getPk().getPersoncode().toString(),categoria); - } - - public void cambioTipoRegistro(){ - if(registro.getTiporegistro()!=null){ - cargarDocumentosHabilitantes("4");//4 Fabrica, 5Fabricante - }else{ - ldocumentospersona=new ArrayList<>(); - } - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public String getCodigoCiudad() { - return codigoCiudad; - } - - public void setCodigoCiudad(String codigoCiudad) { - this.codigoCiudad = codigoCiudad; - } - - String codigoCiudad; - public void codigoCiudad(){ - - - } - - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - } - - public List getLarmexcell() { - return listaArmas; - } - - public void setLarmexcell(List larmexcell) { - this.listaArmas = larmexcell; - } - - public ArmaExcell getArmaexcell() { - return armaexcell; - } - - public void setArmaexcell(ArmaExcell armaexcell) { - this.armaexcell = armaexcell; - } - - public TarmTipoArmaExplosivo getTipoarmexplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoarmexplosivo(TarmTipoArmaExplosivo tipoarmexplosivo) { - this.tipoArmaExplosivo = tipoarmexplosivo; - } - - public List getLaexel() { - return laexel; - } - - public void setLaexel(List laexel) { - this.laexel = laexel; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getListaFilas() { - return listaFilas; - } - - public void setListaFilas(List listaFilas) { - this.listaFilas = listaFilas; - } - - public List getListaErrores() { - return listaErrores; - } - - public void setListaErrores(List listaErrores) { - this.listaErrores = listaErrores; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public InputStream getFilei() { - return filei; - } - - public void setFilei(InputStream filei) { - this.filei = filei; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TcustPersonAddress getDireccion() { - return direccion; - } - - public void setDireccion(TcustPersonAddress direccion) { - this.direccion = direccion; - } - -// public List getCuposArmas() { -// return cuposArmas; -// } -// -// public void setCuposArmas(List cuposArmas) { -// this.cuposArmas = cuposArmas; -// } - -// public ComercianteCupoController getComercianteCupoController() { -// return comercianteCupoController; -// } -// -// public void setComercianteCupoController( -// ComercianteCupoController comercianteCupoController) { -// this.comercianteCupoController = comercianteCupoController; -// } - - public Boolean getDescargar() { - return descargar; - } - - public void setDescargar(Boolean descargar) { - this.descargar = descargar; - } - - public RegistroArmController getRegistroArmasController() { - return registroArmasController; - } - - public void setRegistroArmasController( - RegistroArmController registroArmasController) { - this.registroArmasController = registroArmasController; - } - - - public TotalArmasController getTotalPersonaController() { - return totalPersonaController; - } - - public void setTotalPersonaController( - TotalArmasController totalPersonaController) { - this.totalPersonaController = totalPersonaController; - } - - public TgeneCountry getPais() { - return pais; - } - - public void setPais(TgeneCountry pais) { - this.pais = pais; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public TgeneCity getCiudad() { - return ciudad; - } - - public void setCiudad(TgeneCity ciudad) { - this.ciudad = ciudad; - } - - public List getArmas() { - return armas; - } - - public void setArmas(List armas) { - this.armas = armas; - } - - public List getTotalesPersoan() { - return totalesPersoan; - } - - public void setTotalesPersoan(List totalesPersoan) { - this.totalesPersoan = totalesPersoan; - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TgeneCatalogDetail getTipoRegistro() { - return tipoRegistro; - } - - public void setTipoRegistro(TgeneCatalogDetail tipoRegistro) { - this.tipoRegistro = tipoRegistro; - } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public Integer getPersoncode() { - return personcode; - } - - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - - public InventarioSubidoController getInventarioSubidoController() { - return inventarioSubidoController; - } - - public void setInventarioSubidoController( - InventarioSubidoController inventarioSubidoController) { - this.inventarioSubidoController = inventarioSubidoController; - } - - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/InventarioSubidoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/InventarioSubidoController.java.svn-base deleted file mode 100644 index 4da23bc..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/InventarioSubidoController.java.svn-base +++ /dev/null @@ -1,135 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Christian Pazmino. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class InventarioSubidoController extends AbstractController { - - public InventarioSubidoController() throws Exception { - super(TarmInventarioSubidoPorPersona.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "INVENTARIOSUBIDOPERSONA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void update(TarmInventarioSubidoPorPersona bean) throws Exception { - record=bean; - update(); - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List findXPersonaYClase(String personcode, String clase) { - try { - InventarioSubidoController cc = new InventarioSubidoController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("pk.personcode", personcode); - cc.addFilter("pk.clase", clase); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/LongitudLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/LongitudLovController.java.svn-base deleted file mode 100644 index 91dffbc..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/LongitudLovController.java.svn-base +++ /dev/null @@ -1,116 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class LongitudLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public LongitudLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "LONGITUDLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - this.getMfilters().put("pk.catalogcode", "LONGITUD"); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/longitudLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/OrigenTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/OrigenTramiteController.java.svn-base deleted file mode 100644 index 45e9544..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/OrigenTramiteController.java.svn-base +++ /dev/null @@ -1,462 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmOrigenTramite; -import com.fp.persistence.parmas.param.TarmOrigenTramiteKey; -import com.fp.persistence.parmas.param.TarmTipoTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora de ingreso de tramites de control de armas. - * - * @author Jorge Vaca. - * @author dcruz - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class OrigenTramiteController extends AbstractController { - - private TarmTipoTramite tipoTramite; - private String origenAdquisicion; - private String tipoPersona; - private String tipoDeTramite; - private String tipoAutorizacion; - private String categoria; - private String actividad; - private String tipoDeTramiteD; - private String tipoAutorizacionD; - private String categoriaD; - private String actividadD; - private String origenAdquisicionD; - /** - * Trámite seleccionado - */ - private TarmTramite tarmTramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - - - public OrigenTramiteController() throws Exception { - super(TarmOrigenTramite.class); - } - - @PostConstruct - private void postconstruct() { - try { - init(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - * @throws Exception - */ - private void init() throws Exception { - try{ - this.beanalias="ORIGENTRAMITE"; - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList(); - this.record = new TarmOrigenTramite(); - this.record.setPk(new TarmOrigenTramiteKey()); - lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - protected void querydatabase() { - try { - if((this.origenAdquisicion == null || this.origenAdquisicion.equals("")) && this.tarmTramite == null){ - MessageHelper.setMessageError("DEBE SELECCIONAR UN TRAMITE O UN ORIGEN DE ADQUISICIN PARA REALIZAR LA BUSQUEDA"); - return; - } - - Boolean existeFiltro = Boolean.FALSE; - DtoQuery dto = super.getDtoQuery(true); - - SubQuery tramiteSQ = new SubQuery("TgeneCatalogDetail", "description", "tipoAutorizacion", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = t.pk.ctramite) " - + " and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(tramiteSQ); - - SubQuery tipoTramiteSQ = new SubQuery("TgeneCatalogDetail", "description", "tipoDeTramite", - "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk = t.pk.ctramite) " - + " and " - + "i.pk.catalogcode = (select a.tipotramitecodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(tipoTramiteSQ); - - SubQuery categoriaSQ = new SubQuery("TgeneCatalogDetail", "description", "categoria", - "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk = t.pk.ctramite) " - + " and " - + "i.pk.catalogcode = (select a.categoriacodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(categoriaSQ); - - SubQuery usoActividadSQ = new SubQuery("TgeneCatalogDetail", "description", "actividad", - "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk = t.pk.ctramite) " - + " and " - + "i.pk.catalogcode = (select a.usoactividadcodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(usoActividadSQ); - - SubQuery adquisicionSQ = new SubQuery("TgeneCatalogDetail", "description", "adquisicion", - "i.pk.catalog = t.pk.origencatalog and i.pk.catalogcode = t.pk.origencatalogcode"); - dto.addSubQuery(adquisicionSQ); - - - Filter filtro=new Filter(); - StringBuilder sql = new StringBuilder(); - if(this.origenAdquisicion != null && !this.origenAdquisicion.equals("")){ - sql.append("t.pk.origencatalog='"+this.origenAdquisicion+"'"); - existeFiltro = Boolean.TRUE; - } - if(this.tarmTramite!=null){ - if(this.origenAdquisicion != null && !this.origenAdquisicion.equals("")){ - sql.append(" and "); - } - sql.append("t.pk.ctramite='"+this.tarmTramite.getPk()+"'"); - existeFiltro = Boolean.TRUE; - } - if(existeFiltro){ - filtro.setSql(sql.toString()); - dto.addFiltro(filtro); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabasesimple() { - try { - - Boolean existeFiltro = Boolean.FALSE; - DtoQuery dto = super.getDtoQuery(true); - Filter filtro=new Filter(); - StringBuilder sql = new StringBuilder(); - - if(this.tarmTramite!=null){ - sql.append("t.pk.ctramite='"+this.tarmTramite.getPk()+"'"); - existeFiltro = Boolean.TRUE; - } - if(existeFiltro){ - filtro.setSql(sql.toString()); - dto.addFiltro(filtro); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Abre el LOV de trámite - */ - public void openLovTramite() { - Map> params = new HashMap>(); - List ltipopersona = new ArrayList<>(); - - -// ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.NATURAL", "1").getTextvalue());//1 -// -// ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.JURIDICA", "1").getTextvalue());//2 -// -// -// params.put("tipopersonasol", ltipopersona); - BuscarTramiteLovController.openLov(params); - } - - /** - * Regresa del LOV para cargar valores - * @param event {@link SelectEvent} - */ - public void onReturnTramite(SelectEvent event) { - try{ - TarmTramite tramite = (TarmTramite) event.getObject(); - this.tarmTramite = tramite; - TgeneCatalogDetail tipoTramiteCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacionCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoriaCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividadCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - tipoDeTramite = tipoTramiteCD!=null?tipoTramiteCD.getDescription():""; - tipoAutorizacion = tipoAutorizacionCD!=null?tipoAutorizacionCD.getDescription():""; - categoria=categoriaCD!=null?categoriaCD.getDescription():""; - actividad=actividadCD!=null?actividadCD.getDescription():""; - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Regresa del LOV para cargar valores - * @param event {@link SelectEvent} - */ - public void onReturnTramiteDialog(SelectEvent event) { - try{ - TarmTramite tramite = (TarmTramite) event.getObject(); - this.tarmTramite = tramite; - TgeneCatalogDetail tipoTramiteCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacionCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoriaCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividadCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - TgeneCatalogDetail adquisicionCD = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - record.getModifiedData().put("tipoDeTramite", tipoTramiteCD!=null?tipoTramiteCD.getDescription():""); - record.getModifiedData().put("tipoAutorizacion", tipoAutorizacionCD!=null?tipoAutorizacionCD.getDescription():""); - record.getModifiedData().put("categoria", categoriaCD!=null?categoriaCD.getDescription():""); - record.getModifiedData().put("actividad", actividadCD!=null?actividadCD.getDescription():""); - record.getModifiedData().put("adquisicion", adquisicionCD!=null?adquisicionCD.getDescription():""); - this.record.getPk().setCtramite(tramite.getPk()); - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Regresa del LOV para cargar valores - * - * @param tarmTramite Tarm Tramite - * @param event - * {@link SelectEvent} - */ - public static List findOrigenTramite(TarmTramite tarmTramite) { - try { - OrigenTramiteController cc = new OrigenTramiteController(); - cc.init(); - cc.recperpage = 1000; - cc.setTarmTramite(tarmTramite); - cc.querydatabasesimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Actualiza la lista de registros a grabar - * - * @throws Exception - */ - public void update() throws Exception { - - if(this.record.getPk().getCtramite()==null){ - MessageHelper.setMessageError("DEBE SELECCIONAR UN TRAMITE","formOrigenTramiteDialog"); - return; - } - - this.record.getPk().setOrigencatalogcode("ORIGENADQUISICION"); - TgeneCatalogDetail adquisicionCD = CatalogDetailController.findxCodigoCodcatalogo(this.record.getPk().getOrigencatalog(), this.record.getPk().getOrigencatalogcode()); - record.getModifiedData().put("adquisicion", adquisicionCD!=null?adquisicionCD.getDescription():""); - super.update(); - tarmTramite = null; - origenAdquisicion = null; - } - - - public TarmTipoTramite getTipoTramite() { - return tipoTramite; - } - - public void setTipoTramite(TarmTipoTramite tipoTramite) { - this.tipoTramite = tipoTramite; - } - - public String getOrigenAdquisicion() { - return origenAdquisicion; - } - - public void setOrigenAdquisicion(String origenAdquisicion) { - this.origenAdquisicion = origenAdquisicion; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public String getTipoPersona() { - return tipoPersona; - } - - public void setTipoPersona(String tipoPersona) { - this.tipoPersona = tipoPersona; - } - - public TarmTramite getTarmTramite() { - return tarmTramite; - } - - public void setTarmTramite(TarmTramite tarmTramite) { - this.tarmTramite = tarmTramite; - } - - public String getTipoAutorizacion() { - return tipoAutorizacion; - } - - public void setTipoAutorizacion(String tipoAutorizacion) { - this.tipoAutorizacion = tipoAutorizacion; - } - - public String getCategoria() { - return categoria; - } - - public void setCategoria(String categoria) { - this.categoria = categoria; - } - - public String getActividad() { - return actividad; - } - - public void setActividad(String actividad) { - this.actividad = actividad; - } - - public String getTipoDeTramite() { - return tipoDeTramite; - } - - public void setTipoDeTramite(String tipoDeTramite) { - this.tipoDeTramite = tipoDeTramite; - } - - public String getTipoDeTramiteD() { - return tipoDeTramiteD; - } - - public void setTipoDeTramiteD(String tipoDeTramiteD) { - this.tipoDeTramiteD = tipoDeTramiteD; - } - - public String getTipoAutorizacionD() { - return tipoAutorizacionD; - } - - public void setTipoAutorizacionD(String tipoAutorizacionD) { - this.tipoAutorizacionD = tipoAutorizacionD; - } - - public String getCategoriaD() { - return categoriaD; - } - - public void setCategoriaD(String categoriaD) { - this.categoriaD = categoriaD; - } - - public String getActividadD() { - return actividadD; - } - - public void setActividadD(String actividadD) { - this.actividadD = actividadD; - } - - public String getOrigenAdquisicionD() { - return origenAdquisicionD; - } - - public void setOrigenAdquisicionD(String origenAdquisicionD) { - this.origenAdquisicionD = origenAdquisicionD; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/PreguntasParaEvaluacionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/PreguntasParaEvaluacionesController.java.svn-base deleted file mode 100644 index a93ad5e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/PreguntasParaEvaluacionesController.java.svn-base +++ /dev/null @@ -1,468 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.eval.RespuestasController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.eval.TarmPreguntas; -import com.fp.persistence.parmas.eval.TarmRespuestas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmPreguntas. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class PreguntasParaEvaluacionesController extends - AbstractController { - - /** - * Lista de catalogos de tipos de evaluaciones - */ - List lTipoEvaluacion; - /** - * Lista de catalogos de tipos de personas - */ - List lTipoPersona; - /** - * Lista de catalogos de tipos de estados de preguntas - */ - List lEstados; - /** - * Variable tipo map utilizada para generar el numero de pregunta segun el tipo de persona y tipo de evaluacion escogidos - */ - private Map numeroPreguntaMAP = new HashMap(); - /** - * Constante usada para referirse al codigo de tipo de evaluacion - */ - private final String TIPOEVALUACIONCODIGO = "TIPOEVALUACION"; - /** - * Constante usada para referirse al codigo de tipo de persona - */ - private final String TIPOPERSONACODIGO = "PERSONTYPE"; - /** - * Constante usada para referirse a codigo de estado de preguntas - */ - private final String ESTADOPREGUNTACODIGO = "ESTADOPRUEBAS"; - /** - * Variable de tipo boleano para indicar si el dialog esta en modo edicion o creacion - */ - private Boolean esEdicionBln; - /** - * Variable de tipo boleano para indicar si existe alguna respuesta a la pregunta - */ - private Boolean existeRespuestasBln; - - public PreguntasParaEvaluacionesController() throws Exception { - super(TarmPreguntas.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - lTipoEvaluacion = CatalogDetailController.find("TIPOEVALUACION"); - lTipoPersona = CatalogDetailController.find(TIPOPERSONACODIGO); - lEstados = CatalogDetailController.find("ESTADOPRUEBAS"); - if (lEstados!=null && lEstados.size()==2) { - TgeneCatalogDetail activado=lEstados.get(0); - lEstados.set(0, lEstados.get(1)); - lEstados.set(1, activado); - - } - for (TgeneCatalogDetail tEvaluacion : lTipoEvaluacion) { - for (TgeneCatalogDetail tPersona : lTipoPersona) { - numeroPreguntaMAP.put(tEvaluacion.getPk().getCatalog() - + tPersona.getPk().getCatalog(), 0); - } - } - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Método de busqueda que consulta una lista de preguntas mediante codigo de evaluacion y codigo de persona - * @param String codigoEvaluacion - * @param String codigoPersona - * @return List lista de pregunta - */ - public ListfindByCodEvaluacionPersona(String codigoEvaluacion, String codigoPersona){ - try { - PreguntasParaEvaluacionesController cc = new PreguntasParaEvaluacionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("tipoevaluacion", codigoEvaluacion); - cc.addFilter("tipopersona", codigoPersona); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Método que obtiene el numero de pregunta - * @param String codigo Evaluacion - * @param String codigo Persona - * @return numero de pregunta - */ - private void generaNumeroPregunta(String codigoEvaluacion, String codigoPersona) { - if (codigoEvaluacion != null && codigoPersona != null) { - Listlista = findByCodEvaluacionPersona(codigoEvaluacion, codigoPersona); - if (lista!=null) { - Integer ultimoValor = 0; - for (TarmPreguntas pregunta : lista) { - if ((codigoEvaluacion.compareTo(pregunta.getTipoevaluacion()) == 0) && (codigoPersona.compareTo(pregunta.getTipopersona()) == 0)) { - if (ultimoValor < pregunta.getNumeropregunta()) { - ultimoValor = pregunta.getNumeropregunta(); - } - } - } - record.setNumeropregunta(ultimoValor + 1); - } - else{ - record.setNumeropregunta(1); - } - } else { - record.setNumeropregunta(null); - } - } - - /** - * Método que gestiona el cambio de tipo de evaluacion por parte del usuario en el dialogo de crear - * @return numero de pregunta - */ - public void setNombreTipoEvaluacion() { - for (TgeneCatalogDetail r : lTipoEvaluacion) { - if (r.getPk().getCatalog().compareTo(record.getTipoevaluacion()) == 0) { - record.put("nTipoEvaluacion", r.getDescription()); - } - } - record.setTipoevaluacioncodigo(TIPOEVALUACIONCODIGO); - generaNumeroPregunta(record.getTipoevaluacion(),record.getTipopersona()); - } - - /** - * Método que gestiona el cambio de tipo de persona por parte del usuario en el dialogo de crear - */ - public void setNombreTipoPersona() { - for (TgeneCatalogDetail r : lTipoPersona) { - if (r.getPk().getCatalog().compareTo(record.getTipopersona()) == 0) { - record.put("nTipoPersona", r.getDescription()); - } - } - record.setTipopersonacodigo(TIPOPERSONACODIGO); - generaNumeroPregunta(record.getTipoevaluacion(),record.getTipopersona()); - } - - /** - * Método que devuelve el estado de la pregunta - */ - public void setEstadoPregunta() { - for (TgeneCatalogDetail r : lEstados) { - if (r.getPk().getCatalog().compareTo(record.getEstadopregunta()) == 0) { - record.put("nEstado", r.getDescription()); - } - } - record.setEstadopreguntacodigo(ESTADOPREGUNTACODIGO); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "PREGUNTASPARAEVALUACIONES"; - esEdicionBln = Boolean.FALSE; - existeRespuestasBln = Boolean.FALSE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - - for(TgeneCatalogDetail estadoObj:lEstados){ - if(estadoObj.getPk().getCatalog().equalsIgnoreCase("INA")){ - record.setEstadopregunta("INA"); - record.setEstadopreguntacodigo(ESTADOPREGUNTACODIGO); - record.getModifiedData().put("nEstado", estadoObj.getDescription()); - } - } - esEdicionBln = Boolean.FALSE; - existeRespuestasBln = Boolean.FALSE; - } - - /** - * Metodo ejecutado al editar un item de la tabla - */ - public void edicion(){ - esEdicionBln = Boolean.TRUE; - existeRespuestasBln = consultarExisteResuestas(); - } - - /** - * Metodo que verifica si existe o no al menos una respuesta para la pregunta - */ - public Boolean consultarExisteResuestas(){ - ListrespuestaList = RespuestasController.findxPregunta(record.getPk().toString()); - if(respuestaList!=null && respuestaList.size()>0){ - return Boolean.TRUE; - }else{ - return Boolean.FALSE; - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.numeropregunta"); - // Subquery - SubQuery subqueryTipoEval = new SubQuery("TgeneCatalogDetail", - "description", "nTipoEvaluacion", - "i.pk.catalog = t.tipoevaluacion and i.pk.catalogcode = t.tipoevaluacioncodigo"); - dto.addSubQuery(subqueryTipoEval); - - // Subquery - SubQuery subqueryTipoPers = new SubQuery("TgeneCatalogDetail", - "description", "nTipoPersona", - "i.pk.catalog = t.tipopersona and i.pk.catalogcode = t.tipopersonacodigo"); - dto.addSubQuery(subqueryTipoPers); - - // Subquery de Estado Pregunta - SubQuery subqueryEstado = new SubQuery("TgeneCatalogDetail", - "description", "nEstado", - "i.pk.catalog = t.estadopregunta and i.pk.catalogcode = t.estadopreguntacodigo"); - dto.addSubQuery(subqueryEstado); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lEstados==null){ - lEstados = CatalogDetailController.find("ESTADOPRUEBAS"); - } - for (TarmPreguntas pregunta : lrecord) { - for (TgeneCatalogDetail estado : lEstados) { - if(pregunta.getEstadopregunta()!=null && pregunta.getEstadopregunta().equalsIgnoreCase(estado.getPk().getCatalog())){ - pregunta.modifiedData.put("nEstado", estado.getDescription()); - } - } - } - - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Consulta preguntas por codigo de pregunta - * - * @param cpreguntas - * @return - * @throws Exception - */ - public static List find(String cpreguntas) throws Exception { - PreguntasParaEvaluacionesController r = new PreguntasParaEvaluacionesController(); - r.addFilter("pk", cpreguntas); - r.querydatabase(); - return r.getLrecord(); - } - - - /** - * Consulta todas las preguntas filtradas por tipo de persona y por tipo de evaluacion - */ - public static List findxPregunta(String tipopersona, String tipoevaluacion) { - try { - PreguntasParaEvaluacionesController cc = new PreguntasParaEvaluacionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("tipopersona", tipopersona); - cc.addFilter("tipoevaluacion",tipoevaluacion); - cc.addFilter("estadopregunta","ACT"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca en la lista de estados la descripcion del codigo de estado recibido como parametro - */ - public String descripcionEstadoPregunta(String estadoCodigo){ - String estado=""; - - for (TgeneCatalogDetail e : lEstados) { - if(estadoCodigo.equalsIgnoreCase(e.getPk().getCatalog())){ - return e.getDescription(); - } - } - - return estado; - } - - public List getlTipoEvaluacion() { - return lTipoEvaluacion; - } - - public void setlTipoEvaluacion(List lTipoEvaluacion) { - this.lTipoEvaluacion = lTipoEvaluacion; - } - - public List getlTipoPersona() { - return lTipoPersona; - } - - public void setlTipoPersona(List lTipoPersona) { - this.lTipoPersona = lTipoPersona; - } - - public Map getNumeroPreguntaMAP() { - return numeroPreguntaMAP; - } - - public void setNumeroPreguntaMAP(Map numeroPreguntaMAP) { - this.numeroPreguntaMAP = numeroPreguntaMAP; - } - - public Boolean getEsEdicionBln() { - return esEdicionBln; - } - - public void setEsEdicionBln(Boolean esEdicionBln) { - this.esEdicionBln = esEdicionBln; - } - - public Boolean getExisteRespuestasBln() { - return existeRespuestasBln; - } - - public void setExisteRespuestasBln(Boolean existeRespuestasBln) { - this.existeRespuestasBln = existeRespuestasBln; - } - - /** - * Abre el dialogo de respuestas desde la pantalla principal para la pregunta seleccionada - */ - public void openRespuestasLov(TarmPreguntas preguntaSel) { - Map> params = new HashMap<>(); - List preguntaPKLst = new ArrayList<>(); - preguntaPKLst.add(preguntaSel.getPk().toString()); - params.put("preguntaPK", preguntaPKLst); - RespuestasLovController.openLov(params); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo de respuestas - */ - public void onReturnRespuestasLov(SelectEvent event) throws Exception { - System.out.println("*** Retorna del LOV de respuestas..."); -// querydatabase(); - } - - - public List getlEstados() { - return lEstados; - } - - public void setlEstados(List lEstados) { - this.lEstados = lEstados; - } - - /** - * Metodo usado por controladores externos para cargar en el bean pasado como parametro en la variable record - */ - public void update(TarmPreguntas bean) throws Exception{ - record=bean; - update(); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoController.java.svn-base deleted file mode 100644 index 336bc4a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoController.java.svn-base +++ /dev/null @@ -1,225 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmRequisito; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; - -/** - * Clase controladora del bean TarmRequisito. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RequisitoController extends AbstractController { - - public RequisitoController() throws Exception { - super(TarmRequisito.class); - } - - @ManagedProperty(value = "#{requisitoPorTramiteController}") - private RequisitoPorTramiteController requisitoPorTramiteController; - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REQUISITO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - record.setActive("Y"); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - HashMap msave = new HashMap(); - Request request = callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(1); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - for(TarmRequisito requisito:lrecord){ - if(requisito.getActive()!=null && requisito.getActive().equals("N")){ - //consulta de requisitosportramite - requisitoPorTramiteController.setLrecord(RequisitoPorTramiteController.findxrequisito(requisito.getPk())); - if(requisitoPorTramiteController.getLrecord()!=null){ - for(TarmRequisitoPorTipoTramite requisitoPorTipoTramite: requisitoPorTramiteController.getLrecord()){ - requisitoPorTramiteController.setRecord(requisitoPorTipoTramite); - requisitoPorTramiteController.getRecord().setActive("N"); - requisitoPorTramiteController.update(); - } - } - } - } - - DtoSave dtosaverequisitotramite = requisitoPorTramiteController.getDtoSave(); - dtosaverequisitotramite.setPosition(2); - msave.put(requisitoPorTramiteController.getBeanalias(), dtosaverequisitotramite); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void eliminar(TarmRequisito requisito) throws Exception { - requisito.setActive("N"); - setRecord(requisito); - super.update(); - } - - /** - * Entrega una lista de requisitos. - * - * @return List - */ - public static List find() { - try { - RequisitoController cc = new RequisitoController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static List findActivos() { - try { - RequisitoController cc = new RequisitoController(); - cc.init(); - cc.recperpage = 300; - cc.getMfilters().put("active", "Y"); - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método que retorna un Requisito en base al id enviado - * @param crequisito - * @return - */ - public static TarmRequisito findxId(String crequisito) { - try { - RequisitoController cc = new RequisitoController(); - cc.getMfilters().put("pk", crequisito); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public RequisitoPorTramiteController getRequisitoPorTramiteController() { - return requisitoPorTramiteController; - } - - public void setRequisitoPorTramiteController( - RequisitoPorTramiteController requisitoPorTramiteController) { - this.requisitoPorTramiteController = requisitoPorTramiteController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoPorTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoPorTramiteController.java.svn-base deleted file mode 100644 index 5720b1f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RequisitoPorTramiteController.java.svn-base +++ /dev/null @@ -1,432 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmRequisito; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean requisitos por tramite, tabla TarmRequisitoPorTipoTramite - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean(name = "requisitoPorTramiteController") -@ViewScoped -public class RequisitoPorTramiteController extends - AbstractController { - /** - * Lista de tipos de tramites - */ - List ltipotramite; - - /** - * Lista de tipos de requisitos - */ - List lrequisito; - - /** - * Booleano que indica si el deposito es por tramite - */ - private boolean depositoPorTramite; - /** - * Booleano que indica si el deposito es por custodio - */ - private boolean depositoPorCustodio; - /** - * Codigo de tramite - */ - private Long cTramite; - - public RequisitoPorTramiteController() throws Exception { - super(TarmRequisitoPorTipoTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lrequisito = RequisitoController.findActivos(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REQUISITOPORTRAMITE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TarmRequisitoPorTipoTramite y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (cTramite==null) { - MessageHelper.setMessageError("POR FAVOR SELECCIONE UN TR\u00c1MITE"); - return; - } - super.create(); - this.record.setActive("Y"); - depositoPorCustodio = false; - depositoPorTramite = false; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(cTramite!=null){ - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.crequisito"); - Filter filtro = new Filter(); - filtro.setSql(" t.active = 'Y'"); - dto.addFiltro(filtro); - // Subquery - SubQuery subquerypk = new SubQuery("TarmRequisito", "pk", "crequisito", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subquerypk); - SubQuery subquery = new SubQuery("TarmRequisito", "nombre", "nrequisito", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subquery); - SubQuery subqueryDescCorta = new SubQuery("TarmRequisito", "descripcioncorta", "ndescripcion", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subqueryDescCorta); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp - .get(beanalias); - super.postQuery(lrecord); - } - } - else{ - MessageHelper.setMessageError("POR FAVOR SELECCIONE UN TR\u00c1MITE"); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseConsultas() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.crequisito"); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @Override - public void update() throws Exception { - List lista = findInactiveTramiteRequisito(cTramite.toString(), record.getPk().getCrequisito()); - if(lista != null && !lista.isEmpty()){ - System.out.println("existe resultado : " + lista.get(0).getPk().getCrequisito() + "------------- " + lista.get(0).getPk().getCtramite()); - record.setIsnew(false); - record.put("ORIGINALBEAN", lista.get(0).get("ORIGINALBEAN")); - this.lrecord.add(record); - } - super.update(); - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void borrarRequisitos(){ - try { - this.record.setActive("N"); - update(); - this.lrecord.remove(this.record); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Fija la descripcion del requisito desde el dialogo de requisitos en el objeto record a persistir - */ - public void setNombreReqisito() { - for (TarmRequisito r : lrequisito) { - if (r.getPk().compareTo(record.getPk().getCrequisito()) == 0) { - record.put("nrequisito", r.getNombre()); - } - } - record.getPk().setCtramite(cTramite); - } - - public List getLtipotramite() { - return ltipotramite; - } - - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - /** - * @return the lrequisito - */ - public List getLrequisito() { - return lrequisito; - } - - /** - * @param lrequisito - * the lrequisito to set - */ - public void setLrequisito(List lrequisito) { - this.lrequisito = lrequisito; - } - - /** - * Consulta una lista de requisitos por tipo de tramite. - * - * @param ctipotramite - * @return - * @throws Exception - */ - public static List find(String ctipotramite) - throws Exception { - RequisitoPorTramiteController r = new RequisitoPorTramiteController(); - r.addFilter("pk.ctipotramite", ctipotramite); - r.querydatabase(); - return r.getLrecord(); - } - - public static List findxrequisito(String crequisito) - throws Exception { - RequisitoPorTramiteController r = new RequisitoPorTramiteController(); - r.addFilter("pk.crequisito", crequisito); - r.querydatabasesimple(); - return r.getLrecord(); - } - - /** - * Metodo que encuentra TarmRequisitoPorTipoTramite por tramite y por requisito en estado inactivo - * @param codigoSolicitud - * @return - */ - public static List findInactiveTramiteRequisito(String tramite, String requisito) { - try { - RequisitoPorTramiteController cc = new RequisitoPorTramiteController(); - cc.init(); - cc.recperpage = 300; - if(tramite != null){ - cc.addFilter("pk.ctramite", tramite); - } - if(requisito != null){ - cc.addFilter("pk.crequisito", requisito); - } - cc.addFilter("active", "N"); - cc.querydatabaseConsultas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public boolean isDepositoPorTramite() { - return depositoPorTramite; - } - - public void setDepositoPorTramite(boolean depositoPorTramite) { - this.depositoPorTramite = depositoPorTramite; - } - - public boolean isDepositoPorCustodio() { - return depositoPorCustodio; - } - - public void setDepositoPorCustodio(boolean depositoPorCustodio) { - this.depositoPorCustodio = depositoPorCustodio; - } - - public Long getcTramite() { - return cTramite; - } - - public void setcTramite(Long cTramite) { - this.cTramite = cTramite; - } - - /** - * Método para manejar el evento change en el CheckBox DepositoPorTramite - */ - public void onChangeDepositoPorTramite() { - if (depositoPorTramite) { - record.setDepositoportramite("Y"); - } else { - record.setDepositoportramite("N"); - } - } - - /** - * Método para manejar el evento change en el CheckBox DepositoPorCustodio - */ - public void onChangeDepositoPorCustodio() { - if (depositoPorCustodio) { - record.setDepositoporcustodio("Y"); - } else { - record.setDepositoporcustodio("N"); - } - } - - /** - * Abre el dialog para seleccionar un tramite - */ - public void openRequisitosPorTramiteLov() { - Map> params = new HashMap<>(); - BuscarTramiteLovController.openLov(params); - } - - /** - * Completa las acciones pertinentes al momento en que se cierra el dialog para seleccionar un tramite - */ - public void onReturnRequisitosPorTramiteLov(SelectEvent event) - throws Exception { - TarmTramite t = (TarmTramite) event.getObject(); - super.addFilter("pk.ctramite", t.getPk().toString()); - super.addField("tipoTramiteName", - t.getModifiedData().get("destipoTramite")); - super.addField("tipoAutorizacionName", - t.getModifiedData().get("destipoAutorizacion")); - super.addField("categoriaName", t.getModifiedData().get("descategoria")); - super.addField("usoActividadName", - t.getModifiedData().get("desusoactividad")); - cTramite = t.getPk(); - this.query(); - } - - protected void querydatabasesimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.crequisito"); - Filter filtro = new Filter(); - filtro.setSql(" t.active = 'Y'"); - dto.addFiltro(filtro); - // Subquery - SubQuery subquery = new SubQuery("TarmRequisito", "nombre", "nrequisito", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subquery); - SubQuery subqueryDescCorta = new SubQuery("TarmRequisito", "descripcioncorta", "ndescripcion", "i.pk = t.pk.crequisito"); - dto.addSubQuery(subqueryDescCorta); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RespuestasLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RespuestasLovController.java.svn-base deleted file mode 100644 index f79c0e9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/RespuestasLovController.java.svn-base +++ /dev/null @@ -1,282 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.eval.TarmPreguntas; -import com.fp.persistence.parmas.eval.TarmRespuestas; - -/** - * Clase controller de respuestas para preguntas - * - * @author Christian Pazmino - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class RespuestasLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - /** - * Variable que contiene la pregunta a las que corresponden las respuestas presentadas - */ - private TarmPreguntas pregunta; - /** - * Variable de tipo boleano que indica si una respuesta es o no correcta - */ - private Boolean isCorrecta; - /** - * Estado de la respuesta - */ - private String estado; - /** - * Constante usada para referirse al estado activo de una respuesta - */ - private final String ESTADOACTIVO = "ACT"; - /** - * Constante usada para referirse al estado inactivo de una respuesta - */ - private final String ESTADOINACTIVO = "INA"; - - /** - * Referencia al controlador de la clase pregunta - */ - @ManagedProperty(value = "#{preguntasParaEvaluacionesController}") - private PreguntasParaEvaluacionesController preguntasController; - - public RespuestasLovController() throws Exception { - super(TarmRespuestas.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - String preguntaPK = CallerHelper.getLovParameter("preguntaPK"); - pregunta = PreguntasParaEvaluacionesController.find(preguntaPK).get(0); - if(pregunta.getEstadopregunta().equalsIgnoreCase(ESTADOACTIVO)){ - estado = CatalogDetailController.findxCodigoCodcatalogo(ESTADOACTIVO, "ESTADOPRUEBAS").getDescription(); - }else if (pregunta.getEstadopregunta().equalsIgnoreCase(ESTADOINACTIVO)){ - estado = CatalogDetailController.findxCodigoCodcatalogo(ESTADOINACTIVO, "ESTADOPRUEBAS").getDescription(); - } - this.addFilter("cpregunta", pregunta.getPk().toString()); - this.querydatabase(); - //super.startQuery(); - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "RESPUESTASLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.descripcion"); - - Filter f = new Filter(); - f.setSql("t.isactive = 'Y'"); - dto.addFiltro(f); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Abre el dialogo de crear/editar respuestas desde la pantalla de respuestas - */ - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/respuestasLov.xhtml", options, params); - } - - /** - * Crea una instancia y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - isCorrecta = false; - record.setCpregunta(pregunta.getPk()); - record.setIsactive("Y"); - } - - /** - * Actualiza la lista de registros a grabar - * - * @throws Exception - */ - public void update() throws Exception { - if(record.getEscorrecta()==null){ - record.setEscorrecta("N"); - } - super.update(); - } - - public void eliminarLogico() throws Exception{ - record.setIsactive("N"); - super.update(); - this.lrecord.remove(record); - - } - - @Override - public void save() { - try { - if(lrecord.size()>=2){ - int numRespuestasCorrectas = 0; - for(TarmRespuestas respuesta : lrecord){ - if(respuesta.getEscorrecta().equals("Y")){ - numRespuestasCorrectas++; - } - if(numRespuestasCorrectas>1){ - break; - } - } - if(numRespuestasCorrectas==1){ - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - // Cambiar el estado de la pregunta - if(pregunta.getEstadopregunta().equalsIgnoreCase(ESTADOINACTIVO)){ - pregunta.isnew = false; - pregunta.setEstadopregunta(ESTADOACTIVO); - preguntasController.update(pregunta); - preguntasController.save(); - } - - RequestContext.getCurrentInstance().closeDialog(pregunta); - } - else if(numRespuestasCorrectas>1){ - MessageHelper.setMessageError("LA PREGUNTA PUEDE TENER MARCADA SOLO UNA RESPUESTA CORRECTA"); - }else if(numRespuestasCorrectas==0){ - MessageHelper.setMessageError("LA PREGUNTA DEBE TENER MARCADA UNA RESPUESTA CORRECTA"); - } - }else{ - MessageHelper.setMessageError("DEBEN HABER AL MENOS DOS RESPUESTAS"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TarmPreguntas getPregunta() { - return pregunta; - } - - public void setPregunta(TarmPreguntas pregunta) { - this.pregunta = pregunta; - } - - public Boolean getIsCorrecta() { - return isCorrecta; - } - - public void setIsCorrecta(Boolean isCorrecta) { - this.isCorrecta = isCorrecta; - } - - /** - * Metodo para manejar el evento change en el CheckBox "respuesta correcta" y convertir valor TRUE en "Y" y FALSE en "N" - */ - public void onChangeEsCorrecta() { - if (isCorrecta) { - record.setEscorrecta("Y"); - } else { - record.setEscorrecta("N"); - } - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public PreguntasParaEvaluacionesController getPreguntasController() { - return preguntasController; - } - - public void setPreguntasController( - PreguntasParaEvaluacionesController preguntasController) { - this.preguntasController = preguntasController; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SancionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SancionesController.java.svn-base deleted file mode 100644 index 448684d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SancionesController.java.svn-base +++ /dev/null @@ -1,235 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.CatalogLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SancionesController extends AbstractController { - - public SancionesController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.catalogcode") == null) { - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.create(); - this.record.getPk().setCatalogcode(super.getMfilters().get("pk.catalogcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void openCatalogLov() { - Map> params = new HashMap<>(); - CatalogLovController.openLov(params); - } - - public void onReturnCatalogLov(SelectEvent event) throws Exception { - TgeneCatalog t = (TgeneCatalog) event.getObject(); - super.addFilter("pk.catalogcode", t.getPk()); - super.addField("catalogname", t.getDescription()); - this.query(); - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String catalogcode) { - try { - SancionesController cc = new SancionesController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk.catalogcode", catalogcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @param legalcode Código legal - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String catalogcode, String legalcode) { - try { - SancionesController cc = new SancionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("legalcode", legalcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que consulta por Catalog y Catalogcode ambos requeridos - */ - public static TgeneCatalogDetail findxCodigoCodcatalogo(String catalog, String catalogcode) { - try {//TgeneCatalogDetailKey - if(catalog!=null && catalogcode!=null){ - SancionesController cc = new SancionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TgeneCatalogDetail findxCodigo(String catalog) { - try {//TgeneCatalogDetailKey - SancionesController cc = new SancionesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que llena lal lista de géneros - */ - public static List getListGender(){ - List gender = new ArrayList(); - String[] male = {"M", "MASCULINO"}; - String[] female = {"F", "FEMENINO"}; - gender.add(male); - gender.add(female); - return gender; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.netbeans-base deleted file mode 100644 index 9975b0b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.netbeans-base +++ /dev/null @@ -1,608 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TarmSitioAlmacenamiento. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SitioAlmacenamientoController extends AbstractController { - - /** - * latitud de la direccin en el google map - */ - private String latitud; - /** - * longitud de la direccin en el google map - */ - private String longitud; - /** - * direccion en la que se va ha visualizar el map - */ - private String direccionGoogleMap; - - - public SitioAlmacenamientoController() throws Exception { - super(TarmSitioAlmacenamiento.class); - } - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lparroquias; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcities; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoComercio; - - private Boolean btnEditar=Boolean.FALSE; - - /** - * tipoMapa permite visualizar la posicion del mapa por direccion o por coordenadas - */ - private String tipoMapa; - - private String latitudG; - private String latitudM; - private String latitudS; - private String longuitudG; - private String longuitudM; - private String longuitudS; - - private String latitudGMS; - private String longitudGMS; - - - @PostConstruct - private void postconstruct() { - setDireccionGoogleMap("Ecuador"); - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL"; - lprovinces= ProvinceController.find("EC"); - tipoComercio = CatalogDetailController.find("TIPOCOMERCIO"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - record.setCountrycode("EC"); - record.setTipocomerciocodigo("TIPOCOMERCIO"); - record.setEstado("ACT"); - btnEditar=Boolean.FALSE; - - if(this.getMfilters().get("pk.personcode")!=null){ - record.setPersoncode(Integer.parseInt(this.getMfilters().get("pk.personcode").toString())); - record.getModifiedData().put("nombre", this.getMfilelds().get("nombre")); - record.getModifiedData().put("numeroDocumento", this.getMfilelds().get("numeroDocumento")); - } - if(this.getMfilters().get("tipocomercio")!=null){ - record.setTipocomercio(this.getMfilters().get("tipocomercio").toString()); - } - } - - @Override - public void update() throws Exception{ -//-------------------validar SELECCION TIPO UBICACION - if(tipoMapa == null || "".equals(tipoMapa)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipoMapa")); - return; - } -//-------------------validar LATITUD Y LONGITUD - if(record.getLatitud()==null || record.getLongitud()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselongitudlatitud")); - return; - } - - if (record.getPersoncode() == null) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numerodocumento")); - return; - } - catalogos(tipoComercio, record.getTipocomercio(), "tipocomercio"); - super.update(); - btnEditar=Boolean.TRUE; - } - - public void edit(){ - executeProvince(); - executeCanton(); - btnEditar=Boolean.TRUE; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.addFilter("estado", "ACT"); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.bodega"); - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "numeroDocumento", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery tipoComercio= new SubQuery - ("TgeneCatalogDetail", "description", "tipocomercio", "i.pk.catalog = t.tipocomercio and i.pk.catalogcode=t.tipocomerciocodigo"); - - dto.addSubQuery(snombre); - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(tipoComercio); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void remove() { - if (this.record != null) { - this.record.setEstado("INA"); - try { - removefromlista(lrecord, record); - this.addUpdated(record); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - } - - private void removefromlista(List ldata, TarmSitioAlmacenamiento abstractbean) - throws Exception { - int size = ldata.size(); - for (int i = 0; i < size; i++) { - if (ldata.get(i).rowkey() == abstractbean.rowkey()) { - ldata.remove(i); - break; - } - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - /** - * Método para el evento change del combo ciudad - */ - public void executeCiudad() { - if ((getRecord().getCantoncode() != null) && (getRecord().getCantoncode().compareTo("") != 0)) { - List lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - setDireccionGoogleMap(lcities.get(0).getDescription() + ", " + "Ecuador"); - } - } - - /** - * Método para abrir el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - /** - * Método para obtener la persona al cerrar el lov de persona - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail tp = (TcustPersonDetail) event.getObject(); - super.addFilter("pk.personcode", tp.getPk().getPersoncode().toString()); - super.addField("nombre", tp.getName()); - super.addField("numeroDocumento", tp.getIdentification()); - } - /** - * Método para obtener la persona al cerrar el lov de persona - * @param event - * @throws Exception - */ - public void onReturnPersonDialogLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - record.getModifiedData().put("nombre", t.getName()); - record.getModifiedData().put("numeroDocumento", t.getIdentification()); - record.setPersoncode(t.getPk().getPersoncode()); - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String code) { - try { - SitioAlmacenamientoController cc = new SitioAlmacenamientoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", code); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Metodo que permite setear los datos de coordenadas relacionados a la entidad TarmDecomiso, una vez seleccionado un punto en el Map desde pantalla - */ - public void evento(){ - getRecord().setLatitud(new BigDecimal(getLatitud())); - getRecord().setLongitud(new BigDecimal(getLongitud())); - - String longitudString = getRecord().getLongitud().toString(); - if(longitudString.contains("-")){ - longitudString = longitudString.replace("-", ""); - setLongitudGMS("oeste"); - }else{ - setLongitudGMS("este"); - } - String[] longitud = transformarGrados(longitudString); - - - - String latitudString = getRecord().getLatitud().toString(); - if(latitudString.contains("-")){ - latitudString = latitudString.replace("-", ""); - setLatitudGMS("sur"); - }else{ - setLatitudGMS("norte"); - } - String[] latitud = transformarGrados(latitudString); - - setLatitudG(latitud[0]); - setLatitudM(latitud[1]); - setLatitudS(latitud[2]); - setLonguitudG(longitud[0]); - setLonguitudM(longitud[1]); - setLonguitudS(longitud[2]); - } - - /** - * Inicializa los campos al cambiar el tipo de Ubicacion desde la pagina - */ - public void changeUbicacion(){ - getRecord().setLatitud(null); - getRecord().setLongitud(null); - setLatitudG(""); - setLatitudM(""); - setLatitudS(""); - setLonguitudG(""); - setLonguitudM(""); - setLonguitudS(""); - setLatitud(""); - setLongitud(""); - setLongitudGMS(null); - setLatitudGMS(null); - } - - /** - * Permite inicializar los campos de longitud y lalitud y cargar a los datos de coordenadas relacionados a la entidad TarmDecomiso - */ - public void openMapPorCoordenandas(){ - setLatitud(""); - setLongitud(""); - if("coodernadas".equals(tipoMapa)){ - getRecord().setLatitud(new BigDecimal(transformarCoordenadas(latitudG, latitudM, latitudS, "sur".equals(latitudGMS)))); - getRecord().setLongitud(new BigDecimal(transformarCoordenadas(longuitudG, longuitudM, longuitudS, "oeste".equals(longitudGMS)))); - } - } - - /** - * Metodo que permite transformar de Coordenadas Hexadecimales a Coordenadas en Grados, Minutos y Seguntos - * @param coordenada - * @return vector con las Coordenadas en Grados, Minutos y Seguntos - */ - public String[] transformarGrados(String coordenada){ - int grados = new BigDecimal(coordenada).intValue(); - BigDecimal minutos = new BigDecimal(coordenada).subtract(new BigDecimal(grados)).multiply(new BigDecimal(60)); - int min = minutos.intValue(); - BigDecimal segundos = minutos.subtract(new BigDecimal(min)).multiply(new BigDecimal(60)).setScale(4, BigDecimal.ROUND_FLOOR); - //System.out.println("latitude: " + grados + " " + min + " " + segundos); - return (grados + "," + min + "," + segundos).split(","); - } - - public String transformarCoordenadas(String grados, String minutos, String segundos, boolean negativo){ - BigDecimal resultado = new BigDecimal(grados).add(new BigDecimal(minutos).divide(new BigDecimal(60), 12, BigDecimal.ROUND_FLOOR)).add(new BigDecimal(segundos).divide(new BigDecimal(3600), 12, BigDecimal.ROUND_FLOOR)); - resultado = resultado.setScale(12, BigDecimal.ROUND_FLOOR); - if(negativo){ - resultado = resultado.multiply(new BigDecimal(-1)); - } - return resultado.toString(); - } - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public List getTipoComercio() { - return tipoComercio; - } - - public void setTipoComercio(List tipoComercio) { - this.tipoComercio = tipoComercio; - } - - public Boolean getBtnEditar() { - return btnEditar; - } - - public void setBtnEditar(Boolean btnEditar) { - this.btnEditar = btnEditar; - } - - public String getLatitud() { - return latitud; - } - - public void setLatitud(String latitud) { - this.latitud = latitud; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public String getDireccionGoogleMap() { - return direccionGoogleMap; - } - - public void setDireccionGoogleMap(String direccionGoogleMap) { - this.direccionGoogleMap = direccionGoogleMap; - } - - public String getTipoMapa() { - return tipoMapa; - } - - public void setTipoMapa(String tipoMapa) { - this.tipoMapa = tipoMapa; - } - - public String getLatitudG() { - return latitudG; - } - - public void setLatitudG(String latitudG) { - this.latitudG = latitudG; - } - - public String getLatitudM() { - return latitudM; - } - - public void setLatitudM(String latitudM) { - this.latitudM = latitudM; - } - - public String getLatitudS() { - return latitudS; - } - - public void setLatitudS(String latitudS) { - this.latitudS = latitudS; - } - - public String getLonguitudG() { - return longuitudG; - } - - public void setLonguitudG(String longuitudG) { - this.longuitudG = longuitudG; - } - - public String getLonguitudM() { - return longuitudM; - } - - public void setLonguitudM(String longuitudM) { - this.longuitudM = longuitudM; - } - - public String getLonguitudS() { - return longuitudS; - } - - public void setLonguitudS(String longuitudS) { - this.longuitudS = longuitudS; - } - - /** - * @return the latitudGMS - */ - public String getLatitudGMS() { - return latitudGMS; - } - - /** - * @param latitudGMS the latitudGMS to set - */ - public void setLatitudGMS(String latitudGMS) { - this.latitudGMS = latitudGMS; - } - - /** - * @return the longitudGMS - */ - public String getLongitudGMS() { - return longitudGMS; - } - - /** - * @param longitudGMS the longitudGMS to set - */ - public void setLongitudGMS(String longitudGMS) { - this.longitudGMS = longitudGMS; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.svn-base deleted file mode 100644 index 9975b0b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SitioAlmacenamientoController.java.svn-base +++ /dev/null @@ -1,608 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.math.BigDecimal; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TarmSitioAlmacenamiento. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SitioAlmacenamientoController extends AbstractController { - - /** - * latitud de la direccin en el google map - */ - private String latitud; - /** - * longitud de la direccin en el google map - */ - private String longitud; - /** - * direccion en la que se va ha visualizar el map - */ - private String direccionGoogleMap; - - - public SitioAlmacenamientoController() throws Exception { - super(TarmSitioAlmacenamiento.class); - } - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lparroquias; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcities; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoComercio; - - private Boolean btnEditar=Boolean.FALSE; - - /** - * tipoMapa permite visualizar la posicion del mapa por direccion o por coordenadas - */ - private String tipoMapa; - - private String latitudG; - private String latitudM; - private String latitudS; - private String longuitudG; - private String longuitudM; - private String longuitudS; - - private String latitudGMS; - private String longitudGMS; - - - @PostConstruct - private void postconstruct() { - setDireccionGoogleMap("Ecuador"); - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL"; - lprovinces= ProvinceController.find("EC"); - tipoComercio = CatalogDetailController.find("TIPOCOMERCIO"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - record.setCountrycode("EC"); - record.setTipocomerciocodigo("TIPOCOMERCIO"); - record.setEstado("ACT"); - btnEditar=Boolean.FALSE; - - if(this.getMfilters().get("pk.personcode")!=null){ - record.setPersoncode(Integer.parseInt(this.getMfilters().get("pk.personcode").toString())); - record.getModifiedData().put("nombre", this.getMfilelds().get("nombre")); - record.getModifiedData().put("numeroDocumento", this.getMfilelds().get("numeroDocumento")); - } - if(this.getMfilters().get("tipocomercio")!=null){ - record.setTipocomercio(this.getMfilters().get("tipocomercio").toString()); - } - } - - @Override - public void update() throws Exception{ -//-------------------validar SELECCION TIPO UBICACION - if(tipoMapa == null || "".equals(tipoMapa)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipoMapa")); - return; - } -//-------------------validar LATITUD Y LONGITUD - if(record.getLatitud()==null || record.getLongitud()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselongitudlatitud")); - return; - } - - if (record.getPersoncode() == null) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numerodocumento")); - return; - } - catalogos(tipoComercio, record.getTipocomercio(), "tipocomercio"); - super.update(); - btnEditar=Boolean.TRUE; - } - - public void edit(){ - executeProvince(); - executeCanton(); - btnEditar=Boolean.TRUE; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.addFilter("estado", "ACT"); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.bodega"); - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "numeroDocumento", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery tipoComercio= new SubQuery - ("TgeneCatalogDetail", "description", "tipocomercio", "i.pk.catalog = t.tipocomercio and i.pk.catalogcode=t.tipocomerciocodigo"); - - dto.addSubQuery(snombre); - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(tipoComercio); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void remove() { - if (this.record != null) { - this.record.setEstado("INA"); - try { - removefromlista(lrecord, record); - this.addUpdated(record); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - } - - private void removefromlista(List ldata, TarmSitioAlmacenamiento abstractbean) - throws Exception { - int size = ldata.size(); - for (int i = 0; i < size; i++) { - if (ldata.get(i).rowkey() == abstractbean.rowkey()) { - ldata.remove(i); - break; - } - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - /** - * Método para el evento change del combo ciudad - */ - public void executeCiudad() { - if ((getRecord().getCantoncode() != null) && (getRecord().getCantoncode().compareTo("") != 0)) { - List lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - setDireccionGoogleMap(lcities.get(0).getDescription() + ", " + "Ecuador"); - } - } - - /** - * Método para abrir el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - /** - * Método para obtener la persona al cerrar el lov de persona - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail tp = (TcustPersonDetail) event.getObject(); - super.addFilter("pk.personcode", tp.getPk().getPersoncode().toString()); - super.addField("nombre", tp.getName()); - super.addField("numeroDocumento", tp.getIdentification()); - } - /** - * Método para obtener la persona al cerrar el lov de persona - * @param event - * @throws Exception - */ - public void onReturnPersonDialogLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - record.getModifiedData().put("nombre", t.getName()); - record.getModifiedData().put("numeroDocumento", t.getIdentification()); - record.setPersoncode(t.getPk().getPersoncode()); - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String code) { - try { - SitioAlmacenamientoController cc = new SitioAlmacenamientoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", code); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - /** - * Metodo que permite setear los datos de coordenadas relacionados a la entidad TarmDecomiso, una vez seleccionado un punto en el Map desde pantalla - */ - public void evento(){ - getRecord().setLatitud(new BigDecimal(getLatitud())); - getRecord().setLongitud(new BigDecimal(getLongitud())); - - String longitudString = getRecord().getLongitud().toString(); - if(longitudString.contains("-")){ - longitudString = longitudString.replace("-", ""); - setLongitudGMS("oeste"); - }else{ - setLongitudGMS("este"); - } - String[] longitud = transformarGrados(longitudString); - - - - String latitudString = getRecord().getLatitud().toString(); - if(latitudString.contains("-")){ - latitudString = latitudString.replace("-", ""); - setLatitudGMS("sur"); - }else{ - setLatitudGMS("norte"); - } - String[] latitud = transformarGrados(latitudString); - - setLatitudG(latitud[0]); - setLatitudM(latitud[1]); - setLatitudS(latitud[2]); - setLonguitudG(longitud[0]); - setLonguitudM(longitud[1]); - setLonguitudS(longitud[2]); - } - - /** - * Inicializa los campos al cambiar el tipo de Ubicacion desde la pagina - */ - public void changeUbicacion(){ - getRecord().setLatitud(null); - getRecord().setLongitud(null); - setLatitudG(""); - setLatitudM(""); - setLatitudS(""); - setLonguitudG(""); - setLonguitudM(""); - setLonguitudS(""); - setLatitud(""); - setLongitud(""); - setLongitudGMS(null); - setLatitudGMS(null); - } - - /** - * Permite inicializar los campos de longitud y lalitud y cargar a los datos de coordenadas relacionados a la entidad TarmDecomiso - */ - public void openMapPorCoordenandas(){ - setLatitud(""); - setLongitud(""); - if("coodernadas".equals(tipoMapa)){ - getRecord().setLatitud(new BigDecimal(transformarCoordenadas(latitudG, latitudM, latitudS, "sur".equals(latitudGMS)))); - getRecord().setLongitud(new BigDecimal(transformarCoordenadas(longuitudG, longuitudM, longuitudS, "oeste".equals(longitudGMS)))); - } - } - - /** - * Metodo que permite transformar de Coordenadas Hexadecimales a Coordenadas en Grados, Minutos y Seguntos - * @param coordenada - * @return vector con las Coordenadas en Grados, Minutos y Seguntos - */ - public String[] transformarGrados(String coordenada){ - int grados = new BigDecimal(coordenada).intValue(); - BigDecimal minutos = new BigDecimal(coordenada).subtract(new BigDecimal(grados)).multiply(new BigDecimal(60)); - int min = minutos.intValue(); - BigDecimal segundos = minutos.subtract(new BigDecimal(min)).multiply(new BigDecimal(60)).setScale(4, BigDecimal.ROUND_FLOOR); - //System.out.println("latitude: " + grados + " " + min + " " + segundos); - return (grados + "," + min + "," + segundos).split(","); - } - - public String transformarCoordenadas(String grados, String minutos, String segundos, boolean negativo){ - BigDecimal resultado = new BigDecimal(grados).add(new BigDecimal(minutos).divide(new BigDecimal(60), 12, BigDecimal.ROUND_FLOOR)).add(new BigDecimal(segundos).divide(new BigDecimal(3600), 12, BigDecimal.ROUND_FLOOR)); - resultado = resultado.setScale(12, BigDecimal.ROUND_FLOOR); - if(negativo){ - resultado = resultado.multiply(new BigDecimal(-1)); - } - return resultado.toString(); - } - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public List getTipoComercio() { - return tipoComercio; - } - - public void setTipoComercio(List tipoComercio) { - this.tipoComercio = tipoComercio; - } - - public Boolean getBtnEditar() { - return btnEditar; - } - - public void setBtnEditar(Boolean btnEditar) { - this.btnEditar = btnEditar; - } - - public String getLatitud() { - return latitud; - } - - public void setLatitud(String latitud) { - this.latitud = latitud; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public String getDireccionGoogleMap() { - return direccionGoogleMap; - } - - public void setDireccionGoogleMap(String direccionGoogleMap) { - this.direccionGoogleMap = direccionGoogleMap; - } - - public String getTipoMapa() { - return tipoMapa; - } - - public void setTipoMapa(String tipoMapa) { - this.tipoMapa = tipoMapa; - } - - public String getLatitudG() { - return latitudG; - } - - public void setLatitudG(String latitudG) { - this.latitudG = latitudG; - } - - public String getLatitudM() { - return latitudM; - } - - public void setLatitudM(String latitudM) { - this.latitudM = latitudM; - } - - public String getLatitudS() { - return latitudS; - } - - public void setLatitudS(String latitudS) { - this.latitudS = latitudS; - } - - public String getLonguitudG() { - return longuitudG; - } - - public void setLonguitudG(String longuitudG) { - this.longuitudG = longuitudG; - } - - public String getLonguitudM() { - return longuitudM; - } - - public void setLonguitudM(String longuitudM) { - this.longuitudM = longuitudM; - } - - public String getLonguitudS() { - return longuitudS; - } - - public void setLonguitudS(String longuitudS) { - this.longuitudS = longuitudS; - } - - /** - * @return the latitudGMS - */ - public String getLatitudGMS() { - return latitudGMS; - } - - /** - * @param latitudGMS the latitudGMS to set - */ - public void setLatitudGMS(String latitudGMS) { - this.latitudGMS = latitudGMS; - } - - /** - * @return the longitudGMS - */ - public String getLongitudGMS() { - return longitudGMS; - } - - /** - * @param longitudGMS the longitudGMS to set - */ - public void setLongitudGMS(String longitudGMS) { - this.longitudGMS = longitudGMS; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SolicitudImportacionArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SolicitudImportacionArmasController.java.svn-base deleted file mode 100644 index 9a3be15..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/SolicitudImportacionArmasController.java.svn-base +++ /dev/null @@ -1,115 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - - -import java.util.ArrayList; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmSolicitudImportacion; - - -/** - * Clase controladora del bean TarmSolicitudImportacion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudImportacionArmasController extends AbstractController { - - - - - public SolicitudImportacionArmasController() throws Exception { - super(TarmSolicitudImportacion.class); - } - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Ingreso de Datos Quemados - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - // record = new TarmSolicitudImportacion(); - this.beanalias = "TDIRECCIONES"; - this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void executeProvincia() { - - - } - - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - public void update(TarmSolicitudImportacion bean) throws Exception { - record=bean; - update(); - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmCentroControlJurController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmCentroControlJurController.java.svn-base deleted file mode 100644 index 4027c1b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmCentroControlJurController.java.svn-base +++ /dev/null @@ -1,381 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.model.DefaultTreeNode; -import org.primefaces.model.TreeNode; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TarmCentroControlJur. - * - * @author C.P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TarmCentroControlJurController extends AbstractController { - - private static final long serialVersionUID = 1L; - - /** - * Nodos para la creacion del arbol - */ - private TreeNode root; - /** - * Variable que se carga cuando selecciona un nodo del arbol - */ - private TreeNode selectedNode; - /** - * Recupera el codigo de la provincia selecionada - */ - private String codigoProvincia; - /** - * Recupera la descripcion de la provincia selecionada - */ - private String descripcionProvincia; - /** - * Carga la lista de las provincias - */ - private List lprovinces; - /** - * Carga el centro de control - */ - private TarmCentroControl tarmCentroControl; - - /** - * Inyeccion del controlador centroControlArmasController - */ - @ManagedProperty(value = "#{centroControlArmasController}") - private CentroControlArmasController centroControlArmasController; - - public TarmCentroControlJurController() throws Exception { - super(TarmCentroControlJur.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TARMCENTROCONTROLJURIS"; - tarmCentroControl= new TarmCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - SubQuery sprovincia= new SubQuery - ("TgeneProvince", "description", "desprovincia", "i.pk.countrycode = t.countrycode and i.pk.provincecode= t.provincecode"); - dto.addSubQuery(sprovincia); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp - .get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Metodo que se ejecuta al pulsar jurisdiccion - * Inicializa las variables, lista las provincias y el arbol de jurisdiccion - */ - public void loadEdit() { - centroControlArmasController.getRecord();// contiene el registro seleccionado - clearAll(); - listarProvincias(); - root=null; - getMfilters().put("ccentrocontrol", centroControlArmasController.getRecord().getPk()); - querydatabase(); - root=createTree();//carga el arbol - } - - /** - * selecciona un registro para anadir una jurisdiccion - * @throws Exception - */ - public void displaySelectedSingle() throws Exception { - if(selectedNode != null) { - super.create(); - record.setCountrycode("EC"); - record.setCcentrocontrol(centroControlArmasController.getRecord().getPk()); - listarProvincias(); - } - } - - /** - * elimna la jurisdiccion - * @throws Exception - */ - public void deleteNode() throws Exception { - record=(TarmCentroControlJur)selectedNode.getData(); - if(record.getCcentrocontrol()==null || record.getCcentrocontrol().trim().length()==0){ - MessageHelper.setMessageError("NO SE PUEDE ELIMINAR EL NODO"); - return; - } - record.setProvincianombre(null); - super.remove(); - selectedNode.getChildren().clear(); - selectedNode.getParent().getChildren().remove(selectedNode); - selectedNode.setParent(null); - selectedNode = null; - } - - /** - * arma el arbol - * @return - */ - @SuppressWarnings("unused") - public TreeNode createTree() { - TarmCentroControlJur cabecera = new TarmCentroControlJur(); - cabecera.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desinstitucion").toString()); - - TarmCentroControlJur reg1 = new TarmCentroControlJur(); - reg1.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desinstitucion").toString()); - - TarmCentroControlJur reg2 = new TarmCentroControlJur(); - reg2.setProvincianombre(centroControlArmasController.getRecord().getModifiedData().get("desnombreinstitucion").toString()); - - TreeNode root = new DefaultTreeNode(cabecera, null); - TreeNode nombreCentro = new DefaultTreeNode(cabecera, root); - TreeNode Default2 = new DefaultTreeNode(reg2, nombreCentro); - //se recorre para el arbol - if(lrecord!=null && lrecord.size()>0){ - for(TarmCentroControlJur jurisdiccion:lrecord){ - jurisdiccion.setProvincianombre(nombreProvincia(lprovinces, jurisdiccion.getProvincecode())); - TreeNode documents = new DefaultTreeNode(jurisdiccion, Default2); - } - } - return root; - } - - /** - * Metodo para obtener la descripcion de la provincia - * @param list - * @param codigo - * @return - */ - public String nombreProvincia(Listlist, String codigo){ - for(TgeneProvince item:list){ - if(item.getPk().getProvincecode().equals(codigo)){ - return item.getDescription(); - } - } - return ""; - } - - - /** - * metodo para a\u00F1adir un nuevo registro de jurisdiccion - * @param province - * @throws Exception - */ - public void setProvincia(TgeneProvince province) throws Exception { - System.out.println(province.getDescription()); - //validamos que el registro no este ingresado - List listaJurisdicciones=find(); - if(listaJurisdicciones!=null && listaJurisdicciones.size()>0){ - for(TarmCentroControlJur item:listaJurisdicciones){ - if(item.getProvincecode().equals(province.getPk().getProvincecode())){ - MessageHelper.setMessageError("LA JURISDICCI\u00D3N YA PERTENECE A UN CENTRO DE CONTROL DE ARMAS"); - return; - } - } - } - //validamos sobre la lista que vamos a guardar - if(this.lrecord!=null && this.lrecord.size()>0){ - for(TarmCentroControlJur item:this.lrecord){ - if(item.getProvincecode().equals(province.getPk().getProvincecode())){ - MessageHelper.setMessageError("LA JURISDICCI\u00D3N YA PERTENECE A UN CENTRO DE CONTROL DE ARMAS"); - return; - } - } - } - - record.setProvincecode(province.getPk().getProvincecode()); - addNew(record); - getLrecord().add(record); - root=createTree(); - super.update(); - } - - /** - * Metodo para listar las provincias - */ - public void listarProvincias(){ - if(lprovinces==null || lprovinces.size()==0){ - lprovinces = ProvinceController.findxDescripcion("EC",codigoProvincia, descripcionProvincia); - } - } - - public static List find() { - try { - TarmCentroControlJurController cc = new TarmCentroControlJurController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmCentroControlJur findxProvincia(String provincecode) { - try { - TarmCentroControlJurController cc = new TarmCentroControlJurController(); - cc.init(); - cc.addFilter("provincecode", provincecode); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TreeNode getRoot() { - return root; - } - - public void setRoot(TreeNode root) { - this.root = root; - } - - - public TreeNode getSelectedNode() { - return selectedNode; - } - - - public void setSelectedNode(TreeNode selectedNode) { - this.selectedNode = selectedNode; - } - - public CentroControlArmasController getCentroControlArmasController() { - return centroControlArmasController; - } - - public void setCentroControlArmasController( - CentroControlArmasController centroControlArmasController) { - this.centroControlArmasController = centroControlArmasController; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getDescripcionProvincia() { - return descripcionProvincia; - } - - public void setDescripcionProvincia(String descripcionProvincia) { - this.descripcionProvincia = descripcionProvincia; - } - - public TarmCentroControl getTarmCentroControl() { - return tarmCentroControl; - } - - public void setTarmCentroControl(TarmCentroControl tarmCentroControl) { - this.tarmCentroControl = tarmCentroControl; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmVentaArmaTemporalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmVentaArmaTemporalController.java.svn-base deleted file mode 100644 index feea253..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TarmVentaArmaTemporalController.java.svn-base +++ /dev/null @@ -1,180 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; - -@ManagedBean -@ViewScoped -public class TarmVentaArmaTemporalController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public TarmVentaArmaTemporalController() throws Exception { - super(TarmVentaArmaTem.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 15; - lrecord = new ArrayList<>(); - beanalias = "VENTAARMATEMPORAL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmVentaArmaTem findPendienteCarma(String carma) { - try { - TarmVentaArmaTemporalController cc = new TarmVentaArmaTemporalController(); - cc.init(); - cc.recperpage = 5000; - if(carma!=null && !carma.isEmpty()){ - cc.addFilter("carma", carma); - } - cc.addFilter("estado", "PENDIENTE"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findLote(String lote) { - try { - TarmVentaArmaTemporalController cc = new TarmVentaArmaTemporalController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("estado", "APROBADO"); - cc.querydatabaselote(lote); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - @SuppressWarnings("unchecked") - protected void querydatabaselote(String lote) { - try { - DtoQuery dto = this.getDtoQueryLote(); - dto.setOrderby("pk"); - String sqlFinal = " t.carma in (select p.pk from TarmArmas p where p.lote='"+lote+"') "; - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - private DtoQuery getDtoQueryLote() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryTipoFab= new SubQuery("TgeneCatalogDetail","description","tipofabricacion","i.pk.catalog= (select p.tipofabricacion from TarmArmas p where p.pk=t.carma)"//t.tipofabricacion - + " and i.pk.catalogcode='TIPOFABRICACION'"); - dto.addSubQuery(subqueryTipoFab); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) "//t.ctipoarmaexplosivo - + " and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))");//t.ctipoarmaexplosivo - dto.addSubQuery(subqueryTipo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"//t.ctipoarmaexplosivo - + " and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))");//t.ctipoarmaexplosivo - dto.addSubQuery(subqueryClasecatalogo); - return dto; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TipoArmaExpLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TipoArmaExpLovController.java.svn-base deleted file mode 100644 index 5c1e46c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TipoArmaExpLovController.java.svn-base +++ /dev/null @@ -1,147 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TipoArmaExpLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String legalCode = ""; - - public TipoArmaExpLovController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.init(); - String isArmaFuego = CallerHelper.getLovParameter("isArmaFuego"); - if(isArmaFuego.equals("true")){ - legalCode = CallerHelper.getLovParameter("longitud"); -// this.getMfilters().put("legalcode", longitudcode); - }else{ - legalCode = CallerHelper.getLovParameter("clase"); -// this.getMfilters().put("legalcode", clasecode); - } - // Inicializa autoconsulta - super.startQuery(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TIPOARMEXPLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - -// this.getMfilters().put("pk.catalogcode", "TIPOARMAEXPLOSIVO"); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - Filter filtro = new Filter(); - filtro.setSql("t.legalcode='"+legalCode+"' and t.pk.catalogcode='TIPOARMAEXPLOSIVO'"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Metodo sobrecargado ejecutado al cerrar el dialogo actual - */ - public void setcatalog(TgeneCatalogDetail tgeneCatalogDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalogDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/armas/lov/TipoArmaExpLov.xhtml", options, params); - } - - public String getLegalCode() { - return legalCode; - } - - public void setLegalCode(String legalCode) { - this.legalCode = legalCode; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TiposArmasExplosivosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TiposArmasExplosivosController.java.svn-base deleted file mode 100644 index ec7b11d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TiposArmasExplosivosController.java.svn-base +++ /dev/null @@ -1,996 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.parmas.param.TarmUnidadTipoKey; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmTipoArmaExplosivo. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TiposArmasExplosivosController extends - AbstractController { - - /** - * Variable que contiene el String (nombre de clase) del dialogo seleccionar - * clase de la pantalla principal - */ - private String clase; - /** - * Variable que contiene el String (codigo de clase) del dialogo seleccionar - * clase de la pantalla principal - */ - private String claseCodigo; - - /** - * Variable que contiene el String (nombre de clase) del dialogo seleccionar - * clase de la pantalla principal - */ - private String unidadMedidaPesoD; - /** - * Variable que contiene el String (codigo de clase) del dialogo seleccionar - * clase de la pantalla principal - */ - private String unidadMedidaPesoCodigoD; - - /** - * Variable que contiene el String (nombre de clase) del dialogo seleccionar - * clase de la pantalla crear/editar - */ - private String claseD; - /** - * Variable que contiene el String (codigo de clase) del dialogo seleccionar - * clase de la pantalla crear/editar - */ - private String claseCodigoD; - /** - * Variable que contiene el String (codigo de longitud) del dialogo - * seleccionar longitud de la pantalla principal - */ - private String longitud; - /** - * Variable que contiene el String (codigo de longitud) del dialogo - * seleccionar longitud de la pantalla crear/editar - */ - private String longitudD; - /** - * Variable de tipo boleano (TRUE o FALSE) que indica si la clase - * seleccionada en la pantalla principal es un arma de fuego - */ - private Boolean isArmaFuego; - /** - * Variable de tipo boleano (TRUE o FALSE) que indica si la clase - * seleccionada en la pantalla crear/editar es un arma de fuego - */ - private Boolean isArmaFuegoD; - /** - * Constante usada para referirse a la clase arma de fuego - */ - private final String CODIGOARMADEFUEGO = "0010000001"; - - @ManagedProperty(value = "#{unidadTipoController}") - private UnidadTipoController unidadTipoController; - - - /** - * Map que contiene los criterios de busqueda de una tabla previos a los - * criterios de creacion. - */ - private Map mfiltersBKP = new HashMap(); - - public TiposArmasExplosivosController() throws Exception { - super(TarmTipoArmaExplosivo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - isArmaFuego = false; - isArmaFuegoD = false; - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TIPOARMAEXPLOSIVO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como - * nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - super.addField("clasedescriptionD", null); - super.addField("longituddescriptionD", null); - super.addField("tipodescriptionD", null); - super.addField("calibredescriptionD", null); - super.addField("unidaddescriptionD", null); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - // Subquery - SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", - "description", "nclase", - "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryLongitud = new SubQuery("TgeneCatalogDetail", - "description", "nlongitud", - "i.pk.catalog = t.longitud and i.pk.catalogcode = t.longitudcodigo"); - dto.addSubQuery(subqueryLongitud); - - SubQuery subqueryTipoArmaExplosivo = new SubQuery( - "TgeneCatalogDetail", - "description", - "ntipo", - "i.pk.catalog = t.tipoarmaexplosivo and i.pk.catalogcode = t.tipoarmaexplosivocodigo"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - - SubQuery subqueryCalibre = new SubQuery("TgeneCatalogDetail", - "description", "ncalibre", - "i.pk.catalog = t.calibre and i.pk.catalogcode = t.calibrecodigo"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryUnidad = new SubQuery("TgeneCatalogDetail", - "description", "nunidadMedidaPeso", - "i.pk.catalog = t.unidadmedidapeso and i.pk.catalogcode = t.unidadmedidapesocodigo"); - dto.addSubQuery(subqueryUnidad); - - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * ? - */ - protected void queryDatbase(String longitud, String calibre) { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - // Subquery - if (longitud == null && calibre == null) { - Filter longitudFiltro = new Filter(); - longitudFiltro - .setSql("t.longitud is null and t.calibre is null"); - dto.addFiltro(longitudFiltro); - } else if (longitud == null) { - Filter longitudFiltro = new Filter(); - longitudFiltro.setSql("t.longitud is null"); - dto.addFiltro(longitudFiltro); - } else if (calibre == null) { - Filter calibreFiltro = new Filter(); - calibreFiltro.setSql("t.calibre is null"); - dto.addFiltro(calibreFiltro); - } - - SubQuery subqueryClase = new SubQuery("TgeneCatalogDetail", - "description", "nclase", - "i.pk.catalog = t.clase and i.pk.catalogcode = t.clasecodigo"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryLongitud = new SubQuery("TgeneCatalogDetail", - "description", "nlongitud", - "i.pk.catalog = t.longitud and i.pk.catalogcode = t.longitudcodigo"); - dto.addSubQuery(subqueryLongitud); - - SubQuery subqueryTipoArmaExplosivo = new SubQuery( - "TgeneCatalogDetail", - "description", - "ntipo", - "i.pk.catalog = t.tipoarmaexplosivo and i.pk.catalogcode = t.tipoarmaexplosivocodigo"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - - SubQuery subqueryCalibre = new SubQuery("TgeneCatalogDetail", - "description", "ncalibre", - "i.pk.catalog = t.calibre and i.pk.catalogcode = t.calibrecodigo"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subunidad = new SubQuery( - "TgeneCatalogDetail", - "description", - "desunidad", - "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - dto.addSubQuery(subunidad); - - SubQuery subunidadlegalcode = new SubQuery( - "TgeneCatalogDetail", - "legalcode", - "deslegalcode", - "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - dto.addSubQuery(subunidadlegalcode); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada tabla. - - TarmUnidadTipo tipoUnidadSeleccionada= UnidadTipoController.findByClaseAndClasecode(record.getClase(), record.getClasecodigo(),record.getTipoarmaexplosivo(), record.getUnidadmedidapeso()); - if(tipoUnidadSeleccionada==null){ - TarmUnidadTipoKey tarmUnidadTipoKey = new TarmUnidadTipoKey(); - tarmUnidadTipoKey.setClase(record.getClase()); - tarmUnidadTipoKey.setClasecode(record.getClasecodigo()); - - tarmUnidadTipoKey.setTipoarmaexplosivo(record.getTipoarmaexplosivo()); - tarmUnidadTipoKey.setTipoarmaexplosivocodigo(record.getTipoarmaexplosivocodigo()); - - tarmUnidadTipoKey.setUnidadmedidapeso(record.getUnidadmedidapeso()); - tarmUnidadTipoKey.setUnidadmedidapesocodigo(record.getUnidadmedidapesocodigo()); - - tipoUnidadSeleccionada = new TarmUnidadTipo(); - tipoUnidadSeleccionada.setPk(tarmUnidadTipoKey); - tipoUnidadSeleccionada.setRecordversion(0); - tipoUnidadSeleccionada.setIsnew(Boolean.TRUE); - tipoUnidadSeleccionada.setFecharegistro(new Date(new java.util.Date().getTime())); - - unidadTipoController.update(tipoUnidadSeleccionada); - } - - DtoSave dtosaveUnidadTipo = unidadTipoController.getDtoSave(true); - dtosaveUnidadTipo.setPosition(1); - msave.put(unidadTipoController.getBeanalias(), dtosaveUnidadTipo); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.unidadTipoController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public String getClaseCodigo() { - return claseCodigo; - } - - public void setClaseCodigo(String claseCodigo) { - this.claseCodigo = claseCodigo; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public Boolean getIsArmaFuego() { - return isArmaFuego; - } - - public Boolean getIsArmaFuegoD() { - return isArmaFuegoD; - } - - public void setIsArmaFuegoD(Boolean isArmaFuegoD) { - this.isArmaFuegoD = isArmaFuegoD; - } - - public String getClaseD() { - return claseD; - } - - public void setClaseD(String claseD) { - this.claseD = claseD; - } - - public String getClaseCodigoD() { - return claseCodigoD; - } - - public void setClaseCodigoD(String claseCodigoD) { - this.claseCodigoD = claseCodigoD; - } - - public String getLongitudD() { - return longitudD; - } - - public void setLongitudD(String longitudD) { - this.longitudD = longitudD; - } - - public Map getMfiltersBKP() { - return mfiltersBKP; - } - - public void setMfiltersBKP(Map mfiltersBKP) { - this.mfiltersBKP = mfiltersBKP; - } - - public UnidadTipoController getUnidadTipoController() { - return unidadTipoController; - } - - public void setUnidadTipoController(UnidadTipoController unidadTipoController) { - this.unidadTipoController = unidadTipoController; - } - - /** - * Metodo utilizado para limpiar las variables que contienen las - * descripciones de los dialogos de seleccion de la pantalla principal - */ - public void actualizarElementosBusqueda(String tipoBusqueda) { - if (tipoBusqueda.equals("todo")) { - super.addField("clasedescription", null); - super.addField("longituddescription", null); - super.addField("tipodescription", null); - super.addField("calibredescription", null); - super.getMfilters().remove("clase"); - super.getMfilters().remove("clasecodigo"); - super.getMfilters().remove("longitud"); - super.getMfilters().remove("longitudcodigo"); - super.getMfilters().remove("tipoarmaexplosivo"); - super.getMfilters().remove("tipoarmaexplosivocodigo"); - super.getMfilters().remove("calibre"); - super.getMfilters().remove("calibrecodigo"); - } else if (tipoBusqueda.equals("clase")) { - super.addField("longituddescription", null); - super.addField("tipodescription", null); - super.addField("calibredescription", null); - super.getMfilters().remove("longitud"); - super.getMfilters().remove("longitudcodigo"); - super.getMfilters().remove("tipoarmaexplosivo"); - super.getMfilters().remove("tipoarmaexplosivocodigo"); - super.getMfilters().remove("calibre"); - super.getMfilters().remove("calibrecodigo"); - } else if (tipoBusqueda.equals("longitud")) { - super.addField("tipodescription", null); - super.addField("calibredescription", null); - super.getMfilters().remove("tipoarmaexplosivo"); - super.getMfilters().remove("tipoarmaexplosivocodigo"); - super.getMfilters().remove("calibre"); - super.getMfilters().remove("calibrecodigo"); - } else if (tipoBusqueda.equals("tipo")) { - super.addField("calibredescription", null); - super.getMfilters().remove("calibre"); - super.getMfilters().remove("calibrecodigo"); - } - } - - /** - * Metodo utilizado para limpiar las variables que contienen las - * descripciones de los dialogos de seleccion de la pantalla crear/editar - */ - public void actualizarElementosBusquedaDialog(String tipoBusqueda) { - if (tipoBusqueda.equals("clase")) { - super.addField("longituddescriptionD", null); - super.addField("tipodescriptionD", null); - super.addField("calibredescriptionD", null); - super.addField("unidaddescriptionD", null); - } else if (tipoBusqueda.equals("longitud")) { - super.addField("tipodescriptionD", null); - super.addField("calibredescriptionD", null); - super.addField("unidaddescriptionD", null); - } else if (tipoBusqueda.equals("tipo")) { - super.addField("calibredescriptionD", null); - super.addField("unidaddescriptionD", null); - } - } - - /** - * Metodo usado para abrir el dialogo seleccionar clase de la pantalla - * principal y del dialogo crear/editar - */ - public void openClaseLov() { - try { - Map> params = new HashMap<>(); - List lcat = new ArrayList<>(); - lcat.add("CLASE"); - params.put("catalogcode", lcat); - //tITULO DEL LOV - List ltituloLOV = new ArrayList<>(); - ltituloLOV.add("lov_unidades"); - params.put("tituloLOV", ltituloLOV); - ClaseLovController.openLov(params); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo usado para abrir el dialogo seleccionar clase de la pantalla - * principal y del dialogo crear/editar - */ - public void openUnidadLov() { - try { - Map> params = new HashMap<>(); - // CATALOGCODE - List lcatalogcode = new ArrayList<>(); - lcatalogcode.add("UNIDADMEDIDA"); - params.put("catalogcode", lcatalogcode); - //tITULO DEL LOV - List ltituloLOV = new ArrayList<>(); - ltituloLOV.add("lov_unidades"); - params.put("tituloLOV", ltituloLOV); - ClaseLovController.openLov(params); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * clase de la pantalla principal - */ - public void onReturnClaseLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addFilter("clase", t.getPk().getCatalog()); - super.addFilter("clasecodigo", t.getPk().getCatalogcode()); - clase = t.getPk().getCatalog(); - claseCodigo = t.getPk().getCatalogcode(); - if (clase.equalsIgnoreCase(CODIGOARMADEFUEGO)) { - isArmaFuego = true; - } else { - isArmaFuego = false; - } - super.addField("clasedescription", t.getDescription()); - actualizarElementosBusqueda("clase"); - this.query(); - } - - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * clase de la pantalla principal - */ - public void onReturnUnidadDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addField("unidaddescriptionD", t.getDescription()); - this.record.setUnidadmedidapeso(t.getPk().getCatalog()); - this.record.setUnidadmedidapesocodigo(t.getPk().getCatalogcode()); - unidadMedidaPesoD = t.getPk().getCatalog(); - unidadMedidaPesoCodigoD = t.getPk().getCatalogcode(); - this.record.put("nunidadMedidaPeso", t.getDescription()); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * clase de la pantalla crear/editar - */ - public void onReturnClaseDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - claseD = t.getPk().getCatalog(); - claseCodigoD = t.getPk().getCatalogcode(); - if (claseD.equalsIgnoreCase(CODIGOARMADEFUEGO)) { - isArmaFuegoD = true; - } else { - isArmaFuegoD = false; - } - super.addField("clasedescriptionD", t.getDescription()); - this.record.setClase(t.getPk().getCatalog()); - ; - this.record.setClasecodigo(t.getPk().getCatalogcode()); - record.put("nclase", t.getDescription()); - actualizarElementosBusquedaDialog("clase"); - } - - /** - * Metodo usado para abrir el dialogo seleccionar longitud de la pantalla - * principal - */ - public void openLogitudLov() { - if (clase != null && claseCodigo != null) { - Map> params = new HashMap<>(); - LongitudLovController.openLov(params); - } else { - MessageHelper - .setMessageError("POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO"); - } - } - - /** - * Metodo usado para abrir el dialogo seleccionar longitud de la pantalla - * crear/editar - */ - public void openLogitudDialogLov() { - if (claseD != null && claseCodigoD != null) { - Map> params = new HashMap<>(); - LongitudLovController.openLov(params); - } else { - MessageHelper - .setMessageError("POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO"); - } - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * longitud de la pantalla principal - */ - public void onReturnLogitudLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addFilter("longitud", t.getPk().getCatalog()); - super.addFilter("longitudcodigo", t.getPk().getCatalogcode()); - longitud = t.getPk().getCatalog(); - super.addField("longituddescription", t.getDescription()); - actualizarElementosBusqueda("longitud"); - this.query(); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * longitud de la pantalla crear/editar - */ - public void onReturnLogitudDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - longitudD = t.getPk().getCatalog(); - super.addField("longituddescriptionD", t.getDescription()); - this.record.setLongitud(longitudD); - this.record.setLongitudcodigo(t.getPk().getCatalogcode()); - record.put("nlongitud", t.getDescription()); - actualizarElementosBusquedaDialog("longitudD"); - } - - /** - * Metodo usado para abrir el dialogo seleccionar tipo de arma o explosivo - * de la pantalla principal - */ - public void openTipoLov() { - - if (clase != null && claseCodigo != null) { - Map> params = new HashMap<>(); - List valuesArmaFuego = new ArrayList(); - valuesArmaFuego.add(isArmaFuego.toString()); - params.put("isArmaFuego", valuesArmaFuego); - if (isArmaFuego) { - List valuesLongitud = new ArrayList(); - valuesLongitud.add(longitud); - params.put("longitud", valuesLongitud); - } else { - List valuesClase = new ArrayList(); - valuesClase.add(clase); - params.put("clase", valuesClase); - } - TipoArmaExpLovController.openLov(params); - } else { - MessageHelper - .setMessageError("POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO"); - } - } - - /** - * Metodo usado para abrir el dialogo seleccionar tipo de arma o explosivo - * de la pantalla crear/editar - */ - public void openTipoDialogLov() { - if (record.isnew) { - if (claseD != null && claseCodigoD != null) { - Map> params = new HashMap<>(); - List valuesArmaFuego = new ArrayList(); - valuesArmaFuego.add(isArmaFuegoD.toString()); - params.put("isArmaFuego", valuesArmaFuego); - if (isArmaFuegoD) { - List valuesLongitud = new ArrayList(); - valuesLongitud.add(longitudD); - params.put("longitud", valuesLongitud); - } else { - List valuesClase = new ArrayList(); - valuesClase.add(claseD); - params.put("clase", valuesClase); - } - TipoArmaExpLovController.openLov(params); - } else { - MessageHelper - .setMessageError("POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO"); - } - } else { - Map> params = new HashMap<>(); - List valuesArmaFuego = new ArrayList(); - valuesArmaFuego.add(isArmaFuegoD.toString()); - params.put("isArmaFuego", valuesArmaFuego); - if (isArmaFuegoD) { - List valuesLongitud = new ArrayList(); - valuesLongitud.add(longitudD); - params.put("longitud", valuesLongitud); - } else { - List valuesClase = new ArrayList(); - valuesClase.add(claseD); - params.put("clase", valuesClase); - } - TipoArmaExpLovController.openLov(params); - } - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * tipo de arma o explosivo de la pantalla principal - */ - public void onReturnTipoLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addFilter("tipoarmaexplosivo", t.getPk().getCatalog()); - super.addFilter("tipoarmaexplosivocodigo", t.getPk().getCatalogcode()); - super.addField("tipodescription", t.getDescription()); - actualizarElementosBusqueda("tipo"); - this.query(); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * tipo de arma o explosivo de la pantalla crear/editar - */ - public void onReturnTipoDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addField("tipodescriptionD", t.getDescription()); - this.record.setTipoarmaexplosivo(t.getPk().getCatalog()); - ; - this.record.setTipoarmaexplosivocodigo(t.getPk().getCatalogcode()); - record.put("ntipo", t.getDescription()); - actualizarElementosBusquedaDialog("tipo"); - } - - /** - * Metodo usado para abrir el dialogo seleccionar calibre de arma o - * explosivo de la pantalla principal y del dialogo crear/editar - */ - public void openCalibreLov() { - Map> params = new HashMap<>(); - CalibreLovController.openLov(params); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * calibre de la pantalla principal - */ - public void onReturnCalibreLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addFilter("calibre", t.getPk().getCatalog()); - super.addFilter("calibrecodigo", t.getPk().getCatalogcode()); - super.addField("calibredescription", t.getDescription()); - this.query(); - } - - /** - * Metodo usado para completar acciones al cerrar el dialogo seleccionar - * calibre de la pantalla crear/editar - */ - public void onReturnCalibreDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.addField("calibredescriptionD", t.getDescription()); - this.record.setCalibre(t.getPk().getCatalog()); - this.record.setCalibrecodigo(t.getPk().getCatalogcode()); - record.put("ncalibre", t.getDescription()); - } - - /** - * Metodo que actualiza las descripciones seleccionadas en el dialogo - * crear/editar a la variable record y calcula valor de la variable - * isArmaFuegoD - */ - public void actualizar() { - super.addField("clasedescriptionD", record.get("nclase")); - super.addField("longituddescriptionD", record.get("nlongitud")); - super.addField("tipodescriptionD", record.get("ntipo")); - super.addField("calibredescriptionD", record.get("ncalibre")); - super.addField("unidaddescriptionD", record.get("nunidadMedidaPeso")); - claseD = record.getClase(); - claseCodigoD = record.getClasecodigo(); - if (record.getClase().equalsIgnoreCase(CODIGOARMADEFUEGO)) { - isArmaFuegoD = true; - longitudD = record.getLongitud(); - } else { - isArmaFuegoD = false; - } - } - - @Override - public void update() throws Exception { - if (record.getClase() != null) { - if (record.getClase().equalsIgnoreCase(CODIGOARMADEFUEGO)) { - if (record.getLongitud() != null) { - if (record.getTipoarmaexplosivo() != null) { - if (record.getCalibre() != null) { - if (record.getUnidadmedidapeso() != null) { - super.update(); - } else { - MessageHelper.setMessageError("SELECCIONE UNA UNIDAD PARA EL ARMA O EXPLOSIVO"); - } - } else { - MessageHelper - .setMessageError("SELECCIONE UN CALIBRE PARA EL ARMA O EXPLOSIVO"); - } - } else { - MessageHelper - .setMessageError("SELECCIONE UN TIPO PARA EL ARMA O EXPLOSIVO"); - } - } else { - MessageHelper - .setMessageError("SELECCIONE UNA LONGITUD PARA EL ARMA O EXPLOSIVO"); - } - } else { - if (record.getTipoarmaexplosivo() != null) { - if (record.getUnidadmedidapeso() != null) { - super.update(); - } else { - MessageHelper.setMessageError("SELECCIONE UNA UNIDAD PARA EL ARMA O EXPLOSIVO"); - } - } else { - MessageHelper.setMessageError("SELECCIONE UN TIPO DE ARMA O EXPLOSIVO"); - } - } - } else { - MessageHelper.setMessageError("SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO"); - } - } - - /** - * Find para encontrar las caracteristicas del arma mediante el pk. - * ctipo - tipo de arma o explosivo - */ - public static TarmTipoArmaExplosivo findarma(String ctipo) { - try { - if (ctipo == null) { - return null; - } - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", ctipo); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Find para encontrar el pk del arma mediante las caracteristicas. Andres Cevallos - */ - public static TarmTipoArmaExplosivo findpk(String longitud, String calibre, - String clase, String tipoarmaexplosivo) { - try { - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("longitud", longitud); - cc.addFilter("calibre", calibre); - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.queryDatbase(longitud, calibre); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Find para encontrar el pk del arma mediante las caracteristicas. Andres - * Cevallos - */ - public static TarmTipoArmaExplosivo findByClaseLongitudCalibreTipoArma( String longitud, String calibre, String clase, - String tipoarmaexplosivo, String unidadmedidapeso) { - try { - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("longitud", longitud); - cc.addFilter("calibre", calibre); - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.addFilter("unidadmedidapeso", unidadmedidapeso); - cc.queryDatbase(longitud, calibre); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Find para encontrar el pk del arma mediante las caracteristicas. FPazmino - * Cevallos - */ - public static TarmTipoArmaExplosivo findByClaseCalibreTipoArma(String clase, String calibre, - String tipoarmaexplosivo, String unidadmedidapeso) { - try { - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("calibre", calibre); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.addFilter("unidadmedidapeso", unidadmedidapeso); - cc.queryDatbase(null, calibre); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que busca una combinacion de tipo arma explosivo por la clase y el - * tipo de arma pasados como parametro - * - * @param clase - * @param tipoarmaexplosivo - * @return - */ - public static TarmTipoArmaExplosivo findByClaseTipo(String clase, - String tipoarmaexplosivo,String unidadmedidapeso) { - try { - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.addFilter("unidadmedidapeso", unidadmedidapeso); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que busca todas las combinaciones de tipos armas explosivos por la - * clase y el tipo de arma pasados como parametro - * - * @param clase - * @param tipoarmaexplosivo - * @return - */ - public static List findByClaseTipoAll(String clase, - String tipoarmaexplosivo) { - try { - TiposArmasExplosivosController cc = new TiposArmasExplosivosController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoarmaexplosivo); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TotalPersonaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TotalPersonaController.java.svn-base deleted file mode 100644 index cbd038c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/TotalPersonaController.java.svn-base +++ /dev/null @@ -1,174 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmTotalPersona; - -public class TotalPersonaController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public TotalPersonaController() throws Exception { - super(TarmTotalPersona.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 100; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TOTALPERSONACONTROLLER"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - if(this.getMfilelds().get("fechamaxima") != null){ - Filter filter= new Filter(); - filter.setSql(this.getMfilelds().get("fechamaxima").toString()); - dto.addFiltro(filter); - } - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - Collections.sort(lrecord, new Comparator() { - public int compare(TarmTotalPersona o1, TarmTotalPersona o2) { - return ((Date)(o1.getFecha())).after((Date)(o2.getFecha())) ? -1 : 1; - } - }); - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void update(TarmTotalPersona bean) throws Exception { - record=bean; - super.update(); - } - - - /** - * Busca el total de un arma para una persona - */ - public static TarmTotalPersona find(String clase, String tipoArmaEplosivo, String codigoPersona) { - try { - TotalPersonaController cc = new TotalPersonaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoArmaEplosivo); - cc.addFilter("personcodigo", codigoPersona); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca el total de un arma para una persona - */ - public static TarmTotalPersona findMaxFecha(String clase, String tipoArmaEplosivo, String codigoPersona,String unidad) { - try { - TotalPersonaController cc = new TotalPersonaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("clase", clase); - cc.addFilter("tipoarmaexplosivo", tipoArmaEplosivo); - cc.addFilter("personcodigo", codigoPersona); - cc.addField("fechamaxima", "t.fecha=(select max(o.fecha) from TarmTotalPersona o where o.clase='"+clase+"' and tipoarmaexplosivo='"+tipoArmaEplosivo+"' and o.personcodigo='"+codigoPersona+"')"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/UnidadTipoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/UnidadTipoController.java.svn-base deleted file mode 100644 index 5aa5e24..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/UnidadTipoController.java.svn-base +++ /dev/null @@ -1,454 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmUnidadTipo; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmUnidTipo. - * - * @author C.P. - * @version 2 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class UnidadTipoController extends AbstractController { - - /** - * catalogo de las unidades - */ - private List lunidades; - /** - * atributo para la descripcion de la clase del arma - */ - private String descripcionClase; - /** - * atributo para la descripcion del tipo del arma - */ - private String descripcionTipoArma; - - public UnidadTipoController() throws Exception { - super(TarmUnidadTipo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - lunidades=CatalogDetailController.find("UNIDADMEDIDA"); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "UNIDTIPO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); -// dto.setOrderby("t.description"); - - SubQuery sclasearma= new SubQuery - ("TgeneCatalogDetail", "description", "desclasearma", "i.pk.catalog = t.pk.clase and i.pk.catalogcode=t.pk.clasecode"); - SubQuery stipoarma= new SubQuery - ("TgeneCatalogDetail", "description", "destipoarma", "i.pk.catalog = t.pk.tipoarmaexplosivo and i.pk.catalogcode=t.pk.tipoarmaexplosivocodigo"); - SubQuery sunidad= new SubQuery - ("TgeneCatalogDetail", "description", "desunidad", "i.pk.catalog = t.pk.unidadmedidapeso and i.pk.catalogcode=t.pk.unidadmedidapesocodigo"); - - dto.addSubQuery(stipoarma); - dto.addSubQuery(sclasearma); - dto.addSubQuery(sunidad); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp - .get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp - .get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Crea una instancia del registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @Override - public void update() throws Exception { - if(record.getModifiedData().get("desclasearma")==null || record.getModifiedData().get("desclasearma").toString().trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE LA CLASE"); - return; - } - if(record.getModifiedData().get("destipoarma")==null || record.getModifiedData().get("destipoarma").toString().trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE EL TIPO DE ARMA"); - return; - } - this.record.getPk().setUnidadmedidapesocodigo("UNIDADMEDIDA"); - record.setFecharegistro(new java.sql.Date(new Date().getTime())); - catalogos(lunidades, record.getPk().getUnidadmedidapeso(), "desunidad"); - super.update(); - } - - - public void update(TarmUnidadTipo bean) throws Exception { - record=bean; - super.update(); - } - - - /** - * Metodo para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - record.modifiedData.put(pk, item.getDescription()); - break; - } - } - } - - public void openClaseLov() { - Map> params = new HashMap<>(); - List lcat = new ArrayList<>(); - lcat.add("CLASE"); - params.put("catalogcode", lcat); - List ldescripcion = new ArrayList<>(); - ldescripcion.add(MsgControlArmas.getProperty("lvh_clase")); - params.put("tituloLOV", ldescripcion); - ClaseLovController.openLov(params); - - } - - private String codigoClase; - public void openTipoArmaLov() { - if(codigoClase==null || codigoClase.trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE LA CLASE"); - return; - } - Map> params = new HashMap<>(); - String codigoslonguitud=""; - String codigoslonguitud2=""; - Listlista=CatalogDetailController.find("LONGITUD", codigoClase); - if(lista!=null){ - for(TgeneCatalogDetail catalogo:lista){ - if(codigoslonguitud==null || codigoslonguitud.length()==0){ - codigoslonguitud+= catalogo.getPk().getCatalog(); - }else if(codigoslonguitud2==null || codigoslonguitud2.length()==0){ - codigoslonguitud2+=" legalcode= '"+catalogo.getPk().getCatalog()+"'"; - }else{ - codigoslonguitud2+=" or t.legalcode= '"+catalogo.getPk().getCatalog()+"'"; - } - } - } - List l = new ArrayList<>(); - if(codigoslonguitud!=null && codigoslonguitud.length()>0){ - l.add(codigoslonguitud); - }else{ - l.add(codigoClase); - } - params.put("legalcode", l); - - List l2 = new ArrayList<>(); - if(codigoslonguitud2!=null && codigoslonguitud2.length()>0){ - l2.add(codigoslonguitud2); - } - params.put("legalcode2", l2); - List lcat = new ArrayList<>(); - lcat.add("TIPOARMAEXPLOSIVO"); - params.put("catalogcode", lcat); - - List ldescripcion = new ArrayList<>(); - ldescripcion.add(MsgControlArmas.getProperty("lvh_tipoarma")); - params.put("tituloLOV", ldescripcion); - ClaseLovController.openLov(params); - - } - - private String codigoClaseD; - public void openTipoArmaDialogLov() { - if(codigoClaseD==null || codigoClaseD.trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE LA CLASE"); - return; - } - Map> params = new HashMap<>(); - String codigoslonguitud=""; - String codigoslonguitud2=""; - Listlista=CatalogDetailController.find("LONGITUD", codigoClaseD); - if(lista!=null){ - for(TgeneCatalogDetail catalogo:lista){ - if(codigoslonguitud==null || codigoslonguitud.length()==0){ - codigoslonguitud+= catalogo.getPk().getCatalog(); - }else if(codigoslonguitud2==null || codigoslonguitud2.length()==0){ - codigoslonguitud2+=" legalcode= '"+catalogo.getPk().getCatalog()+"'"; - }else{ - codigoslonguitud2+=" or t.legalcode= '"+catalogo.getPk().getCatalog()+"'"; - } - } - } - List l = new ArrayList<>(); - if(codigoslonguitud!=null && codigoslonguitud.length()>0){ - l.add(codigoslonguitud); - }else{ - l.add(codigoClaseD); - } - params.put("legalcode", l); - - List l2 = new ArrayList<>(); - if(codigoslonguitud2!=null && codigoslonguitud2.length()>0){ - l2.add(codigoslonguitud2); - } - params.put("legalcode2", l2); - List lcat = new ArrayList<>(); - lcat.add("TIPOARMAEXPLOSIVO"); - params.put("catalogcode", lcat); - - List ldescripcion = new ArrayList<>(); - ldescripcion.add(MsgControlArmas.getProperty("lvh_tipoarma")); - params.put("tituloLOV", ldescripcion); - ClaseLovController.openLov(params); - - } - - public void onReturnClaseLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.getMfilters().put("pk.clase", t.getPk().getCatalog()); - descripcionClase=t.getDescription(); - codigoClase=t.getPk().getCatalog(); - //encero - super.getMfilters().put("pk.tipoarmaexplosivo", null); - descripcionTipoArma=null; - } - - public void onReturnTipoArmaLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - super.getMfilters().put("pk.tipoarmaexplosivo", t.getPk().getCatalog()); - descripcionTipoArma=t.getDescription(); - } - - public void onReturnClaseDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - record.getPk().setClase(t.getPk().getCatalog()); - record.getPk().setClasecode(t.getPk().getCatalogcode()); - record.getModifiedData().put("desclasearma", t.getDescription()); - codigoClaseD=t.getPk().getCatalog(); - //encero - record.getPk().setTipoarmaexplosivo(null); - record.getPk().setTipoarmaexplosivocodigo(null); - record.getModifiedData().put("destipoarma", null); - } - - public void onReturnTipoArmaDialogLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - record.getPk().setTipoarmaexplosivo(t.getPk().getCatalog()); - record.getPk().setTipoarmaexplosivocodigo(t.getPk().getCatalogcode()); - record.getModifiedData().put("destipoarma", t.getDescription()); -// codigoClase=t.getPk().getCatalog(); - } - - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * - * @param catalogcode - * Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String catalogcode) { - try { - UnidadTipoController cc = new UnidadTipoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", catalogcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene un tipo de unidad por la clase y el codigo de clase - */ - public static TarmUnidadTipo findByClaseAndClasecode(String clase,String clasecode, String tipoArmaExplosivo, String unidadMedida) { - try { - UnidadTipoController cc = new UnidadTipoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.clase", clase); - cc.addFilter("pk.clasecode", clasecode); - cc.addFilter("pk.tipoarmaexplosivo", tipoArmaExplosivo); - cc.addFilter("pk.unidadmedidapeso",unidadMedida); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmUnidadTipo find(String clase, String tipoarmaexplosivo) { - try { - UnidadTipoController cc = new UnidadTipoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.clase", clase); - cc.addFilter("pk.tipoarmaexplosivo", tipoarmaexplosivo); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public List getLunidades() { - return lunidades; - } - - public void setLunidades(List lunidades) { - this.lunidades = lunidades; - } - - public String getDescripcionClase() { - return descripcionClase; - } - - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - public String getDescripcionTipoArma() { - return descripcionTipoArma; - } - - public void setDescripcionTipoArma(String descripcionTipoArma) { - this.descripcionTipoArma = descripcionTipoArma; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/VentaTotalPersonaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/VentaTotalPersonaController.java.svn-base deleted file mode 100644 index d4f92cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/.svn/text-base/VentaTotalPersonaController.java.svn-base +++ /dev/null @@ -1,96 +0,0 @@ -package com.fp.frontend.controller.armas.parametros; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmTotalPersona; - -@ManagedBean -@ViewScoped -public class VentaTotalPersonaController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public VentaTotalPersonaController() throws Exception { - super(TarmTotalPersona.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 15; - lrecord = new ArrayList<>(); - beanalias = "VENTATOTALPERSONA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/entries deleted file mode 100644 index cc7d205..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util -svn://172.17.26.185/COMACO - - - -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EstadosSolicitudBPM.java -file - - - - -2022-07-28T03:39:54.458594Z -15988f3215210fb76970fedfe9ec97a1 -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1358 - -TipoArmaExplosivoPKExcel.java -file - - - - -2022-07-28T03:39:54.458594Z -1c33271492445c2c408ba1dcd0b3e679 -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1821 - -ArmasExcel.java -file - - - - -2022-07-28T03:39:54.458594Z -44a43c721b6bbbc3a0a56850b34061fc -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3494 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/ArmasExcel.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/ArmasExcel.java.svn-base deleted file mode 100644 index d9a4171..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/ArmasExcel.java.svn-base +++ /dev/null @@ -1,136 +0,0 @@ -package com.fp.frontend.controller.armas.parametros.util; - -import java.io.Serializable; - - -public class ArmasExcel implements Serializable { - - - private static final long serialVersionUID = 1L; - - String orden; - String longuitud; - String calibre; - String clase;//material - String tipoArmaExplosivo;// modelo: REVOLVER CARTUCHERA CARTUCHERANO CARABINA SUB-AMETRALLADORA*revisar - String marca; - String tipoFabricacion; - String serie; - String fechaRecepcion; - String motivo; - String descripcionProvincia; - String descripcionCanton; - String observaciones; - int cont; - - public ArmasExcel(){ - } - - public ArmasExcel(String orden,String longuitud,String calibre, - String clase,String tipoArmaExplosivo,String marca, - String tipoFabricacion,String serie,String fechaRecepcion, - String motivo,String descripcionProvincia,String descripcionCanton, - String observaciones, int cont) { - super(); - this.orden = orden; - this.longuitud = longuitud; - this.calibre = calibre; - this.clase = clase; - this.tipoArmaExplosivo = tipoArmaExplosivo; - this.marca = marca; - this.tipoFabricacion = tipoFabricacion; - this.serie = serie; - this.fechaRecepcion = fechaRecepcion; - this.motivo = motivo; - this.descripcionProvincia = descripcionProvincia; - this.descripcionCanton = descripcionCanton; - this.observaciones = observaciones; - this.cont = cont; - } - public String getOrden() { - return orden; - } - public void setOrden(String orden) { - this.orden = orden; - } - public String getLonguitud() { - return longuitud; - } - public void setLonguitud(String longuitud) { - this.longuitud = longuitud; - } - public String getCalibre() { - return calibre; - } - public void setCalibre(String calibre) { - this.calibre = calibre; - } - public String getClase() { - return clase; - } - public void setClase(String clase) { - this.clase = clase; - } - public String getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - public void setTipoArmaExplosivo(String tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - public String getMarca() { - return marca; - } - public void setMarca(String marca) { - this.marca = marca; - } - public String getTipoFabricacion() { - return tipoFabricacion; - } - public void setTipoFabricacion(String tipoFabricacion) { - this.tipoFabricacion = tipoFabricacion; - } - public String getSerie() { - return serie; - } - public void setSerie(String serie) { - this.serie = serie; - } - public String getFechaRecepcion() { - return fechaRecepcion; - } - public void setFechaRecepcion(String fechaRecepcion) { - this.fechaRecepcion = fechaRecepcion; - } - public String getMotivo() { - return motivo; - } - public void setMotivo(String motivo) { - this.motivo = motivo; - } - public String getDescripcionProvincia() { - return descripcionProvincia; - } - public void setDescripcionProvincia(String descripcionProvincia) { - this.descripcionProvincia = descripcionProvincia; - } - public String getDescripcionCanton() { - return descripcionCanton; - } - public void setDescripcionCanton(String descripcionCanton) { - this.descripcionCanton = descripcionCanton; - } - public String getObservaciones() { - return observaciones; - } - public void setObservaciones(String observaciones) { - this.observaciones = observaciones; - } - public int getCont() { - return cont; - } - public void setCont(int cont) { - this.cont = cont; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/EstadosSolicitudBPM.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/EstadosSolicitudBPM.java.svn-base deleted file mode 100644 index e3aa2a3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/EstadosSolicitudBPM.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -package com.fp.frontend.controller.armas.parametros.util; - -import java.util.Date; - -public class EstadosSolicitudBPM { - - String actividad; - String usuarioasignado; - String grupoasignado; - String estado; - Date fechacreacion; - Date fechainicio; - Date fechacompleta; - - public String getActividad() { - return actividad; - } - public void setActividad(String actividad) { - this.actividad = actividad; - } - public String getUsuarioasignado() { - return usuarioasignado; - } - public void setUsuarioasignado(String usuarioasignado) { - this.usuarioasignado = usuarioasignado; - } - public String getGrupoasignado() { - return grupoasignado; - } - public void setGrupoasignado(String grupoasignado) { - this.grupoasignado = grupoasignado; - } - public String getEstado() { - return estado; - } - public void setEstado(String estado) { - this.estado = estado; - } - public Date getFechacreacion() { - return fechacreacion; - } - public void setFechacreacion(Date fechacreacion) { - this.fechacreacion = fechacreacion; - } - public Date getFechainicio() { - return fechainicio; - } - public void setFechainicio(Date fechainicio) { - this.fechainicio = fechainicio; - } - public Date getFechacompleta() { - return fechacompleta; - } - public void setFechacompleta(Date fechacompleta) { - this.fechacompleta = fechacompleta; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/TipoArmaExplosivoPKExcel.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/TipoArmaExplosivoPKExcel.java.svn-base deleted file mode 100644 index 4d3c31c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/parametros/util/.svn/text-base/TipoArmaExplosivoPKExcel.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.frontend.controller.armas.parametros.util; - -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; - -public class TipoArmaExplosivoPKExcel { - - private String longitud; - private String calibre; - private String clase; - private String tipoarmaexplosivo; - private String unidadmedidapeso; - private TarmTipoArmaExplosivo tipoArmaExplosivoClase; - - - public TipoArmaExplosivoPKExcel(String longitud, String calibre, - String clase, String tipoarmaexplosivo, String unidadmedidapeso, - TarmTipoArmaExplosivo tipoArmaExplosivoClase) { - super(); - this.longitud = longitud; - this.calibre = calibre; - this.clase = clase; - this.tipoarmaexplosivo = tipoarmaexplosivo; - this.unidadmedidapeso = unidadmedidapeso; - this.tipoArmaExplosivoClase = tipoArmaExplosivoClase; - } - public String getLongitud() { - return longitud; - } - public void setLongitud(String longitud) { - this.longitud = longitud; - } - public String getCalibre() { - return calibre; - } - public void setCalibre(String calibre) { - this.calibre = calibre; - } - public String getClase() { - return clase; - } - public void setClase(String clase) { - this.clase = clase; - } - public String getTipoarmaexplosivo() { - return tipoarmaexplosivo; - } - public void setTipoarmaexplosivo(String tipoarmaexplosivo) { - this.tipoarmaexplosivo = tipoarmaexplosivo; - } - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - public TarmTipoArmaExplosivo getTipoArmaExplosivoClase() { - return tipoArmaExplosivoClase; - } - public void setTipoArmaExplosivoClase( - TarmTipoArmaExplosivo tipoArmaExplosivoClase) { - this.tipoArmaExplosivoClase = tipoArmaExplosivoClase; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/entries deleted file mode 100644 index 345f967..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/entries +++ /dev/null @@ -1,3360 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DocumentoHabilitanteDetalleController.java -file - - - - -2022-07-28T03:39:52.562586Z -df47b6b679bf1ac5b90e1e0e2a5fbe93 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5267 - -ReporteAutorizacionesController.java -file - - - - -2022-07-28T03:39:52.563586Z -4787be155cf70635112d168bee04ff3b -2016-01-13T17:51:54.677065Z -4375 -cflores - - - - - - - - - - - - - - - - - - - - - -18934 - -TarmSolicitudDocumentoController.java -file - - - - -2022-07-28T03:39:52.564586Z -ba6dfef3a400f1bd1983282b952b2802 -2015-01-19T06:22:07.034172Z -3764 -cpiedra - - - - - - - - - - - - - - - - - - - - - -18808 - -ValidacionTramiteLibreTransitoController.java -file - - - - -2022-07-28T03:39:52.563586Z -b27b9b44b1fd12f67d9460ad478c484d -2014-12-01T11:13:36.691599Z -3201 -cpiedra - - - - - - - - - - - - - - - - - - - - - -29676 - -DocumentoHabilitanteController.java -file - - - - -2022-07-28T03:39:52.564586Z -85a2a90c142a3e77a0401b70d18fc511 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -65876 - -RegistrarNovedadController.java -file - - - - -2022-07-28T03:39:52.565586Z -38a8f0c8029bd96921e7247ff59bb266 -2014-11-20T09:32:50.992676Z -3017 -cpiedra - - - - - - - - - - - - - - - - - - - - - -21444 - -DecomisoArmaController.java -file - - - - -2022-07-28T03:39:52.565586Z -b8813b4546081da877f1ea84f70da9aa -2016-02-18T13:51:38.807107Z -4458 -cvasquez - - - - - - - - - - - - - - - - - - - - - -15831 - -VerificacionBodegaController.java -file - - - - -2022-07-28T03:39:52.564586Z -4740f4f97b1d7be9b08ea6df41120ac1 -2016-06-09T15:42:54.046599Z -4544 -cvasquez - - - - - - - - - - - - - - - - - - - - - -43502 - -ReclamoDecomisoController.java -file - - - - -2022-07-28T03:39:52.565586Z -e3848f6601db2d0d5eeb99b305621beb -2021-12-08T19:17:47.063140Z -4656 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18585 - -CargarDepositoController.java -file - - - - -2022-07-28T03:39:52.565586Z -3fb7b2512fe778d2aa2f1888f0d4374c -2019-01-14T03:06:37.641608Z -4617 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -25071 - -CustodiaTempAeropuertoController.java -file - - - - -2022-07-28T03:39:52.566586Z -88ebd61fc2b73c4e1800b18be91b1891 -2015-05-04T05:47:02.244193Z -4070 -fpazmino - - - - - - - - - - - - - - - - - - - - - -27450 - -ReporteConsultaSolicitudController.java -file - - - - -2022-07-28T03:39:52.567586Z -47eeb0b2d5a94c97a95308eb1457cb20 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -40022 - -AgenciaSucursalController.java -file - - - - -2022-07-28T03:39:52.566586Z -8733466e2b910302ab57f9491bac14ec -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -9214 - -FichasTecnicasFlatantesController.java -file - - - - -2022-07-28T03:39:52.566586Z -aa51cd383e8d89dd3cd7a176ac667dbb -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -45383 - -RevisarRprteArmasADestJefDepController.java -file - - - - -2022-07-28T03:39:52.567586Z -2e264fce4cb3b21768e340c62c814050 -2014-11-18T04:01:43.417846Z -2898 -fpazmino - - - - - - - - - - - - - - - - - - - - - -9817 - -ConsultaArmasController.java -file - - - - -2022-07-28T03:39:52.567586Z -d052f814d0e1236a231452b20d542030 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -26259 - -CustodiosController.java -file - - - - -2022-07-28T03:39:52.568586Z -0e8342839afa58e0da4cbbf5b4739b3d -2014-11-28T07:52:43.760654Z -3171 -ogarcia - - - - - - - - - - - - - - - - - - - - - -7130 - -SancionarController.java -file - - - - -2022-07-28T03:39:52.568586Z -9fa74fbb76b796af1241e581a830d776 -2016-02-18T13:51:38.807107Z -4458 -cvasquez - - - - - - - - - - - - - - - - - - - - - -37485 - -ReporteLiquidacionEconomicaController.java -file - - - - -2022-07-28T03:39:52.568586Z -2102f9e8aa14907fb6ad2e2d0ba8bd02 -2015-01-13T12:03:46.449074Z -3748 -cguzman - - - - - - - - - - - - - - - - - - - - - -12340 - -InspeccionCambioArchivoController.java -file - - - - -2022-07-28T03:39:52.568586Z -3a33a35c1396244734281d9a520a0119 -2021-12-29T13:49:22.967449Z -4659 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7597 - -BodegaController.java -file - - - - -2022-07-28T03:39:52.569586Z -e0bd2030587bf33630f542e30d36daee -2014-11-14T09:53:08.008087Z -2804 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3352 - -SancionRecomendacionController.java -file - - - - -2022-07-28T03:39:52.569586Z -4b9b8b6eeb2252a45b481f7b5982ffda -2014-10-21T05:29:57.678112Z -1765 -acevallos - - - - - - - - - - - - - - - - - - - - - -3145 - -VerificarMaterialDecomisadoController.java -file - - - - -2022-07-28T03:39:52.569586Z -24ec282627751215a9fc33144aeb8d07 -2016-02-15T19:57:14.669988Z -4444 -cvasquez - - - - - - - - - - - - - - - - - - - - - -11897 - -ReporteSancionesController.java -file - - - - -2022-07-28T03:39:52.569586Z -2f3ecaf99d9318c01bff2706fe228380 -2016-01-13T17:51:54.677065Z -4375 -cflores - - - - - - - - - - - - - - - - - - - - - -15198 - -ReporteAgenciasSucursalesController.java -file - - - - -2022-07-28T03:39:52.570586Z -e4e6abb54d0f6474836a3a7007d8b941 -2017-05-29T03:14:21.052978Z -4595 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -8347 - -SolicitudTramiteController.java -file - - - - -2022-07-28T03:39:52.570586Z -fbba33212a96e9b5e12b6e57d4afbcb4 -2015-11-13T11:16:52.799869Z -4317 -fpazmino - - - - - - - - - - - - - - - - - - - - - -9393 - -SolicitudRequisitosController.java -file - - - - -2022-07-28T03:39:52.570586Z -d6db505e3c8e4f0d6767705311b81be4 -2015-06-15T14:16:38.090960Z -4109 -cpiedra - - - - - - - - - - - - - - - - - - - - - -10895 - -SolicitudCertificadoController.java -file - - - - -2022-07-28T03:39:52.571586Z -534718bece8f9f331d16c7a56bfd700a -2016-02-15T20:31:49.189787Z -4447 -cvasquez - - - - - - - - - - - - - - - - - - - - - -14453 - -AutorizacionDevolucionController.java -file - - - - -2022-07-28T03:39:52.571586Z -63f4ef4786752c94ebd0f9d02f8ff047 -2014-12-23T07:49:12.063421Z -3632 -cpiedra - - - - - - - - - - - - - - - - - - - - - -19421 - -SolicitudController.java -file - - - - -2022-07-28T03:39:52.571586Z -eb22e7b41661dde986ca90cdccbf7308 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -7111 - -DecomisoController.java -file - - - - -2022-07-28T03:39:52.571586Z -6013a85688a949bb29a5304641872b90 -2016-02-18T22:06:53.744044Z -4464 -cvasquez - - - - - - - - - - - - - - - - - - - - - -10588 - -RecepcionArmasNoEnviadasController.java -file - - - - -2022-07-28T03:39:52.572586Z -9e77cd4a499a4d66de6e1f8c3b7631b1 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18095 - -ArticuloRegistradoController.java -file - - - - -2022-07-28T03:39:52.572586Z -b5c95865793777539b80bf5dffc532b8 -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -17956 - -EnvioArmasNoIniciadasFlujoController.java -file - - - - -2022-07-28T03:39:52.572586Z -7017d8c6da01a36f1aa6dd112b030d35 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18490 - -CertificadoFiscaliaController.java -file - - - - -2022-07-28T03:39:52.573586Z -b28ae1177c42b39f13846ed30faf537c -2016-02-04T16:55:05.043192Z -4429 -mcepeda - - - - - - - - - - - - - - - - - - - - - -32902 - -TarmSolicitudTramiteController.java -file - - - - -2022-07-28T03:39:52.573586Z -17d2e27ee2a7c85825f207a86c313ebe -2016-02-29T22:54:14.303059Z -4480 -fpazmino - - - - - - - - - - - - - - - - - - - - - -11230 - -ReclamoDecomisoCoordinadorMilitarController.java -file - - - - -2022-07-28T03:39:52.573586Z -57e39820173ff32081bff3b7607a211d -2021-12-08T19:17:47.063140Z -4656 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9688 - -DocumentoHabilitanteConErrorController.java -file - - - - -2022-07-28T03:39:52.573586Z -d0e13907f91ac9a5fd01af8c35274adc -2016-02-25T17:54:21.420708Z -4477 -fpazmino - - - - - - - - - - - - - - - - - - - - - -39205 - -ReporteConsultaSolicitudClienteController.java -file - - - - -2022-07-28T03:39:52.574586Z -925912b4b11f5ea6244b15e2ffd9c694 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -39301 - -SancionDecomisoController.java -file - - - - -2022-07-28T03:39:52.574586Z -343a587f85fb28b57248592a890db389 -2014-12-22T09:40:55.014033Z -3622 -acevallos - - - - - - - - - - - - - - - - - - - - - -4241 - -SolicitudGuardiasController.java -file - - - - -2022-07-28T03:39:52.575586Z -0602afd6d6543471dd651a8150a52741 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -7949 - -VerificacionInformacionCertificado.java -file - - - - -2022-07-28T03:39:52.574586Z -0a3bfa677b0d2759aba13ac0b6056302 -2014-12-02T11:43:32.450015Z -3243 -dlopez - - - - - - - - - - - - - - - - - - - - - -13638 - -NotificarEmisionDocumentoController.java -file - - - - -2022-07-28T03:39:52.575586Z -22888d56d65f2c8ea61a2a60958bec76 -2015-08-19T12:13:44.250953Z -4271 -fpazmino - - - - - - - - - - - - - - - - - - - - - -22001 - -DecomisoMaterialController.java -file - - - - -2022-07-28T03:39:52.575586Z -7a586fd0b1666f295a012e5f4cf0956b -2021-12-08T19:17:47.063140Z -4656 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -84876 - -SolicitudArmasBPMController.java -file - - - - -2022-07-28T03:39:52.575586Z -f1f88d32c8139334492829c80410efb7 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7128 - -RevisarReporteArmasADestruirController.java -file - - - - -2022-07-28T03:39:52.576586Z -a6213aedfceb0bf91c7aa2fc08b5d6af -2014-11-10T09:09:50.222744Z -2533 -fpazmino - - - - - - - - - - - - - - - - - - - - - -7021 - -SolicitudArmasController.java -file - - - - -2022-07-28T03:39:52.576586Z -bb4605c3168672a95a4b51cccded9ef1 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -12882 - -ImprimirVerificacionReimpresionController.java -file - - - - -2022-07-28T03:39:52.576586Z -31828af55e003ccf7297259c0b46bb05 -2017-02-08T23:36:42.563355Z -4575 -jespinosa - - - - - - - - - - - - - - - - - - - - - -16627 - -RevisarRprteArmasADestJefCCController.java -file - - - - -2022-07-28T03:39:52.577586Z -1d3ba4020766b637b4750ccba5c0b102 -2014-11-18T04:01:13.380364Z -2897 -fpazmino - - - - - - - - - - - - - - - - - - - - - -9693 - -DetRepDestruirArmasController.java -file - - - - -2022-07-28T03:39:52.577586Z -838d9e76817aa4bb035273179882f6fe -2014-11-21T11:51:52.609481Z -3063 -fpazmino - - - - - - - - - - - - - - - - - - - - - -5572 - -TarmTramiteController.java -file - - - - -2022-07-28T03:39:52.577586Z -c156c544a5cf650d2d57ec50c4c21921 -2015-12-29T18:34:31.727682Z -4362 -cvasquez - - - - - - - - - - - - - - - - - - - - - -23683 - -ValidarDepositoController.java -file - - - - -2022-07-28T03:39:52.577586Z -b5adaf8769f6f7e38b22cc2ea1ce7fd5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -33881 - -ReporteEstadisticasTramitesController.java -file - - - - -2022-07-28T03:39:52.578586Z -9fc32eb9f633e6d90da07f205a27c2ed -2014-12-12T04:27:00.576768Z -3447 -cguzman - - - - - - - - - - - - - - - - - - - - - -9408 - -InventariosController.java -file - - - - -2022-07-28T03:39:52.578586Z -4d92f0c33d7541bf7dd8f8a6e2dc270d -2016-02-15T19:57:14.669988Z -4444 -cvasquez - - - - - - - - - - - - - - - - - - - - - -85071 - -CabRepDestruirArmasController.java -file - - - - -2022-07-28T03:39:52.578586Z -45f628cd1034fd310d1bdd0ef08576a4 -2014-11-21T11:51:52.609481Z -3063 -fpazmino - - - - - - - - - - - - - - - - - - - - - -4879 - -ArmasController.java -file - - - - -2022-07-28T03:39:52.579586Z -88ebb392d031d08c570d48084915e9a2 -2021-12-29T13:49:22.967449Z -4659 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -91676 - -ReporteDestruccionArmasController.java -file - - - - -2022-07-28T03:39:52.579586Z -56d3bbdbce143c7e2311eab5ea895591 -2017-02-08T23:37:42.623840Z -4576 -jespinosa - - - - - - - - - - - - - - - - - - - - - -52579 - -ConsultaAlfrescoController.java -file - - - - -2022-07-28T03:39:52.579586Z -6374cfd75c089014b9ad3914bc544ece -2021-09-08T21:20:21.811590Z -4650 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -23263 - -TarmSolicitudArmasController.java -file - - - - -2022-07-28T03:39:52.579586Z -266e67fe8a4efe1f4920e48fc55aa9cf -2015-07-22T07:06:26.167523Z -4229 -fpazmino - - - - - - - - - - - - - - - - - - - - - -9090 - -VerificacionRequisitosSolicitudController.java -file - - - - -2022-07-28T03:39:52.580586Z -ace94c134d935f97450d82c745a1533c -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -45748 - -PlanificacionInspeccionController.java -file - - - - -2022-07-28T03:39:52.580586Z -951a45ad9cf0512c3249074625aff000 -2016-02-05T15:43:09.161911Z -4433 -cflores - - - - - - - - - - - - - - - - - - - - - -39013 - -GenerarOrdenTrabajoCustodiosController.java -file - - - - -2022-07-28T03:39:52.580586Z -cecf65df600c2c8aece71a47b621114b -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -24725 - -IngresoFichaTecnicaArmasController.java -file - - - - -2022-07-28T03:39:52.581586Z -0b1aba4820471aa33352c4f220239827 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -51156 - -RegistroInspeccionPlaniNoPlaniController.java -file - - - - -2022-07-28T03:39:52.581586Z -0e298eb933121bb7750df9e4e82c13eb -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -26033 - -VerificacionInformacionDevolucionController.java -file - - - - -2022-07-28T03:39:52.581586Z -80f7a2581d31b82127274c8859289b0e -2015-03-09T12:24:00.615353Z -3918 -cpiedra - - - - - - - - - - - - - - - - - - - - - -24825 - -emitirDocumentoHabilitanteportransaccion.java -file - - - - -2022-07-28T03:39:52.582586Z -1517a85e7df571ff5bba9583945dffd5 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -42026 - -CustodiaTemporalController.java -file - - - - -2022-07-28T03:39:52.582586Z -263ea67688d9de9aebc17f10d0d8fa57 -2014-10-09T04:34:07.557465Z -1512 -cpiedra - - - - - - - - - - - - - - - - - - - - - -3971 - -PermisosAutorizacionesController.java -file - - - - -2022-07-28T03:39:52.582586Z -cee21e71239938ad88f8a870d84faf82 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5949 - -AuxArmasController.java -file - - - - -2022-07-28T03:39:52.582586Z -628ed07589fcf70557d0f3d91a9755c6 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -12852 - -ModificarPlanificacionInspeccionController.java -file - - - - -2022-07-28T03:39:52.583586Z -6250e54f4780328dfea352e8bea04db1 -2015-03-09T12:24:00.615353Z -3918 -cpiedra - - - - - - - - - - - - - - - - - - - - - -19623 - -RecepcionArmasController.java -file - - - - -2022-07-28T03:39:52.583586Z -ad1e8b65eddffe0d9689c006fc574650 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -81956 - -CertificadoArmasController.java -file - - - - -2022-07-28T03:39:52.583586Z -8b6f0b03b89bad6fd5a3821e1fbe5369 -2015-07-21T07:23:40.321166Z -4223 -fpazmino - - - - - - - - - - - - - - - - - - - - - -3707 - -AprobacionPlanInspeccionController.java -file - - - - -2022-07-28T03:39:52.584586Z -41b64d17e3e109f8f4197ab864bf7681 -2016-01-14T15:03:56.159217Z -4379 -cflores - - - - - - - - - - - - - - - - - - - - - -24051 - -ColaImpresionController.java -file - - - - -2022-07-28T03:39:52.584586Z -7abda1db59b69797da72811b53a45539 -2020-01-15T23:50:20.451652Z -4625 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4845 - -InspeccionArchivoController.java -file - - - - -2022-07-28T03:39:52.584586Z -55dc1c8c03018e545ea5fdde2342116a -2014-11-05T09:48:41.903467Z -2353 -cguzman - - - - - - - - - - - - - - - - - - - - - -5066 - -ArmaEntidadReporte.java -file - - - - -2022-07-28T03:39:52.584586Z -22e7b098d8ce1f05c0060c46428e7c7a -2014-09-09T11:17:58.435724Z -615 -ogarcia - - - - - - - - - - - - - - - - - - - - - -1313 - -TransaccionArmaBodegaController.java -file - - - - -2022-07-28T03:39:52.585586Z -657c603f59773322f1aebcfc03d7039c -2015-03-25T04:25:30.232796Z -3963 -cpiedra - - - - - - - - - - - - - - - - - - - - - -5034 - -EmitirDocumentoHabilitante.java -file - - - - -2022-07-28T03:39:52.585586Z -f2bc01acadea0a494947b874584d01c7 -2015-12-29T18:34:31.727682Z -4362 -cvasquez - - - - - - - - - - - - - - - - - - - - - -33535 - -RegistroInspeccionController.java -file - - - - -2022-07-28T03:39:52.585586Z -6466ebdb64bba4cb5d40f2b12c67b223 -2016-01-27T21:58:21.965036Z -4413 -fpazmino - - - - - - - - - - - - - - - - - - - - - -38616 - -OrdenTrabajoController.java -file - - - - -2022-07-28T03:39:52.585586Z -858ac55964e2e0ef2cf5c189a86e4a28 -2014-10-25T06:02:14.991516Z -1939 -ogarcia - - - - - - - - - - - - - - - - - - - - - -11460 - -ImportacionProduccionController.java -file - - - - -2022-07-28T03:39:52.586586Z -47e24f94eeb7983e4b5ab02e9c4fa376 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -86465 - -VerificacionReimpresion.java -file - - - - -2022-07-28T03:39:52.586586Z -c2cdd14864e230b733b1aa47d23a9a4c -2015-09-30T04:00:04.739636Z -4289 -fpazmino - - - - - - - - - - - - - - - - - - - - - -20972 - -ReporteDestruccionDeArmasController.java -file - - - - -2022-07-28T03:39:52.586586Z -0e0b43aa425308d8f25f4ef5fe5db068 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -33906 - -ReporteControlInventarioController.java -file - - - - -2022-07-28T03:39:52.587586Z -e28e3359f0dcba4cbdae31317c9ef289 -2015-05-07T05:06:31.163329Z -4076 -fpazmino - - - - - - - - - - - - - - - - - - - - - -13893 - -ReporteIngresoVentaArmExpUserController.java -file - - - - -2022-07-28T03:39:52.587586Z -b044898ac35100ff1839184815043cea -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -17714 - -SolicitudCambioDepositoController.java -file - - - - -2022-07-28T03:39:52.587586Z -27cb8591d57297bc37761b7cb19c82a5 -2021-12-29T13:49:22.967449Z -4659 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7039 - -ReporteIngresoVentaArmExpController.java -file - - - - -2022-07-28T03:39:52.588586Z -8c7bf57084202fd2557adb9ca1fcae39 -2015-04-08T12:45:11.093711Z -4022 -dlopez - - - - - - - - - - - - - - - - - - - - - -17216 - -CertificadosArmasController.java -file - - - - -2022-07-28T03:39:52.588586Z -6d9882138d02461bc9b3832bf74feea3 -2015-09-18T03:29:01.430566Z -4280 -fpazmino - - - - - - - - - - - - - - - - - - - - - -23925 - -ReporteInspeccionesRealizadasController.java -file - - - - -2022-07-28T03:39:52.588586Z -535c3114949b5457175fffc54d0eb5e5 -2015-07-02T06:30:40.740078Z -4165 -cpiedra - - - - - - - - - - - - - - - - - - - - - -17205 - -PermisosAutorizacionesAnularController.java -file - - - - -2022-07-28T03:39:52.588586Z -7aca484d860dcb03267a8c50f60b029e -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -11400 - -PlanificacionTramiteController.java -file - - - - -2022-07-28T03:39:52.589586Z -118ac421045011b5f26637824b382a7c -2016-02-15T19:57:14.669988Z -4444 -cvasquez - - - - - - - - - - - - - - - - - - - - - -12748 - -MantenimientoDocumentosAlfrescoController.java -file - - - - -2022-07-28T03:39:52.589586Z -57c98697dae89a539a617a9fdfbe9c44 -2016-03-01T21:59:52.999404Z -4482 -mcepeda - - - - - - - - - - - - - - - - - - - - - -9402 - -AgenciaArmaController.java -file - - - - -2022-07-28T03:39:52.589586Z -3cbeb9933fe8d0072c82456dc1465b77 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3128 - -DecomisoArmaTransaccionController.java -file - - - - -2022-07-28T03:39:52.590586Z -6b9d32fe4ca0f23b0d69a40ceda277d1 -2016-09-21T19:29:01.490332Z -4566 -jespinosa - - - - - - - - - - - - - - - - - - - - - -11782 - -SolicitudAgenciaSucursalController.java -file - - - - -2022-07-28T03:39:52.590586Z -b9f67f7af10d3987b186647e0f594938 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -6708 - -TramiteArmasController.java -file - - - - -2022-07-28T03:39:52.590586Z -3d1d5de44b6d09cfff7b64ec4e594c78 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -115904 - -InspeccionController.java -file - - - - -2022-07-28T03:39:52.591586Z -f9e3259d28106002c91a4cf5280e0b7d -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -4540 - -ArmasBloqueoController.java -file - - - - -2022-07-28T03:39:52.591586Z -50d4baad5d2026551426f7d6c49234d4 -2021-12-15T03:30:14.444318Z -4658 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -32019 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaArmaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaArmaController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaArmaController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaSucursalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaSucursalController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/AgenciaSucursalController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/DocumentoHabilitanteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/DocumentoHabilitanteController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/DocumentoHabilitanteController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/ReporteConsultaSolicitudController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/ReporteConsultaSolicitudController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/ReporteConsultaSolicitudController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudAgenciaSucursalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudAgenciaSucursalController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudAgenciaSucursalController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudGuardiasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudGuardiasController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/prop-base/SolicitudGuardiasController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaArmaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaArmaController.java.svn-base deleted file mode 100644 index 7d77b26..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaArmaController.java.svn-base +++ /dev/null @@ -1,107 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmSolicitud; - -@ManagedBean -@ViewScoped -public class AgenciaArmaController extends AbstractController { - - private static final long serialVersionUID = -8596957712603749520L; - - public AgenciaArmaController() throws Exception{ - super(TarmAgenciaArma.class); - } - - @PostConstruct - private void postconstruct(){ - this.init(); - } - - private void init(){ - this.beanalias = "AGENCIAARMAS"; - this.recperpage = 10; - this.lrecord = new ArrayList<>(); - } - - /** - * Busca las Agencias asociadas a las armas según los criterios indicados - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(Boolean.TRUE); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - this.lrecord = (List) response.get(beanalias); - this.postQuery(lrecord); - } else{ - this.lrecord = new ArrayList<>(); - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dto = this.getDtoSave(); - dto.setReturnpk(Boolean.TRUE); - HashMap msaves = new HashMap(); - - msaves.put(this.beanalias, dto); - Request request = callerhelper.getRequest(); - request.setSaveTables(msaves); - - Response response = callerhelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - this.postCommit(response); - MessageHelper.setMessageInfo(response); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmAgenciaArma findByCArma(String cArma, String cAgencia) { - try { - AgenciaArmaController cc = new AgenciaArmaController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk.carma", cArma); - cc.addFilter("pk.cagencia", cAgencia); - cc.querydatabase(); - if (cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaSucursalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaSucursalController.java.svn-base deleted file mode 100644 index f6f88e6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AgenciaSucursalController.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Controlador que maneja la entidad de {@link TarmAgenciaSucursal} - * @author dcruz - * - */ -@ManagedBean -@ViewScoped -public class AgenciaSucursalController extends - AbstractController { - - private List estadoAgencias; - private List tipoAgencias; - private List lprovincias; - private List lcantones; - private List lparroquias; - private List lcities; - - private static final long serialVersionUID = 4621335239110508027L; - - public AgenciaSucursalController() throws Exception{ - super(TarmAgenciaSucursal.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - } - - private void init(){ - this.beanalias = "AGENCIASUCURSAL"; - this.lrecord = new ArrayList<>(); - this.recperpage = 15; - this.estadoAgencias = CatalogDetailController.find("ESTADOAGENCIA"); - this.tipoAgencias = CatalogDetailController.find("TIPOAGENCIA"); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto);//se puede aniadir mas tablas - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0){ - this.lrecord = new ArrayList<>(); - MessageHelper.setMessageError(response); - } else{ - this.lrecord = (List) response.get(beanalias); - this.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - @Override - public void save() { - try { - DtoSave dto = super.getDtoSave(); - if(!dto.pendingProcess()){ - return; - } - dto.setReturnpk(Boolean.TRUE); - HashMap msaves = new HashMap(); - msaves.put(beanalias, dto); - Request request = callerhelper.getRequest(); - request.setSaveTables(msaves); - Response response = callerhelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - this.postCommit(response); - MessageHelper.setMessageInfo(response); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - SubQuery subQueryTipo = new SubQuery("TgeneCatalogDetail", "description", "ntipo", "i.pk.catalog=t.tipo and i.pk.catalogcode=t.tipocodigo"); - dto.addSubQuery(subQueryTipo); - SubQuery subQueryEstado = new SubQuery("TgeneCatalogDetail", "description", "nestado", "i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subQueryEstado); - SubQuery subQueryProvincia = new SubQuery("TgeneProvince", "description", "nprovincia", "i.pk.provincecode=t.provincecode and i.pk.countrycode=t.countrycode"); - dto.addSubQuery(subQueryProvincia); - SubQuery subQueryCanton = new SubQuery("TgeneCanton", "description", "ncanton", "i.pk.countrycode=t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode"); - dto.addSubQuery(subQueryCanton); - SubQuery subQueryParroquia = new SubQuery("TgeneParroquia", "description", "nparroquia", "i.pk.countrycode=t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - dto.addSubQuery(subQueryParroquia); - SubQuery subQueryCiudad = new SubQuery("TgeneCity", "description", "nciudad", "i.pk.countrycode=t.countrycode and i.pk.provincecode=t.provincecode and i.pk.cantoncode=t.cantoncode and i.pk.citycode=t.citycode"); - dto.addSubQuery(subQueryCiudad); - return dto; - } - - public void loadEdit() { - lprovincias = ProvinceController.find(record.getCountrycode()); - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - - @Override - public void create() throws Exception { - super.create(); - this.record.setCountrycode("EC"); - this.record.setTipocodigo("TIPOAGENCIA"); - this.record.setEstadocodigo("ESTADOAGENCIA"); - this.record.setFautorizacion(new Date()); - if(this.record.isnew){ - this.record.setEstado("REG"); - } - this.lprovincias = ProvinceController.find(record.getCountrycode()); - this.executeProvince(); - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmAgenciaSucursal agenciaSucursal : lrecord) { - agenciaSucursal.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmAgenciaSucursal find(String cagencia) { - TarmAgenciaSucursal agenciaSucursal = null; - try { - AgenciaSucursalController cc = new AgenciaSucursalController(); - cc.addFilter("pk", cagencia); - cc.init(); - cc.recperpage = 300; - cc.query(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - agenciaSucursal = cc.lrecord.get(0); - } - return agenciaSucursal; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return agenciaSucursal; - } - } - - public List getEstadoAgencias() { - return estadoAgencias; - } - - public void setEstadoAgencias(List estadoAgencias) { - this.estadoAgencias = estadoAgencias; - } - - public List getTipoAgencias() { - return tipoAgencias; - } - - public void setTipoAgencias(List tipoAgencias) { - this.tipoAgencias = tipoAgencias; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AprobacionPlanInspeccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AprobacionPlanInspeccionController.java.svn-base deleted file mode 100644 index 2ae00c3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AprobacionPlanInspeccionController.java.svn-base +++ /dev/null @@ -1,671 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmInspeccion; -import com.fp.persistence.parmas.soli.TarmInspeccionArchivo; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AprobacionPlanInspeccionController extends AbstractController { - - //Codigo de planificacion(Variable de flujo) - private Long cplanificacion; - - private TarmCentroControl centroControl; - String jefeCentroControl; - private String nombreCentroControl; - private Boolean reporteGenerado=false; - private String opcion=""; - private String observaciones=""; - private Boolean reporteHabilitado=false; - private String gradoFuncionario=""; - private TcustPersonDetail usuario; - private String xpathflujo=""; - - private List listainsepcion; - - private Boolean btnFlujo=false; - - @ManagedProperty(value = "#{planificacionTramiteController}") - private PlanificacionTramiteController planificacionTramiteController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - public AprobacionPlanInspeccionController() throws Exception { - super(TarmPlanificacionInspeccion.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.startQuery(); - this.init(); - //super.query(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void startQuery(){ - try { - this.pasteBpmScreenParameters(); - if(super.getMfilters().get("cplanificacion")!=null){ - cplanificacion=Long.parseLong(super.getMfilters().get("cplanificacion").toString()); - } - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - try { - recperpage = 15; - lrecord = new ArrayList<>(); - record=new TarmPlanificacionInspeccion(); - beanalias = "APROBACIONPLANINSPECCIONCONTROLLER"; - this.planificacionTramiteController=new PlanificacionTramiteController(); - this.planificacionTramiteController.setLrecord(new ArrayList()); - btnFlujo=false; - - //Cargando la planificacion por el codigo - this.record=PlanificacionInspeccionController.findPorCodigo(this.cplanificacion); - - // this.listainsepcion=PlanificacionTramiteController.findPorCodigoPlanificacion(this.cplanificacion); - - - if(this.record!=null && this.record.getPk()!=null){ - //Cargando las inspecciones - this.planificacionTramiteController.setCplanificacion(this.record.getPk()); - this.planificacionTramiteController.setRecperpage(4000); - //PlanificacionInspeccionController inspeccion = new PlanificacionInspeccionController(); - //inspeccion.getPresupuesto1(); - this.record.getPresupuesto().toString(); - this.planificacionTramiteController.querydatabaseAprobacion(); - - Collections.sort(planificacionTramiteController.getLrecord(), new Comparator() { - public int compare(TarmPlanificacionTramite p1, TarmPlanificacionTramite p2) { - return new Long(p1.getMesnumero()).compareTo(p2.getMesnumero()); - } - }); - - //Cargando el centro de control - this.centroControl=CentroControlArmasController.findPorCodigo(this.record.getCcentrocontrol()); - this.nombreCentroControl=centroControl.getModifiedData().get("desnombreinstitucion")+""; - - //Obteniendo el jefe del centro de control - this.jefeCentroControl=centroControl.getModifiedData().get("nombre")+"";//PersonDetailController.find(this.centroControl.getPersoncode().toString()); - - //Obteniendo el grado del jefe del centro de control - gradoFuncionario=centroControl.getModifiedData().get("desgrado")+""+" - "; - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void initConsulta() { - try { - recperpage = 15; - lrecord = new ArrayList<>(); - record=new TarmPlanificacionInspeccion(); - beanalias = "APROBACIONPLANINSPECCIONCONTROLLER"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void query() throws Exception { - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); -// if(!lrecord.isEmpty() ){ -// record=lrecord.get(0); -// } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - request.modifiedData().put("cplanificacion", this.record.getPk()); - bpmDataStatus="A"; - if(this.opcion.equalsIgnoreCase("rechazar")){ - bpmDataStatus="D"; - } - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.planificacionTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.reporteHabilitado=true; - btnFlujo=true; - } else { - MessageHelper.setMessageError(resp); - //this.planificacionSalvada=false; - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que persiste la planificacion con el xpath - * del pdf del reporte en el alfresco - */ - public void saveXpathReporte() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que aprueba el plan - * @throws Exception - */ - public void aprobar() throws Exception{ - try { - if(this.opcion.equalsIgnoreCase("Aprobar")){ - this.record.setAprobada("Y"); - update(); - save(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Ejecuta un reporte de custodios - * @param name Nombre del reporte a generar. - */ - public InputStream generateReport() { - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - String path = "armas/reports/planInspeccion"; - String filename=MsgControlArmas.getProperty("lbl_planInspeccionAnual"); - - //Cargando la planificacion - this.record=PlanificacionInspeccionController.findPorCodigo(cplanificacion); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //cplanificacion - parameters.put("cplanificacion", this.record.getPk()); - - //Fecha actual - parameters.put("fechaActual", new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Codigo - parameters.put("codigo", this.record.getCodigo()); - - //Anno - parameters.put("anno", this.record.getAnno().toString()); - - //Codigo - parameters.put("codigo", this.record.getCodigo()); - - //Nombre del centro de control - parameters.put("nombreCentro", this.nombreCentroControl); - - //Fecha actual - parameters.put("fechaActual", Calendar.getInstance().getTime()); - - //cplanificacion - parameters.put("cplanificacion", this.record.getPk()); - - //Fecha actual - parameters.put("fechaActual", new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Fecha generacion - parameters.put("fechaGeneracion", sdf.format(this.record.getFechageneracion())); - - //Anno - parameters.put("anno", this.record.getAnno().toString()); - - //Codigo - parameters.put("codigo", this.record.getCodigo()); - - //Fecha Inicio - parameters.put("fechaInicio", sdf.format(this.record.getFechainicio())); - - //Fecha Fin - parameters.put("fechaFin", sdf.format(this.record.getFechafin())); - - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl); - parameters.put("personcode",this.centroControl.getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreCentroControl); - - //presupuesto anual - - TgeneCatalogDetail obj = CatalogDetailController.findCatalogo("TIPOPLANIFICACION", this.record.getIdPlanificacion()); - parameters.put("ctiplanificacion", obj.getDescription()) ; - - // presupuesto anual - parameters.put("cpresupuestoanual",this.record.getPresupuesto()); - - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - - InputStream pdf=null; - try { - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - pdf = this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - - //Generando el xpath - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Planificacion"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+"reportePlanInspeccion"); - xpathflujo=ruta.toString(); - this.record.setXpath(xpathflujo+"/cm:"+this.record.getCodigo()+".pdf"); - - //Subiendo el pdf al alfresco - alfrescoController.uploadFile(pdf, this.record.getCodigo()+".pdf", xpathflujo) ; - - update(); - saveXpathReporte(); - - this.reporteGenerado=true; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return pdf; - } - - public void probarReporte() { - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - String path = "armas/reports/planInspeccion"; - String filename=MsgControlArmas.getProperty("lbl_planInspeccionAnual"); - - //Cargando la planificacion - this.record=PlanificacionInspeccionController.findPorCodigo(28L); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //cplanificacion - parameters.put("cplanificacion", this.record.getPk()); - - //Fecha actual - parameters.put("fechaActual", new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - - //Fecha generacion - parameters.put("fechaGeneracion", sdf.format(this.record.getFechageneracion())); - - //Anno - parameters.put("anno", this.record.getAnno().toString()); - - //Codigo - parameters.put("codigo", this.record.getCodigo()); - - //Fecha Innicio - parameters.put("fechaInicio", sdf.format(this.record.getFechainicio())); - - //Fecha Innicio - parameters.put("fechaFin", sdf.format(this.record.getFechafin())); - - //Nombre del centro de control - parameters.put("nombreCentro", this.nombreCentroControl); - - //Fecha actual - parameters.put("fechaActual", Calendar.getInstance().getTime()); - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl); - parameters.put("personcode",this.centroControl.getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreCentroControl); - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - this.reporteGenerado=true; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public void habilitarFirma(){ - - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(!btnFlujo){ - MessageHelper.setMessageInfo("GUARDE LOS CAMBIOS"); - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cplanificacion", this.cplanificacion); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=false; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTareaReporte() { - - try { - if(!reporteGenerado){ - MessageHelper.setMessageError("GENERE EL REPORTE"); - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cplanificacion", this.cplanificacion); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - reporteGenerado=false; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * - * @param codigoSolicitud - * @return - */ - public static List findPorAnno(String centro, String year) { - try { - AprobacionPlanInspeccionController cc = new AprobacionPlanInspeccionController(); - cc.initConsulta(); - cc.recperpage = 300; - if(year != null){ - cc.addFilter("anno", year); - } - cc.addFilter("ccentrocontrol", centro); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; -// if (cc.record != null) { -// return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public PlanificacionTramiteController getPlanificacionTramiteController() { - return planificacionTramiteController; - } - - public void setPlanificacionTramiteController( - PlanificacionTramiteController planificacionTramiteController) { - this.planificacionTramiteController = planificacionTramiteController; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getNombreCentroControl() { - return nombreCentroControl; - } - - public void setNombreCentroControl(String nombreCentroControl) { - this.nombreCentroControl = nombreCentroControl; - } - - public Long getCplanificacion() { - return cplanificacion; - } - - public void setCplanificacion(Long cplanificacion) { - this.cplanificacion = cplanificacion; - } - - public Boolean getReporteGenerado() { - return reporteGenerado; - } - - public void setReporteGenerado(Boolean reporteGenerado) { - this.reporteGenerado = reporteGenerado; - } - - public String getOpcion() { - return opcion; - } - - public void setOpcion(String opcion) { - this.opcion = opcion; - } - - public String getObservaciones() { - return observaciones; - } - - public void setObservaciones(String observaciones) { - this.observaciones = observaciones; - } - - public Boolean getReporteHabilitado() { - return reporteHabilitado; - } - - public void setReporteHabilitado(Boolean reporteHabilitado) { - this.reporteHabilitado = reporteHabilitado; - } - - public String getGradoFuncionario() { - return gradoFuncionario; - } - - public void setGradoFuncionario(String gradoFuncionario) { - this.gradoFuncionario = gradoFuncionario; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - - - public List getListaInsepcion() { - return listainsepcion; - } - - public void setListaInsepcion(List listainsepcion) { - this.listainsepcion = listainsepcion; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmaEntidadReporte.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmaEntidadReporte.java.svn-base deleted file mode 100644 index 90b3b61..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmaEntidadReporte.java.svn-base +++ /dev/null @@ -1,82 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -public class ArmaEntidadReporte { - - private Long numero; - private String clase; - private String tipo; - private String marca; - private String modelo; - private String calibre; - private String serie; - private String estado; - - public ArmaEntidadReporte() { - } - - public Long getNumero() { - return numero; - } - - public void setNumero(Long numero) { - this.numero = numero; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public String getTipo() { - return tipo; - } - - public void setTipo(String tipo) { - this.tipo = tipo; - } - - public String getMarca() { - return marca; - } - - public void setMarca(String marca) { - this.marca = marca; - } - - public String getModelo() { - return modelo; - } - - public void setModelo(String modelo) { - this.modelo = modelo; - } - - public String getSerie() { - return serie; - } - - public void setSerie(String serie) { - this.serie = serie; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getCalibre() { - return calibre; - } - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasBloqueoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasBloqueoController.java.svn-base deleted file mode 100644 index 0a177e3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasBloqueoController.java.svn-base +++ /dev/null @@ -1,927 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CalibreLovController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.LongitudLovController; -import com.fp.frontend.controller.armas.parametros.TipoArmaExpLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Controlador principal de armas - * @author dcruz - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmasBloqueoController extends AbstractController { - - @ManagedProperty(value = "#{tiposArmasExplosivosController}") - private TiposArmasExplosivosController tiposArmasExplosivosController; - - /** - * Lista de tipos de identificación - */ - private List ltipoidentificacion; - /** - * Listado de estados del arma - */ - private List lestadoarma; - - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - /** - * Contiene la fecha actual del sistema - */ - private Date fechaActual; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - public ArmasBloqueoController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - fechaActual = new Date(); - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - ltipoidentificacion = CatalogDetailController.find("IDENTIFICATION"); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - filtroPersona = ""; - //userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroPersona = ""; - if(this.getMfilelds().get("personcode") != null){ - sqlFiltroPersona = " t.cregistro in (SELECT c.pk FROM TarmRegistroArmas c WHERE c.personcode="+this.getMfilelds().get("personcode")+")"; - } - - dto.setOrderby("pk"); - - //estados del armas - - String sqlActual = ""; - if(this.getMfilelds().get("personcode")==null){ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - }else{ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - } - - sqlActual=sqlActual+ filtroPersona; - - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona,sqlActual); - Filter filtroFinal = new Filter(); - sqlFinal= sqlFinal+ " and t.estadoventa is null "; - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryTipoFab= new SubQuery("TgeneCatalogDetail","description","tipofabricacion","i.pk.catalog=t.tipofabricacion and i.pk.catalogcode='TIPOFABRICACION'"); - dto.addSubQuery(subqueryTipoFab); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","unidadmedidadesc","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidadTipo); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - - return dto; - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); - - Request request = callerhelper.getRequest(); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - @Override - public void update() throws Exception { - TgeneCatalogDetail estado = CatalogDetailController.findxCodigoCodcatalogo(record.getEstado(), record.getEstadocodigo()); - record.getModifiedData().put("estado", estado.getDescription()); - super.update(); - } - - /* - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String carpeta) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Registro"); - ruta = ruta.append("/cm:"+carpeta); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:D-").append(calendar.get(Calendar.DAY_OF_WEEK)); - return ruta.toString(); - } - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - if(record.getCountrycode() == null){ - record.setCountrycode("EC"); - } - if(record.getCtipoarmaexplosivo()==null){ - MessageHelper.setMessageError("NO ESTA ASOCIADO A UN TIPO DE ARMA EXPLOSIVO"); - return; - } - TarmRegistroArmas registroArmas=RegistroArmController.findByCodigo( record.getCregistro().toString()); - TcustPersonDetail tcustPersonDetail = PersonDetailController.find(registroArmas.getPersoncode().toString()); - tipoDoc = tcustPersonDetail.getIdentificationcatalog(); - numDoc = tcustPersonDetail.getIdentification(); - nombreRazon = tcustPersonDetail.getName(); - // - lestadoarma= new ArrayList<>(); - String catalogoabre=record.getEstado()!=null && record.getEstado().equals("BLOQ")?"REG":"BLOQ"; - TgeneCatalogDetail catalogo=CatalogDetailController.findCatalogo("ESTADOARMA",catalogoabre); - lestadoarma.add(catalogo); - } - - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - @Override - public void create() throws Exception { - super.create(); - this.tipoDoc = null; - this.numDoc = null; - this.nombreRazon = null; - this.record.setCountrycode("EC"); -// this.record.setEstado("REG"); - this.record.setEstado("PREG"); - this.record.setEstadocodigo("ESTADOARMA"); - this.record.setMarcacodigo("MARCA"); - this.record.setGeneracertificado("NO"); - } - - public void update(TarmArmas bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void validacionDocumento(String numeroDocumento, String tipoDocumento){ - if(numeroDocumento==null || tipoDocumento==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - TcustPersonDetail tcustPersonDetail=null; - if(tipoDocumento.equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else if(tipoDocumento.equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else{ -//----------si es PASAPORTE - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - } - if(tcustPersonDetail==null){ - nombreRazon=null; - numDoc=null; - MessageHelper.setMessageError("La datos de la persona ingresada no existen, por favor crear primero la persona"); - return; - }else{ - nombreRazon=tcustPersonDetail.getName(); - } - } - - /** Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - ArmasBloqueoController cc = new ArmasBloqueoController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * - * - * @param personCode - * @param estados estados del arma separados por coma - * @param tipoFab tipos de fabricacion del arma separados por coma - * @return Una lista de Armas encontradas - */ - public List findxPersona(Long personCode, String estados, String tipoFab, String clase, String fechaCaducidad) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasBloqueoController armas = new ArmasBloqueoController(); - armas.init(); - armas.recperpage = 4000; - armas.addField("personcode", personCode); - if(this.getMfilelds().get("sancion") != null){ - armas.addField("sancion", this.getMfilelds().get("sancion")); - } - if(this.getMfilelds().get("TRAMITE") != null){ - armas.addField("TRAMITE", this.getMfilelds().get("TRAMITE")); - } - if(estados == null){ - armas.addFilter("estado", "REG"); - } else{ - armas.addField("ESTADOS", estados); - } - if(tipoFab != null && tipoFab .trim().length()>0){ - armas.addField("TIPOFABRICACION", tipoFab); - } - if(clase != null && clase .trim().length()>0){ - armas.addField("CLASEARMAS", clase); - } -// if(fechaCaducidad != null && fechaCaducidad .trim().length()>0){ -// armas.addField("FECHACADUCIDADARM", fechaCaducidad); -// } - armas.query(); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - ArmasBloqueoController cc = new ArmasBloqueoController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getLongitud()!=null && tarmTipoArmaExplosivo.getLongitudcodigo()!=null){ - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getCalibre()!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null){ - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - } - item.modifiedData().put("unidadMedidaCantidad",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getUnidadmedidapeso(), tarmTipoArmaExplosivo.getUnidadmedidapesocodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("clase", clase.getDescription()); - this.clase = clase.getPk().getCatalog(); - this.verificarClaseArma(); - } - - - /** - * Método en el cual se determina si se bloquea unidad o cantidad al momento de cargar los datos del arma - * @param clase - */ - private void verificarClaseArma(){ - if(this.clase==null){ - this.bloquearUnidadPeso = Boolean.TRUE; - this.bloquearUnidadCantidad = Boolean.TRUE; - return; - } - - if( this.clase.equals("0010000003") || this.clase.equals("0010000005") || this.clase.equals("0010000007") || this.clase.equals("0010000006")){ - this.bloquearUnidadPeso = Boolean.FALSE; - } else{ - this.bloquearUnidadPeso = Boolean.TRUE; - } - if(this.clase.equals("0010000001") || this.clase.equals("0010000002") || this.clase.equals("0010000004")){ - this.bloquearUnidadCantidad = Boolean.FALSE; - } else{ - this.bloquearUnidadCantidad = Boolean.TRUE; - } - } - - /** - * Abre el LOV de la longitud del arma - */ - public void openLovLongitud() { - Map> params = new HashMap>(); - LongitudLovController.openLov(params); - } - - /** - * Regresa del LOV de longitud - * @param event - */ - public void onReturnLongitud(SelectEvent event) { - TgeneCatalogDetail longitud = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("longitud", longitud.getDescription()); - this.longitud = longitud.getPk().getCatalog(); - } - - /** - * Abre el LOV del tipo de arma - */ - public void openLovTipoArma() { - Map> params = new HashMap>(); - TipoArmaExpLovController.openLov(params); - } - - /** - * Regresa del LOV de tipo de arma - * @param event - */ - public void onReturnTipoArma(SelectEvent event) { - TgeneCatalogDetail tipoArma = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArma.getDescription()); - this.tipoarma = tipoArma.getPk().getCatalog(); - } - - /** - * Abre el LOV de Calibre - */ - public void openLovCalibre() { - Map> params = new HashMap>(); - CalibreLovController.openLov(params); - } - - /** - * Regresa del LOV del calibre - * @param event - */ - public void onReturnCalibre(SelectEvent event) { - TgeneCatalogDetail calibre = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("calibre", calibre.getDescription()); - this.calibre = calibre.getPk().getCatalog(); - } - - /** - * Abre el LOV cambio de usuario - */ - public void openLovCambioUsuario() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - - public void actualizar(TarmArmas arma) throws Exception{ - record=arma; - super.update(); - } - - public TiposArmasExplosivosController getTiposArmasExplosivosController() { - return tiposArmasExplosivosController; - } - - - public void setTiposArmasExplosivosController( - TiposArmasExplosivosController tiposArmasExplosivosController) { - this.tiposArmasExplosivosController = tiposArmasExplosivosController; - } - - - public List getLtipoidentificacion() { - return ltipoidentificacion; - } - - - public void setLtipoidentificacion(List ltipoidentificacion) { - this.ltipoidentificacion = ltipoidentificacion; - } - - - public String getTipoDoc() { - return tipoDoc; - } - - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - - public String getNumDoc() { - return numDoc; - } - - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - - public String getNombreRazon() { - return nombreRazon; - } - - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - - public List getLestadoarma() { - return lestadoarma; - } - - - public void setLestadoarma(List lestadoarma) { - this.lestadoarma = lestadoarma; - } - - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getFiltroPersona() { - return filtroPersona; - } - - public void setFiltroPersona(String filtroPersona) { - this.filtroPersona = filtroPersona; - } - - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - ArmasBloqueoController cc = new ArmasBloqueoController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - /** - * Maneja la respuesta del Lov de Personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial = personaDetailSelecionada.getName(); - numeroDocumento = personaDetailSelecionada.getIdentification(); - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode =" - + personaDetailSelecionada.getPk().getPersoncode() + ")"; - - querydatabase(); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.netbeans-base deleted file mode 100644 index 67bae88..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.netbeans-base +++ /dev/null @@ -1,2325 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmaExplosivoLovController; -import com.fp.frontend.controller.armas.parametros.CalibreLovController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.LongitudLovController; -import com.fp.frontend.controller.armas.parametros.TipoArmaExpLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de armas - * @author dcruz - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmasController extends AbstractController { - - @ManagedProperty(value = "#{tiposArmasExplosivosController}") - private TiposArmasExplosivosController tiposArmasExplosivosController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Lista de tipos de identificación - */ - private List ltipoidentificacion; - /** - * Listado de estados del arma - */ - private List lestadoarma; - /** - * Listado de marcas - */ - private List lmarca; - /** - * Listado de colores - */ - private List lcolor; - /** - * Listado de tipos de fabricación - */ - private List ltipofabricacion; - /** - * Listado de unidad de medida cantidad - */ - private List lunidadmedidacantidad; - /** - * Listado de unidad medida peso - */ - private List lunidadmedidapeso; - /** - * Listado de paises - */ - private List lcountry; - /** - * Listado de provincias - */ - private List lprovincias; - /** - * Listado de cantones - */ - private List lcantones; - /** - * Listado de parroquias - */ - private List lparroquias; - /** - * Listado de ciudades - */ - private List lcities; - - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que escifica que se deba verificar que exista un arma explosivo válida - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - /** - * Contiene la fecha actual del sistema - */ - private Date fechaActual; - /** - * Contiene la referencia a nuevo propietario del arma - */ - private TcustPersonDetail nuevoPropietarioArma; - /** - * Tipo del arma explosivo - */ - private TarmTipoArmaExplosivo tipoArmaExplosivo ; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo del ruc - */ - private String codigoPasaporte; - - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - private TsafeUserDetail userDetail; - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public ArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - fechaActual = new Date(); - recperpage = 15; // Cambiar al # reg a mirar. -// record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - ltipoidentificacion = CatalogDetailController.find("IDENTIFICATION"); - lestadoarma = CatalogDetailController.find("ESTADOARMA"); - //remover el estado bloqueado - Listlistaremover= new ArrayList<>(); - for (TgeneCatalogDetail item : lestadoarma) { - if(item.getPk().getCatalog().equals("BLOQ")){ - listaremover.add(item); - } - } - lestadoarma.removeAll(listaremover); - - lmarca = CatalogDetailController.find("MARCA"); - lcolor = CatalogDetailController.find("COLOR"); - ltipofabricacion = CatalogDetailController.find("TIPOFABRICACION"); -// lunidadmedidacantidad = CatalogDetailController.find("UCANTIDAD"); - lunidadmedidapeso = CatalogDetailController.find("UNIDADMEDIDA"); - lcountry = CountryController.find(); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - filtroPersona = ""; - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroPersona = ""; - String sqlFiltroSancion = ""; - String sqlFiltroEstados = ""; - String sqlFiltroTipoFabricacion = ""; - String sqlFiltroClaseArmas = ""; -// String sqlFiltroFechaCaducidad = ""; - String sqlFiltroValidacionArma = "";//si entre los estados existe renovacion entonces validamos que no pueda seleccionar las mismas armas - if(this.getMfilelds().get("personcode") != null){ - sqlFiltroPersona = " t.cregistro in (SELECT c.pk FROM TarmRegistroArmas c WHERE c.personcode="+this.getMfilelds().get("personcode")+")"; - } - //agregamos los filtros en base a la consideracion del field sancion, en caso de que lo sea buscamos los sancionados que hayan cumplido el tiempo de sancion - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - if(this.getMfilelds().containsKey("sancion") && this.getMfilelds().get("sancion").toString().equals(Constant.STR_Y)){ - sqlFiltroSancion = " t.pk in (SELECT max(a.pk) FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.pk in (SELECT d.cdocumento FROM TarmSancionDecomiso d WHERE d.personcode="+this.getMfilelds().get("personcode")+" AND d.fechafinal < TO_DATE('"+dateFormat.format(Calendar.getInstance().getTime())+"', 'YYYY-MM-DD'))) GROUP BY a.codigoarma)"; - } - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - sqlFiltroEstados = sqlEstados.toString(); - } - - if(this.getMfilelds().get("TIPOFABRICACION") != null){ - String[] tipoFabricacion = this.getMfilelds().get("TIPOFABRICACION").toString().split(","); - StringBuffer sqlTipoFabricacion = new StringBuffer(" t.tipofabricacion IN ("); - for (int i = 0; i < tipoFabricacion.length; i++) { - sqlTipoFabricacion.append("'").append(tipoFabricacion[i]).append("'"); - if(i < tipoFabricacion.length - 1){ - sqlTipoFabricacion.append(","); - } - } - sqlTipoFabricacion.append(")"); - sqlFiltroTipoFabricacion = sqlTipoFabricacion.toString(); - } - - if(this.getMfilelds().get("TRAMITE") != null){ - TarmTramite tarmTramite = (TarmTramite) this.getMfilelds().get("TRAMITE"); - sqlFiltroValidacionArma = "t.pk not in (SELECT coalesce(max(a.pk),'-1') FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.personcode="+this.getMfilelds().get("personcode")+" AND h.ctramite="+tarmTramite.getPk()+" AND h.estado = 'APR' AND trunc(h.fechaexpiracion) >= " + "TO_DATE('" +dateFormat.format(Calendar.getInstance().getTime())+ "','yyyy-MM-dd')) GROUP BY a.codigoarma)"; - } - //estados del armas - if(this.getMfilelds().get("CLASEARMAS") != null){ - String[] clasesarma = this.getMfilelds().get("CLASEARMAS").toString().split(","); - StringBuffer sqlclasesarmas = new StringBuffer(" t.ctipoarmaexplosivo IN (select o.pk from TarmTipoArmaExplosivo o where o.clase in("); - for (int i = 0; i < clasesarma.length; i++) { - sqlclasesarmas.append("'").append(clasesarma[i]).append("'"); - if(i < clasesarma.length - 1){ - sqlclasesarmas.append(","); - } - } - sqlclasesarmas.append(")) "); - sqlFiltroClaseArmas = sqlclasesarmas.toString(); - } - -// if(this.getMfilelds().get("FECHACADUCIDADARM") != null){ -// sqlFiltroFechaCaducidad="t.fechacaducidad "+this.getMfilelds().get("FECHACADUCIDADARM"); -// } - String sqlActual = ""; - if(this.getMfilelds().get("personcode")==null){ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='BLOQ'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - }else{ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='BLOQ'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - } - - sqlActual=sqlActual+ filtroPersona; - -// String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlFiltroFechaCaducidad, sqlActual); - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados,sqlFiltroTipoFabricacion, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlActual); - Filter filtroFinal = new Filter(); - sqlFinal= sqlFinal+ " and t.estadoventa is null "; - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - @SuppressWarnings("unchecked") - public void querydatabaseSinFiltros() { - try { - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @SuppressWarnings("unchecked") - protected void querydatabasePorCodigo() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryTipoFab= new SubQuery("TgeneCatalogDetail","description","tipofabricacion","i.pk.catalog=t.tipofabricacion and i.pk.catalogcode='TIPOFABRICACION'"); - dto.addSubQuery(subqueryTipoFab); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","unidadmedidadesc","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidadTipo); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - - return dto; - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - this.registroArmas.update(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - msave.put(beanalias, dtosave); - - Request request = callerhelper.getRequest(); - request.put("TIPODOC", tipoDoc); - request.put("NUMDOC", numDoc); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - public void saveFile() { - try { - DtoSave dtosave = super.getDtoSave(); - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); - Request request = callerhelper.getRequest(); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - public void saveArmaSolicitud() { - try { - - if(!isArmaDuplicada(record)){ - - record.getModifiedData().put("edit", "S"); - - this.registroArmas.update(); - update(); - if(!existeTipoArmaExplosivo){ - return; - } - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - - Request request = callerhelper.getRequest(); - request.setTransactionModule("30"); - request.setTransactionCode(15); - request.setTransactionVersion(1); - if(!verificaArmaExplosivo){ - request.put("eseliminacion", Constant.STR_Y); - }else{ - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - } - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.put("TIPODOC", this.getMfilelds().get("tipodoc")); - request.put("NUMDOC", this.getMfilelds().get("numdoc")); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmas.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - }else{ - record= null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_armaDuplicada")); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception { - TgeneCatalogDetail estado = CatalogDetailController.findxCodigoCodcatalogo(record.getEstado(), record.getEstadocodigo()); - TgeneCatalogDetail marca = CatalogDetailController.findxCodigoCodcatalogo(record.getMarca(), record.getMarcacodigo()); - record.getModifiedData().put("estado", estado.getDescription()); - record.getModifiedData().put("marca", marca.getDescription()); - for(TgeneCatalogDetail color:lcolor){ - if(record.getColor()!=null && record.getColor().equals(color.getPk().getCatalog())){ - record.getModifiedData().put("color", color.getDescription()); - break; - } - } - if(verificaArmaExplosivo){ - if(tipoArmaExplosivo == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - existeTipoArmaExplosivo = Boolean.FALSE; - return; - }else{ - this.record.setCtipoarmaexplosivo(tipoArmaExplosivo.getPk()); - existeTipoArmaExplosivo = Boolean.TRUE; - } - } - //valida si el estado es de perdida robo para obligar el adjuntar - if((record.getEstado()!=null && record.getEstado().equals("RPER")) || - (record.getPk()==null)){ - String xPathLocation=""; - if(record.getEstado()!=null && record.getEstado().equals("RPER")){ - xPathLocation= getRutaDocumentoSolBase("PerdidaRobo") + "/cm:"+record.getEstado()+"-" +this.record.getCodigoarma() ; - }else{ - xPathLocation= getRutaDocumentoSolBase("Crear") +"/cm:"+record.getEstado()+"-" +this.numDoc ; - } - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = record.getEstado()+"-"+(this.record.getPk()!=null?this.record.getPk():"NUEVA")+"."+extencionArchivo; - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - String pathRuta=xPathLocation + "/cm:" + nombreArchivo; - this.record.setPathDocumento(pathRuta); - uploadedFile=null; - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - } - - super.update(); - } - - /* - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String carpeta) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Registro"); - ruta = ruta.append("/cm:"+carpeta); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:D-").append(calendar.get(Calendar.DAY_OF_WEEK)); - return ruta.toString(); - } - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - if(record.getCountrycode() == null){ - record.setCountrycode("EC"); - } - if(record.getCtipoarmaexplosivo()==null){ - MessageHelper.setMessageError("NO ESTA ASOCIADO A UN TIPO DE ARMA EXPLOSIVO"); - return; - } - tipoArmaExplosivo= TiposArmasExplosivosController.findarma(record.getCtipoarmaexplosivo()); - lprovincias = ProvinceController.find(record.getCountrycode()); - executeProvince(); - if(record.getProvincecode() != null){ - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - executeCanton(); - } - completaInfTipoArma(); - // Anade la descripcion del tipo de arma explosivo - if(tipoArmaExplosivo!=null){ - if(this.tipoArmaExplosivo.getClase().equals("0010000003") || this.tipoArmaExplosivo.getClase().equals("0010000005") || this.tipoArmaExplosivo.getClase().equals("0010000007") || this.tipoArmaExplosivo.getClase().equals("0010000006")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getModifiedData().get("nunidadMedidaPeso")); - }else if(this.tipoArmaExplosivo.getClase().equals("0010000001") || this.tipoArmaExplosivo.getClase().equals("0010000002") || this.tipoArmaExplosivo.getClase().equals("0010000004") || this.tipoArmaExplosivo.getClase().equals("0010000008")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getModifiedData().get("nunidadMedidaPeso")); - this.record.getModifiedData().put("unidadMedidaPeso", null); - } - } - verificarClaseArma(); - registroArmas.clearAll(); - registroArmas.addFilter("pk", record.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - TcustPersonDetail tcustPersonDetail = PersonDetailController.find(registroArmas.getRecord().getPersoncode().toString()); - tipoDoc = tcustPersonDetail.getIdentificationcatalog(); - numDoc = tcustPersonDetail.getIdentification(); - nombreRazon = tcustPersonDetail.getName(); - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(){ - TarmArmas recordArma = findPorCodigo(record.getPk()); - record.setCountrycode("EC"); - clase = record.getModifiedData().get("clase") != null ? recordArma.getModifiedData().get("clase").toString() : null; - calibre = record.getModifiedData().get("ccalibre") != null ? Utilidades.formatearDecimalesEnTexto((recordArma.getModifiedData().get("ccalibre").toString()).replace("null", ""), "#.00") : null; - longitud = record.getModifiedData().get("clongitud") != null ? recordArma.getModifiedData().get("clongitud").toString() : null; - tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? recordArma.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - @Override - public void create() throws Exception { - super.create(); - this.tipoDoc = null; - this.numDoc = null; - this.nombreRazon = null; - this.verificaArmaExplosivo = Boolean.TRUE; - this.registroArmas.create(); - this.registroArmas.setLrecord(new ArrayList()); - this.record.setCountrycode("EC"); -// this.record.setEstado("REG"); - this.record.setEstado("PREG"); - this.record.setEstadocodigo("ESTADOARMA"); - this.record.setMarcacodigo("MARCA"); - this.record.setGeneracertificado("NO"); - this.lprovincias = ProvinceController.find(record.getCountrycode()); - this.executeProvince(); - } - - public void update(TarmArmas bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void validacionDocumento(String numeroDocumento, String tipoDocumento){ - if(numeroDocumento==null || tipoDocumento==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - TcustPersonDetail tcustPersonDetail=null; - if(tipoDocumento.equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else if(tipoDocumento.equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else{ -//----------si es PASAPORTE - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - } - if(tcustPersonDetail==null){ - nombreRazon=null; - numDoc=null; - MessageHelper.setMessageError("La datos de la persona ingresada no existen, por favor crear primero la persona"); - return; - }else{ - nombreRazon=tcustPersonDetail.getName(); - } - } - - /** Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - /** - * Busca un arma por código y estado - * @param armaCode código del arma - * @param estado estado del arma - * @return - */ - public static TarmArmas find(String armaCode,String estado) { - try { - - if(armaCode==null){ - return null; - } - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - if(estado!=null){ - cc.addFilter("estado", estado); - cc.addFilter("estadocodigo", "ESTADOARMA"); - } - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = new TarmTipoArmaExplosivo(); - tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null) - cc.record.modifiedData().put("calibre",tarmTipoArmaExplosivo==null?"":Utilidades.formatearDecimalesEnTexto((CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()), "#.000")); - cc.record.modifiedData().put("tipo",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - cc.record.modifiedData().put("clase",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - cc.record.modifiedData().put("pais", cc.record.getCpaisorigen()==null?"":CountryController.findcountry(cc.record.getCpaisorigen()).getDescription()); - - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - if(serie!=null && !serie.isEmpty()){ - cc.addFilter("lote", serie); - } - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findByPK(String cArma) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", cArma); - cc.querydatabaseSinFiltros(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - cc.record=cc.lrecord.get(0); - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findPorCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - - /** - * - * - * @param personCode - * @param estados estados del arma separados por coma - * @param tipoFab tipos de fabricacion del arma separados por coma - * @return Una lista de Armas encontradas - */ - public List findxPersona(Long personCode, String estados, String tipoFab, String clase, String fechaCaducidad) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addField("personcode", personCode); - if(this.getMfilelds().get("sancion") != null){ - armas.addField("sancion", this.getMfilelds().get("sancion")); - } - if(this.getMfilelds().get("TRAMITE") != null){ - armas.addField("TRAMITE", this.getMfilelds().get("TRAMITE")); - } - if(estados == null){ - armas.addFilter("estado", "REG"); - } else{ - armas.addField("ESTADOS", estados); - } - if(tipoFab != null && tipoFab .trim().length()>0){ - armas.addField("TIPOFABRICACION", tipoFab); - } - if(clase != null && clase .trim().length()>0){ - armas.addField("CLASEARMAS", clase); - } -// if(fechaCaducidad != null && fechaCaducidad .trim().length()>0){ -// armas.addField("FECHACADUCIDADARM", fechaCaducidad); -// } - armas.query(); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getLongitud()!=null && tarmTipoArmaExplosivo.getLongitudcodigo()!=null){ - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getCalibre()!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null){ - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - } - item.modifiedData().put("unidadMedidaCantidad",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getUnidadmedidapeso(), tarmTipoArmaExplosivo.getUnidadmedidapesocodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("clase", clase.getDescription()); - this.clase = clase.getPk().getCatalog(); - this.verificarClaseArma(); - } - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaExplosivoLov() { - this.record.getModifiedData().put("longitud", null); - this.record.getModifiedData().put("tipoarmaexplosivo", null); - this.record.getModifiedData().put("calibre", null); - record.setCantidad(null); -// descripcionUnidadpeso=null; - Map> params = new HashMap<>(); - ArmaExplosivoLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnArmaExplosivo(SelectEvent event) { - tipoArmaExplosivo = (TarmTipoArmaExplosivo) event.getObject(); - //Setear descripciones a presentarse - this.record.getModifiedData().put("clase", tipoArmaExplosivo.getModifiedData().get("nclase")); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArmaExplosivo.getModifiedData().get("ntipo")); - this.record.getModifiedData().put("longitud", tipoArmaExplosivo.getModifiedData().get("nlongitud")); - this.record.getModifiedData().put("calibre", tipoArmaExplosivo.getModifiedData().get("ncalibre")); - // Setear valores en las variables correspondientes - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - this.record.setUnidadmedidacantidad(tipoArmaExplosivo.getUnidadmedidapeso()); - if(tipoArmaExplosivo.getModifiedData().get("desunidad")!=null){ - if(this.clase.equals("0010000003") || this.clase.equals("0010000005") || this.clase.equals("0010000007") || this.clase.equals("0010000006")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getModifiedData().get("desunidad")); - }else if(this.clase.equals("0010000001") || this.clase.equals("0010000002") || this.clase.equals("0010000004") || this.clase.equals("0010000008")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getModifiedData().get("desunidad")); - this.record.getModifiedData().put("unidadMedidaPeso", null); - } - } - } - this.verificarClaseArma(); - if(this.clase.equals("0010000001")||this.clase.equals("0010000008")){ - record.setCantidad(1);//si es arma de fuego por default sea uno y no deje editar - this.bloquearUnidadCantidad = Boolean.TRUE; - } -// else{ -// record.setCantidad(null); -// } - } - - /** - * Método en el cual se determina si se bloquea unidad o cantidad al momento de cargar los datos del arma - * @param clase - */ - private void verificarClaseArma(){ - if(this.clase==null){ - this.bloquearUnidadPeso = Boolean.TRUE; - this.bloquearUnidadCantidad = Boolean.TRUE; - return; - } - - if( this.clase.equals("0010000003") || this.clase.equals("0010000005") || this.clase.equals("0010000007") || this.clase.equals("0010000006")){ - this.bloquearUnidadPeso = Boolean.FALSE; - } else{ - this.bloquearUnidadPeso = Boolean.TRUE; - } - if(this.clase.equals("0010000001") || this.clase.equals("0010000002") || this.clase.equals("0010000004")){ - this.bloquearUnidadCantidad = Boolean.FALSE; - } else{ - this.bloquearUnidadCantidad = Boolean.TRUE; - } - } - - /** - * Abre el LOV de la longitud del arma - */ - public void openLovLongitud() { - Map> params = new HashMap>(); - LongitudLovController.openLov(params); - } - - /** - * Regresa del LOV de longitud - * @param event - */ - public void onReturnLongitud(SelectEvent event) { - TgeneCatalogDetail longitud = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("longitud", longitud.getDescription()); - this.longitud = longitud.getPk().getCatalog(); - } - - /** - * Abre el LOV del tipo de arma - */ - public void openLovTipoArma() { - Map> params = new HashMap>(); - TipoArmaExpLovController.openLov(params); - } - - /** - * Regresa del LOV de tipo de arma - * @param event - */ - public void onReturnTipoArma(SelectEvent event) { - TgeneCatalogDetail tipoArma = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArma.getDescription()); - this.tipoarma = tipoArma.getPk().getCatalog(); - } - - /** - * Abre el LOV de Calibre - */ - public void openLovCalibre() { - Map> params = new HashMap>(); - CalibreLovController.openLov(params); - } - - /** - * Regresa del LOV del calibre - * @param event - */ - public void onReturnCalibre(SelectEvent event) { - TgeneCatalogDetail calibre = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("calibre", calibre.getDescription()); - this.calibre = calibre.getPk().getCatalog(); - } - - /** - * Abre el LOV cambio de usuario - */ - public void openLovCambioUsuario() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Acción de retorno de la selección del usuario - * @param event de retorno de la selección - */ - public void onReturnCambioUsuario(SelectEvent event) { - nuevoPropietarioArma = (TcustPersonDetail) event.getObject(); - } - - /** - * Abre el dialog del cambio de persona - */ - public void abrirDialogCambio() { - this.nuevoPropietarioArma = null; - } - - /** - * Se cambia el propietario del arma - */ - public void cambiarArmaUsuario() { - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(151); - request.setTransactionVersion(1); - request.put("ARMAACTUAL", this.record); - request.put("NUEVAPERSONA", this.nuevoPropietarioArma); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - MessageHelper.setMessageInfo(response); - this.querydatabase(); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para obtener el listado de las armas por la serie/lote - * @param serieLote - * @return - */ - public static List findxSerieLote(String serieLote) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("lote", serieLote); - cc.querydatabaseFechaMax(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener el listado de las armas por la lote - * @param serieLote - * @return - */ - public static List findPorLote(String lote) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("lote", lote); - cc.querydatabaseArmas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - protected void querydatabaseFechaMax() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String codigoEstadoIncautada=codigos("CODIGO.INCAUTADA"); - String codigoEstadoDecomisada=codigos("CODIGO.DECOMISADA"); - String codigoEstadoVendida=codigos("CODIGO.VENDIDA"); - String codigoEstadoMatPrima=codigos("CODIGO.MATERIAPRIMA"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"//and t.cregistro=ta.cregistro para el manejo de los explosivos - + " and t.estado !='DEST' and t.estado !='CDP' and t.estado !='"+codigoEstadoIncautada+"' and t.estado !='"+codigoEstadoDecomisada+"' and t.estado !='"+codigoEstadoVendida+"' and t.estado !='"+codigoEstadoMatPrima+"' "; - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizar(TarmArmas arma) throws Exception{ - record=arma; - super.update(); - } - - /*Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findxCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - cc.querydatabaseArmas(); - cc.getRecord().getModifiedData().put("lmarca", cc.getLmarca()); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * @param lote - * @return - */ - public static List findxLotePerdidaRobo(String lote) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addFilter("lote", lote);//("personcode", personCode); - armas.querydatabaseArmaVenta(" and t.pathDocumento like '%/cm:PerdidaRobo/%'"); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - /** - * @param lote - * @return - */ - public static List findxLoteRegistro(String lote) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addFilter("lote", lote);//("personcode", personCode); - armas.querydatabaseArmaVenta(" and t.pathDocumento like '%/cm:Crear/%'"); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - @SuppressWarnings("unchecked") -protected void querydatabaseArmaVenta(String crear) { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String sqlFinal = " t.pathDocumento is not null "+crear; - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - public void generarReporte(TarmArmas arma) { - String path = "armas/reports/certificadoArmaCrear"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda","repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - // Usuario logueado en la aplicacion - String nombreUsuario; - if (userDetail.getPk().getPersoncode() != null) { - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } else { - nombreUsuario = ""; - } - parameters.put("filtro", arma.getPk()); - parameters.put("usuario", nombreUsuario); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - - String format = "pdf"; - String filename = "certificadoArma"; - - InputStream inputStream = this.reportController.jaspertoInputstream(path,parameters, format, filename, this.getLoginController()); - - String nombreArchivo = (filename!=null && !filename.isEmpty()) ? filename+"."+format : null; - String xPathLocation= getRutaDocumentoSolBase()+"/cm:"+arma.getEstado() + "/cm:CP-" + arma.getModifiedData().get("personcode") + "/cm:CA-" + arma.getCodigoarma() ; - if (nombreArchivo != null && xPathLocation != null && inputStream != null) { - setRecord(arma); - if (alfrescoController.uploadFile(inputStream, nombreArchivo, xPathLocation)) { - record.setPathDocumentocrear(xPathLocation + "/cm:" + nombreArchivo); - record.setGeneracertificado("SI"); - super.update(); - saveFile(); - } - } else { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_subiroarchivoregistrorecibo").concat("("+nombreArchivo+")")); - - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Armas/cm:Crear"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:D-").append(calendar.get(Calendar.DAY_OF_MONTH)); - return ruta.toString(); - } - - public TiposArmasExplosivosController getTiposArmasExplosivosController() { - return tiposArmasExplosivosController; - } - - - public void setTiposArmasExplosivosController( - TiposArmasExplosivosController tiposArmasExplosivosController) { - this.tiposArmasExplosivosController = tiposArmasExplosivosController; - } - - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - - public List getLtipoidentificacion() { - return ltipoidentificacion; - } - - - public void setLtipoidentificacion(List ltipoidentificacion) { - this.ltipoidentificacion = ltipoidentificacion; - } - - - public String getTipoDoc() { - return tipoDoc; - } - - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - - public String getNumDoc() { - return numDoc; - } - - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - - public String getNombreRazon() { - return nombreRazon; - } - - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - - public List getLestadoarma() { - return lestadoarma; - } - - - public void setLestadoarma(List lestadoarma) { - this.lestadoarma = lestadoarma; - } - - - public List getLmarca() { - return lmarca; - } - - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - - public List getLcolor() { - return lcolor; - } - - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - - - public List getLtipofabricacion() { - return ltipofabricacion; - } - - - public void setLtipofabricacion(List ltipofabricacion) { - this.ltipofabricacion = ltipofabricacion; - } - - - public List getLcountry() { - return lcountry; - } - - - public void setLcountry(List lcountry) { - this.lcountry = lcountry; - } - - - public List getLunidadmedidacantidad() { - return lunidadmedidacantidad; - } - - - public void setLunidadmedidacantidad( - List lunidadmedidacantidad) { - this.lunidadmedidacantidad = lunidadmedidacantidad; - } - - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - - public List getLunidadmedidapeso() { - return lunidadmedidapeso; - } - - - public void setLunidadmedidapeso(List lunidadmedidapeso) { - this.lunidadmedidapeso = lunidadmedidapeso; - } - - - public List getLprovincias() { - return lprovincias; - } - - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - - public List getLcantones() { - return lcantones; - } - - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - - public List getLparroquias() { - return lparroquias; - } - - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - - public List getLcities() { - return lcities; - } - - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - - - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getFiltroPersona() { - return filtroPersona; - } - - public void setFiltroPersona(String filtroPersona) { - this.filtroPersona = filtroPersona; - } - - protected void querydatabaseArmas() { - try { - DtoQuery dto = this.getDtoQuery(); - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - }else{ - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - } - - - - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - } - - if(this.getMfilelds().get("TIPOFABRICACION") != null){ - Filter filtroTipoFab = new Filter(); - String[] tipoFab = this.getMfilelds().get("TIPOFABRICACION").toString().split(","); - StringBuffer sqlTipoFab = new StringBuffer(" t.tipofabricacion IN ("); - for (int i = 0; i < tipoFab.length; i++) { - sqlTipoFab.append("'").append(tipoFab[i]).append("'"); - if(i < tipoFab.length - 1){ - sqlTipoFab.append(","); - } - } - sqlTipoFab.append(")"); - filtroTipoFab.setSql(sqlTipoFab.toString()); - dto.addFiltro(filtroTipoFab); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getNuevoPropietarioArma() { - return nuevoPropietarioArma; - } - - public void setNuevoPropietarioArma(TcustPersonDetail nuevoPropietarioArma) { - this.nuevoPropietarioArma = nuevoPropietarioArma; - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public List findArmaRecep(String csolicitud) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.querydatabaserecep(csolicitud); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - public void querydatabaserecep(String csolicitud) { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.put("csolicitud", csolicitud); - //QueryRule ArmasRecepcionQuery - request.put("queryalias", "ARMASRECEPLIST"); - - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void querydatabasesimple() { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - public void querydatabaseArmaDuplicada(TarmArmas armaObj) { - try { - DtoQuery dto = this.getDtoQuery(); - - Filter filtro = new Filter(); - filtro.setSql("t.marca='"+armaObj.getMarca()+"' and t.marcacodigo='"+armaObj.getMarcacodigo()+"' and upper(t.lote)='"+ armaObj.getLote().toUpperCase()+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmArmas findSimple(String carma) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static Boolean isArmaDuplicada(TarmArmas armaObj) { - Boolean isDuplicada = Boolean.FALSE; - ArmasController cc; - try { - cc = new ArmasController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabaseArmaDuplicada(armaObj); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas armaTmp:cc.lrecord){ - TarmTipoArmaExplosivo tipoArmaExpTmp = TiposArmasExplosivosController.findarma(armaTmp.getCtipoarmaexplosivo()); - TgeneCatalogDetail claseTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getClasecodigo(), tipoArmaExpTmp.getClase()); - TgeneCatalogDetail tipoArmaTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getTipoarmaexplosivocodigo(), tipoArmaExpTmp.getTipoarmaexplosivo()); - TgeneCatalogDetail calibreTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getCalibrecodigo(), tipoArmaExpTmp.getCalibre()); - // Valido la clase, tipoarma y calibre solo para armas de fuego y armas no letales - if(claseTmp.getPk().getCatalog().equals("0010000001") || claseTmp.getPk().getCatalog().equals("0010000008")){ - if(armaObj.getModifiedData().get("clase")!=null && armaObj.getModifiedData().get("tipoarmaexplosivo")!=null){ - if(armaObj.getModifiedData().get("clase").toString().equalsIgnoreCase(claseTmp!=null?claseTmp.getDescription():"")&& - armaObj.getModifiedData().get("tipoarmaexplosivo").toString().equalsIgnoreCase(tipoArmaTmp!=null?tipoArmaTmp.getDescription():"")){ - if(armaObj.getModifiedData().get("calibre")!=null && calibreTmp!=null && armaObj.getModifiedData().get("calibre").toString().equalsIgnoreCase(calibreTmp.getDescription())){ - isDuplicada = Boolean.TRUE; - break; - } - } - }else{ - MessageHelper.setMessageError("CLASE Y/O TIPO DE ARMA EXPLOSIVO INCORRECTOS"); - } - } - } - - } - return isDuplicada; - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmArmas find(String carma) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - /** - * Maneja la respuesta del Lov de Personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial = personaDetailSelecionada.getName(); - numeroDocumento = personaDetailSelecionada.getIdentification(); - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode =" - + personaDetailSelecionada.getPk().getPersoncode() + ")"; - - querydatabase(); - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.svn-base deleted file mode 100644 index 67bae88..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArmasController.java.svn-base +++ /dev/null @@ -1,2325 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmaExplosivoLovController; -import com.fp.frontend.controller.armas.parametros.CalibreLovController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.LongitudLovController; -import com.fp.frontend.controller.armas.parametros.TipoArmaExpLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de armas - * @author dcruz - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArmasController extends AbstractController { - - @ManagedProperty(value = "#{tiposArmasExplosivosController}") - private TiposArmasExplosivosController tiposArmasExplosivosController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Lista de tipos de identificación - */ - private List ltipoidentificacion; - /** - * Listado de estados del arma - */ - private List lestadoarma; - /** - * Listado de marcas - */ - private List lmarca; - /** - * Listado de colores - */ - private List lcolor; - /** - * Listado de tipos de fabricación - */ - private List ltipofabricacion; - /** - * Listado de unidad de medida cantidad - */ - private List lunidadmedidacantidad; - /** - * Listado de unidad medida peso - */ - private List lunidadmedidapeso; - /** - * Listado de paises - */ - private List lcountry; - /** - * Listado de provincias - */ - private List lprovincias; - /** - * Listado de cantones - */ - private List lcantones; - /** - * Listado de parroquias - */ - private List lparroquias; - /** - * Listado de ciudades - */ - private List lcities; - - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que escifica que se deba verificar que exista un arma explosivo válida - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - /** - * Contiene la fecha actual del sistema - */ - private Date fechaActual; - /** - * Contiene la referencia a nuevo propietario del arma - */ - private TcustPersonDetail nuevoPropietarioArma; - /** - * Tipo del arma explosivo - */ - private TarmTipoArmaExplosivo tipoArmaExplosivo ; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo del ruc - */ - private String codigoPasaporte; - - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - private TsafeUserDetail userDetail; - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public ArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - fechaActual = new Date(); - recperpage = 15; // Cambiar al # reg a mirar. -// record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - ltipoidentificacion = CatalogDetailController.find("IDENTIFICATION"); - lestadoarma = CatalogDetailController.find("ESTADOARMA"); - //remover el estado bloqueado - Listlistaremover= new ArrayList<>(); - for (TgeneCatalogDetail item : lestadoarma) { - if(item.getPk().getCatalog().equals("BLOQ")){ - listaremover.add(item); - } - } - lestadoarma.removeAll(listaremover); - - lmarca = CatalogDetailController.find("MARCA"); - lcolor = CatalogDetailController.find("COLOR"); - ltipofabricacion = CatalogDetailController.find("TIPOFABRICACION"); -// lunidadmedidacantidad = CatalogDetailController.find("UCANTIDAD"); - lunidadmedidapeso = CatalogDetailController.find("UNIDADMEDIDA"); - lcountry = CountryController.find(); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - filtroPersona = ""; - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroPersona = ""; - String sqlFiltroSancion = ""; - String sqlFiltroEstados = ""; - String sqlFiltroTipoFabricacion = ""; - String sqlFiltroClaseArmas = ""; -// String sqlFiltroFechaCaducidad = ""; - String sqlFiltroValidacionArma = "";//si entre los estados existe renovacion entonces validamos que no pueda seleccionar las mismas armas - if(this.getMfilelds().get("personcode") != null){ - sqlFiltroPersona = " t.cregistro in (SELECT c.pk FROM TarmRegistroArmas c WHERE c.personcode="+this.getMfilelds().get("personcode")+")"; - } - //agregamos los filtros en base a la consideracion del field sancion, en caso de que lo sea buscamos los sancionados que hayan cumplido el tiempo de sancion - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - if(this.getMfilelds().containsKey("sancion") && this.getMfilelds().get("sancion").toString().equals(Constant.STR_Y)){ - sqlFiltroSancion = " t.pk in (SELECT max(a.pk) FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.pk in (SELECT d.cdocumento FROM TarmSancionDecomiso d WHERE d.personcode="+this.getMfilelds().get("personcode")+" AND d.fechafinal < TO_DATE('"+dateFormat.format(Calendar.getInstance().getTime())+"', 'YYYY-MM-DD'))) GROUP BY a.codigoarma)"; - } - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - sqlFiltroEstados = sqlEstados.toString(); - } - - if(this.getMfilelds().get("TIPOFABRICACION") != null){ - String[] tipoFabricacion = this.getMfilelds().get("TIPOFABRICACION").toString().split(","); - StringBuffer sqlTipoFabricacion = new StringBuffer(" t.tipofabricacion IN ("); - for (int i = 0; i < tipoFabricacion.length; i++) { - sqlTipoFabricacion.append("'").append(tipoFabricacion[i]).append("'"); - if(i < tipoFabricacion.length - 1){ - sqlTipoFabricacion.append(","); - } - } - sqlTipoFabricacion.append(")"); - sqlFiltroTipoFabricacion = sqlTipoFabricacion.toString(); - } - - if(this.getMfilelds().get("TRAMITE") != null){ - TarmTramite tarmTramite = (TarmTramite) this.getMfilelds().get("TRAMITE"); - sqlFiltroValidacionArma = "t.pk not in (SELECT coalesce(max(a.pk),'-1') FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.personcode="+this.getMfilelds().get("personcode")+" AND h.ctramite="+tarmTramite.getPk()+" AND h.estado = 'APR' AND trunc(h.fechaexpiracion) >= " + "TO_DATE('" +dateFormat.format(Calendar.getInstance().getTime())+ "','yyyy-MM-dd')) GROUP BY a.codigoarma)"; - } - //estados del armas - if(this.getMfilelds().get("CLASEARMAS") != null){ - String[] clasesarma = this.getMfilelds().get("CLASEARMAS").toString().split(","); - StringBuffer sqlclasesarmas = new StringBuffer(" t.ctipoarmaexplosivo IN (select o.pk from TarmTipoArmaExplosivo o where o.clase in("); - for (int i = 0; i < clasesarma.length; i++) { - sqlclasesarmas.append("'").append(clasesarma[i]).append("'"); - if(i < clasesarma.length - 1){ - sqlclasesarmas.append(","); - } - } - sqlclasesarmas.append(")) "); - sqlFiltroClaseArmas = sqlclasesarmas.toString(); - } - -// if(this.getMfilelds().get("FECHACADUCIDADARM") != null){ -// sqlFiltroFechaCaducidad="t.fechacaducidad "+this.getMfilelds().get("FECHACADUCIDADARM"); -// } - String sqlActual = ""; - if(this.getMfilelds().get("personcode")==null){ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='BLOQ'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - }else{ - sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) " - + " and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='BLOQ'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - } - - sqlActual=sqlActual+ filtroPersona; - -// String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlFiltroFechaCaducidad, sqlActual); - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados,sqlFiltroTipoFabricacion, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlActual); - Filter filtroFinal = new Filter(); - sqlFinal= sqlFinal+ " and t.estadoventa is null "; - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - @SuppressWarnings("unchecked") - public void querydatabaseSinFiltros() { - try { - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @SuppressWarnings("unchecked") - protected void querydatabasePorCodigo() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryTipoFab= new SubQuery("TgeneCatalogDetail","description","tipofabricacion","i.pk.catalog=t.tipofabricacion and i.pk.catalogcode='TIPOFABRICACION'"); - dto.addSubQuery(subqueryTipoFab); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","unidadmedidadesc","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryUnidadTipo); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - - return dto; - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - this.registroArmas.update(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - msave.put(beanalias, dtosave); - - Request request = callerhelper.getRequest(); - request.put("TIPODOC", tipoDoc); - request.put("NUMDOC", numDoc); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - public void saveFile() { - try { - DtoSave dtosave = super.getDtoSave(); - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); - Request request = callerhelper.getRequest(); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - querydatabase(); - } - - public void saveArmaSolicitud() { - try { - - if(!isArmaDuplicada(record)){ - - record.getModifiedData().put("edit", "S"); - - this.registroArmas.update(); - update(); - if(!existeTipoArmaExplosivo){ - return; - } - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - - Request request = callerhelper.getRequest(); - request.setTransactionModule("30"); - request.setTransactionCode(15); - request.setTransactionVersion(1); - if(!verificaArmaExplosivo){ - request.put("eseliminacion", Constant.STR_Y); - }else{ - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - } - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.put("TIPODOC", this.getMfilelds().get("tipodoc")); - request.put("NUMDOC", this.getMfilelds().get("numdoc")); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmas.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - }else{ - record= null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_armaDuplicada")); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception { - TgeneCatalogDetail estado = CatalogDetailController.findxCodigoCodcatalogo(record.getEstado(), record.getEstadocodigo()); - TgeneCatalogDetail marca = CatalogDetailController.findxCodigoCodcatalogo(record.getMarca(), record.getMarcacodigo()); - record.getModifiedData().put("estado", estado.getDescription()); - record.getModifiedData().put("marca", marca.getDescription()); - for(TgeneCatalogDetail color:lcolor){ - if(record.getColor()!=null && record.getColor().equals(color.getPk().getCatalog())){ - record.getModifiedData().put("color", color.getDescription()); - break; - } - } - if(verificaArmaExplosivo){ - if(tipoArmaExplosivo == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - existeTipoArmaExplosivo = Boolean.FALSE; - return; - }else{ - this.record.setCtipoarmaexplosivo(tipoArmaExplosivo.getPk()); - existeTipoArmaExplosivo = Boolean.TRUE; - } - } - //valida si el estado es de perdida robo para obligar el adjuntar - if((record.getEstado()!=null && record.getEstado().equals("RPER")) || - (record.getPk()==null)){ - String xPathLocation=""; - if(record.getEstado()!=null && record.getEstado().equals("RPER")){ - xPathLocation= getRutaDocumentoSolBase("PerdidaRobo") + "/cm:"+record.getEstado()+"-" +this.record.getCodigoarma() ; - }else{ - xPathLocation= getRutaDocumentoSolBase("Crear") +"/cm:"+record.getEstado()+"-" +this.numDoc ; - } - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = record.getEstado()+"-"+(this.record.getPk()!=null?this.record.getPk():"NUEVA")+"."+extencionArchivo; - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - String pathRuta=xPathLocation + "/cm:" + nombreArchivo; - this.record.setPathDocumento(pathRuta); - uploadedFile=null; - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - } - - super.update(); - } - - /* - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String carpeta) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Registro"); - ruta = ruta.append("/cm:"+carpeta); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:D-").append(calendar.get(Calendar.DAY_OF_WEEK)); - return ruta.toString(); - } - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - if(record.getCountrycode() == null){ - record.setCountrycode("EC"); - } - if(record.getCtipoarmaexplosivo()==null){ - MessageHelper.setMessageError("NO ESTA ASOCIADO A UN TIPO DE ARMA EXPLOSIVO"); - return; - } - tipoArmaExplosivo= TiposArmasExplosivosController.findarma(record.getCtipoarmaexplosivo()); - lprovincias = ProvinceController.find(record.getCountrycode()); - executeProvince(); - if(record.getProvincecode() != null){ - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - executeCanton(); - } - completaInfTipoArma(); - // Anade la descripcion del tipo de arma explosivo - if(tipoArmaExplosivo!=null){ - if(this.tipoArmaExplosivo.getClase().equals("0010000003") || this.tipoArmaExplosivo.getClase().equals("0010000005") || this.tipoArmaExplosivo.getClase().equals("0010000007") || this.tipoArmaExplosivo.getClase().equals("0010000006")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getModifiedData().get("nunidadMedidaPeso")); - }else if(this.tipoArmaExplosivo.getClase().equals("0010000001") || this.tipoArmaExplosivo.getClase().equals("0010000002") || this.tipoArmaExplosivo.getClase().equals("0010000004") || this.tipoArmaExplosivo.getClase().equals("0010000008")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getModifiedData().get("nunidadMedidaPeso")); - this.record.getModifiedData().put("unidadMedidaPeso", null); - } - } - verificarClaseArma(); - registroArmas.clearAll(); - registroArmas.addFilter("pk", record.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - TcustPersonDetail tcustPersonDetail = PersonDetailController.find(registroArmas.getRecord().getPersoncode().toString()); - tipoDoc = tcustPersonDetail.getIdentificationcatalog(); - numDoc = tcustPersonDetail.getIdentification(); - nombreRazon = tcustPersonDetail.getName(); - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(){ - TarmArmas recordArma = findPorCodigo(record.getPk()); - record.setCountrycode("EC"); - clase = record.getModifiedData().get("clase") != null ? recordArma.getModifiedData().get("clase").toString() : null; - calibre = record.getModifiedData().get("ccalibre") != null ? Utilidades.formatearDecimalesEnTexto((recordArma.getModifiedData().get("ccalibre").toString()).replace("null", ""), "#.00") : null; - longitud = record.getModifiedData().get("clongitud") != null ? recordArma.getModifiedData().get("clongitud").toString() : null; - tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? recordArma.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - @Override - public void create() throws Exception { - super.create(); - this.tipoDoc = null; - this.numDoc = null; - this.nombreRazon = null; - this.verificaArmaExplosivo = Boolean.TRUE; - this.registroArmas.create(); - this.registroArmas.setLrecord(new ArrayList()); - this.record.setCountrycode("EC"); -// this.record.setEstado("REG"); - this.record.setEstado("PREG"); - this.record.setEstadocodigo("ESTADOARMA"); - this.record.setMarcacodigo("MARCA"); - this.record.setGeneracertificado("NO"); - this.lprovincias = ProvinceController.find(record.getCountrycode()); - this.executeProvince(); - } - - public void update(TarmArmas bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void validacionDocumento(String numeroDocumento, String tipoDocumento){ - if(numeroDocumento==null || tipoDocumento==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - TcustPersonDetail tcustPersonDetail=null; - if(tipoDocumento.equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else if(tipoDocumento.equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else{ -//----------si es PASAPORTE - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - } - if(tcustPersonDetail==null){ - nombreRazon=null; - numDoc=null; - MessageHelper.setMessageError("La datos de la persona ingresada no existen, por favor crear primero la persona"); - return; - }else{ - nombreRazon=tcustPersonDetail.getName(); - } - } - - /** Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - /** - * Busca un arma por código y estado - * @param armaCode código del arma - * @param estado estado del arma - * @return - */ - public static TarmArmas find(String armaCode,String estado) { - try { - - if(armaCode==null){ - return null; - } - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - if(estado!=null){ - cc.addFilter("estado", estado); - cc.addFilter("estadocodigo", "ESTADOARMA"); - } - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = new TarmTipoArmaExplosivo(); - tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null) - cc.record.modifiedData().put("calibre",tarmTipoArmaExplosivo==null?"":Utilidades.formatearDecimalesEnTexto((CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()), "#.000")); - cc.record.modifiedData().put("tipo",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - cc.record.modifiedData().put("clase",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - cc.record.modifiedData().put("pais", cc.record.getCpaisorigen()==null?"":CountryController.findcountry(cc.record.getCpaisorigen()).getDescription()); - - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - if(serie!=null && !serie.isEmpty()){ - cc.addFilter("lote", serie); - } - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findByPK(String cArma) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", cArma); - cc.querydatabaseSinFiltros(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - cc.record=cc.lrecord.get(0); - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findPorCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - - /** - * - * - * @param personCode - * @param estados estados del arma separados por coma - * @param tipoFab tipos de fabricacion del arma separados por coma - * @return Una lista de Armas encontradas - */ - public List findxPersona(Long personCode, String estados, String tipoFab, String clase, String fechaCaducidad) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addField("personcode", personCode); - if(this.getMfilelds().get("sancion") != null){ - armas.addField("sancion", this.getMfilelds().get("sancion")); - } - if(this.getMfilelds().get("TRAMITE") != null){ - armas.addField("TRAMITE", this.getMfilelds().get("TRAMITE")); - } - if(estados == null){ - armas.addFilter("estado", "REG"); - } else{ - armas.addField("ESTADOS", estados); - } - if(tipoFab != null && tipoFab .trim().length()>0){ - armas.addField("TIPOFABRICACION", tipoFab); - } - if(clase != null && clase .trim().length()>0){ - armas.addField("CLASEARMAS", clase); - } -// if(fechaCaducidad != null && fechaCaducidad .trim().length()>0){ -// armas.addField("FECHACADUCIDADARM", fechaCaducidad); -// } - armas.query(); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getLongitud()!=null && tarmTipoArmaExplosivo.getLongitudcodigo()!=null){ - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getCalibre()!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null){ - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - } - item.modifiedData().put("unidadMedidaCantidad",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getUnidadmedidapeso(), tarmTipoArmaExplosivo.getUnidadmedidapesocodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("clase", clase.getDescription()); - this.clase = clase.getPk().getCatalog(); - this.verificarClaseArma(); - } - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaExplosivoLov() { - this.record.getModifiedData().put("longitud", null); - this.record.getModifiedData().put("tipoarmaexplosivo", null); - this.record.getModifiedData().put("calibre", null); - record.setCantidad(null); -// descripcionUnidadpeso=null; - Map> params = new HashMap<>(); - ArmaExplosivoLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnArmaExplosivo(SelectEvent event) { - tipoArmaExplosivo = (TarmTipoArmaExplosivo) event.getObject(); - //Setear descripciones a presentarse - this.record.getModifiedData().put("clase", tipoArmaExplosivo.getModifiedData().get("nclase")); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArmaExplosivo.getModifiedData().get("ntipo")); - this.record.getModifiedData().put("longitud", tipoArmaExplosivo.getModifiedData().get("nlongitud")); - this.record.getModifiedData().put("calibre", tipoArmaExplosivo.getModifiedData().get("ncalibre")); - // Setear valores en las variables correspondientes - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - this.record.setUnidadmedidacantidad(tipoArmaExplosivo.getUnidadmedidapeso()); - if(tipoArmaExplosivo.getModifiedData().get("desunidad")!=null){ - if(this.clase.equals("0010000003") || this.clase.equals("0010000005") || this.clase.equals("0010000007") || this.clase.equals("0010000006")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getModifiedData().get("desunidad")); - }else if(this.clase.equals("0010000001") || this.clase.equals("0010000002") || this.clase.equals("0010000004") || this.clase.equals("0010000008")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getModifiedData().get("desunidad")); - this.record.getModifiedData().put("unidadMedidaPeso", null); - } - } - } - this.verificarClaseArma(); - if(this.clase.equals("0010000001")||this.clase.equals("0010000008")){ - record.setCantidad(1);//si es arma de fuego por default sea uno y no deje editar - this.bloquearUnidadCantidad = Boolean.TRUE; - } -// else{ -// record.setCantidad(null); -// } - } - - /** - * Método en el cual se determina si se bloquea unidad o cantidad al momento de cargar los datos del arma - * @param clase - */ - private void verificarClaseArma(){ - if(this.clase==null){ - this.bloquearUnidadPeso = Boolean.TRUE; - this.bloquearUnidadCantidad = Boolean.TRUE; - return; - } - - if( this.clase.equals("0010000003") || this.clase.equals("0010000005") || this.clase.equals("0010000007") || this.clase.equals("0010000006")){ - this.bloquearUnidadPeso = Boolean.FALSE; - } else{ - this.bloquearUnidadPeso = Boolean.TRUE; - } - if(this.clase.equals("0010000001") || this.clase.equals("0010000002") || this.clase.equals("0010000004")){ - this.bloquearUnidadCantidad = Boolean.FALSE; - } else{ - this.bloquearUnidadCantidad = Boolean.TRUE; - } - } - - /** - * Abre el LOV de la longitud del arma - */ - public void openLovLongitud() { - Map> params = new HashMap>(); - LongitudLovController.openLov(params); - } - - /** - * Regresa del LOV de longitud - * @param event - */ - public void onReturnLongitud(SelectEvent event) { - TgeneCatalogDetail longitud = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("longitud", longitud.getDescription()); - this.longitud = longitud.getPk().getCatalog(); - } - - /** - * Abre el LOV del tipo de arma - */ - public void openLovTipoArma() { - Map> params = new HashMap>(); - TipoArmaExpLovController.openLov(params); - } - - /** - * Regresa del LOV de tipo de arma - * @param event - */ - public void onReturnTipoArma(SelectEvent event) { - TgeneCatalogDetail tipoArma = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArma.getDescription()); - this.tipoarma = tipoArma.getPk().getCatalog(); - } - - /** - * Abre el LOV de Calibre - */ - public void openLovCalibre() { - Map> params = new HashMap>(); - CalibreLovController.openLov(params); - } - - /** - * Regresa del LOV del calibre - * @param event - */ - public void onReturnCalibre(SelectEvent event) { - TgeneCatalogDetail calibre = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("calibre", calibre.getDescription()); - this.calibre = calibre.getPk().getCatalog(); - } - - /** - * Abre el LOV cambio de usuario - */ - public void openLovCambioUsuario() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Acción de retorno de la selección del usuario - * @param event de retorno de la selección - */ - public void onReturnCambioUsuario(SelectEvent event) { - nuevoPropietarioArma = (TcustPersonDetail) event.getObject(); - } - - /** - * Abre el dialog del cambio de persona - */ - public void abrirDialogCambio() { - this.nuevoPropietarioArma = null; - } - - /** - * Se cambia el propietario del arma - */ - public void cambiarArmaUsuario() { - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(151); - request.setTransactionVersion(1); - request.put("ARMAACTUAL", this.record); - request.put("NUEVAPERSONA", this.nuevoPropietarioArma); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - MessageHelper.setMessageInfo(response); - this.querydatabase(); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para obtener el listado de las armas por la serie/lote - * @param serieLote - * @return - */ - public static List findxSerieLote(String serieLote) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("lote", serieLote); - cc.querydatabaseFechaMax(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener el listado de las armas por la lote - * @param serieLote - * @return - */ - public static List findPorLote(String lote) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("lote", lote); - cc.querydatabaseArmas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - protected void querydatabaseFechaMax() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String codigoEstadoIncautada=codigos("CODIGO.INCAUTADA"); - String codigoEstadoDecomisada=codigos("CODIGO.DECOMISADA"); - String codigoEstadoVendida=codigos("CODIGO.VENDIDA"); - String codigoEstadoMatPrima=codigos("CODIGO.MATERIAPRIMA"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"//and t.cregistro=ta.cregistro para el manejo de los explosivos - + " and t.estado !='DEST' and t.estado !='CDP' and t.estado !='"+codigoEstadoIncautada+"' and t.estado !='"+codigoEstadoDecomisada+"' and t.estado !='"+codigoEstadoVendida+"' and t.estado !='"+codigoEstadoMatPrima+"' "; - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizar(TarmArmas arma) throws Exception{ - record=arma; - super.update(); - } - - /*Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findxCodigo(String armaCode) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - cc.querydatabaseArmas(); - cc.getRecord().getModifiedData().put("lmarca", cc.getLmarca()); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * @param lote - * @return - */ - public static List findxLotePerdidaRobo(String lote) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addFilter("lote", lote);//("personcode", personCode); - armas.querydatabaseArmaVenta(" and t.pathDocumento like '%/cm:PerdidaRobo/%'"); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - /** - * @param lote - * @return - */ - public static List findxLoteRegistro(String lote) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ArmasController armas = new ArmasController(); - armas.init(); - armas.recperpage = 4000; - armas.addFilter("lote", lote);//("personcode", personCode); - armas.querydatabaseArmaVenta(" and t.pathDocumento like '%/cm:Crear/%'"); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - @SuppressWarnings("unchecked") -protected void querydatabaseArmaVenta(String crear) { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String sqlFinal = " t.pathDocumento is not null "+crear; - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - public void generarReporte(TarmArmas arma) { - String path = "armas/reports/certificadoArmaCrear"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda","repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - // Usuario logueado en la aplicacion - String nombreUsuario; - if (userDetail.getPk().getPersoncode() != null) { - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } else { - nombreUsuario = ""; - } - parameters.put("filtro", arma.getPk()); - parameters.put("usuario", nombreUsuario); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarfecha", fechaActualSB.toString()); - - String format = "pdf"; - String filename = "certificadoArma"; - - InputStream inputStream = this.reportController.jaspertoInputstream(path,parameters, format, filename, this.getLoginController()); - - String nombreArchivo = (filename!=null && !filename.isEmpty()) ? filename+"."+format : null; - String xPathLocation= getRutaDocumentoSolBase()+"/cm:"+arma.getEstado() + "/cm:CP-" + arma.getModifiedData().get("personcode") + "/cm:CA-" + arma.getCodigoarma() ; - if (nombreArchivo != null && xPathLocation != null && inputStream != null) { - setRecord(arma); - if (alfrescoController.uploadFile(inputStream, nombreArchivo, xPathLocation)) { - record.setPathDocumentocrear(xPathLocation + "/cm:" + nombreArchivo); - record.setGeneracertificado("SI"); - super.update(); - saveFile(); - } - } else { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_subiroarchivoregistrorecibo").concat("("+nombreArchivo+")")); - - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Armas/cm:Crear"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:D-").append(calendar.get(Calendar.DAY_OF_MONTH)); - return ruta.toString(); - } - - public TiposArmasExplosivosController getTiposArmasExplosivosController() { - return tiposArmasExplosivosController; - } - - - public void setTiposArmasExplosivosController( - TiposArmasExplosivosController tiposArmasExplosivosController) { - this.tiposArmasExplosivosController = tiposArmasExplosivosController; - } - - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - - public List getLtipoidentificacion() { - return ltipoidentificacion; - } - - - public void setLtipoidentificacion(List ltipoidentificacion) { - this.ltipoidentificacion = ltipoidentificacion; - } - - - public String getTipoDoc() { - return tipoDoc; - } - - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - - public String getNumDoc() { - return numDoc; - } - - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - - public String getNombreRazon() { - return nombreRazon; - } - - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - - public List getLestadoarma() { - return lestadoarma; - } - - - public void setLestadoarma(List lestadoarma) { - this.lestadoarma = lestadoarma; - } - - - public List getLmarca() { - return lmarca; - } - - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - - public List getLcolor() { - return lcolor; - } - - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - - - public List getLtipofabricacion() { - return ltipofabricacion; - } - - - public void setLtipofabricacion(List ltipofabricacion) { - this.ltipofabricacion = ltipofabricacion; - } - - - public List getLcountry() { - return lcountry; - } - - - public void setLcountry(List lcountry) { - this.lcountry = lcountry; - } - - - public List getLunidadmedidacantidad() { - return lunidadmedidacantidad; - } - - - public void setLunidadmedidacantidad( - List lunidadmedidacantidad) { - this.lunidadmedidacantidad = lunidadmedidacantidad; - } - - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - - public List getLunidadmedidapeso() { - return lunidadmedidapeso; - } - - - public void setLunidadmedidapeso(List lunidadmedidapeso) { - this.lunidadmedidapeso = lunidadmedidapeso; - } - - - public List getLprovincias() { - return lprovincias; - } - - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - - public List getLcantones() { - return lcantones; - } - - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - - public List getLparroquias() { - return lparroquias; - } - - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - - public List getLcities() { - return lcities; - } - - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - - - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getFiltroPersona() { - return filtroPersona; - } - - public void setFiltroPersona(String filtroPersona) { - this.filtroPersona = filtroPersona; - } - - protected void querydatabaseArmas() { - try { - DtoQuery dto = this.getDtoQuery(); - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - }else{ - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - } - - - - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - } - - if(this.getMfilelds().get("TIPOFABRICACION") != null){ - Filter filtroTipoFab = new Filter(); - String[] tipoFab = this.getMfilelds().get("TIPOFABRICACION").toString().split(","); - StringBuffer sqlTipoFab = new StringBuffer(" t.tipofabricacion IN ("); - for (int i = 0; i < tipoFab.length; i++) { - sqlTipoFab.append("'").append(tipoFab[i]).append("'"); - if(i < tipoFab.length - 1){ - sqlTipoFab.append(","); - } - } - sqlTipoFab.append(")"); - filtroTipoFab.setSql(sqlTipoFab.toString()); - dto.addFiltro(filtroTipoFab); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getNuevoPropietarioArma() { - return nuevoPropietarioArma; - } - - public void setNuevoPropietarioArma(TcustPersonDetail nuevoPropietarioArma) { - this.nuevoPropietarioArma = nuevoPropietarioArma; - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public List findArmaRecep(String csolicitud) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.querydatabaserecep(csolicitud); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - public void querydatabaserecep(String csolicitud) { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.put("csolicitud", csolicitud); - //QueryRule ArmasRecepcionQuery - request.put("queryalias", "ARMASRECEPLIST"); - - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void querydatabasesimple() { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - public void querydatabaseArmaDuplicada(TarmArmas armaObj) { - try { - DtoQuery dto = this.getDtoQuery(); - - Filter filtro = new Filter(); - filtro.setSql("t.marca='"+armaObj.getMarca()+"' and t.marcacodigo='"+armaObj.getMarcacodigo()+"' and upper(t.lote)='"+ armaObj.getLote().toUpperCase()+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmArmas findSimple(String carma) { - try { - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static Boolean isArmaDuplicada(TarmArmas armaObj) { - Boolean isDuplicada = Boolean.FALSE; - ArmasController cc; - try { - cc = new ArmasController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabaseArmaDuplicada(armaObj); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas armaTmp:cc.lrecord){ - TarmTipoArmaExplosivo tipoArmaExpTmp = TiposArmasExplosivosController.findarma(armaTmp.getCtipoarmaexplosivo()); - TgeneCatalogDetail claseTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getClasecodigo(), tipoArmaExpTmp.getClase()); - TgeneCatalogDetail tipoArmaTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getTipoarmaexplosivocodigo(), tipoArmaExpTmp.getTipoarmaexplosivo()); - TgeneCatalogDetail calibreTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getCalibrecodigo(), tipoArmaExpTmp.getCalibre()); - // Valido la clase, tipoarma y calibre solo para armas de fuego y armas no letales - if(claseTmp.getPk().getCatalog().equals("0010000001") || claseTmp.getPk().getCatalog().equals("0010000008")){ - if(armaObj.getModifiedData().get("clase")!=null && armaObj.getModifiedData().get("tipoarmaexplosivo")!=null){ - if(armaObj.getModifiedData().get("clase").toString().equalsIgnoreCase(claseTmp!=null?claseTmp.getDescription():"")&& - armaObj.getModifiedData().get("tipoarmaexplosivo").toString().equalsIgnoreCase(tipoArmaTmp!=null?tipoArmaTmp.getDescription():"")){ - if(armaObj.getModifiedData().get("calibre")!=null && calibreTmp!=null && armaObj.getModifiedData().get("calibre").toString().equalsIgnoreCase(calibreTmp.getDescription())){ - isDuplicada = Boolean.TRUE; - break; - } - } - }else{ - MessageHelper.setMessageError("CLASE Y/O TIPO DE ARMA EXPLOSIVO INCORRECTOS"); - } - } - } - - } - return isDuplicada; - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmArmas find(String carma) { - try { - - ArmasController cc = new ArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - /** - * Maneja la respuesta del Lov de Personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial = personaDetailSelecionada.getName(); - numeroDocumento = personaDetailSelecionada.getIdentification(); - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode =" - + personaDetailSelecionada.getPk().getPersoncode() + ")"; - - querydatabase(); - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArticuloRegistradoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArticuloRegistradoController.java.svn-base deleted file mode 100644 index f83f0d5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ArticuloRegistradoController.java.svn-base +++ /dev/null @@ -1,522 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de la funcionalidad de armas Registradas - * - * @author H.Y Sinfo - * - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ArticuloRegistradoController extends AbstractController{ - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo - * de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que escifica que se deba verificar que exista un arma explosivo - * válida - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - - private Date fechaActual; - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - private String descategoria; - private String usoActividad; - - - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - - - public ArticuloRegistradoController() throws Exception { - super(TarmArmas.class); - } - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - } - - - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - fechaActual = new Date(); - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode =" - + userDetail.getPk().getPersoncode() + ")"; - if(userDetail.getPk().getPersoncode()!=null){ - razonSocial = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - numeroDocumento=PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getIdentification(); - } - else{ - razonSocial = ""; - numeroDocumento=""; - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - @SuppressWarnings("unchecked") - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - Filter filtro = new Filter(); - String sql = "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado !='CDP'" - + " and (t.peso>0 or t.cantidad>0) " + filtroPersona;// - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - for (TarmArmas armasObj : lrecord) { - TarmRegistroArmas registroArmasObj = RegistroArmController - .findByCodigo(armasObj.getCregistro().toString()); - if (registroArmasObj != null && registroArmasObj.getPersoncode() != null) { - TcustPersonDetail propietarioObj = PersonDetailController - .find(registroArmasObj.getPersoncode().toString()); - if (propietarioObj.getIdentificationcatalog() != null - && propietarioObj.getIdentificationcatalogcode() != null) { - armasObj.getModifiedData() - .put("tipoDocumento", - CatalogDetailController - .findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), - propietarioObj.getIdentificationcatalogcode()) - .getDescription()); - } - armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); - armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); - if (armasObj.getModifiedData().get("cclase") != null) { - armasObj.getModifiedData().put("clase", - CatalogDetailController - .findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), - armasObj.getModifiedData().get("cclasecodigo").toString()) - .getDescription()); - } - if (armasObj.getModifiedData().get("ctipoarmaexplosivo") != null) { - armasObj.getModifiedData().put("tipoarmaexplosivo", - CatalogDetailController.findxCodigoCodcatalogo( - armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), - armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()) - .getDescription()); - } - if (armasObj.getModifiedData().get("ccalibre") != null) { - armasObj.getModifiedData().put("calibre", CatalogDetailController - .findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), - armasObj.getModifiedData().get("ccalibrecodigo").toString()) - .getDescription()); - } - - } - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca = new SubQuery("TgeneCatalogDetail", "description", "marca", - "i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor = new SubQuery("TgeneCatalogDetail", "description", "color", - "i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado = new SubQuery("TgeneCatalogDetail", "description", "estado", - "i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase = new SubQuery("TarmTipoArmaExplosivo", "clase", "cclase", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo = new SubQuery("TarmTipoArmaExplosivo", "clasecodigo", "cclasecodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud = new SubQuery("TarmTipoArmaExplosivo", "longitud", "clongitud", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo = new SubQuery("TarmTipoArmaExplosivo", "longitudcodigo", "clongitudcodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre = new SubQuery("TarmTipoArmaExplosivo", "calibre", "ccalibre", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo = new SubQuery("TarmTipoArmaExplosivo", "calibrecodigo", "ccalibrecodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivo", "ctipoarmaexplosivo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivocodigo", - "ctipoarmaexplosivocodigo", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapeso", "cunidadmedidapeso", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapesocodigo", - "cunidadmedidapesocodigo", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida = new SubQuery("TgeneCatalogDetail", "description", "unidadmedida", - "i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode = new SubQuery("TarmRegistroArmas", "personcode", "personcode", - "i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - - SubQuery subqueryFechaemiperm = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro)" - + " and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaemiperm); - SubQuery subqueryFechaexpperm = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) from TarmDocumentoHabilitante doc where doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaexpperm); - - return dto; - } - - /** - * Método que se ejecuta al abrir el LOV de visualizar item seleccionado - * - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - record.getModifiedData().put("provincia", - ProvinceController.getDescProvByCodigo(record.getCountrycode(), record.getProvincecode())); - record.getModifiedData().put("canton", CantonController.getDescCantonByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode())); - record.getModifiedData().put("ciudad", CityController.getDescCiudadByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode(), record.getCitycode())); - record.getModifiedData().put("parroquia", ParroquiaController.getDescParroquiaByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode(), record.getParroquiacode())); - if (record.getModifiedData().get("paisorigencode") != null) { - record.getModifiedData().put("paisorigen", CountryController - .findcountry(record.getModifiedData().get("paisorigencode").toString()).getDescription()); - } - if (record.getColor() != null) { - record.getModifiedData().put("colorD", CatalogDetailController - .findxCodigoCodcatalogo(record.getColor(), record.getColorcodigo()).getDescription()); - } - /* Aumentado */ - TarmDocumentoHabilitante documento = DocumentoHabilitanteController - .findxarma(record.getCodigoarma().toString()); - - TarmTramite tramite = TarmTramiteController.find(documento.getCtramite().toString()); - TgeneCatalogDetail catalogo = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), - tramite.getCategoriacodigo()); - descategoria = catalogo.getDescription(); - TgeneCatalogDetail uso = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), - tramite.getUsoactividadcodigo()); - usoActividad = uso.getDescription(); - } - - @Override - public void save() { - - } - public String getTipoDoc() { - return tipoDoc; - } - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - public String getNumDoc() { - return numDoc; - } - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - public String getNombreRazon() { - return nombreRazon; - } - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public String getCalibre() { - return calibre; - } - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public String getTipoarma() { - return tipoarma; - } - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getDescategoria() { - return descategoria; - } - - public void setDescategoria(String descategoria) { - this.descategoria = descategoria; - } - - public String getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - - - /** - * Metodo que genera el reporte para el registro seleccionado - * - * @param event - * @throws Exception - */ - public void imprimir() { - System.out.println("Imprimir un reporte en PDF.. Pendiente implementar"); - } - - public String retornaDatosArma(String codArma, int opc) { - String resp = ""; - try { - if (codArma!=null) { - TarmDocumentoHabilitante documento = DocumentoHabilitanteController.findxarma(codArma); - if (documento.getCtramite()!=null) { - TarmTramite tramite = TarmTramiteController.find(documento.getCtramite().toString()); - if (opc == 1) { - TgeneCatalogDetail catalogo = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), - tramite.getCategoriacodigo()); - resp = catalogo.getDescription(); - } - if (opc == 2) { - TgeneCatalogDetail uso = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), - tramite.getUsoactividadcodigo()); - resp = uso.getDescription(); - - } - } - - } - - } catch (Exception e) { - resp=""; - MessageHelper.setMessageError(e); - } - return resp; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AutorizacionDevolucionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AutorizacionDevolucionController.java.svn-base deleted file mode 100644 index fc22b97..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AutorizacionDevolucionController.java.svn-base +++ /dev/null @@ -1,522 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.general.mail.EnvioMail; -import com.fp.general.mail.dto.EnvioCorreoDTO; -import com.fp.general.mail.exception.EnvioMailException; -import com.fp.general.mail.factory.EnvioMailFactory; -/* -import com.fp.general.mail.EnvioMail; -import com.fp.general.mail.dto.EnvioCorreoDTO; -import com.fp.general.mail.exception.EnvioMailException; -import com.fp.general.mail.factory.EnvioMailFactory; -*/ -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AutorizacionDevolucionController extends AbstractController { - - TarmSolicitudTramite solicitudTramite; - Boolean actualizada=false; - /** - * - */ - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{tarmSolicitudArmasController}") - private TarmSolicitudArmasController tarmSolicitudArmasController; - - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - TgeneProvince provincia; - TgeneCanton canton; - TgeneCity ciudad; - TgeneParroquia parroquia; - String direccion; - - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - TarmCentroControl centroControl; - TcustPersonAddress direccionPersona; - String nombreInstitucion; - private Boolean btnEnviar; - /** - * Atributo que se recupera del flujo - */ - private String csolicitud; - - public AutorizacionDevolucionController() throws Exception { - super(TarmSolicitudTramite.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - try { - super.query(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para recuperar la variable del flujo - */ - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - csolicitud=super.getMfilters().get("csolicitud");//1 - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "AUTORIZACIONDEVOLUCIONCONTROLLER"; - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(csolicitud); - btnEnviar=Boolean.FALSE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - Filter fCSolicitud=new Filter("pk.csolicitud", csolicitud); - dto.addFiltro(fCSolicitud); - - //Aplicandole filtros a las armas - tarmSolicitudArmasController.setCsolicitud(csolicitud); - tarmSolicitudArmasController.setPorDevolucion("Y"); - tarmSolicitudArmasController.getMfilters().clear(); - tarmSolicitudArmasController.query(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Numero de tramite - if(solicitudTramite!=null){ - this.record.put("ntramite", solicitudTramite.getNumerotramite()); - } - - //Obteniendo la solicitud - TarmSolicitud solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(this.record.getPk().getCsolicitud()); - - //Obteniendo la direccion del cliente - String tipoDireccion=""; - if(solicitud!=null){ - detallesPersona= PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - - if(detallesPersona!=null){ - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - } - - if(solicitud!=null){ - //personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(solicitud.getPersoncode()), tipoDireccion); - String codigoMail=codigoParameter("CODIGO.MAIL");//3 - this.direccionPersona=personAddressController.findByPersonCode(solicitud.getPersoncode().toString(),codigoMail); - - provincia = personAddressController.getLprovinces()==null || personAddressController.getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - parroquia = personAddressController.getLparroquias()==null || personAddressController.getLparroquias().isEmpty()?null:personAddressController.getLparroquias().get(0); - direccion= personAddressController.getRecord().getAddress(); - } - } - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el centro de control - centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() - && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ - - TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - this.nombreInstitucion=catalogoInstitucion.getDescription(); - } - - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public String codigoParameter(String codigo){ - TgeneParameters parameter= ParametersController.find(codigo, "1"); - return parameter.getTextvalue(); - } - - @Override - public void save() { - try { - record.setEstadotramite("APB"); - update(); - - //Modificando la direccion de las armas con del cliente y el estado del arma - this.armasController.getLrecord().clear(); - this.armasController.setLrecord(this.tarmSolicitudArmasController.getlArmas()); - for (TarmArmas arma : this.armasController.getLrecord()) { - if(provincia!=null){ - arma.setProvincecode(provincia.getPk().getProvincecode()); - } - - if(canton!=null){ - arma.setCantoncode(canton.getPk().getCantoncode()); - } - - if(ciudad!=null){ - arma.setCitycode(ciudad.getPk().getCitycode()); - } - - if(parroquia!=null){ - arma.setParroquiacode(parroquia.getPk().getParroquiacode()); - } - - arma.setDireccion(direccion); - arma.setEstado("DEV"); - - this.armasController.update(arma); - } - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); - - //Modificando el estado y direccion de las armas - this.armasController.setLrecord(this.tarmSolicitudArmasController.getlArmas()); - - DtoSave dtosaveArmas = this.armasController.getDtoSave(true); - msave.put(this.armasController.getBeanalias(), dtosaveArmas); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.actualizada=true; - btnEnviar=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que envia un mail de notificación - */ - public void enviarNotificacion(){ - try { - if(direccionPersona==null || direccionPersona.getAddress()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccioncorreo")); - return; - } - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - - String asunto = MsgControlArmas.getProperty("lbl_asuntoNotificarFecha"); - SimpleDateFormat format=new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - String textoFecha=" "+format.format(new Date())+" "; - if(solicitudTramite.getFentregaarmas()!=null){ - textoFecha=sdf.format(solicitudTramite.getFentregaarmas()); - } - - String cuerpo = MessageFormat.format(MsgControlArmas.getProperty("cuerpo.mensaje.envio.correo"), detallesPersona.getName(), - solicitudTramite.getNumerotramite().toString(), textoFecha, usuario.getName(),this.nombreInstitucion); - - EnvioCorreoDTO envioCorreo = new EnvioCorreoDTO(); - envioCorreo.setCorreoDesde(MsgControlArmas.getProperty("correoDesde")); - envioCorreo.setCorreoPara(new String[]{this.direccionPersona.getAddress()}); - envioCorreo.setAsunto(asunto); - envioCorreo.setMensajeHTML(cuerpo); - EnvioMail envioMail = EnvioMailFactory.getInstancia(); - envioMail.envioMail(envioCorreo); - actualizada=false; - } catch(EnvioMailException e){ - MessageHelper.setMessageError(new Throwable("Se produjo un error al enviar el correo")); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnEnviar=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene los detalles de las armas segun el catalogo - * @param catalogo - * @param catalogoCode - * @return - */ - public String aspectoArmaCatalogo(String catalogo, String catalogoCode){ - if(catalogo!=null && catalogoCode!=null && !catalogo.isEmpty() && !catalogoCode.isEmpty()){ - return CatalogDetailController.findxCodigoCodcatalogo(catalogo, catalogoCode).getDescription(); - } - return null; - } - - /** - * Devuelve una descripcion de catalogo segun un tipo de aspecto - * @param arma - * @param tipoAspecto - * @return - */ - public String aspectoArmaExplosivoCatalogo(TarmArmas arma,String tipoAspecto){ - String aspecto=""; - - try { - TarmTipoArmaExplosivo explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - if(explosivo!=null){ - if(tipoAspecto.equalsIgnoreCase("clase") && explosivo.getClase()!=null && !explosivo.getClase().isEmpty() - && explosivo.getClasecodigo()!=null && !explosivo.getClasecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getClase(), explosivo.getClasecodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("tipo") && explosivo.getTipoarmaexplosivo()!=null && !explosivo.getTipoarmaexplosivo().isEmpty() - && explosivo.getTipoarmaexplosivocodigo()!=null && !explosivo.getTipoarmaexplosivocodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getTipoarmaexplosivo(), explosivo.getTipoarmaexplosivocodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("calibre") && explosivo.getCalibre()!=null && !explosivo.getCalibre().isEmpty() - && explosivo.getCalibrecodigo()!=null && !explosivo.getCalibrecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getCalibre(), explosivo.getCalibrecodigo()).getDescription(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - return aspecto; - } - - public String aspectoExplosivoArma(TarmSolicitudArmas solicitudArma,String aspecto){ - String descripcionAspecto=""; - try { - TarmArmas arma=ArmasController.findPorCodigo(solicitudArma.getPk().getCarma()); - - if(arma!=null){ - return this.aspectoArmaExplosivoCatalogo(arma,aspecto); - } - - } catch (Exception e) { - MessageHelper.setMessageWarn(e.getMessage()); - } - - return descripcionAspecto; - } - - public TarmSolicitudArmasController getTarmSolicitudArmasController() { - return tarmSolicitudArmasController; - } - - public void setTarmSolicitudArmasController( - TarmSolicitudArmasController tarmSolicitudArmasController) { - this.tarmSolicitudArmasController = tarmSolicitudArmasController; - } - - public Boolean getActualizada() { - return actualizada; - } - - public void setActualizada(Boolean actualizada) { - this.actualizada = actualizada; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public ArmasController getArmasController() { - return armasController; - } - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public TgeneProvince getProvincia() { - return provincia; - } - - public void setProvincia(TgeneProvince provincia) { - this.provincia = provincia; - } - - public TgeneCanton getCanton() { - return canton; - } - - public void setCanton(TgeneCanton canton) { - this.canton = canton; - } - - public TgeneCity getCiudad() { - return ciudad; - } - - public void setCiudad(TgeneCity ciudad) { - this.ciudad = ciudad; - } - - public TgeneParroquia getParroquia() { - return parroquia; - } - - public void setParroquia(TgeneParroquia parroquia) { - this.parroquia = parroquia; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public Boolean getBtnEnviar() { - return btnEnviar; - } - - public void setBtnEnviar(Boolean btnEnviar) { - this.btnEnviar = btnEnviar; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AuxArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AuxArmasController.java.svn-base deleted file mode 100644 index 83537f6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/AuxArmasController.java.svn-base +++ /dev/null @@ -1,385 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Controlador principal de armas - * @author dcruz - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AuxArmasController extends AbstractController { - - - public AuxArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. -// record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - protected void querydatabaseP(String carma) { - try { - DtoQuery dto = this.getDtoQuery(true); - dto.setOrderby("pk"); - //cc.addField("codigoArma", cArma); - String sqlActual = " t.codigoarma =(select p.codigoarma from TarmArmas p where p.pk = '"+carma+"')" - + " and t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where ta.codigoarma=t.codigoarma)" - + " and t.estado !='DEST' " - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlActual); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - - @Override - public void save() { - } - - @Override - public void update() throws Exception { - } - - public void updateAutorizacion()throws Exception { - super.update(); - } - - - - @Override - public void create() throws Exception { - } - - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findByPK(String cArma) { - try { - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.querydatabaseP(cArma); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getLongitud()!=null && tarmTipoArmaExplosivo.getLongitudcodigo()!=null){ - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - if(tarmTipoArmaExplosivo.getCalibre()!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null){ - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - } - item.modifiedData().put("unidadMedidaCantidad",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getUnidadmedidapeso(), tarmTipoArmaExplosivo.getUnidadmedidapesocodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para obtener el listado de las armas por la serie/lote - * @param serieLote - * @return - */ - public static List findxSerieLote(String serieLote) { - try { - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("lote", serieLote); - cc.querydatabaseFechaMax(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - protected void querydatabaseFechaMax() { - try { - DtoQuery dto = this.getDtoQuery(true); - dto.setOrderby("pk"); - String codigoEstadoIncautada=codigos("CODIGO.INCAUTADA"); - String codigoEstadoDecomisada=codigos("CODIGO.DECOMISADA"); - String codigoEstadoVendida=codigos("CODIGO.VENDIDA"); - String codigoEstadoMatPrima=codigos("CODIGO.MATERIAPRIMA"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"//and t.cregistro=ta.cregistro para el manejo de los explosivos - + " and t.estado !='DEST' and t.estado !='CDP' and t.estado !='"+codigoEstadoIncautada+"' and t.estado !='"+codigoEstadoDecomisada+"' and t.estado !='"+codigoEstadoVendida+"' and t.estado !='"+codigoEstadoMatPrima+"' "; - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static List findListXCodigoArma(String armaCode) { - try { - AuxArmasController cc = new AuxArmasController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querybatabasearmas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - @SuppressWarnings("unchecked") - protected void querybatabasearmas(){ - try { - DtoQuery dto = this.getDtoQuery(true); - SubQuery subqueryPersonCode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subqueryPersonCode); - - dto.setOrderby("pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/BodegaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/BodegaController.java.svn-base deleted file mode 100644 index 95156e5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/BodegaController.java.svn-base +++ /dev/null @@ -1,116 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.CatalogLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmBodega; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmTransaccionArmaBodega. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class BodegaController extends AbstractController { - - public BodegaController() throws Exception { - super(TarmBodega.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "BODEGA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CabRepDestruirArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CabRepDestruirArmasController.java.svn-base deleted file mode 100644 index 167fc36..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CabRepDestruirArmasController.java.svn-base +++ /dev/null @@ -1,174 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; - -/** - * Clase controladora del bean TarmCabRepDestruirArmas - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CabRepDestruirArmasController extends AbstractController { - - - - - public CabRepDestruirArmasController() throws Exception { - super(TarmCabRepDestruirArmas.class); - } - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Ingreso de Datos Quemados - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - public void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - // record = new TarmSolicitudImportacion(); - this.beanalias = "CABREPORTEDESTRUIRARMAS"; -// this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que busca todas las cabeceras de reporte de destruccion de armas generadas - * - */ - public static List find() { - try { - CabRepDestruirArmasController cc = new CabRepDestruirArmasController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo que busca una cabecera de reporte de destruccion de armas mediante el PK - * - */ - public static TarmCabRepDestruirArmas findByCodigo(String cCabReporte) { - try { - CabRepDestruirArmasController cc = new CabRepDestruirArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cCabReporte); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo para actualizar un bean en el core - * - */ - public void update(TarmCabRepDestruirArmas bean) throws Exception { - record=bean; - update(); - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CargarDepositoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CargarDepositoController.java.svn-base deleted file mode 100644 index 0725305..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CargarDepositoController.java.svn-base +++ /dev/null @@ -1,667 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora para el ingreso de comprobante de deposito - * - * @author CHRISTIAN PAZMINO - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CargarDepositoController extends AbstractController { - /** - * Variable que contiene el numero de tramite con el que inicia el flujo - */ - private String numTramite; - /** - * Variable que contiene el codigo de solicitud pasado en el flujo - */ - private String csolicitud; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del tramite) - */ - private TgeneCatalogDetail nombreTramite; - /** - * Variable del tipo TgeneCatalogDetail(catalogo de la categoria) - */ - private TgeneCatalogDetail nombreCategoria; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del uso actividad del tramite) - */ - private TgeneCatalogDetail nombreUsoActividad; - /** - * Bandera de tipo booleano para indicar si se habilita el boton de completar tarea - */ - private Boolean isEnableCompletarTarea= Boolean.FALSE; - /** - * Propiedad que premite controlar operaciones de cargar archivos al Alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Variable que contiene los datos de la solicitud actual - */ - private TarmSolicitud solicitud; - /** - * Variable que nos permite cargar el comprobante de deposito al Alfresco - */ - private UploadedFile uploadedFile; - /** - * Variable que nos permite cargar la resolucion al Alfresco - */ - private UploadedFile uploadedFileResolucion; - /** - * Variable que indica si el usuario esta negado para continuear el tramite, su tramite pasa a estado anulado - */ - private Boolean isDenied; - /** - * Variable auxiliar usada para diferenciar cuando se presenta o no el mensaje de validacion de fecha expiracion solicitud - */ - private Boolean isOnlyMsj; - /** - * Variable que indica si el numero de comprobante ingresado es correcto - */ - private Boolean isTrueNComprobante; - /** - * Dias laborables permitidos para completar el tramite - */ - private Integer diasLaborablesPermitidos; - /** - * Bandera de tipo booleano para indicar si se ha grabado el reporte generado - * */ - private Boolean isEnableGrabar; - /** - * codigo de la provincia del usuario logeado - */ - private String cprovincia; - - private Boolean requiereNoSolAucpBln; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - public CargarDepositoController() throws Exception { - super(TarmSolicitudTramite.class); - } - - - @PostConstruct - private void postconstruct() { -// super.startQuery(); -// csolicitud = this.getMfilters().get("csolicitud"); -// this.getMfilters().clear(); - - init(); - requiereNoSolAucpBln=Boolean.FALSE; - } - - public void consultarSolicitud() throws Exception{ - if(numTramite!=null){ - this.record = SolicitudTramiteController.findByNumTramite(numTramite); - if(record != null && record.getPk().getCsolicitud()!=null){ - csolicitud = record.getPk().getCsolicitud(); - // csolicitud=csolicitud.replace("TRA","SOL"); - - try { - if(record!=null){ - solicitud = SolicitudArmasController.findByCSolicitud(csolicitud); - if(solicitud!=null && solicitud.getCtramite()!=null){ - TarmTramite tramite = IngresoDatosTipoTramite.find(solicitud.getCtramite().toString()); - if(tramite!=null){ - //Tramite - nombreTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - nombreCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - nombreUsoActividad= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - obtenerCentroControl(solicitud); - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - - - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados")); - } - - Date fechaLimiteDate = TgeneNotAccountingDayController.diasLaborablesPreviosAUnaFecha(new Date(), diasLaborablesPermitidos); - Calendar fechaLimite = Calendar.getInstance(); - fechaLimite.setTime(fechaLimiteDate); - fechaLimite.set(Calendar.HOUR_OF_DAY, 0); - fechaLimite.set(Calendar.MINUTE, 0); - fechaLimite.set(Calendar.SECOND, 0); - - Calendar fechaSolicitud = Calendar.getInstance(); - fechaSolicitud.setTime(solicitud.getFverificarequisitos()); - fechaSolicitud.set(Calendar.SECOND, 1); - - if(fechaSolicitud.compareTo(fechaLimite)<0){ - isOnlyMsj = true; - record.setEstadotramite("ANU"); - record.setEstadotramitecodigo("ESTADOSOLICITUD"); - super.update(); - // this.save(); - RequestContext.getCurrentInstance().update("messages"); - } - else{ - isDenied = false; - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados")); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 500; - this.beanalias = "CARGARDEPOSITO"; - isDenied = true; - diasLaborablesPermitidos = Integer.parseInt(ParametersController.find("DIASDEPOSITO", "1").getNumbervalue().toString()); - isTrueNComprobante = Boolean.TRUE; - isOnlyMsj = false; - isEnableGrabar = Boolean.TRUE; - isEnableCompletarTarea = Boolean.FALSE; - obtenerCentroControlSolicitante(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Metodo que devuelve el centro de control al que pertenece el cliente dueno de la solicitud - * @throws Exception - */ - private void obtenerCentroControlSolicitante() throws Exception { - TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal")); - return; - } - - } - - /** - * Accion que reinicia todas las variables de la pagina - */ - public void cancelar(){ - init(); - } - - /** - * Metodo que permite grabar el formulario junto al comprobante de deposito en el Alfresco - * */ - @Override - public void save() { - try { - String xPathLocation= getRutaDocumentoSolBase() + "/cm:" + solicitud.getNumerosolicitud() + "/cm:" + "Deposito"; - if(record.getValorverificacion() != null && record.getValorverificacion().doubleValue()>0){ - if(isTrueNComprobante){ - if(!record.getFechacomprobante().after(new Date())){ - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = "CMPRBNT-"+solicitud.getNumerosolicitud()+"."+extencionArchivo; - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - record.setXpathcomprobante(xPathLocation + "/cm:" + nombreArchivo); - //validamos si adjunta la resolucion - if(uploadedFileResolucion != null && uploadedFileResolucion.getFileName()!=null){ - String xPathLocationResolucion= getRutaDocumentoSolBase() + "/cm:" + solicitud.getNumerosolicitud() + "/cm:" + "Resolucion"; - String extencionArchivoResolucion=getExtension(uploadedFileResolucion.getFileName()); - String nombreArchivoResolucion = "RESOLUCION-"+solicitud.getNumerosolicitud()+"."+extencionArchivoResolucion; - if(alfrescoController.uploadFile(uploadedFileResolucion.getInputstream(),nombreArchivoResolucion, xPathLocationResolucion)){ - record.setXpathresolucion(xPathLocationResolucion + "/cm:" + nombreArchivoResolucion); - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_adjuntar_resolucion")); - return; - } - } - super.update(); - DtoSave dtosave = super.getDtoSave(); - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - isDenied = true; - isEnableCompletarTarea = Boolean.TRUE; - isEnableGrabar = Boolean.FALSE; - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } else { - MessageHelper.setMessageError(resp); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_tramiteSinDatosAsociados")); - } - } - else{ -// MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_archivo")); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseComprobanteDeposito")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaDepositoMayorFechaActual")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_comprobanteDepositoUsado")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_valorDepositoNegativoCero")); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Metodo que retorna la extencion del comprobante de deposito que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Metodo de consulta no utilizado pero sobrescrito por requisito de herencia - */ - @Override - protected void querydatabase() { - try { - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void consultaTramites(){ - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmSolicitud o where o.pk=t.pk.csolicitud) and " - + " i.pk.catalogcode=(select o.estadocodigo from TarmSolicitud o where o.pk=t.pk.csolicitud)"); - SubQuery subqueryEstadoTramite= new SubQuery("TgeneCatalogDetail","description","estadotramite","i.pk.catalog= t.estadotramite and" - + " i.pk.catalogcode=t.estadotramitecodigo"); - - dto.addSubQuery(subqueryEstadoTramite); - SubQuery subquerysolicitud= new SubQuery("TarmSolicitud","numerosolicitud","solicitud","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subquerysolicitud); - dto.setOrderby("t.pk"); - - TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - Filter filtro= new Filter(); - filtro.setSql("(numerocomprobante is null OR inicioFlujo is null) and estadotramite='REG' and valorapagar>0 and " - + " csolicitud in(select o.pk from TarmSolicitud o where o.personcode ='"+tsafeUserDetailUsuario.getPk().getPersoncode()+"' and o.estado ='APB')"); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void solicitudSeleccionada(TarmSolicitudTramite tarmSolicitudTramite){ - try { - numTramite=tarmSolicitudTramite.getNumerotramite(); - consultarSolicitud(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(solicitud.getFregistro()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Metodo para validar el comprobante de deposito/ - */ - public void validarComprobanteDeposito(){ - List usandoComprobanteList = SolicitudTramiteController.findByNumeroComprobante(this.record.getNumerocomprobante()); - if(usandoComprobanteList!=null && usandoComprobanteList.size()>0){ - isTrueNComprobante = Boolean.FALSE; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_comprobanteDepositoUsado")); - } - else{ - isTrueNComprobante = Boolean.TRUE; - } - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUploadResolucion(FileUploadEvent event){ - uploadedFileResolucion = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void iniciarFlujo() { - - try { - TarmSolicitud tarmSolicitud=SolicitudController.findSolicitudxcodsolicitud(record.getPk().getCsolicitud()); - if(tarmSolicitud==null || tarmSolicitud.getModifiedData()==null || tarmSolicitud.getModifiedData().get("provincecode")==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - cprovincia=tarmSolicitud.getModifiedData().get("provincecode").toString(); - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("isnew", "Y"); - request.modifiedData().put("csolicitud", record.getPk().getCsolicitud()); - request.modifiedData().put("numerotransaccion", record.getPk().getCtramite()); - request.modifiedData().put("numerosolicitud", solicitud.getNumerosolicitud()); - request.modifiedData().put("cprovincia", cprovincia); - request.setLogsolicitude(solicitud.getNumerosolicitud()); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " No SOLICITUD: " +solicitud.getNumerosolicitud()); - isEnableCompletarTarea = Boolean.FALSE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para validar que el valor del comprobante de deposito sea mayor a cero - */ - public void valorMayorACero(){ - if(record.getValorverificacion().doubleValue()<=0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_valorDepositoNegativoCero")); - } - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TgeneCatalogDetail getNombreTramite() { - return nombreTramite; - } - - public void setNombreTramite(TgeneCatalogDetail nombreTramite) { - this.nombreTramite = nombreTramite; - } - - public TgeneCatalogDetail getNombreCategoria() { - return nombreCategoria; - } - - public void setNombreCategoria(TgeneCatalogDetail nombreCategoria) { - this.nombreCategoria = nombreCategoria; - } - - public TgeneCatalogDetail getNombreUsoActividad() { - return nombreUsoActividad; - } - - public void setNombreUsoActividad(TgeneCatalogDetail nombreUsoActividad) { - this.nombreUsoActividad = nombreUsoActividad; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - - this.uploadedFile = uploadedFile; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public Boolean getIsOnlyMsj() { - return isOnlyMsj; - } - - public void setIsOnlyMsj(Boolean isOnlyMsj) { - this.isOnlyMsj = isOnlyMsj; - } - - public Boolean getIsTrueNComprobante() { - return isTrueNComprobante; - } - - public void setIsTrueNComprobante(Boolean isTrueNComprobante) { - this.isTrueNComprobante = isTrueNComprobante; - } - - public Boolean getIsEnableCompletarTarea() { - return isEnableCompletarTarea; - } - - public void setIsEnableCompletarTarea(Boolean isEnableCompletarTarea) { - this.isEnableCompletarTarea = isEnableCompletarTarea; - } - - public String getNumTramite() { - return numTramite; - } - - public void setNumTramite(String numTramite) { - this.numTramite = numTramite; - } - - - public Boolean getIsEnableGrabar() { - return isEnableGrabar; - } - - - public void setIsEnableGrabar(Boolean isEnableGrabar) { - this.isEnableGrabar = isEnableGrabar; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - - - public UploadedFile getUploadedFileResolucion() { - return uploadedFileResolucion; - } - - - public void setUploadedFileResolucion(UploadedFile uploadedFileResolucion) { - this.uploadedFileResolucion = uploadedFileResolucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoArmasController.java.svn-base deleted file mode 100644 index 3e186e7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoArmasController.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pentaho.PentahoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmCertificadoArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; - -/** - * Clase controladora del bean TarmCertificadoArmas. - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CertificadoArmasController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CertificadoArmasController() throws Exception { - super(TarmCertificadoArmas.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CERTIFICADOARMAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void update(TarmCertificadoArmas bean) throws Exception { - this.setRecord(bean); - super.update(); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.netbeans-base deleted file mode 100644 index 8cc0e3d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.netbeans-base +++ /dev/null @@ -1,836 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.math.BigDecimal; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; -import javax.servlet.http.HttpSession; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.menu.MenuController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmasKey; -import com.fp.persistence.parmas.soli.TarmCertificadoFiscalia; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador que permite genereal los certificados de Fiscalia - * @author Manuel Cepeda - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CertificadoFiscaliaController extends AbstractController { - - private String razonSocial; - private String numeroDocumento; - private String lote; - private boolean panelPerson; - private boolean panelSinDatosPerson; - private boolean panelSinDatosArma; - private String filtroPersona; - private List listaArmas; - private List listaArmasBySerie; - - @ManagedProperty(value = "#{personLovController}") - private PersonLovController personLovController; - - @ManagedProperty(value = "#{certificadoArmasController}") - private CertificadoArmasController certificadoArmasController; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private String sessionID; - private TcustPersonDetail tcustPersonDetail; - private String nroSolicitud; - private TarmCentroControl centroControl; - private TarmCertificadoFiscalia certificadoFiscalia; - @ManagedProperty(value = "#{solicitudCertificadoController}") - private SolicitudCertificadoController solicitudCertificadoController; - /** - * Bandera de tipo booleano para indicar si se habilita el boton de completar tarea - */ - private Boolean esTareaCompleta = Boolean.FALSE; - - - /** - * Clase controladora de funcionalidad del Alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - - - public CertificadoFiscaliaController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - try { - super.startQuery(); - nroSolicitud = this.getMfilters().get("csolicitud"); - this.getMfilters().clear(); - this.getPersonLovController().getMfilters().clear(); - this.getCertificadoArmasController().getMfilters().clear(); - this.getSolicitudCertificadoController().getMfilters().clear(); - - this.init(); - panelPerson = true; - panelSinDatosPerson = false; - panelSinDatosArma = false; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - panelSinDatosPerson = false; - panelSinDatosArma = false; - - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - - filtroPersona = ""; - certificadoFiscalia = SolicitudCertificadoController.findPorSolicitud(nroSolicitud.trim()); - HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); - sessionID = session.getId(); -// recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - centroControl=Utilidades.obtenerCentroControl(); - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - if(tsafeUserDetail!=null && tsafeUserDetail.getPk().getPersoncode()!=null){ - tcustPersonDetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - super.next(); - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - - return dto; - } - - @Override - public void save() { - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(esTareaCompleta){ - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", nroSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - esTareaCompleta=Boolean.TRUE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Genera el certificado de armas para la Fiscalia y sube al Alfresco el pdf - */ - public void generarReporte() { - if(deshabilitarPantalla){ - return; - } - - String path = "armas/reports/certificadosArmas"; - Boolean aux=Boolean.FALSE; - java.util.Date today = new java.util.Date(); - java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); - Random aleatorio = new Random(); - int ticketGenerado = aleatorio.nextInt(); - int i=0; - - for(TarmArmas armasel:lrecord){ - i++; - if(armasel.getModifiedData().get("seleccionado")!=null && armasel.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - aux=Boolean.TRUE; - guardarCertificadoReporte(armasel, i, ticketGenerado, fechaReporte); - } - } - if(!aux){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nohaseleccionadoarmas")); - return; - } - certificadoArmasController.save(); - try { - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("codResponsable", centroControl.getPersoncode()); - parameters.put("gradoresponsable","" ); //centroControl.getModifiedData().get("desgrado") - parameters.put("nombreresponsable",centroControl.getModifiedData().get("desgrado")+" "+ centroControl.getModifiedData().get("nombre")); - parameters.put("centrocontrol", String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - parameters.put("sessionID",sessionID); - parameters.put("nroSolicitud",certificadoFiscalia.getNroficiofiscalia()); -// parameters.put("fechaReporte",fechaReporte); - - parameters.put("ticket",ticketGenerado); - parameters.put("personCodeLogin",(tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode():null); - if(tcustPersonDetail!=null){ - parameters.put("usuario", tcustPersonDetail.getName()); - } - parameters.put("unidadmilitar", MsgControlArmas.getProperty("msg_inf_digitadordel")+" "+String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - String format="pdf"; - String filename="Certificado"; - - InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - String xPathLocation= getRutaDocumentoCertificadoBase() + "/cm:" + this.nroSolicitud; - String nombreArchivo = "CERT" + nroSolicitud + ".pdf"; - alfrescoController.uploadFile(file, nombreArchivo, xPathLocation); - - //actualizar solicitudCertificadoController - solicitudCertificadoController.getMfilters().put("nrsolicitud", nroSolicitud); - solicitudCertificadoController.querydatabase(); - TarmCertificadoFiscalia tarmCertificadoFiscalia = solicitudCertificadoController.getRecord(); - tarmCertificadoFiscalia.setIsnew(false); - tarmCertificadoFiscalia.setXpathSolicitudArma(xPathLocation+"/cm:"+nombreArchivo); - - solicitudCertificadoController.getLrecord().add(tarmCertificadoFiscalia); - solicitudCertificadoController.update(); - solicitudCertificadoController.save(); - deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo("Se genero el certificado exitosamente."); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoCertificadoBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new java.util.Date()); - StringBuilder ruta = new StringBuilder("cm:Certificados"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Guarda los datos de las Armas solicitadas por el Fiscal a la bdd - * @param armaObj - * @param orden - * @param ticket - * @param fechaReporte - */ - private void guardarCertificadoReporte(TarmArmas armaObj,int orden,int ticket, java.sql.Timestamp fechaReporte){ - TarmCertificadoArmas certificadoArmasObj = new TarmCertificadoArmas(); - TarmCertificadoArmasKey pk = new TarmCertificadoArmasKey(); - certificadoArmasObj.setPk(pk); - try { - certificadoArmasObj.getPk().setFechareporte(fechaReporte); - certificadoArmasObj.getPk().setSessionid(sessionID); - certificadoArmasObj.getPk().setOrden(orden); - certificadoArmasObj.setIdentification(armaObj.getModifiedData().get("noDocumento")!=null?armaObj.getModifiedData().get("noDocumento").toString():null); - certificadoArmasObj.setName(armaObj.getModifiedData().get("propietario")!=null?armaObj.getModifiedData().get("propietario").toString():null); - certificadoArmasObj.setRegisterdate(armaObj.getFecharegistro()); - certificadoArmasObj.setClase(armaObj.getModifiedData().get("clase")!=null?armaObj.getModifiedData().get("clase").toString():null); - certificadoArmasObj.setTipoarmaexplosivo(armaObj.getModifiedData().get("tipoarmaexplosivo")!=null?armaObj.getModifiedData().get("tipoarmaexplosivo").toString():null); - certificadoArmasObj.setMarca(armaObj.getModifiedData().get("marca")!=null?armaObj.getModifiedData().get("marca").toString():null); - certificadoArmasObj.setCalibre(armaObj.getModifiedData().get("calibre")!=null?armaObj.getModifiedData().get("calibre").toString():null); - certificadoArmasObj.setLote(armaObj.getLote()); - certificadoArmasObj.setPaisfabricacion(armaObj.getModifiedData().get("paisorigen")!=null?armaObj.getModifiedData().get("paisorigen").toString():null); - certificadoArmasObj.setEstado(armaObj.getModifiedData().get("estado")!=null?armaObj.getModifiedData().get("estado").toString():null); - certificadoArmasObj.setUsercode((tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode().toString():null); - certificadoArmasObj.setTicket(ticket); - certificadoArmasObj.setPermiso((armaObj.getModifiedData().get("permiso") != null) ? armaObj.getModifiedData().get("permiso").toString() : "");//armaObj.getModifiedData().get("permiso").toString()); - certificadoArmasObj.setFechaemison((Date) armaObj.getModifiedData().get("fechaemision")); - certificadoArmasObj.setFechaexpiracion((Date)armaObj.getModifiedData().get("fechaexpiracion")); - certificadoArmasObj.setIsnew(true); - certificadoArmasController.update(certificadoArmasObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Selecciona el objeto TcustPersonDetail de la tabla actual de la pagina - * @param person - */ - public void setPerson(TcustPersonDetail person) { - if(person != null){ - panelPerson = false; - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode ="+person.getPk().getPersoncode()+")"; - querydatabaseArma(); - setRazonSocial(person.getName()); - setNumeroDocumento(person.getIdentification()); - } - } - - /** - * Permite consultar en la tabla armas mediante el codigo de la persona - */ - protected void querydatabaseArma() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0) " + filtroPersona;// - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - listaArmas = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - listaArmas= (List) resp.get(this.beanalias); - actualizarDatos(listaArmas); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Permite actualizar los datos de la Entidad TarmAmas - * @param listaArmas - */ - private void actualizarDatos(List listaArmas){ - for(TarmArmas armasObj:listaArmas){ - TarmRegistroArmas registroArmasObj = RegistroArmController.findByCodigo(armasObj.getCregistro().toString()); - if(registroArmasObj!=null && registroArmasObj.getPersoncode()!=null){ - TcustPersonDetail propietarioObj = PersonDetailController.find(registroArmasObj.getPersoncode().toString()); - if(propietarioObj.getIdentificationcatalog()!=null && propietarioObj.getIdentificationcatalogcode()!=null){ - armasObj.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), propietarioObj.getIdentificationcatalogcode()).getDescription()); - } - armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); - armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); - if(armasObj.getModifiedData().get("cclase")!=null){ - armasObj.getModifiedData().put("clase", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), armasObj.getModifiedData().get("cclasecodigo").toString()).getDescription()); - } - if(armasObj.getModifiedData().get("ctipoarmaexplosivo")!=null){ - armasObj.getModifiedData().put("tipoarmaexplosivo", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()).getDescription()); - } - if(armasObj.getModifiedData().get("ccalibre")!=null){ - armasObj.getModifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), armasObj.getModifiedData().get("ccalibrecodigo").toString()).getDescription()); - } - - TarmDocumentoHabilitante documentoHabilitante = DocumentoHabilitanteController.findxarma(armasObj.getPk()); - if(documentoHabilitante != null ){ - armasObj.getModifiedData().put("fechaemision", documentoHabilitante.getFechaemision()); - armasObj.getModifiedData().put("fechaexpiracion", documentoHabilitante.getFechaexpiracion()); - TarmTramite tarmTramite = TarmTramiteController.find(documentoHabilitante.getCtramite().toString()); - if(tarmTramite != null){ - armasObj.getModifiedData().put("permiso", tarmTramite.getModifiedData().get("usoactividad")); - } - } - - //cargarPropietario - armasObj.getModifiedData().put("ordenarma",armasObj.getPk()); - if(armasObj.getModifiedData().get("personcode")!=null){ - TcustPersonDetail personaDetalle=PersonDetailController.find(armasObj.getModifiedData().get("personcode").toString()); - armasObj.getModifiedData().put("propietario", personaDetalle.getName()); - armasObj.getModifiedData().put("noDocumento", personaDetalle.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", personaDetalle.getName()); - } - } - } - } - - /** - * Permite consultar en la tabla armas mediante el lote/serie de armas - */ - public void querydatabaseSerie() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroEstados = ""; - String sqlFiltroCodigosArmas = "";//1 - - dto.setOrderby("pk"); - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and (t.peso>0 or t.cantidad>0)";// and (t.cregistro=ta.cregistro) para el manejo de los explosivos - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroEstados, sqlFiltroCodigosArmas, sqlActual); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - listaArmasBySerie = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - listaArmasBySerie = (List) resp.get(this.beanalias); - actualizarDatos(listaArmasBySerie); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que agrega dinamicamente los filtros a una consulta SQL - * @param sqlFiltros - * @return String - */ - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas tarmArmas : listaArmas) { - tarmArmas.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Permite actualizar el campo seleccionado en la entidad tarmArmas - */ - public void actualizarDatosArma(){ - for(TarmArmas tarmArmas : listaArmas){ - if(tarmArmas.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - this.getLrecord().add(tarmArmas); - } - } - panelPerson = true; - personLovController.init(); - personLovController.getMfilters().clear(); - getMfilters().clear(); - } - - /** - * Permite actualizar el campo seleccionado en la entidad tarmArmas - */ - public void actualizarDatosArmaSerie(){ - for(TarmArmas tarmArmas : listaArmasBySerie){ - if(tarmArmas.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - this.getLrecord().add(tarmArmas); - } - } - panelPerson = true; - setPanelSinDatosPerson(false); - listaArmasBySerie = new ArrayList<>(); - this.getMfilters().clear(); - } - - /** - * Metodo para extrer solo elnoimbre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - - public void onReturnPersonLov(){ - numeroDocumento = ""; - razonSocial = ""; - setPanelPerson(true); - setPanelSinDatosPerson(false); - setPanelSinDatosArma(false); - getMfilters().clear(); - } - - - public void emptyPerson(){ - if((lote == null || "".equals(lote)) && (numeroDocumento == null || "".equals(numeroDocumento)) && (razonSocial == null || "".equals(razonSocial))){ - MessageHelper.setMessageError("Ingrese el campo Identificacin o el campo Nombre"); - return; - } - - TarmArmas obj = new TarmArmas(); - if(razonSocial == null || "".equals(razonSocial)){ - razonSocial = "N/A"; - } - - if(lote != null && !"".equals(lote)){ - obj.setLote(lote); - } - - if(numeroDocumento != null || !"".equals(numeroDocumento)){ - obj.getModifiedData().put("noDocumento", numeroDocumento); - } - - obj.getModifiedData().put("nombrerazonsocial", razonSocial); - obj.getModifiedData().put("propietario", razonSocial); - obj.getModifiedData().put("permiso", "No se registra permisos en el sistema"); - lrecord.add(obj); - - personLovController.init(); - personLovController.getMfilters().clear(); - setLote(""); - numeroDocumento = ""; - razonSocial = ""; - } - - public boolean isPanelPerson() { - return panelPerson; - } - - public void setPanelPerson(boolean panelPerson) { - this.panelPerson = panelPerson; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - /** - * @return the razonSocial - */ - public String getRazonSocial() { - return razonSocial; - } - - /** - * @param razonSocial the razonSocial to set - */ - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - /** - * @return the numeroDocumento - */ - public String getNumeroDocumento() { - return numeroDocumento; - } - - /** - * @param numeroDocumento the numeroDocumento to set - */ - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - /** - * @return the personLovController - */ - public PersonLovController getPersonLovController() { - return personLovController; - } - - /** - * @param personLovController the personLovController to set - */ - public void setPersonLovController(PersonLovController personLovController) { - this.personLovController = personLovController; - } - - /** - * @return the listaArmasBySerie - */ - public List getListaArmasBySerie() { - return listaArmasBySerie; - } - - /** - * @param listaArmasBySerie the listaArmasBySerie to set - */ - public void setListaArmasBySerie(List listaArmasBySerie) { - this.listaArmasBySerie = listaArmasBySerie; - } - - /** - * @return the certificadoArmasController - */ - public CertificadoArmasController getCertificadoArmasController() { - return certificadoArmasController; - } - - /** - * @param certificadoArmasController the certificadoArmasController to set - */ - public void setCertificadoArmasController( - CertificadoArmasController certificadoArmasController) { - this.certificadoArmasController = certificadoArmasController; - } - - /** - * @return the reportController - */ - public ReportController getReportController() { - return reportController; - } - - /** - * @param reportController the reportController to set - */ - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - /** - * @return the alfrescoController - */ - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - /** - * @param alfrescoController the alfrescoController to set - */ - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - /** - * @return the solicitudCertificadoController - */ - public SolicitudCertificadoController getSolicitudCertificadoController() { - return solicitudCertificadoController; - } - - /** - * @param solicitudCertificadoController the solicitudCertificadoController to set - */ - public void setSolicitudCertificadoController( - SolicitudCertificadoController solicitudCertificadoController) { - this.solicitudCertificadoController = solicitudCertificadoController; - } - - /** - * @return the certificadoFiscalia - */ - public TarmCertificadoFiscalia getCertificadoFiscalia() { - return certificadoFiscalia; - } - - /** - * @param certificadoFiscalia the certificadoFiscalia to set - */ - public void setCertificadoFiscalia(TarmCertificadoFiscalia certificadoFiscalia) { - this.certificadoFiscalia = certificadoFiscalia; - } - - /** - * @return the nroSolicitud - */ - public String getNroSolicitud() { - return nroSolicitud; - } - - /** - * @param nroSolicitud the nroSolicitud to set - */ - public void setNroSolicitud(String nroSolicitud) { - this.nroSolicitud = nroSolicitud; - } - - /** - * @return the esTareaCompleta - */ - public boolean isEsTareaCompleta() { - return esTareaCompleta; - } - - /** - * @param esTareaCompleta the esTareaCompleta to set - */ - public void setEsTareaCompleta(boolean esTareaCompleta) { - this.esTareaCompleta = esTareaCompleta; - } - - /** - * @return the panelSinDatosPerson - */ - public boolean isPanelSinDatosPerson() { - return panelSinDatosPerson; - } - - /** - * @param panelSinDatosPerson the panelSinDatosPerson to set - */ - public void setPanelSinDatosPerson(boolean panelSinDatosPerson) { - this.panelSinDatosPerson = panelSinDatosPerson; - } - - /** - * @return the panelSinDatosArma - */ - public boolean isPanelSinDatosArma() { - return panelSinDatosArma; - } - - /** - * @param panelSinDatosArma the panelSinDatosArma to set - */ - public void setPanelSinDatosArma(boolean panelSinDatosArma) { - this.panelSinDatosArma = panelSinDatosArma; - } - - /** - * @return the lote - */ - public String getLote() { - return lote; - } - - /** - * @param lote the lote to set - */ - public void setLote(String lote) { - this.lote = lote; - } - - /** - * @return the deshabilitarPantalla - */ - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - /** - * @param deshabilitarPantalla the deshabilitarPantalla to set - */ - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.svn-base deleted file mode 100644 index 8cc0e3d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadoFiscaliaController.java.svn-base +++ /dev/null @@ -1,836 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.math.BigDecimal; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; -import javax.servlet.http.HttpSession; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.menu.MenuController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmasKey; -import com.fp.persistence.parmas.soli.TarmCertificadoFiscalia; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador que permite genereal los certificados de Fiscalia - * @author Manuel Cepeda - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CertificadoFiscaliaController extends AbstractController { - - private String razonSocial; - private String numeroDocumento; - private String lote; - private boolean panelPerson; - private boolean panelSinDatosPerson; - private boolean panelSinDatosArma; - private String filtroPersona; - private List listaArmas; - private List listaArmasBySerie; - - @ManagedProperty(value = "#{personLovController}") - private PersonLovController personLovController; - - @ManagedProperty(value = "#{certificadoArmasController}") - private CertificadoArmasController certificadoArmasController; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private String sessionID; - private TcustPersonDetail tcustPersonDetail; - private String nroSolicitud; - private TarmCentroControl centroControl; - private TarmCertificadoFiscalia certificadoFiscalia; - @ManagedProperty(value = "#{solicitudCertificadoController}") - private SolicitudCertificadoController solicitudCertificadoController; - /** - * Bandera de tipo booleano para indicar si se habilita el boton de completar tarea - */ - private Boolean esTareaCompleta = Boolean.FALSE; - - - /** - * Clase controladora de funcionalidad del Alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - - - public CertificadoFiscaliaController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - try { - super.startQuery(); - nroSolicitud = this.getMfilters().get("csolicitud"); - this.getMfilters().clear(); - this.getPersonLovController().getMfilters().clear(); - this.getCertificadoArmasController().getMfilters().clear(); - this.getSolicitudCertificadoController().getMfilters().clear(); - - this.init(); - panelPerson = true; - panelSinDatosPerson = false; - panelSinDatosArma = false; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - panelSinDatosPerson = false; - panelSinDatosArma = false; - - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - - filtroPersona = ""; - certificadoFiscalia = SolicitudCertificadoController.findPorSolicitud(nroSolicitud.trim()); - HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); - sessionID = session.getId(); -// recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - centroControl=Utilidades.obtenerCentroControl(); - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - if(tsafeUserDetail!=null && tsafeUserDetail.getPk().getPersoncode()!=null){ - tcustPersonDetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - super.next(); - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - - return dto; - } - - @Override - public void save() { - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(esTareaCompleta){ - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", nroSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - esTareaCompleta=Boolean.TRUE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Genera el certificado de armas para la Fiscalia y sube al Alfresco el pdf - */ - public void generarReporte() { - if(deshabilitarPantalla){ - return; - } - - String path = "armas/reports/certificadosArmas"; - Boolean aux=Boolean.FALSE; - java.util.Date today = new java.util.Date(); - java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); - Random aleatorio = new Random(); - int ticketGenerado = aleatorio.nextInt(); - int i=0; - - for(TarmArmas armasel:lrecord){ - i++; - if(armasel.getModifiedData().get("seleccionado")!=null && armasel.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - aux=Boolean.TRUE; - guardarCertificadoReporte(armasel, i, ticketGenerado, fechaReporte); - } - } - if(!aux){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nohaseleccionadoarmas")); - return; - } - certificadoArmasController.save(); - try { - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("codResponsable", centroControl.getPersoncode()); - parameters.put("gradoresponsable","" ); //centroControl.getModifiedData().get("desgrado") - parameters.put("nombreresponsable",centroControl.getModifiedData().get("desgrado")+" "+ centroControl.getModifiedData().get("nombre")); - parameters.put("centrocontrol", String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - parameters.put("sessionID",sessionID); - parameters.put("nroSolicitud",certificadoFiscalia.getNroficiofiscalia()); -// parameters.put("fechaReporte",fechaReporte); - - parameters.put("ticket",ticketGenerado); - parameters.put("personCodeLogin",(tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode():null); - if(tcustPersonDetail!=null){ - parameters.put("usuario", tcustPersonDetail.getName()); - } - parameters.put("unidadmilitar", MsgControlArmas.getProperty("msg_inf_digitadordel")+" "+String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - String format="pdf"; - String filename="Certificado"; - - InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - String xPathLocation= getRutaDocumentoCertificadoBase() + "/cm:" + this.nroSolicitud; - String nombreArchivo = "CERT" + nroSolicitud + ".pdf"; - alfrescoController.uploadFile(file, nombreArchivo, xPathLocation); - - //actualizar solicitudCertificadoController - solicitudCertificadoController.getMfilters().put("nrsolicitud", nroSolicitud); - solicitudCertificadoController.querydatabase(); - TarmCertificadoFiscalia tarmCertificadoFiscalia = solicitudCertificadoController.getRecord(); - tarmCertificadoFiscalia.setIsnew(false); - tarmCertificadoFiscalia.setXpathSolicitudArma(xPathLocation+"/cm:"+nombreArchivo); - - solicitudCertificadoController.getLrecord().add(tarmCertificadoFiscalia); - solicitudCertificadoController.update(); - solicitudCertificadoController.save(); - deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo("Se genero el certificado exitosamente."); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoCertificadoBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new java.util.Date()); - StringBuilder ruta = new StringBuilder("cm:Certificados"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Guarda los datos de las Armas solicitadas por el Fiscal a la bdd - * @param armaObj - * @param orden - * @param ticket - * @param fechaReporte - */ - private void guardarCertificadoReporte(TarmArmas armaObj,int orden,int ticket, java.sql.Timestamp fechaReporte){ - TarmCertificadoArmas certificadoArmasObj = new TarmCertificadoArmas(); - TarmCertificadoArmasKey pk = new TarmCertificadoArmasKey(); - certificadoArmasObj.setPk(pk); - try { - certificadoArmasObj.getPk().setFechareporte(fechaReporte); - certificadoArmasObj.getPk().setSessionid(sessionID); - certificadoArmasObj.getPk().setOrden(orden); - certificadoArmasObj.setIdentification(armaObj.getModifiedData().get("noDocumento")!=null?armaObj.getModifiedData().get("noDocumento").toString():null); - certificadoArmasObj.setName(armaObj.getModifiedData().get("propietario")!=null?armaObj.getModifiedData().get("propietario").toString():null); - certificadoArmasObj.setRegisterdate(armaObj.getFecharegistro()); - certificadoArmasObj.setClase(armaObj.getModifiedData().get("clase")!=null?armaObj.getModifiedData().get("clase").toString():null); - certificadoArmasObj.setTipoarmaexplosivo(armaObj.getModifiedData().get("tipoarmaexplosivo")!=null?armaObj.getModifiedData().get("tipoarmaexplosivo").toString():null); - certificadoArmasObj.setMarca(armaObj.getModifiedData().get("marca")!=null?armaObj.getModifiedData().get("marca").toString():null); - certificadoArmasObj.setCalibre(armaObj.getModifiedData().get("calibre")!=null?armaObj.getModifiedData().get("calibre").toString():null); - certificadoArmasObj.setLote(armaObj.getLote()); - certificadoArmasObj.setPaisfabricacion(armaObj.getModifiedData().get("paisorigen")!=null?armaObj.getModifiedData().get("paisorigen").toString():null); - certificadoArmasObj.setEstado(armaObj.getModifiedData().get("estado")!=null?armaObj.getModifiedData().get("estado").toString():null); - certificadoArmasObj.setUsercode((tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode().toString():null); - certificadoArmasObj.setTicket(ticket); - certificadoArmasObj.setPermiso((armaObj.getModifiedData().get("permiso") != null) ? armaObj.getModifiedData().get("permiso").toString() : "");//armaObj.getModifiedData().get("permiso").toString()); - certificadoArmasObj.setFechaemison((Date) armaObj.getModifiedData().get("fechaemision")); - certificadoArmasObj.setFechaexpiracion((Date)armaObj.getModifiedData().get("fechaexpiracion")); - certificadoArmasObj.setIsnew(true); - certificadoArmasController.update(certificadoArmasObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Selecciona el objeto TcustPersonDetail de la tabla actual de la pagina - * @param person - */ - public void setPerson(TcustPersonDetail person) { - if(person != null){ - panelPerson = false; - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode ="+person.getPk().getPersoncode()+")"; - querydatabaseArma(); - setRazonSocial(person.getName()); - setNumeroDocumento(person.getIdentification()); - } - } - - /** - * Permite consultar en la tabla armas mediante el codigo de la persona - */ - protected void querydatabaseArma() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0) " + filtroPersona;// - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - listaArmas = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - listaArmas= (List) resp.get(this.beanalias); - actualizarDatos(listaArmas); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Permite actualizar los datos de la Entidad TarmAmas - * @param listaArmas - */ - private void actualizarDatos(List listaArmas){ - for(TarmArmas armasObj:listaArmas){ - TarmRegistroArmas registroArmasObj = RegistroArmController.findByCodigo(armasObj.getCregistro().toString()); - if(registroArmasObj!=null && registroArmasObj.getPersoncode()!=null){ - TcustPersonDetail propietarioObj = PersonDetailController.find(registroArmasObj.getPersoncode().toString()); - if(propietarioObj.getIdentificationcatalog()!=null && propietarioObj.getIdentificationcatalogcode()!=null){ - armasObj.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), propietarioObj.getIdentificationcatalogcode()).getDescription()); - } - armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); - armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); - if(armasObj.getModifiedData().get("cclase")!=null){ - armasObj.getModifiedData().put("clase", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), armasObj.getModifiedData().get("cclasecodigo").toString()).getDescription()); - } - if(armasObj.getModifiedData().get("ctipoarmaexplosivo")!=null){ - armasObj.getModifiedData().put("tipoarmaexplosivo", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()).getDescription()); - } - if(armasObj.getModifiedData().get("ccalibre")!=null){ - armasObj.getModifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), armasObj.getModifiedData().get("ccalibrecodigo").toString()).getDescription()); - } - - TarmDocumentoHabilitante documentoHabilitante = DocumentoHabilitanteController.findxarma(armasObj.getPk()); - if(documentoHabilitante != null ){ - armasObj.getModifiedData().put("fechaemision", documentoHabilitante.getFechaemision()); - armasObj.getModifiedData().put("fechaexpiracion", documentoHabilitante.getFechaexpiracion()); - TarmTramite tarmTramite = TarmTramiteController.find(documentoHabilitante.getCtramite().toString()); - if(tarmTramite != null){ - armasObj.getModifiedData().put("permiso", tarmTramite.getModifiedData().get("usoactividad")); - } - } - - //cargarPropietario - armasObj.getModifiedData().put("ordenarma",armasObj.getPk()); - if(armasObj.getModifiedData().get("personcode")!=null){ - TcustPersonDetail personaDetalle=PersonDetailController.find(armasObj.getModifiedData().get("personcode").toString()); - armasObj.getModifiedData().put("propietario", personaDetalle.getName()); - armasObj.getModifiedData().put("noDocumento", personaDetalle.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", personaDetalle.getName()); - } - } - } - } - - /** - * Permite consultar en la tabla armas mediante el lote/serie de armas - */ - public void querydatabaseSerie() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroEstados = ""; - String sqlFiltroCodigosArmas = "";//1 - - dto.setOrderby("pk"); - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) " - + " and (t.peso>0 or t.cantidad>0)";// and (t.cregistro=ta.cregistro) para el manejo de los explosivos - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroEstados, sqlFiltroCodigosArmas, sqlActual); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - listaArmasBySerie = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - listaArmasBySerie = (List) resp.get(this.beanalias); - actualizarDatos(listaArmasBySerie); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que agrega dinamicamente los filtros a una consulta SQL - * @param sqlFiltros - * @return String - */ - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas tarmArmas : listaArmas) { - tarmArmas.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Permite actualizar el campo seleccionado en la entidad tarmArmas - */ - public void actualizarDatosArma(){ - for(TarmArmas tarmArmas : listaArmas){ - if(tarmArmas.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - this.getLrecord().add(tarmArmas); - } - } - panelPerson = true; - personLovController.init(); - personLovController.getMfilters().clear(); - getMfilters().clear(); - } - - /** - * Permite actualizar el campo seleccionado en la entidad tarmArmas - */ - public void actualizarDatosArmaSerie(){ - for(TarmArmas tarmArmas : listaArmasBySerie){ - if(tarmArmas.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - this.getLrecord().add(tarmArmas); - } - } - panelPerson = true; - setPanelSinDatosPerson(false); - listaArmasBySerie = new ArrayList<>(); - this.getMfilters().clear(); - } - - /** - * Metodo para extrer solo elnoimbre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - - public void onReturnPersonLov(){ - numeroDocumento = ""; - razonSocial = ""; - setPanelPerson(true); - setPanelSinDatosPerson(false); - setPanelSinDatosArma(false); - getMfilters().clear(); - } - - - public void emptyPerson(){ - if((lote == null || "".equals(lote)) && (numeroDocumento == null || "".equals(numeroDocumento)) && (razonSocial == null || "".equals(razonSocial))){ - MessageHelper.setMessageError("Ingrese el campo Identificacin o el campo Nombre"); - return; - } - - TarmArmas obj = new TarmArmas(); - if(razonSocial == null || "".equals(razonSocial)){ - razonSocial = "N/A"; - } - - if(lote != null && !"".equals(lote)){ - obj.setLote(lote); - } - - if(numeroDocumento != null || !"".equals(numeroDocumento)){ - obj.getModifiedData().put("noDocumento", numeroDocumento); - } - - obj.getModifiedData().put("nombrerazonsocial", razonSocial); - obj.getModifiedData().put("propietario", razonSocial); - obj.getModifiedData().put("permiso", "No se registra permisos en el sistema"); - lrecord.add(obj); - - personLovController.init(); - personLovController.getMfilters().clear(); - setLote(""); - numeroDocumento = ""; - razonSocial = ""; - } - - public boolean isPanelPerson() { - return panelPerson; - } - - public void setPanelPerson(boolean panelPerson) { - this.panelPerson = panelPerson; - } - - public List getListaArmas() { - return listaArmas; - } - - public void setListaArmas(List listaArmas) { - this.listaArmas = listaArmas; - } - - /** - * @return the razonSocial - */ - public String getRazonSocial() { - return razonSocial; - } - - /** - * @param razonSocial the razonSocial to set - */ - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - /** - * @return the numeroDocumento - */ - public String getNumeroDocumento() { - return numeroDocumento; - } - - /** - * @param numeroDocumento the numeroDocumento to set - */ - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - /** - * @return the personLovController - */ - public PersonLovController getPersonLovController() { - return personLovController; - } - - /** - * @param personLovController the personLovController to set - */ - public void setPersonLovController(PersonLovController personLovController) { - this.personLovController = personLovController; - } - - /** - * @return the listaArmasBySerie - */ - public List getListaArmasBySerie() { - return listaArmasBySerie; - } - - /** - * @param listaArmasBySerie the listaArmasBySerie to set - */ - public void setListaArmasBySerie(List listaArmasBySerie) { - this.listaArmasBySerie = listaArmasBySerie; - } - - /** - * @return the certificadoArmasController - */ - public CertificadoArmasController getCertificadoArmasController() { - return certificadoArmasController; - } - - /** - * @param certificadoArmasController the certificadoArmasController to set - */ - public void setCertificadoArmasController( - CertificadoArmasController certificadoArmasController) { - this.certificadoArmasController = certificadoArmasController; - } - - /** - * @return the reportController - */ - public ReportController getReportController() { - return reportController; - } - - /** - * @param reportController the reportController to set - */ - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - } - - /** - * @return the alfrescoController - */ - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - /** - * @param alfrescoController the alfrescoController to set - */ - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - /** - * @return the solicitudCertificadoController - */ - public SolicitudCertificadoController getSolicitudCertificadoController() { - return solicitudCertificadoController; - } - - /** - * @param solicitudCertificadoController the solicitudCertificadoController to set - */ - public void setSolicitudCertificadoController( - SolicitudCertificadoController solicitudCertificadoController) { - this.solicitudCertificadoController = solicitudCertificadoController; - } - - /** - * @return the certificadoFiscalia - */ - public TarmCertificadoFiscalia getCertificadoFiscalia() { - return certificadoFiscalia; - } - - /** - * @param certificadoFiscalia the certificadoFiscalia to set - */ - public void setCertificadoFiscalia(TarmCertificadoFiscalia certificadoFiscalia) { - this.certificadoFiscalia = certificadoFiscalia; - } - - /** - * @return the nroSolicitud - */ - public String getNroSolicitud() { - return nroSolicitud; - } - - /** - * @param nroSolicitud the nroSolicitud to set - */ - public void setNroSolicitud(String nroSolicitud) { - this.nroSolicitud = nroSolicitud; - } - - /** - * @return the esTareaCompleta - */ - public boolean isEsTareaCompleta() { - return esTareaCompleta; - } - - /** - * @param esTareaCompleta the esTareaCompleta to set - */ - public void setEsTareaCompleta(boolean esTareaCompleta) { - this.esTareaCompleta = esTareaCompleta; - } - - /** - * @return the panelSinDatosPerson - */ - public boolean isPanelSinDatosPerson() { - return panelSinDatosPerson; - } - - /** - * @param panelSinDatosPerson the panelSinDatosPerson to set - */ - public void setPanelSinDatosPerson(boolean panelSinDatosPerson) { - this.panelSinDatosPerson = panelSinDatosPerson; - } - - /** - * @return the panelSinDatosArma - */ - public boolean isPanelSinDatosArma() { - return panelSinDatosArma; - } - - /** - * @param panelSinDatosArma the panelSinDatosArma to set - */ - public void setPanelSinDatosArma(boolean panelSinDatosArma) { - this.panelSinDatosArma = panelSinDatosArma; - } - - /** - * @return the lote - */ - public String getLote() { - return lote; - } - - /** - * @param lote the lote to set - */ - public void setLote(String lote) { - this.lote = lote; - } - - /** - * @return the deshabilitarPantalla - */ - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - /** - * @param deshabilitarPantalla the deshabilitarPantalla to set - */ - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadosArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadosArmasController.java.svn-base deleted file mode 100644 index fa25a70..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CertificadosArmasController.java.svn-base +++ /dev/null @@ -1,624 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.security.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Random; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpSession; - -import org.hibernate.HibernateException; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmasLovController; -import com.fp.frontend.controller.armas.lov.CertArmasLovController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.commondb.helper.FormatDates; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoArmasKey; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de la funcionalidad de consulta de armas - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CertificadosArmasController extends AbstractController { - - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que escifica que se deba verificar que exista un arma explosivo válida - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - - private Date fechaActual; - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - private TarmCentroControl centroControl; - - private String sessionID; - - private Timestamp fechaReporte; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{certificadoArmasController}") - private CertificadoArmasController certificadoArmasController; - - private TcustPersonDetail tcustPersonDetail; - - public CertificadosArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - // querydatabase(); -// super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - fechaActual = new Date(); - HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); - sessionID = session.getId(); - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - filtroPersona = ""; - // obtiene el centro de conrtrol - centroControl=Utilidades.obtenerCentroControl(); - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - if(tsafeUserDetail!=null && tsafeUserDetail.getPk().getPersoncode()!=null){ - tcustPersonDetail=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabase() { - try { -// DtoQuery dto = this.getDtoQuery(); -// dto.setOrderby("pk"); -// Filter filtro = new Filter(); -// String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro) and t.estado !='DEST' and t.estado !='CDP' " + filtroPersona; -// filtro.setSql(sql); -// dto.addFiltro(filtro); -// -// HashMap mtables = new HashMap(); -// mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. -// -// Request request = this.callerhelper.getRequest(); -// request.setQueryTables(mtables); -// Response resp = this.callerhelper.executeQuery(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { -// this.lrecord = new ArrayList(); -// MessageHelper.setMessageError(resp); -// } else { -// this.lrecord = (List) resp.get(this.beanalias); -// for(TarmArmas armasObj:lrecord){ -// TarmRegistroArmas registroArmasObj = RegistroArmController.findByCodigo(armasObj.getCregistro().toString()); -// if(registroArmasObj!=null && registroArmasObj.getPersoncode()!=null){ -// TcustPersonDetail propietarioObj = PersonDetailController.find(registroArmasObj.getPersoncode().toString()); -// armasObj.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), propietarioObj.getIdentificationcatalogcode()).getDescription()); -// armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); -// armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); -// armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); -// if(armasObj.getModifiedData().get("cclase")!=null){ -// armasObj.getModifiedData().put("clase", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), armasObj.getModifiedData().get("cclasecodigo").toString()).getDescription()); -// } -// if(armasObj.getModifiedData().get("ctipoarmaexplosivo")!=null){ -// armasObj.getModifiedData().put("tipoarmaexplosivo", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()).getDescription()); -// } -// if(armasObj.getModifiedData().get("ccalibre")!=null){ -// armasObj.getModifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), armasObj.getModifiedData().get("ccalibrecodigo").toString()).getDescription()); -// } -// } -// } -// super.postQuery(this.lrecord); -// } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - super.next(); - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - - return dto; - } - - @Override - public void save() { - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - filtroPersona = ""; - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial=personaDetailSelecionada.getName(); - numeroDocumento=personaDetailSelecionada.getIdentification(); - filtroPersona=personaDetailSelecionada.getPk().getPersoncode().toString(); - this.setLrecord(new ArrayList()); - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickSeleccionarArmas"))); -// List registroArmasList = RegistroArmController.findxPersoncode(personaDetailSelecionada.getPk().getPersoncode().toString()); -// if(registroArmasList!=null && registroArmasList.size()>0){ -// filtroPersona = " and t.cregistro in ("; -// for(TarmRegistroArmas regArmaObj : registroArmasList){ -// filtroPersona+=regArmaObj.getPk().toString() + ","; -// } -// filtroPersona=filtroPersona.substring(0, filtroPersona.length()-1); -// filtroPersona+=")"; -// }else{ -// filtroPersona = " and t.cregistro = -10023"; -// } - //querydatabase(); - } - - /* Abre el LOV de la clase del arma - */ - public void openLovArma() { - Map> params = new HashMap>(); - ListcodigosArma=new ArrayList<>(); - String codigos=null; - if(this.getLrecord()!=null && this.getLrecord().size()>0){ - for(TarmArmas arma:this.getLrecord()){ - if(codigos==null){ - codigos=" t.pk !='"+arma.getPk()+"' "; - }else{ - codigos=codigos+" and t.pk !='"+arma.getPk()+"' "; - } - } - } - codigosArma.add(codigos); - ListestadossArma=new ArrayList<>(); - estadossArma.add(" t.estado !='CDP' and t.estado !='VEND' and t.estado!='TRAS' and t.estado!='MING' and t.estado!='DEST' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado!='ENTR'" - + " and (t.peso>0 or t.cantidad>0) ");//t.estado !='DEST' and and t.estado !='DEC'//destruidas - cambiodepropietario - vendidas - decomisadas - suspendida - cancelada - incautada - - ListcodigoPersona=new ArrayList<>(); - codigoPersona.add(filtroPersona); - - params.put("ccodigosarmas", codigosArma); - params.put("estadosarmas", estadossArma); - params.put("codigopersona", codigoPersona); - CertArmasLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - @SuppressWarnings("unchecked") - public void onReturnArma(SelectEvent event) { - List tarmArmas = (List) event.getObject(); - if(tarmArmas!=null && tarmArmas.size()>0){ - for(TarmArmas arma:tarmArmas){ - arma.getModifiedData().put("seleccionada",Boolean.TRUE); - this.getLrecord().add(arma); - } - } - //ordenamos la lista -// Collections.sort(armasController.getLrecord(), new Comparator() { -// public int compare(TarmArmas p1, TarmArmas p2) { -// return new Integer(p1.getModifiedData().get("ordenarma").toString()).compareTo(new Integer(p2.getModifiedData().get("ordenarma").toString())); -// } -// }); - } - - public void generarReporte() { - String path = "armas/reports/certificadosArmas"; - Boolean aux=Boolean.FALSE; - java.util.Date today = new java.util.Date(); - java.sql.Timestamp fechaReporte = new java.sql.Timestamp(today.getTime()); - Random aleatorio = new Random(); - int ticketGenerado = aleatorio.nextInt(); -// String filtro=null; -// ListcodArmas=new ArrayList(); - int i=0; - - for(TarmArmas armasel:lrecord){ - i++; - if(armasel.getModifiedData().get("seleccionada")!=null && armasel.getModifiedData().get("seleccionada").equals(Boolean.TRUE)){ - aux=Boolean.TRUE; - guardarCertificadoReporte(armasel, i, ticketGenerado, fechaReporte); -// codArmas.add(armasel.getPk()); - } - } - if(!aux){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nohaseleccionadoarmas")); - return; - } - certificadoArmasController.save(); - try { - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("codResponsable", centroControl.getPersoncode()); - parameters.put("gradoresponsable","" ); //centroControl.getModifiedData().get("desgrado") - parameters.put("nombreresponsable",centroControl.getModifiedData().get("desgrado")+" "+ centroControl.getModifiedData().get("nombre")); - parameters.put("centrocontrol", String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - parameters.put("sessionID",sessionID); -// parameters.put("fechaReporte",fechaReporte); - - parameters.put("ticket",ticketGenerado); - parameters.put("personCodeLogin",(tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode():null); - if(tcustPersonDetail!=null){ - parameters.put("usuario", tcustPersonDetail.getName()); - } - // String[] selectedEstados = filtro.split(","); -// parameters.put("filtro", codArmas); - parameters.put("unidadmilitar", MsgControlArmas.getProperty("msg_inf_digitadordel")+" "+String.valueOf(centroControl.getModifiedData().get("desnombreinstitucion"))); - String format="pdf"; - String filename="Certificado"; - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - private void guardarCertificadoReporte(TarmArmas armaObj,int orden,int ticket, java.sql.Timestamp fechaReporte){ - TarmCertificadoArmas certificadoArmasObj = new TarmCertificadoArmas(); - TarmCertificadoArmasKey pk = new TarmCertificadoArmasKey(); - certificadoArmasObj.setPk(pk); - try { - certificadoArmasObj.getPk().setFechareporte(fechaReporte); - certificadoArmasObj.getPk().setSessionid(sessionID); - certificadoArmasObj.getPk().setOrden(orden); - certificadoArmasObj.setIdentification(armaObj.getModifiedData().get("noDocumento")!=null?armaObj.getModifiedData().get("noDocumento").toString():null); - certificadoArmasObj.setName(armaObj.getModifiedData().get("propietario")!=null?armaObj.getModifiedData().get("propietario").toString():null); - certificadoArmasObj.setRegisterdate(armaObj.getFecharegistro()); - certificadoArmasObj.setClase(armaObj.getModifiedData().get("clase")!=null?armaObj.getModifiedData().get("clase").toString():null); - certificadoArmasObj.setTipoarmaexplosivo(armaObj.getModifiedData().get("tipoarmaexplosivo")!=null?armaObj.getModifiedData().get("tipoarmaexplosivo").toString():null); - certificadoArmasObj.setMarca(armaObj.getModifiedData().get("marca")!=null?armaObj.getModifiedData().get("marca").toString():null); - certificadoArmasObj.setCalibre(armaObj.getModifiedData().get("calibre")!=null?armaObj.getModifiedData().get("calibre").toString():null); - certificadoArmasObj.setLote(armaObj.getLote()); - certificadoArmasObj.setPaisfabricacion(armaObj.getModifiedData().get("paisorigen")!=null?armaObj.getModifiedData().get("paisorigen").toString():null); - certificadoArmasObj.setEstado(armaObj.getModifiedData().get("estado")!=null?armaObj.getModifiedData().get("estado").toString():null); - certificadoArmasObj.setUsercode((tcustPersonDetail!=null && tcustPersonDetail.getPk()!=null)?tcustPersonDetail.getPk().getPersoncode().toString():null); - certificadoArmasObj.setTicket(ticket); - certificadoArmasObj.setIsnew(true); - certificadoArmasController.update(certificadoArmasObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public String getTipoDoc() { - return tipoDoc; - } - - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - - public String getNumDoc() { - return numDoc; - } - - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - - public String getNombreRazon() { - return nombreRazon; - } - - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public CertificadoArmasController getCertificadoArmasController() { - return certificadoArmasController; - } - - public void setCertificadoArmasController( - CertificadoArmasController certificadoArmasController) { - this.certificadoArmasController = certificadoArmasController; - } - - public String getSessionID() { - return sessionID; - } - - public void setSessionID(String sessionID) { - this.sessionID = sessionID; - } - - public Timestamp getFechaReporte() { - return fechaReporte; - } - - public void setFechaReporte(Timestamp fechaReporte) { - this.fechaReporte = fechaReporte; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ColaImpresionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ColaImpresionController.java.svn-base deleted file mode 100644 index 734b7ed..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ColaImpresionController.java.svn-base +++ /dev/null @@ -1,164 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; - -/** - * Clase controladora del bean TarmColadeImpresion. - * - * @author DLO - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ColaImpresionController extends AbstractController { - - public ColaImpresionController() throws Exception { - super(TarmColadeImpresion.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "BODEGA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.cdocumento"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para actualizar un bean en el record desde otros controladores - */ - public void update(TarmColadeImpresion bean) throws Exception { - record=bean; - super.update(); - } - - /** - * Encuentra una lista en la coladeimpresion por solicitud y por documentoHabilitante - * @param cdocumento - * @param estado - * @return List - * @throws Exception - */ - public static List findByDocumentoEstado(String cdocumento, String estadoimpresion) throws Exception { - try { - ColaImpresionController cc = new ColaImpresionController(); - cc.init(); - cc.recperpage = 3000; - cc.addFilter("cdocumento", cdocumento); - cc.addFilter("estadoimpresion", estadoimpresion); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - /** - * Encuentra una lista en la coladeimpresion por solicitud y por documentoHabilitante - * @param cdocumento - * @param estado - * @return List - * @throws Exception - */ - public static List findByDocumentoCDoc(String cdocumento) throws Exception { - try { - ColaImpresionController cc = new ColaImpresionController(); - cc.init(); - cc.recperpage = 100; - cc.addFilter("cdocumento", cdocumento); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaAlfrescoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaAlfrescoController.java.svn-base deleted file mode 100644 index 22745cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaAlfrescoController.java.svn-base +++ /dev/null @@ -1,692 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.eval.EvaluacionController; -import com.fp.frontend.controller.armas.parametros.CashManagementHistoryController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TarmVentaArmaTemporalController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.eval.TarmEvaluacion; -import com.fp.persistence.parmas.fun.TarmCashManagementHistory; -import com.fp.persistence.parmas.fun.TarmVentaArmaTem; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCertificadoFiscalia; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmDocumentoAlfresco; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmInspeccion; -import com.fp.persistence.parmas.soli.TarmInspeccionArchivo; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * Clase controladora para consultar documentos en alfresco. - * - * @author Carlos Guzman. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ConsultaAlfrescoController extends AbstractController { - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - - @ManagedProperty(value = "#{ingresoFichaTecnicaArmasController}") - private IngresoFichaTecnicaArmasController ingresoFichaTecnicaArmasController; - - //Manu - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardiasController; - - /*reporte alfresco*/ - private TarmDocumentoHabilitante documentoHabilitante = new TarmDocumentoHabilitante(); - private List armaPrueba = new ArrayList<>(); - private List solicitudRequisitos = new ArrayList<>(); - private List inspeccionArchivo = new ArrayList<>(); - private TarmSolicitudTramite solicitudTramite = new TarmSolicitudTramite(); - - //Manu - private TarmSolicitud solicitud = new TarmSolicitud(); - private TarmEvaluacion tarmevaluacion = new TarmEvaluacion(); - private List listaEvaluacionGuardias = new ArrayList<>(); - private List listaCash = new ArrayList<>(); - private List listaPlanificacion; - //New - private List listaInspeccionesNoPlanificacion; - private List listTtarmdecomisoarmaEntrega; - private List listTtarmdecomisoarmaRecepcion; - private List listTarmdecomiso; - private TarmCertificadoFiscalia certificadoFiscalia; - - private String consulta; - - private String tipoDocumento; - private boolean verPanelDocumentos; - - private String year; - private String mes; - private Date fechaDesde; - private Date fechaHasta; - private String centro; - private TarmCentroControl centroControl = new TarmCentroControl(); - - private String documentos; - - private String tipoPersona; - - /** - * Lista de documentos habilitantes suspendidos - */ - private ListlistaDocumentoHabSus; - - private ListlistaArmasCompradas; - private TcustPersonDetail tcustPersonDetail; - private ListlistaTarmVentaArmaTem; - - /** - * Constructor - * @throws Exception - */ - public ConsultaAlfrescoController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - solicitudController= new SolicitudController(); - listaDocumentoHabSus= new ArrayList<>(); - listaArmasCompradas= new ArrayList<>(); - listaTarmVentaArmaTem=new ArrayList<>(); - String perfil = this.getLoginController().getRequest().getProfile(); - List lista = MantenimientoDocumentosAlfrescoController.findByProfile(perfil); - if(lista != null && !lista.isEmpty()){ - for(TarmDocumentoAlfresco docAlfresco : lista){ - if("".equals(documentos)){ - documentos += docAlfresco.getDocumento(); - }else{ - documentos += ", " + docAlfresco.getDocumento(); - } - } - } - this.init(); - } - - @Override - protected void querydatabase() { - try { - if("solicitud".equals(tipoDocumento)){ - if(consulta==null || consulta.isEmpty()){ - return ; - } - setSolicitud(SolicitudController.findSolicitudxnumerosolicitud(consulta.trim())); - if(solicitud == null){ - MsgControlArmas.getProperty("msg_error_solicitud_noencontrada"); - return; - } - String consultaCodigo = solicitud.getPk(); - - solicitudTramite = TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - if(solicitudTramite != null && ("FIN".equals(solicitudTramite.getEstadotramite()) || "APB".equals(solicitudTramite.getEstadotramite()))){ - documentoHabilitante = DocumentoHabilitanteController.findPorSolicitud(consultaCodigo); - }else{ - documentoHabilitante = null; - } - - armaPrueba = ingresoFichaTecnicaArmasController.findPorSolicitud(consultaCodigo); - solicitudRequisitos = SolicitudRequisitosController.find(consultaCodigo); - inspeccionArchivo = InspeccionArchivoController.findPorSolicitud(consultaCodigo); -// solicitudTramite = TarmSolicitudTramiteController.findPorCSolicitud(consultaCodigo); - TcustPersonDetail tcustPersonDetailObj=PersonDetailController.find(solicitud.getPersoncode().toString()); - if(tcustPersonDetailObj.getPersontypecatalog().equals("2")){ - tipoPersona = "JURIDICA"; - this.listaEvaluacionGuardias.clear(); - List lsolicitudGuardias = solicitudGuardiasController.findPorSolicitud(solicitud.getPk()); - if(lsolicitudGuardias!=null && !lsolicitudGuardias.isEmpty()){ - for(TarmSolicitudGuardias solicitudGuardias : lsolicitudGuardias){ - TarmEvaluacion tarmEvaluacionGuardia = EvaluacionController.findEvaluacionesVigentes(solicitudGuardias.getPk().getCguardia().toString(), "PSICOLOGICA"); - if(tarmEvaluacionGuardia==null){ - tarmEvaluacionGuardia = new TarmEvaluacion(); - } - TcustPersonDetail tcustPersonDetailGuardia=PersonDetailController.find(solicitudGuardias.getPk().getCguardia().toString()); - tarmEvaluacionGuardia.getModifiedData().put("nombreGuardia", tcustPersonDetailGuardia.getName()); - this.listaEvaluacionGuardias.add(tarmEvaluacionGuardia); - } - } - }else{ - tipoPersona = "NATURAL"; - tarmevaluacion = EvaluacionController.findEvaluacionesVigentes(solicitud.getPersoncode().toString(), "PSICOLOGICA"); - } - }else if("cashManagement".equals(tipoDocumento)){ - listaCash = CashManagementHistoryController.findReportesByDate(fechaDesde, fechaHasta); - }else if("planificacionAnual".equals(tipoDocumento)){ - listaPlanificacion = AprobacionPlanInspeccionController.findPorAnno(centroControl.getPk(), getYear()); - - List listaInspecciones = InspeccionController.findPorAnno(centroControl.getPk(), getYear()); - if(listaInspecciones != null && !listaInspecciones.isEmpty()){ - listaInspeccionesNoPlanificacion = InspeccionArchivoController.findPorInspeccion(listaInspecciones.get(0).getPk().toString()); - } - - }else if("decomisos".equals(tipoDocumento)){ - //numero de consulta - if(consulta==null || consulta.isEmpty()){ - return ; - } - TarmDecomiso tarmDecomiso = DecomisoController.find(consulta); - if(tarmDecomiso != null){ - listTarmdecomiso = new ArrayList<>(); - listTarmdecomiso.add(tarmDecomiso); - listTtarmdecomisoarmaEntrega = DecomisoArmaTransaccionController.findPorEnvioNroDecomiso("ENTREGA", tarmDecomiso.getPk()); - listTtarmdecomisoarmaRecepcion = DecomisoArmaTransaccionController.findPorEnvioNroDecomiso("RECEPCION", tarmDecomiso.getPk()); - } - }else if("fiscalia".equals(tipoDocumento)){ - certificadoFiscalia = SolicitudCertificadoController.findPorSolicitud(consulta.trim()); - - }else if("suspenciondh".equals(tipoDocumento)){ - if(tcustPersonDetail==null || tcustPersonDetail.getPk()==null){ - MessageHelper.setMessageError("SELECCIONE UNA IDENTIFICACI\u00d3N"); - return; - } - listaDocumentoHabSus=DocumentoHabilitanteController.findByPersonCode(tcustPersonDetail.getPk().getPersoncode()); - }else if("ventaarmas".equals(tipoDocumento) ){ - solicitud=null; - if(consulta==null || consulta.trim().isEmpty()){ - MessageHelper.setMessageError("INGRESE EL LOTE"); - return; - } - listaArmasCompradas=ArmasController.findxLoteRegistro(consulta); - } - else if("roboperdida".equals(tipoDocumento)){ - solicitud=null; - if(consulta==null || consulta.trim().isEmpty()){ - MessageHelper.setMessageError("INGRESE EL LOTE"); - return; - } - listaArmasCompradas=ArmasController.findxLotePerdidaRobo(consulta); - } - else if("ventaarmas2".equals(tipoDocumento) ){ - solicitud=null; - if(consulta==null || consulta.trim().isEmpty()){ - MessageHelper.setMessageError("INGRESE EL LOTE"); - return; - } - listaTarmVentaArmaTem=TarmVentaArmaTemporalController.findLote(consulta); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para extrer solo el nombre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "CONSULTAALFRESCO"; - verPanelDocumentos = false; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que analiza si el archivo tiene la extension permitida - * @param nombreArchivo - * @return - */ - public Boolean esExtensionDeArchivoPermitida(String nombreArchivo){ - String[]archivosPermitidosLst = {".pdf"}; - for(String extensionValida:archivosPermitidosLst){ - if(nombreArchivo.contains(extensionValida)){ - return Boolean.TRUE; - } - } - return Boolean.FALSE; - } - - public void guardarRegistro() { - } - - public boolean activarPanel(String selectedDocument){ - for(String doc : documentos.split(", ")){ - if(doc.equals(selectedDocument)){ - return true; - } - } - return false; - } - - /** - * Permite actualizar el centro de armas en caso de set tipo planificacionAnual - * @throws Exception - * - */ - public void actualizarMenu() throws Exception{ - tcustPersonDetail=null; - verPanelDocumentos = false; - consulta = ""; - fechaDesde = null; - fechaHasta = null; - year = ""; - if("planificacionAnual".equals(tipoDocumento)){ - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - setCentroControl(CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol())); - } - } - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){} - - @Override - public void query() throws Exception { - verPanelDocumentos = true; - super.query(); - } - - public static void openLov() { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personLov.xhtml", options, null); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - tcustPersonDetail = (TcustPersonDetail) event.getObject(); - this.getMfilters().put("personcode",tcustPersonDetail.getPk().getPersoncode().toString()); - this.query(); - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - /** - * @return the solicitudController - */ - public SolicitudController getSolicitudController() { - return solicitudController; - } - - /** - * @param solicitudController the solicitudController to set - */ - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - public IngresoFichaTecnicaArmasController getIngresoFichaTecnicaArmasController() { - return ingresoFichaTecnicaArmasController; - } - - public void setIngresoFichaTecnicaArmasController( - IngresoFichaTecnicaArmasController ingresoFichaTecnicaArmasController) { - this.ingresoFichaTecnicaArmasController = ingresoFichaTecnicaArmasController; - } - - public TarmDocumentoHabilitante getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - TarmDocumentoHabilitante documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - /** - * @return the solicitud - */ - public TarmSolicitud getSolicitud() { - return solicitud; - } - - /** - * @param solicitud the solicitud to set - */ - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public List getArmaPrueba() { - return armaPrueba; - } - - public void setArmaPrueba(List armaPrueba) { - this.armaPrueba = armaPrueba; - } - - public List getSolicitudRequisitos() { - return solicitudRequisitos; - } - - public void setSolicitudRequisitos( - List solicitudRequisitos) { - this.solicitudRequisitos = solicitudRequisitos; - } - - public List getInspeccionArchivo() { - return inspeccionArchivo; - } - - public void setInspeccionArchivo(List inspeccionArchivo) { - this.inspeccionArchivo = inspeccionArchivo; - } - - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - /** - * @return the tarmevaluacion - */ - public TarmEvaluacion getTarmevaluacion() { - return tarmevaluacion; - } - - /** - * @param tarmevaluacion the tarmevaluacion to set - */ - public void setTarmevaluacion(TarmEvaluacion tarmevaluacion) { - this.tarmevaluacion = tarmevaluacion; - } - - /** - * @return the listaCash - */ - public List getListaCash() { - return listaCash; - } - - /** - * @param listaCash the listaCash to set - */ - public void setListaCash(List listaCash) { - this.listaCash = listaCash; - } - - /** - * @return the centroControl - */ - public TarmCentroControl getCentroControl() { - return centroControl; - } - - /** - * @param centroControl the centroControl to set - */ - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - /** - * @return the listaPlanificacion - */ - public List getListaPlanificacion() { - return listaPlanificacion; - } - - /** - * @param listaPlanificacion the listaPlanificacion to set - */ - public void setListaPlanificacion( - List listaPlanificacion) { - this.listaPlanificacion = listaPlanificacion; - } - - /** - * @return the listTtarmdecomisoarmaEntrega - */ - public List getListTtarmdecomisoarmaEntrega() { - return listTtarmdecomisoarmaEntrega; - } - - /** - * @param listTtarmdecomisoarmaEntrega the listTtarmdecomisoarmaEntrega to set - */ - public void setListTtarmdecomisoarmaEntrega( - List listTtarmdecomisoarmaEntrega) { - this.listTtarmdecomisoarmaEntrega = listTtarmdecomisoarmaEntrega; - } - - /** - * @return the listTtarmdecomisoarmaRecepcion - */ - public List getListTtarmdecomisoarmaRecepcion() { - return listTtarmdecomisoarmaRecepcion; - } - - /** - * @param listTtarmdecomisoarmaRecepcion the listTtarmdecomisoarmaRecepcion to set - */ - public void setListTtarmdecomisoarmaRecepcion( - List listTtarmdecomisoarmaRecepcion) { - this.listTtarmdecomisoarmaRecepcion = listTtarmdecomisoarmaRecepcion; - } - - public String getConsulta() { - return consulta; - } - - public void setConsulta(String consulta) { - this.consulta = consulta; - } - - public String getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(String tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public boolean isVerPanelDocumentos() { - return verPanelDocumentos; - } - - public void setVerPanelDocumentos(boolean verPanelDocumentos) { - this.verPanelDocumentos = verPanelDocumentos; - } - - public String getYear() { - return year; - } - - public void setYear(String year) { - this.year = year; - } - - public String getMes() { - return mes; - } - - public void setMes(String mes) { - this.mes = mes; - } - - public Date getFechaDesde() { - return fechaDesde; - } - - public void setFechaDesde(Date fechaDesde) { - this.fechaDesde = fechaDesde; - } - - public Date getFechaHasta() { - return fechaHasta; - } - - public void setFechaHasta(Date fechaHasta) { - this.fechaHasta = fechaHasta; - } - - public String getCentro() { - return centro; - } - - public void setCentro(String centro) { - this.centro = centro; - } - - /** - * @return the certificadoFiscalia - */ - public TarmCertificadoFiscalia getCertificadoFiscalia() { - return certificadoFiscalia; - } - - /** - * @param certificadoFiscalia the certificadoFiscalia to set - */ - public void setCertificadoFiscalia(TarmCertificadoFiscalia certificadoFiscalia) { - this.certificadoFiscalia = certificadoFiscalia; - } - - public List getListaInspeccionesNoPlanificacion() { - return listaInspeccionesNoPlanificacion; - } - - public void setListaInspeccionesNoPlanificacion( - List listaInspeccionesNoPlanificacion) { - this.listaInspeccionesNoPlanificacion = listaInspeccionesNoPlanificacion; - } - - public List getListTarmdecomiso() { - return listTarmdecomiso; - } - - public void setListTarmdecomiso(List listTarmdecomiso) { - this.listTarmdecomiso = listTarmdecomiso; - } - - public List getListaEvaluacionGuardias() { - return listaEvaluacionGuardias; - } - - public void setListaEvaluacionGuardias( - List listaEvaluacionGuardias) { - this.listaEvaluacionGuardias = listaEvaluacionGuardias; - } - - public String getTipoPersona() { - return tipoPersona; - } - - public void setTipoPersona(String tipoPersona) { - this.tipoPersona = tipoPersona; - } - - public SolicitudGuardiasController getSolicitudGuardiasController() { - return solicitudGuardiasController; - } - - public void setSolicitudGuardiasController( - SolicitudGuardiasController solicitudGuardiasController) { - this.solicitudGuardiasController = solicitudGuardiasController; - } - - public List getListaDocumentoHabSus() { - return listaDocumentoHabSus; - } - - public void setListaDocumentoHabSus( - List listaDocumentoHabSus) { - this.listaDocumentoHabSus = listaDocumentoHabSus; - } - - public List getListaArmasCompradas() { - return listaArmasCompradas; - } - - public void setListaArmasCompradas(List listaArmasCompradas) { - this.listaArmasCompradas = listaArmasCompradas; - } - - public TcustPersonDetail getTcustPersonDetail() { - return tcustPersonDetail; - } - - public void setTcustPersonDetail(TcustPersonDetail tcustPersonDetail) { - this.tcustPersonDetail = tcustPersonDetail; - } - - public List getListaTarmVentaArmaTem() { - return listaTarmVentaArmaTem; - } - - public void setListaTarmVentaArmaTem( - List listaTarmVentaArmaTem) { - this.listaTarmVentaArmaTem = listaTarmVentaArmaTem; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaArmasController.java.svn-base deleted file mode 100644 index 27f3326..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ConsultaArmasController.java.svn-base +++ /dev/null @@ -1,664 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de la funcionalidad de consulta de armas - * - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ConsultaArmasController extends AbstractController { - -// @ManagedProperty(value = "#{registroArmController}") -// private RegistroArmController registroArmas; - - /** - * Tipo documento - */ - private String tipoDoc; - - /** - * Número documento - */ - private String numDoc; - - /** - * Nombre/razón social - */ - private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo - * de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que escifica que se deba verificar que exista un arma explosivo - * válida - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - - private Date fechaActual; - - private String razonSocial; - - private String numeroDocumento; - - private String filtroPersona; - - - - private String descategoria; - private String usoActividad; - private Date fec_actual; - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private TcustPersonDetail customerperson; - private TsafeUserDetail tsafeUserDetailUsuario = null; - - public ConsultaArmasController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - fechaActual = new Date(); - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; - filtroPersona = ""; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - Filter filtro = new Filter(); - String sql = "t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM' and t.estado !='CDP'" - + " and (t.peso>0 or t.cantidad>0) " + filtroPersona;// - filtro.setSql(sql); - dto.addFiltro(filtro); - System.out.println("dto sql: "+sql); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - for (TarmArmas armasObj : lrecord) { - TarmRegistroArmas registroArmasObj = RegistroArmController - .findByCodigo(armasObj.getCregistro().toString()); - if (registroArmasObj != null && registroArmasObj.getPersoncode() != null) { - TcustPersonDetail propietarioObj = PersonDetailController - .find(registroArmasObj.getPersoncode().toString()); - if (propietarioObj.getIdentificationcatalog() != null - && propietarioObj.getIdentificationcatalogcode() != null) { - armasObj.getModifiedData() - .put("tipoDocumento", - CatalogDetailController - .findxCodigoCodcatalogo(propietarioObj.getIdentificationcatalog(), - propietarioObj.getIdentificationcatalogcode()) - .getDescription()); - } - armasObj.getModifiedData().put("noDocumento", propietarioObj.getIdentification()); - armasObj.getModifiedData().put("nombrerazonsocial", propietarioObj.getName()); - armasObj.getModifiedData().put("paisorigencode", registroArmasObj.getPaisorigen()); - if (armasObj.getModifiedData().get("cclase") != null) { - armasObj.getModifiedData().put("clase", - CatalogDetailController - .findxCodigoCodcatalogo(armasObj.getModifiedData().get("cclase").toString(), - armasObj.getModifiedData().get("cclasecodigo").toString()) - .getDescription()); - } - if (armasObj.getModifiedData().get("ctipoarmaexplosivo") != null) { - armasObj.getModifiedData().put("tipoarmaexplosivo", - CatalogDetailController.findxCodigoCodcatalogo( - armasObj.getModifiedData().get("ctipoarmaexplosivo").toString(), - armasObj.getModifiedData().get("ctipoarmaexplosivocodigo").toString()) - .getDescription()); - } - if (armasObj.getModifiedData().get("ccalibre") != null) { - armasObj.getModifiedData().put("calibre", CatalogDetailController - .findxCodigoCodcatalogo(armasObj.getModifiedData().get("ccalibre").toString(), - armasObj.getModifiedData().get("ccalibrecodigo").toString()) - .getDescription()); - } - - } - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca = new SubQuery("TgeneCatalogDetail", "description", "marca", - "i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor = new SubQuery("TgeneCatalogDetail", "description", "color", - "i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado = new SubQuery("TgeneCatalogDetail", "description", "estado", - "i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase = new SubQuery("TarmTipoArmaExplosivo", "clase", "cclase", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo = new SubQuery("TarmTipoArmaExplosivo", "clasecodigo", "cclasecodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud = new SubQuery("TarmTipoArmaExplosivo", "longitud", "clongitud", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo = new SubQuery("TarmTipoArmaExplosivo", "longitudcodigo", "clongitudcodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre = new SubQuery("TarmTipoArmaExplosivo", "calibre", "ccalibre", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo = new SubQuery("TarmTipoArmaExplosivo", "calibrecodigo", "ccalibrecodigo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivo", "ctipoarmaexplosivo", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo = new SubQuery("TarmTipoArmaExplosivo", "tipoarmaexplosivocodigo", - "ctipoarmaexplosivocodigo", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapeso", "cunidadmedidapeso", - "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo = new SubQuery("TarmTipoArmaExplosivo", "unidadmedidapesocodigo", - "cunidadmedidapesocodigo", "i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida = new SubQuery("TgeneCatalogDetail", "description", "unidadmedida", - "i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode = new SubQuery("TarmRegistroArmas", "personcode", "personcode", - "i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - - SubQuery subqueryFechaemiperm = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.fechaexpiracion >= sysdate and " - + " doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro)" - + " and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaemiperm); - SubQuery subqueryFechaexpperm = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.fechaexpiracion >= sysdate and " - + " doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + " and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))"); - dto.addSubQuery(subqueryFechaexpperm); - - //uso actividad - SubQuery subqueryUsoactividad = new SubQuery("TgeneCatalogDetail", "description", "usoactividad", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk.catalog=(select tra.usoactividad " - + " from TarmTramite tra " - + " where tra.pk=(select doc1.ctramite " - + " from TarmDocumentoHabilitante doc1 " - + " where doc1.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.fechaexpiracion >= sysdate " - + " and doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk " - + " from TarmArmas arm1 " - + " where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))" - + ")) and " - + " i.pk.catalogcode=(select tra.usoactividadcodigo " - + " from TarmTramite tra " - + " where tra.pk=(select doc1.ctramite " - + " from TarmDocumentoHabilitante doc1 " - + " where doc1.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.fechaexpiracion >= sysdate " - + " and doc.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk from TarmArmas arm1 " - + " where arm1.codigoarma = (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))" - + ")) "); - dto.addSubQuery(subqueryUsoactividad); - - SubQuery subqueryCategoria = new SubQuery("TgeneCatalogDetail", "description", "categoria", - // " i.personcode=(select r.personcode from TarmRegistroArmas r where r.pk = - // t.cregistro) and i.carma = t.pk and "+ - " i.pk.catalog=(select tra.categoria " - + " from TarmTramite tra " - + " where tra.pk=(select doc1.ctramite " - + " from TarmDocumentoHabilitante doc1 " - + " where doc1.fechaexpiracion >= sysdate and " - + " doc1.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.personcode=(select r.personcode " - + " from TarmRegistroArmas r where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk " - + " from TarmArmas arm1 " - + " where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))" - + ")) and " - + " i.pk.catalogcode=(select tra.categoriacodigo " - + " from TarmTramite tra " - + " where tra.pk=(select doc1.ctramite " - + " from TarmDocumentoHabilitante doc1 " - + " where doc1.fechaexpiracion >= sysdate and " - + " doc1.pk=(select max(doc.pk) " - + " from TarmDocumentoHabilitante doc " - + " where doc.personcode=(select r.personcode " - + " from TarmRegistroArmas r " - + " where r.pk = t.cregistro) " - + "and doc.carma in (select arm1.pk from TarmArmas arm1 where arm1.codigoarma in (select arm.codigoarma from TarmArmas arm where arm.pk=t.pk)))" - + ")) "); - dto.addSubQuery(subqueryCategoria); - - System.out.println("dto: "+dto.toString()); - return dto; - } - - /** - * Método que se ejecuta al abrir el LOV de visualizar item seleccionado - * - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - record.getModifiedData().put("provincia", - ProvinceController.getDescProvByCodigo(record.getCountrycode(), record.getProvincecode())); - record.getModifiedData().put("canton", CantonController.getDescCantonByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode())); - record.getModifiedData().put("ciudad", CityController.getDescCiudadByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode(), record.getCitycode())); - record.getModifiedData().put("parroquia", ParroquiaController.getDescParroquiaByCodigo(record.getCountrycode(), - record.getProvincecode(), record.getCantoncode(), record.getParroquiacode())); - if (record.getModifiedData().get("paisorigencode") != null) { - record.getModifiedData().put("paisorigen", CountryController - .findcountry(record.getModifiedData().get("paisorigencode").toString()).getDescription()); - } - if (record.getColor() != null) { - record.getModifiedData().put("colorD", CatalogDetailController - .findxCodigoCodcatalogo(record.getColor(), record.getColorcodigo()).getDescription()); - } - /* Aumentado */ - TarmDocumentoHabilitante documento = DocumentoHabilitanteController - .findxarma(record.getCodigoarma().toString()); - - if(documento!=null){ - TarmTramite tramite = TarmTramiteController.find(documento.getCtramite().toString()); - if(tramite!=null){ - TgeneCatalogDetail catalogo = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), - tramite.getCategoriacodigo()); - descategoria = catalogo.getDescription(); - TgeneCatalogDetail uso = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), - tramite.getUsoactividadcodigo()); - usoActividad = uso.getDescription(); - } - } - - } - - @Override - public void save() { - - } - -// public RegistroArmController getRegistroArmas() { -// return registroArmas; -// } -// -// -// public void setRegistroArmas(RegistroArmController registroArmas) { -// this.registroArmas = registroArmas; -// } - - public String getTipoDoc() { - return tipoDoc; - } - - public void setTipoDoc(String tipoDoc) { - this.tipoDoc = tipoDoc; - } - - public String getNumDoc() { - return numDoc; - } - - public void setNumDoc(String numDoc) { - this.numDoc = numDoc; - } - - public String getNombreRazon() { - return nombreRazon; - } - - public void setNombreRazon(String nombreRazon) { - this.nombreRazon = nombreRazon; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public String getCalibre() { - return calibre; - } - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - public String getClase() { - return clase; - } - - public void setClase(String clase) { - this.clase = clase; - } - - public String getTipoarma() { - return tipoarma; - } - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getDescategoria() { - return descategoria; - } - - public void setDescategoria(String descategoria) { - this.descategoria = descategoria; - } - - public String getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - razonSocial = personaDetailSelecionada.getName(); - numeroDocumento = personaDetailSelecionada.getIdentification(); - filtroPersona = " and t.cregistro in (select i.pk from TarmRegistroArmas i where i.personcode =" - + personaDetailSelecionada.getPk().getPersoncode() + ")"; -// List registroArmasList = RegistroArmController.findxPersoncode(personaDetailSelecionada.getPk().getPersoncode().toString()); -// if(registroArmasList!=null && registroArmasList.size()>0){ -// filtroPersona = " and t.cregistro in ("; -// for(TarmRegistroArmas regArmaObj : registroArmasList){ -// filtroPersona+=regArmaObj.getPk().toString() + ","; -// } -// filtroPersona=filtroPersona.substring(0, filtroPersona.length()-1); -// filtroPersona+=")"; -// }else{ -// filtroPersona = " and t.cregistro = -10023"; -// } - querydatabase(); - } - - /** - * Metodo que genera el reporte para el registro seleccionado - * - * @param event - * @throws Exception - */ - public void imprimir(String codigoArma) { - System.out.println("Imprimir un reporte en PDF.. Pendiente implementar"); - try { - String gradoUsuario =""; - // String path = "armas/reports/reporteArticuloControl"; - String path = "armas/reports/reporteArticuloControl"; - // String path = "armas/subreports/historicoArmasArticuloControl"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporteArticuloControl"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - - //Fecha actual - this.fec_actual = new Date(); - SimpleDateFormat sdf=new SimpleDateFormat("dd/MM/yyyy hh:mm:ss"); - parameters.put("fecActual", sdf.format(this.fec_actual)); - - //usuario - customerperson = PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", customerperson.getName()); - parameters.put("carma", codigoArma); - //Fecha actual - Calendar fechaActualCldr = Calendar.getInstance(); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - -// } - - String format = "pdf"; - - try { - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTempAeropuertoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTempAeropuertoController.java.svn-base deleted file mode 100644 index 1116d1a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTempAeropuertoController.java.svn-base +++ /dev/null @@ -1,749 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora para el manejo de las custodais temporales del aeropuerto. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CustodiaTempAeropuertoController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CustodiaTempAeropuertoController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Controlador que maneja la custodiaTemporalController - */ - @ManagedProperty(value = "#{custodiaTemporalController}") - private CustodiaTemporalController custodiaTemporalController; - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - /** - * Controlador que maneja TarmDecomisoArma - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcities; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovincesdest; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantonesdest; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcitiesdest; - /** - * Atributo del tipo de registro es decomiso - */ - private TgeneCatalogDetail tipoProceso; - /** - * Atributo del tipo de aerolineas - */ - private List aerolineas; - /** - * Atributo del tipo de aeropuertos origen - */ - private List aeropuertosorigen; - /** - * Atributo del tipo de aeropuertos destino - */ - private List aeropuertosdestino; - /** - * - */ - private List lEraser; - /** - * Arma seleccionada para el decomiso - */ - private TarmArmas armaSeleccionada; - /** - * Atributo para setear el centro de control - */ - private TarmCentroControl centroControl; - /** - * Atributo para setear el usuario logeado - */ - private TsafeUserDetail tsafeUserDetail; - /** - * Codigo del catalogo de PHONETYPE telefono fijo - */ - private String codigoTelefonoFijo; - /** - * Codigo del catalogo de ESTADOARM - */ - private String codigoEntregadoEstado; - /** - * Atributo para asignar el detalle de la custodia temporal - */ - private TarmDecomisoArma tarmDecomisoArmaBuscado; - - private Boolean btn=Boolean.FALSE; - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - public void init() { - try { - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - this.beanalias = "CUSTODIATEMPORALAER"; - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - codigoEntregadoEstado =codigos("COD.ENTREGADO.ESTADO"); - String proceso=codigos("COD.CUSTODIA.TEMPORAL.TIPOPRO"); - tipoProceso = CatalogDetailController.findxCodigoCodcatalogo(proceso, "TIPOREGISTRO"); - //aerolinea - aerolineas=CatalogDetailController.find("AEROLINEAS"); - //aeropuertos - aeropuertosorigen=CatalogDetailController.find("AEROPUERTOS"); - aeropuertosdestino=CatalogDetailController.find("AEROPUERTOS"); - lprovinces = ProvinceController.find("EC"); - lprovincesdest = ProvinceController.find("EC"); - this.lEraser = new ArrayList(); - // centro de control - obtenerCentroControl(); - custodiaTemporalController.create(); - // seteo de variables - custodiaTemporalController.getRecord().setFechacustodios(new java.sql.Date(new Date().getTime())); - //seteamos el pais - custodiaTemporalController.getRecord().setCountrycodeorigen("EC"); - custodiaTemporalController.getRecord().setCountrycodedest("EC"); - armaSeleccionada=null; - btn=Boolean.FALSE; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - HashMap mtables = new HashMap(); - registroArmController.setRecperpage(10000); - DtoQuery dtoRegistroArma = registroArmController.getDtoQuery(true); - mtables.put(registroArmController.getBeanalias(), dtoRegistroArma); - - request.setQueryTables(mtables); - request.put("queryalias", "ARMASPERSONA"); - request.put("querytype", "P"); - request.put("serielote", armasController.getMfilters().get("lote")); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - armasController.setLrecord((List)resp.get("ARMASLIST")); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - if(armaSeleccionada==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneelarmaacustodiatemporal")); - } - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - //tipo de registro - custodiaTemporalController.getRecord().setTiporegistro(tipoProceso.getPk().getCatalog()); - custodiaTemporalController.getRecord().setTiporegistrocode(tipoProceso.getPk().getCatalogcode()); - //aerolinea - custodiaTemporalController.getRecord().setAerolineacode("AEROLINEAS"); - //centro control - custodiaTemporalController.getRecord().setCcentrocontrol(centroControl.getPk()); - //aeropuerto origen - custodiaTemporalController.getRecord().setAeropuertoorigcode("AEROPUERTOS"); - //aeropuerto destino - custodiaTemporalController.getRecord().setAeropuertodestcode("AEROPUERTOS"); - //persona que registra la custodia - custodiaTemporalController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - custodiaTemporalController.update(); - DtoSave dtosaveCustodiaTem = custodiaTemporalController.getDtoSave(); - dtosaveCustodiaTem.setPosition(1); - msave.put(custodiaTemporalController.getBeanalias(), dtosaveCustodiaTem); - - //arma - armasController.clearAll(); - armaSeleccionada.setIsnew(true); - armaSeleccionada.setPk(null); - //fecha de registro - armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); - //estado anterior - armaSeleccionada.getModifiedData().put("estadoanterior", armaSeleccionada.getEstado()); - //nuevo estado - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", tipoProceso.getLegalcode()).get(0); - armaSeleccionada.setEstado(estadoArma.getPk().getCatalog()); - armaSeleccionada.setEstadocodigo("ESTADOARMA"); - armasController.actualizar(armaSeleccionada); - DtoSave dtosaveArma = armasController.getDtoSave(); - dtosaveArma.setPosition(2); - msave.put(armasController.getBeanalias(), dtosaveArma); - - - //decomisoarma es el detalle de la custodia temporal - DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); - dtosaveDecomisoArma.setPosition(3); - msave.put(decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - custodiaTemporalController.getRecord().setNotransaccion(resp.get("numerotransaccion").toString()); - armaSeleccionada=null; - btn=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que debuelve los datos del la custodia temporal Arma decomisada - * @param numeroTransaccion - */ - public void buscarDecomiso(String numeroTransaccion){ - try { - if(numeroTransaccion!=null && numeroTransaccion.length()>0){ - //custodia temporal - custodiaTemporalController.setRecord(CustodiaTemporalController.findNotransaccion(numeroTransaccion)); - if(custodiaTemporalController.getRecord()!=null && custodiaTemporalController.getRecord().getPk()!=null){ - //tarmDecomisoArma - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", tipoProceso.getLegalcode()).get(0); - tarmDecomisoArmaBuscado=DecomisoArmaController.findxCodigoCustTemporal(custodiaTemporalController.getRecord().getPk(),estadoArma.getPk().getCatalog()); - if(tarmDecomisoArmaBuscado!=null){ - //decomiso del arma - armaSeleccionada= ArmasController.findxCodigo(tarmDecomisoArmaBuscado.getCarma()); - armaSeleccionada.getModifiedData().put("observacion", tarmDecomisoArmaBuscado.getObservacion()); - //Se puso el PK del arma en el mapa para que se presente en el dialogo de entrega material y no desaparezca - armaSeleccionada.getModifiedData().put("pk", armaSeleccionada.getPk()); - armasController.setLrecord(new ArrayList()); - armasController.getLrecord().add(armaSeleccionada); - executeProvince(); - executeProvinceDestino(); - executeCanton(); - executeCantonDestino(); - //propietario - TcustPersonDetail personDetail= PersonDetailController.find(custodiaTemporalController.getRecord().getPersoncodeprop().toString()); - custodiaTemporalController.getRecord().getModifiedData().put("tipodocumento",personDetail.getModifiedData().get("destipoidentificacion")); - custodiaTemporalController.getRecord().getModifiedData().put("numerodocumento",personDetail.getIdentification()); - custodiaTemporalController.getRecord().getModifiedData().put("nombrerazonsocial",personDetail.getName()); - TcustPersonPhone personPhone= PersonPhoneController.find(custodiaTemporalController.getRecord().getPersoncodeprop().toString(), codigoTelefonoFijo); - if(personPhone!=null){ - custodiaTemporalController.getRecord().getModifiedData().put("telefono",personPhone.getPhonenumber()); - } - }else{ - this.init(); - } - }else{ - this.init(); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para la entrega del arma y cambio de estado - * Guarda en la BD - */ - public void saveEntrega(){ - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - //arma - armasController.clearAll(); - armaSeleccionada.setIsnew(true); - armaSeleccionada.setPk(null); - //fecha de registro - armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); - //nuevo estado debe regresar al estado anterior - armaSeleccionada.setEstado(tarmDecomisoArmaBuscado.getEstadoanterior()); - //fecha de registro - armaSeleccionada.setFecharegistro(new java.sql.Date(new Date().getTime())); - armasController.actualizar(armaSeleccionada); - DtoSave dtosaveArma = armasController.getDtoSave(); - dtosaveArma.setPosition(1); - msave.put(armasController.getBeanalias(), dtosaveArma); - - //decomisoarma es el detalle de la custodia temporal - decomisoArmaController.clearAll(); - tarmDecomisoArmaBuscado.setIsnew(true); - tarmDecomisoArmaBuscado.setPk(null); - //estado entregado - tarmDecomisoArmaBuscado.setEstado(codigoEntregadoEstado); - decomisoArmaController.setRecord(tarmDecomisoArmaBuscado); - //la fecha de registro - tarmDecomisoArmaBuscado.setFdecomiso((new Timestamp(new java.util.Date().getTime()))); - decomisoArmaController.update(); - DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); - dtosaveDecomisoArma.setPosition(2); - msave.put(decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - armaSeleccionada=null; - btn=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para inicializar la lista de las armas - * y la validacion del propietario del arma - */ - public void registrarMaterial(){ - try { - if(custodiaTemporalController.getRecord().getPersoncodeprop()==null ||custodiaTemporalController.getRecord().getPersoncodeprop()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionepropietario")); - return; - } - armasController.setLrecord(new ArrayList()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - //lov de persona - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - custodiaTemporalController.getRecord().setPersoncodeprop(personaDetailSelecionada.getPk().getPersoncode()); - custodiaTemporalController.getRecord().getModifiedData().put("tipodocumento",personaDetailSelecionada.getModifiedData().get("destipoidentificacion")); - custodiaTemporalController.getRecord().getModifiedData().put("numerodocumento",personaDetailSelecionada.getIdentification()); - custodiaTemporalController.getRecord().getModifiedData().put("nombrerazonsocial",personaDetailSelecionada.getName()); - custodiaTemporalController.getRecord().getModifiedData().put("telefono",personaDetailSelecionada.getModifiedData().get("telefono")); - registroArmController.getMfilters().put("personcode", personaDetailSelecionada.getPk().getPersoncode().toString()); - } - - /** - * Método para manejar el evento change en el CheckBox - * Arma a decomisar - * @throws Exception - */ - public void onChange(TarmArmas arma) throws Exception { - for(TarmArmas t:armasController.getLrecord()){ - t.getModifiedData().put("estado",Boolean.FALSE); - if(arma.getPk().equals(t.getPk())){ - t.getModifiedData().put("estado",Boolean.TRUE); - } - } - } - - /** - * Metodo que se ejecuta al pulsar el boton aceptar del dialog que lista las armas a seleccionar - * Valida si selecciono algun registro si no le obliga a seleccionar - */ - public void aceptarPopup(){ - //validamos que de la lista exista un registro escogido - armaSeleccionada=null; - for(TarmArmas t:armasController.getLrecord()){ - if(Boolean.TRUE.equals(t.getModifiedData().get("estado"))){ - if(t.getModifiedData().get("observacion")==null || t.getModifiedData().get("observacion").toString().length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselaobservacion")); - return; - } - armaSeleccionada=t; - } - } - if(armaSeleccionada==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneelarmaacustodiatemporal")); - return; - } - } - - /** - * Metodo que se ejecuta al pulsar el boton cancelar del dialog de listado de las armas - * Cambia el estado a false de las armas seleccionadas - */ - public void cancelarPopup(){ - armaSeleccionada=null; - for(TarmArmas t:armasController.getLrecord()){ - t.getModifiedData().put("estado",Boolean.FALSE); - } - } - - /** - * Metodo para buscar el propietario del arma y asignarle al arma - */ - public void cargarPropietario(){ - for(TarmArmas arma:armasController.getLrecord()){ - if(arma.getModifiedData().get("personcode")!=null){ - TcustPersonDetail personaDetalle=PersonDetailController.find(arma.getModifiedData().get("personcode").toString()); - arma.getModifiedData().put("propietario", personaDetalle.getName()); - } - } - } - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((custodiaTemporalController.getRecord().getCountrycodeorigen() != null) && (custodiaTemporalController.getRecord().getCountrycodeorigen().compareTo("") != 0)) { - lcantones = CantonController.find(custodiaTemporalController.getRecord().getCountrycodeorigen(), custodiaTemporalController.getRecord().getProvincecodeorigen()); - lcities = new ArrayList<>(); - lEraser = new ArrayList<>(); - lprovincesdest = new ArrayList<>(); - for(TgeneProvince prov:lprovinces){ - if(prov.getPk().getProvincecode().equals(this.custodiaTemporalController.getRecord().getProvincecodeorigen())){ - this.lEraser.add(prov); - continue; - }else { - lprovincesdest.add(prov); - } - - } - - - - } - } - - /** - * Método para el evento change del combo aereopuertos - */ - public void executeAereopuerto() { - aeropuertosdestino = new ArrayList<>(); - lEraser = new ArrayList<>(); - for(TgeneCatalogDetail aereo:this.aeropuertosorigen){ - if(aereo.getPk().getCatalog().equals(this.custodiaTemporalController.getRecord().getAeropuertoorig())){ - this.lEraser.add(aereo); - continue; - }else { - aeropuertosdestino.add(aereo); - } - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((custodiaTemporalController.getRecord().getCountrycodeorigen() != null) && (custodiaTemporalController.getRecord().getCountrycodeorigen().compareTo("") != 0)) { - lcities = CityController.find(custodiaTemporalController.getRecord().getCountrycodeorigen(), custodiaTemporalController.getRecord().getProvincecodeorigen(), - custodiaTemporalController.getRecord().getCantoncodeorigen()); - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvinceDestino() { - if ((custodiaTemporalController.getRecord().getCountrycodedest() != null) && (custodiaTemporalController.getRecord().getCountrycodedest().compareTo("") != 0)) { - lcantonesdest = CantonController.find(custodiaTemporalController.getRecord().getCountrycodedest(), custodiaTemporalController.getRecord().getProvincecodedest()); - lcitiesdest = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCantonDestino() { - if ((custodiaTemporalController.getRecord().getCountrycodedest()!= null) && (custodiaTemporalController.getRecord().getCountrycodedest().compareTo("") != 0)) { - lcitiesdest = CityController.find(custodiaTemporalController.getRecord().getCountrycodedest(), custodiaTemporalController.getRecord().getProvincecodedest(), - custodiaTemporalController.getRecord().getCantoncodedest()); - } - } - - /** - * Metodo para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - - - public CustodiaTemporalController getCustodiaTemporalController() { - return custodiaTemporalController; - } - - public void setCustodiaTemporalController( - CustodiaTemporalController custodiaTemporalController) { - this.custodiaTemporalController = custodiaTemporalController; - } - - public ArmasController getArmasController() { - return armasController; - } - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public TgeneCatalogDetail getTipoProceso() { - return tipoProceso; - } - - public void setTipoProceso(TgeneCatalogDetail tipoProceso) { - this.tipoProceso = tipoProceso; - } - - public List getAerolineas() { - return aerolineas; - } - - public void setAerolineas(List aerolineas) { - this.aerolineas = aerolineas; - } - - public List getLprovincesdest() { - return lprovincesdest; - } - - public void setLprovincesdest(List lprovincesdest) { - this.lprovincesdest = lprovincesdest; - } - - public List getLcantonesdest() { - return lcantonesdest; - } - - public void setLcantonesdest(List lcantonesdest) { - this.lcantonesdest = lcantonesdest; - } - - public List getLcitiesdest() { - return lcitiesdest; - } - - public void setLcitiesdest(List lcitiesdest) { - this.lcitiesdest = lcitiesdest; - } - - public TarmArmas getArmaSeleccionada() { - return armaSeleccionada; - } - - public void setArmaSeleccionada(TarmArmas armaSeleccionada) { - this.armaSeleccionada = armaSeleccionada; - } - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController(RegistroArmController registroArmController) { - this.registroArmController = registroArmController; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public TsafeUserDetail getTsafeUserDetail() { - return tsafeUserDetail; - } - - public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { - this.tsafeUserDetail = tsafeUserDetail; - } - - public Boolean getBtn() { - return btn; - } - - public void setBtn(Boolean btn) { - this.btn = btn; - } - - public List getAeropuertosorigen() { - return aeropuertosorigen; - } - - public void setAeropuertosorigen(List aeropuertosorigen) { - this.aeropuertosorigen = aeropuertosorigen; - } - - public List getAeropuertosdestino() { - return aeropuertosdestino; - } - - public void setAeropuertosdestino(List aeropuertosdestino) { - this.aeropuertosdestino = aeropuertosdestino; - } - - - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTemporalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTemporalController.java.svn-base deleted file mode 100644 index e08ca74..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiaTemporalController.java.svn-base +++ /dev/null @@ -1,134 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmCustodiaTemporal; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmDecomiso. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CustodiaTemporalController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CustodiaTemporalController() throws Exception { - super(TarmCustodiaTemporal.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - public void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CUSTODIATEM"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que consulta por Catalog y Catalogcode ambos requeridos - */ - public static TarmCustodiaTemporal findNotransaccion(String notransaccion) { - try {//TgeneCatalogDetailKey - CustodiaTemporalController cc = new CustodiaTemporalController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("notransaccion", notransaccion); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiosController.java.svn-base deleted file mode 100644 index 0878c9a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/CustodiosController.java.svn-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajoCustodios; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CustodiosController extends AbstractController { - - //Grados - List lGrados=new ArrayList(); - Boolean salva=false; - - public CustodiosController() throws Exception { - super(TarmOrdenTrabajoCustodios.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "CUSTODIOSCONTROLLER"; - this.record=new TarmOrdenTrabajoCustodios(); - record.isnew=true; - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Obteniendo la lista de grados militares - lGrados=CatalogDetailController.find("MILITARYGRADE"); - - /* - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - //Obteniendo la lista de grados militares - lGrados=CatalogDetailController.find("GRADOS"); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - */ - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void update(TarmOrdenTrabajoCustodios bean) throws Exception { - record=bean; - update(); - } - - public void update(List bean) throws Exception { - for (TarmOrdenTrabajoCustodios cus : bean) { - record=cus; - update(); - } - } - - @Override - public void update() throws Exception { - Boolean duplicada=false; - if(this.record!=null){ - for (TarmOrdenTrabajoCustodios custodio : this.lrecord) { - if(custodio.getCedulacustodio().equalsIgnoreCase(this.record.getCedulacustodio())){ - duplicada=true; - } - } - if(!this.salva && duplicada){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("cedulaDuplicada")); - }else{ - super.update(); - } - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Devuelve la descripcion de un grado dado su codigo - * @param gradoCodigo - * @return - */ - @SuppressWarnings("finally") - public String grado(String gradoCodigo){ - String descripcionGrado=""; - - for (TgeneCatalogDetail cd : lGrados) { - if(cd.getLegalcode().equalsIgnoreCase(gradoCodigo)){ - return cd.getDescription(); - } - } - - return descripcionGrado; - } - - /** - * Obtiene todos los custodios - * @return List - */ - public static List find() { - try { - CustodiosController cc = new CustodiosController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene los custodios de una orden de trabajo - * @return List - */ - public static List findByCodigoOrden(Long cordentrabajo) { - try { - CustodiosController cc = new CustodiosController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cordentrabajo", cordentrabajo.toString()); - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public List getlGrados() { - return lGrados; - } - - public void setlGrados(List lGrados) { - this.lGrados = lGrados; - } - - public Boolean getSalva() { - return salva; - } - - public void setSalva(Boolean salva) { - this.salva = salva; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaController.java.svn-base deleted file mode 100644 index 3936bbf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaController.java.svn-base +++ /dev/null @@ -1,362 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DecomisoArmaController extends AbstractController { - - public DecomisoArmaController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMDECOMISOARMA"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - for(TarmDecomisoArma decomisoArma:lrecord){ - TarmArmas arma = ArmasController.findPorCodigo(decomisoArma.getCarma()); - if(arma!=null){ - TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); - decomisoArma.getModifiedData().put("ncalibre", arma.getModifiedData().get("calibre")); - decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); - if(tipoArmaExplosivo.getLongitud()!=null){ - decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); - } - else{ - decomisoArma.getModifiedData().put("nlongitud", ""); - } - decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); - decomisoArma.getModifiedData().put("nserie", arma.getSeriecanon()); - decomisoArma.getModifiedData().put("nlote", arma.getLote()); - decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); - - decomisoArma.getModifiedData().put("nmotivodecomiso", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo()).getDescription():""); - - TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - if(registroArma!=null && registroArma.getPersoncode()!=null){ - Integer personCodePropietario = registroArma.getPersoncode(); - decomisoArma.getModifiedData().put("npropietario", PersonDetailController.find(personCodePropietario.toString()).getName()); - } - else{ - decomisoArma.getModifiedData().put("npropietario", ""); - } - } - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void consulta() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - Filter filtro=new Filter(); - filtro.setSql("t.fdecomiso=(select max(te.fdecomiso) from TarmDecomisoArma te where te.ccustemp=t.ccustemp)"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public static TarmDecomisoArma findByCodigo(String cDecomisoArma) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("pk", cDecomisoArma); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findByCodigoDecomiso(String cDecomiso) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("cdecomiso", cDecomiso); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmDecomisoArma findxCodigoCustTemporal(String ccustemp,String estado) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("ccustemp", ccustemp); - cc.addFilter("estado", estado); - cc.consulta(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - public void update(TarmDecomisoArma bean) throws Exception { - record=bean; - update(); - } - - public static List find(Long codigoenvio) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("cdecarmtranrecepcion", codigoenvio.toString()); - cc.querydatabaseSimple(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findArmasPorSancionar(Long codigoenvio) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("cdecarmtranrecepcion", codigoenvio.toString()); - cc.addFilter("estado", "RECL"); - cc.querydatabaseSimple(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findEnvio(Long codigoenvio) { - try { - DecomisoArmaController cc = new DecomisoArmaController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("cdecomisoarmatransaccion", codigoenvio.toString()); - cc.querydatabaseSimple(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","nclase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryClasecatalogo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","ntipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o " - + " where o.pk= (select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","nmarca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ncalibre","i.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryLote= new SubQuery("TarmArmas","lote","nserie","i.pk=t.carma"); - dto.addSubQuery(subqueryLote); - - SubQuery subqueryNRecivo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNRecivo); - SubQuery subqueryNTransaccion= new SubQuery("TarmDecomiso","numerotransaccion","numerotransaccion","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNTransaccion); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","nunidad","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryUnidadTipo); - - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog= (select o.color from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmArmas o where o.pk=t.carma) " - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryIndentificacion= new SubQuery("TcustPersonDetail","identification","identification","i.pk.personcode=(select p from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryIndentificacion); - SubQuery subqueryRazonSocial= new SubQuery("TcustPersonDetail","name","nrazons","i.pk.personcode=(select p.personcode from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryRazonSocial); - return dto; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaTransaccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaTransaccionController.java.svn-base deleted file mode 100644 index 843be61..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoArmaTransaccionController.java.svn-base +++ /dev/null @@ -1,322 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DecomisoArmaTransaccionController extends AbstractController { - - public DecomisoArmaTransaccionController() - throws Exception { - super(TarmDecomisoArmaTransaccion.class); - } - - @Override - protected void querydatabase() { - - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "DECOMISOARMATRANSACCION"; - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void save() { - try { - update(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para encontrar por numero de envío - * @param envio - * @param esRecepcion - * @return listado de los registros que cumplen el criterio de busqueda - */ - public static List findPorEnvio(String envio,boolean esRecepcion) { - try { - DecomisoArmaTransaccionController cc = new DecomisoArmaTransaccionController(); - cc.init(); - cc.recperpage = 15; - cc.addFilter("numerotransaccion", envio); - if(esRecepcion){ - cc.addFilter("estadofirma", "Y"); - } - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para encontrar por el pk - * @param cdeocmisoarmatransaccion - */ - public static TarmDecomisoArmaTransaccion find(String cdeocmisoarmatransaccion) { - try { - DecomisoArmaTransaccionController cc = new DecomisoArmaTransaccionController(); - cc.init(); - cc.recperpage = 15; - cc.addFilter("pk", cdeocmisoarmatransaccion); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * @param envio - * @return - */ - public static List findPorEnvioNroDecomiso(String tipoDecomiso, Long numeroDecomiso) { - try { - DecomisoArmaTransaccionController cc = new DecomisoArmaTransaccionController(); - cc.init(); - cc.recperpage = 15; - cc.querydatabaseManu(tipoDecomiso, numeroDecomiso); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - protected void querydatabaseManu(String tipoDecomiso, Long numeroDecomiso) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - if (numeroDecomiso != null) { - Filter f = null; - f = new Filter(); - - if("ENTREGA".equals(tipoDecomiso)){ - f.setSql("t.pk in (select tr.cdecomisoarmatransaccion from com.fp.persistence.parmas.soli.TarmDecomisoArma tr where tr.cdecomiso = " + numeroDecomiso + ")"); - }else if("RECEPCION".equals(tipoDecomiso)){ - f.setSql("t.pk in (select tr.cdecarmtranrecepcion from com.fp.persistence.parmas.soli.TarmDecomisoArma tr where tr.cdecomiso = " + numeroDecomiso + ")"); - } - dto.addFiltro(f); - } - - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - /** - * - * @param envio - * @return - */ - public static List findPorOrganismoUnidad(String codigoUnidadControl, Date fechaCorte, String operacion) { - try { - DecomisoArmaTransaccionController cc = new DecomisoArmaTransaccionController(); - cc.init(); - cc.recperpage = 10000; - cc.querydatabaseByFechaCorte(fechaCorte, codigoUnidadControl, operacion); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - protected void querydatabaseByFechaCorte(Date fechaCorte, String codigoUnidadControl, String operacion) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter f = null; - f = new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - String ccentrocontrol = ""; - ccentrocontrol = "tb.ccentrocontroldestino = '" + codigoUnidadControl+"'" ; -// if(operacion.equals("ENVIO")){ -// ccentrocontrol = "tb.ccentrocontroldestino = '" + codigoUnidadControl+"'" ; -// }else{ -// ccentrocontrol = "tb.ccentrocontrolorigen = '" + codigoUnidadControl+"'" ; -// } - - f.setSql("trunc(t.ftransaccion) <= " + "TO_DATE('" +formato.format(fechaCorte)+ "','yyyy-MM-dd')" - + " and t.pk in (select tb.cdecomisoarmatransaccion from com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega tb where " - + ccentrocontrol + " and tb.operacion = '"+ operacion+"') and estadofirma = 'Y'" - ); - dto.addFiltro(f); - - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - - /** - * - * @param envio - * @return - */ - public static List findParaReception(String codigoUnidadControl) { - try { - DecomisoArmaTransaccionController cc = new DecomisoArmaTransaccionController(); - cc.init(); - cc.recperpage = 100; - cc.querydatabaseForReception(codigoUnidadControl); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - protected void querydatabaseForReception(String codigoUnidadControl) { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter f = new Filter(); - f.setSql("t.estadoflujo = 'ENV' and t.estadofirma = 'Y' and " - + " t.pk in (select tb.cdecomisoarmatransaccion from com.fp.persistence.parmas.soli.TarmDecomisoArma tb where tb.coperaciontransaccion = 'ENVIO')" - + " and t.pk in (select tba.cdecomisoarmatransaccion from com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega tba where tba.ccentrocontroldestino = '" + codigoUnidadControl + "')"); - dto.addFiltro(f); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoController.java.svn-base deleted file mode 100644 index 9bbd707..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoController.java.svn-base +++ /dev/null @@ -1,336 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pentaho.PentahoController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TarmDecomiso. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DecomisoController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public DecomisoController() throws Exception { - super(TarmDecomiso.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "DECOMISO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - if(getMfilelds().get("ccentrocontroldestino")!=null){ - Filter filtro = new Filter(); - filtro.setSql(getMfilelds().get("ccentrocontroldestino").toString()); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabaseSimple() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - Filter filtroFinal = new Filter(); - String format = new SimpleDateFormat("MM-YY").format(Calendar.getInstance().getTime()); - String sqlFiltro = "TO_CHAR(t.fecharegistro, 'MM-YY') = '"+format+"'"; - filtroFinal.setSql(sqlFiltro); - dto.addFiltro(filtroFinal); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void updateDecomiso(TarmDecomiso bean) throws Exception{ - record = bean; - record.setIsnew(false); - record.put("ORIGINALBEAN", bean.get("ORIGINALBEAN")); - super.update(); - } - - @ManagedProperty(value = "#{pentahoController}") - private PentahoController pentahoController; - - public PentahoController getPentahoController() { - return pentahoController; - } - - public void setPentahoController(PentahoController pentahoController) { - this.pentahoController = pentahoController; - } - - /** - * Método para obtener el decomiso por el codigo de decomiso - * @param cRecibo - * @return - */ - public static TarmDecomiso findByCodigo(String cRecibo) { - try { - DecomisoController cc = new DecomisoController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("pk", cRecibo); - - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para filtrar por codigo de centro de control - * @param ccentroControl - * @param numerotransaccion - * @return - */ - public static List findByCodigoCentroControl(String ccentroControl, String numerotransaccion) { - try { - DecomisoController cc = new DecomisoController(); - cc. init(); - cc.recperpage = 10000; - - if(ccentroControl!=null && !ccentroControl.isEmpty()){ - cc.addFilter("ccentrocontrol", ccentroControl); - } - if(numerotransaccion!=null && !numerotransaccion.isEmpty()){ - cc.addFilter("numerotransaccion", numerotransaccion); - } - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para filtrar por codigo de centro de control - * @param ccentroControl - * @return - */ - public static List findByCentroControl(String ccentroControl) { - try { - DecomisoController cc = new DecomisoController(); - cc. init(); - cc.recperpage = 10000; - - if(ccentroControl!=null && !ccentroControl.isEmpty()){ - cc.addField("ccentrocontroldestino","(ccentrocontrol='"+ccentroControl+"' and ccentrocontroldestino is null) or (ccentrocontroldestino='"+ccentroControl+"')"); - } - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo para filtrar por OrganismoControl y Unidad - * @param organismoControlCode - * @return - */ - public static List findByOrganismoControlUnidad(String organismoControlCode, String unidadCode) { - try { - DecomisoController cc = new DecomisoController(); - cc. init(); - cc.recperpage = 10000; - - TgeneCatalogDetail organismoControlCatalog = CatalogDetailController.findCatalogo("INSTITUCION", organismoControlCode); - - if(organismoControlCatalog!=null && unidadCode!=null){ - cc.addField("ccentrocontroldestino","(unidad='"+unidadCode+"' and organismocontrol='"+organismoControlCatalog.getDescription()+"')"); - } - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para filtrar por OrganismoControl - * - * @param numeroRecibo numero de recibo - * @param tipoProceso tipo de proceso - * @param organismoControl organismo de control - * @return - */ - public static boolean findReciboByTipoProcesoOrganismoControl(String numeroRecibo, String tipoProceso, String organismoControl) { - - try { - DecomisoController cc = new DecomisoController(); - cc.init(); - cc.recperpage = 1000; - if (numeroRecibo != null && !numeroRecibo.isEmpty()) { - cc.addFilter("numerorecibo", numeroRecibo); - } - if (tipoProceso != null && !tipoProceso.isEmpty()) { - cc.addFilter("tipoproceso", tipoProceso); - } - if (organismoControl != null && !organismoControl.isEmpty()) { - cc.addFilter("ccentrocontrol", organismoControl); - } - - cc.querydatabaseSimple(); - if (cc.lrecord != null && cc.lrecord.size() > 0) { - return true; - } - return false; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return false; - } - } - - - - public static TarmDecomiso find(String numerotransaccion) { - try { - DecomisoController cc = new DecomisoController(); - cc. init(); - cc.recperpage = 300; - cc.addFilter("numerotransaccion", numerotransaccion); - cc.querydatabase(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoMaterialController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoMaterialController.java.svn-base deleted file mode 100644 index 3404d51..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DecomisoMaterialController.java.svn-base +++ /dev/null @@ -1,2373 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.ByteArrayInputStream; -import java.io.InputStream; -import java.io.OutputStream; -import java.math.BigDecimal; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.Iterator; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmaExplosivoLovController; -import com.fp.frontend.controller.armas.lov.ArmasLovController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.frontend.webservices.snap.cedula.ClienteCedula; -import com.fp.frontend.webservices.snap.ruc.ClienteRUC; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -import ec.gob.registrocivil.consultacedula.Cedula; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - -/** - * Clase controladora del bean TarmDecomiso. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DecomisoMaterialController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public DecomisoMaterialController() throws Exception { - super(AbstractDataTransport.class); - } - /** - * Controlador que maneja el decomiso - */ - @ManagedProperty(value = "#{decomisoController}") - private DecomisoController decomisoController; - /** - * Controlador que maneja PersonDetail - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController personDetailController; - /** - * Controlador que maneja PersonPhone - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController personPhoneController; - - /** - * Detalle del usuario - */ - private TcustPersonDetail usuario; - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasLovController}") - private ArmasLovController armasLovController; - /** - * Controlador que maneja TarmRegistroArmas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmController; - /** - * Controlador que maneja TarmDecomisoArma - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - /** - * Controlador Inyectado ReportController - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lparroquias; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcities; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoProceso; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoDocumeno; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List grados; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List unidades; - - private TsafeUserDetail tsafeUserDetail; - - private String centroControl; - - private String unidad; - - private TarmCentroControl centroControlLogeado; - - private List centroControls; - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - /** - * Deshabilita la pantalla materiales después de grabar la solicitud - */ - private boolean deshabilitarPantallaMaterial; - /** - * Atributo para setear el portador del arma - */ - private TcustPersonDetail tcustPersonDetailPortador; - - private String nombrePortador; - /** - /** - * Atributo para ingresar el numero de identificacion del propietario - */ - private String identificacionPro; - /** - * Atributo para ingresar el tipo de identificacion del propietario - */ - private String tipoIdentificacionPro; - /** - * Variables de tipo boolean para selecionar el usuario sin portador - */ - private boolean sinPortador; - /** - * Variables de tipo boolean para selecionar el usuario sin documento - */ - private boolean sinDocumento; - - /** - * Variables de tipo boolean para habilitar el boton crear en el lov registro material - */ - private boolean habilitaNoDecomiso; - /** - * Variables que permite el ingreso de un portador - */ - private String ingresoPortador; - /** - * Variables de tipo boolean para selecionar el usuario sin portador - */ - private boolean sinIdentificacion; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List motivoDecomisoList; - /** - * Listado de marcas - */ - private List lmarca; - /** - * Listado de colores - */ - private List lcolor; - /** - * Listado de tipos de fabricación - */ - private List ltipofabricacion; - /** - * Listado de paises - */ - private List lcountry; - - /** - * codigo del de arma - */ - private String codigoArma; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo de la persona por defaul - */ - private String codigoPersonaSinIdentificacion; - - private String codigoTelefonoFijo; - /** - * descripción de la unidad de medida - */ - private String codigoUnidadpeso; - /** - * codigo del ruc - */ - private String codigoPasaporte; - /** - * descripción de la unidad de medida - */ - private String unidadpeso; - /** - * descripción de la unidad de medida - */ - private String descripcionUnidadpeso; - /** - * Tipo del arma explosivo - */ - private TarmTipoArmaExplosivo tipoArmaExplosivo ; - /** - * Arma seleccionada para el decomiso - */ - private List armaSeleccionadaList; - /** - * atributo para bloquear el boton - */ - private Boolean btn; - - /** - * atributo para bloquear el boton - */ - private Boolean btnfileUpload; - - /** - * atributo para bloquear el boton save - */ - private Boolean btnSave; - - /** - * atributo para bloquear el boton - */ - private Boolean btnRegistro; - - /** - * atributo para bloquear el boton tramite sino executa el reporte registo - */ - private Boolean isExecuteRegistro; - /** - * codigo del pais de origen - */ - private String codigoPaisOrigen; - /** - * Variable para el envio del mail - */ - private String cdecomiso; - - private Boolean btnPeso; - - private Boolean btnCantidad; - /** - * codigo de la provincia del usuario que se logueo - */ - private String cprovincia; - - /** - * latitud de la direccin en el google map - */ - private String latitud; - /** - * longitud de la direccin en el google map - */ - private String longitud; - /** - * direccion en la que se va ha visualizar el map - */ - private String direccionGoogleMap; - /** - * Propiedad que premite controlar operaciones de cargar archivos al Alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - /** - * Variable que nos permite cargar el comprobante de deposito al Alfresco - */ - private UploadedFile uploadedFile; - /** - * tipoMapa permite visualizar la posicion del mapa por direccion o por coordenadas - */ - private String tipoMapa; - /** - * Nombre de la persona o empresa del decomisado sin documento - */ - private String nombrerazonsocialsindoc; - - private String latitudG; - private String latitudM; - private String latitudS; - private String longuitudG; - private String longuitudM; - private String longuitudS; - - private String latitudGMS; - private String longitudGMS; - /** - * Se recupera el filename del pdf para la descarga. - */ - private String filename; - /** - * Se recupera del pdf el byteArray para la descarga. - */ - private byte[] byteArray; - - /** - * Indica si se debe activar la pestana de seleccionar material - */ - private boolean seleccionarMaterial; - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - public void init() { - try { - setDireccionGoogleMap("Ecuador"); - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "DECOMISOMATERIAL"; - decomisoController.create(); - decomisoController.clearAll(); - personDetailController.create(); - armasController.clearAll(); - getArmasLovController().clearAll(); - seleccionarMaterial = Boolean.FALSE; - btn= Boolean.FALSE; - btnfileUpload= Boolean.FALSE; - btnSave= Boolean.TRUE; - btnRegistro= Boolean.TRUE; - isExecuteRegistro= Boolean.FALSE; - deshabilitarPantalla = Boolean.FALSE; - deshabilitarPantallaMaterial = Boolean.FALSE; - sinDocumento = Boolean.FALSE; - habilitaNoDecomiso = Boolean.FALSE; - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - //obtencion del centro de control - obtenerProvincia(); - //centroControls=CatalogDetailController.find("INSTITUCION"); - centroControl = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - unidad = tsafeUserDetail.getModifiedData().get("unidad").toString(); - - lprovinces = ProvinceController.find("EC"); - //catalogo de (decomiso incautacion) - tipoProceso = CatalogDetailController.find("TIPOREGISTRO", "DECINC"); - tipoDocumeno = CatalogDetailController.find("IDENTIFICATION"); - grados = CatalogDetailController.find("MILITARYGRADE"); - unidades = new ArrayList<>(); - - lmarca = CatalogDetailController.find("MARCA"); - lcolor = CatalogDetailController.find("COLOR"); - ltipofabricacion = CatalogDetailController.find("TIPOFABRICACION"); - lcountry = CountryController.find(); - // seteo de variables - decomisoController.getRecord().setFecharegistro(new java.sql.Date(new Date().getTime())); - //decomisoController.getRecord().setOrganismocontrol(centroControl.getModifiedData().get("desinstitucion").toString()); - decomisoController.getRecord().setCountrycode("EC"); - //consulta de los codigos a utilizarse en la pantalla - codigoArma=codigos("CODIGO.ARMADEFUEGO"); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - codigoUnidadpeso=codigos("CODIGO.PESO"); - //codigoPersonaPortador=codigos("CODIGO.PERSONA.SINPORTADOR"); - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - codigoPersonaSinIdentificacion=codigos("CODIGO.PERSONA.SINPROPIETARIO"); - tcustPersonDetailPortador=null; - sinPortador=Boolean.FALSE; - armaSeleccionadaList=new ArrayList(); - cdecomiso=null; - btnPeso=Boolean.FALSE; - btnCantidad=Boolean.FALSE; - latitudG = ""; - latitudM = ""; - latitudS = ""; - longuitudG = ""; - longuitudM = ""; - longuitudS = ""; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerProvincia() throws Exception { - tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - cprovincia=tcustPersonAddres.getProvincecode(); - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal")); - return; - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(getBeanalias(), dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - resp.get(getBeanalias()); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - - //valida que el documento de activida de control este cargado - if(uploadedFile == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionearchivodecomisoincautacion")); - return; - } - - //valida si esta ingresado el funcionario - if(decomisoController.getRecord().getFuncionario()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingrese_funcionario")); - return; - } - //Accion de dialog materiales - //armasSeleccionada(); - - //valida que el arma este seleccionada - if(armaSeleccionadaList==null || armaSeleccionadaList.size()==0){ - String tipoprocesoStr = catalogoDescripcion(tipoProceso,decomisoController.getRecord().getTipoproceso()); - if(tipoprocesoStr == null || tipoprocesoStr.isEmpty()){ - tipoprocesoStr = " DECOMISO"; - } - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneelarmaarealizareldecomisoincautacion") +" "+tipoprocesoStr); - return; - } - - if(sinDocumento){//validamos que se haya pulsado el boton de verificar o selecionado no propietario - tcustPersonDetailPortador=PersonDetailController.find(codigoPersonaSinIdentificacion); - decomisoController.getRecord().setNumerodocumento(tcustPersonDetailPortador.getIdentification()); - if(nombrerazonsocialsindoc!=null && !nombrerazonsocialsindoc.isEmpty()){ - decomisoController.getRecord().setNombrerazonsocial(nombrerazonsocialsindoc); - } - } - //validamos si tcustPersonDetailPortador este lleno o si han seleccionado sin portador para asignarle el por default - if(sinPortador){//validamos que se haya pulsado el boton de verificar o selecionado no propietario - tcustPersonDetailPortador=PersonDetailController.find(codigoPersonaSinIdentificacion); - decomisoController.getRecord().setNumerodocumento(tcustPersonDetailPortador.getIdentification()); - } - if(tcustPersonDetailPortador==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesinportadoroverifiqueusuarioexistente")); - return; - } - HashMap msave = new HashMap(); -//----------datos del PERSONA - actualizaDatosPersonaPortador(); - //persona detalle - DtoSave dtosavePersondetail = personDetailController.getDtoSave(); - dtosavePersondetail.setReturnpk(true); - dtosavePersondetail.setPosition(1); - msave.put(personDetailController.getBeanalias(), dtosavePersondetail); - //telefono - DtoSave dtosavePersonphone = personPhoneController.getDtoSave(); - dtosavePersonphone.setReturnpk(true); - dtosavePersonphone.setPosition(6); - msave.put(personPhoneController.getBeanalias(), dtosavePersonphone); - //----------DATOS DE ARMAS-REGISTRO DE ARMAS - //registro de armas - armasSeleccionadas(); - //armas - DtoSave dtosaveArma = armasController.getDtoSave();//lleno - dtosaveArma.setPosition(3); - msave.put(armasController.getBeanalias(), dtosaveArma); - //registroarma - DtoSave dtosaveRegistroArma= registroArmController.getDtoSave();//vacio - dtosaveRegistroArma.setReturnpk(true); - dtosaveRegistroArma.setPosition(2); - msave.put(registroArmController.getBeanalias(), dtosaveRegistroArma); -//----------DECOMISO - //decomiso incautacion - //codigo de la person a que realiza el decomiso - decomisoController.getRecord().setPersoncoderegistra(tsafeUserDetail.getPk().getPersoncode()); - //tipo proceso - decomisoController.getRecord().setTipoprocesocode("TIPOREGISTRO"); - //tipo identificacion - decomisoController.getRecord().setTipodocumentocode("IDENTIFICATION"); - //tipo de gardo del militar - decomisoController.getRecord().setGradofuncionariocode("MILITARYGRADE"); - //catalogo del centro de control - decomisoController.getRecord().setCcentrocontrol(tsafeUserDetail.getCcentrocontrol()); - decomisoController.getRecord().setOrganismocontrol(centroControl); - decomisoController.update(); - - DtoSave dtosaveDecomiso= decomisoController.getDtoSave(); - dtosaveDecomiso.setPosition(4); - dtosaveDecomiso.setReturnpk(true); - msave.put(decomisoController.getBeanalias(), dtosaveDecomiso); -//----------DECOMISO ARMA CONTROLLER - DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); - dtosaveDecomisoArma.setPosition(5); - msave.put(decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); - - msave.put(this.beanalias, dtosave); - request.setSaveTables(msave); -//---------TransactionRule DecomisoMAterial - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - btn = Boolean.TRUE; - btnSave = Boolean.TRUE; - btnRegistro = Boolean.FALSE; - deshabilitarPantalla = Boolean.TRUE; - deshabilitarPantallaMaterial = Boolean.TRUE; - decomisoController.postCommit(resp); - decomisoController.getRecord().setNumerotransaccion(resp.get("numerotransaccion").toString()); - cdecomiso=resp.get("cdecomiso").toString(); - - //----------ARCHIVO ALFRESCO - subirArchivoAlfresco(); - imprimir(); - decomisoController.getRecord().setIsnew(false); - //Se actualizan los path de los reportes en el alfresco - decomisoController.update(); - decomisoController.save(); - - uploadedFile = null; - armaSeleccionadaList = null; - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("lbl_numerotransaccion") +": "+resp.get("numerotransaccion").toString()); - - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - /** - * Metodo que permite grabar el documento de decommiso en el Alfresco - * @param decomiso - * */ - public void subirArchivoAlfresco() { - try { - - String tipoprocesoStr = catalogoDescripcion(tipoProceso,decomisoController.getRecord().getTipoproceso()); - - String xPathLocation= getRutaDocumentoSolBase() + "/cm:" + unidad.replace(" ", "_") + "/cm:" + tipoprocesoStr.replace(" ", "_") + "/cm:" + decomisoController.getRecord().getNumerotransaccion(); - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String extencionArchivo=getExtension(uploadedFile.getFileName()); - String nombreArchivo = "CMPREC-"+decomisoController.getRecord().getNumerorecibo()+"."+extencionArchivo; - //"cm:Decomiso/cm:A-2016/cm:M-01/cm:CENTRO CONTROL/cm:ABANDONO/cm:ABAN-00000123/cm:CMPREC-000000319.pdf" - decomisoController.getRecord().setXpath(xPathLocation + "/cm:" + nombreArchivo); - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - decomisoController.getRecord().setXpath(xPathLocation + "/cm:" + nombreArchivo); - - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_decomisoSinDatosAsociados")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseDocumentoDecomiso")); - } - - - - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Metodo que genera el reporte recibo registro - * @param fila - */ - public void imprimir() { - try { - - querydatabase(); - //String gradoUsuario =""; - String path = "armas/reports/registrodecomisomaterial"; - //String filename="REGISTRODECOMISO"+"-"+decomisoController.getRecord().getNumerorecibo(); - filename = "CMPREG-"+decomisoController.getRecord().getNumerorecibo(); - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - String tipoprocesoStr = catalogoDescripcion(tipoProceso,decomisoController.getRecord().getTipoproceso()); - String provinciaStr = ProvinceController.getDescProvByCodigo(decomisoController.getRecord().getCountrycode(),decomisoController.getRecord().getProvincecode()); - String cantonStr = CantonController.getDescCantonByCodigo(decomisoController.getRecord().getCountrycode(),decomisoController.getRecord().getProvincecode(),decomisoController.getRecord().getCantoncode()); - String cuidadStr = CityController.getDescCiudadByCodigo(decomisoController.getRecord().getCountrycode(),decomisoController.getRecord().getProvincecode(),decomisoController.getRecord().getCantoncode(),decomisoController.getRecord().getCitycode()); - String parroquiaStr = ParroquiaController.getDescParroquiaByCodigo(decomisoController.getRecord().getCountrycode(),decomisoController.getRecord().getProvincecode(),decomisoController.getRecord().getCantoncode(),decomisoController.getRecord().getParroquiacode()); - - - //Tipo Proceso - parameters.put("tipoproceso", "RECIBO DE REGISTRO "+tipoprocesoStr); - //No. Transaccion - parameters.put("pnumerotransaccion", decomisoController.getRecord().getNumerotransaccion()); - //Nombre de la persona que decommisa - parameters.put("nombredecomisadopor", decomisoController.getRecord().getFuncionario()); - //No. Documento - parameters.put("numerodocumento", decomisoController.getRecord().getCedulafuncionario()); - //Organismo de Control - parameters.put("organismocontrol", decomisoController.getRecord().getOrganismocontrol()); - //Unidad de Control - parameters.put("unidadcontrol", unidad); - //No. Comprobante recibo - parameters.put("numerocomprobante", decomisoController.getRecord().getNumerorecibo()); - //Fecha Decomiso - parameters.put("fechadecomiso", decomisoController.getRecord().getFechadecomiso()); - //Fecha Registro Decomiso - parameters.put("fecharegistrodecomiso", decomisoController.getRecord().getFecharegistro()); - //Provincia Decomiso - parameters.put("provinciadecomiso", provinciaStr); - //Canton Decomiso - parameters.put("cantondecomiso", cantonStr); - //Cuidad Decomiso - parameters.put("cuidaddecomiso", cuidadStr); - //Parroquia Decomiso - parameters.put("parroquiadecomiso", parroquiaStr); - //Direccion Decomiso - parameters.put("direcciondecomiso", decomisoController.getRecord().getDireccion()); - //Portador Decomiso - parameters.put("portadordecomiso", decomisoController.getRecord().getNombrerazonsocial()); - //No. Documento Portador - parameters.put("numerodocumentoportador", decomisoController.getRecord().getNumerodocumento()); - //Usuario - parameters.put("usuario",this.usuario.getName()); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - String format = "pdf"; - - byteArray = this.reportController.jaspertoByteArray(path, parameters, format, filename, this.getLoginController()); - - // Se obtiene el InputStream para subir el archivo alfresco - InputStream inputStream = new ByteArrayInputStream(byteArray); - - String nombreArchivo = (filename!=null && !filename.isEmpty()) ? filename+"."+format : null; - String xPathLocation= getRutaDocumentoSolBase() + "/cm:" + unidad.replace(" ", "_") + "/cm:" + tipoprocesoStr.replace(" ", "_") + "/cm:" + decomisoController.getRecord().getNumerotransaccion(); - //="cm:Decomiso/cm:A-2016/cm:M-01/cm:CENTRO CONTROL/cm:ABANDONO/cm:ABAN-00000123/cm:CMPREG-000000319.pdf" - if (nombreArchivo != null && xPathLocation != null && inputStream != null) { - decomisoController.getRecord().setComprobantexpath(xPathLocation + "/cm:" + nombreArchivo); - if (alfrescoController.uploadFile(inputStream, nombreArchivo, xPathLocation)) { - decomisoController.getRecord().setComprobantexpath(xPathLocation + "/cm:" + nombreArchivo); - } - } else { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_subiroarchivoregistrorecibo").concat("("+nombreArchivo+")")); - - } - //Se executo el reporte - //isExecuteRegistro= Boolean.TRUE; - } catch (Exception ex) { - //isExecuteRegistro= Boolean.FALSE; - MessageHelper.setMessageError(ex); - return; - } - - } - - /** - * Metodo que genera el reporte recibo registro - */ - public void imprimirDocGenerado() { - try{ - HttpServletResponse response = (HttpServletResponse) FacesContext.getCurrentInstance().getExternalContext().getResponse(); - // Se nombra igual que el documento pdf que se encuentra en el alfresco - response.addHeader("Content-disposition", "attachment; filename=" + filename + ".pdf"); - - OutputStream outputStream = response.getOutputStream(); - // Se escribe en el documento pdf el byte array recuperado del metodo imprimir - outputStream.write(byteArray); - outputStream.flush(); - outputStream.close(); - FacesContext.getCurrentInstance().responseComplete(); - } catch (Exception ex) { - - MessageHelper.setMessageError(ex); - return; - } - } - - - - /** - * Actualiza los datos del portador del arma - * @throws Exception - */ - private void actualizaDatosPersonaPortador() throws Exception { - personDetailController.clearAll(); - // VALIDAMOS EL PORTADOR - if (tcustPersonDetailPortador.getPk() == null|| tcustPersonDetailPortador.getPk().getPersoncode() == null) { - // seteamos al portador - tcustPersonDetailPortador.setIsnew(true); - tcustPersonDetailPortador.setName(decomisoController.getRecord().getNombrerazonsocial()); - tcustPersonDetailPortador.setIdentification(decomisoController.getRecord().getNumerodocumento()); - tcustPersonDetailPortador.setIdentificationcatalog(decomisoController.getRecord().getTipodocumento()); - tcustPersonDetailPortador.setIdentificationcatalogcode("IDENTIFICATION"); - personDetailController.setRecord(tcustPersonDetailPortador); - personDetailController.update(); - // creacion del telefono - if (decomisoController.getRecord().getTelefono() != null&& decomisoController.getRecord().getTelefono().length() > 0) { - personPhoneController.create(); - personPhoneController.getRecord().setPhonetypecatalog(codigoTelefonoFijo); - personPhoneController.getRecord().setPhonetypecatalogcode("PHONETYPE"); - personPhoneController.getRecord().setPhonenumber(decomisoController.getRecord().getTelefono()); - personPhoneController.actualizar(); - } - } else { - decomisoController.getRecord().setPersoncode(tcustPersonDetailPortador.getPk().getPersoncode()); - } - } - - - - - /** - * Valida el si selecciona un arma - * @throws Exception - */ - private void armasSeleccionadas() throws Exception{ - armasController.clearAll(); - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", decomisoController.getRecord().getTipoproceso()).get(0); - for(TarmArmas armas:armaSeleccionadaList){ - //TarmArmas t= (TarmArmas)armas.cloneMe(); - armasController.setRecord((TarmArmas)armas.cloneMe()); - //t.getModifiedData().put("estadoseleccion",Boolean.FALSE); //selecciona solo un registro - if(armasController.getRecord().getModifiedData().get("estadoseleccion").equals(Boolean.TRUE)){ - armasController.getRecord().setIsnew(true); - armasController.getRecord().setPk(null); - armasController.getRecord().setEstado(estadoArma.getPk().getCatalog()); - armasController.getRecord().setEstadocodigo("ESTADOARMA"); - //fech de registro - armasController.getRecord().setFecharegistro(new java.sql.Date(new Date().getTime())); - armasController.actualizar(armasController.getRecord()); - } - } - } - - /** - * Método que limpia las variables cuando escoge tipo documento - */ -// public void tipoDocumentoSel(AjaxBehaviorEvent event){ -// if(event.getComponent().getAttributes().get("value") != null){ - public void tipoDocumentoSel(){ - if(this.decomisoController.getRecord().getTipodocumento() != null){ - ingresoPortador = "CON DOCUMENTO"; - validacioIngresoPortador(); - }else{ - ingresoPortador = null; - validacioIngresoPortador(); - - } - } - - /** - * Método que limpia las variables cundo chequea sin portador - */ - public void sinPortador(){ - - if(sinPortador){ - ingresoPortador = "SIN PORTADOR"; - validacioIngresoPortador(); - }else{ - ingresoPortador = null; - validacioIngresoPortador(); - } - - } - - /** - * Método que limpia las variables cundo chequea sin portador - */ - public void sinDocumento(){ - if(sinDocumento){ - ingresoPortador = "SIN DOCUMENTO"; - validacioIngresoPortador(); - }else{ - ingresoPortador = null; - validacioIngresoPortador(); - } - - - - } - - private void validacioIngresoPortador(){ - if(ingresoPortador==null){ - sinDocumento = Boolean.FALSE; - sinPortador = Boolean.FALSE; - this.decomisoController.getRecord().setTipodocumento(null); - this.decomisoController.getRecord().setNumerodocumento(null); - this.decomisoController.getRecord().setNombrerazonsocial(null); - }else if(ingresoPortador.equals("SIN PORTADOR")){ - sinDocumento = Boolean.FALSE; - this.decomisoController.getRecord().setTipodocumento(null); - this.decomisoController.getRecord().setNumerodocumento(null); - this.decomisoController.getRecord().setNombrerazonsocial(null); - }else if(ingresoPortador.equals("SIN DOCUMENTO")){ - sinPortador = Boolean.FALSE; - this.decomisoController.getRecord().setTipodocumento(null); - this.decomisoController.getRecord().setNumerodocumento(null); - this.decomisoController.getRecord().setNombrerazonsocial(null); - - }else if(ingresoPortador.equals("CON DOCUMENTO")){ - sinPortador = Boolean.FALSE; - sinDocumento = Boolean.FALSE; - /*this.decomisoController.getRecord().setNumerodocumento(null); - this.decomisoController.getRecord().setNombrerazonsocial(null);*/ - } - - } - - - /** - * Método para inicializar la lista de las armas - * y validacién de los datos del portador - */ - public void registrarMaterial(){ - if(!sinPortador && !sinDocumento){ - validarPortador(); - } - //valida que el documento de activida de control este cargado - if(uploadedFile == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_recuerdeClickCargarDocActControl")); - return; - } - armasController.setLrecord(new ArrayList()); - armasController.getMfilters().put("lote", null); - - if (decomisoController.getRecord().getTipoproceso().equals("INCA")) { - habilitaNoDecomiso = Boolean.TRUE; - } - deshabilitarPantalla = Boolean.TRUE; - seleccionarMaterial = Boolean.TRUE; - btnfileUpload= Boolean.TRUE; - btn= Boolean.TRUE; - btnSave= Boolean.TRUE; - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickTabRegMaterial"))); - - } - - public void changeTipoProceso(){ - - if (decomisoController.getRecord().getTipoproceso().equals("INCA")) { - habilitaNoDecomiso = Boolean.TRUE; - }else{ - habilitaNoDecomiso = Boolean.FALSE; - } - - String catalogReg = decomisoController.getRecord().getTipoproceso(); - motivoDecomisoList = new ArrayList(); - if (catalogReg != null && !catalogReg.equals("")) { - if (catalogReg.equals("INCA")) { - catalogReg = "DECO"; - } - motivoDecomisoList = CatalogDetailController.find("MOTIVODECOMISO", - catalogReg); - } else { - motivoDecomisoList = CatalogDetailController.find("MOTIVODECOMISO"); - } - } - - /** - * Método que se ejecuta al pulsar el boton aceptar del dialog que lista las armas a seleccionar - * Valida si selecciono algun registro si no le obliga a seleccionar - */ - public void armasSeleccionada(){ - //validamos que de la lista exista un registro escogido - armaSeleccionadaList=new ArrayList(); - for(TarmArmas t:armasController.getLrecord()){ - if(Boolean.TRUE.equals(t.getModifiedData().get("estadoseleccion"))){ - armaSeleccionadaList.add(t); - } - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((decomisoController.getRecord().getCountrycode() != null) && (decomisoController.getRecord().getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(decomisoController.getRecord().getCountrycode(), decomisoController.getRecord().getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((decomisoController.getRecord().getCountrycode() != null) && (decomisoController.getRecord().getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(decomisoController.getRecord().getCountrycode(), decomisoController.getRecord().getProvincecode(), decomisoController.getRecord().getCantoncode()); - lcities = CityController.find(decomisoController.getRecord().getCountrycode(), decomisoController.getRecord().getProvincecode(), decomisoController.getRecord().getCantoncode()); - } - } - - /** - * Método para el evento change del combo ciudad - */ - public void executeCiudad() { - if ((decomisoController.getRecord().getCantoncode() != null) && (decomisoController.getRecord().getCantoncode().compareTo("") != 0)) { - List lcities = CityController.find(decomisoController.getRecord().getCountrycode(), decomisoController.getRecord().getProvincecode(), decomisoController.getRecord().getCantoncode()); - setDireccionGoogleMap(lcities.get(0).getDescription() + ", " + "Ecuador"); - } - } - - /** - * Método que valida la persona portadora del arma o explosivo - * en las tablas de maia y en la snap - * - */ - public void validarPortador(){ - //this.decomisoController.getRecord().setNombrerazonsocial(null); -//-------------------validar SELECCION TIPO UBICACION - if(tipoMapa == null || "".equals(tipoMapa)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipoMapa")); - return; - } -//-------------------validar LATITUD Y LONGITUD - if(decomisoController.getRecord().getLatitud()==null || decomisoController.getRecord().getLongitud()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselongitudlatitud")); - return; - } - if(decomisoController.getRecord().getNumerodocumento()==null || decomisoController.getRecord().getTipodocumento()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - if(decomisoController.getRecord().getTipodocumento().equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(decomisoController.getRecord().getNumerodocumento())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetailPortador=buscarPersonaMaia(decomisoController.getRecord().getNumerodocumento(),decomisoController.getRecord().getTipodocumento()); - if(tcustPersonDetailPortador==null){ - //envia a buscar en la SNAP - tcustPersonDetailPortador=buscarPersonaSnap(decomisoController.getRecord().getNumerodocumento(),decomisoController.getRecord().getTipodocumento()); - } - }else if(decomisoController.getRecord().getTipodocumento().equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(decomisoController.getRecord().getNumerodocumento())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetailPortador=buscarPersonaMaia(decomisoController.getRecord().getNumerodocumento(),decomisoController.getRecord().getTipodocumento()); - if(tcustPersonDetailPortador==null){ - //envia a buscar en la snap - tcustPersonDetailPortador=buscarPersonaSnap(decomisoController.getRecord().getNumerodocumento(),decomisoController.getRecord().getTipodocumento()); - } - }else{ -//----------si es PASAPORTE - tcustPersonDetailPortador=buscarPersonaMaia(decomisoController.getRecord().getNumerodocumento(),decomisoController.getRecord().getTipodocumento()); - if(tcustPersonDetailPortador==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_usuarionoencontrado")); - tcustPersonDetailPortador= new TcustPersonDetail(); - tcustPersonDetailPortador.setIdentification(decomisoController.getRecord().getNumerodocumento()); - tcustPersonDetailPortador.setIdentificationcatalog(decomisoController.getRecord().getTipodocumento()); - tcustPersonDetailPortador.setIdentificationcatalogcode("IDENTIFICATION"); - tcustPersonDetailPortador.setName(decomisoController.getRecord().getNombrerazonsocial()); - - } - } - //validamos que existe la persona en Maia o SNAP - if(tcustPersonDetailPortador!=null && tcustPersonDetailPortador.getIdentification()!=null && tcustPersonDetailPortador.getName()!=null){ - //seteamos el nombre para visualizarle - decomisoController.getRecord().setNombrerazonsocial(tcustPersonDetailPortador.getName()); - nombrePortador = tcustPersonDetailPortador.getName(); - }else if(!decomisoController.getRecord().getTipodocumento().equals(codigoPasaporte)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_usuarionoencontrado")); - tcustPersonDetailPortador= new TcustPersonDetail(); - - } - - } - - /** - * Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - - /** - * Método para buscar a la persona en la snap - * @param documento - */ - public TcustPersonDetail buscarPersonaSnap(String documento,String tipoDocumento){ - if(tipoDocumento.equals(codigoCedula)){ - Cedula cedula= ClienteCedula.obtenerCedula(documento); - if(cedula!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(cedula.getNombre()); - detail.setIdentification(cedula.getCedula()); - detail.setIdentificationcatalog("CED"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - detail.setDatefrom(new Timestamp(System.currentTimeMillis())); - return detail; - }else{ - return null; - } - }else { - Contribuyente contribuyente= ClienteRUC.obtenerRUC(documento); - if(contribuyente!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(contribuyente.getRazonSocial()); - detail.setIdentification(contribuyente.getNumeroRuc()); - detail.setIdentificationcatalog("RUC"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - detail.setDatefrom(new Timestamp(System.currentTimeMillis())); - return detail; - }else{ - return null; - } - } - } - - - /** - * Método para manejar el evento change en el CheckBox - * Arma a decomisar - * @throws Exception - */ - public void onChange(TarmArmas arma) throws Exception { - - for(TarmArmas t:armasController.getLrecord()){ - //t.getModifiedData().put("estadoseleccion",Boolean.FALSE); //selecciona solo un registro - if(arma.getPk()==null && t.getPk()==null){ - if(validacioncampos(arma)){ - }else{ - t.getModifiedData().put("estadoseleccion",Boolean.FALSE); - } - }else if(arma.getPk()!=null && arma.getPk().equals(t.getPk())){ - if(validacioncampos(arma)){ - //arma.getModifiedData().put("estadoseleccion",Boolean.TRUE); - //le asignamos un umero para que le ordene - if (armaSeleccionadaList.contains(arma)) { - arma.getModifiedData().put("ordenarma", 0); - armaSeleccionadaList.remove(arma); - armaSeleccionadaList.add(arma); - }else{ - armaSeleccionadaList.add(arma); - } - }else{ - t.getModifiedData().put("estadoseleccion",Boolean.FALSE); - if(armaSeleccionadaList.contains(arma)){ - armaSeleccionadaList.remove(arma); - } - } - } - - - } - - } - - /** - * Método para validar los campos esten ingresados - * @param arma - * @return - */ - private Boolean validacioncampos(TarmArmas arma){ - if(arma.getModifiedData().get("motivocatalogo")==null){ - MessageHelper.setMessageError("INGRESE EL MOTIVO DE DECOMISO/INCAUTACION DEL ARMA CODIDGO : "+arma.getPk()); - return false; - } - if(arma.getModifiedData().get("cantidad")==null){ - MessageHelper.setMessageError("INGRESE EL MOTIVO DE DECOMISO/INCAUTACION DEL ARMA CODIDGO : "+arma.getPk()); - return false; - } - if(arma.getModifiedData().get("observaciondecomiso")==null){ - MessageHelper.setMessageError("INGRESE EL MOTIVO DE DECOMISO/INCAUTACION DEL ARMA CODIDGO : "+arma.getPk()); - return false; - } - - return true ; - } - /** - * Método para ingresar el motivo del decomiso - * desde el popup - */ - public void datosDecomiso(){ - if(decomisoController.getRecord().getTipoproceso()==null ||decomisoController.getRecord().getTipoproceso().isEmpty()){ - MessageHelper.setMessageError("INGRESE EL TIPO DE PROCESO EN DATOS GENERALES"); - return; - }/*else{ - String catalogReg = decomisoController.getRecord().getTipoproceso(); - if(catalogReg.equals("INCA")){ - catalogReg = "DECO"; - } - motivoDecomisoList = CatalogDetailController.find("MOTIVODECOMISO",catalogReg); - }*/ - - try { - //se setea el tipo del proceso - if(armasController.getRecord().getModifiedData().get("estadodecomiso")==null){ - armasController.getRecord().getModifiedData().put("estadodecomiso", decomisoController.getRecord().getTipoproceso()); - } - - if(armasController.getRecord().getCantidad()!=null){ - armasController.getRecord().getModifiedData().put("cantidad", armasController.getRecord().getCantidad()); - } - if(armasController.getRecord().getPeso()!=null){ - armasController.getRecord().getModifiedData().put("cantidad", armasController.getRecord().getPeso()); - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para actualizar el motivo del decomiso del arma arma existente - * se ejecuta en el botón del formulario del motivo de decomiso - */ - public void actualizarDecomiso(){ - - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", decomisoController.getRecord().getTipoproceso()).get(0); - if(estadoArma!=null){ - armasController.getRecord().getModifiedData().put("estadodecomisodesc", estadoArma.getDescription()); - } - //seteod de los codigos - armasController.getRecord().getModifiedData().put("motivocatalogocode", "MOTIVODECOMISO"); - armasController.getRecord().getModifiedData().put("estadodecomisocode", "TIPOREGISTRO"); - //descripcion del motivodecomiso - catalogos(motivoDecomisoList, armasController.getRecord().getModifiedData().get("motivocatalogo").toString(), "motivodecomisodesc"); - } - - /** - * Método para actualizar el arma cuando ya llena los datos en el formulario de crear arma - * @throws Exception - */ - public void actualizarArmaCreada() throws Exception { - //valida la combinacion del arma que exista - if(tipoArmaExplosivo == null || tipoArmaExplosivo.getPk()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_camposrequeridos")); - return; - } - //armasController.clearAll(); -// for(TarmArmas t:armasController.getLrecord()){ -// t.getModifiedData().put("estadoseleccion",Boolean.FALSE); -// } - //DATOS PARA VISUALIZAR EN PANTALLA - //DATOS DE LA GRILLA - //cantidad - if(armasController.getRecord().getCantidad()!=null && armasController.getRecord().getCantidad()>0){ - armasController.getRecord().getModifiedData().put("cantidad", armasController.getRecord().getCantidad()); - } - if(armasController.getRecord().getPeso()!=null && armasController.getRecord().getPeso().compareTo(new BigDecimal(0))>0){ - armasController.getRecord().getModifiedData().put("cantidad", armasController.getRecord().getPeso()); - } - //propietario - TcustPersonDetail tcustPersonDetail=PersonDetailController.find(codigoPersonaSinIdentificacion); - armasController.getRecord().getModifiedData().put("propietario", tcustPersonDetail.getName()); - //unidad de medida - armasController.getRecord().getModifiedData().put("unidadmedida",tipoArmaExplosivo.getUnidadmedidapeso()); - //unidad de medida - armasController.getRecord().getModifiedData().put("unidadmedidadesc",tipoArmaExplosivo.getUnidadmedidapeso()); - //le asignamos una marca - - TgeneCatalogDetail marcaArma = CatalogDetailController.findCatalog("MARCA", armasController.getRecord().getMarca()).get(0); - if(marcaArma!=null){ - armasController.getRecord().getModifiedData().put("marca",marcaArma.getDescription()); - } - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", decomisoController.getRecord().getTipoproceso()).get(0); - if(estadoArma!=null){ - armasController.getRecord().getModifiedData().put("estado",estadoArma.getDescription()); - armasController.getRecord().getModifiedData().put("estadodecomisodesc", estadoArma.getDescription()); - } - - //motivo del decomiso - catalogos(motivoDecomisoList, armasController.getRecord().getModifiedData().get("motivocatalogo").toString(), "motivodecomisodesc"); - - //seteamos el check - armasController.getRecord().getModifiedData().put("estadoseleccion",Boolean.TRUE); - - //seteo de codigos - armasController.getRecord().getModifiedData().put("motivocatalogocode", "MOTIVODECOMISO");//['motivocatalogo'] - armasController.getRecord().getModifiedData().put("estadodecomisocode", "TIPOREGISTRO");//['estadodecomiso'] - - //datos para el REGISTROARMA - //personcode - armasController.getRecord().getModifiedData().put("personcode",tcustPersonDetail.getPk().getPersoncode()); - armasController.getRecord().getModifiedData().put("tiporegistro",decomisoController.getRecord().getTipoproceso()); - armasController.getRecord().getModifiedData().put("tiporegistrocode","TIPOREGISTRO"); - //pais de origen - armasController.getRecord().getModifiedData().put("paisorigen",codigoPaisOrigen); - //fecha de creacion - armasController.getRecord().getModifiedData().put("fechacreacion",new java.sql.Date(new Date().getTime())); - - //pais de origen - armasController.getRecord().setCpaisorigen(codigoPaisOrigen); - armasController.getRecord().setColorcodigo("COLOR"); - armasController.getRecord().setTipofabricacioncodigo("TIPOFABRICACION"); - //unidad de medida - armasController.getRecord().setUnidadmedidacantidad(tipoArmaExplosivo.getUnidadmedidapeso()); - armasController.getRecord().setUnidadmedidacantidadcodigo("UNIDADMEDIDA"); - //fech de registro - armasController.getRecord().setFecharegistro(new java.sql.Date(new Date().getTime())); - //le asignamos un umero para que le ordene - armasController.getRecord().getModifiedData().put("ordenarma",0); - //ACTUALIZA EL ARMA - armasController.actualizar(armasController.getRecord()); - //Valor razon social - //nombrePortador - decomisoController.getRecord().setNombrerazonsocial(nombrePortador); - //limpiamos la variable - tipoArmaExplosivo=null; - btnPeso=Boolean.FALSE; - btnCantidad=Boolean.FALSE; - - //ordena la lista lvigenciaMeses - Collections.sort(armasController.getLrecord(), new Comparator() { - public int compare(TarmArmas p1, TarmArmas p2) { - return String.valueOf(p1.getModifiedData().get("ordenarma")).compareTo(String.valueOf(p2.getModifiedData().get("ordenarma"))); - } - }); - - armaSeleccionadaList.add(armasController.getRecord()); - - } - - - /** - * Método para recorreer los combos y setear las descripciones de lo q se escoge - * para la vista - * @param list - * @param codigo - * @param pk - */ - public void catalogos(Listlist, String codigo,String pk){ - for(TgeneCatalogDetail item:list){ - if(codigo.equals(item.getPk().getCatalog())){ - armasController.getRecord().getModifiedData().put(pk, item.getDescription()); - break; - } - } - } - - /** - * Método para devolver la descripcion - * - * @param list - * @param codigo - * @return - */ - public String catalogoDescripcion(List list, String codigo) { - for (TgeneCatalogDetail item : list) { - if (codigo.equals(item.getPk().getCatalog())) { - return item.getDescription(); - } - } - return null; - } - - - /** - * Método para crear un arma a decomisar - * @throws Exception - */ - public void createArmaDecomisada() throws Exception { - //inicializamos el amra - armasController.create(); - armasController.getRecord().setCountrycode("EC"); - TgeneCatalogDetail estadoArma = CatalogDetailController.find("ESTADOARMA", decomisoController.getRecord().getTipoproceso()).get(0); - if(estadoArma!=null){ - armasController.getRecord().setEstado(estadoArma.getPk().getCatalog()); - } - armasController.getRecord().setEstadocodigo("ESTADOARMA"); - armasController.getRecord().setMarcacodigo("MARCA"); - armasController.setLprovincias(ProvinceController.find(armasController.getRecord().getCountrycode())); - armasController.executeProvince(); - unidadpeso=null; - descripcionUnidadpeso=null; -// tcustPersonDetailPropietario= new TcustPersonDetail(); - //se setea el tipo del proceso - armasController.getRecord().getModifiedData().put("estadodecomiso", decomisoController.getRecord().getTipoproceso()); - if(!sinPortador){ - //cargamos los datos del usuario portador - //tipo de identificacion - tipoIdentificacionPro=decomisoController.getRecord().getTipodocumento(); - //numero de documento - identificacionPro=decomisoController.getRecord().getNumerodocumento(); - //nombre razon social -// tcustPersonDetailPropietario.setName(decomisoController.getRecord().getNombrerazonsocial()); - } - //NUEVO - if(!sinDocumento){ - decomisoController.getRecord().setNombrerazonsocial(nombrerazonsocialsindoc); - } - codigoPaisOrigen=null; - descripcionUnidadpeso=null; - btnPeso=Boolean.FALSE; - btnCantidad=Boolean.FALSE; - } - - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaExplosivoLov() { - armasController.getRecord().getModifiedData().put("longitud", null); - armasController.getRecord().getModifiedData().put("tipoarmaexplosivo", null); - armasController.getRecord().getModifiedData().put("calibre", null); - descripcionUnidadpeso=null; - Map> params = new HashMap<>(); - ArmaExplosivoLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnArmaExplosivo(SelectEvent event) { - tipoArmaExplosivo = (TarmTipoArmaExplosivo) event.getObject(); - armasController.getRecord().setCantidad(null); - armasController.getRecord().setPeso(null); - armasController.getRecord().getModifiedData().put("clase", tipoArmaExplosivo.getModifiedData().get("nclase")); - armasController.getRecord().getModifiedData().put("tipoarmaexplosivo", tipoArmaExplosivo.getModifiedData().get("ntipo")); - armasController.getRecord().getModifiedData().put("longitud", tipoArmaExplosivo.getModifiedData().get("nlongitud")); - armasController.getRecord().getModifiedData().put("calibre", tipoArmaExplosivo.getModifiedData().get("ncalibre")); - if(tipoArmaExplosivo.getModifiedData().get("desunidad")!=null){ - unidadpeso=tipoArmaExplosivo.getModifiedData().get("desunidad").toString(); - }else{ - unidadpeso=null; - } - if(tipoArmaExplosivo.getClase().equals(codigoArma)){ - armasController.getRecord().setCantidad(1); - armasController.getRecord().getModifiedData().put("cantidad", 1); - }else{ - armasController.getRecord().setCantidad(null); - armasController.getRecord().getModifiedData().put("cantidad",null); - } - //codigo del arma explosivo - armasController.getRecord().setCtipoarmaexplosivo(tipoArmaExplosivo.getPk()); - btnPeso=Boolean.FALSE; - btnCantidad=Boolean.FALSE; - if(tipoArmaExplosivo.getModifiedData().get("deslegalcode")!=null){ - descripcionUnidadpeso=tipoArmaExplosivo.getModifiedData().get("deslegalcode").toString(); - if(codigoUnidadpeso.equals(descripcionUnidadpeso)){ - btnPeso=Boolean.TRUE; - }else{ - btnCantidad=Boolean.TRUE; - } - }else{ - descripcionUnidadpeso=null; - } - } - - /** - * Método para inicilalizar los campos segun la unidad de medida (unidad, kg) - - * @param cantidad - */ - public void cantidad(Integer cantidad){ - armasController.getRecord().setPeso(null); - armasController.getRecord().getModifiedData().put("cantidad", cantidad); - } - /** - * Método para inicilalizar los campos segun la unidad de medida (unidad, kg) - - * @param peso - */ - public void peso(BigDecimal peso){ - armasController.getRecord().setCantidad(null); - armasController.getRecord().getModifiedData().put("cantidad", peso); - } - - /** - * Método que elimina el arma creada solamente de la vista - * @param arma - */ - public void eliminarArmaVista(TarmArmas arma){ - try { - armasController.remove(); -// tcustPersonDetailPropietario= new TcustPersonDetail(); - tipoDocumeno=null; - identificacionPro=null; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Validacion de las fechas que no se amayor a la actual - * @param fech - */ - public void validarComprobanteRecibo(String numerorecibo){ - String tipoproceso = this.decomisoController.getRecord().getTipoproceso(); - String organismoControl = tsafeUserDetail.getCcentrocontrol(); - - if(tipoproceso ==null || tipoproceso.isEmpty()){ - decomisoController.getRecord().setNumerorecibo(""); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validarnumerocomprobanterecibo")); - return; - } - boolean isRecibo = DecomisoController.findReciboByTipoProcesoOrganismoControl(numerorecibo, tipoproceso, organismoControl); - if(isRecibo){ - decomisoController.getRecord().setNumerorecibo(""); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numerocomprobanterecibo")); - return; - } - } - - /** - * Validacion de las fechas que no se amayor a la actual - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fech=new Date(); - decomisoController.getRecord().setFechadecomiso(new java.sql.Date(new Date().getTime())); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechadecomisonopuedesermayoralaactual")); - } - } - - /** - * Método para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - public void querySelMaterial(){ - - try { - - noFiltrarCodigosEstados(); - armasLovController.setRecperpage(500); - armasLovController.query(); - - armasController.getLrecord().clear(); - - if (armasLovController.getLrecord() != null - || !armasLovController.getLrecord().isEmpty()) { - armasController.getLrecord().addAll(armasLovController.getLrecord()); - } - - if(armaSeleccionadaList !=null && !armaSeleccionadaList.isEmpty()){ - armasController.getLrecord().addAll(armaSeleccionadaList); - } - - //ordenamos la lista - Collections.sort(armasController.getLrecord(), new Comparator() { - public int compare(TarmArmas p1, TarmArmas p2) { - return String.valueOf(p1.getModifiedData().get("ordenarma")).compareTo(String.valueOf(p2.getModifiedData().get("ordenarma"))); - } - }); - - } catch (Exception e) { - - e.printStackTrace(); - } - } - - /* Abre el LOV de la clase del arma - */ - public void noFiltrarCodigosEstados() { - Map mfileldsArm = new HashMap(); - //No filtra los codigos de armas ya consultados - String sqlFiltroCodigoArma = ""; - if(armaSeleccionadaList != null && !armaSeleccionadaList.isEmpty()){ - StringBuffer sqlCodigos = new StringBuffer(); - for(TarmArmas tarmArmas : armaSeleccionadaList){ - if(!sqlCodigos.toString().isEmpty()){ - sqlCodigos.append(" , "); - } - sqlCodigos.append("'" + tarmArmas.getPk()+"'"); - } - sqlFiltroCodigoArma = (!sqlCodigos.toString().trim().isEmpty())?" t.pk not in( " + sqlCodigos.toString() + ") ":""; - - } - - mfileldsArm.put("codigosarmasdec", sqlFiltroCodigoArma); - - //mfileldsArm.put("estadosarmasdec", " t.estado not in('DEST','CANC','SUSP','DEC','INC','ENTR','ABA','RECL') "); - mfileldsArm.put("estadosarmasdec", " t.estado not in('DEST','CDP','VEND','SUSP','RECL') "); - - armasLovController.setMfilelds(mfileldsArm); - } - - - - public void validacionFuncionario(){ - if(decomisoController.getRecord().getCedulafuncionario()!=null){ - TcustPersonDetail personDetail= buscarPersonaSnap(decomisoController.getRecord().getCedulafuncionario(), "CED"); - decomisoController.getRecord().setFuncionario(null); - if(personDetail!=null && personDetail.getName()!=null){ - decomisoController.getRecord().setFuncionario(personDetail.getName()); - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - } - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - /** - * Metodo que retorna la extencion del comprobante de deposito que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(decomisoController.getRecord().getFechadecomiso()); - StringBuilder ruta = new StringBuilder("cm:Decomiso"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - btnfileUpload = Boolean.TRUE; - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickBtnRegMaterial"))); - - } - - /** - * Metodo que permite setear los datos de coordenadas relacionados a la entidad TarmDecomiso, una vez seleccionado un punto en el Map desde pantalla - */ - public void evento(){ - getDecomisoController().getRecord().setLatitud(new BigDecimal(getLatitud())); - getDecomisoController().getRecord().setLongitud(new BigDecimal(getLongitud())); - String longitudString = getDecomisoController().getRecord().getLongitud().toString(); - if(longitudString.contains("-")){ - longitudString = longitudString.replace("-", ""); - setLongitudGMS("oeste"); - }else{ - setLongitudGMS("este"); - } - String[] longitud = transformarGrados(longitudString); - - - - String latitudString = getDecomisoController().getRecord().getLatitud().toString(); - if(latitudString.contains("-")){ - latitudString = latitudString.replace("-", ""); - setLatitudGMS("sur"); - }else{ - setLatitudGMS("norte"); - } - String[] latitud = transformarGrados(latitudString); - setLatitudG(latitud[0]); - setLatitudM(latitud[1]); - setLatitudS(latitud[2]); - setLonguitudG(longitud[0]); - setLonguitudM(longitud[1]); - setLonguitudS(longitud[2]); - } - - /** - * Inicializa los campos al cambiar el tipo de Ubicacion desde la pagina - */ - public void changeUbicacion(){ - getDecomisoController().getRecord().setLatitud(null); - getDecomisoController().getRecord().setLongitud(null); - setLatitudG(""); - setLatitudM(""); - setLatitudS(""); - setLonguitudG(""); - setLonguitudM(""); - setLonguitudS(""); - setLatitud(""); - setLongitud(""); - setLongitudGMS(null); - setLatitudGMS(null); - } - - /** - * Permite inicializar los campos de longitud y lalitud y cargar a los datos de coordenadas relacionados a la entidad TarmDecomiso - */ - public void openMapPorCoordenandas(){ - setLatitud(""); - setLongitud(""); - if("coodernadas".equals(tipoMapa)){ - getDecomisoController().getRecord().setLatitud(new BigDecimal(transformarCoordenadas(latitudG, latitudM, latitudS, "sur".equals(latitudGMS)))); - getDecomisoController().getRecord().setLongitud(new BigDecimal(transformarCoordenadas(longuitudG, longuitudM, longuitudS, "oeste".equals(longitudGMS)))); - - } - } - - /** - * Metodo que permite transformar de Coordenadas Hexadecimales a Coordenadas en Grados, Minutos y Seguntos - * @param coordenada - * @return vector con las Coordenadas en Grados, Minutos y Seguntos - */ - public String[] transformarGrados(String coordenada){ - int grados = new BigDecimal(coordenada).intValue(); - BigDecimal minutos = new BigDecimal(coordenada).subtract(new BigDecimal(grados)).multiply(new BigDecimal(60)); - int min = minutos.intValue(); - BigDecimal segundos = minutos.subtract(new BigDecimal(min)).multiply(new BigDecimal(60)).setScale(4, BigDecimal.ROUND_FLOOR); - //System.out.println("latitude: " + grados + " " + min + " " + segundos); - return (grados + "," + min + "," + segundos).split(","); - } - - /** - * Metodo que permite transformar de coordenadas en Grados, Minutos y Seguntos a Coordenadas Hexadecimales - * @param grados - * @param minutos - * @param segundos - * @return coordenadas Hexadecimales - */ - public String transformarCoordenadas(String grados, String minutos, String segundos, boolean negativo){ - BigDecimal resultado = new BigDecimal(grados).add(new BigDecimal(minutos).divide(new BigDecimal(60), 12, BigDecimal.ROUND_FLOOR)).add(new BigDecimal(segundos).divide(new BigDecimal(3600), 12, BigDecimal.ROUND_FLOOR)); - resultado = resultado.setScale(12, BigDecimal.ROUND_FLOOR); - if(negativo){ - resultado = resultado.multiply(new BigDecimal(-1)); - } - return resultado.toString(); - } - - - /** - * Muestra un mensaje de error siempre y cuando sea un error de componente y se lo muestra como general - * @return - */ - public Boolean getExisteMensajesError() { - Boolean resp = Boolean.FALSE; - FacesContext facesContext = FacesContext.getCurrentInstance(); - final Iterator idComponentesMensajes = facesContext.getClientIdsWithMessages(); - while(idComponentesMensajes.hasNext()){ - String idComp = idComponentesMensajes.next(); - if(StringUtils.isNotBlank(idComp)){ - System.out.println("El id es "+idComp.replace(":", "\\\\:")); - System.out.println("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - facesContext.validationFailed(); - resp = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - break; - } - } - return resp; - } - - public DecomisoController getDecomisoController() { - return decomisoController; - } - - - public void setDecomisoController(DecomisoController decomisoController) { - this.decomisoController = decomisoController; - } - - public List getLprovinces() { - return lprovinces; - } - - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - public List getTipoProceso() { - return tipoProceso; - } - - public void setTipoProceso(List tipoProceso) { - this.tipoProceso = tipoProceso; - } - - public List getTipoDocumeno() { - return tipoDocumeno; - } - - public void setTipoDocumeno(List tipoDocumeno) { - this.tipoDocumeno = tipoDocumeno; - } - - public List getGrados() { - return grados; - } - - public void setGrados(List grados) { - this.grados = grados; - } - - public List getUnidades() { - return unidades; - } - - public void setUnidades(List unidades) { - this.unidades = unidades; - } - - public ArmasController getArmasController() { - return armasController; - } - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - public TsafeUserDetail getTsafeUserDetail() { - return tsafeUserDetail; - } - - public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { - this.tsafeUserDetail = tsafeUserDetail; - } - - public TcustPersonDetail getTcustPersonDetailPortador() { - return tcustPersonDetailPortador; - } - - public void setTcustPersonDetailPortador( - TcustPersonDetail tcustPersonDetailPortador) { - this.tcustPersonDetailPortador = tcustPersonDetailPortador; - } - - public boolean isSinPortador() { - return sinPortador; - } - - public void setSinPortador(boolean sinPortador) { - this.sinPortador = sinPortador; - } - - public List getMotivoDecomisoList() { - return motivoDecomisoList; - } - - public void setMotivoDecomisoList(List motivoDecomisoList) { - this.motivoDecomisoList = motivoDecomisoList; - } - - public List getLmarca() { - return lmarca; - } - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - public List getLcolor() { - return lcolor; - } - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - - public List getLtipofabricacion() { - return ltipofabricacion; - } - - public void setLtipofabricacion(List ltipofabricacion) { - this.ltipofabricacion = ltipofabricacion; - } - - public List getLcountry() { - return lcountry; - } - - public void setLcountry(List lcountry) { - this.lcountry = lcountry; - } - - public String getCodigoArma() { - return codigoArma; - } - - public void setCodigoArma(String codigoArma) { - this.codigoArma = codigoArma; - } - - public String getIdentificacionPro() { - return identificacionPro; - } - - public void setIdentificacionPro(String identificacionPro) { - this.identificacionPro = identificacionPro; - } - - public String getTipoIdentificacionPro() { - return tipoIdentificacionPro; - } - - public void setTipoIdentificacionPro(String tipoIdentificacionPro) { - this.tipoIdentificacionPro = tipoIdentificacionPro; - } - - public boolean isSinIdentificacion() { - return sinIdentificacion; - } - - public void setSinIdentificacion(boolean sinIdentificacion) { - this.sinIdentificacion = sinIdentificacion; - } - - public PersonDetailController getPersonDetailController() { - return personDetailController; - } - - public void setPersonDetailController( - PersonDetailController personDetailController) { - this.personDetailController = personDetailController; - } - - public String getUnidadpeso() { - return unidadpeso; - } - - public void setUnidadpeso(String unidadpeso) { - this.unidadpeso = unidadpeso; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - public String getDescripcionUnidadpeso() { - return descripcionUnidadpeso; - } - - public void setDescripcionUnidadpeso(String descripcionUnidadpeso) { - this.descripcionUnidadpeso = descripcionUnidadpeso; - } - - public String getCodigoUnidadpeso() { - return codigoUnidadpeso; - } - - public void setCodigoUnidadpeso(String codigoUnidadpeso) { - this.codigoUnidadpeso = codigoUnidadpeso; - } - - public RegistroArmController getRegistroArmController() { - return registroArmController; - } - - public void setRegistroArmController(RegistroArmController registroArmController) { - this.registroArmController = registroArmController; - } - - public String getCodigoPasaporte() { - return codigoPasaporte; - } - - public void setCodigoPasaporte(String codigoPasaporte) { - this.codigoPasaporte = codigoPasaporte; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public PersonPhoneController getPersonPhoneController() { - return personPhoneController; - } - - public void setPersonPhoneController(PersonPhoneController personPhoneController) { - this.personPhoneController = personPhoneController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public Boolean getBtn() { - return btn; - } - - public void setBtn(Boolean btn) { - this.btn = btn; - } - - public String getCodigoPaisOrigen() { - return codigoPaisOrigen; - } - - public void setCodigoPaisOrigen(String codigoPaisOrigen) { - this.codigoPaisOrigen = codigoPaisOrigen; - } - - public List getArmaSeleccionadaList() { - return armaSeleccionadaList; - } - - public void setArmaSeleccionadaList(List armaSeleccionadaList) { - this.armaSeleccionadaList = armaSeleccionadaList; - } - - public String getCdecomiso() { - return cdecomiso; - } - - public void setCdecomiso(String cdecomiso) { - this.cdecomiso = cdecomiso; - } - - public Boolean getBtnPeso() { - return btnPeso; - } - - public void setBtnPeso(Boolean btnPeso) { - this.btnPeso = btnPeso; - } - - public Boolean getBtnCantidad() { - return btnCantidad; - } - - public void setBtnCantidad(Boolean btnCantidad) { - this.btnCantidad = btnCantidad; - } - - public List getCentroControls() { - return centroControls; - } - - public void setCentroControls(List centroControls) { - this.centroControls = centroControls; - } - - public String getCentroControl() { - return centroControl; - } - - public void setCentroControl(String centroControl) { - this.centroControl = centroControl; - } - - public String getLatitud() { - return latitud; - } - - public void setLatitud(String latitud) { - this.latitud = latitud; - } - - public String getLongitud() { - return longitud; - } - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - public String getDireccionGoogleMap() { - return direccionGoogleMap; - } - - public void setDireccionGoogleMap(String direccionGoogleMap) { - this.direccionGoogleMap = direccionGoogleMap; - } - - public String getTipoMapa() { - return tipoMapa; - } - - public void setTipoMapa(String tipoMapa) { - this.tipoMapa = tipoMapa; - } - - public String getLatitudG() { - return latitudG; - } - - public void setLatitudG(String latitudG) { - this.latitudG = latitudG; - } - - public String getLatitudM() { - return latitudM; - } - - public void setLatitudM(String latitudM) { - this.latitudM = latitudM; - } - - public String getLatitudS() { - return latitudS; - } - - public void setLatitudS(String latitudS) { - this.latitudS = latitudS; - } - - public String getLonguitudG() { - return longuitudG; - } - - public void setLonguitudG(String longuitudG) { - this.longuitudG = longuitudG; - } - - public String getLonguitudM() { - return longuitudM; - } - - public void setLonguitudM(String longuitudM) { - this.longuitudM = longuitudM; - } - - public String getLonguitudS() { - return longuitudS; - } - - public void setLonguitudS(String longuitudS) { - this.longuitudS = longuitudS; - } - - /** - * @return the latitudGMS - */ - public String getLatitudGMS() { - return latitudGMS; - } - - /** - * @param latitudGMS the latitudGMS to set - */ - public void setLatitudGMS(String latitudGMS) { - this.latitudGMS = latitudGMS; - } - - /** - * @return the longitudGMS - */ - public String getLongitudGMS() { - return longitudGMS; - } - - /** - * @param longitudGMS the longitudGMS to set - */ - public void setLongitudGMS(String longitudGMS) { - this.longitudGMS = longitudGMS; - } - - - public boolean isSinDocumento() { - return sinDocumento; - } - - public void setSinDocumento(boolean sinDocumento) { - this.sinDocumento = sinDocumento; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public String getIngresoPortador() { - return ingresoPortador; - } - - public void setIngresoPortador(String ingresoPortador) { - this.ingresoPortador = ingresoPortador; - } - - public String getNombrerazonsocialsindoc() { - return nombrerazonsocialsindoc; - } - - public void setNombrerazonsocialsindoc(String nombrerazonsocialsindoc) { - this.nombrerazonsocialsindoc = nombrerazonsocialsindoc; - } - - public boolean isHabilitaNoDecomiso() { - return habilitaNoDecomiso; - } - - public void setHabilitaNoDecomiso(boolean habilitaNoDecomiso) { - this.habilitaNoDecomiso = habilitaNoDecomiso; - } - - public Boolean getBtnfileUpload() { - return btnfileUpload; - } - - public void setBtnfileUpload(Boolean btnfileUpload) { - this.btnfileUpload = btnfileUpload; - } - - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - public boolean isDeshabilitarPantallaMaterial() { - return deshabilitarPantallaMaterial; - } - - public void setDeshabilitarPantallaMaterial(boolean deshabilitarPantalla) { - this.deshabilitarPantallaMaterial = deshabilitarPantalla; - } - - public Boolean getBtnSave() { - return btnSave; - } - - public void setBtnSave(Boolean btnSave) { - this.btnSave = btnSave; - } - - public Boolean getIsExecuteRegistro() { - return isExecuteRegistro; - } - - public void setIsExecuteRegistro(Boolean isExecuteRegistro) { - this.isExecuteRegistro = isExecuteRegistro; - } - - public String getUnidad() { - return unidad; - } - - public void setUnidad(String unidad) { - this.unidad = unidad; - } - - public Boolean getBtnRegistro() { - return btnRegistro; - } - - public void setBtnRegistro(Boolean btnRegistro) { - this.btnRegistro = btnRegistro; - } - - public String getFilename() { - return filename; - } - - public void setFilename(String filename) { - this.filename = filename; - } - - - public byte[] getByteArray() { - return byteArray; - } - - public void setByteArray(byte[] byteArray) { - this.byteArray = byteArray; - } - - public boolean isSeleccionarMaterial() { - return seleccionarMaterial; - } - - public void setSeleccionarMaterial(boolean seleccionarMaterial) { - this.seleccionarMaterial = seleccionarMaterial; - } - - public ArmasLovController getArmasLovController() { - return armasLovController; - } - - public void setArmasLovController(ArmasLovController armasLovController) { - this.armasLovController = armasLovController; - } - - public String getNombrePortador() { - return nombrePortador; - } - - public void setNombrePortador(String nombrePortador) { - this.nombrePortador = nombrePortador; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DetRepDestruirArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DetRepDestruirArmasController.java.svn-base deleted file mode 100644 index 6665d8d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DetRepDestruirArmasController.java.svn-base +++ /dev/null @@ -1,190 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; - -/** - * Clase controladora del bean TarmDetRepDestruirArmas - * - * @author Christian Pazmino - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DetRepDestruirArmasController extends AbstractController { - - - - - public DetRepDestruirArmasController() throws Exception { - super(TarmDetRepDestruirArmas.class); - } - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Ingreso de Datos Quemados - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - public void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - // record = new TarmSolicitudImportacion(); - this.beanalias = "DETREPORTEDESTRUIRARMAS"; -// this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public static List find() { - try { - DetRepDestruirArmasController cc = new DetRepDestruirArmasController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo que busca un item de la tabla de detalle de reporte de destruccion de armas mediante la clave primaria - * - */ - public static TarmDetRepDestruirArmas findByCodigo(String cRegistro) { - try { - DetRepDestruirArmasController cc = new DetRepDestruirArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cRegistro); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo que busca una cabecera de reporte de destruccion de armas mediante el codigo de reporte - * @param cReporte codigo de reporte - * @return Lista de objetos de tipo TarmDetRepDestruirArmas que tienen el mismo cReporte - */ - public static List findByCReporte(String cReporte) { - try { - DetRepDestruirArmasController cc = new DetRepDestruirArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("creporte", cReporte); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - public void update(TarmDetRepDestruirArmas bean) throws Exception { - record=bean; - update(); - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.netbeans-base deleted file mode 100644 index 38524c8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.netbeans-base +++ /dev/null @@ -1,934 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DocumentoHabilitanteConErrorController extends AbstractController { - - - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value="#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value="#{pesonAddressController}") - private PersonAddressController pesonAddressController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - - - TarmSolicitudTramite solicitudTramite; - TarmSolicitud solicitud; - TarmTramite fila; - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - TarmDocumentoHabilitante documentoHabilitante; - String numeroSolicitud; - String numeroTramite; - String nombreRazonSocial; - private String xpathflujo="";//cm:Pruebas/cm:ID_1715819825001"; - private String formato = "pdf"; - private String mostrarFormato="PDF"; -// TcustPersonDetail detallesPersona; - List lsolicitud; -// String numeroTramite; -// String nombreRazonSocial; - String identificacion; - String tipoidentificacion; - private String tramiteflujo=""; - private String solicitudflujo=""; - - - private List ldocumentos; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private TcustPersonDetail responsableCentroControl= null; - - public DocumentoHabilitanteConErrorController() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - try { -// this.pasteBpmScreenParameters(); -// tramiteflujo=super.getMfilters().get("numerotransaccion"); -// solicitudflujo=super.getMfilters().get("csolicitud"); - - this.init(); -// super.getMfilters().clear(); - -// super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - // lrecord = new ArrayList<>(); - beanalias = "EMITIRDOCUMENTOHABILITANTE"; - ldocumentos = new ArrayList(); - ldocumentos = CatalogDetailController.find("IDENTIFICATION"); - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - //Obteniendo la solicitud - solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(solicitudflujo); - this.numeroTramite=solicitudTramite.getNumerotramite(); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el documento habilitante - documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud(solicitudflujo); - obtenerCentroControl(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getNumeroTramite() { - return numeroTramite; - } - - public void setNumeroTramite(String numeroTramite) { - this.numeroTramite = numeroTramite; - } - - @Override - protected void querydatabase() { - TarmSolicitud solicitudObj=SolicitudController.findSolicitudxnumerosolicitud(numeroSolicitud); - if(solicitudObj!=null && solicitudObj.getPk()!=null && solicitudObj.getCtramite()!=null){ - tramiteflujo=solicitudObj.getCtramite().toString(); - solicitudflujo=solicitudObj.getPk(); - } - init(); - try { - addFilter("numerotramite", numeroTramite); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery subqueryUso= new SubQuery("TarmTramite","usoactividad","actividad","i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryUso); - SubQuery subqueryPersona= new SubQuery("TarmSolicitud","personcode","persona","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryPersona); - SubQuery subqueryTipo=new SubQuery("TarmTramite", "tipoautorizacion", "tramite", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipocodigo=new SubQuery("TarmTramite", "tipoautorizacioncodigo", "tramitecodigo", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryEstado=new SubQuery("TgeneCatalogDetail","description","desc","i.pk.catalog=t.estadotramite and i.pk.catalogcode=t.estadotramitecodigo"); - dto.addSubQuery(subqueryEstado); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - for(int i=0;i< this.lrecord.size();i++){ - this.lrecord.get(i).getModifiedData().put("usodes", CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("actividad").toString(), "USOACTIVIDAD").getDescription()); - TcustPersonDetail person = PersonDetailController.find(this.lrecord.get(i).getModifiedData().get("persona").toString()); - this.lrecord.get(i).getModifiedData().put("nombre", person.getName()); - this.lrecord.get(i).getModifiedData().put("identificacion", person.getIdentification()); - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tramite").toString(), this.lrecord.get(i).getModifiedData().get("tramitecodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipotramdesc", tipo.getDescription()); - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - try { - if(xpathflujo==null || xpathflujo.isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); - return; - } - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - - public void imprimir(TarmSolicitudTramite fila){ - try { - boolean flagRequisitos = false; - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - boolean flagDoc = false; - String tipotramite=fila.getModifiedData().get("tramite").toString(); - String nombreArchivo = fila.getModifiedData().get("tipotramdesc").toString(); - TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(fila.getPk().getCsolicitud()); - TarmTramite tramite = TarmTramiteController.findSimple(fila.getPk().getCtramite().toString()); - documentoHabilitante=documentoHabilitanteController.findPorSolicitud(fila.getPk().getCsolicitud()); - - xpathflujo=generarXpath(fila.getNumerotramite()); - System.out.println("..." + xpathflujo); - - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(tipotramite); - if(tipotramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tipotramite.equals("2")){ - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - //this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - InputStream pdf=this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else if (tipotramite.equals("4")) { - InputStream pdf=this.reporteGuiaLibreTransito(); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else { - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - } - InputStream pdf=this.reporteGeneral(solicitud.getPk(),flagAgencia,flagArmas,flagDoc,flagGuardias,flagRequisitos,nombreArchivo); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - - } catch (Exception e) { - xpathflujo=null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generar_reporte")); - } - } - - - /** - * Metodo para actualziar en la tabla tarmdocumentohabilitante con el xpath de la ruta de alfreco donde se guardo el documento - * @param documentoHabilitante - * @param xPath - * @throws Exception - */ - private void actualizarXpath(TarmDocumentoHabilitante documentoHabilitante, String xPath) throws Exception{ - documentoHabilitanteController.setRecord(documentoHabilitante); - documentoHabilitanteController.getRecord().setXpath(xPath); - documentoHabilitanteController.update(); - documentoHabilitanteController.save(); - } - - public String generarXpath(String tramite){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - tramite=tramite.replace("TRA", "SOL"); - StringBuilder ruta=new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+tramite); - return ruta.toString(); - } - - public String encontrarUsuario(){ - if(identificacion==null || identificacion=="") - return null; - detallesPersona=PersonDetailController.findxidentification(identificacion, tipoidentificacion); - if(detallesPersona==null) - return null; - lsolicitud=SolicitudController.findSolicitudxPersona(detallesPersona.getPk().getPersoncode().toString()); - - String csolicitud=null; - for(TarmSolicitud soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="csolicitud='"+soli.getPk()+"'"; - } - else{ - csolicitud+=" or csolicitud='"+soli.getPk()+"'"; - } - } - return csolicitud; - } - - - @Override - public void save() { - // TODO Auto-generated method stub - super.save(); - } - - /** - * Ejecuta un reporte de armas - * @param name Nombre del reporte a generar. - */ - public InputStream reporteGuiaLibreTransito() { - try { - String path = "armas/reports/guiaLibreTransito"; - String filename=MsgControlArmas.getProperty("lbl_guiaLibreTransito"); - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.solicitudflujo); - //No. Guia - parameters.put("noGuia", this.numeroTramite); - - //Codigo de barras - String codigoBarras=this.numeroTramite.replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < codigoBarras.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(codigoBarras.toCharArray()[i]!='0' && codigoBarras.toCharArray()[i]!='1' && codigoBarras.toCharArray()[i]!='2' - && codigoBarras.toCharArray()[i]!='3' && codigoBarras.toCharArray()[i]!='4' && codigoBarras.toCharArray()[i]!='5' - && codigoBarras.toCharArray()[i]!='6' && codigoBarras.toCharArray()[i]!='7' && codigoBarras.toCharArray()[i]!='8' - && codigoBarras.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=codigoBarras.toCharArray()[i]; - codigoBarras=codigoBarras.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("codigoBarras", codigoBarras); - - //Nombre/Razon Social - parameters.put("nombreRazon", detallesPersona.getName()); - - //Cedula - parameters.put("cedula", detallesPersona.getIdentification()); - - //Desde - parameters.put("desde", solicitud.getLugarorigen()); - - //Hasta - parameters.put("hasta", solicitud.getLugardestino()); - - //Fechas - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - if(documentoHabilitante!=null){ - parameters.put("fechaExpide", sdf.format(documentoHabilitante.getFechaemision())); - parameters.put("fechaCaduca", sdf.format(documentoHabilitante.getFechaexpiracion())); - }else{ - parameters.put("fechaExpide", " "); - parameters.put("fechaCaduca", " "); - } - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Lugar origen y destino - if(sol!=null){ - parameters.put("provinciaorigen", sol.modifiedData().get("provinciaorigen").toString()); - parameters.put("cantonorigen", sol.modifiedData().get("cantonorigen").toString()); - parameters.put("lugarorigen", sol.getLugarorigen().toString()); - parameters.put("provinciadestino", sol.modifiedData().get("provinciadestino").toString()); - parameters.put("cantondestino", sol.modifiedData().get("cantondestino").toString()); - parameters.put("lugardestino", sol.getLugardestino().toString()); - - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.responsableCentroControl.getName()); - parameters.put("personcode",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.institucionCentroControl); - parameters.put("nombreCentro", this.institucionCentroControl); - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - InputStream pdf = this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteCertificadoArmas() { - try { - String path = "armas/reports/certificadoArmas"; - String filename="certificadoarmas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteAgencias() { - try { - String path = "armas/reports/aperturaAgenciasSucursales"; - String filename="aperturaagenciassucursales"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -/* public void reporteInscripcion(TarmSolicitud solicitud) { - try { - String path = "armas/reports/reporteInscripcion"; - String filename="armas"; - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - - //No. Guia - parameters.put("nombreCompania", detallesPersona.getName()); - - //Nombre/Razon Social - parameters.put("nombrepersona",detallesPersona.getLegalrepresent()); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(solicitud.getFregistro())); - parameters.put("ciudad", "Quito"); - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - */ - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias,boolean flagRequisitos,String nombreArchivo) { - try { - String path = "armas/reports/generalReportHabilita"; - String filename=nombreArchivo; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); -// TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(user.getMilitarygrade(), user.getMilitarygradecode()); - TgeneCatalogDetail grado =null; - if(this.responsableCentroControl.getMilitarygrade()!=null && this.responsableCentroControl.getMilitarygradecode()!=null){ - grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - } - - String gradoUsuario=""; - if(grado!=null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitudflujo); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - TarmTramite t; - Boolean datosTramiteVacios=false; - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - - if(t!=null){ - - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - //Pie - if(t.getPie()!=null){ - parameters.put("pie", t.getPie()); - }else{ - parameters.put("pie", " "); - } - - //fecha de solicitud - if(s.getFregistro()!=null){ - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fecSolicitud", sdf.format(s.getFregistro())); - } - else { - parameters.put("fecSolicitud", ""); - } - - - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - parameters.put("pie", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("flagRequisitos", flagRequisitos); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("usuario",user.getName()); - String format = "pdf"; - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - //Reponsable - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - return setInstitucionCentroControl(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - - - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteCertificados(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias) { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCertificado"; - String filename="reporteCertificado"; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getAddresstypecatalog().equalsIgnoreCase("1")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",user.getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - String format = "pdf"; - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - public List getLdocumentos() { - return ldocumentos; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public void setLdocumentos(List ldocumentos) { - this.ldocumentos = ldocumentos; - } - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getTipoidentificacion() { - return tipoidentificacion; - } - - public void setTipoidentificacion(String tipoidentificacion) { - this.tipoidentificacion = tipoidentificacion; - } - - TarmTramite getFila() { - return fila; - } - - public void setFila(TarmTramite fila) { - this.fila = fila; - } - - - - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public String getMostrarFormato() { - return mostrarFormato; - } - - public void setMostrarFormato(String mostrarFormato) { - this.mostrarFormato = mostrarFormato; - } - - public String getTramiteflujo() { - return tramiteflujo; - } - - public void setTramiteflujo(String tramiteflujo) { - this.tramiteflujo = tramiteflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public String setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - return institucionCentroControl; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public PersonAddressController getPesonAddressController() { - return pesonAddressController; - } - - public void setPesonAddressController( - PersonAddressController pesonAddressController) { - this.pesonAddressController = pesonAddressController; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - public String getNumeroSolicitud() { - return numeroSolicitud; - } - - public void setNumeroSolicitud(String numeroSolicitud) { - this.numeroSolicitud = numeroSolicitud; - } - - - - - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.svn-base deleted file mode 100644 index 38524c8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteConErrorController.java.svn-base +++ /dev/null @@ -1,934 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class DocumentoHabilitanteConErrorController extends AbstractController { - - - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value="#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value="#{pesonAddressController}") - private PersonAddressController pesonAddressController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - - - TarmSolicitudTramite solicitudTramite; - TarmSolicitud solicitud; - TarmTramite fila; - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - TarmDocumentoHabilitante documentoHabilitante; - String numeroSolicitud; - String numeroTramite; - String nombreRazonSocial; - private String xpathflujo="";//cm:Pruebas/cm:ID_1715819825001"; - private String formato = "pdf"; - private String mostrarFormato="PDF"; -// TcustPersonDetail detallesPersona; - List lsolicitud; -// String numeroTramite; -// String nombreRazonSocial; - String identificacion; - String tipoidentificacion; - private String tramiteflujo=""; - private String solicitudflujo=""; - - - private List ldocumentos; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private TcustPersonDetail responsableCentroControl= null; - - public DocumentoHabilitanteConErrorController() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - try { -// this.pasteBpmScreenParameters(); -// tramiteflujo=super.getMfilters().get("numerotransaccion"); -// solicitudflujo=super.getMfilters().get("csolicitud"); - - this.init(); -// super.getMfilters().clear(); - -// super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - // lrecord = new ArrayList<>(); - beanalias = "EMITIRDOCUMENTOHABILITANTE"; - ldocumentos = new ArrayList(); - ldocumentos = CatalogDetailController.find("IDENTIFICATION"); - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - //Obteniendo la solicitud - solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(solicitudflujo); - this.numeroTramite=solicitudTramite.getNumerotramite(); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el documento habilitante - documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud(solicitudflujo); - obtenerCentroControl(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String getNumeroTramite() { - return numeroTramite; - } - - public void setNumeroTramite(String numeroTramite) { - this.numeroTramite = numeroTramite; - } - - @Override - protected void querydatabase() { - TarmSolicitud solicitudObj=SolicitudController.findSolicitudxnumerosolicitud(numeroSolicitud); - if(solicitudObj!=null && solicitudObj.getPk()!=null && solicitudObj.getCtramite()!=null){ - tramiteflujo=solicitudObj.getCtramite().toString(); - solicitudflujo=solicitudObj.getPk(); - } - init(); - try { - addFilter("numerotramite", numeroTramite); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery subqueryUso= new SubQuery("TarmTramite","usoactividad","actividad","i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryUso); - SubQuery subqueryPersona= new SubQuery("TarmSolicitud","personcode","persona","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryPersona); - SubQuery subqueryTipo=new SubQuery("TarmTramite", "tipoautorizacion", "tramite", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipocodigo=new SubQuery("TarmTramite", "tipoautorizacioncodigo", "tramitecodigo", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryEstado=new SubQuery("TgeneCatalogDetail","description","desc","i.pk.catalog=t.estadotramite and i.pk.catalogcode=t.estadotramitecodigo"); - dto.addSubQuery(subqueryEstado); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - for(int i=0;i< this.lrecord.size();i++){ - this.lrecord.get(i).getModifiedData().put("usodes", CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("actividad").toString(), "USOACTIVIDAD").getDescription()); - TcustPersonDetail person = PersonDetailController.find(this.lrecord.get(i).getModifiedData().get("persona").toString()); - this.lrecord.get(i).getModifiedData().put("nombre", person.getName()); - this.lrecord.get(i).getModifiedData().put("identificacion", person.getIdentification()); - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tramite").toString(), this.lrecord.get(i).getModifiedData().get("tramitecodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipotramdesc", tipo.getDescription()); - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - try { - if(xpathflujo==null || xpathflujo.isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); - return; - } - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - - public void imprimir(TarmSolicitudTramite fila){ - try { - boolean flagRequisitos = false; - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - boolean flagDoc = false; - String tipotramite=fila.getModifiedData().get("tramite").toString(); - String nombreArchivo = fila.getModifiedData().get("tipotramdesc").toString(); - TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(fila.getPk().getCsolicitud()); - TarmTramite tramite = TarmTramiteController.findSimple(fila.getPk().getCtramite().toString()); - documentoHabilitante=documentoHabilitanteController.findPorSolicitud(fila.getPk().getCsolicitud()); - - xpathflujo=generarXpath(fila.getNumerotramite()); - System.out.println("..." + xpathflujo); - - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(tipotramite); - if(tipotramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tipotramite.equals("2")){ - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - //this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - InputStream pdf=this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else if (tipotramite.equals("4")) { - InputStream pdf=this.reporteGuiaLibreTransito(); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else { - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - } - InputStream pdf=this.reporteGeneral(solicitud.getPk(),flagAgencia,flagArmas,flagDoc,flagGuardias,flagRequisitos,nombreArchivo); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - - } catch (Exception e) { - xpathflujo=null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generar_reporte")); - } - } - - - /** - * Metodo para actualziar en la tabla tarmdocumentohabilitante con el xpath de la ruta de alfreco donde se guardo el documento - * @param documentoHabilitante - * @param xPath - * @throws Exception - */ - private void actualizarXpath(TarmDocumentoHabilitante documentoHabilitante, String xPath) throws Exception{ - documentoHabilitanteController.setRecord(documentoHabilitante); - documentoHabilitanteController.getRecord().setXpath(xPath); - documentoHabilitanteController.update(); - documentoHabilitanteController.save(); - } - - public String generarXpath(String tramite){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - tramite=tramite.replace("TRA", "SOL"); - StringBuilder ruta=new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+tramite); - return ruta.toString(); - } - - public String encontrarUsuario(){ - if(identificacion==null || identificacion=="") - return null; - detallesPersona=PersonDetailController.findxidentification(identificacion, tipoidentificacion); - if(detallesPersona==null) - return null; - lsolicitud=SolicitudController.findSolicitudxPersona(detallesPersona.getPk().getPersoncode().toString()); - - String csolicitud=null; - for(TarmSolicitud soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="csolicitud='"+soli.getPk()+"'"; - } - else{ - csolicitud+=" or csolicitud='"+soli.getPk()+"'"; - } - } - return csolicitud; - } - - - @Override - public void save() { - // TODO Auto-generated method stub - super.save(); - } - - /** - * Ejecuta un reporte de armas - * @param name Nombre del reporte a generar. - */ - public InputStream reporteGuiaLibreTransito() { - try { - String path = "armas/reports/guiaLibreTransito"; - String filename=MsgControlArmas.getProperty("lbl_guiaLibreTransito"); - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.solicitudflujo); - //No. Guia - parameters.put("noGuia", this.numeroTramite); - - //Codigo de barras - String codigoBarras=this.numeroTramite.replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < codigoBarras.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(codigoBarras.toCharArray()[i]!='0' && codigoBarras.toCharArray()[i]!='1' && codigoBarras.toCharArray()[i]!='2' - && codigoBarras.toCharArray()[i]!='3' && codigoBarras.toCharArray()[i]!='4' && codigoBarras.toCharArray()[i]!='5' - && codigoBarras.toCharArray()[i]!='6' && codigoBarras.toCharArray()[i]!='7' && codigoBarras.toCharArray()[i]!='8' - && codigoBarras.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=codigoBarras.toCharArray()[i]; - codigoBarras=codigoBarras.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("codigoBarras", codigoBarras); - - //Nombre/Razon Social - parameters.put("nombreRazon", detallesPersona.getName()); - - //Cedula - parameters.put("cedula", detallesPersona.getIdentification()); - - //Desde - parameters.put("desde", solicitud.getLugarorigen()); - - //Hasta - parameters.put("hasta", solicitud.getLugardestino()); - - //Fechas - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - if(documentoHabilitante!=null){ - parameters.put("fechaExpide", sdf.format(documentoHabilitante.getFechaemision())); - parameters.put("fechaCaduca", sdf.format(documentoHabilitante.getFechaexpiracion())); - }else{ - parameters.put("fechaExpide", " "); - parameters.put("fechaCaduca", " "); - } - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Lugar origen y destino - if(sol!=null){ - parameters.put("provinciaorigen", sol.modifiedData().get("provinciaorigen").toString()); - parameters.put("cantonorigen", sol.modifiedData().get("cantonorigen").toString()); - parameters.put("lugarorigen", sol.getLugarorigen().toString()); - parameters.put("provinciadestino", sol.modifiedData().get("provinciadestino").toString()); - parameters.put("cantondestino", sol.modifiedData().get("cantondestino").toString()); - parameters.put("lugardestino", sol.getLugardestino().toString()); - - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.responsableCentroControl.getName()); - parameters.put("personcode",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.institucionCentroControl); - parameters.put("nombreCentro", this.institucionCentroControl); - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - InputStream pdf = this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteCertificadoArmas() { - try { - String path = "armas/reports/certificadoArmas"; - String filename="certificadoarmas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteAgencias() { - try { - String path = "armas/reports/aperturaAgenciasSucursales"; - String filename="aperturaagenciassucursales"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -/* public void reporteInscripcion(TarmSolicitud solicitud) { - try { - String path = "armas/reports/reporteInscripcion"; - String filename="armas"; - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - - //No. Guia - parameters.put("nombreCompania", detallesPersona.getName()); - - //Nombre/Razon Social - parameters.put("nombrepersona",detallesPersona.getLegalrepresent()); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(solicitud.getFregistro())); - parameters.put("ciudad", "Quito"); - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - */ - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias,boolean flagRequisitos,String nombreArchivo) { - try { - String path = "armas/reports/generalReportHabilita"; - String filename=nombreArchivo; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); -// TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(user.getMilitarygrade(), user.getMilitarygradecode()); - TgeneCatalogDetail grado =null; - if(this.responsableCentroControl.getMilitarygrade()!=null && this.responsableCentroControl.getMilitarygradecode()!=null){ - grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - } - - String gradoUsuario=""; - if(grado!=null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitudflujo); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - TarmTramite t; - Boolean datosTramiteVacios=false; - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - - if(t!=null){ - - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - //Pie - if(t.getPie()!=null){ - parameters.put("pie", t.getPie()); - }else{ - parameters.put("pie", " "); - } - - //fecha de solicitud - if(s.getFregistro()!=null){ - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fecSolicitud", sdf.format(s.getFregistro())); - } - else { - parameters.put("fecSolicitud", ""); - } - - - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - parameters.put("pie", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("flagRequisitos", flagRequisitos); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("usuario",user.getName()); - String format = "pdf"; - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - //Reponsable - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - return setInstitucionCentroControl(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - - - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteCertificados(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias) { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCertificado"; - String filename="reporteCertificado"; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getAddresstypecatalog().equalsIgnoreCase("1")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",user.getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - String format = "pdf"; - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - public List getLdocumentos() { - return ldocumentos; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public void setLdocumentos(List ldocumentos) { - this.ldocumentos = ldocumentos; - } - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getTipoidentificacion() { - return tipoidentificacion; - } - - public void setTipoidentificacion(String tipoidentificacion) { - this.tipoidentificacion = tipoidentificacion; - } - - TarmTramite getFila() { - return fila; - } - - public void setFila(TarmTramite fila) { - this.fila = fila; - } - - - - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public String getMostrarFormato() { - return mostrarFormato; - } - - public void setMostrarFormato(String mostrarFormato) { - this.mostrarFormato = mostrarFormato; - } - - public String getTramiteflujo() { - return tramiteflujo; - } - - public void setTramiteflujo(String tramiteflujo) { - this.tramiteflujo = tramiteflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public String setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - return institucionCentroControl; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public PersonAddressController getPesonAddressController() { - return pesonAddressController; - } - - public void setPesonAddressController( - PersonAddressController pesonAddressController) { - this.pesonAddressController = pesonAddressController; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - public String getNumeroSolicitud() { - return numeroSolicitud; - } - - public void setNumeroSolicitud(String numeroSolicitud) { - this.numeroSolicitud = numeroSolicitud; - } - - - - - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteController.java.svn-base deleted file mode 100644 index 99f03dc..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteController.java.svn-base +++ /dev/null @@ -1,1456 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.GregorianCalendar; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Controlador que maneja los documentos habilitantes del sistema - * @author dcruz - *O - */ -@ManagedBean -@ViewScoped -public class DocumentoHabilitanteController extends - AbstractController { - - private static final long serialVersionUID = 1L; - - Date fechaInicio, fechaFin; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - public DocumentoHabilitanteController() throws Exception{ - super(TarmDocumentoHabilitante.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - } - - private void init(){ - this.beanalias = "DOCUMENTOHABILITANTE"; - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - SubQuery subqueryCategoriaCodigo= new SubQuery("TgeneCatalogDetail", "description", "description", "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipotramitecodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoriaCodigo); - SubQuery subqueryTipocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptiontram", "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.categoriacodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryUsocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptionact", "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.usoactividadcodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsocodigo); - - SubQuery subqueryEstadoDoc=new SubQuery("TgeneCatalogDetail", "description", "estadodocumento", "i.pk.catalog = t.estado" - + " and i.pk.catalogcode= t.estadocode"); - dto.addSubQuery(subqueryEstadoDoc); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.find(doc.getCarma(), null); - doc.modifiedData().put("carma",tarmArma==null?"":tarmArma.getPk()); - doc.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - doc.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null ?"":tarmArma.getModifiedData().get("tipo")); - doc.modifiedData().put("seriecanon",tarmArma==null || tarmArma.getSeriecanon()==null || tarmArma.getSeriecanon().isEmpty()?"":tarmArma.getSeriecanon()); - doc.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.000")); - doc.modifiedData().put("marca", tarmArma==null || tarmArma.getModifiedData().get("marca")==null?"":tarmArma.getModifiedData().get("marca")); - doc.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Query para filtro por ciertos registros de codigo de tramites - * @param listadosTramites - */ - protected void querydatabaseDocumentosCriterioFiltro(List listadosTramites, Boolean validarCaducidadBln, String codigopersona) { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - java.util.Date fechaActual = new java.util.Date(); - Filter filtroDocumento = new Filter(); - StringBuffer bufferQuery = new StringBuffer(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - bufferQuery.append("("); - if(validarCaducidadBln){ - bufferQuery.append("t.fechaexpiracion >= " + "TO_DATE('" + - formato.format(fechaActual)+ "','yyyy-MM-dd') and "); - } - int count=0; - bufferQuery.append("t.personcode = " + codigopersona); - bufferQuery.append(" and t.ctramite in ("); - for(TarmTramite tramite:listadosTramites){ - count++; - bufferQuery.append(tramite.getPk()); - if(count <= listadosTramites.size()-1){ - bufferQuery.append(","); - } - } - bufferQuery.append(")"); - bufferQuery.append(" and t.estado = 'APR'"); - bufferQuery.append(")"); - - filtroDocumento.setSql(bufferQuery.toString()); - dto.addFiltro(filtroDocumento); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.find(doc.getCarma(), null); - doc.modifiedData().put("carma",tarmArma==null?"":tarmArma.getCodigoarma()); - doc.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - doc.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null ?"":tarmArma.getModifiedData().get("tipo")); - doc.modifiedData().put("seriecanon",tarmArma==null || tarmArma.getSeriecanon()==null || tarmArma.getSeriecanon().isEmpty()?"":tarmArma.getSeriecanon()); - doc.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.000")); - doc.modifiedData().put("marca", tarmArma==null || tarmArma.getModifiedData().get("marca")==null?"":tarmArma.getModifiedData().get("marca")); - doc.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void documentosXPersona(Integer codigoPersona) throws Exception { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - - java.util.Date fechaActual = new java.util.Date(); - //Filter fechaFiltro= new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - - Filter fechaEstadoFiltro= new Filter(); - StringBuffer bufferQuery = new StringBuffer(); - int count=0; - bufferQuery.append("t.estado = 'APR' and" + - " t.personcode = '" + codigoPersona.toString() + "' and trunc(t.fechaexpiracion) >= " + "TO_DATE('" + formato.format(fechaActual)+ "','yyyy-MM-dd')"); - - fechaEstadoFiltro.setSql(bufferQuery.toString()); - dto.addFiltro(fechaEstadoFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp; - try { - try { - resp = callerhelper.executeQuery(request); - } catch (Throwable e) { - // TODO Auto-generated catch block - throw new Exception(); - } - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - //MessageHelper.setMessageError(resp); - throw new Exception(); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.find(doc.getCarma(), null); - doc.modifiedData().put("carma",tarmArma==null?"":tarmArma.getCodigoarma()); - doc.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - doc.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null ?"":tarmArma.getModifiedData().get("tipo")); - doc.modifiedData().put("lote",tarmArma==null || tarmArma.getLote()==null || tarmArma.getLote().isEmpty()?"":tarmArma.getLote()); - doc.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.00")); - doc.modifiedData().put("marca", tarmArma==null || tarmArma.getModifiedData().get("marca")==null?"":tarmArma.getModifiedData().get("marca")); - doc.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - - TarmTramite tramiteDocumento = IngresoDatosTipoTramite.find(doc.getCtramite().toString()); - if(tramiteDocumento!=null){ - doc.modifiedData().put("destipoTramite", tramiteDocumento.getModifiedData().get("destipoTramite")!=null?tramiteDocumento.getModifiedData().get("destipoTramite").toString():null); - doc.modifiedData().put("destipoAutorizacion", tramiteDocumento.getModifiedData().get("destipoAutorizacion")!=null?tramiteDocumento.getModifiedData().get("destipoAutorizacion").toString():null); - doc.modifiedData().put("descategoria", tramiteDocumento.getModifiedData().get("descategoria")!=null?tramiteDocumento.getModifiedData().get("descategoria").toString():null); - doc.modifiedData().put("desusoactividad", tramiteDocumento.getModifiedData().get("desusoactividad")!=null?tramiteDocumento.getModifiedData().get("desusoactividad").toString():null); - } - else{ - doc.modifiedData().put("destipoTramite", null); - doc.modifiedData().put("destipoAutorizacion", null); - doc.modifiedData().put("descategoria", null); - doc.modifiedData().put("desusoactividad", null); - } - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Exception e) { - // TODO Auto-generated catch block - throw new Exception(); - } -} - - - protected void documentosXTramite(List listadoTramites, Integer codigoPersona) throws Exception { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - - java.util.Date fechaActual = new java.util.Date(); - //Filter fechaFiltro= new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - - Filter tramitesFiltro= new Filter(); - StringBuffer bufferQuery = new StringBuffer(); - int count=0; - bufferQuery.append("("); - if(listadoTramites!=null){ - for(TarmTramite tramite:listadoTramites){ - count++; - bufferQuery.append("(t.ctramite = " + tramite.getPk() +") "); - if(count <= listadoTramites.size()-1){ - bufferQuery.append(" or "); - } - } - } - bufferQuery.append(") and t.estado = 'APR' and" + - " t.personcode = '" + codigoPersona.toString() + "' and trunc(t.fechaexpiracion) >= " + "TO_DATE('" + formato.format(fechaActual)+ "','yyyy-MM-dd')"); - - tramitesFiltro.setSql(bufferQuery.toString()); - dto.addFiltro(tramitesFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp; - try { - try { - resp = callerhelper.executeQuery(request); - } catch (Throwable e) { - // TODO Auto-generated catch block - throw new Exception(); - } - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - //MessageHelper.setMessageError(resp); - throw new Exception(); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.find(doc.getCarma(), null); - doc.modifiedData().put("carma",tarmArma==null?"":tarmArma.getCodigoarma()); - doc.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - doc.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null ?"":tarmArma.getModifiedData().get("tipo")); - doc.modifiedData().put("lote",tarmArma==null || tarmArma.getLote()==null || tarmArma.getLote().isEmpty()?"":tarmArma.getLote()); - doc.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.00")); - doc.modifiedData().put("marca", tarmArma==null || tarmArma.getModifiedData().get("marca")==null?"":tarmArma.getModifiedData().get("marca")); - doc.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - - TarmTramite tramiteDocumento = IngresoDatosTipoTramite.find(doc.getCtramite().toString()); - if(tramiteDocumento!=null){ - doc.modifiedData().put("destipoTramite", tramiteDocumento.getModifiedData().get("destipoTramite")!=null?tramiteDocumento.getModifiedData().get("destipoTramite").toString():null); - doc.modifiedData().put("destipoAutorizacion", tramiteDocumento.getModifiedData().get("destipoAutorizacion")!=null?tramiteDocumento.getModifiedData().get("destipoAutorizacion").toString():null); - doc.modifiedData().put("descategoria", tramiteDocumento.getModifiedData().get("descategoria")!=null?tramiteDocumento.getModifiedData().get("descategoria").toString():null); - doc.modifiedData().put("desusoactividad", tramiteDocumento.getModifiedData().get("desusoactividad")!=null?tramiteDocumento.getModifiedData().get("desusoactividad").toString():null); - } - else{ - doc.modifiedData().put("destipoTramite", null); - doc.modifiedData().put("destipoAutorizacion", null); - doc.modifiedData().put("descategoria", null); - doc.modifiedData().put("desusoactividad", null); - } - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Exception e) { - // TODO Auto-generated catch block - throw new Exception(); - } -} - - /** - * Query para filtro por ciertos registros de codigo de tramites - * @param listadoSolicitudes - * @throws Exception - * @throws Throwable - */ - protected void querydatabaseDocumentosCriterioFiltro(List listadoSolicitudes, Integer codigoPersona) throws Exception { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - java.util.Date fechaActual = new java.util.Date(); - //Filter fechaFiltro= new Filter(); - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - - Filter tramitesFiltro= new Filter(); - StringBuffer bufferQuery = new StringBuffer(); - int count=0; - bufferQuery.append("("); - if(listadoSolicitudes!=null){ - for(TarmSolicitud solicitud:listadoSolicitudes){ - count++; - bufferQuery.append("(t.ctramite = " + solicitud.getCtramite() + " and t.csolicitud = " + solicitud.getPk() + ") "); - if(count <= listadoSolicitudes.size()-1){ - bufferQuery.append(" or "); - } - } - } - bufferQuery.append(") and t.estado = 'APR' and" + - " t.personcode = '" + codigoPersona.toString() + "' and trunc(t.fechaexpiracion) >= " + "TO_DATE('" + - formato.format(fechaActual)+ "','yyyy-MM-dd')"); - - tramitesFiltro.setSql(bufferQuery.toString()); - dto.addFiltro(tramitesFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp; - try { - try { - resp = callerhelper.executeQuery(request); - } catch (Throwable e) { - // TODO Auto-generated catch block - throw new Exception(); - } - - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - //MessageHelper.setMessageError(resp); - throw new Exception(); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.find(doc.getCarma(), null); - doc.modifiedData().put("carma",tarmArma==null?"":tarmArma.getCodigoarma()); - doc.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - doc.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null ?"":tarmArma.getModifiedData().get("tipo")); - doc.modifiedData().put("seriecanon",tarmArma==null || tarmArma.getSeriecanon()==null || tarmArma.getSeriecanon().isEmpty()?"":tarmArma.getSeriecanon()); - doc.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.00")); - doc.modifiedData().put("marca", tarmArma==null || tarmArma.getModifiedData().get("marca")==null?"":tarmArma.getModifiedData().get("marca")); - doc.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Exception e) { - // TODO Auto-generated catch block - throw new Exception(); - } - - } - - - @SuppressWarnings("unchecked") - protected void querybase() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - dto.setOrderby("t.fechaemision"); - - if(getMfilelds().get("auxfiltro")!=null){ - Filter filtro= new Filter(); - filtro.setSql(getMfilelds().get("auxfiltro").toString());//"t.ctramite in (Select ctramite from tarmtramite where tipoautorizacion='1'"); - dto.addFiltro(filtro); - } - - if(getMfilelds().get("fechafiltro")!=null){ - Filter filtrofecha=new Filter(); - filtrofecha.setSql(getMfilelds().get("fechafiltro").toString()); - dto.addFiltro(filtrofecha); - } - - if(getMfilelds().get("numdocumentoshabilitante")!=null){ - Filter filtrodoc=new Filter(); - filtrodoc.setSql(getMfilelds().get("numdocumentoshabilitante").toString()); - dto.addFiltro(filtrodoc); - } - - SubQuery subQuerytipotramite= new SubQuery("TarmTramite","tipotramite","tipotramite","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramite); - - SubQuery subQuerytipotramitecodigo= new SubQuery("TarmTramite","tipotramitecodigo","tipotramitecodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramitecodigo); - - SubQuery subQuerytipoautorizacion= new SubQuery("TarmTramite","tipoautorizacion","tipoautorizacion","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacion); - - SubQuery subQuerytipoautorizacioncodigo= new SubQuery("TarmTramite","tipoautorizacioncodigo","tipoautorizacioncodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacioncodigo); - - SubQuery subQuerycategoria= new SubQuery("TarmTramite","categoria","categoria","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoria); - - SubQuery subQuerycategoriacodigo= new SubQuery("TarmTramite","categoriacodigo","categoriacodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoriacodigo); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - - - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - - record=lrecord.get(0); - } - super.postQuery(lrecord); - - - - for(int i=0;i< this.lrecord.size();i++){ - - try{ - TgeneCatalogDetail tipotramite=CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tipotramite").toString(),this.lrecord.get(i).getModifiedData().get("tipotramitecodigo").toString() ); - this.lrecord.get(i).getModifiedData().put("tipotramitedesc", tipotramite.getDescription()); - } - catch(Exception e){ - e.printStackTrace(); - } - try{ - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tipoautorizacion").toString(), this.lrecord.get(i).getModifiedData().get("tipoautorizacioncodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipoautorizacioncodigodesc", tipo.getDescription()); - - } - - catch(Exception e){ - e.printStackTrace(); - } - try{ - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("categoria").toString(), this.lrecord.get(i).getModifiedData().get("categoriacodigo").toString()); - this.lrecord.get(i).getModifiedData().put("categoriacodigodesc", tipo.getDescription()); - - } - - catch(Exception e){ - e.printStackTrace(); - } - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabaseInspeccion2(Date fechaInicio, Date fechaFin,TarmCentroControl centroControl){ - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - dto.setOrderby("fechaexpiracion"); - - //Nombre/Razon social - SubQuery subqueryNombre= new SubQuery("TcustPersonDetail","name", "nombre", "i.pk.personcode=t.personcode and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNombre); - SubQuery subqueryNDocumento= new SubQuery("TcustPersonDetail","identification","nodocumento","i.pk.personcode=t.personcode and i.pk.dateto= to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNDocumento); - //datos del tramite - //Tipo de tramite - SubQuery subqueryTipoTramite= new SubQuery("TgeneCatalogDetail","description","tipotramite","i.pk.catalog= (select o.tipotramite from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.tipotramitecodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipoTramite); - SubQuery subqueryTramite= new SubQuery("TgeneCatalogDetail","description","tipoautorizacion","i.pk.catalog= (select o.tipoautorizacion from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.tipoautorizacioncodigo from TarmTramite o where o.pk=t.ctramite) "); - dto.addSubQuery(subqueryTramite); - //Uso/Actividad - SubQuery subqueryUsoActividad= new SubQuery("TgeneCatalogDetail","description","usoactividad","i.pk.catalog= (select o.usoactividad from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.usoactividadcodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsoActividad); - //Categoria - SubQuery subqueryCategoria= new SubQuery("TgeneCatalogDetail","description","categoria","i.pk.catalog= (select o.categoria from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.categoriacodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoria); - - SubQuery subqueryCodTramite=new SubQuery("TarmTramite", "pk", "ctramite", "i.pk= t.ctramite"); - dto.addSubQuery(subqueryCodTramite); - - //Filtros de fecha inicio y fin - if(fechaInicio!=null){ - //dto.addFiltro(new Filter("fechaexpiracion", ">=", fechaInicio.toString())); - //dto.addFiltro(new Filter("fechaexpiracion", "<", this.fechaFin.toString())); - Filter filtro= new Filter(); - filtro.setSql( - //+ "t.fechaexpiracion>=TO_DATE('" + dateFormat.format(fechaInicio)+ "','yyyy-MM-dd')" - "TRUNC(t.fechaexpiracion)<=TO_DATE('" + dateFormat.format(fechaFin)+ "','yyyy-MM-dd')" - + " and t.ctramite in (select o.pk from TarmTramite o where o.tipoautorizacion = '1' and o.requiereinspeccion = 'Y') " - +" and t.centrocontrol ='" + centroControl.getPk() + "'" - //+ " and t.csolicitud in (select q.pk from TarmSolicitud q where q.ccentrocontrol = '" + centroControl.getPk() + "' )" - + " and t.estado = 'APR'"); - - dto.addFiltro(filtro); - } - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - //Anteriormente se usaba para consultar actualmente ya no - protected void querydatabaseInspeccion() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - dto.setOrderby("fechaexpiracion"); - - //Nombre/Razon social - //SubQuery subqueryNombre= new SubQuery("TcustPersonDetail","name","nombre","i.pk.personcode=t.personcode"); - //dto.addSubQuery(subqueryNombre); - - //Filtros de fecha inicio y fin - if(this.fechaInicio!=null){ - dto.addFiltro(new Filter("fechaexpiracion", ">=", this.fechaInicio.toString())); - //dto.addFiltro(new Filter("fechaexpiracion", "<", this.fechaFin.toString())); - } - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmDocumentoHabilitante doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para guardar el documento habilitante - * @throws Throwable - */ - public void saveDocumentoHabilitante() throws Throwable { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } - - /** - * Devueleve el tipo de tramite de un documento - * @param documento - * @return - */ - public String tipoTramite(TarmDocumentoHabilitante documento){ - String tipo=""; - try { - //Obteniendo la solicitud - TarmSolicitud solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(documento.getCsolicitud()); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getTipotramite()!=null && !tramite.getTipotramite().isEmpty() - && tramite.getTipotramitecodigo()!=null && !tramite.getTipotramitecodigo().isEmpty()){ - TgeneCatalogDetail catalogoTipoTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - if(catalogoTipoTramite!=null){ - tipo=catalogoTipoTramite.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return tipo; - } - - public String tramite(TarmDocumentoHabilitante documento) { - String tipo=""; - try { - //Obteniendo la solicitud - TarmSolicitud solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(documento.getCsolicitud()); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getTipoautorizacion()!=null && !tramite.getTipoautorizacion().isEmpty() - && tramite.getTipoautorizacioncodigo()!=null && !tramite.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail catalogoTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - if(catalogoTramite!=null){ - tipo=catalogoTramite.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return tipo; - } - - /** - * Devueleve la categoria de un documento - * @param documento - * @return - */ - public String categoria(TarmDocumentoHabilitante documento){ - String categoria=""; - try { - //Obteniendo la solicitud - TarmSolicitud solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(documento.getCsolicitud()); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getCategoria()!=null && !tramite.getCategoria().isEmpty() - && tramite.getCategoriacodigo()!=null && !tramite.getCategoriacodigo().isEmpty()){ - TgeneCatalogDetail catalogoCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - if(catalogoCategoria!=null){ - categoria=catalogoCategoria.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return categoria; - } - - public static List findInspeccionesGenerar(Date fechaInicio, Date fechaFin, TarmCentroControl centroControl) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300000; - //cc.addFilter("personcode", personcode); - cc.querydatabaseInspeccion2(fechaInicio,fechaFin,centroControl); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findDocumentosDelTramite(String personcode, String filtro) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 3000; - cc.addFilter("personcode", personcode); - cc.getMfilelds().put("auxfiltro",filtro); - cc.querybase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findPorPersoncode(String personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 3000; - cc.addFilter("personcode", personcode); - cc.querybase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * buscar el permiso de coumento habilitante por arma - * @return - */ - public static TarmDocumentoHabilitante findxarma( String codigoarma, String personcode){ - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.addFilter("codigoarma", codigoarma); - cc.addFilter("personcode", personcode); - cc.querybase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static List findPorPersoncodeaut(String personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - cc.getMfilelds().put("auxfiltro", "t.ctramite in (Select ta.pk from com.fp.persistence.parmas.param.TarmTramite ta where ta.tipoautorizacion='1') and" - +" ctramite in (select o from TarmTramite o where o.sancionable is not null and o.sancionable='Y') ");//tramite que sean sancionables - cc.getMfilelds().put("fechafiltro", "t.fechaemision = (Select max(ta.fechaemision) from com.fp.persistence.parmas.soli.TarmDocumentoHabilitante ta where t.ctramite=ta.ctramite and t.personcode=ta.personcode )"); - cc.querybase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static List findXSolicitudNueva(String csolicitud) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.getMfilelds().put("numdocumentoshabilitante", "t.pk in (Select sd.pk.cdocumento from com.fp.persistence.parmas.soli.TarmSolicitud s, com.fp.persistence.parmas.soli.TarmSolicitudDocumento sd where s.pk = sd.pk.csolicitud and s.pk = '"+csolicitud+"')"); - cc.querybase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Devueleve la categoria de un documento - * @param documento - * @return - */ - public String usoActividad(TarmDocumentoHabilitante documento){ - String usoActividad=""; - try { - //Obteniendo la solicitud - TarmSolicitud solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(documento.getCsolicitud()); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getUsoactividad()!=null && !tramite.getUsoactividad().isEmpty() - && tramite.getUsoactividadcodigo()!=null && !tramite.getUsoactividadcodigo().isEmpty()){ - TgeneCatalogDetail catalogoUso= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(catalogoUso!=null){ - usoActividad=catalogoUso.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return usoActividad; - } - - /** - * Devueleve la ubicacion de un documento - * @param documento - * @return - */ - public String ubicacion(TarmDocumentoHabilitante documento){ - String ubicacion=""; - try { - TcustPersonDetail detallesPersona=PersonDetailController.find(documento.getPersoncode().toString()); - - if(detallesPersona!=null){ - personAddressController.findPrincipal(String.valueOf(documento.getPersoncode())) ; - - if(personAddressController.getLrecord().get(0).getProvincecode()!=null && !personAddressController.getLrecord().get(0).getProvincecode().isEmpty()){ - - List provinceList = ProvinceController.findPorCodigo("EC", personAddressController.getLrecord().get(0).getProvincecode()); - ubicacion = provinceList.get(0).getDescription(); - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return ubicacion; - } - - - /** - * Devuelve el estado de un documento habilitante - * @param documento documento - * @return estado - */ - public String estado(TarmDocumentoHabilitante documento){ - TgeneCatalogDetail estado = new TgeneCatalogDetail(); - try { - if(documento==null){ - return ""; - } - estado = CatalogDetailController.findxCodigoCodcatalogo(documento.getEstado(),documento.getEstadocode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return estado.getDescription(); - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDocumentoHabilitante documentoHabilitante : lrecord) { - documentoHabilitante.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodod que devuelve un documento habilitante por el codigo de solicitud - * @param codigoSolicitud - * @return - */ - public static TarmDocumentoHabilitante findPorSolicitud(String codigoSolicitud) { - try { - if(codigoSolicitud==null || codigoSolicitud.isEmpty()){ - return null; - } - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodod que devuelve un documento habilitante por el codigo de solicitud - * @param codigoSolicitud - * @return - */ - public static TarmDocumentoHabilitante findPorTramite(String codigoTramite) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("ctramite", codigoTramite); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodod que obtiene un documento habilitante por su codigo - * @param codigoSolicitud - * @return - */ - public static TarmDocumentoHabilitante findPorCodigo(String cdocumento) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cdocumento); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método que retorna el documento habilitante por id - * @param cdocumento - * @return - */ - public static TarmDocumentoHabilitante find(String cdocumento) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cdocumento); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * buscar el permiso de coumento habilitante por arma - * @return - */ - public static TarmDocumentoHabilitante findxarma( String codigoarma){ - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("codigoarma", codigoarma); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método que consulta de la entidad TarmDocumentoHabilitante por código de documento - */ - public static TarmDocumentoHabilitante findPorCDocumento(String cdocumento) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 15; - cc.addFilter("pk", cdocumento); - cc.querybase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findByPerson_Inventario(String personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - cc.getMfilelds().put("fechafiltro", "t.fechaexpiracion >=sysdate and" - + " ctramite in (select tra.pk from TarmTramite tra where tra.categoria in ('2','3','4','5','8','11') and tipoautorizacion='1')");//1 autorizacion - cc.querybasesimle(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findpersoncode(String personcode,String categoria) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - if(categoria.equals("4")){ - cc.getMfilelds().put("fechafiltro", "t.fechaexpiracion >=sysdate and" - + " ctramite in (select tra.pk from TarmTramite tra where tra.categoria in ('2','3','4','5','8','11') and tipoautorizacion='1')");//1 autorizacion - } - else{ - cc.getMfilelds().put("fechafiltro", "t.fechaexpiracion >=to_date(sysdate,'dd/MM/yyyy') and" - + " ctramite in (select tra.pk from TarmTramite tra where tra.categoria='"+categoria+"' and tipoautorizacion='1')");//1 autorizacion - } - cc.querybasesimle(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static List findpersoncodeInventario(String personcode,String categoria) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 30; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - if(categoria.equals("4")){ - cc.getMfilelds().put("fechafiltro", "ctramite in (select tra.pk from TarmTramite tra where tra.categoria in ('2','3','4','5','8','11') and tipoautorizacion='1')");//1 autorizacion - } - else{ - cc.getMfilelds().put("fechafiltro", "ctramite in (select tra.pk from TarmTramite tra where tra.categoria='"+categoria+"' and tipoautorizacion='1')");//1 autorizacion - } - cc.querybasesimle(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que busca los documentos habilitantes por persona para registro de produccion - * @param personcode - * @return List - */ - public static List findByPerson_Produccion(String personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - - cc.getMfilelds().put("fechafiltro", "t.fechaexpiracion >=sysdate and" - + " ctramite in (select tra.pk from TarmTramite tra where tra.categoria in ('4','5') and tipoautorizacion='1')");//1 autorizacion - - cc.querybasesimle(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que busca los documentos habilitantes por persona para registro de importaciones - * @param personcode - * @return List - */ - public static List findByPerson_Importacion(String personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("personcode", personcode); - cc.addFilter("estado", "APR"); - // FILTROS: tipoautorizacion='1' --> 1 AUTORIZACION - // FILTROS: tra.categoria='8' --> 8 IMPORTADOR - cc.getMfilelds().put("fechafiltro", "t.fechaexpiracion >=to_date(sysdate,'dd/MM/yyyy') and" - + " ctramite in (select tra.pk from TarmTramite tra where tra.categoria='8' and tipoautorizacion='1')"); - - cc.querybasesimle(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @SuppressWarnings("unchecked") - protected void querybasesimle() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - dto.setOrderby("t.fechaemision"); - - if(getMfilelds().get("auxfiltro")!=null){ - Filter filtro= new Filter(); - filtro.setSql(getMfilelds().get("auxfiltro").toString());//"t.ctramite in (Select ctramite from tarmtramite where tipoautorizacion='1'"); - dto.addFiltro(filtro); - } - - if(getMfilelds().get("fechafiltro")!=null){ - Filter filtrofecha=new Filter(); - filtrofecha.setSql(getMfilelds().get("fechafiltro").toString()); - dto.addFiltro(filtrofecha); - } - - if(getMfilelds().get("numdocumentoshabilitante")!=null){ - Filter filtrodoc=new Filter(); - filtrodoc.setSql(getMfilelds().get("numdocumentoshabilitante").toString()); - dto.addFiltro(filtrodoc); - } - - SubQuery subqueryCategoriaCodigo= new SubQuery("TgeneCatalogDetail", "description", "description", "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipotramitecodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoriaCodigo); - SubQuery subqueryTipocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptiontram", "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.categoriacodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryUsocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptionact", "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.usoactividadcodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsocodigo); - - SubQuery subQuerytipotramite= new SubQuery("TarmTramite","tipotramite","tipotramite","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramite); - - SubQuery subQuerytipotramitecodigo= new SubQuery("TarmTramite","tipotramitecodigo","tipotramitecodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramitecodigo); - - SubQuery subQuerytipoautorizacion= new SubQuery("TarmTramite","tipoautorizacion","tipoautorizacion","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacion); - - SubQuery subQuerytipoautorizacioncodigo= new SubQuery("TarmTramite","tipoautorizacioncodigo","tipoautorizacioncodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacioncodigo); - - SubQuery subQuerycategoria= new SubQuery("TarmTramite","categoria","categoria","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoria); - - SubQuery subQuerycategoriacodigo= new SubQuery("TarmTramite","categoriacodigo","categoriacodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoriacodigo); - - SubQuery subQueryclase= new SubQuery("TarmTramite","clase","clase","i.pk=t.ctramite"); - dto.addSubQuery(subQueryclase); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public static List findByPersonCode(Integer personcode) { - try { - DocumentoHabilitanteController cc = new DocumentoHabilitanteController(); - cc.init(); - cc.recperpage = 5000; - if(personcode!=null){ - cc.addFilter("personcode", personcode.toString()); - } - cc.getMfilelds().put("pathSuspencion", "t.pathSuspencion is not null"); - cc.querydocumhabsusp(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @SuppressWarnings("unchecked") - protected void querydocumhabsusp() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - dto.setOrderby("t.fechaemision"); - - if(getMfilelds().get("pathSuspencion")!=null){ - Filter filtrodoc=new Filter(); - filtrodoc.setSql(getMfilelds().get("pathSuspencion").toString()); - dto.addFiltro(filtrodoc); - } - //Nombre/Razon social - SubQuery subqueryNombre= new SubQuery("TcustPersonDetail","name","nombre","i.pk.personcode=t.personcode and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNombre); - SubQuery subqueryNDocumento= new SubQuery("TcustPersonDetail","identification","nodocumento","i.pk.personcode=t.personcode and i.pk.dateto= to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNDocumento); - - SubQuery subqueryCategoriaCodigo= new SubQuery("TgeneCatalogDetail", "description", "description", "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipotramitecodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoriaCodigo); - SubQuery subqueryTipocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptiontram", "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.categoriacodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryUsocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptionact", "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.usoactividadcodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsocodigo); - - SubQuery subQuerytipotramite= new SubQuery("TarmTramite","tipotramite","tipotramite","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramite); - - SubQuery subQuerytipotramitecodigo= new SubQuery("TarmTramite","tipotramitecodigo","tipotramitecodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipotramitecodigo); - - SubQuery subQuerytipoautorizacion= new SubQuery("TarmTramite","tipoautorizacion","tipoautorizacion","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacion); - - SubQuery subQuerytipoautorizacioncodigo= new SubQuery("TarmTramite","tipoautorizacioncodigo","tipoautorizacioncodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerytipoautorizacioncodigo); - - SubQuery subQuerycategoria= new SubQuery("TarmTramite","categoria","categoria","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoria); - - SubQuery subQuerycategoriacodigo= new SubQuery("TarmTramite","categoriacodigo","categoriacodigo","i.pk=t.ctramite"); - dto.addSubQuery(subQuerycategoriacodigo); - - SubQuery subQueryclase= new SubQuery("TarmTramite","clase","clase","i.pk=t.ctramite"); - dto.addSubQuery(subQueryclase); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - /** - * Valida que no se puedan seleccionar documentos de fecha emision anterior al sistema MAIA - * @param event - */ - public void validaNoSeleccionDocAnteriores(AjaxBehaviorEvent event) { - TarmDocumentoHabilitante documentoSeleccionado = this.getLrecord().get(Integer.parseInt(event.getComponent().getAttributes().get("documentoSeleccionado").toString())); - // FECHA 15 DE JUNIO DEL 2015 - PUESTA EN PRODUCCION - Calendar datePuestaProduccion = new GregorianCalendar(2015, 5, 15); //2015, 06, 15 - if(documentoSeleccionado.getFechaemision().before(datePuestaProduccion.getTime())){ - documentoSeleccionado.getModifiedData().put("seleccionado", Boolean.FALSE); - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_reimpresionprevianopermitida")); - } - } - - public void update(TarmDocumentoHabilitante bean) throws Exception { - record=bean; - super.update(); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteDetalleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteDetalleController.java.svn-base deleted file mode 100644 index 5856a51..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/DocumentoHabilitanteDetalleController.java.svn-base +++ /dev/null @@ -1,173 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitanteDetall; - - -/** - * @author Carlos Guzman - * - */ -@ManagedBean -@ViewScoped -public class DocumentoHabilitanteDetalleController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 8586936319898253550L; - - - public DocumentoHabilitanteDetalleController() throws Exception{ - super(TarmDocumentoHabilitanteDetall.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - } - - private void init(){ - this.beanalias = "DOCUMENTOHABILITANTEDETAIL"; - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodod que devuelve un documento habilitante detalle por el codigo de documento - * @param codigoDocumento - * @return - */ - public static TarmDocumentoHabilitanteDetall findPorCodigoDocumento(String codigoDocumento) { - try { - DocumentoHabilitanteDetalleController cc = new DocumentoHabilitanteDetalleController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cdocumento", codigoDocumento); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodod que devuelve un documento habilitante detalle por el codigo de documento - * @param codigoDocumento - * @return - */ - public static TarmDocumentoHabilitanteDetall findPorCDocumento(String cDocumento) { - try { - DocumentoHabilitanteDetalleController cc = new DocumentoHabilitanteDetalleController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cdocumento", cDocumento); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodod que obtiene un documento habilitante por su codigo - * @param codigoSolicitud - * @return - */ - public static TarmDocumentoHabilitanteDetall findPorCodigo(String cdetalle) { - try { - DocumentoHabilitanteDetalleController cc = new DocumentoHabilitanteDetalleController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cdetalle); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EmitirDocumentoHabilitante.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EmitirDocumentoHabilitante.java.svn-base deleted file mode 100644 index 0a7e45e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EmitirDocumentoHabilitante.java.svn-base +++ /dev/null @@ -1,841 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -/** - * Descarga el Documento Habilitante dependidendo del tramite que se seleccione - * @author Andres Cevallos - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class EmitirDocumentoHabilitante extends AbstractController { - - - - - /** - * Controlador Inyectado ReportController - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - *Controador Inyectado TarmTramiteController - */ - @ManagedProperty(value = "#{tramiteController}") - private TarmTramiteController tramiteController; - - - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - - /** - *Referencia a la solicitud del tramite - */ - private TarmSolicitudTramite solicitudTramite; - - /** - *Referencia a la Solicitud - */ - private TarmSolicitud solicitud; - /** - *Fila de la lista de tramites - */ - private TarmTramite fila; - /** - *Detalles de la persona - */ - private TcustPersonDetail detallesPersona; - /** - * Detalle del usuario - */ - private TcustPersonDetail usuario; - /** - *Documento Habilitante relacionado con el tramite - */ - private TarmDocumentoHabilitante documentoHabilitante; - /** - * Numero de Tramite realizado - */ - private String numeroTramite; - /** - * Nombre de la persona - */ - private String nombreRazonSocial; - /** - * Formato de generacion de pdf - */ - private String formato = "pdf"; - /** - * Formato que se muestra en pantalla - */ - private String mostrarFormato="PDF"; -// TcustPersonDetail detallesPersona; - /** - *Lista de Solicitudes - */ - private List lsolicitud; - /** - *Responsable de centro de control - */ - private TcustPersonDetail responsableCentroControl= null; - /** - * Detalle de Usuarios - */ - private TsafeUserDetail tsafeUserDetailUsuario = null; -// String numeroTramite; -// String nombreRazonSocial; - /** - * Detalle de identificacion - */ - private String identificacion; - /** - * Tipo de identificacion - */ - private String tipoidentificacion; - /** - *Habilita y deshabilita la impresion - */ - private boolean imprimir; - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - - - private List ldocumentos; - - public EmitirDocumentoHabilitante() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // super.startQuery(); - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - // lrecord = new ArrayList<>(); - beanalias = "EMITIRDOCUMENTOHABILITANTE"; - ldocumentos = new ArrayList(); - ldocumentos = CatalogDetailController.find("IDENTIFICATION"); - //Obteniendo el tramite - //solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud("1"); - - //Obteniendo la solicitud - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple("1"); - //this.numeroTramite=solicitudTramite.getNumerotramite(); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el documento habilitante - // documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud("1"); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.obtenerCentroControl(); - this.obtenerResponsableCentroControl(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - try { - String sql=encontrarUsuario(); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - if(sql!=null){ - Filter filtro = new Filter(); - filtro.setSql(sql); - dto.addFiltro(filtro); - } - else{ - this.lrecord = null; - return; - } - SubQuery subqueryUso= new SubQuery("TarmTramite","usoactividad","actividad","i.pk in (select a.ctramite from TarmSolicitud a where a.pk=t.pk.csolicitud)"); - dto.addSubQuery(subqueryUso); - SubQuery subqueryPersona= new SubQuery("TarmSolicitud","personcode","persona","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryPersona); - SubQuery subqueryTipo=new SubQuery("TarmTramite", "tipoautorizacion", "tramite", "i.pk in (select a.ctramite from TarmSolicitud a where a.pk=t.pk.csolicitud)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryCategoria= new SubQuery("TarmTramite", "categoria", "categoria", "i.pk in (select a.ctramite from TarmSolicitud a where a.pk=t.pk.csolicitud)"); - dto.addSubQuery(subqueryCategoria); - SubQuery subqueryCategoriaCodigo= new SubQuery("TarmTramite", "categoriacodigo", "categoriacodigo", "i.pk in (select a.ctramite from TarmSolicitud a where a.pk=t.pk.csolicitud)"); - dto.addSubQuery(subqueryCategoriaCodigo); - SubQuery subqueryTipocodigo=new SubQuery("TarmTramite", "tipoautorizacioncodigo", "tramitecodigo", "i.pk in (select a.ctramite from TarmSolicitud a where a.pk=t.pk.csolicitud)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryEstado=new SubQuery("TgeneCatalogDetail","description","desc","i.pk.catalog=t.estadotramite and i.pk.catalogcode=t.estadotramitecodigo"); - dto.addSubQuery(subqueryEstado); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - for(int i=0;i< this.lrecord.size();i++){ - this.lrecord.get(i).getModifiedData().put("usodes", CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("actividad").toString(), "USOACTIVIDAD").getDescription()); - this.lrecord.get(i).getModifiedData().put("imprimir", true); - TcustPersonDetail person = PersonDetailController.find(this.lrecord.get(i).getModifiedData().get("persona").toString()); - this.lrecord.get(i).getModifiedData().put("nombre",person!=null?person.getName():""); - this.lrecord.get(i).getModifiedData().put("identificacion", person!=null?person.getIdentification():""); - try{ - TgeneCatalogDetail cate=CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("categoria").toString(),this.lrecord.get(i).getModifiedData().get("categoriacodigo").toString() ); - this.lrecord.get(i).getModifiedData().put("categoriadesc", cate!=null?cate.getDescription():""); - } - catch(Exception e){ - e.printStackTrace(); - } - try{ - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tramite").toString(), this.lrecord.get(i).getModifiedData().get("tramitecodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipotramdesc", tipo!=null?tipo.getDescription():""); - if(!lrecord.get(i).getEstadotramite().equals("APB")){ - lrecord.get(i).getModifiedData().put("imprimir", "true"); - } - else{ - lrecord.get(i).getModifiedData().put("imprimir", "false"); - } - } - - catch(Exception e){ - e.printStackTrace(); - } - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que genera el reporte - * @param fila - */ - public void imprimir(TarmSolicitudTramite fila){ - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - boolean flagDoc = false; - String tipotramite=fila.getModifiedData().get("tramite").toString(); - String nombreArchivo = fila.getModifiedData().get("tipotramdesc").toString(); - solicitud = SolicitudController.findSolicitudxcodsolicitud(fila.getPk().getCsolicitud()); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(fila.getPk().getCsolicitud()); - numeroTramite=solicitudTramite.getNumerotramite(); - documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud(fila.getPk().getCsolicitud()); - TarmTramite tramite = TarmTramiteController.findSimple(fila.getPk().getCtramite().toString()); - String tipoReporte = tramite.getRegistroagenciasucursal(); - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(tipotramite); - if(tipotramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - - - if(tipotramite.equals("2")){ - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - return; - }else if (tipotramite.equals("4")) { - this.reporteGuiaLibreTransito(); - return; - }else { - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - } - - this.reporteGeneral(solicitud.getPk(),flagAgencia,flagArmas,flagDoc,flagGuardias,nombreArchivo); - - } - - /** - * Encuentra el usuario logueado - * @return - */ - public String encontrarUsuario(){ - if(identificacion==null || identificacion=="") - return null; - detallesPersona=PersonDetailController.findxidentification(identificacion, tipoidentificacion); - if(detallesPersona==null) - return null; - lsolicitud=SolicitudController.findSolicitudxPersona(detallesPersona.getPk().getPersoncode().toString()); - - if(lsolicitud == null || lsolicitud.isEmpty()){ - return null; - } - - String csolicitud=null; - for(TarmSolicitud soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="csolicitud='"+soli.getPk()+"'"; - } - else{ - csolicitud+=" or csolicitud='"+soli.getPk()+"'"; - } - } - return csolicitud ; - } - - public List getLdocumentos() { - return ldocumentos; - } - - public void setLdocumentos(List ldocumentos) { - this.ldocumentos = ldocumentos; - } - - @Override - public void save() { - // TODO Auto-generated method stub - super.save(); - } - - /** - * Ejecuta un reporte de armas - * @param name Nombre del reporte a generar. - */ - public void reporteGuiaLibreTransito() { - try { - String path = "armas/reports/guiaLibreTransito"; - String filename=MsgControlArmas.getProperty("lbl_guiaLibreTransito"); - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Nombre del centro de control - parameters.put("nombreCentro", this.nombreInstitucion); - - //No. Guia - parameters.put("noGuia", this.numeroTramite); - - //Codigo de barras - String codigoBarras=this.numeroTramite.replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < codigoBarras.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(codigoBarras.toCharArray()[i]!='0' && codigoBarras.toCharArray()[i]!='1' && codigoBarras.toCharArray()[i]!='2' - && codigoBarras.toCharArray()[i]!='3' && codigoBarras.toCharArray()[i]!='4' && codigoBarras.toCharArray()[i]!='5' - && codigoBarras.toCharArray()[i]!='6' && codigoBarras.toCharArray()[i]!='7' && codigoBarras.toCharArray()[i]!='8' - && codigoBarras.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=codigoBarras.toCharArray()[i]; - codigoBarras=codigoBarras.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("codigoBarras", codigoBarras); - - //Nombre/Razon Social - parameters.put("nombreRazon", detallesPersona.getName()); - - // Vendedor - parameters.put("tipodocumentoorigen", solicitud.getTipodocumentoorigen()); - parameters.put("numerodocumentoorigen", solicitud.getNumerodocumentoorigen()); - parameters.put("nombrerazonsocialorigen", solicitud.getNombrerazonsocialorigen()); - - //Cedula - parameters.put("cedula", detallesPersona.getIdentification()); - - //Desde - parameters.put("desde", solicitud.getLugarorigen()); - - //Hasta - parameters.put("hasta", solicitud.getLugardestino()); - - //Fechas - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - if(documentoHabilitante!=null){ - parameters.put("fechaExpide", sdf.format(documentoHabilitante.getFechaemision())); - parameters.put("fechaCaduca", sdf.format(documentoHabilitante.getFechaexpiracion())); - }else{ - parameters.put("fechaExpide", " "); - parameters.put("fechaCaduca", " "); - } - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.responsableCentroControl.getName()); - parameters.put("personcode",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreInstitucion); - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - public void reporteCertificadoArmas() { - try { - String path = "armas/reports/certificadoArmas"; - String filename="certificadoarmas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - /** - * Reporte de Agencias - */ - public void reporteAgencias() { - try { - String path = "armas/reports/aperturaAgenciasSucursales"; - String filename="aperturaagenciassucursales"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Reporte de Inscripcion de Armas - * @param solicitud - */ - public void reporteInscripcion(TarmSolicitud solicitud) { - try { - String path = "armas/reports/reporteInscripcion"; - String filename="armas"; - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - - //No. Guia - parameters.put("nombreCompania", detallesPersona.getName()); - - //Nombre/Razon Social - parameters.put("nombrepersona",detallesPersona.getLegalrepresent()); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(solicitud.getFregistro())); - parameters.put("ciudad", "Quito"); - - //Grado - /* String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+usuario.getName()); - */ - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - String institucionCentroControl=""; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - this.nombreInstitucion=CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - institucionCentroControl=this.nombreInstitucion; - - return institucionCentroControl; - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public void reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias,String nombreArchivo) { - try { - String gradoUsuario =""; - String path = "armas/reports/generalReportHabilita"; - String filename=nombreArchivo; - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitud); - TarmTramite t; - Boolean datosTramiteVacios=false; - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitud); - - if(t!=null){ - - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", "-"); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - } - - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()).getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - String format = "pdf"; - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public void reporteCertificados(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias) { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCertificado"; - String filename="reporteCertificado"; - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()).getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - String format = "pdf"; - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public String getMostrarFormato() { - return mostrarFormato; - } - - public void setMostrarFormato(String mostrarFormato) { - this.mostrarFormato = mostrarFormato; - } - - public boolean isImprimir() { - return imprimir; - } - - public void setImprimir(boolean imprimir) { - this.imprimir = imprimir; - } - - - public TarmTramiteController getTramiteController() { - return tramiteController; - } - - public void setTramiteController(TarmTramiteController tramiteController) { - this.tramiteController = tramiteController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public TarmTramite getFila() { - return fila; - } - - public void setFila(TarmTramite fila) { - this.fila = fila; - } - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getTipoidentificacion() { - return tipoidentificacion; - } - - public void setTipoidentificacion(String tipoidentificacion) { - this.tipoidentificacion = tipoidentificacion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EnvioArmasNoIniciadasFlujoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EnvioArmasNoIniciadasFlujoController.java.svn-base deleted file mode 100644 index 00b52f2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/EnvioArmasNoIniciadasFlujoController.java.svn-base +++ /dev/null @@ -1,432 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.model.SelectItem; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmDecomisoArmaTransaccion. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class EnvioArmasNoIniciadasFlujoController extends AbstractController { - - public EnvioArmasNoIniciadasFlujoController() throws Exception { - super(TarmDecomisoArmaTransaccion.class); - } - - /** - * Controlador para generar el reporte - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador para caragar el archivo al alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * atributo con los datos del usuario logeado - */ - private TsafeUserDetail userDetail; - - private String xpathflujo; - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //consulta la lista - this.querydatabase(); - } - - private List decomisoArmas; - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 300; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "RECEPCIONARMASNOENV"; - userDetail= (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * nombre del centro de control - */ - private String institucionCentroControl; - private ListitemUnidadDestino; - /** - * nombre del centro de control - */ - private String instiCentroControlCode; - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - if(centroControlJur!=null && centroControlJur.getCcentrocontrol()!=null){ - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - itemUnidadDestino= new ArrayList(); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - //codigo del centro de control de pichincha - TgeneParameters paramCentroControlDestino=ParametersController.find("CODIGO.CENT.CONTROL.PICHINCHA", "1");//000030//CAPI - //validamos si la persona que ingreso pertenece al centro de control pichincha para darle al opcion de seleccionar el deparatmento de control para la recepcion - if(paramCentroControlDestino.getTextvalue().equals(centroControl.getNombreinstitucion())){ - itemUnidadDestino.add(new SelectItem(centroControl.getPk(), institucionCentroControl)); - //codigo del departamento de control - TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - TarmCentroControl institCentroControlDestino= CentroControlArmasController.findPorCentroControl(paramDepartamentoControl.getTextvalue());//000077 - itemUnidadDestino.add(new SelectItem(institCentroControlDestino.getPk(), ""+institCentroControlDestino.getModifiedData().get("desnombreinstitucion"))); - }else{ - instiCentroControlCode=centroControl.getPk(); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_laprovinciasinccontrol")); - return; - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal")); - return; - } - } - - public void executeUnidad() { - for(SelectItem item: itemUnidadDestino){ - if(item.getValue().equals(instiCentroControlCode)){ - institucionCentroControl=item.getLabel(); - } - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - Filter filtro = new Filter(); - filtro.setSql("estadoflujo='NOENV' and numerotransaccion like '%ENV-%' and ccentrocontrol='"+instiCentroControlCode+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * - * @param codigo - * @return - */ - public static TarmDecomisoArmaTransaccion find(String codigo) { - try { - EnvioArmasNoIniciadasFlujoController cc = new EnvioArmasNoIniciadasFlujoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigo); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * lista las armas decomisadas asociadas al numero de transaccion - * @param decomisoArmaTransaccion - */ - public void listarArmas(TarmDecomisoArmaTransaccion decomisoArmaTransaccion){ - record=decomisoArmaTransaccion; - decomisoArmas=DecomisoArmaController.findEnvio(decomisoArmaTransaccion.getPk()); - } - - - public void generarActa(){ - String gradoUsuario =""; - Calendar fechaActualCldr = Calendar.getInstance(); - TcustPersonDetail usuario = PersonDetailController.find(this.userDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+usuario.getName(); - }else{ - gradoUsuario = usuario.getName(); - } - // String codigoreporte=record.getModifiedData().get("cdecomiso").toString();//listTarmDecomisoArma.get(0).getPk().toString(); - String path = "armas/reports/entregaArmasacta"; - String filename=record.getNumerotransaccion(); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("fechaCorte", (new SimpleDateFormat("dd-MM-yyyy").format(record.getFcorte()))); - parameters.put("codResponsable",usuario.getPk().getPersoncode()); - parameters.put("gradoUsuario",gradoUsuario); - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("unidadmilitar", institucionCentroControl); - parameters.put("tecnicoAlmacenamiento",MsgControlArmas.getProperty("tecnicoAlmacenamiento")+" "+institucionCentroControl); - parameters.put("jefe",MsgControlArmas.getProperty("jefe")+" "+institucionCentroControl); - parameters.put("codigodecomisoarma",record.getPk().toString()); - parameters.put("tramite", record.getNumerotransaccion()); - //Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - InputStream file =this.reportController.jaspertoInputstream(path, parameters, "pdf", filename, this.getLoginController()); - xpathflujo = generarXpath(record.getNumerotransaccion()); - if(!alfrescoController.uploadFile(file, record.getNumerotransaccion()+ ".pdf", xpathflujo)){ - xpathflujo=null; - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo para generar la ruta donde se carga el archivo - * @param numeroTransaccionRecepcion - * @return - */ - public String generarXpath(String numeroTransaccionRecepcion){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Decomiso"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+numeroTransaccionRecepcion); - return ruta.toString(); - } - public List getDecomisoArmas() { - return decomisoArmas; - } - - public void setDecomisoArmas(List decomisoArmas) { - this.decomisoArmas = decomisoArmas; - } - - public void iniciarFlujo() { - try { - - if(xpathflujo==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - TarmTransaccionArmaBodega armaBodegas= TransaccionArmaBodegaController.find(record.getPk().toString()); - - if(armaBodegas.getModifiedData().get("provincecodeorig")==null || armaBodegas.getModifiedData().get("provincecodeorig").toString().length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - String cprovincia=armaBodegas.getModifiedData().get("provincecodeorig").toString(); - //Se comenta por validacion de provincia en el flujo de EnvioArmas clase com.fp.armas.task.ValidacionGrupo - // cualquier error analizar esta validacion de provincia - - /*TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - if(armaBodegas.getModifiedData().get("nombreinstitucion").equals(paramDepartamentoControl.getTextvalue())){ - cprovincia=paramDepartamentoControl.getTextvalue(); - }*/ - - String xpath=xpathflujo+"/cm:"+record.getNumerotransaccion()+ ".pdf"; - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - //codigo de la tabla TarmDecomisoArmaTransaccion - request.modifiedData().put("numerotransaccion", record.getPk()); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("numerosolicitud", record.getNumerotransaccion()); - //ruta del archivo para la firma - request.modifiedData().put("xpath", xpath); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(record.getNumerotransaccion()); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " TRANSACCION: "+ record.getNumerotransaccion()); - xpathflujo=null; - //quita el registro de la lista en vista - lrecord.remove(record); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public List getItemUnidadDestino() { - return itemUnidadDestino; - } - - public void setItemUnidadDestino(List itemUnidadDestino) { - this.itemUnidadDestino = itemUnidadDestino; - } - - public String getInstiCentroControlCode() { - return instiCentroControlCode; - } - - public void setInstiCentroControlCode(String instiCentroControlCode) { - this.instiCentroControlCode = instiCentroControlCode; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.netbeans-base deleted file mode 100644 index 83a6f5a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.netbeans-base +++ /dev/null @@ -1,1201 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CashManagementHistoryController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * - * Genrera fichas tecnicas de armas faltantes - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class FichasTecnicasFlatantesController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 8843091476010012919L; - - /** - * Controlador que maneja alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - private TarmArmas arma = new TarmArmas(); - - private String editarReg; - - private String codigoSolicitud; - - private boolean habilitaButtom; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - private List listadoArmasPruebas = new ArrayList<>(); - - private String observacion; - - private String estado; - - private Date fec_actual; - - private String formato; - - private String xpathflujo; - - private TcustPersonDetail responsableCentroControl= null; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - private Boolean btnFlujo; - - private List tarmArmaPruebasList; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private boolean deshabilitadoGenerarReporte=true; - - private TarmSolicitud solicitud; - private TarmSolicitudTramite solicitudTramite; - private TarmTramite tramite; - private TcustPersonAddress direccionCliente; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private TgeneCatalogDetail estadotramite; - private TgeneCatalogDetail usoActividad; - private TcustPersonDetail personaDetalle; - private TgeneCatalogDetail identificacion; - private TgeneCatalogDetail detallecatalogoTipoTramite; - private TgeneCatalogDetail detallecatalogo; - private TgeneParameters fichasFaltantesParametro; - - private Integer cPruebaInicio; - private Integer cPruebaFin; - - /** - * Controlador que maneja los datos de generacion ultima vez del reporte - */ - @ManagedProperty(value = "#{parametersController}") - private ParametersController parametersController; - - - public FichasTecnicasFlatantesController() throws Exception { - super(TarmArmaPruebas.class); - } - - @PostConstruct - private void postconstruct() { - try { - init(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - - } - } - - - private void init() { - recperpage = 13000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record=new TarmArmaPruebas(); - beanalias = "INGRESOFICHASFALTANTES"; - fichasFaltantesParametro =ParametersController.find("FICHASFALTANTES", "1"); - cPruebaInicio = fichasFaltantesParametro.getNumbervalue().intValue(); - cPruebaFin = 13187; - } - - - @Override - public void create() throws Exception { - super.create(); - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void uploadImpronta(FileUploadEvent event) { - record.modifiedData().put("FileUploadImpronta", event.getFile()); - } - - public void uploadFoto(FileUploadEvent event) { - record.modifiedData().put("FileUploadFoto", event.getFile()); - } - - public void generarReportesFaltantes(){ - try{ - for(int i=cPruebaInicio;i<=cPruebaFin;i++){ - this.record = IngresoFichaTecnicaArmasController.findByPk(String.valueOf(i)); - - // Comentar numeroArmasEnSolicitud(xxx) para volver a generar cualquier ficha de solicitud con una unica arma.. - // Validamos solo para solicitudes que tienen path y cuya solicitud tiene mas de una arma - if(this.record!=null && numeroArmasEnSolicitud(record.getCsolicitud())>1 && (this.record.getXpathfichatecarmas()!=null || this.record.getXpathfotografia()!=null || this.record.getXpathimpronta()!=null)){ - System.out.println("*****GENERACION DE FICHA TECNICA: "+i+" *****"); - this.solicitud = SolicitudArmasController.findByCSolicitud(this.record.getCsolicitud()); - this.codigoSolicitud = solicitud.getPk(); - this.solicitudTramite=SolicitudTramiteController.findByCSolicitud(codigoSolicitud); - this.tramite=TarmTramiteController.find(solicitud.getCtramite()+""); - this.personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - direccionCliente=PersonAddressController.find(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - this.obtenerCentroControl(); - this.obtenerResponsableCentroControl(); - reporteFichaArmas(i); - } - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo para extrer solo el nombre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpath(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpathDesdeFotografia(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:fotografia/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - private String obtenerXpathDesdeImpronta(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:impronta/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - private Date obtenerFechaEmision(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:SOL-"); - rutaXpath = xpath.substring(0, indice); - rutaXpath=rutaXpath.replace("cm:Solicitudes/cm:A-", "").replace("/cm:M", "").replace("/cm:D", ""); - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.YEAR, Integer.valueOf(rutaXpath.substring(0, 4))); - cal.set(Calendar.MONTH, Integer.valueOf(rutaXpath.substring(5, 7))); - cal.set(Calendar.DAY_OF_MONTH, Integer.valueOf(rutaXpath.substring(8, 10))); - return cal.getTime(); - } - - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void habilitarBoton() { - this.habilitaButtom = true; - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void cerrar() { - if(record.modifiedData().get("GUARDA")!=null && record.modifiedData().get("GUARDA").equals("S") && - record.modifiedData().get("IMPRIME")!=null && record.modifiedData().get("IMPRIME").equals("S") ){ - }else{ - MessageHelper.setMessageError("GUARDE Y GENERE EL REPORTE"); - } - } - - - /** - * Ejecuta reporte de registro balistico - * - */ - public void reporteRegistroBalistico() { - try { - String gradoUsuario =""; - String path = "armas/reports/registroBalistico"; - String filename=MsgControlArmas.getProperty("lbl_registroBalistico"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - //Logos - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Obteniendo la solicitud - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - - //Codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - - //Fecha de solicitud - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - - //Obteniendo los datos del tramite - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - TgeneCatalogDetail tipoTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail categoria=CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TarmSolicitudTramite solicitudTramite=SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - TgeneCatalogDetail tipoAutorizacion=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail usoActividad=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - - //Tipo de tramite - if(tipoTramite!=null && tipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", tipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - - //Categoria - if(categoria!=null && categoria.getDescription()!=null){ - parameters.put("categoria", categoria.getDescription()); - }else{ - parameters.put("categoria", " "); - } - - //No tramite - if(solicitudTramite!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de autorizacion - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription()!=null){ - parameters.put("tipoAutorizacion", tipoAutorizacion.getDescription()); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Uso-actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad", usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - TcustPersonDetail person = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //Fecha - parameters.put("fechaActual", sdf.format(this.fec_actual)); - parameters.put("fecActualHora", new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss").format(this.fec_actual)); - parameters.put("personCode", person.getPk().getPersoncode()); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - String format = this.formato; - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - btnFlujo=Boolean.TRUE; - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - -// public void saveImprimir() { -// try { -//// if(!record.modifiedData().get("GUARDA").equals("S")){ -//// MessageHelper.setMessageError("GUARDE LA FICHA PARA GENERAR EL REPORTE"); -//// return; -//// } -// reporteFichaArmas(); -// record.setIsimpreso("Y"); -// update(); -// Request request = callerhelper.getRequest(); -// HashMap msave = new HashMap(); -// request.setSaveTables(msave); -// DtoSave dtosave = super.getDtoSave(); -// dtosave.setReturnpk(true); -// msave.put(beanalias, dtosave); -// request.setSaveTables(msave); -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// this.postCommit(resp); -// MessageHelper.setMessageInfo(resp); -// record.modifiedData().put("IMPRIME", "S"); -// MessageHelper.setMessageInfo(resp); -// } else { -// record.modifiedData().put("IMPRIME", "N"); -// MessageHelper.setMessageError(resp); -// } -// } catch (Throwable e) { -// record.modifiedData().put("IMPRIME", "N"); -// MessageHelper.setMessageError(e); -// } -// } - /** - * Obtiene el reporte de Ficha de Armas - * @throws Exception - */ - public void reporteFichaArmas(int i) throws Exception { - String gradoUsuario =""; - String path = "armas/reports/fichaTecArmas"; - TgeneParameters parametro=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametro!=null && parametro.getTextvalue()!=null && !parametro.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametro.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - path = "armas/reports/fichaTecArmasNoLetales"; - } - } - } - parametro=ParametersController.find("CODIGO.FICHACOLECCION", "1"); - if(parametro!=null && parametro.getTextvalue()!=null && !parametro.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametro.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - path = "armas/reports/fichaTecArmasColeccion"; - } - } - } - String filename=MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - //Fecha de solicitud - if(solicitud!=null && solicitud.getFregistro()!=null){ - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - //No tramite - if(solicitudTramite!=null && solicitudTramite.getNumerotramite()!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramites - if(detallecatalogoTipoTramite!=null && detallecatalogoTipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", detallecatalogoTipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - //Estado tramite - if(estadotramite!=null && estadotramite.getDescription()!=null){ - parameters.put("estadoTramite", estadotramite.getDescription()); - }else{ - parameters.put("estadoTramite", " "); - } - - //Uso actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad",usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - //Tipo de documento - if(identificacion!=null){ - parameters.put("tipoDocumento", identificacion.getDescription()); - }else{ - parameters.put("tipoDocumento", " "); - } - //No documento - if(personaDetalle!=null){ - parameters.put("cedula", personaDetalle.getIdentification()); - }else{ - parameters.put("cedula", " "); - } - //Nombre razon social - if(personaDetalle!=null){ - parameters.put("nombreRazon", personaDetalle.getName()); - }else{ - parameters.put("nombreRazon", " "); - } - //Provincia - if(provincia !=null){ - parameters.put("provincia", provincia); - }else{ - parameters.put("provincia", " "); - } - //Canton - if(canton!=null){ - parameters.put("canton", canton); - }else{ - parameters.put("canton", " "); - } - //Ciudad - if(ciudad!=null){ - parameters.put("ciudad", ciudad); - }else{ - parameters.put("ciudad", " "); - } - //Direccion - if(direccion!=null){ - parameters.put("direccion",direccion); - }else{ - parameters.put("direccion", " "); - } - //Codigo de arma - parameters.put("codigoArma", this.record.getCarma()); - //Codigo de registro de TarmArmaPrueba - parameters.put("cArmaPrueba", record.getPk().toString()); - TarmArmas arma= ArmasController.findPorCodigo(this.record.getCarma()); - TarmRegistroArmas regArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - TgeneCountry paisOrigen=CountryController.findcountry(regArma.getPaisorigen()); - //Clase - if(arma.getModifiedData().get("clase")!=null){ - parameters.put("clase", arma.getModifiedData().get("clase")==null?"":arma.getModifiedData().get("clase")); - }else{ - parameters.put("clase", " "); - } - //Obtniendo el tipo arma explosivo - TarmTipoArmaExplosivo tae=arma==null?null:TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - //Tipo arma - TgeneCatalogDetail tipoArma=tae==null?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getTipoarmaexplosivo(), "TIPOARMAEXPLOSIVO"); - parameters.put("tipoArma", (tipoArma==null || tipoArma.getDescription().isEmpty())?"": tipoArma.getDescription()); - //Serie - parameters.put("serie", (arma==null || arma.getLote()==null || arma.getLote().isEmpty())?"":arma.getLote()); - //Pais fabricacion - parameters.put("paisFabricacion", (paisOrigen==null)?"":(paisOrigen.getDescription())); - //Calibre - parameters.put("calibre", (arma.getModifiedData().get("calibre")==null)?"":arma.getModifiedData().get("calibre")); - //Longitud - TgeneCatalogDetail longitud=(tae==null || tae.getLongitud()==null || tae.getLongitudcodigo()==null || tae.getLongitud().isEmpty() || tae.getLongitudcodigo().isEmpty())?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getLongitud(),tae.getLongitudcodigo()); - if(longitud!=null && longitud.getDescription()!=null){ - parameters.put("longitud", longitud.getDescription()); - }else{ - parameters.put("longitud", " "); - } - //Marca - parameters.put("marca", arma.getModifiedData().get("marca")); - //Modelo - parameters.put("modelo", arma.getModelo()); - //Color - parameters.put("color", arma.getModifiedData().get("color")); - //Observacion - parameters.put("observacion", this.record.getObservacion()); - //Aptitud de disparo - String aptitudDisparo=" "; - if(this.record.getAptituddisparo()!=null){ - if(this.record.getAptituddisparo().equalsIgnoreCase("Y")){ - aptitudDisparo="BUENO"; - }else{ - aptitudDisparo="MALO"; - } - }else{ - aptitudDisparo=""; - } - - parameters.put("aptitudDisparo", aptitudDisparo); - - //Balas testigo - String balasTestigo=" "; - if(this.record.getBalastestigo()!=null){ - if(this.record.getBalastestigo().equalsIgnoreCase("Y")){ - balasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else{ - balasTestigo="NO"; - } - }else{ - balasTestigo=""; - } - parameters.put("balasTestigo", balasTestigo); - - //Vainas testigo - String vainasTestigo=" "; - if(this.record.getVainastestigo()!=null){ - if(this.record.getVainastestigo().equalsIgnoreCase("Y")){ - vainasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else{ - vainasTestigo="NO"; - } - }else{ - vainasTestigo=""; - } - parameters.put("vainasTestigo", vainasTestigo); - - //Estado final - String estadoFinal=" "; - if(this.record.getApruebaevaluacion()!=null){ - if(this.record.getApruebaevaluacion().equalsIgnoreCase("Y")){ - estadoFinal="APROBADA"; - }else{ - estadoFinal="REPROBADA"; - } - }else{ - estadoFinal=""; - } - parameters.put("estadoFinal", estadoFinal); - //Codigo de persona - parameters.put("personcode",record.getPersoncode()); - //Codigo de arma - parameters.put("codArma", record.getCarma()); - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("personcode",responsableCentroControl.getPk().getPersoncode()); - parameters.put("gradoUsuario", gradoUsuario); - String format = "pdf"; - -// String nombreArchivo = soloNombreArchivo(armaPruebasObj.getXpathfichatecarmas()); -// String pathArchivo = obtenerXpath(armaPruegetxbasObj.getXpathfichatecarmas()); - if(this.record.getXpathfichatecarmas()!=null){ - this.xpathflujo = obtenerXpath(this.record.getXpathfichatecarmas()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathfichatecarmas()); - }else if(this.record.getXpathfotografia()!=null){ - this.xpathflujo = obtenerXpathDesdeFotografia(this.record.getXpathfotografia()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathfotografia()); - }else if(this.record.getXpathimpronta()!=null){ - this.xpathflujo = obtenerXpathDesdeImpronta(this.record.getXpathimpronta()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathimpronta()); - } - if(xpathflujo!=null){ - parameters.put("fechaActual", sdf.format(this.fec_actual)); - filename = filename + this.record.getPk().toString(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - if(!this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo)){ - throw new Exception("ERROR AL CARGAR EL REPORTE"); - } - this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - update(); - save(); - fichasFaltantesParametro.setNumbervalue(new BigDecimal(i)); - parametersController.update(fichasFaltantesParametro); - parametersController.save(); - } - } - - - -// /** -// * Metodo para encontrar por codigo de solicitud -// * @param codigoSolicitud -// * @return registro de armaPrueba encontrado -// */ -// public List findPorSolicitud(String codigoSolicitud){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - -// /** -// * Metodo para encontrar por codigo de solicitud -// * @param codigoSolicitud -// * @return registro de armaPrueba encontrado -// */ -// public static List buscarFichasPorSolicitud(String codigoSolicitud){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - -// public TarmArmaPruebas find(String codigoSolicitud, String carma){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("carma", carma); -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null && cc.lrecord.size()>0) { -// return cc.lrecord.get(0); -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } -// - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public TarmArmas getArma() { - return arma; - } - - public void setArma(TarmArmas arma) { - this.arma = arma; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - public List getListadoArmasPruebas() { - return listadoArmasPruebas; - } - - public void setListadoArmasPruebas(List listadoArmasPruebas) { - this.listadoArmasPruebas = listadoArmasPruebas; - } - - -// /** -// * metodo que registra el cambio de la seleccion del recuperador balisitico y segun esto aprueba la evaluacion -// */ -// public void cambia(TarmArmaPruebas armaPruebas){ -// record=null; -// record=armaPruebas; -// if("Y".equals(record.getAptituddisparo()) && "Y".equals(record.getVainastestigo()) && "Y".equals(record.getBalastestigo())){ -// record.setApruebaevaluacion("Y"); -// } -// else{ -// record.setApruebaevaluacion("N"); -// } -// habilitaButtom = true; -// armaPruebas.modifiedData().put("GUARDA", "N"); -// armaPruebas.modifiedData().put("IMPRIME", "N"); -// record.modifiedData().put("GUARDA", "N"); -// record.modifiedData().put("IMPRIME", "N"); -// } -// - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public boolean isHabilitaButtom() { - return habilitaButtom; - } - - public void setHabilitaButtom(boolean habilitaButtom) { - this.habilitaButtom = habilitaButtom; - } - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public boolean isDeshabilitadoGenerarReporte() { - return deshabilitadoGenerarReporte; - } - - public void setDeshabilitadoGenerarReporte(boolean deshabilitadoGenerarReporte) { - this.deshabilitadoGenerarReporte = deshabilitadoGenerarReporte; - } - - - public void changeApruebaEvaluacion(){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getBalastestigo()!=null && "Y".equalsIgnoreCase(this.record.getBalastestigo())) && - (this.record.getVainastestigo()!=null && "Y".equalsIgnoreCase(this.record.getVainastestigo()))){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public Integer numeroArmasEnSolicitud(String codigoSolicitud){ - try { - FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.size(); - } - return 0; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return 0; - } - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public TcustPersonAddress getDireccionCliente() { - return direccionCliente; - } - - public void setDireccionCliente(TcustPersonAddress direccionCliente) { - this.direccionCliente = direccionCliente; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - public List getTarmArmaPruebasList() { - return tarmArmaPruebasList; - } - - public void setTarmArmaPruebasList(List tarmArmaPruebasList) { - this.tarmArmaPruebasList = tarmArmaPruebasList; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public Integer getcPruebaInicio() { - return cPruebaInicio; - } - - public void setcPruebaInicio(Integer cPruebaInicio) { - this.cPruebaInicio = cPruebaInicio; - } - - public Integer getcPruebaFin() { - return cPruebaFin; - } - - public void setcPruebaFin(Integer cPruebaFin) { - this.cPruebaFin = cPruebaFin; - } - - public TgeneParameters getFichasFaltantesParametro() { - return fichasFaltantesParametro; - } - - public void setFichasFaltantesParametro(TgeneParameters fichasFaltantesParametro) { - this.fichasFaltantesParametro = fichasFaltantesParametro; - } - - public ParametersController getParametersController() { - return parametersController; - } - - public void setParametersController(ParametersController parametersController) { - this.parametersController = parametersController; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.svn-base deleted file mode 100644 index 83a6f5a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/FichasTecnicasFlatantesController.java.svn-base +++ /dev/null @@ -1,1201 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CashManagementHistoryController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * - * Genrera fichas tecnicas de armas faltantes - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class FichasTecnicasFlatantesController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 8843091476010012919L; - - /** - * Controlador que maneja alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - private TarmArmas arma = new TarmArmas(); - - private String editarReg; - - private String codigoSolicitud; - - private boolean habilitaButtom; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - private List listadoArmasPruebas = new ArrayList<>(); - - private String observacion; - - private String estado; - - private Date fec_actual; - - private String formato; - - private String xpathflujo; - - private TcustPersonDetail responsableCentroControl= null; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - private Boolean btnFlujo; - - private List tarmArmaPruebasList; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private boolean deshabilitadoGenerarReporte=true; - - private TarmSolicitud solicitud; - private TarmSolicitudTramite solicitudTramite; - private TarmTramite tramite; - private TcustPersonAddress direccionCliente; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private TgeneCatalogDetail estadotramite; - private TgeneCatalogDetail usoActividad; - private TcustPersonDetail personaDetalle; - private TgeneCatalogDetail identificacion; - private TgeneCatalogDetail detallecatalogoTipoTramite; - private TgeneCatalogDetail detallecatalogo; - private TgeneParameters fichasFaltantesParametro; - - private Integer cPruebaInicio; - private Integer cPruebaFin; - - /** - * Controlador que maneja los datos de generacion ultima vez del reporte - */ - @ManagedProperty(value = "#{parametersController}") - private ParametersController parametersController; - - - public FichasTecnicasFlatantesController() throws Exception { - super(TarmArmaPruebas.class); - } - - @PostConstruct - private void postconstruct() { - try { - init(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - - } - } - - - private void init() { - recperpage = 13000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record=new TarmArmaPruebas(); - beanalias = "INGRESOFICHASFALTANTES"; - fichasFaltantesParametro =ParametersController.find("FICHASFALTANTES", "1"); - cPruebaInicio = fichasFaltantesParametro.getNumbervalue().intValue(); - cPruebaFin = 13187; - } - - - @Override - public void create() throws Exception { - super.create(); - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void uploadImpronta(FileUploadEvent event) { - record.modifiedData().put("FileUploadImpronta", event.getFile()); - } - - public void uploadFoto(FileUploadEvent event) { - record.modifiedData().put("FileUploadFoto", event.getFile()); - } - - public void generarReportesFaltantes(){ - try{ - for(int i=cPruebaInicio;i<=cPruebaFin;i++){ - this.record = IngresoFichaTecnicaArmasController.findByPk(String.valueOf(i)); - - // Comentar numeroArmasEnSolicitud(xxx) para volver a generar cualquier ficha de solicitud con una unica arma.. - // Validamos solo para solicitudes que tienen path y cuya solicitud tiene mas de una arma - if(this.record!=null && numeroArmasEnSolicitud(record.getCsolicitud())>1 && (this.record.getXpathfichatecarmas()!=null || this.record.getXpathfotografia()!=null || this.record.getXpathimpronta()!=null)){ - System.out.println("*****GENERACION DE FICHA TECNICA: "+i+" *****"); - this.solicitud = SolicitudArmasController.findByCSolicitud(this.record.getCsolicitud()); - this.codigoSolicitud = solicitud.getPk(); - this.solicitudTramite=SolicitudTramiteController.findByCSolicitud(codigoSolicitud); - this.tramite=TarmTramiteController.find(solicitud.getCtramite()+""); - this.personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - direccionCliente=PersonAddressController.find(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - this.obtenerCentroControl(); - this.obtenerResponsableCentroControl(); - reporteFichaArmas(i); - } - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo para extrer solo el nombre del archivo - * @param xpath xpath del archivo en alfresco - * @return solo la parte correspondiente al nombre del archivo - */ - public String soloNombreArchivo(String xpath){ - return xpath.substring(xpath.lastIndexOf(":") + 1,xpath.length()); - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpath(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpathDesdeFotografia(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:fotografia/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - private String obtenerXpathDesdeImpronta(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:impronta/cm:"); - rutaXpath = xpath.substring(0, indice); - return rutaXpath; - } - - private Date obtenerFechaEmision(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:SOL-"); - rutaXpath = xpath.substring(0, indice); - rutaXpath=rutaXpath.replace("cm:Solicitudes/cm:A-", "").replace("/cm:M", "").replace("/cm:D", ""); - Calendar cal = Calendar.getInstance(); - cal.set(Calendar.YEAR, Integer.valueOf(rutaXpath.substring(0, 4))); - cal.set(Calendar.MONTH, Integer.valueOf(rutaXpath.substring(5, 7))); - cal.set(Calendar.DAY_OF_MONTH, Integer.valueOf(rutaXpath.substring(8, 10))); - return cal.getTime(); - } - - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void habilitarBoton() { - this.habilitaButtom = true; - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void cerrar() { - if(record.modifiedData().get("GUARDA")!=null && record.modifiedData().get("GUARDA").equals("S") && - record.modifiedData().get("IMPRIME")!=null && record.modifiedData().get("IMPRIME").equals("S") ){ - }else{ - MessageHelper.setMessageError("GUARDE Y GENERE EL REPORTE"); - } - } - - - /** - * Ejecuta reporte de registro balistico - * - */ - public void reporteRegistroBalistico() { - try { - String gradoUsuario =""; - String path = "armas/reports/registroBalistico"; - String filename=MsgControlArmas.getProperty("lbl_registroBalistico"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - //Logos - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Obteniendo la solicitud - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - - //Codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - - //Fecha de solicitud - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - - //Obteniendo los datos del tramite - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - TgeneCatalogDetail tipoTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail categoria=CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TarmSolicitudTramite solicitudTramite=SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - TgeneCatalogDetail tipoAutorizacion=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail usoActividad=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - - //Tipo de tramite - if(tipoTramite!=null && tipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", tipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - - //Categoria - if(categoria!=null && categoria.getDescription()!=null){ - parameters.put("categoria", categoria.getDescription()); - }else{ - parameters.put("categoria", " "); - } - - //No tramite - if(solicitudTramite!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de autorizacion - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription()!=null){ - parameters.put("tipoAutorizacion", tipoAutorizacion.getDescription()); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Uso-actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad", usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - TcustPersonDetail person = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //Fecha - parameters.put("fechaActual", sdf.format(this.fec_actual)); - parameters.put("fecActualHora", new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss").format(this.fec_actual)); - parameters.put("personCode", person.getPk().getPersoncode()); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - String format = this.formato; - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - btnFlujo=Boolean.TRUE; - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - -// public void saveImprimir() { -// try { -//// if(!record.modifiedData().get("GUARDA").equals("S")){ -//// MessageHelper.setMessageError("GUARDE LA FICHA PARA GENERAR EL REPORTE"); -//// return; -//// } -// reporteFichaArmas(); -// record.setIsimpreso("Y"); -// update(); -// Request request = callerhelper.getRequest(); -// HashMap msave = new HashMap(); -// request.setSaveTables(msave); -// DtoSave dtosave = super.getDtoSave(); -// dtosave.setReturnpk(true); -// msave.put(beanalias, dtosave); -// request.setSaveTables(msave); -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// this.postCommit(resp); -// MessageHelper.setMessageInfo(resp); -// record.modifiedData().put("IMPRIME", "S"); -// MessageHelper.setMessageInfo(resp); -// } else { -// record.modifiedData().put("IMPRIME", "N"); -// MessageHelper.setMessageError(resp); -// } -// } catch (Throwable e) { -// record.modifiedData().put("IMPRIME", "N"); -// MessageHelper.setMessageError(e); -// } -// } - /** - * Obtiene el reporte de Ficha de Armas - * @throws Exception - */ - public void reporteFichaArmas(int i) throws Exception { - String gradoUsuario =""; - String path = "armas/reports/fichaTecArmas"; - TgeneParameters parametro=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametro!=null && parametro.getTextvalue()!=null && !parametro.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametro.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - path = "armas/reports/fichaTecArmasNoLetales"; - } - } - } - parametro=ParametersController.find("CODIGO.FICHACOLECCION", "1"); - if(parametro!=null && parametro.getTextvalue()!=null && !parametro.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametro.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - path = "armas/reports/fichaTecArmasColeccion"; - } - } - } - String filename=MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - //Fecha de solicitud - if(solicitud!=null && solicitud.getFregistro()!=null){ - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - //No tramite - if(solicitudTramite!=null && solicitudTramite.getNumerotramite()!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramites - if(detallecatalogoTipoTramite!=null && detallecatalogoTipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", detallecatalogoTipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - //Estado tramite - if(estadotramite!=null && estadotramite.getDescription()!=null){ - parameters.put("estadoTramite", estadotramite.getDescription()); - }else{ - parameters.put("estadoTramite", " "); - } - - //Uso actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad",usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - //Tipo de documento - if(identificacion!=null){ - parameters.put("tipoDocumento", identificacion.getDescription()); - }else{ - parameters.put("tipoDocumento", " "); - } - //No documento - if(personaDetalle!=null){ - parameters.put("cedula", personaDetalle.getIdentification()); - }else{ - parameters.put("cedula", " "); - } - //Nombre razon social - if(personaDetalle!=null){ - parameters.put("nombreRazon", personaDetalle.getName()); - }else{ - parameters.put("nombreRazon", " "); - } - //Provincia - if(provincia !=null){ - parameters.put("provincia", provincia); - }else{ - parameters.put("provincia", " "); - } - //Canton - if(canton!=null){ - parameters.put("canton", canton); - }else{ - parameters.put("canton", " "); - } - //Ciudad - if(ciudad!=null){ - parameters.put("ciudad", ciudad); - }else{ - parameters.put("ciudad", " "); - } - //Direccion - if(direccion!=null){ - parameters.put("direccion",direccion); - }else{ - parameters.put("direccion", " "); - } - //Codigo de arma - parameters.put("codigoArma", this.record.getCarma()); - //Codigo de registro de TarmArmaPrueba - parameters.put("cArmaPrueba", record.getPk().toString()); - TarmArmas arma= ArmasController.findPorCodigo(this.record.getCarma()); - TarmRegistroArmas regArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - TgeneCountry paisOrigen=CountryController.findcountry(regArma.getPaisorigen()); - //Clase - if(arma.getModifiedData().get("clase")!=null){ - parameters.put("clase", arma.getModifiedData().get("clase")==null?"":arma.getModifiedData().get("clase")); - }else{ - parameters.put("clase", " "); - } - //Obtniendo el tipo arma explosivo - TarmTipoArmaExplosivo tae=arma==null?null:TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - //Tipo arma - TgeneCatalogDetail tipoArma=tae==null?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getTipoarmaexplosivo(), "TIPOARMAEXPLOSIVO"); - parameters.put("tipoArma", (tipoArma==null || tipoArma.getDescription().isEmpty())?"": tipoArma.getDescription()); - //Serie - parameters.put("serie", (arma==null || arma.getLote()==null || arma.getLote().isEmpty())?"":arma.getLote()); - //Pais fabricacion - parameters.put("paisFabricacion", (paisOrigen==null)?"":(paisOrigen.getDescription())); - //Calibre - parameters.put("calibre", (arma.getModifiedData().get("calibre")==null)?"":arma.getModifiedData().get("calibre")); - //Longitud - TgeneCatalogDetail longitud=(tae==null || tae.getLongitud()==null || tae.getLongitudcodigo()==null || tae.getLongitud().isEmpty() || tae.getLongitudcodigo().isEmpty())?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getLongitud(),tae.getLongitudcodigo()); - if(longitud!=null && longitud.getDescription()!=null){ - parameters.put("longitud", longitud.getDescription()); - }else{ - parameters.put("longitud", " "); - } - //Marca - parameters.put("marca", arma.getModifiedData().get("marca")); - //Modelo - parameters.put("modelo", arma.getModelo()); - //Color - parameters.put("color", arma.getModifiedData().get("color")); - //Observacion - parameters.put("observacion", this.record.getObservacion()); - //Aptitud de disparo - String aptitudDisparo=" "; - if(this.record.getAptituddisparo()!=null){ - if(this.record.getAptituddisparo().equalsIgnoreCase("Y")){ - aptitudDisparo="BUENO"; - }else{ - aptitudDisparo="MALO"; - } - }else{ - aptitudDisparo=""; - } - - parameters.put("aptitudDisparo", aptitudDisparo); - - //Balas testigo - String balasTestigo=" "; - if(this.record.getBalastestigo()!=null){ - if(this.record.getBalastestigo().equalsIgnoreCase("Y")){ - balasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else{ - balasTestigo="NO"; - } - }else{ - balasTestigo=""; - } - parameters.put("balasTestigo", balasTestigo); - - //Vainas testigo - String vainasTestigo=" "; - if(this.record.getVainastestigo()!=null){ - if(this.record.getVainastestigo().equalsIgnoreCase("Y")){ - vainasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else{ - vainasTestigo="NO"; - } - }else{ - vainasTestigo=""; - } - parameters.put("vainasTestigo", vainasTestigo); - - //Estado final - String estadoFinal=" "; - if(this.record.getApruebaevaluacion()!=null){ - if(this.record.getApruebaevaluacion().equalsIgnoreCase("Y")){ - estadoFinal="APROBADA"; - }else{ - estadoFinal="REPROBADA"; - } - }else{ - estadoFinal=""; - } - parameters.put("estadoFinal", estadoFinal); - //Codigo de persona - parameters.put("personcode",record.getPersoncode()); - //Codigo de arma - parameters.put("codArma", record.getCarma()); - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("personcode",responsableCentroControl.getPk().getPersoncode()); - parameters.put("gradoUsuario", gradoUsuario); - String format = "pdf"; - -// String nombreArchivo = soloNombreArchivo(armaPruebasObj.getXpathfichatecarmas()); -// String pathArchivo = obtenerXpath(armaPruegetxbasObj.getXpathfichatecarmas()); - if(this.record.getXpathfichatecarmas()!=null){ - this.xpathflujo = obtenerXpath(this.record.getXpathfichatecarmas()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathfichatecarmas()); - }else if(this.record.getXpathfotografia()!=null){ - this.xpathflujo = obtenerXpathDesdeFotografia(this.record.getXpathfotografia()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathfotografia()); - }else if(this.record.getXpathimpronta()!=null){ - this.xpathflujo = obtenerXpathDesdeImpronta(this.record.getXpathimpronta()); - this.fec_actual = obtenerFechaEmision(this.record.getXpathimpronta()); - } - if(xpathflujo!=null){ - parameters.put("fechaActual", sdf.format(this.fec_actual)); - filename = filename + this.record.getPk().toString(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - if(!this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo)){ - throw new Exception("ERROR AL CARGAR EL REPORTE"); - } - this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - update(); - save(); - fichasFaltantesParametro.setNumbervalue(new BigDecimal(i)); - parametersController.update(fichasFaltantesParametro); - parametersController.save(); - } - } - - - -// /** -// * Metodo para encontrar por codigo de solicitud -// * @param codigoSolicitud -// * @return registro de armaPrueba encontrado -// */ -// public List findPorSolicitud(String codigoSolicitud){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - -// /** -// * Metodo para encontrar por codigo de solicitud -// * @param codigoSolicitud -// * @return registro de armaPrueba encontrado -// */ -// public static List buscarFichasPorSolicitud(String codigoSolicitud){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - -// public TarmArmaPruebas find(String codigoSolicitud, String carma){ -// try { -// FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); -// cc.init(); -// cc.recperpage = 300; -// cc.addFilter("carma", carma); -// cc.addFilter("csolicitud", codigoSolicitud); -// cc.querydatabaseArma(); -// if (cc.lrecord != null && cc.lrecord.size()>0) { -// return cc.lrecord.get(0); -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } -// - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public TarmArmas getArma() { - return arma; - } - - public void setArma(TarmArmas arma) { - this.arma = arma; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - public List getListadoArmasPruebas() { - return listadoArmasPruebas; - } - - public void setListadoArmasPruebas(List listadoArmasPruebas) { - this.listadoArmasPruebas = listadoArmasPruebas; - } - - -// /** -// * metodo que registra el cambio de la seleccion del recuperador balisitico y segun esto aprueba la evaluacion -// */ -// public void cambia(TarmArmaPruebas armaPruebas){ -// record=null; -// record=armaPruebas; -// if("Y".equals(record.getAptituddisparo()) && "Y".equals(record.getVainastestigo()) && "Y".equals(record.getBalastestigo())){ -// record.setApruebaevaluacion("Y"); -// } -// else{ -// record.setApruebaevaluacion("N"); -// } -// habilitaButtom = true; -// armaPruebas.modifiedData().put("GUARDA", "N"); -// armaPruebas.modifiedData().put("IMPRIME", "N"); -// record.modifiedData().put("GUARDA", "N"); -// record.modifiedData().put("IMPRIME", "N"); -// } -// - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public boolean isHabilitaButtom() { - return habilitaButtom; - } - - public void setHabilitaButtom(boolean habilitaButtom) { - this.habilitaButtom = habilitaButtom; - } - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public boolean isDeshabilitadoGenerarReporte() { - return deshabilitadoGenerarReporte; - } - - public void setDeshabilitadoGenerarReporte(boolean deshabilitadoGenerarReporte) { - this.deshabilitadoGenerarReporte = deshabilitadoGenerarReporte; - } - - - public void changeApruebaEvaluacion(){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getBalastestigo()!=null && "Y".equalsIgnoreCase(this.record.getBalastestigo())) && - (this.record.getVainastestigo()!=null && "Y".equalsIgnoreCase(this.record.getVainastestigo()))){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public Integer numeroArmasEnSolicitud(String codigoSolicitud){ - try { - FichasTecnicasFlatantesController cc = new FichasTecnicasFlatantesController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.size(); - } - return 0; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return 0; - } - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public TcustPersonAddress getDireccionCliente() { - return direccionCliente; - } - - public void setDireccionCliente(TcustPersonAddress direccionCliente) { - this.direccionCliente = direccionCliente; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - public List getTarmArmaPruebasList() { - return tarmArmaPruebasList; - } - - public void setTarmArmaPruebasList(List tarmArmaPruebasList) { - this.tarmArmaPruebasList = tarmArmaPruebasList; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public Integer getcPruebaInicio() { - return cPruebaInicio; - } - - public void setcPruebaInicio(Integer cPruebaInicio) { - this.cPruebaInicio = cPruebaInicio; - } - - public Integer getcPruebaFin() { - return cPruebaFin; - } - - public void setcPruebaFin(Integer cPruebaFin) { - this.cPruebaFin = cPruebaFin; - } - - public TgeneParameters getFichasFaltantesParametro() { - return fichasFaltantesParametro; - } - - public void setFichasFaltantesParametro(TgeneParameters fichasFaltantesParametro) { - this.fichasFaltantesParametro = fichasFaltantesParametro; - } - - public ParametersController getParametersController() { - return parametersController; - } - - public void setParametersController(ParametersController parametersController) { - this.parametersController = parametersController; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/GenerarOrdenTrabajoCustodiosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/GenerarOrdenTrabajoCustodiosController.java.svn-base deleted file mode 100644 index a15318c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/GenerarOrdenTrabajoCustodiosController.java.svn-base +++ /dev/null @@ -1,699 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.apache.taglibs.standard.tag.common.fmt.BundleSupport; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.commondb.PersistenceHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajo; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajoCustodios; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class GenerarOrdenTrabajoCustodiosController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private Date fechaHoy; - private Date inicio; - private Date fin; - private java.sql.Date fechaInicio; - private java.sql.Date fechaFin; - - private TarmSolicitud solicitud=new TarmSolicitud(); - private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - private TarmTramite tramite=new TarmTramite(); - private String usoActividad; - private Long numeroOrden; - - private String documentoReferencia; - private String empresa; - private String lugarDireccion; - private String ruta; - private String tiempoEstimado; - private String observaciones; - - private Boolean aceptarHabilitado=true; - - TcustPersonDetail detallesPersona=new TcustPersonDetail(); - - //Grados - List lGrados=new ArrayList(); - - TcustPersonDetail usuario; - TcustPersonDetail jefeCentroControl; - TarmCentroControl centroControl; - String nombreInstitucion=""; - String gradoFuncionario=""; - private String csolicitud; - private Boolean btnEnviar; - - @ManagedProperty(value = "#{ordenTrabajoController}") - private OrdenTrabajoController ordenTrabajoController; - - @ManagedProperty(value = "#{custodiosController}") - private CustodiosController custodiosController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public GenerarOrdenTrabajoCustodiosController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - // Inicializa autoconsulta - // super.startQuery(); - } - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - csolicitud=super.getMfilters().get("csolicitud"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - fechaHoy=Calendar.getInstance().getTime(); - - this.ordenTrabajoController.create(); - this.custodiosController.create(); - this.lrecord = new ArrayList<>(); - this.beanalias="GENERARORDENCUSTODIOSCONTROLLER"; - //ordenTrabajoController.setRecord(new TarmOrdenTrabajo()); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - btnEnviar=Boolean.FALSE; - - querydatabase(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - //Obteniendo la solicitud - solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(csolicitud); - if(solicitud!=null && solicitud.getPk()!=null){ - - //Datos de la persona - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - - this.ordenTrabajoController.getRecord().setCsolicitud(solicitud.getPk()); - this.ordenTrabajoController.getRecord().setFsolicitud(solicitud.getFregistro()); - - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - - if(tramite!=null && tramite.getPk()!=null){ - this.ordenTrabajoController.getRecord().setCtramite(tramite.getPk()); - - //Uso actividad - TgeneCatalogDetail catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(catalogDetailTramite!=null && tramite.getUsoactividad()!=null && tramite.getUsoactividadcodigo()!=null){ - usoActividad=catalogDetailTramite.getDescription(); - } - - } - } - - //Obteniendo el centro de control - centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() - && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ - - TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - this.nombreInstitucion=catalogoInstitucion.getDescription(); - } - - //Obteniendo el jefe del centro de control - this.jefeCentroControl=PersonDetailController.find(this.centroControl.getPersoncode().toString()); - - //Obteniendo el grado del jefe del centro de control - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.jefeCentroControl.getMilitarygrade(), this.jefeCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - } - - //Obteniendo la lista de grados militares - lGrados=CatalogDetailController.find("GRADOS"); - - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("querytype", "T"); - - Response resp = callerhelper.executeQuery(request); - - //Obteniendo el numero de orden - this.numeroOrden=Long.parseLong(resp.get("SECUENCIALSOLORDENTRABAJO").toString()); - this.ordenTrabajoController.getRecord().setPk(numeroOrden); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - - MessageHelper.setMessageError(resp); - } else { - super.postQuery(lrecord); - - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if(custodiosController.getLrecord().isEmpty()){ - MessageHelper.setMessageError("LA ORDEN DE TRABAJO NO TIENE CUSTODIOS ASIGNADOS.", null); - }else{ - //Asignando los campos a la orden de trabajo - this.ordenTrabajoController.getRecord().setDocumentoreferencia(this.solicitudTramite.getNumerotramite()); - this.ordenTrabajoController.getRecord().setEmpresasolicita(this.detallesPersona.getName()); - this.ordenTrabajoController.getRecord().setDireccioncomision(this.lugarDireccion); - this.ordenTrabajoController.getRecord().setRuta(this.ruta); - this.ordenTrabajoController.getRecord().setTiempoestimado(this.tiempoEstimado); - - Calendar c=Calendar.getInstance(); - c.setTime(inicio); - fechaInicio=new java.sql.Date(c.getTimeInMillis()); - this.ordenTrabajoController.getRecord().setFinicio(this.fechaInicio); - - c=Calendar.getInstance(); - c.setTime(fin); - fechaFin=new java.sql.Date(c.getTimeInMillis()); - this.ordenTrabajoController.getRecord().setFfinalizacion(this.fechaFin); - - this.ordenTrabajoController.getRecord().setObservaciones(this.observaciones); - - this.ordenTrabajoController.update(); - this.ordenTrabajoController.getLrecord().add(this.ordenTrabajoController.getRecord()); - this.ordenTrabajoController.update(this.ordenTrabajoController.getLrecord().get(0)); - - this.custodiosController.setSalva(true); - for (TarmOrdenTrabajoCustodios custodio : this.custodiosController.getLrecord()) { - - //Asignando el codigo del grado - custodio.setCordentrabajo(this.numeroOrden); - this.custodiosController.update(custodio); - } - - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosaveOrdenTrabajo = this.ordenTrabajoController.getDtoSave(true); - dtosaveOrdenTrabajo.setPosition(1); - msave.put(this.ordenTrabajoController.getBeanalias(), dtosaveOrdenTrabajo); - - DtoSave dtosaveCustodios = this.custodiosController.getDtoSave(true); - dtosaveCustodios.setPosition(2); - msave.put(this.custodiosController.getBeanalias(), dtosaveCustodios); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.aceptarHabilitado=false; - this.ordenTrabajoController.postCommit(resp); - this.custodiosController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - this.ordenTrabajoController.postCommit(response); - this.custodiosController.postCommit(response); - } - - public void cancelar(){ - this.ordenTrabajoController.setRecord(new TarmOrdenTrabajo()); - this.custodiosController.getLrecord().clear(); - } - - /** - */ - @SuppressWarnings("finally") - public String grado(String grado, String gradoCodigo){ - String descripcionGrado=""; - try { - TgeneCatalogDetail catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(grado, gradoCodigo); - if(catalogDetailTramite!=null && grado!=null && gradoCodigo!=null){ - descripcionGrado=catalogDetailTramite.getDescription(); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - }finally{ - return descripcionGrado; - } - } - - /** - * Ejecuta un reporte de custodios - * @param name Nombre del reporte a generar. - */ - public void generateReport() { - String path = "armas/reports/ordenTrabajoCustodios"; - String filename=MsgControlArmas.getProperty("lbl_ordenTrabajoCustodios"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("codigoOrden", this.numeroOrden.toString()); - - //Centro de control - parameters.put("nombreCentro", this.nombreInstitucion); - - //Numero de orden de trabajo - parameters.put("numeroOrdenTrabajo", this.numeroOrden); - - //Documento de referencia - parameters.put("documentoReferencia", this.solicitudTramite.getNumerotramite()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(this.fechaHoy)); - - //Comision actividad - parameters.put("comisionActividad", "Custodia Militar"); - - //Empresa solicita - parameters.put("empresaSolicita", this.detallesPersona.getName()); - - //Tiempo estimado - parameters.put("tiempoEstimado", this.tiempoEstimado); - - //Fecha inicio - parameters.put("fechaInicio", sdf.format(this.inicio)); - - //Fecha fin - parameters.put("fechaFin", sdf.format(this.fin)); - - //Lugar - parameters.put("lugar", this.lugarDireccion); - - //Ruta - parameters.put("ruta", this.ruta); - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl.getName()); - parameters.put("personcode",this.jefeCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreInstitucion); - - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - parameters.put("codigoQR",csolicitud+" "+ fechaHora+" "+" "+sdf.format(this.fin)+" "+gradoFuncionario+this.jefeCentroControl.getName()); - - String format = "pdf"; - - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - btnEnviar=Boolean.TRUE; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public void probarReporte() { - try { - TarmOrdenTrabajo orden=ordenTrabajoController.find("128"); - - String path = "armas/reports/ordenTrabajoCustodios"; - String filename=MsgControlArmas.getProperty("lbl_ordenTrabajoCustodios"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("codigoOrden", "128"); - - //Centro de control - parameters.put("nombreCentro", this.nombreInstitucion); - - //Numero de orden de trabajo - parameters.put("numeroOrdenTrabajo", 128L); - - //Documento de referencia - parameters.put("documentoReferencia", this.solicitudTramite.getNumerotramite()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(this.fechaHoy)); - - //Comision actividad - parameters.put("comisionActividad", "Custodia Militar"); - - //Empresa solicita - parameters.put("empresaSolicita", this.detallesPersona.getName()); - - //Tiempo estimado - parameters.put("tiempoEstimado", orden.getTiempoestimado()); - - //Fecha inicio - parameters.put("fechaInicio", sdf.format(orden.getFinicio())); - - //Fecha fin - parameters.put("fechaFin", sdf.format(orden.getFfinalizacion())); - - //Lugar - parameters.put("lugar", orden.getDireccioncomision()); - - //Ruta - parameters.put("ruta", orden.getRuta()); - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl.getName()); - parameters.put("personcode",this.jefeCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreInstitucion); - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(!btnEnviar){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_avanzar_flujo")); - return; - } - - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnEnviar=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public OrdenTrabajoController getOrdenTrabajoController() { - return ordenTrabajoController; - } - - public void setOrdenTrabajoController( - OrdenTrabajoController ordenTrabajoController) { - this.ordenTrabajoController = ordenTrabajoController; - } - - public CustodiosController getCustodiosController() { - return custodiosController; - } - - public void setCustodiosController(CustodiosController custodiosController) { - this.custodiosController = custodiosController; - } - - public Date getFechaHoy() { - return fechaHoy; - } - - public void setFechaHoy(Date fechaHoy) { - this.fechaHoy = fechaHoy; - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(java.sql.Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(java.sql.Date fechaFin) { - this.fechaFin = fechaFin; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public String getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - - public List getlGrados() { - return lGrados; - } - - public void setlGrados(List lGrados) { - this.lGrados = lGrados; - } - - public Long getNumeroOrden() { - return numeroOrden; - } - - public void setNumeroOrden(Long numeroOrden) { - this.numeroOrden = numeroOrden; - } - - public String getDocumentoReferencia() { - return documentoReferencia; - } - - public void setDocumentoReferencia(String documentoReferencia) { - this.documentoReferencia = documentoReferencia; - } - - public String getEmpresa() { - return empresa; - } - - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - - public String getLugarDireccion() { - return lugarDireccion; - } - - public void setLugarDireccion(String lugarDireccion) { - this.lugarDireccion = lugarDireccion; - } - - public String getRuta() { - return ruta; - } - - public void setRuta(String ruta) { - this.ruta = ruta; - } - - public String getObservaciones() { - return observaciones; - } - - public void setObservaciones(String observaciones) { - this.observaciones = observaciones; - } - - public String getTiempoEstimado() { - return tiempoEstimado; - } - - public void setTiempoEstimado(String tiempoEstimado) { - this.tiempoEstimado = tiempoEstimado; - } - - public Date getInicio() { - return inicio; - } - - public void setInicio(Date inicio) { - this.inicio = inicio; - } - - public Date getFin() { - return fin; - } - - public void setFin(Date fin) { - this.fin = fin; - } - - public Boolean getAceptarHabilitado() { - return aceptarHabilitado; - } - - public void setAceptarHabilitado(Boolean aceptarHabilitado) { - this.aceptarHabilitado = aceptarHabilitado; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public Boolean getBtnEnviar() { - return btnEnviar; - } - - public void setBtnEnviar(Boolean btnEnviar) { - this.btnEnviar = btnEnviar; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImportacionProduccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImportacionProduccionController.java.svn-base deleted file mode 100644 index cd5f404..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImportacionProduccionController.java.svn-base +++ /dev/null @@ -1,2257 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; -import org.primefaces.extensions.component.inputnumber.InputNumber; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmaExplosivoLovController; -import com.fp.frontend.controller.armas.lov.CargasLovController; -import com.fp.frontend.controller.armas.parametros.CalibreLovController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.LongitudLovController; -import com.fp.frontend.controller.armas.parametros.TipoArmaExpLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de armas - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImportacionProduccionController extends AbstractController { - - private Boolean estadoDesaduanizado = Boolean.FALSE; - private Boolean esNuevaImportacion = Boolean.TRUE; - private String filterAUCP; - //P lpartidaArancelaria=new ArrayList<>(); - private TarmCarga carga = new TarmCarga(); - private Boolean isSelectAucpPrevio = Boolean.FALSE; - private Boolean isSave=Boolean.FALSE; - private Boolean isEnableCategoria = Boolean.TRUE; - InputNumber cantidadTxt = new InputNumber(); - List ldeleteItems = new ArrayList(); - - @ManagedProperty(value = "#{tiposArmasExplosivosController}") - private TiposArmasExplosivosController tiposArmasExplosivosController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - // Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - // Catalogo que contiene tipos de registros - private List tiposRegistro; - private TcustPersonDetail usuario; - -// private String tipoRegistro; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Detalle de localizacion para el caso de importaciones - private List lpaises; -// private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; -// private TgeneCity ciudad; - - //Aeropuertos - private List laeropuertos=new ArrayList<>(); - - private List ldocumentospersona; - -// /** -// * Lista de tipos de identificación -// */ -// private List ltipoidentificacion; - /** - * Listado de estados del arma - */ - private List lestadoarma; - /** - * Listado de marcas - */ - private List lmarca; - /** - * Listado de colores - */ - private List lcolor; - /** - * Listado de tipos de fabricación - */ - private List ltipofabricacion; - /** - * Listado de unidad de medida cantidad - */ - private List lunidadmedidacantidad; - /** - * Listado de unidad medida peso - */ - private List lunidadmedidapeso; -// /** -// * Listado de paises -// */ -// private List lcountry; -// /** -// * Listado de provincias -// */ -// private List lprovincias; -// /** -// * Listado de cantones -// */ -// private List lcantones; - /** - * Listado de parroquias - */ - private List lparroquias; - /** - * Listado de ciudades - */ - private List lcities; - -// /** -// * Tipo documento -// */ -// private String tipoDoc; - -// /** -// * Número documento -// */ -// private String numDoc; - -// /** -// * Nombre/razón social -// */ -// private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Clase arma - */ - private String categoria; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que especifica que se deba verificar que exista un arma explosivo válido - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - /** - * Contiene la fecha actual del sistema - */ - private Date fechaActual; - /** - * Contiene la referencia a nuevo propietario del arma - */ - private TcustPersonDetail nuevoPropietarioArma; - /** - * Tipo del arma explosivo - */ - private TarmTipoArmaExplosivo tipoArmaExplosivo ; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo del ruc - */ - private String codigoPasaporte; - - public ImportacionProduccionController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - carga.setIsnew(Boolean.TRUE); - //Localizacion - lpaises=CountryController.find(); - this.lprovincias=ProvinceController.find("EC"); - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - this.lpartidaArancelaria=CatalogDetailController.find("PARTIDAARANCELARIA"); - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - //Tipos de registro - tiposRegistro=CatalogDetailController.find("TIPOREGISTRO", "REG"); - fechaActual = new Date(); - recperpage = 5000; // Cambiar al # reg a mirar. -// record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; -// ltipoidentificacion = CatalogDetailController.find("IDENTIFICATION"); - lestadoarma = CatalogDetailController.find("ESTADOARMA"); - lmarca = CatalogDetailController.find("MARCA"); - lcolor = CatalogDetailController.find("COLOR"); - ltipofabricacion = CatalogDetailController.find("TIPOFABRICACION"); -// lunidadmedidacantidad = CatalogDetailController.find("UCANTIDAD"); - lunidadmedidapeso = CatalogDetailController.find("UNIDADMEDIDA"); -// lcountry = CountryController.find(); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cargarCategorias(){ - System.out.println("cargarCategorias 1"); - // Cargamos la lista de categorias disponibles para el usuario (en funcion de sus documentos habilitantes) - ldocumentospersona= new ArrayList<>(); - List listadocum= new ArrayList<>(); - System.out.println("registro.getTiporegistro() "+registro.getTiporegistro()); - if(registro.getTiporegistro()!=null){ - if("PRO".equals(registro.getTiporegistro())){ - listadocum=DocumentoHabilitanteController.findByPerson_Produccion(usuario.getPk().getPersoncode().toString()); - carga=new TarmCarga(); - carga.setIsnew(Boolean.TRUE); - registro.setIsnew(Boolean.TRUE); - }else{ - if(esNuevaImportacion){ - registro.setIsnew(Boolean.TRUE); - } - listadocum=DocumentoHabilitanteController.findByPerson_Importacion(usuario.getPk().getPersoncode().toString()); - } - }else{ - ldocumentospersona=new ArrayList<>(); - } - //Forma numero 1 (Uso de Maps). - Map mapaSinRepetidos = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapaSinRepetidos.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - for(Entry p : mapaSinRepetidos.entrySet()) { - ldocumentospersona.add(p.getValue()); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroPersona = ""; - String sqlFiltroSancion = ""; - String sqlFiltroEstados = ""; - String sqlFiltroClaseArmas = ""; -// String sqlFiltroFechaCaducidad = ""; - String sqlFiltroValidacionArma = "";//si entre los estados existe renovacion entonces validamos que no pueda seleccionar las mismas armas - if(this.getMfilelds().get("personcode") != null){ - sqlFiltroPersona = " t.cregistro in (SELECT c.pk FROM TarmRegistroArmas c WHERE c.personcode="+this.getMfilelds().get("personcode")+")"; - } - //agregamos los filtros en base a la consideracion del field sancion, en caso de que lo sea buscamos los sancionados que hayan cumplido el tiempo de sancion - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - if(this.getMfilelds().containsKey("sancion") && this.getMfilelds().get("sancion").toString().equals(Constant.STR_Y)){ - sqlFiltroSancion = " t.pk in (SELECT max(a.pk) FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.pk in (SELECT d.cdocumento FROM TarmSancionDecomiso d WHERE d.personcode="+this.getMfilelds().get("personcode")+" AND d.fechafinal < TO_DATE('"+dateFormat.format(Calendar.getInstance().getTime())+"', 'YYYY-MM-DD'))) GROUP BY a.codigoarma)"; - } - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - sqlFiltroEstados = sqlEstados.toString(); - } - - if(this.getMfilelds().get("TRAMITE") != null){ - TarmTramite tarmTramite = (TarmTramite) this.getMfilelds().get("TRAMITE"); - sqlFiltroValidacionArma = "t.pk not in (SELECT coalesce(max(a.pk),'-1') FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.personcode="+this.getMfilelds().get("personcode")+" AND h.ctramite="+tarmTramite.getPk()+" AND h.estado = 'APR' AND trunc(h.fechaexpiracion) >= " + "TO_DATE('" +dateFormat.format(Calendar.getInstance().getTime())+ "','yyyy-MM-dd')) GROUP BY a.codigoarma)"; - } - //estados del armas - if(this.getMfilelds().get("CLASEARMAS") != null){ - String[] clasesarma = this.getMfilelds().get("CLASEARMAS").toString().split(","); - StringBuffer sqlclasesarmas = new StringBuffer(" t.ctipoarmaexplosivo IN (select o.pk from TarmTipoArmaExplosivo o where o.clase in("); - for (int i = 0; i < clasesarma.length; i++) { - sqlclasesarmas.append("'").append(clasesarma[i]).append("'"); - if(i < clasesarma.length - 1){ - sqlclasesarmas.append(","); - } - } - sqlclasesarmas.append(")) "); - sqlFiltroClaseArmas = sqlclasesarmas.toString(); - } - -// if(this.getMfilelds().get("FECHACADUCIDADARM") != null){ -// sqlFiltroFechaCaducidad="t.fechacaducidad "+this.getMfilelds().get("FECHACADUCIDADARM"); -// } - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - -// String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlFiltroFechaCaducidad, sqlActual); - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlActual); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizaPanelImportacion(){ - if(esNuevaImportacion){ - System.out.println("Logica para cuando es una nueva importacion: " + esNuevaImportacion); - carga=new TarmCarga(); - carga.setIsnew(Boolean.TRUE); - registro.setIsnew(Boolean.TRUE); -// if(registro.getPk()!=null){ -// registro.setPk(null); -// -// } - }else{ - System.out.println("Logica para cuando es una importacion ya cargada y se consultara por AUCP: " + esNuevaImportacion); - } -// registro = new TarmRegistroArmas(); -// this.lrecord = new ArrayList(); - - } - - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - @SuppressWarnings("unchecked") - public void querydatabaseSinFiltros() { - try { - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @SuppressWarnings("unchecked") - protected void querydatabasePorCodigo() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - - return dto; - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void remove() throws Exception { - if(record.getPk()==null){ - super.remove(); - } - else{ - ldeleteItems.add(this.record); - super.remove(); - } - } - - - @Override - public void save() { - try { - if(registro.getTiporegistro().equals("IMP") && registro.isnew){ - TarmCarga aucpUsadoPrevio = CargaController.findByAUCP(registro.getSolicitudnum()); - if(aucpUsadoPrevio!=null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_aucp_previamente_cargado")); - return; - } - if(this.registro.getPaisorigen()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_paisOrigenRequerido")); - return; - } - if(this.carga.getProvincecode() ==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_provinciaRequerido")); - return; - } - if(this.carga.getCantoncode() ==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_cantonRequerido")); - return; - } - if(this.carga.getCitycode()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ciudadRequerido")); - return; - } - if(this.registro.getAeropuertopuerto()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_aeropuertoRequerido")); - return; - } - } - if(this.getLrecord().isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_carga_armas_inexistentes")); - return; - } - this.registroArmas.update(); - Request request = callerhelper.getRequest(); - this.registro.setPersoncode(usuario.getPk().getPersoncode()); - this.registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); -// this.registro.setPaisorigen("EC"); - this.registro.setFcreacion(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - request.getModifiedData().put("LISTAARMAS", this.lrecord); - request.getModifiedData().put("LISTAARMASELIMINADAS", this.ldeleteItems); - request.getModifiedData().put("TIPOREGISTRO", this.registro.getTiporegistro()); - request.getModifiedData().put("REGISTRO", this.registro); - request.getModifiedData().put("PERSONCODE", usuario.getPk().getPersoncode()); - request.getModifiedData().put("ESNUEVAIMPORTACION", esNuevaImportacion); - carga.setCategoria(this.categoria); - request.getModifiedData().put("TARMCARGA",carga); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - isSave=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveArmaSolicitud() { - try { - - if(!isArmaDuplicada(record)){ - - record.getModifiedData().put("edit", "S"); - - this.registroArmas.update(); - update(); - if(!existeTipoArmaExplosivo){ - return; - } - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - - Request request = callerhelper.getRequest(); - request.setTransactionModule("30"); - request.setTransactionCode(15); - request.setTransactionVersion(1); - if(!verificaArmaExplosivo){ - request.put("eseliminacion", Constant.STR_Y); - }else{ - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - } - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.put("TIPODOC", this.getMfilelds().get("tipodoc")); - request.put("NUMDOC", this.getMfilelds().get("numdoc")); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmas.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - }else{ - record= null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_armaDuplicada")); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception { -// TgeneCatalogDetail estado = CatalogDetailController.findxCodigoCodcatalogo(record.getEstado(), record.getEstadocodigo()); - TgeneCatalogDetail marca = CatalogDetailController.findxCodigoCodcatalogo(record.getMarca(), record.getMarcacodigo()); -// record.getModifiedData().put("estado", estado.getDescription()); - isEnableCategoria = Boolean.FALSE; - record.setPartidaarancelariacodigo("PARTIDAARANCELARIA"); - record.setTipofabricacion("TIPOFABRICACION2"); - record.setTipofabricacioncodigo("TIPOFABRICACION"); - record.getModifiedData().put("marca", marca.getDescription()); - for(TgeneCatalogDetail color:lcolor){ - if(record.getColor()!=null && record.getColor().equals(color.getPk().getCatalog())){ - record.getModifiedData().put("color", color.getDescription()); - break; - } - } - if(verificaArmaExplosivo){ - if(tipoArmaExplosivo == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - existeTipoArmaExplosivo = Boolean.FALSE; - return; - }else{ - this.record.setCtipoarmaexplosivo(tipoArmaExplosivo.getPk()); - record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getUnidadmedidapeso()); - existeTipoArmaExplosivo = Boolean.TRUE; - } - } - super.update(); - } - - public Boolean existeDuplicidad(){ - if(this.lrecord.contains(record)){ - return Boolean.TRUE; - } - return Boolean.FALSE; - } - - - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - if(record.getCountrycode() == null){ - record.setCountrycode("EC"); - } - if(record.getCtipoarmaexplosivo()==null){ - MessageHelper.setMessageError("NO ESTA ASOCIADO A UN TIPO DE ARMA EXPLOSIVO"); - return; - } - tipoArmaExplosivo= TiposArmasExplosivosController.findarma(record.getCtipoarmaexplosivo()); -// lprovincias = ProvinceController.find(record.getCountrycode()); -// executeProvince(); -// if(record.getProvincecode() != null){ -// lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); -// executeCanton(); -// } -// completaInfTipoArma(); - // Anade la descripcion del tipo de arma explosivo - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - } - verificarClaseArma(); - } - -// /** -// * Método que completa la informaci´n del arma una vez se presiona el botón crear -// */ -// private void completaInfTipoArma(){ -// TarmArmas recordArma = findPorCodigo(record.getPk()); -// record.setCountrycode("EC"); -// clase = record.getModifiedData().get("clase") != null ? recordArma.getModifiedData().get("clase").toString() : null; -// calibre = record.getModifiedData().get("ccalibre") != null ? Utilidades.formatearDecimalesEnTexto((recordArma.getModifiedData().get("ccalibre").toString()).replace("null", ""), "#.00") : null; -// longitud = record.getModifiedData().get("clongitud") != null ? recordArma.getModifiedData().get("clongitud").toString() : null; -// tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? recordArma.getModifiedData().get("ctipoarmaexplosivo").toString() : null; -// } - - @Override - public void create() throws Exception { - if(categoria!=null){ - super.create(); - this.record.setEstadocodigo("ESTADOARMA"); - this.record.setMarcacodigo("MARCA"); - this.record.setCantidad(null); - this.record.setPeso(null); - this.lprovincias = ProvinceController.find(record.getCountrycode()); - this.executeProvince(); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("PF('dialog').show()"); - }else{ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_categoriaRequerida")); - return; - } - } - - public void update(TarmArmas bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void validacionDocumento(String numeroDocumento, String tipoDocumento){ - if(numeroDocumento==null || tipoDocumento==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - TcustPersonDetail tcustPersonDetail=null; - if(tipoDocumento.equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else if(tipoDocumento.equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else{ -//----------si es PASAPORTE - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - } -// if(tcustPersonDetail==null){ -// nombreRazon=null; -//// numDoc=null; -// MessageHelper.setMessageError("La datos de la persona ingresada no existen, por favor crear primero la persona"); -// return; -// }else{ -// nombreRazon=tcustPersonDetail.getName(); -// } - } - - /** Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - /** - * Busca un arma por código y estado - * @param armaCode código del arma - * @param estado estado del arma - * @return - */ - public static TarmArmas find(String armaCode,String estado) { - try { - - if(armaCode==null){ - return null; - } - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - if(estado!=null){ - cc.addFilter("estado", estado); - cc.addFilter("estadocodigo", "ESTADOARMA"); - } - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = new TarmTipoArmaExplosivo(); - tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null) - cc.record.modifiedData().put("calibre",tarmTipoArmaExplosivo==null?"":Utilidades.formatearDecimalesEnTexto((CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()), "#.000")); - cc.record.modifiedData().put("tipo",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - cc.record.modifiedData().put("clase",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - cc.record.modifiedData().put("pais", cc.record.getCpaisorigen()==null?"":CountryController.findcountry(cc.record.getCpaisorigen()).getDescription()); - - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - if(serie!=null && !serie.isEmpty()){ - cc.addFilter("lote", serie); - } - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findByPK(String cArma) { - try { - - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", cArma); - cc.querydatabaseSinFiltros(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - cc.record=cc.lrecord.get(0); - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findPorCodigo(String armaCode) { - try { - - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - - /** - * - * - * @param personCode - * @param estados estados del arma separados por coma - * @return Una lista de Armas encontradas - */ - public List findxPersona(Long personCode, String estados, String clase, String fechaCaducidad) { - List armasLista = null; - try { - armasLista = new ArrayList(); - ImportacionProduccionController armas = new ImportacionProduccionController(); - armas.init(); - armas.recperpage = 4000; - armas.addField("personcode", personCode); - if(this.getMfilelds().get("sancion") != null){ - armas.addField("sancion", this.getMfilelds().get("sancion")); - } - if(this.getMfilelds().get("TRAMITE") != null){ - armas.addField("TRAMITE", this.getMfilelds().get("TRAMITE")); - } - if(estados == null){ - armas.addFilter("estado", "REG"); - } else{ - armas.addField("ESTADOS", estados); - } - if(clase != null && clase .trim().length()>0){ - armas.addField("CLASEARMAS", clase); - } -// if(fechaCaducidad != null && fechaCaducidad .trim().length()>0){ -// armas.addField("FECHACADUCIDADARM", fechaCaducidad); -// } - armas.query(); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("clase", clase.getDescription()); - this.clase = clase.getPk().getCatalog(); - this.verificarClaseArma(); - } - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaExplosivoLov() { - - this.record.getModifiedData().put("longitud", null); - this.record.getModifiedData().put("tipoarmaexplosivo", null); - this.record.getModifiedData().put("calibre", null); - // descripcionUnidadpeso=null; - Map> params = new HashMap<>(); - List lcategoriaParam = new ArrayList<>(); - lcategoriaParam.add(categoria); - params.put("categoria", lcategoriaParam); - ArmaExplosivoLovController.openLov(params); - - } - - /** - * Abre el LOV de busqueda de importaciones por codigo solicitud (AUCP) - */ - public void openCargaPrevia() { - Map> params = new HashMap<>(); - List lPersoncodeParam = new ArrayList<>(); - lPersoncodeParam.add(usuario.getPk().getPersoncode().toString()); - params.put("personcode", lPersoncodeParam); - CargasLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnArmaExplosivo(SelectEvent event) { - tipoArmaExplosivo = (TarmTipoArmaExplosivo) event.getObject(); - //Setear descripciones a presentarse - this.record.getModifiedData().put("clase", tipoArmaExplosivo.getModifiedData().get("nclase")); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArmaExplosivo.getModifiedData().get("ntipo")); - this.record.getModifiedData().put("longitud", tipoArmaExplosivo.getModifiedData().get("nlongitud")); - this.record.getModifiedData().put("calibre", tipoArmaExplosivo.getModifiedData().get("ncalibre")); - // Setear valores en las variables correspondientes - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - this.record.setUnidadmedidacantidad(tipoArmaExplosivo.getUnidadmedidapeso()); - } - this.verificarClaseArma(); - // valida cantidad para registro de produccion - cantidadTxt.setValue(null); - if(registro.getTiporegistro().equals("PRO")){ - if((this.clase.equals("0010000001") || this.clase.equals("0010000004") || this.clase.equals("0010000008")) && this.bloquearUnidadPeso){ - cantidadTxt.setValue("1"); - cantidadTxt.setDisabled(true); - } - } - } - - /** - * Regresa del LOV de carga - * @param event - */ - public void onReturnCarga(SelectEvent event) { - System.out.println("Retorno del lov carga"); - isSelectAucpPrevio = Boolean.TRUE; - carga = (TarmCarga) event.getObject(); - this.categoria = carga.getCategoria(); - this.isEnableCategoria = Boolean.FALSE; - if(carga.getEsdesaduanizado().equals("S")){ - this.isSave = Boolean.TRUE; - } - carga.setIsnew(Boolean.FALSE); - registro = RegistroArmController.findByCodigo(carga.getCregistro().toString()); - registro.setIsnew(Boolean.FALSE); - TgeneCountry paisOrigen = CountryController.findcountry(registro.getPaisorigen()); - registro.getModifiedData().put("paisorigen", paisOrigen!=null?paisOrigen.getDescription():""); - // Provincia - TgeneProvince provinciaTmp = ProvinceController.findPorCodigo("EC", carga.getProvincecode()).get(0); - if(provinciaTmp!=null){ - carga.getModifiedData().put("provinceCode",provinciaTmp.getDescription()); - } - // Canton - TgeneCanton cantonTmp = CantonController.findPorCodigo("EC", carga.getProvincecode(), carga.getCantoncode()).get(0); - if(cantonTmp!=null){ - carga.getModifiedData().put("cantonCode",cantonTmp.getDescription()); - } - // Ciudad - TgeneCity ciudadTmp = CityController.findPorCodigo("EC", carga.getProvincecode(), carga.getCantoncode(), carga.getCitycode()).get(0); - if(ciudadTmp!=null){ - carga.getModifiedData().put("cityCode",ciudadTmp.getDescription()); - } - - lrecord = ArmasController.findxRegistro(registro.getPk().toString()); - if(lrecord==null){ - this.lrecord = new ArrayList(); - } - - } - - /** - * Método en el cual se determina si se bloquea unidad o cantidad al momento de cargar los datos del arma - * @param clase - */ - private void verificarClaseArma(){ - if(tipoArmaExplosivo!=null){ - TgeneCatalogDetail unidadesCatalog = CatalogDetailController.findCatalogo(tipoArmaExplosivo.getUnidadmedidapesocodigo(),tipoArmaExplosivo.getUnidadmedidapeso()); - if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("CANTIDAD")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getUnidadmedidapeso()); - this.record.getModifiedData().put("unidadMedidaPeso", null); - this.bloquearUnidadCantidad = Boolean.FALSE; - this.bloquearUnidadPeso = Boolean.TRUE; - this.record.setPeso(null); - }else if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("PESO")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getUnidadmedidapeso()); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.FALSE; - this.record.setCantidad(null); - }else{ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", null); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.TRUE; - } - } - } - - /** - * Abre el LOV de la longitud del arma - */ - public void openLovLongitud() { - Map> params = new HashMap>(); - LongitudLovController.openLov(params); - } - - /** - * Regresa del LOV de longitud - * @param event - */ - public void onReturnLongitud(SelectEvent event) { - TgeneCatalogDetail longitud = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("longitud", longitud.getDescription()); - this.longitud = longitud.getPk().getCatalog(); - } - - /** - * Abre el LOV del tipo de arma - */ - public void openLovTipoArma() { - Map> params = new HashMap>(); - TipoArmaExpLovController.openLov(params); - } - - /** - * Regresa del LOV de tipo de arma - * @param event - */ - public void onReturnTipoArma(SelectEvent event) { - TgeneCatalogDetail tipoArma = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArma.getDescription()); - this.tipoarma = tipoArma.getPk().getCatalog(); - } - - /** - * Abre el LOV de Calibre - */ - public void openLovCalibre() { - Map> params = new HashMap>(); - CalibreLovController.openLov(params); - } - - /** - * Regresa del LOV del calibre - * @param event - */ - public void onReturnCalibre(SelectEvent event) { - TgeneCatalogDetail calibre = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("calibre", calibre.getDescription()); - this.calibre = calibre.getPk().getCatalog(); - } - - /** - * Abre el LOV cambio de usuario - */ - public void openLovCambioUsuario() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Acción de retorno de la selección del usuario - * @param event de retorno de la selección - */ - public void onReturnCambioUsuario(SelectEvent event) { - nuevoPropietarioArma = (TcustPersonDetail) event.getObject(); - } - - /** - * Abre el dialog del cambio de persona - */ - public void abrirDialogCambio() { - this.nuevoPropietarioArma = null; - } - - /** - * Se cambia el propietario del arma - */ - public void cambiarArmaUsuario() { - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(151); - request.setTransactionVersion(1); - request.put("ARMAACTUAL", this.record); - request.put("NUEVAPERSONA", this.nuevoPropietarioArma); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - MessageHelper.setMessageInfo(response); - this.querydatabase(); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { -// codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", carga.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { -// codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", carga.getProvincecode(), carga.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para obtener el listado de las armas por la serie/lote - * @param serieLote - * @return - */ - public static List findxSerieLote(String serieLote) { - try { - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("lote", serieLote); - cc.querydatabaseFechaMax(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - protected void querydatabaseFechaMax() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String codigoEstadoIncautada=codigos("CODIGO.INCAUTADA"); - String codigoEstadoDecomisada=codigos("CODIGO.DECOMISADA"); - String codigoEstadoVendida=codigos("CODIGO.VENDIDA"); - String codigoEstadoMatPrima=codigos("CODIGO.MATERIAPRIMA"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"//and t.cregistro=ta.cregistro para el manejo de los explosivos - + " and t.estado !='DEST' and t.estado !='CDP' and t.estado !='"+codigoEstadoIncautada+"' and t.estado !='"+codigoEstadoDecomisada+"' and t.estado !='"+codigoEstadoVendida+"' and t.estado !='"+codigoEstadoMatPrima+"' "; - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizar(TarmArmas arma) throws Exception{ - record=arma; - super.update(); - } - - /*Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findxCodigo(String armaCode) { - try { - - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - cc.querydatabaseArmas(); - cc.getRecord().getModifiedData().put("lmarca", cc.getLmarca()); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TiposArmasExplosivosController getTiposArmasExplosivosController() { - return tiposArmasExplosivosController; - } - - - public void setTiposArmasExplosivosController( - TiposArmasExplosivosController tiposArmasExplosivosController) { - this.tiposArmasExplosivosController = tiposArmasExplosivosController; - } - - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - -// public List getLtipoidentificacion() { -// return ltipoidentificacion; -// } -// -// -// public void setLtipoidentificacion(List ltipoidentificacion) { -// this.ltipoidentificacion = ltipoidentificacion; -// } -// -// -// public String getTipoDoc() { -// return tipoDoc; -// } -// -// -// public void setTipoDoc(String tipoDoc) { -// this.tipoDoc = tipoDoc; -// } - - -// public String getNumDoc() { -// return numDoc; -// } -// -// -// public void setNumDoc(String numDoc) { -// this.numDoc = numDoc; -// } - - -// public String getNombreRazon() { -// return nombreRazon; -// } -// -// -// public void setNombreRazon(String nombreRazon) { -// this.nombreRazon = nombreRazon; -// } - - - public List getLestadoarma() { - return lestadoarma; - } - - - public void setLestadoarma(List lestadoarma) { - this.lestadoarma = lestadoarma; - } - - - public List getLmarca() { - return lmarca; - } - - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - - public List getLcolor() { - return lcolor; - } - - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - - - public List getLtipofabricacion() { - return ltipofabricacion; - } - - - public void setLtipofabricacion(List ltipofabricacion) { - this.ltipofabricacion = ltipofabricacion; - } - - -// public List getLcountry() { -// return lcountry; -// } -// -// -// public void setLcountry(List lcountry) { -// this.lcountry = lcountry; -// } - - - public List getLunidadmedidacantidad() { - return lunidadmedidacantidad; - } - - - public void setLunidadmedidacantidad( - List lunidadmedidacantidad) { - this.lunidadmedidacantidad = lunidadmedidacantidad; - } - - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - - public List getLunidadmedidapeso() { - return lunidadmedidapeso; - } - - - public void setLunidadmedidapeso(List lunidadmedidapeso) { - this.lunidadmedidapeso = lunidadmedidapeso; - } - - - public List getLprovincias() { - return lprovincias; - } - - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - - public List getLcantones() { - return lcantones; - } - - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - - public List getLparroquias() { - return lparroquias; - } - - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - - public List getLcities() { - return lcities; - } - - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - protected void querydatabaseArmas() { - try { - DtoQuery dto = this.getDtoQuery(); - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - }else{ - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getNuevoPropietarioArma() { - return nuevoPropietarioArma; - } - - public void setNuevoPropietarioArma(TcustPersonDetail nuevoPropietarioArma) { - this.nuevoPropietarioArma = nuevoPropietarioArma; - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - @SuppressWarnings("unchecked") - public void querydatabasesimple() { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - public void querydatabaseArmaDuplicada(TarmArmas armaObj) { - try { - DtoQuery dto = this.getDtoQuery(); - - Filter filtro = new Filter(); - filtro.setSql("t.marca='"+armaObj.getMarca()+"' and t.marcacodigo='"+armaObj.getMarcacodigo()+"' and upper(t.lote)='"+ armaObj.getLote().toUpperCase()+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmArmas findSimple(String carma) { - try { - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static Boolean isArmaDuplicada(TarmArmas armaObj) { - Boolean isDuplicada = Boolean.FALSE; - ImportacionProduccionController cc; - try { - cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabaseArmaDuplicada(armaObj); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas armaTmp:cc.lrecord){ - TarmTipoArmaExplosivo tipoArmaExpTmp = TiposArmasExplosivosController.findarma(armaTmp.getCtipoarmaexplosivo()); - TgeneCatalogDetail claseTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getClasecodigo(), tipoArmaExpTmp.getClase()); - TgeneCatalogDetail tipoArmaTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getTipoarmaexplosivocodigo(), tipoArmaExpTmp.getTipoarmaexplosivo()); - TgeneCatalogDetail calibreTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getCalibrecodigo(), tipoArmaExpTmp.getCalibre()); - // Valido la clase, tipoarma y calibre solo para armas de fuego y armas no letales - if(claseTmp.getPk().getCatalog().equals("0010000001") || claseTmp.getPk().getCatalog().equals("0010000008")){ - if(armaObj.getModifiedData().get("clase")!=null && armaObj.getModifiedData().get("tipoarmaexplosivo")!=null){ - if(armaObj.getModifiedData().get("clase").toString().equalsIgnoreCase(claseTmp!=null?claseTmp.getDescription():"")&& - armaObj.getModifiedData().get("tipoarmaexplosivo").toString().equalsIgnoreCase(tipoArmaTmp!=null?tipoArmaTmp.getDescription():"")){ - if(armaObj.getModifiedData().get("calibre")!=null && calibreTmp!=null && armaObj.getModifiedData().get("calibre").toString().equalsIgnoreCase(calibreTmp.getDescription())){ - isDuplicada = Boolean.TRUE; - break; - } - } - }else{ - MessageHelper.setMessageError("CLASE Y/O TIPO DE ARMA EXPLOSIVO INCORRECTOS"); - } - } - } - - } - return isDuplicada; - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmArmas find(String carma) { - try { - - ImportacionProduccionController cc = new ImportacionProduccionController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - -// public TarmRegistroArmas getRegistro() { -// return registro; -// } -// -// public void setRegistro(TarmRegistroArmas registro) { -// this.registro = registro; -// } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public String getCategoria() { - return categoria; - } - - public void setCategoria(String categoria) { - this.categoria = categoria; - } - - public Boolean getEstadoDesaduanizado() { - return estadoDesaduanizado; - } - - public void setEstadoDesaduanizado(Boolean estadoDesaduanizado) { - this.estadoDesaduanizado = estadoDesaduanizado; - } - - public Boolean getEsNuevaImportacion() { - return esNuevaImportacion; - } - - public void setEsNuevaImportacion(Boolean esNuevaImportacion) { - this.esNuevaImportacion = esNuevaImportacion; - } - - public String getFilterAUCP() { - return filterAUCP; - } - - public void setFilterAUCP(String filterAUCP) { - this.filterAUCP = filterAUCP; - } - - public TarmCarga getCarga() { - return carga; - } - - public void setCarga(TarmCarga carga) { - this.carga = carga; - } - - public Boolean getIsSelectAucpPrevio() { - return isSelectAucpPrevio; - } - - public void setIsSelectAucpPrevio(Boolean isSelectAucpPrevio) { - this.isSelectAucpPrevio = isSelectAucpPrevio; - } - - public Boolean getIsSave() { - return isSave; - } - - public void setIsSave(Boolean isSave) { - this.isSave = isSave; - } - - public InputNumber getCantidadTxt() { - return cantidadTxt; - } - - public void setCantidadTxt(InputNumber cantidadTxt) { - this.cantidadTxt = cantidadTxt; - } - - public List getLpartidaArancelaria() { - return lpartidaArancelaria; - } - - public void setLpartidaArancelaria(List lpartidaArancelaria) { - this.lpartidaArancelaria = lpartidaArancelaria; - } - - public Boolean getIsEnableCategoria() { - return isEnableCategoria; - } - - public void setIsEnableCategoria(Boolean isEnableCategoria) { - this.isEnableCategoria = isEnableCategoria; - } - - - -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImprimirVerificacionReimpresionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImprimirVerificacionReimpresionController.java.svn-base deleted file mode 100644 index e70cfb5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ImprimirVerificacionReimpresionController.java.svn-base +++ /dev/null @@ -1,451 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ImprimirVerificacionReimpresionController extends AbstractController { - - - /* - * Variable para verificar seleccion de documento - */ - private Boolean verifica = false; - /* - * Variable para habilitar documentos a imprimir - */ - private Boolean habimprimir = Boolean.TRUE; - /* - * Variable que coloca en verdadero o en falso. - */ - private Boolean valorColocar = Boolean.FALSE; - /* - * Hailita el boton del flujo - */ - private Boolean btnFlujo = Boolean.FALSE; - /* - * Bean del tipo TarmSolicitud - */ - TarmSolicitud solic= new TarmSolicitud(); - /* - * Variable que almacena el codigo de la solicitud - */ - private String csolicitud; - - @ManagedProperty(value = "#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Constructor - * @throws Exception - */ - public ImprimirVerificacionReimpresionController() throws Exception { - super(TarmSolicitudDocumento.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - try { - this.pasteBpmScreenParameters(); - super.startQuery(); - - if(super.getMfilters().get("csolicitud")==null || super.getMfilters().get("csolicitud").isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_noexistesolicitud")); - return; - } - - csolicitud=super.getMfilters().get("csolicitud"); - this.getMfilters().clear(); - //this.getMfilters().put("pk.csolicitud", csolicitud); - solic= SolicitudController.findSolicitudxcodsolicitud(csolicitud); - this.getMfilelds().put("numerosolicitud", solic.getNumerosolicitud()); - // Inicializa autoconsulta - this.init(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "VERIFICARDOCUMENTOS"; - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter filtroSinImpresionSolicitud=new Filter(); - filtroSinImpresionSolicitud.setSql("t.chkimpresion='Y' and t.pk.csolicitud = '" + solic.getPk() + "'"); - dto.addFiltro(filtroSinImpresionSolicitud); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery qry = new SubQuery("TarmSolicitud", "ccentrocontrol", "ccentrocontrol", "i.pk = t.pk.csolicitud"); - dto.addSubQuery(qry); - SubQuery qry2 = new SubQuery("TgeneCatalogDetail", "description", "tramitedesc", - "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento))) "// t.pk.csolicitud - + " and " - + "i.pk.catalogcode = (select a.tipotramitecodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry2); - SubQuery qry3 = new SubQuery("TgeneCatalogDetail", "description", "categoriadesc", - "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))" - + " and " - + "i.pk.catalogcode = (select a.categoriacodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry3); - SubQuery qry4 = new SubQuery("TgeneCatalogDetail", "description", "usoactdesc", - "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))" - + " and " - + "i.pk.catalogcode = (select a.usoactividadcodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry4); - SubQuery qry42 = new SubQuery("TgeneCatalogDetail", "description", "tipoautodesc", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))" - + " and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry42); - - - //ubicacion - SubQuery qryUbicacion = new SubQuery("TgeneProvince", "description", "ubicaciondesc", - "i.pk.countrycode = 'EC'" - + " and " - + "i.pk.provincecode = (select a.provincecode from TcustPersonAddress a where a.pk.personcode =(select o.personcode from TarmDocumentoHabilitante o where o.pk= t.pk.cdocumento )" - + " and a.principal='Y'" - + " and a.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD') )");// - dto.addSubQuery(qryUbicacion); - //TarmSolicitudDocumento - - SubQuery qry5 = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry5); - SubQuery qry6 = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry6); - SubQuery qry61 = new SubQuery("TarmDocumentoHabilitante", "estado ", "estado1", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry61); - SubQuery qry611 = new SubQuery("TarmDocumentoHabilitante", "estadocode ", "estado11", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry611); - SubQuery qry7 = new SubQuery("TgeneCatalogDetail", "description", "estado", - "i.pk.catalog = (select a.estado from TarmDocumentoHabilitante a where a.pk= t.pk.cdocumento) and " - + "i.pk.catalogcode = (select a.estadocode from TarmDocumentoHabilitante a where a.pk= t.pk.cdocumento)"); - dto.addSubQuery(qry7); - SubQuery qry8 = new SubQuery("TarmDocumentoHabilitante", "carma", "carma", "i.pk = t.pk.cdocumento and i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry8); - SubQuery qry9 = new SubQuery("TarmDocumentoHabilitante", "codigoarma", "codigoarma", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry9); - SubQuery qry10 = new SubQuery("TgeneCatalogDetail", "description", "tipoautorizacion", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry10); - - SubQuery qry11 = new SubQuery("TarmDocumentoHabilitante", "xpath", "xpath", "i.pk = t.pk.cdocumento "); - dto.addSubQuery(qry11); -/* Filter seleccionados = new Filter(); - seleccionados.setSql("chkimpresion = 'Y'"); - dto.getLfilter().add(seleccionados);*/ - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "VDOCUMENTO"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - this.completaArmas(); - super.postQuery(this.lrecord); - lista(); - - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Verifica la selección del documento según el check de reimpresión - */ - public void lista(){ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getChkimpresion().equals("Y")){ - solicituddoc.getModifiedData().put("verificador", Boolean.TRUE); - }else{ - solicituddoc.getModifiedData().put("verificador", Boolean.FALSE); - } - } - } - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - this.actualizaVerificado(); - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - /*if(!dtosave.pendingProcess()){ - return; - }*/ - - - - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - btnFlujo = true; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Selecciona los registros para establecer si el registro se reimprime o no. - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - this.valorColocar = Boolean.TRUE; - }else { - this.valorColocar = Boolean.FALSE; - } - for (TarmSolicitudDocumento solicituddoc : lrecord) { - solicituddoc.getModifiedData().put("verificado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que verifica la eleccion del check - */ - public void verificar(){ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getChkimpresion() == "Y"){ - this.verifica = true; - }else { - this.verifica = false; - } - } - } - /** - * Método que actualiza la elección del check - * @throws Exception - */ - public void actualizaVerificado() throws Exception{ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if( solicituddoc.getModifiedData().get("verificado").equals(Boolean.TRUE)){ - solicituddoc.setVerificado("Y"); - }else { - solicituddoc.setVerificado("N"); - } - record=solicituddoc; - super.update(); - } - } - /** - * Método que habilita el botón imprimir según check seleccionado - * @param event - */ - public void habilitaImprimir(AjaxBehaviorEvent event){ - try { - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - this.habimprimir = Boolean.FALSE; - }else { - this.habimprimir = Boolean.TRUE; - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método que completa la información del arma para los registros de la - * tabla TarmSolicitudDocumento - */ - public void completaArmas(){ - for(int i=0;i { - - /** - * - */ - private static final long serialVersionUID = 8843091476010012919L; - - /** - * Controlador que maneja alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - private TarmArmas arma = new TarmArmas(); - - private String editarReg; - - private String codigoSolicitud; - - private boolean habilitaButtom; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - private List listadoArmasPruebas = new ArrayList<>(); - - private String observacion; - - private String estado; - - private Date fec_actual; - - private String formato; - - private String xpathflujo; - - private TcustPersonDetail responsableCentroControl= null; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - private Boolean btnFlujo; - - private List tarmArmaPruebasList; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private boolean deshabilitadoGenerarReporte=true; - - private TarmSolicitud solicitud; - private TarmSolicitudTramite solicitudTramite; - private TarmTramite tramite; - private TcustPersonAddress direccionCliente; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private TgeneCatalogDetail estadotramite; - private TgeneCatalogDetail usoActividad; - private TcustPersonDetail personaDetalle; - private TgeneCatalogDetail identificacion; - private TgeneCatalogDetail detallecatalogoTipoTramite; - private TgeneCatalogDetail detallecatalogo; - /*** - * Bandera para saber el tramite seleccionano, NOLETAL,COLECCION,.. - * @throws Exception - */ - private String tramiteingresado; - - public IngresoFichaTecnicaArmasController() throws Exception { - super(TarmArmaPruebas.class); - } - - @PostConstruct - private void postconstruct() { - System.out.println("postconstruct"); - try { - startQuery(); - this.init(); - laccion=CatalogDetailController.find("ACCION"); - if(codigoSolicitud!=null){ - caragarArmas(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - - } - } - - public void startQuery() { - System.out.println("startQuery"); - try { - this.pasteBpmScreenParameters(); - codigoSolicitud=super.getMfilters().get("csolicitud");//"1012";//2656 - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - System.out.println("init"); - recperpage = 3000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "INGRESOFICHAARMAS"; - try { - if(this.obtenerCentroControl()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_centrocontrol")); - return; - } - - solicitud=SolicitudController.findSolicitudxcodsolicitud(codigoSolicitud); - //VALIDA EL tramite seleccionado - this.validarTramite(); - solicitudTramite=SolicitudTramiteController.findByCSolicitud(codigoSolicitud); - tramite=TarmTramiteController.find(solicitud.getCtramite()+""); - direccionCliente=PersonAddressController.find(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - - record=new TarmArmaPruebas(); - this.fec_actual = new Date(); - this.habilitaButtom = true; - this.responsableCentroControl = new TcustPersonDetail(); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.obtenerResponsableCentroControl(); - btnFlujo=Boolean.FALSE; - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void validarTramite(){ - tramiteingresado = "OTROS"; - TgeneParameters parametrofichanoletal=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametrofichanoletal!=null && parametrofichanoletal.getTextvalue()!=null && !parametrofichanoletal.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichanoletal.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "NOLETAL"; - } - } - } - TgeneParameters parametrofichacoleccion=ParametersController.find("CODIGO.FICHACOLECCION", "1"); - if(parametrofichacoleccion!=null && parametrofichacoleccion.getTextvalue()!=null && !parametrofichacoleccion.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichacoleccion.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "COLECCION"; - } - } - } - } - - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - private void querydatabaseArma(){ - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void caragarArmas() { - try { - List listaSolicitudArmas = RecepcionArmasController.findPorSolicitudTodas(codigoSolicitud); - tarmArmaPruebasList = new ArrayList<>(); - for (TarmSolicitudArmas solicitudArmas : listaSolicitudArmas) { - TarmArmaPruebas armaPrueba = find(codigoSolicitud,solicitudArmas.getPk().getCarma()); - if (armaPrueba != null) { - armaPrueba.getModifiedData().put("tarmArmarecordPruebas", armaPrueba); - // - TarmArmas tarmArma = ArmasController.find(solicitudArmas.getPk().getCarma(), null); - armaPrueba.modifiedData().put("arma",tarmArma!=null?tarmArma:new TarmArmas()); - armaPrueba.modifiedData().put("impresion",Boolean.FALSE); - tarmArmaPruebasList.add(armaPrueba); - } else { - this.create(); - record.getModifiedData().put("tarmArmaPruebas", armaPrueba); - this.record.setCarma(solicitudArmas.getPk().getCarma()); - this.record.setCsolicitud(codigoSolicitud); - this.record.setPersoncode(solicitudArmas.getPk().getPersoncode()); - this.record.isnew = true; - // - TarmArmas tarmArma = ArmasController.find(solicitudArmas.getPk().getCarma(), null); - record.modifiedData().put("arma",tarmArma!=null?tarmArma:new TarmArmas()); - record.modifiedData().put("impresion",Boolean.FALSE); - tarmArmaPruebasList.add(record); - } - } - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void save() { - try { - if(cargarArchivo()){ - return; - } - // Validacion para cambio de estado de arma a estado aprobada - TarmArmas tarmArmaObj = ArmasController.find(record.getCarma(), null); - if(record.getApruebaevaluacion().equals("Y")){ - String estadoarma="APTA"; - System.out.println("solicitud.getCtramite() "+solicitud.getCtramite()); - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - estadoarma="COLE"; - } - tarmArmaObj.setEstado(estadoarma); - if(armas.getMfilters().get("csolicitud")!=null){ - armas.getMfilters().remove("csolicitud"); - } - armas.update(tarmArmaObj); - armas.save(); - }else if(record.getApruebaevaluacion().equals("N")){ - tarmArmaObj.setEstado("NAPT"); - armas.update(tarmArmaObj); - armas.save(); - } - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(2); - msave.put(beanalias, dtosave); - request.setSaveTables(msave); - - DtoSave dtoSaveArma = armas.getDtoSave(); - dtoSaveArma.setIsForm(Boolean.TRUE); - dtoSaveArma.setReturnpk(Boolean.TRUE); - dtoSaveArma.setPosition(1); - msave.put(armas.getBeanalias(), dtoSaveArma); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - record.modifiedData().put("GUARDA", "S"); - MessageHelper.setMessageInfo(resp); - } else { - record.modifiedData().put("GUARDA", "N"); - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - record.modifiedData().put("GUARDA", "N"); - MessageHelper.setMessageError(e); - } - } - - public void uploadImpronta(FileUploadEvent event) { - record.modifiedData().put("FileUploadImpronta", event.getFile()); - } - - public void uploadFoto(FileUploadEvent event) { - record.modifiedData().put("FileUploadFoto", event.getFile()); - } - - /** - * Metodo invocado al cerrar el dialogo del registro de la ficha tecnica de las armas - * @throws Exception - */ - public Boolean cargarArchivo() throws Exception { - Boolean msgArchivos=Boolean.FALSE; - //Impronta - UploadedFile uploadedFileImpronta=null; - if(record.modifiedData().get("FileUploadImpronta")!=null){ - uploadedFileImpronta= (UploadedFile)record.modifiedData().get("FileUploadImpronta"); - }else{ - MessageHelper.setMessageError("INGRESE LA IMPRONTA"); - msgArchivos=Boolean.TRUE; - } - //FOTO - UploadedFile uploadedFoto=null; - if(record.modifiedData().get("FileUploadFoto")!=null){ - uploadedFoto= (UploadedFile)record.modifiedData().get("FileUploadFoto"); - }else{ - MessageHelper.setMessageError("INGRESE LA FOTO"); - msgArchivos=Boolean.TRUE; - } - if(msgArchivos){ - return msgArchivos; - } - String xPathLocation= getRutaDocumento(); - String xphat1=uploadedFoto.getFileName(); - if(xphat1.length()<9){ - xphat1="DOCUMENTO-"+xphat1; - } - if(alfrescoController.uploadFile(uploadedFoto.getInputstream(),xphat1, xPathLocation+ "/cm:fotografia")){ - record.setXpathfotografia(xPathLocation + "/cm:fotografia/cm:" + xphat1); - record.setImagenfotografia(uploadedFoto.getContents()); - }else{ - MessageHelper.setMessageError("ERROR AL CARGAR LA FOTO"); - return Boolean.TRUE; - } - String xphat2=uploadedFileImpronta.getFileName(); - if(xphat2.length()<9){ - xphat2="DOCUMENTO-"+xphat2; - } - if(alfrescoController.uploadFile(uploadedFileImpronta.getInputstream(),xphat2, xPathLocation+ "/cm:impronta")){ - record.setXpathimpronta(xPathLocation + "/cm:impronta/cm:" + xphat2); - this.record.setImagenimpronta(uploadedFileImpronta.getContents()); - }else{ - MessageHelper.setMessageError("ERROR AL CARGAR LA IMPRONTA"); - return Boolean.TRUE; - } - record.modifiedData().remove("FileUploadImpronta"); - record.modifiedData().remove("FileUploadFoto"); - super.update(); - this.habilitaButtom = false; - return msgArchivos; - } - - - public void verificarPuedeGenerarReporte(){ - for(TarmArmaPruebas tarmArmaPruebas:this.tarmArmaPruebasList){ - //IMPRIME record.modifiedData().get("IMPRIME").equals("S") - if(tarmArmaPruebas.getPk()==null ||tarmArmaPruebas.getImagenfotografia()==null||tarmArmaPruebas.getImagenimpronta()==null - ||tarmArmaPruebas.getXpathfichatecarmas()==null - || tarmArmaPruebas.getIsimpreso()==null || !tarmArmaPruebas.getIsimpreso().equalsIgnoreCase("Y")){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("lbl_impresionarma1") + tarmArmaPruebas.getCarma() + MsgControlArmas.getProperty("lbl_impresionarma2")); - deshabilitadoGenerarReporte = true; - return; - } - } - deshabilitadoGenerarReporte = false; - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(deshabilitadoGenerarReporte && !btnFlujo){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo para armar la ruta del documento - * @return - */ - public String getRutaDocumento() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append( - (calendar.get(Calendar.MONTH) + 1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH) + 1)); - ruta = ruta.append("/cm:D-").append( - (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); - TarmSolicitud solicitud = SolicitudArmasController.find(codigoSolicitud); - ruta = ruta.append("/cm:").append(solicitud.getNumerosolicitud()); - ruta = ruta.append("/cm:").append("armas"); - return ruta.toString(); - } - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void habilitarBoton() { - this.habilitaButtom = true; - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void cerrar() { - if(record.modifiedData().get("GUARDA")!=null && record.modifiedData().get("GUARDA").equals("S") && - record.modifiedData().get("IMPRIME")!=null && record.modifiedData().get("IMPRIME").equals("S") ){ - }else{ - MessageHelper.setMessageError("GUARDE Y GENERE EL REPORTE"); - } - } - - - /** - * Ejecuta reporte de registro balistico - * - */ - public void reporteRegistroBalistico() { - try { - String gradoUsuario =""; - String path = "armas/reports/registroBalistico"; - String filename=MsgControlArmas.getProperty("lbl_registroBalistico"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - //Logos - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Obteniendo la solicitud - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - - //Codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - - //Fecha de solicitud - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - - //Obteniendo los datos del tramite - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - TgeneCatalogDetail tipoTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail categoria=CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TarmSolicitudTramite solicitudTramite=SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - TgeneCatalogDetail tipoAutorizacion=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail usoActividad=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - - //Tipo de tramite - if(tipoTramite!=null && tipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", tipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - - //Categoria - if(categoria!=null && categoria.getDescription()!=null){ - parameters.put("categoria", categoria.getDescription()); - }else{ - parameters.put("categoria", " "); - } - - //No tramite - if(solicitudTramite!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de autorizacion - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription()!=null){ - parameters.put("tipoAutorizacion", tipoAutorizacion.getDescription()); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Uso-actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad", usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - TcustPersonDetail person = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //Fecha - parameters.put("fechaActual", sdf.format(this.fec_actual)); - parameters.put("fecActualHora", new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss").format(this.fec_actual)); - parameters.put("personCode", person.getPk().getPersoncode()); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - String format = this.formato; - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - btnFlujo=Boolean.TRUE; - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - public void saveImprimir() { - try { - if(!record.modifiedData().get("GUARDA").equals("S")){ - MessageHelper.setMessageError("GUARDE LA FICHA PARA GENERAR EL REPORTE"); - return; - } - reporteFichaArmas(); - record.setIsimpreso("Y"); - update(); - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - request.setSaveTables(msave); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - msave.put(beanalias, dtosave); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - record.modifiedData().put("IMPRIME", "S"); - MessageHelper.setMessageInfo(resp); - } else { - record.modifiedData().put("IMPRIME", "N"); - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - record.modifiedData().put("IMPRIME", "N"); - MessageHelper.setMessageError(e); - } - } - /** - * Obtiene el reporte de Ficha de Armas - * @throws Exception - */ - public void reporteFichaArmas() throws Exception { - String gradoUsuario =""; - String path = "armas/reports/fichaTecArmas"; - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("NOLETAL")){ - path = "armas/reports/fichaTecArmasNoLetales"; - } - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - path = "armas/reports/fichaTecArmasColeccion"; - } - - String filename=MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fechaActual", sdf.format(this.fec_actual)); - //Fecha de solicitud - if(solicitud!=null && solicitud.getFregistro()!=null){ - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - //No tramite - if(solicitudTramite!=null && solicitudTramite.getNumerotramite()!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramites - if(detallecatalogoTipoTramite!=null && detallecatalogoTipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", detallecatalogoTipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - //Estado tramite - if(estadotramite!=null && estadotramite.getDescription()!=null){ - parameters.put("estadoTramite", estadotramite.getDescription()); - }else{ - parameters.put("estadoTramite", " "); - } - - //Uso actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad",usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - //Tipo de documento - if(identificacion!=null){ - parameters.put("tipoDocumento", identificacion.getDescription()); - }else{ - parameters.put("tipoDocumento", " "); - } - //No documento - if(personaDetalle!=null){ - parameters.put("cedula", personaDetalle.getIdentification()); - }else{ - parameters.put("cedula", " "); - } - //Nombre razon social - if(personaDetalle!=null){ - parameters.put("nombreRazon", personaDetalle.getName()); - }else{ - parameters.put("nombreRazon", " "); - } - //Provincia - if(provincia !=null){ - parameters.put("provincia", provincia); - }else{ - parameters.put("provincia", " "); - } - //Canton - if(canton!=null){ - parameters.put("canton", canton); - }else{ - parameters.put("canton", " "); - } - //Ciudad - if(ciudad!=null){ - parameters.put("ciudad", ciudad); - }else{ - parameters.put("ciudad", " "); - } - //Direccion - if(direccion!=null){ - parameters.put("direccion",direccion); - }else{ - parameters.put("direccion", " "); - } - //Codigo de arma - parameters.put("codigoArma", this.record.getCarma()); - //Codigo de registro de TarmArmaPrueba - parameters.put("cArmaPrueba", record.getPk().toString()); - TarmArmas arma=(TarmArmas)this.record.getModifiedData().get("arma"); - TarmRegistroArmas regArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - TgeneCountry paisOrigen=CountryController.findcountry(regArma.getPaisorigen()); - //Clase - if(arma.getModifiedData().get("clase")!=null){ - parameters.put("clase", arma.getModifiedData().get("clase")==null?"":arma.getModifiedData().get("clase")); - }else{ - parameters.put("clase", " "); - } - //Obtniendo el tipo arma explosivo - TarmTipoArmaExplosivo tae=arma==null?null:TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - //Tipo arma - TgeneCatalogDetail tipoArma=tae==null?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getTipoarmaexplosivo(), "TIPOARMAEXPLOSIVO"); - parameters.put("tipoArma", (tipoArma==null || tipoArma.getDescription().isEmpty())?"": tipoArma.getDescription()); - //Serie - parameters.put("serie", (arma==null || arma.getLote()==null || arma.getLote().isEmpty())?"":arma.getLote()); - //Pais fabricacion - parameters.put("paisFabricacion", (paisOrigen==null)?"":(paisOrigen.getDescription())); - //Calibre - parameters.put("calibre", (arma.getModifiedData().get("calibre")==null)?"":arma.getModifiedData().get("calibre")); - //Longitud - TgeneCatalogDetail longitud=(tae==null || tae.getLongitud()==null || tae.getLongitudcodigo()==null || tae.getLongitud().isEmpty() || tae.getLongitudcodigo().isEmpty())?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getLongitud(),tae.getLongitudcodigo()); - if(longitud!=null && longitud.getDescription()!=null){ - parameters.put("longitud", longitud.getDescription()); - }else{ - parameters.put("longitud", " "); - } - //Marca - parameters.put("marca", arma.getModifiedData().get("marca")); - //Modelo - parameters.put("modelo", arma.getModelo()); - //Color - parameters.put("color", arma.getModifiedData().get("color")); - //Observacion - parameters.put("observacion", this.record.getObservacion()); - //Aptitud de disparo - String aptitudDisparo=" "; - if(this.record.getAptituddisparo().equalsIgnoreCase("Y")){ - aptitudDisparo="BUENO"; - }else{ - aptitudDisparo="MALO"; - } - parameters.put("aptitudDisparo", aptitudDisparo); - - //Balas testigo - String balasTestigo=" "; - if(this.record.getBalastestigo()!=null && this.record.getBalastestigo().equalsIgnoreCase("Y")){ - balasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else if(this.record.getBalastestigo()!=null){ - balasTestigo="NO"; - } - parameters.put("balasTestigo", balasTestigo); - - //Vainas testigo - String vainasTestigo=" "; - if(this.record.getVainastestigo()!=null && this.record.getVainastestigo().equalsIgnoreCase("Y")){ - vainasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else if(this.record.getVainastestigo()!=null){ - vainasTestigo="NO"; - } - parameters.put("vainasTestigo", vainasTestigo); - - //tubocanion - String tubocanion=" "; - if(this.record.getTubocanion()!=null && this.record.getTubocanion().equalsIgnoreCase("Y")){ - tubocanion=MsgControlArmas.getProperty("lbl_si"); - parameters.put("balasTestigo", tubocanion); - }else if(this.record.getTubocanion()!=null){ - tubocanion="NO"; - parameters.put("balasTestigo", tubocanion); - } - - - //Estado final - String estadoFinal=" "; - if(this.record.getApruebaevaluacion().equalsIgnoreCase("Y")){ - estadoFinal="APROBADA"; - }else{ - estadoFinal="REPROBADA"; - } - parameters.put("estadoFinal", estadoFinal); - //Codigo de persona - parameters.put("personcode",record.getPersoncode()); - //Codigo de arma - parameters.put("codArma", record.getCarma()); - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("personcode",responsableCentroControl.getPk().getPersoncode()); - parameters.put("gradoUsuario", gradoUsuario); - String format = "pdf"; - - this.xpathflujo = this.getRutaDocumento(); - filename = filename + this.record.getPk().toString(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - if(!this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo)){ - throw new Exception("ERROR AL CARGAR EL REPORTE"); - } - this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - this.record.getModifiedData().put("impresion",Boolean.TRUE); - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public List findPorSolicitud(String codigoSolicitud){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public static List buscarFichasPorSolicitud(String codigoSolicitud){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TarmArmaPruebas find(String codigoSolicitud, String carma){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("carma", carma); - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmArmaPruebas findByPk(String pk){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("pk", pk); - cc.querydatabaseArma(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public TarmArmas getArma() { - return arma; - } - - public void setArma(TarmArmas arma) { - this.arma = arma; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - public List getListadoArmasPruebas() { - return listadoArmasPruebas; - } - - public void setListadoArmasPruebas(List listadoArmasPruebas) { - this.listadoArmasPruebas = listadoArmasPruebas; - } - - - /** - * metodo que registra el cambio de la seleccion del recuperador balisitico y segun esto aprueba la evaluacion - */ - public void cambia(TarmArmaPruebas armaPruebas){ - record=null; - record=armaPruebas; - if("Y".equals(record.getAptituddisparo()) && "Y".equals(record.getVainastestigo()) && "Y".equals(record.getBalastestigo())){ - record.setApruebaevaluacion("Y"); - } - else{ - record.setApruebaevaluacion("N"); - } - habilitaButtom = true; - armaPruebas.modifiedData().put("GUARDA", "N"); - armaPruebas.modifiedData().put("IMPRIME", "N"); - record.modifiedData().put("GUARDA", "N"); - record.modifiedData().put("IMPRIME", "N"); - } - - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public boolean isHabilitaButtom() { - return habilitaButtom; - } - - public void setHabilitaButtom(boolean habilitaButtom) { - this.habilitaButtom = habilitaButtom; - } - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public boolean isDeshabilitadoGenerarReporte() { - return deshabilitadoGenerarReporte; - } - - public void setDeshabilitadoGenerarReporte(boolean deshabilitadoGenerarReporte) { - this.deshabilitadoGenerarReporte = deshabilitadoGenerarReporte; - } - - - public void changeApruebaEvaluacion(){ - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("NOLETAL")){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getTubocanion()!=null && "Y".equalsIgnoreCase(this.record.getTubocanion())) ){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - }else if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo()))){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - }else{ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getBalastestigo()!=null && "Y".equalsIgnoreCase(this.record.getBalastestigo())) && - (this.record.getVainastestigo()!=null && "Y".equalsIgnoreCase(this.record.getVainastestigo()))){ - this.record.setApruebaevaluacion("Y"); - }else{ - this.record.setApruebaevaluacion("N"); - } - } - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public TcustPersonAddress getDireccionCliente() { - return direccionCliente; - } - - public void setDireccionCliente(TcustPersonAddress direccionCliente) { - this.direccionCliente = direccionCliente; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - public List getTarmArmaPruebasList() { - return tarmArmaPruebasList; - } - - public void setTarmArmaPruebasList(List tarmArmaPruebasList) { - this.tarmArmaPruebasList = tarmArmaPruebasList; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public String getTramiteingresado() { - return tramiteingresado; - } - - public void setTramiteingresado(String tramiteingresado) { - this.tramiteingresado = tramiteingresado; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/IngresoFichaTecnicaArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/IngresoFichaTecnicaArmasController.java.svn-base deleted file mode 100644 index e5c44f7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/IngresoFichaTecnicaArmasController.java.svn-base +++ /dev/null @@ -1,1328 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * - * Controlador que administra la ficha tecnica de armas - * @author Carlos Guzman - * - */ -@ManagedBean -@ViewScoped -public class IngresoFichaTecnicaArmasController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 8843091476010012919L; - - /** - * Controlador que maneja alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - private TarmArmas arma = new TarmArmas(); - - private String editarReg; - - private String codigoSolicitud; - - private boolean habilitaButtom; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - private List listadoArmasPruebas = new ArrayList<>(); - - private String observacion; - - private String estado; - - private Date fec_actual; - - private String formato; - - private String xpathflujo; - - private TcustPersonDetail responsableCentroControl= null; - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - private Boolean btnFlujo; - - private List tarmArmaPruebasList; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private boolean deshabilitadoGenerarReporte=true; - - private TarmSolicitud solicitud; - private TarmSolicitudTramite solicitudTramite; - private TarmTramite tramite; - private TcustPersonAddress direccionCliente; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private TgeneCatalogDetail estadotramite; - private TgeneCatalogDetail usoActividad; - private TcustPersonDetail personaDetalle; - private TgeneCatalogDetail identificacion; - private TgeneCatalogDetail detallecatalogoTipoTramite; - private TgeneCatalogDetail detallecatalogo; - /*** - * Bandera para saber el tramite seleccionano, NOLETAL,COLECCION,.. - * @throws Exception - */ - private String tramiteingresado; - - public IngresoFichaTecnicaArmasController() throws Exception { - super(TarmArmaPruebas.class); - } - - @PostConstruct - private void postconstruct() { - System.out.println("postconstruct"); - try { - startQuery(); - this.init(); - laccion=CatalogDetailController.find("ACCION"); - if(codigoSolicitud!=null){ - caragarArmas(); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - - } - } - - public void startQuery() { - System.out.println("startQuery"); - try { - this.pasteBpmScreenParameters(); - codigoSolicitud=super.getMfilters().get("csolicitud");//"1012";//2656 - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - System.out.println("init"); - recperpage = 3000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "INGRESOFICHAARMAS"; - try { - if(this.obtenerCentroControl()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_centrocontrol")); - return; - } - - solicitud=SolicitudController.findSolicitudxcodsolicitud(codigoSolicitud); - //VALIDA EL tramite seleccionado - this.validarTramite(); - solicitudTramite=SolicitudTramiteController.findByCSolicitud(codigoSolicitud); - tramite=TarmTramiteController.find(solicitud.getCtramite()+""); - direccionCliente=PersonAddressController.find(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - - record=new TarmArmaPruebas(); - this.fec_actual = new Date(); - this.habilitaButtom = true; - this.responsableCentroControl = new TcustPersonDetail(); - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.obtenerResponsableCentroControl(); - btnFlujo=Boolean.FALSE; - } catch (Exception e) { - e.printStackTrace(); - } - } - - private void validarTramite(){ - tramiteingresado = "OTROS"; - TgeneParameters parametrofichanoletal=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametrofichanoletal!=null && parametrofichanoletal.getTextvalue()!=null && !parametrofichanoletal.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichanoletal.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "NOLETAL"; - } - } - } - TgeneParameters parametrofichacoleccion=ParametersController.find("CODIGO.FICHACOLECCION", "1"); - if(parametrofichacoleccion!=null && parametrofichacoleccion.getTextvalue()!=null && !parametrofichacoleccion.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichacoleccion.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "COLECCION"; - } - } - } - } - - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - private void querydatabaseArma(){ - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void caragarArmas() { - try { - List listaSolicitudArmas = RecepcionArmasController.findPorSolicitudTodas(codigoSolicitud); - tarmArmaPruebasList = new ArrayList<>(); - for (TarmSolicitudArmas solicitudArmas : listaSolicitudArmas) { - TarmArmaPruebas armaPrueba = find(codigoSolicitud,solicitudArmas.getPk().getCarma()); - if (armaPrueba != null) { - armaPrueba.getModifiedData().put("tarmArmarecordPruebas", armaPrueba); - // - TarmArmas tarmArma = ArmasController.find(solicitudArmas.getPk().getCarma(), null); - armaPrueba.modifiedData().put("arma",tarmArma!=null?tarmArma:new TarmArmas()); - armaPrueba.modifiedData().put("impresion",Boolean.FALSE); - tarmArmaPruebasList.add(armaPrueba); - } else { - this.create(); - record.getModifiedData().put("tarmArmaPruebas", armaPrueba); - this.record.setCarma(solicitudArmas.getPk().getCarma()); - this.record.setCsolicitud(codigoSolicitud); - this.record.setPersoncode(solicitudArmas.getPk().getPersoncode()); - this.record.isnew = true; - // - TarmArmas tarmArma = ArmasController.find(solicitudArmas.getPk().getCarma(), null); - record.modifiedData().put("arma",tarmArma!=null?tarmArma:new TarmArmas()); - record.modifiedData().put("impresion",Boolean.FALSE); - tarmArmaPruebasList.add(record); - } - } - } catch (Throwable e) { - e.printStackTrace(); - } - } - - @Override - public void save() { - try { - if(cargarArchivo()){ - return; - } - // Validacion para cambio de estado de arma a estado aprobada - TarmArmas tarmArmaObj = ArmasController.find(record.getCarma(), null); - if(record.getApruebaevaluacion().equals("Y")){ - String estadoarma="APTA"; - System.out.println("solicitud.getCtramite() "+solicitud.getCtramite()); - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - estadoarma="COLE"; - } - tarmArmaObj.setEstado(estadoarma); - if(armas.getMfilters().get("csolicitud")!=null){ - armas.getMfilters().remove("csolicitud"); - } - armas.update(tarmArmaObj); - armas.save(); - }else if(record.getApruebaevaluacion().equals("N")){ - tarmArmaObj.setEstado("NAPT"); - armas.update(tarmArmaObj); - armas.save(); - } - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(2); - msave.put(beanalias, dtosave); - request.setSaveTables(msave); - - DtoSave dtoSaveArma = armas.getDtoSave(); - dtoSaveArma.setIsForm(Boolean.TRUE); - dtoSaveArma.setReturnpk(Boolean.TRUE); - dtoSaveArma.setPosition(1); - msave.put(armas.getBeanalias(), dtoSaveArma); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - record.modifiedData().put("GUARDA", "S"); - MessageHelper.setMessageInfo(resp); - } else { - record.modifiedData().put("GUARDA", "N"); - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - record.modifiedData().put("GUARDA", "N"); - MessageHelper.setMessageError(e); - } - } - - public void uploadImpronta(FileUploadEvent event) { - record.modifiedData().put("FileUploadImpronta", event.getFile()); - } - - public void uploadFoto(FileUploadEvent event) { - record.modifiedData().put("FileUploadFoto", event.getFile()); - } - - /** - * Metodo invocado al cerrar el dialogo del registro de la ficha tecnica de las armas - * @throws Exception - */ - public Boolean cargarArchivo() throws Exception { - Boolean msgArchivos=Boolean.FALSE; - //Impronta - UploadedFile uploadedFileImpronta=null; - if(record.modifiedData().get("FileUploadImpronta")!=null){ - uploadedFileImpronta= (UploadedFile)record.modifiedData().get("FileUploadImpronta"); - }else{ - MessageHelper.setMessageError("INGRESE LA IMPRONTA"); - msgArchivos=Boolean.TRUE; - } - //FOTO - UploadedFile uploadedFoto=null; - if(record.modifiedData().get("FileUploadFoto")!=null){ - uploadedFoto= (UploadedFile)record.modifiedData().get("FileUploadFoto"); - }else{ - MessageHelper.setMessageError("INGRESE LA FOTO"); - msgArchivos=Boolean.TRUE; - } - if(msgArchivos){ - return msgArchivos; - } - String xPathLocation= getRutaDocumento(); - String xphat1=uploadedFoto.getFileName(); - if(xphat1.length()<9){ - xphat1="DOCUMENTO-"+xphat1; - } - if(alfrescoController.uploadFile(uploadedFoto.getInputstream(),xphat1, xPathLocation+ "/cm:fotografia")){ - record.setXpathfotografia(xPathLocation + "/cm:fotografia/cm:" + xphat1); - record.setImagenfotografia(uploadedFoto.getContents()); - }else{ - MessageHelper.setMessageError("ERROR AL CARGAR LA FOTO"); - return Boolean.TRUE; - } - String xphat2=uploadedFileImpronta.getFileName(); - if(xphat2.length()<9){ - xphat2="DOCUMENTO-"+xphat2; - } - if(alfrescoController.uploadFile(uploadedFileImpronta.getInputstream(),xphat2, xPathLocation+ "/cm:impronta")){ - record.setXpathimpronta(xPathLocation + "/cm:impronta/cm:" + xphat2); - this.record.setImagenimpronta(uploadedFileImpronta.getContents()); - }else{ - MessageHelper.setMessageError("ERROR AL CARGAR LA IMPRONTA"); - return Boolean.TRUE; - } - record.modifiedData().remove("FileUploadImpronta"); - record.modifiedData().remove("FileUploadFoto"); - super.update(); - this.habilitaButtom = false; - return msgArchivos; - } - - - public void verificarPuedeGenerarReporte(){ - for(TarmArmaPruebas tarmArmaPruebas:this.tarmArmaPruebasList){ - //IMPRIME record.modifiedData().get("IMPRIME").equals("S") - if(tarmArmaPruebas.getPk()==null ||tarmArmaPruebas.getImagenfotografia()==null||tarmArmaPruebas.getImagenimpronta()==null - ||tarmArmaPruebas.getXpathfichatecarmas()==null - || tarmArmaPruebas.getIsimpreso()==null || !tarmArmaPruebas.getIsimpreso().equalsIgnoreCase("Y")){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("lbl_impresionarma1") + tarmArmaPruebas.getCarma() + MsgControlArmas.getProperty("lbl_impresionarma2")); - deshabilitadoGenerarReporte = true; - return; - } - } - deshabilitadoGenerarReporte = false; - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(deshabilitadoGenerarReporte && !btnFlujo){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo para armar la ruta del documento - * @return - */ - public String getRutaDocumento() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append( - (calendar.get(Calendar.MONTH) + 1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH) + 1)); - ruta = ruta.append("/cm:D-").append( - (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); - TarmSolicitud solicitud = SolicitudArmasController.find(codigoSolicitud); - ruta = ruta.append("/cm:").append(solicitud.getNumerosolicitud()); - ruta = ruta.append("/cm:").append("armas"); - return ruta.toString(); - } - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void habilitarBoton() { - this.habilitaButtom = true; - } - - - /** - * Metodo que indica si se debe habilitar el boton del pantalla ficha tecnica - */ - public void cerrar() { - if(record.modifiedData().get("GUARDA")!=null && record.modifiedData().get("GUARDA").equals("S") && - record.modifiedData().get("IMPRIME")!=null && record.modifiedData().get("IMPRIME").equals("S") ){ - }else{ - MessageHelper.setMessageError("GUARDE Y GENERE EL REPORTE"); - } - } - - - /** - * Ejecuta reporte de registro balistico - * - */ - public void reporteRegistroBalistico() { - try { - String gradoUsuario =""; - String path = "armas/reports/registroBalistico"; - String filename=MsgControlArmas.getProperty("lbl_registroBalistico"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - //Logos - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Obteniendo la solicitud - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - - //Codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - - //Fecha de solicitud - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - - //Obteniendo los datos del tramite - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - TgeneCatalogDetail tipoTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail categoria=CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TarmSolicitudTramite solicitudTramite=SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - TgeneCatalogDetail tipoAutorizacion=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail usoActividad=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - - //Tipo de tramite - if(tipoTramite!=null && tipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", tipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - - //Categoria - if(categoria!=null && categoria.getDescription()!=null){ - parameters.put("categoria", categoria.getDescription()); - }else{ - parameters.put("categoria", " "); - } - - //No tramite - if(solicitudTramite!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de autorizacion - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription()!=null){ - parameters.put("tipoAutorizacion", tipoAutorizacion.getDescription()); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Uso-actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad", usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - TcustPersonDetail person = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - //Fecha - parameters.put("fechaActual", sdf.format(this.fec_actual)); - parameters.put("fecActualHora", new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss").format(this.fec_actual)); - parameters.put("personCode", person.getPk().getPersoncode()); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - String format = this.formato; - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - btnFlujo=Boolean.TRUE; - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - - public void saveImprimir() { - try { - if(!record.modifiedData().get("GUARDA").equals("S")){ - MessageHelper.setMessageError("GUARDE LA FICHA PARA GENERAR EL REPORTE"); - return; - } - reporteFichaArmas(); - record.setIsimpreso("Y"); - update(); - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - request.setSaveTables(msave); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - msave.put(beanalias, dtosave); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - record.modifiedData().put("IMPRIME", "S"); - MessageHelper.setMessageInfo(resp); - } else { - record.modifiedData().put("IMPRIME", "N"); - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - record.modifiedData().put("IMPRIME", "N"); - MessageHelper.setMessageError(e); - } - } - /** - * Obtiene el reporte de Ficha de Armas - * @throws Exception - */ - public void reporteFichaArmas() throws Exception { - String gradoUsuario =""; - String path = "armas/reports/fichaTecArmas"; - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("NOLETAL")){ - path = "armas/reports/fichaTecArmasNoLetales"; - } - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - path = "armas/reports/fichaTecArmasColeccion"; - } - - String filename=MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fechaActual", sdf.format(this.fec_actual)); - //Fecha de solicitud - if(solicitud!=null && solicitud.getFregistro()!=null){ - parameters.put("fechaSolicitud", sdf.format(solicitud.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - //No tramite - if(solicitudTramite!=null && solicitudTramite.getNumerotramite()!=null){ - parameters.put("noTramite", solicitudTramite.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramites - if(detallecatalogoTipoTramite!=null && detallecatalogoTipoTramite.getDescription()!=null){ - parameters.put("tipoTramite", detallecatalogoTipoTramite.getDescription()); - }else{ - parameters.put("tipoTramite", " "); - } - //Estado tramite - if(estadotramite!=null && estadotramite.getDescription()!=null){ - parameters.put("estadoTramite", estadotramite.getDescription()); - }else{ - parameters.put("estadoTramite", " "); - } - - //Uso actividad - if(usoActividad!=null && usoActividad.getDescription()!=null){ - parameters.put("usoActividad",usoActividad.getDescription()); - }else{ - parameters.put("usoActividad", " "); - } - //Tipo de documento - if(identificacion!=null){ - parameters.put("tipoDocumento", identificacion.getDescription()); - }else{ - parameters.put("tipoDocumento", " "); - } - //No documento - if(personaDetalle!=null){ - parameters.put("cedula", personaDetalle.getIdentification()); - }else{ - parameters.put("cedula", " "); - } - //Nombre razon social - if(personaDetalle!=null){ - parameters.put("nombreRazon", personaDetalle.getName()); - }else{ - parameters.put("nombreRazon", " "); - } - //Provincia - if(provincia !=null){ - parameters.put("provincia", provincia); - }else{ - parameters.put("provincia", " "); - } - //Canton - if(canton!=null){ - parameters.put("canton", canton); - }else{ - parameters.put("canton", " "); - } - //Ciudad - if(ciudad!=null){ - parameters.put("ciudad", ciudad); - }else{ - parameters.put("ciudad", " "); - } - //Direccion - if(direccion!=null){ - parameters.put("direccion",direccion); - }else{ - parameters.put("direccion", " "); - } - //Codigo de arma - parameters.put("codigoArma", this.record.getCarma()); - //Codigo de registro de TarmArmaPrueba - parameters.put("cArmaPrueba", record.getPk().toString()); - TarmArmas arma=(TarmArmas)this.record.getModifiedData().get("arma"); - TarmRegistroArmas regArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - TgeneCountry paisOrigen=CountryController.findcountry(regArma.getPaisorigen()); - //Clase - if(arma.getModifiedData().get("clase")!=null){ - parameters.put("clase", arma.getModifiedData().get("clase")==null?"":arma.getModifiedData().get("clase")); - }else{ - parameters.put("clase", " "); - } - //Obtniendo el tipo arma explosivo - TarmTipoArmaExplosivo tae=arma==null?null:TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - //Tipo arma - TgeneCatalogDetail tipoArma=tae==null?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getTipoarmaexplosivo(), "TIPOARMAEXPLOSIVO"); - parameters.put("tipoArma", (tipoArma==null || tipoArma.getDescription().isEmpty())?"": tipoArma.getDescription()); - //Serie - parameters.put("serie", (arma==null || arma.getLote()==null || arma.getLote().isEmpty())?"":arma.getLote()); - //Pais fabricacion - parameters.put("paisFabricacion", (paisOrigen==null)?"":(paisOrigen.getDescription())); - //Calibre - parameters.put("calibre", (arma.getModifiedData().get("calibre")==null)?"":arma.getModifiedData().get("calibre")); - //Longitud - TgeneCatalogDetail longitud=(tae==null || tae.getLongitud()==null || tae.getLongitudcodigo()==null || tae.getLongitud().isEmpty() || tae.getLongitudcodigo().isEmpty())?null:CatalogDetailController.findxCodigoCodcatalogo(tae.getLongitud(),tae.getLongitudcodigo()); - if(longitud!=null && longitud.getDescription()!=null){ - parameters.put("longitud", longitud.getDescription()); - }else{ - parameters.put("longitud", " "); - } - //Marca - parameters.put("marca", arma.getModifiedData().get("marca")); - //Modelo - parameters.put("modelo", arma.getModelo()); - //Color - parameters.put("color", arma.getModifiedData().get("color")); - //Observacion - parameters.put("observacion", this.record.getObservacion()); - //Aptitud de disparo - String aptitudDisparo=" "; - if(this.record.getAptituddisparo().equalsIgnoreCase("Y")){ - aptitudDisparo="BUENO"; - }else{ - aptitudDisparo="MALO"; - } - parameters.put("aptitudDisparo", aptitudDisparo); - - //Balas testigo - String balasTestigo=" "; - if(this.record.getBalastestigo()!=null && this.record.getBalastestigo().equalsIgnoreCase("Y")){ - balasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else if(this.record.getBalastestigo()!=null){ - balasTestigo="NO"; - } - parameters.put("balasTestigo", balasTestigo); - - //Vainas testigo - String vainasTestigo=" "; - if(this.record.getVainastestigo()!=null && this.record.getVainastestigo().equalsIgnoreCase("Y")){ - vainasTestigo=MsgControlArmas.getProperty("lbl_si"); - }else if(this.record.getVainastestigo()!=null){ - vainasTestigo="NO"; - } - parameters.put("vainasTestigo", vainasTestigo); - - //tubocanion - String tubocanion=" "; - if(this.record.getTubocanion()!=null && this.record.getTubocanion().equalsIgnoreCase("Y")){ - tubocanion=MsgControlArmas.getProperty("lbl_si"); - parameters.put("balasTestigo", tubocanion); - }else if(this.record.getTubocanion()!=null){ - tubocanion="NO"; - parameters.put("balasTestigo", tubocanion); - } - - - //Estado final - String estadoFinal=" "; - if(this.record.getApruebaevaluacion().equalsIgnoreCase("Y")){ - estadoFinal="APROBADA"; - }else{ - estadoFinal="REPROBADA"; - } - parameters.put("estadoFinal", estadoFinal); - //Codigo de persona - parameters.put("personcode",record.getPersoncode()); - //Codigo de arma - parameters.put("codArma", record.getCarma()); - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("personcode",responsableCentroControl.getPk().getPersoncode()); - parameters.put("gradoUsuario", gradoUsuario); - String format = "pdf"; - - this.xpathflujo = this.getRutaDocumento(); - filename = filename + this.record.getPk().toString(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - if(!this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo)){ - throw new Exception("ERROR AL CARGAR EL REPORTE"); - } - this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - this.record.getModifiedData().put("impresion",Boolean.TRUE); - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public List findPorSolicitud(String codigoSolicitud){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de armaPrueba encontrado - */ - public static List buscarFichasPorSolicitud(String codigoSolicitud){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TarmArmaPruebas find(String codigoSolicitud, String carma){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("carma", carma); - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabaseArma(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmArmaPruebas findByPk(String pk){ - try { - IngresoFichaTecnicaArmasController cc = new IngresoFichaTecnicaArmasController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("pk", pk); - cc.querydatabaseArma(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public TarmArmas getArma() { - return arma; - } - - public void setArma(TarmArmas arma) { - this.arma = arma; - } - - public String getEditarReg() { - return editarReg; - } - - public void setEditarReg(String editarReg) { - this.editarReg = editarReg; - } - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - public List getListadoArmasPruebas() { - return listadoArmasPruebas; - } - - public void setListadoArmasPruebas(List listadoArmasPruebas) { - this.listadoArmasPruebas = listadoArmasPruebas; - } - - - /** - * metodo que registra el cambio de la seleccion del recuperador balisitico y segun esto aprueba la evaluacion - */ - public void cambia(TarmArmaPruebas armaPruebas){ - record=null; - record=armaPruebas; - if("Y".equals(record.getAptituddisparo()) && "Y".equals(record.getVainastestigo()) && "Y".equals(record.getBalastestigo())){ - record.setApruebaevaluacion("Y"); - } - else{ - record.setApruebaevaluacion("N"); - } - habilitaButtom = true; - armaPruebas.modifiedData().put("GUARDA", "N"); - armaPruebas.modifiedData().put("IMPRIME", "N"); - record.modifiedData().put("GUARDA", "N"); - record.modifiedData().put("IMPRIME", "N"); - } - - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public boolean isHabilitaButtom() { - return habilitaButtom; - } - - public void setHabilitaButtom(boolean habilitaButtom) { - this.habilitaButtom = habilitaButtom; - } - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public Date getFec_actual() { - return fec_actual; - } - - public void setFec_actual(Date fec_actual) { - this.fec_actual = fec_actual; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public boolean isDeshabilitadoGenerarReporte() { - return deshabilitadoGenerarReporte; - } - - public void setDeshabilitadoGenerarReporte(boolean deshabilitadoGenerarReporte) { - this.deshabilitadoGenerarReporte = deshabilitadoGenerarReporte; - } - - - public void changeApruebaEvaluacion(){ - if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("NOLETAL")){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getTubocanion()!=null && "Y".equalsIgnoreCase(this.record.getTubocanion())) ){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - }else if(tramiteingresado!=null && !tramiteingresado.trim().isEmpty() && tramiteingresado.equals("COLECCION")){ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo()))){ - this.record.setApruebaevaluacion("Y"); - } - else{ - this.record.setApruebaevaluacion("N"); - } - }else{ - if(this.record.getAptituddisparo()!=null && ("Y".equalsIgnoreCase(this.record.getAptituddisparo())) && - (this.record.getBalastestigo()!=null && "Y".equalsIgnoreCase(this.record.getBalastestigo())) && - (this.record.getVainastestigo()!=null && "Y".equalsIgnoreCase(this.record.getVainastestigo()))){ - this.record.setApruebaevaluacion("Y"); - }else{ - this.record.setApruebaevaluacion("N"); - } - } - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TsafeUserDetail getTsafeUserDetailUsuario() { - return tsafeUserDetailUsuario; - } - - public void setTsafeUserDetailUsuario(TsafeUserDetail tsafeUserDetailUsuario) { - this.tsafeUserDetailUsuario = tsafeUserDetailUsuario; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public TcustPersonAddress getDireccionCliente() { - return direccionCliente; - } - - public void setDireccionCliente(TcustPersonAddress direccionCliente) { - this.direccionCliente = direccionCliente; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - public List getTarmArmaPruebasList() { - return tarmArmaPruebasList; - } - - public void setTarmArmaPruebasList(List tarmArmaPruebasList) { - this.tarmArmaPruebasList = tarmArmaPruebasList; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public String getTramiteingresado() { - return tramiteingresado; - } - - public void setTramiteingresado(String tramiteingresado) { - this.tramiteingresado = tramiteingresado; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionArchivoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionArchivoController.java.svn-base deleted file mode 100644 index 1ee661e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionArchivoController.java.svn-base +++ /dev/null @@ -1,161 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmInspeccion; -import com.fp.persistence.parmas.soli.TarmInspeccionArchivo; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class InspeccionArchivoController extends AbstractController { - - public InspeccionArchivoController() throws Exception { - super(TarmInspeccionArchivo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "INSPECCIONARCHIVO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.cinspeccion"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para encontrar por codigo de inspeccion - * @param codigoSolicitud - * @return registro de archivo inspeccion encontrado - */ - public static List findPorInspeccion(String codigoInspeccion){ - try { - InspeccionArchivoController cc = new InspeccionArchivoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cinspeccion", codigoInspeccion); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que encuentra los archivos de inspeccion por codigo de solicitud - * @param codigoSolicitud - * @return una lista de archivos que cumplen todos los criterios de busqueda - */ - public static List findPorSolicitud(String codigoSolicitud){ - try { - List lInspeccion = InspeccionController.findPorSolicitud(codigoSolicitud); - List lInspeccionArchivo = new ArrayList<>(); - for(TarmInspeccion inspeccion:lInspeccion){ - List lInspeccionesArchivoEncontradas = findPorInspeccion(String.valueOf(inspeccion.getPk())); - if(lInspeccionesArchivoEncontradas!=null && !lInspeccionesArchivoEncontradas.isEmpty()){ - lInspeccionArchivo.addAll(lInspeccionesArchivoEncontradas); - } - } - return lInspeccionArchivo; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionCambioArchivoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionCambioArchivoController.java.svn-base deleted file mode 100644 index f6e62e1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionCambioArchivoController.java.svn-base +++ /dev/null @@ -1,248 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmInspeccionArchivo; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmInspeccionArchivo. - * Se reemplaza el archivo de inspeccion, se filtra por el codigo de solicitud - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class InspeccionCambioArchivoController extends AbstractController { - - public InspeccionCambioArchivoController() throws Exception { - super(TarmInspeccionArchivo.class); - } - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "INSPECCIONARCHIVO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(getMfilelds().get("codigosolicitud")==null && - getMfilelds().get("codigosolicitud").toString().trim().isEmpty()){ - MessageHelper.setMessageError("Ingrese el cdigo de solicitud"); - return; - } - DtoQuery dto = super.getDtoQuery(true); - - Filter filtroFinal = new Filter(); - String sqlFinal = " t.cinspeccion in (select p.pk from TarmInspeccion p where p.csolicitud in " - + "(select s.pk from TarmSolicitud s where s.numerosolicitud='"+getMfilelds().get("codigosolicitud").toString().trim()+"' )) "; - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - - dto.setOrderby("t.cinspeccion"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - for (TarmInspeccionArchivo item : lrecord) { - item.getModifiedData().put("codigosolicitud", getMfilelds().get("codigosolicitud").toString().trim()); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try { - String pathRuta=""; - - String xPathLocation= getRutaDocumentoSolBase(record.getXpath()); - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String nombreArchivo = uploadedFile.getFileName(); - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - pathRuta=xPathLocation + "/cm:" + nombreArchivo; - record.setXpathoriginal(record.getXpath()); - record.setXpath(pathRuta); - TsafeUserDetail userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - record.setUsuariocambio(userDetail.getNickname()); - super.update(); - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String xpath) { - int index = xpath.lastIndexOf('/'); - xpath = xpath.substring(0,index); - xpath = xpath+"/cm:Cambio"; - System.out.println(xpath); - return xpath; - } - - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getNombre(String ruta) { - int index = ruta.lastIndexOf('/'); - if (index == -1) { - return "cambiodocumento.jpg"; - } else { - return (ruta.substring(index + 1)).replace("cm:", ""); - } - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionController.java.svn-base deleted file mode 100644 index edba8d2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InspeccionController.java.svn-base +++ /dev/null @@ -1,160 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.soli.TarmInspeccion; - -/** - * Clase controladora del bean TgeneInspeccion. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class InspeccionController extends AbstractController { - - - public InspeccionController() throws Exception { - super(TarmInspeccion.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "INSPECCION"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para encontrar por codigo de solicitud - * @param codigoSolicitud - * @return registro de inspeccion encontrado - */ - public static List findPorSolicitud(String codigoSolicitud){ - try { - InspeccionController cc = new InspeccionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("csolicitud", codigoSolicitud); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo que encuentra TarmInspeccion por year y por centro de control - * @param codigoSolicitud - * @return - */ - public static List findPorAnno(String centro, String year) { - try { - InspeccionController cc = new InspeccionController(); - cc.init(); - cc.recperpage = 300; - if(year != null){ - cc.addFilter("anno", year); - } - cc.addFilter("centrocontrol", centro); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; -// if (cc.record != null) { -// return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InventariosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InventariosController.java.svn-base deleted file mode 100644 index 2eb8405..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/InventariosController.java.svn-base +++ /dev/null @@ -1,2239 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.Map.Entry; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang3.StringUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; -import org.primefaces.extensions.component.inputnumber.InputNumber; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.ArmaExplosivoLovController; -import com.fp.frontend.controller.armas.lov.CargasLovController; -import com.fp.frontend.controller.armas.parametros.CalibreLovController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.InventarioSubidoController; -import com.fp.frontend.controller.armas.parametros.LongitudLovController; -import com.fp.frontend.controller.armas.parametros.TipoArmaExpLovController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.utility.ValidateIdentification; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersona; -import com.fp.persistence.parmas.fun.TarmInventarioSubidoPorPersonaKey; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal de armas - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class InventariosController extends AbstractController { - - private Boolean estadoDesaduanizado = Boolean.FALSE; - private Boolean esNuevaImportacion = Boolean.TRUE; - private String filterAUCP; - //P lpartidaArancelaria=new ArrayList<>(); - private TarmCarga carga = new TarmCarga(); - private Boolean isSelectAucpPrevio = Boolean.FALSE; - private Boolean isSave=Boolean.FALSE; - private Boolean isEnableCategoria = Boolean.TRUE; - InputNumber cantidadTxt = new InputNumber(); - List ldeleteItems = new ArrayList(); - - @ManagedProperty(value = "#{tiposArmasExplosivosController}") - private TiposArmasExplosivosController tiposArmasExplosivosController; - - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - // Datos generales - private TgeneCatalogDetail tipoDocumento; - private TcustPersonDetail detallesPersona; - // Catalogo que contiene tipos de registros - private List tiposRegistro; - private TcustPersonDetail usuario; - -// private String tipoRegistro; - - //Registro armas - TarmRegistroArmas registro=new TarmRegistroArmas(); - - //Detalle de localizacion para el caso de importaciones - private List lpaises; -// private TgeneCountry pais; - //private String pais; - - //Provincia - private List lprovincias; - private String codigoProvincia; - - //Canton - private List lcantones; - private String codigoCanton; - - //Ciudad - private List lciudades; -// private TgeneCity ciudad; - - //Aeropuertos - private List laeropuertos=new ArrayList<>(); - - private List ldocumentospersona; - -// /** -// * Lista de tipos de identificación -// */ -// private List ltipoidentificacion; - /** - * Listado de estados del arma - */ - private List lestadoarma; - /** - * Listado de marcas - */ - private List lmarca; - /** - * Listado de colores - */ - private List lcolor; - /** - * Listado de tipos de fabricación - */ - private List ltipofabricacion; - /** - * Listado de unidad de medida cantidad - */ - private List lunidadmedidacantidad; - /** - * Listado de unidad medida peso - */ - private List lunidadmedidapeso; -// /** -// * Listado de paises -// */ -// private List lcountry; -// /** -// * Listado de provincias -// */ -// private List lprovincias; -// /** -// * Listado de cantones -// */ -// private List lcantones; - /** - * Listado de parroquias - */ - private List lparroquias; - /** - * Listado de ciudades - */ - private List lcities; - -// /** -// * Tipo documento -// */ -// private String tipoDoc; - -// /** -// * Número documento -// */ -// private String numDoc; - -// /** -// * Nombre/razón social -// */ -// private String nombreRazon; - - /** - * Longitud arma - */ - private String longitud; - /** - * Calibre arma - */ - private String calibre; - /** - * Clase arma - */ - private String clase; - /** - * Clase arma - */ - private String categoria; - /** - * Tipo de arma - */ - private String tipoarma; - /** - * unidad medida peso - */ - private String unidadmedidapeso; - - /** - * Bandera que indica que en realidad existe luego del ingreso de datos un tipo de arma explosivo válido - */ - private boolean existeTipoArmaExplosivo; - - /** - * Bandera que especifica que se deba verificar que exista un arma explosivo válido - */ - private boolean verificaArmaExplosivo = Boolean.TRUE; - - /** - * Bloquea la unidad de cantidad - */ - private boolean bloquearUnidadCantidad = Boolean.TRUE; - - /** - * Bloquea la unidad de peso - */ - private boolean bloquearUnidadPeso = Boolean.TRUE; - /** - * Contiene la fecha actual del sistema - */ - private Date fechaActual; - /** - * Contiene la referencia a nuevo propietario del arma - */ - private TcustPersonDetail nuevoPropietarioArma; - /** - * Tipo del arma explosivo - */ - private TarmTipoArmaExplosivo tipoArmaExplosivo ; - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - /** - * codigo del ruc - */ - private String codigoPasaporte; - - public InventariosController() throws Exception { - super(TarmArmas.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - carga.setIsnew(Boolean.TRUE); - //Localizacion - lpaises=CountryController.find(); - this.lprovincias=ProvinceController.find("EC"); - //Obteniendo los aeropuertos - this.laeropuertos=CatalogDetailController.find("AEROPUERTOS"); - this.lpartidaArancelaria=CatalogDetailController.find("PARTIDAARANCELARIA"); - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - detallesPersona= PersonDetailController.find(String.valueOf(usuario.getPk().getPersoncode())); - //Tipo de documento - tipoDocumento = CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(),detallesPersona.getIdentificationcatalogcode()); - //Tipos de registro -// tiposRegistro=CatalogDetailController.find("TIPOREGISTRO", "REG"); - //Tipos de registro - ListtiposRegistroAux = CatalogDetailController.find("TIPOREGISTRO", "REG"); - tiposRegistro = new ArrayList(); - for(TgeneCatalogDetail tipoReg : tiposRegistroAux){ - if(tipoReg.getPk().getCatalog().equalsIgnoreCase("PRO")){ - tiposRegistro.add(tipoReg); - } - } - - fechaActual = new Date(); - recperpage = 5000; // Cambiar al # reg a mirar. -// record = new TarmArmas(); - lrecord = new ArrayList<>(); - beanalias = "ARMAS"; -// ltipoidentificacion = CatalogDetailController.find("IDENTIFICATION"); - lestadoarma = CatalogDetailController.find("ESTADOARMA"); - lmarca = CatalogDetailController.find("MARCA"); - lcolor = CatalogDetailController.find("COLOR"); - ltipofabricacion = CatalogDetailController.find("TIPOFABRICACION"); -// lunidadmedidacantidad = CatalogDetailController.find("UCANTIDAD"); - lunidadmedidapeso = CatalogDetailController.find("UNIDADMEDIDA"); -// lcountry = CountryController.find(); - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cargarCategorias(){ - // Cargamos la lista de categorias disponibles para el usuario (en funcion de sus documentos habilitantes) - ldocumentospersona= new ArrayList<>(); - List listadocum= new ArrayList<>(); - if(registro.getTiporegistro()!=null){ - if("PRO".equals(registro.getTiporegistro())){ - listadocum=DocumentoHabilitanteController.findByPerson_Inventario(usuario.getPk().getPersoncode().toString()); - carga=new TarmCarga(); - carga.setIsnew(Boolean.TRUE); - registro.setIsnew(Boolean.TRUE); - } - }else{ - ldocumentospersona=new ArrayList<>(); - } - //Forma numero 1 (Uso de Maps). - Map mapaSinRepetidos = new HashMap(listadocum.size()); - for(TarmDocumentoHabilitante p : listadocum) { - mapaSinRepetidos.put(p.getCtramite(), p); - } - //Agrego cada elemento del map a una nueva lista y muestro cada elemento. - for(Entry p : mapaSinRepetidos.entrySet()) { - ldocumentospersona.add(p.getValue()); - } - } - - public void validarCategoria(){ - String tipoCarga = "INV"; - List cargaLst = CargaController.findXPersonaYCategoria(this.usuario.getPk().getPersoncode().toString(), categoria, tipoCarga); - if(cargaLst!=null){ -// isEnableCategoria = Boolean.FALSE; - isSave = Boolean.TRUE; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_inventarioCargadoPreviamente")); - return; - }else{ -// isEnableCategoria = Boolean.TRUE; - isSave = Boolean.FALSE; - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - String sqlFiltroPersona = ""; - String sqlFiltroSancion = ""; - String sqlFiltroEstados = ""; - String sqlFiltroClaseArmas = ""; -// String sqlFiltroFechaCaducidad = ""; - String sqlFiltroValidacionArma = "";//si entre los estados existe renovacion entonces validamos que no pueda seleccionar las mismas armas - if(this.getMfilelds().get("personcode") != null){ - sqlFiltroPersona = " t.cregistro in (SELECT c.pk FROM TarmRegistroArmas c WHERE c.personcode="+this.getMfilelds().get("personcode")+")"; - } - //agregamos los filtros en base a la consideracion del field sancion, en caso de que lo sea buscamos los sancionados que hayan cumplido el tiempo de sancion - SimpleDateFormat dateFormat = new SimpleDateFormat("yyyy-MM-dd"); - if(this.getMfilelds().containsKey("sancion") && this.getMfilelds().get("sancion").toString().equals(Constant.STR_Y)){ - sqlFiltroSancion = " t.pk in (SELECT max(a.pk) FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.pk in (SELECT d.cdocumento FROM TarmSancionDecomiso d WHERE d.personcode="+this.getMfilelds().get("personcode")+" AND d.fechafinal < TO_DATE('"+dateFormat.format(Calendar.getInstance().getTime())+"', 'YYYY-MM-DD'))) GROUP BY a.codigoarma)"; - } - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - sqlFiltroEstados = sqlEstados.toString(); - } - - if(this.getMfilelds().get("TRAMITE") != null){ - TarmTramite tarmTramite = (TarmTramite) this.getMfilelds().get("TRAMITE"); - sqlFiltroValidacionArma = "t.pk not in (SELECT coalesce(max(a.pk),'-1') FROM TarmArmas a WHERE a.codigoarma in (SELECT distinct(h.codigoarma) from TarmDocumentoHabilitante h WHERE h.personcode="+this.getMfilelds().get("personcode")+" AND h.ctramite="+tarmTramite.getPk()+" AND h.estado = 'APR' AND trunc(h.fechaexpiracion) >= " + "TO_DATE('" +dateFormat.format(Calendar.getInstance().getTime())+ "','yyyy-MM-dd')) GROUP BY a.codigoarma)"; - } - //estados del armas - if(this.getMfilelds().get("CLASEARMAS") != null){ - String[] clasesarma = this.getMfilelds().get("CLASEARMAS").toString().split(","); - StringBuffer sqlclasesarmas = new StringBuffer(" t.ctipoarmaexplosivo IN (select o.pk from TarmTipoArmaExplosivo o where o.clase in("); - for (int i = 0; i < clasesarma.length; i++) { - sqlclasesarmas.append("'").append(clasesarma[i]).append("'"); - if(i < clasesarma.length - 1){ - sqlclasesarmas.append(","); - } - } - sqlclasesarmas.append(")) "); - sqlFiltroClaseArmas = sqlclasesarmas.toString(); - } - -// if(this.getMfilelds().get("FECHACADUCIDADARM") != null){ -// sqlFiltroFechaCaducidad="t.fechacaducidad "+this.getMfilelds().get("FECHACADUCIDADARM"); -// } - String sqlActual = " t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma) and t.estado !='DEST' and t.estado!='VEND' and t.estado!='MING' and t.estado!='DUPL' and t.estado!='CUSTEM'" - + " and (t.peso>0 or t.cantidad>0)";//distintas de destruidas y cambio de propietario and t.cregistro=ta.cregistro para el manejo de los explosivos - -// String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlFiltroFechaCaducidad, sqlActual); - String sqlFinal = obtenerFiltroBusquedaGeneral(sqlFiltroPersona, sqlFiltroEstados, sqlFiltroSancion, sqlFiltroValidacionArma,sqlFiltroClaseArmas,sqlActual); - Filter filtroFinal = new Filter(); - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizaPanelImportacion(){ - if(esNuevaImportacion){ - System.out.println("Logica para cuando es una nueva importacion: " + esNuevaImportacion); - carga=new TarmCarga(); - carga.setIsnew(Boolean.TRUE); - registro.setIsnew(Boolean.TRUE); -// if(registro.getPk()!=null){ -// registro.setPk(null); -// -// } - }else{ - System.out.println("Logica para cuando es una importacion ya cargada y se consultara por AUCP: " + esNuevaImportacion); - } -// registro = new TarmRegistroArmas(); -// this.lrecord = new ArrayList(); - - } - - - private String obtenerFiltroBusquedaGeneral(String... sqlFiltros ){ - StringBuffer sqlFinal = new StringBuffer(); - for (int i = 0; i < sqlFiltros.length ; i++) { - if(sqlFinal.length() > 0 && !StringUtils.endsWith(StringUtils.trim(sqlFinal.toString()), "AND")){ - sqlFinal.append( " AND "); - } - sqlFinal.append(sqlFiltros[i]); - } - return sqlFinal.toString(); - } - - @SuppressWarnings("unchecked") - public void querydatabaseSinFiltros() { - try { - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @SuppressWarnings("unchecked") - protected void querydatabasePorCodigo() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog=t.marca and i.pk.catalogcode=t.marcacodigo"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=t.color and i.pk.catalogcode=t.colorcodigo"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TarmTipoArmaExplosivo","clase","cclase","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryClaseCodigo= new SubQuery("TarmTipoArmaExplosivo","clasecodigo","cclasecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryClaseCodigo); - SubQuery subqueryLongitud= new SubQuery("TarmTipoArmaExplosivo","longitud","clongitud","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryLongitudCodigo= new SubQuery("TarmTipoArmaExplosivo","longitudcodigo","clongitudcodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryLongitudCodigo); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ccalibre","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryCalibreCodigo= new SubQuery("TarmTipoArmaExplosivo","calibrecodigo","ccalibrecodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryCalibreCodigo); - SubQuery subqueryTipoArma= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArma); - SubQuery subqueryTipoArmaCodigo= new SubQuery("TarmTipoArmaExplosivo","tipoarmaexplosivocodigo","ctipoarmaexplosivocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryTipoArmaCodigo); - SubQuery subqueryUnidad= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapeso","cunidadmedidapeso","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidad); - SubQuery subqueryUnidadCodigo= new SubQuery("TarmTipoArmaExplosivo","unidadmedidapesocodigo","cunidadmedidapesocodigo","i.pk=t.ctipoarmaexplosivo"); - dto.addSubQuery(subqueryUnidadCodigo); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=t.unidadmedidacantidad and i.pk.catalogcode=t.unidadmedidacantidadcodigo"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subquerycpersoncode= new SubQuery("TarmRegistroArmas","personcode","personcode","i.pk=t.cregistro"); - dto.addSubQuery(subquerycpersoncode); - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=t.ctipoarmaexplosivo)"); - dto.addSubQuery(subqueryClasecatalogo); - - return dto; - } - - @SuppressWarnings("unchecked") - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void remove() throws Exception { - if(record.getPk()==null){ - super.remove(); - } - else{ - ldeleteItems.add(this.record); - super.remove(); - } - } - - @Override - public void save() { - try { - if(registro.getTiporegistro().equals("IMP") && registro.isnew){ - TarmCarga aucpUsadoPrevio = CargaController.findByAUCP(registro.getSolicitudnum()); - if(aucpUsadoPrevio!=null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_aucp_previamente_cargado")); - return; - } - } - if(this.getLrecord().isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_carga_armas_inexistentes")); - return; - } - this.registroArmas.update(); - Request request = callerhelper.getRequest(); - this.registro.setPersoncode(usuario.getPk().getPersoncode()); - this.registro.setFechasolicitud(new java.sql.Date((new Date()).getTime())); - this.registro.setTiporegistrocodigo("TIPOREGISTRO"); -// this.registro.setPaisorigen("EC"); - this.registro.setFcreacion(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - request.getModifiedData().put("LISTAARMAS", this.lrecord); - request.getModifiedData().put("LISTAARMASELIMINADAS", this.ldeleteItems); - request.getModifiedData().put("TIPOREGISTRO", this.registro.getTiporegistro()); - request.getModifiedData().put("REGISTRO", this.registro); - request.getModifiedData().put("PERSONCODE", usuario.getPk().getPersoncode()); - request.getModifiedData().put("ESNUEVAIMPORTACION", esNuevaImportacion); - carga.setCategoria(this.categoria); - request.getModifiedData().put("TARMCARGA",carga); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - isSave=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveArmaSolicitud() { - try { - - if(!isArmaDuplicada(record)){ - - record.getModifiedData().put("edit", "S"); - - this.registroArmas.update(); - update(); - if(!existeTipoArmaExplosivo){ - return; - } - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(Boolean.TRUE); // Para que el core devuelva el pk de los registros nuevos. - dtosave.setPosition(2); - HashMap msave = new HashMap(); - DtoSave dtoSaveRegistro = registroArmas.getDtoSave(); - dtoSaveRegistro.setIsForm(Boolean.TRUE); - dtoSaveRegistro.setReturnpk(Boolean.TRUE); - dtoSaveRegistro.setPosition(1); - - Request request = callerhelper.getRequest(); - request.setTransactionModule("30"); - request.setTransactionCode(15); - request.setTransactionVersion(1); - if(!verificaArmaExplosivo){ - request.put("eseliminacion", Constant.STR_Y); - }else{ - msave.put(registroArmas.getBeanalias(), dtoSaveRegistro); - } - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.put("TIPODOC", this.getMfilelds().get("tipodoc")); - request.put("NUMDOC", this.getMfilelds().get("numdoc")); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.registroArmas.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - }else{ - record= null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_armaDuplicada")); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception { -// TgeneCatalogDetail estado = CatalogDetailController.findxCodigoCodcatalogo(record.getEstado(), record.getEstadocodigo()); - TgeneCatalogDetail marca = CatalogDetailController.findxCodigoCodcatalogo(record.getMarca(), record.getMarcacodigo()); -// record.getModifiedData().put("estado", estado.getDescription()); - isEnableCategoria = Boolean.FALSE; - record.setPartidaarancelariacodigo("PARTIDAARANCELARIA"); - record.setTipofabricacion("TIPOFABRICACION2"); - record.setTipofabricacioncodigo("TIPOFABRICACION"); - record.getModifiedData().put("marca", marca.getDescription()); - for(TgeneCatalogDetail color:lcolor){ - if(record.getColor()!=null && record.getColor().equals(color.getPk().getCatalog())){ - record.getModifiedData().put("color", color.getDescription()); - break; - } - } - if(verificaArmaExplosivo){ - if(tipoArmaExplosivo == null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionClase")); - existeTipoArmaExplosivo = Boolean.FALSE; - return; - }else{ - this.record.setCtipoarmaexplosivo(tipoArmaExplosivo.getPk()); - record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getUnidadmedidapeso()); - existeTipoArmaExplosivo = Boolean.TRUE; - } - } - super.update(); - } - - public Boolean existeDuplicidad(){ - if(this.lrecord.contains(record)){ - return Boolean.TRUE; - } - return Boolean.FALSE; - } - - - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - verificaArmaExplosivo = Boolean.TRUE; - if(record.getCountrycode() == null){ - record.setCountrycode("EC"); - } - if(record.getCtipoarmaexplosivo()==null){ - MessageHelper.setMessageError("NO ESTA ASOCIADO A UN TIPO DE ARMA EXPLOSIVO"); - return; - } - tipoArmaExplosivo= TiposArmasExplosivosController.findarma(record.getCtipoarmaexplosivo()); -// lprovincias = ProvinceController.find(record.getCountrycode()); -// executeProvince(); -// if(record.getProvincecode() != null){ -// lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); -// executeCanton(); -// } -// completaInfTipoArma(); - // Anade la descripcion del tipo de arma explosivo - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - } - verificarClaseArma(); - } - - - @Override - public void create() throws Exception { - if(categoria!=null){ - super.create(); - this.record.setEstadocodigo("ESTADOARMA"); - this.record.setMarcacodigo("MARCA"); - this.record.setCantidad(null); - this.record.setPeso(null); - this.lprovincias = ProvinceController.find(record.getCountrycode()); - this.executeProvince(); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("PF('dialog').show()"); - }else{ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_categoriaRequerida")); - return; - } - } - - public void update(TarmArmas bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void validacionDocumento(String numeroDocumento, String tipoDocumento){ - if(numeroDocumento==null || tipoDocumento==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedula")); - return; - } - TcustPersonDetail tcustPersonDetail=null; - if(tipoDocumento.equals(codigoCedula)){ -//----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en MAIA - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else if(tipoDocumento.equals(codigoRuc)){ -//----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(numeroDocumento)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalido")); - return; - } - //envia a buscar en maia - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - }else{ -//----------si es PASAPORTE - tcustPersonDetail=buscarPersonaMaia(numeroDocumento,tipoDocumento); - } -// if(tcustPersonDetail==null){ -// nombreRazon=null; -//// numDoc=null; -// MessageHelper.setMessageError("La datos de la persona ingresada no existen, por favor crear primero la persona"); -// return; -// }else{ -// nombreRazon=tcustPersonDetail.getName(); -// } - } - - /** Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - /** - * Busca un arma por código y estado - * @param armaCode código del arma - * @param estado estado del arma - * @return - */ - public static TarmArmas find(String armaCode,String estado) { - try { - - if(armaCode==null){ - return null; - } - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - if(estado!=null){ - cc.addFilter("estado", estado); - cc.addFilter("estadocodigo", "ESTADOARMA"); - } - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = new TarmTipoArmaExplosivo(); - tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null && tarmTipoArmaExplosivo.getCalibrecodigo()!=null) - cc.record.modifiedData().put("calibre",tarmTipoArmaExplosivo==null?"":Utilidades.formatearDecimalesEnTexto((CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()), "#.000")); - cc.record.modifiedData().put("tipo",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - cc.record.modifiedData().put("clase",tarmTipoArmaExplosivo==null?"":CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - cc.record.modifiedData().put("pais", cc.record.getCpaisorigen()==null?"":CountryController.findcountry(cc.record.getCpaisorigen()).getDescription()); - - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * @param codigopersona - * @return - */ - public static TarmArmas findBySerieMarca(String serie, String marca) { - try { - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - if(serie!=null && !serie.isEmpty()){ - cc.addFilter("lote", serie); - } - cc.addFilter("marca", marca); - cc.querydatabaseSimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findByPK(String cArma) { - try { - - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", cArma); - cc.querydatabaseSinFiltros(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - cc.record=cc.lrecord.get(0); - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findPorCodigo(String armaCode) { - try { - - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabaseArmas(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigo(String armaCode) { - try { - - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - //cc.addFilter("REG", "ESTADOARMA"); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - - /** - * - * - * @param personCode - * @param estados estados del arma separados por coma - * @return Una lista de Armas encontradas - */ - public List findxPersona(Long personCode, String estados, String clase, String fechaCaducidad) { - List armasLista = null; - try { - armasLista = new ArrayList(); - InventariosController armas = new InventariosController(); - armas.init(); - armas.recperpage = 4000; - armas.addField("personcode", personCode); - if(this.getMfilelds().get("sancion") != null){ - armas.addField("sancion", this.getMfilelds().get("sancion")); - } - if(this.getMfilelds().get("TRAMITE") != null){ - armas.addField("TRAMITE", this.getMfilelds().get("TRAMITE")); - } - if(estados == null){ - armas.addFilter("estado", "REG"); - } else{ - armas.addField("ESTADOS", estados); - } - if(clase != null && clase .trim().length()>0){ - armas.addField("CLASEARMAS", clase); - } -// if(fechaCaducidad != null && fechaCaducidad .trim().length()>0){ -// armas.addField("FECHACADUCIDADARM", fechaCaducidad); -// } - armas.query(); - if(armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - armasLista.addAll(armas.getLrecord()); - } - - return armasLista; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return armasLista; - } - } - - - /** - * Lista de Armas por Registro - **/ - public static List findxRegistro(String registrocode) { - try { - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("cregistro", registrocode); - - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas item : cc.lrecord){ - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(item.getCtipoarmaexplosivo()); - item.modifiedData().put("calibre",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription()); - item.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription()); - item.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription()); - item.modifiedData().put("longitud",CatalogDetailController.findxCodigoCodcatalogo( tarmTipoArmaExplosivo.getLongitud(), tarmTipoArmaExplosivo.getLongitudcodigo()).getDescription()); - } - - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("clase", clase.getDescription()); - this.clase = clase.getPk().getCatalog(); - this.verificarClaseArma(); - } - - /** - * Abre el LOV de la clase del arma - */ - public void openArmaExplosivoLov() { - - this.record.getModifiedData().put("longitud", null); - this.record.getModifiedData().put("tipoarmaexplosivo", null); - this.record.getModifiedData().put("calibre", null); - // descripcionUnidadpeso=null; - Map> params = new HashMap<>(); - List lcategoriaParam = new ArrayList<>(); - lcategoriaParam.add(categoria); - params.put("categoria", lcategoriaParam); - ArmaExplosivoLovController.openLov(params); - - } - - /** - * Abre el LOV de busqueda de importaciones por codigo solicitud (AUCP) - */ - public void openCargaPrevia() { - Map> params = new HashMap<>(); - List lPersoncodeParam = new ArrayList<>(); - lPersoncodeParam.add(usuario.getPk().getPersoncode().toString()); - params.put("personcode", lPersoncodeParam); - CargasLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnArmaExplosivo(SelectEvent event) { - tipoArmaExplosivo = (TarmTipoArmaExplosivo) event.getObject(); - //Setear descripciones a presentarse - this.record.getModifiedData().put("clase", tipoArmaExplosivo.getModifiedData().get("nclase")); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArmaExplosivo.getModifiedData().get("ntipo")); - this.record.getModifiedData().put("longitud", tipoArmaExplosivo.getModifiedData().get("nlongitud")); - this.record.getModifiedData().put("calibre", tipoArmaExplosivo.getModifiedData().get("ncalibre")); - // Setear valores en las variables correspondientes - if(tipoArmaExplosivo!=null){ - this.clase = tipoArmaExplosivo.getClase(); - this.longitud = tipoArmaExplosivo.getLongitud(); - this.tipoarma = tipoArmaExplosivo.getTipoarmaexplosivo(); - this.calibre = tipoArmaExplosivo.getCalibre(); - this.record.setUnidadmedidacantidad(tipoArmaExplosivo.getUnidadmedidapeso()); - } - this.verificarClaseArma(); - // valida cantidad para registro de produccion - cantidadTxt.setValue(null); - if(registro.getTiporegistro().equals("PRO")){ - if((this.clase.equals("0010000001") || this.clase.equals("0010000004") || this.clase.equals("0010000008")) && this.bloquearUnidadPeso){ - cantidadTxt.setValue("1"); - cantidadTxt.setDisabled(true); - } - } - } - - /** - * Regresa del LOV de carga - * @param event - */ - public void onReturnCarga(SelectEvent event) { - System.out.println("Retorno del lov carga"); - isSelectAucpPrevio = Boolean.TRUE; - carga = (TarmCarga) event.getObject(); - this.categoria = carga.getCategoria(); - this.isEnableCategoria = Boolean.FALSE; - carga.setIsnew(Boolean.FALSE); - registro = RegistroArmController.findByCodigo(carga.getCregistro().toString()); - registro.setIsnew(Boolean.FALSE); - TgeneCountry paisOrigen = CountryController.findcountry(registro.getPaisorigen()); - registro.getModifiedData().put("paisorigen", paisOrigen!=null?paisOrigen.getDescription():""); - // Provincia - TgeneProvince provinciaTmp = ProvinceController.findPorCodigo("EC", carga.getProvincecode()).get(0); - if(provinciaTmp!=null){ - carga.getModifiedData().put("provinceCode",provinciaTmp.getDescription()); - } - // Canton - TgeneCanton cantonTmp = CantonController.findPorCodigo("EC", carga.getProvincecode(), carga.getCantoncode()).get(0); - if(cantonTmp!=null){ - carga.getModifiedData().put("cantonCode",cantonTmp.getDescription()); - } - // Ciudad - TgeneCity ciudadTmp = CityController.findPorCodigo("EC", carga.getProvincecode(), carga.getCantoncode(), carga.getCitycode()).get(0); - if(ciudadTmp!=null){ - carga.getModifiedData().put("cityCode",ciudadTmp.getDescription()); - } - - lrecord = ArmasController.findxRegistro(registro.getPk().toString()); - if(lrecord==null){ - this.lrecord = new ArrayList(); - } - - } - - /** - * Método en el cual se determina si se bloquea unidad o cantidad al momento de cargar los datos del arma - * @param clase - */ - private void verificarClaseArma(){ - if(tipoArmaExplosivo!=null){ - TgeneCatalogDetail unidadesCatalog = CatalogDetailController.findCatalogo(tipoArmaExplosivo.getUnidadmedidapesocodigo(),tipoArmaExplosivo.getUnidadmedidapeso()); - if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("CANTIDAD")){ - this.record.getModifiedData().put("unidadMedidaCantidad", tipoArmaExplosivo.getUnidadmedidapeso()); - this.record.getModifiedData().put("unidadMedidaPeso", null); - this.bloquearUnidadCantidad = Boolean.FALSE; - this.bloquearUnidadPeso = Boolean.TRUE; - this.record.setPeso(null); - }else if(unidadesCatalog!=null && unidadesCatalog.getLegalcode().equals("PESO")){ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", tipoArmaExplosivo.getUnidadmedidapeso()); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.FALSE; - this.record.setCantidad(null); - }else{ - this.record.getModifiedData().put("unidadMedidaCantidad", null); - this.record.getModifiedData().put("unidadMedidaPeso", null); - this.bloquearUnidadCantidad = Boolean.TRUE; - this.bloquearUnidadPeso = Boolean.TRUE; - } - } - } - - /** - * Abre el LOV de la longitud del arma - */ - public void openLovLongitud() { - Map> params = new HashMap>(); - LongitudLovController.openLov(params); - } - - /** - * Regresa del LOV de longitud - * @param event - */ - public void onReturnLongitud(SelectEvent event) { - TgeneCatalogDetail longitud = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("longitud", longitud.getDescription()); - this.longitud = longitud.getPk().getCatalog(); - } - - /** - * Abre el LOV del tipo de arma - */ - public void openLovTipoArma() { - Map> params = new HashMap>(); - TipoArmaExpLovController.openLov(params); - } - - /** - * Regresa del LOV de tipo de arma - * @param event - */ - public void onReturnTipoArma(SelectEvent event) { - TgeneCatalogDetail tipoArma = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("tipoarmaexplosivo", tipoArma.getDescription()); - this.tipoarma = tipoArma.getPk().getCatalog(); - } - - /** - * Abre el LOV de Calibre - */ - public void openLovCalibre() { - Map> params = new HashMap>(); - CalibreLovController.openLov(params); - } - - /** - * Regresa del LOV del calibre - * @param event - */ - public void onReturnCalibre(SelectEvent event) { - TgeneCatalogDetail calibre = (TgeneCatalogDetail) event.getObject(); - this.record.getModifiedData().put("calibre", calibre.getDescription()); - this.calibre = calibre.getPk().getCatalog(); - } - - /** - * Abre el LOV cambio de usuario - */ - public void openLovCambioUsuario() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Acción de retorno de la selección del usuario - * @param event de retorno de la selección - */ - public void onReturnCambioUsuario(SelectEvent event) { - nuevoPropietarioArma = (TcustPersonDetail) event.getObject(); - } - - /** - * Abre el dialog del cambio de persona - */ - public void abrirDialogCambio() { - this.nuevoPropietarioArma = null; - } - - /** - * Se cambia el propietario del arma - */ - public void cambiarArmaUsuario() { - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(151); - request.setTransactionVersion(1); - request.put("ARMAACTUAL", this.record); - request.put("NUEVAPERSONA", this.nuevoPropietarioArma); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - MessageHelper.setMessageInfo(response); - this.querydatabase(); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga las listas de cantones y limpia la lista de ciudades - */ - public void seleccionarProvincia(){ - try { -// codigoProvincia=this.record.getProvincecode(); - lcantones = CantonController.find("EC", carga.getProvincecode()); - lciudades = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Carga las listas de ciudades - */ - public void seleccionarCanton(){ - try { -// codigoCanton = this.record.getCantoncode(); - lciudades = CityController.find("EC", carga.getProvincecode(), carga.getCantoncode()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmArmas guardias : lrecord) { - guardias.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para obtener el listado de las armas por la serie/lote - * @param serieLote - * @return - */ - public static List findxSerieLote(String serieLote) { - try { - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 1000; - cc.addFilter("lote", serieLote); - cc.querydatabaseFechaMax(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para obtener los codigos - */ - private static String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - protected void querydatabaseFechaMax() { - try { - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("pk"); - String codigoEstadoIncautada=codigos("CODIGO.INCAUTADA"); - String codigoEstadoDecomisada=codigos("CODIGO.DECOMISADA"); - String codigoEstadoVendida=codigos("CODIGO.VENDIDA"); - String codigoEstadoMatPrima=codigos("CODIGO.MATERIAPRIMA"); - Filter filtro = new Filter(); - String sql="t.fecharegistro=(select max(ta.fecharegistro) from TarmArmas ta where t.codigoarma=ta.codigoarma and t.cregistro=ta.cregistro)"//and t.cregistro=ta.cregistro para el manejo de los explosivos - + " and t.estado !='DEST' and t.estado !='CDP' and t.estado !='"+codigoEstadoIncautada+"' and t.estado !='"+codigoEstadoDecomisada+"' and t.estado !='"+codigoEstadoVendida+"' and t.estado !='"+codigoEstadoMatPrima+"' "; - filtro.setSql(sql); - dto.addFiltro(filtro); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void actualizar(TarmArmas arma) throws Exception{ - record=arma; - super.update(); - } - - /*Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findxCodigo(String armaCode) { - try { - - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", armaCode); - cc.querydatabaseArmas(); - cc.getRecord().getModifiedData().put("lmarca", cc.getLmarca()); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TiposArmasExplosivosController getTiposArmasExplosivosController() { - return tiposArmasExplosivosController; - } - - - public void setTiposArmasExplosivosController( - TiposArmasExplosivosController tiposArmasExplosivosController) { - this.tiposArmasExplosivosController = tiposArmasExplosivosController; - } - - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - -// public List getLtipoidentificacion() { -// return ltipoidentificacion; -// } -// -// -// public void setLtipoidentificacion(List ltipoidentificacion) { -// this.ltipoidentificacion = ltipoidentificacion; -// } -// -// -// public String getTipoDoc() { -// return tipoDoc; -// } -// -// -// public void setTipoDoc(String tipoDoc) { -// this.tipoDoc = tipoDoc; -// } - - -// public String getNumDoc() { -// return numDoc; -// } -// -// -// public void setNumDoc(String numDoc) { -// this.numDoc = numDoc; -// } - - -// public String getNombreRazon() { -// return nombreRazon; -// } -// -// -// public void setNombreRazon(String nombreRazon) { -// this.nombreRazon = nombreRazon; -// } - - - public List getLestadoarma() { - return lestadoarma; - } - - - public void setLestadoarma(List lestadoarma) { - this.lestadoarma = lestadoarma; - } - - - public List getLmarca() { - return lmarca; - } - - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - - public List getLcolor() { - return lcolor; - } - - - public void setLcolor(List lcolor) { - this.lcolor = lcolor; - } - - - public List getLtipofabricacion() { - return ltipofabricacion; - } - - - public void setLtipofabricacion(List ltipofabricacion) { - this.ltipofabricacion = ltipofabricacion; - } - - -// public List getLcountry() { -// return lcountry; -// } -// -// -// public void setLcountry(List lcountry) { -// this.lcountry = lcountry; -// } - - - public List getLunidadmedidacantidad() { - return lunidadmedidacantidad; - } - - - public void setLunidadmedidacantidad( - List lunidadmedidacantidad) { - this.lunidadmedidacantidad = lunidadmedidacantidad; - } - - - public String getLongitud() { - return longitud; - } - - - public void setLongitud(String longitud) { - this.longitud = longitud; - } - - - public String getCalibre() { - return calibre; - } - - - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - - public String getClase() { - return clase; - } - - - public void setClase(String clase) { - this.clase = clase; - } - - - public String getTipoarma() { - return tipoarma; - } - - - public void setTipoarma(String tipoarma) { - this.tipoarma = tipoarma; - } - - - public String getUnidadmedidapeso() { - return unidadmedidapeso; - } - - - public void setUnidadmedidapeso(String unidadmedidapeso) { - this.unidadmedidapeso = unidadmedidapeso; - } - - - public List getLunidadmedidapeso() { - return lunidadmedidapeso; - } - - - public void setLunidadmedidapeso(List lunidadmedidapeso) { - this.lunidadmedidapeso = lunidadmedidapeso; - } - - - public List getLprovincias() { - return lprovincias; - } - - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - - public List getLcantones() { - return lcantones; - } - - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - - public List getLparroquias() { - return lparroquias; - } - - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - - public List getLcities() { - return lcities; - } - - - public void setLcities(List lcities) { - this.lcities = lcities; - } - - - public boolean isExisteTipoArmaExplosivo() { - return existeTipoArmaExplosivo; - } - - - public void setExisteTipoArmaExplosivo(boolean existeTipoArmaExplosivo) { - this.existeTipoArmaExplosivo = existeTipoArmaExplosivo; - } - - - public boolean isVerificaArmaExplosivo() { - return verificaArmaExplosivo; - } - - - public void setVerificaArmaExplosivo(boolean verificaArmaExplosivo) { - this.verificaArmaExplosivo = verificaArmaExplosivo; - } - - public boolean isBloquearUnidadCantidad() { - return bloquearUnidadCantidad; - } - - public void setBloquearUnidadCantidad(boolean bloquearUnidadCantidad) { - this.bloquearUnidadCantidad = bloquearUnidadCantidad; - } - - public boolean isBloquearUnidadPeso() { - return bloquearUnidadPeso; - } - - public void setBloquearUnidadPeso(boolean bloquearUnidadPeso) { - this.bloquearUnidadPeso = bloquearUnidadPeso; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - protected void querydatabaseArmas() { - try { - DtoQuery dto = this.getDtoQuery(); - - dto.setOrderby("pk"); - if(this.getMfilelds().get("ESTADOS") != null){ - Filter filtroEstados = new Filter(); - String[] estados = this.getMfilelds().get("ESTADOS").toString().split(","); - StringBuffer sqlEstados = new StringBuffer(" t.estado IN ("); - for (int i = 0; i < estados.length; i++) { - sqlEstados.append("'").append(estados[i]).append("'"); - if(i < estados.length - 1){ - sqlEstados.append(","); - } - } - sqlEstados.append(")"); - filtroEstados.setSql(sqlEstados.toString()); - dto.addFiltro(filtroEstados); - }else{ - //se discrima las armas que sean distintas de destruidas y cambio de propietario - Filter filtro = new Filter(); - String sql=" t.estado !='DEST' and t.estado !='CDP'"; - filtro.setSql(sql); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "ARMASCOMPLETE"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getNuevoPropietarioArma() { - return nuevoPropietarioArma; - } - - public void setNuevoPropietarioArma(TcustPersonDetail nuevoPropietarioArma) { - this.nuevoPropietarioArma = nuevoPropietarioArma; - } - - /** - * Busca un arma por código - * @param armaCode - * @return - */ - public static TarmArmas findXCodigoArma(String armaCode) { - try { - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("codigoarma", armaCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - @SuppressWarnings("unchecked") - public void querydatabasesimple() { - try { - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - public void querydatabaseArmaDuplicada(TarmArmas armaObj) { - try { - DtoQuery dto = this.getDtoQuery(); - - Filter filtro = new Filter(); - filtro.setSql("t.marca='"+armaObj.getMarca()+"' and t.marcacodigo='"+armaObj.getMarcacodigo()+"' and upper(t.lote)='"+ armaObj.getLote().toUpperCase()+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static TarmArmas findSimple(String carma) { - try { - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static Boolean isArmaDuplicada(TarmArmas armaObj) { - Boolean isDuplicada = Boolean.FALSE; - InventariosController cc; - try { - cc = new InventariosController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabaseArmaDuplicada(armaObj); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - for(TarmArmas armaTmp:cc.lrecord){ - TarmTipoArmaExplosivo tipoArmaExpTmp = TiposArmasExplosivosController.findarma(armaTmp.getCtipoarmaexplosivo()); - TgeneCatalogDetail claseTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getClasecodigo(), tipoArmaExpTmp.getClase()); - TgeneCatalogDetail tipoArmaTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getTipoarmaexplosivocodigo(), tipoArmaExpTmp.getTipoarmaexplosivo()); - TgeneCatalogDetail calibreTmp = CatalogDetailController.findCatalogo(tipoArmaExpTmp.getCalibrecodigo(), tipoArmaExpTmp.getCalibre()); - // Valido la clase, tipoarma y calibre solo para armas de fuego y armas no letales - if(claseTmp.getPk().getCatalog().equals("0010000001") || claseTmp.getPk().getCatalog().equals("0010000008")){ - if(armaObj.getModifiedData().get("clase")!=null && armaObj.getModifiedData().get("tipoarmaexplosivo")!=null){ - if(armaObj.getModifiedData().get("clase").toString().equalsIgnoreCase(claseTmp!=null?claseTmp.getDescription():"")&& - armaObj.getModifiedData().get("tipoarmaexplosivo").toString().equalsIgnoreCase(tipoArmaTmp!=null?tipoArmaTmp.getDescription():"")){ - if(armaObj.getModifiedData().get("calibre")!=null && calibreTmp!=null && armaObj.getModifiedData().get("calibre").toString().equalsIgnoreCase(calibreTmp.getDescription())){ - isDuplicada = Boolean.TRUE; - break; - } - } - }else{ - MessageHelper.setMessageError("CLASE Y/O TIPO DE ARMA EXPLOSIVO INCORRECTOS"); - } - } - } - - } - return isDuplicada; - } catch (Exception e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmArmas find(String carma) { - try { - - InventariosController cc = new InventariosController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("pk", carma); - cc.querydatabasesimple(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TarmTipoArmaExplosivo tarmTipoArmaExplosivo = TiposArmasExplosivosController.findarma(cc.lrecord.get(0).getCtipoarmaexplosivo()); - if(tarmTipoArmaExplosivo!=null){ - if(tarmTipoArmaExplosivo.getCalibre() != null && tarmTipoArmaExplosivo.getCalibrecodigo() != null){ - cc.record.modifiedData().put("calibre", CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getCalibre(), tarmTipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getTipoarmaexplosivo() != null && tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo() != null){ - cc.record.modifiedData().put("tipo",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(), tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo())!=null? CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getTipoarmaexplosivo(),tarmTipoArmaExplosivo.getTipoarmaexplosivocodigo()).getDescription():""); - } - if(tarmTipoArmaExplosivo.getClase() != null && tarmTipoArmaExplosivo.getClasecodigo() != null){ - cc.record.modifiedData().put("clase",CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tarmTipoArmaExplosivo.getClase(), tarmTipoArmaExplosivo.getClasecodigo()).getDescription():""); - } - TarmRegistroArmas registroArmas = new TarmRegistroArmas(); - TcustPersonDetail detallePersona = new TcustPersonDetail(); - if(cc.record.getCregistro()!=null ){ - registroArmas = RegistroArmController.findByCodigo(String.valueOf(cc.record.getCregistro())); - if(registroArmas!=null){ - detallePersona= PersonDetailController.find(String.valueOf(registroArmas.getPersoncode())); - } - } - cc.record.modifiedData().put("razonsPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getName()); - cc.record.modifiedData().put("documentoPropietario",registroArmas ==null || detallePersona==null?"":detallePersona.getIdentification()); - cc.record.modifiedData().put("marca",(cc.record ==null || cc.record.getMarca()==null || cc.record.getMarca().isEmpty() || cc.record.getMarcacodigo()==null || cc.record.getMarcacodigo().isEmpty())?"":CatalogDetailController.findxCodigoCodcatalogo(cc.record.getMarca(), cc.record.getMarcacodigo()).getDescription()); - cc.record.modifiedData().put("seleccion", Boolean.FALSE); - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TgeneCatalogDetail getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(TgeneCatalogDetail tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public List getTiposRegistro() { - return tiposRegistro; - } - - public void setTiposRegistro(List tiposRegistro) { - this.tiposRegistro = tiposRegistro; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public List getLdocumentospersona() { - return ldocumentospersona; - } - - public void setLdocumentospersona( - List ldocumentospersona) { - this.ldocumentospersona = ldocumentospersona; - } - -// public TarmRegistroArmas getRegistro() { -// return registro; -// } -// -// public void setRegistro(TarmRegistroArmas registro) { -// this.registro = registro; -// } - - public List getLpaises() { - return lpaises; - } - - public void setLpaises(List lpaises) { - this.lpaises = lpaises; - } - - public List getLciudades() { - return lciudades; - } - - public void setLciudades(List lciudades) { - this.lciudades = lciudades; - } - - public List getLaeropuertos() { - return laeropuertos; - } - - public void setLaeropuertos(List laeropuertos) { - this.laeropuertos = laeropuertos; - } - - public String getCodigoProvincia() { - return codigoProvincia; - } - - public void setCodigoProvincia(String codigoProvincia) { - this.codigoProvincia = codigoProvincia; - } - - public String getCodigoCanton() { - return codigoCanton; - } - - public void setCodigoCanton(String codigoCanton) { - this.codigoCanton = codigoCanton; - } - - public TarmRegistroArmas getRegistro() { - return registro; - } - - public void setRegistro(TarmRegistroArmas registro) { - this.registro = registro; - } - - public String getCategoria() { - return categoria; - } - - public void setCategoria(String categoria) { - this.categoria = categoria; - } - - public Boolean getEstadoDesaduanizado() { - return estadoDesaduanizado; - } - - public void setEstadoDesaduanizado(Boolean estadoDesaduanizado) { - this.estadoDesaduanizado = estadoDesaduanizado; - } - - public Boolean getEsNuevaImportacion() { - return esNuevaImportacion; - } - - public void setEsNuevaImportacion(Boolean esNuevaImportacion) { - this.esNuevaImportacion = esNuevaImportacion; - } - - public String getFilterAUCP() { - return filterAUCP; - } - - public void setFilterAUCP(String filterAUCP) { - this.filterAUCP = filterAUCP; - } - - public TarmCarga getCarga() { - return carga; - } - - public void setCarga(TarmCarga carga) { - this.carga = carga; - } - - public Boolean getIsSelectAucpPrevio() { - return isSelectAucpPrevio; - } - - public void setIsSelectAucpPrevio(Boolean isSelectAucpPrevio) { - this.isSelectAucpPrevio = isSelectAucpPrevio; - } - - public Boolean getIsSave() { - return isSave; - } - - public void setIsSave(Boolean isSave) { - this.isSave = isSave; - } - - public InputNumber getCantidadTxt() { - return cantidadTxt; - } - - public void setCantidadTxt(InputNumber cantidadTxt) { - this.cantidadTxt = cantidadTxt; - } - - public List getLpartidaArancelaria() { - return lpartidaArancelaria; - } - - public void setLpartidaArancelaria(List lpartidaArancelaria) { - this.lpartidaArancelaria = lpartidaArancelaria; - } - - public Boolean getIsEnableCategoria() { - return isEnableCategoria; - } - - public void setIsEnableCategoria(Boolean isEnableCategoria) { - this.isEnableCategoria = isEnableCategoria; - } - - - -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/MantenimientoDocumentosAlfrescoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/MantenimientoDocumentosAlfrescoController.java.svn-base deleted file mode 100644 index 72479a8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/MantenimientoDocumentosAlfrescoController.java.svn-base +++ /dev/null @@ -1,287 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.menu.MenuController; -import com.fp.frontend.controller.security.ProfileController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoAlfresco; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeProfile; - -/** - * Controlador principal del mantenimiento de documentos alfresco - * @author Manuel Cepeda - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class MantenimientoDocumentosAlfrescoController extends AbstractController { - - @ManagedProperty(value = "#{menuController}") - private MenuController menuController; - - /** - * Lista de perfiles asociados al usuario que hace login a la aplicacion. - */ - private List lprofile; - - /** - * Listado de estados del arma - */ - private List ltipodocumento; - - /** - * Listado de estados del arma - */ - private List ldocumento; - - private String[] selectedDocumentos; - - - - public MantenimientoDocumentosAlfrescoController() throws Exception { - super(TarmDocumentoAlfresco.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - setLprofile(ProfileController.find()); - querydatabase(); - } - - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record = new TarmDocumentoAlfresco(); - beanalias = "DOCUMENTOALFRESCO"; - ltipodocumento = CatalogDetailController.find("TIPODOCUMENTO"); - ldocumento = CatalogDetailController.find("DOCUMENTO"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("pk"); - - // subqueries 1 - SubQuery subqueryPerfil = new SubQuery("TsafeProfile", "description", "perfilDescription", "i.pk = t.perfil"); - dto.addSubQuery(subqueryPerfil); - - SubQuery subqueryTipoDocumento = new SubQuery("TgeneCatalogDetail","description","tipoDocumento","i.pk.catalog=t.catalogo and i.pk.catalogcode=t.catalogoCode"); - dto.addSubQuery(subqueryTipoDocumento); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - request.put("queryalias", "DOCUMENTOALFRESCOCOMPLETE"); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /*/ - * Permite obtener elementos de la entidad TarmDocumentoAlfresco dado el perfil - */ - public static List findByProfile(String perfil) { - try { - MantenimientoDocumentosAlfrescoController cc = new MantenimientoDocumentosAlfrescoController(); - cc.init(); - cc.recperpage = 5000; - cc.addFilter("perfil", perfil); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @Override - public void save() { - try { - List listaNueva = new ArrayList<>(); - for(TarmDocumentoAlfresco tarmDocumentoAlfresco : lrecord){ - for(TarmDocumentoAlfresco documentoAlfresco : listaNueva){ - if(tarmDocumentoAlfresco.getModifiedData().get("perfilDescription").equals(documentoAlfresco.getModifiedData().get("perfilDescription")) - && tarmDocumentoAlfresco.getModifiedData().get("tipoDocumento").equals(documentoAlfresco.getModifiedData().get("tipoDocumento"))){ - MessageHelper.setMessageError(" Ya se encuentra creada una combinacin: " + tarmDocumentoAlfresco.getModifiedData().get("perfilDescription") + " - " + tarmDocumentoAlfresco.getModifiedData().get("tipoDocumento")); - return; - } - } - listaNueva.add(tarmDocumentoAlfresco); - } - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception { - record.setCatalogoCode("TIPODOCUMENTO"); - record.setDocumento(""); - if(menuController.findPerfil(record.getPerfil()) != null){ - record.getModifiedData().put("perfilDescription", menuController.findPerfil(record.getPerfil()).getDescription()); - } - if(CatalogDetailController.findxCodigoCodcatalogo(record.getCatalogo(), record.getCatalogoCode()) != null){ - record.getModifiedData().put("tipoDocumento", CatalogDetailController.findxCodigoCodcatalogo(record.getCatalogo(), record.getCatalogoCode()).getDescription()); - } - for(String documento : selectedDocumentos){ - if(record.getDocumento() == null || "".equals(record.getDocumento())){ - record.setDocumento(documento); - }else{ - record.setDocumento(record.getDocumento() + ", " + documento); - } - - } - super.update(); - } - - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { - setSelectedDocumentos(record.getDocumento().split(", ")); - } - - - @Override - public void create() throws Exception { - setSelectedDocumentos(null); - super.create(); - } - - public void update(TarmDocumentoAlfresco bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void actualizar(TarmDocumentoAlfresco arma) throws Exception{ - record=arma; - super.update(); - } - - public List getLprofile() { - return lprofile; - } - - public void setLprofile(List lprofile) { - this.lprofile = lprofile; - } - - public MenuController getMenuController() { - return menuController; - } - - public void setMenuController(MenuController menuController) { - this.menuController = menuController; - } - - public List getLtipodocumento() { - return ltipodocumento; - } - - public void setLtipodocumento(List ltipodocumento) { - this.ltipodocumento = ltipodocumento; - } - - public List getLdocumento() { - return ldocumento; - } - - public void setLdocumento(List ldocumento) { - this.ldocumento = ldocumento; - } - - /** - * @return the selectedDocumentos - */ - public String[] getSelectedDocumentos() { - return selectedDocumentos; - } - - /** - * @param selectedDocumentos the selectedDocumentos to set - */ - public void setSelectedDocumentos(String[] selectedDocumentos) { - this.selectedDocumentos = selectedDocumentos; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ModificarPlanificacionInspeccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ModificarPlanificacionInspeccionController.java.svn-base deleted file mode 100644 index ed8e529..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ModificarPlanificacionInspeccionController.java.svn-base +++ /dev/null @@ -1,513 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ModificarPlanificacionInspeccionController extends AbstractController { - - private TarmCentroControl centroControl; - - private String nombreCentroControl; - - private TarmCentroControlJur jurisdiccionCentroControl; - - private Boolean planificacionSalvada = false; - - // Codigo de planificacion (Variable de flujo) - private Long cplanificacion; - - private List listaMeses = new ArrayList(); - - private List listaAnnos = new ArrayList(); - - List planificaciones; - - @ManagedProperty(value = "#{planificacionTramiteController}") - private PlanificacionTramiteController planificacionTramiteController; - - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - /** - * Atibuto para la habilitacion del boton de completar la tarea del flujo - */ - private Boolean btnFlujo; - - public ModificarPlanificacionInspeccionController() throws Exception { - super(TarmPlanificacionInspeccion.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - try { - this.startQuery(); - this.init(); - super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public void startQuery(){ - try { - this.pasteBpmScreenParameters(); - if(super.getMfilters().get("cplanificacion")!=null){ - cplanificacion=Long.parseLong(super.getMfilters().get("cplanificacion").toString()); - } - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record = new TarmPlanificacionInspeccion(); - beanalias = "MODIFICARPLANIFICACIONCONTROLLER"; - btnFlujo=Boolean.FALSE; - this.planificacionTramiteController = new PlanificacionTramiteController(); - this.planificacionTramiteController.setLrecord(new ArrayList()); - - //Quemando el codigo de planificacion - //this.cplanificacion=99L; - - //Obteniendo la planificacion - if(this.cplanificacion!=null){ - this.record=PlanificacionInspeccionController.findPorCodigo(this.cplanificacion); - - if(this.record!=null){ - // Obteniendo el centro de control - this.centroControl = CentroControlArmasController.findPorCodigo(this.record.getCcentrocontrol()); - this.nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), - centroControl.getNombreinstitucioncodigo()).getDescription(); - - //Obteniendo los tramites - this.planificacionTramiteController.setCplanificacion(this.record.getPk()); - this.planificacionTramiteController.setRecperpage(4000); - this.planificacionTramiteController.querydatabaseAprobacion(); - Collections.sort(planificacionTramiteController.getLrecord(), new Comparator() { - public int compare(TarmPlanificacionTramite p1, TarmPlanificacionTramite p2) { - return new Long(p1.getMesnumero()).compareTo(p2.getMesnumero()); - } - }); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("anno desc"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if (!lrecord.isEmpty()) { - // record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - - request.getModifiedData().put("INSPECCIONES", this.planificacionTramiteController.getLrecord()); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.planificacionTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.planificacionSalvada = true; - btnFlujo=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo que carga los meses disponibles atendiendo a la fecha de expiracion del documento - * - * @param tramite - */ - public void cargarMeses(TarmPlanificacionTramite inspeccion) { - this.listaMeses.clear(); - Calendar calendario = Calendar.getInstance(); - Integer intmesnumero = calendario.get(Calendar.MONTH); - this.planificacionTramiteController.getRecord().setMesnumero(Long.parseLong(intmesnumero.toString())); - switch (calendario.get(Calendar.MONTH)) { - case 0: - listaMeses.add("Enero"); - listaMeses.add("Febrero"); - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 1: - listaMeses.add("Febrero"); - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 2: - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 3: - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 4: - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 5: - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 6: - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 7: - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 8: - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 9: - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 10: - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - break; - case 11: - inspeccion.setMes("Diciembre"); - break; - } - } - - /** - * Metodo que ordena las inspecciones por mes y por nombre Ordenamiento simple de burbujas - */ - public void ordenarPorMesNombre() { - try { - // Ordenando por mes - for (int i = 0; i < this.planificacionTramiteController.getLrecord().size() - 1; i++) { - for (int j = i + 1; j < this.planificacionTramiteController.getLrecord().size(); j++) { - // Verificando que la ispeccion en j tenga un mes anterior - // a la inspeccion en i - if (this.planificacionTramiteController.getLrecord().get(j).getMesnumero() < this.planificacionTramiteController.getLrecord() - .get(i).getMesnumero()) { - TarmPlanificacionTramite temp = this.planificacionTramiteController.getLrecord().get(j); - this.planificacionTramiteController.getLrecord().set(j, this.planificacionTramiteController.getLrecord().get(i)); - this.planificacionTramiteController.getLrecord().set(i, temp); - } - } - } - - // Ordenando por Nombre - for (int i = 0; i < this.planificacionTramiteController.getLrecord().size() - 1; i++) { - for (int j = i + 1; j < this.planificacionTramiteController.getLrecord().size(); j++) { - - // Obteniendo el documento en i - TarmDocumentoHabilitante documentoi = DocumentoHabilitanteController.findPorCodigo(this.planificacionTramiteController - .getLrecord().get(i).getCdocumento().toString()); - - // Obteniendo el documento en j - TarmDocumentoHabilitante documentoj = DocumentoHabilitanteController.findPorCodigo(this.planificacionTramiteController - .getLrecord().get(j).getCdocumento().toString()); - - // Obteniendo la persona en i - TcustPersonDetail personai = PersonDetailController.find(documentoi.getPersoncode().toString()); - - // Obteniendo la persona en j - TcustPersonDetail personaj = PersonDetailController.find(documentoj.getPersoncode().toString()); - - // Verificando que la ispeccion en j tenga un nombre menor - // a la inspeccion en i si la inspeccion es del mismo mes - if (this.planificacionTramiteController.getLrecord().get(i).getMesnumero() == this.planificacionTramiteController.getLrecord() - .get(j).getMesnumero() - && personaj.getName().toLowerCase().compareToIgnoreCase(personai.getName().toLowerCase()) < 0) { - TarmPlanificacionTramite temp = this.planificacionTramiteController.getLrecord().get(j); - this.planificacionTramiteController.getLrecord().set(j, this.planificacionTramiteController.getLrecord().get(i)); - this.planificacionTramiteController.getLrecord().set(i, temp); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - if(!btnFlujo){ - MessageHelper.setMessageInfo("GUARDE LOS CAMBIOS"); - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cplanificacion", this.cplanificacion); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=false; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public PlanificacionTramiteController getPlanificacionTramiteController() { - return planificacionTramiteController; - } - - public void setPlanificacionTramiteController(PlanificacionTramiteController planificacionTramiteController) { - this.planificacionTramiteController = planificacionTramiteController; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getNombreCentroControl() { - return nombreCentroControl; - } - - public void setNombreCentroControl(String nombreCentroControl) { - this.nombreCentroControl = nombreCentroControl; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController(DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public Boolean getPlanificacionSalvada() { - return planificacionSalvada; - } - - public void setPlanificacionSalvada(Boolean planificacionSalvada) { - this.planificacionSalvada = planificacionSalvada; - } - - public List getListaMeses() { - return listaMeses; - } - - public void setListaMeses(List listaMeses) { - this.listaMeses = listaMeses; - } - - public List getListaAnnos() { - return listaAnnos; - } - - public void setListaAnnos(List listaAnnos) { - this.listaAnnos = listaAnnos; - } - - public TarmCentroControlJur getJurisdiccionCentroControl() { - return jurisdiccionCentroControl; - } - - public void setJurisdiccionCentroControl(TarmCentroControlJur jurisdiccionCentroControl) { - this.jurisdiccionCentroControl = jurisdiccionCentroControl; - } - - public List getPlanificaciones() { - return planificaciones; - } - - public void setPlanificaciones(List planificaciones) { - this.planificaciones = planificaciones; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController(PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public Long getCplanificacion() { - return cplanificacion; - } - - public void setCplanificacion(Long cplanificacion) { - this.cplanificacion = cplanificacion; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/NotificarEmisionDocumentoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/NotificarEmisionDocumentoController.java.svn-base deleted file mode 100644 index bf01c18..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/NotificarEmisionDocumentoController.java.svn-base +++ /dev/null @@ -1,588 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.math.BigDecimal; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.param.TarmTramitesAtendidos; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class NotificarEmisionDocumentoController extends AbstractController { - - private TgeneCatalogDetail detallecatalogo = new TgeneCatalogDetail(); - private TgeneCatalogDetail detallecatalogoTipoTramite = new TgeneCatalogDetail(); - private TgeneCatalogDetail usoActividad = new TgeneCatalogDetail(); - private TgeneCatalogDetail identificacion = new TgeneCatalogDetail(); - private TgeneCatalogDetail estadotramite = new TgeneCatalogDetail(); - private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - private TarmCentroControl centroControl = new TarmCentroControl(); - private TarmTramite tramite=new TarmTramite(); - private TarmSolicitud solicitud = new TarmSolicitud(); - private String codigoSolicitud = ""; - private boolean habilitarGrabar = false; - private boolean habilitarEnviar = false; - private boolean habilitarGeneraFecha; - - Date fechaNotificacion = null; - - @ManagedProperty(value="#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - - public NotificarEmisionDocumentoController() throws Exception { - super(TarmTramitesAtendidos.class); - } - - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "NOTIFICAREMISIONDOCUMENTO"; - this.record=new TarmTramitesAtendidos(); - record.isnew=true; - habilitarGeneraFecha=false; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } } - - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - cargarDatos(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - //xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - codigoSolicitud=super.getMfilters().get("csolicitud"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - if(fechaNotificacion==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_camponotificacion")); - return; - } - - record.setCcentrocontrol(centroControl.getPk()); - record.setCtramite(tramite.getPk()); - - java.sql.Date sFechaActual=new java.sql.Date(Calendar.getInstance().getTimeInMillis()); - - Calendar cal = Calendar.getInstance(); - cal.setTime(fechaNotificacion); - java.sql.Date sFechaNotificacion=new java.sql.Date(cal.getTimeInMillis()); - - record.setFechaatencion(sFechaNotificacion); - record.setFecharegistro(sFechaActual); - - this.update(); - - aprobarTramite(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - habilitarEnviar = true; - habilitarGrabar = false; - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute( - "Maia.refreshusertasks()"); - habilitarGeneraFecha = true; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - // validamos si cargamos los datos cuando apruebe - Map datosmail = new HashMap(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - SimpleDateFormat sdf1 = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),"MILITARYGRADE").getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("tramite",solicitudTramite.getNumerotramite()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - datosmail.put("fechanotificacion",sdf1.format(fechaNotificacion)); - - TarmTramite tramite =TarmTramiteController.find(String.valueOf(solicitud.getCtramite())); - datosmail.put("tipoTramite",(tramite==null || tramite.getModifiedData().get("tipotramite")==null)?"":tramite.getModifiedData().get("tipotramite")); - datosmail.put("tipoAutorizacion",(tramite==null || tramite.getModifiedData().get("tipoautorizacion")==null)?"":tramite.getModifiedData().get("tipoautorizacion")); - datosmail.put("usoactividad",(tramite==null || tramite.getModifiedData().get("usoactividad")==null)?"":tramite.getModifiedData().get("usoactividad")); - datosmail.put("categoria",(tramite==null || tramite.getModifiedData().get("categoria")==null)?"":tramite.getModifiedData().get("categoria")); - - request.modifiedData().put("TID", tid); - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - ponerEstadoRegistradoArmas(); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void ponerEstadoRegistradoArmas() { - try { - Boolean grabarCambioEstado = Boolean.FALSE; - List armasSolicitudLst = TarmSolicitudArmasController.findPorCSolicitud(codigoSolicitud); - for(TarmSolicitudArmas armaSolicitud:armasSolicitudLst){ - TarmArmas armaObj = ArmasController.findSimple(armaSolicitud.getPk().getCarma()); - if(armaObj.getEstado().equals("PREG")){ - armaObj.setIsnew(false); - armaObj.setEstado("APTA"); - armas.update(armaObj); - grabarCambioEstado = Boolean.TRUE; - // Cambia el estado del arma en caso de existir un estado posterior en el historial - TarmArmas armaUltimoEstadoObj = ArmasController.findXCodigoArma(armaObj.getCodigoarma()); - if(armaUltimoEstadoObj!=null){ - armaUltimoEstadoObj.setIsnew(false); - armaUltimoEstadoObj.setEstado("APTA"); - armas.update(armaUltimoEstadoObj); - } - } - } - if(grabarCambioEstado){ - armas.save(); - } - - DtoSave dtoArmas = armas.getDtoSave(); - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(armas.getBeanalias(), dtoArmas); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - armas.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - try { - if(fechaNotificacion==null){ - return; - } - - DtoQuery dto = super.getDtoQuery(true); - Filter filtro = new Filter(); - Calendar cal = Calendar.getInstance(); - cal.setTime(fechaNotificacion); - java.sql.Date sFechaNotificacion=new java.sql.Date(cal.getTimeInMillis()); - - dto.addFiltro(new Filter("fechaatencion", ">=", sFechaNotificacion.toString())); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo para cargar los datos iniciales - */ - private void cargarDatos(){ - try { - solicitud = SolicitudArmasController.find(codigoSolicitud); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - } - - if(tramite!=null){ - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - } - - if(this.getLoginController()!=null && 108 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - TarmDocumentoHabilitante documentohabilitante =DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); - fechaNotificacion = documentohabilitante.getFechaemision(); - } - obtenerCentroControl(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private void obtenerCentroControl() throws Exception { -// TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); -// PersonAddressController personAddressController = new PersonAddressController(); -// TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); -// TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - //institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Metodo para filtrar por centro de control - * @param ccentroControl - * @return - */ - public List findPorCentroControlFechaAtencion(String ccentroControl) { - try { - this.init(); - this.recperpage = 15; - this.addFilter("ccentrocontrol", ccentroControl); - this.querydatabase(); - if ((this.lrecord != null) && !this.lrecord.isEmpty()) { - return this.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - @Override - public void query() throws Exception { - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - /** - * Metodo raiz para generar la fecha de notificacion a partir de la fecha actual - */ - public void generarFecha(){ - Calendar calendario = Calendar.getInstance(); - calendario.setTime(new Date()); - calendario.add(Calendar.DAY_OF_YEAR,0);//adiciona los dias a partir de los cuales debe empezar la notificacion - generarFecha(calendario.getTime()); - } - - - /** - * Metodo recursivo para generar una fecha de Notificacion, siempre y cuando la fecha se encuentre disponible - * para ese centro de control - * @param fecha - */ - public void generarFecha(Date fecha){ - fechaNotificacion =TgeneNotAccountingDayController.isfechalaboral(fecha); - List listaCentroControl= CentroControlArmasController.find(solicitud.getCcentrocontrol()); - int tramitesPorDia = 0; - - if(listaCentroControl!=null && !listaCentroControl.isEmpty()){ - centroControl = listaCentroControl.get(0); - if(listaCentroControl.get(0).getTramitespordia()!=null){ - tramitesPorDia = centroControl.getTramitespordia().intValue(); - } - } - Calendar fNotificacion = Calendar.getInstance(); - fNotificacion.setTime(fechaNotificacion); - - Calendar fActualUnDia = Calendar.getInstance(); - fActualUnDia.setTime(new Date()); - fActualUnDia.add(Calendar.DAY_OF_YEAR,1); - long fechaDiferencia = (fActualUnDia.getTimeInMillis() - fNotificacion.getTimeInMillis())/(24 * 60 * 60 * 1000); - - List listaTramitesAtendidos = findPorCentroControlFechaAtencion(solicitud.getCcentrocontrol()); - - if( fechaDiferencia == 1L || fechaDiferencia == 0 || (listaTramitesAtendidos!=null && !listaTramitesAtendidos.isEmpty() && tramitesPorDia >0 && listaTramitesAtendidos.size()>=tramitesPorDia)){ - Calendar calendario = Calendar.getInstance(); - calendario.setTime(fechaNotificacion); - calendario.add(Calendar.DAY_OF_YEAR,1); - generarFecha(calendario.getTime()); - } - - habilitarGrabar=true; - - - } - - /** - * Metodo para anular el tramite - * @throws Exception - */ - private void aprobarTramite() throws Exception { - solicitudTramite=solicitudTramiteController.findByCSolicitud(codigoSolicitud); - solicitudTramiteController.setRecord(solicitudTramite); - solicitudTramiteController.getRecord().setEstadotramite("APB"); - solicitudTramiteController.getRecord().setEstadotramitecodigo("ESTADOSOLICITUD"); - solicitudTramiteController.update(); - solicitudTramiteController.save(); - } - - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - - - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - - public TarmTramite getTramite() { - return tramite; - } - - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - - public Date getFechaNotificacion() { - return fechaNotificacion; - } - - - public void setFechaNotificacion(Date fechaNotificacion) { - this.fechaNotificacion = fechaNotificacion; - } - - - public boolean isHabilitarGrabar() { - return habilitarGrabar; - } - - - public void setHabilitarGrabar(boolean habilitarGrabar) { - this.habilitarGrabar = habilitarGrabar; - } - - - public boolean isHabilitarEnviar() { - return habilitarEnviar; - } - - - public void setHabilitarEnviar(boolean habilitarEnviar) { - this.habilitarEnviar = habilitarEnviar; - } - - - public boolean isHabilitarGeneraFecha() { - return habilitarGeneraFecha; - } - - - public void setHabilitarGeneraFecha(boolean habilitarGeneraFecha) { - this.habilitarGeneraFecha = habilitarGeneraFecha; - } - - - public ArmasController getArmas() { - return armas; - } - - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/OrdenTrabajoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/OrdenTrabajoController.java.svn-base deleted file mode 100644 index ea20720..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/OrdenTrabajoController.java.svn-base +++ /dev/null @@ -1,387 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmSolicitudImportacion; -import com.fp.persistence.parmas.param.TarmRequisito; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmOrdenTrabajo; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class OrdenTrabajoController extends AbstractController { - - private Date fechaHoy; - private Date inicio; - private Date fin; - private java.sql.Date fechaInicio; - private java.sql.Date fechaFin; - - private TarmSolicitud solicitud=new TarmSolicitud(); - private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - private TarmTramite tramite=new TarmTramite(); - private String usoActividad; - private Long numeroOrden; - - private String documentoReferencia; - private String empresa; - private String lugarDireccion; - private String ruta; - private String tiempoEstimado; - private String observaciones; - - public OrdenTrabajoController() throws Exception { - super(TarmOrdenTrabajo.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "ORDENTRABAJOCONTROLLER"; - - fechaHoy=Calendar.getInstance().getTime(); - record=new TarmOrdenTrabajo(); - record.setIsnew(true); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Obteniendo la solicitud - solicitud= ValidacionTramiteLibreTransitoController.findPorSolicitudSimple("1"); - if(solicitud!=null && solicitud.getPk()!=null){ - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - - if(tramite!=null && tramite.getPk()!=null){ - //Uso actividad - TgeneCatalogDetail catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(catalogDetailTramite!=null && tramite.getUsoactividad()!=null && tramite.getUsoactividadcodigo()!=null){ - usoActividad=catalogDetailTramite.getDescription(); - } - - } - } - } - - //Obteniendo el numero de orden - List listaOrdenes=OrdenTrabajoController.findAll(); - if(listaOrdenes==null || listaOrdenes.isEmpty()){ - numeroOrden=1L; - }else{ - numeroOrden=listaOrdenes.get(listaOrdenes.size()-1).getPk()+1; - } - - - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseAll() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - update(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void update(TarmOrdenTrabajo bean) throws Exception { - record=bean; - update(); - } - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Obtiene una orden de trabajo por su codigo - * @param cordentrabajo - * @return - */ - public static TarmOrdenTrabajo find(String cordentrabajo) { - try { - OrdenTrabajoController cc = new OrdenTrabajoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cordentrabajo); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findAll() { - try { - OrdenTrabajoController cc = new OrdenTrabajoController(); - cc.init(); - //cc.recperpage = 300; - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public Date getFechaHoy() { - return fechaHoy; - } - - public void setFechaHoy(Date fechaHoy) { - this.fechaHoy = fechaHoy; - } - - public Date getInicio() { - return inicio; - } - - public void setInicio(Date inicio) { - this.inicio = inicio; - } - - public Date getFin() { - return fin; - } - - public void setFin(Date fin) { - this.fin = fin; - } - - public java.sql.Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(java.sql.Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public java.sql.Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(java.sql.Date fechaFin) { - this.fechaFin = fechaFin; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public String getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - - public Long getNumeroOrden() { - return numeroOrden; - } - - public void setNumeroOrden(Long numeroOrden) { - this.numeroOrden = numeroOrden; - } - - public String getDocumentoReferencia() { - return documentoReferencia; - } - - public void setDocumentoReferencia(String documentoReferencia) { - this.documentoReferencia = documentoReferencia; - } - - public String getEmpresa() { - return empresa; - } - - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - - public String getLugarDireccion() { - return lugarDireccion; - } - - public void setLugarDireccion(String lugarDireccion) { - this.lugarDireccion = lugarDireccion; - } - - public String getRuta() { - return ruta; - } - - public void setRuta(String ruta) { - this.ruta = ruta; - } - - public String getTiempoEstimado() { - return tiempoEstimado; - } - - public void setTiempoEstimado(String tiempoEstimado) { - this.tiempoEstimado = tiempoEstimado; - } - - public String getObservaciones() { - return observaciones; - } - - public void setObservaciones(String observaciones) { - this.observaciones = observaciones; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesAnularController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesAnularController.java.svn-base deleted file mode 100644 index eee6e9a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesAnularController.java.svn-base +++ /dev/null @@ -1,292 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Controlador para listar los documentos habilitantes del sistema - * - */ - -@ManagedBean -@ViewScoped -public class PermisosAutorizacionesAnularController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - private TcustPersonDetail tcustPersonDetail; - - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - public PermisosAutorizacionesAnularController() throws Exception{ - super(TarmDocumentoHabilitante.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - } - - private void init(){ - this.beanalias = "PERMISOSAUTORIZACIONES"; - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - } - - @SuppressWarnings({ "unchecked", "deprecation" }) - @Override - protected void querydatabase() { - try { - if(!this.getMfilters().containsKey("personcode") || this.getMfilters().get("personcode")==null){ - MessageHelper.setMessageError("SELECCIONE UNA IDENTIFICACI\u00d3N"); - return; - } - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - HashMap mtables = new HashMap(); - //nombre - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - dto.addSubQuery(snombre); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identification", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - dto.addSubQuery(snumerodocumento); - SubQuery subqueryCategoriaCodigo= new SubQuery("TgeneCatalogDetail", "description", "description", "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipotramitecodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoriaCodigo); - - SubQuery subqueryipoAutorizacion= new SubQuery("TgeneCatalogDetail", "description", "descriptionTipoAut", "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipoautorizacioncodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryipoAutorizacion); - - SubQuery subqueryTipocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptiontram", "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.categoriacodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryUsocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptionact", "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.usoactividadcodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsocodigo); - SubQuery subqueryEstadoDoc=new SubQuery("TgeneCatalogDetail", "description", "estadodocumento", "i.pk.catalog = t.estado" - + " and i.pk.catalogcode= t.estadocode"); - dto.addSubQuery(subqueryEstadoDoc); - - dto.setOrderby("t.fechaemision desc"); - //filtro - Filter filtroFinal = new Filter(); - String sqlFinal= " t.fechaemision is not null "; - filtroFinal.setSql(sqlFinal); - dto.addFiltro(filtroFinal); - - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - java.util.Date fecha2=new java.util.Date(); - fecha2.setHours(0); - fecha2.setMinutes(0); - fecha2.setSeconds(0); - for (TarmDocumentoHabilitante item : lrecord) { - item.getModifiedData().put("btnanular", Boolean.TRUE); - java.util.Date fecha1=new java.util.Date(item.getFechaexpiracion().getTime()) ; - fecha1.setHours(0); - fecha1.setMinutes(0); - fecha1.setSeconds(0); - if(fecha1.getTime() msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - querydatabase(); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static void openLov() { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personLov.xhtml", options, null); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - tcustPersonDetail = (TcustPersonDetail) event.getObject(); - this.getMfilters().put("personcode",tcustPersonDetail.getPk().getPersoncode().toString()); - this.query(); - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new java.util.Date()); - StringBuilder ruta = new StringBuilder("cm:Suspencion"); - ruta = ruta.append("/cm:Suspencion-"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getExtension(String filename) { - int index = filename.lastIndexOf('.'); - if (index == -1) { - return ""; - } else { - return filename.substring(index + 1); - } - } - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - public TcustPersonDetail getTcustPersonDetail() { - return tcustPersonDetail; - } - - public void setTcustPersonDetail(TcustPersonDetail tcustPersonDetail) { - this.tcustPersonDetail = tcustPersonDetail; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesController.java.svn-base deleted file mode 100644 index 4ef282c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PermisosAutorizacionesController.java.svn-base +++ /dev/null @@ -1,154 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Controlador para listar los documentos habilitantes del sistema - * - */ - -@ManagedBean -@ViewScoped -public class PermisosAutorizacionesController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - private TcustPersonDetail tcustPersonDetail; - - public PermisosAutorizacionesController() throws Exception{ - super(TarmDocumentoHabilitante.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - } - - private void init(){ - this.beanalias = "PERMISOSAUTORIZACIONES"; - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(!this.getMfilters().containsKey("personcode") || this.getMfilters().get("personcode")==null){ - MessageHelper.setMessageError("SELECCIONE UNA IDENTIFICACI\u00d3N"); - return; - } - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - HashMap mtables = new HashMap(); - SubQuery subqueryCategoriaCodigo= new SubQuery("TgeneCatalogDetail", "description", "description", "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipotramitecodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoriaCodigo); - - SubQuery subqueryipoAutorizacion= new SubQuery("TgeneCatalogDetail", "description", "descriptionTipoAut", "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.tipoautorizacioncodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryipoAutorizacion); - - SubQuery subqueryTipocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptiontram", "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.categoriacodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryUsocodigo=new SubQuery("TgeneCatalogDetail", "description", "descriptionact", "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk=t.ctramite)" - + "and i.pk.catalogcode=(select a.usoactividadcodigo from TarmTramite a where a.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsocodigo); - SubQuery subqueryEstadoDoc=new SubQuery("TgeneCatalogDetail", "description", "estadodocumento", "i.pk.catalog = t.estado" - + " and i.pk.catalogcode= t.estadocode"); - dto.addSubQuery(subqueryEstadoDoc); - - dto.setOrderby("t.fechaemision desc"); - - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - } - - public static void openLov() { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personLov.xhtml", options, null); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - tcustPersonDetail = (TcustPersonDetail) event.getObject(); - this.getMfilters().put("personcode",tcustPersonDetail.getPk().getPersoncode().toString()); - this.query(); - } - - - - - public TcustPersonDetail getTcustPersonDetail() { - return tcustPersonDetail; - } - - public void setTcustPersonDetail(TcustPersonDetail tcustPersonDetail) { - this.tcustPersonDetail = tcustPersonDetail; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionInspeccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionInspeccionController.java.svn-base deleted file mode 100644 index 68c9068..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionInspeccionController.java.svn-base +++ /dev/null @@ -1,930 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.ins.TarmPlanificacionInspeccion; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class PlanificacionInspeccionController extends AbstractController { - - private TarmCentroControl centroControl; - - TgeneCatalogDetail actividad = null; - private String meses; - private String Periodo; - private List tipoplanificacionList; - private String idPlanificacion; - - private List listaPeriodo = new ArrayList(); - private String nombreCentroControl; - - private Boolean planificacionSalvada = false; - - private Boolean planificacionGenerada = false; - - private Boolean habilitarGeneracion = false; - - private Boolean planificacionesPrevias = false; - - private TarmCentroControlJur jurisdiccionCentroControl; - - // Codigo de planificacion (Variable de flujo) - private Long cplanificacion; - - private Float presupuesto1; - - private List listaMeses = new ArrayList(); - - private List listaAnnos = new ArrayList(); - - List planificaciones; - - @ManagedProperty(value = "#{planificacionTramiteController}") - private PlanificacionTramiteController planificacionTramiteController; - - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - private Boolean btnFlujo; - private String codigoPlanificacion; - /** - * codigo de la provincia del usuario logeado - */ - private String cprovincia; - public PlanificacionInspeccionController() throws Exception { - super(TarmPlanificacionInspeccion.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record = new TarmPlanificacionInspeccion(); - beanalias = "PLANIFICACIONINSPECCIONCONTROLLER"; - btnFlujo=Boolean.FALSE; - // Obteniendo el centro de control - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres = direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - this.jurisdiccionCentroControl = TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl = CentroControlArmasController.findPorCodigo(this.jurisdiccionCentroControl.getCcentrocontrol()); - this.nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(),centroControl.getNombreinstitucioncodigo()).getDescription(); - //codigo de la provincia del centro de control logeado - cprovincia=centroControl.getProvincecode(); - - // cargar tipo de planificacion - tipoplanificacionList = CatalogDetailController.find("TIPOPLANIFICACION"); - // Fecha de generacion - Calendar calendar = Calendar.getInstance(); - this.record.setFechageneracion(new Date(calendar.getTimeInMillis())); - - // Generando los annos posibles - planificaciones = PlanificacionInspeccionController.findAllByCentroControl(this.centroControl.getPk()); - Integer canno = Calendar.getInstance().get(Calendar.YEAR); - if (planificaciones != null && !planificaciones.isEmpty()) { - this.planificacionesPrevias = true; - //this.record.setAnno(Long.parseLong(canno.toString())); - this.listaAnnos.add(Long.parseLong(canno.toString())); - - } else { - this.planificacionesPrevias = false; - this.listaAnnos.add(Long.parseLong(canno.toString())); - canno++; - this.listaAnnos.add(Long.parseLong(canno.toString())); - } - - this.planificacionTramiteController = new PlanificacionTramiteController(); - this.planificacionTramiteController.setLrecord(new ArrayList()); - - this.documentoHabilitanteController = new DocumentoHabilitanteController(); - this.documentoHabilitanteController.setLrecord(new ArrayList()); - - //validamos si viene del flujo - if(cplanificacion!=null){ - TarmPlanificacionInspeccion planificacion=PlanificacionInspeccionController.findPorCodigo(cplanificacion); - if(planificacion!=null){ - if("N".equals(planificacion.getAprobada())){ - //listamos la planificacion en estado Negado - this.planificacionTramiteController.setLrecord(new ArrayList()); - this.planificacionTramiteController.setLrecord(PlanificacionTramiteController.findPorCodigoPlanificacion(cplanificacion)); - Collections.sort(planificacionTramiteController.getLrecord(), new Comparator() { - public int compare(TarmPlanificacionTramite p1, TarmPlanificacionTramite p2) { - return new Integer(Integer.parseInt(p1.getModifiedData().get("ordena").toString())).compareTo(new Integer(p2.getModifiedData().get("ordena").toString())); - } - }); - } - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_existePlanificacionAnno")); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("anno desc"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if (!lrecord.isEmpty()) { - // record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - if (this.planificacionGenerada) { - int i = 0; - float pre=0; - float tot = this.presupuesto1; - for (TarmPlanificacionTramite tramite : planificacionTramiteController.getLrecord()) { - i++; - if (tramite.getInspectores()==null || tramite.getPeriodo()==null || tramite.getVehiculos()==null || tramite.getPresupuesto()==null){ - MessageHelper.setMessageError("ERROR deben estar todos los campos llenos"); - return; - } - - - pre=pre+tramite.getPresupuesto(); - - - - } - - // MessageHelper.setMessageError(""+pre); - - - if (pre > tot){ - MessageHelper.setMessageError("ERROR Valor : "+tot+"es menor que : "+pre); - return; - } - //MessageHelper.setMessageError("ERROR "+i); - //break; - //Asignando el centro de control - this.record.setCcentrocontrol(this.centroControl.getPk()); - - // tipo de planificacion codigo - this.record.setIdPlanificacion(this.idPlanificacion); - - // tipo de planificacion catalogo - this.record.setPlanificacion("TIPOPLANIFICACION"); - - // presupuesto - - this.record.setPresupuesto(this.presupuesto1); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - - request.getModifiedData().put("PLANIFICACION", this.record); - codigoPlanificacion=this.record.getCodigo(); - request.getModifiedData().put("INSPECCIONES", this.planificacionTramiteController.getLrecord()); - - Response resp = callerhelper.executeSave(request); - - this.cplanificacion = (Long) resp.get("CPLANIFICACION"); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.planificacionTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.planificacionSalvada = true; - btnFlujo=Boolean.TRUE; - } else { - // MessageHelper.setMessageError(resp); - // this.planificacionSalvada=false; - } - } else { - // MessageHelper.setMessageError(new Exception(MsgControlArmas.getProperty("msg_planificacionNoGenerada"))); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo que inicia el flujo - */ - @Override - public void iniciarFlujo() { - try { - if(cplanificacion==null || cplanificacion==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarlaplanificacion")); - return; - } - Request request = this.callerhelper.getRequest(); - super.cleanRequest(request); - // Iniciando el flujo - request.modifiedData().put("cplanificacion", this.cplanificacion); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(codigoPlanificacion);//codigo de la planificaion PAB-2014-01 - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") +" "+ MsgControlArmas.getProperty("msg_noplanificacion")+ " : " +codigoPlanificacion); - cplanificacion=null; - btnFlujo=Boolean.FALSE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que genera la planificacion - */ - public void generarPlanificacion() { - try { - - //Verificando que no existan planificaciones previas para - //el centro de control y el anno seleccionado - List planificaciones=PlanificacionInspeccionController.findAllByCentroControlAnno(this.centroControl.getPk() - ,this.record.getAnno().toString()); - if(!planificaciones.isEmpty()){ - MessageHelper.setMessageError(new Exception(MsgControlArmas.getProperty("msg_existePlanificacionAnno"))); - }else{ - this.planificacionGenerada = false; - this.planificacionTramiteController.getLrecord().clear(); - - // Cargando los documentos habilitantes - //this.documentoHabilitanteController.setFechaInicio(this.record.getFechainicio()); - //this.documentoHabilitanteController.setFechaFin(this.record.getFechafin()); - List lstDocumentohabilitantes= DocumentoHabilitanteController.findInspeccionesGenerar(this.record.getFechainicio(), this.record.getFechafin(), this.centroControl); - - if (lstDocumentohabilitantes != null && !lstDocumentohabilitantes.isEmpty()) { - int i=0; - for (TarmDocumentoHabilitante documento : lstDocumentohabilitantes) { - System.out.println("i.."+i); - i++; - // Persona - // TcustPersonDetail detallesPersona = PersonDetailController.find(documento.getPersoncode().toString()); - // Tramite - if(documento.getCtramite()!=null){ - //TarmTramite tramite = TarmTramiteController.find(documento.getCtramite().toString()); - - if(documento.getModifiedData().get("ctramite")!=null){ - - TarmPlanificacionTramite inspeccion = new TarmPlanificacionTramite(); - inspeccion.setCsolicitud(documento.getCsolicitud()); - - inspeccion.setCtramite(Long.parseLong(documento.getModifiedData().get("ctramite").toString())); - inspeccion.setCdocumento(documento.getPk()); - inspeccion.setIsnew(true); - - inspeccion.getModifiedData().put("nombre", documento.getModifiedData().get("nombre")); - inspeccion.getModifiedData().put("nodocumento", documento.getModifiedData().get("nodocumento")); - inspeccion.getModifiedData().put("tipotramite", documento.getModifiedData().get("tipotramite")); - inspeccion.getModifiedData().put("usoactividad", documento.getModifiedData().get("usoactividad")); - inspeccion.getModifiedData().put("categoria", documento.getModifiedData().get("categoria")); - inspeccion.getModifiedData().put("fechacaducidad", documento.getFechaexpiracion()); - - Calendar calendario = Calendar.getInstance(); - SimpleDateFormat sdf = new SimpleDateFormat("dd-MM-yyyy"); - Integer dia = calendario.get(Calendar.DAY_OF_MONTH); - Integer mes = calendario.get(Calendar.MONTH); - Integer anno = calendario.get(Calendar.YEAR); - - // Fecha actual - java.util.Date fechaActual = sdf.parse(dia.toString() + "-" + mes.toString() + "-" + anno.toString()); - - // Fecha expiracion - calendario.setTime(documento.getFechaexpiracion()); - dia = calendario.get(Calendar.DAY_OF_MONTH); - mes = calendario.get(Calendar.MONTH); - anno = calendario.get(Calendar.YEAR); - java.util.Date fechaExpiracion = sdf.parse(dia.toString() + "-" + mes.toString() + "-" + anno.toString()); - - // Asignando el estado del tramite Caducada o Vigente - if (fechaExpiracion.compareTo(fechaActual) < 0) { - inspeccion.getModifiedData().put("estado", "Caducada"); - } else { - inspeccion.getModifiedData().put("estado", "Vigente"); - } - - // Calendar calendar = Calendar.getInstance(); - // this.record.setFechageneracion(new Date(calendar.getTimeInMillis())); - - // Asignando el mes - calendario.setTime(documento.getFechaexpiracion()); - Integer intmesnumero = calendario.get(Calendar.MONTH); - inspeccion.setMesnumero(Long.parseLong(intmesnumero.toString())); - switch (calendario.get(Calendar.MONTH)) { - case 0: - //inspeccion.setMes("Enero"); - inspeccion.getModifiedData().put("ordena",0); - break; - case 1: - //inspeccion.setMes("Febrero"); - inspeccion.getModifiedData().put("ordena",1); - break; - case 2: - //inspeccion.setMes("Marzo"); - inspeccion.getModifiedData().put("ordena",2); - break; - case 3: - //inspeccion.setMes("Abril"); - inspeccion.getModifiedData().put("ordena",3); - break; - case 4: - //inspeccion.setMes("Mayo"); - inspeccion.getModifiedData().put("ordena",4); - break; - case 5: - //inspeccion.setMes("Junio"); - inspeccion.getModifiedData().put("ordena",5); - break; - case 6: - //inspeccion.setMes("Julio"); - inspeccion.getModifiedData().put("ordena",6); - break; - case 7: - //inspeccion.setMes("Agosto"); - inspeccion.getModifiedData().put("ordena",7); - break; - case 8: - // inspeccion.setMes("Septiembre"); - inspeccion.getModifiedData().put("ordena",8); - break; - case 9: - // inspeccion.setMes("Octubre"); - inspeccion.getModifiedData().put("ordena",9); - break; - case 10: - // inspeccion.setMes("Noviembre"); - inspeccion.getModifiedData().put("ordena",10); - break; - case 11: - // inspeccion.setMes("Diciembre"); - inspeccion.getModifiedData().put("ordena",11); - break; - } - - - inspeccion.setMes(""); -// Inspectores - - inspeccion.getModifiedData().put("inspectores", "0"); - - // Vehiculos - - inspeccion.getModifiedData().put("vehiculos", "0"); - - // periodo - // inspeccion.setPeriodo("1er Trimestre"); - inspeccion.getModifiedData().put("periodo", ""); - - - // presupuesto - - inspeccion.getModifiedData().put("presupuesto", ""); - - // Asignando el record - this.planificacionTramiteController.create(); - this.planificacionTramiteController.setRecord(inspeccion); - this.planificacionTramiteController.update(); - } - } - } - - // Ordenando las inspecciones por Mes y por Nombre - //ordena la lista lvigenciaMeses TarmDocumentoHabilitante documento : lstDocumentohabilitantes - Collections.sort(planificacionTramiteController.getLrecord(), new Comparator() { - public int compare(TarmPlanificacionTramite p1, TarmPlanificacionTramite p2) { - return new Integer(Integer.parseInt(p1.getModifiedData().get("ordena").toString())).compareTo(new Integer(p2.getModifiedData().get("ordena").toString())); - } - }); - - if (!this.planificacionTramiteController.getLrecord().isEmpty()) { - this.planificacionGenerada = true; - } else { - this.planificacionGenerada = false; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_noExistenTramitesAnno") + " " + this.record.getAnno(), - new Object()); - } - } else { - this.planificacionGenerada = false; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_noExistenTramitesAnno") + " " + this.record.getAnno(), new Object()); - } - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que carga los meses disponibles atendiendo a la fecha de expiracion del documento - * - * @param tramite - */ - public void cargarMeses() { - - this.listaMeses.clear(); - - this.meses = this.planificacionTramiteController.getRecord().getPeriodo(); - - // this.planificacionTramiteController.getRecord().getPeriodo(); - - // MessageHelper.setMessageError(prueba.trim()); - - - - - - // 1er Cuatrimestre - if(this.meses!=null){ - - if (this.meses.equalsIgnoreCase("Mensual")){ - listaMeses.add("Enero"); - listaMeses.add("Febrero"); - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - } - - if (this.meses.equalsIgnoreCase("1er Cuatrimestre")){ - listaMeses.add("Enero"); - listaMeses.add("Febrero"); - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - } - if( this.meses.equalsIgnoreCase("2do Cuatrimestre")){ - - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - } if( this.meses.equalsIgnoreCase("3er Cuatrimestre")){ - - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - } - - if (this.meses.equalsIgnoreCase("1er Semestre")){ - listaMeses.add("Enero"); - listaMeses.add("Febrero"); - listaMeses.add("Marzo"); - listaMeses.add("Abril"); - listaMeses.add("Mayo"); - listaMeses.add("Junio"); - - } - - if (this.meses.equalsIgnoreCase("2do Semestre")){ - - listaMeses.add("Julio"); - listaMeses.add("Agosto"); - listaMeses.add("Septiembre"); - listaMeses.add("Octubre"); - listaMeses.add("Noviembre"); - listaMeses.add("Diciembre"); - - } - }else - this.listaMeses.clear(); - - - - - - - // } - } - - public void cargarPeriodo(TarmPlanificacionTramite inspeccion) { - - - - this.listaMeses.clear(); - this.listaPeriodo.clear(); - - switch (this.idPlanificacion) { - case "1": - - listaPeriodo.add("Mensual"); - - - break; - case "2": - listaPeriodo.add("1er Cuatrimestre"); - listaPeriodo.add("2do Cuatrimestre"); - listaPeriodo.add("3er Cuatrimestre"); - - - break; - case "3": - listaPeriodo.add("1er Semestre"); - listaPeriodo.add("2do Semestre"); - - - break; - - } - cargarMeses(); - - } - - /** - * Metodo que genera el codigo de la planificacion teniendo en cuenta el anio introducido por el usuario - */ - public void generarCodigoPlanificacion() { - try { - // Descripcion - this.record.setDescripcion(MsgControlArmas.getProperty("lbl_planificacionAnual") + " " + this.record.getAnno().toString()); - - // Codigo - Integer numeroPlanificacion = 1; - String textoNoPlanificacion = ""; - List planificacionesTmp = PlanificacionInspeccionController.findPorAnno(this.record.getAnno()); - if (planificacionesTmp != null && !planificacionesTmp.isEmpty()) { - numeroPlanificacion = planificacionesTmp.size() + 1; - } - if (numeroPlanificacion < 10) { - textoNoPlanificacion = "0" + numeroPlanificacion.toString(); - } else { - textoNoPlanificacion = numeroPlanificacion.toString(); - } - this.record.setCodigo("PAP-" + this.record.getAnno().toString() + "-" + textoNoPlanificacion); - - // Fecha inicio - Calendar calendario = Calendar.getInstance(); - calendario.set(Calendar.YEAR, Integer.parseInt(this.record.getAnno().toString())); - calendario.set(Calendar.DAY_OF_MONTH, 1); - calendario.set(Calendar.MONTH, 0); - this.record.setFechainicio(new Date(calendario.getTimeInMillis())); - - calendario.set(Calendar.DAY_OF_MONTH, 31); - calendario.set(Calendar.MONTH, 11); - this.record.setFechafin(new Date(calendario.getTimeInMillis())); - - this.habilitarGeneracion = true; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Busca las planificaciones de un anio - * - * @param codigoSolicitud - * @return - */ - public static List findPorAnno(Long anno) { - try { - PlanificacionInspeccionController cc = new PlanificacionInspeccionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("anno", anno.toString()); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca todas las planificaciones - * - * @param codigoSolicitud - * @return - */ - public static List findAllByCentroControl(String ccentrocontrol) { - try { - PlanificacionInspeccionController cc = new PlanificacionInspeccionController(); - // cc.init(); - cc.recperpage = 300; - cc.addFilter("ccentrocontrol", ccentrocontrol); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca todas las planificaciones - * - * @param codigoSolicitud - * @return - */ - public static List findAllByCentroControlAnno(String ccentrocontrol,String anno) { - try { - PlanificacionInspeccionController cc = new PlanificacionInspeccionController(); - // cc.init(); - cc.recperpage = 300; - cc.addFilter("ccentrocontrol", ccentrocontrol); - cc.addFilter("anno", anno); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca una planificacion por su codigo - * - * @param codigoSolicitud - * @return - */ - public static TarmPlanificacionInspeccion findPorCodigo(Long cplanificacion) { - try { - PlanificacionInspeccionController cc = new PlanificacionInspeccionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", cplanificacion.toString()); - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public PlanificacionTramiteController getPlanificacionTramiteController() { - return planificacionTramiteController; - } - - public void setPlanificacionTramiteController(PlanificacionTramiteController planificacionTramiteController) { - this.planificacionTramiteController = planificacionTramiteController; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getNombreCentroControl() { - return nombreCentroControl; - } - - public void setNombreCentroControl(String nombreCentroControl) { - this.nombreCentroControl = nombreCentroControl; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController(DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public Boolean getPlanificacionSalvada() { - return planificacionSalvada; - } - - public void setPlanificacionSalvada(Boolean planificacionSalvada) { - this.planificacionSalvada = planificacionSalvada; - } - - public Boolean getPlanificacionGenerada() { - return planificacionGenerada; - } - - public void setPlanificacionGenerada(Boolean planificacionGenerada) { - this.planificacionGenerada = planificacionGenerada; - } - - public List getListaMeses() { - return listaMeses; - } - - public void setListaMeses(List listaMeses) { - this.listaMeses = listaMeses; - } - - public List getListaPeriodo() { - return listaPeriodo; - } - - public void setListaPeriodo(List listaPeriodo) { - this.listaPeriodo = listaPeriodo; - } - - public String getPeriodo() { - return Periodo; - } - - public void setPeriodo(String Periodo) { - this.Periodo = Periodo; - } - - public Boolean getHabilitarGeneracion() { - return habilitarGeneracion; - } - - public void setHabilitarGeneracion(Boolean habilitarGeneracion) { - this.habilitarGeneracion = habilitarGeneracion; - } - - public List getListaAnnos() { - return listaAnnos; - } - - public void setListaAnnos(List listaAnnos) { - this.listaAnnos = listaAnnos; - } - - public Boolean getPlanificacionesPrevias() { - return planificacionesPrevias; - } - - public void setPlanificacionesPrevias(Boolean planificacionesPrevias) { - this.planificacionesPrevias = planificacionesPrevias; - } - - public TarmCentroControlJur getJurisdiccionCentroControl() { - return jurisdiccionCentroControl; - } - - public void setJurisdiccionCentroControl(TarmCentroControlJur jurisdiccionCentroControl) { - this.jurisdiccionCentroControl = jurisdiccionCentroControl; - } - - public List getPlanificaciones() { - return planificaciones; - } - - public void setPlanificaciones(List planificaciones) { - this.planificaciones = planificaciones; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController(PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public Long getCplanificacion() { - return cplanificacion; - } - - public void setCplanificacion(Long cplanificacion) { - this.cplanificacion = cplanificacion; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - /*CFLORES*/ - public List getTipoplanificacionList() { - return tipoplanificacionList; - } - - public void setTipoplanificacionList(List tipoplanificacionList) { - this.tipoplanificacionList = tipoplanificacionList; - } - - public String getIdPlanificacion() { - return idPlanificacion; - } - - public void setIdPlanificacion(String idPlanificacion) { - this.idPlanificacion = idPlanificacion; - } - - public Float getPresupuesto1() { - return presupuesto1; - } - - public void setPresupuesto1(Float presupuesto1) { - this.presupuesto1 = presupuesto1; - } - - -/**/ -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionTramiteController.java.svn-base deleted file mode 100644 index 1b15a6e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/PlanificacionTramiteController.java.svn-base +++ /dev/null @@ -1,328 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class PlanificacionTramiteController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - private Long cplanificacion; - - public String Periodo; - - public PlanificacionTramiteController() throws Exception { - super(TarmPlanificacionTramite.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "PLANIFICACIONTRAMITECONTROLLER"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Busca las inspecciones solo para la Tarea de Aprobacion - */ - @SuppressWarnings("unchecked") - protected void querydatabaseAprobacion() { - try { - DtoQuery dto = super.getDtoQuery(true); -// //Nombre/Razon social - SubQuery subqueryNombre= new SubQuery("TcustPersonDetail","name","nombre", "i.pk.personcode=(select o.personcode from TarmDocumentoHabilitante o where o.pk=t.cdocumento) and" - + " i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNombre); - SubQuery subqueryNDocumento=new SubQuery("TcustPersonDetail","identification","nodocumento", "i.pk.personcode=(select o.personcode from TarmDocumentoHabilitante o where o.pk=t.cdocumento) and" - + " i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryNDocumento); -// //datos del tramite -// //Tipo de tramite - SubQuery subqueryTipoTramite= new SubQuery("TgeneCatalogDetail","description","tipotramite","i.pk.catalog= (select o.tipotramite from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.tipotramitecodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryTipoTramite); - SubQuery subqueryTramite= new SubQuery("TgeneCatalogDetail","description","tipoautorizacion","i.pk.catalog= (select o.tipoautorizacion from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.tipoautorizacioncodigo from TarmTramite o where o.pk=t.ctramite) "); - dto.addSubQuery(subqueryTramite); -// //Uso/Actividad - SubQuery subqueryUsoActividad= new SubQuery("TgeneCatalogDetail","description","usoactividad","i.pk.catalog= (select o.usoactividad from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.usoactividadcodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryUsoActividad); -// //Categoria - SubQuery subqueryCategoria= new SubQuery("TgeneCatalogDetail","description","categoria","i.pk.catalog= (select o.categoria from TarmTramite o where o.pk=t.ctramite) and" - + " i.pk.catalogcode=(select o.categoriacodigo from TarmTramite o where o.pk=t.ctramite)"); - dto.addSubQuery(subqueryCategoria); - - SubQuery subqueryCodTramite=new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechacaducidad", "i.pk= t.cdocumento"); - dto.addSubQuery(subqueryCodTramite); - //Filtro de codigo de planificacion - if(this.cplanificacion!=null){ - dto.addFiltro(new Filter("cplanificacion", this.cplanificacion.toString())); - } - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - for (TarmPlanificacionTramite inspeccion : this.lrecord) { - - Calendar calendario=Calendar.getInstance(); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - Integer dia=calendario.get(Calendar.DAY_OF_MONTH); - Integer mes=calendario.get(Calendar.MONTH); - Integer anno=calendario.get(Calendar.YEAR); - - //Fecha actual - java.util.Date fechaActual=sdf.parse(dia.toString()+"-"+mes.toString()+"-"+anno.toString()); - - //Fecha expiracion - calendario.setTime((Date)inspeccion.getModifiedData().get("fechacaducidad")); - dia=calendario.get(Calendar.DAY_OF_MONTH); - mes=calendario.get(Calendar.MONTH); - anno=calendario.get(Calendar.YEAR); - java.util.Date fechaExpiracion=sdf.parse(dia.toString()+"-"+mes.toString()+"-"+anno.toString()); - - //Asignando el estado del tramite Caducada o Vigente - if(fechaExpiracion.compareTo(fechaActual)<0){ - inspeccion.getModifiedData().put("estado", "Caducada"); - }else{ - inspeccion.getModifiedData().put("estado", "Vigente"); - } - - - - - inspeccion.getModifiedData().put("presupuesto", inspeccion.getPresupuesto()); - inspeccion.getModifiedData().put("inspectores", this.record.getInspectores()); -// } - } - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - @Override - public void update() throws Exception { - try { - if(this.record.getMes().equalsIgnoreCase("Enero")){ - this.record.setMesnumero(0L); - }else if(this.record.getMes().equalsIgnoreCase("Febrero")){ - this.record.setMesnumero(1L); - }else if(this.record.getMes().equalsIgnoreCase("Marzo")){ - this.record.setMesnumero(2L); - }else if(this.record.getMes().equalsIgnoreCase("Abril")){ - this.record.setMesnumero(3L); - }else if(this.record.getMes().equalsIgnoreCase("Mayo")){ - this.record.setMesnumero(4L); - }else if(this.record.getMes().equalsIgnoreCase("Junio")){ - this.record.setMesnumero(5L); - }else if(this.record.getMes().equalsIgnoreCase("Julio")){ - this.record.setMesnumero(6L); - }else if(this.record.getMes().equalsIgnoreCase("Agosto")){ - this.record.setMesnumero(7L); - }else if(this.record.getMes().equalsIgnoreCase("Spetiembre")){ - this.record.setMesnumero(8L); - }else if(this.record.getMes().equalsIgnoreCase("Octubre")){ - this.record.setMesnumero(9L); - }else if(this.record.getMes().equalsIgnoreCase("Noviembre")){ - this.record.setMesnumero(10L); - }else if(this.record.getMes().equalsIgnoreCase("Diciembre")){ - this.record.setMesnumero(11L); - } - - - - // this.record.setPeriodo("hola1"); - - - - super.update(); - //ordenarPorMesNombre(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - /** - * Busca las las inspecciones de una planificacion dado su codigo - * @param codigoSolicitud - * @return - */ - public static List findPorCodigoPlanificacion(Long cplanificacion) { - try { - PlanificacionTramiteController cc = new PlanificacionTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cplanificacion", cplanificacion.toString()); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo apara actualizar el registro - * @throws Exception - */ - public void actualizar(TarmPlanificacionTramite planificacionTramite) throws Exception{ - record=planificacionTramite; - super.update(); - } - - public Long getCplanificacion() { - return cplanificacion; - } - - public void setCplanificacion(Long cplanificacion) { - this.cplanificacion = cplanificacion; - } - - public static long getSerialversionuid() { - return serialVersionUID; - } - public String getPeriodo() { - return Periodo; - } - - public void setPeriodo(String Periodo) { - this.Periodo = Periodo; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.netbeans-base deleted file mode 100644 index c4eb9c7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.netbeans-base +++ /dev/null @@ -1,1919 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -/** - * Controlador principal que maneja la entidad TarmSolicitudArmas - * @author Carlos Guzman - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RecepcionArmasController extends AbstractController { - - private TcustPersonDetail personaDetalle; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private List lArmas = new ArrayList(); - private List lSolicitudGuardias = new ArrayList(); - private List lGuardias = new ArrayList(); - private TgeneCatalogDetail detallecatalogo = new TgeneCatalogDetail(); - private TgeneCatalogDetail detallecatalogoTipoTramite = new TgeneCatalogDetail(); - private TgeneCatalogDetail usoActividad = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoAutorizacion = new TgeneCatalogDetail(); - private TgeneCatalogDetail categoria = new TgeneCatalogDetail(); - private TgeneCatalogDetail identificacion = new TgeneCatalogDetail(); - private TgeneCatalogDetail estadotramite = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoArchivo = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoCosto = new TgeneCatalogDetail(); - private TgeneCatalogDetail vigencia = new TgeneCatalogDetail(); - private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmTramite tramite=new TarmTramite(); - private TarmSolicitud solicitud = new TarmSolicitud(); - private TarmTipoArmaExplosivo tipoArmaExplosivo = new TarmTipoArmaExplosivo(); - private boolean controlPantallaEntregado; - private boolean controlPantallaVisualizarTramiteFirmar; - private boolean controlPantallaVerificarInformacionDevolucion; - private String codigoSolicitud = ""; - private String observacion; - private String estado; - private Date fec_actual; - private String xpathflujo; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail usuario; - private Boolean btnFlujo; - private Boolean btnGrabar; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardiasController; - - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value = "#{colaImpresionController}") - private ColaImpresionController colaImpresionController; - - @ManagedProperty(value = "#{documentoHabilitanteDetalleController}") - private DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController; - - @ManagedProperty(value="#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - /** - * controlador de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitudMP; - - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - - private String numeroTransaccion=""; - - private List solAgenciaSucursals; - - private List documentosList; - - private Boolean requiereNoSolAucpBln; - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - public RecepcionArmasController() throws Exception { - super(TarmSolicitudArmas.class); - } - - - @PostConstruct - private void postconstruct() throws Exception { - startQuery(); - this.init(); - querydatabase(); - - solicitudController= new SolicitudController(); - - Boolean aprobarFichaBLN = Boolean.FALSE; - - laccion = new ArrayList(); - - // Validamos en el caso de permisos - TarmTramite tramite = TarmTramiteController.find(numeroTransaccion); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription().equalsIgnoreCase("PERMISO")){ - ListarmaPruebaList = IngresoFichaTecnicaArmasController.buscarFichasPorSolicitud(codigoSolicitud); - for(TarmArmaPruebas armaPruebaObj:armaPruebaList){ - if(armaPruebaObj.getApruebaevaluacion().equalsIgnoreCase("Y")){ - aprobarFichaBLN = Boolean.TRUE; - break; - } - } - if(aprobarFichaBLN){ - laccion=CatalogDetailController.find("ACCION"); - } - else{ - TgeneCatalogDetail catalogRechazar = CatalogDetailController.findCatalogo("ACCION","RECH"); - laccion.add(catalogRechazar); - } - } - else{ - laccion=CatalogDetailController.find("ACCION"); - } - - - try { - //consulta de agencias - cargarAgencias(); - //consulta de documentos - cargarDocumentos(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Método en el cual se cargan las agencias que corresponden a la solicitud - * @throws Exception - */ - private void cargarAgencias() throws Exception{ - if(codigoSolicitud!=null){ - solAgenciaSucursals=SolicitudAgenciaSucursalController.findPorSolicitud(codigoSolicitud); - } - } - - /** - * Método en el cual se cargan las agencias que corresponden a la solicitud - * @throws Exception - */ - private void cargarDocumentos() throws Exception{ - if(codigoSolicitud!=null){ - documentosList=TarmSolicitudDocumentoController.findPorSolicitud(codigoSolicitud);//documentoHabilitanteController.lrecord - } - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - //xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - numeroTransaccion=super.getMfilters().get("numerotransaccion"); - codigoSolicitud=super.getMfilters().get("csolicitud"); - System.out.println("numeroTransaccion .."+numeroTransaccion); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - try { - validarpantallaActual(); - recperpage = 500; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "RECEPCIONARMAS"; - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.fec_actual = new Date(); - btnFlujo=Boolean.FALSE; - btnGrabar=Boolean.TRUE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.lArmas.clear(); - this.lGuardias.clear(); - if (codigoSolicitud==null){ - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.csolicitud"); - - SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); - dto.addSubQuery(subquerymodelo); - SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryacrma); - - SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryserie); - - SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryCantidad); - - SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryPeso); - - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" - + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); - dto.addSubQuery(subqueryUnidadMedida); - - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryLongitud); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - - dto.addSubQuery(subqueryTipoArma); - - - Filter filtro = new Filter(); - filtro.setField("pk.csolicitud"); - filtro.setValue(codigoSolicitud); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - solicitudGuardiasController.addFilter("pk.csolicitud", codigoSolicitud); - solicitudGuardiasController.findPorSolicitud(codigoSolicitud); - solicitudGuardiasController.query(); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - if ((this.lrecord != null) && !this.lrecord.isEmpty()) { - } - - super.postQuery(this.lrecord); - } - - solicitud = SolicitudArmasController.find(codigoSolicitud); - - if (solicitud!=null){ - personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - - if(identificacion!=null){ - //personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(solicitud.getPersoncode()), tipoDireccion); - TcustPersonAddress direccionCliente=personAddressController.findPrincipal(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - } - - } - - //Proceso de tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - } - - if(tramite!=null && tramite.getPk() != null){ - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - vigencia = CatalogDetailController.findxCodigoCodcatalogo( tramite.getVigencia(), tramite.getVigenciacodigo()); - tipoArchivo = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipoarchivo(), tramite.getTipoarchivocodigo()); - tipoCosto = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipocosto(), tramite.getTipocostocodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - tipoAutorizacion = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - categoria = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - // CATEGORIA 14 PREVIA IMPORTACION - if(tramite!=null && tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - nombreInstitucion = obtenerCentroControl(); - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - } - - armasController.setRecperpage(500); - - //lArmas = armasController.findArmaRecep(lrecord.get(0).getPk().getCsolicitud()); - for(TarmSolicitudArmas solicitudArmas:lrecord){ - TarmArmas armas = new TarmArmas(); - armas = armasController.find(solicitudArmas.getPk().getCarma(),null); - lArmas.add(armas); - } - armasController.setLrecord(lArmas); - actualizarArmas(); - List listaCentroControl=null; - if(solicitud!=null && solicitud.getCcentrocontrol()!=null){ - listaCentroControl= CentroControlArmasController.find(solicitud.getCcentrocontrol()); - } - - if(listaCentroControl!=null && !listaCentroControl.isEmpty() ){//&& listaCentroControl.get(0).getTramitespordia()!=null){ - centroControl = listaCentroControl.get(0); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que usa para pasar el flujo al seleccionar el boton guardar - */ - public void guardar(){ - - } - - private void guardarcolaImpresionController(HashMap msave) throws Throwable{ - System.out.println("ACTUALIZA COLA DE IMPRESION"); - TarmDocumentoHabilitante docHabilitante=DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); - if(docHabilitante!=null && docHabilitante.getPk()!=null){ - System.out.println("ACTUALIZA COLA DE IMPRESION 1"); - ListlistaColaImprecion=ColaImpresionController.findByDocumentoCDoc(docHabilitante.getPk().toString()); - if(listaColaImprecion!=null && listaColaImprecion.size()>0){ - System.out.println("ACTUALIZA COLA DE IMPRESION 2"); - for (TarmColadeImpresion item : listaColaImprecion) { - item.setEstadoimpresion("PIMPR"); - item.setEstadoimpresioncode("ESTADOIMPRESION"); - colaImpresionController.update(item); - } - System.out.println("ACTUALIZA COLA DE IMPRESION 3"); - registrarGuardadoColaImpresion(msave); - System.out.println("ACTUALIZA COLA DE IMPRESION 4"); - } - } - - } - - private void registrarGuardadoColaImpresion(HashMap msave) throws Throwable{ - //= new HashMap(); - Request request = callerhelper.getRequest(); - DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); - dtosaveColaImpresion.setReturnpk(true); - dtosaveColaImpresion.setPosition(1); - msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); - request.setSaveTables(msave); -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// this.colaImpresionController.postCommit(resp); -// this.postCommit(resp); -// MessageHelper.setMessageInfo(resp); -// } else { -// MessageHelper.setMessageError(resp); -// throw new Exception(""+resp); -// } - } - - /** - * Metodo para guardar los documentos habilitantes - * @throws Throwable - */ - public void guardarDocumentoHabilitante() throws Throwable{ - HashMap msave = new HashMap(); - Calendar cal = Calendar.getInstance(); - String estado="APR"; - System.out.println("vigencia.getDescription() "+vigencia.getDescription()); - System.out.println("vigencia.getDescription().trim().equals(1200) "+vigencia.getDescription().trim().equals("1200")); - if(vigencia.getDescription()!=null && vigencia.getDescription().trim().equals("1200")){ - cal.set(Calendar.YEAR, 2999); - cal.set(Calendar.MONTH, 12); - cal.set(Calendar.DAY_OF_MONTH, 31); - }else{ - cal.add(Calendar.MONTH, Integer.valueOf(vigencia.getDescription())); - } - System.out.println(cal); - System.out.println(cal.getTime()); - TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - if("CARNET".equalsIgnoreCase(tipoArchivo.getDescription())){ - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription())){ - documentoHabilitanteController.create(); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCarma(null); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - //Grabacion en la cola de impresion - colaImpresionController.create(); - colaImpresionController.getRecord().setIsnew(true); - //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); - //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); - java.util.Date date = new java.util.Date(); - colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); - colaImpresionController.update(); - - } - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord==null || this.lrecord.isEmpty())){ - registrarGuardadoDocumentoHabilitante(msave); - } - - for(TarmSolicitudArmas armaSolicitud:this.lrecord){ - - if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ - documentoHabilitanteController.create(); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - //Grabacion en la cola de impresion - colaImpresionController.create(); - colaImpresionController.getRecord().setIsnew(true); - //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); - //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); - java.util.Date date = new java.util.Date(); - colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); - colaImpresionController.update(); - } - documentoHabilitanteDetalleController.create(); - documentoHabilitanteDetalleController.getRecord().setIsnew(true); - documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteDetalleController.update(); - if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ - registrarGuardadoDocumentoHabilitante(msave); - } - } - - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord!=null && !this.lrecord.isEmpty())){ - registrarGuardadoDocumentoHabilitante(msave); - return; - } - - }else - if("REPORTE".equalsIgnoreCase(tipoArchivo.getDescription())){ - documentoHabilitanteController.create(); - //TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setCarma((this.lrecord!=null &&!this.lrecord.isEmpty() && this.lrecord.size()>0)? this.lrecord.get(0).getPk().getCarma():null); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - for(TarmSolicitudArmas armaSolicitud:this.lrecord){ - documentoHabilitanteDetalleController.create(); - documentoHabilitanteDetalleController.getRecord().setIsnew(true); - documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteDetalleController.update(); - } - - registrarGuardadoDocumentoHabilitante(msave); - }else{ - throw new Exception("TIPO DOCUMENTO DE INVALIDO: "+tipoArchivo.getDescription()); - } - } - - /** Metodo para realizar el guardado del documento habilitante - * @param msave variable save - * @throws Throwable - */ - private void registrarGuardadoDocumentoHabilitante(HashMap msave) throws Throwable{ - Request request = callerhelper.getRequest(); - - DtoSave dtosaveDocumento = this.documentoHabilitanteController.getDtoSave(true); - dtosaveDocumento.setReturnpk(true); - dtosaveDocumento.setPosition(1); - DtoSave dtosaveDocumentoDetalle = this.documentoHabilitanteDetalleController.getDtoSave(true); - dtosaveDocumentoDetalle.setReturnpk(true); - dtosaveDocumentoDetalle.setPosition(2); - DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); - dtosaveColaImpresion.setReturnpk(true); - dtosaveColaImpresion.setPosition(3); - - msave.put(documentoHabilitanteController.getBeanalias(), dtosaveDocumento); - msave.put(documentoHabilitanteDetalleController.getBeanalias(), dtosaveDocumentoDetalle); - msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); - - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.documentoHabilitanteController.postCommit(resp); - this.documentoHabilitanteDetalleController.postCommit(resp); - this.colaImpresionController.postCommit(resp); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - throw new Exception(""+resp); - } - } - - - - /** - * Metodo que valida cual es la pantalla que se encuentra activa este controlador - */ - private void validarpantallaActual(){ - if(this.getLoginController()!=null && 24 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaEntregado=true; - } - else{ - controlPantallaEntregado=false; - } - - if(this.getLoginController()!=null && 34 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaVisualizarTramiteFirmar = true; - } - else{ - controlPantallaVisualizarTramiteFirmar = false; - } - - if(this.getLoginController()!=null && 33 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaVerificarInformacionDevolucion = true; - } - else{ - controlPantallaVerificarInformacionDevolucion = false; - } - } - - @Override - public void query() throws Exception { - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - - /** - * Metodo para enviar el documento habilitante por el flujo - */ - public void enviarDocumentoHabilitante(){ - - - } - - @Override - public void save() { - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); - return; - } - - actualizarArmas(); - actualizarSolicitudArmas(); - - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - String ruta = this.getRutaDocumento()+"/cm:actaEntregaRecepcionArmas.pdf"; - System.out.println("ruta : " + ruta); - sol.setXpathacta(ruta); - this.solicitudController.updateSolicitud(sol); - - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - btnFlujo=Boolean.TRUE; - btnGrabar=Boolean.FALSE; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que guarda el documento - */ - public void saveDocumentoHabilitante() { - - try { - // validamos si cargamos los datos cuando apruebe - Map datosmail = new HashMap(); - Request request = callerhelper.getRequest(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - - if (codigoAceptado().equals(estado)) { - request.modifiedData().put("BPMStatus", - bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - } else { - request.modifiedData().put("BPMStatus", - bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - this.update(); - - HashMap msave = new HashMap(); - - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("csolicitud", codigoSolicitud); - //request.modifiedData().put("numerotramite", "32"); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", "Analizar documento habilitante"); - request.modifiedData().put("observacion", observacion); - - - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute( - "Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - /** - * M\u00e9todo que valida si todas las armas se encuentran seleccionadas - * @return - */ - public boolean validarSeleccion(){ - for(TarmSolicitudArmas armaSeleccionada:lrecord){ - if(!armaSeleccionada.modifiedData().containsValue(Boolean.TRUE)){ - return false; - } - } - return true; - } - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - /** - * Metodo para armar la ruta del documento - * @return - */ - public String getRutaDocumento() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append( - (calendar.get(Calendar.MONTH) + 1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH) + 1)); - ruta = ruta.append("/cm:D-").append( - (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); - TarmSolicitud solicitud = SolicitudArmasController.find(codigoSolicitud); - ruta = ruta.append("/cm:").append(solicitud.getNumerosolicitud()); - ruta = ruta.append("/cm:").append("armas"); - return ruta.toString(); - } - - - - /** - * M\u00e9todo para imprimir - */ - public void imprimir(){ - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_imprimir_recepcion_armas")); - return; - } - this.reporteActaEntregaRecepArmas(); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - /** - * Obtiene el reporte de Acta de Entrega Recepción de Armas - */ - private void reporteActaEntregaRecepArmas() throws Exception{ - try { - //this.querydatabase(); - //buttonAction(); - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaCorteCldr = Calendar.getInstance(); - String gradoUsuario =""; - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - TarmSolicitudTramite soltra = SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - - String path = "armas/reports/repo"; - String filename="actaEntregaRecepcionArmas";//MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - String nombreUsuario; - if(usuario.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(usuario.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("usuario", nombreUsuario); - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - - //Fecha de solicitud - if(sol!=null && sol.getNumerosolicitud()!=null){ - if(soltra != null && soltra.getNumerotramite()!=null){ - parameters.put("numsolicitud", sol.getNumerosolicitud()); - parameters.put("numtramite", soltra.getNumerotramite()); - TcustPersonDetail persona = PersonDetailController.find(sol.getPersoncode().toString()); - parameters.put("cliente", persona.getName()); - } - }else{ - parameters.put("numsolicitud", " "); - } - - //No tramite - if(sol!=null && sol.getFregistro()!=null){ - SimpleDateFormat sdf2=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechaSolicitud", sdf2.format(sol.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - parameters.put("personcode", usuario.getPk().getPersoncode()); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("fecActual", fechaActualSB.toString()); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("gradoUsuario", gradoUsuario); - //parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - //parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode().toString()); - - String format = "pdf"; - - parameters.put("tipotram", this.tipoAutorizacion.getDescription()+" - "+this.categoria.getDescription()+" - "+this.usoActividad.getDescription()); - parameters.put("codResponsable",usuario.getPk().getPersoncode()); - - parameters.put("codigoQR",(sol!=null?sol.getNumerosolicitud():"")+" "+fechaActualSB.toString()+" "+ - gradoUsuario); - - try { - this.xpathflujo = this.getRutaDocumento(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo); - //this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - //this.record.getModifiedData().put("impresion",Boolean.TRUE); - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - /** - * M\u00e9todo para fimar documentos - */ - public void firmar(){ - System.out.println("Firmar"); - } - - /** - * M\u00e9todo para actualizar las armas en la base de datos seg\u00fan la pantalla en que se encuentre - * @throws Exception - */ - private void actualizarSolicitudArmas() throws Exception{ - for(TarmSolicitudArmas armaSeleccionada:lrecord){ - record = armaSeleccionada; - if(armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ - if(controlPantallaEntregado){ - record.setEntregada("Y"); - } - else{ - record.setAprobada("Y"); - } - } - if(!armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ - if(controlPantallaEntregado){ - record.setEntregada("N"); - } - else{ - record.setAprobada("N"); - } - } - update(); - } - - } - - - - - /** - * M\u00e9todo para leer las selecciones guardadas en la base y setearlas seg\u00fan la pantalla en la que se encuentre - * @throws Exception - */ - private void actualizarArmas() throws Exception{ - for(TarmSolicitudArmas solicitudArmas:lrecord){ - if("Y".equals(solicitudArmas.getEntregada()) && controlPantallaEntregado){ - solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); - } - if("Y".equals(solicitudArmas.getAprobada()) && !controlPantallaEntregado){ - solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); - } - } - } - - - @SuppressWarnings("unchecked") - protected void querydatabaseValidacionTransito() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTareaAutorizarTramite() { - try { - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("numerotransaccion", numeroTransaccion); - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equalsIgnoreCase("APR") || bpmDataStatus == null){ - bpmDataStatus="A"; - if(this.getLoginController()!=null && 30 == this.getLoginController().getRequest().getTransactionCode() && - "30".equals(getLoginController().getRequest().getTransactionModule())){ - guardarcolaImpresionController(msave); - } - }else{ - bpmDataStatus="D"; - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Map datosmail = new HashMap(); - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - if (bpmDataStatus.equals("D")) { - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("observaciones", bpmDataComment); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - request.modifiedData().put("datosmail", datosmail); - }else{ - SimpleDateFormat sdf1 = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),"MILITARYGRADE").getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("tramite",solicitudTramite.getNumerotramite()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - datosmail.put("fechanotificacion",sdf1.format(new Date())); - - TarmTramite tramite =TarmTramiteController.find(String.valueOf(solicitud.getCtramite())); - datosmail.put("tipoTramite",(tramite==null || tramite.getModifiedData().get("tipotramite")==null)?"":tramite.getModifiedData().get("tipotramite")); - datosmail.put("tipoAutorizacion",(tramite==null || tramite.getModifiedData().get("tipoautorizacion")==null)?"":tramite.getModifiedData().get("tipoautorizacion")); - datosmail.put("usoactividad",(tramite==null || tramite.getModifiedData().get("usoactividad")==null)?"":tramite.getModifiedData().get("usoactividad")); - datosmail.put("categoria",(tramite==null || tramite.getModifiedData().get("categoria")==null)?"":tramite.getModifiedData().get("categoria")); - request.modifiedData().put("datosmail", datosmail); - } - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - if(bpmDataStatus.equals("D")){ - saveAnularSolicitud(); - } - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveAnularSolicitud() { - try { - TarmTramite tarmTramite = null; - // CATEGORIA 14 PREVIA IMPORTACION - if(this.getLoginController().getRequest().getTransactionCode()==33){ - tarmTramite = TarmTramiteController.find(this.solicitud.getCtramite().toString()); - }else if(this.getLoginController().getRequest().getTransactionCode()==30){ - tarmTramite = TarmTramiteController.find(this.solicitudMP.getRecord().getCtramite().toString()); - } - if(tarmTramite!=null && tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - //Poner la solicitud en estado anulado - solicitud.setEstado("ANU"); - solicitud.setAucp(null); - solicitudMP.setRecord(solicitud); - solicitudMP.update(); - DtoSave dtoSolicitud = solicitudMP.getDtoSave(); - - TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(solicitud.getPk()); - if(solicitudTramiteObj!=null){ - solicitudTramiteObj.setIsnew(false); - solicitudTramiteObj.setEstadotramite("ANU"); - solicitudTramiteController.updateSolicitud(solicitudTramiteObj); - } - // DocumentoHabilitanteController documentoHabilitanteController - TarmDocumentoHabilitante documentoHabilitanteTmp = DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); - if(documentoHabilitanteTmp!=null){ - documentoHabilitanteTmp.setFechaexpiracion(new java.sql.Date(new java.util.Date().getTime())); - this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); - this.documentoHabilitanteController.save(); - } -// if(documentoHabilitanteTmp!=null){ -// TarmDocumentoHabilitanteDetall documentoHabilitanteDetTmp = DocumentoHabilitanteDetalleController.findPorCDocumento(documentoHabilitanteTmp.getPk().toString()); -// if(documentoHabilitanteDetTmp!=null){ -// this.documentoHabilitanteDetalleController.setRecord(documentoHabilitanteDetTmp); -// this.documentoHabilitanteDetalleController.remove(); -// this.documentoHabilitanteDetalleController.save(); -// } -// -// this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); -// this.documentoHabilitanteController.remove(); -// this.documentoHabilitanteController.save(); -// } - - //Desasociar las armas en apertura de agencias y apertura de sucursales - if(solicitud.getCtramite()==44 || solicitud.getCtramite()==48){ - List armasSolicitudList = RecepcionArmasController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudArmas armaObj:armasSolicitudList){ - - // Codigo agencia de la solicitud - ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ - String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); - TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); - agenciaArma.setRecord(agenciaArmaObj); - agenciaArma.remove(); - } - } - } - - DtoSave dtoSolicitudTramite = solicitudTramiteController.getDtoSave(); - DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitudMP.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - msave.put(solicitudTramiteController.getBeanalias(), dtoSolicitudTramite); - msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitudMP.postCommit(resp); - solicitudTramiteController.postCommit(resp); - agenciaArma.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga =null; - if(this.getLoginController().getRequest().getTransactionCode()==33){ - carga = CargaController.findByAUCP(this.solicitud.getAucp()); - }else if(this.getLoginController().getRequest().getTransactionCode()==30){ - carga = CargaController.findByAUCP(solicitudMP.getRecord().getAucp()); - } - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - - try { - - Map datosmail = new HashMap(); - Request request = callerhelper.getRequest(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - if (bpmDataStatus.equals("A")) { - guardarDocumentoHabilitante(); - request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - } else { - request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - - anularTramite(); - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - this.update(); - - HashMap msave = new HashMap(); - - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("numerotransaccion", numeroTransaccion); - //request.modifiedData().put("xpath", "c"); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", "Analizar documento habilitante"); - request.modifiedData().put("observacion", observacion); - - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - if(bpmDataStatus.equals("D")){ - saveAnularSolicitud(); - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute( - "Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo para anular el tramite - * @throws Exception - */ - private void anularTramite() throws Exception { - solicitudTramite=solicitudTramiteController.findByCSolicitud(codigoSolicitud); - solicitudTramiteController.setRecord(solicitudTramite); - solicitudTramiteController.getRecord().setEstadotramite("ANU"); - solicitudTramiteController.getRecord().setEstadotramitecodigo("ESTADOSOLICITUD"); - solicitudTramiteController.update(); - solicitudTramiteController.save(); - } - - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return - */ - public static List findPorSolicitud(String solicitudCode) { - try { - RecepcionArmasController cc = new RecepcionArmasController(); - cc.init(); - cc.recperpage = 500; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabaseValidacionTransito(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para encontrar un objeto de tipo TarmSolicitudArmas por código de solicitud - * @param solicitudCode - * @param cc - * @return lrecord de tipo TarmSolicitudArmas - */ - public static List findPorSolicitudTodas(String solicitudCode) { - try { -// this.codigoSolicitud = solicitudCode; - RecepcionArmasController cc = new RecepcionArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabaseSolicitudArmas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - protected void querydatabaseSolicitudArmas() { - try { - this.lArmas.clear(); - this.lGuardias.clear(); - if (codigoSolicitud==null){ - return; - } - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.csolicitud"); - dto.setOrderby("t.pk.csolicitud"); - SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); - dto.addSubQuery(subquerymodelo); - SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryacrma); - SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryserie); - SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryCantidad); - SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryPeso); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" - + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryTipoArma); - return dto; - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTareaReceptaArma() { - - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - - - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - - - - public String getProvincia() { - return provincia; - } - - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - - public String getCanton() { - return canton; - } - - - public void setCanton(String canton) { - this.canton = canton; - } - - - public String getCiudad() { - return ciudad; - } - - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - - public List getlArmas() { - return lArmas; - } - - - public void setlArmas(List lArmas) { - this.lArmas = lArmas; - } - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - - public TarmTramite getTramite() { - return tramite; - } - - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public boolean isControlPantallaEntregado() { - return controlPantallaEntregado; - } - - - public void setControlPantallaEntregado(boolean controlPantallaEntregado) { - this.controlPantallaEntregado = controlPantallaEntregado; - } - - - public boolean isControlPantallaVisualizarTramiteFirmar() { - return controlPantallaVisualizarTramiteFirmar; - } - - - public void setControlPantallaVisualizarTramiteFirmar( - boolean controlPantallaVisualizarTramiteFirmar) { - this.controlPantallaVisualizarTramiteFirmar = controlPantallaVisualizarTramiteFirmar; - } - - - public boolean isControlPantallaVerificarInformacionDevolucion() { - return controlPantallaVerificarInformacionDevolucion; - } - - - public void setControlPantallaVerificarInformacionDevolucion( - boolean controlPantallaVerificarInformacionDevolucion) { - this.controlPantallaVerificarInformacionDevolucion = controlPantallaVerificarInformacionDevolucion; - } - - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - - - - public SolicitudGuardiasController getSolicitudGuardiasController() { - return solicitudGuardiasController; - } - - - public void setSolicitudGuardiasController( - SolicitudGuardiasController solicitudGuardiasController) { - this.solicitudGuardiasController = solicitudGuardiasController; - } - - - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - - public ArmasController getArmasController() { - return armasController; - } - - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - - - public List getlSolicitudGuardias() { - return lSolicitudGuardias; - } - - - public List getLaccion() { - return laccion; - } - - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - - - public void setlSolicitudGuardias(List lSolicitudGuardias) { - this.lSolicitudGuardias = lSolicitudGuardias; - } - - - public List getlGuardias() { - return lGuardias; - } - - - public void setlGuardias(List lGuardias) { - this.lGuardias = lGuardias; - } - - - public String getObservacion() { - return observacion; - } - - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - - public String getEstado() { - return estado; - } - - - public void setEstado(String estado) { - this.estado = estado; - } - - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - - public DocumentoHabilitanteDetalleController getDocumentoHabilitanteDetalleController() { - return documentoHabilitanteDetalleController; - } - - - public void setDocumentoHabilitanteDetalleController( - DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController) { - this.documentoHabilitanteDetalleController = documentoHabilitanteDetalleController; - } - - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public String getDireccion() { - return direccion; - } - - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - - public ReportController getReportController() { - return reportController; - } - - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public ColaImpresionController getColaImpresionController() { - return colaImpresionController; - } - - - public void setColaImpresionController( - ColaImpresionController colaImpresionController) { - this.colaImpresionController = colaImpresionController; - } - - - public Boolean getBtnGrabar() { - return btnGrabar; - } - - - public void setBtnGrabar(Boolean btnGrabar) { - this.btnGrabar = btnGrabar; - } - - - public List getSolAgenciaSucursals() { - return solAgenciaSucursals; - } - - - public void setSolAgenciaSucursals( - List solAgenciaSucursals) { - this.solAgenciaSucursals = solAgenciaSucursals; - } - - - public List getDocumentosList() { - return documentosList; - } - - - public void setDocumentosList(List documentosList) { - this.documentosList = documentosList; - } - - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - - public SolicitudArmasController getSolicitudMP() { - return solicitudMP; - } - - - public void setSolicitudMP(SolicitudArmasController solicitudMP) { - this.solicitudMP = solicitudMP; - } - - - public CargaController getCargaController() { - return cargaController; - } - - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.svn-base deleted file mode 100644 index c4eb9c7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasController.java.svn-base +++ /dev/null @@ -1,1919 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmArmaPruebas; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - - -/** - * Controlador principal que maneja la entidad TarmSolicitudArmas - * @author Carlos Guzman - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RecepcionArmasController extends AbstractController { - - private TcustPersonDetail personaDetalle; - private String provincia; - private String canton; - private String ciudad; - private String direccion; - private List lArmas = new ArrayList(); - private List lSolicitudGuardias = new ArrayList(); - private List lGuardias = new ArrayList(); - private TgeneCatalogDetail detallecatalogo = new TgeneCatalogDetail(); - private TgeneCatalogDetail detallecatalogoTipoTramite = new TgeneCatalogDetail(); - private TgeneCatalogDetail usoActividad = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoAutorizacion = new TgeneCatalogDetail(); - private TgeneCatalogDetail categoria = new TgeneCatalogDetail(); - private TgeneCatalogDetail identificacion = new TgeneCatalogDetail(); - private TgeneCatalogDetail estadotramite = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoArchivo = new TgeneCatalogDetail(); - private TgeneCatalogDetail tipoCosto = new TgeneCatalogDetail(); - private TgeneCatalogDetail vigencia = new TgeneCatalogDetail(); - private TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - private TsafeUserDetail tsafeUserDetailUsuario = null; - private TarmTramite tramite=new TarmTramite(); - private TarmSolicitud solicitud = new TarmSolicitud(); - private TarmTipoArmaExplosivo tipoArmaExplosivo = new TarmTipoArmaExplosivo(); - private boolean controlPantallaEntregado; - private boolean controlPantallaVisualizarTramiteFirmar; - private boolean controlPantallaVerificarInformacionDevolucion; - private String codigoSolicitud = ""; - private String observacion; - private String estado; - private Date fec_actual; - private String xpathflujo; - private TcustPersonDetail responsableCentroControl= null; - private TsafeUserDetail usuario; - private Boolean btnFlujo; - private Boolean btnGrabar; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardiasController; - - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value = "#{colaImpresionController}") - private ColaImpresionController colaImpresionController; - - @ManagedProperty(value = "#{documentoHabilitanteDetalleController}") - private DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController; - - @ManagedProperty(value="#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - /** - * controlador de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitudMP; - - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - - private String numeroTransaccion=""; - - private List solAgenciaSucursals; - - private List documentosList; - - private Boolean requiereNoSolAucpBln; - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - public RecepcionArmasController() throws Exception { - super(TarmSolicitudArmas.class); - } - - - @PostConstruct - private void postconstruct() throws Exception { - startQuery(); - this.init(); - querydatabase(); - - solicitudController= new SolicitudController(); - - Boolean aprobarFichaBLN = Boolean.FALSE; - - laccion = new ArrayList(); - - // Validamos en el caso de permisos - TarmTramite tramite = TarmTramiteController.find(numeroTransaccion); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - - if(tipoAutorizacion!=null && tipoAutorizacion.getDescription().equalsIgnoreCase("PERMISO")){ - ListarmaPruebaList = IngresoFichaTecnicaArmasController.buscarFichasPorSolicitud(codigoSolicitud); - for(TarmArmaPruebas armaPruebaObj:armaPruebaList){ - if(armaPruebaObj.getApruebaevaluacion().equalsIgnoreCase("Y")){ - aprobarFichaBLN = Boolean.TRUE; - break; - } - } - if(aprobarFichaBLN){ - laccion=CatalogDetailController.find("ACCION"); - } - else{ - TgeneCatalogDetail catalogRechazar = CatalogDetailController.findCatalogo("ACCION","RECH"); - laccion.add(catalogRechazar); - } - } - else{ - laccion=CatalogDetailController.find("ACCION"); - } - - - try { - //consulta de agencias - cargarAgencias(); - //consulta de documentos - cargarDocumentos(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Método en el cual se cargan las agencias que corresponden a la solicitud - * @throws Exception - */ - private void cargarAgencias() throws Exception{ - if(codigoSolicitud!=null){ - solAgenciaSucursals=SolicitudAgenciaSucursalController.findPorSolicitud(codigoSolicitud); - } - } - - /** - * Método en el cual se cargan las agencias que corresponden a la solicitud - * @throws Exception - */ - private void cargarDocumentos() throws Exception{ - if(codigoSolicitud!=null){ - documentosList=TarmSolicitudDocumentoController.findPorSolicitud(codigoSolicitud);//documentoHabilitanteController.lrecord - } - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - //xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - numeroTransaccion=super.getMfilters().get("numerotransaccion"); - codigoSolicitud=super.getMfilters().get("csolicitud"); - System.out.println("numeroTransaccion .."+numeroTransaccion); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void init() { - try { - validarpantallaActual(); - recperpage = 500; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "RECEPCIONARMAS"; - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.fec_actual = new Date(); - btnFlujo=Boolean.FALSE; - btnGrabar=Boolean.TRUE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.lArmas.clear(); - this.lGuardias.clear(); - if (codigoSolicitud==null){ - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.csolicitud"); - - SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); - dto.addSubQuery(subquerymodelo); - SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryacrma); - - SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryserie); - - SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryCantidad); - - SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryPeso); - - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" - + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); - dto.addSubQuery(subqueryUnidadMedida); - - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryClase); - - SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryLongitud); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - - dto.addSubQuery(subqueryTipoArma); - - - Filter filtro = new Filter(); - filtro.setField("pk.csolicitud"); - filtro.setValue(codigoSolicitud); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - solicitudGuardiasController.addFilter("pk.csolicitud", codigoSolicitud); - solicitudGuardiasController.findPorSolicitud(codigoSolicitud); - solicitudGuardiasController.query(); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - if ((this.lrecord != null) && !this.lrecord.isEmpty()) { - } - - super.postQuery(this.lrecord); - } - - solicitud = SolicitudArmasController.find(codigoSolicitud); - - if (solicitud!=null){ - personaDetalle = PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - identificacion = (personaDetalle.getIdentificationcatalog()==null || personaDetalle.getIdentificationcatalogcode()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(personaDetalle.getIdentificationcatalog(), personaDetalle.getIdentificationcatalogcode()); - - if(identificacion!=null){ - //personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(solicitud.getPersoncode()), tipoDireccion); - TcustPersonAddress direccionCliente=personAddressController.findPrincipal(String.valueOf(solicitud.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || .getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - } - - } - - //Proceso de tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - estadotramite = (solicitudTramite.getEstadotramite()==null || solicitudTramite.getEstadotramitecodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - } - - if(tramite!=null && tramite.getPk() != null){ - detallecatalogo = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - detallecatalogoTipoTramite = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - vigencia = CatalogDetailController.findxCodigoCodcatalogo( tramite.getVigencia(), tramite.getVigenciacodigo()); - tipoArchivo = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipoarchivo(), tramite.getTipoarchivocodigo()); - tipoCosto = CatalogDetailController.findxCodigoCodcatalogo( tramite.getTipocosto(), tramite.getTipocostocodigo()); - usoActividad = (tramite.getUsoactividad()==null || tramite.getUsoactividadcodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - tipoAutorizacion = (tramite.getTipoautorizacion()==null || tramite.getTipoautorizacioncodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - categoria = (tramite.getCategoria()==null || tramite.getCategoriacodigo()==null)?null:CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - // CATEGORIA 14 PREVIA IMPORTACION - if(tramite!=null && tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - nombreInstitucion = obtenerCentroControl(); - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - } - - armasController.setRecperpage(500); - - //lArmas = armasController.findArmaRecep(lrecord.get(0).getPk().getCsolicitud()); - for(TarmSolicitudArmas solicitudArmas:lrecord){ - TarmArmas armas = new TarmArmas(); - armas = armasController.find(solicitudArmas.getPk().getCarma(),null); - lArmas.add(armas); - } - armasController.setLrecord(lArmas); - actualizarArmas(); - List listaCentroControl=null; - if(solicitud!=null && solicitud.getCcentrocontrol()!=null){ - listaCentroControl= CentroControlArmasController.find(solicitud.getCcentrocontrol()); - } - - if(listaCentroControl!=null && !listaCentroControl.isEmpty() ){//&& listaCentroControl.get(0).getTramitespordia()!=null){ - centroControl = listaCentroControl.get(0); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que usa para pasar el flujo al seleccionar el boton guardar - */ - public void guardar(){ - - } - - private void guardarcolaImpresionController(HashMap msave) throws Throwable{ - System.out.println("ACTUALIZA COLA DE IMPRESION"); - TarmDocumentoHabilitante docHabilitante=DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); - if(docHabilitante!=null && docHabilitante.getPk()!=null){ - System.out.println("ACTUALIZA COLA DE IMPRESION 1"); - ListlistaColaImprecion=ColaImpresionController.findByDocumentoCDoc(docHabilitante.getPk().toString()); - if(listaColaImprecion!=null && listaColaImprecion.size()>0){ - System.out.println("ACTUALIZA COLA DE IMPRESION 2"); - for (TarmColadeImpresion item : listaColaImprecion) { - item.setEstadoimpresion("PIMPR"); - item.setEstadoimpresioncode("ESTADOIMPRESION"); - colaImpresionController.update(item); - } - System.out.println("ACTUALIZA COLA DE IMPRESION 3"); - registrarGuardadoColaImpresion(msave); - System.out.println("ACTUALIZA COLA DE IMPRESION 4"); - } - } - - } - - private void registrarGuardadoColaImpresion(HashMap msave) throws Throwable{ - //= new HashMap(); - Request request = callerhelper.getRequest(); - DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); - dtosaveColaImpresion.setReturnpk(true); - dtosaveColaImpresion.setPosition(1); - msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); - request.setSaveTables(msave); -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// this.colaImpresionController.postCommit(resp); -// this.postCommit(resp); -// MessageHelper.setMessageInfo(resp); -// } else { -// MessageHelper.setMessageError(resp); -// throw new Exception(""+resp); -// } - } - - /** - * Metodo para guardar los documentos habilitantes - * @throws Throwable - */ - public void guardarDocumentoHabilitante() throws Throwable{ - HashMap msave = new HashMap(); - Calendar cal = Calendar.getInstance(); - String estado="APR"; - System.out.println("vigencia.getDescription() "+vigencia.getDescription()); - System.out.println("vigencia.getDescription().trim().equals(1200) "+vigencia.getDescription().trim().equals("1200")); - if(vigencia.getDescription()!=null && vigencia.getDescription().trim().equals("1200")){ - cal.set(Calendar.YEAR, 2999); - cal.set(Calendar.MONTH, 12); - cal.set(Calendar.DAY_OF_MONTH, 31); - }else{ - cal.add(Calendar.MONTH, Integer.valueOf(vigencia.getDescription())); - } - System.out.println(cal); - System.out.println(cal.getTime()); - TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - if("CARNET".equalsIgnoreCase(tipoArchivo.getDescription())){ - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription())){ - documentoHabilitanteController.create(); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCarma(null); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - //Grabacion en la cola de impresion - colaImpresionController.create(); - colaImpresionController.getRecord().setIsnew(true); - //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); - //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); - java.util.Date date = new java.util.Date(); - colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); - colaImpresionController.update(); - - } - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord==null || this.lrecord.isEmpty())){ - registrarGuardadoDocumentoHabilitante(msave); - } - - for(TarmSolicitudArmas armaSolicitud:this.lrecord){ - - if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ - documentoHabilitanteController.create(); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - //Grabacion en la cola de impresion - colaImpresionController.create(); - colaImpresionController.getRecord().setIsnew(true); - //colaImpresionController.getRecord().setEstadoimpresion("PIMPR"); - //colaImpresionController.getRecord().setEstadoimpresioncode("ESTADOIMPRESION"); - java.util.Date date = new java.util.Date(); - colaImpresionController.getRecord().setFecharegistro(new java.sql.Date(date.getTime())); - colaImpresionController.update(); - } - documentoHabilitanteDetalleController.create(); - documentoHabilitanteDetalleController.getRecord().setIsnew(true); - documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteDetalleController.update(); - if("PARCIAL".equalsIgnoreCase(tipoCosto.getDescription())){ - registrarGuardadoDocumentoHabilitante(msave); - } - } - - if("TOTAL".equalsIgnoreCase(tipoCosto.getDescription()) && (this.lrecord!=null && !this.lrecord.isEmpty())){ - registrarGuardadoDocumentoHabilitante(msave); - return; - } - - }else - if("REPORTE".equalsIgnoreCase(tipoArchivo.getDescription())){ - documentoHabilitanteController.create(); - //TarmSolicitudTramite solicitudtramite =TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setIsnew(true); - documentoHabilitanteController.getRecord().setCsolicitud(codigoSolicitud); - documentoHabilitanteController.getRecord().setCentrocontrol(centroControl.getPk()); - documentoHabilitanteController.getRecord().setCuentareimpresion(0); - documentoHabilitanteController.getRecord().setCtramite(solicitudtramite.getPk().getCtramite()); - documentoHabilitanteController.getRecord().setCarma((this.lrecord!=null &&!this.lrecord.isEmpty() && this.lrecord.size()>0)? this.lrecord.get(0).getPk().getCarma():null); - documentoHabilitanteController.getRecord().setFechaemision(new java.sql.Date((new Date()).getTime())); - documentoHabilitanteController.getRecord().setFechaexpiracion(new java.sql.Date((cal.getTime()).getTime())); - documentoHabilitanteController.getRecord().setPersoncode(solicitud.getPersoncode()); - documentoHabilitanteController.getRecord().setEstado(estado); - documentoHabilitanteController.getRecord().setEstadocode("ESTADODOCUMENTO"); - documentoHabilitanteController.update(); - - for(TarmSolicitudArmas armaSolicitud:this.lrecord){ - documentoHabilitanteDetalleController.create(); - documentoHabilitanteDetalleController.getRecord().setIsnew(true); - documentoHabilitanteDetalleController.getRecord().setCarma(armaSolicitud.getPk().getCarma()); - documentoHabilitanteDetalleController.getRecord().setCodigoarma(ArmasController.findPorCodigo(armaSolicitud.getPk().getCarma()).getCodigoarma()); - documentoHabilitanteDetalleController.update(); - } - - registrarGuardadoDocumentoHabilitante(msave); - }else{ - throw new Exception("TIPO DOCUMENTO DE INVALIDO: "+tipoArchivo.getDescription()); - } - } - - /** Metodo para realizar el guardado del documento habilitante - * @param msave variable save - * @throws Throwable - */ - private void registrarGuardadoDocumentoHabilitante(HashMap msave) throws Throwable{ - Request request = callerhelper.getRequest(); - - DtoSave dtosaveDocumento = this.documentoHabilitanteController.getDtoSave(true); - dtosaveDocumento.setReturnpk(true); - dtosaveDocumento.setPosition(1); - DtoSave dtosaveDocumentoDetalle = this.documentoHabilitanteDetalleController.getDtoSave(true); - dtosaveDocumentoDetalle.setReturnpk(true); - dtosaveDocumentoDetalle.setPosition(2); - DtoSave dtosaveColaImpresion = this.colaImpresionController.getDtoSave(true); - dtosaveColaImpresion.setReturnpk(true); - dtosaveColaImpresion.setPosition(3); - - msave.put(documentoHabilitanteController.getBeanalias(), dtosaveDocumento); - msave.put(documentoHabilitanteDetalleController.getBeanalias(), dtosaveDocumentoDetalle); - msave.put(colaImpresionController.getBeanalias(), dtosaveColaImpresion); - - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.documentoHabilitanteController.postCommit(resp); - this.documentoHabilitanteDetalleController.postCommit(resp); - this.colaImpresionController.postCommit(resp); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - throw new Exception(""+resp); - } - } - - - - /** - * Metodo que valida cual es la pantalla que se encuentra activa este controlador - */ - private void validarpantallaActual(){ - if(this.getLoginController()!=null && 24 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaEntregado=true; - } - else{ - controlPantallaEntregado=false; - } - - if(this.getLoginController()!=null && 34 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaVisualizarTramiteFirmar = true; - } - else{ - controlPantallaVisualizarTramiteFirmar = false; - } - - if(this.getLoginController()!=null && 33 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - controlPantallaVerificarInformacionDevolucion = true; - } - else{ - controlPantallaVerificarInformacionDevolucion = false; - } - } - - @Override - public void query() throws Exception { - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - - /** - * Metodo para enviar el documento habilitante por el flujo - */ - public void enviarDocumentoHabilitante(){ - - - } - - @Override - public void save() { - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); - return; - } - - actualizarArmas(); - actualizarSolicitudArmas(); - - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - String ruta = this.getRutaDocumento()+"/cm:actaEntregaRecepcionArmas.pdf"; - System.out.println("ruta : " + ruta); - sol.setXpathacta(ruta); - this.solicitudController.updateSolicitud(sol); - - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - btnFlujo=Boolean.TRUE; - btnGrabar=Boolean.FALSE; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo que guarda el documento - */ - public void saveDocumentoHabilitante() { - - try { - // validamos si cargamos los datos cuando apruebe - Map datosmail = new HashMap(); - Request request = callerhelper.getRequest(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - - if (codigoAceptado().equals(estado)) { - request.modifiedData().put("BPMStatus", - bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - } else { - request.modifiedData().put("BPMStatus", - bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - this.update(); - - HashMap msave = new HashMap(); - - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("csolicitud", codigoSolicitud); - //request.modifiedData().put("numerotramite", "32"); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", "Analizar documento habilitante"); - request.modifiedData().put("observacion", observacion); - - - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute( - "Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - - } - - /** - * M\u00e9todo que valida si todas las armas se encuentran seleccionadas - * @return - */ - public boolean validarSeleccion(){ - for(TarmSolicitudArmas armaSeleccionada:lrecord){ - if(!armaSeleccionada.modifiedData().containsValue(Boolean.TRUE)){ - return false; - } - } - return true; - } - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - /** - * Metodo para armar la ruta del documento - * @return - */ - public String getRutaDocumento() { - Calendar calendar = Calendar.getInstance(); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append( - (calendar.get(Calendar.MONTH) + 1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH) + 1)); - ruta = ruta.append("/cm:D-").append( - (calendar.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (calendar.get(Calendar.DAY_OF_MONTH)) : (calendar.get(Calendar.DAY_OF_MONTH))); - TarmSolicitud solicitud = SolicitudArmasController.find(codigoSolicitud); - ruta = ruta.append("/cm:").append(solicitud.getNumerosolicitud()); - ruta = ruta.append("/cm:").append("armas"); - return ruta.toString(); - } - - - - /** - * M\u00e9todo para imprimir - */ - public void imprimir(){ - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_imprimir_recepcion_armas")); - return; - } - this.reporteActaEntregaRecepArmas(); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - /** - * Obtiene el reporte de Acta de Entrega Recepción de Armas - */ - private void reporteActaEntregaRecepArmas() throws Exception{ - try { - //this.querydatabase(); - //buttonAction(); - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaCorteCldr = Calendar.getInstance(); - String gradoUsuario =""; - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - TarmSolicitudTramite soltra = SolicitudTramiteController.findByCSolicitud(this.codigoSolicitud); - - String path = "armas/reports/repo"; - String filename="actaEntregaRecepcionArmas";//MsgControlArmas.getProperty("lbl_fichaTecnicaArmas"); - String nombreUsuario; - if(usuario.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(usuario.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("usuario", nombreUsuario); - //Centro de control - parameters.put("centroControl", this.obtenerCentroControl()); - - //Fecha actual - - //Fecha de solicitud - if(sol!=null && sol.getNumerosolicitud()!=null){ - if(soltra != null && soltra.getNumerotramite()!=null){ - parameters.put("numsolicitud", sol.getNumerosolicitud()); - parameters.put("numtramite", soltra.getNumerotramite()); - TcustPersonDetail persona = PersonDetailController.find(sol.getPersoncode().toString()); - parameters.put("cliente", persona.getName()); - } - }else{ - parameters.put("numsolicitud", " "); - } - - //No tramite - if(sol!=null && sol.getFregistro()!=null){ - SimpleDateFormat sdf2=new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechaSolicitud", sdf2.format(sol.getFregistro())); - }else{ - parameters.put("fechaSolicitud", " "); - } - - //codigo solicitud - parameters.put("csolicitud", this.codigoSolicitud); - parameters.put("personcode", usuario.getPk().getPersoncode()); - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("fecActual", fechaActualSB.toString()); - //Grado del funcionario - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - parameters.put("gradoUsuario", gradoUsuario); - //parameters.put("usuario", this.tsafeUserDetailUsuario.getNickname()); - //parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode().toString()); - - String format = "pdf"; - - parameters.put("tipotram", this.tipoAutorizacion.getDescription()+" - "+this.categoria.getDescription()+" - "+this.usoActividad.getDescription()); - parameters.put("codResponsable",usuario.getPk().getPersoncode()); - - parameters.put("codigoQR",(sol!=null?sol.getNumerosolicitud():"")+" "+fechaActualSB.toString()+" "+ - gradoUsuario); - - try { - this.xpathflujo = this.getRutaDocumento(); - InputStream report=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - this.alfrescoController.uploadFile(report, filename+".pdf", this.xpathflujo); - //this.record.setXpathfichatecarmas(this.xpathflujo + "/cm:" + filename+".pdf"); - //this.record.getModifiedData().put("impresion",Boolean.TRUE); - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } - - /** - * @return - * @throws Exception - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - /** - * M\u00e9todo para fimar documentos - */ - public void firmar(){ - System.out.println("Firmar"); - } - - /** - * M\u00e9todo para actualizar las armas en la base de datos seg\u00fan la pantalla en que se encuentre - * @throws Exception - */ - private void actualizarSolicitudArmas() throws Exception{ - for(TarmSolicitudArmas armaSeleccionada:lrecord){ - record = armaSeleccionada; - if(armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ - if(controlPantallaEntregado){ - record.setEntregada("Y"); - } - else{ - record.setAprobada("Y"); - } - } - if(!armaSeleccionada.modifiedData().get("seleccion").equals(Boolean.TRUE)){ - if(controlPantallaEntregado){ - record.setEntregada("N"); - } - else{ - record.setAprobada("N"); - } - } - update(); - } - - } - - - - - /** - * M\u00e9todo para leer las selecciones guardadas en la base y setearlas seg\u00fan la pantalla en la que se encuentre - * @throws Exception - */ - private void actualizarArmas() throws Exception{ - for(TarmSolicitudArmas solicitudArmas:lrecord){ - if("Y".equals(solicitudArmas.getEntregada()) && controlPantallaEntregado){ - solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); - } - if("Y".equals(solicitudArmas.getAprobada()) && !controlPantallaEntregado){ - solicitudArmas.modifiedData().put("seleccion", Boolean.TRUE); - } - } - } - - - @SuppressWarnings("unchecked") - protected void querydatabaseValidacionTransito() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTareaAutorizarTramite() { - try { - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("numerotransaccion", numeroTransaccion); - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equalsIgnoreCase("APR") || bpmDataStatus == null){ - bpmDataStatus="A"; - if(this.getLoginController()!=null && 30 == this.getLoginController().getRequest().getTransactionCode() && - "30".equals(getLoginController().getRequest().getTransactionModule())){ - guardarcolaImpresionController(msave); - } - }else{ - bpmDataStatus="D"; - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Map datosmail = new HashMap(); - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - if (bpmDataStatus.equals("D")) { - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("observaciones", bpmDataComment); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - request.modifiedData().put("datosmail", datosmail); - }else{ - SimpleDateFormat sdf1 = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),"MILITARYGRADE").getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("tramite",solicitudTramite.getNumerotramite()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - datosmail.put("fechanotificacion",sdf1.format(new Date())); - - TarmTramite tramite =TarmTramiteController.find(String.valueOf(solicitud.getCtramite())); - datosmail.put("tipoTramite",(tramite==null || tramite.getModifiedData().get("tipotramite")==null)?"":tramite.getModifiedData().get("tipotramite")); - datosmail.put("tipoAutorizacion",(tramite==null || tramite.getModifiedData().get("tipoautorizacion")==null)?"":tramite.getModifiedData().get("tipoautorizacion")); - datosmail.put("usoactividad",(tramite==null || tramite.getModifiedData().get("usoactividad")==null)?"":tramite.getModifiedData().get("usoactividad")); - datosmail.put("categoria",(tramite==null || tramite.getModifiedData().get("categoria")==null)?"":tramite.getModifiedData().get("categoria")); - request.modifiedData().put("datosmail", datosmail); - } - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - if(bpmDataStatus.equals("D")){ - saveAnularSolicitud(); - } - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveAnularSolicitud() { - try { - TarmTramite tarmTramite = null; - // CATEGORIA 14 PREVIA IMPORTACION - if(this.getLoginController().getRequest().getTransactionCode()==33){ - tarmTramite = TarmTramiteController.find(this.solicitud.getCtramite().toString()); - }else if(this.getLoginController().getRequest().getTransactionCode()==30){ - tarmTramite = TarmTramiteController.find(this.solicitudMP.getRecord().getCtramite().toString()); - } - if(tarmTramite!=null && tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - //Poner la solicitud en estado anulado - solicitud.setEstado("ANU"); - solicitud.setAucp(null); - solicitudMP.setRecord(solicitud); - solicitudMP.update(); - DtoSave dtoSolicitud = solicitudMP.getDtoSave(); - - TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(solicitud.getPk()); - if(solicitudTramiteObj!=null){ - solicitudTramiteObj.setIsnew(false); - solicitudTramiteObj.setEstadotramite("ANU"); - solicitudTramiteController.updateSolicitud(solicitudTramiteObj); - } - // DocumentoHabilitanteController documentoHabilitanteController - TarmDocumentoHabilitante documentoHabilitanteTmp = DocumentoHabilitanteController.findPorSolicitud(codigoSolicitud); - if(documentoHabilitanteTmp!=null){ - documentoHabilitanteTmp.setFechaexpiracion(new java.sql.Date(new java.util.Date().getTime())); - this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); - this.documentoHabilitanteController.save(); - } -// if(documentoHabilitanteTmp!=null){ -// TarmDocumentoHabilitanteDetall documentoHabilitanteDetTmp = DocumentoHabilitanteDetalleController.findPorCDocumento(documentoHabilitanteTmp.getPk().toString()); -// if(documentoHabilitanteDetTmp!=null){ -// this.documentoHabilitanteDetalleController.setRecord(documentoHabilitanteDetTmp); -// this.documentoHabilitanteDetalleController.remove(); -// this.documentoHabilitanteDetalleController.save(); -// } -// -// this.documentoHabilitanteController.setRecord(documentoHabilitanteTmp); -// this.documentoHabilitanteController.remove(); -// this.documentoHabilitanteController.save(); -// } - - //Desasociar las armas en apertura de agencias y apertura de sucursales - if(solicitud.getCtramite()==44 || solicitud.getCtramite()==48){ - List armasSolicitudList = RecepcionArmasController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudArmas armaObj:armasSolicitudList){ - - // Codigo agencia de la solicitud - ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ - String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); - TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); - agenciaArma.setRecord(agenciaArmaObj); - agenciaArma.remove(); - } - } - } - - DtoSave dtoSolicitudTramite = solicitudTramiteController.getDtoSave(); - DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitudMP.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - msave.put(solicitudTramiteController.getBeanalias(), dtoSolicitudTramite); - msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitudMP.postCommit(resp); - solicitudTramiteController.postCommit(resp); - agenciaArma.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga =null; - if(this.getLoginController().getRequest().getTransactionCode()==33){ - carga = CargaController.findByAUCP(this.solicitud.getAucp()); - }else if(this.getLoginController().getRequest().getTransactionCode()==30){ - carga = CargaController.findByAUCP(solicitudMP.getRecord().getAucp()); - } - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - - try { - - Map datosmail = new HashMap(); - Request request = callerhelper.getRequest(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail persona = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - if (bpmDataStatus.equals("A")) { - guardarDocumentoHabilitante(); - request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - } else { - request.modifiedData().put("BPMStatus",bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - - anularTramite(); - datosmail.put("funcionario",persona ==null?"":((persona.getMilitarygrade()==null && persona.getMilitarygradecode()==null)?"":CatalogDetailController.findxCodigoCodcatalogo(persona.getMilitarygrade(),persona.getMilitarygradecode()).getDescription()) + " " + persona.getName()); - datosmail.put("razons",(solicitud==null || solicitud.getModifiedData().get("nombre")==null)?"":solicitud.getModifiedData().get("nombre")); - datosmail.put("sol", solicitud==null?"":solicitud.getPk()); - datosmail.put("centrocontrol",(centroControl==null || centroControl.getNombreinstitucion()==null || centroControl.getNombreinstitucioncodigo()==null)?"":CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - this.update(); - - HashMap msave = new HashMap(); - - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("numerotransaccion", numeroTransaccion); - //request.modifiedData().put("xpath", "c"); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", "Analizar documento habilitante"); - request.modifiedData().put("observacion", observacion); - - request.setSaveTables(msave); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(beanalias, dtosave); - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - if(bpmDataStatus.equals("D")){ - saveAnularSolicitud(); - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute( - "Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo para anular el tramite - * @throws Exception - */ - private void anularTramite() throws Exception { - solicitudTramite=solicitudTramiteController.findByCSolicitud(codigoSolicitud); - solicitudTramiteController.setRecord(solicitudTramite); - solicitudTramiteController.getRecord().setEstadotramite("ANU"); - solicitudTramiteController.getRecord().setEstadotramitecodigo("ESTADOSOLICITUD"); - solicitudTramiteController.update(); - solicitudTramiteController.save(); - } - - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return - */ - public static List findPorSolicitud(String solicitudCode) { - try { - RecepcionArmasController cc = new RecepcionArmasController(); - cc.init(); - cc.recperpage = 500; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabaseValidacionTransito(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para encontrar un objeto de tipo TarmSolicitudArmas por código de solicitud - * @param solicitudCode - * @param cc - * @return lrecord de tipo TarmSolicitudArmas - */ - public static List findPorSolicitudTodas(String solicitudCode) { - try { -// this.codigoSolicitud = solicitudCode; - RecepcionArmasController cc = new RecepcionArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabaseSolicitudArmas(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - protected void querydatabaseSolicitudArmas() { - try { - this.lArmas.clear(); - this.lGuardias.clear(); - if (codigoSolicitud==null){ - return; - } - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.csolicitud"); - dto.setOrderby("t.pk.csolicitud"); - SubQuery subquerymodelo= new SubQuery("TarmArmas","modelo","modelo","i.pk=t.pk.carma"); - dto.addSubQuery(subquerymodelo); - SubQuery subqueryacrma= new SubQuery("TarmArmas","pk","carma","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryacrma); - SubQuery subqueryserie= new SubQuery("TarmArmas","lote","lote","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryserie); - SubQuery subqueryCantidad= new SubQuery("TarmArmas","cantidad","cantidad","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryCantidad); - SubQuery subqueryPeso= new SubQuery("TarmArmas","peso","peso","i.pk=t.pk.carma"); - dto.addSubQuery(subqueryPeso); - SubQuery subqueryUnidadMedida= new SubQuery("TgeneCatalogDetail","description","unidadmedida","i.pk.catalog=(select p.unidadmedidacantidad from TarmArmas p where p.pk=t.pk.carma) and" - + " i.pk.catalogcode=(select p.unidadmedidacantidadcodigo from TarmArmas p where p.pk=t.pk.carma)"); - dto.addSubQuery(subqueryUnidadMedida); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","marca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.pk.carma) " - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog=(select o.color from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog=(select o.estado from TarmArmas o where o.pk=t.pk.carma)" - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.pk.carma)"); - dto.addSubQuery(subqueryEstado); - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","clase","i.pk.catalog=(select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryLongitud= new SubQuery("TgeneCatalogDetail","description","longitud","i.pk.catalog=(select o.longitud from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryLongitud); - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre","i.pk.catalog=(select o.calibre from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryTipoArma= new SubQuery("TgeneCatalogDetail","description","tipo","i.pk.catalog=(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.pk.carma))"); - dto.addSubQuery(subqueryTipoArma); - return dto; - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTareaReceptaArma() { - - try { - if (!validarSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_validar_seleccion_armas")); - return; - } - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonDetail getPersonaDetalle() { - return personaDetalle; - } - - - public void setPersonaDetalle(TcustPersonDetail personaDetalle) { - this.personaDetalle = personaDetalle; - } - - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - - - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - - - - public String getProvincia() { - return provincia; - } - - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - - public String getCanton() { - return canton; - } - - - public void setCanton(String canton) { - this.canton = canton; - } - - - public String getCiudad() { - return ciudad; - } - - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - - public List getlArmas() { - return lArmas; - } - - - public void setlArmas(List lArmas) { - this.lArmas = lArmas; - } - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - - public TarmTramite getTramite() { - return tramite; - } - - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - - public TgeneCatalogDetail getEstadotramite() { - return estadotramite; - } - - - public void setEstadotramite(TgeneCatalogDetail estadotramite) { - this.estadotramite = estadotramite; - } - - - public TgeneCatalogDetail getDetallecatalogo() { - return detallecatalogo; - } - - public boolean isControlPantallaEntregado() { - return controlPantallaEntregado; - } - - - public void setControlPantallaEntregado(boolean controlPantallaEntregado) { - this.controlPantallaEntregado = controlPantallaEntregado; - } - - - public boolean isControlPantallaVisualizarTramiteFirmar() { - return controlPantallaVisualizarTramiteFirmar; - } - - - public void setControlPantallaVisualizarTramiteFirmar( - boolean controlPantallaVisualizarTramiteFirmar) { - this.controlPantallaVisualizarTramiteFirmar = controlPantallaVisualizarTramiteFirmar; - } - - - public boolean isControlPantallaVerificarInformacionDevolucion() { - return controlPantallaVerificarInformacionDevolucion; - } - - - public void setControlPantallaVerificarInformacionDevolucion( - boolean controlPantallaVerificarInformacionDevolucion) { - this.controlPantallaVerificarInformacionDevolucion = controlPantallaVerificarInformacionDevolucion; - } - - - public TgeneCatalogDetail getDetallecatalogoTipoTramite() { - return detallecatalogoTipoTramite; - } - - - public void setDetallecatalogoTipoTramite( - TgeneCatalogDetail detallecatalogoTipoTramite) { - this.detallecatalogoTipoTramite = detallecatalogoTipoTramite; - } - - - public void setDetallecatalogo(TgeneCatalogDetail detallecatalogo) { - this.detallecatalogo = detallecatalogo; - } - - - public TgeneCatalogDetail getUsoActividad() { - return usoActividad; - } - - - public void setUsoActividad(TgeneCatalogDetail usoActividad) { - this.usoActividad = usoActividad; - } - - - public TgeneCatalogDetail getIdentificacion() { - return identificacion; - } - - - public void setIdentificacion(TgeneCatalogDetail identificacion) { - this.identificacion = identificacion; - } - - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - - public TarmTipoArmaExplosivo getTipoArmaExplosivo() { - return tipoArmaExplosivo; - } - - - public void setTipoArmaExplosivo(TarmTipoArmaExplosivo tipoArmaExplosivo) { - this.tipoArmaExplosivo = tipoArmaExplosivo; - } - - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - - - - public SolicitudGuardiasController getSolicitudGuardiasController() { - return solicitudGuardiasController; - } - - - public void setSolicitudGuardiasController( - SolicitudGuardiasController solicitudGuardiasController) { - this.solicitudGuardiasController = solicitudGuardiasController; - } - - - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - - public ArmasController getArmasController() { - return armasController; - } - - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - - - public List getlSolicitudGuardias() { - return lSolicitudGuardias; - } - - - public List getLaccion() { - return laccion; - } - - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - - - public void setlSolicitudGuardias(List lSolicitudGuardias) { - this.lSolicitudGuardias = lSolicitudGuardias; - } - - - public List getlGuardias() { - return lGuardias; - } - - - public void setlGuardias(List lGuardias) { - this.lGuardias = lGuardias; - } - - - public String getObservacion() { - return observacion; - } - - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - - public String getEstado() { - return estado; - } - - - public void setEstado(String estado) { - this.estado = estado; - } - - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - - public DocumentoHabilitanteDetalleController getDocumentoHabilitanteDetalleController() { - return documentoHabilitanteDetalleController; - } - - - public void setDocumentoHabilitanteDetalleController( - DocumentoHabilitanteDetalleController documentoHabilitanteDetalleController) { - this.documentoHabilitanteDetalleController = documentoHabilitanteDetalleController; - } - - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public String getDireccion() { - return direccion; - } - - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - - public ReportController getReportController() { - return reportController; - } - - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public ColaImpresionController getColaImpresionController() { - return colaImpresionController; - } - - - public void setColaImpresionController( - ColaImpresionController colaImpresionController) { - this.colaImpresionController = colaImpresionController; - } - - - public Boolean getBtnGrabar() { - return btnGrabar; - } - - - public void setBtnGrabar(Boolean btnGrabar) { - this.btnGrabar = btnGrabar; - } - - - public List getSolAgenciaSucursals() { - return solAgenciaSucursals; - } - - - public void setSolAgenciaSucursals( - List solAgenciaSucursals) { - this.solAgenciaSucursals = solAgenciaSucursals; - } - - - public List getDocumentosList() { - return documentosList; - } - - - public void setDocumentosList(List documentosList) { - this.documentosList = documentosList; - } - - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - - public SolicitudArmasController getSolicitudMP() { - return solicitudMP; - } - - - public void setSolicitudMP(SolicitudArmasController solicitudMP) { - this.solicitudMP = solicitudMP; - } - - - public CargaController getCargaController() { - return cargaController; - } - - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasNoEnviadasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasNoEnviadasController.java.svn-base deleted file mode 100644 index 4029ccd..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RecepcionArmasNoEnviadasController.java.svn-base +++ /dev/null @@ -1,436 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.model.SelectItem; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmDecomisoArmaTransaccion. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RecepcionArmasNoEnviadasController extends AbstractController { - - public RecepcionArmasNoEnviadasController() throws Exception { - super(TarmDecomisoArmaTransaccion.class); - } - - /** - * Controlador para generar el reporte - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador para caragar el archivo al alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * atributo con los datos del usuario logeado - */ - private TsafeUserDetail userDetail; - - private String xpathflujo; - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.querydatabase(); - } - - private List decomisoArmas; - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 300; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "RECEPCIONARMASNOENV"; - userDetail= (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * nombre del centro de control - */ - private String institucionCentroControl; - private ListitemUnidadDestino; - /** - * nombre del centro de control - */ - private String instiCentroControlCode; - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - if(centroControlJur!=null && centroControlJur.getCcentrocontrol()!=null){ - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - itemUnidadDestino= new ArrayList(); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - //codigo del centro de control de pichincha - TgeneParameters paramCentroControlDestino=ParametersController.find("CODIGO.CENT.CONTROL.PICHINCHA", "1");//000030//CAPI - //validamos si la persona que ingreso pertenece al centro de control pichincha para darle al opcion de seleccionar el deparatmento de control para la recepcion - if(paramCentroControlDestino.getTextvalue().equals(centroControl.getNombreinstitucion())){ - itemUnidadDestino.add(new SelectItem(centroControl.getPk(), institucionCentroControl)); - //codigo del departamento de control - TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - TarmCentroControl institCentroControlDestino= CentroControlArmasController.findPorCentroControl(paramDepartamentoControl.getTextvalue());//000077 - itemUnidadDestino.add(new SelectItem(institCentroControlDestino.getPk(), ""+institCentroControlDestino.getModifiedData().get("desnombreinstitucion"))); - }else{ - instiCentroControlCode=centroControl.getPk(); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_laprovinciasinccontrol")); - return; - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal")); - return; - } - } - - public void executeUnidad() { - - for(SelectItem item: itemUnidadDestino){ - if(item.getValue().equals(instiCentroControlCode)){ - institucionCentroControl=item.getLabel(); - } - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - Filter filtro = new Filter(); - filtro.setSql("estadoflujo='NOENV' and numerotransaccion like '%REC-%' and ccentrocontrol='"+instiCentroControlCode+"'"); - dto.addFiltro(filtro); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * - * @param codigo - * @return - */ - public static TarmDecomisoArmaTransaccion find(String codigo) { - try { - RecepcionArmasNoEnviadasController cc = new RecepcionArmasNoEnviadasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigo); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * lista las armas decomisadas asociadas al numero de transaccion - * @param decomisoArmaTransaccion - */ - public void listarArmas(TarmDecomisoArmaTransaccion decomisoArmaTransaccion){ - record=decomisoArmaTransaccion; - decomisoArmas=DecomisoArmaController.find(decomisoArmaTransaccion.getPk()); - } - - /** - * Metodo para generar el acta de recepcion - * y cargar el archivo en el alfresco - */ - public void generarActa() { - Calendar fechaActualCldr = Calendar.getInstance(); - String path = "armas/reports/repo2"; - String filename = "actaRecepciondeArmas"; - String gradoUsuario = ""; - TcustPersonDetail usuario = PersonDetailController.find(this.userDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+usuario.getName(); - }else{ - gradoUsuario = "Sin Grado - "+usuario.getName(); - } - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda","repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - // Usuario logueado en la aplicacion - String nombreUsuario; - if (userDetail.getPk().getPersoncode() != null) { - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } else { - nombreUsuario = ""; - } - TarmTransaccionArmaBodega armaBodegas= TransaccionArmaBodegaController.find(record.getPk().toString()); - parameters.put("user", nombreUsuario); - parameters.put("unidadmilitar", armaBodegas.getModifiedData().get("nombreinstituciondest")); - parameters.put("codigodec", record.getPk().toString());//este - parameters.put("fechaCorte", new SimpleDateFormat("dd-MM-yyyy").format(record.getFcorte()));//este - parameters.put("numtransaccion", record.getNumerotransaccion()); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - parameters.put("nombregrado", gradoUsuario);//este - // Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.DAY_OF_MONTH)): (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH) + 1) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.MONTH) + 1): (fechaActualCldr.get(Calendar.MONTH) + 1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.MINUTE)): (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - - - parameters.put("orgControl", armaBodegas.getModifiedData().get("nombreinstitucionorig")); - - InputStream file = this.reportController.jaspertoInputstream(path, parameters, "pdf", filename,this.getLoginController()); - xpathflujo = generarXpath(record.getNumerotransaccion()); - if(!alfrescoController.uploadFile(file, record.getNumerotransaccion()+ ".pdf", xpathflujo)){ - xpathflujo=null; - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo para generar la ruta donde se carga el archivo - * @param numeroTransaccionRecepcion - * @return - */ - public String generarXpath(String numeroTransaccionRecepcion){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Decomiso"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+numeroTransaccionRecepcion); - return ruta.toString(); - } - public List getDecomisoArmas() { - return decomisoArmas; - } - - public void setDecomisoArmas(List decomisoArmas) { - this.decomisoArmas = decomisoArmas; - } - - public void iniciarFlujo() { - try { - - if(xpathflujo==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - TarmTransaccionArmaBodega armaBodegas= TransaccionArmaBodegaController.find(record.getPk().toString()); - - if(armaBodegas.getModifiedData().get("provincecodeorig")==null || armaBodegas.getModifiedData().get("provincecodeorig").toString().length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - //instiCentroControlCode - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(instiCentroControlCode); - String cprovincia=centroControl.getProvincecode();//armaBodegas.getModifiedData().get("provincecodeorig").toString(); - TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - if(armaBodegas.getModifiedData().get("nombreinstitucion").equals(paramDepartamentoControl.getTextvalue())){ - cprovincia=paramDepartamentoControl.getTextvalue(); - } - //itemUnidadDestino - - String xpath=xpathflujo+"/cm:"+record.getNumerotransaccion()+ ".pdf"; - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - //codigo de la tabla TarmDecomisoArmaTransaccion - request.modifiedData().put("numerotransaccion", record.getPk()); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("numerosolicitud", record.getNumerotransaccion()); - //ruta del archivo para la firma - //TODO Falta crear la variable en maia 2-8 - request.modifiedData().put("xpath", xpath); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(record.getNumerotransaccion()); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " TRANSACCION: "+ record.getNumerotransaccion()); - xpathflujo=null; - //quita de la lista - lrecord.remove(record); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public List getItemUnidadDestino() { - return itemUnidadDestino; - } - - public void setItemUnidadDestino(List itemUnidadDestino) { - this.itemUnidadDestino = itemUnidadDestino; - } - - public String getInstiCentroControlCode() { - return instiCentroControlCode; - } - - public void setInstiCentroControlCode(String instiCentroControlCode) { - this.instiCentroControlCode = instiCentroControlCode; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoController.java.svn-base deleted file mode 100644 index b91104e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoController.java.svn-base +++ /dev/null @@ -1,424 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlar que permite el cambio de estado de los decomisosArma y tarmArma a RECL - * @author Manuel Cepeda - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReclamoDecomisoController extends AbstractController { - - private String personCode; - - @ManagedProperty(value="#{armasController}") - private ArmasController armasController; - - - public ReclamoDecomisoController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - personCode = tsafeUserDetail.getPk().getPersoncode().toString(); - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMDECOMISOARMA"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - //Cambio de funcionalidad a las armas decomisadas DEC por las incautadas INC - Filter decomisoFiltro= new Filter(); - decomisoFiltro.setSql( - "t.estado = 'INC' " - + " and t.carma in (select arm.pk " - + " from TarmArmas arm, TarmRegistroArmas regarm " - + " where arm.cregistro = regarm.pk and arm.estado = 'INC' " - + " and regarm.personcode = " + personCode + ")"); - dto.addFiltro(decomisoFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - for(TarmDecomisoArma decomisoArma:lrecord){ - TarmArmas arma = ArmasController.findPorCodigo(decomisoArma.getCarma()); - if(arma!=null){ - TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); - decomisoArma.getModifiedData().put("ncalibre", arma.getModifiedData().get("calibre")); - decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); - decomisoArma.getModifiedData().put("ncantidad", arma.getCantidad()); - decomisoArma.getModifiedData().put("nestado", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode()).getDescription():""); - - if(tipoArmaExplosivo.getLongitud()!=null){ - decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); - } - else{ - decomisoArma.getModifiedData().put("nlongitud", ""); - } - decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); - decomisoArma.getModifiedData().put("nserie", arma.getSeriecanon()); - decomisoArma.getModifiedData().put("nlote", arma.getLote()); - decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); - - decomisoArma.getModifiedData().put("nmotivodecomiso", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo()).getDescription():""); - - TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString()); - if(decomiso!=null && decomiso.getPersoncode()!=null){ - decomisoArma.getModifiedData().put("nrodecomiso", decomiso.getNumerotransaccion()); - } - else{ - decomisoArma.getModifiedData().put("nrodecomiso", ""); - } - decomisoArma.getModifiedData().put("seleccionado", false); - } - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - -// @SuppressWarnings("unchecked") -// protected void consulta() { -// try { -// DtoQuery dto = super.getDtoQuery(true); -// dto.setOrderby("t.pk"); -// Filter filtro=new Filter(); -// filtro.setSql("t.fdecomiso=(select max(te.fdecomiso) from TarmDecomisoArma te where te.ccustemp=t.ccustemp)"); -// dto.addFiltro(filtro); -// HashMap mtables = new HashMap(); -// mtables.put(beanalias, dto); // permite adicionar mas de una tabla. -// -// Request request = callerhelper.getRequest(); -// request.setQueryTables(mtables); -// Response resp = callerhelper.executeQuery(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { -// lrecord = new ArrayList(); -// MessageHelper.setMessageError(resp); -// } else { -// lrecord = (List) resp.get(beanalias); -// super.postQuery(lrecord); -// querydatabase(); -// } -// -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } -// } -// - @Override - public void save() { - try { - - for(TarmDecomisoArma tarmDecomisoArma : lrecord){ - if(tarmDecomisoArma.getModifiedData().get("seleccionado")!=null && tarmDecomisoArma.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - TarmArmas arma = ArmasController.findPorCodigo(tarmDecomisoArma.getCarma()); - arma.setEstado("RECL"); - armasController.update(arma); - - tarmDecomisoArma.setEstado("RECL"); - update(tarmDecomisoArma); - } - } - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - DtoSave dtosaveArma = this.armasController.getDtoSave(); - dtosaveArma.setReturnpk(true); - dtosaveArma.setPosition(1); - msave.put( this.armasController.getBeanalias(), dtosaveArma); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - querydatabase(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDecomisoArma tarmDecomisoArma : this.lrecord) { - tarmDecomisoArma.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - -// public static TarmDecomisoArma findByCodigo(String cDecomisoArma) { -// try { -// ReclamoDecomisoController cc = new ReclamoDecomisoController(); -// cc. init(); -// cc.recperpage = 300; -// cc.addFilter("pk", cDecomisoArma); -// cc.querydatabase(); -// if (cc.lrecord != null) { -// return cc.lrecord.get(0); -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } -// -// public static List findByCodigoDecomiso(String cDecomiso) { -// try { -// ReclamoDecomisoController cc = new ReclamoDecomisoController(); -// cc. init(); -// cc.recperpage = 300; -// cc.addFilter("cdecomiso", cDecomiso); -// cc.querydatabase(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } -// -// public static TarmDecomisoArma findxCodigoCustTemporal(String ccustemp,String estado) { -// try { -// ReclamoDecomisoController cc = new ReclamoDecomisoController(); -// cc. init(); -// cc.recperpage = 300; -// cc.addFilter("ccustemp", ccustemp); -// cc.addFilter("estado", estado); -// cc.consulta(); -// if (cc.lrecord != null && cc.lrecord.size()>0) { -// return cc.lrecord.get(0); -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - - public void update(TarmDecomisoArma bean) throws Exception { - record=bean; - super.update(); - } - -// -// public static List find(Long codigoenvio) { -// try { -// ReclamoDecomisoController cc = new ReclamoDecomisoController(); -// cc. init(); -// cc.recperpage = 300; -// cc.addFilter("cdecarmtranrecepcion", codigoenvio.toString()); -// cc.querydatabaseSimple(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } -// -// public static List findEnvio(Long codigoenvio) { -// try { -// ReclamoDecomisoController cc = new ReclamoDecomisoController(); -// cc. init(); -// cc.recperpage = 300; -// cc.addFilter("cdecomisoarmatransaccion", codigoenvio.toString()); -// cc.querydatabaseSimple(); -// if (cc.lrecord != null) { -// return cc.lrecord; -// } -// return null; -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// return null; -// } -// } - -// @SuppressWarnings("unchecked") -// protected void querydatabaseSimple() { -// try { -// DtoQuery dto = this.getDtoQuery(); -// dto.setOrderby("t.pk"); -// -// HashMap mtables = new HashMap(); -// mtables.put(beanalias, dto); // permite adicionar mas de una tabla. -// -// Request request = callerhelper.getRequest(); -// request.setQueryTables(mtables); -// -// Response resp = callerhelper.executeQuery(request); -// -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { -// lrecord = new ArrayList(); -// MessageHelper.setMessageError(resp); -// } else { -// lrecord = (List) resp.get(beanalias); -// super.postQuery(lrecord); -// } -// -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } -// } - - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","nclase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryClasecatalogo); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","ntipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o " - + " where o.pk= (select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","nmarca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ncalibre","i.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)"); - dto.addSubQuery(subqueryCalibre); - SubQuery subqueryLote= new SubQuery("TarmArmas","lote","nserie","i.pk=t.carma"); - dto.addSubQuery(subqueryLote); - - SubQuery subqueryNRecivo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNRecivo); - SubQuery subqueryNTransaccion= new SubQuery("TarmDecomiso","numerotransaccion","numerotransaccion","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNTransaccion); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","nunidad","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryUnidadTipo); - - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog= (select o.color from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmArmas o where o.pk=t.carma) " - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryEstado); - - SubQuery subqueryIndentificacion= new SubQuery("TcustPersonDetail","identification","identification","i.pk.personcode=(select p from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryIndentificacion); - SubQuery subqueryRazonSocial= new SubQuery("TcustPersonDetail","name","nrazons","i.pk.personcode=(select p.personcode from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryRazonSocial); - return dto; - } - - /** - * @return the armasController - */ - public ArmasController getArmasController() { - return armasController; - } - - /** - * @param armasController the armasController to set - */ - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoCoordinadorMilitarController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoCoordinadorMilitarController.java.svn-base deleted file mode 100644 index 5f6f6a0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReclamoDecomisoCoordinadorMilitarController.java.svn-base +++ /dev/null @@ -1,240 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Controlar que permite el cambio de estado de los decomisosArma y tarmArma a RECL - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReclamoDecomisoCoordinadorMilitarController extends AbstractController { - - - @ManagedProperty(value="#{armasController}") - private ArmasController armasController; - - private Integer numeroDias; - - public ReclamoDecomisoCoordinadorMilitarController() throws Exception { - super(TarmDecomisoArma.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMDECOMISOARMA"; - numeroDias=codigos("NUMERO.DIAS.DECOMISO"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener los codigos - */ - private Integer codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getNumbervalue().intValue(); - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - //Cambio de funcionalidad a las armas decomisadas DEC por las incautadas INC-INCA - Filter decomisoFiltro= new Filter(); - decomisoFiltro.setSql("t.estado = 'RECL' and" - + " t.carma in (select arm.pk from TarmArmas arm, TarmRegistroArmas regarm" - + " where arm.cregistro = regarm.pk " - + " and arm.estado = 'RECL' )");//and regarm.personcode = " + personCode + " - dto.addFiltro(decomisoFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - ListlistaRemover= new ArrayList(); - for(TarmDecomisoArma decomisoArma:lrecord){ - TarmArmas arma = ArmasController.findPorCodigo(decomisoArma.getCarma()); - if(arma!=null){ - TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); - decomisoArma.getModifiedData().put("ncalibre", arma.getModifiedData().get("calibre")); - decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); - decomisoArma.getModifiedData().put("ncantidad", arma.getCantidad()); - decomisoArma.getModifiedData().put("nestado", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getEstado(), decomisoArma.getEstadocode()).getDescription():""); - - if(tipoArmaExplosivo.getLongitud()!=null){ - decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); - } - else{ - decomisoArma.getModifiedData().put("nlongitud", ""); - } - decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); - decomisoArma.getModifiedData().put("nserie", arma.getSeriecanon()); - decomisoArma.getModifiedData().put("nlote", arma.getLote()); - decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); - - decomisoArma.getModifiedData().put("nmotivodecomiso", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getMotivodecomiso(), decomisoArma.getMotivodecomisocodigo()).getDescription():""); - - TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString()); - if(decomiso!=null && decomiso.getPersoncode()!=null){ - decomisoArma.getModifiedData().put("nrodecomiso", decomiso.getNumerotransaccion()); - } - else{ - decomisoArma.getModifiedData().put("nrodecomiso", ""); - } - decomisoArma.getModifiedData().put("seleccionado", false); - } - } - lrecord.removeAll(listaRemover); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - for(TarmDecomisoArma tarmDecomisoArma : lrecord){ - if(tarmDecomisoArma.getModifiedData().get("seleccionado")!=null && tarmDecomisoArma.getModifiedData().get("seleccionado").equals(Boolean.TRUE)){ - TarmArmas arma = ArmasController.findPorCodigo(tarmDecomisoArma.getCarma()); - arma.setEstado("RECL"); - armasController.update(arma); - tarmDecomisoArma.setEstado("RECL"); - update(tarmDecomisoArma); - } - } - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - DtoSave dtosaveArma = this.armasController.getDtoSave(); - dtosaveArma.setReturnpk(true); - dtosaveArma.setPosition(1); - msave.put( this.armasController.getBeanalias(), dtosaveArma); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - querydatabase(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDecomisoArma tarmDecomisoArma : this.lrecord) { - tarmDecomisoArma.getModifiedData().put("seleccionado", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - - public void update(TarmDecomisoArma bean) throws Exception { - record=bean; - super.update(); - } - - /** - * @return the armasController - */ - public ArmasController getArmasController() { - return armasController; - } - - /** - * @param armasController the armasController to set - */ - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistrarNovedadController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistrarNovedadController.java.svn-base deleted file mode 100644 index d2127bb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistrarNovedadController.java.svn-base +++ /dev/null @@ -1,519 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.MessageFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.general.mail.EnvioMail; -import com.fp.general.mail.dto.EnvioCorreoDTO; -import com.fp.general.mail.exception.EnvioMailException; -import com.fp.general.mail.factory.EnvioMailFactory; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RegistrarNovedadController extends AbstractController { - - TarmSolicitudTramite solicitudTramite; - - @ManagedProperty(value = "#{tarmSolicitudArmasController}") - private TarmSolicitudArmasController tarmSolicitudArmasController; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - TcustPersonDetail detallesPersona; - TcustPersonAddress direccionPersona; - TcustPersonDetail usuario; - TarmCentroControl centroControl; - String nombreInstitucion; - String gradoFuncionario=""; - private Boolean btnEnviar; - private String csolicitud; - - public RegistrarNovedadController() throws Exception { - super(TarmSolicitudTramite.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - csolicitud=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("CSOLICITUD").toString();//"175"; - // Inicializa autoconsulta - super.startQuery(); - this.init(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REGISTRARNOVEDADCONTROLLER"; - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(csolicitud); - btnEnviar=Boolean.FALSE; - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - //Quemando el personcode de la persona - Filter filtro=new Filter("pk.csolicitud", csolicitud); - dto.addFiltro(filtro); - - //Obteniendo el tramite - TarmSolicitudTramite solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(csolicitud); - - tarmSolicitudArmasController.setCsolicitud(csolicitud); - tarmSolicitudArmasController.setPorDevolucion("N"); - tarmSolicitudArmasController.query(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - - record=lrecord.get(0); - - //Numero de tramite - if(solicitudTramite!=null){ - this.record.put("ntramite", solicitudTramite.getNumerotramite()); - } - - //Obteniendo la solicitud - TarmSolicitud solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(this.record.getPk().getCsolicitud()); - - //Obteniendo los datos y la direccion de la persona - if(solicitud!=null){ - detallesPersona= PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - - String tipoDireccion=""; - - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - - personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(detallesPersona.getPk().getPersoncode()), tipoDireccion); - direccionPersona= personAddressController.getRecord(); - - } - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el grado - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Obteniendo el centro de control - centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() - && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ - - TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - this.nombreInstitucion=catalogoInstitucion.getDescription(); - } - - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - update(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - btnEnviar=true; - TgeneCatalogDetail tipoDireccion=null; - if(direccionPersona.getAddresstypecatalog()!=null && !direccionPersona.getAddresstypecatalog().isEmpty() - && direccionPersona.getAddresstypecatalogcode()!=null && !direccionPersona.getAddresstypecatalogcode().isEmpty()){ - tipoDireccion=CatalogDetailController.findxCodigoCodcatalogo(direccionPersona.getAddresstypecatalog(),direccionPersona.getAddresstypecatalogcode()); - } - - if(tipoDireccion!=null && tipoDireccion.getDescription().equalsIgnoreCase("Mail")){ - enviarNotificacion(); - } - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - //completa la tarea del flujo - //complete la tarea del flujo pasa a Autorizar la devolucion - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TID")); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", record.getObservacionnovedad() == null ? "OK" : record.getObservacionnovedad()); - - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallesPersona.getName()); - datosmail.put("sol",solicitudTramite.getNumerotramite()); - if(record.getObservacionnovedad()!=null){ - datosmail.put("observaciones",record.getObservacionnovedad()); - }else{ - datosmail.put("observaciones","ok"); - } - - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // Centro de control de armas - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnEnviar=Boolean.FALSE; - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("TID"); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("CSOLICITUD"); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que envia un mail de notificación - */ - public void enviarNotificacion(){ - try { - String asunto = MsgControlArmas.getProperty("lbl_asuntoNotificarNovedad"); - String cuerpo=""; - String cuerpo1 = MessageFormat.format(MsgControlArmas.getProperty("cuerpo.mensaje.envio.correo.novedad1"), detallesPersona.getName(), - solicitudTramite.getPk().getCtramite().toString()); - - String cuerpo2="

      "; - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - for (int i = 0; i < tarmSolicitudArmasController.getLrecord().size(); i++) { - cuerpo2=cuerpo2.concat(""); - - //No - cuerpo2=cuerpo2.concat(""); - - //Clase - cuerpo2=cuerpo2.concat(""); - - //Tipo - cuerpo2=cuerpo2.concat(""); - - //Marca - cuerpo2=cuerpo2.concat(""); - - //Modelo - cuerpo2=cuerpo2.concat(""); - - //Calibre - cuerpo2=cuerpo2.concat(""); - - //Serie - cuerpo2=cuerpo2.concat(""); - - //Estado - cuerpo2=cuerpo2.concat(""); - - cuerpo2=cuerpo2.concat(""); - - } - - cuerpo2=cuerpo2.concat("
      "); - cuerpo2=cuerpo2.concat("No."); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Clase"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Tipo"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Marca"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Modelo"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Calibre"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Serie"); - cuerpo2=cuerpo2.concat(""); - cuerpo2=cuerpo2.concat("Estado"); - cuerpo2=cuerpo2.concat("
      "); - Integer no=i+1; - cuerpo2=cuerpo2.concat(no.toString()); - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("clase")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("clase").toString()); - }else{ - cuerpo2=cuerpo2.concat(""); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("tipo")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("tipo").toString()); - }else{ - cuerpo2=cuerpo2.concat(""); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("marca")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("marca").toString()); - }else{ - cuerpo2=cuerpo2.concat(""); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("modelo")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("modelo").toString()); - }else{ - cuerpo2=cuerpo2.concat(""); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("calibre")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("calibre").toString()); - }else{ - cuerpo2=cuerpo2.concat(""); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("seriecanon")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("seriecanon").toString()); - }else{ - cuerpo2=cuerpo2.concat(" "); - } - cuerpo2=cuerpo2.concat(""); - if(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("estado")!=null){ - cuerpo2=cuerpo2.concat(tarmSolicitudArmasController.getLrecord().get(i).getModifiedData().get("estado").toString()); - }else{ - cuerpo2=cuerpo2.concat(" "); - } - cuerpo2=cuerpo2.concat("

      "); - cuerpo2=cuerpo2.concat("Observaciones:
      "); - - String cuerpo3 = MessageFormat.format(MsgControlArmas.getProperty("cuerpo.mensaje.envio.correo.novedad2"), this.record.getObservacionnovedad(), - gradoFuncionario+usuario.getName(),this.nombreInstitucion); - - cuerpo=cuerpo1+cuerpo2+cuerpo3; - - EnvioCorreoDTO envioCorreo = new EnvioCorreoDTO(); - envioCorreo.setCorreoDesde(MsgControlArmas.getProperty("correoDesde")); - envioCorreo.setCorreoPara(new String[]{direccionPersona.getAddress()}); - //envioCorreo.setCorreoPara(new String[]{"ogarcia@bupartech.com"}); - envioCorreo.setAsunto(asunto); - envioCorreo.setMensajeHTML(cuerpo); - EnvioMail envioMail = EnvioMailFactory.getInstancia(); - envioMail.envioMail(envioCorreo); - } catch(EnvioMailException e){ - MessageHelper.setMessageError(new Throwable("Se produjo un error al enviar el correo")); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmSolicitudArmasController getTarmSolicitudArmasController() { - return tarmSolicitudArmasController; - } - - public void setTarmSolicitudArmasController( - TarmSolicitudArmasController tarmSolicitudArmasController) { - this.tarmSolicitudArmasController = tarmSolicitudArmasController; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - public TcustPersonAddress getDireccionPersona() { - return direccionPersona; - } - - public void setDireccionPersona(TcustPersonAddress direccionPersona) { - this.direccionPersona = direccionPersona; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public void setNombreInstitucion(String nombreInstitucion) { - this.nombreInstitucion = nombreInstitucion; - } - - public Boolean getBtnEnviar() { - return btnEnviar; - } - - public void setBtnEnviar(Boolean btnEnviar) { - this.btnEnviar = btnEnviar; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionController.java.svn-base deleted file mode 100644 index 02434b0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionController.java.svn-base +++ /dev/null @@ -1,1002 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.lov.SitioAlmacenamientoLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TgeneInspeccion. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RegistroInspeccionController extends AbstractController{ - - public RegistroInspeccionController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Atributo para obtener el valor del flujo - */ - private String codigoSolicitud; - /** - * Atributo para obtener el valor del flujo - */ - private String numeroSolicitud; - - @ManagedProperty(value = "#{inspeccionController}") - private InspeccionController inspeccionController; - - @ManagedProperty(value = "#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitudArmasController; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController persondetail; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController address; - - @ManagedProperty(value = "#{centroControlArmasController}") - private CentroControlArmasController centroControlArmasController; - - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController personPhoneController; - - //PARA LOS ARCHIVOS - @ManagedProperty(value = "#{inspeccionArchivoController}") - private InspeccionArchivoController inspeccionArchivoController; -// TRAMITE - @ManagedProperty(value = "#{ingresoDatosTipoTramite}") - private IngresoDatosTipoTramite tarmTramiteController; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - - /** - * Campo para seleccionar si el tramite sigue el proceso - */ - private Boolean tramiteProceso=Boolean.FALSE; - /** - * Campo para seleccionar si se niega el tramite - */ - private Boolean tramiteProcesoNegar=Boolean.FALSE; - private String aplicaDecomiso; - private Integer codigoPersona; - //sitio de almacenamiento - private TarmSitioAlmacenamiento sitioAlmacenamiento; - //propietario - private TcustPersonAddress personAddressDireccion; - private TcustPersonAddress personAddressCorreo; - private TcustPersonDetail tcustPersonDetailProp; - private TcustPersonPhone personPhoneDomiProp; - //PERSONA RESPONSABLE - private TcustPersonDetail tcustPersonDetailResp; - /** - * campo para cargar al usuario logeado - */ - private TsafeUserDetail tsafeUserDetail; - private TcustPersonPhone personPhoneDomiResp; - private TcustPersonPhone personPhoneCelResp; - private TcustPersonAddress personAddressCorreoresp; - /** - * Atributos para cargar los archivos - */ - private UploadedFile file; - private UploadedFile uploadedFileFoto1; - private UploadedFile uploadedFileFoto2; - private UploadedFile uploadedFileFoto3; - /** - * Atributos para obtener los codigos pra las validaciones - */ - private String codigoMail; - private String codigoOficina; - private String codigoPhoneFijo; - private String codigoPhoneCelular; - /** - * campo para desabilitar el boton - */ - private Boolean btn=Boolean.FALSE; - - private Boolean btnFlujo; - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - this.startQuery(); - querydatabase(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - codigoSolicitud=super.getMfilters().get("csolicitud"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "REGISTROINSP"; - inspeccionController.create(); - inspeccionArchivoController.create(); - sitioAlmacenamiento= new TarmSitioAlmacenamiento(); - //propietario - personAddressDireccion= new TcustPersonAddress(); - personAddressCorreo= new TcustPersonAddress(); - tcustPersonDetailProp= new TcustPersonDetail(); - personPhoneDomiProp= new TcustPersonPhone(); - //PERSONA RESPONSABLE - tcustPersonDetailResp= new TcustPersonDetail(); - tsafeUserDetail= new TsafeUserDetail(); - personPhoneDomiResp= new TcustPersonPhone(); - personPhoneCelResp= new TcustPersonPhone(); - personAddressCorreoresp= new TcustPersonAddress(); - //se obtiene el usuario logeado - tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - //codigos - codigoMail=codigoParameter("CODIGO.MAIL"); - codigoOficina=codigoParameter("CODIGO.OFICINA"); - codigoPhoneFijo=codigoParameter("CODIGO.PHONE.FIJO"); - codigoPhoneCelular=codigoParameter("CODIGO.PHONE.CELULAR"); - btnFlujo=Boolean.FALSE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public String codigoParameter(String codigo){ - TgeneParameters parameter= ParametersController.find(codigo, "1"); - return parameter.getTextvalue(); - } - - @Override - protected void querydatabase() { - try { - solicitudArmasController.getMfilters().clear(); - solicitudArmasController.getMfilters().put("pk", codigoSolicitud); - solicitudArmasController.query();//devuelve el record - codigoPersona=solicitudArmasController.getRecord().getPersoncode(); - String centroControl=solicitudArmasController.getRecord().getCcentrocontrol(); - Long ctramite=solicitudArmasController.getRecord().getCtramite(); - numeroSolicitud=solicitudArmasController.getRecord().getNumerosolicitud(); - - solicitudTramiteController.getMfilters().clear(); - solicitudTramiteController.getMfilters().put("pk.csolicitud", codigoSolicitud); - solicitudTramiteController.getMfilters().put("pk.ctramite", solicitudArmasController.getRecord().getCtramite().toString()); - solicitudTramiteController.query(); - solicitudTramiteController.setRecord(solicitudTramiteController.getLrecord().get(0)); - - persondetail.getMfilters().clear(); - persondetail.getMfilters().put("pk.personcode", codigoPersona.toString()); - persondetail.addFilterDateto(); - persondetail.query(); - tcustPersonDetailProp=persondetail.getRecord(); - - address.getMfilters().clear(); - address.addPersoncodeFilter(codigoPersona.toString()); - address.addFilterDateto(); - address.query(); - if(address.getLrecord()!=null && address.getLrecord().size()>0){ - for(TcustPersonAddress direccion:address.getLrecord()){ - if(direccion.getAddresstypecatalog().equals(codigoOficina)){//1-CODIGO.OFICINA - personAddressDireccion=direccion; - }else{ - personAddressCorreo=direccion; - } - } - } - - //telefono - personPhoneController.getMfilters().clear(); - personPhoneController.addPersoncodeFilter(codigoPersona.toString()); - personPhoneController.addFilterDateto(); - personPhoneController.getMfilters().put("phonetypecatalog", codigoPhoneFijo);//1 CODIGO.PHONE.FIJO - personPhoneController.query(); - if(personPhoneController.getLrecord()!=null && personPhoneController.getLrecord().size()>0){ - personPhoneDomiProp=personPhoneController.getLrecord().get(0); - } - - centroControlArmasController.getMfilters().clear(); - centroControlArmasController.getMfilters().put("pk", centroControl); - centroControlArmasController.query(); - centroControlArmasController.setRecord(centroControlArmasController.getLrecord().get(0)); - String numOrdenTrabajo=""; - if(solicitudTramiteController.getRecord().getNumerotramite().contains("TRA")){ - numOrdenTrabajo=solicitudTramiteController.getRecord().getNumerotramite().replace("TRA", "INS"); - }else{ - numOrdenTrabajo="TRA"+solicitudTramiteController.getRecord().getNumerotramite(); - } - - inspeccionController.getRecord().setNumordentrabajo(numOrdenTrabajo); - inspeccionController.getRecord().setFecharegistro(new Date(new java.util.Date().getTime())); - //TRAMITE - tarmTramiteController.getMfilters().clear(); - tarmTramiteController.getMfilters().put("pk", ctramite.toString()); - tarmTramiteController.query(); - if(tarmTramiteController.getLrecord()!= null && tarmTramiteController.getLrecord().size()>0){ - tarmTramiteController.setRecord(tarmTramiteController.getLrecord().get(0)); - } - - //responsable--------------------------------------------------------------------------------------- - persondetail.getMfilters().clear(); - persondetail.getMfilters().put("pk.personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - persondetail.getMfilters().put("pk.dateto", tsafeUserDetail.getPk().getDateto().toString()); - persondetail.query(); - tcustPersonDetailResp=persondetail.getRecord(); - - personPhoneController.getMfilters().clear(); - personPhoneController.addPersoncodeFilter(tsafeUserDetail.getPk().getPersoncode().toString()); - personPhoneController.addFilterDateto(); - personPhoneController.query(); - if(personPhoneController.getLrecord()!=null && personPhoneController.getLrecord().size()>0){ - for(TcustPersonPhone tel:personPhoneController.getLrecord()){ - if(tel.getPhonetypecatalog().equals(codigoPhoneFijo)){ // CODIGO.PHONE.FIJO - personPhoneDomiResp=tel; - }else if(tel.getPhonetypecatalog().equals(codigoPhoneCelular)){// CODIGO.PHONE.CELULAR - personPhoneCelResp=tel; - } - } - } - address.getMfilters().clear(); - address.addPersoncodeFilter(tsafeUserDetail.getPk().getPersoncode().toString()); - address.addFilterDateto(); - address.getMfilters().put("addresstypecatalog", codigoMail);// 3 CODIGO.MAIL personaddress - address.query(); - if(address.getLrecord()!=null && address.getLrecord().size()>0){ - address.setRecord(address.getLrecord().get(0)); - personAddressCorreoresp=address.getRecord(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeAprobar() { - if (tramiteProceso) { - tramiteProcesoNegar=false; - inspeccionController.getRecord().setTramiteproceso("Y"); - } else { - tramiteProcesoNegar=true; - inspeccionController.getRecord().setTramiteproceso("N"); - } - aplicaDecomiso=null; - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRechazar() { - if (tramiteProcesoNegar) { - tramiteProceso=false; - inspeccionController.getRecord().setTramiteproceso("N"); - } else { - tramiteProceso=true; - inspeccionController.getRecord().setTramiteproceso("Y"); - } - aplicaDecomiso="N"; - } - - //lov de persona - /** - * Método para abrir el lov de personas - */ - public void openSitioLov() { - if(codigoPersona==null || codigoPersona==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_realizelabusqueda")); - return; - } - Map> params = new HashMap<>(); - List lcat = new ArrayList<>(); - lcat.add(codigoPersona.toString()); - params.put("personcode", lcat); - SitioAlmacenamientoLovController.openLov(params); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnSitioLov(SelectEvent event) throws Exception { - sitioAlmacenamiento=(TarmSitioAlmacenamiento) event.getObject();; - } - - @Override - public void save() { - Boolean msg=Boolean.FALSE; - try { - if(sitioAlmacenamiento==null || sitioAlmacenamiento.getPk()==null - || sitioAlmacenamiento.getPk().trim().length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenesitioinspeccion")); - msg=Boolean.TRUE; - } - if(tramiteProceso== false && tramiteProcesoNegar == false){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenegarocontinuartramiteproceso")); - msg=Boolean.TRUE; - } - if(msg){ - return; - } - HashMap msave = new HashMap(); - Request request = callerhelper.getRequest(); - if(!saveWithDocumentAlfresco()){ - return; - } - if(tramiteProceso){ - bpmDataStatus="A"; - // request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - }else{ - if(aplicaDecomiso==null ||(!aplicaDecomiso.equals("Y") && !aplicaDecomiso.equals("N"))){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesionoenaplicadecomiso")); - return; - } - inspeccionController.getRecord().setAplicadecomiso(aplicaDecomiso); - bpmDataStatus="D"; - //request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - } - //request.modifiedData().put("csolicitud",codigoSolicitud); - //request.modifiedData().put("TID", tid); - bpmDataComment= inspeccionController.getRecord().getObservacion(); - //request.modifiedData().put("BPMObs", inspeccionController.getRecord().getObservacion()); - inspeccionController.getRecord().setPlanificado("T"); - inspeccionController.getRecord().setCsolicitud(codigoSolicitud); - inspeccionController.getRecord().setCtramite(solicitudArmasController.getRecord().getCtramite()); - inspeccionController.getRecord().setCsitioalmacenamiento(sitioAlmacenamiento.getPk()); - inspeccionController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - inspeccionController.update(); - - DtoSave dtosaveInspeccion = inspeccionController.getDtoSave(); - dtosaveInspeccion.setReturnpk(true); - - DtoSave dtosave = inspeccionArchivoController.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - - msave.put(inspeccionController.getBeanalias(), dtosaveInspeccion); // adicionar metadata de mantenimiento para cada tabla. - msave.put(inspeccionArchivoController.getBeanalias(), dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - btn=Boolean.TRUE; - btnFlujo=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void handleUpload(FileUploadEvent event){ - file = event.getFile(); - } - /** - * Método para cargar el archivo pdf - * @param event - */ - public void upload(FileUploadEvent event) { - file = event.getFile(); - } - /** - * Método para cargar la imagen 1 - * @param event - */ - public void upload1(FileUploadEvent event) { - uploadedFileFoto1 = event.getFile(); - } - /** - * Método para cargar la imagen 2 - * @param event - */ - public void upload2(FileUploadEvent event) { - uploadedFileFoto2 = event.getFile(); - } - /** - * Método para cargar la imagen 3 - * @param event - */ - public void upload3(FileUploadEvent event) { - uploadedFileFoto3 = event.getFile(); - } - - /** - * Método para cargar los archivos al alfresco - * */ - public Boolean saveWithDocumentAlfresco() { - try { - Boolean msgArchivos=Boolean.FALSE; - //pdf - if(file==null || file.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseelformatodeinspeccion")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto1==null || uploadedFileFoto1.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto1")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto2==null || uploadedFileFoto2.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto2")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto3==null || uploadedFileFoto3.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto3")); - msgArchivos=Boolean.TRUE; - } - if(msgArchivos){ - return false; - } - String xPathLocation= getRutaDocumentoSolBase() + "/cm:"+numeroSolicitud+"/cm:Inspeccion"; - - //String xphat1="FormatoInspeccion-"+forma.format(fecha)+extencionArchivo(file.getFileName()); - String xphat1=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(file.getFileName()))); - if(alfrescoController.uploadFile(file.getInputstream(),xphat1, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat1); - String fielname=file.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(file.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat2="Foto1-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto1.getFileName()); - String xphat2=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto1.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto1.getInputstream(),xphat2, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat2); - String fielname=uploadedFileFoto1.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto1.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat3="Foto2-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto2.getFileName()); - String xphat3=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto2.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto2.getInputstream(),xphat3, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat3); - String fielname=uploadedFileFoto2.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto2.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat4="Foto3-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto3.getFileName()); - String xphat4=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto3.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto3.getInputstream(),xphat4, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat4); - String fielname=uploadedFileFoto3.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto3.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return true; - } - - public String eliminaCaractersEspeciales(String nombre){ - nombre=nombre.replace("(", ""); - nombre=nombre.replace(")", ""); - String numero="1234567890"; - if(numero.contains(nombre.substring(0, 1))){ - nombre=nombre.replace(nombre.substring(0, 1), "A"); - } - if(nombre.length()<10){ - nombre="ARC"+nombre; - } - return nombre; - } - - /** - * obtiene la extencion del archivo - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * recorta el nombre - * @param nombre - * @return - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Retorna la ruta de documento base en donde se almacenará dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(inspeccionController.getRecord().getFecharegistro()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", codigoSolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "-" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - if(bpmDataStatus!= null && bpmDataStatus.equals("D")){ - Mapdatosmail = new HashMap(); - datosmail.put("razons",tcustPersonDetailProp.getName()); - datosmail.put("sol",solicitudArmasController.getRecord().getNumerosolicitud()); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // Centro de control de armas - datosmail.put("centrocontrol",centroControlArmasController.getRecord().getModifiedData().get("desnombreinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - if(bpmDataStatus.equals("D")){ - saveAnularSolicitud(); - } - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveAnularSolicitud() { - try { - // CATEGORIA 14 PREVIA IMPORTACION - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitudArmasController.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - - //Poner la solicitud en estado anulado - this.solicitudArmasController.getRecord().setEstado("ANU"); - this.solicitudArmasController.update(); - DtoSave dtoSolicitud = this.solicitudArmasController.getDtoSave(); - - TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(this.solicitudArmasController.getRecord().getPk()); - if(solicitudTramiteObj!=null){ - solicitudTramiteObj.setIsnew(false); - solicitudTramiteObj.setEstadotramite("ANU"); - solicitudTramiteController.updateSolicitud(solicitudTramiteObj); - } - //Desasociar las armas en apertura de agencias y apertura de sucursales - if(this.solicitudArmasController.getRecord().getCtramite()==44 || this.solicitudArmasController.getRecord().getCtramite()==48){ - List armasSolicitudList = RecepcionArmasController.findPorSolicitud(this.solicitudArmasController.getRecord().getPk()); - for(TarmSolicitudArmas armaObj:armasSolicitudList){ - - // Codigo agencia de la solicitud - ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(this.solicitudArmasController.getRecord().getPk()); - for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ - String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); - TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); - agenciaArma.setRecord(agenciaArmaObj); - agenciaArma.remove(); - } - } - } - - DtoSave dtoSolicitudTramite = solicitudTramiteController.getDtoSave(); - DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitudArmasController.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - msave.put(solicitudTramiteController.getBeanalias(), dtoSolicitudTramite); - msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitudArmasController.postCommit(resp); - solicitudTramiteController.postCommit(resp); - agenciaArma.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitudArmasController.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public InspeccionController getInspeccionController() { - return inspeccionController; - } - public void setInspeccionController(InspeccionController inspeccionController) { - this.inspeccionController = inspeccionController; - } - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - public SolicitudArmasController getSolicitudArmasController() { - return solicitudArmasController; - } - public void setSolicitudArmasController( - SolicitudArmasController solicitudArmasController) { - this.solicitudArmasController = solicitudArmasController; - } - public PersonDetailController getPersondetail() { - return persondetail; - } - public void setPersondetail(PersonDetailController persondetail) { - this.persondetail = persondetail; - } - public PersonAddressController getAddress() { - return address; - } - public void setAddress(PersonAddressController address) { - this.address = address; - } - public TarmSitioAlmacenamiento getSitioAlmacenamiento() { - return sitioAlmacenamiento; - } - public void setSitioAlmacenamiento(TarmSitioAlmacenamiento sitioAlmacenamiento) { - this.sitioAlmacenamiento = sitioAlmacenamiento; - } - public Boolean getTramiteProceso() { - return tramiteProceso; - } - public void setTramiteProceso(Boolean tramiteProceso) { - this.tramiteProceso = tramiteProceso; - } - - public String getAplicaDecomiso() { - return aplicaDecomiso; - } - - public void setAplicaDecomiso(String aplicaDecomiso) { - this.aplicaDecomiso = aplicaDecomiso; - } - - public CentroControlArmasController getCentroControlArmasController() { - return centroControlArmasController; - } - - public void setCentroControlArmasController( - CentroControlArmasController centroControlArmasController) { - this.centroControlArmasController = centroControlArmasController; - } - - public TcustPersonAddress getPersonAddressDireccion() { - return personAddressDireccion; - } - - public void setPersonAddressDireccion(TcustPersonAddress personAddressDireccion) { - this.personAddressDireccion = personAddressDireccion; - } - - public TcustPersonAddress getPersonAddressCorreo() { - return personAddressCorreo; - } - - public void setPersonAddressCorreo(TcustPersonAddress personAddressCorreo) { - this.personAddressCorreo = personAddressCorreo; - } - - public PersonPhoneController getPersonPhoneController() { - return personPhoneController; - } - - public void setPersonPhoneController(PersonPhoneController personPhoneController) { - this.personPhoneController = personPhoneController; - } - - public TcustPersonDetail getTcustPersonDetailProp() { - return tcustPersonDetailProp; - } - - public void setTcustPersonDetailProp(TcustPersonDetail tcustPersonDetailProp) { - this.tcustPersonDetailProp = tcustPersonDetailProp; - } - - public TcustPersonDetail getTcustPersonDetailResp() { - return tcustPersonDetailResp; - } - - public void setTcustPersonDetailResp(TcustPersonDetail tcustPersonDetailResp) { - this.tcustPersonDetailResp = tcustPersonDetailResp; - } - - public TsafeUserDetail getTsafeUserDetail() { - return tsafeUserDetail; - } - - public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { - this.tsafeUserDetail = tsafeUserDetail; - } - - public TcustPersonPhone getPersonPhoneDomiProp() { - return personPhoneDomiProp; - } - - public void setPersonPhoneDomiProp(TcustPersonPhone personPhoneDomiProp) { - this.personPhoneDomiProp = personPhoneDomiProp; - } - - public TcustPersonPhone getPersonPhoneDomiResp() { - return personPhoneDomiResp; - } - - public void setPersonPhoneDomiResp(TcustPersonPhone personPhoneDomiResp) { - this.personPhoneDomiResp = personPhoneDomiResp; - } - - public TcustPersonPhone getPersonPhoneCelResp() { - return personPhoneCelResp; - } - - public void setPersonPhoneCelResp(TcustPersonPhone personPhoneCelResp) { - this.personPhoneCelResp = personPhoneCelResp; - } - - public TcustPersonAddress getPersonAddressCorreoresp() { - return personAddressCorreoresp; - } - - public void setPersonAddressCorreoresp( - TcustPersonAddress personAddressCorreoresp) { - this.personAddressCorreoresp = personAddressCorreoresp; - } - - public Integer getCodigoPersona() { - return codigoPersona; - } - - public void setCodigoPersona(Integer codigoPersona) { - this.codigoPersona = codigoPersona; - } - - public InspeccionArchivoController getInspeccionArchivoController() { - return inspeccionArchivoController; - } - - public void setInspeccionArchivoController( - InspeccionArchivoController inspeccionArchivoController) { - this.inspeccionArchivoController = inspeccionArchivoController; - } - - public UploadedFile getFile() { - return file; - } - - public void setFile(UploadedFile file) { - this.file = file; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public UploadedFile getUploadedFileFoto1() { - return uploadedFileFoto1; - } - - public void setUploadedFileFoto1(UploadedFile uploadedFileFoto1) { - this.uploadedFileFoto1 = uploadedFileFoto1; - } - - public UploadedFile getUploadedFileFoto2() { - return uploadedFileFoto2; - } - - public void setUploadedFileFoto2(UploadedFile uploadedFileFoto2) { - this.uploadedFileFoto2 = uploadedFileFoto2; - } - - public UploadedFile getUploadedFileFoto3() { - return uploadedFileFoto3; - } - - public void setUploadedFileFoto3(UploadedFile uploadedFileFoto3) { - this.uploadedFileFoto3 = uploadedFileFoto3; - } - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - public IngresoDatosTipoTramite getTarmTramiteController() { - return tarmTramiteController; - } - - public void setTarmTramiteController( - IngresoDatosTipoTramite tarmTramiteController) { - this.tarmTramiteController = tarmTramiteController; - } - - public Boolean getTramiteProcesoNegar() { - return tramiteProcesoNegar; - } - - public void setTramiteProcesoNegar(Boolean tramiteProcesoNegar) { - this.tramiteProcesoNegar = tramiteProcesoNegar; - } - - public Boolean getBtn() { - return btn; - } - - public void setBtn(Boolean btn) { - this.btn = btn; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionPlaniNoPlaniController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionPlaniNoPlaniController.java.svn-base deleted file mode 100644 index 2401de1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RegistroInspeccionPlaniNoPlaniController.java.svn-base +++ /dev/null @@ -1,725 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.lov.PlanificacionTramiteLovController; -import com.fp.frontend.controller.armas.lov.SitioAlmacenamientoLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.ins.TarmPlanificacionTramite; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmSitioAlmacenamiento; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RegistroInspeccionPlaniNoPlaniController extends AbstractController { - - @ManagedProperty(value = "#{inspeccionController}") - private InspeccionController inspeccionController; - - //PARA LOS ARCHIVOS - @ManagedProperty(value = "#{inspeccionArchivoController}") - private InspeccionArchivoController inspeccionArchivoController; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value = "#{planificacionTramiteController}") - PlanificacionTramiteController planificacionTramiteController; - - private TarmPlanificacionTramite planificacionTramite; - - private TcustPersonDetail tcustPersonDetailInspeccion; - - private TarmSitioAlmacenamiento sitioAlmacenamiento; - - private TsafeUserDetail tsafeUserDetail; - - private List lplanificacion; - /** - * Campo para seleccionar si el tramite sigue el proceso - */ - private Boolean tramiteProceso = Boolean.FALSE; - - private Boolean tramiteProcesoNegar=Boolean.FALSE; - - private Map personaPropietario; - - private TarmCentroControl centroControl; - private String aplicaDecomiso; - - private String codigoPersonaSitioAlm; - - private String numerotrabajo; - /** - * Atributos para cargar los archivos - */ - private UploadedFile file; - private UploadedFile uploadedFileFoto1; - private UploadedFile uploadedFileFoto2; - private UploadedFile uploadedFileFoto3; - /** - * campo para desabilitar el boton - */ - private Boolean btn=Boolean.FALSE; - - /** - * Constructor - * @throws Exception - */ - public RegistroInspeccionPlaniNoPlaniController() throws Exception { - super(TcustPersonDetail.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.personaPropietario = new HashMap<>(); - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "REGINSPECPLANINO"; - tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - String legalcodepla=codigoParameter("LEGALCODE.PLAN"); - lplanificacion=CatalogDetailController.find("OPERACIONINSPECCION",legalcodepla); - inspeccionController.create(); - inspeccionController.getRecord().setFecharegistro(new Date(new java.util.Date().getTime())); - numerotrabajo=null; - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.getMfilters().put("pk.personcode", tsafeUserDetail.getPk().getPersoncode().toString()); - addFilterDateto(); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - request.put("queryalias", "INSPECCIONPLANIFICADA"); - request.put("querytype", "P"); - //DATOS ADICIONALES - if(planificacionTramite!=null){ - request.put("personcodepropietario", planificacionTramite.getModifiedData().get("personcode")); - codigoPersonaSitioAlm=planificacionTramite.getModifiedData().get("personcode").toString(); - } - if(tcustPersonDetailInspeccion!=null){ - request.put("personcodepropietario", tcustPersonDetailInspeccion.getPk().getPersoncode()); - codigoPersonaSitioAlm=tcustPersonDetailInspeccion.getPk().getPersoncode().toString(); - } - - request.put("ccentrocontrol","0035"); - //com.fp.armas.rules.query.solicitud.CompletaDatosInspeccionPlan - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TcustPersonDetail(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TcustPersonDetail) resp.get(this.beanalias); - this.personaPropietario = (Map) resp.get("PERSONAPROPIETARIO"); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private String codigoParameter(String codigo) throws Exception{ - TgeneParameters parameter= ParametersController.find(codigo, "1"); - return parameter.getTextvalue(); - } - - public void openPlanificacionTramiteLov() { - Map> params = new HashMap<>(); - List lcat = new ArrayList<>(); - lcat.add(centroControl.getPk()); - params.put("centrocontrol", lcat); - PlanificacionTramiteLovController.openLov(params); - } - - public void onReturnPlanificacionTramiteLov(SelectEvent event) throws Exception { - planificacionTramite=(TarmPlanificacionTramite) event.getObject(); - tcustPersonDetailInspeccion=null; - querydatabase(); - } - - /** - * Método para abrir el lov de sitio de almacenamineot - */ - public void openSitioLov() { - if(codigoPersonaSitioAlm==null || codigoPersonaSitioAlm.trim().length()==0){ - MessageHelper.setMessageError("SELECCIONE UN PROPIETARIO O RESPONSABLE"); - return; - } - Map> params = new HashMap<>(); - List lcat = new ArrayList<>(); - lcat.add(codigoPersonaSitioAlm); - params.put("personcode", lcat); - SitioAlmacenamientoLovController.openLov(params); - } - - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnSitioLov(SelectEvent event) throws Exception { - sitioAlmacenamiento=(TarmSitioAlmacenamiento) event.getObject(); - } - - - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - tcustPersonDetailInspeccion = (TcustPersonDetail) event.getObject(); - planificacionTramite=null; - querydatabase(); - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeAprobar() { - if (tramiteProceso) { - tramiteProcesoNegar=false; - inspeccionController.getRecord().setTramiteproceso("Y"); - } else { - tramiteProcesoNegar=true; - inspeccionController.getRecord().setTramiteproceso("N"); - } - aplicaDecomiso=null; - } - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeRechazar() { - if (tramiteProcesoNegar) { - tramiteProceso=false; - inspeccionController.getRecord().setTramiteproceso("N"); - } else { - tramiteProceso=true; - inspeccionController.getRecord().setTramiteproceso("Y"); - } - aplicaDecomiso="N"; - } - - - @Override - public void save() { - Boolean msg=Boolean.FALSE; - try { - if(sitioAlmacenamiento==null || sitioAlmacenamiento.getPk()==null - || sitioAlmacenamiento.getPk().trim().length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenesitioinspeccion")); - msg=Boolean.TRUE; - } - if(tramiteProceso== false && tramiteProcesoNegar == false){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionenegarocontinuartramiteproceso")); - msg=Boolean.TRUE; - } - if(msg){ - return; - } - HashMap msave = new HashMap(); - Request request = callerhelper.getRequest(); - if(!saveWithDocumentAlfresco()){ - return; - } - if(tramiteProceso){ - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - }else{ - if(aplicaDecomiso==null ||(!aplicaDecomiso.equals("N") && !aplicaDecomiso.equals("N"))){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesionoenaplicadecomiso")); - return; - } - inspeccionController.getRecord().setAplicadecomiso(aplicaDecomiso); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - } - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", inspeccionController.getRecord().getObservacion()); - - - //actualiza el campo de la planificacion - if(planificacionTramite!=null){ - planificacionTramiteController.create(); - planificacionTramiteController.setRecord(planificacionTramite); - planificacionTramiteController.getRecord().setInspeccion("Y"); - planificacionTramiteController.actualizar(planificacionTramiteController.getRecord()); - DtoSave dtosavePlanificacion = planificacionTramiteController.getDtoSave(); - dtosavePlanificacion.setReturnpk(true); - dtosavePlanificacion.setPosition(3); - msave.put(planificacionTramiteController.getBeanalias(), dtosavePlanificacion); - inspeccionController.getRecord().setCplanificaciontramite(planificacionTramite.getPk()); - } - - inspeccionController.getRecord().setCsitioalmacenamiento(sitioAlmacenamiento.getPk()); - inspeccionController.getRecord().setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - inspeccionController.getRecord().setCentrocontrol(centroControl.getPk()); - Integer canno = Calendar.getInstance().get(Calendar.YEAR); - inspeccionController.getRecord().setAnno(Long.parseLong(canno.toString())); - inspeccionController.update(); - - DtoSave dtosaveInspeccion = inspeccionController.getDtoSave(); - dtosaveInspeccion.setReturnpk(true); - dtosaveInspeccion.setPosition(2); - msave.put(inspeccionController.getBeanalias(), dtosaveInspeccion); - - DtoSave dtosave = inspeccionArchivoController.getDtoSave(); - dtosave.setReturnpk(true); - dtosave.setPosition(1); - msave.put(inspeccionArchivoController.getBeanalias(), dtosave); - - - request.setSaveTables(msave); - //com.fp.armas.rules.save.solicitud.RegistroInspeccion (TransactionRule) - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - inspeccionController.postCommit(resp); - inspeccionArchivoController.postCommit(resp); - planificacionTramiteController.postCommit(resp); - numerotrabajo=""+resp.get("numerotrabajo"); - MessageHelper.setMessageInfo(resp); - btn=Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void handleUpload(FileUploadEvent event){ - file = event.getFile(); - } - - public void upload(FileUploadEvent event) { - file = event.getFile(); - } - public void upload1(FileUploadEvent event) { - uploadedFileFoto1 = event.getFile(); - } - public void upload2(FileUploadEvent event) { - uploadedFileFoto2 = event.getFile(); - } - public void upload3(FileUploadEvent event) { - uploadedFileFoto3 = event.getFile(); - } - - /** - * Método para cargar los archivos al alfresco - * */ - public Boolean saveWithDocumentAlfresco() { - try { - Boolean msgArchivos=Boolean.FALSE; - //pdf - if(file==null || file.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreseelformatodeinspeccion")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto1==null || uploadedFileFoto1.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto1")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto2==null || uploadedFileFoto2.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto2")); - msgArchivos=Boolean.TRUE; - } - if(uploadedFileFoto3==null || uploadedFileFoto3.getFileName()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_ingreselafoto3")); - msgArchivos=Boolean.TRUE; - } - if(msgArchivos){ - return false; - } - String xPathLocation=null; - if(planificacionTramite!=null){ - xPathLocation= getRutaDocumentoSolBase() + "/cm:Inspeccion/cm:NO-PLANIFICADA-"+codigoPersonaSitioAlm; - //codigoPersonaSitioAlm=planificacionTramite.getModifiedData().get("personcode").toString(); - } - if(tcustPersonDetailInspeccion!=null){ - xPathLocation= getRutaDocumentoSolBase() + "/cm:Inspeccion/cm:PLANIFICADA-"+codigoPersonaSitioAlm; - //codigoPersonaSitioAlm=tcustPersonDetailInspeccion.getPk().getPersoncode().toString(); - } - //String xphat1="FormatoInspeccion-"+forma.format(fecha)+extencionArchivo(file.getFileName()); - String xphat1=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(file.getFileName()))); - if(alfrescoController.uploadFile(file.getInputstream(),xphat1, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat1); - String fielname=file.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(file.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat2="Foto1-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto1.getFileName()); - String xphat2=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto1.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto1.getInputstream(),xphat2, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat2); - String fielname=uploadedFileFoto1.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto1.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat3="Foto2-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto2.getFileName()); - String xphat3=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto2.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto2.getInputstream(),xphat3, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat3); - String fielname=uploadedFileFoto2.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto2.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - //String xphat4="Foto3-"+forma.format(fecha)+extencionArchivo(uploadedFileFoto3.getFileName()); - String xphat4=eliminaCaractersEspeciales(Utilidades.obtieneNombreLimpio(recorteNombre(uploadedFileFoto3.getFileName()))); - if(alfrescoController.uploadFile(uploadedFileFoto3.getInputstream(),xphat4, xPathLocation)){ - inspeccionArchivoController.create(); - inspeccionArchivoController.getRecord().setXpath(xPathLocation + "/cm:"+xphat4); - String fielname=uploadedFileFoto3.getFileName(); - if(fielname.length()>99){ - fielname=fielname.substring(0, 95)+extencionArchivo(uploadedFileFoto3.getFileName()); - } - inspeccionArchivoController.getRecord().setDescripcion(fielname); - inspeccionArchivoController.update(); - }else{ - return false; - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return true; - } - - public String eliminaCaractersEspeciales(String nombre){ - nombre=nombre.replace("(", ""); - nombre=nombre.replace(")", ""); - return nombre; - } - - /** - * obtiene la extencion del archivo - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * recorta el nombre - * @param nombre - * @return - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - /** - * Retorna la ruta de documento base en donde se almacenará dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(inspeccionController.getRecord().getFecharegistro()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - public InspeccionController getInspeccionController() { - return inspeccionController; - } - - public void setInspeccionController(InspeccionController inspeccionController) { - this.inspeccionController = inspeccionController; - } - - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public Map getPersonaPropietario() { - return personaPropietario; - } - public void setPersonaPropietario(Map personaPropietario) { - this.personaPropietario = personaPropietario; - } - - - public TarmPlanificacionTramite getPlanificacionTramite() { - return planificacionTramite; - } - - - public void setPlanificacionTramite( - TarmPlanificacionTramite planificacionTramite) { - this.planificacionTramite = planificacionTramite; - } - - - public TarmSitioAlmacenamiento getSitioAlmacenamiento() { - return sitioAlmacenamiento; - } - - - public void setSitioAlmacenamiento(TarmSitioAlmacenamiento sitioAlmacenamiento) { - this.sitioAlmacenamiento = sitioAlmacenamiento; - } - - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - - public Boolean getTramiteProceso() { - return tramiteProceso; - } - - - public void setTramiteProceso(Boolean tramiteProceso) { - this.tramiteProceso = tramiteProceso; - } - - - public TsafeUserDetail getTsafeUserDetail() { - return tsafeUserDetail; - } - - - public void setTsafeUserDetail(TsafeUserDetail tsafeUserDetail) { - this.tsafeUserDetail = tsafeUserDetail; - } - - - public Boolean getTramiteProcesoNegar() { - return tramiteProcesoNegar; - } - - - public void setTramiteProcesoNegar(Boolean tramiteProcesoNegar) { - this.tramiteProcesoNegar = tramiteProcesoNegar; - } - - - public String getAplicaDecomiso() { - return aplicaDecomiso; - } - - - public void setAplicaDecomiso(String aplicaDecomiso) { - this.aplicaDecomiso = aplicaDecomiso; - } - - - public UploadedFile getFile() { - return file; - } - - - public void setFile(UploadedFile file) { - this.file = file; - } - - - public UploadedFile getUploadedFileFoto1() { - return uploadedFileFoto1; - } - - - public void setUploadedFileFoto1(UploadedFile uploadedFileFoto1) { - this.uploadedFileFoto1 = uploadedFileFoto1; - } - - - public UploadedFile getUploadedFileFoto2() { - return uploadedFileFoto2; - } - - - public void setUploadedFileFoto2(UploadedFile uploadedFileFoto2) { - this.uploadedFileFoto2 = uploadedFileFoto2; - } - - - public UploadedFile getUploadedFileFoto3() { - return uploadedFileFoto3; - } - - - public void setUploadedFileFoto3(UploadedFile uploadedFileFoto3) { - this.uploadedFileFoto3 = uploadedFileFoto3; - } - - public List getLplanificacion() { - return lplanificacion; - } - - public void setLplanificacion(List lplanificacion) { - this.lplanificacion = lplanificacion; - } - - public InspeccionArchivoController getInspeccionArchivoController() { - return inspeccionArchivoController; - } - - public void setInspeccionArchivoController( - InspeccionArchivoController inspeccionArchivoController) { - this.inspeccionArchivoController = inspeccionArchivoController; - } - - public PlanificacionTramiteController getPlanificacionTramiteController() { - return planificacionTramiteController; - } - - public void setPlanificacionTramiteController( - PlanificacionTramiteController planificacionTramiteController) { - this.planificacionTramiteController = planificacionTramiteController; - } - - public TcustPersonDetail getTcustPersonDetailInspeccion() { - return tcustPersonDetailInspeccion; - } - - public void setTcustPersonDetailInspeccion( - TcustPersonDetail tcustPersonDetailInspeccion) { - this.tcustPersonDetailInspeccion = tcustPersonDetailInspeccion; - } - - public Boolean getBtn() { - return btn; - } - - public void setBtn(Boolean btn) { - this.btn = btn; - } - - public String getCodigoPersonaSitioAlm() { - return codigoPersonaSitioAlm; - } - - public void setCodigoPersonaSitioAlm(String codigoPersonaSitioAlm) { - this.codigoPersonaSitioAlm = codigoPersonaSitioAlm; - } - - public String getNumerotrabajo() { - return numerotrabajo; - } - - public void setNumerotrabajo(String numerotrabajo) { - this.numerotrabajo = numerotrabajo; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAgenciasSucursalesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAgenciasSucursalesController.java.svn-base deleted file mode 100644 index 1537d65..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAgenciasSucursalesController.java.svn-base +++ /dev/null @@ -1,239 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Controlador principal Consulta Agencias y Sucursales - * - */ -@SuppressWarnings("serial") -@ManagedBean(name="reporteAgenciasSucursalesController") -@ViewScoped -public class ReporteAgenciasSucursalesController extends AbstractController { - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - * Nombre/razón social - */ - private String nombreRazonSocial; - /** - * numedo de identificacion - */ - private String numeroDocumento; - - /** - * Filtro de los codigos de los tramites - */ - private String filtro; - - /** - * Codigo de la persona - */ - private Integer personcode; - - - public ReporteAgenciasSucursalesController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - } - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REPORTEAGENCIASUCURSAL"; - TsafeUserDetail userDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TgeneParameters parametroCodigosTramite = ParametersController.find("CODTRAMAGESUC", userDetail.getCompanycode().toString()); - filtro=parametroCodigosTramite.getTextvalue(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabase() { - } - - @Override - public void save() { - } - - /** - * Abre el lov de persona - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - - TcustPersonDetail personaDetailSelecionada = (TcustPersonDetail) event.getObject(); - nombreRazonSocial=personaDetailSelecionada.getName(); - numeroDocumento=personaDetailSelecionada.getIdentification(); - personcode=personaDetailSelecionada.getPk().getPersoncode(); - } - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - public void generarReporte(){ - if(personcode==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_seleccione_nombre")); - return; - } - String path = "armas/reports/reporteAgenciaSucursal"; - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - TsafeUserDetail userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - obtenerCentroControl(); - parameters.put("unidadmilitar", institucionCentroControl); - - parameters.put("nombreRazonSocial", nombreRazonSocial); - parameters.put("centroControl", institucionCentroControl); - Date fechaActual= new Date(); - SimpleDateFormat parseador = new SimpleDateFormat("dd/MM/yyyy hh:mm"); - parameters.put("fecActual", parseador.format(fechaActual)); - - parameters.put("filtro",filtro); - parameters.put("filtro2",personcode); - - String format="pdf"; - String filename="Certificado"; - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getNombreRazonSocial() { - return nombreRazonSocial; - } - - public void setNombreRazonSocial(String nombreRazonSocial) { - this.nombreRazonSocial = nombreRazonSocial; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getFiltro() { - return filtro; - } - - public void setFiltro(String filtro) { - this.filtro = filtro; - } - - public Integer getPersoncode() { - return personcode; - } - - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAutorizacionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAutorizacionesController.java.svn-base deleted file mode 100644 index 59a2868..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteAutorizacionesController.java.svn-base +++ /dev/null @@ -1,576 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.BuscarTramiteLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.OrigenTramiteController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmOrigenTramite; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitosKey; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteAutorizacionesController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - - private TarmTramite tarmTramite; - - TgeneCatalogDetail tipoTramite = null ; - TgeneCatalogDetail tipoAutorizacion = null; - TgeneCatalogDetail actividad = null; - TgeneCatalogDetail categoria = null; - - /** - * Habilita campos en actualización de datos generales - */ - private boolean actualizaDatosGenerales; - - /** - * Aprueba si es guía de libre tránsito - */ - private boolean guiaLibreTransito; - - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - - /** - * Id del tipo de tramite - */ - private String idAutorizacion; - private String idIdentificacion; - - private String numeroDocumento; - - private String idCategoria; - - private String idActividad; - - /** - * Id del tipo de tramite - */ - private String idControl; - - /** - * Lista de centros de control de armas - */ - // private List centroControlList; - private List tipoDocumentoList; - - private List centroControlList; - - private List autorizacionList; - - private List categoriaList; - - private List actividadList; - - private List controlList; - - private TgeneCatalogDetail tipoControl = new TgeneCatalogDetail(); - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - - - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - - - public ReporteAutorizacionesController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - beanalias = "RPRTEAUTORIZACIONES"; - // centroControlList = CentroControlArmasController.findAll(); - centroControlList = CatalogDetailController.find("ESTADOAUTORIZACION"); - // autorizacionList = CatalogDetailController.find("TIPOAUTORIZACION"); // tipo de tramite - // categoriaList = CatalogDetailController.find("CATEGORIA"); //catetegoria - // actividadList = CatalogDetailController.find("USOACTIVIDAD"); // actividad - tipoDocumentoList = CatalogDetailController.find("IDENTIFICATION"); - controlList = CatalogDetailController.find("NOMBREINSTITUCION"); - //obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - - if(this.tipoTramite == null){ - MessageHelper.setMessageError("ERROR: CAMPO TIPO TRMITE REQUERIDO"); - return; - } - - - if(this.fechaInicio!=null || this.fechaFin!=null) - { - if(this.fechaInicio.getTime() > this.fechaFin.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - return; - } - if(this.fechaInicio.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - return; - } - if(this.fechaFin.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - return; - } - } - - Calendar fechaActualCldr = Calendar.getInstance(); - String path = "armas/reports/autorizaciones"; - String filename="autorizaciones"; - String nombreUsuario=""; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - // institucionCentroControl - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - //parameters.put("unidadmilitar", "hola"); - parameters.put("lugarFecha", Utilidades.armarFormatoFechaConHora(fechaActualCldr)); - parameters.put("usuario", nombreUsuario); - parameters.put("numeroDocumento"," ".equalsIgnoreCase(numeroDocumento)?null:numeroDocumento); - parameters.put("idControl", "TODOS".equalsIgnoreCase(idControl)?null:idControl); //centro de control - parameters.put("idCentroControl","TODOS".equalsIgnoreCase(idCentroControl)?null:idCentroControl); // estado - //parameters.put("idAutorizacion", "TODOS".equalsIgnoreCase(idAutorizacion)?null:idAutorizacion); // tipo de tramite - //parameters.put("idCategoria", "TODOS".equalsIgnoreCase(idCategoria)?null:idCategoria); // categoria - //parameters.put("idActividad", "TODOS".equalsIgnoreCase(idActividad)?null:idActividad); // uso actividad - parameters.put("idIdentificacion", "TODOS".equalsIgnoreCase(idIdentificacion)?null:idIdentificacion); // tipo de identificacion - parameters.put("fechaInicio", this.fechaInicio==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaInicio)); - parameters.put("fechaFin", this.fechaFin==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaFin)); - TgeneCatalogDetail obj = CatalogDetailController.findCatalogo("NOMBREINSTITUCION", idControl); - parameters.put("tipocentro", "TODOS".equalsIgnoreCase(idControl)?"TODOS":obj.getDescription()) ; //centro de control detalle - TgeneCatalogDetail obj1 = CatalogDetailController.findCatalogo("ESTADOAUTORIZACION", idCentroControl); - parameters.put("pestado", "TODOS".equalsIgnoreCase(idCentroControl)?"TODOS":obj1.getDescription()) ; //estado detalle - TgeneCatalogDetail obj2 = CatalogDetailController.findCatalogo("IDENTIFICATION", idIdentificacion); - parameters.put("pdocumento", "TODOS".equalsIgnoreCase(idIdentificacion)?"TODOS":obj2.getDescription()) ; //tipo documento detalle - - parameters.put("idAutorizacion", tipoAutorizacion.getPk().getCatalog()); - parameters.put("idCategoria", categoria.getPk().getCatalog()); - parameters.put("idActividad", actividad.getPk().getCatalog()); - parameters.put("Tipotramite", tipoTramite.getPk().getCatalog()); - - - - try{ - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - - } - - - /** - * Abre el LOV de trámite - */ - public void openLovTramite() { - Map> params = new HashMap>(); - List ltipopersona = new ArrayList<>(); - ltipopersona = null; - params.put("tipopersonasol", ltipopersona); - BuscarTramiteLovController.openLov(params); - } - - - - /** - * Regresa del LOV para cargar valores - * @param event {@link SelectEvent} - */ - public void onReturnTramite(SelectEvent event) { - try{ - TarmTramite tramite = (TarmTramite) event.getObject(); - this.tarmTramite = tramite; -// if(!procedeTramite(TarmTramiteController.find(tramite.getCtramitepadre() != null ? tramite.getCtramitepadre().toString() : "-1"),tramite.getPk())){ - - - solicitud.getRecord().setCtramite(tramite.getPk()); - tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - - - - - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - - - } - - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public String getIdAutorizacion() { - return idAutorizacion; - } - - public void setIdAutorizacion(String idAutorizacion) { - this.idAutorizacion = idAutorizacion; - } - - //idIdentificacion - - public String getIdIdentificacion() { - return idIdentificacion; - } - - public void setIdIdentificacion(String idIdentificacion) { - this.idIdentificacion = idIdentificacion; - } - //public List getCentroControlList() { -// return centroControlList; - //} - - //public void setCentroControlList(List centroControlList) { - //this.centroControlList = centroControlList; - //} - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - /*CFLORES*/ - public List getTipoDocumentoList() { - return tipoDocumentoList; - } - - public void getTipoDocumentoList(List tipoDocumentoList) { - this.tipoDocumentoList = tipoDocumentoList; - } - /**/ - - public List getAutorizacionList() { - return autorizacionList; - } - - public void setAutorizacionList(List autorizacionList) { - this.autorizacionList = autorizacionList; - } - - /*cflores*/ - public List getControlList() { - return controlList; - } - - public void setControlList(List controlList) { - this.controlList = controlList; - } - - public String getIdControl() { - return idControl; - } - - public void setIdControl(String idControl) { - this.idControl = idControl; - } - /*categoria*/ - public List getCategoriaList() { - return categoriaList; - } - - public void setCategoriaList(List categoriaList) { - this.categoriaList = categoriaList; - } - - public String getIdCategoria() { - return idCategoria; - } - - public void setIdCategoria(String idCategoria) { - this.idCategoria = idCategoria; - } - /**/ - - /*actividad*/ - public List getActividadList() { - return actividadList; - } - - public void setActividadList(List actividadList) { - this.actividadList = actividadList; - } - - public String getIdActividad() { - return idActividad; - } - - public void setIdActividad(String idActividad) { - this.idActividad = idActividad; - } - /**/ - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - /**/ - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - /** - * Entrega el valor de: solicitud - * - * @return SolicitudArmasController - */ - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - /** - * Fija el valor de: solicitud - * - * @param solicitud Valor a fijar en el atributo. - */ - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.netbeans-base deleted file mode 100644 index 0112405..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.netbeans-base +++ /dev/null @@ -1,971 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteConsultaSolicitudClienteController extends - AbstractController { - - private static final long serialVersionUID = -4049698904561227471L; - - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - /** - * Bandera que indica si existe o no un registro para mostrar la solicitud - */ - private boolean existeSolicitud; - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - - private List lprovincias; - private List lcantones; - private List lparroquias; - private List lcities; - - private List lmarca; - /** - * Controlador de la solicitud - */ - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ -// @ManagedProperty(value = "#{solicitudArmasBPMController}") -// private SolicitudArmasBPMController solicitud; - - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - private Boolean requiereNoSolAucpBln; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - private TsafeUserDetail userDetail; - - /** - * - * @throws Exception - */ - public ReporteConsultaSolicitudClienteController() throws Exception{ - super(AbstractDataTransport.class); - } - - /** - * postCosntruct - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - requiereNoSolAucpBln=Boolean.FALSE; - this.startQuery(); - } - - private void init(){ - this.beanalias = "REPORTESOLICITUD"; - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - //Realizo las busquedas en base a los controladores - try { - limpiaDatos(); -// if(solicitud.getRecord() == null || solicitud.getRecord().getPk()==null){ - Utilidades.caracterEspecial(solicitud.getMfilters().get("numerosolicitud")); - solicitud.query(); -// } - if(solicitud.getRecord() != null && solicitud.getRecord().getPk() != null){ - //Valida que corresponda al mismo cliente - if(!userDetail.getPk().getPersoncode().equals(solicitud.getRecord().getPersoncode())){ - MessageHelper.setMessageWarn("Solicitud no corresponde a la persona"); - return; - } - - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")) - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - existeSolicitud = Boolean.TRUE; -// solicitud.setRecord(solicitud.getLrecord().get(0)); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", solicitud.getRecord().getPersoncode().toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - telefono.addFilterDateto(); - telefono.query(); - this.obtenerTelefonos(); -// this.setearCodigoCentroControl(); - this.setearTramite(); - } else{ - existeSolicitud = Boolean.FALSE; - } - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void loadEdit() throws Exception { - //TarmArmas arma = ((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma")); - TarmArmas arma = ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()); - if(arma.getCountrycode() == null){ - arma.setCountrycode("EC"); - } - this.lmarca =(List) ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()).getModifiedData().get("lmarca"); - lprovincias = ProvinceController.find(arma.getCountrycode()); - executeProvince(arma); - if(arma.getProvincecode() != null){ - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - executeCanton(arma); - } - completaInfTipoArma(arma); - registroArmas.clearAll(); - if(arma.getCregistro() != null){ - registroArmas.addFilter("pk", arma.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - } - - } - - public void loadShowAgencia() { - TarmAgenciaSucursal tarmAgenciaSucursal = (TarmAgenciaSucursal) solicitudAgenciaSucursal.getRecord().getModifiedData().get("agencia"); - lprovincias = ProvinceController.find(tarmAgenciaSucursal.getCountrycode()); - lcantones = CantonController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode()); - lparroquias = ParroquiaController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - lcities = CityController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince(TarmArmas arma) { - if ((arma != null) && (arma.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton(TarmArmas arma) { - //TarmArmas arma = (((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma"))); - if (arma.getCountrycode() != null && arma.getCountrycode().compareTo("") != 0) { - lparroquias = ParroquiaController.find(arma.getCountrycode(), - arma.getProvincecode(), - arma.getCantoncode()); - lcities = CityController.find(arma.getCountrycode(), arma.getProvincecode(), arma.getCantoncode()); - } - } - - private void limpiaDatos(){ - this.detallepersona.clearAll(); - this.detalleusuario.clearAll(); - this.agenciaSucursal.clearAll(); - this.armas.clearAll(); - this.direccion.clearAll(); - this.documentoHabilitante.clearAll(); - this.natural.clearAll(); - this.registroArmas.clearAll(); - this.requisitos.clearAll(); - this.solicitudAgenciaSucursal.clearAll(); - this.solicitudArmas.clearAll(); - this.solicitudDocumento.clearAll(); - this.solicitudGuardias.clearAll(); - this.telefono.clearAll(); - existeSolicitud = Boolean.FALSE; - } - - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(TarmArmas arma){ - solicitudArmas.getRecord().getModifiedData().put("estado", arma.getEstado()); - solicitudArmas.getRecord().getModifiedData().put("marca", arma.getMarca()); -// record.setCountrycode("EC"); -// clase = ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase") != null ? ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase").toString() : null; -// calibre = record.getModifiedData().get("ccalibre") != null ? record.getModifiedData().get("ccalibre").toString() : null; -// longitud = record.getModifiedData().get("clongitud") != null ? record.getModifiedData().get("clongitud").toString() : null; -// tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? record.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ - /*private void setearCodigoCentroControl(){ - TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? - direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); - if(centroControlJur != null){ - this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); - } - }*/ - - /** - * - */ - private void setearTramite() { - try{ - if(solicitud.getRecord().getCtramite()==null){ - return; - } - TarmTramite tramite = TarmTramiteController.find(solicitud.getRecord().getCtramite().toString()); - solicitud.getRecord().setCtramite(tramite.getPk()); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - this.ingresarRequisitos = Boolean.TRUE; - obtenerCentroControl(solicitud.getRecord()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - this.cargarDocumentos(); - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - this.cargarRequisitos(); - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - private void cargaArmas() throws Exception{ - - solicitudArmas.clearAll(); - solicitudArmas.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudArmas.setCodigoSolicitud(solicitud.getRecord().getPk()); - solicitudArmas.setRecperpage(5000); - solicitudArmas.querydatabase(); - } - - - private void cargaGuardias() throws Exception{ - solicitudGuardias.clearAll(); - solicitudGuardias.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudGuardias.query(); - for (TarmSolicitudGuardias solicitudGuardia : solicitudGuardias.getLrecord()) { - solicitudGuardia.getModifiedData().put("guardia", GuardiasController.find(solicitudGuardia.getPk().getCguardia().toString(), solicitudGuardia.getPk().getCempresa().toString())); - } - } - - private void cargarAgencias() throws Exception{ - solicitudAgenciaSucursal.clearAll(); - solicitudAgenciaSucursal.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudAgenciaSucursal.query(); - for (TarmSolicitudAgenciaSucursal solAgenciaSucursal : solicitudAgenciaSucursal.getLrecord()) { - solAgenciaSucursal.getModifiedData().put("agencia", AgenciaSucursalController.find(solAgenciaSucursal.getPk().getCagencia().toString())); - } - } - - private void cargarDocumentos() throws Exception { - solicitudDocumento.clearAll(); - solicitudDocumento.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudDocumento.query(); - - SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()); - TarmTramite tramite = TarmTramiteController.find(String.valueOf(SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()).getCtramite())); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - Boolean muestraArmas = listarArmas(tipoTramite,tipoAutorizacion, actividad); - - - for (TarmSolicitudDocumento solDocumento : solicitudDocumento.getLrecord()) { - TarmDocumentoHabilitante documentoHabilitante =DocumentoHabilitanteController.find(solDocumento.getPk().getCdocumento().toString()); - solDocumento.getModifiedData().put("documento", documentoHabilitante); - solDocumento.getModifiedData().put("arma", muestraArmas?ArmasController.findPorCodigo(documentoHabilitante.getCarma()):null); - } - } - - - /** - * Metodo para listar las armas segun la combinacion de tipo de tramite - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad tipo de la actividad - * @return valor booleano que indica si se muestran o no als armas - * @throws Exception - */ - private boolean listarArmas(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return true; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - return true; - } - return true; - } - - private void cargarRequisitos() throws Exception { - requisitos.clearAll(); - requisitos.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - requisitos.query(); - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - solicitudRequisitos.getModifiedData().put("requisito", RequisitoController.findxId(solicitudRequisitos.getPk().getCrequisito())); - } - } - - public List getLtipopersona() { - return ltipopersona; - } - - public void setLtipopersona(List ltipopersona) { - this.ltipopersona = ltipopersona; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getLtipotramite() { - return ltipotramite; - } - - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isExisteSolicitud() { - return existeSolicitud; - } - - public void setExisteSolicitud(boolean existeSolicitud) { - this.existeSolicitud = existeSolicitud; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - public PeopleController getNatural() { - return natural; - } - - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - public PersonAddressController getDireccion() { - return direccion; - } - - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - public PersonPhoneController getTelefono() { - return telefono; - } - - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - @Override - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - System.out.println("1.....csolicitud :"+solicitud); - System.out.println("2.....csolicitud :"+solicitud.getRecord()); - System.out.println("3.....csolicitud :"+solicitud.getRecord().getPk()); - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - if(tid==null){ - tid = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("taskId").toString(); - } - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equals("D")){ - // Se aumento las observaciones para ser enviadas en el mail - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallepersona.getRecord().getName()); - datosmail.put("sol",solicitud.getRecord().getNumerosolicitud()); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // CCA - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(bpmDataStatus.equals("D")){ - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public List getLmarca() { - return lmarca; - } - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.svn-base deleted file mode 100644 index 0112405..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudClienteController.java.svn-base +++ /dev/null @@ -1,971 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteConsultaSolicitudClienteController extends - AbstractController { - - private static final long serialVersionUID = -4049698904561227471L; - - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - /** - * Bandera que indica si existe o no un registro para mostrar la solicitud - */ - private boolean existeSolicitud; - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - - private List lprovincias; - private List lcantones; - private List lparroquias; - private List lcities; - - private List lmarca; - /** - * Controlador de la solicitud - */ - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ -// @ManagedProperty(value = "#{solicitudArmasBPMController}") -// private SolicitudArmasBPMController solicitud; - - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - private Boolean requiereNoSolAucpBln; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - private TsafeUserDetail userDetail; - - /** - * - * @throws Exception - */ - public ReporteConsultaSolicitudClienteController() throws Exception{ - super(AbstractDataTransport.class); - } - - /** - * postCosntruct - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - requiereNoSolAucpBln=Boolean.FALSE; - this.startQuery(); - } - - private void init(){ - this.beanalias = "REPORTESOLICITUD"; - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION"); - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - //Realizo las busquedas en base a los controladores - try { - limpiaDatos(); -// if(solicitud.getRecord() == null || solicitud.getRecord().getPk()==null){ - Utilidades.caracterEspecial(solicitud.getMfilters().get("numerosolicitud")); - solicitud.query(); -// } - if(solicitud.getRecord() != null && solicitud.getRecord().getPk() != null){ - //Valida que corresponda al mismo cliente - if(!userDetail.getPk().getPersoncode().equals(solicitud.getRecord().getPersoncode())){ - MessageHelper.setMessageWarn("Solicitud no corresponde a la persona"); - return; - } - - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")) - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - existeSolicitud = Boolean.TRUE; -// solicitud.setRecord(solicitud.getLrecord().get(0)); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", solicitud.getRecord().getPersoncode().toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - telefono.addFilterDateto(); - telefono.query(); - this.obtenerTelefonos(); -// this.setearCodigoCentroControl(); - this.setearTramite(); - } else{ - existeSolicitud = Boolean.FALSE; - } - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void loadEdit() throws Exception { - //TarmArmas arma = ((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma")); - TarmArmas arma = ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()); - if(arma.getCountrycode() == null){ - arma.setCountrycode("EC"); - } - this.lmarca =(List) ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()).getModifiedData().get("lmarca"); - lprovincias = ProvinceController.find(arma.getCountrycode()); - executeProvince(arma); - if(arma.getProvincecode() != null){ - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - executeCanton(arma); - } - completaInfTipoArma(arma); - registroArmas.clearAll(); - if(arma.getCregistro() != null){ - registroArmas.addFilter("pk", arma.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - } - - } - - public void loadShowAgencia() { - TarmAgenciaSucursal tarmAgenciaSucursal = (TarmAgenciaSucursal) solicitudAgenciaSucursal.getRecord().getModifiedData().get("agencia"); - lprovincias = ProvinceController.find(tarmAgenciaSucursal.getCountrycode()); - lcantones = CantonController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode()); - lparroquias = ParroquiaController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - lcities = CityController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince(TarmArmas arma) { - if ((arma != null) && (arma.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton(TarmArmas arma) { - //TarmArmas arma = (((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma"))); - if (arma.getCountrycode() != null && arma.getCountrycode().compareTo("") != 0) { - lparroquias = ParroquiaController.find(arma.getCountrycode(), - arma.getProvincecode(), - arma.getCantoncode()); - lcities = CityController.find(arma.getCountrycode(), arma.getProvincecode(), arma.getCantoncode()); - } - } - - private void limpiaDatos(){ - this.detallepersona.clearAll(); - this.detalleusuario.clearAll(); - this.agenciaSucursal.clearAll(); - this.armas.clearAll(); - this.direccion.clearAll(); - this.documentoHabilitante.clearAll(); - this.natural.clearAll(); - this.registroArmas.clearAll(); - this.requisitos.clearAll(); - this.solicitudAgenciaSucursal.clearAll(); - this.solicitudArmas.clearAll(); - this.solicitudDocumento.clearAll(); - this.solicitudGuardias.clearAll(); - this.telefono.clearAll(); - existeSolicitud = Boolean.FALSE; - } - - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(TarmArmas arma){ - solicitudArmas.getRecord().getModifiedData().put("estado", arma.getEstado()); - solicitudArmas.getRecord().getModifiedData().put("marca", arma.getMarca()); -// record.setCountrycode("EC"); -// clase = ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase") != null ? ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase").toString() : null; -// calibre = record.getModifiedData().get("ccalibre") != null ? record.getModifiedData().get("ccalibre").toString() : null; -// longitud = record.getModifiedData().get("clongitud") != null ? record.getModifiedData().get("clongitud").toString() : null; -// tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? record.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ - /*private void setearCodigoCentroControl(){ - TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? - direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); - if(centroControlJur != null){ - this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); - } - }*/ - - /** - * - */ - private void setearTramite() { - try{ - if(solicitud.getRecord().getCtramite()==null){ - return; - } - TarmTramite tramite = TarmTramiteController.find(solicitud.getRecord().getCtramite().toString()); - solicitud.getRecord().setCtramite(tramite.getPk()); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - this.ingresarRequisitos = Boolean.TRUE; - obtenerCentroControl(solicitud.getRecord()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - this.cargarDocumentos(); - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - this.cargarRequisitos(); - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - private void cargaArmas() throws Exception{ - - solicitudArmas.clearAll(); - solicitudArmas.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudArmas.setCodigoSolicitud(solicitud.getRecord().getPk()); - solicitudArmas.setRecperpage(5000); - solicitudArmas.querydatabase(); - } - - - private void cargaGuardias() throws Exception{ - solicitudGuardias.clearAll(); - solicitudGuardias.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudGuardias.query(); - for (TarmSolicitudGuardias solicitudGuardia : solicitudGuardias.getLrecord()) { - solicitudGuardia.getModifiedData().put("guardia", GuardiasController.find(solicitudGuardia.getPk().getCguardia().toString(), solicitudGuardia.getPk().getCempresa().toString())); - } - } - - private void cargarAgencias() throws Exception{ - solicitudAgenciaSucursal.clearAll(); - solicitudAgenciaSucursal.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudAgenciaSucursal.query(); - for (TarmSolicitudAgenciaSucursal solAgenciaSucursal : solicitudAgenciaSucursal.getLrecord()) { - solAgenciaSucursal.getModifiedData().put("agencia", AgenciaSucursalController.find(solAgenciaSucursal.getPk().getCagencia().toString())); - } - } - - private void cargarDocumentos() throws Exception { - solicitudDocumento.clearAll(); - solicitudDocumento.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudDocumento.query(); - - SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()); - TarmTramite tramite = TarmTramiteController.find(String.valueOf(SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()).getCtramite())); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - Boolean muestraArmas = listarArmas(tipoTramite,tipoAutorizacion, actividad); - - - for (TarmSolicitudDocumento solDocumento : solicitudDocumento.getLrecord()) { - TarmDocumentoHabilitante documentoHabilitante =DocumentoHabilitanteController.find(solDocumento.getPk().getCdocumento().toString()); - solDocumento.getModifiedData().put("documento", documentoHabilitante); - solDocumento.getModifiedData().put("arma", muestraArmas?ArmasController.findPorCodigo(documentoHabilitante.getCarma()):null); - } - } - - - /** - * Metodo para listar las armas segun la combinacion de tipo de tramite - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad tipo de la actividad - * @return valor booleano que indica si se muestran o no als armas - * @throws Exception - */ - private boolean listarArmas(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return true; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - return true; - } - return true; - } - - private void cargarRequisitos() throws Exception { - requisitos.clearAll(); - requisitos.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - requisitos.query(); - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - solicitudRequisitos.getModifiedData().put("requisito", RequisitoController.findxId(solicitudRequisitos.getPk().getCrequisito())); - } - } - - public List getLtipopersona() { - return ltipopersona; - } - - public void setLtipopersona(List ltipopersona) { - this.ltipopersona = ltipopersona; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getLtipotramite() { - return ltipotramite; - } - - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isExisteSolicitud() { - return existeSolicitud; - } - - public void setExisteSolicitud(boolean existeSolicitud) { - this.existeSolicitud = existeSolicitud; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - public PeopleController getNatural() { - return natural; - } - - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - public PersonAddressController getDireccion() { - return direccion; - } - - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - public PersonPhoneController getTelefono() { - return telefono; - } - - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - @Override - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - System.out.println("1.....csolicitud :"+solicitud); - System.out.println("2.....csolicitud :"+solicitud.getRecord()); - System.out.println("3.....csolicitud :"+solicitud.getRecord().getPk()); - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - if(tid==null){ - tid = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("taskId").toString(); - } - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equals("D")){ - // Se aumento las observaciones para ser enviadas en el mail - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallepersona.getRecord().getName()); - datosmail.put("sol",solicitud.getRecord().getNumerosolicitud()); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // CCA - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(bpmDataStatus.equals("D")){ - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public List getLmarca() { - return lmarca; - } - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.netbeans-base deleted file mode 100644 index 1be0f3d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.netbeans-base +++ /dev/null @@ -1,990 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteConsultaSolicitudController extends - AbstractController { - - private static final long serialVersionUID = -4049698904561227471L; - - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - /** - * Bandera que indica si existe o no un registro para mostrar la solicitud - */ - private boolean existeSolicitud; - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - /** - * Bandera que indica si la transacción inicio por flujo - */ - private boolean inicioPorFlujo; - - private List lprovincias; - private List lcantones; - private List lparroquias; - private List lcities; - - private List lmarca; - /** - * Controlador de la solicitud - */ - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ -// @ManagedProperty(value = "#{solicitudArmasBPMController}") -// private SolicitudArmasBPMController solicitud; - - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - private Boolean requiereNoSolAucpBln; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - /** - * - * @throws Exception - */ - public ReporteConsultaSolicitudController() throws Exception{ - super(AbstractDataTransport.class); - } - - /** - * postCosntruct - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - requiereNoSolAucpBln=Boolean.FALSE; - this.startQuery(); - if(tid!=null){ - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("taskId", tid); - } - if(this.getMfilters().get("pk")!=null && !this.getMfilters().get("pk").equals("")){ - this.solicitud.getMfilters().clear(); - this.solicitud.getMfilters().put("pk", this.getMfilters().get("pk")); - solicitud.query(); - this.inicioPorFlujo = Boolean.TRUE; - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")){ - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - this.querydatabase(); - } - } else{ - this.inicioPorFlujo = Boolean.FALSE; - } - } - - private void init(){ - this.beanalias = "REPORTESOLICITUD"; - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION"); - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - //Realizo las busquedas en base a los controladores - try { - limpiaDatos(); -// if(solicitud.getRecord() == null || solicitud.getRecord().getPk()==null){ - Utilidades.caracterEspecial(solicitud.getMfilters().get("numerosolicitud")); - solicitud.query(); -// } - if(solicitud.getRecord() != null && solicitud.getRecord().getPk() != null){ - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")) - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - existeSolicitud = Boolean.TRUE; -// solicitud.setRecord(solicitud.getLrecord().get(0)); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", solicitud.getRecord().getPersoncode().toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - telefono.addFilterDateto(); - telefono.query(); - this.obtenerTelefonos(); -// this.setearCodigoCentroControl(); - this.setearTramite(); - } else{ - existeSolicitud = Boolean.FALSE; - } - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void loadEdit() throws Exception { - //TarmArmas arma = ((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma")); - TarmArmas arma = ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()); - if(arma.getCountrycode() == null){ - arma.setCountrycode("EC"); - } - this.lmarca =(List) ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()).getModifiedData().get("lmarca"); - lprovincias = ProvinceController.find(arma.getCountrycode()); - executeProvince(arma); - if(arma.getProvincecode() != null){ - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - executeCanton(arma); - } - completaInfTipoArma(arma); - registroArmas.clearAll(); - if(arma.getCregistro() != null){ - registroArmas.addFilter("pk", arma.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - } - - } - - public void loadShowAgencia() { - TarmAgenciaSucursal tarmAgenciaSucursal = (TarmAgenciaSucursal) solicitudAgenciaSucursal.getRecord().getModifiedData().get("agencia"); - lprovincias = ProvinceController.find(tarmAgenciaSucursal.getCountrycode()); - lcantones = CantonController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode()); - lparroquias = ParroquiaController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - lcities = CityController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince(TarmArmas arma) { - if ((arma != null) && (arma.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton(TarmArmas arma) { - //TarmArmas arma = (((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma"))); - if (arma.getCountrycode() != null && arma.getCountrycode().compareTo("") != 0) { - lparroquias = ParroquiaController.find(arma.getCountrycode(), - arma.getProvincecode(), - arma.getCantoncode()); - lcities = CityController.find(arma.getCountrycode(), arma.getProvincecode(), arma.getCantoncode()); - } - } - - private void limpiaDatos(){ - this.detallepersona.clearAll(); - this.detalleusuario.clearAll(); - this.agenciaSucursal.clearAll(); - this.armas.clearAll(); - this.direccion.clearAll(); - this.documentoHabilitante.clearAll(); - this.natural.clearAll(); - this.registroArmas.clearAll(); - this.requisitos.clearAll(); - this.solicitudAgenciaSucursal.clearAll(); - this.solicitudArmas.clearAll(); - this.solicitudDocumento.clearAll(); - this.solicitudGuardias.clearAll(); - this.telefono.clearAll(); - } - - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(TarmArmas arma){ - solicitudArmas.getRecord().getModifiedData().put("estado", arma.getEstado()); - solicitudArmas.getRecord().getModifiedData().put("marca", arma.getMarca()); -// record.setCountrycode("EC"); -// clase = ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase") != null ? ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase").toString() : null; -// calibre = record.getModifiedData().get("ccalibre") != null ? record.getModifiedData().get("ccalibre").toString() : null; -// longitud = record.getModifiedData().get("clongitud") != null ? record.getModifiedData().get("clongitud").toString() : null; -// tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? record.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ - private void setearCodigoCentroControl(){ - TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? - direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); - if(centroControlJur != null){ - this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); - } - } - - /** - * - */ - private void setearTramite() { - try{ - if(solicitud.getRecord().getCtramite()==null){ - return; - } - TarmTramite tramite = TarmTramiteController.find(solicitud.getRecord().getCtramite().toString()); - solicitud.getRecord().setCtramite(tramite.getPk()); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - this.ingresarRequisitos = Boolean.TRUE; - obtenerCentroControl(solicitud.getRecord()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - this.cargarDocumentos(); - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - this.cargarRequisitos(); - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - private void cargaArmas() throws Exception{ - - solicitudArmas.clearAll(); - solicitudArmas.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudArmas.setCodigoSolicitud(solicitud.getRecord().getPk()); - solicitudArmas.setRecperpage(5000); - solicitudArmas.querydatabase(); - } - - - private void cargaGuardias() throws Exception{ - solicitudGuardias.clearAll(); - solicitudGuardias.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudGuardias.query(); - for (TarmSolicitudGuardias solicitudGuardia : solicitudGuardias.getLrecord()) { - solicitudGuardia.getModifiedData().put("guardia", GuardiasController.find(solicitudGuardia.getPk().getCguardia().toString(), solicitudGuardia.getPk().getCempresa().toString())); - } - } - - private void cargarAgencias() throws Exception{ - solicitudAgenciaSucursal.clearAll(); - solicitudAgenciaSucursal.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudAgenciaSucursal.query(); - for (TarmSolicitudAgenciaSucursal solAgenciaSucursal : solicitudAgenciaSucursal.getLrecord()) { - solAgenciaSucursal.getModifiedData().put("agencia", AgenciaSucursalController.find(solAgenciaSucursal.getPk().getCagencia().toString())); - } - } - - private void cargarDocumentos() throws Exception { - solicitudDocumento.clearAll(); - solicitudDocumento.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudDocumento.query(); - - SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()); - TarmTramite tramite = TarmTramiteController.find(String.valueOf(SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()).getCtramite())); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - Boolean muestraArmas = listarArmas(tipoTramite,tipoAutorizacion, actividad); - - - for (TarmSolicitudDocumento solDocumento : solicitudDocumento.getLrecord()) { - TarmDocumentoHabilitante documentoHabilitante =DocumentoHabilitanteController.find(solDocumento.getPk().getCdocumento().toString()); - solDocumento.getModifiedData().put("documento", documentoHabilitante); - solDocumento.getModifiedData().put("arma", muestraArmas?ArmasController.findPorCodigo(documentoHabilitante.getCarma()):null); - } - } - - - /** - * Metodo para listar las armas segun la combinacion de tipo de tramite - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad tipo de la actividad - * @return valor booleano que indica si se muestran o no als armas - * @throws Exception - */ - private boolean listarArmas(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return true; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - return true; - } - return true; - } - - private void cargarRequisitos() throws Exception { - requisitos.clearAll(); - requisitos.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - requisitos.query(); - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - solicitudRequisitos.getModifiedData().put("requisito", RequisitoController.findxId(solicitudRequisitos.getPk().getCrequisito())); - } - } - - public List getLtipopersona() { - return ltipopersona; - } - - public void setLtipopersona(List ltipopersona) { - this.ltipopersona = ltipopersona; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getLtipotramite() { - return ltipotramite; - } - - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isExisteSolicitud() { - return existeSolicitud; - } - - public void setExisteSolicitud(boolean existeSolicitud) { - this.existeSolicitud = existeSolicitud; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - public PeopleController getNatural() { - return natural; - } - - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - public PersonAddressController getDireccion() { - return direccion; - } - - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - public PersonPhoneController getTelefono() { - return telefono; - } - - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - @Override - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - System.out.println("1.....csolicitud :"+solicitud); - System.out.println("2.....csolicitud :"+solicitud.getRecord()); - System.out.println("3.....csolicitud :"+solicitud.getRecord().getPk()); - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - if(tid==null){ - tid = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("taskId").toString(); - } - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equals("D")){ - // Se aumento las observaciones para ser enviadas en el mail - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallepersona.getRecord().getName()); - datosmail.put("sol",solicitud.getRecord().getNumerosolicitud()); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // CCA - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(bpmDataStatus.equals("D")){ - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public boolean isInicioPorFlujo() { - return inicioPorFlujo; - } - - public void setInicioPorFlujo(boolean inicioPorFlujo) { - this.inicioPorFlujo = inicioPorFlujo; - } - - public List getLmarca() { - return lmarca; - } - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.svn-base deleted file mode 100644 index 1be0f3d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteConsultaSolicitudController.java.svn-base +++ /dev/null @@ -1,990 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.RequisitoController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class ReporteConsultaSolicitudController extends - AbstractController { - - private static final long serialVersionUID = -4049698904561227471L; - - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - /** - * Bandera que indica si existe o no un registro para mostrar la solicitud - */ - private boolean existeSolicitud; - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - /** - * Bandera que indica si la transacción inicio por flujo - */ - private boolean inicioPorFlujo; - - private List lprovincias; - private List lcantones; - private List lparroquias; - private List lcities; - - private List lmarca; - /** - * Controlador de la solicitud - */ - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ -// @ManagedProperty(value = "#{solicitudArmasBPMController}") -// private SolicitudArmasBPMController solicitud; - - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - private Boolean requiereNoSolAucpBln; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - /** - * - * @throws Exception - */ - public ReporteConsultaSolicitudController() throws Exception{ - super(AbstractDataTransport.class); - } - - /** - * postCosntruct - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - requiereNoSolAucpBln=Boolean.FALSE; - this.startQuery(); - if(tid!=null){ - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("taskId", tid); - } - if(this.getMfilters().get("pk")!=null && !this.getMfilters().get("pk").equals("")){ - this.solicitud.getMfilters().clear(); - this.solicitud.getMfilters().put("pk", this.getMfilters().get("pk")); - solicitud.query(); - this.inicioPorFlujo = Boolean.TRUE; - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")){ - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - this.querydatabase(); - } - } else{ - this.inicioPorFlujo = Boolean.FALSE; - } - } - - private void init(){ - this.beanalias = "REPORTESOLICITUD"; - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lorigenadquisicion = CatalogDetailController.find("ORIGENADQUISICION"); - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - //Realizo las busquedas en base a los controladores - try { - limpiaDatos(); -// if(solicitud.getRecord() == null || solicitud.getRecord().getPk()==null){ - Utilidades.caracterEspecial(solicitud.getMfilters().get("numerosolicitud")); - solicitud.query(); -// } - if(solicitud.getRecord() != null && solicitud.getRecord().getPk() != null){ - if(this.solicitud.getMfilters().get("numerosolicitud")==null || this.solicitud.getMfilters().get("numerosolicitud").equals("")) - this.solicitud.getMfilters().put("numerosolicitud",solicitud.getRecord().getNumerosolicitud()); - existeSolicitud = Boolean.TRUE; -// solicitud.setRecord(solicitud.getLrecord().get(0)); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", solicitud.getRecord().getPersoncode().toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(solicitud.getRecord().getPersoncode().toString()); - telefono.addFilterDateto(); - telefono.query(); - this.obtenerTelefonos(); -// this.setearCodigoCentroControl(); - this.setearTramite(); - } else{ - existeSolicitud = Boolean.FALSE; - } - } catch (Throwable e) { - // TODO Auto-generated catch block - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void loadEdit() throws Exception { - //TarmArmas arma = ((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma")); - TarmArmas arma = ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()); - if(arma.getCountrycode() == null){ - arma.setCountrycode("EC"); - } - this.lmarca =(List) ArmasController.findxCodigo(solicitudArmas.getRecord().getModifiedData().get("carma").toString()).getModifiedData().get("lmarca"); - lprovincias = ProvinceController.find(arma.getCountrycode()); - executeProvince(arma); - if(arma.getProvincecode() != null){ - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - executeCanton(arma); - } - completaInfTipoArma(arma); - registroArmas.clearAll(); - if(arma.getCregistro() != null){ - registroArmas.addFilter("pk", arma.getCregistro().toString()); - registroArmas.query(); - List registroArmasList = registroArmas.getLrecord(); - registroArmas.setRecord(registroArmasList.get(0)); - registroArmas.getRecord().setIsnew(Boolean.FALSE); - } - - } - - public void loadShowAgencia() { - TarmAgenciaSucursal tarmAgenciaSucursal = (TarmAgenciaSucursal) solicitudAgenciaSucursal.getRecord().getModifiedData().get("agencia"); - lprovincias = ProvinceController.find(tarmAgenciaSucursal.getCountrycode()); - lcantones = CantonController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode()); - lparroquias = ParroquiaController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - lcities = CityController.find(tarmAgenciaSucursal.getCountrycode(), tarmAgenciaSucursal.getProvincecode(), tarmAgenciaSucursal.getCantoncode()); - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince(TarmArmas arma) { - if ((arma != null) && (arma.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(arma.getCountrycode(), arma.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton(TarmArmas arma) { - //TarmArmas arma = (((TarmArmas) solicitudArmas.getRecord().getModifiedData().get("arma"))); - if (arma.getCountrycode() != null && arma.getCountrycode().compareTo("") != 0) { - lparroquias = ParroquiaController.find(arma.getCountrycode(), - arma.getProvincecode(), - arma.getCantoncode()); - lcities = CityController.find(arma.getCountrycode(), arma.getProvincecode(), arma.getCantoncode()); - } - } - - private void limpiaDatos(){ - this.detallepersona.clearAll(); - this.detalleusuario.clearAll(); - this.agenciaSucursal.clearAll(); - this.armas.clearAll(); - this.direccion.clearAll(); - this.documentoHabilitante.clearAll(); - this.natural.clearAll(); - this.registroArmas.clearAll(); - this.requisitos.clearAll(); - this.solicitudAgenciaSucursal.clearAll(); - this.solicitudArmas.clearAll(); - this.solicitudDocumento.clearAll(); - this.solicitudGuardias.clearAll(); - this.telefono.clearAll(); - } - - /** - * Método que completa la informaci´n del arma una vez se presiona el botón crear - */ - private void completaInfTipoArma(TarmArmas arma){ - solicitudArmas.getRecord().getModifiedData().put("estado", arma.getEstado()); - solicitudArmas.getRecord().getModifiedData().put("marca", arma.getMarca()); -// record.setCountrycode("EC"); -// clase = ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase") != null ? ((TarmArmas)record.getModifiedData().get("arma")).getModifiedData().get("cclase").toString() : null; -// calibre = record.getModifiedData().get("ccalibre") != null ? record.getModifiedData().get("ccalibre").toString() : null; -// longitud = record.getModifiedData().get("clongitud") != null ? record.getModifiedData().get("clongitud").toString() : null; -// tipoarma = record.getModifiedData().get("ctipoarmaexplosivo") != null ? record.getModifiedData().get("ctipoarmaexplosivo").toString() : null; - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ - private void setearCodigoCentroControl(){ - TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? - direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); - if(centroControlJur != null){ - this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); - } - } - - /** - * - */ - private void setearTramite() { - try{ - if(solicitud.getRecord().getCtramite()==null){ - return; - } - TarmTramite tramite = TarmTramiteController.find(solicitud.getRecord().getCtramite().toString()); - solicitud.getRecord().setCtramite(tramite.getPk()); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - this.ingresarRequisitos = Boolean.TRUE; - obtenerCentroControl(solicitud.getRecord()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - this.cargarDocumentos(); - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - this.cargarRequisitos(); - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - private void cargaArmas() throws Exception{ - - solicitudArmas.clearAll(); - solicitudArmas.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudArmas.setCodigoSolicitud(solicitud.getRecord().getPk()); - solicitudArmas.setRecperpage(5000); - solicitudArmas.querydatabase(); - } - - - private void cargaGuardias() throws Exception{ - solicitudGuardias.clearAll(); - solicitudGuardias.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudGuardias.query(); - for (TarmSolicitudGuardias solicitudGuardia : solicitudGuardias.getLrecord()) { - solicitudGuardia.getModifiedData().put("guardia", GuardiasController.find(solicitudGuardia.getPk().getCguardia().toString(), solicitudGuardia.getPk().getCempresa().toString())); - } - } - - private void cargarAgencias() throws Exception{ - solicitudAgenciaSucursal.clearAll(); - solicitudAgenciaSucursal.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudAgenciaSucursal.query(); - for (TarmSolicitudAgenciaSucursal solAgenciaSucursal : solicitudAgenciaSucursal.getLrecord()) { - solAgenciaSucursal.getModifiedData().put("agencia", AgenciaSucursalController.find(solAgenciaSucursal.getPk().getCagencia().toString())); - } - } - - private void cargarDocumentos() throws Exception { - solicitudDocumento.clearAll(); - solicitudDocumento.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - solicitudDocumento.query(); - - SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()); - TarmTramite tramite = TarmTramiteController.find(String.valueOf(SolicitudController.findSolicitudxcodsolicitud(solicitud.getRecord().getPk()).getCtramite())); - TgeneCatalogDetail tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - TgeneCatalogDetail tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - Boolean muestraArmas = listarArmas(tipoTramite,tipoAutorizacion, actividad); - - - for (TarmSolicitudDocumento solDocumento : solicitudDocumento.getLrecord()) { - TarmDocumentoHabilitante documentoHabilitante =DocumentoHabilitanteController.find(solDocumento.getPk().getCdocumento().toString()); - solDocumento.getModifiedData().put("documento", documentoHabilitante); - solDocumento.getModifiedData().put("arma", muestraArmas?ArmasController.findPorCodigo(documentoHabilitante.getCarma()):null); - } - } - - - /** - * Metodo para listar las armas segun la combinacion de tipo de tramite - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad tipo de la actividad - * @return valor booleano que indica si se muestran o no als armas - * @throws Exception - */ - private boolean listarArmas(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - return true; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - return false; - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - return true; - } - return true; - } - - private void cargarRequisitos() throws Exception { - requisitos.clearAll(); - requisitos.addFilter("pk.csolicitud", solicitud.getRecord().getPk()); - requisitos.query(); - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - solicitudRequisitos.getModifiedData().put("requisito", RequisitoController.findxId(solicitudRequisitos.getPk().getCrequisito())); - } - } - - public List getLtipopersona() { - return ltipopersona; - } - - public void setLtipopersona(List ltipopersona) { - this.ltipopersona = ltipopersona; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getLtipotramite() { - return ltipotramite; - } - - public void setLtipotramite(List ltipotramite) { - this.ltipotramite = ltipotramite; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isExisteSolicitud() { - return existeSolicitud; - } - - public void setExisteSolicitud(boolean existeSolicitud) { - this.existeSolicitud = existeSolicitud; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - public PeopleController getNatural() { - return natural; - } - - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - public PersonAddressController getDireccion() { - return direccion; - } - - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - public PersonPhoneController getTelefono() { - return telefono; - } - - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantones() { - return lcantones; - } - - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - public List getLparroquias() { - return lparroquias; - } - - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - public List getLcities() { - return lcities; - } - - public void setLcities(List lcities) { - this.lcities = lcities; - } - @Override - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - System.out.println("1.....csolicitud :"+solicitud); - System.out.println("2.....csolicitud :"+solicitud.getRecord()); - System.out.println("3.....csolicitud :"+solicitud.getRecord().getPk()); - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - if(tid==null){ - tid = FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("taskId").toString(); - } - request.modifiedData().put("TID", tid); - if(bpmDataStatus.equals("D")){ - // Se aumento las observaciones para ser enviadas en el mail - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallepersona.getRecord().getName()); - datosmail.put("sol",solicitud.getRecord().getNumerosolicitud()); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // CCA - TarmCentroControl centroControl=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(bpmDataStatus.equals("D")){ - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - } - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public boolean isInicioPorFlujo() { - return inicioPorFlujo; - } - - public void setInicioPorFlujo(boolean inicioPorFlujo) { - this.inicioPorFlujo = inicioPorFlujo; - } - - public List getLmarca() { - return lmarca; - } - - public void setLmarca(List lmarca) { - this.lmarca = lmarca; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteControlInventarioController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteControlInventarioController.java.svn-base deleted file mode 100644 index dc486b0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteControlInventarioController.java.svn-base +++ /dev/null @@ -1,372 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteControlInventarioController extends AbstractController { - - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "xls"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - - /** - * Ruta base del reporte generado en el Alfresco - * */ - private String xPathLocation; - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Clase controladora de funcionalidad del Alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - - public ReporteControlInventarioController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "RPRTECONTROLINVENTARIO"; - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - -// /** -// * Crea una instancia y marca el registro como nuevo. -// * -// * @throws Exception -// */ -// @Override -// public void create() throws Exception { -// super.create(); -// } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (AbstractDataTransport decomisoArmaObj : lrecord) { - decomisoArmaObj.getModifiedData().put("isSelect", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaInicioCldr = Calendar.getInstance(); - Calendar fechaFinCldr = Calendar.getInstance(); -// fechaInicioCldr.setTime(fechaInicio); - fechaFinCldr.setTime(fechaFin); - - if(fechaActualCldr.compareTo(fechaFinCldr)>=0){ - String filename="controlInventario"; - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - TcustPersonDetail personaLogObj; - if(userDetail.getPk().getPersoncode()!=null){ - personaLogObj = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()); - nombreUsuario = personaLogObj.getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr)); -// fechaFinCldr.add(Calendar.DAY_OF_MONTH, 1); - parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr)); - parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr)); - - String path; - - path = "armas/reports/controlInventario"; - parameters.put("idCentroControl", centroControl.getPk()); - // Datos del CENTRO DE CONTROL - parameters.put("nombreCentroControl", institucionCentroControl); - // Datos del jefe del centro - if(centroControl.getPersoncode()!=null){ - TcustPersonDetail jefeCentroObj = PersonDetailController.find(centroControl.getPersoncode().toString()); - String gradoJefeCentro = jefeCentroObj.getMilitarygrade()==null?"": jefeCentroObj.getMilitarygrade() + " - "; - parameters.put("nombreJefCentro", gradoJefeCentro + jefeCentroObj.getName()==null?"":jefeCentroObj.getName()); - parameters.put("personCodeJefCentro", jefeCentroObj.getPk().getPersoncode()==null?"1001":jefeCentroObj.getPk().getPersoncode()); - } - xPathLocation= getRutaDocumentoRepBase() + "/cm:"+ Utilidades.obtieneNombreLimpio(institucionCentroControl); - nombreReporte = "controlInventario.xls"; - //this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - InputStream file = this.reportController.jaspertoInputstreamXls(path, parameters, format, filename, this.getLoginController()); - if(!alfrescoController.uploadFile(file, nombreReporte, xPathLocation)){ - xPathLocation=null; - } - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_coninv_fechaMayorAFechaActual")); - } - } - - /** - * Retorna la ruta de documento base en donde se almacenará el reporte - * - * @return - */ - public String getRutaDocumentoRepBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Inventario"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); -// nombreReporte = "controlInventario " + calendar.get(Calendar.DAY_OF_MONTH) + "-" + calendar.get(Calendar.MONTH) + " " -// + calendar.get(Calendar.HOUR_OF_DAY) + "H" + calendar.get(Calendar.MINUTE) + "M.xlsx"; - return ruta.toString(); - } - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - - } - -// parameters.put("fechaCorte", fechaCorteSB.toString()); -// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY)); - fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE))); - return fechaStr; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getxPathLocation() { - return xPathLocation; - } - - public void setxPathLocation(String xPathLocation) { - this.xPathLocation = xPathLocation; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionArmasController.java.svn-base deleted file mode 100644 index 7c767a2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionArmasController.java.svn-base +++ /dev/null @@ -1,1308 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteDestruccionArmasController extends AbstractController { - - private List lTipoReporte=new ArrayList(); - private TcustPersonDetail usuario; - // Filtros de busqueda - private Date fechaCorte = new Date(); - private String numeroSerie; - /** - * atributo para habilitar o desabilitar al boton - * genera acta - */ - private Boolean btnGenerarActa; - /** - * atributo para habilitar o desabilitar al boton - * de seleccion por registro - */ - private Boolean btnTabGrid; - /** - * numero de custodia del arma - */ - private String numeroDecomiso; - private String institucionCentroControl=""; - private String institucionUnidadControl=""; - //Control destino - private String centroControlDestino; - - private String unidadDestino; - - private Boolean isCentroDpto = Boolean.FALSE; - - - /** - * Codigo del centro de control - */ - private String codigoOrganismoControlDestino; - /** - * codigo de la unidad de control - */ - private String codigoUnidadControlDestino; - - private String centroControlActual; - private String unidadActual; - - private List centroControlsDestinos; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List unidadesDestinos; - - private String format; - private String tipoReporte; - private TsafeUserDetail userDetail; - private Integer diasParaDestruirArma; - private TarmCentroControl centroControl = new TarmCentroControl(); - - private String numeroTransaccionEnvio=""; - private String numeroTransaccionRecepcion=""; - private String numeroTransaccion; - private String numeroTransaccionEnvioConvertido=""; - private String filtroData=""; - private boolean transaccionVerificarArmas; - private boolean transaccionAprobarActaEntrega; - private String xpathflujo; - private TcustPersonDetail responsableCentroControl= null; - List listTarmDecomisoArma = new ArrayList<>(); - private String envioFlujo;//recibe del flujo el numero de transaccion = "ENV-000000310" - private String pathflujo;//recibe del flujo la ruta del archivo - private String cprovincia; - private Boolean btnFlujo; - private Boolean btnGrabar; - /** - * codigo del decomiso del catalogo ESTADOARMA - */ - private String codigoDecomiso; - /** - * codigo de la incautacion del catalogo ESTADOARMA - */ - private String codigoIncautacion; - /** - * codigo de la entrega voluntaria del catalogo ESTADOARMA - */ - private String codigoEntVol; - /** - * codigo del abandono del catalogo ESTADOARMA - */ - private String codigoAbandono; - /** - * codigo del reclamo del catalogo ESTADOARMA - */ - private String codigoReclamo; - - /** - * estado operacion del decomiso del catalogo ESTADOARMA - */ - private String estadoOperacion; - - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean btnSelTodos; - /** - * Deshabilita la pantalla para filtros después de grabar la solicitud - */ - private boolean btnFiltros; - - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value = "#{transaccionArmaBodegaController}") - private TransaccionArmaBodegaController transaccionArmaBodegaController; - - @ManagedProperty(value = "#{bodegaController}") - private BodegaController bodegaController; - - @ManagedProperty(value = "#{decomisoArmaTransaccionController}") - private DecomisoArmaTransaccionController decomisoArmaTransaccionController; - - public ReporteDestruccionArmasController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - xpathflujo=super.getMfilters().get("xpath");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - String numerotransaccion=super.getMfilters().get("numerotransaccion"); - TarmDecomisoArmaTransaccion decomisoArmaTransaccion =decomisoArmaTransaccionController.find(numerotransaccion); - envioFlujo=decomisoArmaTransaccion.getNumerotransaccion(); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - format = "pdf"; - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - diasParaDestruirArma = ParametersController.find("DIASENBODEGA.DESTRUIRARMAS", "1").getNumbervalue().intValue(); - lTipoReporte = CatalogDetailController.find("TIPOREPORTE"); - this.unidadesDestinos = new ArrayList<>(); - this.unidadDestino = ""; - this.centroControlsDestinos = CatalogDetailController.find("INSTITUCION"); - //Tenia antes 10000 - recperpage = 30000; - lrecord = new ArrayList<>(); - beanalias = "RPRTEDESTRUCCIONDEARMAS"; - obtenerCentroControl(); - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - centroControlActual = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - unidadActual = tsafeUserDetail.getModifiedData().get("unidad").toString(); - - //codigoOrganismoControl = tsafeUserDetail.getCcentrocontrol(); - //codigoUnidadControl = tsafeUserDetail.getCcentrocontrol(); - //querydatabase(); - this.responsableCentroControl = new TcustPersonDetail(); - this.obtenerResponsableCentroControl(); - this.numeroTransaccion=null; - this.btnFlujo=Boolean.FALSE; - //boton desabilitado - this.btnGrabar=Boolean.TRUE; - this.btnGenerarActa=Boolean.TRUE; - this.btnTabGrid=Boolean.TRUE; - this.btnSelTodos = Boolean.TRUE; - this.btnFiltros = Boolean.FALSE; - this.estadoOperacion = "RECEPCION"; - this.codigoDecomiso=codigos("CODIGO.DECOMISADA");//DECOMISO - this.codigoIncautacion=codigos("CODIGO.INCAUTADA");//INCAUTACION - this.codigoEntVol=codigos("CODIGO.ENTV");//ENTREGA VOLUNTARIA - this.codigoAbandono=codigos("CODIGO.ABAN");//ABANDONO - this.codigoReclamo=codigos("CODIGO.RECL");//RECLAMO - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para obtener los codigos - */ - private String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - - if(this.getLoginController()!=null && 53 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - transaccionVerificarArmas = true; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - centroControl= CentroControlArmasController.findPorCodigo(tsafeUserDetail.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getDescription(); - institucionUnidadControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - cprovincia=centroControl.getProvincecode(); - } - /** - * Obtiene el responsable del Centro de Control - */ - - - if(this.getLoginController()!=null && 58 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - - transaccionAprobarActaEntrega=true; - numeroTransaccionEnvio = envioFlujo; - listTarmDecomisoArma = DecomisoArmaTransaccionController.findPorEnvio(numeroTransaccionEnvio,false); - centroControl= CentroControlArmasController.findPorCodigo(listTarmDecomisoArma.get(0).getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getDescription(); - institucionUnidadControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - fechaCorte = listTarmDecomisoArma.get(0).getFcorte(); - querydatabase(); - - } - - } - - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - /** - * Carga las unidades de control por el centro de control - */ - public void seleccionaCentroControlDestino(){ - if(centroControlDestino!=null){ - unidadesDestinos = CentroControlArmasController.findxInstitucion(centroControlDestino); - }else{ - unidadesDestinos=new ArrayList<>(); - } - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - - btnGrabar=Boolean.TRUE; - for (TarmDecomisoArma decomisoArma : lrecord) { - decomisoArma.getModifiedData().put("seleccion", valorColocar); - if(decomisoArma.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - btnGrabar=Boolean.FALSE; - //itemsUnidadBolean=Boolean.TRUE; - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Generar Acta - */ - public void generarActa(){ - String gradoUsuario =""; - - if(fechaCorte!=null){ - Calendar fechaActualCldr = Calendar.getInstance(); - List listTarmDecomisoArma = DecomisoArmaTransaccionController.findPorEnvio(numeroTransaccionEnvioConvertido,false); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - String codigoreporte=listTarmDecomisoArma.get(0).getPk().toString(); - String path = "armas/reports/entregaArmasacta"; - String filename=numeroTransaccionEnvioConvertido; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("fechaCorte", (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCorte).toString()); - parameters.put("codResponsable",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("gradoUsuario",gradoUsuario.trim()); - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario.trim()); - parameters.put("centrocontrolorigen", institucionCentroControl.trim()); - parameters.put("unidadcontrolorigen", institucionUnidadControl.trim()); - TarmCentroControl centroControlDestino = CentroControlArmasController.findPorCodigo(unidadDestino); - String centroControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getInstitucion(), centroControlDestino.getInstituciontipo()).getDescription(); - String unidadControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getNombreinstitucion(), centroControlDestino.getNombreinstitucioncodigo()).getDescription(); - - parameters.put("centrocontroldestino", centroControlDestinoStr.trim()); - parameters.put("unidadcontroldestino", unidadControlDestinoStr.trim()); - parameters.put("tecnicoAlmacenamiento",MsgControlArmas.getProperty("tecnicoAlmacenamiento")+" "+institucionCentroControl); - parameters.put("jefe",MsgControlArmas.getProperty("jefe")+" "+institucionCentroControl); - parameters.put("codigodecomisoarma",codigoreporte); - parameters.put("tramite", numeroTransaccionEnvioConvertido); - //Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - //parameters.put("transaccion",numeroTransaccionEnvioConvertido); - - - //format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); - format = "pdf"; - InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - xpathflujo = generarXpath(); - - alfrescoController.uploadFile(file,numeroTransaccionEnvioConvertido+".pdf",xpathflujo); - //="cm:Decomiso/cm:A-2016/cm:M-01/cm:CENTRO CONTROL/cm:ABANDONO/cm:ENV/cm:ENV-000000319.pdf" - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } - } - - /** - * Método para habilitar o desabilitar el btn - * Arma a decomisar - * @throws Exception - */ - public void onChange(TarmDecomisoArma decomisoArma ) throws Exception { - btnGrabar=Boolean.TRUE; - //itemsUnidadBolean=Boolean.FALSE; - for(TarmDecomisoArma t:lrecord){ - if(t.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - btnGrabar=Boolean.FALSE; - //itemsUnidadBolean=Boolean.TRUE; - } - } - } - - /** - * Metodo para generar la ruta del alfresco - * @return - */ - public String generarXpath(){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Decomiso"); - - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - String centrocontrol=institucionUnidadControl.replaceAll("\\s+", "_"); - ruta = ruta.append("/cm:").append(centrocontrol); - ruta = ruta.append("/cm:"+"ENV"); - - return ruta.toString(); - } - - /** - * Método para devolver la descripcion - * - * @param list - * @param codigo - * @return - */ - public String catalogoDescripcion(List list, String codigo) { - for (TgeneCatalogDetail item : list) { - if (codigo.equals(item.getPk().getCatalog())) { - return item.getDescription(); - } - } - return null; - } - - /** - * Ejecuta un reporte de armas a destruir - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - if(xpathflujo==null || numeroTransaccion==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - if(cprovincia==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - String xpath=xpathflujo+"/cm:"+numeroTransaccionEnvioConvertido+ ".pdf"; - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - //codigo de la tabla TarmDecomisoArmaTransaccion - request.modifiedData().put("numerotransaccion", numeroTransaccion); - //codigo de la provincia - request.modifiedData().put("cprovincia", cprovincia); - //ruta del archivo para la firma - //TODO Falta crear la variable en maia 2-8 - request.modifiedData().put("xpath", xpath); - request.modifiedData().put("numerosolicitud", numeroTransaccionEnvioConvertido); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(numeroTransaccionEnvioConvertido); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " NUMERO TRANSACCION: " +numeroTransaccion); - xpathflujo=null; - numeroTransaccion=null; - this.btnGrabar = Boolean.TRUE; - this.btnFlujo = Boolean.FALSE; - this.btnSelTodos = Boolean.TRUE; - this.btnGenerarActa=Boolean.TRUE; - numeroTransaccionEnvioConvertido=null; - - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - - /** - * Metodo para filtrar por el numero de transaccion despues de la realizacion del guardado - * @throws Exception - */ - protected void querydata() throws Exception { - filtroData = numeroTransaccionEnvio; - query(); - setFiltroData(""); - } - /** - * Se ejecuta cuando seleccionamos forzar consulta cuando hay data en el grid - */ - @Override - public void forcedQuery() throws Exception { - centroControlDestino = null; - this.init(); - super.forcedQuery(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - //clearAll(); - - /*this.btnGrabar=Boolean.TRUE; - this.btnGenerarActa=Boolean.TRUE; - this.btnSelTodos = Boolean.TRUE;*/ - - //Verificar si tiene o no contenido seleccionado - if (lrecord != null && !lrecord.isEmpty() && btnTabGrid) { - for (TarmDecomisoArma decomisoArma : lrecord) { - if (decomisoArma.getModifiedData().get("seleccion") - .equals(Boolean.TRUE)) { - RequestContext.getCurrentInstance().execute( - "PF('queryConfirmDialog').show()"); - return; - } - - } - - } - try { - numeroTransaccionEnvio=filtroData; - if(fechaCorte!=null && !fechaCorte.after(new Date())){ - - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("t.fdecomiso"); - Request request = this.callerhelper.getRequest(); - if((transaccionVerificarArmas || transaccionAprobarActaEntrega) && centroControl==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_centrocontrol")); - return; - } - if(numeroTransaccionRecepcion!=null && !numeroTransaccionRecepcion.isEmpty() && !numeroTransaccionRecepcion.substring(0, 3).equalsIgnoreCase("REC")){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numero_recepcion")); - return; - } - - if(transaccionVerificarArmas){ - try { - - //Valores para el filtro - request.put("centroControl", centroControl.getPk()); - request.put("numeroDecomiso", numeroDecomiso); - request.put("numeroserie", numeroSerie); - request.put("fechacorte", fechaCorte.toString()); - //QueryRule VerificarArmasQuery - request.put("queryalias", "TRANSVERIFICARARMAS"); - - } catch (Exception e) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_decomisos")); - return; - } - }else if (transaccionAprobarActaEntrega){ - try { - dto = filtroAprobarActaEntrega(dto); - } catch (Exception e) { - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sin_decomisos")); - return; - } - } - else{ - Filter fechaFiltro= new Filter(); - fechaFiltro.setSql("t.fdecomiso < " + "TO_DATE('" + fechaCorte.toString() + "','yyyy-mm-dd')"); - dto.addFiltro(fechaFiltro); - } - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - btnSelTodos = Boolean.TRUE; - - MessageHelper.setMessageError(resp); - } else { - - lrecord = (List) resp.get(beanalias); - - if(lrecord!=null && !lrecord.isEmpty()){ - btnSelTodos = Boolean.FALSE; - - List listaNoenviada=new ArrayList(); - for(TarmDecomisoArma decomisoArma:lrecord){ - if(!filtroData.isEmpty()){ - - decomisoArma.getModifiedData().put("seleccion", Boolean.TRUE); - } - else{ - decomisoArma.getModifiedData().put("seleccion", Boolean.FALSE); - } - if(decomisoArma.getModifiedData().get("estadoflujo")!=null && decomisoArma.getModifiedData().get("estadoflujo").equals("NOENV")){ - listaNoenviada.add(decomisoArma); - } - } - for(TarmDecomisoArma decomisoArma:listaNoenviada){ - lrecord.remove(decomisoArma); - } - super.postQuery(lrecord); - }else{ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_info_consultarArmasDecomidas")); - } - - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - SubQuery subqueryCarma= new SubQuery("TarmArmas","pk","ncodigoarma","i.pk=t.carma"); - dto.addSubQuery(subqueryCarma); - SubQuery subqueryTipoArmaExplosivo= new SubQuery("TgeneCatalogDetail","description","ntipo","i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o " - + " where o.pk= (select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryTipoArmaExplosivo); - SubQuery subqueryClasecatalogo= new SubQuery("TgeneCatalogDetail","description","nclase","i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryClasecatalogo); - SubQuery subqueryRazonSocial= new SubQuery("TcustPersonDetail","name","razonsPropietario","i.pk.personcode=(select p.personcode from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryRazonSocial); - SubQuery subqueryIndentificacion= new SubQuery("TcustPersonDetail","identification","documentoPropietario","i.pk.personcode=(select p from TarmRegistroArmas p where p.pk=(select o.cregistro from TarmArmas o where o.pk=t.carma)) " - + " and i.pk.dateto=to_date('2999-12-31', 'YYYY-MM-DD')"); - - dto.addSubQuery(subqueryIndentificacion); - - - SubQuery subquerylonguitud= new SubQuery("TgeneCatalogDetail","description","nlongitud","i.pk.catalog= (select o.longitud from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.longitudcodigo from TarmTipoArmaExplosivo o " - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subquerylonguitud); - SubQuery subqueryCalibre= new SubQuery("TarmTipoArmaExplosivo","calibre","ncalibre","i.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)"); - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","nmarca","i.pk.catalog= (select o.marca from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryMarca); - - SubQuery subqueryLote= new SubQuery("TarmArmas","lote","nserie","i.pk=t.carma"); - dto.addSubQuery(subqueryLote); - - - SubQuery subqueryNRecivo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNRecivo); - SubQuery subqueryNTransaccion= new SubQuery("TarmDecomiso","numerotransaccion","numerotransaccion","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNTransaccion); - SubQuery subqueryUnidadTipo= new SubQuery("TgeneCatalogDetail","description","nunidad","i.pk.catalog= (select o.unidadmedidapeso from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma)) and " - + " i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o" - + " where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=t.carma))"); - dto.addSubQuery(subqueryUnidadTipo); - - SubQuery subqueryColor= new SubQuery("TgeneCatalogDetail","description","color","i.pk.catalog= (select o.color from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.colorcodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryColor); - SubQuery subqueryEstado= new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select o.estado from TarmArmas o where o.pk=t.carma) " - + " and i.pk.catalogcode=(select o.estadocodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryEstado); - //tarmdecomiso - SubQuery subquerynrecibo= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); - dto.addSubQuery(subquerynrecibo); - SubQuery subquerynrazon= new SubQuery("TarmDecomiso","nombrerazonsocial","nrazons","i.pk=t.cdecomiso"); - dto.addSubQuery(subquerynrazon); - SubQuery subquerydocumento= new SubQuery("TarmDecomiso","numerodocumento","documento","i.pk=t.cdecomiso"); - dto.addSubQuery(subquerydocumento); - - SubQuery subqueryestadoflujo= new SubQuery("TarmDecomisoArmaTransaccion","estadoflujo","estadoflujo","i.pk=t.cdecomisoarmatransaccion"); - dto.addSubQuery(subqueryestadoflujo); - return dto; - } - - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save() { - try { - if(unidadDestino==null || unidadDestino.isEmpty() || centroControlDestino==null || centroControlDestino.isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_verificarcentcontdestino")); - return; - } - if(this.getLoginController()!=null && 53 == this.getLoginController().getRequest().getTransactionCode() && "30".equals(getLoginController().getRequest().getTransactionModule())){ - List listaSeleccionada = new ArrayList(); - Boolean seleccion = Boolean.FALSE; - - for(TarmDecomisoArma decomisoArma:this.lrecord){ - record = decomisoArma; - - if(record.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - seleccion = true; - record.setCdecomisoarmatransaccion(0l);//valor cualquiera seteado para que el transaction rule lo tome como actualizacion - record.setCoperaciontransaccion("ENVIO"); - transaccionArmaBodegaController.create(); - transaccionArmaBodegaController.getRecord().setCarma(record.getCarma()); - transaccionArmaBodegaController.getRecord().setCcentrocontrolorigen(centroControl.getPk()); - //Nuevo le doy destino de envio - transaccionArmaBodegaController.getRecord().setCcentrocontroldestino(unidadDestino); - transaccionArmaBodegaController.update(); - - bodegaController.create(); - bodegaController.getRecord().setCarma(record.getCarma()); - bodegaController.getRecord().setCcentrocontrol(centroControl.getPk()); - bodegaController.update(); - listaSeleccionada.add(record); - } - this.update(); - } - - if(!seleccion){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_verificararmas")); - return; - } - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - - Calendar cal=Calendar.getInstance(); - cal.setTime(fechaCorte); - java.sql.Date fechaCorteRegistro=new java.sql.Date(cal.getTimeInMillis()); - - this.decomisoArmaTransaccionController.create(); - this.decomisoArmaTransaccionController.getRecord().setFtransaccion(null); - this.decomisoArmaTransaccionController.getRecord().setFcorte(fechaCorteRegistro); - this.decomisoArmaTransaccionController.getRecord().setCcentrocontrol(centroControl.getPk()); - - if(!"1".equals(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getInstitucion(), centroControl.getInstituciontipo()).getPk().getCatalog())){ - this.decomisoArmaTransaccionController.getRecord().setEstadofirma("Y"); - this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("ENV"); - isCentroDpto = Boolean.FALSE; - }else{ - this.decomisoArmaTransaccionController.getRecord().setEstadofirma("N"); - this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("NOENV"); - isCentroDpto = Boolean.TRUE; - } - - this.decomisoArmaTransaccionController.update(); - - DtoSave dtosaveDecomisoTran = this.decomisoArmaTransaccionController.getDtoSave(true); - dtosaveDecomisoTran.setReturnpk(true); - dtosaveDecomisoTran.setPosition(1); - msave.put(decomisoArmaTransaccionController.getBeanalias(), dtosaveDecomisoTran); - - DtoSave dtosaveDecomiso = this.getDtoSave(true); - dtosaveDecomiso.setReturnpk(true); - dtosaveDecomiso.setPosition(2); - msave.put(getBeanalias(), dtosaveDecomiso); - - DtoSave dtosaveBodegaTransaccion = this.transaccionArmaBodegaController.getDtoSave(); - dtosaveBodegaTransaccion.setReturnpk(true); - dtosaveBodegaTransaccion.setPosition(3); - msave.put( this.transaccionArmaBodegaController.getBeanalias(), dtosaveBodegaTransaccion); - - DtoSave dtosaveBodega = this.bodegaController.getDtoSave(); - dtosaveBodega.setReturnpk(true); - dtosaveBodega.setPosition(4); - msave.put( this.bodegaController.getBeanalias(), dtosaveBodega); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - - this.decomisoArmaTransaccionController.postCommit(resp); - this.transaccionArmaBodegaController.postCommit(resp); - this.bodegaController.postCommit(resp); - numeroTransaccionEnvio = String.valueOf(((TarmDecomisoArmaTransaccion)(dtosaveDecomisoTran.getLinsert().get(0))).getPk()); - numeroTransaccion=numeroTransaccionEnvio; - setNumeroTransaccionEnvioConvertido("ENV"+"-"+StringUtils.leftPad(numeroTransaccionEnvio, 9, '0')); - this.btnGrabar = Boolean.TRUE; - this.btnFlujo = Boolean.TRUE; - this.btnSelTodos = Boolean.TRUE; - this.btnFiltros = Boolean.TRUE; - this.btnTabGrid=Boolean.FALSE; - this.postCommit(resp); - lrecord = listaSeleccionada; - MessageHelper.setMessageInfo(resp); - - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickGenerarActa"))); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } else { - MessageHelper.setMessageError(resp); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Para realizar el filtro por acta de aprobación - * @param dto Dto de los datos consultados - * @return - * @throws Exception - */ - private DtoQuery filtroAprobarActaEntrega(DtoQuery dto) throws Exception { - - fechaCorte=new Date(); - numeroTransaccionEnvio=envioFlujo; - - Filter decomisoFiltro= new Filter(); - - decomisoFiltro.setSql(" t.cdecomisoarmatransaccion= '" + listTarmDecomisoArma.get(0).getPk() + "'"); - dto.addFiltro(decomisoFiltro); - - - return dto; - } - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - if(fechaCorte!=null){ - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaCorteCldr = Calendar.getInstance(); - fechaCorteCldr.setTime(fechaCorte); - if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ - String path = "armas/reports/destruccionArmas"; - String filename="armas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - - //Fecha de corte - StringBuilder fechaCorteSB= new StringBuilder(); - fechaCorteSB = fechaCorteSB.append((fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCorteCldr.get(Calendar.DAY_OF_MONTH))); - fechaCorteSB = fechaCorteSB.append("-").append((fechaCorteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.MONTH) + 1) : (fechaCorteCldr.get(Calendar.MONTH)+1)); - fechaCorteSB = fechaCorteSB.append("-").append(fechaCorteCldr.get(Calendar.YEAR)); - parameters.put("fechaCorte", fechaCorteSB.toString()); - - //Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - - //Fecha de referencia - Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); - fechaReferenciaReporteCldr.setTime(fechaCorte); - fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); - StringBuilder fechaReferenciaSB = new StringBuilder(); - fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); - fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); - fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); - parameters.put("fechaReferenciaReporte", fechaReferenciaSB.toString()); - - //format = CatalogDetailController.findxCodigoCodcatalogo(tipoReporte, "TIPOREPORTE").getLegalcode(); - format = "pdf"; - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); - } - } - } - - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("numerotransaccion", envioFlujo); - request.modifiedData().put("xpath", pathflujo); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public List getlTipoReporte() { - return lTipoReporte; - } - - public void setlTipoReporte(List lTipoReporte) { - this.lTipoReporte = lTipoReporte; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getTipoReporte() { - return tipoReporte; - } - - public void setTipoReporte(String tipoReporte) { - this.tipoReporte = tipoReporte; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public Integer getDiasParaDestruirArma() { - return diasParaDestruirArma; - } - - public void setDiasParaDestruirArma(Integer diasParaDestruirArma) { - this.diasParaDestruirArma = diasParaDestruirArma; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public boolean isTransaccionVerificarArmas() { - return transaccionVerificarArmas; - } - - public void setTransaccionVerificarArmas(boolean transaccionVerificarArmas) { - this.transaccionVerificarArmas = transaccionVerificarArmas; - } - - public DecomisoArmaTransaccionController getDecomisoArmaTransaccionController() { - return decomisoArmaTransaccionController; - } - - public void setDecomisoArmaTransaccionController( - DecomisoArmaTransaccionController decomisoArmaTransaccionController) { - this.decomisoArmaTransaccionController = decomisoArmaTransaccionController; - } - - public TransaccionArmaBodegaController getTransaccionArmaBodegaController() { - return transaccionArmaBodegaController; - } - - public void setTransaccionArmaBodegaController( - TransaccionArmaBodegaController transaccionArmaBodegaController) { - this.transaccionArmaBodegaController = transaccionArmaBodegaController; - } - - public String getNumeroTransaccionEnvio() { - return numeroTransaccionEnvio; - } - - public void setNumeroTransaccionEnvio(String numeroTransaccionEnvio) { - this.numeroTransaccionEnvio = numeroTransaccionEnvio; - } - - public String getNumeroTransaccionEnvioConvertido() { - return numeroTransaccionEnvioConvertido; - } - - public void setNumeroTransaccionEnvioConvertido( - String numeroTransaccionEnvioConvertido) { - this.numeroTransaccionEnvioConvertido = numeroTransaccionEnvioConvertido; - } - - public String getFiltroData() { - return filtroData; - } - - public void setFiltroData(String filtroData) { - this.filtroData = filtroData; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public String getNumeroTransaccion() { - return numeroTransaccion; - } - - public void setNumeroTransaccion(String numeroTransaccion) { - this.numeroTransaccion = numeroTransaccion; - } - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public Boolean getBtnGrabar() { - return btnGrabar; - } - - public void setBtnGrabar(Boolean btnGrabar) { - this.btnGrabar = btnGrabar; - } - - public BodegaController getBodegaController() { - return bodegaController; - } - - public void setBodegaController(BodegaController bodegaController) { - this.bodegaController = bodegaController; - } - - public String getInstitucionUnidadControl() { - return institucionUnidadControl; - } - - public void setInstitucionUnidadControl(String institucionUnidadControl) { - this.institucionUnidadControl = institucionUnidadControl; - } - - public String getNumeroSerie() { - return numeroSerie; - } - - public void setNumeroSerie(String numeroSerie) { - this.numeroSerie = numeroSerie; - } - - public String getNumeroDecomiso() { - return numeroDecomiso; - } - - public void setNumeroDecomiso(String numeroDecomiso) { - this.numeroDecomiso = numeroDecomiso; - } - - public String getCentroControlDestino() { - return centroControlDestino; - } - - public void setCentroControlDestino(String centroControlDestino) { - this.centroControlDestino = centroControlDestino; - } - - public String getUnidadDestino() { - return unidadDestino; - } - - public void setUnidadDestino(String unidadDestino) { - this.unidadDestino = unidadDestino; - } - - public List getCentroControlsDestinos() { - return centroControlsDestinos; - } - - public void setCentroControlsDestinos(List centroControlsDestinos) { - this.centroControlsDestinos = centroControlsDestinos; - } - - public List getUnidadesDestinos() { - return unidadesDestinos; - } - - public void setUnidadesDestinos(List unidadesDestinos) { - this.unidadesDestinos = unidadesDestinos; - } - - public Boolean getBtnGenerarActa() { - return btnGenerarActa; - } - - public void setBtnGenerarActa(Boolean btnGenerarActa) { - this.btnGenerarActa = btnGenerarActa; - } - - public String getCodigoOrganismoControlDestino() { - return codigoOrganismoControlDestino; - } - - public void setCodigoOrganismoControlDestino( - String codigoOrganismoControlDestino) { - this.codigoOrganismoControlDestino = codigoOrganismoControlDestino; - } - - public String getCodigoUnidadControlDestino() { - return codigoUnidadControlDestino; - } - - public void setCodigoUnidadControlDestino(String codigoUnidadControlDestino) { - this.codigoUnidadControlDestino = codigoUnidadControlDestino; - } - - /** - * @return the centroControlActual - */ - public String getCentroControlActual() { - return centroControlActual; - } - - /** - * @param centroControlActual the centroControlActual to set - */ - public void setCentroControlActual(String centroControlActual) { - this.centroControlActual = centroControlActual; - } - - /** - * @return the unidadActual - */ - public String getUnidadActual() { - return unidadActual; - } - - /** - * @param unidadActual the unidadActual to set - */ - public void setUnidadActual(String unidadActual) { - this.unidadActual = unidadActual; - } - - public boolean isBtnSelTodos() { - return btnSelTodos; - } - - public void setBtnSelTodos(boolean btnSelTodos) { - this.btnSelTodos = btnSelTodos; - } - - /** - * @return the numeroTransaccionRecepcion - */ - public String getNumeroTransaccionRecepcion() { - return numeroTransaccionRecepcion; - } - - /** - * @param numeroTransaccionRecepcion the numeroTransaccionRecepcion to set - */ - public void setNumeroTransaccionRecepcion(String numeroTransaccionRecepcion) { - this.numeroTransaccionRecepcion = numeroTransaccionRecepcion; - } - - /** - * @return the btnTabGrid - */ - public Boolean getBtnTabGrid() { - return btnTabGrid; - } - - /** - * @param btnTabGrid the btnTabGrid to set - */ - public void setBtnTabGrid(Boolean btnTabGrid) { - this.btnTabGrid = btnTabGrid; - } - - /** - * @return the btnFiltros - */ - public boolean isBtnFiltros() { - return btnFiltros; - } - - /** - * @param btnFiltros the btnFiltros to set - */ - public void setBtnFiltros(boolean btnFiltros) { - this.btnFiltros = btnFiltros; - } - - public Boolean getIsCentroDpto() { - return isCentroDpto; - } - - public void setIsCentroDpto(Boolean isCentroDpto) { - this.isCentroDpto = isCentroDpto; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionDeArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionDeArmasController.java.svn-base deleted file mode 100644 index ce04581..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteDestruccionDeArmasController.java.svn-base +++ /dev/null @@ -1,784 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de la generación de reporte de armas a destruirse - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteDestruccionDeArmasController extends AbstractController { - - /** - * Fecha de corte a la que se generara el reporte - * */ - private Date fechaCorte; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual loogueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Variable de tipo entero que lee de la tabla parámetros el número de días en decomiso previo a la destrucción del arma - * */ - private Integer diasParaDestruirArma; - /** - * Catalogcode de la tabla Catálogos que funciona como bandera para indicar si un arma ya se encuentra en algún reporte previo. - * */ - private final String CATALOGCODEADESTRUIRSE = "ADESTRUIRSE"; - /** - * Ruta base del reporte generado en el Alfresco - * */ - private String xPathLocation; - /** - * Ubicacion completa del reporte generado en el Alfresco - * */ - private String xPath; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Codigo de cabecera del reporte generado en base de datos - * */ - private String creporte; - /** - * Bandera de tipo booleano para indicar si se genero o no el reporte - * */ - private Boolean seGeneroReporte; - /** - * Bandera de tipo booleano para indicar si se ha grabado el reporte generado - * */ - private Boolean isEnableGrabar; - /** - * Bandera de tipo booleano para indicar que se debe deshabilitar el boton iniciar flujo - * */ - private Boolean isEnableEnviar; - /** - * Variable del tipo TgeneCatalogDetail(Esta en reporte de armas a destruirse) - */ - private TgeneCatalogDetail aDestruirseCatalog; - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Clase controladora de cabecera de reporte de armas a destruir - */ - @ManagedProperty(value = "#{cabRepDestruirArmasController}") - private CabRepDestruirArmasController cabRepDestruirArmasController; - /** - * Clase controladora de detalle de reporte de armas a destruir - */ - @ManagedProperty(value = "#{detRepDestruirArmasController}") - private DetRepDestruirArmasController detRepDestruirArmasController; - /** - * Clase controladora de funcionalidad del Alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - /** - * codigo de la provincia del usuario logeado - */ - private String cprovincia; - public ReporteDestruccionDeArmasController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - diasParaDestruirArma = ParametersController.find("DIASENBODEGA.DESTRUIRARMAS", "1").getNumbervalue().intValue(); - aDestruirseCatalog = CatalogDetailController.findxCodigoCodcatalogo("1", CATALOGCODEADESTRUIRSE); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "RPRTEDESTRUCCIONDEARMAS"; - seGeneroReporte = Boolean.FALSE; - isEnableGrabar = Boolean.TRUE; - isEnableEnviar = Boolean.FALSE; - TarmCentroControl centroControl=Utilidades.obtenerCentroControl(); - cprovincia=centroControl.getProvincecode(); - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - /** - * Metodo que se debe ejecutar cuando es una transaccion de tipo verificar armas - * @throws Exception - */ -// private void provinciaUsuario() throws Exception { -// PersonAddressController personAddressController = new PersonAddressController(); -// TcustPersonAddress tcustPersonAddres= personAddressController.findPrincipal(userDetail.getPk().getPersoncode().toString()); -// cprovincia=tcustPersonAddres.getProvincecode(); -// } - - /** - * Crea una instancia y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDecomisoArma decomisoArmaObj : lrecord) { - decomisoArmaObj.getModifiedData().put("isSelect", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(fechaCorte!=null){ - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaCorteCldr = Calendar.getInstance(); - fechaCorteCldr.setTime(fechaCorte); - if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.fdecomiso"); - - Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); - - fechaReferenciaReporteCldr.setTime(fechaCorte); - - fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); - StringBuilder fechaReferenciaSB = new StringBuilder(); - fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); - fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); - fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); - - Filter fechaFiltro= new Filter(); - fechaFiltro.setSql("(t.estado='DEC' or t.estado='INC' or t.estado='ABA' or t.estado='ENTR') and t.adestruirse is null and t.adestruirsecode is null and t.fdecomiso < " + "TO_DATE('" + fechaReferenciaSB.toString() + "','dd-mm-yyyy') and not exists(select 1 from TarmArmas ta where ta.estado = 'SUSP' and t.carma = (select max(tax.pk) from TarmArmas tax where ta.pk = tax.pk))"); - dto.addFiltro(fechaFiltro); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - for(TarmDecomisoArma decomisoArma:lrecord){ - if(decomisoArma.getCdecomiso()!=null){ - decomisoArma.getModifiedData().put("isSelect",Boolean.FALSE); - TarmArmas arma = ArmasController.findByPK(decomisoArma.getCarma()); - TarmTipoArmaExplosivo tipoArmaExplosivo = TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - decomisoArma.getModifiedData().put("ntipo", arma.getModifiedData().get("tipo")); - decomisoArma.getModifiedData().put("nclase", arma.getModifiedData().get("clase")); - if(tipoArmaExplosivo.getLongitud()!=null){ - decomisoArma.getModifiedData().put("nlongitud", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getLongitud(), tipoArmaExplosivo.getLongitudcodigo()).getDescription():""); - } - else{ - decomisoArma.getModifiedData().put("nlongitud", ""); - } - if(tipoArmaExplosivo.getCalibre()!=null){ - decomisoArma.getModifiedData().put("ncalibre", CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo(tipoArmaExplosivo.getCalibre(), tipoArmaExplosivo.getCalibrecodigo()).getDescription():""); - } - else{ - decomisoArma.getModifiedData().put("ncalibre", ""); - } - - decomisoArma.getModifiedData().put("nmarca", CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo())!=null?CatalogDetailController.findxCodigoCodcatalogo( arma.getMarca(), arma.getMarcacodigo()).getDescription():""); - decomisoArma.getModifiedData().put("nserie", arma.getLote()); - decomisoArma.getModifiedData().put("nunidad", CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode())!=null?CatalogDetailController.findxCodigoCodcatalogo(decomisoArma.getUnidadmedida(), decomisoArma.getUnidadmedidacode()).getDescription():""); - - TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(arma.getCregistro().toString()); - if(registroArma!=null && registroArma.getPersoncode()!=null){ - Integer personCodePropietario = registroArma.getPersoncode(); - decomisoArma.getModifiedData().put("npropietario", PersonDetailController.find(personCodePropietario.toString()).getName()); - } - else{ - decomisoArma.getModifiedData().put("npropietario", ""); - } - TarmDecomiso decomiso = DecomisoController.findByCodigo(decomisoArma.getCdecomiso().toString()); - if(decomiso!=null && decomiso.getNumerodocumento()!=null){ - decomisoArma.getModifiedData().put("nrecibo", decomiso.getNumerorecibo()); - } - else{ - decomisoArma.getModifiedData().put("nrecibo", ""); - } - } - else{ - lrecord.remove(decomisoArma); - } - } - super.postQuery(lrecord); - } - } - else{ - lrecord = new ArrayList(); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - cabRepDestruirArmasController.postCommit(response); - detRepDestruirArmasController.postCommit(response); - } - - - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - if(fechaCorte!=null){ - if(existeArmasSeleccionadas()){ - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaCorteCldr = Calendar.getInstance(); - fechaCorteCldr.setTime(fechaCorte); - if(fechaActualCldr.compareTo(fechaCorteCldr)>=0){ - String path = "armas/reports/bajaDestruccion"; - String filename="ArmasADestruirse"; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - // Datos del supervisor militar - String CISupervisorMilitar = ParametersController.find("IDSUPERMILITDPTOARMSPICH", "1").getTextvalue(); - TcustPersonDetail supervisorMilitarObj = PersonDetailController.findxidentification(CISupervisorMilitar, "CED"); - String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - "; - parameters.put("nombreSupMilitar", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName()); - parameters.put("personCodeSupMilitar", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode()); - // Datos del coordinador militar - String CICoordinadorMilitar = ParametersController.find("IDCOORDMILITDPTOARMSPICH", "1").getTextvalue(); - TcustPersonDetail coordinadorMilitarObj = PersonDetailController.findxidentification(CICoordinadorMilitar, "CED"); - String gradoCoordMilitar = coordinadorMilitarObj.getMilitarygrade()==null?"":coordinadorMilitarObj.getMilitarygrade() + " - "; - parameters.put("nombreCoordMilitar", gradoCoordMilitar + coordinadorMilitarObj.getName()==null?"":coordinadorMilitarObj.getName()); - parameters.put("personCodeCoordMilitar", coordinadorMilitarObj.getPk().getPersoncode()==null?"1001":coordinadorMilitarObj.getPk().getPersoncode()); - - try { - - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - - //Fecha de corte - StringBuilder fechaCorteSB= new StringBuilder(); - fechaCorteSB = fechaCorteSB.append((fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCorteCldr.get(Calendar.DAY_OF_MONTH))); - fechaCorteSB = fechaCorteSB.append("-").append((fechaCorteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCorteCldr.get(Calendar.MONTH) + 1) : (fechaCorteCldr.get(Calendar.MONTH)+1)); - fechaCorteSB = fechaCorteSB.append("-").append(fechaCorteCldr.get(Calendar.YEAR)); - parameters.put("fechaCorte", fechaCorteSB.toString()); - parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - //Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - - //Fecha de referencia - Calendar fechaReferenciaReporteCldr = Calendar.getInstance(); - fechaReferenciaReporteCldr.setTime(fechaCorte); - fechaReferenciaReporteCldr.add(Calendar.DAY_OF_MONTH, -diasParaDestruirArma); - StringBuilder fechaReferenciaSB = new StringBuilder(); - fechaReferenciaSB = fechaReferenciaSB.append((fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH)) : (fechaReferenciaReporteCldr.get(Calendar.DAY_OF_MONTH))); - fechaReferenciaSB = fechaReferenciaSB.append("-").append((fechaReferenciaReporteCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaReferenciaReporteCldr.get(Calendar.MONTH) + 1) : (fechaReferenciaReporteCldr.get(Calendar.MONTH)+1)); - fechaReferenciaSB = fechaReferenciaSB.append("-").append(fechaReferenciaReporteCldr.get(Calendar.YEAR)); - parameters.put("fechaReferenciaReporte", fechaReferenciaSB.toString()); - - // Verifico si el reporte fue enviado en el flujo y debe subirse al Alfresco -// if(isDenied){ - InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - alfrescoController.uploadFile(file, nombreReporte, this.xPathLocation); - seGeneroReporte = Boolean.TRUE; -// }else{ -// this.reportController.execute(path, parameters, format, filename, this.getLoginController()); -// } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechaCorteMayorAFechaActual")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); - } - } - } - - - /** - * Retorna la ruta de documento base en donde se almacenará el reporte - * - * @return - */ - public String getRutaDocumentoRepBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Decomiso"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - - public String getxPath() { - return xPath; - } - - public void setxPath(String xPath) { - this.xPath = xPath; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - try { - if(lrecord!=null && lrecord.size()>0){ - if(validaSiExisteArmasSeleccionadas()){ - TarmCabRepDestruirArmas cabeceraReporteObj = new TarmCabRepDestruirArmas(); - cabeceraReporteObj.setFreporte((java.sql.Date)fechaCorte); - xPathLocation= getRutaDocumentoRepBase() + "/cm:BAJA"; - cabeceraReporteObj.setXpath(xPathLocation); - cabeceraReporteObj.setIsnew(Boolean.TRUE); - //Guarda la ruta donde se almacenara el reporte - cabRepDestruirArmasController.update(cabeceraReporteObj); - Boolean existArmasEnReporte = Boolean.FALSE; - for(TarmDecomisoArma decomisoArmaObj:lrecord){ - if(decomisoArmaObj.getAdestruirse()==null){ - if(decomisoArmaObj.getModifiedData().get("isSelect")==null || decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.FALSE)){ - continue; - } - TarmDetRepDestruirArmas detalleReporteObj = new TarmDetRepDestruirArmas(); - detalleReporteObj.setIsnew(Boolean.TRUE); - if(decomisoArmaObj.getCdecomiso()!=null){ - detalleReporteObj.setCdecomisoarma(decomisoArmaObj.getPk()); - } - if(decomisoArmaObj.getModifiedData().get("nclase")!=null){ - detalleReporteObj.setClase(decomisoArmaObj.getModifiedData().get("nclase").toString()); - } - if(decomisoArmaObj.getModifiedData().get("ntipo")!=null){ - detalleReporteObj.setTipo(decomisoArmaObj.getModifiedData().get("ntipo").toString()); - } - if(decomisoArmaObj.getModifiedData().get("ncalibre")!=null){ - detalleReporteObj.setCalibre(decomisoArmaObj.getModifiedData().get("ncalibre").toString()); - } - if(decomisoArmaObj.getModifiedData().get("nmarca")!=null){ - detalleReporteObj.setMarca(decomisoArmaObj.getModifiedData().get("nmarca").toString()); - } - if(decomisoArmaObj.getModifiedData().get("nserie")!=null){ - detalleReporteObj.setSerie(decomisoArmaObj.getModifiedData().get("nserie").toString()); - } - if(decomisoArmaObj.getCantidad()!=null){ - detalleReporteObj.setCantidad(decomisoArmaObj.getCantidad().toString()); - } - if(decomisoArmaObj.getModifiedData().get("nunidad")!=null){ - detalleReporteObj.setUnidad(decomisoArmaObj.getModifiedData().get("nunidad").toString()); - } - if(decomisoArmaObj.getFdecomiso()!=null){ - java.sql.Date date =new java.sql.Date(decomisoArmaObj.getFdecomiso().getTime()); - detalleReporteObj.setFdecomiso(date); - } - if(decomisoArmaObj.getModifiedData().get("npropietario")!=null){ - detalleReporteObj.setPropietario(decomisoArmaObj.getModifiedData().get("npropietario").toString()); - } - if(decomisoArmaObj.getModifiedData().get("nrecibo")!=null){ - detalleReporteObj.setNrecibo(decomisoArmaObj.getModifiedData().get("nrecibo").toString()); - } - if(!existArmasEnReporte){ - existArmasEnReporte = Boolean.TRUE; - } - - // Marca que indica que el arma decomisada ya se encuentra dentro de un reporte de armas a destruir - decomisoArmaObj.setAdestruirse(aDestruirseCatalog.getPk().getCatalog()); - decomisoArmaObj.setAdestruirsecode(aDestruirseCatalog.getPk().getCatalogcode()); - record = decomisoArmaObj; - super.update(); - detRepDestruirArmasController.update(detalleReporteObj); - - } - } - - if(existArmasEnReporte){ - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setPosition(1); - - DtoSave dtoSaveCabecera = cabRepDestruirArmasController.getDtoSave(); - dtoSaveCabecera.setIsForm(Boolean.TRUE); - dtoSaveCabecera.setReturnpk(Boolean.TRUE); - dtoSaveCabecera.setPosition(2); - - DtoSave dtoSaveDetalle = detRepDestruirArmasController.getDtoSave(); - dtoSaveDetalle.setReturnpk(Boolean.TRUE); - dtoSaveDetalle.setPosition(3); - - HashMap msave = new HashMap(); - - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - msave.put(cabRepDestruirArmasController.getBeanalias(),dtoSaveCabecera); - msave.put(detRepDestruirArmasController.getBeanalias(),dtoSaveDetalle); - - request.setSaveTables(msave); - - Response resp = this.callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.cabRepDestruirArmasController.postCommit(resp); - this.detRepDestruirArmasController.postCommit(resp); - isEnableGrabar = Boolean.FALSE; - isEnableEnviar = Boolean.TRUE; - MessageHelper.setMessageInfo(resp); - this.nombreReporte = resp.get("nombreReporte").toString(); - this.creporte = resp.get("creporte").toString(); - this.xPath = resp.get("xpath").toString(); - } else { - MessageHelper.setMessageError(resp); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccioneAlmenosUnArma")); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo usado para validar si existen armas seleccionadas por el usuario - */ - public Boolean validaSiExisteArmasSeleccionadas() { - Boolean bandera = Boolean.FALSE; - if(lrecord!=null && lrecord.size()>0){ - for(TarmDecomisoArma decomisoArmaObj:lrecord){ - if(decomisoArmaObj.getModifiedData().get("isSelect")!=null && decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ - bandera = Boolean.TRUE; - } - } - } - return bandera; - } - - /** - * Metodo que inicia el flujo de baja y destruccion de armas - */ - public void iniciarFlujo() { - try { - if(seGeneroReporte){ - Request request = this.callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("isnew", "Y"); - request.modifiedData().put("xpath", this.xPath); - request.modifiedData().put("creporte", this.creporte); - request.modifiedData().put("cprovincia", cprovincia); - request.setLogsolicitude(this.creporte); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - isEnableEnviar = Boolean.FALSE; -// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public Integer getDiasParaDestruirArma() { - return diasParaDestruirArma; - } - - public void setDiasParaDestruirArma(Integer diasParaDestruirArma) { - this.diasParaDestruirArma = diasParaDestruirArma; - } - - public CabRepDestruirArmasController getCabRepDestruirArmasController() { - return cabRepDestruirArmasController; - } - - public void setCabRepDestruirArmasController( - CabRepDestruirArmasController cabRepDestruirArmasController) { - this.cabRepDestruirArmasController = cabRepDestruirArmasController; - } - - public DetRepDestruirArmasController getDetRepDestruirArmasController() { - return detRepDestruirArmasController; - } - - public void setDetRepDestruirArmasController( - DetRepDestruirArmasController detRepDestruirArmasController) { - this.detRepDestruirArmasController = detRepDestruirArmasController; - } - - public TgeneCatalogDetail getaDestruirseCatalog() { - return aDestruirseCatalog; - } - - public void setaDestruirseCatalog(TgeneCatalogDetail aDestruirseCatalog) { - this.aDestruirseCatalog = aDestruirseCatalog; - } - - public String getxPathLocation() { - return xPathLocation; - } - - public void setxPathLocation(String xPathLocation) { - this.xPathLocation = xPathLocation; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getCreporte() { - return creporte; - } - - public void setCreporte(String creporte) { - this.creporte = creporte; - } - - public Boolean getSeGeneroReporte() { - return seGeneroReporte; - } - - public void setSeGeneroReporte(Boolean seGeneroReporte) { - this.seGeneroReporte = seGeneroReporte; - } - - public Boolean getIsEnableGrabar() { - return isEnableGrabar; - } - - public void setIsEnableGrabar(Boolean isEnableGrabar) { - this.isEnableGrabar = isEnableGrabar; - } - - public Boolean getIsEnableEnviar() { - return isEnableEnviar; - } - - public void setIsEnableEnviar(Boolean isEnableEnviar) { - this.isEnableEnviar = isEnableEnviar; - } - - /** - * Metodo encargado de marcar un registro de la tabla como seleccionado - */ - public void seleccionarArma(AjaxBehaviorEvent event){ - try { - SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent(); - record = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj"); - boolean checked = (Boolean) booleanCheckbox.getValue(); - if (checked) { - record.getModifiedData().put("isSelect",Boolean.TRUE); - }else{ - record.getModifiedData().put("isSelect",Boolean.FALSE); - this.getMfilelds().put("seleccionarTodos", Boolean.FALSE); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Metodo encargado de obtener todas las claves primarias de los elementos seleccionados en la tabla - */ - public Collection actualizarArmasSeleccionadas (){ - ListarmasSeleccionadasLst = new ArrayList<>(); - for(TarmDecomisoArma decomisoArmaObj:lrecord){ - if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ - armasSeleccionadasLst.add(decomisoArmaObj.getPk()); - } - } - return armasSeleccionadasLst; - } - - /** - * Metodo encargado de verificar si existe al menos un registro seleccionado en la tabla - */ - public Boolean existeArmasSeleccionadas(){ - Boolean flag = Boolean.FALSE; - for(TarmDecomisoArma decomisoArmaObj:lrecord){ - if(decomisoArmaObj.getModifiedData().get("isSelect").equals(Boolean.TRUE)){ - flag = Boolean.TRUE; - break; - } - } - return flag; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteEstadisticasTramitesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteEstadisticasTramitesController.java.svn-base deleted file mode 100644 index 9a25e83..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteEstadisticasTramitesController.java.svn-base +++ /dev/null @@ -1,306 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteEstadisticasTramitesController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - - - - /** - * Id del tipo de tramite - */ - private String idAutorizacion; - - /** - * Lista de centros de control de armas - */ - private List centroControlList; - - - private List autorizacionList; - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - - - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - - - public ReporteEstadisticasTramitesController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - beanalias = "RPRTEESTADISTICASTRAMITE"; - centroControlList = CentroControlArmasController.findAll(); - autorizacionList = CatalogDetailController.find("TIPOAUTORIZACION"); - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - String path = "armas/reports/estadisticastramites"; - String filename="estadisticastramites"; - String nombreUsuario=""; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("unidadmilitar", institucionCentroControl); - parameters.put("lugarFecha", Utilidades.armarFormatoFechaConHora(fechaActualCldr)); - parameters.put("usuario", nombreUsuario); - parameters.put("idCentroControl", "TODOS".equalsIgnoreCase(idCentroControl)?null:idCentroControl); - parameters.put("idAutorizacion", "TODOS".equalsIgnoreCase(idAutorizacion)?null:idAutorizacion); - parameters.put("fechaInicio", this.fechaInicio==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaInicio)); - parameters.put("fechaFin", this.fechaFin==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaFin)); - - try{ - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - - } - - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public String getIdAutorizacion() { - return idAutorizacion; - } - - public void setIdAutorizacion(String idAutorizacion) { - this.idAutorizacion = idAutorizacion; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public List getAutorizacionList() { - return autorizacionList; - } - - public void setAutorizacionList(List autorizacionList) { - this.autorizacionList = autorizacionList; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpController.java.svn-base deleted file mode 100644 index 314ce52..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpController.java.svn-base +++ /dev/null @@ -1,422 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteIngresoVentaArmExpController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Id del centro de control seleccionado por el usuario - * */ - private String numeroDocumento; - - - /** - * Tipo de documento seleccionado cedula/ruc - */ - private String tipoDocumento; - /** - * Lista de centros de control de armas - */ - private List centroControlList; - /** - * Codigo del catalogo de PHONETYPE telefono fijo - */ - private String codigoTelefonoFijo; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - - public ReporteIngresoVentaArmExpController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - beanalias = "RPRTELIQUIDACIONECONOMICA"; - centroControlList = CentroControlArmasController.findAll(); - //TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport2() { - - if(this.fechaInicio.getTime() > this.fechaFin.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - return; - } - if(this.fechaInicio.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - return; - } - if(this.fechaFin.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - return; - } - try { - String path = "armas/reports/ingresoVentaArmasExplosivos"; - String filename="ingresoVentaArmasExplosivos"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //usuario - TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personLoged = PersonDetailController.find(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - TcustPersonDetail personConsulted = PersonDetailController.findByIdentification(this.numeroDocumento); - parameters.put("usuario", personLoged.getName()); - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechaInicio", sdf.format(this.fechaInicio)); - parameters.put("fechaFin", sdf.format(this.fechaFin)); - parameters.put("fechaReporte", sdf.format(new Date())); - - if(personConsulted != null){ - parameters.put("nombreRazonSocial", personConsulted.getName()); - parameters.put("tipoDocumento", personConsulted.getIdentificationcatalog()); - parameters.put("numeroDocumento", personConsulted.getIdentification()); - parameters.put("representanteLegal", personConsulted.getLegalrepresent()); - parameters.put("representanteLegalIdent", personConsulted.getLegalrepresentidentification()); - parameters.put("personcode", personConsulted.getPk().getPersoncode().toString()); - PersonAddressController address = new PersonAddressController(); - TcustPersonAddress personAddress = address.findPrincipal(personConsulted.getPk().getPersoncode().toString()); - if(personAddress != null){ - parameters.put("direccion", personAddress.getAddress()); - }else { - parameters.put("direccion", ""); - } - } - - TcustPersonPhone personPhone = PersonPhoneController.find(personConsulted.getPk().getPersoncode().toString(), "2"); - if(personPhone != null && personPhone.getPhonenumber() != null){ - parameters.put("telefono",personPhone.getPhonenumber()); - }else { - parameters.put("telefono",""); - } - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception e) { - // TODO: handle exception - } - - - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaInicioCldr = Calendar.getInstance(); - Calendar fechaFinCldr = Calendar.getInstance(); - fechaInicioCldr.setTime(fechaInicio); - fechaFinCldr.setTime(fechaFin); - if(fechaActualCldr.compareTo(fechaInicioCldr)>=0){ - if(fechaActualCldr.compareTo(fechaFinCldr)>=0){ - if(fechaFinCldr.compareTo(fechaInicioCldr)>=0){ - String filename="ingresoVentaArmasExplosivos"; - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr)); - parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr)); - parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr)); - - String path; - - path = "armas/reports/ingresoVentaArmasExplosivos"; - parameters.put("numeroDocumento", numeroDocumento); - // Persona objetivo de la consulta de movimientos - TcustPersonDetail personDetailConsultadaObj = PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - if(personDetailConsultadaObj != null){ - parameters.put("nombreRazonSocial", personDetailConsultadaObj.getName()); - parameters.put("tipoDocumento", tipoDocumento); - parameters.put("numeroDocumento", personDetailConsultadaObj.getIdentification()); - parameters.put("representanteLegal", personDetailConsultadaObj.getLegalrepresent()); - parameters.put("representanteLegalIdent", personDetailConsultadaObj.getLegalrepresentidentification()); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddresObj=personAddressController.findPrincipal (personDetailConsultadaObj.getPk().getPersoncode().toString()); - if(tcustPersonAddresObj!=null){ - parameters.put("direccion", tcustPersonAddresObj.getAddress()); - } - else{ - parameters.put("direccion", ""); - } - TcustPersonPhone personPhoneObj= PersonPhoneController.find(personDetailConsultadaObj.getPk().getPersoncode().toString(), codigoTelefonoFijo); - if(personPhoneObj!=null){ - parameters.put("telefono",personPhoneObj.getPhonenumber()); - } - else{ - parameters.put("telefono",""); - } - } - - // Datos del CENTRO DE CONTROL -// TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(idCentroControl); -// String nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(),centroControlObj.getNombreinstitucioncodigo()).getDescription(); -// parameters.put("nombreCentroControl", nombreCentroControl); -// // Datos del jefe del centro -// if(centroControlObj.getPersoncode()!=null){ -// TcustPersonDetail supervisorMilitarObj = PersonDetailController.find(centroControlObj.getPersoncode().toString()); -// String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - "; -// parameters.put("nombreJefCentro", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName()); -// parameters.put("personCodeJefCentro", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode()); -// -// } - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - } - - } - -// parameters.put("fechaCorte", fechaCorteSB.toString()); -// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY)); - fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE))); - return fechaStr; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(String tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpUserController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpUserController.java.svn-base deleted file mode 100644 index dc31cdb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteIngresoVentaArmExpUserController.java.svn-base +++ /dev/null @@ -1,436 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteIngresoVentaArmExpUserController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Id del centro de control seleccionado por el usuario - * */ - private String numeroDocumento; - - - /** - * Tipo de documento seleccionado cedula/ruc - */ - private String tipoDocumento; - /** - * Lista de centros de control de armas - */ - private List centroControlList; - /** - * Codigo del catalogo de PHONETYPE telefono fijo - */ - private String codigoTelefonoFijo; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private String razonSocial; - - public ReporteIngresoVentaArmExpUserController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - beanalias = "RPRTELIQUIDACIONECONOMICA"; - centroControlList = CentroControlArmasController.findAll(); - //TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - if(userDetail.getPk().getPersoncode()!=null){ - razonSocial = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - numeroDocumento=PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getIdentification(); - } - else{ - razonSocial = ""; - numeroDocumento=""; - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport2() { - - if(this.fechaInicio.getTime() > this.fechaFin.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - return; - } - if(this.fechaInicio.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - return; - } - if(this.fechaFin.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - return; - } - try { - String path = "armas/reports/ingresoVentaArmasExplosivosUser"; - String filename="ingresoVentaArmasExplosivos"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //usuario - TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personLoged = PersonDetailController.find(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - TcustPersonDetail personConsulted = PersonDetailController.findByIdentification(this.numeroDocumento); - parameters.put("usuario", personLoged.getName()); - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechaInicio", sdf.format(this.fechaInicio)); - parameters.put("fechaFin", sdf.format(this.fechaFin)); - parameters.put("fechaReporte", sdf.format(new Date())); - - if(personConsulted != null){ - parameters.put("nombreRazonSocial", personConsulted.getName()); - parameters.put("tipoDocumento", personConsulted.getIdentificationcatalog()); - parameters.put("numeroDocumento", personConsulted.getIdentification()); - parameters.put("representanteLegal", personConsulted.getLegalrepresent()); - parameters.put("representanteLegalIdent", personConsulted.getLegalrepresentidentification()); - parameters.put("personcode", personConsulted.getPk().getPersoncode().toString()); - PersonAddressController address = new PersonAddressController(); - TcustPersonAddress personAddress = address.findPrincipal(personConsulted.getPk().getPersoncode().toString()); - if(personAddress != null){ - parameters.put("direccion", personAddress.getAddress()); - }else { - parameters.put("direccion", ""); - } - } - - TcustPersonPhone personPhone = PersonPhoneController.find(personConsulted.getPk().getPersoncode().toString(), "2"); - if(personPhone != null && personPhone.getPhonenumber() != null){ - parameters.put("telefono",personPhone.getPhonenumber()); - }else { - parameters.put("telefono",""); - } - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception e) { - // TODO: handle exception - } - - - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaInicioCldr = Calendar.getInstance(); - Calendar fechaFinCldr = Calendar.getInstance(); - fechaInicioCldr.setTime(fechaInicio); - fechaFinCldr.setTime(fechaFin); - if(fechaActualCldr.compareTo(fechaInicioCldr)>=0){ - if(fechaActualCldr.compareTo(fechaFinCldr)>=0){ - if(fechaFinCldr.compareTo(fechaInicioCldr)>=0){ - String filename="ingresoVentaArmasExplosivos"; - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr)); - parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr)); - parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr)); - - String path; - - path = "armas/reports/ingresoVentaArmasExplosivos"; - parameters.put("numeroDocumento", numeroDocumento); - // Persona objetivo de la consulta de movimientos - TcustPersonDetail personDetailConsultadaObj = PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - if(personDetailConsultadaObj != null){ - parameters.put("nombreRazonSocial", personDetailConsultadaObj.getName()); - parameters.put("tipoDocumento", tipoDocumento); - parameters.put("numeroDocumento", personDetailConsultadaObj.getIdentification()); - parameters.put("representanteLegal", personDetailConsultadaObj.getLegalrepresent()); - parameters.put("representanteLegalIdent", personDetailConsultadaObj.getLegalrepresentidentification()); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddresObj=personAddressController.findPrincipal (personDetailConsultadaObj.getPk().getPersoncode().toString()); - if(tcustPersonAddresObj!=null){ - parameters.put("direccion", tcustPersonAddresObj.getAddress()); - } - else{ - parameters.put("direccion", ""); - } - TcustPersonPhone personPhoneObj= PersonPhoneController.find(personDetailConsultadaObj.getPk().getPersoncode().toString(), codigoTelefonoFijo); - if(personPhoneObj!=null){ - parameters.put("telefono",personPhoneObj.getPhonenumber()); - } - else{ - parameters.put("telefono",""); - } - } - - // Datos del CENTRO DE CONTROL -// TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(idCentroControl); -// String nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(),centroControlObj.getNombreinstitucioncodigo()).getDescription(); -// parameters.put("nombreCentroControl", nombreCentroControl); -// // Datos del jefe del centro -// if(centroControlObj.getPersoncode()!=null){ -// TcustPersonDetail supervisorMilitarObj = PersonDetailController.find(centroControlObj.getPersoncode().toString()); -// String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - "; -// parameters.put("nombreJefCentro", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName()); -// parameters.put("personCodeJefCentro", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode()); -// -// } - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - } - - } - -// parameters.put("fechaCorte", fechaCorteSB.toString()); -// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY)); - fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE))); - return fechaStr; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - - public String getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(String tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public List getLtipoidenti() { - return ltipoidenti; - } - - public void setLtipoidenti(List ltipoidenti) { - this.ltipoidenti = ltipoidenti; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getRazonSocial() { - return razonSocial; - } - - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteInspeccionesRealizadasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteInspeccionesRealizadasController.java.svn-base deleted file mode 100644 index ea587a4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteInspeccionesRealizadasController.java.svn-base +++ /dev/null @@ -1,433 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Collection; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteInspeccionesRealizadasController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - /** - * Lista de centros de control de armas - */ - private List centroControlList; - -// private List lTipoReporte=new ArrayList(); - - private TsafeUserDetail tsafeUserDetailUsuario = null; - - private TarmCentroControl centroControl = new TarmCentroControl(); - - private TcustPersonDetail responsableCentroControl= null; - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - - public ReporteInspeccionesRealizadasController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "RPRTELIQUIDACIONECONOMICA"; - centroControlList = CentroControlArmasController.findEstado("Y"); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.responsableCentroControl = new TcustPersonDetail(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - -// /** -// * Crea una instancia y marca el registro como nuevo. -// * -// * @throws Exception -// */ -// @Override -// public void create() throws Exception { -// super.create(); -// } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDecomisoArma decomisoArmaObj : lrecord) { - decomisoArmaObj.getModifiedData().put("isSelect", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport2() { - String filtro = ""; - - if(this.fechaInicio.getTime() > this.fechaFin.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - return; - } - if(this.fechaInicio.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - return; - } - if(this.fechaFin.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - return; - } - try { - String path = "armas/reports/inspeccionesRealizadas"; - String filename="inspeccionesRealizadas"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //usuario - TsafeUserDetail tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail person = PersonDetailController.find(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - parameters.put("usuario", person.getName()); - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fechaInicio", sdf.format(this.fechaInicio)); - parameters.put("fechaFin", sdf.format(this.fechaFin)); - parameters.put("fechaReporte", sdf.format(new Date())); - - - - if(this.idCentroControl.equals("TODOS")){ - parameters.put("filtro", ""); - }else { - filtro = " and c.ccentrocontrol = '"+this.idCentroControl+"' "; - parameters.put("filtro", filtro); - } - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception e) { - // TODO: handle exception - } - - - } - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaInicioCldr = Calendar.getInstance(); - Calendar fechaFinCldr = Calendar.getInstance(); - fechaInicioCldr.setTime(fechaInicio); - fechaFinCldr.setTime(fechaFin); - if(fechaActualCldr.compareTo(fechaInicioCldr)>=0){ - if(fechaActualCldr.compareTo(fechaFinCldr)>=0){ - if(fechaFinCldr.compareTo(fechaInicioCldr)>=0){ - String filename="inspeccionesRealizadas"; - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr)); - fechaFinCldr.add(Calendar.DAY_OF_MONTH, 1); - parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr)); - parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr)); - - String path; - if(!idCentroControl.equalsIgnoreCase("TODOS")){ - path = "armas/reports/inspeccionesRealizadas"; - parameters.put("idCentroControl", idCentroControl); - // Datos del CENTRO DE CONTROL - TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(idCentroControl); - String nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(),centroControlObj.getNombreinstitucioncodigo()).getDescription(); - parameters.put("nombreCentroControl", nombreCentroControl); - // Datos del jefe del centro - if(centroControlObj.getPersoncode()!=null){ - TcustPersonDetail supervisorMilitarObj = PersonDetailController.find(centroControlObj.getPersoncode().toString()); - String gradoSupMilitar = supervisorMilitarObj.getMilitarygrade()==null?"": supervisorMilitarObj.getMilitarygrade() + " - "; - parameters.put("nombreJefCentro", gradoSupMilitar + supervisorMilitarObj.getName()==null?"":supervisorMilitarObj.getName()); - parameters.put("personCodeJefCentro", supervisorMilitarObj.getPk().getPersoncode()==null?"1001":supervisorMilitarObj.getPk().getPersoncode()); - - } - }else{ - path = "armas/reports/inspeccionesRealizadas"; - filename="inspeccionesRealizadasCCA"; - parameters.put("idCentroControl", null); - parameters.put("nombreCentroControl", "TODOS"); - parameters.put("nombreJefCentro", "Juan Todos"); - parameters.put("personCodeJefCentro", 1001); - } - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - } - - } - -// parameters.put("fechaCorte", fechaCorteSB.toString()); -// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY)); - fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE))); - return fechaStr; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteLiquidacionEconomicaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteLiquidacionEconomicaController.java.svn-base deleted file mode 100644 index 78f8ef6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteLiquidacionEconomicaController.java.svn-base +++ /dev/null @@ -1,330 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteLiquidacionEconomicaController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - /** - * Lista de centros de control de armas - */ - private List centroControlList; - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - -// private List lTipoReporte=new ArrayList(); - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - - public ReporteLiquidacionEconomicaController() throws Exception { - super(TarmDecomisoArma.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "RPRTELIQUIDACIONECONOMICA"; - centroControlList = CentroControlArmasController.findAll(); - obtenerCentroControl(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - -// /** -// * Crea una instancia y marca el registro como nuevo. -// * -// * @throws Exception -// */ -// @Override -// public void create() throws Exception { -// super.create(); -// } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmDecomisoArma decomisoArmaObj : lrecord) { - decomisoArmaObj.getModifiedData().put("isSelect", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - Calendar fechaActualCldr = Calendar.getInstance(); - Calendar fechaInicioCldr = Calendar.getInstance(); - Calendar fechaFinCldr = Calendar.getInstance(); - fechaInicioCldr.setTime(fechaInicio); - fechaFinCldr.setTime(fechaFin); - if(fechaActualCldr.compareTo(fechaInicioCldr)>=0){ - if(fechaActualCldr.compareTo(fechaFinCldr)>=0){ - if(fechaFinCldr.compareTo(fechaInicioCldr)>=0){ - String filename="liquidacionEconomica"; - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - try { - //Usuario logueado en la aplicacion - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - parameters.put("fechaInicio", armarFormatoFechaSinHora(fechaInicioCldr)); - parameters.put("fechaFin", armarFormatoFechaSinHora(fechaFinCldr)); - parameters.put("fechaReporte", armarFormatoFechaConHora(fechaActualCldr)); - - String path; - path = "armas/reports/liquidacionEconomica"; - parameters.put("idCentroControl", "TODOS".equalsIgnoreCase(idCentroControl)?null:idCentroControl); - parameters.put("nombreCentroControl", institucionCentroControl); - // Datos del jefe del centro - if(centroControl.getPersoncode()!=null){ - TcustPersonDetail supervisorMilitarObj = PersonDetailController.find(centroControl.getPersoncode().toString()); - String gradoSupMilitar = (supervisorMilitarObj==null || supervisorMilitarObj.getMilitarygrade()==null)?"": supervisorMilitarObj.getMilitarygrade() + " - "; - parameters.put("nombreJefCentro", (supervisorMilitarObj==null || supervisorMilitarObj.getName()==null)?"":gradoSupMilitar + supervisorMilitarObj.getName()); - parameters.put("personCodeJefCentro", (supervisorMilitarObj==null || supervisorMilitarObj.getPk().getPersoncode()==null)?"":supervisorMilitarObj.getPk().getPersoncode()); - - } - - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - } - - } - - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - -// parameters.put("fechaCorte", fechaCorteSB.toString()); -// parameters.put("codArmasDecomisadasLst", actualizarArmasSeleccionadas()); - - public StringBuilder armarFormatoFechaSinHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - return fechaStr; - } - - public StringBuilder armarFormatoFechaConHora(Calendar fechaCldr){ - StringBuilder fechaStr= new StringBuilder(); - fechaStr = fechaStr.append((fechaCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaCldr.get(Calendar.DAY_OF_MONTH)) : (fechaCldr.get(Calendar.DAY_OF_MONTH))); - fechaStr = fechaStr.append("-").append((fechaCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaCldr.get(Calendar.MONTH) + 1) : (fechaCldr.get(Calendar.MONTH)+1)); - fechaStr = fechaStr.append("-").append(fechaCldr.get(Calendar.YEAR)); - fechaStr = fechaStr.append(" ").append(fechaCldr.get(Calendar.HOUR_OF_DAY)); - fechaStr = fechaStr.append(":").append((fechaCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaCldr.get(Calendar.MINUTE)) : (fechaCldr.get(Calendar.MINUTE))); - return fechaStr; - } - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteSancionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteSancionesController.java.svn-base deleted file mode 100644 index 42ece3a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ReporteSancionesController.java.svn-base +++ /dev/null @@ -1,482 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de reporte de liquidacion economica - * - * @author Christian Pazmino. - * @version 2.1 - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReporteSancionesController extends AbstractController { - - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaInicio; - /** - * Fecha a partir de la cual se sacan datos para el reporte - * */ - private Date fechaFin; - /** - * Formato de reporte que se va a generar - * */ - - private Date fechaDecomiso; - - private String format = "pdf"; - /** - * Usuario actual logueado en el sistema - * */ - private TsafeUserDetail userDetail; - /** - * Nombre del reporte generado en el Alfresco - * */ - private String nombreReporte; - - /** - * Id del centro de control seleccionado por el usuario - * */ - private String idCentroControl; - - /** - * Id del tipo de tramite - */ - private String idAutorizacion; - private String idIdentificacion; - - private String numeroDocumento; - - /** - * Id del tipo de tramite - */ - private String idControl; - - private Boolean habilitar; - - /** - * Lista de centros de control de armas - */ - // private List centroControlList; - private List tipoDocumentoList; - - private List centroControlList; - - private List autorizacionList; - - private List controlList; - - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - - - - /** - * Clase controladora de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - - - public ReporteSancionesController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - recperpage = 10000; // Cambiar al # reg a mirar. - beanalias = "RPRTEAUTORIZACIONES"; - // centroControlList = CentroControlArmasController.findAll(); - centroControlList = CatalogDetailController.find("TIPODEFALTA"); - - autorizacionList = CatalogDetailController.find("USOACTIVIDAD"); - tipoDocumentoList = CatalogDetailController.find("IDENTIFICATION"); - controlList = CatalogDetailController.find("NOMBREINSTITUCION"); - this.habilitar = true; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - - } - - /** - * Metodo para reconsultar en base a una nueva fecha de corte seleccionada - */ - public void cambioFechaDeCorte(SelectEvent event){ - querydatabase(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * - * - */ - - public void habilitarfechadecomiso(){ - if (this.idAutorizacion.equals( "6")){ - this.habilitar = false; - - - } - else - { - this.habilitar = true; - this.fechaDecomiso = null; - } - } - /** - * Genera un reporte de armas a destruir - * - */ - public void generateReport() { - if(this.fechaInicio!=null || this.fechaFin!=null || this.fechaDecomiso!=null ) - { - if(this.fechaInicio!=null && this.fechaFin!=null ) - { - if(this.fechaInicio.getTime() > this.fechaFin.getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaFin1")); - return; - } - } - - if(this.fechaInicio!=null && this.fechaFin==null ) - { - if(this.fechaInicio.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaInicioMayorAFechaActual")); - return; - } - } - if(this.fechaInicio==null && this.fechaFin!=null ) - { - if(this.fechaFin.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaFinMayorAFechaActual")); - return; - - } - } - - if(this.fechaDecomiso!=null ) - { - if(this.fechaDecomiso.getTime() > new Date().getTime()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_liqeco_fechaDecomisoMayorAFechaActual")); - return; - } - - - } - } - - String path = ""; - - if (this.idAutorizacion.equals( "1")){ - path = "armas/reports/sancionesa"; - - } - if (this.idAutorizacion.equals( "6")){ - path = "armas/reports/sancionesp"; - - } - - Calendar fechaActualCldr = Calendar.getInstance(); - //String path = "armas/reports/autorizaciones"; - String filename="sanciones"; - String nombreUsuario=""; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - // institucionCentroControl - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - //parameters.put("unidadmilitar", "hola"); - parameters.put("lugarFecha", Utilidades.armarFormatoFechaConHora(fechaActualCldr)); - parameters.put("usuario", nombreUsuario); - parameters.put("numeroDocumento"," ".equalsIgnoreCase(numeroDocumento)?null:numeroDocumento); - parameters.put("Pcentro", "TODOS".equalsIgnoreCase(idControl)?null:idControl); //centro de control - parameters.put("Pcausa_sancion","TODOS".equalsIgnoreCase(idCentroControl)?null:idCentroControl); // estado - //parameters.put("idAutorizacion", "TODOS".equalsIgnoreCase(idAutorizacion)?null:idAutorizacion); // tipo de auturizacion - parameters.put("Ptidentificacion", "TODOS".equalsIgnoreCase(idIdentificacion)?null:idIdentificacion); // tipo de identificacion - parameters.put("fechaInicio", this.fechaInicio==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaInicio)); - parameters.put("fechaFin", this.fechaFin==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaFin)); - parameters.put("fechaDecomiso", this.fechaDecomiso==null?null:Utilidades.armarFormatoFechaSinHora(this.fechaDecomiso)); - - TgeneCatalogDetail obj = CatalogDetailController.findCatalogo("NOMBREINSTITUCION", idControl); - parameters.put("tipocentro", "TODOS".equalsIgnoreCase(idControl)?"TODOS":obj.getDescription()) ; //centro de control detalle - - TgeneCatalogDetail obj2 = CatalogDetailController.findCatalogo("IDENTIFICATION", idIdentificacion); - parameters.put("pdocumento", "TODOS".equalsIgnoreCase(idIdentificacion)?"TODOS":obj2.getDescription()) ; //tipo documento detalle - - TgeneCatalogDetail obj3 = CatalogDetailController.findCatalogo("TIPOAUTORIZACION", idAutorizacion); - parameters.put("pautorizacion", "TODOS".equalsIgnoreCase(idAutorizacion)?"TODOS":obj3.getDescription()) ; //tipo autorizacion detalle - - TgeneCatalogDetail obj4 = CatalogDetailController.findCatalogo("TIPODEFALTA", idCentroControl); - parameters.put("psancion", "TODOS".equalsIgnoreCase(idCentroControl)?"TODOS":obj4.getDescription()) ; //causa sancion detalle - - try{ - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - - } - - private void obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - - /** - * Método para el inicio de flujo. Guardar el reporte creado para su posterior aprobacion en otras instancias del flujo - */ - @Override - public void save(){ - - } - - public Date getFechaInicio() { - return fechaInicio; - } - - public void setFechaInicio(Date fechaInicio) { - this.fechaInicio = fechaInicio; - } - - public Date getFechaDecomiso() { - return fechaDecomiso; - } - - public void setFechaDecomiso(Date fechaDecomiso) { - this.fechaDecomiso = fechaDecomiso; - } - public Date getFechaFin() { - return fechaFin; - } - - public void setFechaFin(Date fechaFin) { - this.fechaFin = fechaFin; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public String getNombreReporte() { - return nombreReporte; - } - - public void setNombreReporte(String nombreReporte) { - this.nombreReporte = nombreReporte; - } - - public String getIdCentroControl() { - return idCentroControl; - } - - public void setIdCentroControl(String idCentroControl) { - this.idCentroControl = idCentroControl; - } - - public String getIdAutorizacion() { - return idAutorizacion; - } - - public void setIdAutorizacion(String idAutorizacion) { - this.idAutorizacion = idAutorizacion; - } - - //idIdentificacion - - public String getIdIdentificacion() { - return idIdentificacion; - } - - public void setIdIdentificacion(String idIdentificacion) { - this.idIdentificacion = idIdentificacion; - } - //public List getCentroControlList() { -// return centroControlList; - //} - - //public void setCentroControlList(List centroControlList) { - //this.centroControlList = centroControlList; - //} - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - /*CFLORES*/ - public List getTipoDocumentoList() { - return tipoDocumentoList; - } - - public void getTipoDocumentoList(List tipoDocumentoList) { - this.tipoDocumentoList = tipoDocumentoList; - } - /**/ - - public List getAutorizacionList() { - return autorizacionList; - } - - public void setAutorizacionList(List autorizacionList) { - this.autorizacionList = autorizacionList; - } - - /*cflores*/ - public List getControlList() { - return controlList; - } - - public void setControlList(List controlList) { - this.controlList = controlList; - } - - public String getIdControl() { - return idControl; - } - - public void setIdControl(String idControl) { - this.idControl = idControl; - } - public void setHabilitar(Boolean habilitar) { - this.habilitar = habilitar; - } - - public Boolean getHabilitar() { - return habilitar; - } - - - - public String getNumeroDocumento() { - return numeroDocumento; - } - - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - /**/ - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarReporteArmasADestruirController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarReporteArmasADestruirController.java.svn-base deleted file mode 100644 index c9519c7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarReporteArmasADestruirController.java.svn-base +++ /dev/null @@ -1,227 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; - -/** - * Clase controladora de la revision de reporte de armas a destruirse por parte del supervisor militar - * @author Christian Pazmino - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RevisarReporteArmasADestruirController extends AbstractController { - - private Integer creporte; - private Date fechaCorte; - /** - * Variable que indica si el funcionario esta negado para iniciar el flujo y enviar el reporte a su superior para aprobacion - */ - private Boolean isDenied; - - private TarmCabRepDestruirArmas cabRepDestruirArmasObj; - - @ManagedProperty(value="#{cabRepDestruirArmasController}") - private CabRepDestruirArmasController cabRepDestruirArmasController; - - @ManagedProperty(value="#{detRepDestruirArmasController}") - private DetRepDestruirArmasController detRepDestruirArmasController; - - public RevisarReporteArmasADestruirController() throws Exception { - super(TarmCabRepDestruirArmas.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - super.startQuery(); - if(this.getMfilters().get("creporte")!=null){ - creporte = Integer.parseInt(this.getMfilters().get("creporte")); - } - if(creporte!=null){ - this.getMfilters().clear(); - this.init(); - } - else{ - detRepDestruirArmasController.setLrecord(new ArrayList()); - } -// this.querydatabase(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - isDenied = Boolean.FALSE; - cabRepDestruirArmasObj = CabRepDestruirArmasController.findByCodigo(creporte.toString()); - detRepDestruirArmasController.addFilter("creporte", creporte.toString()); - detRepDestruirArmasController.query(); -// detRepDestruirArmasLst = DetRepDestruirArmasController.findByCReporte(creporte.toString()); - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "TARMREVISAREPDECARMAS"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.next(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - public void previous(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.previous(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - super.addFilter("pk", creporte.toString()); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord.size()>0){ - record = lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public Integer getCreporte() { - return creporte; - } - - public void setCreporte(Integer creporte) { - this.creporte = creporte; - } - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - public CabRepDestruirArmasController getCabRepDestruirArmasController() { - return cabRepDestruirArmasController; - } - - public void setCabRepDestruirArmasController( - CabRepDestruirArmasController cabRepDestruirArmasController) { - this.cabRepDestruirArmasController = cabRepDestruirArmasController; - } - - public DetRepDestruirArmasController getDetRepDestruirArmasController() { - return detRepDestruirArmasController; - } - - public void setDetRepDestruirArmasController( - DetRepDestruirArmasController detRepDestruirArmasController) { - this.detRepDestruirArmasController = detRepDestruirArmasController; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public TarmCabRepDestruirArmas getCabRepDestruirArmasObj() { - return cabRepDestruirArmasObj; - } - - public void setCabRepDestruirArmasObj( - TarmCabRepDestruirArmas cabRepDestruirArmasObj) { - this.cabRepDestruirArmasObj = cabRepDestruirArmasObj; - } - - @Override - public void save() { - try { - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("BPMStatus", "A"); -// request.modifiedData().put("creporte", creporte); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", "Revision del supervisor militar"); - request.modifiedData().put("comment", ""); - request.modifiedData().put("observacion", ""); - Mapdatosmail = new HashMap(); - request.modifiedData().put("datosmail", datosmail); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + "CREPORTE: 1" ); - isDenied = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefCCController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefCCController.java.svn-base deleted file mode 100644 index f97b1c1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefCCController.java.svn-base +++ /dev/null @@ -1,305 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora de la revision de reporte de armas a destruirse por parte del jefe del comando conjunto - * @author JALVARADO - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RevisarRprteArmasADestJefCCController extends AbstractController { - - private Integer creporte; - private Date fechaCorte; - private String estado; - - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - **/ - private List laccion; - - /** - * Variable que indica si el funcionario esta negado para iniciar el flujo y enviar el reporte a su superior para aprobacion - */ - private Boolean isDenied; - - private String observacion; - - private TarmCabRepDestruirArmas tarmCabRepDestruirArmas; - - @ManagedProperty(value="#{cabRepDestruirArmasController}") - private CabRepDestruirArmasController cabRepDestruirArmasController; - - @ManagedProperty(value="#{detRepDestruirArmasController}") - private DetRepDestruirArmasController detRepDestruirArmasController; - - @ManagedProperty(value="#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - - public RevisarRprteArmasADestJefCCController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - super.startQuery(); - if(this.getMfilters().get("creporte")!=null){ - creporte = Integer.parseInt(this.getMfilters().get("creporte")); - } - if(creporte!=null){ - this.getMfilters().clear(); - this.init(); - this.querydatabase(); - } - else{ - detRepDestruirArmasController.setLrecord(new ArrayList()); - } - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - isDenied = Boolean.FALSE; - tarmCabRepDestruirArmas = CabRepDestruirArmasController.findByCodigo(creporte.toString()); - detRepDestruirArmasController.addFilter("creporte", creporte.toString()); - detRepDestruirArmasController.query(); - TgeneParameters tgeneparam=ParametersController.find("CODIGO.AR", "1"); - laccion=CatalogDetailController.find("ESTADOSOLICITUD",tgeneparam.getTextvalue()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.next(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - public void previous(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.previous(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - protected void querydatabase() { - - } - - public Integer getCreporte() { - return creporte; - } - - public void setCreporte(Integer creporte) { - this.creporte = creporte; - } - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - public CabRepDestruirArmasController getCabRepDestruirArmasController() { - return cabRepDestruirArmasController; - } - - public void setCabRepDestruirArmasController( - CabRepDestruirArmasController cabRepDestruirArmasController) { - this.cabRepDestruirArmasController = cabRepDestruirArmasController; - } - - public DetRepDestruirArmasController getDetRepDestruirArmasController() { - return detRepDestruirArmasController; - } - - public void setDetRepDestruirArmasController( - DetRepDestruirArmasController detRepDestruirArmasController) { - this.detRepDestruirArmasController = detRepDestruirArmasController; - } - - public TarmCabRepDestruirArmas getTarmCabRepDestruirArmas() { - return tarmCabRepDestruirArmas; - } - - public void setTarmCabRepDestruirArmas( - TarmCabRepDestruirArmas tarmCabRepDestruirArmas) { - this.tarmCabRepDestruirArmas = tarmCabRepDestruirArmas; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - if(observacion!=null){ - request.modifiedData().put("observacion", observacion); - tarmCabRepDestruirArmas.setObsjefecc(observacion); - tarmCabRepDestruirArmas.setIsnew(Boolean.FALSE); - cabRepDestruirArmasController.update(tarmCabRepDestruirArmas); - DtoSave dtoSaveCAC = cabRepDestruirArmasController.getDtoSave(); - if(dtoSaveCAC.pendingProcess()){ - dtoSaveCAC.setPosition(1); - msave.put(cabRepDestruirArmasController.getBeanalias(), dtoSaveCAC); - } - } - // Si el reporte es rechazado se vuelven las armas del reporte a la lista de armas para ser seleccionadas en nuevos reportes - if (!codigoAceptado().equals(estado)){ - for(TarmDetRepDestruirArmas armasDecomRprteObj:detRepDestruirArmasController.getLrecord()){ - TarmDecomisoArma armasDecomisadasObj = DecomisoArmaController.findByCodigo(armasDecomRprteObj.getCdecomisoarma()); - armasDecomisadasObj.setAdestruirse(null); - armasDecomisadasObj.setAdestruirsecode(null); - armasDecomisadasObj.setIsnew(Boolean.FALSE); - decomisoArmaController.update(armasDecomisadasObj); - } - DtoSave dtoSaveDAC = decomisoArmaController.getDtoSave(); - if(dtoSaveDAC.pendingProcess()){ - dtoSaveDAC.setPosition(2); - msave.put(decomisoArmaController.getBeanalias(), dtoSaveDAC); - } - } - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.cabRepDestruirArmasController.postCommit(resp); - this.decomisoArmaController.postCommit(resp); - this.setShowRow(true); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - completarTarea(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - - super.cleanRequest(request); - // validamos si cargamos los datos cuando apruebe - Mapdatosmail = new HashMap(); - request.modifiedData().put("TID", tid); - request.modifiedData().put("creporte", creporte); - request.modifiedData().put("BPMObs", observacion); - if (codigoAceptado().equals(estado)) { - request.modifiedData().put("BPMStatus", "A"); - }else{ - request.modifiedData().put("BPMStatus", "D"); - } - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + "jefe dpto - CREPORTE: " + creporte); - isDenied = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefDepController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefDepController.java.svn-base deleted file mode 100644 index ef611b1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/RevisarRprteArmasADestJefDepController.java.svn-base +++ /dev/null @@ -1,308 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.soli.TarmCabRepDestruirArmas; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDetRepDestruirArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora de la revision de reporte de armas a destruirse por parte del jefe de departamento - * @author JALVARADO - * - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class RevisarRprteArmasADestJefDepController extends AbstractController { - - private Integer creporte; - private Date fechaCorte; - private String estado; - - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - **/ - private List laccion; - - /** - * Variable que indica si el funcionario esta negado para iniciar el flujo y enviar el reporte a su superior para aprobacion - */ - private Boolean isDenied; - - private String observacion; - - private TarmCabRepDestruirArmas tarmCabRepDestruirArmas; - - @ManagedProperty(value="#{cabRepDestruirArmasController}") - private CabRepDestruirArmasController cabRepDestruirArmasController; - - @ManagedProperty(value="#{detRepDestruirArmasController}") - private DetRepDestruirArmasController detRepDestruirArmasController; - - @ManagedProperty(value="#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - - public RevisarRprteArmasADestJefDepController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - super.startQuery(); - if(this.getMfilters().get("creporte")!=null){ - creporte = Integer.parseInt(this.getMfilters().get("creporte")); - } - if(creporte!=null){ - this.getMfilters().clear(); - this.init(); - this.querydatabase(); - } - else{ - detRepDestruirArmasController.setLrecord(new ArrayList()); - } - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - isDenied = Boolean.FALSE; - tarmCabRepDestruirArmas = CabRepDestruirArmasController.findByCodigo(creporte.toString()); - detRepDestruirArmasController.addFilter("creporte", creporte.toString()); - detRepDestruirArmasController.query(); - TgeneParameters tgeneparam=ParametersController.find("CODIGO.AR", "1"); - laccion=CatalogDetailController.find("ESTADOSOLICITUD",tgeneparam.getTextvalue()); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.next(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - public void previous(){ - try { - if(creporte!=null){ - this.detRepDestruirArmasController.previous(); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - protected void querydatabase() { - - } - - public Integer getCreporte() { - return creporte; - } - - public void setCreporte(Integer creporte) { - this.creporte = creporte; - } - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - public CabRepDestruirArmasController getCabRepDestruirArmasController() { - return cabRepDestruirArmasController; - } - - public void setCabRepDestruirArmasController( - CabRepDestruirArmasController cabRepDestruirArmasController) { - this.cabRepDestruirArmasController = cabRepDestruirArmasController; - } - - public DetRepDestruirArmasController getDetRepDestruirArmasController() { - return detRepDestruirArmasController; - } - - public void setDetRepDestruirArmasController( - DetRepDestruirArmasController detRepDestruirArmasController) { - this.detRepDestruirArmasController = detRepDestruirArmasController; - } - - public TarmCabRepDestruirArmas getTarmCabRepDestruirArmas() { - return tarmCabRepDestruirArmas; - } - - public void setTarmCabRepDestruirArmas( - TarmCabRepDestruirArmas tarmCabRepDestruirArmas) { - this.tarmCabRepDestruirArmas = tarmCabRepDestruirArmas; - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - /** - * Metodo que retorna un parametro del sistema el cual es el codigo para Aprobar una solicitud en un flujo - **/ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - if(observacion!=null){ - request.modifiedData().put("observacion", observacion); - tarmCabRepDestruirArmas.setObsjefecc(observacion); - tarmCabRepDestruirArmas.setIsnew(Boolean.FALSE); - cabRepDestruirArmasController.update(tarmCabRepDestruirArmas); - DtoSave dtoSaveCAC = cabRepDestruirArmasController.getDtoSave(); - if(dtoSaveCAC.pendingProcess()){ - dtoSaveCAC.setPosition(1); - msave.put(cabRepDestruirArmasController.getBeanalias(), dtoSaveCAC); - } - } - // Si el reporte es rechazado se vuelven las armas del reporte a la lista de armas para ser seleccionadas en nuevos reportes - if (!codigoAceptado().equals(estado)){ - for(TarmDetRepDestruirArmas armasDecomRprteObj:detRepDestruirArmasController.getLrecord()){ - TarmDecomisoArma armasDecomisadasObj = DecomisoArmaController.findByCodigo(armasDecomRprteObj.getCdecomisoarma()); - armasDecomisadasObj.setAdestruirse(null); - armasDecomisadasObj.setAdestruirsecode(null); - armasDecomisadasObj.setIsnew(Boolean.FALSE); - decomisoArmaController.update(armasDecomisadasObj); - } - DtoSave dtoSaveDAC = decomisoArmaController.getDtoSave(); - if(dtoSaveDAC.pendingProcess()){ - dtoSaveDAC.setPosition(2); - msave.put(decomisoArmaController.getBeanalias(), dtoSaveDAC); - } - } - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.cabRepDestruirArmasController.postCommit(resp); - this.decomisoArmaController.postCommit(resp); - this.setShowRow(true); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - completarTarea(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - - super.cleanRequest(request); - // validamos si cargamos los datos cuando apruebe - Mapdatosmail = new HashMap(); - request.modifiedData().put("TID", tid); - request.modifiedData().put("creporte", creporte); - request.modifiedData().put("BPMObs", observacion); - if (codigoAceptado().equals(estado)) { - request.modifiedData().put("BPMStatus", "A"); - }else{ - request.modifiedData().put("BPMStatus", "D"); - } - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + "jefe dpto - CREPORTE: " + creporte); - isDenied = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionDecomisoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionDecomisoController.java.svn-base deleted file mode 100644 index 731e384..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionDecomisoController.java.svn-base +++ /dev/null @@ -1,148 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSancionDecomiso; - - - -/** - * Clase controladora del bean TarmSancionDecomiso. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SancionDecomisoController extends AbstractController { - - public SancionDecomisoController() throws Exception { - super(TarmSancionDecomiso.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - //super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SANCIONDECOMISO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.cdecomiso"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public List findxdecomiso(String cdecomiso){ - try {//TgeneCatalogDetailKey - SancionDecomisoController cc = new SancionDecomisoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.cdecomiso", cdecomiso); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmSancionDecomiso findsancionarmadec(String cdecomiso, String carma){ - try {//TgeneCatalogDetailKey - SancionDecomisoController cc = new SancionDecomisoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.cdecomiso", cdecomiso); - cc.addFilter("carma",carma); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionRecomendacionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionRecomendacionController.java.svn-base deleted file mode 100644 index 774a866..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionRecomendacionController.java.svn-base +++ /dev/null @@ -1,112 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSancionRecomendacion; - - - - -/** - * Clase controladora del bean TarmSancionRecomendacion. - * - * @author Andres Cevallos. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SancionRecomendacionController extends AbstractController { - - public SancionRecomendacionController() throws Exception { - super(TarmSancionRecomendacion.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SANCIONRECOMENDACION"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.cdecomiso"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionarController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionarController.java.svn-base deleted file mode 100644 index 53d76b4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SancionarController.java.svn-base +++ /dev/null @@ -1,1095 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.SancionarLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.DatosParaSancionesController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTipoSancion; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * @author Andres Cevallos - * Sanciona un arma - */ - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SancionarController extends AbstractController { - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - /** - * Boleano que activa el boton de generarreporte - */ - private Boolean reporte; - /** - * Codigo de Transaccion - */ - private Long cTransaccion; - /** - * Activa el boton enviar - */ - private String btnEnviar; - /** - * Controlador inyectado decomiso arma controller - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - @ManagedProperty(value = "#{sancionDecomisoController}") - private SancionDecomisoController sancionDecomisoController; - /** - * Controlador inyectado documento habilitante - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - /** - * controlador inyectado sancion recomendacion - */ - @ManagedProperty(value = "#{sancionRecomendacionController}") - private SancionRecomendacionController sancionRecomendacionController; - - @ManagedProperty(value = "#{armasController}") - private ArmasController armasController; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador inyectado sanciondecomiso controller - */ - private long cdocumentohabilitanteaut; - - private TarmArmas armaactual; - /** - * Instancia de la entidad Tarmdecomiso - */ - private TarmDecomiso decomiso; - /** - * Instancia de la entidad TarmDecomisoArma - */ - private Boolean sanc=false; - - private TcustPersonDetail personaUsuario; - /** - * Instancia de la entidad TarmDecomisoArma - */ - private TarmDecomisoArma decomisoArmaObj; - /** - * Instancia de la entidad TarmTipoArmaExplosivo - */ - private TarmTipoArmaExplosivo tipoarmaexplosivo; - - // private String tabid1 = "tabDetalleDeArmas"; - /** - * Bandera de tipo booleano para indicar si se ha grabado el reporte generado - * */ - private Boolean isEnableGrabar; - /** - * Bandera de tipo booleano para indicar que se debe deshabilitar el boton ENVIAR - * */ - private Boolean isEnableEnviar; - - private List autorizacion; - - private Boolean aut; - /** - * Atributo para listar las armas decomisadas - */ - private List larmas; - /** - * Instancia de una lista de tipo de sancion - */ - private List tsancion1; - /** - * Provincia - */ - private String provincia; - /** - * Instan de un tipo de sancion - */ - private TarmTipoSancion sancion; - /** - * Canton - */ - private TarmCentroControl centroControl; - - private String canton; - /** - * Ciudad - */ - private String ciudad; - /** - * Parroquia - */ - private String parroquia; - /** - * Clase de arma - */ - private String clasearma; - /** - * Detalle de grado - */ - private TgeneCatalogDetail gradoCatalogDatail; - /** - * Detalle de unidad - */ - private TgeneCatalogDetail unidadCatalogDatail; - - private TsafeUserDetail userDetail; - /** - * Atributo asociado a al documento de la utorizacion que se seleccione - */ - private TarmTramite tramite; - /** - *Tipo de sancion, a la autorización o al permiso - */ - private String tipsancion=""; - - private TarmRegistroArmas regarma; - - private List documentos; - - //private TarmDocumentoHabilitante doc1; - - private String institucionCentroControl=""; - - /** - * Bandera usada para identificar si existe o no un documento habilitante para el arma a sancionarse - */ - private Boolean isExistDocHabilitante = Boolean.FALSE; - - private TcustPersonDetail responsableCentroControl= null; - private Boolean grillaAut; - private String sanciontipo; - - @Override - public void query() { - - } - - @Override - protected void querydatabase() { - } - - public SancionarController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - //cDecomiso=(long)376; - cTransaccion=Long.parseLong(super.getMfilters().get("numerotransaccion")); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - aut=false; - userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - isEnableGrabar=Boolean.TRUE; - isEnableEnviar=Boolean.FALSE; - grillaAut=true; - larmas=new ArrayList(); - personaUsuario=PersonDetailController.find(userDetail.getPk().getPersoncode().toString()); -// //lista de las armas decomisadas -// List lRecepcionArmasDetalle = DecomisoArmaController.findByCodigoDecomiso(cDecomiso.toString()); - List lRecepcionArmasDetalle = DecomisoArmaController.findArmasPorSancionar(cTransaccion); - for(TarmDecomisoArma decomisoArmaDetalle : lRecepcionArmasDetalle ){ - TarmArmas arma = ArmasController.findPorCodigo(decomisoArmaDetalle.getCarma()); - TarmRegistroArmas regarmaa= RegistroArmController.findByCodigo(arma.getCregistro().toString()); - arma.getModifiedData().put("tipoarmaexplosivos", TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo())); - TarmTipoArmaExplosivo tipoarmaexplosivo = (TarmTipoArmaExplosivo) arma.getModifiedData().get("tipoarmaexplosivos"); - String clasearma = CatalogDetailController.findxCodigoCodcatalogo(tipoarmaexplosivo.getClase(), tipoarmaexplosivo.getClasecodigo()).getDescription(); - - arma.getModifiedData().put("clase", clasearma); - // arma.getModifiedData().put("tsancion", DatosParaSancionesController.find(tipoarmaexplosivo.getClase())); - arma.getModifiedData().put("persona", regarmaa.getPersoncode().toString()); - -// if(SancionDecomisoController.findsancionarmadec(cDecomiso.toString(),arma.getPk().toString()) != null){ - if(SancionDecomisoController.findsancionarmadec(decomisoArmaDetalle.getCdecomiso().toString(),arma.getPk().toString()) != null){ - arma.getModifiedData().put("sancionada", "true"); - } - //seteo del deomiso del arma TarmDecomiso - arma.getModifiedData().put("decomisoArma", decomisoArmaDetalle); - larmas.add(arma); - } - // sancion=new TarmTipoSancion(); - btnEnviar=null; - checkenviar(); -// } -// else{ -// MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numReciboNoRegistrado")); -// } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void checkenviar(){ - for(TarmArmas arm : larmas){ - if(arm.getModifiedData().get("sancionada")==null || arm.getModifiedData().get("sancionada").toString()!="true") - {return;} - } - isEnableEnviar=Boolean.TRUE; - btnEnviar="ok"; - } - - /** - * Metodo para seleccionar el documento en el combo de la autorizacion - * @throws Exception - */ - @SuppressWarnings("static-access") - public void changetype() throws Exception{ - if( cdocumentohabilitanteaut!=0){ - documentoHabilitanteController.setRecord(documentoHabilitanteController.find(cdocumentohabilitanteaut+"")); - tramite=TarmTramiteController.find(documentoHabilitanteController.getRecord().getCtramite().toString()); - isExistDocHabilitante = Boolean.TRUE; - tipsancion="AUTORIZACION"; - sancion=new TarmTipoSancion(); - } - else{ - tramite= new TarmTramite(); - documentoHabilitanteController.setRecord(null); - //cuando no tiene asociado a un documento - sancion=DatosParaSancionesController.findxPk("0"); - sancion.getModifiedData().put("nfalta", null); - sancion.getModifiedData().put("ntipoFalta", null); - sancionDecomisoController.create(); - - btnEnviar="true"; - tipsancion=""; - isExistDocHabilitante = Boolean.FALSE; - } - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - /** - * Sancion Aplicada al permiso - */ - @SuppressWarnings("unchecked") - public void sancionarPermiso(TarmArmas armar){ - //inicializamos las variables - TarmDecomisoArma decomisoArmaSel = (TarmDecomisoArma) armar.getModifiedData().get("decomisoArma"); - decomiso = DecomisoController.findByCodigo(decomisoArmaSel.getCdecomiso().toString()); - - provincia = ProvinceController.getDescProvByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode()); - canton = CantonController.getDescCantonByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode()); - ciudad = CityController.getDescCiudadByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getCitycode()); - parroquia = ParroquiaController.getDescParroquiaByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getParroquiacode()); - gradoCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(decomiso.getGradofuncionario(), decomiso.getGradofuncionariocode()); - TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(decomiso.getCcentrocontrol()); - unidadCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - - tramite=new TarmTramite(); - documentoHabilitanteController.setRecord(null); - sancion=null; - regarma=null; - cdocumentohabilitanteaut=0; - sancionRecomendacionController.clearAll(); - autorizacion= new ArrayList(); - - //arma actual - armaactual=armar; - reporte=Boolean.FALSE; - //registro del arma obtiene el codigo del propietario del arma - regarma= RegistroArmController.findByCodigo(armar.getCregistro().toString()); - tipoarmaexplosivo = (TarmTipoArmaExplosivo) armar.getModifiedData().get("tipoarmaexplosivos"); - //clase del arma - clasearma = CatalogDetailController.findxCodigoCodcatalogo(tipoarmaexplosivo.getClase(), tipoarmaexplosivo.getClasecodigo()).getDescription(); - //tsancion=(List) armar.getModifiedData().get("tsancion"); - //documento habilitante por codigo del arma y codigo de la persona - System.out.println("codigo de la persona: "+armaactual.getModifiedData().get("persona")+" - codigo arma: "+ armaactual.getCodigoarma()); - TarmDocumentoHabilitante permiso=null; - if(armaactual.getModifiedData().get("persona")!=null && armaactual.getCodigoarma()!=null){ - permiso = DocumentoHabilitanteController.findxarma(armaactual.getCodigoarma(),armaactual.getModifiedData().get("persona").toString()); - } - //lista de documentos habilitantes por codigo de la persona (lista las autorizaciones para el combo del dialog) 1 TIPOAUTORIZACION 0 AUTORIZACION - if(armaactual.getModifiedData().get("persona")!=null && permiso==null){ - autorizacion=DocumentoHabilitanteController.findPorPersoncodeaut(armaactual.getModifiedData().get("persona").toString()); - } - try { - //se crea la sancion - sancionDecomisoController.create(); - sancionDecomisoController.getRecord().setFechainicio(new java.sql.Date(new Date().getTime())); - //no tiene documents - if(permiso==null && autorizacion.isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_nopermiso")); - //no tiene documentos la sancion va por default - sancion=DatosParaSancionesController.findxPk("0"); - sancion.getModifiedData().put("nfalta", null); - sancion.getModifiedData().put("ntipoFalta", null); - - btnEnviar="true"; - aut=Boolean.FALSE; - tipsancion="AUTORIZACION"; - //ltramite="1"; - isExistDocHabilitante = Boolean.FALSE; - } - else if(permiso!=null) { - aut=Boolean.FALSE; - sancion=new TarmTipoSancion(); -// permiso.setEstado("SAN"); - documentoHabilitanteController.setRecord(permiso); - //consulta el tramite - tramite=TarmTramiteController.find(documentoHabilitanteController.getRecord().getCtramite().toString()); - sancionDecomisoController.getRecord().setCdocumento(documentoHabilitanteController.getRecord().getPk()); - tipsancion="PERMISO"; - //ltramite="6"; - isExistDocHabilitante=Boolean.TRUE; - //limpiamos la list - autorizacion=new ArrayList(); - }else{ - //no tiene documentos la sancion va por default - sancion=DatosParaSancionesController.findxPk("0"); - sancion.getModifiedData().put("nfalta", null); - sancion.getModifiedData().put("ntipoFalta", null); - //documentoHabilitanteController.setRecord(new TarmDocumentoHabilitante()); - - isExistDocHabilitante = Boolean.FALSE; - //ltramite="1"; - aut=Boolean.TRUE; - // isExistDocHabilitante=Boolean.TRUE; - } - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Carga los datos de la sancion dentro del lrecord - */ - public void actualizarSancion(){ - if(sancion==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_ingresesancion")); - return; - } - try { - TgeneCatalogDetail tiempo= CatalogDetailController.findxCodigoCodcatalogo(sancion.getTiempo(), sancion.getTiempocodigo()); - Calendar calendario = Calendar.getInstance(); - if(sancionDecomisoController.getRecord()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_ingresesancion")); - return; - } - try{ - calendario.add(Calendar.DAY_OF_YEAR,Integer.parseInt(tiempo.getDescription())); - } - catch(Exception e){ - e.printStackTrace(); - MessageHelper.setMessageError("EL CATALOGO SE ENCUENTRA MAL PARAMETRIZADO"); - return; - } - Date fechalaboral=calendario.getTime(); - sancionDecomisoController.getRecord().setCtiposancion(sancion.getPk()); - sancionDecomisoController.getRecord().getPk().setCdecomiso(decomiso.getPk()); - // PENDIENTE CFPH LINEA SUPERIOS COMENTADA - sancionDecomisoController.getRecord().setPersoncode(regarma.getPersoncode()); - sancionDecomisoController.getRecord().setFechafinal(new java.sql.Date(fechalaboral.getTime())); - sancionDecomisoController.getRecord().setCarma(armaactual.getPk()); - if(documentoHabilitanteController!=null && documentoHabilitanteController.getRecord()!=null && documentoHabilitanteController.getRecord().getPk()!=null){ - sancionDecomisoController.getRecord().setCdocumento(documentoHabilitanteController.getRecord().getPk()); - //documento - if(documentoHabilitanteController!=null){ - if(sancion.getSancion()=="1" || sancion.getSancion()=="1") - documentoHabilitanteController.getRecord().setEstado("CAN"); - else{ - documentoHabilitanteController.getRecord().setEstado("SUS"); - } - } - documentoHabilitanteController.update(); - } - //seteamos el ARMA DECOMISADA - sancionDecomisoController.getRecord().getModifiedData().put("arma", armaactual); - //lista de las RECOMENDACIONES - sancionDecomisoController.getRecord().getModifiedData().put("recomendaciones", sancionRecomendacionController.getLrecord()); - sancionDecomisoController.update(); - - sanc=true; - //graba la sancion - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Crea una nueva recomendacion - */ - public void createRecomendacion(){ - try { - sancionRecomendacionController.create(); - sancionRecomendacionController.getRecord().setPersoncode(personaUsuario.getPk().getPersoncode()); - sancionRecomendacionController.getRecord().getModifiedData().put("usuario", personaUsuario.getName()); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Guarda la recomendacion en el lrecord de sanciones - */ - public void actualizarRecomendacion(){ - try { - sancionRecomendacionController.update(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Obtiene los datos del lov de sancion - * @param event - * @throws Exception - */ - public void onReturnSancionLov(SelectEvent event) throws Exception{ - sancion=(TarmTipoSancion) event.getObject(); - - } - - /** - * Abre el Lov de Sanciones - */ - public void openSancionarLov() { - if(tramite==null || tramite.getTipoautorizacion()==null){ - MessageHelper.setMessageError("DOCUMENTO SIN SIN TRAMITE"); - return; - } - if(tipoarmaexplosivo==null || tipoarmaexplosivo.getClase()==null){ - MessageHelper.setMessageError("ARMA SIN CLASE"); - return; - } - Map> params = new HashMap<>(); - - List tramitePa = new ArrayList(); - tramitePa.add(tramite.getTipoautorizacion()); - params.put("tramite", tramitePa); - List clasePa = new ArrayList(); - clasePa.add(tipoarmaexplosivo.getClase()); - params.put("clase", clasePa); - System.out.println("Tramite: "+tramite.getTipoautorizacion()+" clase arma: "+tipoarmaexplosivo.getClase()); - SancionarLovController.openLov(params);//, tipoarmaexplosivo, tsancion, - } - - public void reporteSancion(){ - String gradoUsuario =""; - - Calendar fechaActualCldr = Calendar.getInstance(); - String path = "armas/reports/sancionReporte"; - String filename="Sancion"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - String nombreUsuario; - if(userDetail.getPk().getPersoncode()!=null){ - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } - else{ - nombreUsuario = ""; - } - parameters.put("usuario", nombreUsuario); - //Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.DAY_OF_MONTH)) : (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH)+1) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MONTH) + 1) : (fechaActualCldr.get(Calendar.MONTH)+1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0" + (fechaActualCldr.get(Calendar.MINUTE)) : (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - // parameters.put("transaccion",numeroTransaccionEnvioConvertido); - String format="pdf"; - - InputStream file =this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - String xpathflujo = generarXpath(); - - alfrescoController.uploadFile(file,filename+".pdf",xpathflujo); - // iniciarFlujo(xpathflujo+"/cm:"+numeroTransaccionEnvioConvertido+ ".pdf");//="cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf" - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - finally{ - reporte=Boolean.FALSE; - } - } - - /** - * Metodo para generar la ruta del alfresco - * @return - */ - public String generarXpath(){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Decomiso"); - String centrocontrol=institucionCentroControl.replaceAll("\\s+", "_"); - ruta = ruta.append("/cm:").append(centrocontrol); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - - return ruta.toString(); - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save() { - if(sancionDecomisoController.getLrecord()==null || sancionDecomisoController.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_realiceunasancion")); - return; - } - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - //cargado las sanciones - DtoSave dtosaveSancionDecomiso = sancionDecomisoController.getDtoSave(); - dtosaveSancionDecomiso.setPosition(1); - msave.put(this.sancionDecomisoController.getBeanalias(), dtosaveSancionDecomiso); - - //cargado las recomendaciones - DtoSave dtosaveSancionRecomend = sancionRecomendacionController.getDtoSave(); - dtosaveSancionRecomend.setPosition(2); - msave.put(this.sancionRecomendacionController.getBeanalias(), dtosaveSancionRecomend); - - //cargado para actualizarse - DtoSave dtosaveDocumentoHabilitante= documentoHabilitanteController.getDtoSave(); - dtosaveDocumentoHabilitante.setPosition(3); - msave.put(this.documentoHabilitanteController.getBeanalias(), dtosaveDocumentoHabilitante); - - //decomiso del arma(vacio) - DtoSave dtosaveDecomisoArma= decomisoArmaController.getDtoSave(); - dtosaveDecomisoArma.setPosition(4); - msave.put(this.decomisoArmaController.getBeanalias(), dtosaveDecomisoArma); - - //arma(vacio) - DtoSave dtosaveArmasController= armasController.getDtoSave(); - dtosaveArmasController.setPosition(5); - msave.put(this.armasController.getBeanalias(), dtosaveArmasController); - - request.setSaveTables(msave); - // query transaction Sancionar - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.sancionDecomisoController.postCommit(resp); - sancionDecomisoController.clearAll(); - this.sancionRecomendacionController.postCommit(resp); - sancionRecomendacionController.clearAll(); - this.documentoHabilitanteController.postCommit(resp); - this.decomisoArmaController.postCommit(resp); - this.armasController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - reporte=Boolean.TRUE; - //cambio a sancionada el arma - for(TarmArmas arma:larmas){ - if(arma.getPk().equals(armaactual.getPk())){ - arma.getModifiedData().put("sancionada", "true"); - } - } - checkenviar(); - //reporteSancion(); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - finally{ - btnEnviar="true"; - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); -// request.modifiedData().put("cdecomiso",cDecomiso); - request.modifiedData().put("TID", tid); - request.modifiedData().put("isnew", "Y"); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs",bpmDataComment == null ? "OK" : bpmDataComment); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnEnviar=null; - isEnableEnviar = Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Seleccionar Arma para sancionarla - * @param event - */ - public void seleccionarArma1212(AjaxBehaviorEvent event){ - try { - SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent(); - decomisoArmaObj = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj"); - boolean checked = (Boolean) booleanCheckbox.getValue(); - if (checked) { - decomisoArmaObj.setEnbodega("Y"); - }else{ - decomisoArmaObj.setEnbodega(null); - } - decomisoArmaController.update(decomisoArmaObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Sancion Para la autorizacion - * @param pCdocumento - */ - public void sancionarAutorizaciona121212(Long pCdocumento){ - try { - sancionDecomisoController.create(); - sancionDecomisoController.getRecord().setCdocumento(pCdocumento); - tipsancion="AUTORIZACION"; - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Busca la sancion - */ - public void changeType1212(){ - sancion=DatosParaSancionesController.findxPk(sancion.getPk()); - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public TarmDecomiso getDecomiso() { - return decomiso; - } - - public void setDecomiso(TarmDecomiso decomiso) { - this.decomiso = decomiso; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getParroquia() { - return parroquia; - } - - public void setParroquia(String parroquia) { - this.parroquia = parroquia; - } - - public TgeneCatalogDetail getGradoCatalogDatail() { - return gradoCatalogDatail; - } - - public void setGradoCatalogDatail(TgeneCatalogDetail gradoCatalogDatail) { - this.gradoCatalogDatail = gradoCatalogDatail; - } - - public TgeneCatalogDetail getUnidadCatalogDatail() { - return unidadCatalogDatail; - } - - public void setUnidadCatalogDatail(TgeneCatalogDetail unidadCatalogDatail) { - this.unidadCatalogDatail = unidadCatalogDatail; - } - - - - public TarmDecomisoArma getDecomisoArmaObj() { - return decomisoArmaObj; - } - - public void setDecomisoArmaObj(TarmDecomisoArma decomisoArmaObj) { - this.decomisoArmaObj = decomisoArmaObj; - } - - - - public SancionDecomisoController getSancionDecomisoController() { - return sancionDecomisoController; - } - - public void setSancionDecomisoController( - SancionDecomisoController sancionDecomisoController) { - this.sancionDecomisoController = sancionDecomisoController; - } - - public SancionRecomendacionController getSancionRecomendacionController() { - return sancionRecomendacionController; - } - - public void setSancionRecomendacionController( - SancionRecomendacionController sancionRecomendacionController) { - this.sancionRecomendacionController = sancionRecomendacionController; - } - - public String getClasearma() { - return clasearma; - } - - public void setClasearma(String clasearma) { - this.clasearma = clasearma; - } - -// public List getTsancion() { -// return tsancion; -// } -// -// public void setTsancion(List tsancion) { -// this.tsancion = tsancion; -// } - - public TarmTipoSancion getSancion() { - return sancion; - } - - public void setSancion(TarmTipoSancion sancion) { - this.sancion = sancion; - } - - public String getSanciontipo() { - return sanciontipo; - } - - public void setSanciontipo(String sanciontipo) { - this.sanciontipo = sanciontipo; - } - - public Boolean getGrillaAut() { - return grillaAut; - } - - public void setGrillaAut(Boolean grillaAut) { - this.grillaAut = grillaAut; - } - -// public Long getcDecomiso() { -// return cDecomiso; -// } -// -// public void setcDecomiso(Long cDecomiso) { -// this.cDecomiso = cDecomiso; -// } - - public String getBtnEnviar() { - return btnEnviar; - } - - public Long getcTransaccion() { - return cTransaccion; - } - - public void setcTransaccion(Long cTransaccion) { - this.cTransaccion = cTransaccion; - } - - public void setBtnEnviar(String btnEnviar) { - this.btnEnviar = btnEnviar; - } - - public List getDocumentos() { - return documentos; - } - - public void setDocumentos(List documentos) { - this.documentos = documentos; - } - - - public String getTipsancion() { - return tipsancion; - } - - public void setTipsancion(String tipsancion) { - this.tipsancion = tipsancion; - } - - public Boolean getSanc() { - return sanc; - } - - public void setSanc(Boolean sanc) { - this.sanc = sanc; - } - - public Boolean getIsExistDocHabilitante() { - return isExistDocHabilitante; - } - - public void setIsExistDocHabilitante(Boolean isExistDocHabilitante) { - this.isExistDocHabilitante = isExistDocHabilitante; - } - - public Boolean getIsEnableGrabar() { - return isEnableGrabar; - } - - public void setIsEnableGrabar(Boolean isEnableGrabar) { - this.isEnableGrabar = isEnableGrabar; - } - - public Boolean getIsEnableEnviar() { - return isEnableEnviar; - } - - public void setIsEnableEnviar(Boolean isEnableEnviar) { - this.isEnableEnviar = isEnableEnviar; - } - - public List getLarmas() { - return larmas; - } - - public void setLarmas(List larmas) { - this.larmas = larmas; - } - - public TarmRegistroArmas getRegarma() { - return regarma; - } - - public void setRegarma(TarmRegistroArmas regarma) { - this.regarma = regarma; - } - - public TarmArmas getArmaactual() { - return armaactual; - } - - public void setArmaactual(TarmArmas armaactual) { - this.armaactual = armaactual; - } - - public List getAutorizacion() { - return autorizacion; - } - - public void setAutorizacion(List autorizacion) { - this.autorizacion = autorizacion; - } - - public long getCdocumentohabilitanteaut() { - return cdocumentohabilitanteaut; - } - - public void setCdocumentohabilitanteaut(long cdocumentohabilitanteaut) { - this.cdocumentohabilitanteaut = cdocumentohabilitanteaut; - } - - public Boolean getAut() { - return aut; - } - - public void setAut(Boolean aut) { - this.aut = aut; - } - - public TarmCentroControl getCentrocontrol() { - return centroControl; - } - - public void setCentrocontrol(TarmCentroControl centrocontrol) { - this.centroControl = centrocontrol; - } - - public Boolean getReporte() { - return reporte; - } - - public void setReporte(Boolean reporte) { - this.reporte = reporte; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public TarmTipoArmaExplosivo getTipoarmaexplosivo() { - return tipoarmaexplosivo; - } - - public void setTipoarmaexplosivo(TarmTipoArmaExplosivo tipoarmaexplosivo) { - this.tipoarmaexplosivo = tipoarmaexplosivo; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public TcustPersonDetail getResponsableCentroControl() { - return responsableCentroControl; - } - - public void setResponsableCentroControl( - TcustPersonDetail responsableCentroControl) { - this.responsableCentroControl = responsableCentroControl; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - public ReportController getReportController() { - return reportController; - } - - public ArmasController getArmasController() { - return armasController; - } - - public void setArmasController(ArmasController armasController) { - this.armasController = armasController; - } - - public TcustPersonDetail getPersonaUsuario() { - return personaUsuario; - } - - public void setPersonaUsuario(TcustPersonDetail personaUsuario) { - this.personaUsuario = personaUsuario; - } - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudAgenciaSucursalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudAgenciaSucursalController.java.svn-base deleted file mode 100644 index 1f46ee6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudAgenciaSucursalController.java.svn-base +++ /dev/null @@ -1,150 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; - -/** - * Controlador que maneja {@link TarmSolicitudAgenciaSucursal} - * @author dcruz - * - */ -@ManagedBean -@ViewScoped -public class SolicitudAgenciaSucursalController extends - AbstractController { - - private static final long serialVersionUID = 1L; - - public SolicitudAgenciaSucursalController() throws Exception { - super(TarmSolicitudAgenciaSucursal.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); -// this.querydatabase(); - } - - private void init(){ - this.lrecord = new ArrayList<>(); - this.beanalias = "SOLICITUDAGENCIA"; - this.recperpage = 15; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto);//se puede aniadir mas tablas - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0){ - this.lrecord = new ArrayList<>(); - MessageHelper.setMessageError(response); - } else{ - this.lrecord = (List) response.get(beanalias); - this.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - SubQuery subQueryNombre = new SubQuery("TarmAgenciaSucursal","nombre","nombre"," i.pk=t.pk.cagencia"); - dto.addSubQuery(subQueryNombre); - - SubQuery subQueryResponsable = new SubQuery("TarmAgenciaSucursal","responsable","responsable"," i.pk=t.pk.cagencia"); - dto.addSubQuery(subQueryResponsable); - - SubQuery subQueryTipo = new SubQuery("TgeneCatalogDetail", "description", "ntipo", "i.pk.catalog = (select o.tipo from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.catalogcode=(select o.tipocodigo from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryTipo); - SubQuery subQueryEstado = new SubQuery("TgeneCatalogDetail", "description", "nestado", "i.pk.catalog = (select o.estado from TarmAgenciaSucursal o where o.pk=t.pk.cagencia) " - + " and i.pk.catalogcode=(select o.estadocodigo from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryEstado); - SubQuery subQueryProvincia = new SubQuery("TgeneProvince", "description", "nprovincia", "i.pk.provincecode=(select o.provincecode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.countrycode= (select o.countrycode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryProvincia); - SubQuery subQueryCanton = new SubQuery("TgeneCanton", "description", "ncanton", "i.pk.countrycode= (select o.countrycode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.provincecode=(select o.provincecode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.cantoncode= (select o.cantoncode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryCanton); - SubQuery subQueryParroquia = new SubQuery("TgeneParroquia","description","nparroquia","i.pk.countrycode= (select o.countrycode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia) " - + " and i.pk.provincecode=(select o.provincecode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia) " - + " and i.pk.cantoncode= (select o.cantoncode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia) " - + " and i.pk.parroquiacode=(select o.parroquiacode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryParroquia); - SubQuery subQueryCiudad = new SubQuery("TgeneCity","description","nciudad","i.pk.countrycode= (select o.countrycode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia) " - + " and i.pk.provincecode=(select o.provincecode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.cantoncode=(select o.cantoncode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)" - + " and i.pk.citycode=(select o.citycode from TarmAgenciaSucursal o where o.pk=t.pk.cagencia)"); - dto.addSubQuery(subQueryCiudad); - return dto; - } - - - @Override - public void save() { - try { - DtoSave dto = super.getDtoSave(); - if(!dto.pendingProcess()){ - return; - } - HashMap msaves = new HashMap(); - msaves.put(beanalias, dto); - Request request = callerhelper.getRequest(); - request.setSaveTables(msaves); - Response response = callerhelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - this.postCommit(response); - MessageHelper.setMessageInfo(response); - } else{ - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return List - */ - public static List findPorSolicitud(String solicitudCode) { - try { - SolicitudAgenciaSucursalController cc = new SolicitudAgenciaSucursalController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasBPMController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasBPMController.java.svn-base deleted file mode 100644 index 8459b10..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasBPMController.java.svn-base +++ /dev/null @@ -1,175 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.util.EstadosSolicitudBPM; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; - -/** - * Clase controladora del bean TarmSolicitud. - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudArmasBPMController extends AbstractController { - - - - public SolicitudArmasBPMController() throws Exception { - super(TarmSolicitud.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); -// beanalias = "SOLICITUDBPM"; -// listaEstadoSolicitud= new ArrayList(); - this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { -// listaEstadoSolicitud = new ArrayList<>(); - DtoQuery dto = super.getDtoQuery(true); - dto.setMultirecord(false); - //nombre - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identification", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalog= new SubQuery - ("TcustPersonDetail", "identificationcatalog", "identificationcatalog", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalogcode= new SubQuery - ("TcustPersonDetail", "identificationcatalogcode", "identificationcatalogcode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - //tramite -// TarmTramite - SubQuery codigoTramite= new SubQuery - ("TarmTramite", "pk", "pk", "i.pk = t.ctramite"); - SubQuery tramitetipoautorizacion= new SubQuery - ("TarmTramite", "tipoautorizacion", "tipoautorizacion", "i.pk = t.ctramite"); - SubQuery tramitetipoautorizacioncode= new SubQuery - ("TarmTramite","tipoautorizacioncodigo", "tipoautorizacioncodigo", "i.pk = t.ctramite"); - SubQuery tramitecategoria= new SubQuery - ("TarmTramite", "categoria", "categoria", "i.pk = t.ctramite"); - SubQuery tramitecategoriacodigo= new SubQuery - ("TarmTramite","categoriacodigo", "categoriacodigo", "i.pk = t.ctramite"); - SubQuery tramiteusoactividad= new SubQuery - ("TarmTramite", "usoactividad", "usoactividad", "i.pk = t.ctramite"); - SubQuery tramiteusoactividadcodigo= new SubQuery - ("TarmTramite","usoactividadcodigo", "usoactividadcodigo", "i.pk = t.ctramite"); - //estado - SubQuery estado= new SubQuery("TgeneCatalogDetail","description","estadoSolicitud","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(estado); - - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(snombre); - dto.addSubQuery(identificationcatalog); - dto.addSubQuery(identificationcatalogcode); - - dto.addSubQuery(codigoTramite); - dto.addSubQuery(tramitetipoautorizacion); - dto.addSubQuery(tramitetipoautorizacioncode); - dto.addSubQuery(tramitecategoria); - dto.addSubQuery(tramitecategoriacodigo); - dto.addSubQuery(tramiteusoactividad); - dto.addSubQuery(tramiteusoactividadcodigo); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); -// request.put("queryalias", "ESTADOSSOLICITUDBPMQUERY"); -// request.put("codigosolicitudbpm", this.getMfilters().get("numerosolicitud")); - - Response resp = callerhelper.executeQuery(request); -// if(resp.get("LISTASESTADOSOLICITUDBPM")!=null){ -// System.out.println("------------"+resp.get("LISTASESTADOSOLICITUDBPM").toString()); -// List listaEstadosSolicitud = (List)resp.get("LISTASESTADOSOLICITUDBPM"); -// for (Object[] item : listaEstadosSolicitud) { -// EstadosSolicitudBPM estados = new EstadosSolicitudBPM(); -// estados.setActividad(item[0]!=null?item[0].toString():""); -// estados.setUsuarioasignado(item[1]!=null?item[1].toString():""); -// estados.setGrupoasignado(item[2]!=null?item[2].toString():""); -// estados.setEstado(item[3]!=null?item[3].toString():""); -// estados.setFechacreacion(item[4]!=null?(Date)item[4]:null); -// estados.setFechainicio(item[5]!=null?(Date)item[5]:null); -// estados.setFechacompleta(item[6]!=null?(Date)item[6]:null); -// listaEstadoSolicitud.add(estados); -// } -// } - - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - record = (TarmSolicitud) resp.get(beanalias); - super.postQuery((AbstractDataTransport) resp.get(beanalias)); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - } - - -// public List getListaEstadoSolicitud() { -// return listaEstadoSolicitud; -// } -// -// public void setListaEstadoSolicitud( -// List listaEstadoSolicitud) { -// this.listaEstadoSolicitud = listaEstadoSolicitud; -// } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasController.java.svn-base deleted file mode 100644 index 7fad4dd..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudArmasController.java.svn-base +++ /dev/null @@ -1,350 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.util.EstadosSolicitudBPM; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Clase controladora del bean TarmSolicitud. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudArmasController extends AbstractController { - - private ListlistaEstadoSolicitud; - - public SolicitudArmasController() throws Exception { - super(TarmSolicitud.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "SOLICITUD"; - listaEstadoSolicitud= new ArrayList(); - this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - listaEstadoSolicitud = new ArrayList<>(); - DtoQuery dto = super.getDtoQuery(true); - dto.setMultirecord(false); - //nombre - SubQuery snombre= new SubQuery - ("TcustPersonDetail", "name", "nombre", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery snumerodocumento= new SubQuery - ("TcustPersonDetail", "identification", "identification", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalog= new SubQuery - ("TcustPersonDetail", "identificationcatalog", "identificationcatalog", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - SubQuery identificationcatalogcode= new SubQuery - ("TcustPersonDetail", "identificationcatalogcode", "identificationcatalogcode", "i.pk.personcode = t.personcode and i.pk.dateto=(select max(dt.pk.dateto) from TcustPersonDetail dt where dt.pk.personcode=t.personcode)"); - //tramite -// TarmTramite - SubQuery codigoTramite= new SubQuery - ("TarmTramite", "pk", "pk", "i.pk = t.ctramite"); - SubQuery tramitetipoautorizacion= new SubQuery - ("TarmTramite", "tipoautorizacion", "tipoautorizacion", "i.pk = t.ctramite"); - SubQuery tramitetipoautorizacioncode= new SubQuery - ("TarmTramite","tipoautorizacioncodigo", "tipoautorizacioncodigo", "i.pk = t.ctramite"); - SubQuery tramitecategoria= new SubQuery - ("TarmTramite", "categoria", "categoria", "i.pk = t.ctramite"); - SubQuery tramitecategoriacodigo= new SubQuery - ("TarmTramite","categoriacodigo", "categoriacodigo", "i.pk = t.ctramite"); - SubQuery tramiteusoactividad= new SubQuery - ("TarmTramite", "usoactividad", "usoactividad", "i.pk = t.ctramite"); - SubQuery tramiteusoactividadcodigo= new SubQuery - ("TarmTramite","usoactividadcodigo", "usoactividadcodigo", "i.pk = t.ctramite"); - //estado - SubQuery estado= new SubQuery("TgeneCatalogDetail","description","estadoSolicitud","i.pk.catalog=t.estado and i.pk.catalogcode=t.estadocodigo"); - dto.addSubQuery(estado); - - dto.addSubQuery(snumerodocumento); - dto.addSubQuery(snombre); - dto.addSubQuery(identificationcatalog); - dto.addSubQuery(identificationcatalogcode); - - dto.addSubQuery(codigoTramite); - dto.addSubQuery(tramitetipoautorizacion); - dto.addSubQuery(tramitetipoautorizacioncode); - dto.addSubQuery(tramitecategoria); - dto.addSubQuery(tramitecategoriacodigo); - dto.addSubQuery(tramiteusoactividad); - dto.addSubQuery(tramiteusoactividadcodigo); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - if(this.getMfilters().get("numerosolicitud")!=null){ - request.put("queryalias", "ESTADOSSOLICITUDBPMQUERY"); - request.put("codigosolicitudbpm", this.getMfilters().get("numerosolicitud")); - } - - Response resp = callerhelper.executeQuery(request); - if(resp.get("LISTASESTADOSOLICITUDBPM")!=null){ - System.out.println("------------"+resp.get("LISTASESTADOSOLICITUDBPM").toString()); - List listaEstadosSolicitud = (List)resp.get("LISTASESTADOSOLICITUDBPM"); - for (Object[] item : listaEstadosSolicitud) { - EstadosSolicitudBPM estados = new EstadosSolicitudBPM(); - estados.setActividad(item[0]!=null?item[0].toString():""); - estados.setUsuarioasignado(item[1]!=null?item[1].toString():""); - estados.setGrupoasignado(item[2]!=null?item[2].toString():""); - estados.setEstado(item[3]!=null?item[3].toString():""); - estados.setFechacreacion(item[4]!=null?(Date)item[4]:null); - estados.setFechainicio(item[5]!=null?(Date)item[5]:null); - estados.setFechacompleta(item[6]!=null?(Date)item[6]:null); - listaEstadoSolicitud.add(estados); - } - } - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - record = (TarmSolicitud) resp.get(beanalias); - super.postQuery((AbstractDataTransport) resp.get(beanalias)); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void fijaPersona(TcustPersonDetail persondetail) throws Exception { - if (persondetail == null) { - return; - } - record.setPersoncode(persondetail.getPk().getPersoncode()); - } - - public void fijaInicioFlujoEnNO() throws Exception { - record.setInicioFlujo("N"); - } - - public void fijaInicioFlujoEnYES() throws Exception { - record.setInicioFlujo("Y"); - } - - public static TarmSolicitud findxSolicitudCodpersona(String codigoSolicitud,String codigoPersona) { - try { - SolicitudArmasController cc = new SolicitudArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk", codigoSolicitud); - cc.addFilter("personcode", codigoPersona); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmSolicitud findByCSolicitud(String cSolicitud) { - try { - SolicitudArmasController cc = new SolicitudArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk", cSolicitud); - cc.queryDBNormal(); - if (cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - - public static List findByCTramite(String cTramite) { - try { - SolicitudArmasController cc = new SolicitudArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("ctramite", cTramite); - cc.queryDBNormal(); - if (cc.lrecord.size()>0) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * - * Metodo para encopntrar los tramites pertenecientes a una persona - * @param cPersona codigo de la persona - * @param cTramite codigo del tramite - * @return Listado de las solicitudes encontradas - */ - public static List findByPersonaCTramite(Integer cPersona, String cTramite) { - try { - SolicitudArmasController cc = new SolicitudArmasController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("ctramite", cTramite); - cc.addFilter("personcode", String.valueOf(cPersona)); - - cc.queryDBNormal(); - if (cc.lrecord.size()>0) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - // Version del metodo querydatabase normal sin filtros adicionales - @SuppressWarnings("unchecked") - protected void queryDBNormal() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - // Subquery - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void update(TarmSolicitud bean) throws Exception{ - record=bean; - super.update(); - } - - public static TarmSolicitud find(String codigoSolicitud) { - try { - if(codigoSolicitud == null || codigoSolicitud.isEmpty()){ - return null; - } - SolicitudArmasController cc = new SolicitudArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigoSolicitud); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - public List getListaEstadoSolicitud() { - return listaEstadoSolicitud; - } - - public void setListaEstadoSolicitud( - List listaEstadoSolicitud) { - this.listaEstadoSolicitud = listaEstadoSolicitud; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.netbeans-base deleted file mode 100644 index 7608728..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.netbeans-base +++ /dev/null @@ -1,237 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmSolicitudTramite. - * Se reemplaza el archivo de deposito, se filtra por el codigo de solicitud - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudCambioDepositoController extends AbstractController { - - public SolicitudCambioDepositoController() throws Exception { - super(TarmSolicitudTramite.class); - } - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SOLICITUDDEPOSITO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(getMfilters().get("numerotramite")==null && - getMfilters().get("numerotramite").toString().trim().isEmpty()){ - MessageHelper.setMessageError("Ingrese el cdigo de solicitud"); - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try { - String pathRuta=""; - - String xPathLocation= getRutaDocumentoSolBase(record.getXpathcomprobante()); - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String nombreArchivo = uploadedFile.getFileName(); - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - pathRuta=xPathLocation + "/cm:" + nombreArchivo; - record.setXpathcomprobanteorignal(record.getXpathcomprobante()); - record.setXpathcomprobante(pathRuta); - TsafeUserDetail userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - record.setUsuariocambio(userDetail.getNickname()); - super.update(); - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String xpath) { - int index = xpath.lastIndexOf('/'); - xpath = xpath.substring(0,index); - xpath = xpath+"/cm:Cambio"; - System.out.println(xpath); - return xpath; - } - - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getNombre(String ruta) { - int index = ruta.lastIndexOf('/'); - if (index == -1) { - return "cambiodocumento.jpg"; - } else { - return (ruta.substring(index + 1)).replace("cm:", ""); - } - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.svn-base deleted file mode 100644 index 7608728..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCambioDepositoController.java.svn-base +++ /dev/null @@ -1,237 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmSolicitudTramite. - * Se reemplaza el archivo de deposito, se filtra por el codigo de solicitud - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudCambioDepositoController extends AbstractController { - - public SolicitudCambioDepositoController() throws Exception { - super(TarmSolicitudTramite.class); - } - - /** - * Variable que nos permite cargar el documento al Alfresco - */ - private UploadedFile uploadedFile; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SOLICITUDDEPOSITO"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(getMfilters().get("numerotramite")==null && - getMfilters().get("numerotramite").toString().trim().isEmpty()){ - MessageHelper.setMessageError("Ingrese el cdigo de solicitud"); - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try { - String pathRuta=""; - - String xPathLocation= getRutaDocumentoSolBase(record.getXpathcomprobante()); - if(uploadedFile!=null && uploadedFile.getFileName()!=null){ - String nombreArchivo = uploadedFile.getFileName(); - if(alfrescoController.uploadFile(uploadedFile.getInputstream(),nombreArchivo, xPathLocation)){ - pathRuta=xPathLocation + "/cm:" + nombreArchivo; - record.setXpathcomprobanteorignal(record.getXpathcomprobante()); - record.setXpathcomprobante(pathRuta); - TsafeUserDetail userDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - record.setUsuariocambio(userDetail.getNickname()); - super.update(); - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - }else{ - MessageHelper.setMessageError("Adjunte el documento"); - return; - } - save(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(String xpath) { - int index = xpath.lastIndexOf('/'); - xpath = xpath.substring(0,index); - xpath = xpath+"/cm:Cambio"; - System.out.println(xpath); - return xpath; - } - - /** - * Metodo que retorna la extencion del documento que se desea subir al alfresco - */ - public String getNombre(String ruta) { - int index = ruta.lastIndexOf('/'); - if (index == -1) { - return "cambiodocumento.jpg"; - } else { - return (ruta.substring(index + 1)).replace("cm:", ""); - } - } - - /** - * Carga el archivo a grabar en la memoria para su posterior persistencia en el Alfresco - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - } - - /** - * Recorta el nombre del archivo a cargarse - * @param nombre - * @return nombre recortado - */ - public String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * Obtiene la extencion del archivo a cargar - * @param nombre - * @return - */ - private String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCertificadoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCertificadoController.java.svn-base deleted file mode 100644 index 0d98f13..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudCertificadoController.java.svn-base +++ /dev/null @@ -1,459 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.io.FilenameUtils; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.model.UploadedFile; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -//import com.fp.frontend.controller.pgeneral.menu.MenuController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmCertificadoFiscalia; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -/** - * Clase controladora para subir solicitudes de Certificados de Fiscalia. - * - * @author Manuel Cepeda. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudCertificadoController extends AbstractController { - -// @ManagedProperty(value = "#{menuController}") -// private MenuController menuController; - - /** - * Propiedad que premite controlar operaciones de cargar archivos al Alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - /** - * codigo de la provincia del usuario logeado - */ - private String cprovincia; - - /** - * Variable que nos permite cargar el comprobante de deposito al Alfresco - */ - private UploadedFile uploadedFile; - private TsafeUserDetail tsafeUserDetail; - private String cargado; - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - /** - * Indica si el flujo ya fue iniciado, sirve para controlar que no iniciar el flujo mas de una vez. - */ - private boolean flujoiniciado; - private boolean grabarInformacion; - - - public SolicitudCertificadoController() throws Exception { - super(TarmCertificadoFiscalia.class); - } - - /** - * Método que se ejecuta después del constructor - */ - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - - /** - * Inicializa valores del controlador - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record = new TarmCertificadoFiscalia(); - beanalias = "CERTIFICADOFISCALIA"; - tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - record.setNrsolicitud(null); - TarmCentroControl centroControl=Utilidades.obtenerCentroControl(); - cprovincia=centroControl.getProvincecode(); - grabarInformacion = true; - flujoiniciado = true; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(deshabilitarPantalla){ - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("pk desc"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - if(request.containsKey("querytype")){ - request.remove("querytype"); - } - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - if(lrecord != null && !lrecord.isEmpty()){ - record=lrecord.get(0); - super.postQuery(this.lrecord); - } - - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void next() throws Exception { - // TODO Auto-generated method stub - super.next(); - } - - @Override - public void save() { - try { - if(grabarInformacion){ - return; - } - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - uploadCertificado(); - if(tsafeUserDetail != null){ - record.setPersoncode(tsafeUserDetail.getPk().getPersoncode()); - } - Request request = callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - deshabilitarPantalla = Boolean.TRUE; - flujoiniciado = Boolean.FALSE; - grabarInformacion = Boolean.TRUE; - MessageHelper.setMessageInfo(resp); -// init(); - } else { - //MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - //MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - if(flujoiniciado){ - return; - } - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("isnew", "Y"); - request.modifiedData().put("csolicitud", record.getNrsolicitud()); - request.modifiedData().put("numerosolicitud", record.getNrsolicitud()); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("xpath", record.getXpath()); - - request.setLogsolicitude(record.getNrsolicitud()); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - - deshabilitarPantalla = Boolean.FALSE; - flujoiniciado = Boolean.TRUE; - grabarInformacion = Boolean.TRUE; - - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: " + record.getNrsolicitud()); - -// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void updateAutorizacion()throws Exception { - super.update(); - } - - /** - * Método que se ejecuta al carga edición - * @throws Exception - */ - public void loadEdit() throws Exception { -// setSelectedDocumentos(record.getDocumento().split(", ")); - } - - - @Override - public void create() throws Exception { - super.create(); - if(record != null){ - record.setFcreacion(new Date()); - if(tsafeUserDetail != null){ - TcustPersonDetail personDetail = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - if(personDetail != null){ - record.setNombresolicitante(personDetail.getName()); - } - } - try { - obtenerSecuencialSolicitud(); - } catch (Throwable e) { - e.printStackTrace(); - } - uploadedFile = null; - setCargado(Constant.STR_N); - setGrabarInformacion(true); - setFlujoiniciado(false); - } - } - - public void update(TarmCertificadoFiscalia bean) throws Exception { - record=bean; - updateAutorizacion(); - } - - public void actualizar(TarmCertificadoFiscalia arma) throws Exception{ - record=arma; - super.update(); - } - - - /** - * Permite obtener el Archivo previamente cargado en la pagina - * @param event - */ - public void handleUpload(FileUploadEvent event){ - uploadedFile = event.getFile(); - setCargado(Constant.STR_Y); - } - - - /** - * Método de carga de archivos en Alfresco - * @param event - */ - public void uploadCertificado() { - try { - if(uploadedFile != null && uploadedFile.getFileName() != null && !"".equals(uploadedFile.getFileName())){ - String xPathLocation= getRutaDocumentoCertificadoBase() + "/cm:" + record.getNrsolicitud(); - String nombreArchivo = "Certificado_01."+FilenameUtils.getExtension(uploadedFile.getFileName()); - if(alfrescoController.uploadFile(uploadedFile.getInputstream(), nombreArchivo, xPathLocation)){ - setCargado(Constant.STR_Y); - record.setXpath(xPathLocation+"/cm:"+nombreArchivo); - - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoCertificadoBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta = new StringBuilder("cm:Certificados"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - - /** - * Arma la petición al core para solicitar un número de secuencial para la solicitud antes de guardarla - * @throws Throwable - */ - private void obtenerSecuencialSolicitud() throws Throwable{ - Request request = callerhelper.getRequest(); - DtoQuery dtoQuery = super.getDtoQuery(true); - HashMap mapQuery = new HashMap(); - mapQuery.put(beanalias, dtoQuery); - request.put("querytype", "T"); - request.setQueryTables(mapQuery); - Response response = callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(response); - }else{ - getRecord().setNrsolicitud(response.get("SECUENCIALCERTIFICADOFISCAL").toString()); - } - } - - - /** - * Metodod que devuelve un CertificadoFiscalia por el codigo de solicitud - * @param codigoSolicitud - * @return TarmCertificadoFiscalia - */ - public static TarmCertificadoFiscalia findPorSolicitud(String codigoSolicitud) { - try { - if(codigoSolicitud==null || codigoSolicitud.isEmpty()){ - return null; - } - SolicitudCertificadoController cc = new SolicitudCertificadoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("nrsolicitud", codigoSolicitud); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - @Override - public void update() throws Exception{ - grabarInformacion = Boolean.FALSE; - flujoiniciado = Boolean.TRUE; - deshabilitarPantalla = Boolean.TRUE; - super.update(); - } - -// public MenuController getMenuController() { -// return menuController; -// } -// -// public void setMenuController(MenuController menuController) { -// this.menuController = menuController; -// } - - /** - * @return the uploadedFile - */ - public UploadedFile getUploadedFile() { - return uploadedFile; - } - - /** - * @param uploadedFile the uploadedFile to set - */ - public void setUploadedFile(UploadedFile uploadedFile) { - this.uploadedFile = uploadedFile; - } - - /** - * @return the alfrescoController - */ - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - /** - * @param alfrescoController the alfrescoController to set - */ - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - /** - * @return the cargado - */ - public String getCargado() { - return cargado; - } - - /** - * @param cargado the cargado to set - */ - public void setCargado(String cargado) { - this.cargado = cargado; - } - - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - public boolean isFlujoiniciado() { - return flujoiniciado; - } - - public void setFlujoiniciado(boolean flujoiniciado) { - this.flujoiniciado = flujoiniciado; - } - - public String getCprovincia() { - return cprovincia; - } - - public void setCprovincia(String cprovincia) { - this.cprovincia = cprovincia; - } - - /** - * @return the grabarInformacion - */ - public boolean isGrabarInformacion() { - return grabarInformacion; - } - - /** - * @param grabarInformacion the grabarInformacion to set - */ - public void setGrabarInformacion(boolean grabarInformacion) { - this.grabarInformacion = grabarInformacion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudController.java.svn-base deleted file mode 100644 index 2df6bd6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudController.java.svn-base +++ /dev/null @@ -1,222 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitud; - -/** - * Controlador que se encarga del manejo de {@link TarmSolicitud} - * @author dcruz - * - */ -public class SolicitudController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SolicitudController() throws Exception{ - super(TarmSolicitud.class); - } - - @PostConstruct - public void postConstruct(){ - this.init(); -// super.startQuery(); - } - - private void init(){ - this.beanalias = "SOLICITUD"; - this.recperpage = 15; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - SubQuery qryprovorigen = new SubQuery("TgeneProvince", "description", "provinciaorigen", "i.pk.countrycode = t.cpaisorigen and i.pk.provincecode=t.cprovinciaorigen"); - dto.addSubQuery(qryprovorigen); - SubQuery qryctnorigen = new SubQuery("TgeneCanton", "description", "cantonorigen", "i.pk.countrycode = t.cpaisorigen and i.pk.provincecode=t.cprovinciaorigen and i.pk.cantoncode=t.ccantonorigen"); - dto.addSubQuery(qryctnorigen); - SubQuery qryprovdest = new SubQuery("TgeneProvince", "description", "provinciadestino", "i.pk.countrycode = t.cpaisdestino and i.pk.provincecode=t.cprovinciadestino"); - dto.addSubQuery(qryprovdest); - SubQuery qryctndest = new SubQuery("TgeneCanton", "description", "cantondestino", "i.pk.countrycode = t.cpaisdestino and i.pk.provincecode=t.cprovinciadestino and i.pk.cantoncode=t.ccantondestino"); - dto.addSubQuery(qryctndest); - SubQuery qrycprovincecode = new SubQuery("TarmCentroControl", "provincecode", "provincecode", "i.pk = t.ccentrocontrol"); - dto.addSubQuery(qrycprovincecode); - //dto.setOrderby("t.nombre"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - public static List find() { - return null; - } - - public static List findSolicitudxPersona(String personcode) { - try{ - SolicitudController cc = new SolicitudController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcode",personcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmSolicitud findSolicitudxcodsolicitud(String csolicitud) { - System.out.println("Codigo de solicitud SolicitudCOntroller.." + csolicitud); - try{ - SolicitudController cc = new SolicitudController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk",csolicitud); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para encontrar por numero de solicitud - * @param numeroSolicitud - * @return solicitud encontrada con este numero - */ - public static TarmSolicitud findSolicitudxnumerosolicitud(String numeroSolicitud) { - try{ - SolicitudController cc = new SolicitudController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("numerosolicitud",numeroSolicitud); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que obtiene una solicitud por el codigo del tramite - * @param csolicitud - * @return - */ - public static TarmSolicitud findSolicitudByCtramite(String ctramite) { - try{ - SolicitudController cc = new SolicitudController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("ctramite",ctramite); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Find con el cual se valida una persona con una solicitud - * @param personcode - * @param csolicitud - * @return - */ - public static Boolean existeRegistroPersona(Integer personcode, String csolicitud){ - try { - SolicitudController cc = new SolicitudController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", csolicitud); - cc.addFilter("personcode",personcode.toString()); - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return true; - } - return false; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return false; - } - - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void updateSolicitud(TarmSolicitud bean) throws Exception{ - this.beanalias = "SOLICITUD"; - this.record = bean; - super.update(); - this.save(); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudGuardiasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudGuardiasController.java.svn-base deleted file mode 100644 index 9f264b0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudGuardiasController.java.svn-base +++ /dev/null @@ -1,216 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; - -@ManagedBean -@ViewScoped -public class SolicitudGuardiasController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SolicitudGuardiasController() throws Exception{ - super(TarmSolicitudGuardias.class); - } - - /** - * Método que se ejecuta despues del controlador - */ - @PostConstruct - public void postConstruct() { - this.init(); - super.startQuery(); - this.getMfilters().clear(); - } - - /** - * Inicializa variables - */ - private void init() { - try { - recperpage = 300; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); -// record = new TarmSolicitudGuardias(); - beanalias = "SOLICITUDGUARDIAS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dtoQuery = super.getDtoQuery(Boolean.TRUE); - HashMap mtables = new HashMap(); - dtoQuery.setOrderby("pk.csolicitud"); - mtables.put(beanalias, dtoQuery); - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0){ - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else{ - this.lrecord = (List) response.get(beanalias); - for(TarmSolicitudGuardias tarmSolicitudGuardias:this.lrecord){ - TarmGuardias guardia = new TarmGuardias(); - guardia = GuardiasController.find(String.valueOf(tarmSolicitudGuardias.getPk().getCguardia()), String.valueOf(tarmSolicitudGuardias.getPk().getCempresa())); - //tarmSolicitudGuardias.modifiedData().put("guardia",guardia!=null?guardia:new TarmGuardias()); - tarmSolicitudGuardias.modifiedData().put("nombre",guardia==null?"":guardia.getModifiedData().get("gnombre")); - tarmSolicitudGuardias.modifiedData().put("identificador",guardia==null?"":guardia.getModifiedData().get("gcedula")); - tarmSolicitudGuardias.modifiedData().put("estado",guardia==null?"":guardia.getEstado()); - tarmSolicitudGuardias.modifiedData().put("guardia",guardia==null?"":guardia.getPk()); - - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseGuardia() { - try { - DtoQuery dtoQuery = super.getDtoQuery(Boolean.TRUE); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dtoQuery); - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0){ - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else{ - this.lrecord = (List) response.get(beanalias); - for(TarmSolicitudGuardias tarmSolicitudGuardias:this.lrecord){ - TarmGuardias guardia = new TarmGuardias(); - guardia = GuardiasController.find(String.valueOf(tarmSolicitudGuardias.getPk().getCguardia()), String.valueOf(tarmSolicitudGuardias.getPk().getCempresa())); - //tarmSolicitudGuardias.modifiedData().put("guardia",guardia!=null?guardia:new TarmGuardias()); - tarmSolicitudGuardias.modifiedData().put("nombre",guardia==null?"":guardia.getModifiedData().get("gnombre")); - tarmSolicitudGuardias.modifiedData().put("identificador",guardia==null?"":guardia.getModifiedData().get("gcedula")); - tarmSolicitudGuardias.modifiedData().put("estado",guardia==null?"":guardia.getModifiedData().get("estado")); - - } - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna guardias en base a un criterio - * @param solicitudCode código de la solicitud - * @return - */ - public List findPorSolicitud(String solicitudCode) { - try { - SolicitudGuardiasController cc = new SolicitudGuardiasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Devuelve todas las solicitudes encontradas - * @return - */ - public static List find() { - try { - SolicitudGuardiasController cc = new SolicitudGuardiasController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - @Override - public void save() { - try { - DtoSave dtoSave = super.getDtoSave(); - dtoSave.setReturnpk(Boolean.TRUE); - if(!dtoSave.pendingProcess()){ - return; - } - HashMap msaves = new HashMap(); - msaves.put(beanalias, dtoSave); - Request request = callerhelper.getRequest(); - request.setSaveTables(msaves); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("pk.csolicitud", "1"); - request.modifiedData().put("csolicitud", "1"); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudRequisitosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudRequisitosController.java.svn-base deleted file mode 100644 index 9cb838b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudRequisitosController.java.svn-base +++ /dev/null @@ -1,313 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.ActionEvent; - -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.lang.StringUtils; -import org.primefaces.event.FileUploadEvent; - -import com.fp.common.helper.Constant; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.RequisitoPorTipoTramiteController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitosKey; - -/** - * Clase controladora del bean TarmSolicitud. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudRequisitosController extends AbstractController { - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - private Boolean auxBotonVerificacion; - - public SolicitudRequisitosController() throws Exception { - super(TarmSolicitudRequisitos.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 100; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "REQUISITOPORTIPOTRAMITE"; - auxBotonVerificacion=Boolean.FALSE; - this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - // dto.setOrderby("t.nombre"); - - SubQuery subNombre= new SubQuery - ("TarmRequisito","nombre", "nombre", "i.pk = t.pk.crequisito"); - - dto.addSubQuery(subNombre); - SubQuery subDesCorta= new SubQuery - ("TarmRequisito","descripcioncorta", "descripcion", "i.pk = t.pk.crequisito"); - - dto.addSubQuery(subDesCorta); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public void fijaSolicitud(String csolicitud) throws Exception { - if (csolicitud == null) { - return; - } - record.getPk().setCsolicitud(csolicitud); - } - - public void consultaPorTipoTramite(String ctipotramite) throws Exception { - if (record == null) { - super.create(); - } - List lrequisitos = RequisitoPorTipoTramiteController.find(ctipotramite); - for (TarmRequisitoPorTipoTramite obj : lrequisitos) { - TarmSolicitudRequisitosKey key = new TarmSolicitudRequisitosKey(); - key.setCrequisito(obj.getPk().getCrequisito()); - // key.setCtipotramite(obj.getPk().getCtipotramite()); - TarmSolicitudRequisitos sol = new TarmSolicitudRequisitos(); - sol.setPk(key); - sol.modifiedData.put("nrequisito", obj.modifiedData.get("nrequisito")); - sol.setCargado("N"); - lrecord.add(sol); - } - } - - /** - * Retorna la ruta de documento base en donde se almacenará dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - - /** - * guarda actualiza el numero de documentos subidos a alfresco - */ - public void guardarRegistro(ActionEvent event) { - System.out.println("Actualizo la fila requisito"); - System.out.println(event.getComponent().getAttributes().get("xPathLocation")); - record.setCargado(Constant.STR_Y); - } - - public static List find(String codigoSolicitud) { - try { - SolicitudRequisitosController cc = new SolicitudRequisitosController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", codigoSolicitud); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Método para manejar el evento change en el CheckBox - * @throws Exception - */ - public void onActualizar(TarmSolicitudRequisitos bean) throws Exception { - record=bean; - update(); - } - - /** - * Método para manejar el evento change en el CheckBox - * @throws Exception - */ - public void onChangeAprobado(TarmSolicitudRequisitos principal) throws Exception { - if (principal.getEstadovalidacion()==null || principal.getEstadovalidacion().equals("N")) { - principal.setEstadovalidacion("Y"); - } else { - principal.setEstadovalidacion("N"); - } - record=principal; - update(); - validaiones(); - } - - public void validaiones() { - auxBotonVerificacion= Boolean.TRUE; - for(TarmSolicitudRequisitos item:lrecord){ - if(item.getEstadovalidacion()==null || item.getEstadovalidacion().equals("N")){ - auxBotonVerificacion =Boolean.FALSE; - return; - } - } - } - - /** - * Método de carga de archivos en Alfresco - * @param event - */ - public void uploadRequisitos(FileUploadEvent event) { - TarmSolicitudRequisitos solicitudRequisitos = null; - try { - String xPathLocation = (String) event.getComponent().getAttributes().get("xPathLocation"); - solicitudRequisitos = (TarmSolicitudRequisitos) event.getComponent().getAttributes().get("record"); - String nombreArchivo = "Documento_"+obtieneNombreLimpio(solicitudRequisitos.getModifiedData().get("crequisito") != null ? solicitudRequisitos.getModifiedData().get("crequisito").toString():"")+"."+FilenameUtils.getExtension(event.getFile().getFileName()); - if(solicitudRequisitos != null - && alfrescoController.uploadFile(event.getFile().getInputstream(), - nombreArchivo, - xPathLocation)){ - solicitudRequisitos.setCargado(Constant.STR_Y); - solicitudRequisitos.setXpathrequisito(xPathLocation+"/cm:"+nombreArchivo); - this.record = solicitudRequisitos; - this.record.setIsnew(Boolean.FALSE); - this.update(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Reemplazo un string los caracteres en blanco y reemplazo caracteres especiales - * @param toConvert - * @return la cadena convertida - */ - private String obtieneNombreLimpio(String toConvert){ - return StringUtils.replaceEach(StringUtils.deleteWhitespace(toConvert), - new String[]{"\u00e1","\u00e9","\u00ed","\u00f3","\u00fa","\u00c1","\u00c9","\u00cd","\u00d3","\u00da","\u00F1","\u00d1"}, - new String[]{"a","e","i","o","u","A","E","I","O","U","n","N"}); - } - - /** - * Entrega el valor de: alfrescoController - * - * @return AlfrescoController - */ - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - /** - * Fija el valor de: alfrescoController - * - * @param alfrescoController Valor a fijar en el atributo. - */ - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public Boolean getAuxBotonVerificacion() { - return auxBotonVerificacion; - } - - public void setAuxBotonVerificacion(Boolean auxBotonVerificacion) { - this.auxBotonVerificacion = auxBotonVerificacion; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudTramiteController.java.svn-base deleted file mode 100644 index 2e4038e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/SolicitudTramiteController.java.svn-base +++ /dev/null @@ -1,277 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.apache.commons.httpclient.methods.GetMethod; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pentaho.PentahoController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SolicitudTramiteController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public SolicitudTramiteController() throws Exception { - super(TarmSolicitudTramite.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SOLICITUDTRAM"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - SubQuery subqueryestadosolicitud= new SubQuery("TarmSolicitud","estado","estadoSolicitud","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryestadosolicitud); - - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - if(getMfilelds().get("cargadeposito")!=null){ - Filter filtro= new Filter(); - filtro.setSql(getMfilelds().get("cargadeposito").toString()); - dto.addFiltro(filtro); - } - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void updateSolicitud(TarmSolicitudTramite bean) throws Exception{ - this.setRecord(bean); - super.update(); - } - - /** - * Metod para actualizar registro - * @param bean - * @throws Exception - */ - public void updateSimple(TarmSolicitudTramite bean) throws Exception{ - try { - this.record = bean; - super.update(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - /** - * Metod para crear un nuevo registro y poner en la lista new - * @param bean - * @throws Exception - */ - public void update(TarmSolicitudTramite bean) throws Exception{ - super.create(); - record.getPk().setCsolicitud(bean.getPk().getCsolicitud()); - record.getPk().setCtramite(bean.getPk().getCtramite()); - record.setNumerotramite(bean.getNumerotramite()); - record.setValorapagar(bean.getValorapagar()); - record.setValorcustodios(bean.getValorcustodios()); - record.setValortramitearmas(bean.getValortramitearmas()); - record.setValormulta(bean.getValormulta()); - record.setEstadotramite(bean.getEstadotramite()); - record.setEstadotramitecodigo(bean.getEstadotramitecodigo()); - super.update(); - } - - public static TarmSolicitudTramite findByCSolicitud(String csolicitud) { - try { - SolicitudTramiteController cc = new SolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", csolicitud); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmSolicitudTramite findByNumTramite(String numerotramite) { - try { - SolicitudTramiteController cc = new SolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("numerotramite", numerotramite); - cc.querydatabase(); - if (cc.lrecord != null) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmSolicitudTramite findByNumeroTramiteCarga(String numerotramite) { - try { - SolicitudTramiteController cc = new SolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("numerotramite", numerotramite); - cc.getMfilelds().put("cargadeposito", "numerocomprobante is null ");//and csolicitud =" - //+ "(select o.pk from TarmSolicitud o where o.estado='APB' and o.pk=(select p.numerotramite from TarmSolicitudTramite p where p.numerotramite='"+numerotramite+"'))");// - cc.querydatabase(); - if (cc.lrecord != null && cc.lrecord.size()>0) { - if(codigoParametro("ACEPTADO").equals(cc.lrecord.get(0).getModifiedData().get("estadoSolicitud"))){//"APB" - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Método para obtener los codigos de la tabla de parametros - * @return codigoAceptado - * @throws Exception - */ - private static String codigoParametro(String codigo) throws Exception { - TgeneParameters f = ParametersController.find(codigo, "1");//APB ESTADOSOLICITUD - return f.getTextvalue(); - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - protected void querydatabaseNumeroComprobante() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter filtro = new Filter(); - filtro.setSql("(t.estadotramite<>'ANU' AND t.estadotramite<>'ANUDEP')"); - dto.addFiltro(filtro); - SubQuery subqueryestadosolicitud= new SubQuery("TarmSolicitud","estado","estadoSolicitud","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryestadosolicitud); - - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static List findByNumeroComprobante(String numComprobante) { - try { - SolicitudTramiteController cc = new SolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("numerocomprobante", numComprobante); - cc.querydatabaseNumeroComprobante(); - return cc.lrecord; - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudArmasController.java.svn-base deleted file mode 100644 index 668e614..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudArmasController.java.svn-base +++ /dev/null @@ -1,234 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.Utilidades; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TarmSolicitudArmasController extends AbstractController { - - String csolicitud; - String aprobada; - String porDevolucion; - - private List lArmas=new ArrayList(); - - public TarmSolicitudArmasController() throws Exception { - super(TarmSolicitudArmas.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - } - - private void init() { - try { - recperpage = 100; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMSOLICITUDARMASCONTROLLER"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - if (csolicitud!=null) { - dto.addFiltro(new Filter("pk.csolicitud",csolicitud)); - } - - if(porDevolucion!=null){ - dto.addFiltro(new Filter("pordevolucion",porDevolucion)); - } - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - lArmas.clear(); - - //Obteniendo los datos de las armas - for(TarmSolicitudArmas solicitudArmas:lrecord){ - TarmArmas tarmArma = new TarmArmas(); - tarmArma = ArmasController.findPorCodigo(solicitudArmas.getPk().getCarma()); - lArmas.add(tarmArma); - solicitudArmas.modifiedData().put("clase", tarmArma==null || tarmArma.getModifiedData().get("clase")==null?"":tarmArma.getModifiedData().get("clase")); - solicitudArmas.modifiedData().put("tipo", tarmArma==null || tarmArma.getModifiedData().get("tipo")==null?"":tarmArma.getModifiedData().get("tipo")); - solicitudArmas.modifiedData().put("calibre", tarmArma==null || tarmArma.getModifiedData().get("calibre")==null?"":Utilidades.formatearDecimalesEnTexto(tarmArma.getModifiedData().get("calibre").toString(), "#.000")); - solicitudArmas.modifiedData().put("modelo", tarmArma==null || tarmArma.getModelo()==null || tarmArma.getModelo().isEmpty()?"":tarmArma.getModelo()); - solicitudArmas.modifiedData().put("marca",tarmArma==null || tarmArma.getMarca()==null || tarmArma.getMarca().isEmpty() || tarmArma.getMarcacodigo()==null || tarmArma.getMarcacodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getMarca(), tarmArma.getMarcacodigo()).getDescription()); - solicitudArmas.modifiedData().put("color",tarmArma==null || tarmArma.getColor()==null || tarmArma.getColor().isEmpty() || tarmArma.getColorcodigo()==null || tarmArma.getColorcodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getColor(), tarmArma.getColorcodigo()).getDescription()); - solicitudArmas.modifiedData().put("carma",tarmArma==null?"":tarmArma.getPk()); - solicitudArmas.modifiedData().put("seriecannon",tarmArma==null || tarmArma.getSeriecanon()==null || tarmArma.getSeriecanon().isEmpty()?"":tarmArma.getSeriecanon()); - solicitudArmas.modifiedData().put("estado", tarmArma==null || tarmArma.getEstado()==null || tarmArma.getEstado().isEmpty() || tarmArma.getEstadocodigo()==null || tarmArma.getEstadocodigo().isEmpty()?"":CatalogDetailController.findxCodigoCodcatalogo( tarmArma.getEstado(), tarmArma.getEstadocodigo()).getDescription()); - solicitudArmas.modifiedData().put("cantidad",tarmArma==null || tarmArma.getCantidad()==null?"":tarmArma.getCantidad()); - solicitudArmas.modifiedData().put("unidadmedida",tarmArma==null || tarmArma.getUnidadmedidacantidad()==null?"":tarmArma.getUnidadmedidacantidad()); - solicitudArmas.modifiedData().put("lote",tarmArma==null || tarmArma.getLote()==null?"":tarmArma.getLote()); - solicitudArmas.modifiedData().put("modelo",tarmArma==null || tarmArma.getModelo()==null?"":tarmArma.getModelo()); - solicitudArmas.modifiedData().put("peso",tarmArma==null || tarmArma.getPeso()==null?"":tarmArma.getPeso()); - } - - - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private void querydatabaseCountArmas() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put("TARMSOLICITUDARMASCONTROLLER", dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get("TARMSOLICITUDARMASCONTROLLER"); - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static List findPorSolicitud(Integer personcode) { - try { - TarmSolicitudArmasController cc = new TarmSolicitudArmasController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("personcode", personcode.toString()); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * M\u00e9todo para calcular el n\u00famero de armas de una solicitud. Recibe codigo de solicitud - * @param cSolicitud - * */ - public static Integer getNumeroArmasPorSolicitud(String cSolicitud){ - TarmSolicitudArmasController solicitudArmasController; - try { - solicitudArmasController = new TarmSolicitudArmasController(); - solicitudArmasController.addFilter("pk.csolicitud", cSolicitud); - solicitudArmasController.setRecperpage(15000); - solicitudArmasController.querydatabaseCountArmas(); - return solicitudArmasController.lrecord.size(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return 0; - } - - } - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return - */ - public static List findPorCSolicitud(String solicitudCode) { - try { - TarmSolicitudArmasController cc = new TarmSolicitudArmasController(); - cc.init(); - cc.recperpage = 30000; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public String getAprobada() { - return aprobada; - } - - public void setAprobada(String aprobada) { - this.aprobada = aprobada; - } - - public List getlArmas() { - return lArmas; - } - - public void setlArmas(List lArmas) { - this.lArmas = lArmas; - } - - public String getPorDevolucion() { - return porDevolucion; - } - - public void setPorDevolucion(String porDevolucion) { - this.porDevolucion = porDevolucion; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudDocumentoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudDocumentoController.java.svn-base deleted file mode 100644 index 5c34a12..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudDocumentoController.java.svn-base +++ /dev/null @@ -1,415 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@ManagedBean -@ViewScoped -public class TarmSolicitudDocumentoController extends AbstractController { - - List documentos; -// String csolicitud; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - public TarmSolicitudDocumentoController() throws Exception { - super(TarmSolicitudDocumento.class); - // TODO Auto-generated constructor stub - } - - /** - * - */ - private static final long serialVersionUID = -1407102577264256543L; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta -// super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "DOCUMENTOSCONTROLLER"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Quemando el codigo de solicitud -// this.csolicitud="1"; - - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - for (TarmSolicitudDocumento doc : lrecord) { - doc.put("seleccionado", Boolean.FALSE); - } - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - SubQuery subQueryNumeroDoc = new SubQuery("TarmDocumentoHabilitante", "numerodocumento", "numerodocumento", "i.pk=t.pk.cdocumento"); - dto.addSubQuery(subQueryNumeroDoc); - SubQuery subQueryFechaEmision = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", "i.pk=t.pk.cdocumento"); - dto.addSubQuery(subQueryFechaEmision); - SubQuery subQueryFechaExpiracion = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", "i.pk=t.pk.cdocumento"); - dto.addSubQuery(subQueryFechaExpiracion); - // - SubQuery subQueryTipoTramite= new SubQuery("TgeneCatalogDetail","description","tipoTramite" ,"i.pk.catalog= (select o.tipotramite from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento )) " - + " and i.pk.catalogcode=(select o.tipotramitecodigo from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento ))"); - dto.addSubQuery(subQueryTipoTramite); - SubQuery subQueryTramite= new SubQuery("TgeneCatalogDetail","description","tramite" ,"i.pk.catalog= (select o.tipoautorizacion from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento )) " - + " and i.pk.catalogcode=(select o.tipoautorizacioncodigo from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento ))"); - dto.addSubQuery(subQueryTramite); - SubQuery subQueryCategoria= new SubQuery("TgeneCatalogDetail","description","categoria" ,"i.pk.catalog= (select o.categoria from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento )) " - + " and i.pk.catalogcode=(select o.categoriacodigo from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento ))"); - dto.addSubQuery(subQueryCategoria); - SubQuery subQueryUsoActivid = new SubQuery("TgeneCatalogDetail","description","usoactividad","i.pk.catalog= (select o.usoactividad from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento )) " - + " and i.pk.catalogcode=(select o.usoactividadcodigo from TarmTramite o where o.pk=(select p.ctramite from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento ))"); - dto.addSubQuery(subQueryUsoActivid); - - SubQuery subQueryEstado = new SubQuery("TgeneCatalogDetail","description","estado","i.pk.catalog= (select p.estado from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento ) " - + " and i.pk.catalogcode=(select p.estadocode from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento )"); - dto.addSubQuery(subQueryEstado); -// SubQuery subQueryFechaEmision = new SubQuery("TarmDocumentoHabilitante","fechaemision","fechaemision","i.pk=t.pk.cdocumento"); -// dto.addSubQuery(subQueryFechaEmision); -// SubQuery subQueryFechaCaducidad = new SubQuery("TarmDocumentoHabilitante","fechaexpiracion","fechaexpiracion","i.pk=t.pk.cdocumento"); -// dto.addSubQuery(subQueryFechaCaducidad); - //arma - SubQuery subcodigoArma= new SubQuery("TarmArmas","pk","carma" ,"i.pk= (select p.carma from TarmDocumentoHabilitante p where p.pk=t.pk.cdocumento)"); - dto.addSubQuery(subcodigoArma); - - SubQuery subQueryClase= new SubQuery("TgeneCatalogDetail","description","clase" ,"i.pk.catalog= (select o.clase from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) " - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) "); - dto.addSubQuery(subQueryClase); - SubQuery subQueryTipo= new SubQuery("TgeneCatalogDetail","description","tipoarmaexplosivo" ,"i.pk.catalog= (select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) " - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) "); - dto.addSubQuery(subQueryTipo); - SubQuery subQueryMarca= new SubQuery("TarmArmas","marca","marca" ,"i.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento) "); - dto.addSubQuery(subQueryMarca); - - SubQuery subQueryCalibre= new SubQuery("TgeneCatalogDetail","description","calibre" ,"i.pk.catalog= (select o.calibre from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) " - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=(select p.ctipoarmaexplosivo from TarmArmas p where p.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento))) "); - dto.addSubQuery(subQueryCalibre); - - SubQuery subQueryLote= new SubQuery("TarmArmas","lote","lote" ,"i.pk=(select q.carma from TarmDocumentoHabilitante q where q.pk=t.pk.cdocumento) "); - dto.addSubQuery(subQueryLote); - return dto; - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - - - /** - * Devueleve el tipo de tramite de un documento - * @param documento - * @return - */ - public String tipoTramite(TarmSolicitudDocumento documento){ - String tipo=""; - String codigoSolicitud; - try { - TarmDocumentoHabilitante documentoHabilitante= DocumentoHabilitanteController.find(String.valueOf(documento.getPk().getCdocumento())); - codigoSolicitud = documentoHabilitante.getCsolicitud(); - - //Obteniendo la solicitud - TarmSolicitud solicitud= SolicitudArmasController.find(codigoSolicitud); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getTipotramite()!=null && !tramite.getTipotramite().isEmpty() - && tramite.getTipotramitecodigo()!=null && !tramite.getTipotramitecodigo().isEmpty()){ - TgeneCatalogDetail catalogoTipoTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - if(catalogoTipoTramite!=null){ - tipo=catalogoTipoTramite.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return tipo; - } - - public String tramite(TarmSolicitudDocumento documento) { - String tipo=""; - String codigoSolicitud; - try { - TarmDocumentoHabilitante documentoHabilitante= DocumentoHabilitanteController.find(String.valueOf(documento.getPk().getCdocumento())); - codigoSolicitud = documentoHabilitante.getCsolicitud(); - //Obteniendo la solicitud - TarmSolicitud solicitud= SolicitudArmasController.find(codigoSolicitud); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getTipoautorizacion()!=null && !tramite.getTipoautorizacion().isEmpty() - && tramite.getTipoautorizacioncodigo()!=null && !tramite.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail catalogoTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - if(catalogoTramite!=null){ - tipo=catalogoTramite.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return tipo; - } - - /** - * Devueleve la categoria de un documento - * @param documento - * @return - */ - public String categoria(TarmSolicitudDocumento documento){ - String categoria=""; - String codigoSolicitud; - try { - TarmDocumentoHabilitante documentoHabilitante= DocumentoHabilitanteController.find(String.valueOf(documento.getPk().getCdocumento())); - codigoSolicitud = documentoHabilitante.getCsolicitud(); - //Obteniendo la solicitud - TarmSolicitud solicitud= SolicitudArmasController.find(codigoSolicitud); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getCategoria()!=null && !tramite.getCategoria().isEmpty() - && tramite.getCategoriacodigo()!=null && !tramite.getCategoriacodigo().isEmpty()){ - TgeneCatalogDetail catalogoCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - if(catalogoCategoria!=null){ - categoria=catalogoCategoria.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return categoria; - } - - /** - * Devueleve la categoria de un documento - * @param documento - * @return - */ - public String usoActividad(TarmSolicitudDocumento documento){ - String usoActividad=""; - String codigoSolicitud; - try { - TarmDocumentoHabilitante documentoHabilitante= DocumentoHabilitanteController.find(String.valueOf(documento.getPk().getCdocumento())); - codigoSolicitud = documentoHabilitante.getCsolicitud(); - //Obteniendo la solicitud - TarmSolicitud solicitud= SolicitudArmasController.find(codigoSolicitud); - - if(solicitud!=null){ - TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - if(tramite!=null && tramite.getUsoactividad()!=null && !tramite.getUsoactividad().isEmpty() - && tramite.getUsoactividadcodigo()!=null && !tramite.getUsoactividadcodigo().isEmpty()){ - TgeneCatalogDetail catalogoUso= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(catalogoUso!=null){ - usoActividad=catalogoUso.getDescription(); - } - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return usoActividad; - } - - /** - * Devueleve la categoria de un documento - * @param documento - * @return - */ - public String ubicacion(TarmSolicitudDocumento documento){ - String ubicacion=""; - try { - //Obteniendo el documento habilitante - TarmDocumentoHabilitante documentoHabilitante=DocumentoHabilitanteController.find(documento.getPk().getCdocumento().toString()); - - TcustPersonDetail detallesPersona=PersonDetailController.find(String.valueOf(documentoHabilitante.getPersoncode().toString())); - - if(detallesPersona!=null){ - String tipoDireccion=""; - - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - - // personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(documentoHabilitante.getPersoncode()), tipoDireccion); - personAddressController.findPrincipal(String.valueOf(documentoHabilitante.getPersoncode())) ; - if(personAddressController.getLprovinces()!=null && !personAddressController.getLprovinces().isEmpty()){ - ubicacion=personAddressController.getLprovinces().get(0).getDescription(); - } - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - return ubicacion; - } - - /** - * Devuelve las armas de un documento - * @param documento - * @return - */ - public TarmArmas armas(TarmSolicitudDocumento documento){ - try { - TarmDocumentoHabilitante documentoHabilitante=DocumentoHabilitanteController.find(documento.getPk().getCdocumento().toString()); - return ArmasController.findPorCodigo(documentoHabilitante.getCarma()); - }catch (Exception e) { - return null; - } - } - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return List - */ - public static List findPorSolicitud(String solicitudCode) { - try { - TarmSolicitudDocumentoController cc = new TarmSolicitudDocumentoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public List getDocumentos() { - return documentos; - } - - public void setDocumentos(List documentos) { - this.documentos = documentos; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudTramiteController.java.svn-base deleted file mode 100644 index c8abc55..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmSolicitudTramiteController.java.svn-base +++ /dev/null @@ -1,282 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.context.FacesContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -public class TarmSolicitudTramiteController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 3067036498159997318L; - - private static TsafeUserDetail tsafeUserDetailUsuario = null; - - private static TarmCentroControl centroControl = null; - - - - - protected TarmSolicitudTramiteController() throws Exception { - super(TarmSolicitudTramite.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - super.getMfilters().clear(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMSOLICITUDTRAMITECONTROLLER"; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.centroControl = new TarmCentroControl(); - this.create(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk desc"); - Filter f=new Filter(); - if(this.getMfilelds().get("tramites")!=null){ - f.setSql(this.getMfilelds().get("tramites").toString()); - dto.addFiltro(f); - } - - SubQuery qry2 = new SubQuery("TgeneCatalogDetail", "description", "tipotramitedesc", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = t.pk.ctramite) "// t.pk.csolicitud - + " and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(qry2); - - SubQuery qry3 = new SubQuery("TgeneCatalogDetail", "description", "categoriadesc", - "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk = t.pk.ctramite) "// t.pk.csolicitud - + " and " - + "i.pk.catalogcode = (select a.categoriacodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(qry3); - - SubQuery qry4 = new SubQuery("TgeneCatalogDetail", "description", "usodesc", - "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk = t.pk.ctramite) "// t.pk.csolicitud - + " and " - + "i.pk.catalogcode = (select a.usoactividadcodigo from TarmTramite a where a.pk = t.pk.ctramite)"); - dto.addSubQuery(qry4); - - SubQuery qry5 = new SubQuery("TcustPersonDetail", "identification", "cedula", - "i.pk.personcode = (select a.personcode from TarmSolicitud a where a.pk = t.pk.csolicitud) and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(qry5); - - SubQuery qry6 = new SubQuery("TcustPersonDetail", "name", "nombre", - "i.pk.personcode = (select a.personcode from TarmSolicitud a where a.pk = t.pk.csolicitud) and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(qry6); - - SubQuery qry7 = new SubQuery("TcustPersonDetail", "pk.personcode", "personcode", - "i.pk.personcode = (select a.personcode from TarmSolicitud a where a.pk = t.pk.csolicitud) and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(qry7); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void cambiarEstado(String estadoTramite,String estadoTramiteCodigo){ - record.setEstadotramite(estadoTramite); - record.setEstadotramitecodigo(estadoTramiteCodigo); - } - - @Override - public void save() { - try { - update(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private static String obtenerCentroControl() throws Exception { - - tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - if(tcustPersonAddres == null){ - return null; - } - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - return CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - } - - - public static TarmSolicitudTramite findPorCtramite(String ctramite) { - try { - TarmSolicitudTramiteController cc = new TarmSolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.ctramite", ctramite); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findPorCodigoTramite(String ctramite) { - try { - TarmSolicitudTramiteController cc = new TarmSolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.ctramite", ctramite); - cc.querydatabase(); - if (cc.record != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static TarmSolicitudTramite findPorCSolicitud(String csolicitud) { - try { - if(csolicitud==null || csolicitud.isEmpty()){ - return null; - } - TarmSolicitudTramiteController cc = new TarmSolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", csolicitud); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public static TarmSolicitudTramite findPorCSolicitudYCTramite(String csolicitud,String ctramite) { - try { - TarmSolicitudTramiteController cc = new TarmSolicitudTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", csolicitud); - cc.addFilter("pk.ctramite", ctramite); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public static List findTramites() { - try { - TarmSolicitudTramiteController cc = new TarmSolicitudTramiteController(); - cc.init(); - cc.recperpage = 30000000; - obtenerCentroControl(); - cc.addField("tramites", " ctramite in (select b.pk from TarmTramite b where b.tipoautorizacion = 1 and b.categoria = 14) and estadotramite in ('APB','FIN') and csolicitud in (select a.pk from TarmSolicitud a where a.ccentrocontrol = '"+centroControl.getPk()+"') and csolicitud in (select d.csolicitud from TarmDocumentoHabilitante d where d.estado = 'APR' )" - + " AND EXISTS(SELECT ARM FROM TarmSolicitudArmas solarm, TarmArmas arm WHERE solarm.pk.csolicitud = t.pk.csolicitud AND solarm.pk.carma = arm.pk AND arm.lote is null)"); - cc.querydatabase(); - if (cc.record != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmTramiteController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmTramiteController.java.svn-base deleted file mode 100644 index 9020417..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TarmTramiteController.java.svn-base +++ /dev/null @@ -1,594 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TarmTramiteController extends AbstractController { - - public TarmTramiteController() throws Exception { - super(TarmTramite.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "TARMTRAMITECONTROLLER"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - //Tipo de tramite - SubQuery subqueryTipoTramite= new SubQuery("TgeneCatalogDetail","description","tipotramite","i.pk.catalog=t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo"); - dto.addSubQuery(subqueryTipoTramite); - - SubQuery subqueryTramite= new SubQuery("TgeneCatalogDetail","description","tipoautorizacion","i.pk.catalog=t.tipoautorizacion and i.pk.catalogcode=t.tipoautorizacioncodigo"); - dto.addSubQuery(subqueryTramite); - - //Uso/Actividad - SubQuery subqueryUsoActividad= new SubQuery("TgeneCatalogDetail","description","usoactividad","i.pk.catalog=t.usoactividad and i.pk.catalogcode=t.usoactividadcodigo"); - dto.addSubQuery(subqueryUsoActividad); - - //Categoria - SubQuery subqueryCategoria= new SubQuery("TgeneCatalogDetail","description","categoria","i.pk.catalog=t.categoria and i.pk.catalogcode=t.categoriacodigo"); - dto.addSubQuery(subqueryCategoria); - - /* - //No. Tramite - SubQuery subqueryNoTramite= new SubQuery("TarmSolicitudTramite","numerotramite","numerotramite","i.pk.ctramite=t.pk"); - dto.addSubQuery(subqueryNoTramite); - - //Codigo de solicitud - SubQuery subqueryCSolicitud= new SubQuery("TarmSolicitudTramite","pk.csolicitud","csolicitud","i.pk.ctramite=t.pk"); - dto.addSubQuery(subqueryCSolicitud); - - //No. Documento - SubQuery subqueryNoDocumento= new SubQuery("TarmDocumentoHabilitante","numerodocumento","nodocumento","i.ctramite=t.pk"); - dto.addSubQuery(subqueryNoDocumento); - - //Fecha emision - SubQuery subqueryFechaEmision= new SubQuery("TarmDocumentoHabilitante","fechaemision","fechaemision","i.ctramite=t.pk"); - dto.addSubQuery(subqueryFechaEmision); - - //Fecha expiracion - SubQuery subqueryFechaExpiracion= new SubQuery("TarmDocumentoHabilitante","fechaexpiracion","fechaexpiracion","i.ctramite=t.pk"); - dto.addSubQuery(subqueryFechaExpiracion); - */ - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Tipo de autorizacion - if(record.getTipoautorizacion()!=null && !record.getTipoautorizacion().isEmpty() - && record.getTipoautorizacioncodigo()!=null && !record.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail tipoAturizacion=CatalogDetailController.findxCodigoCodcatalogo(record.getTipoautorizacion(), record.getTipoautorizacioncodigo()); - if(tipoAturizacion!=null){ - record.getModifiedData().put("tipoautorizacion", tipoAturizacion.getDescription()); - } - } - - //Poniendo el nombre de la persona al tramite - if(record.getModifiedData().get("csolicitud")!=null){ - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(record.getModifiedData().get("csolicitud").toString()); - if(solicitud!=null){ - TcustPersonDetail detallesPersona=PersonDetailController.find(solicitud.getPersoncode().toString()); - if(detallesPersona!=null){ - record.getModifiedData().put("nombre", detallesPersona.getName()); - } - } - } - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Query por criterios de tramite - */ - protected void querydatabaseCriteriosTramite(String tipoAutorizacion, String tipoTramiteCodigo, String tipoTramiteCodigo2) { - try { - DtoQuery dto = super.getDtoQuery(true); - - Filter tipoTramiteFiltro= new Filter(); -/* if(tipoAutorizacion!=null){ - cc.addFilter("tipoautorizacion", tipoAutorizacion); - } -*/ - tipoTramiteFiltro.setSql("t.tipoautorizacion = " + tipoAutorizacion + " and (t.tipotramite = " + tipoTramiteCodigo + " or t.tipotramite = " + tipoTramiteCodigo2 + ")" ); - - dto.addFiltro(tipoTramiteFiltro); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Tipo de autorizacion - if(record.getTipoautorizacion()!=null && !record.getTipoautorizacion().isEmpty() - && record.getTipoautorizacioncodigo()!=null && !record.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail tipoAturizacion=CatalogDetailController.findxCodigoCodcatalogo(record.getTipoautorizacion(), record.getTipoautorizacioncodigo()); - if(tipoAturizacion!=null){ - record.getModifiedData().put("tipoautorizacion", tipoAturizacion.getDescription()); - } - } - - //Poniendo el nombre de la persona al tramite - if(record.getModifiedData().get("csolicitud")!=null){ - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(record.getModifiedData().get("csolicitud").toString()); - if(solicitud!=null){ - TcustPersonDetail detallesPersona=PersonDetailController.find(solicitud.getPersoncode().toString()); - if(detallesPersona!=null){ - record.getModifiedData().put("nombre", detallesPersona.getName()); - } - } - } - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Query por criterios de tramite - */ - protected void querydatabaseCriteriosTramite(String tipoAutorizacion) { - try { - DtoQuery dto = super.getDtoQuery(true); - - Filter tipoTramiteFiltro= new Filter(); - - tipoTramiteFiltro.setSql("t.tipotramitecodigo = 'TIPOTRAMITE' and t.tipoautorizacion = " + tipoAutorizacion); - - dto.addFiltro(tipoTramiteFiltro); - - SubQuery stipoAutorizacion= new SubQuery - ("TgeneCatalogDetail", "description", "tipotramite", "i.pk.catalog=t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo and t.tipotramitecodigo = 'TIPOTRAMITE'"); - - dto.addSubQuery(stipoAutorizacion); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - - lrecord = (List) resp.get(beanalias); - - - - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Tipo de autorizacion - if(record.getTipoautorizacion()!=null && !record.getTipoautorizacion().isEmpty() - && record.getTipoautorizacioncodigo()!=null && !record.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail tipoAturizacion=CatalogDetailController.findxCodigoCodcatalogo(record.getTipoautorizacion(), record.getTipoautorizacioncodigo()); - if(tipoAturizacion!=null){ - record.getModifiedData().put("tipoautorizacion", tipoAturizacion.getDescription()); - } - } - - //Poniendo el nombre de la persona al tramite - if(record.getModifiedData().get("csolicitud")!=null){ - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(record.getModifiedData().get("csolicitud").toString()); - if(solicitud!=null){ - TcustPersonDetail detallesPersona=PersonDetailController.find(solicitud.getPersoncode().toString()); - if(detallesPersona!=null){ - record.getModifiedData().put("nombre", detallesPersona.getName()); - } - } - } - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Query por criterios de tramite - */ - protected void querydatabaseCriteriosTramite(String tipoAutorizacion, String tipoTramite) { - try { - DtoQuery dto = super.getDtoQuery(true); - - Filter tipoTramiteFiltro= new Filter(); - - tipoTramiteFiltro.setSql("t.tipotramitecodigo = 'TIPOTRAMITE' and t.tipoautorizacion = " + tipoAutorizacion); - - dto.addFiltro(tipoTramiteFiltro); - - SubQuery stipoAutorizacion= new SubQuery - ("TgeneCatalogDetail", "description", "tipotramite", "i.pk.catalog=t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo and t.tipotramitecodigo = 'TIPOTRAMITE'"); - - dto.addSubQuery(stipoAutorizacion); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - - lrecord = (List) resp.get(beanalias); - - - - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Tipo de autorizacion - if(record.getTipoautorizacion()!=null && !record.getTipoautorizacion().isEmpty() - && record.getTipoautorizacioncodigo()!=null && !record.getTipoautorizacioncodigo().isEmpty()){ - TgeneCatalogDetail tipoAturizacion=CatalogDetailController.findxCodigoCodcatalogo(record.getTipoautorizacion(), record.getTipoautorizacioncodigo()); - if(tipoAturizacion!=null){ - record.getModifiedData().put("tipoautorizacion", tipoAturizacion.getDescription()); - } - } - - //Poniendo el nombre de la persona al tramite - if(record.getModifiedData().get("csolicitud")!=null){ - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(record.getModifiedData().get("csolicitud").toString()); - if(solicitud!=null){ - TcustPersonDetail detallesPersona=PersonDetailController.find(solicitud.getPersoncode().toString()); - if(detallesPersona!=null){ - record.getModifiedData().put("nombre", detallesPersona.getName()); - } - } - } - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabaseDesaduanizacion() { - try { - DtoQuery dto = super.getDtoQuery(true); - - //Tipo de tramite - SubQuery subqueryTipoTramite= new SubQuery("TgeneCatalogDetail","description","tipotramite","i.pk.catalog=t.tipotramite and i.pk.catalogcode=t.tipotramitecodigo"); - dto.addSubQuery(subqueryTipoTramite); - - //Uso/Actividad - SubQuery subqueryUsoActividad= new SubQuery("TgeneCatalogDetail","description","usoactividad","i.pk.catalog=t.usoactividad and i.pk.catalogcode=t.usoactividadcodigo"); - dto.addSubQuery(subqueryUsoActividad); - - //Categoria - SubQuery subqueryCategoria= new SubQuery("TgeneCatalogDetail","description","categoria","i.pk.catalog=t.categoria and i.pk.catalogcode=t.categoriacodigo"); - dto.addSubQuery(subqueryCategoria); - - /* - //No. Tramite - SubQuery subqueryNoTramite= new SubQuery("TarmSolicitudTramite","numerotramite","numerotramite","i.pk.ctramite=t.pk"); - dto.addSubQuery(subqueryNoTramite); - - //Codigo de solicitud - SubQuery subqueryCSolicitud= new SubQuery("TarmSolicitudTramite","pk.csolicitud","csolicitud","i.pk.ctramite=t.pk"); - dto.addSubQuery(subqueryCSolicitud); - - //Estado tramite - SubQuery subqueryEstado= new SubQuery("TarmSolicitudTramite","estadotramite","estadotramite","i.pk.ctramite=t.pk"); - dto.addSubQuery(subqueryEstado); - - //No. Documento - SubQuery subqueryNoDocumento= new SubQuery("TarmDocumentoHabilitante","numerodocumento","nodocumento","i.ctramite=t.pk"); - dto.addSubQuery(subqueryNoDocumento); - - //Fecha emision - SubQuery subqueryFechaEmision= new SubQuery("TarmDocumentoHabilitante","fechaemision","fechaemision","i.ctramite=t.pk"); - dto.addSubQuery(subqueryFechaEmision); - - //Fecha expiracion - SubQuery subqueryFechaExpiracion= new SubQuery("TarmDocumentoHabilitante","fechaexpiracion","fechaexpiracion","i.ctramite=t.pk"); - dto.addSubQuery(subqueryFechaExpiracion); - */ - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - protected void querydatabaseSimple() { - try { - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Entrega una lista de requisitos. - * - * @return List - */ - public static TarmTramite find(String ctramite) { - try { - TarmTramiteController cc = new TarmTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", ctramite); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar tramite por criterios de busqueda - * @param tipoAutorizacion el codigo del tipo de autorizacion - * @return el registro de tramite encontrado - */ - public static List findPorCriteriosTramite(String tipoAutorizacion) { - try { - TarmTramiteController cc = new TarmTramiteController(); - cc.init(); - cc.recperpage = 30000; - - cc.querydatabaseCriteriosTramite(tipoAutorizacion); - - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar tramite por criterios de busqueda - * @param tipoTramite el codigo del tipo de tramite - * @param tipoTramite2 otro codigo de tipo de tramite - * @param tipoAutorizacion el codigo del tipo de autorizacion - * @return el registro de tramite encontrado - */ - public static List findPorCriteriosTramite(String tipoTramite, String tipoTramite2, String tipoAutorizacion) { - try { - TarmTramiteController cc = new TarmTramiteController(); - cc.init(); - cc.recperpage = 30000; - - cc.querydatabaseCriteriosTramite(tipoAutorizacion, tipoTramite, tipoTramite2); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de requisitos. - * - * @return List - */ - public static TarmTramite findSimple(String ctramite) { - try { - TarmTramiteController cc = new TarmTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", ctramite); - cc.querydatabaseSimple(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Busca tramites para desaduanizacion - */ - public static List findTramitesDesaduanizar() { - try { - TarmTramiteController cc = new TarmTramiteController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("tipoautorizacion", "1"); - cc.addFilter("categoria", "14"); - //cc.addFilter("usoactividad", "27"); - cc.querydatabaseDesaduanizacion(); - if (cc.lrecord != null) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.netbeans-base deleted file mode 100644 index fdd13c8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.netbeans-base +++ /dev/null @@ -1,2788 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.eval.EvaluacionController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.CargasLovController; -import com.fp.frontend.controller.armas.parametros.BuscarTramiteLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.OrigenTramiteController; -import com.fp.frontend.controller.armas.parametros.RequisitoPorTramiteController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.CommonTransformer; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.webservices.snap.cedula.ClienteCedula; -import com.fp.frontend.webservices.snap.ruc.ClienteRUC; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmOrigenTramite; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitosKey; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -import ec.gob.registrocivil.consultacedula.Cedula; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - -/** - * Clase controladora de ingreso de tramites de control de armas. - * - * @author Jorge Vaca. - * @author dcruz - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TramiteArmasController extends AbstractController { - - private Boolean mostrarFiltroAUCP = Boolean.FALSE; - - private String filterAUCP; - - /** - *Responsable de centro de control - */ - private TcustPersonDetail responsableCentroControl= null; - /** - * Detalle de Usuarios - */ - private TsafeUserDetail tsafeUserDetailUsuario = null; - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - - /** - * Lista de provincias - */ - private List lprovincias; - - /** - * Lista de cantones de origen - */ - private List lcantonOrigen; - - /** - * Lista de cantones de destino - */ - private List lcantonDestino; - /** - * Longitud de la identificacion de una persona. - */ - private Integer longitudid; - - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - - /** - * Atributo para activar el keyFilter - */ - private boolean activarRegExIdentificacion; - - /** - * Indica si el flujo ya fue iniciado, sirve para controlar que no iniciar el flujo mas de una vez. - */ - private boolean flujoiniciado = false; - - private boolean esaprobacion = false; - - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - - /** - * Muestra el botón de ingreso de armas - */ - private boolean mostrarIngresoArmas; - /** - * codigo de la persona que hace la solicitud - */ - private Integer cpersona = 0; - /** - * Atributo que oculpa botones del flujo - */ - private boolean ocultarBotonInicioFlujo = true; - - /** - * Fecha actual - */ - private Date fechaActual = new Date(); - - - private String csolicitud; - - /** - * Bandera de tipo booleano para indicar si se ha grabado el reporte generado - * */ - private Boolean isEnableGrabar; - /** - * Trámite seleccionado - */ - private TarmTramite tarmTramite; - - /** - * Habilita campos en actualización de datos generales - */ - private boolean actualizaDatosGenerales; - - /** - * Aprueba si es guía de libre tránsito - */ - private boolean guiaLibreTransito; - - /** - * Lista Personas vendedoreas - */ - private Set listaPersonasDetailVen; - /** - * Vendedor seleccionado - */ - private Integer selecionaCodigoVendedor; - - /** - * Controlador de login - */ - @ManagedProperty(value = "#{loginController}") - private LoginController login; - - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los requisitos - */ - @ManagedProperty(value = "#{requisitoPorTramiteController}") - private RequisitoPorTramiteController requisitoPorTramite; - - /** - * Controlador que maneja guardias - */ - @ManagedProperty(value = "#{guardiasController}") - private GuardiasController guardias; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - /** - * Controlador Inyectado ReportController - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador que maneja las evaluaciones de las personas - */ - @ManagedProperty(value="#{evaluacionController}") - private EvaluacionController evaluacionController; - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - TgeneCatalogDetail tipoTramite = null ; - TgeneCatalogDetail tipoAutorizacion = null; - TgeneCatalogDetail actividad = null; - /** - * codigo de la provincia del usuario logueado - */ - private String cprovincia; - - private List centroControlList; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoDocumento; - - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - - /** - * codigo del ruc - */ - private String codigoPasaporte; - - /** - * Atributo para setear el vendedor - */ - private TcustPersonDetail tcustPersonDetailVendedor; - - public TramiteArmasController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.init(); - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lprovincias = ProvinceController.find("EC"); - lorigenadquisicion = new ArrayList(); - - // Inicializa autoconsulta -// super.startQuery(); - ocultarBotonInicioFlujo = true; - isEnableGrabar = Boolean.TRUE; - if (super.getMfilters().get("pk.csolicitud") != null) { - esaprobacion = true; - } - centroControlList=CentroControlArmasController.findEstadoInst("Y","1");//Departamento - this.querydatabase(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - * @throws Exception - */ - private void init() throws Exception { - this.beanalias="SOLICITUD"; - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - tipoDocumento = CatalogDetailController.find("IDENTIFICATION"); - listaPersonasDetailVen = new HashSet(); - tcustPersonDetailVendedor=null; - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - this.obtenerCentroControl(); - this.obtenerResponsableCentroControl(); - } - -// public String onFlowProcess(FlowEvent event) { -// if (!flujoiniciado) { -// this.saveCabecera(); -// } -// return event.getNewStep(); -// } - - @Override - public void save() { - try { - if(deshabilitarPantalla){ - return; - } - try { - if(!noValidaDocumentoHabilitante(tipoTramite,tipoAutorizacion,actividad)){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_listardocumentos_solo")); - return; - } - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_listardocumentos")); - return; - } - - //validamos si tcustPersonDetailPortador este lleno o si han seleccionado sin portador para asignarle el por default - if(tcustPersonDetailVendedor==null && tarmTramite.getTipoautorizacion().equals("4")){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesinportadoroverifiqueusuarioexistentevendedor")); - return; - } - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - solicitud.fijaPersona(detallepersona.getRecord()); - solicitud.fijaInicioFlujoEnNO(); - solicitud.update(); - - DtoSave dtosavesol = solicitud.getDtoSave(); - dtosavesol.setIsForm(true); - dtosavesol.setReturnpk(true); - dtosavesol.setPosition(1); - msave.put(solicitud.getBeanalias(), dtosavesol); // adicionar metadata de mantenimiento para cada tabla. - - DtoSave dtosavereq = requisitos.getDtoSave(); - dtosavereq.setReturnpk(true); - dtosavereq.setPosition(2); - msave.put(requisitos.getBeanalias(), dtosavereq); // adicionar metadata de mantenimiento para cada tabla. - - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("isnew", "N"); - request.setSaveTables(msave); - - //this.setearCodigoCentroControl(); - - this.modificaDatosGenerales(); - - this.actualizaDirecciones(); - - this.actualizarTelefonos(); - - //guardias - this.copiaGuardias(); - - //armas - this.copiaArmas(); - - //agencias - this.copiaAgencias(); - - //documentos - this.copiaDocumentos(); - - //agencia armas - this.copiaAgenciaArmas(); - - if(!validacionFormulario()){ - return; - } - - //guardias - DtoSave dtosaveguardias = solicitudGuardias.getDtoSave(); - dtosaveguardias.setReturnpk(Boolean.TRUE); - dtosaveguardias.setPosition(3); - msave.put(solicitudGuardias.getBeanalias(), dtosaveguardias); - - //armas - DtoSave dtosavearmas = solicitudArmas.getDtoSave(); - dtosavearmas.setReturnpk(Boolean.TRUE); - dtosavearmas.setPosition(4); - msave.put(solicitudArmas.getBeanalias(), dtosavearmas); - - //agencias - DtoSave dtosaveagencias = solicitudAgenciaSucursal.getDtoSave(); - dtosaveagencias.setReturnpk(Boolean.TRUE); - dtosaveagencias.setPosition(5); - msave.put(solicitudAgenciaSucursal.getBeanalias(), dtosaveagencias); - - //solicitud_documentos - DtoSave dtosavedocumentos = solicitudDocumento.getDtoSave(); - dtosavedocumentos.setReturnpk(Boolean.TRUE); - dtosavedocumentos.setPosition(6); - msave.put(solicitudDocumento.getBeanalias(), dtosavedocumentos); - - //direcciones - DtoSave dtosavedirecciones = direccion.getDtoSave(); - dtosavedirecciones.setReturnpk(Boolean.TRUE); - dtosavedirecciones.setPosition(7); - msave.put(direccion.getBeanalias(), dtosavedirecciones); - - DtoSave dtosavetelefono = telefono.getDtoSave(); - dtosavetelefono.setReturnpk(Boolean.TRUE); - dtosavetelefono.setPosition(8); - msave.put(telefono.getBeanalias(), dtosavetelefono); - - DtoSave dtodatosgenerales = detallepersona.getDtoSave(); - dtodatosgenerales.setReturnpk(Boolean.TRUE); - dtodatosgenerales.setPosition(9); - msave.put(detallepersona.getBeanalias(), dtodatosgenerales); - - DtoSave dtosaveagenciaarmas = agenciaArma.getDtoSave(); - dtosaveagenciaarmas.setPosition(10); - msave.put(agenciaArma.getBeanalias(), dtosaveagenciaarmas); - - //documentoHabilitante - DtoSave dtosaveDocumentoHabilitante = documentoHabilitante.getDtoSave(); - dtosaveDocumentoHabilitante.setReturnpk(Boolean.TRUE); - dtosaveDocumentoHabilitante.setPosition(11); - msave.put(documentoHabilitante.getBeanalias(), dtosaveDocumentoHabilitante); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - managedSaveResponse(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(tarmTramite.getCategoria().equals("14")){ - asociarCargaSolicitud(); - } - MessageHelper.setMessageInfo(resp); - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } else { - ocultarBotonInicioFlujo = true; - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void asociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(solicitud.getRecord().getPk()); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void saveInicioFlujoEnYES() { - try { - - solicitud.fijaInicioFlujoEnYES(); - solicitud.update(); - - DtoSave dtoSolicitud = solicitud.getDtoSave(); - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitud.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitud.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - private void managedSaveResponse(Response response) throws Exception{ - csolicitud = response.get("csolicitud").toString(); - solicitud.postCommit(response); - requisitos.postCommit(response); - solicitudGuardias.postCommit(response); - solicitudArmas.postCommit(response); - solicitudAgenciaSucursal.postCommit(response); - solicitudDocumento.postCommit(response); - // flujoiniciado = Boolean.TRUE; - isEnableGrabar = Boolean.FALSE; - deshabilitarPantalla = Boolean.TRUE; - solicitud.getMfilelds().put("estadoSolicitud", "REGISTRADO"); - } - - - /** - * Metodo que valida si ha sido seleccionado ams de un documento en el criterio validado - * @param tipoTramite - * @param tipoAutorizacion - * @param actividad - * @return - * @throws Exception - */ - private boolean noValidaDocumentoHabilitante(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - int count= 0 ; - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - - for(TarmDocumentoHabilitante documento:documentoHabilitante.getLrecord()){ - if(documento.getModifiedData().get("seleccionado").equals(Boolean.TRUE) ){ - count++; - } - if(count>1){ - return false; - } - } - if(count==0){ - throw new Exception(MsgControlArmas.getProperty("msg_error_listardocumentos")); - - } - } - - if((tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())) || - (tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())) || - (tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()))) - { - //validamos si el tramite esta chequeado documentohabilitante - if(tarmTramite.getDocumentohabilitante().equals(Constant.STR_Y)){ - for(TarmDocumentoHabilitante documento:documentoHabilitante.getLrecord()){ - if(count>0){ - break; - } - - if(documento.getModifiedData().get("seleccionado").equals(Boolean.TRUE) ){ - count++; - } - } - if(count==0){ - throw new Exception(MsgControlArmas.getProperty("msg_error_listardocumentos")); - } - } - } - - return true; - } - - /** - * Actualizo datos de la persona - * @throws Exception - */ - private void modificaDatosGenerales() throws Exception{ - detallepersona.update(); - } - - /** - * Actualizo el valor de las direcciones siempre y cuando haya existido un cambio en su valor - */ - private void actualizaDirecciones(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.setRecord(direccionPersona); - direccion.getRecord().setCountrycode(direccion.getMfilelds().get("solcodpais").toString()); - direccion.getRecord().setProvincecode(direccion.getMfilelds().get("solcodprovincia").toString()); - direccion.getRecord().setCantoncode(direccion.getMfilelds().get("solcodcanton").toString()); - direccion.getRecord().setCitycode(direccion.getMfilelds().get("solcodciudad").toString()); - direccion.getRecord().setParroquiacode(direccion.getMfilelds().get("solcodparroquia").toString()); - direccion.getRecord().setAddress(direccion.getMfilelds().get("soldireccion").toString()); - direccion.update(); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.setRecord(correo); - direccion.getRecord().setAddress(direccion.getMfilelds().get("solcorreopersona").toString()); - direccion.update(); - } - } - - /** - * Actualizo los números de teléfono si es que existe un cambio - * @throws Exception - */ - private void actualizarTelefonos() throws Exception { - TcustPersonPhone telefonoLocal = null; - telefonoLocal = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("phonetypecatalog"), PredicateUtils.equalPredicate("1"))); - TcustPersonAddress direccionPrincipal = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("principal"), PredicateUtils.equalPredicate(Constant.STR_Y))); - Integer codigodireccion = direccionPrincipal != null ? direccionPrincipal.getPk().getAddressnumber() : null; - if(telefonoLocal != null){ - telefono.setRecord(telefonoLocal); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelfijo") != null ? telefono.getMfilelds().get("soltelfijo").toString() : null); - telefono.update(); - }else{ - telefono.create(); - telefono.getRecord().getPk().setPersoncode(cpersona); - telefono.getRecord().getPk().setPhonesequence(1); - telefono.getRecord().getPk().setDateto(Utilidades.getFechaExpiracion()); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelfijo") != null ? telefono.getMfilelds().get("soltelfijo").toString() : null); - telefono.getRecord().setDatefrom(new Timestamp(System.currentTimeMillis())); - telefono.getRecord().setPhonetypecatalogcode("PHONETYPE"); - telefono.getRecord().setPhonetypecatalog("1"); - telefono.getRecord().setAddressnumber(codigodireccion); - telefono.update(); - } - TcustPersonPhone telefonoCelular = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("phonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telefonoCelular != null){ - telefono.setRecord(telefonoCelular); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelcelular") != null ? telefono.getMfilelds().get("soltelcelular").toString() : null); - telefono.update(); - }else{ - telefono.create(); - telefono.getRecord().getPk().setPersoncode(cpersona); - telefono.getRecord().getPk().setPhonesequence(2); - telefono.getRecord().getPk().setDateto(Utilidades.getFechaExpiracion()); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelcelular") != null ? telefono.getMfilelds().get("soltelcelular").toString() : null); - telefono.getRecord().setDatefrom(new Timestamp(System.currentTimeMillis())); - telefono.getRecord().setPhonetypecatalogcode("PHONETYPE"); - telefono.getRecord().setPhonetypecatalog("2"); - telefono.getRecord().setAddressnumber(codigodireccion); - telefono.update(); - } - } - - /** - * Copia los guardias de la tabla {@link TarmGuardias} a {@link TarmSolicitudGuardias} - * @throws Exception - */ - private void copiaGuardias() throws Exception { - if(seleccionarGuardias && guardias.getLrecord() != null && !guardias.getLrecord().isEmpty()){ - for (TarmGuardias guardia : guardias.getLrecord()) { - TarmSolicitudGuardias guardiaSeleccionado = (TarmSolicitudGuardias) CollectionUtils.find(solicitudGuardias.getLrecord(), - PredicateUtils.andPredicate( - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cempresa"), PredicateUtils.equalPredicate(cpersona)), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cguardia"), PredicateUtils.equalPredicate(guardia.getPk())))); - if(guardia.getModifiedData().get("seleccionado") != null && Boolean.valueOf(guardia.getModifiedData().get("seleccionado").toString())){ - if(guardiaSeleccionado == null){ - solicitudGuardias.create(); - solicitudGuardias.getRecord().getPk().setCempresa(cpersona); - solicitudGuardias.getRecord().getPk().setCguardia(guardia.getPk()); - solicitudGuardias.update(); - } - }else{ - if(guardiaSeleccionado != null){ - solicitudGuardias.setRecord(guardiaSeleccionado); - solicitudGuardias.remove(); -// solicitudGuardias.update(); - } - } - } - } - } - - /** - * Copia las armas a {@link TarmSolicitudArmas} - * @throws Exception - */ - private void copiaArmas() throws Exception { - if(seleccionarArmas && armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - for (TarmArmas arma : armas.getLrecord()) { - TarmSolicitudArmas armaSeleccionada = (TarmSolicitudArmas) CollectionUtils.find(solicitudArmas.getLrecord(), - PredicateUtils.andPredicate( - PredicateUtils.transformedPredicate(new CommonTransformer("pk.personcode"), PredicateUtils.equalPredicate(cpersona)), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.carma"), PredicateUtils.equalPredicate(arma.getPk())))); - if(arma.getModifiedData().get("seleccionado") != null && Boolean.valueOf(arma.getModifiedData().get("seleccionado").toString())){ - if(armaSeleccionada == null){ - solicitudArmas.create(); - solicitudArmas.getRecord().getPk().setPersoncode(cpersona); - solicitudArmas.getRecord().getPk().setCarma(arma.getPk()); - solicitudArmas.update(); - } - }else{ - if(armaSeleccionada != null){ - solicitudArmas.setRecord(armaSeleccionada); - solicitudArmas.remove(); -// solicitudArmas.update(); - } - } - } - } - } - - /** - * Copia las agencias a {@link TarmSolicitud} - * @throws Exception - */ - private void copiaAgencias() throws Exception{ - if(seleccionarAgencias && agenciaSucursal.getLrecord() != null && !agenciaSucursal.getLrecord().isEmpty()){ - for (TarmAgenciaSucursal agencia : agenciaSucursal.getLrecord()) { - TarmSolicitudAgenciaSucursal agenciaSeleccionada = (TarmSolicitudAgenciaSucursal) CollectionUtils.find(solicitudAgenciaSucursal.getLrecord(), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cagencia"), PredicateUtils.equalPredicate(agencia.getPk()))); - if(agencia.getModifiedData().get("seleccionado") != null && Boolean.valueOf(agencia.getModifiedData().get("seleccionado").toString())){ - if(agenciaSeleccionada == null){ - solicitudAgenciaSucursal.create(); - solicitudAgenciaSucursal.getRecord().getPk().setCagencia(agencia.getPk()); - solicitudAgenciaSucursal.update(); - } - }else{ - if(agenciaSeleccionada != null){ - solicitudAgenciaSucursal.setRecord(agenciaSeleccionada); - solicitudAgenciaSucursal.remove(); -// solicitudAgenciaSucursal.update(); - } - } - } - } - } - - /** - * Copia los documentos para procesarse en la solcitud - * @throws Exception - */ - private void copiaDocumentos() throws Exception{ - if(listarDocumentos && documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - for (TarmDocumentoHabilitante docHabilitante : documentoHabilitante.getLrecord()) { - TarmSolicitudDocumento documentoSeleccionado = (TarmSolicitudDocumento) CollectionUtils.find(solicitudDocumento.getLrecord(), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cdocumento"), PredicateUtils.equalPredicate(docHabilitante.getPk()))); - if(docHabilitante.getModifiedData().get("seleccionado") != null && Boolean.valueOf(docHabilitante.getModifiedData().get("seleccionado").toString())){ - if(documentoSeleccionado == null){ - solicitudDocumento.create(); - solicitudDocumento.getRecord().getPk().setCdocumento(docHabilitante.getPk()); - solicitudDocumento.update(); - // Cambiar el centro de control del documento al centro control de armas actual - if(docHabilitante.getCentrocontrol().equalsIgnoreCase("999999")){ - docHabilitante.setCentrocontrol(centroControl.getPk()); - documentoHabilitante.update(docHabilitante); - } - } - }else{ - if(documentoSeleccionado != null){ - solicitudDocumento.setRecord(documentoSeleccionado); - solicitudDocumento.remove(); -// solicitudDocumento.update(); - } - } - } - } - } - - /** - * Copia las armas seleccionadas a la agencia seleccionada debe ejecutarse después de - * @throws Exception - */ - private void copiaAgenciaArmas() throws Exception{ - if(seleccionarAgencias){ - Long cagencia = solicitudAgenciaSucursal.getLrecord().iterator().next().getPk().getCagencia(); - for (TarmSolicitudArmas tarmSolicitudArmas : solicitudArmas.getLrecord()) { - agenciaArma.create(); - agenciaArma.getRecord().getPk().setCagencia(cagencia); - agenciaArma.getRecord().getPk().setCarma(tarmSolicitudArmas.getPk().getCarma()); - agenciaArma.update(); - } - } - } - - /** - * Valida que solo se seleccione una agencia en la solicitud - * @param event - */ - public void validaAgenciaUnica(AjaxBehaviorEvent event) { - Boolean valorComponente = (Boolean) (event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value") : null); - if(valorComponente){ - int cont = 0; - for (TarmAgenciaSucursal tarmAgenciaSucursal : agenciaSucursal.getLrecord()) { - if(tarmAgenciaSucursal.getModifiedData().get("seleccionado") != null && Boolean.parseBoolean(tarmAgenciaSucursal.getModifiedData().get("seleccionado").toString())){ - cont++; - } - if(cont > 1){ - agenciaSucursal.getLrecord().get(Integer.parseInt(event.getComponent().getAttributes().get("indiceActual").toString())).getModifiedData().put("seleccionado", Boolean.FALSE); - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_unicidad_agencia")); - break; - } - } - } - } - - /** - * Realiza las validaciones pertinentes del formulario - * @return - */ - private boolean validacionFormulario(){ - //Valido el tramite que se ha escogido un tramite - Boolean valido = Boolean.TRUE; - if(solicitud.getRecord().getCtramite() == null){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite")); - valido = Boolean.FALSE; - } - if(ingresarRequisitos){ - int tamReq = requisitos.getLrecord().size(); - int tamReqSel = 0; - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - if(solicitudRequisitos.getCargado() != null && solicitudRequisitos.getCargado().equals(Constant.STR_Y)){ - tamReqSel++; - } - } - if(tamReq==0){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_no_requisitos")); - valido = Boolean.FALSE; - }else if(tamReq != tamReqSel){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requisitos")); - valido = Boolean.FALSE; - } - } - if(seleccionarArmas){ - //tramite autorizacion primera vez/renovacion Estableciiento de agencias Companias de vigilancia y seguridad - TgeneParameters parametro=ParametersController.find("CODIGO.TRAMITE.NOVALIDAARMAS", "1"); - ListcodigoTramiteNoValidaArma=null; - if(parametro!=null){ - codigoTramiteNoValidaArma=new ArrayList<>(); - String []arrayTramitesNoValidaArmas= parametro.getTextvalue().split(","); - for (String item : arrayTramitesNoValidaArmas) { - codigoTramiteNoValidaArma.add(Long.parseLong(item)); - } - } - - if(this.tarmTramite!= null && codigoTramiteNoValidaArma!=null && codigoTramiteNoValidaArma.contains(this.tarmTramite.getPk())){ - System.out.println("Tramite-"+this.tarmTramite.getPk()); - //pasa - }else if(solicitudArmas.getLrecord() == null || solicitudArmas.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_armas")); - valido = Boolean.FALSE; - } else if(tarmTramite.getNumeromaxarmas() != null && tarmTramite.getNumeromaxarmas().intValue() < solicitudArmas.getLrecord().size()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_maximo_armas"), tarmTramite.getNumeromaxarmas()); - valido = Boolean.FALSE; - } - } - if(seleccionarGuardias){ - if(solicitudGuardias.getLrecord() == null || solicitudGuardias.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_guardias")); - valido = Boolean.FALSE; - } - } - if(seleccionarAgencias){ - if(solicitudAgenciaSucursal.getLrecord() == null || solicitudAgenciaSucursal.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_agencias")); - valido = Boolean.FALSE; - } - } - if(listarDocumentos){ - if(documentoHabilitante.getLrecord() == null || documentoHabilitante.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - valido = Boolean.FALSE; - }else if(solicitudDocumento.getLrecord() == null || solicitudDocumento.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_documento")); - valido = Boolean.FALSE; - } - } - return valido; - } - -// public void saveCabecera() { -// try { -// Request request = callerhelper.getRequest(); -// HashMap msave = new HashMap(); -// solicitud.fijaPersona(detallepersona.getRecord()); -// solicitud.update(); -// -// DtoSave dtosavesol = solicitud.getDtoSave(); -// dtosavesol.setIsForm(true); -// dtosavesol.setReturnpk(true); -// dtosavesol.setPosition(1); -// msave.put(solicitud.getBeanalias(), dtosavesol); // adicionar metadata de mantenimiento para cada tabla. -// -// request.setSaveTables(msave); -// request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); -// request.modifiedData().put("isnew", "N"); -// -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// solicitud.postCommit(resp); -// ocultarBotonInicioFlujo = false; -// MessageHelper.setMessageInfo(resp); -// } else { -// ocultarBotonInicioFlujo = true; -// MessageHelper.setMessageError(resp); -// } -// -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } -// } - - @Override - protected void querydatabase() { - try { - if(deshabilitarPantalla){ - return; - } - detalleusuario.getMfilters().clear(); - detalleusuario.getMfilters().put("pk.usercode", login.getRequest().getUser()); - detalleusuario.addFilterDateto(); - detalleusuario.query(); - if (detalleusuario.getRecord() == null || detalleusuario.getRecord().getPk().getPersoncode() == null) { - return; - } - - cpersona = detalleusuario.getRecord().getPk().getPersoncode(); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", cpersona.toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(cpersona.toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(cpersona.toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(cpersona.toString()); - telefono.addFilterDateto(); - telefono.query(); - - this.obtenerTelefonos(); - - this.setearDatosGenerales(); - //creamos una solicitud por default cuando se consulta por primera vez y al transaccion es 20 - if (this.getLoginController().getRequest().getTransactionModule().equals("30") && this.getLoginController().getRequest().getTransactionCode() == 20) { - solicitud.create(); - solicitud.getRecord().setFregistro(new java.sql.Date(System.currentTimeMillis())); - this.obtenerSecuencialSolicitud(); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Muestra un mensaje de error siempre y cuando sea un error de componente y se lo muestra como general - * @return - */ - public Boolean getExisteMensajesError() { - Boolean resp = Boolean.FALSE; - FacesContext facesContext = FacesContext.getCurrentInstance(); - final Iterator idComponentesMensajes = facesContext.getClientIdsWithMessages(); - while(idComponentesMensajes.hasNext()){ - String idComp = idComponentesMensajes.next(); - if(StringUtils.isNotBlank(idComp)){ - System.out.println("El id es "+idComp.replace(":", "\\\\:")); - System.out.println("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - facesContext.validationFailed(); - resp = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - break; - } - } - return resp; - } - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ -// private void setearCodigoCentroControl(){ -// TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? -// direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); -// if(centroControlJur != null){ -// this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); -// } -// } - - /** - * Ingresa datos que se necesitan en arma - */ - private void setearDatosGenerales(){ - TcustPersonDetail tcustPersonDetail = PersonDetailController.find(cpersona.toString()); - armas.getMfilelds().put("numdoc", tcustPersonDetail.getIdentification()); - armas.getMfilelds().put("tipodoc", tcustPersonDetail.getIdentificationcatalog()); - } - - /** - * Arma la petición al core para solicitar un número de secuencial para la solicitud antes de guardarla - * @throws Throwable - */ - private void obtenerSecuencialSolicitud() throws Throwable{ - Request request = callerhelper.getRequest(); - DtoQuery dtoQuery = super.getDtoQuery(true); - HashMap mapQuery = new HashMap(); - mapQuery.put(beanalias, dtoQuery); - request.put("querytype", "T"); - request.setQueryTables(mapQuery); - Response response = callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(response); - }else{ - solicitud.getRecord().setNumerosolicitud(response.get("SECUENCIALSOLICITUD").toString()); - } - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - cprovincia=null; - for(TarmCentroControl centro: centroControlList){ - if(solicitud.getRecord().getCcentrocontrol().equals(centro.getPk())){ - cprovincia=centro.getProvincecode(); - } - } - ; - if(cprovincia==null || cprovincia.length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("numerosolicitud", solicitud.getRecord().getNumerosolicitud()); - request.modifiedData().put("numerotransaccion", solicitud.getRecord().getCtramite()); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("isnew", "Y"); - - request.setLogsolicitude(solicitud.getRecord().getNumerosolicitud()); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - flujoiniciado = true; - deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: " + solicitud.getRecord().getNumerosolicitud()); - saveInicioFlujoEnYES(); -// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Evento que se ejecuta cuando cambia el origen de adquisición - */ - public void executeOrigenAdquisicion() { - - TarmTramite tramite = this.solicitud.getRecord().getCtramite() != null ? TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()) : null; - if((this.solicitud.getRecord().getOrigenadquisicion() != null && this.solicitud.getRecord().getOrigenadquisicion().equals("DEC")) - || (tramite != null && tramite.getTipoautorizacion().equals("1") && tramite.getCategoria().equals("10"))){ - this.mostrarIngresoArmas = Boolean.TRUE; - } else{ - this.mostrarIngresoArmas = Boolean.FALSE; - } - } - - @Override - public void postCommit(Response response) throws Exception { - } - - /** - * Datos de control de la identificacion de la persona. - */ - public void onChangeTipoId() { - String tipoid = super.getMfilelds().get("tipoidentificacion").toString(); - switch (tipoid) { - case "CED": - longitudid = 10; - activarRegExIdentificacion = true; - break; - case "RUC": - longitudid = 13; - activarRegExIdentificacion = true; - break; - default: - longitudid = 13; - activarRegExIdentificacion = false; - break; - } - } - - /** - * Abre el LOV de trámite - */ - public void openLovTramite() { - Map> params = new HashMap>(); - List ltipopersona = new ArrayList<>(); - if(validaNumeros(detallepersona.getRecord().getIdentification())){ - if(detallepersona.getRecord().getIdentification().length()==10){ - ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.NATURAL", "1").getTextvalue());//1 - }else{ - ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.JURIDICA", "1").getTextvalue());//2 - } - } - params.put("tipopersonasol", ltipopersona); - BuscarTramiteLovController.openLov(params); - } - - private boolean validaNumeros(String cadena){ - Boolean aux=Boolean.FALSE; - if (cadena.matches("[0-9]*")){ - System.out.println("Es un n�mero"); - aux=Boolean.TRUE; - }else{ - System.out.println("No es un n�mero"); - aux=Boolean.FALSE; - } - return aux; - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.armas.getRecord().getModifiedData().put("clase", clase.getDescription()); - this.armas.setClase(clase.getPk().getCatalog()); - } - - /** - * Regresa del LOV para cargar valores - * @param event {@link SelectEvent} - */ - public void onReturnTramite(SelectEvent event) { - try{ - TarmTramite tramite = (TarmTramite) event.getObject(); - this.tarmTramite = tramite; -// if(!procedeTramite(TarmTramiteController.find(tramite.getCtramitepadre() != null ? tramite.getCtramitepadre().toString() : "-1"),tramite.getPk())){ - if(!procedeTramite(tramite)){ - return; - } - if(!verificaAptitudPersona(tarmTramite)){ - return; - } - solicitud.getRecord().setCtramite(tramite.getPk()); - tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - - if(tarmTramite.getTipotramite().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.actualizaDatosGenerales = Boolean.TRUE; - } else{ - this.actualizaDatosGenerales = Boolean.FALSE; - } - - if(tarmTramite.getTipoautorizacion().equals("4")){//Guia de libre transito - this.guiaLibreTransito = Boolean.TRUE; - if(!this.actualizaDatosGenerales){ - this.actualizaDatosGenerales = Boolean.TRUE; - } - } else{ - this.guiaLibreTransito = Boolean.FALSE; - } - - this.ingresarRequisitos = Boolean.TRUE; - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - listarDocumentos(tipoTramite,tipoAutorizacion, actividad);//Se listan los documentos en el tab listar documentos - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - requisitoPorTramite.getMfilters().put("pk.ctramite", tramite.getPk().toString()); - requisitoPorTramite.setRecperpage(3000000); - requisitoPorTramite.setcTramite(tramite.getPk()); - requisitoPorTramite.query(); - requisitos.clearAll();//limpio los datos del requisito anterior - for (TarmRequisitoPorTipoTramite requisitoPorTipoTramite : requisitoPorTramite.getLrecord()) { - requisitos.create(); - requisitos.getRecord().setCargado(Constant.STR_N); - requisitos.getRecord().setPk(new TarmSolicitudRequisitosKey()); - requisitos.getRecord().getPk().setCrequisito(requisitoPorTipoTramite.getPk().getCrequisito()); - requisitos.getRecord().getPk().setCtramite(tramite.getPk()); - requisitos.getRecord().getModifiedData().put("crequisito", requisitoPorTipoTramite.getModifiedData().get("crequisito")); - requisitos.getRecord().getModifiedData().put("nrequisito", requisitoPorTipoTramite.getModifiedData().get("nrequisito")); - requisitos.getRecord().getModifiedData().put("ndescripcion", requisitoPorTipoTramite.getModifiedData().get("ndescripcion")); - requisitos.update(); - } - } - - if(tarmTramite.getUsoactividad().equals("2") || tarmTramite.getUsoactividad().equals("24")){//2 AGENCIA // 24 SUCURSAL - if(agenciaSucursal!= null && agenciaSucursal.getTipoAgencias()!=null && agenciaSucursal.getTipoAgencias().size()>0){ - TgeneCatalogDetail remover=new TgeneCatalogDetail(); - agenciaSucursal.setTipoAgencias(CatalogDetailController.find("TIPOAGENCIA")); - for(TgeneCatalogDetail item:agenciaSucursal.getTipoAgencias()){ - if(!tarmTramite.getUsoactividad().equals("2")){ - if(item.getPk().getCatalog().equals(ParametersController.find("CODIGO.AGENCIA.TIPOAGENCIA", "1").getTextvalue())){//"AGE" - remover=item; - } - } - if(!tarmTramite.getUsoactividad().equals("24")){ - if(item.getPk().getCatalog().equals(ParametersController.find("CODIGO.SUCURSAL.TIPOAGENCIA", "1").getTextvalue())){//"SUC" - remover=item; - } - } - } - agenciaSucursal.getTipoAgencias().remove(remover); - } - } - - //AQUI VA EL CODIGO PARA LLENAR LAS ADQUISICION - lorigenadquisicion = null; - lorigenadquisicion = new ArrayList(); - List origenTramites = OrigenTramiteController.findOrigenTramite(tarmTramite); - if(origenTramites!=null && !origenTramites.isEmpty()){ - for (int i = 0; i < origenTramites.size(); i++) { - TarmOrigenTramite origenTramite = origenTramites.get(i); - if(origenTramite!= null && origenTramite.getPk().getOrigencatalog()!=null && origenTramite.getPk().getOrigencatalogcode() != null && - !origenTramite.getPk().getOrigencatalog().isEmpty() && !origenTramite.getPk().getOrigencatalogcode().isEmpty()){ - lorigenadquisicion.add(CatalogDetailController.findCatalogo(origenTramite.getPk().getOrigencatalogcode(), origenTramite.getPk().getOrigencatalog())); - } - } - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - - - } - - /** - * Metodo para listar el listado de documentos para los diferentes critesrios de seleccion - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad actividad - * @throws Exception - */ - private void listarDocumentos(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_actualizacionDeDatos")).getPk().getCatalog())){ - this.cargarTodosDocumentosPersona(); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()); - } - if(documentoHabilitante.getLrecord() == null || documentoHabilitante.getLrecord().isEmpty()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - } - } - - - /** - * Verifica si el trámite ingresado cumple la prevalidación - * TarmTramite tramite es el tramite padre validamos si este tiene codigo alterno - * Creado FPAZMINO - * @return - */ - private boolean procedeTramite(TarmTramite tramite){ - if(tramite.getCtramitepadre() == null && tramite.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - Boolean procede = Boolean.FALSE; - String msgErrorTramitePadre = ""; - //consulta del tramite padre - TarmTramite tramitePadre = TarmTramiteController.find(tramite.getCtramitepadre() != null ? tramite.getCtramitepadre().toString() : "-1"); - //consulta por tramite padre - if(tramitePadre!=null){ - Boolean debeValidarCaducidad = (tramite.getValidacaducidadpadre()!=null && tramite.getValidacaducidadpadre().equalsIgnoreCase("Y"))?true:false; - //consulta documento habilitante del codigo padre alterno - documentoHabilitante.querydatabaseDocumentosCriterioFiltro(Arrays.asList(tramitePadre), debeValidarCaducidad, cpersona.toString()); - if(documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - if(tramitePadre.getCtramitepadre() == null && tramitePadre.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - else{ - procede = procedeTramite(tramitePadre); - } - } else{ - procede = Boolean.FALSE; - msgErrorTramitePadre = MsgControlArmas.getProperty("msg_error_tramite_padre", tramitePadre.getModifiedData().get("tipotramite"), tramitePadre.getModifiedData().get("tipoautorizacion"), tramitePadre.getModifiedData().get("categoria") , tramitePadre.getModifiedData().get("usoactividad")); -// MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite_padre", tramite.getModifiedData().get("tipotramite"), tramite.getModifiedData().get("tipoautorizacion"), tramite.getModifiedData().get("categoria") , tramite.getModifiedData().get("usoactividad"))); - } - } - //consulta del tramite padre alterno, seria el tramite de renovacion - TarmTramite tramitePadreAlterno =TarmTramiteController.find(tramite.getCtramitepadrealt() != null ? tramite.getCtramitepadrealt().toString() : "-1"); - //consulta por tramite padre alterno - if(tramitePadreAlterno!=null && !procede){ - Boolean debeValidarCaducidad = (tramite.getValidacaducidadpadre()!=null && tramite.getValidacaducidadpadre().equalsIgnoreCase("Y"))?true:false; - //consulta documento habilitante del codigo padre alterno - documentoHabilitante.querydatabaseDocumentosCriterioFiltro(Arrays.asList(tramitePadreAlterno), debeValidarCaducidad, cpersona.toString()); - if(documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - if(tramitePadreAlterno.getCtramitepadre() == null && tramitePadreAlterno.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - else{ - procede = procedeTramite(tramitePadreAlterno); - } - } else{ - procede = Boolean.FALSE; - msgErrorTramitePadre = MsgControlArmas.getProperty("msg_error_tramite_padre", tramitePadreAlterno.getModifiedData().get("tipotramite"), tramitePadreAlterno.getModifiedData().get("tipoautorizacion"), tramitePadreAlterno.getModifiedData().get("categoria") , tramitePadreAlterno.getModifiedData().get("usoactividad")); -// MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite_padre", tramite.getModifiedData().get("tipotramite"), tramite.getModifiedData().get("tipoautorizacion"), tramite.getModifiedData().get("categoria") , tramite.getModifiedData().get("usoactividad"))); - } - } - - if(!procede && !msgErrorTramitePadre.equalsIgnoreCase("")){ - MessageHelper.setMessageInfo(msgErrorTramitePadre); - } - return procede; - } - - /** - * Verifica si la persona es apta para dicho tramite - * @param tramite - * @return - * @throws Exception - */ - private boolean verificaAptitudPersona(TarmTramite tramite) throws Exception { - boolean verificaApto = Boolean.TRUE; - if(tramite.getRequiereevaluacion() != null && tramite.getRequiereevaluacion().equals(Constant.STR_Y)){ - evaluacionController.addFilter("personcode", cpersona.toString()); - evaluacionController.addFilter("resultado", MsgControlArmas.getProperty("ctg_resultado_aprobado")); - evaluacionController.addFilter("resultadocodigo", MsgControlArmas.getProperty("ctg_resultado_codigo")); - evaluacionController.addFilter("tipoevaluacion", MsgControlArmas.getProperty("ctg_tipo_evaluacion_conocimiento")); - evaluacionController.addFilter("tipoevaluacioncodigo", MsgControlArmas.getProperty("ctg_tipo_evaluacion_codigo")); - evaluacionController.setTipoTest("CONOCIMIENTO"); - evaluacionController.query(); - if(evaluacionController.getLrecord() == null || evaluacionController.getLrecord().isEmpty()){ - verificaApto = Boolean.FALSE; - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requiere_validacion_tecnica")); - } - evaluacionController.clearAll(); - evaluacionController.addFilter("personcode", cpersona.toString()); - evaluacionController.addFilter("resultado", MsgControlArmas.getProperty("ctg_resultado_aprobado")); - evaluacionController.addFilter("resultadocodigo", MsgControlArmas.getProperty("ctg_resultado_codigo")); - evaluacionController.addFilter("tipoevaluacion", MsgControlArmas.getProperty("ctg_tipo_evaluacion_psicologica")); - evaluacionController.addFilter("tipoevaluacioncodigo", MsgControlArmas.getProperty("ctg_tipo_evaluacion_codigo")); - evaluacionController.setTipoTest("PSICOLOGICA"); - evaluacionController.query(); - if(evaluacionController.getLrecord() == null || evaluacionController.getLrecord().isEmpty()){ - verificaApto = Boolean.FALSE; - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requiere_validacion_psicologica")); - } - } - return verificaApto; - } - - /** - * Método en el cual se cargan los guardias de seguridad de una determina empresa - * @throws Exception - */ - private void cargaGuardias() throws Exception{ - guardias.addFilter("cempresa", this.cpersona.toString()); - guardias.addFilter("estado", "APT"); - guardias.setRecperpage(3000000); - guardias.query(); - } - - /** - * Método en el cual se cargan las armas de la persona registrada - * @throws Exception - */ - public void cargaArmas() throws Exception { - String estadosarma; - String tipoFab; - armas.setRecperpage(5000); - String fechaCaducidad=null; - estadosarma = tarmTramite.getEstados(); - tipoFab = tarmTramite.getTipofabricacion(); - if(tarmTramite.getTipoautorizacion().equals("3")){//devolucion 3 - armas.addField("sancion", Constant.STR_Y); - armas.addField("personcode", cpersona.toString()); - } - if(estadosarma != null && estadosarma.contains("REN")){ - armas.addField("TRAMITE", tarmTramite); - } - if(tipoFab != null){ - armas.addField("TIPOFABRICACION", tipoFab); - } - - if(tarmTramite.getTipotramite().equals("1")){//primera vez - if(!tarmTramite.getCategoria().equals("1") && //Categoria APERTURA - !tarmTramite.getTipoautorizacion().equals("2") && !tarmTramite.getTipoautorizacion().equals("4")){//tipoautorizacion=CERTIFICADOS 2 GUiA DE LIBRE TRaNSITO 4 - fechaCaducidad=" is null "; - } - }else if(tarmTramite.getTipotramite().equals("3")){//renovacion - fechaCaducidad=" <> null "; - }else if(tarmTramite.getTipotramite().equals("2")){//reimpresion - Date fechaActual= new Date(); - SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy"); - fechaCaducidad=" > "+"to_date("+format.format(fechaActual+",'dd/MM/yyyy')"); - } - // CATEGORIA 14 PREVIA IMPORTACION - if(!tarmTramite.getCategoria().equals("14")){ - armas.setLrecord(armas.findxPersona(cpersona.longValue(), estadosarma, tipoFab, tarmTramite.getClase(), fechaCaducidad)); - mostrarFiltroAUCP=Boolean.FALSE; - } - else{ - armas.setLrecord(new ArrayList()); - mostrarFiltroAUCP=Boolean.TRUE; - } - // - listaPersonasDetailVen = new HashSet(); - SetlistaCodigos= new HashSet(); - for(TarmArmas arma: armas.getLrecord()){ - if(arma.getLote()==null){ - arma.setLote(" "); - } - //carga los posibles vendedoeres - if(this.guiaLibreTransito){ - System.out.println("guiaLibreTransito "+guiaLibreTransito); - ListlistaArmas=AuxArmasController.findListXCodigoArma(arma.getCodigoarma()); - if(listaArmas!=null && listaArmas.size()>0){ - for (TarmArmas tarmArmasVendedor : listaArmas) { - System.out.println("arma.getCregistro(): " +tarmArmasVendedor.getModifiedData().get("personcode")); - if(tarmArmasVendedor.getModifiedData().get("personcode")!=null && - !listaCodigos.contains(tarmArmasVendedor.getModifiedData().get("personcode").toString())){ - listaCodigos.add(tarmArmasVendedor.getModifiedData().get("personcode").toString()); - TcustPersonDetail personaDetail=PersonDetailController.find(tarmArmasVendedor.getModifiedData().get("personcode").toString()); - listaPersonasDetailVen.add(personaDetail); - - } - } - } - } - - } - System.out.println("listaPersonasDetailVen: " +listaPersonasDetailVen.size()); - - Collections.sort(armas.getLrecord(), new Comparator() { - public int compare(TarmArmas p1, TarmArmas p2) { - return p1.getLote().compareTo(p2.getLote()); - } - }); - - if(armas.getLrecord() == null || armas.getLrecord().isEmpty()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_armas_inexistentes")); - } - } - - /** - * Método en el cual se cargan las agencias de la persona registrada - * @throws Exception - */ - private void cargarAgencias() throws Exception{ - agenciaSucursal.setRecperpage(3000000); - agenciaSucursal.addFilter("personcode", this.cpersona.toString()); - agenciaSucursal.query(); - // agenciaSucursal.record.fautorizacion - } - - /** - * Método en el cual se cargan los documentos habilitantes de la persona registrada - * @throws Exception - */ - private void cargarTodosDocumentosPersona(){ - try { - documentoHabilitante.setRecperpage(3000000); - documentoHabilitante.documentosXPersona(cpersona); - - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - - } - } - - /** - * Método en el cual se cargan los documentos habilitantes de la persona registrada - * @throws Exception - */ - private void cargarDocumentos(String tipoTramite, String tipoTramite2, String tipoAutorizacion){ - try { - List listTramites = TarmTramiteController.findPorCriteriosTramite(tipoTramite,tipoTramite2,tipoAutorizacion); -// List listSolicitudes = new ArrayList<>(); -// for(TarmTramite tramite:listTramites){ -// List listSolicitud = SolicitudArmasController.findByPersonaCTramite(cpersona, String.valueOf(tramite.getPk())); -// if(listSolicitud!=null && !listSolicitud.isEmpty()){ -// listSolicitudes.addAll(listSolicitud); -// } -// } - if(listTramites==null || listTramites.isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - } - documentoHabilitante.setRecperpage(3000000); - documentoHabilitante.documentosXTramite(listTramites,cpersona); - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - - } - } - - /** - * Se almacena las agencias en su tabla - * @throws Exception - */ - public void guardarAgencias() throws Exception { - agenciaSucursal.getRecord().setPersoncode(cpersona); - agenciaSucursal.update(); - agenciaSucursal.save(); - this.cargarAgencias(); - agenciaSucursal.setRecord(null); - } - - /** - * Elimina las agencias sucursales de la base de datos - * @throws Exception - */ - public void eliminarAgencias() throws Exception { - agenciaSucursal.remove(); - agenciaSucursal.update(); - agenciaSucursal.save(); - agenciaSucursal.setRecord(null); - } - - /** - * Guarda las armas - * @throws Exception - */ - public void guardarArmas() throws Exception { - armas.getRegistroArmas().getRecord().setPersoncode(cpersona); -// armas.getRegistroArmas().update(); -// armas.update(); - armas.saveArmaSolicitud(); - if(this.armas.isExisteTipoArmaExplosivo()){ - armas.setRecord(null); - } - } - - /** - * Elimina armas de la base de datos - * @throws Exception - */ - public void eliminarArmas() throws Exception{ - armas.remove(); - armas.update(); - armas.save(); - cargaArmas(); - armas.setRecord(null); - } - - - /** - * Datos de control de ingreso de informacion dado el tipo de tramite. - */ - public void onChangeTipoTramite() throws Exception { - String ctipotramite = solicitud.getRecord().getCcentrocontrol();//getCtipotramite(); - requisitos.consultaPorTipoTramite(ctipotramite); - } - - /** - * Cambia país - */ - public void executePais() { - if(direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())){ - direccion.setLprovinces(ProvinceController.find(direccion.getMfilelds().get("solcodpais").toString())); - direccion.setLcantones(new ArrayList()); - direccion.setLparroquias(new ArrayList()); - direccion.setLcities(new ArrayList()); - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvincia() { - if (direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())) { - direccion.setLcantones(CantonController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString())); - direccion.setLparroquias(new ArrayList()); - direccion.setLcities(new ArrayList()); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if (direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())) { - direccion.setLparroquias(ParroquiaController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString(), direccion.getMfilelds().get("solcodcanton").toString())); - direccion.setLcities(CityController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString(), direccion.getMfilelds().get("solcodcanton").toString())); - } - } - - /** - * Cambio la provincia de origen - */ - public void cambioProvinciasOrigen() { - if(solicitud.getRecord().getCprovinciaorigen() != null){ - this.lcantonOrigen = CantonController.find("EC", solicitud.getRecord().getCprovinciaorigen()); - this.solicitud.getRecord().setCpaisorigen("EC"); - } else{ - this.lcantonOrigen.clear(); - this.solicitud.getRecord().setCpaisorigen(null); - } - } - - /** - * Cambio la provincia destino - */ - public void cambioProvinciaDestino() { - if(solicitud.getRecord().getCprovinciadestino() != null){ - this.lcantonDestino = CantonController.find("EC", solicitud.getRecord().getCprovinciadestino()); - this.solicitud.getRecord().setCpaisdestino("EC"); - } else{ - this.lcantonDestino.clear(); - this.solicitud.getRecord().setCpaisdestino(null); - } - } - - /** - * Metodo que genera el reporte - * @param fila - */ - public void imprimir(){ - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - - if(tarmTramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tarmTramite.getRegistroguardia().equalsIgnoreCase("Y")){ - flagGuardias = true; - } - if (tarmTramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tarmTramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")) { - flagAgencia = true; - } - this.reporteGeneral(csolicitud,flagAgencia,flagArmas,flagGuardias); - - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - String institucionCentroControl=""; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - //cprovincia=tcustPersonAddres.getProvincecode(); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - this.nombreInstitucion=CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - institucionCentroControl=this.nombreInstitucion; - - return institucionCentroControl; - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - public TarmCentroControl obtenerCentro(){ - for(TarmCentroControl centro:this.centroControlList){ - if(this.solicitud.getRecord().getCcentrocontrol().equals(centro.getPk())){ - return centro; - } - } - return null; - } - - public void reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagGuardias) { - try { - querydatabase(); - String gradoUsuario =""; - String path = "armas/reports/generalReport"; - String filename="Solicitud"; - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitud); - TarmTramite t; - Boolean datosTramiteVacios=false; - - // - if(this.obtenerCentro() != null){ - parameters.put("centroControl", this.obtenerCentro().modifiedData().get("desnombreinstitucion")); - } - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitud); - - if(t!=null){ - - //No de solicitud - if(st!=null){ - parameters.put("noSolicitud", s.getNumerosolicitud()); - }else{ - parameters.put("noSolicitud", " "); - } - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - //Actividad Economica - TcustPersonDetail person = PersonDetailController.find(s.getPersoncode().toString()); - if(person != null && person.getEconimicact() != null){ - parameters.put("actividadeco", person.getEconimicact()); - }else { - parameters.put("actividadeco", ""); - } - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagGuardias", flagGuardias); - //parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()).getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - - parameters.put("codigoQR",(s!=null?s.getNumerosolicitud():solicitud)+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoUsuario+" "+this.nombreInstitucion); - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Abre el LOV de busqueda de importaciones por codigo solicitud (AUCP) - */ - public void openCargaPrevia() { - Map> params = new HashMap<>(); - List lPersoncodeParam = new ArrayList<>(); - lPersoncodeParam.add(detallepersona.getRecord().getPk().getPersoncode().toString()); - params.put("personcode", lPersoncodeParam); - CargasLovController.openLov(params); - } - - /** - * Regresa del LOV de carga - * @param event - */ - public void onReturnCarga(SelectEvent event) { - System.out.println("Retorno del lov carga"); - TarmCarga carga = (TarmCarga) event.getObject(); - filterAUCP=carga.getAucp(); - solicitud.getRecord().setAucp(filterAUCP); - TarmRegistroArmas registro = RegistroArmController.findByCodigo(carga.getCregistro().toString()); - armas.setLrecord(ArmasController.findxRegistro(registro.getPk().toString())); - if(armas.getLrecord()==null){ - armas.setLrecord(new ArrayList()); - } - } - - /** - * Método que valida la persona vendedora - * en las tablas de maia y en la snap - * - */ - public void validarVendedor(){ - tcustPersonDetailVendedor=null; - if(selecionaCodigoVendedor==null){ - MessageHelper.setMessageError("Seleccione el vendedor"); - return; - } - tcustPersonDetailVendedor=PersonDetailController.find(selecionaCodigoVendedor.toString()); - solicitud.getRecord().setNumerodocumentoorigen(tcustPersonDetailVendedor.getIdentification()); - solicitud.getRecord().setTipodocumentoorigen(tcustPersonDetailVendedor.getIdentificationcatalog()); - solicitud.getRecord().setNombrerazonsocialorigen(tcustPersonDetailVendedor.getName()); - /* - if(solicitud.getRecord().getNumerodocumentoorigen()==null || solicitud.getRecord().getTipodocumentoorigen()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedulavendedor")); - return; - } - if(solicitud.getRecord().getTipodocumentoorigen().equals(codigoCedula)){ - //----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(solicitud.getRecord().getNumerodocumentoorigen())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalidovendedor")); - return; - } - //envia a buscar en MAIA - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - //envia a buscar en la SNAP - tcustPersonDetailVendedor=buscarPersonaSnap(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - } - }else if(solicitud.getRecord().getTipodocumentoorigen().equals(codigoRuc)){ - //----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(solicitud.getRecord().getNumerodocumentoorigen())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalidovendedor")); - return; - } - //envia a buscar en maia - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - //envia a buscar en la snap - tcustPersonDetailVendedor=buscarPersonaSnap(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - } - }else{ - //----------si es PASAPORTE - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("mg_error_usuarionoencontradovendedor")); - tcustPersonDetailVendedor= new TcustPersonDetail(); - tcustPersonDetailVendedor.setIdentification(solicitud.getRecord().getNumerodocumentoorigen()); - tcustPersonDetailVendedor.setIdentificationcatalog(solicitud.getRecord().getTipodocumentoorigen()); - tcustPersonDetailVendedor.setIdentificationcatalogcode("IDENTIFICATION"); - tcustPersonDetailVendedor.setName(solicitud.getRecord().getNombrerazonsocialorigen()); - //solicitud.getRecord().setNombrerazonsocialorigen(null); - } - } - //validamos que existe la persona en Maia o SNAP - if(tcustPersonDetailVendedor!=null && tcustPersonDetailVendedor.getIdentification()!=null && tcustPersonDetailVendedor.getName()!=null){ - //seteamos el nombre para visualizarle - solicitud.getRecord().setNombrerazonsocialorigen(tcustPersonDetailVendedor.getName()); - }else if(!solicitud.getRecord().getTipodocumentoorigen().equals(codigoPasaporte)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_usuarionoencontradovendedor")); - tcustPersonDetailVendedor= new TcustPersonDetail(); - solicitud.getRecord().setNombrerazonsocialorigen(null); - } - */ - } - - /** - * Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - - /** - * Método para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - /** - * Método para buscar a la persona en la snap - * @param documento - */ - public TcustPersonDetail buscarPersonaSnap(String documento,String tipoDocumento){ - if(tipoDocumento.equals(codigoCedula)){ - Cedula cedula= ClienteCedula.obtenerCedula(documento); - if(cedula!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(cedula.getNombre()); - detail.setIdentification(cedula.getCedula()); - detail.setIdentificationcatalog("CED"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - }else { - Contribuyente contribuyente= ClienteRUC.obtenerRUC(documento); - if(contribuyente!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(contribuyente.getRazonSocial()); - detail.setIdentification(contribuyente.getNumeroRuc()); - detail.setIdentificationcatalog("RUC"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - } - } - - /** - * Entrega el valor de: ltipopersona - * - * @return List - */ - public List getLtipopersona() { - return ltipopersona; - } - - /** - * Entrega el valor de: ltipoidenti - * - * @return List - */ - public List getLtipoidenti() { - return ltipoidenti; - } - - /** - * Entrega el valor de: ltipotramite - * - * @return List - */ - public List getLtipotramite() { - return ltipotramite; - } - - /** - * Entrega el valor de: longitudid - * - * @return Integer - */ - public Integer getLongitudid() { - return longitudid; - } - - /** - * Entrega el valor de: activarRegExIdentificacion - * - * @return boolean - */ - public boolean isActivarRegExIdentificacion() { - return activarRegExIdentificacion; - } - - /** - * Entrega el valor de: solicitud - * - * @return SolicitudArmasController - */ - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - /** - * Fija el valor de: solicitud - * - * @param solicitud Valor a fijar en el atributo. - */ - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - /** - * Entrega el valor de: detallepersona - * - * @return PersonDetailController - */ - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - /** - * Fija el valor de: detallepersona - * - * @param detallepersona Valor a fijar en el atributo. - */ - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - /** - * Entrega el valor de: natural - * - * @return PeopleController - */ - public PeopleController getNatural() { - return natural; - } - - /** - * Fija el valor de: natural - * - * @param natural Valor a fijar en el atributo. - */ - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - /** - * Entrega el valor de: direccion - * - * @return PersonAddressController - */ - public PersonAddressController getDireccion() { - return direccion; - } - - /** - * Fija el valor de: direccion - * - * @param direccion Valor a fijar en el atributo. - */ - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - /** - * Entrega el valor de: telefono - * - * @return PersonPhoneController - */ - public PersonPhoneController getTelefono() { - return telefono; - } - - /** - * Fija el valor de: telefono - * - * @param telefono Valor a fijar en el atributo. - */ - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - /** - * Entrega el valor de: requisitos - * - * @return SolicitudRequisitosController - */ - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - /** - * Fija el valor de: requisitos - * - * @param requisitos Valor a fijar en el atributo. - */ - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - /** - * Entrega el valor de: flujoiniciado - * - * @return boolean - */ - public boolean isFlujoiniciado() { - return flujoiniciado; - } - - /** - * Entrega el valor de: ocultarBotonInicioFlujo - * - * @return boolean - */ - public boolean isOcultarBotonInicioFlujo() { - return ocultarBotonInicioFlujo; - } - - /** - * Fija el valor de: ocultarBotonInicioFlujo - * - * @param ocultarBotonInicioFlujo Valor a fijar en el atributo. - */ - public void setOcultarBotonInicioFlujo(boolean ocultarBotonInicioFlujo) { - this.ocultarBotonInicioFlujo = ocultarBotonInicioFlujo; - } - - /** - * Entrega el valor de: esaprobacion - * - * @return boolean - */ - public boolean isEsaprobacion() { - return esaprobacion; - } - - public LoginController getLogin() { - return login; - } - - public void setLogin(LoginController login) { - this.login = login; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public RequisitoPorTramiteController getRequisitoPorTramite() { - return requisitoPorTramite; - } - - public void setRequisitoPorTramite( - RequisitoPorTramiteController requisitoPorTramite) { - this.requisitoPorTramite = requisitoPorTramite; - } - - public GuardiasController getGuardias() { - return guardias; - } - - public void setGuardias(GuardiasController guardias) { - this.guardias = guardias; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - public boolean isMostrarIngresoArmas() { - return mostrarIngresoArmas; - } - - public void setMostrarIngresoArmas(boolean mostrarIngresoArmas) { - this.mostrarIngresoArmas = mostrarIngresoArmas; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public Boolean getIsEnableGrabar() { - return isEnableGrabar; - } - - public void setIsEnableGrabar(Boolean isEnableGrabar) { - this.isEnableGrabar = isEnableGrabar; - } - - public boolean isActualizaDatosGenerales() { - return actualizaDatosGenerales; - } - - public void setActualizaDatosGenerales(boolean actualizaDatosGenerales) { - this.actualizaDatosGenerales = actualizaDatosGenerales; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public boolean isGuiaLibreTransito() { - return guiaLibreTransito; - } - - public void setGuiaLibreTransito(boolean guiaLibreTransito) { - this.guiaLibreTransito = guiaLibreTransito; - } - - public EvaluacionController getEvaluacionController() { - return evaluacionController; - } - - public void setEvaluacionController(EvaluacionController evaluacionController) { - this.evaluacionController = evaluacionController; - } - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantonOrigen() { - return lcantonOrigen; - } - - public void setLcantonOrigen(List lcantonOrigen) { - this.lcantonOrigen = lcantonOrigen; - } - - public List getLcantonDestino() { - return lcantonDestino; - } - - public void setLcantonDestino(List lcantonDestino) { - this.lcantonDestino = lcantonDestino; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public List getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(List tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Boolean getMostrarFiltroAUCP() { - return mostrarFiltroAUCP; - } - - public void setMostrarFiltroAUCP(Boolean mostrarFiltroAUCP) { - this.mostrarFiltroAUCP = mostrarFiltroAUCP; - } - - public String getFilterAUCP() { - return filterAUCP; - } - - public void setFilterAUCP(String filterAUCP) { - this.filterAUCP = filterAUCP; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Set getListaPersonasDetailVen() { - return listaPersonasDetailVen; - } - - public void setListaPersonasDetailVen( - Set listaPersonasDetailVen) { - this.listaPersonasDetailVen = listaPersonasDetailVen; - } - - public Integer getSelecionaCodigoVendedor() { - return selecionaCodigoVendedor; - } - - public void setSelecionaCodigoVendedor(Integer selecionaCodigoVendedor) { - this.selecionaCodigoVendedor = selecionaCodigoVendedor; - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.svn-base deleted file mode 100644 index fdd13c8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TramiteArmasController.java.svn-base +++ /dev/null @@ -1,2788 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Collections; -import java.util.Comparator; -import java.util.Date; -import java.util.HashMap; -import java.util.HashSet; -import java.util.Iterator; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; - -import org.apache.commons.collections.CollectionUtils; -import org.apache.commons.collections.PredicateUtils; -import org.apache.commons.collections.TransformerUtils; -import org.apache.commons.lang.StringUtils; -import org.primefaces.context.RequestContext; -import org.primefaces.event.SelectEvent; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.armas.eval.EvaluacionController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.funcionalidad.RegistroArmController; -import com.fp.frontend.controller.armas.lov.CargasLovController; -import com.fp.frontend.controller.armas.parametros.BuscarTramiteLovController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.ClaseLovController; -import com.fp.frontend.controller.armas.parametros.GuardiasController; -import com.fp.frontend.controller.armas.parametros.OrigenTramiteController; -import com.fp.frontend.controller.armas.parametros.RequisitoPorTramiteController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PeopleController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pcustomer.PersonPhoneController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.CommonTransformer; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.frontend.utility.Utilidades; -import com.fp.frontend.webservices.snap.cedula.ClienteCedula; -import com.fp.frontend.webservices.snap.ruc.ClienteRUC; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmOrigenTramite; -import com.fp.persistence.parmas.param.TarmRequisitoPorTipoTramite; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.parmas.soli.TarmSolicitudGuardias; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitosKey; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -import ec.gob.registrocivil.consultacedula.Cedula; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - -/** - * Clase controladora de ingreso de tramites de control de armas. - * - * @author Jorge Vaca. - * @author dcruz - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TramiteArmasController extends AbstractController { - - private Boolean mostrarFiltroAUCP = Boolean.FALSE; - - private String filterAUCP; - - /** - *Responsable de centro de control - */ - private TcustPersonDetail responsableCentroControl= null; - /** - * Detalle de Usuarios - */ - private TsafeUserDetail tsafeUserDetailUsuario = null; - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - /** - * Lista de tipos de persona. - */ - private List ltipopersona; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificación - */ - private List ltipoidenti; - - /** - * Lista de tipos de trámite. - */ - private List ltipotramite; - - /** - * Lista de origen de adquisición - */ - private List lorigenadquisicion; - - /** - * Lista de provincias - */ - private List lprovincias; - - /** - * Lista de cantones de origen - */ - private List lcantonOrigen; - - /** - * Lista de cantones de destino - */ - private List lcantonDestino; - /** - * Longitud de la identificacion de una persona. - */ - private Integer longitudid; - - /** - * Indica si se debe activar la pestana de ingresar requisitos - */ - private boolean ingresarRequisitos; - - /** - * Indica si se debe activar la pestana de seleccionar armas - */ - private boolean seleccionarArmas; - - /** - * Indica si se debe activar la pestana seleccionar guardias - */ - private boolean seleccionarGuardias; - - /** - * Indica si se debe activar la pestana seleccionar agencias - */ - private boolean seleccionarAgencias; - - /** - * Indica si se debe activar la pestana listar guardias - */ - private boolean listarDocumentos; - - /** - * Atributo para activar el keyFilter - */ - private boolean activarRegExIdentificacion; - - /** - * Indica si el flujo ya fue iniciado, sirve para controlar que no iniciar el flujo mas de una vez. - */ - private boolean flujoiniciado = false; - - private boolean esaprobacion = false; - - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - - /** - * Muestra el botón de ingreso de armas - */ - private boolean mostrarIngresoArmas; - /** - * codigo de la persona que hace la solicitud - */ - private Integer cpersona = 0; - /** - * Atributo que oculpa botones del flujo - */ - private boolean ocultarBotonInicioFlujo = true; - - /** - * Fecha actual - */ - private Date fechaActual = new Date(); - - - private String csolicitud; - - /** - * Bandera de tipo booleano para indicar si se ha grabado el reporte generado - * */ - private Boolean isEnableGrabar; - /** - * Trámite seleccionado - */ - private TarmTramite tarmTramite; - - /** - * Habilita campos en actualización de datos generales - */ - private boolean actualizaDatosGenerales; - - /** - * Aprueba si es guía de libre tránsito - */ - private boolean guiaLibreTransito; - - /** - * Lista Personas vendedoreas - */ - private Set listaPersonasDetailVen; - /** - * Vendedor seleccionado - */ - private Integer selecionaCodigoVendedor; - - /** - * Controlador de login - */ - @ManagedProperty(value = "#{loginController}") - private LoginController login; - - /** - * Controlador que maneja el usuario - */ - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController detalleusuario; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - /** - * Controlador que maneja la persona - */ - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController detallepersona; - - /** - * Controlador que maneja los datos de personas naturales - */ - @ManagedProperty(value = "#{peopleController}") - private PeopleController natural; - - /** - * Controlador que maneja direcciones de la persona - */ - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController direccion; - - /** - * Controlador que maneja teléfonos de la persona - */ - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController telefono; - - /** - * Controlador que maneja requisitos dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - - /** - * Controlador que maneja los requisitos - */ - @ManagedProperty(value = "#{requisitoPorTramiteController}") - private RequisitoPorTramiteController requisitoPorTramite; - - /** - * Controlador que maneja guardias - */ - @ManagedProperty(value = "#{guardiasController}") - private GuardiasController guardias; - - /** - * Controlador que maneja los guardias en la solicitud - */ - @ManagedProperty(value = "#{solicitudGuardiasController}") - private SolicitudGuardiasController solicitudGuardias; - - /** - * Controlador que maneja armas - */ - @ManagedProperty(value = "#{armasController}") - private ArmasController armas; - - /** - * Controlador que maneja las armas dentro de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController solicitudArmas; - - /** - * Controlador que maneja registro de armas - */ - @ManagedProperty(value = "#{registroArmController}") - private RegistroArmController registroArmas; - - /** - * Controlador que maneja agencias y sucursales - */ - @ManagedProperty(value = "#{agenciaSucursalController}") - private AgenciaSucursalController agenciaSucursal; - - /** - * Controlador que maneja las agencias y sucursales dentro de la solicitud - */ - @ManagedProperty(value = "#{solicitudAgenciaSucursalController}") - private SolicitudAgenciaSucursalController solicitudAgenciaSucursal; - - /** - * Controlador que maneja los documentos habilitantes - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitante; - - /** - * Controlador que maneja los documentos dentro de la solicitud - */ - @ManagedProperty(value = "#{tarmSolicitudDocumentoController}") - private TarmSolicitudDocumentoController solicitudDocumento; - /** - * Controlador Inyectado ReportController - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador que maneja las evaluaciones de las personas - */ - @ManagedProperty(value="#{evaluacionController}") - private EvaluacionController evaluacionController; - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - TgeneCatalogDetail tipoTramite = null ; - TgeneCatalogDetail tipoAutorizacion = null; - TgeneCatalogDetail actividad = null; - /** - * codigo de la provincia del usuario logueado - */ - private String cprovincia; - - private List centroControlList; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List tipoDocumento; - - /** - * codigo del ruc - */ - private String codigoRuc; - /** - * codigo del ruc - */ - private String codigoCedula; - - /** - * codigo del ruc - */ - private String codigoPasaporte; - - /** - * Atributo para setear el vendedor - */ - private TcustPersonDetail tcustPersonDetailVendedor; - - public TramiteArmasController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.init(); - ltipopersona = CatalogDetailController.find("PERSONTYPE"); - ltipoidenti = CatalogDetailController.find("IDENTIFICATION"); - ltipotramite = CatalogDetailController.find("TIPOTRAMITE"); - lprovincias = ProvinceController.find("EC"); - lorigenadquisicion = new ArrayList(); - - // Inicializa autoconsulta -// super.startQuery(); - ocultarBotonInicioFlujo = true; - isEnableGrabar = Boolean.TRUE; - if (super.getMfilters().get("pk.csolicitud") != null) { - esaprobacion = true; - } - centroControlList=CentroControlArmasController.findEstadoInst("Y","1");//Departamento - this.querydatabase(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - * @throws Exception - */ - private void init() throws Exception { - this.beanalias="SOLICITUD"; - this.responsableCentroControl = new TcustPersonDetail(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - tipoDocumento = CatalogDetailController.find("IDENTIFICATION"); - listaPersonasDetailVen = new HashSet(); - tcustPersonDetailVendedor=null; - codigoRuc=codigos("CODIGO.RUC"); - codigoCedula=codigos("CODIGO.CEDULA"); - codigoPasaporte=codigos("CODIGO.PASAPORTE"); - this.obtenerCentroControl(); - this.obtenerResponsableCentroControl(); - } - -// public String onFlowProcess(FlowEvent event) { -// if (!flujoiniciado) { -// this.saveCabecera(); -// } -// return event.getNewStep(); -// } - - @Override - public void save() { - try { - if(deshabilitarPantalla){ - return; - } - try { - if(!noValidaDocumentoHabilitante(tipoTramite,tipoAutorizacion,actividad)){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_listardocumentos_solo")); - return; - } - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_listardocumentos")); - return; - } - - //validamos si tcustPersonDetailPortador este lleno o si han seleccionado sin portador para asignarle el por default - if(tcustPersonDetailVendedor==null && tarmTramite.getTipoautorizacion().equals("4")){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_seleccionesinportadoroverifiqueusuarioexistentevendedor")); - return; - } - - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - solicitud.fijaPersona(detallepersona.getRecord()); - solicitud.fijaInicioFlujoEnNO(); - solicitud.update(); - - DtoSave dtosavesol = solicitud.getDtoSave(); - dtosavesol.setIsForm(true); - dtosavesol.setReturnpk(true); - dtosavesol.setPosition(1); - msave.put(solicitud.getBeanalias(), dtosavesol); // adicionar metadata de mantenimiento para cada tabla. - - DtoSave dtosavereq = requisitos.getDtoSave(); - dtosavereq.setReturnpk(true); - dtosavereq.setPosition(2); - msave.put(requisitos.getBeanalias(), dtosavereq); // adicionar metadata de mantenimiento para cada tabla. - - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("isnew", "N"); - request.setSaveTables(msave); - - //this.setearCodigoCentroControl(); - - this.modificaDatosGenerales(); - - this.actualizaDirecciones(); - - this.actualizarTelefonos(); - - //guardias - this.copiaGuardias(); - - //armas - this.copiaArmas(); - - //agencias - this.copiaAgencias(); - - //documentos - this.copiaDocumentos(); - - //agencia armas - this.copiaAgenciaArmas(); - - if(!validacionFormulario()){ - return; - } - - //guardias - DtoSave dtosaveguardias = solicitudGuardias.getDtoSave(); - dtosaveguardias.setReturnpk(Boolean.TRUE); - dtosaveguardias.setPosition(3); - msave.put(solicitudGuardias.getBeanalias(), dtosaveguardias); - - //armas - DtoSave dtosavearmas = solicitudArmas.getDtoSave(); - dtosavearmas.setReturnpk(Boolean.TRUE); - dtosavearmas.setPosition(4); - msave.put(solicitudArmas.getBeanalias(), dtosavearmas); - - //agencias - DtoSave dtosaveagencias = solicitudAgenciaSucursal.getDtoSave(); - dtosaveagencias.setReturnpk(Boolean.TRUE); - dtosaveagencias.setPosition(5); - msave.put(solicitudAgenciaSucursal.getBeanalias(), dtosaveagencias); - - //solicitud_documentos - DtoSave dtosavedocumentos = solicitudDocumento.getDtoSave(); - dtosavedocumentos.setReturnpk(Boolean.TRUE); - dtosavedocumentos.setPosition(6); - msave.put(solicitudDocumento.getBeanalias(), dtosavedocumentos); - - //direcciones - DtoSave dtosavedirecciones = direccion.getDtoSave(); - dtosavedirecciones.setReturnpk(Boolean.TRUE); - dtosavedirecciones.setPosition(7); - msave.put(direccion.getBeanalias(), dtosavedirecciones); - - DtoSave dtosavetelefono = telefono.getDtoSave(); - dtosavetelefono.setReturnpk(Boolean.TRUE); - dtosavetelefono.setPosition(8); - msave.put(telefono.getBeanalias(), dtosavetelefono); - - DtoSave dtodatosgenerales = detallepersona.getDtoSave(); - dtodatosgenerales.setReturnpk(Boolean.TRUE); - dtodatosgenerales.setPosition(9); - msave.put(detallepersona.getBeanalias(), dtodatosgenerales); - - DtoSave dtosaveagenciaarmas = agenciaArma.getDtoSave(); - dtosaveagenciaarmas.setPosition(10); - msave.put(agenciaArma.getBeanalias(), dtosaveagenciaarmas); - - //documentoHabilitante - DtoSave dtosaveDocumentoHabilitante = documentoHabilitante.getDtoSave(); - dtosaveDocumentoHabilitante.setReturnpk(Boolean.TRUE); - dtosaveDocumentoHabilitante.setPosition(11); - msave.put(documentoHabilitante.getBeanalias(), dtosaveDocumentoHabilitante); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - managedSaveResponse(resp); - // CATEGORIA 14 PREVIA IMPORTACION - if(tarmTramite.getCategoria().equals("14")){ - asociarCargaSolicitud(); - } - MessageHelper.setMessageInfo(resp); - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } else { - ocultarBotonInicioFlujo = true; - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void asociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(solicitud.getRecord().getPk()); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void saveInicioFlujoEnYES() { - try { - - solicitud.fijaInicioFlujoEnYES(); - solicitud.update(); - - DtoSave dtoSolicitud = solicitud.getDtoSave(); - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitud.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitud.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - private void managedSaveResponse(Response response) throws Exception{ - csolicitud = response.get("csolicitud").toString(); - solicitud.postCommit(response); - requisitos.postCommit(response); - solicitudGuardias.postCommit(response); - solicitudArmas.postCommit(response); - solicitudAgenciaSucursal.postCommit(response); - solicitudDocumento.postCommit(response); - // flujoiniciado = Boolean.TRUE; - isEnableGrabar = Boolean.FALSE; - deshabilitarPantalla = Boolean.TRUE; - solicitud.getMfilelds().put("estadoSolicitud", "REGISTRADO"); - } - - - /** - * Metodo que valida si ha sido seleccionado ams de un documento en el criterio validado - * @param tipoTramite - * @param tipoAutorizacion - * @param actividad - * @return - * @throws Exception - */ - private boolean noValidaDocumentoHabilitante(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - int count= 0 ; - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - - for(TarmDocumentoHabilitante documento:documentoHabilitante.getLrecord()){ - if(documento.getModifiedData().get("seleccionado").equals(Boolean.TRUE) ){ - count++; - } - if(count>1){ - return false; - } - } - if(count==0){ - throw new Exception(MsgControlArmas.getProperty("msg_error_listardocumentos")); - - } - } - - if((tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())) || - (tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())) || - (tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()))) - { - //validamos si el tramite esta chequeado documentohabilitante - if(tarmTramite.getDocumentohabilitante().equals(Constant.STR_Y)){ - for(TarmDocumentoHabilitante documento:documentoHabilitante.getLrecord()){ - if(count>0){ - break; - } - - if(documento.getModifiedData().get("seleccionado").equals(Boolean.TRUE) ){ - count++; - } - } - if(count==0){ - throw new Exception(MsgControlArmas.getProperty("msg_error_listardocumentos")); - } - } - } - - return true; - } - - /** - * Actualizo datos de la persona - * @throws Exception - */ - private void modificaDatosGenerales() throws Exception{ - detallepersona.update(); - } - - /** - * Actualizo el valor de las direcciones siempre y cuando haya existido un cambio en su valor - */ - private void actualizaDirecciones(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.setRecord(direccionPersona); - direccion.getRecord().setCountrycode(direccion.getMfilelds().get("solcodpais").toString()); - direccion.getRecord().setProvincecode(direccion.getMfilelds().get("solcodprovincia").toString()); - direccion.getRecord().setCantoncode(direccion.getMfilelds().get("solcodcanton").toString()); - direccion.getRecord().setCitycode(direccion.getMfilelds().get("solcodciudad").toString()); - direccion.getRecord().setParroquiacode(direccion.getMfilelds().get("solcodparroquia").toString()); - direccion.getRecord().setAddress(direccion.getMfilelds().get("soldireccion").toString()); - direccion.update(); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.setRecord(correo); - direccion.getRecord().setAddress(direccion.getMfilelds().get("solcorreopersona").toString()); - direccion.update(); - } - } - - /** - * Actualizo los números de teléfono si es que existe un cambio - * @throws Exception - */ - private void actualizarTelefonos() throws Exception { - TcustPersonPhone telefonoLocal = null; - telefonoLocal = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("phonetypecatalog"), PredicateUtils.equalPredicate("1"))); - TcustPersonAddress direccionPrincipal = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("principal"), PredicateUtils.equalPredicate(Constant.STR_Y))); - Integer codigodireccion = direccionPrincipal != null ? direccionPrincipal.getPk().getAddressnumber() : null; - if(telefonoLocal != null){ - telefono.setRecord(telefonoLocal); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelfijo") != null ? telefono.getMfilelds().get("soltelfijo").toString() : null); - telefono.update(); - }else{ - telefono.create(); - telefono.getRecord().getPk().setPersoncode(cpersona); - telefono.getRecord().getPk().setPhonesequence(1); - telefono.getRecord().getPk().setDateto(Utilidades.getFechaExpiracion()); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelfijo") != null ? telefono.getMfilelds().get("soltelfijo").toString() : null); - telefono.getRecord().setDatefrom(new Timestamp(System.currentTimeMillis())); - telefono.getRecord().setPhonetypecatalogcode("PHONETYPE"); - telefono.getRecord().setPhonetypecatalog("1"); - telefono.getRecord().setAddressnumber(codigodireccion); - telefono.update(); - } - TcustPersonPhone telefonoCelular = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(new CommonTransformer("phonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telefonoCelular != null){ - telefono.setRecord(telefonoCelular); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelcelular") != null ? telefono.getMfilelds().get("soltelcelular").toString() : null); - telefono.update(); - }else{ - telefono.create(); - telefono.getRecord().getPk().setPersoncode(cpersona); - telefono.getRecord().getPk().setPhonesequence(2); - telefono.getRecord().getPk().setDateto(Utilidades.getFechaExpiracion()); - telefono.getRecord().setPhonenumber(telefono.getMfilelds().get("soltelcelular") != null ? telefono.getMfilelds().get("soltelcelular").toString() : null); - telefono.getRecord().setDatefrom(new Timestamp(System.currentTimeMillis())); - telefono.getRecord().setPhonetypecatalogcode("PHONETYPE"); - telefono.getRecord().setPhonetypecatalog("2"); - telefono.getRecord().setAddressnumber(codigodireccion); - telefono.update(); - } - } - - /** - * Copia los guardias de la tabla {@link TarmGuardias} a {@link TarmSolicitudGuardias} - * @throws Exception - */ - private void copiaGuardias() throws Exception { - if(seleccionarGuardias && guardias.getLrecord() != null && !guardias.getLrecord().isEmpty()){ - for (TarmGuardias guardia : guardias.getLrecord()) { - TarmSolicitudGuardias guardiaSeleccionado = (TarmSolicitudGuardias) CollectionUtils.find(solicitudGuardias.getLrecord(), - PredicateUtils.andPredicate( - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cempresa"), PredicateUtils.equalPredicate(cpersona)), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cguardia"), PredicateUtils.equalPredicate(guardia.getPk())))); - if(guardia.getModifiedData().get("seleccionado") != null && Boolean.valueOf(guardia.getModifiedData().get("seleccionado").toString())){ - if(guardiaSeleccionado == null){ - solicitudGuardias.create(); - solicitudGuardias.getRecord().getPk().setCempresa(cpersona); - solicitudGuardias.getRecord().getPk().setCguardia(guardia.getPk()); - solicitudGuardias.update(); - } - }else{ - if(guardiaSeleccionado != null){ - solicitudGuardias.setRecord(guardiaSeleccionado); - solicitudGuardias.remove(); -// solicitudGuardias.update(); - } - } - } - } - } - - /** - * Copia las armas a {@link TarmSolicitudArmas} - * @throws Exception - */ - private void copiaArmas() throws Exception { - if(seleccionarArmas && armas.getLrecord() != null && !armas.getLrecord().isEmpty()){ - for (TarmArmas arma : armas.getLrecord()) { - TarmSolicitudArmas armaSeleccionada = (TarmSolicitudArmas) CollectionUtils.find(solicitudArmas.getLrecord(), - PredicateUtils.andPredicate( - PredicateUtils.transformedPredicate(new CommonTransformer("pk.personcode"), PredicateUtils.equalPredicate(cpersona)), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.carma"), PredicateUtils.equalPredicate(arma.getPk())))); - if(arma.getModifiedData().get("seleccionado") != null && Boolean.valueOf(arma.getModifiedData().get("seleccionado").toString())){ - if(armaSeleccionada == null){ - solicitudArmas.create(); - solicitudArmas.getRecord().getPk().setPersoncode(cpersona); - solicitudArmas.getRecord().getPk().setCarma(arma.getPk()); - solicitudArmas.update(); - } - }else{ - if(armaSeleccionada != null){ - solicitudArmas.setRecord(armaSeleccionada); - solicitudArmas.remove(); -// solicitudArmas.update(); - } - } - } - } - } - - /** - * Copia las agencias a {@link TarmSolicitud} - * @throws Exception - */ - private void copiaAgencias() throws Exception{ - if(seleccionarAgencias && agenciaSucursal.getLrecord() != null && !agenciaSucursal.getLrecord().isEmpty()){ - for (TarmAgenciaSucursal agencia : agenciaSucursal.getLrecord()) { - TarmSolicitudAgenciaSucursal agenciaSeleccionada = (TarmSolicitudAgenciaSucursal) CollectionUtils.find(solicitudAgenciaSucursal.getLrecord(), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cagencia"), PredicateUtils.equalPredicate(agencia.getPk()))); - if(agencia.getModifiedData().get("seleccionado") != null && Boolean.valueOf(agencia.getModifiedData().get("seleccionado").toString())){ - if(agenciaSeleccionada == null){ - solicitudAgenciaSucursal.create(); - solicitudAgenciaSucursal.getRecord().getPk().setCagencia(agencia.getPk()); - solicitudAgenciaSucursal.update(); - } - }else{ - if(agenciaSeleccionada != null){ - solicitudAgenciaSucursal.setRecord(agenciaSeleccionada); - solicitudAgenciaSucursal.remove(); -// solicitudAgenciaSucursal.update(); - } - } - } - } - } - - /** - * Copia los documentos para procesarse en la solcitud - * @throws Exception - */ - private void copiaDocumentos() throws Exception{ - if(listarDocumentos && documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - for (TarmDocumentoHabilitante docHabilitante : documentoHabilitante.getLrecord()) { - TarmSolicitudDocumento documentoSeleccionado = (TarmSolicitudDocumento) CollectionUtils.find(solicitudDocumento.getLrecord(), - PredicateUtils.transformedPredicate(new CommonTransformer("pk.cdocumento"), PredicateUtils.equalPredicate(docHabilitante.getPk()))); - if(docHabilitante.getModifiedData().get("seleccionado") != null && Boolean.valueOf(docHabilitante.getModifiedData().get("seleccionado").toString())){ - if(documentoSeleccionado == null){ - solicitudDocumento.create(); - solicitudDocumento.getRecord().getPk().setCdocumento(docHabilitante.getPk()); - solicitudDocumento.update(); - // Cambiar el centro de control del documento al centro control de armas actual - if(docHabilitante.getCentrocontrol().equalsIgnoreCase("999999")){ - docHabilitante.setCentrocontrol(centroControl.getPk()); - documentoHabilitante.update(docHabilitante); - } - } - }else{ - if(documentoSeleccionado != null){ - solicitudDocumento.setRecord(documentoSeleccionado); - solicitudDocumento.remove(); -// solicitudDocumento.update(); - } - } - } - } - } - - /** - * Copia las armas seleccionadas a la agencia seleccionada debe ejecutarse después de - * @throws Exception - */ - private void copiaAgenciaArmas() throws Exception{ - if(seleccionarAgencias){ - Long cagencia = solicitudAgenciaSucursal.getLrecord().iterator().next().getPk().getCagencia(); - for (TarmSolicitudArmas tarmSolicitudArmas : solicitudArmas.getLrecord()) { - agenciaArma.create(); - agenciaArma.getRecord().getPk().setCagencia(cagencia); - agenciaArma.getRecord().getPk().setCarma(tarmSolicitudArmas.getPk().getCarma()); - agenciaArma.update(); - } - } - } - - /** - * Valida que solo se seleccione una agencia en la solicitud - * @param event - */ - public void validaAgenciaUnica(AjaxBehaviorEvent event) { - Boolean valorComponente = (Boolean) (event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value") : null); - if(valorComponente){ - int cont = 0; - for (TarmAgenciaSucursal tarmAgenciaSucursal : agenciaSucursal.getLrecord()) { - if(tarmAgenciaSucursal.getModifiedData().get("seleccionado") != null && Boolean.parseBoolean(tarmAgenciaSucursal.getModifiedData().get("seleccionado").toString())){ - cont++; - } - if(cont > 1){ - agenciaSucursal.getLrecord().get(Integer.parseInt(event.getComponent().getAttributes().get("indiceActual").toString())).getModifiedData().put("seleccionado", Boolean.FALSE); - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_unicidad_agencia")); - break; - } - } - } - } - - /** - * Realiza las validaciones pertinentes del formulario - * @return - */ - private boolean validacionFormulario(){ - //Valido el tramite que se ha escogido un tramite - Boolean valido = Boolean.TRUE; - if(solicitud.getRecord().getCtramite() == null){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite")); - valido = Boolean.FALSE; - } - if(ingresarRequisitos){ - int tamReq = requisitos.getLrecord().size(); - int tamReqSel = 0; - for (TarmSolicitudRequisitos solicitudRequisitos : requisitos.getLrecord()) { - if(solicitudRequisitos.getCargado() != null && solicitudRequisitos.getCargado().equals(Constant.STR_Y)){ - tamReqSel++; - } - } - if(tamReq==0){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_no_requisitos")); - valido = Boolean.FALSE; - }else if(tamReq != tamReqSel){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requisitos")); - valido = Boolean.FALSE; - } - } - if(seleccionarArmas){ - //tramite autorizacion primera vez/renovacion Estableciiento de agencias Companias de vigilancia y seguridad - TgeneParameters parametro=ParametersController.find("CODIGO.TRAMITE.NOVALIDAARMAS", "1"); - ListcodigoTramiteNoValidaArma=null; - if(parametro!=null){ - codigoTramiteNoValidaArma=new ArrayList<>(); - String []arrayTramitesNoValidaArmas= parametro.getTextvalue().split(","); - for (String item : arrayTramitesNoValidaArmas) { - codigoTramiteNoValidaArma.add(Long.parseLong(item)); - } - } - - if(this.tarmTramite!= null && codigoTramiteNoValidaArma!=null && codigoTramiteNoValidaArma.contains(this.tarmTramite.getPk())){ - System.out.println("Tramite-"+this.tarmTramite.getPk()); - //pasa - }else if(solicitudArmas.getLrecord() == null || solicitudArmas.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_armas")); - valido = Boolean.FALSE; - } else if(tarmTramite.getNumeromaxarmas() != null && tarmTramite.getNumeromaxarmas().intValue() < solicitudArmas.getLrecord().size()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_maximo_armas"), tarmTramite.getNumeromaxarmas()); - valido = Boolean.FALSE; - } - } - if(seleccionarGuardias){ - if(solicitudGuardias.getLrecord() == null || solicitudGuardias.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_guardias")); - valido = Boolean.FALSE; - } - } - if(seleccionarAgencias){ - if(solicitudAgenciaSucursal.getLrecord() == null || solicitudAgenciaSucursal.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_agencias")); - valido = Boolean.FALSE; - } - } - if(listarDocumentos){ - if(documentoHabilitante.getLrecord() == null || documentoHabilitante.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - valido = Boolean.FALSE; - }else if(solicitudDocumento.getLrecord() == null || solicitudDocumento.getLrecord().isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_documento")); - valido = Boolean.FALSE; - } - } - return valido; - } - -// public void saveCabecera() { -// try { -// Request request = callerhelper.getRequest(); -// HashMap msave = new HashMap(); -// solicitud.fijaPersona(detallepersona.getRecord()); -// solicitud.update(); -// -// DtoSave dtosavesol = solicitud.getDtoSave(); -// dtosavesol.setIsForm(true); -// dtosavesol.setReturnpk(true); -// dtosavesol.setPosition(1); -// msave.put(solicitud.getBeanalias(), dtosavesol); // adicionar metadata de mantenimiento para cada tabla. -// -// request.setSaveTables(msave); -// request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); -// request.modifiedData().put("isnew", "N"); -// -// Response resp = callerhelper.executeSave(request); -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// solicitud.postCommit(resp); -// ocultarBotonInicioFlujo = false; -// MessageHelper.setMessageInfo(resp); -// } else { -// ocultarBotonInicioFlujo = true; -// MessageHelper.setMessageError(resp); -// } -// -// } catch (Throwable e) { -// MessageHelper.setMessageError(e); -// } -// } - - @Override - protected void querydatabase() { - try { - if(deshabilitarPantalla){ - return; - } - detalleusuario.getMfilters().clear(); - detalleusuario.getMfilters().put("pk.usercode", login.getRequest().getUser()); - detalleusuario.addFilterDateto(); - detalleusuario.query(); - if (detalleusuario.getRecord() == null || detalleusuario.getRecord().getPk().getPersoncode() == null) { - return; - } - - cpersona = detalleusuario.getRecord().getPk().getPersoncode(); - detallepersona.getMfilters().clear(); - detallepersona.getMfilters().put("pk.personcode", cpersona.toString()); - detallepersona.addFilterDateto(); - detallepersona.query(); - - natural.getMfilters().clear(); - natural.addPersoncodeFilter(cpersona.toString()); - natural.addFilterDateto(); - natural.query(); - - direccion.getMfilters().clear(); - direccion.addPersoncodeFilter(cpersona.toString()); - direccion.addFilterDateto(); - direccion.query(); - - this.obtenerDireccionesGenerales(); - - telefono.getMfilters().clear(); - telefono.addPersoncodeFilter(cpersona.toString()); - telefono.addFilterDateto(); - telefono.query(); - - this.obtenerTelefonos(); - - this.setearDatosGenerales(); - //creamos una solicitud por default cuando se consulta por primera vez y al transaccion es 20 - if (this.getLoginController().getRequest().getTransactionModule().equals("30") && this.getLoginController().getRequest().getTransactionCode() == 20) { - solicitud.create(); - solicitud.getRecord().setFregistro(new java.sql.Date(System.currentTimeMillis())); - this.obtenerSecuencialSolicitud(); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Muestra un mensaje de error siempre y cuando sea un error de componente y se lo muestra como general - * @return - */ - public Boolean getExisteMensajesError() { - Boolean resp = Boolean.FALSE; - FacesContext facesContext = FacesContext.getCurrentInstance(); - final Iterator idComponentesMensajes = facesContext.getClientIdsWithMessages(); - while(idComponentesMensajes.hasNext()){ - String idComp = idComponentesMensajes.next(); - if(StringUtils.isNotBlank(idComp)){ - System.out.println("El id es "+idComp.replace(":", "\\\\:")); - System.out.println("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - facesContext.validationFailed(); - resp = Boolean.TRUE; - RequestContext.getCurrentInstance().execute("$('#"+idComp.replace(":", "\\\\:")+"').focus();"); - break; - } - } - return resp; - } - - /** - * En base a la provincia y sus jurisdicciones se obtiene y se coloca el centro de control - */ -// private void setearCodigoCentroControl(){ -// TarmCentroControlJur centroControlJur = TarmCentroControlJurController.findxProvincia(direccion.getMfilelds().get("solcodprovincia") != null ? -// direccion.getMfilelds().get("solcodprovincia").toString() : StringUtils.EMPTY); -// if(centroControlJur != null){ -// this.solicitud.getRecord().setCcentrocontrol(centroControlJur.getCcentrocontrol()); -// } -// } - - /** - * Ingresa datos que se necesitan en arma - */ - private void setearDatosGenerales(){ - TcustPersonDetail tcustPersonDetail = PersonDetailController.find(cpersona.toString()); - armas.getMfilelds().put("numdoc", tcustPersonDetail.getIdentification()); - armas.getMfilelds().put("tipodoc", tcustPersonDetail.getIdentificationcatalog()); - } - - /** - * Arma la petición al core para solicitar un número de secuencial para la solicitud antes de guardarla - * @throws Throwable - */ - private void obtenerSecuencialSolicitud() throws Throwable{ - Request request = callerhelper.getRequest(); - DtoQuery dtoQuery = super.getDtoQuery(true); - HashMap mapQuery = new HashMap(); - mapQuery.put(beanalias, dtoQuery); - request.put("querytype", "T"); - request.setQueryTables(mapQuery); - Response response = callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(response); - }else{ - solicitud.getRecord().setNumerosolicitud(response.get("SECUENCIALSOLICITUD").toString()); - } - } - - /** - * Recupera en base al tipo de identificación la dirección de la oficina o de la casa - */ - private void obtenerDireccionesGenerales(){ - TcustPersonAddress direccionPersona = null; - direccionPersona = direccion.findPrincipal(detallepersona.getRecord().getPk().getPersoncode().toString()); - - if(direccionPersona != null){ - direccion.getMfilelds().put("solcodpais", direccionPersona.getCountrycode()); - direccion.setLprovinces(ProvinceController.find(direccionPersona.getCountrycode())); - direccion.getMfilelds().put("solcodprovincia", direccionPersona.getProvincecode()); - direccion.setLcantones(CantonController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode())); - direccion.getMfilelds().put("solcodcanton", direccionPersona.getCantoncode()); - direccion.setLcities(CityController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodciudad", direccionPersona.getCitycode()); - direccion.setLparroquias(ParroquiaController.find(direccionPersona.getCountrycode(), direccionPersona.getProvincecode(), direccionPersona.getCantoncode())); - direccion.getMfilelds().put("solcodparroquia", direccionPersona.getParroquiacode()); - direccion.getMfilelds().put("soldireccion", direccionPersona.getAddress()); - } - - TcustPersonAddress correo = (TcustPersonAddress) CollectionUtils.find(direccion.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getAddresstypecatalog"), PredicateUtils.equalPredicate("3"))); - if(correo != null){ - direccion.getMfilelds().put("solcorreopersona", correo.getAddress()); - } - } - - /** - * Retorna el telefono fijo y celular de la persona - */ - private void obtenerTelefonos(){ - TcustPersonPhone telf = null; - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("1"))); - if(telf != null){ - telefono.getMfilelds().put("soltelfijo", telf.getPhonenumber()); - } - telf = (TcustPersonPhone) CollectionUtils.find(telefono.getLrecord(), PredicateUtils.transformedPredicate(TransformerUtils.invokerTransformer("getPhonetypecatalog"), PredicateUtils.equalPredicate("2"))); - if(telf != null){ - telefono.getMfilelds().put("soltelcelular", telf.getPhonenumber()); - } - } - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - cprovincia=null; - for(TarmCentroControl centro: centroControlList){ - if(solicitud.getRecord().getCcentrocontrol().equals(centro.getPk())){ - cprovincia=centro.getProvincecode(); - } - } - ; - if(cprovincia==null || cprovincia.length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("numerosolicitud", solicitud.getRecord().getNumerosolicitud()); - request.modifiedData().put("numerotransaccion", solicitud.getRecord().getCtramite()); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("isnew", "Y"); - - request.setLogsolicitude(solicitud.getRecord().getNumerosolicitud()); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - flujoiniciado = true; - deshabilitarPantalla = Boolean.TRUE; - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: " + solicitud.getRecord().getNumerosolicitud()); - saveInicioFlujoEnYES(); -// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - - request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Evento que se ejecuta cuando cambia el origen de adquisición - */ - public void executeOrigenAdquisicion() { - - TarmTramite tramite = this.solicitud.getRecord().getCtramite() != null ? TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()) : null; - if((this.solicitud.getRecord().getOrigenadquisicion() != null && this.solicitud.getRecord().getOrigenadquisicion().equals("DEC")) - || (tramite != null && tramite.getTipoautorizacion().equals("1") && tramite.getCategoria().equals("10"))){ - this.mostrarIngresoArmas = Boolean.TRUE; - } else{ - this.mostrarIngresoArmas = Boolean.FALSE; - } - } - - @Override - public void postCommit(Response response) throws Exception { - } - - /** - * Datos de control de la identificacion de la persona. - */ - public void onChangeTipoId() { - String tipoid = super.getMfilelds().get("tipoidentificacion").toString(); - switch (tipoid) { - case "CED": - longitudid = 10; - activarRegExIdentificacion = true; - break; - case "RUC": - longitudid = 13; - activarRegExIdentificacion = true; - break; - default: - longitudid = 13; - activarRegExIdentificacion = false; - break; - } - } - - /** - * Abre el LOV de trámite - */ - public void openLovTramite() { - Map> params = new HashMap>(); - List ltipopersona = new ArrayList<>(); - if(validaNumeros(detallepersona.getRecord().getIdentification())){ - if(detallepersona.getRecord().getIdentification().length()==10){ - ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.NATURAL", "1").getTextvalue());//1 - }else{ - ltipopersona.add(ParametersController.find("CODIGO.PERSONTYPE.JURIDICA", "1").getTextvalue());//2 - } - } - params.put("tipopersonasol", ltipopersona); - BuscarTramiteLovController.openLov(params); - } - - private boolean validaNumeros(String cadena){ - Boolean aux=Boolean.FALSE; - if (cadena.matches("[0-9]*")){ - System.out.println("Es un n�mero"); - aux=Boolean.TRUE; - }else{ - System.out.println("No es un n�mero"); - aux=Boolean.FALSE; - } - return aux; - } - - /** - * Abre el LOV de la clase del arma - */ - public void openLovClase() { - Map> params = new HashMap>(); - ClaseLovController.openLov(params); - } - - /** - * Regresa del LOV de armas - * @param event - */ - public void onReturnClase(SelectEvent event) { - TgeneCatalogDetail clase = (TgeneCatalogDetail) event.getObject(); - this.armas.getRecord().getModifiedData().put("clase", clase.getDescription()); - this.armas.setClase(clase.getPk().getCatalog()); - } - - /** - * Regresa del LOV para cargar valores - * @param event {@link SelectEvent} - */ - public void onReturnTramite(SelectEvent event) { - try{ - TarmTramite tramite = (TarmTramite) event.getObject(); - this.tarmTramite = tramite; -// if(!procedeTramite(TarmTramiteController.find(tramite.getCtramitepadre() != null ? tramite.getCtramitepadre().toString() : "-1"),tramite.getPk())){ - if(!procedeTramite(tramite)){ - return; - } - if(!verificaAptitudPersona(tarmTramite)){ - return; - } - solicitud.getRecord().setCtramite(tramite.getPk()); - tipoTramite = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - tipoAutorizacion = CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - TgeneCatalogDetail categoria = CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - actividad = CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - this.getSolicitud().addField("tipoTramite", tipoTramite.getDescription()); - this.getSolicitud().addField("tipoAutorizacion", tipoAutorizacion.getDescription()); - this.getSolicitud().addField("categoria", categoria.getDescription()); - this.getSolicitud().addField("actividad", actividad.getDescription()); - - if(tarmTramite.getTipotramite().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.actualizaDatosGenerales = Boolean.TRUE; - } else{ - this.actualizaDatosGenerales = Boolean.FALSE; - } - - if(tarmTramite.getTipoautorizacion().equals("4")){//Guia de libre transito - this.guiaLibreTransito = Boolean.TRUE; - if(!this.actualizaDatosGenerales){ - this.actualizaDatosGenerales = Boolean.TRUE; - } - } else{ - this.guiaLibreTransito = Boolean.FALSE; - } - - this.ingresarRequisitos = Boolean.TRUE; - if(Constant.ifYes(tramite.getRegistroarmas())){ - this.seleccionarArmas = Boolean.TRUE; - this.cargaArmas(); - }else{ - this.seleccionarArmas = Boolean.FALSE; - this.solicitudArmas.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroguardia())){ - this.seleccionarGuardias = Boolean.TRUE; - this.cargaGuardias(); - }else{ - this.seleccionarGuardias = Boolean.FALSE; - this.solicitudGuardias.clearAll(); - } - if(Constant.ifYes(tramite.getRegistroagenciasucursal())){ - this.seleccionarAgencias = Boolean.TRUE; - this.cargarAgencias(); - }else{ - this.seleccionarAgencias = Boolean.FALSE; - this.solicitudAgenciaSucursal.clearAll(); - } - - if(Constant.ifYes(tramite.getDocumentohabilitante()) || tipoTramite.getPk().getCatalog().equals(ParametersController.find("CODIGO.TRAMITEREIMPRESION", "1").getTextvalue())){ - this.listarDocumentos = Boolean.TRUE; - listarDocumentos(tipoTramite,tipoAutorizacion, actividad);//Se listan los documentos en el tab listar documentos - }else{ - this.listarDocumentos = Boolean.FALSE; - this.solicitudDocumento.clearAll(); - } - - if(tramite != null){ - requisitoPorTramite.getMfilters().put("pk.ctramite", tramite.getPk().toString()); - requisitoPorTramite.setRecperpage(3000000); - requisitoPorTramite.setcTramite(tramite.getPk()); - requisitoPorTramite.query(); - requisitos.clearAll();//limpio los datos del requisito anterior - for (TarmRequisitoPorTipoTramite requisitoPorTipoTramite : requisitoPorTramite.getLrecord()) { - requisitos.create(); - requisitos.getRecord().setCargado(Constant.STR_N); - requisitos.getRecord().setPk(new TarmSolicitudRequisitosKey()); - requisitos.getRecord().getPk().setCrequisito(requisitoPorTipoTramite.getPk().getCrequisito()); - requisitos.getRecord().getPk().setCtramite(tramite.getPk()); - requisitos.getRecord().getModifiedData().put("crequisito", requisitoPorTipoTramite.getModifiedData().get("crequisito")); - requisitos.getRecord().getModifiedData().put("nrequisito", requisitoPorTipoTramite.getModifiedData().get("nrequisito")); - requisitos.getRecord().getModifiedData().put("ndescripcion", requisitoPorTipoTramite.getModifiedData().get("ndescripcion")); - requisitos.update(); - } - } - - if(tarmTramite.getUsoactividad().equals("2") || tarmTramite.getUsoactividad().equals("24")){//2 AGENCIA // 24 SUCURSAL - if(agenciaSucursal!= null && agenciaSucursal.getTipoAgencias()!=null && agenciaSucursal.getTipoAgencias().size()>0){ - TgeneCatalogDetail remover=new TgeneCatalogDetail(); - agenciaSucursal.setTipoAgencias(CatalogDetailController.find("TIPOAGENCIA")); - for(TgeneCatalogDetail item:agenciaSucursal.getTipoAgencias()){ - if(!tarmTramite.getUsoactividad().equals("2")){ - if(item.getPk().getCatalog().equals(ParametersController.find("CODIGO.AGENCIA.TIPOAGENCIA", "1").getTextvalue())){//"AGE" - remover=item; - } - } - if(!tarmTramite.getUsoactividad().equals("24")){ - if(item.getPk().getCatalog().equals(ParametersController.find("CODIGO.SUCURSAL.TIPOAGENCIA", "1").getTextvalue())){//"SUC" - remover=item; - } - } - } - agenciaSucursal.getTipoAgencias().remove(remover); - } - } - - //AQUI VA EL CODIGO PARA LLENAR LAS ADQUISICION - lorigenadquisicion = null; - lorigenadquisicion = new ArrayList(); - List origenTramites = OrigenTramiteController.findOrigenTramite(tarmTramite); - if(origenTramites!=null && !origenTramites.isEmpty()){ - for (int i = 0; i < origenTramites.size(); i++) { - TarmOrigenTramite origenTramite = origenTramites.get(i); - if(origenTramite!= null && origenTramite.getPk().getOrigencatalog()!=null && origenTramite.getPk().getOrigencatalogcode() != null && - !origenTramite.getPk().getOrigencatalog().isEmpty() && !origenTramite.getPk().getOrigencatalogcode().isEmpty()){ - lorigenadquisicion.add(CatalogDetailController.findCatalogo(origenTramite.getPk().getOrigencatalogcode(), origenTramite.getPk().getOrigencatalog())); - } - } - } - } catch(Throwable e){ - MessageHelper.setMessageError(e); - } - - - } - - /** - * Metodo para listar el listado de documentos para los diferentes critesrios de seleccion - * @param tipoTramite tipo del tramite - * @param tipoAutorizacion tipo de la autorizacion - * @param actividad actividad - * @throws Exception - */ - private void listarDocumentos(TgeneCatalogDetail tipoTramite,TgeneCatalogDetail tipoAutorizacion, TgeneCatalogDetail actividad) throws Exception{ - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"), MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"), MsgControlArmas.getProperty("ctg_actualizacionDeDatos")).getPk().getCatalog())){ - this.cargarTodosDocumentosPersona(); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_reimpresion_tipo")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_perdida")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption(MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_autorizacion")).getPk().getCatalog()); - } - if(tipoTramite.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog()) - && tipoAutorizacion.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_certificados")).getPk().getCatalog()) - && actividad.getPk().getCatalog().equals(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_usoactividad"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog())){ - this.cargarDocumentos(CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_primeravez")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipotramite"),MsgControlArmas.getProperty("ctg_renovacion")).getPk().getCatalog(), - CatalogDetailController.findByCatalogcodeDescrption( MsgControlArmas.getProperty("ctg_tipoautorizacion"),MsgControlArmas.getProperty("ctg_permiso")).getPk().getCatalog()); - } - if(documentoHabilitante.getLrecord() == null || documentoHabilitante.getLrecord().isEmpty()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - } - } - - - /** - * Verifica si el trámite ingresado cumple la prevalidación - * TarmTramite tramite es el tramite padre validamos si este tiene codigo alterno - * Creado FPAZMINO - * @return - */ - private boolean procedeTramite(TarmTramite tramite){ - if(tramite.getCtramitepadre() == null && tramite.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - Boolean procede = Boolean.FALSE; - String msgErrorTramitePadre = ""; - //consulta del tramite padre - TarmTramite tramitePadre = TarmTramiteController.find(tramite.getCtramitepadre() != null ? tramite.getCtramitepadre().toString() : "-1"); - //consulta por tramite padre - if(tramitePadre!=null){ - Boolean debeValidarCaducidad = (tramite.getValidacaducidadpadre()!=null && tramite.getValidacaducidadpadre().equalsIgnoreCase("Y"))?true:false; - //consulta documento habilitante del codigo padre alterno - documentoHabilitante.querydatabaseDocumentosCriterioFiltro(Arrays.asList(tramitePadre), debeValidarCaducidad, cpersona.toString()); - if(documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - if(tramitePadre.getCtramitepadre() == null && tramitePadre.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - else{ - procede = procedeTramite(tramitePadre); - } - } else{ - procede = Boolean.FALSE; - msgErrorTramitePadre = MsgControlArmas.getProperty("msg_error_tramite_padre", tramitePadre.getModifiedData().get("tipotramite"), tramitePadre.getModifiedData().get("tipoautorizacion"), tramitePadre.getModifiedData().get("categoria") , tramitePadre.getModifiedData().get("usoactividad")); -// MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite_padre", tramite.getModifiedData().get("tipotramite"), tramite.getModifiedData().get("tipoautorizacion"), tramite.getModifiedData().get("categoria") , tramite.getModifiedData().get("usoactividad"))); - } - } - //consulta del tramite padre alterno, seria el tramite de renovacion - TarmTramite tramitePadreAlterno =TarmTramiteController.find(tramite.getCtramitepadrealt() != null ? tramite.getCtramitepadrealt().toString() : "-1"); - //consulta por tramite padre alterno - if(tramitePadreAlterno!=null && !procede){ - Boolean debeValidarCaducidad = (tramite.getValidacaducidadpadre()!=null && tramite.getValidacaducidadpadre().equalsIgnoreCase("Y"))?true:false; - //consulta documento habilitante del codigo padre alterno - documentoHabilitante.querydatabaseDocumentosCriterioFiltro(Arrays.asList(tramitePadreAlterno), debeValidarCaducidad, cpersona.toString()); - if(documentoHabilitante.getLrecord() != null && !documentoHabilitante.getLrecord().isEmpty()){ - if(tramitePadreAlterno.getCtramitepadre() == null && tramitePadreAlterno.getCtramitepadrealt() == null){ - return Boolean.TRUE; - } - else{ - procede = procedeTramite(tramitePadreAlterno); - } - } else{ - procede = Boolean.FALSE; - msgErrorTramitePadre = MsgControlArmas.getProperty("msg_error_tramite_padre", tramitePadreAlterno.getModifiedData().get("tipotramite"), tramitePadreAlterno.getModifiedData().get("tipoautorizacion"), tramitePadreAlterno.getModifiedData().get("categoria") , tramitePadreAlterno.getModifiedData().get("usoactividad")); -// MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_tramite_padre", tramite.getModifiedData().get("tipotramite"), tramite.getModifiedData().get("tipoautorizacion"), tramite.getModifiedData().get("categoria") , tramite.getModifiedData().get("usoactividad"))); - } - } - - if(!procede && !msgErrorTramitePadre.equalsIgnoreCase("")){ - MessageHelper.setMessageInfo(msgErrorTramitePadre); - } - return procede; - } - - /** - * Verifica si la persona es apta para dicho tramite - * @param tramite - * @return - * @throws Exception - */ - private boolean verificaAptitudPersona(TarmTramite tramite) throws Exception { - boolean verificaApto = Boolean.TRUE; - if(tramite.getRequiereevaluacion() != null && tramite.getRequiereevaluacion().equals(Constant.STR_Y)){ - evaluacionController.addFilter("personcode", cpersona.toString()); - evaluacionController.addFilter("resultado", MsgControlArmas.getProperty("ctg_resultado_aprobado")); - evaluacionController.addFilter("resultadocodigo", MsgControlArmas.getProperty("ctg_resultado_codigo")); - evaluacionController.addFilter("tipoevaluacion", MsgControlArmas.getProperty("ctg_tipo_evaluacion_conocimiento")); - evaluacionController.addFilter("tipoevaluacioncodigo", MsgControlArmas.getProperty("ctg_tipo_evaluacion_codigo")); - evaluacionController.setTipoTest("CONOCIMIENTO"); - evaluacionController.query(); - if(evaluacionController.getLrecord() == null || evaluacionController.getLrecord().isEmpty()){ - verificaApto = Boolean.FALSE; - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requiere_validacion_tecnica")); - } - evaluacionController.clearAll(); - evaluacionController.addFilter("personcode", cpersona.toString()); - evaluacionController.addFilter("resultado", MsgControlArmas.getProperty("ctg_resultado_aprobado")); - evaluacionController.addFilter("resultadocodigo", MsgControlArmas.getProperty("ctg_resultado_codigo")); - evaluacionController.addFilter("tipoevaluacion", MsgControlArmas.getProperty("ctg_tipo_evaluacion_psicologica")); - evaluacionController.addFilter("tipoevaluacioncodigo", MsgControlArmas.getProperty("ctg_tipo_evaluacion_codigo")); - evaluacionController.setTipoTest("PSICOLOGICA"); - evaluacionController.query(); - if(evaluacionController.getLrecord() == null || evaluacionController.getLrecord().isEmpty()){ - verificaApto = Boolean.FALSE; - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_requiere_validacion_psicologica")); - } - } - return verificaApto; - } - - /** - * Método en el cual se cargan los guardias de seguridad de una determina empresa - * @throws Exception - */ - private void cargaGuardias() throws Exception{ - guardias.addFilter("cempresa", this.cpersona.toString()); - guardias.addFilter("estado", "APT"); - guardias.setRecperpage(3000000); - guardias.query(); - } - - /** - * Método en el cual se cargan las armas de la persona registrada - * @throws Exception - */ - public void cargaArmas() throws Exception { - String estadosarma; - String tipoFab; - armas.setRecperpage(5000); - String fechaCaducidad=null; - estadosarma = tarmTramite.getEstados(); - tipoFab = tarmTramite.getTipofabricacion(); - if(tarmTramite.getTipoautorizacion().equals("3")){//devolucion 3 - armas.addField("sancion", Constant.STR_Y); - armas.addField("personcode", cpersona.toString()); - } - if(estadosarma != null && estadosarma.contains("REN")){ - armas.addField("TRAMITE", tarmTramite); - } - if(tipoFab != null){ - armas.addField("TIPOFABRICACION", tipoFab); - } - - if(tarmTramite.getTipotramite().equals("1")){//primera vez - if(!tarmTramite.getCategoria().equals("1") && //Categoria APERTURA - !tarmTramite.getTipoautorizacion().equals("2") && !tarmTramite.getTipoautorizacion().equals("4")){//tipoautorizacion=CERTIFICADOS 2 GUiA DE LIBRE TRaNSITO 4 - fechaCaducidad=" is null "; - } - }else if(tarmTramite.getTipotramite().equals("3")){//renovacion - fechaCaducidad=" <> null "; - }else if(tarmTramite.getTipotramite().equals("2")){//reimpresion - Date fechaActual= new Date(); - SimpleDateFormat format= new SimpleDateFormat("dd/MM/yyyy"); - fechaCaducidad=" > "+"to_date("+format.format(fechaActual+",'dd/MM/yyyy')"); - } - // CATEGORIA 14 PREVIA IMPORTACION - if(!tarmTramite.getCategoria().equals("14")){ - armas.setLrecord(armas.findxPersona(cpersona.longValue(), estadosarma, tipoFab, tarmTramite.getClase(), fechaCaducidad)); - mostrarFiltroAUCP=Boolean.FALSE; - } - else{ - armas.setLrecord(new ArrayList()); - mostrarFiltroAUCP=Boolean.TRUE; - } - // - listaPersonasDetailVen = new HashSet(); - SetlistaCodigos= new HashSet(); - for(TarmArmas arma: armas.getLrecord()){ - if(arma.getLote()==null){ - arma.setLote(" "); - } - //carga los posibles vendedoeres - if(this.guiaLibreTransito){ - System.out.println("guiaLibreTransito "+guiaLibreTransito); - ListlistaArmas=AuxArmasController.findListXCodigoArma(arma.getCodigoarma()); - if(listaArmas!=null && listaArmas.size()>0){ - for (TarmArmas tarmArmasVendedor : listaArmas) { - System.out.println("arma.getCregistro(): " +tarmArmasVendedor.getModifiedData().get("personcode")); - if(tarmArmasVendedor.getModifiedData().get("personcode")!=null && - !listaCodigos.contains(tarmArmasVendedor.getModifiedData().get("personcode").toString())){ - listaCodigos.add(tarmArmasVendedor.getModifiedData().get("personcode").toString()); - TcustPersonDetail personaDetail=PersonDetailController.find(tarmArmasVendedor.getModifiedData().get("personcode").toString()); - listaPersonasDetailVen.add(personaDetail); - - } - } - } - } - - } - System.out.println("listaPersonasDetailVen: " +listaPersonasDetailVen.size()); - - Collections.sort(armas.getLrecord(), new Comparator() { - public int compare(TarmArmas p1, TarmArmas p2) { - return p1.getLote().compareTo(p2.getLote()); - } - }); - - if(armas.getLrecord() == null || armas.getLrecord().isEmpty()){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_error_armas_inexistentes")); - } - } - - /** - * Método en el cual se cargan las agencias de la persona registrada - * @throws Exception - */ - private void cargarAgencias() throws Exception{ - agenciaSucursal.setRecperpage(3000000); - agenciaSucursal.addFilter("personcode", this.cpersona.toString()); - agenciaSucursal.query(); - // agenciaSucursal.record.fautorizacion - } - - /** - * Método en el cual se cargan los documentos habilitantes de la persona registrada - * @throws Exception - */ - private void cargarTodosDocumentosPersona(){ - try { - documentoHabilitante.setRecperpage(3000000); - documentoHabilitante.documentosXPersona(cpersona); - - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - - } - } - - /** - * Método en el cual se cargan los documentos habilitantes de la persona registrada - * @throws Exception - */ - private void cargarDocumentos(String tipoTramite, String tipoTramite2, String tipoAutorizacion){ - try { - List listTramites = TarmTramiteController.findPorCriteriosTramite(tipoTramite,tipoTramite2,tipoAutorizacion); -// List listSolicitudes = new ArrayList<>(); -// for(TarmTramite tramite:listTramites){ -// List listSolicitud = SolicitudArmasController.findByPersonaCTramite(cpersona, String.valueOf(tramite.getPk())); -// if(listSolicitud!=null && !listSolicitud.isEmpty()){ -// listSolicitudes.addAll(listSolicitud); -// } -// } - if(listTramites==null || listTramites.isEmpty()){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - } - documentoHabilitante.setRecperpage(3000000); - documentoHabilitante.documentosXTramite(listTramites,cpersona); - } catch (Exception e) { - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("msg_error_noexistendocumentos")); - return; - - } - } - - /** - * Se almacena las agencias en su tabla - * @throws Exception - */ - public void guardarAgencias() throws Exception { - agenciaSucursal.getRecord().setPersoncode(cpersona); - agenciaSucursal.update(); - agenciaSucursal.save(); - this.cargarAgencias(); - agenciaSucursal.setRecord(null); - } - - /** - * Elimina las agencias sucursales de la base de datos - * @throws Exception - */ - public void eliminarAgencias() throws Exception { - agenciaSucursal.remove(); - agenciaSucursal.update(); - agenciaSucursal.save(); - agenciaSucursal.setRecord(null); - } - - /** - * Guarda las armas - * @throws Exception - */ - public void guardarArmas() throws Exception { - armas.getRegistroArmas().getRecord().setPersoncode(cpersona); -// armas.getRegistroArmas().update(); -// armas.update(); - armas.saveArmaSolicitud(); - if(this.armas.isExisteTipoArmaExplosivo()){ - armas.setRecord(null); - } - } - - /** - * Elimina armas de la base de datos - * @throws Exception - */ - public void eliminarArmas() throws Exception{ - armas.remove(); - armas.update(); - armas.save(); - cargaArmas(); - armas.setRecord(null); - } - - - /** - * Datos de control de ingreso de informacion dado el tipo de tramite. - */ - public void onChangeTipoTramite() throws Exception { - String ctipotramite = solicitud.getRecord().getCcentrocontrol();//getCtipotramite(); - requisitos.consultaPorTipoTramite(ctipotramite); - } - - /** - * Cambia país - */ - public void executePais() { - if(direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())){ - direccion.setLprovinces(ProvinceController.find(direccion.getMfilelds().get("solcodpais").toString())); - direccion.setLcantones(new ArrayList()); - direccion.setLparroquias(new ArrayList()); - direccion.setLcities(new ArrayList()); - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvincia() { - if (direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())) { - direccion.setLcantones(CantonController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString())); - direccion.setLparroquias(new ArrayList()); - direccion.setLcities(new ArrayList()); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if (direccion.getMfilelds().get("solcodpais") != null && StringUtils.isNotBlank(direccion.getMfilelds().get("solcodpais").toString())) { - direccion.setLparroquias(ParroquiaController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString(), direccion.getMfilelds().get("solcodcanton").toString())); - direccion.setLcities(CityController.find(direccion.getMfilelds().get("solcodpais").toString(), direccion.getMfilelds().get("solcodprovincia").toString(), direccion.getMfilelds().get("solcodcanton").toString())); - } - } - - /** - * Cambio la provincia de origen - */ - public void cambioProvinciasOrigen() { - if(solicitud.getRecord().getCprovinciaorigen() != null){ - this.lcantonOrigen = CantonController.find("EC", solicitud.getRecord().getCprovinciaorigen()); - this.solicitud.getRecord().setCpaisorigen("EC"); - } else{ - this.lcantonOrigen.clear(); - this.solicitud.getRecord().setCpaisorigen(null); - } - } - - /** - * Cambio la provincia destino - */ - public void cambioProvinciaDestino() { - if(solicitud.getRecord().getCprovinciadestino() != null){ - this.lcantonDestino = CantonController.find("EC", solicitud.getRecord().getCprovinciadestino()); - this.solicitud.getRecord().setCpaisdestino("EC"); - } else{ - this.lcantonDestino.clear(); - this.solicitud.getRecord().setCpaisdestino(null); - } - } - - /** - * Metodo que genera el reporte - * @param fila - */ - public void imprimir(){ - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - - if(tarmTramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tarmTramite.getRegistroguardia().equalsIgnoreCase("Y")){ - flagGuardias = true; - } - if (tarmTramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tarmTramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")) { - flagAgencia = true; - } - this.reporteGeneral(csolicitud,flagAgencia,flagArmas,flagGuardias); - - FacesContext context = FacesContext.getCurrentInstance(); - context.addMessage(null, new FacesMessage("RECUERDE", MsgControlArmas.getProperty("msg_recuerdeClickContinuarTramite"))); - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - String institucionCentroControl=""; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= personAddressController.findPrincipal(tsafeUserDetailUsuario.getPk().getPersoncode().toString()); - //cprovincia=tcustPersonAddres.getProvincecode(); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - this.nombreInstitucion=CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - institucionCentroControl=this.nombreInstitucion; - - return institucionCentroControl; - } - - /** - * Obtiene el responsable del Centro de Control - */ - public void obtenerResponsableCentroControl(){ - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - - } - - public TarmCentroControl obtenerCentro(){ - for(TarmCentroControl centro:this.centroControlList){ - if(this.solicitud.getRecord().getCcentrocontrol().equals(centro.getPk())){ - return centro; - } - } - return null; - } - - public void reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagGuardias) { - try { - querydatabase(); - String gradoUsuario =""; - String path = "armas/reports/generalReport"; - String filename="Solicitud"; - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitud); - TarmTramite t; - Boolean datosTramiteVacios=false; - - // - if(this.obtenerCentro() != null){ - parameters.put("centroControl", this.obtenerCentro().modifiedData().get("desnombreinstitucion")); - } - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitud); - - if(t!=null){ - - //No de solicitud - if(st!=null){ - parameters.put("noSolicitud", s.getNumerosolicitud()); - }else{ - parameters.put("noSolicitud", " "); - } - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - //Actividad Economica - TcustPersonDetail person = PersonDetailController.find(s.getPersoncode().toString()); - if(person != null && person.getEconimicact() != null){ - parameters.put("actividadeco", person.getEconimicact()); - }else { - parameters.put("actividadeco", ""); - } - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagGuardias", flagGuardias); - //parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",PersonDetailController.find(this.tsafeUserDetailUsuario.getPk().getPersoncode().toString()).getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - - parameters.put("codigoQR",(s!=null?s.getNumerosolicitud():solicitud)+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoUsuario+" "+this.nombreInstitucion); - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Abre el LOV de busqueda de importaciones por codigo solicitud (AUCP) - */ - public void openCargaPrevia() { - Map> params = new HashMap<>(); - List lPersoncodeParam = new ArrayList<>(); - lPersoncodeParam.add(detallepersona.getRecord().getPk().getPersoncode().toString()); - params.put("personcode", lPersoncodeParam); - CargasLovController.openLov(params); - } - - /** - * Regresa del LOV de carga - * @param event - */ - public void onReturnCarga(SelectEvent event) { - System.out.println("Retorno del lov carga"); - TarmCarga carga = (TarmCarga) event.getObject(); - filterAUCP=carga.getAucp(); - solicitud.getRecord().setAucp(filterAUCP); - TarmRegistroArmas registro = RegistroArmController.findByCodigo(carga.getCregistro().toString()); - armas.setLrecord(ArmasController.findxRegistro(registro.getPk().toString())); - if(armas.getLrecord()==null){ - armas.setLrecord(new ArrayList()); - } - } - - /** - * Método que valida la persona vendedora - * en las tablas de maia y en la snap - * - */ - public void validarVendedor(){ - tcustPersonDetailVendedor=null; - if(selecionaCodigoVendedor==null){ - MessageHelper.setMessageError("Seleccione el vendedor"); - return; - } - tcustPersonDetailVendedor=PersonDetailController.find(selecionaCodigoVendedor.toString()); - solicitud.getRecord().setNumerodocumentoorigen(tcustPersonDetailVendedor.getIdentification()); - solicitud.getRecord().setTipodocumentoorigen(tcustPersonDetailVendedor.getIdentificationcatalog()); - solicitud.getRecord().setNombrerazonsocialorigen(tcustPersonDetailVendedor.getName()); - /* - if(solicitud.getRecord().getNumerodocumentoorigen()==null || solicitud.getRecord().getTipodocumentoorigen()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_seleccioneeltipodedocumentooingreselacedulavendedor")); - return; - } - if(solicitud.getRecord().getTipodocumentoorigen().equals(codigoCedula)){ - //----------validamos si es valida la CEDULA - if(!ValidateIdentification.cedula(solicitud.getRecord().getNumerodocumentoorigen())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalidovendedor")); - return; - } - //envia a buscar en MAIA - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - //envia a buscar en la SNAP - tcustPersonDetailVendedor=buscarPersonaSnap(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - } - }else if(solicitud.getRecord().getTipodocumentoorigen().equals(codigoRuc)){ - //----------validamos si es valida el RUC - if(!ValidateIdentification.ruc(solicitud.getRecord().getNumerodocumentoorigen())){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_nodocumentoinvalidovendedor")); - return; - } - //envia a buscar en maia - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - //envia a buscar en la snap - tcustPersonDetailVendedor=buscarPersonaSnap(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - } - }else{ - //----------si es PASAPORTE - tcustPersonDetailVendedor=buscarPersonaMaia(solicitud.getRecord().getNumerodocumentoorigen(),solicitud.getRecord().getTipodocumentoorigen()); - if(tcustPersonDetailVendedor==null){ - MessageHelper.setMessageInfo(MsgControlArmas.getProperty("mg_error_usuarionoencontradovendedor")); - tcustPersonDetailVendedor= new TcustPersonDetail(); - tcustPersonDetailVendedor.setIdentification(solicitud.getRecord().getNumerodocumentoorigen()); - tcustPersonDetailVendedor.setIdentificationcatalog(solicitud.getRecord().getTipodocumentoorigen()); - tcustPersonDetailVendedor.setIdentificationcatalogcode("IDENTIFICATION"); - tcustPersonDetailVendedor.setName(solicitud.getRecord().getNombrerazonsocialorigen()); - //solicitud.getRecord().setNombrerazonsocialorigen(null); - } - } - //validamos que existe la persona en Maia o SNAP - if(tcustPersonDetailVendedor!=null && tcustPersonDetailVendedor.getIdentification()!=null && tcustPersonDetailVendedor.getName()!=null){ - //seteamos el nombre para visualizarle - solicitud.getRecord().setNombrerazonsocialorigen(tcustPersonDetailVendedor.getName()); - }else if(!solicitud.getRecord().getTipodocumentoorigen().equals(codigoPasaporte)){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("mg_error_usuarionoencontradovendedor")); - tcustPersonDetailVendedor= new TcustPersonDetail(); - solicitud.getRecord().setNombrerazonsocialorigen(null); - } - */ - } - - /** - * Método para validar si la persona existe en la BD de Maia - * @param numeroDocumento - * @param tipoDocumento - * @return TcustPersonDetail - */ - public TcustPersonDetail buscarPersonaMaia(String numeroDocumento, String tipoDocumento){ - return PersonDetailController.findxidentification(numeroDocumento,tipoDocumento); - } - - /** - * Método para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - /** - * Método para buscar a la persona en la snap - * @param documento - */ - public TcustPersonDetail buscarPersonaSnap(String documento,String tipoDocumento){ - if(tipoDocumento.equals(codigoCedula)){ - Cedula cedula= ClienteCedula.obtenerCedula(documento); - if(cedula!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(cedula.getNombre()); - detail.setIdentification(cedula.getCedula()); - detail.setIdentificationcatalog("CED"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - }else { - Contribuyente contribuyente= ClienteRUC.obtenerRUC(documento); - if(contribuyente!=null){ - TcustPersonDetail detail= new TcustPersonDetail(); - detail.setName(contribuyente.getRazonSocial()); - detail.setIdentification(contribuyente.getNumeroRuc()); - detail.setIdentificationcatalog("RUC"); - detail.setIdentificationcatalogcode("IDENTIFICATION"); - return detail; - }else{ - return null; - } - } - } - - /** - * Entrega el valor de: ltipopersona - * - * @return List - */ - public List getLtipopersona() { - return ltipopersona; - } - - /** - * Entrega el valor de: ltipoidenti - * - * @return List - */ - public List getLtipoidenti() { - return ltipoidenti; - } - - /** - * Entrega el valor de: ltipotramite - * - * @return List - */ - public List getLtipotramite() { - return ltipotramite; - } - - /** - * Entrega el valor de: longitudid - * - * @return Integer - */ - public Integer getLongitudid() { - return longitudid; - } - - /** - * Entrega el valor de: activarRegExIdentificacion - * - * @return boolean - */ - public boolean isActivarRegExIdentificacion() { - return activarRegExIdentificacion; - } - - /** - * Entrega el valor de: solicitud - * - * @return SolicitudArmasController - */ - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - /** - * Fija el valor de: solicitud - * - * @param solicitud Valor a fijar en el atributo. - */ - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - /** - * Entrega el valor de: detallepersona - * - * @return PersonDetailController - */ - public PersonDetailController getDetallepersona() { - return detallepersona; - } - - /** - * Fija el valor de: detallepersona - * - * @param detallepersona Valor a fijar en el atributo. - */ - public void setDetallepersona(PersonDetailController detallepersona) { - this.detallepersona = detallepersona; - } - - /** - * Entrega el valor de: natural - * - * @return PeopleController - */ - public PeopleController getNatural() { - return natural; - } - - /** - * Fija el valor de: natural - * - * @param natural Valor a fijar en el atributo. - */ - public void setNatural(PeopleController natural) { - this.natural = natural; - } - - /** - * Entrega el valor de: direccion - * - * @return PersonAddressController - */ - public PersonAddressController getDireccion() { - return direccion; - } - - /** - * Fija el valor de: direccion - * - * @param direccion Valor a fijar en el atributo. - */ - public void setDireccion(PersonAddressController direccion) { - this.direccion = direccion; - } - - /** - * Entrega el valor de: telefono - * - * @return PersonPhoneController - */ - public PersonPhoneController getTelefono() { - return telefono; - } - - /** - * Fija el valor de: telefono - * - * @param telefono Valor a fijar en el atributo. - */ - public void setTelefono(PersonPhoneController telefono) { - this.telefono = telefono; - } - - /** - * Entrega el valor de: requisitos - * - * @return SolicitudRequisitosController - */ - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - /** - * Fija el valor de: requisitos - * - * @param requisitos Valor a fijar en el atributo. - */ - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - /** - * Entrega el valor de: flujoiniciado - * - * @return boolean - */ - public boolean isFlujoiniciado() { - return flujoiniciado; - } - - /** - * Entrega el valor de: ocultarBotonInicioFlujo - * - * @return boolean - */ - public boolean isOcultarBotonInicioFlujo() { - return ocultarBotonInicioFlujo; - } - - /** - * Fija el valor de: ocultarBotonInicioFlujo - * - * @param ocultarBotonInicioFlujo Valor a fijar en el atributo. - */ - public void setOcultarBotonInicioFlujo(boolean ocultarBotonInicioFlujo) { - this.ocultarBotonInicioFlujo = ocultarBotonInicioFlujo; - } - - /** - * Entrega el valor de: esaprobacion - * - * @return boolean - */ - public boolean isEsaprobacion() { - return esaprobacion; - } - - public LoginController getLogin() { - return login; - } - - public void setLogin(LoginController login) { - this.login = login; - } - - public UserDetailController getDetalleusuario() { - return detalleusuario; - } - - public void setDetalleusuario(UserDetailController detalleusuario) { - this.detalleusuario = detalleusuario; - } - - public List getLorigenadquisicion() { - return lorigenadquisicion; - } - - public void setLorigenadquisicion(List lorigenadquisicion) { - this.lorigenadquisicion = lorigenadquisicion; - } - - public boolean isIngresarRequisitos() { - return ingresarRequisitos; - } - - public void setIngresarRequisitos(boolean ingresarRequisitos) { - this.ingresarRequisitos = ingresarRequisitos; - } - - public boolean isSeleccionarArmas() { - return seleccionarArmas; - } - - public void setSeleccionarArmas(boolean seleccionarArmas) { - this.seleccionarArmas = seleccionarArmas; - } - - public boolean isSeleccionarGuardias() { - return seleccionarGuardias; - } - - public void setSeleccionarGuardias(boolean seleccionarGuardias) { - this.seleccionarGuardias = seleccionarGuardias; - } - - public boolean isSeleccionarAgencias() { - return seleccionarAgencias; - } - - public void setSeleccionarAgencias(boolean seleccionarAgencias) { - this.seleccionarAgencias = seleccionarAgencias; - } - - public boolean isListarDocumentos() { - return listarDocumentos; - } - - public void setListarDocumentos(boolean listarDocumentos) { - this.listarDocumentos = listarDocumentos; - } - - public RequisitoPorTramiteController getRequisitoPorTramite() { - return requisitoPorTramite; - } - - public void setRequisitoPorTramite( - RequisitoPorTramiteController requisitoPorTramite) { - this.requisitoPorTramite = requisitoPorTramite; - } - - public GuardiasController getGuardias() { - return guardias; - } - - public void setGuardias(GuardiasController guardias) { - this.guardias = guardias; - } - - public SolicitudGuardiasController getSolicitudGuardias() { - return solicitudGuardias; - } - - public void setSolicitudGuardias(SolicitudGuardiasController solicitudGuardias) { - this.solicitudGuardias = solicitudGuardias; - } - - public ArmasController getArmas() { - return armas; - } - - public void setArmas(ArmasController armas) { - this.armas = armas; - } - - public RegistroArmController getRegistroArmas() { - return registroArmas; - } - - public void setRegistroArmas(RegistroArmController registroArmas) { - this.registroArmas = registroArmas; - } - - public AgenciaSucursalController getAgenciaSucursal() { - return agenciaSucursal; - } - - public void setAgenciaSucursal(AgenciaSucursalController agenciaSucursal) { - this.agenciaSucursal = agenciaSucursal; - } - - public RecepcionArmasController getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(RecepcionArmasController solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public SolicitudAgenciaSucursalController getSolicitudAgenciaSucursal() { - return solicitudAgenciaSucursal; - } - - public void setSolicitudAgenciaSucursal( - SolicitudAgenciaSucursalController solicitudAgenciaSucursal) { - this.solicitudAgenciaSucursal = solicitudAgenciaSucursal; - } - - public TarmSolicitudDocumentoController getSolicitudDocumento() { - return solicitudDocumento; - } - - public void setSolicitudDocumento( - TarmSolicitudDocumentoController solicitudDocumento) { - this.solicitudDocumento = solicitudDocumento; - } - - public DocumentoHabilitanteController getDocumentoHabilitante() { - return documentoHabilitante; - } - - public void setDocumentoHabilitante( - DocumentoHabilitanteController documentoHabilitante) { - this.documentoHabilitante = documentoHabilitante; - } - - public Date getFechaActual() { - return fechaActual; - } - - public void setFechaActual(Date fechaActual) { - this.fechaActual = fechaActual; - } - - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - public boolean isMostrarIngresoArmas() { - return mostrarIngresoArmas; - } - - public void setMostrarIngresoArmas(boolean mostrarIngresoArmas) { - this.mostrarIngresoArmas = mostrarIngresoArmas; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public Boolean getIsEnableGrabar() { - return isEnableGrabar; - } - - public void setIsEnableGrabar(Boolean isEnableGrabar) { - this.isEnableGrabar = isEnableGrabar; - } - - public boolean isActualizaDatosGenerales() { - return actualizaDatosGenerales; - } - - public void setActualizaDatosGenerales(boolean actualizaDatosGenerales) { - this.actualizaDatosGenerales = actualizaDatosGenerales; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public boolean isGuiaLibreTransito() { - return guiaLibreTransito; - } - - public void setGuiaLibreTransito(boolean guiaLibreTransito) { - this.guiaLibreTransito = guiaLibreTransito; - } - - public EvaluacionController getEvaluacionController() { - return evaluacionController; - } - - public void setEvaluacionController(EvaluacionController evaluacionController) { - this.evaluacionController = evaluacionController; - } - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - public List getLprovincias() { - return lprovincias; - } - - public void setLprovincias(List lprovincias) { - this.lprovincias = lprovincias; - } - - public List getLcantonOrigen() { - return lcantonOrigen; - } - - public void setLcantonOrigen(List lcantonOrigen) { - this.lcantonOrigen = lcantonOrigen; - } - - public List getLcantonDestino() { - return lcantonDestino; - } - - public void setLcantonDestino(List lcantonDestino) { - this.lcantonDestino = lcantonDestino; - } - - public List getCentroControlList() { - return centroControlList; - } - - public void setCentroControlList(List centroControlList) { - this.centroControlList = centroControlList; - } - - public List getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(List tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public Boolean getMostrarFiltroAUCP() { - return mostrarFiltroAUCP; - } - - public void setMostrarFiltroAUCP(Boolean mostrarFiltroAUCP) { - this.mostrarFiltroAUCP = mostrarFiltroAUCP; - } - - public String getFilterAUCP() { - return filterAUCP; - } - - public void setFilterAUCP(String filterAUCP) { - this.filterAUCP = filterAUCP; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Set getListaPersonasDetailVen() { - return listaPersonasDetailVen; - } - - public void setListaPersonasDetailVen( - Set listaPersonasDetailVen) { - this.listaPersonasDetailVen = listaPersonasDetailVen; - } - - public Integer getSelecionaCodigoVendedor() { - return selecionaCodigoVendedor; - } - - public void setSelecionaCodigoVendedor(Integer selecionaCodigoVendedor) { - this.selecionaCodigoVendedor = selecionaCodigoVendedor; - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TransaccionArmaBodegaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TransaccionArmaBodegaController.java.svn-base deleted file mode 100644 index 51a221b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/TransaccionArmaBodegaController.java.svn-base +++ /dev/null @@ -1,147 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; - -/** - * Clase controladora del bean TarmTransaccionArmaBodega. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TransaccionArmaBodegaController extends AbstractController { - - public TransaccionArmaBodegaController() throws Exception { - super(TarmTransaccionArmaBodega.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACCIONARMABODEGA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - SubQuery subqueryCentroControlOrig= new SubQuery("TgeneCatalogDetail","description","nombreinstitucionorig", - "i.pk.catalog= (select o.nombreinstitucion from TarmCentroControl o where o.pk=t.ccentrocontrolorigen)" - + " and i.pk.catalogcode=(select o.nombreinstitucioncodigo from TarmCentroControl o where o.pk=t.ccentrocontrolorigen)"); - dto.addSubQuery(subqueryCentroControlOrig); - - SubQuery subqueryCentroControlDest= new SubQuery("TgeneCatalogDetail","description","nombreinstituciondest", - "i.pk.catalog= (select o.nombreinstitucion from TarmCentroControl o where o.pk=t.ccentrocontroldestino)" - + " and i.pk.catalogcode=(select o.nombreinstitucioncodigo from TarmCentroControl o where o.pk=t.ccentrocontroldestino)"); - dto.addSubQuery(subqueryCentroControlDest); - - SubQuery subqueryPaisDes= new SubQuery("TarmCentroControl","provincecode","provincecodeorig", "i.pk=t.ccentrocontrolorigen"); - dto.addSubQuery(subqueryPaisDes); - - SubQuery subqueryNombreinstitucion= new SubQuery("TarmCentroControl","nombreinstitucion","nombreinstitucion", "i.pk=t.ccentrocontrolorigen"); - dto.addSubQuery(subqueryNombreinstitucion); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * - * @param codigo - * @return - */ - public static TarmTransaccionArmaBodega find(String codigo) { - try { - TransaccionArmaBodegaController cc = new TransaccionArmaBodegaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("cdecomisoarmatransaccion", codigo); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidacionTramiteLibreTransitoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidacionTramiteLibreTransitoController.java.svn-base deleted file mode 100644 index ff009be..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidacionTramiteLibreTransitoController.java.svn-base +++ /dev/null @@ -1,804 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.MessageFormat; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TiposArmasExplosivosController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.general.mail.EnvioMail; -import com.fp.general.mail.dto.EnvioCorreoDTO; -import com.fp.general.mail.exception.EnvioMailException; -import com.fp.general.mail.factory.EnvioMailFactory; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTipoArmaExplosivo; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ValidacionTramiteLibreTransitoController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - TarmSolicitudTramite solicitudTramite=new TarmSolicitudTramite(); - TarmTramite tramite=new TarmTramite(); - TcustPersonDetail detallesPersona=new TcustPersonDetail(); - TarmSolicitudArmas solicitudArmas=new TarmSolicitudArmas(); - - private String provincia; - private String canton; - private String ciudad; - private TgeneParroquia parroquia; - private TcustPersonAddress direccionCliente; - String tipoDireccion=""; - private List lArmas; - private String direccion; - private String estadoTramite; - private String tipoDocumento; - private String tipoTramite; - private String usoActividad; - private String observaciones="Prueba observaciones"; - private String gradoFuncionario=""; - private TcustPersonDetail usuario; - private String nombreInstitucion; - private TarmCentroControl centroControl; - private String csolicitud=""; - private String opcion=""; - private String numeroSolicitud; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddressController; - - @ManagedProperty(value = "#{tarmSolicitudTramiteController}") - private TarmSolicitudTramiteController tarmSolicitudTramiteController; - - @ManagedProperty(value = "#{tarmSolicitudArmasController}") - private TarmSolicitudArmasController tarmSolicitudArmasController; - - public ValidacionTramiteLibreTransitoController() throws Exception { - super(TarmSolicitud.class); - } - - @PostConstruct - private void postconstruct() { - try { - startQuery(); - this.init(); - // Inicializa autoconsulta - super.getMfilters().clear(); - super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - csolicitud=super.getMfilters().get("csolicitud"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "VALIDACIONTRANSITO"; - - // this.csolicitud="1"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - //Filtrando las armas - tarmSolicitudArmasController.setCsolicitud(csolicitud); - tarmSolicitudArmasController.getMfilters().clear(); - tarmSolicitudArmasController.query(); - - Filter filtro=new Filter("pk", csolicitud); - dto.addFiltro(filtro); - - SubQuery sNumeroTramite= new SubQuery - ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); - dto.addSubQuery(sNumeroTramite); - - SubQuery sEstadoSolicitud= new SubQuery - ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); - dto.addSubQuery(sEstadoSolicitud); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - - //Obteniendo la solicitud - TarmSolicitud solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(this.csolicitud); - numeroSolicitud =solicitud.getNumerosolicitud(); - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(record.getPk()); - - if(solicitudTramite!=null && solicitudTramite.getPk().getCtramite()!=null){ - tarmSolicitudTramiteController=new TarmSolicitudTramiteController(); - tarmSolicitudTramiteController.setRecord(solicitudTramite); - tramite=TarmTramiteController.find(solicitudTramite.getPk().getCtramite().toString()); - - //Estado tramite - TgeneCatalogDetail catalogDetailTramite=null; - if(solicitudTramite.getEstadotramite()!=null && solicitudTramite.getEstadotramitecodigo()!=null){ - catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(solicitudTramite.getEstadotramite(), solicitudTramite.getEstadotramitecodigo()); - } - - if(catalogDetailTramite!=null){ - estadoTramite=catalogDetailTramite.getDescription(); - } - - //Tipo tramite - if(tramite.getTipotramite()!=null && tramite.getTipotramitecodigo()!=null){ - catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - - if(catalogDetailTramite!=null){ - tipoTramite=catalogDetailTramite.getDescription(); - } - - //Uso actividad - catalogDetailTramite=CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(catalogDetailTramite!=null && tramite.getUsoactividad()!=null && tramite.getUsoactividadcodigo()!=null){ - usoActividad=catalogDetailTramite.getDescription(); - } - } - } - - //Datos de la persona - detallesPersona = PersonDetailController.find(String.valueOf(record.getPersoncode().toString())); - switch(detallesPersona.getIdentificationcatalog()){ - case "CED": - tipoDireccion = "1"; - break; - case "RUC": - tipoDireccion= "2"; - break; - default: - tipoDireccion= ""; - break; - } - - //Tipo de documento - TgeneCatalogDetail catalogDetailDocumento=null; - if(detallesPersona.getIdentificationcatalog()!=null && detallesPersona.getIdentificationcatalogcode()!=null){ - catalogDetailDocumento=CatalogDetailController.findxCodigoCodcatalogo(detallesPersona.getIdentificationcatalog(), detallesPersona.getIdentificationcatalogcode()); - - if(catalogDetailDocumento!=null){ - tipoDocumento=catalogDetailDocumento.getDescription(); - } - } - - //Obteniendo la direccion del cliente - //this.direccionCliente=personAddressController.findPersonaPorDireccionTipoCatalogo(String.valueOf(record.getPersoncode()), tipoDireccion); - this.direccionCliente=personAddressController.findPrincipal(String.valueOf(record.getPersoncode())) ; - provincia = direccionCliente.modifiedData().get("provincia")==null?null: direccionCliente.modifiedData().get("provincia").toString(); //personAddressController.getLprovinces()==null || personAddressController.getLprovinces().isEmpty()?null:personAddressController.getLprovinces().get(0); - canton = direccionCliente.modifiedData().get("canton")==null?null: direccionCliente.modifiedData().get("canton").toString();//personAddressController.getLcantones()==null || personAddressController.getLcantones().isEmpty()?null:personAddressController.getLcantones().get(0); - ciudad = direccionCliente.modifiedData().get("ciudad")==null?null: direccionCliente.modifiedData().get("ciudad").toString();//personAddressController.getLcities()==null || personAddressController.getLcities().isEmpty()?null:personAddressController.getLcities().get(0); - direccion= direccionCliente.getAddress(); - - //Obteniendo las armas - lArmas = new ArrayList(); - List listaSolicitudArmas=TarmSolicitudArmasController.findPorCSolicitud(record.getPk()); - - for (TarmSolicitudArmas sa : listaSolicitudArmas) { - TarmArmas arma=ArmasController.find(sa.getPk().getCarma(),"REG"); - lArmas.add(arma); - } - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el grado del funcionario - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - - //Obteniendo el centro de control - centroControl=CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - if(centroControl!=null && centroControl.getNombreinstitucion()!=null && !centroControl.getNombreinstitucion().isEmpty() - && centroControl.getNombreinstitucioncodigo()!=null && !centroControl.getNombreinstitucioncodigo().isEmpty()){ - - TgeneCatalogDetail catalogoInstitucion=CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - this.nombreInstitucion=catalogoInstitucion.getDescription(); - } - - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - protected void querydatabaseSolicitud() { - try { - DtoQuery dto = super.getDtoQuery(true); - - - SubQuery sNumeroTramite= new SubQuery - ("TarmSolicitudTramite", "numerotramite", "ntramite", "i.pk.csolicitud = t.pk"); - dto.addSubQuery(sNumeroTramite); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - //Aqui se le cambia el estado a TarmSolicitudTramite - //segun se apruebe o se anule - /* - if(condicionAprobado){ - this.tarmSolicitudTramiteController.cambiarEstado(estadoTramiteAprobado, estadoTramiteAprobadoCodigo); - }else{ - this.tarmSolicitudTramiteController.cambiarEstado(estadoTramiteAnulado, estadoTramiteAnuladoCodigo); - }*/ - - DtoSave dtosaveSolicitudTramite = this.tarmSolicitudTramiteController.getDtoSave(); - if(dtosaveSolicitudTramite.pendingProcess()){ - dtosaveSolicitudTramite.setReturnpk(true); - msave.put(this.tarmSolicitudTramiteController.getBeanalias(), dtosaveSolicitudTramite); - } - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.tarmSolicitudTramiteController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Metodo que envia un mail de notificacion de tramite anulado - */ - public void enviarNotificacion(){ - try { - if(this.opcion!=null && !this.opcion.isEmpty() && this.opcion.equalsIgnoreCase("D")){ - String asunto = MsgControlArmas.getProperty("msg_asuntoNotificacionGuiaTranistoAnulada"); - String cuerpo = MessageFormat.format(MsgControlArmas.getProperty("msg_cuerpoNotificacionGuiaTransitoAnulada"), detallesPersona.getName(), - this.record.getModifiedData().get("ntramite"), this.observaciones,this.gradoFuncionario+usuario.getName(),this.nombreInstitucion); - - EnvioCorreoDTO envioCorreo = new EnvioCorreoDTO(); - envioCorreo.setCorreoDesde(MsgControlArmas.getProperty("correoDesde")); - //Cambiar por el correo del cliente - envioCorreo.setCorreoPara(new String[]{MsgControlArmas.getProperty("correoDestino")}); - envioCorreo.setAsunto(asunto); - envioCorreo.setMensajeHTML(cuerpo); - EnvioMail envioMail = EnvioMailFactory.getInstancia(); - envioMail.envioMail(envioCorreo); - - } - completarTarea(); - } catch(EnvioMailException e){ - MessageHelper.setMessageError(new Throwable("Se produjo un error al enviar el correo.")); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - if(bpmDataStatus!= null && bpmDataStatus.equals("D")){ - Mapdatosmail = new HashMap(); - datosmail.put("razons",detallesPersona.getName()); - datosmail.put("sol",numeroSolicitud); - datosmail.put("observaciones",bpmDataComment); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // Centro de control de armas - datosmail.put("centrocontrol",centroControl.getModifiedData().get("desinstitucion")); - request.modifiedData().put("datosmail", datosmail); - } - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Busca una solicitud por su codigo - * @param codigoSolicitud - * @return - */ - public static TarmSolicitud findPorSolicitud(String codigoSolicitud) { - try { - ValidacionTramiteLibreTransitoController cc = new ValidacionTramiteLibreTransitoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigoSolicitud); - cc.querydatabase(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Busca una solicitud por su codigo - * @param codigoSolicitud - * @return - */ - public static TarmSolicitud findPorSolicitudSimple(String codigoSolicitud) { - try { - ValidacionTramiteLibreTransitoController cc = new ValidacionTramiteLibreTransitoController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", codigoSolicitud); - cc.querydatabaseSolicitud(); - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Incrementa el numero del arma - * @param arma - * @return - */ - public int incrementarRowkey(TarmArmas arma){ - int n=0; - - for (int i = 0; i < lArmas.size(); i++) { - if(arma.getPk()==lArmas.get(i).getPk()){ - n=i+1; - break; - } - } - - return n; - } - - /** - * Obtiene los detalles de las armas segun el catalogo - * @param catalogo - * @param catalogoCode - * @return - */ - public String aspectoArmaCatalogo(String catalogo, String catalogoCode){ - if(catalogo!=null && catalogoCode!=null && !catalogo.isEmpty() && !catalogoCode.isEmpty()){ - return CatalogDetailController.findxCodigoCodcatalogo(catalogo, catalogoCode).getDescription(); - } - return null; - } - - /** - * Devuelve una descripcion de catalogo segun un tipo de aspecto - * @param arma - * @param tipoAspecto - * @return - */ - public String aspectoArmaExplosivoCatalogo(TarmArmas arma,String tipoAspecto){ - String aspecto=""; - - try { - TarmTipoArmaExplosivo explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - if(explosivo!=null){ - if(tipoAspecto.equalsIgnoreCase("clase") && explosivo.getClase()!=null && !explosivo.getClase().isEmpty() - && explosivo.getClasecodigo()!=null && !explosivo.getClasecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getClase(), explosivo.getClasecodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("tipo") && explosivo.getTipoarmaexplosivo()!=null && !explosivo.getTipoarmaexplosivo().isEmpty() - && explosivo.getTipoarmaexplosivocodigo()!=null && !explosivo.getTipoarmaexplosivocodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getTipoarmaexplosivo(), explosivo.getTipoarmaexplosivocodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("calibre") && explosivo.getCalibre()!=null && !explosivo.getCalibre().isEmpty() - && explosivo.getCalibrecodigo()!=null && !explosivo.getCalibrecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getCalibre(), explosivo.getCalibrecodigo()).getDescription(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - return aspecto; - } - - public TarmTipoArmaExplosivo explosivoPorArma(TarmArmas arma){ - TarmTipoArmaExplosivo explosivo=new TarmTipoArmaExplosivo(); - - try { - explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - return explosivo; - } - - - public TarmSolicitudTramite getSolicitudTramite() { - return solicitudTramite; - } - - public void setSolicitudTramite(TarmSolicitudTramite solicitudTramite) { - this.solicitudTramite = solicitudTramite; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public TcustPersonDetail getDetallesPersona() { - return detallesPersona; - } - - public void setDetallesPersona(TcustPersonDetail detallesPersona) { - this.detallesPersona = detallesPersona; - } - - - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getNumeroSolicitud() { - return numeroSolicitud; - } - - public void setNumeroSolicitud(String numeroSolicitud) { - this.numeroSolicitud = numeroSolicitud; - } - - public List getlArmas() { - return lArmas; - } - - public void setlArmas(List lArmas) { - this.lArmas = lArmas; - } - - public PersonAddressController getPersonAddressController() { - return personAddressController; - } - - public void setPersonAddressController( - PersonAddressController personAddressController) { - this.personAddressController = personAddressController; - } - - public TarmSolicitudArmas getSolicitudArmas() { - return solicitudArmas; - } - - public void setSolicitudArmas(TarmSolicitudArmas solicitudArmas) { - this.solicitudArmas = solicitudArmas; - } - - public String getDireccion() { - return direccion; - } - - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - public String getEstadoTramite() { - return estadoTramite; - } - - public void setEstadoTramite(String estadoTramite) { - this.estadoTramite = estadoTramite; - } - - public String getTipoDocumento() { - return tipoDocumento; - } - - public void setTipoDocumento(String tipoDocumento) { - this.tipoDocumento = tipoDocumento; - } - - public String getTipoTramite() { - return tipoTramite; - } - - public void setTipoTramite(String tipoTramite) { - this.tipoTramite = tipoTramite; - } - - public String getUsoActividad() { - return usoActividad; - } - - public void setUsoActividad(String usoActividad) { - this.usoActividad = usoActividad; - } - - public TarmSolicitudTramiteController getTarmSolicitudTramiteController() { - return tarmSolicitudTramiteController; - } - - public void setTarmSolicitudTramiteController( - TarmSolicitudTramiteController tarmSolicitudTramiteController) { - this.tarmSolicitudTramiteController = tarmSolicitudTramiteController; - } - - public TarmSolicitudArmasController getTarmSolicitudArmasController() { - return tarmSolicitudArmasController; - } - - public void setTarmSolicitudArmasController( - TarmSolicitudArmasController tarmSolicitudArmasController) { - this.tarmSolicitudArmasController = tarmSolicitudArmasController; - } - - public TgeneParroquia getParroquia() { - return parroquia; - } - - public void setParroquia(TgeneParroquia parroquia) { - this.parroquia = parroquia; - } - - public TcustPersonAddress getDireccionCliente() { - return direccionCliente; - } - - public void setDireccionCliente(TcustPersonAddress direccionCliente) { - this.direccionCliente = direccionCliente; - } - - public String getTipoDireccion() { - return tipoDireccion; - } - - public void setTipoDireccion(String tipoDireccion) { - this.tipoDireccion = tipoDireccion; - } - - public String getObservaciones() { - return observaciones; - } - - public void setObservaciones(String observaciones) { - this.observaciones = observaciones; - } - - public String getGradoFuncionario() { - return gradoFuncionario; - } - - public void setGradoFuncionario(String gradoFuncionario) { - this.gradoFuncionario = gradoFuncionario; - } - - public TcustPersonDetail getUsuario() { - return usuario; - } - - public void setUsuario(TcustPersonDetail usuario) { - this.usuario = usuario; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public void setNombreInstitucion(String nombreInstitucion) { - this.nombreInstitucion = nombreInstitucion; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public String getOpcion() { - return opcion; - } - - public void setOpcion(String opcion) { - this.opcion = opcion; - } - - public static long getSerialversionuid() { - return serialVersionUID; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidarDepositoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidarDepositoController.java.svn-base deleted file mode 100644 index acf0d88..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/ValidarDepositoController.java.svn-base +++ /dev/null @@ -1,879 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.ConvertNumberToText; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora para la validacion del deposito - * - * @author CHRISTIAN PAZMINO - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ValidarDepositoController extends AbstractController { - /** - * Codigo de solicitud - */ - private String csolicitud; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del tramite) - */ - private TgeneCatalogDetail nombreTramite; - /** - * Variable del tipo TgeneCatalogDetail(catalogo de la categoria) - */ - private TgeneCatalogDetail nombreCategoria; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del uso actividad del tramite) - */ - private TgeneCatalogDetail nombreUsoActividad; - /** - * Opciones de aceptar o rechazar - */ - private List accionList; - /** - * Propiedad usada para el manejo del Alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - /** - * Propiedad usada para el manejo del numero de armas de la solicitud - */ - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController recepcionArmasController; - /** - * Propiedad usada para el manejo del centro de control de armas - */ - @ManagedProperty(value = "#{centroControlArmasController}") - private CentroControlArmasController centroControlArmasController; - /** - * controlador de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitudMP; - - /** - * Propiedad usada para el manejo de reportes - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - /** - * Propiedad usada para el manejo de la solicitud actual - */ - private TarmSolicitud solicitud; - /** - * Accion tomada por el usuario, aprobar o rechazar - */ - private String accionTomada; - /** - * Constante usada para referirse a la opcion general aprobar - */ - private final String APROBAR = "APR"; - /** - * Constante usada para referirse a la opcion general rechazar - */ - private final String REPROBAR = "RECH"; - /** - * Constante usada para referirse a la opcion aprobar deposito - */ - private final String APROBAR_DEPOSITO = "APBDEP"; - /** - * Constante usada para referirse a la opcion rechazar deposito - */ - private final String ANULAR_DEPOSITO = "ANUDEP"; - /** - * Propiedad usada para el manejo del tramite actual - */ - private TarmTramite tramite; - /** - * Fecha de atencion del proximo tramite - */ - private Date fechaAtencionTramite; - /** - * Variable que indica si el usuario esta negado para continuar en la pantalla - */ - private Boolean isDenied; - /** - * Variable auxiliar usada para diferenciar cuando se presenta o no el mensaje de validacion de fecha expiracion solicitud - */ - private Boolean isOnlyMsj; - /** - * Obtiene el centro d control de armas de la solicitud actual - */ - private TarmCentroControl centroControlObj; - /** - * Bandera de tipo booleano para indicar si se habilita el boton de completar tarea - */ - private Boolean isEnableCompletarTarea= Boolean.FALSE; - - /** - * Nombre del centro de control - */ - private String nombreCentroControl; - - private Boolean requiereNoSolAucpBln; - - private Boolean btnImprimir; - public ValidarDepositoController() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - super.startQuery(); - csolicitud = this.getMfilters().get("csolicitud"); - this.getMfilters().clear(); - init(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - this.beanalias = "VALIDARDEPOSITO"; - // Recuperamos el centro de control de armas correspondiente al solicitante - accionList=CatalogDetailController.find("ACCION"); - this.record = SolicitudTramiteController.findByCSolicitud(csolicitud); - isOnlyMsj = false; - btnImprimir=Boolean.FALSE; - requiereNoSolAucpBln=Boolean.FALSE; - try { - isDenied = true; - if(record!=null){ - solicitud = SolicitudArmasController.find(csolicitud); - if(solicitud!=null && solicitud.getCtramite()!=null){ - - tramite = IngresoDatosTipoTramite.find(solicitud.getCtramite().toString()); - if(tramite!=null){ - //Tramite - nombreTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipoautorizacion(), tramite.getTipoautorizacioncodigo()); - nombreCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - nombreUsoActividad= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - if(tramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - } - else{ - MessageHelper.setMessageError("NO EXISTE UN TIPO DE TR\u00c1MITE ASOCIADO A LA SOLICITUD"); - return; - } - } - else{ - MessageHelper.setMessageError("NO EXISTE UNA SOLICITUD ASOCIADA AL TR\u00c1MITE"); - return; - } - //Obteniendo el centro de control -// TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); -// PersonAddressController direccion = new PersonAddressController(); -// TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); -// TarmCentroControlJur jurisdiccionCentroControl; -// jurisdiccionCentroControl= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControlObj = CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreCentroControl(CatalogDetailController.findxCodigoCodcatalogo( centroControlObj.getNombreinstitucion(), - centroControlObj.getNombreinstitucioncodigo()).getDescription()); - } - else{ - MessageHelper.setMessageError("NO EXISTE EL TR\u00c1MITE EN LA BASE DE DATOS"); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que devuelve el centro de control al que pertenece el cliente dueno de la solicitud - * @throws Exception - */ -// private String obtenerCentroControlSolicitante() throws Exception { -// PersonAddressController personAddressController = new PersonAddressController(); -// TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(solicitud.getPersoncode().toString()); -// TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); -// TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); -// String institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); -// return institucionCentroControl; -// } - - /** - * ? - */ - public void cancelar(){ - init(); - } - - /** - * Genera la fecha disponible para el proximo tramite en el centro de control de armas respectivo - */ - public void generarFechaProximoTramite(){ - try { - // Validamos si ya existe una fecha para realizar el proximo tramite - centroControlObj.isnew = false; - Date fechaActual=new Date(Calendar.getInstance().getTimeInMillis()); - if(centroControlObj.getFechaproximotramite()==null || centroControlObj.getFechaproximotramite().before(fechaActual)){ - fechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(new Date(), 1); - }else{ - fechaAtencionTramite = centroControlObj.getFechaproximotramite(); - } - // Numero de armas de la solicitud - ListarmasList = RecepcionArmasController.findPorSolicitud(csolicitud); - int numArmasSolicitud = armasList.size(); - int salvedad = 10; - int capacidadCentroUltDia = 0; - if(centroControlObj.getCuposlibresultimodia()!=null){ - capacidadCentroUltDia = centroControlObj.getCuposlibresultimodia(); - } - else{ - capacidadCentroUltDia = centroControlObj.getTramitespordia(); - } - // Si la capacidad del centro en el ultimo dia es mayor al numero de armas a revisarse - if(numArmasSolicitud < capacidadCentroUltDia){ - centroControlObj.setCuposlibresultimodia(capacidadCentroUltDia - numArmasSolicitud); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - else if((numArmasSolicitud == capacidadCentroUltDia) || (numArmasSolicitud <= (capacidadCentroUltDia + salvedad))){ - // Si la capacidad del centro es igual al numero de armas a revisarse o ajusta cupo con la salvedad - centroControlObj.setCuposlibresultimodia(centroControlObj.getTramitespordia()); - Date newFechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, 1); - centroControlObj.setFechaproximotramite(new java.sql.Date(newFechaAtencionTramite.getTime())); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - else{ - // Cociente y residuo para los casos donde se tiene 50 armas o mas a tramitarse - int diasRequeridos = numArmasSolicitud/centroControlObj.getTramitespordia(); - // Requerido para el calculo de los cupos disponibles para el ultimo dia - int residuoDiasRequeridos = numArmasSolicitud%centroControlObj.getTramitespordia(); - fechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, 1); - Date newFechaAtencionTramite; - - centroControlObj.setCuposlibresultimodia(centroControlObj.getTramitespordia()-residuoDiasRequeridos); - newFechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, diasRequeridos); - - centroControlObj.setFechaproximotramite(new java.sql.Date(newFechaAtencionTramite.getTime())); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - - } - } - - /** - * Método para finalizar la tarea del flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - // Completar tarea en el flujo - Mapdatosmail = new HashMap(); - if(accionTomada.equalsIgnoreCase(APROBAR)){ - request.modifiedData().put("BPMStatus", "A"); - if(tramite!=null && tramite.getTipotramite()!=null){ - // En el caso de permisos enviamos una notificacion al cliente con algunos parametros adicionales - if(tramite.getTipoautorizacion().equalsIgnoreCase("6")){ - datosmail.put("razonsocial",solicitud.getModifiedData().get("nombre")); -// datosmail.put("csolicitud",csolicitud); -// datosmail.put("numcomprobante",record.getNumerocomprobante()); - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - // Datos del funcionario que valida - datosmail.put("funcionario",personDetailObj.getName()); - datosmail.put("grado",personDetailObj.getMilitarygrade()==null?"":personDetailObj.getMilitarygrade()); - String nombreCCA = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(), centroControlObj.getNombreinstitucioncodigo()).getDescription(); - datosmail.put("nombreCCA",nombreCCA); - datosmail.put("nombreCCACliente",nombreCCA); - datosmail.put("numeroTramite",solicitud.getNumerosolicitud().replace("SOL", "TRA")); - generarFechaProximoTramite(); - SimpleDateFormat sdf = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - datosmail.put("fechaGenerada",sdf.format(fechaAtencionTramite)); - } - } - }else{ - request.modifiedData().put("BPMStatus", "D"); - datosmail.put("razonsocial",solicitud.getModifiedData().get("nombre")); - datosmail.put("numeroSolicitud",solicitud.getNumerosolicitud()); - datosmail.put("numcomprobante",record.getNumerocomprobante()); - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - // Datos del funcionario que valida - datosmail.put("funcionario",personDetailObj.getName()); - datosmail.put("grado",personDetailObj.getMilitarygrade()==null?"":personDetailObj.getMilitarygrade()); - String nombreCCA = CatalogDetailController.findxCodigoCodcatalogo(centroControlObj.getNombreinstitucion(), centroControlObj.getNombreinstitucioncodigo()).getDescription(); - datosmail.put("nombreCCA",nombreCCA); - - } - request.modifiedData().put("datosmail", datosmail); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - btnImprimir=Boolean.FALSE; - if(!accionTomada.equalsIgnoreCase(APROBAR)){ - saveAnularSolicitud(); - } - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - isDenied = true; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public void saveAnularSolicitud() { - try { - // CATEGORIA 14 PREVIA IMPORTACION - if(tramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - //Poner la solicitud en estado anulado deposito - solicitud.setEstado("ANUDEP"); - solicitud.setAucp(null); - solicitudMP.setRecord(solicitud); - solicitudMP.update(); - DtoSave dtoSolicitud = solicitudMP.getDtoSave(); - - if(record!=null){ - record.setIsnew(false); - record.setEstadotramite("ANUDEP"); - super.update(); - } - - //Desasociar las armas en apertura de agencias y apertura de sucursales - if(solicitud.getCtramite()==44 || solicitud.getCtramite()==48){ - List armasSolicitudList = RecepcionArmasController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudArmas armaObj:armasSolicitudList){ - - // Codigo agencia de la solicitud - ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(solicitud.getPk()); - for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ - String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); - TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); - agenciaArma.setRecord(agenciaArmaObj); - agenciaArma.remove(); - } - } - } - - DtoSave dtoSolicitudTramite = this.getDtoSave(); - DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitudMP.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - msave.put(this.getBeanalias(), dtoSolicitudTramite); - msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - solicitudMP.postCommit(resp); - agenciaArma.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - super.update(); - DtoSave dtosave = super.getDtoSave(); - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - if(accionTomada.equalsIgnoreCase(APROBAR)){ - record.setEstadotramite(APROBAR_DEPOSITO); - btnImprimir=Boolean.TRUE; - }else{ - record.setEstadotramite(ANULAR_DEPOSITO); - } - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - isDenied = true; - isEnableCompletarTarea = Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - protected void querydatabase() { - try { - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Consulta y retorna el codigo de un aprobado - */ - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1"); - return f.getTextvalue(); - } - - /** - * Retorna la ruta de documento base en donde se almacenará dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(solicitud.getFregistro()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Metodo para validar el valor a pagar - */ - public void validarValorDelDeposito(){ - if(record.getValorapagar().compareTo(record.getValorverificado())!=0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_vVerificDiferenteDeVAPagar")); - } - } - - /** - * Genera el reporte del comprobante de caja - * @param name Nombre del reporte a generar. - */ - public void generateReport() { - String path = "armas/reports/comprobanteCaja"; - String filename=MsgControlArmas.getProperty("lbl_comprobanteCaja"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - //RUC de COMACO - String rucComaco="-"; - TgeneParameters parametroRUC=ParametersController.find("RUCCOMACO", "1"); - if(parametroRUC!=null){ - rucComaco=parametroRUC.getTextvalue(); - } - parameters.put("rucComaco", rucComaco); - - //Nombre centro - parameters.put("nombreCentro", this.getNombreCentroControl()); - - //No comprobante - String noComprobante="-"; - TarmSolicitudTramite solicitudTramite=SolicitudTramiteController.findByCSolicitud(this.solicitud.getPk()); - if(solicitudTramite!=null){ - noComprobante=solicitudTramite.getNumerotramite(); - } - parameters.put("noComprobante", noComprobante); - - //Fecha de emision - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fechaSistema", sdf.format(Calendar.getInstance().getTime())); - - //Ruc del usuario - if(this.solicitud.getModifiedData().get("identification")!=null){ - parameters.put("ruc", this.solicitud.getModifiedData().get("identification")); - }else { - parameters.put("ruc", " "); - } - - //Nombre-razon social - if(this.solicitud.getModifiedData().get("nombre")!=null){ - parameters.put("nombreRazon", this.solicitud.getModifiedData().get("nombre")); - }else { - parameters.put("nombreRazon", " "); - } - - - //Cantidad en letras - String cantidadLetras= ConvertNumberToText.convertNumberToLetter(this.record.getValorapagar().toString()); - parameters.put("cantidadLetras", cantidadLetras); - - //Tramite-categoria-uso - if(this.nombreTramite!=null && this.nombreCategoria!=null && this.nombreUsoActividad!=null){ - parameters.put("tramiteCategoriaUso", this.nombreTramite.getDescription()+"-"+this.nombreCategoria.getDescription()+"-"+this.nombreUsoActividad.getDescription()); - }else { - parameters.put("tramiteCategoriaUso", " "); - } - - - //No comprobante del deposito - String noComprobanteDeposito=this.record.getNumerocomprobante().replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < noComprobanteDeposito.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(noComprobanteDeposito.toCharArray()[i]!='0' && noComprobanteDeposito.toCharArray()[i]!='1' && noComprobanteDeposito.toCharArray()[i]!='2' - && noComprobanteDeposito.toCharArray()[i]!='3' && noComprobanteDeposito.toCharArray()[i]!='4' && noComprobanteDeposito.toCharArray()[i]!='5' - && noComprobanteDeposito.toCharArray()[i]!='6' && noComprobanteDeposito.toCharArray()[i]!='7' && noComprobanteDeposito.toCharArray()[i]!='8' - && noComprobanteDeposito.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=noComprobanteDeposito.toCharArray()[i]; - noComprobanteDeposito=noComprobanteDeposito.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("noComprobanteDeposito", noComprobanteDeposito); - - //Banco-cuenta - String banco="-"; - TgeneParameters parametroBanco=ParametersController.find("BANCODEPOSITO", "1"); - if(parametroBanco!=null){ - banco=parametroBanco.getTextvalue(); - } - - String cuenta="-"; - TgeneParameters parametroCuenta=ParametersController.find("CUENTADEPOSITO", "1"); - if(parametroCuenta!=null){ - cuenta=parametroCuenta.getTextvalue(); - } - - //Banco-Cuenta - parameters.put("banco", "Banco "+banco+" "+"No. "+cuenta); - - //Valor deposito - parameters.put("valorDeposito", this.record.getValorapagar().toString()); - - //Fecha deposito - parameters.put("fechaDeposito", sdf.format(this.record.getFechacomprobante())); - - String format = "pdf"; - - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TgeneCatalogDetail getNombreTramite() { - return nombreTramite; - } - - public void setNombreTramite(TgeneCatalogDetail nombreTramite) { - this.nombreTramite = nombreTramite; - } - - public TgeneCatalogDetail getNombreCategoria() { - return nombreCategoria; - } - - public void setNombreCategoria(TgeneCatalogDetail nombreCategoria) { - this.nombreCategoria = nombreCategoria; - } - - public TgeneCatalogDetail getNombreUsoActividad() { - return nombreUsoActividad; - } - - public void setNombreUsoActividad(TgeneCatalogDetail nombreUsoActividad) { - this.nombreUsoActividad = nombreUsoActividad; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public Boolean getIsOnlyMsj() { - return isOnlyMsj; - } - - public void setIsOnlyMsj(Boolean isOnlyMsj) { - this.isOnlyMsj = isOnlyMsj; - } - - public List getAccionList() { - return accionList; - } - - public void setAccionList(List accionList) { - this.accionList = accionList; - } - - public String getAccionTomada() { - return accionTomada; - } - - public void setAccionTomada(String accionTomada) { - this.accionTomada = accionTomada; - } - - public RecepcionArmasController getRecepcionArmasController() { - return recepcionArmasController; - } - - public void setRecepcionArmasController( - RecepcionArmasController recepcionArmasController) { - this.recepcionArmasController = recepcionArmasController; - } - - public CentroControlArmasController getCentroControlArmasController() { - return centroControlArmasController; - } - - public void setCentroControlArmasController( - CentroControlArmasController centroControlArmasController) { - this.centroControlArmasController = centroControlArmasController; - } - - public Boolean getIsEnableCompletarTarea() { - return isEnableCompletarTarea; - } - - public void setIsEnableCompletarTarea(Boolean isEnableCompletarTarea) { - this.isEnableCompletarTarea = isEnableCompletarTarea; - } - - /** - * Metodo utilizado para determinar la accion a tomar, de forma automatica la accion es reprobar en caso de encontrarse un valor de deposito incorrecto - */ - public void aceptar(){ - if(record.getValorapagar().compareTo(record.getValorverificado())!=0){ - accionTomada = REPROBAR; - isDenied = true; - }else{ - accionTomada = ""; - isDenied = false; - } - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public TarmTramite getTramite() { - return tramite; - } - - public void setTramite(TarmTramite tramite) { - this.tramite = tramite; - } - - public Date getFechaAtencionTramite() { - return fechaAtencionTramite; - } - - public void setFechaAtencionTramite(Date fechaAtencionTramite) { - this.fechaAtencionTramite = fechaAtencionTramite; - } - - public TarmCentroControl getCentroControlObj() { - return centroControlObj; - } - - public void setCentroControlObj(TarmCentroControl centroControlObj) { - this.centroControlObj = centroControlObj; - } - - public String getAPROBAR() { - return APROBAR; - } - - public String getREPROBAR() { - return REPROBAR; - } - - public String getAPROBAR_DEPOSITO() { - return APROBAR_DEPOSITO; - } - - public String getANULAR_DEPOSITO() { - return ANULAR_DEPOSITO; - } - - public Boolean getBtnImprimir() { - return btnImprimir; - } - - public void setBtnImprimir(Boolean btnImprimir) { - this.btnImprimir = btnImprimir; - } - - public SolicitudArmasController getSolicitudMP() { - return solicitudMP; - } - - public void setSolicitudMP(SolicitudArmasController solicitudMP) { - this.solicitudMP = solicitudMP; - } - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreCentroControl() { - return nombreCentroControl; - } - - public void setNombreCentroControl(String nombreCentroControl) { - this.nombreCentroControl = nombreCentroControl; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionBodegaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionBodegaController.java.svn-base deleted file mode 100644 index de2c1b4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionBodegaController.java.svn-base +++ /dev/null @@ -1,1120 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.faces.event.AjaxBehaviorEvent; -import javax.faces.model.SelectItem; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.parmas.soli.TarmDecomisoArmaTransaccion; -import com.fp.persistence.parmas.soli.TarmTransaccionArmaBodega; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TarmDecomisoArma. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificacionBodegaController extends AbstractController { - - /** - * prefijo para la generacion del numero de transaccion - */ - private static final String prefijo="REC"; - - @ManagedProperty(value = "#{decomisoArmaTransaccionController}") - private DecomisoArmaTransaccionController decomisoArmaTransaccionController; - - @ManagedProperty(value = "#{transaccionArmaBodegaController}") - private TransaccionArmaBodegaController transaccionArmaBodegaController; - - @ManagedProperty(value = "#{bodegaController}") - private BodegaController bodegaController; - - @ManagedProperty(value = "#{decomisoController}") - private DecomisoController decomisoController; - - /** - * Controlador para generar el reporte - */ - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - /** - * Controlador para caragar el archivo al alfresco - */ - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - private Boolean isCentroDpto = Boolean.FALSE; - - /** - * ruta para cargar el archivo - */ - private String xpathflujo; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ -// private List linstitucion; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ -// private List lnombreInstitucion; - /** - * Fecha de corte - */ - private Date fechaCorte; - /** - * Codigo del centro de control - */ - private String codigoOrganismoControl; - /** - * codigo de la unidad de control - */ - private String codigoUnidadControl; - /** - * numero de custodia del arma - */ -// private String numeroDecomiso; - - private String numerotransaccionEnvio; - /** - * atributo con los datos del usuario logeado - */ - private TsafeUserDetail userDetail; - /** - * catalogo de tipos de reporte - */ - private List lTipoReporte; - /** - * atributo para habilitar o desabilitar al boton - * guaradr - */ - private Boolean btnSave; - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean btnSelTodos; - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean cmbTransaccionenvio; - /** - * atributo para habilitar o desabilitar al boton - * genera acta - */ - private Boolean btnGenerarActa; - /** - * Atributo para el numero de transacion - * de recibido que se genera al pulsar el - * boton generar acta - */ - private String numRecepcionGenerado; - /** - * Atributo para el numero de transacion - * de recibido que se genera al pulsar el - * boton generar acta - */ - private String numRecepcionGeneradoAux; - /** - * clave primaria de la tabla TarmDecomisoArmaTransaccion - */ - private String numerotransaccionpk; - /** - * clave primaria de la tabla TarmDecomisoArmaTransaccion - */ - private String numerotransaccionpkAux; - /** - * fecha con la que se realizo el reporte - */ - private Date fechaCorteg; - /** - * formato del reporte PDF - */ - private String format; - /** - * Tipo de reporte PDF - */ - private String tipoReporte; - /** - * centro de control - */ - private TarmCentroControl centroControl; - /** - * nombre del centro de control - */ - private String institucionCentroControl; - /** - * nombre del centro de control - */ - private String instiCentroControlCode; - /** - * codigo del decomiso del catalogo ESTADOARMA - */ - private String codigoDecomiso; - /** - * codigo de la incautacion del catalogo ESTADOARMA - */ - private String codigoIncautacion; - /** - * codigo de entrega voluntaria del catalogo ESTADOARMA - */ - private String entregaVoluntaria; - /** - * codigo de abandono del catalogo ESTADOARMA - */ - private String abandono; - /** - * codigo del reclamo del catalogo ESTADOARMA - */ - private String codigoReclamo; - /** - * codigo de la provincia del usuario que se logeo - */ - private String cprovincia; - - private Boolean itemsUnidadBolean; - - //Manu - /** - * centro de control destino - */ - private String organismoControlDestino; - /** - * codigo de la unidad de control - */ - private String unidadControlDestino; - /** - * unidad de control destino - */ - private String codigoUnidadControlDestino; - - private String centroControlOrigenStr; - private String unidadOrigenStr; - /** - * estado operacion del decomiso del catalogo ESTADOARMA - */ - private String estadoOperacion; - - private ListitemUnidadDestino; - private List listaEnviosRealizados; - - public VerificacionBodegaController() throws Exception { - super(TarmDecomisoArma.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 100000; // Cambiar al # reg a mirar. - lrecord = new ArrayList(); - beanalias = "DECOMARMTRANRECECCION"; - //boton desabilitado - btnSave=Boolean.TRUE; - btnGenerarActa=Boolean.TRUE; - btnSelTodos = Boolean.TRUE; - cmbTransaccionenvio = Boolean.TRUE; - //fecha actual para el corte - fechaCorte=new Date(); - //CARGA DE CATALOGOS -// linstitucion=CatalogDetailController.find("INSTITUCION"); - lTipoReporte = CatalogDetailController.find("TIPOREPORTE"); - //obtiene el centro de control - obtenerCentroControl(); - format = "pdf"; - numerotransaccionpk=null; - codigoDecomiso=codigos("CODIGO.DECOMISADA");//DEC - codigoIncautacion=codigos("CODIGO.INCAUTADA");//INC - entregaVoluntaria = codigos("CODIGO.ENTV"); - abandono = codigos("CODIGO.ABAN"); - codigoReclamo=codigos("CODIGO.RECL");//RECLAMO - xpathflujo=null; - itemsUnidadBolean=Boolean.FALSE; - estadoOperacion = "ENVIO"; - - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - codigoUnidadControlDestino = tsafeUserDetail.getCcentrocontrol(); - - organismoControlDestino = tsafeUserDetail.getModifiedData().get("centrocontrol").toString(); - unidadControlDestino = tsafeUserDetail.getModifiedData().get("unidad").toString(); - - //codigoOrganismoControl = tsafeUserDetail.getCcentrocontrol(); - codigoUnidadControl = tsafeUserDetail.getCcentrocontrol(); - listaEnviosRealizados = DecomisoArmaTransaccionController.findParaReception(codigoUnidadControl); -// System.out.println(listaDecomisoArmaTrans1.size()); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para obtener el centro de control - * @throws Exception - */ - private void obtenerCentroControl() throws Exception { - userDetail= (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - centroControl= CentroControlArmasController.findPorCodigo(userDetail.getCcentrocontrol()); - cprovincia=centroControl.getProvincecode(); - itemUnidadDestino= new ArrayList(); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - //codigo del centro de control de pichincha - TgeneParameters paramCentroControlDestino=ParametersController.find("CODIGO.CENT.CONTROL.PICHINCHA", "1");//000030//CAPI - //validamos si la persona que ingreso pertenece al centro de control pichincha para darle al opcion de seleccionar el deparatmento de control para la recepcion - if(paramCentroControlDestino.getTextvalue().equals(centroControl.getNombreinstitucion())){ - itemUnidadDestino.add(new SelectItem(centroControl.getPk(), institucionCentroControl)); - //codigo del departamento de control - TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - TarmCentroControl institCentroControlDestino= CentroControlArmasController.findPorCentroControl(paramDepartamentoControl.getTextvalue());//000077 - itemUnidadDestino.add(new SelectItem(institCentroControlDestino.getPk(), ""+institCentroControlDestino.getModifiedData().get("desnombreinstitucion"))); - }else{ - instiCentroControlCode=centroControl.getPk(); - } - } - - /** - * Metodo para obtener los codigos - */ - private String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(fechaCorte!=null){ - DtoQuery dto = this.getDtoQuery(); - dto.setOrderby("t.fdecomiso"); - if(numerotransaccionpk!=null){ - SimpleDateFormat formato= new SimpleDateFormat("yyyy-MM-dd"); - Filter decomisoFiltro= new Filter(); - decomisoFiltro.setSql("trunc(t.fdecomiso) <= " + "TO_DATE('" + - formato.format(fechaCorte)+ "','yyyy-MM-dd') and (t.estado='"+codigoDecomiso+"' or t.estado='"+codigoIncautacion+"' or t.estado='"+abandono+"' or t.estado='"+codigoReclamo+"') and t.cdecarmtranrecepcion = "+numerotransaccionpk); - dto.addFiltro(decomisoFiltro); - }else{//aniadimos los filtros de busqueda - dto = filtroVerificarArmas(dto); - numRecepcionGenerado=null; - //codigoOrganismoControlDestino = null; - //codigoUnidadControlDestino = null; - } - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - btnSelTodos = Boolean.TRUE; - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - //metodo para completar la informacion - completarInformacionArma(); - btnSave=Boolean.TRUE; - btnSelTodos = Boolean.FALSE; - btnGenerarActa=Boolean.TRUE; - numerotransaccionpk=null; - super.postQuery(lrecord); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Retorna un {@link DtoQuery} con los atributos a presentarse - * @return - * @throws Exception - */ - private DtoQuery getDtoQuery() throws Exception{ - DtoQuery dto = super.getDtoQuery(true); - - SubQuery subqueryNumRec= new SubQuery("TarmDecomiso","numerorecibo","nrecibo","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNumRec); - SubQuery subqueryNumTransac= new SubQuery("TarmDecomiso","numerotransaccion","numerotransaccion","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryNumTransac); - SubQuery subqueryCentroControl= new SubQuery("TarmDecomiso","ccentrocontrol","ccentrocontrol","i.pk=t.cdecomiso"); - dto.addSubQuery(subqueryCentroControl); - SubQuery subqueryMarca= new SubQuery("TgeneCatalogDetail","description","nmarca", - "i.pk.catalog=(select o.marca from TarmArmas o where o.pk=t.carma)" - + " and i.pk.catalogcode=(select o.marcacodigo from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryMarca); - SubQuery subquerySerieArma= new SubQuery("TarmArmas","lote","nserie","i.pk=t.carma"); - dto.addSubQuery(subquerySerieArma); - - SubQuery subqueryCalibre= new SubQuery("TgeneCatalogDetail","description","ncalibre", - "i.pk.catalog =(select o.calibre from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))" - + " and i.pk.catalogcode=(select o.calibrecodigo from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))");//calibrecodigo - dto.addSubQuery(subqueryCalibre); - - SubQuery subqueryCodigoReg= new SubQuery("TarmArmas","cregistro","cregistro","i.pk=t.carma"); - dto.addSubQuery(subqueryCodigoReg); - SubQuery subqueryCodigoArmaExplo= new SubQuery("TarmArmas","ctipoarmaexplosivo","ctipoarmaexplosivo","i.pk=t.carma"); - dto.addSubQuery(subqueryCodigoArmaExplo); - //tipo, clase, unidad de TarmTipoArmaExplosivo - SubQuery subqueryTipo= new SubQuery("TgeneCatalogDetail","description","ntipo", - "i.pk.catalog =(select o.tipoarmaexplosivo from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))" - + " and i.pk.catalogcode=(select o.tipoarmaexplosivocodigo from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryClase= new SubQuery("TgeneCatalogDetail","description","nclase", - "i.pk.catalog =(select o.clase from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))" - + " and i.pk.catalogcode=(select o.clasecodigo from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))"); - dto.addSubQuery(subqueryClase); - SubQuery subqueryUnidad= new SubQuery("TgeneCatalogDetail","description","nunidad", - "i.pk.catalog =(select o.unidadmedidapeso from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))" - + " and i.pk.catalogcode=(select o.unidadmedidapesocodigo from TarmTipoArmaExplosivo o where o.pk=(select a.ctipoarmaexplosivo from TarmArmas a where a.pk=t.carma))"); - dto.addSubQuery(subqueryUnidad); - //personcode - //TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(decomisoArma.getModifiedData().get("cregistro").toString()); - SubQuery subqueryPersonCode= new SubQuery("TarmRegistroArmas","personcode","personcode", " i.pk =(select o.cregistro from TarmArmas o where o.pk=t.carma)"); - dto.addSubQuery(subqueryPersonCode); - - SubQuery subquerEstadoFlujo= new SubQuery("TarmDecomisoArmaTransaccion","estadoflujo","estadoflujo","i.pk=t.cdecomisoarmatransaccion"); - dto.addSubQuery(subquerEstadoFlujo); - return dto; - } - - - @Override - public void save() { - try { - Boolean seleccion = Boolean.FALSE; - for(TarmDecomisoArma decomisoArma:this.lrecord){ - record = decomisoArma; - if(record.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - seleccion = true; - record.setCdecarmtranrecepcion(0l); - record.setCoperaciontransaccion("RECEPCION"); - } - this.update(); - } - if(!seleccion){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_verificararmas")); - return; - } - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - - Calendar cal=Calendar.getInstance(); - cal.setTime(fechaCorte); - java.sql.Date fechaCorteRegistro=new java.sql.Date(cal.getTimeInMillis()); - - this.decomisoArmaTransaccionController.create(); - this.decomisoArmaTransaccionController.getRecord().setFtransaccion(null); - this.decomisoArmaTransaccionController.getRecord().setFcorte(fechaCorteRegistro); - this.decomisoArmaTransaccionController.getRecord().setCcentrocontrol(codigoUnidadControlDestino);//de la persona que revcibe//centroControl.getPk() codigoUnidadControlDestino - - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TarmCentroControl centroControlLogin= CentroControlArmasController.findPorCodigo(tsafeUserDetail.getCcentrocontrol()); - - if(!"1".equals(CatalogDetailController.findxCodigoCodcatalogo(centroControlLogin.getInstitucion(), centroControlLogin.getInstituciontipo()).getPk().getCatalog())){ - this.decomisoArmaTransaccionController.getRecord().setEstadofirma("Y"); - this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("ENV"); - isCentroDpto = Boolean.FALSE; - }else{ - this.decomisoArmaTransaccionController.getRecord().setEstadofirma("N"); - this.decomisoArmaTransaccionController.getRecord().setEstadoflujo("NOENV"); - isCentroDpto = Boolean.TRUE; - } - - this.decomisoArmaTransaccionController.update(); - DtoSave dtosaveDecomisoTran = this.decomisoArmaTransaccionController.getDtoSave(true); - dtosaveDecomisoTran.setReturnpk(true); - dtosaveDecomisoTran.setPosition(1); - msave.put(decomisoArmaTransaccionController.getBeanalias(), dtosaveDecomisoTran); - - DtoSave dtosaveDecomiso = this.getDtoSave(true); - dtosaveDecomiso.setReturnpk(true); - dtosaveDecomiso.setPosition(2); - msave.put(getBeanalias(), dtosaveDecomiso); - - //transacciones del arma - DtoSave dtosaveArmaBodega = transaccionArmaBodegaController.getDtoSave(true); - dtosaveArmaBodega.setReturnpk(true); - dtosaveArmaBodega.setPosition(3); - msave.put(transaccionArmaBodegaController.getBeanalias(), dtosaveArmaBodega); - //bodega del arma - DtoSave dtosaveBodega = bodegaController.getDtoSave(true); - dtosaveBodega.setReturnpk(true); - dtosaveBodega.setPosition(4); - msave.put(bodegaController.getBeanalias(), dtosaveBodega); - - //para la actualizacion del centro de control destino - DtoSave dtosaveDecomisoCab = decomisoController.getDtoSave(true); - dtosaveDecomisoCab.setPosition(5); - msave.put(decomisoController.getBeanalias(), dtosaveDecomisoCab); - - - request.setSaveTables(msave); - //prefijo - request.put("prefijo", prefijo); - // para el flujo - request.modifiedData().put("isnew", "N");//para que ejecute desde un boton - //completa la informacion en un transaction rule DecomisoArmaRecepcion - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.decomisoArmaTransaccionController.postCommit(resp); - this.postCommit(resp); - TarmDecomisoArmaTransaccion decomisoArmaTransaccion=(TarmDecomisoArmaTransaccion)dtosaveDecomisoTran.getLinsert().get(0); - numerotransaccionpk=decomisoArmaTransaccion.getPk().toString(); - numerotransaccionpkAux=decomisoArmaTransaccion.getPk().toString(); - //numereo de transaccion - numRecepcionGenerado=resp.get("numerotransaccionrecep").toString(); - numRecepcionGeneradoAux=resp.get("numerotransaccionrecep").toString(); - fechaCorteg=decomisoArmaTransaccion.getFcorte(); - //metodo para generar el acta - querydatabase(); - btnSave=Boolean.TRUE; - btnSelTodos = Boolean.TRUE; - cmbTransaccionenvio = Boolean.FALSE; - btnGenerarActa=Boolean.FALSE; -// numerotransaccionEnvio = ""; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Método para el evento change del combo transaccion - */ - public void executeTransaccion() { - List decomisoArmaTransaccionOrigen = DecomisoArmaTransaccionController.findPorEnvio(numerotransaccionEnvio, true); - if(decomisoArmaTransaccionOrigen != null && !decomisoArmaTransaccionOrigen.isEmpty()){ -// codigoUnidadControlDestino = decomisoArmaTransaccionOrigen.get(0).getCcentrocontrol(); - TarmCentroControl centroControlOrigen = CentroControlArmasController.findPorCodigo(decomisoArmaTransaccionOrigen.get(0).getCcentrocontrol()); - centroControlOrigenStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlOrigen.getInstitucion(), centroControlOrigen.getInstituciontipo()).getDescription(); - unidadOrigenStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlOrigen.getNombreinstitucion(), centroControlOrigen.getNombreinstitucioncodigo()).getDescription(); - } - } - - /** - * Completa las caracteristicas del arma de los catalogos correspondientes - */ - public void completarInformacionArma(){ - ListarmasNoenviadas=new ArrayList(); - for(TarmDecomisoArma decomisoArma:lrecord){ - decomisoArma.getModifiedData().put("seleccion",false); - //TarmRegistroArmas registroArma = RegistroArmController.findByCodigo(decomisoArma.getModifiedData().get("cregistro").toString()); - if(decomisoArma.getModifiedData().get("personcode")!=null){ - TcustPersonDetail tcustPersonDetail=PersonDetailController.find(decomisoArma.getModifiedData().get("personcode").toString()); - decomisoArma.getModifiedData().put("nrazons", tcustPersonDetail.getName()); - decomisoArma.getModifiedData().put("documento", tcustPersonDetail.getIdentification()); - } - if(decomisoArma.getModifiedData().get("estadoflujo")!=null && decomisoArma.getModifiedData().get("estadoflujo").equals("NOENV") ){ - armasNoenviadas.add(decomisoArma); - } - } - - for(TarmDecomisoArma decomisoArma:armasNoenviadas){ - lrecord.remove(decomisoArma); - } - } - - /** - * Método para habilitar o desabilitar el btn - * Arma a decomisar - * @throws Exception - */ - public void onChange(TarmDecomisoArma decomisoArma ) throws Exception { - btnSave=Boolean.TRUE; - itemsUnidadBolean=Boolean.FALSE; - for(TarmDecomisoArma t:lrecord){ - if(t.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - btnSave=Boolean.FALSE; - itemsUnidadBolean=Boolean.TRUE; - } - } - } - - /** - * Metodo para filtrar por Unidad de Control - * @param dto Dto sobre el que se va a ejecutar el filtro - * @throws Exception - */ - private DtoQuery filtroVerificarArmas(DtoQuery dto) throws Exception{ - Filter decomisoFiltro= new Filter(); - List listaDecomisoArmaTrans = new ArrayList<>(); - if(numerotransaccionEnvio != null && !"".equals(numerotransaccionEnvio)){ - listaDecomisoArmaTrans = DecomisoArmaTransaccionController.findPorEnvio(numerotransaccionEnvio,true); - }else{ - listaDecomisoArmaTrans = DecomisoArmaTransaccionController.findPorOrganismoUnidad(codigoUnidadControl, fechaCorte, estadoOperacion); - } - - String filtroDecomisoArmaTrans=""; - if(listaDecomisoArmaTrans != null && !listaDecomisoArmaTrans.isEmpty()){ - StringBuffer lstBuffer = new StringBuffer(); - for(TarmDecomisoArmaTransaccion decomisoArmaTrans : listaDecomisoArmaTrans){ - if(!lstBuffer.toString().isEmpty()){ - lstBuffer.append(" or "); - } - lstBuffer.append("t.cdecomisoarmatransaccion = " + decomisoArmaTrans.getPk()); - } - filtroDecomisoArmaTrans = (!lstBuffer.toString().trim().isEmpty())?" and (" + lstBuffer.toString() + ")":""; - }else{ - filtroDecomisoArmaTrans = "and (t.cdecomisoarmatransaccion = 999999)"; - } - decomisoFiltro.setSql("(t.estado='"+codigoDecomiso+"' or t.estado='"+codigoIncautacion+"' or t.estado='"+entregaVoluntaria+"' or t.estado='"+abandono+"' or t.estado='"+codigoReclamo+"') and t.cdecomiso is not null and t.coperaciontransaccion = '" + estadoOperacion + "' and t.enbodega='Y'" + filtroDecomisoArmaTrans); - dto.addFiltro(decomisoFiltro); - return dto; - } - - /** - * Seleccionado todos los registros de la tabla - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - - btnSave=Boolean.TRUE; - for (TarmDecomisoArma decomisoArma : lrecord) { - decomisoArma.getModifiedData().put("seleccion", valorColocar); - if(decomisoArma.getModifiedData().get("seleccion").equals(Boolean.TRUE)){ - btnSave=Boolean.FALSE; - //itemsUnidadBolean=Boolean.TRUE; - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para generar el acta de recepcion - * y cargar el archivo en el alfresco - */ - public void generarActa() { - if (fechaCorteg != null) { - Calendar fechaActualCldr = Calendar.getInstance(); - - String codigoreporte = numerotransaccionpkAux; - String path = "armas/reports/repo2"; - String filename = numRecepcionGenerado; - String gradoUsuario = ""; - TcustPersonDetail usuario = PersonDetailController.find(this.userDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(usuario.getMilitarygrade(), usuario.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+usuario.getName(); - }else{ - gradoUsuario = "Sin Grado - "+usuario.getName(); - } - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda","repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - try { - // Usuario logueado en la aplicacion - String nombreUsuario; - if (userDetail.getPk().getPersoncode() != null) { - nombreUsuario = PersonDetailController.find(userDetail.getPk().getPersoncode().toString()).getName(); - } else { - nombreUsuario = ""; - } - -// TarmCentroControl centroControlDestino = CentroControlArmasController.findPorCodigo(codigoUnidadControlDestino); -// String centroControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getInstitucion(), centroControlDestino.getInstituciontipo()).getDescription(); -// String unidadControlDestinoStr = CatalogDetailController.findxCodigoCodcatalogo( centroControlDestino.getNombreinstitucion(), centroControlDestino.getNombreinstitucioncodigo()).getDescription(); - - parameters.put("user", nombreUsuario); - parameters.put("organismoControlOrigen", centroControlOrigenStr); - parameters.put("unidadControlOrigen", unidadOrigenStr); - parameters.put("organismoControlDestino", organismoControlDestino); - parameters.put("unidadControlDestino", unidadControlDestino); - parameters.put("codigodec", codigoreporte.toString());//este - parameters.put("fechaCorte", new SimpleDateFormat("dd-MM-yyyy").format(fechaCorteg));//este - parameters.put("numtransaccion", numRecepcionGeneradoAux); - parameters.put("personcode", userDetail.getPk().getPersoncode()); - parameters.put("nombregrado", gradoUsuario);//este - // Fecha actual - StringBuilder fechaActualSB = new StringBuilder(); - fechaActualSB = fechaActualSB.append((fechaActualCldr.get(Calendar.DAY_OF_MONTH)) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.DAY_OF_MONTH)): (fechaActualCldr.get(Calendar.DAY_OF_MONTH))); - fechaActualSB = fechaActualSB.append("-").append((fechaActualCldr.get(Calendar.MONTH) + 1) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.MONTH) + 1): (fechaActualCldr.get(Calendar.MONTH) + 1)); - fechaActualSB = fechaActualSB.append("-").append(fechaActualCldr.get(Calendar.YEAR)); - fechaActualSB = fechaActualSB.append(" ").append(fechaActualCldr.get(Calendar.HOUR_OF_DAY)); - fechaActualSB = fechaActualSB.append(":").append((fechaActualCldr.get(Calendar.MINUTE)) <= 9 ? "0"+ (fechaActualCldr.get(Calendar.MINUTE)): (fechaActualCldr.get(Calendar.MINUTE))); - parameters.put("lugarFecha", fechaActualSB.toString()); - - - TgeneCatalogDetail orgControl = CatalogDetailController.findCatalogo("NOMBREINSTITUCION", this.codigoUnidadControl); - if(orgControl != null){ - parameters.put("orgControl", orgControl.getDescription()); - }else { - parameters.put("orgControl", ""); - } - - format = "pdf"; - InputStream file = this.reportController.jaspertoInputstream(path, parameters, format, filename,this.getLoginController()); - xpathflujo = generarXpath(); - if(!alfrescoController.uploadFile(file, numRecepcionGeneradoAux+ ".pdf", xpathflujo)){ - xpathflujo=null; - } - System.out.println(xpathflujo+"/cm:"+numRecepcionGeneradoAux+ ".pdf"); - numerotransaccionEnvio = ""; - //="cm:Decomiso/cm:A-2016/cm:M-01/cm:CENTRO CONTROL/cm:ABANDONO/cm:REC/cm:REC-000000319.pdf" - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - } - - /** - * Metodo para generar la ruta donde se carga el archivo - * @return - */ - public String generarXpath(){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - StringBuilder ruta=new StringBuilder("cm:Decomiso"); - - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - String centrocontrol=unidadControlDestino.replaceAll("\\s+", "_"); - ruta = ruta.append("/cm:").append(centrocontrol); - ruta = ruta.append("/cm:"+"REC"); - - return ruta.toString(); - } - /** - * Validacion de las fechas que no se amayor a la actual - * @param fech - */ - public void validarfecha(Date fech){ - if(fech.getTime()>(new Date()).getTime()){ - fech=new Date(); - fechaCorte=new java.sql.Date(new Date().getTime()); - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_fechadecomisonopuedesermayoralaactual")); - } - } - - /** - * Ejecuta un reporte de armas a destruir - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - if(xpathflujo==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - if(cprovincia==null || cprovincia.length()==0){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - - //instiCentroControlCode - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(instiCentroControlCode); - if(centroControl==null || centroControl.getPk()==null){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_sinprovincia")); - return; - } - TgeneParameters paramDepartamentoControl=ParametersController.find("CODIGO.DEPT.CONTROL", "1");//DPCA - if(centroControl.getNombreinstitucion().equals(paramDepartamentoControl.getTextvalue())){ - cprovincia=paramDepartamentoControl.getTextvalue(); - } - //itemUnidadDestino - - String xpath=xpathflujo+"/cm:"+numRecepcionGeneradoAux+ ".pdf"; - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - //codigo de la tabla TarmDecomisoArmaTransaccion - request.modifiedData().put("numerotransaccion", numerotransaccionpkAux); - request.modifiedData().put("cprovincia", cprovincia); - request.modifiedData().put("numerosolicitud", numRecepcionGeneradoAux); - //ruta del archivo para la firma - //TODO Falta crear la variable en maia 2-8 - request.modifiedData().put("xpath", xpath); - request.modifiedData().put("isnew", "Y"); - request.setLogsolicitude(numRecepcionGeneradoAux); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " TRANSACCION: "+ numerotransaccionpkAux); - xpathflujo=null; - btnGenerarActa=Boolean.TRUE; - btnSelTodos = Boolean.TRUE; - cmbTransaccionenvio = Boolean.FALSE; - btnSave = Boolean.TRUE; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void executeUnidad() { - - for(SelectItem item: itemUnidadDestino){ - if(item.getValue().equals(instiCentroControlCode)){ - institucionCentroControl=item.getLabel(); - } - } - } - - public List getlTipoReporte() { - return lTipoReporte; - } - - public void setlTipoReporte(List lTipoReporte) { - this.lTipoReporte = lTipoReporte; - } - - - public Date getFechaCorte() { - return fechaCorte; - } - - public void setFechaCorte(Date fechaCorte) { - this.fechaCorte = fechaCorte; - } - - public String getFormat() { - return format; - } - - public void setFormat(String format) { - this.format = format; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getTipoReporte() { - return tipoReporte; - } - - public void setTipoReporte(String tipoReporte) { - this.tipoReporte = tipoReporte; - } - - public TsafeUserDetail getUserDetail() { - return userDetail; - } - - public void setUserDetail(TsafeUserDetail userDetail) { - this.userDetail = userDetail; - } - - public TarmCentroControl getCentroControl() { - return centroControl; - } - - public void setCentroControl(TarmCentroControl centroControl) { - this.centroControl = centroControl; - } - - /** - * @return the listaEnviosRealizados - */ - public List getListaEnviosRealizados() { - return listaEnviosRealizados; - } - - /** - * @param listaEnviosRealizados the listaEnviosRealizados to set - */ - public void setListaEnviosRealizados( - List listaEnviosRealizados) { - this.listaEnviosRealizados = listaEnviosRealizados; - } - - public String getCodigoOrganismoControl() { - return codigoOrganismoControl; - } - - public void setCodigoOrganismoControl(String codigoOrganismoControl) { - this.codigoOrganismoControl = codigoOrganismoControl; - } - - public String getCodigoUnidadControl() { - return codigoUnidadControl; - } - - public void setCodigoUnidadControl(String codigoUnidadControl) { - this.codigoUnidadControl = codigoUnidadControl; - } - - - - - public Boolean getBtnSave() { - return btnSave; - } - - public void setBtnSave(Boolean btnSave) { - this.btnSave = btnSave; - } - - public String getNumRecepcionGenerado() { - return numRecepcionGenerado; - } - - public void setNumRecepcionGenerado(String numRecepcionGenerado) { - this.numRecepcionGenerado = numRecepcionGenerado; - } - - public DecomisoArmaTransaccionController getDecomisoArmaTransaccionController() { - return decomisoArmaTransaccionController; - } - - public void setDecomisoArmaTransaccionController( - DecomisoArmaTransaccionController decomisoArmaTransaccionController) { - this.decomisoArmaTransaccionController = decomisoArmaTransaccionController; - } - - public String getNumerotransaccionEnvio() { - return numerotransaccionEnvio; - } - - public void setNumerotransaccionEnvio(String numerotransaccionEnvio) { - this.numerotransaccionEnvio = numerotransaccionEnvio; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public String getNumerotransaccionpk() { - return numerotransaccionpk; - } - - public void setNumerotransaccionpk(String numerotransaccionpk) { - this.numerotransaccionpk = numerotransaccionpk; - } - - public Boolean getBtnGenerarActa() { - return btnGenerarActa; - } - - public void setBtnGenerarActa(Boolean btnGenerarActa) { - this.btnGenerarActa = btnGenerarActa; - } - - public TransaccionArmaBodegaController getTransaccionArmaBodegaController() { - return transaccionArmaBodegaController; - } - - public void setTransaccionArmaBodegaController( - TransaccionArmaBodegaController transaccionArmaBodegaController) { - this.transaccionArmaBodegaController = transaccionArmaBodegaController; - } - - public BodegaController getBodegaController() { - return bodegaController; - } - - public void setBodegaController(BodegaController bodegaController) { - this.bodegaController = bodegaController; - } - - public String getInstiCentroControlCode() { - return instiCentroControlCode; - } - - public void setInstiCentroControlCode(String instiCentroControlCode) { - this.instiCentroControlCode = instiCentroControlCode; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public void setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - } - - public List getItemUnidadDestino() { - return itemUnidadDestino; - } - - public void setItemUnidadDestino(List itemUnidadDestino) { - this.itemUnidadDestino = itemUnidadDestino; - } - - public Boolean getItemsUnidadBolean() { - return itemsUnidadBolean; - } - - public void setItemsUnidadBolean(Boolean itemsUnidadBolean) { - this.itemsUnidadBolean = itemsUnidadBolean; - } - - public DecomisoController getDecomisoController() { - return decomisoController; - } - - public void setDecomisoController(DecomisoController decomisoController) { - this.decomisoController = decomisoController; - } - - /** - * @return the organismoControlDestino - */ - public String getOrganismoControlDestino() { - return organismoControlDestino; - } - - /** - * @param organismoControlDestino the organismoControlDestino to set - */ - public void setOrganismoControlDestino(String organismoControlDestino) { - this.organismoControlDestino = organismoControlDestino; - } - - /** - * @return the unidadControlDestino - */ - public String getUnidadControlDestino() { - return unidadControlDestino; - } - - /** - * @param unidadControlDestino the unidadControlDestino to set - */ - public void setUnidadControlDestino(String unidadControlDestino) { - this.unidadControlDestino = unidadControlDestino; - } - - public String getCodigoUnidadControlDestino() { - return codigoUnidadControlDestino; - } - - public void setCodigoUnidadControlDestino(String codigoUnidadControlDestino) { - this.codigoUnidadControlDestino = codigoUnidadControlDestino; - } - - public String getCentroControlOrigenStr() { - return centroControlOrigenStr; - } - - public void setCentroControlOrigenStr(String centroControlOrigenStr) { - this.centroControlOrigenStr = centroControlOrigenStr; - } - - public String getUnidadOrigenStr() { - return unidadOrigenStr; - } - - public void setUnidadOrigenStr(String unidadOrigenStr) { - this.unidadOrigenStr = unidadOrigenStr; - } - - public Boolean getIsCentroDpto() { - return isCentroDpto; - } - - public void setIsCentroDpto(Boolean isCentroDpto) { - this.isCentroDpto = isCentroDpto; - } - - public boolean isBtnSelTodos() { - return btnSelTodos; - } - - public void setBtnSelTodos(boolean btnSelTodos) { - this.btnSelTodos = btnSelTodos; - } - - public boolean isCmbTransaccionenvio() { - return cmbTransaccionenvio; - } - - public void setCmbTransaccionenvio(boolean cmbTransaccionenvio) { - this.cmbTransaccionenvio = cmbTransaccionenvio; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionInformacionCertificado.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionInformacionCertificado.java.svn-base deleted file mode 100644 index 800963e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionInformacionCertificado.java.svn-base +++ /dev/null @@ -1,379 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; - - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificacionInformacionCertificado extends AbstractController { - - - /* - * Variable que indica si se seleciona el check o no - */ - private Boolean verifica = false; - /* - * Variable que almacena el código de solicitud - */ - private String csolicitud; - /* - * Bean de tipo TarmSolicitud - */ - private TarmSolicitud solicitud = new TarmSolicitud(); - /* - * Bean del tipo ColaImpresionController - */ - private ColaImpresionController colaimpresion = new ColaImpresionController(); - - @ManagedProperty(value = "#{docHabilitanteController}") - private DocumentoHabilitanteController docHabilitanteController; - - @ManagedProperty(value = "#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController recepcionArmasController; - - /** - * Constructor - * @throws Exception - */ - public VerificacionInformacionCertificado() throws Exception { - super(TarmSolicitudDocumento.class); - } - - /** - * Método invocado después de instanciar el controlador - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - this.solicitud= SolicitudController.findSolicitudxcodsolicitud("135"); - this.getMfilters().put("pk.csolicitud", this.solicitud.getPk()); - this.getMfilelds().put("numerosolicitud", this.solicitud.getNumerosolicitud()); - - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se está utilizando una página que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "VERIFICARDOCUMENTOS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery qry = new SubQuery("TarmSolicitud", "ccentrocontrol", "ccentrocontrol", "i.pk = t.pk.csolicitud"); - dto.addSubQuery(qry); - SubQuery qry2 = new SubQuery("TgeneCatalogDetail", "description", "tramitedesc", - "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.tipotramitecodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry2); - SubQuery qry3 = new SubQuery("TgeneCatalogDetail", "description", "categoriadesc", - "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.categoriacodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry3); - SubQuery qry4 = new SubQuery("TgeneCatalogDetail", "description", "usoactdesc", - "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.usoactividadcodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry4); - SubQuery qry5 = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", "i.pk = t.pk.cdocumento and i.csolicitud = t.pk.csolicitud"); - dto.addSubQuery(qry5); - SubQuery qry6 = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", "i.pk = t.pk.cdocumento and i.csolicitud = t.pk.csolicitud"); - dto.addSubQuery(qry6); - SubQuery qry7 = new SubQuery("TgeneCatalogDetail", "description", "estado", - "i.pk.catalog = (select a.estado from TarmDocumentoHabilitante a where a.csolicitud = t.pk.csolicitud and a.pk = t.pk.cdocumento) and " - + "i.pk.catalogcode = (select a.estadocode from TarmDocumentoHabilitante a where a.csolicitud = t.pk.csolicitud and a.pk = t.pk.cdocumento)"); - dto.addSubQuery(qry7); - SubQuery qry8 = new SubQuery("TarmDocumentoHabilitante", "carma", "carma", "i.pk = t.pk.cdocumento and i.csolicitud = t.pk.csolicitud"); - dto.addSubQuery(qry8); - SubQuery qry9 = new SubQuery("TarmDocumentoHabilitante", "codigoarma", "codigoarma", "i.pk = t.pk.cdocumento and i.csolicitud = t.pk.csolicitud"); - dto.addSubQuery(qry9); - SubQuery qry10 = new SubQuery("TgeneCatalogDetail", "description", "tipoautorizacion", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry10); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "VDOCUMENTO"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - this.completaArmas(); - super.postQuery(this.lrecord); - lista(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Verifica la selección del documento según el check de - * reimpresion - */ - public void lista(){ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getChkcertificado()!= null && solicituddoc.getChkcertificado().equals("Y")){ - solicituddoc.getModifiedData().put("verificador", Boolean.TRUE); - }else{ - solicituddoc.getModifiedData().put("verificador", Boolean.FALSE); - } - } - } - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - this.actualizaVerificado(); - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Selecciona los registros para establecer si el registro se reimprime o no. - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmSolicitudDocumento solicituddoc : lrecord) { - solicituddoc.getModifiedData().put("verificador", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Actualiza la selección del documento según el check de - * reimpresion - * @throws Exception - */ - public void actualizaVerificado() throws Exception{ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getModifiedData().get("verificador").equals(Boolean.TRUE)){ - solicituddoc.setChkcertificado("Y"); - }else { - solicituddoc.setChkcertificado("N"); - } - record=solicituddoc; - super.update(); - } - } - - - - - - @SuppressWarnings("unchecked") - protected void querydatabaseDocumentos() { - try { - - DtoQuery dto = super.getDtoQuery(true); - - if(csolicitud !=null ) - { - dto.addFiltro(new Filter("pk.csolicitud", csolicitud)); - } - - //solicitudTramite = TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - solicitud = ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(csolicitud); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if (lrecord != null && !lrecord.isEmpty()) { - record = lrecord.get(0); - - - seleccionarDocumentos(); - } - super.postQuery(lrecord); - - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Método que asigna la selección del documento según el check de - * reimpresion - * - * @throws Exception - */ - @SuppressWarnings("unused") - private void seleccionarDocumentos() throws Exception { - for (int i = 0; i < lrecord.size(); i++) { - TarmSolicitudDocumento docSeleccionada = lrecord.get(i); - - if (docSeleccionada.getVerificado().equalsIgnoreCase("Y")) { - docSeleccionada.modifiedData().put("seleccion", Boolean.TRUE); - } else { - docSeleccionada.modifiedData().put("seleccion", Boolean.FALSE); - } - } - - } - - /** - * Método que completa la información del arma para los registros de la - * tabla TarmSolicitudDocumento - */ - public void completaArmas(){ - for(int i=0;i { - - private TarmCentroControl centroControl; - TarmCentroControlJur jurisdiccionCentroControl; - private String nombreCentroControl; - TcustPersonDetail jefeCentroControl; - String gradoFuncionario=""; - - private String csolicitud; - - private List lArmas=new ArrayList(); - - private Boolean seleccionTodas=false; - - TarmSolicitudTramite solicitudTramite; - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - String numeroTramite; - String nombreRazonSocial; - String tipoDocumento; - private Boolean generaReporte=Boolean.FALSE; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public VerificacionInformacionDevolucionController() throws Exception { - super(TarmSolicitudArmas.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postconstruct() { - startQuery(); - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - csolicitud=super.getMfilters().get("csolicitud");//"cm:Decomiso/cm:A-2014/cm:M-10/cm:ENV-000000319/cm:ENV-000000319.pdf";// - if(csolicitud!=null){ - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("CSOLICITUD", csolicitud); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("TID", tid); - } - if(csolicitud==null){ - csolicitud=FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("CSOLICITUD").toString(); - } - if(tid==null){ - tid=""+FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TID"); - } - super.getMfilters().clear(); - super.getMfilters().put("pk.csolicitud", csolicitud); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "VERIFICACIONINFORMACIONCONTROLLER"; - querydatabase(); - - //Obteniendo el centro de control - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion= new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - this.jurisdiccionCentroControl= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - centroControl= CentroControlArmasController.findPorCodigo(this.jurisdiccionCentroControl.getCcentrocontrol()); - this.nombreCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), - centroControl.getNombreinstitucioncodigo()).getDescription(); - - //Obteniendo el jefe del centro de control - this.jefeCentroControl=PersonDetailController.find(this.centroControl.getPersoncode().toString()); - - //Obteniendo el grado del jefe del centro de control - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.jefeCentroControl.getMilitarygrade(), this.jefeCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @Override - public void query() throws Exception { - // TODO Auto-generated method stub - MessageHelper.setMessageError("msg_notQuery"); - super.query(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - this.lArmas.clear(); - - DtoQuery dto = super.getDtoQuery(true); - - //Quemando el codigo de la solicitud - if(csolicitud!=null){ - Filter filtro=new Filter("pk.csolicitud", csolicitud); - dto.addFiltro(filtro); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("CSOLICITUD", csolicitud); - }else{ - Filter filtro=new Filter("pk.csolicitud", ""+FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("CSOLICITUD")); - dto.addFiltro(filtro); - } - - - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(csolicitud); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - - record=lrecord.get(0); - - //Numero de tramite - if(solicitudTramite!=null){ - this.numeroTramite=solicitudTramite.getNumerotramite(); - this.record.put("ntramite", solicitudTramite.getNumerotramite()); - } - - //Obteniendo la solicitud - TarmSolicitud solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(solicitudTramite.getPk().getCsolicitud()); - if(solicitud!=null){ - detallesPersona= PersonDetailController.find(String.valueOf(solicitud.getPersoncode())); - } - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo las armas - for(TarmSolicitudArmas solicitudArmas:lrecord){ - TarmArmas arma=ArmasController.findPorCodigo(solicitudArmas.getPk().getCarma()); - if(arma!=null){ - lArmas.add(arma); - } - } - actualizarArmas(); - } - super.postQuery(lrecord); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseArmas() { - try { - this.lArmas.clear(); - - DtoQuery dto = super.getDtoQuery(true); - - if(csolicitud !=null ) - { - dto.addFiltro(new Filter("pk.csolicitud", csolicitud)); - } - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - - record=lrecord.get(0); - - //Obteniendo las armas - for(TarmSolicitudArmas solicitudArmas:lrecord){ - TarmArmas arma=ArmasController.findPorCodigo(solicitudArmas.getPk().getCarma()); - if(arma!=null){ - lArmas.add(ArmasController.findPorCodigo(solicitudArmas.getPk().getCarma())); - } - } - actualizarArmas(); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - //Actualizando el estado de las armas - for(TarmArmas armaSeleccionada:lArmas){ - for(TarmSolicitudArmas solicitudArmas:lrecord){ - if(armaSeleccionada.getPk().equals(solicitudArmas.getPk().getCarma())){ - record = solicitudArmas; - if(armaSeleccionada.modifiedData().containsValue(Boolean.TRUE)){ - record.setPordevolucion("Y"); - }else{ - record.setPordevolucion("N"); - } - update(); - } - } - } - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - generateReport(); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - if(!generaReporte){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generereporte")); - return; - } - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - //completa la tarea del flujo - request.modifiedData().put("csolicitud", csolicitud); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - request.modifiedData().put("isnew", "Y"); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - MessageHelper.setMessageInfo("COMPLETA LA TAREA DEL FLUJO"); - generaReporte=Boolean.FALSE; - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("TID"); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().remove("CSOLICITUD"); - org.primefaces.context.RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Salva los datos de la verificaion - */ - public String saveVerification() { - String direccion=""; - try { - - //Actualizando el estado de las armas - for(TarmArmas armaSeleccionada:lArmas){ - for(TarmSolicitudArmas solicitudArmas:lrecord){ - if(armaSeleccionada.getPk().equals(solicitudArmas.getPk().getCarma())){ - record = solicitudArmas; - if(armaSeleccionada.modifiedData().containsValue(Boolean.TRUE)){ - record.setPordevolucion("Y"); - }else{ - record.setPordevolucion("N"); - } - update(); - } - } - } - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - direccion="/pages/armas/registrarNovedad?faces-redirect=true?csolicitud="+csolicitud; - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return direccion; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Genera el reporte de la verificacion de las armas - * @param name Nombre del reporte a generar. - */ - public void generateReport() { - String path = "armas/reports/actaDevolucion2"; - String filename=MsgControlArmas.getProperty("lbl_actaDeDevolucion"); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - parameters.put("numeroTramite", this.numeroTramite); - - //Nombre del centro de control - parameters.put("nombreCentro", this.nombreCentroControl); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - //Nombre y cedula - parameters.put("nombreRazon", detallesPersona.getName()); - parameters.put("cedula", detallesPersona.getIdentification()); - - //Codigo persona - parameters.put("personcode", usuario.getPk().getPersoncode()); - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.jefeCentroControl.getName()); - parameters.put("personcode",this.jefeCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.nombreCentroControl); - - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - String format = "pdf"; - - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - // - generaReporte=Boolean.TRUE; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodod que asigna la seleccion del arma segun el estado de la solicitud arma - * @throws Exception - */ - @SuppressWarnings("unused") - private void actualizarArmas() throws Exception{ - for(TarmSolicitudArmas solicitudArmas:lrecord){ - for (int i = 0; i < lArmas.size(); i++) { - TarmArmas armaSeleccionada=lArmas.get(i); - if(armaSeleccionada.getPk().equals(solicitudArmas.getPk().getCarma())){ - if(solicitudArmas.getPordevolucion()!=null && !solicitudArmas.getPordevolucion().isEmpty() - && solicitudArmas.getPordevolucion().equalsIgnoreCase("Y")){ - armaSeleccionada.modifiedData().put("seleccion", Boolean.TRUE); - }else{ - armaSeleccionada.modifiedData().put("seleccion", Boolean.FALSE); - } - } - } - } - } - - /** - * Metodo que selecciona todas las armas - */ - public void seleccionarTodasArmas(){ - for(TarmArmas arma:lArmas){ - arma.put("seleccion", Boolean.TRUE); - } - } - - /** - * Obtiene los detalles de las armas segun el catalogo - * @param catalogo - * @param catalogoCode - * @return - */ - public String aspectoArmaCatalogo(String catalogo, String catalogoCode){ - if(catalogo!=null && catalogoCode!=null && !catalogo.isEmpty() && !catalogoCode.isEmpty()){ - return CatalogDetailController.findxCodigoCodcatalogo(catalogo, catalogoCode).getDescription(); - } - return null; - } - - /** - * Devuelve una descripcion de catalogo segun un tipo de aspecto - * @param arma - * @param tipoAspecto - * @return - */ - public String aspectoArmaExplosivoCatalogo(TarmArmas arma,String tipoAspecto){ - String aspecto=""; - - try { - TarmTipoArmaExplosivo explosivo=TiposArmasExplosivosController.findarma(arma.getCtipoarmaexplosivo()); - if(explosivo!=null){ - if(tipoAspecto.equalsIgnoreCase("clase") && explosivo.getClase()!=null && !explosivo.getClase().isEmpty() - && explosivo.getClasecodigo()!=null && !explosivo.getClasecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getClase(), explosivo.getClasecodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("tipo") && explosivo.getTipoarmaexplosivo()!=null && !explosivo.getTipoarmaexplosivo().isEmpty() - && explosivo.getTipoarmaexplosivocodigo()!=null && !explosivo.getTipoarmaexplosivocodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getTipoarmaexplosivo(), explosivo.getTipoarmaexplosivocodigo()).getDescription(); - - }else if(tipoAspecto.equalsIgnoreCase("calibre") && explosivo.getCalibre()!=null && !explosivo.getCalibre().isEmpty() - && explosivo.getCalibrecodigo()!=null && !explosivo.getCalibrecodigo().isEmpty()){ - aspecto=CatalogDetailController.findxCodigoCodcatalogo(explosivo.getCalibre(), explosivo.getCalibrecodigo()).getDescription(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - return aspecto; - } - - public String aspectoExplosivoArma(TarmSolicitudArmas solicitudArma,String aspecto){ - String descripcionAspecto=""; - try { - TarmArmas arma=ArmasController.findPorCodigo(solicitudArma.getPk().getCarma()); - - if(arma!=null){ - return this.aspectoArmaExplosivoCatalogo(arma,aspecto); - } - - } catch (Exception e) { - MessageHelper.setMessageWarn(e.getMessage()); - } - - return descripcionAspecto; - } - - /** - * Incrementa el numero del arma - * @param arma - * @return - */ - public int incrementarRowkey(TarmArmas arma){ - int n=0; - - for (int i = 0; i < lArmas.size(); i++) { - if(arma.getPk()==lArmas.get(i).getPk()){ - n=i+1; - break; - } - } - - return n; - } - - /** - * M\u00e9todo para encontrar por solicitud - * @param solicitudCode - * @return - */ - public static List findSolicitudArmas(String solicitudCode) { - try { - VerificacionInformacionDevolucionController cc = new VerificacionInformacionDevolucionController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.csolicitud", solicitudCode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - public List getlArmas() { - return lArmas; - } - - public void setlArmas(List lArmas) { - this.lArmas = lArmas; - } - - public Boolean getSeleccionTodas() { - int verificadas=0; - for (TarmArmas arma : lArmas) { - if(Boolean.parseBoolean(arma.modifiedData.get("seleccion").toString())==Boolean.TRUE){ - verificadas++; - } - } - if(verificadas==lArmas.size()){ - seleccionTodas=true; - }else{ - seleccionTodas=false; - } - - return seleccionTodas; - } - - public void setSeleccionTodas(Boolean seleccionTodas) { - this.seleccionTodas = seleccionTodas; - - if(this.seleccionTodas){ - for(TarmArmas arma:lArmas){ - arma.put("seleccion", Boolean.TRUE); - } - }else{ - for(TarmArmas arma:lArmas){ - arma.put("seleccion", Boolean.FALSE); - } - } - - } - - - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public Boolean getGeneraReporte() { - return generaReporte; - } - - public void setGeneraReporte(Boolean generaReporte) { - this.generaReporte = generaReporte; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionReimpresion.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionReimpresion.java.svn-base deleted file mode 100644 index fbcb8e5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionReimpresion.java.svn-base +++ /dev/null @@ -1,559 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.inte.TarmColadeImpresion; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmArmas; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudDocumento; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificacionReimpresion extends AbstractController { - - - /* - * Variable que indica si se seleciona el check o no - */ - private Boolean verifica = false; - - - /** - * Variable que indica si se ha seleccionado un registro - */ - private boolean esCola = false; - - - /** - * Hailita el boton del flujo - */ - private boolean btnFlujo = false; - /* - * Variable que almacena el código de solicitud - */ - private String csolicitud; - /* - * Bean de tipo TarmSolicitud - */ - private TarmSolicitud solicitud = new TarmSolicitud(); - - @ManagedProperty(value = "#{docHabilitanteController}") - private DocumentoHabilitanteController docHabilitanteController; - - @ManagedProperty(value = "#{solicitudController}") - private SolicitudController solicitudController; - - @ManagedProperty(value = "#{recepcionArmasController}") - private RecepcionArmasController recepcionArmasController; - - - @ManagedProperty(value = "#{colaImpresionController}") - private ColaImpresionController colaImpresionController; - - /** - * Constructor - * @throws Exception - */ - public VerificacionReimpresion() throws Exception { - super(TarmSolicitudDocumento.class); - } - - /** - * Método invocado después de instanciar el controlador - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception { - // Inicializa autoconsulta - this.pasteBpmScreenParameters(); - super.startQuery(); - - if(super.getMfilters().get("csolicitud")==null || super.getMfilters().get("csolicitud").isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_noexistesolicitud")); - return; - } - - csolicitud=super.getMfilters().get("csolicitud"); - this.getMfilters().clear(); - //this.getMfilters().put("pk.csolicitud", csolicitud); - this.solicitud= SolicitudController.findSolicitudxcodsolicitud(csolicitud); - this.getMfilelds().put("numerosolicitud", this.solicitud.getNumerosolicitud()); - - this.init(); - } - - /** - * Incializa variables del controlador, cuando se está utilizando una página que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "VERIFICARDOCUMENTOS"; - querydatabase(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - Filter filtroSinImpresionSolicitud=new Filter(); - filtroSinImpresionSolicitud.setSql("(t.chkimpresion='N' or t.chkimpresion is null) and t.pk.csolicitud = '" + this.solicitud.getPk() + "'"); - dto.addFiltro(filtroSinImpresionSolicitud); - - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery qry = new SubQuery("TarmSolicitud", "ccentrocontrol", "ccentrocontrol", "i.pk = t.pk.csolicitud"); - dto.addSubQuery(qry); - SubQuery qry2 = new SubQuery("TgeneCatalogDetail", "description", "tramitedesc", - "i.pk.catalog = (select a.tipotramite from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento))) "// t.pk.csolicitud - + " and " - + "i.pk.catalogcode = (select a.tipotramitecodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry2); - SubQuery qry3 = new SubQuery("TgeneCatalogDetail", "description", "categoriadesc", - "i.pk.catalog = (select a.categoria from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))" - + " and " - + "i.pk.catalogcode = (select a.categoriacodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry3); - SubQuery qry4 = new SubQuery("TgeneCatalogDetail", "description", "usoactdesc", - "i.pk.catalog = (select a.usoactividad from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))" - + " and " - + "i.pk.catalogcode = (select a.usoactividadcodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = (select o.csolicitud from TarmDocumentoHabilitante o where o.pk=t.pk.cdocumento)))"); - dto.addSubQuery(qry4); - - - //ubicacion - SubQuery qryUbicacion = new SubQuery("TgeneProvince", "description", "ubicaciondesc", - "i.pk.countrycode = 'EC'" - + " and " - + "i.pk.provincecode = (select a.provincecode from TcustPersonAddress a where a.pk.personcode =(select o.personcode from TarmDocumentoHabilitante o where o.pk= t.pk.cdocumento )" - + " and a.principal='Y'" - + " and a.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD') )");// - dto.addSubQuery(qryUbicacion); - //TarmSolicitudDocumento - - SubQuery qry5 = new SubQuery("TarmDocumentoHabilitante", "fechaemision", "fechaemision", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry5); - SubQuery qry6 = new SubQuery("TarmDocumentoHabilitante", "fechaexpiracion", "fechaexpiracion", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry6); - SubQuery qry61 = new SubQuery("TarmDocumentoHabilitante", "estado ", "estado1", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry61); - SubQuery qry611 = new SubQuery("TarmDocumentoHabilitante", "estadocode ", "estado11", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry611); - SubQuery qry7 = new SubQuery("TgeneCatalogDetail", "description", "estado", - "i.pk.catalog = (select a.estado from TarmDocumentoHabilitante a where a.pk= t.pk.cdocumento) and " - + "i.pk.catalogcode = (select a.estadocode from TarmDocumentoHabilitante a where a.pk= t.pk.cdocumento)"); - dto.addSubQuery(qry7); - SubQuery qry8 = new SubQuery("TarmDocumentoHabilitante", "carma", "carma", "i.pk = t.pk.cdocumento and i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry8); - SubQuery qry9 = new SubQuery("TarmDocumentoHabilitante", "codigoarma", "codigoarma", "i.pk= t.pk.cdocumento"); - dto.addSubQuery(qry9); - SubQuery qry10 = new SubQuery("TgeneCatalogDetail", "description", "tipoautorizacion", - "i.pk.catalog = (select a.tipoautorizacion from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud)) and " - + "i.pk.catalogcode = (select a.tipoautorizacioncodigo from TarmTramite a where a.pk = (select s.ctramite from TarmSolicitud s where s.pk = t.pk.csolicitud))"); - dto.addSubQuery(qry10); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "VDOCUMENTO"); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - this.completaArmas(); - super.postQuery(this.lrecord); - lista(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Verifica la selección del documento según el check de - * reimpresion - */ - public void lista(){ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getChkimpresion()!= null && solicituddoc.getChkimpresion().equals("Y")){ - solicituddoc.getModifiedData().put("verificador", Boolean.TRUE); - }else{ - solicituddoc.getModifiedData().put("verificador", Boolean.FALSE); - } - } - } - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - if(!validaSeleccion()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_reimpresion")); - return; - } - - this.actualizaVerificado(); - - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setPosition(2); - -// if(!dtosave.pendingProcess()){ -// return; -// } - //En caso de que los documentos sean de tipo de cola de impresion - enviaColaImpresion(); - - DtoSave dtosacola = colaImpresionController.getDtoSave(); - dtosacola.setReturnpk(true); - dtosacola.setPosition(1); - - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - msave.put(colaImpresionController.getBeanalias(), dtosacola); - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - btnFlujo=Boolean.TRUE; - this.postCommit(resp); - this.colaImpresionController.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Selecciona los registros para establecer si el registro se reimprime o no. - */ - public void seleccionarTodos(AjaxBehaviorEvent event) { - try { - Boolean valorColocar = Boolean.FALSE; - if(Boolean.valueOf(event.getComponent().getAttributes().get("value") != null ? event.getComponent().getAttributes().get("value").toString() : "false")){ - valorColocar = Boolean.TRUE; - } - for (TarmSolicitudDocumento solicituddoc : lrecord) { - solicituddoc.getModifiedData().put("verificador", valorColocar); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Actualiza la selección del documento según el check de - * reimpresion - * @throws Exception - */ - public void actualizaVerificado() throws Exception{ - for (TarmSolicitudDocumento solicituddoc : lrecord) { - if(solicituddoc.getModifiedData().get("verificador").equals(Boolean.TRUE)){ - solicituddoc.setChkimpresion("Y"); - }else { - solicituddoc.setChkimpresion("N"); - } - record=solicituddoc; - super.update(); - } - } - - - - /** - * - */ - @SuppressWarnings("unchecked") - protected void querydatabaseDocumentos() { - try { - - DtoQuery dto = super.getDtoQuery(true); - - if(csolicitud !=null ) - { - dto.addFiltro(new Filter("pk.csolicitud", csolicitud)); - } - - //solicitudTramite = TarmSolicitudTramiteController.findPorCSolicitud(codigoSolicitud); - solicitud = ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(csolicitud); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if (lrecord != null && !lrecord.isEmpty()) { - record = lrecord.get(0); - - - seleccionarDocumentos(); - } - super.postQuery(lrecord); - - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - /** - * Método que asigna la selección del documento según el check de - * reimpresion - * - * @throws Exception - */ - @SuppressWarnings("unused") - private void seleccionarDocumentos() throws Exception { - for (int i = 0; i < lrecord.size(); i++) { - TarmSolicitudDocumento docSeleccionada = lrecord.get(i); - if (docSeleccionada.getVerificado().equalsIgnoreCase("Y")) { - docSeleccionada.modifiedData().put("seleccion", Boolean.TRUE); - } else { - docSeleccionada.modifiedData().put("seleccion", Boolean.FALSE); - } - } - - } - - /** - * Método que completa la información del arma para los registros de la - * tabla TarmSolicitudDocumento - */ - public void completaArmas(){ - for(int i=0;idocumentosEnColaList = ColaImpresionController.findByDocumentoEstado(habilitante.getPk().toString(),"PIMPR"); - if(documentosEnColaList==null || documentosEnColaList.size()==0){ - esCola=true; - TarmColadeImpresion colaimpr = new TarmColadeImpresion(); - colaimpr.setCdocumento(habilitante.getPk()); - colaimpr.setEstadoimpresion("PIMPR"); - colaimpr.setEstadoimpresioncode("ESTADOIMPRESION"); - colaimpr.setFecharegistro(habilitante.getFechaemision()); - colaimpr.setIsnew(Boolean.TRUE); - colaImpresionController.update(colaimpr); - } - } - } - - } - } - - public Boolean getVerifica() { - return verifica; - } - - public void setVerifica(Boolean verifica) { - this.verifica = verifica; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public RecepcionArmasController getRecepcionArmasController() { - return recepcionArmasController; - } - - public void setRecepcionArmasController( - RecepcionArmasController recepcionArmasController) { - this.recepcionArmasController = recepcionArmasController; - } - - public DocumentoHabilitanteController getDocHabilitanteController() { - return docHabilitanteController; - } - - public void setDocHabilitanteController( - DocumentoHabilitanteController docHabilitanteController) { - this.docHabilitanteController = docHabilitanteController; - } - - public ColaImpresionController getColaImpresionController() { - return colaImpresionController; - } - - public void setColaImpresionController( - ColaImpresionController colaImpresionController) { - this.colaImpresionController = colaImpresionController; - } - - public boolean isBtnFlujo() { - return btnFlujo; - } - - public void setBtnFlujo(boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - public boolean isEsCola() { - return esCola; - } - - public void setEsCola(boolean esCola) { - this.esCola = esCola; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionRequisitosSolicitudController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionRequisitosSolicitudController.java.svn-base deleted file mode 100644 index b16c3eb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificacionRequisitosSolicitudController.java.svn-base +++ /dev/null @@ -1,1119 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.math.BigDecimal; -import java.sql.Date; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.funcionalidad.CargaController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.date.TgeneNotAccountingDayController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.parmas.fun.TarmCarga; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmAgenciaArma; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudAgenciaSucursal; -import com.fp.persistence.parmas.soli.TarmSolicitudArmas; -import com.fp.persistence.parmas.soli.TarmSolicitudRequisitos; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.parmas.soli.TarmSolicitudTramiteKey; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora para la verificacion de los requisitos del tramite. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificacionRequisitosSolicitudController extends AbstractController { - - /** - * codigo del flujo - */ - private String codigoSolicitud; - private BigDecimal costoTramite = new BigDecimal("0"); - private BigDecimal numeroArmas = new BigDecimal("0"); - private BigDecimal numeroDocuementos = new BigDecimal("0"); - private BigDecimal cantidad = new BigDecimal("0"); - private String numeroTramite; - private String tipoautorizacion; - private String usoactividad; - private Boolean btnGuardar= Boolean.FALSE; - private Boolean requiereCustodiosBln; - private Boolean requiereNoSolAucpBln; - - private List armas; - /** - * Fecha de atencion del proximo tramite - */ - private java.util.Date fechaAtencionTramite; - /** - * Bandera de tipo booleano para indicar si se habilita el boton de completar tarea - */ - private Boolean isEnableCompletarTarea= Boolean.FALSE; - - /** - * Codigo de la tabla TGENECATALOGDETAIL para indicar que el tipo de costo es Total - */ - private final String TIPOCOSTOTOTAL = "2"; - /** - * Codigo de la tabla TGENECATALOGDETAIL para indicar que el registro a buscarse eN CATALOG es COSTOCUSTODIO - */ - private final String CODIGOCOSTOCUSTODIO = "COSTOCUSTODIO"; - - /** - * Variable del tipo TarmSolicitudnal - */ - private TarmSolicitud recordsolicitud; - /** - * Variable del tipo TarmSolicitudnal - */ - TarmSolicitudTramite recordSolicitudTra; - - /** - * Variable del tipo TgeneCatalogDetail(catalogo del tipo de documento) - */ - private TgeneCatalogDetail nombreDocumento; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del tramite) - */ - private TgeneCatalogDetail nombreTramite; - /** - * Variable del tipo TgeneCatalogDetail(catalogo de la categoria) - */ - private TgeneCatalogDetail nombreCategoria; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del uso actividad del tramite) - */ - private TgeneCatalogDetail nombreUsoActividad; - /** - * lista del catalogo de las acciones (Aceptar o rechazar) - */ - private List laccion; - /** - * atributo para el estado de la solicitud aprobado o anulado - */ - private String estado; - /** - * observacion de la solicitud - */ - private String observacion; - /** - * controlador de los requisitos de la solicitud - */ - @ManagedProperty(value = "#{solicitudRequisitosController}") - private SolicitudRequisitosController requisitos; - /** - * controlador si aprueban la solicitud se genera el numero de tramite - */ - @ManagedProperty(value = "#{solicitudTramiteController}") - private SolicitudTramiteController solicitudTramiteController; - /** - * controlador de la solicitud - */ - @ManagedProperty(value = "#{solicitudArmasController}") - private SolicitudArmasController solicitud; - /** - * controlador para el manejo de los archivos del alfresco - */ - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - /** - * Controlador del tramite - */ - @ManagedProperty(value = "#{ingresoDatosTipoTramite}") - private IngresoDatosTipoTramite tramite; - - /** - * Propiedad usada para el manejo del centro de control de armas - */ - @ManagedProperty(value = "#{centroControlArmasController}") - private CentroControlArmasController centroControlArmasController; - - /** - * Controlador de Documento Habilitante - */ - @ManagedProperty(value = "#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - /** - * Controlador que maneja las armas asociadas a las agencias - */ - @ManagedProperty(value="#{agenciaArmaController}") - private AgenciaArmaController agenciaArma; - - /** - *Referencia al Centro de control; - */ - private TarmCentroControl centroControl = new TarmCentroControl(); - - /** - *Nombre de la Institucion - */ - private String nombreInstitucion; - - public VerificacionRequisitosSolicitudController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Controlador que maneja cargas para previa importacion - */ - @ManagedProperty(value = "#{cargaController}") - private CargaController cargaController; - - @PostConstruct - private void postconstruct() { - - try { - super.startQuery(); - fechaAtencionTramite = new Date(new java.util.Date().getTime()); - codigoSolicitud = this.getMfilters().get("codigoSolicitud"); - int numArmasInt = TarmSolicitudArmasController.getNumeroArmasPorSolicitud(codigoSolicitud); - numeroArmas = new BigDecimal(numArmasInt); - habilitarIngresoCustodios(); - this.getMfilters().clear(); - this.getRequisitos().getMfilters().clear(); - this.getSolicitud().getMfilters().clear(); - this.getSolicitudTramiteController().getMfilters().clear(); - this.getTramite().getMfilters().clear(); - this.init(); - cargaDatos(); - mostrarNoSolAucp(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que se encarga de determinar si se requiere o no ingresar numero de custodios - */ - private void habilitarIngresoCustodios(){ - TgeneParameters minArmasReqCustodiaObj = ParametersController.find("NUMERO.ARMAS.FLUJO", "1"); - if(numeroArmas.compareTo(minArmasReqCustodiaObj.getNumbervalue())<=0){ - requiereCustodiosBln = Boolean.FALSE; - }else{ - requiereCustodiosBln = Boolean.TRUE; - } - } - - /** - * Metodo que se encarga de mostrar el numero de solicitud aucp o no si la categoria es igual previa importacion - */ - private void mostrarNoSolAucp(){ - // CATEGORIA 14 PREVIA IMPORTACION - TarmTramite tarmTramite = TarmTramiteController.find(this.recordsolicitud.getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - requiereNoSolAucpBln=Boolean.TRUE; - }else{ - requiereNoSolAucpBln=Boolean.FALSE; - } - - } - - /** - * Metodo para obtener los datos iniciales - * @throws Exception - */ - public void cargaDatos() throws Exception{ - //solicitud(Persona tramite) - recordsolicitud=SolicitudArmasController.find(codigoSolicitud); - this.armas= TarmSolicitudArmasController.findPorCSolicitud(this.codigoSolicitud); - //Comprobando que tenga tramites anteriores caducados - //Obteniendo la solicitud - TarmSolicitud solicitud=SolicitudController.findSolicitudxcodsolicitud(this.codigoSolicitud); - -// if(solicitud!=null){ - - //Obteniendo el tramite de la solicitud -// TarmTramite tramite=TarmTramiteController.find(solicitud.getCtramite().toString()); - - //Validando que el tipo de tramite sea de Renovacion -// if(tramite.getTipotramite().equalsIgnoreCase("3")){ - //Obteniendo los documentos habilitantes -// List documentosPersona=DocumentoHabilitanteController.findPorPersoncode(solicitud.getPersoncode().toString()); -// List documentosTramite=new ArrayList(); -// List tramites=new ArrayList(); - -// for (TarmDocumentoHabilitante d : documentosPersona) { -// //Obteniendo el tramite del documento -// TarmTramite t=TarmTramiteController.find(d.getCtramite().toString()); -// if(t!=null && t.getTipoautorizacion().equalsIgnoreCase(tramite.getTipoautorizacion()) -// && t.getCategoria().equalsIgnoreCase(tramite.getCategoria()) -// && t.getUsoactividad().equalsIgnoreCase(tramite.getUsoactividad())){ -// tramites.add(t); -// documentosTramite.add(d); -// } -// } - - //Obteniendo el documento de mayor fecha(ultimo documento) -// TarmDocumentoHabilitante ultimoDocumento=documentosTramite.get(0); -// TarmTramite ultimoTramite=tramites.get(0); -// -// for (int i = 1; i < documentosTramite.size(); i++) { -// if(documentosTramite.get(i).getFechaemision().after(ultimoDocumento.getFechaemision())){ -// ultimoDocumento=documentosTramite.get(i); -// ultimoTramite=tramites.get(i); -// } -// } - - //Verificando que el documento este caducado -// Date fechaActual=new Date(Calendar.getInstance().getTimeInMillis()); -// if(ultimoDocumento.getFechaexpiracion().before(fechaActual)){ -// //Calculando el valor de la multa -// Long MILISEGUNDOS_POR_DIA = 24 * 60 * 60 * 1000L; //Milisegundos al dia -// java.util.Date fechaActual2=Calendar.getInstance().getTime(); -// -// Calendar calendar=Calendar.getInstance(); -// calendar.setTime(ultimoDocumento.getFechaexpiracion()); -// java.sql.Date fechaAnterior = new java.sql.Date(calendar.getTimeInMillis()); -// -// Long diferenciaDias = ( fechaActual2.getTime() - fechaAnterior.getTime() )/MILISEGUNDOS_POR_DIA; -// Double valorMulta=0.0; -// Double multaConfig=0.0; -// if(tramite.getMulta()!=null){ -// multaConfig=Double.parseDouble(tramite.getMulta().toString()); -// } -// -// //Autorizacion -// if(ultimoTramite.getTipoautorizacion().equalsIgnoreCase("1")){ -// if(diferenciaDias>30){ -// valorMulta=multaConfig*((diferenciaDias-30)/365); -// } -// -// //Permiso -// }else if(ultimoTramite.getTipoautorizacion().equalsIgnoreCase("6")){ -// //Obteniendo las armas -// this.armas= TarmSolicitudArmasController.findPorCSolicitud(this.codigoSolicitud); -// int totalArmas=this.armas.size(); -// valorMulta=(multaConfig/12)*(diferenciaDias/30)*totalArmas; -// } -// -// this.recordsolicitud.setMulta(new BigDecimal(valorMulta.toString())); -// this.recordsolicitud.setMulta(BigDecimal.ZERO); -// } -// } -// } - - //nombre documento - nombreDocumento= CatalogDetailController.findxCodigoCodcatalogo - (recordsolicitud.getModifiedData().get("identificationcatalog").toString(), recordsolicitud.getModifiedData().get("identificationcatalogcode").toString()); - if(nombreDocumento!=null){ - //Tramite - nombreTramite= CatalogDetailController.findxCodigoCodcatalogo - (recordsolicitud.getModifiedData().get("tipoautorizacion").toString(), recordsolicitud.getModifiedData().get("tipoautorizacioncodigo").toString()); - nombreCategoria= CatalogDetailController.findxCodigoCodcatalogo - (recordsolicitud.getModifiedData().get("categoria").toString(), recordsolicitud.getModifiedData().get("categoriacodigo").toString()); - nombreUsoActividad= CatalogDetailController.findxCodigoCodcatalogo - (recordsolicitud.getModifiedData().get("usoactividad").toString(), recordsolicitud.getModifiedData().get("usoactividadcodigo").toString()); - //lista de requisitos - requisitos.getMfilters().put("pk.csolicitud", codigoSolicitud); - requisitos.query(); - //variable para validar el boton - requisitos.setAuxBotonVerificacion(Boolean.TRUE); - for(TarmSolicitudRequisitos item:requisitos.getLrecord()){ - if(item.getEstadovalidacion()!=null && item.getEstadovalidacion().equals("Y")){ - item.modifiedData().put("estado", Boolean.TRUE); - }else{ - //item.modifiedData().put("estado", Boolean.FALSE); - requisitos.setAuxBotonVerificacion(Boolean.FALSE); - } - } - this.obtenerCentroControl(solicitud); - //valida lo del combo del flujo - validacioComboFlujo(); - }else{ - MessageHelper.setMessageError("NO EXISTE SOLICITUD PENDIENTE"); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - @SuppressWarnings("unused") - private void init() { - TgeneParameters parametersAutorizacion= ParametersController.find("CODIGO.GUIA.LIBRETRANSITO", "1"); //4 - TgeneParameters parametersUsoActividad= ParametersController.find("CODIGO.FUEGOS.PIROTECNICOS", "1");//17 - tipoautorizacion=parametersAutorizacion.getTextvalue(); - usoactividad=parametersUsoActividad.getTextvalue(); - } - - /** - * Metodo para cargar actualizar la solicitud - * validando que el numero de custodio sea mayor a cero y cumpla con la condicion - * @throws Exception - */ - public void cargarSolicitud() throws Exception{ - recordsolicitud.setFverificarequisitos(new Date(new java.util.Date().getTime())); - if(codigoAceptado().equals(estado)){ - //validacion drf Tramite es Guia de Libre Transito y el Uso/Actividad es diferente a Fuegos Pirotecnicos, el campo No. Custodios sea mayor que cero. - if(recordsolicitud.getModifiedData().get("tipoautorizacion").toString().equals(tipoautorizacion) && - !recordsolicitud.getModifiedData().get("usoactividad").toString().equals(usoactividad)){ - if(recordsolicitud.getNumerocustodios()<0){ - MessageHelper.setMessageError("EL N\u00DAMERO DE CUSTODIOS DEBE SER POSITIVO"); - return; - } - } - recordsolicitud.setObservacion(observacion); - recordsolicitud.setEstado(estado); - recordsolicitud.setEstadocodigo("ESTADOSOLICITUD"); - solicitud.update(recordsolicitud); - }else{ - recordsolicitud.setObservacion(observacion); - recordsolicitud.setEstadocodigo("ESTADOSOLICITUD"); - recordsolicitud.setEstado(estado);//ACCION - solicitud.update(recordsolicitud); - } - - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @param solicitud - * @throws Exception - * - */ - private void obtenerCentroControl(TarmSolicitud solicitud) throws Exception { - - this.centroControl= CentroControlArmasController.findPorCodigo(solicitud.getCcentrocontrol()); - this.setNombreInstitucion(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - } - - /** - * Metodo para cargar el registro de la solicitud tramite en la lista new - * @throws Exception - */ - public void cargaDatosSolicitudTramite() throws Exception{ - recordSolicitudTra = new TarmSolicitudTramite(); - TarmSolicitudTramiteKey pk=new TarmSolicitudTramiteKey(); - // Setear el valor a pagar en la tabla tramite - TarmTramite tramiteActual = IngresoDatosTipoTramite.find(recordsolicitud.getCtramite().toString()); - List ldocumentos = this.documentoHabilitanteController.findXSolicitudNueva(codigoSolicitud); - // Valor a pagar por concepto de custudios - BigDecimal valorAPagarArmas = new BigDecimal("0"); - /*if(tramiteActual.getTipocosto().equals("2")){ - valorAPagarArmas = tramiteActual.getCosto(); - } - else{ -// numeroArmas = new BigDecimal(TarmSolicitudArmasController.getNumeroArmasPorSolicitud(codigoSolicitud)); - BigDecimal costoPorArma = tramiteActual.getCosto(); - valorAPagarArmas = costoPorArma.multiply(numeroArmas); - } */ - if(tramiteActual.getTipocosto().equals("2")){ - valorAPagarArmas = tramiteActual.getCosto(); - } - else if (numeroArmas!=null && numeroArmas.compareTo(new BigDecimal(0))>0) { - numeroArmas = new BigDecimal(TarmSolicitudArmasController.getNumeroArmasPorSolicitud(codigoSolicitud)); - this.cantidad = this.numeroArmas; - BigDecimal costoPorArma = tramiteActual.getCosto(); - valorAPagarArmas = costoPorArma.multiply(numeroArmas); - }else { - numeroDocuementos = new BigDecimal(ldocumentos.size()); - this.cantidad = this.numeroDocuementos; - BigDecimal costoPorArma = tramiteActual.getCosto(); - valorAPagarArmas = costoPorArma.multiply(numeroDocuementos); - } - recordSolicitudTra.setValortramitearmas(valorAPagarArmas); - // Valor a pagar por concepto de custudios - BigDecimal numeroCustodios = new BigDecimal("0"); - if(recordsolicitud.getNumerocustodios()!=null){ - numeroCustodios = new BigDecimal(recordsolicitud.getNumerocustodios()); - } - BigDecimal costoCustodio = new BigDecimal("0"); - if(tramiteActual.getCostocustodio()!=null){ - costoCustodio = tramiteActual.getCostocustodio(); - } - BigDecimal valorAPagarCustodio = costoCustodio.multiply(numeroCustodios); - recordSolicitudTra.setValorcustodios(valorAPagarCustodio); - // Valor a pagar por concepto de multas - BigDecimal multa=new BigDecimal("0"); - if(recordsolicitud.getMulta()!=null){ - multa = recordsolicitud.getMulta(); - } - recordSolicitudTra.setValormulta(multa); - // Sumamos el valor de a pagar de las armas, custodios y multa - costoTramite = valorAPagarArmas.add(valorAPagarCustodio).add(multa); - - recordSolicitudTra.setValorapagar(costoTramite); - pk.setCsolicitud(codigoSolicitud); - pk.setCtramite(Long.valueOf(recordsolicitud.getModifiedData().get("pk").toString())); - recordSolicitudTra.setPk(pk); - numeroTramite=recordsolicitud.getNumerosolicitud().replace("SOL", "TRA"); - recordSolicitudTra.setNumerotramite(numeroTramite); - recordSolicitudTra.setEstadotramite(codigo("CODIGO.REG.ESTADOSOLICITUD"));//CODIGO.REG.ESTADOSOLICITUD REG - recordSolicitudTra.setEstadotramitecodigo("ESTADOSOLICITUD"); - solicitudTramiteController.update(recordSolicitudTra); - } - - /** - * Metodo para generar el numero de tramite - */ - public void generaNumeroTramite(){ - if(recordsolicitud.getModifiedData().get("tipoautorizacion").toString().equals(tipoautorizacion) && - !recordsolicitud.getModifiedData().get("usoactividad").toString().equals(usoactividad)){ - if(recordsolicitud.getNumerocustodios()==null || recordsolicitud.getNumerocustodios()<0){ - MessageHelper.setMessageError("EL N\u00DAMERO DE CUSTODIOS DEBE SER POSITIVO"); - return; - } - } - numeroTramite=recordsolicitud.getNumerosolicitud().replace("SOL", "TRA"); - validacioComboFlujo(); - } - - public void validacioComboFlujo(){ - try { - TgeneParameters tgeneparam=ParametersController.find("CODIGO.AR", "1"); - laccion=CatalogDetailController.find("ESTADOSOLICITUD",tgeneparam.getTextvalue()); - TgeneCatalogDetail catalogDetail=null; - for(TgeneCatalogDetail item:laccion){ - if(requisitos.getAuxBotonVerificacion()){ - if(!item.getPk().getCatalog().equals(codigoAceptado())){ - catalogDetail=item; - estado = "APB"; - } - }else{ - if(item.getPk().getCatalog().equals(codigoAceptado())){ - catalogDetail=item; - estado = "ANU"; - } - } - } - laccion.remove(catalogDetail); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("csolicitud", recordsolicitud.getPk()); - Mapdatosmail = new HashMap(); - if (codigoAceptado().equals(estado)) { - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - datosmail.put("razonsocial",recordsolicitud.getModifiedData().get("nombre")); - datosmail.put("tipoTramite",nombreTramite.getDescription()); - datosmail.put("actividad",nombreUsoActividad.getDescription()); - datosmail.put("categoria",nombreCategoria.getDescription()); - datosmail.put("numeroTramite", numeroTramite); - datosmail.put("costoTramite", costoTramite); - datosmail.put("abrevMoneda", ParametersController.find("ABREVMONEDA", "1").getTextvalue()); - datosmail.put("nombreDelBanco",ParametersController.find("BANCODEPOSITO", "1").getTextvalue()); - datosmail.put("cuentaCorriente",ParametersController.find("CUENTADEPOSITO", "1").getTextvalue()); - datosmail.put("diasLaborablesDeposito",ParametersController.find("DIASDEPOSITO", "1").getNumbervalue().toString()); - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - // Datos del funcionario que valida - datosmail.put("funcionario",personDetailObj.getName()); - datosmail.put("grado",personDetailObj.getMilitarygrade()==null?"":personDetailObj.getMilitarygrade()); - // Centro de control de armas - TarmCentroControl centroControlObj=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - datosmail.put("nombreCCAsignado",centroControlObj.getModifiedData().get("desnombreinstitucion")); - datosmail.put("nombreCCA",centroControlObj.getModifiedData().get("desnombreinstitucion")); //Pendiente - if(recordsolicitud.getModifiedData().get("tipoautorizacion")!=null && costoTramite.compareTo(new BigDecimal("0"))==0){ - // En el caso de permisos enviamos una notificacion al cliente con algunos parametros adicionales - if(recordsolicitud.getModifiedData().get("tipoautorizacion").toString().equalsIgnoreCase("6")){ - generarFechaProximoTramite(); - SimpleDateFormat sdf = new SimpleDateFormat(MsgGeneral.getProperty("dateformat")); - datosmail.put("fechaGenerada",sdf.format(fechaAtencionTramite)); - datosmail.put("nombreCCACliente",obtenerCentroControlSolicitante()); - } - } - } else { - datosmail.put("razonsocial",recordsolicitud.getModifiedData().get("nombre")); - datosmail.put("nombre",recordsolicitud.getModifiedData().get("nombre")); - datosmail.put("numerosolicitud",recordsolicitud.getNumerosolicitud()); - SimpleDateFormat fm= new SimpleDateFormat("dd-MM-yyyy"); - datosmail.put("fechasolicitud",fm.format(recordsolicitud.getFregistro())); - datosmail.put("observaciones",observacion); - //grado funcionario de la persona logeada - TsafeUserDetail userDetailObj=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail personDetailObj=PersonDetailController.find(userDetailObj.getPk().getPersoncode().toString()); - datosmail.put("grado",personDetailObj.getMilitarygrade()); - datosmail.put("funcionario",personDetailObj.getName()); - // Centro de control de armas - TarmCentroControl centroControlObj=CentroControlArmasController.findPorCodigo(solicitud.getRecord().getCcentrocontrol()); - String nombreCentroControl=CatalogDetailController.findxCodigoCodcatalogo( centroControlObj.getNombreinstitucion(), - centroControlObj.getNombreinstitucioncodigo()).getDescription(); - datosmail.put("centrocontrol",nombreCentroControl); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "D" : bpmDataStatus); // A,D,R - } - - datosmail.put("costoTramite", costoTramite); - request.modifiedData().put("datosmail", datosmail); - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - if(estado.equalsIgnoreCase("ANU")){ - saveAnularSolicitud(); - } - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveAnularSolicitud() { - try { - // CATEGORIA 14 PREVIA IMPORTACION - TarmTramite tarmTramite = TarmTramiteController.find(this.solicitud.getRecord().getCtramite().toString()); - if(tarmTramite.getCategoria().equals("14")){ - desasociarCargaSolicitud(); - } - - //Poner la solicitud en estado anulado - recordsolicitud.setEstado("ANU"); - recordsolicitud.setAucp(null); - solicitud.setRecord(recordsolicitud); - solicitud.update(); - DtoSave dtoSolicitud = solicitud.getDtoSave(); - - TarmSolicitudTramite solicitudTramiteObj = SolicitudTramiteController.findByCSolicitud(recordsolicitud.getPk()); - if(solicitudTramiteObj!=null){ - solicitudTramiteObj.setIsnew(false); - solicitudTramiteObj.setEstadotramite("ANU"); - solicitudTramiteController.updateSolicitud(solicitudTramiteObj); - } - //Desasociar las armas en apertura de agencias y apertura de sucursales - if(recordsolicitud.getCtramite()==44 || recordsolicitud.getCtramite()==48){ - List armasSolicitudList = RecepcionArmasController.findPorSolicitud(recordsolicitud.getPk()); - for(TarmSolicitudArmas armaObj:armasSolicitudList){ - - // Codigo agencia de la solicitud - ListsolicitudAgenciaLst = SolicitudAgenciaSucursalController.findPorSolicitud(recordsolicitud.getPk()); - for(TarmSolicitudAgenciaSucursal solicitudAgenciaSucursalObj:solicitudAgenciaLst){ - String cAgencia = solicitudAgenciaSucursalObj.getPk().getCagencia().toString(); - TarmAgenciaArma agenciaArmaObj = AgenciaArmaController.findByCArma(armaObj.getPk().getCarma(), cAgencia); - agenciaArma.setRecord(agenciaArmaObj); - agenciaArma.remove(); - } - } - } - - DtoSave dtoSolicitudTramite = solicitudTramiteController.getDtoSave(); - DtoSave dtoAgenciaArma = agenciaArma.getDtoSave(); - - HashMap msave = new HashMap(); - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - msave.put(solicitud.getBeanalias(), dtoSolicitud); // adicionar metadata de mantenimiento para cada tabla. - msave.put(solicitudTramiteController.getBeanalias(), dtoSolicitudTramite); - msave.put(agenciaArma.getBeanalias(), dtoAgenciaArma); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - solicitud.postCommit(resp); - solicitudTramiteController.postCommit(resp); - agenciaArma.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Genera la fecha disponible para el proximo tramite en el centro de control de armas respectivo - */ - public void generarFechaProximoTramite(){ - try { - // Validamos si ya existe una fecha para realizar el proximo tramite - TarmCentroControl centroControlObj = CentroControlArmasController.findPorCodigo(recordsolicitud.getCcentrocontrol()); - centroControlObj.isnew = false; - Date fechaActual=new Date(Calendar.getInstance().getTimeInMillis()); - if(centroControlObj.getFechaproximotramite()==null || centroControlObj.getFechaproximotramite().before(fechaActual)){ - fechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(new java.util.Date(), 1); - }else{ - fechaAtencionTramite = centroControlObj.getFechaproximotramite(); - } - // Numero de armas de la solicitud - ListarmasList = RecepcionArmasController.findPorSolicitud(recordsolicitud.getPk()); - int numArmasSolicitud = armasList.size(); - int salvedad = 10; - int capacidadCentroUltDia = 0; - if(centroControlObj.getCuposlibresultimodia()!=null){ - capacidadCentroUltDia = centroControlObj.getCuposlibresultimodia(); - } - else{ - capacidadCentroUltDia = centroControlObj.getTramitespordia(); - } - // Si la capacidad del centro en el ultimo dia es mayor al numero de armas a revisarse - if(numArmasSolicitud < capacidadCentroUltDia){ - centroControlObj.setCuposlibresultimodia(capacidadCentroUltDia - numArmasSolicitud); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - else if((numArmasSolicitud == capacidadCentroUltDia) || (numArmasSolicitud <= (capacidadCentroUltDia + salvedad))){ - // Si la capacidad del centro es igual al numero de armas a revisarse o ajusta cupo con la salvedad - centroControlObj.setCuposlibresultimodia(centroControlObj.getTramitespordia()); - java.util.Date newFechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, 1); - centroControlObj.setFechaproximotramite(new java.sql.Date(newFechaAtencionTramite.getTime())); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - else{ - // Cociente y residuo para los casos donde se tiene 50 armas o mas a tramitarse - int diasRequeridos = numArmasSolicitud/centroControlObj.getTramitespordia(); - // Requerido para el calculo de los cupos disponibles para el ultimo dia - int residuoDiasRequeridos = numArmasSolicitud%centroControlObj.getTramitespordia(); - fechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, 1); - java.util.Date newFechaAtencionTramite; - - centroControlObj.setCuposlibresultimodia(centroControlObj.getTramitespordia()-residuoDiasRequeridos); - newFechaAtencionTramite = TgeneNotAccountingDayController.diasLaborablesPosterioresAUnaFecha(fechaAtencionTramite, diasRequeridos); - - centroControlObj.setFechaproximotramite(new java.sql.Date(newFechaAtencionTramite.getTime())); - centroControlArmasController.update(centroControlObj); - centroControlArmasController.save(); - - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - - } - } - - /** - * Metodo que devuelve el centro de control al que pertenece el cliente dueno de la solicitud - * @throws Exception - */ - private String obtenerCentroControlSolicitante() throws Exception { - String institucionCentroControl=""; - PersonAddressController personAddressController = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres=personAddressController.findPrincipal(recordsolicitud.getPersoncode().toString()); - if(tcustPersonAddres!=null && tcustPersonAddres.getProvincecode()!=null){ - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - if(centroControlJur!=null && centroControlJur.getCcentrocontrol()!=null){ - TarmCentroControl centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - institucionCentroControl = CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription(); - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_laprovinciasinccontrol")); - return MsgControlArmas.getProperty("msg_error_laprovinciasinccontrol"); - } - }else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_notienedireccionprincipal")); - return MsgControlArmas.getProperty("msg_error_notienedireccionprincipal"); - } - - return institucionCentroControl; - } - - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - // validamos si cargamos los datos cuando apruebe - if (codigoAceptado().equals(estado)) { - cargaDatosSolicitudTramite(); - } - HashMap msave = new HashMap(); - cargarSolicitud(); - // actualiza los requisitos - DtoSave dtosavereq = requisitos.getDtoSave(); - dtosavereq.setReturnpk(true); - dtosavereq.setPosition(1); - msave.put(requisitos.getBeanalias(), dtosavereq); - - // inserta un nuevo registro en tarmSolicitudTramite - DtoSave dtosavesol = solicitudTramiteController.getDtoSave(); - dtosavesol.setIsForm(true); - dtosavesol.setReturnpk(true); - dtosavesol.setPosition(2); - msave.put(solicitudTramiteController.getBeanalias(), dtosavesol); - - // actualiza la solicitud el numero de custodios - DtoSave dtossolicitud = solicitud.getDtoSave(); - dtosavesol.setIsForm(true); - dtosavesol.setReturnpk(true); - dtosavesol.setPosition(3); - msave.put(solicitud.getBeanalias(), dtossolicitud); - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - requisitos.postCommit(resp); - solicitudTramiteController.postCommit(resp); - // ocultarBotonInicioFlujo = false; - MessageHelper.setMessageInfo(resp); - btnGuardar = Boolean.TRUE; - isEnableCompletarTarea = Boolean.TRUE; - } else { - // ocultarBotonInicioFlujo = true; - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void desasociarCargaSolicitud(){ - try{ - TarmCarga carga = CargaController.findByAUCP(solicitud.getRecord().getAucp()); - if(carga!=null){ - carga.setCsolicitud(null); - cargaController.update(carga); - cargaController.save(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public String codigoAceptado() throws Exception { - TgeneParameters f = ParametersController.find("ACEPTADO", "1");//APB ESTADOSOLICITUD - return f.getTextvalue(); - } - - public String codigo(String codigo) throws Exception { - TgeneParameters f = ParametersController.find(codigo, "1");//APB ESTADOSOLICITUD - return f.getTextvalue(); - } - - @Override - protected void querydatabase() { - try { - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void postCommit(Response response) throws Exception { - } - - - public String getCodigoSolicitud() { - return codigoSolicitud; - } - - public void setCodigoSolicitud(String codigoSolicitud) { - this.codigoSolicitud = codigoSolicitud; - } - - - public SolicitudRequisitosController getRequisitos() { - return requisitos; - } - - public void setRequisitos(SolicitudRequisitosController requisitos) { - this.requisitos = requisitos; - } - - public TarmSolicitud getRecordsolicitud() { - return recordsolicitud; - } - - public void setRecordsolicitud(TarmSolicitud recordsolicitud) { - this.recordsolicitud = recordsolicitud; - } - - public TgeneCatalogDetail getNombreDocumento() { - return nombreDocumento; - } - - public void setNombreDocumento(TgeneCatalogDetail nombreDocumento) { - this.nombreDocumento = nombreDocumento; - } - - public TgeneCatalogDetail getNombreTramite() { - return nombreTramite; - } - - public void setNombreTramite(TgeneCatalogDetail nombreTramite) { - this.nombreTramite = nombreTramite; - } - - public TgeneCatalogDetail getNombreCategoria() { - return nombreCategoria; - } - - public void setNombreCategoria(TgeneCatalogDetail nombreCategoria) { - this.nombreCategoria = nombreCategoria; - } - - public TgeneCatalogDetail getNombreUsoActividad() { - return nombreUsoActividad; - } - - public void setNombreUsoActividad(TgeneCatalogDetail nombreUsoActividad) { - this.nombreUsoActividad = nombreUsoActividad; - } - - public SolicitudTramiteController getSolicitudTramiteController() { - return solicitudTramiteController; - } - - public void setSolicitudTramiteController( - SolicitudTramiteController solicitudTramiteController) { - this.solicitudTramiteController = solicitudTramiteController; - } - - public List getLaccion() { - return laccion; - } - - public void setLaccion(List laccion) { - this.laccion = laccion; - } - - public SolicitudArmasController getSolicitud() { - return solicitud; - } - - public void setSolicitud(SolicitudArmasController solicitud) { - this.solicitud = solicitud; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public IngresoDatosTipoTramite getTramite() { - return tramite; - } - - public void setTramite(IngresoDatosTipoTramite tramite) { - this.tramite = tramite; - } - - public BigDecimal getCostoTramite() { - return costoTramite; - } - - public void setCostoTramite(BigDecimal costoTramite) { - this.costoTramite = costoTramite; - } - - public BigDecimal getNumeroArmas() { - return numeroArmas; - } - - public void setNumeroArmas(BigDecimal numeroArmas) { - this.numeroArmas = numeroArmas; - } - - public String getNumeroTramite() { - return numeroTramite; - } - - public void setNumeroTramite(String numeroTramite) { - this.numeroTramite = numeroTramite; - } - - public String getEstado() { - return estado; - } - - public void setEstado(String estado) { - this.estado = estado; - } - - public String getObservacion() { - return observacion; - } - - public void setObservacion(String observacion) { - this.observacion = observacion; - } - - public String getTipoautorizacion() { - return tipoautorizacion; - } - - public void setTipoautorizacion(String tipoautorizacion) { - this.tipoautorizacion = tipoautorizacion; - } - - public String getUsoactividad() { - return usoactividad; - } - - public void setUsoactividad(String usoactividad) { - this.usoactividad = usoactividad; - } - - public Boolean getBtnGuardar() { - return btnGuardar; - } - - public void setBtnGuardar(Boolean btnGuardar) { - this.btnGuardar = btnGuardar; - } - - public Boolean getIsEnableCompletarTarea() { - return isEnableCompletarTarea; - } - - public void setIsEnableCompletarTarea(Boolean isEnableCompletarTarea) { - this.isEnableCompletarTarea = isEnableCompletarTarea; - } - - public java.util.Date getFechaAtencionTramite() { - return fechaAtencionTramite; - } - - public void setFechaAtencionTramite(java.util.Date fechaAtencionTramite) { - this.fechaAtencionTramite = fechaAtencionTramite; - } - - public CentroControlArmasController getCentroControlArmasController() { - return centroControlArmasController; - } - - public void setCentroControlArmasController( - CentroControlArmasController centroControlArmasController) { - this.centroControlArmasController = centroControlArmasController; - } - - public Boolean getRequiereCustodiosBln() { - return requiereCustodiosBln; - } - - public void setRequiereCustodiosBln(Boolean requiereCustodiosBln) { - this.requiereCustodiosBln = requiereCustodiosBln; - } - - public void changeEstado(){ - System.out.println("EL ESTADO ACTUAL ES:"+ estado); - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public BigDecimal getCantidad() { - return cantidad; - } - - public void setCantidad(BigDecimal cantidad) { - this.cantidad = cantidad; - } - - public List getArmas() { - return armas; - } - - public void setArmas(List armas) { - this.armas = armas; - } - - public TarmSolicitudTramite getRecordSolicitudTra() { - return recordSolicitudTra; - } - - public void setRecordSolicitudTra(TarmSolicitudTramite recordSolicitudTra) { - this.recordSolicitudTra = recordSolicitudTra; - } - - public AgenciaArmaController getAgenciaArma() { - return agenciaArma; - } - - public void setAgenciaArma(AgenciaArmaController agenciaArma) { - this.agenciaArma = agenciaArma; - } - - public CargaController getCargaController() { - return cargaController; - } - - public void setCargaController(CargaController cargaController) { - this.cargaController = cargaController; - } - - public Boolean getRequiereNoSolAucpBln() { - return requiereNoSolAucpBln; - } - - public void setRequiereNoSolAucpBln(Boolean requiereNoSolAucpBln) { - this.requiereNoSolAucpBln = requiereNoSolAucpBln; - } - - public String getNombreInstitucion() { - return nombreInstitucion; - } - - public String setNombreInstitucion(String nombreInstitucion) { - if(nombreInstitucion!=null && !nombreInstitucion.isEmpty()){ - this.nombreInstitucion = nombreInstitucion; - }else{ - this.nombreInstitucion = ""; - } - - return nombreInstitucion; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.netbeans-base deleted file mode 100644 index 9a4660a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.netbeans-base +++ /dev/null @@ -1,394 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; -import org.primefaces.context.RequestContext; -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificarMaterialDecomisadoController extends AbstractController { - /** - * Código de decomiso - */ - private String cDecomiso; - - /** - * Manejador de decomiso armas controller - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - /** - * Variable que incluye datos de la cabecera de decomiso - */ - private TarmDecomiso decomiso; - /** - * Variable que incluye datos del detalle del decomiso - */ - private TarmDecomisoArma decomisoArmaObj; - /** - * Provincia - */ - private String provincia; - /** - * Cantón - */ - private String canton; - /** - * Ciudad - */ - private String ciudad; - /** - * Parroquia - */ - private String parroquia; - - /** - * Variable usada para activar el botón de generar reporte - */ - private Boolean isEnableImprimir; - /** - * Cat´logo Grado - */ - private TgeneCatalogDetail gradoCatalogDatail; - /** - * Cat´logo Unidad - */ - private TgeneCatalogDetail unidadCatalogDatail; - - private Boolean btnFlujo; - //private List armasDecomisadasLst = new ArrayList(); - - public VerificarMaterialDecomisadoController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - - @PostConstruct - private void postconstruct() { - // Inicializa autoconsulta - startQuery(); - // cDecomiso="357"; - if(cDecomiso!=null){ - this.init(); - this.query(); - } - else{ - decomisoArmaController.setLrecord(new ArrayList()); - } - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - cDecomiso=super.getMfilters().get("cdecomiso"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - decomiso = DecomisoController.findByCodigo(cDecomiso); - if(decomiso!=null){ - provincia = ProvinceController.getDescProvByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode()); - canton = CantonController.getDescCantonByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode()); - ciudad = CityController.getDescCiudadByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getCitycode()); - parroquia = ParroquiaController.getDescParroquiaByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getParroquiacode()); - gradoCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(decomiso.getGradofuncionario(), decomiso.getGradofuncionariocode()); - TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(decomiso.getCcentrocontrol()); - unidadCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - decomisoArmaController.addFilter("cdecomiso", cDecomiso); - decomisoArmaController.query(); - isEnableImprimir = Boolean.FALSE; - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numReciboNoRegistrado")); - } - btnFlujo=Boolean.FALSE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() { - try { - this.decomisoArmaController.query(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() { - try { - if(cDecomiso!=null){ - this.decomisoArmaController.next(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void previous() { - try { - if(cDecomiso!=null){ - this.decomisoArmaController.previous(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if(decomisoArmaObj==null || decomisoArmaObj.getEnbodega()==null || decomisoArmaObj.getEnbodega().compareTo("Y")!=0){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_proceso")); - return; - } - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - DtoSave dtosaveDA = decomisoArmaController.getDtoSave(); - - if(dtosaveDA.pendingProcess()){ - dtosaveDA.setReturnpk(true); - msave.put(this.decomisoArmaController.getBeanalias(), dtosaveDA); - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.decomisoArmaController.postCommit(resp); - isEnableImprimir = Boolean.TRUE; - btnFlujo=Boolean.TRUE; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cdecomiso",cDecomiso); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs",bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public TarmDecomiso getDecomiso() { - return decomiso; - } - - public void setDecomiso(TarmDecomiso decomiso) { - this.decomiso = decomiso; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getParroquia() { - return parroquia; - } - - public void setParroquia(String parroquia) { - this.parroquia = parroquia; - } - - public TgeneCatalogDetail getGradoCatalogDatail() { - return gradoCatalogDatail; - } - - public void setGradoCatalogDatail(TgeneCatalogDetail gradoCatalogDatail) { - this.gradoCatalogDatail = gradoCatalogDatail; - } - - public TgeneCatalogDetail getUnidadCatalogDatail() { - return unidadCatalogDatail; - } - - public void setUnidadCatalogDatail(TgeneCatalogDetail unidadCatalogDatail) { - this.unidadCatalogDatail = unidadCatalogDatail; - } - - public TarmDecomisoArma getDecomisoArmaObj() { - return decomisoArmaObj; - } - - public void setDecomisoArmaObj(TarmDecomisoArma decomisoArmaObj) { - this.decomisoArmaObj = decomisoArmaObj; - } - - public Boolean getIsEnableImprimir() { - return isEnableImprimir; - } - - - public void setIsEnableImprimir(Boolean isEnableImprimir) { - this.isEnableImprimir = isEnableImprimir; - } - - - public void seleccionarArma(AjaxBehaviorEvent event){ - try { - SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent(); - decomisoArmaObj = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj"); - boolean checked = (Boolean) booleanCheckbox.getValue(); - if (checked) { - decomisoArmaObj.setEnbodega("Y"); - }else{ - decomisoArmaObj.setEnbodega(null); - } - decomisoArmaController.update(decomisoArmaObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.svn-base deleted file mode 100644 index 9a4660a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/VerificarMaterialDecomisadoController.java.svn-base +++ /dev/null @@ -1,394 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.event.AjaxBehaviorEvent; - -import org.primefaces.component.selectbooleancheckbox.SelectBooleanCheckbox; -import org.primefaces.context.RequestContext; -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmDecomiso; -import com.fp.persistence.parmas.soli.TarmDecomisoArma; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class VerificarMaterialDecomisadoController extends AbstractController { - /** - * Código de decomiso - */ - private String cDecomiso; - - /** - * Manejador de decomiso armas controller - */ - @ManagedProperty(value = "#{decomisoArmaController}") - private DecomisoArmaController decomisoArmaController; - - /** - * Variable que incluye datos de la cabecera de decomiso - */ - private TarmDecomiso decomiso; - /** - * Variable que incluye datos del detalle del decomiso - */ - private TarmDecomisoArma decomisoArmaObj; - /** - * Provincia - */ - private String provincia; - /** - * Cantón - */ - private String canton; - /** - * Ciudad - */ - private String ciudad; - /** - * Parroquia - */ - private String parroquia; - - /** - * Variable usada para activar el botón de generar reporte - */ - private Boolean isEnableImprimir; - /** - * Cat´logo Grado - */ - private TgeneCatalogDetail gradoCatalogDatail; - /** - * Cat´logo Unidad - */ - private TgeneCatalogDetail unidadCatalogDatail; - - private Boolean btnFlujo; - //private List armasDecomisadasLst = new ArrayList(); - - public VerificarMaterialDecomisadoController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - - @PostConstruct - private void postconstruct() { - // Inicializa autoconsulta - startQuery(); - // cDecomiso="357"; - if(cDecomiso!=null){ - this.init(); - this.query(); - } - else{ - decomisoArmaController.setLrecord(new ArrayList()); - } - } - - public void startQuery() { - try { - this.pasteBpmScreenParameters(); - cDecomiso=super.getMfilters().get("cdecomiso"); - super.getMfilters().clear(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - decomiso = DecomisoController.findByCodigo(cDecomiso); - if(decomiso!=null){ - provincia = ProvinceController.getDescProvByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode()); - canton = CantonController.getDescCantonByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode()); - ciudad = CityController.getDescCiudadByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getCitycode()); - parroquia = ParroquiaController.getDescParroquiaByCodigo(decomiso.getCountrycode(), decomiso.getProvincecode(), decomiso.getCantoncode(), decomiso.getParroquiacode()); - gradoCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(decomiso.getGradofuncionario(), decomiso.getGradofuncionariocode()); - TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(decomiso.getCcentrocontrol()); - unidadCatalogDatail = CatalogDetailController.findxCodigoCodcatalogo(centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()); - decomisoArmaController.addFilter("cdecomiso", cDecomiso); - decomisoArmaController.query(); - isEnableImprimir = Boolean.FALSE; - } - else{ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_numReciboNoRegistrado")); - } - btnFlujo=Boolean.FALSE; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void query() { - try { - this.decomisoArmaController.query(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() { - try { - if(cDecomiso!=null){ - this.decomisoArmaController.next(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void previous() { - try { - if(cDecomiso!=null){ - this.decomisoArmaController.previous(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if(decomisoArmaObj==null || decomisoArmaObj.getEnbodega()==null || decomisoArmaObj.getEnbodega().compareTo("Y")!=0){ - MessageHelper.setMessageWarn(MsgControlArmas.getProperty("msg_proceso")); - return; - } - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - DtoSave dtosaveDA = decomisoArmaController.getDtoSave(); - - if(dtosaveDA.pendingProcess()){ - dtosaveDA.setReturnpk(true); - msave.put(this.decomisoArmaController.getBeanalias(), dtosaveDA); - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.decomisoArmaController.postCommit(resp); - isEnableImprimir = Boolean.TRUE; - btnFlujo=Boolean.TRUE; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para finalizar la tarea del flujo - */ - public void completarTarea() { - - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("cdecomiso",cDecomiso); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs",bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - btnFlujo=Boolean.FALSE; - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public DecomisoArmaController getDecomisoArmaController() { - return decomisoArmaController; - } - - public void setDecomisoArmaController( - DecomisoArmaController decomisoArmaController) { - this.decomisoArmaController = decomisoArmaController; - } - - public TarmDecomiso getDecomiso() { - return decomiso; - } - - public void setDecomiso(TarmDecomiso decomiso) { - this.decomiso = decomiso; - } - - public String getProvincia() { - return provincia; - } - - public void setProvincia(String provincia) { - this.provincia = provincia; - } - - public String getCanton() { - return canton; - } - - public void setCanton(String canton) { - this.canton = canton; - } - - public String getCiudad() { - return ciudad; - } - - public void setCiudad(String ciudad) { - this.ciudad = ciudad; - } - - public String getParroquia() { - return parroquia; - } - - public void setParroquia(String parroquia) { - this.parroquia = parroquia; - } - - public TgeneCatalogDetail getGradoCatalogDatail() { - return gradoCatalogDatail; - } - - public void setGradoCatalogDatail(TgeneCatalogDetail gradoCatalogDatail) { - this.gradoCatalogDatail = gradoCatalogDatail; - } - - public TgeneCatalogDetail getUnidadCatalogDatail() { - return unidadCatalogDatail; - } - - public void setUnidadCatalogDatail(TgeneCatalogDetail unidadCatalogDatail) { - this.unidadCatalogDatail = unidadCatalogDatail; - } - - public TarmDecomisoArma getDecomisoArmaObj() { - return decomisoArmaObj; - } - - public void setDecomisoArmaObj(TarmDecomisoArma decomisoArmaObj) { - this.decomisoArmaObj = decomisoArmaObj; - } - - public Boolean getIsEnableImprimir() { - return isEnableImprimir; - } - - - public void setIsEnableImprimir(Boolean isEnableImprimir) { - this.isEnableImprimir = isEnableImprimir; - } - - - public void seleccionarArma(AjaxBehaviorEvent event){ - try { - SelectBooleanCheckbox booleanCheckbox = (SelectBooleanCheckbox) event.getComponent(); - decomisoArmaObj = (TarmDecomisoArma) booleanCheckbox.getAttributes().get("armaDecomisadaObj"); - boolean checked = (Boolean) booleanCheckbox.getValue(); - if (checked) { - decomisoArmaObj.setEnbodega("Y"); - }else{ - decomisoArmaObj.setEnbodega(null); - } - decomisoArmaController.update(decomisoArmaObj); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - - public Boolean getBtnFlujo() { - return btnFlujo; - } - - - public void setBtnFlujo(Boolean btnFlujo) { - this.btnFlujo = btnFlujo; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.netbeans-base deleted file mode 100644 index 2dc36aa..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.netbeans-base +++ /dev/null @@ -1,985 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class emitirDocumentoHabilitanteportransaccion extends AbstractController { - - - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value="#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value="#{pesonAddressController}") - private PersonAddressController pesonAddressController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - - - TarmSolicitudTramite solicitudTramite; - TarmSolicitud solicitud; - TarmTramite fila; - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - TarmDocumentoHabilitante documentoHabilitante; - String numeroTramite; - String nombreRazonSocial; - private String xpathflujo="";//cm:Pruebas/cm:ID_1715819825001"; - private String formato = "pdf"; - private String mostrarFormato="PDF"; -// TcustPersonDetail detallesPersona; - List lsolicitud; -// String numeroTramite; -// String nombreRazonSocial; - String identificacion; - String tipoidentificacion; - private String tramiteflujo=""; - private String solicitudflujo=""; - - - private List ldocumentos; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private TcustPersonDetail responsableCentroControl= null; - private String tramiteingresado; - - public emitirDocumentoHabilitanteportransaccion() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.pasteBpmScreenParameters(); - tramiteflujo=super.getMfilters().get("numerotransaccion"); - solicitudflujo=super.getMfilters().get("csolicitud"); - this.init(); - super.getMfilters().clear(); - - super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - // lrecord = new ArrayList<>(); - beanalias = "EMITIRDOCUMENTOHABILITANTE"; - ldocumentos = new ArrayList(); - ldocumentos = CatalogDetailController.find("IDENTIFICATION"); - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - //Obteniendo la solicitud - solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(solicitudflujo); - //valida el tipo de tramite ingresado - validarTramite(); - if (solicitudTramite!=null) - this.numeroTramite=solicitudTramite.getNumerotramite(); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el documento habilitante - documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud(solicitudflujo); - obtenerCentroControl(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void validarTramite(){ - tramiteingresado = "OTROS"; - TgeneParameters parametrofichanoletal=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametrofichanoletal!=null && parametrofichanoletal.getTextvalue()!=null && !parametrofichanoletal.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichanoletal.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "NOLETAL"; - } - } - } - } - - public String getNumeroTramite() { - return numeroTramite; - } - - public void setNumeroTramite(String numeroTramite) { - this.numeroTramite = numeroTramite; - } - - @Override - protected void querydatabase() { - - try { - addFilter("numerotramite", numeroTramite); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery subqueryUso= new SubQuery("TarmTramite","usoactividad","actividad","i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryUso); - SubQuery subqueryPersona= new SubQuery("TarmSolicitud","personcode","persona","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryPersona); - SubQuery subqueryTipo=new SubQuery("TarmTramite", "tipoautorizacion", "tramite", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipocodigo=new SubQuery("TarmTramite", "tipoautorizacioncodigo", "tramitecodigo", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryEstado=new SubQuery("TgeneCatalogDetail","description","desc","i.pk.catalog=t.estadotramite and i.pk.catalogcode=t.estadotramitecodigo"); - dto.addSubQuery(subqueryEstado); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - for(int i=0;i< this.lrecord.size();i++){ - this.lrecord.get(i).getModifiedData().put("usodes", CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("actividad").toString(), "USOACTIVIDAD").getDescription()); - TcustPersonDetail person = PersonDetailController.find(this.lrecord.get(i).getModifiedData().get("persona").toString()); - this.lrecord.get(i).getModifiedData().put("nombre", person.getName()); - this.lrecord.get(i).getModifiedData().put("identificacion", person.getIdentification()); - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tramite").toString(), this.lrecord.get(i).getModifiedData().get("tramitecodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipotramdesc", tipo.getDescription()); - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - try { - if(xpathflujo==null || xpathflujo.isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); - return; - } - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - - public void imprimir(TarmSolicitudTramite fila){ - try { - boolean flagRequisitos = false; - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - boolean flagDoc = false; - String tipotramite=fila.getModifiedData().get("tramite").toString(); - String nombreArchivo = fila.getModifiedData().get("tipotramdesc").toString(); - TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(fila.getPk().getCsolicitud()); - TarmTramite tramite = TarmTramiteController.findSimple(fila.getPk().getCtramite().toString()); - documentoHabilitante=documentoHabilitanteController.findPorSolicitud(fila.getPk().getCsolicitud()); - - xpathflujo=generarXpath(fila.getNumerotramite()); - System.out.println("..." + xpathflujo); - - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(tipotramite); - if(tipotramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tipotramite.equals("2")){ - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - //this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - InputStream pdf=this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else if (tipotramite.equals("4")) { - InputStream pdf=this.reporteGuiaLibreTransito(); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else { - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - } - InputStream pdf=this.reporteGeneral(solicitud.getPk(),flagAgencia,flagArmas,flagDoc,flagGuardias,flagRequisitos,nombreArchivo); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - - } catch (Exception e) { - xpathflujo=null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generar_reporte")); - } - } - - - /** - * Metodo para actualziar en la tabla tarmdocumentohabilitante con el xpath de la ruta de alfreco donde se guardo el documento - * @param documentoHabilitante - * @param xPath - * @throws Exception - */ - private void actualizarXpath(TarmDocumentoHabilitante documentoHabilitante, String xPath) throws Exception{ - documentoHabilitanteController.setRecord(documentoHabilitante); - documentoHabilitanteController.getRecord().setXpath(xPath); - documentoHabilitanteController.update(); - documentoHabilitanteController.save(); - } - - public String generarXpath(String tramite){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - tramite=tramite.replace("TRA", "SOL"); - StringBuilder ruta=new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+tramite); - return ruta.toString(); - } - - public String encontrarUsuario(){ - if(identificacion==null || identificacion=="") - return null; - detallesPersona=PersonDetailController.findxidentification(identificacion, tipoidentificacion); - if(detallesPersona==null) - return null; - lsolicitud=SolicitudController.findSolicitudxPersona(detallesPersona.getPk().getPersoncode().toString()); - - String csolicitud=null; - for(TarmSolicitud soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="csolicitud='"+soli.getPk()+"'"; - } - else{ - csolicitud+=" or csolicitud='"+soli.getPk()+"'"; - } - } - return csolicitud; - } - - - @Override - public void save() { - // TODO Auto-generated method stub - super.save(); - } - - /** - * Ejecuta un reporte de armas - * @param name Nombre del reporte a generar. - */ - public InputStream reporteGuiaLibreTransito() { - try { - String path = "armas/reports/guiaLibreTransito"; - String filename=MsgControlArmas.getProperty("lbl_guiaLibreTransito"); - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.solicitudflujo); - //No. Guia - parameters.put("noGuia", this.numeroTramite); - - //Codigo de barras - String codigoBarras=this.numeroTramite.replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < codigoBarras.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(codigoBarras.toCharArray()[i]!='0' && codigoBarras.toCharArray()[i]!='1' && codigoBarras.toCharArray()[i]!='2' - && codigoBarras.toCharArray()[i]!='3' && codigoBarras.toCharArray()[i]!='4' && codigoBarras.toCharArray()[i]!='5' - && codigoBarras.toCharArray()[i]!='6' && codigoBarras.toCharArray()[i]!='7' && codigoBarras.toCharArray()[i]!='8' - && codigoBarras.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=codigoBarras.toCharArray()[i]; - codigoBarras=codigoBarras.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("codigoBarras", codigoBarras); - - //Nombre/Razon Social - parameters.put("nombreRazon", detallesPersona.getName()); - - //Cedula - parameters.put("cedula", detallesPersona.getIdentification()); - - //Desde - parameters.put("desde", solicitud.getLugarorigen()); - - //Hasta - parameters.put("hasta", solicitud.getLugardestino()); - - //Fechas - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - if(documentoHabilitante!=null){ - parameters.put("fechaExpide", sdf.format(documentoHabilitante.getFechaemision())); - parameters.put("fechaCaduca", sdf.format(documentoHabilitante.getFechaexpiracion())); - }else{ - parameters.put("fechaExpide", " "); - parameters.put("fechaCaduca", " "); - } - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Lugar origen y destino - if(sol!=null){ - parameters.put("provinciaorigen", sol.modifiedData().get("provinciaorigen").toString()); - parameters.put("cantonorigen", sol.modifiedData().get("cantonorigen").toString()); - parameters.put("lugarorigen", sol.getLugarorigen().toString()); - parameters.put("provinciadestino", sol.modifiedData().get("provinciadestino").toString()); - parameters.put("cantondestino", sol.modifiedData().get("cantondestino").toString()); - parameters.put("lugardestino", sol.getLugardestino().toString()); - - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.responsableCentroControl.getName()); - parameters.put("personcode",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.institucionCentroControl); - parameters.put("nombreCentro", this.institucionCentroControl); - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - System.out.println("1. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+parameters.get("fechaExpide")+" "+ - parameters.get("fechaCaduca")+" "+gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - InputStream pdf = this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteCertificadoArmas() { - try { - String path = "armas/reports/certificadoArmas"; - String filename="certificadoarmas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - System.out.println("2. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+ - sdf.format(Calendar.getInstance().getTime())+" "+gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteAgencias() { - try { - String path = "armas/reports/aperturaAgenciasSucursales"; - String filename="aperturaagenciassucursales"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - System.out.println("3. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -/* public void reporteInscripcion(TarmSolicitud solicitud) { - try { - String path = "armas/reports/reporteInscripcion"; - String filename="armas"; - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - - //No. Guia - parameters.put("nombreCompania", detallesPersona.getName()); - - //Nombre/Razon Social - parameters.put("nombrepersona",detallesPersona.getLegalrepresent()); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(solicitud.getFregistro())); - parameters.put("ciudad", "Quito"); - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - */ - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias,boolean flagRequisitos,String nombreArchivo) { - try { - String path = "armas/reports/generalReportHabilita"; - String filename=nombreArchivo; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); -// TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(user.getMilitarygrade(), user.getMilitarygradecode()); - TgeneCatalogDetail grado =null; - if(this.responsableCentroControl.getMilitarygrade()!=null && this.responsableCentroControl.getMilitarygradecode()!=null){ - grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - } - - String gradoUsuario=""; - if(grado!=null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitudflujo); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - TarmTramite t; - Boolean datosTramiteVacios=false; - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - - if(t!=null){ - - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - //Pie - if(t.getPie()!=null){ - parameters.put("pie", t.getPie()); - }else{ - parameters.put("pie", " "); - } - - //fecha de solicitud - if(s.getFregistro()!=null){ - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fecSolicitud", sdf.format(s.getFregistro())); - } - else { - parameters.put("fecSolicitud", ""); - } - - - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - parameters.put("pie", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("flagRequisitos", flagRequisitos); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("usuario",user.getName()); - - System.out.println("4. emitirDocumento"); - parameters.put("codigoQR",solicitud+" "+sdf.format(Calendar.getInstance().getTime())+" "+gradoUsuario+" "+this.institucionCentroControl); - - - String format = "pdf"; - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - //Reponsable - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - return setInstitucionCentroControl(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - - - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteCertificados(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias) { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCertificado"; - if(tramiteingresado.equals("NOLETAL")){ - path = "armas/reports/reporteCertificadoNoLetal"; - } - String filename="reporteCertificado"; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getAddresstypecatalog().equalsIgnoreCase("1")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("fechaExpiracion", sdf.format(documentoHabilitante.getFechaexpiracion())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",user.getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - - System.out.println("5. emitirDocumento"); - parameters.put("codigoQR",solicitud+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoUsuario+" "+this.institucionCentroControl); - - - String format = "pdf"; - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - public List getLdocumentos() { - return ldocumentos; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public void setLdocumentos(List ldocumentos) { - this.ldocumentos = ldocumentos; - } - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getTipoidentificacion() { - return tipoidentificacion; - } - - public void setTipoidentificacion(String tipoidentificacion) { - this.tipoidentificacion = tipoidentificacion; - } - - TarmTramite getFila() { - return fila; - } - - public void setFila(TarmTramite fila) { - this.fila = fila; - } - - - - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public String getMostrarFormato() { - return mostrarFormato; - } - - public void setMostrarFormato(String mostrarFormato) { - this.mostrarFormato = mostrarFormato; - } - - public String getTramiteflujo() { - return tramiteflujo; - } - - public void setTramiteflujo(String tramiteflujo) { - this.tramiteflujo = tramiteflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public String setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - return institucionCentroControl; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public PersonAddressController getPesonAddressController() { - return pesonAddressController; - } - - public void setPesonAddressController( - PersonAddressController pesonAddressController) { - this.pesonAddressController = pesonAddressController; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - - - - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.svn-base deleted file mode 100644 index 2dc36aa..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/armas/solicitud/.svn/text-base/emitirDocumentoHabilitanteportransaccion.java.svn-base +++ /dev/null @@ -1,985 +0,0 @@ -package com.fp.frontend.controller.armas.solicitud; - -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Arrays; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.PersonDetailController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmDocumentoHabilitante; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class emitirDocumentoHabilitanteportransaccion extends AbstractController { - - - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - @ManagedProperty(value="#{alfrescoController}") - private AlfrescoController alfrescoController; - - @ManagedProperty(value="#{documentoHabilitanteController}") - private DocumentoHabilitanteController documentoHabilitanteController; - - @ManagedProperty(value="#{pesonAddressController}") - private PersonAddressController pesonAddressController; - - @ManagedProperty(value="#{solicitudController}") - private SolicitudController solicitudController; - - - - TarmSolicitudTramite solicitudTramite; - TarmSolicitud solicitud; - TarmTramite fila; - TcustPersonDetail detallesPersona; - TcustPersonDetail usuario; - TarmDocumentoHabilitante documentoHabilitante; - String numeroTramite; - String nombreRazonSocial; - private String xpathflujo="";//cm:Pruebas/cm:ID_1715819825001"; - private String formato = "pdf"; - private String mostrarFormato="PDF"; -// TcustPersonDetail detallesPersona; - List lsolicitud; -// String numeroTramite; -// String nombreRazonSocial; - String identificacion; - String tipoidentificacion; - private String tramiteflujo=""; - private String solicitudflujo=""; - - - private List ldocumentos; - private String institucionCentroControl=""; - private TarmCentroControl centroControl = new TarmCentroControl(); - private TcustPersonDetail responsableCentroControl= null; - private String tramiteingresado; - - public emitirDocumentoHabilitanteportransaccion() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - try { - this.pasteBpmScreenParameters(); - tramiteflujo=super.getMfilters().get("numerotransaccion"); - solicitudflujo=super.getMfilters().get("csolicitud"); - this.init(); - super.getMfilters().clear(); - - super.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - private void init() { - try { - recperpage = 15; // Cambiar al # reg a mirar. - // lrecord = new ArrayList<>(); - beanalias = "EMITIRDOCUMENTOHABILITANTE"; - ldocumentos = new ArrayList(); - ldocumentos = CatalogDetailController.find("IDENTIFICATION"); - //Obteniendo el tramite - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - //Obteniendo la solicitud - solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(solicitudflujo); - //valida el tipo de tramite ingresado - validarTramite(); - if (solicitudTramite!=null) - this.numeroTramite=solicitudTramite.getNumerotramite(); - - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - usuario=PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - - //Obteniendo el documento habilitante - documentoHabilitante=DocumentoHabilitanteController.findPorSolicitud(solicitudflujo); - obtenerCentroControl(); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void validarTramite(){ - tramiteingresado = "OTROS"; - TgeneParameters parametrofichanoletal=ParametersController.find("CODIGO.FICHANOLETAL", "1"); - if(parametrofichanoletal!=null && parametrofichanoletal.getTextvalue()!=null && !parametrofichanoletal.getTextvalue().trim().isEmpty()){ - String [] arrayCodTramite=parametrofichanoletal.getTextvalue().split(","); - ListlistaCodTraite=Arrays.asList(arrayCodTramite); - for (String item : listaCodTraite) { - Long codigotramite=Long.parseLong(item); - if(solicitud.getCtramite().equals(codigotramite) || - codigotramite.longValue()==solicitud.getCtramite().longValue()){ - tramiteingresado = "NOLETAL"; - } - } - } - } - - public String getNumeroTramite() { - return numeroTramite; - } - - public void setNumeroTramite(String numeroTramite) { - this.numeroTramite = numeroTramite; - } - - @Override - protected void querydatabase() { - - try { - addFilter("numerotramite", numeroTramite); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery subqueryUso= new SubQuery("TarmTramite","usoactividad","actividad","i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryUso); - SubQuery subqueryPersona= new SubQuery("TarmSolicitud","personcode","persona","i.pk=t.pk.csolicitud"); - dto.addSubQuery(subqueryPersona); - SubQuery subqueryTipo=new SubQuery("TarmTramite", "tipoautorizacion", "tramite", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipo); - SubQuery subqueryTipocodigo=new SubQuery("TarmTramite", "tipoautorizacioncodigo", "tramitecodigo", "i.pk=t.pk.ctramite"); - dto.addSubQuery(subqueryTipocodigo); - SubQuery subqueryEstado=new SubQuery("TgeneCatalogDetail","description","desc","i.pk.catalog=t.estadotramite and i.pk.catalogcode=t.estadotramitecodigo"); - dto.addSubQuery(subqueryEstado); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - for(int i=0;i< this.lrecord.size();i++){ - this.lrecord.get(i).getModifiedData().put("usodes", CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("actividad").toString(), "USOACTIVIDAD").getDescription()); - TcustPersonDetail person = PersonDetailController.find(this.lrecord.get(i).getModifiedData().get("persona").toString()); - this.lrecord.get(i).getModifiedData().put("nombre", person.getName()); - this.lrecord.get(i).getModifiedData().put("identificacion", person.getIdentification()); - TgeneCatalogDetail tipo = CatalogDetailController.findxCodigoCodcatalogo(this.lrecord.get(i).getModifiedData().get("tramite").toString(), this.lrecord.get(i).getModifiedData().get("tramitecodigo").toString()); - this.lrecord.get(i).getModifiedData().put("tipotramdesc", tipo.getDescription()); - } - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para completar la tarea - */ - public void completarTarea() { - try { - if(xpathflujo==null || xpathflujo.isEmpty()){ - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generarReporteRequerido")); - return; - } - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment == null ? "OK" : bpmDataComment); - - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - - public void imprimir(TarmSolicitudTramite fila){ - try { - boolean flagRequisitos = false; - boolean flagArmas = false; - boolean flagGuardias = false; - boolean flagAgencia = false; - boolean flagDoc = false; - String tipotramite=fila.getModifiedData().get("tramite").toString(); - String nombreArchivo = fila.getModifiedData().get("tipotramdesc").toString(); - TarmSolicitud solicitud = SolicitudController.findSolicitudxcodsolicitud(fila.getPk().getCsolicitud()); - TarmTramite tramite = TarmTramiteController.findSimple(fila.getPk().getCtramite().toString()); - documentoHabilitante=documentoHabilitanteController.findPorSolicitud(fila.getPk().getCsolicitud()); - - xpathflujo=generarXpath(fila.getNumerotramite()); - System.out.println("..." + xpathflujo); - - //solicitud=ValidacionTramiteLibreTransitoController.findPorSolicitudSimple(tipotramite); - if(tipotramite==null){ - MessageHelper.setMessageError("ERROR NO MANEJADO POR LA APLICACION CONTACTE AL PROVEEDOR"); - return; - } - if(tipotramite.equals("2")){ - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - //this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - InputStream pdf=this.reporteCertificados(solicitud.getPk(), flagAgencia, flagArmas, flagDoc, flagGuardias); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else if (tipotramite.equals("4")) { - InputStream pdf=this.reporteGuiaLibreTransito(); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - return; - }else { - if(tramite.getRegistroagenciasucursal().equalsIgnoreCase("Y")){ - flagAgencia = true; - } - if (tramite.getRegistroarmas().equalsIgnoreCase("Y")) { - flagArmas = true; - } - if (tramite.getRegistroguardia().equalsIgnoreCase("Y")) { - flagGuardias = true; - } - if(tramite.getDocumentohabilitante().equalsIgnoreCase("Y")) { - flagDoc = true; - } - } - InputStream pdf=this.reporteGeneral(solicitud.getPk(),flagAgencia,flagArmas,flagDoc,flagGuardias,flagRequisitos,nombreArchivo); - alfrescoController.uploadFile(pdf, documentoHabilitante.getNumerodocumento()+".pdf", xpathflujo) ; - xpathflujo = xpathflujo + "/cm:" + documentoHabilitante.getNumerodocumento()+".pdf"; - actualizarXpath(documentoHabilitante, xpathflujo); - - } catch (Exception e) { - xpathflujo=null; - MessageHelper.setMessageError(MsgControlArmas.getProperty("msg_error_generar_reporte")); - } - } - - - /** - * Metodo para actualziar en la tabla tarmdocumentohabilitante con el xpath de la ruta de alfreco donde se guardo el documento - * @param documentoHabilitante - * @param xPath - * @throws Exception - */ - private void actualizarXpath(TarmDocumentoHabilitante documentoHabilitante, String xPath) throws Exception{ - documentoHabilitanteController.setRecord(documentoHabilitante); - documentoHabilitanteController.getRecord().setXpath(xPath); - documentoHabilitanteController.update(); - documentoHabilitanteController.save(); - } - - public String generarXpath(String tramite){ - Calendar calendar = Calendar.getInstance(); - calendar.setTime(new Date()); - tramite=tramite.replace("TRA", "SOL"); - StringBuilder ruta=new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:"+tramite); - return ruta.toString(); - } - - public String encontrarUsuario(){ - if(identificacion==null || identificacion=="") - return null; - detallesPersona=PersonDetailController.findxidentification(identificacion, tipoidentificacion); - if(detallesPersona==null) - return null; - lsolicitud=SolicitudController.findSolicitudxPersona(detallesPersona.getPk().getPersoncode().toString()); - - String csolicitud=null; - for(TarmSolicitud soli : lsolicitud){ - if(csolicitud==null){ - csolicitud="csolicitud='"+soli.getPk()+"'"; - } - else{ - csolicitud+=" or csolicitud='"+soli.getPk()+"'"; - } - } - return csolicitud; - } - - - @Override - public void save() { - // TODO Auto-generated method stub - super.save(); - } - - /** - * Ejecuta un reporte de armas - * @param name Nombre del reporte a generar. - */ - public InputStream reporteGuiaLibreTransito() { - try { - String path = "armas/reports/guiaLibreTransito"; - String filename=MsgControlArmas.getProperty("lbl_guiaLibreTransito"); - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - TarmSolicitud sol = this.solicitudController.findSolicitudxcodsolicitud(this.solicitudflujo); - //No. Guia - parameters.put("noGuia", this.numeroTramite); - - //Codigo de barras - String codigoBarras=this.numeroTramite.replace("-", "").toLowerCase(); - Boolean caracterEliminado=false; - for (int i = 0; i < codigoBarras.length(); i++) { - if(caracterEliminado){ - i=0; - caracterEliminado=false; - } - if(codigoBarras.toCharArray()[i]!='0' && codigoBarras.toCharArray()[i]!='1' && codigoBarras.toCharArray()[i]!='2' - && codigoBarras.toCharArray()[i]!='3' && codigoBarras.toCharArray()[i]!='4' && codigoBarras.toCharArray()[i]!='5' - && codigoBarras.toCharArray()[i]!='6' && codigoBarras.toCharArray()[i]!='7' && codigoBarras.toCharArray()[i]!='8' - && codigoBarras.toCharArray()[i]!='9'){ - - String caracterExtranno=""; - caracterExtranno+=codigoBarras.toCharArray()[i]; - codigoBarras=codigoBarras.replace(caracterExtranno, ""); - caracterEliminado=true; - } - } - parameters.put("codigoBarras", codigoBarras); - - //Nombre/Razon Social - parameters.put("nombreRazon", detallesPersona.getName()); - - //Cedula - parameters.put("cedula", detallesPersona.getIdentification()); - - //Desde - parameters.put("desde", solicitud.getLugarorigen()); - - //Hasta - parameters.put("hasta", solicitud.getLugardestino()); - - //Fechas - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - if(documentoHabilitante!=null){ - parameters.put("fechaExpide", sdf.format(documentoHabilitante.getFechaemision())); - parameters.put("fechaCaduca", sdf.format(documentoHabilitante.getFechaexpiracion())); - }else{ - parameters.put("fechaExpide", " "); - parameters.put("fechaCaduca", " "); - } - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - - //Lugar origen y destino - if(sol!=null){ - parameters.put("provinciaorigen", sol.modifiedData().get("provinciaorigen").toString()); - parameters.put("cantonorigen", sol.modifiedData().get("cantonorigen").toString()); - parameters.put("lugarorigen", sol.getLugarorigen().toString()); - parameters.put("provinciadestino", sol.modifiedData().get("provinciadestino").toString()); - parameters.put("cantondestino", sol.modifiedData().get("cantondestino").toString()); - parameters.put("lugardestino", sol.getLugardestino().toString()); - - } - - //Funcionario - parameters.put("gradoNombreFuncionario",gradoFuncionario+this.responsableCentroControl.getName()); - parameters.put("personcode",this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("centroControl","JEFE DEL "+this.institucionCentroControl); - parameters.put("nombreCentro", this.institucionCentroControl); - //Usuario - parameters.put("usuario",this.usuario.getName()); - sdf=new SimpleDateFormat("yyyy-MM-dd hh:mm:ss"); - String fechaHora=sdf.format(Calendar.getInstance().getTime()); - parameters.put("fechaHora",fechaHora); - - System.out.println("1. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+parameters.get("fechaExpide")+" "+ - parameters.get("fechaCaduca")+" "+gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - InputStream pdf = this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteCertificadoArmas() { - try { - String path = "armas/reports/certificadoArmas"; - String filename="certificadoarmas"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - System.out.println("2. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+ - sdf.format(Calendar.getInstance().getTime())+" "+gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de certificado de armas - * @param name Nombre del reporte a generar. - */ - - - - public void reporteAgencias() { - try { - String path = "armas/reports/aperturaAgenciasSucursales"; - String filename="aperturaagenciassucursales"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - parameters.put("csolicitud", solicitudTramite.getPk().getCsolicitud()); - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - - //Grado - String gradoFuncionario=""; - TgeneCatalogDetail grado=CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), - this.responsableCentroControl.getMilitarygradecode()); - if(grado!=null){ - gradoFuncionario=grado.getDescription()+" - "; - } - System.out.println("3. emitirDocumento"); - parameters.put("codigoQR",solicitudTramite.getNumerotramite()+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoFuncionario+this.responsableCentroControl.getName()+" "+this.institucionCentroControl); - - - String format = "pdf"; - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -/* public void reporteInscripcion(TarmSolicitud solicitud) { - try { - String path = "armas/reports/reporteInscripcion"; - String filename="armas"; - - detallesPersona = PersonDetailController.find(String.valueOf(solicitud.getPersoncode().toString())); - solicitudTramite=TarmSolicitudTramiteController.findPorCSolicitud(solicitud.getPk()); - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - - //No. Guia - parameters.put("nombreCompania", detallesPersona.getName()); - - //Nombre/Razon Social - parameters.put("nombrepersona",detallesPersona.getLegalrepresent()); - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy"); - parameters.put("fecha", sdf.format(solicitud.getFregistro())); - parameters.put("ciudad", "Quito"); - - String format = "pdf"; - - - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - */ - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteGeneral(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias,boolean flagRequisitos,String nombreArchivo) { - try { - String path = "armas/reports/generalReportHabilita"; - String filename=nombreArchivo; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); -// TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(user.getMilitarygrade(), user.getMilitarygradecode()); - TgeneCatalogDetail grado =null; - if(this.responsableCentroControl.getMilitarygrade()!=null && this.responsableCentroControl.getMilitarygradecode()!=null){ - grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - } - - String gradoUsuario=""; - if(grado!=null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = this.responsableCentroControl.getName(); - } - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitudflujo); - - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - TarmTramite t; - Boolean datosTramiteVacios=false; - - if(s!=null){ - //Obteniendo el tramite - t=TarmTramiteController.find(s.getCtramite().toString()); - - //Obteniendo la solicitud trmite - TarmSolicitudTramite st=TarmSolicitudTramiteController.findPorCSolicitud(solicitudflujo); - - - if(t!=null){ - - //No de tramite - if(st!=null){ - parameters.put("noTramite", st.getNumerotramite()); - }else{ - parameters.put("noTramite", " "); - } - - //Tipo de tramite - if(t.getModifiedData().get("tipotramite")!=null){ - parameters.put("tipoTramite", t.getModifiedData().get("tipotramite")); - }else{ - parameters.put("tipoTramite", " "); - } - - //Tipo de autorizacion - if(t.getModifiedData().get("tipoautorizacion")!=null){ - parameters.put("tipoAutorizacion", t.getModifiedData().get("tipoautorizacion")); - }else{ - parameters.put("tipoAutorizacion", " "); - } - - //Categoria - if(t.getModifiedData().get("categoria")!=null){ - parameters.put("categoria", t.getModifiedData().get("categoria")); - }else{ - parameters.put("categoria", " "); - } - - //Uso actividad - if(t.getModifiedData().get("usoactividad")!=null){ - parameters.put("usoActividad", t.getModifiedData().get("usoactividad")); - }else{ - parameters.put("usoActividad", " "); - } - - //Cabecera - if(t.getCabecera()!=null){ - parameters.put("cabecera", t.getCabecera()); - }else{ - parameters.put("cabecera", " "); - } - - //Pie - if(t.getPie()!=null){ - parameters.put("pie", t.getPie()); - }else{ - parameters.put("pie", " "); - } - - //fecha de solicitud - if(s.getFregistro()!=null){ - SimpleDateFormat sdf = new SimpleDateFormat("dd/MM/yyyy"); - parameters.put("fecSolicitud", sdf.format(s.getFregistro())); - } - else { - parameters.put("fecSolicitud", ""); - } - - - - }else{ - datosTramiteVacios=true; - } - }else{ - datosTramiteVacios=true; - } - - if(datosTramiteVacios){ - parameters.put("noTramite", " "); - parameters.put("tipoTramite", " "); - parameters.put("tipoAutorizacion", " "); - parameters.put("categoria", " "); - parameters.put("usoActividad", " "); - parameters.put("cabecera", " "); - parameters.put("pie", " "); - } - - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getPrincipal()!=null && d.getPrincipal().equalsIgnoreCase("Y")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - - //Direccion - parameters.put("direccion", direccion); - - - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("flagRequisitos", flagRequisitos); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - parameters.put("usuario",user.getName()); - - System.out.println("4. emitirDocumento"); - parameters.put("codigoQR",solicitud+" "+sdf.format(Calendar.getInstance().getTime())+" "+gradoUsuario+" "+this.institucionCentroControl); - - - String format = "pdf"; - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - /** - * Obtiene el centro de control segun usurio logeado. - * @throws Exception - * - */ - private String obtenerCentroControl() throws Exception { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - PersonAddressController direccion = new PersonAddressController(); - TcustPersonAddress tcustPersonAddres= direccion.findPrincipal(tsafeUserDetail.getPk().getPersoncode().toString()); - TarmCentroControlJur centroControlJur= TarmCentroControlJurController.findxProvincia(tcustPersonAddres.getProvincecode()); - this.centroControl= CentroControlArmasController.findPorCodigo(centroControlJur.getCcentrocontrol()); - //Reponsable - Integer responsable = this.centroControl.getPersoncode(); - this.responsableCentroControl = PersonDetailController.find(responsable.toString()); - return setInstitucionCentroControl(CatalogDetailController.findxCodigoCodcatalogo( centroControl.getNombreinstitucion(), centroControl.getNombreinstitucioncodigo()).getDescription()); - - - - } - - /** - * Ejecuta reporte general de informacion de armas, guardias, agencias y sucursales - * @param name Nombre del reporte a generar. - */ - - public InputStream reporteCertificados(String solicitud,boolean flagAgencia,boolean flagArmas,boolean flagDoc,boolean flagGuardias) { - try { - String gradoUsuario =""; - String path = "armas/reports/reporteCertificado"; - if(tramiteingresado.equals("NOLETAL")){ - path = "armas/reports/reporteCertificadoNoLetal"; - } - String filename="reporteCertificado"; - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - TcustPersonDetail user = PersonDetailController.find(tsafeUserDetail.getPk().getPersoncode().toString()); - TgeneCatalogDetail grado = CatalogDetailController.findxCodigoCodcatalogo(this.responsableCentroControl.getMilitarygrade(), this.responsableCentroControl.getMilitarygradecode()); - if(grado != null){ - gradoUsuario = grado.getDescription()+" - "+this.responsableCentroControl.getName(); - }else{ - gradoUsuario = "Sin Grado - "+this.responsableCentroControl.getName(); - } - - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("csolicitud", solicitud); - //Obteniendo la solicitud - TarmSolicitud s=SolicitudController.findSolicitudxcodsolicitud(solicitudflujo); - //Obteniendo la direccion - String email=" ",direccion=" "; - List direcciones=PersonAddressController.findAllByPersonCode(s.getPersoncode().toString()); - for (TcustPersonAddress d : direcciones) { - Calendar calendario=Calendar.getInstance(); - calendario.setTime(d.getPk().getDateto()); - if(calendario.get(Calendar.YEAR)==2999){ - if(d.getAddresstypecatalog().equalsIgnoreCase("3")){ - email=d.getAddress(); - }else if(d.getAddresstypecatalog().equalsIgnoreCase("1")){ - direccion=d.getAddress(); - } - } - } - - //Email - parameters.put("email", email); - //Fecha - SimpleDateFormat sdf=new SimpleDateFormat("dd-MM-yyyy / hh:mm:ss"); - parameters.put("lugarFecha", sdf.format(Calendar.getInstance().getTime())); - parameters.put("fechaExpiracion", sdf.format(documentoHabilitante.getFechaexpiracion())); - parameters.put("flagAgencia", flagAgencia); - parameters.put("flagArmas", flagArmas); - parameters.put("flagDoc", flagDoc); - parameters.put("flagGuardias", flagGuardias); - parameters.put("centroControl", this.obtenerCentroControl()); - parameters.put("gradoUsuario", gradoUsuario); - parameters.put("usuario",user.getName()); - parameters.put("codResponsable", this.responsableCentroControl.getPk().getPersoncode()); - - System.out.println("5. emitirDocumento"); - parameters.put("codigoQR",solicitud+" "+sdf.format(Calendar.getInstance().getTime())+" "+ - gradoUsuario+" "+this.institucionCentroControl); - - - String format = "pdf"; - //this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - InputStream pdf=this.reportController.jaspertoInputstream(path, parameters, format, filename, this.getLoginController()); - return pdf; - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - return null; - } - - public List getLdocumentos() { - return ldocumentos; - } - - public String getXpathflujo() { - return xpathflujo; - } - - public void setXpathflujo(String xpathflujo) { - this.xpathflujo = xpathflujo; - } - - public void setLdocumentos(List ldocumentos) { - this.ldocumentos = ldocumentos; - } - - public String getIdentificacion() { - return identificacion; - } - - public void setIdentificacion(String identificacion) { - this.identificacion = identificacion; - } - - public String getTipoidentificacion() { - return tipoidentificacion; - } - - public void setTipoidentificacion(String tipoidentificacion) { - this.tipoidentificacion = tipoidentificacion; - } - - TarmTramite getFila() { - return fila; - } - - public void setFila(TarmTramite fila) { - this.fila = fila; - } - - - - public String getFormato() { - return formato; - } - - public void setFormato(String formato) { - this.formato = formato; - } - - public String getMostrarFormato() { - return mostrarFormato; - } - - public void setMostrarFormato(String mostrarFormato) { - this.mostrarFormato = mostrarFormato; - } - - public String getTramiteflujo() { - return tramiteflujo; - } - - public void setTramiteflujo(String tramiteflujo) { - this.tramiteflujo = tramiteflujo; - } - - public String getInstitucionCentroControl() { - return institucionCentroControl; - } - - public String setInstitucionCentroControl(String institucionCentroControl) { - this.institucionCentroControl = institucionCentroControl; - return institucionCentroControl; - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public DocumentoHabilitanteController getDocumentoHabilitanteController() { - return documentoHabilitanteController; - } - - public void setDocumentoHabilitanteController( - DocumentoHabilitanteController documentoHabilitanteController) { - this.documentoHabilitanteController = documentoHabilitanteController; - } - - public PersonAddressController getPesonAddressController() { - return pesonAddressController; - } - - public void setPesonAddressController( - PersonAddressController pesonAddressController) { - this.pesonAddressController = pesonAddressController; - } - - public SolicitudController getSolicitudController() { - return solicitudController; - } - - public void setSolicitudController(SolicitudController solicitudController) { - this.solicitudController = solicitudController; - } - - - - - -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/entries deleted file mode 100644 index d23424e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/entries +++ /dev/null @@ -1,507 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/bpm -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AssignmentsController.java -file - - - - -2022-07-28T03:39:55.806600Z -c6017ad5b9f8aec76930bf7c7bd39152 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5731 - -ExportFlowsController.java -file - - - - -2022-07-28T03:39:55.806600Z -e78e690d610b4c72e5ef69242c46c59f -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7042 - -GroupsUsersController.java -file - - - - -2022-07-28T03:39:55.808600Z -6daa4e9c665d162bdc7302cdae874bd2 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6931 - -FieldTransactionOriginController.java -file - - - - -2022-07-28T03:39:55.807600Z -0e21d69202d38b797d36619817b44ad6 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6120 - -FieldTransactionMappingController.java -file - - - - -2022-07-28T03:39:55.808600Z -97bb9caf88eeabe885e40e5ca0f114d8 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6275 - -FieldsController.java -file - - - - -2022-07-28T03:39:55.808600Z -b3526ea82a03dfd44d23a2ec36edeb27 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3349 - -NotifyController.java -file - - - - -2022-07-28T03:39:55.809600Z -01dba5ffcd04193dd1de2d409b71c3b0 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5130 - -lov -dir - -InboxController.java -file - - - - -2022-07-28T03:39:55.807600Z -3bfd66b693a0d4c78b08f09837239e31 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18437 - -GroupsController.java -file - - - - -2022-07-28T03:39:55.807600Z -185f3c72dd9ba295b6cfcab7b5f31c31 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3765 - -TransactionLogController.java -file - - - - -2022-07-28T03:39:55.808600Z -0211523c74132352ae537206c844fa7f -2014-11-04T10:22:15.189612Z -2294 -jvaca - - - - - - - - - - - - - - - - - - - - - -21572 - -TaskServerController.java -file - - - - -2022-07-28T03:39:55.809600Z -82597fd35a78385f7353800899ad5297 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5147 - -RulesController.java -file - - - - -2022-07-28T03:39:55.810600Z -8e9b2b7e1d72d9d2dc9596f41e2e8db2 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7174 - -FlowsController.java -file - - - - -2022-07-28T03:39:55.810600Z -b47013e3fcea2b51847cf0820f66d967 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3770 - -EndedFlowsController.java -file - - - - -2022-07-28T03:39:55.809600Z -5c86563ec74c93171b6f12a373ebd9eb -2014-11-10T13:22:42.728556Z -2560 -cpiedra - - - - - - - - - - - - - - - - - - - - - -10295 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/AssignmentsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/AssignmentsController.java.svn-base deleted file mode 100644 index e26f1d0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/AssignmentsController.java.svn-base +++ /dev/null @@ -1,215 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Clase controladora del bean AbstractDataTransport. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class AssignmentsController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public AssignmentsController() throws Exception { - super(AbstractDataTransport.class); - } - - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - - /** - * Atributo para la lista de objetos del QueryAlias - */ - private List> ltasks; - - /** - * Atributo para obtener los datos del query - */ - private Map recordmap; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recordmap = new HashMap(); - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "tasks"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("userCri",super.getMfilters().get("user")); - request.put("cri",""); - request.put("queryalias", "ASIGNEDTASKS"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.ltasks = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.ltasks = (List>) resp.get(this.beanalias); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - MessageHelper.setMessageError("msg_notSave"); - } - - /** - * Método que llama al lov de Personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Maneja la respuesta del Lov de Personas - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.getMfilters().clear(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.query(); - if(this.userdetail.getRecord()==null){ - MessageHelper.setMessageError("msg_userNotFound"); - return; - } - if(this.userdetail.getRecord().getIsuserbpm()==null || this.userdetail.getRecord().getIsuserbpm().equals("N")){ - MessageHelper.setMessageError("msg_notUserBpm"); - return; - } - this.recordmap.put("userasigned", this.userdetail.getRecord().getPk().getUsercode()); - this.recordmap.put("nameasigned", t.getName()); - } - - /** - * Ejecuta el action del asigned - */ - public void assigned(){ - try { - Request request = this.callerhelper.getRequest(); - request.setUser((String)this.recordmap.get("userasigned")); - request.put("TID", this.recordmap.get("tid")); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.querydatabase(); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega una lista de mapas - * @return ltasks Lista de mapas - */ - public List> getLtasks() { - return ltasks; - } - - /** - * Fija una lista de mapas - * @param ltasks Lista de mapas - */ - public void setLtasks(List> ltasks) { - this.ltasks = ltasks; - } - - /** - * Entrega una mapa - * @return recordmap Mapas - */ - public Map getRecordmap() { - return recordmap; - } - - /** - * Fija una mapa - * @param recordmap Mapas - */ - public void setRecordmap(Map recordmap) { - this.recordmap = recordmap; - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return this.userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail Valor a fijar en el atributo. - */ - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/EndedFlowsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/EndedFlowsController.java.svn-base deleted file mode 100644 index 4fff21a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/EndedFlowsController.java.svn-base +++ /dev/null @@ -1,354 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.bpm.lov.TransactionBpmELovController; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; - -/** - * Clase controladora del bean TgeneTransactionLog. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class EndedFlowsController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public EndedFlowsController() throws Exception { - super(TgeneTransactionLog.class); - } - - /** - * Atributo para la lista de objetos del QueryAlias - */ - private List> ltransactionlog; - - /** - * Atributo para la lista de objetos del QueryAlias - */ - private List> ltbpmactivities; - - /** - * Atributo para obtener los datos del query - */ - private Map recordmap; - - /** - * Atributo para el detalle de la actividad realizada - */ - private Map activityDetail; - - /** - * Atributo para el filtro de fecha desde - */ - private Date fromdate; - - /** - * Atributo para el filtro de fecha hasta - */ - private Date todate; - - @PostConstruct - private void postconstruct() { - this.init(); - // this.initDates(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACTIONLOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (super.getMfilters().get("transactionmodule") == null) { - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("creationdate", this.fromdate); - request.put("enddate", this.todate); - request.put("queryalias", "ENDEDFLOWS"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.ltransactionlog = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.ltransactionlog = (List>) resp.get(this.beanalias); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - MessageHelper.setMessageError("msg_notSave"); - } - - /** - * Abre el lov de transacciones - */ - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionBpmELovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov - * - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - - Object obj = event.getObject(); - Map t = (Map) obj; - super.addFilter("transactionmodule", String.valueOf(t.get("pk_transactionmodule"))); - super.addFilter("transactioncode", String.valueOf(t.get("pk_transactioncode"))); - super.addFilter("transactionversion", String.valueOf(t.get("pk_transactionversion"))); - super.addField("transactionname", String.valueOf(t.get("name"))); - // this.query(); - } - - /** - * Inicializa las fechas - */ - public void initDates() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(this.getWorkingDate()); - this.todate = calendar.getTime(); - calendar.add(Calendar.YEAR, -1); - calendar.add(Calendar.DATE, -1); - this.fromdate = calendar.getTime(); - } - - /** - * Entrega la fecha de trabajo de la aplicacin. - * - * @return Fecah Fecha de trabajo. - * @throws Exception - */ - public Date getWorkingDate() { - Date workingDate = null; - try { - TgeneAccountingDateBranchController c = new TgeneAccountingDateBranchController(); - c.getMfilters().clear(); - c.getMfilters().put("pk.branchcode", "0"); - c.getMfilters().put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - c.query(); - workingDate = c.getRecord().getWorkingdate(); - } catch (Exception ex) { - // - } - return workingDate; - } - - /** - * Entrega la fecha en String - * - * @param fecha Date - * @return Fecha en String - */ - public String dateToString(Date fecha) { - String formato = ""; - try { - PropertiesHandler ph = new PropertiesHandler("general_es"); - formato = ph.getStringValue("dateformat"); - } catch (Exception e) { - // nothing - } - SimpleDateFormat date = new SimpleDateFormat(formato); - return date.format(fecha); - } - - /** - * Consulta el detalle de los flujos - */ - public void queryRequestDetail() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = new DtoQuery("com.fp.persistence.pbpm.gene.TbpmActivities", this.page, 20, true, new HashMap()); - - HashMap mtables = new HashMap(); - mtables.put("TBPMACTIVITIES", dto); - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "FLOWDETAIL"); - System.out.println("JOURNAL IDDDDDD " + this.recordmap.get("id")); - request.put("ID", this.recordmap.get("id")); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.ltbpmactivities = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.ltbpmactivities = (List>) resp.get("TBPMACTIVITIES"); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega una lista de objetos - * - * @return ltransactionlog Lista de objetos - */ - public List> getLtransactionlog() { - return ltransactionlog; - } - - /** - * Fija una lista de objetos - * - * @aram ltransactionlog Lista de objetos - */ - public void setLtransactionlog(List> ltransactionlog) { - this.ltransactionlog = ltransactionlog; - } - - /** - * Entrega el ojbeto Date - * - * @return fromdate - */ - public Date getFromdate() { - return fromdate; - } - - /** - * Fija el ojbeto Date - * - * @param fromdate - */ - public void setFromdate(Date fromdate) { - this.fromdate = fromdate; - } - - /** - * Entrega el ojbeto Date - * - * @return todate - */ - public Date getTodate() { - return todate; - } - - /** - * Fija el ojbeto Date - * - * @param todate - */ - public void setTodate(Date todate) { - this.todate = todate; - } - - /** - * Entrega un Map - * - * @return recordmap - */ - public Map getRecordmap() { - return recordmap; - } - - /** - * Fija un Map - * - * @param recordmap - */ - public void setRecordmap(Map recordmap) { - this.recordmap = recordmap; - } - - /** - * Entrega una list de Map con las actividades del flujo - * - * @return ltbpmactivities - */ - public List> getLtbpmactivities() { - return ltbpmactivities; - } - - /** - * Fija una list de Map con las actividades del flujo - * - * @param ltbpmactivities - */ - public void setLtbpmactivities(List> ltbpmactivities) { - this.ltbpmactivities = ltbpmactivities; - } - - /** - * Entrega un mapa activityDetail - * - * @return activityDetail - */ - public Map getActivityDetail() { - return activityDetail; - } - - /** - * Fija un mapa activityDetail - * - * @param activityDetail - */ - public void setActivityDetail(Map activityDetail) { - this.activityDetail = activityDetail; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/ExportFlowsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/ExportFlowsController.java.svn-base deleted file mode 100644 index 264e828..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/ExportFlowsController.java.svn-base +++ /dev/null @@ -1,255 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora para exportar flujos. - * - * @author WPA - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ExportFlowsController extends AbstractController { - - - public ExportFlowsController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - this.initDates(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Atributo fecha desde - */ - private Date fromdate; - - /** - * Atributo fecha hasta - */ - private Date todate; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - private String solicitud; - private Date fec_actual; - private String codCentroControl; - private TcustPersonDetail customerperson; - private TsafeUserDetail userDetail; - private TsafeUserDetail tsafeUserDetailUsuario = null; - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - //this.beanalias = "TBPM"; - this.beanalias = "REPORTE"; - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - MessageHelper.setMessageError("msg_notQuery"); - return; - } - - @Override - public void save(){ - MessageHelper.setMessageError("msg_notSave"); - return; - } - - /** - * Ejecuta un QueryAlias - */ - public void getFileContent(){ - byte[] file = null; - try { - Request request = this.callerhelper.getRequest(); - request.put("queryalias", "EXPORTBPM"); - request.put("querytype", "P"); - request.put("creationdate", this.fromdate); - request.put("enddate", this.todate); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - file = (byte[])resp.get("file"); - super.downloadFile(file, (String)resp.get("contentType"), (String)resp.get("extension")); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las fechas - */ - private void initDates() { - int val = this.getAniosParameter(); - Calendar calendar = Calendar.getInstance(); -// calendar.setTime(this.getWorkingDate()); - this.todate = calendar.getTime(); - calendar.add(Calendar.YEAR, -val); - calendar.add(Calendar.DATE, -1); - this.fromdate = calendar.getTime(); - } - - /** - * Entrega la fecha de trabajo de la aplicacin. - * @return Fecah Fecha de trabajo. - * @throws Exception - */ - private Date getWorkingDate() { - Date workingDate = null; - try{ - TgeneAccountingDateBranchController c = new TgeneAccountingDateBranchController(); - c.getMfilters().clear(); - c.getMfilters().put("pk.branchcode", "0"); - c.getMfilters().put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - c.query(); - workingDate = c.getRecord().getWorkingdate(); - }catch(Exception ex){ - // - } - return workingDate; - } - - /** - * Obtiene el valor del número de anios máximos para la consulta de flujos - * @return value - */ - private Integer getAniosParameter(){ - Integer value = null; - TgeneParameters parameter = ParametersController.find("MAX_BACK", super.getLoginController().getRequest().getCompany().toString()); - if(parameter!=null){ - value = parameter.getNumbervalue().intValue(); - }else value = 1; - return value; - } - - /** - * Entrega la fecha desde - * @return formdate Fecha desde - */ - public Date getFromdate() { - return fromdate; - } - - /** - * Fija la fecha desde - * @param formdate Fecha desde - */ - public void setFromdate(Date fromdate) { - this.fromdate = fromdate; - } - - /** - * Entrega la fecha hasta - * @return formdate Fecha hasta - */ - public Date getTodate() { - return todate; - } - - /** - * Fija la fecha hasta - * @param fromdate Fecha hasta - */ - public void setTodate(Date todate) { - this.todate = todate; - } - - public ReportController getReportController() { - return reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - - public String getSolicitud() { - return solicitud; - } - - public void setSolicitud(String solicitud) { - this.solicitud = solicitud; - } - - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - public void reporteFlujoSolicitudXls() { - try { - String gradoUsuario =""; - String path = "general/reports/flujoSolicitud"; - //String filename=MsgControlArmas.getProperty("lbl_tramitesXcentro"); - String filename="reporte"; - - //Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - parameters.put("solicitud", solicitud); - String format = "xls"; - - try { - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionMappingController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionMappingController.java.svn-base deleted file mode 100644 index 593fc07..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionMappingController.java.svn-base +++ /dev/null @@ -1,212 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmField; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionMaping; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TbpmFieldTransactionMaping. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class FieldTransactionMappingController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public FieldTransactionMappingController() throws Exception { - super(TbpmFieldTransactionMaping.class); - } - - /** - * Atributo para la lista de objetos TbpmField - */ - private List lfield; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Listas - this.lfield = FieldsController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMFIELDTRANSACTIONORIGIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.fieldname"); - - //Subquery - SubQuery subquery = new SubQuery("TbpmField", "description", "descriptionfield", "i.pk = t.pk.fieldname"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception{ - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.create(); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(new Integer(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(new Integer(super.getMfilters().get("pk.transactionversion"))); - } - - @Override - public void update() throws Exception{ - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.update(); - } - - /** - * Abre el lov de transacciones - */ - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("transactionname", t.getName()); - this.query(); - } - - /** - * Controla el combo - */ - public void onChangeField(){ - if(this.record.getPk().getFieldname()!=null){ - for(TbpmField field: this.lfield){ - if(this.record.getPk().getFieldname().compareTo(field.getPk())==0){ - System.out.println("DESCRIPTION "+field.getDescription()); - this.record.put("descriptionfield", field.getDescription()); - System.out.println("DOS "+this.record.getModifiedData().get("descriptionfield")); - } - } - }else{ - this.record.put("descriptionfield", null); - } - } - - /** - * Entrega una lista de objetos TbpmField - * @return lfield Lista de objetos TbpmField - */ - public List getLfield() { - return lfield; - } - - /** - * Fija una lista de objetos TbpmField - * @param lfield Lista de objetos TbpmField - */ - public void setLfield(List lfield) { - this.lfield = lfield; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionOriginController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionOriginController.java.svn-base deleted file mode 100644 index 51808e9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldTransactionOriginController.java.svn-base +++ /dev/null @@ -1,210 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmField; -import com.fp.persistence.pbpm.gene.TbpmFieldTransactionOrigin; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TbpmFieldTransactionOrigin. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class FieldTransactionOriginController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public FieldTransactionOriginController() throws Exception { - super(TbpmFieldTransactionOrigin.class); - } - - /** - * Atributo para la lista de objetos TbpmField - */ - private List lfield; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Listas - this.lfield = FieldsController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMFIELDTRANSACTIONORIGIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.fieldname"); - - //Subquery - SubQuery subquery = new SubQuery("TbpmField", "description", "descriptionfield", "i.pk = t.pk.fieldname"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception{ - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.create(); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(new Integer(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(new Integer(super.getMfilters().get("pk.transactionversion"))); - } - - @Override - public void update() throws Exception{ - if(super.getMfilters().get("pk.transactionmodule")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.update(); - } - - /** - * Abre el lov de transacciones - */ - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("transactionname", t.getName()); - this.query(); - } - - /** - * Controla el combo - */ - public void onChangeField(){ - if(this.record.getPk().getFieldname()!=null){ - for(TbpmField field: this.lfield){ - if(this.record.getPk().getFieldname().compareTo(field.getPk())==0){ - this.record.put("descriptionfield", field.getDescription()); - } - } - }else{ - this.record.put("descriptionfield", null); - } - } - - /** - * Entrega una lista de objetos TbpmField - * @return lfield Lista de objetos TbpmField - */ - public List getLfield() { - return lfield; - } - - /** - * Fija una lista de objetos TbpmField - * @param lfield Lista de objetos TbpmField - */ - public void setLfield(List lfield) { - this.lfield = lfield; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldsController.java.svn-base deleted file mode 100644 index dd5d360..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FieldsController.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmField; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class FieldsController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public FieldsController() throws Exception { - super(TbpmField.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMFIELD"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega una lista de objetos TbpmField - * @return lrecord Lista de objetos TbpmField - */ - public static List find() { - try { - FieldsController cc = new FieldsController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FlowsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FlowsController.java.svn-base deleted file mode 100644 index cb84712..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/FlowsController.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmFlows; - -/** - * Clase controladora del bean TbpmFlows. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class FlowsController extends AbstractController { - - private static final long serialVersionUID = -759951425037143358L; - - public FlowsController() throws Exception { - super(TbpmFlows.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMFLOWS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.flowcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception{ - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - } - - /** - * Entrega una lista de objetos TbpmGroups - * @param companycode Código de compania - * @return lrecord Lista de objetos TbpmGroups - */ - public static List find(String companycode) { - try { - FlowsController cc = new FlowsController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.companycode", companycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsController.java.svn-base deleted file mode 100644 index 4843d33..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsController.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; - -/** - * Clase controladora del bean TbpmGroups. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class GroupsController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public GroupsController() throws Exception { - super(TbpmGroups.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMGROUPS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.groupcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception{ - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - } - - /** - * Entrega una lista de objetos TbpmGroups - * @param companycode Código de compania - * @return lrecord Lista de objetos TbpmGroups - */ - public static List find(String companycode) { - try { - GroupsController cc = new GroupsController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.companycode", companycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsUsersController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsUsersController.java.svn-base deleted file mode 100644 index 18dc725..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/GroupsUsersController.java.svn-base +++ /dev/null @@ -1,226 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.bpm.lov.GroupsLovController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.sun.mail.handlers.message_rfc822; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class GroupsUsersController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public GroupsUsersController() throws Exception { - super(TbpmGroupsUsers.class); - } - - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "GROUPSUSERS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.groupcode") == null) { - MessageHelper.setMessageError("msg_grouprequird"); - return; - } - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.getPk().setGroupcode(super.getMfilters().get("pk.groupcode")); - } - - @Override - public void update() throws Exception { - if(record.getPk().getUsercode() == null){ - MessageHelper.setMessageError("msg_userrequired"); - }else{ - super.update(); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - if(super.getMfilters().get("pk.groupcode")==null){ - MessageHelper.setMessageError("msg_grouprequird"); - return; - } - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.groupcode"); - - //Subquery - SubQuery subquery2 = new SubQuery("TcustPersonDetail", "name", "username", - "i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and " - + "i.pk.personcode = (select a.personcode from TsafeUser a where a.pk = t.pk.usercode and a.companycode=t.pk.companycode)"); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - - if(!dtosave.pendingProcess()){ - return; - } - - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openGroupsLov() { - Map> params = new HashMap<>(); - GroupsLovController.openLov(params); - } - - public void onReturnGroupsLov(SelectEvent event) throws Exception { - TbpmGroups t = (TbpmGroups) event.getObject(); - super.addFilter("pk.groupcode", t.getPk().getGroupcode()); - super.addField("description", t.getDescription()); - this.query(); - } - - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.getMfilters().clear(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.query(); - if(this.userdetail.getRecord()==null){ - this.record.getPk().setUsercode(null); - this.record.getModifiedData().put("username", null); - MessageHelper.setMessageError("msg_userNotFound"); - return; - } - if(this.userdetail.getRecord().getIsuserbpm()==null || this.userdetail.getRecord().getIsuserbpm().equals("N")){ - this.record.getPk().setUsercode(null); - this.record.getModifiedData().put("username", null); - MessageHelper.setMessageError("msg_notUserBpm"); - return; - } - this.record.getPk().setUsercode(this.userdetail.getRecord().getPk().getUsercode()); - this.record.getModifiedData().put("username", t.getName()); - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return this.userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail Valor a fijar en el atributo. - */ - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.netbeans-base deleted file mode 100644 index cc0622b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.netbeans-base +++ /dev/null @@ -1,561 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.SessionScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.component.accordionpanel.AccordionPanel; -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; - -/** - * Clase que muestra - * - * @author amerchan - * @version 2.1 - */ -@ManagedBean -@SessionScoped -public class InboxController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private List lBpmGroups; - - private List> lTransactionsByGroup; - - private List> lTransactions; - - private String beanGroupsName; - - private String codBpmGroupSelected; - - private String bpmDataStatus; - - private String bpmDataComment; - - private String filterTaskName; - - private int tabDiaryId; - - private int accordionTaskTabId; - - private int accordionGroupTabId; - - private List ltaskidinprocess = new ArrayList<>(); - - public InboxController() throws Exception { - super(TgeneTransactionLog.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - beanGroupsName = "BPMGROUPS"; - this.listGroups(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - } - - @SuppressWarnings("unchecked") - protected void listGroups() { - try { - Request request = callerhelper.getRequest(); - Map mGroupsFilter = new HashMap(); - mGroupsFilter.put("pk.usercode", super.getLoginController().getRequest().getUser()); - mGroupsFilter.put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = new DtoQuery(TbpmGroupsUsers.class.getName(), page, 100, true, mGroupsFilter); - SubQuery subquery = new SubQuery("TbpmGroups", "description", "groupName", - "i.pk.groupcode = t.pk.groupcode and i.pk.companycode=t.pk.companycode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(beanGroupsName, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lBpmGroups = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lBpmGroups = (List) resp.get(beanGroupsName); - if ((lBpmGroups != null) && !lBpmGroups.isEmpty()) { - codBpmGroupSelected = lBpmGroups.get(0).getPk().getGroupcode(); - } - super.postQuery((List) resp.get(beanGroupsName)); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void queryTransactionsByGroup() { - try { - ltaskidinprocess = new ArrayList<>(); - this.initBpmData(); - Request request = callerhelper.getRequest(); - request.put("queryalias", "INBOX_TRN_GROUP"); - request.put("querytype", "P"); - request.put("groupId", codBpmGroupSelected); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lTransactionsByGroup = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - lTransactionsByGroup = (List>) resp.get("transactions"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - if ((lTransactionsByGroup != null) && !lTransactionsByGroup.isEmpty()) { - this.fillTransactions(lTransactionsByGroup, true); - } - } - - @SuppressWarnings("unchecked") - public void queryTransactions() { - try { - ltaskidinprocess = new ArrayList<>(); - this.initBpmData(); - Request request = callerhelper.getRequest(); - request.put("queryalias", "INBOX_TRN"); - request.put("querytype", "P"); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lTransactions = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - lTransactions = (List>) resp.get("transactions"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - if ((lTransactions != null) && !lTransactions.isEmpty()) { - // no hacer la consulta entrega el detalle de la tarea. - // this.fillTransactions(this.lTransactions, false); - } - } - - private void fillTransactions(List> lTransactions, boolean isGroup) { - for (Map map : lTransactions) { - String tModule = (String) map.get("m"); - Integer tCode = (Integer) map.get("t"); - Integer tVersion = (Integer) map.get("v"); - this.fillTasks(map, tModule, tCode, tVersion, isGroup); - } - } - - @SuppressWarnings("unchecked") - private void fillTasks(Map map, String tModule, Integer tCode, Integer tVersion, boolean isGroup) { - try { - Request request = callerhelper.getNewRequest(tModule, tCode, tVersion); - String filtertasks = filterTaskName; - if (isGroup) { - request.put("queryalias", "INBOX_TASK_TRN_GROUP"); - request.put("querytype", "P"); - request.put("groupId", codBpmGroupSelected); - } else { - request.put("queryalias", "INBOX_TASK_TRN"); - } - - if ((filtertasks == null) || filtertasks.isEmpty()) { - filtertasks = "%"; - } - request.put("cri", filtertasks); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - List> lTasks = (List>) resp.get("tasks"); - map.put("tasks", lTasks); - for (Map mapTask : lTasks) { - this.fillTaskDetail(mapTask); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - private void fillTaskDetail(Map mapTask) { - try { - Request request = callerhelper.getNewRequest(null, null, null); - request.put("queryalias", "INBOX_TASK_DETAIL"); - request.put("querytype", "P"); - request.put("TID", mapTask.get("tid")); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - Map param = (Map) resp.get("param"); - param.put("TID", mapTask.get("tid")); - param.put("KIND", resp.get("k")); - mapTask.put("taskDetail", resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void initBpmData() throws Exception { - lTransactionsByGroup = new ArrayList>(); - lTransactions = new ArrayList>(); - bpmDataStatus = ""; - bpmDataComment = ""; - filterTaskName = ""; - String tabDiaryId = super.getRequestParameter("tabDiary"); - try { - this.tabDiaryId = Integer.parseInt(tabDiaryId); - } catch (Exception e) { - } - } - - public void enableBpmData() { - try { - String kind = super.getRequestParameter("kind"); - String status = super.getRequestParameter("s"); - if (kind == null) { - return; - } - if (status.compareTo("Reserved") == 0) { - this.initTask(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void initTask() throws Throwable { - String tid = super.getRequestParameter("tid"); - if (ltaskidinprocess.contains(tid)) { - return; - } - Request request = callerhelper.getNewRequest("2", 2001, 1); - request.modifiedData().put("TID", tid); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - ltaskidinprocess.add(tid); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } - - public void assignTask() { - try { - String taskId = super.getRequestParameter("tid"); - Request request = callerhelper.getNewRequest("2", 2000, 1); - request.modifiedData().put("TID", taskId); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void filterTasks() { - try { - String tModule = super.getRequestParameter("tModule"); - Integer tCode = Integer.parseInt(super.getRequestParameter("tCode")); - Integer tVersion = Integer.parseInt(super.getRequestParameter("tVersion")); - filterTaskName = super.getRequestParameter("filterTaskName"); - - Map map = this.getTransactionMap(lTransactions, tModule, tCode, tVersion); - this.fillTasks(map, tModule, tCode, tVersion, false); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void filterTasksGroups() { - try { - String tModule = super.getRequestParameter("tModule"); - Integer tCode = Integer.parseInt(super.getRequestParameter("tCode")); - Integer tVersion = Integer.parseInt(super.getRequestParameter("tVersion")); - filterTaskName = super.getRequestParameter("filterTaskName"); - - Map map = this.getTransactionMap(lTransactionsByGroup, tModule, tCode, tVersion); - - this.fillTasks(map, tModule, tCode, tVersion, true); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private Map getTransactionMap(List> lTransactions, String tModule, Integer tCode, Integer tVersion) { - for (Map map : lTransactions) { - String module = (String) map.get("m"); - Integer transaction = (Integer) map.get("t"); - Integer version = (Integer) map.get("v"); - - if ((tModule.compareTo(module) == 0) && (tCode.compareTo(transaction) == 0) && (tVersion.compareTo(version) == 0)) { - return map; - } - } - return null; - } - - public void onAccordionTasksTabChange(TabChangeEvent event) { - // System.out.println(((AccordionPanel)event.getSource()).getPage()); - accordionTaskTabId = Integer.parseInt(((AccordionPanel) event.getSource()).getActiveIndex()); - } - - public void onAccordionGroupsTabChange(TabChangeEvent event) { - // event.getTab().getId() - accordionGroupTabId = Integer.parseInt(((AccordionPanel) event.getSource()).getActiveIndex()); - } - - /** - * Entrega el valor de: beanGroupsName - * - * @return String - */ - public String getBeanGroupsName() { - return beanGroupsName; - } - - /** - * Fija el valor de: beanGroupsName - * - * @param beanGroupsName Valor a fijar en el atributo - */ - public void setBeanGroupsName(String beanGroupsName) { - this.beanGroupsName = beanGroupsName; - } - - /** - * Entrega el valor de: lBpmGroups - * - * @return List - */ - public List getlBpmGroups() { - return lBpmGroups; - } - - /** - * Fija el valor de: lBpmGroups - * - * @param lBpmGroups Valor a fijar en el atributo - */ - public void setlBpmGroups(List lBpmGroups) { - this.lBpmGroups = lBpmGroups; - } - - /** - * Entrega el valor de: lTransactionsByGroup - * - * @return List> - */ - public List> getlTransactionsByGroup() { - return lTransactionsByGroup; - } - - /** - * Fija el valor de: lTransactionsByGroup - * - * @param lTransactionsByGroup Valor a fijar en el atributo - */ - public void setlTransactionsByGroup(List> lTransactionsByGroup) { - this.lTransactionsByGroup = lTransactionsByGroup; - } - - /** - * Entrega el valor de: lTransactions - * - * @return List> - */ - public List> getlTransactions() { - return lTransactions; - } - - /** - * Fija el valor de: lTransactions - * - * @param lTransactions Valor a fijar en el atributo - */ - public void setlTransactions(List> lTransactions) { - this.lTransactions = lTransactions; - } - - /** - * Entrega el valor de: bpmDataStatus - * - * @return String - */ - @Override - public String getBpmDataStatus() { - return bpmDataStatus; - } - - /** - * Fija el valor de: bpmDataStatus - * - * @param bpmDataStatus Valor a fijar en el atributo - */ - @Override - public void setBpmDataStatus(String bpmDataStatus) { - this.bpmDataStatus = bpmDataStatus; - } - - /** - * Entrega el valor de: bpmDataComment - * - * @return String - */ - @Override - public String getBpmDataComment() { - return bpmDataComment; - } - - /** - * Fija el valor de: bpmDataComment - * - * @param bpmDataComment Valor a fijar en el atributo - */ - @Override - public void setBpmDataComment(String bpmDataComment) { - this.bpmDataComment = bpmDataComment; - } - - /** - * Entrega el valor de: taskFilter - * - * @return String - */ - public String getFilterTaskName() { - return filterTaskName; - } - - /** - * Fija el valor de: taskFilter - * - * @param taskFilter Valor a fijar en el atributo - */ - public void setFilterTaskName(String taskFilter) { - filterTaskName = taskFilter; - } - - /** - * Entrega el valor de: tabDiaryId - * - * @return int - */ - public int getTabDiaryId() { - return tabDiaryId; - } - - /** - * Fija el valor de: tabDiaryId - * - * @param tabDiaryId Valor a fijar en el atributo - */ - public void setTabDiaryId(int tabDiaryId) { - this.tabDiaryId = tabDiaryId; - } - - /** - * Entrega el valor de: accordionTaskTabId - * - * @return int - */ - public int getAccordionTaskTabId() { - return accordionTaskTabId; - } - - /** - * Fija el valor de: accordionTaskTabId - * - * @param accordionTaskTabId Valor a fijar en el atributo - */ - public void setAccordionTaskTabId(int accordionTaskTabId) { - this.accordionTaskTabId = accordionTaskTabId; - } - - /** - * Entrega el valor de: accordionGroupTabId - * - * @return int - */ - public int getAccordionGroupTabId() { - return accordionGroupTabId; - } - - /** - * Fija el valor de: accordionGroupTabId - * - * @param accordionGroupTabId Valor a fijar en el atributo - */ - public void setAccordionGroupTabId(int accordionGroupTabId) { - this.accordionGroupTabId = accordionGroupTabId; - } - - /** - * Entrega el valor de: codBpmGroupSelected - * - * @return String - */ - public String getCodBpmGroupSelected() { - return codBpmGroupSelected; - } - - /** - * Fija el valor de: codBpmGroupSelected - * - * @param codBpmGroupSelected Valor a fijar en el atributo - */ - public void setCodBpmGroupSelected(String codBpmGroupSelected) { - this.codBpmGroupSelected = codBpmGroupSelected; - } - - public void logout() { - FacesContext fc = FacesContext.getCurrentInstance(); - if(fc!=null){ - fc.getExternalContext().invalidateSession(); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.svn-base deleted file mode 100644 index cc0622b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/InboxController.java.svn-base +++ /dev/null @@ -1,561 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.SessionScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.component.accordionpanel.AccordionPanel; -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroupsUsers; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; - -/** - * Clase que muestra - * - * @author amerchan - * @version 2.1 - */ -@ManagedBean -@SessionScoped -public class InboxController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private List lBpmGroups; - - private List> lTransactionsByGroup; - - private List> lTransactions; - - private String beanGroupsName; - - private String codBpmGroupSelected; - - private String bpmDataStatus; - - private String bpmDataComment; - - private String filterTaskName; - - private int tabDiaryId; - - private int accordionTaskTabId; - - private int accordionGroupTabId; - - private List ltaskidinprocess = new ArrayList<>(); - - public InboxController() throws Exception { - super(TgeneTransactionLog.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - beanGroupsName = "BPMGROUPS"; - this.listGroups(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - } - - @SuppressWarnings("unchecked") - protected void listGroups() { - try { - Request request = callerhelper.getRequest(); - Map mGroupsFilter = new HashMap(); - mGroupsFilter.put("pk.usercode", super.getLoginController().getRequest().getUser()); - mGroupsFilter.put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = new DtoQuery(TbpmGroupsUsers.class.getName(), page, 100, true, mGroupsFilter); - SubQuery subquery = new SubQuery("TbpmGroups", "description", "groupName", - "i.pk.groupcode = t.pk.groupcode and i.pk.companycode=t.pk.companycode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(beanGroupsName, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lBpmGroups = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lBpmGroups = (List) resp.get(beanGroupsName); - if ((lBpmGroups != null) && !lBpmGroups.isEmpty()) { - codBpmGroupSelected = lBpmGroups.get(0).getPk().getGroupcode(); - } - super.postQuery((List) resp.get(beanGroupsName)); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void queryTransactionsByGroup() { - try { - ltaskidinprocess = new ArrayList<>(); - this.initBpmData(); - Request request = callerhelper.getRequest(); - request.put("queryalias", "INBOX_TRN_GROUP"); - request.put("querytype", "P"); - request.put("groupId", codBpmGroupSelected); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lTransactionsByGroup = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - lTransactionsByGroup = (List>) resp.get("transactions"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - if ((lTransactionsByGroup != null) && !lTransactionsByGroup.isEmpty()) { - this.fillTransactions(lTransactionsByGroup, true); - } - } - - @SuppressWarnings("unchecked") - public void queryTransactions() { - try { - ltaskidinprocess = new ArrayList<>(); - this.initBpmData(); - Request request = callerhelper.getRequest(); - request.put("queryalias", "INBOX_TRN"); - request.put("querytype", "P"); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lTransactions = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - lTransactions = (List>) resp.get("transactions"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - if ((lTransactions != null) && !lTransactions.isEmpty()) { - // no hacer la consulta entrega el detalle de la tarea. - // this.fillTransactions(this.lTransactions, false); - } - } - - private void fillTransactions(List> lTransactions, boolean isGroup) { - for (Map map : lTransactions) { - String tModule = (String) map.get("m"); - Integer tCode = (Integer) map.get("t"); - Integer tVersion = (Integer) map.get("v"); - this.fillTasks(map, tModule, tCode, tVersion, isGroup); - } - } - - @SuppressWarnings("unchecked") - private void fillTasks(Map map, String tModule, Integer tCode, Integer tVersion, boolean isGroup) { - try { - Request request = callerhelper.getNewRequest(tModule, tCode, tVersion); - String filtertasks = filterTaskName; - if (isGroup) { - request.put("queryalias", "INBOX_TASK_TRN_GROUP"); - request.put("querytype", "P"); - request.put("groupId", codBpmGroupSelected); - } else { - request.put("queryalias", "INBOX_TASK_TRN"); - } - - if ((filtertasks == null) || filtertasks.isEmpty()) { - filtertasks = "%"; - } - request.put("cri", filtertasks); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - List> lTasks = (List>) resp.get("tasks"); - map.put("tasks", lTasks); - for (Map mapTask : lTasks) { - this.fillTaskDetail(mapTask); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - private void fillTaskDetail(Map mapTask) { - try { - Request request = callerhelper.getNewRequest(null, null, null); - request.put("queryalias", "INBOX_TASK_DETAIL"); - request.put("querytype", "P"); - request.put("TID", mapTask.get("tid")); - - Response resp = callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - Map param = (Map) resp.get("param"); - param.put("TID", mapTask.get("tid")); - param.put("KIND", resp.get("k")); - mapTask.put("taskDetail", resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void initBpmData() throws Exception { - lTransactionsByGroup = new ArrayList>(); - lTransactions = new ArrayList>(); - bpmDataStatus = ""; - bpmDataComment = ""; - filterTaskName = ""; - String tabDiaryId = super.getRequestParameter("tabDiary"); - try { - this.tabDiaryId = Integer.parseInt(tabDiaryId); - } catch (Exception e) { - } - } - - public void enableBpmData() { - try { - String kind = super.getRequestParameter("kind"); - String status = super.getRequestParameter("s"); - if (kind == null) { - return; - } - if (status.compareTo("Reserved") == 0) { - this.initTask(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void initTask() throws Throwable { - String tid = super.getRequestParameter("tid"); - if (ltaskidinprocess.contains(tid)) { - return; - } - Request request = callerhelper.getNewRequest("2", 2001, 1); - request.modifiedData().put("TID", tid); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - ltaskidinprocess.add(tid); - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } - - public void assignTask() { - try { - String taskId = super.getRequestParameter("tid"); - Request request = callerhelper.getNewRequest("2", 2000, 1); - request.modifiedData().put("TID", taskId); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void filterTasks() { - try { - String tModule = super.getRequestParameter("tModule"); - Integer tCode = Integer.parseInt(super.getRequestParameter("tCode")); - Integer tVersion = Integer.parseInt(super.getRequestParameter("tVersion")); - filterTaskName = super.getRequestParameter("filterTaskName"); - - Map map = this.getTransactionMap(lTransactions, tModule, tCode, tVersion); - this.fillTasks(map, tModule, tCode, tVersion, false); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void filterTasksGroups() { - try { - String tModule = super.getRequestParameter("tModule"); - Integer tCode = Integer.parseInt(super.getRequestParameter("tCode")); - Integer tVersion = Integer.parseInt(super.getRequestParameter("tVersion")); - filterTaskName = super.getRequestParameter("filterTaskName"); - - Map map = this.getTransactionMap(lTransactionsByGroup, tModule, tCode, tVersion); - - this.fillTasks(map, tModule, tCode, tVersion, true); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private Map getTransactionMap(List> lTransactions, String tModule, Integer tCode, Integer tVersion) { - for (Map map : lTransactions) { - String module = (String) map.get("m"); - Integer transaction = (Integer) map.get("t"); - Integer version = (Integer) map.get("v"); - - if ((tModule.compareTo(module) == 0) && (tCode.compareTo(transaction) == 0) && (tVersion.compareTo(version) == 0)) { - return map; - } - } - return null; - } - - public void onAccordionTasksTabChange(TabChangeEvent event) { - // System.out.println(((AccordionPanel)event.getSource()).getPage()); - accordionTaskTabId = Integer.parseInt(((AccordionPanel) event.getSource()).getActiveIndex()); - } - - public void onAccordionGroupsTabChange(TabChangeEvent event) { - // event.getTab().getId() - accordionGroupTabId = Integer.parseInt(((AccordionPanel) event.getSource()).getActiveIndex()); - } - - /** - * Entrega el valor de: beanGroupsName - * - * @return String - */ - public String getBeanGroupsName() { - return beanGroupsName; - } - - /** - * Fija el valor de: beanGroupsName - * - * @param beanGroupsName Valor a fijar en el atributo - */ - public void setBeanGroupsName(String beanGroupsName) { - this.beanGroupsName = beanGroupsName; - } - - /** - * Entrega el valor de: lBpmGroups - * - * @return List - */ - public List getlBpmGroups() { - return lBpmGroups; - } - - /** - * Fija el valor de: lBpmGroups - * - * @param lBpmGroups Valor a fijar en el atributo - */ - public void setlBpmGroups(List lBpmGroups) { - this.lBpmGroups = lBpmGroups; - } - - /** - * Entrega el valor de: lTransactionsByGroup - * - * @return List> - */ - public List> getlTransactionsByGroup() { - return lTransactionsByGroup; - } - - /** - * Fija el valor de: lTransactionsByGroup - * - * @param lTransactionsByGroup Valor a fijar en el atributo - */ - public void setlTransactionsByGroup(List> lTransactionsByGroup) { - this.lTransactionsByGroup = lTransactionsByGroup; - } - - /** - * Entrega el valor de: lTransactions - * - * @return List> - */ - public List> getlTransactions() { - return lTransactions; - } - - /** - * Fija el valor de: lTransactions - * - * @param lTransactions Valor a fijar en el atributo - */ - public void setlTransactions(List> lTransactions) { - this.lTransactions = lTransactions; - } - - /** - * Entrega el valor de: bpmDataStatus - * - * @return String - */ - @Override - public String getBpmDataStatus() { - return bpmDataStatus; - } - - /** - * Fija el valor de: bpmDataStatus - * - * @param bpmDataStatus Valor a fijar en el atributo - */ - @Override - public void setBpmDataStatus(String bpmDataStatus) { - this.bpmDataStatus = bpmDataStatus; - } - - /** - * Entrega el valor de: bpmDataComment - * - * @return String - */ - @Override - public String getBpmDataComment() { - return bpmDataComment; - } - - /** - * Fija el valor de: bpmDataComment - * - * @param bpmDataComment Valor a fijar en el atributo - */ - @Override - public void setBpmDataComment(String bpmDataComment) { - this.bpmDataComment = bpmDataComment; - } - - /** - * Entrega el valor de: taskFilter - * - * @return String - */ - public String getFilterTaskName() { - return filterTaskName; - } - - /** - * Fija el valor de: taskFilter - * - * @param taskFilter Valor a fijar en el atributo - */ - public void setFilterTaskName(String taskFilter) { - filterTaskName = taskFilter; - } - - /** - * Entrega el valor de: tabDiaryId - * - * @return int - */ - public int getTabDiaryId() { - return tabDiaryId; - } - - /** - * Fija el valor de: tabDiaryId - * - * @param tabDiaryId Valor a fijar en el atributo - */ - public void setTabDiaryId(int tabDiaryId) { - this.tabDiaryId = tabDiaryId; - } - - /** - * Entrega el valor de: accordionTaskTabId - * - * @return int - */ - public int getAccordionTaskTabId() { - return accordionTaskTabId; - } - - /** - * Fija el valor de: accordionTaskTabId - * - * @param accordionTaskTabId Valor a fijar en el atributo - */ - public void setAccordionTaskTabId(int accordionTaskTabId) { - this.accordionTaskTabId = accordionTaskTabId; - } - - /** - * Entrega el valor de: accordionGroupTabId - * - * @return int - */ - public int getAccordionGroupTabId() { - return accordionGroupTabId; - } - - /** - * Fija el valor de: accordionGroupTabId - * - * @param accordionGroupTabId Valor a fijar en el atributo - */ - public void setAccordionGroupTabId(int accordionGroupTabId) { - this.accordionGroupTabId = accordionGroupTabId; - } - - /** - * Entrega el valor de: codBpmGroupSelected - * - * @return String - */ - public String getCodBpmGroupSelected() { - return codBpmGroupSelected; - } - - /** - * Fija el valor de: codBpmGroupSelected - * - * @param codBpmGroupSelected Valor a fijar en el atributo - */ - public void setCodBpmGroupSelected(String codBpmGroupSelected) { - this.codBpmGroupSelected = codBpmGroupSelected; - } - - public void logout() { - FacesContext fc = FacesContext.getCurrentInstance(); - if(fc!=null){ - fc.getExternalContext().invalidateSession(); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/NotifyController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/NotifyController.java.svn-base deleted file mode 100644 index e6855d9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/NotifyController.java.svn-base +++ /dev/null @@ -1,172 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.sql.Timestamp; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.commondb.helper.APPDates; -import com.fp.persistence.pbpm.gene.TbpmNotify; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TbpmNotify. - * - * @author WPA. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class NotifyController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public NotifyController() throws Exception { - super(TbpmNotify.class); - } - - /** - * Atributo para la lista de catalogos - */ - private List lcatalog; - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Lista - this.lcatalog = CatalogDetailController.find("NOTIFYTOCATALOG"); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - super.create(); - super.record.setNotifytocatalogcode("NOTIFYTOCATALOG"); - super.record.setRegisterdate(new Timestamp(this.getWorkingDate().getTime())); - super.record.setUserwhoreg(super.getLoginController().getRequest().getUser()); - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMNOTIFY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega la fecha de trabajo de la aplicacin. - * @return Fecah Fecha de trabajo. - */ - private Date getWorkingDate() { - Date workingDate = null; - try{ - TgeneAccountingDateBranchController c = new TgeneAccountingDateBranchController(); - c.getMfilters().clear(); - c.getMfilters().put("pk.branchcode", "0"); - c.getMfilters().put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - c.query(); - workingDate = c.getRecord().getWorkingdate(); - }catch(Exception ex){ - // - } - return workingDate; - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TbpmNotify(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TbpmNotify) resp.get(this.beanalias); - if (this.record != null) { - super.postQuery((AbstractDataTransport) resp.get(this.beanalias)); - } else { - this.create(); - } - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - this.update(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega la lista de objetos TgeneCatalogDetail - * @return lcatalog - */ - public List getLcatalog() { - return lcatalog; - } - - /** - * Fija la lista de objetos TgeneCatalogDetail - * @param lcatalog - */ - public void setLcatalog(List lcatalog) { - this.lcatalog = lcatalog; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/RulesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/RulesController.java.svn-base deleted file mode 100644 index 02599a1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/RulesController.java.svn-base +++ /dev/null @@ -1,268 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.Enumeration; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletRequest; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.MessageTemplatesLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmRules; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; - -/** - * Clase controladora del bean TbpmRules. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class RulesController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public RulesController() throws Exception { - super(TbpmRules.class); - } - - /** - * Atributo para el tipo de archivo - */ - private List lfiletype; - /** - * Atributo para Si/No - */ - private List lyesnot; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Listas - this.getListFileType(); - this.getList(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMRULES"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.rulecode"); - - //Subquery - SubQuery subquery = new SubQuery("TgeneMessageTemplates", "description", "messagedesc", "i.pk = t.messagecode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public void refresh(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = new DtoSave(); - List l = new ArrayList(); - l.add(this.record); - dtosave.addNew(l); - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - request.modifiedData().put("refresh", "Y"); - Response resp = this.callerhelper.executeSave(request); - request.modifiedData().remove("refresh"); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception{ - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.setSnapshot("LATEST"); - this.record.setParametertype("java.util.Map"); - } - - /** - * Metodo que llena lal lista de tipo de archivo - */ - private void getListFileType(){ - this.lfiletype = new ArrayList(); - String[] flows = {"F", "FLUJOS"}; - String[] rules = {"R", "REGLAS"}; - this.lfiletype.add(flows); - this.lfiletype.add(rules); - } - - /** - * Metodo que llena lal lista de tipo de archivo - */ - private void getList(){ - this.lyesnot = new ArrayList(); - String[] no = {"N", "NO"}; - String[] yes = {"Y", "SI"}; - this.lyesnot.add(no); - this.lyesnot.add(yes); - } - - /** - * Abre el Lov de Mensajes - */ - public void openMessagesLov() { - Map> params = new HashMap<>(); - MessageTemplatesLovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov - * @param event - * @throws Exception - */ - public void onReturnMessagesLov(SelectEvent event) throws Exception { - TgeneMessageTemplates t = (TgeneMessageTemplates) event.getObject(); - this.record.setMessagecode(t.getPk()); - this.record.getModifiedData().put("messagedesc", t.getDescription()); - } - - - - /** - * Entrega la lista de tpos de archivo - * @return lfiletype Lista de tpos de archivo - */ - public List getLfiletype() { - return lfiletype; - } - - /** - * Fija la lista de tpos de archivo - * @param lfiletype Lista de tpos de archivo - */ - public void setLfiletype(List lfiletype) { - this.lfiletype = lfiletype; - } - - /** - * Entrega la lista Si/No - * @return lyesnot Lista Si/No - */ - public List getLyesnot() { - return lyesnot; - } - - /** - * Fija la lista Si/No - * @param lyesnot Lista Si/No - */ - public void setLyesnot(List lyesnot) { - this.lyesnot = lyesnot; - } - - /** - * Elimina el mensaje - */ - public void removemessage(){ - if(this.record!=null){ - this.record.setMessagecode(null); - this.record.put("messagedesc", null); - } - } - - /** - * Fija el paquete segun el tipo de archivo - */ - public void changeFile(){ - if(this.record.getFiletype().equals("F")){ - this.record.setPackagename("maia.flows"); - }else if(this.record.getFiletype().equals("R")){ - this.record.setPackagename("maia.rules"); - }else{ - this.record.setPackagename(null); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TaskServerController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TaskServerController.java.svn-base deleted file mode 100644 index 27dd302..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TaskServerController.java.svn-base +++ /dev/null @@ -1,231 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.ServicesController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneServices; - -/** - * Clase controladora del TaskServer. - * - * @author WPA. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TaskServerController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public TaskServerController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Atributo para la url de la página - */ - private String page; - - /** - * Atributo para habilitar el inicio - */ - private boolean lockStart; - - /** - * Atributo para habilitar el detener - */ - private boolean lockStop; - - /** - * Atributo para la lista de servicios - */ - private List lservices; - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //List - this.lservices = ServicesController.find(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SERVICES"; - //page - this.page = "/resources/images/blanck.jpg"; - //lock - this.lockStart = false; - this.lockStop = false; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - MessageHelper.setMessageError("msg_notQuery"); - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - MessageHelper.setMessageError("msg_notSave"); - } - - public void queryTransaction(){ - try { - if(super.getMfilters().get("servicecode")==null){ - this.init(); - return; - } - - Request request = this.callerhelper.getRequest(); - request.put("querytype", "T"); - request.put("code",super.getMfilters().get("servicecode")); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - this.responseService((Boolean)resp.get("TSStatus")); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Ejecuta una peticion - * @param status I/S - */ - public void processServer(String status){ - try { - Request request = this.callerhelper.getRequest(); - request.put("status", status); - request.put("code", super.getMfilters().get("servicecode")); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.responseService((Boolean)resp.get("TSStatus")); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Procesa la respuesta - * @param response - */ - public void responseService(boolean response){ - if(response){ - this.page = "/resources/images/green.jpg"; - this.lockStart = false; - this.lockStop = true; - }else{ - this.page = "/resources/images/red.jpg"; - this.lockStart = true; - this.lockStop = false; - } - } - - /** - * Entrega una lista de objetos TgeneServices - * @return lservices - */ - public List getLservices() { - return lservices; - } - - /** - * Fija una lista de objetos TgeneServices - * @param lservices - */ - public void setLservices(List lservices) { - this.lservices = lservices; - } - - /** - * Entrega el valor de page - * @return page - */ - public String getPage() { - return page; - } - - /** - * Fija el valor de page - * @param page - */ - public void setPage(String page) { - this.page = page; - } - - /** - * Entrega V/F lockStart - * @return lockStart - */ - public boolean isLockStart() { - return lockStart; - } - - /** - * Fija V/F lockStart - * @param lockStart - */ - public void setLockStart(boolean lockStart) { - this.lockStart = lockStart; - } - - /** - * Entrega V/F lockStop - * @return lockStop - */ - public boolean isLockStop() { - return lockStop; - } - - /** - * Fija V/F lockStop - * @param lockStop - */ - public void setLockStop(boolean lockStop) { - this.lockStop = lockStop; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TransactionLogController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TransactionLogController.java.svn-base deleted file mode 100644 index c68d785..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/.svn/text-base/TransactionLogController.java.svn-base +++ /dev/null @@ -1,709 +0,0 @@ -package com.fp.frontend.controller.bpm; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.json.Serializer; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.log.TgeneTransactionLog; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.simple.dto.TaskInfo; -import com.fp.simple.dto.metadata.ProcessInstanceMeta; - -/** - * Clase que muestra - * - * @author amerchan - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionLogController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private List> lTransactionLogResult; - - private Map tLogResult; - - // monitor - private List> lorigin; - - private List lstatus; - - private List lpim; - - private Map first; - - private List> lLast; - - private List lLastA; - - private List lActualTaskInfo; - - private List> ltaskDetailData; - - private List> ltaskDetailComments; - - private TaskInfo taskInfoSelected; - - private String actualTaskName; - - private boolean enableFlowButton; - - private String flowJson; - - private String lFlowsResponseJson; - - private Long processId; - - private String trn; - - private String aname; - - private String comment; - - private String imageFlowName = "/resources/images/bpm/stackTraceOff.png"; - - public TransactionLogController() throws Exception { - super(TgeneTransactionLog.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACTIONLOG"; - this.enableFlowButton = false; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - private void initFlowInfo() { - this.lorigin = new ArrayList>(); - this.lstatus = new ArrayList(); - this.lpim = new ArrayList(); - this.lActualTaskInfo = new ArrayList(); - this.lLast = new ArrayList>(); - this.lLastA = new ArrayList(); - this.first = new HashMap(); - this.ltaskDetailData = new ArrayList>(); - this.ltaskDetailComments = new ArrayList>(); - this.taskInfoSelected = new TaskInfo(); - this.enableFlowButton = false; - this.trn = ""; - this.aname = ""; - this.imageFlowName = ""; - this.actualTaskName = ""; - this.flowJson = ""; - this.lFlowsResponseJson = ""; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "TRANSACTIONLOGRESULT"); - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lTransactionLogResult = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.lTransactionLogResult = (List>) resp.get(this.beanalias); - this.lrecord.add(null); // dummy para que funcione la paginacion en el metodo next() - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void queryMonitor() { - try { - this.initFlowInfo(); - Request request = this.callerhelper.getRequest(); - request.put("querytype", "T"); - request.put("queryalias", "TRANSACTIONLOGRESULT"); - request.put("PID", this.processId); - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lorigin = new ArrayList>(); - this.lstatus = new ArrayList(); - this.lpim = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lorigin = (List>) resp.get("origin"); - this.lstatus = (ArrayList) resp.get("status"); - this.lpim = this.lstatus; - this.trn = (String) resp.get("TRN"); - // System.out.println(this.lorigin); - } - this.showFlow(); - this.first = (Map) resp.get("FIRST"); - this.showDefaultTask(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void queryTaskDetail() { - try { - Request request = this.callerhelper.getRequest(); - request.put("querytype", "P"); - request.put("queryalias", "TASKDETAIL"); - request.put("PID", this.processId); - request.put("TID", this.taskInfoSelected.getTaskId()); - request.put("JID", this.taskInfoSelected.getJournalId()); - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.ltaskDetailData = new ArrayList>(); - this.ltaskDetailComments = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.ltaskDetailData = (List>) resp.get("data"); - this.ltaskDetailComments = (List>) resp.get("comments"); - // super.cloneOriginalBean((List) resp.get(this.beanalias)); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void showTask() { - try { - String taskName = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap().get("taskName"); - // System.out.println("taskName::"+taskName); - Request request = this.callerhelper.getRequest(); - request.put("querytype", "P"); - request.put("queryalias", "TASKHISTORY"); - request.put("PID", this.processId); - request.put("SPID", this.processId); - request.put("NAME", taskName); - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lActualTaskInfo = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.showActualInfo(taskName, (List) ((Map) resp.get("DATA")).values().toArray()[0]); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void saveComment() { - try { - Request request = this.callerhelper.getNewRequest(this.callerhelper.getRequest().getTransactionModule(), 2002, 1); - request.modifiedData().put("TID", this.taskInfoSelected.getTaskId()); - request.modifiedData().put("BPMObs", this.comment); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - this.comment = ""; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - private void showDefaultTask() { - try { - Map mapTasks = null; - if (this.first != null) { - mapTasks = (Map) this.first.values().toArray()[0]; - } - String key = null; - List lTaskValues = null; - if (mapTasks != null) { - key = (String) mapTasks.keySet().toArray()[0]; - lTaskValues = (List) mapTasks.values().toArray()[0]; - } - - this.showActualInfo(key, lTaskValues); - } catch (Exception e) { - e.printStackTrace(); - } - } - - public void showFlow() throws Exception { - String pMetaId = super.getRequestParameter("pMetaId"); - // System.out.println("pMetaId:"+pMetaId); - if (pMetaId != null && !pMetaId.isEmpty()) { - this.enableFlowButton = true; - this.lLast.add(this.lLast.size(), this.lpim); - this.lLastA.add(this.lLastA.size(), this.aname); - this.lpim = this.getSubFlow(pMetaId); - } - this.showImage(!this.lpim.isEmpty() ? this.lpim.get(0) : null); - } - - public void showLastFlow() throws Exception { - this.lpim = this.lLast.get(this.lLast.size() - 1); - this.lLast.remove(this.lLast.size() - 1); - - if (this.lLast.size() < 1) { - this.enableFlowButton = false; - this.showDefaultTask(); - } - this.showImage(this.lpim.get(0)); - } - - private List getSubFlow(String pMetaid) { - Long metaId = Long.parseLong(pMetaid); - for (ProcessInstanceMeta processInstanceMeta : this.lpim) { - if (processInstanceMeta.getPmetaid().compareTo(metaId) == 0) { - return processInstanceMeta.getSub(); - } - } - return null; - } - - @SuppressWarnings("unchecked") - private void showImage(ProcessInstanceMeta pFlow) throws Exception { - if (pFlow == null) { - return; - } - this.processId = pFlow.getPid(); - if (pFlow != null) { - this.showActualInfo("", pFlow.getVariables() == null || pFlow.getVariables().get("actualTask") == null ? null : (List) pFlow - .getVariables().get("actualTask")); - } - this.imageFlowName = "/resources/images/bpm/flows/" + pFlow.getName() + "-" + pFlow.getVersion() + ".png"; - } - - private void showActualInfo(String name, List lActualTaskInfo) throws Exception { - this.actualTaskName = name; - this.aname = name; - this.lActualTaskInfo = lActualTaskInfo; - Response r = new Response("", ""); - r.put("flows", this.lpim); - Serializer ser = new Serializer(r); - - // System.out.println(ser.toJSON()); - this.lFlowsResponseJson = ser.toJSON(); - } - - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("transactionname", t.getName()); - this.query(); - } - - /** - * Entrega el valor de: lTransactionLogResult - * - * @return List> - */ - public List> getlTransactionLogResult() { - return this.lTransactionLogResult; - } - - /** - * Fija el valor de: lTransactionLogResult - * - * @param lTransactionLogResult Valor a fijar en el atributo - */ - public void setlTransactionLogResult(List> lTransactionLogResult) { - this.lTransactionLogResult = lTransactionLogResult; - } - - /** - * Entrega el valor de: tLogResult - * - * @return Map - */ - public Map gettLogResult() { - return this.tLogResult; - } - - /** - * Fija el valor de: tLogResult - * - * @param tLogResult Valor a fijar en el atributo - */ - public void settLogResult(Map tLogResult) { - this.tLogResult = tLogResult; - } - - /** - * Entrega el valor de: lorigin - * - * @return List> - */ - public List> getLorigin() { - return this.lorigin; - } - - /** - * Fija el valor de: lorigin - * - * @param lorigin Valor a fijar en el atributo - */ - public void setLorigin(List> lorigin) { - this.lorigin = lorigin; - } - - /** - * Entrega el valor de: lstatus - * - * @return List - */ - public List getLstatus() { - return this.lstatus; - } - - /** - * Fija el valor de: lstatus - * - * @param lstatus Valor a fijar en el atributo - */ - public void setLstatus(List lstatus) { - this.lstatus = lstatus; - } - - /** - * Entrega el valor de: lpim - * - * @return List - */ - public List getLpim() { - return this.lpim; - } - - /** - * Fija el valor de: lpim - * - * @param lpim Valor a fijar en el atributo - */ - public void setLpim(List lpim) { - this.lpim = lpim; - } - - /** - * Entrega el valor de: lLast - * - * @return List - */ - public List> getlLast() { - return this.lLast; - } - - /** - * Fija el valor de: lLast - * - * @param lLast Valor a fijar en el atributo - */ - public void setlLast(List> lLast) { - this.lLast = lLast; - } - - /** - * Entrega el valor de: lLastA - * - * @return List - */ - public List getlLastA() { - return this.lLastA; - } - - /** - * Fija el valor de: lLastA - * - * @param lLastA Valor a fijar en el atributo - */ - public void setlLastA(List lLastA) { - this.lLastA = lLastA; - } - - /** - * Entrega el valor de: lActualTaskInfo - * - * @return List - */ - public List getlActualTaskInfo() { - return this.lActualTaskInfo; - } - - /** - * Fija el valor de: lActualTaskInfo - * - * @param lActualTaskInfo Valor a fijar en el atributo - */ - public void setlActualTaskInfo(List lActualTaskInfo) { - this.lActualTaskInfo = lActualTaskInfo; - } - - /** - * Entrega el valor de: ltaskDetailData - * - * @return List> - */ - public List> getLtaskDetailData() { - return this.ltaskDetailData; - } - - /** - * Fija el valor de: ltaskDetailData - * - * @param ltaskDetailData Valor a fijar en el atributo - */ - public void setLtaskDetailData(List> ltaskDetailData) { - this.ltaskDetailData = ltaskDetailData; - } - - /** - * Entrega el valor de: ltaskDetailComments - * - * @return List> - */ - public List> getLtaskDetailComments() { - return this.ltaskDetailComments; - } - - /** - * Fija el valor de: ltaskDetailComments - * - * @param ltaskDetailComments Valor a fijar en el atributo - */ - public void setLtaskDetailComments(List> ltaskDetailComments) { - this.ltaskDetailComments = ltaskDetailComments; - } - - /** - * Entrega el valor de: taskInfoSelected - * - * @return TaskInfo - */ - public TaskInfo getTaskInfoSelected() { - return this.taskInfoSelected; - } - - /** - * Fija el valor de: taskInfoSelected - * - * @param taskInfoSelected Valor a fijar en el atributo - */ - public void setTaskInfoSelected(TaskInfo taskInfoSelected) { - this.taskInfoSelected = taskInfoSelected; - } - - /** - * Entrega el valor de: lFlowsResponseJson - * - * @return String - */ - public String getlFlowsResponseJson() { - return this.lFlowsResponseJson; - } - - /** - * Fija el valor de: lFlowsResponseJson - * - * @param lFlowsResponseJson Valor a fijar en el atributo - */ - public void setlFlowsResponseJson(String lFlowsResponseJson) { - this.lFlowsResponseJson = lFlowsResponseJson; - } - - /** - * Entrega el valor de: flowJson - * - * @return String - */ - public String getFlowJson() { - return this.flowJson; - } - - /** - * Fija el valor de: flowJson - * - * @param flowJson Valor a fijar en el atributo - */ - public void setFlowJson(String flowJson) { - this.flowJson = flowJson; - } - - /** - * Entrega el valor de: processId - * - * @return String - */ - public Long getProcessId() { - return this.processId; - } - - /** - * Fija el valor de: processId - * - * @param processId Valor a fijar en el atributo - */ - public void setProcessId(Long processId) { - this.processId = processId; - } - - /** - * Entrega el valor de: trn - * - * @return String - */ - public String getTrn() { - return this.trn; - } - - /** - * Fija el valor de: trn - * - * @param trn Valor a fijar en el atributo - */ - public void setTrn(String trn) { - this.trn = trn; - } - - /** - * Entrega el valor de: aname - * - * @return String - */ - public String getAname() { - return this.aname; - } - - /** - * Fija el valor de: aname - * - * @param aname Valor a fijar en el atributo - */ - public void setAname(String aname) { - this.aname = aname; - } - - /** - * Entrega el valor de: comment - * - * @return String - */ - public String getComment() { - return this.comment; - } - - /** - * Fija el valor de: comment - * - * @param comment Valor a fijar en el atributo - */ - public void setComment(String comment) { - this.comment = comment; - } - - /** - * Entrega el valor de: actualTaskName - * - * @return String - */ - public String getActualTaskName() { - return this.actualTaskName; - } - - /** - * Fija el valor de: actualTaskName - * - * @param actualTaskName Valor a fijar en el atributo - */ - public void setActualTaskName(String actualTaskName) { - this.actualTaskName = actualTaskName; - } - - /** - * Entrega el valor de: enableFlowButton - * - * @return boolean - */ - public boolean isEnableFlowButton() { - return this.enableFlowButton; - } - - /** - * Fija el valor de: enableFlowButton - * - * @param enableFlowButton Valor a fijar en el atributo - */ - public void setEnableFlowButton(boolean enableFlowButton) { - this.enableFlowButton = enableFlowButton; - } - - /** - * Entrega el valor de: imageFlowName - * - * @return String - */ - public String getImageFlowName() { - return this.imageFlowName; - } - - /** - * Fija el valor de: imageFlowName - * - * @param imageFlowName Valor a fijar en el atributo - */ - public void setImageFlowName(String imageFlowName) { - this.imageFlowName = imageFlowName; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/entries deleted file mode 100644 index f6cbed5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/bpm/lov -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -GroupsLovController.java -file - - - - -2022-07-28T03:39:55.717600Z -85640011a044adde053fd4d1c67630cf -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3545 - -TransactionBpmELovController.java -file - - - - -2022-07-28T03:39:55.717600Z -d43690d0fbd92c3204bd12a67cbc77e1 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4676 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/GroupsLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/GroupsLovController.java.svn-base deleted file mode 100644 index 022195c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/GroupsLovController.java.svn-base +++ /dev/null @@ -1,114 +0,0 @@ -package com.fp.frontend.controller.bpm.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; - -/** - * Clase controladora del lov bean TbpmGroups. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class GroupsLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public GroupsLovController() throws Exception { - super(TbpmGroups.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "GROUPSLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.groupcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Fija el registro seleccionado - */ - public void setGroup() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Fija el registro seleccionado - */ - public void setGroup(TbpmGroups tbpmGroups) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tbpmGroups); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/bpm/lov/groupslov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/TransactionBpmELovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/TransactionBpmELovController.java.svn-base deleted file mode 100644 index 6c3b3e9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/bpm/lov/.svn/text-base/TransactionBpmELovController.java.svn-base +++ /dev/null @@ -1,155 +0,0 @@ -package com.fp.frontend.controller.bpm.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TgeneTransactionLog. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionBpmELovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TransactionBpmELovController() throws Exception { - super(TgeneTransaction.class); - } - - /** - * Atributo para almacenar la respuesta del quieryalias - */ - private List> lTransactionLog; - - /** - * Atributo para almacenar un arreglo de objetos - */ - private Object objeto; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENETRANSACTION"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - - request.put("querytype", "P"); - request.put("queryalias", "ENDEDFLOW"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lTransactionLog = new ArrayList>(); - MessageHelper.setMessageError(resp); - } else { - this.lTransactionLog = (List>) resp.get(this.beanalias); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setTransaction() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.objeto); - } - - public void setTransaction(TgeneTransaction tgeneTransaction) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneTransaction); - } - - public void setTransaction(Map transactionLog){ - RequestContext.getCurrentInstance().closeDialog(transactionLog); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/bpm/lov/transactionbpmeLov.xhtml", options, params); - } - - /** - * Entrega la data del QueryAlias - * @return lTransactionLog Data del QueryAlias - */ - public List> getlTransactionLog() { - return lTransactionLog; - } - - /** - * Fija la data del QueryAlias - * @param lTransactionLog Data del QueryAlias - */ - public void setlTransactionLog(List> lTransactionLog) { - this.lTransactionLog = lTransactionLog; - } - - /** - * Entrega un arreglo de objetos - * @return objeto Arreglo de objetos - */ - public Object getObjeto() { - return objeto; - } - - /** - * Fija un arreglo de objetos - * @param objeto Arreglo de objetos - */ - public void setObjeto(Object objeto) { - this.objeto = objeto; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/error/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/error/.svn/entries deleted file mode 100644 index 4d3b027..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/error/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/error -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ErrorController.java -file - - - - -2022-07-28T03:39:54.836596Z -1c116570f430592233db1a38af0da7cc -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1219 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/error/.svn/text-base/ErrorController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/error/.svn/text-base/ErrorController.java.svn-base deleted file mode 100644 index 28d1bd7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/error/.svn/text-base/ErrorController.java.svn-base +++ /dev/null @@ -1,47 +0,0 @@ -package com.fp.frontend.controller.error; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.RequestScoped; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletRequest; - -@ManagedBean -@RequestScoped -public class ErrorController { - - private String statusCode; - private String errorMessage; - private HttpServletRequest request; - - public ErrorController() { - FacesContext fc = FacesContext.getCurrentInstance(); - this.request = ((HttpServletRequest)fc.getExternalContext().getRequest()); - } - - public HttpServletRequest getRequest() { - return this.request; - } - - public void setRequest(HttpServletRequest request) { - this.request = request; - } - - public String getStatusCode() { - this.statusCode = this.request.getAttribute("javax.servlet.error.status_code").toString(); - return this.statusCode; - } - - public void setStatusCode(String statusCode) { - this.statusCode = statusCode; - } - - public String getErrorMessage() { - this.errorMessage = this.request.getAttribute("javax.servlet.error.message").toString(); - return this.errorMessage; - } - - public void setErrorMessage(String errorMessage) { - this.errorMessage = errorMessage; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/general/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/general/.svn/entries deleted file mode 100644 index 9a61185..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/general/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/general -svn://172.17.26.185/COMACO - - - -2015-01-16T05:41:34.695076Z -3760 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -audit -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/entries deleted file mode 100644 index b68dc9e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/general/audit -svn://172.17.26.185/COMACO - - - -2015-01-16T05:41:34.695076Z -3760 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AuditReportController.java -file - - - - -2022-07-28T03:39:54.911596Z -a3786c8a74d07849a0eed3a33f6f5f08 -2015-01-16T05:41:34.695076Z -3760 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -13988 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/prop-base/AuditReportController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/prop-base/AuditReportController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/prop-base/AuditReportController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.netbeans-base deleted file mode 100644 index a8342ca..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.netbeans-base +++ /dev/null @@ -1,511 +0,0 @@ -package com.fp.frontend.controller.general.audit; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.lov.EntityLovController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.controller.pgeneral.lov.UserLovController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.controller.pgeneral.safe.AuditInsDelController; -import com.fp.frontend.controller.pgeneral.safe.SafeAuditController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneEntity; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.safe.TsafeAudit; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase que se utliza para la llanada del reporte de Auditoria - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AuditReportController extends AbstractController { - - /** - * Fecha desde - */ - private Date dateFrom; - - /** - * Fecha desde - */ - private Date maxDateTo; - - private Date minDateFrom; - /** - * Fecha hasta - */ - private Date dateTo; - - private String user; - - private String userName; - - private String transactioncode; - - private String transactionmodule; - - private String transactionname; - - private String transactionversion; - - private String entityName; - - private String clientCode; - - private String clientName; - - private String moduleCode; - - private List listModule; - - @ManagedProperty(value = "#{safeAuditController}") - private SafeAuditController safeAudit; - - @ManagedProperty(value = "#{auditInsDelController}") - private AuditInsDelController auditinsdel; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public AuditReportController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTAUDIT"; - this.recperpage = 15; - this.listModule = ModuleController.find(); - // this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dtoQuerySafeUpdate = this.safeAudit.getDtoSafeAudit(); - DtoQuery dtoinsdel = this.auditinsdel.getDtoAuditInsDel(); - if ((this.dateFrom != null) && (this.dateTo != null)) { - Filter f = null; - f = new Filter(); - f.setSql("t.pk.changedate >= to_date('" + this.dateFrom + "', 'yyyy-MM-dd') and t.pk.changedate <= to_date('" + this.dateTo - + "', 'yyyy-MM-dd') "); - dtoinsdel.addFiltro(f); - dtoQuerySafeUpdate.addFiltro(f); - } - - HashMap mtables = new HashMap(); - mtables.put(this.safeAudit.getBeanalias(), dtoQuerySafeUpdate); - mtables.put(this.auditinsdel.getBeanalias(), dtoinsdel); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList<>(); - this.safeAudit.setLrecord(new ArrayList()); - this.auditinsdel.setLrecord(new ArrayList()); - MessageHelper.setMessageError(resp); - } else { - - this.safeAudit.setLrecord((List) resp.get(this.safeAudit.getBeanalias())); - this.auditinsdel.setLrecord((List) resp.get(this.auditinsdel.getBeanalias())); - - this.safeAudit.postQuery(this.safeAudit.getLrecord()); - this.auditinsdel.postQuery(this.auditinsdel.getLrecord()); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openUserLov() { - Map> params = new HashMap<>(); - UserLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnUserLov(SelectEvent event) throws Exception { - TsafeUserDetail t = (TsafeUserDetail) event.getObject(); - this.setUser(t.getPk().getUsercode()); - this.setUserName(t.getModifiedData().get("personname") != null ? t.getModifiedData().get("personname").toString() : ""); - this.auditinsdel.addFilter("usercode", this.user); - this.safeAudit.addFilter("usercode", this.user); - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openTransactionLov() { - if ((this.moduleCode != null) && !this.moduleCode.isEmpty()) { - Map> params = new HashMap<>(); - List lmodule = new ArrayList<>(); - lmodule.add(this.moduleCode); - params.put("moduleCode", lmodule); - TransactionLovController.openLov(params); - } else { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - this.setTransactionmodule(t.getPk().getTransactionmodule()); - this.setTransactioncode(t.getPk().getTransactioncode().toString()); - this.setTransactionname(t.getName()); - this.setTransactionversion(t.getPk().getTransactionversion().toString()); - this.auditinsdel.addFilter("transactionmodule", this.transactioncode); - this.safeAudit.addFilter("transactionmodule", this.transactioncode); - } - - /** - */ - public void openEntityLov() { - Map> params = new HashMap<>(); - List logList = new ArrayList<>(); - logList.add("1"); - params.put("log", logList); - EntityLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnEntityLov(SelectEvent event) throws Exception { - TgeneEntity t = (TgeneEntity) event.getObject(); - this.setEntityName(t.getPk().getTname()); - this.auditinsdel.addFilter("pk.tablename", this.entityName); - this.safeAudit.addFilter("pk.tablename", this.entityName); - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.setClientCode(t.getPk().getPersoncode().toString()); - this.setClientName(t.getName()); - this.auditinsdel.addFilter("personcode", this.clientCode); - this.safeAudit.addFilter("personcode", this.clientCode); - - } - - /** - * Listener del lov de transacciones - */ - public void listenerTransaction() { - this.transactionmodule = null; - this.transactioncode = null; - this.transactionname = null; - this.auditinsdel.addFilter("transactionmodule", this.moduleCode); - this.safeAudit.addFilter("transactionmodule", this.moduleCode); - } - - /** - * Metodo que llama al reporte en xlsx - */ - public void generateXls() { - this.generateReport("general/reports/auditoria_final", "Auditoria", "xlsx"); - - } - - /** - * Metodo de envio de parametros del reporte - * - * @param name - * @param filename - * @param format - */ - private void generateReport(String name, String filename, String format) { - String path = name; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("dateFrom", this.dateFrom.toString()); - parameters.put("dateTo", this.dateTo.toString()); - parameters.put("userCode", this.user); - parameters.put("transactionModule", this.transactionmodule); - if(moduleCode!=null && transactionmodule==null){ - parameters.put("transactionModule", moduleCode); - } - parameters.put("transactionCode", this.transactioncode); - parameters.put("tableName", this.entityName); - parameters.put("personcode", this.clientCode); - parameters.put("transactionVersion", this.transactionversion); - parameters.put("company", Integer.parseInt(super.getLoginController().getRequest().getCompany().toString())); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - if (format == null) { - format = "pdf"; - } - try { - if (format.equals("xlsx") || format.equals("xls")) { - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } else { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo que llama al reporte en pdf - */ - public void generateAudit() { - this.generateReport("general/reports/auditoria_final", "Auditoria", null); - } - - public Date getDateFrom() { - return this.dateFrom; - } - - /** - * Validacion de los 7 dias para el calendario - */ - public void initDatesTo() { - if (this.dateFrom != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(this.dateFrom); - calendar.add(Calendar.DATE, 6); - this.maxDateTo = calendar.getTime(); - } - - } - - /** - * Validacion de los 7 dias para el calendario - */ - public void initDatesFrom() { - if (this.dateTo != null) { - Calendar calendarTo = Calendar.getInstance(); - calendarTo.setTime(this.dateTo); - calendarTo.add(Calendar.DATE, -6); - this.minDateFrom = calendarTo.getTime(); - } - - } - - public void setDateFrom(Date dateFrom) { - this.dateFrom = dateFrom; - } - - public Date getDateTo() { - return this.dateTo; - } - - public void setDateTo(Date dateTo) { - this.dateTo = dateTo; - } - - public String getTransactioncode() { - return this.transactioncode; - } - - public void setTransactioncode(String transactioncode) { - this.transactioncode = transactioncode; - } - - public String getTransactionmodule() { - return this.transactionmodule; - } - - public void setTransactionmodule(String transactionmodule) { - this.transactionmodule = transactionmodule; - } - - public String getTransactionname() { - return this.transactionname; - } - - public void setTransactionname(String transactionname) { - this.transactionname = transactionname; - } - - public String getEntityName() { - return this.entityName; - } - - public void setEntityName(String entityName) { - this.entityName = entityName; - } - - public String getClientCode() { - return this.clientCode; - } - - public void setClientCode(String clientCode) { - this.clientCode = clientCode; - } - - public String getClientName() { - return this.clientName; - } - - public void setClientName(String clientName) { - this.clientName = clientName; - } - - public String getModuleCode() { - return this.moduleCode; - } - - public void setModuleCode(String moduleCode) { - this.moduleCode = moduleCode; - } - - public List getListModule() { - return this.listModule; - } - - public void setListModule(List listModule) { - this.listModule = listModule; - } - - public String getUser() { - return this.user; - } - - public void setUser(String user) { - this.user = user; - } - - public String getUserName() { - return this.userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public SafeAuditController getSafeAudit() { - return this.safeAudit; - } - - public void setSafeAudit(SafeAuditController safeAudit) { - this.safeAudit = safeAudit; - } - - public ReportController getReportController() { - return this.reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getTransactionversion() { - return this.transactionversion; - } - - public void setTransactionversion(String transactionversion) { - this.transactionversion = transactionversion; - } - - public AuditInsDelController getAuditinsdel() { - return this.auditinsdel; - } - - public void setAuditinsdel(AuditInsDelController auditinsdel) { - this.auditinsdel = auditinsdel; - } - - /** - * @return the maxDateTo - */ - public Date getMaxDateTo() { - return this.maxDateTo; - } - - /** - * @param maxDateTo - * the maxDateTo to set - */ - public void setMaxDateTo(Date maxDateTo) { - this.maxDateTo = maxDateTo; - } - - public Date getMinDateFrom() { - return this.minDateFrom; - } - - public void setMinDateFrom(Date minDateFrom) { - this.minDateFrom = minDateFrom; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.svn-base deleted file mode 100644 index a8342ca..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/general/audit/.svn/text-base/AuditReportController.java.svn-base +++ /dev/null @@ -1,511 +0,0 @@ -package com.fp.frontend.controller.general.audit; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.lov.EntityLovController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.controller.pgeneral.lov.UserLovController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.controller.pgeneral.safe.AuditInsDelController; -import com.fp.frontend.controller.pgeneral.safe.SafeAuditController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneEntity; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.safe.TsafeAudit; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase que se utliza para la llanada del reporte de Auditoria - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AuditReportController extends AbstractController { - - /** - * Fecha desde - */ - private Date dateFrom; - - /** - * Fecha desde - */ - private Date maxDateTo; - - private Date minDateFrom; - /** - * Fecha hasta - */ - private Date dateTo; - - private String user; - - private String userName; - - private String transactioncode; - - private String transactionmodule; - - private String transactionname; - - private String transactionversion; - - private String entityName; - - private String clientCode; - - private String clientName; - - private String moduleCode; - - private List listModule; - - @ManagedProperty(value = "#{safeAuditController}") - private SafeAuditController safeAudit; - - @ManagedProperty(value = "#{auditInsDelController}") - private AuditInsDelController auditinsdel; - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - public AuditReportController() throws Exception { - super(AbstractDataTransport.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - private void init() { - try { - - this.lrecord = new ArrayList<>(); - this.beanalias = "REPORTAUDIT"; - this.recperpage = 15; - this.listModule = ModuleController.find(); - // this.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dtoQuerySafeUpdate = this.safeAudit.getDtoSafeAudit(); - DtoQuery dtoinsdel = this.auditinsdel.getDtoAuditInsDel(); - if ((this.dateFrom != null) && (this.dateTo != null)) { - Filter f = null; - f = new Filter(); - f.setSql("t.pk.changedate >= to_date('" + this.dateFrom + "', 'yyyy-MM-dd') and t.pk.changedate <= to_date('" + this.dateTo - + "', 'yyyy-MM-dd') "); - dtoinsdel.addFiltro(f); - dtoQuerySafeUpdate.addFiltro(f); - } - - HashMap mtables = new HashMap(); - mtables.put(this.safeAudit.getBeanalias(), dtoQuerySafeUpdate); - mtables.put(this.auditinsdel.getBeanalias(), dtoinsdel); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList<>(); - this.safeAudit.setLrecord(new ArrayList()); - this.auditinsdel.setLrecord(new ArrayList()); - MessageHelper.setMessageError(resp); - } else { - - this.safeAudit.setLrecord((List) resp.get(this.safeAudit.getBeanalias())); - this.auditinsdel.setLrecord((List) resp.get(this.auditinsdel.getBeanalias())); - - this.safeAudit.postQuery(this.safeAudit.getLrecord()); - this.auditinsdel.postQuery(this.auditinsdel.getLrecord()); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openUserLov() { - Map> params = new HashMap<>(); - UserLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnUserLov(SelectEvent event) throws Exception { - TsafeUserDetail t = (TsafeUserDetail) event.getObject(); - this.setUser(t.getPk().getUsercode()); - this.setUserName(t.getModifiedData().get("personname") != null ? t.getModifiedData().get("personname").toString() : ""); - this.auditinsdel.addFilter("usercode", this.user); - this.safeAudit.addFilter("usercode", this.user); - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openTransactionLov() { - if ((this.moduleCode != null) && !this.moduleCode.isEmpty()) { - Map> params = new HashMap<>(); - List lmodule = new ArrayList<>(); - lmodule.add(this.moduleCode); - params.put("moduleCode", lmodule); - TransactionLovController.openLov(params); - } else { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - this.setTransactionmodule(t.getPk().getTransactionmodule()); - this.setTransactioncode(t.getPk().getTransactioncode().toString()); - this.setTransactionname(t.getName()); - this.setTransactionversion(t.getPk().getTransactionversion().toString()); - this.auditinsdel.addFilter("transactionmodule", this.transactioncode); - this.safeAudit.addFilter("transactionmodule", this.transactioncode); - } - - /** - */ - public void openEntityLov() { - Map> params = new HashMap<>(); - List logList = new ArrayList<>(); - logList.add("1"); - params.put("log", logList); - EntityLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnEntityLov(SelectEvent event) throws Exception { - TgeneEntity t = (TgeneEntity) event.getObject(); - this.setEntityName(t.getPk().getTname()); - this.auditinsdel.addFilter("pk.tablename", this.entityName); - this.safeAudit.addFilter("pk.tablename", this.entityName); - } - - /** - * Metodo que obtiene abre el lov de Personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - /** - * Metodo que pega los valores del lov de personas - * - * @param event - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.setClientCode(t.getPk().getPersoncode().toString()); - this.setClientName(t.getName()); - this.auditinsdel.addFilter("personcode", this.clientCode); - this.safeAudit.addFilter("personcode", this.clientCode); - - } - - /** - * Listener del lov de transacciones - */ - public void listenerTransaction() { - this.transactionmodule = null; - this.transactioncode = null; - this.transactionname = null; - this.auditinsdel.addFilter("transactionmodule", this.moduleCode); - this.safeAudit.addFilter("transactionmodule", this.moduleCode); - } - - /** - * Metodo que llama al reporte en xlsx - */ - public void generateXls() { - this.generateReport("general/reports/auditoria_final", "Auditoria", "xlsx"); - - } - - /** - * Metodo de envio de parametros del reporte - * - * @param name - * @param filename - * @param format - */ - private void generateReport(String name, String filename, String format) { - String path = name; - - // Fija parametros del report. - HashMap parameters = new HashMap<>(); - parameters.put("dateFrom", this.dateFrom.toString()); - parameters.put("dateTo", this.dateTo.toString()); - parameters.put("userCode", this.user); - parameters.put("transactionModule", this.transactionmodule); - if(moduleCode!=null && transactionmodule==null){ - parameters.put("transactionModule", moduleCode); - } - parameters.put("transactionCode", this.transactioncode); - parameters.put("tableName", this.entityName); - parameters.put("personcode", this.clientCode); - parameters.put("transactionVersion", this.transactionversion); - parameters.put("company", Integer.parseInt(super.getLoginController().getRequest().getCompany().toString())); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - - if (format == null) { - format = "pdf"; - } - try { - if (format.equals("xlsx") || format.equals("xls")) { - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } else { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } - - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Metodo que llama al reporte en pdf - */ - public void generateAudit() { - this.generateReport("general/reports/auditoria_final", "Auditoria", null); - } - - public Date getDateFrom() { - return this.dateFrom; - } - - /** - * Validacion de los 7 dias para el calendario - */ - public void initDatesTo() { - if (this.dateFrom != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(this.dateFrom); - calendar.add(Calendar.DATE, 6); - this.maxDateTo = calendar.getTime(); - } - - } - - /** - * Validacion de los 7 dias para el calendario - */ - public void initDatesFrom() { - if (this.dateTo != null) { - Calendar calendarTo = Calendar.getInstance(); - calendarTo.setTime(this.dateTo); - calendarTo.add(Calendar.DATE, -6); - this.minDateFrom = calendarTo.getTime(); - } - - } - - public void setDateFrom(Date dateFrom) { - this.dateFrom = dateFrom; - } - - public Date getDateTo() { - return this.dateTo; - } - - public void setDateTo(Date dateTo) { - this.dateTo = dateTo; - } - - public String getTransactioncode() { - return this.transactioncode; - } - - public void setTransactioncode(String transactioncode) { - this.transactioncode = transactioncode; - } - - public String getTransactionmodule() { - return this.transactionmodule; - } - - public void setTransactionmodule(String transactionmodule) { - this.transactionmodule = transactionmodule; - } - - public String getTransactionname() { - return this.transactionname; - } - - public void setTransactionname(String transactionname) { - this.transactionname = transactionname; - } - - public String getEntityName() { - return this.entityName; - } - - public void setEntityName(String entityName) { - this.entityName = entityName; - } - - public String getClientCode() { - return this.clientCode; - } - - public void setClientCode(String clientCode) { - this.clientCode = clientCode; - } - - public String getClientName() { - return this.clientName; - } - - public void setClientName(String clientName) { - this.clientName = clientName; - } - - public String getModuleCode() { - return this.moduleCode; - } - - public void setModuleCode(String moduleCode) { - this.moduleCode = moduleCode; - } - - public List getListModule() { - return this.listModule; - } - - public void setListModule(List listModule) { - this.listModule = listModule; - } - - public String getUser() { - return this.user; - } - - public void setUser(String user) { - this.user = user; - } - - public String getUserName() { - return this.userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - - public SafeAuditController getSafeAudit() { - return this.safeAudit; - } - - public void setSafeAudit(SafeAuditController safeAudit) { - this.safeAudit = safeAudit; - } - - public ReportController getReportController() { - return this.reportController; - } - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public String getTransactionversion() { - return this.transactionversion; - } - - public void setTransactionversion(String transactionversion) { - this.transactionversion = transactionversion; - } - - public AuditInsDelController getAuditinsdel() { - return this.auditinsdel; - } - - public void setAuditinsdel(AuditInsDelController auditinsdel) { - this.auditinsdel = auditinsdel; - } - - /** - * @return the maxDateTo - */ - public Date getMaxDateTo() { - return this.maxDateTo; - } - - /** - * @param maxDateTo - * the maxDateTo to set - */ - public void setMaxDateTo(Date maxDateTo) { - this.maxDateTo = maxDateTo; - } - - public Date getMinDateFrom() { - return this.minDateFrom; - } - - public void setMinDateFrom(Date minDateFrom) { - this.minDateFrom = minDateFrom; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pbpm/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pbpm/.svn/entries deleted file mode 100644 index 59d19b3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pbpm/.svn/entries +++ /dev/null @@ -1,31 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pbpm -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -lov -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/entries deleted file mode 100644 index 253cbd5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TbpmFlowsLovController.java -file - - - - -2022-07-28T03:39:55.839600Z -d99e84716cf8028f578618b71554478d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3530 - -TbpmRulesLovController.java -file - - - - -2022-07-28T03:39:55.840600Z -99baf337ed5c45b258fed79dee6c9c38 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3855 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmFlowsLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmFlowsLovController.java.svn-base deleted file mode 100644 index 49ecff9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmFlowsLovController.java.svn-base +++ /dev/null @@ -1,109 +0,0 @@ -package com.fp.frontend.controller.pbpm.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmFlows; - -/** - * Clase controladora del lov asociado al bean TbpmFlows. - * - * @author Andres E. Carpio. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TbpmFlowsLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TbpmFlowsLovController() throws Exception { - super(TbpmFlows.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMFLOWSLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - super.addFilter("pk.companycode", this.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.flowcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setTbpmFlows() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setTbpmFlows(TbpmFlows tbpmFlows) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 580); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/bpmFlowsLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmRulesLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmRulesLovController.java.svn-base deleted file mode 100644 index 946c74a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pbpm/lov/.svn/text-base/TbpmRulesLovController.java.svn-base +++ /dev/null @@ -1,117 +0,0 @@ -package com.fp.frontend.controller.pbpm.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmRules; - -/** - * Clase controladora del lov asociado al bean TbpmRules. - * - * @author Andres E. Carpio. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TbpmRulesLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TbpmRulesLovController() throws Exception { - super(TbpmRules.class); - } - - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //FileType - String filetype = CallerHelper.getLovParameter("filetype"); - if(filetype==null){ - MessageHelper.setMessageError("msg_fileTypeNotFound"); - return; - } - super.addFilter("filetype", filetype); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TBPMRULESLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - super.addFilter("pk.companycode", this.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.rulecode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setTbpmRules() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setTbpmRules(TbpmRules tbpmRules) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tbpmRules); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 580); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/bpmRulesLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/entries deleted file mode 100644 index b08e9b0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/entries +++ /dev/null @@ -1,371 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pcustomer -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -lov -dir - -PersonAddressController.java -file - - - - -2022-07-28T03:39:46.529560Z -88b06592a862b10a5613b5d77800f2ae -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -24054 - -JuridicalPersonController.java -file - - - - -2022-07-28T03:39:46.529560Z -0d19c4ef80508f85e10e94cb056b0199 -2015-10-19T06:22:25.984481Z -4297 -fpazmino - - - - - - - - - - - - - - - - - - - - - -33431 - -PersonPhoneController.java -file - - - - -2022-07-28T03:39:46.530560Z -376049e2047363ce56345aa8175c7728 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -9240 - -PersonViewController.java -file - - - - -2022-07-28T03:39:46.530560Z -d270ccbc550f7f159815e3f388d12ffb -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -8878 - -FileDetailController.java -file - - - - -2022-07-28T03:39:46.530560Z -2ec7962fdbb7e7c5c0d4eff5e44b32f0 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4084 - -PeopleFastController.java -file - - - - -2022-07-28T03:39:46.531560Z -30efd6187f8a05b36029f6dbd60032e8 -2015-06-23T07:23:37.626271Z -4132 -cpiedra - - - - - - - - - - - - - - - - - - - - - -34811 - -PersonViewLovController.java -file - - - - -2022-07-28T03:39:46.531560Z -e3d1e26c094d4edd9dae883cf46902dc -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4348 - -PeopleController.java -file - - - - -2022-07-28T03:39:46.531560Z -9b2b2a5056f6fd0c80aff442f97cd3ff -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5503 - -CompanyController.java -file - - - - -2022-07-28T03:39:46.532560Z -4a75bc75802dbb190af3af6c742658d5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7934 - -PersonDetailController.java -file - - - - -2022-07-28T03:39:46.532560Z -36fbdea2f516f763537da5fe8eae45f3 -2014-12-22T07:26:40.587822Z -3616 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8701 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/CompanyController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/CompanyController.java.svn-base deleted file mode 100644 index a364cf9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/CompanyController.java.svn-base +++ /dev/null @@ -1,300 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TcustCompany - * - * @author MAV. - * @version 1.0 - */ -@ManagedBean -@ViewScoped -public class CompanyController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String personcode; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de tipo de empresa - * - */ - private List lbusinesstype; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de clases de empresa - */ - private List lbussinesclass; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de tipo de institucion - */ - private List linstitutiontype; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de estdo de operatividad - */ - private List loperativestatus; - - - public CompanyController() throws Exception { - super(TcustCompany.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lbusinesstype = CatalogDetailController.find("BUSINESSTYPE"); - this.lbussinesclass = CatalogDetailController.find("BUSINESSCLASS"); - this.linstitutiontype = CatalogDetailController.find("PERSONTYPE"); - this.loperativestatus = CatalogDetailController.find("OPERATIVESTATUS"); - } - - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - super.create(); - this.beanalias = "TCUSTCOMPANY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Agrega un par´metro para la conulta - * - * @param personcode - * Código de company - */ - public void addPersoncodeFilter(String personcode) { - this.personcode = personcode; - super.addFilter("pk.personcode", personcode); - this.record.getPk().setPersoncode(Integer.parseInt(personcode)); - } - - /** - * Método para armar la consulta - * - * @return dto Objeto DtoQuery - * @throws Exception - */ - public DtoQuery getDtoQuery() throws Exception { - super.addFilterDateto(); - DtoQuery dto = super.getDtoQuery(false); - - SubQuery institutiontype = new SubQuery( - "TgeneCatalogDetail", - "description", - "institutiontypedesc", - "i.pk.catalog = t.institutiontypecatalog and i.pk.catalogcode= 'INSTITUTIONTYPE' " ); - dto.addSubQuery(institutiontype); - - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = getDtoQuery(true); - - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Controla la respuesta de la consulta - * - * @param resp - * Objeto Response - * @throws Exception - */ - public void manageResponseCompany(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = null; - MessageHelper.setMessageError(resp); - } else { - this.record = (TcustCompany) resp.get(this.beanalias); - if (this.record == null) { - super.create(); - this.record.getPk().setPersoncode( - Integer.parseInt(this.personcode)); - } - super.postQuery(this.record); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Busca una solicitud por su codigo - * @param codigoSolicitud - * @return - */ - public static TcustCompany findByPersonCode(String personCode) { - try { - CompanyController cc = new CompanyController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", personCode); - cc.addFilterDateto(); - cc.querydatabase(); - - if (cc.record != null) { - return cc.record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * @return the personcode - */ - public String getPersoncode() { - return personcode; - } - - /** - * @param personcode the personcode to set - */ - public void setPersoncode(String personcode) { - this.personcode = personcode; - } - - /** - * @return the lbusinesstype - */ - public List getLbusinesstype() { - return lbusinesstype; - } - - /** - * @param lbusinesstype the lbusinesstype to set - */ - public void setLbusinesstype(List lbusinesstype) { - this.lbusinesstype = lbusinesstype; - } - - /** - * @return the lbussinesclass - */ - public List getLbussinesclass() { - return lbussinesclass; - } - - /** - * @param lbussinesclass the lbussinesclass to set - */ - public void setLbussinesclass(List lbussinesclass) { - this.lbussinesclass = lbussinesclass; - } - - /** - * @return the linstitutiontype - */ - public List getLinstitutiontype() { - return linstitutiontype; - } - - /** - * @param linstitutiontype the linstitutiontype to set - */ - public void setLinstitutiontype(List linstitutiontype) { - this.linstitutiontype = linstitutiontype; - } - - /** - * @return the loperativestatus - */ - public List getLoperativestatus() { - return loperativestatus; - } - - /** - * @param loperativestatus the loperativestatus to set - */ - public void setLoperativestatus(List loperativestatus) { - this.loperativestatus = loperativestatus; - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/FileDetailController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/FileDetailController.java.svn-base deleted file mode 100644 index 25e8eb2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/FileDetailController.java.svn-base +++ /dev/null @@ -1,132 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; - -/** - * Clase controladora del bean TcustPersonAddress. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class FileDetailController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public FileDetailController() throws Exception { - super(TgeneFilesDetail.class); - } - - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "FILEDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para encontrar por codigo de imagen - * @param imagecode - * @return - */ - public static TgeneFilesDetail find(String imagecode) { - try { - if(imagecode==null){ - return null; - } - FileDetailController cc = new FileDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.code", imagecode); - cc.addFilterDateto(); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/JuridicalPersonController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/JuridicalPersonController.java.svn-base deleted file mode 100644 index aeb47c1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/JuridicalPersonController.java.svn-base +++ /dev/null @@ -1,973 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.lang.reflect.Field; -import java.sql.Timestamp; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.imageio.ImageIO; -import javax.servlet.ServletContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.FlowEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.DefaultStreamedContent; -import org.primefaces.model.StreamedContent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.JuridicalPersonLovController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.date.TgeneAccountingDateBranchController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.LanguageController; -import com.fp.frontend.controller.pgeneral.lov.ActivityLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TgeneActivity; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneLanguage; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de JuridicalPerson. - * - * @author MAV. - * @version 1.0 - */ -@ManagedBean -@ViewScoped -public class JuridicalPersonController extends AbstractController { - - private static final long serialVersionUID = 1L; - - - @ManagedProperty(value = "#{companyController}") - private CompanyController companyController; - - @ManagedProperty(value = "#{peopleFastController}") - private PeopleFastController peopleFastController; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController addressController; - - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController phonesController; - - @ManagedProperty(value = "#{fileDetailController}") - private FileDetailController fileDetail; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificacion - */ - private List lidentification; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de tipo de cliente - */ - private List ltypeclient; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de sector - * económico - */ - private List leconomicsector; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de actividad no - * económica - */ - private List lnotactivity; - - /** - * Atributo para el listado de géneros - */ - private List lgender; - - /** - * Atributo para el listado de idiomas - */ - private List llenguage; - - /** - * Atributo para activar el keyFilter - */ - private boolean activeRegEx; - - /** - * Atributo para la longitud de la identificación - */ - private String lengthId; - - /** - * atributo para el código de persona - */ - private String personcode; - - private Boolean existingperson; - - /** - * Atributo para deshabilitar el boton save - */ - private Boolean isDisableSave = Boolean.FALSE; - - /** - * Atributo para el control de checkBox exencto de impuesto a la renta - */ - private boolean exentoImpuesto; - - /** - * Atributos relacionados con el logo - */ - UploadedFile selectedPicture; - Boolean fotoCargada=false; - StreamedContent foto; - String rutaFoto; - - private String extensionFoto = "jpg"; - - private String imageUrl; - - TsafeUserDetail usuario; - - List fileH = new ArrayList(); - - public JuridicalPersonController() throws Exception { - super(TcustPersonDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.lengthId = "13"; - this.init(); - //super.buildTransactionPages("juridicalPersonController"); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.create(); - this.lrecord = new ArrayList<>(); - this.record=new TcustPersonDetail(); - this.record.setIsnew(true); - this.beanalias = "JURIDICALPERSONCONTROLLER"; - - this.companyController.create(); - this.companyController.setRecord(new TcustCompany()); - this.companyController.getRecord().setIsnew(true); - - this.addressController.create(); - this.addressController.setRecord(new TcustPersonAddress()); - this.addressController.getRecord().setIsnew(true); - - this.phonesController.create(); - this.phonesController.setRecord(new TcustPersonPhone()); - this.phonesController.getRecord().setIsnew(true); - - //Llenando las listas - this.lidentification = CatalogDetailController.find("IDENTIFICATION","2"); - this.leconomicsector = CatalogDetailController.find("ECONOMICSECTOR"); - this.ltypeclient = CatalogDetailController.findClientType("CLIENTTYPE", "2"); - this.lnotactivity = CatalogDetailController.find("NOTACTIVITY"); - this.lgender = CatalogDetailController.getListGender(); - this.llenguage = LanguageController.find(); - this.getRecord().setLanguagecode("ES"); - - //Obteniendo los datos del usuario logueado - usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - if(super.getMfilters().get("pk.personcode")==null || super.getMfilters().get("pk.personcode").equals("null")){ - return; - } - super.addFilterDateto(); - - //Obteniendo la compannia - - TcustCompany compannia=CompanyController.findByPersonCode(super.getMfilters().get("pk.personcode")); - if(compannia!=null){ - this.companyController.setRecord(compannia); - } - - //Obteniendo las direcciones - List direcciones=PersonAddressController.findAllByPersonCode(this.getMfilters().get("pk.personcode")); - this.addressController.setLrecord(direcciones); - - //Obteniendo los telefonos - List telefonos=PersonPhoneController.findAllByPersonCode(this.getMfilters().get("pk.personcode")); - this.phonesController.setLrecord(telefonos); - - Request request = this.callerhelper.getRequest(); - - DtoQuery dto = super.getDtoQuery(false); - - // subqueries - SubQuery subquery = new SubQuery("TgeneActivity", "description", - "activitydesc", "i.pk = t.activitycode"); - dto.addSubQuery(subquery); - - SubQuery subquery1 = new SubQuery("TgeneActivity", - "segmenttypecatalog", "segmenttypecatalog", - "i.pk = t.activitycode"); - dto.addSubQuery(subquery1); - - SubQuery subquery2 = new SubQuery( - "TgeneCatalogDetail", - "description", - "segmentdesc", - "i.pk.catalogcode = 'SEGMENTTYPE' and i.pk.catalog = (select a.segmenttypecatalog from TgeneActivity a where a.pk = t.activitycode)"); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TcustPersonDetail(); - this.companyController.setRecord(new TcustCompany()); - MessageHelper.setMessageError(resp); - } else { - - if(resp.get(this.beanalias)!=null){ - this.record = (TcustPersonDetail) resp.get(this.beanalias); - this.record.setIsnew(false); - } - - if(this.companyController.getRecord()==null) - { - this.companyController.setRecord(new TcustCompany()); - this.companyController.getRecord().setIsnew(true); - }else{ - //Cargando la imagen - if(this.companyController.getRecord()!=null && this.companyController.getRecord().getLogo()!=null){ - - TgeneFilesDetail fileDetalle = fileDetail.find((this.companyController==null || this.companyController.getRecord().getLogo()==null)?null:String.valueOf(this.companyController.getRecord().getLogo())); - extensionFoto = fileDetalle!=null?fileDetalle.getExtension():extensionFoto; - if(fileDetalle!=null && fileDetalle.getImage()!=null){ - InputStream input=new ByteArrayInputStream(fileDetalle.getImage()); - this.foto=new DefaultStreamedContent(input); - this.fotoCargada=true; - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - String tempUrl = servletContext.getRealPath("/");; - String imageName=UUID.randomUUID().toString(); - String imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - BufferedImage image=ImageIO.read(input); - Boolean saved=ImageIO.write(image, extensionFoto, outputfile); - - this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; - } - }else{ - this.fotoCargada=false; - } - - } - } - - - this.personcode = String.valueOf(this.getMfilters().get("pk.personcode")); - -// this.addressController.addPersoncodeFilter(this.personcode); -// this.addressController.addFilterDateto(); -// this.addressController.query(); - - /* - this.phonesController.addPersoncodeFilter(this.personcode); - this.phonesController.addFilterDateto(); - this.phonesController.query();*/ - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void save() { - try { - //Validando las direcciones y telefonos - if (this.addressController.getLrecord().size() == 0) { - MessageHelper.setMessageError("msg_requireAddress"); - return; - }else{ - for (TcustPersonAddress direccion : this.addressController.getLrecord()) { - if(direccion.isnew){ - direccion.setIngressusercode(this.usuario.getPk().getUsercode()); - }else{ - direccion.setModifyusercode(this.usuario.getPk().getUsercode()); - } - } - } - if (this.phonesController.getLrecord().size() == 0) { - MessageHelper.setMessageError("msg_requirePhones"); - return; - }else{ - for (TcustPersonPhone telefono : this.phonesController.getLrecord()) { - if(telefono.isnew){ - telefono.setIngressusercode(this.usuario.getPk().getUsercode()); - }else{ - telefono.setModifyusercode(this.usuario.getPk().getUsercode()); - } - } - } - - //Asignando los campos - this.record.setDatefrom(new Timestamp(Calendar.getInstance().getTimeInMillis())); - this.record.setIdentificationcatalogcode("IDENTIFICATION"); - if(this.record.isnew){ - this.record.setIngressuser(this.usuario.getPk().getUsercode()); - }else{ - this.record.setModifyuser(this.usuario.getPk().getUsercode()); - } - - this.record.setPersontypecatalog("2"); - this.record.setPersontypecatalogcode("PERSONTYPE"); - this.record.setRegisterdate(new java.sql.Date(Calendar.getInstance().getTimeInMillis())); - this.record.setClienttypecatalogcode("CLIENTTYPE"); - this.record.setEconomicsectorcatalogcode("ECONOMICSECTOR"); - - if(this.selectedPicture!=null){ - this.companyController.getRecord().setPicture(this.selectedPicture.getContents()); - } - - DtoSave dtosave = super.getDtoSave(true); - dtosave.setReturnpk(true); - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - dtosave.setPosition(3); - msave.put(this.beanalias, dtosave); - - // DIRECCIONES - DtoSave dtosaveAddress = addressController.getDtoSave(); - dtosaveAddress.setPosition(1); - msave.put(addressController.getBeanalias(), dtosaveAddress); - - // TELEFONOS - DtoSave dtosavePhone = phonesController.getDtoSave(); - dtosavePhone.setPosition(2); - msave.put(phonesController.getBeanalias(), dtosavePhone); - - request.setSaveTables(msave); - - request.getModifiedData().put("PERSON", this.record); - request.getModifiedData().put("COMPANY", this.companyController.getRecord()); - request.getModifiedData().put("ADDRESSES", this.addressController.getLrecord()); - - guardarInformacionImagenes(); - - request.getModifiedData().put("file", fileH); - request.getModifiedData().put("logocode",companyController.getRecord()!=null?companyController.getRecord().getLogo()!= null?companyController.getRecord().getLogo():null:null); - request.getModifiedData().put("pk_personcode", companyController.getRecord()!=null?companyController.getRecord().getPk()!=null?companyController.getRecord().getPk().getPersoncode():null:null); - request.getModifiedData().put("PHONES", this.phonesController.getLrecord()); - - Response resp = this.callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.companyController.postCommit(resp); - this.addressController.postCommit(resp); - this.phonesController.postCommit(resp); - this.personcode = String.valueOf(resp.get("personcode")); - super.addFilter("pk.personcode", this.personcode); - isDisableSave = Boolean.TRUE; - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para guardar informacion de las imagenes en la base de datos - * @throws IOException - */ - private void guardarInformacionImagenes() throws IOException{ - FileHelper archivoPicture = new FileHelper(); - archivoPicture.setName(""); - fileH = new ArrayList(); - - if(selectedPicture!=null){ - long size = selectedPicture.getSize(); - InputStream stream = selectedPicture.getInputstream(); - byte[] buffer = new byte[(int) size]; - stream.read(buffer, 0, (int) size); - stream.close(); - archivoPicture.setContentType(selectedPicture.getContentType()); - archivoPicture.setExtension(extensionFoto); - archivoPicture.setImage(buffer); - archivoPicture.setName(selectedPicture.getFileName()); - archivoPicture.setSize(selectedPicture.getFileName().length()); - } - - fileH.add(archivoPicture); - - } - - /** - * Método que abre el lov de activudad económica - */ - public void openActivityLov() { - Map> params = new HashMap<>(); - ActivityLovController.openLov(params); - } - - @Override - public void forcedQuery() throws Exception { - Field f[] = this.getClass().getDeclaredFields(); - //super.forcedQuery(f, this); - super.forcedQuery(); - } - - /** - * Método para cargar datos en el editar - */ - public void loadEdit(){ - if(this.record.getTaxexempt()!=null) - { - this.exentoImpuesto = this.record.getTaxexempt().equals("Y")?true:false; - } - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangeTaxexempt(){ - if(this.exentoImpuesto){ - this.record.setTaxexempt("Y"); - }else{ - this.record.setTaxexempt("N"); - } - } - - - /** - * Verifica el ingreso de una actividad económica - * - * @param person - * Objeto TcustPersonDetail - * @param people - * Objeto TcustPeople - * @return result V/F - */ - private boolean activity(TcustPersonDetail person, TcustPeople people) { - boolean result = false; - if (((person.getActivitycode() == null) || person.getActivitycode() - .equals("")) - && ((people.getNotactivitycatalog() == null) || people - .getNotactivitycatalog().equals(""))) { - result = true; - } - return result; - } - - /** - * Ejecuta el evento change del combo actividad no económica - */ - public void onChangeNotactivity() { - this.getRecord().setActivitycode(null); - this.getRecord().put("activitydesc", null); - this.getRecord().put("segmenttypecatalog", null); - this.getRecord().put("segmentdesc", null); - } - - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - List juridical = new ArrayList(); - juridical.add("RUC"); - params.put("isJuridical", juridical); - JuridicalPersonLovController.openLov(params); - } - - /** - * Método para abrir el lov de personas - */ - public void openPersonLovComplete() { - Map> params = new HashMap<>(); - - PersonLovController.openLov(params); - } - - - /** - * Método para abrir el lov de Instituciones Finacieras - */ - public void openInstitucionTypeLov() { - Map> params = new HashMap<>(); - // InstitutionTypeLovController.openLov(params); - } - - public void onReturnInstitucionTypeLov(SelectEvent event) throws Exception { - TgeneCatalogDetail t = (TgeneCatalogDetail) event.getObject(); - this.companyController.getRecord().getModifiedData().put("institutiontypedesc", t.getDescription()); - this.companyController.getRecord().setInstitutiontypecatalog(t.getPk().getCatalog()); - this.companyController.getRecord().setInstitutiontypecatalogcode(t.getPk().getCatalogcode()); - - } - - - - /** - * Retorna los valores del lov - * - * @param event - * Evento ajax - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - super.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - super.addField("personname", t.getName()); - super.query(); - } - - /** - * Controla la respuesta del lov de activudad económica - * - * @param event - * @throws Exception - */ - public void onReturnActivityLov(SelectEvent event) throws Exception { - - - TgeneActivity t = (TgeneActivity) event.getObject(); - - super.addField("activitydesc", t.getDescription()); - this.getRecord().setActivitycode(t.getPk()); - this.getRecord().modifiedData.put("activitydesc", - t.getDescription()); - this.getRecord().modifiedData.put("segmenttypecatalog", - t.getSegmenttypecatalog()); - this.getRecord().modifiedData.put("segmentdesc", - t.get("segmentdesc")); - } - - public void onChangeId() { - if (this.getRecord().getIdentificationcatalog() - .compareTo("CED") == 0) { - this.lengthId = "10"; - this.activeRegEx = false; - } else if (this.getRecord().getIdentificationcatalog() - .compareTo("RUC") == 0) { - this.lengthId = "13"; - this.activeRegEx = false; - } else if (this.getRecord().getIdentificationcatalog() - .compareTo("PAS") == 0) { - this.lengthId = "13"; - this.activeRegEx = true; - } - } - - public String onFlowProcess(FlowEvent event) { - - System.out.println("WIZARD NEW "+event.getNewStep()); - System.out.println("WIZARD OLD "+event.getNewStep()); - if(this.getRecord().getActivitycode()==null){ - MessageHelper.setMessageError("msg_requireActivity"); - return event.getOldStep(); - } - return event.getNewStep(); - } - - - public String workingdate() { - String dateString = null; - try { - Date date = TgeneAccountingDateBranchController.find( - this.getLoginController().getRequest().getCompany()) - .getWorkingdate(); - dateString = (new SimpleDateFormat( - MsgGeneral.getProperty("dateformat")).format(date)); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return dateString; - } - - /** - * Metodo que carga la foto - */ - @SuppressWarnings("unused") - public void uploadPicture(FileUploadEvent event){ - try { - selectedPicture = event.getFile(); - - InputStream is=new ByteArrayInputStream(selectedPicture.getContents()); - //this.foto=new DefaultStreamedContent(is, selectedPicture.getContentType(), selectedPicture.getFileName()); - this.foto=new DefaultStreamedContent(event.getFile().getInputstream()); - this.fotoCargada=true; - - //Obteniendo la extension de la imagen - String extension=""; - int pos=-1; - for (int i = selectedPicture.getFileName().length()-1; i>=0; i--) { - if(selectedPicture.getFileName().toCharArray()[i]=='.'){ - pos=i; - break; - } - } - if(pos!=-1){ - extension=selectedPicture.getFileName().substring(pos+1, selectedPicture.getFileName().length()); - } - - //Almacenando la imagen temporalmente -/* ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - String tempUrl = "/resources/images/temp/"; - String imageName=UUID.randomUUID().toString(); - String imageUrl=servletContext.getRealPath(tempUrl)+File.separator+imageName+"."+extension; - File outputfile = new File(imageUrl); - InputStream input=new ByteArrayInputStream(selectedPicture.getContents()); - BufferedImage image=ImageIO.read(input); - Boolean saved=ImageIO.write(image, extension, outputfile); - - this.rutaFoto="/resources/images/temp/"+imageName+"."+extension;*/ - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - - String tempUrl = servletContext.getRealPath("/");; - String imageName=UUID.randomUUID().toString(); - imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - InputStream input=new ByteArrayInputStream(selectedPicture.getContents()); - BufferedImage image=ImageIO.read(input); - Boolean saved=ImageIO.write(image, extensionFoto, outputfile); - this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Entrega lista de objetos TgeneCatalogDetail tipo de identificación - * - * @return lidentification Lista de objetos TgeneCatalogDetail - */ - public List getLidentification() { - return this.lidentification; - } - - /** - * Fija lista de objetos TgeneCatalogDetail tipo de identificación - * - * @param lidentification - * Lista de objetos TgeneCatalogDetail - */ - public void setLidentification(List lidentification) { - this.lidentification = lidentification; - } - - /** - * Entrega Verdadero/Falso - * - * @return activeNotEconomic V/F - */ - public boolean isActiveRegEx() { - return this.activeRegEx; - } - - /** - * Fija Verdadero/Falso - * - * @param activeNotEconomic - * V/F - */ - public void setActiveRegEx(boolean activeRegEx) { - this.activeRegEx = activeRegEx; - } - - /** - * Entrega el número de digitos para el tipo de identificaci&oacuye;n - * - * @return lengthId Número de digitos - */ - public String getLengthId() { - return this.lengthId; - } - - /** - * Fija el número de digitos para el tipo de identificaci&oacuye;n - * - * @param lengthId - * Número de digitos - */ - public void setLengthId(String lengthId) { - this.lengthId = lengthId; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail de sector económico - * - * @return leconomicsector Lista de objetos TgeneCatalogDetail - */ - public List getLeconomicsector() { - return this.leconomicsector; - } - - /** - * Fija lista de objetos TgeneCatalogDetail de sector económico - * - * @param leconomicsector - * Lista de objetos TgeneCatalogDetail - */ - public void setLeconomicsector(List leconomicsector) { - this.leconomicsector = leconomicsector; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail de tipo cliente - * - * @return ltypeclient Lista de objetos TgeneCatalogDetail - */ - public List getLtypeclient() { - return this.ltypeclient; - } - - /** - * Fija lista de objetos TgeneCatalogDetail de tipo cliente - * - * @param ltypeclient - * Lista de objetos TgeneCatalogDetail - */ - public void setLtypeclient(List ltypeclient) { - this.ltypeclient = ltypeclient; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail - * - * @return lnotactivity Lista de objetos TgeneCatalogDetail - */ - public List getLnotactivity() { - return this.lnotactivity; - } - - /** - * Fija lista de objetos TgeneCatalogDetail - * - * @param lnotactivity - * Lista de objetos TgeneCatalogDetail - */ - public void setLnotactivity(List lnotactivity) { - this.lnotactivity = lnotactivity; - } - - /** - * Entrega la lista de géneros - * - * @return lgender Lista de géneros - */ - public List getLgender() { - return this.lgender; - } - - /** - * Fija la lista de géneros - * - * @param lgender - * Lista de géneros - */ - public void setLgender(List lgender) { - this.lgender = lgender; - } - - public List getLlenguage() { - return llenguage; - } - - public void setLlenguage(List llenguage) { - this.llenguage = llenguage; - } - - public Boolean getExistingperson() { - return existingperson; - } - - public void setExistingperson(Boolean existingperson) { - this.existingperson = existingperson; - } - /** - * @return the personcode - */ - public String getPersoncode() { - return personcode; - } - - /** - * @param personcode the personcode to set - */ - public void setPersoncode(String personcode) { - this.personcode = personcode; - } - - /** - * @return the exentoImpuesto - */ - public boolean isExentoImpuesto() { - return exentoImpuesto; - } - - /** - * @param exentoImpuesto the exentoImpuesto to set - */ - public void setExentoImpuesto(boolean exentoImpuesto) { - this.exentoImpuesto = exentoImpuesto; - } - - public PeopleFastController getPeopleFastController() { - return peopleFastController; - } - - public void setPeopleFastController(PeopleFastController peopleFastController) { - this.peopleFastController = peopleFastController; - } - - public UploadedFile getSelectedPicture() { - return selectedPicture; - } - - public void setSelectedPicture(UploadedFile selectedPicture) { - this.selectedPicture = selectedPicture; - } - - public Boolean getFotoCargada() { - return fotoCargada; - } - - public void setFotoCargada(Boolean fotoCargada) { - this.fotoCargada = fotoCargada; - } - - public StreamedContent getFoto() { - return foto; - } - - public void setFoto(StreamedContent foto) { - this.foto = foto; - } - - public String getRutaFoto() { - return rutaFoto; - } - - public void setRutaFoto(String rutaFoto) { - this.rutaFoto = rutaFoto; - } - - public CompanyController getCompanyController() { - return companyController; - } - - public void setCompanyController(CompanyController companyController) { - this.companyController = companyController; - } - - public PersonAddressController getAddressController() { - return addressController; - } - - public void setAddressController(PersonAddressController addressController) { - this.addressController = addressController; - } - - public PersonPhoneController getPhonesController() { - return phonesController; - } - - public void setPhonesController(PersonPhoneController phonesController) { - this.phonesController = phonesController; - } - - public FileDetailController getFileDetail() { - return fileDetail; - } - - public void setFileDetail(FileDetailController fileDetail) { - this.fileDetail = fileDetail; - } - - public TsafeUserDetail getUsuario() { - return usuario; - } - - public void setUsuario(TsafeUserDetail usuario) { - this.usuario = usuario; - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public Boolean getIsDisableSave() { - return isDisableSave; - } - - public void setIsDisableSave(Boolean isDisableSave) { - this.isDisableSave = isDisableSave; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleController.java.svn-base deleted file mode 100644 index dd4ec32..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleController.java.svn-base +++ /dev/null @@ -1,169 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.people.TcustPeople; - -/** - * Clase controladora del bean TcustPeople. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PeopleController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private String personcode; - - public PeopleController() throws Exception { - super(TcustPeople.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - super.create(); - beanalias = "TCUSTPEOPLE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Agrega un par´metro para la conulta - * - * @param personcode Código de persona - */ - public void addPersoncodeFilter(String personcode) { - this.personcode = personcode; - super.addFilter("pk.personcode", personcode); - record.getPk().setPersoncode(Integer.parseInt(personcode)); - } - - /** - * Método para armar la consulta - * - * @return dto Objeto DtoQuery - * @throws Exception - */ - public DtoQuery getDtoQuery() throws Exception { - super.addFilterDateto(); - DtoQuery dto = super.getDtoQuery(false); - - // subqueries - // SubQuery subquery = new SubQuery("TgeneChannels", "description", "chanelname", "i.pk = t.channelcode"); - // dto.addSubQuery(subquery); - return dto; - } - - @Override - protected void querydatabase() { - try { - Request request = callerhelper.getRequest(); - super.addFilterDateto(); - DtoQuery dto = this.getDtoQuery(); - - SubQuery subqueryprof = new SubQuery("TgeneCatalogDetail", "description", "nprofesion", - "i.pk.catalogcode = 'PROFESSION' and i.pk.catalog = t.professioncatalog"); - dto.addSubQuery(subqueryprof); - - SubQuery subqueryestciv = new SubQuery("TgeneCatalogDetail", "description", "nestcivil", - "i.pk.catalogcode = 'MARITALSTATUS' and i.pk.catalog = t.maritalstatuscatalog"); - dto.addSubQuery(subqueryestciv); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - this.manageResponsePeople(resp); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Controla la respuesta de la consulta - * - * @param resp Objeto Response - * @throws Exception - */ - public void manageResponsePeople(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - record = null; - MessageHelper.setMessageError(resp); - return; - } else { - record = (TcustPeople) resp.get(beanalias); - if (record == null) { - super.create(); - record.getPk().setPersoncode(Integer.parseInt(personcode)); - } - } - if (record.getGender() != null && record.getGender().equals("M")) { - record.modifiedData.put("ngenero", "MASCULINO"); - } else if (record.getGender() != null && record.getGender().equals("F")) { - record.modifiedData.put("ngenero", "FEMENINO"); - } - - super.postQuery(record); - } - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleFastController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleFastController.java.svn-base deleted file mode 100644 index 864328e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PeopleFastController.java.svn-base +++ /dev/null @@ -1,1020 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.awt.image.BufferedImage; -import java.io.ByteArrayInputStream; -import java.io.File; -import java.io.IOException; -import java.io.InputStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import java.util.UUID; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.imageio.ImageIO; -import javax.servlet.ServletContext; - -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; -import org.primefaces.model.DefaultStreamedContent; -import org.primefaces.model.StreamedContent; -import org.primefaces.model.UploadedFile; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.helper.FileHelper; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.lov.ActivityLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TgeneActivity; -import com.fp.persistence.pcustomer.people.TcustPeople; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.image.TgeneFilesDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PeopleFastController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{personDetailController}") - private PersonDetailController persondetail; - - @ManagedProperty(value = "#{peopleController}") - private PeopleController people; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController address; - - @ManagedProperty(value = "#{personPhoneController}") - private PersonPhoneController phones; - - @ManagedProperty(value = "#{fileDetailController}") - private FileDetailController fileDetail; - - private List direccionesEliminadas=new ArrayList(); - private List telefonosEliminados=new ArrayList(); - private List profesionList = new ArrayList(); - private List estadocivilList = new ArrayList(); - private List militarygrades; - - /** - * Id de profesion - */ - private String idProfesion; - - /** - * Estado civil - */ - private String idEstadoCivil; - - private String imageUrl; - - - - public PeopleFastController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificacion - */ - private List lidentification; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de tipo de cliente - */ - private List ltypeclient; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de sector económico - */ - private List leconomicsector; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de actividad no económica - */ - private List lnotactivity; - - /** - * Atributo para el listado de géneros - */ - private List lgender; - - /** - * Atributo para activar el keyFilter - */ - private boolean activeRegEx; - - /** - * Atributo para la longitud de la identificación - */ - private String lengthId; - - /** - * atributo para el código de persona - */ - private String personcode; - - private boolean flagHabilita; - - /** - * Atributo para la firma digital - */ - UploadedFile selectedSign; - Boolean firmaCargada=false; - StreamedContent firma; - String rutaFirma; - TsafeUserDetail usuario; - - UploadedFile selectedPicture; - Boolean fotoCargada=false; - StreamedContent foto; - String rutaFoto; - String extensionFoto = "jpg"; - String extensionFirma = "jpg"; - List fileH = new ArrayList(); - - @PostConstruct - private void postconstruct() { - - this.lengthId = "10"; - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - // LLenamos Listas - this.lidentification = CatalogDetailController.find("IDENTIFICATION", "1"); - this.leconomicsector = CatalogDetailController.find("ECONOMICSECTOR"); - this.ltypeclient = CatalogDetailController.find("PERSONTYPE"); - this.lnotactivity = CatalogDetailController.find("NOTACTIVITY"); - this.estadocivilList = CatalogDetailController.find("MARITALSTATUS"); - this.profesionList = CatalogDetailController.find("PROFESSION"); - this.militarygrades=CatalogDetailController.find("MILITARYGRADE"); - this.lgender = CatalogDetailController.getListGender(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.personcode = null; - this.lrecord = new ArrayList<>(); - this.beanalias = "PEOPLEFAST"; - - //Obteniendo los datos del usuario logueado - this.usuario=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("static-access") - @Override - protected void querydatabase() { - try { - - if ((super.getFieldvalue("pk.personcode") == null) || super.getFieldvalue("pk.personcode").equals("")) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - this.personcode = String.valueOf(super.getFieldvalue("pk.personcode")); - - //Request request = this.callerhelper.getRequest(); - - this.persondetail.addPersoncodeFilter(this.personcode); - this.persondetail.query(); - - this.people.addPersoncodeFilter(this.personcode); - this.people.query(); - - //Cargando la firma y la foto - if(people.getRecord()!=null){ - if(super.getFieldvalue("personname")!=null){ - people.getRecord().setFirstname(super.getFieldvalue("personname").toString()); - } - //Firma - if(people.getRecord().getSignaturecode()!=null){ - TgeneFilesDetail fileDetalle = fileDetail.find(String.valueOf(people.getRecord().getSignaturecode())); - extensionFirma = fileDetalle!=null?fileDetalle.getExtension():extensionFirma; - - if(fileDetalle!= null && fileDetalle.getImage()!=null){ - InputStream input=new ByteArrayInputStream(fileDetalle.getImage()); - this.firma=new DefaultStreamedContent(input); - this.firmaCargada=true; - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - - String tempUrl = servletContext.getRealPath("/");; - String imageName=UUID.randomUUID().toString(); - imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFirma; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - BufferedImage image=ImageIO.read(input); - ImageIO.write(image, extensionFirma, outputfile); - - this.rutaFirma="/resources/images/"+imageName+"."+extensionFirma; - }else{ - this.firma=null; - imageUrl=null; - this.rutaFirma=null; - this.firmaCargada=false; - } - }else{ - this.firma=null; - imageUrl=null; - this.rutaFirma=null; - this.firmaCargada=false; - } - //Foto - if(people.getRecord().getPhotocode()!=null){ - TgeneFilesDetail fileDetalle = fileDetail.find(String.valueOf(people.getRecord().getPhotocode())); - extensionFoto = fileDetalle!=null?fileDetalle.getExtension():extensionFoto; - - if(fileDetalle!=null && fileDetalle.getImage()!=null){ - InputStream input=new ByteArrayInputStream(fileDetalle.getImage()); - this.foto=new DefaultStreamedContent(input); - this.fotoCargada=true; - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - - String tempUrl = servletContext.getRealPath("/");; - String imageName=UUID.randomUUID().toString(); - imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - BufferedImage image=ImageIO.read(input); - ImageIO.write(image, extensionFoto, outputfile); - this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; - }else{ - this.foto=null; - imageUrl=null; - this.rutaFoto=null; - this.fotoCargada=false; - } - }else{ - this.foto=null; - imageUrl=null; - this.rutaFoto=null; - this.fotoCargada=false; - } - } - - - - this.address.addPersoncodeFilter(this.personcode); - this.address.addFilterDateto(); - this.address.query(); - - this.phones.addPersoncodeFilter(this.personcode); - this.phones.addFilterDateto(); - this.phones.query(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - if(this.persondetail.getRecord().getPk() == null || this.persondetail.getRecord().getPk().getPersoncode() == null){ - TcustPersonDetail per=PersonDetailController.findByIdentification(this.persondetail.getRecord().getIdentification()); - if(per != null && per.getIdentification()!=null){ - MessageHelper.setMessageError("CDULA YA REGISTRADA"); - return; - } - } - if ((this.personcode != null) && !this.personcode.equals("")) { - request.put("personcode", this.personcode); - request.put("identification", this.persondetail.getRecord().getIdentification()); - // this.reqAddressPhone(); - } else { - if (this.address.getLrecord().size() == 0) { - MessageHelper.setMessageError("msg_requireAddress"); - return; - } - if (this.phones.getLrecord().size() == 0) { - MessageHelper.setMessageError("msg_requirePhones"); - return; - } - } - - //Asignando la foto - if(this.selectedPicture!=null){ - this.persondetail.getRecord().setPicture(this.selectedPicture.getContents()); - request.getModifiedData().put("EXTENSION", this.extensionFoto); - request.getModifiedData().put("NAME", this.selectedPicture.getFileName()); - } - - if(this.persondetail.getRecord().getMilitarygrade()!=null){ - this.persondetail.getRecord().setMilitarygradecode("MILITARYGRADE"); - } - - //Asignando la firma - if(this.selectedSign!=null){ - this.persondetail.getRecord().setSign(this.selectedSign.getContents()); - } - - // Preparamos los objetos a ser enviados - this.persondetail.update(); - this.people.update(); - - // Definimos los formularios - DtoSave dtoSavePerson = this.persondetail.getDtoSave(true); - DtoSave dtoSavePeople = this.people.getDtoSave(true); - DtoSave dtoSaveAddress = this.address.getDtoSave(true); - DtoSave dtoSavePhone = this.phones.getDtoSave(true); - - // Verificamos y agregamos al request - if (dtoSavePeople.pendingProcess()) { - this.persondetail.getRecord().setName(this.people.getRecord().getFirstname()); - // this.people.getRecord().getLastname()); - //+ " " + this.people.getRecord().getSurename() + " " - // + this.people.getRecord().getFirstname() + " " + this.people.getRecord().getMiddlename() - dtoSavePerson = this.persondetail.getDtoSave(true); - msave.put(this.people.getBeanalias(), dtoSavePeople); - } - if (dtoSavePerson.pendingProcess()) { - msave.put(this.persondetail.getBeanalias(), dtoSavePerson); - } - if (dtoSaveAddress.pendingProcess()) { - msave.put(this.address.getBeanalias(), dtoSaveAddress); - } - if (dtoSavePhone.pendingProcess()) { - msave.put(this.phones.getBeanalias(), dtoSavePhone); - } - - request.setSaveTables(msave); - - request.getModifiedData().put("DETALLESPERSONA", persondetail.getRecord()); - request.getModifiedData().put("DIRECCIONESELIMINADAS",this.direccionesEliminadas); - request.getModifiedData().put("TELEFONOSELIMINADOS", this.telefonosEliminados); - - - request.getModifiedData().put("USUARIO", this.usuario); - - guardarInformacionImagenes(); - - request.getModifiedData().put("file", fileH); - request.getModifiedData().put("photocode",people.getRecord()!=null?people.getRecord().getPhotocode():null); - request.getModifiedData().put("signaturecode", people.getRecord()!=null?people.getRecord().getSignaturecode():null); - request.getModifiedData().put("pk_personcode", people.getRecord()!=null?people.getRecord().getPk().getPersoncode():null); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.people.postCommit(resp); - this.persondetail.postCommit(resp); - this.address.postCommit(resp); - this.phones.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo para guardar informacion de las imagenes en la base de datos - * @throws IOException - */ - private void guardarInformacionImagenes() throws IOException{ - FileHelper archivoPicture = new FileHelper(); - archivoPicture.setName(""); - - fileH = new ArrayList(); - - if(selectedPicture!=null){ - long size = selectedPicture.getSize(); - InputStream stream = selectedPicture.getInputstream(); - byte[] buffer = new byte[(int) size]; - stream.read(buffer, 0, (int) size); - stream.close(); - archivoPicture.setContentType(selectedPicture.getContentType()); - archivoPicture.setExtension(extensionFoto); - archivoPicture.setImage(buffer); - archivoPicture.setName(selectedPicture.getFileName()); - archivoPicture.setSize(selectedPicture.getFileName().length()); - } - fileH.add(archivoPicture); - - - FileHelper archivoFirma = new FileHelper(); - archivoFirma.setName(""); - - if(selectedSign!=null){ - long sizeFirma = selectedSign.getSize(); - InputStream streamFirma = selectedSign.getInputstream(); - byte[] bufferFirma = new byte[(int) sizeFirma]; - streamFirma.read(bufferFirma, 0, (int) sizeFirma); - streamFirma.close(); - archivoFirma.setContentType(selectedSign.getContentType()); - archivoFirma.setExtension(extensionFirma); - archivoFirma.setImage(bufferFirma); - archivoFirma.setName(selectedSign.getFileName()); - archivoFirma.setSize(selectedSign.getFileName().length()); - } - fileH.add(archivoFirma); - } - - - @Override - public void postCommit(Response response) throws Exception { - this.persondetail.postCommit(response); - } - - /** - * Elimina una direccion - */ - public void removeAddress(TcustPersonAddress direccion){ - try { - this.direccionesEliminadas.add(direccion); - //this.address.setRecord(direccion); - //this.address.getRecord().getPk().setDateto(new Timestamp(Calendar.getInstance().getTimeInMillis())); - //this.address.update(); - this.address.remove(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Elimina una telefono - */ - public void removePhone(TcustPersonPhone telefono){ - try { - this.telefonosEliminados.add(telefono); - this.phones.remove(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Verifica los valores requeridos - * - * @throws Exception - */ - public void reqAddressPhone() throws Exception { - if (this.activity(this.persondetail.getRecord(), this.people.getRecord())) { - MessageHelper.setMessageError("msg_requireActivity"); - return; - } - if (!this.address.getDtoSave().pendingProcess()) { - MessageHelper.setMessageError("msg_requireAddress"); - return; - } - if (!this.phones.getDtoSave().pendingProcess()) { - MessageHelper.setMessageError("msg_requirePhones"); - return; - } - } - - /** - * Verifica el ingreso de una actividad económica - * - * @param person Objeto TcustPersonDetail - * @param people Objeto TcustPeople - * @return result V/F - */ - private boolean activity(TcustPersonDetail person, TcustPeople people) { - boolean result = false; - if (((person.getActivitycode() == null) || person.getActivitycode().equals("")) - && ((people.getNotactivitycatalog() == null) || people.getNotactivitycatalog().equals(""))) { - result = true; - } - return result; - } - - /** - * Ejecuta el evento change del combo actividad no económica - */ - public void onChangeNotactivity() { - this.people.getRecord().setNotactivitycatalogcode("NOTACTIVITY"); - this.persondetail.getRecord().setActivitycode(null); - this.persondetail.getRecord().put("activitydesc", null); - this.persondetail.getRecord().put("segmenttypecatalog", null); - this.persondetail.getRecord().put("segmentdesc", null); - } - - public String getImageUrl() { - return imageUrl; - } - - public void setImageUrl(String imageUrl) { - this.imageUrl = imageUrl; - } - - public String getIdProfesion() { - return idProfesion; - } - - public void setIdProfesion(String idProfesion) { - this.idProfesion = idProfesion; - } - - /** - * Método para abrir el lov de personas - */ - public void openPersonLov() { - Map> params = new HashMap<>(); - List natural = new ArrayList(); - natural.add("CED"); - params.put("natural", natural); - PersonLovController.openLov(params); - } - - /** - * Retorna los valores del lov - * - * @param event Evento ajax - * @throws Exception - */ - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - super.addField("pk.personcode", t.getPk().getPersoncode().toString()); - super.addField("personname", t.getName()); - super.query(); - } - - /** - * Método que abre el lov de activudad económica - */ - public void openActivityLov() { - Map> params = new HashMap<>(); - ActivityLovController.openLov(params); - } - - /** - * Controla la respuesta del lov de activudad económica - * - * @param event - * @throws Exception - */ - public void onReturnActivityLov(SelectEvent event) throws Exception { - TgeneActivity t = (TgeneActivity) event.getObject(); - this.people.getRecord().setNotactivitycatalog(null); - this.people.getRecord().setNotactivitycatalogcode(null); - this.persondetail.getRecord().setActivitycode(t.getPk()); - this.persondetail.getRecord().modifiedData.put("activitydesc", t.getDescription()); - this.persondetail.getRecord().modifiedData.put("segmenttypecatalog", t.getSegmenttypecatalog()); - this.persondetail.getRecord().modifiedData.put("segmentdesc", t.get("segmentdesc")); - } - - public void onChangeId() { - if (this.persondetail.getRecord().getIdentificationcatalog().compareTo("CED") == 0) { - this.lengthId = "10"; - this.activeRegEx = false; - } else if (this.persondetail.getRecord().getIdentificationcatalog().compareTo("RUC") == 0) { - this.lengthId = "13"; - this.activeRegEx = false; - } else if (this.persondetail.getRecord().getIdentificationcatalog().compareTo("PAS") == 0) { - this.lengthId = "13"; - this.activeRegEx = true; - } - } - - /** - * Metodo que carga la firma digital - */ - public void uploadSign(FileUploadEvent event){ - try { - selectedSign = event.getFile(); - - InputStream is=new ByteArrayInputStream(selectedSign.getContents()); - this.firma=new DefaultStreamedContent(is, selectedSign.getContentType(), selectedSign.getFileName()); - this.firmaCargada=true; - - - - //Obteniendo la extension de la imagen - extensionFirma=""; - int pos=-1; - for (int i = selectedSign.getFileName().length()-1; i>=0; i--) { - if(selectedSign.getFileName().toCharArray()[i]=='.'){ - pos=i; - break; - } - } - if(pos!=-1){ - extensionFirma=selectedSign.getFileName().substring(pos+1, selectedSign.getFileName().length()); - } - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - String tempUrl = servletContext.getRealPath("/"); - String imageName=UUID.randomUUID().toString(); - //String imageUrl=servletContext.getRealPath(tempUrl)+File.separator+imageName+"."+extension; - imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFirma; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - InputStream input=new ByteArrayInputStream(selectedSign.getContents()); - BufferedImage image=ImageIO.read(input); - ImageIO.write(image, extensionFirma, outputfile); - - this.rutaFirma="/resources/images/"+imageName+"."+extensionFirma; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Metodo que carga la foto - */ - @SuppressWarnings("unused") - public void uploadPicture(FileUploadEvent event){ - try { - selectedPicture = event.getFile(); - - InputStream is=new ByteArrayInputStream(selectedPicture.getContents()); - this.foto=new DefaultStreamedContent(is, selectedPicture.getContentType(), selectedPicture.getFileName()); - this.fotoCargada=true; - - -/* long size = selectedPicture.getSize(); - InputStream stream = selectedPicture.getInputstream(); - byte[] buffer = new byte[(int) size]; - stream.read(buffer, 0, (int) size); - stream.close();*/ - - //Obteniendo la extension de la imagen - this.extensionFoto=""; - int pos=-1; - for (int i = selectedPicture.getFileName().length()-1; i>=0; i--) { - if(selectedPicture.getFileName().toCharArray()[i]=='.'){ - pos=i; - break; - } - } - if(pos!=-1){ - extensionFoto=selectedPicture.getFileName().substring(pos+1, selectedPicture.getFileName().length()); - } - - //Almacenando la imagen temporalmente - ExternalContext externalContext = FacesContext.getCurrentInstance().getExternalContext(); - ServletContext servletContext = (ServletContext) externalContext.getContext(); - - String tempUrl = servletContext.getRealPath("/");; - String imageName=UUID.randomUUID().toString(); - imageUrl=tempUrl + "resources/images/" + imageName +"."+extensionFoto; - imageUrl = imageUrl.replace("\\", "/"); - File outputfile = new File(imageUrl); - InputStream input=new ByteArrayInputStream(selectedPicture.getContents()); - BufferedImage image=ImageIO.read(input); - Boolean saved=ImageIO.write(image, extensionFoto, outputfile); - - this.rutaFoto="/resources/images/"+imageName+"."+extensionFoto; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - e.printStackTrace(); - } - } - - /** - * Entrega el valor de: persondetail - * - * @return PersonDetailController - */ - public PersonDetailController getPersondetail() { - return this.persondetail; - } - - /** - * Fija el valor de: persondetail - * - * @param persondetail Valor a fijar en el atributo. - */ - public void setPersondetail(PersonDetailController persondetail) { - this.persondetail = persondetail; - } - - /** - * Entrega el valor de: persondetail - * - * @return PersonDetailController - */ - public PeopleController getPeople() { - return this.people; - } - - /** - * Fija el valor de: persondetail - * - * @param people Valor a fijar en el atributo. - */ - public void setPeople(PeopleController people) { - this.people = people; - } - - /** - * Entrega el valor de: address - * - * @return PersonAddressController - */ - public PersonAddressController getAddress() { - return this.address; - } - - /** - * Fija el valor de: address - * - * @param PersonAddressController - */ - public void setAddress(PersonAddressController address) { - this.address = address; - } - - /** - * Entrega el valor de: phones - * - * @return PersonPhoneController - */ - public PersonPhoneController getPhones() { - return this.phones; - } - - /** - * Fija el valor de: phones - * - * @param PersonPhoneController - */ - public void setPhones(PersonPhoneController phones) { - this.phones = phones; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail tipo de identificación - * - * @return lidentification Lista de objetos TgeneCatalogDetail - */ - public List getLidentification() { - return this.lidentification; - } - - /** - * Fija lista de objetos TgeneCatalogDetail tipo de identificación - * - * @param lidentification Lista de objetos TgeneCatalogDetail - */ - public void setLidentification(List lidentification) { - this.lidentification = lidentification; - } - - /** - * Entrega Verdadero/Falso - * - * @return activeNotEconomic V/F - */ - public boolean isActiveRegEx() { - return this.activeRegEx; - } - - /** - * Fija Verdadero/Falso - * - * @param activeNotEconomic V/F - */ - public void setActiveRegEx(boolean activeRegEx) { - this.activeRegEx = activeRegEx; - } - - /** - * Entrega el número de digitos para el tipo de identificaci&oacuye;n - * - * @return lengthId Número de digitos - */ - public String getLengthId() { - return this.lengthId; - } - - /** - * Fija el número de digitos para el tipo de identificaci&oacuye;n - * - * @param lengthId Número de digitos - */ - public void setLengthId(String lengthId) { - this.lengthId = lengthId; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail de sector económico - * - * @return leconomicsector Lista de objetos TgeneCatalogDetail - */ - public List getLeconomicsector() { - return this.leconomicsector; - } - - /** - * Fija lista de objetos TgeneCatalogDetail de sector económico - * - * @param leconomicsector Lista de objetos TgeneCatalogDetail - */ - public void setLeconomicsector(List leconomicsector) { - this.leconomicsector = leconomicsector; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail de tipo cliente - * - * @return ltypeclient Lista de objetos TgeneCatalogDetail - */ - public List getLtypeclient() { - return this.ltypeclient; - } - - /** - * Fija lista de objetos TgeneCatalogDetail de tipo cliente - * - * @param ltypeclient Lista de objetos TgeneCatalogDetail - */ - public void setLtypeclient(List ltypeclient) { - this.ltypeclient = ltypeclient; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail - * - * @return lnotactivity Lista de objetos TgeneCatalogDetail - */ - public List getLnotactivity() { - return this.lnotactivity; - } - - /** - * Fija lista de objetos TgeneCatalogDetail - * - * @param lnotactivity Lista de objetos TgeneCatalogDetail - */ - public void setLnotactivity(List lnotactivity) { - this.lnotactivity = lnotactivity; - } - - /** - * Entrega la lista de géneros - * - * @return lgender Lista de géneros - */ - public List getLgender() { - return this.lgender; - } - - /** - * Fija la lista de géneros - * - * @param lgender Lista de géneros - */ - public void setLgender(List lgender) { - this.lgender = lgender; - } - - public Boolean getFirmaCargada() { - return firmaCargada; - } - - public void setFirmaCargada(Boolean firmaCargada) { - this.firmaCargada = firmaCargada; - } - - public UploadedFile getSelectedSign() { - return selectedSign; - } - - public void setSelectedSign(UploadedFile selectedSign) { - this.selectedSign = selectedSign; - } - - public UploadedFile getSelectedPicture() { - return selectedPicture; - } - - public void setSelectedPicture(UploadedFile selectedPicture) { - this.selectedPicture = selectedPicture; - } - - public Boolean getFotoCargada() { - return fotoCargada; - } - - public void setFotoCargada(Boolean fotoCargada) { - this.fotoCargada = fotoCargada; - } - - public StreamedContent getFirma() throws IOException { - if(selectedSign!=null){ - FacesContext.getCurrentInstance().getExternalContext().getMimeType(selectedSign.getContentType()); - return new DefaultStreamedContent(selectedSign.getInputstream(), "image/png"); - } - return null; - } - - public void setFirma(StreamedContent firma) { - this.firma = firma; - } - - public StreamedContent getFoto() throws IOException { - if(selectedPicture!=null){ - FacesContext.getCurrentInstance().getExternalContext().getMimeType(selectedPicture.getContentType()); - return new DefaultStreamedContent(selectedPicture.getInputstream(), "image/png"); - } - return null; - - } - - public void setFoto(StreamedContent foto) { - this.foto = foto; - } - - public String getRutaFoto() { - return rutaFoto; - } - - public void setRutaFoto(String rutaFoto) { - this.rutaFoto = rutaFoto; - } - - public String getRutaFirma() { - return rutaFirma; - } - - public void setRutaFirma(String rutaFirma) { - this.rutaFirma = rutaFirma; - } - - public List getProfesionList() { - return profesionList; - } - - public void setProfesionList(List profesionList) { - this.profesionList = profesionList; - } - - public List getEstadocivilList() { - return estadocivilList; - } - - public String getIdEstadoCivil() { - return idEstadoCivil; - } - - public void setIdEstadoCivil(String idEstadoCivil) { - this.idEstadoCivil = idEstadoCivil; - } - - - - public void setEstadocivilList(List estadocivilList) { - this.estadocivilList = estadocivilList; - } - - public FileDetailController getFileDetail() { - return fileDetail; - } - - public void setFileDetail(FileDetailController fileDetail) { - this.fileDetail = fileDetail; - } - - public List getMilitarygrades() { - return militarygrades; - } - - public void setMilitarygrades(List militarygrades) { - this.militarygrades = militarygrades; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonAddressController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonAddressController.java.svn-base deleted file mode 100644 index 753fe47..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonAddressController.java.svn-base +++ /dev/null @@ -1,702 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.common.helper.Constant; -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CantonController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.CityController; -import com.fp.frontend.controller.pgeneral.gene.CountryController; -import com.fp.frontend.controller.pgeneral.gene.ParroquiaController; -import com.fp.frontend.controller.pgeneral.gene.ProvinceController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonAddressKey; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TcustPersonAddress. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonAddressController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonAddressController() throws Exception { - super(TcustPersonAddress.class); - } - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List laddresstype; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List lcountries; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lprovinces; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcantones; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lparroquias; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lcities; - - /** - * Atributo para el control de checkBox de principal - */ - private boolean principal; - - /** - * Atributo para el código de persona - */ - private Integer personcode; - - private boolean typeaddress; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - laddresstype = CatalogDetailController.find("ADDRESSTYPE"); - lcountries = CountryController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - record = new TcustPersonAddress(); - record.setPk(new TcustPersonAddressKey()); - beanalias = "TCUSTPERSONADDRESS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Agrega un par´metro para la conulta - * - * @param personcode Código de persona - */ - public void addPersoncodeFilter(String personcode) { - this.personcode = new Integer(personcode); - super.addFilter("pk.personcode", personcode); - } - - /** - * Método para armar la consulta - * - * @return dto Objeto DtoQuery - * @throws Exception - */ - public DtoQuery getDtoQuery() throws Exception { - super.addFilterDateto(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.addressnumber"); // En en string van todos los campos de - // orden ("t.pk, t.nombre, t.cpais"). - // subqueries - SubQuery subquery = new SubQuery("TgeneCatalogDetail", "description", "addresstype", - "i.pk.catalogcode = t.addresstypecatalogcode and i.pk.catalog = t.addresstypecatalog"); - dto.addSubQuery(subquery); - - SubQuery subqueryProvincia = new SubQuery("TgeneProvince", "description", "provincia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode"); - dto.addSubQuery(subqueryProvincia); - - SubQuery subqueryCanton = new SubQuery("TgeneCanton", "description", "canton", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode"); - dto.addSubQuery(subqueryCanton); - - SubQuery subqueryCiudad = new SubQuery("TgeneCity", "description", "ciudad", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode and i.pk.citycode=t.citycode"); - dto.addSubQuery(subqueryCiudad); - - SubQuery subqueryParroquia = new SubQuery("TgeneParroquia", "description", "parroquia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - dto.addSubQuery(subqueryParroquia); - - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - super.addFilterDateto(); - - //Cargando el tipo de direccion - SubQuery subQueryTipoDireccion= new SubQuery("TgeneCatalogDetail","description", - "addresstype","i.pk.catalog=t.addresstypecatalog and i.pk.catalogcode=t.addresstypecatalogcode"); - dto.addSubQuery(subQueryTipoDireccion); - - SubQuery subqueryProvincia = new SubQuery("TgeneProvince", "description", "provincia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode"); - dto.addSubQuery(subqueryProvincia); - - SubQuery subqueryCanton = new SubQuery("TgeneCanton", "description", "canton", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode"); - dto.addSubQuery(subqueryCanton); - - SubQuery subqueryCiudad = new SubQuery("TgeneCity", "description", "ciudad", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode and i.pk.citycode=t.citycode"); - dto.addSubQuery(subqueryCiudad); - - SubQuery subqueryParroquia = new SubQuery("TgeneParroquia", "description", "parroquia", - "i.pk.provincecode = t.provincecode and i.pk.countrycode = t.countrycode and i.pk.cantoncode=t.cantoncode and i.pk.parroquiacode=t.parroquiacode"); - dto.addSubQuery(subqueryParroquia); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseAll() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Controla la respuesta de la consulta - * - * @param resp Objeto Response - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void manageResponseAddress(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery((List) resp.get(beanalias)); - } - } - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public TcustPersonAddress findPersonaPorDireccionTipoCatalogo(String codigopersona, String direcciontipoCatalogo) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("addresstypecatalog", direcciontipoCatalogo); - cc.addFilterDateto(); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - record = cc.lrecord.get(0); - lprovinces = ProvinceController.findPorCodigo(record.getCountrycode(),record.getProvincecode()); - lcantones = CantonController.findPorCodigo(record.getCountrycode(),record.getProvincecode(),record.getCantoncode()); - lcities = CityController.findPorCodigo(record.getCountrycode(),record.getProvincecode(),record.getCantoncode(),record.getCitycode()); - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - return record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public TcustPersonAddress findByPersonCode(String codigopersona,String codigoCorreo) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("addresstypecatalog", codigoCorreo); - cc.addFilterDateto(); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - record = cc.lrecord.get(0); - lprovinces = ProvinceController.findPorCodigo(record.getCountrycode(),record.getProvincecode()); - lcantones = CantonController.findPorCodigo(record.getCountrycode(),record.getProvincecode(),record.getCantoncode()); - lcities = CityController.findPorCodigo(record.getCountrycode(),record.getProvincecode(),record.getCantoncode(),record.getCitycode()); - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - return record; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene todas las direcciones de una persona - * @param codigopersona - * @return - */ - public static List findAllByPersonCode(String codigopersona) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("pk.dateto", "2999-12-31"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo que retorna la direccion que sea diferente a la del mail - * @param codigopersona - * @param direcciontipoCatalogo - * @return - */ - public static TcustPersonAddress findDifAMail(String codigopersona, String direcciontipoCatalogo) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("addresstypecatalog", "!="+direcciontipoCatalogo); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Retorna la dirección marcada como principal - * @param codigoPersona - * @return - */ - public TcustPersonAddress findPrincipal(String codigoPersona) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigoPersona); - cc.addFilter("principal", Constant.STR_Y); - cc.addFilterDateto(); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return null; - } - - /** - * Retorna la dirección marcada como principal - * @param codigoPersona - * @return - */ - public static TcustPersonAddress find(String codigoPersona) { - try { - PersonAddressController cc = new PersonAddressController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigoPersona); - cc.addFilter("principal", Constant.STR_Y); - cc.addFilterDateto(); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return null; - } - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - /** - * Método para el evento change del combo países - */ - public void executeCountry() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lprovinces = ProvinceController.find(record.getCountrycode()); - lcantones = new ArrayList<>(); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo provincias - */ - public void executeProvince() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = new ArrayList<>(); - lcities = new ArrayList<>(); - } - } - - /** - * Método para el evento change del combo cantones - */ - public void executeCanton() { - if ((record.getCountrycode() != null) && (record.getCountrycode().compareTo("") != 0)) { - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - } - - - /** - * Método para cargar datos en el editar - */ - public void loadEdit() { - this.onChangeType(); - principal = ((record.getPrincipal() != null) && record.getPrincipal().equals("Y") ? true : false); - lprovinces = ProvinceController.find(record.getCountrycode()); - lcantones = CantonController.find(record.getCountrycode(), record.getProvincecode()); - lparroquias = ParroquiaController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - lcities = CityController.find(record.getCountrycode(), record.getProvincecode(), record.getCantoncode()); - } - - /** - * Método para manejar el evento change en el CheckBox - */ - public void onChangePrincipal() { - if (principal) { - record.setPrincipal("Y"); - } else { - record.setPrincipal("N"); - } - } - - @Override - public void update() { - try { - -// record.getPk().setPersoncode(((personcode == null) || personcode.equals(0)) ? null : personcode); - /* - if ((personcode == null) || (personcode == 0)) { - record.getPk().setAddressnumber(this.getMaxNumber()); - } - if(record.isnew){ - record.getPk().setAddressnumber(this.getMaxNumber()); - } - */ - record.setAddresstypecatalogcode("ADDRESSTYPE"); - for (TgeneCatalogDetail detail : laddresstype) { - if (detail.getPk().getCatalog().equals(record.getAddresstypecatalog())) { - record.modifiedData.put("addresstype", detail.getDescription()); - } - } - super.update(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método que obtiene el max de direcciones - * - * @return max Número max - */ - private Integer getMaxNumber() { - Integer max = 0; - if (lrecord.size() > 0) { - for (TcustPersonAddress address : lrecord) { - if (max.compareTo(address.getPk().getAddressnumber()) < 0) { - max = address.getPk().getAddressnumber(); - } - } - } - return max + 1; - } - - /** - * Método para manejar el evento change en el combo tipod e dirección - */ - public void onChangeType() { - if (record.getAddresstypecatalog().compareTo("3") == 0) { - typeaddress = true; - } else { - typeaddress = false; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail tipo de direcciones - * - * @return laddresstype Lista de objetos TgeneCatalogDetail tipo de direcciones - */ - public List getLaddresstype() { - return laddresstype; - } - - /** - * Fija una lista de objetos TgeneCatalogDetail tipo de direcciones - * - * @param laddresstype Lista de objetos TgeneCatalogDetail tipo de direcciones - */ - public void setLaddresstype(List laddresstype) { - this.laddresstype = laddresstype; - } - - /** - * Entrega una lista de objetos TgeneCountry países - * - * @return lcountries Lista de objetos TgeneCountry - */ - public List getLcountries() { - return lcountries; - } - - /** - * Fija una lista de objetos TgeneCountry países - * - * @param lcountries Lista de objetos TgeneCountry - */ - public void setLcountries(List lcountries) { - this.lcountries = lcountries; - } - - /** - * Entrega una lista de objetos TgeneProvince provincias - * - * @return lprovinces Lista de objetos TgeneProvince - */ - public List getLprovinces() { - return lprovinces; - } - - /** - * Fija una lista de objetos TgeneProvince provincias - * - * @param lprovinces Lista de objetos TgeneProvince - */ - public void setLprovinces(List lprovinces) { - this.lprovinces = lprovinces; - } - - /** - * Entrega una lista de objetos TgeneCanton cantones - * - * @return lcantones Lista de objetos TgeneCanton - */ - public List getLcantones() { - return lcantones; - } - - /** - * Fija una lista de objetos TgeneCanton cantones - * - * @param lcantones Lista de objetos TgeneCanton - */ - public void setLcantones(List lcantones) { - this.lcantones = lcantones; - } - - /** - * Entrega una lista de objetos TgeneParroquia parroquias - * - * @return lparroquias Lista de objetos TgeneParroquia - */ - public List getLparroquias() { - return lparroquias; - } - - /** - * Fija una lista de objetos TgeneParroquia parroquias - * - * @param lparroquias Lista de objetos TgeneParroquia - */ - public void setLparroquias(List lparroquias) { - this.lparroquias = lparroquias; - } - - /** - * Entrega una lista de objetos TgeneCity ciudades - * - * @return lcities Lista de objetos TgeneCity - */ - public List getLcities() { - return lcities; - } - - /** - * Fija una lista de objetos TgeneCity ciudades - * - * @param lcities Lista de objetos TgeneCity - */ - public void setLcities(List lcities) { - this.lcities = lcities; - } - - /** - * Entrega Verdadero o Falso - * - * @return principal V/F - */ - public boolean isPrincipal() { - return principal; - } - - /** - * Fija Verdadero o Falso - * - * @param principal V/F - */ - public void setPrincipal(boolean principal) { - this.principal = principal; - } - - /** - * Entrega el código de persona - * - * @return personcode Código de persona - */ - public Integer getPersoncode() { - return personcode; - } - - /** - * Fija el código de persona - * - * @param personcode Código de persona - */ - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } - - /** - * Entrega Verdadero o Falso - * - * @return typeaddress V/F - */ - public boolean isTypeaddress() { - return typeaddress; - } - - /** - * Fija Verdadero o Falso - * - * @param typeaddress V/F - */ - public void setTypeaddress(boolean typeaddress) { - this.typeaddress = typeaddress; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonDetailController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonDetailController.java.svn-base deleted file mode 100644 index 237c66f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonDetailController.java.svn-base +++ /dev/null @@ -1,259 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Clase controladora del bean TcustPersonDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonDetailController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonDetailController() throws Exception { - super(TcustPersonDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - super.create(); - beanalias = "TCUSTPERSONDETAIL"; - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Agrega un par´metro para la conulta - * - * @param personcode Código de persona - */ - public void addPersoncodeFilter(String personcode) { - super.addFilter("pk.personcode", personcode); - record.getPk().setPersoncode(Integer.parseInt(personcode)); - } - - /** - * Método para procesar la consulta - * - * @return dto Objeto DtoQuery - * @throws Exception - */ - public DtoQuery getDtoQuery() throws Exception { - super.addFilterDateto(); - - DtoQuery dto = super.getDtoQuery(false); - - // subqueries - SubQuery subquery = new SubQuery("TgeneActivity", "description", "activitydesc", "i.pk = t.activitycode"); - dto.addSubQuery(subquery); - - SubQuery subquery1 = new SubQuery("TgeneActivity", "segmenttypecatalog", "segmenttypecatalog", "i.pk = t.activitycode"); - dto.addSubQuery(subquery1); - - SubQuery subquery2 = new SubQuery("TgeneCatalogDetail", "description", "segmentdesc", - "i.pk.catalogcode = 'SEGMENTTYPE' and i.pk.catalog = (select a.segmenttypecatalog from TgeneActivity a where a.pk = t.activitycode)"); - dto.addSubQuery(subquery2); - - SubQuery subqueryTipoIdentificacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoidentificacion", "i.pk.catalog = t.identificationcatalog and i.pk.catalogcode=t.identificationcatalogcode"); - dto.addSubQuery(subqueryTipoIdentificacion); - return dto; - } - - @Override - protected void querydatabase() { - try { - Request request = callerhelper.getRequest(); - - DtoQuery dto = this.getDtoQuery(); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - this.manageResponsePerson(resp); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - protected void querydatabaseAll() { - try { - DtoQuery dto = super.getDtoQuery(true); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - SubQuery subqueryTipoIdentificacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoidentificacion", "i.pk.catalog = t.identificationcatalog and i.pk.catalogcode=t.identificationcatalogcode"); - dto.addSubQuery(subqueryTipoIdentificacion); - Request request = callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - super.postQuery(lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Controla la respuesta de la consulta - * - * @param resp Objeto Response - * @throws Exception - */ - public void manageResponsePerson(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - record = null; - MessageHelper.setMessageError(resp); - } else { - record = (TcustPersonDetail) resp.get(beanalias); - super.postQuery((AbstractDataTransport) resp.get(beanalias)); - } - } - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, beanalias); - } - - public static TcustPersonDetail find(String codigopersona) { - try { - PersonDetailController cc = new PersonDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilterDateto(); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Autor Andres Cevallos - * @param identificacion - * @param tipoidentificacion - * @return - * Find para encontrar una persona por su identificacion y tipo de identificacion - */ - public static TcustPersonDetail findxidentification(String identificacion, String tipoidentificacion) { - try { - PersonDetailController cc = new PersonDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("identification",identificacion); - cc.addFilter("identificationcatalog",tipoidentificacion); - cc.addFilterDateto(); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * @param identificacion - * @param tipoidentificacion - * @return - * Find para encontrar una persona por su identificacion - */ - public static TcustPersonDetail findByIdentification(String identificacion) { - try { - PersonDetailController cc = new PersonDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("identification",identificacion); - cc.addFilterDateto(); - cc.querydatabaseAll(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonPhoneController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonPhoneController.java.svn-base deleted file mode 100644 index e880dc7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonPhoneController.java.svn-base +++ /dev/null @@ -1,300 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.company.TcustCompany; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonPhone; -import com.fp.persistence.pcustomer.gene.TcustPersonPhoneKey; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TcustPersonPhone. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonPhoneController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonPhoneController() throws Exception { - super(TcustPersonPhone.class); - } - - /** - * Atributo para la lista de objetos TgeneCatalogDetail para tipo de teléfono - */ - private List lphonetype; - - /** - * Atributo para el código de persona - */ - private Integer personcode; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lphonetype = CatalogDetailController.find("PHONETYPE"); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record = new TcustPersonPhone(); - this.record.setPk(new TcustPersonPhoneKey()); - this.beanalias = "TCUSTPERSONPHONE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Agrega el código de persona para la consulta - * @param personcode código de persona - */ - public void addPersoncodeFilter(String personcode){ - this.personcode = new Integer(personcode); - super.addFilter("pk.personcode", personcode); - } - - /** - * Método para armar la consulta - * @return dto Objeto DtoQuery - * @throws Exception - */ - public DtoQuery getDtoQuery() throws Exception{ - super.addFilterDateto(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.phonesequence"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - // subqueries - SubQuery subquery = new SubQuery("TgeneCatalogDetail", "description", "phonetype", - "i.pk.catalogcode = t.phonetypecatalogcode and i.pk.catalog = t.phonetypecatalog"); - dto.addSubQuery(subquery); - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - - //Cargando el tipo de telefono - SubQuery subQueryTipoTelefono= new SubQuery("TgeneCatalogDetail","description", - "phonetype","i.pk.catalog=t.phonetypecatalog and i.pk.catalogcode=t.phonetypecatalogcode"); - dto.addSubQuery(subQueryTipoTelefono); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(lrecord!=null && !lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Controla la respuesta de la consulta - * @param resp Objeto Response - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void manageResponsePhones(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try{ -// this.record.getPk().setPersoncode(((this.personcode==null) || this.personcode.equals(0))?null:this.personcode); - if((this.personcode==null) || (this.personcode==0)){ - // this.record.getPk().setPhonesequence(this.getMaxNumber()); - } - this.record.setPhonetypecatalogcode("PHONETYPE"); - for(TgeneCatalogDetail detail: this.lphonetype){ - if(detail.getPk().getCatalog().equals(this.record.getPhonetypecatalog())){ - this.record.modifiedData.put("phonetype", detail.getDescription()); - } - } - super.update(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que obtiene el max de direcciones - * @return max Número max - */ - private Integer getMaxNumber(){ - Integer max = 0; - if(this.lrecord.size() > 0){ - for(TcustPersonPhone phone: this.lrecord){ - if(max.compareTo(phone.getPk().getPhonesequence()) < 0 ){ - max = phone.getPk().getPhonesequence(); - } - } - } - return max+1; - } - - /** - * Actualiza el registro - */ - public void actualizar(){ - try { - super.update(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - public static TcustPersonPhone find(String codigopersona,String codigoTelFijo) { - try { - PersonPhoneController cc = new PersonPhoneController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("phonetypecatalog", codigoTelFijo); - cc.addFilterDateto(); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene todos los telefonos de una persona - * @param codigopersona - * @return - */ - public static List findAllByPersonCode(String codigopersona) { - try { - PersonPhoneController cc = new PersonPhoneController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.personcode", codigopersona); - cc.addFilter("pk.dateto", "2999-12-31"); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail tipo de teléfono - * @return lphonetype Lista de objetos TgeneCatalogDetail tipo de teléfono - */ - public List getLphonetype() { - return this.lphonetype; - } - - /** - * Fija una lista de objetos TgeneCatalogDetail tipo de teléfono - * @param lphonetype Lista de objetos TgeneCatalogDetail tipo de teléfono - */ - public void setLphonetype(List lphonetype) { - this.lphonetype = lphonetype; - } - - /** - * Entrega el código de persona - * @return personcode Código de persona - */ - public Integer getPersoncode() { - return this.personcode; - } - - /** - * Fija el código de persona - * @param personcode Código de persona - */ - public void setPersoncode(Integer personcode) { - this.personcode = personcode; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewController.java.svn-base deleted file mode 100644 index 2a1df1b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewController.java.svn-base +++ /dev/null @@ -1,321 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmGroups; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonViewController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonViewController() throws Exception { - super(TcustPersonDetail.class); - } - - @ManagedProperty(value = "#{peopleController}") - private PeopleController people; - - /** - * Atributo para la lista de objetos TgeneCatalogDetail de identificacion - */ - private List lidentification; - - /** - * Atributo para el listado de géneros - */ - private List lgender; - - /** - * Atributo para activar el keyFilter - */ - private boolean activeRegEx; - /** - * Atributo para la longitud de la identificación - */ - private String lengthId; - - @PostConstruct - private void postconstruct() { - this.lengthId = "10"; - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //List - this.lidentification = CatalogDetailController.find("IDENTIFICATION", "1"); - this.lgender = CatalogDetailController.getListGender(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.create(); - this.lrecord = new ArrayList<>(); - this.beanalias = "TCUSTPERSONDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(super.getMfilters().get("sbsemployee")==null){ - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - super.addFilterDateto(); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk.personcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.create(); - //this.record = new TcustPersonDetail(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TcustPersonDetail) resp.get(this.beanalias); - if(this.record!=null){ - this.people.addPersoncodeFilter(this.record.getPk().getPersoncode().toString()); - this.people.query(); - }else{ - this.create(); - } - super.postQuery(this.record); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - this.update(); - this.people.update(); - - DtoSave dtoSave = super.getDtoSave(true); - DtoSave dtoSavePeople = this.people.getDtoSave(true); - - HashMap msave = new HashMap(); - - if(dtoSave.pendingProcess()){ - msave.put(this.beanalias, dtoSave); - } - - if (dtoSavePeople.pendingProcess()) { - msave.put(this.people.getBeanalias(), dtoSavePeople); - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.people.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Cambio del ID - */ - public void onChangeId() { - if (this.record.getIdentificationcatalog().compareTo("CED") == 0) { - this.lengthId = "10"; - this.activeRegEx = false; - } else if (this.record.getIdentificationcatalog().compareTo("PAS") == 0) { - this.lengthId = "13"; - this.activeRegEx = true; - } - } - - /** - * Abre el lob de empleados sbs - */ - public void openPersonViewLov() { - Map> params = new HashMap<>(); - PersonViewLovController.openLov(params); - } - - /** - * Maneja la respuesta del lov de empleados sbs - * @param event - * @throws Exception - */ - public void onReturnPersonViewLov(SelectEvent event) throws Exception { - Object[] t = (Object[]) event.getObject(); - super.addFilter("sbsemployee", (String)t[0]); - super.addField("personname", (String)t[2] +" "+(String)t[1]); - this.querydatabase(); - - if(this.record.getPk().getPersoncode()==null){ - this.record.setName((String)t[2] +" "+(String)t[1]); - this.record.setIdentification((String)t[4]); - this.record.setSbsemployee((String)t[0]); - this.record.setSbsusercode((String)t[3]); - this.record.setIdentificationcatalogcode("IDENTIFICATION"); - this.people.getRecord().setFirstname(this.getName((String)t[2], true));; - this.people.getRecord().setMiddlename(this.getName((String)t[2], false)); - this.people.getRecord().setLastname(this.getName((String)t[1], true)); - this.people.getRecord().setSurename(this.getName((String)t[1], false)); - } - - } - - /** - * Arma el nombre del funcionario - * @param firstname nombre - * @param first v/f - * @return name - */ - public String getName(String firstname, boolean first){ - String[] value = firstname.split(" "); - String name = ""; - for(int i=0; i0 && !first){ - name = name+((name.length()==0)?"":" ")+value[i]; - } - } - return name; - } - - /** - * Entrega Verdadero/Falso - * - * @return activeNotEconomic V/F - */ - public boolean isActiveRegEx() { - return this.activeRegEx; - } - - /** - * Fija Verdadero/Falso - * - * @param activeNotEconomic V/F - */ - public void setActiveRegEx(boolean activeRegEx) { - this.activeRegEx = activeRegEx; - } - - /** - * Entrega el número de digitos para el tipo de identificaci&oacuye;n - * - * @return lengthId Número de digitos - */ - public String getLengthId() { - return this.lengthId; - } - - /** - * Fija el número de digitos para el tipo de identificaci&oacuye;n - * - * @param lengthId Número de digitos - */ - public void setLengthId(String lengthId) { - this.lengthId = lengthId; - } - - /** - * Entrega lista de objetos TgeneCatalogDetail tipo de identificación - * - * @return lidentification Lista de objetos TgeneCatalogDetail - */ - public List getLidentification() { - return this.lidentification; - } - - /** - * Fija lista de objetos TgeneCatalogDetail tipo de identificación - * - * @param lidentification Lista de objetos TgeneCatalogDetail - */ - public void setLidentification(List lidentification) { - this.lidentification = lidentification; - } - - /** - * Entrega la lista de géneros - * - * @return lgender Lista de géneros - */ - public List getLgender() { - return this.lgender; - } - - /** - * Fija la lista de géneros - * - * @param lgender Lista de géneros - */ - public void setLgender(List lgender) { - this.lgender = lgender; - } - - /** - * Entrega el valor de: persondetail - * - * @return PersonDetailController - */ - public PeopleController getPeople() { - return this.people; - } - - /** - * Fija el valor de: persondetail - * - * @param people Valor a fijar en el atributo. - */ - public void setPeople(PeopleController people) { - this.people = people; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewLovController.java.svn-base deleted file mode 100644 index eb49b64..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/.svn/text-base/PersonViewLovController.java.svn-base +++ /dev/null @@ -1,152 +0,0 @@ -package com.fp.frontend.controller.pcustomer; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonViewLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonViewLovController() throws Exception { - super(AbstractDataTransport.class); - } - - /** - * Atributo para la lista de empleados sbs - */ - private List lemployee; - - /** - *Atributo para el objeto empleado seleccionado - */ - private Object[] employee; - - /** - * Post construct - * @throws Exception - */ - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "EMPLOYEESBS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - request.put("querytype", "P"); - request.put("queryalias", "EMPLOYEESBS"); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lemployee = new ArrayList<>(); - MessageHelper.setMessageError(resp); - } else { - this.lemployee = (List) resp.get(this.beanalias); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setEmployee() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.employee); - } - - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personViewLov.xhtml", options, params); - } - - /** - * Entrega una lista de arreglo de objetos - * @return lemployee - */ - public List getLemployee() { - return lemployee; - } - - /** - * Fija una lista de arreglo de objetos - * @param lemployee - */ - public void setLemployee(List lemployee) { - this.lemployee = lemployee; - } - - /** - * Entrega un objeto employee - * @return employee - */ - public Object[] getEmployee() { - return employee; - } - - /** - * FIna un objeto employee - * @param employee - */ - public void setEmployee(Object[] employee) { - this.employee = employee; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/entries deleted file mode 100644 index ad7f349..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov -svn://172.17.26.185/COMACO - - - -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -JuridicalPersonLovController.java -file - - - - -2022-07-28T03:39:46.368559Z -d254584e8de4b8a61aef69842c3a19ec -2015-04-11T04:37:08.350787Z -4025 -cpiedra - - - - - - - - - - - - - - - - - - - - - -6156 - -PersonLovController.java -file - - - - -2022-07-28T03:39:46.368559Z -fa8f6e7606e5fa076d14edcbb339d185 -2016-01-20T17:08:28.980461Z -4390 -mcepeda - - - - - - - - - - - - - - - - - - - - - -8204 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/JuridicalPersonLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/JuridicalPersonLovController.java.svn-base deleted file mode 100644 index a02177c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/JuridicalPersonLovController.java.svn-base +++ /dev/null @@ -1,183 +0,0 @@ -package com.fp.frontend.controller.pcustomer.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora del lov asociado al bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class JuridicalPersonLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public JuridicalPersonLovController() throws Exception { - super(TcustPersonDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - /** - * codigo del telefono fijo - */ - private String codigoTelefonoFijo; - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PERSONLOV"; - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - String juridica = CallerHelper.getLovParameter("isJuridical"); - if(juridica!=null){ - this.getMfilters().put("identificationcatalog", juridica); - this.getMfilters().put("pk.dateto", "2999-12-31"); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void querydatabaseFiltro(String documento) { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.name"); - - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - Filter sql= new Filter(); - sql.setSql("t.identificationcatalog='PAS' or t.identificationcatalog='RUC'"); - dto.addFiltro(sql); - - //super.addFilter("identificationcatalog", documento); - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.name"); - this.getMfilters().put("pk.dateto", "2999-12-31"); - addFilterDateto(); - HashMap mtables = new HashMap(); - mtables.put(beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - lrecord = (List) resp.get(beanalias); - if(!lrecord.isEmpty()){ - record=lrecord.get(0); - } - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setperson() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setPerson(TcustPersonDetail person) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(person); - } - - /** - * Entrega los datos vigentes de una persona dado el codigo de persona. - * @param personcode - * @return - * @throws Exception - */ - public static TcustPersonDetail find(String personcode) throws Exception{ - PersonLovController p = new PersonLovController(); - p.addFilter("pk.personcode", personcode); - p.querydatabase(); - List l = p.getLrecord(); - if(!l.isEmpty()){ - return l.get(0); - } - return null; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/juridicalLov.xhtml", options, params); - } - - /** - * Metodo para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/PersonLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/PersonLovController.java.svn-base deleted file mode 100644 index d395f94..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pcustomer/lov/.svn/text-base/PersonLovController.java.svn-base +++ /dev/null @@ -1,207 +0,0 @@ -package com.fp.frontend.controller.pcustomer.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora del lov asociado al bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PersonLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PersonLovController() throws Exception { - super(TcustPersonDetail.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - /** - * codigo del telefono fijo - */ - private String codigoTelefonoFijo; - String natural; - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - public void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PERSONLOV"; - codigoTelefonoFijo=codigos("CODIGO.PHONE.FIJO"); - natural = CallerHelper.getLovParameter("natural"); -// if(natural!=null){ -// this.getMfilters().put("identificationcatalog", natural); -// } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void querydatabaseFiltro(String documento) { - try { -// if (!super.existAtLeastOneFilterValue()) { -// MessageHelper.setMessageError("msg_filterrequird"); -// return; -// } - super.addFilterDateto(); - // super.addFilter("identificationcatalog", documento); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.name"); - - SubQuery subqueryTipoIdentificacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoidentificacion", "i.pk.catalog = t.identificationcatalog and i.pk.catalogcode=t.identificationcatalogcode"); - dto.addSubQuery(subqueryTipoIdentificacion); - - SubQuery subqueryTelefono= new SubQuery - ("TcustPersonPhone", "phonenumber", "telefono", "i.pk.personcode = t.pk.personcode and i.pk.dateto=t.pk.dateto and i.phonetypecatalog="+codigoTelefonoFijo+" and i.pk.phonesequence = (select max(b.pk.phonesequence) from TcustPersonPhone b where b.pk.personcode = t.pk.personcode and b.phonetypecatalog = "+codigoTelefonoFijo+")"); - dto.addSubQuery(subqueryTelefono); - - if(natural!=null){ - Filter filter= new Filter(); - filter.setSql(" (t.identificationcatalog='CED' or t.identificationcatalog='PAS') "); - dto.addFiltro(filter); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { -// if (!super.existAtLeastOneFilterValue()) { -// MessageHelper.setMessageError("msg_filterrequird"); -// return; -// } - super.addFilterDateto(); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.name"); - - SubQuery subqueryTipoIdentificacion= new SubQuery - ("TgeneCatalogDetail", "description", "destipoidentificacion", "i.pk.catalog = t.identificationcatalog and i.pk.catalogcode=t.identificationcatalogcode"); - dto.addSubQuery(subqueryTipoIdentificacion); - - SubQuery subqueryTelefono= new SubQuery - ("TcustPersonPhone", "phonenumber", "telefono", "i.pk.personcode = t.pk.personcode and i.pk.dateto=t.pk.dateto and i.phonetypecatalog="+codigoTelefonoFijo+" and i.pk.phonesequence = (select max(b.pk.phonesequence) from TcustPersonPhone b where b.pk.personcode = t.pk.personcode and b.phonetypecatalog = "+codigoTelefonoFijo+")"); - dto.addSubQuery(subqueryTelefono); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setperson() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setPerson(TcustPersonDetail person) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(person); - } - - /** - * Entrega los datos vigentes de una persona dado el codigo de persona. - * @param personcode - * @return - * @throws Exception - */ - public static TcustPersonDetail find(String personcode) throws Exception{ - PersonLovController p = new PersonLovController(); - p.addFilter("pk.personcode", personcode); - p.querydatabase(); - List l = p.getLrecord(); - if(!l.isEmpty()){ - return l.get(0); - } - return null; - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), true); - - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/customer/lov/personLov.xhtml", options, params); - } - - /** - * Metodo para obtener los codigos - */ - public String codigos(String parametro){ - TgeneParameters tgeneParameters= ParametersController.find(parametro, "1"); - return tgeneParameters.getTextvalue(); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/entries deleted file mode 100644 index 777f2f5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pentaho -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -PentahoController.java -file - - - - -2022-07-28T03:39:55.911601Z -8801e94e5b11e6dee8b268e3268e3b34 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7331 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/text-base/PentahoController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/text-base/PentahoController.java.svn-base deleted file mode 100644 index 828d74e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pentaho/.svn/text-base/PentahoController.java.svn-base +++ /dev/null @@ -1,255 +0,0 @@ -package com.fp.frontend.controller.pentaho; - -import java.io.InputStream; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; -import java.util.Set; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.http.HttpResponse; -import org.apache.http.client.HttpClient; -import org.apache.http.client.methods.HttpPost; -import org.apache.http.impl.client.DefaultHttpClient; -import org.apache.http.impl.client.HttpClientBuilder; -import org.primefaces.model.DefaultStreamedContent; -import org.primefaces.model.StreamedContent; - -import com.fp.common.properties.PropertiesHandler; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.utility.Content; - -/** - * Clase controladora de Pentaho - * @author WPA - * - */ -@ManagedBean -@ViewScoped -public class PentahoController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - /** - * Constuctor - */ - public PentahoController() { - // TODO Auto-generated constructor stub - } - /** - * Inject LoginController - */ - @ManagedProperty(value= "#{loginController}") - private LoginController logincontroler; - /** - * Atributo para la lista tipos de formato - */ - protected List lcontent; - /** - * Atributo para el tipo de formato - */ - private String type; - /** - * Atributo para activar un componente - */ - private boolean active; - /** - * Atributo para el reporte a descargar - */ - private StreamedContent streamedContent; - /** - * Post construct - */ - @PostConstruct - public void postConstruct(){ - this.loadContent(); - } - - /** - * Carga la lista del content type - */ - public void loadContent() { - this.lcontent = new ArrayList(); - this.lcontent.add(new Content("PDF", "application/pdf", "pdf")); - this.lcontent.add(new Content("EXCEL", "application/vnd.ms-excel", "xls")); - } - /** - * Obtiene la url del BI-Server - * @param reporte nombre del reporte.xaction - * @param parameters Mapa de parametros - * @param type Tipo de archivo - * @return url - * @throws Exception - */ - private String getUrlPentaho(String reporte, Map parameters, String type) throws Exception { - PropertiesHandler ph = new PropertiesHandler("pentaho"); - - String url = ph.getStringValue("url_pentaho"); - String auth = ph.getStringValue("pentaho_authenticate"); - - StringBuilder urlPentaho = new StringBuilder(url); - if(auth.equals("N")){ - urlPentaho.append(reporte).append(".xaction").append("&userid=").append("&password="); - }else{ - urlPentaho.append(reporte).append(".xaction").append("&userid=").append(ph.getStringValue("usr_pentaho")).append("&password=").append(ph.getStringValue("pass_pentaho")); - } - Set keys = parameters.keySet(); - for (String key : keys) { - urlPentaho.append("&").append(key).append("=").append(parameters.get(key)); - } - return urlPentaho.append("&outputType=").append(type).toString(); - } - - /** - * Crea el reporte. - * - * @param reporte Nombre del reporte - * @param parameters Mapa de parámetros - * @param type Tipo de reporte - * @throws Exception - */ - private StreamedContent generateReport(String reporte, Map parameters, String type) throws Exception { - String content = ""; - - // se ejecuta la llamada al recurso xaction de pentaho - InputStream inputStream = this.generateTemporalReport(reporte, parameters, type); - - for (Content con : this.lcontent) { - if (type.equals(con.getExtension())) { - content = con.getContentType(); - } - } - return new DefaultStreamedContent(inputStream, content, reporte+"."+type); - } - - /** - * Crea el reporte. - * - * @param reporte Nombre del reporte - * @param parameters Mapa de parámetros - * @param type Tipo de reporte - * @throws Exception - */ - //@SuppressWarnings("deprecation") - public InputStream generateTemporalReport(String reporte, Map parameters, String type) throws Exception { - - // Cliente java - DefaultHttpClient cliente = new DefaultHttpClient(); - //HttpClient cliente = HttpClientBuilder.create().build(); - - String url = this.getUrlPentaho(reporte, parameters, type).replace(" ", "%20"); - - // ACTION HTTP POST - - HttpPost httpPost = new HttpPost(url); - HttpResponse httpResponse = cliente.execute(httpPost); - InputStream inputStream = httpResponse.getEntity().getContent(); - //cliente.close(); - return inputStream; - } - /** - * Llamada al reporte pentaho - * @throws Exception - */ - public void getReport(String nomReporte, Map parameters) throws Exception { - this.streamedContent = this.generateReport(nomReporte, parameters, this.type==null?"pdf":this.type); - } - /** - * Evento al cambiar el tipo de reporte - * @throws Exception - */ - public void changeType() throws Exception{ - if(this.type.equals("PDF")){ - this.active = true; - //this.generarReporte(); - }else{ - this.active = true; - } - } - /** - * Entrega la instancia de LoginController - * @return loginController - */ - public LoginController getLogincontroler() { - return logincontroler; - } - /** - * Fija la instancia de LoginController - * @param loginController - */ - public void setLogincontroler(LoginController logincontroler) { - this.logincontroler = logincontroler; - } - /** - * Entrega la lista de contentType - * - * @return lcontent - */ - public List getLcontent() { - return this.lcontent; - } - - /** - * Fija una lista de contentType - * - * @param lcontent - */ - public void setLcontent(List lcontent) { - this.lcontent = lcontent; - } - /** - * Entrega ek tipo de formato - * @return type - */ - public String getType() { - return type; - } - /** - * Fija ek tipo de formato - * @param type - */ - public void setType(String type) { - this.type = type; - } - /** - * Entrega V/F si es activo - * @return active - */ - public boolean isActive() { - return active; - } - /** - * False V/F si es activo - * @param active - */ - public void setActive(boolean active) { - this.active = active; - } - /** - * Entrega el objeto StreamedContent - * @return streamedContent - */ - public StreamedContent getStreamedContent() { - if (FacesContext.getCurrentInstance().getRenderResponse()) { - return new DefaultStreamedContent(); - } else { - return streamedContent; - } - } - - /** - * Fija el objeto StreamedContent - * @param streamedContent - */ - public void setStreamedContent(StreamedContent streamedContent) { - this.streamedContent = streamedContent; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/.svn/entries deleted file mode 100644 index d3767c3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/.svn/entries +++ /dev/null @@ -1,64 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -lov -dir - -product -dir - -firmas -dir - -proc -dir - -menu -dir - -message -dir - -acco -dir - -trans -dir - -date -dir - -gene -dir - -result -dir - -safe -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/entries deleted file mode 100644 index 02dafea..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AccountStatusController.java -file - - - - -2022-07-28T03:39:55.352598Z -a60590645bf290ad1dcaafc000de70ad -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4355 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/text-base/AccountStatusController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/text-base/AccountStatusController.java.svn-base deleted file mode 100644 index 3901803..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/acco/.svn/text-base/AccountStatusController.java.svn-base +++ /dev/null @@ -1,155 +0,0 @@ -package com.fp.frontend.controller.pgeneral.acco; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.CatalogLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class AccountStatusController extends AbstractController { - - public AccountStatusController() throws Exception { - super(TgeneAccountStatus.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 50; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "ACCOUNTSTATUS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openCatalogLov() { - Map> params = new HashMap<>(); - CatalogLovController.openLov(params); - } - - public void onReturnCatalogLov(SelectEvent event) throws Exception { - TgeneCatalog t = (TgeneCatalog) event.getObject(); - super.addFilter("pk.catalogcode", t.getPk()); - super.addField("catalogname", t.getDescription()); - this.query(); - } - - /** - * Entrega una lista de TgeneAccountStatus. - * @param modulecode Codigo de modulo a buscar estatus de cuentas. - * @return - */ - public static List find(String modulecode) { - try { - AccountStatusController asc = new AccountStatusController(); - asc.init(); - asc.recperpage = 300; - asc.addFilter("pk.modulecode", modulecode); - asc.addFilter("isaccountstatus", "Y"); - asc.querydatabase(); - if ((asc.lrecord != null) && !asc.lrecord.isEmpty()) { - return asc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/entries deleted file mode 100644 index d0acdbe..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date -svn://172.17.26.185/COMACO - - - -2014-11-05T06:52:57.748518Z -2340 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TgeneNotAccountingDayController.java -file - - - - -2022-07-28T03:39:55.455599Z -7ddb790ba13347ad1233146417d0c66d -2014-11-05T06:52:57.748518Z -2340 -fpazmino - - - - - - - - - - - - - - - - - - - - - -10003 - -GenerateAccountingDateController.java -file - - - - -2022-07-28T03:39:55.455599Z -9c5d6338077c910ad17cd8e11f36b718 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5343 - -TgeneAccountingDateBranchController.java -file - - - - -2022-07-28T03:39:55.456599Z -fdc12ef3ee7ed26819244cf97da5a239 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4126 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/GenerateAccountingDateController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/GenerateAccountingDateController.java.svn-base deleted file mode 100644 index 21043fb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/GenerateAccountingDateController.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.frontend.controller.pgeneral.date; - -import java.sql.Date; -import java.util.ArrayList; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; - -/** - * Clase controladora que se encarga de la genracion de calendario de fechas en la tabla TgeneAccountingDate. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class GenerateAccountingDateController extends AbstractController { - - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{tgeneAccountingDateBranchController}") - private TgeneAccountingDateBranchController accountingdate; - - /** - * Lista de dias de domingo a sabado a indicar si es contable o no. - */ - List> ldays; - /** - * Fecha desde la cual se genera el calendaio contable. - */ - private Date initdate; - /** - * Fecha hasta la cual se genera el calendario contable. - */ - private Date enddate; - - public GenerateAccountingDateController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "LISTACCOUNTINDATE"; - ldays = new ArrayList<>(); - this.consultadias(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega el valor de: accountingdate - * @return TgeneAccountingDateBranchController - */ - public TgeneAccountingDateBranchController getAccountingdate() { - return accountingdate; - } - - /** - * Fija el valor de: accountingdate - * @param accountingdate Valor a fijar en el atributo. - */ - - public void setAccountingdate(TgeneAccountingDateBranchController accountingdate) { - this.accountingdate = accountingdate; - } - - /** - * Entrega el valor de: ldays - * @return List> - */ - public List> getLdays() { - return ldays; - } - - /** - * Fija el valor de: ldays - * @param ldays Valor a fijar en el atributo. - */ - public void setLdays(List> ldays) { - this.ldays = ldays; - } - - /** - * Entrega el valor de: initdate - * @return Date - */ - public Date getInitdate() { - return initdate; - } - - /** - * Fija el valor de: initdate - * @param initdate Valor a fijar en el atributo. - */ - - public void setInitdate(Date initdate) { - this.initdate = initdate; - } - - /** - * Entrega el valor de: enddate - * @return Date - */ - public Date getEnddate() { - return enddate; - } - - /** - * Fija el valor de: enddate - * @param enddate Valor a fijar en el atributo. - */ - - public void setEnddate(Date enddate) { - this.enddate = enddate; - } - - @Override - protected void querydatabase() { - } - - @SuppressWarnings("unchecked") - private void consultadias() throws Exception { - try { - Request request = this.callerhelper.getRequest(); - request.modifiedData().put("querytype", "P"); - request.modifiedData().put("queryalias", "LISTACCOUNTINDATE"); - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.ldays.clear(); - MessageHelper.setMessageError(resp); - } else { - this.ldays = (List>) resp.get(this.beanalias); - super.addField("branchcodemin", resp.get("branchcodemin")); - super.addField("branchcodemax", resp.get("branchcodemax")); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - //DtoSave dtosave = super.getDtoSave(); - //HashMap msave = new HashMap(); - //msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - //request.setSaveTables(msave); - request.modifiedData().put("branchcodemin", super.getMfilelds().get("branchcodemin")); - request.modifiedData().put("branchcodemax", super.getMfilelds().get("branchcodemax")); - request.modifiedData().put("initdate", this.initdate); - request.modifiedData().put("enddate", this.enddate); - request.modifiedData().put("LISTACCOUNTINDATE", ldays); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchController.java.svn-base deleted file mode 100644 index 56d697f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneAccountingDateBranchController.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.frontend.controller.pgeneral.date; - -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.date.TgeneAccountingDateBranch; - -/** - * Clase controladora del bean TgeneAccountingDateBranch. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TgeneAccountingDateBranchController extends AbstractController { - - public TgeneAccountingDateBranchController() throws Exception { - super(TgeneAccountingDateBranch.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "ACCOUNTINGDATE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk"); // En en string van todos los campos de - // orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - MessageHelper.setMessageError(resp); - } else { - this.record = (TgeneAccountingDateBranch) resp.get(this.beanalias); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega la fecha contable de la aplicacin. - * @return Fecah contable. - * @throws Exception - */ - public Date getAccountingDate() throws Exception { - TgeneAccountingDateBranchController c = new TgeneAccountingDateBranchController(); - c.getMfilters().clear(); - c.getMfilters().put("pk.branchcode", "0"); - c.getMfilters().put("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - c.querydatabase(); - return c.record.getAccountingdate(); - } - - /** - * Entrega la fecha contable de la aplicacin. - * @return Fecah contable. - * @throws Exception - */ - public static TgeneAccountingDateBranch find(Integer company) throws Exception { - TgeneAccountingDateBranchController c = new TgeneAccountingDateBranchController(); - c.getMfilters().clear(); - c.getMfilters().put("pk.branchcode", "0"); - c.getMfilters().put("pk.companycode", company.toString()); - c.querydatabase(); - return c.record; - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneNotAccountingDayController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneNotAccountingDayController.java.svn-base deleted file mode 100644 index 243bef1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/date/.svn/text-base/TgeneNotAccountingDayController.java.svn-base +++ /dev/null @@ -1,302 +0,0 @@ -package com.fp.frontend.controller.pgeneral.date; - -import java.util.ArrayList; -import java.util.Calendar; -import java.util.Date; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.solicitud.SolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.date.TgeneNotAccountingDay; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TgeneNotAccountingDay. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TgeneNotAccountingDayController extends AbstractController { - - private static final long serialVersionUID = 1L; - private List lmonths; - - - public TgeneNotAccountingDayController() throws Exception { - super(TgeneNotAccountingDay.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "NONACCOUNTINGDATE"; - lmonths = CatalogDetailController.find("MONTHS"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void create() throws Exception { - super.create(); - record.setCatalogcode("MONTHS"); - record.modifiedData.put("monthdesc", lmonths.get(0).getDescription()); - } - - /** - * Entrega el valor de: lmonths - * @return List - */ - public List getLmonths() { - return lmonths; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.catalog, t.pk.day"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - SubQuery subquery = new SubQuery("TgeneCatalogDetail", "description", "monthdesc", - "i.pk.catalogcode = t.catalogcode and i.pk.catalog = t.pk.catalog"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void refreshMonth() { - for (TgeneCatalogDetail catdet : lmonths) { - if (catdet.getPk().getCatalog().compareTo(record.getPk().getCatalog()) == 0) { - record.modifiedData.put("monthdesc", catdet.getDescription()); - break; - } - } - } - - /* - * Metodo que retorna una fecha la cual es NDiasLaborablesPrevios anteriores a la fecha que es pasada como parametro - * @param NDiasLaborablesPrevios - Entero positivo que indica el numero de dias previos buscados - * */ - public static Date diasLaborablesPreviosAUnaFecha(Date fecha, int NDiasLaborablesPrevios){ - try { - TgeneNotAccountingDayController cc = new TgeneNotAccountingDayController(); - Calendar fechaCalendar = Calendar.getInstance(); - fechaCalendar.setTime(fecha); - int numDiasEncontrados = 0; - while(numDiasEncontrados < NDiasLaborablesPrevios){ - fechaCalendar.add(Calendar.DAY_OF_MONTH, -1); - if(fechaCalendar.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && fechaCalendar.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY){ - cc.init(); - cc.recperpage = 300; - String codigoMes = String.valueOf(fechaCalendar.get(Calendar.MONTH)); - codigoMes=((codigoMes.length()==1)?"0"+codigoMes:codigoMes); - - Integer dia = fechaCalendar.get(Calendar.DAY_OF_MONTH); - TgeneNotAccountingDay diaNoLaborable = findByCatalogDay(codigoMes, dia); - if(diaNoLaborable==null){ - numDiasEncontrados+=1; - } - continue; - } - else{ - fechaCalendar.add(Calendar.DAY_OF_MONTH, -1); - } - } - return fechaCalendar.getTime(); - - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } - } - - /* - * Metodo que retorna una fecha la cual es NDiasLaborablesPrevios posterior a la fecha que es pasada como parametro - * @param NDiasLaborablesPosteriores - Entero positivo que indica el numero de dias posterior de la fecha buscada - * */ - public static Date diasLaborablesPosterioresAUnaFecha(Date fecha, int NDiasLaborablesPosteriores){ - try { - TgeneNotAccountingDayController cc = new TgeneNotAccountingDayController(); - Calendar fechaCalendar = Calendar.getInstance(); - fechaCalendar.setTime(fecha); - int numDiasEncontrados = 0; - while(numDiasEncontrados < NDiasLaborablesPosteriores){ - fechaCalendar.add(Calendar.DAY_OF_MONTH, 1); - if(fechaCalendar.get(Calendar.DAY_OF_WEEK)!=Calendar.SATURDAY && fechaCalendar.get(Calendar.DAY_OF_WEEK)!=Calendar.SUNDAY){ - cc.init(); - cc.recperpage = 300; - String codigoMes = String.valueOf(fechaCalendar.get(Calendar.MONTH)); - codigoMes=((codigoMes.length()==1)?"0"+codigoMes:codigoMes); - - Integer dia = fechaCalendar.get(Calendar.DAY_OF_MONTH); - TgeneNotAccountingDay diaNoLaborable = findByCatalogDay(codigoMes, dia); - if(diaNoLaborable==null){ - numDiasEncontrados+=1; - } - continue; - } - else{ - fechaCalendar.add(Calendar.DAY_OF_MONTH, 1); - } - } - return fechaCalendar.getTime(); - - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - return null; - } - } - - public static TgeneNotAccountingDay findByCatalogDay(String codigoMes, Integer dia){ - try { - TgeneNotAccountingDayController cc = new TgeneNotAccountingDayController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalog", codigoMes); - cc.addFilter("pk.day", dia.toString()); - cc.querydatabase(); - if (cc.lrecord.size()>0) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static Boolean findDay(Integer codigoMes, Integer dia){ - try { - TgeneNotAccountingDayController cc = new TgeneNotAccountingDayController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalog", codigoMes.toString()); - cc.addFilter("pk.day", dia.toString()); - cc.querydatabase(); - if (cc.lrecord.size()>0) { - return true; - } - return false; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - public static Date isfechalaboral(Date fechalaboral){ - Calendar calendario = Calendar.getInstance(); - calendario.setTime(fechalaboral); - if(calendario.get(Calendar.DAY_OF_WEEK)==Calendar.SATURDAY || calendario.get(Calendar.DAY_OF_WEEK)==Calendar.SUNDAY){ - calendario.add(Calendar.DAY_OF_YEAR,1); - fechalaboral=isfechalaboral(calendario.getTime()); - } - - if(findDay(fechalaboral.getMonth(),fechalaboral.getDay())){ - calendario.add(Calendar.DAY_OF_YEAR,1); - fechalaboral=isfechalaboral(calendario.getTime()); - } - - - return fechalaboral; - - } - public static Boolean findDaynuevo(String codigoMes, Integer dia){ - try { - TgeneNotAccountingDayController cc = new TgeneNotAccountingDayController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalog", codigoMes); - cc.addFilter("pk.day", dia.toString()); - cc.querydatabase(); - if (cc.lrecord.size()>0) { - return true; - } - return false; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/entries deleted file mode 100644 index bdf11cd..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CertificadosController.java -file - - - - -2022-07-28T03:39:55.077597Z -86d8d67e9f36b23a801bcda349a447de -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -10648 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/text-base/CertificadosController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/text-base/CertificadosController.java.svn-base deleted file mode 100644 index bdb786b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/firmas/.svn/text-base/CertificadosController.java.svn-base +++ /dev/null @@ -1,291 +0,0 @@ -package com.fp.frontend.controller.pgeneral.firmas; - -import java.io.ByteArrayInputStream; -import java.io.IOException; -import java.io.InputStream; -import java.security.KeyStore; -import java.security.KeyStoreException; -import java.security.NoSuchAlgorithmException; -import java.security.cert.Certificate; -import java.security.cert.CertificateException; -import java.sql.Date; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.crypto.BadPaddingException; -import javax.faces.application.FacesMessage; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.io.IOUtils; -import org.primefaces.event.FileUploadEvent; -import org.primefaces.event.SelectEvent; - -import com.fp.base.persistence.TfirmDatosFirmante; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.firmas.rules.common.CertificateUtils; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pfirmas.param.TfirmCertificado; - -@ManagedBean -@ViewScoped -public class CertificadosController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private boolean existeCertificado; - - public CertificadosController() throws Exception { - super(TfirmCertificado.class); - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - recperpage = 10; // Cambiar al # reg a mirar. - lrecord = new ArrayList<>(); - beanalias = "USUARIOCERTIFICADOS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - public void querydatabase() { - try { - Request request = callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(Boolean.TRUE); - - HashMap mtable = new HashMap(); - mtable.put(beanalias, dto); - - request.setQueryTables(mtable); - - request.put("queryalias", beanalias); - - Response response = callerhelper.executeQuery(request); - - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - lrecord = (List) response.get(beanalias); - super.postQuery(lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = callerhelper.getRequest(); - DtoSave dto = super.getDtoSave(); - if (!dto.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(beanalias, dto); - request.setSaveTables(msave); - Response response = callerhelper.executeSave(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(response); - - MessageHelper.setMessageInfo(response); - } else { - MessageHelper.setMessageError(response); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método que abre el LOV de empleados y setea los parámetros definidos - */ - public void abrirLovEmpleado() { - Map> paramsLov = new HashMap>(); - // LovEmpleadoSbsController.openLov(paramsLov); - } - - /** - * Método que se invoca al regresar desde el LOV de empleados un p:dialog - * - * @param event - * @throws Exception - */ - public void retornoServidor(SelectEvent event) throws Exception { - /* - * Empleado e = (Empleado) event.getObject(); this.addFilter("codigousuario", e.getUsuarioweb()); - * this.addField("nom_servidor", e.getNombre()); - */ - } - - /** - * Método que se invoca al retornar del segundo LOV de empleados - * - * @param event - */ - public void retornoPopupCreacion(SelectEvent event) { - /* - * Empleado e = (Empleado) event.getObject(); // this.record.modifiedData.put("codigousuario", e.getCodigo()); - * this.record.modifiedData.put("nom_servidor", e.getNombre()); // - * this.record.modifiedData.put("cargo_servidor", e.getCargo()); - * this.record.setCodigousuario(e.getUsuarioweb()); this.record.setCargo(e.getCargo()); - */ - } - - /** - * Sobreescribo el metodo update del popup para que genere los datos del certificado - */ - @Override - public void update() throws Exception { - try { - if (record.modifiedData.get("nom_servidor") == null) { - throw new RuntimeException("Debe ingresar el empleado"); - } - if (record.modifiedData.get("valor_certificado_bin") != null) { - // valido los datos adicionales a agregar para enviar datos a la capa de negocio donde se procesara la - // logica de almacenamiento - TfirmDatosFirmante datosFirmante = generacionDatosArchivo(record.getPk().getIdcertificado(), new ByteArrayInputStream((byte[]) record - .getModifiedData().get("valor_certificado_bin"))); - record.getPk().setFcaducidad(new Date(datosFirmante.getFechaVigencia().getTime())); - record.setFingreso(new Date(System.currentTimeMillis())); - record.setFvigencia(new Date(datosFirmante.getFechaInicioVigencia().getTime())); - record.modifiedData.put("nom_certificado", datosFirmante.getNombre()); - record.modifiedData.put("estado_certificado", - datosFirmante.getFechaVigencia().compareTo(new Date(System.currentTimeMillis())) >= 0 ? "VIGENTE" : "CADUCADO"); - super.update(); - } else { - throw new RuntimeException("Debe a\u00f1adir un archivo para grabar"); - } - } catch (IOException e) { - FacesContext.getCurrentInstance().validationFailed(); - if (e.getCause() instanceof BadPaddingException) { - MessageHelper.setMessageError(new RuntimeException("La clave del certificado es incorrecta")); - } - } catch (Throwable e) { - FacesContext.getCurrentInstance().validationFailed(); - MessageHelper.setMessageError(e); - } - } - - /** - * Carga un documento y lo almacena en memoria - * - * @param event - */ - public void uploadCertificado(FileUploadEvent event) { - try { - // this.existeCertificado = true; - APPLogger.getLogger().info("Ingreso a subir el documento"); - record.getPk().setIdcertificado(event.getFile().getFileName()); - record.modifiedData.put("valor_certificado_bin", IOUtils.toByteArray(event.getFile().getInputstream())); - - FacesContext.getCurrentInstance().addMessage(null, - new FacesMessage(FacesMessage.SEVERITY_INFO, "Archivo subido correctamente", "Archivo subido correctamente")); - } catch (IOException e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna datos del firmante antes de que se envie los datos a grabar - * - * @param nombreArchivo - * @param datosArchivo - * @return - * @throws KeyStoreException - * @throws NoSuchAlgorithmException - * @throws CertificateException - * @throws IOException - */ - private TfirmDatosFirmante generacionDatosArchivo(String nombreArchivo, InputStream datosArchivo) throws KeyStoreException, - NoSuchAlgorithmException, CertificateException, IOException { - KeyStore ks = KeyStore.getInstance("PKCS12"); - ks.load(datosArchivo, record.modifiedData.get("password_certificado").toString().toCharArray()); - Certificate certificate = CertificateUtils.obtainCertificateInAlias(ks, ks.aliases()); - return CertificateUtils.obtainDataForCertificate(certificate); - } - - /** - * Entrega una lista de objetos TfirmCertificado - * - * @return lrecord Lista de objetos TfirmCertificado - */ - public static List find() { - try { - CertificadosController cc = new CertificadosController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * - * @param certificado Có de certificado - * @return record Objeto TfirmCertificado - */ - public static TfirmCertificado find(String usuario) { - try { - CertificadosController cc = new CertificadosController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("codigousuario", usuario); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega V/F - * - * @return existeCertificado - */ - public boolean isExisteCertificado() { - return existeCertificado; - } - - /** - * Fija V/F - * - * @param existeCertificado - */ - public void setExisteCertificado(boolean existeCertificado) { - this.existeCertificado = existeCertificado; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/entries deleted file mode 100644 index acecab3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/entries +++ /dev/null @@ -1,946 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -OfficeController.java -file - - - - -2022-07-28T03:39:55.546599Z -3a0177f2db35d5cbffa80e6104d49a3b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5733 - -CatalogDetailBpmController.java -file - - - - -2022-07-28T03:39:55.547599Z -eeda72be93ff2009cb01151c36c82fd1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4176 - -OfficeAndBranchController.java -file - - - - -2022-07-28T03:39:55.547599Z -c308a5e849ed6749520ba9569d0b542b -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7708 - -CatalogDetailController.java -file - - - - -2022-07-28T03:39:55.547599Z -33041317256348f20cb3d2f4a1170089 -2015-12-29T18:39:25.156109Z -4363 -cvasquez - - - - - - - - - - - - - - - - - - - - - -11115 - -BranchController.java -file - - - - -2022-07-28T03:39:55.547599Z -85ccb307670ca78aaaefcf418fa82316 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4599 - -BalanceGroupController.java -file - - - - -2022-07-28T03:39:55.548599Z -236755917ed017df6443ff49e8bb57a4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4036 - -CountryController.java -file - - - - -2022-07-28T03:39:55.548599Z -9c58be641c161c05a631b07ed33f2209 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4849 - -ParametersController.java -file - - - - -2022-07-28T03:39:55.548599Z -a6ca963bfcb45f20802256e4d0cd84ff -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4265 - -ParroquiaController.java -file - - - - -2022-07-28T03:39:55.548599Z -b4fdf86161109c0604eaa5b314413233 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6152 - -QueryProcessController.java -file - - - - -2022-07-28T03:39:55.549599Z -8ba706a7be398ffda0d4e514febddac0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4943 - -QueryController.java -file - - - - -2022-07-28T03:39:55.549599Z -f3e738316adf6b9c8b1451495aafcacf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4548 - -CityController.java -file - - - - -2022-07-28T03:39:55.550599Z -6e70254a61345dd1d69b7ef0608de745 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6962 - -ChannelController.java -file - - - - -2022-07-28T03:39:55.549599Z -2d1e29853506412ac378658340e8cdad -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3677 - -AreaController.java -file - - - - -2022-07-28T03:39:55.549599Z -9c5e24e963d679fc6437a26e3563a513 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3706 - -CatalogController.java -file - - - - -2022-07-28T03:39:55.550599Z -2972086b81e57b439d881c8bbf7449e4 -2014-10-30T13:23:37.177735Z -2257 -wpatino - - - - - - - - - - - - - - - - - - - - - -3450 - -TransactionQueryController.java -file - - - - -2022-07-28T03:39:55.550599Z -4656f7b5b11caaba5ac1c59e00d33b4e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8309 - -ChargesController.java -file - - - - -2022-07-28T03:39:55.550599Z -14f6ad010b59f915a071caa1a59a32ae -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4178 - -TerminosCondicionesController.java -file - - - - -2022-07-28T03:39:55.551599Z -ae898997f4ef7bc217755ac24a84c848 -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3729 - -CantonController.java -file - - - - -2022-07-28T03:39:55.551599Z -fd61704d3c4cf97cb7c166de03500afe -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6692 - -LanguageController.java -file - - - - -2022-07-28T03:39:55.551599Z -545fdbe4cf710e810c1005b68492b50e -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3697 - -ServicesController.java -file - - - - -2022-07-28T03:39:55.551599Z -d948157cb2ff5a5e2ab4355bbb913c24 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4711 - -ChargesDefinitionController.java -file - - - - -2022-07-28T03:39:55.552599Z -16d497ff1325363f87ae35c387451e85 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -11120 - -ProvinceController.java -file - - - - -2022-07-28T03:39:55.552599Z -74bcde7943f5fc6bb6f505b4d48a3fd9 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7412 - -BalanceTypeController.java -file - - - - -2022-07-28T03:39:55.552599Z -3045fbfceaf1b0a196cbbd607ad7f6ed -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3919 - -SubProductChargesController.java -file - - - - -2022-07-28T03:39:55.552599Z -4a9efb3f1c932c8ba59da64530313520 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5121 - -ChargesGroupController.java -file - - - - -2022-07-28T03:39:55.553599Z -dc4fa76179dabb6a0e7a3e9e8a002f77 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6610 - -CurrencyController.java -file - - - - -2022-07-28T03:39:55.553599Z -f832b5a0085ffbb84514750b16b6b578 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3689 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/AreaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/AreaController.java.svn-base deleted file mode 100644 index 65f48d1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/AreaController.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneArea; - -/** - * Clase controladora del bean TgeneArea. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class AreaController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public AreaController() throws Exception { - super(TgeneArea.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANNEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de - // orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega una lista de objetos TgeneArea - * - * @return lchannels Lista de objetos TgeneArea - */ - public static List find(String company) { - try { - AreaController cc = new AreaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.companycode", company); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceGroupController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceGroupController.java.svn-base deleted file mode 100644 index d8637db..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceGroupController.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBalanceGroup; - -/** - * Clase controladora del bean TgeneBalanceGroup. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class BalanceGroupController extends AbstractController { - - public BalanceGroupController() throws Exception { - super(TgeneBalanceGroup.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "BALANCEGROUP"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - public static List find() { - try { - BalanceGroupController bgc = new BalanceGroupController(); - bgc.init(); - bgc.recperpage = 300; - bgc.querydatabase(); - if (bgc.lrecord != null && !bgc.lrecord.isEmpty()) { - return bgc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceTypeController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceTypeController.java.svn-base deleted file mode 100644 index b92ffe9..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BalanceTypeController.java.svn-base +++ /dev/null @@ -1,143 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBalanceGroup; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; -import com.fp.persistence.pgeneral.product.TgeneModule; - -/** - * Clase controladora del bean TgeneBalanceType. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class BalanceTypeController extends AbstractController { - /** - * Lista de modulos. - */ - private List lmodule; - /** - * Lista de grupos de balance. - */ - private List lbalancegroup; - - public BalanceTypeController() throws Exception { - super(TgeneBalanceType.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "BALANCETYPE"; - lmodule = ModuleController.find(); - lbalancegroup = BalanceGroupController.find(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega el valor de: lmodule - * @return List - */ - public List getLmodule() { - return lmodule; - } - - /** - * Entrega el valor de: lbalancegroup - * @return List - */ - public List getLbalancegroup() { - return lbalancegroup; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.balancetype"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BranchController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BranchController.java.svn-base deleted file mode 100644 index 0dc06a5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/BranchController.java.svn-base +++ /dev/null @@ -1,151 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBranch; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class BranchController extends AbstractController { - - - private static final long serialVersionUID = 1L; - - public BranchController() throws Exception { - super(TgeneBranch.class); - } - - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEBRANCH"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - } - - @Override - public void create(){ - try{ - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - }catch(Exception ex){ - - } - } - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //super.getMfilters().put("pk.branchcode", "!=0"); - if(super.getMfilters().get("pk.companycode")==null || super.getMfilters().get("pk.companycode").equals("")){ - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - } - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.branchcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public static List find(String company) { - try { - BranchController bc = new BranchController(); - bc.init(); - bc.recperpage = 300; - bc.addFilter("pk.companycode", company); - bc.querydatabase(); - if (bc.lrecord != null && !bc.lrecord.isEmpty()) { - return bc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CantonController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CantonController.java.svn-base deleted file mode 100644 index b856af6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CantonController.java.svn-base +++ /dev/null @@ -1,198 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TgeneProvince. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CantonController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CantonController() throws Exception { - super(TgeneCanton.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CANTON"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega el listado objetos TgeneCanton provincias - * - * @param countrycode Código de país - * @param provincecode Código de provincia - * @return lrecord Lista de objetos TgeneCanton - */ - public static List find(String countrycode, String provincecode) { - try { - CantonController cc = new CantonController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo para buscar por codigo de ciudad - * @param citycode - * @return - */ - public static List findPorCodigo(String countrycode, String provincecode, String cantoncode){ - try { - CantonController cc = new CantonController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar el nombre del canton atraves del codigo - * @param provincecode - * @return - */ - public static String getDescCantonByCodigo(String countrycode, String provincecode, String cantoncode){ - try { - if(countrycode==null || provincecode==null || cantoncode==null || countrycode.isEmpty() || provincecode.isEmpty() || cantoncode.isEmpty()){ - return null; - } - CantonController cc = new CantonController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TgeneCanton canton = cc.lrecord.get(0); - if(canton.getDescription()!=null){ - return canton.getDescription(); - }else{ - return ""; - } - } - return ""; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return ""; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogController.java.svn-base deleted file mode 100644 index 3cb0caa..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogController.java.svn-base +++ /dev/null @@ -1,119 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pentaho.PentahoController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CatalogController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public CatalogController() throws Exception { - super(TgeneCatalog.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailBpmController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailBpmController.java.svn-base deleted file mode 100644 index 71e0af0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailBpmController.java.svn-base +++ /dev/null @@ -1,146 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.CatalogLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetailTest; - -/** - * Clase controladora del bean TgeneCatalogDetailTest. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CatalogDetailBpmController extends AbstractController { - - /** - * - */ - private static final long serialVersionUID = 1L; - - public CatalogDetailBpmController() throws Exception { - super(TgeneCatalogDetailTest.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.catalogcode") == null) { - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.create(); - this.record.getPk().setCatalogcode(super.getMfilters().get("pk.catalogcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.catalog"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void openCatalogLov() { - Map> params = new HashMap<>(); - CatalogLovController.openLov(params); - } - - public void onReturnCatalogLov(SelectEvent event) throws Exception { - TgeneCatalog t = (TgeneCatalog) event.getObject(); - super.addFilter("pk.catalogcode", t.getPk()); - super.addField("catalogname", t.getDescription()); - this.query(); - } - - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailController.java.svn-base deleted file mode 100644 index 0dd5aff..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CatalogDetailController.java.svn-base +++ /dev/null @@ -1,367 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.CatalogLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora del bean TgeneCatalogDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CatalogDetailController extends AbstractController { - - public CatalogDetailController() throws Exception { - super(TgeneCatalogDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.catalogcode") == null) { - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - super.create(); - this.record.getPk().setCatalogcode(super.getMfilters().get("pk.catalogcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void openCatalogLov() { - Map> params = new HashMap<>(); - CatalogLovController.openLov(params); - } - - public void onReturnCatalogLov(SelectEvent event) throws Exception { - TgeneCatalog t = (TgeneCatalog) event.getObject(); - super.addFilter("pk.catalogcode", t.getPk()); - super.addField("catalogname", t.getDescription()); - this.query(); - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String catalogcode) { - try { - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 10000; - cc.addFilter("pk.catalogcode", catalogcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @param legalcode Código legal - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String catalogcode, String legalcode) { - try { - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("legalcode", legalcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @param catalog Código catalogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List findCatalog(String catalogcode, String catalog) { - try { - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Encuentra por los codigos de catalogo - * @param catalogcode - * @param catalog - * @return - */ - public static TgeneCatalogDetail findCatalogo(String catalogcode, String catalog) { - try { - if(catalogcode==null || catalog ==null || catalogcode.isEmpty() || catalog.isEmpty()){ - return null; - } - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que consulta por Catalog y Catalogcode ambos requeridos - */ - public static TgeneCatalogDetail findxCodigoCodcatalogo(String catalog, String catalogcode) { - try {//TgeneCatalogDetailKey - if(catalog!=null && catalogcode!=null){ - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene un elemento del catalogo por su codigo - * @param catalog - * @return - */ - public static TgeneCatalogDetail findxCodigo(String catalog) { - try {//TgeneCatalogDetailKey - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalog", catalog); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Obtiene un elemento del catalogo por su codigo de catalogo - * @param catalog - * @return - */ - public static List findByCatalogcode(String catalogcode) { - try {//TgeneCatalogDetailKey - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.querydatabase(); - if (cc.lrecord !=null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Obtiene un elemento del catalogo por su codigo de catalogo - * y descripcion - * @param catalog - * @return - */ - public static TgeneCatalogDetail findByCatalogcodeDescrption(String catalogcode,String descrption) { - try {//TgeneCatalogDetailKey - - if(catalogcode==null || descrption ==null || catalogcode.isEmpty() || descrption.isEmpty()){ - return null; - } - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("description", descrption); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo que llena lal lista de géneros - */ - public static List getListGender(){ - List gender = new ArrayList(); - String[] male = {"M", "MASCULINO"}; - String[] female = {"F", "FEMENINO"}; - gender.add(male); - gender.add(female); - return gender; - } - - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * @param catalogcode Có de catálogo - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List findClientType(String catalogcode, String legalcode) { - try { - CatalogDetailController cc = new CatalogDetailController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.catalogcode", catalogcode); - cc.addFilter("legalcode", legalcode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChannelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChannelController.java.svn-base deleted file mode 100644 index 4cde231..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChannelController.java.svn-base +++ /dev/null @@ -1,135 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneChannels; - -/** - * Clase controladora del bean TgeneChannels. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ChannelController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ChannelController() throws Exception { - super(TgeneChannels.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANNEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega una lista de objetos TgeneChannels - * @return lchannels Lista de objetos TgeneChannels - */ - public static List find(){ - try { - ChannelController cc = new ChannelController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesController.java.svn-base deleted file mode 100644 index 46c9444..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesController.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.BalanceTypeLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.charge.TgeneCharges; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; - -/** - * Clase controladora del bean TgeneCharges. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ChargesController extends AbstractController { - - - public ChargesController() throws Exception { - super(TgeneCharges.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 12; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CHARGES"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.modulecode") == null) { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - super.create(); - this.record.getPk().setModulecode( super.getMfilters().get("pk.modulecode")); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - if(super.getMfilters().get("pk.modulecode")==null){ - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - //super.addFilter("pk.modulecode", super.getMfilelds().get("modulecode").toString()); - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.balancetype, t.pk.balancegroup"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesDefinitionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesDefinitionController.java.svn-base deleted file mode 100644 index 3376c0c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesDefinitionController.java.svn-base +++ /dev/null @@ -1,399 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.acco.AccountStatusController; -import com.fp.frontend.controller.pgeneral.lov.BalanceTypeLovController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.controller.pgeneral.product.ProductController; -import com.fp.frontend.controller.pgeneral.product.SubProductController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; - -/** - * Clase controladora de definicion de cargos generales y cargos por subproducto. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ChargesDefinitionController extends AbstractController { - - public ChargesDefinitionController() throws Exception { - super(AbstractDataTransport.class); - } - - @ManagedProperty(value = "#{chargesController}") - private ChargesController charges; - - @ManagedProperty(value = "#{subProductChargesController}") - private SubProductChargesController subproduct; - - /** - * Id del tab activo. - */ - private String tabid = "charges"; - - /** - * Atributo lista de objetos TgeneModule - */ - private List lmodules; - - /** - * Lista de estatus de cuentas asociados a un modulo. - */ - private List laccountstatus; - - /** - * Atributo para la lista de objetos TgeneCurrency - */ - private List lcurrency; - - /** - * Atributo V/F render button - */ - private boolean active; - - /** - * Lista de productos pertenecientes a un modulo. - */ - private List lproduct; - /** - * Lista de subproductos pertenecientes al producto. - */ - private List lsubproduct; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.lmodules = ModuleController.find(); - this.lcurrency = CurrencyController.find(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void onTabChange(TabChangeEvent event) throws Exception { - this.tabid = event.getTab().getId(); - if(this.tabid.equals("charges")){ - this.active = false; - }else{ - this.active = true; - } - } - - - @Override - public void query() { - try { - if(this.tabid.equals("charges") ){ - this.charges.query(); - }else { - this.subproduct.query(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() { - try { - try { - if(this.tabid.equals("charges") ){ - this.charges.next(); - }else { - this.subproduct.next(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void previous() { - try { - if(this.tabid.equals("charges") ){ - this.charges.previous(); - }else { - this.subproduct.previous(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosaveprod = this.charges.getDtoSave(); - if(dtosaveprod.pendingProcess()){ - dtosaveprod.setReturnpk(true); - msave.put(this.charges.getBeanalias(), dtosaveprod); // adicionar metadata de mantenimiento para cada tabla. - } - DtoSave dtosavesubpro = this.subproduct.getDtoSave(); - if(dtosavesubpro.pendingProcess()){ - dtosavesubpro.setReturnpk(true); - msave.put(this.subproduct.getBeanalias(), dtosavesubpro); // adicionar metadata de mantenimiento para cada tabla. - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.charges.postCommit(resp); - this.subproduct.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - } - - @Override - public void postCommit(Response response) throws Exception { - } - - - - /** - * Actualzia el campo modulecode en cada controlador que esta inyectado. La actualizacion se realiza cuando cambia el modulo en la pantalla. - * @throws Exception - */ - public void updatemodule() throws Exception { - String modulecode = super.getMfilters().get("pk.modulecode"); - this.charges.addFilter("pk.modulecode", modulecode); - this.subproduct.addFilter("pk.modulecode", modulecode); - this.subproduct.addFilter("pk.productcode", null); - this.subproduct.addFilter("pk.subproductcode", null); - this.getProducts(); - laccountstatus = AccountStatusController.find(modulecode); - this.charges.setLrecord(null); - } - - /** - * Refresca la lista de productos dado un codigo de modulo. - * @param modulecode Codigo de modulo. - * @throws Exception - */ - public void getProducts() { - try{ - if(super.getMfilters().get("pk.modulecode")!=null){ - this.lproduct = ProductController.find(super.getMfilters().get("pk.modulecode")); - this.lsubproduct = new ArrayList<>(); - this.subproduct.setLrecord(null); - }else{ - this.lproduct = new ArrayList<>(); - this.lsubproduct = new ArrayList<>(); - this.subproduct.setLrecord(null); - } - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - - } - - /** - * Refresca lista de subproductos, dado el codigo de modulo y de producto. - * @param modulecode Codigo de modulo. - * @param productcode Codigo de producto. - * @throws Exception - */ - public void getSubProducts() { - try{ - if(super.getMfilters().get("pk.productcode")!=null){ - this.subproduct.addFilter("pk.productcode", super.getMfilters().get("pk.productcode")); - this.lsubproduct = SubProductController.find( super.getMfilters().get("pk.modulecode"), super.getMfilters().get("pk.productcode")); - this.subproduct.setLrecord(null); - }else{ - this.lsubproduct = new ArrayList<>(); - this.subproduct.addFilter("pk.productcode", null); - } - - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - } - - public void refreshSubProduct(){ - if(super.getMfilters().get("pk.subproductcode")!=null){ - this.subproduct.addFilter("pk.subproductcode", super.getMfilters().get("pk.subproductcode")); - }else{ - this.subproduct.addFilter("pk.subproductcode", null); - this.subproduct.setLrecord(null); - } - } - - /** - * Lov de tipos de saldo. - */ - public void openBalancetypeLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add(super.getMfilters().get("pk.modulecode").toString()); - - params.put("modulecode", l); - List lcat = new ArrayList<>(); - lcat.add("CHARGES"); - params.put("category", lcat); - BalanceTypeLovController.openLov(params); - } - - /** - * Fija datos del tipo de saldo al cerrar el lov. - * @param event - * @throws Exception - */ - public void onReturnBalancetypeLovCharges(SelectEvent event) throws Exception { - TgeneBalanceType t = (TgeneBalanceType) event.getObject(); - this.charges.getRecord().getPk().setBalancetype(t.getPk().getBalancetype()); - this.charges.getRecord().getPk().setBalancegroup(t.getPk().getBalancegroup()); - } - - /** - * Fija datos del tipo de saldo al cerrar el lov. - * @param event - * @throws Exception - */ - public void onReturnBalancetypeLovSub(SelectEvent event) throws Exception { - TgeneBalanceType t = (TgeneBalanceType) event.getObject(); - this.subproduct.getRecord().getPk().setBalancetype(t.getPk().getBalancetype()); - this.subproduct.getRecord().getPk().setBalancegroup(t.getPk().getBalancegroup()); - } - - /** - * Entrega el valor de: lmodules - * @return List - */ - public List getLmodules() { - return this.lmodules; - } - - /** - * Entrega el valor de: charges - * @return ChargesController - */ - public ChargesController getCharges() { - return this.charges; - } - - /** - * Fija el valor de: charges - * @param charges Valor a fijar en el atributo. - */ - - public void setCharges(ChargesController charges) { - this.charges = charges; - } - - /** - * Entrega el valor de: subproduct - * @return SubProductChargesController - */ - public SubProductChargesController getSubproduct() { - return this.subproduct; - } - - /** - * Fija el valor de: subproduct - * @param subproduct Valor a fijar en el atributo. - */ - - public void setSubproduct(SubProductChargesController subproduct) { - this.subproduct = subproduct; - } - - /** - * Entrega el valor de: laccountstatus - * @return List - */ - public List getLaccountstatus() { - return this.laccountstatus; - } - - - /** - * Entrega el valor de: lcurrency - * @return List - */ - public List getLcurrency() { - return this.lcurrency; - } - - /** - * Entrega V/F si es activo - * @return active - */ - public boolean isActive() { - return active; - } - - /** - * Fina V/F si es activo o no - * @param active - */ - public void setActive(boolean active) { - this.active = active; - } - - /** - * Entrega el valor de: lproduct - * @return List - */ - public List getLproduct() { - return lproduct; - } - - /** - * Entrega el valor de: lsubproduct - * @return List - */ - public List getLsubproduct() { - return lsubproduct; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesGroupController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesGroupController.java.svn-base deleted file mode 100644 index ce06f43..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ChargesGroupController.java.svn-base +++ /dev/null @@ -1,223 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.acco.AccountStatusController; -import com.fp.frontend.controller.pgeneral.lov.BalanceTypeLovController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.acco.TgeneAccountStatus; -import com.fp.persistence.pgeneral.charge.TgeneChargesGroup; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; -import com.fp.persistence.pgeneral.product.TgeneModule; - -/** - * Clase controladora del bean TgeneChargesGroup. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ChargesGroupController extends AbstractController { - - private List lmodules; - private List lgroups; - /** - * Lista de estatus de cuentas asociados a un modulo. - */ - private List laccountstatus; - - private List lcurrency; - - public ChargesGroupController() throws Exception { - super(TgeneChargesGroup.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CHARGESGROUP"; - lgroups = CatalogDetailController.find("CHARGES"); - lmodules = ModuleController.find(); - lmodules = ModuleController.find(); - lcurrency = CurrencyController.find(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - String modulecode = super.getMfilters().get("pk.modulecode"); - if (modulecode == null) { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - super.create(); - this.record.getPk().setModulecode( modulecode ); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.getPk().setChargecatalogcode("CHARGES"); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.balancetype, t.pk.balancegroup"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - dtosave.setReturnpk(true); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Lov de tipos de saldo. - */ - public void openBalancetypeLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add(super.getMfilters().get("pk.modulecode").toString()); - - params.put("modulecode", l); - List lcat = new ArrayList<>(); - lcat.add("CHARGES"); - params.put("category", lcat); - BalanceTypeLovController.openLov(params); - } - - /** - * Fija datos del tipo de saldo al cerrar el lov. - * @param event - * @throws Exception - */ - public void onReturnBalancetypeLov(SelectEvent event) throws Exception { - TgeneBalanceType t = (TgeneBalanceType) event.getObject(); - this.record.getPk().setBalancetype(t.getPk().getBalancetype()); - this.record.getPk().setBalancegroup(t.getPk().getBalancegroup()); - } - - /** - * Actualzia el campo modulecode en cada controlador que esta inyectado. La actualizacion se realiza cuando cambia el modulo en la pantalla. - * @throws Exception - */ - public void updatemodule() throws Exception { - String modulecode = super.getMfilters().get("pk.modulecode"); - laccountstatus = AccountStatusController.find(modulecode); - - } - - /** - * Entrega el valor de: lmodules - * @return List - */ - public List getLmodules() { - return lmodules; - } - - /** - * Entrega el valor de: lgroups - * @return List - */ - public List getLgroups() { - return lgroups; - } - - /** - * Entrega el valor de: laccountstatus - * @return List - */ - public List getLaccountstatus() { - return laccountstatus; - } - - /** - * Entrega el valor de: lcurrency - * @return List - */ - public List getLcurrency() { - return lcurrency; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CityController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CityController.java.svn-base deleted file mode 100644 index 5307711..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CityController.java.svn-base +++ /dev/null @@ -1,202 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TgeneCity. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CityController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CityController() throws Exception { - super(TgeneCity.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CITY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega el listado objetos TgeneCity provincias - * - * @param countrycode Código de país - * @param provincecode Código de provincia - * @param cantoncode Código de cantón - * @return lrecord Lista de objetos TgeneCity - */ - public static List find(String countrycode, String provincecode, String cantoncode) { - try { - CityController cc = new CityController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - /** - * Metodo para buscar por codigo de ciudad - * @param citycode - * @return - */ - public static List findPorCodigo(String countrycode, String provincecode, String cantoncode, String citycode){ - try { - CityController cc = new CityController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.addFilter("pk.citycode", citycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Metodo para buscar el nombre de la ciudad atraves del codigo - * @param provincecode - * @return - */ - public static String getDescCiudadByCodigo(String countrycode, String provincecode, String cantoncode, String citycode){ - try { - if(countrycode==null || provincecode==null || cantoncode==null || citycode==null || countrycode.isEmpty() || provincecode.isEmpty() || cantoncode.isEmpty() || citycode.isEmpty()){ - return null; - } - CityController cc = new CityController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.addFilter("pk.citycode", citycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TgeneCity ciudad = cc.lrecord.get(0); - if(ciudad.getDescription()!=null){ - return ciudad.getDescription(); - }else{ - return ""; - } - } - return ""; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return ""; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CountryController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CountryController.java.svn-base deleted file mode 100644 index 8a71e3b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CountryController.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCountry; - -/** - * Clase controladora del bean TgeneCountry. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CountryController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CountryController() throws Exception { - super(TgeneCountry.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "COUNTRY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega una lista objetos TgeneCountry países - * - * @return lrecord Lista de objetos TgeneCountry - */ - public static List find() { - try { - CountryController cc = new CountryController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - public static TgeneCountry findcountry(String country) { - try { - CountryController cc = new CountryController(); - - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", country); - cc.querydatabase(); - - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CurrencyController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CurrencyController.java.svn-base deleted file mode 100644 index 9490128..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/CurrencyController.java.svn-base +++ /dev/null @@ -1,133 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; - -/** - * Clase controladora del bean TgeneCurrency. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class CurrencyController extends AbstractController { - - public CurrencyController() throws Exception { - super(TgeneCurrency.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CURRENCY"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Metodo que entrega el listado objetos TgeneCurrency - * @return lrecord Lista de objetos TgeneCurrency - */ - public static List find() { - try { - CurrencyController cc = new CurrencyController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/LanguageController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/LanguageController.java.svn-base deleted file mode 100644 index a91cbc7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/LanguageController.java.svn-base +++ /dev/null @@ -1,140 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneLanguage; - -/** - * Clase controladora del bean TgeneLanguage. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class LanguageController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public LanguageController() throws Exception { - super(TgeneLanguage.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANNEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de - // orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega una lista de objetos TgeneLanguage - * - * @return lchannels Lista de objetos TgeneLanguage - */ - public static List find() { - try { - LanguageController cc = new LanguageController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeAndBranchController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeAndBranchController.java.svn-base deleted file mode 100644 index 327462a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeAndBranchController.java.svn-base +++ /dev/null @@ -1,300 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.BranchLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneCanton; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneCountry; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TgeneMenu. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class OfficeAndBranchController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public OfficeAndBranchController() throws Exception { - super(AbstractDataTransport.class); - } - - @ManagedProperty(value = "#{branchController}") - private BranchController branch; - - @ManagedProperty(value = "#{officeController}") - private OfficeController office; - - /** - * Atributo para la lista de objetos TgeneCountry - */ - private List lCountry; - - /** - * Atributo para la lista de objetos TgeneProvince - */ - private List lProvince; - - /** - * Atributo para la lista de objetos TgeneCanton - */ - private List lCanton; - - /** - * Atributo para la lista de objetos TgeneCity - */ - private List lCity; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Listas - this.lCountry = CountryController.find(); - this.lProvince = new ArrayList(); - this.lCanton = new ArrayList(); - this.lCity = new ArrayList(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 4; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENU"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - try { - this.branch.query(); - - if(this.office.getMfilters().get("")!=null && !this.office.getMfilters().get("pk.branchcode").equals("")){ - this.office.query(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - //Dto General - //DtoSave dtosave = super.getDtoSave(); - - //Dto Sucursal - DtoSave dtosavebranch = this.branch.getDtoSave(); - - //Dto Oficina - DtoSave dtosaveoffice = this.office.getDtoSave(); - - if(!dtosavebranch.pendingProcess() && !dtosaveoffice.pendingProcess()){ - return; - } - - HashMap msave = new HashMap(); - - if(dtosavebranch.pendingProcess()){ - msave.put(this.branch.getBeanalias(), dtosavebranch); - } - if(dtosaveoffice.pendingProcess()){ - msave.put(this.office.getBeanalias(), dtosaveoffice); - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - //this.postCommit(resp); - this.branch.postCommit(resp); - this.office.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Llama al Lov MenuLevel - */ - public void openBranchLov() { - Map> params = new HashMap<>(); - BranchLovController.openLov(params); - } - - /** - * Gestiona la respuesta del Lov MenuLevel para transacciones por nivel - * @param event - * @throws Exception - */ - public void onReturnBranchLov(SelectEvent event) throws Exception { - TgeneBranch t = (TgeneBranch) event.getObject(); - this.office.initRecPage(); - this.office.addFilter("pk.branchcode", t.getPk().getBranchcode().toString()); - this.office.getMfilelds().put("branchdesc", t.getDescription()); - this.office.query(); - } - - public void onChangeCountry(){ - if(this.office.getRecord().getCountrycode()!=null){ - this.lProvince = ProvinceController.find(this.office.getRecord().getCountrycode()); - this.lCanton = new ArrayList(); - this.lCity = new ArrayList(); - } - } - - public void onChangeProvince(){ - if(this.office.getRecord().getProvincecode()!=null){ - this.lCanton = CantonController.find(this.office.getRecord().getCountrycode(), this.office.getRecord().getProvincecode()); - this.lCity = new ArrayList(); - } - } - - public void onChangeCanton(){ - if(this.office.getRecord().getCantoncode()!=null){ - this.lCity = CityController.find(this.office.getRecord().getCountrycode(), this.office.getRecord().getProvincecode(), this.office.getRecord().getCantoncode()); - } - } - - /** - * Consulta las listas al abrir el editar - */ - public void openEdit(){ - if(this.office.getRecord()!=null){ - this.lProvince = ProvinceController.find(this.office.getRecord().getCountrycode()); - this.lCanton = CantonController.find(this.office.getRecord().getCountrycode(), this.office.getRecord().getProvincecode()); - this.lCity = CityController.find(this.office.getRecord().getCountrycode(), this.office.getRecord().getProvincecode(), this.office.getRecord().getCantoncode()); - } - } - - /** - * Entrega el valor de OfficeController - * @return office - */ - public OfficeController getOffice() { - return office; - } - - /** - * Fija el valor de OfficeController - * @param office - */ - public void setOffice(OfficeController office) { - this.office = office; - } - - /** - * Entrega el valor de BranchController - * @return branch - */ - public BranchController getBranch() { - return branch; - } - - /** - * fija el valor de BranchController - * @param branch - */ - public void setBranch(BranchController branch) { - this.branch = branch; - } - - /** - * Entrega el valor de lCountry - * @return lCountry - */ - public List getlCountry() { - return lCountry; - } - - /** - * Fija el valor de lCountry - * @param lCountry - */ - public void setlCountry(List lCountry) { - this.lCountry = lCountry; - } - - /** - * Entrega el valor de lProvince - * @return lProvince - */ - public List getlProvince() { - return lProvince; - } - - /** - * Fija el valor de lProvince - * @param lProvince - */ - public void setlProvince(List lProvince) { - this.lProvince = lProvince; - } - - /** - * Entrega el valor de lCanton - * @return lCanton - */ - public List getlCanton() { - return lCanton; - } - - /** - * Fija el valor de lCanton - * @param lCanton - */ - public void setlCanton(List lCanton) { - this.lCanton = lCanton; - } - - /** - * Entrega el valor de lCity - * @return lCity - */ - public List getlCity() { - return lCity; - } - - /** - * Fija el valor de lCity - * @param lCity - */ - public void setlCity(List lCity) { - this.lCity = lCity; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeController.java.svn-base deleted file mode 100644 index bba073b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/OfficeController.java.svn-base +++ /dev/null @@ -1,174 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneOffice; - -/** - * Clase controladora del bean TgeneOffice. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class OfficeController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public OfficeController() throws Exception { - super(TgeneOffice.class); - } - - - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEOFFICE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.branchcode") == null || super.getMfilters().get("pk.branchcode").equals("")) { - MessageHelper.setMessageError("msg_branchRequired"); - return; - } - super.create(); - this.record.put("branchdesc", super.getMfilelds().get("branchdesc")); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.getPk().setBranchcode(new Integer(super.getMfilters().get("pk.branchcode"))); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (super.getMfilters().get("pk.branchcode") == null) { - MessageHelper.setMessageError("msg_branchRequired"); - return; - } - if(super.getMfilters().get("pk.companycode")==null || super.getMfilters().get("pk.companycode").equals("")){ - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - } - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.officecode"); - - // subqueries - SubQuery subquery = new SubQuery("TgeneBranch", "description", "branchdesc", - "i.pk.companycode = t.pk.companycode and i.pk.branchcode = t.pk.branchcode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public static List find(String branch, String companycode) { - try { - OfficeController oc = new OfficeController(); - oc.init(); - oc.recperpage = 300; - oc.addFilter("pk.branchcode", branch); - oc.addFilter("pk.companycode", companycode); - oc.querydatabase(); - if (oc.lrecord != null && !oc.lrecord.isEmpty()) { - return oc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.netbeans-base deleted file mode 100644 index 2857eda..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.netbeans-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora del lov asociado al bean TgeneParameters. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ParametersController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ParametersController() throws Exception { - super(TgeneParameters.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PARAMETERS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try{ - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - super.update(); - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - } - - public void update(TgeneParameters bean){ - try { - this.record = bean; - super.update(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.code"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega un objeto TgeneParameters - * @param code Có de parámetro - * @param companycode Código de compania - * @return record Objetos TgeneParameters - */ - public static TgeneParameters find(String code, String companycode) { - try { - ParametersController cc = new ParametersController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("pk.code", code); - cc.addFilter("pk.companycode", companycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.svn-base deleted file mode 100644 index 2857eda..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParametersController.java.svn-base +++ /dev/null @@ -1,156 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneParameters; - -/** - * Clase controladora del lov asociado al bean TgeneParameters. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ParametersController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ParametersController() throws Exception { - super(TgeneParameters.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PARAMETERS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try{ - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - super.update(); - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - } - - public void update(TgeneParameters bean){ - try { - this.record = bean; - super.update(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.code"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega un objeto TgeneParameters - * @param code Có de parámetro - * @param companycode Código de compania - * @return record Objetos TgeneParameters - */ - public static TgeneParameters find(String code, String companycode) { - try { - ParametersController cc = new ParametersController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("pk.code", code); - cc.addFilter("pk.companycode", companycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParroquiaController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParroquiaController.java.svn-base deleted file mode 100644 index f6c77a8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ParroquiaController.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCity; -import com.fp.persistence.pgeneral.gene.TgeneParroquia; - -/** - * Clase controladora del bean TgeneProvince. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ParroquiaController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ParroquiaController() throws Exception { - super(TgeneParroquia.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PARROQUIA"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega el listado objetos TgeneParroquia parroquias - * - * @param countrycode Código de país - * @param provincecode Código de provincia - * @param cantoncode Código de cantón - * @return lrecord Lista de objetos TgeneParroquia - */ - public static List find(String countrycode, String provincecode, String cantoncode) { - try { - ParroquiaController cc = new ParroquiaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - /** - * Metodo para buscar el nombre de la parroquia atraves del codigo - * @param provincecode - * @return - */ - public static String getDescParroquiaByCodigo(String countrycode, String provincecode, String cantoncode, String parroquiacode){ - try { - if(countrycode==null || provincecode==null || cantoncode==null || parroquiacode==null || countrycode.isEmpty() || provincecode.isEmpty() || cantoncode.isEmpty() || parroquiacode.isEmpty()){ - return null; - } - ParroquiaController cc = new ParroquiaController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.addFilter("pk.cantoncode", cantoncode); - cc.addFilter("pk.parroquiacode", parroquiacode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TgeneParroquia parroquia = cc.lrecord.get(0); - if(parroquia.getDescription()!=null){ - return parroquia.getDescription(); - }else{ - return ""; - } - } - return ""; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return ""; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ProvinceController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ProvinceController.java.svn-base deleted file mode 100644 index 6b17715..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ProvinceController.java.svn-base +++ /dev/null @@ -1,225 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; -import com.fp.persistence.pgeneral.gene.TgeneProvince; - -/** - * Clase controladora del bean TgeneProvince. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ProvinceController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ProvinceController() throws Exception { - super(TgeneProvince.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROVINCE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Método que entrega el listado objetos TgeneProvince provincias - * - * @param countrycode Código de país - * @return lrecord Lista de objetos TgeneProvince - */ - public static List find(String countrycode) { - try { - ProvinceController cc = new ProvinceController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Metodo para buscar por codigo de provincia - * @param provincecode - * @return - */ - public static List findPorCodigo(String countrycode, String provincecode){ - try { - ProvinceController cc = new ProvinceController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - - /** - * Metodo para buscar el nombre de la provincia atraves del codigo - * @param provincecode - * @return - */ - public static String getDescProvByCodigo(String countrycode, String provincecode){ - try { - if(countrycode==null || provincecode==null || countrycode.isEmpty() || provincecode.isEmpty()){ - return null; - } - ProvinceController cc = new ProvinceController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - cc.addFilter("pk.provincecode", provincecode); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - TgeneProvince provincia = cc.lrecord.get(0); - if(provincia.getDescription()!=null){ - return provincia.getDescription(); - }else{ - return ""; - } - } - return ""; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return ""; - } - } - - public static List findxDescripcion(String countrycode,String codigoProvincia,String descripcion) { - try { - ProvinceController cc = new ProvinceController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.countrycode", countrycode); - if(codigoProvincia!=null && codigoProvincia.length()>0){ - cc.addFilter("pk.provincecode", codigoProvincia); - } - if(descripcion!=null && descripcion.length()>0){ - cc.addFilter("description", descripcion); - } - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryController.java.svn-base deleted file mode 100644 index 5a854dc..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryController.java.svn-base +++ /dev/null @@ -1,173 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; - -/** - * Clase controladora del bean AbstractDataTransport. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class QueryController extends AbstractController { - - @ManagedProperty(value = "#{queryProcessController}") - private QueryProcessController queryprocess; - - @ManagedProperty(value = "#{transactionQueryController}") - private TransactionQueryController transactionquery; - - private String tabid = "ttransaction"; - - public QueryController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void onTabChange(TabChangeEvent event) throws Exception { - this.tabid = event.getTab().getId(); - } - - @Override - public void query() { - try { - if(this.tabid.equals("queryprocess") ){ - this.queryprocess.query(); - }else{ - this.transactionquery.query(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() { - try { - if (this.tabid.equals("queryprocess")) { - this.queryprocess.next(); - } else { - this.transactionquery.next(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void previous() { - try { - if (this.tabid.equals("queryprocess")) { - this.queryprocess.previous(); - } else { - this.transactionquery.previous(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosavetq = this.transactionquery.getDtoSave(); - if(dtosavetq.pendingProcess()){ - dtosavetq.setReturnpk(true); - msave.put(this.transactionquery.getBeanalias(), dtosavetq); // adicionar metadata de mantenimiento para cada tabla. - } - DtoSave dtosaveqp = this.queryprocess.getDtoSave(); - if(dtosaveqp.pendingProcess()){ - dtosaveqp.setReturnpk(true); - msave.put(this.queryprocess.getBeanalias(), dtosaveqp); // adicionar metadata de mantenimiento para cada tabla. - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.transactionquery.postCommit(resp); - this.queryprocess.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - } - - /** - * Entrega el valor de: queryprocess - * @return QueryProcessController - */ - public QueryProcessController getQueryprocess() { - return this.queryprocess; - } - - /** - * Fija el valor de: queryprocess - * @param queryprocess Valor a fijar en el atributo. - */ - - public void setQueryprocess(QueryProcessController queryprocess) { - this.queryprocess = queryprocess; - } - - /** - * Entrega el valor de: transactionquery - * @return TransactionQueryController - */ - public TransactionQueryController getTransactionquery() { - return this.transactionquery; - } - - /** - * Fija el valor de: transactionquery - * @param transactionquery Valor a fijar en el atributo. - */ - - public void setTransactionquery(TransactionQueryController transactionquery) { - this.transactionquery = transactionquery; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryProcessController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryProcessController.java.svn-base deleted file mode 100644 index 0954507..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/QueryProcessController.java.svn-base +++ /dev/null @@ -1,166 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.ProcessLovControler; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneQueryProcess; -import com.fp.persistence.pgeneral.proc.TgeneProcess; - -/** - * Clase controladora del bean TgeneQueryProcess. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class QueryProcessController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public QueryProcessController() throws Exception { - super(TgeneQueryProcess.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "QUERYPROCESS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneQueryProcess y marca el registro como - * nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @Override - public void update() throws Exception { - if(this.record.getProcesscode() == null){ - MessageHelper.setMessageError("msg_processrequired"); - return; - } - super.update(); - } - - public DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden - // ("t.pk, t.nombre, t.cpais"). - - // subqueries - SubQuery subquery = new SubQuery( - "TgeneProcess", - "shortdesc", - "shortdesc", - "i.pk.processcode = t.processcode and i.pk.catalogtypeprocess = t.catalogtypeprocess and i.pk.catalogcodetypeprocess = t.catalogcodetypeprocess"); - dto.addSubQuery(subquery); - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void openProcessLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("QUERY"); // valor del parametro - params.put("processtype", l); - ProcessLovControler.openLov(params); - } - - public void onReturnProcessLov(SelectEvent event) throws Exception { - TgeneProcess t = (TgeneProcess) event.getObject(); - this.record.setProcesscode(t.getPk().getProcesscode()); - this.record.put("messagedesc", t.getDescription()); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ServicesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ServicesController.java.svn-base deleted file mode 100644 index ecd5aa3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/ServicesController.java.svn-base +++ /dev/null @@ -1,193 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneServices; - -/** - * Clase controladora del bean TgeneServices. - * - * @author WPA. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ServicesController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public ServicesController() throws Exception { - super(TgeneServices.class); - } - - /** - * Atributo para el checkbox - */ - private boolean check; - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SERVICES"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea el nuevo registro - */ - @Override - public void create(){ - try{ - this.check = false; - super.create(); - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Ejecuta el check - */ - public void changeCheck(){ - if(this.check){ - this.record.setAutomatic("Y"); - }else{ - this.record.setAutomatic("N"); - } - } - - /** - * Ejecuta el check en el edit - */ - public void checkEdit(){ - if(this.record.getAutomatic().equals("Y")){ - this.check = true; - }else{ - this.check = false; - } - } - - /** - * Entrega una lista de objetos TgeneServices - * @return lrecord Lista de objetos TgeneServices - */ - public static List find() { - try { - ServicesController sc = new ServicesController(); - sc.init(); - sc.recperpage = 300; - sc.querydatabase(); - if ((sc.lrecord != null) && !sc.lrecord.isEmpty()) { - return sc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Entrega V/F - * @return check - */ - public boolean isCheck() { - return check; - } - - /** - * Fija V/F - * @param check - */ - public void setCheck(boolean check) { - this.check = check; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/SubProductChargesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/SubProductChargesController.java.svn-base deleted file mode 100644 index 336d5de..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/SubProductChargesController.java.svn-base +++ /dev/null @@ -1,165 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.BalanceTypeLovController; -import com.fp.frontend.controller.pgeneral.product.ProductController; -import com.fp.frontend.controller.pgeneral.product.SubProductController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.charge.TgeneSubProductCharges; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; - -/** - * Clase controladora del bean TgeneSubProductCharges. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SubProductChargesController extends AbstractController { - - public SubProductChargesController() throws Exception { - super(TgeneSubProductCharges.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SUBPRODUCTCHARGES"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if(!this.validaterequired()){ - return; - } - super.create(); - this.record.getPk().setModulecode( super.getMfilters().get("pk.modulecode")); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.getPk().setProductcode(super.getMfilters().get("pk.productcode")); - this.record.getPk().setSubproductcode(super.getMfilters().get("pk.subproductcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(!this.validaterequired()){ - return; - } - Request request = this.callerhelper.getRequest(); - //super.addFilter("pk.modulecode", super.getMfilelds().get("modulecode").toString()); - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.balancetype, t.pk.balancegroup"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Valida filtros - * @return - * @throws Exception - */ - private boolean validaterequired() throws Exception { - if (super.getMfilters().get("pk.modulecode") == null) { - MessageHelper.setMessageError("msg_modulerequird"); - return false; - } - if (super.getMfilters().get("pk.productcode") == null) { - MessageHelper.setMessageError("msg_productrequird"); - return false; - } - if (super.getMfilters().get("pk.subproductcode") == null) { - MessageHelper.setMessageError("msg_subproductrequird"); - return false; - } - return true; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TerminosCondicionesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TerminosCondicionesController.java.svn-base deleted file mode 100644 index 9fbb5f3..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TerminosCondicionesController.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.SessionScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.soli.TarmTerminos; - - -@SuppressWarnings("serial") -@ManagedBean -@SessionScoped -public class TerminosCondicionesController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public TerminosCondicionesController() throws Exception { - super(TarmTerminos.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - public static TarmTerminos findxIdentificacion(String identificacion) { - try { - TerminosCondicionesController cc = new TerminosCondicionesController(); - cc.init(); - cc.recperpage = 10; - cc.addFilter("identificacion", identificacion); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TransactionQueryController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TransactionQueryController.java.svn-base deleted file mode 100644 index 5e6c39b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/gene/.svn/text-base/TransactionQueryController.java.svn-base +++ /dev/null @@ -1,223 +0,0 @@ -package com.fp.frontend.controller.pgeneral.gene; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pbpm.lov.TbpmRulesLovController; -import com.fp.frontend.controller.pgeneral.lov.ProcessLovControler; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmRules; -import com.fp.persistence.pgeneral.gene.TgeneTransactionQuery; -import com.fp.persistence.pgeneral.proc.TgeneProcess; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TgeneTransactionQuery. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionQueryController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TransactionQueryController() throws Exception { - super(TgeneTransactionQuery.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACTIONPROCESS"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @Override - public void update() throws Exception { - if(this.record.getProcesscode() == null){ - MessageHelper.setMessageError("msg_processrequired"); - return; - } - super.update(); - } - - public void openTransactionLov() { - Map> params = new HashMap<>(); - TransactionLovController.openLov(params); - } - - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("name", t.getName()); - this.query(); - } - - /** - * Crea una instancia de TgeneTransactionQuery y marca el registro como - * nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.transactionmodule") == null) { - MessageHelper.setMessageError("msg_transactionrequird"); - return; - } - super.create(); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(Integer.valueOf(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(Integer.valueOf(super.getMfilters().get("pk.transactionversion"))); - this.record.setCatalogtypeprocess("QUERY"); - this.record.setCatalogcodetypeprocess("PROCESSTYPE"); - } - - public DtoQuery getDtoQuery() throws Exception { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.executionorder"); - // subqueries - SubQuery subquery = new SubQuery("TgeneProcess", "shortdesc", "shortdesc", "i.pk.processcode = t.processcode"); - dto.addSubQuery(subquery); - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - if (super.getMfilters().get("pk.transactionmodule") == null) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = this.getDtoQuery(); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openProcessLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("QUERY"); // valor del parametro - params.put("processtype", l); - ProcessLovControler.openLov(params); - } - - public void onReturnProcessLov(SelectEvent event) throws Exception { - TgeneProcess t = (TgeneProcess) event.getObject(); - this.record.setProcesscode(t.getPk().getProcesscode()); - this.record.put("shortdesc", t.getShortdesc()); - } - - public void openRuleLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("R"); // valor del parametro - params.put("filetype", l); - TbpmRulesLovController.openLov(params); - } - - public void onReturnRuleLov(SelectEvent event) throws Exception { - TbpmRules t = (TbpmRules) event.getObject(); - // this.record.setProcesscode(t.getPk().getRulecode()); - this.record.setRulename(t.getPk().getRulecode()); - this.record.put("ruledesc", t.getDescription()); - } - - public void openFlowLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("F"); // valor del parametro - params.put("filetype", l); - TbpmRulesLovController.openLov(params); - } - - public void onReturnFlowLov(SelectEvent event) throws Exception { - TbpmRules t = (TbpmRules) event.getObject(); - this.record.setProcessname(t.getPk().getRulecode()); - this.record.put("flowdesc", t.getDescription()); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/entries deleted file mode 100644 index 5eb9b44..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/entries +++ /dev/null @@ -1,470 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CatalogLovController.java -file - - - - -2022-07-28T03:39:54.994597Z -4c40f72e754c3c27f4675d93deb10648 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3426 - -ActivityLovController.java -file - - - - -2022-07-28T03:39:54.994597Z -f9c2f7c4eb4b0e3bf0f73bf7c0c7df89 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3860 - -EntityLovController.java -file - - - - -2022-07-28T03:39:54.995597Z -c7fd2c9e84bce32ae6e0982c5ba254d8 -2014-12-29T09:02:02.697591Z -3668 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -3073 - -BranchLovController.java -file - - - - -2022-07-28T03:39:54.995597Z -5e7cdfe21bb662df7f62bfc1682bc478 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3505 - -UserLovController.java -file - - - - -2022-07-28T03:39:54.995597Z -3aed1a97cea8854b3ecae2491c6bbc73 -2014-12-29T09:02:02.697591Z -3668 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -4203 - -ProfileLovController.java -file - - - - -2022-07-28T03:39:54.996597Z -745bd8be2f97863832389366a7f14710 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3474 - -SubLevelLovController.java -file - - - - -2022-07-28T03:39:54.996597Z -cd1ab41807294e6f1f0b8d09e84f9793 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4732 - -ProcessLovControler.java -file - - - - -2022-07-28T03:39:54.996597Z -71d531ed34923fdafa460370dae0e56a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3923 - -UserLovControler.java -file - - - - -2022-07-28T03:39:54.996597Z -e3885abace61e26c87c88627f5990e38 -2014-12-29T09:02:02.697591Z -3668 -dcruz - - - - - - - - - - - - - - - - - - - - - -4201 - -MessageTemplatesLovController.java -file - - - - -2022-07-28T03:39:54.997597Z -72efab815cbcfb422d44c28e59d79e7e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3733 - -TransactionLovController.java -file - - - - -2022-07-28T03:39:54.997597Z -8822b235245237c56c9706d2f372cc2c -2014-12-29T09:02:02.697591Z -3668 -dcruz - - - - - - - - - - - - - - - - - - - - - -4324 - -BalanceTypeLovController.java -file - - - - -2022-07-28T03:39:54.997597Z -a4bbc8d7b962b607112df754753ca3a1 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4192 - -LevelLovController.java -file - - - - -2022-07-28T03:39:54.997597Z -6e525ae7e8ea9cefa4c856ffc918a40d -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4251 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/EntityLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/EntityLovController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/EntityLovController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/UserLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/UserLovController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/prop-base/UserLovController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ActivityLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ActivityLovController.java.svn-base deleted file mode 100644 index 95136ba..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ActivityLovController.java.svn-base +++ /dev/null @@ -1,117 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TgeneActivity; - -/** - * Clase controladora del lov asociado al bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ActivityLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ActivityLovController() throws Exception { - super(TgeneActivity.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "ACTIVITYLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - //SubQuery - SubQuery subquerya = new SubQuery("TgeneCatalogDetail", "description", "segmentdesc", - "i.pk.catalogcode = t.segmenttypecatalogcode and i.pk.catalog = t.segmenttypecatalog "); - dto.addSubQuery(subquerya); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setactivity() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setactivity(TgeneActivity tgeneActivity) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneActivity); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/activitypersegmentsLov.xhtml", options, params); - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BalanceTypeLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BalanceTypeLovController.java.svn-base deleted file mode 100644 index 4cc7202..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BalanceTypeLovController.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBalanceType; - -/** - * Clase controladora del lov asociado al bean TgeneProcess. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class BalanceTypeLovController extends AbstractController { - - public BalanceTypeLovController() throws Exception { - super(TgeneBalanceType.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - String category = CallerHelper.getLovParameter("category"); - if (category != null) { - super.addFilter("balancecategory", category); - } - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROCESSLOV"; - super.addField("modulecode", CallerHelper.getLovParameter("modulecode")); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.balancetype, t.pk.balancegroup "); - if(super.getFieldvalue("modulecode") != null){ - String value = super.getFieldvalue("modulecode").toString(); - Filter f = new Filter(); - f.setSql("(modulecode = '"+value+"' or modulecode is null) "); - dto.addFiltro(f); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setBalancetype() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setBalancetype(TgeneBalanceType tgeneBalanceType) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneBalanceType); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/balanceTypeLov.xhtml", options, params); - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BranchLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BranchLovController.java.svn-base deleted file mode 100644 index c1f9bd4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/BranchLovController.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneBranch; - -/** - * Clase controladora del lov asociado al bean TgeneBranch. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class BranchLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public BranchLovController() throws Exception { - super(TgeneBranch.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "BRANCHLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.branchcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setBranch() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setBranch(TgeneBranch tgeneBranch) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneBranch); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/branchLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/CatalogLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/CatalogLovController.java.svn-base deleted file mode 100644 index 79d4dc1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/CatalogLovController.java.svn-base +++ /dev/null @@ -1,107 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class CatalogLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public CatalogLovController() throws Exception { - super(TgeneCatalog.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setcatalog() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setcatalog(TgeneCatalog tgeneCatalog) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneCatalog); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/catalogLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.netbeans-base deleted file mode 100644 index 52074fe..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.netbeans-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneEntity; - -/** - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class EntityLovController extends AbstractController { - - public EntityLovController() throws Exception { - super(TgeneEntity.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - try { - String log; - log = CallerHelper.getLovParameter("log"); - if (log != null) { - this.addFilter("log", log); - } - this.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - private void init() { - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEENTITY"; - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - this.lrecord = (List) response.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - // TODO: handle exception - MessageHelper.setMessageError(e); - } - - } - - public void setentity() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setentity(TgeneEntity tgeneEntity) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneEntity); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/entityLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.svn-base deleted file mode 100644 index 52074fe..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/EntityLovController.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneEntity; - -/** - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class EntityLovController extends AbstractController { - - public EntityLovController() throws Exception { - super(TgeneEntity.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - try { - String log; - log = CallerHelper.getLovParameter("log"); - if (log != null) { - this.addFilter("log", log); - } - this.query(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - private void init() { - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEENTITY"; - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - Request request = this.callerhelper.getRequest(); - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - this.lrecord = (List) response.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - // TODO: handle exception - MessageHelper.setMessageError(e); - } - - } - - public void setentity() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setentity(TgeneEntity tgeneEntity) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneEntity); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/entityLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/LevelLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/LevelLovController.java.svn-base deleted file mode 100644 index 6f3d797..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/LevelLovController.java.svn-base +++ /dev/null @@ -1,129 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; - -/** - * Clase controladora del lov asociado al bean TgeneMenuLevelDesc. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class LevelLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public LevelLovController() throws Exception { - super(TgeneMenuLevelDesc.class); - } - - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // - String menucode = CallerHelper.getLovParameter("pk.menucode"); - if(menucode==null){ - MessageHelper.setMessageError("msg_menuNotFound"); - return; - } - super.getMfilters().put("pk.menucode", menucode); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MENULEVELLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - this.getMfilters().put("pk.languagecode", this.getLoginController().getRequest().getLanguage()); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.levelcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el valor del Lov - */ - public void setMenuLevel() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Obtiene el valor del Lov - */ - public void setMenuLevel(TgeneMenuLevelDesc tgeneMenuLevelDesc) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneMenuLevelDesc); - } - - /** - * Abre el lov de MenuLevel - * @param params - */ - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/menulevelLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/MessageTemplatesLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/MessageTemplatesLovController.java.svn-base deleted file mode 100644 index 3bad4c5..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/MessageTemplatesLovController.java.svn-base +++ /dev/null @@ -1,112 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; - -/** - * Clase controladora del lov asociado al bean TgeneMessageTemplates. - * - * @author Andres E Carpio. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MessageTemplatesLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MessageTemplatesLovController() throws Exception { - super(TgeneMessageTemplates.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MESSAGETEMPLATESLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (!super.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk, t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setmessage() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setmessage(TgeneMessageTemplates tgeneMessageTemplates) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneMessageTemplates); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 580); //580 porque se abre desde un dialogo - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/messageTemplatesLov.xhtml", options, params); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProcessLovControler.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProcessLovControler.java.svn-base deleted file mode 100644 index d15fabf..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProcessLovControler.java.svn-base +++ /dev/null @@ -1,119 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.proc.TgeneProcess; - -/** - * Clase controladora del lov asociado al bean TgeneProcess. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ProcessLovControler extends AbstractController { - - public ProcessLovControler() throws Exception { - super(TgeneProcess.class); - } - - @PostConstruct - private void postconstruct() throws Exception { - this.init(); - String processtype = CallerHelper.getLovParameter("processtype"); - if (processtype != null) { - super.addFilter("pk.catalogtypeprocess", processtype); - } - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROCESSLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if (!super.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.processcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setprocess() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setprocess(TgeneProcess tgeneProcess) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneProcess); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 580); // no cambiar de 580 para que funcione en un ipad - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/processLov.xhtml", options, params); - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProfileLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProfileLovController.java.svn-base deleted file mode 100644 index 6e1cf0a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/ProfileLovController.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeProfile; - -/** - * Clase controladora del lov asociado al bean TsafeProfile. - * @author David López P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ProfileLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ProfileLovController() throws Exception { - super(TsafeProfile.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROFILELOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void setProfile() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setProfile(TsafeProfile tsafeProfile) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tsafeProfile); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 580); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/profileLov.xhtml", options, params); - } -} - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/SubLevelLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/SubLevelLovController.java.svn-base deleted file mode 100644 index 068170d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/SubLevelLovController.java.svn-base +++ /dev/null @@ -1,139 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; - -/** - * Clase controladora del lov asociado al bean TgeneMenuLevelDesc. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class SubLevelLovController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SubLevelLovController() throws Exception { - super(TgeneMenuSubLevelDesc.class); - } - - @PostConstruct - private void postconstruct() throws Exception{ - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // - String menucode = CallerHelper.getLovParameter("pk.menucode"); - String levelcode = CallerHelper.getLovParameter("pk.levelcode"); - if(menucode==null){ - MessageHelper.setMessageError("msg_menuNotFound"); - return; - } - if(levelcode==null){ - MessageHelper.setMessageError("msg_levelNotFound"); - return; - } - super.getMfilters().put("pk.menucode", menucode); - super.getMfilters().put("pk.levelcode", levelcode); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MENUSUBLEVELLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(super.getMfilters().get("pk.levelcode")==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - this.getMfilters().put("pk.languagecode", this.getLoginController().getRequest().getLanguage()); - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.levelcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Obtiene el valor del Lov - */ - public void setMenuSubLevel() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - /** - * Obtiene el valor del Lov - */ - public void setMenuSubLevel(TgeneMenuSubLevelDesc tgeneMenuSubLevelDesc) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneMenuSubLevelDesc); - } - - /** - * Abre el lov de MenuLevel - * @param params - */ - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put("modal", true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/menusublevelLov.xhtml", options, params); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/TransactionLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/TransactionLovController.java.svn-base deleted file mode 100644 index 4cbf74d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/TransactionLovController.java.svn-base +++ /dev/null @@ -1,144 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del lov asociado al bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class TransactionLovController extends AbstractController { - - private String moduleCode = null; - - public TransactionLovController() throws Exception { - super(TgeneTransaction.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - try { - this.moduleCode = CallerHelper.getLovParameter("moduleCode"); - } catch (Exception e) { - // TODO: handle exception - } - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACTIONLOV"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - if ((this.moduleCode == null) || this.moduleCode.isEmpty()) { - if (!super.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.transactionmodule, t.pk.transactioncode, t.pk.transactionversion"); - - if ((this.moduleCode != null) && !this.moduleCode.isEmpty()) { - Filter f = null; - if ((super.getMfilters().get("pk.transactionmodule") != null) && !super.getMfilters().get("pk.transactionmodule").equals("")) { - f = new Filter(); - f.setSql("t.pk.transactionmodule = '" + this.moduleCode + "'"); - } else { - f = new Filter("pk.transactionmodule", "=" + this.moduleCode); - } - dto.addFiltro(f); - } - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void settransaction() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void settransaction(TgeneTransaction tgeneTransaction) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tgeneTransaction); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - // hint: ver EnumLovOption para las opciones del modal - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 400); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - - // lovpersona es el nombre de la pagina - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/transactionLov.xhtml", options, params); - } - - public String getModuleCode() { - return this.moduleCode; - } - - public void setModuleCode(String moduleCode) { - this.moduleCode = moduleCode; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.netbeans-base deleted file mode 100644 index 5395e19..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.netbeans-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de bean TsafeUserDetail - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class UserLovControler extends AbstractController { - - private String userName = null; - - public UserLovControler() throws Exception { - super(TsafeUserDetail.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - private void init() { - this.beanalias = "USERLOV"; - this.lrecord = new ArrayList<>(); - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - Request request = this.callerhelper.getRequest(); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController().getRequest().getCompany().toString()); - super.addFilter("branchcode", super.getLoginController().getRequest().getBranchCode().toString()); - super.addFilter("officecode", super.getLoginController().getRequest().getOfficeCode().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - if ((this.userName != null) && !this.userName.isEmpty()) { - Filter f = null; - f = new Filter(); - f.setSql(" t.pk.personcode in (select p.pk.personcode from com.fp.persistence.pcustomer.gene.TcustPersonDetail p where p.name like '" - + this.userName - + "' and p.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and p.companycode =" - + super.getLoginController().getRequest().getCompany().toString() + ")"); - dto.addFiltro(f); - - } - SubQuery subquery = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.pk.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - this.lrecord = (List) response.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - // TODO: handle exception - MessageHelper.setMessageError(e); - } - - } - - public void setuser() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setuser(TsafeUserDetail tsafeUserDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tsafeUserDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/usersLov.xhtml", options, params); - } - - public String getUserName() { - return this.userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.svn-base deleted file mode 100644 index 5395e19..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovControler.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de bean TsafeUserDetail - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class UserLovControler extends AbstractController { - - private String userName = null; - - public UserLovControler() throws Exception { - super(TsafeUserDetail.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - private void init() { - this.beanalias = "USERLOV"; - this.lrecord = new ArrayList<>(); - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - Request request = this.callerhelper.getRequest(); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController().getRequest().getCompany().toString()); - super.addFilter("branchcode", super.getLoginController().getRequest().getBranchCode().toString()); - super.addFilter("officecode", super.getLoginController().getRequest().getOfficeCode().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - if ((this.userName != null) && !this.userName.isEmpty()) { - Filter f = null; - f = new Filter(); - f.setSql(" t.pk.personcode in (select p.pk.personcode from com.fp.persistence.pcustomer.gene.TcustPersonDetail p where p.name like '" - + this.userName - + "' and p.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and p.companycode =" - + super.getLoginController().getRequest().getCompany().toString() + ")"); - dto.addFiltro(f); - - } - SubQuery subquery = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.pk.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - this.lrecord = (List) response.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - // TODO: handle exception - MessageHelper.setMessageError(e); - } - - } - - public void setuser() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setuser(TsafeUserDetail tsafeUserDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tsafeUserDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/usersLov.xhtml", options, params); - } - - public String getUserName() { - return this.userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovController.java.svn-base deleted file mode 100644 index a25c77e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/lov/.svn/text-base/UserLovController.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.pgeneral.lov; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.Filter; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.enums.EnumLovOption; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de bean TsafeUserDetail - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class UserLovController extends AbstractController { - - private String userName = null; - - public UserLovController() throws Exception { - super(TsafeUserDetail.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - public void postConstruct() { - this.init(); - } - - private void init() { - this.beanalias = "USERLOV"; - this.lrecord = new ArrayList<>(); - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - Request request = this.callerhelper.getRequest(); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController().getRequest().getCompany().toString()); - super.addFilter("branchcode", super.getLoginController().getRequest().getBranchCode().toString()); - super.addFilter("officecode", super.getLoginController().getRequest().getOfficeCode().toString()); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - if ((this.userName != null) && !this.userName.isEmpty()) { - Filter f = null; - f = new Filter(); - f.setSql(" t.pk.personcode in (select p.pk.personcode from com.fp.persistence.pcustomer.gene.TcustPersonDetail p where p.name like '" - + this.userName - + "' and p.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and p.companycode =" - + super.getLoginController().getRequest().getCompany().toString() + ")"); - dto.addFiltro(f); - - } - SubQuery subquery = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.pk.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response response = this.callerhelper.executeQuery(request); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(response); - } else { - this.lrecord = (List) response.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - // TODO: handle exception - MessageHelper.setMessageError(e); - } - - } - - public void setuser() { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(this.record); - } - - public void setuser(TsafeUserDetail tsafeUserDetail) { - // se utiliza en la pagina del lov. - RequestContext.getCurrentInstance().closeDialog(tsafeUserDetail); - } - - public static void openLov(Map> params) { - Map options = new HashMap(); - options.put(EnumLovOption.MODAL.getLabel(), true); - options.put(EnumLovOption.HEIGHT.getLabel(), 450); - options.put(EnumLovOption.WIDTH.getLabel(), 700); - options.put(EnumLovOption.RESIZABLE.getLabel(), false); - RequestContext.getCurrentInstance().openDialog("/pages/general/lov/usersLov.xhtml", options, params); - } - - public String getUserName() { - return this.userName; - } - - public void setUserName(String userName) { - this.userName = userName; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/entries deleted file mode 100644 index cc1e627..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MenuSubLevelTranController.java -file - - - - -2022-07-28T03:39:55.204597Z -e1aea43347a6790efa980af1ddeb7a04 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7944 - -SubLevelDescController.java -file - - - - -2022-07-28T03:39:55.205597Z -fb2cff21ae3423b2d1e17983893b41b5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -7145 - -MenuLevelTranController.java -file - - - - -2022-07-28T03:39:55.205597Z -27546577e7d631078c26859ac99b6c22 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6379 - -SubLevelController.java -file - - - - -2022-07-28T03:39:55.205597Z -20576f2efc45e047948a434c1cbb15d8 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2345 - -MenuController.java -file - - - - -2022-07-28T03:39:55.205597Z -37d5d83245dfe1b8787b98666d5b7e56 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -18657 - -LevelDescController.java -file - - - - -2022-07-28T03:39:55.205597Z -2318992f9f522701f8fafd1ab636e54e -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5581 - -LevelController.java -file - - - - -2022-07-28T03:39:55.206597Z -c44556a8756d0e3ae7e2957479a1cc5e -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2261 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelController.java.svn-base deleted file mode 100644 index cf1f165..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelController.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.math.BigDecimal; -import java.util.ArrayList; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevel; - -/** - * Clase controladora del bean TgeneMenuLevel. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class LevelController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public LevelController() throws Exception { - super(TgeneMenuLevel.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENULEVEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - protected void querydatabase() { - MessageHelper.setMessageError("msg_notQuery"); - } - - @Override - public void save(){ - MessageHelper.setMessageError("msg_notSave"); - } - - /** - * Obtiene el codigo del levelcode - */ - public Integer getLevelCode( Integer menucode){ - Integer levelcode = null; - try { - Request request = this.callerhelper.getRequest(); - request.put("queryalias", "EXECUTESQL"); - request.put("querytype", "P"); - request.put("isUniqueResult", "Y"); - request.put("sql", "select coalesce(max(LEVELCODE), 0)+1 from TGENEMENULEVEL where MENUCODE = "+menucode); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - levelcode = null; - MessageHelper.setMessageError(resp); - } else { - levelcode = ((BigDecimal)resp.get("result")).intValue(); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return levelcode; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelDescController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelDescController.java.svn-base deleted file mode 100644 index 7f8c999..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/LevelDescController.java.svn-base +++ /dev/null @@ -1,205 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; - -/** - * Clase controladora del bean TgeneMenuLevelDesc. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class LevelDescController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public LevelDescController() throws Exception { - super(TgeneMenuLevelDesc.class); - } - - @ManagedProperty(value = "#{levelController}") - private LevelController level; - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenu genemenu; - /** - * Atributo para el codigo levelcode - */ - private Integer levelcode; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.genemenu = null; - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENULEVELDESC"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - this.levelcode = this.level.getLevelCode(this.genemenu.getPk()); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Filtros - this.getMfilters().put("pk.menucode", this.genemenu!=null?this.genemenu.getPk().toString():null); - this.getMfilters().put("pk.languagecode", this.getLoginController().getRequest().getLanguage()); - - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.levelcode"); // En en string van todos los campos de - - // subqueries 1 - SubQuery subquery = new SubQuery("TgeneMenuLevel", "presentationorder", "presentationorder", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode"); - dto.addSubQuery(subquery); - - // subqueries 2 - SubQuery subquery1 = new SubQuery("TgeneMenu", "description", "menudesc", - "i.pk = t.pk.menucode"); - dto.addSubQuery(subquery1); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.menucode") == null) { - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - super.create(); - this.record.put("menudesc", this.genemenu.getDescription()); - this.record.getPk().setMenucode(this.genemenu.getPk()); - this.record.getPk().setLevelcode(this.levelcode++); - this.record.getPk().setLanguagecode(this.getLoginController().getRequest().getLanguage()); - } - - - /** - * Entrega el objeto TgeneMenu - * @return genemenu - */ - public TgeneMenu getGenemenu() { - return genemenu; - } - - /** - * Fija el objeto TgeneMenu - * @param genemenu - */ - public void setGenemenu(TgeneMenu genemenu) { - this.genemenu = genemenu; - } - - /** - * Entrega el valor de level - * @return level - */ - public LevelController getLevel() { - return level; - } - - /** - * Fija el valor de level - * @param level - */ - public void setLevel(LevelController level) { - this.level = level; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuController.java.svn-base deleted file mode 100644 index 9750254..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuController.java.svn-base +++ /dev/null @@ -1,539 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.lov.LevelLovController; -import com.fp.frontend.controller.pgeneral.lov.SubLevelLovController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelTran; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelTran; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TgeneMenu. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MenuController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MenuController() throws Exception { - super(TgeneMenu.class); - } - - @ManagedProperty(value = "#{levelDescController}") - private LevelDescController levelDesc; - - @ManagedProperty(value = "#{levelController}") - private LevelController level; - - @ManagedProperty(value = "#{subLevelDescController}") - private SubLevelDescController subLevelDesc; - - @ManagedProperty(value = "#{subLevelController}") - private SubLevelController subLevel; - - @ManagedProperty(value = "#{menuLevelTranController}") - private MenuLevelTranController levelTran; - - @ManagedProperty(value = "#{menuSubLevelTranController}") - private MenuSubLevelTranController subLevelTran; - - private TgeneMenuLevelDesc menuleveldesc; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // Consulta - this.querydatabase(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.menuleveldesc = null; - this.recperpage = 4; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENU"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update(){ - try{ - //Menu level - this.levelDesc.setGenemenu(this.record); - this.levelDesc.initRecPage(); - this.levelDesc.setLrecord(new ArrayList()); - - //Menu Sublevel - super.getMfilelds().put("pk.levelcode", null); - super.getMfilelds().put("leveldescription", null); - this.subLevelDesc.setGenemenu(this.record); - this.subLevelDesc.setLrecord(new ArrayList()); - - //Menu levelTran - super.getMfilelds().put("pk.levelcodetran", null); - super.getMfilelds().put("leveldescriptiontran", null); - this.levelTran.setGenemenu(this.record); - this.levelTran.setLrecord(new ArrayList()); - - //Menu levelTran - this.menuleveldesc = null; - super.getMfilelds().put("pk.levelcodesubtran", null); - super.getMfilelds().put("leveldescriptionsubtran", null); - super.getMfilelds().put("pk.sublevelcodesubtran", null); - super.getMfilelds().put("subLeveldescriptionsubtran", null); - this.subLevelTran.setGenemenu(this.record); - this.subLevelTran.setLrecord(new ArrayList()); - - super.update(); - }catch(Exception ex){ - MessageHelper.setMessageError(ex); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - boolean parentSave = true - ; - Request request = this.callerhelper.getRequest(); - //Dto Menu - DtoSave dtosave = super.getDtoSave(); - //Dto Menu Level Desc - DtoSave dtosaveleveldesc = this.levelDesc.getDtoSave(); - //Dto Menu Level - DtoSave dtosavelevel = this.level.getDtoSave(); - //Dto Menu SubLevel Desc - DtoSave dtosavesubleveldesc = this.subLevelDesc.getDtoSave(); - //Dto Menu SubLevel - DtoSave dtosavesublevel = this.subLevel.getDtoSave(); - //Dto Menu Level Tran - DtoSave dtosaveleveltran = this.levelTran.getDtoSave(); - //Dto Menu SubLevel Tran - DtoSave dtosavesubleveltran = this.subLevelTran.getDtoSave(); - - // if(!dtosave.pendingProcess() && !dtosaveleveldesc.pendingProcess() && !dtosavesubleveldesc.pendingProcess() && !dtosaveleveltran.pendingProcess() && !dtosavesubleveltran.pendingProcess()){ - // return; - // } - - HashMap msave = new HashMap(); - - if(dtosave.pendingProcess()){ - msave.put(this.beanalias, dtosave); - parentSave = false; - } - if(parentSave){ - if(dtosaveleveldesc.pendingProcess()){ - msave.put(this.levelDesc.getBeanalias(), dtosaveleveldesc); - msave.put(this.level.getBeanalias(), dtosavelevel); - } - if(dtosavesubleveldesc.pendingProcess()){ - msave.put(this.subLevelDesc.getBeanalias(), dtosavesubleveldesc); - msave.put(this.subLevel.getBeanalias(), dtosavesublevel); - } - if(dtosaveleveltran.pendingProcess()){ - msave.put(this.levelTran.getBeanalias(), dtosaveleveltran); - } - if(dtosavesubleveltran.pendingProcess()){ - msave.put(this.subLevelTran.getBeanalias(), dtosavesubleveltran); - } - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - if(!parentSave){ - this.save(); - }else{ - this.levelDesc.postCommit(resp); - this.subLevelDesc.postCommit(resp); - this.levelTran.postCommit(resp); - this.subLevelTran.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void generateQuery(TgeneMenu tgenemenu) throws Exception{ - this.record = tgenemenu; - this.generateQuery(); - } - - /** - * Método que ejecuta el evento de seleccion del menu - * @throws Exception - */ - public void generateQuery() throws Exception{ - - //Menu level - this.levelDesc.setGenemenu(this.record); - this.levelDesc.initRecPage(); - this.levelDesc.query(); - - //Menu Sublevel - super.getMfilelds().put("pk.levelcode", null); - super.getMfilelds().put("leveldescription", null); - this.subLevelDesc.setGenemenu(this.record); - this.subLevelDesc.setLrecord(new ArrayList()); - - //Menu levelTran - super.getMfilelds().put("pk.levelcodetran", null); - super.getMfilelds().put("leveldescriptiontran", null); - this.levelTran.setGenemenu(this.record); - this.levelTran.setLrecord(new ArrayList()); - - //Menu levelTran - this.menuleveldesc = null; - super.getMfilelds().put("pk.levelcodesubtran", null); - super.getMfilelds().put("leveldescriptionsubtran", null); - super.getMfilelds().put("pk.sublevelcodesubtran", null); - super.getMfilelds().put("subLeveldescriptionsubtran", null); - this.subLevelTran.setGenemenu(this.record); - this.subLevelTran.setLrecord(new ArrayList()); - } - - /** - * Entrega una lista de objetos TgeneMenu - * @return lrecord Lista de objetos TgeneMenu - */ - public static List find() { - try { - MenuController cc = new MenuController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Encuentra por el id de TgeneMenu - * @param id - * @return - */ - public static TgeneMenu findPerfil(Integer id) { - try { - if(id==null || id == 0){ - return null; - } - MenuController cc = new MenuController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk", id.toString()); - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord.get(0); - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - /** - * Llama al Lov MenuLevel - */ - public void openMenuLevelLov() { - if(this.record==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - List values = new ArrayList(); - values.add(this.record.getPk().toString()); - Map> params = new HashMap<>(); - params.put("pk.menucode", values); - LevelLovController.openLov(params); - } - - /** - * Llama al Lov MenuSubLevel - */ - public void openMenuSubLevelLov() { - if(this.record==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(this.menuleveldesc==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - List menucode = new ArrayList(); - List levelcode = new ArrayList(); - menucode.add(this.menuleveldesc.getPk().getMenucode().toString()); - levelcode.add(this.menuleveldesc.getPk().getLevelcode().toString()); - Map> params = new HashMap<>(); - params.put("pk.menucode", menucode); - params.put("pk.levelcode", levelcode); - SubLevelLovController.openLov(params); - } - - /** - * Gestiona la respuesta del Lov MenuLevel - * @param event - * @throws Exception - */ - public void onReturnMenuLevelLov(SelectEvent event) throws Exception { - TgeneMenuLevelDesc t = (TgeneMenuLevelDesc) event.getObject(); - super.addField("pk.levelcode", t.getPk().getLevelcode().toString()); - super.addField("leveldescription", t.getDescription()); - this.subLevelDesc.setGenemenulevel(t); - this.subLevelDesc.initRecPage(); - this.subLevelDesc.query(); - } - - /** - * Gestiona la respuesta del Lov MenuLevel para transacciones por nivel - * @param event - * @throws Exception - */ - public void onReturnMenuLevelTranLov(SelectEvent event) throws Exception { - TgeneMenuLevelDesc t = (TgeneMenuLevelDesc) event.getObject(); - super.addField("pk.levelcodetran", t.getPk().getLevelcode().toString()); - super.addField("leveldescriptiontran", t.getDescription()); - this.levelTran.setGenemenulevel(t); - this.levelTran.initRecPage(); - this.levelTran.query(); - } - - /** - * Gestiona la respuesta del Lov MenuLevel para transacciones por subnivel - * @param event - * @throws Exception - */ - public void onReturnMenuLevelTran2Lov(SelectEvent event) throws Exception { - TgeneMenuLevelDesc t = (TgeneMenuLevelDesc) event.getObject(); - this.menuleveldesc = t; - super.addField("pk.levelcodesubtran", t.getPk().getLevelcode().toString()); - super.addField("leveldescriptionsubtran", t.getDescription()); - super.addField("pk.sublevelcodesubtran", null);// - super.addField("subLeveldescriptionsubtran", null);// - this.subLevelTran.setLrecord(null); - this.subLevelTran.setGenemenulevel(t); - } - - /** - * Gestiona la respuesta del Lov MenuLevel - * @param event - * @throws Exception - */ - public void onReturnMenuSubLevelLov(SelectEvent event) throws Exception { - TgeneMenuSubLevelDesc t = (TgeneMenuSubLevelDesc) event.getObject(); - super.addField("pk.sublevelcodesubtran", t.getPk().getSublevel().toString()); - super.addField("subLeveldescriptionsubtran", t.getDescription()); - this.subLevelTran.setGenemenusublevel(t); - this.subLevelTran.initRecPage(); - this.subLevelTran.query(); - } - - /** - * Abre el lov de transacciones - */ - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - this.levelTran.getRecord().getPk().setTransactionmodule(t.getPk().getTransactionmodule()); - this.levelTran.getRecord().getPk().setTransactioncode(t.getPk().getTransactioncode()); - this.levelTran.getRecord().getPk().setTransactionversion(t.getPk().getTransactionversion()); - this.levelTran.getRecord().put("name", t.getName()); - } - - /** - * Gestiona la respuesta del lov para el subnivel - * @param event - * @throws Exception - */ - public void onReturnSubTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - this.subLevelTran.getRecord().getPk().setTransactionmodule(t.getPk().getTransactionmodule()); - this.subLevelTran.getRecord().getPk().setTransactioncode(t.getPk().getTransactioncode()); - this.subLevelTran.getRecord().getPk().setTransactionversion(t.getPk().getTransactionversion()); - this.subLevelTran.getRecord().put("name", t.getName()); - } - - /** - * Entrega el valor de levelDesc - * @return levelDesc - */ - public LevelDescController getLevelDesc() { - return levelDesc; - } - - /** - * Fija el valor de levelDesc - * @param levelDesc - */ - public void setLevelDesc(LevelDescController levelDesc) { - this.levelDesc = levelDesc; - } - - /** - * Entrega el valor de level - * @return level - */ - public LevelController getLevel() { - return level; - } - - /** - * Fija el valor de level - * @param level - */ - public void setLevel(LevelController level) { - this.level = level; - } - - /** - * Entrega el valor de subLevelDesc - * @return subLevelDesc - */ - public SubLevelDescController getSubLevelDesc() { - return subLevelDesc; - } - - /** - * Fija el valor de subLevelDesc - * @param subLevelDesc - */ - public void setSubLevelDesc(SubLevelDescController subLevelDesc) { - this.subLevelDesc = subLevelDesc; - } - - /** - * Entrega el valor de menuLevel - * @return menuLevel - */ - public MenuLevelTranController getLevelTran() { - return levelTran; - } - - /** - * Fija el valor de menuLevel - * @param menuLevel - */ - public void setLevelTran(MenuLevelTranController levelTran) { - this.levelTran = levelTran; - } - - /** - * Entrega el valor de subLevelTran - * @return subLevelTran - */ - public MenuSubLevelTranController getSubLevelTran() { - return subLevelTran; - } - - /** - * Fija el valor de subLevelTran - * @param subLevelTran - */ - public void setSubLevelTran(MenuSubLevelTranController subLevelTran) { - this.subLevelTran = subLevelTran; - } - - /** - * Entrega el valor de subLevel - * @return subLevel - */ - public SubLevelController getSubLevel() { - return subLevel; - } - - /** - * Fija el valor de subLevel - * @param subLevel - */ - public void setSubLevel(SubLevelController subLevel) { - this.subLevel = subLevel; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuLevelTranController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuLevelTranController.java.svn-base deleted file mode 100644 index 277d269..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuLevelTranController.java.svn-base +++ /dev/null @@ -1,217 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelTran; - -/** - * Clase controladora del bean TgeneMenuLevelTran. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MenuLevelTranController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MenuLevelTranController() throws Exception { - super(TgeneMenuLevelTran.class); - } - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenu genemenu; - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenuLevelDesc genemenulevel; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.genemenu = null; - this.genemenulevel = null; - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENULEVELTRAN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Filtros - this.getMfilters().put("pk.menucode", this.genemenu!=null?this.genemenu.getPk().toString():null); - this.getMfilters().put("pk.levelcode", this.genemenulevel!=null?this.genemenulevel.getPk().getLevelcode().toString():null); - - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(super.getMfilters().get("pk.levelcode")==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.presentationorder"); // En en string van todos los campos de - - // subqueries - SubQuery subquery = new SubQuery("TgeneTransaction", "name", "name", - "i.pk.transactionmodule = t.pk.transactionmodule and " - + "i.pk.transactioncode = t.pk.transactioncode and " - + "i.pk.transactionversion = t.pk.transactionversion"); - dto.addSubQuery(subquery); - - // subqueries 1 - SubQuery subquery1 = new SubQuery("TgeneMenuLevelDesc", "description", "leveldescription", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode and i.pk.languagecode = '"+this.getLoginController().getRequest().getLanguage()+"'"); - dto.addSubQuery(subquery1); - - // subqueries 2 - SubQuery subquery2 = new SubQuery("TgeneMenu", "description", "menudesc", - "i.pk = t.pk.menucode"); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (this.genemenu == null) { - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(this.genemenulevel==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - super.create(); - System.out.println("REGISTRO "+this.record); - this.record.put("menudesc", this.genemenu.getDescription()); - this.record.put("leveldescription", this.genemenulevel.getDescription()); - this.record.getPk().setMenucode(this.genemenulevel.getPk().getMenucode()); - this.record.getPk().setLevelcode(this.genemenulevel.getPk().getLevelcode()); - } - - - /** - * Entrega el objeto TgeneMenuLevelDesc - * @return genemenulevel - */ - public TgeneMenuLevelDesc getGenemenulevel() { - return genemenulevel; - } - - /** - * Fija el objeto TgeneMenuLevelDesc - * @param genemenulevel - */ - public void setGenemenulevel(TgeneMenuLevelDesc genemenulevel) { - this.genemenulevel = genemenulevel; - } - - /** - * Entrega el objeto TgeneMenu - * @return genemenu - */ - public TgeneMenu getGenemenu() { - return genemenu; - } - - /** - * Entrega el objeto TgeneMenu - * @return genemenu - */ - public void setGenemenu(TgeneMenu genemenu) { - this.genemenu = genemenu; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuSubLevelTranController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuSubLevelTranController.java.svn-base deleted file mode 100644 index 9d06982..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/MenuSubLevelTranController.java.svn-base +++ /dev/null @@ -1,257 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelTran; - -/** - * Clase controladora del bean TgeneMenuSubLevelTran. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MenuSubLevelTranController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MenuSubLevelTranController() throws Exception { - super(TgeneMenuSubLevelTran.class); - } - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenu genemenu; - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenuLevelDesc genemenulevel; - - /** - * Atributo para el objeto TgeneMenuSubLevelDesc - */ - private TgeneMenuSubLevelDesc genemenusublevel; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.genemenu = null; - this.genemenulevel = null; - this.genemenusublevel = null; - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENUSUBLEVELTRAN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Filtros - this.getMfilters().put("pk.menucode", this.genemenu!=null?this.genemenu.getPk().toString():null); - this.getMfilters().put("pk.levelcode", this.genemenulevel!=null?this.genemenulevel.getPk().getLevelcode().toString():null); - this.getMfilters().put("pk.sublevel", this.genemenusublevel!=null?this.genemenusublevel.getPk().getSublevel().toString():null); - - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(super.getMfilters().get("pk.levelcode")==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - if(super.getMfilters().get("pk.sublevel")==null){ - MessageHelper.setMessageError("msg_menuSubLevelRequired"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.presentationorder"); // En en string van todos los campos de - - // subqueries - SubQuery subquery = new SubQuery("TgeneTransaction", "name", "name", - "i.pk.transactionmodule = t.pk.transactionmodule and " - + "i.pk.transactioncode = t.pk.transactioncode and " - + "i.pk.transactionversion = t.pk.transactionversion"); - dto.addSubQuery(subquery); - - // subqueries 1 - SubQuery subquery1 = new SubQuery("TgeneMenuLevelDesc", "description", "leveldescription", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode and i.pk.languagecode = '"+this.getLoginController().getRequest().getLanguage()+"'"); - dto.addSubQuery(subquery1); - - // subqueries 2 - SubQuery subquery2 = new SubQuery("TgeneMenuSubLevelDesc", "description", "subleveldescription", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode and i.pk.sublevel = t.pk.sublevel and i.pk.languagecode = '"+this.getLoginController().getRequest().getLanguage()+"'"); - dto.addSubQuery(subquery2); - - // subqueries 3 - SubQuery subquery3 = new SubQuery("TgeneMenu", "description", "menudesc", - "i.pk = t.pk.menucode"); - dto.addSubQuery(subquery3); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (this.genemenu == null) { - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(this.genemenulevel==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - if(this.genemenusublevel==null){ - MessageHelper.setMessageError("msg_menuSubLevelRequired"); - return; - } - super.create(); - System.out.println("REGISTRO "+this.record); - this.record.put("menudesc", this.genemenu.getDescription()); - this.record.put("leveldescription", this.genemenulevel.getDescription()); - this.record.put("subleveldescription", this.genemenusublevel.getDescription()); - this.record.getPk().setMenucode(this.genemenusublevel.getPk().getMenucode()); - this.record.getPk().setLevelcode(this.genemenusublevel.getPk().getLevelcode()); - this.record.getPk().setSublevel(this.genemenusublevel.getPk().getSublevel()); - } - - - /** - * Entrega el objeto TgeneMenuLevelDesc - * @return genemenulevel - */ - public TgeneMenuLevelDesc getGenemenulevel() { - return genemenulevel; - } - - /** - * Fija el objeto TgeneMenuLevelDesc - * @param genemenulevel - */ - public void setGenemenulevel(TgeneMenuLevelDesc genemenulevel) { - this.genemenulevel = genemenulevel; - } - - /** - * Entrega el objeto TgeneMenu - * @return genemenu - */ - public TgeneMenu getGenemenu() { - return genemenu; - } - - /** - * Fija el objeto TgeneMenu - * @param genemenu - */ - public void setGenemenu(TgeneMenu genemenu) { - this.genemenu = genemenu; - } - - /** - * Entrega el objeto TgeneMenuSubLevelDesc - * @return genemenusublevel - */ - public TgeneMenuSubLevelDesc getGenemenusublevel() { - return genemenusublevel; - } - - /** - * Fija el objeto TgeneMenuSubLevelDesc - * @param genemenusublevel - */ - public void setGenemenusublevel(TgeneMenuSubLevelDesc genemenusublevel) { - this.genemenusublevel = genemenusublevel; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelController.java.svn-base deleted file mode 100644 index 4963de4..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelController.java.svn-base +++ /dev/null @@ -1,90 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.math.BigDecimal; -import java.util.ArrayList; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevel; - -/** - * Clase controladora del bean TgeneMenuLevel. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class SubLevelController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SubLevelController() throws Exception { - super(TgeneMenuSubLevel.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENUSUBLEVEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - protected void querydatabase() { - MessageHelper.setMessageError("msg_notQuery"); - } - - @Override - public void save(){ - MessageHelper.setMessageError("msg_notSave"); - } - - /** - * Obtiene el codigo del levelcode - */ - public Integer getSubLevelCode( Integer menucode, Integer levelcode){ - Integer sublevelcode = null; - try { - Request request = this.callerhelper.getRequest(); - request.put("queryalias", "EXECUTESQL"); - request.put("querytype", "P"); - request.put("isUniqueResult", "Y"); - request.put("sql", "select coalesce(max(SUBLEVEL), 0)+1 from TGENEMENUSUBLEVEL where MENUCODE = "+menucode+" and LEVELCODE = "+levelcode); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - sublevelcode = null; - MessageHelper.setMessageError(resp); - } else { - sublevelcode = ((BigDecimal)resp.get("result")).intValue(); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - return sublevelcode; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelDescController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelDescController.java.svn-base deleted file mode 100644 index 3148b38..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/menu/.svn/text-base/SubLevelDescController.java.svn-base +++ /dev/null @@ -1,242 +0,0 @@ -package com.fp.frontend.controller.pgeneral.menu; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuLevelDesc; -import com.fp.persistence.pgeneral.menu.TgeneMenuSubLevelDesc; - - -/** - * Clase controladora del bean TgeneMenuSubLevelDesc. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class SubLevelDescController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public SubLevelDescController() throws Exception { - super(TgeneMenuSubLevelDesc.class); - } - - @ManagedProperty(value = "#{subLevelController}") - private SubLevelController subLevel; - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenu genemenu; - - /** - * Atributo para el objeto TgeneMenu - */ - private TgeneMenuLevelDesc genemenulevel; - - /** - * Atributo para el codigo de subnivel - */ - private Integer sublevelcode; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.genemenu = null; - this.genemenulevel = null; - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENUSUBLEVELDESC"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Inicializa las paginas en la consulta - */ - public void initRecPage(){ - this.page = 0; - this.recperpage = 10; - this.sublevelcode = this.subLevel.getSubLevelCode(this.genemenulevel.getPk().getMenucode(), this.genemenulevel.getPk().getLevelcode()); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - //Filtros - this.getMfilters().put("pk.menucode", this.genemenu!=null?this.genemenu.getPk().toString():null); - this.getMfilters().put("pk.levelcode", this.genemenulevel!=null?this.genemenulevel.getPk().getLevelcode().toString():null); - this.getMfilters().put("pk.languagecode", this.getLoginController().getRequest().getLanguage()); - - if(super.getMfilters().get("pk.menucode")==null){ - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(super.getMfilters().get("pk.levelcode")==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.levelcode"); // En en string van todos los campos de - - // subqueries - SubQuery subquery = new SubQuery("TgeneMenuSubLevel", "presentationorder", "presentationorder", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode and i.pk.sublevel = t.pk.sublevel"); - dto.addSubQuery(subquery); - - // subqueries 1 - SubQuery subquery1 = new SubQuery("TgeneMenuLevelDesc", "description", "leveldescription", - "i.pk.menucode = t.pk.menucode and i.pk.levelcode = t.pk.levelcode and i.pk.languagecode = t.pk.languagecode"); - dto.addSubQuery(subquery1); - - // subqueries 2 - SubQuery subquery2 = new SubQuery("TgeneMenu", "description", "menudesc", - "i.pk = t.pk.menucode"); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (this.genemenu == null) { - MessageHelper.setMessageError("msg_menucodeRequired"); - return; - } - if(this.genemenulevel==null){ - MessageHelper.setMessageError("msg_menuLevelRequired"); - return; - } - super.create(); - this.record.put("menudesc", this.genemenu.getDescription()); - this.record.put("leveldescription", this.genemenulevel.getDescription()); - this.record.getPk().setMenucode(this.genemenulevel.getPk().getMenucode()); - this.record.getPk().setLevelcode(this.genemenulevel.getPk().getLevelcode()); - this.record.getPk().setSublevel(this.sublevelcode++); - this.record.getPk().setLanguagecode(this.getLoginController().getRequest().getLanguage()); - System.out.println("RECORDDDDDDDDDDDD "+this.record); - } - - - /** - * Entrega el objeto TgeneMenuLevelDesc - * @return genemenulevel - */ - public TgeneMenuLevelDesc getGenemenulevel() { - return genemenulevel; - } - - /** - * Fija el objeto TgeneMenuLevelDesc - * @param genemenulevel - */ - public void setGenemenulevel(TgeneMenuLevelDesc genemenulevel) { - this.genemenulevel = genemenulevel; - } - - /** - * Entrega el objeto SubLevelController - * @return subLevel - */ - public SubLevelController getSubLevel() { - return subLevel; - } - - /** - * Fija el objeto SubLevelController - * @param subLevel - */ - public void setSubLevel(SubLevelController subLevel) { - this.subLevel = subLevel; - } - - - public TgeneMenu getGenemenu() { - return genemenu; - } - - /** - * Entrega el objeto TgeneMenu - * @return genemenu - */ - public void setGenemenu(TgeneMenu genemenu) { - this.genemenu = genemenu; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/entries deleted file mode 100644 index ae337a8..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -MessageTemplatesDescController.java -file - - - - -2022-07-28T03:39:55.312598Z -b8c1ff9e5f400755255fd2d2acdeb7c7 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5025 - -MessageTemplatesController.java -file - - - - -2022-07-28T03:39:55.312598Z -7543857643bc3c243dd2f78851f6025a -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3925 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesController.java.svn-base deleted file mode 100644 index 8291b7b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesController.java.svn-base +++ /dev/null @@ -1,145 +0,0 @@ -package com.fp.frontend.controller.pgeneral.message; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; - -/** - * Clase controladora del bean TgeneMessageTemplates. - * - * @author Andres E Carpio. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MessageTemplatesController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MessageTemplatesController() throws Exception { - super(TgeneMessageTemplates.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MESSAGETEMPLATE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como - * nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = new DtoQuery(this.classType.getName(), this.page, this.recperpage, true, - super.getMfilters()); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los - // registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public static List find() { - try { - MessageTemplatesController cc = new MessageTemplatesController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesDescController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesDescController.java.svn-base deleted file mode 100644 index e06231b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/message/.svn/text-base/MessageTemplatesDescController.java.svn-base +++ /dev/null @@ -1,177 +0,0 @@ -package com.fp.frontend.controller.pgeneral.message; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.LanguageController; -import com.fp.frontend.controller.pgeneral.lov.MessageTemplatesLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneLanguage; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; - -/** - * Clase controladora del bean TgeneMessageTemplatesDesc. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MessageTemplatesDescController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public MessageTemplatesDescController() throws Exception { - super(TgeneMessageTemplatesDesc.class); - } - - /** - * Atributo para la lista de lenguajes - */ - private List lLanguage; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Lista - this.lLanguage = LanguageController.find(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MESSAGETEMPLATESDESC"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.code"); - - // subqueries 1 - SubQuery subquery = new SubQuery("TgeneMessageTemplates", "description", "messagedescription", - "i.pk = t.pk.code"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void update() throws Exception{ - if(this.record.getPk().getCode()==null){ - MessageHelper.setMessageError("msg_messageRequired"); - return; - } - super.update(); - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Llama al Lov de mensajes - */ - public void openMessageLov() { - Map> params = new HashMap<>(); - MessageTemplatesLovController.openLov(params); - } - - /** - * Gestiona respuesta del lov de mensajes - * @param event - * @throws Exception - */ - public void onReturnMessageNewLov(SelectEvent event) throws Exception { - TgeneMessageTemplates t = (TgeneMessageTemplates) event.getObject(); - this.record.getPk().setCode(t.getPk()); - this.record.put("messagedescription", t.getDescription()); - } - - /** - * Entrega una lista de objetos TgeneLanguage - * @return lLanguage - */ - public List getlLanguage() { - return lLanguage; - } - - /** - * Fija una lista de objetos TgeneLanguage - * @param lLanguage - */ - public void setlLanguage(List lLanguage) { - this.lLanguage = lLanguage; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/entries deleted file mode 100644 index 783a288..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ProcessController.java -file - - - - -2022-07-28T03:39:55.116597Z -e1bcb9e0c050a4a12fd4b37315f12f68 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3886 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/text-base/ProcessController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/text-base/ProcessController.java.svn-base deleted file mode 100644 index 28b1bfe..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/proc/.svn/text-base/ProcessController.java.svn-base +++ /dev/null @@ -1,141 +0,0 @@ -package com.fp.frontend.controller.pgeneral.proc; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.proc.TgeneProcess; - -/** - * Clase controladora del bean TgeneProcess. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ProcessController extends AbstractController { - - private static final long serialVersionUID = 1L; - List lprocesstype; - - public ProcessController() throws Exception { - super(TgeneProcess.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - - // Inicializa autoconsulta - super.startQuery(); - - } - - public List getLprocesstype() { - return lprocesstype; - } - - public void setLprocesstype(List lprocesstype) { - this.lprocesstype = lprocesstype; - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PROCESS"; - lprocesstype = CatalogDetailController.find("PROCESSTYPE"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - this.record.getPk().setCatalogcodetypeprocess("PROCESSTYPE"); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.processcode"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/entries deleted file mode 100644 index cb9873d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/entries +++ /dev/null @@ -1,198 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ProductController.java -file - - - - -2022-07-28T03:39:55.040597Z -988091a4f9cf54435ada6f982f355295 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4802 - -ModuleController.java -file - - - - -2022-07-28T03:39:55.040597Z -41011ce013ad57452cef8a2eb7183622 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4215 - -SubProductCurrencyController.java -file - - - - -2022-07-28T03:39:55.040597Z -a03a5811a4ed56ee0c30255359ad182e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7548 - -ProductDefinitionController.java -file - - - - -2022-07-28T03:39:55.041597Z -463f79d04e1e6263be87fc608ad6c05f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5577 - -SubProductController.java -file - - - - -2022-07-28T03:39:55.041597Z -68224e4a4dbc73a94e6a39b3dd82311f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5506 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ModuleController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ModuleController.java.svn-base deleted file mode 100644 index 5ed848a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ModuleController.java.svn-base +++ /dev/null @@ -1,138 +0,0 @@ -package com.fp.frontend.controller.pgeneral.product; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.product.TgeneModule; - -/** - * Clase controladora del bean TgeneModule. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ModuleController extends AbstractController { - - public ModuleController() throws Exception { - super(TgeneModule.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "MODULE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - public static List find() { - try { - ModuleController cc = new ModuleController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductController.java.svn-base deleted file mode 100644 index bd66d97..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductController.java.svn-base +++ /dev/null @@ -1,173 +0,0 @@ -package com.fp.frontend.controller.pgeneral.product; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; - -/** - * Clase controladora del bean TgeneProduct. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ProductController extends AbstractController { - - - List lmodules; - - public ProductController() throws Exception { - super(TgeneProduct.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lmodules = ModuleController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 500; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PRODUCT"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - this.record.getPk().setModulecode(super.getMfilters().get("pk.modulecode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - String module = super.getMfilters().get("pk.modulecode"); - if ((module==null) || module.isEmpty()) { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.productcode"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - public void changemodule() throws Exception { - //Metodo dummy es necesario para actualizar datos del filtro para ejecutar la consulta. - this.querydatabase(); - } - - public static List find(String modulecode) { - try { - ProductController pc = new ProductController(); - pc.addFilter("pk.modulecode", modulecode); - pc.init(); - pc.recperpage = 300; - pc.querydatabase(); - if ((pc.lrecord != null) && !pc.lrecord.isEmpty()) { - return pc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Entrega el valor de: lmodules - * @return List - */ - public List getLmodules() { - return this.lmodules; - } - - /** - * Fija el valor de: lmodules - * @param lmodules Valor a fijar en el atributo. - */ - - public void setLmodules(List lmodules) { - this.lmodules = lmodules; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductDefinitionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductDefinitionController.java.svn-base deleted file mode 100644 index 424e982..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/ProductDefinitionController.java.svn-base +++ /dev/null @@ -1,212 +0,0 @@ -package com.fp.frontend.controller.pgeneral.product; - -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.TabChangeEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; - -/** - * Clase controladora de definicion de productos, subproductos y monedas por subproducto. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ProductDefinitionController extends AbstractController { - - private String tabid = "product"; - - @ManagedProperty(value = "#{productController}") - private ProductController product; - - @ManagedProperty(value = "#{subProductController}") - private SubProductController subproduct; - - @ManagedProperty(value = "#{subProductCurrencyController}") - private SubProductCurrencyController subproductcurrency; - - public ProductDefinitionController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - } - - - public void tabChange(TabChangeEvent event) throws Exception { - this.tabid = event.getTab().getId(); - } - - @Override - public void query() { - try { - if(this.tabid.equals("product") ){ - this.product.query(); - }else if(this.tabid.equals("subproduct") ) { - this.subproduct.query(); - }else{ - this.subproductcurrency.query(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void next() { - try { - try { - if(this.tabid.equals("product") ){ - this.product.next(); - }else if(this.tabid.equals("subproduct") ) { - this.subproduct.next(); - }else{ - this.subproductcurrency.next(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void previous() { - try { - if(this.tabid.equals("product") ){ - this.product.previous(); - }else if(this.tabid.equals("subproduct") ) { - this.subproduct.previous(); - }else{ - this.subproductcurrency.previous(); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosaveprod = this.product.getDtoSave(); - if(dtosaveprod.pendingProcess()){ - msave.put(this.product.getBeanalias(), dtosaveprod); // adicionar metadata de mantenimiento para cada tabla. - } - DtoSave dtosavesubpro = this.subproduct.getDtoSave(); - if(dtosavesubpro.pendingProcess()){ - msave.put(this.subproduct.getBeanalias(), dtosavesubpro); // adicionar metadata de mantenimiento para cada tabla. - } - DtoSave dtosavesubprocurr = this.subproductcurrency.getDtoSave(); - if(dtosavesubprocurr.pendingProcess()){ - msave.put(this.subproductcurrency.getBeanalias(), dtosavesubprocurr); // adicionar metadata de mantenimiento para cada tabla. - } - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.product.postCommit(resp); - this.subproduct.postCommit(resp); - this.subproductcurrency.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - - } - - @Override - public void postCommit(Response response) throws Exception { - - } - - /** - * Entrega el valor de: product - * @return ProductController - */ - public ProductController getProduct() { - return this.product; - } - - /** - * Fija el valor de: product - * @param product Valor a fijar en el atributo. - */ - - public void setProduct(ProductController product) { - this.product = product; - } - - /** - * Entrega el valor de: subproduct - * @return SubProductController - */ - public SubProductController getSubproduct() { - return this.subproduct; - } - - /** - * Fija el valor de: subproduct - * @param subproduct Valor a fijar en el atributo. - */ - - public void setSubproduct(SubProductController subproduct) { - this.subproduct = subproduct; - } - - /** - * Entrega el valor de: subproductcurrency - * @return SubProductCurrencyController - */ - public SubProductCurrencyController getSubproductcurrency() { - return this.subproductcurrency; - } - - /** - * Fija el valor de: subproductcurrency - * @param subproductcurrency Valor a fijar en el atributo. - */ - - public void setSubproductcurrency( - SubProductCurrencyController subproductcurrency) { - this.subproductcurrency = subproductcurrency; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductController.java.svn-base deleted file mode 100644 index 2d91bae..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductController.java.svn-base +++ /dev/null @@ -1,187 +0,0 @@ -package com.fp.frontend.controller.pgeneral.product; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; - -/** - * Clase controladora del bean TgeneSubProduct. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SubProductController extends AbstractController { - - List lmodules; - List lproduct; - - public SubProductController() throws Exception { - super(TgeneSubProduct.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lmodules = ModuleController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 500; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SUBPRODUCT"; - this.lproduct = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - this.record.getPk().setModulecode(super.getMfilters().get("pk.modulecode")); - this.record.getPk().setProductcode(super.getMfilters().get("pk.productcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - String module = super.getMfilters().get("pk.modulecode"); - String product = super.getMfilters().get("pk.productcode"); - if ((module==null) || module.isEmpty()) { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - if ((product==null) || product.isEmpty()) { - MessageHelper.setMessageError("msg_productrequird"); - return; - } - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.description"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - public static List find(String modulecode, String productcode) { - try { - SubProductController sc = new SubProductController(); - sc.addFilter("pk.modulecode", modulecode); - sc.addFilter("pk.productcode", productcode); - sc.init(); - sc.recperpage = 300; - sc.querydatabase(); - if ((sc.lrecord != null) && !sc.lrecord.isEmpty()) { - return sc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public void changemodule() throws Exception { - this.lproduct = ProductController.find(super.getMfilters().get("pk.modulecode")); - this.lrecord = new ArrayList<>(); - super.getMfilters().put("pk.productcode", ""); - } - - public void changeproduct() throws Exception { - //Metodo dummy es necesario para actualizar datos del filtro para ejecutar la consulta. - this.querydatabase(); - } - - /** - * Entrega el valor de: lmodules - * @return List - */ - public List getLmodules() { - return this.lmodules; - } - - /** - * Entrega el valor de: lproduct - * @return List - */ - public List getLproduct() { - return this.lproduct; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductCurrencyController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductCurrencyController.java.svn-base deleted file mode 100644 index 295e0f1..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/product/.svn/text-base/SubProductCurrencyController.java.svn-base +++ /dev/null @@ -1,240 +0,0 @@ -package com.fp.frontend.controller.pgeneral.product; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CurrencyController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCurrency; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.product.TgeneProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProduct; -import com.fp.persistence.pgeneral.product.TgeneSubProductCurrency; - -/** - * Clase controladora del bean TgeneSubProductCurrency. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SubProductCurrencyController extends AbstractController { - - List lmodules; - List lcurrency; - List lproduct; - List lsubproduct; - - public SubProductCurrencyController() throws Exception { - super(TgeneSubProductCurrency.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lmodules = ModuleController.find(); - this.lcurrency = CurrencyController.find(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 500; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SUBPRODUCTCURRENCY"; - this.lproduct = new ArrayList<>(); - this.lsubproduct = new ArrayList<>(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - super.create(); - this.record.getPk().setModulecode(super.getMfilters().get("pk.modulecode")); - this.record.getPk().setProductcode(super.getMfilters().get("pk.productcode")); - this.record.getPk().setSubproductcode(super.getMfilters().get("pk.subproductcode")); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - String module = super.getMfilters().get("pk.modulecode"); - String product = super.getMfilters().get("pk.productcode"); - String subproduct = super.getMfilters().get("pk.subproductcode"); - if ((module==null) || module.isEmpty()) { - MessageHelper.setMessageError("msg_modulerequird"); - return; - } - if ((product==null) || product.isEmpty()) { - MessageHelper.setMessageError("msg_productrequird"); - return; - } - if ((subproduct==null) || subproduct.isEmpty()) { - MessageHelper.setMessageError("msg_subproductrequird"); - return; - } - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.currencycode"); - // subqueries - SubQuery subquery = new SubQuery("TgeneCurrency", "description", "currencydesc", - "i.pk = t.pk.currencycode"); - dto.addSubQuery(subquery); - - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - - public static List find(String modulecode, String productcode, String subproductcode) { - try { - SubProductCurrencyController sc = new SubProductCurrencyController(); - sc.addFilter("pk.modulecode", modulecode); - sc.addFilter("pk.productcode", productcode); - sc.addFilter("pk.subproductcode", subproductcode); - sc.init(); - sc.recperpage = 300; - sc.querydatabase(); - if ((sc.lrecord != null) && !sc.lrecord.isEmpty()) { - return sc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - } - - public void changemodule() throws Exception { - this.lproduct = ProductController.find(super.getMfilters().get("pk.modulecode")); - this.lsubproduct = new ArrayList<>(); - this.lrecord = new ArrayList<>(); - super.getMfilters().put("pk.productcode", ""); - super.getMfilters().put("pk.subproductcode", ""); - } - - public void changeproduct() throws Exception { - this.lsubproduct = SubProductController.find(super.getMfilters().get("pk.modulecode"), super.getMfilters().get("pk.productcode")); - this.lrecord = new ArrayList<>(); - super.getMfilters().put("pk.subproductcode", ""); - } - - public void changesubproduct() throws Exception { - //Metodo dummy es necesario para actualizar datos del filtro para ejecutar la consulta. - this.querydatabase(); - } - - public void refreshCurrency() { - for (TgeneCurrency obj : this.lcurrency) { - if (obj.getPk().compareTo(this.record.getPk().getCurrencycode()) == 0) { - this.record.modifiedData.put("currencydesc", obj.getDescription()); - break; - } - } - } - - /** - * Entrega el valor de: lmodules - * @return List - */ - public List getLmodules() { - return this.lmodules; - } - - /** - * Entrega el valor de: lproduct - * @return List - */ - public List getLproduct() { - return this.lproduct; - } - - /** - * Entrega el valor de: lsubproduct - * @return List - */ - public List getLsubproduct() { - return this.lsubproduct; - } - - /** - * Entrega el valor de: lcurrency - * @return List - */ - public List getLcurrency() { - return this.lcurrency; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/entries deleted file mode 100644 index b961e84..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ResultsController.java -file - - - - -2022-07-28T03:39:55.569599Z -6ebabecc6aacd69def4f97c2b1ebae88 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4081 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/text-base/ResultsController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/text-base/ResultsController.java.svn-base deleted file mode 100644 index 1461dcb..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/result/.svn/text-base/ResultsController.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.frontend.controller.pgeneral.result; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.result.TgeneResults; - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ResultsController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ResultsController() throws Exception { - super(TgeneResults.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public static TgeneResults find(String resultcode) throws Exception { - ResultsController rc = new ResultsController(); - rc.init(); - rc.addFilter("pk.resultcode", resultcode); - rc.addFilter("pk.languagecode", rc.getLoginController().getRequest().getLanguage()); - rc.querydatabase(); - if (rc.lrecord != null && !rc.lrecord.isEmpty()) { - return rc.lrecord.get(0); - } - return null; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/entries deleted file mode 100644 index f21c812..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/entries +++ /dev/null @@ -1,300 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe -svn://172.17.26.185/COMACO - - - -2015-09-18T03:29:01.430566Z -4280 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TerminalController.java -file - - - - -2022-07-28T03:39:55.612599Z -2658aa956a0f3ad791b76c00fe26c785 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -7327 - -UserProfileController.java -file - - - - -2022-07-28T03:39:55.612599Z -83af7bc16b6de7437492985b151afa26 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -3454 - -UserChangePassAdmin.java -file - - - - -2022-07-28T03:39:55.612599Z -738c92453206d520f0faa524b3fd0a5d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -4431 - -UserDetailController.java -file - - - - -2022-07-28T03:39:55.612599Z -8a04584380d959a138832604dd30c421 -2014-11-14T09:58:28.653202Z -2806 -fpazmino - - - - - - - - - - - - - - - - - - - - - -6098 - -AuditInsDelController.java -file - - - - -2022-07-28T03:39:55.613599Z -88cc9090bbd6e684728d7a8cd5be21d5 -2014-12-29T09:02:08.504102Z -3669 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -4919 - -ProfileHoraryController.java -file - - - - -2022-07-28T03:39:55.613599Z -0b6a832f1d4191d4fa7b77a3980ab4ac -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -8989 - -SafeAuditController.java -file - - - - -2022-07-28T03:39:55.613599Z -2cb7986aaf3f5a2daab76a6d135ede56 -2014-12-29T09:02:08.504102Z -3669 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -3345 - -UserPerfilAssiggnationController.java -file - - - - -2022-07-28T03:39:55.614599Z -6d77fc66c28f49f7637461ac00cb8a46 -2015-09-18T03:29:01.430566Z -4280 -fpazmino - - - - - - - - - - - - - - - - - - - - - -7247 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/AuditInsDelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/AuditInsDelController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/AuditInsDelController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/SafeAuditController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/SafeAuditController.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/prop-base/SafeAuditController.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/AuditInsDelController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/AuditInsDelController.java.svn-base deleted file mode 100644 index bfd3e25..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/AuditInsDelController.java.svn-base +++ /dev/null @@ -1,163 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeAuditInsDel; - -/** - * Clase controladora del bean TsafeAuditInsDel. - * - * @author MAV. - * @version 1.0 - */ -@ManagedBean -@ViewScoped -public class AuditInsDelController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public AuditInsDelController() throws Exception { - super(TsafeAuditInsDel.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 5; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SAUDITINSDEL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - public DtoQuery getDtoAuditInsDel() throws Exception{ - //super.addFilterDateto(); - - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.changedate"); - - //subquery - SubQuery subqueryBranch = new SubQuery("TgeneBranch", "description", "branchdesc", - "i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryBranch); - - SubQuery subqueryOffice = new SubQuery("TgeneOffice", "description", "officedesc", - "i.pk.officecode = t.officecode and i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryOffice); - - SubQuery subqueryPerson = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode = t.companycode and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryPerson); - - SubQuery subqueryTransaction = new SubQuery("TgeneTransaction", "name", "transactiondesc", - "i.pk.transactioncode = t.transactioncode and i.pk.transactionmodule = t.transactionmodule"); - dto.addSubQuery(subqueryTransaction); - //subquery - - return dto; - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = this.getDtoAuditInsDel(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - this.manageResponseAudit(resp); - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Controla la respuesta de la consulta - * - * @param resp - * Objeto Response - * @throws Exception - */ - @SuppressWarnings("unchecked") - public void manageResponseAudit(Response resp) throws Exception { - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = null; - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - - super.postQuery(this.lrecord); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/ProfileHoraryController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/ProfileHoraryController.java.svn-base deleted file mode 100644 index 4a4f359..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/ProfileHoraryController.java.svn-base +++ /dev/null @@ -1,304 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.lov.ProfileLovController; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeProfile; -import com.fp.persistence.pgeneral.safe.TsafeProfileHorary; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - - -/** - * Clase controladora del bean TsafeProfileHorary. - * - * @author David López P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ProfileHoraryController extends AbstractController { - - private static final long serialVersionUID = 1L; - - private static SimpleDateFormat TIMEFORMAT = new SimpleDateFormat("HH:mm"); - - private Date initTime; - - private Date endTime; - - private Date actualDate; - - public ProfileHoraryController() throws Exception { - super(TsafeProfileHorary.class); - } - - private List tdays; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "PHORARY"; - this.tdays = CatalogDetailController.find("DAYS"); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TsafeProfileHorary y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.transactionmodule") == null ) { - MessageHelper.setMessageError("msg_transactionrequird"); - return; - } - if ( super.getMfilters().get("pk.profilecode")==null) { - MessageHelper.setMessageError("msg_profilerequird"); - return; - } - super.create(); - this.record.getPk().setProfilecode(super.getMfilters().get("pk.profilecode")); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(Integer.valueOf(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(Integer.valueOf(super.getMfilters().get("pk.transactionversion"))); - } - - @Override - public void update() throws Exception { - if(record.getInittime().compareTo(record.getFinishtime()) > 0 ){ - MessageHelper.setMessageError("msg_validatetimehour"); - return; - } - String registercode = record.getPk().getProfilecode()+record.getPk().getTransactionmodule()+record.getPk().getTransactioncode()+record.getPk().getTransactionversion()+record.getPk().getDay(); - if(record.getRegistercode() == null || !record.getRegistercode().equals(registercode)){ - record.setRegistercode(registercode); - } - super.update(); - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - if ((super.getMfilters().get("pk.transactionmodule") == null) || (super.getMfilters().get("pk.profilecode")==null)) { - MessageHelper.setMessageError("msg_transactionrequird"); - return; - } - try { - //super.addFilter("catalogtypeprocess", "REPORT"); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.profilecode"); - - // subqueries - SubQuery subquery = new SubQuery("TsafeProfile", "description", "descrip", - "i.pk = t.pk.profilecode"); - dto.addSubQuery(subquery); - - SubQuery subquery2 = new SubQuery("TgeneCatalogDetail", "description", "days", - "i.legalcode = t.pk.day and i.pk.catalogcode='DAYS'"); - - dto.addSubQuery(subquery); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - TransactionLovController.openLov(params); - } - - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("name", t.getName()); - - } - - public void openProfileLov() { - Map> params = new HashMap<>(); - ProfileLovController.openLov(params); - } - - public void onReturnProfileLov(SelectEvent event) throws Exception { - TsafeProfile t = (TsafeProfile) event.getObject(); - super.addFilter("pk.profilecode", t.getPk()); - super.addField("description", t.getDescription()); - - } - - /** - * Obtiene dias a partir del codigo enviado. - */ - public String getDay(int daycode){ - String dayOfWeek = ""; - for(TgeneCatalogDetail day: this.tdays){ - if(day.getLegalcode().compareTo(String.valueOf(daycode))==0){ - dayOfWeek = day.getDescription(); - } - } - return dayOfWeek; - } - - public List getTdays() { - return this.tdays; - } - - public void setTdays(List tdays) { - this.tdays = tdays; - } - - /** - * Entrega el valor de: initTime - * @return Date - */ - public Date getInitTime() { - java.util.Date dt = null; - try{ - if(record != null && record.getInittime() != null){ - dt = TIMEFORMAT.parse(this.record.getInittime()); - } - } catch (Exception e) { - e.printStackTrace(); - } - return dt; - } - - /** - * Fija el valor de: initTime - * @param initTime Valor a fijar en el atributo - */ - public void setInitTime(Date initTime) { - this.initTime = initTime; - this.record.setInittime(TIMEFORMAT.format(initTime)); - } - - - - /** - * Entrega el valor de: endTime - * @return Date - */ - public Date getEndTime() { - java.util.Date dt = null; - try{ - if(record != null && record.getInittime() != null){ - dt = TIMEFORMAT.parse(this.record.getFinishtime()); - } - } catch (Exception e) { - e.printStackTrace(); - } - return dt; - } - - /** - * Fija el valor de: endTime - * @param endTime Valor a fijar en el atributo - */ - public void setEndTime(Date endTime) { - this.endTime = endTime; - this.record.setFinishtime(TIMEFORMAT.format(endTime)); - } - - public String getRecordDayDescription(){ - if(this.record!=null){ - for (TgeneCatalogDetail day : this.tdays) { - if(day.getLegalcode().compareTo(this.record.getPk().getDay().toString())==0){ - return day.getDescription(); - } - } - } - return null; - } - -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.netbeans-base deleted file mode 100644 index ba507c6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.netbeans-base +++ /dev/null @@ -1,106 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeAudit; - -/** - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SafeAuditController extends AbstractController { - - public SafeAuditController() throws Exception { - super(TsafeAudit.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postConstruct() { - this.init(); - } - - private void init() { - try { - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - this.beanalias = "TSAFEAUDIT"; - super.create(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = this.getDtoSafeAudit(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - public DtoQuery getDtoSafeAudit() throws Exception { - - DtoQuery dto = super.getDtoQuery(true); - - dto.setOrderby("t.pk"); - SubQuery subqueryBranch = new SubQuery("TgeneBranch", "description", "branchdesc", - "i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryBranch); - - SubQuery subqueryOffice = new SubQuery("TgeneOffice", "description", "officedesc", - "i.pk.officecode = t.officecode and i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryOffice); - - SubQuery subqueryPerson = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode = t.companycode and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryPerson); - - SubQuery subqueryTransaction = new SubQuery("TgeneTransaction", "name", "transactiondesc", - "i.pk.transactioncode = t.transactioncode and i.pk.transactionmodule = t.transactionmodule"); - dto.addSubQuery(subqueryTransaction); - - return dto; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.svn-base deleted file mode 100644 index ba507c6..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/SafeAuditController.java.svn-base +++ /dev/null @@ -1,106 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeAudit; - -/** - * - * @author Jacqueline Arias - * - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class SafeAuditController extends AbstractController { - - public SafeAuditController() throws Exception { - super(TsafeAudit.class); - // TODO Auto-generated constructor stub - } - - @PostConstruct - private void postConstruct() { - this.init(); - } - - private void init() { - try { - this.recperpage = 15; - this.lrecord = new ArrayList<>(); - this.beanalias = "TSAFEAUDIT"; - super.create(); - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - // TODO Auto-generated method stub - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = this.getDtoSafeAudit(); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - - } - - public DtoQuery getDtoSafeAudit() throws Exception { - - DtoQuery dto = super.getDtoQuery(true); - - dto.setOrderby("t.pk"); - SubQuery subqueryBranch = new SubQuery("TgeneBranch", "description", "branchdesc", - "i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryBranch); - - SubQuery subqueryOffice = new SubQuery("TgeneOffice", "description", "officedesc", - "i.pk.officecode = t.officecode and i.pk.branchcode = t.branchcode and i.pk.companycode = t.companycode and i.pk.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryOffice); - - SubQuery subqueryPerson = new SubQuery("TcustPersonDetail", "name", "personname", - "i.pk.personcode = t.personcode and i.pk.dateto = to_date('2999-12-31', 'yyyy-MM-dd') and i.companycode = t.companycode and i.companycode=" - + super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subqueryPerson); - - SubQuery subqueryTransaction = new SubQuery("TgeneTransaction", "name", "transactiondesc", - "i.pk.transactioncode = t.transactioncode and i.pk.transactionmodule = t.transactionmodule"); - dto.addSubQuery(subqueryTransaction); - - return dto; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/TerminalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/TerminalController.java.svn-base deleted file mode 100644 index 9fe1c4b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/TerminalController.java.svn-base +++ /dev/null @@ -1,220 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.AreaController; -import com.fp.frontend.controller.pgeneral.gene.BranchController; -import com.fp.frontend.controller.pgeneral.gene.OfficeController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneArea; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.safe.TsafeTerminal; - -/** - * Clase controladora del bean TsafeTerminal. - * - * @author David López P. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TerminalController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TerminalController() throws Exception { - super(TsafeTerminal.class); - } - /** - * Atributo para la lista de sucursales - */ - private List lbranch; - /** - * Atributo para la lista de oficinas - */ - private List loffice; - /** - * Atributo para la lista de areas - */ - private List larea; - /** - * Atrubuto V/F - */ - private boolean activate; - - @PostConstruct - private void postconstruct() { - this.init(); - super.startQuery(); - //Listas - this.lbranch = BranchController.find(super.getLoginController().getRequest().getCompany().toString()); - this.larea = AreaController.find(super.getLoginController().getRequest().getCompany().toString()); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TERMINAL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega el valor de: lbranch - * - * @return List - */ - public List getLbranch() { - return lbranch; - } - - /** - * Entrega el valor de: loffice - * - * @return List - */ - public List getLoffice() { - return loffice; - } - - /** - * Entrega el valor de: larea - * - * @return List - */ - public List getLarea() { - return larea; - } - - /** - * Crea una instancia de TsafeProfileHorary y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("branchcode") == null || getMfilters().get("officecode") == null || super.getMfilters().get("areacode") == null) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.setBranchcode(Integer.valueOf(super.getMfilters().get("branchcode"))); - this.record.setOfficecode(Integer.valueOf(super.getMfilters().get("officecode"))); - this.record.setAreacode(Integer.valueOf(super.getMfilters().get("branchcode"))); - - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - if ((super.getMfilters().get("branchcode") == null || getMfilters().get("officecode") == null || super.getMfilters().get("areacode") == null) && !this.activate) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - try { - if(!this.activate){ - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.terminalcode"); - - // subqueries - - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void loadOffice() { - this.loffice = OfficeController.find(super.getMfilters().get("branchcode"), super.getLoginController().getRequest().getCompany().toString()); - } - - /** - * Entrega una lista de objetos TsafeTerminal - * - * @param companycode Código de la compania - * @return lrecord Lista de objetos TgeneCatalogDetail - */ - public static List find(String companycode) { - try { - TerminalController cc = new TerminalController(); - cc.init(); - cc.recperpage = 300; - cc.addFilter("pk.companycode", companycode); - cc.activate = true; - cc.querydatabase(); - if (cc.lrecord != null && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserChangePassAdmin.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserChangePassAdmin.java.svn-base deleted file mode 100644 index 2bd0a3f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserChangePassAdmin.java.svn-base +++ /dev/null @@ -1,142 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class UserChangePassAdmin extends AbstractController { - - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - - public UserChangePassAdmin() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANGEPASSADMIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - this.userdetail.getMfilters().clear(); - this.userdetail.getMfilelds().clear(); - this.userdetail.getMfilters().put("pk.usercode", this.getMfilters().get("pk.usercode")); - this.userdetail.querydatabase(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if (!this.passwordvalidate()) { - return; - } - TsafeUserDetail tsud = userdetail.getRecord(); - tsud.setPassword(callerhelper.getPasswordEncriptado(super.getMfilelds().get("p").toString())); - tsud.setChangepassword("Y"); - userdetail.update(); - userdetail.save(); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Valida que el usuario ingrese la contrasena y la contrasena de validacion - * y que las dos sean iguales. - * - * @return boolean - * @throws Exception - */ - private boolean passwordvalidate() throws Exception { - Object p = super.getFieldvalue("p"); - Object np = super.getFieldvalue("np"); - if (p == null || np == null) { - MessageHelper.setMessageError("msg_passwordrequired"); - return false; - } - if (!p.equals(np)) { - MessageHelper.setMessageError("msg_passwordnomatch"); - return false; - } - return true; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail Valor a fijar en el atributo. - */ - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.getMfilters().clear(); - this.getMfilelds().clear(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.addField("personname", t.getName()); - this.userdetail.querydatabase(); - this.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserDetailController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserDetailController.java.svn-base deleted file mode 100644 index 2973e1e..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserDetailController.java.svn-base +++ /dev/null @@ -1,193 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.fun.TarmRegistroArmas; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class UserDetailController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public UserDetailController() throws Exception { - super(TsafeUserDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.record = new TsafeUserDetail(); - this.lrecord = new ArrayList<>(); - this.beanalias = "USERDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception { - super.create(); - if (this.getMfilters().get("pk.personcode") != null) { - this.record.getPk().setPersoncode(Integer.valueOf(this.getMfilters().get("pk.personcode"))); - } - this.record.setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.setUserstatuscatalogcode("USERSTATUS"); - this.record.setUserstatuscatalog("ENT"); - this.record.setChangepassword("Y"); - } - - @Override - protected void querydatabase() { - try { - if (!super.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - Request request = this.callerhelper.getRequest(); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController().getRequest().getCompany() - .toString()); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk"); // En en string van todos los campos de - // orden ("t.pk, t.nombre, t.cpais"). - - // subqueries - SubQuery subquery = new SubQuery("TgeneChannels", "description", "chanelname", "i.pk = t.channelcode"); - dto.addSubQuery(subquery); - - SubQuery subquerya = new SubQuery("TgeneArea", "descripction", "areaname", - "i.pk.companycode = t.companycode and i.pk.areacode = t.areacode "); - dto.addSubQuery(subquerya); - - SubQuery subquerys = new SubQuery("TgeneCatalogDetail", "description", "statusdesc", - "i.pk.catalogcode = t.userstatuscatalogcode and i.pk.catalog = t.userstatuscatalog "); - dto.addSubQuery(subquerys); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = null; - MessageHelper.setMessageError(resp); - } else { - this.manageresponse(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private void manageresponse(Response resp) throws Exception { - - this.record = (TsafeUserDetail) resp.get(this.beanalias); - if (this.record == null) { - //si no existe crea un registro para permitir el ingreso.s - this.create(); - } else { - super.addFilter("pk.usercode", this.record.getPk().getUsercode()); - super.postQuery((AbstractDataTransport) resp.get(this.beanalias)); - } - if ((super.getMfilelds().get("personname") == null)) { - if ((super.getMfilters().get("pk.personcode") != null) || (this.record.getPk().getPersoncode() != null)) { - String personcode = super.getMfilters().get("pk.personcode") != null ? super.getMfilters().get("pk.personcode") : this.record.getPk().getPersoncode().toString(); - TcustPersonDetail tcpd = PersonLovController.find(personcode); - super.addField("personname", tcpd != null ? tcpd.getName() : ""); - } - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - super.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - super.addField("personname", t.getName()); - } - - public void update(TsafeUserDetail bean) throws Exception { - record=bean; - update(); - } - -} - - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserPerfilAssiggnationController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserPerfilAssiggnationController.java.svn-base deleted file mode 100644 index eb31320..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserPerfilAssiggnationController.java.svn-base +++ /dev/null @@ -1,249 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.AreaController; -import com.fp.frontend.controller.pgeneral.gene.BranchController; -import com.fp.frontend.controller.pgeneral.gene.ChannelController; -import com.fp.frontend.controller.pgeneral.gene.LanguageController; -import com.fp.frontend.controller.pgeneral.gene.OfficeController; -import com.fp.frontend.controller.pgeneral.lov.ProfileLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneArea; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneChannels; -import com.fp.persistence.pgeneral.gene.TgeneLanguage; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.safe.TsafeProfile; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class UserPerfilAssiggnationController extends AbstractController { - - private static final long serialVersionUID = 1L; - List lChannel; - List lBranch; - List lOffice; - List lArea; - List lLanguage; - - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - - @ManagedProperty(value = "#{userProfileController}") - private UserProfileController userProfile; - - public UserPerfilAssiggnationController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - this.lChannel = ChannelController.find(); - this.lBranch = BranchController.find(super.getLoginController().getRequest().getCompany() - .toString()); - this.lArea = AreaController.find(super.getLoginController().getRequest().getCompany() - .toString()); - this.lLanguage = LanguageController.find(); - - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANGEPASSADMIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void loadOffice() { - this.lOffice = OfficeController.find( - this.userdetail.getRecord().getBranchcode().toString(), super.getLoginController() - .getRequest().getCompany().toString()); - } - - @Override - protected void querydatabase() { - try { - if (!this.userdetail.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - this.userdetail.querydatabase(); - if(this.userdetail.getRecord().getPk().getUsercode() != null){ - this.userProfile.getMfilters().put("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userProfile.querydatabase(); - this.loadOffice(); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - this.userdetail.update(); - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - - DtoSave dtosave = this.userdetail.getDtoSave(); - if (dtosave.pendingProcess()) { - dtosave.setIsForm(true); - msave.put(this.userdetail.getBeanalias(), dtosave); - } - DtoSave dtosaveup = this.userProfile.getDtoSave(); - if (dtosaveup.pendingProcess()) { - msave.put(this.userProfile.getBeanalias(), dtosaveup); - } - request.put("PANTALLA", "USUARIOSPERFIL_MOD1_TX120"); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - this.userdetail.postCommit(response); - this.userProfile.postCommit(response); - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return this.userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail - * Valor a fijar en el atributo. - */ - - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } - - /** - * @return the userProfile - */ - public UserProfileController getUserProfile() { - return this.userProfile; - } - - /** - * @param userProfile the userProfile to set - */ - public void setUserProfile(UserProfileController userProfile) { - this.userProfile = userProfile; - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.addField("personname", t.getName()); - this.querydatabase(); - } - - public List getlChannel() { - return this.lChannel; - } - - public void setlChannel(List lChannel) { - this.lChannel = lChannel; - } - - public List getlBranch() { - return this.lBranch; - } - - public void setlBranch(List lBranch) { - this.lBranch = lBranch; - } - - public List getlOffice() { - return this.lOffice; - } - - public void setlOffice(List lOffice) { - this.lOffice = lOffice; - } - - public List getlArea() { - return this.lArea; - } - - public void setlArea(List lArea) { - this.lArea = lArea; - } - - public List getlLanguage() { - return this.lLanguage; - } - - public void setlLanguage(List lLanguage) { - this.lLanguage = lLanguage; - } - - public void openProfileLov() { - Map> params = new HashMap<>(); - ProfileLovController.openLov(params); - } - - public void onReturnProfileLov(SelectEvent event) throws Exception { - TsafeProfile t = (TsafeProfile) event.getObject(); - //super.addFilter("pk.profilecode", t.getPk()); - //super.addField("description", t.getDescription()); - this.userProfile.create(); - this.userProfile.getRecord().getPk().setUsercode(this.userdetail.getRecord().getPk().getUsercode()); - this.userProfile.getRecord().getPk().setProfilecode(t.getPk()); - this.userProfile.getRecord().put("profiledesc", t.getDescription()); - this.userProfile.update(); - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserProfileController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserProfileController.java.svn-base deleted file mode 100644 index 126103a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/safe/.svn/text-base/UserProfileController.java.svn-base +++ /dev/null @@ -1,127 +0,0 @@ -package com.fp.frontend.controller.pgeneral.safe; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; - -/** - * Clase controladora del bean TsafeUserProfile. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class UserProfileController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public UserProfileController() throws Exception { - super(TsafeUserProfile.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "SPROFILE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - super.addFilterDateto(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.profilecode"); - - // subqueries - SubQuery subquery = new SubQuery("TsafeProfile", "description", "profiledesc", - "i.pk = t.pk.profilecode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/entries deleted file mode 100644 index 2f391b7..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans -svn://172.17.26.185/COMACO - - - -2014-10-30T10:05:26.090607Z -2228 -wpatino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -TransactionReportController.java -file - - - - -2022-07-28T03:39:55.405598Z -983e33bd675bbed3bd090010cb7a7b0e -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6266 - -TransactionProcessController.java -file - - - - -2022-07-28T03:39:55.405598Z -43cc90cc133a5a323d11792d7473ef74 -2014-10-30T10:05:26.090607Z -2228 -wpatino - - - - - - - - - - - - - - - - - - - - - -10471 - -TransactionController.java -file - - - - -2022-07-28T03:39:55.405598Z -6c1b86150c2419c7040a0ec9f5a123e4 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -5287 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionController.java.svn-base deleted file mode 100644 index 16a671d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionController.java.svn-base +++ /dev/null @@ -1,192 +0,0 @@ -package com.fp.frontend.controller.pgeneral.trans; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.MessageTemplatesLovController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesController; -import com.fp.frontend.controller.pgeneral.product.ModuleController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.product.TgeneModule; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; - -/** - * Clase controladora del bean TgeneTransaction. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionController extends AbstractController { - - private static final long serialVersionUID = 1L; - List lmodule; - List lmessage; - - public TransactionController() throws Exception { - super(TgeneTransaction.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - this.lmodule = ModuleController.find(); - this.lmessage = MessageTemplatesController.find(); - - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TRANSACTION"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk.transactionmodule, t.pk.transactioncode, t.pk.transactionversion, name"); - - // subqueries - SubQuery subquery = new SubQuery("TgeneMessageTemplates", "description", "messagedesc", - "i.pk = t.messagecode"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de - // mantenimiento para cada - // tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - public void openMessageTemplateLov() { - Map> params = new HashMap<>(); - MessageTemplatesLovController.openLov(params); - } - - public void onReturnMessageTemplateLov(SelectEvent event) throws Exception { - TgeneMessageTemplates t = (TgeneMessageTemplates) event.getObject(); - this.record.setMessagecode(t.getPk()); - this.record.put("messagedesc", t.getDescription()); - } - - public void removemessage() throws Exception { - if(record != null){ - record.setMessagecode(null); - record.modifiedData.put("messagedesc", null); - } - } - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega el valor de: lmodule - * - * @return List - */ - public List getLmodule() { - return this.lmodule; - } - - /** - * Fija el valor de: lmodule - * - * @param lmodule Valor a fijar en el atributo. - */ - - public void setLmodule(List lmodule) { - this.lmodule = lmodule; - } - - /** - * Entrega el valor de: lmessage - * - * @return List - */ - public List getLmessage() { - return this.lmessage; - } - - /** - * Fija el valor de: lmessage - * - * @param lmessage Valor a fijar en el atributo. - */ - - public void setLmessage(List lmessage) { - this.lmessage = lmessage; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionProcessController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionProcessController.java.svn-base deleted file mode 100644 index e410469..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionProcessController.java.svn-base +++ /dev/null @@ -1,333 +0,0 @@ -package com.fp.frontend.controller.pgeneral.trans; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pbpm.lov.TbpmRulesLovController; -import com.fp.frontend.controller.pgeneral.lov.MessageTemplatesLovController; -import com.fp.frontend.controller.pgeneral.lov.ProcessLovControler; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pbpm.gene.TbpmRules; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.proc.TgeneProcess; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.TgeneTransactionProcess; - -/** - * Clase controladora del bean TgeneTransactionProcess. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionProcessController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TransactionProcessController() throws Exception { - super(TgeneTransactionProcess.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionProcess y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.transactionmodule") == null) { - MessageHelper.setMessageError("msg_transactionrequird"); - return; - } - super.create(); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(Integer.valueOf(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(Integer.valueOf(super.getMfilters().get("pk.transactionversion"))); - this.record.setCatalogcodetypeprocess("PROCESSTYPE"); - this.record.setCatalogtypeprocess("TRANSACTION"); - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @Override - public void update() throws Exception { - if(record.getProcesscode() == null){ - MessageHelper.setMessageError("msg_processrequired"); - return; - } - super.update(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - super.addFilter("catalogtypeprocess", "TRANSACTION"); - if(super.getMfilters().get("pk.transactioncode")==null){ - MessageHelper.setMessageError("msg_catalogrequird"); - return; - } - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.executionorder"); - - // subqueries - SubQuery subquery = new SubQuery("TgeneProcess", "shortdesc", "nprocess", - "i.pk.processcode = t.processcode and i.pk.catalogtypeprocess = t.catalogtypeprocess"); - dto.addSubQuery(subquery); - - // subqueries 1 - SubQuery subquery1 = new SubQuery("TgeneMessageTemplates", "description", "messagedesc", - "i.pk = t.flowmessagecode"); - dto.addSubQuery(subquery1); - - // subqueries 2 - SubQuery subquery2 = new SubQuery("TbpmRules", "description", "flowdesc", - "i.pk.rulecode = t.processname and i.pk.companycode = "+super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subquery2); - - // subqueries 3 - SubQuery subquery3 = new SubQuery("TgeneProcess", "shortdesc", "processdesc", - "i.pk.processcode = t.processcode and i.pk.catalogtypeprocess=t.catalogtypeprocess and i.pk.catalogcodetypeprocess=t.catalogcodetypeprocess"); - dto.addSubQuery(subquery3); - - // subqueries 3 - SubQuery subquery4 = new SubQuery("TbpmRules", "description", "ruledesc", - "i.pk.rulecode = t.rulename and i.pk.companycode = "+super.getLoginController().getRequest().getCompany().toString()); - dto.addSubQuery(subquery4); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Abre el lov de transacciones - */ - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - /** - * Gestiona la respuesta del lov de transacciones - * @param event - * @throws Exception - */ - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("transactionname", t.getName()); - this.query(); - } - - /** - * Abre el lov de comandos - */ - public void openProcessLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - ProcessLovControler.openLov(params); - } - - /** - * Gestiona la respuesta del lov de comandos - * @param event - * @throws Exception - */ - public void onReturnPrcoessLov(SelectEvent event) throws Exception { - TgeneProcess t = (TgeneProcess) event.getObject(); - this.record.setProcesscode(t.getPk().getProcesscode()); - this.record.put("nprocess", t.getShortdesc()); - } - - /** - * Llama al Lov de Mensajes - */ - public void openMessageTemplateLov() { - Map> params = new HashMap<>(); - MessageTemplatesLovController.openLov(params); - } - - /** - * Gestiona la respuesta del Lov de Mensajes - * @param event - * @throws Exception - */ - public void onReturnMessageTemplateLov(SelectEvent event) throws Exception { - TgeneMessageTemplates t = (TgeneMessageTemplates) event.getObject(); - this.record.setFlowmessagecode(t.getPk().toString()); - this.record.put("messagedesc", t.getDescription()); - } - - /** - * Elimina el codigo de mensaje - * @throws Exception - */ - public void removemessage() throws Exception { - if(record != null){ - record.setFlowmessagecode(null); - record.modifiedData.put("messagedesc", null); - } - } - - /** - * Llama al Lov de Mensajes - */ - public void openFlowLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("F"); // valor del parametro - params.put("filetype", l); - TbpmRulesLovController.openLov(params); - } - - /** - * Gestiona la respuesta del Lov de Mensajes - * @param event - * @throws Exception - */ - public void onReturnFlowLov(SelectEvent event) throws Exception { - TbpmRules t = (TbpmRules) event.getObject(); - this.record.setProcessname(t.getPk().getRulecode()); - //this.record.setPackagename(t.getPackagename()); - this.record.put("flowdesc", t.getDescription()); - } - - /** - * Elimina el codigo de mensaje - * @throws Exception - */ - public void removeflow() throws Exception { - if(record != null){ - record.setProcessname(null); - record.modifiedData.put("flowdesc", null); - } - } - - /** - * Llama al Lov de Mensajes - */ - public void openRuleLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("R"); // valor del parametro - params.put("filetype", l); - TbpmRulesLovController.openLov(params); - } - - /** - * Gestiona la respuesta del Lov de Mensajes - * @param event - * @throws Exception - */ - public void onReturnRuleLov(SelectEvent event) throws Exception { - TbpmRules t = (TbpmRules) event.getObject(); - this.record.setRulename(t.getPk().getRulecode()); - this.record.put("ruledesc", t.getDescription()); - } - - /** - * Elimina el codigo de mensaje - * @throws Exception - */ - public void removerule() throws Exception { - if(record != null){ - record.setRulename(null); - record.modifiedData.put("ruledesc", null); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionReportController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionReportController.java.svn-base deleted file mode 100644 index 62eb9ff..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/pgeneral/trans/.svn/text-base/TransactionReportController.java.svn-base +++ /dev/null @@ -1,200 +0,0 @@ -package com.fp.frontend.controller.pgeneral.trans; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.lov.ProcessLovControler; -import com.fp.frontend.controller.pgeneral.lov.TransactionLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.proc.TgeneProcess; -import com.fp.persistence.pgeneral.trans.TgeneTransaction; -import com.fp.persistence.pgeneral.trans.report.TgeneTransactionReports; - -/** - * Clase controladora del bean TgeneTransactionReports. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class TransactionReportController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public TransactionReportController() throws Exception { - super(TgeneTransactionReports.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TREPORT"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Crea una instancia de TgeneTransactionReports y marca el registro como nuevo. - * - * @throws Exception - */ - @Override - public void create() throws Exception { - if (super.getMfilters().get("pk.transactionmodule") == null) { - MessageHelper.setMessageError("msg_transactionrequird"); - return; - } - super.create(); - this.record.getPk().setTransactionmodule(super.getMfilters().get("pk.transactionmodule")); - this.record.getPk().setTransactioncode(Integer.valueOf(super.getMfilters().get("pk.transactioncode"))); - this.record.getPk().setTransactionversion(Integer.valueOf(super.getMfilters().get("pk.transactionversion"))); - this.record.setCatalogcodetypeprocess("PROCESSTYPE"); - this.record.setCatalogtypeprocess("REPORT"); - } - - /** - * Actualiza datos de registros nuevos o modifiados, si el registro es nuevo - * se adiciona a lista de nuevos, si es actualizado se adiciona a la lista - * de actualizados. - * - * @throws Exception - */ - @Override - public void update() throws Exception { - if(record.getProcesscode() == null){ - MessageHelper.setMessageError("msg_processrequired"); - return; - } - super.update(); - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - super.addFilter("catalogtypeprocess", "REPORT"); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.executionorder"); - - // subqueries - SubQuery subquery = new SubQuery("TgeneProcess", "shortdesc", "nprocess", - "i.pk.processcode = t.processcode and i.pk.catalogtypeprocess = t.catalogtypeprocess"); - dto.addSubQuery(subquery); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - Request request = this.callerhelper.getRequest(); - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - DtoSave dtosave = super.getDtoSave(); - dtosave.setReturnpk(true); // Para que el core devuelva el pk de los registros nuevos. - HashMap msave = new HashMap(); - - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - public void openTransactionLov() { - Map> params = new HashMap<>(); - List l = new ArrayList<>(); - l.add("TRANSACTION"); // valor del parametro - params.put("processtype", l); - - TransactionLovController.openLov(params); - } - - public void onReturnTransactionLov(SelectEvent event) throws Exception { - TgeneTransaction t = (TgeneTransaction) event.getObject(); - super.addFilter("pk.transactionmodule", t.getPk().getTransactionmodule()); - super.addFilter("pk.transactioncode", t.getPk().getTransactioncode().toString()); - super.addFilter("pk.transactionversion", t.getPk().getTransactionversion().toString()); - super.addField("transactionname", t.getName()); - this.query(); - } - - /** - * Abre el lov de comandos - */ - public void openProcessLov() { - Map> params = new HashMap<>(); - ProcessLovControler.openLov(params); - } - - /** - * Gestiona la respuesta del lov de comandos - * @param event - * @throws Exception - */ - public void onReturnPrcoessLov(SelectEvent event) throws Exception { - TgeneProcess t = (TgeneProcess) event.getObject(); - this.record.setProcesscode(t.getPk().getProcesscode()); - this.record.put("processdesc", t.getShortdesc()); - } - -} - - diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/entries deleted file mode 100644 index 1d3bc54..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/entries +++ /dev/null @@ -1,337 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/security -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ActivateUserController.java -file - - - - -2022-07-28T03:39:54.787596Z -9eb5222def02c980f5b3a25753b187b9 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5479 - -ChangePassPersonalController.java -file - - - - -2022-07-28T03:39:54.787596Z -a936e25b114b784669526603ee4c0a56 -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -19036 - -ProfileController.java -file - - - - -2022-07-28T03:39:54.787596Z -76312f2ce6c07b724b97977cd8d62f16 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3437 - -ChangeExpiredPassPersonalController.java -file - - - - -2022-07-28T03:39:54.787596Z -bf1cb6e6811d2bd1b3609304ed692783 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -6383 - -PasswordController.java -file - - - - -2022-07-28T03:39:54.788596Z -86e9ffb27de2aaca2524bb560b76403e -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6022 - -MenuProfileController.java -file - - - - -2022-07-28T03:39:54.788596Z -f3d81cf56d940f57fe8b19e35b0bd72d -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5454 - -ModifyUserController.java -file - - - - -2022-07-28T03:39:54.788596Z -d39537c81b8e1ca955a20bd89e893259 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -16809 - -LoginController.java -file - - - - -2022-07-28T03:39:54.788596Z -9aeb65993656f2a0bda1d06c53dd452b -2021-12-02T13:46:41.478228Z -4655 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -19602 - -MaiaMenu.java -file - - - - -2022-07-28T03:39:54.789596Z -ccf771319c023632f9ec75f8de78d3b6 -2014-09-11T06:25:54.155494Z -660 -jvaca - - - - - - - - - - - - - - - - - - - - - -4293 - -reports -dir - diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ActivateUserController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ActivateUserController.java.svn-base deleted file mode 100644 index e04e3f0..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ActivateUserController.java.svn-base +++ /dev/null @@ -1,187 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.frontend.controller.security; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Response; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.controller.pgeneral.safe.UserProfileController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ActivateUserController extends AbstractController { - - private static final long serialVersionUID = 1L; - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - @ManagedProperty(value = "#{userProfileController}") - private UserProfileController userprofile; - - public ActivateUserController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANGEPASSADMIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - this.userdetail.getMfilters().clear(); - this.userdetail.getMfilelds().clear(); - this.userdetail.getMfilters().put("pk.usercode", this.getMfilters().get("pk.usercode")); - this.userdetail.query(); - this.getMfilelds().put("personname", this.userdetail.getMfilelds().get("personname")); - if (this.userdetail.getRecord().getPk().getUsercode() != null) { - this.userprofile.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.query(); - }else{ - this.userprofile.setLrecord(null); - MessageHelper.setMessageError("msg_userNotFound"); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if (this.validateUser()) { - MessageHelper.setMessageError("msg_userrequired"); - return; - } - if (this.userdetail.getRecord().getUserstatuscatalog().equals("ENT")) { - MessageHelper.setMessageError("msg_pendingActivation"); - return; - } - if(this.userdetail.getRecord().getPassword() == null){ - String passwd = this.callerhelper.getPasswordEncriptado(this.userdetail.getRecord().getPk().getUsercode()); - this.userdetail.getRecord().setPassword(passwd); - } - - this.userdetail.getRecord().setUserstatuscatalog("ACT"); - this.userdetail.update(); - this.userdetail.save(); - userdetail.getRecord().getModifiedData().put("statusdesc", "ACTIVO"); - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private boolean validateUser() { - boolean result = false; - if (this.userdetail.getRecord().getPk() == null) { - result = true; - } - return result; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return this.userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail Valor a fijar en el atributo. - */ - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } - - /** - * Entrega el valor de: userprofile - * - * @return UserProfileController - */ - public UserProfileController getUserprofile() { - return this.userprofile; - } - - /** - * Fija el valor de: userprofile - * - * @param UserProfileController - */ - public void setUserprofile(UserProfileController userprofile) { - this.userprofile = userprofile; - } - - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.getMfilters().clear(); - this.getMfilelds().clear(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.addField("personname", t.getName()); - this.userdetail.query(); - if(this.userdetail.getRecord().getPk().getUsercode()!=null){ - this.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.query(); - }else{ - MessageHelper.setMessageError("msg_userNotFound"); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangeExpiredPassPersonalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangeExpiredPassPersonalController.java.svn-base deleted file mode 100644 index 8169944..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangeExpiredPassPersonalController.java.svn-base +++ /dev/null @@ -1,209 +0,0 @@ -/** - * - */ -package com.fp.frontend.controller.security; - -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author amerchan - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ChangeExpiredPassPersonalController extends AbstractController implements Serializable{ - - private static final long serialVersionUID = 1L; - - public ChangeExpiredPassPersonalController() throws Exception { - super(TsafeUserDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.create(); - this.lrecord = new ArrayList<>(); - this.beanalias = "TSAFEUSERDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void querydatabase() { - try { - - super.addFilter("pk.usercode", super.getLoginController().getRequest().getUser()); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController().getRequest().getCompany().toString()); - - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - request.setTransactionModule("1"); - request.setTransactionCode(123); - request.setTransactionVersion(1); - - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk.personcode"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - // subqueries - SubQuery subquery = new SubQuery("TgeneChannels", "description", "chanelname", "i.pk = t.channelcode"); - dto.addSubQuery(subquery); - - SubQuery subquerya = new SubQuery("TgeneArea", "descripction", "areaname", - "i.pk.companycode = t.companycode and i.pk.areacode = t.areacode "); - dto.addSubQuery(subquerya); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TsafeUserDetail(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TsafeUserDetail) resp.get(this.beanalias); - if (this.record != null) { - // this.userprofile.addFilter("pk.usercode", this.record.getPk().getUsercode()); - // this.userprofile.query(); - TcustPersonDetail tcpd = PersonLovController.find(this.record.getPk().getPersoncode().toString()); - super.addField("personname", tcpd != null ? tcpd.getName() : ""); - super.postQuery((AbstractDataTransport) resp.get(this.beanalias)); - } else { - // this.userprofile.setLrecord(null); - this.create(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if (this.validateUser()) { - MessageHelper.setMessageError("msg_userrequired"); - return; - } - if (!this.passwordvalidate()) { - return; - } - - String oldPass = this.callerhelper.getPasswordEncriptado((String) this.getMfilelds().get("oldpassword")); - String newPass = this.callerhelper.getPasswordEncriptado((String) this.getMfilelds().get("newpassword")); - - this.record.put("newpassword", this.getMfilelds().get("newpassword")); - this.record.put("origination", newPass); - this.record.put("oldpassword", oldPass); - - this.record.setPassword(newPass); - if (this.record.getChangepassword().compareTo("Y") == 0) { - this.record.setChangepassword("N"); - } - this.update(); - - Request request = this.callerhelper.getRequest(); - request.setTransactionModule("1"); - request.setTransactionCode(123); - request.setTransactionVersion(1); - - HashMap msave = new HashMap(); - DtoSave dtoSavePassword = super.getDtoSave(); - dtoSavePassword.setIsForm(true); - if (!dtoSavePassword.pendingProcess()) { - return; - } - msave.put(this.beanalias, dtoSavePassword); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private boolean validateUser() { - boolean result = false; - if (this.record.getPk() == null) { - result = true; - } - return result; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - RequestContext.getCurrentInstance().execute("dialogChangePassword.hide()"); - } - - /** - * Valida que el usuario ingrese la contrasena y la contrasena de validacion - * y que las dos sean iguales. - * - * @return boolean - * @throws Exception - */ - private boolean passwordvalidate() throws Exception { - Object p = super.getFieldvalue("newpassword"); - Object np = super.getFieldvalue("confirmpassword"); - if ((p == null) || (np == null)) { - MessageHelper.setMessageError("msg_passwordrequired"); - return false; - } - if (!p.equals(np)) { - MessageHelper.setMessageError("msg_passwordnomatch"); - return false; - } - return true; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangePassPersonalController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangePassPersonalController.java.svn-base deleted file mode 100644 index 63b7b2c..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ChangePassPersonalController.java.svn-base +++ /dev/null @@ -1,568 +0,0 @@ -/** - * - */ -package com.fp.frontend.controller.security; - -import java.io.IOException; -import java.io.Serializable; -import java.util.ArrayList; -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesController; -import com.fp.frontend.controller.pgeneral.message.MessageTemplatesDescController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.mail.Mail; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplates; -import com.fp.persistence.pgeneral.message.TgeneMessageTemplatesDesc; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora del bean TsafeUserDetail. - * - * @author Andres E. Carpio - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ChangePassPersonalController extends - AbstractController implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @ManagedProperty(value = "#{personAddressController}") - private PersonAddressController personAddress; - // @ManagedProperty(value = "#{userProfileController}") - // private UserProfileController userprofile; - - // Control para el mensaje de confirmacion - private boolean habilitaCampos = true; - - public ChangePassPersonalController() throws Exception { - super(TsafeUserDetail.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - // Query - this.querydatabase(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.create(); - this.lrecord = new ArrayList<>(); - this.beanalias = "TSAFEUSERDETAIL"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - - super.addFilter("pk.usercode", super.getLoginController() - .getRequest().getUser()); - super.addFilterDateto(); - super.addFilter("companycode", super.getLoginController() - .getRequest().getCompany().toString()); - - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk.personcode"); // En en string van todos los - // campos de orden - // ("t.pk, t.nombre, t.cpais"). - - // subqueries - SubQuery subquery = new SubQuery("TgeneChannels", "description", - "chanelname", "i.pk = t.channelcode"); - dto.addSubQuery(subquery); - - SubQuery subqueryName = new SubQuery( - "TcustPersonDetail", - "name", - "name", - " i.pk.personcode = t.pk.personcode" - + " and i.pk.dateto = to_date('2999-12-31', 'YYYY-MM-DD')"); - dto.addSubQuery(subqueryName); - - SubQuery subquerya = new SubQuery("TgeneArea", "descripction", - "areaname", - "i.pk.companycode = t.companycode and i.pk.areacode = t.areacode "); - dto.addSubQuery(subquerya); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una - // tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TsafeUserDetail(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TsafeUserDetail) resp.get(this.beanalias); - if (this.record != null) { - // this.userprofile.addFilter("pk.usercode", - // this.record.getPk().getUsercode()); - // this.userprofile.query(); - TcustPersonDetail tcpd = PersonLovController - .find(this.record.getPk().getPersoncode() - .toString()); - super.addField("personname", tcpd != null ? tcpd.getName() - : ""); - TcustPersonAddress mail = personAddress - .findPersonaPorDireccionTipoCatalogo(this.record - .getPk().getPersoncode().toString(), "3"); - this.personAddress.setPersoncode(this.record.getPk() - .getPersoncode()); - if (mail != null) { - super.addField("email", mail.getAddress()); - personAddress.setRecord(mail); - } else { - personAddress.create(); - } - super.postQuery((AbstractDataTransport) resp - .get(this.beanalias)); - } else { - // this.userprofile.setLrecord(null); - this.create(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if (this.validateUser()) { - MessageHelper.setMessageError("msg_userrequired"); - return; - } - if (!this.passwordvalidate()) { - return; - } - - String oldPass = this.callerhelper - .getPasswordEncriptado((String) this.getMfilelds().get( - "oldpassword")); - String newPass = this.callerhelper - .getPasswordEncriptado((String) this.getMfilelds().get( - "newpassword")); - - this.record.put("newpassword", this.getMfilelds() - .get("newpassword")); - this.record.put("origination", newPass); - this.record.put("oldpassword", oldPass); - - this.record.setPassword(newPass); - if (this.record.getChangepassword().compareTo("Y") == 0) { - this.record.setChangepassword("N"); - } - this.update(); - if (this.getMfilelds().get("email") != null) { - this.personAddress.getRecord().setAddress( - this.getMfilelds().get("email").toString()); - } - this.personAddress.update(); - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - DtoSave dtoSavePassword = super.getDtoSave(); - dtoSavePassword.setIsForm(true); - dtoSavePassword.setPosition(1); - if (!dtoSavePassword.pendingProcess()) { - MessageHelper - .setMessageError(MsgControlArmas - .getProperty("msg_error_claveanteriornopuederserigualactual")); - return; - } - DtoSave dtosaveMail = personAddress.getDtoSave(); - dtosaveMail.setPosition(2); - msave.put(this.beanalias, dtoSavePassword); - msave.put(this.personAddress.getBeanalias(), dtosaveMail); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.envioCorreoCambio(); - MessageHelper.setMessageInfo(resp); - confirmaChangePasswd(); - } else { - - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - - MessageHelper.setMessageError(e); - } - } - - public void saveUser() { - try { - if (this.validateUser()) { - MessageHelper.setMessageError("msg_userrequired"); - return; - } - if (!this.passwordvalidate()) { - return; - } - - String oldPass = this.callerhelper - .getPasswordEncriptado((String) this.getMfilelds().get( - "oldpassword")); - String newPass = this.callerhelper - .getPasswordEncriptado((String) this.getMfilelds().get( - "newpassword")); - System.out.println("Nuevo Password " + newPass); - System.out.println("Nuevo Password " - + (String) this.getMfilelds().get("newpassword")); - if (verificaPasswd((String) this.getMfilelds().get("newpassword"))) { - - this.record.put("newpassword", - this.getMfilelds().get("newpassword")); - this.record.put("origination", newPass); - this.record.put("oldpassword", oldPass); - - this.record.setPassword(newPass); - if (this.record.getChangepassword().compareTo("Y") == 0) { - this.record.setChangepassword("N"); - } - this.update(); - if (this.getMfilelds().get("email") != null) { - this.personAddress.getRecord().setAddress( - this.getMfilelds().get("email").toString()); - } - this.personAddress.update(); - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - DtoSave dtoSavePassword = super.getDtoSave(); - dtoSavePassword.setIsForm(true); - dtoSavePassword.setPosition(1); - if (!dtoSavePassword.pendingProcess()) { - MessageHelper - .setMessageError(MsgControlArmas - .getProperty("msg_error_claveanteriornopuederserigualactual")); - return; - } - DtoSave dtosaveMail = personAddress.getDtoSave(); - dtosaveMail.setPosition(2); - msave.put(this.beanalias, dtoSavePassword); - msave.put(this.personAddress.getBeanalias(), dtosaveMail); - request.setSaveTables(msave); - - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - try { - this.envioCorreoCambio(); - } catch (Exception e) { - // TODO: handle exception - e.printStackTrace(); - } - - MessageHelper.setMessageInfo(resp); - //habilitaCampos = false; - confirmaChangePasswd(); - mensajeconfirmaChangePasswd(); - // mensajeconfirmaChangePasswd(); - // abre el dialogo que acepte - - } else { - - MessageHelper.setMessageError(resp); - } - } else { - MessageHelper - .setMessageError("LA CLAVE NO CUMPLE LAS POLTICAS DE SEGURIDAD"); - System.out - .println("La clave no cumple las politicas de seguridad nuevo Save"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - e.printStackTrace(); - } - } - - /** - * Envía el correo de cambio de email - * - * @throws Exception - */ - /* - * private void envioCorreoCambio() throws Exception{ Mail m = new Mail(); - * m.config(ParametersController.find("MAIL.FROM", "1").getTextvalue(), - * ParametersController.find("MAIL.SMTP.SERVER", "1").getTextvalue(), - * ParametersController.find("MAIL.SMTP.PORT", - * "1").getNumbervalue().intValue(), - * ParametersController.find("MAIL.SMTP.USER", "1").getTextvalue(), - * ParametersController.find("MAIL.SMTP.PASSWORD", "1").getTextvalue(), - * Boolean.valueOf(ParametersController.find("MAIL.SMTP.AUTH", - * "1").getTextvalue()), - * Boolean.valueOf(ParametersController.find("MAIL.SMTPS", - * "1").getTextvalue())); m.setTo(personAddress.getRecord().getAddress()); - * MessageTemplatesController message = new MessageTemplatesController(); - * message.addFilter("pk", "62"); message.query(); if(message.getLrecord() - * != null && !message.getLrecord().isEmpty()){ TgeneMessageTemplates asunto - * = message.getLrecord().get(0); MessageTemplatesDescController content = - * new MessageTemplatesDescController(); content.addFilter("pk.code", "62"); - * content.addFilter("pk.languagecode", "ES"); content.query(); - * if(content.getLrecord() != null && !content.getLrecord().isEmpty()){ - * TgeneMessageTemplatesDesc descripcionContenido = - * content.getLrecord().get(0); //Velocity.init(); //VelocityContext context - * = new VelocityContext(); //context.put("nombreusuario", - * this.getLoginController().getRequest().getUser()); //context.put("clave", - * this.record.get("newpassword")); m.setSubject(asunto.getDescription()); - * //StringWriter sw = new StringWriter(); String - * sw=descripcionContenido.getTemplate().replace("$clave", - * this.record.get("newpassword").toString()); - * sw=sw.replace("$nombreusuario", this.record.get("name")+""); - * //Velocity.evaluate(context, sw, "", descripcionContenido.getTemplate()); - * m.setCont(sw.toString()); m.setContentMessageType("text/html"); m.send(); - * } } } - */ - private void envioCorreoCambio() throws Exception { - try { - Mail m = new Mail(); - m.config( - ParametersController.find("MAIL.FROM", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.SERVER", "1") - .getTextvalue(), - ParametersController.find("MAIL.SMTP.PORT", "1") - .getNumbervalue().intValue(), ParametersController - .find("MAIL.SMTP.USER", "1").getTextvalue(), - ParametersController.find("MAIL.SMTP.PASSWORD", "1") - .getTextvalue(), Boolean - .valueOf(ParametersController.find( - "MAIL.SMTP.AUTH", "1").getTextvalue()), - Boolean.valueOf(ParametersController - .find("MAIL.SMTPS", "1").getTextvalue())); - m.setTo(personAddress.getRecord().getAddress()); - MessageTemplatesController message = new MessageTemplatesController(); - message.addFilter("pk", "62"); - message.query(); - if (message.getLrecord() != null && !message.getLrecord().isEmpty()) { - TgeneMessageTemplates asunto = message.getLrecord().get(0); - MessageTemplatesDescController content = new MessageTemplatesDescController(); - content.addFilter("pk.code", "62"); - content.addFilter("pk.languagecode", "ES"); - content.query(); - if (content.getLrecord() != null - && !content.getLrecord().isEmpty()) { - TgeneMessageTemplatesDesc descripcionContenido = content - .getLrecord().get(0); - // Velocity.init(); - // VelocityContext context = new VelocityContext(); - // context.put("nombreusuario", - // this.getLoginController().getRequest().getUser()); - // context.put("clave", this.record.get("newpassword")); - m.setSubject(asunto.getDescription()); - // StringWriter sw = new StringWriter(); - String sw = descripcionContenido.getTemplate() - .replace("$clave", - this.record.get("newpassword").toString()); - sw = sw.replace("$nombreusuario", this.record.get("name") - + ""); - // Velocity.evaluate(context, sw, "", - // descripcionContenido.getTemplate()); - m.setCont(sw.toString()); - m.setContentMessageType("text/html"); - m.send(); - } - } - } catch (Exception e) { - // TODO: handle exception - e.printStackTrace(); - } - - } - - private boolean validateUser() { - boolean result = false; - if (this.record.getPk() == null) { - result = true; - } - return result; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - RequestContext.getCurrentInstance().execute( - "PF('dialogChangePassword').hide()"); - } - - // /** - // * Entrega el valor de: userprofile - // * - // * @return UserProfileController - // */ - // public UserProfileController getUserprofile() { - // return userprofile; - // } - // - // /** - // * Fija el valor de: userprofile - // * - // * @param UserProfileController - // */ - // public void setUserprofile(UserProfileController userprofile) { - // this.userprofile = userprofile; - // } - /** - * Valida que el usuario ingrese la contrasena y la contrasena de validacion - * y que las dos sean iguales. - * - * @return boolean - * @throws Exception - */ - private boolean passwordvalidate() throws Exception { - Object p = super.getFieldvalue("newpassword"); - Object np = super.getFieldvalue("confirmpassword"); - if ((p == null) || (np == null)) { - MessageHelper.setMessageError("msg_passwordrequired"); - return false; - } - if (!p.equals(np)) { - MessageHelper.setMessageError("msg_passwordnomatch"); - return false; - } - return true; - } - - public PersonAddressController getPersonAddress() { - return personAddress; - } - - public void setPersonAddress(PersonAddressController personAddress) { - this.personAddress = personAddress; - } - - public boolean isHabilitaCampos() { - return habilitaCampos; - } - - public void setHabilitaCampos(boolean habilitaCampos) { - this.habilitaCampos = habilitaCampos; - } - - public void cancelChangePasswd() throws IOException { - // RequestContext.getCurrentInstance().execute("PF('dialog').show()"); - logout(); - ExternalContext ec = FacesContext.getCurrentInstance() - .getExternalContext(); - ec.redirect(ec.getRequestContextPath() + "/" + "login.xhtml"); - } - - public void confirmaChangePasswd() throws IOException { - // logout(); - MessageHelper - .setMessageInfo("SU CLAVE HA SIDO CAMBIADA SATISFACTORIAMENTE"); - // confirmaChangePswd(); - // ExternalContext ec = - // FacesContext.getCurrentInstance().getExternalContext(); - // ec.redirect(ec.getRequestContextPath() + "/" + "login.xhtml"); - // ec.redirect(ec.getRequestContextPath() + "/" + - // "passwordExpired.xhtml"); - } - - public void mensajeconfirmaChangePasswd() throws IOException { - logout(); - - ExternalContext ec = FacesContext.getCurrentInstance() - .getExternalContext(); - ec.redirect(ec.getRequestContextPath() + "/" + "login.xhtml"); - } - - public String logout() { - System.out.println("logout::cerrando session bean"); - FacesContext fc = FacesContext.getCurrentInstance(); - if (fc != null) { - fc.getExternalContext().invalidateSession(); - } - return "/login?faces-redirect=true"; - } - - // Procedimiento Verifica Seguridad de la Clave del Usuario - private boolean verificaPasswd(String clave) { - boolean minuscula = false; - boolean mayuscula = false; - boolean numero = false; - boolean caracter = false; - // Hace un barrido de los caracteres ingresados en la clave - for (int i = 0; i < clave.length(); i++) { - // Verifica que el codigo ASCII ( letras minusculas) - if (clave.charAt(i) >= 97 && clave.charAt(i) <= 122) { - minuscula = true; - // Verifica que el codigo ASCII ( letras mayusculas) - } else if (clave.charAt(i) >= 65 && clave.charAt(i) <= 90) { - mayuscula = true; - // Verifica que el codigo ASCII ( numeros) - } else if (clave.charAt(i) >= 48 && clave.charAt(i) <= 57) { - numero = true; - // Si no cumple las condiciones anteriores es caracter especial - } else { - caracter = true; - } - } - if ((minuscula == true) && (mayuscula == true) && (numero == true) - && (caracter == true)) { - return true; - } else { - return false; - } - } - - public String confirmaChangePswd() { - System.out.println("logout::cerrando session bean confirma clave"); - /* - * FacesContext fc = FacesContext.getCurrentInstance(); if (fc != null) - * { fc.getExternalContext().invalidateSession(); } - */ - return "/passwordExpired?faces-redirect=true"; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/LoginController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/LoginController.java.svn-base deleted file mode 100644 index 827028b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/LoginController.java.svn-base +++ /dev/null @@ -1,597 +0,0 @@ -package com.fp.frontend.controller.security; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ParametersController; -import com.fp.frontend.controller.pgeneral.gene.TerminosCondicionesController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.EnumParametros; -import com.fp.persistence.commondb.exception.CommondbException; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.soli.TarmTerminos; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneParameters; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetailKey; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; -import com.fp.persistence.pgeneral.safe.TsafeUserProfileKey; -import java.io.PrintStream; -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; -import javax.annotation.PostConstruct; -import javax.annotation.PreDestroy; -import javax.faces.application.Application; -import javax.faces.application.NavigationHandler; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.SessionScoped; -import javax.faces.context.ExternalContext; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpServletRequest; -import org.primefaces.context.RequestContext; -import org.primefaces.model.StreamedContent; - -@ManagedBean -@SessionScoped -public class LoginController -{ - private Request request; - private MaiaMenu maiaMenu; - private Map mdata = new HashMap(); - private final Map mlocation = new HashMap(); - private List> lcompany; - private List lprofile; - private String changepassword; - private boolean renderBpmData = false; - private String casLogoutUrl; - private String profilecode; - private String rutaTerminos; - private StreamedContent content; - - @PostConstruct - private void postconstruct() - { - this.request = new Request(); - this.request.setCompany(Integer.valueOf(1)); - - HttpServletRequest httpServletRequest = (HttpServletRequest)FacesContext.getCurrentInstance().getExternalContext().getRequest(); - this.request.setTerminalCode(httpServletRequest.getRemoteAddr()); - this.request.put("ip", httpServletRequest.getRemoteAddr()); - this.request.put("host", httpServletRequest.getLocalAddr()); - - fillCompanies(); - this.maiaMenu = new MaiaMenu(); - } - - public void authenticate() - throws Throwable - { - System.out.println("autentificacion debe cambiar : "); - try - { - System.out.println("changepassword debe cambiar : "); - String user = this.mdata.get("a").toString(); - String pass = this.mdata.get("b").toString(); - this.request.put("login", user); - CallerHelper ch = new CallerHelper(); - Response resp = ch.login(this.request, user, pass); - - TarmTerminos terminos = TerminosCondicionesController.findxIdentificacion(user); - if ((resp.getResponseCode().compareTo("0") == 0) && (terminos == null)) - { - System.out.println("terminos"); - try - { - this.rutaTerminos = ParametersController.find("CODIGO.TERMINOS.COND", "1").getTextvalue(); - this.content = AlfrescoController.downloadDocument(this.rutaTerminos); - } - catch (Exception e) - { - System.out.println("error al obtener el parametro CODIGO.TERMINOS.COND"); - } - RequestContext requestContext = RequestContext.getCurrentInstance(); - requestContext.execute("PF('aceptaTerminosCond').show()"); - } - else if (resp.getResponseCode().compareTo("0") == 0) - { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail)resp.get("TSAFEUSERDETAIL"); - manageloginresponse(tsafeUserDetail); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("TSAFEUSERDETAIL", tsafeUserDetail); - if (this.changepassword.equalsIgnoreCase("N")) - { - FacesContext ctx = FacesContext.getCurrentInstance(); - ExternalContext externalContext = ctx.getExternalContext(); - NavigationHandler handler = ctx.getApplication().getNavigationHandler(); - handler.handleNavigation(ctx, null, "workspace"); - - externalContext.redirect(externalContext.getRequestContextPath() + "/" + "pages/workspace.xhtml"); - - this.request.setBrowser(obtainBrowserName((String)externalContext.getRequestHeaderMap().get("User-Agent"))); - this.request.setOperativesystem(obtainSOName((String)externalContext.getRequestHeaderMap().get("User-Agent"))); - - changeprofile(); - } - else - { - ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); - ec.redirect(ec.getRequestContextPath() + "/" + "change-password.xhtml"); - System.out.println("debe cambiar la clave : " + ec.getRequestContextPath() + "/" + "passwordExpired.xhtml"); - } - } - else - { - MessageHelper.setMessageError(resp); - } - } - catch (Exception e) - { - MessageHelper.setMessageError(e); - } - } - - public void aceptaTerminosCondicion() - { - String user = this.mdata.get("a").toString(); - String pass = this.mdata.get("b").toString(); - try - { - CallerHelper ch = new CallerHelper(); - - this.request.put("terminos", "terminos"); - this.request.put("aceptaterminos", "SI"); - this.request.put("identificacionterminos", user); - this.request.put("documentoterminos", this.rutaTerminos); - - Response resp = ch.login(this.request, user, pass); - - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail)resp.get("TSAFEUSERDETAIL"); - manageloginresponse(tsafeUserDetail); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("TSAFEUSERDETAIL", tsafeUserDetail); - if (tsafeUserDetail.getChangepassword().equalsIgnoreCase("N")) - { - FacesContext ctx = FacesContext.getCurrentInstance(); - ExternalContext externalContext = ctx.getExternalContext(); - NavigationHandler handler = ctx.getApplication().getNavigationHandler(); - handler.handleNavigation(ctx, null, "workspace"); - - externalContext.redirect(externalContext.getRequestContextPath() + "/" + "pages/workspace.xhtml"); - - this.request.setBrowser(obtainBrowserName((String)externalContext.getRequestHeaderMap().get("User-Agent"))); - this.request.setOperativesystem(obtainSOName((String)externalContext.getRequestHeaderMap().get("User-Agent"))); - - changeprofile(); - } - else - { - ExternalContext ec = FacesContext.getCurrentInstance().getExternalContext(); - ec.redirect(ec.getRequestContextPath() + "/" + "change-password.xhtml"); - System.out.println("debe cambiar la clave : " + ec.getRequestContextPath() + "/" + "passwordExpired.xhtml"); - } - } - catch (Exception e) - { - e.printStackTrace(); - } - catch (Throwable e) - { - e.printStackTrace(); - } - } - - public void authenticateCas(String username, String urlCasLogout) - throws Throwable - { - try - { - this.casLogoutUrl = urlCasLogout; - this.request.put("login", username); - CallerHelper ch = new CallerHelper(); - Response resp = ch.loginCas(this.request, username, null); - if (resp.getResponseCode().compareTo("0") == 0) - { - TsafeUserDetail tsafeUserDetail = (TsafeUserDetail)resp.get("TSAFEUSERDETAIL"); - manageloginresponse(tsafeUserDetail); - FacesContext.getCurrentInstance().getExternalContext().getSessionMap().put("TSAFEUSERDETAIL", tsafeUserDetail); - - changeprofile(); - } - else - { - throw new Exception(resp.getResponseCode() + " " + resp.getResponseUserMessage()); - } - } - catch (Exception e) - { - throw e; - } - } - - public void updateusesession() - { - System.out.println("logout::cerrando session"); - try - { - CallerHelper ch = new CallerHelper(); - ch.logout(this.request); - } - catch (Throwable e) {} - } - - public String logout() - { - System.out.println("logout::cerrando session bean"); - updateusesession(); - FacesContext fc = FacesContext.getCurrentInstance(); - if (fc != null) { - fc.getExternalContext().invalidateSession(); - } - return "/login?faces-redirect=true"; - } - - private void manageloginresponse(TsafeUserDetail userdetail) - { - this.mlocation.put("cia", userdetail.get("cn")); - this.mlocation.put("branch", userdetail.get("bn")); - this.mlocation.put("office", userdetail.get("on")); - this.mlocation.put("area", userdetail.get("an")); - this.mlocation.put("channel", userdetail.get("chn")); - this.mlocation.put("accodate", userdetail.get("ad")); - this.mlocation.put("workdate", userdetail.get("wd")); - this.mlocation.put("nickname", userdetail.getNickname()); - this.mlocation.put("sbsemployee", userdetail.get("sbsemployee")); - this.mlocation.put("sbsusercode", userdetail.get("sbsusercode")); - obtenerCentroControl(userdetail); - obtenerUnidadControl(userdetail); - this.request.setUser(userdetail.getPk().getUsercode()); - this.request.setCompany(userdetail.getCompanycode()); - this.request.setBranchCode(userdetail.getBranchcode()); - this.request.setOfficeCode(userdetail.getOfficecode()); - this.request.setChannelCode(userdetail.getChannelcode()); - this.request.setLanguage(userdetail.getLanguagecode()); - this.request.setCentrocontrol(userdetail.getCcentrocontrol()); - - this.changepassword = userdetail.getChangepassword(); - this.lprofile = ((List)userdetail.get("lprofile")); - this.request.setProfile(((TsafeUserProfile)this.lprofile.get(0)).getPk().getProfilecode()); - } - - private void obtenerCentroControl(TsafeUserDetail userdetail) - { - TgeneCatalogDetail tcentrocontrol = null; - try - { - TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(userdetail.getCcentrocontrol()); - if (centroControl != null) { - tcentrocontrol = CatalogDetailController.findCatalogo(centroControl.getInstituciontipo(), centroControl.getInstitucion()); - } - } - catch (CommondbException e) {}catch (Exception e) {} - if (tcentrocontrol != null) - { - userdetail.addAddtionalInfo("centrocontrol", tcentrocontrol.getDescription()); - this.mlocation.put("centrocontrol", tcentrocontrol.getDescription()); - } - else - { - userdetail.addAddtionalInfo("centrocontrol", ""); - this.mlocation.put("centrocontrol", ""); - } - } - - private void obtenerUnidadControl(TsafeUserDetail userdetail) - { - TgeneCatalogDetail unidad = null; - try - { - TarmCentroControl centroControl = CentroControlArmasController.findPorCodigo(userdetail.getCcentrocontrol()); - if (centroControl != null) { - unidad = CatalogDetailController.findCatalogo(centroControl.getNombreinstitucioncodigo(), centroControl.getNombreinstitucion()); - } - } - catch (CommondbException e) {}catch (Exception e) {} - if (unidad != null) - { - userdetail.addAddtionalInfo("unidad", unidad.getDescription()); - this.mlocation.put("unidad", unidad.getDescription()); - } - else - { - userdetail.addAddtionalInfo("unidad", ""); - this.mlocation.put("unidad", ""); - } - } - - public void changeprofile() - throws Exception - { - try - { - if (this.profilecode != null) { - this.request.setProfile(this.profilecode); - } - CallerHelper ch = new CallerHelper(); - Response resp = ch.menu(this.request); - if (resp.getResponseCode().compareTo("0") == 0) - { - Map rootmenu = (Map)resp.get("rootmenu"); - List> lmenu = (List)rootmenu.get("items"); - this.maiaMenu.buildMenu(lmenu); - } - else - { - MessageHelper.setMessageError(resp); - } - } - catch (Throwable e) - { - MessageHelper.setMessageError(e); - } - } - - private void fillCompanies() - { - try - { - CallerHelper ch = new CallerHelper(); - Request request = new Request(); - DtoQuery dto = new DtoQuery(null, null, null, true, null); - - HashMap mtables = new HashMap(); - mtables.put("CIAS", dto); - request.setCompany(Integer.valueOf(1)); - request.getModifiedData().put("queryalias", "COMPANY"); - request.setQueryTables(mtables); - - Response resp = ch.executeQuery(request); - if (resp.getResponseCode().compareTo("0") != 0) - { - this.lcompany = new ArrayList(); - MessageHelper.setMessageError(resp); - } - else - { - this.lcompany = ((List)resp.get("CIAS")); - } - } - catch (Throwable e) - { - MessageHelper.setMessageError(e); - } - } - - public void fijaRequestData(Request request, String transactionmodule, Integer transactioncode, Integer transactionversion) - throws Exception - { - request.setCompany(this.request.getCompany()); - request.setCentrocontrol(this.request.getCentrocontrol()); - request.setUnidad(this.request.getUnidad()); - request.setBranchCode(this.request.getBranchCode()); - request.setOfficeCode(this.request.getOfficeCode()); - request.setUser(this.request.getUser()); - request.setLanguage(this.request.getLanguage()); - request.setChannelCode(this.request.getChannelCode()); - request.setTerminalCode(this.request.getTerminalCode()); - request.setProfile(this.request.getProfile()); - request.setBrowser(this.request.getBrowser()); - request.setOperativesystem(this.request.getOperativesystem()); - - request.setTransactionModule(transactionmodule); - request.setTransactionCode(transactioncode); - request.setTransactionVersion(transactionversion); - } - - private String obtainBrowserName(String userAgent) - { - if (userAgent.contains("MSIE")) { - return buildBrowser(userAgent, "MSIE"); - } - if (userAgent.contains("Firefox")) { - return buildBrowser(userAgent, "Firefox"); - } - if (userAgent.contains("Chrome")) { - return buildBrowser(userAgent, "Chrome"); - } - if (userAgent.contains("Opera")) { - return buildBrowser(userAgent, "Opera"); - } - if (userAgent.contains("Safari")) { - return buildBrowser(userAgent, "Safari"); - } - return "Unknown"; - } - - private String obtainSOName(String userAgent) - { - String os = ""; - if (userAgent.contains("Windows")) { - os = buildOS(userAgent, "Windows"); - } else if (userAgent.contains("Mac")) { - os = buildOS(userAgent, "Mac"); - } else if (userAgent.contains("Linux")) { - os = buildOS(userAgent, "Linux"); - } else if (userAgent.contains("android")) { - os = buildOS(userAgent, "android"); - } else if (userAgent.contains("iphone")) { - os = buildOS(userAgent, "iphone"); - } else { - os = "UnKnown, More-Info: " + userAgent; - } - return os; - } - - private String buildBrowser(String userAgent, String id) - { - String browser = ""; - if (userAgent.contains("MSIE")) - { - String[] value = userAgent.substring(userAgent.indexOf(id), userAgent.length()).split(" "); - browser = value[0] + " " + value[1]; - } - else - { - String[] value = userAgent.substring(userAgent.indexOf(id), userAgent.length()).split(" "); - browser = value[0]; - } - return browser; - } - - private String buildOS(String userAgent, String id) - { - String so = ""; - if (userAgent.contains("Windows")) - { - String[] value = userAgent.substring(userAgent.indexOf(id), userAgent.length()).split(" "); - so = value[0] + " " + value[1] + " " + value[2]; - } - else - { - String[] value = userAgent.substring(userAgent.indexOf(id), userAgent.length()).split(" "); - so = value[0] + " " + value[1]; - } - return so; - } - - public List> getLcompany() - { - return this.lcompany; - } - - public void setLcompany(List> lcompany) - { - this.lcompany = lcompany; - } - - public List getLprofile() - { - return this.lprofile; - } - - public void setLprofile(List lprofile) - { - this.lprofile = lprofile; - } - - public String getChangepassword() - { - return this.changepassword; - } - - public void setChangepassword(String changepassword) - { - this.changepassword = changepassword; - } - - public Map getMdata() - { - return this.mdata; - } - - public void setMdata(Map mdata) - { - this.mdata = mdata; - } - - public Request getRequest() - { - return this.request; - } - - public void setRequest(Request request) - { - this.request = request; - } - - public MaiaMenu getMaiaMenu() - { - return this.maiaMenu; - } - - public void setMaiaMenu(MaiaMenu maiaMenu) - { - this.maiaMenu = maiaMenu; - } - - public Map getMlocation() - { - return this.mlocation; - } - - public boolean isRenderBpmData() - { - return this.renderBpmData; - } - - public void setRenderBpmData(boolean renderBpmData) - { - this.renderBpmData = renderBpmData; - } - - public String getCasLogoutUrl() - { - return this.casLogoutUrl; - } - - public void setCasLogoutUrl(String casLogoutUrl) - { - this.casLogoutUrl = casLogoutUrl; - } - - public String getProfilecode() - { - return this.profilecode; - } - - public void setProfilecode(String profilecode) - { - this.profilecode = profilecode; - } - - public void help() - throws Exception - { - String m = this.request.getTransactionModule(); - String t = this.request.getTransactionCode().toString(); - String v = this.request.getTransactionVersion().toString(); - String p = ParametersController.find(EnumParametros.PATH_ALFRESCO_AYUDA.getCodigo(), this.request.getCompany().toString()).getTextvalue(); - RequestContext.getCurrentInstance().execute("Maiaworkspace.loadHelp('" + m + "', '" + t + "', '" + v + "', '" + p + "')"); - } - - @PreDestroy - private void closeSessionMaia() - { - try - { - FacesContext fc = FacesContext.getCurrentInstance(); - if (fc != null) { - logout(); - } - } - catch (Exception e) {} - } - - public String getRutaTerminos() - { - return this.rutaTerminos; - } - - public void setRutaTerminos(String rutaTerminos) - { - this.rutaTerminos = rutaTerminos; - } - - public StreamedContent getContent() - { - return this.content; - } - - public void setContent(StreamedContent content) - { - this.content = content; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MaiaMenu.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MaiaMenu.java.svn-base deleted file mode 100644 index 62bdf25..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MaiaMenu.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.frontend.controller.security; - -import java.util.List; -import java.util.Map; - -import javax.faces.context.FacesContext; - -import org.primefaces.model.menu.DefaultMenuItem; -import org.primefaces.model.menu.DefaultMenuModel; -import org.primefaces.model.menu.DefaultSubMenu; -import org.primefaces.model.menu.MenuModel; -import org.primefaces.model.menu.Submenu; - -import com.fp.frontend.helper.MessageHelper; - -public class MaiaMenu { - - private MenuModel menuModel; - - private String maiaMenuJson; - - private String contextPath = ""; - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - public MaiaMenu() { - try { - maiaMenuJson = ""; - contextPath = FacesContext.getCurrentInstance().getExternalContext().getRequestContextPath(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - public void buildMenu(List> lmenu) throws Exception { - menuModel = new DefaultMenuModel(); - for (Map menu : lmenu) { - String label = (String) menu.get("t"); - DefaultSubMenu submenu = new DefaultSubMenu(); - submenu.setLabel(label); - menuModel.addElement(submenu); - - if (menu.get("items") instanceof Map) { - this.addMenuItem(submenu, (Map) menu.get("items")); - } else { - this.addSubmenu(submenu, (List>) menu.get("items")); - } - } - } - - @SuppressWarnings("unchecked") - private void addSubmenu(Submenu submenupadre, List> lsubmenu) throws Exception { - for (Map menu : lsubmenu) { - Object obj = menu.get("items"); - if (obj == null) { - this.addMenuItem(submenupadre, menu); - } else { - String label = (String) menu.get("t"); - DefaultSubMenu submenu = new DefaultSubMenu(); - submenu.setLabel(label); - submenupadre.getElements().add(submenu); - this.addSubmenu(submenu, (List>) menu.get("items")); - } - } - - } - - @SuppressWarnings("unchecked") - private void addMenuItem(Submenu submenu, Map mdata) throws Exception { - String tname = (String) mdata.get("t"); - String modulo = (String) mdata.get("m"); - Integer transaccion = (Integer) mdata.get("tr"); - Integer version = (Integer) mdata.get("v"); - String pagina = (String) mdata.get("jsfp"); - String autoconsulta = (String) mdata.get("a"); - String url = pagina + "?" + "m=" + modulo + "&t=" + transaccion + "&v=" + version + "&autoquery=" + autoconsulta; - String key = modulo + "-" + transaccion + "-" + version; - String nameMenu = tname + " (" + modulo + "-" + transaccion + ")"; - DefaultMenuItem menuItem = new DefaultMenuItem(); - menuItem.setValue(nameMenu); - menuItem.setUrl("javascript:Maiaworkspace.loadPage('" + url + "','" + nameMenu + "')"); - menuItem.setIcon("ui-icon-document"); - menuItem.setStyleClass("m-menuitem"); - submenu.getElements().add(menuItem); - maiaMenuJson = maiaMenuJson + "'" + key + "': {'url':'" + url + "','name':'" + nameMenu + "'},"; - } - - /** - * Entrega el valor de: menuModel - * - * @return MenuModel - */ - public MenuModel getMenuModel() { - return menuModel; - } - - /** - * Fija el valor de: menuModel - * - * @param Valor a fijar en el atributo. - */ - public void setMenuModel(MenuModel menuModel) { - this.menuModel = menuModel; - } - - /** - * Entrega el valor de: maiaMenuJson - * - * @return String - */ - public String getMaiaMenuJson() { - return maiaMenuJson; - } - - /** - * Fija el valor de: maiaMenuJson - * - * @param maiaMenuJson Valor a fijar en el atributo - */ - public void setMaiaMenuJson(String maiaMenuJson) { - this.maiaMenuJson = maiaMenuJson; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MenuProfileController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MenuProfileController.java.svn-base deleted file mode 100644 index f362a9f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/MenuProfileController.java.svn-base +++ /dev/null @@ -1,213 +0,0 @@ -package com.fp.frontend.controller.security; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.query.SubQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.menu.MenuController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.menu.TgeneMenu; -import com.fp.persistence.pgeneral.menu.TgeneMenuProfile; -import com.fp.persistence.pgeneral.safe.TsafeProfile; - -/** - * Clase controladora del bean TgeneMenuProfile. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class MenuProfileController extends AbstractController { - - - private static final long serialVersionUID = 1L; - - public MenuProfileController() throws Exception { - super(TgeneMenuProfile.class); - } - - private List lprofile; - private List lMenu; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //Listas - this.lprofile = ProfileController.find(); - this.lMenu = MenuController.find(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.create(); - this.lrecord = new ArrayList<>(); - this.beanalias = "TGENEMENUPROFILE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - // subqueries 1 - SubQuery subquery1 = new SubQuery("TsafeProfile", "description", "profiledesc", - "i.pk = t.pk"); - dto.addSubQuery(subquery1); - - // subqueries 2 - SubQuery subquery2 = new SubQuery("TgeneMenu", "description", "menudesc", - "i.pk = t.menucode"); - dto.addSubQuery(subquery2); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void create() throws Exception { - super.create(); - this.record.setPk(super.getMfilters().get("pk")); - } - - /** - * Entrega una lista de objetos TbpmGroups - * @param companycode Código de compania - * @return lrecord Lista de objetos TbpmGroups - */ - public static List find() { - try { - MenuProfileController cc = new MenuProfileController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } - - /** - * Fija la descripcion del perfil en el record - */ - public void setProfileDesc(){ - for(TsafeProfile p: this.lprofile){ - if(p.getPk().compareTo(this.record.getPk())==0){ - this.record.put("profiledesc", p.getDescription()); - } - } - } - - /** - * Fija la descripcion del menu en el record - */ - public void setMenuDesc(){ - for(TgeneMenu m: this.lMenu){ - if(m.getPk().compareTo(this.record.getMenucode())==0){ - this.record.put("menudesc", m.getDescription()); - } - } - } - - /** - * Entrega una lista de objetos TsafeProfile - * @return lprofile - */ - public List getLprofile() { - return this.lprofile; - } - - /** - * Fija una lista de objetos TsafeProfile - * @param lprofile - */ - public void setLprofile(List lprofile) { - this.lprofile = lprofile; - } - - /** - * Entrega una lista de objetos TgeneMenu - * @return lMenu - */ - public List getlMenu() { - return this.lMenu; - } - - /** - * Fija una lista de objetos TgeneMenu - * @param lMenu - */ - public void setlMenu(List lMenu) { - this.lMenu = lMenu; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ModifyUserController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ModifyUserController.java.svn-base deleted file mode 100644 index 8217ea2..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ModifyUserController.java.svn-base +++ /dev/null @@ -1,552 +0,0 @@ -/* - * To change this template, choose Tools | Templates - * and open the template in the editor. - */ -package com.fp.frontend.controller.security; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; -import java.util.Map; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.primefaces.event.SelectEvent; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.lov.PersonLovController; -import com.fp.frontend.controller.pgeneral.gene.AreaController; -import com.fp.frontend.controller.pgeneral.gene.BranchController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.controller.pgeneral.gene.ChannelController; -import com.fp.frontend.controller.pgeneral.gene.LanguageController; -import com.fp.frontend.controller.pgeneral.gene.OfficeController; -import com.fp.frontend.controller.pgeneral.lov.ProfileLovController; -import com.fp.frontend.controller.pgeneral.safe.TerminalController; -import com.fp.frontend.controller.pgeneral.safe.UserDetailController; -import com.fp.frontend.controller.pgeneral.safe.UserProfileController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgControlArmas; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonDetail; -import com.fp.persistence.pgeneral.gene.TgeneArea; -import com.fp.persistence.pgeneral.gene.TgeneBranch; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.gene.TgeneChannels; -import com.fp.persistence.pgeneral.gene.TgeneLanguage; -import com.fp.persistence.pgeneral.gene.TgeneOffice; -import com.fp.persistence.pgeneral.safe.TsafeProfile; -import com.fp.persistence.pgeneral.safe.TsafeTerminal; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserProfile; - -/** - * Clase controladora de modifyuser - * - * @author BPTWPA - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ModifyUserController extends AbstractController { - - @ManagedProperty(value = "#{userDetailController}") - private UserDetailController userdetail; - @ManagedProperty(value = "#{userProfileController}") - private UserProfileController userprofile; - - public ModifyUserController() throws Exception { - super(AbstractDataTransport.class); - } - /** - * Atributo para la lista de objetos TgeneCatalogDetail para el Status del - * usuario - */ - private List luserStatus; - /** - * Atributo para la lista de objetos TsafeTerminal para el terminal - */ - private List lterminal; - /** - * Atributo para la lista de idiomas - */ - private List llanguage; - /** - * Atributo para los canales - */ - private List lchannel; - /** - * Atributo para la llist de sucursales - */ - private List lbranch; - /** - * Atributo para las oficinas - */ - private List loffice; - /** - * Atributo para las areas - */ - private List larea; - - private String centroControl; - - private String unidad; - - private List centroControls; - /** - * Atributo para la lista de objetos TgeneCatalogDetail - */ - private List unidades; - /** - * Deshabilita la pantalla después de grabar la solicitud - */ - private boolean deshabilitarPantalla; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - //list - this.luserStatus = CatalogDetailController.find("USERSTATUS"); - this.lterminal = TerminalController.find(super.getLoginController().getRequest().getCompany().toString()); - this.llanguage = LanguageController.find(); - this.lchannel = ChannelController.find(); - this.lbranch = BranchController.find(super.getLoginController().getRequest().getCompany().toString()); - this.larea = AreaController.find(super.getLoginController().getRequest().getCompany().toString()); - this.unidades = new ArrayList<>(); - this.unidad = ""; - this.centroControls = CatalogDetailController.find("INSTITUCION"); - this.deshabilitarPantalla = Boolean.TRUE; - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - private void init() { - try { - this.lrecord = new ArrayList<>(); - this.beanalias = "CHANGEPASSADMIN"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - this.userdetail.getMfilters().clear(); - this.userdetail.getMfilelds().clear(); - this.userdetail.getMfilters().put("pk.usercode", this.getMfilters().get("pk.usercode")); - this.userdetail.query(); - - if (this.userdetail.getRecord().getPk().getUsercode() != null) { - this.deshabilitarPantalla = Boolean.FALSE; - loadCentroControlUnidad(); - this.loffice = OfficeController.find(this.userdetail.getRecord().getBranchcode().toString(), super.getLoginController().getRequest().getCompany().toString()); - this.userprofile.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.query(); - } else { - this.deshabilitarPantalla = Boolean.TRUE; - this.userdetail.create(); - this.userdetail.getRecord().setUserstatuscatalogcode("USERSTATUS"); - this.userdetail.getRecord().setUserstatuscatalog(null); - this.userprofile.setLrecord(null); - MessageHelper.setMessageError("msg_userNotFound"); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Carga el centro de control por el tarm centro de control de armas - */ - private void loadCentroControlUnidad() { - //Consultar el centro de control de armas - if(userdetail.getRecord().getCcentrocontrol()!=null && !userdetail.getRecord().getCcentrocontrol().isEmpty()){ - TarmCentroControl tarmCentroControl = CentroControlArmasController.findPorCodigo(userdetail.getRecord().getCcentrocontrol()); - if (tarmCentroControl != null) { - centroControl = tarmCentroControl.getInstitucion(); - unidad = tarmCentroControl.getNombreinstitucion(); - seleccionaCentroControl(); - } else { - centroControl = ""; - unidad = ""; - } - }else{ - centroControl = ""; - unidad = ""; - } - } - - @Override - public void save() { - try { - if (this.validateUser()) { - MessageHelper.setMessageError("msg_userrequired"); - return; - } - - Request request = this.callerhelper.getRequest(); - HashMap msave = new HashMap(); - //Obteniendo los datos del usuario logueado - TsafeUserDetail tsafeUserDetail=(TsafeUserDetail)FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - this.userdetail.getRecord().setModifyuser(tsafeUserDetail.getPk().getUsercode()); - //Consultar el centro de control de armas - TarmCentroControl tarmCentroControl = CentroControlArmasController.findxCcontrolUnidad(centroControl, unidad); - - if (tarmCentroControl != null && tarmCentroControl.getInstitucion().equals(centroControl)) { - this.userdetail.getRecord().setCcentrocontrol(tarmCentroControl.getPk()); - } else { - centroControl = ""; - } - - this.userdetail.update(); - - DtoSave dtosaveuserdet = this.userdetail.getDtoSave(); - if (dtosaveuserdet.pendingProcess()) { - dtosaveuserdet.setIsForm(true); - msave.put(this.userdetail.getBeanalias(), dtosaveuserdet); - } - - DtoSave dtosaveuserprofile = this.userprofile.getDtoSave(); - if (dtosaveuserprofile.pendingProcess()) { - msave.put(this.userprofile.getBeanalias(), dtosaveuserprofile); - } - - // this.userdetail.save(); - // this.userprofile.save(); - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - this.userdetail.postCommit(resp); - this.userprofile.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - private boolean validateUser() { - boolean result = false; - if (this.userdetail.getRecord().getPk() == null) { - result = true; - } - return result; - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Carga las oficinas - */ - public void loadOffice() { - this.loffice = OfficeController.find(this.userdetail.getRecord().getBranchcode().toString(), super.getLoginController().getRequest().getCompany().toString()); - } - - /** - * Entrega el valor de: userdetail - * - * @return UserDetailController - */ - public UserDetailController getUserdetail() { - return this.userdetail; - } - - /** - * Fija el valor de: userdetail - * - * @param userdetail Valor a fijar en el atributo. - */ - public void setUserdetail(UserDetailController userdetail) { - this.userdetail = userdetail; - } - - /** - * Entrega el valor de: userprofile - * - * @return UserProfileController - */ - public UserProfileController getUserprofile() { - return this.userprofile; - } - - /** - * Fija el valor de: userprofile - * - * @param UserProfileController - */ - public void setUserprofile(UserProfileController userprofile) { - this.userprofile = userprofile; - } - - /** - * Carga las unidades de control por el centro de control - */ - public void seleccionaCentroControl(){ - if(centroControl!=null){ - unidades = CentroControlArmasController.findxInstitucion(centroControl); - }else{ - unidades=new ArrayList<>(); - userdetail.getRecord().setCcentrocontrol(null); - } - } - - public void openPersonLov() { - Map> params = new HashMap<>(); - PersonLovController.openLov(params); - } - - public void onReturnPersonLov(SelectEvent event) throws Exception { - TcustPersonDetail t = (TcustPersonDetail) event.getObject(); - this.userdetail.getMfilters().clear(); - this.getMfilelds().clear(); - this.userdetail.addFilter("pk.personcode", t.getPk().getPersoncode().toString()); - this.userdetail.addField("personname", t.getName()); - this.userdetail.query(); - - if(this.userdetail.getRecord().getPk().getUsercode()!=null){ - deshabilitarPantalla = Boolean.FALSE; - loadCentroControlUnidad(); - this.loffice = OfficeController.find(this.userdetail.getRecord().getBranchcode().toString(), super.getLoginController().getRequest().getCompany().toString()); - this.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.addFilter("pk.usercode", this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.query(); - }else{ - deshabilitarPantalla = Boolean.TRUE; - this.userdetail.getRecord().setUserstatuscatalog(null); - MessageHelper.setMessageError("msg_userNotFound"); - } - } - - public void openProfileLov() { - Map> params = new HashMap<>(); - ProfileLovController.openLov(params); - } - - public void onReturnProfileLov(SelectEvent event) throws Exception { - TsafeProfile t = (TsafeProfile) event.getObject(); - this.userprofile.create(); - if (this.userdetail.getRecord().getPk() != null) { - this.userprofile.getRecord().getPk().setUsercode(this.userdetail.getRecord().getPk().getUsercode()); - this.userprofile.getRecord().getPk().setProfilecode(t.getPk()); - this.userprofile.getRecord().put("profiledesc", t.getDescription()); - if (this.verifyProfile()) { - MessageHelper.setMessageError("msg_userExist"); - } else { - this.userprofile.update(); - } - } else { - MessageHelper.setMessageError("msg_userrequired"); - } - } - - /** - * Verifica si hay un perfil seleccionado - * - * @return result V/F - */ - private boolean verifyProfile() { - boolean result = false; - if (!this.userprofile.getLrecord().isEmpty()) { - for (TsafeUserProfile profile : this.userprofile.getLrecord()) { - if (profile.getPk().getProfilecode().compareTo(this.userprofile.getRecord().getPk().getProfilecode()) == 0) { - result = true; - break; - } - } - } - return result; - } - - /** - * Entrega una lista de objetos TgeneCatalogDetail - * - * @return luserStatus Lista de objetos TgeneCatalogDetail - */ - public List getLuserStatus() { - return this.luserStatus; - } - - /** - * Fija una lista de objetos TgeneCatalogDetail - * - * @param luserStatus Lista de objetos TgeneCatalogDetail - */ - public void setLuserStatus(List luserStatus) { - this.luserStatus = luserStatus; - } - - /** - * Entrega una lista de objetos TsafeTerminal - * - * @return lterminal Lista de objetos TsafeTerminal - */ - public List getLterminal() { - return this.lterminal; - } - - /** - * Fija una lista de objetos TsafeTerminal - * - * @param lterminal Lista de objetos TsafeTerminal - */ - public void setLterminal(List lterminal) { - this.lterminal = lterminal; - } - - /** - * Entrega una lista de objetos TgeneLanguage - * - * @return lterminal Lista de objetos TgeneLanguage - */ - public List getLlanguage() { - return this.llanguage; - } - - /** - * Fija una lista de objetos TgeneLanguage - * - * @param lterminal Lista de objetos TgeneLanguage - */ - public void setLlanguage(List llanguage) { - this.llanguage = llanguage; - } - - /** - * Entrega una lista de objetos TgeneChannels - * - * @param lchannel Lista de objetos TgeneLanguage - */ - public List getLchannel() { - return this.lchannel; - } - - /** - * Fija una lista de objetos TgeneChannels - * - * @param lchannel Lista de objetos TgeneChannels - */ - public void setLchannel(List lchannel) { - this.lchannel = lchannel; - } - - /** - * Entrega una lista de objetos TgeneBranch - * - * @return lbranch Lista de objetos TgeneLanguage - */ - public List getLbranch() { - return this.lbranch; - } - - /** - * Fija una lista de objetos TgeneBranch - * - * @param lbranch Lista de objetos TgeneLanguage - */ - public void setLbranch(List lbranch) { - this.lbranch = lbranch; - } - - /** - * Entrega una lista de objetos TgeneOffice - * - * @return loffice Lista de objetos TgeneOffice - */ - public List getLoffice() { - return this.loffice; - } - - /** - * Fija una lista de objetos TgeneOffice - * - * @param loffice Lista de objetos TgeneOffice - */ - public void setLoffice(List loffice) { - this.loffice = loffice; - } - - /** - * Entrega una lista de objetos TgeneArea - * - * @return larea Lista de objetos TgeneArea - */ - public List getLarea() { - return this.larea; - } - - /** - * Fija una lista de objetos TgeneArea - * - * @param larea Lista de objetos TgeneArea - */ - public void setLarea(List larea) { - this.larea = larea; - } - - public List getCentroControls() { - return centroControls; - } - - public void setCentroControls(List centroControls) { - this.centroControls = centroControls; - } - public List getUnidades() { - return unidades; - } - public void setUnidades(List unidades) { - this.unidades = unidades; - } - - public String getCentroControl() { - return centroControl; - } - - public void setCentroControl(String centroControl) { - this.centroControl = centroControl; - } - - public boolean isDeshabilitarPantalla() { - return deshabilitarPantalla; - } - - public void setDeshabilitarPantalla(boolean deshabilitarPantalla) { - this.deshabilitarPantalla = deshabilitarPantalla; - } - - public String getUnidad() { - return unidad; - } - - public void setUnidad(String unidad) { - this.unidad = unidad; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/PasswordController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/PasswordController.java.svn-base deleted file mode 100644 index a15de2d..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/PasswordController.java.svn-base +++ /dev/null @@ -1,197 +0,0 @@ -package com.fp.frontend.controller.security; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.pgeneral.gene.ChannelController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneChannels; -import com.fp.persistence.pgeneral.safe.TsafePassword; - -/** - * Clase controladora del lov asociado al bean TsafePassword. - * - * @author WPA. - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class PasswordController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public PasswordController() throws Exception { - super(TsafePassword.class); - } - - /** - * Atributo para la lista de objetos TgeneChannels - */ - private List lchannels; - - private boolean active; - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - this.lchannels = ChannelController.find(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza - * el controlador. - */ - public void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.record = null; - this.beanalias = "PASSWORD"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void execute(){ - this.active=true; - this.querydatabase(); - } - - @Override - public void create() { - try { - super.create(); - this.record.getPk().setCompanycode(super.getLoginController().getRequest().getCompany()); - this.record.getPk().setChannelcode(super.getMfilters().get("pk.channelcode")); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - Request request = this.callerhelper.getRequest(); - super.addFilter("pk.companycode", super.getLoginController().getRequest().getCompany().toString()); - - DtoQuery dto = super.getDtoQuery(false); - dto.setOrderby("t.pk.channelcode"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.record = new TsafePassword(); - MessageHelper.setMessageError(resp); - } else { - this.record = (TsafePassword) resp.get(this.beanalias); - if (this.record != null) { - super.postQuery((AbstractDataTransport) resp.get(this.beanalias)); - } else { - this.create(); - } - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save() { - try { - if (!this.existAtLeastOneFilterValue()) { - MessageHelper.setMessageError("msg_filterrequird"); - return; - } - if(this.record.getPk().getCompanycode()==null || this.record.getPk().getCompanycode().compareTo(0)==0){ - MessageHelper.setMessageError("msg_querydata"); - return; - } - Request request = this.callerhelper.getRequest(); - super.update(); - DtoSave dtosave = super.getDtoSave(); - if (!dtosave.pendingProcess()) { - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - super.postCommitGeneric(response, this.beanalias); - } - - /** - * Entrega una lista de objetos TgeneChannels - * - * @return lchannels Lista de objetos TgeneChannels - */ - public List getLchannels() { - return lchannels; - } - - /** - * Fija una lista de objetos TgeneChannels - * - * @param lchannels Lista de objetos TgeneChannels - */ - public void setLchannels(List lchannels) { - this.lchannels = lchannels; - } - - /** - * Entrega V/F - * @return active V/F - */ - public boolean isActive() { - return active; - } - - /** - * Fija V/F - * @param active V/F - */ - public void setActive(boolean active) { - this.active = active; - } - - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ProfileController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ProfileController.java.svn-base deleted file mode 100644 index 1736e1b..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/.svn/text-base/ProfileController.java.svn-base +++ /dev/null @@ -1,131 +0,0 @@ -package com.fp.frontend.controller.security; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeProfile; - -/** - * Clase controladora del bean TsafeProfile. - * - * @author WPA - * @version 2.1 - */ -@ManagedBean -@ViewScoped -public class ProfileController extends AbstractController { - - private static final long serialVersionUID = 1L; - - public ProfileController() throws Exception { - super(TsafeProfile.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "TSAFEPROFILE"; - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - - request.setQueryTables(mtables); - - Response resp = this.callerhelper.executeQuery(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void save(){ - try { - Request request = this.callerhelper.getRequest(); - DtoSave dtosave = super.getDtoSave(); - if(!dtosave.pendingProcess()){ - return; - } - HashMap msave = new HashMap(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Entrega una lista de objetos TbpmGroups - * @param companycode Código de compania - * @return lrecord Lista de objetos TbpmGroups - */ - public static List find() { - try { - ProfileController cc = new ProfileController(); - cc.init(); - cc.recperpage = 300; - cc.querydatabase(); - if ((cc.lrecord != null) && !cc.lrecord.isEmpty()) { - return cc.lrecord; - } - return null; - } catch (Throwable e) { - MessageHelper.setMessageError(e); - return null; - } - - } -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/entries deleted file mode 100644 index 4847e4a..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/security/reports -svn://172.17.26.185/COMACO - - - -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ReportUserController.java -file - - - - -2022-07-28T03:39:54.761596Z -413298f8d4720fc46712d88f73e6af97 -2021-05-14T20:37:22.948846Z -4633 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5030 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/text-base/ReportUserController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/text-base/ReportUserController.java.svn-base deleted file mode 100644 index ddc8e4f..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/security/reports/.svn/text-base/ReportUserController.java.svn-base +++ /dev/null @@ -1,164 +0,0 @@ -package com.fp.frontend.controller.security.reports; - -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import com.fp.dto.AbstractDataTransport; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.ReportController; -import com.fp.frontend.controller.security.LoginController; -import com.fp.frontend.controller.security.ProfileController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.safe.TsafeProfile; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Clase controladora de ipresion de usuarios. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ReportUserController extends AbstractController { - - @ManagedProperty(value = "#{reportController}") - private ReportController reportController; - - private List lsafeprofile; - - @ManagedProperty(value = "#{logincontroller}") - private LoginController logincontroller; - private TsafeUserDetail tsafeUserDetailUsuario = null; - - public ReportUserController() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - //super.startQuery(); - - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - /*this.recperpage = 15; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOGDETAIL";*/ - this.beanalias = "REPORTE"; - this.lsafeprofile = ProfileController.find(); - this.tsafeUserDetailUsuario = new TsafeUserDetail(); - this.tsafeUserDetailUsuario = (TsafeUserDetail) FacesContext.getCurrentInstance().getExternalContext().getSessionMap().get("TSAFEUSERDETAIL"); - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - @Override - protected void querydatabase() { - } - - /** - * Ejecuta un reporte de usuarios. - */ - public void reportuser() { - //String path = "security/reports/user"; - String path = "security/reports/usuarios"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - //String format = "pdf"; - String format = "xls"; - String filename = "usuarios"; - try { - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de usuarios. - */ - public void reportuserperprofile() { - String path = "security/reports/userperprofile"; - //String path = "security/reports/user"; - HashMap parameters = new HashMap<>(); - parameters.put("pathLogoIzquierda", "repo:/maia/1/image/comandoconjunto"); - parameters.put("pathLogoDerecha", "repo:/maia/1/image/selloarmas"); - //parameters.put("cmoneda", "USD"); - //String format = "pdf"; - String format = "xls"; - String filename = "usuariosporperfil"; - try { - this.reportController.executeXls(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Ejecuta un reporte de usuarios. - */ - public void reporttransactionperprofile() { - String path = "security/reports/transactionsperprofile"; - HashMap parameters = new HashMap<>(); - //parameters.put("cmoneda", "USD"); - String format = "pdf"; - String filename = "transaccionesporperfil"; - try { - this.reportController.execute(path, parameters, format, filename, this.getLoginController()); - } catch (Exception ex) { - MessageHelper.setMessageError(ex); - } - } - - /** - * Entrega el valor de: reportController - * @return ReportController - */ - public ReportController getReportController() { - return this.reportController; - } - - /** - * Fija el valor de: reportController - * @param reportController Valor a fijar en el atributo. - */ - - public void setReportController(ReportController reportController) { - this.reportController = reportController; - } - - public List getLsafeprofile() { - return lsafeprofile; - } - - public void setLsafeprofile(List lsafeprofile) { - this.lsafeprofile = lsafeprofile; - } - - public LoginController getLogincontroller() { - return logincontroller; - } - - public void setLogincontroller(LoginController logincontroller) { - this.logincontroller = logincontroller; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/controller/test/.svn/entries b/frontend/src/main/java/com/fp/frontend/controller/test/.svn/entries deleted file mode 100644 index 6abf1cc..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/test/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/controller/test -svn://172.17.26.185/COMACO - - - -2014-10-17T04:21:42.578486Z -1660 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -BpmCatalogController.java -file - - - - -2022-07-28T03:39:46.245559Z -1b8c042bb48a7df41dfd92bb02730a26 -2014-10-17T04:21:42.578486Z -1660 -jvaca - - - - - - - - - - - - - - - - - - - - - -4056 - diff --git a/frontend/src/main/java/com/fp/frontend/controller/test/.svn/text-base/BpmCatalogController.java.svn-base b/frontend/src/main/java/com/fp/frontend/controller/test/.svn/text-base/BpmCatalogController.java.svn-base deleted file mode 100644 index 4c5a0ff..0000000 --- a/frontend/src/main/java/com/fp/frontend/controller/test/.svn/text-base/BpmCatalogController.java.svn-base +++ /dev/null @@ -1,126 +0,0 @@ -package com.fp.frontend.controller.test; - -import java.util.ArrayList; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import org.primefaces.context.RequestContext; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.query.DtoQuery; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.pgeneral.gene.TgeneCatalog; - -/** - * Clase controladora del bean TgeneCatalog. - * - * @author Jorge Vaca. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class BpmCatalogController extends AbstractController { - - /** - * Constructor - * @throws Exception - */ - public BpmCatalogController() throws Exception { - super(TgeneCatalog.class); - } - - /** - * Metodo invocado despues de instanciar el controlador - */ - @PostConstruct - private void postconstruct() { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } - - /** - * Incializa variables del controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - try { - this.recperpage = 10; // Cambiar al # reg a mirar. - this.lrecord = new ArrayList<>(); - this.beanalias = "CATALOG"; - super.create(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#querydatabase() - */ - @SuppressWarnings("unchecked") - @Override - protected void querydatabase() { - try { - Request request = this.callerhelper.getRequest(); - DtoQuery dto = super.getDtoQuery(true); - dto.setOrderby("t.pk"); // En en string van todos los campos de orden ("t.pk, t.nombre, t.cpais"). - - HashMap mtables = new HashMap(); - mtables.put(this.beanalias, dto); // permite adicionar mas de una tabla. - request.setQueryTables(mtables); - Response resp = this.callerhelper.executeQuery(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) != 0) { - this.lrecord = new ArrayList(); - MessageHelper.setMessageError(resp); - } else { - this.lrecord = (List) resp.get(this.beanalias); - super.postQuery(this.lrecord); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /* (non-Javadoc) - * @see com.fp.frontend.controller.AbstractController#save() - */ - @Override - public void save(){ - //la pagina no tiene save - } - - - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - try { - Request request = callerhelper.getRequest(); - // limpiar request para finalizar la tarea. - super.cleanRequest(request); - request.modifiedData().put("TID", tid); - request.modifiedData().put("BPMStatus", - bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R - request.modifiedData().put("BPMObs", bpmDataComment); - request.modifiedData().put("validate", "Y"); - Response resp = callerhelper.executeSave(request); - - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/converters/.svn/entries b/frontend/src/main/java/com/fp/frontend/converters/.svn/entries deleted file mode 100644 index 83d696e..0000000 --- a/frontend/src/main/java/com/fp/frontend/converters/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/converters -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DateConverter.java -file - - - - -2022-07-28T03:39:59.327615Z -a91133e3434f828161b33b046e91494f -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1018 - diff --git a/frontend/src/main/java/com/fp/frontend/converters/.svn/text-base/DateConverter.java.svn-base b/frontend/src/main/java/com/fp/frontend/converters/.svn/text-base/DateConverter.java.svn-base deleted file mode 100644 index a537c41..0000000 --- a/frontend/src/main/java/com/fp/frontend/converters/.svn/text-base/DateConverter.java.svn-base +++ /dev/null @@ -1,36 +0,0 @@ -package com.fp.frontend.converters; - -import java.text.SimpleDateFormat; - -import javax.faces.component.UIComponent; -import javax.faces.context.FacesContext; -import javax.faces.convert.Converter; -import javax.faces.convert.FacesConverter; - -/** - * Clase que se encarga de convertir un String a java.sql.Date y viceversa. - * @author Jorge Vaca. - * @version 2.1 - */ -@FacesConverter("converter.date") -public class DateConverter implements Converter{ - private static SimpleDateFormat FORMATOFECHA = new SimpleDateFormat("dd-MM-yyyy"); - - @Override - public Object getAsObject(FacesContext context, UIComponent component, String value) { - java.sql.Date sqlDate = null; - try { - java.util.Date dt = FORMATOFECHA.parse(value); - sqlDate = new java.sql.Date(dt.getTime()); - } catch (Exception e) { - e.printStackTrace(); - } - return sqlDate; - } - - @Override - public String getAsString(FacesContext context, UIComponent component, Object value) { - return FORMATOFECHA.format(value); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/enums/.svn/entries b/frontend/src/main/java/com/fp/frontend/enums/.svn/entries deleted file mode 100644 index c7741c9..0000000 --- a/frontend/src/main/java/com/fp/frontend/enums/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/enums -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -EnumLovOption.java -file - - - - -2022-07-28T03:39:57.856609Z -c987febf6737767a6aca2fc3101ac5f7 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1148 - diff --git a/frontend/src/main/java/com/fp/frontend/enums/.svn/text-base/EnumLovOption.java.svn-base b/frontend/src/main/java/com/fp/frontend/enums/.svn/text-base/EnumLovOption.java.svn-base deleted file mode 100644 index 3b36e2f..0000000 --- a/frontend/src/main/java/com/fp/frontend/enums/.svn/text-base/EnumLovOption.java.svn-base +++ /dev/null @@ -1,56 +0,0 @@ -package com.fp.frontend.enums; - -/** - * Numeracion usada para las opciones del modal. - * - * @author amerchan - */ -public enum EnumLovOption { - - MODAL("modal"), DRAGGABLE("draggable"), RESIZABLE("resizable"), WIDTH("width"), - HEIGHT("height"), CONTENT_WIDTH("contentWidth"), CONTENT_HEIGHT("contentHeight"); - - /** Etiqueta que describe el enumerado. */ - private String label; - - /** - * Instancia un nuevo enumerado afirmacion. - * - * @param label Etiqueta - */ - private EnumLovOption(String label) { - this.label = label; - } - - /** - * Gets the label. - * - * @return the label - */ - public String getLabel() { - return this.label; - } - - /** - * Instancia un objeto de tipo EnumLovOption. - * - * @param Codigo de la enumeracion - * @return Objeto tipo EnumAfirmacion - */ - public static EnumLovOption getEnumLovOption(String code) { - for (EnumLovOption sts : EnumLovOption.values()) { - if (sts.name().compareTo(code) == 0) { - return sts; - } - } - return null; - } - - /* (non-Javadoc) - * @see java.lang.Enum#toString() - */ - @Override - public String toString() { - return this.label; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/entries b/frontend/src/main/java/com/fp/frontend/filter/.svn/entries deleted file mode 100644 index 2e5b636..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/entries +++ /dev/null @@ -1,201 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/filter -svn://172.17.26.185/COMACO - - - -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -GZIPFilter.java -file - - - - -2022-07-28T03:39:57.018605Z -a5a2925a19392a56edb7b902e65250eb -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2188 - -GZIPResponseStream.java -file - - - - -2022-07-28T03:39:57.019605Z -ef20b6e0fd91e63fde658ef62040f692 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2677 - -security -dir - -TimeoutManagerFilter.java -file - - - - -2022-07-28T03:39:57.019605Z -77bea39946d4313968d2f4091d6f95fb -2014-12-22T12:08:44.230989Z -3627 -dcruz -has-props - - - - - - - - - - - - - - - - - - - - -3941 - -GZIPResponseWrapper.java -file - - - - -2022-07-28T03:39:57.019605Z -2387e64d57b6d22690b715b85f4dc998 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -2364 - -ControlAcceso.java -file - - - - -2022-07-28T03:39:57.019605Z -a58dd311d15fe4d1f4c1206061850445 -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2299 - diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/prop-base/TimeoutManagerFilter.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/prop-base/TimeoutManagerFilter.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/prop-base/TimeoutManagerFilter.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.netbeans-base deleted file mode 100644 index 22c0aa4..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.netbeans-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; - -import javax.faces.context.FacesContext; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Servlet Filter implementation class ControlAcceso - */ -@WebFilter(filterName="ControlAcceso",urlPatterns = {"/pages/*"} ) -public class ControlAcceso implements Filter { - - /** - * Default constructor. - */ - public ControlAcceso() { - // TODO Auto-generated constructor stub - } - - /** - * @see Filter#destroy() - */ - public void destroy() { - // TODO Auto-generated method stub - } - - /** - * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) - */ - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - // TODO Auto-generated method stub - // place your code here - System.out.println("Ingresa Control Acceso permitido Filtro : "); - FacesContext facesContext = FacesContext.getCurrentInstance(); - HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); - TsafeUserDetail currentUser = session!=null ? (TsafeUserDetail) session.getAttribute("TSAFEUSERDETAIL"):null; - // pass the request along the filter chain - if (currentUser!=null && currentUser.getChangepassword().equalsIgnoreCase("N")) { - System.out.println("Control Acceso permitido : "); - //facesContext.getExternalContext().dispatch("/pages/workspace.xhtml"); - chain.doFilter(request, response); - - } else { - System.out.println(" Acceso no autorizado "); - facesContext.getExternalContext().dispatch("/login.xhtml"); - } - - - - } - - /** - * @see Filter#init(FilterConfig) - */ - public void init(FilterConfig fConfig) throws ServletException { - // TODO Auto-generated method stub - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.svn-base deleted file mode 100644 index 22c0aa4..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/ControlAcceso.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; - -import javax.faces.context.FacesContext; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.annotation.WebFilter; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -/** - * Servlet Filter implementation class ControlAcceso - */ -@WebFilter(filterName="ControlAcceso",urlPatterns = {"/pages/*"} ) -public class ControlAcceso implements Filter { - - /** - * Default constructor. - */ - public ControlAcceso() { - // TODO Auto-generated constructor stub - } - - /** - * @see Filter#destroy() - */ - public void destroy() { - // TODO Auto-generated method stub - } - - /** - * @see Filter#doFilter(ServletRequest, ServletResponse, FilterChain) - */ - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - // TODO Auto-generated method stub - // place your code here - System.out.println("Ingresa Control Acceso permitido Filtro : "); - FacesContext facesContext = FacesContext.getCurrentInstance(); - HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); - TsafeUserDetail currentUser = session!=null ? (TsafeUserDetail) session.getAttribute("TSAFEUSERDETAIL"):null; - // pass the request along the filter chain - if (currentUser!=null && currentUser.getChangepassword().equalsIgnoreCase("N")) { - System.out.println("Control Acceso permitido : "); - //facesContext.getExternalContext().dispatch("/pages/workspace.xhtml"); - chain.doFilter(request, response); - - } else { - System.out.println(" Acceso no autorizado "); - facesContext.getExternalContext().dispatch("/login.xhtml"); - } - - - - } - - /** - * @see Filter#init(FilterConfig) - */ - public void init(FilterConfig fConfig) throws ServletException { - // TODO Auto-generated method stub - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.netbeans-base deleted file mode 100644 index 68beda5..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.netbeans-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Clase que se encarga de comprimir el contenido - * - * @author Jorge Vaca - * @version 2.1 - */ -public class GZIPFilter implements Filter { - - /** - * Metodo que sobrescribe el metodo init de la clase Filter Este metodo no debe hacer nada - * - * @param filterConfig - * @throws ServletException - */ - @Override - public void init(FilterConfig filterConfig) throws ServletException { - } - - /** - * Metodo que se encarga de filtrar los contenidos - * - * @param request - * @param response - * @param chain - * @throws IOException - * @throws ServletException - */ - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - if (request instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - try { - String aceptEncoding = httpServletRequest.getHeader("accept-encoding"); - if ((aceptEncoding != null) && (aceptEncoding.indexOf("gzip") != -1)) { - GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(httpServletResponse); - chain.doFilter(request, wrappedResponse); - wrappedResponse.finishResponse(); - return; - } - } catch (Exception e) { - return; - } - - chain.doFilter(request, response); - } - } - - /** - * Metodo que sobrescribe el metodo destroy de la clase Filter Este metodo no debe hacer nada - */ - @Override - public void destroy() { - } -} diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.svn-base deleted file mode 100644 index 68beda5..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPFilter.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; - -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -/** - * Clase que se encarga de comprimir el contenido - * - * @author Jorge Vaca - * @version 2.1 - */ -public class GZIPFilter implements Filter { - - /** - * Metodo que sobrescribe el metodo init de la clase Filter Este metodo no debe hacer nada - * - * @param filterConfig - * @throws ServletException - */ - @Override - public void init(FilterConfig filterConfig) throws ServletException { - } - - /** - * Metodo que se encarga de filtrar los contenidos - * - * @param request - * @param response - * @param chain - * @throws IOException - * @throws ServletException - */ - @Override - public void doFilter(ServletRequest request, ServletResponse response, FilterChain chain) throws IOException, ServletException { - if (request instanceof HttpServletRequest) { - HttpServletRequest httpServletRequest = (HttpServletRequest) request; - HttpServletResponse httpServletResponse = (HttpServletResponse) response; - try { - String aceptEncoding = httpServletRequest.getHeader("accept-encoding"); - if ((aceptEncoding != null) && (aceptEncoding.indexOf("gzip") != -1)) { - GZIPResponseWrapper wrappedResponse = new GZIPResponseWrapper(httpServletResponse); - chain.doFilter(request, wrappedResponse); - wrappedResponse.finishResponse(); - return; - } - } catch (Exception e) { - return; - } - - chain.doFilter(request, response); - } - } - - /** - * Metodo que sobrescribe el metodo destroy de la clase Filter Este metodo no debe hacer nada - */ - @Override - public void destroy() { - } -} diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseStream.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseStream.java.svn-base deleted file mode 100644 index fb80ce6..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseStream.java.svn-base +++ /dev/null @@ -1,108 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.ByteArrayOutputStream; -import java.io.IOException; -import java.util.zip.GZIPOutputStream; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; - -/** - * Clase que devuelve filtrado el contenido - * - * @author Jorge Vaca - * @version 2.1 - */ -public class GZIPResponseStream extends ServletOutputStream { - - protected ByteArrayOutputStream baos = null; - - protected GZIPOutputStream gzipstream = null; - - protected boolean closed = false; - - protected HttpServletResponse response = null; - - protected ServletOutputStream output = null; - - public GZIPResponseStream(HttpServletResponse response) throws IOException { - super(); - closed = false; - this.response = response; - this.output = response.getOutputStream(); - baos = new ByteArrayOutputStream(); - gzipstream = new GZIPOutputStream(baos); - } - - /** - * - * @throws IOException - */ - @Override - public void close() throws IOException { - if (closed) { - throw new IOException("This output stream has already been closed"); - } - gzipstream.finish(); - byte[] bytes = baos.toByteArray(); - response.addHeader("Content-Length", Integer.toString(bytes.length)); - response.addHeader("Content-Encoding", "gzip"); - output.write(bytes); - output.flush(); - output.close(); - closed = true; - } - - /** - * - * @throws IOException - */ - @Override - public void flush() throws IOException { - if (closed) { - throw new IOException("Cannot flush a closed output stream"); - } - gzipstream.flush(); - } - - @Override - public void write(int b) throws IOException { - if (closed) { - throw new IOException("Cannot write to a closed output stream"); - } - gzipstream.write((byte) b); - } - - /** - * - * @param b - * @throws IOException - */ - @Override - public void write(byte b[]) throws IOException { - write(b, 0, b.length); - } - - /** - * - * @param b - * @param off - * @param len - * @throws IOException - */ - @Override - public void write(byte b[], int off, int len) throws IOException { - if (closed) { - throw new IOException("Cannot write to a closed output stream"); - } - gzipstream.write(b, off, len); - } - - public boolean closed() { - return (this.closed); - } - - public void reset() { - // noop - } -} diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseWrapper.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseWrapper.java.svn-base deleted file mode 100644 index 7e53692..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/GZIPResponseWrapper.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; -import java.io.OutputStreamWriter; -import java.io.PrintWriter; - -import javax.servlet.ServletOutputStream; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpServletResponseWrapper; - -/** - * Clase para envolver los filtros gzip - * - * @author Jorge Vaca - * @version 2.1 - */ -public class GZIPResponseWrapper extends HttpServletResponseWrapper { - - protected HttpServletResponse origResponse = null; - - protected ServletOutputStream stream = null; - - protected PrintWriter writer = null; - - public GZIPResponseWrapper(HttpServletResponse response) { - super(response); - origResponse = response; - } - - public ServletOutputStream createOutputStream() throws IOException { - return (new GZIPResponseStream(origResponse)); - } - - public void finishResponse() { - try { - if (writer != null) { - writer.close(); - } else { - if (stream != null) { - stream.close(); - } - } - } catch (IOException e) { - } - } - - /** - * - * @throws IOException - */ - @Override - public void flushBuffer() throws IOException { - stream.flush(); - } - - /** - * - * @return - * @throws IOException - */ - @Override - public ServletOutputStream getOutputStream() throws IOException { - if (writer != null) { - throw new IllegalStateException("getWriter() has already been called!"); - } - if (stream == null) { - stream = createOutputStream(); - } - return (stream); - } - - /** - * - * @return - * @throws IOException - */ - @Override - public PrintWriter getWriter() throws IOException { - if (writer != null) { - return (writer); - } - if (stream != null) { - throw new IllegalStateException("getOutputStream() has already been called!"); - } - stream = createOutputStream(); - writer = new PrintWriter(new OutputStreamWriter(stream, "UTF-8")); - return (writer); - } - - /** - * - * @param length - */ - @Override - public void setContentLength(int length) { - } -} diff --git a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/TimeoutManagerFilter.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/TimeoutManagerFilter.java.svn-base deleted file mode 100644 index e106f88..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/.svn/text-base/TimeoutManagerFilter.java.svn-base +++ /dev/null @@ -1,96 +0,0 @@ -package com.fp.frontend.filter; - -import java.io.IOException; - -import javax.faces.FactoryFinder; -import javax.faces.component.UIViewRoot; -import javax.faces.context.FacesContext; -import javax.faces.context.FacesContextFactory; -import javax.faces.lifecycle.Lifecycle; -import javax.faces.lifecycle.LifecycleFactory; -import javax.servlet.Filter; -import javax.servlet.FilterChain; -import javax.servlet.FilterConfig; -import javax.servlet.ServletContext; -import javax.servlet.ServletException; -import javax.servlet.ServletRequest; -import javax.servlet.ServletResponse; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -public class TimeoutManagerFilter implements Filter { - - - private String contextPath; - - @Override - public void doFilter(ServletRequest paramServletRequest, ServletResponse paramServletResponse, FilterChain paramFilterChain) throws IOException, ServletException { - HttpServletRequest request = (HttpServletRequest) paramServletRequest; - HttpServletResponse response = (HttpServletResponse) paramServletResponse; - String path = request.getServletPath(); - - - if ((path.contains("/javax.faces.resource/")) || ((!path.endsWith(".jsf")) && (!path.endsWith(".xhtml")))) - { - paramFilterChain.doFilter(paramServletRequest, paramServletResponse); - return; - } - if(this.contextPath==null) { - this.contextPath = request.getContextPath(); - } - - try { - FacesContext facesContext = FacesContext.getCurrentInstance(); - if (facesContext == null) - { - FacesContextFactory contextFactory = (FacesContextFactory) FactoryFinder.getFactory(FactoryFinder.FACES_CONTEXT_FACTORY); - LifecycleFactory lifecycleFactory = (LifecycleFactory) FactoryFinder.getFactory(FactoryFinder.LIFECYCLE_FACTORY); - Lifecycle lifecycle = lifecycleFactory.getLifecycle(LifecycleFactory.DEFAULT_LIFECYCLE); - - ServletContext servletContext = request.getSession().getServletContext(); - facesContext = contextFactory.getFacesContext(servletContext, paramServletRequest, paramServletResponse, lifecycle); - InnerFacesContext.setFacesContextAsCurrentInstance(facesContext); - if (null == facesContext.getViewRoot()) - { - facesContext.setViewRoot(new UIViewRoot()); - } - } - HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); - - TsafeUserDetail currentUser = session!=null ? (TsafeUserDetail) session.getAttribute("TSAFEUSERDETAIL"):null; - boolean isIndexPage = path.endsWith("index.xhtml") || path.endsWith(this.contextPath+"/"); - boolean isLoginPage = path.endsWith("login.xhtml"); - - if (!isLoginPage && !isIndexPage && (currentUser == null)) { - response.sendRedirect(this.contextPath+"/login.xhtml"); - }else if(isLoginPage && (currentUser!=null)){ - response.sendRedirect(this.contextPath+"/pages/workspace.xhtml"); - } - - } catch (Throwable e) { - e.printStackTrace(); - return; - } - paramFilterChain.doFilter(paramServletRequest, paramServletResponse); - } - - private abstract static class InnerFacesContext extends FacesContext - { - protected static void setFacesContextAsCurrentInstance(final FacesContext facesContext) - { - FacesContext.setCurrentInstance(facesContext); - } - } - - @Override - public void destroy() { - } - - @Override - public void init(FilterConfig filterConfig) throws ServletException { - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/filter/security/.svn/entries b/frontend/src/main/java/com/fp/frontend/filter/security/.svn/entries deleted file mode 100644 index f204f8e..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/security/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/filter/security -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -AuthorizationListener.java -file - - - - -2022-07-28T03:39:56.447603Z -474b4909d8f4f4d66c4275f92338521d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1787 - diff --git a/frontend/src/main/java/com/fp/frontend/filter/security/.svn/text-base/AuthorizationListener.java.svn-base b/frontend/src/main/java/com/fp/frontend/filter/security/.svn/text-base/AuthorizationListener.java.svn-base deleted file mode 100644 index 6e61d7a..0000000 --- a/frontend/src/main/java/com/fp/frontend/filter/security/.svn/text-base/AuthorizationListener.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -package com.fp.frontend.filter.security; - -import javax.faces.application.NavigationHandler; -import javax.faces.context.FacesContext; -import javax.faces.event.PhaseEvent; -import javax.faces.event.PhaseId; -import javax.faces.event.PhaseListener; -import javax.servlet.http.HttpSession; - -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -public class AuthorizationListener implements PhaseListener { - - /** - * - */ - private static final long serialVersionUID = 1L; - - @Override - public void afterPhase(PhaseEvent event) { - FacesContext facesContext = event.getFacesContext(); - String currentPage = facesContext.getViewRoot().getViewId(); - - boolean isLoginPage = (currentPage.lastIndexOf("login.xhtml") > -1); - HttpSession session = (HttpSession) facesContext.getExternalContext().getSession(false); - - NavigationHandler nh = facesContext.getApplication().getNavigationHandler(); - //NavigationHandler nh = FacesContext.getCurrentInstance().getApplication().getNavigationHandler(); - - TsafeUserDetail currentUser = session!=null ? (TsafeUserDetail) session.getAttribute("TSAFEUSERDETAIL"):null; - - if (!isLoginPage && (currentUser == null)) { - //nh.handleNavigation(facesContext, null, "login"); - try { - facesContext.getExternalContext().dispatch("/login.xhtml"); - } catch (Exception e) { - e.printStackTrace(); - } - }else if(isLoginPage && (currentUser!=null)){ - //nh.handleNavigation(facesContext, null, "workspace"); - try { - facesContext.getExternalContext().dispatch("/pages/workspace.xhtml"); - } catch (Exception e) { - e.printStackTrace(); - } - } - - } - - @Override - public void beforePhase(PhaseEvent event) { - - } - - @Override - public PhaseId getPhaseId() { - return PhaseId.RESTORE_VIEW; - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/helper/.svn/entries b/frontend/src/main/java/com/fp/frontend/helper/.svn/entries deleted file mode 100644 index 6882509..0000000 --- a/frontend/src/main/java/com/fp/frontend/helper/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/helper -svn://172.17.26.185/COMACO - - - -2015-11-05T06:39:24.825849Z -4308 -fpazmino - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CallerHelper.java -file - - - - -2022-07-28T03:39:45.604556Z -aa8539fcde8ed51143b173de008b70f5 -2014-10-17T05:13:58.096524Z -1666 -cpiedra - - - - - - - - - - - - - - - - - - - - - -10526 - -MessageHelper.java -file - - - - -2022-07-28T03:39:45.604556Z -04adc56fb9ab99e5fe73d2ffed5bffb6 -2015-11-05T06:39:24.825849Z -4308 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8942 - diff --git a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.netbeans-base deleted file mode 100644 index 2c21fa0..0000000 --- a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.netbeans-base +++ /dev/null @@ -1,276 +0,0 @@ -package com.fp.frontend.helper; - -import java.security.MessageDigest; -import java.util.Map; - -import javax.ejb.EJB; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpSession; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.facadeclient.helper.ServiceLocatorJsf; -import com.fp.frontend.controller.security.LoginController; - -/** - * Clase utilitaria que se encarga de ejecutar acciones en el core. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class CallerHelper { - - @EJB - private FacadeBeanJsfRemote fremote; - - private final Request request; - - public CallerHelper() throws Exception { - // se utiliza en el login - this.request = new Request(); - } - - /** - * Constructor de la clase utilitaria para realizar las peticiones hacia el core - * - * @param facesContext - * @throws Exception - */ - public CallerHelper(FacesContext facesContext) throws Exception { - LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController"); - Map params = facesContext.getExternalContext().getRequestParameterValuesMap(); - String m = ""; - Integer t = 0; - Integer v = 0; - if ((params.get("m") == null) && (params.get("t") == null) ) { - // Object[] tran = (Object[])params.get("tran"); ejemplo de prametros de un dialogo en runtime ejemplo LOV. - m = logincontroler.getRequest().getTransactionModule(); - t = logincontroler.getRequest().getTransactionCode(); - v = logincontroler.getRequest().getTransactionVersion(); - } else { - Object[] maux = params.get("m"); - Object[] taux = params.get("t"); - Object[] vaux = params.get("v"); - m = (String) maux[0]; - t = Integer.valueOf((String) taux[0]); - v = Integer.valueOf((String) vaux[0]); - logincontroler.getRequest().setTransactionModule(m); - logincontroler.getRequest().setTransactionCode(t); - logincontroler.getRequest().setTransactionVersion(v); - } - - this.request = new Request(); - try { - logincontroler.fijaRequestData(this.request, m, t, v); - } catch (NullPointerException e) { - Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO"); - MessageHelper.setMessageError(r); - } - } - - /** - * Metodo que ejecuta consultas, en el core de maia. - * - * @param request Request que contiene la metadata de consultas. - * @return Response - * @throws Throwable - */ - public Response executeQuery(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querybean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response executeSave(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public boolean executeReport(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("reportbean"); - Object resp = this.fremote.process(request); - return (Boolean)resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response login(Request request, String user, String password) throws Throwable { - request.setUser(user); - request.put("itemValue", this.getPasswordEncriptado(password)); - request.setTransactionModule("1"); - request.setTransactionCode(9998); - request.setTransactionVersion(1); - request.put("querytype", "T"); - HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); - request.modifiedData().put("jsessionid", session.getId()); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response loginCas(Request request, String user, String password) throws Throwable { - request.put("itemValue", this.getPasswordEncriptado(password)); - request.setTransactionModule("1"); - request.setTransactionCode(9997); - request.setTransactionVersion(1); - request.put("querytype", "T"); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response logout(Request request) throws Throwable { - request.setTransactionModule("1"); - request.setTransactionCode(9999); - request.setTransactionVersion(1); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Entrega el password encriptado. - * @param password Password a encriptar. - * @return String - * @throws Exception - */ - public String getPasswordEncriptado(String password) throws Exception { - if(password==null){ - return null; - } - MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); - messageDigest.reset(); - messageDigest.update(password.getBytes()); - String encriptado = toHexadecimal(messageDigest.digest()); - return encriptado; - } - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response menu(Request request) throws Throwable { - Request rq = new Request(); - rq.setCompany(request.getCompany()); - rq.setProfile(request.getProfile()); - rq.setLanguage(request.getLanguage()); - rq.setTransactionModule(null); - rq.setTransactionCode(null); - rq.setTransactionVersion(null); - rq.put("querytype", "P"); - rq.put("queryalias", "MENU"); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(rq); - return resp; - } - - private static String toHexadecimal(byte[] digest) { - String hash = ""; - for (byte aux : digest) { - int b = aux & 0xff; - if (Integer.toHexString(b).length() == 1) { - hash += "0"; - } - hash += Integer.toHexString(b); - } - return hash; - } - - /** - * Verifica el parametro de la pagina autoquery es Y. - * - * @return boolean - * @throws Exception - */ - public boolean isautoquery() throws Exception { - Map m = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); - if ((m.get("autoquery") != null) && "Y".equals(m.get("autoquery"))) { - return true; - } - return false; - } - - /** - * Entrega el valor de un parametro del lov. Si no existe retorna null. - * - * @param parametername Nombre del parametro. - * @return String. - * @throws Exception - */ - public static String getLovParameter(String parametername) throws Exception { - Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap(); - String[] obj = params.get(parametername); - if (obj == null) { - return null; - } - return obj[0]; - } - - /** - * Entrega el valor de: request - * - * @return Request - */ - public Request getRequest() { - return this.request; - } - - public Request getNewRequest(String module, Integer transaction, Integer version) throws Exception { - FacesContext facesContext = FacesContext.getCurrentInstance(); - LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController"); - - Request newRequest = new Request(); - try { - logincontroler.fijaRequestData(newRequest, module, transaction, version); - } catch (NullPointerException e) { - Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO"); - MessageHelper.setMessageError(r); - } - return newRequest; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.svn-base b/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.svn-base deleted file mode 100644 index 2c21fa0..0000000 --- a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/CallerHelper.java.svn-base +++ /dev/null @@ -1,276 +0,0 @@ -package com.fp.frontend.helper; - -import java.security.MessageDigest; -import java.util.Map; - -import javax.ejb.EJB; -import javax.faces.context.FacesContext; -import javax.servlet.http.HttpSession; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.facadeclient.ejb.FacadeBeanJsfRemote; -import com.fp.facadeclient.helper.ServiceLocatorJsf; -import com.fp.frontend.controller.security.LoginController; - -/** - * Clase utilitaria que se encarga de ejecutar acciones en el core. - * - * @author Jorge Vaca. - * @version 2.1 - */ -public class CallerHelper { - - @EJB - private FacadeBeanJsfRemote fremote; - - private final Request request; - - public CallerHelper() throws Exception { - // se utiliza en el login - this.request = new Request(); - } - - /** - * Constructor de la clase utilitaria para realizar las peticiones hacia el core - * - * @param facesContext - * @throws Exception - */ - public CallerHelper(FacesContext facesContext) throws Exception { - LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController"); - Map params = facesContext.getExternalContext().getRequestParameterValuesMap(); - String m = ""; - Integer t = 0; - Integer v = 0; - if ((params.get("m") == null) && (params.get("t") == null) ) { - // Object[] tran = (Object[])params.get("tran"); ejemplo de prametros de un dialogo en runtime ejemplo LOV. - m = logincontroler.getRequest().getTransactionModule(); - t = logincontroler.getRequest().getTransactionCode(); - v = logincontroler.getRequest().getTransactionVersion(); - } else { - Object[] maux = params.get("m"); - Object[] taux = params.get("t"); - Object[] vaux = params.get("v"); - m = (String) maux[0]; - t = Integer.valueOf((String) taux[0]); - v = Integer.valueOf((String) vaux[0]); - logincontroler.getRequest().setTransactionModule(m); - logincontroler.getRequest().setTransactionCode(t); - logincontroler.getRequest().setTransactionVersion(v); - } - - this.request = new Request(); - try { - logincontroler.fijaRequestData(this.request, m, t, v); - } catch (NullPointerException e) { - Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO"); - MessageHelper.setMessageError(r); - } - } - - /** - * Metodo que ejecuta consultas, en el core de maia. - * - * @param request Request que contiene la metadata de consultas. - * @return Response - * @throws Throwable - */ - public Response executeQuery(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querybean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response executeSave(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public boolean executeReport(Request request) throws Throwable { - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("reportbean"); - Object resp = this.fremote.process(request); - return (Boolean)resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response login(Request request, String user, String password) throws Throwable { - request.setUser(user); - request.put("itemValue", this.getPasswordEncriptado(password)); - request.setTransactionModule("1"); - request.setTransactionCode(9998); - request.setTransactionVersion(1); - request.put("querytype", "T"); - HttpSession session = (HttpSession) FacesContext.getCurrentInstance().getExternalContext().getSession(false); - request.modifiedData().put("jsessionid", session.getId()); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response loginCas(Request request, String user, String password) throws Throwable { - request.put("itemValue", this.getPasswordEncriptado(password)); - request.setTransactionModule("1"); - request.setTransactionCode(9997); - request.setTransactionVersion(1); - request.put("querytype", "T"); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response logout(Request request) throws Throwable { - request.setTransactionModule("1"); - request.setTransactionCode(9999); - request.setTransactionVersion(1); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("savebean"); - Response resp = (Response) this.fremote.process(request); - return resp; - } - - /** - * Entrega el password encriptado. - * @param password Password a encriptar. - * @return String - * @throws Exception - */ - public String getPasswordEncriptado(String password) throws Exception { - if(password==null){ - return null; - } - MessageDigest messageDigest = MessageDigest.getInstance("SHA-1"); - messageDigest.reset(); - messageDigest.update(password.getBytes()); - String encriptado = toHexadecimal(messageDigest.digest()); - return encriptado; - } - /** - * Metodo que ejecuta insert, update, delete, en el core de maia. - * - * @param request Request que contiene la metadata del mantenimiento - * @return Response - * @throws Throwable - */ - public Response menu(Request request) throws Throwable { - Request rq = new Request(); - rq.setCompany(request.getCompany()); - rq.setProfile(request.getProfile()); - rq.setLanguage(request.getLanguage()); - rq.setTransactionModule(null); - rq.setTransactionCode(null); - rq.setTransactionVersion(null); - rq.put("querytype", "P"); - rq.put("queryalias", "MENU"); - // siempre obtener una referencia al ejb de consulta del servicelocator. - this.fremote = ServiceLocatorJsf.getInstance().getFacadeRemote("querywithcommitbean"); - Response resp = (Response) this.fremote.process(rq); - return resp; - } - - private static String toHexadecimal(byte[] digest) { - String hash = ""; - for (byte aux : digest) { - int b = aux & 0xff; - if (Integer.toHexString(b).length() == 1) { - hash += "0"; - } - hash += Integer.toHexString(b); - } - return hash; - } - - /** - * Verifica el parametro de la pagina autoquery es Y. - * - * @return boolean - * @throws Exception - */ - public boolean isautoquery() throws Exception { - Map m = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterMap(); - if ((m.get("autoquery") != null) && "Y".equals(m.get("autoquery"))) { - return true; - } - return false; - } - - /** - * Entrega el valor de un parametro del lov. Si no existe retorna null. - * - * @param parametername Nombre del parametro. - * @return String. - * @throws Exception - */ - public static String getLovParameter(String parametername) throws Exception { - Map params = FacesContext.getCurrentInstance().getExternalContext().getRequestParameterValuesMap(); - String[] obj = params.get(parametername); - if (obj == null) { - return null; - } - return obj[0]; - } - - /** - * Entrega el valor de: request - * - * @return Request - */ - public Request getRequest() { - return this.request; - } - - public Request getNewRequest(String module, Integer transaction, Integer version) throws Exception { - FacesContext facesContext = FacesContext.getCurrentInstance(); - LoginController logincontroler = (LoginController) facesContext.getExternalContext().getSessionMap().get("loginController"); - - Request newRequest = new Request(); - try { - logincontroler.fijaRequestData(newRequest, module, transaction, version); - } catch (NullPointerException e) { - Response r = new Response("BGEN-0000", "USUARIO NO HA INICIADO SESSION DE TRABAJO"); - MessageHelper.setMessageError(r); - } - return newRequest; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/MessageHelper.java.svn-base b/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/MessageHelper.java.svn-base deleted file mode 100644 index b215ab9..0000000 --- a/frontend/src/main/java/com/fp/frontend/helper/.svn/text-base/MessageHelper.java.svn-base +++ /dev/null @@ -1,223 +0,0 @@ -package com.fp.frontend.helper; - -import javax.faces.application.FacesMessage; -import javax.faces.context.FacesContext; - -import com.fp.common.exception.ExceptionHandler; -import com.fp.dto.Response; -import com.fp.frontend.utility.MsgGeneral; - -/** - * Clase a extender en las clases encargadas de obtener direcciones email a las cuales se envía notificaciones de flujos - * de trabajo.. - * - * @version 2.1 - * @author Jorge Vaca - */ -public class MessageHelper { - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageError(Response response) { - MessageHelper.setMessage(response, FacesMessage.SEVERITY_ERROR); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageInfo(Response response) { - MessageHelper.setMessage(response, FacesMessage.SEVERITY_INFO); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente agregado un parametro. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - * @param parametro Parametro a mostrar adjunto al mensaje - */ - public static void setMessageInfo(Response response, String parametro) { - MessageHelper.setMessage(response, FacesMessage.SEVERITY_INFO, parametro); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageInfo(String messagecode, String idComponent, Object... parameters) { - MessageHelper.setMessage(FacesMessage.SEVERITY_INFO, messagecode, idComponent, parameters); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageError(String messagecode, Object... parameters) { - MessageHelper.setMessageError(messagecode, null, parameters); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - * @param filename Nombre del campo al cual se asocia el mensaje de error. - */ - public static void setMessageError(String messagecode, String idComponent, Object... parameters) { - MessageHelper.setMessage(FacesMessage.SEVERITY_ERROR, messagecode, idComponent, parameters); - FacesContext.getCurrentInstance().validationFailed(); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageWarn(String messagecode, Object... parameters) { - MessageHelper.setMessageWarn(messagecode, null, parameters); - } - - /** - * Manejo de mensaje de advertencia bajo alguna condicion. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - * @param filename Nombre del campo al cual se asocia el mensaje de error. - */ - public static void setMessageWarn(String messagecode, String idComponent, Object... parameters) { - MessageHelper.setMessage(FacesMessage.SEVERITY_WARN, messagecode, idComponent, parameters); - FacesContext.getCurrentInstance().validationFailed(); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - * @param filename Nombre del campo al cual se asocia el mensaje de error. - */ - private static void setMessage(FacesMessage.Severity type, String messagecode, String idComponent, Object... parameters) { - String message = messagecode; - try { - message = MsgGeneral.getProperty(messagecode, parameters); - } catch (Exception e) { - // NO hacer nada se presenta el codigo de mensaje. - } - - MessageHelper.setMessage(message, type, idComponent); - FacesContext.getCurrentInstance().validationFailed(); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - public static void setMessageWarn(Response response) { - MessageHelper.setMessage(response, FacesMessage.SEVERITY_WARN); - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - private static void setMessage(Response response, FacesMessage.Severity type) { - try { - FacesMessage fm = new FacesMessage(); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - fm.setSummary("TRANSACCION FINALIZADA"); - } else { - fm.setSummary(response.getResponseCode() + " " + response.getResponseUserMessage()); - FacesContext.getCurrentInstance().validationFailed(); - } - - fm.setDetail(""); - fm.setSeverity(type); // con esto saca la imagen en el browser. - FacesContext.getCurrentInstance().addMessage(null, fm); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Manejo de un mensaje personalizado - * @param message - */ - public static void setMessageInfo(String message){ - try { - FacesMessage fm = new FacesMessage(); - fm.setSummary(message); - FacesContext.getCurrentInstance().addMessage(null, fm); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - * @param severity Severity error - * @param param valor a mostrar adjunto al mensaje - */ - private static void setMessage(Response response, FacesMessage.Severity type, String param) { - try { - FacesMessage fm = new FacesMessage(); - if (response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - fm.setSummary("TRANSACCION FINALIZADA "+param); - } else { - fm.setSummary(response.getResponseCode() + " " + response.getResponseUserMessage()); - FacesContext.getCurrentInstance().validationFailed(); - } - - fm.setDetail(""); - fm.setSeverity(type); // con esto saca la imagen en el browser. - FacesContext.getCurrentInstance().addMessage(null, fm); - - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Manejo del mensaje de respuesta cuando en la ejecucion de una transaccion se presenta una excepcion. - * - * @param ex - */ - public static void setMessageError(Throwable ex) { - try { - ExceptionHandler eh = new ExceptionHandler(ex, "es"); - FacesMessage fm = new FacesMessage(); - fm.setSummary(eh.getUserMessage()); - fm.setDetail(eh.getTechnicalMessage()); - fm.setSeverity(FacesMessage.SEVERITY_ERROR); - FacesContext.getCurrentInstance().addMessage(null, fm); - ex.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - } - - /** - * Manejo de mensaje de error cuando en el core una transaccion no finaliza correctamente. - * - * @param response Objeto que contiene la respuesta de la ejecucion de una transaccion. - */ - private static void setMessage(String messagecode, FacesMessage.Severity type, String idComponent) { - try { - FacesMessage fm = new FacesMessage(); - fm.setSummary(messagecode); - fm.setDetail(""); - fm.setSeverity(type); - - FacesContext.getCurrentInstance().addMessage(idComponent, fm); - } catch (Exception e) { - e.printStackTrace(); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/prueba/.svn/entries b/frontend/src/main/java/com/fp/frontend/prueba/.svn/entries deleted file mode 100644 index 6470c57..0000000 --- a/frontend/src/main/java/com/fp/frontend/prueba/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/prueba -svn://172.17.26.185/COMACO - - - -2014-10-25T06:58:33.492240Z -1945 -cguzman - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ValidarDepositoFlowController.java -file - - - - -2022-07-28T03:40:00.196619Z -0aa95bcdcfb6810f2664beb453b0e1c2 -2014-09-12T08:01:36.959332Z -700 -fpazmino - - - - - - - - - - - - - - - - - - - - - -8869 - -PruebaInicioFlujo.java -file - - - - -2022-07-28T03:40:00.196619Z -1b5607398b3721daf5fa12fc04d690ac -2014-10-25T06:58:33.492240Z -1945 -cguzman - - - - - - - - - - - - - - - - - - - - - -4529 - diff --git a/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/PruebaInicioFlujo.java.svn-base b/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/PruebaInicioFlujo.java.svn-base deleted file mode 100644 index dcb4988..0000000 --- a/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/PruebaInicioFlujo.java.svn-base +++ /dev/null @@ -1,143 +0,0 @@ -package com.fp.frontend.prueba; - -import java.util.HashMap; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.AbstractDataTransport; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.frontend.utility.MsgGeneral; - -/** - * Clase controladora para la verificacion de los requisitos del tramite. - * - * @author C.P. - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class PruebaInicioFlujo extends AbstractController { - - public PruebaInicioFlujo() throws Exception { - super(AbstractDataTransport.class); - } - - @PostConstruct - private void postconstruct() { - - try { - this.init(); - // Inicializa autoconsulta - super.startQuery(); - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - } - - - /** - * Metodo para cargar el registro de la solicitud tramite en la lista new - */ - - @Override - public void save() { - try { - System.out.println("--------------------------prueba------------------"); - Request request = callerhelper.getRequest(); - HashMap msave = new HashMap(); - request.setSaveTables(msave); - request.modifiedData().put("csolicitud", "1"); - request.modifiedData().put("isnew", "Y"); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - MessageHelper.setMessageInfo(resp); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - - - @Override - protected void querydatabase() { - try { - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void iniciarFlujo() { - try { - - Request request = callerhelper.getRequest(); - super.cleanRequest(request); - request.modifiedData().put("csolicitud", "1"); - request.modifiedData().put("numerotransaccion", "32"); - request.modifiedData().put("xpath", "emisiondocumentohabilitante"); - request.modifiedData().put("isnew", "Y"); - Response resp = callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.setShowRow(true); - MessageHelper.setMessageInfo(resp, MsgGeneral.getProperty("msg_initFlow") + " SOLICITUD: 1 " ); - } else { - MessageHelper.setMessageError(resp); - } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Método para el inicio de flujo - */ - public void completarTarea() { - - try { -// Request request = callerhelper.getRequest(); -// // limpiar request para finalizar la tarea. -// super.cleanRequest(request); -// -// request.modifiedData().put("csolicitud", solicitud.getRecord().getPk()); -// request.modifiedData().put("TID", tid); -// request.modifiedData().put("BPMStatus", bpmDataStatus == null ? "A" : bpmDataStatus); // A,D,R -// request.modifiedData().put("BPMObs", bpmDataComment); -// -// Response resp = callerhelper.executeSave(request); -// -// if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { -// MessageHelper.setMessageInfo(resp); -// RequestContext.getCurrentInstance().execute("Maia.refreshusertasks()"); -// } else { -// MessageHelper.setMessageError(resp); -// } - } catch (Throwable e) { - MessageHelper.setMessageError(e); - } - } - - @Override - public void postCommit(Response response) throws Exception { - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/ValidarDepositoFlowController.java.svn-base b/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/ValidarDepositoFlowController.java.svn-base deleted file mode 100644 index 2a4dc83..0000000 --- a/frontend/src/main/java/com/fp/frontend/prueba/.svn/text-base/ValidarDepositoFlowController.java.svn-base +++ /dev/null @@ -1,283 +0,0 @@ -package com.fp.frontend.prueba; - -import java.util.Calendar; -import java.util.HashMap; -import java.util.List; - -import javax.annotation.PostConstruct; -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ManagedProperty; -import javax.faces.bean.ViewScoped; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.dto.save.DtoSave; -import com.fp.frontend.controller.AbstractController; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.controller.armas.parametros.IngresoDatosTipoTramite; -import com.fp.frontend.controller.armas.solicitud.SolicitudArmasController; -import com.fp.frontend.controller.armas.solicitud.SolicitudTramiteController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmTramite; -import com.fp.persistence.parmas.soli.TarmSolicitud; -import com.fp.persistence.parmas.soli.TarmSolicitudTramite; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; - -/** - * Clase controladora para la validacion del deposito - * - * @author CHRISTIAN PAZMINO - * @version 2.1 - */ -@SuppressWarnings("serial") -@ManagedBean -@ViewScoped -public class ValidarDepositoFlowController extends AbstractController { - -private String csolicitud="1"; - - /** - * Variable del tipo TgeneCatalogDetail(catalogo del tramite) - */ - private TgeneCatalogDetail nombreTramite; - /** - * Variable del tipo TgeneCatalogDetail(catalogo de la categoria) - */ - private TgeneCatalogDetail nombreCategoria; - /** - * Variable del tipo TgeneCatalogDetail(catalogo del uso actividad del tramite) - */ - private TgeneCatalogDetail nombreUsoActividad; - /** - * Opciones de aceptar o rechazar - */ - private List accionList; - - @ManagedProperty(value = "#{alfrescoController}") - private AlfrescoController alfrescoController; - - private TarmSolicitud solicitud; - - private String accionTomada; - - private final String APROBAR = "APR"; - private final String REPROBAR = "RECH"; - - private final String APROBAR_DEPOSITO = "APBDEP"; - private final String ANULAR_DEPOSITO = "ANUDEP"; - - /** - * Variable que indica si el usuario esta negado para continuar en la pantalla - */ - private Boolean isDenied; - - /** - * Variable auxiliar usada para diferenciar cuando se presenta o no el mensaje de validacion de fecha expiracion solicitud - */ - private Boolean isOnlyMsj; - - public ValidarDepositoFlowController() throws Exception { - super(TarmSolicitudTramite.class); - } - - @PostConstruct - private void postconstruct() { - init(); - } - - /** - * Incializa el controlador, cuando se esta utilizando una pagina que utliza el controlador. - */ - private void init() { - this.beanalias = "VALIDARDEPOSITO"; - accionList=CatalogDetailController.find("ACCION"); - this.record = SolicitudTramiteController.findByCSolicitud(csolicitud); - isOnlyMsj = false; - try { - isDenied = true; - if(record!=null){ - solicitud = SolicitudArmasController.find(csolicitud); - if(solicitud!=null && solicitud.getCtramite()!=null){ - TarmTramite tramite = IngresoDatosTipoTramite.find(solicitud.getCtramite().toString()); - if(tramite!=null){ - //Tramite - nombreTramite= CatalogDetailController.findxCodigoCodcatalogo(tramite.getTipotramite(), tramite.getTipotramitecodigo()); - nombreCategoria= CatalogDetailController.findxCodigoCodcatalogo(tramite.getCategoria(), tramite.getCategoriacodigo()); - nombreUsoActividad= CatalogDetailController.findxCodigoCodcatalogo(tramite.getUsoactividad(), tramite.getUsoactividadcodigo()); - } - else{ - MessageHelper.setMessageError("NO EXISTE UN TIPO DE TR\u00c1MITE ASOCIADO A LA SOLICITUD"); - } - } - else{ - MessageHelper.setMessageError("NO EXISTE UNA SOLICITUD ASOCIADA AL TR\u00c1MITE"); - } - } - else{ - MessageHelper.setMessageError("NO EXISTE EL TR\u00c1MITE EN LA BASE DE DATOS"); - } - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - public void cancelar(){ - init(); - } - - @Override - public void save() { - try { - if(accionTomada.equalsIgnoreCase(APROBAR)){ - record.setEstadotramite(APROBAR_DEPOSITO); - }else{ - record.setEstadotramite(ANULAR_DEPOSITO); - } - super.update(); - DtoSave dtosave = super.getDtoSave(); - HashMap msave = new HashMap(); - Request request = this.callerhelper.getRequest(); - msave.put(this.beanalias, dtosave); // adicionar metadata de mantenimiento para cada tabla. - - request.setSaveTables(msave); - Response resp = this.callerhelper.executeSave(request); - if (resp.getResponseCode().compareTo(Response.RESPONSE_OK) == 0) { - this.postCommit(resp); - MessageHelper.setMessageInfo(resp); - isDenied = true; - } else { - MessageHelper.setMessageError(resp); - } - } catch (Exception e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } catch (Throwable e) { - // TODO Auto-generated catch block - e.printStackTrace(); - } - } - - @Override - protected void querydatabase() { - try { - - } catch (Exception e) { - MessageHelper.setMessageError(e); - } - } - - /** - * Retorna la ruta de documento base en donde se almacenará dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase() { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(solicitud.getFregistro()); - StringBuilder ruta = new StringBuilder("cm:Solicitudes"); - ruta = ruta.append("/cm:").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - return ruta.toString(); - } - - /** - * Metodo para validar el valor a pagar - */ - public void validarValorDelDeposito(){ - if(record.getValorapagar().compareTo(record.getValorverificado())!=0){ - MessageHelper.setMessageError("EL VALOR VERIFICADO ES DIFERENTE DEL VALOR A PAGAR Y SE ANULAR"); - } - } - - public AlfrescoController getAlfrescoController() { - return alfrescoController; - } - - public void setAlfrescoController(AlfrescoController alfrescoController) { - this.alfrescoController = alfrescoController; - } - - public String getCsolicitud() { - return csolicitud; - } - - public void setCsolicitud(String csolicitud) { - this.csolicitud = csolicitud; - } - - public TgeneCatalogDetail getNombreTramite() { - return nombreTramite; - } - - public void setNombreTramite(TgeneCatalogDetail nombreTramite) { - this.nombreTramite = nombreTramite; - } - - public TgeneCatalogDetail getNombreCategoria() { - return nombreCategoria; - } - - public void setNombreCategoria(TgeneCatalogDetail nombreCategoria) { - this.nombreCategoria = nombreCategoria; - } - - public TgeneCatalogDetail getNombreUsoActividad() { - return nombreUsoActividad; - } - - public void setNombreUsoActividad(TgeneCatalogDetail nombreUsoActividad) { - this.nombreUsoActividad = nombreUsoActividad; - } - - public TarmSolicitud getSolicitud() { - return solicitud; - } - - public void setSolicitud(TarmSolicitud solicitud) { - this.solicitud = solicitud; - } - - public Boolean getIsDenied() { - return isDenied; - } - - public void setIsDenied(Boolean isDenied) { - this.isDenied = isDenied; - } - - public Boolean getIsOnlyMsj() { - return isOnlyMsj; - } - - public void setIsOnlyMsj(Boolean isOnlyMsj) { - this.isOnlyMsj = isOnlyMsj; - } - - public List getAccionList() { - return accionList; - } - - public void setAccionList(List accionList) { - this.accionList = accionList; - } - - public String getAccionTomada() { - return accionTomada; - } - - public void setAccionTomada(String accionTomada) { - this.accionTomada = accionTomada; - } - - public void aceptar(){ - if(record.getValorapagar().compareTo(record.getValorverificado())!=0){ - accionTomada = REPROBAR; - isDenied = true; - }else{ - accionTomada = ""; - isDenied = false; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/servlet/.svn/entries b/frontend/src/main/java/com/fp/frontend/servlet/.svn/entries deleted file mode 100644 index 2f6aa76..0000000 --- a/frontend/src/main/java/com/fp/frontend/servlet/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/servlet -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CloseSessionMaia.java -file - - - - -2022-07-28T03:39:56.104601Z -75e74198a57951546c9dfa65754d8b48 -2014-11-25T11:50:52.382306Z -3092 -gbenavides -has-props - - - - - - - - - - - - - - - - - - - - -2604 - -HelpServlet.java -file - - - - -2022-07-28T03:39:56.105601Z -bfad079a4f4bd41f81e54338eb44a792 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5779 - -LogoutServlet.java -file - - - - -2022-07-28T03:39:56.105601Z -5c95d6e2d58ae4a7b6b11a223fd86de9 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1935 - diff --git a/frontend/src/main/java/com/fp/frontend/servlet/.svn/prop-base/CloseSessionMaia.java.svn-base b/frontend/src/main/java/com/fp/frontend/servlet/.svn/prop-base/CloseSessionMaia.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/servlet/.svn/prop-base/CloseSessionMaia.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/CloseSessionMaia.java.svn-base b/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/CloseSessionMaia.java.svn-base deleted file mode 100644 index 78e4bf8..0000000 --- a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/CloseSessionMaia.java.svn-base +++ /dev/null @@ -1,68 +0,0 @@ -package com.fp.frontend.servlet; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import com.fp.frontend.controller.security.LoginController; - -/** - * Clase que se encarga de convertir cerrar la session del usuario al monento de cerrar el browser.. - * @author Jorge Vaca. - * @version 2.1 - */ -@WebServlet(name = "closeSessionMaia", urlPatterns = { "/closeSessionMaia" }) -public class CloseSessionMaia extends HttpServlet { - - private static final long serialVersionUID = 1L; - - /** - * Handles the HTTP GET method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - this.processRequest(request, response); - } - - /** - * Handles the HTTP POST method. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - this.processRequest(request, response); - } - - /** - * Processes requests for both HTTP GET and POST methods. - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - try { - LoginController loginController = (LoginController) request.getSession().getAttribute("loginController"); - if (loginController != null) { - loginController.updateusesession(); - request.getSession().invalidate(); - loginController = null; - } -// loginController.logout(); - } catch (Exception e) { - // no hace nada la session esta cerrada. - e.printStackTrace(); - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/HelpServlet.java.svn-base b/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/HelpServlet.java.svn-base deleted file mode 100644 index 0ad7241..0000000 --- a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/HelpServlet.java.svn-base +++ /dev/null @@ -1,158 +0,0 @@ -package com.fp.frontend.servlet; - -import java.io.IOException; -import java.io.InputStream; -import java.io.OutputStream; -import java.io.PrintWriter; -import java.io.StringWriter; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; - -import org.apache.commons.io.IOUtils; -import org.apache.commons.lang.StringEscapeUtils; - -import com.fp.frontend.controller.alfresco.AlfrescoController; - - -/** - * Servlet que se encarga de abrir la ayuda - * - * @author WPA - */ -@WebServlet(name = "HelpServlet", urlPatterns = {"/HelpServlet"}) -public class HelpServlet extends HttpServlet { - - private static final long serialVersionUID = 6934418044442466664L; - private boolean shuttingDown = false; - - //Access methods for shuttingDown - protected synchronized void setShuttingDown(boolean flag) { - shuttingDown = flag; - } - - protected synchronized boolean isShuttingDown() { - return shuttingDown; - } - - /** - * Processes requests for both HTTP - * GET and - * POST methods. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - protected void processRequest(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - OutputStream outputStream = response.getOutputStream(); - response.setContentType("text/html"); - try { - response.setHeader("Pragma", "no-cache"); - - String module = request.getParameter("cmodule"); - String transaction = request.getParameter("ctransaction"); -// String version = request.getParameter("version"); - String path = request.getParameter("path"); - String name = "cm:help_"+module+"_"+transaction+".pdf"; - InputStream inputStream = AlfrescoController.getDocument(name, path); - response.setContentType("application/pdf"); - - if (inputStream != null) { - - IOUtils.copy(inputStream, outputStream); - IOUtils.closeQuietly(inputStream); - IOUtils.closeQuietly(outputStream); - - outputStream.flush(); - } else { - PrintWriter printWriter = new PrintWriter(outputStream); - printWriter.println(""); - printWriter.println(""); - printWriter.println("Ayuda"); - printWriter.println(""); - printWriter.println(""); - printWriter.println("

      Archivo " + name + ".pdf no disponible en el sistema

      "); - printWriter.println(""); - printWriter.println(""); - printWriter.write(""); - printWriter.close(); - } - } catch (Throwable ex) { - String mensaje = getStackTrace(ex); - if (mensaje == null) { - mensaje = ""; - } - PrintWriter printWriter = new PrintWriter(outputStream); - printWriter.println(""); - printWriter.println(""); - printWriter.println("Ayuda"); - printWriter.println(""); - printWriter.println(""); - printWriter.println("

      " + ex.getMessage() + "

      "); - printWriter.println("
      " + StringEscapeUtils.escapeHtml(mensaje) + "
      "); - printWriter.println(""); - printWriter.println(""); - printWriter.close(); - } finally { - outputStream.close(); - } - } - - /** - * Handles the HTTP - * POST method. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Handles the HTTP - * GET method. - * - * @param request servlet request - * @param response servlet response - * @throws ServletException if a servlet-specific error occurs - * @throws IOException if an I/O error occurs - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - processRequest(request, response); - } - - /** - * Método que devuelve la excepcion como tal - * - * @param ex - * @return - */ - public String getStackTrace(Throwable ex) { - try { - StringWriter sw = new StringWriter(); - PrintWriter pw = new PrintWriter(sw); - if (ex.getCause() != null) { - ex.getCause().printStackTrace(pw); - } else { - ex.printStackTrace(pw); - } - String data = sw.toString(); - pw.close(); - return data; - } catch (Exception e) { - return null; - } - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/LogoutServlet.java.svn-base b/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/LogoutServlet.java.svn-base deleted file mode 100644 index 280da86..0000000 --- a/frontend/src/main/java/com/fp/frontend/servlet/.svn/text-base/LogoutServlet.java.svn-base +++ /dev/null @@ -1,59 +0,0 @@ -package com.fp.frontend.servlet; - -import java.io.IOException; - -import javax.servlet.ServletException; -import javax.servlet.annotation.WebServlet; -import javax.servlet.http.HttpServlet; -import javax.servlet.http.HttpServletRequest; -import javax.servlet.http.HttpServletResponse; -import javax.servlet.http.HttpSession; - -import com.fp.frontend.controller.security.LoginController; - -/** - * Servlet implementation class LogoutServlet - */ -@WebServlet(name = "logoutServlet", urlPatterns = { "/logoutServlet" }) -public class LogoutServlet extends HttpServlet { - - private static final long serialVersionUID = 1L; - - /** - * @see HttpServlet#HttpServlet() - */ - public LogoutServlet() { - super(); - // TODO Auto-generated constructor stub - } - - /** - * @see HttpServlet#doGet(HttpServletRequest request, HttpServletResponse response) - */ - @Override - protected void doGet(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - this.logout(request, response); - } - - /** - * @see HttpServlet#doPost(HttpServletRequest request, HttpServletResponse response) - */ - @Override - protected void doPost(HttpServletRequest request, HttpServletResponse response) throws ServletException, IOException { - this.logout(request, response); - } - - public void logout(HttpServletRequest request, HttpServletResponse response) { - HttpSession httpSession = request.getSession(); - Object user = request.getParameter("user"); - Object cia = request.getParameter("cia"); - LoginController loginController = (LoginController) httpSession.getAttribute("loginController"); - if (loginController != null) { - loginController.updateusesession(); - httpSession.invalidate(); - loginController = null; - } - - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/entries b/frontend/src/main/java/com/fp/frontend/utility/.svn/entries deleted file mode 100644 index d1fa649..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/utility -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ConvertNumberToText.java -file - - - - -2022-07-28T03:39:56.086601Z -7463beff193d5e50d70ead5cd2a5765f -2022-01-20T04:13:16.137936Z -4661 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -6791 - -EnumParametros.java -file - - - - -2022-07-28T03:39:56.087601Z -9004a05a1a9d9c8b9c32d4171a2f581d -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -937 - -ValidateIdentification.java -file - - - - -2022-07-28T03:39:56.087601Z -f305cc437fca264db540cc807f2be5d3 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4085 - -MsgGeneral.java -file - - - - -2022-07-28T03:39:56.087601Z -d71888d6f8cdb8cf56918f5814f78f1b -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1039 - -LifeCicleListener.java -file - - - - -2022-07-28T03:39:56.087601Z -1adc06d837e90c56bc20db3066bcd8ed -2014-09-11T11:14:55.288252Z -686 -jvaca - - - - - - - - - - - - - - - - - - - - - -2266 - -Utilidades.java -file - - - - -2022-07-28T03:39:56.087601Z -660ebcc5022afddcb9489c3457d758f1 -2015-10-19T06:22:25.984481Z -4297 -fpazmino - - - - - - - - - - - - - - - - - - - - - -9339 - -TextAreaValidationRequired.java -file - - - - -2022-07-28T03:39:56.088601Z -d5eb9b413d47e2514c8cab1876646812 -2014-09-16T05:27:08.612141Z -820 -dcruz - - - - - - - - - - - - - - - - - - - - - -4151 - -Content.java -file - - - - -2022-07-28T03:39:56.088601Z -9744b987637961ce03a609a9c16b98dd -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1320 - -CommonTransformer.java -file - - - - -2022-07-28T03:39:56.088601Z -ee79f9500cbdd663a470015d5436c392 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -920 - -MsgControlArmas.java -file - - - - -2022-07-28T03:39:56.089601Z -176453b605c8b55b544ab545fc26aa35 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1003 - diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/CommonTransformer.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/CommonTransformer.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/CommonTransformer.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/MsgControlArmas.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/MsgControlArmas.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/prop-base/MsgControlArmas.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/CommonTransformer.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/CommonTransformer.java.svn-base deleted file mode 100644 index b58e095..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/CommonTransformer.java.svn-base +++ /dev/null @@ -1,38 +0,0 @@ -package com.fp.frontend.utility; - -import org.apache.commons.collections.Transformer; - -import com.fp.common.helper.BeanManager; - -/** - * Este transformador actuara como un accesor sobre los campos a los que tiene se indique en su constructor - * Servira para saber cuales son los criterios de busqueda en las colecciones - * @author dcruz - */ -public class CommonTransformer implements Transformer{ - - private String fieldName; - - public CommonTransformer(String fieldName){ - this.fieldName = fieldName; - } - - public Object transform(Object input) { - Object value = null; - try { - value = BeanManager.getBeanAttributeValue(input, fieldName); - } catch (Exception e) { - value = null; - } - return value; - } - - public String getFieldName() { - return fieldName; - } - - public void setFieldName(String fieldName) { - this.fieldName = fieldName; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Content.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Content.java.svn-base deleted file mode 100644 index 4155e53..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Content.java.svn-base +++ /dev/null @@ -1,80 +0,0 @@ -package com.fp.frontend.utility; - -/** - * Clase para utilitaria para el tipo de contenido - * - * @author BPTWPA - * - */ -public class Content { - - /** - * Atributo para el nombre - */ - private String nombre; - - /** - * Atributo para el content type - */ - private String contentType; - - /** - * atributo para la extension - */ - private String extension; - - public Content(String nombre, String contenType, String extension){ - this.nombre = nombre; - this.contentType = contenType; - this.extension = extension; - } - - /** - * Entrega el nombre - * @return nombre - */ - public String getNombre() { - return nombre; - } - - /** - * FIja el nombre - * @param nombre - */ - public void setNombre(String nombre) { - this.nombre = nombre; - } - - /** - * Entrega el contentType - * @return contentType - */ - public String getContentType() { - return contentType; - } - - /** - * Fija el contentType - * @param contentType - */ - public void setContentType(String contentType) { - this.contentType = contentType; - } - - /** - * Entrega el extension - * @return extension - */ - public String getExtension() { - return extension; - } - - /** - * Fija el extension - * @param extension - */ - public void setExtension(String extension) { - this.extension = extension; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/ConvertNumberToText.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/ConvertNumberToText.java.svn-base deleted file mode 100644 index 5a7f79f..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/ConvertNumberToText.java.svn-base +++ /dev/null @@ -1,178 +0,0 @@ -package com.fp.frontend.utility; -import java.math.RoundingMode; -import java.text.DecimalFormat; -import java.util.regex.Pattern; -/** - * @web http://jc-mouse.blogspot.com/ - * @author Mouse - */ -public abstract class ConvertNumberToText { - - private static final String[] UNIDADES = { "", "UN ", "DOS ", "TRES ", - "CUATRO ", "CINCO ", "SEIS ", "SIETE ", "OCHO ", "NUEVE ", "DIEZ ", - "ONCE ", "DOCE ", "TRECE ", "CATORCE ", "QUINCE ", "DIECISEIS", - "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE" }; - - private static final String[] DECENAS = { "VENTI", "TREINTA ", "CUARENTA ", - "CINCUENTA ", "SESENTA ", "SETENTA ", "OCHENTA ", "NOVENTA ", - "CIEN " }; - - private static final String[] CENTENAS = { "CIENTO ", "DOSCIENTOS ", - "TRESCIENTOS ", "CUATROCIENTOS ", "QUINIENTOS ", "SEISCIENTOS ", - "SETECIENTOS ", "OCHOCIENTOS ", "NOVECIENTOS " }; - - /** - * Convierte a letras un numero de la forma $123,456.32 - * - * @param number - * Numero en representacion texto - * @throws NumberFormatException - * Si valor del numero no es valido (fuera de rango o ) - * @return Numero en letras - */ - public static String convertNumberToLetter(String number) - throws NumberFormatException { - return convertNumberToLetter(Double.parseDouble(number)); - } - - /** - * Convierte un numero en representacion numerica a uno en representacion de - * texto. El numero es valido si esta entre 0 y 999'999.999 - * - * @param number - * Numero a convertir - * @return Numero convertido a texto - * @throws NumberFormatException - * Si el numero esta fuera del rango - */ - public static String convertNumberToLetter(double doubleNumber) - throws NumberFormatException { - - StringBuilder converted = new StringBuilder(); - - String patternThreeDecimalPoints = "#,###"; - - DecimalFormat format = new DecimalFormat(patternThreeDecimalPoints); - format.setRoundingMode(RoundingMode.DOWN); - - // formateamos el numero, para ajustarlo a el formato de tres puntos - // decimales - String formatedDouble = format.format(doubleNumber); - doubleNumber = Double.parseDouble(formatedDouble); - - // Validamos que sea un numero legal - if (doubleNumber > 999999999) - throw new NumberFormatException( - "El numero es mayor de 999'999.999, " - + "no es posible convertirlo"); - - if (doubleNumber < 0) - throw new NumberFormatException("El numero debe ser positivo"); - - String splitNumber[] = String.valueOf(doubleNumber).replace('.', '#') - .split("#"); - - // Descompone el trio de millones - int millon = Integer.parseInt(String.valueOf(getDigitAt(splitNumber[0], - 8)) - + String.valueOf(getDigitAt(splitNumber[0], 7)) - + String.valueOf(getDigitAt(splitNumber[0], 6))); - if (millon == 1) - converted.append("UN MILLON "); - else if (millon > 1) - converted.append(convertNumber(String.valueOf(millon)) - + "MILLONES "); - - // Descompone el trio de miles - int miles = Integer.parseInt(String.valueOf(getDigitAt(splitNumber[0], - 5)) - + String.valueOf(getDigitAt(splitNumber[0], 4)) - + String.valueOf(getDigitAt(splitNumber[0], 3))); - if (miles == 1) - converted.append("MIL "); - else if (miles > 1) - converted.append(convertNumber(String.valueOf(miles)) + "MIL "); - - // Descompone el ultimo trio de unidades - int cientos = Integer.parseInt(String.valueOf(getDigitAt( - splitNumber[0], 2)) - + String.valueOf(getDigitAt(splitNumber[0], 1)) - + String.valueOf(getDigitAt(splitNumber[0], 0))); - if (cientos == 1) - converted.append("UN"); - - if (millon + miles + cientos == 0) - converted.append("CERO"); - if (cientos > 1) - converted.append(convertNumber(String.valueOf(cientos))); - - converted.append(MsgControlArmas.getProperty("lbl_dolares")); - - // Descompone los centavos - int centavos = Integer.parseInt(String.valueOf(getDigitAt( - splitNumber[1], 2)) - + String.valueOf(getDigitAt(splitNumber[1], 1)) - + String.valueOf(getDigitAt(splitNumber[1], 0))); - if (centavos == 1) - converted.append(" CON UN CENTAVO"); - else if (centavos > 1) - converted.append(" CON " + convertNumber(String.valueOf(centavos)) - + "CENTAVOS"); - - return converted.toString(); - } - - /** - * Convierte los trios de numeros que componen las unidades, las decenas y - * las centenas del numero. - * - * @param number - * Numero a convetir en digitos - * @return Numero convertido en letras - */ - private static String convertNumber(String number) { - - if (number.length() > 3) - throw new NumberFormatException( - "La longitud maxima debe ser 3 digitos"); - - // Caso especial con el 100 - if (number.equals("100")) { - return "CIEN"; - } - - StringBuilder output = new StringBuilder(); - if (getDigitAt(number, 2) != 0) - output.append(CENTENAS[getDigitAt(number, 2) - 1]); - - int k = Integer.parseInt(String.valueOf(getDigitAt(number, 1)) - + String.valueOf(getDigitAt(number, 0))); - - if (k <= 20) - output.append(UNIDADES[k]); - else if (k > 30 && getDigitAt(number, 0) != 0) - output.append(DECENAS[getDigitAt(number, 1) - 2] + "Y " - + UNIDADES[getDigitAt(number, 0)]); - else - output.append(DECENAS[getDigitAt(number, 1) - 2] - + UNIDADES[getDigitAt(number, 0)]); - - return output.toString(); - } - - /** - * Retorna el digito numerico en la posicion indicada de derecha a izquierda - * - * @param origin - * Cadena en la cual se busca el digito - * @param position - * Posicion de derecha a izquierda a retornar - * @return Digito ubicado en la posicion indicada - */ - private static int getDigitAt(String origin, int position) { - if (origin.length() > position && position >= 0) - return origin.charAt(origin.length() - position - 1) - 48; - return 0; - } - -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/EnumParametros.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/EnumParametros.java.svn-base deleted file mode 100644 index 6eb0e14..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/EnumParametros.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -package com.fp.frontend.utility; - -public enum EnumParametros { - /** - * Código del parámetro para los dias acumulados - */ - VIA_01("VIA_01"), - - /** - * Código del parámetro para el xPath de una carpeta Alfresco - */ - PATH_ALFRESCO("PATH_ALFRESCO"), - /** - * Código del parámetro para el xPath de la carpeta de ayuda Alfresco - */ - PATH_ALFRESCO_AYUDA("PATH_ALFRESCO_AYUDA"), - /** - * Codigo parametro almacen certificados - */ - PATH_CERTIFICADO_BCE("PATH_CERTIFICADO_BCE"); - ; - - /** - * Atributo para obtener el valor - */ - private String codigo; - - /** - * @param texto - * @param codigo - */ - private EnumParametros(String codigo) { - this.codigo = codigo; - } - - /** - * @return the texto - */ - public String getCodigo() { - return codigo; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/LifeCicleListener.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/LifeCicleListener.java.svn-base deleted file mode 100644 index 6c770d1..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/LifeCicleListener.java.svn-base +++ /dev/null @@ -1,80 +0,0 @@ -/** - * - */ -package com.fp.frontend.utility; - -import java.util.ResourceBundle; - -import javax.faces.component.UIComponent; -import javax.faces.event.PhaseEvent; -import javax.faces.event.PhaseId; -import javax.faces.event.PhaseListener; - -import org.primefaces.component.datatable.DataTable; - -/** - * @author Gbensvides - * - */ -public class LifeCicleListener implements PhaseListener { - - /** - * - */ - private static final long serialVersionUID = 1L; - private static ResourceBundle resource_bundleValidacion = ResourceBundle - .getBundle("validation_es"); - - /* (non-Javadoc) - * @see javax.faces.event.PhaseListener#afterPhase(javax.faces.event.PhaseEvent) - */ - @Override - public void afterPhase(PhaseEvent arg0) { - // TODO Auto-generated method stub - - } - - /* (non-Javadoc) - * @see javax.faces.event.PhaseListener#beforePhase(javax.faces.event.PhaseEvent) - */ - @Override - public void beforePhase(PhaseEvent arg0) { - // TODO Auto-generated method stub -// //System.out.println(arg0.getPhaseId().toString()); - if(arg0.getPhaseId().equals(PhaseId.RENDER_RESPONSE)) - { - processViewTree(arg0.getFacesContext().getViewRoot()); - } - } - - /* (non-Javadoc) - * @see javax.faces.event.PhaseListener#getPhaseId() - */ - @Override - public PhaseId getPhaseId() { - // TODO Auto-generated method stub - return PhaseId.ANY_PHASE; - } - - private void processViewTree(UIComponent component) { - - // //System.out.println(component.getClientId() + " " + component.getClass() ); - for (UIComponent child: component.getChildren()) { - - ////System.out.println("+ " + child.getId() + " ["+child.getClass()+"]"); - if(child instanceof DataTable) - { - DataTable table = (DataTable)child; - Object mensajeEmpty = table.getAttributes().get("emptyMessage"); - if(mensajeEmpty!=null && mensajeEmpty.equals("No records found.")){ - table.getAttributes().put("emptyMessage", resource_bundleValidacion.getString("org.primefaces.component.datatable.emptyMesssage")); - } - } - - // Process next node - processViewTree(child); - } - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgControlArmas.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgControlArmas.java.svn-base deleted file mode 100644 index 5b941aa..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgControlArmas.java.svn-base +++ /dev/null @@ -1,41 +0,0 @@ -package com.fp.frontend.utility; - -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -public class MsgControlArmas { - private static final String BUNDLE_NAME = "controlarmas_es"; - - private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); - - private MsgControlArmas() { - } - - public static String getProperty(String key) { - try { - return RESOURCE_BUNDLE.getString(key); - } catch (MissingResourceException e) { - return "Archivo:"+BUNDLE_NAME+" no encontrado"; - } catch (Throwable e) { - return null; - } - } - - public static String getProperty(String pKey, Object... pParameters) { - try { - String msg = null; - try{ - msg = RESOURCE_BUNDLE.getString(pKey); - }catch(Exception e){ - - } - if(msg == null){ - msg = pKey; - } - return MessageFormat.format(msg, pParameters); - } catch (Throwable e) { - return null; - } - } -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgGeneral.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgGeneral.java.svn-base deleted file mode 100644 index f39a1cf..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/MsgGeneral.java.svn-base +++ /dev/null @@ -1,48 +0,0 @@ -/** - * - */ -package com.fp.frontend.utility; - -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -/** - * @author amerchan - * - */ -public class MsgGeneral { - private static final String BUNDLE_NAME = "general_es"; - - private static final ResourceBundle RESOURCE_BUNDLE = ResourceBundle.getBundle(BUNDLE_NAME); - - private MsgGeneral() { - } - - public static String getProperty(String key) { - try { - return RESOURCE_BUNDLE.getString(key); - } catch (MissingResourceException e) { - return "Archivo:"+BUNDLE_NAME+" no encontrado"; - } catch (Throwable e) { - return null; - } - } - - public static String getProperty(String pKey, Object... pParameters) { - try { - String msg = null; - try{ - msg = RESOURCE_BUNDLE.getString(pKey); - }catch(Exception e){ - - } - if(msg == null){ - msg = pKey; - } - return MessageFormat.format(msg, pParameters); - } catch (Throwable e) { - return null; - } - } -} \ No newline at end of file diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/TextAreaValidationRequired.java.svn-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/TextAreaValidationRequired.java.svn-base deleted file mode 100644 index e472e45..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/TextAreaValidationRequired.java.svn-base +++ /dev/null @@ -1,125 +0,0 @@ -package com.fp.frontend.utility; - -import java.text.MessageFormat; -import java.util.MissingResourceException; -import java.util.ResourceBundle; - -import javax.faces.application.FacesMessage; -import javax.faces.component.UIInput; -import javax.faces.component.html.HtmlInputTextarea; -import javax.faces.context.FacesContext; -import javax.faces.event.AbortProcessingException; -import javax.faces.event.SystemEvent; -import javax.faces.event.SystemEventListener; - -import org.primefaces.context.RequestContext; - -//@ListenerFor(sourceClass = HtmlInputTextarea.class, systemEventClass = PostValidateEvent.class) -public class TextAreaValidationRequired implements SystemEventListener { - - private static ResourceBundle resource_bundle = ResourceBundle - .getBundle("controlarmas_es"); - - private static ResourceBundle resource_bundleValidacion = ResourceBundle - .getBundle("validation_es"); - - - - @Override - public boolean isListenerForSource(Object arg0) { - // TODO Auto-generated method stub - - if (arg0 instanceof HtmlInputTextarea) { - UIInput source = (UIInput) arg0; - if (source.isValid()) { - HtmlInputTextarea auxTextArea = ((HtmlInputTextarea) arg0); - if (auxTextArea.getAttributes().get("required").toString() - .equalsIgnoreCase("true")) - return true; - } - } - return false; - } - - @Override - public void processEvent(SystemEvent event) throws AbortProcessingException { - - // TODO Auto-generated method stub - if (event.getSource() instanceof HtmlInputTextarea) { - UIInput source = (UIInput) event.getSource(); - Object object = source.getAttributes().get("maxlength"); - FacesMessage message = new FacesMessage(); - message.setSeverity(FacesMessage.SEVERITY_ERROR); - if (object != null - && object.toString() != "" - && Integer.parseInt(object.toString()) < source.getValue() - .toString().length()) { - source.setValid(false); - RequestContext.getCurrentInstance().addCallbackParam("validationFailed", true); - String mensajeValidacion = getMessagesResources(resource_bundle, - "msg_tamanioMaximoExcedido", - new Object[] { source.getRequiredMessage()== null?"":source.getRequiredMessage(), - object.toString() }); - message.setSummary(mensajeValidacion); - message.setDetail(mensajeValidacion); - message.setSeverity(FacesMessage.SEVERITY_ERROR); - FacesContext.getCurrentInstance().addMessage( - source.getClientId(), message); - - return; - } - if (source.getValue() != null - && source.getValue().toString().trim().equals("")) { - - source.setValid(false); - if (FacesContext.getCurrentInstance().getPartialViewContext() - .isAjaxRequest()) { - RequestContext.getCurrentInstance().addCallbackParam("validationFailed", true); - String mensajeValidacion =null; - mensajeValidacion = source.getRequiredMessage(); - if(mensajeValidacion==null|| mensajeValidacion.equals("")){ - mensajeValidacion = getMessagesResources(resource_bundleValidacion, - "javax.faces.component.UIInput.REQUIRED", - new Object[] { source.getRequiredMessage(), - object.toString() }); - message.setSummary(mensajeValidacion); - - String mensajeValidacionDetalle = getMessagesResources(resource_bundleValidacion, - "javax.faces.component.UIInput.REQUIRED_detail", - new Object[] { source.getRequiredMessage(), - object.toString() }); - message.setDetail(mensajeValidacionDetalle); - } - - - message.setSummary(mensajeValidacion); - - message.setSeverity(FacesMessage.SEVERITY_ERROR); - FacesContext.getCurrentInstance().addMessage( - source.getClientId(), message); - return; - - } - - } - - } - - } - - private String getMessagesResources(ResourceBundle resourceBundle, String key, Object[] argumentos) { - String resourceString = ""; - try { - - resourceString = resourceBundle.getString(key); - - } catch (MissingResourceException e) { - return key; - } - MessageFormat format = new MessageFormat(resourceString); - - return format.format(argumentos); - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Utilidades.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Utilidades.java.netbeans-base deleted file mode 100644 index f88a0ed..0000000 --- a/frontend/src/main/java/com/fp/frontend/utility/.svn/text-base/Utilidades.java.netbeans-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.frontend.utility; - -import java.sql.Timestamp; -import java.text.DecimalFormat; -import java.text.ParseException; -import java.text.SimpleDateFormat; -import java.util.Calendar; -import java.util.Date; -import java.util.List; -import java.util.regex.Matcher; -import java.util.regex.Pattern; - -import javax.faces.bean.ManagedBean; -import javax.faces.bean.ViewScoped; -import javax.faces.context.FacesContext; - -import org.apache.commons.lang.StringUtils; -import org.apache.poi.ss.usermodel.Cell; - -import com.fp.frontend.controller.armas.parametros.CentroControlArmasController; -import com.fp.frontend.controller.armas.parametros.TarmCentroControlJurController; -import com.fp.frontend.controller.pcustomer.PersonAddressController; -import com.fp.frontend.controller.pgeneral.gene.CatalogDetailController; -import com.fp.frontend.helper.MessageHelper; -import com.fp.persistence.parmas.param.TarmCentroControl; -import com.fp.persistence.parmas.param.TarmCentroControlJur; -import com.fp.persistence.pcustomer.gene.TcustPersonAddress; -import com.fp.persistence.pgeneral.gene.TgeneCatalogDetail; -import com.fp.persistence.pgeneral.safe.TsafeUserDetail; - -@ManagedBean -@ViewScoped -public class Utilidades { - - - - /** - * Metodo para formatear los decimales que se encuentran dentro de un texto - * @param texto - * @return - */ - public static String formatearDecimalesEnTexto(String texto, String formato){//.177 - //NOTA:Se decide cambiar y no formatear los calibres como definicion de ultimo momento - -/* DecimalFormat fmt = new DecimalFormat(formato); - String patron ="(\\w+)?([0-9]+)?[\\.\\,]([0-9]+)(\\w+)?"; - Pattern p = Pattern.compile(patron); - Matcher m = p.matcher(texto); - String textoReemplazo=texto; - - while(m.find()) { - textoReemplazo = m.replaceFirst( (m.group(1)==null?"": m.group(1)) + fmt.format(Double.valueOf(m.group(2)!=null?m.group(2):"0" + "." +m.group(3))) + (m.group(4)!=null?m.group(4):"")); - } - - return textoReemplazo.replace(",", "."); */ - return texto; - } - - - public static Timestamp getFechaExpiracion() { - Timestamp fechaExpiracion = null; - Calendar calendar = Calendar.getInstance(); - calendar.set(Calendar.YEAR, 2999); - calendar.set(Calendar.MONTH, 11); - calendar.set(Calendar.DATE, 31); - calendar.set(Calendar.HOUR_OF_DAY, 0); - calendar.set(Calendar.MINUTE, 0); - calendar.set(Calendar.SECOND, 0); - calendar.set(Calendar.MILLISECOND, 0); - fechaExpiracion = new Timestamp(calendar.getTimeInMillis()); - return fechaExpiracion; - } - - /** - * Metodo para armar el formato de una fecha sin hora - * @param fechaCldr fecha en formato calendar - * @return - */ - public static String armarFormatoFechaSinHora(Calendar fechaCldr){ - return (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCldr.getTime()); - - } - - /** - * Metodo para armar el formato de una fecha sin hora - * @param fechaCldr fecha en formato Date - * @return - */ - public static String armarFormatoFechaSinHora(Date fechaCldr){ - return (new SimpleDateFormat("dd-MM-yyyy")).format(fechaCldr); - - } - - - - /** - * Metodo para transformar el formato de una fecha con hora - * @param fechaCldr - * @return - */ - public static String armarFormatoFechaConHora(Calendar fechaCldr){ - return (new SimpleDateFormat("dd-MM-yyyy HH:mm:ss")).format(fechaCldr.getTime()); - } - - /* Reemplazo un string los caracteres en blanco y reemplazo caracteres especiales - * @param toConvert - * @return la cadena convertida - */ - public static String obtieneNombreLimpio(String toConvert){ - return StringUtils.replaceEach(StringUtils.deleteWhitespace(toConvert), - new String[]{"\u00e1","\u00e9","\u00ed","\u00f3","\u00fa","\u00c1","\u00c9","\u00cd","\u00d3","\u00da","\u00F1","\u00d1"}, - new String[]{"a","e","i","o","u","A","E","I","O","U","n","N"}); - } - - /** - * recorta el nombre - * @param nombre - * @return - */ - public static String recorteNombre(String nombre){ - String fielname=nombre; - if(fielname.length()>30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * obtiene la extencion del archivo - * @param nombre - * @return - */ - private static String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Método que revisa si una cadena tiene caracteres especiales - * @param nombre - * @return - * @throws Exception - */ - public static String caractersEspeciales(String nombre) throws Exception{ - List caracteresEsp=CatalogDetailController.find("CARACTERESPECIAL"); - for(TgeneCatalogDetail caract:caracteresEsp){ - if(nombre.contains(caract.getPk().getCatalog())){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonocaracteresespeciales")+": "+caract.getPk().getCatalog()); - } - } - String numero="1234567890"; - if(numero.contains(nombre.substring(0, 1))){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebeiniciarconnum")); - } - if(nombre!=null && nombre.trim().contains(" ")){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebecontenerespaciosenblanco")); - } - if(nombre.length()<9){ - nombre="DOCUMENTO-"+nombre; -// throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebesermenoracincoletras")); - } - return nombre; - } - - /** - * Funcion que reemplaza acentos y caracteres especiales de una cadena de texto - * @param input - * @return cadena de texto limpia de acentos y caracteres especiales. - */ - public static String reemplazaAcentosCaractEspeciales(String input) { - // Cadena de caracteres original a sustituir. - String original = "u"; - // Cadena de caracteres ASCII que reemplazarn los originales. - String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC"; - String output = input; - for (int i=0; i30){ - fielname=fielname.substring(0,30)+extencionArchivo(nombre); - } - return fielname; - } - - /** - * obtiene la extencion del archivo - * @param nombre - * @return - */ - private static String extencionArchivo(String nombre){ - int pos=nombre.lastIndexOf('.'); - nombre=nombre.substring(pos); - return nombre; - } - - /** - * Método que revisa si una cadena tiene caracteres especiales - * @param nombre - * @return - * @throws Exception - */ - public static String caractersEspeciales(String nombre) throws Exception{ - List caracteresEsp=CatalogDetailController.find("CARACTERESPECIAL"); - for(TgeneCatalogDetail caract:caracteresEsp){ - if(nombre.contains(caract.getPk().getCatalog())){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonocaracteresespeciales")+": "+caract.getPk().getCatalog()); - } - } - String numero="1234567890"; - if(numero.contains(nombre.substring(0, 1))){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebeiniciarconnum")); - } - if(nombre!=null && nombre.trim().contains(" ")){ - throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebecontenerespaciosenblanco")); - } - if(nombre.length()<9){ - nombre="DOCUMENTO-"+nombre; -// throw new Exception(MsgControlArmas.getProperty("msg_error_elnombredelarchivonodebesermenoracincoletras")); - } - return nombre; - } - - /** - * Funcion que reemplaza acentos y caracteres especiales de una cadena de texto - * @param input - * @return cadena de texto limpia de acentos y caracteres especiales. - */ - public static String reemplazaAcentosCaractEspeciales(String input) { - // Cadena de caracteres original a sustituir. - String original = "u"; - // Cadena de caracteres ASCII que reemplazarn los originales. - String ascii = "aaaeeeiiiooouuunAAAEEEIIIOOOUUUNcC"; - String output = input; - for (int i=0; i 9){ - temp = temp.subtract(new BigDecimal("9")); - } - verif = verif.add(temp); - } - if (verif.doubleValue() % 10 == 0){ - if (Integer.parseInt(id.substring(9, 10)) == 0){ - result = true; - } else{ - result = false; - } - } else if ((10 - (verif.doubleValue() % 10)) == Integer.parseInt(id.substring(9, 10))){ - result = true; - } else { - result = false; - } - } - return result; - } - - /** - * Método para validar el Ruc - * - * @param ruc Número del Ruc - * @return Retorna V/F según la validez del Ruc - */ - public static boolean ruc(String ruc) { - - boolean result = true; - - int[] modulo11 = { 0, 0, 0, 0, 0, 0, 0, 0, 0 }; - - BigDecimal verif = new BigDecimal(0); - if (ruc.length() < 13) - result = false; - else if (Integer.parseInt(ruc.substring(0, 2)) < 1 - || Integer.parseInt(ruc.substring(0, 2)) > 25) { - result = false; - } else { - if (Integer.parseInt(ruc.substring(2, 3)) < 0 - || (Integer.parseInt(ruc.substring(2, 3)) > 6 && Integer - .parseInt(ruc.substring(2, 3)) < 9)) { - result = false; - } else { - if (Integer.parseInt(ruc.substring(2, 3)) == 9) { // sociedad privada o extranjeros - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - modulo11[0] = 4; - modulo11[1] = 3; - modulo11[2] = 2; - modulo11[3] = 7; - modulo11[4] = 6; - modulo11[5] = 5; - modulo11[6] = 4; - modulo11[7] = 3; - modulo11[8] = 2; - for (int i = 0; i < 9; i++) { - verif = verif.add(new BigDecimal(ruc.substring(i, - (i + 1))).multiply(new BigDecimal( - modulo11[i]))); - } - if (verif.doubleValue() % 11 == 0) - if (Integer.parseInt(ruc.substring(9, 10)) == 0) - result = true; - else - result = false; - else if ((11 - (verif.doubleValue() % 11)) == Integer - .parseInt(ruc.substring(9, 10))) - result = true; - else - result = false; - } - } else if (Integer.parseInt(ruc.substring(2, 3)) == 6) { // sociedad publicas - - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - modulo11[0] = 3; - modulo11[1] = 2; - modulo11[2] = 7; - modulo11[3] = 6; - modulo11[4] = 5; - modulo11[5] = 4; - modulo11[6] = 3; - modulo11[7] = 2; - for (int i = 0; i < 8; i++) { - verif = verif.add(new BigDecimal(ruc.substring(i, - (i + 1))).multiply(new BigDecimal( - modulo11[i]))); - } - if (verif.doubleValue() % 11 == 0) - if (Integer.parseInt(ruc.substring(8, 9)) == 0) - result = true; - else - result = false; - else if ((11 - (verif.doubleValue() % 11)) == Integer - .parseInt(ruc.substring(8, 9))) - result = true; - else - result = false; - } - } else if (Integer.parseInt(ruc.substring(2, 3)) < 6 - && Integer.parseInt(ruc.substring(2, 3)) >= 0) { // personas naturales - - if (!ruc.substring(10, 13).equals("001")) - result = false; - else { - result = cedula(ruc.substring(0, 10)); - } - } - } - } - return result; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/validators/.svn/entries b/frontend/src/main/java/com/fp/frontend/validators/.svn/entries deleted file mode 100644 index 20379d2..0000000 --- a/frontend/src/main/java/com/fp/frontend/validators/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/validators -svn://172.17.26.185/COMACO - - - -2016-07-28T21:02:11.275748Z -4551 -cvasquez - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CedulaValidator.java -file - - - - -2022-07-28T03:39:58.554612Z -dbef52335979386a98d98796ddb1aa0a -2014-09-02T08:04:37.389946Z -468 -ogarcia - - - - - - - - - - - - - - - - - - - - - -2024 - -DocFirmaValidator.java -file - - - - -2022-07-28T03:39:58.554612Z -ba192e7a822157ed3607d0b337d9e2e6 -2016-07-28T21:02:11.275748Z -4551 -cvasquez - - - - - - - - - - - - - - - - - - - - - -631 - diff --git a/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/CedulaValidator.java.svn-base b/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/CedulaValidator.java.svn-base deleted file mode 100644 index ac24a4a..0000000 --- a/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/CedulaValidator.java.svn-base +++ /dev/null @@ -1,67 +0,0 @@ -package com.fp.frontend.validators; - -import java.math.BigDecimal; - -import javax.faces.application.FacesMessage; -import javax.faces.component.UIComponent; -import javax.faces.component.html.HtmlInputText; -import javax.faces.context.FacesContext; -import javax.faces.validator.FacesValidator; -import javax.faces.validator.Validator; -import javax.faces.validator.ValidatorException; - -import com.fp.frontend.utility.ValidateIdentification; - - - -@FacesValidator(value="cedulaValidator") -public class CedulaValidator implements Validator{ - - @Override - public void validate(FacesContext context, UIComponent component, Object value) - throws ValidatorException { - - try { - if(value.toString().length()!=10 || !ValidateIdentification.cedula(value.toString())){ - throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR,"El n\u00famero ingresado no es v\u00e1lido. Por favor verificar","El n\u00famero ingresado no es v\u00e1lido. Por favor verificar.")); - } - } catch (Throwable e) { - throw new ValidatorException(new FacesMessage(FacesMessage.SEVERITY_ERROR, e.getMessage(), e.getMessage())); - } - - } - - public static boolean validarCedula(String id) { - - boolean result = true; - - int[] modulo9 = { 2, 1, 2, 1, 2, 1, 2, 1, 2 }; - - BigDecimal verif = BigDecimal.ZERO; - if (id.length() != 10) - result = false; - else { - for (int i = 0; i < 9; i++) { - BigDecimal temp = new BigDecimal(new BigDecimal(id.substring(i, (i + 1))).multiply(new BigDecimal(modulo9[i])).toString()); - if (temp.doubleValue() > 9){ - temp = temp.subtract(new BigDecimal("9")); - } - verif = verif.add(temp); - } - if (verif.doubleValue() % 10 == 0){ - if (Integer.parseInt(id.substring(9, 10)) == 0){ - result = true; - } else{ - result = false; - } - } else if ((10 - (verif.doubleValue() % 10)) == Integer.parseInt(id.substring(9, 10))){ - result = true; - } else { - result = false; - } - } - return result; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/DocFirmaValidator.java.svn-base b/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/DocFirmaValidator.java.svn-base deleted file mode 100644 index 6773046..0000000 --- a/frontend/src/main/java/com/fp/frontend/validators/.svn/text-base/DocFirmaValidator.java.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -package com.fp.frontend.validators; - -import java.io.InputStream; - -import com.lowagie.text.pdf.AcroFields; -import com.lowagie.text.pdf.PdfReader; - -public class DocFirmaValidator { - - public static boolean validDocSign(InputStream path) { - boolean validSign = false; - try { - PdfReader reader = new PdfReader(path); - if (reader != null) { - AcroFields af = reader.getAcroFields(); - if (af != null) { - if (af.getSignatureNames() != null - && af.getSignatureNames().size() != 0) { - - validSign = true; - } - } - } - - } catch (Exception e) { - - } - return validSign; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/.svn/entries deleted file mode 100644 index 59aa309..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/entries +++ /dev/null @@ -1,241 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -InventarioService.java -file - - - - -2022-07-28T03:39:46.195559Z -eb42477ccc57f29c61e935f9427ca316 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1270 - -impl -dir - -snap -dir - -ArmaService.java -file - - - - -2022-07-28T03:39:46.195559Z -9da85af514b57c37a9e931919dd4dd1c -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1369 - -DocumentosService.java -file - - - - -2022-07-28T03:39:46.196559Z -f16bdb47b2d0ef1e8efff50add7c6684 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -739 - -ConsultaLoginService.java -file - - - - -2022-07-28T03:39:46.197559Z -a1d7360f009248cafd448bc65ac03411 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1020 - -ColaImpresionService.java -file - - - - -2022-07-28T03:39:46.197559Z -2ef1af1babd66d8d38570705b5b5383b -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1999 - -rest -dir - -DatosSnapService.java -file - - - - -2022-07-28T03:39:46.198559Z -8d3eae9cd43268818607dd5c7475a73c -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -771 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ArmaService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ArmaService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ArmaService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ColaImpresionService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ColaImpresionService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ColaImpresionService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ConsultaLoginService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ConsultaLoginService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/ConsultaLoginService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/DocumentosService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/DocumentosService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/DocumentosService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/InventarioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/InventarioService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/prop-base/InventarioService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ArmaService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ArmaService.java.svn-base deleted file mode 100644 index 72635e2..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ArmaService.java.svn-base +++ /dev/null @@ -1,51 +0,0 @@ -package com.fp.frontend.webservices; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; - -import com.fp.persistence.parmas.dto.ws.ArmaDto; - -/** - * Servicio en el cual se van a determinar todas las operaciones definidas para un arma - * @author dcruz - * - */ -@WebService -public interface ArmaService { - - /** - * Retorna el arma encontrada por id - * @param carma - * @return - */ - @WebMethod - public ArmaDto obtenerArmaId(@WebParam(name="codigoarma") String carma); - - /** - * Retorna un codigo de respuesta del servicio 0, el arma fue vinculada con el tag, 1 el arma que se quiere vincular con el tag no existe - * @param codigoarma - * @param codigotag - * @return - */ - @WebMethod - public String vinculaTagArma(@WebParam(name="codigoarma")String codigoarma, @WebParam(name="codigotag") String codigotag); - - /** - * Retorna un código de respuesta del estado de la operación - * @param codigoarma - * @param codigotag - * @return - */ - @WebMethod - public String desvinculaTagArma(@WebParam(name="codigoarma")String codigoarma, @WebParam(name="codigotag") String codigotag) ; - - /** - * Retorna el arma encontrada por el codigo del tag - * @param codigotag - * @return - */ - @WebMethod - public ArmaDto obtenerArmaPorTag(@WebParam(name = "codigotag") String codigotag); - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ColaImpresionService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ColaImpresionService.java.svn-base deleted file mode 100644 index 873c864..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ColaImpresionService.java.svn-base +++ /dev/null @@ -1,62 +0,0 @@ -package com.fp.frontend.webservices; - -import java.util.List; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; - -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.dto.ws.ImagenDto; -import com.fp.persistence.parmas.dto.ws.JefeCentroControlDto; - -/** - * Servicio que contiene los métodos que retornan colas de impresión - * @author dcruz - * - */ -@WebService -public interface ColaImpresionService { - - /** - * Devuelve los documentos por imprimir por usuario - * @param usercode - * @return - */ - @WebMethod - public List obtenerDatosPendientesImprimir(@WebParam(name="usercode") String usercode); - - /** - * Invoca al componente que realiza la invocación de las colas de impresion presentes de dicho documento - * @param codigoproceso - * @return una {@link List} de {@link ColaImpresionDto} - */ - @WebMethod - public List obtenerDocumentosImpresionProceso(@WebParam(name="codigoproceso") String codigoproceso); - - /** - * Retorna los datos del Jefe del centro de control - * @param numerodocumento - * @return - */ - @WebMethod - public JefeCentroControlDto obtenerJefeCentroArmas(@WebParam(name="numerodocumento") String numerodocumento); - - /** - * Retorna los datos de la imagen de la persona - * @param numeroidentificacion Número de identificación - * @return - */ - @WebMethod - public ImagenDto obtenerImagenPersona(@WebParam(name="numeroidentificacion") String numeroidentificacion); - - /** - * Envia los datos del documento y lo almacena en Alfresco - * @param documento - * @param numerosolicitud - * @return 0 éxito, 1 los parámetros son obligatorios, 2 ocurrió un error en el servidor, 3 no existe el path asignado - */ - @WebMethod - public String envioInforme(@WebParam(name="documento") byte[] documento, @WebParam(name="numerosolicitud") String numerosolicitud); -} - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ConsultaLoginService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ConsultaLoginService.java.svn-base deleted file mode 100644 index 932f9e5..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/ConsultaLoginService.java.svn-base +++ /dev/null @@ -1,32 +0,0 @@ -package com.fp.frontend.webservices; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; - -/** - * Servicio web que maneja el login de un usuario ingresado - * @author dcruz - * - */ -@WebService -public interface ConsultaLoginService { - - /** - * Retorna un string especificando la respuesta del servicio - * @param login - * @return 0 existe el login, 1 el login no existe, 2 existe un error en el servidor - */ - @WebMethod - public String consultaLogin(@WebParam(name="usercode") String usercode); - - /** - * Retorna la localidad del usuario ingresado siempre y cuando el login y el password son correctos - * @param login el nombre de usuario - * @param password password del usuario - * @return La localidad del usuario ó 1 existe un error en el login o la contrasena , 2 existe un error en el servidor - */ - @WebMethod - public String consultaLoginPassword(@WebParam(name="usercode") String usercode, @WebParam(name="password") String password); - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DatosSnapService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DatosSnapService.java.svn-base deleted file mode 100644 index eb02549..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DatosSnapService.java.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -package com.fp.frontend.webservices; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; -import javax.xml.bind.JAXBException; - -import com.fp.frontend.webservices.snap.modelo.SoapEnvelopWrapper; - -/** - * - * @author Manuel Cepeda - * - */ -@WebService -public interface DatosSnapService { - - /** - * Definicion del metodo que permite obtener la informacion de armas a ser publicada - * @param institucion - * @param nroDicumento - * @param serie - * @return - * @throws JAXBException - */ - @WebMethod - public SoapEnvelopWrapper obtenerDatos(@WebParam(name="institucion") String institucion, @WebParam(name="nroDocumento") String nroDocumento, - @WebParam(name="serie") String serie) throws JAXBException; - -} - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DocumentosService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DocumentosService.java.svn-base deleted file mode 100644 index 796fb0e..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/DocumentosService.java.svn-base +++ /dev/null @@ -1,26 +0,0 @@ -package com.fp.frontend.webservices; - -import java.util.Date; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; - -/** - * Servicio que contiene todas las operaciones de los documentos habilitantes - * @author dcruz - * - */ -@WebService -public interface DocumentosService { - - /** - * Actualiza los datos en la cola de impresión y en la persona - * @param foto - * @param codigoproceso - * @param fechaimpresion - * @return - */ - @WebMethod - public String guardaDatosDocumentos(@WebParam(name="foto") byte[] foto, @WebParam(name="codigoproceso") String codigoproceso, @WebParam(name="codigotarjeta") String codigotarjeta, @WebParam(name="fechaimpresion") Date fechaimpresion); -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/InventarioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/InventarioService.java.svn-base deleted file mode 100644 index 3ab2ecc..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/.svn/text-base/InventarioService.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -package com.fp.frontend.webservices; - -import java.util.Date; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebService; - -/** - * Servicio que contiene todas las operaciones del servicio web de inventario - * @author dcruz - * - */ -@WebService -public interface InventarioService { - - /** - * Operación en la cual se ingresa los tag leídos desde la hand held - * @param tagslectura tags leídos en la lectura - * @param fechalectura fecha en la que se realizó la lectura - * @param locacionlectura lugar en la que se realizo la lectura - * @param idportal id del portal de donde se está receptando la información - * @param tipooperacion el tipo de operación; 1 si es lectura hand held, 2 si es portal - * @return 0 si la operació se realizo correctamente, 1 si ocurrio un error en el cliente, 2 si ocurrió algún error interno - */ - @WebMethod - public String guardaDatosLectura( - @WebParam(name="tagslectura")String tagslectura, - @WebParam(name="fechalectura")Date fechalectura, - @WebParam(name="locacionlectura")String locacionlectura, - @WebParam(name="idportal")String idportal, - @WebParam(name="tipolectura")String tipooperacion); -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/entries deleted file mode 100644 index 7110645..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/impl -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -DatosSnapServiceImpl.java -file - - - - -2022-07-28T03:39:45.807557Z -63c53951455f8d8769410adb93907b5d -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -10636 - -InstitucionSnapEnum.java -file - - - - -2022-07-28T03:39:45.808557Z -77c5556d0aff50ff3780fdceb4f719a6 -2015-12-15T14:36:46.935255Z -4349 -mcepeda - - - - - - - - - - - - - - - - - - - - - -460 - -InventarioServiceImpl.java -file - - - - -2022-07-28T03:39:45.808557Z -4f437716c087730f9fdc92b0ac5e8d42 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1909 - -ArmaServiceImpl.java -file - - - - -2022-07-28T03:39:45.809557Z -f1103f09a803b404412bede533929efd -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3256 - -DocumentosServiceImpl.java -file - - - - -2022-07-28T03:39:45.809557Z -50ad73fd3c11f2062921d15bb48fdac5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1545 - -ConsultaLoginServiceImpl.java -file - - - - -2022-07-28T03:39:45.810557Z -5bae64aa11dc2835ea6483369b45faaf -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1843 - -ColaImpresionServiceImpl.java -file - - - - -2022-07-28T03:39:45.810557Z -fba967dd34408566cb465a0f34f51749 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -6971 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ArmaServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ArmaServiceImpl.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ArmaServiceImpl.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ColaImpresionServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ColaImpresionServiceImpl.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ColaImpresionServiceImpl.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ConsultaLoginServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ConsultaLoginServiceImpl.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/ConsultaLoginServiceImpl.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/DocumentosServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/DocumentosServiceImpl.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/DocumentosServiceImpl.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/InventarioServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/InventarioServiceImpl.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/prop-base/InventarioServiceImpl.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ArmaServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ArmaServiceImpl.java.svn-base deleted file mode 100644 index 80b98d8..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ArmaServiceImpl.java.svn-base +++ /dev/null @@ -1,101 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import javax.jws.WebService; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.ArmaService; -import com.fp.persistence.parmas.dto.ws.ArmaDto; - -@WebService(endpointInterface="com.fp.frontend.webservices.ArmaService") -public class ArmaServiceImpl implements ArmaService { - - @Override - public ArmaDto obtenerArmaId(String carma) { - // TODO Auto-generated method stub - ArmaDto armaDto = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("queryalias", "ARMASWS"); - request.put("codigoarma", carma); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - armaDto = (ArmaDto) response.get("ARMASWS"); - } - return armaDto; - } catch (Throwable e) { - return null; - } - } - - @Override - public String vinculaTagArma(String codigoarma, String codigotag) { - String respuesta = "0"; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("CODIGOARMA", codigoarma); - request.put("CODIGOTAG", codigotag); - request.setTransactionModule("30"); - request.setTransactionCode(9999); - request.setTransactionVersion(1); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPONSESTATUS"); - } - } catch (Throwable e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - return respuesta; - } - - @Override - public String desvinculaTagArma(String codigoarma, String codigotag) { - String respuesta = "0"; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("CODIGOARMA", codigoarma); - request.put("CODIGOTAG", codigotag); - request.setTransactionModule("30"); - request.setTransactionCode(9998); - request.setTransactionVersion(1); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPONSESTATUS"); - } - } catch (Throwable e) { - respuesta = "2"; - APPLogger.getLogger().error(e.getMessage(), e); - } - return respuesta; - } - - @Override - public ArmaDto obtenerArmaPorTag(String codigotag) { - // TODO Auto-generated method stub - ArmaDto armaDto = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("queryalias", "ARMASWS"); - request.put("codigotag", codigotag); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - armaDto = (ArmaDto) response.get("ARMASWS"); - } - return armaDto; - } catch (Throwable e) { - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.netbeans-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.netbeans-base deleted file mode 100644 index 7d4cf9f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.netbeans-base +++ /dev/null @@ -1,190 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import java.io.ByteArrayInputStream; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import javax.jws.WebService; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.ColaImpresionService; -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.dto.ws.ImagenDto; -import com.fp.persistence.parmas.dto.ws.JefeCentroControlDto; - -@WebService(endpointInterface="com.fp.frontend.webservices.ColaImpresionService") -public class ColaImpresionServiceImpl implements ColaImpresionService { - - @SuppressWarnings("unchecked") - @Override - public List obtenerDatosPendientesImprimir(String usercode) { - List lcolaImpresion = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("usercode", usercode); - request.put("estado", "PIMPR"); - request.put("queryalias", "COLAIMPRESION"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - lcolaImpresion = (List) response.get("COLAIMPRESION"); - } - } catch (Throwable e) { - lcolaImpresion = null; - APPLogger.getLogger().error(e.getMessage(), e); - } - return lcolaImpresion; - } - - @SuppressWarnings("unchecked") - @Override - public List obtenerDocumentosImpresionProceso( - String codigoproceso) { - List lcolaImpresion = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("CODIGOSOLICITUD", codigoproceso); - request.put("queryalias", "IMPRESIONPROCESO"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - lcolaImpresion = (List) response.get("COLAIMPRESION"); - } - } catch (Throwable e) { - lcolaImpresion = null; - APPLogger.getLogger().error(e.getMessage(), e); - } - return lcolaImpresion; - } - - @Override - public JefeCentroControlDto obtenerJefeCentroArmas(String numerodocumento) { - JefeCentroControlDto jefeCentroControl = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMERODOCUMENTO", numerodocumento); - request.put("queryalias", "JEFECENTRO"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - jefeCentroControl = (JefeCentroControlDto) response.get("JEFECENTRO"); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return jefeCentroControl; - } - - @Override - public ImagenDto obtenerImagenPersona(String numeroidentificacion) { - System.out.println("obtenerImagenPersona.........."+numeroidentificacion); - ImagenDto imagen = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMEROIDENTIFICACION", numeroidentificacion); - request.put("queryalias", "IMAGENPERSONA"); - System.out.println("obtenerImagenPersona..........** "+numeroidentificacion); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - imagen = (ImagenDto) response.get("IMAGENPERSONA"); - System.out.println("..Imagen.........."+imagen); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return imagen; - } - - @Override - public String envioInforme(byte[] documento, String numerosolicitud) { - System.out.println("envioInforme............................"+numerosolicitud); - String responseStatus = "0"; - try { - if(documento == null || numerosolicitud == null){ - return "1"; - } - - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMEROSOLICITUD", numerosolicitud); - request.put("queryalias", "XPATHDOCUMENTOSOLICITUD"); - request.setTransactionModule("30"); - request.setTransactionCode(9995); - request.setTransactionVersion(1); - Response response = callerHelper.executeSave(request); - String xpathdocumento = null; - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - xpathdocumento = (String) response.get("XPATHDOCUMENTOSOLICITUD"); - responseStatus = (String) response.get("RESPONSESTATUS"); - - } - - if(xpathdocumento != null){ - AlfrescoController alfrescoController = new AlfrescoController(); - alfrescoController.uploadFileWebService(new ByteArrayInputStream(documento), obtenerNombreArchivoxPath(xpathdocumento), obtenerXpath(xpathdocumento),"admin"); - responseStatus = "0"; - } else{ - responseStatus = "3"; - } - } catch (Throwable e) { - responseStatus = "2"; - } - return responseStatus; - } - - /** - * Retorna el nombre del archivo del xpath enviado - * @param xpath - * @return - */ - private String obtenerNombreArchivoxPath(String xpath) { - String nombreArchivo = null; - int indice = xpath.lastIndexOf("/cm:"); - nombreArchivo = xpath.substring(indice + 4); - return nombreArchivo; - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpath(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:"); - rutaXpath = xpath.substring(0, indice ); - return rutaXpath; - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(Date fechaEmision, String numerosolicitud, String numerodocumento) { - StringBuilder ruta = null; - if (fechaEmision != null && numerosolicitud != null - && numerodocumento != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(fechaEmision); - ruta = new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:").append(numerosolicitud); - ruta = ruta.append("/cm:").append(numerodocumento+".pdf"); - } - return ruta != null ? ruta.toString() : null; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.svn-base deleted file mode 100644 index 7d4cf9f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ColaImpresionServiceImpl.java.svn-base +++ /dev/null @@ -1,190 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import java.io.ByteArrayInputStream; -import java.util.Calendar; -import java.util.Date; -import java.util.List; - -import javax.jws.WebService; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.controller.alfresco.AlfrescoController; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.ColaImpresionService; -import com.fp.persistence.parmas.dto.ws.ColaImpresionDto; -import com.fp.persistence.parmas.dto.ws.ImagenDto; -import com.fp.persistence.parmas.dto.ws.JefeCentroControlDto; - -@WebService(endpointInterface="com.fp.frontend.webservices.ColaImpresionService") -public class ColaImpresionServiceImpl implements ColaImpresionService { - - @SuppressWarnings("unchecked") - @Override - public List obtenerDatosPendientesImprimir(String usercode) { - List lcolaImpresion = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("usercode", usercode); - request.put("estado", "PIMPR"); - request.put("queryalias", "COLAIMPRESION"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - lcolaImpresion = (List) response.get("COLAIMPRESION"); - } - } catch (Throwable e) { - lcolaImpresion = null; - APPLogger.getLogger().error(e.getMessage(), e); - } - return lcolaImpresion; - } - - @SuppressWarnings("unchecked") - @Override - public List obtenerDocumentosImpresionProceso( - String codigoproceso) { - List lcolaImpresion = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("CODIGOSOLICITUD", codigoproceso); - request.put("queryalias", "IMPRESIONPROCESO"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - lcolaImpresion = (List) response.get("COLAIMPRESION"); - } - } catch (Throwable e) { - lcolaImpresion = null; - APPLogger.getLogger().error(e.getMessage(), e); - } - return lcolaImpresion; - } - - @Override - public JefeCentroControlDto obtenerJefeCentroArmas(String numerodocumento) { - JefeCentroControlDto jefeCentroControl = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMERODOCUMENTO", numerodocumento); - request.put("queryalias", "JEFECENTRO"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - jefeCentroControl = (JefeCentroControlDto) response.get("JEFECENTRO"); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return jefeCentroControl; - } - - @Override - public ImagenDto obtenerImagenPersona(String numeroidentificacion) { - System.out.println("obtenerImagenPersona.........."+numeroidentificacion); - ImagenDto imagen = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMEROIDENTIFICACION", numeroidentificacion); - request.put("queryalias", "IMAGENPERSONA"); - System.out.println("obtenerImagenPersona..........** "+numeroidentificacion); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - imagen = (ImagenDto) response.get("IMAGENPERSONA"); - System.out.println("..Imagen.........."+imagen); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return imagen; - } - - @Override - public String envioInforme(byte[] documento, String numerosolicitud) { - System.out.println("envioInforme............................"+numerosolicitud); - String responseStatus = "0"; - try { - if(documento == null || numerosolicitud == null){ - return "1"; - } - - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("NUMEROSOLICITUD", numerosolicitud); - request.put("queryalias", "XPATHDOCUMENTOSOLICITUD"); - request.setTransactionModule("30"); - request.setTransactionCode(9995); - request.setTransactionVersion(1); - Response response = callerHelper.executeSave(request); - String xpathdocumento = null; - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - xpathdocumento = (String) response.get("XPATHDOCUMENTOSOLICITUD"); - responseStatus = (String) response.get("RESPONSESTATUS"); - - } - - if(xpathdocumento != null){ - AlfrescoController alfrescoController = new AlfrescoController(); - alfrescoController.uploadFileWebService(new ByteArrayInputStream(documento), obtenerNombreArchivoxPath(xpathdocumento), obtenerXpath(xpathdocumento),"admin"); - responseStatus = "0"; - } else{ - responseStatus = "3"; - } - } catch (Throwable e) { - responseStatus = "2"; - } - return responseStatus; - } - - /** - * Retorna el nombre del archivo del xpath enviado - * @param xpath - * @return - */ - private String obtenerNombreArchivoxPath(String xpath) { - String nombreArchivo = null; - int indice = xpath.lastIndexOf("/cm:"); - nombreArchivo = xpath.substring(indice + 4); - return nombreArchivo; - } - - /** - * Retorna el xpath de la ruta en donde se va a almacenar el documento - * @param xpath ruta en donde se almacenará el archivo - * @return - */ - private String obtenerXpath(String xpath) { - String rutaXpath = null; - int indice = xpath.lastIndexOf("/cm:"); - rutaXpath = xpath.substring(0, indice ); - return rutaXpath; - } - - /** - * Retorna la ruta base donde se almacenara dicho archivo - * - * @return - */ - public String getRutaDocumentoSolBase(Date fechaEmision, String numerosolicitud, String numerodocumento) { - StringBuilder ruta = null; - if (fechaEmision != null && numerosolicitud != null - && numerodocumento != null) { - Calendar calendar = Calendar.getInstance(); - calendar.setTime(fechaEmision); - ruta = new StringBuilder("cm:Solicitud"); - ruta = ruta.append("/cm:A-").append(calendar.get(Calendar.YEAR)); - ruta = ruta.append("/cm:M-").append((calendar.get(Calendar.MONTH)+1) <= 9 ? "0" + (calendar.get(Calendar.MONTH) + 1) : (calendar.get(Calendar.MONTH)+1)); - ruta = ruta.append("/cm:").append(numerosolicitud); - ruta = ruta.append("/cm:").append(numerodocumento+".pdf"); - } - return ruta != null ? ruta.toString() : null; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ConsultaLoginServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ConsultaLoginServiceImpl.java.svn-base deleted file mode 100644 index 8b25b48..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/ConsultaLoginServiceImpl.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import javax.jws.WebService; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.ConsultaLoginService; - -@WebService(endpointInterface="com.fp.frontend.webservices.ConsultaLoginService") -public class ConsultaLoginServiceImpl implements ConsultaLoginService { - - @Override - public String consultaLogin(String usercode) { - String respuesta = "0"; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("USERCODE", usercode); - request.put("queryalias", "CONSULTALOGIN"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPUESTA"); - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - respuesta = "2"; - } - return respuesta; - } - - @Override - public String consultaLoginPassword(String usercode, String password) { - String respuesta = "0"; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("USERCODE", usercode); - request.put("PASSWORD", password); - request.put("queryalias", "CONSULTALOGIN"); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPUESTA");//esta contiene la localidad de la direccion principal del usuario - } - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - respuesta = "2"; - } - return respuesta; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DatosSnapServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DatosSnapServiceImpl.java.svn-base deleted file mode 100644 index 1ecece1..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DatosSnapServiceImpl.java.svn-base +++ /dev/null @@ -1,238 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import java.io.IOException; -import java.io.InputStream; -import java.text.SimpleDateFormat; -import java.util.ArrayList; -import java.util.Date; -import java.util.List; - -import javax.jws.WebService; -import javax.xml.bind.JAXBException; - -import org.apache.commons.codec.binary.Base64; -import org.apache.commons.codec.binary.StringUtils; -import org.apache.commons.io.FilenameUtils; -import org.apache.commons.io.IOUtils; - -import com.fp.alfresco.client.AlfrescoApi; -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.DatosSnapService; -import com.fp.frontend.webservices.snap.modelo.CabeceraXml; -import com.fp.frontend.webservices.snap.modelo.DatosArmaXml; -import com.fp.frontend.webservices.snap.modelo.EjecucionXml; -import com.fp.frontend.webservices.snap.modelo.GuardiaXml; -import com.fp.frontend.webservices.snap.modelo.ImagenXml; -import com.fp.frontend.webservices.snap.modelo.ResultadoXml; -import com.fp.frontend.webservices.snap.modelo.SoapEnvelopWrapper; -import com.fp.frontend.webservices.snap.modelo.TramiteXml; -import com.fp.persistence.parmas.dto.ws.DatosArmaDto; -import com.fp.persistence.parmas.dto.ws.DatosSnapDto; -import com.fp.persistence.parmas.dto.ws.InfoGuardiaDto; -import com.fp.persistence.parmas.dto.ws.TramiteDto; -/** - * Web Service para poner a disposicin la informacin de armas - * @author Manuel Cepeda - * - */ -@WebService(endpointInterface="com.fp.frontend.webservices.DatosSnapService") -public class DatosSnapServiceImpl implements DatosSnapService { - - /** - * Implementacion del metodo que permite obtener la informacion de armas a ser publicada - * @param institucion - * @param nroDocumento - * @param serie - */ - @Override - public SoapEnvelopWrapper obtenerDatos(String institucion, String nroDocumento, String serie) throws JAXBException { - - SimpleDateFormat formatoFecha = new SimpleDateFormat("dd/MM/yyyy"); - SimpleDateFormat formatoHora = new SimpleDateFormat("HH:mm:ss"); - if("EXITO".equals(verificarDatos(institucion, nroDocumento, serie))){ - CabeceraXml cabeceraXml = new CabeceraXml("XC001",formatoFecha.format(new Date()), formatoHora.format(new Date())); - - if(institucion.equals(InstitucionSnapEnum.MINISTERIO_MINAS.getNombre())){ - DatosSnapDto personaSnapDto = obtenerPersonDetail(nroDocumento, institucion, serie); - if(personaSnapDto != null){ - ResultadoXml resultadoXml = new ResultadoXml(personaSnapDto.getRazonSocial(), personaSnapDto.getDireccion(), personaSnapDto.getEmail(), personaSnapDto.getTelefonoFijo(), personaSnapDto.getTelefonoCelular()); - List listaTramites = new ArrayList<>(); - for(TramiteDto tramiteDto : personaSnapDto.getListaTramites()){ - TramiteXml tramiteXml = new TramiteXml(formatoFecha.format(tramiteDto.getFechaEmision()), formatoFecha.format(tramiteDto.getFechaExpiracion()), tramiteDto.getNumeroDocumento()); - listaTramites.add(tramiteXml); - } - resultadoXml.setListaTramites(listaTramites); - - EjecucionXml ejecucionXml = new EjecucionXml(1,"","","12345678"); - SoapEnvelopWrapper soap = new SoapEnvelopWrapper(cabeceraXml, ejecucionXml, resultadoXml); - return soap; - }else{ - return null; - } - - }else if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre()) || institucion.equals(InstitucionSnapEnum.COPS.getNombre()) || institucion.equals(InstitucionSnapEnum.FISCALIA_GENERAL.getNombre())){ - DatosSnapDto personaSnapDto = obtenerPersonDetail(nroDocumento, institucion, serie); - if(personaSnapDto != null){ - ResultadoXml resultadoXml = new ResultadoXml(personaSnapDto.getRazonSocial(), personaSnapDto.getDireccion(), personaSnapDto.getEmail(), personaSnapDto.getTelefonoFijo(), personaSnapDto.getTelefonoCelular()); - String xPathLocation=personaSnapDto.getxPathLocation(); - if(institucion.equals(InstitucionSnapEnum.COPS.getNombre())){ - if(personaSnapDto.getTestPsicologico() != null && !"".equals(personaSnapDto.getTestPsicologico())){ - resultadoXml.setTestPsicologico(new ImagenXml(parseToString(xPathLocation + personaSnapDto.getTestPsicologico()), "TestPsicologico", FilenameUtils.getExtension(personaSnapDto.getTestPsicologico()))); - } - } - - List listaTramites = new ArrayList<>(); - for(TramiteDto tramiteDto : personaSnapDto.getListaTramites()){ - TramiteXml tramiteXml = new TramiteXml(formatoFecha.format(tramiteDto.getFechaEmision()), formatoFecha.format(tramiteDto.getFechaExpiracion()), tramiteDto.getNumeroDocumento()); - listaTramites.add(tramiteXml); - } - resultadoXml.setListaTramites(listaTramites); - - List listaGuardias = new ArrayList<>(); - if(personaSnapDto.getListaGuardias() != null && !personaSnapDto.getListaGuardias().isEmpty()){ - for(InfoGuardiaDto infoGuardiaDto : personaSnapDto.getListaGuardias()){ - GuardiaXml guardiaXml = new GuardiaXml(infoGuardiaDto.getNombre(), infoGuardiaDto.getEmpresa(), infoGuardiaDto.getEstado()); - listaGuardias.add(guardiaXml); - } - resultadoXml.setListaGuardias(listaGuardias); - } - - - try { - if(personaSnapDto.getListaDatosArma() != null && !personaSnapDto.getListaDatosArma().isEmpty()){ - List listaDatosArmaXml = new ArrayList<>(); - for(DatosArmaDto datosArmaDto : personaSnapDto.getListaDatosArma()){ - DatosArmaXml datosArmaXml = new DatosArmaXml(); - - datosArmaXml.setLote(datosArmaDto.getLote()); - datosArmaXml.setDescripcionClase(datosArmaDto.getDescripcionClase()); - datosArmaXml.setDescripcionTipo(datosArmaDto.getDescripcionTipo()); - datosArmaXml.setTipofabricante(datosArmaDto.getTipoFabricacion()); - datosArmaXml.setMarca(datosArmaDto.getMarca()); - datosArmaXml.setCalibre(datosArmaDto.getCalibre()); - datosArmaXml.setModeloArma(datosArmaDto.getModelo()); - datosArmaXml.setEstadoArma(datosArmaDto.getEstadoArma()); - List listaImagen = new ArrayList<>(); - if(institucion.equals(InstitucionSnapEnum.CRIMINALISTICA.getNombre())){ - if(datosArmaDto.getImagenImpronta() != null && !"".equals(datosArmaDto.getImagenImpronta())){ - listaImagen.add(new ImagenXml(parseToString(xPathLocation + datosArmaDto.getImagenImpronta()), "ImagenImpronta", FilenameUtils.getExtension(datosArmaDto.getImagenImpronta()))); - } - if(datosArmaDto.getImagenArma() != null && !"".equals(datosArmaDto.getImagenArma())){ - listaImagen.add(new ImagenXml(parseToString(xPathLocation + datosArmaDto.getImagenArma()), "ImagenArma", FilenameUtils.getExtension(datosArmaDto.getImagenArma()))); - } - } - if(datosArmaDto.getFichaTecnicaArma() != null && !"".equals(datosArmaDto.getFichaTecnicaArma())){ - listaImagen.add(new ImagenXml(parseToString(xPathLocation + datosArmaDto.getFichaTecnicaArma()), "FichaTecnicaArma", FilenameUtils.getExtension(datosArmaDto.getFichaTecnicaArma()))); - } - datosArmaXml.setListaImagen(listaImagen); - - listaDatosArmaXml.add(datosArmaXml); - } - resultadoXml.setListaDatosArma(listaDatosArmaXml); - } - } catch (Exception e) { - e.printStackTrace(); - } - EjecucionXml ejecucionXml = new EjecucionXml(1,"","","12345678"); - SoapEnvelopWrapper soap = new SoapEnvelopWrapper(cabeceraXml, ejecucionXml, resultadoXml); - return soap; - } - } - }else{ - CabeceraXml cabeceraXml = new CabeceraXml("XC001",formatoFecha.format(new Date()), formatoHora.format(new Date())); - EjecucionXml ejecucionXml = new EjecucionXml(0,verificarDatos(institucion, nroDocumento, serie),"",""); - ResultadoXml resultadoXml = new ResultadoXml(); - - SoapEnvelopWrapper soap = new SoapEnvelopWrapper(cabeceraXml, ejecucionXml, resultadoXml); - return soap; - } - // TODO Auto-generated method stub - return null; - } - - /** - * Permite hacer la conversion de un archivo a String en Base 64 - * @param path - * @return - */ - public String parseToString(String path){ - AlfrescoApi api = new AlfrescoApi("comaco"); - try { - InputStream is = api.downloadDocumentByXPathLocation(path); - if(is != null){ - byte[] targetArray = IOUtils.toByteArray(is); - if(targetArray != null){ - Base64 obj = new Base64(); - String aux = StringUtils.newStringUtf8(obj.encodeBase64(targetArray, false)); - //System.out.println("aux prueba string---------------- : " + aux); - return aux; - }else{ - return null; - } - } - } catch (IOException e) { - e.printStackTrace(); - } catch (Exception e) { - e.printStackTrace(); - } - return null; - } - - /** - * Permite validar los datos de ingreso del WS - * @param institucion - * @param nroDocumento - * @param serie - * @return - */ - public String verificarDatos(String institucion, String nroDocumento, String serie){ - if(institucion == null || "".equals(institucion)){ - return "Debe ingresar la institucion"; - } - - if(nroDocumento == null || "".equals(nroDocumento)){ - return "Debe ingresar la nroDocumento"; - } - if(!institucion.equals(InstitucionSnapEnum.MINISTERIO_MINAS.getNombre())){ - if(serie == null || "".equals(serie)){ - return "Debe ingresar la serie"; - } - } - - return "EXITO"; - } - - /** - * Obtiene la informacion necesaria de armas a ser expuesta por el WS de acuerdo a la institucion que solita. - * @param identificacion - * @param institucion - * @param serie - * @return - */ - public DatosSnapDto obtenerPersonDetail(String identificacion, String institucion, String serie) { - // TODO Auto-generated method stub - DatosSnapDto personaSnapDto = null; - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("queryalias", "DATOSPERSONSNAP"); - request.put("identificacion", identificacion); - request.put("institucion", institucion); - request.put("serie", serie); - Response response = callerHelper.executeQuery(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - personaSnapDto = (DatosSnapDto) response.get("DATOSPERSONSNAP"); - } - return personaSnapDto; - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - - return null; - } - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DocumentosServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DocumentosServiceImpl.java.svn-base deleted file mode 100644 index 6989fd7..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/DocumentosServiceImpl.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import java.util.Date; - -import javax.jws.WebService; - -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.DocumentosService; - -@WebService(endpointInterface="com.fp.frontend.webservices.DocumentosService") -public class DocumentosServiceImpl implements DocumentosService { - - @Override - public String guardaDatosDocumentos(byte[] foto, String codigoproceso, String codigotarjeta, - Date fechaimpresion) { - String respuesta = "0"; - System.out.println("codigoproceso.."+codigoproceso+ " codigotarjeta.."+codigotarjeta+" fechaimpresion.."+fechaimpresion); - try { - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(9997); - request.setTransactionVersion(1); - request.put("FOTO", foto); - request.put("CODIGOSOLICITUD", codigoproceso); - request.put("CODIGOTARJETA", codigotarjeta); - request.put("FECHAIMPRESION", fechaimpresion); - System.out.println("codigoproceso.."+codigoproceso+ " codigotarjeta.."+codigotarjeta+" fechaimpresion.."+fechaimpresion); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPONSESTATUS"); - } - } catch (Throwable e) { - respuesta = "2"; - } - return respuesta; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InstitucionSnapEnum.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InstitucionSnapEnum.java.svn-base deleted file mode 100644 index 2ef054b..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InstitucionSnapEnum.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.frontend.webservices.impl; - -public enum InstitucionSnapEnum { - - CRIMINALISTICA("CRIMINALISTICA"), - MINISTERIO_MINAS("MINERIA"), - COPS("COPS"), - FISCALIA_GENERAL("FGE"); - - private String nombre; - - private InstitucionSnapEnum(String nombre) { - this.nombre = nombre; - } - - /** - * @return the nombre - */ - public String getNombre() { - return nombre; - } - - @Override - public String toString() { - return this.nombre; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InventarioServiceImpl.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InventarioServiceImpl.java.svn-base deleted file mode 100644 index 3ee62ba..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/impl/.svn/text-base/InventarioServiceImpl.java.svn-base +++ /dev/null @@ -1,55 +0,0 @@ -package com.fp.frontend.webservices.impl; - -import java.util.Date; - -import javax.jws.WebService; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.dto.Response; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.InventarioService; - -@WebService(endpointInterface="com.fp.frontend.webservices.InventarioService") -public class InventarioServiceImpl implements InventarioService { - - @Override - public String guardaDatosLectura(String tagslectura, Date fechalectura, String locacionlectura, String idportal, String tipooperacion) { - String respuesta = "0"; - try { - System.out.println("INGRESO PORTAL ........"); - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.setTransactionModule("30"); - request.setTransactionCode(9996); - request.setTransactionVersion(1); - request.put("TAGSLECTURA", tagslectura); - if(tipooperacion.equals("HHD")){ - request.put("FECHALECTURA", new Date()); - }else{ - request.put("FECHALECTURA", fechalectura); - } - - request.put("LOCACIONLECTURA", locacionlectura); - request.put("IDPORTAL", idportal); - request.put("TIPOOPERACION", tipooperacion); - Response response = callerHelper.executeSave(request); - if(response.getResponseCode().compareTo(Response.RESPONSE_OK) == 0){ - respuesta = (String) response.get("RESPONSESTATUS"); - } else{ - respuesta = "2"; - } - } catch (Throwable e) { - System.out.println("error:.........."+e); - respuesta = "1"; - APPLogger.getLogger().error(e.getMessage(), e); - } - return respuesta; - } - - public static void main(String[] args) { - InventarioServiceImpl guarda= new InventarioServiceImpl(); - System.out.println(guarda.guardaDatosLectura("E2003098851500251190A810", new Date(), "GUAYAS", "0001", "PTL")); - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/entries deleted file mode 100644 index 7253ebe..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/entries +++ /dev/null @@ -1,71 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/rest -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -RestApplication.java -file - - - - -2022-07-28T03:39:46.162558Z -a1a6243cee56be35a7c5e0b96258e2a4 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -204 - -services -dir - -dto -dir - -util -dir - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/text-base/RestApplication.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/text-base/RestApplication.java.svn-base deleted file mode 100644 index 36e0d16..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/.svn/text-base/RestApplication.java.svn-base +++ /dev/null @@ -1,9 +0,0 @@ -package com.fp.frontend.webservices.rest; - -import javax.ws.rs.ApplicationPath; -import javax.ws.rs.core.Application; - -@ApplicationPath("/rs") -public class RestApplication extends Application { - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/entries deleted file mode 100644 index 66a17f4..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/rest/dto -svn://172.17.26.185/COMACO - - - -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -LoginData.java -file - - - - -2022-07-28T03:39:46.094558Z -742d0a96e097108ee3c816f051d33920 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -514 - -LoginResult.java -file - - - - -2022-07-28T03:39:46.094558Z -d6b7d2be7e7d935f6173877ab5943fd3 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -651 - -StatusMessage.java -file - - - - -2022-07-28T03:39:46.094558Z -144cdfb31e85361746e2b92fe85e6c4f -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -541 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginData.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginData.java.svn-base deleted file mode 100644 index f7981aa..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginData.java.svn-base +++ /dev/null @@ -1,24 +0,0 @@ -package com.fp.frontend.webservices.rest.dto; - -import java.io.Serializable; - -public class LoginData implements Serializable { - - private static final long serialVersionUID = 1L; - - private String username; - private String password; - - public String getUsername() { - return username; - } - public void setUsername(String username) { - this.username = username; - } - public String getPassword() { - return password; - } - public void setPassword(String password) { - this.password = password; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginResult.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginResult.java.svn-base deleted file mode 100644 index dc7492f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/LoginResult.java.svn-base +++ /dev/null @@ -1,33 +0,0 @@ -package com.fp.frontend.webservices.rest.dto; - -import java.io.Serializable; - -public class LoginResult implements Serializable { - - private static final long serialVersionUID = 1L; - - private String username; - private String token; - public LoginResult() {} - - public LoginResult(String username, String token) { - super(); - this.username = username; - this.token = token; - } - - public String getUsername() { - return username; - } - public void setUsername(String username) { - this.username = username; - } - public String getToken() { - return token; - } - public void setToken(String token) { - this.token = token; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/StatusMessage.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/StatusMessage.java.svn-base deleted file mode 100644 index 0778dc8..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/dto/.svn/text-base/StatusMessage.java.svn-base +++ /dev/null @@ -1,27 +0,0 @@ -package com.fp.frontend.webservices.rest.dto; - -public class StatusMessage { - private int status; - private String message; - - public StatusMessage() { - super(); - } - public StatusMessage(int status, String message) { - super(); - this.status = status; - this.message = message; - } - public int getStatus() { - return status; - } - public void setStatus(int status) { - this.status = status; - } - public String getMessage() { - return message; - } - public void setMessage(String message) { - this.message = message; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/entries deleted file mode 100644 index de476a3..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/entries +++ /dev/null @@ -1,130 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/rest/services -svn://172.17.26.185/COMACO - - - -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -SecurityResource.java -file - - - - -2022-07-28T03:39:46.031558Z -c6aaf22b145c5ebef3da6ef2c9a4b9ce -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3012 - -CommonResource.java -file - - - - -2022-07-28T03:39:46.032558Z -d4543341a48602562df2401a1533bba5 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -4710 - -ArmasResource.java -file - - - - -2022-07-28T03:39:46.032558Z -45e30e272cf7c64a1b4f542dab79fdb2 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2713 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/ArmasResource.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/ArmasResource.java.svn-base deleted file mode 100644 index d003af5..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/ArmasResource.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.frontend.webservices.rest.services; - -import javax.ws.rs.GET; -import javax.ws.rs.HeaderParam; -import javax.ws.rs.Path; -import javax.ws.rs.PathParam; -import javax.ws.rs.Produces; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.rest.dto.StatusMessage; -import com.fp.frontend.webservices.rest.util.JwtValidateException; -import com.fp.persistence.parmas.dto.ws.ArmaDto; - -@Path("/arma") -@Produces(MediaType.APPLICATION_JSON) -public class ArmasResource extends CommonResource { - - @GET - @Path("/{serie}") - public Response consultarArma(@PathParam("serie") String serie, @HeaderParam("Authorization") String bearerToken) { - Response response = null; - try { - ArmaDto armaDto = null; - validateToken(bearerToken); - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("queryalias", "ARMASWS"); - request.put("codigoarma", serie); - com.fp.dto.Response responseMaia = callerHelper.executeQuery(request); - if(responseMaia.getResponseCode().compareTo(com.fp.dto.Response.RESPONSE_OK) == 0){ - armaDto = (ArmaDto) responseMaia.get("ARMASWS"); - if (armaDto == null) { - throw new WebApplicationException( - Response.status(Status.BAD_REQUEST) - .entity(new StatusMessage(Status.BAD_REQUEST.getStatusCode(), "El cod. arma no existe")).build()); - } - } else { - throw new WebApplicationException( - Response.status(Status.BAD_REQUEST) - .entity(new StatusMessage(Status.BAD_REQUEST.getStatusCode(), "Error al realizar la consulta del arma")).build()); - } - response = Response.ok().entity(armaDto).build(); - } catch (JwtValidateException e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.status(e.getStatusMessage().getStatus()).entity(e.getStatusMessage()).build(); - } catch (WebApplicationException e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = e.getResponse(); - } catch (Exception e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.serverError().entity(new StatusMessage(Status.INTERNAL_SERVER_ERROR.getStatusCode(), e.getMessage())).build(); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.serverError().entity(new StatusMessage(Status.INTERNAL_SERVER_ERROR.getStatusCode(), e.getMessage())).build(); - } - return response; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/CommonResource.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/CommonResource.java.svn-base deleted file mode 100644 index a7771ca..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/CommonResource.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -package com.fp.frontend.webservices.rest.services; - -import java.util.LinkedList; -import java.util.List; - -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - -import org.apache.commons.lang.StringUtils; -import org.jose4j.jwk.JsonWebKey; -import org.jose4j.jwk.JsonWebKeySet; -import org.jose4j.jwk.RsaJsonWebKey; -import org.jose4j.jwk.RsaJwkGenerator; -import org.jose4j.jws.AlgorithmIdentifiers; -import org.jose4j.jws.JsonWebSignature; -import org.jose4j.jwt.JwtClaims; -import org.jose4j.jwt.consumer.InvalidJwtException; -import org.jose4j.jwt.consumer.JwtConsumer; -import org.jose4j.jwt.consumer.JwtConsumerBuilder; -import org.jose4j.lang.JoseException; - -import com.fp.common.logger.APPLogger; -import com.fp.frontend.webservices.rest.dto.StatusMessage; -import com.fp.frontend.webservices.rest.util.JwtValidateException; - -public class CommonResource { - - private static String BEARER = "Bearer "; - final static String ISSUER = "ccffaa.mil.ec"; - static List jwkList = null; - static { - APPLogger.getLogger().info("Inicializador estatico JWT..."); - jwkList = new LinkedList<>(); - for (int kid = 1; kid <= 3; kid++) { - JsonWebKey jwk = null; - try { - jwk = RsaJwkGenerator.generateJwk(2048); - APPLogger.getLogger().info("PUBLIC KEY (" + kid + "): " - + jwk.toJson(JsonWebKey.OutputControlLevel.PUBLIC_ONLY)); - } catch (JoseException e) { - APPLogger.getLogger().error(e.getMessage()); - } - jwk.setKeyId(String.valueOf(kid)); - jwkList.add(jwk); - } - } - - protected String generateTokenJwt(String username) { - RsaJsonWebKey senderJwk = (RsaJsonWebKey) jwkList.get(0); - senderJwk.setKeyId("1"); - // Create the Claims, which will be the content of the JWT - JwtClaims claims = new JwtClaims(); - claims.setIssuer(ISSUER); - claims.setExpirationTimeMinutesInTheFuture(60); - claims.setGeneratedJwtId(); - claims.setIssuedAtToNow(); - claims.setNotBeforeMinutesInThePast(2); - claims.setSubject(username); - JsonWebSignature jws = new JsonWebSignature(); - - jws.setPayload(claims.toJson()); - - jws.setKeyIdHeaderValue(senderJwk.getKeyId()); - jws.setKey(senderJwk.getPrivateKey()); - - jws.setAlgorithmHeaderValue(AlgorithmIdentifiers.RSA_USING_SHA256); - - String jwt = null; - try { - jwt = jws.getCompactSerialization(); - } catch (JoseException e) { - throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity(new StatusMessage(Status.BAD_REQUEST.getStatusCode(), "Error al generar el token JWT")).build()); - } - return jwt; - } - - public void validateToken(String bearerToken) { - try { - String token = getToken(bearerToken); - if (token == null || token.trim().isEmpty()) { - StatusMessage statusMessage = new StatusMessage(); - statusMessage.setStatus(Status.FORBIDDEN.getStatusCode()); - statusMessage.setMessage( - "Acceso Denegado debe enviar el token !!!"); - throw new JwtValidateException(statusMessage); - } - - JsonWebKeySet jwks = new JsonWebKeySet(jwkList); - JsonWebKey jwk = jwks.findJsonWebKey("1", null, null, null); - JwtConsumer jwtConsumer = new JwtConsumerBuilder() - .setRequireExpirationTime() - .setAllowedClockSkewInSeconds(30) - .setRequireSubject() - .setExpectedIssuer(ISSUER) - .setVerificationKey(jwk.getKey()) - .build(); - JwtClaims jwtClaims = jwtConsumer.processToClaims(token); - APPLogger.getLogger().info("JWT validation succeeded! " + jwtClaims); - } catch (InvalidJwtException e) { - APPLogger.getLogger().error("JWT el token no es valida: "); - StatusMessage statusMessage = new StatusMessage(); - statusMessage.setStatus(Status.FORBIDDEN.getStatusCode()); - statusMessage.setMessage("Acceso denegado el token no es valido !!!"); - throw new JwtValidateException(statusMessage); - } catch (Exception e) { - APPLogger.getLogger().error("JWT error a validar el token: "); - StatusMessage statusMessage = new StatusMessage(); - statusMessage.setStatus(Status.FORBIDDEN.getStatusCode()); - statusMessage.setMessage("Acceso denegado el token no es valido !!!"); - throw new JwtValidateException(statusMessage); - } - } - - private String getToken(String bearerToken) { - String token = null; - if (bearerToken.startsWith(BEARER)) { - token = bearerToken.replace(BEARER, StringUtils.EMPTY); - } - return token; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/SecurityResource.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/SecurityResource.java.svn-base deleted file mode 100644 index 81e593d..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/services/.svn/text-base/SecurityResource.java.svn-base +++ /dev/null @@ -1,65 +0,0 @@ -package com.fp.frontend.webservices.rest.services; - -import javax.ws.rs.Consumes; -import javax.ws.rs.POST; -import javax.ws.rs.Path; -import javax.ws.rs.Produces; -import javax.ws.rs.WebApplicationException; -import javax.ws.rs.core.MediaType; -import javax.ws.rs.core.Response; -import javax.ws.rs.core.Response.Status; - -import com.fp.common.logger.APPLogger; -import com.fp.dto.Request; -import com.fp.frontend.helper.CallerHelper; -import com.fp.frontend.webservices.rest.dto.LoginData; -import com.fp.frontend.webservices.rest.dto.LoginResult; -import com.fp.frontend.webservices.rest.dto.StatusMessage; -import com.fp.frontend.webservices.rest.util.JwtValidateException; - -@Path("/security") -@Produces(MediaType.APPLICATION_JSON) -public class SecurityResource extends CommonResource { - - @POST - @Path("/login") - @Consumes(MediaType.APPLICATION_JSON) - public Response login(LoginData loginData) { - APPLogger.getLogger().info("Ingresa a Login MOB"); - Response response = null; - try { - String respuesta = "0"; - CallerHelper callerHelper = new CallerHelper(); - Request request = callerHelper.getRequest(); - request.setCompany(1); - request.put("USERCODE", loginData.getUsername()); - request.put("PASSWORD", callerHelper.getPasswordEncriptado(loginData.getPassword())); - request.put("queryalias", "CONSULTALOGIN"); - com.fp.dto.Response responseMaia = callerHelper.executeQuery(request); - if(responseMaia.getResponseCode().compareTo(com.fp.dto.Response.RESPONSE_OK) == 0){ - respuesta = (String) responseMaia.get("RESPUESTA");//esta contiene la localidad de la direccion principal del usuario - if (respuesta == null || respuesta.isEmpty()) { - throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity(new StatusMessage(Status.BAD_REQUEST.getStatusCode(), "Usuario/Password Incorrecto")).build()); - } - } else { - throw new WebApplicationException(Response.status(Status.BAD_REQUEST).entity(new StatusMessage(Status.BAD_REQUEST.getStatusCode(), "Usuario/Password Incorrecto")).build()); - } - String token = generateTokenJwt(loginData.getUsername()); - response = Response.ok().entity(new LoginResult(loginData.getUsername(), token)).build(); - } catch (JwtValidateException e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.status(e.getStatusMessage().getStatus()).entity(e.getStatusMessage()).build(); - } catch (WebApplicationException e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = e.getResponse(); - } catch (Exception e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.serverError().entity(new StatusMessage(Status.INTERNAL_SERVER_ERROR.getStatusCode(), e.getMessage())).build(); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - response = Response.serverError().entity(new StatusMessage(Status.INTERNAL_SERVER_ERROR.getStatusCode(), e.getMessage())).build(); - } - return response; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/entries deleted file mode 100644 index 9790449..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/rest/util -svn://172.17.26.185/COMACO - - - -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -JwtValidateException.java -file - - - - -2022-07-28T03:39:46.132558Z -9bf363babcfffc8476fc59830d976518 -2022-01-20T04:13:52.171628Z -4662 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -628 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/text-base/JwtValidateException.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/text-base/JwtValidateException.java.svn-base deleted file mode 100644 index 167d9d6..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/rest/util/.svn/text-base/JwtValidateException.java.svn-base +++ /dev/null @@ -1,26 +0,0 @@ -package com.fp.frontend.webservices.rest.util; - -import javax.ws.rs.WebApplicationException; - -import com.fp.frontend.webservices.rest.dto.StatusMessage; - -public class JwtValidateException extends WebApplicationException { - - private static final long serialVersionUID = 1L; - - private StatusMessage statusMessage; - - public JwtValidateException(StatusMessage statusMessage) { - super(); - this.statusMessage = statusMessage; - } - - public StatusMessage getStatusMessage() { - return statusMessage; - } - - public void setStatusMessage(StatusMessage statusMessage) { - this.statusMessage = statusMessage; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/snap/.svn/entries deleted file mode 100644 index 877e4a6..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/.svn/entries +++ /dev/null @@ -1,37 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/snap -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -modelo -dir - -ruc -dir - -cedula -dir - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/entries deleted file mode 100644 index 322a88b..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -CedulaServicio.java -file - - - - -2022-07-28T03:39:45.955557Z -26b714d7bf0b4f0a824992a73191c24a -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1436 - -ClienteCedula.java -file - - - - -2022-07-28T03:39:45.955557Z -a856da5b2beef5b57ee55e909da83dc2 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1013 - -CedulaServicioService.java -file - - - - -2022-07-28T03:39:45.956557Z -ae1c580b0f22ecd4ffff17c5aadcbfcc -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3387 - -package-info.java -file - - - - -2022-07-28T03:39:45.956557Z -5c75d4a75ff32727d68a65984db96cb8 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -142 - -ConsultarCedulaResponse.java -file - - - - -2022-07-28T03:39:45.956557Z -0d3de66e3ebcb44731f8ed1324aeb200 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1615 - -ConsultarCedula.java -file - - - - -2022-07-28T03:39:45.957557Z -8acf9234b0bab9a1c182e1506bd979ff -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1433 - -ObjectFactory.java -file - - - - -2022-07-28T03:39:45.957557Z -bf734609f1a3101777717a9b74c8ed28 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2672 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicio.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicio.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicio.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicioService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/CedulaServicioService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ClienteCedula.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ClienteCedula.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ClienteCedula.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedula.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedula.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedula.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedulaResponse.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedulaResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ConsultarCedulaResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ObjectFactory.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ObjectFactory.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/package-info.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/package-info.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/prop-base/package-info.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicio.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicio.java.svn-base deleted file mode 100644 index c083d0d..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicio.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ - -package com.fp.frontend.webservices.snap.cedula; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebResult; -import javax.jws.WebService; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.ws.RequestWrapper; -import javax.xml.ws.ResponseWrapper; -import ec.gob.registrocivil.consultacedula.Cedula; - - -/** - * This class was generated by the JAX-WS RI. - * JAX-WS RI 2.2.6b21 - * Generated source version: 2.2 - * - */ -@WebService(name = "CedulaServicio", targetNamespace = "http://cedula.snap.webservices.fp.com/") -@XmlSeeAlso({ - com.fp.frontend.webservices.snap.cedula.ObjectFactory.class, - ec.gob.registrocivil.consultacedula.ObjectFactory.class -}) -public interface CedulaServicio { - - - /** - * - * @param cedula - * @return - * returns ec.gob.registrocivil.consultacedula.Cedula - */ - @WebMethod - @WebResult(targetNamespace = "") - @RequestWrapper(localName = "consultarCedula", targetNamespace = "http://cedula.snap.webservices.fp.com/", className = "com.fp.frontend.webservices.snap.cedula.ConsultarCedula") - @ResponseWrapper(localName = "consultarCedulaResponse", targetNamespace = "http://cedula.snap.webservices.fp.com/", className = "com.fp.frontend.webservices.snap.cedula.ConsultarCedulaResponse") - public Cedula consultarCedula( - @WebParam(name = "cedula", targetNamespace = "") - String cedula); - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicioService.java.svn-base deleted file mode 100644 index e275c19..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/CedulaServicioService.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ - -package com.fp.frontend.webservices.snap.cedula; - -import java.net.MalformedURLException; -import java.net.URL; - -import javax.xml.namespace.QName; -import javax.xml.ws.Service; -import javax.xml.ws.WebEndpoint; -import javax.xml.ws.WebServiceClient; -import javax.xml.ws.WebServiceException; -import javax.xml.ws.WebServiceFeature; - -import com.fp.frontend.utility.MsgControlArmas; - - -/** - * This class was generated by the JAX-WS RI. - * JAX-WS RI 2.2.6b21 - * Generated source version: 2.2 - * - */ -@WebServiceClient(name = "CedulaServicioService", targetNamespace = "http://cedula.snap.webservices.fp.com/", wsdlLocation = "https://serviciosarmas.ccffaa.mil.ec:8085/serviceCedula?wsdl") -public class CedulaServicioService - extends Service -{ - - private final static URL CEDULASERVICIOSERVICE_WSDL_LOCATION; - private final static WebServiceException CEDULASERVICIOSERVICE_EXCEPTION; - private final static QName CEDULASERVICIOSERVICE_QNAME = new QName("http://cedula.snap.webservices.fp.com/", "CedulaServicioService"); - - static { - URL url = null; - WebServiceException e = null; - try { - url = new URL(MsgControlArmas.getProperty("url_snap_servicio_cedula")); - } catch (MalformedURLException ex) { - e = new WebServiceException(ex); - } - CEDULASERVICIOSERVICE_WSDL_LOCATION = url; - CEDULASERVICIOSERVICE_EXCEPTION = e; - } - - public CedulaServicioService() { - super(__getWsdlLocation(), CEDULASERVICIOSERVICE_QNAME); - } - - public CedulaServicioService(WebServiceFeature... features) { - super(__getWsdlLocation(), CEDULASERVICIOSERVICE_QNAME, features); - } - - public CedulaServicioService(URL wsdlLocation) { - super(wsdlLocation, CEDULASERVICIOSERVICE_QNAME); - } - - public CedulaServicioService(URL wsdlLocation, WebServiceFeature... features) { - super(wsdlLocation, CEDULASERVICIOSERVICE_QNAME, features); - } - - public CedulaServicioService(URL wsdlLocation, QName serviceName) { - super(wsdlLocation, serviceName); - } - - public CedulaServicioService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { - super(wsdlLocation, serviceName, features); - } - - /** - * - * @return - * returns CedulaServicio - */ - @WebEndpoint(name = "CedulaServicioPort") - public CedulaServicio getCedulaServicioPort() { - return super.getPort(new QName("http://cedula.snap.webservices.fp.com/", "CedulaServicioPort"), CedulaServicio.class); - } - - /** - * - * @param features - * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. - * @return - * returns CedulaServicio - */ - @WebEndpoint(name = "CedulaServicioPort") - public CedulaServicio getCedulaServicioPort(WebServiceFeature... features) { - return super.getPort(new QName("http://cedula.snap.webservices.fp.com/", "CedulaServicioPort"), CedulaServicio.class, features); - } - - private static URL __getWsdlLocation() { - if (CEDULASERVICIOSERVICE_EXCEPTION!= null) { - throw CEDULASERVICIOSERVICE_EXCEPTION; - } - return CEDULASERVICIOSERVICE_WSDL_LOCATION; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ClienteCedula.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ClienteCedula.java.svn-base deleted file mode 100644 index 607c288..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ClienteCedula.java.svn-base +++ /dev/null @@ -1,37 +0,0 @@ -package com.fp.frontend.webservices.snap.cedula; - -import com.fp.common.logger.APPLogger; - -import ec.gob.registrocivil.consultacedula.Cedula; - -/** - * Clase que realiza consultas al WS de la SNAP del registro civil - * @author dcruz - * - */ -public class ClienteCedula { - - /** - * Retorna los datos de la persona en base su numero de cédula - * @param cedula - * @return - */ - public static Cedula obtenerCedula(String cedula) { - Cedula cedulaResult = null; - try { - CedulaServicioService cedulaServicioService = new CedulaServicioService(); - cedulaResult = cedulaServicioService.getCedulaServicioPort().consultarCedula(cedula); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return cedulaResult; - } - - public static void main(String[] args) { - Cedula ced=obtenerCedula("1716178676"); - System.out.println(" .. "+ced); - System.out.println(" .. "+ced.getNombre()); - System.out.println(" .. "+ced.getCalleDomicilio()); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedula.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedula.java.svn-base deleted file mode 100644 index c145f0c..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedula.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - -package com.fp.frontend.webservices.snap.cedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para consultarCedula complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="consultarCedula">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="cedula" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "consultarCedula", propOrder = { - "cedula" -}) -public class ConsultarCedula { - - protected String cedula; - - /** - * Obtiene el valor de la propiedad cedula. - * - * @return - * possible object is - * {@link String } - * - */ - public String getCedula() { - return cedula; - } - - /** - * Define el valor de la propiedad cedula. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setCedula(String value) { - this.cedula = value; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedulaResponse.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedulaResponse.java.svn-base deleted file mode 100644 index abdd447..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ConsultarCedulaResponse.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ - -package com.fp.frontend.webservices.snap.cedula; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; -import ec.gob.registrocivil.consultacedula.Cedula; - - -/** - *

      Clase Java para consultarCedulaResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="consultarCedulaResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://www.registrocivil.gob.ec/ConsultaCedula}cedula" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "consultarCedulaResponse", propOrder = { - "_return" -}) -public class ConsultarCedulaResponse { - - @XmlElement(name = "return") - protected Cedula _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link Cedula } - * - */ - public Cedula getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link Cedula } - * - */ - public void setReturn(Cedula value) { - this._return = value; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ObjectFactory.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ObjectFactory.java.svn-base deleted file mode 100644 index 5b6743f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ - -package com.fp.frontend.webservices.snap.cedula; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.annotation.XmlElementDecl; -import javax.xml.bind.annotation.XmlRegistry; -import javax.xml.namespace.QName; - - -/** - * This object contains factory methods for each - * Java content interface and Java element interface - * generated in the com.fp.webservices.snap.cedula package. - *

      An ObjectFactory allows you to programatically - * construct new instances of the Java representation - * for XML content. The Java representation of XML - * content can consist of schema derived interfaces - * and classes representing the binding of schema - * type definitions, element declarations and model - * groups. Factory methods for each of these are - * provided in this class. - * - */ -@XmlRegistry -public class ObjectFactory { - - private final static QName _ConsultarCedulaResponse_QNAME = new QName("http://cedula.snap.webservices.fp.com/", "consultarCedulaResponse"); - private final static QName _ConsultarCedula_QNAME = new QName("http://cedula.snap.webservices.fp.com/", "consultarCedula"); - - /** - * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.fp.webservices.snap.cedula - * - */ - public ObjectFactory() { - } - - /** - * Create an instance of {@link ConsultarCedulaResponse } - * - */ - public ConsultarCedulaResponse createConsultarCedulaResponse() { - return new ConsultarCedulaResponse(); - } - - /** - * Create an instance of {@link ConsultarCedula } - * - */ - public ConsultarCedula createConsultarCedula() { - return new ConsultarCedula(); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ConsultarCedulaResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://cedula.snap.webservices.fp.com/", name = "consultarCedulaResponse") - public JAXBElement createConsultarCedulaResponse(ConsultarCedulaResponse value) { - return new JAXBElement(_ConsultarCedulaResponse_QNAME, ConsultarCedulaResponse.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ConsultarCedula }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://cedula.snap.webservices.fp.com/", name = "consultarCedula") - public JAXBElement createConsultarCedula(ConsultarCedula value) { - return new JAXBElement(_ConsultarCedula_QNAME, ConsultarCedula.class, null, value); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/package-info.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index e63509a..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/cedula/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -@javax.xml.bind.annotation.XmlSchema(namespace = "http://cedula.snap.webservices.fp.com/") -package com.fp.frontend.webservices.snap.cedula; diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/entries deleted file mode 100644 index 4c1bc1f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/entries +++ /dev/null @@ -1,300 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ImagenXml.java -file - - - - -2022-07-28T03:39:45.894557Z -71b69dac62541667f090baff5a84f4cd -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1662 - -ResultadoXml.java -file - - - - -2022-07-28T03:39:45.894557Z -e5f080004017a2e68946198c7e6d45a5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5253 - -EjecucionXml.java -file - - - - -2022-07-28T03:39:45.895557Z -dba8b1cb4888e8cb8c3e23733deed986 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2400 - -CabeceraXml.java -file - - - - -2022-07-28T03:39:45.895557Z -474338d26efa9bc7362c6c84c4c2d6fe -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1736 - -TramiteXml.java -file - - - - -2022-07-28T03:39:45.895557Z -bd6668b44f172db86968222a14337148 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2231 - -DatosArmaXml.java -file - - - - -2022-07-28T03:39:45.895557Z -a8ff8c02f3e1cec5811be44abbfb0d8d -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -3511 - -SoapEnvelopWrapper.java -file - - - - -2022-07-28T03:39:45.896557Z -00844fc51d932e65d1a6be484e7fec2a -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2107 - -GuardiaXml.java -file - - - - -2022-07-28T03:39:45.896557Z -1efcb1760f6207d3a0010a5923202138 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1624 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/CabeceraXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/CabeceraXml.java.svn-base deleted file mode 100644 index e63eb1d..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/CabeceraXml.java.svn-base +++ /dev/null @@ -1,95 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * Clase xml con los elementos de la cabecera de la salida del WS - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Cabecera") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType (propOrder={"idMensaje","fecha","hora"}) -public class CabeceraXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 1216982166335460756L; - - @XmlElement(name="IdMensaje") - private String idMensaje; - @XmlElement(name="Fecha") - private String fecha; - @XmlElement(name="Hora") - private String hora; - - /** - * - */ - public CabeceraXml() { - } - - public CabeceraXml(String idMensaje, String fecha, String hora) { - super(); - this.idMensaje = idMensaje; - this.fecha = fecha; - this.hora = hora; - } - - - - /** - * @return the idMensaje - */ - public String getIdMensaje() { - return idMensaje; - } - - /** - * @param idMensaje the idMensaje to set - */ - public void setIdMensaje(String idMensaje) { - this.idMensaje = idMensaje; - } - - /** - * @return the fecha - */ - public String getFecha() { - return fecha; - } - - /** - * @param fecha the fecha to set - */ - public void setFecha(String fecha) { - this.fecha = fecha; - } - - /** - * @return the hora - */ - public String getHora() { - return hora; - } - - /** - * @param hora the hora to set - */ - public void setHora(String hora) { - this.hora = hora; - } - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/DatosArmaXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/DatosArmaXml.java.svn-base deleted file mode 100644 index 54b5f3f..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/DatosArmaXml.java.svn-base +++ /dev/null @@ -1,182 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * Clase xml con los datos de la arma - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="DatosArma") -@XmlAccessorType(XmlAccessType.FIELD) -public class DatosArmaXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -431606681146448613L; - - @XmlElement(name="Lote") - private String lote; - @XmlElement(name="DescripcionClase") - private String descripcionClase; - @XmlElement(name="DescripcionTipo") - private String descripcionTipo; - @XmlElement(name="Tipofabricante") - private String tipofabricante; - @XmlElement(name="marca") - private String marca; - @XmlElement(name="Calibre") - private String calibre; - @XmlElement(name="ModeloArma") - private String modeloArma; - @XmlElement(name="EstadoArma") - private String estadoArma; - - @XmlElement(name="ListaImagen") - private List listaImagen; - - - /** - * - */ - public DatosArmaXml() { - } - - /** - * @return the lote - */ - public String getLote() { - return lote; - } - - /** - * @param lote the lote to set - */ - public void setLote(String lote) { - this.lote = lote; - } - - /** - * @return the descripcionClase - */ - public String getDescripcionClase() { - return descripcionClase; - } - - /** - * @param descripcionClase the descripcionClase to set - */ - public void setDescripcionClase(String descripcionClase) { - this.descripcionClase = descripcionClase; - } - - /** - * @return the descripcionTipo - */ - public String getDescripcionTipo() { - return descripcionTipo; - } - - /** - * @param descripcionTipo the descripcionTipo to set - */ - public void setDescripcionTipo(String descripcionTipo) { - this.descripcionTipo = descripcionTipo; - } - - /** - * @return the tipofabricante - */ - public String getTipofabricante() { - return tipofabricante; - } - - /** - * @param tipofabricante the tipofabricante to set - */ - public void setTipofabricante(String tipofabricante) { - this.tipofabricante = tipofabricante; - } - - /** - * @return the marca - */ - public String getMarca() { - return marca; - } - - /** - * @param marca the marca to set - */ - public void setMarca(String marca) { - this.marca = marca; - } - - /** - * @return the calibre - */ - public String getCalibre() { - return calibre; - } - - /** - * @param calibre the calibre to set - */ - public void setCalibre(String calibre) { - this.calibre = calibre; - } - - /** - * @return the modeloArma - */ - public String getModeloArma() { - return modeloArma; - } - - /** - * @param modeloArma the modeloArma to set - */ - public void setModeloArma(String modeloArma) { - this.modeloArma = modeloArma; - } - - /** - * @return the estadoArma - */ - public String getEstadoArma() { - return estadoArma; - } - - /** - * @param estadoArma the estadoArma to set - */ - public void setEstadoArma(String estadoArma) { - this.estadoArma = estadoArma; - } - - /** - * @return the listaImagen - */ - public List getListaImagen() { - return listaImagen; - } - - /** - * @param listaImagen the listaImagen to set - */ - public void setListaImagen(List listaImagen) { - this.listaImagen = listaImagen; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/EjecucionXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/EjecucionXml.java.svn-base deleted file mode 100644 index 84bb5ac..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/EjecucionXml.java.svn-base +++ /dev/null @@ -1,122 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * Clase xml con los elementos de la ejecucion en la salida del WS - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Ejecucion") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType (propOrder={"exito","codigoError","descripcionError","idToken"}) -public class EjecucionXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 6677743930807519383L; - - @XmlElement(name="Exito") - private Integer exito; - - @XmlElement(name="CodigoError") - private String codigoError; - - @XmlElement(name="DescripcionError") - private String descripcionError; - - @XmlElement(name="IdToken") - private String idToken; - - /** - * - */ - public EjecucionXml() { - } - - - - /** - * @param exito - * @param codigoError - * @param descripcionError - * @param idToken - */ - public EjecucionXml(Integer exito, String codigoError, - String descripcionError, String idToken) { - super(); - this.exito = exito; - this.codigoError = codigoError; - this.descripcionError = descripcionError; - this.idToken = idToken; - } - - - - /** - * @return the codigoError - */ - public String getCodigoError() { - return codigoError; - } - - /** - * @param codigoError the codigoError to set - */ - public void setCodigoError(String codigoError) { - this.codigoError = codigoError; - } - - /** - * @return the descripcionError - */ - public String getDescripcionError() { - return descripcionError; - } - - /** - * @param descripcionError the descripcionError to set - */ - public void setDescripcionError(String descripcionError) { - this.descripcionError = descripcionError; - } - - /** - * @return the idToken - */ - public String getIdToken() { - return idToken; - } - - /** - * @param idToken the idToken to set - */ - public void setIdToken(String idToken) { - this.idToken = idToken; - } - - /** - * @return the exito - */ - public Integer getExito() { - return exito; - } - - /** - * @param exito the exito to set - */ - public void setExito(Integer exito) { - this.exito = exito; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/GuardiaXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/GuardiaXml.java.svn-base deleted file mode 100644 index 3e0c956..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/GuardiaXml.java.svn-base +++ /dev/null @@ -1,93 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * Clase xml con los datos del guardia - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Guardia") -@XmlAccessorType(XmlAccessType.FIELD) -public class GuardiaXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -431606681146448613L; - - - @XmlElement(name="nombre") - private String nombre; - @XmlElement(name="Empresa") - private String empresa; - @XmlElement(name="Estado") - private String estado; - - /** - * - */ - public GuardiaXml() { - } - - public GuardiaXml(String nombre, String empresa, String estado) { - super(); - this.nombre = nombre; - this.empresa = empresa; - this.estado = estado; - } - - /** - * @return the nombre - */ - public String getNombre() { - return nombre; - } - - /** - * @param nombre the nombre to set - */ - public void setNombre(String nombre) { - this.nombre = nombre; - } - - /** - * @return the empresa - */ - public String getEmpresa() { - return empresa; - } - - /** - * @param empresa the empresa to set - */ - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - - /** - * @return the estado - */ - public String getEstado() { - return estado; - } - - /** - * @param estado the estado to set - */ - public void setEstado(String estado) { - this.estado = estado; - } - - - - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ImagenXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ImagenXml.java.svn-base deleted file mode 100644 index 4e603d6..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ImagenXml.java.svn-base +++ /dev/null @@ -1,91 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * Clase xml con los datos de un archivo imagenes o pdf - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Imagen") -@XmlAccessorType(XmlAccessType.FIELD) -public class ImagenXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -431606681146448613L; - - @XmlElement(name="Imagen") - private String imagen; - @XmlElement(name="Descripcion") - private String descripcion; - @XmlElement(name="Tipo") - private String tipo; - - - /** - * - */ - public ImagenXml() { - } - - public ImagenXml(String imagen, String descripcion, String tipo) { - super(); - this.imagen = imagen; - this.descripcion = descripcion; - this.tipo = tipo; - } - - /** - * @return the imagen - */ - public String getImagen() { - return imagen; - } - - /** - * @param imagen the imagen to set - */ - public void setImagen(String imagen) { - this.imagen = imagen; - } - - /** - * @return the descripcion - */ - public String getDescripcion() { - return descripcion; - } - - /** - * @param descripcion the descripcion to set - */ - public void setDescripcion(String descripcion) { - this.descripcion = descripcion; - } - - /** - * @return the tipo - */ - public String getTipo() { - return tipo; - } - - /** - * @param tipo the tipo to set - */ - public void setTipo(String tipo) { - this.tipo = tipo; - } - - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ResultadoXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ResultadoXml.java.svn-base deleted file mode 100644 index bd83f88..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/ResultadoXml.java.svn-base +++ /dev/null @@ -1,253 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; -import java.util.List; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * Clase xml con los elementos de la respuesta de la salida del WS - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Resultado") -@XmlAccessorType(XmlAccessType.FIELD) -public class ResultadoXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -431606681146448613L; - - @XmlElement(name="RazonSocial") - private String razonSocial; - @XmlElement(name="Direccion") - private String direccion; - @XmlElement(name="Email") - private String email; - @XmlElement(name="TelefonoFijo") - private String telefonoFijo; - @XmlElement(name="TelefonoCelular") - private String telefonoCelular; - @XmlElement(name="Empresa") - private String empresa; - @XmlElement(name="Estado") - private String estado; - @XmlElement(name="TestPsicologico") - private ImagenXml testPsicologico; - - @XmlElement(name="ListaTramites") - private List listaTramites; - - @XmlElement(name="ListaGuardias") - private List listaGuardias; - - @XmlElement(name="ListaDatosArma") - private List listaDatosArma; - -// @XmlElement(name="Tramite") -// private String tramite; -// @XmlElement(name="FechaEmision") -// private String fechaEmision; -// @XmlElement(name="FechaExpiracion") -// private String fechaExpiracion; -// @XmlElement(name="NumeroDocumento") -// private String numeroDocumento; - - - @XmlElement(name="TipoPermiso") - private String tipoPermiso; - - /** - * - */ - public ResultadoXml() { - } - - - public ResultadoXml(String razonSocial, String direccion, String email, String telefonoFijo, String telefonoCelular) { - super(); - this.razonSocial = razonSocial; - this.direccion = direccion; - this.email = email; - this.telefonoFijo = telefonoFijo; - this.telefonoCelular = telefonoCelular; - } - - - /** - * @return the razonSocial - */ - public String getRazonSocial() { - return razonSocial; - } - - /** - * @param razonSocial the razonSocial to set - */ - public void setRazonSocial(String razonSocial) { - this.razonSocial = razonSocial; - } - - /** - * @return the direccion - */ - public String getDireccion() { - return direccion; - } - - /** - * @return the email - */ - public String getEmail() { - return email; - } - - - /** - * @param email the email to set - */ - public void setEmail(String email) { - this.email = email; - } - - - /** - * @param direccion the direccion to set - */ - public void setDireccion(String direccion) { - this.direccion = direccion; - } - - /** - * @return the telefonoFijo - */ - public String getTelefonoFijo() { - return telefonoFijo; - } - - /** - * @param telefonoFijo the telefonoFijo to set - */ - public void setTelefonoFijo(String telefonoFijo) { - this.telefonoFijo = telefonoFijo; - } - - /** - * @return the telefonoCelular - */ - public String getTelefonoCelular() { - return telefonoCelular; - } - - /** - * @param telefonoCelular the telefonoCelular to set - */ - public void setTelefonoCelular(String telefonoCelular) { - this.telefonoCelular = telefonoCelular; - } - - /** - * @return the empresa - */ - public String getEmpresa() { - return empresa; - } - - /** - * @param empresa the empresa to set - */ - public void setEmpresa(String empresa) { - this.empresa = empresa; - } - - /** - * @return the estado - */ - public String getEstado() { - return estado; - } - - /** - * @param estado the estado to set - */ - public void setEstado(String estado) { - this.estado = estado; - } - - /** - * @return the tipoPermiso - */ - public String getTipoPermiso() { - return tipoPermiso; - } - - /** - * @param tipoPermiso the tipoPermiso to set - */ - public void setTipoPermiso(String tipoPermiso) { - this.tipoPermiso = tipoPermiso; - } - - /** - * @return the listaTramites - */ - public List getListaTramites() { - return listaTramites; - } - - /** - * @param listaTramites the listaTramites to set - */ - public void setListaTramites(List listaTramites) { - this.listaTramites = listaTramites; - } - - /** - * @return the listaGuardias - */ - public List getListaGuardias() { - return listaGuardias; - } - - /** - * @param listaGuardias the listaGuardias to set - */ - public void setListaGuardias(List listaGuardias) { - this.listaGuardias = listaGuardias; - } - - /** - * @return the listaDatosArma - */ - public List getListaDatosArma() { - return listaDatosArma; - } - - /** - * @param listaDatosArma the listaDatosArma to set - */ - public void setListaDatosArma(List listaDatosArma) { - this.listaDatosArma = listaDatosArma; - } - - /** - * @return the testPsicologico - */ - public ImagenXml getTestPsicologico() { - return testPsicologico; - } - - /** - * @param testPsicologico the testPsicologico to set - */ - public void setTestPsicologico(ImagenXml testPsicologico) { - this.testPsicologico = testPsicologico; - } -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/SoapEnvelopWrapper.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/SoapEnvelopWrapper.java.svn-base deleted file mode 100644 index f170048..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/SoapEnvelopWrapper.java.svn-base +++ /dev/null @@ -1,102 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElementRef; -import javax.xml.bind.annotation.XmlRootElement; -import javax.xml.bind.annotation.XmlType; - -/** - * Clase xml con los elementos de la salida del WS - * @author Manuel Ceped - * - */ -@XmlRootElement(name="Respuesta") -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType (propOrder={"cabeceraXml","ejecucionXml","resultadoXml"}) -public class SoapEnvelopWrapper implements Serializable { - - /** - * - */ - private static final long serialVersionUID = 3927908598537900589L; - - @XmlElementRef - private CabeceraXml cabeceraXml; - - @XmlElementRef - private EjecucionXml ejecucionXml; - - @XmlElementRef - private ResultadoXml resultadoXml; - - /** - * - */ - public SoapEnvelopWrapper() { - } - - - /** - * @param cabeceraXml - * @param ejecucionXml - * @param resultadoXml - */ - public SoapEnvelopWrapper(CabeceraXml cabeceraXml, - EjecucionXml ejecucionXml, ResultadoXml resultadoXml) { - super(); - this.cabeceraXml = cabeceraXml; - this.ejecucionXml = ejecucionXml; - this.resultadoXml = resultadoXml; - } - - - - /** - * @return the cabeceraXml - */ - public CabeceraXml getCabeceraXml() { - return cabeceraXml; - } - - /** - * @param cabeceraXml the cabeceraXml to set - */ - public void setCabeceraXml(CabeceraXml cabeceraXml) { - this.cabeceraXml = cabeceraXml; - } - - /** - * @return the ejecucionXml - */ - public EjecucionXml getEjecucionXml() { - return ejecucionXml; - } - - /** - * @param ejecucionXml the ejecucionXml to set - */ - public void setEjecucionXml(EjecucionXml ejecucionXml) { - this.ejecucionXml = ejecucionXml; - } - - /** - * @return the resultadoXml - */ - public ResultadoXml getResultadoXml() { - return resultadoXml; - } - - /** - * @param resultadoXml the resultadoXml to set - */ - public void setResultadoXml(ResultadoXml resultadoXml) { - this.resultadoXml = resultadoXml; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/TramiteXml.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/TramiteXml.java.svn-base deleted file mode 100644 index cf098be..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/modelo/.svn/text-base/TramiteXml.java.svn-base +++ /dev/null @@ -1,111 +0,0 @@ -/** - * - */ -package com.fp.frontend.webservices.snap.modelo; - -import java.io.Serializable; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlRootElement; - -/** - * Clase xml con los datos del tramite - * @author Manuel Cepeda - * - */ -@XmlRootElement(name="Tramite") -@XmlAccessorType(XmlAccessType.FIELD) -public class TramiteXml implements Serializable { - - /** - * - */ - private static final long serialVersionUID = -431606681146448613L; - - - @XmlElement(name="Tramite") - private String tramite; - @XmlElement(name="FechaEmision") - private String fechaEmision; - @XmlElement(name="FechaExpiracion") - private String fechaExpiracion; - @XmlElement(name="NumeroDocumento") - private String numeroDocumento; - - - /** - * - */ - public TramiteXml() { - } - - - public TramiteXml (String fechaEmision, - String fechaExpiracion, String numeroDocumento) { - super(); - - this.fechaEmision = fechaEmision; - this.fechaExpiracion = fechaExpiracion; - this.numeroDocumento = numeroDocumento; - } - - - /** - * @return the tramite - */ - public String getTramite() { - return tramite; - } - - /** - * @param tramite the tramite to set - */ - public void setTramite(String tramite) { - this.tramite = tramite; - } - - /** - * @return the fechaEmision - */ - public String getFechaEmision() { - return fechaEmision; - } - - /** - * @param fechaEmision the fechaEmision to set - */ - public void setFechaEmision(String fechaEmision) { - this.fechaEmision = fechaEmision; - } - - /** - * @return the fechaExpiracion - */ - public String getFechaExpiracion() { - return fechaExpiracion; - } - - /** - * @param fechaExpiracion the fechaExpiracion to set - */ - public void setFechaExpiracion(String fechaExpiracion) { - this.fechaExpiracion = fechaExpiracion; - } - - /** - * @return the numeroDocumento - */ - public String getNumeroDocumento() { - return numeroDocumento; - } - - /** - * @param numeroDocumento the numeroDocumento to set - */ - public void setNumeroDocumento(String numeroDocumento) { - this.numeroDocumento = numeroDocumento; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/entries b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/entries deleted file mode 100644 index 4a6a693..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/entries +++ /dev/null @@ -1,266 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -ConsultarRucResponse.java -file - - - - -2022-07-28T03:39:45.930557Z -d965e3c834dc3ab6d72090699c7e0aae -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1643 - -ConsultarRuc.java -file - - - - -2022-07-28T03:39:45.930557Z -58e5753df02e91730463c0d9be2289e5 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1391 - -package-info.java -file - - - - -2022-07-28T03:39:45.930557Z -02810f215cb2f32937123d39bf791016 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -136 - -ClienteRUC.java -file - - - - -2022-07-28T03:39:45.931557Z -29b1de816792c2c32074b25007df33a4 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -763 - -RucServicio.java -file - - - - -2022-07-28T03:39:45.931557Z -a9b9552fe718fdc4708d4412e11973c2 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -1403 - -ObjectFactory.java -file - - - - -2022-07-28T03:39:45.931557Z -043dd86f5eb69c0c1174124027771ded -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -2567 - -RucServicioService.java -file - - - - -2022-07-28T03:39:45.932557Z -4427a8ca9749425d4ee3cab18e1f7dd1 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 -has-props - - - - - - - - - - - - - - - - - - - - -3267 - diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ClienteRUC.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ClienteRUC.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ClienteRUC.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRuc.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRuc.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRuc.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRucResponse.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRucResponse.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ConsultarRucResponse.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ObjectFactory.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ObjectFactory.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicio.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicio.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicio.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicioService.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/RucServicioService.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/package-info.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/package-info.java.svn-base deleted file mode 100644 index 138f983..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/prop-base/package-info.java.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 10 -text/plain -END diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ClienteRUC.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ClienteRUC.java.svn-base deleted file mode 100644 index 90e790a..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ClienteRUC.java.svn-base +++ /dev/null @@ -1,30 +0,0 @@ -package com.fp.frontend.webservices.snap.ruc; - -import com.fp.common.logger.APPLogger; - -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - -/** - * Clase que maneja el servicio del SRI en la SNAP - * @author dcruz - * - */ -public class ClienteRUC { - - /** - * Obtiene los datos del contribuyente según el RUC enviado - * @param ruc - * @return - */ - public static Contribuyente obtenerRUC(String ruc) { - Contribuyente contribuyenteResult = null; - try { - RucServicioService rucServicioService = new RucServicioService(); - contribuyenteResult = rucServicioService.getRucServicioPort().consultarRuc(ruc); - } catch (Throwable e) { - APPLogger.getLogger().error(e.getMessage(), e); - } - return contribuyenteResult; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRuc.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRuc.java.svn-base deleted file mode 100644 index 9f03410..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRuc.java.svn-base +++ /dev/null @@ -1,60 +0,0 @@ - -package com.fp.frontend.webservices.snap.ruc; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlType; - - -/** - *

      Clase Java para consultarRuc complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="consultarRuc">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="ruc" type="{http://www.w3.org/2001/XMLSchema}string" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "consultarRuc", propOrder = { - "ruc" -}) -public class ConsultarRuc { - - protected String ruc; - - /** - * Obtiene el valor de la propiedad ruc. - * - * @return - * possible object is - * {@link String } - * - */ - public String getRuc() { - return ruc; - } - - /** - * Define el valor de la propiedad ruc. - * - * @param value - * allowed object is - * {@link String } - * - */ - public void setRuc(String value) { - this.ruc = value; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRucResponse.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRucResponse.java.svn-base deleted file mode 100644 index 1047896..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ConsultarRucResponse.java.svn-base +++ /dev/null @@ -1,63 +0,0 @@ - -package com.fp.frontend.webservices.snap.ruc; - -import javax.xml.bind.annotation.XmlAccessType; -import javax.xml.bind.annotation.XmlAccessorType; -import javax.xml.bind.annotation.XmlElement; -import javax.xml.bind.annotation.XmlType; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - - -/** - *

      Clase Java para consultarRucResponse complex type. - * - *

      El siguiente fragmento de esquema especifica el contenido que se espera que haya en esta clase. - * - *

      - * <complexType name="consultarRucResponse">
      - *   <complexContent>
      - *     <restriction base="{http://www.w3.org/2001/XMLSchema}anyType">
      - *       <sequence>
      - *         <element name="return" type="{http://sri.gov.ec/wsConsultaContribuyente}contribuyente" minOccurs="0"/>
      - *       </sequence>
      - *     </restriction>
      - *   </complexContent>
      - * </complexType>
      - * 
      - * - * - */ -@XmlAccessorType(XmlAccessType.FIELD) -@XmlType(name = "consultarRucResponse", propOrder = { - "_return" -}) -public class ConsultarRucResponse { - - @XmlElement(name = "return") - protected Contribuyente _return; - - /** - * Obtiene el valor de la propiedad return. - * - * @return - * possible object is - * {@link Contribuyente } - * - */ - public Contribuyente getReturn() { - return _return; - } - - /** - * Define el valor de la propiedad return. - * - * @param value - * allowed object is - * {@link Contribuyente } - * - */ - public void setReturn(Contribuyente value) { - this._return = value; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ObjectFactory.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ObjectFactory.java.svn-base deleted file mode 100644 index d3f2011..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/ObjectFactory.java.svn-base +++ /dev/null @@ -1,71 +0,0 @@ - -package com.fp.frontend.webservices.snap.ruc; - -import javax.xml.bind.JAXBElement; -import javax.xml.bind.annotation.XmlElementDecl; -import javax.xml.bind.annotation.XmlRegistry; -import javax.xml.namespace.QName; - - -/** - * This object contains factory methods for each - * Java content interface and Java element interface - * generated in the com.fp.webservices.snap.ruc package. - *

      An ObjectFactory allows you to programatically - * construct new instances of the Java representation - * for XML content. The Java representation of XML - * content can consist of schema derived interfaces - * and classes representing the binding of schema - * type definitions, element declarations and model - * groups. Factory methods for each of these are - * provided in this class. - * - */ -@XmlRegistry -public class ObjectFactory { - - private final static QName _ConsultarRuc_QNAME = new QName("http://ruc.snap.webservices.fp.com/", "consultarRuc"); - private final static QName _ConsultarRucResponse_QNAME = new QName("http://ruc.snap.webservices.fp.com/", "consultarRucResponse"); - - /** - * Create a new ObjectFactory that can be used to create new instances of schema derived classes for package: com.fp.webservices.snap.ruc - * - */ - public ObjectFactory() { - } - - /** - * Create an instance of {@link ConsultarRucResponse } - * - */ - public ConsultarRucResponse createConsultarRucResponse() { - return new ConsultarRucResponse(); - } - - /** - * Create an instance of {@link ConsultarRuc } - * - */ - public ConsultarRuc createConsultarRuc() { - return new ConsultarRuc(); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ConsultarRuc }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://ruc.snap.webservices.fp.com/", name = "consultarRuc") - public JAXBElement createConsultarRuc(ConsultarRuc value) { - return new JAXBElement(_ConsultarRuc_QNAME, ConsultarRuc.class, null, value); - } - - /** - * Create an instance of {@link JAXBElement }{@code <}{@link ConsultarRucResponse }{@code >}} - * - */ - @XmlElementDecl(namespace = "http://ruc.snap.webservices.fp.com/", name = "consultarRucResponse") - public JAXBElement createConsultarRucResponse(ConsultarRucResponse value) { - return new JAXBElement(_ConsultarRucResponse_QNAME, ConsultarRucResponse.class, null, value); - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicio.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicio.java.svn-base deleted file mode 100644 index 56215dc..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicio.java.svn-base +++ /dev/null @@ -1,42 +0,0 @@ - -package com.fp.frontend.webservices.snap.ruc; - -import javax.jws.WebMethod; -import javax.jws.WebParam; -import javax.jws.WebResult; -import javax.jws.WebService; -import javax.xml.bind.annotation.XmlSeeAlso; -import javax.xml.ws.RequestWrapper; -import javax.xml.ws.ResponseWrapper; -import ec.gov.sri.wsconsultacontribuyente.Contribuyente; - - -/** - * This class was generated by the JAX-WS RI. - * JAX-WS RI 2.2.6b21 - * Generated source version: 2.2 - * - */ -@WebService(name = "RucServicio", targetNamespace = "http://ruc.snap.webservices.fp.com/") -@XmlSeeAlso({ - com.fp.frontend.webservices.snap.ruc.ObjectFactory.class, - ec.gov.sri.wsconsultacontribuyente.ObjectFactory.class -}) -public interface RucServicio { - - - /** - * - * @param ruc - * @return - * returns ec.gov.sri.wsconsultacontribuyente.Contribuyente - */ - @WebMethod - @WebResult(targetNamespace = "") - @RequestWrapper(localName = "consultarRuc", targetNamespace = "http://ruc.snap.webservices.fp.com/", className = "com.fp.frontend.webservices.snap.ruc.ConsultarRuc") - @ResponseWrapper(localName = "consultarRucResponse", targetNamespace = "http://ruc.snap.webservices.fp.com/", className = "com.fp.frontend.webservices.snap.ruc.ConsultarRucResponse") - public Contribuyente consultarRuc( - @WebParam(name = "ruc", targetNamespace = "") - String ruc); - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicioService.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicioService.java.svn-base deleted file mode 100644 index ea9afdc..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/RucServicioService.java.svn-base +++ /dev/null @@ -1,97 +0,0 @@ - -package com.fp.frontend.webservices.snap.ruc; - -import java.net.MalformedURLException; -import java.net.URL; - -import javax.xml.namespace.QName; -import javax.xml.ws.Service; -import javax.xml.ws.WebEndpoint; -import javax.xml.ws.WebServiceClient; -import javax.xml.ws.WebServiceException; -import javax.xml.ws.WebServiceFeature; - -import com.fp.frontend.utility.MsgControlArmas; - - -/** - * This class was generated by the JAX-WS RI. - * JAX-WS RI 2.2.6b21 - * Generated source version: 2.2 - * - */ -@WebServiceClient(name = "RucServicioService", targetNamespace = "http://ruc.snap.webservices.fp.com/", wsdlLocation = "https://serviciosarmas.ccffaa.mil.ec:8085/serviceRUC?wsdl") -public class RucServicioService - extends Service -{ - - private final static URL RUCSERVICIOSERVICE_WSDL_LOCATION; - private final static WebServiceException RUCSERVICIOSERVICE_EXCEPTION; - private final static QName RUCSERVICIOSERVICE_QNAME = new QName("http://ruc.snap.webservices.fp.com/", "RucServicioService"); - - static { - URL url = null; - WebServiceException e = null; - try { - url = new URL(MsgControlArmas.getProperty("url_snap_servicio_ruc")); - } catch (MalformedURLException ex) { - e = new WebServiceException(ex); - } - RUCSERVICIOSERVICE_WSDL_LOCATION = url; - RUCSERVICIOSERVICE_EXCEPTION = e; - } - - public RucServicioService() { - super(__getWsdlLocation(), RUCSERVICIOSERVICE_QNAME); - } - - public RucServicioService(WebServiceFeature... features) { - super(__getWsdlLocation(), RUCSERVICIOSERVICE_QNAME, features); - } - - public RucServicioService(URL wsdlLocation) { - super(wsdlLocation, RUCSERVICIOSERVICE_QNAME); - } - - public RucServicioService(URL wsdlLocation, WebServiceFeature... features) { - super(wsdlLocation, RUCSERVICIOSERVICE_QNAME, features); - } - - public RucServicioService(URL wsdlLocation, QName serviceName) { - super(wsdlLocation, serviceName); - } - - public RucServicioService(URL wsdlLocation, QName serviceName, WebServiceFeature... features) { - super(wsdlLocation, serviceName, features); - } - - /** - * - * @return - * returns RucServicio - */ - @WebEndpoint(name = "RucServicioPort") - public RucServicio getRucServicioPort() { - return super.getPort(new QName("http://ruc.snap.webservices.fp.com/", "RucServicioPort"), RucServicio.class); - } - - /** - * - * @param features - * A list of {@link javax.xml.ws.WebServiceFeature} to configure on the proxy. Supported features not in the features parameter will have their default values. - * @return - * returns RucServicio - */ - @WebEndpoint(name = "RucServicioPort") - public RucServicio getRucServicioPort(WebServiceFeature... features) { - return super.getPort(new QName("http://ruc.snap.webservices.fp.com/", "RucServicioPort"), RucServicio.class, features); - } - - private static URL __getWsdlLocation() { - if (RUCSERVICIOSERVICE_EXCEPTION!= null) { - throw RUCSERVICIOSERVICE_EXCEPTION; - } - return RUCSERVICIOSERVICE_WSDL_LOCATION; - } - -} diff --git a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/package-info.java.svn-base b/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/package-info.java.svn-base deleted file mode 100644 index aafd254..0000000 --- a/frontend/src/main/java/com/fp/frontend/webservices/snap/ruc/.svn/text-base/package-info.java.svn-base +++ /dev/null @@ -1,2 +0,0 @@ -@javax.xml.bind.annotation.XmlSchema(namespace = "http://ruc.snap.webservices.fp.com/") -package com.fp.frontend.webservices.snap.ruc; diff --git a/frontend/src/main/resources/.svn/entries b/frontend/src/main/resources/.svn/entries deleted file mode 100644 index ce102f2..0000000 --- a/frontend/src/main/resources/.svn/entries +++ /dev/null @@ -1,368 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/resources -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -general_es.properties -file - - - - -2022-07-28T03:40:03.680634Z -86043316ac15f82240ff1dbb2b813a1d -2014-12-29T09:01:43.897077Z -3667 -dcruz - - - - - - - - - - - - - - - - - - - - - -14869 - -jasper.properties -file - - - - -2022-07-28T03:40:03.680634Z -75748eb58166e9936e768d2ce2942423 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -603 - -bpm_es.properties -file - - - - -2022-07-28T03:40:03.680634Z -3e4b8ee6de8e5286af86f857c467211b -2014-10-29T12:26:05.992964Z -2163 -wpatino - - - - - - - - - - - - - - - - - - - - - -2564 - -customer_es.properties -file - - - - -2022-07-28T03:40:03.680634Z -20f67663c1c35eed612816f1b2462486 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -961 - -firmas_es.properties -file - - - - -2022-07-28T03:40:03.680634Z -db1c532218537c0bf46d0f97ede664f2 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -338 - -viaticos_es.properties -file - - - - -2022-07-28T03:40:03.681634Z -bb642d86f0d306cf0e0765d689f8f947 -2014-09-11T11:36:06.951262Z -688 -jvaca - - - - - - - - - - - - - - - - - - - - - -4733 - -controlarmas_es.properties -file - - - - -2022-07-28T03:40:03.681634Z -7e02ea80e30ac1b19566d807d69f8c7f -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -47783 - -pentaho.properties -file - - - - -2022-07-28T03:40:03.681634Z -62a8dc122da0a52e005161a5514252e0 -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -349 - -security_es.properties -file - - - - -2022-07-28T03:40:03.681634Z -f5dc57b1b7bc490975ec0ec54c9f3e8a -2021-08-26T17:51:29.138509Z -4639 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -779 - -validation_es.properties -file - - - - -2022-07-28T03:40:03.681634Z -759c9a659644eb175741db66558e1f4d -2014-09-15T11:26:52.446762Z -804 -dcruz - - - - - - - - - - - - - - - - - - - - - -4920 - diff --git a/frontend/src/main/resources/.svn/text-base/bpm_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/bpm_es.properties.svn-base deleted file mode 100644 index 35f979f..0000000 --- a/frontend/src/main/resources/.svn/text-base/bpm_es.properties.svn-base +++ /dev/null @@ -1,105 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#Botones -btn_view_flow=Ver flujo -btn_cancell=Cancelar -btn_controlcambios=Existe cambios pendientes (YES) perder\u00E1 las modificaciones (NO) permite grabar -btn_create=Crear -btn_delete= -btn_edit= -btn_next= -btn_previous= -btn_query= -btn_save=Grabar -btn_update=Actualizar -btn_reload=Recargar -btn_detail=Detalle -btn_asign=Asignar -btn_accept=Aceptar -btn_exit=Salir -btn_initFlow=Iniciar flujo -btn_completeTask=Competar tarea -btn_sent=Enviar - -#Cabecera de tablas -htbl_monitoring=MONITOREO -htbl_groups=GRUPOS -htbl_users=USUARIOS -htbl_fields=CAMPOS -htbl_flows=FLUJOS -htbl_fieldTransaction=CAMPOS POR TRANSACCI\u00D3N -htbl_fieldMapping=MAPEO DE CAMPOS -htbl_flowsRules=FLUJOS / REGLAS - -lvh_groups=GRUPOS - - -#Etiquetas -lbl_origin_flow_transaction=Transacci\u00F3n originadora del flujo -lbl_selected_activity=Actividad seleccionada -lbl_waiting_time=Tiempo de espera -lbl_real_time=Tiempo real -lbl_comment=Comentario -lbl_commentate=Comentar -lbl_task_detail=Detalle tarea -lbl_code=C\u00F3digo -lbl_groups=Grupos -lbl_group=Grupo -lbl_description=Descripci\u00F3n -lbl_mail=Correo electr\u00F3nico -lbl_user=Usuario -lbl_field=Campo -lbl_experesion=Expresi\u00F3n lenguaje -lbl_package=Paquete -lbl_image=Imagen -lbl_message=Mensaje -lbl_type=Tipo -lbl_active=Activo -lbl_asociation=Asociaci\u00F3n -lbl_path=Ruta -lbl_filetype=Tipo archivo -lbl_todate=Fecha creaci\u00F3n hasta -lbl_fromdate=Fecha creaci\u00F3n desde -lbl_creation=Fecha creaci\u00F3n -lbl_ended=Fecha final -lbl_duration=Duraci\u00F3n -lbl_module=M\u00F3dulo -lbl_transaction=Transacci\u00F3n -lbl_version=Versi\u00F3n -lbl_name=Nombre -lbl_activityname=Actividad del flujo -lbl_created=Creaci\u00F3n -lbl_expectedtime=Tiempo de espera -lbl_realtime=Tiempo real -lbl_observation=Observaciones -lbl_response=Respuesta -lbl_userassign=Usuario asignado -lbl_branch=Sucursal -lbl_detail=Detalle -lbl_email=Correo electr\u00F3nico -lbl_office=Oficina -lbl_fieldscreen=Campo pantalla -lbl_task=Tarea -lbl_observations=Observaciones -lbl_notifyto=Notificar a -lbl_process=Proceso -lbl_registerdate=Fecha registro -lbl_resolution=Resoluci\u00F3n - -#Mensajes -msg_grouprequird=GRUPO REQUERIDO \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.netbeans-base b/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.netbeans-base deleted file mode 100644 index e814afe..0000000 --- a/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.netbeans-base +++ /dev/null @@ -1,1014 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00F1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#ETIQUETAS -#Solcitud -lbl_fechasolicitud=Fecha Solicitud -lbl_fechasolicitud_aucp=Fecha Solicitud / Envio AUCP -lbl_autorizacion=Autorizaci\u00F3n -lbl_estadoDocumento=Estado del Documento -lbl_datosempresaseg=Datos Empresa Seguridad -lbl_psicologicanecesaria=NO SE HA REGISTRADO LA EVALUACI\u00D3N PSICOL\u00D3GICA -lbl_datosevaluado=Datos del Evaluado -lbl_datoscompaniaseg=Datos de la Compan\u00EDa de Seguridad -lbl_valordeposito=Valor Dep\u00F3sito -lbl_centromedico=Centro M\u00E9dico -lbl_centroControl=Centro de Control -lbl_tramitesXcentro=Tramites por Centro Control -lbl_si=S\u00CD -lbl_nombreexcel=ReporteDeArmas -lbl_nombreexcelhistorico=ReporteHistoricoDeArmas -msg_fechafinal=LA FECHA FINAL DEBE SER MAYOR A LA FECHA INICIAL -lbl_examenfinalizado=EXMEN FINALIZADO -lbl_reprobado=Reprobado -lbl_compania=Compa\u00F1\u00EDa de Seguridad -msg_proceso=El proceso debe continuar cuando el arma se encuentra en bodega. -lbl_fechaprox=LA FECHA PARA SU PR\u00D3XIMO INTENTO ES\: -lbl_detallesdetramite=DETALLES DE TR\u00C1MITE -lbl_sancionpermiso=SANCI\u00D3N PERMISO -lbl_recomendaciones=Recomendaciones -msg_ingresesancion=INGRESE UNA SANCI\u00D3N -msg_realiceunasancion=APLIQUE UNA SANCI\u00D3N -lbl_dias=d\u00EDas -lbl_verificaCertificado=VERIFICAR INFORMACI\u00D3N CERTIFICADO -lbl_reimpresion=Reimpresi\u00F3n -lbl_tiempo=Tiempo -msg_evaluado=LA PERSONA SELECCIONADA TIENE UN REGISTRO DE EVALUACI\u00D3N PSICOL\u00D3GICA -msg_nopermiso=NO SE ENCUENTRA UN PERMISO PARA EL ARMA SELECCIONADA -msg_persona=SELECCIONE UNA PERSONA -lbl_imprimir=Generar Reporte -lbl_imprimirXls==Generar Reporte Excel -lbl_verificarDocumentos=VERIFICAR DOCUMENTOS -lbl_psicologico=Psicol\u00F3gica -msg_debesubir=DEBE SUBIR UN ARCHIVO DE EVALUACI\u00D3N -lbl_informeevaluacion=Informe Evaluaci\u00F3n -lbl_recomendacion=Recomendaci\u00F3n -lbl_psicologo=Psic\u00F3logo Responsable -lbl_fechaevaluacion=Fecha Evaluaci\u00F3n -lbl_fechaexpiracion=Fecha Caducidad -lbl_fechadeexpiracion= Fecha de Expiraci\u00F3n -lbl_planInspeccionAnual=PlanDeInspecci\u00F3nAnual -msg_archivoImportacionSerie=EL ARCHIVO DE IMPORTACI\u00D3N NO DEBE CONTENER EL N\u00DAMERO DE SERIE -msg_serieVacia=La serie del arma no debe estar vac\u00EDa. -msg_limitecantidadarma=La cantidad del Arma de Fuego debe ser igual a 1 unidad -msg_claseVacia=La clase del arma no debe estar vac\u00EDa. -msg_tipoVacio=El tipo de arma no debe estar vac\u00EDo. -msg_marcaVacia=La marca del arma no debe estar vac\u00EDa. -msg_longitudVacia=La longitud del arma no debe estar vac\u00EDa. -msg_longitudNoVacia=La longitud del arma debe estar vac\u00EDa. -msg_calibreVacio=El calibre no debe estar vac\u00EDo. -msg_calibreNoVacio=El calibre debe estar vac\u00EDo. -msg_cantidadVacia=La cantidad no debe estar vac\u00EDa. -msg_cantidadNoVacia=La cantidad debe estar vac\u00EDa. -msg_unidadMedidaCantidadVacia=La U. Medida Cantidad no debe estar vac\u00EDa. -msg_unidadMedidaCantidadNoVacia=La U. Medida Cantidad debe estar vac\u00EDa. -msg_unidadMedidaSoloUna=Solo debe ingresar una unidad de medida. -msg_unidadMedidaNoExiste=La unidad de medida ingresada no existe. -msg_pesoVacio=El peso no debe estar vac\u00EDo. -msg_pesoNoVacio=El peso debe estar vac\u00EDo. -msg_unidadMedidaPesoVacia=La U. Medida Peso no debe estar vac\u00EDa. -msg_unidadMedidaPesoNoVacia=La U. Medida Peso debe estar vac\u00EDa. -msg_cantidadValorNumerico=La cantidad debe ser un valor n\u00FAmerico. -msg_pesoValorNumerico=El peso debe ser un valor num\u00E9rico. -msg_fuegosPirotecnicos=fuegos pirot\u00E9cnicos -msg_datosDuplicados=Existen datos duplicados. -msg_sustanciaQuimica=sustancia qu\u00EDmica -msg_calibreNoExisteCatalogo=El calibre no existe en el cat\u00E1logo. -msg_claseNoExisteCatalogo=No existe la clase en el cat\u00E1logo. -msg_longitudNoExisteCatalogo=No existe la longitud en el cat\u00E1logo. -msg_noExisteTipoArmaCatalogo=No existe el tipo de arma en el cat\u00E1logo. -msg_colorNoExisteCatalogo=No existe el color en el cat\u00E1logo. -msg_marcaNoExisteCatalogo=No existe la marca en el cat\u00E1logo. -msg_unicidad_agencia=S\u00D3LO UNA AGENCIA DEBE ESTAR SELECCIONADA -msg_seleccione_nombre=SELECCIONE UN NOMBRE O RAZ\u00D3N SOCIAL - -lbl_ordenTrabajoCustodios=OrdenDeTrabajoParaCustodios -lbl_guiaLibreTransito=Gu\u00EDa Libre de Tr\u00E1nsito -lbl_reportebalistico=ReporteRegistroBal\u00EDstico -lbl_fechaActual=Fecha Actual -lbl_actaDeDevolucion=ActaDevoluci\u00F3n -lbl_asuntoNotificarFecha=COMANDO CONJUNTO DE LAS FF. AA. - Notificaci\u00F3n Devoluci\u00F3n. -lbl_asuntoNotificarNovedad=COMANDO CONJUNTO DE LAS FF. AA. - Notificaci\u00F3n Novedad -lbl_notificarTramiteAnulado=Notificar Tr\u00E1mite Anulado -msg_asuntoNotificacionGuiaTranistoAnulada=COMANDO CONJUNTO DE LAS FF.AA. - Notificaci\u00F3n de tr\u00E1mite anulado en la Solicitud de Gu\u00EDa de Libre Tr\u00E1nsito. -msg_cuerpoNotificacionGuiaTransitoAnulada=DEPARTAMENTO DE CONTROL DE ARMAS
      Estimado
      {0}
      Presente.-
      Mediante la presente notificamos que su solicitud N\u00BA {1} para Emisi\u00F3n de Gu\u00EDa de Libre Tr\u00E1nsito ha sido rechazada debido a las siguientes observaciones\:

      {2}

      Atentamente,

      {3}
      {4}

      NOTA\:
      Este mensaje fue enviado autom\u00E1ticamente por el sistema, por favor no responda a esta cuenta de correo. -lbl_aprobacionLibreTransito=APROBACI\u00D3N DE LIBRE TR\u00C1NSITO -correoDesde=notificacion@controlarmas.ccffaa.mil.ec -correoDestino=ogarcia@bupartech.com -lbl_justificacion=Justificaci\u00F3n -cuerpo.mensaje.envio.correo=DEPARTAMENTO DE CONTROL DE ARMAS

      Estimado(a)
      {0}
      Presente.-

      El trámite de devolución No.{1} ha sido aprobado, por favor acercarse al COMANDO CONJUNTO DE LAS FF.AA a partir de {2} en horario de 8\:00 a 16\:00 para proceder con la devolución del material solicitado.

      Atentamente,

      {3}
      {4}

      NOTA\:
      Este mensaje fue enviado automáticamente por el sistema, por favor no responda a esta cuenta de correo. -cuerpo.mensaje.envio.correo.novedad1=DEPARTAMENTO DE CONTROL DE ARMAS

      Estimado(a)
      {0}
      Presente.-

      El trámite de devolución No. {1}, no puede continuar porque se presenta las siguientes novedades\: -cuerpo.mensaje.envio.correo.novedad2={0}

      Atentamente,

      {1}
      {2}

      NOTA\:
      Este mensaje fue enviado automáticamente por el sistema, por favor no responda a esta cuenta de correo. -cedulaDuplicada=Ya existe un custodio con esa c\u00E9dula. - - -btn_enviarNotificacion=Enviar Notificaci\u00F3n -btn_cancelar=Cancelar -htbl_sitiosalmacenamiento=SITIOS DE ALMACENAMIENTO -lbl_latitud=Latitud -lbl_estadosolicitud=Estado Solicitud -lbl_origenadquisicion=Origen de Adquisici\u00F3n -lbl_paisorigen=Pa\u00EDs -lbl_telfijo=Tel\u00E9fono Fijo -lbl_telcelular=Tel\u00E9fono Celular -lbl_correo=Correo Electr\u00F3nico -lbl_datoscapacidad=Datos Capacidad -lbl_almacenamiento=Almacenamiento -lbl_manejoarmas=Manejo de Armas -lbl_expiro_fecha_deposito=LA FECHA DE SOLICITUD EXPIR\u00D3, POR FAVOR VUELVA A INGRESAR EL TR\u00C1MITE NUEVAMENTE. -msg_error_valorDepositoNegativoCero=EL VALOR DE DEP\u00D3SITO DEBE SER MAYOR A CERO. -msg_error_vVerificDiferenteDeVAPagar=EL VALOR VERIFICADO ES DIFERENTE DEL VALOR A PAGAR Y SE ANULAR\u00C1 -lbl_seleccionar=Seleccionar -lbl_seleccionartodos= Seleccionar Todos -lbl_buscar=Buscar -lbl_cargararchivo=Cargar Archivo -lbl_requisitossolicitud=Requisitos Solicitud -lbl_seleccionarguardias=SELECCIONAR GUARDIAS DE SEGURIDAD -lbl_seleccionararmas=SELECCIONAR ARMAS -lbl_seleccionararticulos=SELECCIONAR ART\u00CDCULOS -lbl_detallematerialregistro=DETALLE MATERIAL REGISTRADO -msg_tamano_archivo_requisitos_jpg_png=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.jpg .png) -msg_tamano_archivo_requisitos_jpg_png_1=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 1 MB (.jpg .png) -msg_tamano_archivo_requisitos=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_requisitos_5=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 5 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 2 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_requisitos_pdf=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 2 MB (.pdf) -msg_tamano_archivo_requisitos_pdf_5=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 5 MB (.pdf) -msg_tamano_archivo_requisitos_pdf_jpg=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL PRIMER ARCHIVO ES DE 1 MB (.pdf) Y EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.jpg .png) -msg_escanear_documentos_originales=SE DEBE ESCANEAR LOS DOCUMENTOS ORIGINALES Y ACTUALIZADOS -#Seleccion de Agencias -lbl_seleccionaragencias=SELECCIONAR AGENCIAS/SUCURSALES -lbl_detalleAgencias=DETALLE DE AGENCIAS / SUCURSALES -lbl_responsable=Nombre y Apellido del Responsable -lbl_nom_apell_super=Nombre y Apellido del Supervisor -lbl_crearAgencia=CREAR AGENCIA - SUCURSAL -lbl_modificarAgencia=EDITAR AGENCIA - SUCURSAL -lbl_verAgencia=VER AGENCIA - SUCURSAL -btn_seleccionarArmas=Seleccionar Armas -lbl_datosCompania=DATOS COMPA\u00D1\u00CDA -lbl_datosAgencia=DATOS AGENCIA / SUCURSAL -lbl_fechaAutorizacion=Fecha Autorizaci\u00F3n -lbl_telefono=Tel\u00E9fono -lbl_documentos=DOCUMENTOS -lbl_ubicacion= Seleccione ubicaci\u00F3n por -lbl_coodenadas=Coordenadas -lbl_fechaEmision=Fecha de Emisi\u00F3n -lbl_numeroDeDocumento=No. Documento -lbl_listadoguardias=LISTADO DE GUARDIAS DE SEGURIDAD -lbl_eliminaragencia=ELIMINAR AGENCIA-SUCURSAL -lbl_eliminarmaterial=ELIMINAR MATERIAL -lbl_confirmacioneliminar=Est\u00E1 seguro de eliminar el registro? -msg_error_armas_inexistentes=NO EXISTEN ART\u00CDCULOS REGISTRADOS PARA ESTE TR\u00C1MITE -#Documentos - - -#Evaluaciones -lbl_tipoEvaluacion=Tipo Evaluaci\u00F3n -lbl_numerodocumento=No. Documento -lbl_tipoPersona=Tipo Persona -lbl_jurisdiccion=Jurisdiccin -lbl_descripcionPregunta=Descripci\u00F3n -lbl_numeroPregunta=No. Pregunta -tab_verRespuestas=Ver Respuestas -tab_Respuestas=Respuestas -tab_respuesta=Respuesta -tab_respuestaCorrecta=Respuesta Correcta -msg_seleccionepersona=POR FAVOR SELECCIONE UNA PERSONA -msg_tipoevaluacion=POR FAVOR INGRESE UN TIPO DE EVALUACIN -msg_numerointentos=USTED HA SUPERADO EL NMERO DE INTENTOS MXIMOS PARA LA EVALUACIN -msg_fechaprox=LA FECHA PARA SU PRXIMO INTENTO ES: -msg_ingreseresp=INGRESE UNA RESPUESTA -lbl_evaluacion=Evaluaci\u00F3n -lbl_detallevaluacion=Detalle de Evaluaciones -lbl_estadoevaluacion=Estado Evaluaci\u00F3n -lbl_fechadeevaluacion=Fecha Examen Psicol\u00F3 gico -lbl_fecharegistrotest=Fecha Registro Test -lbl_resultado=Resultado -lbl_resultado_busqueda=Resultados de b\u00FAsqueda -#tramite -lbl_cantidad=Cantidad -lbl_clase=Clase -lbl_tipo=Tipo -lbl_longitud=Longitud -lbl_calibre=Calibre -lbl_tipotramite=Tipo Tr\u00E1mite -lbl_tramite=Tr\u00E1mite -lbl_numeroTramite=No. Tr\u00E1mite -lbl_requisito=Requisito -lbl_descripcionrequisito=Descripci\u00F3n Requisito -lbl_tipopersona=Tipo Persona -lbl_tipoidentiicacion=Tipo Documento -lbl_identificacion=No. Documento -lbl_identificacionTxt=Identificaci\u00F3n -lbl_inicarFlujo=Continuar Tr\u00E1mite -lbl_imagencargada=Imagen Almacenada -lbl_estadocarga=Estado Carga -lbl_estadotramite=Estado Tr\u00E1mite -lbl_usoactividad=Uso / Actividad -lbl_NoTramite=No. Tr\u00E1mite -lbl_fechaDeDeposito=Fecha Dep\u00F3sito -lbl_numeroDeDeposito=No. Combrobante Dep\u00F3sito -lbl_factura=No. Factura / Documento -lbl_registro=No. Registro -lbl_valorDeDeposito=Valor Dep\u00F3sito -lbl_cargarComprobante=Cargar Comprobante -lbl_cargarResolucion=Cargar Resoluci\u00F3n -lbl_numeroDeTramite=No. Tr\u00E1mite -lbl_numeroDeComprobante=No. Comprobante -lbl_noComprobante=No. Comprobante -lbl_valorVerificado=Valor Verificado -lbl_archivoComprobante=Archivo Comprobante -lbl_imprimirComprobante=Imprimir Comprobante -lbl_ver=Ver -fct_registrarDeposito=Registrar Comprobante Dep\u00F3sito -fct_validarDeposito=Validar Comprobante Dep\u00F3sito - -# FIELDSETS -field_tipotramite=Datos Tipo Tr\u00E1mite -field_ubicacion=Ubicaci\u00F3n -field_tiposarmasexplosivos=Tipos Armas y Explosivos: -lbl_tipoTramite=Tipo Tr\u00E1mite -lbl_usoActividad=Uso/Actividad -lbl_costo=Costo -lbl_tipocosto=Tipo Costo -lbl_vigenciameses=Vigencia Meses -lbl_tipodocumento=Tipo Documento -lbl_usd=USD -lbl_registroguardia=Registro Guardia -lbl_registroarmas=Registro Armas -lbl_deposito=Dep\u00F3sito -lbl_registroagenciassucursales=Registro Agencias y Sucursales -lbl_requiereevaluacion=Requiere Evaluaci\u00F3n -lbl_requiereinspeccion=Requiere Inspecci\u00F3n -lbl_dochabilitantes=Documentos Habilitantes -lbl_docsolicitudcertificado=Solicitud de Certificado -lbl_certificadofiscal=Certificado Fiscal -lbl_actaentregareceptionSolicitud=ACTA ENTREGA RECEPCI\u00D3N - SOLICITUD -lbl_docactaentregareceptionSolicitud=Documento Acta Entrega Recepci\u00F3n - Solicitud -lbl_costoUSD=Costo(USD) -lbl_tipoautorizacion=Tipo Autorizaci\u00F3n -lbl_datostramite=DATOS DEL TR\u00C1MITE -#Tipo Archivo -lbl_tipoarchivo=Tipo Documento - -lbl_institucion=Instituci\u00F3n -lbl_nombre=Nombre -lbl_jefecentro=Jefe Centro -lbl_grado=Grado -lbl_direccion=Direcci\u00F3n -lbl_nueva_jurisdiccion=NUEVA JURISDICCI\u00D3N -lbl_jurisdicciones=Jurisdicciones -lbl_datosdejurisdicciones=DATOS DE JURISDICCIONES -lbl_nombrerazonsocial=Nombre/Raz\u00F3n Social -lbl_nombrerazonsocialcomprador=Comprador/Consumidor -lbl_numerodetramite=No. Tr\u00E1mite -lbl_numerocustodios=No. Custodios -lbl_No=No -lbl_solicitud=Solicitud -lbl_documento=Documento -lbl_noDocumento=No. Documento -lbl_noDocumentoPsicologo=No. Documento Psiclogo -lbl_tipodocumentoPsicologo=Tipo Documento Psiclogo -lbl_aprobado=Aprobado -lbl_aprobacion=APROBACI\u00D3N -lbl_generarValorACancelar=GENERAR VALOR A CANCELAR -lbl_valorCancelar=Valor a Cancelar -lbl_valorAPagar=Valor a Pagar - -lbl_accion=Acci\u00F3n -lbl_aceptar=Aceptar - -lbl_secuencial=Secuencial -lbl_tipoarmas=Tipo Arma -lbl_clasearma=Clase Arma -lbl_unidad=Unidad de Control -lbl_unidaddestino=Unidad de Control Destino - -lbl_unidadmedida=Unidad Medida -lbl_cupopeso=Cupo Peso -lbl_fecha=Fecha -lbl_tiporegistro=Tipo Registro -lbl_crearcupoautorizado=DETALLE DE CUPOS AUTORIZADOS -lbl_detalleunidadesmedida=DETALLE UNIDADES DE MEDIDA -lbl_unidadTipoClase=UNIDAD TIPO CLASE -lbl_cupo=Cupo -lbl_creartipounidad=CREAR UNIDAD DE MEDIDA -lbl_listadorequisitos=LISTADO DE REQUISITOS -lbl_datossolicitud=DATOS SOLICITUD -lbl_ordendetrabajono=Orden Trabajo No. -lbl_centrodecontrol=Centro Control -lbl_organismocontroldestino=Organismo de Control Destino -lbl_fechainspeccion=Fecha Inspecci\u00F3n -lbl_propietariorepresentantelegal=PROPIETARIO O REPRESENTANTE LEGAL -lbl_referencia=Referencia -lbl_representantelegal=Representante Legal -lbl_sitioinspeccion=SITIO INSPECCI\u00D3N -lbl_responsablem=RESPONSABLE -lbl_numerodecedula=No. C\u00E9dula -lbl_nombresapellidos=Nombres y Apellidos -lbl_telefonodomicilio=Tel\u00E9fono Domicilio -lbl_resultadoinspeccion=RESULTADO INSPECCI\u00D3N -lbl_continuartramiteproceso=Continuar Tr\u00E1mite o Proceso -lbl_negartramiteproceso=Negar Tr\u00E1mite o Proceso -lbl_aplicadecomiso=Aplica Decomiso -lbl_documentoinspeccion=Documento Inspecci\u00F3n -lbl_documentoinspeccionfecha=fecha -lbl_documentoinspeccioncodeuser=Identificaci\u00F3n -lbl_documentoinspeccioncodenombre=Nombres -lbl_fotografias=Fotograf\u00EDas -lbl_bodega=Bodega -lbl_sitiosalmacenanmiento=SITIOS DE ALMACENAMIENTO -lbl_registrarresultadoinspeccion=REGISTRAR RESULTADO INSPECCI\u00D3N -lbl_tipodecomercio=Tipo de Comercio -lbl_sitiosalmacenamiento=SITIOS DE ALMACENAMIENTO -lbl_tramites=TR\u00C1MITES -lbl_descripcionCorta=Descripci\u00F3n Corta -lbl_ingresodedecomiso=INGRESO DE DECOMISO / INCAUTACI\u00D3N -lbl_lugardeldecomiso=LUGAR DEL DECOMISO / INCAUTACI\u00D3N -lbl_datosdeldecomiso=DATOS DEL DECOMISO / INCAUTACI\u00D3N -lbl_tipodeproceso=Tipo Proceso -lbl_numerorecibo=No. Recibo -lbl_numerotransaccion=No. Transacci\u00F3n -lbl_fechadecomiso=Fecha Decomiso / Incautaci\u00F3n -lbl_organismocontrol=Organismo de Control -lbl_detalledeldecomiso=DETALLE DEL DECOMISO / INCAUTACI\u00D3N -lbl_datosdelciudadano=Datos del Ciudadano -lbl_decomisadopor=Control Realizado por -lbl_numerocedula=No. C\u00E9dula -lbl_funcionario=Funcionario -btn_registromaterial=Registro Material -btn_generarreciboregistro=Generar Recibo Registro -btn_consultarmaterial=Consultar Material -btn_entregarmaterial=Entregar Material -lbl_sinportador=Sin Portador -lbl_cant=Cant -lbl_umedida=U. Medida -lbl_fecdecimiso=Fecha Decomiso -lbl_motivo=Motivo -lbl_portadorarma=Portador Arma -lbl_registrodematerialdecomisadoincauto=REGISTRO MATERIAL -lbl_registrodematerialicautado=REGISTRO DE MATERIAL CUSTODIA TEMPORAL -lbl_propietario=Propietario -lbl_subir=Subir -lbl_cancelar=Cancelar -lbl_mensajearchivoinvalidom=EL TAMA\u00D1O DEL ARCHIVO DEBE SER M\u00C1XIMO DE -lbl_5mb=5 MB -lbl_2mb=2 MB -lbl_1mb=1 MB -lbl_sinidentificacion=Sin Identificaci\u00F3n -lbl_decomisoincautacion=Decomiso / Incautaci\u00F3n -lbl_cabecera=Cabecera -lbl_pie=Pie -lbl_crearsitiosdealmacenamiento=CREAR / EDITAR -lbl_modificarsitiosdealmacenamiento= CREAR / EDITAR -lbl_datosdecustodia=DATOS DE CUSTODIA -lbl_fechadecustodia=Fecha de Custodia -lbl_aerolinea=Aerolnea -lbl_novuelo=No. Vuelo -lbl_lugarOrigenm=LUGAR ORIGEN -lbl_lugarDestinom=LUGAR DESTINO -lbl_aeropuerto=Aeropuerto -btn_material=Material -lbl_ingresodedatosdesitiosdealmacenamiento=INGRESO DE DATOS DE SITIOS DE ALMACENAMIENTO -lbl_numerotransaccionenvio=No. Transacci\u00F3n Env\u00CDo -lbl_numerotransaccionrecepcion=No. Transacci\u00F3n Recepci\u00F3n -lbl_fecdecomiso=Fec Decomiso -htbl_detalledelmaterialm=DETALLE DEL MATERIAL -lbl_cantidadpeso=Cantidad/Peso -lbl_ingresocustodiatemporalenaeropuerto=INGRESAR CUSTODIA TEMPORAL EN AEROPUERTO -lbl_nodecomiso=No. Decomiso -btn_generaracta=Generar Acta -lbl_costocustodio=Costo Custodio -btn_iniciarproceso=Continuar Tr\u00E1mite -lbl_multa=Multa -lbl_flujotramite=Flujo Tr\u00E1mite -lbl_numeromaximoarmas=No M\u00E1ximo Armas -lbl_estadosarma=Estados Arma -lbl_tramitepadre=Tr\u00E1mite Padre -lbl_codigoplanificacion=C\u00F3digo Planificaci\u00F3n -lbl_mes=Mes -lbl_planificacioninsoeccion=PLANIFICACI\u00D3N DE INSPECCIONES -lbl_logo=Logo -lbl_limpiar=Limpiar -lbl_unidadcontrolrecepcion=Unidad de Control -lbl_unidadrecepcion=UNIDAD DE RECEPCI\u00D3N -lbl_sancionable=Sancionable -lbl_validaFechaExpiracion=Visualizar Fecha expiraci\u00F3n -lbl_validaPorFechaExpiracion=Visualizar por Fecha expiraci\u00F3n -lbl_validaCaducidadTramPadre=Validar caducidad tr\u00E1mite padre -lbl_validaCaducidadTramPadreAlt=Validar caducidad tr\u00E1mite padre alterno -lbl_seleccionararma=Seleccionar Arma -htbl_armas=Armas -lbl_dochabilitante=Doc. Habilitante -lbl_fechadochabilitante=Fecha Doc. Habilitante -lbl_fechasancion=Fecha Sanci\u00F3n -lbl_confirmacionguardarsancion=Est\u00E1 seguro de guardar la sanci\u00F3n ? -lbl_seleccionecentrocontroltramite=Seleccione el Centro de Control a Realizar el Tr\u00E1mite -lbl_longitud_minima=Longitud M\u00EDnima -lbl_numero_=N\u00FAmeros -lbl_caracteres_especiales=Caracter Especial -lbl_mayusculas=May\u00FAsculas -lbl_parametros_clave=La clave debe cumplir lo siguinete -btn_ubicar=Ubicar -btn_guardar_coordenadas =Guardar Coordenadas -nota_coordenadas =Al ingresar las coodernadas, verificar en el mapa que corresponda a la Ubicaci\u00F3n que esta haciendo referencia. -#TITULOS - -#ETIQUETAS CABECERA TABLAS -htbl_tipotramite=Tipo Tr\u00E1mite -htbl_requisitos=Requisitos -htbl_requisitosportipotramite=Requisitos por Tipo Tr\u00E1mite -htbl_TiposDeArmasExplosivos=TIPOS DE ARMAS Y EXPLOSIVOS -htbl_datospersonales=Datos Personales -htbl_seleccionetramite=SELECCIONE EL TR\u00C1MITE - -#ETIQUETAS TABS -tab_solgenerales=Datos Generales -tab_solrequisitos=Ingresar Requisitos -tab_requisitos=Requisitos -tab_solarmas=Seleccionar Armas -tab_solmateriales=Seleccionar Materiales -tab_solarticulos=Seleccionar Art\u00EDculos -tab_solguardias=Seleccionar Guardias -tab_tramite=Datos Tr\u00E1mite -tab_agencias=Seleccionar Agencias -tab_documentos=Listar Documentos -tab_depositoportramite=Dep\u00F3sito por Tr\u00E1mite -tab_depositoporcustodio=Dep\u00F3sito por Custodio -tab_seleccionar=Seleccionar -tab_eliminar=Eliminar -tab_modificar=Editar - - -#REQUISITO POR TIPO DE TRAMITE -lbl_depositoportramite=Dep\u00F3sito por Tr\u00E1mite -lbl_depositoporcustodio=Dep\u00F3sito por Custodio - -#RECEPCION/VERIFICACION DE ARMAS -lbl_recepcionarmas=Registro Entrega Armas -lbl_categoria=Categor\u00EDa -lbl_fecharegistro=Fecha Registro -lbl_provincia=Provincia -lbl_canton=Cant\u00F3n -lbl_ciudad=Ciudad -lbl_parroquia=Parroquia -lbl_fecharecepcion=Fecha Recepci\u00F3n -lbl_informacionarmas=INFORMACI\u00D3N DE ARMAS -lbl_informaciondocumentos=INFORMACI\u00D3N DE DOCUMENTOS -lbl_informacionagenciassucursales=INFORMACI\u00D3N DE AGENCIAS SUCURSALES -lbl_informacionpersonal=INFORMACI\u00D3N PERSONAL -lbl_codigo=C\u00F3digo -lbl_marca=Marca -lbl_modelo=Modelo -lbl_serie=Serie -lbl_color=Color -lbl_estado=Estado -lbl_estado_arma=Estado Arma -lbl_entregado=Entregado -lbl_pais=Pa\u00EDs Fabricaci\u00F3n - -#FICHA TECNICA ARMAS -lbl_observacion=Observaci\u00F3n -lbl_aptituddisparo=Aptitud Disparo -lbl_balastestigo=Balas Testigo -lbl_bainastestigo=Vainas Testigo -lbl_apruebaevaluacion=Aprueba Evaluaci\u00F3n -lbl_recuperadorbalisitico=RECUPERADOR BALISTICO -lbl_impronta=Impronta -lbl_fichatecnica=Ficha T\u00E9cnica -lbl_fotografia=Fotograf\u00EDa -lbl_archivocincomegas=5242880 -lbl_archivocuatromegas=4194304 -lbl_archivotresmegas=3145728 -lbl_archivodosmegas=2097152 -lbl_archivounmega=1048576 -lbl_mensajearchivoinvalido=El tama\u00F1o del archivo debe ser m\u00E1ximo de -lbl_observacionrequerido=El campo observaci\u00F3n es requerido -lbl_bainastestigorequerido=El campo vainas testigo es requerido -lbl_balastestigorequerido=El campo balas testigo es requerido -lbl_aptituddisparorequerido=El campo aptitud de disparo es requerido -lbl_informacionguardias=INFORMACI\u00D3N DE GUARDIAS -lbl_pruebasbalistica=PRUEBAS BALISTICA -lbl_impresionarma1=EL ARMA CON C\u00D3DIGO -lbl_impresionarma2=\ NO HA SIDO IMPRESA -lbl_isimpreso=FUE IMPRESO -lbl_imprimirarma=DEBE GENERAR REPORTE DEL ARMA ANTES DE ACEPTAR -lbl_subidaimagenes=LA SUBIDA DE IMAGENES ES REQUERIDA -lbl_subidaimagenes2=LA SUBIDA DE IMAGENES ES REQUERIDA. NO SE ENCUENTRAN SUBIDAS TODAS LAS IMAGENES -#LOV -lvh_requisitotramite=SELECCIONAR TR\u00C1MITE -lvh_clase=CLASE -lvh_longitud=LONGITUD -lvh_tipo=TIPO -lvh_calibre=CALIBRE -lvh_tipoarma=TIPO ARMA - - -#BOTONES -btn_descargarDocumentos=Descargar Documentos -btn_descargarDocumento=Descargar Documento -#Botones -btn_jurisdiccion=Jurisdicci\u00F3n -btn_buscar=Buscar -btn_crear=Crear -btn_eliminar=Eliminar -btn_imprimir=Generar Reporte -#MENSAJES -#msg_importeTotal=IMPORTE TOTAL DE VI\u00C1TICOS Y GASTOS DE VIAJES COMPROBADOS - -#Validacion de Tramite para la Gua de Libre Trnsito -lbl_datosTramite=DATOS TR\u00C1MITE -lbl_fechaSolicitud=Fecha Solicitud -lbl_tipoTramite2=Tipo Tr\u00E1mite - -lbl_tipoDocumento=Tipo Documento -lbl_numeroDocumento=No. Documento -lbl_nombreRazonSocial=Nombre / Raz\u00F3n Social -lbl_vendedor=Vendedor -lbl_lugarOrigen=Lugar Origen -lbl_lugarOrigenProvincia=Lugar Origen Provincia -lbl_lugarOrigenCanton=Lugar Origen Cant\u00F3n -lbl_comprador=Comprador -lbl_lugarDestino=Lugar Destino -lbl_lugarDestinoProvincia=Lugar Destino Provincia -lbl_lugarDestinoCanton=Lugar Destino Cant\u00F3n -lbl_estadoTramite=Estado Tr\u00E1mite -lbl_informacionArmas=INFORMACI\u00D3N ARMAS -lbl_numero=No. -lbl_tipo2=Tipo -lbl_calibre2=Calibre -btn_aceptar=Aceptar - -#Orden de trabajo para custodios -lbl_ordenTrabajo=ORDEN DE TRABAJO -lbl_numeroOrden=No. Orden Trabajo -lbl_fechaOrden=Fecha Orden Trabajo -lbl_documentoReferencia=Documento Referencia -lbl_comisionActividad=Comisi\u00F3n/Actividad -lbl_empresaSolicita=Empresa Solicita -lbl_lugarDireccionComision=Lugar y Direcci\u00F3n de la Comisi\u00F3n -lbl_ruta=Ruta -lbl_tiempoEstimado=Tiempo Estimado -lbl_fechaInicio=Fecha Inicio -lbl_fechaFinalizacion=Fecha Finalizaci\u00F3n -lbl_observaciones=Observaciones -lbl_datosCustodios=DATOS DE CUSTODIOS -lbl_nombreParticipante=Nombre Participante -lbl_apellidos=Apellidos -lbl_nombres=Nombres -lbl_cedula=No. C\u00E9dula -lbl_modificar=Editar -lbl_eliminar=Eliminar -lbl_ingresarCustodios=CREAR / EDITAR -lbl_modificarCustodios=CREAR / EDITAR -errorCedula=El n\u00FAmero ingresado no es v\u00E1lido. Por favor verificar. -#MENSAJES -#msg_importeTotal=IMPORTE TOTAL DE VI\u00C1TICOS Y GASTOS DE VIAJES COMPROBADOS - -#Actualizar Datos Generales -lbl_nombreRepresentanteLegal=Nombre Representante Legal -lbl_cedulaRepresentante=C\u00E9dula Representante Legal -lbl_actividadEconomica=Actividad Econ\u00F3mica -lbl_paisOrigen=Pa\u00EDs Origen -lbl_telefonoConvencional= Tel\u00E9fono Convencional -lbl_tlfCelular=Tel\u00E9fono Celular -lbl_estadoCivil=Estado Civil -lbl_genero=G\u00E9nero -lbl_estatura=Estatura (metros) -lbl_profesion=Profesi\u00F3n -lbl_correoElectronico=Correo Electr\u00F3nico -lbl_datosCapacidad=DATOS DE CAPACIDAD -lbl_manejoArmas=Manejo Armas -lbl_listarInformacion=LISTAR INFORMACI\u00D3N -lbl_seleccionarTodos=Seleccionar Todos -btn_registrarNovedad=Registrar Novedad -btn_actaDevolucion=Acta Devoluci\u00F3n -lbl_noTramite=No. Tr\u00E1mite -lbl_verificar=Verificar -lbl_registrarNovedad=Registrar Novedad -lbl_actaDevolucion=Acta Devoluci\u00F3n -lbl_unidadcontrol=Unidad De Control -xpathFujoDocumentoHabilitante=emisiondocumentohabilitante - -#Etiquetas para datos sanciones -lbl_tipoDeFalta=Tipo de Falta -lbl_falta=Falta -lbl_tiempoEnDias=Tiempo(d\u00EDas) -lbl_sancion=Sanci\u00F3n -htbl_datosParaSanciones =DATOS PARA SANCIONES -lov_tipoDeFalta=TIPOS DE FALTAS -lov_falta=FALTAS -lov_sancion=SANCIONES -lov_unidades=UNIDADES -lov_clase=CLASE -msg_error_seleccionClase = POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO - -#Verificacion de la Informacion de Devolucion - -#Carga de datos Excel -btn_cargar=Cargar -btn_limpiar=Limpiar -hfld_datosgenerales=Datos Generales -lbl_unidadcantidad=U. Medida Cantidad -lbl_peso=Peso -lbl_unidadpeso=U. Medida Peso -htbl_detalledelmaterial=Detalle del Material - -tramite=Tr\u00E1mite -lbl_dui=No. DUI -lbl_fob=Total FOB -lbl_paisdestino=Pa\u00EDs Destino -lbl_fabricante=Fabricante -lbl_aeropuertopuerto=Aeropuerto/Puerto -lbl_numerosolicitud=No. Solicitud -lbl_numerosolicitud_aucp=No. Solicitud / AUCP -lbl_datoscomprador=Datos Comprador -lbl_datostransaccion=Datos Transacci\u00F3n -lbl_tipotransaccion=Tipo Transacci\u00F3n -fct_datosPreguntasRespuestas = DATOS DE PREGUNTAS Y RESPUESTAS - -msg_error_lotenull=EL LOTE NO PUEDE SER NULO. -msg_error_armanovalida=TIPO DE ARMA NO VALIDA. -msg_error_cantidadnotnull=LA CANTIDAD NO PUEDE SER NULA. -msg_error_pesonull=EL PESO NO PUEDE SER NULO. -msg_error_nrseries=NO PUEDEN EXISTIR SERIES REPETIDAS. -msg_error_erroresexcel=ERROR DE REFERENCIA CON EL CAT\u00C1LOGO. -msg_error_claseytipo=LA CLASE Y EL TIPO NO PUEDEN TENER VALORES NULOS. -msg_error_nocontrolado=ERROR NO CONTROLADO, POR FAVOR REVISE SU DOCUMENTO. -msg_error_cantidadnumerica=LA CANTIDAD DEBE SER UN VALOR NUM\u00C9RICO. -msg_error_catalogo=ERROR EN EL CAT\u00C1LOGO DE TIPOARMAEXPLOSIVO -msg_error_pesonumerico=EL PESO DEBE SER UN VALOR NUM\u00C9RICO -##MESAJES SOLICITUD -msg_error_tramite=DEBE ESCOGER UN TR\u00C1MITE -msg_error_requisitos=DEBE INGRESAR TODOS LOS REQUISITOS SOLICITADOS -msg_error_no_requisitos=NO EXISTEN REQUISITOS DEFINIDOS PARA ESTE TIPO DE TR\u00C1MITE CONSULTE CON EL ADMINISTRADOR -msg_error_armas=DEBE SELECCIONAR AL MENOS UN ART\u00CDCULO EN EL TR\u00C1MITE -msg_error_maximo_armas=NO PUEDE SELECCIONAR MAS DE {0} ARMA(S), LAS ARMAS RESTANTES DEBEN SEGUIR EL TR\u00C1MITE PERTINENTE -msg_error_guardias=DEBE SELECCIONAR AL MENOS UN GUARDIA EN EL TR\u00C1MITE -msg_error_agencias=DEBE SELECCIONAR AL MENOS UNA AGENCIA EN EL TR\u00C1MITE -msg_error_documento=DEBE SELECCIONAR AL MENOS UN DOCUMENTO DE LA LISTA - -msg_error_imprimir_recepcion_armas=SE DEBEN ENCONTRAR SELECCIONADAS TODAS LAS ARMAS PARA PODER IMPRIMIR -msg_error_validar_seleccion_armas=SE DEBEN ENCONTRAR SELECCIONADAS TODAS LAS ARMAS PARA PODER GUARDAR -msg_error_requiere_validacion_tecnica=PARA EL TR\u00C1MITE SELECCIONADO, SE REQUIERE CUMPLIR CON EL SIGUIENTE REQUISITO PREVIO\: EVALUACI\u00D3N DE CONOCIMIENTOS -msg_error_requiere_validacion_psicologica=PARA EL TR\u00C1MITE SELECCIONADO, SE REQUIERE CUMPLIR CON EL SIGUIENTE REQUISITO PREVIO\: EVALUACI\u00D3N PSICOL\u00D3GICA - -msg_error_numerodocumento=SELECCIONE EL No. DOCUMENTO -msg_error_tipoarchivoinvalido=TIPO ARCHIVO INVALIDO -msg_error_exedeelnumero=EXEDE EL NUMERO DE ARCHIVOS - -msg_error_comprobanteDepositoUsado= \ EL DEP\u00D3SITO INGRESADO YA HA SIDO UTILIZADO EN OTRO TR\u00C1MITE. POR FAVOR VERIFICAR. -msg_error_tramiteSinDatosAsociados= EL N\u00DAMERO DE TR\u00C1MITE NO TIENE DATOS ASOCIADOS. -msg_error_decomisoSinDatosAsociados= EL DOCUMENTO DE DECOMISO NO TIENE DATOS ASOCIADOS. -msg_error_fechaDepositoMayorFechaActual= LA FECHA DE DEP\u00D3SITO NO PUEDE SER MAYOR A LA FECHA ACTUAL. -msg_error_archivo=EL FORMATO DEL ARCHIVO NO ES EL CORRECTO, RECUERDE QUE EL ARCHIVO DEBE SER PDF, PNG O JPEG Y NO DEBE SUPERAR 1MB. -msg_error_archivo_firma=EL FORMATO DEL ARCHIVO NO ES EL CORRECTO, RECUERDE QUE EL ARCHIVO DEBE SER PDF. -msg_error_sinarchivo=NO HA SUBIDO EL ARCHIVO FIRMADO A ALFRESCO. -msg_error_sinfirmararchivo=EL ARCHIVO NO EST\u00C1 FIRMADO PARA SUBIR AL ALFRESCO. -msg_error_nombrearchivo=EL NOMBRE DE ARCHIVO NO CORRESPONDE -msg_error_nombrearchivo_xpath=NO EXITE XPATH DEL ARCHIVO -msg_error_ingreseComprobanteDeposito=INGRESE EL COMPROBANTE DE DEP\u00D3SITO -msg_error_ingreseDocumentoDecomiso=INGRESE EL DOCUMENTO DE DECOMISO -msg_error_reimpresion=NO HA SELECCIONADO NINGUN REGISTRO O LOS REGISTROS SELECCIONADOS NO SON DE TIPO PERMISO -msg_error_verificararmas=NO HA SELECCIONADO NINGUN REGISTRO -msg_error_verificarcentcontdestino=NO HA SELECCIONADO NINGUN ORGANISMO DE CONTROL O UNIDAD DE CONTROL -msg_error_noexistendocumentos=NO TIENE DOCUMENTOS HABILITANTES EXISTENTES PARA ESTE TR\u00C1MITE -msg_error_noexistesolicitud=NO EXISTE SOLICITUD -msg_error_tramite_padre=REQUISITO PREVIO PARA ESTE TR\u00C1MITE\: {1}/{2}/{3} -msg_error_avanzar_flujo=DEBE IMPRIMIR ANTES DE HACER AVANZAR EL FLUJO -msg_error_adjuntar_resolucion=ERROR AL ADJUNTAR LA RESOLUCI\u00D3N - -##MESAJES DATOS SANCIONES -msg_error_tipoFaltaRequerido=SELECCIONE UN TIPO DE FALTA -msg_error_faltaRequerido=SELECCIONE UNA FALTA -msg_error_claseRequerido=SELECCIONE UNA CLASE -msg_error_sancionRequerido=SELECCIONE UNA SANCI\u00D3N - -#LABEL EVALUACIONES -ttl_evaluacion=TEST DE CONOCIMIENTOS -lbl_conocimientos=Conocimientos -lbl_test=Test -lbl_preguntas=Preguntas -lbl_mensaje=Lea detenidamente las preguntas del Test y seleccione una respuesta correcta. -btn_iniciar=Iniciar -#ARMAS -lbl_crearmaterial=CREAR MATERIAL -lbl_vermaterial=VER MATERIAL -lbl_modificarmaterial=EDITAR MATERIAL -htbl_detallematerial=DETALLE MATERIAL REGISTRADO -lbl_datospersonales=DATOS PERSONALES -lbl_datosmaterial=DATOS MATERIAL -lbl_fechaemisionpermiso=Fecha Emisi\u00F3n Permiso -lbl_tipofabricacion=Tipo Fabricaci\u00F3n -lbl_serielote=Serie/Lote -lbl_seriecanon=Serie/Ca\u00F1\u00F3n -lbl_datosdecomiso=DATOS DECOMISO / INCAUTACI\u00D3N -lbl_fechadecimiso=Fecha Decomiso / Incautaci\u00F3n -lbl_portadormaterial=Portador del Material -lbl_motivodecomiso=Motivo Decomiso / Incautaci\u00F3n -lbl_detallearma=FORMATO ARMA -lbl_datosarma=DATOS ARMA -lbl_codigoarma=C\u00F3digo de Arma -lbl_actualizar_propietario=ACTUALIZAR PROPIETARIO -lbl_datos_propietario_nuevo=Datos propietario nuevo - -#MATENIMIENTO DOCUMENTO ALFRESCO -lbl_crearmantenimientodocumento=CREAR MANTENIMIENTO DOCUMENTOS ALFRESCO -lbl_modificarmantenimientodocumento=EDITAR MANTENIMIENTO DOCUMENTOS ALFRESCO -lbl_vermantenimientodocumento=VER MANTENIMIENTO DOCUMENTOS ALFRESCO -htbl_detalledocumentoregistrados=DETALLE DE DOCUMENTOS REGISTRADO -lbl_datosPerfilDocumento= DOCUMENTOS POR PERFIL - -#MATENIMIENTO DOCUMENTO FISCALIA -lbl_crearcertificadofiscalia=CREAR CERTIFICADO FISCAL\u00CDA -lbl_modificarcertificadofiscalia=EDITAR CERTIFICADO FISCAL\u00CDA -lbl_datoscertificado=DATOS CERTIFICADO - -btn_generarReporte=Generar Reporte -btn_generarInforme=Generar Informe -btn_enviar=Enviar -btn_generarfecha=Generar Fecha -fct_materialParaDestruccion=MATERIAL PARA BAJA Y DESTRUCCI\u00D3N -lbl_fechaDeCorte=Fecha Corte -lbl_fechaNotificacion=Fecha Notificaci\u00F3n -lbl_formato = Formato -lbl_uniMedida= U. Medida -lbl_fecDecimiso=Fecha Decomiso / Incautaci\u00F3n -lbl_noRecibo=No. Recibo -fct_formatoReporteGenerar=FORMATO DEL REPORTE A GENERAR -fct_pnlunidaddestino=UNIDAD DE DESTINO -lbl_archivocash= Archivo Cash -lbl_plananual= Plan Anual -lbl_actadecomisoentrega= Acta de Entrega de Material Decomisado -lbl_actadecomisorecepcion= Acta de Recepci\u00F3n de Material Decomisado -lbl_documentodecomisoentrega= Documento Acta de Entrega de Material Decomisado -lbl_documentodecomisorecepcion= Documento Acta de Recepci\u00F3n de Material Decomisado -lbl_documentoplananual=Documento Plan Anual -lbl_tipodocumentos=Tipo de Documentos -lbl_numerodocumentos=No. Documentos - -lbl_combosolicitud=Solicitud -lbl_comboplanificacionanual=Planificaci\u00F3n Anual -lbl_comboashmanagement=Cash Management -lbl_combodecomiso=Decomisos -lbl_combofiscalia=Fiscal\u00EDa - - -#verificacion del material decomisado -fct_datosDelDecomiso=DATOS DEL DECOMISO / INCAUTACI\u00D3N -fct_datosDelArmaSancion=DATOS DEL ARMA / SANCI\u00D3N -lbl_numeroRecibo=No. Recibo -lbl_fechaDeDecomiso=Fecha Decomiso / Incautaci\u00F3n -lbl_cedulaRucPasaporte=C\u00E9dula/Ruc/Pasaporte -lbl_fechaDeRegistro=Fecha Registro -lbl_nocedula=No. C\u00E9dula -lbl_enBodega=En Bodega -tab_detalleDeArmas=DETALLE DE ARMAS -tab_sancion=SANCI\u00D3N - -##MENSAJES ARMAS -msg_error_tipoarmaexplosivonoexistente=TIPO DE ARMA EXPLOSIVO NO EXISTENTE, DEBE SELECCIONAR UNA COMBINACI\u00D3N V\u00C1LIDA -msg_error_camposrequeridos=ERROR, LOS CAMPOS MARCADOS CON (*) SON REQUERIDOS -msg_error_camponotificacion=EL CAMPO DE FECHA DE NOTIFICACIN NO HA SIDO GENERADO -msg_categoriaRequerida=DEBE SELECCIONAR UNA CATEGOR\u00CDA - -##MENSAJES INSPECCION -msg_error_ingreseelformatodeinspeccion=INGRESE EL FORMATO DE INSPECCI\u00D3N -msg_error_ingreselafoto1=INGRESE LA FOTO 1 -msg_error_ingreselafoto2=INGRESE LA FOTO 2 -msg_error_ingreselafoto3=INGRESE LA FOTO 3 -msg_error_seleccionesionoenaplicadecomiso=SELECCIONE SI O NO EN APLICA DECOMISO -msg_error_seleccionenegarocontinuartramiteproceso=SELECCIONE ALGUNA OPCI\u00D3N NEGAR O CONTINUAR TR\u00C1MITE O PROCESO -msg_error_seleccionenesitioinspeccion=SELECCIONE EL SITIO DE INSPECCI\u00D3N -msg_error_realizelabusqueda=REALIZE LA BUSQUEDA -mg_error_usuarionoencontrado=USUARIO NO ENCONTRADO -mg_error_usuarionoencontradovendedor=USUARIO NO ENCONTRADO -mg_error_usuarionoencontradocomprador=USUARIO NO ENCONTRADO -mg_error_ingreselosdatosdelpropietario=INGRESE LOS DATOS DEL PROPIETARIO -mg_error_seleccioneeltipodedocumentooingreselacedula=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselacedulavendedor=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselacedulacomprador=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselongitudlatitud=SELECCIONE LA UBICACI\u00D3N -mg_error_seleccioneeltipoMapa=SELECCIONE TIPO DE UBICACI\u00D3N - -##MENSAJES DECOMISO -msg_error_numReciboNoRegistrado=EL N\u00DAMERO DE RECIBO NO SE ENCUENTRA REGISTRADO -msg_error_fechaCorteMayorAFechaActual=LA FECHA DE CORTE NO PUEDE SER MAYOR A LA FECHA ACTUAL -msg_error_fechaCorteRequerido=LA FECHA DE CORTE ES UN CAMPO REQUERIDO -msg_error_seleccioneAlmenosUnArma=DEBE SELECCIONAR AL MENOS UN ARMA DECOMISADA PARA GENERAR EL REPORTE -msg_error_noGuardoCorrectamenteReporte=NO SE HA PODIDO INICIAR EL PROCESO. ERROR AL GUARDAR EL REPORTE -msg_error_generarReporteRequerido= DEBE GENERAR EL REPORTE ANTES DE INICIAR EL PROCESO -msg_info_consultarArmasDecomidas=NO EXISTEN ARMAS DECOMISADAS AL MOMENTO DE CONSULTAR -##MENSAJES CUSTODIA TEMPORAL -msg_error_seleccionepropietario=SELECCIONE EL PROPIETARIO -msg_error_ingreselaobservacion=INGRESE LA OBSERVACI\u00D3N -msg_error_seleccioneelarmaacustodiatemporal=SELECCIONE EL ARMA A CUSTODIA TEMPORAL -msg_error_fechadecomisonopuedesermayoralaactual=LA FECHA DE DECOMISO/INCAUTACI\u00D3N NO PUEDE SER MAYOR A LA FECHA ACTUAL -msg_error_numerocomprobanterecibo=EL NO. COMPROBANTE/RECIBO YA EXISTE PARA LA ACTIVIDAD Y UNIDAD DE CONTROL SELECCIONADA -msg_error_validarnumerocomprobanterecibo=SELECCIONE ANTES ACTIVIDAD DE CONTROL PARA INSERTAR NO. COMPROBANTE/RECIBO -msg_error_nodocumentoinvalido=No Documento INVALIDO -msg_error_nodocumentoinvalidovendedor=No Documento INVALIDO -msg_error_nodocumentoinvalidocomprador=No Documento INVALIDO -msg_error_seleccionesinportadoroverifiqueusuarioexistente=SELECCIONE SIN PORTADOR O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccionesinportadoroverifiqueusuarioexistentevendedor=SELECCIONE O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccionesinportadoroverifiqueusuarioexistentecomprador=SELECCIONE O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccioneelarmaarealizareldecomisoincautacion=SELECCIONE EL MATERIAL EN LA PESTA\u00D1A SELECCIONAR MATERIALES, PARA REALIZAR -msg_error_seleccionearchivodecomisoincautacion=SELECCIONE EL DOCUMENTO DE ACTIVIDAD DE CONTROL -msg_error_sin_decomisos=EL CENTRO DE CONTROL NO TIENE DECOMISOS -msg_error_sin_centrocontrol=NO SE ENCUENTRA ASIGNADO UN CENTRO DE CONTROL, REVISAR SI TIENE ASIGNADO UNA DIRECCI\u00D3N COMO PRINCIPAL Y PROVINCIA -msg_error_numero_recepcion=EL NUMERO DE RECEPCION NO TIENE EL FORMATO ESPERADO REC-000000000 -msg_error_solicitud_noencontrada=SOLICITUD NO ENCONTRADA -msg_error_listardocumentos_solo=SOLO PUEDE SELECCIONAR UN DOCUMENTO EN LA SECCI\u00D3N LISTAR DOCUMENTOS -msg_error_listardocumentos=SE DEBE SELECCIONAR AL MENOS UN DOCUMENTO EN LA SECCI\u00D3N LISTAR DOCUMENTOS -msg_error_psicologoinvalido=LA IDENTIFICACI\u00D3N DEL PSIC\u00D3LOGO RESPONSABLE ES INV\u00C1LIDA. - -##MENSAJES INFORMACION DEVOLUCION -msg_error_generereporte=GENERE EL REPORTE - -lbl_generarPlanInspeccionAnual=GENERAR PLAN DE INSPECCI\u00D3N ANUAL -lbl_datosPlanificacion=DATOS PLANIFICACI\u00D3N -lbl_anno=A\u00F1o -lbl_codigoPlanificacion=C\u00F3digo de Planificaci\u00F3n -lbl_planificacion=Planificaci\u00F3n -lbl_centroControlArmas=Centro de Control de Armas -lbl_fechaGeneracion=Fecha de Generaci\u00F3n -btn_generarPlanificacion=Generar Planificaci\u00F3n -btn_enviarPlanificacion=Enviar Planificaci\u00F3n -lbl_planificacionAnual=PLANIFICACI\u00D3N ANUAL -lbl_fechaCaducidad=Fecha Caducidad -lbl_estadoPermiso=Estado Permiso -msg_noExistenTramitesAnno=NO EXISTEN TR\u00C1MITES PARA EL A\u00D1O -lbl_editarRegistroInspeccion=EDITAR REGISTRO DE INSPECCI\u00D3N -msg_planificacionNoGenerada=NO SE HA GENERADO LA PLANIFICACI\u00D3N -lbl_aprobacionPlanificacion=APROBACION DE PLANIFICACI\u00D3N -dest_msg_mail_prueba=fpazmino@bupartech.com -lbl_filtrosBusqueda=FILTROS DE B\u00DASQUEDA -lbl_fechaDesaduanizacion=Fecha Desaduanizaci\u00F3n -lbl_datosGenerales=DATOS GENERALES -lbl_detalleMaterial=DETALLE DEL MATERIAL - -##PARAMETROS FIRMA -firma_coordenadallx=10 -firma_coordenadally=200 -firma_coordenadaurx=250 -firma_coordenadaury=1118 - -firma_coordenadallx2=370 -firma_coordenadally2=200 -firma_coordenadaurx2=610 -firma_coordenadaury2=1118 - -firma_mensaje=Por favor presione el bot\u00F3n -firma_mensaje2=Grabar -firma_mensaje3=para guardar el documento -firma_mensaje4=El archivo no est\u00E1 firmado para subir al alfresco -lbl_datosImportacion=DATOS DE IMPORTACI\u00D3N - -##CATALOGO -ctg_autorizacion=AUTORIZACI\u00D3N -ctg_primeravez=PRIMERA VEZ -ctg_renovacion=RENOVACI\u00D3N -ctg_permiso=PERMISO -ctg_certificados=CERTIFICADOS -ctg_perdida=P\u00C9RDIDA -ctg_actualizacionDeDatos=ACTUALIZACIN DE DATOS -ctg_reimpresion_tipo=REIMPRESION -ctg_reimpresion=REIMPRESI\u00D3N -ctg_tipotramite=TIPOTRAMITE -ctg_tipoautorizacion=TIPOAUTORIZACION -ctg_usoactividad=USOACTIVIDAD -ctg_resultado_aprobado=APROBADO -ctg_resultado_codigo=RESULTADO -ctg_tipo_evaluacion_conocimiento=CONOCIMIENTO -ctg_tipo_evaluacion_psicologica=PSICOLOGICA -lbl_test_psicologica=Test Psicol\u00F3gico -ctg_tipo_evaluacion_codigo=TIPOEVALUACION -##MENSAJE INFORMACION -msg_noplanificacion=No PLANIFICACI\u00D3N - -msg_armaDuplicada=EL ART\u00CDCULO QUE INTENTA CREAR YA SE ENCUENTRA REGISTRADO EN EL SISTEMA - -lbl_comprobanteCaja=ComprobanteDeCaja - -msg_error_generarlaplanificacion=GENERAR LA PLANIFICACI\u00D3N -tecnicoAlmacenamiento=T\u00C9CNICO DE ALMACENAMIENTO DEL -jefe=JEFE -msg_existePlanificacionAnno=YA EXISTE UNA PLANIFICACI\u00D3N PARA ESE A\u00D1O -lbl_fichaTecnicaArmas=FichaTecnicaArmas -lbl_registroBalistico=Registro bal\u00EDstico -lbl_dolares=D\u00D3LARES -msg_error_notienedireccionprincipal=NO TIENE DIRECCI\u00D3N PRINCIPAL -msg_error_laprovinciasinccontrol=LA PROVINCIA NO TIENE ASIGNADA UN CENTRO DE CONTROL -msg_error_sinprovincia=NO TIENE ASIGNADO UNA PROVINCIA -msg_error_singenerarreciboregistro=NO SE HA GENERADO UN RECIBO DE REGISTRO PARA EL DECOMISO -msg_error_notienedireccioncorreo=NO TIENE DIRECCI\u00D3N DE CORREO -msg_error_subiroarchivoregistrorecibo=ERROR AL OBTENER EL RECIBO DE REGISTRO DE DECOMISO - -msg_error_liqeco_fechaInicioMayorAFechaActual=SELECCIONE UNA FECHA DE INICIO MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaDecomisoMayorAFechaActual=SELECCIONE UNA FECHA DE DECOMISO MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaFinMayorAFechaActual=SELECCIONE UNA FECHA FIN MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaInicioMayorAFechaFin=LA FECHA DE INICIO SELECCIONADA DEBE SER MAYOR O IGUAL A LA FECHA FIN SELECCIONADA -msg_error_liqeco_fechaInicioMayorAFechaFin1=LA FECHA DE INICIO SELECCIONADA DEBE SER MENOR O IGUAL A LA FECHA FIN SELECCIONADA -msg_error_claveanteriornopuederserigualactual=CLAVE ANTERIOR NO PUEDE SER IGUAL A LA ACTUAL - -msg_error_coninv_fechaMayorAFechaActual=SELECCIONE UNA FECHA MENOR A LA FECHA ACTUAL - -msg_error_elnombredelarchivonocaracteresespeciales=EL NOMBRE DEL ARCHIVO NO PUEDE CONTENER CARACTERES ESPECIALES -msg_error_ingresenumsolicitudexacto=NO SE PUEDE REALIZAR LA CONSULTA CON %, INGRESE EL No. DE SOLICITUD COMPLETO -msg_error_elnombredelarchivonodebeiniciarconnum=EL NOMBRE DEL ARCHIVO NO DEBE INICIAR CON N\u00DAMEROS -msg_error_elnombredelarchivonodebecontenerespaciosenblanco=EL NOMBRE DEL ARCHIVO NO DEBE CONTENER ESPACIOS EN BLANCO -msg_error_elnombredelarchivonodebesermenoracincoletras=EL TAMA\u00D1O DEL NOMBRE DEL ARCHIVO NO DEBE SER MENOR A 5 CARACTERES - -#URL DE LOS SERVICIOS MANEJADOS DESDE LA SNAP -url_snap_servicio_cedula=https://serviciosarmas.ccffaa.mil.ec:8085/serviceCedula?wsdl -url_snap_servicio_ruc=https://serviciosarmas.ccffaa.mil.ec:8085/serviceRUC?wsdl - - -msg_error_nohaseleccionadoarmas=NO HA SELECCIONADO NINGUNA ARMA -msg_inf_digitadordel=COORDINADOR DEL -msg_error_ingrese_funcionario=INGRESE EL FUNCIONARIO - -codigo_estado_arma_busqueda_venta='REG','REN','APTA','DEV','ECO','COLE','PRO' - -msg_error_generar_reporte=ERROR AL GENERAR EL REPORTE - -msg_recuerdeClickContinuarTramite=PARA CONTINUAR SU TR\u00C1MITE\: DEBE DAR CLICK EN EL BOT\u00D3N CONTINUAR TR\u00C1MITE -msg_recuerdeUnicaCargaInventario=RECUERDE QUE EL INVENTARIO PARA UNA CATEGOR\u00CDA SELECCIONADA SOLO PODR\u00C1 SUBIRSE UNA \u00DANICA VEZ -msg_inventarioCargadoPreviamente=EL INVENTARIO PARA LA CATEGOR\u00CDA SELECCIONADA YA FUE CARGADO ANTERIORMENTE -msg_inventarioNoArmasFuegoNiNoLetales=No se permite el ingreso de armas de fuego ni tampoco de armas no letales -msg_reimpresionprevianopermitida=NO SE PUEDE REIMPRIMIR DOCUMENTOS CON FECHA DE EMISI\u00D3N PREVIA AL 15 DE JUNIO DEL 2015 -msg_recuerdeClickSeleccionarArmas=PARA VISUALIZAR LAS ARMAS DEBE DAR CLICK EN EL BOT\u00D3N SELECCIONAR ARMA -msg_recuerdeClickGenerarReciboRegistro=PARA TERMINAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N GENERAR RECIBO REGISTRO PARA OBTENER EL REPORTE DE REGISTRO -msg_recuerdeClickCargarDocActControl=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N SELECCIONAR DE CARGA DOCUMENTO ACTIVIDAD DE CONTROL Y SEGUIDO DAR CLICK EN EL BOT\u00D3N SUBIR -msg_recuerdeClickBtnSave=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N GRABAR -msg_recuerdeClickBtnRegMaterial=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N REGISTRO MATERIAL -msg_recuerdeClickTabRegMaterial=PARA CONTINUAR EL REGISTRO\: DEBE SELECCIONAR MATERIAL EN LA PESTA\u00D1A SELECCIONAR MATERIALES -msg_recuerdeClickGenerarActa=PARA CONTINUAR SU TRAMITE\: DEBE DAR CLICK EN EL BOT\u00D3N GENERAR ACTA - -lbl_desde=Desde -lbl_hasta=Hasta -lbl_ultimaGeneracion=\u00DAltima Generaci\u00F3n - -lbl_aucp=AUCP -lbl_estaDesaduanizado=EST\u00C1 DESADUANIZADO? -msg_error_aucp_previamente_cargado=EL C\u00D3DIGO DE SOLICITUD AUCP YA HA SIDO CARGADO PREVIAMENTE -msg_error_carga_armas_inexistentes=NO EXISTEN ART\u00CDCULOS CREADOS PARA EL PRESENTE REGISTRO -msg_desea_iniciar_desaduanizacion=DESEA INICIAR LA DESADUANIZACI\u00D3N? -msg_desea_recuerde_desaduanizacion1=RECUERDE QUE UNA VEZ INICIADA LA DESADUANIZACI\u00D3N, NO PODR\u00C1 EDITAR -msg_desea_recuerde_desaduanizacion2=ART\u00CDCULOS DESDE LA PANTALLA INGRESO DE IMPORTACI\u00D3N -msg_desea_continuar=DESEA CONTINUAR? - -lbl_partida_arancelaria=Partida Arancelaria -msg_error_paisOrigenRequerido=Pa\u00EDs Origen Requerido -msg_error_provinciaRequerido=Provincia Requerida -msg_error_cantonRequerido=Cant\u00F3n Requerido -msg_error_ciudadRequerido=Ciudad Requerida -msg_error_aeropuertoRequerido=Aeropuerto Requerido -lbl_tipo_planificacion=Periodos de Planificacin -lbl_asignacion_presupuestaria=Asignacin Presupuestria -lbl_tipo_sancion=Tipo Sancin - -lbl_datosOrganismoControl=DATOS ORGANISMO CONTROL -lbl_datosUbicacionDecomiso=DATOS UBICACI\u00D3N ACTIVIDAD DE CONTROL -lbl_datosPortadorEnElDecomiso=DATOS DEL PORTADOR EN ACTIVIDAD DE CONTROL - -lbl_tipoDecomiso=Actividad de Control -lbl_numeroComprobanteRecibo=No. Comprobante/Recibo -lbl_fechaDecomiso=Fecha actividad de control -lbl_sinDocumento=Sin No. Documento -lbl_cargarDocumentoDecomiso=Carga Documento Actividad de Control - - - -#Certificado Fiscalia -lbl_cargarCertificadoFiscalia=Solicitud de Certificado -lbl_fiscalianrosolicitud=No. Solicitud -lbl_fiscalianombresolicitud=Nombre Solicitante -lbl_fiscalianroinstruccionfiscal=No. Expediente Fiscal -lbl_fiscalianfechaActual=Fecha Actual -lbl_fiscalianroficiofiscal=No. Oficio Fiscal\u00EDa -lbl_mensaje_noseencuentrandatosserie=No se encuentras datos, ingrese la serie, para generar el certificado -lbl_mensaje_noseencuentrandatosperson=No se encuentras datos, ingrese la identificaci\u00F3n y/o nombres, para generar el certificado - -# -lbl_organismo_control=Organismo de Control -lbl_centro_control=Centro de Control -lbl_numero_recibo=N\u00FAmero Recibo -lbl_numero_armas_procesadas=N\u00FAmero Armas Procesados -lbl_numero_armas_error=N\u00FAmero de Errores -lbl_numero_armas_correctas=Armas Correctas -lbl_numoficio=No. Oficio \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.svn-base deleted file mode 100644 index e814afe..0000000 --- a/frontend/src/main/resources/.svn/text-base/controlarmas_es.properties.svn-base +++ /dev/null @@ -1,1014 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00F1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#ETIQUETAS -#Solcitud -lbl_fechasolicitud=Fecha Solicitud -lbl_fechasolicitud_aucp=Fecha Solicitud / Envio AUCP -lbl_autorizacion=Autorizaci\u00F3n -lbl_estadoDocumento=Estado del Documento -lbl_datosempresaseg=Datos Empresa Seguridad -lbl_psicologicanecesaria=NO SE HA REGISTRADO LA EVALUACI\u00D3N PSICOL\u00D3GICA -lbl_datosevaluado=Datos del Evaluado -lbl_datoscompaniaseg=Datos de la Compan\u00EDa de Seguridad -lbl_valordeposito=Valor Dep\u00F3sito -lbl_centromedico=Centro M\u00E9dico -lbl_centroControl=Centro de Control -lbl_tramitesXcentro=Tramites por Centro Control -lbl_si=S\u00CD -lbl_nombreexcel=ReporteDeArmas -lbl_nombreexcelhistorico=ReporteHistoricoDeArmas -msg_fechafinal=LA FECHA FINAL DEBE SER MAYOR A LA FECHA INICIAL -lbl_examenfinalizado=EXMEN FINALIZADO -lbl_reprobado=Reprobado -lbl_compania=Compa\u00F1\u00EDa de Seguridad -msg_proceso=El proceso debe continuar cuando el arma se encuentra en bodega. -lbl_fechaprox=LA FECHA PARA SU PR\u00D3XIMO INTENTO ES\: -lbl_detallesdetramite=DETALLES DE TR\u00C1MITE -lbl_sancionpermiso=SANCI\u00D3N PERMISO -lbl_recomendaciones=Recomendaciones -msg_ingresesancion=INGRESE UNA SANCI\u00D3N -msg_realiceunasancion=APLIQUE UNA SANCI\u00D3N -lbl_dias=d\u00EDas -lbl_verificaCertificado=VERIFICAR INFORMACI\u00D3N CERTIFICADO -lbl_reimpresion=Reimpresi\u00F3n -lbl_tiempo=Tiempo -msg_evaluado=LA PERSONA SELECCIONADA TIENE UN REGISTRO DE EVALUACI\u00D3N PSICOL\u00D3GICA -msg_nopermiso=NO SE ENCUENTRA UN PERMISO PARA EL ARMA SELECCIONADA -msg_persona=SELECCIONE UNA PERSONA -lbl_imprimir=Generar Reporte -lbl_imprimirXls==Generar Reporte Excel -lbl_verificarDocumentos=VERIFICAR DOCUMENTOS -lbl_psicologico=Psicol\u00F3gica -msg_debesubir=DEBE SUBIR UN ARCHIVO DE EVALUACI\u00D3N -lbl_informeevaluacion=Informe Evaluaci\u00F3n -lbl_recomendacion=Recomendaci\u00F3n -lbl_psicologo=Psic\u00F3logo Responsable -lbl_fechaevaluacion=Fecha Evaluaci\u00F3n -lbl_fechaexpiracion=Fecha Caducidad -lbl_fechadeexpiracion= Fecha de Expiraci\u00F3n -lbl_planInspeccionAnual=PlanDeInspecci\u00F3nAnual -msg_archivoImportacionSerie=EL ARCHIVO DE IMPORTACI\u00D3N NO DEBE CONTENER EL N\u00DAMERO DE SERIE -msg_serieVacia=La serie del arma no debe estar vac\u00EDa. -msg_limitecantidadarma=La cantidad del Arma de Fuego debe ser igual a 1 unidad -msg_claseVacia=La clase del arma no debe estar vac\u00EDa. -msg_tipoVacio=El tipo de arma no debe estar vac\u00EDo. -msg_marcaVacia=La marca del arma no debe estar vac\u00EDa. -msg_longitudVacia=La longitud del arma no debe estar vac\u00EDa. -msg_longitudNoVacia=La longitud del arma debe estar vac\u00EDa. -msg_calibreVacio=El calibre no debe estar vac\u00EDo. -msg_calibreNoVacio=El calibre debe estar vac\u00EDo. -msg_cantidadVacia=La cantidad no debe estar vac\u00EDa. -msg_cantidadNoVacia=La cantidad debe estar vac\u00EDa. -msg_unidadMedidaCantidadVacia=La U. Medida Cantidad no debe estar vac\u00EDa. -msg_unidadMedidaCantidadNoVacia=La U. Medida Cantidad debe estar vac\u00EDa. -msg_unidadMedidaSoloUna=Solo debe ingresar una unidad de medida. -msg_unidadMedidaNoExiste=La unidad de medida ingresada no existe. -msg_pesoVacio=El peso no debe estar vac\u00EDo. -msg_pesoNoVacio=El peso debe estar vac\u00EDo. -msg_unidadMedidaPesoVacia=La U. Medida Peso no debe estar vac\u00EDa. -msg_unidadMedidaPesoNoVacia=La U. Medida Peso debe estar vac\u00EDa. -msg_cantidadValorNumerico=La cantidad debe ser un valor n\u00FAmerico. -msg_pesoValorNumerico=El peso debe ser un valor num\u00E9rico. -msg_fuegosPirotecnicos=fuegos pirot\u00E9cnicos -msg_datosDuplicados=Existen datos duplicados. -msg_sustanciaQuimica=sustancia qu\u00EDmica -msg_calibreNoExisteCatalogo=El calibre no existe en el cat\u00E1logo. -msg_claseNoExisteCatalogo=No existe la clase en el cat\u00E1logo. -msg_longitudNoExisteCatalogo=No existe la longitud en el cat\u00E1logo. -msg_noExisteTipoArmaCatalogo=No existe el tipo de arma en el cat\u00E1logo. -msg_colorNoExisteCatalogo=No existe el color en el cat\u00E1logo. -msg_marcaNoExisteCatalogo=No existe la marca en el cat\u00E1logo. -msg_unicidad_agencia=S\u00D3LO UNA AGENCIA DEBE ESTAR SELECCIONADA -msg_seleccione_nombre=SELECCIONE UN NOMBRE O RAZ\u00D3N SOCIAL - -lbl_ordenTrabajoCustodios=OrdenDeTrabajoParaCustodios -lbl_guiaLibreTransito=Gu\u00EDa Libre de Tr\u00E1nsito -lbl_reportebalistico=ReporteRegistroBal\u00EDstico -lbl_fechaActual=Fecha Actual -lbl_actaDeDevolucion=ActaDevoluci\u00F3n -lbl_asuntoNotificarFecha=COMANDO CONJUNTO DE LAS FF. AA. - Notificaci\u00F3n Devoluci\u00F3n. -lbl_asuntoNotificarNovedad=COMANDO CONJUNTO DE LAS FF. AA. - Notificaci\u00F3n Novedad -lbl_notificarTramiteAnulado=Notificar Tr\u00E1mite Anulado -msg_asuntoNotificacionGuiaTranistoAnulada=COMANDO CONJUNTO DE LAS FF.AA. - Notificaci\u00F3n de tr\u00E1mite anulado en la Solicitud de Gu\u00EDa de Libre Tr\u00E1nsito. -msg_cuerpoNotificacionGuiaTransitoAnulada=DEPARTAMENTO DE CONTROL DE ARMAS
      Estimado
      {0}
      Presente.-
      Mediante la presente notificamos que su solicitud N\u00BA {1} para Emisi\u00F3n de Gu\u00EDa de Libre Tr\u00E1nsito ha sido rechazada debido a las siguientes observaciones\:

      {2}

      Atentamente,

      {3}
      {4}

      NOTA\:
      Este mensaje fue enviado autom\u00E1ticamente por el sistema, por favor no responda a esta cuenta de correo. -lbl_aprobacionLibreTransito=APROBACI\u00D3N DE LIBRE TR\u00C1NSITO -correoDesde=notificacion@controlarmas.ccffaa.mil.ec -correoDestino=ogarcia@bupartech.com -lbl_justificacion=Justificaci\u00F3n -cuerpo.mensaje.envio.correo=DEPARTAMENTO DE CONTROL DE ARMAS

      Estimado(a)
      {0}
      Presente.-

      El trámite de devolución No.{1} ha sido aprobado, por favor acercarse al COMANDO CONJUNTO DE LAS FF.AA a partir de {2} en horario de 8\:00 a 16\:00 para proceder con la devolución del material solicitado.

      Atentamente,

      {3}
      {4}

      NOTA\:
      Este mensaje fue enviado automáticamente por el sistema, por favor no responda a esta cuenta de correo. -cuerpo.mensaje.envio.correo.novedad1=DEPARTAMENTO DE CONTROL DE ARMAS

      Estimado(a)
      {0}
      Presente.-

      El trámite de devolución No. {1}, no puede continuar porque se presenta las siguientes novedades\: -cuerpo.mensaje.envio.correo.novedad2={0}

      Atentamente,

      {1}
      {2}

      NOTA\:
      Este mensaje fue enviado automáticamente por el sistema, por favor no responda a esta cuenta de correo. -cedulaDuplicada=Ya existe un custodio con esa c\u00E9dula. - - -btn_enviarNotificacion=Enviar Notificaci\u00F3n -btn_cancelar=Cancelar -htbl_sitiosalmacenamiento=SITIOS DE ALMACENAMIENTO -lbl_latitud=Latitud -lbl_estadosolicitud=Estado Solicitud -lbl_origenadquisicion=Origen de Adquisici\u00F3n -lbl_paisorigen=Pa\u00EDs -lbl_telfijo=Tel\u00E9fono Fijo -lbl_telcelular=Tel\u00E9fono Celular -lbl_correo=Correo Electr\u00F3nico -lbl_datoscapacidad=Datos Capacidad -lbl_almacenamiento=Almacenamiento -lbl_manejoarmas=Manejo de Armas -lbl_expiro_fecha_deposito=LA FECHA DE SOLICITUD EXPIR\u00D3, POR FAVOR VUELVA A INGRESAR EL TR\u00C1MITE NUEVAMENTE. -msg_error_valorDepositoNegativoCero=EL VALOR DE DEP\u00D3SITO DEBE SER MAYOR A CERO. -msg_error_vVerificDiferenteDeVAPagar=EL VALOR VERIFICADO ES DIFERENTE DEL VALOR A PAGAR Y SE ANULAR\u00C1 -lbl_seleccionar=Seleccionar -lbl_seleccionartodos= Seleccionar Todos -lbl_buscar=Buscar -lbl_cargararchivo=Cargar Archivo -lbl_requisitossolicitud=Requisitos Solicitud -lbl_seleccionarguardias=SELECCIONAR GUARDIAS DE SEGURIDAD -lbl_seleccionararmas=SELECCIONAR ARMAS -lbl_seleccionararticulos=SELECCIONAR ART\u00CDCULOS -lbl_detallematerialregistro=DETALLE MATERIAL REGISTRADO -msg_tamano_archivo_requisitos_jpg_png=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.jpg .png) -msg_tamano_archivo_requisitos_jpg_png_1=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 1 MB (.jpg .png) -msg_tamano_archivo_requisitos=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_requisitos_5=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 5 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 2 MB (.pdf .gif .jpg .png) -msg_tamano_archivo_requisitos_pdf=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 2 MB (.pdf) -msg_tamano_archivo_requisitos_pdf_5=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL ARCHIVO ES DE 5 MB (.pdf) -msg_tamano_archivo_requisitos_pdf_jpg=EL TAMA\u00D1O M\u00C1XIMO PERMITIDO DEL PRIMER ARCHIVO ES DE 1 MB (.pdf) Y EL TAMA\u00D1O M\u00C1XIMO PERMITIDO POR ARCHIVO ES DE 2 MB (.jpg .png) -msg_escanear_documentos_originales=SE DEBE ESCANEAR LOS DOCUMENTOS ORIGINALES Y ACTUALIZADOS -#Seleccion de Agencias -lbl_seleccionaragencias=SELECCIONAR AGENCIAS/SUCURSALES -lbl_detalleAgencias=DETALLE DE AGENCIAS / SUCURSALES -lbl_responsable=Nombre y Apellido del Responsable -lbl_nom_apell_super=Nombre y Apellido del Supervisor -lbl_crearAgencia=CREAR AGENCIA - SUCURSAL -lbl_modificarAgencia=EDITAR AGENCIA - SUCURSAL -lbl_verAgencia=VER AGENCIA - SUCURSAL -btn_seleccionarArmas=Seleccionar Armas -lbl_datosCompania=DATOS COMPA\u00D1\u00CDA -lbl_datosAgencia=DATOS AGENCIA / SUCURSAL -lbl_fechaAutorizacion=Fecha Autorizaci\u00F3n -lbl_telefono=Tel\u00E9fono -lbl_documentos=DOCUMENTOS -lbl_ubicacion= Seleccione ubicaci\u00F3n por -lbl_coodenadas=Coordenadas -lbl_fechaEmision=Fecha de Emisi\u00F3n -lbl_numeroDeDocumento=No. Documento -lbl_listadoguardias=LISTADO DE GUARDIAS DE SEGURIDAD -lbl_eliminaragencia=ELIMINAR AGENCIA-SUCURSAL -lbl_eliminarmaterial=ELIMINAR MATERIAL -lbl_confirmacioneliminar=Est\u00E1 seguro de eliminar el registro? -msg_error_armas_inexistentes=NO EXISTEN ART\u00CDCULOS REGISTRADOS PARA ESTE TR\u00C1MITE -#Documentos - - -#Evaluaciones -lbl_tipoEvaluacion=Tipo Evaluaci\u00F3n -lbl_numerodocumento=No. Documento -lbl_tipoPersona=Tipo Persona -lbl_jurisdiccion=Jurisdiccin -lbl_descripcionPregunta=Descripci\u00F3n -lbl_numeroPregunta=No. Pregunta -tab_verRespuestas=Ver Respuestas -tab_Respuestas=Respuestas -tab_respuesta=Respuesta -tab_respuestaCorrecta=Respuesta Correcta -msg_seleccionepersona=POR FAVOR SELECCIONE UNA PERSONA -msg_tipoevaluacion=POR FAVOR INGRESE UN TIPO DE EVALUACIN -msg_numerointentos=USTED HA SUPERADO EL NMERO DE INTENTOS MXIMOS PARA LA EVALUACIN -msg_fechaprox=LA FECHA PARA SU PRXIMO INTENTO ES: -msg_ingreseresp=INGRESE UNA RESPUESTA -lbl_evaluacion=Evaluaci\u00F3n -lbl_detallevaluacion=Detalle de Evaluaciones -lbl_estadoevaluacion=Estado Evaluaci\u00F3n -lbl_fechadeevaluacion=Fecha Examen Psicol\u00F3 gico -lbl_fecharegistrotest=Fecha Registro Test -lbl_resultado=Resultado -lbl_resultado_busqueda=Resultados de b\u00FAsqueda -#tramite -lbl_cantidad=Cantidad -lbl_clase=Clase -lbl_tipo=Tipo -lbl_longitud=Longitud -lbl_calibre=Calibre -lbl_tipotramite=Tipo Tr\u00E1mite -lbl_tramite=Tr\u00E1mite -lbl_numeroTramite=No. Tr\u00E1mite -lbl_requisito=Requisito -lbl_descripcionrequisito=Descripci\u00F3n Requisito -lbl_tipopersona=Tipo Persona -lbl_tipoidentiicacion=Tipo Documento -lbl_identificacion=No. Documento -lbl_identificacionTxt=Identificaci\u00F3n -lbl_inicarFlujo=Continuar Tr\u00E1mite -lbl_imagencargada=Imagen Almacenada -lbl_estadocarga=Estado Carga -lbl_estadotramite=Estado Tr\u00E1mite -lbl_usoactividad=Uso / Actividad -lbl_NoTramite=No. Tr\u00E1mite -lbl_fechaDeDeposito=Fecha Dep\u00F3sito -lbl_numeroDeDeposito=No. Combrobante Dep\u00F3sito -lbl_factura=No. Factura / Documento -lbl_registro=No. Registro -lbl_valorDeDeposito=Valor Dep\u00F3sito -lbl_cargarComprobante=Cargar Comprobante -lbl_cargarResolucion=Cargar Resoluci\u00F3n -lbl_numeroDeTramite=No. Tr\u00E1mite -lbl_numeroDeComprobante=No. Comprobante -lbl_noComprobante=No. Comprobante -lbl_valorVerificado=Valor Verificado -lbl_archivoComprobante=Archivo Comprobante -lbl_imprimirComprobante=Imprimir Comprobante -lbl_ver=Ver -fct_registrarDeposito=Registrar Comprobante Dep\u00F3sito -fct_validarDeposito=Validar Comprobante Dep\u00F3sito - -# FIELDSETS -field_tipotramite=Datos Tipo Tr\u00E1mite -field_ubicacion=Ubicaci\u00F3n -field_tiposarmasexplosivos=Tipos Armas y Explosivos: -lbl_tipoTramite=Tipo Tr\u00E1mite -lbl_usoActividad=Uso/Actividad -lbl_costo=Costo -lbl_tipocosto=Tipo Costo -lbl_vigenciameses=Vigencia Meses -lbl_tipodocumento=Tipo Documento -lbl_usd=USD -lbl_registroguardia=Registro Guardia -lbl_registroarmas=Registro Armas -lbl_deposito=Dep\u00F3sito -lbl_registroagenciassucursales=Registro Agencias y Sucursales -lbl_requiereevaluacion=Requiere Evaluaci\u00F3n -lbl_requiereinspeccion=Requiere Inspecci\u00F3n -lbl_dochabilitantes=Documentos Habilitantes -lbl_docsolicitudcertificado=Solicitud de Certificado -lbl_certificadofiscal=Certificado Fiscal -lbl_actaentregareceptionSolicitud=ACTA ENTREGA RECEPCI\u00D3N - SOLICITUD -lbl_docactaentregareceptionSolicitud=Documento Acta Entrega Recepci\u00F3n - Solicitud -lbl_costoUSD=Costo(USD) -lbl_tipoautorizacion=Tipo Autorizaci\u00F3n -lbl_datostramite=DATOS DEL TR\u00C1MITE -#Tipo Archivo -lbl_tipoarchivo=Tipo Documento - -lbl_institucion=Instituci\u00F3n -lbl_nombre=Nombre -lbl_jefecentro=Jefe Centro -lbl_grado=Grado -lbl_direccion=Direcci\u00F3n -lbl_nueva_jurisdiccion=NUEVA JURISDICCI\u00D3N -lbl_jurisdicciones=Jurisdicciones -lbl_datosdejurisdicciones=DATOS DE JURISDICCIONES -lbl_nombrerazonsocial=Nombre/Raz\u00F3n Social -lbl_nombrerazonsocialcomprador=Comprador/Consumidor -lbl_numerodetramite=No. Tr\u00E1mite -lbl_numerocustodios=No. Custodios -lbl_No=No -lbl_solicitud=Solicitud -lbl_documento=Documento -lbl_noDocumento=No. Documento -lbl_noDocumentoPsicologo=No. Documento Psiclogo -lbl_tipodocumentoPsicologo=Tipo Documento Psiclogo -lbl_aprobado=Aprobado -lbl_aprobacion=APROBACI\u00D3N -lbl_generarValorACancelar=GENERAR VALOR A CANCELAR -lbl_valorCancelar=Valor a Cancelar -lbl_valorAPagar=Valor a Pagar - -lbl_accion=Acci\u00F3n -lbl_aceptar=Aceptar - -lbl_secuencial=Secuencial -lbl_tipoarmas=Tipo Arma -lbl_clasearma=Clase Arma -lbl_unidad=Unidad de Control -lbl_unidaddestino=Unidad de Control Destino - -lbl_unidadmedida=Unidad Medida -lbl_cupopeso=Cupo Peso -lbl_fecha=Fecha -lbl_tiporegistro=Tipo Registro -lbl_crearcupoautorizado=DETALLE DE CUPOS AUTORIZADOS -lbl_detalleunidadesmedida=DETALLE UNIDADES DE MEDIDA -lbl_unidadTipoClase=UNIDAD TIPO CLASE -lbl_cupo=Cupo -lbl_creartipounidad=CREAR UNIDAD DE MEDIDA -lbl_listadorequisitos=LISTADO DE REQUISITOS -lbl_datossolicitud=DATOS SOLICITUD -lbl_ordendetrabajono=Orden Trabajo No. -lbl_centrodecontrol=Centro Control -lbl_organismocontroldestino=Organismo de Control Destino -lbl_fechainspeccion=Fecha Inspecci\u00F3n -lbl_propietariorepresentantelegal=PROPIETARIO O REPRESENTANTE LEGAL -lbl_referencia=Referencia -lbl_representantelegal=Representante Legal -lbl_sitioinspeccion=SITIO INSPECCI\u00D3N -lbl_responsablem=RESPONSABLE -lbl_numerodecedula=No. C\u00E9dula -lbl_nombresapellidos=Nombres y Apellidos -lbl_telefonodomicilio=Tel\u00E9fono Domicilio -lbl_resultadoinspeccion=RESULTADO INSPECCI\u00D3N -lbl_continuartramiteproceso=Continuar Tr\u00E1mite o Proceso -lbl_negartramiteproceso=Negar Tr\u00E1mite o Proceso -lbl_aplicadecomiso=Aplica Decomiso -lbl_documentoinspeccion=Documento Inspecci\u00F3n -lbl_documentoinspeccionfecha=fecha -lbl_documentoinspeccioncodeuser=Identificaci\u00F3n -lbl_documentoinspeccioncodenombre=Nombres -lbl_fotografias=Fotograf\u00EDas -lbl_bodega=Bodega -lbl_sitiosalmacenanmiento=SITIOS DE ALMACENAMIENTO -lbl_registrarresultadoinspeccion=REGISTRAR RESULTADO INSPECCI\u00D3N -lbl_tipodecomercio=Tipo de Comercio -lbl_sitiosalmacenamiento=SITIOS DE ALMACENAMIENTO -lbl_tramites=TR\u00C1MITES -lbl_descripcionCorta=Descripci\u00F3n Corta -lbl_ingresodedecomiso=INGRESO DE DECOMISO / INCAUTACI\u00D3N -lbl_lugardeldecomiso=LUGAR DEL DECOMISO / INCAUTACI\u00D3N -lbl_datosdeldecomiso=DATOS DEL DECOMISO / INCAUTACI\u00D3N -lbl_tipodeproceso=Tipo Proceso -lbl_numerorecibo=No. Recibo -lbl_numerotransaccion=No. Transacci\u00F3n -lbl_fechadecomiso=Fecha Decomiso / Incautaci\u00F3n -lbl_organismocontrol=Organismo de Control -lbl_detalledeldecomiso=DETALLE DEL DECOMISO / INCAUTACI\u00D3N -lbl_datosdelciudadano=Datos del Ciudadano -lbl_decomisadopor=Control Realizado por -lbl_numerocedula=No. C\u00E9dula -lbl_funcionario=Funcionario -btn_registromaterial=Registro Material -btn_generarreciboregistro=Generar Recibo Registro -btn_consultarmaterial=Consultar Material -btn_entregarmaterial=Entregar Material -lbl_sinportador=Sin Portador -lbl_cant=Cant -lbl_umedida=U. Medida -lbl_fecdecimiso=Fecha Decomiso -lbl_motivo=Motivo -lbl_portadorarma=Portador Arma -lbl_registrodematerialdecomisadoincauto=REGISTRO MATERIAL -lbl_registrodematerialicautado=REGISTRO DE MATERIAL CUSTODIA TEMPORAL -lbl_propietario=Propietario -lbl_subir=Subir -lbl_cancelar=Cancelar -lbl_mensajearchivoinvalidom=EL TAMA\u00D1O DEL ARCHIVO DEBE SER M\u00C1XIMO DE -lbl_5mb=5 MB -lbl_2mb=2 MB -lbl_1mb=1 MB -lbl_sinidentificacion=Sin Identificaci\u00F3n -lbl_decomisoincautacion=Decomiso / Incautaci\u00F3n -lbl_cabecera=Cabecera -lbl_pie=Pie -lbl_crearsitiosdealmacenamiento=CREAR / EDITAR -lbl_modificarsitiosdealmacenamiento= CREAR / EDITAR -lbl_datosdecustodia=DATOS DE CUSTODIA -lbl_fechadecustodia=Fecha de Custodia -lbl_aerolinea=Aerolnea -lbl_novuelo=No. Vuelo -lbl_lugarOrigenm=LUGAR ORIGEN -lbl_lugarDestinom=LUGAR DESTINO -lbl_aeropuerto=Aeropuerto -btn_material=Material -lbl_ingresodedatosdesitiosdealmacenamiento=INGRESO DE DATOS DE SITIOS DE ALMACENAMIENTO -lbl_numerotransaccionenvio=No. Transacci\u00F3n Env\u00CDo -lbl_numerotransaccionrecepcion=No. Transacci\u00F3n Recepci\u00F3n -lbl_fecdecomiso=Fec Decomiso -htbl_detalledelmaterialm=DETALLE DEL MATERIAL -lbl_cantidadpeso=Cantidad/Peso -lbl_ingresocustodiatemporalenaeropuerto=INGRESAR CUSTODIA TEMPORAL EN AEROPUERTO -lbl_nodecomiso=No. Decomiso -btn_generaracta=Generar Acta -lbl_costocustodio=Costo Custodio -btn_iniciarproceso=Continuar Tr\u00E1mite -lbl_multa=Multa -lbl_flujotramite=Flujo Tr\u00E1mite -lbl_numeromaximoarmas=No M\u00E1ximo Armas -lbl_estadosarma=Estados Arma -lbl_tramitepadre=Tr\u00E1mite Padre -lbl_codigoplanificacion=C\u00F3digo Planificaci\u00F3n -lbl_mes=Mes -lbl_planificacioninsoeccion=PLANIFICACI\u00D3N DE INSPECCIONES -lbl_logo=Logo -lbl_limpiar=Limpiar -lbl_unidadcontrolrecepcion=Unidad de Control -lbl_unidadrecepcion=UNIDAD DE RECEPCI\u00D3N -lbl_sancionable=Sancionable -lbl_validaFechaExpiracion=Visualizar Fecha expiraci\u00F3n -lbl_validaPorFechaExpiracion=Visualizar por Fecha expiraci\u00F3n -lbl_validaCaducidadTramPadre=Validar caducidad tr\u00E1mite padre -lbl_validaCaducidadTramPadreAlt=Validar caducidad tr\u00E1mite padre alterno -lbl_seleccionararma=Seleccionar Arma -htbl_armas=Armas -lbl_dochabilitante=Doc. Habilitante -lbl_fechadochabilitante=Fecha Doc. Habilitante -lbl_fechasancion=Fecha Sanci\u00F3n -lbl_confirmacionguardarsancion=Est\u00E1 seguro de guardar la sanci\u00F3n ? -lbl_seleccionecentrocontroltramite=Seleccione el Centro de Control a Realizar el Tr\u00E1mite -lbl_longitud_minima=Longitud M\u00EDnima -lbl_numero_=N\u00FAmeros -lbl_caracteres_especiales=Caracter Especial -lbl_mayusculas=May\u00FAsculas -lbl_parametros_clave=La clave debe cumplir lo siguinete -btn_ubicar=Ubicar -btn_guardar_coordenadas =Guardar Coordenadas -nota_coordenadas =Al ingresar las coodernadas, verificar en el mapa que corresponda a la Ubicaci\u00F3n que esta haciendo referencia. -#TITULOS - -#ETIQUETAS CABECERA TABLAS -htbl_tipotramite=Tipo Tr\u00E1mite -htbl_requisitos=Requisitos -htbl_requisitosportipotramite=Requisitos por Tipo Tr\u00E1mite -htbl_TiposDeArmasExplosivos=TIPOS DE ARMAS Y EXPLOSIVOS -htbl_datospersonales=Datos Personales -htbl_seleccionetramite=SELECCIONE EL TR\u00C1MITE - -#ETIQUETAS TABS -tab_solgenerales=Datos Generales -tab_solrequisitos=Ingresar Requisitos -tab_requisitos=Requisitos -tab_solarmas=Seleccionar Armas -tab_solmateriales=Seleccionar Materiales -tab_solarticulos=Seleccionar Art\u00EDculos -tab_solguardias=Seleccionar Guardias -tab_tramite=Datos Tr\u00E1mite -tab_agencias=Seleccionar Agencias -tab_documentos=Listar Documentos -tab_depositoportramite=Dep\u00F3sito por Tr\u00E1mite -tab_depositoporcustodio=Dep\u00F3sito por Custodio -tab_seleccionar=Seleccionar -tab_eliminar=Eliminar -tab_modificar=Editar - - -#REQUISITO POR TIPO DE TRAMITE -lbl_depositoportramite=Dep\u00F3sito por Tr\u00E1mite -lbl_depositoporcustodio=Dep\u00F3sito por Custodio - -#RECEPCION/VERIFICACION DE ARMAS -lbl_recepcionarmas=Registro Entrega Armas -lbl_categoria=Categor\u00EDa -lbl_fecharegistro=Fecha Registro -lbl_provincia=Provincia -lbl_canton=Cant\u00F3n -lbl_ciudad=Ciudad -lbl_parroquia=Parroquia -lbl_fecharecepcion=Fecha Recepci\u00F3n -lbl_informacionarmas=INFORMACI\u00D3N DE ARMAS -lbl_informaciondocumentos=INFORMACI\u00D3N DE DOCUMENTOS -lbl_informacionagenciassucursales=INFORMACI\u00D3N DE AGENCIAS SUCURSALES -lbl_informacionpersonal=INFORMACI\u00D3N PERSONAL -lbl_codigo=C\u00F3digo -lbl_marca=Marca -lbl_modelo=Modelo -lbl_serie=Serie -lbl_color=Color -lbl_estado=Estado -lbl_estado_arma=Estado Arma -lbl_entregado=Entregado -lbl_pais=Pa\u00EDs Fabricaci\u00F3n - -#FICHA TECNICA ARMAS -lbl_observacion=Observaci\u00F3n -lbl_aptituddisparo=Aptitud Disparo -lbl_balastestigo=Balas Testigo -lbl_bainastestigo=Vainas Testigo -lbl_apruebaevaluacion=Aprueba Evaluaci\u00F3n -lbl_recuperadorbalisitico=RECUPERADOR BALISTICO -lbl_impronta=Impronta -lbl_fichatecnica=Ficha T\u00E9cnica -lbl_fotografia=Fotograf\u00EDa -lbl_archivocincomegas=5242880 -lbl_archivocuatromegas=4194304 -lbl_archivotresmegas=3145728 -lbl_archivodosmegas=2097152 -lbl_archivounmega=1048576 -lbl_mensajearchivoinvalido=El tama\u00F1o del archivo debe ser m\u00E1ximo de -lbl_observacionrequerido=El campo observaci\u00F3n es requerido -lbl_bainastestigorequerido=El campo vainas testigo es requerido -lbl_balastestigorequerido=El campo balas testigo es requerido -lbl_aptituddisparorequerido=El campo aptitud de disparo es requerido -lbl_informacionguardias=INFORMACI\u00D3N DE GUARDIAS -lbl_pruebasbalistica=PRUEBAS BALISTICA -lbl_impresionarma1=EL ARMA CON C\u00D3DIGO -lbl_impresionarma2=\ NO HA SIDO IMPRESA -lbl_isimpreso=FUE IMPRESO -lbl_imprimirarma=DEBE GENERAR REPORTE DEL ARMA ANTES DE ACEPTAR -lbl_subidaimagenes=LA SUBIDA DE IMAGENES ES REQUERIDA -lbl_subidaimagenes2=LA SUBIDA DE IMAGENES ES REQUERIDA. NO SE ENCUENTRAN SUBIDAS TODAS LAS IMAGENES -#LOV -lvh_requisitotramite=SELECCIONAR TR\u00C1MITE -lvh_clase=CLASE -lvh_longitud=LONGITUD -lvh_tipo=TIPO -lvh_calibre=CALIBRE -lvh_tipoarma=TIPO ARMA - - -#BOTONES -btn_descargarDocumentos=Descargar Documentos -btn_descargarDocumento=Descargar Documento -#Botones -btn_jurisdiccion=Jurisdicci\u00F3n -btn_buscar=Buscar -btn_crear=Crear -btn_eliminar=Eliminar -btn_imprimir=Generar Reporte -#MENSAJES -#msg_importeTotal=IMPORTE TOTAL DE VI\u00C1TICOS Y GASTOS DE VIAJES COMPROBADOS - -#Validacion de Tramite para la Gua de Libre Trnsito -lbl_datosTramite=DATOS TR\u00C1MITE -lbl_fechaSolicitud=Fecha Solicitud -lbl_tipoTramite2=Tipo Tr\u00E1mite - -lbl_tipoDocumento=Tipo Documento -lbl_numeroDocumento=No. Documento -lbl_nombreRazonSocial=Nombre / Raz\u00F3n Social -lbl_vendedor=Vendedor -lbl_lugarOrigen=Lugar Origen -lbl_lugarOrigenProvincia=Lugar Origen Provincia -lbl_lugarOrigenCanton=Lugar Origen Cant\u00F3n -lbl_comprador=Comprador -lbl_lugarDestino=Lugar Destino -lbl_lugarDestinoProvincia=Lugar Destino Provincia -lbl_lugarDestinoCanton=Lugar Destino Cant\u00F3n -lbl_estadoTramite=Estado Tr\u00E1mite -lbl_informacionArmas=INFORMACI\u00D3N ARMAS -lbl_numero=No. -lbl_tipo2=Tipo -lbl_calibre2=Calibre -btn_aceptar=Aceptar - -#Orden de trabajo para custodios -lbl_ordenTrabajo=ORDEN DE TRABAJO -lbl_numeroOrden=No. Orden Trabajo -lbl_fechaOrden=Fecha Orden Trabajo -lbl_documentoReferencia=Documento Referencia -lbl_comisionActividad=Comisi\u00F3n/Actividad -lbl_empresaSolicita=Empresa Solicita -lbl_lugarDireccionComision=Lugar y Direcci\u00F3n de la Comisi\u00F3n -lbl_ruta=Ruta -lbl_tiempoEstimado=Tiempo Estimado -lbl_fechaInicio=Fecha Inicio -lbl_fechaFinalizacion=Fecha Finalizaci\u00F3n -lbl_observaciones=Observaciones -lbl_datosCustodios=DATOS DE CUSTODIOS -lbl_nombreParticipante=Nombre Participante -lbl_apellidos=Apellidos -lbl_nombres=Nombres -lbl_cedula=No. C\u00E9dula -lbl_modificar=Editar -lbl_eliminar=Eliminar -lbl_ingresarCustodios=CREAR / EDITAR -lbl_modificarCustodios=CREAR / EDITAR -errorCedula=El n\u00FAmero ingresado no es v\u00E1lido. Por favor verificar. -#MENSAJES -#msg_importeTotal=IMPORTE TOTAL DE VI\u00C1TICOS Y GASTOS DE VIAJES COMPROBADOS - -#Actualizar Datos Generales -lbl_nombreRepresentanteLegal=Nombre Representante Legal -lbl_cedulaRepresentante=C\u00E9dula Representante Legal -lbl_actividadEconomica=Actividad Econ\u00F3mica -lbl_paisOrigen=Pa\u00EDs Origen -lbl_telefonoConvencional= Tel\u00E9fono Convencional -lbl_tlfCelular=Tel\u00E9fono Celular -lbl_estadoCivil=Estado Civil -lbl_genero=G\u00E9nero -lbl_estatura=Estatura (metros) -lbl_profesion=Profesi\u00F3n -lbl_correoElectronico=Correo Electr\u00F3nico -lbl_datosCapacidad=DATOS DE CAPACIDAD -lbl_manejoArmas=Manejo Armas -lbl_listarInformacion=LISTAR INFORMACI\u00D3N -lbl_seleccionarTodos=Seleccionar Todos -btn_registrarNovedad=Registrar Novedad -btn_actaDevolucion=Acta Devoluci\u00F3n -lbl_noTramite=No. Tr\u00E1mite -lbl_verificar=Verificar -lbl_registrarNovedad=Registrar Novedad -lbl_actaDevolucion=Acta Devoluci\u00F3n -lbl_unidadcontrol=Unidad De Control -xpathFujoDocumentoHabilitante=emisiondocumentohabilitante - -#Etiquetas para datos sanciones -lbl_tipoDeFalta=Tipo de Falta -lbl_falta=Falta -lbl_tiempoEnDias=Tiempo(d\u00EDas) -lbl_sancion=Sanci\u00F3n -htbl_datosParaSanciones =DATOS PARA SANCIONES -lov_tipoDeFalta=TIPOS DE FALTAS -lov_falta=FALTAS -lov_sancion=SANCIONES -lov_unidades=UNIDADES -lov_clase=CLASE -msg_error_seleccionClase = POR FAVOR SELECCIONE UNA CLASE DE ARMA O EXPLOSIVO - -#Verificacion de la Informacion de Devolucion - -#Carga de datos Excel -btn_cargar=Cargar -btn_limpiar=Limpiar -hfld_datosgenerales=Datos Generales -lbl_unidadcantidad=U. Medida Cantidad -lbl_peso=Peso -lbl_unidadpeso=U. Medida Peso -htbl_detalledelmaterial=Detalle del Material - -tramite=Tr\u00E1mite -lbl_dui=No. DUI -lbl_fob=Total FOB -lbl_paisdestino=Pa\u00EDs Destino -lbl_fabricante=Fabricante -lbl_aeropuertopuerto=Aeropuerto/Puerto -lbl_numerosolicitud=No. Solicitud -lbl_numerosolicitud_aucp=No. Solicitud / AUCP -lbl_datoscomprador=Datos Comprador -lbl_datostransaccion=Datos Transacci\u00F3n -lbl_tipotransaccion=Tipo Transacci\u00F3n -fct_datosPreguntasRespuestas = DATOS DE PREGUNTAS Y RESPUESTAS - -msg_error_lotenull=EL LOTE NO PUEDE SER NULO. -msg_error_armanovalida=TIPO DE ARMA NO VALIDA. -msg_error_cantidadnotnull=LA CANTIDAD NO PUEDE SER NULA. -msg_error_pesonull=EL PESO NO PUEDE SER NULO. -msg_error_nrseries=NO PUEDEN EXISTIR SERIES REPETIDAS. -msg_error_erroresexcel=ERROR DE REFERENCIA CON EL CAT\u00C1LOGO. -msg_error_claseytipo=LA CLASE Y EL TIPO NO PUEDEN TENER VALORES NULOS. -msg_error_nocontrolado=ERROR NO CONTROLADO, POR FAVOR REVISE SU DOCUMENTO. -msg_error_cantidadnumerica=LA CANTIDAD DEBE SER UN VALOR NUM\u00C9RICO. -msg_error_catalogo=ERROR EN EL CAT\u00C1LOGO DE TIPOARMAEXPLOSIVO -msg_error_pesonumerico=EL PESO DEBE SER UN VALOR NUM\u00C9RICO -##MESAJES SOLICITUD -msg_error_tramite=DEBE ESCOGER UN TR\u00C1MITE -msg_error_requisitos=DEBE INGRESAR TODOS LOS REQUISITOS SOLICITADOS -msg_error_no_requisitos=NO EXISTEN REQUISITOS DEFINIDOS PARA ESTE TIPO DE TR\u00C1MITE CONSULTE CON EL ADMINISTRADOR -msg_error_armas=DEBE SELECCIONAR AL MENOS UN ART\u00CDCULO EN EL TR\u00C1MITE -msg_error_maximo_armas=NO PUEDE SELECCIONAR MAS DE {0} ARMA(S), LAS ARMAS RESTANTES DEBEN SEGUIR EL TR\u00C1MITE PERTINENTE -msg_error_guardias=DEBE SELECCIONAR AL MENOS UN GUARDIA EN EL TR\u00C1MITE -msg_error_agencias=DEBE SELECCIONAR AL MENOS UNA AGENCIA EN EL TR\u00C1MITE -msg_error_documento=DEBE SELECCIONAR AL MENOS UN DOCUMENTO DE LA LISTA - -msg_error_imprimir_recepcion_armas=SE DEBEN ENCONTRAR SELECCIONADAS TODAS LAS ARMAS PARA PODER IMPRIMIR -msg_error_validar_seleccion_armas=SE DEBEN ENCONTRAR SELECCIONADAS TODAS LAS ARMAS PARA PODER GUARDAR -msg_error_requiere_validacion_tecnica=PARA EL TR\u00C1MITE SELECCIONADO, SE REQUIERE CUMPLIR CON EL SIGUIENTE REQUISITO PREVIO\: EVALUACI\u00D3N DE CONOCIMIENTOS -msg_error_requiere_validacion_psicologica=PARA EL TR\u00C1MITE SELECCIONADO, SE REQUIERE CUMPLIR CON EL SIGUIENTE REQUISITO PREVIO\: EVALUACI\u00D3N PSICOL\u00D3GICA - -msg_error_numerodocumento=SELECCIONE EL No. DOCUMENTO -msg_error_tipoarchivoinvalido=TIPO ARCHIVO INVALIDO -msg_error_exedeelnumero=EXEDE EL NUMERO DE ARCHIVOS - -msg_error_comprobanteDepositoUsado= \ EL DEP\u00D3SITO INGRESADO YA HA SIDO UTILIZADO EN OTRO TR\u00C1MITE. POR FAVOR VERIFICAR. -msg_error_tramiteSinDatosAsociados= EL N\u00DAMERO DE TR\u00C1MITE NO TIENE DATOS ASOCIADOS. -msg_error_decomisoSinDatosAsociados= EL DOCUMENTO DE DECOMISO NO TIENE DATOS ASOCIADOS. -msg_error_fechaDepositoMayorFechaActual= LA FECHA DE DEP\u00D3SITO NO PUEDE SER MAYOR A LA FECHA ACTUAL. -msg_error_archivo=EL FORMATO DEL ARCHIVO NO ES EL CORRECTO, RECUERDE QUE EL ARCHIVO DEBE SER PDF, PNG O JPEG Y NO DEBE SUPERAR 1MB. -msg_error_archivo_firma=EL FORMATO DEL ARCHIVO NO ES EL CORRECTO, RECUERDE QUE EL ARCHIVO DEBE SER PDF. -msg_error_sinarchivo=NO HA SUBIDO EL ARCHIVO FIRMADO A ALFRESCO. -msg_error_sinfirmararchivo=EL ARCHIVO NO EST\u00C1 FIRMADO PARA SUBIR AL ALFRESCO. -msg_error_nombrearchivo=EL NOMBRE DE ARCHIVO NO CORRESPONDE -msg_error_nombrearchivo_xpath=NO EXITE XPATH DEL ARCHIVO -msg_error_ingreseComprobanteDeposito=INGRESE EL COMPROBANTE DE DEP\u00D3SITO -msg_error_ingreseDocumentoDecomiso=INGRESE EL DOCUMENTO DE DECOMISO -msg_error_reimpresion=NO HA SELECCIONADO NINGUN REGISTRO O LOS REGISTROS SELECCIONADOS NO SON DE TIPO PERMISO -msg_error_verificararmas=NO HA SELECCIONADO NINGUN REGISTRO -msg_error_verificarcentcontdestino=NO HA SELECCIONADO NINGUN ORGANISMO DE CONTROL O UNIDAD DE CONTROL -msg_error_noexistendocumentos=NO TIENE DOCUMENTOS HABILITANTES EXISTENTES PARA ESTE TR\u00C1MITE -msg_error_noexistesolicitud=NO EXISTE SOLICITUD -msg_error_tramite_padre=REQUISITO PREVIO PARA ESTE TR\u00C1MITE\: {1}/{2}/{3} -msg_error_avanzar_flujo=DEBE IMPRIMIR ANTES DE HACER AVANZAR EL FLUJO -msg_error_adjuntar_resolucion=ERROR AL ADJUNTAR LA RESOLUCI\u00D3N - -##MESAJES DATOS SANCIONES -msg_error_tipoFaltaRequerido=SELECCIONE UN TIPO DE FALTA -msg_error_faltaRequerido=SELECCIONE UNA FALTA -msg_error_claseRequerido=SELECCIONE UNA CLASE -msg_error_sancionRequerido=SELECCIONE UNA SANCI\u00D3N - -#LABEL EVALUACIONES -ttl_evaluacion=TEST DE CONOCIMIENTOS -lbl_conocimientos=Conocimientos -lbl_test=Test -lbl_preguntas=Preguntas -lbl_mensaje=Lea detenidamente las preguntas del Test y seleccione una respuesta correcta. -btn_iniciar=Iniciar -#ARMAS -lbl_crearmaterial=CREAR MATERIAL -lbl_vermaterial=VER MATERIAL -lbl_modificarmaterial=EDITAR MATERIAL -htbl_detallematerial=DETALLE MATERIAL REGISTRADO -lbl_datospersonales=DATOS PERSONALES -lbl_datosmaterial=DATOS MATERIAL -lbl_fechaemisionpermiso=Fecha Emisi\u00F3n Permiso -lbl_tipofabricacion=Tipo Fabricaci\u00F3n -lbl_serielote=Serie/Lote -lbl_seriecanon=Serie/Ca\u00F1\u00F3n -lbl_datosdecomiso=DATOS DECOMISO / INCAUTACI\u00D3N -lbl_fechadecimiso=Fecha Decomiso / Incautaci\u00F3n -lbl_portadormaterial=Portador del Material -lbl_motivodecomiso=Motivo Decomiso / Incautaci\u00F3n -lbl_detallearma=FORMATO ARMA -lbl_datosarma=DATOS ARMA -lbl_codigoarma=C\u00F3digo de Arma -lbl_actualizar_propietario=ACTUALIZAR PROPIETARIO -lbl_datos_propietario_nuevo=Datos propietario nuevo - -#MATENIMIENTO DOCUMENTO ALFRESCO -lbl_crearmantenimientodocumento=CREAR MANTENIMIENTO DOCUMENTOS ALFRESCO -lbl_modificarmantenimientodocumento=EDITAR MANTENIMIENTO DOCUMENTOS ALFRESCO -lbl_vermantenimientodocumento=VER MANTENIMIENTO DOCUMENTOS ALFRESCO -htbl_detalledocumentoregistrados=DETALLE DE DOCUMENTOS REGISTRADO -lbl_datosPerfilDocumento= DOCUMENTOS POR PERFIL - -#MATENIMIENTO DOCUMENTO FISCALIA -lbl_crearcertificadofiscalia=CREAR CERTIFICADO FISCAL\u00CDA -lbl_modificarcertificadofiscalia=EDITAR CERTIFICADO FISCAL\u00CDA -lbl_datoscertificado=DATOS CERTIFICADO - -btn_generarReporte=Generar Reporte -btn_generarInforme=Generar Informe -btn_enviar=Enviar -btn_generarfecha=Generar Fecha -fct_materialParaDestruccion=MATERIAL PARA BAJA Y DESTRUCCI\u00D3N -lbl_fechaDeCorte=Fecha Corte -lbl_fechaNotificacion=Fecha Notificaci\u00F3n -lbl_formato = Formato -lbl_uniMedida= U. Medida -lbl_fecDecimiso=Fecha Decomiso / Incautaci\u00F3n -lbl_noRecibo=No. Recibo -fct_formatoReporteGenerar=FORMATO DEL REPORTE A GENERAR -fct_pnlunidaddestino=UNIDAD DE DESTINO -lbl_archivocash= Archivo Cash -lbl_plananual= Plan Anual -lbl_actadecomisoentrega= Acta de Entrega de Material Decomisado -lbl_actadecomisorecepcion= Acta de Recepci\u00F3n de Material Decomisado -lbl_documentodecomisoentrega= Documento Acta de Entrega de Material Decomisado -lbl_documentodecomisorecepcion= Documento Acta de Recepci\u00F3n de Material Decomisado -lbl_documentoplananual=Documento Plan Anual -lbl_tipodocumentos=Tipo de Documentos -lbl_numerodocumentos=No. Documentos - -lbl_combosolicitud=Solicitud -lbl_comboplanificacionanual=Planificaci\u00F3n Anual -lbl_comboashmanagement=Cash Management -lbl_combodecomiso=Decomisos -lbl_combofiscalia=Fiscal\u00EDa - - -#verificacion del material decomisado -fct_datosDelDecomiso=DATOS DEL DECOMISO / INCAUTACI\u00D3N -fct_datosDelArmaSancion=DATOS DEL ARMA / SANCI\u00D3N -lbl_numeroRecibo=No. Recibo -lbl_fechaDeDecomiso=Fecha Decomiso / Incautaci\u00F3n -lbl_cedulaRucPasaporte=C\u00E9dula/Ruc/Pasaporte -lbl_fechaDeRegistro=Fecha Registro -lbl_nocedula=No. C\u00E9dula -lbl_enBodega=En Bodega -tab_detalleDeArmas=DETALLE DE ARMAS -tab_sancion=SANCI\u00D3N - -##MENSAJES ARMAS -msg_error_tipoarmaexplosivonoexistente=TIPO DE ARMA EXPLOSIVO NO EXISTENTE, DEBE SELECCIONAR UNA COMBINACI\u00D3N V\u00C1LIDA -msg_error_camposrequeridos=ERROR, LOS CAMPOS MARCADOS CON (*) SON REQUERIDOS -msg_error_camponotificacion=EL CAMPO DE FECHA DE NOTIFICACIN NO HA SIDO GENERADO -msg_categoriaRequerida=DEBE SELECCIONAR UNA CATEGOR\u00CDA - -##MENSAJES INSPECCION -msg_error_ingreseelformatodeinspeccion=INGRESE EL FORMATO DE INSPECCI\u00D3N -msg_error_ingreselafoto1=INGRESE LA FOTO 1 -msg_error_ingreselafoto2=INGRESE LA FOTO 2 -msg_error_ingreselafoto3=INGRESE LA FOTO 3 -msg_error_seleccionesionoenaplicadecomiso=SELECCIONE SI O NO EN APLICA DECOMISO -msg_error_seleccionenegarocontinuartramiteproceso=SELECCIONE ALGUNA OPCI\u00D3N NEGAR O CONTINUAR TR\u00C1MITE O PROCESO -msg_error_seleccionenesitioinspeccion=SELECCIONE EL SITIO DE INSPECCI\u00D3N -msg_error_realizelabusqueda=REALIZE LA BUSQUEDA -mg_error_usuarionoencontrado=USUARIO NO ENCONTRADO -mg_error_usuarionoencontradovendedor=USUARIO NO ENCONTRADO -mg_error_usuarionoencontradocomprador=USUARIO NO ENCONTRADO -mg_error_ingreselosdatosdelpropietario=INGRESE LOS DATOS DEL PROPIETARIO -mg_error_seleccioneeltipodedocumentooingreselacedula=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselacedulavendedor=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselacedulacomprador=SELECCIONE EL TIPO DE DOCUMENTO E INGRESE EL N\u00DAMERO DE DOCUMENTO -mg_error_seleccioneeltipodedocumentooingreselongitudlatitud=SELECCIONE LA UBICACI\u00D3N -mg_error_seleccioneeltipoMapa=SELECCIONE TIPO DE UBICACI\u00D3N - -##MENSAJES DECOMISO -msg_error_numReciboNoRegistrado=EL N\u00DAMERO DE RECIBO NO SE ENCUENTRA REGISTRADO -msg_error_fechaCorteMayorAFechaActual=LA FECHA DE CORTE NO PUEDE SER MAYOR A LA FECHA ACTUAL -msg_error_fechaCorteRequerido=LA FECHA DE CORTE ES UN CAMPO REQUERIDO -msg_error_seleccioneAlmenosUnArma=DEBE SELECCIONAR AL MENOS UN ARMA DECOMISADA PARA GENERAR EL REPORTE -msg_error_noGuardoCorrectamenteReporte=NO SE HA PODIDO INICIAR EL PROCESO. ERROR AL GUARDAR EL REPORTE -msg_error_generarReporteRequerido= DEBE GENERAR EL REPORTE ANTES DE INICIAR EL PROCESO -msg_info_consultarArmasDecomidas=NO EXISTEN ARMAS DECOMISADAS AL MOMENTO DE CONSULTAR -##MENSAJES CUSTODIA TEMPORAL -msg_error_seleccionepropietario=SELECCIONE EL PROPIETARIO -msg_error_ingreselaobservacion=INGRESE LA OBSERVACI\u00D3N -msg_error_seleccioneelarmaacustodiatemporal=SELECCIONE EL ARMA A CUSTODIA TEMPORAL -msg_error_fechadecomisonopuedesermayoralaactual=LA FECHA DE DECOMISO/INCAUTACI\u00D3N NO PUEDE SER MAYOR A LA FECHA ACTUAL -msg_error_numerocomprobanterecibo=EL NO. COMPROBANTE/RECIBO YA EXISTE PARA LA ACTIVIDAD Y UNIDAD DE CONTROL SELECCIONADA -msg_error_validarnumerocomprobanterecibo=SELECCIONE ANTES ACTIVIDAD DE CONTROL PARA INSERTAR NO. COMPROBANTE/RECIBO -msg_error_nodocumentoinvalido=No Documento INVALIDO -msg_error_nodocumentoinvalidovendedor=No Documento INVALIDO -msg_error_nodocumentoinvalidocomprador=No Documento INVALIDO -msg_error_seleccionesinportadoroverifiqueusuarioexistente=SELECCIONE SIN PORTADOR O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccionesinportadoroverifiqueusuarioexistentevendedor=SELECCIONE O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccionesinportadoroverifiqueusuarioexistentecomprador=SELECCIONE O VERIFIQUE SI EL USUARIO EXISTE -msg_error_seleccioneelarmaarealizareldecomisoincautacion=SELECCIONE EL MATERIAL EN LA PESTA\u00D1A SELECCIONAR MATERIALES, PARA REALIZAR -msg_error_seleccionearchivodecomisoincautacion=SELECCIONE EL DOCUMENTO DE ACTIVIDAD DE CONTROL -msg_error_sin_decomisos=EL CENTRO DE CONTROL NO TIENE DECOMISOS -msg_error_sin_centrocontrol=NO SE ENCUENTRA ASIGNADO UN CENTRO DE CONTROL, REVISAR SI TIENE ASIGNADO UNA DIRECCI\u00D3N COMO PRINCIPAL Y PROVINCIA -msg_error_numero_recepcion=EL NUMERO DE RECEPCION NO TIENE EL FORMATO ESPERADO REC-000000000 -msg_error_solicitud_noencontrada=SOLICITUD NO ENCONTRADA -msg_error_listardocumentos_solo=SOLO PUEDE SELECCIONAR UN DOCUMENTO EN LA SECCI\u00D3N LISTAR DOCUMENTOS -msg_error_listardocumentos=SE DEBE SELECCIONAR AL MENOS UN DOCUMENTO EN LA SECCI\u00D3N LISTAR DOCUMENTOS -msg_error_psicologoinvalido=LA IDENTIFICACI\u00D3N DEL PSIC\u00D3LOGO RESPONSABLE ES INV\u00C1LIDA. - -##MENSAJES INFORMACION DEVOLUCION -msg_error_generereporte=GENERE EL REPORTE - -lbl_generarPlanInspeccionAnual=GENERAR PLAN DE INSPECCI\u00D3N ANUAL -lbl_datosPlanificacion=DATOS PLANIFICACI\u00D3N -lbl_anno=A\u00F1o -lbl_codigoPlanificacion=C\u00F3digo de Planificaci\u00F3n -lbl_planificacion=Planificaci\u00F3n -lbl_centroControlArmas=Centro de Control de Armas -lbl_fechaGeneracion=Fecha de Generaci\u00F3n -btn_generarPlanificacion=Generar Planificaci\u00F3n -btn_enviarPlanificacion=Enviar Planificaci\u00F3n -lbl_planificacionAnual=PLANIFICACI\u00D3N ANUAL -lbl_fechaCaducidad=Fecha Caducidad -lbl_estadoPermiso=Estado Permiso -msg_noExistenTramitesAnno=NO EXISTEN TR\u00C1MITES PARA EL A\u00D1O -lbl_editarRegistroInspeccion=EDITAR REGISTRO DE INSPECCI\u00D3N -msg_planificacionNoGenerada=NO SE HA GENERADO LA PLANIFICACI\u00D3N -lbl_aprobacionPlanificacion=APROBACION DE PLANIFICACI\u00D3N -dest_msg_mail_prueba=fpazmino@bupartech.com -lbl_filtrosBusqueda=FILTROS DE B\u00DASQUEDA -lbl_fechaDesaduanizacion=Fecha Desaduanizaci\u00F3n -lbl_datosGenerales=DATOS GENERALES -lbl_detalleMaterial=DETALLE DEL MATERIAL - -##PARAMETROS FIRMA -firma_coordenadallx=10 -firma_coordenadally=200 -firma_coordenadaurx=250 -firma_coordenadaury=1118 - -firma_coordenadallx2=370 -firma_coordenadally2=200 -firma_coordenadaurx2=610 -firma_coordenadaury2=1118 - -firma_mensaje=Por favor presione el bot\u00F3n -firma_mensaje2=Grabar -firma_mensaje3=para guardar el documento -firma_mensaje4=El archivo no est\u00E1 firmado para subir al alfresco -lbl_datosImportacion=DATOS DE IMPORTACI\u00D3N - -##CATALOGO -ctg_autorizacion=AUTORIZACI\u00D3N -ctg_primeravez=PRIMERA VEZ -ctg_renovacion=RENOVACI\u00D3N -ctg_permiso=PERMISO -ctg_certificados=CERTIFICADOS -ctg_perdida=P\u00C9RDIDA -ctg_actualizacionDeDatos=ACTUALIZACIN DE DATOS -ctg_reimpresion_tipo=REIMPRESION -ctg_reimpresion=REIMPRESI\u00D3N -ctg_tipotramite=TIPOTRAMITE -ctg_tipoautorizacion=TIPOAUTORIZACION -ctg_usoactividad=USOACTIVIDAD -ctg_resultado_aprobado=APROBADO -ctg_resultado_codigo=RESULTADO -ctg_tipo_evaluacion_conocimiento=CONOCIMIENTO -ctg_tipo_evaluacion_psicologica=PSICOLOGICA -lbl_test_psicologica=Test Psicol\u00F3gico -ctg_tipo_evaluacion_codigo=TIPOEVALUACION -##MENSAJE INFORMACION -msg_noplanificacion=No PLANIFICACI\u00D3N - -msg_armaDuplicada=EL ART\u00CDCULO QUE INTENTA CREAR YA SE ENCUENTRA REGISTRADO EN EL SISTEMA - -lbl_comprobanteCaja=ComprobanteDeCaja - -msg_error_generarlaplanificacion=GENERAR LA PLANIFICACI\u00D3N -tecnicoAlmacenamiento=T\u00C9CNICO DE ALMACENAMIENTO DEL -jefe=JEFE -msg_existePlanificacionAnno=YA EXISTE UNA PLANIFICACI\u00D3N PARA ESE A\u00D1O -lbl_fichaTecnicaArmas=FichaTecnicaArmas -lbl_registroBalistico=Registro bal\u00EDstico -lbl_dolares=D\u00D3LARES -msg_error_notienedireccionprincipal=NO TIENE DIRECCI\u00D3N PRINCIPAL -msg_error_laprovinciasinccontrol=LA PROVINCIA NO TIENE ASIGNADA UN CENTRO DE CONTROL -msg_error_sinprovincia=NO TIENE ASIGNADO UNA PROVINCIA -msg_error_singenerarreciboregistro=NO SE HA GENERADO UN RECIBO DE REGISTRO PARA EL DECOMISO -msg_error_notienedireccioncorreo=NO TIENE DIRECCI\u00D3N DE CORREO -msg_error_subiroarchivoregistrorecibo=ERROR AL OBTENER EL RECIBO DE REGISTRO DE DECOMISO - -msg_error_liqeco_fechaInicioMayorAFechaActual=SELECCIONE UNA FECHA DE INICIO MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaDecomisoMayorAFechaActual=SELECCIONE UNA FECHA DE DECOMISO MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaFinMayorAFechaActual=SELECCIONE UNA FECHA FIN MENOR A LA FECHA ACTUAL -msg_error_liqeco_fechaInicioMayorAFechaFin=LA FECHA DE INICIO SELECCIONADA DEBE SER MAYOR O IGUAL A LA FECHA FIN SELECCIONADA -msg_error_liqeco_fechaInicioMayorAFechaFin1=LA FECHA DE INICIO SELECCIONADA DEBE SER MENOR O IGUAL A LA FECHA FIN SELECCIONADA -msg_error_claveanteriornopuederserigualactual=CLAVE ANTERIOR NO PUEDE SER IGUAL A LA ACTUAL - -msg_error_coninv_fechaMayorAFechaActual=SELECCIONE UNA FECHA MENOR A LA FECHA ACTUAL - -msg_error_elnombredelarchivonocaracteresespeciales=EL NOMBRE DEL ARCHIVO NO PUEDE CONTENER CARACTERES ESPECIALES -msg_error_ingresenumsolicitudexacto=NO SE PUEDE REALIZAR LA CONSULTA CON %, INGRESE EL No. DE SOLICITUD COMPLETO -msg_error_elnombredelarchivonodebeiniciarconnum=EL NOMBRE DEL ARCHIVO NO DEBE INICIAR CON N\u00DAMEROS -msg_error_elnombredelarchivonodebecontenerespaciosenblanco=EL NOMBRE DEL ARCHIVO NO DEBE CONTENER ESPACIOS EN BLANCO -msg_error_elnombredelarchivonodebesermenoracincoletras=EL TAMA\u00D1O DEL NOMBRE DEL ARCHIVO NO DEBE SER MENOR A 5 CARACTERES - -#URL DE LOS SERVICIOS MANEJADOS DESDE LA SNAP -url_snap_servicio_cedula=https://serviciosarmas.ccffaa.mil.ec:8085/serviceCedula?wsdl -url_snap_servicio_ruc=https://serviciosarmas.ccffaa.mil.ec:8085/serviceRUC?wsdl - - -msg_error_nohaseleccionadoarmas=NO HA SELECCIONADO NINGUNA ARMA -msg_inf_digitadordel=COORDINADOR DEL -msg_error_ingrese_funcionario=INGRESE EL FUNCIONARIO - -codigo_estado_arma_busqueda_venta='REG','REN','APTA','DEV','ECO','COLE','PRO' - -msg_error_generar_reporte=ERROR AL GENERAR EL REPORTE - -msg_recuerdeClickContinuarTramite=PARA CONTINUAR SU TR\u00C1MITE\: DEBE DAR CLICK EN EL BOT\u00D3N CONTINUAR TR\u00C1MITE -msg_recuerdeUnicaCargaInventario=RECUERDE QUE EL INVENTARIO PARA UNA CATEGOR\u00CDA SELECCIONADA SOLO PODR\u00C1 SUBIRSE UNA \u00DANICA VEZ -msg_inventarioCargadoPreviamente=EL INVENTARIO PARA LA CATEGOR\u00CDA SELECCIONADA YA FUE CARGADO ANTERIORMENTE -msg_inventarioNoArmasFuegoNiNoLetales=No se permite el ingreso de armas de fuego ni tampoco de armas no letales -msg_reimpresionprevianopermitida=NO SE PUEDE REIMPRIMIR DOCUMENTOS CON FECHA DE EMISI\u00D3N PREVIA AL 15 DE JUNIO DEL 2015 -msg_recuerdeClickSeleccionarArmas=PARA VISUALIZAR LAS ARMAS DEBE DAR CLICK EN EL BOT\u00D3N SELECCIONAR ARMA -msg_recuerdeClickGenerarReciboRegistro=PARA TERMINAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N GENERAR RECIBO REGISTRO PARA OBTENER EL REPORTE DE REGISTRO -msg_recuerdeClickCargarDocActControl=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N SELECCIONAR DE CARGA DOCUMENTO ACTIVIDAD DE CONTROL Y SEGUIDO DAR CLICK EN EL BOT\u00D3N SUBIR -msg_recuerdeClickBtnSave=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N GRABAR -msg_recuerdeClickBtnRegMaterial=PARA CONTINUAR EL REGISTRO\: DEBE DAR CLICK EN EL BOT\u00D3N REGISTRO MATERIAL -msg_recuerdeClickTabRegMaterial=PARA CONTINUAR EL REGISTRO\: DEBE SELECCIONAR MATERIAL EN LA PESTA\u00D1A SELECCIONAR MATERIALES -msg_recuerdeClickGenerarActa=PARA CONTINUAR SU TRAMITE\: DEBE DAR CLICK EN EL BOT\u00D3N GENERAR ACTA - -lbl_desde=Desde -lbl_hasta=Hasta -lbl_ultimaGeneracion=\u00DAltima Generaci\u00F3n - -lbl_aucp=AUCP -lbl_estaDesaduanizado=EST\u00C1 DESADUANIZADO? -msg_error_aucp_previamente_cargado=EL C\u00D3DIGO DE SOLICITUD AUCP YA HA SIDO CARGADO PREVIAMENTE -msg_error_carga_armas_inexistentes=NO EXISTEN ART\u00CDCULOS CREADOS PARA EL PRESENTE REGISTRO -msg_desea_iniciar_desaduanizacion=DESEA INICIAR LA DESADUANIZACI\u00D3N? -msg_desea_recuerde_desaduanizacion1=RECUERDE QUE UNA VEZ INICIADA LA DESADUANIZACI\u00D3N, NO PODR\u00C1 EDITAR -msg_desea_recuerde_desaduanizacion2=ART\u00CDCULOS DESDE LA PANTALLA INGRESO DE IMPORTACI\u00D3N -msg_desea_continuar=DESEA CONTINUAR? - -lbl_partida_arancelaria=Partida Arancelaria -msg_error_paisOrigenRequerido=Pa\u00EDs Origen Requerido -msg_error_provinciaRequerido=Provincia Requerida -msg_error_cantonRequerido=Cant\u00F3n Requerido -msg_error_ciudadRequerido=Ciudad Requerida -msg_error_aeropuertoRequerido=Aeropuerto Requerido -lbl_tipo_planificacion=Periodos de Planificacin -lbl_asignacion_presupuestaria=Asignacin Presupuestria -lbl_tipo_sancion=Tipo Sancin - -lbl_datosOrganismoControl=DATOS ORGANISMO CONTROL -lbl_datosUbicacionDecomiso=DATOS UBICACI\u00D3N ACTIVIDAD DE CONTROL -lbl_datosPortadorEnElDecomiso=DATOS DEL PORTADOR EN ACTIVIDAD DE CONTROL - -lbl_tipoDecomiso=Actividad de Control -lbl_numeroComprobanteRecibo=No. Comprobante/Recibo -lbl_fechaDecomiso=Fecha actividad de control -lbl_sinDocumento=Sin No. Documento -lbl_cargarDocumentoDecomiso=Carga Documento Actividad de Control - - - -#Certificado Fiscalia -lbl_cargarCertificadoFiscalia=Solicitud de Certificado -lbl_fiscalianrosolicitud=No. Solicitud -lbl_fiscalianombresolicitud=Nombre Solicitante -lbl_fiscalianroinstruccionfiscal=No. Expediente Fiscal -lbl_fiscalianfechaActual=Fecha Actual -lbl_fiscalianroficiofiscal=No. Oficio Fiscal\u00EDa -lbl_mensaje_noseencuentrandatosserie=No se encuentras datos, ingrese la serie, para generar el certificado -lbl_mensaje_noseencuentrandatosperson=No se encuentras datos, ingrese la identificaci\u00F3n y/o nombres, para generar el certificado - -# -lbl_organismo_control=Organismo de Control -lbl_centro_control=Centro de Control -lbl_numero_recibo=N\u00FAmero Recibo -lbl_numero_armas_procesadas=N\u00FAmero Armas Procesados -lbl_numero_armas_error=N\u00FAmero de Errores -lbl_numero_armas_correctas=Armas Correctas -lbl_numoficio=No. Oficio \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/customer_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/customer_es.properties.svn-base deleted file mode 100644 index 170e751..0000000 --- a/frontend/src/main/resources/.svn/text-base/customer_es.properties.svn-base +++ /dev/null @@ -1,42 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -#Cabecera de tablas -htbl_profile=PERFIL -htbl_persons=PERSONAS - -lvh_persons=PERSONAS -lvh_destinos=DESTINOS - - -############Etiquetas -lbl_area=\u00C1rea -lbl_BPMuser=Usuario BPM -lbl_branch=Sucursal -lbl_branchterminal=Terminal de la sucursal -lbl_channel=Canal -lbl_identification=Identificaci\u00F3n -lbl_language=Lenguaje -lbl_office=Oficina -lbl_nickname=Sobrenombre -lbl_person=Persona -lbl_user=Usuario -lbl_usercode=C\u00F3digo de usuario -lbl_personcode=C\u00F3digo de persona -lbl_surname=Apellido -lbl_profession=Profesi\u00f3n -lbl_maritalststus=Estado civil \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/firmas_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/firmas_es.properties.svn-base deleted file mode 100644 index 5919592..0000000 --- a/frontend/src/main/resources/.svn/text-base/firmas_es.properties.svn-base +++ /dev/null @@ -1,14 +0,0 @@ -lbl_codigo=C\u00F3digo -lbl_nombre=Nombre -lbl_cedula=C\u00E9dula -lbl_cargo=Cargo -lbl_unidad=Unidad -lbl_codservidor=Cod. Servidor -lbl_nomservidor=Nombre Servidor -lbl_servidor=Servidor -lbl_certificado=Certificado -lbl_vigencia=Vigencia -lbl_fechaDesde=Fecha Desde -lbl_fechaHasta=Fecha Hasta -lbl_estado=Estado -lbl_acciones=Acciones \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/general_es.properties.netbeans-base b/frontend/src/main/resources/.svn/text-base/general_es.properties.netbeans-base deleted file mode 100644 index d0bef92..0000000 --- a/frontend/src/main/resources/.svn/text-base/general_es.properties.netbeans-base +++ /dev/null @@ -1,435 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -dateformat=dd-MM-yyyy -lbl_numdocsitios=No. Documento -lbl_descripcionCorta=Descripci\u00F3n corta -datetimeformat=dd-MM-yyyy HH:mm:ss -numberformat= #,##,##0.000000 -time=HH:mm -decimals=2 - -#Controles Editor Prime -#source -lst_controls=bold italic underline strikethrough subscript superscript | font size style | color highlight removeformat | bullets numbering | outdent indent | alignleft center alignright justify | undo redo | rule image link unlink | cut copy paste pastetext | print - -#URL Images -url_blanck=/resources/images/blanck.jpg -url_green=/resources/images/green.jpg -url_red=/resources/images/red.jpg - -#Botones -btn_cancell=Cancelar -btn_controlcambios=Existe cambios pendientes, desea recargar la p\u00E1gina?. (Si) Perder\u00E1 los cambios realizados. -btn_create=Crear -btn_add=Agregar -btn_aceptar=Aceptar -btn_delete= -btn_edit= -btn_show= -btn_query= -btn_next= -btn_previous= -btn_save=Grabar -btn_update=Actualizar -btn_exit=Salir -btn_last=Anterior -btn_signature=Firmar -btn_confirmTask=Est\u00E1 seguro de completar la tarea? -btn_confirmFlow=Est\u00E1 seguro de Continuar el Tr\u00E1mite? -btn_transaction=Transacci\u00F3n (F2) -btn_reload=Recargar (F4) -btn_queryTran=Consultar (F5) -btn_saveTran=Guardar (F10) -btn_helpTran=Ayuda (F1) - -#Cabecera de tablas -htbl_catalog=CAT\u00C1LOGO -htbl_catalogdetail=DETALLE DE CAT\u00C1LOGO -htbl_password=CAMBIO DE CONTRASE\u00D1A -htbl_transaction=TRANSACCI\u00D3N -htbl_parameters=PAR\u00C1METROS -htbl_secutiryPolicies=POL\u00CDTICAS DE SEGURIDAD -htbl_address=DIRECCIONES -htbl_phones=TEL\u00C9FONOS -htbl_terminal=TERMINALES -htbl_profile=PERFIL -htbl_profiles=PERFILES -htbl_daysnotaccounting=D\u00CDAS NO CONTABLES -htbl_accountingdays=D\u00CDAS CONTABLES -htbl_product=PRODUCTOS -htbl_generals=GENERALES -htbl_subproduct=SUBPRODUCTOS -htbl_subproductcurrency=MONEDAS POR SUBPRODUCTO -htbl_messages=MENSAJES -htbl_module=M\u00D3DULOS -htbl_menus=MEN\u00DAS -htbl_balancetype=TIPOS DE SALDO -htbl_balancetypedetail=DETALLE DE TIPOS DE SALDO -htbl_menulevel=NIVEL DE MEN\u00DA -htbl_template=PLANTILLA -htbl_offices=OFICINAS -htbl_branches=SUCURSALES -htbl_compmantenimiento=COMPONENTES DE MANTENIMIENTO -htbl_componentes=COMPONENTES DE NEGOCIO -htbl_economicactivity=ACTIVIDAD ECON\u00D3MICA -htbl_rule=FLUJOS / REGLAS -htbl_message=MENSAJE -htbl_branch=SUCURSAL -htbl_catalogo=CAT\u00C1LOGO -htbl_menusublevel=SUBNIVEL DE MEN\u00DA -htbl_process=PROCESO -htbl_usuario=USUARIO -htbl_server=SERVIDOR -htbl_table=TABLA - -lvh_table=TABLA - -lvh_economicactivity=ACTIVIDAD ECON\u00D3MICA -lvh_balancetype=TIPO DE SALDO -lvh_rule=FLUJOS / REGLAS -lvh_message=MENSAJE -lvh_branch=SUCURSAL -lvh_catalogo=CAT\u00C1LOGO -lvh_menulevel=NIVEL DE MEN\u00DA -lvh_menusublevel=SUBNIVEL DE MEN\u00DA -lvh_process=PROCESO -lvh_profiles=PERFILES -lvh_transaction=TRANSACCI\u00D3N -lvh_usuario=USUARIO -lvh_help=AYUDA - -#TIENE QUE IR EN MAYUSCULAR POR ESTANDAR -lbl_filters=FILTROS DE B\u00DASQUEDA -#TIENE QUE IR EN MAYUSCULAR POR ESTANDAR -lbl_parametersgenerationdates=PAR\u00C1METROS GENERACI\u00D3N FECHAS CONTABLES - - -#Etiquetas -lbl_pendding_changes=MODIFICACIONES PENDIENTES -lbl_acco_date=Fecha contable -lbl_affectimmobilization=Afecta inmobilizaci\u00F3n -lbl_area=\u00C1rea -lbl_autoquery=Consulta autom\u00E1tica -lbl_branch=Sucursal -lbl_initbranch=Sucursal inicial -lbl_endbranch=Sucursal final -lbl_branchamong=Intersucursales -lbl_cache=Cach\u00E9 -lbl_catalogo=Cat\u00E1logo -lbl_channel=Canal -lbl_day=D\u00EDa -lbl_isaccounting=Contabilizar -lbl_isworking=Fecha de trabajo -lbl_executeprocessclass=Clase que ejecuta el proceso -lbl_compania=Compa\u00F1\u00EDa -lbl_completeitem=Completa \u00EDtem -lbl_confirmpassword=Confirmar Contrase\u00F1a -lbl_code=C\u00F3digo -lbl_query_code=C\u00F3digo de consulta -lbl_description=Descripci\u00F3n -lbl_inittdate=Fecha inicial -lbl_enddate=Fecha final -lbl_finishtime=Hora fin -lbl_flow=Flujo -lbl_inbox=Bandeja de entrada -lbl_inittime=Hora inicio -lbl_isflow=Es flujo -lbl_internal=Interna -lbl_language=Lenguaje -lbl_message=Mensaje -lbl_module=M\u00F3dulo -lbl_month=Mes -lbl_name=Nombre -lbl_office=Oficina -lbl_order=Orden -lbl_page=P\u00E1gina -lbl_password=Contrase\u00F1a -lbl_previousPassword=Contrase\u00F1a anterior -lbl_profiles=Perfiles -lbl_process=Proceso -lbl_processname=Nombre de proceso -lbl_processtype=Tipo de proceso -lbl_clase=Clase -lbl_queryagain=Consultar nuevamente -lbl_querycode=C\u00F3digo de consulta -lbl_rule=Regla -lbl_sequence=Secuencia -lbl_shortdescription=Descripci\u00F3n corta -lbl_signature=Firma -lbl_state=Estado -lbl_status=Estatus -lbl_transaction=Transacci\u00F3n -lbl_usuario=Usuario -lbl_person_code=C\u00F3digo de persona -lbl_validateamount=Validar monto -lbl_version=Versi\u00F3n -lbl_working_date=Fecha de trabajo -lbl_text_value=Valor texto -lbl_number_value=Valor num\u00E9rico -lbl_numberdoc=N\u00FAmero Documento -lbl_razonsocial=Nombre/Raz\u00F3n Social -lbl_generarmapa=Generar Mapa -lbl_limpiar=Limpiar -lbl_validitydays=D\u00EDas de validez de la contrase\u00F1a -lbl_messagedays=N\u00FAmero de d\u00EDas para presentar mensajes de advertencia por vencimiento de contrase\u00F1a -lbl_minlength=Longitud m\u00EDnima -lbl_minnotrepeated=N\u00FAmero hist\u00F3rico de contrase\u00F1as no permitidas -lbl_minnumber=N\u00FAmero m\u00EDnimo de d\u00EDgitos -lbl_minspecialcharacters=N\u00FAmero m\u00EDnimo de caracteres especiales -lbl_minuppercase=N\u00FAmero m\u00EDnimo de letras may\u00FAsculas -lbl_minlowercase=N\u00FAmero m\u00EDnimo de letras min\u00FAsculas -lbl_intentnumber=N\u00FAmero de intentos -lbl_identificationtype=Tipo de identificaci\u00F3n -lbl_identification=Identificaci\u00F3n -lbl_firstname=Nombre -lbl_lastname=Apellido -lbl_middlename=Segundo nombre -lbl_surname=Segundo apellido -lbl_gender=G\u00E9nero -lbl_person_height=Estatura -lbl_activitynoteconomic=Actividad no econ\u00F3mica -lbl_activityeconomic=Actividad econ\u00F3mica -lbl_economicsector=Sector econ\u00F3mico -lbl_typeclient=Tipo de cliente -lbl_profesion=Profesi\u00F3n -lbl_estadoCivil=Estado Civil -lbl_segment=Segmento -lbl_descriptionSegment=Descripci\u00F3n segmento -lbl_number=No. -lbl_addresstype=Tipo de direcci\u00F3n -lbl_principal=Principal -lbl_address=Direcci\u00F3n -lbl_phonetype=Tipo tel\u00E9fono -lbl_numaddress=No. direcci\u00F3n -lbl_numphone=No. telef\u00F3nico -lbl_numextension=No. extensi\u00F3n -lbl_country=Pa\u00EDs -lbl_province=Provincia -lbl_canton=Cant\u00F3n -lbl_parroquia=Parroquia -lbl_city=Ciudad -lbl_principalstreet=Calle principal -lbl_numberhome=N\u00FAmero -lbl_numberdept=No. Casa/Depto. -lbl_reference=Referencia -lbl_secondstreet=Calle secundaria -lbl_urbanization=Urbanizaci\u00F3n -lbl_terminal=Terminal -lbl_macaddress=Mac -lbl_ipaddress=Ip -lbl_printer=Impresora -lbl_date=Fecha -lbl_duration=Duraci\u00F3n -lbl_information=Informaci\u00F3n -lbl_value=Valor -lbl_creation=Creaci\u00F3n -lbl_history=Historia -lbl_generatereport=Generar reporte -lbl_messages=Mensajes -lbl_select_option=Seleccione una opci\u00F3n -lbl_action=Acci\u00F3n -lbl_product=Producto -lbl_subproduct=Subproducto -lbl_subproductcurrency=Subproductos por moneda -lbl_initials=Iniciales -lbl_category=Categor\u00EDa -lbl_balancetype=Tipo de saldo -lbl_balancegroup=Grupo de balance -lbl_charges=Cargos -lbl_chargesintable=Cargos por tabla -lbl_menu=Men\u00FA -lbl_loading=Cargando -lbl_currency=Moneda -lbl_currencycharge=Moneda cargo -lbl_minamount=Monto m\u00EDnimo -lbl_maxamount=Monto m\u00E1ximo -lbl_rate=Tasa -lbl_percentage=Porcentaje -lbl_minvalue=Valor m\u00EDnimo -lbl_maxvalue=Valor m\u00E1ximo -lbl_menulevel=Nivel men\u00FA -lbl_menusublevel=Subnivel men\u00FA -lbl_transactionlevel=Transacci\u00F3n por nivel -lbl_transactionsublevel=Transacci\u00F3n por subnivel -lbl_levels=Niveles -lbl_template=Plantilla -lbl_edit=Crear -lbl_createoredit=Crear / Editar -lbl_task=Tarea -lbl_completetask=Completar Tarea -lbl_options=OPCIONES -lbl_profile=Perfil -lbl_phone=Tel\u00E9fono -lbl_group=Grupo -lbl_classname=Clase -lbl_automatic=Autom\u00E1tico -lbl_service=Servicio -lbl_services=SERVICIOS -lbl_folder=Carpeta -lbl_upload=Subir archivos -lbl_descargarsubir=DESCARGAR/SUBIR DOCUMENTOS -lbl_firstnames=Nombres -lbl_lastnames=Apellidos -lbl_documentos=Documentos -lbl_imprimir=Imprimir -lbl_firmadoDoc=Firmar documento -lbl_motivo=Motivo -lbl_confirmTask=CONFIRMAR TAREA -lbl_confirmInitFlow=CONFIRMAR CONTINUAR TR\u00C1MITE -lbl_transaccion_no_existe=Transacci\u00F3n no definida para el perfil seleccionado. -lbl_auxiliar=Auxiliar -lbl_seleccionar=Seleccionar -lbl_subir=Subir -lbl_cancelar=Cancelar -lbl_correo_electronico=Correo Electr\u00F3nico - -#Etuqueta YES/NO -lbl_yes=SI -lbl_no=NO - -#Auditoria -lbl_table=Tabla -lbl_client=Cliente -lbl_filed=Campo -lbl_currentvalue=Valor actual -lbl_previousvalue=Valor anterior -lbl_realDate= Fecha real -lbl_accounting=Cuenta -lbl_insert=Inserci\u00F3n -lbl_delete=Eliminaci\u00F3n - -#Mensajes de validacion -msg_val_email=E-mail no v\u00E1lido - -#Mensajes -msg_catalogrequird=TRANSACCI\u00D3N REQUERIDA -msg_filterrequird=INGRESE UN CRITERIO DE B\u00DASQUEDA -msg_transactionrequird=TRANSACCI\u00D3N REQUERIDA -msg_modulerequird=M\u00D3DULO REQUERIDO -msg_productrequird=PRODUCTO REQUERIDO -msg_subproductrequird=SUBPRODUCTO REQUERIDO -msg_passwordnomatch=CONTRASE\u00D1A NO COINCIDE -msg_passwordrequired=CONTRASE\u00D1A REQUERIDA -msg_querydata=CONSULTE LOS DATOS -msg_querynodata=CONSULTA NO TIENE REGISTROS -msg_requireAddress=DIRECCI\u00D3N REQUERIDA -msg_requirePhones=TEL\u00C9FONO REQUERIDO -msg_requireActivity=ACTIVIDAD ECON\u00D3MICA REQUERIDA -msg_pendingActivation=USUARIO ACTIVO -msg_userrequired=USUARIO REQUERIDO -msg_userNotFound=USUARIO NO ENCONTRADO -msg_userExist=EL USUARIO YA EXISTE -msg_grouprequird=GRUPO REQUERIDO -msg_notUserBpm=NO ES USUARIO BPM -msg_foundRecord=REGISTRO YA INGRESADO -msg_notSave=FORMULARIO NO PERMITE REALIZAR CAMBIOS -msg_notQuery=FORMULARIO NO PERMITE CONSULTA -msg_menucodeRequired=MEN\u00DA REQUERIDO -msg_menulevel=Nivel men\u00FA -msg_menuNotFound=Men\u00FA no encontrado -msg_menuLevelRequired=NIVEL MEN\u00DA REQUERIDO -msg_menusublevel=Subnivel men\u00FA -msg_levelNotFound=Nivel no encontrado -msg_menuSubLevelRequired=SUBNIVEL MEN\u00DA REQUERIDO -msg_messageRequired=MENSAJE REQUERIDO -msg_fileTypeNotFound=Tipo de archivo no encontrado -msg_branchRequired=SUCURSAL REQUERIDA -msg_processrequired=PROCESO REQUERIDO -msg_profilerequird=PERFIL REQUERIDO -msg_validatetimehour=HORA DE FINALIZACI\u00D3N TIENE QUE SER MAYOR A LA HORA DE INICIO -msg_accodate_already_generated=LA FECHA CONTABLE YA HA SIDO GENERADA, VUELVA A RECARGAR -msg_serviceReq=SERVICIO REQUERIDO -#Mensajes alfresco -msg_error_subir_arch=OCURRI\u00D3 UN ERROR AL SUBIR EL ARCHIVO -msg_error_bajar_arch=OCURRI\u00D3 UN ERROR AL DESCARGAR EL ARCHIVO -msg_doc_no_existe=EL DOCUMENTO A BUSCAR NO EXISTE -msg_carp_no_existe=LA CARPETA {0} NO EXISTE -msg_error_consulta_docs=ERROR AL CONSULTAR LOS DOCUMENTOS -msg_invalid_file_ext=EXTENSI\u00D3N DE ARCHIVO NO PERMITIDA -msg_invalid_file_limit=LIMITE DE ARCHIVOS SUBIDOS SUPERADO -msg_location_req=SE REQUIERE LA UBICACI\u00D3N DEL ARCHIVO -msg_arch_subido_success=ARCHIVO(S) SUBIDO(S) EXITOSAMENTE -#mensajes Viaticos -msg_status_notFound=ESTADO NO ENCONTRADO -msg_funcionarioReq=FUNCIONARIO REQUERIDO -msg_fecViaticosReq=FECHAS DE VI\u00C1TICOS REQUERIDOS -msg_destinoReq=DESTINO REQUERIDO -msg_ejercicioFiscal=NO SE OBTUVO LA FECHA -msg_parametroReq=PAR\u00C1METRO REQUERIDO -msg_superaDias=SUPERA LOS 60 D\u00CDAS -msg_transporteReq=TRANSPORTE REQUERIDO -msg_codSolicitudReq=C\u00D3DIGO DE SOLICITUD REQUERIDO -msg_rubroRequerido=SE REQUERIERE AL MENOS UN RUBRO PARA LA COMISI\u00D3N -msg_fechasComReq=SE REQUIERE FECHA/HORA DE SALIDA Y LLEGADA DE LA COMISI\u00D3N -msg_solicitudReq=DEBE REGISTRAR UNA SOLICITUD -msg_ingresoTransporte=INGRESAR AL MENOS DOS REGISTROS DE TRANSPORTE -msg_codSolicitud=C\u00D3DIGO DE SOLICITUD -msg_solicitudNoRegistrada=NO SE HA REGISTRADO UNA SOLICITUD -msg_noPermiteRegistros=NO PERMITIDO EL INGRESO DE M\u00C1S REGISTROS -msg_fechaSalida=FECHA DE LLEGADA MENOR A LA FECHA DE SALIDA -msg_horaSalidaTra=HORA DE SALIDA MENOR A LA HORA DE INICIO DEL VI\u00C1TICO -msg_horaLlegasaTra=HORA LLEGADA MENOR A LA HORA DE INICIO DEL VI\u00C1TICO -msg_horaInicioTran=HORA DE SALIDA MAYOR A LA HORA DE FIN DEL VI\u00C1TICO -msg_horaFinTran=HORA DE LLEGADA MAYOR A LA HORA DE FIN DEL VI\u00C1TICO -msg_funcionarioIng=FUNCIONARIO YA INGRESADO -msg_codigoInfoReq=C\u00D3DIGO REQUERIDO -msg_fechaTransInvalid=LA HORA DE SALIDA DEL TRANSPORTE DEBE SER MAYOR A LA HORA DE LLEGADA -msg_horaTransInvalid=LA HORA DE SALIDA DE LA SOLICITUD DEBE SER MAYOR A LA HORA DE LLEGADA -msg_solicitudeNotSave=FLUJO DE TRABAJO INICIADO: SOLICITUD NO PERMITE REALIZAR CAMBIOS -msg_solicitudAnulada=SOLICITUD ANULADA -msg_solicitudRequerida=SOLICITUD REQUERIDA -msg_firmaExistente=EL DOCUMENTO YA HA SIDO FIRMADO -msg_firmaNecesaria=ES NECESARIO FIRMAR EL DOCUMENTO -msg_sinFirma=EL DOCUMENTO NO DEBE SER FIRMADO -msg_comprobantesreq=COMPROBANTES REQUERIDOS -msg_solicitudeNotSign=LA SOLICITUD NO FUE CREADA CON FIRMA ELECTR\u00D3NICA -msg_solicitudeSign=LA SOLICITUD FUE CREADA CON FIRMA ELECTR\u00D3NICA -msg_informNotSign=EL INFORME NO FUE CREADO CON FIRMA ELECTR\u00D3NICA -msg_informSign=EL INFORME FUE CREADO CON FIRMA ELECTR\u00D3NICA -msg_certificateNotParam=CERTIFICADO NO PARAMETRIZADO PARA EL USUARIO ACTUAL -msg_initFlow=FLUJO INICIADO -msg_fechaFueraRango=FECHA DE TRANSPORTE FUERA DEL PER\u00CDODO DEL VI\u00C1TICO -msg_idTaskRequired=ID DE LA TAREA REQUERIDO - -#Tab -tab_bycode=POR C\u00D3DIGO -tab_transactionprocess=PROCESO TRANSACCI\u00D3N -tab_generals=GENERALES -tab_address=DIRECCIONES -tab_telephones=TEL\u00C9FONOS -tab_menu=MEN\u00DA -tab_agenda=AGENDA -tab_my_tasks=MIS TAREAS -tab_groups=GRUPOS -tab_product=PRODUCTO -tab_subproduct=SUBPRODUCTO -tab_subproductcurr=SUBPRODUCTOS POR MONEDA -tab_menulavels=NIVELES DE MEN\u00DA -tab_menusublavels=SUBNIVEL MEN\u00DA -tab_transactionlavel=TRANSACCIONES POR NIVEL -tab_transactionsublevel=TRANSACCIONES POR SUBNIVEL -tab_charges=CARGOS GENERALES -tab_subproductcharges=CARGOS POR SUBPRODUCTO -tab_offices=OFICINAS -tab_branches=SUCURSALES -tab_new_delete=NUEVOS/ELIMINADOS -tab_updates=ACTUALIZADOS - -#Expresiones regulares -regExp_email=^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,3})$ -lbl_digitalSign=Firma digital\: diff --git a/frontend/src/main/resources/.svn/text-base/general_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/general_es.properties.svn-base deleted file mode 100644 index d0bef92..0000000 --- a/frontend/src/main/resources/.svn/text-base/general_es.properties.svn-base +++ /dev/null @@ -1,435 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -dateformat=dd-MM-yyyy -lbl_numdocsitios=No. Documento -lbl_descripcionCorta=Descripci\u00F3n corta -datetimeformat=dd-MM-yyyy HH:mm:ss -numberformat= #,##,##0.000000 -time=HH:mm -decimals=2 - -#Controles Editor Prime -#source -lst_controls=bold italic underline strikethrough subscript superscript | font size style | color highlight removeformat | bullets numbering | outdent indent | alignleft center alignright justify | undo redo | rule image link unlink | cut copy paste pastetext | print - -#URL Images -url_blanck=/resources/images/blanck.jpg -url_green=/resources/images/green.jpg -url_red=/resources/images/red.jpg - -#Botones -btn_cancell=Cancelar -btn_controlcambios=Existe cambios pendientes, desea recargar la p\u00E1gina?. (Si) Perder\u00E1 los cambios realizados. -btn_create=Crear -btn_add=Agregar -btn_aceptar=Aceptar -btn_delete= -btn_edit= -btn_show= -btn_query= -btn_next= -btn_previous= -btn_save=Grabar -btn_update=Actualizar -btn_exit=Salir -btn_last=Anterior -btn_signature=Firmar -btn_confirmTask=Est\u00E1 seguro de completar la tarea? -btn_confirmFlow=Est\u00E1 seguro de Continuar el Tr\u00E1mite? -btn_transaction=Transacci\u00F3n (F2) -btn_reload=Recargar (F4) -btn_queryTran=Consultar (F5) -btn_saveTran=Guardar (F10) -btn_helpTran=Ayuda (F1) - -#Cabecera de tablas -htbl_catalog=CAT\u00C1LOGO -htbl_catalogdetail=DETALLE DE CAT\u00C1LOGO -htbl_password=CAMBIO DE CONTRASE\u00D1A -htbl_transaction=TRANSACCI\u00D3N -htbl_parameters=PAR\u00C1METROS -htbl_secutiryPolicies=POL\u00CDTICAS DE SEGURIDAD -htbl_address=DIRECCIONES -htbl_phones=TEL\u00C9FONOS -htbl_terminal=TERMINALES -htbl_profile=PERFIL -htbl_profiles=PERFILES -htbl_daysnotaccounting=D\u00CDAS NO CONTABLES -htbl_accountingdays=D\u00CDAS CONTABLES -htbl_product=PRODUCTOS -htbl_generals=GENERALES -htbl_subproduct=SUBPRODUCTOS -htbl_subproductcurrency=MONEDAS POR SUBPRODUCTO -htbl_messages=MENSAJES -htbl_module=M\u00D3DULOS -htbl_menus=MEN\u00DAS -htbl_balancetype=TIPOS DE SALDO -htbl_balancetypedetail=DETALLE DE TIPOS DE SALDO -htbl_menulevel=NIVEL DE MEN\u00DA -htbl_template=PLANTILLA -htbl_offices=OFICINAS -htbl_branches=SUCURSALES -htbl_compmantenimiento=COMPONENTES DE MANTENIMIENTO -htbl_componentes=COMPONENTES DE NEGOCIO -htbl_economicactivity=ACTIVIDAD ECON\u00D3MICA -htbl_rule=FLUJOS / REGLAS -htbl_message=MENSAJE -htbl_branch=SUCURSAL -htbl_catalogo=CAT\u00C1LOGO -htbl_menusublevel=SUBNIVEL DE MEN\u00DA -htbl_process=PROCESO -htbl_usuario=USUARIO -htbl_server=SERVIDOR -htbl_table=TABLA - -lvh_table=TABLA - -lvh_economicactivity=ACTIVIDAD ECON\u00D3MICA -lvh_balancetype=TIPO DE SALDO -lvh_rule=FLUJOS / REGLAS -lvh_message=MENSAJE -lvh_branch=SUCURSAL -lvh_catalogo=CAT\u00C1LOGO -lvh_menulevel=NIVEL DE MEN\u00DA -lvh_menusublevel=SUBNIVEL DE MEN\u00DA -lvh_process=PROCESO -lvh_profiles=PERFILES -lvh_transaction=TRANSACCI\u00D3N -lvh_usuario=USUARIO -lvh_help=AYUDA - -#TIENE QUE IR EN MAYUSCULAR POR ESTANDAR -lbl_filters=FILTROS DE B\u00DASQUEDA -#TIENE QUE IR EN MAYUSCULAR POR ESTANDAR -lbl_parametersgenerationdates=PAR\u00C1METROS GENERACI\u00D3N FECHAS CONTABLES - - -#Etiquetas -lbl_pendding_changes=MODIFICACIONES PENDIENTES -lbl_acco_date=Fecha contable -lbl_affectimmobilization=Afecta inmobilizaci\u00F3n -lbl_area=\u00C1rea -lbl_autoquery=Consulta autom\u00E1tica -lbl_branch=Sucursal -lbl_initbranch=Sucursal inicial -lbl_endbranch=Sucursal final -lbl_branchamong=Intersucursales -lbl_cache=Cach\u00E9 -lbl_catalogo=Cat\u00E1logo -lbl_channel=Canal -lbl_day=D\u00EDa -lbl_isaccounting=Contabilizar -lbl_isworking=Fecha de trabajo -lbl_executeprocessclass=Clase que ejecuta el proceso -lbl_compania=Compa\u00F1\u00EDa -lbl_completeitem=Completa \u00EDtem -lbl_confirmpassword=Confirmar Contrase\u00F1a -lbl_code=C\u00F3digo -lbl_query_code=C\u00F3digo de consulta -lbl_description=Descripci\u00F3n -lbl_inittdate=Fecha inicial -lbl_enddate=Fecha final -lbl_finishtime=Hora fin -lbl_flow=Flujo -lbl_inbox=Bandeja de entrada -lbl_inittime=Hora inicio -lbl_isflow=Es flujo -lbl_internal=Interna -lbl_language=Lenguaje -lbl_message=Mensaje -lbl_module=M\u00F3dulo -lbl_month=Mes -lbl_name=Nombre -lbl_office=Oficina -lbl_order=Orden -lbl_page=P\u00E1gina -lbl_password=Contrase\u00F1a -lbl_previousPassword=Contrase\u00F1a anterior -lbl_profiles=Perfiles -lbl_process=Proceso -lbl_processname=Nombre de proceso -lbl_processtype=Tipo de proceso -lbl_clase=Clase -lbl_queryagain=Consultar nuevamente -lbl_querycode=C\u00F3digo de consulta -lbl_rule=Regla -lbl_sequence=Secuencia -lbl_shortdescription=Descripci\u00F3n corta -lbl_signature=Firma -lbl_state=Estado -lbl_status=Estatus -lbl_transaction=Transacci\u00F3n -lbl_usuario=Usuario -lbl_person_code=C\u00F3digo de persona -lbl_validateamount=Validar monto -lbl_version=Versi\u00F3n -lbl_working_date=Fecha de trabajo -lbl_text_value=Valor texto -lbl_number_value=Valor num\u00E9rico -lbl_numberdoc=N\u00FAmero Documento -lbl_razonsocial=Nombre/Raz\u00F3n Social -lbl_generarmapa=Generar Mapa -lbl_limpiar=Limpiar -lbl_validitydays=D\u00EDas de validez de la contrase\u00F1a -lbl_messagedays=N\u00FAmero de d\u00EDas para presentar mensajes de advertencia por vencimiento de contrase\u00F1a -lbl_minlength=Longitud m\u00EDnima -lbl_minnotrepeated=N\u00FAmero hist\u00F3rico de contrase\u00F1as no permitidas -lbl_minnumber=N\u00FAmero m\u00EDnimo de d\u00EDgitos -lbl_minspecialcharacters=N\u00FAmero m\u00EDnimo de caracteres especiales -lbl_minuppercase=N\u00FAmero m\u00EDnimo de letras may\u00FAsculas -lbl_minlowercase=N\u00FAmero m\u00EDnimo de letras min\u00FAsculas -lbl_intentnumber=N\u00FAmero de intentos -lbl_identificationtype=Tipo de identificaci\u00F3n -lbl_identification=Identificaci\u00F3n -lbl_firstname=Nombre -lbl_lastname=Apellido -lbl_middlename=Segundo nombre -lbl_surname=Segundo apellido -lbl_gender=G\u00E9nero -lbl_person_height=Estatura -lbl_activitynoteconomic=Actividad no econ\u00F3mica -lbl_activityeconomic=Actividad econ\u00F3mica -lbl_economicsector=Sector econ\u00F3mico -lbl_typeclient=Tipo de cliente -lbl_profesion=Profesi\u00F3n -lbl_estadoCivil=Estado Civil -lbl_segment=Segmento -lbl_descriptionSegment=Descripci\u00F3n segmento -lbl_number=No. -lbl_addresstype=Tipo de direcci\u00F3n -lbl_principal=Principal -lbl_address=Direcci\u00F3n -lbl_phonetype=Tipo tel\u00E9fono -lbl_numaddress=No. direcci\u00F3n -lbl_numphone=No. telef\u00F3nico -lbl_numextension=No. extensi\u00F3n -lbl_country=Pa\u00EDs -lbl_province=Provincia -lbl_canton=Cant\u00F3n -lbl_parroquia=Parroquia -lbl_city=Ciudad -lbl_principalstreet=Calle principal -lbl_numberhome=N\u00FAmero -lbl_numberdept=No. Casa/Depto. -lbl_reference=Referencia -lbl_secondstreet=Calle secundaria -lbl_urbanization=Urbanizaci\u00F3n -lbl_terminal=Terminal -lbl_macaddress=Mac -lbl_ipaddress=Ip -lbl_printer=Impresora -lbl_date=Fecha -lbl_duration=Duraci\u00F3n -lbl_information=Informaci\u00F3n -lbl_value=Valor -lbl_creation=Creaci\u00F3n -lbl_history=Historia -lbl_generatereport=Generar reporte -lbl_messages=Mensajes -lbl_select_option=Seleccione una opci\u00F3n -lbl_action=Acci\u00F3n -lbl_product=Producto -lbl_subproduct=Subproducto -lbl_subproductcurrency=Subproductos por moneda -lbl_initials=Iniciales -lbl_category=Categor\u00EDa -lbl_balancetype=Tipo de saldo -lbl_balancegroup=Grupo de balance -lbl_charges=Cargos -lbl_chargesintable=Cargos por tabla -lbl_menu=Men\u00FA -lbl_loading=Cargando -lbl_currency=Moneda -lbl_currencycharge=Moneda cargo -lbl_minamount=Monto m\u00EDnimo -lbl_maxamount=Monto m\u00E1ximo -lbl_rate=Tasa -lbl_percentage=Porcentaje -lbl_minvalue=Valor m\u00EDnimo -lbl_maxvalue=Valor m\u00E1ximo -lbl_menulevel=Nivel men\u00FA -lbl_menusublevel=Subnivel men\u00FA -lbl_transactionlevel=Transacci\u00F3n por nivel -lbl_transactionsublevel=Transacci\u00F3n por subnivel -lbl_levels=Niveles -lbl_template=Plantilla -lbl_edit=Crear -lbl_createoredit=Crear / Editar -lbl_task=Tarea -lbl_completetask=Completar Tarea -lbl_options=OPCIONES -lbl_profile=Perfil -lbl_phone=Tel\u00E9fono -lbl_group=Grupo -lbl_classname=Clase -lbl_automatic=Autom\u00E1tico -lbl_service=Servicio -lbl_services=SERVICIOS -lbl_folder=Carpeta -lbl_upload=Subir archivos -lbl_descargarsubir=DESCARGAR/SUBIR DOCUMENTOS -lbl_firstnames=Nombres -lbl_lastnames=Apellidos -lbl_documentos=Documentos -lbl_imprimir=Imprimir -lbl_firmadoDoc=Firmar documento -lbl_motivo=Motivo -lbl_confirmTask=CONFIRMAR TAREA -lbl_confirmInitFlow=CONFIRMAR CONTINUAR TR\u00C1MITE -lbl_transaccion_no_existe=Transacci\u00F3n no definida para el perfil seleccionado. -lbl_auxiliar=Auxiliar -lbl_seleccionar=Seleccionar -lbl_subir=Subir -lbl_cancelar=Cancelar -lbl_correo_electronico=Correo Electr\u00F3nico - -#Etuqueta YES/NO -lbl_yes=SI -lbl_no=NO - -#Auditoria -lbl_table=Tabla -lbl_client=Cliente -lbl_filed=Campo -lbl_currentvalue=Valor actual -lbl_previousvalue=Valor anterior -lbl_realDate= Fecha real -lbl_accounting=Cuenta -lbl_insert=Inserci\u00F3n -lbl_delete=Eliminaci\u00F3n - -#Mensajes de validacion -msg_val_email=E-mail no v\u00E1lido - -#Mensajes -msg_catalogrequird=TRANSACCI\u00D3N REQUERIDA -msg_filterrequird=INGRESE UN CRITERIO DE B\u00DASQUEDA -msg_transactionrequird=TRANSACCI\u00D3N REQUERIDA -msg_modulerequird=M\u00D3DULO REQUERIDO -msg_productrequird=PRODUCTO REQUERIDO -msg_subproductrequird=SUBPRODUCTO REQUERIDO -msg_passwordnomatch=CONTRASE\u00D1A NO COINCIDE -msg_passwordrequired=CONTRASE\u00D1A REQUERIDA -msg_querydata=CONSULTE LOS DATOS -msg_querynodata=CONSULTA NO TIENE REGISTROS -msg_requireAddress=DIRECCI\u00D3N REQUERIDA -msg_requirePhones=TEL\u00C9FONO REQUERIDO -msg_requireActivity=ACTIVIDAD ECON\u00D3MICA REQUERIDA -msg_pendingActivation=USUARIO ACTIVO -msg_userrequired=USUARIO REQUERIDO -msg_userNotFound=USUARIO NO ENCONTRADO -msg_userExist=EL USUARIO YA EXISTE -msg_grouprequird=GRUPO REQUERIDO -msg_notUserBpm=NO ES USUARIO BPM -msg_foundRecord=REGISTRO YA INGRESADO -msg_notSave=FORMULARIO NO PERMITE REALIZAR CAMBIOS -msg_notQuery=FORMULARIO NO PERMITE CONSULTA -msg_menucodeRequired=MEN\u00DA REQUERIDO -msg_menulevel=Nivel men\u00FA -msg_menuNotFound=Men\u00FA no encontrado -msg_menuLevelRequired=NIVEL MEN\u00DA REQUERIDO -msg_menusublevel=Subnivel men\u00FA -msg_levelNotFound=Nivel no encontrado -msg_menuSubLevelRequired=SUBNIVEL MEN\u00DA REQUERIDO -msg_messageRequired=MENSAJE REQUERIDO -msg_fileTypeNotFound=Tipo de archivo no encontrado -msg_branchRequired=SUCURSAL REQUERIDA -msg_processrequired=PROCESO REQUERIDO -msg_profilerequird=PERFIL REQUERIDO -msg_validatetimehour=HORA DE FINALIZACI\u00D3N TIENE QUE SER MAYOR A LA HORA DE INICIO -msg_accodate_already_generated=LA FECHA CONTABLE YA HA SIDO GENERADA, VUELVA A RECARGAR -msg_serviceReq=SERVICIO REQUERIDO -#Mensajes alfresco -msg_error_subir_arch=OCURRI\u00D3 UN ERROR AL SUBIR EL ARCHIVO -msg_error_bajar_arch=OCURRI\u00D3 UN ERROR AL DESCARGAR EL ARCHIVO -msg_doc_no_existe=EL DOCUMENTO A BUSCAR NO EXISTE -msg_carp_no_existe=LA CARPETA {0} NO EXISTE -msg_error_consulta_docs=ERROR AL CONSULTAR LOS DOCUMENTOS -msg_invalid_file_ext=EXTENSI\u00D3N DE ARCHIVO NO PERMITIDA -msg_invalid_file_limit=LIMITE DE ARCHIVOS SUBIDOS SUPERADO -msg_location_req=SE REQUIERE LA UBICACI\u00D3N DEL ARCHIVO -msg_arch_subido_success=ARCHIVO(S) SUBIDO(S) EXITOSAMENTE -#mensajes Viaticos -msg_status_notFound=ESTADO NO ENCONTRADO -msg_funcionarioReq=FUNCIONARIO REQUERIDO -msg_fecViaticosReq=FECHAS DE VI\u00C1TICOS REQUERIDOS -msg_destinoReq=DESTINO REQUERIDO -msg_ejercicioFiscal=NO SE OBTUVO LA FECHA -msg_parametroReq=PAR\u00C1METRO REQUERIDO -msg_superaDias=SUPERA LOS 60 D\u00CDAS -msg_transporteReq=TRANSPORTE REQUERIDO -msg_codSolicitudReq=C\u00D3DIGO DE SOLICITUD REQUERIDO -msg_rubroRequerido=SE REQUERIERE AL MENOS UN RUBRO PARA LA COMISI\u00D3N -msg_fechasComReq=SE REQUIERE FECHA/HORA DE SALIDA Y LLEGADA DE LA COMISI\u00D3N -msg_solicitudReq=DEBE REGISTRAR UNA SOLICITUD -msg_ingresoTransporte=INGRESAR AL MENOS DOS REGISTROS DE TRANSPORTE -msg_codSolicitud=C\u00D3DIGO DE SOLICITUD -msg_solicitudNoRegistrada=NO SE HA REGISTRADO UNA SOLICITUD -msg_noPermiteRegistros=NO PERMITIDO EL INGRESO DE M\u00C1S REGISTROS -msg_fechaSalida=FECHA DE LLEGADA MENOR A LA FECHA DE SALIDA -msg_horaSalidaTra=HORA DE SALIDA MENOR A LA HORA DE INICIO DEL VI\u00C1TICO -msg_horaLlegasaTra=HORA LLEGADA MENOR A LA HORA DE INICIO DEL VI\u00C1TICO -msg_horaInicioTran=HORA DE SALIDA MAYOR A LA HORA DE FIN DEL VI\u00C1TICO -msg_horaFinTran=HORA DE LLEGADA MAYOR A LA HORA DE FIN DEL VI\u00C1TICO -msg_funcionarioIng=FUNCIONARIO YA INGRESADO -msg_codigoInfoReq=C\u00D3DIGO REQUERIDO -msg_fechaTransInvalid=LA HORA DE SALIDA DEL TRANSPORTE DEBE SER MAYOR A LA HORA DE LLEGADA -msg_horaTransInvalid=LA HORA DE SALIDA DE LA SOLICITUD DEBE SER MAYOR A LA HORA DE LLEGADA -msg_solicitudeNotSave=FLUJO DE TRABAJO INICIADO: SOLICITUD NO PERMITE REALIZAR CAMBIOS -msg_solicitudAnulada=SOLICITUD ANULADA -msg_solicitudRequerida=SOLICITUD REQUERIDA -msg_firmaExistente=EL DOCUMENTO YA HA SIDO FIRMADO -msg_firmaNecesaria=ES NECESARIO FIRMAR EL DOCUMENTO -msg_sinFirma=EL DOCUMENTO NO DEBE SER FIRMADO -msg_comprobantesreq=COMPROBANTES REQUERIDOS -msg_solicitudeNotSign=LA SOLICITUD NO FUE CREADA CON FIRMA ELECTR\u00D3NICA -msg_solicitudeSign=LA SOLICITUD FUE CREADA CON FIRMA ELECTR\u00D3NICA -msg_informNotSign=EL INFORME NO FUE CREADO CON FIRMA ELECTR\u00D3NICA -msg_informSign=EL INFORME FUE CREADO CON FIRMA ELECTR\u00D3NICA -msg_certificateNotParam=CERTIFICADO NO PARAMETRIZADO PARA EL USUARIO ACTUAL -msg_initFlow=FLUJO INICIADO -msg_fechaFueraRango=FECHA DE TRANSPORTE FUERA DEL PER\u00CDODO DEL VI\u00C1TICO -msg_idTaskRequired=ID DE LA TAREA REQUERIDO - -#Tab -tab_bycode=POR C\u00D3DIGO -tab_transactionprocess=PROCESO TRANSACCI\u00D3N -tab_generals=GENERALES -tab_address=DIRECCIONES -tab_telephones=TEL\u00C9FONOS -tab_menu=MEN\u00DA -tab_agenda=AGENDA -tab_my_tasks=MIS TAREAS -tab_groups=GRUPOS -tab_product=PRODUCTO -tab_subproduct=SUBPRODUCTO -tab_subproductcurr=SUBPRODUCTOS POR MONEDA -tab_menulavels=NIVELES DE MEN\u00DA -tab_menusublavels=SUBNIVEL MEN\u00DA -tab_transactionlavel=TRANSACCIONES POR NIVEL -tab_transactionsublevel=TRANSACCIONES POR SUBNIVEL -tab_charges=CARGOS GENERALES -tab_subproductcharges=CARGOS POR SUBPRODUCTO -tab_offices=OFICINAS -tab_branches=SUCURSALES -tab_new_delete=NUEVOS/ELIMINADOS -tab_updates=ACTUALIZADOS - -#Expresiones regulares -regExp_email=^[_A-Za-z0-9-\\+]+(\\.[_A-Za-z0-9-]+)*@[A-Za-z0-9-]+(\\.[A-Za-z0-9]+)*(\\.[A-Za-z]{2,3})$ -lbl_digitalSign=Firma digital\: diff --git a/frontend/src/main/resources/.svn/text-base/jasper.properties.netbeans-base b/frontend/src/main/resources/.svn/text-base/jasper.properties.netbeans-base deleted file mode 100644 index 11491cb..0000000 --- a/frontend/src/main/resources/.svn/text-base/jasper.properties.netbeans-base +++ /dev/null @@ -1,10 +0,0 @@ -#http://172.17.26.185:8084/jasperserver/flow.html?_flowId=searchFlow&lastMode=true -#http\://172.17.26.185\:8084/jasperserver/services/repository -#produccion -#jasperserver.repository=http\://172.17.26.182\:8081/jasperserver/services/repository -#jasperserver.reportScheduler=http\://172.17.26.182\:8081/jasperserver/services/ReportScheduler -#desarrollo -jasperserver.repository=http\://172.17.26.185\:8084/jasperserver/services/repository -jasperserver.reportScheduler=http\://172.17.26.185\:8084/jasperserver/services/ReportScheduler -jasperserver.user=jasperadmin -jasperserver.password=jasperadmin \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/jasper.properties.svn-base b/frontend/src/main/resources/.svn/text-base/jasper.properties.svn-base deleted file mode 100644 index 11491cb..0000000 --- a/frontend/src/main/resources/.svn/text-base/jasper.properties.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -#http://172.17.26.185:8084/jasperserver/flow.html?_flowId=searchFlow&lastMode=true -#http\://172.17.26.185\:8084/jasperserver/services/repository -#produccion -#jasperserver.repository=http\://172.17.26.182\:8081/jasperserver/services/repository -#jasperserver.reportScheduler=http\://172.17.26.182\:8081/jasperserver/services/ReportScheduler -#desarrollo -jasperserver.repository=http\://172.17.26.185\:8084/jasperserver/services/repository -jasperserver.reportScheduler=http\://172.17.26.185\:8084/jasperserver/services/ReportScheduler -jasperserver.user=jasperadmin -jasperserver.password=jasperadmin \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/pentaho.properties.svn-base b/frontend/src/main/resources/.svn/text-base/pentaho.properties.svn-base deleted file mode 100644 index 4e06123..0000000 --- a/frontend/src/main/resources/.svn/text-base/pentaho.properties.svn-base +++ /dev/null @@ -1,10 +0,0 @@ -#Credenciales BI-SERVER PENTAHO -url_pentaho=http\://10.1.30.104\:8080/pentaho/ViewAction?solution\=samples&path\=VIA&action\= -usr_pentaho= -pass_pentaho= -pentaho_authenticate=N - -#url_pentaho=http\://10.103.0.64\:8090/pentaho/ViewAction?solution\=TEST&path\=VIA&action\= -#usr_pentaho=admin -#pass_pentaho=BptAdmin2013 -#pentaho_authenticate=Y diff --git a/frontend/src/main/resources/.svn/text-base/security_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/security_es.properties.svn-base deleted file mode 100644 index 0c75086..0000000 --- a/frontend/src/main/resources/.svn/text-base/security_es.properties.svn-base +++ /dev/null @@ -1,31 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -company=Compa\u00F1\u00EDa - -opcion=Opci\u00F3n -password=Password -profile=PERFIL - -select_company=Seleccione compa\u00F1\u00EDa -user=Usuario -lbl_change_password=Cambio Personal Password - - -lbl_heleido_terminos=He le\u00eddo y acepto los t\u00e9rminos y condiciones de uso -lbl_descarga_terminos=Descargue sus trminos y condiciones -lbl_aceptar_terminos=Aceptar trminos y condiciones \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/validation_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/validation_es.properties.svn-base deleted file mode 100644 index 6118bbf..0000000 --- a/frontend/src/main/resources/.svn/text-base/validation_es.properties.svn-base +++ /dev/null @@ -1,64 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00f1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -################################################### - -# Archivo de propiedades de mensajepara las validaciones de jsf - -javax.faces.component.UIInput.REQUIRED = Valor obligatorio. -javax.faces.component.UIInput.REQUIRED_detail = Valor obligatorio. - -javax.faces.converter.BigDecimalConverter.DECIMAL=''{0}'' Debe ser un nmero decimal. -javax.faces.converter.BigDecimalConverter.DECIMAL_detail= El campo solo acepta n\u00FAmeros decimales. Ejemplo\: {1} -javax.faces.converter.BigIntegerConverter.BIGINTEGER=''{0}'' Entero de uno o mu00e1s d\u00EDgitos. -javax.faces.converter.BigIntegerConverter.BIGINTEGER_detail=''{0}'' Entero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.BooleanConverter.BOOLEAN=''{0}'' Solo acepta 'Verdadero' o 'Falso'. -javax.faces.converter.BooleanConverter.BOOLEAN_detail=''{0}'' Solo acepta 'Verdadero' o 'Falso'. -javax.faces.converter.ByteConverter.BYTE=''{0}'' Debe se un n\u00FAmero entre 0 y 255. -javax.faces.converter.ByteConverter.BYTE_detail=''{0}'' Debe ser un n\u00FAmero entre 0 y 255. -javax.faces.converter.CharacterConverter.CHARACTER=''{0}'' Debe ser un car\u00E1cter v\u00E1lido. -javax.faces.converter.CharacterConverter.CHARACTER_detail=''{0}'' Debe ser un car\u00E1cter ASCII v\u00E1lido. -javax.faces.converter.DateTimeConverter.DATE=''{0}'' Formato de fecha incorrecto. Ejemplo: {1} -javax.faces.converter.DateTimeConverter.DATE_detail=''{0}'' Formato de fecha incorrecto. Ejemplo: {1} -javax.faces.converter.DateTimeConverter.TIME=''{0}'' Formato de hora incorrecto. -javax.faces.converter.DateTimeConverter.TIME_detail=''{0}'' Formato de hora incorrecto. Ejemplo: {1} -javax.faces.converter.DateTimeConverter.DATETIME=''{0}'' Formato de fecha u hora incorrecto. -javax.faces.converter.DateTimeConverter.DATETIME_detail=''{0}'' Formato de fecha u hora incorrecto. Ejemplo: {1} -javax.faces.converter.DateTimeConverter.PATTERN_TYPE=Un 'modelo' o 'tipo' de atributo debe ser especificado para convertir el valor ''{0}''. -javax.faces.converter.DoubleConverter.DOUBLE=''{0}'' Debe ser un n\u00FAmero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.DoubleConverter.DOUBLE_detail=''{0}'' Debe ser un n\u00FAmero entre 4.9E-324 and 1.7976931348623157E308 Ejemplo\: {1} -javax.faces.converter.EnumConverter.ENUM=''{0}'' Debe ser convertible a una enumeracin. -javax.faces.converter.EnumConverter.ENUM_detail=''{0}'' Convertible a una enumeracin de la enumeracin que contiene la constante ''{1}''. -javax.faces.converter.EnumConverter.ENUM_NO_CLASS=''{0}'' Debe ser convertible a una enumeracin, pero no se provee la clase. -javax.faces.converter.EnumConverter.ENUM_NO_CLASS_detail=''{0}'' Debe ser convertible a una enumeracin, pero no se provee la clase. -javax.faces.converter.FloatConverter.FLOAT=''{0}'' Debe ser un n\u00FAmero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.FloatConverter.FLOAT_detail=''{0}'' Debe ser un n\u00FAmero entre 1.4E-45 y 3.4028235E38 Ejemplo\: {1} -javax.faces.converter.IntegerConverter.INTEGER=''{0}'' Debe ser un n\u00FAmero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.IntegerConverter.INTEGER_detail=''{0}'' Debe ser un n\u00FAmero entre -2147483648 y 2147483647 Ejemplo\: {1} -javax.faces.converter.LongConverter.LONG=''{0}'' Debe ser un n\u00FAmero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.LongConverter.LONG_detail=''{0}'' Debe ser un n\u00FAmero entre -9223372036854775808 y 9223372036854775807 Ejemplo\: {1} -javax.faces.converter.NumberConverter.CURRENCY=''{0}'' Formato de moneda incorrecto. -javax.faces.converter.NumberConverter.CURRENCY_detail=''{0}'' Formato de moneda incorrecto. Ejemplo: {1} -javax.faces.converter.NumberConverter.PERCENT=''{0}'' Formato de porcentaje incorrecto. -javax.faces.converter.NumberConverter.PERCENT_detail=''{0}'' Formato de porcentaje incorrecto. Ejemplo: {1} -javax.faces.converter.NumberConverter.NUMBER=''{0}'' No es un n\u00FAmero. -javax.faces.converter.NumberConverter.NUMBER_detail=''{0}'' No es un n\u00FAmero. Ejemplo\: {1} -javax.faces.converter.NumberConverter.PATTERN=''{0}'' No es un n\u00FAmero modelo. -javax.faces.converter.NumberConverter.PATTERN_detail=''{0}'' No es un n\u00FAmero modelo. Ejemplo\: {1} -javax.faces.converter.ShortConverter.SHORT=''{0}'' Debe ser un n\u00FAmero de uno o m\u00E1s d\u00EDgitos. -javax.faces.converter.ShortConverter.SHORT_detail=''{0}'' Debe ser un n\u00FAmero entre -32768 y 32767. Ejemplo\: {1} -javax.faces.converter.STRING=No se puede convertir ''{0}'' a un string. - -org.primefaces.component.datatable.emptyMesssage=No existen registros \ No newline at end of file diff --git a/frontend/src/main/resources/.svn/text-base/viaticos_es.properties.svn-base b/frontend/src/main/resources/.svn/text-base/viaticos_es.properties.svn-base deleted file mode 100644 index c7e54ac..0000000 --- a/frontend/src/main/resources/.svn/text-base/viaticos_es.properties.svn-base +++ /dev/null @@ -1,146 +0,0 @@ -################################################### -##### S\u00edmbolos unicode -#####\u00e1 -> -#####\u00e9 -> -#####\u00ed -> -#####\u00f3 -> -#####\u00fa -> -#####\u00c1 -> -#####\u00c9 -> -#####\u00cd -> -#####\u00d3 -> -#####\u00da -> -#####\u00F1 -> -#####\u00d1 -> -#####\u0020 -> Espacio en blanco -####### -#primefaces - - -#ETIQUETAS -lbl_funcionario=Funcionario -lbl_nomResDirFin=Responsable Direcci\u00F3n Nacional Financiera -lbl_tipoReporte=Tipo de reporte -lbl_exportar=Exportaci\u00F3n -lbl_gastos=Gastos -lbl_actividadesInforme=Informe de actividades y productos alcanzados -tab_liquidacionVia=LIQUIDACI\u00D3N DE VI\u00C1TICOS Y SUBSISTENCIAS -tab_informeservicios=INFORME DE SERVICIOS INSTITUCIONALES -lbl_codigo=C\u00F3digo -lbl_Editar=Editar -lbl_Ver=Ver -lbl_Eliminar=Eliminar -lbl_solicitud=Solicitud -lbl_valnum=Valor num\u00E9rico -lbl_valalpha=Valor alfanum\u00E9rico -lbl_descripcion=Descripci\u00F3n -lbl_estadosol=Estado de solicitud -lbl_diascomciu=D\u00EDas acumulados ciudad inclu\u00EDda comisi\u00F3n -lbl_diascomision=D\u00EDas comisi\u00F3n acumulados -lbl_jefe=Jefe inmediato -lbl_responsableund=Responsable unidad -lbl_numerocred=N\u00FAmero credencial -lbl_fecha=Fecha -lbl_viaticos=Vi\u00E1ticos -lbl_codSolicitud=C\u00F3digo de Solicitud -lbl_fechaDesde=Fecha Desde -lbl_fechaHasta=Fecha Hasta -lbl_fechaComision=Fecha de comisi\u00F3n de servicios -lbl_estadosSolicitud=Estados de la solicitud de vi\u00E1ticos -lbl_desde=Desde -lbl_hasta=Hasta -lbl_nomRespUni=Nombre - Responsable de la Unidad solicitante -lbl_nomAutoridadNomi=Nombre - Jefe Inmediato -lbl_cargoAutoridad=Cargo - Jefe Inmediato -htbl_estados=Consulta de estados de solicitud de vi\u00E1ticos -lbl_movilizacion=Movilizaciones -lbl_subsistencia=Subsistencias -lbl_alimentacion=Alimentaci\u00F3n -lbl_nombre=Nombre -lbl_cedula=C\u00E9dula -lbl_cargo=Cargo -lbl_unidad=Unidad -lbl_ciudadcom=Ciudad/Provincia comisi\u00F3n -lbl_fechasalida=Fecha salida -lbl_fechallegada=Fecha llegada -lbl_horasalida=Hora salida -lbl_horallegada=Hora llegada -lbl_rubro=Rubro -lbl_descactividades=Descripci\u00F3n de actividades -lbl_infoActividades=Informe de actividades y productos alcanzados -lbl_integrantes=Integrantes de servicios institucionales -lbl_detalleComprobantes=Detalle de comprobante de pago -lbl_comprobante=Comprobante de pago -lbl_empresaServicio=Empresa o Servicio -lbl_ruc=Ruc -lbl_tipo=Tipo -lbl_importe=Importe -lbl_diascom=D\u00EDas comisi\u00F3n -lbl_nombrefun=Nombre del funcionario -lbl_transporte=Nombre de transporte -lbl_ruta=Ruta -lbl_salida=Salida -lbl_llegada=Llegada -lbl_hora=Hora -lbl_tiptransporte=Tipo de transporte -lbl_numcuenta=N\u00FAmero de cuenta -lbl_tipcuenta=Tipo de cuenta -lbl_nombanco=Nombre del banco -lbl_nomarchivo=Nombre del archivo -lbl_alimetacion=Alimentaci\u00F3n -lbl_cargojefe=Cargo jefe -lbl_cargoresp=Cargo responsable -lbl_calculadias=Calcular d\u00EDas acumulados -lbl_inicarFlujo=Iniciar flujo -lbl_responsable=Responsable -lbl_actividad=Actividad -lbl_estado=Estado -lbl_comentarios=Comentarios -lbl_salir=Salir -lbl_diasacumulados=D\u00EDas acumulados -lbl_periodo=Per\u00EDodo -lbl_destino=Destino -lbl_usuario=Usuario -lbl_ciudad=Ciudad -lbl_nomusuario=Nombre de usuario -lbl_nomciudad=Nombre de ciudad -lbl_ingresaSol=Solicitud ingresada por el Servidor -lbl_subtotalTransporte=Subtotal de transporte -lbl_subtotalAlojamientoAlm=Subtotal alimentaci\u00F3n y alojamiento -lbl_totalGastos=Total de gastos -lbl_ver=Ver -lbl_lugarFecha=Lugar y fecha -lbl_cancelar=Cancelar -lbl_detalle=Detalle -lbl_detalleIntegrantes= Integrante de servicios institucionales - -#TITULOS - -#ETIQUETAS CABECERA TABLAS -htbl_parametros=Par\u00E1metros -htbl_destinos=Destinos -htbl_diasacumulados=D\u00EDas acumulados -htbl_usauriosciudad=Usuarios por ciudad -htbl_usauriosciudadtrans=Usuarios por ciudad tipo de transporte - -#ETIQUETAS TABS -tab_soldetalle=DETALLE DE LA SOLICITUD -tab_solautiriza=SOLICITUD DE AUTORIZACI\u00D3N PARA EL CUMPLIMIENTO DE SERVICIOS INSTITUCIONALES -tab_gendatos=DATOS GENERALES -tab_integrantes=INTEGRANTES DE SERVICIOS INSTITUCIONALES -tab_actividades=ACTIVIDADES -tab_transporte=TRANSPORTE -tab_trandatos=DATOS PARA TRANSFERENCIA -tab_archivo=ARCHIVOS - -#BOTONES -btn_descargarDocumentos=Descargar documentos -btn_anulaSolicitud=Anular solicitud -btn_firmar=Firmar - -#MENSAJES -msg_importeTotal=IMPORTE TOTAL DE VI\u00C1TICOS Y GASTOS DE VIAJES COMPROBADOS - -msg_tamanioMaximoExcedido = El valor {0}, no debe exceder los {1} caracteres. -msg_tamanioRucMinimo = El tama\u00F1o del valor ingresado es inferior al permitido (13). -msg_importeIncorrecto = El importe ingresado no est\u00E1 entre los valores esperados\: 0,01 y 9.999,99 \ No newline at end of file diff --git a/frontend/src/main/webapp/.svn/entries b/frontend/src/main/webapp/.svn/entries deleted file mode 100644 index ead9708..0000000 --- a/frontend/src/main/webapp/.svn/entries +++ /dev/null @@ -1,179 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -pages -dir - -app -dir - -change-password.xhtml -file - - - - -2022-07-28T03:40:15.554685Z -0d33ef7b1e7988146756c9b72a705250 -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5704 - -index.xhtml -file - - - - -2022-07-28T03:40:15.554685Z -0cdcaa3be1f997a9011827e7c134adc3 -2014-11-10T10:41:16.144812Z -2547 -dcruz - - - - - - - - - - - - - - - - - - - - - -100 - -login.xhtml -file - - - - -2022-07-28T03:40:15.554685Z -85a1596e7ff49228db62abb34e347dee -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -5620 - -WEB-INF -dir - -errorPages -dir - -resources -dir - -passwordExpired.xhtml -file - - - - -2022-07-28T03:40:15.555685Z -e4f90b04e631b59c023d96d866278a57 -2021-11-16T16:51:39.601018Z -4651 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -1185 - diff --git a/frontend/src/main/webapp/.svn/text-base/change-password.xhtml.svn-base b/frontend/src/main/webapp/.svn/text-base/change-password.xhtml.svn-base deleted file mode 100644 index 1aa22b0..0000000 --- a/frontend/src/main/webapp/.svn/text-base/change-password.xhtml.svn-base +++ /dev/null @@ -1,155 +0,0 @@ - - - - - - SINCOAR - - - - - - - - - - - -
      -
      -
      -
      -
      -
      - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -
      -

      -
      - -    - - - - - - Ingresar al Sistema - - -
      - -
      -
      - - - - - - - - - - -

      SU CLAVE HA SIDO CAMBIADA EXITOSAMENTE.

      -
      -
      -
      -
      - - -
      - -
      -
      - - - - - - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/.svn/text-base/index.xhtml.svn-base b/frontend/src/main/webapp/.svn/text-base/index.xhtml.svn-base deleted file mode 100644 index 6098bce..0000000 --- a/frontend/src/main/webapp/.svn/text-base/index.xhtml.svn-base +++ /dev/null @@ -1,5 +0,0 @@ - - - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/.svn/text-base/login.xhtml.netbeans-base b/frontend/src/main/webapp/.svn/text-base/login.xhtml.netbeans-base deleted file mode 100644 index 7215d87..0000000 --- a/frontend/src/main/webapp/.svn/text-base/login.xhtml.netbeans-base +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Control de Armas - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ¿Olvidaste tu contraseña? - - - - - - - - -

      - - -
      - -
      -
      -
      -
      -
      - -
      -
      - \ No newline at end of file diff --git a/frontend/src/main/webapp/.svn/text-base/login.xhtml.svn-base b/frontend/src/main/webapp/.svn/text-base/login.xhtml.svn-base deleted file mode 100644 index 7215d87..0000000 --- a/frontend/src/main/webapp/.svn/text-base/login.xhtml.svn-base +++ /dev/null @@ -1,94 +0,0 @@ - - - - - - Control de Armas - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - ¿Olvidaste tu contraseña? - - - - - - - - -

      - - -
      - -
      -
      -
      -
      -
      - -
      -
      - \ No newline at end of file diff --git a/frontend/src/main/webapp/.svn/text-base/passwordExpired.xhtml.svn-base b/frontend/src/main/webapp/.svn/text-base/passwordExpired.xhtml.svn-base deleted file mode 100644 index 03a6c46..0000000 --- a/frontend/src/main/webapp/.svn/text-base/passwordExpired.xhtml.svn-base +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - -

      SU CLAVE HA SIDO CAMBIADA EXITOSAMENTE.

      - - - - - Ingresar al portal - - - - - - - -
      - \ No newline at end of file diff --git a/frontend/src/main/webapp/WEB-INF/.svn/entries b/frontend/src/main/webapp/WEB-INF/.svn/entries deleted file mode 100644 index ee9c996..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/entries +++ /dev/null @@ -1,238 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/WEB-INF -svn://172.17.26.185/COMACO - - - -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -.faces-config.xml.jsfdia -file - - - - -2022-07-28T03:40:14.544681Z -59343c028bb1ed04091d2809c7b744bf -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -1150 - -faces-config.xml -file - - - - -2022-07-28T03:40:14.544681Z -2ecaa24b84cda5b737ac4830a246b07b -2020-11-16T08:48:06.664034Z -4632 -usermaia1 - - - - - - - - - - - - - - - - - - - - - -2423 - -lib -dir - -beans.xml -file - - - - -2022-07-28T03:40:14.545681Z -7adc5582ddc405237aea0492953c2862 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -330 - -jboss-web.xml -file - - - - -2022-07-28T03:40:14.545681Z -a62b1ccb1cf39900f05998b4863146ba -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -65 - -jboss-deployment-structure.xml -file - - - - -2022-07-28T03:40:14.545681Z -fdb1b1d55cddff03d330c38d1f03a8d0 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -411 - -web.xml -file - - - - -2022-07-28T03:40:14.545681Z -52a019555eb9b46f1b27d0eeef1eac2e -2016-06-20T19:06:02.283608Z -4545 -cvasquez - - - - - - - - - - - - - - - - - - - - - -3214 - -templates -dir - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/.faces-config.xml.jsfdia.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/.faces-config.xml.jsfdia.svn-base deleted file mode 100644 index 2447881..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/.faces-config.xml.jsfdia.svn-base +++ /dev/null @@ -1,20 +0,0 @@ - - - - - - - - - - - - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/beans.xml.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/beans.xml.svn-base deleted file mode 100644 index e79b3c2..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/beans.xml.svn-base +++ /dev/null @@ -1,10 +0,0 @@ - - - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/faces-config.xml.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/faces-config.xml.svn-base deleted file mode 100644 index 2a42831..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/faces-config.xml.svn-base +++ /dev/null @@ -1,65 +0,0 @@ - - - - - - - - com.fp.frontend.utility.LifeCicleListener - - - - - com.fp.frontend.utility.TextAreaValidationRequired - javax.faces.event.PostValidateEvent - - - org.primefaces.application.DialogActionListener - org.primefaces.application.DialogNavigationHandler - org.primefaces.application.DialogViewHandler - - validation_es - msg_validation - - - security_es - msg_security - - - general_es - msg_general - - - customer_es - msg_customer - - - bpm_es - msg_bpm - - - controlarmas_es - msg_armas - - - firmas_es - msg_firmas - - validation_es - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.netbeans-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.netbeans-base deleted file mode 100644 index 49211f8..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.netbeans-base +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base deleted file mode 100644 index 49211f8..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-deployment-structure.xml.svn-base +++ /dev/null @@ -1,16 +0,0 @@ - - - - - - - - - - - - - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.netbeans-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.netbeans-base deleted file mode 100644 index bc3149c..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.netbeans-base +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.svn-base deleted file mode 100644 index bc3149c..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/jboss-web.xml.svn-base +++ /dev/null @@ -1,4 +0,0 @@ - - - - diff --git a/frontend/src/main/webapp/WEB-INF/.svn/text-base/web.xml.svn-base b/frontend/src/main/webapp/WEB-INF/.svn/text-base/web.xml.svn-base deleted file mode 100644 index 5927ad5..0000000 --- a/frontend/src/main/webapp/WEB-INF/.svn/text-base/web.xml.svn-base +++ /dev/null @@ -1,112 +0,0 @@ - - - - Web PrimeFaces - - web-primefaces - - - Manejo del timeout de session - TimeoutManagerFilter - com.fp.frontend.filter.TimeoutManagerFilter - - - - Servlet que se encarga de enviar la informacion comprimida - Compresion - com.fp.frontend.filter.GZIPFilter - - - - PrimeFaces FileUpload Filter - org.primefaces.webapp.filter.FileUploadFilter - - - - PrimeFaces FileUpload Filter - Faces Servlet - - - - TimeoutManagerFilter - /* - - - - Compresion - *.jsp - - - - Compresion - *.jsf - - - - Compresion - *.html - - - - Compresion - *.xhtml - - - - Compresion - *.js - - - - Compresion - *.css - - - - - - javax.faces.PROJECT_STAGE - Production - - - primefaces.THEME - maia-theme - - - javax.faces.FACELETS_SKIP_COMMENTS - true - - - - Faces Servlet - javax.faces.webapp.FacesServlet - 1 - - - - Faces Servlet - *.xhtml - - - - Faces Servlet - *.faces - - - - - index.xhtml - - - - javax.faces.application.ViewExpiredException - /login.xhtml - - - - 60 - - \ No newline at end of file diff --git a/frontend/src/main/webapp/WEB-INF/lib/.svn/entries b/frontend/src/main/webapp/WEB-INF/lib/.svn/entries deleted file mode 100644 index edf4af9..0000000 --- a/frontend/src/main/webapp/WEB-INF/lib/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/WEB-INF/lib -svn://172.17.26.185/COMACO - - - -2015-12-03T18:39:09.005172Z -4329 -mcepeda - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -gmaps4jsf-core-3.0.0.jar -file - - - - -2022-07-28T03:40:14.455681Z -eb02e7c7a9efeac9236c4b6cd411f8a5 -2015-12-03T18:39:09.005172Z -4329 -mcepeda -has-props - - - - - - - - - - - - - - - - - - - - -142054 - diff --git a/frontend/src/main/webapp/WEB-INF/lib/.svn/prop-base/gmaps4jsf-core-3.0.0.jar.svn-base b/frontend/src/main/webapp/WEB-INF/lib/.svn/prop-base/gmaps4jsf-core-3.0.0.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/WEB-INF/lib/.svn/prop-base/gmaps4jsf-core-3.0.0.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/WEB-INF/lib/.svn/text-base/gmaps4jsf-core-3.0.0.jar.svn-base b/frontend/src/main/webapp/WEB-INF/lib/.svn/text-base/gmaps4jsf-core-3.0.0.jar.svn-base deleted file mode 100644 index 883c9a3eadfc14ae5efd86f81706e9ed20fd339b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 142054 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Ο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 C>^ji^ diff --git a/frontend/src/main/webapp/WEB-INF/templates/.svn/entries b/frontend/src/main/webapp/WEB-INF/templates/.svn/entries deleted file mode 100644 index 8a79617..0000000 --- a/frontend/src/main/webapp/WEB-INF/templates/.svn/entries +++ /dev/null @@ -1,96 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/WEB-INF/templates -svn://172.17.26.185/COMACO - - - -2015-12-03T18:38:33.144895Z -4328 -mcepeda - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -queryEvent.xhtml -file - - - - -2022-07-28T03:40:14.523681Z -bf0a3035aceed9244fc2209f19116488 -2014-09-11T11:14:33.272242Z -685 -jvaca - - - - - - - - - - - - - - - - - - - - - -1904 - -template.xhtml -file - - - - -2022-07-28T03:40:14.523681Z -c0c14b4ea7e5fabe00e5dc3ecdc3a16d -2015-12-03T18:38:33.144895Z -4328 -mcepeda - - - - - - - - - - - - - - - - - - - - - -1854 - diff --git a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/queryEvent.xhtml.svn-base b/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/queryEvent.xhtml.svn-base deleted file mode 100644 index 98b7eee..0000000 --- a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/queryEvent.xhtml.svn-base +++ /dev/null @@ -1,27 +0,0 @@ - - - - - - - - - - - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.netbeans-base b/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.netbeans-base deleted file mode 100644 index bce367e..0000000 --- a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.netbeans-base +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.svn-base b/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.svn-base deleted file mode 100644 index bce367e..0000000 --- a/frontend/src/main/webapp/WEB-INF/templates/.svn/text-base/template.xhtml.svn-base +++ /dev/null @@ -1,48 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - diff --git a/frontend/src/main/webapp/app/.svn/entries b/frontend/src/main/webapp/app/.svn/entries deleted file mode 100644 index 52e901c..0000000 --- a/frontend/src/main/webapp/app/.svn/entries +++ /dev/null @@ -1,232 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/app -svn://172.17.26.185/COMACO - - - -2015-04-23T06:16:12.706922Z -4051 -cpiedra - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -bcprov-ext-jdk15on-1.49.jar -file - - - - -2022-07-28T03:40:14.265680Z -5d295451a3272515afbdef2927e31787 -2014-10-15T07:08:20.264330Z -1608 -cguzman -has-props - - - - - - - - - - - - - - - - - - - - -2552449 - -bcprov-jdk15on-1.49.jar -file - - - - -2022-07-28T03:40:14.268680Z -20f367d41a546f2c844314da5d97ea12 -2014-10-15T07:08:20.264330Z -1608 -cguzman -has-props - - - - - - - - - - - - - - - - - - - - -2476362 - -itextpdf-5.5.3.jar -file - - - - -2022-07-28T03:40:14.271680Z -1f8b7633f9f21668d178566e9e85fe7c -2014-10-15T07:08:20.264330Z -1608 -cguzman -has-props - - - - - - - - - - - - - - - - - - - - -2237618 - -appletFirma-2.1.jar -file - - - - -2022-07-28T03:40:14.272680Z -689146e46aa33f58eab5ebd0ec954760 -2015-04-23T06:16:12.706922Z -4051 -cpiedra -has-props - - - - - - - - - - - - - - - - - - - - -45946 - -bcmail-jdk15on-1.51.jar -file - - - - -2022-07-28T03:40:14.272680Z -0d1ea26cfdf65bf19e2d050d1d673b43 -2014-10-15T07:08:20.264330Z -1608 -cguzman -has-props - - - - - - - - - - - - - - - - - - - - -95486 - -bcpkix-jdk15on-1.49.jar -file - - - - -2022-07-28T03:40:14.273680Z -cb025ef84fb991e14fdf62f6bef7be53 -2014-10-15T07:08:20.264330Z -1608 -cguzman -has-props - - - - - - - - - - - - - - - - - - - - -629662 - diff --git a/frontend/src/main/webapp/app/.svn/prop-base/appletFirma-2.1.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/appletFirma-2.1.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/appletFirma-2.1.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/prop-base/bcmail-jdk15on-1.51.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/bcmail-jdk15on-1.51.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/bcmail-jdk15on-1.51.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/prop-base/bcpkix-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/bcpkix-jdk15on-1.49.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/bcpkix-jdk15on-1.49.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/prop-base/bcprov-ext-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/bcprov-ext-jdk15on-1.49.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/bcprov-ext-jdk15on-1.49.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/prop-base/bcprov-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/bcprov-jdk15on-1.49.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/bcprov-jdk15on-1.49.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/prop-base/itextpdf-5.5.3.jar.svn-base b/frontend/src/main/webapp/app/.svn/prop-base/itextpdf-5.5.3.jar.svn-base deleted file mode 100644 index 5e9587e..0000000 --- a/frontend/src/main/webapp/app/.svn/prop-base/itextpdf-5.5.3.jar.svn-base +++ /dev/null @@ -1,5 +0,0 @@ -K 13 -svn:mime-type -V 24 -application/octet-stream -END diff --git a/frontend/src/main/webapp/app/.svn/text-base/appletFirma-2.1.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/appletFirma-2.1.jar.svn-base deleted file mode 100644 index c6ba4e662049bbfb6523b47265b2e2664193cc85..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 45946 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 J$-nyR{{R{3M;`zH diff --git a/frontend/src/main/webapp/app/.svn/text-base/bcmail-jdk15on-1.51.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/bcmail-jdk15on-1.51.jar.svn-base deleted file mode 100644 index c17cd32e55310bd41cd625df939d780e0535592b..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 95486 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

      KyQ$n!K=q43o|?EifQ_PM>E8ti$RKflF<0!W%$ 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

      P7Xj(U+Ix(iiz`RRe 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

      6q$FiEN0BjWVy}{WK&| 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%0AT?E4J}lEfEy0m%3pY!fRFsHU8sp(n zo{L!;-_mVW1-dEgUVHv9lrIBh=|S9qdinHWY|pKiu`RLX03egPZ?&$GHCM0b9Hvpv zUGji>O}?Q3n)rtEnA9qD>P)<3G7W)sU@JcWt`&>?0d>13oFKNRg{tf`)ku|edWYTOlkgTABE~4!lzmT+<@Ub@Z?_4R^R+(w z#_#Y36{67ay>&#D!m6m5?cDQxfbVdCc`Pndv?i;Oq(z9!$v;2=lDfU_#cKC`EGL_k zTcWfNsb6>`EY3^XEs`aNx$}>n;93PY((gmI6@S@PQ2JlM@_)y!%H!Xyf5W*GmR9UY zoibiyT3=a-V~TnKUxop@zhquih9Q-VY~QWSW!FvY9Dzu7^Tbr2uo{?Lg|SSY=H-@1&+eq9Dl3ly@jagd*ym0;yW0c1?647Qj4dBi%MgvDyN6w;`f{>16fWPp9&Qiuk|C7BSL^?}iTV=d zS^#(P#>7QFje=EZD>`6SHU#AZZKooNB%zmqxlj@gp6B1h5X387&Y_MyWQ%>HVT=J!zYkH2c0gW zh*j~^t#gaqg?KHW@s7UDiRBjfGF**tE&29gg#ESyO9;HB!oqVgUzo(n9#>1XL)c7s zywPsQV(~#`F-tGxmL~SKDc%(BXo)bVpc2F)SFnReis8{F$O}+#`+u19ARHdl?XJ6l%b{(^@*u zd$8W_?o|Kl=3=lDq_2A1mXxUmXtFa`1$Tk{8+&taUk@{aIqP;%@O49j8E_91e|<0IHuNi=eP5|hU-tadR~@M*>Tcl9j?__znvg` z{UVk2i?q-z3`-%=cS&Dwzr0M_=?<16hZj*KovhjX^gQJkQQ#2-R^SdCJ@#HQb@{4L zu87o6y2bqpDG4Ki2M6}RQE!j#13wW!a7D#qp?@T0=P3e~x3M-BuH zZxnThQ>#WX15EKC_Ow*g%0I^VM1h9hymQDG+APZ_1BoM%!bzJhJ&D-<`TMUiVHGc`T=70E@biMr%`vK$~2e86hOcntI6 zj@q|!X)?d~Wb7kdg0ZwzsQAqne~$WYgRV0K)b!(*<89oc$XABFi(M{bmuV376vp04 zN5-$m!VXU%lue=3FxFcZ;O#wiTbX`H$qdMPz&pDHB|jh;!BGbKme_lWdRA4DM76px zA62?#^n_eU2FTFswk2@RH;WlIpl_s;515`W+rz!2M*&^o;Va@WH$us-dOFax1Y;H{ zNYGf{lhKXklS#3JT__Cz_HbMN8QB)0S{;MIu=m5f;wg=$nb3;%+ICmgl}(P0O6#eY z=%0^s-;sJ)K2m|+3FWYPN$p*&=yWD@iv%1d6%>L{A?7wvyZO%_GD0ZIJNe@yUfs(E z^RFEkHc55j0O+%yq0n>gu?Yherk9Yt$V6_VJ`8>TFjR#&?MKK9Af+Z)14BZh{OKIL z7fYSn@20kg#N9W76%-OHT=^C8$9F%3Jc|9F>YZubA~qukdeR9s_}QnLMQ2fO0gctu zpk8h$1)-iz=zOBy=BH2>FiTt+QqL*(K$oDRaRqK^ zD}?Mn^Aq5f>X8;GBwHf<6^jx5|Nr3rzuip6zx8#(|0cz0SfO|0bqBmm!3I;%Q3Z$j zy|BENQ<@R|A1N;C4=FC?;ou20T5lk_VVkZAqhRZxhIE0Q3^+3(Y5 z!2T|*R02$$kDNgH45FiE1Q~=d95plrG71V2f8%WSm)cXdR!x2Uu7_#-84(oxt{|rM zYlddR!YFS@Yr zR=`pH{P1kmXfMDH729PsM#=zMFy;ZuNJCLuG#1O00zIayK8U8`aINB)7oXJQX@o}+ zHy@*7Zw8!MU|lQGopLYVp9SwUo$rej9yIuwcma!F+Q>%KZp2D7*-}q`jcGWmY)JQ%Fg6f$ z1F3ihTC7HRp#NGn%6EKfp{{U4Msmm2IhKPt$!o3-XVn2khbT_-Nb(vZ0nZ4Z8i)au z>$ZV{-68flgF{(>*ib{dUo{p`tTQyLT+E@AMyoBZHjll&KBf&t;V;O+sMLwU?x3G` z&HW;Ayu=#mmg8YKOWS%dIL^hkZM0T{LwT zYFTK0x`Zyxj#~v|^_KOVT0MH)6!yY}a=1ACp&%FeFFd6<6=1;*5fPoo{4+Zq zH6SDxHrMWUJH#*Ej}hDqJcZ+VE{KmunPFneu*DVo)aB{<%B+IEg5I+~d&l@U_OBb2 zSFHdA`r5acb3O?3w9(>4fy1+KqU(_Um4{Z**j6MfnG>J3)VX@U=;jSZFdGPth*UWq2wYTiYafTtW=u25wqQ@Mjv_>nf@Wf%GD@KWZ7Q zthL0J=jAGIGbK-;@6JW#Zo}or*&5gG2G9rTo}tKk6ReI+a9N0#KZI+ryxx$e+lVj^ z0_`BZ^}B|MbWPhwzQ$i&7!VtG5xCZ8wt8**3#qH)EBZ3l+&!9h4XfXn!%7sD%?Z=H zE=hV7#6yhq4wR{FgpcE2sZV5-kD6I3(%IItc#_QthlZFV=@yJL8War7s4G$zk&El! z&=U$gjKu05i8$8qt2aw;gUDI>SWK}~Sy(KBElj6>STyxVYw>n|ADN?}eKhAtlh7w) z)u2^K(JePazEY&JywbQ)IJk6oxvL7wo*QhP>!*X|)VyZb=XX!AVZBFNZm^TDav=0b z&rIgEr(Biec1|%%8lrC{4YF3*wND^UaBLO2Xc>%v@qkwUF(E&8Y}${D3w?VW>~mx) zkmYu)D*F)z0v+zCDZ(A*oIMv75e;r|IwXd}?NUxqvb)Hy&QJQ2#2sOX7|Z|wTgF+D zp^sWMR`#IXBmamR!HRdb!Q<-4sVe-(5dY&8(HvbCx1>wX_B+K& zc(j$7l#e`LOqK}4Z?7vxxxG`<2}YW@8hePPEinT#3z_?ZYcB9kNFwBv>ZUHgw| zx=?#GZVIC5Tm0XR!ab5`-rpyiw*E2-ME=K7@HZ-&c=EfH8GP@}hs_7|^U*>FGYhLC z@Y6^3-Sc7<44FqXZp9smJ)>Lx+cWS-A=7yIIot$81Ex++eP%cP=saa3eP!(QqLben z1kjBl?8;C#zL_>BvzDS?6rS%$JTX7&DFTEwBU<(z$Uyn{KCoG ztr(eut?^S1mwK|RaWuk{v1mgPQE6Fj+`kQLWhb?F>Vi+wj@IgABD>6PB?cX(E>Lvp zX%c(G*5~GawKKw2#G_K8-suL#bbK`9oNFQ(>_?c9JTKqm=A9&M&y=3{L86vJbQCAKHoG zZt#$$3X8v94Iwv&o9Lb3=`Ak|UB^rDSiI+%FF)(hoqtPDozAB_EJ!<>-i{xi^(Ep; zFi&4pVWm7be2pQHC<2N}-SpX_LIORw(Df+CBy&LzxW%Q7ri z+EclRG4-{cO?yi%DZ#-J?^lUU&Ex4e>Qk!UF*gbf0xQa|d&PZuw3?YIAy+WX&bzO? zEM15$E}Nhq6|+gubm`Tt``FdCtf~Z_+l@1~dh>tn*IeMf^}AcR@WQN-{d}w>8?h=N zQpE(vXg9-8=!$f;&PTy`Qp{so{2B}{8LN5mymMc&+~3wdY=`+1p)083!$=osQQt>K zHwuwPq*o9n0tylF;3^k3xd;rNt6b#oUM$el;f(wmzzapeNU{L{^z9UUtLRtL!76-Q zfMJnb8HdT`!Fezm(EY@wq^m~aND+=TVf(gif3;rC{Y^)h{b^bpUo|{E2VlBuKN#*+ zds`W{t(S+>gT;f0pUaAEj3wfw`wM4t!lG+OaRn%e6Kjh(olRc~K+GCqzNIpsQtK}5 zV|Prj(}>ZxXFBpfc~t0aFs9}XnuZ!*ZUb=hjC(d1`E30uv!gDVzK6seh2jWdaoJ6N z=B2{AD?uvpBgmjDDm0whRsP|M{V>(}67MpnD(|YvAlAh;1Dm%ZL7#K_M?@wo$d?fS z#kJeNbbI;_)O0mg22Nq%_Qbzfrif7Z^D6CZWxbt6+1GM>`BJ~MXNDtT!D66|BT|B& zXy{bo@Tp@)^y$c$CF8r~SE|R&-xq0}W7YaB31Ll=-6yxwxszW17~*wzA*o7di2_rJ z-M7=!J!>A0@Fqkm{9HIBJH(~93wjss5ma_D9bHFX*2U%AGLc|dXc<)|-`o3b4l$#A zit^rA+>Eq$&HH53IUoCJic5)De{aQ5$7P}y!PqX+!7Kt_w(;@3>h$UQ z(_|-(+7d-MLy61hJB-Mcu>L-^z+gKNDMlj80kz%)0Ckg2FNF1+Ewtv=62jm(_HlMu zPz~P5Xj8xUw?c7fZY@g!4@(Z;F5wC`a&}$E2X1TcG$=3?J4aD=4hza5r>yjCy4>z2 z`%uWQlX;6JdEDVI;qE31zy9Ex-0L&TKY(N1hJR@rEBJ4-vyq^siOn}N2U9BvLnCVk zGh;KO|FTg>kJO zKCme3+bL}=P5RDQzGq)oT#W2dKk8&UMG|sO44%e z2OgzrisXMUK7&jl4=PNdg&k#8mBGq3P4lakUo1QbL%I?octny?$pTYc? zPWWx*{KWY1&RUYwLQ3f@m15F13Ex!OVU}PAaj1gnzqH!fxEIDLTa8F90mtzh?OaA6oaN`Q*3dN(?_D!P`Ut#&s&I6L~U9D*KO zUhg`kPz5BLHcv7@&C@$TY6dHG4{@~hkgGsBC3?||qk#v#?HjGrSlIVk*HVLOmsZR( zM@jC&*4P*JGluV|lUpkhi^Ia(XNBaU3W zg^`|R7L*mGUUn22KBnM}EIgFza8*EaF1`Sdi&W6enGPlg=?#I{M|BrZx{sz}m9yN8 zsvPnT{Kc@^Qz;WbA!G;xFz;EOart=haMbq&)_WRcQvBB%<1d;_RFW&~=0zz_FAvPH zo8ivsK_`^2ZCf*R>lg~d{8zqun6Te1F$3nl=phczY!)khwCT7QZRcwqjGO-M6;3G1 zzq~PMRp~9k+%;${9@{1RyQW&z)SM9e9kEb<)g@B+_fZS9;RkNOIRGQ}v$erDS6kpl z+~1ZlNPr*7Iy%@o{-00&)=N{-R>V;Tcwq=7(uL(uRrV7VD@Y3+1)3|zYUEQ|%?cHN zo~9_rV=L6NTaIYO0lR3k{e`;zppX%hr)YfJ18ee2KJsE2o{(kKBxTrr!gcb-i}!#x z==Gr!^Y_Hm!b6SO6BpLtBhA8L^&^y3ru(>)yOj$V$i4+%BD- zdVbFtiVR$B4Gl}l*0=o|4})cVx{I3#?$v#|8(h79tM4o*ZX?;Tkfm>D^TPWz%IEfr zakdR(uf;=Cb;!w-EGhXs>M2qj5@F3HUyGk__&)0-Oi87x1To5I_;;W;3^;@>8+lrr z1>odyHRci-%+hU?rK(8uVZ%G|SSwLR!1L1dr`nViF2d_v$qXhkG~oaU9*K>UK8+X( zSXP__w#r}OdZuM>L7kn$)M*E=Dd{+@)^zMDSsC=|X4=@TsomZFI`xoJa3eA9*QJJ7 zEIebi=0w+N>GyC-(nOD$-SxtFfcx@x6L~fZw4~J2u#PKDF<6P5Qc-iY7ZWNO$0fx< zt8CP(JdIcj!H+fxe8qf7k~y}4Uh6=`Yxd7B8Be6iyv*=FM2l13N8~|naAqSk5EwAS zGBHd~u=_ILij^8Jh*de-L|`C3fWs6>nw}EEv6$|E(|R{YXgxJpmta;H>3Z+q;YG__ zEVc^5G>n^NRl}DdJ>Ir@lh;vKZhddZ{5bKMNQ+24dAW7New!BS3!Xo~5-iMcm&yt+ zCC)Hjz82XjGV6yb_EAdYy4&8jV$*tmhnkEk44Io5@caldpB3m0&d8PFT#Of#<{S!S zm&zIlEYR>DA>CEbO-|Q z1YAXEm{58TEBdR8Z198f?dC_2<_e-n#QxJjB>dvTfkCP-x{{ya*ugm}b1-MAlveqC z?N*VuE0Dkm&naDCAJD`7^;Lph!IKzrb(Id+2R;&p!o)sG3&Pk7@t|#^f}8OuFa&}V z@?maE5q2opVtu8Ux}x+H`}~R@v6q43iBCCB9?BOm=O@EXXTvzTgJ;L^C1v_V(9r?P z`f#*LcnURK1TeKoo}A+t?v>H>*)7Z18?_{D;OneG+9Q|tAiKfj)!H8Rsbvzz3*<3| zXqe-rrR5>!t$ALl-X4})T?HW{>n!}^F&W0JhARAq^|sv)sdwK&P=(3~0P?qq=X`89nTl)?19+)at)ROkjKa&Fy1>F+V%w5_3tP6UU1usMWQ_3!ki;VKv(VpR32kj!25jbxm3QDYAX%1{8KwamkVx9FjwrQNgmbMj_v&@y%%q zXf2wbcfa$G>@~+p5Rl{%sSkJ9Pp-YJ+D~#a$92BDUXlBNIf2~<5OX4`f`OT^3bQ*t zB>E`Uz6HcjV4w~kL8df^^QTCh%f>F+u#lNB9pzi{Wl1$Qy(AX=FfuC!`>CP88o@bX z$b*N;P^B>&QR6c^Hg}p)QmSc8$S!-OoGhi(vtn6T^xj9&<7ljuA|roN(3*qIS`)xF zN2|=JRGYIaouvGDec4f7)zZzQGkW`^3)uB1m%sTOgYwhP63@cP3sxm zjKuWg#5Y+m6V&L<1sil-sn(2cN^kTr~T@kuQRqDD;K8T-HxWg50OqaQA++ zqMb$CSg_P+9ZA<8Cqt8JYkgtiVpA<(0nUZjhGZV9r_gx{q*mL~#a=YAo9eN6bZI$Q zt(E0H#%+2$PEn>(UaKTr+6nDXCK*tfMm<)eHRqC8$*e3;t~n)Dy%cN-%UNCNMxM zeN&2sfIkcn4gI>dYb!N?bXK@KN~~IpE&NwF!q7?%4_e*46^k5xgM_05 z>iYGB+pa|Wg5lHfY%Til&h8{;?^NFqacSgesWs&$EYdaX8 z=TL5bv!y|Y7Y6HvS$9#?*GMC@J!T%#`vv^IFDt@rXc2t*99crSUz-t11>a-5UPW4% zKKX~&U2uvJV=|_$ z{T}V(H2Q!`RWDrcCO1EJ!$$up!p=Mm8}uFYcailnoodVgOis^#Nt6Hmvc>P@B%@~l zv_Up-wAB0O3hST#{%5MnP&rXVRYiNJB~e#fz`l|f%J<7516ehlrc#R+i5GX7tJBCU z*JfKpTCx;!`Y!SH=K|kp>+3>_*M;g&%4}NPPNxEIrNRSi&{)W*=oH=uJFkOPd#{Jp zw3iESZ(eZV#Sj?N+h=Q7TNh7eK@d6{7qX$jFE-VV+FtMh5$_*D70G5r*rFAN#p_TK7WP4 z&w)E7WIyUTSO>1tZ1rgzdG(68`g`Ca9NKD=l^qoYq}qZF?r*p5rU$-Fv+P)x?hoIJ zr>pnY>nDjb>YEk=!lorzDCi_`xd&e7QpPln%Fyd6ev*(1F{4v+ahT<$s3s|WR*h(4 z;^dxWNxfcHB%7_Nv(;Hn%&y3&iXSNcCOxeYl{i4m8IfNuGJ-UvgHVTjnrPmq5bqa6 zZ6BIATv#5jFwxm6ZDMbmXBnzxBuV3#KqbfKA&teDn4BqDyTm%LAeNH3@2j;mv0X4Q#LtMW;7D6)-|~IgA8#j+{oZ&< zoAYZ}Q*4rdd)i*TM+$Q5k6Bemt5St8mF_G3_Op#CM z(}dffkq1Q_LJv{wwE85F3q{f~w$Qgww=k!Pb5upLd~##T!(5{$-1BM-&1z^BT1_S9 zah5%;ka?=Wd7SxdC5r9xqlf#=MmvD;PbRj&Q!PB+am(Pz0 zUcT74a1%YfMAqF%j0;uIE6YoyOBEl@`f@#Izs>b(#TC20$yvCz5Rwa5;vTuU&GkXe3H$(zT! zaIJS^TCZ-wJR!0z{Z?T!d#;p8ah|gtdOhE=l{uF+e(qQCQZ~ZzJvtnHM^X0HquBm-G4JTl!tvy;$(m-L9~04-nmhznlj zuxa-RlgMh~7O?0gksdYeUo(c=J~P(phQqY^c7=iY(BvW}^r1wAexu3Xo`K}{Mvp() z|0a2dsJq|KA2vC`7McLy8UjOe~KAsLHWLR&s1)9UL4uW z!6Y47^rK1OEr6JV<52|BuL!sa6KN?lW>2dqI;a*x*VKhpF31N_))F1d4NIVkp5=Q=%Lglo8`o_(yrR)A&K1I=oprA$ z&+wOkXUI=#CFYHsE$`o%_@P5M6%jaR?DLn~06hN@-TkMG`%lIL|4_^*fKw3Hi9u0B z=4Rbit|bI80j3fl!l2 zHa2IN-o2=_=mD0tDb9BEfsC`%fo97Rk3E0lh{d>g+CnjdJvmW(x3-Qk4VytUN6OEA zx9~K#^*0wEY^9ROc|CjTj8P^B?jG7) zfZHK0o%}oh>4aNiJoU*C%hnR1c9*_L0j+h_(gVsw@{TM?=QEfjibxAp? zbI#%#k}R-Ug#fRI%A#Akn7i+leH(wZ@SOJi{sL`j3Ur4;G(G zv9J04I~&^OoXyh;&L2DvMbZ%40T0=*h@OXC#P~eAOgxEOA#kWnJPCRwu!u;pgfzW% zaLiN?mkRySaJ|XOW;7-GVD?m^*~Ng589Q&!ip9K%QnM-LDv^dk-I$FudV|vE96f?Q zc@T%P(~*2fQJK$q1|xW8^~u9LM&RL@AJH~uHTm^;zOkU)qgDOFy^i$>LD7X+&yglj z>MET=4^&hINTOf1_^>Cb!35A(1F$>$JW_rJVUn8rP)VJ2qgc_P)9Kdty{P!|+kC)J zxNKy-^a7)v;59l(QY-qXyNtNI52mAV3uVfglCWKwdZ zJ)U%0YAL_woa=MKH5BbFx67X{2aVuIG($kqE#)soH-Ud2F;btUfSlCycT3km&%wx0 z!N|bO)(rUT-xp`fmHyP3KPCj!h`S~QUBH}OFJXKJiGW68fbthXMeQxr<7!x;X&pb0 zpL*XU_YNUb`Mc0;1yWC%JwV3IoZ&vPWDH~g`${{wL)U96Si;)42^mR+XLXQYnEnt62PNf;t6olj-=uq3*zff@f%-TChJ;@q zP>`{xz+n{R@?wN#yNAjuzdg9>)T~u0Y1

      kcj0kg|{q;&j`BJWV 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

      6)iA>?7|nAr_Tr(Io!oxNfPN@f#1*sf5Cd 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

      fR|;OJ;RL|)*7r_CiKS0JM+T&?DZ)4zFo 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%0Alz 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%0Ap-=;dk9qm{%mlVkJNs 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 IN>4}Ue~Ra;mjD0& diff --git a/frontend/src/main/webapp/app/.svn/text-base/bcprov-ext-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/bcprov-ext-jdk15on-1.49.jar.svn-base deleted file mode 100644 index cb0e0be8cd12b67949cb374145e252b9d29a39a1..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2552449 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 S=``?^XTF4%jcmCUZt8QH2YZrq#P%hdAmE^Un- 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

      mT>N!L)~nv9|!5NE8T)i3Eyz77e9(yU)P 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

      C%F6vsJwE5p<~#S5X71MYxZVwR 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 z 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 RRqy*Djnp(WdlPuHhMuWh8QCkHF%Zw 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%0DRkcz2(2{y0v@%{jzlUN&HF# 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

      {stKp-eny#JHab+JBYvGPeZ zZ2W7?BE#RO>Oc49{{oj6{AZwa5_D_A>9-9|uIpCsRItTVOo&dhzsIiPK7wX?pirnXt`Z(V_BAQ%- zoq||cn!FfKF2ijU7aG@{+G{7E%PeMk*nf5B@UbC}VSaPj#3QIAgz;3UiKJTMI7Hw_ z=tVF9??XTWS3xtn<0(uiaCNoziuAdD5u7#N6(l&qeEzf?c zFo3<@jcf{Cz7Tp>^1IS)7u|<_(AT0oag;MJ8hKo~u+1Xpu%x$mFf&u3MQJ%9c0Xg> z8{-K*dGD2t?fpn{5Ced~uPa(3Hz7fJlcV(~`+gZ5xQ&b!1L5lrkc4a@H6RH`JMpAmJ(Jo&m8Qd{E2E*uHNIa(%!$=I39BJi9& zH$d_0)T+h})9h&V8G2!A1^8pLCTwMEscZkQZt%~c z)s`zTwgNnq2FkmpU3k4VZGE(W5OgueU5&it1rkVHum}cIU zZxC^qq1NrUpKBgnvXgFjzP-JHcn6X~;Qru?}h&Y(S&6;wV%)GLEk>Hg?;nbe6l%xH&L-QE^al*R$eA_L|tWhqrWzd zJ=ZvyCDhoF>elf5Qr{+ho zmpFV~O<^$dm`x-j`9ZqbUP(whjpP)%*knW_9$z$uUNZQ8A$yQ8c+F3@N@Cr4Foaz%q9~x(6>N)Cl~JT~JifIb ziovE6T6n)TLk3P>XNUaqor0EMzW|>Dt<#ptt@yD;UP6MyQsX%*WW*(iuO{rt{}QBwPMND5rp>;ihP^0}SW=#@&BZ%RHLNP=6w$`~P}`|GvVM)wQ#8va&V!ztrRk z>e{xNc#p75?+-6nX;E5aY@JiQ@ zO7|K~(>AezlIk8CjZ$8_%ay6#cbi|a#?sPA>N?6h4%ad8G7HZHr&(B2q##pPT%3&O z^k2U=5@yfoZ2Ajn0&Uc%TR>#u%Pi8kre+ue)5Hi}LfK7NPB3C~TB1jqyG}twB+FPu zh9IRaLX;<3898JebkvjnATal75#m?4aj?{oP*1fa`t4YW5^@DMnA+HTQ-@Pu{B~YG^Hn2VG>0= zcQ>c+?__Vepa-eAkaOW<1rT`Y>Dx;)i1z z*mLi?;C;v#XD2cO%t0t=S7~6b*(od8*q#q8tih%<3q+Qr(_k+N56VQY{|L7-%#|=G3y@?5q5^^Wltp#%xtCaqI zb`k-J2E&KViN#+C9L+}vf8dLd_Btf-V>6S)iqNa-wlc{J6^R%V(zMpbbcp?4@JFVS z5=tE@XjCSd)kQ@KLSTG#Vw58Py~?BO$kZ&lA#b0-Q)?Dc<$=S<#rVfX>#T87J-WxqY*WUdnqwNX2mF5 zy7!h|-Z4i=sRP?sM;XMF>(&$UxBjHo*Q&rvJfrAaA5viMj6!Cvi7MFY!Igg9Bqa_; zBIceBtsfVoJQYQ}tDIWT*0an{DjRps_m2?h4@Qrgy+sywq%T!o3PKCP>OOecy)eMt zW|zUdDjqDJoVA*_M^=YzVC8S<)w0Km^W4#<7=v^w`Te~brn+Ux+rWL8>VZ6ZvbYMr zq$+w<*4mA+BRs{(d0iiPH4@ z{7Cff{NhxCYvZnuq0AptxfK{qaINX5NFu+?`)vpt-jn)&@79@(hf3lQBW+}ZnAxbyEN>EEU3 z-}WW{g@b&uKmTOF^@fqttIEM6e;U@UA{8sayTDV+7WjH+o1l03?~nJ3&8>n8dw%X` zjq?r9!*@}6|HQz}%KljMU6p=%e9YYNaC`#1?j0S`e$i8X$PxRYPu5PbJ>P7aHtFwu znctD4UWlWrmzu(yazSK4-IU^x%rnL!@^wG^l!Lu^g{n?0W+lfCh{umzAu)9d@;WY+ z&30KlF<+W~qKRY-oNeOCaZ}DR0vyhiwW?5UrL+1m(o}jK9xo+G^X+OLn%S(R5&mIT zlee0PIt;xOc?$i^bn?w_ur@NK1|*&POTt&kV>UW!PWCw#k|imLBlg~uba<_?^0n2% z!b9vZp@nwru)(BHD;ybNl_jc1etHIf==s4*(pI(axt|O$<05{uy~LGY4u>oyMI0s^ zHTK@Hko}O;By*1cQPl2xuUW(>Udf2fslr{lHN`aLI%XIPz>`FzB%ER~MVZd7T^mDMA(x zwX~z&f~1e-N`M!|;Y?uilG_5aBg>5e z6K`ihy*yIFp%>=H73Eavou3)1Flp<0*{s7z*_BA=(K;dXs_TjBCTXUWM?UoK@Z+o; zTRSkA2i+Jhb|x4UoyXsBSk}Pab|yGDT={;?WbjjBZVMl01L0(lJ_v{U)Qkq;gCo=o z7jF*z{^@Tb+shm-aXg5Iil`|m0d{Tq#Ri;P^K5{S1_1$}Bi}22o75 z+>Q6!8}t=HO@;8VJ~SVm5KMH2X1pxBL4sUQEQATAx;-obn1&+S$@)N;R{LhhD3g$Y;D@m64fo}zR7W+~SzlsDpU3iVgiy9KWkHcMffC(1z2W9{ra?+^;Fhy#|e%fggJ zGv)65wriXKzWULd@%J0#_1nnr?T`2IaCnYkcJMfb-bd~kISu}pC8F@OW0lV!e_p(Y zWj=lEpSTC$ueitG5z2qx&Hq}8{_Cxq5dV*_(9lQD5Ak4M%?_Xh4FNcPWGin}GNm%r z>TJeqlv#al$y7S2(PNPv&S!5%aXBL-ZTD*d_RE|YTk{_KTH~onE2od6*|+z*-`~B_ zHvQ#D@$;cOHtHl0PDz{lev2UFime%`%|$kkQI6jdu7~8O45+Z%y%_{Tc@3#~Qt^`? zo>JH`AoQvo4q49K5zWV><;&)wVNbDQhlxd-CNkLVFIe~3S@nz?p|?m;9;TWu7sfIB zLUbI6W*abMQSTSq?D`ETdt7oLq>fFWXG(%+989-o9Z5Tuc3(h^Ndz~)l-Hc2V4dX| zx^_-L&DrSZ*rH@FII1g zo8RSnrxvA`5@U_|h19gld~uo~jHj!+lJfb=lpCQ!bMq3WLyJ0+SZrr`upvRbXyoH7 z3y-%iFn^Xd4*O{k;M>RwMr)I|-P#iMf7DHatGH?k5e6#G=L!cveL4W^BCGh93^?cl z!1Rlo!_#`h!0jZ2xB+D*-NkfH7}-0SzGY|%(*fWh8_wC;-=6}|QH{j;s*)e^D|O&t zkp<~1WLF7wGr<^Fg3X<&a#${n&{{AIr;S54G4Nw~E*M_s)6an?ILNdG@^Vq>^I*M% zb{YE#(Fk>1MT>OQpOP)1Xaf2Bgz{l}Y7`(?rmq0qS&J_z@ISMA`=_uC0EBTb7&LU}N5| z85I0Jfh-sSfz|IIAzD!G5W#f9!2CrHV7Z)l#Rb=nba1P^WzaiTx{idyd2t(CKJtb_ za9eb=IsMzTf3BA| zmVqC96w}H+!cu%ce$dq`CructrJfhIVdA)-9&J;yb#|jm$r_b+-UQ%|-mGsN&|`uz zcAt;5kapc!U$Hxpe!M>oWqtV!<@K!u(*ris+aQ;rakdrvVR=sfbAF3evd=>_Gmz-ApoDAj)?7CtI` z9aN$Av-)LZNMvfJEUYz&u%MkHoCEEDYRK(CAvV)AS3ciU_;Qi!MJB-q4iu8X=Qp(LSS{hjW|*O zlA1=8+V9d4cVcD0K~(@vZ<$0ZMDmku)U%29_#xXjiYB|UC zEIT1@NA_@z7D_aitM9@&cl`zMEUJRhu(Reeynj@T_xB?%-@SJR8o&Ot;u!o~vcVA37~f#^u|jjAvqNptf4E+b80b26Ztjwfk4 zLI@mU7GYO&y~o!dXWZt77;LYYA8C@21%n zWC)J?BaW^=Nnlts{(_RG6CemIbK*4BoSIP;4|m>^XTqs=hT;;vQC1 z9J~p*TdM^<4k<;`Cd}WYlZ$C9+L}cCa(j$tV{dJcMRG8C33$ zd#Hg=^J22z4LOs!EmYkr>#-&w3pwJBlRyO9{QkL#Bym-bfxSz;yx@n7>~N!b5X1Ue zQW<#g(Pwr%B6l=6^Wqx_4@cQ!d$k-tQiu+rsNS##h=;O!iTiyc7aLE*q-SOhlbWpt zl+oBNVS#o>)X1aDb1T2fZN9MImZDtiSI>OjQ`=sDDwH8gimS-ykS zBSh3NO6_dm&AxgAHhL8_4%IzPac|$x`4oO?skwuUe4Q&XZhzYBILhR1b0hwB<@N3g zgBKwFeILeN)MPbxhq#k!I zmnx@=eOs7U4l_|Ge(a^_kFgR;}h z%v3EIu$lmOknl?|o?LO&VeC;p0XB=!sq!>u6Kd8^|{jI}H7JeV~7qZT{FIg)Uht{Z@;r<;sph zl__fG+h`kQVMXDp@Fv6bxSPmuC&PBqJeffk^sBLEyuDn1pAh{9eL-IwUoLfXVAw$K zuM&dKb?O$o5oMB_$M{#7vDz2KNm-UsV}q&rbxvv`Xs%RvbuieFtIl8AztUHvg!Tzx zn}lwhl?Pb>uXm(szX_5V>y*XjTvr=GgD!jok9m2)dG6zN-e91ydxjLI67!fNLG<3T zmM93&<>dr;#A{X7Hgi5P;QK7{Xh8WK;;7L*tKQlA@Om#+p{bP^Fy9szND_5CuIdag9< z&5}v@!4m2I8RhVy9|h&Uhnngg=$+1WT?7^`amE9uH8RKD9djUB0RBTZKC*s#IcJF2 z6tnDCum;aAs|?MxxqzTK^cbfzfBg-{`4%^u>hx&P)6J|7KcbPg2 zN#$+SqVI%%5=Hj(mu z`bKUMG}<&wiDB=yF^LXDEq9dA{BQq&?(YoXCpe!KNaU~Z0L5P`kb;1+th}L(yy1W5 zr^Rc@Ao6`$z~lr36sY?^s3MWy)?^4Rz5<*7o6wP>t1ko#y|&=9>NdHOUl z!;4$!?FT}7#oJ6iexC2kp*?(v3dcjd0DNo0;_h+GF01olrv|Y#pZ3D!;Oy zggZr;8kWY+#2kFg9!kOfDsF&oXTp-yu~86H=ngHPzancRz?IQ2QYdJdVjuQS`h7Wi znmR|smnuhv|3@!2xD)X=^ujpml@Lab^Sa6J-4+ORjko~Ui7ap!$`}kgch?p;L z$=P&bx}m-Hu)W(zis)aHbLc1u1?zq}i|@3A^R-9Q`x`R^=8QOdCn0H%zGTZfXqp?;&grDkn~eOUNJKVmK~LJ^stY1pa6UzFdv6TEPMqt4MzMwib2EHkPgV zeoVt(Z---qL0bznW{FQ?^DR&9^YHn=lNG5F)0@SzO*ay0aDU|--AnM^Pmy&zO^7bn z5~V#V@*Fu`wVk;=Z9Y+LJU?+>0htW_^mtB&yws5p+^+5>q;dA`XurM)C4ri&9xenV z_07XRVc~>hp*h!j0CjzS`amDikTeiSi+c1BIZ~3xB=qLF>IA7`CW$=dMYF=Q_Ix3y zbBL{wPBA)Hv8q%T^m(iO znE`1xaZGxJ)Dz*cMUrJ-MWW8+#zHtv`lYxB3f)B!piFOk@+V--L&EnIC?xul6E9^7 z?=$^*q}i88=)w}yqRive*>X~DtchZ#_tf>AC^B{1G8N=JdJ*6kHyAMLQooY3hj-Zmwqx2E#KW%}gnC zf*R^qa5lNwrlp0%2J7>{%>eV_^8Hc^mJ(`dWoyeI_Iz5CLINR4y2mVSBG z>5RBKE~c5hS#k90L(i_Q@!&8r{zJwBOgM3s6BfEEgurp94Y&L zG#I+LhcE^i(@H~5^Vb6cjD|@Z<;hiJsv|N-dqbgsX?K9(gl=^fY|V-kv;L}GU5g`= z8>o6Is5*ysj<}zkJ^@Z8lM`j>&E(oW)xu!Frh1X~GmRs*TBm;-zz#QTw{6-1^HO4L z!zFFADRcc}k^R8HvrHK}N%EON>1}JCGA+q&EaDX+?EQm#wAz<5hs;FpdMDV|6*Q%1 z>YA)C=voZK{F)pj0_qH{745RO2-%{S0z?Cis2Q2-3#^?s2nA2xHh`;SJMWolj0vR7 zMzP085P3Z)*_SiBZWm2Jv*$OOf;B9ZcBX7K%HDa5Vl_M>lni}7+AI`GU%oGBdifAt zr)CslmY`zAFIKA zZ7wS9s591<(KAmUCBv)gOw^GfRyQORZ;VZJi{EoexPWuwjxhtw-gkz;>)3EoG#(#Z z`ZvwOeOku1cFGpq=8HW$s+zJS(YC?u9wI*XDwR3qc9JUt)ah2 z$R5OHPvf)A(;e~z+OWhG@J!;eon+S|hPwm0ro{u&*mUw-u?ZEfOP1(j6^>@;f@0(x zP`YSzc#cLxt{Cq#z87J20nN|gPFJ8@H$vcO_l*&K^2B{MfRYlD+%~^x{CE{4@5ZXeL&*W%yqSKwqHhaI0fxrUN=nW``5Ow zso@rTVS3r>LPXI&8N0ggd%I%?6;>1CO?`%B@orD;c}$_tyK&@Gv4j?=PzlDR2*=hT2DZP8h661uz3Th(ZHJ%qe zguL3i#F)|X0{c{t7)TS3cxZ*>-{rZv-6&h!;@Np>r;pgBZ%~il@5kGW;4Lj{O^n$>W*3o%9>&-1NCJ?E%bzk#%oD zkcWWWSM6lvdDO7e2jq?|s?x8>3rAt6hoPq@xvr>@oTqj6hRwFLQ#nb}UJX?VQPD$C zbC56{qVaK4gp&IUynlvT z5SYkN=+6d=g7CMY_U|4>3jc1h|HD>R$^0J=v|VDt_-n}%LLw5Th!~)+_@-(3oJ~`R+EXh#kvA&6JiPdkvAmWihTnG0nuO{f$4%tC0(dQbXw7}m- ze-2mL&8bYs-#kNt#EeT^x+W5ehFAh@`T8HZo{U9@)EguZ?PPjPf}Lx6$Pion_k@Z0 zcfXa>(^6pZrXFYtPT;Ks`<4yyPZ|jl^%>!ul;x!Q0@NqeT`pe~95-#Ky(|d@kNihi zjInm?c1Q*Yoi`%L0)xC{;~)Kc!RbyHTAwm-z!<>FipODGrQxu+?}+?_*s(aU&H9&9st+MFB&vrkPDg!_&-?A>$n zpnsk|gGq6yPnYK*I@!B_A%GR1^L69Udlna=y*z975etzTS*VYMOtu`bbSIqnYTB7V zLOvk?ZNoK7=kEgDCn|Q=5eVOc(c{Y`fgv2TNEeyKwBDO5tQ%%|AM%m|jrc5`ihJ^l zZg2lMAx}x$59c+6O%gZHh-vuNbOFx|oQoO7*^K$R!Y3-a%b&efyQqwqi4Xr{nyudi zNb6T~hXs~SJ(wM8*_wYO@-$AaKEkSqy9+MiSex_Wf~w#m8G%ASZ9RqW#qN<8p4Zd~ zZNgrBP#}^KCf?SM&ZXsnDq;8UG7-->$5J-l{V>Y!T*#%{`tDN7fsV0B0W6qS)wS4g zCnW>+#TL^Eik(@a&7 zZK@;bg={G=J~Q=xL&C(i-{lQo;1EHeMizib9;*wtnO}RyA}0sARU_i}jYeh3@H#6L zi%v`PYx@+Z$lhL9-=1OrR2W-eEXQx3L#z1z50|umD$IXV68;BW_|MYp$EUxpX-_;HNK0w3 zVkLfXO(<(9M0}|d6<8$W0k!248i`agk>P#bHMV;(qqx$4EX^`42@e+eIl0{)@0*U^ zoSuk2=hkO%yubvoR1p7!ni`-mfWoqEWx?<)^ z=gXwQrG31!hrZv63lO~D3%JA+7tq9hA=&(>$l9F)=g_xcCW$kUTYi!wsjCP8TKIaS zgNMQr)dovFUY`y%!f>)(gq{xsDewMrpcO}>_ajEV;tW}K6N>tS)*Q=WSYg5^O{RDc zLw%8awIzyu(c} zisaUMzHi<`$th5#yd!>#ZStJ-p)H7vgo}1ei=CrqLQ5f_AS{52m#g7DG>@CF>4a0n z5$-1AG*KuW)rL^DLiE=2f{bmS^SA$(iO(FyQz*MOK$Tb^wGF$h9O3ZJT%o2KEtmrhyp{ljk;x^xo z0|g?JO1^$pbf#x9tcrPczlRW>&P`UZx_$FB?v;)v4|$Iv6)qN^KLKBtUl^BFs`*p2 z17Jc|u?};i2LQ&{f;bt}=@x)No`^I*dBeYhC7J`jBY;|GrI`W_iJ)#z;0}qy^@MYg zqncfMCoCu{{j~F?z)7cumB0#@zW?Ue#OUx6x-B7ESzqwUh9z;5-%JpqXT5Oqrs|~15to_Gc>uXvwH<`w#JG-p-ew1a7<#+MG zLw!T4n`v2UCdENY9E{3lc#6_f38%&`{4dXGj&Z0}I zqX^YP`pQj7Yi9D9;>F~vl|>c$3i|*JK2-*cCU9C9Re|2%m|8``!EeF+4`qAxaVAbi z`vhTXNEM;UJ)*-Q)|=PmX_(M82BEw1Hu`3#^(h8B-!Ms;rhdv~C@@FJU769A#+lLO zV5m=5m>l^M#fs8NN!gP&Ff~ER3?yrXc{f1fk+O3HfXv_->X~qxa>E;o0byE7tL?_pC3urCmVk(i*TbhpmXK5S_?nHHz&gS{HYwDNH*>`52q29RMMZ2b z2kX*Dh*(|^?kjAbK%*NZ&5iSfUL5?`H>hgbG_~bfy`1fqeLhb~7CJIxov35+rQWX} zLcFsUEnuQy$%KG8P3?(|Vav*r%U~TR>>{Y9H-j*tgihnA?;=!1yVdLJjGz2I!QdhR z8vEJ|IEhmfY%n}Duat3{x?QZd8KJ8}gD%uk^aC)3m%2k0a$+9mN^L>hAh+Q1qFk`M-VuME)(lD1#=TThAxv5;N^<>6X>XH)qY(d*7=F9I0KJhD}qi0 z4UMnP1y>Lmxc!TJTU(1X4%(-%Qz$7d-vL%EgI$e)X1<2LT5+_i|H0*XS3-)#=SRve zB}A89xTXIrY=#q~P@{j-57O31icP4z6l(^CHBKgID#phcgWA&6N?Q{Oy_JNfA4~ zEO`c)ir(h&mfr^pak1=GiysVHZ>Sr{Q$q}LC%a(CA0jL3PrY45AI+~qJ!ydk=OUuQ z(7g<$H{szd(y2G);mpp`f&C%4$P6rfqq%U&f3D1q@MR9%iePg zrPEU@jOkF;w$g#YNe1Nt@o~D++K2nVq*axCu!_>cY#}xXNB%Ypqah?aU!cIh)8p^J zAt1o$ha<+tiGho-xqTA@$8ILdiL29UrrII$O!wpoeR z5LS!ZrpM{igl)I+=tomWaA~3pzvTENcRJtLce6#286^SQk9*F~nVN)z0UTLgYpvd0a1EXT z!XW|SJ|ZDDs97}7`jBA+8Fp=ti0+Dn)?*R(Bc=rhD(EI(-Os0VBw ze^)%&Sio?`FS@ZEwuMbO?-MMaTb3(*qp@&!_Pw^ax?zZz+GpcqROR~;-g5LX!A zokkGrPwg*IquDQ*w!R|QpR!}++`MI1rKqq)!M?cmX<5yVDtLLf9%4xgd+A{72* z@2CuhnTSjT2VYSu|C9d{`hs`VFy?`;tT#9D_ zqvb9WV}s{O(0j4;)XK&W|NhjJbhj(JEW1g&$;@9f7o%ON_B#A9e$v?Ib49Q*-5r1{^~J zQ!*6E?h0EA25n1IB3@2FpJEJXii{W5?ddf}&k7lvGG-tnbyI*rVPX=oAvA}MEA^8j zGZ(^uBQNxs101GnDaC(m@f{0~44a;N^>*0YTaq^Bqg=e&lRi}?M!4e_*$n|+p`YHw zBV+DpTS&_i#XRK7^;jAK3FG6^!VMYeI0}|_R4g6sY%F)v3=CF<^QFzx>9x5=b*;*T z!Wf9gN0*zkQXQf{kHsv3Q}c;WI}*^NYzyg$hHr3DC@Yssq?KxpUtEkW8Yjg=~qt zBggAGKPd`K@9tjOEyKXV*l2QP`oZCU6G(@$5r0x6iiFbP>GAmCZInON)lQ$BpfhaIgOgSA@Ioe|1f(S6`uJR{!OBIUxjb>!=kXxEVUkH-(KdQ;e7w0m1q0tg!j*NM+wkzaHM ziQT;o!4V}hyHPC^!BwIYtrJ}0p5^(mo|emNUNrfEomM{olDX|aYeuHyGHaNyjZdtR zfqC+Io84;(PR@G?@VDklk`@W;LGujbwYS@}u4T4M-3N*5o5OodKqjv#i8Aw&5})m` zDhLu`8kDPV7&zWI>wiAETfKDh;(4>EOPp&AB-l%c7I#Z4(Z|4mP>@kYM#kSbAn%<( z*yi;aB8|}r0H-kA##Q{Tpw>f=(%#+?#KSs9`Mf&V^`HS+Gl&%gnU_W9QREM_#|3u2 zlRgYAl+LxJL19uawhSf?m^XN@tog^3lH7T%AHDN57l>2SN&||ilOYhDhGdmXg87(~1~U=``IA@86Q6Eh>6;&OwNl}!;zHA-h35s6nV!tyO= zOPJ1{byqDNZL$Lg+)5&%kjyisVxyh*e)s%2D-inKTI@4$v7WhrpL*WJ$fD8*bf_&MKfrMIN$Q6>e z;gbEn#|lBiA>c?j;SW>{T=36Z?WW-ZA?gYusFn_Wo{a2*)(Avu*j&t|Q>q}!+S?90_GkoV%Pi8;HZ#q=>MKggZ01T^O&ObB zIXd=NwP#kTZX8CRD4_gyEUw`KcdQK(y0-Q_RRk(>1_~0q#zoBsX;dcKk035%N2zJ+ zy+$&`CR&8NbcD?x`{w(@SD1z$OYcHngF}Up1Cy`wqnnV6&cTecD33p*V4DlKTYZy# zF(G!L@&Y6tG7Zrn@iiO-n=5Ha1sLAle)71I%i`4DNaXaOUn2@XgtfAzNh`;qdPg{2 zEJ+3~T4bieD?e~y6hl&CG3=XmRO?@87>(FAO>C4?V3&xDcACR4ob zU$PA5qbD7fgnCLAH~Se=^q3+$(Tm}#Z&J<%71G>pKqOTl(F^YIyy7>`2w}f)nuRKZ z+++3=*0SHex&zBbU>JqZ;}>=U^GHc8rqmW7McU^jdL)31$SjNbJi9eF~-(a-z_>$1O%=l-dp9H zIio9f|NMhcEEl0SM14+GmVce9{!Z-q(}Vvx>xx$9h5(`ekponqC?$g^hs0e){W)Rr z`P|AWcEhfc(|PAAb(YIQiGc`!gQKAe{F48^hHm+tpz=3jxn}KvAP_OaM)S2-^NmRG z(*zV+G{W?R%hiU{Wy{g#(#g}$EJvXG9eh7tgbaJ@$sUlvQT#rpb9j!^6)FLT$hA15 zk;Mrp-E6m3@nWEX}h$aSQcKw=M}r9?}@D&mO)VA|70-4r6dTa`u; z{b2Qh^hOivw3LN#?bj!NWllgeQl?wSwG_m>{*0 z*n=M3K5|9VAIEUxOKHy7f677-k+dZbi$k=k3gEF>Ddaw zyFBWK4v>Ck=U;cPz69ZRGe^yVcJ-AwvH47y;HSRg*mzN0)OzHiM`hqSdM^U0*dPi3 ze7%w%`xG{C=_jiLN${s%2ZzX_4VHxoIy#^F5+G->6lE%V7||5_*3dQvmj{7}PvsO# zhfO-lJ%ya1l}=IpS?8^aSNNQ@HwK4Ma4f2!tEyZzA8wB$(%T_)4L@2Vg%7od#1>`D zmtgqsG@8?HVVfWhFE!=|u%3RWHH%=EU;SR^yK}dIe9}UG`$wlH? zk)Oa8#Fc&Bfxz+D z6zxw?8~UNl)nNsux8PGSR=^ogr|2sU?8HJ6o018y50|Q^_Ej^|RH|)yJb!?vk z4e90-Y@3eU_+JPClfLVVl^43W~Xo`Oeg*J075v!%NQ%GcLZPX_7FD z%|{s`!c@h&Z&y<7PA+ApCHVOHS`})bX-(O_YgLk~m`kQ?a*rmN3s7yXK77xMG+!*f zk}RLu%22fdX6@Kvy^X|Lj%~2-b~Q0x$KYyKXM{FV9%I|kaa5}slsCUOCu$I$5mumN z%Cw?uIE?aBe%`lFD19v}O67np#*uQzB$(Wb4OR{hWecQ-H{L{(KpimfqThNN0yBXIlhi+?K1(r z?c*KRJTxu<2=O68@O9hG6L+FD7Hv7w2PKMmynG9Od3DMkJSgPE8PT{7oC{t1f zJI3m3N1ILBIb~=i!m7BZB883?MJ_Ks65JFa)yrM5c+y?4*q)1Ez8$qoxjV>sLa`0! z2Vq3oNEhqf?+G{O+9>8xtCWW)g=*nog;n4){p+KOK-$+294EM5bGwl_ ztAe=3%o95C)qOz_j_I%{d$@?iT|@-r}yWN-qr8_V%9iodIPC{N?FGK3d#RnX7=xf z_pfXFKR17$ZZE=c@A3X%1_|GK%V4wdX*C>W=Mn>1;t>$O2DVpY3poGGFB6fZLVp?V z&We3Urc;QU9=G34axC;x4B{S%^g|>MF|K!W`*pGDx%zO@_3`nF*^TC@GMyrsfMoyE zMpHzSIBum8c;QyFM~ja#4ZQJ~6QZ60Rbj%?RFah&oWT|#MYpt@!#oBO2LSQ-?0f~M zFBZgYr^{U3_uR&1K8GDtuPeZN2NY>|Jl^8upVrqsoOqQ?zMgn-WW| zmNluWJ0xW-`iBO(0IDs`xxHsA?vz^nDRV3CfLnQ0ZKC1Q`Eg|xy&n~UsWaKR3OgV@ z6iNUIi#S22hMH;j$#WxPw}Hr#WB5#WaL7&t8~-|S&Qppfb0$m*1PXg(5vBX$V9VKUZw2}VXLfQ?{xPbX2JLlZb|4kJ#DF2_Z@2EK{#dF2E`OxYxwvX zA&&!QCpWT6_w*Tf>*UxwcaJjsO&`L3S z@&O0(!u;e!g0dYhfXOlJ05vo!U70SN6B86+k?uD;jM(I*&n$Xjct&vdur+X~okHKr z&qeZ@WZI!pmWHJDYrmNWZYPEz6B+Nc)BrrQx`U{+4~ei3Nuv)*st?KT|6%MMqbt$6 zrqPbNW81cE+v(W0ZFFpPY}>YN+fK*m7%AnuD16c`&eJyTGkI+bF@IQs^M3wWm-4PD`Yr_#2>r zt7|))=`HkL0-mT%g4V(gb1AW8KH8rNr_pgqr?42ldFa3>oL9-(8-)PL3E$=36x$}I zkIe!n<#CV`Un|<@AVz=_f!>B2nA|V5gsx1KIeC_NZu~x+f@9X%?uO`BCiC!?S6HdK zJ>S?^69#4}n0n;2=ipQ_#a|+G>F7F=)%yx=c{t*LrW?@RY89DBh69Sd@!w*H1k7xJ zz%z$#!GFH|`v({B-`2sD&cN2$#?akR-_gm+m`>l(hJnt|+L6xK&=4Tf0Rct+0uK0K z{(pY^cbA7hzm-u?ad!O2@yFc8R7T(FpCH2j%!8FmmX7Pf$UNbjV+vq4cRBoiq}Cei zb&C3u?#$k;VL;KyDY-6Rr)L0f57+tVmt)~S<;VA7 zBTWG*M?8<`ovx}MXIFe5ps~XNpwSYcg-nHC*hsLuE!vxWwfj=z+xxNCGjzJ@SFP-> zSbdG!ml*F_O_`3zn8E1h6JqfXOzws;2kS1ZFA>>>n(?kNA5-d=Dma@2Y7u4CHt6mf zAT(&$D`sQqCFTu;`A4mvCRkcPQ&p%chT7jOeiN|0`O^_R$6nBH>Q@zp_?W__#P8ch zaDYu)EVZ1W`LaGW*)D5CkiiLS(?Jx&mDF7+)HbIz89K-b7G0`)G;TRXiG8(vf?Zbc zpF9h?mFzmfbpEM~(MEDhLCav+;gB4GcJ3-C_`4)@Q%DI`n2%%?}ZFl%s2{_4T zGfhR1#?E$_1dza2ITm(4yi*Ksb;tLYPec@-=K@{4gvs3)10TyL6Qw-q{9D{Pb!Ow= zpAs$0W)M&zny5ov9{W<&Cy3A8{5p@Ho>2iY@&tymgXFYjZfF3jrO;A#Ann03H{C%D zAo~Ml;+r4g`z^#tc#tjBJ4h%HS_(IqM_^h=cG^8r3J3D=c2d2}yo&SzbjTSZ3cVcE zkWX4Y;r{Bi8H34?QxU6R6_n!o0{jv^Y5vej$Yw2-_z_%?skBgP#lBNPZKI={VzoWs z?ku%RwDl{3UOnk0 zvaNStpQ_Q9>+JWk2ynLhU3nrDDBn!X7%+^4GFThGHHF~0c*bMp8b!$_m}xEO@Xuxu zJ)%QgU^uih%khZT1!x5=m9jqBd}B(4ol;(VvXHjWm$KZ|fpRrp0**_U1963*;1%{dn+vV&CWzb)}h`cBPm4(4{jDl7ZR=e}R1GvNffsK^4iKYYqYOh6(b>LQ)A&->SC{JXQG|-MRo=206t-Q zVOXMwOx;htc*fk#$jq=cf(|+!09N~M!*d;vuiFbOR!qQ8RaO;D%fm#2)Kj*!=nOb1 z?JJeKc9A-aVMb>u9wv;65wP&sL(KO4-4_w%%Ef&8%}eG*k9Jd*Xe^E7Mrh?T4fjSh z_ss2jOl$4(=158wGgnaJBg0`uQ1Vaz1gCz3qaWt--3wlJgHJO|RxqQhImw<^K86nU z3{g|FKQxRg43|77cIG0IE>B?VS+nn&3~^H@&gYTv>K});kG~)QAqXH4AV?7sBP4@a zC1{_c;7GdwU0%uHyGhgHS$NA>o2w{R!mF37?~t{V6l=pK9L9T=P~m5H??ZBSVafIq zqB14Wsj%~4Vzqu@Z~ev^R?Orw-+1sYVn_>ax9RdIC%exYBr;a)58Ck(GxxmQiN6b3 zB>}$Q1_}piVeSb6^}S#NNOh#74t)+%u|EB)lISYy*jmJr;f&BRe3y6HarqSI?xT z+i$AxxDc0%hA)MQqce3&XWH1;A>k8@toP!k9R!?Iz@`eK1Ct71ntl6g*zSKhxkBG% zMCA-Dj18UsZ++MQNG*PP{~2nBvZ-p4IFP@MeC=1AfzdDQ;oroj6LJC;958#bJZ-B> zoLnzF3w^4@9u+6P0RhmSk4}e!3{g!S-N&b`#~WF!7ctoYe>?eFl6=)*-63ZTAPjFt zn~|2$8I&k*_{ixpXldbW%LaJHLNkjQy}x1hPx4O_>MWt-#Z|^les6f2Ttk^+4MrNOq6?y-aa3L= zKwqY`9jUPj9n8g_Xx09XcQ>tz1@udm9`Sf+cptqYQ{GQ z$3jwMU&NTpS8rygAFWh-nAP3B(MAO_I7M%+E<$pv%<)}(*+O$lmqMSoB z$Nf=;GV4^UVm%2K!XW5`8>G-k zf`Rnbk-Xy=^0>4wxSHOL8RE9|0eKb)@9ER(U+9?mgWZI-KIFYK*@E2bOE8`dd? z9%XB`dd5k0zNsUvlIpawx!o*wlKBArIjP6C@))9klWGrO=>N}s8QI^#S;*J{a7O=S z<^OSBMCVyiD7#+fRY3hku`eE!pSeiZ8J(G$|YLfQy zkN2Xt3)+|ig8tD)^IgXAc`Fp3ulF+~zCWmtC%x0aOk*xqTPsD925JAy&qI?w^3=4r zBWPTWL`h?v207U8!`#+G(qFUHaBlOe4j;y!kuzOSVHuRjO%|1MtqS;x8sk&<%TyQ% zEza%u>I@5@FlZ9@#RQA+TYy|``sm%0?nyT}n(%@tT*nA}b&r<%TkhAk+?{F2v?sci z_dCo;g@x-?9eJtgL>9GeuJcBO$DtTnohb0L)$xVsB0O~1ek0NL67^F3k^k%_1?oWX z2A_6XGO3$_x7B<&6O<73b{bv?E8e9&%WlrqJ0rBc>(L`v%vIa#F3eUQ8WWb%HVHRw z1C{HMu1pMO7iU?HSrS_^q{E**TK`tjVyPZsTynU)Os!^rjGK?Fu;}hRtK|9cIoqsG zCZZ~5YnTI%-px_(scy7NGR5v?qoLd)PVV-JopdnY95?Qb!cu#t^TcRoAk4?gXI$$6 z9|BnTR7JW(&O7+yEV00RQ!ie@;!9f1}u->EEP-oItj@(?*`2tNhKuPS?6lSkg zx>Jg1)7?`~=`vkg6v$Qae8iDwniCW9#%UZ*ZfKAp-_`#Ku{p-}B$tSHy|^PssXRcr z!fRX{)fTJBX2gQ#Ii`l9sm$F>A#Ekgm7w4RX`iDCFc6B(sNRtP<1&TWitNWia@>2i zIyQ3e+D(LrqX=0c6TMw4^%~OX%ntNa#TGjo_D*q%M$7O6X1OP$Qrm|5IRVCM78za} zyld3r-=ZD9{ig`HbZz`<07c;PSAEc5R+s-Y8h?raAcvDNc68J?{U1$SX2SFzP26zz zJXjKKd7*eO9vF~7Q~OLKdALd#Cti=^{@Do9zSB_T$!sQP;0vHIs$#M8}9?rObejwiEozaaA2Os#D1T3bgt^%89>?Y5gGH%wE^ zKpv!^aeSV^%!h$hk?$9%Y?A_RVJ8Pb9s@P6xh+*inVB%Itazmde8SkLvxciWzcCElW*JYkaL-RC=uQ1XpL)P*CqP znmY6^)Jz5)Bu(BgjWwM;e>vfP^v{_zM-kV3QVA@UpA6)L-|0~j3oDJZkc%cOIe`=H z*3nC#Xrm*TP=|w7QG^-_qRR+mqigrH&@TruAm1B)Pe~B0snYwR=(LWuNjOYCc|Yse z3y)B0z92$0#?R!43?q+BP<_I(F%$Ke;sbRf5{6|>&v_I1R`Y=omVC0rM^IbsD{u}U z=I`T|&a$y(`nt>M;X}Wn#wN@Iap6|t9s1#~&|kTa4BWZKe}%9nz)LeDGyug?pjz-u zuz$khQ5>0@N;$z3*7^L*vyfV*|BxU{S6Fs75g#thTiD(2gpwMAu9k#L9F?z%&Kz&R zs6IFWbb0VdSnx3Ur0oo?iiv1{o3}12u5)_&S>Y z2gfs2H2*B~eUScul`a}wnu{<13uH_s1}$q;CQlPAQ?o&Yp7BVRhMnJ`7cwQ)uAJt5 z`F1@hrgN$xD4(?0)nNI&cXchN_L!QAj2fGAZ=BsZ{ruqC<^7O4uKW4%0NO)8!72=@ zg+7zIKUx0@ve{;$-n6W(x2dwq3?`iTRA778)k(B7U^YtWZis9FaM(p(U3IQD(!}f? zj1~7YqPOk993W3=(2}cnLKUtLQZDkup!@PQPU--8V)aZIncby^cREtSGRQyLGmXod zi`ue|#pEV(OZnnQ5-ZENxLg`36Eo93x^Y*EcL|ejik~c=(u1T4r{!#3KG+>Y1kb%7 zEs*^>!yH(<)oF~=Po~x+IrrUVOXVL{`tqHVYQx$JdB->Wn8pPIKRURFTdMxEq-loDZG+U2{FARN^z95B&ojl3u7k& zWM%+D{=(Sl_WVO52)Ez?0a>&Nwh$-jFQ0d~2ssOWI8}i;0l#y^EOG&qpO?ia=hw{q zQ`y5FtLQa745BypHnkwUt`w~zMvQ93neo>XAuQlqoc*!Q;MxF~*{{<9+4MOJif?s^ zMA)n1)$GU0Bsx;|7n(9$B`l5D^T)X_JNulOmPdA&ytij#vuBD|(r{X5nlc4TJgspi zVGrAg2|O?1tNLU%tm!^lwmw!*2)5DBD6|ILboVW;1h(=8MuARb`Z+`OtNnmr!zM9 zujGYVct@qdSa{%s4iYSs3wP4 z860Cp9qlI50}1Fokp4yS)yH30$N{8yVSzT%n%bIhXw$YiZrkhT(XeNmG&ly3$rVpD z<0jz^=?r51D_g#K!SrM$psnJ&0oWjo{`hphFU$t?9WTDQmev^BBR1LNOuLt8iQY3D zi@>i1V(TnITxYm3hce(OWNuhm3IV&yf1nK)j*x%L!iv9!a;`1ZZ>BIH~ycG9&^TJZ?`jv{;! zm8)>IpjxY*CqWQBPc*A`rj-28wtBS_xuj6&w?}{WkIO2_gNqZsu?7<#lkfQ#956MI z#3$fnKz;lZ>9ZVZ$%+hU77YRH-~YK`r2hW}HqOS5|2ni*Dr+ku>LdH0<|=Opj*rRR z5;<=w&((2H;v!{&9;epb@u z)H53kZLcrW^paRiPFAC_^9*wA9$Z>x^OSn?h@g1V;iHdjh? zuGmaO;+zn26aErj_+wlX3|N}|<5ttq3ng}3+)m#6B1LB3KJH*$IAEFZ>d&?I<7j0i53_Ee7#nhYZKlVJQT4=di+sPtKT~B? zQ~+9DyNkAcnEaX1Dw(I9{DtO zZR&*z5`O@Rrg7psu^h(8S+1|e{pvX&%VxOHYe=xF0_$C5BZ9+~=4*IMvcsjQ1>;#3 zz=#7nGmj!c0Kdc`kvVCVHvX`NY2nr-tf|-xsuaV@h-vqqTYWJY0|yR3oB8~8Z|W~L zR{ztKDj8ebSpk^xe_3)>bJqnWbRR*e(}GeIP#_WO)iqg+IsbEc>+upIdKze@vAiNC zbIcK=F=9mxSAu^jwuRDQ zc+zCKIWCj56l*+W2z+{~iR`EY{P6Ir!8!$$O#4eTxx~0r%cWL!6^Sc35w?YSntWYa z#jxWkFX}`WX>Mt-Ny$aqFJUqV7q>7cQkP$pX;+DhZbPfGF%^~+lbH74X@|&U0x|K% z?L}8uv6I@V6^M(84F)wZ%I3l48TpB@@N=Xt-S?r~#8PcmCEul&QIwa~>n)rr~@%YdQz2moq2=gMVQ-}TM?(PjB2Tc)H?~pp_*(hon2vfC}jm@>AKN6 z?&f^1`qU{0vs*;`s#EtusZnL8q=$Sm&CAx&7vp4Y9rf&%W#g@1yUsK;b3Xnp8ATc8 z-pc93jLM|t>L90T;T9FYEh|E)fPu$&=)g`SyRg|@Cr-#TgTInZ=;%`ppFq%)J!{jC zPfVp(&4blX95t#0Zwk4pNLePa3X@gTG1`<`It(cgIc}8H8#z1TC z2XH4{yM+!DasP5#xKkT5#E3cMR=HLi&Ho`r6hlgRJGK5|0~K-zM7gX2ROiqgOT9;Q zcMo)``gB6Z@xzJcgHw)9UR+3iBoIq{6|>;}7G!Y3)@qI8rpXSs%zS*`Sbc`wJF&Ai znR%$_Oo|Q%QuDwh{dSMQqE<@A`?)3$(UnYf8@>dqxwNtaDY*uz@_v$IkRrZ%W}50_ z9iTB{5s>8TW(NBv<1n$NR~chUs6z|h^5G`GIKF+P3A?cxWNVdixtcRlcie4h^1xV+ zQLJXMu8nQGR!tvn+r91v_tWL`Q&GnGt`|e%)by2yDZzX0&fY9I-h)@1P({BzR1AZe zh|+)|3!Z>MErLvhx=)c%g((!D)PH!Muy2LH0M{f;ZA6ciQg|aq5&_PzSln0o%D~bd z!EuJffVWK~bY*hsp{_B2P>_9Khd#g*gL|0YWM&wD6n~H(A{XWzTInkYH1k(6bZp}s zCUGWubR%?VNVSlC;H7>e`T@O^UMXN!d@4O8QS=UKJ*J;ly-?6P`qyQCmF%Q?SUO1L zfX!sw{xe|QVF;iLHzEFSvXCbO>5D7i5dzUd#-^l&Ia&AVr=MXK69$6?v(zf;?Yhdp zN+Vt5f*L)`>NcxsCrevg4c;tnt0Jp!I$MzgnG zF3Y}w2`PVy_`1xo(YNGQ5GvON^7;mTjFi{(LxZf5*5X@f=|XTxW{ykP8jHnpe_S|& zms-y$cU8;2qI*Weur8_{Ma-^UfdjNIvK;~3rp~7ubT*nDZ%jX}GegWK>u+Zu)!Wdu zeK{!h^kGt0FWQ(;o{uuWarcGofwrx5wQa8O=3{%2j$v7afp(D&rtoH;@z3_BkU0fG zw=D{Y#A<)hp8nnKSr-)LT}`uggb$ELw%H{t+G zGHCY#2)91Fh}*t-O6Ika%vvF4Iyf#Ebbs?6Ed=A<7tpmkeVy4C$aX#Tghhr+o4|hpycT3K91nBV@?;4~x)WScs?s7{N6Dx`5C8-#erK z0c=5Mb1NfbhyUPq;s4kVLj52a|87P_IcHH@7#Kw|pn)<^mbK6T-uQ#xjKU^fsx8He zzFmLp+YHB zfR&_-#sZVMb?f@&sSjAakJUOdjI^+>#H)i--Jla#Wv?J+VNe@Z`*R`ESWAl3;56Y(ev^ zhw!SGE=AWYUQPteBJ(3%4UBvvOcV1it-Ods_f4w)nb83StO9oxIxLZXUWeI=5_@=V zbA-6cB7XybOF#Sl<5%=|YWrOw8=-t$4r%e}U)&ax$3yZBaOyq}2wKl_z zGvc*I`=p$?bsREJvZmXkZRKCos|``*&*v_2wye^R3-en+*ET73cD_#beI_dq#av}j zhhA8RJGke2v0Cdw8f{Hb7lN7>J-k4;ty5R9gV`oeahgo?KT}ht53)rWxEAkaW`wklS*@T7H4NCw zLM<2Zz>`lJ5RgGGVHJ@SA|jBN<;lQy=gBB#`p!8e4#7!ed={zN!9j8wsRU=5aV=W* zCF&U89_*xDuKq6i+r2rA*CW*v(XO}G(L1*+%W1B?8rRV8ji(qGWE}&=*Flis>!5Es z#E}B(5#7Q|-?sWU@%4tkZ4G7O?}Wi=4PD^tt$!N|K*@UPX>Y*;J%8!p5(fj)3X=|# z(BKxhS+W06+rHoOj^L2ZUNup^9?jKLE{Ee|9FrGXqpPk>gC;;(*z z6#oTTY;BwzY_0x%LCOS}b<30^ga@$@X+q z*W{Pc&^>GR8QAvYxxr*}mQ8mJq^$X5$$~iJl0cof>27NxrBI7SHz7d9<)skA^Cv!# zCQV{)LShJPnyE>|DIzpHR`@ z1saF|gOK)imIOl|7gXzrfP%;$0r$HCF+C|kv?Vt= z;>*(s@Q{1UQ~+r%9uju}2{b-YoM55vaGqveY+harF9S5eR+=aRroy+h)O<<-<C|^n(zJtRWC5LAjC_H-Ww(ROSJ1SPWPjIc2aD@ zo_kw2J+EKh&opq@Vl?dTEucDO%u*bZ^1p>vFUNV~Q$w3aHJ?nH3C(-XxPm@hK2GiDfzsxfLCwhS2rK-7;nS}7a^Gw3_KPr%JKFSkB(i(p3`gZ&#!lAe(+h2c26J-M5K{V(LzGPi%Q<%-#HTZW-?Un)g)(~ zoMn_9u+!A44xQDdC`}$5oP{KQF}01-9xvditLl)qCsdC=-)acZNUbf@)w5L}5AS=( zF3w>CuWD&%OxjqEZWd%LGldf$H^wp}=|WDLk6KCUOp-(VN+F4(^;~Kg%pJxJqrz)K z*~i^X%stsCXDV7wqHyJtPnA4kT_&!Rb968Nbyiz)!PC4&b~m?*Y`CV8B;;%Su)i`A z*pOo;DLX|yntuLmHE-;DDpR#jUI;GFc$HLMdRf&aId_`7*8c9UeWn-`99;|+w+6>O zjS9mXeMkRcv3#5O>2qu`;8}GoPE%;@ODRLpl z?nX23cEA^XoMe^1FN)Nu)gEcnrs0QUe;6m5)`@dI?xXtJaGxI*w=in38oEs&91(RO zXv01Mlp!$Z$|Wmq4gFYOi=QkvVyGwe4lOC@MnBRERmx-$veW!N?8{YkK=SY6%;eNu zWqu+S4A2m;F=2MIZyP8vyRXp6Pgq_4ZotzBUQ~MoSttlJc3?d-gw-mWjEjr2m?#k` zr~%O+6W9hecyT*GS)AR3@J@62h8xeo)n?~#4Bau;xEhlSEA7J3OIN|19AZ7+uZXRS zE*Taj9)QuQL2!a8|&(!J1~qzJ90s;4jd_ff`C!u@7!X+jpp184vA0d`HYaZ5(HWoMt0cnD2!W&HFN!AHq)EXPJc7rPHKFQ? zK>t~`?Zk#9JO)(I?O&g%{(A*ExZ61y8~tyV1K=tEtihlUf0~Lw7Dif2+fh0yvgPbh zc47oMNc9!m8?p zFLiJowrLBto-+@1!DTmPi7@P1O#lA3T9zNyAk z*>tExO-4w{9SI$gHx@RY7z9NmEHeTxJs>UG#10uE+#rYV;QWy*!iXFW8XFKE&HSS zGlvBw*-k{{ixed>Jwa7zO22chBt&fmVJMbhMQ~h?41o=WT8}kYgqorqhI){dIRPVN zyc(LIA-EL>O0+T~ou57~)BShW7xjtIz=8nq`DVdlIJ0Ik715X02c$4q!8JJIwuWd| z_|M=0f{Xn*ihJBkNXNQ>6jRv;`ICp`;ug9kcsL{)w_2q4bHBXbc4Fh+qL=%j>JNsu zLZreEK=r~J3+Riy1fNh2J3PR1-{5}QFZO@OW##J;6m*t22u_?0uO<9C<97Rr<^^6gljW7IAMIj^0^!8OfeexBtqHgYdl&`-FlswHGSu7?4MQHEBB$ zmWvM1Y9@jDGAE(7kQ3M~Hpm=vTL0FP75uh)Za7T6#)*J3m$FTXTog$IA)qSXSK6^F zjqBjN@Zd~$HTMvlzplQPiOMxx<0wjNd`J>_0ww~HURqy%Cb}fSkr3@tL7^qEMt$;} zng^OFo$I~a5VoX`n{=kR%=WvWaQ)e6tuC^|rcmV;v{+rJK~S5wj4TpG>iNK; z*2=WG?j_g|L&CcsSE}g9bg1Nqfvj$0qzGlPT0H#C(UL_H{Y+rIa|u?l(VA8Po9&j{ zch-S|ubmRip&fCK^&TagSsCr-xCQ6Gi94rG6nO2UN$*oMnv~R}=2j#%V{nL6`QGD( zHj4N2RpXsN2jfqy} zTdsn)?xmhX9V8!d9GxVS`^zPX3$-FB-slPl!rw(gcd12{otT8t+jdj|*2TdLD48t< zgnlvZuMqw0{l+Maq)H_%V|G!yoc%DtO5pu1gLdiq@w>47$tA#^by3oRv(4x@A;G@8q=0^3~$f^7hu87jjAUb!*-(ULQRm4nro=`h|aF{ zxXF3!sY~{kwAfEr#Siujj-q9I?cELRDCIDUi5mW6^L^GzDX2EZ@eOu6InXcW;xbDI zZDxmzYmM8r=O&)TxvxLYRO||Wymp=OZqj=UI%oG5!)!=Zwdd!$4LLvV)wg+u!A^>u zE%3fDDSPo%4!&;)qnv4UM4h1|k;|w7RSBvwk`Yr)jkQ1N<7trUh;$_l3}=h*jDodA zd9h8A>f};&#kdV^|18-f09!N(`}}8z$$B`9jtTH2HTPFDnLS@T1{E$ejU}rI4lH*<s`=O5e*rZ4MMn?+cNvae2Q-?m-lGK3BIJLznek{J-opFsjlVGFQ2(6jC0(y%8^ zqUea?Uca=XU0TY*ENpO1T84eXI(F-Lkf7In2CO}T#fj>7@1J`E6srLlq-^3gX!pwe z4kG>Jv}Ww2QNco(utWvB;C-0UdwI}En4+-@^q@k)6y|et6K3c`B<8eY@WUwPRb}iE zSd^sK`OJ=#QxbAwqG_6x22TQm#5QFqeR7lxJ}UOOs|a2pmUCLB;B+l0vOVnfKZNcT zUAx$RRSO*`IMZ_%oZt$A&vTkK*s(PRc}AQ*su{QiF>}D7^Wv*yZ1vGqBd`?pU&+70 zK-uOvzdy5mdU-%Si<}VG<0uCxVN@awi4ExLuRQrZ71c(WVco>vz&@j*vaJ?P8!k*f z;%qVB2sRA8*#K;*wtC}Or;?&;QEfiW3rbqzipp%clu%4UI3>%e-B+GaptKLgx9`2! z-f2*v=ORAT{H(B$3Q--vO6#I(m9P{G?ZicCkelqp<~(2ZF~DA}rIWtXY`_)VVEo}i zgIRi)m;sCh$zNO5zeLpjDM@)L2>}N~GjkW?{}kuH)I}vAdu&}4-Y3x7C=ep{sF0YM z#T`hU)!8h)0Rn=Cl-L=cpP-OMCJo_MS%FXrmtg*-_!^3HeitNF!m4PZVKmw6B<7dV z6*W?$->->-fQN^}*3Hh%&iU=nw;M7)2yV%}d}2VTL1}7UPC4SYj zxk}aY2?{CpT+bmx%bzs$V>n0D?n_75wi;PQm8t&i=ID|y%c3NI}cBwS*NGA@m!=fLOQ;!>cXh}rdf`& zd!aEKe54+xUZ8HD;2t}qD8JiqlB=fAcE>^#)ta8DZf6-T!Fma{t?%gCl|Cp|MJ0u- zvSiA{E{YkN;C7+$2?ZB_wMr($51xKgsX`Qu8B#EpR{6jSX*NmzjKbo=Hg!wPzN^1D z3LQEijFoa6JXHxm6Ui)fdG8vp&+Ag5&W2u~+_uIu%sJwA-q6ixpqgvRDuOUC_u7=^ zY8>OdYvHUNO~=Zw1tCKu(`Ni?1U>e|KLmk6W}FdkuQ3$D7;Kc0+dqw`P0E>|xwLG} zD#5Tg@#cH{V}WcjK!bO!-{J}Ff{4kACxf79d{P8KR2l7KFuD#7QJU3` zjH9DbxCiuwJHU{Tw0oAaMI5QS2UxPIJ5qt<`!b|Z%B*mACW z%T)XEd%ye1mc8K_k81|OA%>YwA#5Ree56k#U))&IXE$+Nf>tu(?BbYcDX;kZ&K8NJ z5aLY|ImAlEHB0g}s)MH31s%d>AukiCch8YT@hRpTJySR|NzWEF3xk`Mg`V)G9tRL9 z8S1w|JgRVh7Ra}y5nHs%q@@9irXP4dXz<7y5j8OL#j~!;MEvGxd|f@A+jf9Z2$!4A zonf%g%pI}5-F9;B$F-hjfv?knnlGPw5%@uh$blgWZjc&D86AUOTR@};dcnZb**zJX zgYWR?=$*4PE98|O@um&OEsv0^G{gq$G&&@_U70Je5BK}?deeF}WWDxWKc1)nq$dx_#V91nCFa2hy+B3v|p)Y-@+9)<>W1)@_c*rfnZD_OG!6Ji&h0a-J?B zyBlf7nl|CUn|3tAMed#Qdf;d>uK67EV)koQEp65*A14Yv)65$%%Xrp!2lEeAiu$2k zhj~e^uvYu6xvCrSrKc!drPfAxq|H|S6erK|twPep6Y!QXGV4|9%n(eoxcgFiDOPZ! zY16RMa*pYpm$p2-gTxBiAygZ*ny*QgIBCGbK;FQ_K*wNO@H2Efg#AiK-7*@+DVKhnr7?PS8PTr%O|T;Y zE?@^}W>r)rz9+c)qL&4G4P~p*Eh@*{Mr<%Uo@574KUr70r=u9@##4FT<(DPfv=`p6 zn%6R45}6o%xr!&5K`aufCreyIYJhxqZ*Rp3hQyGDk>{%n z*Gb$LA^z1z?hWrgm5Qp9DW38CEI}zy!Sc*9rK)Y+TAq$p{GjKc?S8z`cg3fX<^@ z2v#sN$0&}Zt1qBRE!D5YPlcGEFdW=fc`kX@Q$F*#t$I;pjv@ffzVMjk>_h1=WbiCh4L< zy3|-m>8_4LV{`0e%kG6Iw1DwgOltlt&bSchU^{E8n7hd2zz-KUx)H1$CC zSusyruEEn?Y&cW45FSNx$;-fc3&L3HihK>7-z->po((01S_EWQwOeSr6?ny4r#YQ^@8D%s)e@A21%gew#`nK zt-JN~F+(xgZ1f_rdC(sg?TAqisHHgf#|%?*lbA_a#7BO~yeztEM|~+ov_x5ys;_5d z1NTSagj5)$VSc&*(vngMkj-mGj2Ml$yDp+#s;FI2Ou1~yuqrL%G zexE?LC|%gT{)Ld=za8Xkv6=jKUS=(J?DzzomaVZ81kXI65vRjWz&<%Bzdq*Gr_~bR z{N6j>&&g~h@ZMk|Urmu!8oh8h=L!}~qenI=T@~;d88lCmiQZ=9{^9gY`nBSaVLYE7 zMY|Pp@032DL)8D!J+1s?R3VXWLghd9AI7^Z7f*nKvi$2^@n5zI<>de$2XmMIWi|nw zqAHdMvQKa!AjYjwqGFV@cbJ!K63PAy;yMz=uq=s`nM$(`WYJEES_B)WzZ#1{) zV!RU$REGm>-7bLC@9<{oQcy_3;e=vz)$}sc{V0{|acb)0b^8k77S(^*I}TlYU_{%) z5)8!@ZTFTA9ogm~-9Gj_XBAAKvj(XV1y$bGzJE6dyls3^-AuI$>SUt=VXaLi=_Ohq`@(qe`y@DULF~&3J^( zMdoF5M=A0PwHX7^W|1}AMnGavyCM8Q8t3K$^$zil2HR9QU(IG)QAF%XF=P>m>6s;&qqfQX()p*G) zH+-MV`B&?Aq;1GY&p3RaK7=qNdva$CHy-vKb(5&E)LLn0M0bYQsQu6z8JNBbpF<;qMj&!jX6p>o=h(j)%m+i!YexM|Rq7ox3yzVe(;6cvyLk1#Gg&^XV zA6j-x&Z*Z$;WgjK4~C~Ph7Q+2`4gtRoA8N4Uxs z9-ZysnU7y%TcvtYyRbCwdq^j(z`_{XJ~i=mwkEh)1A3cBu zP`ik!plDzwB?A&}5ca;-W3mbAf`D57$Wz=+@JYy13>2L)|0@dZgIvz^N!-9F4*Sty z%XQ2BXg@X8`~B#-`^(YwN(d2fha~xIJO+?hb$Zh21~R?R_FBU^Uj;v9s$`K&KO@b4 z(+9PFVwr5uY@{WS!|bg)P;rC5ezMH50z=#~&9D~RZ$_{=Ns>*%J98mdgHHJ2k=Po_ zXp=)HAfLH-ODvBmbIr9!bn{^esa2Bpx>ZS9{-SSH;*Mp;xA$=#a!e{#K)o;*VW<>l zNeB|ikZrjr2FCds1sONR9GwR#O(Z)Lxa1cJVM_*!)CaA3vD&PJmM)89Jmcml#W`XP z;Vfujg{nt;DpOOImS8+W%Bz7eEr#vP{+F>0A1!6gZgOn_p$WOi+ep?FKCZJ)Yrc^hw509rwGuydv=ppSURoRG zQDb2U8ayp|4_xIf@54`LX^D=AD{AIe3M*W_a?P0^ei=&2Do6l|=WF=-N2La=qGWfx z>oB&l5uTpwt|kMSwjnP1Es3gLHbXntZ;X4V>aYil!^QWf2R_V;Rz`a$fI>plW4&-)BQBi;E#!vK z^Nhk1Bj~|mL+~ApQ$&5u>KMEeqp|i9LkeD_wz{<~)cfdF*B6$-!T?jsslBfe>C~ud z18USS2z`hV>=Cvkpw|I`_FmJ3y?d+??TG$wr~@>|4Vw)b--^EoAz@+qL2nDFfaR zisF*;HG~Q?T-1z+O5CyVLvp~uHmmNLdBNn!J3%2~bCdmAnq;-b^I~jyKtLpOWlnf` z^GatU?zVx$79-sQfZ)46LthWjIUPL%DcQ2R2Vbuy8rXHSR3sXoWYm_FsZ%bY$R zawNYMK$c)t7ONaV9$<0HDr;a;xJEu;KHfHJWFaU~sAk+{y~Acuy?#LjHZ7{6+Ylxw zW6hkATS2Y2`)oVCiH3!SY%kQqRItfg36&tVEdBu1(E5R3QXJe`7ojzMZ$kjg+voMo z+h3OUAoK-JrM>s9WvTzI#*#O>oM&RS>KVJrX~KSutjeV;44*|_^N6^b9??c{)T6Uv zu~xlbBcTQxoxw=#dj;Cah*r1&wi@+Cpnk?9c+UKC}Hx@jczj@?{2! z#}G%l&rSaadCcRXm?hM1&y(Gi_x5A!^gG6f=O5A+vBsahmjFJIQAT}-zDaMb$TOgS z_4R>i{dp6%JnNO&(3V|am8B{KqBv~8{lhm+pW;3$$qO7UN5xsa`!(4HBV@YaU zc2=T5af(X4sHvj+0N&%XB~8Ps^(gFnwF7v(w;W3yY{*E_imN`o*aj^wC$#8vRa$4JkMq8fEIs{4LH0fN^QNm(; zAsV?zNR7U)RdG=$A93~P(di`V#8W^C`Ts@PIYno-Zd<#ORBSt`*tTukwr$&H#kOs; zV%xT@KWp!Oe(!b8x%k?5HCvlEbG&1WxA&(D(6}rYxdWxly1{Q`ulJGsPCg*HUDiX-q_np;nVMJ84vxDJyT_8yCXTUNOyarm|{~ zVz?dH;tl+XvqD?5uI3+cQr)vxau{=*I6@*hX0OD%1G{++9TvkWcJ&4Xd1`3>MIs4v{cUdzA8}hH}!hwe2>kEtL9L zDya`t0fa(7YkLM{NOfy><1adZ6k6jcdt&g?I3JvH{Rvf`{&Khs+2SS0JVc{^b2ZP(fNJtQsUG^$-UW zFGLp5&%kaK&n5mEra4?)%L{#K{?1h75*yjw=jdDoVg;%I9T)*EiG1ej`mF#qan|bJ z!@yaPdsitkaKk;s!Fl%sXX}DBfCXk_7Pov`UhjX+*6p?n_sYjsDS~2~McrSDb%smS z;ag4G`Ze#XnD``Dws%6^ymp_zYFmEc5?u!y3sdWPfEJXv2MT~jdjLv_1>o&#VYMwb zOPPRptK&KiPP%IzbHsn-2Ds$GS?!WVvn~Gi0%J7}b`k`FKi^40K{B1E2(4Vergj(mua=@yw;jIsyF{@3ZHf5LcF^`VHpVi>vNjG5 z-^SkW8=`-yj+C@qFqDusnq#3PN#YBl8jETh(vqPX&<4#DR>i-=Y!js6NX6en5mUG4 zM%p+Q!u@yPmgW?AE)#>Hbka*@j(d2GCTv+v2 zO;0NIPpGyL*X)&Yy3}^I;=%95g*QVp{$WdV$21Rmi28VO2xH=Y-Xf7XR zURVf-G*=T=YMyO0HyEqYItZz&y-16eGQ##{zek0UcWX9YT?h&`Q;Nh06Sk)n%v5J; z-C;bxwN|TcPmY^Ed$gp_Try_ZVkNHj_)$Xh?6AKd+3e}hoZN-nVXSf;zPOkY4 z2gxUC90jT)PM)>s!WfUuO?RExMAw>(yv?ZVwAPchh;X*rJ%PU8j21Xsxt=pXVqi@K zTB2=efE3{As7&n>np*vo%_UwQhHDnSp4Nmv(2e zBAnsoY80w=Y0KhrmFUXSV*gt$&^c#VU(>x>fS%3r{TpKa4|7)cT+ZhS?|qVWa+}_$ z1VyZ0I-m0k)engKsyk4FUvZ7ae8EARkL-0YhODpj6A~@{df?SNT;PD#VrU|~eQ^E= z+P!ZG!Z&__EUoB$R^SAwdz;wSm$$T3c>ciF^m-jpg|zarEv+>AAY=H3oJjD)!}tiY zt!g{MdxwbdEN;|cp!grn72&R+Z17k3Gzfgjc&T>e_sTJbSXa&KRHw@QIsOU_(J-j} zEur;>=un@^25I`GBwfO_%ZNI~tm}xwrm}BYG7!@Yf;djXp%6km_@Z>znd^Nj_8nml zCa#2E!6H2UZ*UlB@iA`|tFrcrgKVY()b8#DU6Mi0~338go3hagW zKDqn)QQO7?A#(LNFrEMnACI!&?qa;pX5sX|gU=0iKHe*NE>n4p(0Jk27yc;TZb9jK z%zgfc?<%xUo_6WGY_$LFDuVj&#kLCHBZ#HZ_vZS4rK2Pz{)09&{N>WaE{=Vg(O=vO z+MJYk)-z${FM*;31wJVhPt-wq0MpJ}E{pPz{yZ7u8x|mhkZ<$&Ewkcmt_fl70T^xN zYVQ6z`O3<=f6Bh%`7u!2yRDFKMsrCIRZO{NKUgG3N*fryF14n#R3o)HseSa+dScxM zm7jPqe~UiMs5w@Po+n*ca+H~7<;@sXrm@>5*SPm;?99<+lrG&nlJZO)mI=}CXv1vP z-Z2vP`*fl~i+228xbEF6%A?7H^K5W2ok93wGBxQoE35HbKWt8J?lG&Mb_@HXrmmr? zd!M-)t!9t0y7lcwyds z@q9K!iK*TO3(bABCc@pLApV0glgY!1_n=fHI0~QubvOp10EEmC&mLm6G=~;?*{|^csMPp;LkgJ$`LdH#lX}^Ow~j>>e+Nzp=rTsBgySt z$!h}i<{H7h&vi0e$+<~ZFNfe`8R8C#TfXw_s^j0fu7_R;BZ!p_>WDH8snvds1Ql5L zI2O80*T8yIhfk04A)=l^&%mR50nwTSZ23;|Z$Tp_k)}NGr53|r&2Xb;BC0m{Y9>xH z!@uGxo1)uxP5@U~2&JuchCe1R4x%X zuM<#KqWM42d_jujFnmGcg8YB%&Mc#PwLpE4o&ny!!%G4ISo9t(WbEjv!n*0k{wb3L+*#b~j*9)yLGAI2WtsWvT<3kW@2D13EmseWSDX z0nA3APT)jc58{I|UE=9^kBmxayNMfp9sLRU0siNM&N^ujEd2pqoq*L~{hj+legN1! z(?yK{le-bT?4u9uf@WFQT=K--Izs2KR_GEel57Ov#}Bmcy7rf8`~OdF{Pj0A?OQTx zV{32oHyk$J|H9J(e@RbmWbJMK9oH(!;(KBHEk#Y2r=Mn>6Om5(JH2N>Tg$vwrI8 z_sWV`-TT86t`Fe!4TAu#08hVNFd`HzLxv%mu4~{9Qhz>F3?1jBZQ2faFbR5={qjGq<0S`FX2a0a(9lKQ9{Xls@T46b*d*nCRhqP4 zN`-mj@$4_1dQA_Z{#^OOORcb|(;N7?$+b0Lf+~>-RmMLmTwTq&#un*H)pe@nsVC0# zbJE648J1+#YZNCwH=Z}sRWi2>tf;M*9B$69CSD|Ge~+|wI&&f3>|ETZ z#l?>d6ti$_B=(Yqn)^a=bNI!AMS{^0oHX|Q`@nGt_;dJ(_#r~kp;*Yjk=Q8ghh#p> zdC@vKeEm6;c706)KkL3Jo+w5v39{iOswU3VC*a2q2jp zM`qf+kD`BU_zd5yr4x%{^2-SuyFa#jOnPsznM?tG>{Vy`;NeSei8OHKwd1eC&uqYN zAkK8cZ=lY6z+Xg~stCdgHgM!|!E>R_2*7h;$(abg;h%;b$A!|v*ZM9xI%k5B{(x}h zCCE5i1~<-(t=$jis0^H^b5Le5j*7yLs7$6zu7!_QJIIig2ct3=YiyEa2t{}L^BtfdM&;fg z(&C_fORHkb1WdcmsACwCV7Ue4)Fhe;Me+5f{+G%Zj;KgXZap#lgAF0T$Tt z<{5i-I_H`T5YNbx8r$*Fc2K<$nD692j%h*#>q#c`XCT04;{ ztaGxgb4!0#w*H(zwpV>K@0Gn{ZCF#dvL}%022aLo!yH;iPnk3f7VNuNv8N9WEr>O^ z(od#jV3EsPPc+$bq(&b#nRG_5MwKU(>k)w&^)4t{-57PX>`LJa!yE(@ery!pIvVFO zs$^tjk1Ll2X%cIY-AZmPgH?;cN*#nRypOrbe3;&Cj}m^Y*ptnX8osEJo?v3*V6l2y zo}+Ie`+O5}9S-iemAZB{FGP)*H6|w&ZO?Vhh|_7JU#B#gW>#BwC1;D)3G)y)eVw;R z4P&z3Lo@`j{~SRm1O%-^g0g|h@XyC)lWx-F#Fu^`)&T{!w1caXU&oaV@-o#pH~b_EP^V&pG%{(d@~fMFN2 zahYcAJe<(Lb`0M<&Y8Q1`6NRpmD-`1o|mmnrGQ1MOA@c*Z|7wT-_l&1cGf}q{;AYG zl30lPRRce2cv=l$=xQx>^5TAoe#&r&vA6GU3R{J}HH|rzzCn0BQe?jCk%`U?$WIp$ z{v1y^>8H3iU9H&+@WmKo==bo+=iqH~31ckDmS=2~f78F1pL_Ub5>`W% zDJ=QppO&GnJd$ikThxAbi5l!d-jB-M>j7z*=R`y}dUAGJ`*C}d^I7-?qndekaJ*sH{R~UO3mLR$U8CE758xYpTt4K58__JT=Frn)g32zmS^ee%4vo zl$fV=JYlS=i)P6^X5Wm=Vc+y$T)I&%Q13^zqtCS7hCGpie%E$)0P4=(obACaXm;21 zC;{*SZ3nXP%E-#^bVV&belg^dqIrI>`K!S-69Sc``;HD7g8Mrv5&wVdWcm&w(6dr7 za{R}?(Kl)QU;5L+Z^Gp_8O__;ZKb9{UPC{kq)?Ygjel0v6Q}|tlqo5NmzHq8EPcOC zOVfF7BG?aiJLb5%2R&VpA^+in<@HQjmEyLlG>!^q4>+=)Tm+%}8 z1nm`nhEu?2zY8uPBG{t=7ECIEgJlaFN|eFIH@g^x~#Y}! zy2E&})u(Qhwyqf46kMVHUNF|>c0Pels>;Ino9OknZa)`dr0oQ~mKRt|*p1TPsGu_G z1SO$UhG`tc0i}0UaEW1zZzV@8a+d(5@jfk;uDNdwj#jJwpjw1U&9JgZThF?g9#=b-3x zQD#6gJ4OS=A+l!*o2foocJCqCZ)+vTafbG`Sz@|bb-|JV7IM!KZ!6TN1fGx3hp?Gw ztM$!rZ6=JAaMkGJfKn*`TFV3uE{{7tm8d7VI)>ElmN8lXj2gj?&Ugq{>fS86vbfA2 zh|kSV#*T30f!8y*s7X-?+QpA^&~~cB)lPd3D)}UL1DI26b{QCDMEQA#rSE~=kx{>) z?l6S>9wvJjbw_Vw(KboZ%ji7Sem;tg)`V|DvO;mMA0aLlrP6&EWWmOze6Y~@TbrXq z7Y-a)0B{r8R-mWAmki*eg)m2^m)4r1CAh$U>Dtdf9q`poq}OO1{6YY@dXE4Yfg9zJ z1n>|!uqKDMH_vw}7;YF9P#!S(CncmRd~EU!&gEE3kP`aU9tHZ`vwY7IpgnzFUnD+- zz#tcZ1>mC5cxV6`^H0mM)WIUjm!_Yd43S{;_ftMARkm%886!C?0v#y34g|3QepnFu zhQEqA(ebO397!IdBpR@#N45Ac8NO}4MG3As(doJ}f7cgB5Ai{p#*Ub@JyTyLsft1Yj6s-nU zHRYg~q&?q|-Dct3-DAsSKivBl$2@ol&oJ}>@vz9bg=>A8PII_lkBODOEoJp@&DkXtn`w)ErGS9G-t)Z?RuQfZ zz;iL$=RiYzX4I{iDIb7Rpb{*-D_lU&R!6ZXi4EdK0cyn@0VUK(Mb_H7Q`qDAt9B?w z;EIfYceN0I+tvO}G{HZH+P{Y5zj|7FRyszO|EFXqX?*8)!F|FAHBpu;!6Cz&DVeVL z7iuEG(`Z5{w~E16%1~d_s@0z_UXaavqsDs#)f>WgBmT-D%4lkk%ZYCpo&5dV`)(rR z_sacIHH{8{;7wnIF^G(*Za}Wlp9U$r>|73O8_eY2k2Dp8iz35${pGZ-{Cm=6^vV$SA1aHIh-BTl|m)rzS_u+r)~IxNdgSwszSzoz}Fhj7I0eNU+~B2}*Fv z48?jL5p+Cv{tg<&uu;YUmtML97ctgynxIlhT@yS(mM)Y8PV=9Gm?XU>V=d3o;tTP= zgJ4J2l(m)XB?|5xOkg>t7N~*m*u>{|4g^8@QYXL7`s&vZvmMdeJBGr3`~#bR_T%%3 zUQUv9K4)MRB+1M=3rt6>f>JP%Y*zAEnN{W zF$>3I_aaJRIPn5G46^*b@zgZI4>GExx*&6P^fVwnvnn0h*xeW)**j?d&hqp z`^EKNIJf_gdGi1H{!-rT6^G%6JX%dv!q3rY!J}zfSCe}L9lBKm(Q2ZQ$9O3*3D&^X z#4z#joyp9^kZqDilw^_19vO|!I30<=X4{Cna@sG9e$OGGY2H5`Kc7&hP&Y82SSY~C z51UDkt!EfS8I!1>W=9n-BT`k+G$eb4a~REK#kHbrIj|I{S`bvxaz_7xvveeCQ!Fnh zT0#ncqPs~8r|3mbv2ZRV_Ou^i_DDA%C00fhmn7D}wHFnv=~Y&dr(5_Y05Mjf4NvK# z*xxTGD?~|Dtn4dL1N1HSEw5r*-Vm;VA*uj2+$)M>cLzS zkZ`U=y3!o|MaNWt1$JU#{|9r86_N#`uU)qn^4-#(Ue^JlSEN{y$d$2B-3#RmLWBu@ zU`24RQliNG9>E-@M_1%3mjca#tuaE$$1(&Q6Zj1JEjHK?$g!_6qLQ>-4F?ApWtK$kV`E$Kguwp z;6#tuCIv@FUhGeUQhZQmN>3R!RL%S;V9r4b8!$hGI^Zz-kx9@iiT%Jvd&@dw)~LgY zBh~c4yzaaRuqyr#nPYG*6io&ZKID-h*KdwsUOZk<5H0!0u|yNH9||*Gq)A*iylKfi ziAEgsY=Cls0avINzw|NSyD6M`S|rAR2!C1!uh{55?hvJCELZ>$7}!-=e2k`pwD|Xq z0R!h#4wc+bT7{D`P9#PeD+|U-jtVVVU(#QR>KBe_N8V6I?nR8p6H4U4Yy8^hEh2@sH?Ms(9QFsdD#~aO_EkKF1%LPK zjbQ}_u z@z^$cXa@!gMDyezB2+|6C;$4Az-_FJnqpj>-Yav@F( zM-XaLF8d1ZL;S*iB54^A-e3`LE~1lhAq>C$0lU7mHkN(48V59aX`;b&yTBXEhm?$f z)(;5{I$AO*4DbmY5kavhd=K)XJh|iVo45plzI(;fB&Agrr^_Tr2u7g=h^JU>aK38D zjF-??^;`HAJR)&RU&22DoY(aez=P-wHZx}}?5q$;mBES7wJlz8)y8mtSTWuZVA&<+ zy~7=;?x$0Dg;7aYk8^{W(RGO}fQ(SXlNS-}iaVy0fUwLW2sxB@bKw_IHRo6XpJ?7^ z^;#rIC3PBxfhNozkhj)B)UKF2)jPDmLc7wSy)~%`y;4+x72X3IXKmD zy{qnIRqwnfRfar;1Yl|e+@-+iw5`Xdz^b)1x`PgvF5HBCx%Ga>`=-Pl%sgz?5G6#W z;A)?3p83`O*3ofwVO)q=>oHpOxsROY+azdO-(aW%QT9eU;WS=P9+YTQ@6d+D_`aJUS(e9Y8yF+v;}{+#vz8`}HO zst8DGhqREKglSqlQU-y2Er(TUU+bUP)O2aLIijZ0s?YaAS#?!B(al3fPu?z5Ndr znbFNR2FM6drM35Z&&*CXs-yi2GdBs)^8P79Z*}dZ9cXOrILNu%GMMTUTj8v^9n?8{ zWoqd$*n^b0-TiQH4;T45&zydLnC`Sh{Hv4eE*KT3XW0-TZ02XQ^-DHWIOYNjc0Gcx@lrcLQ< z%NtJb$J+P9sl0A6f1ORO&n_&p%28(;d))ouLGCFv(tC32P+xFVt znElzRUMRWfYfs<+xo_Cj<<%`G-_!+&RaB=p`IV>FRqfJ9N&hU`SGVij7EiXQrZ;7C zcf5v2{Xyr7iA(`?HY>3VA!Rn_t*ZB$)%$>i@!zh@%}g3h<`i$D`_aKDSvnJsUu*8`+!oUoj=SF34ZnQ()ck#qmnrB z_k@vE&Jo`0W<$W^p{p75Z@m%R;=XR(l#vD zAk`&@a{i>Mwh8ahfk0<~GAXc^NVd5MRkBVILTkl64Ck~PE5&VRd4XZEyi65V9GUJS zv0Cfff2=S`ZVucl&N>j9Y1RyxJrC%EK%+iyuj?{lJJejMgX}Xn2FKS}-=aOFWVm?l zOT66d(R!p>6J<;6*~4qTZMfNvc0DY%#7kg+YR@vOXg4D1PCp{rLII&+6Ek3LPn2YH zYwlUHsueG68Q@yRSR3J)#!&Dn%3X}DSf-B9Ri?71D!@56C`vcD-L#%@iO90(sAW}4 z)ARB(#jg;}wn|I7`ZJC`wF+@45pcgzvjjm++EVg8WOG2gB6pN;0|5g;fFMJC`wg}Q zf+ZrpR+G_#@4|Kl1vL0JvsgOx0-{^`^+z_+Sx=L;(juImbFFeHyuuFQ-72fSFRq)W zI|X-Bi_Iy8c^w`Er)@+0Ayr6i&M>3+#zpt(dR}pUW*AJUI}9LuxrMsDupS~?r{%#( z?d{kNGMnp;5JpSaEi5EhlFFrhb&nt#w|i;o%8^R++KJm_c{SJL(Get7$GxhfNi_352I(D2|)6MzN6{ za?k~7$gd~wN|4Qx2iI2c4|^dKv=r+jxfG6w#wpMRbC5%wFw~UkV@1ew#^O^9hKpB| zgiCKzkl~c24lI$=`49{?Yqf+Ez20QIK;A0V{tC|;anM1c72P51T-U$PCFcEkX>_zc-oq!3R#uS$IQI=$v6-lW%ppe0law zXE#o}-_^PS;*BWl=TYr;2TI19zTeIB5y;Gh@NX+q*gu4MaS$0Eug5ewI;%@))!Syk zTN0PS67jgSi!d0_kC!uoQx6jh}jzyiiB9*g+n7wi(|({N?os zI4&u83s5*MDfk%JUsc-?U~zd_BVpR*y*X^D5d?KMb$PhuHRQ`^;B%nvRI`GOa{Y$Z z1>yRlVgI}dD~T6I1NufzQ2*`DK=8j)aQ@+P{kAReS(^Oc<4a?b%|GLw>Z1BeBx7@- zgo5!kKqE(a6M5K!Qibpb;1TYXnzd7QO=~F#pMl?@x}Jb^@gqg`uc2w)WrrNrtVz72w8oG9B7gY`{Skfxb)juYy?ROFNZGRu?=jVzStk}9$4 ze>yUB>RwuDq~&H)IV1mWdRKaU#)~g_v62 zR1;mNjTr5y%}0HN5MLp$Es$SS7?r$q3zw!??0!`+x#{YMlcxnrq_ZRe)FGhPsFXQ=rhwwpnoZluQKSOFpM$oU)&|! zq%^uDau}j_P&fZV(0A zZTrb%ZR_GIp~%l+ZPz+s)PfB^&@#|E!WT&Q$A~jj`_mB`oZ3KBUh@)UCd4py8=N}f z-p*CO1WL}{{X{}$_!j@TG$_SrO?j;rGJ)LG%8}ZoD`kn zkF7zDWYcL~@ZYaXt2D21HW!zzam`27a~& z%rwW9==P2VX8*NfL+B0J>-^R!HUA3-@&DJK{QC$%LuUhrzmcB&d*s;=pY`GL11`B5kjrNgM}TTOr8S&X_5NG&CSL>BHaU7&Bre z`~)kg4*%JF0ZlI6!h-MO0$!qr1M&E?c_hh*=2FGA6MIaF zr6J`4j)GW)$F?s@y?wGKhv>KfW!_NxxTZsK8XEpbJkV(khG>Z}=PwcjbxoVN8RYmeJRYiHZwx9AHLD1SrPu2L>w{23YIt}hr?rAGw& z4Pw;y=S18U3oAOVMzhe8~9hJgVGC zz9=p?$eOBZobaIlMb>$QqYsa%5at+sW42LpbRe=qqj58ucdK|ia&6pcvVT8tyS04>lbNX^x}|IRayv6}nAOW< zCB^UEy}g>yWU;MUfEUB5doqAQ#{5{Tt}fUz8{5+SbAv?GZbdaN_G!mJnBS-hV=^sb z%r*Kcf0yn&9kz2&Wjv;oCvVg1bKN;oEW9_MrXZj5mdONP9+B-HiH_KN}&W zx;@B#?`}teL~|+pJEcnpTrkn276sn=!L1gKqqAgqPx7s^q~Drmkv7!TUk_H|k)HEl zP)ima1Wg|bqn|sNwci^gbLU4tU$7vNAt5>xNCF;_9z!tU&p5prv|#jT22KLJf#6C} z2CQVbA-rG$1a?|{J^JcNYJn?Py}zG zis;uDpxjlS=;n7P72DPBTL|Iq0~<(#Ff5oOFapc ztGY+fj4n$FE9fsy#YOoQ$-)S6o}>>&N^+8tjC}jvt=+7iBcy4f41Jv|sqMUp=#^wh z=QT<2N0+DxKvE?%~_8iKdn0m<#9hjn8>&P^<+LW{Zr0!(&4K8M_Ykvp>61(OeNr z^{!S}N8Y1SE%8rH3_H&1ynbKLFFpaDI5=O`vBM?U+%czOBXYYtcAm6{UmH7!EsW8y z!+~@raVJvtnw5O57iD2tZjZ3@Qh5Zg*ps$DEzn9Lqxas?((9k;uY5N(hI>8BR`}S; zyY0rGbXDN*Oug^*In@R{nQe*`dg$Irt1YXhs-t5yGG{0^OPmzalTF9fvN&juBOzpM zJNlDf>s{YWMlvrSUz5vGYjX-Wb+QLJ5T8ZaP7tU+o@B;S>*>hPjkbHO7*l=x(*9)s z$+LDLR98j`OIFb0YZPq^IZcBwpQkOyd*zzkj}QDOFwB$d?&|GZG8_N5}|cxv%dw)O)qPqo7UjN3dgitIJxehV-aPP&;uXV|8WIU9a3plw*k&br+| zED&&n0E3NAIGK+Sq@@pNmaz48*uA2%?aDo~$%`9OZ>t`!9vbbPS(7k}_uu>Eh1A0^ zDB-1be!ZU%@|$z>i(Bif8+*vIy=Tdr-ZnA{Q{3@H$?fcGToYb^Wva*48*5h&4NkG0 z?Md{q@7}8l=os<@4JGpWbO$4ss*LAKu+Zi3+2lF%A{;}&q3kxA0vxX*Z3_Y!fxbj1 zOd439@YO}8{XbLWB^D)4^`xQ(0%pL}_SyKJz)RHYYl9@mP$Vq1B!Me_l`bFzS7wQ7 zD%?|+i?(S;4JY}Yg2N8_!%y%!!eA+SsUwOV5IPA7@NL1n$2SyNb@cKE`VY@15_1dY zE@bI0&$}+D%7QyVg@Ded#+k(+9EW0zX%jI@vWBIYN7mzWSy`Ua@RUT7UdAGTw{Ydg zV#xAK)%Mt`Mop7>p2imK(WC*nG5uk$v2eAGeQIM}gM)fmk=|i3Vb{oBCK6_MW!iNJBu*QD2adH_ z=a$}1ghq=v5>xNIJH*MFzef+F$ZY7G+plVC^rtq`x}qVxXk#@!Nm;IWn1Q`3fSOg=KfXuPAbvH9ST72+6=m#-i z0zUB|epBc&`K~$qQs^?Zen@C0eiiZ!IeazB455C?_n}9HuP$_sGDEz}^qp(;C=1;{ zvmCVstQiNIROaJfISDxjCYJ&fr}P%sNe;>^BbBi98r1Qu58jLiYOP&K9hgzB%y0cC zWV}qpzNEC$BAX{#tTVo=x&HnzmH3W`tlBLnsCuok)qe75NMz(g^)ThV zXtfRVj*p?3&BbDJdPQq@Jn74m^r(Y(JF;js1J`0n8PlS^{ZCcyb5Q8^gL2CakrkxO zgN~Qqj>2=f)gG$+?Goke9DM}G-GlFgm*LwdAiBV&`GMFNwdLANff0vMQ>F}|gQp`Zvl1$ceiIFT?s;y#=~d)toki`YbNylN-S0JE zoEl$rx#^9Chd;;tLiCUP33lkgMw&73=qYRvIj_@ES3vDqr)rWHgotAqoF0)rqi~53gSJS?bFk_3vz>{~l$$5&ZX$89 z12!C|B-fS(;H|_rk_g?u3|1M#4QLf0xh zK5Af*J<{UV zB*X&VjAh8+d-7mSlEC3O;0(`-1-@kLM1mW*cbz}c&Do%HUEnXWsT_-aF8G3d z2j!;479Rtm(bIwZY_WQ;TzVprh~xAGRf&~&QLeK^>yX?~pjJ+$damx1NO>o-*3J#f z30Si{AfwhZM)P34t~7K77B+a3SJD`fRq`Y)rqm`bPGJorY+45oh+&;OMD59xBF^~I zN1SrIt2*NEREd!~=HWKAmqo-s-#{PsF3Rl#%zhQ9OYfQ~6W`REm-!bbJd^FsJ|gr> zhkUkHYB8SAwVq2ry^U%*kJe;ony}#PYo--~oI5gGEcqBHmVxj zU_P89bKu&vFvybn&9ZaBd{~3 zft1)R!dk94mVo8nq8O$~GEH;|RR9sgDD3govBK8cZv=LuqL>p&AI0MK_=E48^R<+X z_Vy#~i!3dzlPjOkXT%=*Qv|@c){H=1!Mk}NWr1d?F~>`Bv>1}hYHQ;9AWi(tnMDNz zLa9DcXQxUyiGq4`aD$HMBZ%MU=FSP{v}>4WVpPc~w7tUYH!ZO~#$(DD7#DN(r=@t7EKfbH7|vI~)Uz(wQP6XXvM&R3_cMh56kP{ZhjO1<;GA|-2F3_7WrUvQh@Q3ycYGwAh ziW29rR!fy6_mY0LQadvkui(?4^)X#w=gAvRkf%45q`MO>l%TjR)lg-mEAU6S=+SyeO?9aUe{mb+gZ#oQj28y;BCjP_Kzq zg{lDyw51M&#OpxpYsc$A?R&$M6mN;=Y|N%WsCwjmp(0vVlt~o`ZKVdwZ_Bsloaeku zmFm;J^0#7QoRDeS$XYCK69}5C`aS1Nmk^kK;qT#QaFUF{GByz)BhYn0i-+og*U615 z#f)&$t9rJevC}Rb#yRr}G9{Gt7^QVi0ebb|!lHTB*qeVIA_6hUYE0G=zms5L~9!>RhYVDg9*EN2gEYIA`8eH?_inz0T|nrF{v` z&F0r}Bu(h{j#zuE!}|I1WxGxS;02|g?G+E-8yg9GQyNLP9%~2AVidW@fNpZ#8VPGF zG34fnw@0aLs5xMT&L>IvQv-@I&nK`@}aRCgAYPV`7@*~trHrQhliYlUEV zcZZon+__{TD@5|_S3IH12qMweuM@I^A2f;E+*xEZUTA;bxdZEJV*KgFCTFYPck-y{ zcPFBJW^#cFU}0-hd3=8>diU3F%dp~d1*Vzo4FkPjW30)kV@gq_wN1|x%@%~)*!ne5 z9RUF}!RWeu+K=HHmLDu>eDXD^e;!eN!D&!^En-IA?lp~Y4#;!6`<`Bve9TgsCqvwX zvx`trn~SyzNpsqYiifRjjl&PqHMwm*I(j%U}NY z@!9{gSP9wN+t^FnIGP#!E3B|k*+KzP1rk`542u=EYMxq-Q&+g_IJh!i%B0D~8d6)`aXV}`HC@v>R=Lz$uc;}w+1m3@ z9>tUNZ(>HlUMsNKpQKZv+0fsG2(7=z#+oD&qU)&Yt(DTMj6loZcOlo}_vE+1Di68M z4JDc=GLND!ART?IA@+gYbyCZVADkvV3tSC@a;K3`8z~rG*oGxLgkX?fRXqwkr0=iSV10Gq=o+6LE&Q&p0Ha9hJ>U zs5^540lDbgz&qpK*7vKlDp5^e6qI6RZAJN-{c(UpknhP^^R_X~rz8`c(2zx$wl5{4 zOEyaH$0rGTAxbUtLA{-Sna>x6dLm1+2tmWBP2l}rr3k;!j-+>h)&HPfU}S)1$`@x_ z7j*m?-7R-bp07i=JE@r=_JYy-cPlc&}1GGcl> zPy+&8?0Uu6j}EP~L)p&;t+PiGoQ*!ops9;yw5iGw-!fpUHu$58K9WJxq$O8B_6dY8 zcb9cadK;pjDL5TU4Ot*n(GHrB=!Va%cFfq2W-|X=~{iKs}IFOuiD$TF>k9N|B~m=NFfp?DWg!ofvcCa}rAc~eFoP)wfW~G@X zwv6E%CLz(qbgWFW;26N&xzERx=zS-rK4%(cXdOi$Vi{JwQF zW}C{FB3A$1w3U?Lndmb`-mg4YO0H`(fS^B`zoY^(`lF?}vw7Yt1s@keyo+*?)~{=G z0UV@lGQRijvIoGjRYU+t?>0{BYx1f1b58eMrNE4w{t*9xt2^hdvVTEO@qr6;NX`4m zqT~uPL1zD`=d@qJWKlapFIUutI7s4`+m*@2G|2BwFHWP`5L6hf4Nj~5-Z_i=>g#&q zUU%k#KG4A~ka~c%_g>_JGTW@(kB~QB%w&eMh~pe-twEI=Y|qPlh&C4zEDC4;|4TO7tQY;@hfu z$`9?g>y4n3cUC=vIw%fDT>oi{Xzw;-9T9UW-;ie?)b@~dlX;Ql zeZD;Mda(KJ?Q?8knV{M)swwpL+$~$k3yGhfB@?F-CwG16q`24(c^lo8dk2oTRSc(} z>}E^7OS0#*n8tXm?QDfT8c%fO6(gBs!%>ilw2)-C3ok!ccp5b6)U;b}&I#AGD?bD& zHwMi29=EFAQ}DyS)@$)mFoNioldXD7B3SUQ3->(k(`@I-GBmNYNwhKK$h9x68kJi* zEY)T2P1dx?+m7vc_J~Gv&s8hRi+Nj4O$-G%cM^1!%hf7KY)?@+=hN^^#8oY1sU1e& z96$QOENjHOBUB#uzFJF`Z{ZB8QziakE8cGnwy1ID%Dsk|#T<*}3ITA}z>?Aa?Qao;+}2owYF z?;rp(XSH0-#g1l;#2l-0i}=CFPD`o zS5;!i?h2H!@Mp&@WHcCK2$0FVDj8hgS;XxFdf^$f6oQUV;mKT^`3L37(b>j3)DEng z)}38jrsb6`L-$|yen^(jzOsrUV#Ur+MJOUB$IiwIH30~VaT&IC5v#Vt0m+wytAp4A zQ_}^>bdTxi!CBnGa<2XlAZB6JdOD%f`nTT0o@5HuLkTAGlTSS zC+I@PzToG21H3cxrc*4+!+~lzyPKli3qWsO;;}IbqQs8DgsLDOy`$1W?;UTjDgmU= z)ObgExE`W7^YCFmVW7Pt5ZZ<@c&7}WA=Kn&hivU#-PFg5xb+&#f?~$q8k3_0u{nQTSX}xeNWka^+f>Aypm-;o(P_nnMCf7co=Bd z;esFeQ+z{7OFP%~`2!P{-=9+y;Oe|M+l+bcmA09|MxoJsblx`)<6d%fK6D53Ahk89 z{C7z73T6u){iqK+|LDfV`QLYwf7gh=u)CA3;os1Xe_JxC!+PWGq4+KGsOeQ18yR)? zHB-zjwk`qHyN7F0$#|9K|sm=747epyoNr#c8f0oK&n}YDtZ^p9qDlVvRAdqIk zp2-ifJkph_BARtGQ>U#ehiIGoo#*amwvqbUX>aDXX#et@Nc#!uk`Y>qpn1bz8{Z=t zf*0ST3PKMWiFeC+%MUu5>+;v9@2Ccj_m6D&7zVBzL%n`q<77;b;Vkg(H+VhfhzN=9 zqJw;Te*T;UP3KI7df91BnD~y&mfR))W%GfnM0qmcdzQ$^goH$d2*}aTfx>}?;jpj{ z7GiMd)nSYs#)kG^^PjbrnYMi|i#gHnqZ3dQZm&qcciB@3l_?uBYb80|m#5`NETjNc zUrLJIP7vtpgf^QpIZ)HXfPIqzu9E!Os_{6P3{^CzXggMF`fIK}s;RAsGJ483@JF2{ z6lG+2G`5lTf>LcJ;tt!9xD!ZbcQOUaJis&=5yq)Wby-k9y6A8j6uYc68GC-AIjY!p zH7auc?Uf}1(7nh^^`?VZsv=*!)Q2OP>1>$E%hc`BY{t!?mADbhU>1E^ zNccnbfda|7wAnmYx~-%yXD-Db7q`M0$KN7WJUAU+R9TiK=krW}5LrD62HokAg+`V+^XT`tit317ZqxHUkH7yhcHG{8Y*;mQuD)rB& z#8ph@0xZQwN9@YRO2*k0(uaIcO8Bi@rIn(mV=5=z*wjjX_hL;h=pX;#bw9gH(e7#k zt5RwH$x?t?*94|a6cYYgUr0+?P$6_cVI!FiT{NFx)5P7uBTBz#ZClSeD9D~%Ssx+{ zz>Tzvmvyv_$wyNTvoQh`F{IB71(BFXa$7U#I-1Px0E4rt48CBeVbdX~p|pu0gfX(qSfg4gQ2)ba8YghlANP3Q*FnF665Oqs8C#!cfG30o9uVy*iNO9 zojd25V{f1^lP4`~S^3xx`YTE~A#FaM+oC|~@Y>$3>Z-Inoztd?h$@k4QC(w*zM0%) zYxEFWwn;}`Ihm7M@=de-`tF>Xb6vebD||Cr4bz)r_yYXFz35q#J}7#OZONSg3sAV;yB*{qRH6%F>F%Ns4{nVmI@m z!fUJdy(r(B;${k}QOjJ-^mC2qpm%JnBje<7Gcr*^4MF@zfF`*yUf(kgATD7#LY9RO z!4EKDVcaYy_K6yYbEiB~Aj4Q&ON^6+rIBRpn5_??&vV~5<*%cM=^7x0iErRi5fFhO z&*~Ei+Cj)RcqHqqn+V2@8$gR@=E|pXusOOu z-T=mOC20~UO4QQwXDooFc_X&u9c5%CK(eOX%xjp(A~X0nzj#R^;tuDicc^$mijKZ~ zBJx+Uc!6-)AQjEpmq3BxmBY62Ng}gK62G(BeP;8PRa@$1JOmhTb-Gm`K!ZLZXb$-owKg6 zOVYg$#x(aL+)5HkRCChhD#;rk<#^&w7WIJZ6bfg}glk=6Y1bh-81hye>Ygl*YuxV1 z7#9ll_JQ9b$$mNGme&J|oS24ZYp6cvB|N9DK82)_ALJRpyE7DHy|p?3lY&0>*h4j3 zgRUoZ9yfByrYCfrFf!EW5^Ttti?HTP33j-KBwa8G2WqfFzZ?lscqkdBFxZ%#bx6a* zD0#CNZ~1GRtuMg>@BK3G8SP3d1xXT;c2P&@x9JK7t)uY`EdZ(`)|I$%;H?EU`$D{n zn+ueX8_tkLAmj7;nJgq75$%~XiaEnEFadVkPD!?#-y5^5IODQLX3%evrM(}Li$w8TsiI1LX2^?GC5k6*=w^j(W1RF%LubH z*&_PNoR(EnS@g?r#V9{qw~lp=_+7dE(%&5_PHk5fh!3WuPi`4ype)Wc{$_=~4ufXh zM+HRpX$Rgb55xx`sI$S$rN`l-{Ad#I+iu69Q(XDd56U03tt+&Dn(YPt zPx|)%1C##qmy-1c$WM)xgM^2KqY@RFss92OAgF00P36xrd9F` zeop(Go7=p_KxNB~d1CK@)OC`bx51kl`x*F!kNcqQV&h?bZ{6LTg7f{4Evg{=U`EPW zKR)GgW(sZhzTIv55^eXn-P-JAZ}xO!O|jF3rTLLY_7v)%7}zYwb7TD(g2S8^1GASMn|%i2p=jM}SclLcGRXIl=af=nd|H5U5lL4WuD?oo9XOnfghuF9mS*yaa z(vh9Tw@3wI70fu=|FDvXh!(+EmnhW}UDRr~1sO!hM-&=K{Qzo2VN`pS1fYxRX{346 zdc#hddC4`ao0&#PJCR87RSwpg+fh&MNZ%!8WO?6P9t;7b^_AA{E=%{UJ2FcP3lmKg za1`#0LhxBoN7}W&%E`7m=#sbiU+;i@V&4*{qxFV9`1OyIKoxrSOUIVe=_a^|^P zEmR)G;VO~-oh?tA_&|bEAwDT~A;koPpp0#U;D#bC(k#jrei>?kS)AnVY&MrrWf`8Mw{Ly9|esbu=@|!%Auyqe5}hK+I@u<$=6ZSY40{ON+_j zD)gMu<`^HRIxesB==F6^1pg;`Q`WU3!-j+V3zM?0(2*C)Ma`g>AA|BjyjEmvhDAZ* zQ?!QcS+UhnZDf3(G<*3@lbEtW%mCFTQbXoaGL=5!97K|;LY8Litc2<>@>f<>K|HsT zDgM6YGzhP#nBNmGnYPP6=%QbFGJ6cL zjj+u;03fD5n7%p&n}IQg$E$Yu)yo|C)hqBmX$F^?3V3lHm~Byjx-JaJ6|2>8E||b0 z8iWDh#NIIRNCy!BK7!Aj6r9+~hA0W2siHm8#2k;|erU-W zjgtWAjm*KWf{H8=Hsc`1qzfGpHY2yW#_Yu%fqOA|T)(fM6*El#^ifTkpp6U7NnLW{ zf05kC5KQKa{tb~;#%0#^6Gs*eX0#liUsrOwI-|G--;rW zY~FL7eAR|{*$#O`Rh4)d1T&J0eeCoW{nLhYrls13(ouj;J&p@6iGXY}$TY71$YH8+ zMbF$ms~tw(In#IfxU|6a9^(Z6E*j5FcfGcvvUGzvx{7)prOn}Jvy0*jFn#c9p8dsT znP+FmLCai6q)BM;_-J>qY3- zbZ62%8s+>6Iv~EB8370A*Pa4$+mV9sbf3?o{-6W7xU^QimURF={=Sae4~Tjv&mxnX ztlvE4^yv==_!Sl#b<3}=rhPh-)8T*?_O1$v1X}&!q#ryxKi~g_RStE_n(};ThTR#mD^t>lZr4Tta88%`a--@AUOjLUR^BrDEY=TFH`K z9G7L?IdO1?vO&;(0Uvu0+Ti5lb-};PKFILm1%)ojO(r`IGCm@b_cnMzG2ec?L3X3J ze*y=)h5Gf`f%>N-?0U{+Y0ym_z|2XBX|eW9p9VL!u}#W66^MK z>&1$%gKn+ewq@H;p;sc0_%RAdKS)hudA4*)zz>q;iaw)T(IaoRCKYSB^U>4Lghi}D zeZu{PT2HXfB$@>Ot5xSWwE}ykhu#-8F%{{xjfeh0iaI?5ezD_>ox^95L^QojuI{vw zw#uN0`U-MpmfUa|)DF9v!q~>II_kgUNaAaYFQ)Ar)ESQz`=Tk5QT5G5Hdt+>dkezn z=PGpO%!$ghfrZpgt=tE@aNfPwxV;RE-=!0Aq_Hd0XR?enS~Pl?>U!h8)Mx6rtTJe% zzDAyV6^0&HvSVaQGs+EQFDD|&`OiI8HHGjwM)LQuhKsN*5GLLqFo4v&r^2(w!ffad zCKkH?^gFTIwX-v5k2foJO5GXH@qA66Y(TR;1I#dc-Pe5o%-80H;G)~5YH~Y*opco* zscza%VJtFO9Jy%PPW%C9eaBfei5zKW*Z~AN97iHfNTeJF*;<5c1?D&$FJ+RRBvM#6 zIItiG%W3^t4-p>W(Da0Zr8PFcvsG59-pO%WXOp!7XmT2v4~VVQHfAUujvFxiaWlW( z&k^Ij=G^8UFew|!V)`SW!a~;neC2q-f7Lqf(&)Ohr6mjqCi zxmV{-**}}Zog2ya@YB&Y|Bii@sMAot{5cQ3q!9W?8MBN|AbAR{sSbQmA}nA7zV$E$ zH~$A_YqPi(gh|ngWNW@|#n(@ww8r8QFF_MT-9&@^D~64wDSCEOLq0KtF0)UW_dtg( z@oNIOsjdP|JFN6GxV zO$%jF_#m9*efP~6cVCHb6{r;l^+YwA9~Y>~VDGa1LhbD~VKywc7^hq5+bg92N%BqY zll@p0H)}n(#c#GDYKt{nq9dxIXoIJTCRK%UDlbg>}_AHCQ!LsnY!({lCyv z%J6F&_{V*d{~w_%>i>QOR*r?=4EACGto;wLaAd?Yz;DgB6$>k~t0vM2{^a8PuwMxSf}O_y73&yp^-g zOhZ4!Ifnn}!9o7tJa0o6!~eoz3)HmL|DJ6Cf|LleN(}UR#X&1ck^!GBX0^Rgz^!P4 zwJg}TY=JU;f-J)Eumu%&T6dh6yLna3NwONXCHq_ zSKaR{;va9Xv(BGL9~a=OuqyPZ!1=hmc;@I#L-nimZT;3bzDU&AJDe? zkk$D}p_dMOBt(+k-n2e8jZ;j>xNeqoT2%SKxK*LFM7~V{m}I8>cMoD3RA+d5HQMTv8^~uq#@N_jjSxa_bc+F$Zl_8RwUEKYfC3#*% zsU4S@Ey{k0}O+9>_R$pkHL7!*na=~K}?o(Fo zI&bdkatw7_-peSh)cA#w&5T4EHG7<)d3Y@&Nf}hapQX+bKU2^r9nL0RctVF8ZFy4= zm^$dp4g~KMzuqaafUoo-N4c68Px{ggc9=oDtHD!5nE~J2)`JhfBw-3#JjN@(E);ij z&wXW&V!JHE0`+D)(t5u>kh5I4#k<;TdB_jFU)km!6ux!Ed$pWEH`J8bl0Yk1wDaIF zZskUD=m4)s7{<7w%y3Awu#rZ%5OQ6%!Xv?;P}EIbK)AmvS=%R>2EQauhr!~QV~fbJ zti=+8Yys3b;tuhKX&}r#-U^r#ulS>KI6B6~uOiOI+i zc98m>5iG;}Hi|zy`zwR$9)E&JVGk~IL`I2N$#9eqB2XuVlO6n384SYSI7KEB0DdcY z;0+Xf7Tc{;F@+SBQl9y!(;g}JB}_q^Q^%jvETIo!5)@!;4A}_jKv%4E@1Nd`KS&pZ zlqAXpEbPsJ&V6C=6^t<)yHZz=)f#oqDqmUBaw^r{B>*~P zUb8aW2zK1gk#M=);VDb)h(v8-&TL$@2l4Lj*;~nxqw+Eikn3Ua5`&Qa2LDk1p5NHI zxtKyb-7~O9u}*)qy0?tKeEs$Vl2+@#9Q-|JjO_jXigOYE39|an4*vf-M=Kb*SbP{& z8~9NJlOY2X=Z;roTX{@O#{rfA3Y_#( ziEAB6N926f>z;0#Sy;;~U_}L;rI?>+gO|htQj%Crl%u-DiYjSg^Ri9!p3-8KNn3wr zmb%GiDnph@=P7-|bK)~S!E5zS)Lm3mm+KIP zUNJn>39BjRslYwPXVw#L;-T%X`RY}@80brQ`mkk*jO5`k6(~&jnIFdUD{QC^VJZ1L zVcL*^g~jU^lyxb0ZwPy2tgyfyjbf>M_F3anJIOeGRBG%PTg^Y0NiSME*0}g^c1cbx zy9rL_Oe)Rk*x>`!hnoU`8)r{B9esZ6+QHPs0_ z68NtwxcM}VX$pq?WyIgJbqKGPw2fJ;17HrzdVF?PMUWU?9?(>8c@>0>RPDP9M-n46 zPA0B77DacVCC4`C@=Gf*b2F+h{;Tc)m2QPU7dmU8! z6=hiZKdRZH2)^;2ajdAz%{dnXvyPzxPGtm_e*}VkC|6iesB#J_^^_?<9b3;-f+Zh^ z4TV3Y@EfW5U4B4Ezsu|oX9lijoqA`7v+;TRDlq4DB>ytOM{Zw&uN&X31!=bEM?8sG z5qN~f;5NnYp)X@(vl?VuM}9>wD6pfIB(`wur|F1jF^E*=pOFZ8@>s4j?p@vgKE!d# zvP1m#2p0uXD`Ah}74_lhJp6M0`fBd6%vN~-SQ_jCmLx9(+Z8>?L|VC1Nui!%@~)s5$IM71ON8cCFi8zZmD6ObM>{qc_t%WCCld3td%|7wKNI!hCGSWx?uCU=^9H->?qPPa8d>`mZy-yr#oM7qJ+ z;y_kgoe(}kF8og11Co+*72YET8+C%NM}BTvas!LWzUB#4E0mx8$Yq5k(*&~JK8)40 zW(?DO)X0s9;-SFiXnT2CFK5TWltOJvRCE6&n$OO`&2#(@K=!eV~TL$Hy4sOwS@|Ec``=PcKMm0x93C$|q8sEVh< z|D=Md=qjTcqWh_R$6RB9?Gl<8SJPn4wNGS$WS>dsw>Y&6CeVV$g2tlwA?3dAXsy4s zE2GS*dz+Uwsfj6zUPQr=<-Fni@pq7syqw+D=>z#?P#T2+g%IV8WHOA4F<1H1=X$6B zM|frM74T^b5=`_hgt>CkFI5A|VFSe&^5onMVl&+9QxoC|5lhibvObkXc9=ZPp-3u1 zY_8tgtSsOwb!j-9ZZh){)^nk9)a>de>YT@RzYDdLgt_O30YJ0woV9hL{K?aB;67?* z((L*nW_LDgObv7);@8187Nq)YGi{cxL*tgju0t>(X23BJcV2S=hKh1tTS(fh8V5&1 zJ++`fCXl+oT}ZM*VPRhbQ$b5qfyJGI4keDd=;uYryeLhJ5=R?es(m!n7&dO6fl_bAkxJ?NyM5~l zi&x!}iRQ2wFY)@`86|b+JdK_Gnxy3=%jHQm+MQMltQ<{V<)*ttw;9(`Bk$@ixn)7L z*oj-Bg1w?pM8a6YL?Wg!t&K^fS-21C=xfz>(@kDqt$2KhTN;YM z72U#EMJLjLKQen_C*&OMZK5faGFH#6wIdkTd?CyK<>t~Y>IrO=bx z6;SksoKp5xvc&yMM}?`3q6vs?oVE5UL;|7e>4fbDOZQ>Ty=nlY;Y)2T4SM6 zfXbzP2IqFM(H-gjlB?D^c$;k!@9)YnC*uau9nQbY*=!|3(apzl_TwLyGsb^j&QuJY z%uWAVAP8F+TK=0Z)9|sTp{b+4QNYSz8=-`2!O?^#GeL+|tKx}3_H)?6seFlOoF~Q+ zVjABv5$c$;()O-dEE0H}6DNEMu%7RxDXY962zg6-12lU7miZYg9Y3EGa*@G$u)4Wy zeqj%Ic{}(m4|co7`%UEA@$1t0(D!d9-&!GIfS>HES&eq`f37G?@>^zNPI2X=!A{^d z8VT1~DcN`RiLet=hPPJ#I%2a_kyY++-C)}vYQV#hjj;r`G8)JHx?X+-T@3E30=9RI7hEJJ>?{`sQ>4oP>G&{e&(6P*kO z<+NJGIpG3HmFytQ-z8_Xa(tXVhQg-?l5(93pzRMmBOL+mjEvi0kfUxM4b&J@Q+>V2 zosCr|=(COXaE$G+_UeLEmA18aYqvnB%QeS((}I)ljynbZk^zoRJ2NYHc0Dix*B)0c z57OgYio`9<pOE8ZSu~( zZrt!h&*Y(6+02dslhW}pU*5`Gc<765Y+y1eMm%qzI?X;|2^I7~MJ)sp^q8)FM}_Zr zdA@LYNx~f6LP4d0dC4HN)dv`>yDobRp=Ji(tR{(~EZ1iK#} zzE5Mr2al8y$LhC6QAySp`xly@WF*^y}MC zf=lQxCb0@wf>?6Umwc0-zjSN*ada~cGxam!cXPD&d@=Q4{YeqY6v-0F+>X)h+}vFU z3y?%gFBQg4#;Ig#Ck0VevgjB~NZcAf(tNPNH39iSdVUKLmasz}_oy4j3OM`NmC_zK z7cBW?_~IGg;~l`6VJVq^|C08A1c-=FGSM-u{URa}7Srhy(8A9n+Sc=E{>paa;CdQo zC2S1wS?Z0w*WPj-f#~d$pC(EWhR+T5%TVN%EJ9V^;i$O|oe7MtXC!rU&X+#%9X(G- zqR~;b{I;x|?|OY#)Nqfture*ruymADee{kHL~#y?Q8)O9XX-129zk^HF~jR+j{zpv zggzoX(#6QnNeX!P{Cb;t70`zI5sVS?eqigs6?>R03hou9)!NRp z4*i5NBqHpY05NOA0}I5t8ss%LQ>l3Jhv6>bmr%GX+TJl1T}MO^bt;Q?kNQ||tuNV7 z$JyZ7uQ8{)lidYXpZ4&oWpM7mOm`1#_+o4ocK`wZtY zthx3K2`X;tlJ$IoxXY8ZBSluS9vX>~{_&c_wf%_qw*cQk4;YhuOf$^?zAXKJTi4+J z#{z6>X#5Y(HUC)@^Y?Q?mL`@?rpA9cj)pd}h7SJ)utmjANc9P#2mfY!tzn<8Zfz*4(}7X4D*oRKdq3o9u}0of!F9Fy}46W!+%QGYNp@kagnaxkj{z;mxI*(-`^U zWuU+1pE&c)Wxj+;CeOo$4@~r?`-s=Sx?sn9jsJjDia^xSiYX#P%Zmy;q>Y~?w2g;b zhJQ_4d^5Pp2 zhLAu62D;OfLZm5u5~^_R$%7@f*5ZTE2>HCL6gAFBd6_DE{yw z-GWk%3b6GQgLRJ(H{k>LQTb3TVYsIZy6G~J3?sh0HJ^dO9sC@k$vApA<-_qIiHMZZ zhG`pFh18r!$iH87kzUx1@&}0>?4#TMXA=8=Hih{6g$b+ub%d}qvotnz`JYI?+Q|-dEZQ#fx4GEBH!%{M*tLWZQUgnKv z-y9Lpro~t+Y7w~mpnVBXwD7I_M^Bf~Lq@7)8b!R;xAB{ezccNm_vG{ByI=F0{-^cf z=jlW7c%qZnrLCb3Km6+*b@0-_Gef)~$hps}F%QmY`---g9^abY^w>-AT3rRZ)AX81 zzsP=V5%jRBFDp9O=+IpUCq%%Tl~Rh4HY81K$Y-Xlpf1XnWTh{et8*bGrUsx-rg(d` zUf@m5Bngz1g%_YOmuW56Qy47fhEIpZr&+m50W4qh6&`Y93&_++iOdlH* ze&wV&*2)TE@ak9e@9Y+TbYdvit(W|E2nJ^ic~-W&Z!?nlvMdaXhK?h z*goHx&6S=;?d03oCWn@mvwnME}KD$l3V2PqmZ&db=VS0SVS z+PRTPD!u4)`L_}oTHqGObbOrui&c8Zi=dIf{lLAb#B`8V!@3zLCP4V%nX# zD~DotrdzHQgl}A6h&wX1Yr2d}icgrT9}N^*|-#Qwz&pF>o>#Ui946D}E$BmjqkdlI9@x zXB+K|xTud#broZ7%Tz8jb7xYoQxyiE}i$JmBd6?aYb%f z@y)QiDNyjPibE$t!w{mz4||PCpm2^Ib@~ZBbo$R8*^z(r zISAzwZBmMy29a!km$}TK$&JZDj3+r466#-1L7fhdCm{pyUXtAaNq8K?d&-5;sR1AE zSvV{Rn8F-CNk0fR%bx()0Omdi0EipV1;y0sOzI)6NXI z2>WgL^5N593jP2*0we1S^-uASq&p12H`eyiOWZzv>^GEdu0k9=ge`18@%I}Dvy7~y zhTHVPZ$g;-BARbFH0?V$;bIA=Ao1MrJoye90pzxVz8sG3A=9Q;x7A3dh40;q90$a6 zSJR3=_@k)0gBC4r39J;P&zhX>_%;qTxDAJC*R9Sfbj0kw^BzEj+7aL%GiDg8RQ^}bktUgvf9X8rTLx%u{KDq5L%92PYA zCwt+f5Cp8zf(E-BLyvLP%-K^N_r7u7pOOIpqO<=19>!E!^ATJVYlTFQ(zj-)9D zi9GMFwCasI2Sk)l-c+aIIUZ9uV#}hYq_L+Vly<&02lm1 zr0t(Tur!x;lM>rsCaHOBIn!MAUk(9=`OU z)=*5`NOufAnOE(JO0?`9?nezYojumCE_DS$v4(h8@*DreTp``iVHtIBeJ z6Gg!Mm?J%9dt68H?HfJ6j7A=`G}4tCpR?*Z2aypkW{uiePH%S}RaThWL}Z;E2bWl+ zVdyx@@yp1fcr7?YA!X`GUI*uq)KJYRVVYuGxm-q&VoCjh>|g`7 z$6n~mvRJ2GbKH0V8F~wo9s0=bfT8#bY_+7GBfA>Az~&8tWK2#Gvj|VGZH6p8?uHI6 zuSCXL1QXSHK^kO<=kk|P(%Mp`S@R>edhjk8mg?0SqRh(I*5TkCPVJt;4X@jbN7EEF z>YRYeF$blyd2ze*b{$Suo;*WhHber1OoW@MVndX^I|OT-1;caz$E{U!lp%AY^@op) zbu(N8uARAsU?$+?msK+^vA}}0Mz8?l;xGL^C;$|Kg~m^BwnOZ>YJ>-?l$d9YIJ2c3 zkk;DoHfXkT6OHJQrES9`9NZ+MP~yI?$8o(30Q^2XsCYxSqp$%R0Q0F9kx=#d0U zWNO@=X5zo*1|0Mq_P`@las0v)1-#y>N>0ghJo&P{-qHU`T}nU1vL>}^Ua2nwxedEk zbSX7iAUePAt`Ms`MC`6mEPB}$^HmLTwCEjWA3VK?UgPgljNM>#X5rGkE;tCo$WM(> z=>1%faRC?48>PlK;p)F+=;KAOXKtUk)U$@&WZRG4E?gKKMD6?*Rpp&)>yO&W6J?C{ z$h@+k){E6sPDy1L=@UhaZcD!YnIy?gYC>5W*EzQVlVeLwH8w1U-dc<6)lW5SNd;L{pS+mUlw}{a54q-^-zpy@}_)`7#=wK4?Q2 zZwtvL#L$L90o(zfc#}*8xq?0;NYan7P%YJ3;X!}ba*tbx7L*Xuf{@desJiW(4a~Y# zS;?=k{GRKG_w}>TENcgFLw%*tJ-zWy-I;eCt!I?FnB1S&{d8Z}i;h409h`a0@-GJ< z@lW+2Pg+c^n*Q(tHM*v4C|WfQP`yzBMp?Ort!N!aZIG0@wBS~35RLj+mK-d5Wp|cb zQkkxnejR&KXi1aw(h{|JW+~sXjXMRfR9TM8ICZxoeZ|i4>E$)h|NQ4~-b14MJ4oo) zo*vNmANIu|P{SR+SLM%r-{Kgi368dF&h-3WBZ)~s*VLBm9HZKQ1<|~-qoF`GR1{Mwb&|!bud}X%z?~Y4IOpW9&2*^& zS4s$K@?OG$H?qfZI+Br~QnI<;duh+Z)i(LC*rXuD@ANWY6FtB9(liecgT1&E{5!X* zyV_PS@DLFGgtSp9Xjzc2xv-b%<_LD(Ycj<<^Ml448D#8e&c1Jz13p|y}I?O<+S)TOVTPf{N^LnEH2!tX>=Kz3;C z+W%oA5T`;{VOkZjXVi*`SN}pviaxwV9IQ&lhFuhXzp{o1;I44HooNxLlGI=k&goL1 zMNPt?5I)+KpsW0xn_!8nG=sX2R|q|%Y*I~PL?>vU^M=4+T_P=(_&s_sKv9$(JsewG z%D5A#t?M>$iqWRa?YrXAH#Xsd@L63Zn{(Oi)dkV^psWxvX{kLiaodT4)R6Fp)d7GE zPtp%1rI>>}NW(}a9y~0P1|GS5smz4snraC6`Ak8wde+^-hH=0tgoVKnB=9HpG>n|z zU*J716gYF=DHS=m*I!KeC5AT7X)T?QfL9P7K`NTMAmHYt2mm$5HhqjA;ka}-C|M}Z z?;UR(HtZoXS?oAKYL044cp+FVYx8{rPaQBU4s=PEI)OqhVNTScy#|B*Kno#-tjATy z83|#d$mgF)N^`BeX({ZRQ+ziF^>-w|W>XmBCRLfuKI>qGq+4%u00|JSZcf z$#FRqjBJv6h)AQGyWXz(oXua9=3>QJ$tvZ?ayBXD1tp1qfuM?@2H=5$4pcZY;4=Fj z0;vbjLw~6`W$M2fU~GQubdcGBNTburmRi)F;NfJCV`Ap6LC$X% z&;esm26Mn83Xfr!XZ@iQbH{d6eQWl1N4v~J;LGzJfzc;^PXw00>=klQ!gehV0+Zib zBzx~$13T$0Q|K%s@7S$csDzE=y(lumdi+2s7P$@Q7{D^y@Rf706!VKB;Tg)noZU<` zh)&(p=aBei9B&zlE0VhhJD7%rZ6L$&l@3CE~#)5XQM!U{Ly!Y&G9{&U|F> zNUvu%?_Gg?p7tZq3+fXY;4Rg&LMS0=$2z8zh=F4ga(DrEPdOe1d%sO;U>*->+K7U? z=TCIUK15om`AJRmPQmxOk`K+cRBJW8M~=I8^fdG zc1@A;5yD8q@^br~J>Q9<{FokO(Scq_M+Ru$nc~bF*J#Q8a)!O`?y_hzw^K?TcO>&D z1*pQ2{d3%(d)X-ZKR>4J0g=akR!<%TL}Ew?eUaMdH|{5QB73vj(y*3SE^S_N@c!cm z5~54psbdjBVM!nl6in~YhWAyNwJxl3#3*)U<9j!r@4RsYC|bTHN>iG!EJHo@+uRWz z2^~4*I?k`yPeH#|XLCtobxtixB3MQ{d*Z!mi*pYI{IM@~4ch0Sd!k%WG9p9d+~kR+ zVEkH3mwllzoL})@(%M$rz$Lq6ai20qA3q$s{Z(%m6d4APibDLEnE-oyVl~^WBQUK| z+_qeSV%IB+ZKv>g1HUS~BfQXQVgk!@sK3OhqIV7sZQbYJz*V7drUyD7Kx+UuaZoq# zmB&4?+p9X$dfRF)%O#yw#v04qvoZrJ&GQM9L4pej|*M4$Y7HIF=Ao*Br$gI!}Tb2%JuKY!ji6;kCPF!R$fI=mckY* zNDqJ7LMyC8$~d7~=hBaDfu4|`mTf-cHCs~sl6MMk2IO>(&v3R*^6@E7PJYO@F&KT2 zF4euk`lXK6dSuX?wamK~(9IQiYtln<$2rkoP%z=IL|&iqeodMb`vnSq4{Sc3ZxG+_ z7M*-5(S6D%-B+|*dCq@N)0A5VZL~tJ;*RC!F45GR(~7uo!{23Nk?*fTcHJm@==yPY z$(WipoV^I%rRBa{<*ZH3$ra0un=Qv(fSm-bLjG7c2hy!;-VgxATZ7~vyIc~Sb*HZ9 zTHb?fdZ(yK!@qHtN8vIYflaQ;6g}sxd*Z)wi zNKt>&K~?)|z|phNk^t+A45^`{foUPpz_8FqwSiU9K@wxbbq+FjOxbjT=u05|bCJ#zpEe@N$J3CVo)Zz5B~zf|qmu)M{=*0IVJKm(;r>G`AZo3~ zu#9bPMT&n@)mcL}0-CZIfA+p|+(9_15d{c%xc9j7x#k!+Y zOfFqplWBQdoVI}c8Zux2p6%D>d5#-SHIDM=lBn{P;y!R{FfD^0n~kWA%)I`eIy>C? zZGg0msw+(V)sqd8sdR*>Md#PX==m0wETxx6I**hsp>Wo8LuGL!+) zh7VgkC%d|}ib*W)H*kGAwwkeA#OWy{T?#q16p9k25*yKvSAU(fj5!x=uOnTRhq96K zTrKaVCF7oLX{R++@Lzp2u7h$s?QeUBm|eTnBuGzi*o9uNnwnCXOv|ODPuvD78s>VH z@)U#e-b;0sb3r(b)*xO!OGU4$rlJ8no%Ea@;n`5PJ95b3iY-kLNBcdFFL-Ru!DWpafY!$%^R3 zK3JI3=^x6NoQpV5Ss(@4 zZ8f>cl57QnXYLyVu-It${rrZ@3j^Jg0{Ih6xdQseIw4R0U&(7fWH=9 z2^k>nkOy^O?K>F*()2vgYwrZezJH3)mI#1Jsbu^a=rj{pmy$ja(ng9ulW0HGNL-Y9 z{YJ57rD4bhx^?J|;vHTqdmyx5x!^%@chCBPde>~(_1!}Z+dgbaLfSV%Va{qBok0|6 z0+H+pw4QkZdI>$|KzQ9Yy7cydwWC(&4n2O>NMbcWR~eXp!BeG;J*MXQyjPJaL~$4O z`B`p%aUlqmetxYOl|O4}SfE1X^)U0u0*OF?hzELMHK-Skj`dwlVmfclA4zN{)AF)6 z#95<09WS*b`&a6ZU8Kj|fnQic{4jQ!GxqZgX$3x+ev^irlgTQRlc?Slcg?L{$gAB) z=Hz$IC0w&y&K22wHG5o5zgvf|(v;3~27367H7M?mNc}QyencvBQ)KL9aVoGloy*+b zjA!7^`8v9!j5P+)O#YEOFB{j|ma~3*L37_8iOH1mk$7v;$e%?P&*maqYPjLO_r2~o zNTg3@(Upz{%)Y3r;G37+h;L!NaCvVshUjxwO-~nqO0=iY}EpG!)!DP*ryG4LxT2wSDo67wPtZU4f)tsxdCs_69m_}LPVRN|M zQ~$grHf3x!TJ>&Lb!@jd&R#b~5n&A~!nzw{#u|}^G69L`bc<9&VWut$J%;PTA4(iK z)d56%#_ty~;r4%BMbBS>mYRH5wo}}OC|(H(c>Oe5=tLHsl9Y77JYkIFhf)eA-5RV4 z?)2z0igiXHgEh>xhC%*K^a8+!4ikgNLVC%MOz%TMO7b8zhSq|Q<2vNzJ*p!m9`2^X z&mLg@Bb`G-K)arLVVT-mnIRX7Rly}CV2}92!R4rpq3|$@Snf5n z%5r~@G%SUEC3)DniZa8wihAAoaCYujLAXodixfe$^dmW;-hfT3Qeu%HbAiv`M7aQ% zp34vKrv+c0xtv}X1m((D?a^_khw59cOi|^=DVisSEe9nb;1RhY)den07!B(ISZmk z08%a$VlA8i8`3N2d5&GJ|G=BTZ2|sJ=?zU!XwEg%-Gkr1^ui;p9q4AhUJTC{f#vUC z-9L}j#DqltPN_55TV+uYb=dxJUNKVGGvYp3!;?&ILm5?7T1W_yT1Y>V$W{bu1$A>G znqZQ-kcImI;#P#~dfjHY|06$VeV5Do`S_ZA`fzl%b~i$@@P)Z~%tfU{hq-xTiCjgo z#4Ur{a$#+b%xVrzZ$4Q41gT{tl%c?4rvlZK zWMrgD^j?_!rcM4=f@lnkS`xjs-7#v(VY*hD zSpb_+1CC8^?wMDUI(Ald!dGW#d4%a9qG>A94J*)Bw^t*s5;|0i}J^b>O@pD}iu7x$2;7fT(_g)xlxrp-0oP2Rk;xh!W~{jPJuP3t0RQ9H+<|3?@i7#33J(JtnVZN(`80WssOHkS@0z&pFnIvGx@CUQ?{;5^&8aJ_OwTkev`C1_HM)V0riGocd2=~6VkPQ=czZfEqN@Y`qpq8%1Cas+fpLM^iMJ#&X zYmD7oT}j;p+wjj52wb`EWMy#J?@Vn0K7C)2h=$1T?B!IO-OCicMYby=&fUc19y-2; zX5y{Z1>ziX5*;<<=;x`O65N625Ek*d0z|zKucdzh7C7vd4Y(w!dMe|re_w(_s~qid z$(d5>Y0s)k&Me2(69U^ep#g3e(+e2Aw&p*xckuRvoh-S6#ox zDZT2-BetgNzUNk6OXA7+(lAZ5v}GNRcXw-0!B9e)Ph)ChhMS!w%)z`cQlw>rM8#tL zible$u8=-*R`QLUnviO6t4-mmqUu2xXPk}ku_{+lGNPd6mywR;O3AIa*%JeOvwAXL zHo&OSNsoX<0t}12JzQ8j6qZ&X3366w>GF|UME)taCXmo5iz_pS4XY)DxUXNAUxsFK zPueclN$Sa-$I2eFnw*>da3EBN?@A_gYYuH#7GCVS;z&#%L1wA*rY~#yx+Yl}r zMlYJ#E#QsyKKcD*Zv8m&bJ+}6(skKr!;0j4Mj)O*nb|MI5blGKYDvB7V1kJvObfQ` z4D7iZtk&rn%X{B2X}L&hAyvi+g-BF-rHYFO1^uy$}ucHss6ix91drpBqdO z8J~=(%INi0ap=6Ds1QvvdM?yfWDKQNRn#Nn(6nAvI>+S6?_wWvB?0J6uX{~eIHepC za%H;O1aMeNf}IgRBZ?3dzvbFXHPb+pdKLMaB?GNy{v`7w6TmQU29EzBt| zOAS<=7v^Vod(Fx{*fJDt6DhuJX}{i1%!-9@ZaP`)JmsoJ`40K?A|RxW+Vq>&Vqv@v zCLnbc%-HJpf_gNQY*Ps0#15}J-%A6@t@ML*0Gk4sob3 zAP^AHZQEw<4974z$QP3@ajJW*cesh3q%>0M2~}k6!A0K>t&nqu2$`fvr4mWS7DNgp z7f7*?qlU=G6EDdfC3TVGiqcFFqzI&9O&G@ENZ%ywNZTVw6&mu21f2qkB%R`m@(vNl zjS_Vv!KLiTu!yn9p)h>24?)MJ5;vu;3EPuQV38GxgO*9HCF#l9qlY+k;G4#?cdLq-u!QrG?L6YlzxY54jU*pC93`R36E6i#{?7WRA59WoQ1b>yUZ( z(3i&S$M3;#fDxd<;z#twe~aoPKS&F@!0g5C3b>=`qZ+9NHRyj;`)M0(0Cx>|$G$Zh zsRct|_QUfCzq{y9W8{bH3B21j%)7(7B^t5+Ml)g$$`gG9#KD3Ou{-cO_)`Z<;2XZ# zJD~^vfq9@c)-IU-1YD*&FDP1p2RzeehronOb@JsxbJQ(exP0HcZEN3 z4-^9I&EBPMkw)@>1-{>v_NOs@z;e#MHvX){^oQ3q@qzBjyF2NJ!1M?5iNC|>=RO$i z+F* z2FTv{UEhJ?;3W`boUD;(nR!| zZm%@GyrjAkNIJosklLZARh)7T|kXn#=RME!E`UMR%Sh@w545ft1YX( z&P9C?;q|V7j`C*B6n{tf>w*@Xl~{T74=~XMZ}Uhx@F2T?MUmKr7-Y~&DsoMJPxNN zH|^znuzXYcijq1~7g)?j?TrHbQg#l>(z4xh-9S)qSftem+5ldf!<7dS2g4E)iOLj)oU0EDVAq2wWwv;mioDe&FCH-m)ly`ZQ{`-T;a8Pk zt=(2_C7|4y*tR?ZRxJ0c;SC&?mps=uZnMOU1!a``C0hJoFWp(MQnsfBpAuGz>uwUV z%)#YlBdLIcMVEr15@d<2U6#Mg5+wXA=!$5^e}q+W2r%F@-&J7USG{yoU!Kfl$(7fz4uI5zV{8WNf;NwSQyyx zVzta-t<`eo`_pbC+$yTB7`pK_6q`8m4s|(KnZxyJq^H-cDFR*J?n8FN*#x;^hF;H2 zR$5xbSj@CM5{olCANBIlAl1*hIPB=aA;ql{Ic`pGg686rfhwEMLVZCC>CO(bN}~MK zN^pE6!@Z?|hnKTKzN(U{v|51-;LIWeeDLNMdxwI9Q@myKxs)4ij<}ppDi`BX-S}WipUQn>O(XRXDoxIF!fO!nP%oEJwV55ooJIA zxnh2MGkKiEjAx<*NP>$kGF`g+c#+{^_56mDdu-8Mb$Dvx26bv3<<&R;{&b&ZVxQ5Y z=V3s*w>$Kwpq_<|M;!3`2 z)%nxzsY12)j5jrT0$zxOzpJ$It}r0q#qy{5J)(vRjG|7X|81`PCwwT#7!~K(+@wP$ zQ9om#GqkTqC|Xm2R==Dg>Q(?cm;|O5rnX~D5W<0e%@NuVW9^Tq{H!lC-Wb>$bBmA~ zL*&pPp86k#=|;gu$wt|GjMpj-e9*G&ShQf~4!uE4p(3xzL7e>4w^*UG>_+Ga%)CRl zjDshb{Ij=Up%R!qW4FbOX1Ai41cNVwZ4hxxy3hwG9?a1S`;MUoq4|5GMn$(4n3g_t z(Xf8lp?wMitbH1oJrlQZUvkbqQG1)PyGEKOn#Qj{g9uoDL$@rUc`Wb5(X>&sd!4Ym z07|xlgIDIk)w4n0zOgx(Lesvw-ro~>x_cAuNfGkc6q5|_thdy6I3cUke)ukVP+uK3 zTLEvqH~3ZlpBqg$r|oecFT!6ozq@)SV!Y2<4KE&-R1LdV^#an*uJ~_u4Qg>Yq@CLU zg(NWT?I_hxif)w6`EWwMtbOa(hds5bxS_bNV1G%?(Fy3(gBTi*NL>H4x^VaG)cNbx z1nnWG7i-BJNKueVk2B`i8z{eV<%DwF5~m>Ppowi&P_(Ft!8;2>Jb#^GgOyt|C};eK zI5JYc<2-3j5wipCm6cm{s8+9y9m+k6;;SoUZa!OoN~1WwE4V4r7uM>%5DgiNJIqfW ze19Ybu_c+)IvNChrz|o%zkc|m-S-s1{wYPvVNVJz7hd3>_95`{>hFvv<{)Q>32a@m zi?^qlpH1FDIDDtiK{x$K+P*8 z+2f47KJ7dkk3dl7ot(5|*~YMYaAozi+p!J9@iIgrs^IIUt8(bVSlBFz9u#}N~*bMQ8Vp`)ji76JxZ6+E1=z+pujsq<5fwu zeN4Nm7`t{iCE-<{Q|ne%!>cL7cUME;nj&l3Ea-1IPH8afGidA-FGJFJT(3Blj8P<6 zRwOZ9H=k?}@?S6f$OqS5KB=g1>F=D9%Lk{<2cO8CO<{9aVc-yvYA_o!cmPqo|aUK`+LF?5SG#EGE6lySdSnC}7 z@Et}U7te^}C_`RF#N#xXheI(}AKBPe{ifr3Bj+F6U+i`hsdyAx7Rt1>T8ig}S zbnIcm*0`I&X2+%e_*cD`!-qmm{vzwYApcXnXa2`diMY*IpM+G!#mUmnT-x5!&eZAO zH9tgoQ~E#=Rj;#Lu37@8d56Ka*(wvA+4oNDPDn@*lmJw0SAJ8IgpEoHH(eovAzdS+ zd;sO@AduD?F?bp#RN&xf(=rnCEGV*54i8xPizApzP39z1n^vXqc zVs+|4y^vavBb~o=CslW-uWq-Sl`hvGeC`O~RqM+geSK~qB3I}ACKE!Eyqqcm*2@b2 zi)FuM6HGQdolyN@Hmw5!=Rh83-(+M~j0m$*O8#5PDSJ(^8c_K&@ zi9AnRB(q-7P7|&a0c;0>Rg)=WfhDR3YgIVcMcnZ9-uf+sTb^@Z?0sM=S?JR-$Y^6} zLU3fv!6rdq=fU*8E@T*KTI%{_VeCmNOuYm(Vu|pZU#?+<@Vxl<`YNIMg9;@4vG`ne z3J<@Be%)3p=B?cQfczGk&*@SyBx+%nrRmvQp)N<9Q(v{UA}*T5pxI zso8$>?T*~IWL48B9`l0jg5kcG$=Gu18N$*{<5v}LAFqm=6qfzf`%U*VthI5DDjULD z+l87Y-bWV|rnz0c#$U*d;&C+aAmC?Sr1mTotg zY8}BFiyHg69Qb5U|c8voZ0$oxdoZ z*i4F93=Ga(PW`%?`kcC~71;F$P9IogMTWIWCpt5Msn?6R!T}$oIu+!J)Hd@ytK_Tvq_h6xS*BtO0 z%YK-h$|7k$#|qLI6Pm`Mn*xkG3% zSIfM9eC=K?M3yJYT$XHCwme40qIo{HD25dl=Om$F9%xZqV8q76VL3F!5y!X9Y%sKt zs}+qTy^b+FJ7hAw$pNgjsoi!y(A)@BWn*jUSRNF(ESYZFYOIt#%qC32JE z+v`Bt6eJoLCSOsk4NP|ucS9W2xd<_T;}+kRbCLnmAFS|SF0xkSBC{OJmo_S zKSP)0D`W3;oy@YmkI8X+kFh$CG<|%gOMt_O14K0T^-BD%kc6Eu1j`#{#a{pQ?ruA_ znE+ddz7GWn#4<+P z{UM@%M>=npiZ?fRx*q@1>zr|)?LM0o*j4`qYp6aVkJV{{o8+h~s3;@b_MH1oNoFe6 zQ$}7;G7Im3$-THtl*W^VKJh^Er>MH1N0G65HViOmB&dh)TG?{C7CIpgJC1*gg=%@5 zNyco(m144Ek^Br`QlAkr;W*uS-61^y?=U8dtWuZhq|9fhZ1$vz8H`vV`b50MD&09F zD=xP#u@NZK$)@#(Hw$ZvW_fA`-H*{2&dZRbcGERi_K$)gEBRq&u*aH^5^9)c>I3DP z*M+VQu~Oxy?~5s5?0^i?^4W$H=C~@c#wAKD*U|}Q@on5O#zIj#X$7tIO=TaM%t>~u zP4Vxch!u`pO%L48D{W$7y1;le9QJE=^f80=>Kq#@7O2oi_jg#_g6;FSJEWHhU)tog z!EM35$j>sIgnK^%(o=VNdyV{JbF_(jJxvCIJDMV@83k_OcrR{it{nVO3M%2Y_#Ofg z|Jd2GjBs_V7FH%Xkof96w5sIn$Pb~9^&$;gH*Fr)x+*(@BB5PDR-S&ZDuA%1E?Dbl zQX5u+b+`fLpisLU`4KtDSxp?uLe1@le#rX=zgUOu zv$!A;XjHaYC0!)D?V*ZAUi)XX78ce>C#W7L$;?I3p%w_Ea6FM;FDwk1ps46aVR?xX zOD!ylAa|SPG(k5_{5F^M8UBOdS1E7uCmOI6j!?|;3*?VI611PBpM-zlN$FN5L?xRG z$$KW!`H*!3ueB*xGD2<~g~kq&L^jD?65i_@bE5C-@pa`lxxH0nWHIiPcZs}moW$9s zy$hH-Zh!TE6CTbLp~&RFYRTLe>EZ9^l`Q{!O8?tL_&TUY|DIg_r=5_fCxi2svEYF? zhgK`WibdrgML=cN^k`zIu&A!_kNomTOPD8d@+?bDsK!$}Q2)qJ;%DJv;rT56M~Mg) zsT5_|jj6s2=k${<=b5SZj*kxzK_Jf{vtj|15p|zEiOS$R@;GYZ==56;hK;HlM+PSn zVO{Y&;T2UJKfp_2rw)Dfs_uX!A>>29&|*1+?H-;dZM625Q9dQ7oo(S<65-mXFf|-K z@n_{M0%ZAzL(EO9XKUa4A4Kz96*n3Gs8CRA!5}NMN}K?k(~J z9|>W#)~cxz*iKhm*NYrCrCV_GRqw|ib>k`TU;7AKhA;8o=&~|}TB48;qA>BYcZ`NT#qnqQOkj;baZIx`v3Xkpih`Ht1f{iRvZKj6 z@ENW0jLwQ+NJ;PSU!Hl+tey1gYvXyvw|Yby0H2~W{9$_27NwGTgTLedgmRQ>@`ri` zjx%Jim~dmHE6cZt;E`dIMDJ(Z+kHg@1Z0XffWQ9>abW*r9{+n4vA+<9^8eXsQu~jf zJ0wn`*kLtlRc1jk5m8b2{erO$r4k^J7&UpNm8_i>W|DsTTKTrP`U67Xl=I*<0>Mv- zCSoGm??s~gBJ591i${k9GR(=#_FcLwc?oIMKo~sU5pI+P;Q?83%79->=&hBb*D8G0nt%*;D zYLxk`_!YL!k4qTGA)^9xgaPZis&F~FN^+c9i*Bkc5+Pz17`n&yKGGYkizD`A&V6Vl zEFGRB_tRiH%fa@@?J{PI6;=v5U6HLO>#R$K1Rq>V?0*Abu-shEa*0>?)(_3mXi1XO+ z@*O#pl#lcIiJy_!*tpO+*mUMNTqJgl^Ep#LyO4!zYIEk$5e!Daux2McghphT^-~?C z#N(nTnfIB!$g;EUP3rQwE6LI zYdfe3MduT&qGn5U2T_`U%@S4pzyUxjd*sa4&{&MXfnBwg|M;FCMHJ}>cEXtdQ)_Gg zswfC_M>*caLR?)4XUD8hmN}b9HMymw=xMh z4h3~Mg#jI%pcFGv>tKlE>gt^h!ClIo;9!Qa-}tVNKt0mQbtz@rgH{cY=G^lyIJuIq zXwUd7<9@Vz)@4V75-jD!{C@%$EVO-4!r@qzcdzA(q+d-i{&Zbm7MK%gq&_p%sSb$C z=pkig>jf_pC+G!h1>K!o3+$5n^;`XMw>UgaMI`tb;y`poRS{}WI|Zh1efY5@nn*4C zcx6PFu<>1A{!Ely(y}C_5(eq>cU)kWi(-Gbx|_SI%SBIT=rU59gwjQG_Wr(q=<_L# z3t6hqTZD!lQl64+r;tu_nC)`i0`+1QZoU?maABIIRjhm|f;}iJRxoeoyf5rR9f2%a z`w21hxNkK5GFhaD=D^93Z}{`(haZ86%s8@cZ$G1@7(C@>_q7z8t3rNAuJLd$+Q03T zke&(We7{nf*gtB?|MME5nw_(yxt*zrl%0#I`G4=zDXM=d%471Sb-U0k2LcnT7>>!T z!k-Umgc5=*k)gm+j{j6S%j9O(Zq!S?EIqZq9h415ViN6r?I$qpYNdgcYPHDBKIzGJ z&U@hPZtwN;=L3ruk0m6e&}kDxOitp_3aZQA9KZLJv>U$l8K<8I10E<->Q6^C@QP=rPMr>2$d` z&gn{Hrak0k5)-Z$&^uv8I9$LP9 z4_rWd1P0u~t+Kct`|32|p%;!y5215#sV5ub8`7V1%eq&(dug~5;POSlR4KNVjEu(% zpKUDp&U0OgtN;Ep~dpJros^-ybmZqg~b8+9l?rQ)l z37e*``&#>dkl_EdzLvAuKj>?5{yl>H`k#ost*xbtt*M>MUpk{wCSMO<+D-pGQML;* z3Il?O5VxO^_lo#EXuI}8^N|`c5&co~;YbH5U*4%v#kL#L1EUSyp0^;c`O!QnLz10g zyRytYN!!zYzWzSIWx__1$rB8)XEM`>CAT%0>cKlpyz_^-n@xC=R;!zx0c!m8MoEmDvZm_B+6Smbdx$~ z=}HTmsyI||EGjOrbd~fPD;!#@m#Xv?JoxOqW_I{W)Zbk_JqmRbW%zURm@x@GA;OJI9CvLuf}Lpopc4 z!dVl@oJ4ae5f_JG(V5c+vFqh+5VMBR>vQ^f(Id!=GboX1hNuTUrWZUD$EzFfy~&h{ z_LylF-WiX>9L+Er2h(8+-@`DIn6pE7lLA+I;tm3;Ksj$6Q4MEDr2<3s9fAlcr2K@oK%5B|$?gV_|= zPNlUyM%f{R%at3@Fh!P#_-T}S+mOt&0Hz(%VB&|e`vzpT-zRB&oYno8{RUl#oKedB z;ga-Ch50WBU=`^0KG6+%)=zR0dfu%@3`P8Um=cE0$q9M`Yi&_q@&5O*H|?51d9ePuYml_44-r*!`Yq923KTrT)Q=jeM>fVzHqf#Z5dgm<#|}g zN?oPwGPareHg(t3b$W-|inLmbOqH1DF@sqr6d2{Fh?8l>Y_;{Baa$ihYlh18fWzsp znN1cmTh2jj?{k4_=E=~S^-xpjTaM^BRGbz%`qvISL~~q5BqF55a2n#8NXV#k5GOF{a&1%$N<9x4NzcGBs6(ZSY;q_2$R zMB!Rcep8Mw=p0eVz->5!xHMa&LE(hsa@66L{87Tk;(KOn;g}0T``7aZCY#hOwDBx* zt818iq^DDoN#Y4+$ppaoJgc~8i)~d+js{Y{v^^Yxa7GnX=&IfXNUDn7XS5$NGZ=mf zbO1Sy!o_g|3)bPtJDN`=PEK(L{ZQo-mwHJ8JJoU%%3ur};W|o2{t$gfAx}XWisKH) zNU`@=8yQK+(jT(rh|D|{jiE8fe{P{D2l~F5vGeRY)wy|b{p$#xc$mH67plVI0QRT? z(!O2j7QFGWDo$Jn*6qKzxQvvEnmS*>OZJca!oPPqHvK;`lai~E&HqSDDarPKna7Oe zO@f;ia=TKhpc;j{v^twcM#iQilA1x?5d@nsbY3+i+f>`&LH#R!855=@jc?%?-W5lj zSK$@K@ob&0`S^OBuNN0L-!5KW2);FFnm}5X`;6K#!qREC9Q6>c(xzb{la;DBZe`YO zKW!rr8C&}t+f7#H;>Z@Nf)tqKCb_V&|wzQckIXQJ#n-OH-H%s zQ_8dNSiQ;%AR=_UTtlw=Pw4nz0wPCV>A83(;*#Uhd6QIW^PK(u#CK4G?}!n6e!*)% z$Y39E3Y#7+qt8B$B5fBZN;Ev4-`{B(wjF|5^WbJ(2Up8D^gVVos_+Q)Ee`f7=qHFjRU%^ZGkHO3S|5a8UY)oBDl}+93|DAWg`1k+i z%BsqJb^cNLYQexuNWj3Tv=I?a_~-JeBYn~ltDvC514X~rgzg23l(4L2AiG}W8D50i z%AqO}&&R-gM!Vw^!#Yc3b|Q4XKQJRiZG zg}PxGx~$@{hOl<_;WD()-P<$qBo>dLVt}NZJsw`X+^23GjEEQF=S5=t7=Si=r&Z|W z9pp=})N5X$W5M9A$#{0c%54@NeF+~rs2xC#&YzsENsscIX*AeWN9@>Y0%kCkpAwKp zYsd1U7CHVkiOV2)!H@Mw$mbr6#fvrg-PCzuwyK@?(Aj6Z6-GGf;YFQ_>oFpq++j!Y zyT>VvT3n<22vm+MJrVg{cCa{OZdfx(r; zk8Fg2*38=Z6K&ysNU%uYqF?)MdmXazILsSNm?AK&NG@KjNgv1(9NWzcy+K68zZYv# zH>6IBr!aF|L@gm)&UfS21iL@bBDy~C?(|5}AMv)d466%RF;l9!DX{Hd8`);Iz@uUi z4uhoTw)_oI)Z%afvr$@jAO*O=+lVfbByVLDy*l0%UpwwsATcOt3!ov3G}9iAZwA)u z8nOQiQmnRuz&m~gwdg-~8~;Jt^RJBTWb?lPVzru<%GX8}ACfd-%zh9Iy{1x;Twg#z zkQ%BMP51=)6P+y}X0c?W1opRrj|;d@4a)+v+sM%{gn#lux0JMyWeAqRb)t8V^9|ph zh4=TTUoZiFyeM;suwuBKq(9DDEHj=Ni@k`6ej4&-MIJhNlGGcPzyZ;v@Lr5G{&I;v z7?c{s--b$Q<(sf8P66?gCQ+YRsczddi!)}3Y2!17u_&>TQaCD~`=x9!-<)hm)+|YF zO8T@U$)2HrlgihF&7r?;HiC>eVUnaxo7B2*zwb38kCmC*_`5mb*ZPMeO|H~weR93% z7S_3UK0CYdx_F{F%+g4k$bxP&(Zk3^*Pe}9>FWMKS*0@E)Y_|VN~yPdbb@zHeIJza zppV`CA%?p|jsDHWV(R$R`Bo#7c@NpDmAOaqs1}Ru#&IOkm%F(-QkWPnlB4Pn6O!$h z^AM-d6w4AscG=6H$j1=psRqNMm@^%u zMx-E_u^j|Qgj^h5v_hlpuwo#cuoE4jp(QF{1#0T%*BFoZDR+@P!px3vfWeL+v?n1&Q{<*n>NF9d0|o_Q zyiU+_-~~mg_P(eefL-s`b&l$O199)B;4uv`Tgv@$@>CAS;<6Zd-rhhdh~7|ju_vxs zGY-bPc}t-@h2KpbbQ_X8;P{$K-oePJ72!Y#^CIEm_dxiC%lresCj-rSoM)847N?t}OU2Yx3uqt@(z$A8YH zSQ5l4l}d(Sp>Cz!w?taRl}~iHSdkJ)Gwq0eP-+eaOM~nE7v}d?%g_-28V5LkkqiGG z^Z&iW-oGG|lZ~vUvx}7Ie?b11eEb(k`YJTQMB0k{k?4mqQp$wtqW$+oAbKt(Wh5+| zr_@afuqcW3Qds{fG&xF<%*<_$djgJo28cH@Fa?4kwDQ;gDm0y*NjJUxH^7oV`9(CB z7l7!&Uz79g2ApX9BlF3#TKT{&L*5#NmL!!n?tB)<@9)p|?x|;gv+#fSX(Kj13^|+b z^vrGeh3zg{;<~KM5ffy;E~LfBmeBW^5~O=Q*uHY zoe=^N(ZDWpbCwMD(a;BC%}0@RtQ`00@LT@a;ig@vbXqevFBhO#*?=y$Ig!CX3uP5! z-c7U}egn-CcfXQ(q;sJwTo??4OfMZSX^}WLHJA76lPVFGt|Arc*eq)%QYrUa@z>J9 zXKd25DqFQ0k^+|&hdKQw?~mLFO8U?eejXNg!D_Rg4zyDJypx#0$MF?8WO>&e6MkfCLyqV$1V2Pqp!%}_PnCFbV}qoMM^gXsvmyw52z9AY z#l{7yjr@m1V6Yz$2R7nxK(x9A^TrQoOjJfvLZU*vL15Sn4-Qk8pXwyqKVZTa_3~Vu zarv57r3H{f;~j*R=-5&na+nvJ7LZCHPZxTLI|99Y5#|d%;1cje(;jW3Q{rhGh=)*+ zpQ&A?Dqt2j=VaQdM+bGTDxFy{pfO<>%QAq0#PjX>m3=i>e!%HA@n4lWB44eoyN z;O_43?(V@IF76NrTnO&&mf-Fd+#N!2cY-?s-tDiuXXeeU$$BrW0Ds^QXP?@;PE~C? zLM#>ThoEk>(2YjJHmxp`J6{0G4fH1R~Yb8H0jYOs(66F(K)mdQ5p!+TnPke)qa_kOXM(SfV(-19B<}SpS6A zQ*&{|r_d5(Sm4pKMX(x@8DzMR7BF9jKLk0~?5y9`sU)rAy#CGM?H3vahpe)u(vVBc zT4{r$PEW;2uJcv)`7%da*!7s=Mm0ZI!2HhXLf9^Qv7cK}^RS=B*q>Q$v;+4mn>qFF zg>A*#y_rU2<0wpH{>%1*e93~j(PP5~R!=V`?-qp zv062uOK2r418V}$>{j}n=3twttZt%O$o6XCTxqiW-AL0g@Aox+HBtW^P+%$Uf-ul( zdV7s4=V_PUYucXXoZ-m*mkHNv>0~8Ce7qKGBpnPcYtElTwes(Imv8Wv-+eM5k@#DadHS~)JjHv zkits(QKCekeo4wK)+pQovB80u<~YsR`B`j&MAxO%{SZA&Ua%;XzGMGJ;3k-PSQbW? z%-5Faxfo>;`&Pqs>C+rLcD=xozjmqk4Co1WISkfd~M_OR@)J#YOJ_ z3cX33-x#j=T?-^x%_2*> zTy81TM%(MyUviy<^(wP;zQl8Z(zYU;4Bi*;ZhY){17{cqO(TkEWSk;};pCZnO3^w5 zx-9Go`*7K#+-!Ps$cR<3&IFI;vD2YdYt2-l+QU}E%|DxAmQTJnIVdS=)}#2(%Etx$ z17MW>#v^H90OJG4#r)p^>@Ujrf0w&9c+R%~%T6r*CyMx?0npcW1n(Ji~7Y)rF1Yc<$sgo zY~}g#GQH&d0rsjDn+dYum*`x}4dg2GYV~gvB=?w1?P5|BMg<-U3YeFeP5@cFtsXRc zT57REY~rYZhShe)56|nwRCl45GNv0yJ8fU{iqY7y{vm&XutcX`j;~$UoE^2a92*fd zGaWYFoV&5dR=aY;33~JRqtsy7A%`QadO)~cin5Ge1fHaZ2^g8Fc`d#^X*+WUUs)wbS$e!U(MEn7e={edc@rWE zB$eGP5LQK0HV@G%yO1r_FwC=^gmsrSyNRAC$At>%*}m@m@6Ok?`?EBF?VW4NG2O2M z(#m{^US*gZ#CE`$daXe(apsZxmpLp*nbS{801PJ`hflsYh;*F-_d&^<0xS1UWbh?WqyLv0{7=V^YC5z8J^SU}H9Ih|@21||Ggj8y{EwZ)M8WM!hoQ*pX zpe~!ando@XEAQ9_8w%nxmxGLAKQ}T^aj6y!)^C{4PyP!?jQblO_rS(7x1>w#qz^V+ zyy|RBlml~J+k};-6xy&aYvm59UpO#$5}Vtc9(A`o627_)U+1e`=wxW5aqQg=|LbA& zJ{ZbrF+M2W7BTzB=@)7gX!PU53l`E4kzIe5cvg|zEYx}rK8k!p+Ga1beMM5IS~J05 z_&hDT4&$LR;#|m4k_KF*-BG>~XuMgzCZ1(SEgnBoP6HNc09>MWr4(^p8bbHH*5R?) z9$?T!%*Sf{<7%BaU+SKw)BhZqNXL*88~&6ce`1&7kwifI2_XTIpEXCu-(M-s6QL{8 z9V|CE`k^&R*{Mb9J+v%^bUhYJYc8q6cEvtk8Jd5`@>bQ2V;*)MkicxF4IG6#+nTY! zc%aoB+HO?qTSvrrgZvlrD&!$!vw%zS4J=&!zn9|Qhdn6`X)$-OWYx^W-SWT0#losO zxSxdG68Y#`2#^&0fkiqZ)(B8jQ|(2J)D(@>x>B8YZ-HJ7wT0vmOdXBJHGcdcoV@$C z%Ib)SyAtJWNm75mQo-@`dU(k40RbRkqcy|Nm!dYq-jh$-Se)W6(UM1dq|LC>9mwc; zS6}PUivT5B>J6S$y7(BY7Ayaoh9=pFDFr{#%tUP z?Vk0y4@TNkgoX8HtJs@tO~=V;DsM1wCv^lYWzuZjDFW!3jCL!PfL*?ukr`#q#d-zu zYJF+)?!*nnh33k`{VvPlP(>k^H!D-@or+^F;+n%)ho6FeZ&Urwnb?~fvZYyW<2r?J zPJ@|#3jxg>MBRas1Rdx%n?ex`VumO?`shp86UA?@Kcf&+X*BMJO7^K@c6Jutiz5n& z=GCBOBSPgu-Q#JGDcR;Tu1;U8t}9unqtPHbN~@kUgfCoumZAseWviEcl6PCyBg%oG zJdqr5EFn^UZ1^K>&l2c)knJ`N*2jSVuZslrynjHKp8HA+ftn{`+++ahi|ZlLk_L?| zqcxdieStI~%b{ZYK5!retRgOsW4?7+!G|=Tw+}tGmg1{cy|O`y6+Qyv;&vPG;pC%DzzNx`%=R2hgMpdG6*HZT zUPdkj4f~5*q0Gs70t3PfD_az~pB{iMM^yctky~IuksFdTN8th3D9v;SA|livf+dIh zm}WScW)Ar<-3Ja;vU}|1*>OOMZx9041JaF06S|D7>S_oLlKHOOqukQ|i>V{7i9M}HIC?bX7W=wjDp6C2fj3#g!l+m>FqXXvma-L!rG^LVVmfT*q*qY1_kA`7c_F=#w#wP26(^4pbt!X@S^`gf3C*`5>it?4^iFp7 z@W7ln{6_J#)G=lwl^3lHZQ&rH3X0~(XZl5B&ht#yYyt{}V(;UnErOsQEQBWLCF5VT z3pvPI?M3fp?QLVdSFMDjftQA#LXQrw!?i|`?l1hIi`SKIBMD7| zp!{|7q&R7t{CfoC2Z_%PQH$K$w3Kf#_|=g)pnP2jp%ofh6^uDyaXP!a*-m6jF~67$ z_Jhbu_-E*m&OGaUWedoqMt00P%+k}`0xx_cr12wTT8fP!`BvF0Oy*=@cXSz=KBKPq zHHELSsk-0SQB3B^kG@}gK;LXIq5%E&hHZ7XyQ@)=AF*6z{M&@YnMu112Bix3JtG5wnzaRWL#xmmjXcVx=Z1dmK&fHx3M z3u6T~1k2|+-=cL$Y;2bNPi^p800->fNqQ>X&ND6-A8c(asieCq1E6+XqR?)BA3Wdb+HihL|fl3@}%)LmUlrmRDN?3^P& zqL$mnin}fxVQ~m(&(+>z?jipxn7TEE2PMkj3Lk`oQhQIpqM5ma-C%LKT8iGSIkV(p zut^y=&CT#TC0~}8e!Ddk6@iA*UH&L>hH0DfOZ!aaqYFqO=7&Hc{1P@I%NYrKTZaT( z*G|HH*bdy)c~O32JUkDZFWd@1)sTM;(0HAl9U81kf!z^9f;$5HBgc9di28HCa{0Z$ zcYtdqhUy~kmul54XZmQBo&Ww90_TO?^>Tb_)CBzoq@;H-)jRMSiQoO~njZ8n5%`=^ z_{Q2mWL&_bi&`&TBkg5h(H1iE*L6!6Ojtl8S@9NpU*9)G4q8YZz#}X9gqCS_)DIiN zkXEt@C43>gwArZDzGwtDne_B%;qBA@(C7v;FVvRMHin7h=s?9W_)q%OseXMEW4vh3 z8rRBM_{xW*B@j%v6u+lp_vYynR7t9Xw_$QLy=~yKHG;?1CXlZnnDL;^Ojl4`u4VIFcOm>w4+mac@}L)uiPEH&Xl>*M@##jT3!6qTX-LO;GE9hKCEYxk%Y zNk`}sRhlKT?Li9IVDC4V=eY!}qO?%xQwX+T3CBbb5_@=rjvp265Hm?aD`CWC{0J(B zjYyfYy!}Q_Macko{70u?zXDL90$1SsUy<(bq`Qi{jisxsshiDz7)s5He<>4$oT1uN z#zgmrp#ji_OJtU$q#;`$uw)}R5-mJj>u;tmYzP z^3QU%b+rf`uKB5CJ=`pT>54gBOZd}KM-YxsTSwna`9*a^z2mG4QTM=%UhPx+J}yT| zh>oZCRlHbITyxc2!sLwdKIqhKd{Pa&gg$GR`$2AC)Va!f4q3vu?bEprcu9%T)V0qj zH`At4Rz?->@nYd2yfK!n=f#gH7f>BF`m9S-8d1v+R$nfs-%k|^wFwob%{|UmKC{eG z*!a}d!Q{^DPR1)3qL&62~w|`IUb^4t9ei6g*i@72XoRwdi z$9o9HW*MI<=+7}X2rkbz3NGCOg`mQ){fmRZ8{&Dl@&sQ^5{3Ak+q7gfQ1N0;7=sJ% zmUvh8)OUMLaO|1oCZ7?vB{jC)OyoTIWx0WB1tQqrNp7pk7CXCrJ`ovMjk+RPt;dCt zW+<$G?YQq*i%PPOFjMVkT3ZBSJ#aRDwv8aAtgnTaAXs5#tbZYJGMBU{BG6|m6%!+m z|2%KR_=zDv3H)bIbuGa*QW1dVofVfx=dRJA)3)?lf0e}>C$Y`WFS>`EudwB>0`Mm{*(vk6)BUr<|YlrDaEJLsdL-S z1=6-%nba{L$H3yO40sr;U1K#FX~dCzLhxm$BQkS&3%SEaul6KXTB~#M`UJ_?vmUiy z_U>Xq)=`_c~-50&AxAJRQ-#p^~!YiJuWj{FBq(P7w$wkrb8@ z{LP;pYON~qW3M6wO^5GS5^4>^HT#GW{HV^7YEAke5a6gjn&Fw8*i+shYe0;U+9kV^ zX6QdZ*o+3SKK1CVE$h}_ifr^CCZ__nh0nhr{YIkY&N)LmS!d%ROF0|dxyXol7;qv= zjXHx^>r^>^JA|^o=l%NCiQA! zn7pPG&gi9AW^bco@GI{tM%RwHCch*Wtn?&EL@Sucb` z?tU5I6q?Embs^ji5yjL)>Rh2BQuS2AIjOOH%hfN1!GClWzWjyha9{*!{VRg}#iR4z zLIW#>{uhammVpkKeRz`|C~%oj@6eCTgoKjxWSN9)D(no=vuJ@pI1Rrf;v+(l*<_lxm`wP zE^3uc1|b$|VgryWA75h}kD+hhtS} z+841txpGwn+ZWnwwkE2{Ic+)9iypOE*F2b8O*pmHcQe>>b6sxiU+cBnMfGL%bx1QK z7ueg3MdB6x?D9tFF1nIg5uO-C zh&qGG02#g!FT*Y;BzwDQlBrA)GX9~(Ezo>8KiVog&E*5G#m50Ed{n~&BpnN07bQ^W zsXzY!SwFiztLulrwH<2O0<;#Y?B4I8Z;AMa2h8AweujbveL@IM!q=ao3CC1{;aPGB z#-XhUZX6W7;V+nMDqQ9tux>N(N`esN?yw+cMA1^zKdKq+WyxwHIf;u#S|K`cLbfN9 zT=smCctU+|zs9P9c{CrR-tnPa3iHSx5#>s`F`oY=EnKiyw>7yP_A2Cycoc;_Lo&WA zmKEPmK|H-}ihAQC*+U28ZDwqMdgA5n>YX?|uM$DKAsy)t8!)^=;OgD{^)Qe11>)KQ z!aBnCd==Kw2k9oFAdR~?kJ2ew$~}>ixiBS4wKIECW|UB>>9%BGk^Pd@$GF7kDPqLe z=LwxzTQ7HAzf?Ij?X^)3%BOrpJcPq;0MmAaf>YwIM3E_dn6kNJo ze^p%ke=A)uIR2L;2ixoZMI2T;E1cq#+&e|4BO*!P=Vrp#Nfo50OWim3r8M^%8EDhI z&;*>An>bSUnt@ICB+qI}hmaZMWGEbmxqee_Q$ABdUTq>l0k5#1J|MtlevHRE5!wKX zO|f&LoPwOhC4*r?Nsfw7I2Kqa&ba1$gZfuQqH~E&f z709lUtGm*DimtBQ^VAL&4l#28ui2+1K~p$zQ(4zw;$oj!Ghug}u}Brd>qW>Rx!(j% z_jcz%kB#k7x}-ATL4oz^&HNdyNt&&ElbnjGU$!sh^h-cA$4`{apy3I1;HoDg-SJqO zzOnLK(wf;3ca`R+4MT3s3IrzeZ$6^qcu>Kg99;8fa=7!T+cyYQ8y0Hh@QvPwaL~fU z*3mGP)x)1dy3zXS6igNz1H$my-(wPgw==?ioCotwUKh|GFpGX^ zRS9jFWUoeDWmFdHGewZ0Y?QT0nW5hP9%_ymtH4XPT^y=`smyUJX~+9Y1{;KJ_yjK7 z$=#S_6C`$$yR)W9=L21;7sH5xb*zo7@9sUcCL}3kF+DPr<=FaIs+Yn#SdHF33J{CB zn!Fa~6sPBS948=*&bzz`y~;dc_RYw|-b|w-)AOEdfSanVY{r zikAV_ct40ZA-X7l2+i5sF%n&xX{EzjnFd0mjZIGnjqn4+Z_ErMUf4CE!&)f@ijhhB z*!QD2i{KuPf=rW%QQQ+s;&Q+9KVv+ENXN{qNNNJ2Kbz)y(x1pd@h@Cl_Jm8UhXg6T zLRb^OwYCQz@^u=T+l!Jxd8kJkNJ2?Lx^RWJvP6B0A(=@D7swr6_C~G4Ngb@LwZ3AF z%J@j^P~QE_nCsZv5KFhXB>IeNbNhMG^2!3r?KC1Vls!R)XHdmCuuxnFT`XB2;y4D6 zIYn4WQquMtZPl|Rw+KuSJz*nF9V=rhnNY4@TJkDZ~Azi~Vn@ zY8&VfYJq8zP(^}L@~((7T?jup>R{2Pl({IF$jFk?2y;LqZPlO7Cmr&F62T+8_amGG z3n^s14D5_K(6_POP@$BSKqNa$Qq#&tdw|$Y$dA$MPt8n=70bT9t>6_gn!nsqZKEPr zkgNr!zCBA$&3<#A!~N2(gw61?xjkg9U;#gNkUD1XR&RawkPgd}@xs;eW6D)Xv^4&( zMJHvE+|W3C?6|j-bVD=_eif!N@>|axF699I4^IN=8H&2cE$t#7(1pAomHM-dgIDV2 zROzoDPMw=Il2NG(p7)GPV+-`p^I_UBdm#(Is)EaVuYUb5uludFxYeb|yzTB#v+LO0 z2P3WR*0FI+Z=2e-J*C?@cQw|+@1mZkSK#X@A{klpYOfl2-A@GHQm{@?H` zYy+kt{oxqJml$wN;(q=g3u=-_;ipKA!g)7#S>=PS1GJ^{!#*H9$0Fo|j0)6H2zP}? z34O=hF=3n~`VKiY5a?!aTAu~@b4e?!i_G<2q3-OD(p7a572PP51}fvr*Bex&A9S6ZQNPr|h5e6`QJ>nI9C1x`Vq}3WPxwvs;Ml3atj@ zp@n4BBWgZLq%WZ|#AJ<-b)m^)(OQDKy$f^q91An}t?gADjE=W|wtmWP`gkur6h?Kz z&vA?z%YKzwsIa%mk_DJ*$f?&S%eEsFG|wtirSRWA(RUSN&U&lCH}o& zFB(^~B&u?rtS_#Tl6ri1nRbyt=I`S5Ge6O1DBmwy>Z4p`K>#`4mLA3p%tZU012eQw za}#TmEKD2HxiAc)w|#d(Yzy1lKRMo0)t@!H!B*O8q`y7%|GkCLP}Op?bX9hCxBc&$ zj1+JSgQWuqWCmxe80-=@{roAdijWnW(%ek{7=oUHLr(QMCIIY+Y@Mplvf@DwJh}KG z@`E5EbzNvd9iTa+_!H7d)~pRuL!Hy8=gYz+`L~TJ1V=ya>)hXLoMIZ#Y%sFx%;+u z2|bRrZsa~Dh-HJB@a?&@TCd$`p)W}~Gr?zkM`}Hj4wnHkcbVOLl!GX1TNeuu&yno} zay4FVjPjx{)!MQInTlv!DJqQr8qoX+mH1sLCR7~{bXIz#_RVnNXHKM}Acy->Lu+Zr zeKB{^xU!W4IC1F|$Adrc!vcY=o2*2qK=bSmSufexckS&rp@%Jmb}QaZeD*Xwr#Zuu z=*IbTM?h2`IjCgQOa6spe-h8~m2YljJ>dR}aLT*Xq7}E&13cS={ zDjEw@S)P|_yD>D55-iWF1IzP-6E4d_-7tmCWf?yzt^*{>aT}#bdR3^0aP_H^3cuY; zeetqKf^$^$=A9+RCOOG~?erioqn@oQ36R*ISNsT1Fp+1%Dt+i#^UE)aF8B<>0Xbp1 z%ya+j5*Dkg_jgVFx%(H#f=dCKKZ}wtH@7D~HQ1nIiR9)$s&K{&AP1VCvg_&K$7CJB zncw}0_Cktc&}rEI5ppn4M;ho7V2^}<^(Q~n-M7&1h25RX;#)#0Pm>02L6mp(8A{nHJ(OPbvU&(NQneb`sY!osj`}c z4Qa`Mu-ocq*gF0>pF66+D${_p-;lykcYvR-%5NX4s`dM)N9hCg6klPU*;YYfsIMeG zVRa7AT-3P|rBrP(MRw0r(YU(Hy(p13V&W)RVYs^MyF7n&U*(l%#Zb23(outlZL!yh)!qkAoYGU- z7RkEiWQSdt6jf%)0vhc+C}p?fkV5uR3gzmwuadqawlFkSQKYE+%!iZoM*G*(QDvNI zX&$&KYX56fMDtL=Z3;%bfxePA0$+QV6S9~E}?MJ|AtdFU$Raz=yaa2SE9u^sU<0i_f&VUi+wv+$PaNLYyJl$HtQN;}c4G$LOf&{Oh$ybSCLQ4;@9 z*%z2VtDUh9AdQfNEyCX+6PF|Yq`lE9c29p9ngB0ICoUpPZbI>bA;to~a-2_ex7w2K z=e6~Z68bv^o~r@a&szs(WdHAatiL!>YbKv06GY^J8HaYD{1nr>e{1I#4hv+^hY;NpG!_HM@=Z#|&xP z8xA2ZJJtXDBItteTg#uvC$J5N^Bzy|Y5?O)kPMHzUz&P}q1B}pmw-%Qq+fqMw!~ug znbxtc#_xbEGI2ez8sbbYBcXtGRXbm)r4vJJ*WBBmc$ijQ^l1~Ig52^*%Oy^|y6DDE z6YmURR?UXWWV;oN-}aatg6STp*70xQdt;fV9oECJ{V=}+Bu*P~exnJAc;93#pH16n zOPzDT6`8SzR&_&RR`rx()hiiKni>UtTYdgYO-f2i`$_&Y?N;RH3S@>S4C!=BS(NR! z9F*;CZ}OnZY+6?(wsP0r>Qm{I)We-LohL3m3jap_ovXE@BUw_BAalxvHo59gy4V4* z?4A7^3@7mtKhCR;0au=QK4qYU@T=SDv^|F;qK4JqY%NDkgO_H=$6G3t3_AqXQSjTK z2n1FPW5!DxwNR24N$=W$`PH=n$wy#XR>}u*-Cb(p0c6azN;tOhB34SL#5D(4wr~K? zG3h}a24&d9R)AG1mn2^# zF5~2K>NOOZqt~u6jLl-;GRx=Hdc=k^Ie7KTt-1HwUVpsBNIn+MEj`E?K6RR$<+h4s zS{tXynLKyPBikJEXIt)zr5OB2VdbRuD^Cx6a0UMQO8u9dD)9XEe;(fdj9?|n)6SS; zfZ-mfMuX;xWSlzvS@jB|R1$-7$LMrwB}c5pa;-$_fq6)zWmqo_Ph0irH>@t-s~rfe zFzH0;nm4XDn3F6^4L(3<>u6_2%Z*RZfzrWnP0itl`d^(mpy5&H;gxPXfPWD^ za&PAO-eh^xKC5Df{p##Q{l>g;GU{D@{{yCWQE6&rsh%*MeY3`r)+BesiT1XS=P;uI zc9rH5T0|28a@3dQTnSJ~udJAe-H8+I)p)@-ftok=iZqUPBP}Fp$IWuW{iHOdDkn{p zu3jWd**J4EjtH3m`5)XH>c8U6uM8guhY0)GVm%-?6yUdDb(~#Y6#6L7fpvJ2 z00r_s-GiO(2)*viek0~{mjrZ--pB}hRml*`_Mug6DVgkKJzq*Z6hv89OfdqN=LTi{ zOvtOQ)@!0!4Mn<5bjMlWb3g%eq0~O|GAePiF4CWyt4_grT3g{vsgf_ziGM=&XwnM2 z;97(Z*t7uoeEk{BeS@g#(|@w+_MZGEiWBRaxaThZob_Mi$>S!Nm49gx7IEjz&5P)O z+<(9y zz?m1!3V87MP85$nQ}{oWy+OC9QW{w?v9JVO%CxQdu_tR%Q}|qxZ3Pfleaf$b zOxi9^IXl3x=FX;A&$-QPVX$ADk2V_R-4C%{l4G4WLSM0-LSHO?%Z(UG zo63z?c|(N``OYY=pA!KP%xapBCME9n68UOxWG;;i6jlca_hr=TNg*G5()6rHhY`Pc zbPc0V6HwI7ec>!rGf;EmO?9cc@(COlq9zc|R=iNleXlFT6M3s?y4O`N&)=4!|G86)*D)U-FZ5mYCu>a~N8K!>58(oKY!) z4UjL`*RCP*DMjoy4)vO7sfD1EzCzl z@EHAy;=dwV@HH-IDdr8f+b5(3t+s#=>aE@Vvy#axhqQjvn=+#BUJtW%EHf5Y2$%xz{e zWFk;1Mrm{;P>`;Vr1oC3%hX{nn)$C`eD4sEY#*XIFdq<3=P+cAvnN3EJAu7|E}`@CPN zB)n^l{w;PtSF7wQE_jjc8-lH0!q-sov`Z;e2nEc)j@|MknJ7xrDN5@Mrz5v6()Y&aWZ}am$G4iHr}ITl%G!Lg$ZQax+BO0#z%bYA z*D_4AHI_i;!P1o^3ue@|)YV83Qyau|8VBl>SWDqMjRM2T+U15nNXfIiPchFb?QBP% z*+kFc^&{F$(p4zv5Rl-TBoL80`HOkV-rU+##ysNxgp&;vzkh;%2p{4p-dp39undKh z;12E7rDaPUPl!p@h`|_>z6F%D^rZg@9Sv84D2p%47Uv=F2}X2M{NYZE#E5rMkmpAw z9v-znmnD~>?WE4EI2Khe`1u<30i=Ee6Z6BL5d3>9*j0oe+^>%yHF3@0)d0S z|A(dGKVl)RO&vn1e=*REj0VSOW?#*eZ0WL;`cqeaa*G>kD`^qJijNOhe)ho#q=rqTa@!V4V^q(t>zp8BZ&y6G%&E8Lg&`JHnr68U;W=j;5m2!Nq567*h1ARvG#MNqqwT%( zK!@auHmcmZCrmHst8~lNHO{kE>-1w@iTA=fyQAjqbYJdte3lGsv8hVz$9n5F)cz|Y z^;+`&V~ZF6Oo@fOGVjzX>yPU6_`$Mi{Y#zFwKM@e z0chBVfItH_LZYW!wujDR`ce&0c9Lx?Ap~GfV%_X-Yr}|5oH5I`k03%K?I&e1;OAL^K47|wJ7-`ro2H-xxiTz#RabH3ch?54Owb1}diwcM%8cXPkp@Fam zu3|5Z)MkP!5Zi%D!O>n}7wwP;JfSH#tmK~*FP#{U23kK0KvF|nKzA;E1#G0bplYzg zUKV`zgDi#dr#Dx9giS~)Kx7E6{QLqbjB}asxf2VWfE6~eL!!z&so6E`jt%xlG0C;ins`~DkEZV~-;NT=ZA@6$(dfaH zPFZu%#Qa8NQ&cCTSs3<(Jk*yqW7Tq#AMyo{ndcXc4WMI{880j5xP@&c-MD}Wd3NL! zuecE@si01{w>T#K_O#;<`xaql5&a+w9e^Sm3M+vJ75K^Q~r{5Xp8mTj|-hY znxRzoz>xi`f8gx`;}!=CeAmGL72f`CYWeqlqxhfnnSWn5CEEXqeuYHJ+AqP@pDnkg zvuq$k`7WhTABoO6mKFB7w}m;&QP{16uhY&wP#veiY8LG{R#{OQ=`cOVgo9S{(L9?FxOmao$0SLLN2CpS{v<&r3m^AV_&~{c8_^n zpt+G>VF}|Tb1^%a?HZFqor$jj4>#Ch4dV`1%(U64ZkrWdjdNmoD%qvB`s;pN4`zU< zB_7-&-w_$z_>arl<_aYfn4}ZQueK*GX)~FB^>s6ZsC!-me$ccD7z?@b9*4K`?&7v( zf8C0h*GZGOVZeKm@7rkaJlk22wLF)1Ox+feXG(`z1wP64+m!PeU>^8KKBUFDWBT)Gxy zjH0#iG^&y}65)C;%B(xJ=Cl7XNT`SbH`@CFCX#P`3q1$hyc5<4@8p_sh10PHd=rNq!GyJTnoP6x7= z#o7O;i_qe|6ekCo#yh|hw)Q3!>#Yps zrN$GsN>9jl{gC2Ak3)&b&tm!kA2dkoWEQ!N^(>YJyoPN`&i^P%LC|Wj!UgQ_m8Zzp zDkj24gCL}Q4TF~xRb$#29}w=&#ec-!MEEsG?8pc)jghBxZhl7tok!9aX7*v}NI-G( z$zt!r=>xePf?YLDJz4|&E`I9$C2J#RSZZmcr4O10Kx0!Xd@MSAI)432B{gAx*E3Rm z_|d*4iHQgIdqf4*Em&p)xEdtsRo+_P=ur@X8=MhA@>g}DRj87&nFLCVN*KzeN;DFM z$$l&}DzPFV$`|!Ot>sn4NK0Z&T;hRyOpQd)Xq?;bHc>86MGSt?K_e>*BCm_Wx#PoB zQIOr!yrwt%ZQE9>y~gBcRG8A0`Ms(nk`G)FhHNd{T?7XXgNnFy4%{}7{*-N)&#qE? zrF^4g?U+;pZVA$6q{T*tgjLVH9}aJLlj( z_HFRh1O6xL+9UqYH~;xW0RHOiYRzKi?BQhYV{Yo^?qJDc>gL48V(I1vri-AU0UzMO z9|Zr~&;9KQ$_*Ss3661fa+kGra{uqse9FI6G zc|Nc-<1wNhqDq{Gl-duGbESA^7citQplI=g*zu>%p&~Ptap+D?{oaL2DWEAJP{98F zvh)g58^$kQY`d?gLKsP`fm9W}IGvFbRy)Cpadv(U(+oy4M?vng)?RN|e&E|>*#H|m{ zwu@Ht8{z7=${&R4Gt(#cYuJae=d!SAxqaQqc;eNA>TDNmdeGaJ-Y_k^{rJj*R++zV zUn|{!A`fU8VqN;NpnkZDLZoC=*y)}iZD-VSA`V5!^xF4A+4xCUoP$`-1~O>|gz?5r zFE)@4jWpzQ!-kfG+0Hh&`4Mwvd#87@A8UhW9aW%HP!MZ2>QJx~b9Q+1`6?tF1_SLX zF?@*}mX*Q`y@4E5OFP%dN9-@ySyu>mgFLA)%KJL-RqT$mWC$P;W1b9pISMNKO3a=U zR79leG%cdiTPw$uk%AmjpXY9rm zM=Wh0`QqoANL?>5xBv@z&w~$6OYEu)G-n|F|yZ`bWE7P z&wbPlftb$Pt31}}&vcFU$Z-H<&}#DM1#&5R^?%GQkZL87LG7Al+yL=;B2+{jaxh+< zear6uw2(6R5(4@5kMiX!td0T%c*^~IB+%bTuK!V5|A)ObaaF!w6dm+lHPmR!nL8bh zlU%wQHFFx7zlbEJ34p$$FSY-=fWo;N61QWZsY;Jn$YcDdx>Knw_FWw+WArTWW_mh) zspUoHgOmmS^V%PbFWb2eM}oBkW2#kb#TDX?`)o#aTP;2XjQ zR@(L5nCspCMDvRB`*ujKip&s18jN|Ox+tM%se3-<=tT7A2jV&##;`G8qP%RAQ2}~x zSmD&xcUiQRnsD3##H_tvHg<>9u!`x_iPY-IZ8^Dusd(2;-PWlcLWRDIZ6aYkuSpK0 z>wFJcV2`ln;)|hcnU}`t`_Xy(d}0hI$niG#IDW=-0lXJR1ITLIJCqzIHldH#*C=Jp zf&9AvojkszuT&&vR)GNU|8Vw>!IkLWwrIz;JGO1xwr$%<$F^-d>6jhc>DcI?V>`L4 z_kZ7aPt`knpZng&d|0biRen=rjxi=&ak+D#9FvM8t(0d1|3JG?B7dLdH3kQQL+mpy z`kIDS1NvRktTDH5k_st>c2|t2Ufa;dJ;XrM4|rx_XBK7vV&kG?VVp47!vI2zD`Rfk zx5J)p?OID4{r)Y+{m&MU{Vk<75U>~G2mF)&Id}e>{KT1FR9RWr)an0tKBd^&qlg2} z3So0+J99z?e4!25;o&@T4wr;UHjuz3FU3^KZ<9SOMd(tP1&fuc`%`XUI7 zy{Htx?%5Y6G`XQGk-d^iJkiMA_``E$Rd+Ki?(-eN0NzhDA2RsPV=1W$*pRm;75#X5 zdA=I2!)!IRlfZ$;7QHC;t(ELNFq&&g*^^a@&#XZrzP*9aHd6%p`|mB596wNS>3LnN zx$iCenFllsgPHq3O<2jRQZ*lzFKhYZ!QAK2Fb!&Uq?VCptI-|a0-i@@Qe``nCsQZB zo1|h?m8=O{c4mx#weM=7Y47}mPj;?K)sY z?UHRmmbPy^Mh7F)T85|J!H{Reo6C^Lo|C1$n|P^O6P9YtOC&v5^W;j2spcTl=LoRk zl%wFN*hvngNA;=LVfm$XQlU!8RS193^F17QZlBtFCUcVf?p>{C(){l18($mtLFug% z0>+@QH!$akjeNP^2~U`1w>DZ{R-Vy!m^NSRuJnjl#`R{`R6M^Kjxhf1+Ff0)oVBUf zILbxag&OvQaiDH~cOiq1FSWFFAwG5Zz3zTlEakJTIHEcO>cr7 zv;}5wbSN=L9buqm3#sPhb-yUwSGtC_$-VI}M(O5`szVe#>W=Ws8a^XN2}5vbiY=lI z#YWNQ`)$*E5NIe84HAuQ6-LM~RHgORN?p;Bmb2`HT`H7PH&Ju=$3^(({aJHj7AoZw zaN9yV^7F947U0oeFOj@M!>{2RWQ}2jWe0DDvEP<@*GgAFyC9p&dN1vRB_W)|K-xuc zt9Fkt4;ntfhBGmz*d6J%d*en#a35FnMmD)FSn6+6fWMS2jLJX> z%U4TVip;{Dc-S$6^w~*J%kH0Q`tLyZ?bgqcs>m$X6}}bL&qX>HyimcQ$bD(P)2pxR z+pDdd)*l~7t=mAbyV~U0!0@f)789NUUajVaLiv5&41MB98Y~sq9j>zZj@50PtOdgz zvgdkY%!OL575uZcZZJ)9vib-cP*b#ELd?>AlmT3aj^z!Q?UkpenS$8nD$?5QD$Igh zL<&iz0?s;(WRE||j|V#im~y2~)r@MsKz=PPnRf-Y^t!=0Q$9eP25QnBUF@#9sqikj82%bGR*bHm6yUTI?NNp|SxFOs1P zPGGCt8wn(1cUK!i%>Woy0-XS%=wxkIowgORfZMR3(o*|0$9t8Kl=8~Kl8jP6E}TO> zh%&ZNFmQwstPaa(^Pt^!q1--9RzZMEB#W!djzij1LLc=*zooH ztj`hyJ#!;n>(sSd)&f_X8I29;QnSiy<3^h>cyoL(^DzG8>42W zuf_-ma`zn{ph|iVn-Y!@#N@TvuwpH_>xzH;W$bmC^6r75-X(g#>k51MRThVzPFB<# z{c{8nrznR>YbWst8m2snu#d0^BS)=PTh1AGsO|w zm?@KSy2F}gEA<+DYggBwaM`rUICKaO{qnmYh?EWDD3wsg_Yrj95Kb_UHjKN(5e0I{K@lpa6wZXV>{C$NV#C5o0_Q+nMvh~Hd^ zI7#H9Y8Gqcg(M7V!RNj2Vyfe4+VF^f0$AXAggr5XamRO5y4#CLUi<1i$SZxqO6tF> zX(nx}8T6Nxn-Vf?xS!0hU*z2^0$+7tYX<0mDKHAcae8P7$sP%D*o3ZAh)WR&g7>I} zgCoO%I*M|a^g6%zolk^oaDw53ot_W+)`mS64DrEQY6Ev!_up{mWI!w{Mm6X9X zT5_LaX%}^FOaG9;gLXCI9ZXZO(e$|o$wcEbb(9|)z&HHBVQXxY|7zx~_~qDT(wL#} z;40rC043%jpQi<4%$;PnSgdP)CE8vOUf_LnyB zzxEwDD*rL&YYDc4lwJ^`{-zQPY}N<`Rp3wCvqo4z-4EjF2W&x1-ag65}II zk81(TegP{>g}LZlmi|pK_A*PCz=s4Sd$P-W+B^4%^KyBN|MTM+!yomGU>Y1LdA0;F zjC4{F=8G*eA-^a^R7Lz`$*36oSsmQS4!huBFNryNJY*=&vw>zN2+KV@V`P`!=G7oU z;A<|P-o&AgY}cXl-DY5Oqo;;D3wfHg^Ly|K=}2I`?qyq;Ta=h2N3DAzE3SGOHc7DO z5l3hLG}QX+#MblpODaX1<+5=ts?IJKGU`6!)p+WMgnX)Nv{bGJU zaK#aBBALPC%XoW>VJcInSUZIcR1u&@snzZ@+bs*cXfsXtiOZZKb97OhIvJ??b9n+) zzX{|g)sR)fo`ZFDT72*|8{+hQRDzRr%*69%0)rEih2zNr8vRyJ5VeVASFK5N&djd~K1wH`$B9?}3@W-9@p+UsNrHR%#hpmU!c@U(J;*=SIJ@>YzY z!_T2{(pQS}eqPm8YaF@$AVHS>wLcxGvKZ^{V_8UC&fWzlBw~v(^bObm+6ue;1fS9Y#Ai_o?u58H8mzHW-xnolvDp#XnXRAKlO<8=Jbel#Chtv1uDRc zh*bSUfqz}xeiQV6@UK~{$Ey+o{U%E9*O_Nj9NXZ7yZ`*P=bT@8=<%#>PY`W;vHrom zx+*e;zn*v(tx$fpjunSq!6)|39`e#wc8x7K?>qhMmFA4&rzSCaMAhX8Q?T7QaIr{( zg)7NTg9qIDAb&62(~4q0_%XK!Y?Ula#G}zPxy%dL*M)E59|XU9xX5namEg3|`0@dm zv$~HPzV2Rw`N@RMIfJ)>-z)MQ6*RGAh0}0_ zAwP}S1`RZ>0exlVC+T%Aqh}4ctlYn6R78+;fjdB#^z^T;fB)w6@BAO3@gKYza3A+i zP67D*13c6J)*9!iuG%dKpz_+ybGgEq(o6dn+r)yv8I~EIA`>855Gtr#`|FrPidE<$ zV*t&(fyzTdMJy8t28OTb3G8t{!SCp;3oMe6B2t=PM9=WLA8s_f-TyI;nFsLVTZ7|M zM?E=63yy+KwJ#{4ti@xDs;MrfVAfF^D(@v=N5V}|qePev4})a|TPdmRRE3I3HW>NO ziWtn*b%W;LRtG0_4LgWy`LkTcQ!Sy4;I~*Wuq(bBrYW^MX(mVCNR+VfQ`@k=_M$r1 z{#ro>|A>dS8~QF?bgR}*L4}MgSCX9RcxZcDV5zeCT>?v$JLfBXf!6Z z@#C}xsbMQDYZHJMk=(Es6!)!PD><=YPU>Eu?2E#vL_?=A6*ak5bvs|#^4=b`cg<49 z5%imP42s5VaTq%ZfQmhh%kjeRds>e~G0O{rl&z04QXf1THYWIN2~l)>r0mMr932{y z8$gqfmup4kh1oB`K=N!U6%zOkYZ)5U9lnn^UR410wIhfH+BqIQbH|i~(au66D(_Ofq6Vn;D+Sh;b|F zC+|7^A+z-y`Ml$z?hEz?`ls$6)~dh!8EAU{b)fl|Q`P{4_n)FP!Y<`j5uGaJJ@dzY<-fCo#hB&9>iBC@IlHG*6&P{7LP_8MXGW5>5t3jmLj2~41 znlNdUAaQtB?LcACDl$|h6`m5zjvlOwdYDsbuB27p!R0Hju@#O{O}6pfb~P~F_YXg+ z)P}1>rbh>zw2?=Na%u{4WP-P8u-d#cHhAj?$w1YLoF#yUfFUX>G+vX;v~ZDa%=>+^ zQXL(u@wW*x@o5G+GuPBX%E*IItZW-nN zoI2F}X7r6iQ)=Pq2rYWKtTud96hch|t~NTaUS9hG)vp@I>`=|M|S!~sn($E~RS9}@L!BdhFAlti= z#vuNzcXJ4?6UZLIB^2ttN zMr&*@khBF?od`a04E}X}g4My63bGb?R)=rhDkGv>b;SB3A>h-#KNk|XY7_6UqhB-V zXKTueempwWy&3(4gbyBa3m)=nOWzu-t#AQZrg&#>MtK$fjTjf23-V$eo%G~Q0-d0I z?QjpwuS+Y-DII%&_r}_lB5qi9mdcORb}dTy_GiRlOgEVA&c*6x70X*O^wb} z#y~8`oc?|UpOn?`J66tc>tgH0xafd}Ys+q`Hj{LL;NYjRueQ93YgOW?N|l&s9o-U@ zHg@Q*;=JT&*^wq%pndQBE@kGL@%dCuT5MJz#ZEQJ>UC|k6HCcDZdKxf^<$6>EUMb>UYPkk_;gp2%?yCB|47x!qzI`a8vo~mTc)m#*Yb?h{D zYV_uDjoSpxdE6oapz8}D`C6Th1P4{$%m%#GX1Gmdy88C2ronv_hP{=IX|1UZ23+SX zIpEmy3aWiLKzogu;HWcP9*x2zH_kz7EYtgZcG@fn#Q_*%Udu#BjDPnj_gE6LIwM}n zr}e9R+ZYMgwa^!k<66h~*~wmHs>R!#5+Zb>&Ebj;o)D<| zs*bV)I3<|5W6%^&R+ddFYVZ?H@FS{BJ$uBdja`GLngcwH&6YaiaHNn*6m)5PXv1`*OO7@)kiA96&Vy)HHoQfKTUxx|RCXbIrYNi&S|V#N}# zW9ZOu1-tXG4(i{Yjt-n7eX2vewNR|*moX1rufT|Gvng8~TULY)gJ(rjXR_KB2E%B5 zuB2s9vf4h0@!tH`?G9j~2U$)&8y7D(OnxGmy_ukV`>rU5ZoRLgXiX@;>piQ9&n4d@ za!Mn-4yg#|ei;davNmDwz*8$b$(rCz2EG09+B$(^zq?D#qwbRncLQO$$nD{@r)nu< zR62)cE8|o_Qus1al6hUe$1Twn7}xpaf$(P6Dje?KM9@L&6SrPGGXrTpq)q7eh&If+ zjL;tFo9xFXknCp#mq#8RJkxk~t3!PE`|?h{xDOyx|AkWPhFI$rjDJb)16clDG0k0L zs{Hs-eYlvse~kO}$4L4u#NDiMuiu}_JyOjX-Ui4F2>(BKv*vcL|FWC?=Zx~_bK-KU z|2ZuEe^y9;?`UI^U;j8AjLd|NFVal0cb`|7&3>nj+yPM&xy>jyrPnqbQq{50r14(% z`*|nK%({R-i@)eHb26QL+CK=JcNyl4V1Bt}`t*Fdj_@UZ7bWORP$TR#Bgf1Ra8ML1 z9b?;Mep(+IxH^`Ou|rND95_4H9pkY%L+=iHkRW&~7ARIQ$<_URo%AdnM2Z0k1%&EH z>aPNdGEiK+#d=U(yh(WHyn*O-Z6o}s6>KGI8`Ms{rD9l{U(}L+OIzJX zSjFg8vbt3)t&~)H<#qq|eW1dtA3-@%zq~6qa&I;79>?iXMxQ~KnQ$2ud15LJPs$W^ zlXtO-vmMZG`}NH~Xlu%|3VCm4a8o}uzoMy(+=+9YBJDl?VW1lSLW+Uo^AjWHT3>DZ zZCiVkqs8)<@%!l%VrYq(0wR?Wbjz0G{5qn<`(R;PavXMB+nTVK3oum$$Mhz2+h{Q#PMZ`p7qoSj- z5jn}2D4mpw$(RV4Xp{;Le(<+}@bd8AAaw75(71gI3yEPnq4s$K_CCNp0K1X9aX-*K zxE$*odmNLG|3Ube@Pn+5*iTwd-Y$VXo}c_N31cj4%=Sk4fYeD$kI#2n`@bx;E>`S^PXQ#*&cDm^e@~FW{>OcQ zrJhVYJpo+}P4RHHBC7*RPJ6tLwvVRIGI>xx z!8F28PkP9T67)ARo*}|cP#bBy#2(05LFy(*I#T7>+JW;l@AmEf!`8=#^XC_V5pk?U zSWPhjF@<56&^e7a?1At~l*C|E!YPJ|DoWO>-&SH>c@%iN^Z5M=`>lwTB^GL?xxr67+u1IWTZ;{V?IGs7R>(sQJ6voZssX+o2t5IGm_YAybiy zv_APq;t;pyyA5niKjH~~1hqG^-Q`I%#X~ou&(o50-h`^-Va2P~@o*7X>#edA*l)SE z2L1Sx6Tzmhs ztOB%*%GiLGF;#$_Mp_YiUM;XdMZ*n6sk|AV0F7cz#ll)}P2)%E6dQn?ys!zU-1RVx zzjG{W?zJC-!C{Ot99_=deHG@ho8u?IYu@NDEJ-pjdE0Z8eU$y^V;j2t`C$ps%YipU zI6Oy9P#SF}tb;ULxv{gqlKe}fugPCobHssnh9$7ro{uUc){xBi6y{bck>}1Qx7@42 zg3BcWyA*>);~Rkh+s5AEMy^Mf0XPjUnBEwq4-jtgDA%`q<+e;0YuA{qbV8@>Vzf=V z1VMn=`g7`O{Fam3z4_7|9Ix@I9AQ$kZDamAvtB`y9arC*@c<1t;Sc*fkxMN(!xocO z&jplO6s@KE9YeDvDwCXEntHEZ%2l`d`@};p#+42F*7Db$415%Z-(De;mD*0xvciub z>yyVl%()qw9h`jfy5px+E$u?8ZKyW&eD0ThCcbhtxGI*u<4VbS{vyOm3hZgtx9$(d zckDZ$uF|crn^Tj|p*<2(3sth-PYxIRFh_Le9x&Aq2k5g|HC+GMXhSVSt6-U#xER)BSq?F4B{BQqpv=p4W zqCi^5aZ>R1Dy%s~q}vg#g!vMQk(itQK=xA-#v zFXBD>#;`TbKc{F3>eU#LEb9e)z`8dd#Wyic+RteYDb#kB1a8n*TX+WwE~z-OsrQ9# z3Sr?l_C&{xx6RO~Mx|UEV1tKQ!qr(vSye`d@f)9ET@00?{ElmDy+!r)AybNAsMcg-`fRz*l!<|pz8bu${6+@8`w zGmfWjol$zn-ASOD^nRm+-o|BLgvv@V6jSK#$InWMUrJ~zgt`-o5qZmcy?|GuHk6mht%DNoj7^bdpK)?w_AOS&ma+FM2uY!HP z=mlCNSTqTVZ*~j0sRVb?IprL}74aJcJ_AxD8{^Af5WeY#x!3L*w5(Z<^MjuCrSAjZ zN!|~@8DdBy=|J&Yah;8X+47pG63?aYw0z=f%o)kE2`ugHnXWhX%aa=yu^H3MP`0Z3 zW_&2-nozow!|HT~ZrLsBqk2qYXE^NVpo*wmwnL8^fkz}wvjsG^4QJym&NCbAG0|i0 zF{IRJ4V=>LlDf{h+LpvN0QQ!((?kPh&(zkfL#Ao^6zNlr&3HJsC-*g>;h{$+mf1A? z*QoWZzWN-8L^GZ#H;PVSB;V%t#pke7N{@9kqhaB`2!E<;R2$w~;!AQ=7R!ou!@^~bFMBi)aUwu2g&`(z^_ zF|39^{plOATJcfv4yQXbAF2g5Njoi_-h48wPyiSCc7esxh ztV_LHRUk?yfto08F-9jR>e#xwkb1z~Sk4+_U5kD~(oc9oDKefwP1^ke)qEE^UZ*ov@dn8bBlUIBGBwX2b7aE}I`V+HSt3<6%GBuDmF_ZsDv&Ux=5H=T?MT7=LPMutHi@SY2?O!`+-JdNj01Os{D&=7aV<$X z6W?YVJ3o3+gbVZ!q_V>F7Pl;aROiyII^R+MV|rZzmX5`!Djd27dyR2WoOPPJc$+(;`?PrK$g zi#&_KiW?No5s0BlYkY_-3Kjwk3XV5cP#^QF+WM=V>1{wL{#5GmG zoT8{Ct^A#~N|U+ONw$Rv>X)97cfNy#^d&Eujg~Un1m3bLbJc3bFApt7oAcUI6V4~q zq1?*QJR|XouYAZOa1*I9$x16zv@}$d-W!Jm$?oW3=xdV`UUHP#0F9e8GaNhwbyl0> zGD*H!vVR%IFICRUiO{bxryYgkFCJ=Bv`LRET2h(~xFF)Vv)^sZ3sEw^vfGH72DoyJ zaB43UF$TGOcLKU#PG;pUrJjTivm-7$1!BflNL4?(_b=I)piGuD5N)9$-5en_FOOnQWvErlw%_?q*TToirxsDWTsur+Np8=FGI7&sz{SLWezeSCP$6Za(!53kHKd-obR zjCtXc3#SODzg5TJ)q8mMzITz8)a3`vT1{oK6ANZ$txlg1`AHjb+YyVQIjb63C=f(n;(VHrKiSm2#&m2%Dvt8@Mgs7c=)FG`bxD{e?*pO<2?xm7aZ=@;qcnTAzt zSk|9&ddrwrk1n%l`ejuZfv;Iw^!HL2^lastwP0Zl;40Rshb`K3y3DruH`VGWF=B0( z#Nvv2&j@0b+FXnNAzZQ_cb_!sAW$KPqM(dK{bABXLYQcTd*8$1Jw&=jAra~zfu?L+ z1w_d8%&HiX!W=~h3A>2;;~bG{(hUM7#f*s7kjxLbi0c@cCPsCrL$A4r*|8)UZbJPb z?Vyf_vVaRcq7t})UlL3Xbj8p?Urt2>0SA0<@Q7QnB%v_-UxB9yY2zzeu@b;^{E2pm zE?#EC+>f6#SQgG2G5~y7p^zW+$Ao8JII_i=OEjJdVaK;KYG~5S zN%`jA5t2fCyhXoDAH=s3Om?5R$g_m|!8~nCw2$@R=CS&~$R)`voCSZ0?j&EI>T&R^ z=lM16GN<>%aoC0N3JE%^yRKUvLa!NKSw$&WM-j`_r|-O}5&NbXz=Ij`7WLuiCsvs=0?c5PnY!$)z09 zifndIOmQPr-8!6^^jcA;hHy!0FO5MJm0t0J=9POroa|O37al{15mTQ;k088)eS2lGFL+ric-{2I{P_QU=g z4f}r>paBV0&D6=+(%$aB`0}V&18xBTu9ddhm4p+h8`c*HEd#sieW46Qc`zI+92QOV zrO~yNlB%)}OY_?U7^Rbqhf8<)TnF)wd&sTB#m5L_@*Mff=N+BA=H8b6b%ui=NC%c3 zl55C?uh%v(mvy4y%{9~N7n5L}<&)>gEvq;?H<8=&=QXF*m{ehm0OFE+9TY^O!q>}@;8CKbL9`qRwF8I zyT!Tf)6Apw&_Yi+u`%>KQz!WQB{v(Zx>vgpg4JB?R0$XhdCIT$m146+E169x-p_$8 zhmG=VnKI2Kxhu_Ga;j4-@~XD>Ue z-L#f_erZFv9BJK8W;h@JnjP8w8ukr-nG@CllO!HG?Oc%*6L}#dDazUoA?nC|^)1|p zZ*%x#vbiGKi;~D$w+odOCq#gOTu(*xc2H%w%YUV9WE7z0t3fdQ#loD;cVFn0nMbJc zBe3b0udPmB{t#*1^q2>*De+m=n+c_*qG1No83Tm4E7Z zlV6<{#88K4kR?)CHu_lwpnffpfUbT=A&(beD21YHSIAbftLaQ#ng-W|rUnZgu}Uvs zHZ4V%O*;m;!{yqvZ^RX2^lQqUyL^4fE?VTY*7kdQU%wPNSg@8G;mp}_NnD_mE91=B zW$8bmDRa)Ac791*0Fx`qrgM6UTp*Q8!@7@&;Wu=tK2GUUDmi%0)xUd7R5uy)5!-ki z*K6OKVp==G0K%sLGBtosXB#3LlnKuGGSFdEi{+fby(-%{=Yv?GVd{=~Kl5p=r8U?G zUL=Udrdl~~m&(X>XE}#z#+#_kj?e2uv#vD35g$!=EeVcS&*dZ+_a{fhz+IY zyL)u(QI$%~l7^`ZD}GF}MaAe(`l{OTGrXvT<2#pGS)&Z7ZtW#!vxehwD>wO*$!NB< zBxT34jvU*3deVj5&Q=#>8*BH}v>Q%ZeftTPB*IX2TeS3~<5hty=$gPyII+h=8L6Ix zdpFj|#8#%s&o66e2_ys7qQ|ObkWxBpu2Yr0b4XbcmMd zV}TOJKNM`MUph(e6^1QTt;AAhFgnZ7e#dwjoBH}*`ks85f}4H&vT4TB{LXfO{lMZO~Wzy>{YGVv7GnWa@^e)O$SXoO~)=9C(#RmiSkY^5SD%n!xtrXnuSSAju6*)|iD2DReM>;eq%=`>PQdcUojY;Bm8wYV=mCr!#CCf11oPQ1Y)u z14WigpziI`zQ=~wuao2uRG5Ql6XlkUw`?(3)ClL-ST|ssab8oKw3+6J$kyR6cbIe3 zRcqcz-YzJ^p>LK~MrG6Iv1YF_#p<`v*lI()L&sdxo5gfn5>mlA^FY0nIgu*4 zRCc9ee{r#;{-Q8A7YwCn+wEC$97(EkA(xq>&6Ur(lmtM|T#h&bP=0c-`*N3O6;k%w zr5{g!nPzKDWG$CjJgokkH#+(1}Jc9a|DX4*=*&W(OF z%}%=xh=yUJ8=*s?Yid~I;OGSid;f1LDkDYEmN+Ebfmjmdb2dnhH~yOM_!KYHCV7Mv zKSbQJd~UHq*GE$=?OLvG-LSRV;kq~aAB#X_--_9FhvhU$;TL$uuj9=pVzF_Xj71t35 zV8&ns_t=HUPfqJg?wJ|A;A=#fy6N?<#c+qLD{er>6#fQH7+;^e(I#>8@HBOQhPD%( zST3q;Vq;PnTI(V-$*hlIBby*94RHlrZdYZ~T7g8n;{O9^1&5YqHUpAM(7&3D^8Vi? z6(v(gS5v@#$>jgV@GSuxI|0}Ye}Ds{gbLC)Sq?4rRR$BpG&K__r4ZN_g`-lSH>8an z0Fpg3Bd6f;l%8KO-~AK@{;?LTV@h+S?{xux<@r`p1c{JF%aqph^cJA&-JUl6csu>0 ziP|q?cnEVOh*lrKRGY=bl6Yz>CqTv0h^4lOB}v_{W)~edzHK{SyQu~aDTm`5nluZ^ zQkpfB%4kdiqa+iRqdKmhJI8J@l`7cDH|=2|mc)ugt{o?Br3OGH z?qbo6GAb{gO24(qvd**30OsPawT9Tz3>%bAg@FH(aSz{FO@0 zRc};bI5&YL5BQxsTX*y7{lh2F__F zdeO>5p5-x*_n%`64PTA4TjGm}y(MixAB)8N#H`cs)VZ@7nOmBcN0C$YO0uT|JAZq% z>hj%&YLAkL+D%%#WqpfrDeB8F_mCYjL<^1NLlal&s@*G(G^UEJI#x$gWXvb3G*TFX z0!ui-px%Ma`8C>m=M0fnox{51RBCb&dDe6T<3y3TGKLUKLW>EpxdhgL!&Sp#{Saw#KJ>yW4AlbYH z$(N=VHqfq{GC1d}%#g=^R3#Zf`HJ$qRz!%H=CiB81b z#1&rJdx+->iN-34KGnGkx7_pA$rZ#F{XEv5&U9+podZye&X?0)UwshzR4CH5R&xtY zdZ_IY|I=fQA%0F217Ly-Ky&ra3;O@L$MRrh;QW^!OXPpdr+31iGmG-)T3? zjivg`uqoH5XcgtQ(Z^?(xZ(R=x|)KkUma`RniFur`Skq39|y_N5+xDcs>oD2`r?@b zSU=G#*(mj%EGJ77lbm8&F0r zT%9v*i>Kk}y*VVFNYl$j;m8tlyRjosPI{*UH4>g0!gFSIKg19Ao~C-%nCAHrk0FM9LcVTPk{0D~muWzA5 zP4~~GlTBeIvYhDBUjtfEYz8GsSc#M?R@xL_0Y#S5pva=Pju5MV$0XE@On0ZzFHnCL zLjPEct-|d2ejdUv;)f8gyBV+qGVH{V7Qp)Hg75Xhc}B7y-|zhn#$S>r(m&21Tv$TN zgtv2VRTci7In=bR5eNLJNoiva!1}8yAHm(%es{|j(5e_T6rfgx9bvSg)^%n-uiU** zDsAbm(RSfdX`)qc)iJju-t6bZ37zQ3x`@XpcYZCuYR)xIu4@ zyckJaYP~DWa^r-Az$+PKV?7GcU1ToRGYrO|!!E5zV`aAUPH!_Diktm@W2C)iEX> zRSljv3{R}d&#g|AR&L)(5;xE;9Ph`Q;)FTgsX9P4vk2Q*tbT&qm6U0nZZ%9) zT6vfxLhCyMH|Qj>viQBjZn=8TPSIIMS)FwxQ)S_KXe?T_NqViLqHb1}jd8fsSlem1 zL-j4*FxvpvQslI{MZ7?Tv43+uy>nxhp4>S z%Q-@0dvQxUTa`(>l?v>#hfG4a_3O;Eary`~58ahV%7`dlnn(1NN6rW~58Z9}E#@x= z(#P#f<|)D7z}$4v`9VrV?l$QZTz7Tl+u1Gk^x6FbO5Vx7O5(*f+ zz^Q8k7M`=Y{xS-c6ZLY%t@q=)+87rRJ~IBg=Lwki11jP?P!Z44yg%nUFyCi8@T zU9$@)4;Tc{Xk*DL1zaibh z^n@9j9(3}>@?;G-r$3YXeO5f_{3o*rh&O!uqt5gFSJuWqdw2iuss8VZ^LJ+XoBvy) zrtSVy1@&Vdeu^aq-3tjZnR3~(bYND<((nsy$NtR*+4@wrx`^EBV~$HRT`^X;X+AH;0TWuZm1P-G!x zBrWjo{TwX$SZ^mKfdR(NpPMMaE!irKjMl#^+0KVqoY$z*Yt5`zix`1wd=4y@p^KM| zV!tUHpNlPZSkalG-zaBJReG^zq0JVW-FECBr*bMd)M>O_Y!UGPo{Tn|xAc~ChN%2f zSd7o2GJ-TKG7){!M%9i&FmIve_~eKFGutXi{55LJiEDOB6B2{kzPA?#z$`| zMhiHzu6){ZVks1swl2e_L6{wuw(RS#pRUYmyE#c#J(YUu%Ar<=N`gMzX)IXVUcJ+3 z=?)fdT3L=`tSRPD2Vvv}w~1Dh&6F`oV4I^>Y-mH=lx-aeUkjbAT7D<7WKl2JGBse8|n7bhSZK#&RRBo5UnmI`@Ij;lBy~jg&0x#>1I-HI> zoY;gpL(^A0Hx1^B?NI)`DQ4<2_Ws8hc%3L~_ob!Vjw*d}*`LjCl*kRLgN;Nj5i4|i zoJfp-%ZYB0E2KuP;k-l-kt^gxbcM>nL8MpOc;($+u9<0-=T#wT_DOIx`G$s>9@1`n=@U_dJ@m zDoeeO>c8qvE?_?(7UCaK8g#U(lv6Hy?hd%HS-ZA4)Lre)K1Z}lhPIdA*fixoPBZ4F z9kHOg2=+a@DE28~M?Ju?OA-I#^?(XjHPH=aJK=8)h-QC^Y z-QC??0|8#|oPBP+Q}1NITldFTUDaKy|E#sw zf2cw7yl5xPhOntkGS051Q`;lHyWyv`M}ogCL9hY(vh>7FMY0m(_)P4S_~$keAilOD zMRdp5;xHn~Y-u3F?;yd%ztO{KsKepT+!yU?OqE2y>~a@N+@Va1*<}WL+nBka zA!>jW#)(G71&U4LmvHg9`z&}mnCb|*`#yLQdvsI(EAZcIT$nEJQAac@6o7a5mVUmGy4uI%YO z!Mn+BF&;iI#LQn}zdSP#-fbvf*`AwvyoWqJoDeR!;1e3Zt@$xVuE*n@4jXhe>^bIl z!l1tC`yjkoY4BFZv_(cg&ZvCV{Bjb1_uBPLN-O?c*M-gB`tTFHpM|C< zCd)FO23lCXFFM!|%4L{;xhUEF6x%9?RJ4=-C+3BK?OMn*#h}d3CR`KWU1TQ7vzovN zEAx39HXa49waqn5=}*UXqz#+p$T2$bkJtN4zj(cfN3_Jlz_ie(w(ee>HJ-erxY^~`PlQe^xqfiDNfS7hLLx&rAWN60wIX7#viNNGih5BxqV zOyVCuNru#^C|1tyIdV8LD8?XLwr^flTzcO0*L!Sdw=mfy*SEDjZAIEQyBNUr$VhH#D2*Z->vwkB_Ro)o(2&fSxW;wem16Q2kYhNeqwGDwwBW+$>*@C$&+UG zT+_WgvIG>%No<9%Ns_XhwB7ij<-E9rQ@N_;8mmER#6x#KXSRaBehhtjccf-436}A8-E~v^TL35{ZM9+gYgkK_MWh@~D0kG9?%ab`ssy)h{}EdMnK=We57fEvyW5 z4cUQWE44Bw%6vPX(cklb;hk>^@tl(vur{(uT`qHDb+(gDb&LFhqaLWQr?jqzI^oZW zKE6vBE^OFaw5Vw5{=DC`kA~eL>mBY0KefrybwW(INV>v+P0iQWO}zN&Jn$u~w;+9-=~CGMK{ILNog5Qhus5F0dD|T01rc%=ACL=+4~98M z_pp^r_kfQ(Uq+T|+ z2tPuVnMl`MOg|$#OAn<%1poLHU982;oz8`5{W)>trAx7&{3c5m0|ZClOT+9h>>qr` zoiq4n)*6}lPA;?0^v}}|(^`b;kgJfL1YW<0w zd~ZWGPV1&)tQtgvAXru`9O~WrSKrTywmqC>MNu2ykF*EqCzZ1Rh7ACr2g9t8$&#nF z+oz8c^K>!gJMCjrvSi9vZ&MV(XwnUW${yA9p-{Y`gi2tA9WK=OTe^(Rp%d4{nI3*f zDyBH$Z*bJl=nA8d!tX-n0SDJcj*C$vGaNeos+3ydaOh;6`P}KKZOG+Y?>y?_y!58R}Ghh97{?{u(2J5>rD0;-A9vAlpW7} z+-@q5PbZ&Chc~q|ryEC(3WegHecZ#0z&I~%+HO@nw7Nx6+g9mT!Vf)jc{WWuZBU-z z`HlJ;TV}-!XssKzAX0yRarOB1d-`s2xl82=Fp3WRqYKSHs3rd{IQ>pdrERQ@9QEwo zq|B_${@uKw{4dD+ksKKyPZ2OfVM>Nd5<3NgDk&-KQ;>qSqG4%Xq7pdl#No&QbfNOS zd<)|FiT)e#QuFF~0LOT6nUH*;ip?@CKl?t({c?6|XR}q=>Gcz}3rWIm$WAMYu86o6 z|A4r!F0~C-+kuNzE!Nh!mx_d9XSL*tD!PbmGqe?l5=xErIo_N)}ffSL*Wf1MIWjycPqlSr5PGU-zxG4)c_BFevKN1c4y7G%1kJ!tjdzu-B-8#Rn~ zxJ>nZ;^B%*cQ7vDTxQxMH11fd)H?=~i-85Fb#@cj*s&=a?~&p>7PNB7SoU+~Jx4^A z9X6@3?Uiulv3+FBAgG)b&79^A>xkZu58wN@ zrIHXmsv!5 zi^Z#Pz1VA{gzt10^H)xx^eeH^ygg!5mV^Tg;l|zzz=^?3VYCj#Wb3_3L|7Fl&s9E3 z_{xFE;#*(-%Bp6I)%41MP*v+6i%tJa5==(V3g{)n@8oFuANka>DzXX6I~=giR6KN` zP%dI+fe{p~q4jwVqiO(DgU{+nAkYxjAP`E11g&iDqI~@^;W1;EQd`Q@L8g?J=PvT( zxSbLCbIsSmgY8F8hsT$f3)Wb#x7SKV32)N;j73(bQTw0Q0P0ohn@>gpuJDSzF zO2(H!H9}F*sRX@+ZX9I#|B zX(3844(&`~q3!l+c+7OmMfj>diD|<+r3qMXVD+8>m9pbYzVj3A2I8dhYO23*reYc}#u_ zKi0T@PU^S<6>BmvSp}>3;WU}9&4>hm#FS~L){fZeTuLCF?#Oi& zujhoIJ~pT3b>9kxo6;g#2w5rZhq?*YLmVsK^`|ENnI5qC;Mql995@%$un{H+k^X>l z8jDt~#q1fD4JAMh;dFHO^z?kSSz1Q%8QZMWmZ|AHIK?O><`>BO;{*r3+5nZ(p9`}@ ztK`PVZTYg(`As57nd$acLT8_^{e#j8oP)1IT_yTv2_AwWgG`aLgG|w<@d?QEJAXmIDtQr`NkCO#m5g>J7qQ4v8>w6xC*CtCTS5#% zgSfe%>0eb5t9^cpq4`|IH#p;IKXd6trucZ`25)t`>;6qRFu&TCiV_1&a@4!QdEN+pIpcP;#)#ACWZIIsIR3q!W% z2>nr<3#EL5P?DM_-No4O!b!5k%0A6s(X+!#p+7KJZ8ZjVVOudDw%C*3TIPqM3e21H;-mcsBcBe!uzCm6%3c0fPoTlNtH&@uI4 zY3H|522MYBm%>)k7r`PUWdzVmV1tPij8m!9c(LJ5Y+I!Y`8J)AqG!7 z*uZa6?M2@{ppM3!hdx;%Zql%k zC`+|l5cn5+n`^Yj;qX{b?!>NSR=;#hVUzKU*1Aqg3d&}}JOA>z1Ro>hPyGV6)<2!S z#eFwskc-q7n!(v*hixKeua6flVT<_9`1&WVR%f^$5!Xc$^-e2iQfoVdHflZ$M|k^X zKBXa+PW176=xQs$MT@|%ohk86^R_Me4Kd10lkgi(Ybw_hw6FxZNz}P=HcbJ~_N;^} z=yZ%y)W@=_*hz`uTv8FyYi0PxAgg>oH923Udd)dm$qm}?-LEJC?V3234@f+B5OBR2 z_jKlI)9mS@tWNLSA6Ol~+@H4@Un8ozei=V^OAEU0;0UDEx=u4;7L9cCH#leaIDgp5 z-7dS|abc^MQ(glMUR5R$Tc`T>2yH&Y*|fxO{}u#r8V_dk0M&x*@c)E-IsSLZSI*uB z*njZA`4`~zGNt7rEqqyw1<}+Rfo8-9ZLkw|1ScxfE6yzh zHFmbwQlm1Tixsb#EiCXC4@>);;Gm(UOB2hCOG(Nv4s|G`es(CW(Rd!y25X)zJy(aD zz7tJ<4!9HFNeRZr%lr&A$av+ts@R7!N~f4H%jj-SMySVJiw;N0PC&(JAh9&$yB3Gh z@p&|2HDcQk*KfZZ-RVVX0O{3?o?PmoXv zC59y+jmne^(^3+Lh#gnOLxZeSzY`AX3x0nY7a}Q+EbJ!}9*G*{v$AAQKd;BHp7|`c zq>e2#E*osPtXaiTRr!7g8GmAHy&r2)36&n%noCl^aQ1e>*2{7xJ{Tq|-FwTdG|UOid#$vR!=4Rl~Z`C7NA5%*df7e1pO; zZ3bTk0R|>a+&x3vYe;9wBOI+CjF5O`aFwPI{DSvcFxUc1_uW%lIjJHuaHtBGQ;9*B z`3>|9n(o%b{l(UUitY;C zau!usMOMPo52LD;aYE_2r7S2K+1OzC>&;p-=|@4*sfq}t)Be`Q4dTy~c( z>57=YX}L=k{UKZNwfy-Tt-bR_C#m}GSJjzz3enY8gj zqW}@*wLk-khpna%I+-H5=|X*E4+@UtA+`J*IB5!v=}H1`Ql+w9?~rgQ0x3hTVWN^8 za8hNxWUgMK3BxkXcGrmETPYpgn;Ze&U~=#m zy6i1^Nbr|vU41%n#%fd?!)1OTTSD)Gu`5M_3S=SokdQ_B(PsM58H>(;jWf=1oO;u-i5a6x3>bHk-W`!i>~ zwUEQBClSedn}q(Gc#|IjpvSH4k$aF`meyoL>=Mmg@D6XPr-So}EE2&aI+cHH{Rc}Z zB_qby-p5uCtBzJS0Vgx7yq_LuswSVEf6^M;Srsr8f07949VcbJeVjwEj=ozAH<1*+ z$cpi-Yp{#ffDm5bAkQO-cA=KCK9rt#4;4?6&I2d0pp#=zm!wQ=m3TpHUM0SNb!`cG zmQZiUEG#XmOqef4EY0aqQMnwj75DTLDezgaM1&}2w1KyWcUW4H7m{5&q|Bk5K>7y4 z3iCu1*~k{mZh3WQE%CUgdRVm_%X&Q#I~i9^)p{@-aunf$a#fuO|1W_;*F-%VD=<9A z|06N^XD`P8sP+KEvoUa{$A9!Qq^r7VVJ{-SC0L+mdxzuGm#^v$1_$sZu!qy?(=p-q zFEJM@ifOipg{rBF32CtNov{@kN3&SDH(IY0h-$be;y{wl!C&xeJo2o+@XT;DJ+3dM zFKc&)#G}M{b-3AdB)c)%9GuH?e7~Na{a_AW=x-vaM!L<8ltH;I0Tqw5Ai4B)n*s`( zSc`fa3o4bUiAYJ@RBO|`1#HiTM9>o|0b|RV1QdaVHA# z^+$Td_N6#^VxS{u63j$=OmlS<3#vlqh{BI*@nyQ$hd`T!m9&ReX8O2p3EUkQOkJ@@T@?*rAdHYSwRW4X$-nNL5 z38Ua`n2-=UQ2|Y^PKA>;+Fe#ILIfOTx`weY{-p>s+Ijtku3REK9t*l|pf1~1Xnp{U zO{`fq6Huh52USMio2QkYx3;(}(_%k^D+lV>?&yw|{6XBjnSTtn9GIb>SA3xU>NFL`G$6LnKmP%TgOjNqm*^RPPp6kt5 zbea7ml$j;3S>LfzC3GJhL_$pnqw*^5CmhW%Gb8H99^XaaY_`z5_^7=`*WT2d7hP9{ zsM#k?phJ|SDwG+ND%_?d)ESf*93>1JbOi(=azd~nUw82lOM(OmbYw`Ksl6CE!R8#x zJwS&&6iIIL?Y@qNV^Seok<a`QUTX|5Kx&SEZMYN4N{ttVgU`#-()sOYEinzQ`%w$ zx|wLG`t82U?94D_5J}??UX$YT$D^g9!NfLYFb&G+GMo9YHGP%ZT_ZXXcS|*U=rl{q zl%mNCQ=Gosy)?!Pj)f;mk7KwvcVA;)%aC5v7PqT~zV_ZAd(QSoNHL(}w~7&qu+Lqa zcXX=7AingnrX8|E8tqS+eax=Q$tut)3*G&OoI~ek*3BKt=}rl4?9bJrI>~hsqs;{f zB~2goZS}oMYbD53kTGQPZA`@!mgCC>gH4fdT|?OI;TkD1u`{vJp}92n_XyFF9wilz zQA-jjxq&oq}X8R6nO>gJ_$dQCN*c54FBt0PY?axw1M#Ec@DzLm(v zlxk}_gL+$|NWl^AfNSzxi4acfK5a2<^mply7tpoz9Dj#T)Ow7bvW^^uvb-ql>$MoN zV>5nFc+&F4QLZ=dZjhZ-vobKR4xFCJ0dM)~G!0Xo4YR~(&#KPu@d0n)={i=~UKWLt z)OV3*cUUm5o}B3h*R` zzU36bfKN<;!($VSmz?T1Kkt7*XN3p@wU3S?Q=RzS#VnX(Eu{}_a?2UJ42H!V&Vs07 zqT-tdYFBwCAasX9{;MDne=4;8=N4&4L z!e=AiLa$kF0&S{=uf7-4X*c!v@?R_SV&GWAm9SpT@-Pz~-)UMW=v3A^tFRlI>e^d^ zWbXT^P$lUFI>W@Xkt7GyLUz1d+sCXQV|X9i@l3E>HVxbE5t1`n)rNGZ1imD}tHXR8 zI;OJ0_lX8c!eG|b9m}$u@eZ)VC2>sB7rS^mq(Lh-nUWncjhG{ojFtlJb*$k-Elitk z?b_7aAn4uHZFqvPr=_#_1$ApR1|0SNd_21`z2;g73cE1?OUtYKT+wTqY1uc1zpQtI zdjPIdzBZtRp3*1hZ?4`h60&K~f?9vw-9*iXega4Pz%F7QpNgU7|4Uj)ozDpFb zt1O|9q(?%|gSVPIgbX)(GHcrM;^S22HgjukioZ{r*wyT?gytI{tVj6&5mX9oK0faV2-+8Xkfljelz?h@3#{EmkQ0bb|e6&DuvQ3fJ;t_b@q^TiW;`X!R z!ocql51_bc0J zdL;@hl!j|_@@ZvUkb%pMup;Bmaiu*ju)!;k938gjjDTeaJA5k9ChgNI2b%LJ{CUNO zOYn{2gR`X5*B_$}api_xQJ96;In=LwZZv`yJmjxewP*LZh$AfT7Wp^d^Y=$X0a?!- zkayh@8JqPS8|aH~=AmC5^N2wcHScpj@~|BZA|C@zl*BXjY;Hz(4;Bg$Uw>Lf^=To= z#tbo9vc7vxQuGQ`yLq{ZW>>CR$G^?Ii2r;yOBeYxIg>;>977dF6|*O1e8m;6-X^w9 zt`kEQTNc$upiZowDgts!gzb)mwGk{um##Czn826eJQY{C5N#5ef&IKQbx61<=szfC zPJ3DufN}Km3OQgG_67bHx?d875urj)TQ8IjO)r=ZZ`-0r$bZ#e5z+cbD91MZUvB~3 z`Gxsh;8A)5b|e4!IQ=;w0CkB5|DdSac1;GHkarVK` zl|S*$W2@LDvi(?Pr)fRo2KeAwOfpC&EU_Rv-hIH)M2 zG@B`>7hz7eg;cOL+i$E;+`z5WOSM%$EG0aceh)Lr)T{X@^bm)Lx=KzL);MVN^rC%% zr+8#Jbu*IMS+}A_x)eM&wwx5BJ)S)5dT_4A5Utfnp%M(ElkInjZggzauAgYBcWDQn zh^nPbm$jARdkXyt6_&gydyAx3=s7bG-5}}2n`0gUKk&}>xokC`SX(xL^Qf+3J|F{z z?92ICbJm8U9h9OwDSEkLthP%GPsbNk2c5?h8V#B5yA8#%SsH2v!5iKps|v1yZD;%3)g>u(uSx zu3vivQ5*Ny$Sz7TdI>T0DF)~Z^+6+*cX+aCC2P_S>yQZOri8s1KK&%LLHUlDb#B~U zB|-R+r^Gw!`eSzF6}BiOE(Y)PCLfuFNB=E{0>oL@KI6^G>dyUV#hVi`EVwWeLZ>#i zK7#q~v#UUkoj|pxwH;|zH$8oESwb4xol?Dh$lMt8W9QQ?a*Zx#QnQb7`O=-&;GxV^ zU$9Rc4vF=vf{zIM1mJ?PGJcr*TI0`vjWfA?vCt*b9ISQho7D_)EzAEzVn|5K?fL8X z3-ya3VnqS)?)3lN$^YLSf&M(v=l3-b7ZT?G*Dd%vd5T@PnUTX7$m|`2&JU4lY~ChG zPmQaQzjg?r2N?i|nih^BHdM`L%7d{Wlf-4(?1xe`IQ@XST{5W*$uPd zura&oka1WSc*)!00UkAo?3)!+?0z5hHP0|Y0!(kesBbl(Fu`it~#VYB?V~(38R-G7BP8(y9xVEqNJmC=Adc%UFjMZ*^c59u1d5gtiz5c6Phd#E9 zq>b~KAc=DeSn+Y$C0`Zy$L$8EmHIQ5?gPgP>kba)_9M-Azyl@i`;ufvh_)p&@nY~k zmWETO0#)J&1P7=7Q2hoSmkci6ewIbL+T2MpC=o~^m=@Y+bX#FQfi4367M4Xj7_bn9 z@iA}G$`!#w(4XK#;{nf^lgN4T>f|JY)VB7Yo=)4{zh98o8?+Z%;I3O+ym6C_*(V1< zLBHd_o+_de_1OycD1V0110xE8yipeuKsiN1tLk1&Z5u)&SPCNurbd)(8V{w=Po7kX zLbJnNZ8LOTMy-Yx?!&4fP&})Wly}x3F$56OD86nq8j zX$s9T61|+T?+_AUpO|oA=vT@vBU`0L+sqT>e6~^(qHKu5Q$FLkI>-j5;|Mz3~XGzcRV<-)b<$rpc z$7(9h%Ao{2f>)c$2PeQ8W@U0 zW7jmc4INmDQ$cTvhofQC#q=pX1xayWFejwo*iKtD2DT?9MqvP@Z7HuGk|QDKID}k7 zzcQgDRwIP}F+APeZh73qpk@r_tyddkpmABwIYRjBhKROrncvsTko1jAk3- zh`rM!|I?t(i(7USHDn{nTAF+}3I1wvuzfOg9yw&~iN>4E%An89lI`V`6q>!d_SMYIK9F+O1Y1m@NZJaujAELv5fxo;IHJ{DrT(%Fg?fx%!e+8b zJ2EF%`j<=2_e2%0pug(tUr?;APRpB=>YN( z3IP%U>egS>f6$*wFB?uFijZmtA;ykHI7p8x!s|Qf-SpYfv#CYZf-(@z{co_=#0{$4(dtx=VNJUu*q)iAQd zfIR9bt5~2Po48rxu(Q}pm}OxdrJ-h?r_6(YU8#MfO7oxyE(<}S;jb9W*1AeVVKtSq zMLq5rs$Fyj>zHc=+ysI`qhEWuIJiH4kMoVR5JzkUUJvnqjM9I$SonQCWQ-hvPQA89 ze|1qSx!L|bBq<=q6KFJqGLYH&7%zk28}!6*6=3~wv`-ZPiA_Xv4V*FY9*M}cu_i1njMnp`_lkA;^haGooZ@=!(A-s{C6)=#4uzs%aJ%Z_r z{OIh-9>9ZO*hN{A#(0VMiB@yb619Saq)2fmRGzBhsG;z@?^uksXpT4V8PWyJAB#1L zQ!-N0_FXGQhu2aq{hQtujkD(C!p#~`iqtO*u2TmFMq>cH?dUW^va1RYGd| zROAUz2{@x9qlH8@;!-5^>3z)RP0^d&o2fNjOzShkZ#mW9-B?FF%0~x|eoYfkR%Dm$ zLObFj2OWtKmKfmB53retKPYfm=N9dvB{&*h(S?Ib!G*dObn^x8laD&Uxs_FM>AU5~ zuTzW~JlmD%#A>7$yIW^bsh+EsSM+hUk2y5bg|eG|UOJ%J0l6Okyh+-DxAVPERnQ~R zm81`*k5zz6mJ53aXId%f@~ea!7Ss#{du<vtAxN4xcE2l z{yzoif1f}FBWD}nm@XjMqO2hGuaqG`UJ}T+V5CV~%obeF2VRFq`k4vqBj}VtcEAf< zf0n;$B9RQ5lQwGre~;Hukh_8ak}d0XI+k7BV}r1at+&MK7Ax*KnL|h$H0^3fj~vJu#lgBwaB$n#$;5pfK&X|T)H`EO7KRKVz$$b);t1i80Ap^Q z{;8QKE!SA6Tz{6a{8WT;hE#i1y4^}ydec2P3DPKXN^&Yd^?-mle}5mB1lY35 zl)+MTpDzdIkXLt1AN4RrjLF{EA_7ubWYu*-N|3vO{<0*Y_p49OIizzmkyHZ?wE0(@f1_C?qg3uHenQs!>gXbtESA%qMAZ~1oYO~4!sV=89$+7;Dcbkm z_pVPO6GS5N&EqPPA!AiqOH6Z3aI*a{<1+2mv$62?{$-T)12LDb*l~a=Y;L6X_9t14 zng#6HTg&Yw*c1bZ)b}+z`_dfLq@I)Sv?r|%sBs?wW;f>NQ|s1?+>7qUUzGbTGW8a0 zI7HTMU`~e^G<{64jV0s4?9bhb6DOh~1Lw{ftvJunKe}tUsRQT8`4&*(0P0PrI^H+# zxn|k&RnWpg^h6vNTJPsYMe4}*btmhBumxM3sty^Xz&i3;*Bu|%ySVF6!^npylE+sw7VHf%%JiYOSP=~ho+(zYBvI)%+&sgyye{3&(H7DSaP&sMotSjqwe zWR@<(!rnzt@Ka-caECdh;opOUD~HankTC|yoYWv7 zDL)VY*pOHP8M-xC+wG@eqb=Yu*av%TRXgZ+Z2ESd^F%+EANhIlrCG6VBm?ses%;j5 zvI!MY=M7tC*I1}&31;{Ap(SH}n?VAGb;iFFi~oLT|4g4)10DbWfj*)84OY937v-GDgzwG-Z69}4X$6HRBJifp0_m> z#`Nl7a6N4I4S83g5Hy`F^M=_CUnV8CIc;p;kcQNOJy{bcv=FI-1PR%Pgwzu^6Z!`! zavU~U>S%&hf#yVt_-$!Yh3{uOYtId}{E(|xfrk*#__JPuRuXFOGG2Grel^Cs6g}0u zfSnL^dzU!q3WH@-aKRtN`x?xzDbsDcSp8V{oNCOA#j2gu-xoqDml={x*Ncz(-A8H4 z6T=EL8J%*?2Je@9Jh)s%8!T5U>MfHe2zwjm9q)fyZga>somIwih_(c#8jI5!&T!@& zzOlA^$Ghta=0b+%^BsQDb#E!(8O-N{Y{| z9qOF!!700#x3azJ)WR|kzgaQMT;l9nfzWi19S%6o3oj_vR}xkdmIAgDwS_c=_(QjZ zh~8?$yJ>VU|9Xpz-64#gju63YtvBZYSj<~taUu_2c398mewS?Z?S?vo9EtHAjn*-K zEJD-Xn4e8CX{|dl)46kMUg~AK$iLGpmU5rAJsN0r{B8y>$$ioH#wqK>UhkQn3!rbS z*v26Yc7uxzg9#%S3Atu4NTCN#q-yGO4X{h5A5AjI!}Mb-+onQeYV#I`Q@sKJ4(+si z&DQ4VeDXinH1#*(3c%aYZy2}rx+Y%Z?RpMC!1~D>#$gx%hSiLfFkE_ux}bN>y-`Kt z8>RWO|~D(P>ErW@(CX;ayR_hDc6ak}ViJ~r!ZAS-|bpbPwp{(+0HEcTL%aMfSw z{UwWecsuqe7p*HQuyuNgq(l8?DoA)4Z2PlL9~>r+v^;#Itt$+#<<4oRE%lcdY=VY> zOO`mepO99I8H+aCFX!8k(DqMk_q*GJE{D{ReE>Z`dOr7Ol-+Ko}s-Yr0 zs`cVs)B?CXMku&E#w04WO}O{A1s6!U%Bp8pG|D2~Y}J_&q*XLR1+gp{-+p6|D4hB2 zIAHcC@Q*6{KST8Yx$%F3=y5N9sW%5F^OrXCVVK*fcn|}8lMGo?S@QGi;H=2*Kv1Fr zks8Fs8vNmmKca5ld=>^l_3&;JzEd569qS77`rw7K`?|rsWC{3^#rW#MdpNQD-QI!p z<>=baD|jf&i>RHdSa}9Xyi&|vdB!3}C-DxD$4X2cf0vMF6tj_V7m>FgqatP=TcLL4C~4?_@>k0*M58W(5xztD44>QJbzpWXTa>Lu&vVXMpPh)A!a1{dmq7=&n)@ zL#1h2KV_ahKV$LxQ(0L6RiOE70tI)m_ztq<(zv+RA%lW+q#>0YG9~f;>@H4`Jg?o? zO5f3zctfWaNpkL?5ANR0u=@epv%hVnb$Pg8{&TNXUhM0zZaNOsg5Rr;`&Y~|Mdnw7 zqfAak+4yroM!0li+pi}laB`{$N=~|2CBPqjd`jS9mA=X7W>u83OgYW-&CP$5FEoEH zg~)k;XebKks)saJl9a7D3*N0+x@WFFg)x8IoPAC{!J4d>S`j@Hn|8j9t_~j7D#+2$ z8Z0g1q>i6o^7B=RANe^XbX=9no>JW|L62U|y%=;C9*OlvD7c)aY4^a{T$6P)n_6vT z=xFMpd5)~}F`RYk;gbSy;(YHUPqE}wPs4UH0_;c z7w8Tj=M)H$w~Q{_6u9F@3m-gP+$oqlkXJq=H3ZlXetghNA7DYSeWbhS=s?3j4Z4hV zVX9DK2_XSQ04DrwGu@51F8uAekS(efTz!oqmUURiCvytiYm5J9qPPLfsaoVaH%p z{xsqgVIN^%2 zay-YB4h>blnDutzbQG##!b1`hehQlu~gO94YvUoay}xN1FW>+}SMneEAz_2uPHM{B`d| z|GxMCJw?F!^PB!3eO~`upSK3Cllh~+Yj}*6WRDz9|D^P+nF^1}%580ml{KY!+*fzv zp!O+$o#8Y|5(_{@P9$nOB=qwK&!VG^($7WW*lD+`?_O*!Ri2)mUZ7ESRD7Sekhjq3 zNWXs7&FG4knupq{DGD;zL5#O#p&ZqhL4#;yFe;Q;PXE=cSm;=y$f3MIj^Z?0Cw-XK zrHCW2WXbG!K2b%b7#m*;*qDPNAnYy7aOOoCr$o+iWW!UIaoCk-!4dMqJ(rKA8n>2I z9goQ71Ut5_q-JhKXm~5L@El|yDz_P(5w0gdAjnV9<2)!gyMyc-2Aa3!NtCmsTz;?K z>#sql1WUeopCtd>7qh>qTF${eYmKgO|G`%c=4&6(7*P+=2+@Ec;wev=zTYrOEH%lh zlylPAb95J;&r8iJ1DC(d&YjDxTz-4pPFehS$D{0QQ2^eqOeYQ6R(?jd?4qrYc0K}; zb8F%7G@fE2== z`b}FA$#`k+>l9T%0n_r@SXAxX9aEajG3NZQripC8LZV8zaR1U2vtV+Zbh2P!hIoL= zy)^YTF+R4j2GlTM0Udhq;JKjAKO;_cc7)+P*MyCU)8X8Z4J?hEet)(=-)QqfN+U** zoY*aRWp8e$$$VfetR$bUjx9#U+0tPzZM~|LPF5BJJKJtq4*3?jIzS7A-4P`_liER6 z@8Hm9BU`RRI65yU`2<2aTjM1x7O;Q;-g3+`SGiZpFzHe^GN(?A&T!IVUZM$&;4`R< zx9F;L-87M#A_^C&f#<|^!d@prd%0Z2c<#s;v~bMVDu=xDz+szSB7onm+h-QYm{}%F z9XwQ#iJ=u7Cv`zCzSzO2!Y5j#Hu954e&k#@xiDo~o+^+l(&~cBt->ybuv+f)8FyJY zg%u;LVp!9jjM}0&%5xte$#vyX{V}tnx0jNbA|f$bYWqc&;QC#5RQ`M28rWpLX-(J@ zf%K{~$4)=@C@SrKFV#6G`WAnxH?}GIls7yGDA4 z!+Wut|D`-Dv;Dh(EX5vt)CaOm=me^83bl@ed}OtR2*CvicSPNwE8Ovwa;Gf$F@63x zXGGLiXL?HKOMMYb+e`gtPF>;I=?DYk<)6cVbBskiv`0jf?3h)oN;>di!Ck>MLVPoX z%C^-aRN~5d=f(EO{I18aAW=Z)Hq0 zV^617CM{Mhfu!uHj|mee^x+*Or*k(j8md1bp5%S3>szN`8P!i-K$yZwtZ}uH-2Hvo zTWoh|m4Fxh_8%R9NdFl4|Hsc)TgwS#`4Y`%gdsYwvgKkfYGX>Zb6uCxr^L-PG%Y|UXZt(jBW>-Fsc zmk;9<_WrGlMXKfr??JPCCa6f)A(cXTz=Vc0M68qW+a2?A2rI5r}aQ?@Dq84kNOA1?& zR*{)UX*BYH&VGHFu_=U>K&?L-R5{WLQJrKH@pgkhC#>LUVuM|TUZ0Osg=Ak^mEMYa zAyOwVp6yiS57$_C;+&?NUDccf+E{hEGZ*{oMsyHS9V=E5oaXsS0|wlncp$BuRyXf> zbRFj9Da$Pv6*vBDWvLdR8>mr03T3ersS>Z4+QERHm`k)f9oa7&R5>gjM%O|HyFCWyqv2C&CTryYu3FUC%~uHmFF$0k{8D;Q8x#RR^ zT&Rvc=yen|Ba3=8EV6sokV24cxG{p+S;10yTvZ-esG5>UsG8hBNDzf~1p&dgu@w$G z*isUaz|vec<%(k7fg32DkeRH|0h1#%Xnq$X9A#g)gC`y33Bl9|b$i?bwsLZAQr928 zPxA2$=JF^j(eh`CKe`^F!bdPYL`P)nGI|8<6pclACY3J-l z(uvEz`fXcq>2k660_0j;{}Dj_xzzqY_es%F&(Y~`wxm2BSlHx48GO$UsKXz^RpJW) zwNk9|Ri)9%QX<#yMw`AtTao*SueXA-pL+$BX6L~tsv%W=VZb4ypsQiw0C~5e1EnFJL=eW$F|iS8y(v= zcIncK12=&i&4F&-u(V^9Q`2{ll)R*Q%;jYn306Am9aR#hQ7V zQ{%uWYHhA6+@cN4hGEa{StSYawIK6Zj=C#scPlbb+r}M|+v+=MOQeZ>u^Ba?*UV@o zEzbWKJm}=6iC|Heg|IqOMJPs`R#aeYO&vdJP2Gy^ovqX)y)eziiZ4_M!5uAR&ys&~ ze4J5Mm;eVE9V-E;8kv!`E-|XEsQAr6g%DbHAfF`nd(bGWu5ZE(qKc>)gE^TpsK+Fv zX>YBW>>MYY5+1{pq904#N~NCo2%d8NH^%UAsY;qMYaX& z)y^^2Ft*+4#5oSf-OLLnT5JO4`-%~Xx#6=256Xe2ihVSob{^}E+0M*(exMjlG&{jL zFSo1XO|$gQAx$z(1w~{+dl?lfo;!`5b7P3v-Q%I0HcD7iqDc4-)%pbwuJQL3DOaa& zFP-Abq+`^NDrLb8Np_A{q(ob7A9&rwD%#PH=P0CWo z%$+MvGAop_S>LkbvS=eiXiCs$z`8=X#ffpglJr6cLt%mvgTsX$84QN%o7jYw3_<-A z6}f6A>5Xg~Uw1M5uxsOb?VHL3vUDZR&yWRmwUz7pS(^E0N-8!8huU{S)NyH8to{W4 zIl=J&h=;2Le-@(xw7d@Rxo2dyTe6nhohtpXQYXcX{x~n04uUYiJi8PGtz?wfxTNlt z6=5t;N-JoyX@;H#d)h2lHt6GM_ZIZDJ-9QIT?rgsV~=sK+8`G!+}?GZ+M;K}*9dgn z@Z%!Wm@IkCACQjXAVVNYbh?y^=Oz$MOKJso%O6b(eh9yQbHSuPrfB!ryT8o4M%o0w zdxlk8KV%ZqA(#QpdgmPVo|@bgrBgg4W_9*e_4q}ATT#cH zm#Wd^U3rUMpM9o}%rS)>m0+S<=(93=J&zH6h~y6qDb>>qx+C(p@tUeCuL=+FjZ6I7 znfHI+qLBZGH_pN8zn-{CWo_W_63x2_e#5a%qen%Url0|S4gOdI0z6FIoTRFWYFa_2 zJ6h(Z)oSG|XyW6Hlx^m9mhLom)d`%;^!SHOyX|O&skU@Pvo>t*H0eo?O+eO9FZSo9 zA3nSwjNxtec$m}G(x)KWh-Nz7-4H+zmvBcmNwQX)L>K_4;_aDLB`rUx$pm%%SI543 z2)MLyU9-}{7(`?`kq#gzDjk<{j5eiu9*EOd@Gm?!zl~G^@XWnJdzA`s??oB-9SabWG22_(e1{h zng(D9A+%k7&x1;F=2N6;W-ER$oGE!?pNlACDW9k|F=dgRp~HqquT-p~cf*SwJc*i; zCSXI3gf1^?%_Ay5vx$VTmK60b(I=;A?4a@h!(>^iW(*E%s?1iS!jlx%`*!lPxbH#) zLn6n7F1{kvUu|w(9CpQa% zILMR>;UwLWK_(&IM6p-vUn7nRaTV)tBOVlPr`Rb8F$7hRngRL^r*naz@=aGBqgXJ5 z-Wec5v*$@OIAO9_4bj^}@|B$>-5fed&$#SrKFgSht!_GBa2}%-ig9HQAmo)u>i8I6 zjnh2B6Q*>3l99MDg;V6a-Vn$*3O%h*^gRQyx^#@OWS%{Yx-PoMQHz$SyqDY_5Hq3g z>asC@Cmh;n%2IZ|v}PESeFv|2xz}=TcpU#6cl=g7K7!T%%)FD5NVE-xZJQ%E2y#2d z8Ilqq?@4KhSKNHo0EcX91h-3q4aPZUe8|Z)H6l{gLAvWS4sb|~hXA&&x!a1eRdzS2 z0nkQd(mMdzBrf&sy`TWnWHNi1UT9A$f$b%8t^GY3Xlh4jstPHf3qb&@3fcHptFY`+ z5Mv+%r#cFfrkzwo+~P3Ebo6H(Ym99bAc6s)9{YZ8iUn$C zqN28tlLO#A0pcZnTc1xKs-kRhAD)g6zI44{Jm42B8f&zaDh2W%%HPSEAtI?}3#=(* z8#Y7J6@Ly|;dhf-hB*Uo50cYxhCJSLhMX5`UQj{Y?j<-$w{DDR;hTSK;`WQyw7_6R z$}xyjlGYD}bc>2rLS<=D`_jdxwYp@4-s5N2!rcbfrhrFL_Upu4Xe)HqNwsu+q z$zWCK5@=~Pn@zS`1JPkQpd9W7eRIxMW!eneoHaMJ+nn^;z{`{Sd{)nhjEBz8 zn&a_Zpeuwh9(tp7QT7l~DS_NY_lvH3((oei#;#xj_?6NxhXm;Z4!kNuvV8cn!=~Ug zr7?kiW!Yf?M#UMKx?1!FdKo!!FhT?}g&|6vsiPzWlU{=z{LDCGUzPdt0Vm)}(iywk z*rrT9QE(KKUnjwzyUoxb*K=d-GF4wWE~=@j#kBh0mJcmnb$%IXk8@qz{m{`uMn?1b zuGnn?@*TE0f70=`IMy5Q$>8Rj-u=#7N3x0?0cdo(?+q2^>Prd>b-9H_ z`{V=|wUJ^P1eT?i=4LB1H^O68NySpj-(+f*<4NwKl08nehm`ukaK>G;O0a>KxnGqa zE_OacWtGl+yD7U6u~&96Xit04*uf30rqGdSH_`I)pe*--MwmascbLX}4Xcc2evG)F z;0(fqYYPGdX$E1!U*dKeG+T4pHk&u=xlYv>H~*YT=#l#!LlJLh{#(F-$ucmG{+ZWC z`|t0|Un7q{9teLmQkBYonS+f685eTKrq_k~YPDjdD#|-*?G?#Vd?F#;)%?yTHDYB? zNBSi9av;|&yu5?ruM5=lW9~HF7;JXLo+0y?1U@bITvKjSYj^kAgkL~}YesuW0u7AU zckHZ1IUGHr1li)Zr?VE$QuJ5KViz;a=o<42&mq!sKT zfjdDsic<+L8ex|u&la4;I4d=CJ~N^RmRXz?Y&SYTrf1H{(M_xL4qp2Bk3)Sp979i@ z-wQN+gidYJ4jD?g1QrQr$``9_Fp)p6qt8SNAZu?4yG|4D-~`KSo`v|O#}I=sc?Zwi+Mdo-j70>X<-X_zLU)Qvw5h1E^_ zicXh`4KKvHA;yq_@f62XgQ!lnC%}L!jnbJ<$q$DZ>D}ThqR!Rd&TAjiV!IFC#HvCh zTbn!@r)3tbT0*Dn5%k!x<8Ic z=~tuGzu91B(|TLTFXSbWC*bqZL+zmo)18+N{wl3ORhk2{keD=y-p z&}xGD8(mc(_5ytZP6EN2Y9k6OsS+Ey1F7=->;&3l=3rW4CdlSIJ*bcYf2DOG z_jFcieDMq{4K^h;q1BK8D>OgAWW}SkOkMP=c0}bz)rf%9dFNlZbaAXKctII0frk!Q z_C@`-(U9(&M=31kic*EQMiSP|?DlTPyVc7jB*hAr?d((1YR@McoJ~3waKR%VQwuR9 zogS2Vrn5>Tc$k$nY-nCXXW&KoMTT6yu87g^eiGlbT52G0+}dzzJ|99k-g1}lVUGwa$- zrsd~aW>D`e%QX2&L|ht$WH#m^5;QoQbKPO7o_A|hZ1IzS1WY^ohXGU>f676Yc>jEg zvKR@fHY{&vx_paoIl=e5EI2hPw7>373b9#7wg(d;cJB_g%ass@4H9W)>g{cVyI{gX zor(AWmg?857uS;j>Ah}>gf<-<3|9nkTd&J;?b}20Q4X6ImC=_1)YFyr>j0d8jPF_s zI%5deQx{CS1b!duhTM;G^41aJWf6L4x9RUN)Z3b2p8a++M~U@nafztoW2h8r4`~c~ zrM1NNX>^f;{C-E=0}cqbA=Meg>n{)+bvs2ZfOUsMBswWqGcQz;P#qLK6oQrHzHmGp z!elDRSmHTFP8`Vn>?=%2k;6z&DA+6jfA)3K(CvDccR+C5E11WO? zg~(e$s*Ug&1NSKB2yED_T!yTHpC!FUvbDoUm`C!HTj6cmw4*!d6WRKos*JAdJ_Y_+ zz<3#tNe=+?1Mgqw2LF7i^4~b*zsBbObAFJh@B>KI2hxHfbhWYb0HAX%$9RQnR<7uV z-zw(F@y9WewqTFd{Izqm&4{k$uDiO02b%kVP7iPLg8&eCa)Se*E+m^R zE*k_bmocEQ7rHO5z#i4>tXcLdz|S0xMx(I`XQ6IW0Y2Y^u^@W%Nq>S<0Z}99DK9t8 z>Eq0NmQ0FC2_)RNl@cYTIbN$HxX{)at7BtH!B)}6^^z~u*sD@initD{2Ty+cP1Zr2 zwW#GhIlE0umz2eu-PT<;n%>im=wmM7k}DM$$}ZFO&nkM^Ou#d&1=*={=kA(!m(ZnO z3<(+oyzEx*y#TK@xC*^3mIBb|V8Z*%EL2XRGBV~pw!l)wt!~Z$&Hyf9PGLjw!5S2y zFnzHu$#b%x2&L(%%G|=+imk+(`C~I1J(si3EikhSaaa2LR1*f*mo8ry#b$4Pw8zdV z=iUuoOjgL&Nf@vB~Eky2z+EoMX6Z%Z3MM03c%Ml`W@IZatkJlx^%RaOe0t6K3wZ9YD}aub8BHE$T^foRT=p1C4y-yhXIa5vqDS3ha^By#AC_Z-c7HsO zCiyuTvk}upeE-q@5!Qj^5mzC3m~B5gXSxF!S7rz6a)Z_;kv2Mf>@w!vx0hjn&1xL& zIF+~;U6I2Z^mnP2($;3828QC>zrq>He=pU4+d2IYD5HnwJ^InOkUKV=IamvP5raw* z*-k64bPnVr+{lAUlL=L7WmRC#d%x`)xO4y={oh5}%>|&vE#^3q<#Nb31=MJo^jQ2& zLFVygT;y~WRHz8i#M3Z=pR+p{nOC4fur}WaO>N3gmFO_4ygWORFdfn@|-riQj0(Oe9^1g+Oq)XC2AndCzEXxC#tsk=hZcmYr{2?o7S#< zW^ncpJi$3$(2h?fX|Mi#pcB1}L69KRNT8<)OxS!-h?Uy@v~z|2jjK>=ArtM#h@g`~ zt#gu7A->~LG<3FLZMG?A6^DK8vvWtv&hm3h3sIIi3v(2bJLYQge*F%eoyL6p6`Qa2 zCom%!bdS`=^Ka^Ja@dDx9Bp^NN!0&M0|{W3rt`5VWO=0SiFw__O{ zAo&B4j4-Q^!6%llSP@KE_e3GkAN4^tT!-}(_z|C-U=gu+4H)~jLVb0lp`o^FeR)El z(AX#RRQL%GjwI@>3LW95Wf40x(~hL5zIjnf2@>4u_(?WPs`z3NXuLWg$QkcL{k&O5 z#^^)?OR+4F&M+#Rp-v3RGOXA`Ch2sD*gu#$ia}>M&)jO_h;~)(6}#JDkaCRu5Pvn| z$D6f(eNrQdO`~YU9hl!J_vW`n(J)E@MKD@?g^46R>?RCwbsJ9HIqC_YanRzaq^(ka z3wsP}L(i33hedb63>v%OYGq1NYxcbmMhLeL9KkaTospXfc;w2`sHe+`rh6M!g24=v~tl6`a(?dzU(=cj7z z;v}LHPGMwmEmHArtRA^SOVJUt5si?S1h1bI)G{gI2TpSRqH z>r-<@UEc2x(4Qi?{7lGF@9zBhg(bY*>86|gMPVfIz97_OR|;#%dz7} zx}lu|BJsvYaj0IFrS?4ILkLk^z#fI|K^c5710*Jf>gf|(ijSbJclPUy^FrV${C+a|6o860Ap206Vlj^b)C7@-%&}kYI5D zP+GtAdJ@yRZ{#=~f`uf98h6D<@G@Yvy@UCiK zdzOz{Y9wR!p$i#fKCSiXbF0eqc{@e|M_K1XMXBfcNf!Mv_bXu$J;BlF0{+7HhkQ}NgtTe9HF$aby6*xOqEHN}8+CJKRT0U>D5Bzx=*@jBkPnP^C6 zB1Co8q=tyK6g@X-!U{JE)1A+BE<#%vuj$LMUTdUb=A6egqpjv0p;dJnJqc+~Q6tq` zge?9(`UX~^UJaxs*O>#Bm!Oem)b_sTKbg_|f!k{-zl!LAsO-w-;p z!|=9^Az1b;ZW7G9ZlLNt^VuCpu~znNVOUR*=EPj(5hA|laD5U5&69f#8d1DWnC_W@ zc6a?1UssYO?xGhxe1tOiRZZI&wjs7+Y{oiM$^#7^&|Ao;7-5mdm@L8B>t%xEITw&0x?zHX$R7`+o zlX-C}Dh5eY@)>Ydtj)S7N>z%J0FW|w6| z?aBA}ptl%GDkUu!)~u9Yg&ss3eJ&_<{&v|)BV0^f!S{#w;I}qWjc6lci_wVsoV3}Y zZ!EYphOqAaA!Tj$O)^Yy27H+Hg~Fp4c_bVeW3A2WqA_- z-9IM3x5^lubDGliWp-N7bUl35UA~N|_0$!_>p&aMkJ5o@yvRAv z3_|@v^yE0(1BUcj;?0p%(0nOLc92BS9VvS|RG0u1Uah;WmVnQlxZN!D2V`&tqInMAvRU#XuozzbxStd=x4uv(7C=3fZGntf&$foz&8$}J)fRzA)t0~!8Xf~?{QP&> zj}B#KR}KBD@HR8@vVZzL?Y!BnRK_~+)@^W)gtoC!Z&0Xx=}~ElkX|0fffvtl(s_iI zcm%mbULU1uS6@ZM%We5^iEs?&W@Q3>C-;NxC#;d(h!4737~!pcX3YAe73H87kY|CW zMXJ7xV$yUN`ChLVVM*gqW+A64{ljW$$P2Km4=;HHjX|^^kp(g-rOT2^(Y4+Yw-S8u zve--;5pb|(^fpGfv20Qt%+MMzF;c%IDoLC)!lMhp#TznaWDcOAipE`CKQ|f(Uy3wF zB+mC~3?9KF%0%8pVa+H>r^}tNph=BZ40n{`ww98i-rp@d8l={7UQR}0B@rx*=(h0` zfBgW0xlX01^qEh$mfi)W5O2vaiX%BENQ~Si)2Y?r*ONmFEBZu1p9jv~yQ+aG;UewC z-AUtEa#etoCQYH#$Gjfej!;T63nBX3pdS;%kysaFbx6*QyVq2l>2dYf@Z8LWor5uvln7(9HR4^M$05& znYUqL9OY}k?Ub_WQKwLllEU=0DXLWHke?8^ViCIk`$YSdAL;XPK84bx^*d27Hz!NH z7~)CJ9AWue4ZZ<)`LTT>@(qor=RDSN_DMa$HG5Ad<9o$C;bG?Mk8-+QVqt8Cowx{% z+tDLEvmq(w)vLM)fUC%$JrwgK%Y1j=R-%0L7&FdQSp;|cpobTnDpu8K3}gQld7o2| zeh_jHE}Sisa0;(RG}5L%mLZmDik@q-ew@CfAcYCm0jcA*A+&eqPTN_B2m#*~ROl^H>@=T{)zQJ2rh~X`K`4+I6Db!j#kleSV&Py57MU%E($6#42 zg9A(6&k)DAPL}=)to>SyaGqaCkglg>08Xwt{-@nms(5?VsMvCpfsg+B*A zpPEtf{(3dN0RtUgyP8@wwZB&-h3V+|GXW_mqv7~%pIQB{;=%tBT07fX8XNt#y!@;B z6)OM69awxcM<<`Wu~-sV30o!>K|xjc}xL*@!q$%-2a)OyCR|J*|)xsU%;Aagjw1f1`4v_piko% z2I)#+mtp9)m>ph)h(xdn@l%KhIG2ejkyKd<6cstj@QaO{>Aa-eXt^^N;hj)u>?sP% zU_%#`P)+1l1UB)dYY0b|1w%K49eQrkB591n zu#UQG86;jkP>oZk2+~w!qK;0->0{KqqOwGZhV)1#udNrv_)_UtM{2!d4Uu={h0sID)AV=I~57De-ve?6#1Dhfv(F1NzznJk;W*hx(pVcCQlp zn1j)w5o@URKZK)vto0?@Y@pIMF z`;!KYR*hGbk=AKb2A|Gkcb#NmeE#Tt3|DVfUIRhA`M(Ym8U7u_D;hgEn;RNS|32ci zb@(frBIC5BK!58c$paLZ#yigy8S<2Kl}l(yLT+SfQAinn}|DOF%YaYEbh>nZAl3@E#kI_Pmiq4NeyywbB$-X4cBi z9k^Y>J_#O+vifJm+#i{+^k>)urDY3D{t;1F2TsELj>56ZD}tZ^H3faHP&5@KH5oxw zbsS6ZT19;pG}4?gIiy%ccYb(ttg{$Blr!-}cxE>h9Q{+OZm2l57p~7SQ`E4A5lW^3 zk)kcP5qFqYqh$9{32|IhL*g!@BvxNOB0T(=wkf{iZps0dhu?tz*FP^0ssF=&1w8Ks z(#0J9CQCQ|ceAwxV-qV^n3{J0c2?$VT$&QdFA^)q%Kl&z7`fO}sORMVK-zIiGA#`g z&mz-tEkam!tc8IbE|NiR^6;1 zv<0E5Aa3p_-s)@^0dvtgYovvn_F`O^ex=PNr37CI0BJa^++1ey-eK>ol+8cYk-hk& z+L_C>uBE|+r>&Um2ibmmmVCQ|&QA~jYjhuBDHFvTXHlRR*a}`S5nxd*xi5qZMRoIx zYF}_@BKOdNyRu+%1S86dw%lE7s#GJbuZGI8bti=i;M_Cwq{W`GXx93qpj-m@^@v{yrRL)pnmcN@4%+_DcHGA58EP<3^@ zI@+5N85o?jb?(M1KPT4zj5=S_#s_avvYE}iiZ)!;akLr64ll=%xYXRe?+fjc zA6Fh(95;j;#|EEerX-YT7@l7Ivdd^9-ScsX=`iYi__>aQ#L~RlJ|9fRM!#_e!$LQ< zTO}S_H^rEBgP$c+Uq-9Bn|-RYS!wa9%l5W9V;dH2e(T}$OL7#O3me2TBW(^Y38=fB zVz;s#D6JXtbdWrVN(2)iV+0&k{zEhs`JA+;w8@#>Hha7}xeMOW0A4%<+aS>w+rE?k#fdBD@LfXnx>6a%k{6oWSzum*hiW{ zSyYQLDtvTV&rv%@iq`y+E0tiiZ~D53lBF`YQY!Q&*-9WeIJ+|7Ehwo*r-ZBvfov`k zH7IZmsYN(L?j2nIiJ;F7Tvd>ETLPH|qU!5PGFW_KGXjo!hRn;itI#!s(kLFs9h<=7 zD38Z}FZhcv9zn`-k2k1}P-0@H&`O7pU@N$p;ohhjI(&Ub{YJ*}5YyWiC@|>Kkd#=I zu0QqAGF7e!4%k`U{Qs(lK*ty>Fq$Dh|9mkybKJmL;&&Xg#bN!33 zeS2J&&sm2Ve22Vk`q{5{r?wwNYv^*-aiyD^DRb}2j5Q~*tS21Pny6x3P~uV0bjEp# z>eXYWvydkPE;%o%!G18UQk;D=T&3D}Gwp8zc#v3g_x_x$stQeDxe(_RX>%K!G#Z$1 zB02k(SWhK{n@OLNnwo*xY4?K~d^=1#){-%Ks$Uh5?tIdgpl(-3Y=dzY`|$8GKAey_ zS~#&#p;kb%f5X=`hF&X*zlct>0 z&ffg`mystyE~ov`LKxg@{<;_~W7$u}!_!(>6l)ojRxu{qchoJo%rk42o57*<94c^lq$_#dFT$J zvoHZ<%PlurTP3!X;E(*$GE#7hl#QOJt@EuRFY70(3VAj+fvq?0Q&G5#1q;-VM~;vd zH)Cb3<2e0Wzg#SjU?<$Z*7qF#94!k3M4vdzr0cMJA9r1BV6nfn$F;Vi4sUd?^o$To z#*y-D>6sk`Br-lbSdCXY{49+Z0A))l6M)gfNhlo)*( z&?N7;`tXAousanPLrD8jI;N%fW?uwZsMv3aMJ`#)TLVOOr_s_}Q5r0E^qZ3gcUKX9 z%z6%&<+#{M&w7VDYxmobt>xm@=9-bNDtuEE-e!9ESs5;!eRa(Dxg-9VtRNrxBLk%m z=Mgs%ll6H!YC+g|0*qivNN!=IM*a?qj z-ER}n5g~1p_5}F@+Qn3vwZRcDNUyCklBROgQg_guzC_9Q>5iphSSA*yLS`U8O{@@q zyh!_pJTgV+w4P2ln4jOeOfXc&!&vXIbd(1)q7a-VP#Jy}DPAS3Grj$h`x?Oh3f+MJ zO2z#vm+TIuf|%X80N+Q4nf}S1V#Gl!{0;U3;)1=M zY=<4}9=rXt4FY;Zo8sP{UA_OLp@;2)Xux^k`-p`p5 z(NiZ}B-K?34I-|(tJG7r7+R*dT`JculHbM)^S2fO4h}FVzJ6OJ(7-3pZ%WY zE4|Ikv>~=u9FK{8r5QTM2(gWdCQVCygh}WT`gKsq9PyLzZ8#?hkaKD((oVLM;Tt>O z)x=J;Wq_;FxGW6oF|9*|$V76U0uMoK;X~S3W>a<@SBAMG+l3!$*V75uY}V*F4}ZS)_+!V)RmsnkN|tuAuu^`y%OunZ~ZD`sjkDu;Spplfmu6 z1~HIDe41b!x=IWPKf@9U+eYXk?ps0;e9#ia!iGj3mr5}9+pYqKP!A%5X7UvBap#ES zeI1ZsS#2%dSCSf=JI+tQRPqIAfnV7USm^b?r22ck%Mn-YQKHSo+^HMdVPiT#UVf<9TyDO+s+-+z7`K^SR?y{ATXZKR4O%4u_NmG)S}oiiOf-h8Ky01>YN`IzbE}>J-KHB_A;SyFDf%%2_M6}|;LMqE zD>E8@6_cReJbUSE=$XONX%o7&;k-797X23L=6dx|i!oSYLbRQno2AF3-6*>QmvK|S zwlQl#H`}aYC9T`bcBzB!M6p`JW8PE{KcbyX4a2W&_N>L*RS_qNwSW~1XVRRrT3@{n zrblHrJMsdhU_y|j-5}awC@L-f_>A;i@p{mEhnqrpGUHVwl82+`jUZ)D`ey`~Ofi~` z;v<7O>on4GtkZ7jvCKL3K6dZO*IvH!l+U}Z95MaqV3-N1U`#o?Wqu+RrFI+LpjFu7 zTdgo0Nils*%p8sd_KK-_QE<}6Fx)E27tFNy>In+X0r-#cyzs4XZqSvZ*;cZhbr|#U zaId@}<2Di=x}p%NGU8n}@b+ssM1Ze&JBzAHy-rkG$zOt-d)bH7l&jF2Dr0FY_Lv%WLp30>qEjUa{{HlFt!2p*J4DgV|W@5*d9Cmt8U~!ADRD-JUI!~e`09IUE2K7F(pBr#7YO) zP`AF%L5IwP`pej%Vy#V!phz@5)aEBTQ4LI&tr)w4=mcE*hmz~~Vj7=4I~)W&^msq; z0k!eYxvXciyEHEePpVKwIWK;IH@dEePDCb#^!=|aVphKP{ z6W6LLW#B5PCkuYg!RtBF`VNBmo#0}Hu)$>4)o~NHbAX4<(MbjTo>*Ks22Gss?Y)%D zucd!`Ke_3p^Bia%mXCE18>;VDBd$hFi>d-u9>CV?)yusNLL|}*YmFCum6C&67l213 zxBLkWN~D)uKm01-YZ!54UAJ1LsfIrCx*OKZE>r(;MfZ*)%3E8;&NyxUnC z0{*2W{`2hS&xZnzKvMz(C&#~MH<5~e7UkaT^8-%sy7kPc!^y_-p_{1nUuP&46ajT)n2uidDa~J9gRd}h1YFtG|OU_W(1#2WCf3xXS5S#7M%pu;pU}STx)3|B2NsE z+M8veR?9%eW@%p3lY5$Aw6w!$2U8hOO~Rr&ecO<>i^K>>{W?pFRqCG*_uY}LU@y{+ zvb7U03Y&_hlGMp5-Xf*{PG_=`J+3;he~wgTZBfnkeSgpCPEnu|&a?zMl>6yq2-Co_ zm`(HqP}f%KS>i0iYCC3RtO{7oGBJNXGl3e}PXKG>9c!Q%(y!4w!#ObRvs97YTY$T4 z>Lqt%Jm25mo*Bqb7ekEJA@JgTa$DbG>fR-f*2E)6nV6#N)o%vL{Ky}nLlyIIS%|di zg3#EAy3U|2yz-n}&^`1q)54ahx8$0CZoVi)x?4$6>6wZfI#Ovqb;1wPp3 zOL-WSZeQB3SLsDupbGFKacI|i$#Wn;dnPM1<15%3=3`}wnI0MOkrvTxGt+gzGO5bFc5AbqY>-Qn0EpM{s1 z$C6S$d;z?spxQ;N=ZC;x_0fRrreKzIg9azLu~edH62sUy*gf!X zQjct#>Bjg7#rOzt2WWowa}@q{M8s<>uDKVTRAa9+c%_2fS&6dw%TA;{KHOEY-?A=D zJOSw)`q%DqZN>=*JK}2a9*W9-PI<^Z1s2y}9-dX{vf+^0lZKSXNdder(umH6{K^F`&_}v5liSaFT6oq^NK5 zcd8{OX#XaU551c*Bt(u1cQd6xl}tCrGkXegNVAjLkK_%Kksc{8C93zUs1watc7dzv zxbvXs_lpp7=sXCtUkOo8nY+m>*ENp(%mCbYyd6GfXWia+T|R$MNHM*V3T?+t#%g6Q zGUkrPUZ&BQ9W@Tx4BMt%PBK)J-PEYXb~hukRmPu~g}43H-e7SgyQmM9LXW~)&SjWM zq+hK%AJ?IOOz2d3Qh{Bj(x_n3^g!EacI>Q9Q;995WP!@Fm~nTDO`b*~vfCH5&Ccr0 zl%VP9Hp;qkDzS|wp%c;WQ?9yj7W6YHs&Afch!V3Ay_Z6B>rj^AE87=jLVK&tU*S$a zGmlf!gM0}<@_eO0-64d5de+lokPofXS$1gxaW|plw=G~UGfn*7Bt>h29nnV^(h`-e zoJ<)9MzB{8Qq5^$^CJSJg-!bOpDEB)8f9d(=PJTZv>P31U@0=0_P8lK9u8u}ixgw) zKMDsRBO&*OgwW^_zg&eLiE0TWEj>6U1T!In+FaSu1YnW7rN9_|fF?*_{P=i8O-f)y zP}CPfj6H~i$h3}Nh()da1ES4JFGJQi1(e*Si{8I_W5%YET~OX=67L{N1ceSd;1Ni+LT0}lhlM;x#W6c`X)s5Bc|DX6}az2oB-3Puu|s{67LklIjmkl!#q>zx0m^~8MKfGDMW?=%6`D*zk@9`B zBw0$)Bjvm4X?)wEvG33#(D3fY=O)^ftJYHQC6;u>`Xw4;qvdPQ3_shFY?c}<`Y07s zH;lxi4-uU9-sQvC`W(hNiUeMncSoKFgPXRq46Z$A!#6s*GWKgTz$$e(EQDMP-8+2B zzbmEf04gVA?5u3IoaQ`DxesEA^dx;Lx8i)qKv6)epi;<3;-Y)du^doc-(>@iXcQJr z4JD|b3QY?07|6RE;`Y*8Pr^^MvjlobhcL4Sk5F62q5HQ*>}Bwz4YIDcJh0Lgj=%EE z&Ig$+C|Aqq$34bU1VzFoWVMz-AnUIKBAjRCQyh^JO-$aB!1jLTdgm3QjC_{7gHY znxK6cxp>Erltudli^gQj1No?0JcDT!0qeXg1M!A?U;Mu?IXJs~rBWozZ~pYoe}bBK z1FeAnNP*&2Kz*ZXb^G5U2Wm$Q)V=zuMckM*VCk zo2>dwLK|HXlbR0Mp?%1)UrdU}+X52X)~&83x3LxAZt{rH(DzKL^6tyG8e53JrMD;9@16v)$x{fMXJOxdpQQIs}VH=?HgBZcsq=&GBzXTZb61Y{fCW0Chh{H z-8_5y>qUi2>rIB89Fa*&daW}KFi(?j^}Sh!txoxidgwc?G9XgRg5!ACNjqQp9Zgld1EtdX9?+fZb3FD;K22VIePUxNX+iccvDYsJY(IGi%ZymV^JPO8>TP&5%cIvbqAgr^@LygnOXUc<>LP985I5( zxf}wH-gbyy`?}H`65B*V_MFrB0?2;sy7r!cCum%MZsMve6neN`%vkuo^akzDS}nr* z1%itNHl3pIHVwjKiwugpE8myT2jv=wngY--e-@>j%|hj3z~J2a*WhIP55*H0oaQFK zfdEhg`TrQ7{&h))=1q_5oIsuD%Z%oR+Jry}M&VDytw)%I#70X5oXCvQMya&I&b)6C zUg`efU~gf50b02nIz#kS_>*~aG4M?RF1X}u=XATeydYzQqlnPLZJF2A>a4;U6w5Hf z;lRk^tJCPeJJSjsCK=kMJVTlU9-iX|=f;=0we>o!F`llJpKH%;sZZtrRf{E?CK0u$ zf9Xiq@5k+Gyi5=Xt=mhjHUac-3E?_=$BK$n&kB<0+NBSy`lwFUi~;c)-1L248JoQ6 z`@|UwK9S#lg#S>v&#pqNvsGoBj1>eX;Dc)($#l7igI*bH0SBOCKH-+*FzJw+pfx+x zI0!GIdmyJGYdP@F#3@xH`?hziEr~Y!4Lykd0!l=uZ82-0Qb=HBdz3y>8OMKOV@&b6@X+X9p+*u_nQqIb+f-1%xX8q#zM);_;Mk z&iw)MffA0N!l?9%0%weF4MbDavAu{}g9{j`uwPT+p>Ko-KV*%%`nm;Ol_|0^Nk=~) zQJ@H_Wyr~^MQpj@gn5GFJF4N4@)=VTVLuAoLFQ#6$;%;EmVKFV`gWA$9&yNKR9*q& zif@LP&9OJYAFa{HlIS%6)FJ6D_~KzE8X`ehDUV0~W%WZPxiB}?Y^l^9Q+B&3NmHyG z2WfCrjb{Y0aS|}6Mo|bjD2t~? z`LOQBsC?ERpxwV)3|CO}Q;Dgec+cFM-%uR=ket8D+XVFi(gz@+sz2Ew^Z~Qv?O*Zo zKZ{KNcM1Q0X376escKZRR>V~X%3naMFVhn@s{L3EQW~wx4G3wBEM0)A4RV2ohwrpu zPj))3>p2So>3ZOKxj^hr6~to6zk{88$j6)7Xy@ly3G`%4%>c+<0JSfiFJBLT{CNKm z6R;8;;v2&p`_o8(UoG{J`lh=<=04YVWj_peftIGVa>aO}Qt3Wlle~UZc3$6Rz9GN9 z;v`M8sH(+eK*#XQV#@BpS*7H>9y`!}fof-Q)EFf0pjEkE36M&nH?3!L5aE@2mT}&k zR#{)vsNg>8*c(Hl{+MP8)9h?fu_&2T%24A)PyRwopNUM^=pIGKA?_)LT zoZ170dN)+jFdO|Sbkpvk^SI>CUu8=VSZP#@V$vONHNmP_mo+Qmu{ng?ka&Ps?XJAg z@o*_FMwJt%wOmUO>cvcybj;5EVjK3eD6L(8=p{7ar~z?6&$6*~x&YgOrd_>U8L;L! zp&hkhodt&s^nOKWqTLA#SrXPlXCmHl0usa9iGVu_TX~%DLs=fWEt3yn2f`stg#EBy z#9IFsY45-th_)_^#Z_W^Tj^FhU@D-_$+_j;BHj?c@2n(m5BD471m~K{M+b6LRau+V!Qgfw_ zmn6rwn->lZt z^ZuRFiRS?ESr9?30=y=*GwpI}rM1@U=adJ7{>_*8@u z#_sdRWXA5LdF+jHMoy(F=`5&vK!aBWogKW2@df3y(sJbl;D_WJL=X()a)>#ow){`f zL-dErnSAUrG7L+8ii(lv7Pt?7_M3N5%ICzCZKP}X(yQllg3u!^%#(1-Dht}To|3BuG^lN zP-wH}soFLy&*&|9qj;}YuiB%OQ!fR*yb$nQ*M6JZ!SDP`y&So;;T+EP7cFC8o&^() zbU{Ji=ME>bcGNLHg`MC008!hAjY1b9uw7Cp`1;YN6Sb1hQhxilK)ugCqUiDaFU|w~ zPg14-tkC>dZ?Uuejv#RUU+pAW<=a}(0E4GCkE+drR8=*jfS8(izVuKGQZYWSB!@gZ}mP{tk*Cqym655t3Z=q)%yF;~?f)u?Qtc5gs3GW(0@dZI5N-!xF6x~}rTSZIlba5;%C z1k~*2v|ZX>iq8BS(8^+Kkd&Xc%HMfkS0t|}erW1SR$(=#$i@i$VN|(ZREb~DOjBuF zsh!`+;4br`EkBvfXAYy8%7jUxqvLttsL$TvDSKoQ_L5rJCyTzPcDDYOG!9-J8D+7- zIbe*uGj3>H{i*$2jK#UVE%~irf_2eDoF&Rr>xBjM0n!F~1>Hokm+G|v1O~dAo!+C- zK42EggRIeo?9OG(3k+B0-%Ifo_L&z^xR*xl8Ic|K#KF#PH#m+@W3;|~`vU|ilrswz#aq)Fna-FiVNUt&e>9Y3Zq@PB4P;0^m zguxfXZ<3;3_$vCWolitGa$Qq)VZCZj$EYWH{)T z3VtP(CSU>REvcMHyVM?oeDh|m-CspG8XN_7LQ138vMI7Si^Kig4|6|Y_yc9OgT@Pf$gY-d1- zNWgsd4TdsKU!(~76)>N&nH_mE-Dh)T-oMQ};QzJG%WR#IHhe)NV?ReYuantCrDsOc42Z;YN_acV z!L#=0qASwmAzh71bX{B`QzRS*E5XJgG})Q(a8kC<2Gj-Wio8s1HZM=1Pscwe*cX?P zdKTeC&t5c(d9v*aH>zKzbT`Ss?o=uKSwqxm=M3kQGDB{GRu|(C6lev4@^_q)>CLaQ zD-%vgpT$;ZQ3pi>Q(YnMZiLb!`EVy)ob3Ii_})VeU9t=7vO=~=YD(0wP5j3_a8y-= za9LE|5HA>92-H^j;Yvr;<`YGQXj@duKyV()uD03&Ao$fw6Ns|1fMJ9xQE*&F7{(Lb zCjBsj#Yk0dL-%p|NrXQI(QY3Y24U`VF=o1wUi~*+U{eqb+$HEn>+4A;1@=F>B@Q3R z>UZ=^`d+as{n}2*vjoz6m zm<9esDz#?FvdEW}Dwqkh=)8r;@D$(_5|w86x&_6!Tq4xoeFvj+kkv*VD~@Ur#OrI7C{4Gim3$a#a3*9wh!fbVO{896jv6!QcON7L}}Oqqbm*(IW^=!7zRl z)OXZGE}o$*xV0HX*vMb%lFiBA(y-Fx0pmboV6!vIdoA~D!{?v9uQ}s6ebjR?@H1)T zO=3YY)@J!n*6$gqnm5myx5Ke9U%Ib%XnrVH7<3TfB;o1S4WNQ?9o{JFjhM^o*&2fk zppeLr266=wvJLF0|E?~Dw`u5`YGS)T!qsc@a zjY$j1OSmIri=E&+KZ?HAiDJv)jW4;va~5Dy`-#i6hwEYNF<7K~iy(U~y$sB8FXns* zUZYsDIfhOiTJ=&-d_V2@ZUYOGo&|T0wrO-I393RoQ3gbxV-MUoQ_I6p*(ILwIzi`k3qS z|IDknICuq{c^ca2lJ*x$JD|0Y4dTk$1n-{?Hsp$AL@(*oL8X1xl$+M2k$h<7j9i1E z!VF1Ntr{!7t1+s-9uO{Y83xD#OAq+?b-1h4w13%yq5JHgh-b!6_n|vVe-RJiY z%tH0JTeJ{k?E_N`MB9SRBIBstj3}mO`C$m&J+GDa7j;qWNbeTnedd(*_OU4_wp_s>g?T4vAXkfGB*nbjfLHhgIYcEr ze2=Qn$a=5@&_|9a&eeMRi#PaN0N`IFcl&0Ol`h_uB9_m$pr)43B_Xx8Ild7Ku+r$$ zP%hSA)s_mLlG46AyVtz%J|+4rJ7bE3p%&T)+_2iTi?@%8&Xg5P@@WyIR_+IKShG;^ zqf4C9nia5RO=@E0fp;jpkmO_%>^}yRRP|`qY`Cdb>{?W3H{hxuL|LzF#jux)pw9t2)(*L%SDr?Ch3!r?4Y|NXW%JU24 zqX?|i)X_u)fFhbFL+KJi{uS&C=Tg5lKOQ*UMl2#a1v=pS`3)k$iQ{le1^rnkl9mT_#$46e3f~5u2u@IAmK1jKO2G$w!2y zWKN-80i^{dYTM}(ju*w!>th;wJ}LQuKn`4V(p+Ph$_>A*ukVURncR!wQNB-;+@^dM z$RVhV1}_9tj-}H>Pgwa7>S1Oawdg^zwAWW%p%%1LMb&sHAg0$Ue;v`^U+6yxB;-vHTN)Up@!qfg~>2YH&yA~dGzy_o>^i1wBF7I z>e?d*rfMy}%|ix-$^%rn_Da5hznstyQRXH;i`iLXxhbrg{hScEC`Px(_S0yBED%< zvY}m~CxDM@*11$q%G@%6c^l_~Gktdn)vzkl`9e>`nE*0%k77A*k*r;m$`SRl9}^>K zUobEEP_va6h#dH*ykpCO3G)5=h6Q2jIM?~Rq?PX3vr!LmpUA)E%vXGSy^6jB%^-gV z{fsb2q>EWqXpRB*r>xCvI%q!AtCNRrRXR_$mt)zK-F-o(UP5T4*AF+n zp(ak)ep?fVd|9lsyJUlCLIp|D<Mv9{MYkU^pX&IP;4V***&R*v{hD5KxA zDL5?)0M1NHDfHbI=|v9ytC`8`+5O_MG5*m4~BJ7vt| zREA%9&#;+70bq&J+?Ytrb;bpYWH*05r2V9VinDK}jORZpvHr7L=HCxV!pX_S#PK`4 z?)$>b!oXVA#m3O&zwXPDmH)DH`!)*l6D$Y1V?{{v7heI~Qr0~}zzG{86d;0h!0Wu? zjMOUC5_|aWyQYLuZG-;>!PkH)7J;TbZ03079CMh-*}WZK$L0bcts)>O7IXq}s>w_= zt&lI>djR@?RjzVX8J-PYYEq0)0u4h={?606&$c*Wy+`vZORKMFvBi}36JKl5HJtve z+{9(NXrjs6va}JMNDfG$TA|*L%vZZ4TzIHRo}K5~2$z{4KYrAXzeFmQ?nm^s9&XU^ zXUlyUVebZ&ei3qAEyc2mzFateIm%>`em9&PffrSoP_ATAmC*92Wm`a3;-&l6)oVe; zD1DX@i;>_c*XkTG{i;bLSzvuihma8d%iaMNkxk?w;skk4&QmLuGZl$`KkyDltWCkh zN^X0lIl=bV%JNiyI1nFaL_#h1za~$TqUhG=}#@+?p4A`D*whaNW zADLLe(uUrBSG?8F4Bfn68v;OPWF-7Mhp3>mPYIRPZQzAvTA))N8;Sy-IqRf5Lo8*V z*XWQWwFC#v8lqgb6MqSUSs}QkM^E~3FbOsfPm7|o()QdI7&-HA@?43cFyNh#!02a$ zwEOYVh+%G>F|gociKFld5U=us6sRRJ27q6oY?JO`5Z7@F?CgK&EaJV34ai>^0Bqi;erYyua5 zaE??h6J=}!Tg9RLFCA^zST1_mcT>gr$1nZ=piKE*JA}Wh;Clo4?yI6MwnqQO>nCn} zcU6RtFPp!+Dimmce$(#kVEEY)5F|>FGPyXSO1W~-;zV>~8cjItAJ&4{ek~A4aS;*_ zHtp}Os&Q=p-BtD8f7kcCn7J;$z0G_x`<7*lMUsbVFsGsOsb`1-Kz3fyXn}{2&0Bv0 z4LP(%~{48p_h6STJPVD*K=xt|6@s)A=a+~ zGc-2p@9s-&xNXV!a8><-V`gY92Ertj3iEje!eCW;m~V5#b0^Bnt|_SYz=}dJqzlTq z??c|TC_%@dmp+c6&b-%nbv=8kcDhc1Qcir{CFj+4c5kW$-_ePZBW)gLd7ozR0L7kp zvxE0Abz#)k^SL(LV&koNi|F^EZ01`IQ(d{7)z3}jfqhKHL|gbd9&%)MMd zN-w7Znhuw!u5zU6se8AeX1;lHmePZ6%UhdCF2VQF=pTj8fIYGkGg&r9V`v8uW1|*F zD6c5g(W5(r#<4gHt2Z)7y!d)w{FO#u0^g9$e4mI7pUu;H-K>#^m{5<7sOgE-T!r_D zXheZP3DT<=2rP9*1uTST=)cgRvFxp%=ihDB`ybot|G>M;7#RI;zgv}UH)Ii%&k~8w z(*{Lo8Z?wcvAj-X{ql%_a`Odc*cKUlP1wg3=f=UIx;f+Z!k#y=lSI27)nW;Fo{>Ph zZ^sXhE;lxjvbCIqP%gKtk1MwAY%Z_6CqDR30Qx`{|D?+#!cM}tmh7c~-nwqh9UIeS zD=>q+TIi_BKiSG29s=Je28Bv3G{$3|0@QUA#J+E1O$Ls?5UgHme~fDWF?7_u?3+z- zpep;eCOnG(MN3f^hNf=kxtC{5e__{sQ*HPl{;!G*l&QGZf{gP)7xq;lW(PGJ@~516 zy$;aj{Ev`t=O4|>kWNvA>+hgI=LI(vvMh(=iU}s@{FREz=8|86p)C+zoS1K6*UF5f zs&w|Yco411OPBc85Lpt#DyKjnC({jq0z<)Ca`q(RWUIc)kjFkB$tw;PAR@&o1ZZOgqY0UPMy-r{yFxYJN z{k`{Ky7cynJF9zn?T4Tx=H=p2+Ti=75bXGb0fr*cC98phNA)`VrgEWcL|I zOsS)GO`r?igIjAGJf;GIt*q|~Qhd z^$jxrHoeEq6hUS^l3{N%K$>_XbyP2qbL>%hl87o|#E(Ya1br6c5vFQJs}?JC4@uH= z2L_68MWVQaAo>b=N5p(Va8&vXuE!b8*c>L~@$R8uEqo=os?uu}b`fft9>e8LX;((C z+;}#GW;3Cc`4q~!E@%lp)JAU=`#D@R2`jd1jZURi_70@<8N%rCOLXyJ#IMrlj9Q`8 zB0Hiy{T_&6ERoN;@Kt@tpzC)nMrm>;M#__eQ)4b}Eayh1?r#}BU^o7bhD_dIst@Pj zLHp7noUH1{n?A!BxzoLYO}Gmzr9U?mHtiXjXM4+X?1Jso$CNzY!tFTh&D!v}Ll>AZ z$VQXAhz?4VMMpoyIBem*{?;OBJ#Z;&eSbmA{;~J}XRDsS_aJ#ek^d9VO|tsy-x;zU z+@E3+ADLGs4~?>B8;n{@j&750S+8J-oDd?n!Ki`Os%2d&{C!N?FZT&59fXyM|MT{* z{2Ws+z+_eH1t-&znYZcm#>9`?`w0R+4dRbB>U!b&q{`?jpVEKIRmWH*kXk%luGAyb(m5s|H@m1hVH8bAr*QujbNn#(?q zv?ID{8EP%^7xI&zC$_sXl4MuwmljVarz@@J)FX#hCIixqw6W*a9$njQEE=FasICQJOdhh2grO@B_Y1PPyjhJX!3d zQ34u|_f4zHy)#&=-7`FnL_17|4NlgTCgHYV-+f&7lXU+2-O2RXv#mQ2CCy4otSyu+ za}yokyqx3BFwh}?nOeoY#!vo}ep&$y>Zc)XAXeF+n9puUac(oW}nF=H?ZYKOy9`!!{r7 zII&tZ<{Tp)2mJUUc)hz4i?F`%tFSddUh^x8%%ti{!Ye06*KO9aLttF+c!kg47GT1q zVC4QSQJs^&OIEw@5sN{G%A+b^&KWZ{A)XQ|T3MzLRXS{etU~c$;+;_ozLe$fWeM;f zf1v+4N%-Fdqr@m+ZD!|a;cRa6?<8TB?`#}-gik?ee*{#J#fmU|aXV(3h;bR3CiBZ+ zNyO?@2f-is>WbpP!0?|4zW%jmqax`J-hae6t{`np%rpFXza!m0TxVLnrY%0-KVG2u zA+FikH*-MYWRNRLu;9m%?mZZjqh;FV_ja_`7ag(JQ&5SrB!cHVI!dt4Qu^})wH0Ve zud9AoDoh-xCb8VLB(Rkv!)Q#zFG;9suZ5F$bdWHuMrlO*o1&{FXCbo2Xfdp7lxa43 zMP~Ts=0u2@hJ^Q5bdgAbYG|dz>|u9EuaxAY6_vHLmz*5oDk~_pM4S6VSOi(psz!Q6 zyf!qc6C-hPv>T(KNYGjkgu94Vquk#a3TWV4D;)1s$5z)B-<>5?Ahgx;vI`X|Pg*=^ z1`^J-e_`aZn0^S=5HHDY*afzvd1a?ayL(b*V8WrNM0QwKRn1+1+w@&X&o|IA8PCFD z=1yl}qZflzDYb|N6e=bU-U6~EPo{We9Xt4sh~VOU`>s3Rwhitx#!_)>bJyIpi5f{{ zeO?T6z%2P|!DZh7a(Pd!QsggON@R6)A6z-Ec=FV8v{Bw9vSm7MUZstcbe_?$=9dCB ztl+VuKAe~&Az!GgPrA>t=D)TY659ABhZ-itoh?_nISRbNR5oU|7Ah^Al#}7MaK16Q zGPx{cseZ`hG>_i4^3m>La}%zox53qhi9QQ6`ytPP{emD15e|b0L%qAiZLA z&=Y3DrDqr)REGwmpB@B3{{Gpb%tqJw;c^=i66T>RNlQbY2r2i{aHGz~l1UGOYz{L4 z+D_X#<1;efwMSU&6rcdw5;P^-i9nWNV(nU~El0_on4e^!KR-N_MQSAo38 zsD~h<+9lnj2sLunhnr6fJsGQIAn zgt&r%;17CrMQdOpzF@r_Do#lOQ*7_sKDv^AUgw; zLgf?Pqw)-8KRP(1OR%C7%6&E!j3h!D9&w2JSKAx3nqv@nB#XUk$r zD6tS4FD0VR{vmA&>Zx>GEjk<*aI(tO9K>e99CV5tt$aAKw5O(LSR0XVEWfIdlxAT~ zYV-;LJ2xL$G>X_>U7JTjqhi2XCtJWPM1c`>8Akpwu9;YcZBsELlVcq8~j+PPE?K;})eo`f&q<|IMQ=@f&I_3 zo1e<}($+>N&o_+vlt{_W&^v^WE<~6?PgsCDpdA(2HkG?hKR$$kJ|og(Bq$7C zBJ8|}iB2bcmyO~84hWucyXcSheCouB8*3TliUd8NBbgsWCcC|dqzifqHLlic)S*Kl zRWgWqs``SS^;VW7x62*pTlfkxUFRL7MnR2N2YiD^6eDKwi`0{rM2Du7p3bYsNcHM7 zCY=r~4*ap$Uja&8)H58IClq4J8E>CvfI>6oHpX9Y(o+h){swg+G;Kqy(K}$8UgI|- zCr^JSN=n!#6L!NBgaK8;kbTg~F(M|V107C%3Nu}~_GieN^bzXGgac1vdr5k6ZMU*2 zJy;uDU9m*IOZ4m?OZ0!-E~SJ;8UL=) zf7hq-n&S6%$uq@jz!+h^DF7%yitIe7(?^3~3>hX`E|?oKiz=FkDZ`oa(+_VK{W(HK zQn`ZqyFz0dy4*-1X^AayujYNG+kNbw4mO^?UEre(CGwV{LjUCRXJYy$8M94TT^^woq2GZeAy?a546lvX|d}?2;lN%6#4Q0k&wig~y zfaSsRWWh#ekN-Sh9WHZ6UX;s5U^E?G=<_+op)(5=Dn1lyJ`5;az9`DvSmxEM^T z&9Pvm(Dns1dcTnSLT2`+1~f=JV>MkY9ob?_tl5&!^H_Utd@)ryGxoRo68PAkAAz|L z+2oI!0#pYhL;&lUGt_6(6xK63<= z8OizT5I!Y?1Kc)#)DeT+#TrJ%8Dbwe6%><*vA__e#W^>;MqGF@V8Xg`vTfC`mrQJg zgl;YZjh9k@#`|-}$Uk;A-Z?9<7kHdn5bAEEijH27$k3)wyS1ml3i+tv5fB=6Qw#lk zCwB+zyvx;)u{MCi3Yjbw8FkYmmLdW?#Y+k7Z~bzs}5P^f+K-cfYa6mzU=`U zr^4!PoQM^2Y9vVc!w;k(9z~J)NI(D9&$`()!x4PfUg!VSqADe%#K8FP|J{F=-^RCC z2SsNAXaO$JUEol5LZn2=fLgZ=1rbW6Qus$^95XlUWf5FTc?&oaUvKQqH?1gX{ns%B z-+0@TGzEr5Fl*x@Cvuqx+ZNR}B?Et+_cNia(gaGrtoND3YOvRV`M=d?wRT6`Eig_XeYqCo9$G$CB@kROi<73W^(o?44}K z5moyLWy?55oX89cK!a(_gx6f5kVG@@8J9zKCTs?tUy7O!GJjdJ)XO$4D89aAJzYDZ z5`8$bAZJRDC0I0CU&-Hhh=fNMP5g52`)=qU05{-?@WV9V?qcO1l_+=9* zm1fWd^LE1Fe4?RschjnkM>bem^Wqty}&bc5LMc;TANvO zxYJhU^P$9+P8O(MF=?5t3#|oh=FP!fE-M}Jblm` zj1yD{q7r>TD3k@>oJynSxE92MzF!R?9*;51JCR+GaZHYDzZvs9#k~^ta;5sR6~?q^ zr8-wH(Ba2gpPULeZ|^(0+O^Sui%yWTw%6#A$VaF+wo#nR9P4=OO%Va~Jm0$dv>Ybg z6L9_v#K{Q6DzoyWg!=gk&6zz$TH|dZ5rR;JR}i6>8A-bw&7vW zT;v$1QH3pswvb*+#IxsOA+2b4K_pAm%~fI!%D)uj$xd1}N#9?yseiny_#ZeO`R^D1 zAMWduQ{B8#hJFm2A&G;*fcOIl)T3KVTqQu~sS6^JgdjN~UK}6UI%%{GUy&ks^@R{p zM!-@<6ofe{$jcAbta@E5UUsK?nEobq8#}yz`S^U{o$0y0n7rWXWODoQsnHn2a5RQR zyvp7OhjM}6Hw^7srymOCnx>B$AcIh)SV!4c0m`LaM+A~dt{$!593X>a-Jq`ol1Zta ztuF?tN|&Zr2i6yZW}TtG0Lmp=X9UV6TelC&B~XV9$|X_fr%wiL3b9PCE?*a?U!pG) z5DaRCHi={%qR#{x34w-6O{%V47o^|FK7rdk!#v#<+Sr#vXg9aokU$t)x~RrlGpa-! zDC7y&ot}|m3iZkeI%3b-WQJg50_DXND#a8!!5He3K5&>`!WPrG%M&P)<2YHD8kJ>i za3oCucFMw5vV!Z={rhl$+jGjp>r!FbNWL|y)l7VuWkRW615XZec^*n70n zgTG5tSraayFvl9ZW*EQ-&|_>aycL8$S9kO1u|lA$Z6&g%n>P0_x zlX)x2W`ufX7lHZu6$sI!245Rk2a&m$vb?xZJukrk3;P6gx@=xYMTasx6aAvLRf|fH z%|cWLLu%uD94aeLD4&u=}2OL*z(vYPX*KW|h(Eg>5u(HjQzFCn z^4T|fh_IbZtP6s{F>=r-NT)>=7hQlt zaI9N2r@*Kvp$&wQEhHAZ8-6NEI+}l51|eGXL7|j{9##c}SdDv(ZiXdkw}wjNNXqe; zlo{wqEI<vve1^|tI5h48kZ=KTtIgu#GuwhidE@r$&gFixtEd?p+p^N+N<8szeD48Wx$#r7&ZZOoYE6J7v)8wHzyK zf~(Vh9(NX>JzAP}P1y|#J}WCUAC)0y(Yhgj4MN4%*hmgW+O&F2s{JNX+FFT0x5JMEeurUoN1v>^uuoxI`X_~LlPzdrp zirRCj`vZ!iTX(`_G%{15tb>kC@vk?WJ0-jfb7qE%14=s)YGOS*AJw8zF1d=DIyxsS zJ|OT8eOHKu%kg={g4mQr_eg2|^QAYkh>djS!VuJQ zh~T<4`xZAz!(p&2z@b= zCb0(%rH*S0j=4FD&7g0G6X?)*gKM9OpHDK1taKP#jmYo6xT%%izfL)0+qtP?n*kdA zIrx9rL)lZ>W7%`sgV~eXquI0C!`ai)qqD=aO^tl?DgDX*m2l_+>zM9+|k(K&kpjqR1|o$00Pt?jkzz3#>9&Gj2-yjQ2XUXc3) zyo5dgX!iqn1^n>8^yAhCphp-52Ls#y4)iDJmCpmf0D}P+1qkjH*9X@Z(?_X8u4Af$ zuA{2^QO8vWUPo4kUdKj{wF?fHARR#tJ9s@uM#L^qjPeTux1|tnv0_4)Gz|XS-j^$VAZ_(?# zgR!H&!@lFb1F|E$LyQlQ1%ts)ga9Jw2gwX*kcV04huJHQ4f6N4{i=D3n&XJ3oHvh4KNKd4Kxil4LA*Y1au5|{ABiZ2ki&Vajt|3Kc?gB$9;S7 zD>dzNgBm`TQVF+&9Z`@Yi|G%%ku@#VU@5r{0WVVVxda}WPr`%O{I>WEnNQpU!929M zFY!nCgV{Wu_%;Dg;DgS*nRqUVPmDA0>3tDh+%ySK>;v}vf`raIox}{WPtpU!Jel~0 z#5I|ZpEK&I<@}Q|qQ^4-Y2&Ki-79m%m!v1{DP56Se2&a3@99X9mINR1M}RZ(saO$S zoGrmekTcO~X;G#GAJIpa@|C{h@0Y0ZO4f)^*;ks=@*>~3-?AOi&a9^^MN$&i#NB}p zwDTrKZi%#H-LcLjr`<&o^Iqa=ak}E3z^B~v=Mr=T*>axHr`1L1iNA$CVNX$uR^oM~ zJW)>t=O-l4<8?(nSx%FSpvCD(x*4j^(2I4pvRs?lFD+%pwf?kr{Y-n+l6pn6fIj7% zXA?h;%MpCVIb|!dOY9MT#X6-bqD$-%f2BMcUVi~)`0h0wEW!obC!HehMs zBOeQ1B^sUdMbPq=vdZ?Bv#R2UFS6>>ADAlI<;J=W^_jji3tPXX1#jKx_`=~f=@;$i zD(u7Hh;x<8(mkK#>)Jgv%3s-cY81Jp?=8gJqC;N;Ju`j5!(5S6(*X6icg zwFZv^-jJ1eM{4RH^xOSsXP+RIXeqwnorMj*dasHvp6a})-heN7&qz+-xim$N$zHs9 zwy6OtkKf?2E-Ehqi1qkkUkN%YBX~i$B-geL+!X&9u4X5HNG%!rRg7g2>j~lT!Bpn{ zq^bH@;8N$=CZ;cyvksGws%>!CF@d{FP^=zT8vpk~jqJgK@4XfNu zBYQWrxFM??iEB zGg0fks=45)^CItrQKj3$sq;Lw4P82SL9e1+vZ;Hc@M6389RCgJ<<}skADPt6GM3tU zZ=679bIeBk65;yOH-XOT_^G_Yy0+r3;Vv-QSK`I`kd5S}q;Eil?LNU97xfBNy&Fca z_spaXL^btZQC(-+*Wi)yJ$l+1J~PpqX)RXY#Voh)Y?{}9Dcc98lIsmY)$NZ(>W8)r zyPk}D^Ic$)uYK`)|C;Y#QVJ}l{-2iL&UUT1|8%29{LkWGc~kfQ(&7A@T*~)H7=k8u z_YZ)Q2|z))RqRTN#G+O#Cw!zSvVced*+8ND8YKIGWG|#KGVAL4&fs<2Oq>mn-JsxM z+8)dKaDAFEU3mYz|4uG~>@pwWfb*{_@@(tRXX)x~*=aJ-y29aHnzw+`djUoI$_v8XxfOj%}y*@|w*ULVt(YXCKD)^a^`G#A=f zCe)Z>C9-6-O4DRbVS>(7w*HK^wQf%_ayt1Vo|(~!n_e%S+>|C71N=*)oS1`yso@C4 z`lGt$aH|S&?(UB;af&xLgWb8Trq%=&Rnb6xS>NlX<&nHkjIR)J7cYrL7bS)+*V$r5 zy58?&n3W^z?#27~wLqU*r8y#1FW%pNN$$*<4~LZ&Q5oX?$rtfarWxTXT)D- z5!{wa!m9RF6cv2wy1n9U@e!8ig;8sM>glv}rP^#}(Qxo=q}NZ+!+p4KN~ktP-IU=2 z4+Mf%;@r}QU&3@OJXTW&MpN0`RT!Ry1%&RSgfRk$4j?py)AZ&-egag13W$WXktc&` zVfcg>)>(b1h&XM-`VoDPaN=!4_>}qpPar|`H2Mf`7?V&K{W@R_fat4hBAce)*?2vE zQfbKaQQ$zLH}ZMZ_YW;IoECurBoTQAV$d|-2)YxrlC)P`jX0!-k};2nAKHyP?QZy_ zPhS8MIpGVikO(oFSY#MD-;OvYa5=IzWNgobBvrdx{T*n9;-KRVQHOEy6qlFmTy7U% z44fw06Xj@9Zeh3HC*`XOGN>w(@0rI6%Ur@LnV8C>iBkVDbMu&#EPGo#6tib;c@ z$l;tN>MP3b8SWeVWtC*+JEkQ`y5AVqRdB=`wU4mR6U>rLzE4F|pE6{mLvd8TGTU@& zo${bjFiCMX=$9ZF6Z$CizM>?>Zh9{KzY++txWjE&zG1ZVe-udk=LCX(@xA{q()?!C zH#KB6gwK@FOl!1q2wux2Klp@bta?k8Dl}r7LUKw;Sj%&y6cd(<;VH2E>h(~cU)#mC zzx;EQkk_-6F6lmJ`6^18GC=}O7u?q!;hdg+e@iplnVjsda(zGkaQWfB9|-k^>hN+? zN8JM1`mD0ZG;%^IT+ZM_i;_7}cSOK%!xQ3NwbVq=Q2ByBFR zG{0y_afUcPmYAP=&g76?A8tA`A7OTEupINA%Lc%s5M5MG8Pz0Pnsk_0Hl(nTWJ(`0 zOEWnfpEzs6VyQCsCTC4toR2X`2kO{dO0qngbEhmmwXB#~ZnV|`Tz^I|U(IKyM7X3i zlyo62{0PBi!;x9B2E@5?TxL+5OOvQ-(F_8Ywi%`nq0mn>IiF*ovLZE0v>cYOP+&3o zBm5R3_t2)HG@^*&+XlA?aX3f#EBp8A&}zW%G(!Op>vF(dMp&hAneHR7GGnC>Bk2XO zjxL3P^`)w#KLf9t_)r#=t)Ed9=j-kqf2NlF7dNB?pGHyou0{^x!TPCPP8ISWl8s3{ zf4S@*1(E2Bxm--}N2}0GDR8EvKl!=UC6XB-X?vN{-5x(c*)b2Z`>x1iCE_X?0O*2d)#) zxuOPRA8ki))^9cUljG5@_?pRl4T-KEhL_Jl9d`-dG?jCWb?1j>RxQ(}uzvQ4HR(#H z`sHg{RCmRCik%yCzv?kKX2bFIPgiJ14btCT50uMt-$3LqnO9hS$tisZnGO&!y6$mc zPTY1yp$(dF$B<$oWtdbAF=FB%c$^vSrXmh1d~%W&!Ui%f@3cj^X2l^6#lc{bX?R5p zS)}Vm4KQjtgp`_@R0#(Rkw@NB)7G_(?vaFO-w}Z&4`D3ia({Al7PdWQ-vh!>p0-o?p$-Z;3wG5N%r{yOsO@5x zwR}WegET>MbmfkewmRs9Zw||tyxDA)i8{BSToAV#7eGs+jO`BW3p11L(0V$#zYYGu z{+%Wy1?Yuj6YbIEDn?O(egoT>N_HL3_xh>Yi@l!AD5SR!#H;Z@r_Z8G?x7< z#66nQrVy6^7*cdJ_r$)FCf$xWVZw-+i03=(UpoVa)nzzmDZ0|9LkSA>nBLBD^LJu{u9zkv^7&~>PtanfM>e8V8Xh`JlBU92 zt3J3AY3YKh8#Ct=lJew?($2%AGEy_AL73N34wNQoS3tXm*P0>&lMEnS`>u~{VjVmI z<$v;~2B-BjaU{uB)05_L?_X6)isq^J>)oxgoOMX{aU5Q&fNIS;&9Sjk6iUM6T}5ej zBK&>=s)1@F)8p@S_z3_C!6a&ZWf>(Ilt7V0|BIkMB4N|J}eRIH<6Y)8M1-ooxDk#j3yKiUX8`SvS%VA^y}Q@ zMqmi=utgJ&x?9B{B(xPcJmO`OA{=&*8wA0P7}P0J!=N*ExeFWw(0))d*uh&8RrSlA zp9OsOP^uu}N1>@dv*-5TO4X z)=yDMKtxII`>f2~z|r8}^0a2vt-s82zGwhhA@d&sRRz`sX>1w*fl!k&S{h*eg$0q; z_+iUV8#Gv<$80mK{a%lvYI$FZ;9p0h6d%q?v>u*8Fm6u>@Qbht?dQ&NHY5<~vjD~sRE@y7+B z|39pqQ*@<`nyo9gxx$KVyJ9C5+qP}nwr$(CZCh1w1t^GlIgs1Prm^9QA8o&6}eDv7O0|tr?zN zuLj;i^T03`3)e?pn%=KF8t+lR)B!0L{RQITHcKpwcL1>SF%ZT{CxL@N|fHID^ymnEy&q#vhZnfHw$Z zF2k~DRX?vZ-^}bKip?w(G-N^js(Rnx8Zh)N;)2?`wslNDb_g*-gL>Q0E~8KEFlTzq zj?){Qjpnq87G<~d<+GTZt@M>7;R^hxYbdl;r z8!jh<+nKg!slya&)2T(GZBCfasQLTyjqlm-?4lX;A(=*dpW=fP+EK>_ylfL9SmTc% zvjz)c&B~_r#W5Ryp9j9gOG&DmWY$l%orZk@x^3q@${-8WOxF=G^aa{g3U+eMyj#v7 zJ?NCV<9=M|tXer!m%gAsj`!6t7<(>xFbJpj1VN&x#^l`2d%(b`{_v4|UJ%!M+kP#G z`H0TC$S|mcsOS_z6ocf0S+}}FQ1HM(2wAuDbCAj8+lX8R5)dz1z0{bO z@c;;H01#X24*d(-<))<6wL?!qiT@b!6R0%zY1N@Q=L;g+K)>3@xW=NIdwSvT8bkJ8Ro4V{yfW7WUBI#rjf!C(R%SL* zyL!6IN|xcelh;WI&yKlT@$2Mjq-7PFNW^DN z+WpH8fwJ+wD-Ay)#Fjh69U4q8EWNmcbr)WlcmQT5joQ?i{;mRq{hZ!{zZOgg|K;_b ze@=G($1B;F$Nk5`^xrkWRFa0um&1*G4p`X(s)N>5tMcZN!A*Vho8`+AMT(B(^Mv~@ zVsV1~#-!4v$X$DOx`AYQUnNxFax04-iV%2TfZnKSpJa@`Ljl>n5F+$=eR$k7%%pY6 zqW640{HFW%dY6T;g(WS1ilwd8A2m3NOlOii+5rlKVV6_Z{Kt4y0h9bD|M59K0$BepJzDm}U>B3CoQtKTby{4SgoVH=wNgP#YFuGt67? zvpZb8pKmh-RL*|G%cdc@G!XJ72u`=-Wo*xcDNc)54KmH0ef|0e+Ysl&hI6tICto*% z#auD#V$o(BIy&>>u;Pmlw!G1SrK4px=?VjmLDKd2nqQN}=x#@FE$`av&G)qx0};-g zQY%m$M*~#)TEi3o0zk}!tNbtkAUg&*VVYv6+&^|FQGgpi%kVLiRnWLBw(|S|L+O~c zX%$C!6PdtD?G@_dRML4L01-^c79FY-Z95jLQvZfK-z|0+TC?h5|H6n7ouuxX^#YgW zc)iEfE0wyO`7Uu>NYaA-*Vev%g=^VL7(3OPv{LtK%X=8w+>@I7$DLyXd8F-V;XGg zZW=~1kzyu9mVI-#Z`(%1n1sF&s*peZxFXet zEh1L{4v}ud*pX}iyJ3Aq4Em|mxSvesWT5L~Te6>fAf@}mbLHV&87*1WJU8p`E7=ZJ zGfmzrQ-!VP*?D9sG8fr zi?b*u41{BqPxUDZI&n~!5pX~V!oAqf-kiXw+$nDL`^fKM)%#qcU2pfl3eCtqi}VZL zTj@E~yTF{mHP)5A;5~Glrdh-_e=%Bl=aeHHe!Ec2DW}OKpCvI`C7%^BS|yrg9j+j= z&NgCT=GL^{G}pqVY|&YfPE^$>`2=1$wdU!&uEFG#Vm5c$N)Fl1!>}pA*0}B+hwClC zKu`szbk@o82Atx?finevPEjh`}(026N=>mI1frV-!K%D&PSg#eB3`#0{b$|hAX`pfAW|E1Hh z{p$?)|8hD7M|&rO|KKZrA+=plj1WJqY%)kC7to=FItxSNtts+c`E!2)3z0V-$ycJI zZINy`o;kA-XUyA*4*hx8ws}4cKzI;CZag9He%`I{@%;=NNt?3HC=@@!(YYM3Ic8(p z@nqVON`Je1n(6s=I@E&4z29d5d@iU3!WzBqs{TXp6f&WhcWSn>3mEi~>W)1v(NLa6 z>~2WPNnaqstXvPuRM{kMEKeQ6kt7R!w%_~=5C%I}WKfhS^BM||X(q{_ zU;d4*j({n9jww-`n6Xld>)7DHWGPkn*qCrcVZCu(BVVETF`u_UwLC-T2R1g-K|8ue zyx+SYVb28?73+qn0$e zJ8{zJ?bxZMl(f3@^m0+IJ_ztKO`1q$qA~HK2{TW1F=%BS&q6p0V7rC{99B}gwrzmb zgjyOw6t4Yy5voJP!nNcJtkbgnIQpznG4h@rlfhs;1Bum{xvDsJ*WT!;t<7R+nw^p6 z*VPf!1bdg|Xsu2@Rj%PHGlQ#Gqz6rrrVx#T>VUZfNrtW^gLs8H$LB+_!L%DW7D?HZ zFts$)nBhj!rNl09kl{e_o4G{C$AZ#X`{#tDjJfzqRhS+l`>ssUhDLzIW!>a{AgJXi zrb4jWHe|Z<2>%qM4EbB&nihZhU}T42)`>!K93&?(9XfLe>b#uv27$h*R`h=h}7JOY~Z^+nt>Be&vvMa4Od1N{jKzp**&sm zk)uqWrEKH0u@_y1V*@H9-XdaT^Ubv3v!rkuz-`{_FY#s0_WqI(#;li{rYg_A7?$My zPm3$8q+4=sWY1MPetp%U+OWJ3Ju1OeJ?sH=oLF1@bCOWgSX(+QHH-LJ{{Un>0mXhS zZVElFfKWl?H+Jg0q`W9SmI3u(C)f)BFzge3C}!-e9}#l8UE5 z&|TC41=s>uStjlQ`eEDjJ+12pYoUy}%RxE_|Bl>+v1My!!y|PSxp+ zt^>Qoq1qMch#j%8$E!KKLpF2kRPUYWSx-CT0wIz)9&mJG8slyAbul6cxv=+wZ?JcP zPdTLF&`j{KZ>5C5vTvn^z;b9Mgh;n<{SGmRLpu&63%`bs-T=>~_9?)l1pC&O+Qb#} z^tD$ISOd1%m(9J6cRhCSz~NYH+8U;$>F$BMLf#N&K@Qh4L2iahY73w$0uMd`ekHD8F|L>pwX2AU~gLcxlG&A_xq5r!QEmE{_ z*ib~|885I$ony9IASJfSTt*bOrs^-Ck;W&k0#Z2P#{s52B9L?m45tQYoEN^K@ZMqc z!#06r1HBgEKg+>(#BahnWr{<1cve4NuWfah)Vw|M^?U;9A`u4YK?SS}FbrEkjaavL zV{a$hnh!NLNZ$z(drBH+T*vH-B#RYWp^R0o1j!;4L_lR!Q8!D|5&mMg5muUMg64YY#qcKI>nHkMXXaXbgDE_N5`9L)mRTy& z-5*VIo`?O6Jbj%ot~c6XMnm0fvPp)jILb>M2JqkTc*M(J{ih; zuKM)J-)^Lo*@Z((fK|Z!$q>kocHpWo#C*KAs5q+nlL1(3h&*7NKClxSEJYFLYuder zzH{hM7!A-la7#Pj0jnY!JKz-jgf_X`?C+qe-#TO)vS$F+(8(6z?@yf!xMoB}o2)wk zwx-`Scn;j__K$e}nOBHUUrFyd_!Dc$ZL{z*xxWvvt!|0UM$0Alc zmL3Y|4dv|$sd@al1?H1#&r)=XSxC0q`2pLO6Fc`QV6Ea4T?cQE=7oT;LGMyT96f$; z#cZ99j4;nx+#)ykTehxT$347BM}PktObRmouWzPXy87Kg5CeP$)d6V|5GRyYmYIp_ zQ+miI&RVtljEAdXXFWPlN z;@VSAGb@wk`lz!kDiUwLYs_gp7e~!#JXczHXQbk4RvvCVbBYK4-Q=@sn$frXYV!U1 zmrcI^E>~9ISNKx0g2MlqnpG)le0BLyKfno5^vShn!ykavS)c@dM4-uCK>7&@=1L8M zZxjnM!V@K=rNVBz+gx4MA@DZRX?f{4$tp|kn=hMRN#eg2tY7oA`KAlCt1qY9xv9VUS1i0#!ufe? zheE`txFz**sW@MMMqn-~UQ*WT?xn`?3%J>|99Q{QM0}na$CmaaY1S&Zgp7OA!t+vuI5*PL#&M$99q9Sz|0VhsYR$RO~gFA+zO)3+4)}fpwyEElQuGG=2h)qRKJ#Oy*--SaVr7>* z=&mQj7Rt8VOz;%rhJ?UHp8jGl6zX`%H=wzKn)K4}1x(pfy z1B(GDUcZB;Z8}gIyTA%UMmo|?)!bEoZC4p`oE0k2i@^+&nyTpKET1M`%n1LH?hJ@}x&6MX@PdZ)b$R9!>(HEs@_A!Uq)4sbwQ%Q4TZlQ`9b zKElu4k}<`Hz&on-hCg>+(pP_urDWJq(8E~sn4wy6HZ|4tq9O^0<1Z~@{v+T zdJt>Ftkp#GYzd0217Xa&j16rySwQS~fQN1~J zgQ^pxPevB4=%0XSu=5qz*w|J>)Je?igFtVf9Scz+1l00B2f2KJN#P@jjkhoR@r}4` zU>p=q%?UA14tTz(a|^$l-=1H-Mw~$Bak%43_19oSKG3#ir<5d?1pEecWoU|}8uCxf ziLyvZYQT&p(gUfaqvgm2N0w){OLOWSw@qrD!pje|w?(>wV_8A*_z8`M+F=8yj2|9nj)`;%CYnB_4VBPMMr z_6umaa1}_II8-4uAFYDrPZX2fX; zo!inAB@|?W@H1)C+kT=W&(qEfX4zhNMnqL35TUWsQ@?%(b*Fh~w@& zk&RG6@T#9k;Ho_0W-usfZDAvq{ax7tMW(1vHVEGXpO&RhT570^9tfN)@%Pfs<8) zY2I}?`W(}S6xdoZWOD5_{rVJ}d8qoll-(oV=(@CK8Cb47``o!5B&ukfMaj&Hkkco& zvV+l>lGBG-IjQiXVod6Alo4+6+cZyRqz8}zg?(;Pp>Uacz{P&Gnz@9NV*BCbUY3P@ zrNP1jS8@w2uzLM*xfu@&7mm`!>dz?Zi(JvVy{n>7HepTVyX3E%!Yv zIf8rzp_EW;!fm8EX%#N7^YBRMR&5aB6_HR~w81+7awE$sm)9+LXI$1#kFNN38dv#= zPqk`L1G2lK5+UoWBh!%_l$s{>I??Ue3}GnR;c3`wJ_XGit9JM;#Y44Wp9WHEA8}2? zsf=HE!5JM5#!@%(N#&`~D_GTzaxB)TUAtp6rCRc3?m!6UPHxX;F|^s+hpQHga(P#C zD^7f__lNK0%4A1i>_tHh%demPnRA;R-v#@$0N#<~vFuQ`^8;fXkz=i)oB+7elsWL6 zNas#EqEHXbCqGyu{P9*_J3v(GZo9ZlF?-ug6@nr20Rh=U=49po>ekS+v zp#l_vCqW)Uj$QreSV|_f_~}WzwWXjX*DDbDk4UBA2~+C>Kchf}9fioyWxQ;K2Ppob=HTo<6>@SR8;`uq%3 zQ$btT5XRdGfrx8dk{OL5{-<*s&F&vuJ%~55S$4dnH)}cWIM*2YA0kjkwUzfrxm0^N z%1O>T@agm0v4ZMmHj{csD_);}NIrY^h@e)FKJvIT0Yx`1Z{Kwhkl0ke&_n_5{j}W$ zyN=$px-fhxNC6Fd7?|t8FgJRq)iqlwBMVgT7xcG-FSFK`n_ek^+j z(8gVsyfLa^zs=X)M1*asER(6y7mOSvg?~$|d7|JaOE^H~_hs_Cvn9c}f8U>Zb;U?#XaA`}q|;|dqSRfGjQae?VlusX$nVgvP`mzL zhT8ux250{thmNb1)l@c=5kEkQ2?b~j3BnqfW0xR9p-8AGqEIrIDG1EOO!F#g=>)=J zL(u~|Zan_14>;iel9(wYpgCzg{KC%4@nlhr4FgH`avbR$PfxO4WKq4%^!U6%?ZSGS z3$^&Z8jh68j(}PARA#hu{m4(BNhqD3q)&kVqd1eLUtDpbm~ymGZE=B;J%Iycue~xK zY`oUa#X_S?7Y1N5!7$O>Vyu9jqMogP%dKV@L9_i~V9iNsNd%|?lnah%Il_9D_v4n6 zTNoekrZqujh^4XMs<1dn^?K8CM2}oHrs3-~S7Qxq--9-Qg&JZhmp~EEoh=V~B|Bt& zKjC4rN5??+nK348>u0Q@`&MyrpFDvQ~j;S`U5AI`L65B{0 z88AGypR`f>F+oXA9!qPc#3Epnwyq@0_KRDz!sbqMOUy_r+^~W_mNa3iO)m_XlUhSk zS~WY3>R54vMODISlBw)|^cIj_l%zri%PNsZ9lnYeHI+`g;JVywD%EyaFc*vTIBW1B zjT;Rj7n?Bm*il|w=gF~gx8B<~nWe#z($+Ui=s~nmZM`fq}H{ z0+{=9cQuE3WZQOD>ubxIA;lvK!{44NWKKQ{nh`UH%~i4&)!MnVSXvdEj{OnamjT%? zy^Y3GtP?lo(rg=~O5G4cl2-TX(0%g}t8|0}`@W$8gz#amGJ{A+R)p)qIB0fKgLX({ zLYb&`5<>DqA-)EJ*tGIJz6uPbaS+7o=sVT_(v38XoOjK-izE|(#4@ds9Z-E-j~A9PQ2=Ub9b!^vD|ezTee{x!<)RvepdIJ_C$bfr#bYve zB5RqYo%)Zvs1Zjmn4&>=Ybu_q7y9_8UG&ZZIstYZw)9^g)?FP{==FVzpCh(Q8Fl>2 z(Q<$iJK^BKMpz^jBS*V>gcU<({h!0|GFU&!4Cu~{Mn^~4BQF@8_ecO)nasOJfR4DN zIyko0XJ|6P%+2IFTorW;Vy%%7$lASvVf)gOu1L-(*`m=X zuRUwFQ{zmH30FApvFLImCj2Fw+dVU8pu8nx&z_>>3$32pM;94lJN_#KyQ1;Ir8a)g zXh%@s$8)8Xy1IVTCns~Ak$w#EGjw|!K}PqHGzBh}Q25u#=y!GXp$O=AcvGg>_vapuHbiZCk@)TF^jWK9x+nCz)c94Zw9ll zj@RnjplX)sJ&b-cVV3D-Q)Of@XbxN^Pt7df(<(7PC;7-8OPv>;@Wuuyc)rC zV4Z%!W86`kG!WzvO-p`advK=MxmA7{tmHFiBZlBLc&h-|N^jA(mdKB~X%bJgMBl$H zR%I@-9{TI;iWC0tIm!Q;1CI4iYe)wp1G=A*AfW$soc+(?E`R->u;725t4LDX`6@oY zCfzMnRhx(8OQq-3*MT#n`=RAaeX9aR;CjM~gh9+Z#H;lf)<%s3ewExFXVkbxlP+Z* zGyR_0T)Wiye7hs_6@UBwJvTU^dei=>`I{Wv%^;X# z#aI^mQ}{Wf59m_+T9>YRu|v$P2rJcYy_~y#(q!gP{heS4&3dyPc`n^ZW}%WjEY$#c zU?rN!wYEH7@ssLsnc(>=p&CYp^1Qp{A?T>I=vc(WmvAt|cIYh&dU1>ss%$$lr!xR8 zLI`Pzx?SYCJ}cx^XjaLi4Zsbqm%G_^x~E_RYfA^lv}PRCBbGpd)g70qZajKPFq5n} z4W>xK5$~t2bHLVUSDD$g$yJkj!{i)p#n>bk@;aNEIZ~==`paS`Wh=H2r8MW|VosuO zb<);sZwyi5(anChc~+dwW=HF+wR#y~3k(RQeimsvN^UZKDzt#oLmh!K&GpiA*lyV0j&9*Z2 zC&)=O<8GS+W53G$V3JOvJuRpel1{R{;6NlOHj>SFTaEtGK!)^z^9vI`S&hnIm93~L zY-O1m7oqD4xTm)F;)2-MPqH_!?qio>A5ej)%o81WiSqI>TkQTRE0;W6AP!vVEg5In z>{D`^cP9ss;U(w943($X>uG_JjXKk9Y&yPUjgLzheu@(>+9GKJ8wA(1j`NB?bJb}~ z9Zk33c_%vP&_1umof_@eg=}C4&p-RVgM#s#%F_q>`b#3V0S@ysV8r{BCMja?;{01| zW&4CTRc0e%Ud{+H?7%Q;3x6Et<0G`v<>h`=gjQ`B4XSZS!@-f{%dO7>BCt6Vsk_C| zA&lE2(Na2dWSW+CcTtfPmG*Ts23RqMoBR^Pu-%CiJ1Ux>m%CO3tmU@V!k9~W zh6#EB6O?-+^w}Y75^2(?(6|%dN-9GqyBcM%1;U=aHM(7&u0gIdJ!VibkZKD$dXGT7 zE6|3Kb;cW1GRl!_ks%Xjy5Hn9@DK@e7V5e&Z!l2N#vPctn{Q_+7AZH>&9CK707_eY7 zs7J$&l*G#u!`k}39>((ezU3HWXgp3~bL|r(7|_l23iLNicqGoA@dQ^Y+$dD^vbizK zNnhf6%K|L*b?|h3GHZ)a>F=J4;ys2h%5vrt!pTfivU^oFUPVk+n(1jWu6ub4JD^)s z6Ec%ReYjJXTU#E^GuvGrqMw~_7dGG2n8Ab=4d+r2yxK^AC?;IE0WmbSW}j%wbq%GI zuCo}hS&lrSLs~7G1Iu7lLC8!r<0wzqcu=3T53~AFA8#2KM#kHhw2w*2_Nwa4#IbC* zgim`7Ab)?tt@=KFkGT>P*R9_w65uvTqOs@Pq23~$LnuQ^LcX9EZG%}QzhD%^X+a+{ zB4drE5xh;`3CCljAv|J$?(lWB{kqv?<-vc!nttW>vRIIW^U{Pa6y3J&Ox?X{&3V#l z!PL#E7@LNy;zW63&EJ64LZoRLlsM!EPoV-!mu1!P*WR`NY$Cxe$MHruRXMQPeUC~9mtk~i5AnrfYTmz7SJRd;ont(HgFlR?oe^PX)l=pT<-~Z6l8%fcofA zw_H9An~=ODOG&%Gw@4**O!syL7I}se$0p&4<{krAD;ebzsHk+htxA3cN!s~_k3T{N z^!1g6)NAad&Sh7Nv`mxWmnYJ+3MuU&b}n}<<{Oe6Az0>{v^2{MIdwr^lKnjs5@`f1 zG$o->YwKdjK_MX+UVY7D?6hIYPYS|Lf#j_Xsi5j4Gu-^3uG`d+hz37E+UEbzGHf}$ z43XpqEJf`d_<97FAK;3c_7o6a_pS;WyJ0w>F*F6-aH@J>1xo2MK&It?^J`Hq5UAwo z+zH6+o%+Uz^g~}g@cY&~5-(n#cUUEP6~}aYz>VaY$tvnCsG7VtYHf%i$8Vfhl+1}s z{u~SxMfHbEI?R*suK^k$Ss$;5n%RQvD}|igBn45o^X=w=l)q~p=;76mov$7q+`n{? zf8N9U%Rv-`1!eTCj0^>x?46Aqh#CHEHzd)*W`Q0xSjT27KFFSGrQf$MD$Y8R-OS@chpo^ z>Fr(b0f(ygn?KGI=>1N>8_{pG;jK4K+N{>sdzWkak*!uzpR_XDL0c3i@ zS_}@XGJ9D4y>GPRC$go+di2(rwBbd?PXx)PfB7-*Q!_+KIY*8VdWv;856HFCm>nz) z3n&?m<0UbNfj&jdY9$zHPC>0j;-15L}Axx@xz0bw`Kgm+@bcV@Miy`ZQ3 z@TX}?yxNAo@~mk}a9R33{DV8S_mj4q-2hmH%90KuwK(jzWYhiq-$3R|rQlpI{qnx}^p988jmm0UOd z6FOqTUXwVhkDh1%Z}jbxh>KN!_z+&LQp>u zZ`!`%WTCIufq!1o|8ru_e`R3_b6=l_Q8O0YX zhC5};G{S5&N^IN<3UF())C!MqvMYu&%T@#OEF-sv?Png34mKT}0ZXV0 zY&dJlRw_(9#VS@S%gkF#Xp%&uJg321hH1IiIntebgKvmmtxZTqn=TbPsOQ|Jd^=73 zGh|J3VP>&Yb3`x=<~+H{{U)=DonlawKN(BjY*LV9-L+D zwm^zFSaMWAt2Fp)oWf#s)?vSx2l$ij_g;uzZ;+g3^!{#G0gcIA@jDM;i3Q z8B>Y(%=N>c?*#k8LZ|Z4_ZZLGHSonj zWM>8u1x{u=RHw!4(`$M7Wa}Zg8`v3(W-nk2F}wnTju4V(UFVh-MYtdZN8^^f2@Avd z@edSGVBaI$U!d`<|3QWP`;$Y_%4SgnF&i#rl|eLbMA9QsAiZ!`QmpIo`t?YF%59}N z7n&IvnbM!`*qQ?#w|o3i_+F<;CmoX5`x{@m{`B`IWC$oC4`-g=lhaHwMm_IOOW5CR z_e@ZvP^eL4GG5XmW0fTYXf!{|s-)M6QCjF6I$Vki`>`vYsZS01>B z(=g@-U9|l4W|E*_Jkf*Y4gE$K$C6G+)Xpmc8-5I;*7!p3o^T`OVGHNwGK&GoYV9pF zBQJCy1LGC=4JOGC`}EVGt{G*Y{q1SXVB>!ni<2AB<;Dw(`9j6%Q2{qg0jJpE3CR&E z#+C`$5eO#^Nr}|KGVw*bk|*`ju9-|e7|<1kmQXvX#k(S52tXYTQF9cd(!49aJ$86N8@6E8EqmOnR_qX6Zu%D2%{0$=-u1hbKVg=88+IXD&H6am(Jg%~ z`baMkP0NlgI5N-!#u^3suFqfB9K~|IO2{3{NZpjqpf76lUN)0&hnIik#&p!!k+jm< z;QD{MfSBst4u{+ufL8Cf@2GJAcdw|4__Q|oMPenhx&X!&8X44(px!A-#WUMXmNtvuR&0B&hS>5+v)EJh_jF$9)w!iqps}! z$CGDxJR|hwOIKI_gSuk;_b1Ok@De-$G#bn0s&{jxp{jb4Ltc(KG`x=hIqf)5Vcx1M zRrB%XOY1Q22aGcOK+}DMTTwvCkPyoFfcWwDTARr<&(rkujLwetx7a)K5KDMXcn*Ii z0k?qNfHxQFq<( zV54&5rANzwpN<{p&!4412t$BFBymXDHIHqB29*4%BnPYurh)tU3sFR9 z?0BL!_VlEKfHhm`z zkd^RS=w}XCiSZVGx^DJ)J*sZ?VR!C|M#-@0RcRETIk$+%>O>M^b!5?toA#et*B`ty z^pj2?_=7dKk8G>CbFR_YbY?A9ncb&}Bx@M3yzl zM{6cl_guwnR8PlGKP&8ntA9MoeL`0x|A`)(B2<|~YZ#i-H%1sP;iJTZmEY2RB**}3 zc5px(tJ}A3C^Yzc-$PVufN1ecG9CYel41Jykzy;GO(Dc=X}Y=tyha?WJy){@;zk$o zfG%y1m2T8P7aJ8C3CThUG^H2)>&=V23WT-pQqLodJ`7~JF#O&afykJIA5%%i=VDwI zH{49WCl6BiK40GvzUAHq!8OBOux7U8nGJBUc1rGQmi&qBozdAl=eb<_M?we zOuvY2Aco{VfZ1c1iz(e%iLV=E;ulcE34AAyPQ?G+Yl{B7&X!KvKgc+*ZVDh4a3ft# z{G%FO_tSRFv@}Us{#Wk-63TqwVjyTYG|CVFT?#pQPzq+OG4UPIVV`_o{x0^BhnA;E zfRtxIO-r8PDx!O)>j$!G2ha4#QVJ+1W$2$skJOSNjKN5<%m^`s!$@5ULM-e&1B8wA zAU7B$I<=|*@px~-(oiQ!pX{Odg_HU^^{Z+il(V>#RHMOFFv&JB?p~^wr3&tUn3JmOA0E{qAtHFv5mmS z*=afZYu4?8!0c&cn<)pS5i819HNaBT%J zO-G$#XN}lHeeC2NBLMukCR#hg1ForKI>*f3ZPJ`RV%9Zp-d7TQ5~@pw2T0j!_)2x;p+2pI>CIdargm(U_;x# zLtu;hG_br51qxB6bpNDIb$Zh>o%LhWq7ln=LBmPL_hDJPce!9o!(#;Tp|W|2F!UKt zXvP}|J7!&Z!@8zdbVbUsAZ-t3T^M}&R-KZM>xvu7+=W& z?!Vlb|NnbMV*XooO^Q2zsSdA1+_UXVbw##srh>@plJmRodk@#z(DUvtRp><|@4r0?x*L1COV2ARIUU_Nv^wbe9#OojlfM1(s-(7CL>Hc*Pg$tu6913k5s-?rv`!r zXUe+k38D_?S^#7NZd={q#^<{uW*Hg3OrPwYgxpv3i=rw1HIhj`GZIA>R~DsMp2+Eo z^_Uh}Miw5H3aAeJPHoU%l!hopmW+)AGm~VY%6~oYfpQ zQ)?0$xslew9Ro%!-QwXGd|5;Ddl>JI;BsW=8*Pt z5izA6lWthdtn(pRpKV!P(S3PHO|p~u4JM?MS)2a#Q!@7_%-RzW^Kb8-(sH;-P}@2_ z+F$LfGb1kv`Lx4m+Q0bc@NrRrGCwEQ@ZrWeeI<8}MBVO*Yw$(Sc5j{4FhYhfcLL|0 z>0gbRDgN-?|1QTvm(xySE)Vy1oZ0AbJ@?CsjDhBM{nI!LhXrBl#rs+o-95kkk#IXr z5!WIz5I}LXq;lI(9UI)j1PoN!17FXeWPgRWScnH(ke@luTAi;kwD7IJz>}S#`;9eF zlAsf%{|Ip#Zm$cGlb{p79|B18`g*Dn_xMQ9u?7!ed|+!T#OzzvHAaTVZ^Ip7hK>x6 zl1uElm3D*$j_00?bgi!{^Vsf%4ZfR;&msBreuw?+1EVQzyQ7B8C%L?I_#M6S$ErW8 z=e$3{o;u8Sur&;A|1onN3(JP|GbFE7KiYR`Rj}p2m^~4c}t6`q~?S_Ug-~nQT%{iL?p$$R>>foD?Iu&Krkes|zN+0o#xGP^yvHaxndR_upc-3O-ng7TMuJ+#9j z^uGkW^*<;w(wHhwpTbI<=M)b<^B#{{n6?IJBBzO?R8l-L zvP)hZZHl`RI?BQar6bNq=JUl5VrNbIVQ#9B1R;|C#ZAq$>2`4T`8-(J`R3bi!cw}V zTL%7sm081I0B&P!TixZ&7l02Hwt36r#;h?BnvT|b1vEud zn46`E$D#W%USS?jqQ*JsaU(2>9nEIQDvRQBz)?%+kPDNu;7H1ISXCbIA`%+X%aGEk z&VoGzHIa%F1SYK$k{Fdbk6|b>O%XA|oidsmR}Ib^q+Wa{xl8_;t;ye*ulXxCOfK3C zJ@xzWvuThrE1Duj7+Sk)1KX)I?@X?i?ijWpWCOD+QJWG0xim{lCSWg>1P!EtF7bgi?J*F>BlV1NP_ng#R$kcKxJ#X3-daE<=vK@vwZgMSS`;& z(b)Fg@g8O4WqkNnwqL_UXdCPCsU$HaXJAG`sX;k;YD7L9Ao@yo!o~+Be1WU>Y zJBq8NoD6U%YV=wA`fCG+_UKjyKE=V6E#%4G^yta+i6?vRd(=)->~#CAuBm)JtDiv(;ibVD2N?X4(!`z#_ZcxwAsE}**4RA#vXaz zz@8p=6qUTIopt|8NAdwr$(CZL4G39oz0CclADd|Hr*g z&K+lr{R-BT_4&>E&YD%_1Z&J~b1(@e{2SQ4;}Inpzw!1*Rnv^R0V07IRxj)~5`(J^zWq|KM(|;Y~`QL<`?Vs}5$7Wp^!`oWQd;~@V zz1rD!@JoGglD05%P5W!Yrv6bd&kmV*pdt1aIzYC==5uXK7`5b6=9JWNeFHi$sm-cv3 zz#}cc2XByE7#cP4Vh8RnR(?SpflR~WT0;oz2MGpV{% z@t50oWsHMO(U!rZHC7v~z2V`NnA~ghG=?{s52#F3Ohb+l;bZO5plP^?*=wXYnv;&0 zV1nUf!;g3-yxG!DatF~-5n&P5 zMAkj-hMB7>+VBQxrZI6)G)}U1)8mV!$4E?Y>`v72*&eKL77!5YdxK^}(Nwh6>Vtsh zQ_5x5WQVs%Ix=Hp#ZP&m$+&#ThR1Z=8{gV32U#Iji`v@dL?yVl+B>lY`>44+-6PwX zqN20eyRNdct>t?B>{^V_#QGF%rW>6s>_i zS30Z?mb(rLma&D?sAcsGpJufjSg?gj4yJR)#Ik$Ot`4>2(Lo{ESE=`GPGxBPS}%Qg z!$S+LHuIX%*x60AK*@^n%F-c8Tu|5M0R4G{HPZ{YErXk!+k+k@cE*2R({kywg1Hfr z1!MRYC3^=e-?Q4L>Q!a6GmM$peT&o*ZSC1v!G6!G#VN9);?y)xuul*9T9vZGHK*LA z4EAtH*_os5uvUR=6TexqML0dlm9J2??)tTg|F58Vtgu7(G~ltR_Afp*+5e^`(MN7w z6lXYx8p?UYQigeL@=TPnaA$@oC%|XW@5im2z)-tn(s#r)d~16dW-ze^+`+BI$LViE zYcMMj>5oxmjgpf;iq+cjyRVKev#%WZK5vd}dO#Sig@Z|ilI0WfezuO*<~DuBOy+Fq zsJ3tv;)l-sdFzU?riWuY-B8&}3A7xpIUNPOeAOC_pYGjhCAN_-Vax*p`|)9LT|G~_ z;Alnf+=7{HpMafx;M#ojjLUspNzu$@hw!R3z=pfLyRrS)-^*Gs6H2_!2x2YPZ1IwP zg-IA-eC<2Zt;flBwZ;>vPaLk#+^E%$({ZNStcMvba{TL(0vA<|vZK|ZKbPda`{y0n zsJ`hva~#Sqk$6(_d;~Sw=WqAqAbqxX<#+l_k}$zV`0?|?{D507?fh7mB|#YBk&e>! zc^~dfGH?7337r@)yrYUj(;_-Pm|)XpivkRjvS75okK0Yh31Zj}=S`|V!YzGtu9sLx zyGC6Z5;|{zbc{uq@^evoXI?SpsH!yIzhs~l)X~kQ*{D@tg)xJluwcp!x!9Dqx?78z zN)^R$~O5VXlDPM8cBGi?*Q0FP78IaVjy47 zo{`R+HiCbQl$cHfXEdC~`PbY;`5W1SQ6E#d`i?;V$fH&b$jc3)4VL`ARiYukhA(H& zbgLoXnFWh+`esH|uba8w_S5XcD_z^0NXgWK;l9)*LtWI$=?>?Sp7eVktz{<+%*=Mg zTETEkN7PyZS%>dSr(3|Oc9B|_?|KCry0J}!RI7{MMYdyDQ-Oz$RT-+2eA3kH#c26P zCBh4JruGFAwOD!OlCeOOJN(&^OSj0`zsk%BACWNAehJ?Zl`p~ z?OUyJ>H-YhNKx?Bx}OCYjib=C;lji3)Cby(a1H4`oIg)dw1pnA!O4ap(^;{4B6o9zRq?L9kZjCx}il4$QP;=6ZE` zr{Qpx3!AMJ`J<~i9);#_B74ba&b!Aqem-b!BmcrZ<(zQw?_NBE=<=RM!G^ZeHbi1! z8#!rhrDckq#04hBgmuks5kUi$3Wy{J>q#*j1zdwlhVlFfF;7UY`kSMb9k&FmZ!E%) zeby!ZR~ufWn1)%O7!NX6@v68FS5{HLasUZEnWo%r;wdNo@l(OIT-_N%rcsBcrRPPh zX+}6`%~XjF<2zwQKRwts2Z@^r7iMz2O3$x~%D_m9N>GHxuYzkyNftVK4f;H@ZtAbe z2d}sv;osI|$e6vK)Nt{~5us?I$Vn>2IVg7%1Lu*Z#J@wynyn{|Cy?NtJVjV$Mze9n zfB-AMbv5u_0kZ{GshhmT!b84>KXRlF_{i3@TLV>3&)?F*$u-i-ABy>SH+z;aUwGtK zaIbQ3RN-?fKi}tukzvWu?Ajyu{E|c-pGkiP%VMh4W?M$d9FYM-*QHPmD%)Y#RH+5m z>LdLQX0<_38nhU}g;x|X%7Xsmqc7rUo>0JnTE-1cHlF9GP1Q%9rp6mderT59IDEGL zIPCcB%)|Dx+!rf)@3iDviUJrsc-*x?t!J^di=?CJhZVka%NCK*vgzVeU%SGY_zP*x z&N*M@Wk0v3yW``=O9E?CHJg%})=I#(vQm+g(u~i*8D00lDY3FV`gktYMW5T7#Fl8$ zuD>a}h*elxgt9Q2TFov7+Q(l_fl^ygyaND3?*F3baQ?%PkInoa(Fp)BWZ9U#+!IlwYL8nt(8m@FP{)9!8*yc~ut7=Pr1K--4Ay`wPAK+A4t+^6GJ8!ez+S zTU*D`Tjtf~RZka~?yu;-AQAyUl(f^x<|%*U*DE+T*xRA$g#wkwi+BEQ@q zR1u7`cQsTv;RHP13>Ojvbf@UA^sQNHkK$30+NfGDLqJ-Ky4mtDUC&ez>lxhX_d;%+ z9Pc59A2pdlvg$$=m3GU z{+OvC@2LkJtJb^&$T%!6x30E6vZHg!OJh4VlWY|TFe!GFtJ)&~A&UZk6I7pA)K#Dw zS9xg939&mya#b&WSB9KJ)V|@nbB6h^^`~igvg96aL*$(ZT!%x#K3qEc1t|rUmByOW zV;c)nd~^6@vrqcVc8wJ9Z7a`*60_Z-kk&LMIt=d+$-+LUo@askT`!iJQd_@6ZR(Mj z;!6>~&3vNF*;H=4LTV_@r%m0hwd5~c-JpZc>9J{CzwtNSbZ5rTB-sAw4-Rxdnv!}J z><5FQ>T|Q|v2#m4Kz`R#mcARE+K~{?HQ$DROwsC%u2sf9&zS)d&{@t7lzQf$x2V?e zT_11!oe+%Q#4DdH_W5b~E{nd_6J~vBcrydHg`)O8r&pweerj%6$uJR9+=$)^q$|qT9 z_chnS6*jdms>%zCT&0p?wmLqsE%Tr3EX}C@fmNtu(e(6?5IcDo2*ov0nq1J98O(aA# z(KG@$YpTF$Uc@3jeY>3UO2ZyT(-&QWit=$z6Ao?)Bkl1Jx3r%4CK_rYiT7R{f53X zU((~Dej+8^;-Xt?!lW z_7)iE!fcj+h)|9c|yaJ zyVW=3DId3ET)W^cGB`Wte|$_{?HRAFdU}jD`!c(HUowmIv3H3UBD1r^MEhApxR@f= zZRq5UZu0smp@Gr!=60i_khI~t(N9T1+i2Gn6fvX05mJRVrSE~)%6R3>q6xfQ3nVo_ zh6AT!t0;tC99&V$su|EX6N=t)D6I}lHXjb#L4TGqPbhSzE&r1#dtaH9TGBp^FNdFc zp_B!~diI5d4(D@_w1@irz zP4(WJQ0x05d+V#=+wc_7t5;D$qe|!tjDU_;z$7_tQGs)M)}rj*mo0q!!3}Mtjoc6T zCblX~ZDFM~19X$xN4!5p918-J(-wdoxqnZ9nEuW~6(#t{&42qNKvtXWR0jSE7~vdw z*!n(Jmbl{ePFB6S@v#U{KCx?A23+lh7m(d}+rA&f!bm#4^kc5nB zcV3s5Z!tC7UrI|!5T%G@8K_X5p~594+SFM@l*^qa6{Ho-u!6O!QfM=DQ~J`a%G%2k zA0!L(%FQ<`my;wL^p9mK469hif2^`dCL1ZER+&?v4p~zi6l*tK*efq9X&3-Cr~0`s zvSd88Z?QlkS>V=m$p}8YnZ!&s( zHyC5nZl_FNPOTr>y$>VoVWYWo=^JM!VRzqL`gXg4$~P81T00^BMc{*r1YeEQ2ka~) zt6I9t&&Hd;W(FDfa^>Xlq@u-6GZ7IUI79=-+5uxPc9&s_aC{fOPs@zjzU|D_%8mS< zTic_lcAEg9=qRX4550EGG6`CP-O+azX3pCH@{_vjxE)g!r}#h)3%*e1N3htZkMniX z>)f`mm`lC8m-?qY)t#BjH{b$bR~`fgKTaUC2^jHTvjnmDEHQ2y0fPq6B6#zz{RZGL zJoXgVsY6IHZ>l7rX|pj{4LmLDFsVuOrmia%h>#iCVqOhrpg?d85OK6Icu*DRrU;2E zrkM|c4>!Lk6Q>aogrL9D4_u{v^Lv2Udu~m3O_r!MX-&fL2|iHgF-I;OHX6muUW!Lf z#hECaV(ef~$jFKevtuMA8(N@j#G=1ljblF6$z7T|O5H+sW8{Sl-=N%=OBoxRy-}>x z(qkPr9;ApjggWXaeE7>8r-Pz?j|cqWzy6DV_`l;#MT!^J3!*5zARQJXtI38?jdWmw zEB@?>uj|>Xpd>!wx!>Yqi4gc>SF`9etUAjtqK@zG!PfX?lnVL2;g_GT0OCy=kotvf zcXrbo9+zopJs%%?a$m?Uf5saAWcp!9!Sn-a$~*wX-)cZMg(U=B;8-3_jRx9tzSa{B z2?rxu&m;0>!oVAWi_NH8F73=M>OnE*)$dq)r!88Kqd8+R&w$h{HW;md#(9!OqF^w( zw2wjtu;!Gq$pWq0%%d1p%nm0gnlPSu1ZFQ+c6wr=B_OelMciP?7mU?hM1X)uQOs3S z4AhtOuGMjBzTKc5MtZW>h!-OKcb>5^^Wlfe37M{a;&(eFUKII}*?f*)MAudGf^W$Z zwho-HsPj3sB(H$6xDw&5jOk(4gGrZb8D)P_BtV|&72p3Jo3drgkGA|o`pB(HL;m#X znHu5{NkAQzf~4dhvF2THOEXUXx>ufhn2^=SeDh8D z;zQSG73>^Rt*P&W5*6VXd#%A1&?&x6KSS%iFw*>p8E~+YYdqMJ+phY&6ZF78Ih1wg z(_9)cMCHPDoE0gFVD+3IQfZwX;%cPh8_9LHTs}0#57?&TQ5Q{pKqxbT9 z5&WkR69@?}zn_AmLWsR~DcU-a_5`Dw`%`v=967cBoRaVldvtnad!o|{#unf2(u$XIJHF*i=|2~`+pu{g2rz&(HKq`ay;7&7c;*WBt%gy=kJ0bc*1z;A4_$4 z8rzIu#)&u-YLjL-pwq^^*!PJ?B80F&BilZH!UL~2b*{8nQa5W#ior_}?Lx-{C4xI6 z*)w8sHX}2V;RpnwyP~xqi_Sb{rE<$7are7$x(re1XEL$h;EYK6BSvlZLbshEH(pNH ztG#?9&A2uI=EaRMlD|(h^^dZnn^)kIxVu+PW}-*oi`yF#Myl+=<58QakJmkWyC-3d znZFIfoGgY=qby-k;X->^`0ZRbG0Y!5pPwnkOv_}9W^c(CHALKWCQNgOT*lVzA>TN{ z*_X9=Ki>PBD|Cn-Y`cTt#g;KgDc)uJ#_5NoD2+J~Xjcni*V>rIQLPbYMg~)b=Qzw= zo~J}^R^eTd=Wi|KnsHJ%Y%DfbM^?{VJ*fd@xMdbkaoZ{%)eauHhO(E&36oVvpKBf> zhF3u6Mn$W)yS|B^qcayIynE9JuWIL0wx-(}?6PX^)&{Hl1i!SN>-E#5g1r6wGv)YI z_HjFVsUx%8lk4=GSVO?mjRXXK-f|!6#$|2*w{oryD+uoLO?3oi2?eP z<3?cF9@-@mi|~7X_28;&H$`HS&gkuszTgb!Po}g8H+7Wy?-kAqx3A>#%D8aAI#F!O za!T79+(GYBa4gq&d|t>O0(rQLa%?yA?@Q>|RS?+e>oe26!IN~HAo$JgQOvGFRUT!p z<~Dt${uVX1cdHKvW{r`}b&d_H^?6>~v z1I^|k<<5%}vbbgyl`eJBO+9}-Wx(*`R`vh{+5d|K{a@ng>YtVkJ4_?oCIM{oToCQa zkMp~lyCU3pukQKqu~Zf_ed)IyQfmM~3g=3DJ^u8K`bbDRF9itbHb~;*%|w3ydUCt+ z+B)jG`|GgMm+%fUSmfd`Wn?(y6i7N}j~Gat^>!W_5cz=0Ys2L6@_+lYD6fD2n~y7y&m9=5d`kDo5+HQrlZ=m+IQ9#?XwJ;IAryyp2~Nn}emM#wq8jFGXA*=`8kVFsr3 zTQ_@;p3D6#YOz=R=X=px=X=>I!L5DSX8Py^WR$MVWDWso+!;adjHKxjA^$^xY!hZi zi3lR<#!sgUZ7sx2CsTy`2Xmom;pvAgMbI84U#unDv!)lw*RN$q_-xlBAFpehXq*8q zJx&5K@9Gua;9E5Ee%Qd3TaFWq_>(TO)vLEF1mlk{+dWXs!{i9yR<>YL-YK8yWi6bxruDt}DWQqV3sp0jlN?-A zurQP;&%OVk4xd@aJ(HR}aznefpCDh_jVjEw-}KxgG040wH2xq6Tn_^*QZx{h@1Zc# zt0*uuz#Q=oi5?Q<)b2zwi_MVgl5x0<05PoaiV~BVkmG3ZKv)<&I#f=ahG^J;N>hYq z*eK?hMQ}E@BAZ(1G(@@tRvd#$^g&awRH^@|(-)DB_gBaqYWRq{2#uk*DH3F|XfqZMX$}Ax)SBPCH!@_>aetm)75s+^MZ2;8-WRv8WIgY<{8nJIKAlhc+;gBjQuQZO_!~Rq z>LMWEpzbM0tMj$(T_>>udDWw(^s}MD`9uO)rjn&DT0_P&d|k$}*ZP-`Bf4Lfh(n9t z^o6Kga>0^LUVP4d4GU^<;5b$&ex9rJ%658;} znX{U+gGJO?Wg9pUFW$A8uDrL`Daw^;)ZAd!4L4*y{|}+lj}Exs-96pTHBL9M9|6gE z>)ut$`~k?b0vD-e_y$gDxx${H855p7%+nsf1wmq1B_=1h6FgQe2pAx7Y?d0 z55_o0lkNaGT6Hy%b;aM~3G&UZ!&ei?&41qhfU(b`saQd=!aQ1QxuW?bL)jccsR399 z#viLntzEv!V!@tu0LpQ(x-Hq{*<05Gd=WOuJzATUcl+UN!G5Aw2}EnzYQWJV-E3KF z+8$WF#cRagaX>{&Qh5{7a=W$yG^*WQn3+b-1t;P(`fL%F-?sGP1cj1}wK4k>5^`icyb_8PNB|Y9Fm%Jpy z1KS3CQWb+&0Y}!OdSX3W1k}Fv#t-d>SNS_FX6ZRP#eR}}$^P`Q;;XGAZ4GPwE#r-w zIf*hO8S+-f%q{~;IhyTvjq6*eG#8J}A7pKwzWkx#AR^U6l9(SDZ-e}2pB7GZxhe0D@QV|#^cQSn`fsUYx z*@Lx4pdt3X3b944jF_Xih5J~M82y> z5TSK!GDxWQ!x^`^Ey>0k+KzQOhEyNmGI$nK1sKEGbb z&0I!!l(N|u#^vxdg{T`CLZjE??oy*=PfgKEaheGuIm_Fi6!w#>20UOI7d)dn$QAi3 zO?;#5fq5UWVWkcrHhFFxdn4IS!zBQ#cEbY>|4%_Eu=O4>1t-N*vYsi{i`B` z(Lf~M{JQ2=1Qw&rPgV;W+$o{$6hUx4Ikoejp$*?enUHu4^N5+ZW1i!A#7z@j zWu-Ci%n(HTV?5b^`CCYi1trQOkm;q@5;y{5LYLRrmtG;=3)0^iP?}MITyoMB5ZUoe z@yL;9wqllOPk5y>`8NefFqU=C6iYk>_Kt-JDJN@X5%vw+R^LkUjvc*(l`nKIT*qNe ziH7ftjSm&90!p>!?rAxPH9+V~)M2PQ&|B=+?Dqs~iRrrC%L;;z zpm~P7NGErvZ^>VMn4sUe?K1|&)dlfhpbWOM-2C_|h7J&=tNZL*)aRc0it#GHj*7e|1}&YoGa^Rg8DSHx`WIkMW|g*Y$mz z%iLM(Oky0C^^{~C3ytIBm0njrjgjS+C$6X|^$`vs1_o~9w|dbJV4vC#VD=bpV-qjT zbC&5|Z}%d~>admvj+w417wZK?#gg^_YSmAeKZ3*{Q0D{&5TvSqk+FZ0KZ<9vfIEsG z;Ofm<6_EMHK&VY)XoFo&Hek}uAy&Pv5g0^B$ji=^tVS7t*{oLvzJOPuP!c|0`aNt6 zlZY@fr9s#DwtdfS&busTW}P0N58!VD_CRgGx1a;|Mgcoj>Wf-(546*EmeWp=y-je7 zPB_!{mYa__Iy$qC5kD#tPZQU=FV%|8%&YUT4xyW9g%oj{)R*sjE89Q9Ys|400T*O8 zdfB999!hK0jkB=QFK@n#x43o6tCWe=7FLL*ovd2(<|fN{QQJ0g$#wqXEXPu^8exVK zO!acoMf^DP>Tw8u4 zzVh0A6{Qt3f4RxyRk9#P=E!ji^qR1gm7y2^OOJLJpcV8o&->m%JAQ18+!rgwhGSA3 zxaf6%QkvBH9FpXuJYyVXm+>j=l6R+;c#*oOgar z&7)z4q)=qNkOgJF8hPyU{HQYFNBu~HoY zc+iYzO2B2-3E|X}N1RVnZ7#+iuWvDcXy1le?$Woco%}^_!P={teQ9JnmDc<#VF8pj zy&1W9iZCz!+@1;BC4j_&Eyl$q*f0~SZ*u~bOlm?vf5!3Pew z{!%F+v>?U@cX*eMjR%m!5xP6U5c{nw_X!D#m>@AVe&=|O@6f_K9ePBnB)@&R{pAls z7!@Np9J^-Fv*pah3re?LHVMd7*RW0YZmT8P?Y=^pZ->|5BORaU5=7)5aKQJC5u}(= z;upEOQ%I$uk6BPa%;%A)@@4U)M>oXlzKgggu7#MrY+Oc(0n9xyCi2?im!BVcT;t&U zaC7;Y;@q@M=IHji{Aj=Z!nyVvev6m)avv2nYl_-hFuoaC`XIx6==8Nrk8b411}E(= zVgGjfAsM{mnT~3dotK6x*H#i3Ri)(#Nt_~r!`>YPyK|ZHBt>+sc0B)O#Eh-7Sk|m{iYVv+t_X1 zGif$rzRhidi27FiP}$=9X>)pqUJ$w-(by?7@U-MtKXm-LUDf?I;hu8*;&qXowe*%* zetJLn4TK$*W;fr@$kTWSS{)pAgJov03c9wudUKF`Wl8T>b962BQLO;d7dwJ?4sqZsXFU{XdIk-EC?d1SCes>ao96xyMv95ZU^0GUD8TkffRwUM? zmKekj_t&M|y}RXW7*_U$=S`~B6^jkE*~@ASy$kl%tafkUng(I6H7riQZL`X~J@b+m zz;lP4twyUl&Bv0Rcj=TAqa&NgN z)}{tVF)YasCsWh^#D89?`OL2YICcJuIQ?$AHzz$Uiwifm$0`#(R=b3Y4 z`JdRSFT@*JWvXtfZhCF_PW`-3BD+BgW*GXF?BIsNrOBJX2Jn8 zBbq}b@M-9^3_lXT>%3;u6X7AFE>(Lv0a!K2ageN&Y@ODR=EZ`>iRF+i3|HLUgY1*z z=*|1ZM@}dul30u*74zn&FA)ePnj6c~oDpH>XaELb4kapzgI2bvc>sa0DjhPU1c?S2rhD*Fn5y*EF%FeeRM%)gPdk}6lF|QRmuI^Cw;tPc z^c_`B3Ksssz$%4U?W6IHEgK~jXa;>l!UXSBIeK+!s_h2I>m4 zOJk$mHX}Yq{Ly{v3#UYyL-IC2J2~Gp#ul_CWxl5M4L4=jTB@FZiOM&qE`&u63cec z*81*M=>noNu&+6J%+gknlW4P5?Maega zWGg3ni&qs$2#cECSLF5jW%B~7O#jb2z-^=1+Nu%1ORcVkc~$AG2fE6>Q=LEBcB39% zO9v9ml%VNGiHr1FFp5Cd#v%@_Ycv}Pf$)*$FGWR2NWgvg z39x40PYKq`cB*#1{=FF{OruO3R9!TE$e}0AWZGsM$kdfW5QUNYS7c~>Xams{ zqV#wZI%s`)x!>us*LV{kY=^Vn$fDRFlcca{x_H*STM=y30h+D8OhXH6rRc&l;>5eD zQg*3YE~8N_D>GeZYT8_C&|16<4I;-}TK-16x#-1zeUWT{Fj4um=lvL(i*>EkEX69* zv{`HY++DD&wVcZZ2h4oUsR8#j17Ftq-jIYx6!@WZ)p-27*QA5;fSFmk1Ouu!L2SNk zNYM!qIV7DU5}J`EwPZeSavjORSVtxEIg>wgNCaSG(i9|JPmD9M5&2j%YR$F>l1b$V z(&ZV$38hU)LF-)^a?z?Ur92kk@y0cF=WBhd(czeQ&g6Y_Yc?x#Ir=_&EvDjj0)Fq( zWl=(c|Mkztq*HuPZ4?#686N(=eu}*0lnS-`FS3lb143i(ztPTIQr|8oZ4ki1PUn-X{=SHUxp^h z7Rnw9{W~^9^2k7VpoS~KE}IgR@-fn-zH&bg3KYx?35|YK?zg)Ud%jTa0KGA|b=}p+ zTB+~uNFy|P0TeQ7W7FHaBO_MfF4NQJt>!owCzP=rFx?iclWu&eKBMfi6_ z>Y*{|qFTT>e_Wz*_7xlcvK#$f7Pp)5KI+sSkMVy}-v00BEUf^E()_Pf{7*wf%>M+0 z60L03l>i53x8k{OfGwmjZ`D;X^&Hkvb#(Yk039iZD%2>e{5f6e`F&FDzdKR|*R;Oq zfSwe-Z;B_updA-fp^*l8v?IRb^i}p<&&bm&U`h2Sh;L8^+yYi9HHVGkCG~RzXQUgA zp7pObfnS0B;qJ~T8UjC&wxMyX8Po1nF`nm)yCHG<-o-;n;Nux?JPBKEc|=iU)2+h!@zl!Umn$N7M%q5iwfttSWE_(8oqXXjkr(<#aYkutS}vKH*^Al#`*% zI=yF8do(u|(G#&d>#HCLnbG8n`!*wdvJ_@-frUQz^iAcaqTIWRYs*)dL8vG=A zg4)(+T@Km-2lG5p%LLI`286;!UMUD;2A&a$>szJiI+@Wj`uw!eUB~zEPv|X9VmAvW zJf-;cn(I5oI9SR-68bR~ddl;|j9SSf4I*W65AElQ8r=qa7Pf{?s;fo@8>4B|Qn3@) zBZr|YEP_ZFCC@ABNf%Zk0&w%o;9 zXIXnLx@{I)6*#;_ijcgf-!N$RetO)$L=oCr#3e7Axf-5d(LcU_E}p6|F>jH$eKa|5 zdzZS5N-DQ+3xcR24Vw7saR~fX3rSw zSk*f)a2dK-d_!>VL;4>a^kbd;*(geLH4V3`hPk;-IY+BXk@NXKq1S3<*QvS1qHcu* zQjDots92U-qIciz-RE<6?@}&D3RMbjbVXjwY+lwgdi=L%Wp!OFBwM=OFF|Ep%;4~q zsZU`n`Bb-8W-VUhtMQ1B+3ttS?ftLWpEnO-EO}-nBo#P3i`|E>7uFlXD8Vu7GM%e*ENX&!i;ab(jTwnM zFL=|%1d}0RaL`2xMS@B<1Lx_6v%}O??DB0Wm%tyfp^}a}B!PB9o9wU!< zvhT8=RzBXR0V8~0V7X;fEd@6MjggayS~u1`k@^S)K`pGqWE!MjCTzze=i(KK;S&1A zuRw`O?p73!0%0vyEQ&H`lEpL3i|XQo#p98F1vzP&Pc<256KBcOz!hiO@yi9xX5e!W ztA`i@Bg;{W%o%Q2kkK|#31vPf7OOIxl{!iyN0LVEd>uqMj4lG^Oe~(l97|;Q2~Co^ z?+-bM(M)HsW>)P{&+%?nAMmmd@D7bN}!4%C@{1Qd7z@8gcxa%Xjd^~v*!&nhH}wFrUwB6 z^2*qKQ;^9J^F%qQF}G&kN)zE`sMmUosjv}{)t#w4>5*ei(Dh+mV`^sSnx^Io`$b zHOj`Hl&)|7`vIe_94Vb2&^juphK9{(2z|q6u~C0KMct8xSq{pvHk)}Wx9>a=1bm|- zBSR_Mw7n5~3b5mhm4h>3yIB}N3|!fREf_n|`Aslmel^o)HT-}~JL)f12(0&&0W^7$vzSMp8aD6i3K7B~pZ^mUU zqd$M5yEIUWmGOeGd<0E)0g8 zW6*#yKp76IQq<*N{syw;AEO-%V+xL;>qGi_^Kq+^(>(Qs|6JJQ+iR5U9;~5Ho`acp zODpsy!r935?$XCY(}i_G$4Zo(zT4&x#fY*z3HMOu1|) zTJ^iFbN^Tr*Boq7^#H2s>t7DzC|=X61%PC&f05+BgHcsVb~f0oC_c-iUHe$78tr+N zxYR}K@yT|Nt1iv+*6|m2W+Da|sVt0SfzkUv{pTVQJCyb`uH}9CO@~PMzTiXeN|F0D zTAzW+nedNaJ!Sh`@xFchK6~Q-@@3!xd;#mb%Z^~l+lpV#ci#{6KF~V^%uHQEV*OGg zU@1ImKQ%$dT`D4qL!~r^=uiS2Y(Ikn(^BLC3^}5HmS#O16Bv0EVNu3WAwuAIib;?O z5nu0j2#c+dVC7L9GR+Vb`$I()7AF-vsEAUMA`JtZ=~v}{p$sHdj2{K1Mk0`m zZGJK6Gec6tVq8o`O3P8KW;pw3Zd(H>3=U#*Q#-1y{Ty@xu`$8G#tUV{?TCG z=Wh5C1&3W;^eva&e3)^%%GTP`eh9kCHrr9Z@uw;Ck!)5+S=v1o{8zwXR|@<~ryMGX zwXErm8i%zD$E&P{P&BWCJEbhYPx6PCsJh;)hStvLftD-~Y7>pmH|q!N45uw&_pO?) zmXZg$k~J<~YXOjE^;$@D^;*!J#vLZhmRvA)^_jqoq&!8LO)^hVZoJ0bWC)esCtZ+Q z2o=5M0E_E1hzwtzXAHikE7j?oBawusk%WGv0M4` z4k}s5xn09po~jotI=zPp4^b5<<`?cBb(^N_F@8^-%`NS=z`xjayNb|jZwfD(Qm72p zd4sQyQaT?GLv-ryx^XLhD!1m2(aYvOpIy0G`Z@8xcDYT{ zkfeVH%XeV{w65Kz+NSR^(_a1>s{aBFP-IiV0;owc8Z_JHhKE{Te5i4Mk}M1Z7G`P# z{U3_uT~j<%$wuF&PBR182@j-&l(u#iIL=D#WYPBR`UQsMHTs&tY-?2pPPQjG3?Id4Vp6Gx(* z4E*w9(9+L!arpL^7*C zj3$}NLKk(5MS%A&thjk|~cRC(y`(o{*70=05RW{lT$0b~Jc};gl2>PBh zNHVrII&_ip8Ix=+r3aqzxw=PdP16-@QSWj`1mJ=AX*tK6UH z!APds^mSaz1EhQsEi=G^*0k?|Yo?4|gH$tEPEs{UPO25SF!1ZHDAbv4MPS7YtsaOq z8Uwnq&O#f@`Bzco#@h(wu@@3#o{qtEtw?w3u!|Uz>dV#r%C8FfGd&ajf&rnw~d=I%dttqYSWqj_s0KZCjA{MOH#ConHNRyeiWbL zOF$Fl{0iFE)J~E%9dW} z>1H$ku6)j^j`rHxBAR!+Y7DOOTnKP?BDO)nVOX9zE@RNdYqyLIH$@T zozBL{WU2}c6bFxERhvGm4v=GUVeu_qV-BF+>6YEF&<`&qv}Xd$*)4~@8OELy+{$>L z9KGdp+)Vi|g4+x^5vb2TaxK4CKsVHe4y|6rSH*5`1#X3Ww*> z)MwO9_l#k31}t}p&l_zKJ0kk4g4UU@Nn8DBIl!BDFpNM| z4H+}1sF2S6%5^40VXNLm^2Q9)Rg%g}N0r^Z^eh@pSuifYJBJY!tZZ-!-mj1L2xfH6 z-#&qE);Gr)$|NMm~^x}M$cSX;8t~s zrfwrXJuI(yFU@kfm#nH?u|y+$xJw>Z91POlx|lVY9i7(a&trD9`bPQum4I$rZ7Es@ z_)RAN)o=Qr!1+5I1^`EH{yT~{o#h#YvM$jYx< zBNaDEoG?9_pe5>G_fzwW?oQOVp!B~DmPs2~(=B7-k#yU`m>PW0HmJChvT}fG}iK#rUK{|n;dBa}4PYQUneQUzD z6ibAxaQamm!Oh0n2I<;N zG5OoigCREqs=U9E8zM<=)*X7z5Qx+_9OLfnUJE9zB2%q6bfmgM@=;i*axrJAe@)25Ml@ zMOV=OK4Ooy6Tq_~PDotE<26s{5+ms2&VB41#lh#E!Yv+H21>r%tCC0*<%B z>azFMM^4wP0XEBq?1Vb5Tm_d?n&nC^!7(pjL$+d_{++S&o7EZYb^>}I3F$UrE{sPs z56B}447M08_}orCvp)^}jR$DPC^tG`l9DGsa8M0k>M=tbZVAzgG?~`)(iaL@umVjeqddp2saTqdR1{1TA?Y`#Z&pg7Py+4Zh&ue(rbR z{vv&) zB>g#~7Pm>2`&0^vWmU7m>AOu1hj|}~uzG1B0JwLwMo^(M0}MzxPkT(WId3{wKi|!45dke6Dn!&9s)4FaD#J*$e&pN*?t~~V z-sYEA%xGcW5%%rE_&@m_D$JDAwuNULLGwbAJq@yzmRtD4Si+ujXZY>BjelivBB5Pq zrxGwv6fJOO9P!zS{SJ5DYVwLTQ=NC)@CS;sGJtNJDQ8JGm^jWyq|bagWSuFQEH0I` z<&!%bYP1d0pnlw7R^WCW_>RyOKkHAGo9AJ^FQ$O(IBtom_G>Q2k(2Qw-Xf7K^mX`p zuL!1J(IC9|WhO5G!I;bm14_*BN?~CGNDif^3%C&iNu}P~sQn5xD zu2Y46%2Kg8euM-%!%ow+7J&E_%fn(j}bTlWi#N1^|D&qE86J|;Gnw6Ayo$Kx=zusBWo1)%wg1!qT-@ccmDQn%=s}~tv z0E5)7zUBdOo7id#`&LX*vO?|IKm3OugdE^h%%H2wE_VAY2!BPVDx zX+NtthU_G6dXE3#Xm2-KVZ<7^^fZopMCIEjc_a-TE#1=z;%2oSg{2<%?MI`M=8m&r zyY@tex4GbMxPpv;P7)(et+&n93ZRn9qblH$3e2|{PQHhVl?Q~TcqiGYd^Y+)Ch4$- zvm(6@NqQn~y#JDV30}JAIo*eVw%p{6UYjqhBtR*@_ALbPY>vze76Xnx_O9xciOV#1GZap_C#g*{%35~P=wtK7onh6fwEV-lVM_26a33t z;x$X&m%sM~i)kyan_v)R&=}SMyRz%HyJ)}U^+d~LT<98WcIbSHb};1-tn1l*Vh9jU znc0DI^eaP*qGYv96Y2>FWsQO0eDMckHbXyrlFeA-$^gpW10S|Z&lj}{rAzvMlr4_# z<2)Z+;B;+S2?Yh}*3AndJEXiRTOZ(0`&nn437?|=9Mssu7w(ws6?&StIr~2gm%mtCDXRaFq6cHpO{G;ru?62(HrDOiux)*%EMb>YNQtoowkLErfW>gt#uJS=pIXWy#Ob4ENhwD?AP5sZ%p~ zO>}LBl|(&u0(}PR$l{|3GyT?>!X$TutbF_Si{+v;@WizZEqMvRSmu6ZXkn$9d;`Jq z(s@;@Ug0k}1!1yZj)G`IpSkV1U_9zn3XIbe$Rmu(QI(hqbq%%&=E5OKk~B(E%u`U| zvzb~lT?I+8pZ5tocMGrx!p*x|P9&Qoz(5Od7KVPCPt^HTco;9_7h=79!=8(5JJ-UC zZnkO;BpVNRZVfSa32eXEHWBr)=U)2o!m^Lh18`Q_4rj(Zya3%wS(ZN48=srn1v*>1noz+IW{|%i%kC29Qe0y-&jOh-3J%Mk`z2u%9Vj;c{WiVd`9Y&*8V%p&O{NIv+fvQ^uY7F^ zsoIy%2-Trjq3otEdp6!{UMoiT!u69HgOg~7d+lhyws`%q6Vp4Tdcnf{4!4TE6bov7 z!@hkEyrYT4D@K>Suh*iPZk$os!YOq>!opNkqICo?iYqkSfl1IfhDL0#rzsTg9rw7L zfv+yZVKDKQjI6vR#-K+PSqi1>RUrvFyO^%oHfhzNT$ zNpu0U>@#ymPiz_MRiNofy@Hhc!_Edl7^x=_Svjbfh=}-=Swq=KineCwY4|(c)0~+2 zF4Uc*diSY>l{!2*+0^N#^M$};?BPuBy9ZR?2okRgK@~4NfjmLpG54s$$Qi%6$Fu++ ze3IYy`S4CXhhr#5a)J&oyF9&YSw)%6H0fVb0Oz%x0ETQSmy+lR?BE_*4L{^*iGqd(#w%EyJL36?*^#n+bHEq|*Xkb4_k*8Rlxk zrPcb(1f|3UVev-b;e~bUghzWPh>izPp~%v-qRVwOERLj1j@dt& z1x0uWk3TN1k7*K(rQgSmOoIYwC*-Gj21A4kzR8?hh(D;PS5j9*7vRc;MedvlhW$R~ zuES>hNF*>_nyB_N7T=rg?ouIBSCTCo{_gcT=OAbcQd?U-IVGjtHpR+FKxPjL-4%N# z5==axRRMMb9i9s-$Png~Dq-YfvC~;(f8*Fxi_X9sNsuX0?T5+IGY;oxh@aJX?eBzE z8ZlI<Fn?2a(zXjnfg2z2ki*>2e_qoy zJd$*-%NGXit)pwrBJviSU)DRkn$)ti^pAXkysPh+| zz{ts?<0)ikTKLJy#zxHN*_+O~A45y`4tg-xyEx@FS4%tPA7vgly(zlCKChx0d3lT; zy}b)=Ja)f+?yf4U+FRcAIW{A`xxvf<b%uHwVAK!9C~1?|8Lkr~W%l|*$Bq}4*>B#5=~ zMpra;GR5Kv&&)v_cxV7SVH5NrTn3wh+x@yKgbz-Q>1nH_ljzb-|1zucRy{3PKn|G4xfacOTCxBZZI zOi0@OLN!dG5P6U|^VB=sdO_r*nZEfOrluqpqXceTRd;*9QWP3*I(_XV=~ZVGk@_fW z<+meQU=1(kql?X?{M1UinWnr!9n+z_vtik*jLP0z=SbAeX*W$=iMOVF1(UjJX6Dur zUAf}zf`_rPZ>D?9tE>t~$Y=X9sxE^M`HNGRuR1Yzwb!IyySWY;TrMkVXG;(AX&HCa_En4PEnBk^avl|vc;BM5-g5feOl#3KWad=4;$;1#YStdwCap)Az zlHm$e&Z@)^&i`_ZNd+|N6=C4kEc}9r(E!{PODF>Fnj~hJ5h~6OspjQM0V(buds3<1 z7fOC%imm)6mTm_%f~V$()wCwK2{}ni^MO*%MJRCO1GC}$G>U|s6L4cEG{}TKsDMp48mCL28eP9>H@&*7FOqa@YyIdO8$$<(TQ?gsdUI1Z>j!}x zuD7MxO~+UBnT?b3s>j`Sw2(6XpSow{)rF9uK_Hb77Cto#VV8rQ1VHAagnv@bhtWb9 z^5>5Klo^0&gzy8l3B)?Uwa*K9Ac(R8ZUfo!350dFID%519Z(1yf6cU<6HB7ZWdB$H zl$~%@NGR=^3r{N?H8EccnO|erUFy@vG%u(WKp8=V)wbQfV6

      z;7;tlT!>B?|hewzWN9Yo53vOCHE=RbQFEB3K@X0oZ3aAH*mA zD~Ro=zBGR(Fhh_Y*e*mLgeTrBgzc=pR)2f2Es!2KAEc+xS76%+SOTL0dUyPfF0&dd z8W#|jLiTAsL>c~Y4xN^GGA&?y{yBY&MqKq!D{yCE4`5LKL473K%nsn(u=rrHU{wA| zeKgzb4v^e%*PN^O#zTzAN?X>4w*V?MSX=QmkJ zL9Mt*tO75qF3LJl!$CG3ocak%=GRJDwKBTa*UVY9(z+Jc4p}X- z-gCPsoagZm$-`u}t2F0;D9N8qva4*EaV>z>CJP2alX*e_NYvo6@%rq zN7jQZoHl=dDcBr*6xFJWlupcWk_|6?&C)J?R;(19F8|NcqPY|L+%NMifO|~E=Hs>| z$f!nJUXq&GUHmKsnJBGn>v5CBUg4 zzhvXsBd=Q`VD8w26{#)?4Fhq1cN)J$%_-&_tw1Oar87zJnUa>3Cer=^^ z_H`x?R+sc`C~(C9M652QE46Z;0a|biQAt=oB?m;8Tze(s;Ih1mzNu7^;`0>9dHY4<|1G7sPw%RmXOZWGNBw@<8Wxs>wlhi ztYui%cCjeBrH*)dT61cAadTH5E1=eM`GHIDzEbgqzRAv($nk6ppJ8l~}rLi|7 z{O8I4_;0)U^_asJv~yY{GWR0S5x|2)SsC96wf&@O_qT=pg6N$kY`dtP2W-xADE_Cd zuY$gqsjdhTg8eoecR^o>K1{5!GC%TUTTKKm>_!QOa)yW-60k`_Bjkt7zrZC>w4knq zqkQ3Gk%>m(3(py1{KC}`))uuQyC2T4OgsV;mrfixM81QjDi%SF1_r(62uJHES0uA8 zdPao^v{mqqcnyDzfC`6-2n!F35FH{LDjG5w+8aU}N*Yofnjc~tY8-MNx*dWWiW-s~ zni!%Rsv5E$Ivv7uoHR;Jw-)v1ifE;$Crl@N)L~FxDchW)`!QBlP@S}uG~G=}C3nHz zKCz!a7DLIEwQlOvIhH+EI3}IcDSyF|!KKa2V>idfW9qcBkC~*Mv?dpuj?dOUSZwb! zZaQZAb6+E=hrK*m2Z|;#*%yaM6;hzx8CXN0%lE~GVtYCuh6Bv1&tc2a*_Y3@fwL5#BZz_WcCO`6e|7@};x`%mZ0Vx1NzyR=v)i5j& z=AS-EIrWPC`O9BF@PSu*Ckv)8_O5m&o+if5E;eRN#?E#uOwP6dTQgvD0t_7e6EyG( z_y4%_Z#egV-l-}tEiW$Y;^GAO;_71dSIn@D-;x<*1}fUNwb!nm9KH=+L7<1M$SMab zcVRp8QhVsmvEyav>#oZEGHKuN+yQ%1`l51q=(IgCcIm?dbM$(23+Erk7C16|Kqvf~ zOU0UU63~Z1!&K=*UMWpd3NC;X79E1u#Ab0BO-Y|Kn`X(_M%p$Oi4*h9Y@BXdCIxzY ze4*$WkLlQSAL?t5F}(^!nF=~Z|KbDPfe0fw!pPwDo=}B|ge*nV>v|Kcy=dvc>P};} zIBSATrqv@+W4(2OSwCr;-|G7uvBv}FhwD*3$g=Rf)LJ;g^2lez7#ACEZss`(%NK2W z9WkPZJAU^cTpBs|@=)EU{Z=wA*-OcN^zI>>xKwobHI8q}WN&|-w#B_`enJKTGP;1@ z|M}a^_D>e-&$nCD*unS*w4kYJxCJ+VHU1OLk5m~G z2$2P?{1vTaotnXYWJpT3qmWnSR96n3-V_fT=U;E`1S+o`}}u8k?Re zJ4Wf0lzIwCWi02dDQ&K%9<`rjg2@@G$g06OWw5$PK8NlVh@}V6=`1W%%Ppjxuf~$g ztD3SqPmb+psWm~LZ%9~`VVWv4a@g?8j4~|D4A+Ryv!T4v8P&Zk)(&FGBc%5$o;_|QyZg;AmmOH04mEpAqqe->~5&?LMcTIyO5y(oIN3Gi zwI_|EIL6IHMqc24GaL6*8SKpQD@BxYwLxiSKetM8cCWM0%oVmZ>_PH*PldzJyH3uN z*xT%ldcsBRm$xB`7bUvP!@@6W<6}3SEUxyFcO?e%6y=<{=f0(i)bu!3^^20mQp#?j z;w4R6#8;8`qoAjv=E}=c>m&M!JdDI}O}+{+H6)K6DYLV$mFTsV(A$}jl%eLKWbh2| z0`SJ6(4tI1krwLT%T;Fsyf8*tDoMjxFk-MZXCvDp(bAP>XNbuPcF}WH9Z_ehxI?kH z9||Lj+G<7mizD6EEr--6nY)IrSO*zGHStjPwBWgLRNz~&&2bEj(^VZn>}l_)`09+1 z-O=H9ID_e7%QScM=7L(8$(=z^q2u$$g}&@K46T=61I7gTIQ~ zU<6z-g$s~>jMM6HqGT1_ry%$Y6eOr;UyG87`{-#7NhaUjW?`qV4gFY$gtZNe^x)GQ z3L@3`PPbcwu>OJbmgI5ecaPRoC2E>-1-S_)*(3Unmp30ulh-H}4f)M|V2jjnC`>i0 zO^jkQBla!U=n@HNCqgSR_AD~+_+(SuQ&-dz?%w-;R44PzTatBPOfkyiD@F{)Zk{jF z?@C{(7xlQrgLZa@MJHbW!SdVr!ToEdZ=q+r*&OtBg9bs(i1uheanU)*&svgp2#35E zHO2q}yLPs>KUwA{`+n;d;GaIl!2Det=ywqt z;G%&Qa&FZ3rz4vRlcr0F418lK!U3yk84Mhq3n5Q@`t&*3Q3sv`g^n%5ZS{lisOk6X z^Zh$WpT7ih?>-`yCV1wlz^~Lb=d&K$m%>4pd3X5V9Zt(eGXjSz(Zp!|(1Cl$W}T;} z6eRq1_rdIAie+z%m#p2&RZFxcD^%2PvT0LP^ScC$+_zL;qJM_`rfdv3MX3&1lokz4 zc94zfPr}NO@K9iOD9f6)0R#0%6qztRG1U5KW;Cw zowDDPlM9Z|iyh$0l5~$m2#)@aD&|wGq!lOgazBSs{T5JM5Gh_=8K0w+(C1aZ28~z& zo?2fb)L$D&-hxpsMW@w|C|rHkg2PTf;oVQXvz~k^WsoD(B9l8`R=0vj`V&_KaIodT zEoAQh8wAln1f%CqHS`R4F7o&`Y+}D|CNM1|5~vWUFTH|8ho)Xnnv*b01Pu|xsaUg^zO5IxIDIe~d{CeL4C zCwKJFP*mFkgZ48gZ|=>VN6arrTfOg)$YFSW!=FGweG+(@rwBk)_*0{Y)3{L^)<8k& zyoQ_P9&`O=={9#Otq3eJ=F=zZDy-Y1HI`+}hh2~$!gVvmSeymPh>H(yu7`36E!r)p z9B(y7uK}SXMrzB|_nBE{9ll!b^O!T_$7O&;dPST4n;hr}jdmNxpRO76d!ZAPQ`r&t zJBn%(jvTTU1olNuqb^+Mux*pw@>5HdlV&Z0zVp;plRPz@r|z z%5)eSOSFK_E<>}_tXFjl*X3$$&_gRXZJNaghTlrd_^kuzQw_T^yuE}o+FnyXWH4F= z;VOTEQbJktsl&y8C>G+r{XVQ6^XNGZ8qR9b=Fq?OM>6xOr=1}@Z+zGFP1(o5G7jOB2TxO+_akH8NzvzwV(PY=CZ+?{$nDWDgPc!kh7r|0U7nuHoHb67@12ba?IecS5#@ujVW@MjCZf`OX&Z3d zb&;QQ^0s!4+nZ93pgT2N^oJfi$Cs_Jy|9lrMNf*Q5omiZH{_+Cpk+}5+h|C{ut}tX zxuA^)sEwnU720Gx!kC5AN!E!cQAw|)k$0%p6CEJj$@NB9+lkOFAfGLEWCy?otdL=f zVR!;%w8(706NbuyUxVREWWS?)Ci78v3appVqOu7lHlYiq?jf}aV^*w!@G3P*ibpa= zF$`-A!7pE4r?C^dTb`aC))oFevGU~gOJQ8&@|vx2JT@NW`E!*1oI)+ z>(U#IhG`1BHTkgcjVhYV{?&H`F7u2BIqW0Mg_KkidO#0Df#%P9@A z2e5kt*<&kWo&Q6uf{ozqPxTdj&VIXLV0_5>Ye(@P?+dv8TLIov1K3)yclxWNkoZ$( z@Q>KOV#Qv%+QGEA+EKEE>%A948vanY3#t)pppeucW>v@u``Q1pC?AskkKq2Kh$UV> zhsu4cc$33+t9ZC~drlw(IROtM;5mZ4@Obc}(TuO9Ro=ecj3rpg{TYL4)oiWP;>YCS z5GF?G6-4izLqW^#0)_i6egWu1qa@l|9Ji`$K4Mzu)?CR6G#PQnF( zXctG8GruxwO-A>bw1M6h>?k^XMsLP=i7!p`oACwn>%6G*x$?|!6Gd2bh;G;y^m5o2 z92F?r$HuYz)AQ}DoBVmNZ$-bFTMF^o^!lD=lstNy2&IJbQJi$HF^Pf znXp|@=a4e$4;zuZY@6g#PDMAx4IAR1#YA(+#N$M4;Z)Uh<4WLeO4ab4s3pcV&piFP zW#K&>aV-I6i;KU_7Lxy!PlC9eiIb;;3&7q^*347M$;{l$$;{5g?ElF6DT%tWpu#{$ zuCc*Nz)_MJ7D^zX9@^CmT*W{Nup?pQ?){VubrH3><_?7$@J zGyaOufcZ&giC=F=6$`oD%^`cmax)`D8h=4%jCsV z9a*yectelh`R<*j8#ptjG8Z17EmnJUFb4KUgn$#$pAXj7Db=kP@S17P*wj9Xt&`{j zJEs*1Z%p|!F_n>(k=2n^ku~#~vp1*fv==iEE~#Ck@ca3)yI@5NkOwB>I#ccL%AIb$ zE79{Wet?AC8^fYz%5A$)UHv5G#yB&M7ROa?o)MxZUn3TKkmhz2Z-Ohwz^lga3ZF8t^%4z~`tb7~7hein=^G*#yt`l_Ja6>D1g91U^56cd@_M()9^oqh1amI zL&yGs0AcX!``%|au))Jxj1@*$nPG6uHidIaw=TE-yF;rC&XhVa;m8Ji6x=9193dOMY3Rl8G= z`D4TK=(f+pxd(iq;tc_|sz}8I{oWAcQ(D0lE3kVGhQ*``#Wu3+-V6nOD@^r^r(zYL zNtXjbN^3~-0#m0=T!m^);?xei6*$2tbVHxB|MPCaHhCSq4T)BEmuCOo99^ZzIPJEhJ2kz47qr)4=a_c#g}`Jgq&LfD z%r?HCSI|ULJ~Yp^Jl$0a!K0O{bWjbU!LX}v&<)|ET~{}%?8v~|KqzW?UDn-z`hX03>O#aKx8GJ9uy{?9@b1s-&YALO8@nJkKfA8JL2xS zLh8|r0YU~(nf%KV0+7MTYAsP}vE`4if{fmWD*s(Q;q>YR1v}4a06BT5U-}6l`VeL& z&e-n=yVRYQ?BE8)k_VqRB#4I})cO|N-2LQ!ybnt#uYWRVu#Ep8xa=!`#qc!5>x+%-!Ol4bm}+pzHU5;qW3KnbO7F+@sr@G*p~w8?pcF#Ai~fA5y8CTcaIDZQLsG2)@P4Fp z3pMOC&mifGn!8Y}$%;S=oDpzudF)YME^yfif$3`HY2%WTmQ?2BZVNeTCYl)}wTT73?E*JNUurA(yF~A3U5|6wGgbF}3O8&5y8@_?qZ!fWrP?vCLIX;Sdh!i31j^x_NM9%~b3bP1~8gcxCw|KN#m( z$wY=a)+3`)oZb`XWM>>v)~<0lw5u!F4(Vh11JSI)sX~<{pFa#$hEE^2NVEtR3v31r zw9^zt@lGfaz40Y(9fcg8nd-UnG#CP{w^C=u?*KnPOHa9cQ*AazwF37sP@JdM?$K1n4rV2V1}? zOjkroec>G`=^!ce!=_M z4R`VmwC=BZ&kt4EjH}k6AEit3wyy`jyE0Ecy~M+B)2{31$ADD#cSCgadLX}Tk-!*7V<#x-YPo)n!p9H36)ARSq<^(!agj`l&*K{1 z;MX=v{f0@KYkhNb%N^WRUVvNwfhr;I&JK~HS3=IV_jS##P81barxcTpUKm~d4b>m; z)3)ox_(N=+;BSX#|8@BNTUt`HwZ;by(k7K|Ou01!s_#o$N^NbpVq7m?;ZSyZ=7f?X zh2h0r)(KkZ*0g_SB)`<%MWKNCT@?w+bn!uw+SbQ_IUnuh9<3i`AL#)pcYdz~pP0)T zT{`RMLJY7N-3qosmRY&ER^C{HD1zCZz*x>2(CA4E^i26BM5FU1jOhqUm9TYT@unHkaA;tgNT5qQr9+=^5Az4vrzy|5r`pq_U|Zo@X7(=vf*l|sxc5qv$!!u63W1dHS=R3D}Fdk z0Zpew;H2n9oCMmQ9{+D39<1dxE>Ff>c zM3E@+Nk!lZ`6y_5SB69E9p^|KESJ%av z?0Lm&7+=2|xpFf_mHKE+Mp2omPM?ZlrwslqpWNOR+}^QK;lR;*?(xvsSByM#w4>U~ zsiYY_;0NQ(io3luhg!TEHCE=DXJtBpJ(A~P$a)su*!PAxr)YZAR>5u$dY)&E`2La9 z(tv%pG0&EF{6eTzu0egde>Aw@{Bd*qY~4~Mf7tXj4x_y zXvxU=5kq%ldV6|1K_KMooFw0+82qT$OpMPfeP`6oN&nZ1=33j{uH43ohaJ~ncRQ@> z2Kh0ctNU{xIy$u=1==8W1=>J}?zeqc&iZ+MR)Vq|dZAjk4In3KyFb!III@9@a$9D0 z>%lpm->a&Aur43f!FZbNDp10dTXIJ!{N10*g~zw?PT=b$^3@E(pXlEE1KpH9e&Ae> zaoel!t09YvqThAfd_ZTKuaJLTpscTKt?KB$V5~3+t!_V~8MsY~3KA@n>hwR((av|K zy4AKO*jYIeF!qoCIU4V)!UEz9M7PiXBXs{IdC{!)+ZtaS+mB1$JM9!OuXQSEE5Ej4 zfO|SUIZcIP{24$jGfW&x+P2BCoOGIdW+(Hz?hcC#@~xlfchS&K4&;V@P6#aXL*vb( zoFmUIoQHpyDlmWleD_*E7bZ-^_+Y#ewv5Wnwfe>yKoN}gM4(Kcqd7;s8$E}!8}Q30 zhZqMg&@v(=K?+Z<%Q4$b3z^pAYDrn4iIYSN7gS?~dYl6;n)f(S;ymfR1Vl4DX(*!GHIW%oiAWnf}JujOIjJ%u*s29!HwmV zU1q;N(!Qetp<12IkvDXN(W7YOs)ymJ%0F54COwO;P5=Ycn@&fE(R;(=*P9%t44~UO zP`tg9-sD%9vguIe9BwK{&5yFm^y}oN9uOKb^{26b1Q@hP3FOK$z3-+z~7C89q}YDvC7deUzm=Du%Xi|;$fQs!I* zA~n_(*k1rBx13j>+zDS-L)qVL%OGu@^)C{3Ee5rEUnwAM%5R@oww~VcGnE}<$#c+^ zt!2ec9tY$+2sUu6uKSLuw4$}Kd6_EghF?s&zv@3fXuIip-~Z}e=l~*hW#*?^ z*cI`x=1V-@2Z|AMa}R(`MKdNcCVCSR2eElmpxaMZHbuy82I}V(n>e^2a^W%RQ;Ol?frQg+x;#=;N5=?DF zOfxzFZU&*Cvsw1!J_CX3`~L{2f9Y8?t6AIQsUzpe&#yXy$&1p&%_X)JxZ;j)K8gxU zJyuA-mWM;5sQWNa({ec3n%Y<1#N>e+LX)Bj`V)nu>yu*4hJQv*b-R3;Zhy>XV|%## z`u2kNNr_qimz!|~TsLF(<$$%mN4G!Q?-(XHE#f9>%y8y~5^|sD&=Sj(_*ms>t#88M z2lQO1t&Nlh60+*~1`c&vGTLGy)zUo9ijABR;;11JiDH$}52@Z&MU%YL>u5U22c{|` z9*j6-OHlTW#&Vmi|y)Z@P z2EOpZq0{*~SdL9 zMbQ*8AHgTB^MKbU1L{X~v7*y>$$H%~pC>_i6?m1f#1?p==mMhxuyd1JB#@=MQpY;U zO-v!rC5I6TXst(-139y~rz@@_9qetsWCJ3nprfOZ$qkm9sNW4$;J6>JEmWYA z{)C835-KW7z>}#zMQQJ1U!@(S--S_r=#|aqjkFX1l*-YNrOT4=Mn*Yl-4|=I31pas zsuCq9OmdfntIau3$&JL)?_a`d;Y?Qw>u(TELdI2gWKK26y)HU*7-BfQ1F2*#>=kfr zcjw#J`9AFBM5%r*^#T=DK~@_6>C=eg_N8G-JCB3?U4)tkMxP7J^kb^L+_>u|^rPKa zR)53eJPhufIfjtGsK?f*Ci}kLB`MlGr^xSIN?i01-)y>cZE0zHLvD4{gi^elS-jEW;c3z)_KhZaPc}+fZ4lkJ3(!p^sNzil!0AhI<)uBYk2Xe z<0l&~G|uiDS?>i13N&oI&DcJ0xf%R8(Ew?EL3*QkD*L?ZN5-6U^}Famm#J~>d)DJe zOij(|((Qd0{wXWHs09w=z!as9VW@iBqF8H|W-pYcQ6tpyb`fD05}tro5R$h8!NtQi z*zukS(52YwxVAD!5+% zCmgLT{#SI(?CtMyR61(1PlP=jpR3xOo2Oi6cX9RnOa38UQ6g4e`wbWz1pZdK;$N@P z|I)D-R$H@MS3}=Wn4dPqwZxTaPfl$@I4>@ET4#b4;nf6gkj4MlARDJ^9p@jzXF68i zj8OH%35)H5Jy8#}M5u|8dF_D6KKy(zc&%<;Zu$L61U!)Xgf55Gp|5o!QU^Do?@- zi3|0lsyJj7n@K`j;w@{QSJv*&LDlBV&6td+kV{T$Yd0CMJfq)X~}Tu}g|9!&5Q`nFfsnbD%YW!!b~njHCY93YRU4(Yz@8OD0;1 z$h3y|WsJRB(+FKA^w@~=H0+Zw)TQrt4QSkNw>lJ7^wJ_YWQnqEzDwlDL|yfvGVJ44 z((x=;LwKk}q$h`BS~bPQ+Az}L2{F-PA@I@CW8F$BbhXhXq2!~*r4oRC58CbZ(W0^P zckpIzEHWLNLPbt!we%t>Sn(?(XJYCUG&!fZ$Akp*lmTh*GMLd|N~z#MbTx2`j6x0K zh{A=FGf)c9scUv8QDp%^u_i~6IHJzxzhaGr zamJ#ZBc&)1+y_i=K4iC_Jpb<~;HdIH9tFmiDyX*~j#K`M0x|2p!u#FF9=!mwa~z*F zTMl|vO9*s_ThI9Wkp;Y&e8kh)wra|loPQDocm)XM5XYHLep))!H(&SV<*wMhJ7@il z$-%O5t@79X4fT%xHvf6m^Uok)vaic@+myg{`GKc<`fouXJ8YU&FE~rSsRzEwp(?_T zE6oq7w$B`?wqH`fgNW0s9+K!`n|J-ZAE8aP?~CQu2ONMEU-9VIZJGLSV4&=~c`#L( z8UR|^2v_*0>ZfS?vdwPCj9b~}ULm0{LH(_QsTzgTNo!F?7CJ@p=SFtfj3 zA0J0aw)J=bc$6Z<`CsA>Hg``=Eru8hy}?(@GkzY%pyIySi@;n&?FrM2IimgCzG~jF z^1lTEg8oRk%zqjL{^j=ZUzL20%BjMF5VpWz&7bXKCTJ%#Ol0pIH@s+RK3gytT(vLc zLqx9b->S7cN*TbnWIncH%2F&d-B$+X1{qn2LP2Lq~;nS&?-KWp%R>=4_zbX26@s^*@%Wq}{ub05N-iUGz| z3o?;!-cC_uu><{K*-70|rOZO-wB2GBFE^GDZ59@jDHu3g+H@!3cdE+QO`&RiKQFq$gD{#t!;N{)4Sz zX-W8}E#iOqqyJZJoC6#Soo7bxCJb^Z>BGK!^amjT`!X7fW(_^&hR*^ZMn?N0;safy z9w`%<2;UDh;)G|3AnJ<~;Vzg%j`@^bV4sMlUWi8N` zVI|H;)BTzxkVX!fe^|~Wf+s3EIZ_r=l0-dSg}|xCArfMQRZ4VfH-3&<4ox9_7j!gR zHYHeQxB*rb6RLr7GQrWv1ATTO!jw2TQWZSiktArPIKhpb0Z>@vPoCb8%+jB-7AZFl zy;mUixOI&T#T=B`I- zNlddG5lwE!FBRg*v_q>#sQ`l*ydY;K??+Rh^&@yFB63#^5A%8m8Ru3=tk(Bf7QC^0 zz&xcp4dW-A?$1IOz@4rAdMosUAK2r_V3&x)ljj5Nt)b~6n;`-eou?U8i%{RlaNk$n z&F|j!UfS9*)p;pA*K~Z})EksF-ZMq55oMAr61H7>F-4=32bS-JDQ)pKL2@Xmg1nGpYGyBG;gF96bLDfU}x!|8qhCu z-wX-{sbVxkTslEu(3%kgX2lA0Gd-lO1YC0SV)&1{qKI$fbq#KXQ2fz0vmk!0hUq=+D~=#Qb@^C#?YYR1)1ZB^8x8yr5k zpUG8I4!)mKV*#}Zj}H6rX-QT!ZGL5jeSS>@(Wk;lU)E=hTCChs(5HiXS!So_S2kw4 zb!>yt_@HL75w;d}TJ3t%EBc7FK)E3Xll#6BnjKUU6e z75&h|oZsv*>6^NQZ@;t)-#U|l2cyW57|wzv2$9Ot<8IFZu|k;sz|LW$2jwHqZVwnU zC7JXfByLU~ztBV-d&iMew>kVyvTnu8oM1fQLZ)~0;bM9>xcyeMG^;+B_eRWmUUp{y zavX;MJh^Xqt-D`2v>Xx-r=)%IM?)Ry;R^mHl0}{X<(mIJVEhwn_J>HYSx`D<=P&LPBBX8-ta`rii9`b5q5}-%wo$!o)sb_@H(HgrKvf zHE~usH#}xjoy*zXA0PX2U+{BZXRi7s@xZ*?s9%2=Z{ zPn0qohkoQ!7l=xj1=X!No&n-Ekm$TFJIEFcPZUk0DIF-**(e>xsz#KJJPY6%B{%DbE8vE8G!bMI>VP;gIRFF4y4L-15rI!dYncEhk1a65u3ZF6NIigyrfpre z07yHa3TWf|H25`z6`VfKCHxL4H%1RlONjoe%kpo3y5Tz!oVQ;p=GoMw5W!p~07@>p zQ_ckiXP&WjGm2<)2#C2*+9A}zhx1M${BD;(6ZN3!=zhK)NwVjk5H^>1y^ZgUjujOl zu}*d`AlWB71htz)EkC;dNQhk5+uvP!>&dvCCi=Uvj|e&Y<@Tue|DV|FAG+Zc z)F(RsMAg5aAp0NF%|AJ5SxVO57U?m(8B03bb)Bc4o=%FlI2t7~NGXu>Brvh1)7S?H zd`h2!&yv2?G-Mrj&(X8gzV8GDqOnMroBZ2P$l^aW_vUlqDobH+xX z1T;j`4x_j0vd;(vITfFr-Xx6JLj1Fi8cCHOhy-Ik94ZWSKr57-TM1=H2~{g!=+LX)y_F%I?r4j>1Qqj zPU}}GSbDEHi?41bPjWUg%gG-;*}okxdIYXH?NEMNGH?3WD^!-sUk zF8DjX!*OXwT*lM(3dn69fpj0U_9iV~K$+;Z9W-r?ZEx#C+SmE{j2$++-*6ktJu(n# zO*?z9dwUZDWVv_*=HUrk+zpfcSIyIXnEiK`lbfmbROsoF<06?sMD!0hf3PCwz&qOa zzlW87BGUda&>ypl?7T<4&gUf0{ci@!Te-_tKWshqQ;G<8g z3rTHa0f^5;*#a86ELA~}QJ=Y0X)%(gE%99bwWdZ$kWjQRAww!kVqK_;0d_Ao6J=&f zAixk>s8gj+YD~dzFSt?x3|as{xWY+=Q}7uAS&F!Flt@K_^o-*8Ep>N@LQ~lO6mpcM zUh*52p_nd%1mbWw01t~H`kPUuz?`RrL!LV|0X3BaNh;e)Y$oIpH+tj&iU{-;WR1yG z{=KgRiQVqL1&cLbSR>RS3$iNuNUNZQ5cZLKo`VTVoGQLWD3XW(a|CNEI;9w`D-x9e z$$k)fJIGJ_^lT$TjZFP$k}1SIB#nbsBjEugsgE}hRWWDs_3PToak4yEXXJJ4kXbKm zq?TtkH})J=Yhbl5s+{E2ggWoclM~|-%YNbo$QgH@(XK2!OoN+7(aAld~X-e1I)Pe76K-m`Bkp!_RwWRlHQFLVWaZz++^epb$ zupNH}^3>6-duYluvEiNkC45_bYiWJ+SN$WWc@@g-<~$$ke!5yd<+RS5i> z%-hp-AbZhW5>_|5Id(?e=MOr!fKd7VwY&iwz$E|iiL-ytzxf|?(m&a1MM^q<;q1Rm zWr7se^M9MlZX?A6RLq8q{%dI7dmjB+>ggJDskmRzQPLIuEvaE-hzl?izSlBm7ksAJ zI!@!feL7oyfBgbc$aDOlUk3h;3*&LE3%@01XW8fm4(_`>KvHHmbr8@VNzlyj95i|+;%n74-XCg!fw;eNcdG$So0 zqK(*o->j?b@sxB6(wrm*baZSNNUV%dxb>L+?;7w^xYl(;eR0i?1zh z?LU6hT_Zi)^0)8oA;RO_UPtun3X?rsxQ*AU_Khad&OxK8?P62E!~Wr|;j%)GpZ|M! z;`n>pAxml923rK7%0BblqaI;6&<+w()-c{#I`zb}IWqROT%BgLLsX1>t#f8VCHMx+M>b zPAF-4THv@~(Q}}T4FiU{&x^JR_0{50@07-fk?91bxdEpz4wn7-C8;o(GsP;y=7mr-eDATnx8|yF zXAWlUSiCf64ydZu7gE^Q!_M zoAGWExsiWA<4Mo*!im#jF(3Tz*kKHZ!nnoRRtbe~Gm4KZDXX?nf;N2%AAUo)p& z)gP;u2l&=WPdkoV&DSe4JMY>}I1k23xZ9f3)fUbbZQt`LSu2+An<0Jgw@lT~CxFfE ze5xns)w~AF??(8FkFD#4vP8!7uJ?CYqtd#UJ6}!lS_rSxs~zek>#Qc8>W(h*rmb!O z?#A~h+zo#@k86U;Cw)}j%U)}@l>n}5`~Z<{pAR)dmUQVO_M_?X*HI_FfDcubBqlz< z)X^b!g^i*69rcc&zzDy-6Y3MpQv`hU_g{0sXa)dYP6=OVDeK;pVLQ(&44d;RZB1QX z{|;EX%-{%XHxR2g44VsUt4iu$V87IIt#9`zXt{b(`Eu?FwR+*NtL&)+GI^Ur=T3w$AhSMIfSNb`+uh!X~ zww^9M>uou1x3|82k-V<)M}!(8XBY5O6Y%pF1QmfYrAV#X5eDT29fXoZc}7j7OfAq4 z@Q*@z^@LuMjFluNhsNw9pfRS7kL}D|2XWF_^ha_yEAWdg79-qMK?=V2BB!8>PG%Q_ z85S?v1}L4l4m`g*=2s({No%w+6<2N`DxJDkhlpk}piZ@#4gx-t6jBKxNa`CU!Ll?K2-mIzt*|W-kd>;s$hWp8enN8u2k_%)F~)aPCyXS(%>zU zns-+yy^5L^$+&_iHW0ovrLV2`_IUk=A|49LyO`t09_;X{J^a=@{wt}dYpw}QJ{OL ztdkGb$r}ro_idBp_UqVbd3L*rJF&BnwA~gwbO|>3Pl_oGht&~m1P4Z z!amkSXyM-H|6?B?ImnniQkraE7pY`SouWXruM8*|Elsj-i$rBq9aASUYK&wuUKmv; z+Ls1=GpS6VuVbBbX3^`bT-(xoUvT3T*iSuc5Yn2x_!6MjtJO@2^)XhbXn z+z7Cbu@6ATKn5gWBmk5!lmPP>^8h9cCcsOmV-mYs*nj>&?IVYI+Oe{F&}VLPuSL1Q zr5*sqofr(l%?yfo?j^yc?kU1m-gAIo+J}N4vp0b|wMX5z9Ab%V2RzYVnpl}_47cRm zeAyQm5{e7~#L(lKa1Xh0gCFf`4mn4j0odqmj5h{a((Ix4Rfnu2*8#5dm&O}O5sufw zw5&zf#QPLOj;$*bMj1Z>ZeaEYwbP&6hoB=<9A(Pm^zoc{M5xm$I7P`aXs|pUhxMgyc31d$eg;zAbH3^ zvPhg7$0&J9L9)o4I>#`1ObML9dVPh-kX4eFaKt`Xp}u6xB7BmC8bMiZzGSh~{3W!w zp0hb0-)~4K`tm_|^~?-EErw%GD3gW>V`BoKw8$DvGch0Ey{1n4^dP-lApF+y`{l#i zu1!J~2o#S+kSUZz#>gqPQX^xE_mH3K$+EX(5&4qy-8Tbb((<`%aB0!(3q&^fHC@Xu zTQ>#nW@-I{$%MY7g_B%cOj{jAe0TWKCWw{6>a-Wo;RET#&FU93WE~Qp()?A!z2BTz zj*$4;0KMxNL5ri#v!rNoG%8Tpy1>uU%euD?k?^S?NQYH(M2P4qBZ!BU@W7|Jb~#w~5+1rK3cuBs`n*0b{%xtx2P^8JtKP0h6uI?^ z2D@Qa`Vt&E#L9~FDGcv$2O&w$fwB8{s{Y`k7j#a&MhovFgx)pLwns{x| zr01qEnbzQd0kV#jqjbloFLPZR**1M;JXv<12ANeWCX9&m@du9ao;C8@>fDbmqrETd z1f*Lm_OTc8$X99X!mJNd63-zRgZi(uB~4u9%BXAP4HD+{GqE#hd0K(NK}}GLfuez@ z6z_jc`6LT}>t28E=nx_P+d4e|{~uoYk11MV4)dy?JFkPW8-cZHisH}>PJXou(FZF( z5)cf5gJ$^gW%Fi0QAF4!Q8|(hYa8S>&BwdAp-hXj@|e88^D2jUR?`I{(hKnvTzS1d zY|Ah$b^qph2mc-Zh)q(#CT`x&T{F(8J7C*?(WQ#RldhJ(a| z#6{vFagHYbaL!GEPYv`L@Rg=bkbtai`hbLHfZVoJ^17fiHl?0UqZSj`rpTc)`S}nr zC@DKfk5p9TR{J>rP*tRYZS})@y{YA2kBwuQkJ}G{Zq&5fpu87VtwSQCB;i_Bszc^! z+C=YElz2RV9?kY5m`$ipcvDC+mSbrBOpo=rRdtvy@5^RYf!x#}$=155$m@Ac&b-}U zmGJG&$WgH6*MCrKWIQYNtKeSdc{AkP0{81ic)K(w(!2**n&OC%WwqEl^8m?3wUx`E?`f%Tl00Gn8#`g3>7mM=9%u-}6vZCZ@ zqMbo(bg@BC$tsu4Iy!d;1 zL1$z~7`;xI&H#}$j_CDIKGtg(p#mXTsDL3IgY-F(Xegt7>~ki&FgEE>DA54=0K0wS zGfaXGhG5axVFnQ|iA-WyL_NfkFs6a!0k(nW0oMVIJ?veC`9P@&1YG;K^+{O+Y2dSg|q%o-*-yCvA z4HAe*$4O(-CsHTU&si+e8f1P-Kc-D&P^X@=X)tRra_BqAm%Qd1!f&a($ZwvDK~bZ9 z3=N#z*LBOs!{zS1T9B>kR#3Bi4``D-+a$d#E?UxBpsivn`_{N+dSzL) zoZga*rs-SM6#U*7%%WMtX1~e2VZIkU>nXFrgsGs_f4Z<_$f?dnC!vdeHD6^Wgt| zX%+K7q=!STvQ zur_uGz?87fbCkXP;yT^=Hmvt)H`IrL7la6zK@}tpyhPAN#vj^)8a4sKQKK2YEe3^X za2Bv%VqT{dj!4#Z7@q}CHbBo;%a1-2p&`S>k}4u4BijcS)g&s03v95iXpEfD^bO(dC|XzgmLTt$UKsmn}vyUc4UF0!6vm=Cwc zDmFEfG%Ye`-#TAzyBVq17USn5LuI)dzjq#2#-66v(8C$bO^r5`m)M|5J5g!gJC1R# zI$sslq~bCbiT)H z_ACyElWT#Z8#hD6Cu!!?sW^8(3|#174SZp8h84cG-&$E16tB|2{cRHA1A75Z!q=n$7y$^xU{|7_c|Q?5 zD70dBzzJ4YPyrNR^N9ER-e7o6hQLfPHuR~mMkvjF;(G=3it-o}L2*OFFuaiagzH%S zGGH2D5eC|QUKsn&u>!Qx3TVecQ!St#d7DhMzvo`{L}B7?2zeC4K9spvuB>X|Zk@k) z9|wL3IA9$q#Iv12E`0hJ-*W8173AUqUZa?irKGI;P}+vnc97Szdu9bhp`0L;%*z8&+coD z!&JR4)k&|TSq-B_zz}d?HQl-gR|BKh(72N6P$!Nxt*mn8?7gsUI9CCi9p{!s?n8}_ zzO1%i=wu^X^diJ*$lC2PI$dff-`+xV-YB-}+oZr{Zlq)$h7+>UEK8)HL^Y4Hkg1Jn zt&4O?v=uS->(e)NarB#i4RvZD7;93}$ABBMzLo>usIWZnm^obwk-3H{=x>POT~1Te-cYTo6yYLBHl)E%B(41rs47U!yCAq;4&UUki!J zIa@B!PXtS&kI9J;Ur-B%8i2V*Pdsk`5M>soCk>ztKoo$11PrO%@07tvpnlGGzaTS8 zSGa{r08EwddzEKnD3UOym0@-`ydPC1-J=Q8Pl~P#LO%{bZpE6&n`U_t2Lu)sP4T6P z^n0G8R@54>x)CZcd=aV$l38SHl?NSyRJeV_F(2Lc2NKo-L{TY-5P668AXTI3&4@KS zZpMwMu?-$GhKbeO_L$y6(TmL*rV@i{yd``3{S z*}qb$vXZidjj8S5&v%vDiyE>T%7-ZM*M4$Ik&Gox;X(RP`!Z(%1r$jmpt4*V7f10S z3|OXAX}goIt9C7Ut@h75G=|^49A>Ke?uL9QSYKsHti%I^=$#XuwUr*EO2EP^Bkv((%7nbBHID!Cz@&?uDw z@z|7m#5RByHd@@YU@if7djANunY(OQvQamE+*o&1hEBI%ceJH0M5Ln54QzlT!rX-& zKW;m^y zI1;!T_aP_CI~FHX;) zjzeIF>$5gmTq1l=FC5522c?=DbqsE%=&&< z<(hTm0n|ua2~g6!!e!zq8PL4wOXmm{*4yRJS+mKfplvvTCA*~rzm0T3nm-!KoRiO| zyrtQuVY@bxoKXB2QN;@#YH7!}a#_%%| zQSU->0`nGA%;PbY>T=^GKsV)^la8rN0^OVL0o!*j(~~qF$ofrB2UeGsMd+K(kl}`Usj!H99A{z1%03 zsKMBCqL1toKHl=`C{xVVE#XE=`)~oDiIG2Gsu-7;tPI^StQo^+Y4-)rlN7??09ZFI zk%Os31rVT&mjPl!?=T|di3(xfjJSei6*`Q>=PCB^<}ojBilUHht9G%w6v0B$vnw8{ z1QT|F1budiyBI==0%r7*GyeN948iOHqp|wOX6(Io@w+Jf7LXY?>47wEe!D8c%Ydx} z`Ir=pEn_#mKGtHZel4V?{jZR)ZfUzhkX$RZ$aoUw16VM4QY%re#LT>&(eZla#9SbbdBADd_*o;1u+*}g7*B7a{5(@OE|R6r4-X>T6sHVWquGp z^u#YvNYP5ImjRLsr(!e3K(k|XAzCET{eeAzlPO(i;)Q=WV9^MTv5yVS%vDA1r66u# zAO(M+0)FUwL`Lfk5R8v!^si{_e{Pl0@J22G7QIn|LMKi9MnO!LxUJN}p5)>q_(Bj= zFWF1pC9?}t6$K%_*Jj-jg>&KTT1yqCziG{E{ouyakI^Q1w5p#q`f)eMccf6|#*?i8 zQ)1_i;G;-xP8lQ>P>R|A^OC{p1h+Tku#dj0X%A+aMw;^#I6l)p&*3Y2 z@Z3+(<57dIR0g%3RqUU}LmlL1*LQ$B?NW}3uK-6t_LKo{1_RvyGRK4&CQ#7&vr}R?QQTuH2HihEhV1y8% zDK#mrgNPG)P#S4yP^2iVHlTuBwR=@=Y`u@;L7psGgc;T5)hP z-ev`O&BA8O$(+_FbyZ)(GaVw0@K&21+T$^-LTl;vuDE?4it2`jTw+s`)_VT5eo$!& z@pEg(Jo(mgXoIy*t}fjKJ+)k8D3!C5na^dI8Cses#jVzKX(XM4MoFJ4F;&CzIEB$F z*{l!%v($nLC9g{+ahPgw7UOj3N}=8{(A1QsbZl1}%9&!uVSDx+>T-%UI~5kx^5Y8i zZh3X7*yFYI>+SxWN#{tiRaMK$M*jCsJiSf_p{i~j11Vq0GM9DI8vDFLbZ4#YyfnD= zxsC{;%N8{e;hfNB;SQQT9K?6RE!3Or&^tmfVQqxZfIi?cD*+;j)|~=TW1Hv88G+vJiBhWzZRLga5L6tT$mek0q%=5X8Em3w$6tV za<ZG@97WN zqXv?qWW^jCyY&6Lv>_UBInMkd;r-rlIgY9O*Wdd)0tu)c#HBEX(6PG`5eAV$R3I66 z(TCZPP^j(He_mGwg5XMu?@>V#smIZWUlHHFY4)Ld$#ruxnMNzXQUbm!g3+P;iWzef zEnfwAe!E*hGAo2bkUY-a;0yYW6OIyi4B3*~5!e>tatONMeF(9sQfhICU<&%!ReM!w zyN^>=^%k*o(>X2)%11gzz6B*i5$4AjDP)Ds?}>)gF~iB9+~@agx9j>v??x)0PWp}x zaeI(s5Ef41Gny2hBPL?W@u0aY#1ofId76i_XAL(VH)Ulo_w5&OSVr83I3Qzsw&-3= zFl2?7|58JJZCPx?6Poc_3uU!- zMwuZVF33$;Ana#_crh}nRcqSc6|$>JL8_Xx5c6wD;jn22-&v4p30&mvWj^dAJQc{ZyQf* zZj}BQUgBEL{SuZ{9;X3A?=1#U9W7y6_j;O96pt*m1fF3q0)KK0-E=sYNRkO(aAy3# z#I)R!U}8RXnSOLNv!|MVv1XXRn3=|);}|0qOG1v6PSPL_A!(j8L%NH$+U_;UVMsiK z?rDG|*i^A=a^*B1+*p;;QF3uPe=#Ohl3xB=tH*wl>c%`=4NAj7;tk~X{z%KteUN{1pz&AmN0>a4A<3QRzWPpz0 zV$?7pcfxFdJ)qN#cAu8i7?=-s2M#w3!K75HRtfuS!=^~iGUjUnb|@Z2{tCaxDFbk@ zTB3y@q0U>wHpE4N!dsBM0GGfuMxM+Cgrf*GihA!^4Wj?JcY-chq@~D&FdRdBew3G3 z<}Sn?cxvGTVLz|tw2L0D{%M7nke-Y17;~pddT#D4;X+wd=2uBKb+D#cmE+3gE`vIG zS~kNLN%zx+4L|V1TlP(1_B`AI$NJC}2jLlPL(LvJ1cVcmqT%D!NR*rWf$zS57&*Ye z6|v&8Pb~PSPyD}+Y61Td1Yp;r*pCoC8 zT4zmHxoKQ~R%em1g$mTGZRDe?@2cZL(!L9Dk%^Db*GlWjhCSz)OUSZGxSF6DNoPBR zJTEdIvPjK-k)Fa-O}OtYz5uOON5Igc&jwhG*Pflkn~b&@$h1EE%x~!2yG!@lON*wl z>mj4T+$wOIs!XwxTPl)z9lmcq?k1<-c@{B}gJ~u(nsde>B*t#e&UQ?9xe%E&cT1MW zg5^rcF5j3!xkzWSozQSdR-WMLVsY)%xB4dgHhG_2MS=R#K=BT+QK*pbXzrD8K4Ok? z%5(VLYixS!HPrz7G{~Z)*-+>+y^G0I-Fhsi)$0Qaj)JXdr`{XtuK+5Bf{lu?Fowlc z<5q34T;K6xK%;QUdQ|znI0@+xXJW48GIRt~?kaR`D~2xg+q(0Qk9%sSW&#(}^KJK= zBa4QV)XnO#A$i*OVu#L3{!6yPP4w(2!!Ml*FpMw^*v2a%+2kmJ7=$qG7!Bl)goq-1 z_vEj!2lXiZC*;b7fT??e=z5qV3{t>UMd&Ua>ae}QAOwQfBqf1OFl z%8B^!P*599V;U|3&Gt3Q*#dPdC3RI^@H(F=#`2W=3V1onMMSL6mT^R5;ha4ppf-KA9 z$r4-0O=Gl`h4dYhl2j7o1fTXVwj5GKTu-ds7KdF=5{Dm56Dg}OU|BP@%NI^)NNuj+ z$_Hhs`+QZOsBj~Sz*&ETL#nSE)Y6X{4|j3M0+gyHR}>< z8EsIsR|p$XCd-1!BK~7#hUk4tRz@xVeJXag$h=J{f}=f3UHU9iUKUl9`TT_0<6hra zJ}eD!v0&idQckC$du<%68lfUPoKyuy{{zE$*UQ;n5)0 zXxYrj6$XWnO|7G0YFOZUm6)rsB;GKZs)5FzSw^5{^7DZ_duXZ2`>bNwwzL__=*cu$ zv2eB%mf|ar%Dh8WfMHVXxMEt`w%Y!xp3!o3?~LbS>FD{X)=ICrZ?lD4X>($A>hSuE zd7~nSTtU zp|FIk;VZ<3^`V%EPoJvT50L>?pu2QNoM}y<@r+^~&H>8lUdeBYhSgJj6C0Yw^vjFP z?wu<(&x&2cDsePNpw&7YPH8N^7)Htq?4aw9y_Q0H4{uctR{X=>N|Vc)MGjJJmVvgd z6V$eow-Z zpYf+afHxEAH$RP1+tmD01-lo zXWNloC#^I1(*@htF-GeR&3FJaC6vNXj7sg?o&B;wshYebPXAi5hf#2Z$+LU{kl7id zpNbzFFW=sKCi08uXHOEA!uLbuvv2_|7k}U?Q`e2!KLVkJ-)}Gxo=Qj_%pEK|sUZ?q z4`fQI+PG_>IM19W*dBXv^O$Ii11|NgGW)BFwy|I2&)LFtkL5kC24iBAo2v8i1>mB4!QHPGRJCVEBab z>npiSOdsDtmtQ>bFQ6xgE-8FoVi*mVd;1}RbsJWRCMqYr-c@^N3QjBMvMO5A2MW!3 zb|czGk#L4>(+T{c6ZS6L-kg16Gf}nx3mY_JCr8ur3~PwhLWuA(>7HI<%(By?^xH7+ z_;KXn6tmh|#;{_30p8^dROKrWpYVMz61u765-az$ZOX?JcCB z<{EJ(AE)9A^XmOIxn$2s2PL33)R&|EsR1XPgOGt=tXJ3S=uApLfvxKoz&NTb#va42 zypE`TgIrH^#*<*LmbJdV|MWiMF*BXI%{+?yc<=6hAw{%*Z4QoRc529b!_u@2W%-QO zfgKH27P1ysg|aaZ#mrjAvU8fZJY4B}I{T*pFjl$07U7uu2+f*SYpUd`_bP146Vd!I1t2IGo*y zCQ-47&{h=TFzutn@TMvl0tllBxHb?H83&?=nOlt3+A&atPV0JEh_2eaRK>LsqDseT z&uC-28j@x%}Rt^qZChRyuCaPGdeaA8%O|!z%J zHAoy#Hf}C81XU8Fv&67#0_S6iOQEw!+W^I(#3hpx&66(~=HX1F_A$huWWY*DkWqF~ zTow7$8kFOmbR*Kj!U0D?joQ#vi4cqqs{J^Q3hXlU(GX3fj#`-wqdfv7g-SgMNTJ^? zt*xRKJJ^i{-%#pcS}*Oj@jF(5)oCFILLu|Yfv&|+vJr9&*C5y9g*Jip0gGHubHPre-B|McFMw?8bvLo0OIG_rmdz1l^+Y zl^y2OM;Ja#xqlHvJD-TdDnPZ1>LA<*?^Wh!W-8e=*J4Dc2XAo!Ri_z~BGNJz0#n;< zAg`JUVmL$8%Z?pIW0!_o>Qk8!njj<{05io)ktIAM&5Kr;{vHGM-BOrZ;i#N^*U6Ya zW<39cVoEa^s#$<(STGzP61rF(?gtc(2Y+&^7uA=v)bJ#Jh$Gfs*B&8<0(bv1>$pCM zz?jj@0CPm$60U^+Z}4Bh8?X%N#^HA4hW+f4x5vF>B)P$vU=D~SOW;x1$C`b^wz3i8o3`_uok&L6r zgOybNff7bxqw-B(jXp^at^oGCBgc6J=bLh>Vv`$zBnyP!5gI$oT%SFDi40s8>Ll&r z0ea5YuXHA=Wem_2v)`3Wa0`N(*|D($1P>ak<$Dwv@IX?(IPThe)PV8dZRoJb*b8&7pFRvV$%3wsD(Ai00;S^urk7~I0hkv ze`ihYsTCnOr2THFS;V55!B4~BbcidCw)`cPFim9H2Imrmri~+@8+3rk9r`{uqX4o7 zaNjV&G`!1w>u-UvXf00hEh<^w9!L4!4n7g0oLmuj5s8x3p32WvTe$~__WHb4P(cDa zQbzy`UlP>+D-WbR^%skly%_;%LpB69B)6ME^S)DnQ|P zJMWP$nb}>_eUKE~d-53|>G(9P=UqDmrCg*hS3NW{KY=f`M47Uvu66_sNN!)g?1Wr@ ziD?nop-prY^t42TMo@I1StFU+RU!7X*49CK1z(G|;#%N#^00RHc7C=CDaKoKPb1&M z9zu@Eg_Plq<8uK{b-!I1`ng(E!bV$})8*FI&7zG({m{Jh63_Pn!FO|CA28p4nAH1f z_b_p)e|ISZEPEF!$wh8)3d&LEiMkr zV666&Q{H90c6xUEVySmpp3S0p9nF)uT&W5jk0vR;#iB;qtg|_f6jn~Bw;yNq(6yas zD*|CbJ0n$osyJV6n~9C-h})0@eJF=2UG+9+@+1a;W^XG zCG!35O85DCFABJ+q1G)T$mbsa%*LTjTYczi=MMfuQ)dslxvRL_jw+k_qg(O!=+~*1 z>hHK6X+xzhHhcYI=r)6AWN>zSuk}BVso(do-!b0ju(Qhh$xh}S?_qct#Ewpw9G!wa z9Pin2vI}x@r>ACX;k53@9q;GwsZ_2j92+FMRkwY-qq7UACuc!ly}aL|UN6|ruC<(> zvp77$eO!Zml6`96y7fZ%O8e2zuEm({9q&Wx@3G$pslCHLjFWwWKU&~?bwlVT=LTOd z2;VhuKFZ;InWU!YQ_ilJ>+gZzEpR>@l64EaGm27<4>^BX<8%SvMq^RsHnko;JoK7s zpV?Z&HXVDjKPU+^i##cJ-?+%Z0%yCb4c~aVM)e(sLF{r!WMM)?{`OzBc5^v>-9l}< zcP{S+yh^*&ZEcA3szDR%9{On)Amz;b$E>}2Hf@Ur%K)Vkj@@u=d} zYmu(eEs7|qo_Qqkz$vksXZt^#y;F2$i`Fh$NhKBAwr$(Coy^!q#T8o>+qP}nwylbB zv)11Gzvs4g*1o5mF<<7x7*E~3fBow=SNh9^R7odgDhCD8_oS7xQbjg-baGR2Q?7I~ zOO>;CMK(THZ*M3shbS)(Bb)o`AGdG!mDlfFy*`{PX_!!YDe0+M9l})+{Tm$(b4E7@ zBPEtxTWw?)Q3YF>St}?X+nbXU>Q8#{8$37ro2$<^iy4z|>z6H8%Uaxgo2^7et#=cb zr)!TDxL2Di$z6_WFJ7;zQxOGKGO~JF-1gS?Fl%(!T--Bh@I)hz5yW{*Yob-+6MR|R z+$(9=V|>+QpC4YgC7bi=-ez)}=kaong+sTG7b9COa+?>%$qeTKI+edxZk(t; zZ?w&&%-mPrIPLBTk+-vT319W>O{;j^C||{}dx~Ro5LZs8k@4}&xIg=RIOg9|CZOK< z&O#McqF_lrV+A*!z#y-pyez7J@(qH_SWo+Kk^ic1SA7L!WE;8%}LB!HKszW`47t4dyxg1O?O4 zzP}Y?3JahhZQ@C2^C7HQBUJF_$#gvzdeG8mQlgkRl~7WnoZ(Fpz%o4@2GO<_(7f!i z@vx^hWXy5m1Z7OTA2%I8j@BJ7FJ*8)@BVmw(`i2KQ-#3w(O=#P=z~IR|L7h7g82Or z{=Jv{ZkWmC$pgup$!OIJvD70xJ~d}K^y4P>=^#gm0Rn|^I*%-#dXa|6g{Z1%C8ph^ zx<_0(1!E(1=QzQD>qV1+q4M~-zO8b{*~%`P9I0$adUBBoqHiJUbWYTP-gbjo`zocR zOtkm1i9|VErI+#&k!{~lCV|Uuf5}d|MTkKQs$K!{H3VE@D0$DZa zt8#gtH%djZyaG&gSY$DB9VJRb%s{!82oY?tyuCa%90WG%vC52Z9Mo{z(pt^{nQ~z$N|^>-5j6>>G0?X=t|R32B0|TD)0i@JJhBilay~$ z4}_oM&?fOeG?x*#`MBsB!wTJ02{au{2CobV z(OZM>^!Pmk>K`#?M@UXcH#dIU>?rKku)3ig;R!rU_MSbLlb4CrlWXZEsMK0HR34Km zC)&w1Us|xzwv5<2jA@T5UjMjH0O##OUibaTeMMb5-MOjQ7INAQqI>$5;n*Wa?+=xX z3E_U2!zX;r%1WE7MGwB!djtA$^XjA-Na3Y+JPn(rV?qdvKt~t+gpWVXVA~n)f$6-WN(kkV#qn7WKWvz z2~_13@-j`h%3?r)-_t4LWR?RQXS2rp;js>r|LFF;=7`Jb4J+#~M{X}Q$veXG_q~>O zS+2Tv{7H24Vcur5sESht#ax>-UdKdv;Z-tZ$5eR^TMFfc$>OZ63673oW!_YZun*(X z9C4j4anX;LfEGVodaM(8MhrE~X|Ws=82ICf8|lM>1o~Lm43jim%EdiX-7j7f zQSy;t8Cd_$XL$!at=K0SjrTvKK)WUV{CpH1v}F9Fs8(a}@WZQ%Aqox=alWhRu?>!c3atF81`{)$ zg9Bl@oG#CrjW>ZVhPj=kBo**!uQuqTWcVT+p?pNXZ&pr^4?A9&^1n1ud6My4LM9^ z#I+|e`=Zi(8!q(~Tqnhjf-X}^*i8sHv$Z(VW{>GqA)`37(NU(Yl5S_}Tn0v?O#aj= z(dT-sScIzHAN%#>>{-)Tw{5HwuQSIsT)(}Iz2=fVs^~oMNvZfxBXs*nB zMY8o~^a@2xhD`lXinVp%l^XDgjU3?~a?JLnXgYv*p{Z*Pc-cUmdI0S}UHu6|Y8%T& zK^(7SiMm=N6wzQ!SSHm82UA+M|GmqSTA@iOV-DxT`o-_`xXc2Z6j;%LV?MGy4U9;} z#^GhkFZX+7Y?V|aBq}c&9}yE#9T5^?;*gkH1=v+aDKWNUy20`<5esM8bUKaw5GVp@ zKC|O}C5?rF+P1KyCv2bOatr>!Xz6VX?4RPZ9jc3XDa+7ZVi#i(+aYw9D)PkTa@7a@zav z7zf2eV+1XsoDXpXwfoaTQ@J6S9uF)@RUx(x#U+X~i3`vrMbeIieaJG+q~Sc==g6j*Sw1s2lN9(E3#UL#k=I}ovS3N|}` z(kYVJs2wRDmOA>7RV41y7jZxn)h?5%A#6+}+?L6y2EPX{2T!BGYaJAh*!u z6EWDMUZj|7he~i4ZLn>fYn)FqKQWtQ<^f1Z#b$Go^{n8SK`=cHFS*XA-;hnD%}M8x zWiorgkR3FY*l&}4xcPHFd(unqZ1EwQQr5@!a!GlyTlf~wE9iVV^Gna_2xjqyH+w`F zpI4AKPoAncYV0A^UP~{)9*pvRF8_4M&E%(Nen?oZRqt2B75 zw{dbHyKlcyU{`Q{f+4;Ue?kX`E>r4eB=;P2!XF7k%NYS6jR5JMIz*q9cPu*?p0N%m z`^HudA&n%NA6pU0^XPu$&8g5CAbfgRQub7?*DUZ$HPMJfMs3Kp&IZpQOBTr+aWd}ITpKu>`*I+xT$H#fB3P%Zetm z$V#GGkaH#B^3>p5bq2~1xwMOz%6<(AQh&SwTZA6O68x80Funvg6BvJZ!&bPX-nYq= zPma21IiIU<`}9NbuBfmWag#T#4?I+U(DRf+Sux&EQs+T_$_c*%UkEHm<2&_-0~Ttv zAkSvIt~*jo!I#QL(qB88<6kv65qMDmT=<=crNyOw)J)@zN32jkZL13&)HfX2!e7D0 zS`KVurv>v{M!UC;&I%;AZ9}0_pUZW_{Ochbx;HHBFpIaf(T^GQ(T`bT81)&)ZCzPZ zGeOvOay?G&CI!J>RA3t>8qI&6mTXmCZ}f`R|0>?oW?R4E6xv+jy_w``+8wEVy>)w* zHQbbKdB9t^aLH<#4hDjr>_Uz6NWge9F><^Ft+k*~; z@vxRwnw9fm5|Vb!BNwp8?gP{%7?VfG;_b=+o@i#p!r7iy`^WL5bp(7EysX1r=Lsx!S3Ohri25CC8y6YtEFC}|$ z4F0{x$dxu%+4yyQGyH3s{?9t`Uk4m20{^setf2FCOBII02Is(x{@(btsfN8-CP*nLIM1NW9r5J`(500|4hq-gqq1Ay3gGcioE zh_lU>-d6h7e*$4tjy#QNY8lf&Xhv9i3D1b=UuRL5T=RW6za)eI1zq|}GXHzn64pOk ztCP9ae*rF0{Pzz9lw=u%ovr_k_^VK}^hH`g`Jhb$nAClzwnqaGM^wa7bhE4u{wtGaWk}r#K!bdE$j^uQs8wMatt5;u!S4Dy=y{{V=-}EwVHgGQ5nxXT*4k=Gz^>&)sLT3!b1n~za;!S<#sIap$eRYC7-2E8^4KHzab*o+nY2IL7sV_j* zS&9K31CtO^Y-MxK)Zx_p;z5|OP;{5M{CHo46ye8e14C21#x%+lbXf^FjbzXQbxp+v zhxf(g+iIsQO@Zj2Zbs+4R6}E`gM-V{6D)O+Sf_!!PyvVT-qA{#*3>XDL*~j(@yIy` zh6@j8JAN!xa|MBc`=GT+%y91YHNNS^wHXq5q$oH}YNFu1R?hsw;pK(4_BJj3(ODR^ zSPeJ%$g_IWpwiZ8?9*5nhKB9d(yqvd8cQ7?Hx~D#q1#(nYBLIT73lh#!$=fWUEXN} z5v>MK{hMC@gM1WCO)6dfmfBl(zk`H-SSHD;uu z4YpEZP=9c3xqla3XmZD`u4Bv)iRdah zG~`4HF;OxfgjEwZ#Ar~G5mVAsl*=b4S4AhGQ(oUcbe(4&u`M}>b;%4ckSq<#S}a`Q z4mj}?i_rMm6o$zgMH@7i>N%pbrhFm%kmr?XPzdV z6N{N~OGR{&DJ*#rR?=s3iPYdU(L;QD7NaC~&}k&Ta*ZhV4|v_0I(+Bk2A7*j9BCUu`gKHAUr^P z6*vrxQeG6N+D9k11~k^ii3LaxdT5Lo*8FyMhL}&PuW>GM=t1LD8$l8i?MP8y`D2w) zs{Lg2Q-`xqkcmo7zO3js)v`Xky#?83QB2uH4z#`H!x&`A+*B7PM+?@if*gaL+S_45@ zLCk2D+R7{D$zjYT&Kly%1f8X+t&DK8TB1C=K0ss29WU!dyNJf2^qw0`DEM|oM^jO( z&jU>8MQj&<$z4egg@wmm2@iRgvv;4#hmo`Al+~nneEgZg2OF|_RXu;Yx4Ncya?971 z|7*$B8mDMN)sDiue48@862Hd|r|%DRxLuI{e`N0p z{3tbK=sh;bIB3qkrtz6FNY-5z(6nnVP@yLtuBY#Pco-l3*QTK6?UndpUF1)so5lTb z*M(?sA(C{s{d^Ds;Q|l41TRiQE{WDhCoT#D^uKZ@!*R-&d%|!84U&iH<9CGV91L60 z+SJ>mq;CzI?0(jOiFLRMOPjEdgm-XzAb;vVvGw_Y3rC`XU8@E8Ftp3y7kb#syS2Mv z`0%pB1>dj%D@@P__6*tiqsc*zgcl`0F#m7dRS#4^Hb9eyAeFU(c<#!CfnmRFcLn@Z{8~sz-UzatU~7aM z@>%EYy3G~h)Jda!58-{y=J(qyko2t-9AqsQOL%L{mJz%s8On|5^nTLA-VU{=w_Jwa zYH+Ynp5XwvMfu4wtv$yEKQ))fQHUwOJd6Ib9RZNP^Y(QIg-xE#a&>os}7kV1V_ z*or9pf~8}w0ZBOOMo-Y?Zi2W+B|;O$9~msPM?hCwl*}ZPp`&H}`6l&cfy%>SKgX5w z`V|HOWgxg^h6RVb^4PB{QJ^a<`-`H1M}R%mKughrO#BeJy~p`fE{QUBU6KJVP*In! zL+X_!{TzK#2H)gMK<%Ql#(V%K%tEnxrrfGzH%nIHR>r`|9`+<*HoEIkzXtc8YD=}5 z7Zh8BGYBrr+7S;zvQ~%O6~8~|H7+X}WU1vk9QG!%>4)8|f$GtwHJK5(MMkRQ8H(v{ zMX}9R6P%K&Id{vH%JXxWaw|k-Ohi8^$voUBSBTQCNo%5(H5{cEW7C`GQ~uD`WH#0T zlb)TVA3K|Dh?gIom$#6fwWO;bj-L{J@xWTfjc_I-T}+l^^m`0Wrdro#j)WFOQQtt; zWH!{vvS>^l3TH8$c^mSWn@-Sc$Q=qdFssW4*Y zp!0E4=edSymY0}H5`4Aut=hN{&N4mp6hLKr-dI@Rm|>+von<+#X=jTS%M+%hD!qHw zsc0f2u}@2QuXV;_L$0|S$QaRV%{$rr^D{!~VHlkBR&m^hxmEnVv39H$0EeqN;14A> zV9Yh3{rbBpa`laQJwmHGQn4aGx_(RZO(J7jqm*VNJj?9al?oQ*kfKP0Z^HXS}ZHPZ->c#?@B0#mCgfm8EBk_bqHV zXq)I85ZM7HNRLt<^D&0Ny{uzvheMaFb)OYd$lTg}2c!IclwqUsl=Ef1W~+>y*@|_G zIY;43Hl^3Vd<1tvZW}lu{~=7r}vi9+MyyHAYVlVyR-sLpFMY_P}pzCm0K8 z^=tTs_EfiPZb9x|ZV>E9~0OS48dXRMON@lh(#S6K(mep3~vyOMQ zW{iwSsRC`G0K9Z?1bYMoVquUNM0k`gR;2x9OIU(G=R5QH5((~XOxSLV5L*@OTV5WNRbbjuXnMrZc^ zRgpJ&44Kc7U4}{ennKlAskVPj`Q+oA`1QX^tEGRJR>RoU;k_! zOz8}5oo$TVjSL)}tc>Xl9Bmlr{w1~lsgAr9#w7drk$H^D@)#_<=9?Cq%o~DQ28ROucEKUd6n-%0e^{}$T--Ii;c z@q0WKIcfs_b^HM&V8Cj(^>5F_j3zGi=PQWPg6NdY=U$lc`YzIuP}@o6DzcH{UTe{OndNg4Q+ zePTWA&{0noaXf)0O1?0{zSE*V1IT&X{mHHIy@J&lP&6uyXkCNd>~o^_X~*bviB!h< z@Ld8|?qN_X8GLSTkw^1SgeBU*-2UFkHK?SPOZ$@c)c<86?Z!e+|6dAe)_+u!zdsak za&j;?bapaUcDFMYumPwVSUDU2XA9_Gd@A1qX^b2Ekqe&86!hC@tip56LM8H&nF%Zc zV(#}EzXUo)-KYf2H{jzJDsO}|K<9lehH+(;BvwD)nzlYP+2T04o|2K()#(Wu(`SK> z5F|j<^eGU*lf>V)+Pbv}%(0!Zdc6 zYE{x$sLnXMPq;w+(R2)kYH8HlX`8(P>8m$uwK0@aA;ykv?l#CrSJdtJI#N|wjIDeg z+qnwARNyRkR*Bp8bTW!4gXaY?&iiNZo2)td41KA< zlATDO3XB5G61vIKtC?CR!QA&pQ#^27ro|~&hhO($nz|X$?nDb@IR?nD!4IIyZ{c17 zTth_U#|61#qd%*ztz10;aN8#e*CJLAf*%DrS0?4!>-m$+&$_!)%na>s(X(T4*1AK^ z(r4&HG&sM|42P7?MY+h3QLj(}v08BlRJ} z5qdT5p|~GQu_Yu)Pbx99lbYW`LPp?}gztV4$gQL!3h>%AUJpyd;qKi)*kBusNC%Vi z3SJV;GYL8z{z@e&H7H$ti+TbJm_X`>o4^ZcM4(H_s+sMb>tiLA+$#?R+j{e8#bv;n zmwScuH49dXHJ%JPPVATdhD}rz5;QKS&IujV*F0y;?#js>^t0z$u(}?ARig+6w=`#w zYD7(yMYJ`jOtH}$FH7P5{V&JIH&an#^JNB`UtQpT4p;x&0sdQ~h0Ps|jht*9+?BpG z+s5?Yy8L@h5lI6%=o4lbHp4_-8GA@cjyo`lVH*f%kKI90K^R$nucXx6WuTFBLwQ#H z8g-NNKuG_$&|r>aMq0~tPPqovi7dQXxAvRH>(r8ERma2W=#uTHC-8JM8bm!=HdKA# zPdvzaJ!fvRW>G&DzN&T(zxW5Kt(xCEAf zN|h3DVhZd#O22~@N&Z=jUP^^|ftijKwNcp98)bQy_S|lUA!n5t2bivhydAf}RA@D5 zze=@5OR6JHT?VwvSPM?0KSf|;1A%e3{xc$46JSwS5a%|6Go4_ms$Q=-phFo-#z1{^ zXpVIs{-$&*sw8$QlcjF&Ej=ZnA3K^*AW=g^d6^ee8g-Scj0(yFsN(YpN;kt!6$c8H z^M~8R$G>vg;uRX5sF@}By933{JUdVPM4cHj@XbtK1`jS=Gj7tCO0{d&!CBbE(C8li z9EhefX3W#kiP-%lfo=uP!V)wk=KwO!XMld=B$=VOi5E`lw+ZDz+(7(E@*r`ZbR5f$ ze^b{l5UNKEJ5w^$)E3v?z3FuI)G9&jy5(x~eKTwG_?F5g_4=s;Q*49@<9lVtn&#v= z>V7K}tYyd%R+Bc-oL0<4*=A#i^CQj;7FK-^KGw8axjm!#!UmH5AhA4Or={{$N;IV1(- zk3t$8^f2{A@RCM82?oKfn@FXD(tuSf2~$*C>9D4_nD@gABW#=;HO3nSP~P!**}637F? zSfQgR!}1c8jqPa}8__u!4JvZgd-|?2m)vIu6{>SIzy>*mg2vMBjFSsdXDQ042#20xqePYV4*d+KCC;cpJqvN!^vC|m zD^*#V#({_mLpV66zBr-F%fpy3HL47jsK|sGOyKX0^3=ZM@5YYCzkZ3S=^<1uk=IG% zsmz;}=3LH%xlWy9Mcd%=;_`6QULPOW#|CHhJ+&IOP{8IULvZ-YYFY`d0oO(o67!m4 zajhkmvlzzH({LJl&SH(ajY_00Ozj_PjW%SWo0Ij+mtjtAXJie`N;g`aVD!@zk*Y5d zDk(Dyd6iQBR$enoLt1h@;Nj4WYse@jiFZg1|I<>D@#|oD@c9mMhDGvuIyf6Hsrz}` zZ!B0gg3)$77}kUv-PFWCg#ynlWIUi1o?o4xk8r#n1e)F!o@soXk%>+poDBq;XjEFe z8ypdM=J5EGHYpsElmb2blMD<^%Aebhn=?rDQi+*AHoQX8c|EZ=EA|ci!ASu)E;4qT z6b?PUlj!ZW?LGVwwj!Te^S2$(*v+8WxI>N4dh!LUn zn|81(4&R~oo}k%cE3>QO z71XHy>oVv+&pZAOYU*D}-d`I!|1y>WwO2JQ71R&fM^d%`trMy*%vymWip^}0;h3^y z3I9ompe9ziH4YBl2&fGV8%s;cfcq2rp+UpmQ>kLso&2F+SoCc&?b$fpq~;ynQ=a9C z55wf1?xz7Litq$3yO!uv2t7xs&js%OozlEVs$B@0r3sz47=D& z8MwiyMD9b_ncS9$*_lqkYRf;w9s5TQu_2t9ajG4o49Luh#LM!COvm$uTqtRx@S?&o z;@#h9t)nwI4f5}3KbvE*M&(1y9ee9n80mGP&2$V-b4jck9Rkf>A$N+vO%8&F`Nl+M zJmxU=(h;Pv9@NV}J!iSk)G@SrAB?Tj9UQ2QR-#hgf9St6;xnW;jzd5YsQq>=cPihS zluOp=`?a`o=q}bwokJ0i6CMe;b#Y)c-%qc{U~+iKRF@;{EVAV`vbRYc6MDG-kQztW zSx~{dhyKp?K?C56@M`2Grc}6{)|9gta4d3g{u#V223ZI_(Y=hC&F*_2N@B1sU^seg zXc$nPSK0YEQKU?ke@=ku0Zk`HU?UAFEPzZP-;$JXGB@n-0xkt8u_l?>I75+hoGD;> za@cBI0aOc^w*l>iiZwa|FqEmv=khbUWoZFcnp&d+wYir% znH&8|Ugk*dM8TdMsWdsp7f71QC{5rdGLK0t?6U(be0!QyPFzYTdFy`+NiMy9C|WDY zG>EfnmXroX)-W)UfXk_kxIJq2mbB)U!ChmqG*!*N%8OK}N{=?BHe(JxVa6${WUV(Y zMj%_t_tsqb9Fml1MLv_YT#k5Ee@jk!ygLViIlDp9#cao(ffo)l&1*OwKo7S^MGX&D&$qNk zH}yZ}rwzf|Jrcn7#rfhw7QhC~L_(m#h7W0QBlHvO|7ylL@;~0$z)d%17}-@o?Se+U zBch(Hd!h&*Qs*AoRipNv*lluNj)o2oKAR2|JDm>Bs(Atpr$Ft>sp5Py#^M6^`8E%E ztstLZ_%c-(#B>$q1arAed+&t7Y(v_PM>_Io){t?}7>V@O+|3=qb_#`n2sjrhrN92AYnm(4_e1V}@+2$ggVICpB)qxax9Kq7 zxJ|)e33i~MlVf*v;S7N>eJCy5&6M^QW3lZJVd+B-^c9mfG}p4$?m~zgiC`K`WcVGJ zkslr}5^O`9Ly(6v8jVi?PK4TZ?yW$Uq@3D7w3oS;vmn=AGEw~w4I`Q79=;#B3yha>c@FfSeAjr9<5e{aB%ZSHfwzc?zxZmFqBnVLU9@GwrR?Uli`3Y zv&sbCWc$F}>blYVCbf-b?qO}F#ZVp&5>Kxn8f#-=(m5~y&{BIQ<&^@^>vi#Cqhg&hL->O6i)H)sBUWtZI zi$4^n4Be^JlNL8WUy=PV;~>b}`cAd&iGJU7NlR zV5eUp=J6l4~M;+^;1c2$>Y^6j=6xzDsTL{5fHd#lXl3)GlnHI)8-TD$Sz) z)v8Q&TQZ;iT4n9~uT1m*KegX~!lae z}^6K#~~RPh3)nt3;EU%k0M&BoN2jYQcQ ztnnga45rLwX2)|#6r92goo17$GE!*UOqBQNIA&VYnHHr5D|e^LEJXFxXMN+^ZM(VV<(!6j3B~IraV|tq6^7;`x90(42)88 z5y=&fKENK9*gKhJfWrVV5DM#9z&@wCQMuc%Fo*>KSuUyaT+Mmlyket0+J&^G3t%3| zL&wz%8u^w7Ptv2sl~eR^IqC@p;U|%E1cK0ID#NUhcfwWS`tW1;>DafrKY7YpwYpux zumOnQNBF7|hCZWe{V-t{6t^B`pITz4`!aCO;b7*K;54G<>l+*F3e!slO_ek$ICAFZ z)1qaF_%wgD@y=+oF8D^K^5obb`bWFW-gp(lc;?HqXsuww z?_Mq7RvE1=YqVMOg!|;!3D-ei8^mt6s^9;-6zB!Qj^7r^3J`*Z6^z*yhzG%ok}?~F zXyh5$M*ijfgW$(^M9pk*aC~ZkfYC+;yeR#c9u2%G!{KOI=+~J*N9ZSufF5_gR)$kC zI9mGVVc$jp?T5J)Dd^IX+%M)z$IypunG9Wan?8Cy-pnr{#oG@e6hSXx6ur1&H!uBY#O%ZKsk z3j_EJR(~O0ZYFJ2#;YW)pT%*7U}}j@l_Sy;Y4ldeXs;aL<~%UrU7W2m+SnF0ZbwLU zNS>K^zy_+R*|8sB-27;dU06Df1ZiJa?&d-+#A{0QK0w)gdm*KYMZB~&6Va(qsO_#- z4yZ)7up^|NzKNB{#<`^m_=~tVMzt@JS ztuTn4P|B|u!|C7QhIk{W? zr^6^e_BBjE=E)PMg7lB}@l`SC>2)GPK$L(-Bp4h%orP6rbjr`bd}cxO_Qf+!hb5&I zo|`n3Jv>~$Oa5v}yMCk5re8+B+2kbXktZ$4C8&53j(X7vN)_vs0-^90x|wUZ=MXZ- z9a&Hp5op#gracM77TD>3-8mVXr{0`N)SPI8j+!D##x1cva>9)Lj zc=gJy+{3*cyN3Rju%_7xo#BZ%r-PY@?6`WQ0w?)R{)V_RtSYqMI~JgM9*t3orXuGj!hJP@D9XEvROt)5@+7|{s!A6)KM{9 zOFxp%@wGFgmojzr2;_^cioveZ1^_>zifq+!g~Rxw4u!}L$Nsd~pW-K&1Vua&bu{sRvroW;Ns`&PM&t;f*R?4PK*Ip`f zAX_$JTPm-jR0my_R1g^f6~RC}LzX^8Z`Zd`z99{t=R%TF2d4-FZD|zR)KBGu42qfs z(cBn=+XP^z&nTGuo4|k;7y}A1S3MzQfICDgSv10LDNO~+azCZ8%T&JI$uQwcFNj#< zj`w?jG9FcxFCB_!6B@0eV#sDkBrf70X%BA}F8SLw2Jq5>OJH*hX{L0+UT*nvevc~TS*x*Y8ivB$}_}@>7{+UMo zZ=?K|2K*($|1rvpBnVICg+D`65~L|(0N@>gZem}2NCLnXG5Nd%qhHAgv5CoaHcQ5M zJMpjh6m}?*#s(S@>jlk6M0o*WB1CvZnOueXH0y@f(#6#Un@_K++s~y>jz=0Kec+t^ zzAMiyuOr%{^w&!n-Osh~qHo!dpXB)D{3z2@*>e0{zA?Tyz&42RsPy>wg!q*D^4$}_ zhQPbPh`@2cE|5kiWZMcr(GcwT+u6Qkpxh+-!rgPgQQ+*9`pVr5KtrJE@OFyb&Aw=$ z(opOq+u^{S#M@)QorK$Ez@4PqXTY5V+iSp`MB8M*-jv&Hz}{5buE5@O+j77kYTcg@ zPiel7pqd~i5aXz3C}v2>MANi(o!y|ocObOL#o*cjF&gcYB+hB`7vPD8ORb~<{-d`+ zx2LJAr?;g+r=z2(qocQ!A9}ih^6YDEr*+?w1oRwe@a4Y?sLwfzxUDSM@wTAgBoGGRTj zVI!6npJfj8VB-47!Yfu*HgIq*JZxUb()h?4WEkp=D{%3LtS@xY?4A@)hDp!o0UG9B zxX(W9S5OTX*jr9D5qg9|NJ1EmtSb|oF_E1MXM3efs>vqm5^IrG8r#osOo&nj&G0c9 z0xnG+L>}E>Xap_uXv@qNt5zIcBH-{fK7PN0YJ1{)5ks!P*~`2I=X%amlONn&c^N;f zFI@}_{RFjc`` z^AHv?u#b1z0WaDU^}juBmRNXA*^)NPlE|jeAU4vKb(D96i`n`o!#!i&2os@+;}}@X zXxVK|$`Tu_KDY5nG8d}^$ddG)j7skg^ZBG1UXeo4+dT3vxP5e^JFUN$SYu^}eE+c1 zFXP*+A~7Q1BkkLdv!H@}BC)WR2h<;u3+H?!TYf462GQheni6R#8f`LjOG7{uKE?w5mXFfK&XY__<*ntRgA zgifi$G)TCIP;B-No^9wL;Ji^cm2UY^4&>#T02Sw&*f2*N&-r|gttyf~@);?Id?IG0 zND;)po&-4@$poR5d`Y!7;ka3JGe{G9OdLSSk(?L(0nS`S4=wVK%Dp_qcOf7jZUj}T zw;OSlz`ni8Rl>4CExKcv8rzZcPEAo0Z>ywySDQnj>`8I)n{rv4ef(c6+G$KVdeJL)4tKH}*LkGj256&P&V6%eU79J>npKv*px)A*iP3g>zGxXp}oOM+uL; zQ_o}_9!Nk3PVHfuCWQ@>Za61WPS`nfbkOjwDjY#~`Xx=rkm_N~5MKZ$&0N3xXq=k6 zuHMdv16t=A>ED0S5IhKUYL4@ybCFje-VuLkGSGzuhO`b%$}fo*Oh>~Bn_zd*siGpc zv4}l#GSrBC-L*Z7h|Z4?Z%jZx5jC?UD~;p<5hWWfmq*^90g~K9|DT%j8-VodX$&`7 za&S09y0~zpIa53Vr{ZngEi2?id*tjP+0}V@`r)zMS#gC(>?7DvyUK>~cor2_$BRe# zH4|04Wnh-p4w~vy0gAVApq|zaUio#j>Ju5&TOG>B0OY4dpif@Y~GSahViG_B)GK*59q*vqr-le{OA;iS*qv4$s()k)I} z_xo`Gms)p`io%a}QXPmX8_vENa>Z5))^UcllNVj*%1%>bz6kWtY+E`c*kWUnWJ%p*Yqo%Eab`Eiz7#_D^0ib#ugPT z8{>i-*8FGc!>1gpwrrT>hk4m9Dz3@O1aI`rCPZ_x93<6uu0_tJ4pzskmszXY`|#H4 zi7#io&Y`D&v~}pxj3#w%hc{-UZ5zx(-Bhza=>RsCLG4{T+{3ry=xr{>Il^8-9>SomFi>&_&a)rNL|5N9awxJ4Dz%7Bu!` zkKrA3po>L&q@a3DPIYZWjc1zE7_OmOTW+Wk*{1QZe683Xc)*&tX6=TtX^{5^rp7b% z05@@Jts0$g%zsT330HI;iAoS=P)F{F=IFHa%jM$|uKNic>?F7SdKYY`iiUwNavnd{AcYX#9K^==<-Ej38L1wfL(IoIu zt$c#QbN5D%`I3`=a&XNr+>DYgeJvoi{(K8m`Q4HZU6Wraej zdNa;;Mb7a+t5ok72}uDo($k$mHA2o1W9!iE$MEY_6u$;(+pW`)Q=$9T$oyf$wRzc8 z*)%2Nh)ES)M(GLxx>!e#2!B&#=&Q;`FM+DaWqwDE&8;fK7cy>#2NMle_kU_jC z-$pS>A%6H~rG{#ZNN8-z>lb~(nB@IXmh^608`}tV2M2Hx?ObbT#w`<;lU&qUr?DvS z$?eRNig4L}GirHOuU>`^0$ zf-4Tf4zc@3#77dDG41lVApnuvxi~ZlZ^>K35jx36sZBEX&V8h~I}*G&ZT#naK=}Um zxH@9Iq;#5Ri4oP2Xi3yKy!dpA=i+_skts=C%I6yfPh;$&!RvW;UZx&~N+yzV6+=VqPZ|6oi+K zQt8vj2b^`?Va(4{yEe%dK{-Y*!TmA!xr^-{qVKMiiT%XLV0I-F7?*_;7~LV1Mz=A_ zm_c0?j9_|lDGcor+lg3iiY74E`4bqMk|_)?KLM?EfJZk40j)WdM)g9vD_D9$fEK9A z=zg7h-<223N|>hSEU=G%!TaeF+zdYfw1WM={vEvkf7p-xkML4LL>WLXU}62AY$GM= z(ArvmJihUrhf`{4Tcc^X2J|Ogk%DSbK8jfwWPco}L+?`Scg1e40PFBaP%E76`)`bl zAD2q(0CMJtp=Gl}SPOI-TYzx{pq z&VI-N#G7ute>(P?==i*V`c&r+17?421?7XI;#EK8F9cD-uXxn21+hU?!;1)g-f7QB z2UkmzCroLKJKyj#{t*jy{s^Y{#R}P8X=R86FVQW-Us21kJ|)C-bNefzA=A_=eC_95 znkv3cCC57PZY}RRHDp)PS#e7k@s&+S$|~H@v#wYuPW{`I^{Fv8i+47!e;cQ`~gCQQDO}xvB9`ywmv)Kch(IL}w^9)1Qnp`%_Oh?i>lS zu7iq0iUp&G%`6LQ-j0|2{^qg;NZnQJVpvGsw;`i=8YI_iT^Y znGLu@NNnlk6rOSC!e69qbV(^~lo#WsvdjqqF>BV|;lPVljTFH&t{~!+G|wbW04gyH zETTk7B9GW&PYcy{45hU&6kxMds&*!`CMP=Ds7L1UcTImrhOfXrhFwu_;KYT;Lbsuef_d2=elJvj!ahYnhe3)dr41a zeI?Qjt&J2+aW{CEQ76@j>X?%SEh}uU^|lHA4axy%r!}@X5^={yvhfuAq%0RHhn4;ut=1(+Te2=N>W2kR-L^4AjZf%JA;#{| zKH4r&Z70Y-()#G_^CVNaD|3XjY1JI26)`Q&*IeQXW&Czs)J_7OFkDaQjHQ;_1Q|lD zQWB>l`|qwl$B!*d`0h>qw(4E_PMW7|h~*R^pxezfYvvFuJ2uu?a8Tv8IEE!jYmLh^ z@TIm+S!Wim;olsm?oPuxqjnxSQZbP^d8?LYXccXxn=fZ}EKaeGI#F-#mtIlMVS4vIqp2zETaU=b`#M}B@Rxsczs@8yilaYC+;Qj$j{H0 zMuMK!7Kw`Vp|n+O&=Zj!#xHNz5UGk}MZKcrRCcapFW--k9Hi7O+7FN1P{vVlkRG;D z>6RV7P{Aofuk9>#vCZnp}v zAgb$O-o}NN)M?+EZ^(J{c$S>8>73#?Pl?ifN<0?Loz@?(4ziZN0Vwj ztZ3ona6-_n%g7JD}wCy-dGNk<`+=u>n5_vI_ zs!7IpbR~ml#mn%`dd97_;*bku0`DL-ME>zl~zj(@^Z`P2VhWYbJSISfYYBQdI0- zWuvH&Qqxn=K$S?OQY=3}OFk2)*A6k^wC!`mWn;WF5g(`{3Pk11RHz;7lf;ctAD#lj z-GbSu&rGv&{vg;cFoNE$Fyh%RG2+^;F+$%iI`9nD!c+uMIOuZsjp8jC?DudMy645J zF=&VI%_{`)EjJ+gl@>wz)f!QSy5Q)q1|i~h-Nnc9a#tIXeF=_M-G#@3MW2_CYTz!r zCzo)S7Qvl32j8{F;)QNt%F;hF72luRV(Uk{_$-Ek4@v zLWQe#Q0HRJuPX+Dj0JW}0!xN@J=BB+#xQOluy+8Hr~kq{XomR}yLW^6B`}D<1b^2+ zV2U?DhRHj8D-xQ9@fER02E(^(ADJO{cTMpTy~oGg4f#EF%MyBH?#?vB1fX1QgUOq> z&rHc1Il&lP=(;lr^;^Cjec>ErW6tg$#rTTZ+hOSj-C44y>m9ze3H>&G!H4||5a2?` z=$*LL3B6(Xh~E=~;WK^V7^K7S9lzDXx*m0c(bIoH8dPKMhTSoH2?%XFu*3M84`VZo z+!MjS9{BxY56^ousCAe3*p;vGRU(}AI-XY~zA2V_;zvcm?n5vX)2t~#B~Zl09q{cX z%4m+`=%wX60E!>;KIrlBO%H7F-N5bpPOlpLiG4JLJOj-w)Aifdg{A#j+TawTNj7}J zb6DksRh#Q$bjGly;PTdvGs@(e(@mb@?_r4Vs*2iqrIL22>10WEq=)=(9o zn6SpEw;A{0Rp+v$TL{ab$ZU#;Zu_QE7ocT==tA$6Qcl)SBsy+6F1%8>J&=4j62>0} z->H#Kx2i90Jh3fb?L0RgIFp|-%yd<^H(V#|`kM)ed%F^tT{xHu6h@fi?BH@Ceo}_o zP?`dPGyQ6NabzFscXv>JMK~oGbe*>fWUD{r^B2>z2R_9HkPXc?P_B6lrNgT>h&&p6 z)HkIEV?8@lck*}n0`=&L>PUrkdbDUahxY7tT`cO8J5=ymAiwOKT*1a6 zDpR=4L}5$H-y8*Pgx&R_Y+%nQaRjHJ=z@6ctn)O{y6w2U9#6-auhovndKtJ|Yy@rG467_7)%D z^Liia(YbD;o!CXhq%63vE$QzKMZ6xn^T}K>ss@=iXyVb;VCBA*@xFaYG*)O|CpfTi zW~RA`WE&f{aamVksa{dM=OsDOo!z2k{75wCym5K=&0BGr-UpKQmyeW5NCt1^_8t@H zhoz*$Bg+PBxqT0I?#VHU%#yb|jdx{&VtXQ$=dacY=?sy<4WY`&Jtih7fPEc9e`_Ng z4l}~Z73&M2$rT7|&IzF1ZrSaxw6N~U@|;*WT~$QJ-?WBQZTeWnC9QA{=TbWE#VUiM zSfZcn_sI-y!8_+VBv|!gWT2!d2AC7ems8Uywm{;$(r)avzmhs`zZqN>8VGeMj`lF_ z#wHF_{hXlhuH~e3p^#2-p@SpRnEp2#cRRjF$lgAj^sN7myu0Xx)NH$CC8gNBl`;bf zV`Mtd274s-Oz0WumUE|eASXG10UJMlH9Wa_@_Ku|} zXP<}Gy0lfdYO|AnC&XrBNUkn28g5t<4@w(+NY@V2#Dc0nz={$VRo0Y-mqy2+RT>$o z))F-N_in&sMEkth^O?t1yN##1yL5-{nv2LJboF`aU?&Bw9nTX~vDb|iL}~3gI&}_E zHv9*Aeqlh8ZxlZIDO%(10wl(4YAcSTlUf6S~_R{eRwtT8Y3>yjIpcr_Hba0T>Q&`etpz*+AdBOcB8+8AW z%;OcHcSVW&@4~A8nUU=Oh1w~K3Nf=VaQuIuJJhgQgMXmAf%{)W_2iNKW4RIorSe8- z5sCi9`Q<8POmyRe~$~HAES(+_1 zTc;cVDZcF=$Pg)c-w#_}vt55Too2i2?jQZ|ae(|KKf3&@Kp&w_k?mvr;~-wj{o^3p zRr^Lky#@QoK()zsm4I2HUz+`AAzrHeXCYs@{Vzbh1^UoIy(Rk6K)pr!)Ic|X?OFl% z((Ymd_fqU?0r%4EasjtOtWxfZ0_~vQ@&N6i+b8+k0NbM3$N66YyF#o|=(qXv0E2*x6+0=8+gt#4_aXD+>J1;57vWY8C=4`^AB9~uUo2luKef*~fHy#J*FC^D zfCHEeBAeVkv2PrhB|r&87L{E_zqd~b1Pvma);_gQ2{f0~o;9${ULa}7MUhV67LApr zT!_4!TuTwHx)Lr`g%(m(Sy@FnS>^uQBn4to3>$hyKEA&(v(fV0zF}cFKT3sGwJV)< zP!JuxqkVOl1P*L#Iq=$2z^x^}OLI<#hGzReKEz-b-ZA}2ct$%Fm4V+h&Q$}q~<>l zcPd67gEyTuUo3hoHg28Ilg$Ly&55N4s0TVI6dbebiqlN_Pm4`Vlucdalx`0TD(X=;M-flTQb+IQ zy&(G&d)(N&RdPzn;4rbOqv+ZMqHfK2@9C*WaxH0BG8;=XOKk~Ju@gB@!9(Uq=XvG? ziRHb+9ZHYEU6qkH#G+T{n{@BP`4f2$bwsZUF0QD08=)&0ktIDXcunTmRYaD=EG?6jGeY=xf?Z&@v5up(EUx+2q| zEW@Z&uZKfSyMtHhk5!TBW?_7>e+Aj8ZbKcya`R1$1F4_Y3)B>A5@b%@u(p!u4q6)> zJJYglC9I4zo==b*_whdMZf^1RMk!e*Y;WI!u7DSH#mItP9}eC{%SnsobGC*A(Rc}Q zq61eO-a4ZV87dQN>7%KOPq}H^V)0fjT*mS8ov<*AS9U2W-9)uXQ0y7t=IF?G_S z7G||`tW;}u5a2KTty-JjE3sw+x_>okb(b$6Ec1zK=>0!Hmb1A>HV)b}RAYo7dibQ|O_Tdn>6v~Eb_gUH)* zFEB++?{1;TBKgb6>lOVodZ5$jv&IgBhb0dU)5i*y!P8F#3JQAkaLi9K8P{zA=Cu;< zDPZ2t#|ZV?f0!zH=MM?6E;X&j>|=WNX>_U|Rb z+AO=s)wqnqnS{+=`G<*TtFyF+BA@%1p9R==X@lxB2PQgK1#s;+^Du^G^>sUkVIFeK zgUr0V`*_5rEC%%KB6lk?_C~{kcN9}Mnvu7{N{%v+X?F{g+R?d@oTN@D8Fxf<)EsQp zH-1BG%gVxqvrQ=BB+k+}>J4hfG42ES<&X)U{{}sV|AxkOf8~!${k7@FFcW{1coVuw z`bpl@Pik=WTqBR%BhXZI0It?Oa8EgDMQzv6J$(;1*+qTR&^>z(G--e&j0P`-78Pg0 z9hFBCW&!{m&|*v|Cz(^dQ-M=8sLSq(-Sl04_=1@J@SS#~BK~=+Bo3;NZVlBpsE+Jk zW^eH0LEX^-v151t$KyfbkB=W|V7t1-%sfG6;JXsqX#Qpn9zSwN;6ZmGt6}>--EDuE z8RGIe=>9O8sD@d`v@wPN<)zPirOF*B5G!#e_?!K*s$JOzax@lVqqG|D5B}H z-r88AKAl=36=jk%wMxTN<4wKR;1yz0OoMmCk!EsKgSY=)f-g59>ysV)_wFdu9cQXs zgLmkWC*RD`e8-DND&3m{9@~k76Q1v6+(QQk{_h#bB7A6%K*0~{$rE++1yE`c>S1b< z7n0Pvmj)ER>3fw_><{%&y$2&u-=L!`>K)TpxJfsS-qCxX)T|Gb7t>U_CToK=Nx#?! zJtccimYE+zj^shWw6s4OAFsu`gx0nut`%JQ*91)dQgT&a@|ygm^5S1RN%qlQLr?Zm zSQDD)ExfFn=q$v0A0fPuPi0|em6O5B;{1J}}@H;cj*B@Wq?mzrwOn>NM z4dL@z^RNtio;TXi_YQIS(=nsp3~Yek&Y?lT90Wd*1ihTgo_D5nwho*LzmpsxZ;?=> zojSY+5c=-6N;My}EOb!u=lhMD^m0F7o@q(RFJIb&>XdHvJ@9)K&&^25G_K7iuB%?dLtBXAJ|SkF(ynzbcSrl22AASCb`wM+_bN9; zqa=6tN3R2dBy@M=vAWLBm(Fv-M6D-}_kO83cQn%zle7hx#i;v6$%n=u&}{*4KPtI) z4(xaM-`88T2Nw=>Q_;C;n`!6;*H_Geu8>*~@FI`rwW|sk#%Ptli%) zB=9clFgC_dZ5>0EG9R`mDIxOM4rfyogl?S>*`{tu^2X0CBJI#6dDWa{%rGU}Pe(ny zY3*Z-^8LLup(}tEGn1teFS3?&_POjbX^K{HYzKa~b&)!*+`9yCHq(sfGx+4hnM^k7 zGAPY;_Q;{+Fr82C@qio^b{jXH?9a!n1o|Ov62KcCGvR>RVUkpXJ<{>m*}ZzHqf0Fn z0u>TVNkw-dn$Bef4KaJ~dz&U*sNw6WAQ8YuM^_o_QyCebU`Na|5`2%314mQCl8cBql)CiN`7 zO|(Y!3N&6Oju(#;&rR;peb|%unTVg9P2?f&n0sh2u0+g7+`)g(JI*^!lvpO^tA4LN z{!TKR{1JXg2mtPAQ$NxHpk16)F8QnfA!H)FcZn>`2J;W=dF#Hu-C->j39fNV^ zYMdYCXpS!oHCub5E%k%o%v*awnq`A>=Anafme@GHl3f#fWi7U0dGq^ld{s8h?pdmm zD*8?tA8(r40)UH>4|y%=wmDo@H6_&5?)b{S)oy;H=qF%6bnDm4N9JdDK;J zTEK;iGAJt>;AT@?MgPGAa8s90S>F)>==4wlW!>u!xG)8Dq$>t=gatfb^UotCl=T^h z1X+Io<9ky8zQhL%`wI2yHL_0y=me(#7)}=OLxjIp8rp*ZBhUgyfCZfYya)%-nL`xN z3J>TASqW@tm|v@!4nq^XvZgMzI5C~MqI2#g5*i!>57i6;2KH)Zh|hqn(deKs z6F7qO6X=Wl$@k}St25fkw%2vXUoNJH&$rJ51b(!?n8C)DgCppyy#@$L*cBh-2q&5~ zm@HJIec?vLE*3GNw#ni;=4lnwsx8Nz!@E_MHKV3Vezv`TV$gz`Op_nsg8Za5R+c(V zm6yswXnM?Z@^dw&GZhRV@=EbqCrx@J-Y+^88Y*G%gl^QI9YaZ)G!&psH^{G1T2fX1 zsMMGkFV8rV7PVI6R_ZCd3BS`jDs3EPantk^u&_+x9IYI?H*7G*X|uPrcxt8D>kfcI z`a&wf1WYfk;L!_{jwR?>f+kfokqVAWr26gLVtVJY8IFG(7T!@X2F4q|?4~+EI$-Kf zjkQCN4uXb7J0X|^?aWuhZ)-Wp>4;UMk_zh{g@0S_4r zOmnvAMDS=TCK3<{rj3ID=gVXS|7#$|Xd>olM0I*&5POTKA^@=jv?;m%n|^4^ZWmsS zcqEdU0wmID0zu=5tgtSueM?MK;%@--*b&0!o1{ZYM)>*5&t;%}RL-J{epVXsYHXBD8*8W;lhT@O2ZVBmY zL3F)ryrwa7!9zgT-6)Pc+=Znm-_d;%nkDmXTL;zRm(JqEh7Hha@JioWc^DU;ujNB; zt&>wfsNSEub^&?p;1JlXe8u8`gy`OXn->2+vyuX~S2+GnLj3?C`I{=u0Q!R@sCV-Vt~4{G;+?uS2MeCkf>W{#t_0@Fanp+jvrRPB}e zZUrx+Q(=N$zmOhaXV>AV|8ykiHb|@VS@3LDbcW6h0w^8HQA>|Yz1Wu{n2>%J^lwP(m`G$6c`&g4VM*K7FkMmAbYjvNeAR>i* z5eHQJZO{p4O!MMqB@^A1ZE42z%j0MBQSoQHFrpFRHsW1v_+Q~}y8Z0%2f_uyk&3tT z`7l;G{wo1KbzX(p@{IHTq_SI$C;MbR-b&5!$BGgse0Rj2%2l~TjR&zpQ8#L|$Ew0f z;nFuK&QUbRcZ9#!O6tKYOlD~uC!Mg5^5nk9;eHn`zDsi-3|_fBrjfEvz-Vyhc zi6IB1YkUo2pK$x~U1HN&8fx*v0{!G+Z5-JnB%sI`s`>oN_Fy8Q=3b$aj z_eU^c8lXh&1-sP89Mtyh9>5%%`||tsV|%U95}PRuA&g;MIM?IyuZqKDjEtL$w+vxj zIH@Ma4MPP31|lQOyeSkaDx!FQ&t{KXtr(+~h=uAp1)}e0$FL7#{QVLeN^&92Sj2~Y zAb_G(v5*ddPMUwmzhfpoBX!_j*%5DyEjORcY0z`wbc(qDT)D3$fm-R?MB6Z(;SF+T& zmibNUf&9mC9703)GyWL{-gW;9<+#(j?#jl`|KiS-_S&Euwq-@ICiBR`^$xVn%6KEa z)#ej*U^M7Ns!2EB#TmQBwhJ#MP+RV<;!r9zL!q~*t*}~M~ zzua7jvXv6H3WhHnq>g%PN%Nd$0joAPYqGy4jZFi_FwLshwYi;8$aK7+&*qco>R12&@v+v zZ*u$NT8pe}o`9$*QO@`@xxd9Zi2>cOJ>9qnrxC-**aW!@f+ zjWwgMI*5I`up1^Pgg<}<4C6axaXQ=`+T<=J1ix*%ArtC`iT0BE$h>Lfp0~#M_i6V*f(;)&vm)0qTj*ti8D$fmyH(H zrdU)1oa8rgx5W@$g*5GTxzF|Jy?S(pQh#yx6Yw~Pj%QW&adem*qMxO^m5Ea6Q(#aN zYVY$@du+XQlXCy0AnSr&GP`-tI>9_(7r1mEpV~dHn877*Q#kygvPmrVt{ZvA|D$#? zMhmU0ydmXQbuQS@`pH)q_vbo~UUR^_G5F3HQBNBI)O-3FxR-Kwk`V8^Aj})oIQAEX z@Y(@5jHke-vjBtM+^Mk80_AqaOcCRSFRk)7Y8Gg5`N~0m4v`_rG7u+2LzV=1UHQ|2 zj9g7_GWSY*sMfYi^M_-WCL|dF z6hv60IC~vw2?{Shh&(w6M;Jszpa3=(42AByfiOqyE*Xk4 z)$|5*Ki8G7mGj@vlIuHuy*}V`v1z_bj4uNZWzRxa+XoL$@lHojLALosV(6Z8h7Dp1q|qz zEHZe1rhLhAwGUIdnhPID{?yZi-s2?KC?`Qrx5pX`gC~Y!BJW%_g^c@O4G}@RE-a|I z(ClS$7m`#zi+@iUdogc82`Tv+k1brKx9Z;qhBWG8JrFT{=p>fGlcnQ(Ru3O=r`D`E zva_=@_oPAN&(v&oub`f}ZIQdVh9Xk>$J$46Wm1@m9GH{y&$z;D%n-uPw}f0!jH)wh z8)bMtbh(;Bz_dtQ)R_Ek19n|E?W+f_W8P}XS-$oUR)mZURzi}MB2SYi*ozL9gj7MQ zB*{*ZC)&fo?H@uET~tcnXb{sjX?HQ)NfMi{+ONIPcr8KBkWE?v1RcRn6YU{fOqX`510+wAr6Mu$ym$i4nEh7FPex69 zxzgzJcmaYzMnQ}O#1S8Yq7w7IAA{rNxChNJinO1``yihs^3VwQ=Yh@Xmq}#nJ_2s| zkCrdI@CG=E+1=i-+1t_`U@();)J@QR<$PajH z$x^C6^J zp2Emi(1oHh2AVeSfeb32(G7L(Gq<1zd9FyD-N6VhbV!y?kXq&$53jfaLd{97Ky|Hlde^obV67S0~>CXN<% z#{aqePu7yd`bT|)>YT9lNw>;f<5EOjxwxh#au~RfNTca`-GqMKZlTN< zG_zS>a$!;m|E(Z%rruo)m^eFw+|m?xc@KK9CPH|+czZCE~0!N4JKwR zv^jhgCdXLsF=Qf{!|dk->TwuFCQPu3u&^Qhq#5c0NFp(n5r|XMD%d2^XYz(^EAXjB zBd|O(+W8tOWBAp!hm!L2O=9&Kr+fDJxQrb znhqHlAZab-m(fXzo!M1YL)2ERwOSNqpAxoa%(9AB8%G}lqcVzP4(}GFoGg1WlH4$?gI}!20T({z<$H%mq z#LWW)dw8U;m%Si}@Wjsh1;MV|`@IylD7|}WyF<)uO}Oz4qcU?L22)-1fn=N9N5`0K z1n8TaCnJH-Me42w(R8DC=~*Y6-S!5+QM9Qh5j~X*OhUT`Q4G%lwg!Hrh#zicjIBjM zxH$g)u&s)_`b_%TuduJk*%NeQphxhXlkrLu6x+$St-nwx?`X9BSZtG~J+9Lg2dMlI zBU)!~lNqupjfhnQi{;1-Q{JP(Q4wkOj^u`K$oHQpR(>0Z+_mLS59(2lXV_0ECv|C9 zf}_tQQTfiu=>hB9s`l%$IzHJZs4-C4VrBT-Kw;itrC2|Nw;NL#FBk-%OF~L z!!$KSMPOi4bR=}0Rrzs0ENf@Ox;NN@3x8lWkml$M*3fdqwxOLaO-w{eBSsguAU7 zIXOMQ_zchA&7HNfkFSR(Y=7PEyTZVJWEhbs$B4bDdIPK#2%*pP+*^~^cO15Z%`_I? zTLF9lPeOtC-p&ab#qLfM6Erqejv(qK5}uR;jnF0u+nChc%IuA6s~jh`R423@7S(u$ z%zB+7fJPogjZc=2@94o{-`tn1-r^v|mUL)Q1&Z8x#k@3Q+kgyJBi>0>Y62@}=5s#i zgaPTOqbOxR6HI|KDWIs*g#1EQ*u-cLB2m7l1_ypHZ z&SX_BVx2NOKfz(bk6MN+5f}Vc#59%7joA$!n4HGtFQriOr=dAFOSSof=#3#b6nANM zhSh$h90n|XK%n))h@cdVK7WKDfR9oWr3wwfK-|wo_-oP(sf9ga@)CSJic4?}b;mEt6&j3z zyk8Jag@H;)S@aW`Q6zTGFYC@Z5E(cB2S4Vg0+mQiXMs{-6V|7`y9^sD-h#jC6B#i6 zo{HbE`id{XX*gg87wiULU7JRke2f4rrw>yJx*{iS8hwGu1B+p@7q>a24FRfG?n)z% zDM&B8CXXo;`cIu@ZV&E_kp(nTm74DI->U;lCx-TvIBhw*X%x+2Ggye)%OE=~@X3g@ z0j^KVHGHMM{l<7vpxkTD{GgdXS?4JD=>(KKxOYfq_B(}^IE6!gx#rOojCx#`N*C&# zH^jVoao4P!9kX!lf534XY68*OsD1p46oPJ?Y=;Km$^QOtp6tH|uq^+VM)=RF5)i){ z894tZT}O@bnd71=%2%>Xgghi9q;tR!5KOD|K1OC^uwc$mvu)E4upo`9Rdlsz!jfke zp?4UcfUk3^Vy2ksB_?XWmwq9JY$7TGWNO6OUCcbM8;%_}*Y~TgZ@nMl{g+~Of!FHX z7vtT5y;7-0gM+6>2cR#0HBmQG~4M5m18rpingSaTd1 ztu_j+*Uuz7T1jy-JXBFG794Rw!}$Ci8x1**IxsE@>(NRaxWh4k@T*t;d2XSj#Gq%6ZYv-SCd&x19Y5$&R z4r?|QKP5ANF4(jP4Ev%6QNopDC^A&<=SL!<7E!`guvhO6?U!kBROxg6KwBa&oC;P1 zh9cV*r|xa{S`+8NdRL$1D<*2V9Ci2Oh(I%Xz++tsx`rGRD0>F6vFQ#=0BAD?oFtAa9- z5{x_#TK<-*2S$+6ITo`H@e})Vgi4q#nhnF6P?J9Q!1gCRTQY2%90UEu1L0{QIv^d> zenZ^aaG1R(!o#H6+rYUnmdoc`zc8XGgmeT7RvTaSynXzQ)6r$q ze0N=nXkJHbj{~paLO9ONuMZKaXZv$ImjCC=3OutgS=yr2M_5WtwM({*k?uC5UjUQM zl$6%79sO07S-G0FNOy$8#M_EtV9`>-iPIWi+Nt%vJHdS4XDW0z_&=UB%REWP5Mad0 z|CVfrMQPWUEQA79wiw|u@-82&ZX$!+M@WWEr0TN0`Y08vo zG1ey3Hv5{uQdxPdH-jg=o0#n6MRI2R2U#}qK@_~lB>b43gyM1(%%C$nczDGzrPV zf#MUl^_7c;J%$=*MV9O5YKoeIO|{v|ia$lEwwh5obCDx5OhbvP@M>mHv9|bDj_T!Lbd?X3`GP6$ z-%h1Tma{Oi4sjyfnu}}IGniA5$FI~Dy{UPwK>v<8PV*R)q^kK|h?odRl%nup#*`>p zDoVH%CuI<*lwFK28%)+V8N@D$&6bmKF=Z;X_luJi1&NBr=|xbLrYIIgRySblTLCY_7S|i>9HXVUnfLozfN%gw`d@HV@^)+S+N6lgNJpM=1O#Z1J1CGU~=g1Q(#^HhZ;uAJ7YX+V9$E7?{ka$O1>aH6=)wgSBq0 z6HwC}Gq?ksX$V;O8N<@FN#%q`@tXR8HHPtuJ76i>r_*E!0;OQ)B&L0uXm@FB-OJ3JW3~`!Tk2Ol1 ze4w$-H8VFDzzeCuK5ZXbkhez?nuZC6F~itBaEmo~kzziG4ReBl5-JeNE)*zW!af_1 zG9S(+!Yp9aJ{E7-PE0uArEp4^nSgc{#@kWT-bX*A&!|r5NQ@g7VIZbR1=4M_b%}XH5!^=WW~3snwFGY? zb=_Lal4cFHSuaElap3P^P0=S(EuCFv{|VEJEmD14k!S}BW=S(}>lpkTYXHXMO{-niP*%|lbXh6GEv~@ zZ&ESJ%O^IC%~YagxHDNaw#pD87VjxJcBG1et?d!;Ri1$5#;fVwC~DCg1E#Ci?GSO( zZ;;CFU12n%1Cj!-@9pnlU*)&)fb{qBsxil?)bZc@Z^hWU5lWx~2fFQ8WKh9&9(ygP zGzh(CA%9S~-!sv5W0OD!+Is4PPoRVC-1k)63;5lapzHdgKnIL;)kmCcSBa16+Y_6@ z7qa;-BkcW3ZxJ^f{%kv5$^6lEy0ZDR{cEy}Z^+SA4A*VSWppfOI5%L7x!0N2{~Hk2 zfJ5ZJ(9y60*y-)y|6Q2F^?#V0U7XGT!3aG5nUNiB4E{k1{{uSw&$vfv#|c>l<;yn7 zb+8eGVkvT@af#KMHH6u`MV=oZW{jXoEKho{=;{Pww$hc-%tLO{kU&W>r)4g0NF+k$IMWqtA!4a z?pqZZbs3lh_AEg4y?T{xS8=@Y@?C_&ouyfAg$aay%T!_tH(9nEs%K>@k%F!v{kh@B ziirUsy=1aFTGyQ@cYSOpS;;@7Fp+%fk)CIZpjk`v-qjKVz5oYZ(D(TBq9Dae-Ihnq zlG%9666M3Qiejt&Wh|A)CSV*rU-Fd8)~Dl$*>VAW%-xr#ZLdY!YqB-4p1?_U_t+_9 z!m{^tU3Yrje9VRN2vHS3`sy8#{u^GgGJ)x&cd(@lJc#N(EA=wxdFd-ZW&a92z2lQ1 z4()jMK7jSPGXYrX~U;h@1nEd34sYx z!5_Phz#^y-R2(IH?f&3EHxy|~ceQ@VfK9cdplkz)-Sz~E-@Gc4au{As-XX9>$(Zu{ zDH?PPk1_t$p3gD)pYOE+1-`vqvvtZHs9K z1uDSW_0Qb`frDbg+6^w*LuhQzSg;2&bx&BxC;W*Y;()_aqYNgfn|o1`?g*BGYeJ+Mz1jFj|LJMHQ{Unag=cmxL#U1g{l z8B;~VS2E3UB{ggYE}h~__`-vHfG=*F{vCfwsKb)Cs|xPcHq83MHb55cZZZ@Bsm;Je zZnmKw^X*ThBds!OgzNp)HD0kp{|+75AVsmwJyQJ26j@UbtkwATl!bM|eF}75x$L6!t)c7$ufuJGS z6z$WFEGgXRxBiEqveboTBhkjj;3SZyEharnV!Gs(Di5GSt=v}=nLceq1l?=dSu_e? zK1oBfqBJEufkA~xv-W#h^GlA}Vd;gMeSxW^_SwyzwcKJnqA1m6U79-~1tRh@k8&PUhHLt{Vpmpa+>aIQ6AWsVNecosHK>X&~&Wr0GQ z9^m6NLWgiaYk8|sW0E+NJ8m5=|0%Kht(w|j8NcBXTR}JzpXR)$sFg{j!y?8m=n> zQ3LYyRuT78*^c*+M5B}C-8Oc2)y=?YjayG_9O|^2<1Sj!I@6fmC>vsx1JWrjPC${< z@j&ar)qb_#6rePeRu~f+(-_2fGmsK9i(p(mbp6_q$n0hd{v9uVxkhCa*n8{`+$RGn)&K~<9WGJyvWI-JiVlk$4s5R=fsHh-v zZgM^7CyX3@_t0%)a1D1G>a65yXcrp0{I;L)d0#tYj^Fa$p zuG{e79Cz6P+H3=NCBoly^xY%|Y`O_^u_u_@rtV?`c-`a$$e+vY&_DkdYwr|f>9(!y zR@$~JZQEw0ZQB@Wqtdo*Rob>~+pbh4|6FUXeg1v+i9P4diE;l$jELS_Z+PCf!N#Z+ zfRte3o47@O5N~9MTLJ2jph0eC3Gn!zLzwg%6EXWNO7nT2gnF)7(gP{)VU#IwloOevR%7Iikw{?*_!Z*t(IH=x0oPxf@uSaLtx9{K z6_*Zu@I8}01Q0y%zL2dNeEXB=E!-7riV1ey>uZ z+W)=(7UI+n>~p(v;Z^Jg?G)DF=i+D5K`>&&OHRTWV)4=J0_!+?1l<-;Rfd5*e(gI=5<>ZHHoyf~K5QCR|Y_^04Z8kZLBag?aRl z%iK=*iajmd_2pzqLL(T4;r-aSN3|8>$NRGkJ`=krkII=(ze_pz)iaOX zz%T#sxZFX#$=gd_7w*?Bwc17eUJ;_(&S51DiOHNiy4j`i59ajJ$N7t2fs;wt^7`t( zn^E;owgw=J zB2-PV@bvJXz=mb?&XUOhtCgZvINGY~@N3_1{M`K*{JBObVx|i|7G`e>(Z?6I$icB_ zVx}CPSDn-DS6>UYUF&^6f4>rZd$|#Ybc75MHiyll3~KQcAW65s$TYHpgcL*OffTE5 ziNSe8%m-e}=iN0~>|)KsGAcG$)lgx-xEZYRTQk_4x%>f&r9#WAq1#9oe#C6~>ROgzmQtq2234oz1 z#Qc4n#34;LRrD;**P7RJH)w86W37CzA@K)*#w&^O{;d^@Z}{N zw9DnEWgVSek=*Bi4?jz(A{2(xlxz*wtR+SKJiCNzeOykzR9?N50f+a`igGdDH)#6N6TzxT@KB~`LXv_&84waIvl}K)VkS)nsscPCrs%!8NHYey z0<2#*XBF1Su&sSZ&cV_nU-kWkPLcy?!i7w2>yT+1e4tyxq&6Pi4lPutn_PZOi96eM zUF)c6oQ!54j9W$&RbCF^yMz=+gzHMj7g87G)Nw;pU9X{^U{FtD@U597Q(P*4)3#=I z1rs?q_Xp+>#61qPX)z06?w<1{s3OmI4BN@7e+ogcw<-wAOqxh~Bjd z$c0UN{N4{43vo{s!_X2PdxrteK1!e~4)Uj8>p6NqaoBugXs4s@=a&N3Ly3ZkH%cR> zEUL+{*yB)bV|0Ig&V@D8386u3y*6K^$WJb@2VIq*PdO+=J^JwWG{)R;J8Pv!nIAK`N3)C-{J?0q~+?k}7G%-`I_S4|*-tM9q^kC1JrqpMa< z2s0BgJXcl1u(sbZpI2er(2aBjLNIzp4u=z+Jq~UaYMJh}{FZr6VpHy)*@AJi7|XRDBg=4H=+hPf=@Vyb>83LziL=(WQ)fTUn{2V+Ck;z; z-yQnvREUdOD^80_G{^AkHW#IrwCC#{!G$lC9$K-r6r!YQB$>oa-Mrm3#+j6_nZH7Q z)0li~K8|KcQB|47B3l>=V}066e5-9Cn_{`iFLTC4roGy{17)uXi8Kpm3(<@cBhKbO z=G8bj!q4VXik?l?oTCk>WKq$RABPQSM;#|u9a!sn^1&yJ6T&}>?zGmJEmMoS3zf>P z6GGS$7S)`!d}X>c2jhIsVy;H2-|53#Uu3GaN6L(IP1RR!6?#3-{$uRy3-)Kw_NJE-7$0; z7XbfkX8~B~)sthaPvI5*yO`iZKHc!WgJ_l#GZyV76d#>p?I&n2?o0TH@6{(U6$!W3 zTn)Ud_JDgsc#EGR67ZPF!fsutQVUT&u8o)6-uH-7Kcal(OQL|29Yhqu`~=}lVT=%~ zL&yT|P!H{6`@sJ1A?t!H`rkvvY|TaN5M{iUBJttbIbj_z;q$?~1r=Kd^K$wn5K|bW zKB4y@15{!?Wab_u3jq1ra2Hxan4o|SfYfU^*@2-0KIA;TrI-(@gI)_s$5j&hiBSRHpI3W2udlq^3 z;IT2985vJ;%;jD53b@Ky0Ee+F_qFWZJ|o=b8j-d}E;*P<>nP`>lmtt z$Xy>Eb`RLcsAjr3{Q&&mqm#(-Z`IcBTo_2V0NMGGdb-04epAb4Gu>QaDT~Y%LEfJp zA0mz3G#|-R;=eHqmmx&??iv74+o+EOj8^0woe4uwS;`?=;5dT^_ z@MW~H%KKHWFa2$~{traK*S(Z=wlVxKFfK_^#|~K#l^28-W_=dD3HSkJZH-RLAtH&HW~P1U+C`P)xK zdh2gEpQ8&OpKlz68!rflIokze28MCO(U`+Lw)P~khZ0nw#KVjcq+nkMcSEYT4-W;V zrD7*L01d2yY>t9TUDbYDL`;DO6_tj0;sT(>7mjLtB4-v_RtCr@;*KJ$lus=3ijL*YxC%Vf!trp$^_$2nudT0TUx%pGfGL_Z_0G*bs14%-o<5Ur5|TaH@} z;F(kd<`ZkH_K3dG?~|GxYG$pd)DS)9u6&Z<+SZ55A{dD@Sj?KH5MRMGa2g>~{Oc5f zUa%HieYxb%f1RZNJ-Yw%DN-~saQc7r9Lics>td)M12T0;{-N4XlIHPbJ0#8$87xmr zkXY1==uMCdl3Hpjz^K-vamM8LKA#9SdffAB=?$@z^RlmVAs?l()6ly}DHHP3&-0wy zKAw-6oAs~L-QDj%`l#E`97H>XeuO|Jpqc3QVgf<}ialsR%b?mA_F6r7@R$9>mVV5* zT)`@jNVZ88$u@sj)|{zXJQT~~D`jNS8YETJIPOd4ELbawi&bdV;+e}ff|z8f+$+lE zRH5fBHItO)r6>zbBpoGG0p3RG$#fPRaafJK*bYg#2z1UEGFsb=rILMkkQ~Br-n2fmjedK8CzQuIXBHe<@ zvH++9JS*5tRedPS;IOl+zb@19ORS(J)AZ0)kL7Q-@}sFA{ls=fcavtG6CxpFcNSF7 zrYox&1JfRM4YPsyM1N*9H^RT?`_T8PeV!N?9=bcXs9}njaUR{{TX4LY{)C~)OKKu9 zOh*#1@0@5elB_k`^DoEuo;AqW=E*`@LT2e(H(JinS$9p`f zx1VpWh{(P~-SN*juPF34qf~slqQAkq)OS?_(%04bgPCIr0=;4#;d029^3Y}DA(GLM`1t>TvZb=!6D(aJpyEn1G~yVl{=wmemL<3q=8y5r^a>keQC6~D zkfU)vf&sB~vr5I6xrwP^`ieAwNMUb>xlgz_<)f+hblsw6o#JtC7(#L~C|f2>?;?5W z5tq{TkpJEJbg+xAEFm^UL`X0kWvCF-K-+RYr=TkuH|hO=6W{Iv_v7EYnXP?^>2AN$ zHKUcu;8F&4@w%Un{)F#sejWgzmdFCfInxNkR#Z6Swk%IoTz>NU33e!<8w-)w(h zOqbWhmq21d?E)vDpP=VDCt6q+6!st=k`{vyGvrPTQ5;W}$R+m|0hSDIjp~l6WH<;f zifUVT%nGjXG7}F`{IlQ^{u##zLmfNwl;~Pg*s1x(aH~>rhw=ooJpLK`+|U&s#o=KC z@LxR<%Nb>2GaM<_H<}6fnfa3?c!JeX!7i1s34a09w6x}=UGR6f8dv;6r2dAEHl<1<;S;IR7oF%_DO=c)}NijzZiXfhOt?>x=lPsxN(LD zryLxQ=owzX#R>TajfjP|2zK!8|C3f1|pt7W~N9WC^GU>~#Ho|>B-R26$6Vxi& z(aUVkVuKHmhLoV;-5BG9crLVtP!LEGJ8GWxnyZa)M5o_mQI~O>OVJ(ztrNJWkrYEL zwS@SYNsZr=hwA{SULl?8j+4=+83>~2d>FS2s%HGHhcOq_{K;@hgYZK_OaManXVlx_4d1&xjs-P^ms zC(Ib*)^X()c#Mtj_7294ALx4Xmv#r~iy0H7yAyR$pBj`F|J;{Wv+2$hkmSBY&gnK=wOWhJp;cZsmkffBFOpi*LAb9OQzWf)J?Qk2*gv|tp zesGZQvy3t6_69{R=Z;_s=0vJty~G)mj*RTeV7X_eIArD#s9W2${f~GL+@?&RE>%la|I)jaXjRKz1FY~K^E)+OG zz_LYSh{o=Jg(YApg(YCzFjm)pPR*0-?sJmWiuDQO%RTCK3e;n5X z#76EaHb?co2frIT#q;U{u_4Z7I@FXB zR;a5((2lXhS{hw+oM=-?l_W!>)?{yY13@80TK`kdwWceKTdIh^<$E?|d+$z_yjM{5#)97+%$0SJ#ab7GHP4*S2c;D63T|JLD~lm5R!qS9XtkpJp^XsLa5i$98i z$RtDNmK3WNu_^kD^Fb|VRb!KXEG$4K$xD?sOFCi(lQ9EK0~UPuGVHpZ1(xH-;~P6V zo_As#TV0tzfS4(15|XYbMn4`8y*#J?yyocnf-pdnho2)8Su$x2lS1jB6q|S?G%Svr zKpn&Fn$RxKSH;I7?q{7Z1rg_EWFHSCKbaR)dgk|L(pN{svmZ)I%-9NAugQtJi*aPP zS|*1k)mp0To@85SAy+pQwjiT29mw?0b*2mZduB8%q4m2++f`BR0>5{2WSMPeo_a)u zqc2Odm!1$^rUdOPHnnOtj)*?}I?wQE%hwX)(kg=#{w2)`zG&>8Ru#Wuj+)$nN37Fe zrF!Zv>Dn1CabC@uo;@}lWm*}pvlM|=D{|aGsZW%-ju_||taP`hA+wMKM>uJUUMxd@ z%~@L{u$lC<1jVpn*LHe>4Z`A^KDrfIn>-M!;pdct0US zxE~)m&ZHaXAS(7NvVuuB={7ymib*$xA=c9!W{5O0Xr>R845KmYM*^nErHYd{%GvQj z^IdwnHKt{@h9rBZ7_ROlnJ^PB&MMb~vd9#N7nS8cYbiHu*=0G0bw3C5*MF0&9>#@@ za?hvU9hE$YyJzan)IB_CUSsU%Ds6P-+Uj4oyc?xl4cV8oW!H=EuT1eRaTma5pK#;e zL^w=j*p_`1-DD71MQCvx3pJxW66rUc-dQVVe455S8ZZ$e#Q*fw5F(PxY-~B=RJ;LK zgx(t9hTiIHho;-h48VcK3uS<%4kfPo9*hK*g?adC%ebNXecv1G*g;JYm4NER;G~bE zAGBW_HUahtv)E9cagw2*0Y{vGFRFkbhrtVdSjGptXBZX%6CLx;p(ARL13WIm2r_2x z;FYsq5m(X}vkvx4h6sy*)urzy&Hg-lxXoykatf|imrRspFu3WtFn-Uu=!Mro?9qIu>q>(?@*2*{U z_?xBRdPrBuqD|Q@d2M3XHpt!nOu`y|m+a+UMm0g6McD{l*Jem#AR6tWf-gEZg?ZW3 zi<1S!IDg*jH}9Y0bNJbBAAK>NK(22sDdvYBT#b4)$c05+e~zfTILD53c;GM>o|a&l z^#S{V=#fy0#XCI%u-L+&?NvN*9B{uN}Tnn}|kzS72*|DS@4yn%(| ze=^5^B^@HDAIjWu1&|wTa77LB%5)Rf@ z5g7*~ILYsD^`kIJEzEW`QlbGuSDR#f5(y0&4wz6VIi^^uNBE~cJ_#7O{Dwd6oZ9<% ziy$f!Ye|9#>c`?uekb;hZ=g;@v>DtWGZQ7_;LJ{ru4a!v=P)8UYeZKR$&j{NM^XGR>s?uC_b@nndFHROt|Lo zsY5nQ){#1@D%W^!>YCbjan?9)t*i*G~$f9+j74I>*~WpSq>A^F=s`KG-co+p~6YB zpR4Cbn`qIWM|aU`4%T*L#C=7V`mgBXAUlM^L^tB5G^E8uHx@dA8OKPqZv!&6Fvg1>Bm0T8UMUm4g`RC;GmT-R3b6P=@Yx1z_?iSJI-#SjG$a=T6_h{1tCoYaxQ^XHcy3?H=mt{Y11L6du^sH3~n z>hbd}roRf$+Y~XlgRe9N_-_l(e{f~^Z)wWE>rV@l{~By3>B-H@V-Dri!?8=DrS>4Q zfhwPH>BEZp1C8-JbNO==q-iHr(~uTq=@3p?bqA@DZMj8+MT-*64%qKv+-j8`1MrBf zVIs8dijR4_pWJhtWIx}YAO3t303F9?aoZuYhwe>9%R%M{_JEp_sYth+LT;d^2rjcN ztuv;o@DNK8++aA=kV$D#r-)ruX-8GZX@=Y|8%G)& zV}a9FOPW?*jr7b`gh!bf*8t!!z%EbD-d1I%9QEbk# zx}+<=Dnlmgj}Ges?V_@)`H<0B(Wb+G2M)%Dxl6%dlq!3Ntu_hdufg+E{Gwq((0%ge z>|!uN^h%;Z8d{6G?D!>SXwg8S#^TTTi)?IE%QAdgma!3R{XYPj$xy^f&&4>)GZiZJ zoZ9m9N(B<=VV7orotP1tA|p70nx9-w^t--@+|A?c;vPBGS&l&ll&U4(FbZXss$$d5 zZ)PgGC4=I%ele4!k8O3hhd&-N*YJfD%kU8I^O-9;1Mfum$%rpyJ$_N3Gx~&8d-&+0%NX}0S$PBG6FwY5 z5H=0{s{1r7fB}w`q16dg?FDKEMMG%y{P0A;)br{Nt=FFT#Eb9;@D)0eT!%~SQ@3xj z=WUDWIqXVP8>Wu{>)u5lmZRoA5xUS}5nv}=XWrr(xf{VZ-oZ08iPB?^jZ`U|(@Sh` zA(8Y6J|R!|`EfRFqu=JtY3qkM#g6Qo`Vn15*bh$sol8#o%+m;nB32vel;7fV9-9Vc1E5~iskiEJTw61+`RbZt&G zZveX}mJL(dTPL3T+$9-Kh7IpN=Xtc-k2yUz?e;L@YZCJ>j0Dn1m&S<6eTvsL=XYj` zXTsaV6MZ+ZdQjvpslNel5?sx929M!e+|TTuR@MsKU!!Kur%A>gM_$x+!(qlr<05sB zPetM|1~8E;bH3jhWXaAKy&_J4sob^N2*A3^174Ie=K|0 zVA2_{pR7EWT6a{daPgM&@HxsQdGapVgUY;)z4KYTy=ZLPPc~7}r*cz#!dsqjLsf0; z3w4mgf5uX)ixntWY@FPb+NAbYs--$hF-b@O-c6RRG&?6 zGlhLU4aHs3^`dk)Yy5hoIn8rrf8^l=pKQCqwEVk*v%>OHGN%Ih_1;}9;SdES^@ci= zR?Yb_pcQ7|O^SmL3bm{yWV0mdTnvd+|Y7RTb@C-ry(9CCoZ1 z7v#olRKjI}7F&U%@ zED_$?Fjv*}jW7%DY=v^Aw@`ym;3Bb7qHhk7To6F0l#+?V1q}l(B5xt$w+T((q7U+J z$;mV&(4&aGW`mq5`Z%aSn)6#oHDh9Buw=X}8yK{t*%jWPw0b@G)QSwRx%ngcH`jQM$Vy45v`HtSfn{Y_Ema`6mzM@GV~>4<;2@F#n;+b@IigUKY_n?zJ|@x z``n0QnR(hAUSfyZFmc!a=9!+Fvi|CNG+%!MzYQkL6m6 znP58=NK2|i_jY7sv^?XgOU1A_s1R$^`1krm06F&5W*tu7cWFWUF~Y87^?RWjiee%mD9mEE5e&U&!v zGL@Ng(643t2lU=%W^E~nuazSJm;Qqz`ZyFnVp9WLE7S|otceH$yS$+P;kiA zKg<*Dh5KZnWRTNIH{$Ix4D>%NO$IR27e>4cVlDdFoPSL=Y$~qtaqEqhl}|I41Y@Jb z)P5?;+kJou(Py1cQ@9e6#iIEY^`f$bc(GF7n=Hs}rR=}I8J_)dQEi(GOA#xH)``>U zBJWo$^66lePACZvxTY)P@cd~=1-PTa!Tn~Syk; z2v|vs8>yai_avh83cNXCm7@Fii|YUSCWdfpD0u!FP8v)+fs%*I!!Ht`ECnnm5)K^I z5DsnCKp&a{9VhwVk`rl-_2)~QA88K{R`KD6*bCIn*jc_wx*jV`lBZZU%z3mYiYBW(J7Ldr8KrbbEEg- z&K_5Fu}Pu9Y2H`vQ|?!-$6LIvf1bMeKYLCA#jHb&n-CP zl3^VA5-2K*m^9plrTDMlBxVO?_1`4)m3$f&!n8S&M4%G~$*?9d4hE97 zB}AJG7fj1zlbTR)Im)dh%2ZVfCJYLVv6C&;?|f7acbwI;Cc-TT0Y$P$kZJJ>&8P(; z*xBlutE5(`l@EJLjmC|al`8X*&>@mC%ZuUpuQJ>x%dp+l!UNO2Ps;AaLC%AvL0PQD zTONgv7v@!SD@B^fo}`VI7R9~08(IoxIw=+PZ*IS=s`5@v8pYa|R0<3)?Qb#~rCQ9{ zBIkT0%e30CRnLaJIMQXNhh3zjY<`1Enq8j1lcuFNRcNf$C!jb}b*<_VQ746KUR829 zcQ9nH=yx6%pVJ$9ABMgx$P%>=%hE+Eb5>QOIX|H8ZtZP2a#Sx?wAIm9cvi}tMHz0U z9n?=`*WYQHauC>e4^9d;Nyvu*@4P#gO77~ zZb)6XWS$GSt8Kox#8ll^ls&1;-CszWwBop$ymr=yBNB#kz|_$h2@HJaA>!*P4|Qsx z-vbWJfaU82LHDNE%) zWdq$X03cxjxu!ki2a9NH}6frkR{A*E7z4lxuK`+LgA5g>&zm@cWhQ zg?x|g?0>;%4$X16{pPSWSQ6%`!z1CfGAJAbV7O4NsV6+3WDA{!q#p1wJQmrH=|%6# zupsiqxAO_+*w3pCyHvK{BRvSyyZj?J^TGH|!Yk=vJMYBr7V7yY4LvbsK2uYnJ zFr?e=OMuZv*#^&8u_O{#McHn+dDz~(fFggTh^hppmxSpS=CyBf2T@1~s7Is!a?;Il zL0xFr)M-EiR(kU%;AmidCioXWsLy>~HU9Oq^8M}8`VY>b|AGhqZGG}31^jOiVWaA~ zD~bx@C#_8TX`Lb@n20H1Zz#yR6m^~>#N@3vXHH?0N zo_AR80awyvf|IZ7U&^Aa)y?~~0sDc;)$OUQKbvW-PRCmb{GTs}YTv4!dl5!sJm1W3 zj2a27-qeqWJ@{RoYsLM3h2aCS_8z4M5(5X7`n9=yA=dCfQM_#?X7{s|RT)FMUzB0P zX@j2(qmhuz`Dih+>79MBSJ^1ZABEvz)XK)v2CL<9GoYa?*z&_HYS-YG_v(RIPTJ!u3BV-Sa2Dkz z*vUA1E$P?{U@Vzxb!DPbWZOb zmZ?l^iaM)K$8Lf+$vF3bcv_eaSUJrmHZpw`P4)(zWVUKk<#iI-`ZUSL$aD>2#x!|a z?yAPpN}Ul)SxMJKa)nhz%{#r0hkJPE z)24QHAg%HEBVt?naSdDs?Q~a%?W?cUgUjS8Yi5&dO~YW!U~-1ZGCfRnm5NikdGTe= zGCb6%QYa&Wb{Auy>0W=U$HvG?eM)GWLqDx%>^QL>Y+ zMSFZ%kpYuBWh;N^*aXx_g;A$jMJZ{g?CkxjeC(H}R2CF>U{W&sGKS4Wr2tJf!L%9H zQQ!Ot!&7pUZmoe(QVFdERuPk@!~6xsB1923nKs&Nr+XNFS^U+;@BqJN*&2*pev?uX zo4u_bXaoI3PllGoS^jrd(mc_1`rLDPWU5X01Co#Jd8+f*iO<7ztNne~(a(6FZr$5x znk?x?h{7|LX8?iL*6%HMbszNdS(ca)^_YI9rCkRsPsD^;FlrN?i5lp-NYC4#NEtW9 zA--UhlayL4adqriq#lK2aI9!XSZ3T52Y%Tx^$3oBO01_{mi~EIvoB>f&v@>bxkx_# zrUa8Y>@f*Xz%l8?aB2_;2mS7MKrl;xP!I(|0Z-%}7?jP3l)0G>_Yf(rVHwCYBPJ{c zDNi_Re__zDy`&I16LOnAlXfgc;h=rmt_c+HMJoio)QL$M2EF8oQ5nMhaR0Im8LKtv z8R3hOt}uNP;+s5B7QIS>yby2IH5TOa)@)TSf&4G)^udt&7RG(~G{>a^*gkROnSzbr z!Z-gboEz%y0?*)sXdH8jTyEL@Xr8WAN`2oBKXaZKcHl1DEk(zcf#SxQA zDE z@_~2!GFJry3|hH;@#CBw<5PA8vnsD{iNnX$K9;iA1NIMKfFWUbFU?4a#+W2cAQKh1z_LbLd5~uc#ViFIPHa3yipn}7$ zDQhXrV~hL6V`!41+g$!n54W)QzN2EN&$`vIk0pj`w6=x z!DC!=0gBT;2aZyTdCw<@4rdm!oVe5##D@?pDi-mMKJl3iN0=m;_z<%o$V`U^y`PJwc)|or!fy0c^H<0Mz zbsjOdj{bcee0=<7w~en<&?qt_B_t+fpkK~;nC@C$WE!*mF1mQa@#Oc5;b*JUL8rr% z)_CH^`&NYR~wdQc{Q3Wr9|T{hGT}@3oB}k0&L~W{=4Q%&_&Wc!qPS z1~rHcl9gTZ$-d28Rf_amhz&;TV)>WjsRYd*(}5{QPMR#*vaMUyN!u4#N%Pmwl4V8y zhv55Z9d!5@I{Y&44UCvJycj#-0Ud3OTYNsGTXayQ%`bNeGCnlMP%xx@*tT20UZOzA zKocb4(D0LfVep&?Oo7N==s=D@RwVYDQkdTo3=+`K-(tWv`iuP#YI}EJfRxnD^fmOL zQcdSA*s{bld&F1J8T!2ly=e8(DZ%UfIC+pH01>?@ur8Pv&@C~r-gx~(bl!OF{lO0* zmbN3BlD)Ks6Mp@}_H$}+(53_us=T|19_9x(Agg$(x$f6#e@H+93X&BEf3kVr56*LI ze>mb703z?=NCzn#GU~)K>{;lfd!=vY-Co*@rfNZI7DFsNA1$uq$|)rJf8|N|FOPh9Nxe;wJt9S! zjQxQ3MVmekGN39IJ1L4gT%~*mJ|ySn3AInKe>_q4S%sHdz2l=s@C76L@iS3Z(b8v_ zv8$j`SFqt?FAWw%y^d6D#^Q3uGoV!lLTkLKd@r{PM@Jxo3MEOU^Qy}+($0`PH9whG z3#tVV?Sdcv8Ec8{ItAFLImrpkQ^o5Q+V*G{C);m*RUNfdpu%Rk_o}jU6M3?F2Gh|g zPxe!u+~{SP7T~Hb+#|%TNRSyNU#0m5^REPSobn6~@HJvh|JxDkKgj+>-2f)G#wNyJ zvUU|G1GE2xv?A5NK#t%b_@F!i7^0@{&B?Ja{uGZwg0%x|$r(XHd5v7g@CGLg{%KG@ zJv>iyO6mFT_CTC9a_cHDe-LPo^Y0YMeLy?pjK=Cq%+*Y2t~yPn+4;V%r(`B=fBrcH z^W*bU^H&1a-nuHaF|+2T-&tT)QL7>ZN+AQ-)H`#qZL!zZOzf#D8?+VCl}|8enaKR$ zGnT3-Zx&;tDW;Zg9b~i1a13}rjH{#orb-=B9T`NGA9oZ0mZirYMO$B1PT(@ohBAdR zC&}Qb zM{Zp9+Qlhsm=rdNdP!wgE-+WT7*Rv4^y%$ni?t>;%xLiz#@=Dn$!%eL@hKgU^T@U) zW=3`7x9yDYtJ&x(92TY2`+B~(G#XPgnwDH@SFh3`o^B+Ykl6HSG3Q0ME41cr(s z*+rNm-$sWz5luyyqt6oU=^#}Rt(lLB{f?aX^XoA`ts-_aLwYtCg;Kq~#Gjn_iVoe9$?heYz@Z>L z(~v2_Fi4n5ALsB4YIvv1G~jUjSwSVjs{}xJ#<)o`;-5 z0@$ewl1-GP2>Bs|w}HIXht}0el?M#UHz~sjP8zzAXe7}G<~5>5AXzFT5)dRuqP!2z z&fXg4$V`=oXOskKl$kLq)e!=P&}P3LXzMjJiOQbig!0rAf`tJ5M&rkc5a6{q?$DWf zcm!kHbw8t*%e^t-8G4V;UI%f#-v#lmUK)VGXj@#dGpy70@{1hJXEvrrC2-Irg3_Eg z<@>zE+h%m!47S-a*G+o(wLvU9`9_?)KxiRwRa3YKN~-5!@>yu`tSuF?jNrR}Es@bn#u@ zfayyiZ}6YV-cBDn>eD@5{KB`dt~Xz^ic7tr_PytAVh39f*`t@&(KxTAA>ip-i5`^u zxjkwi`dtD9zTstH-MnK@D5RY5@n&TvVpSE98u& z$pq`dh3_qhCh*764Lm>#;Iy*Elj?ne+ywtomjHc1B)V1yRIMPy)8m~_UvjMM|1B|U zsAzo^0Geejq_*i#){Ig!I+?=b&mS}VvJ|EsaV{%0Df|1}x|Unr2X3|#tod9VLNm|+ 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�G3<;^o= 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%0AH%gp-3u8Mh)o~N|yX^2p}{v6^VE0Vjwj$m1q2K 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∋ZqkiCymXO4E2XFzA15t! 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

      nuIj7UpWvA1y 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 dt$mgOqe_ceCZt6A^>O`Wp)Y?+w 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%0A-Y8QrK4{2Cy+9*(SCOusKb)!YsBjxO+K#5r)afy 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%0AP11 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

      eVOF4hO;Nu&AcC+WaSQU{ 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

      ku;}$(7hRr^!Jnxv@>6~U$>nNDK(!8hzY`! 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

      ;h`8M2g+o8MGwEbk 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

      >7sLp()ta{IHF^RHtpws4}UmmO3~^yxPuqRYnB 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 z

      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

      ==j(*`D?a>&lmmu^_?wuf%iCxln=G2SEX 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%0Dsyg85~ZQ& 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 I~gB>YFsMy*$nq{>4#HOIf zf)H1D@qrl=GV~osbbcGqE{cy2<9=MHyApo3KYsO*b*o)A3WNcDwP zrdSwoE+4ajYxhui0AC-Z%57Z^X->w-qRuZXimVifrh{e+5I%lvQ}h?jarBSP1fT3z zfD0#+h|~i(_-Z62sJ@M@n3*);ezuq*KKn`$IyNJ7eeV+5?k;40f^b_eMk)VkxAl?h zx}~>OVooA__k{wL+_d!S8H93wd%}MR^uJE{-yulx*AjBQt6tM>o@z7!7~%qhqdpo1 z$$@Z46EtWvGc0?qtjr|5*Ey{x4%JVPdnKb@H>BqJ=95i$zP4un*47n4kPF8}vGmND zJq0M7S(Sma;PxiPTTD$bep{8>;+=5Kw0RcH_|!rwc6pOilHq{-AAu;r3Ez>@o|w(k zOm)XQcZ1SkL~Yqq!zQH^IG^6yMWmI;qAc18kIE)b5m&9dw+ZkO!V|VeQ*@NGj?Mul z(hA}Qcw}+|CVoCmAvVTAu^$$jaEiTaK|;QQ-Ve)w0a$!VV;xAY>1-4)dy|&EWm6=o z%LRNAwJ5AMz`Z<)EP)iQm7pVkPiYLkR=q{Kwom~VGv@3b3Tjwap6?zF5} zvMKyt3C5o`x@JZNVoh!S@VZ{)cfVea{tQ$%%HMb&9vfZ>Bi} zcDJXTdY?TNlQpE|n0*p(?79*8EpCr?g2K9xJPI69Y}b(&NxGBCf7>&z*Kha8<)J-+ zS(G)L-w(@GG;b%A44%xMJ9|rNIV{H*xZ)z!ag-*F2XRIe&1|EelyULhRyqw~EX3=+ zjCxxZ=abi0ZUX(J1^I_}pG)_PmDxW8$I&Kf7*HiCGZn2C0=TswA6M=ynTEBe&leYF z9-oSfW0txK+4VgajTm8KRGr5$QLIZ;N98j z+K0Pas)Tm2Y9`ql|t_h;LZ>AIB#7-FcfWsp4S3il_-4ABRHk*b0M)%h_N-@d4vB1X!AOKNBI#;nYG6_s6o~PN0a?u~ijSXSi>sX7ZmXDSU&>s{s zXxequARIXj$R8EA%I2A42A-GpuYG`)OLE;NsBbYDIQndrOgM! z%|wQnBkA^U3!ic#)^s}NpS3g;StX*?i6$scH^~wO@dtE^`)o$$rrfu_TOPozefxw< z5sQdqNH!j2p;}EVBj%0e_o9jyi@j#|3_xFgo2GvZKrHMW|NAQl*qQsjKN1HBsU^q` z@=^}3hr(!v29IWjXE)_+A}c75ezp_>+I1M!UJ`|djJ6B1p7;;{vJ`U0Ljqe`4$Sn- zt#%>>Omz;=saE_yw7r9WAAGho+Qzoo*tTukwv)!TZ6}Rwvq@t#w$<2Z)Fk)U_L-S? z&U;VKedcrSzwpJz+H0*nm5;R6F3o6AK7%TKoIW#C-{C~x*{TBzV&=Q%*n1#YKZ8PN zNeSDak|Sl7q#g*;CljCe&jf^7Q3psslS(SQ|42YG0Y3M?5>V>y2C)EeVM;azibNDf z2gvqQB|S}XH?dJwkpz=%RU^CTo{Td>ZgjHC?*vrw_A>!hcsKTMoWweATAf-2*)$^l z_B8R}>x=)1%>6HCpr1$lKWCt6e~+}VN^snBQW)+*>bWFZ3Jcc5p=)OOOW=pR{;0DL zZVv9-BiL>}?r&b+pM8N^dmNB|p>hP~YvLqlH2(K-w{$fS9xH{nB9o{!>{K?irV6>&-CTTP3|!~zNAdGm(@)qSU7 z$*T@M{G8Yj_)W1y{UuB@>t6E-WyxHeqM2UvA8$wC>k>g&E~@p|ggv@p5YHfY!g8Pj z%!(7~dzI88M`&H94iPC0Rd5d5ZY4JNoc;%lAI_U3q%Zxq+`|J&c3Pqzrz{T7Q)Y=k z_%lYT$ssDe;Kj`$9<7mj{AmQd=q@r(L7J5=YTc8+Ye1HSMTtEC) zD5Gu*+*~|@QO26iMNY@T`Ns3r4S=_W?e;0ZFuzhziD5#Xu|4zL} z$6!RbJ{|?#cE#D&`SK)uuZGKgC#7s0Z<~vlH9SliClf`ycx0ErOr)d9(Yqq{2|l~0 zin}wCa8P{FN^~20eRanvd&}Y3K=u*r9zCfeT07kybQ%Dw*wtOu?CDgR8=%7w+m55E$`GE zIkO-OwY|$h5K?WYU-?JuSN>_A&_P2X3|9Zu070_;Y=A_<-h5C?<^`+wHaNapSo~-C zr!32&^MB4i0)H=^O9+by{NMb_WF;**WCes**^b(?dcvg0;U<--8K5zdE1-Oo@Ur*J zacRuFRja%0g*>aLw%AXRUh~3bb)tAOKNJQz#$>3GmP6CC)9ub3eO{lQaC>la`acaK zL=sFO$jEgYnoE72kl5%xg&hc81+>46Fw;p& zmVOyw))V^>Leb9}o0MEL{t~SHATPv?UPB{W6 zu|3t?uO5hwI9SLcyodR$OR6`S$G@$cLVLsjP@aNLAz|ohf9b$tCm}L>>U72tgLdZO z#G|v;8Bjshp=?(nR=zDgRGF^X$%uF#vK{R^X&s)&#?$7|K8!0#Ypr-+q}6n-O%}6_ zUX}90Y{s|ui*uImh{4uDszYljfLZA)dv|bqgP(oa8k5Pnk|#b>Tp*V~g^{`w6eGK~ zkY~gggTjaf#!z4Y5fWlBF3DJ8ARJLJEXi190HcIu`#}o+V%(YB%2uKKbD~uV^!!bL zOP4C6ckXi%fk@1CWWY#57%yR2COgqaiiQ4>5rq7dKQm!oTke*^jwUiuuyCWlCpdvA zNk2omoPUUxST7VYMgL-l;ie&Wx?I|u|AaJhK`_|4?_lSg@%_~YM2T8D^|dTZ!^$|D zt!>`(Zm~sGWTD_AZ)#@y1N~!QP~1KsGzEGV|UzEyZWh>WNQG_n+pVhyt#EITg2SG;EHh?Ia!G_r_yEXME$XcO>xF5EeW$bc?+FMLDbA&-&SvTZuE9dfv z_FQwoTxi^{?$A9Do!S1(EFGGfn3IiStyGgiD|akmL!_}uLV9O8;39odvZ6ob(>wqh z8=*1AXE4mu?9+UzS0&IN+pILpBiTu(lgmLm8had5&;rx3VaPsF6=88Da*j&VM|;B< zxCU*ZjMG<_b2F@ak26~?KdJm#w`gK-^c|UWjA%r^Olslq`pwv((%?9$kfD?vK&Mo( zB6-!;dy-?J)!2n!b*w6KRsb$Uv$)F=QsFcFO*D|$qKx*a)KWDuiRuE;^}|)tCvG*^ z5|#T?zq)&3j0qJRp&GPjpwnlM5f{p1rVay48X?y%N;T)j(XxD=ujOpQuG%F#w0Kck zWL2#um%xeh(y7P!=^EtJQ{Q2Z5dgWm1*Uodx5FZ(t)RUM3-u_C2e0p|5M%Mpe8eUN z?)DBrE9_)tIq3Sg$5&&xm^Nw6B((s7j*TV0Gzo`yd+oM%mtwF7l|lC;S&8<#UqB)8 z#lw%Mwi#{1F&yN!T#~An+%YLo zObQ*;LIP@xje{~pbkhQ&(sLdaLn7#cMxd1tL=!1`1L*IAG?E-(b7zZK=@)mQov5be z&o{tPA}vw|a6jvv8%Crp9yXVZN!$wAA$pV)5Bo@MKx$%E859M6#SJsd@(4%J_L7~V z${M#uj_Qsab8YHW@(i4LwoiWnzYfLz8J&C~C*0u|Jy5bLUa4Ng+ z#KUniTl?|>uEVb(1-ul*;*$F`^){8S{?A-QNWy_2vvc|4_M#*5k028dO&6@SOv>Is zxu9#IjqYg+hOF`glul0`WK=;U_aD)jilo7<#spi^Sr;}9n*+&O29q0v-KcAI3MH@X z!KLg%STp*`dc$Qw$gm<}@8*mjaw?^*;MA^Q^M89G@$MqvodY`L_kY|G`!^?sze3AD ziNneAe|ftureQSkmfJ$pCJ@356zvezMf#lp%yl{E%G{IEm50sR09&|$e*lGpgB057&m3_ghF|fB5Ogm0@~Lq)^bg72c@RS4W8CFvL$7 zQ!+#2i@_IglD4i1%hs3WWd!(ST`ls{>IM<&`yM*teQnc+PVO2hlb1%9ApA(;z8;#q55W1K@Y<|6$++lb&pzX`+z!HFeLy``v)Atv zTnvd8!uDh*GzZ-e1CdQD76f%DY??akWB5EzG>FBLlTjJl9PYQF59(PTz(V1my;JC^ zmw*3C#m;1oeW8yoqyDS$;Of|9Kmjx!Fn^@G{7t~|_t67(p#PIAnfy;XQAsn--`=`) zkzi_25nEBHQ0=JgH~_NCfe0h&zF8Yq?H2r{Sa`aCaGVCSe%Q*8-#2A4mH`I1IH1~0Zxc6P zf<8YmdZQf^Y=NBS8cYOopi`@iRAfO7IN^x^jQ`aHKn|!lWu=crlA9tN<45A${m}*` zrVGs#8YwtYl6sskPM&_uZklim7I@5cS|fnN#wjjHYP3ubgup^)vf@}HPHkSa{4ll@ zJ&oE`C+CA{M8g_7#H`ltKNT(V+;<6UF7tcUhqS5}c2xuz9)9kbScUJln`1SbJfyAs zm00gC@MJLnR{;FSEBH@d|3A6f$#Va7Me>;mVyxsqKMqt5G{8=`RBLvB^=`lWi{v!Ik!F z(Kual8CmIz>($P0FgvmC6p=;53K}>0`^Lc)YE;*%BdkOAZ6-UNJjbSyb1M~!g~0`l z%-0-B^T--8ctdbvxq(c?BQL&kucO-0rVO0=u>AnkD6%%vJ4DxXfBW98{4cXZCg#;& zW`|+|+4$Jj9oa!2{5u)PcxUv}w_JeLKP4-F6*A!FI?@8v?esgpz;&z(A2i zHXOV+GCSDSWy{;t<>2Pz47i6QhRd9h`6&=n$TRD(Uzd@&Aam6!#K6|@HHogNvXI=S zxRqJOz!8shpn>teyj@8X)4;K>=PgZ%Lb1%v;97-IEhKf`Ft1XAxMo$)S|V#67_++h zT`KFygK*OEy%laFP9rWm94AcTD>EupFH@e;D}Pdq*!1n2FFvd(FV@oXa5Xr(C!W{o zELNXaHO3F|M5b|Jjq-$M?FM#{RO?KAr!cZJ1?K>?bwB+jqxZTS+q~5dwW60#M!dv# znNWC!@H+j0-~gxY&;Z@w z-~Q0Vr^SLkDJ6cOfDL4lSs?HMdsDb>E@&IBq3MrLuMZ&h{zM_guCM)5Z3=axwwPey zIade9n338+q>;qvoPcmL=2mQI@$lf|#8&<>#30)Z5vuR!LO9`0FiP+ECk7OlAGrp! zU)tih=SMO#B)`gZs}D<4DWDp*0t^mS=i4;u=HI(Up^eQ-PbIDv3WzxU@%8rj1@ySLwDtSIQ z%)x{flIboT57|NCDFn3AF^Gs+o=@>imqgDEAsXy2AD22bvYvgNmBlaxdM*l_&n- z9dcI>0VX%0e~E`b=1Zh9)~R@jNoYYrAZ?&GlA9=)1dy2VWf}+^fL}PeQ{>eHAwk*TP-z3*iF8CE`z%mo(Gh zh#pYqw*66~EA}72NB`#f^Ygd<18HgHAL=45p@sMBw{dXH^AD= zScis2twfpMM*5(?jr6PVpo##Kj7&^7yYB9vM*1-JqVnh8MM0Xd2}FFPrsU>>x{Do0 zpwN!F_mj#9$CO6D35!=BUGmxoI?LKOMP?Po=RM_I3{ZI9h_HT(@UxvZqt0TGWlHXj z45KQKB;IaAvgQftSyys++ykW}%;n{4t&V#2SUa0G%85+#$lJ&E)FRg^RWH>n1?)6v zUmwzOwHvPXEFhKqK*eq^Ka>ZIO#?2|2tnEXh#=rdPNL?6WBHXuz|+cG`;!3*715xS z)oI!>j!NSD>{q1kZsAXE{so{b&^W$7X60ZwNm*fXzP$b-Gh8k%hW#wN?*14kW&SrV zyJNZzuE3?w;6c_s@PXYCH0ZiZV#jaSLRjpK4M zz=xloiKk%JI?t_F!&XrMc>;;{uwf#F5iMhXz>792C97H)qyQF`jP=nc`?MypMuY(= z;=@u8pbwU;QX+0e8{~w+WJ{;jPSR1M2kkrTS|OI@ckopetKxR}vDUJlFOzntIy zq9{=V@Gk)Sua->O%c`{27t5>Y1VF0D1+lDX2+=^jbBcvz#Ag%w1$|TG0^oldQn<Z&Jh9-}ZqFk{SxhUfLy23m&Vn_gu%=rtbCH%jjryjNSOoe?f3E{&NZ-n!gw;4^wOn!#L!-)#Ar!oR0)={DtVMG z#MRTeyxgT=6E@k`w?L0qEQn~dm%|XpAqGS&foOnXoZ$<@XuPZe1hqd58b$(NJLPMY z)Wg9WwAERNvABwj7H0;Dw%W||q1Xn2ufi!+>^R+>$=jurnN3tyr%sf0JVU#hMaosK z-|zx3+QlY%<+NKk$e=`H5IbquSigi}7`uozfoZtG4l{#T7C|+#SvYn-#}27OPMX*c z)Sr=0(2ZK!25^`6f1HE=O;NV2or#r+o$Y^*ox{;scT}p6itMdWnp^mP%XfP(AQkq1 zVCPFYHZCo&FCyKR`E%+-v81o$yIDmjb>hbVW=;U@hU1SUKpa3WM9%V(kjHdKN#(v+ zPGjvGok!HsTidov+$q_1+R95uoP$C$)b!F)gdSp*)H=D|#mI(ihr?F4d+7?`W?YAp z7&!Fm^tIqJ41HoggAvkJZ{CuNt?EP_F_Mp!;TWBqvT@)epJP#e#;3yNElx|EJrmtjWJ>v2V>8&pfCJK*@YED$f?jp22jW2Q}yj-CX`fRE> zizb!lvCkD&!Cvxf7I^#7!f1DaCo?^d8V?hHNa+^1PxHRx=;y=Ml-HFqhz3)v9KF4# zZi~}QZMqKGd0Kn5drOjQXB#Cu8RxTW*~B?Td9bR0?MD(IWv`A>GuYS`_@Xw|p(3G= zf$zy%%RdxIy~g0wJZ81WsFSwGjTbEOx|I|C=8;Fun6@k<1UCjUCG&Vm?EvG=Al zJq+b^FsLmVz1PIS;dXuXhz2_KjT{So!rZdm zZ2|y%Ze8LZ|KpS(<+#<6`Nls$Rv&VV8Dr|LojTAB39^##=@+x>v_^L?wodAWH6-GWIZ5EP`(=0O5;EK>27z*xufF(`;t^yMOo z56Pu4C!(?=$QtJA6WVS-AuTFqumwEInK`cX&1FSnu}1B$#P|{)r4z`j+!c`PzoxMQCU1XqoRw%;KLZ;qQVSM$6tghc<5v2{q!9x*geI2y8(dj@z1D^uV$jrQ=|}Wf z3a^dU36V7=-3GqOUNCMTbdAA@QII>)C(wdD2X_f_IrMwDh3y(*`M!Wr+3gJezCfPn zHn9BdSM}r`xQYGK+33$qoWF@1{^NMX{-EFiV@XABX`Z(-&7n*i1tuYb^B)=IsE}VemrA*nbb*IPl4ZW}Q3cIE4B-&K@CL3H*A46>zgG0BR6@RGDJR(d_jnr|KUFRV@a@)3#( z4yTfn9I!HASlIP% z5SWOaBBBMHBDHQ%zz_@W&Y%;Ub#w6A4=I3fBDuaGhg!`T$ZIV!_USX5 zRWgDUSZQel3WVDZCuXR9K=U2yVJf!aNclXDFv^^S3FXQ&w#ipX65oAGF6i;awJZ3C zi!D)0wprTo9c9b3K_BJW7~K7p$NG&%QVQCNd!}c@Yfd|2upkv%AGywAbI`H@RJfu9 zCum6R5hs4tPCOZflERbwPA~n(4>7^E&?TkV&E&HPq^l`9n+;hz$MGiUg+p-;UHRPy zcpUrT6r?mZlwg8sBE>L44~RW zGTl%_aUv=4w(24@3d?sSRJfHO-Kq)w=MeTUlXwmLXr>IUPT;)xo3c|HAv@bp(u(~+ zUZ^mNis}nN#YTcVNc!{4-8y#@V)%g6R1VQjLWl!rv-El{ z+NoQ9Ppi^AiXsY83Hm*ld+|_3}cuQ)IAe8Gt?lx z>1;LmjnaItGZD};ankUbuBd_ugOBzxV4(xkd*%*HtY|$M>iwKTCu+?Lv7cbba>&7+ zHLa34^TruPD)xUEMn6*AI;RYuG%zrdS{<({JC9<@^Z5)8&fbUMVs+5hN$1O`n`!iDY|JgrPP;B2iIX)`9ysEat(?} zahZso=JCI|otp;w_hT|MJ+JZDO}5=xmAz zT$}KSF+c^mJ>zm=P`Of{acG2cN7odrNsO!0mTPbl#ok9Mn&<9oPC2U=@gh8`&ycW7 zFmUI}&>$VE-6n0AM5=fl%nS#EZ!(f$v1VyV_bF;XB15zvTFl5$k#7l~BCki=z2qAN zlPb4PbKi%+xTfj%`BWSwIC!n@Ut#9eG#R8sX2YUlPXHJ7gW@zf}AqNY8W@SAJYpze$Qd#N`vYiOX_lfk z>Sdg(1%`7P(4+)cUUR8$V+FX|^Q6EcK<>av|gSY!Y(hawN?%Gwx;KLGkR= z0uLOrT@d`nU(X@?yY(Rs1w|2xpi*%m_ z4iiq!WZX!Fzw}$*v2O86QuV@(Rj8BXV13%|VsaZs!La)iHu7PfBeLXe^@E%E%)6?! z1>~CTEtDUNUn3FI&?VXjg?4M=VWCw{v#sYCk}Hfj)%wu4tyK0%%iUz9Q1upS9rqi8 zd#t8EX+o5WhKDKL4N-i$Br0@6Jr!n${J0^OFuvx%JB*o&A-rR@Rz(!QdsOjIU3aL` zS-G8=$Z7gd3C7KdovghO{i&_`)MG&AmphBV&!GtSs)Qznj480ek?s`ZO_?jN$ zWb%+@z`pn~LAfc#l^7nvW-@hqXje29A{f7tLHZs#6}p4Yg*B}Bq;q+LqRVKi)x?>T ze4;{STNB1%)-kqF=LR&;Fw#D^l$^2(-X>xiif=olPiK{!ll#NG()zH#q0}PnT%i$U zuEF|^&F)l1+kV+d;1nVl{92U4i!qp}dyCuUQ!U|mtuZ89l2`%?)1HSWC239Cm(r(= zaAMVhvMKWBplczqBrT4RuTralvql*)bTS3nOSW%w4R01wUHN6x7YWBzQqNX-PEqH$ z&L9B|e?>_u@CUi5&Z^%ajKGcs+bYJ;k zxUkQT1=~~G*pO7JUp1Cd($A9THM38HpI9gLPFT#-7U@H{u#{n}ev+PTMeRZFnY9OA zAkcPNg9q46<7M@+#vsS_DFTuq76|E)()wl~Y>ko)Y7aFU-!w;@g8}yM0xea|ba*%Y z%wm%n8+yckofwbAewUEm(eWn6p(zt}cbMi$F@*DypZh<64V$LkExC?&@(l$t86Ue9 zG6it5e%^6_8LLX-A@uQb|)W;_eb6;-Hj5GRcM zO=jFk5uM`)q|!vdqy6u>0e{ni=bsPucWILyEh7mmfDo*go;%U6fNb}nRh}(+M-iA* z6amrfTlb7b2%f1&$T>rtQ5%xB+dFuYl>9j7@=vdB7ZsB=_weryFpxRPN`4D-vJpf< zYt&Ou9bX#BD=i>Xormx8eXdMx*qe*ygSWq^uLpU2OJO~1t)^TBGjn3iHk%Dy?STGb zjJ|Cge~N@-OTg$Eli0TnR-(m$k;1=7Yw2qCu6T`&-mz}5|wtP#!|(wzZF z<0DD>AYakT`xh9ds_Zf|$>%1%^4X4hX;{|m#+)mS^~JW1d)=znA18~O@1*m{3&aLV zFuNFO#|{%6BJ+rH#KBufrZDBKi!j=Ev?vH%W;5XM@Y0))CgWEV2VlY6zdB^)vmqHR zY0A-5pH%B^@wzgJ*!F9`>WnzK)9!OIAesO;$yaH3TE5+J=@~H!{FO^#mxk@huG+Jk zG|W`lXFRqKFu*blWE$Kd&va+rtB)JDG0P5X0q07ijz}!*9e0NDs~jO?YZIBQdONTA zHtZa-lttB&v(1>a^TFt{gRU}MlT!`5oWaV=2RGFfsUuvQC@Ug@8IsNlmCXky&ApgU zLBdDQn@*>oCC12hat$$XMDbbEH1)&9XLiS`;Xnn&Y`GfQ9#}Z#b^fnBFZ_$rVp26U z-K=g32=v;}jVZPVO|X*sXl{uPm-t56Br1$mIIfu0AZUi0^NOatHh|rCbBX>dyQ1Ok ziVNJ9Whu?@rQvN#-nOF-LP4DiFfH1**&hANW%?M+I6^IG*d%;LT}Q3%HkrppNwDiT zG}T8rJVoJ1l^v%3#fN?o3Dy@XYi!(A8@HmmlqY9s2RuTXOs%R;*}#dCpWMFz+4QoU ztitYK?!U?{9d;($?dd$hgOF@CHYS~4Jq~J3aerGMh*SJ7XKG*V1Ta~0<3epCZ3R?uOL*^=BivCH3Y9wp$q?5D@&h0%q12T=L8kRHy{`b$CBOZup-4{y z!{kP})#ir^+7ho|51tF9j(C~w2m785)le2%9j&%{3onO3IAf!30<_)f2#B{WNW7%j zCbL7pyDbzkqEif?N7R>-J5PGj(hoG@$sD!0+8Fg&4B@k^Li`lB)C{O5@?;nk7TPA5+grl6{w&Zv z;7fR!3;iNS(K5`NgaZ$Uix|olYne7I+EM#X?S*5D{ zt=bAfJl88ZbqJW7FFY_2>Z4f|ROl~E{p~)I=Fj>Sp_bwChrN#>*+5|K zq@*E@k=}|u8A5HLVtRGX16`T!5_EY{JScC!NLDGXoT96Mq?h!^apr$eKKy!1|0o~+ zlJ?g5HkT=AZSr4!(oKmFqnX~SI0wBDb$*<{n@3(Doy(92^KFTIb> ztCbRe^*%KFI*K%-bzw71`Lleu4edb`HGG2mT|Q*KO80D?q8^Ra{HuJB%Kh;8YY#~L z>z4fgTt4vsy{^W@Jc8*1#RA0v zL4Y6_Uy6w3Ffohj5eM65FiH36=$nfdW1y*3)hbb<(X4)3zBJ@DTMl_{zLaig0&;EZ z(%tiTh&BmbR7~97*|uRHlCiY{>{2p9$@PNKSsTYB_4V4?7DL1Vd+bRr?u7Zuab7Gl zG%uZ<7+HyW&aN2)^Ld+Kg|$&e=Bt&dtj@}eyF#JCA#b-1ReH6;mM{A=Pf6b$QnH@v z$@3@5K{>;j{o)k1`n#$2EU_eKhb^m&^d_jLEUj|e)X3^0PG)kJE_XwF7~ne$tOW}B zsXZ;*`qPh;AIIw*kF6?SLu+lW9yfSN>hg&U+Z#FOyp6JFy~iy`4YI_z>wX6C)8O zPP9R!aur@MUw(*@LA5hfZgJXDng{5GiGpSeY6~i-5kYApsD09B4ucpBk~g{CN{P~4 zOK|{p4Qiz-kV`X&f@Yv7z(-~bp_iR}>Nk8;QdR9dFK7|2s4A4vOjOoqS`5)}5E z&XpuODqxxyV-!&(!{W}xsnBN_bfJGi+&K_qLfS)4GuU|$cOCN8-{MJ9|G@WOFI+@WwLbQLA@A-dzqJPYkQ^DPoRnUee`G<-7 z-W`OL3q#JMdJ@E$sGgcwHJ^vgIglIMlZS*ewYfVPeRLu-Jc$fEAT z`O4}Fm&^Uz=lkA}`pp)f$L^c4HTR2+ds~jrOtCL6_g#dHf-zqcY&G&V4C{%>q`u!s z4E+e8#IEp8h}WyF{X&-hr~*y((5BRFL^@(uKNxH@?Z(XW-e$Mc*Q>QFuiQkH9MdwY zkZ6QMCf;6`FrBUA<6ex-$Z-9>Iiq4~s_fp?hB-N!jL5ZMCu5DpYEfCId?i7AR53bR zvz_!DZFtbE+tl*68}FIq7V8V1Z;6OEJ5syh1v_VUWpc#WLKZN|YARhF)tr~noYYx? z_b@|9R}h@B)Kz!kqC2qDZpN0xJREqkb0WuHNcJ)+Zk90TyyG(C5@ZEeVA7zv)F^#Q zPGxeWSX7#`@z=(TbH|D2u!jZRcm*O_gtLTIsME~VP|S@dZOFXJ1`%9|SIV3y@Vf#Y z+e*)m6@!jq$PU!}%sJI?0~ro7vdk*HW`kiA-)UNSBty-iLv)ZVAyLJU2UM8I=-|aN zX1=R7Rn^IN=DDrT^H?L>>S=2u+LT6=5W&V5%6)J8S|;9#IX0!4^<@WDZ9oga<>IO| z@0fVLN%=OgZEU5)xxHSun{qkgr&F`+9{W&eM~w(KKx(JupWTg{CeDhoNSd*`yNIMG*W+{iHM{#|1Gyv9-!OV*)(G-C8@{mJ-&7M%_*>aM2sX+Kj6t1kUoH6IEF!y60KEr$;L->5Uo9gu$<)LVpPUwYk zobI7{iSGHS(Cqd0&9))^`$T;J=#s@F=&b98uL+mVc@yLIX*2Hn?TQXptb?6#>ALH@ z+3GNtjbjw=+KJ6jcK3;w9(2?T14fit;zkq?10TJ-_-=zSY7I>ea-2uZv!JVlQ3-;=_v zD+BKI6DisVRHZcGx@4?635>1_u13!vya+_~Gs(Tsr!a6~dz; zPTP5?@@UjiW5p6&z7tV&-np$&CHSj-(cb#Z!@-~rK9N9D3^R^~Ujkl-n(I-p4(>v` z_JJmt^Sdm^$Lz2(h}i?3Ip94Jjo=fLX`PRAD`#rbU(PxW!FZkDQ9(tn6uJk)^d*bA zw90;DmDG?i$See?%`%y*oA9ratt4y9$V-GW=c@P*%(YG&z42|H?+u!n3gyc?6^^?U z&`_LHXH*m|!P`_t;|9st#4n;1H61&GmgpnkI|NdyO)_z3pQAFRR3%!X6%}_g&~_6T zSU9p-#b5SuMezfd#ENb4yNF)dpI#K}1*Hw9y%lFjVO>Y_=NVC>i>Qp5S0q=7IeF11 z=h+r{m0P~77O}dbn7Xj&GNMyEsnOKAy3_?evp=-2N8w$HUO-;2H$X?$0<}7>(<0A{ zk$R#}ehD=7ON0tt`GyhTY3M5Paj=$EqgkXKEx`t9yJ2gSy#xEWN{BU;zRR}YR4*~H zPT)(XE2bGd#XYMio1Kx<_|f44ja0yDv+APkcf`W6*tB4oWft7%H6@+Iy!m;S>?kj7 zokWYhlVhyU@z~{7^-*3bItAwKpqEwzgewa`%c8VkK%zOIoY-wx5SDuVwC(tYYDAxb z)}y$AOV1VkV5I)w2=cS7FI#D{e`V;SNTY5DU+al@UKB_cj!wLuNf zBZhfmE<>DFy&ygx0rhj!h@IN)Y3lpMxA^;u>b?g%5(o>t)9)t`t$zQV;hHkeZjbX5 zKROZGv3x%v5j>EPGk(8;2l0+Q5gE_`CzgX=wjcYK;e#G=B0k_}%r=xIy?bFClRY;5 z#`qFH22ooeNhjZaMItM|x)t2I@!`}ScA^TuE01?OAVhS);N}Pp`LtrxivnS&qPD=4 z&L4J&v!mIUhhKV7Z1}UvyAa`-uW{vz?!v$^+Yr)B_k{G@<752-lgH@$hIM+Rb%NNX z;Dx#ShrxTS*RdU9CIqsq_OSJH;v@YmiKzS^GlaS4hTGn`fb0OBg}2J@hJ|8s;IelT zeL)nJ1&v|8My?$mZs8Y~C~l!x!U^VUX!n#Df{BHqevb6014}9gyl#@oMa>-`BCTQQ=uY9+kzwyW z5z!nXx&@I{tnnGn$+KRpkJ=#XPNb ze%NSl(}~+5b1rq}mkLU*B#aI0`>pk3S-ZPQ48j^lsQ9MHYIgqQk6hwF{Hp58KFfk{nD{>FQ zx4a?b*dzKK2c8f&Ag&;(yB~HM!Vp5K`z!P!OGQw?Q7=G_Yl$YSGOehSU9_5kn zJK`gfYKoTzIC9OQ_KwOp#$(1la*ffDIVx>3SK z8PbJOW+MI}@s1FYUL3v!>XjWg;v)lE+z;VUt4F?iK4jo5s z9Y#(8G>C9p+l%3{S>L!@G<$D9CCip2W)+ZXeU+^f6DZ+K#x-A;|3>T@r?Ssn(SO7` z`NcEvhzHLg`zRt*LptepBYMFzamDij^`Hy;unR^r)^o_x4!P-|JPlOZwS6jwG9nhV zciW{;(YvCIm-L-Ze^LQ~n%f-bMUak$irEePdQ0&6uEh-4K2lmuPkQW(_Rf#SISryDL?3#QRYQ$(E!Vd2N@lf8SmZwHb! zMmj~VS@V}y-@}d}Ct%3hnS2sb7v#Px-cYFS*5;1AmMmX`e|I!{gP~K%Ix==lLFGC# zgLRFeDLCZI%$juM*z!u{p{;!ic~u|RcwTOFk7t@5ptS*5zd&}?LJbI9GM<0SVW_#h zo`yPDq_SxW>YE%*20A^3yo4p=&vd9U372?VR`%ejcz+80xhXf*ORe5-P@&P8`i^bl zcrwM+&716jg;r(Vno94Kl#XpZKRxGFRr6(;G3&LW_H~w8&bP+nN$cXaWqfv1Q_fe8 z>*X8!3+~x1Ti@}ds@`QT)3K;ox=b^3;2Wprv%Bru_zKMO@a)k`Wk=PUt;;J_{p-z- zms+xP8eNIYFg12=ODZO7)MqUqi+(CNJhNmo8uRQI;xSc8`$n?fD%pVbED+!v5W0G# zy$cXyx*9b1-kZfp-FDv*wDzPe5VBr>)d1?PqaKeF{**OU|6C8KMo!PfBC3f`F9gD% zD~3n7HQk4MVpC4srMWZs zhc@C9Hnjdpx88Pl+;i}8q7ee{mK!G77|HW5eKT1t)@cLGyLWZye;V}sO$N))_UQjs zmaC2br7TB61n*E$1_;Qt+sK_TON6pBq(`MG_ZqZ8sUP0^B(X!%LMhfdZm)T!JD#7M zJntg+pvppK_|Ov`0!*xKv@%5vgb|EAMspg1cR*uhav%ns877%X=aeZ8mXw&?N`(R< zo!6K%)r+gpNilt+_kM_&2aNIEV#bl;sOpEO@H`WqGvU#v_tbXAl>ygZfVCU&``2@v8gUXwo(O zpEKbO-e9Sp%5um*GFJYkSKD7F|1W-M{1|{AiW2g6n=;X;dty@(5V;U6AfQbifUFJS zvMYG_QCdhQdje)eIc?}8%kK@ZOd`F(I?VobWS4IoslS#gvk%}2HLZFYn`@^p885uDWOC}b zkIeWnyJo`iC2&B|Bc0erxks`xN&RlRKLZ~Agm-1>6W>EsH)$e4bc;9o(8?&elPnib zzDWH?hLvOv*Td#mP7(eCH!wSTAxC-r2L6(sh1FQE)Wg|jLfgLQU-P-D2*qG5z!kjy zaX$AqInckZ;HS17Cxz>j#!5}^U{wYbJ`?=^q3tcW^4gZH;RFeq;O_43 z9yGYSySuwP1b24`?v~&d+}+*X0tEOT$T_F)?e3d?&+Y!k*!vHxT2-rRR@Iz-*z(dK zYKS0C=eS48HM9(i1%&B<8LlsD?Ep40_({Bt4(x<>n&cuwB?tKa^i$~$>3eszOkt;!q)QnpZP77tq&ifH)wpsGXt>w zfAVzs2O&@^7f+X9LJW&z_u)^*BszdgqA+02rR@40das$k-DCvR^!xDgDYpG;#qz>!v2b~ z&P}24u>ZvMF{r5z#ErN(AX@jbK12}=UAZOo#C|5{~ByIu+_1*vi;+J|3RK$#xs$3PN49@m1_Y*eS`io-FzgH4bZtuY{XlR zTmGj7{~rFHuyh}m%e5Akp}yTi4sR&T25F-r2RDSko&1Rb4Y(GuchHX$`ai4G_i9B0 z90In!eAy}A3Q6G+v7;!#_>vD-&IrBh)$KxlA%D?CmI$DQY?wADPM0BjmW*s*NPFZ4 zjMTcV%Xb8I4h)0CyoZs1$p}L3s^l2ykv-$v3tx>DGdc(G6g~r}AqC!Zn9aRk)1&zq z>=EcHD@nx9I*}(1sZ&-fz|z7hnA&})I~B(_hv(?~&f??LX(jlm)ftW=t1_PJ9UKn) zJH|!-Pk#(H$A#tYg8@$b_k+!UbL#&kp!{?9EL~||3&9B1Q*jKMPEiF3@z6&CNe}@( zSUbBO&s!FhEIX%VFQ(Lnj&PsYc;937)?==?MM|x%r=)JS!E+C1jHjSnP+d-c{}<2gCHVdv57c^oPEy-*U363{f)p!;WG$0X*#w) z^y&eJmWQ7zBEYBJn5pvRb4;PdtkGh7@Xmb4I@mX7m=<+%Dw6AjztwbzNiHtek7@Rg zKk*qk(V?=-s~8*=j)d2_%=14;x(2y=~_7PWO1K zm!yh4l~x<*2yappP)&hMVj{ARZ5-n&r67Yqdaw4uT8SOshAP{@QABx4hwQCoE(z*v z9OIy}>@M!6q1tqKaUmCXgv}Sn%JrU4*b&_}zvAZ=8~u z7)N8PmeT_2o2rxa?VFvx7u1jV4U~=Ox$bl@nx*n5+!QlkhQjQtl9xL=1i47tO+_WJ z=Nw=|yceuTo3$!0|E9kfs@{`{MmoVsJ$UC*=r*H2HI@Euw6l&&3S z{^2!cuZJ4q|yN5G0uOKw0jMEjB6?h8?D+#PyD~Hx0zkb~5z0 z2EIXPJtm(^?$%XO+^Tw=RMyS6QjZ2o#NyPI%4enxLQB!-Fd!d(9(5Q!wQD;`o$@Lc z$f;B2?N)|WWI7ZN-p}Qmr+L`keIwnJS3jD$Skb+vCPJ^$JJ-YO)t+D{$Tv#ou|~6VJHHWNMdSEi?;XH3C6} zt#Btg9yg`8GQK5%Pmd-uk=%HoFaeRt;=mYlgFaa4WiS3&-!<11KNoAp*-LnjG$&jz zt}6IIV!vMx{nND}!*yV(fBbkOySC1^b))=3l0Fxj1J!P`n`Q@35GNd`a53@G0JiAy zjg=)bZIUK@real;vLh^$ZuQhOwkRu2lVm%k;?i{be)F$b&eJ}#n9j>SESS!dJ`I@8 zsi(RRkhA&eZR!uAG$OQ1rxfb%9ks?Q^X22T`E8P1DCNG|TrVt1V>Zp{I$Mt34iV35 zrX?`hAA>$k+8ACrt=qUCbyEE34se1#FUMP9=%%%_TQ_h&=zIutew+FA48N7OJ5k{W ztQN)w2EV&m@M*C%q!!!x+g7IykP*}kF#a@#ZWj{C%^_WP{~C8t7^2*7ZR#x$+*HFB zc^3lXSJv4X1ONd#WbWPYE9DaH^h=#Pj5dW!xsBb1?cwcqLpXcztTxO>1rQYQwFF!3Sa53ikD1_# zyMD-ovsLGqo@t$<(EVR24RgPj!gkgNYv;cyPvoGa!fmEPTw?ytqMD+%qGK{USe8&P zVu?^w%2M;Qf57$=ne_mWnwSp?0UN?*yh(4kpkZ#V?4 zL*4`mSnm%}F!CQeY@1e4sC=btP+PE7Q?oELI~q|pb22QmP%~Pr4@;&&9=HfzV*=Vk z>M#ImlmICKu?|SzCRbB4F{`Ur)H9j)kYv@y0cP64d&8QzxrIob-q*8Vv*y$_Fe=9y z!XthCn$SZz99qTzx=e52epgC~{QV~vFgK@UVs9)VKo59)g>>`)FR#lVPj7UGBoG}y z3jng&y96jFgEPtbjb5pB52|*&zqcr1M|T)mzV2+km?M-Sju;Iww)-2L0p(~v8R{Xz zN#_0M;jPTb(FUhCf=7g~B*EKI8ou!eU-Gz#gd5CurDS>3)8dm3v^a=-^>|RnGI$g@ zHz=nvvMA*R*8vTxbMg;V~a$8`GN9$7I%|^tC`3!vp!Vf&2Gs zgKCnrSH)c}84TnE9D3_;1j1x`Rb8jF*?qzIo(r~wxaj@p0Bux&=GyQt!Zo=gI7C0k z#4KB~c<~DGg$3xjunh8y^SOc$?IrzKd4}wFvJitAIW;5rM68-USck28LOO`VDQ!Zw z^oW6LTR0xwn{X)Rx>u=3P+jKC*kMz`8B%zSno`z3P#rT2*xehs+GHN zO-w@Z1w(SgWwNtCc&*zG_K4;Mzp8zDOBnPXN5TC5Z0tP5USloNf=ld2{4)251rA9%q&8`JOU`!^E>E5>M#5%tVJ)ORaL1L@fbc2_gmkU`Fd zKM`Jc^~}@BrJJ1wuZ_Vp*B(bAMzTUVXh|a%b7FB{L@}FcUKTGSs4H>&=|(?euUHRl zc!PX+60qRLXwjklKM)qiVz0RSYA|dMkH#^-*H zjj?KNgu;y(*@AMu(xMyU=CFo~jEUyb>zEW)zWN#)gJHp_SS+=mSXPC6fwgNDRLB~iA8dKxOIud zG{Sw9gH+8uN~JtfJXT35jD>y%=J@BYYp<|TdeWc%M>i7sx7|oin3wK9`_Z2SF14=& zE`<2h*TqE=q@>QU0e=#>%u5730YoBy5x9{31A&XDXItxAdusvdo1fgg$Ew27tFS+k z(I*+lb*`-(wOqu%`2DYUE1TJ>Y^J)bkyQz&P$QXvG{=6|&x6Tv3%<9(Fq z43Z?|53qDf@}m=RyP}o4kR8j8zLSMnx8xV&gB}f&@#ob&$H-I#O~S^oCau+V0o4Ja z0mT6+pkeKo*en_?_+Kv`s6}x>k64TJW_>;v0Ha9wiW)!huW<|aD35g9JiR5vX?>x|k%37B9YZrZ-KrHwL!HFBpp| z;Bw9d2yB`99xwHq9 zmaH-Eohqe3yegCy?Cx817A#n|#fMPk=v;X5PNyNH#H>F_&e<-Tvbsny-MHY!o#|1* zkzCRw-O{Lt=O*=5hI-9IMbd4Mgb;v?-VO=7yq(5WIukBhjq9wW@Z6jJ0^uY%Ojl)& zZ_>#ajn8U4?390?x#0Dl3}GsaD)Tei`=lc|rQ5{E3w-~@zzEqs067XWbZKEUFSDP* z7C5}*90G_UzbG8r+c3RsC+Va^I7c0mX(!n9cM0~(Qx#ZwSMR?c@AgAoKoCTi=>r}m z=L`?(y_E6703>s~Us|gMA|+WO0OJY&_ED1k-xv_!OaOTyJ`?-@Vn`V=F}@cb9vr1( zMN=ABNMB_1>AaHm;HwybAyJ?gx>+Te3+%R6#;s?yiY3N!aK<7-3ubft+wIndpoebP zI4Z10Y2I8Yf5sDs9oR_$83zWW7KGm!2l||3R~t!)3Ks4`OA$oqSrox(y{_Bq%s2 z89snNK;Gz(*g* zP8iM~tAYyrs93hs$(0h^U*-Ekn~x4~J+Buc9ad*}ve-^tL{ih+{W3-u0d`D?LhDRU z*UpWu+fxGugq>QtFr@C)*R^xJxOyA~fKiQpYgDoS6Qlk^zM=8*#BpuT9yA*m+@bTr zSPJ-YLkO-@^YOySX#Z#&{=i;8GBAYtqsA2;{{HP_k+Hff>;TwlfF0mF`IT=Vql4TP ztdfvwK#&bF`D7O3d59Rr46Ecxbdt$kei0!{FgR~gw2uU?8mxrqzOX7;p>>7q~ zGZ4U|3#3$(o#38kt!3?HZMEYWGoP}gw-SH7dcd~DrI@pk=`9a~G^OU80*B1@fcJ4C zAyU$THvzC+Z9ZdI`xeKSg)5I5C^t;gg)##l7>UWh6N>|bI-;sU9VjI{r)r>VWz=82dF5HT0tXJh+fGZv5U4F}tcz~|?I z`e_0}CdQ=7Jl5w&m23E`F_^tif(UmL0lys0X`RFBl&0d1sInBUC~QB<0?0W5z|n}m z*A*AS$gVaSAr&+S^%PGfj&x+mIe>>|tma}_l{$Y{$pQoTS^VB!23YO1^-`FmmbJzy zWd3&9i=RD1P3)GAf@0mR2sj2v`B}3f{_?Y4b8id1+k-(%1Jee)PV~)%OMW1uclA{X zz@~fZ9UkYOiC7MTaqxxid-Zkk4Dl>Gs-tk{ES|8Wd$?#GhYG}{2U#A>JNLZ5U^{#U zo2D4;wANrzFkTea9Tx%-6UmE`)Om~MTeRr_>Z73~`eVc!)Q9$P?gtIEc?a{_D1HG! z5`$gOH|A(s7TlUxBB}2}dgJ!o9v9);efzr#3~~T3i)13?d7VJ^rXzKi0oYRaw_f(Y zdiwyO^VOdJ!pUv`PG%+`H?Ahrm?}NSkBG``xtW!Fctp?e?%^*di^KN6=x_tHy4KSk zuCE`@A=aSXKwR49@qRfOFN2K7eTq2YpmLtX5Sg5cDg1ze79bgsb6(NR1L-Si+{`md z)`5Lz(5lfMX?)d zNnjmh3(FZ}20Hu#-n_esoeviuAU}kD5dDA&wCbhoa2In_J%1hroZJ-{M$fDvFKxG; zEhG(o90~r-jjRcBQ`oE=0{uC|8(6-~)Uw;v(#JvVIM>SoTBhPm;A6hfMs64Xk|vT}3JF_*+I_O-roKIVctmJt`+!#6 zVLdeVbw-GVAW-hGaATf2+%z6qLW1vZhDk9h*_5A`QywK!vw3m)yY)>UkDP6RFsqf; zwf{HpV|U5Vv*g*(iHC0=?Zb6y-_;r0Q(5X~`7188MD2cOZN|jF&c2fHy&I9f>ZKuPnPj-hp%6Unjdck5M@K`871%=)IJEr zcmh6$AqQa|u+?k7H&$CK;$=2r z=jfX0mg)KMv`yhn84Ag7cX^5^#Edn2-r#JOAg(!RD1xUl+qYnB++g^PyLd67qH^xS zv{&ZP&&+{p`5dEOron!>`g8p(yJK;^k$v-U!LeI}!8bZP$isDznjWF!k8aI(OO8m8 za6MQ7>cS>x3wLKZqS4LMmCY@(c(8#IXq1CO!sD&W222)G4^&b*RC&!gixz!lRe6TO z+q_@g_kNsGd}RaVg~-pXC6!pyL|XPGykdeQ(Wj$T2*caQVY>Aw`Yg?YUNK717N~@& z6mghstL5&VU)PRrMmKA!uRay;)g3f}W+(73V7fL_p(2Na3(%4WL-m4e`ueZsti`NV z4v{gl`TKw&lT9Vs@aJwr&{MkAwbw*I1Kd1G#%i=QAxaaBkmc z@_4OTRlq`mA&o9%PC;UsEJZERZt`Hp&-Jg(r1SByX<#YqGgzxLoak|iMH;A>{PJhO zJW980+oKERUs|e4I*TxxcN3fHt@a+?&0@}$s}P--YPRsTmKzv%2qaeQ((;yp?3;i> z)0D5PUzb%UOmeNThsQcBP-8`4FaiXcd@Vt_AU7agk*>&4rLDy}aJ#MajeLC^Z#5YcvX2t6g)MXC>U3+`|%c%S{3C3HAptTur-`D9{EY1eXv|i$dEYj zBZUS8_0KmvqV6FYjmPanskbLwPD!Vkfa1#t6$TF8xBn`HwsA`6fueP(a5o4|N@xIa zp{Vb^L(KxR)5HSmT%AUubs+yTA3jW-+LlPuVtKEry0ffUw2A`-ldo|OnzfZWjKjoW z8=M6rORPdHnn`?C@gcEzP+C(3MF$oyl$H=vyr2PUURXv{F1U?m7#?KLLI;Dx|HtZ~ zj_N29UVpd@GgZFbz&dzYjRu!A)J0R@GPlyk0?%FhUJHZ&9)Zf>S2H%$Ni`C9gf+?y ztQyQ;3q*2fB8z8zg9Lhd z6s1B%{epZ+V199>U-np%ZyC7&lrO-3RAn~z08NYo8*kCLZpj%kiz zC#?*N4t(RuWV3{lImrKut3kZ$CGTOC^fb)m>Z5sWzw`Tx0_@#dFmmL7|BY+u=(tfj=)F0t5jP;73Uf1b9dIr;{a(y^{WJa3YmA0{9kmXDmWEP6N<11x5i~WdaFz1w=#(LlRaiL`GknpqHK5$3m-*mO3 znpg)T(+%oQ#iN~!)kd;EdXMxY-e`yJWVIXmNcxmT^4wEr^IL^kW8BcZ*kPY&ZurFx z?|y5Cf5R65Q!;_#CFx(WTg-T|y$L!w&;+1yDdw!t{VyB}RVk zRo3%`Yij<5#gQG@%5d#bdu8_afy5gi>nWgOB{0^asCtLtE2l?t)IU^LB)INQmR#wu z{XW(;r`G<+N9)6V*ETO8cjiLskr!4}xh(FTpjR3-oKPb|k6P2^T66w>$(y<6_}=_P zq5q<@{~O~*K*@oMYG`nd#CY}|y#D;77nv8GQj1I|vM@m^1nC3_L_PSzQaJz3$U(!E zq?w6}3M&a#1T2`69HG70m#^#W0*K7GTz79g)V1Aw(i`Hfc#PoNeH zKLD{N5u}2G7ARfh(!@bKIi}JS-KITQ^oy!B$O3QATUQ@yz6>Yx4iZ#*A+%J66o&W-wL)1FFV=g2sOAYP z-+MDLWf(YZ0s(&sU)LNGUtDzZK5<*avPzJrQG&TogK&ww>g-@a7A(iv>+CPGso{Mn zAWl%`RIofAu?<*(<@J~+xIbQDkcrjE=!q+9Jo_gO&3V}K&xI#!g|lHbl0rO-&85m`>FH$swEa9CL=)RMLkf)DJC?3Em@kb zjU+xaXtN(6^Kw(bZ8}$^J;@KHhV5?7FxBNwjP|n%-!KV6FHgtX3%dhvL7>!EX5wAv z2MI7^X)ut-4^XI@$XP?i@vh7*Gf$0oi{uk%Ui=yu+EWFBci;g23c-|Z4RHzmXx5^Ax64TE(byebpHWD zFDTSQISgmR>a4q(Bag2_FM(XX1ztY|##)g>zFUGz=A}#+u}LY9@TCi;(Z?4i=W!;7 z`kUROszZY{DDYaV7Dn(Fn9xEBMeA4i2x~REg3o&eqCpvjPs;bR(5;6aa7MTkfKZUY zrO_C%(#ruvsRoJ6FU1Ay5lt<>F{d!AGE-t$U@-ffuFe|#j6E)1TIX$YEtH5m00RNDM{1WptH{~U;>mz8| zIZ(Qd&oEF6klJb61s4D8H;pb0)>lk-Le(_n<!xK&ec*=KPg_8? zzPsXfb3(k@>h%Pv4PQYPNLntVUWi)I$ZHdeFG-AvFUZoJ29+eKI)}FPO0YYSLkOqa$#1bKO4^ zUNqtuVXV{;Jz<@ij_{C!zf_Ff2;G#a3^ksAS>%+whAacY3hz3!Ik(vnDzeUcCLjpn z-J&i%il&twN1&VY5tfLPL!qh^+7oEZ23T-CBiz+b!YDrv6a%=c2D0noAF7aS0a*=o z=XC*LUrWqVt>)ssp|8KI;b@1Smip;Y3oRe6(uOx*O$>w~|G(Mt@l>py-*QwsC~%k94zIEEV$*XT4)++Nie5`c7p zbFvoehDL-#vm~w}*M&5LE7j%-rDV=k?taHI+BhG9AN1LhQYS1+u1f6aE;tq0t$Sr~ ze16Gf6Oy(wbZbs3(1Yb0+9ltR5mvHCzaw2ee7)o6OubvKHJQTm+7Gd;?Bg9XbN=?* zP{^wpn|EM{BWHY&basIoBu4?XcrqsKx2}G*BX7!Rz#T!`g=>T;g`vQVbzuqLR_;1w zA%Xfc$LJx*=0vu8sB({PXoq zV8777Dh1?`x4$i6|29_0^ef9rk9`pmLFp_O+jOh|#69Lo*(x?AcPuoRYCtm00>dJT^ zvtNw35(c``%-Ld0LJS?LNJRkHXspkAC~aJxJXp&YKm52Yi~}wCdyh~=d~Q^t9C3Tg z$;qoztSrn{y<;kuY=K$gi&_9LD&r6=OK?rM#0I8K7^~D09yP2}NLV-52E0vXqc|sS zIqcxruMru0v)e>1KwKO6ExXF!M&FqK2lS0{8{gIfskU}(JEzE-)Z!n7BJ#Mt&Mz}x zq1+XR$m)IOO!<);ZkLd%Ojr%Wz`?M(wEOet^)-jL3+LyLA-M3oad>eVo;_p9p6Q9- z%%}Bdp`q*xnx-3{*%Ul>q%anOoSOFpt51y^-b_1C;8gg!Wv;O0>_M;Wn7NcXg z(B*998Vv(W)8B;R-8BZsd_$? z96)VATOi>f?-8#kQ01-pJ7Bx^c3#o9%#0OIwN2_5^bKs{7=XUXk(>bTB?rO~vfWCc-<`e3nwIvtI`hwb% zMtDiyo5vbaN?1cqOq;ubTzz#kqVcIwJ8}DvqvZvClNl?ALV88tWdB6p^kQ5?7&g+A ziC@vT=4hc$+Sr6I=v${U+4y+3U)Nvg8%JM<=nMMRy}62?nk=RK!zV)=YBQf0+q2hq zN+0Ho6iyVNvAmFCqLUM6p?mk{c9o!Yxl`EW=1rKy5=YwIM_!W3U?Ozrz2^{sNCc$F zpCSEkm@etZ^H@`ZZQEzr_MvE-n= z+-Y$e#oBq;y@YB<>*e?N*QWQtho-I@e+s3!-M`c6jg6)cU_PkwJX1{dwN_o^Z8x29Bs0+>lgNVe1@zw>NPptN(toZu%+z zfId!XMi5mX7#|t}EO!5xk6AWu0&(M1tOn$*tJ+-e2fU|S*Q6OcL1B8mI0>=+G+S1_ zLvtmVDPQ*!n}*T&#v3VaTG!JTeTbQh6V(sBS2H2qAgp1|eU!iCAzV|X_MiSo@a=D} z1k3S`%74*^cXUq4w=Yg*XUFmzvjM>V7vs$<*KH`dkXE0REsdJkoIxOx&`A!@u} zPg**Z>7_+lzw3L{+-z{hW6Fc-Z0s#xsnU@E1-3}7Zm(gk9hB8`4A>0xj1eB*{0@M6 zKt`VwBbCjj=4$5Y7MOut3+)=a*wS=Dmf_trzQxaZJu6@;+XGeuBZ$*ptK}z8(RCC+ zfQS4o+Vk%mz7XFZScJ^$ULaRhUDdvF*(nKWqj4STLFeZjT0g#yc&O|_I*G%neQ}Wj zKBuRc65m&4j#yr4GNja~Si63!Ls^1+^?qQL^Of(4pFBvsh$&i~pRlRtVY+61To${?;^$N$lj`T@ zduQ<#IL}YQD{|*@V{xH}ybTlxNZ_dfYx?Y6y!Xq4Wa5v6;7x~Scbn;mDxoT&n4tMd zx!)1u23ZioejIbw^i=$mQf*jRz*#t7QI7OOgM|u17DY}#MO8$FR5rA(9H{hW@+~!T z{kS%jD@;yvRhNMNK$;@Q5uD6GW|>+9X^L9u#0q2*+euq5aYskDNt}_nPjt5R6aq5Rh+C3m4KRRH*lqEinL9S6oYXO zn+d~7$a1~8l)#kcWvYLYv2lg9hmrWc1(l3Ouf@&1y7HE>@>7)4Aq+^57*g?%(5x|2 zEjN&B;oBd2jF3IbKZrjNq5x!U2&lUvj@J5>ONh1VI_d?E0UZzlm_SDvBW*9*q z-H04vUa}oBQIK-C#Q1Zi+OXRBhk1E3?tI2-vS)`OQ_QW8vdW@5Yyn8`0u=)3nNcxI z=_qxVJ*$kcz|$6K;})RY_40V%Be|u1&^59Q<+!m2H>JpOW#nyQ@XZAG-;EO+)(vWk((W1YCiajgT%{CwkaA?|?kk6-ZPD>aaSo(6HXky?`0o`?nV@E7V zj6@?*C2lletv0+nkSu?3dg6ENT{FxYm`c?cAZEu6ulVR$@|S+iRJy({nKQM0CriX+PR-r>cQT4+e6fajXSa_=od6tYXQr zEDYFd4oY2Tzvsrz4#@Gr$h#=UtR-SD-(S*BmXNw>kbooq4*37|hQi;5m6-q2l4t%4 zCnI1iFmU3;UIi4=cLS?Iw#Z%(Zb}i{yb@1#@}ut6ZY5SC5kR?SS@#|sz;KyEOk}zN z{6o68#-eG8S*A0S!Dz&ZdX>#?XZG}z=PjjnJVAf9Ewqg>CIMzHCRv2dI|VJf<7)73 z-p@MHtF*Id8?IHghV-QO6!WB_k$4Ho9$oEF35U*-jh#`X_HiPRx4bNsm*LUti#SR|Df$#BFLCZy9^bGo&hG$NtVBK~Y=c6@9$Vxp9R z(l9wv(_M`bVmgDt0&MmZLD$HM95q)jb)eclLsu|;Fh=&#Lo3@!7)8lSEK=AI<1$Yp zu-#SW@Q6hi;JjL7kfzOFYxc!}v?OoLUt{JsJvna9gsJcpXA0L5>Y}AKX$%Yx z{jouY9WDL5iGcGNx>mhHw;tGw4+z-abEp8GhxYLVTuiHSu6uIoO$c#98y*fnbH2Tw zpN94~41J^aCi76I+$!b;7A=I)1w=OLOnch#4VWUmu~g>^q_94VZ^5PZ1=)I_{jca} zDJLl;CmAUtqE-}gOz%Cc_ zWh}jIt62LrN709s7wsY5+ETZbw6r~a=sU#lMt20SmfViO^+FclwJq;TrAS<(O|Wpp zxh3FUYZc||XvDmVNosmj6cZk|?@Hov8h`D2b~d1}T(tE33!9TJLw zzvEbrEV-t0reqgwmwmxdcmQ{Tk}t{&KW+vZ)t*60`&|tG6aPi#FXE3*YJO9z=VUxL z12;!|3AJ3y?(=%d^WLl^OGY!BVx+=>h$FFe(NXxa`rM)5^)VRA@f$5pJM95l+jwj7 z{Up&Vpf)QfdE8FkhLW6i=AKxaUh6L;MKkJ$GViJvrLntuf;XbpmE}@cv#CNgCXk4@ zGmS$%7i^2axJvtV_t{Bk$lbWs8-3O$c*Kan{FIT~F0(~y6K*GNEp8jfMvf^*6z+pW z`onUU7w2Ud@C^Cc$|YB@B&;QY~XbI_)r6t| zTdDsRa{HSC9vcfH*EK9%Qv_y7bQ`^s{NA^_$l*;O{wWyzasFopEoZ#yy8*O7dL=>bY2^&y@ZKmI|}@jdnM& z0;~^U4%XQNW|l6;;E7&qiJIgIOg_wt_kGQSu$sy!dZ+{ubofUjJ4#4ata9p!M-O%+ zWcPa(+Tjv>7l+rzI*`1=3}pctq$g?CbDs{)r2zQD`pSn%$vwpTwKJsH#1U8>Z+j}M zvhAn14320ZpD4lX7+eyq7w;#QIPuKizOsK)o$s#`|A#^=UFOeK%!TIq=9$Rc zAm1`D{&U-4hfPG%)8xtRXQEIEd#3%nH}^eg5M9zhc&IKWC#;a z+!3;f9|)TyS8*U6Mh)t(>H2PJ`6{0&3p0xhiwDpf%)4_YxDiee6bR2Ha8y|z(TygO+Wu` zF7&5g{8e(LOT5?!5g>DEGkaa4`3;h*R+H}>SGKA$ENhLI6Ops`h`**_KE@pCQRNT) z#3X9a(PK{3l{3SYpFcf4fl=4|v*!;Z(H3SG4i1RFFH#ybk}j7xlNl*e#a+eY$&jj$ z!pkX*I7mwV=+WnkpA_ZX@7#%j?%GEFV!7;8XHd}gmlNVPxRo4?MFR;0wNI2>P-Hmno*uX#GnzIZ@ELB?pnbj)N0 zQkR!BNoo&BqL(*{BC`EZ_z%yzpoE}$uu(rL+7k)8di`2$^4x|9*?D97$43~UM-~5f z^)uC2`0bLx;9o(8^Ta`U8D&P25rKQR!#Oy`}W`Zz81W7bgcK#fK#9S?aA{2Y-43>M5AlvV5#S#r(#TKx1ud7Q^H=2gPrYMV3#$ofM9&lLTKnmy6N%j&>G62H z61xNLkK(8~yf%1ANq6VvEsjL_MER8KMqePpQhosclPgo zO9$cWTq0h7lmVfEdaR8`FQ;D&b+hAVuy6B*!G(kQ!0*T&745a4BJm20xM{zGPC9Us zxOYU6Li;(GUILSFn%txclKS3Awp{F-8C0noB+;;yA;5*>4f-(%w)1;oN=+SXE5#GM zi&vZ3lkRjWA>s_fGr3&#~yPQ z{w;q8jQQr=sk7ni*6|pUP}kObIn=Ut9*3fCRB6x%nwTSPJDe#)S5bkN*^9O9*HQ$l%p%j*9-jB;Ac>44_4&{ z7%2CX2iI~mA2U0)bEoGg3Z*iHat4-&;wP&Etx}Y1fN$lCq~$5sTSFJ4Roa1((6Nc5 zI}>~z^byTJMh-dZW0N&Pd3{Nn^!>dtz(Qzt1iTa;Y~Izu!`P0k_)g^qD*iE2ItZiDKY?FdUx_g=4h|4d;eVUC z|J^m2KV1Kh>@XTIi$;qYT4hW}|0|Ilfst$+0q`JnTq?UBxvp zjQXiMV32yp&+@d^Ajv)&$3O!k)g{6^cN7jFBKh_cqTYM+U_2q{@wOA+JW(cocdIf- z5xkaJd-QTmI%T2>sj}Ed4pc!I)M2dR-a)J}p2zkdkEfl~WkKMuv9+JUF}ksBVjDj# z;hzwwzBa;HoW#IiQVh`FK3=?k&(Y-s1qJ>}=>Cea@pAvM#!#v}Ah@+aZfxSSo#XtL zH|#S&V1bd g(a&q2hk{{Nwo3d$MrXCpP`rIG5I9uH`wBGR5p=<#BvAdR z;YZ*JS*I%sD&RCQ+^cWQM9HuMj|D6;P@T903i8c;fc5w)v^+K#Sb4RS(O*Ij({=X6 zv5?sP>mQ2@!{|(7V~ZTw49_ zQ=c>DA^E*bT`%pUK}D%4WnuCb>Mqm^Bi2#M5`ON=dUg0Zq3nm^+_kqIPZ8=wIp7Q?>}&ePlocQ$Gc ziI04X8*Z652A2c|fsJ2YPpcU2#AtJh+g=LFDs&x?y)h$Gi7%qF(WHE&rqA#Q5ymqX zYpL^XuKRIRIWA?08@rp|<_2_7je$xWkwJoUsc-o<*rI_}Hf_027QyL*A-D7x1f@>$ zJK%e*L<3kUd>;h?uh$?0-~WC)0&wwheme#7H}mU%y8QobFV*ZE7*V~}@?ByMV%{+R z8edT(&Lp0su%W&o`kvNHHS;o%N$9v<4{U{fy6kpB`xZrK_=%BbgU`j?d|w# zMJKmac9aORA-{CzYO)b1@Mk9zw<4L%pvMW5uK(EB6w3jJ!O7EaE4^ka;WmqXs%en|ziQo&fe z;a*y)jbmoK!u0w6D)LLJIyMnA^BLGhppRTPlOd;DZqFCMxwj**Ig$D#IHz0Md{*hg z8Q!D#T2+aguceF=+ga;NFE#eJ3B})x=dVZo-;k_|hezHQSt6l`kU?+A$_NkTtV#X@ z$?9)=sbXpHj9gvcD!Zmai-}y zw6WNRi33d`--+~U^3i$ignB<^k1BKOrHv@ukQ1xRXylQN#%nuZ_?Em!Lb?9ngi(b2 z!hd1bO8+GwA)r1W0(7tw*=LulbkSbWQ6qiw8OLESQl0T5`COUysLy8)un)~2UT9V! zhv6WWvg6bPL`s=vS^dmBOFo4&nH~W)6D$zkwmiX)I77IpZ&Y^6pjZ(_ta>4lyu;em zFwcc}cvS}WTb_h^X{NsHtNm-Z_HQEOuc!Y{MdYu3>OO@9mKxTf-hPhuq6BGA{6@|u zC5Rv|th(eR?J%o^sG%z0mID?~0k>QiT^)QQXC-Q|zn_g|eI;^q*6EE0CLAKiGMMi` zlRSM}Wgji-0%lm6Hc1FFoEQO8&7ur`W4`M`w|U-fD2+?p_809XN~0!2z8=|-@a3R& zgFV`}4@8pAan>D%LNr^-s0mbsa?u$5>5Ddzb}=7P7~Zx5C{C zL_&O{$oGesARQD4)MG5`AL$#ZTw|^>Tg}l3^0u`KXhA9MQgpbwZ{E)Pc>R856SB;x zkaVqm2Oj;*#yHw4`CYw?z%cjL#w+jA)7x-6CV+M5eruh7$2b0|cm#~erp?Zjhn)XW zJSO00P(p^h1%>gIK0|GQSxzw=v{c<2y^xpQdnxZ1rOz;TJI(@GE&-z)cJH;l5%_9m zao`sCHTEtR1{p&jCgzmxbaw(&i-+Rb215q^Ki1wds>*iTAC~U!?(S}olDG2sVHSzT_EXE(izG>4fmsau_KOoyL(%2Ns~58g--Mn50eyw%Ht3pu`W7z?fMF;wtJP6EPqse>@L-zwH! zbly>C>T$dSE(LkaMhf6UkBxG^%DGW?WFv?$$xD#@AY#W^xVFu=eT`oumFKl|8eSJd z4T}zkE)FYQEvZCWG<{T~`~d43bAHR5W-+27&6alhdaSHZ7?Ip30bCtT)7U`MoZ2|7 zvlFtLmGgk9<(to^j|iZ}ddqAQxKoPNjf2E4o5~Bdg~p0HAYc37HsZaQ~kR6PEtEyNtCe4L9 zwOcqqv(}1>Vixma^EL3^KTF$a_Jog(sE*|!m&_?s#wr_;ULyw@^ikdomN{riuZGIn13sG?x|Jo34G9*V>Te8%c43f}t*>U*9no(^Le>x^VcS0yg6$+iv&LQh=SGUBHb{8@~IH9K*7cEr!ZVS~U~C zFYfX2?U%HGB12ocTM#dNaA3BVgwJn`1t}4z8>JLh{wjB{5fQ#WHTAzovHwuW_8j$pH1t2o;B;TC zWYB|Q+cC;DUj|=&Bh|L(94b}DSaz10#-#^P!SLQubQH5WPvLmK7aBS#pvliiF}ZVa zJz8=cUFbi2xVgWldd~tK35E~Fz%G6D&dSaaZT7ml{4K?m&x}E|H0d|m+OWX>HZFI@ZzT&JYb395W8TG{ ze5Em_jEnqruz8g4MeHc30W zu8+Ombd-|9Y(qxSDK{*R++SwCDG+xu><2B5Mb_juE5FbM+ID9`qfn_Pr*qDsN|cqC zHo(P5aT8(}Bxn^#rmtLQnJcg%dV%3CP{*px7udemOO*vn(5ojjObcy@R8ADc@dIj2 zp~Gm0jZp1ac3!l=mumUA2BEt?8nd8#%uTaX1s0G>G{u{iLLWQ`mU5e#av(h17BOt* zr9-B_XMsp7Y!p+X*^t=xfLmLbf&**h@+c5teLS0SEZUv=4gcUc*C!q}^Oo&9w>pu% zt@EdsCPI|7Zg&t-oSW%q@_@Dom{y6a=W!e78B_!#5LQ|Et(U-m@?8Dh6{PKnvJ)_7 zV%(=U{n)228KcP!?II03%>d3vV)Rj-(Z0*fEF}f{R#P1Wg6LBasyQZK^+225A=1{m zLr43v5Qy$dG6_yZA-tbue!>UlbUZ$+F|&MAI=U@O)QN@&F5h!qfWulgy)BXT*Z9R@ z;)fS-S`6eNeW@B8WOTYMy0MMYF7(|Sfj!Kb#>rOi%Uer&rA?0cB6JYs%>X%T9TPjde(YZRKBVLu0!0_ndk1vvhE!to1Z)B{eD z&;ys7Y_uAS)0UT)v3BK<#nHuQcCkrCh3%%bu%u;@5*rXNYFklTpI?~TlAy|a3_B`g2kLu8Yu!ieVw9>iE;BrF2H(j50?+Kf zvUJ<4TWk9am(&?iX{o)&5FDXxQR}W_G}j8S#tE!&Sz}Q?5M%vLZD$9Rattc1Q9G(~ zQ}PsW7tkfYpvw-$2t4h$WP5B4GK3K5Rs1-vEuP4bNB4hM-CT{+9 zdxn9D#>dZvf#*Z=TWIkQAruuuD@Q|CW^xfjN7J7i9-yJX6Nl%~X}X}LqJDQIZ6%vQ zvJML=G&n5Cw^5|i7`O>yRxXhoa(t1B2eD@PSN*lBzqn2u&a3wVIW@v!m=u)F*fOA31NPIFtt%ALnvowmG|XxM@M$p zi9u>M#KeFLY$&~WD1qi~H3@@+eKN7Jca0o*QkUzszX)bS8u7S6_^ta!^pAI{I#`ymzyPO*L`qc$IkooJ{ z#606dB|W2!Yy*7zlLI+EbGDEJ3~ldaenC~rD4jqvd{?uTx5c_j($f3|HsBbfJIg)Akicn=q^ z6i1gaUn`H~88)Pk<+DjweL$FQ5yhIX2Y2PGf-7X@Tv2~$PXU63g<0qbzQUgArxfNm z(=cgn(p2~3SC2&7t_3KxGxG!Qf?q(9km94N23^adijf^;bcgHEm3v<%_VT1IHNdP* zp6Tnn;}sooeYs#AgI&r69%YGNj?&?k7S$Hm&e@hpeD%yvbCz2)dJ>@i-VtB;4>Qou z$p54CQn6N;1Y#+So&XJ6NnvCVjPePVY-XXW?65)2c;o^SdXk%y34NKQ3ca~V6CoKn ziK!lO zy)v3@*dNWU)IG59`b;*Zogj3oF~>A*s^mf5-f$HoT$)Q|eZ> z!k9^|8JHPcNW+3&Cj6mKz>4`hUbd)t9wE3>Og9`VyQ_OEXqieZhX+{r0!(-w{-D34 zQ_#aE(77dG1kTDEJg}nHEji^frXStDG-spT@cJHt_Jbm!fsC;jq}v6A86pP5W1;>InI@?X6WjOTvX z0h@tYCI>sar39|F0CF+d_UXu9^((+G%53R5<}=g3kt!hnkQSuX*`S22LBdtLJ3IeP z*-Dx-Ait}oShU{B5s|VX41%ju>rB!#@1(fv`Z2rPGPI0Y%dd6)BCxHi7k6LaYyFw~ zlq9=yM5KgUKt8EE!^bJfauGID@L_DI! z5<*N_j;EmqNgaVP-@(YSq3g)z&<{dc#|dwqXO-`V5kEc+56XU~gkt zI8nBBYWSSzOc6#JC*Egdy<4tbjpCxAw!fIN?F)T&pB>i1>K!kko@mzr)ox#czVmIe zUg@yjf^DX{8U+$12U@gi$LT_Gpd3Aa>f_bzoSg5AHWWlV$>7H}LdIPTv{+S3&M;-| z&zM_p(&c`GAUKhpr!L-$rx`PUSt|a(18wQBe>c0TS z`u7#upZ29c&CnYk1I7 zKcUP!(}tsvWmQCTxPOK7U20qC1ufqqrCZ-)^&B~V95Qzcjn zxVrt>(s-453q&~*tVVMd^3qua#=>)S`$SIDm+Uj_0g#O3+z-79n(@r?Y~^M~Jscxj zaWGukRkk#pgS$Bmw--B){s)A@O}j$pP+s1r05ojXMj%2^E`9i^bZ$X;vly{*WK98w7~o;_nwsRX1@p zz0|TxnyIxOFA#lsZRb;NPCw$}ykq)tqv+)ijE8Q}a;ko6gZ>*-T<9uGB?C5uvfSX* zw*#|OPk3xRb!vSkNEjH5Py)B^H&wD*=rpr_Q9jql*PMq7CaCh3;{1NWrm47MZxO+Za%4X(d zSIM+&64O37FDM?U9*A%g&H~57<>lTxYaXIVw7Qpc(ndWqk<|eNB2=|#l;n+lRi8r_ zJTJIK&@1Q^lhsFVg$Z&9IEi^4#O|7U4uK1=EnhR)F}aahL297WTHHO?2A%{U35UQ; z@_VAipH^i*uiA(w)1HrLNK5I#}J>lCp~HMil2o@vtpY_VHuQhei0w=LsNU$v=9 zB?M1w_MoX?sGn(KDwrG=H9kxef#WRrXbn9%)9ce)u{Yfv>Pg~ik-MK?;gRrm*~Y1Jn?3cR@RAM28#xI zlx_7OMKn%$KWn_60jyZe z@4(zWdkJOFgknDN*Z;dE+0U^5vn2b;VHa_2F4Kke_0?FAW}3k0v7{?tPeArzpTfT9 zvFfienYC_!D~MVFyCSww&Y=X7QBC>h83UxzDDHU7H@&t_GuX`E-9J2_eInJj>)}?7 zG(?Or4mVCG8)X^H+J$IQ$IP6uWrp9)U!(QQ>4+WS*kOL-A@1S4b7h$pKq^X};?e!- ztiYNlv7-xlBq&I0Xw4(Bqh)!N;_VJcjUj!v1YD?kp_^Hdz#*L1V zB8_#Dj80{UPmy}dN1VRx<_4N!m4c!o6{iFev*uCHQkNAeX~nn)%o79bMYN!hVM+|`DSs;Ov?7Z}Q80%k9SEJF)|q`DyPg6&!**-^Kx z4ydko4iZ%KEd0f0CkC?FDXC=&p)-m(2l*HKq}V1zcgXl};p_A&i7~o9Aosr5iAr%h zhuT~sSRKcrZ#*U!e3=u_zZ@M#jHcnyDT%~A1y`eDz>Bukwrv1)kX9K`NDzuowuo3T zcL(AO>H&w;VRYRTvE`HC1j?(9eESSngF)^AB!KxB^tW)e*nd`+sQh(#{|0YFKig#o zE-N`Yd~FvhCno92!QL+j6B(c&A1Eb0cEE!o&@oR+;W##Tu8)3pWUe(Lp3>*;ZZ${b z-`Yq&d-C$liX`*3I@nJk_NGe+#|2OFIjl}H$h%7Rq&$UK_rR9`K`Wt3VBVM7RxH|n zmx`)7d6nIdU|BC9Zx=HJuD3ViFfS*xQdt3iD}ttb-wCyVXV)o0&^lQ0WjH)Y6a_Ho z-9qw)Uf+o|to$NF#;)ysCv~i#rH91K33UxRPbftwKSaJJWzko{Nr}v~b4sl{dtQr? zLP-IFYg?a&0)Kc(($bJJikic$_Xtpk4Fu@bI|dLs;5^g3$nk{nsB=FAjQvTdN39{% z;u+HLjcmkz3%mhR^?k}~z`l$8yu}X7`tv+L}Fd}z* z{J<3R?zb=IpVsAnozlSjO zmfWkI0FRY|&`a;hQleZ#jmBU^VVo~+Q!CCst&Xmix;r5u%@0Vk6rDJJoY>)pA<9nx zblPc&zW(N|CfYjvRSYk15BE@Y)7?ab)?Kw*-=38K3SSN}sC#1tp8+u{_rMseECSI5 zyS07`06DA6cIDdl29Lakn!UWa0}F7k_En3|w|%itS13ZsNLudghnyt`NbY;C{q_n@ z{4X;>esZxFD~4e+#5QP1A$n^l)vx#iFQ3;b=B+Cuq5~tZ{oBa@X{`dVlQeXE0~9D3 z{~RX$qKppqS{?Ft7#SBwlU8fheG#cb%}vrjg@*Et>vHXTTBzJ`FVFrH+AUmMAy= z!hURF|DPPGdzPTQry1e(N zA{Kh*=cZ}o8IsY9)YzY5uP`o-wDSz8!b->9?gBGQ7%;B?H-q3$YxMt#DLePCsQ&DS zIOMn@#=q^3goz*(CyArbQxopzg9yMtMD4kZGe~jn+XV0@7W(=kt%!!CDR2Lr(H#Y) zTt8f2f!YDH4l#i|Oc(p-)VX%0e1}GGFl+spTK)JO%!OuMR>R#PfV!RGY;FnVLOZJN zUFW9nSb#~wxUB^xLanosqIvc!BEB$BRfBy>eX6=V9)EJ5RhCyh2biFleXYI@$~ zW5(9(-YUEB`wWR#Y?KQl;F`)Tj&E#I(I%!eBivixr1xGoY9kcBDWVJ>GsuT}$1AbT zm*sg8vK?}fL(wdAzBK)2*>c}991(H+`nivf>euwV07f|Vw-FZp!|eXA2;12KY|MW) zo%zZqK*lZd!;(SW%Y^c@w6xLH^a^+xf*dxVWa1Pb6WsWo?I_!PAmi40uExYWF}12F z#QVK>{0S_9s8$WOx0~zbVSCHbQrqqI-aOI^&lxO|U}SMg(u$BKMk61RkN2T_@Wqm9 znJnb-U3`$$1@no<0b?}EVG;Gs)``0fy?&^MG8yVET1V_(YqSjqI#)eZaDBG0jRO}8qjSM)11nK|}P;c_B@ z27ZN8pgL#h_hPBquUKW9(p{d4T=2>Lu*(l^ExNbUT8Njr)k1|ST*ngdEjZ;W#=34D zTl9M9e5G!gD_CWkH*xxVCyVHh<+wL%nXleX>ReO~6Z$8X%k?>rmti-rPs25l7>Iu= zd7lRQ4ZMtPAjo^HXsD_TozZbRq5Ba>hhr|4z_j7Cj7p>=iP(HT)Vq$BB!~ei(*ZaA8EOJ_rV0N6hlAD-8du;yX(mv z9CS({7<1Vx6BCL7N{LvEW`R(U7H04>!+lwXcq}6T+v!xo5=Z0ieox%sP0l*)ggtFkI$=r z{YPK9mLU#@e52kAL$y$Y)a zV?vmknUgp+mS94u(cZa!sp5u&nYQWNzyuaw3#WeIy_qqsZM|3ZMlEcm|LvowhGRZV z+~lVgnAKJCI{I=MznA2SSiumuprpbGQxa$dB5$?J5J*yZ%r(cWqs_;nWj z_WKq6!|&G;U}s@yZ28ZzQ3g;R^=x}*JyB5oJT`hF6x#0~N!kOQkyRI>fP_NeM)6_x zFO4O1odHi-GETFz9C6{}g6F7f;PsW4CzM^F5)larwgMqc8xYE9p@cVss~`TTiJ$*Y zAf8u6TTqqFJbn~e zY2yZfY4l#vkjJ1e7tq7m$o$MH$_uda*Y~Fu`C!MLxvG!y!@d>5;?2Z55xuL zq;k3&z>(xn{#82_&{>{<+5aYeWamBZm*v}cyvG?{N15$LR};7*PBB&+ZRPmkZze;( z!(7pyVtDdAJa^AW%@8+Wz&AoZuX(XW{Q4|@tYqgoa0YESej!UjV4wNAgB zDj6hSuIv?-f^0L_Gasv zb_uAw81AkYIw+jga$i0V(=QOWk897BeIJzy5@qigAtT`}KZJCBZ&URC>I%Z|mc!*6 zcDdl~g|7t3E9}6EzslH@AEww>z)M^B+iU&uKfKm|pHO7{4_)VeyTtNq8dj(1ybQ8! zd9V|b^1d)NP~pU0HfvKW6N`Ca?*4N;Ck+9?vRy3dQ1)uhQpQOI&H1I6K2@EQD7UArNvo#p8o73i_0f!XK zxQ`D|euwNL2z+?62q*?jV*YP^J(P#Rh1r!yQ@%foa2o05#~m8vo<%q=lQ6&`#hQLv zk1G@O;dJmcx7*D*AuocSHIIPE@iTH=MoWM8gd2VPZRr2g+x@RXHY4Vlw;A|&&UxU} z`fXkw0_$slux^v0u9F?fwlvT|6Ht`GH>jH2@4#Wu`Q%o|<`+zi!4CD14)&PT&ExLr z?G9n*OAxque4Lr>n2nb4niap$Y={WxKm-JM0B-38Ka*5M_VL*ia= zl)su7?;GAXJa726x$Uq6yVJyL-=&?jYHuwW(Y489A|X^sC(>%UjQ56y5vuFCX&S$| z-tkY|)1wMueMerVmiQ2Au%D}txyu|XQJ$uHkRyk~%$=Icm6^-OSgmiQXtaJk*)G02 zu}HNjarB(jZ>N}EU<1Ps_1jiL_&>b;z$19_0RQz?$~@`&0u*kf&9y)Ls8{I}cQ!=E zg2ljMqlRuq^=CB3wV2x(j+PC$)~bNTyaRclK9Q#(m4uL6A;%g`N^@Km(qDd&ZV;5c zAn0XKq?bHnk_6u$auC*Uf?ujDl_aiBomQwt>a@UB?Xvdn&4iC?cd6Dr9CPeY$T2T; zju?VyoFKrH3Zr`m$sp_dOF+!r_u2D03`U{|C$oqfi@q<{P|h#!x52jH&AqewQ$oau zGbmGYhm}@~9HzLrMO)ssP#-m>XBg#qhLxYQYNb;9VAQA%)I{;Bd%0=;81KOqrI7Vt zU)hwyx5Sf};5op);zz$2Cw^UxeJ~-*RXiu2VDobC4QwT!cpG2m4R|>Wr~c*zgYt(_ z$Q{mBg{K*Gd)k~aA@DGMZ^SP0A0Nj5Dv^Hysd(o$sy?R$?~ha<2SRgvSwEG73V))H z#lCmjsmRT(lben?4!UEcMCLdF`r?Nd>i8tY7_22Z%8#9;U(PRkzq zde|9!$bJu$!*{uPhcbhZY&s$w(RgZ&Dh8#`D141=)%qSf%$(Q~Oi<@$T`VGc%djq& zczOdbZ|W0Q2)j>R@|V|etT?IOqBNC1WPbau1L0@5;!9OBqvp|3)BF&V&DVEmZC;Y2 zD`*)78n7i*I2_HYw^gfFd>fmn7SqYMn}%By3YINw`Iq9dQL*|=YG zj&oY^dfauP*_bdj2XjWbGBw9Sdhu)#ER5Qt*55`fp(m0-2BnYL)70(2?t{yYPCJ1^L9Fn6Yg0Z1 zub#^qt1C&%wNRK2^zxxwgMecTm5Kc8E-PEQ<{jVAdAAZHXfRsVWHlCyP*1mtH9`G6 zX1|Z@gzKiblgUWErHbDt&-+JR$)IqV08OSIlDo~KV=X6vi|FjRjU4D#W<;0g=py zhJgSIjU~EY7!#~z-GCL+1u#u26EVqa%r4%tRF!(~2%j0jHHD2Rc_}K?H^D`pIogEk zAvN~0pH|uXImh2_vb8_?*1-LCruV1Z@1GUS&%_ctBHhCbOf37dYy_pFSC1`@EX^>x zBI8PSp`pRl(1&a(igSR;iEloFi9c(_>9ycJ%4jAopof;{;MVjl)O)afX3e%XbI2B= zl)4(yqoOWGiEk$IjuAOF^U#(t5<#FzrK{ z5VoG(4Pu#i&`E*GCHJ?P{ts6Ys{GQv3R{`mIso@qTPyyQ#r}0P`O11Sc)*o}#+V{|aJ(ta$G$^cI zvZwjz$F1Rvl(x28PcQ>G2(Un(Iv*vl0v{Hzb$FOkyPjxzb)+GTz^R5)wYu(T22Y#f zeVTFlgF$(<8&-5B6Ld2s+1fCPj z)l$y+dUm;98=})LFIv-##gKHnAUEHUzqxkl#~c}mYc&f?WpF2hp9__4BDg9X+DHhR zg6$2V^8Udc_`!B4EyDx2o`_S(D_y|(YX9tB?t^+Bzn~aEOxTN@0Ea+@x4?OrSym_D z{z3H7U_i%jn|R`F<688P@aH9g*t3uIk3t$ed105%KyM!>wAw3^H8M;&*)>O8t?$i- z#dwL6nlEk89j~MxM73wB#hxCG zcn=W1Hl&Da?wRAl#gSM=E$y}Zj^>tw7FCBiDR7s+R!=;;#Z}q1`DzJ(eHrQb^!jA$ zcP%~jcGcuI@V5a`;#_|TvAU>@?fbQs`$`pG)(sa;fFdWWXSj=pI3)j}6@k^J=+w89_Pe?J4IW zOn%$B0orb=mZwKC0|!3XsPdGPx6ihl-+{K9Tri;L7gbSUB6mkW>})hbqx1TxxtQ`V zht}bLF1>N@S!4k&z3I66x%6gsC`jkuEWIgWaaVW%zT&@Mdh>^q^QTDvtD#Hy>D52~ z%?5A%vbS`FDg1;xvV1{Q(P=BBuARWV2Ha1@yr?0m%+3^w=nJc)Eh|Z*ulV8B%5`Tpw|LC?= zlP-f=&%tCNt=?o-O>CQBWemTy2NBs4Rxu6D&{iU*&O1a)_Q6q2C}soO&dLs+hg&pu z;r?>9a#)-tb;X{9;cHBtm1P{>Dw8c6s;Ly1VYl`H?2jpas zPXdWHd-*DtR6QqnZr7!~gdL_YXB-Pf`7Q5BKjS7tC(k z#iVoMc{6FsK&6r4NX=qAIm7-)$M>I3A}W8ETs(`w%(<&CH|~F6 zh-#$83+=kc#D`QdCh@au3r zE)s+F-wog9foxFjfcynBpS6n&!U5y`U$seliupev=6^XToKL7VR`WRV28C9@XOA|% zHDECWA6a7;i%20lnzPhU)}BbDxTEJVR6={wT)4p!plRjwAzh|>jydXQIv!p>tbgWu zp)<3o$j$vKaUHZ@JklMqUeom;5n7DOL=r14LJuTTO}Z*e*anG{pN% z^9wl?i3;|)f;VXs+mH{{qKth-{^OFgA)*=$sNvZ+{l`_y*@+x(|NG&%x$`?%Ptvr>o$h7djttP{9^%!=Y&69aE&3IY0`igfHN@O9oiDDC=1B zz=~uviL!2B5>(WqjOcbiznx&uK2v;0x!iEUf%VJvZ=a|?bkhP}x4(*&gkNxD4%Epr+_)pT`!~2T2&__$SYau8s~_+5d9y3Jr~l~cI2=jq zkd^vtM;>__Xg}SN1p0WnjdgOaX3BI`#)P=tue%a-udyUHwKwJlQc5>xr?_|0YS`;P z*Le{}K_?yf`zgf;(iBQ7a9b8LdI;LmET(OK)9ezLIT9W*OOb1PN&E!^8p8jj0&!?H z=x%Nl2+7T5I&pD9Ao8-7rLHpd5yFSS&yXIU#U7&78oZ(G(SuGF)-0N4Ko-|s;g=s6 zteIut|JxM$hYhHztF0LT2rL3iL`6df zL+gJL1FM1dWPdHcqse~R3-!L|OO0lgGD&tQ2`U&WMhlRpN?jdu0QsZRK*R`08=>|` zW39SCc<0f6sr&ip*?k*=QWWUE&Fe`Hzo{(cDu>PR`bTZuUfk4jWWZ29s?7aLxGK-8 za$35;PQ*|HPGbdn*??ON%!QE?gGLu~OF8Z8BF-L=8Mv5To5tF)6{wMD*8N zEXM#^O#WmBiV6{21DSzi|HBN-`ghDgF>7AHlRL$Kl^OUe;Qzmwf!o61QSw>) zE4tq@0}Xs$hJdJQQkFaY)u>G7-MM|0I+YyT=?6z6#k=q!Y84uxLIC^uH<)-$MlHz31V~ ztY!xKUtw(o=7Mf$T)8^3XX29uG3>z=k$h?p_ZgY03gxH$<$ra?vs3oufAwFb2LA1k zes;0{o*I~KL?Wzsydn%sxb9M~Gify|m+(NZ5CHqMU*-xIHgo+i`zx=Bh&%D(K1n>i68hKb-&m3hdvAK1xsPqOpO-V%5K#hiRpYfT9=! zEE?ao5TNmJAE$GRPHg!^|7qP{17It)XX9aVq9@~Fpeknh#Z;AObUEPy%J(s~tQ!c7^aV3a)r?yaGX?$5jx%?62Amisd zbTv3zHH|bAg}%~2XjVo8?(x3#pGJ#Ca=OZ!11gz!FHQ3juG|qicg}O#DtjiWgJMqI z7uhB@a|V=#6~EI^_tJ~|WNEiaeZHYv)0((ibSmNaplGoZ|Hy03fyhb>Lr-3n{0SAT zn^hFW5*|?luOaipUOoy8L#(9UJ^1fAiNF{id@1sj2~QOL(>) zUWx~*YWl1bt!u~urruA)2%%3z6a}hc$40*#%AV`$EpD4EX~i8UD)1jNz~y z#MQC+W^&TJor3F?87=z^u~9&uUJycW*0m6NDnV_SJQ=vM7WH$n8`Fj=w#DabU2Za- z``ItcguL@*6irLMdfX|KB(-aoBOn$ayFlA>1Ybk*^lFM+9u=Clvv_H!+>=Kk=52W+ z)vDUWMQD->(w-TrB1#Wh=(U*BQF8NduzSmGhW4Qajpcq<=dIHXALJF!2)^vrONFf< ztaigf(beg?orM`ni{)-EQO2fR z!gsb7Xs0f2Zup9b&?OY1!ChzAEBlm`m;p4H2(@u3s4XriyTCI{18D<5vtw1HU}qVP{JY|B`ciZXSE%mVV&aTM-^Wm$*@f)8tZO?1 z-oJmJ^mJG#cCfU3|)?>)|bi$Sqy0u`_FqOPNK2 z*VQeLJEb~>q=#$O!FbqcEPfa$XOT@&g`|WlDbPZho>k$&Sg87L)$fbQ)Co?8!m1qg zB+8;PtCP;L2hDs0tyolYh$=F`nw@WEpwo9khc@Biwsb?_zDnY6{49CWUaI; zO}WXOxj>$~fSDieU3^an*4V+aQ^D5~ zwMNpWH{vkOKak9+shg1FrIUB!yY`rXan+?^D=<*z?dmMm zq}e4jY|?Z0CHUhE;wd65Vkn|CBECqjeeL$FV?&%-ODO&uS~|iZ%^xc{o7thb*~l|U zq^gy1V%x;95h#Hx_ZxkTw3r!$H3?~eMR`8zImDtPg%uY{YS%tZJma_F5sgG%lO^Uy zpb|b33!Tq`+H7mMCY}Yp`6nV5YB=%D~}(a{*~x7K3a#vy~C} z)=M)W@Be_{C7Lh}p>XyRHgf!Ee(Z(s%1XQA$9NZ1y~dPKqQqIr)Iq=u49qC2KtZ=v zh1+OKb#WGqISiIlL2W>IKmp|k`6oxqgyIGA? zV!oD!-g;i>Z{xkLz!yD)4B;eH3i{X`XgO?tJeC zj$=r-I2H5Wn7J})u%ELjho z2Z-?dEe)%-vH?EC(h7Bad#r?KIY8f3$agZ}$^70f=1(V%e>HYLC;hQ4z;+HhAZn*q zj;8MA$JbDh1|bG7Kp=`EvWQicV8CnlQrVSKRpqINj9Exnj$iPjuNA)E{v=XG;ob0q zh=6Fm(iXVQyrH@;dTyrGa6lb@IV2L`ZuAv<;)ldnBkGSiOtK1B4eqlJ3E|i-pw?;S zD@#e$=!V~ECKI|6hW2-|j_MLPyPM|KVqEgv?~xaH41=;yUB^AX)~1Ps*$h;ry%Y?t zPI`Hj;w9vBD$?t`!G=%yg;T6@>xwf#Ksw9jo4id%k)yM^Y0;yM0*-t@I4FUm33m;C zI$6J=-FF@d9$0*1i17CtERkA}#@iVa>R;61100t%=1#@1Y3D}XEz2BInY_E|*;wA+ zal{;4&1I<}6WxWYOT`|3Kl}}ClduC86TtuCRfyObb5T(+x_xXir94Vfu<07BeQJ|P zI!Q&B+cU44)=V}{0(e%)za4V?p;v;soTBJIgyPStJZq!r9?jgPRv5xLeay}@<(`%7 zEMjO7APKctCsuA|5!Ss7C}4ha4qp^Q@^#yWzheV?>>maihrfNn-OnP-jK2YXPnVyN zh8#}EWI3T)=^J{6URJWB%;sg!_ zZ{&)R%-VjSPRF(foYjtMr}q9h&fsU+uS^q);OHd1h~mpaJgv7!Bg)MTIhmj|rHuJNyL8StKVp5Y>f7 z$ttTWQCwn3=bm4T1W>&6OJEwx`E8>5L-O=h_={=aIZ-Z0=Y4dAj|2w`Y9-AM`? z$y!raoq@m2iPwPEJm#wz1a2Qv7J;wD?F+leb;MNohzDZBH?K>SKhg!7Ik*zB!PgI7 z#px#k5@3O`R#9O{->lZ=mvN*k#nX}|OXq~Yi{eob&y;Rw_Q*Gzc-p5ifs=6BeBYbc zqa_f%>H%j540eCl&~oLEFQ;EFR@}Fl!*3^b%fOk$Qcj?9hOF3A9v+W!g;8^SG9vaN zkE^kWdw}8m#x{s7FYVA5P^GRt=PF1F))Y_oQ6!S)xrtMSp{eH4av z=6HBVFrr(pH^Ou{o4?Zb3`ri$i#ye*^A0%NsLCc#4hS`TRCl!g-qpgz$EF|HP$74& z?uxwXA!9Ui@Nw2xTS8|L3Ije4$X0)C@XFvNH<7@DE2gJyziA}l8wSs3w)zFkeb)#) z$p`j`6Y+czW*?$HXvXLobAq1Pz4PEgHu43K>kX=&GhlOo-)`&GUxqV{-oh<>^XxB$ z7|h=K#KjEw?Ir$0tnOzx{})R{dCvw_3Hd?(<35NwU7hk#qcW_xrsY?4VKnI}c1%%r z!1>mW!vdq0%i!U}fN?QQMCudC)gCjEQ!=jad~7&9#n!ByjjiMH?h3+yV2mdgp9V2u z9raZzS$FlP>VX*3;Ejd=DxCNQJRUa&>%cb^G){q%*-ibQESpW|3Lbq)^x-087g=eY zKcnjhL?^VFm3BsFI47n#!{*_d9ldNOp%*wL)m!C5duxm0dMbsLsHJAt8Fr#P|Iyp&x`=~z zKz;saMMquHdDoi;!7l+@I?8+7Ik__BTf9M(!gcm=Aino~nIE;_OQ0(Q;29ZE0!qGyhDJB~< zKbMX(%QLooHFE+$}^!(gZ3D*5%tRL4g*ir$_zV%B-5*Z5?UI^l$Vc_aHXbLXY^hI@6Cqs@$;q>DA{c4UfCyND z3;)*0_z&%8p047rq5N~rEzz+jo2LHC`hGDC&KXTChA|Y*oP<}begQ)1la4oV-6RG4s5@ThuE!(m>B_?_Ry#MeQ^7mbtJWwo#xd0{Y^M^- zd>GWa-gL@UD}p0)EO)Rr+4!8FfyX3TtC>8f!%!GE9d9>3!R@WsiF`O`F;?Kt9%(nJ zo=z=?UEf$T)JzX823q~{RTdpFxCczb%lU2N56F*tl=7c>$lM)9uj&+mT2<2e#L{5n$k=SqHAT*OJcB=hgWt zLO0<*IpwmM#$wi-CFuTT(bG!82+p+&pUwxiwXQpQ+y5EwJsW<5qIr?CCy3~oNIq?c zNtNF`-=h<23nBA)eaMxce!d|}D7^wXl3evL$K}^krPL658xz`yfqFyiJLdlEV9~)O ziOR3KxS1GX0mBin?kP&*>5qQA#lAQd4=*Ym5{_dAzF(Fzu+y_MXku!^=N__ST6Utv zNO(!8;v)1ewg=FCUJY)P3@3XO(^RyEPxm%co9X=npnDd=~)hu_vy_w*cHDR#z` z<52(NJ~|$#^~9e0&6=3GEM=z5&VJ}S{B+GsudXCP9-v!wH;K`!6XnE zuf%JrxK{w&taYABqNCt{T`<`e-8s5rU#i8!4^YJk&85Z(9_TO}XjtlS_q6NFg86LG z)Ih{NE*^BAGoO&z8_o9iDA)MX7keRboNt^2P{F_m0bG!MRzTMkZFsHihzb#De)I!> zIu=B95y|S^;U#~qZ78z?g>71nwe%9golKDK6|^rG8oB-9kh+m^kvsy@ZAK)yY+Qdt z#7!z9FHSy@%A_if^O=Q(8q;)OkKUQ$ zQ>g8PvxJF?5qAWC1!?HWVuxIcsPCDs3QZcgf7SxcauoHQ0k2ozZ@a4hpa6aP#(yF> zziecj8s&7R=Srx?2&ZJC^~FN7JdtU{g|`Ldf+(JBp)3ub^{P)q^Am;F22@^g@WV%G z%+GRFMtgeXj0`3S54Jt4w`9ztKh#S_T4V((99Zi=)t#qkCoqk&O9V9&C*Wn^DJL*B zy2$AVnAK*_>EtGc6*@h5@nJMs2xlzqyab)L{=&m?`5oNMdL^KOcCUsQMXCo?FC^1n z_KOd8PSjhUt0P-`?TTw@!gR6^n7rVyt?i5F52GPTdGlyZu9OK=XxYD&-7wxEH+qUg=Y}*~%PCDsyY|hy3*jC53ZQJVL&eiMR`|fk<>~-tk z_e|78&H855_q}7h1J8IK%>xcsdjB>9TbOMti5+kC;ctIQB}L#bHE5uZrVHYhy~?bc zLNS)hFiFOe{lSd2#dBt;>B<24#ZTdoy}m6Cf)Kwwdhv163Jp0`1Z8Thac?^W|IIJn z>w{LbJ4Jo>-VZ5$nMo{8xU4R)HZq;E!SlCN(hSkhKfSVVW)aGNwdVh?@{9jD)&Bq* zJ2yp+k?s$~1CLR@!)g*)PrC?SuZYdw{}-$&eM<-lG1HIplKHZG?2i&HD;~28U^*e! zx1|0CKy*uIiUs6Qi~({e(!(Cgpv){J{)H72g!?A1aB zM2$Ja9pX~RujW^BNLIAdh-q_4%aCTXs`1C|A354M-u*$1y+7_%jrCjL64a>TFysDWz5* zQ*T+%KHoxrU2RiotCG0Zw$o_WM~Vuya*2oGZBQ1?=%^Kk%7oSM;`t;8nfwA6HUsCU zLwR#=D(U;*4Fos@X#{+T^udPi8R0=&sZ7wnNJoGWr>75J!aE9Lt0nDWw@-w;Ai`%e zIJ@4ZSUqvX<{4qNs^qqw<2zWkwH1HL0V4CrIKXniU-Tq@l>_=VP=MtC&+I?)nm_(7 z2bhM~L;Zi31OCnY_0L)V-!^;YkG}?iKia!3sOP0Po47MY#597-C+vZPz)U@3e*wq3 z2{%{Ffxt245tR2oz_E`{A5^>OFsT1A2<-fL0el=**?;+TW}p#FCXy7F@iVX`V z-FdPCPjKayOq^P^_<&XLDl_d%%oiM}?=eZFA-i~;am6iCih^5~Z~!Uqu|_}LD|a0+(d)3_H8o;S zX*5i9^-s{8x);mhVzxIEi?oK~YcW3C*(`<8Z9jLoAx<{{qmD%;h zk*W_Xk;%%D{QF+GcqB6xW|8}E+Y=rKS>w6cI^VIOUwLL>%&s-x46PVlba!obP}7`_ zVqTIQ)OusMl*F)8p>y|%@ddT|20pERRm7?D`fD1v z+V4N6fe&jve?tKi)%Sml0RGKH^{+MeABpO})OM;)ll}ueMjlE8Lo&u9Dtbq>!#*l( zX*nA|C-fzWvKyHEAd+_?K>4Z@9C3)VV}E6<$wQXUR<8MpRnDZW6)eDPb;Og0RsN-jO7>it{%aP6F%TuTYmh-1 zGg8unD!Ka_gQ2hf*Z|I3%c0N;Q5B<1w$ugLvBZ%n{<|3)6=>SAdF>|ua` zqkVz`-f{o8qy3vc;?L29MSz_>pnLw;g;Ukhz*Pfk@W#rb6crjMN7&ZPmkxucDtG5~ zP(dq_))bJ%g6i|g%J&+i45wjFJrTZwbUq)*5FTlN*7G?kWfXYI*S%nMrl=vSa3kpK zn0$YD%V76?d)uS_fjzg&MNb?*jN!9(&7-ge>Ms8Y4^+&HKUO>LKb%9_nZ{>75g0Z9sg-?0u`$LM5K49&x!;I@Z$=td~jGOS}vvY&f_u|9YZ0K@Ype6c%AE544}=>XDD15nBpr#*ouT|9 zo2)4dPC$jf3A}OJOO;S#oE1NFjs|aHJpL6Jjx3w=>WePRu6hcf5@hOymbB4 zHfut*(@7N<$1J9)-TNaB6Wyfiq{t@IcG_KjY;0^T=-tANdDUXfGRJ_6qPyC4K(A_v zJ=c1JS$)vRdg_*cgsYk7fe3(mukxWSVh*CNVKigoW{5j+7~#Y+ZLCVw#Y(X&V)Q-b zxax%lBI2&Y+xFvE`dP3)Ga0(>jzdtufFVvk%mh$+81DeRJs<|H_(`){3yxZnC~pfd z4~BwUS5&qeY6k`l;U|}FR|U90A0?i^esve|WNw#XTrWz9DS~@^bGQ-8;uUrXIzl0t zKo=(7g_EY75k@v8a|jE6J?NXSLn=v?aGtNV|9kZu!;{4LOZ?~S{ghaZz;-gS@m-m; zsbn_RZK{2lEsk8FpP<37Ym4)n)rI0bni|gdHpMFVYZ{DhifXgH_-iV&(+D(HJPX}v zJjCvbDwI3;HUbZ*v#W#faSo9MqAaEF;ZdYQKilq#b4YiUC5w>IO#o@wB+oyLI6p+A zBfc;_qAKft3vMw!u&nVe&NeT%O0QF+}gf|Ss^PtRew zqEI`%Y<-cOs)8@L47%$RY`u|;ynhk&qA!@-UHIh1std!{=%)Ax|livwZ2T941w+Ezg>qqzOmaWyAVr%XvfTJLP`!@_B8 z*cL>weRl2JC`JBMI8X(37;sHtzy&`oPAUr9fuxgz(7IHzVuy);hV1_h;NakA6-en1 zb5B$3eII;6g7d!Ty`C&|e z4BP<{|1qNeH<18;`|bbZHTf5w*fmbieiq16{vpRb=Up|4>gKCcBrcEJRyiW;D{Dk7}y#djXd%#{CV8t&HJ9_U0NCF0|U~l z&7;O@l2X-UYBXq@zeHQdUgd-ei9-V&TXYm$vy@hAS`?|fwX+c{NlK&vBFTr6u>0~C z9j4v}LF(Z5tXr397Gk9dm!K6Io7T6soS`?Yy^)wPs-F5Dc?}16>%MDg=JS4qxoR>H< zo)~oXFB}i3W5{;@ow4k;J5Tgs>5 zV7vum7umGPy!*L&>NUC=JI=VgBjBTkZtV_m$nFg+-S76-s-^T#D|3mv0wy`(17O`}&Fm)mm z5)%^rW8Id<|K;ny&Ac!HDC{SMHuxbTqp`C8J-JM`ps))joD<0gL=F{HGy&2Zrx9T4 z*tU8mANP{#Jtb;<@>hUo$~ViPNFqm8pUUby@jBrRhA<;OLqD+qt`^AxcC`jIB-p#f}9Bh_>05%)tc7t|xA3-F9++?7JZ!>8y2wxuw zt^#d^e%MIrVl{i{lHwyX9kWxVQO}w*p;$b^lR=ChS53hvg=_ognnSZSHuoShhC55A z8V!_&U1n+?l`W8}<~QU@GMR>ii!Mr=1Z5A|zSLw>Bx%)NnkfKs208dRIbw#jHro6< z7bC-Z=*nKaJ?vuqplghlmFVG`%Ei)i+KG;%`qww_`~v@EOuxA05gUDK%QwRJzCFq! zrtnU8tJw=2p%z7?nI^e>GTXtS8$n$quI9p?gwo>%2M7?2z|A%FC!T3=@^liYT2rY< z;i_BE;D;Ci#*0?o4T8zTV`WQ=#i`s}6_Mm%J9vH^FZMgjqeZ4J1Dj2YCJijF_>%L{ z)jEZSHjE&1s#ikJ(4n9`Ly_9g=Z@JMnAEQZVjb}^!?+l!JX4O4kFFL5JfD%L;{;VD z%2?URVxx`GoS`EPsr{hGXzOw!bH~6;F%mtC$4G-a#SaPA zb6Ssd939J!O6K5091Y-7rMhj z-tb4i=6;u@_cKFd{Q>m`;`4x;6mmeL8IdDyS}YcZUnCxZ$R1K`KG#Is>5mDA&S&_9 z0)rT518)P{T{Lv)5Y2I!SG}V9D!j+{MaieY=%sfDb-stjVfB-x4fkUGjr;Q@)V$c;gm7vmqTzQc8 z7hM!-*eip&U%?!Kr7SzM4Eb~Q6Ibuu;i@2ySC zepV1^@Poo`je>!m|Hn*H`hq14!=n$|HcUce-Vae^#E80PhG_idbm1o|ZxDTtPteLB zC@59lRDI>U^}i_voH8VMu8CJ_%}js@lFh3_?{cyIJd4-MIg$Q+i9CpB}ZN!kU-yb*+Q9 zLbo6NRD6zuoahHd&6QE24%%}l;nD%@uN^J5h@hVRB6QW!9!}><`wlCz_jo$9q{<6Jlncg44LhvFu!R%)X)e^n> z@T52o)La6Oh;lAk-LY}0t7nVkBb#-@d{PItcXV;VHS~%CAF01`Y~uk8l#%<<0KR9^g`FJWQ;-zngIgOu|@WWOekmT^Y`kTNgR4&&H;@7IGMG>){R z9|$%o=N-TiAhaQ6NO%I$gk0`moRDcQ@rdmy&%>k&#X-5*6+PXq<1CA6|zO& z&1aK|zW{i+*?5cMUz8I6nh#p3Sr;-Jv>LLVVL1cABY*d6$I!-35%r6v74c$7efblG ziQ!M22?HbJzJFBQ(fq$)&;P9*E6dr>F(Kj4k{698G1xvcpuwPM5hHguK+Yu~ij}sa z!{Ut$yNYWuMx!oI%v{ZK0pnw(&}ElgzgkKs&+m-(;;fVJ@4Kg*pFBPzV$%f$kbdTi z{4y|1WH<$l3)RDYIe{>oaaHe85jh3-g8ibGiLU~tp zTzzrGRWTZe2vN@j$$ zg3zP(7_;V^jTko@WPh%tN-H@6KLRaYrGw`F)S*LSFHS&|L$zB)R+}!k1deIgJ{m#lFkdXtl33Fx>$X zDCC#@SC5CKP5rnR7=ju7W7$mX|NlbzJJzbug7ya7Kl^6sUdrI)6rj;1+jGmT*4GDt z-lx>7MxuoWmTe_AGTIW!8O4LnmpBuouV$n>x9<22)`y2TO9@vfXXq@i?PsK?uewaE zKjuytAANX!znmtMV|>1SzI(>Md~C_yM9=!zDlz_~Xvi%WY=xaPS}h!$$WorPt&6=d zAx42?1GA zndDtl)>bSf$0gV;r01LGf_D89?Gc7h6Dg4H`?7d{VD#&m7_ZfHdVn@_uB(OkL9~WJ zW?mUsYyr;%Tp;Lm9Wq^mD_N6#zUyg9md>clthkVm=&6RSv9`o5YZwjwwz`@nJOC)w zZ7!?!O58vCP+5gS z)@uJIag-nZKsDMuVrCjUf_A*re@nm2Ell$zz;@e$Xk$YNfV#k$=3q^_YK>l$z!vPU zH}Z1z+1J{dXs)O}wu3B)&R*>SrK+~{`@Ge*dZf{=O=NK{yfsItAl;gxPL=5VC=Zy@ zO)@01@0`N2NvC;S3L5Ch6`l?S7@Is?a=OSeQ)Hh_xlZsF zv2>Q0ny)qHs0I&dTHVNoL%muU1cOH6m3(2TvWdai(@7yuXZ$sFv_;V1`%_|)V1Zr~ z&9$4aF0=(Tg-hy$NwB}L+*eWCX|OyQSchjGsJ)WXIo^4hVUg_Q@bQ+C#)-SH zD<|tNS;Y;jjW7Ac;i6H(RFgamZ1h_6+XytQ`%yv4dEW+A}fTl%zn{wL~Rr?8^S7aJ8{fT#rxy^Z$XcuDHo6BoR|8`V|E+e#1 zGhf*X#0CgqnjRM?Hzi%m#}Ms+69a!LW6zajO>;7o=z#`uNgB2gD*uXYXE0)4B*Q!! zlM0RjJKJ{gsKwegft#c;PRbT8=W%3u8u(aqd3Lt}(#-3zF~Rq|?xpnCT?C2Vm4!9{LOxt8;yNnx2M&6Uyh2BWrd-W6 zLMtWqBOZ2)+ol>nHjBGTip`aoUh<}6zZn}AG8d7c`u+S=!k$ zGt3)P1inmDJZNb~>W1nVr3q+bdF3fKGerfYQgE5H$Ihp{ofAoJvqfkJ*vEo|?sHM~ zLV?3?{l|pHs+w9xIrHf~OFsMb-rG>gi!VC&5XpJghB%@MbuD(vKW=A!q+N^j%gKnu z?JL#v9&O{lPRa9X+fr5x5>qoV_pn}O!6hFc^iM(a^H><`?Q05-vIs`!bb1xJJh_*Z zq!o|sAvkBsL6!X8Y4C)C(IT1j?Jk%@V!n38dFOthCEDMUx z$^o+91<{OXJTGXlaa@wbHYH+c8kqkW_1!?Kj+2>)tx-#Wi$FnE*BK1fKacs{Fit{F znb@0qzq43iM{=o>!q>}esk4kkUf8?c|5lz+S!ziT`MFAmli{hQVb|aOCJIs>^Z2@J z(PT-$hRoGt_bKux>`n6)_Dq?$UwZNpTjfn$ORYns5ym>|>{joBh3IOw(f+{i{Dzr! zC)LQHuxzRd8M!RO%u{WzgzN4e= z3fr>xKx~dpE$&EEtH2?%?VI@TGgj;;wwG+cRhM5PtjimN$Hcf zHxnL2n(|uZ6_|$$g9GEzO>^}pYfj-P2e(mnQ8>!bu@oM^OJF#nLu`6Dvr4aQgeTvr zgqy_QkVOR7n<3yz3B6{=Y9$cb4H6$j_iyD9vEBAU5+#g@oi9)#Ptp|TNV;`W^1#l_O*6U-AtMdVT5WR%oGB^r^eu?Wh^qC;)?%zMX?d; z#j=YEEW^U!9P<<8OAo%uxakx$Ivr$mJL;j}eioyip0AuWzq*eyw%o$9n25ap7`ng=5U|bJXhnD{-FAewpK2dJH)icDeid9`u~ZOM zJ8Fw9^HN(Aos<|cNa9h@9$B>Y9#b8Empu41E{S-SBC`kqxdn>(ip=0FM5*4kWvP4N z|AqCLtkR+Tt3x5|gFzJRg%GIwb}Bt=~$SspbZ1kk4Hj_+YmtaCSm|B`HK+$OkV759o= zJ?Zn!;vUbIJJvdw`0U~-!bXjN{k?Vh2^uD7&zPG?{Rb*t`vgca5d5R9J(*Y74}3Y! zE6fzCujdX;dH|iCxgc8kDV7e&p)d6#i4R8)%IyWTI+x4R&*&N3qi#4Ygu9bMhoIG4 z?tw33%i3u#cXp9%-!SnK>H$p$s3X(w0ZwRm!vqKkmxUQaq>>h>R#~BDN z!9usjHV!^t=1f2IXztYta`gVld9WxC4vP@k$<&yB#H>;28+cY(z(p?d;4Tj+J|BpN z;_c8UGz^vB)vJzZkkMO0?|rw>uV#pB>|2K8ed0;0)~SJ0)^W%<(oUnODa~LM$(jvz zpx^ z!BZ<5lwV`CZ8AbAuZbV~z$w}cgOe!bp+dB10|`#&K}n#8c8pj-KG!4Ox;&MA9^~m( zitYN@W@yd>=_9#?JO~mmswV*&L(pH9T?m^-4L&Zta|tiCP|w&>OI_xJWa6n-oX%wD z`W)Q)6*t~a?st6U1b9$T>$32=^7I#eKOb|`h%p24+fR%?lPdBBvG7t)6T zk*OaYhSdp6hZhm&qd>|Mq&;T~ztpStF9s8qxAAF+H|nq|i_ucZY>e6r;e~jcV1z-B z3WG8H)EYtaS6i6fXMbjMj{(c$pxf4NE-|JNe@DrNM3h<8%;N^K_ZaRi_HM_tttHX7 zLC72y++Dctp-(;%Z<)l~l>&W50v=V=VUx|Ys2&*)MZ3^^Nqv_Ou-lc}ZZJyCaH(7n}AeKgOfU9XtwTNXUQihY^Mgwkw~w;ocOP3}(weeZhSS019%0ea*uE zl6>XMdX=2qdJFeDcjggv<;#3^nA|E;+Y1BzpaI4a17@^mUzzo#X+>;8GR(&58jHH# z=@^d8q8@gex1auR%q+TJfH5nFMz6`GFajuccA|3qli2R8l7^DRF zZAd)Ixs#v}XDAB#d)-1*D$vl9ld%y(j;are@bmZ&u~+KxNE;?Rg9o z85TWWzur8IM-d&rDB4r-=9ej9t6v(sDVDsSZe$1f6?>+B?&Fknbq9U;7{i;uWGCxC zUT{NupUCT(CRWdKe42&6GvM5N*cQeBPE-D}K4V3^dFZObN8<(W!h5;Jq91KQU;0K5 zsF(ut_T@5R54nBW5@A)Bq2^=dmRBd0pL~4$kdCV<9KpXvVZ8yB4b>}QznhxH;az_##tm^8Gt$Q!`Glw*b#&d4G zRvqlwg8rx|WcBRt?&y$PdZec4EdSI^75^WW^8UuV{#STJqN=sRtO440{S;Mc5Fzk=9^?jEgKk7tG%rk%M-!9*izZrfeW83M@ zjXh--u_FE!L$cTx{EMxlJlpsPa{{py9ql%*N(Fsh`^|va! z^_%`8+n4Hl&hOoI;Yrxy44bezE;pAR4k_tERgeNd;-21|goB?^k#Un+3?2CipVH-% zAiXrlkhvV_I*_<4vp7V)vsnU1b3`1ARfs30xhQi*gntI!qO_9f#!iuL=LO0DYX^|d zIzT(mGQ-k&enf%ZC@iw7(N$E~2>%I0S^u>D7GGMU>>J8#BFPUQ_e$G?6uVKn_2zdu znP#%7eyaY}+{|(1=iux>%+cN~MwR7DJHg%q!utntJ!HG1pOW=vy7Zv7D{XI6KXDY%_?lv`3RJwJbBd%m-SL z`5z%z6>4<_RMub>VEJFBe){x#L-eL9t&AlY+U$lcNQNQC7nB-~)@W`WEGg8hGNn)( zA3y6qX>R5&O>#A9cMF<%J>g-8DK6})ufKYPY3Mg_>K{e^Kpt%5 zbQ>Vt_n5GQsuzSv-Ok`Y^vSxt|GszW`~3s8Yn4iD3Z*+884iZ650a%b0~2ZxGHF07 zs%{?Z>y0bwFz74FfbMfdZ@u1@NX)nH&TzKJB~^8}nJO6cbSJ*iyq`mQuuQ+Ndw z7RnB(RXQ`%q!9{IRzfc7mGXOhViJ=v2erA(eMmfQ_67L$M6>0Z_VBEl#i;f~{L#a3 zlPWYbH=Pu3gOPZ1bX&hp5$YxrQ^KNqPdIv*45Ll3br%})s$yq3@-mEy3s;$$Io8wr z`Z^QXJHoyx@2{W47EQ>_TA151ek#$JK=5;7!a2`m0|dWyYXU?I_goukr}SK$UYu%d z($QxfI@;GX3IuP8)qH*R>?#Rl1wRn)^fw@Im@XAxJ{ixmsmqllXY8~lCPrVV!-zW4 zsW5(1*C))*!FY{}&PcIpp0T%jDv*_a{vu7j(8B$a15ZsqO5Ljm-FcxVU5_6n?-0#9 z`jDpgy0Fp4%pCK{MI&wGeOY~~a0?z{9mWgoj)p6LtK8oiW<%LQzZ(L=5dsXfW0rAw zM9DAusot06HaK(EyhNUtbA*!{oscV@+b~hRpsvXt&5Y^0H(SV}!Vg6K^rdOIi$G%Y zuL#57_H&vQyKnA}cM!?G`3M`Hof^RH3USzFjMXbob&xPV7>f-a8bb=hr@3^SJ&--a z3|TBc7%jq$&GN{=5gCS2l&#(0j6;oMb8#xn8b^N+(&l?{F5zOjBQ}7}uDW^HNIEE5 z3tfb6qnjSRw>f_Y#Y{EQKwk{!QMJcZHPVP!`U_)Iz6T;=TJ*}17bWX1X> z{7g7BiF0fSnt#A+taoq{J{)~xP~-LU?w(2kXRN${(2I04ZF|uEubk(X3DOKH{{A*x zi({Cd-$jz}MCUM9`#1!?y+Wzf^R)ZD<44k6Y|R+e!lZ3*bV~DgUtx5v1q&s-&#~5j zY0{0E?Q%rV`E8*<8!iZfrq(k~1qFR9MsfGtdhv_3!_V-aR zP5Ea!GT(=7P!3E{uY_nBP(jN4QE_32VE zi)2jE+@h%d)hIZ`sF}7!>NRfSZgPG7+hohPhl}}>&5x`%2%>;!IJ;&}@<`0*EHj*jCEJBkwiE_Ke=}yg7G`VSgGL-W3PZ^$ zlkxK820d|;v0>%61H(-$gU0r);c1lb4x$!>)@gr9%a7kOPd2 zGv1U7yexEo>U5YcySk2AIdv3TM_aSFN-Vm$6mi&CPv-cS%3CM1ECp9`==G}J&cSt9 zk<)crrnNnzLlZCFFe(I-?Al^0VIP`gBwt5I!m?~6Ix30F4rD~iuxtPv#l$nT8|S|L z9z~fc6o60bWwokQo_LB3uC zcO>ogxUzi+Bjt-8$^qp5g|q8R)>VXFDz5}h$AdMIdSl&a*ZcX^@707**y~xND&qam z8OL%La;gsJb5RPs?^|`$TmcGb8U6A8N|974e&q%jXemAL5YUF=*CqZ^YiM4%p5(qjN5Dut5TqU2dM4({$??j+srZ=$2v}n;Prcd~YLD`}y5wDC{ z?$L0E?^L{RdAEcp6^VX)(kEF$iefGK73brxctT!zPH2>igU!>`i%F2>iPvgcYj4=l z`Us>o8yp2P=LuPeY{+7%EzAegvNl8B$mAHHsjZ`%>-r$@a?=UWt_f%CIyy z|K>oGjL^*(BfLZim_RiOym-j!(>poF<0uJbZs)CP7|NWaMyrG#coWYF!Hjf9+0N;( zhu3!xp)l94Lb&sr4qBoJx$1}xUr;P|{Rlmg;)d#LsHxt1+QQ>O-v11Km^MvLO#|bb z)qez={7(}L6&EK{L)*V`nty`?GBu#R(ah056dqE>&2p-Vr^xYeC&noZp`jK8jin?{ z8@F{qFzb1i;nMxa$7*?TQNZU2fDL3Tet*dM(&=!R1{+BcXibO;$oj$!^;4hCg|_>S z<>m1M62I5)o|}&ymmeFCm6tws3Y||&*q<8w$Ag9$bPs!EF-P=L&U^4M4_ddJ4Lf0B zbv5^d`+}N(hzZDXdY9B&4beOHH>oJRDC?b{hsUYr3y8_Mk;ADiCP7g>6gI4HcVXjPG^2#7p3 zP<194#r8AE1ny-zk>pxbfKrU&*W#Er^+J=Up)irsSVzErO)qayrn*U!EMjW|NK>MC z&0IB{R=`+?mxghWOX<^w*R~0Fk%>i=q}8hb(waAcsibV{6l2EO@p5t3T>lA0HOwlq z_mc1$?mZ4FeOnH1NgBry?96$fSHNV}LJX7riMoyHQN`1`C%h*5Y@86?3|{?}E{r}* zeVGaQ+l&(*dbp*RvSorwU%XLx4F#r;FdD-m0NVt#CaseWJz@>n>+z-j}YCK9g zxA{nanR5$@rbvzz6<)gT8NGzFoKi?m3bk=4T&bXz#niRt@_zp)NAARtZCQC0b5-Vu zuU+jzc2oo!Mo!*xEJ=16Z26zqOp!!i#;+!@CafgOuGK43gdH?S6o*n^0Exn2rpks5nSSx5u&Qy$JsHUuX@R>Fhc&({qNA(4sq;$U_IaiL}*$dn+@Q#fMjI~iuu*?S9 ztz{N#7i)FDKMOyUiR+WA2QXG&*Sshwjrw1Ce zzEUSTmj~sPsM6^ZYuL)j@$Lb(E}LBH%Aej?;NXKoh~hT5YN(t5Tye>>@R7DWX{NY2 zUe#8G?pFZ1EUp#b(v)NzXW3y<8Af3x=Um&1wNec|HKh|w($@-5mUo;CiV_GN3t`0K ztb;|O={z(SySOCvL0JdHNNYH$6Qz?Tbvd3RWVPl19Iws*t(foK))p@03FIU=V&&-5 zWIJZaO`#r%p|PPlVrvw6T75jor(!lpHA;OH$mwE%V(r>}7|1$eHkdUceb!>_@_pwd z`iwj9Bqqr8BzYvo@1toF$BSi0LhI9f<)*B4o*wDs2d@W?tJJv|Y%!bYP>sc&B$$3b z8jL{)sqErY532CS{a8LE8GLD@Mm8A?4CTkU7!)2kV~!rmo+509ucByOTxa9SU3U6@ zqv4-F#$adpHyWQ*W?;>|dX*E5Bfw_#!$S)?*vykoEypaAzn`OG8v1oDNx)HK&Az5h zqwx5f`f$g-jlSh7u`KaDINPSFUJ^Pw2QQ8$-p~`Vg{Ky zlYbfH-2(ocw|nsDWE=};30fm3kUfQ5sC$)ctap|CtdEzBuA7&7{-X2tE{b7Ef~ECn*njRK^jqIipr^^hFuX=toHpY(O%rR=)`+DkDMc z)PM>02JJS5w_uNz%k2O%H0O>8-)|;+Z&6_gf&|5w7^!9uM5*F#N-~>X%80n0pW%*( zUMb#b!@aTsy?a=|7TI$K?m5??IH>vhQUGIXTpu(Am~7`sa5pQM0+VO_@Zy@}E*xt7 zk-^L`O6HNPF(Kn4EB6nHb*@kqyLO0}Hb+RAwJ^puM@|+yyq$HC=B)uk@2p`*3d+v9c3*@B86{Yj}1^Y#h4;~8fPJ^%c*Pi5(XxDfOr2vsb@sOS=3lcjqsg(YYa_8N8T7+8dly|QOVP;3g@!! z;e;Lngy-NGwm4@y^)^MSSA}4e`n9+voE!VK`oyEoAwy_T%88}WfxtyY0|`;H)ylHJ z6+_+g4BPt<>fnwP`B;KwCgRd-4cq%y_&e*9K4T|;EbNFf3L{IuhW3shP0TD>_GXNa zr(-ht1@*}Blc#z}EN~q|RNumnS)np0f7W9YP>RJOQP9Zl#f|COjEQcyg0w8Z==}vz z{hj#d2PIe_|60`VvdJBX%vl-nw|hQ55a;;rDk)<`GUsQ^wA-hq+Z6L?R|J|L0mxY& zsl$Zdu4!5FA!V#5whcHByfWF*#zuXfvVW*NQEppL?BqbF&c(R&kv{A^gJ8U=a1!ot zMTk&d+aUI^V=6Ahw2{u64Sc(9qLBWr+cRa%b`i6c%gxEK8V>#U#fC{&0Zz{Q#+ zl>x=FYs5*SKgf;8<1eSr+vWwL{Dp^_=Szii(rQeP+J!fgE)1qZ+lgq^EUnoUtH9Xl z6_Blk5|Yd<=hbjx!irYT?Il~}gS{nA#Nd(VK=Mk? z^k})njbM6hmDD*8*VGa^TV^t$CrrsnVFU~y;-MzxBUe)J3D(-zRhWXj>5S1M$IG=@EdzL8G)0Ek%xCR9^9|O z0dVBgtU)Dw{qcv>8c1L`QxE;=6CB1r6`)1`hY6>KlcB@^5+!N^qr`pm58vU72{Tsk zB_xC1IC%5g8`EFkTgP-V-BQjF<`b;R- z#|k@gFJK=2Dj5Hsdn zBu{8=k~n|-)}YFEqSoM0PMhZnpcLY96{=7O6K}El1&Kr$yj{s?(4C5c&03> zHM~2R`_GQmaxwN8ZDo!6YKY|=3V<}HT*kWkMp1(ew1+9RidpKkB05A7#@H=Mjaa0x zn&=Bvu4J~_vfdn(pCp|iO&Y-rDotCeg+qS$0{&4b&9KR5bBBd9gfbuj!Yuf~UURpF z>bZJe8R~k8zS``q;63+LQbLi0*F4{LK}Ku_?kP(}%6wM1Xxp49ar2jwGBnHlZt2o( zG}C3mp`!Fn$_QBIg(AA3gP?g$^`Mi~kW}4J=I}2af$q5|3&zkW^i*iJkwMDanae~s zXA_K&YZ;;UVy!Sn<&1qnPa^BWzj?)7Eg8@#O4LTs2G5ATV%snn5A1pBDSmGE)RQ>E zE6b;kif4n{LLbG<)``4jv2!QNIEp!~5p0_=wVmS2R)HnLk9(3w;5UK*pli~n@Y~(c zjnRM7Ca1ri)%*c-Ua(uu-(W0ZX>P)7R`C)J!}AkOB;<7|haO*M5KLPi+=>c9iIr?j zWnNJBLd|RL70E(F)$+uyqvNZ_aa-rs2p!K-x^dV=*Mp`s>|;n`0f8Erw6YFL=wl$j zZ%qhw&aDp|BXRJe$aS*eYjp%d=ukA2{c#~VOlm(H?v(DC4E0<)y9Jh9n8GPnx-B-m zp{}>oM#{1_6!?JP;fNb||K!hmZgQNqo{`FGoKT(LY_VsTBzp>THy?(XjH?k+(Jg1fuB1=mo8y9KwxEx21Q zdw=KL`)+&Z+wa`_epJzDjiR+$bFDE)?|sbPwcx&)Sy%`1_IwYQvRPMuq-qg|@%{}g z0>_!gP~1lTOe#SG&e&WFWxuvvBYQ>PnyCyl(MONyDGanWV4$jBhx# z$mDK)i{xD$N8OWbl@wM4^`p*9X)+oGheV@tNG;MqP+@fdApl((qsov`fGz_B4mKOL zCaF#iq=vdq0kMW%ko4^MAO>=WHGF zkGjBg`8HQGwhMgc_IOF-#K^~8h@D;zNuQa^vIv;H)w9;5bk|d%Zh06nZq=GMZtdT_ zJ7e>{PDvdr3UmJ6*Pc1N`5cwYtemyn*u9gW+sk-jWd`%yrzcu6N<>#Ff|r`sw)X|& zvffoSbXuNN`7%|7rqu=R@-tgBk=?6Rec9p2MP(hRb6U@I`J2(zAP@#;LAypo{zpOe zuJ#U_r@_)ZEM^M~BW<=sf2G~3&U|!JfhMKLWZcm*%R`JidG`9uk_BeS1&EV9l^tfZ zNUd)qAOVNAsiAzwl*-*XBNexeujd3crUw_ga)j=vY*crTM23O^PvLZzQ~| zK_jmoAD?QLd%LrBk~a$E9pke-su`)pqAcsq+J@|6dT`$u^>7~*RqUxb&~dJXbCX88 zU0s$~pCH9oGJIe@6LiS3-n)}6n{gf<<#NuAvky_iseBvWDk6*>KCn=Z6~ei4lpKJ= zPjP~pVNo{;hmkO?>Q#EhH6K!u%}H@$5I1$*Y>nc`ikpsM9N{7|FupXyk#UqB_~Kg( zcLwIHIH&ea9%hy89@sgS?H=CIk?sBsLcEWMKO11wZAB6AfKX6yZVxi72AwfI;3V#+ zKYtsBXILHS)VU~tZ-JD`N}3=gB5lUXzK-qGGOSK?BC+gXF?UW7Gz(yKwbCA@OR9o{_}qCdfXuI{I?6xb4)IMC<0s{ zB+qN1!S^cc>#=9*CIbFHcfw@-K|3DTS%*xo2B2iW`I%thFV-0uOcOBv$t(8{W;TFC z51~yV)%+lxcY)D7U~H9n&usQvEi$+7%*usRn!S8xQFF3v^9dpCpM>u%n?JfYAY~on zp*Ha!T6LEGXuy0D&TiI52>JTE>E5$!Rw+^;uebbn^zjIm@{PU51mDG0~q~sKZkVP-i@B7UJM+QoE{0bBv5fNp}Ovo4` zXiCQjHeoYa63(b!k1|?a=Z@0(8g>rUk&hg~d@P0mhVX*E7W6Bk&;8`+B(FSend<_# z@>HHS&aEZm;Hkjdt;!{F6kCZXItY;tkG`UDF$I44ynJ>h+yfKZIT;E{_hO%J6t<|&ih_F^W#H--eo>_-EE6FkIABp*X@6Q_v2fH~2 znFtTA7qy(0j5?-ms{U!m@Y2W8%;oo!!G?;CY))#J#JTFWBlV8gKza!9wP%rZAX z5qR&_e)Esy(##z6S7pRTAe<^d}d6Q5>@B#ol8&1gNYv-JA*!kJUUn3OtkP)BUvGo@#V z?ArfuQnwxK{Z7Dgq%0@rp|c)wM&gZGqJzkt?2e}~!5)?Qbqy`-ya%O{c`|75asXR` zn!@J7MD)&3H9qV?RfO)X0#p64MbhC}v8^RS7rAfT4@U(@!b1wOyA!59t#`ws`uxPIt zV{vWOR$7*qq>CN*^Og;{l!}#;AGS}B+qg}6XD$FmX{b#cA5JF^!g^6-87^-)dx`ge zLh`PKaQ%z%&p!OTw=qTf5b}adxU@(ZSGCL5tYd|37}Y16L!oo3o9Aj#FJIKjEwT3O zTrm8Aq>GY>2itfwbAZFDeAmhTYf+5%XQT*q)fb|_bm$*apVq#>zk5fG`%nG1)c;NY z{lAXV|L+OFW>G?LASQHC%4QB7hx{7;nzg0sJPpa7+>A61ayj^}40xo?d{KCY4;Jja zd*fGb0q+)tXib{{p~gP{8ENc13LpMx_FbA5e)Q*w(h?X2#SKipUAiG zSNrz*_l5%hhbhQ^EAdk9|8KjH|BSj*)6+n+c(WXR*HIN|C|K`5S8Sb$WZ0iqplBNu zUm_-`Xj^13x<^h&(Q$Z6!7dQ0@AYdP#LaP$D{%^mRA<~2Bcw3|3N{#ZLh`dr8ZvT(=mLzZL;)T(6kmKax`xlgFk;t_5;Jd? z9jO|6IaxSt`5rdSVOBetac1yDy83GlO`gDynwonJ_~(pMUIo_WoBhyAzj|+h|EZXFQyKh5CpP zrDckpwBuR(TKT&ccSS$dA|@KsP*tZ@J!l@qZ%`m&3?q0#027X51NUm<7)rXZHJ*ZQ7b!ZL(`b;6BrTE zw+5=vd$}V!T@u3R(k%k@B{{z?Y<1c5c-hS|=!pNC(yRT+w$?Fgyk!{^H%C!8&Ym-g)POiq6*=PVo?$IqJ3&83!=JM7wO^Q z;bq}z;jQ7!P!?p7XM-k7v02~wOH;W}^=z{<(=j~_cUSTXvn?mw8m>6)LgpnbD!vo% z>}WRM#VI5bA@62dUc4^}y(BtQwbvo+g`bIV06Y-gx0yftezPxw`jh93uGJ#ti+Dh?yc(FwB@-S-1@tVs$Fzs5Q99(oqo4+bkvnJLPPf$$o_KsYj0M>^|o zkl=&{uS@505fWL-g1X8RihyM>+8SDGx;l^%#dDtk-ynBY*P*$y#f(+SatcB5L*KK? zpLXV1M`jQo=9Ak%)7J0A^-eg@x+s=f#`y~K)yLRv=e9RsEy#tlI8qq5O;rkchJ-yGK*$$=g6W+7qh3 z=aKz&{&J?daVALo=>w}Ma)C-D(HH4ry{G{Z*b5AXz7DhtaLy_%!oY@LK$uSKfc3o- zv-q+*Uh$raKZ+vDO#7iPKHgPk(r4@x<84u;_fLo#DPQu;kQ`ZcBsf;pz%4t=We_id z$@SA%7`~HjJ@Y4g+|ymcM_Sl@D|v^;=LfH`j~;x;t8P^IU#)px|1M1L=6~Q5ziIJy z|ER_P-?*Kv-U4V7!*3>6%=BTHTusczK`*#8!u1MEkk^?)KApV^E5v#R%Af&sY8% z<1%+Ru`>%evfO-UhTEa3@2{Uz4)ZP!33L>?9^K_ye+=4ml( z1rj*Xi1Rxa?@SDT8!{{ORu%HJrc3{RBe#pcA7O^opk8o<8v~vF@EV?&%ZeE#NoSnC zYu%?+rAoKrMtTV8CJcI&oS+kBDGf6=Jq#>$ip>u@Ehzm_NO>gUbCuF&x@d2r*xOrR zgzG-R4n*u|G)13jd;a}SQmDhG)vKz>vK3rh0BMB_nj>VsQtu_sd@4_L)~Ys5m$I35 zEq1h~R`H(BTUGKIE0d_@Mpi$I^YWBHb)ZScJpQtOPL0n& zgSMvl3hubE5&r}GarY{#FAp7cqXUV@67gfwShd-#@_c#6OizzIr;7xAN0~uU)n4U8 z)^10WX_zbxI+aNBk zo{rVIl;!6;Tanhkg8aYx9|Y@d5(B2II8!v3v7lM`t_=To3TaBL!QP zE&;SBq8rYffZ1zx&E@GsLfiF{%#s!cd5OK|d%tFJJ@2(k?sf$gSG3$#2^0R@%t<`& z{^k^E81Q`d5p?-tacB2I%7`~9HBv>836C0i{~u%F8E?}JTsYwvh&<-~C0!faA1I3n zZ91$5_nR!cbg{NQSG=$GF*V*_;wF9-cr7*7q@lFo;Z1_bM{jdb!Pl1}SPM$uz|ayO z2vP2XeqzB8VjN%|pd4W2Dd}x8e@he0{mJ}o8~O$MJ+uKT7s+|6psu0fCZJ1p`l5re zQ^^0CW9P7m7ga8L4v&?DH*{Z^D{u+<3uKfe#EB$iQt}=yl9xyr-2l<}bEFUeJ0T6p7+Xdt zY7;eh*bs(!WKHQb2LzA65e(jBQN__Wz1K!AU6PJ~-~gF{PCz#B2QUDP-c8tt1N^Z% zo`))m2`?nOZH+t$GNfV|V@|?mU`-0n z_o*pfKcG*LL&D}(6qFXp(XC9VCzDhAAOqI<@<0QW-GnGfXG8qo(()7h2#ijTjz_WJs zX>woPHD6KTr8H^f-7n6LKS0AfN^HMR9Sclsv$sEKx*weG=%eIae>p~v)H-Yix5nc3 ze1C$ioz=eogBt$Cp1XHe4e3zrRsr8x9;}&#u&4OO@~}Ts)zlcqnp)o*>HfA-vG(-B z@ymFGElHiuFK=Pe1J~M<;9+HyL9+2Q^@Z@R42-zPF(}bNN1p;*{wgmAfj|LROVfLCJ_Fl^Kq`O;(?dQ*C^Rn zk&o#4xUEa`4g&o!C4G|~6P(2pAhCehNuX$`bAEY-2 zVf&u)O^_?Ed|lO=OHc)-v%Jr{we3;W%|ZI7?)?AIr2X&i{B0BbkI|7hIR%g)GSGsmF);7`r5fwZCK9;@4g*gN7fyd% znKPuMv4kG*%#QR|z^>Cgva-+hqclcRo_Ds8dXhcrZAG|kv zFLb=J_hXxvr0mvYWx70nxBxP>J5u3IfOw{J46L`ut`xU2Tr#gMn&EJzz)ncdh6g!9kd!6pq!QK5Q$4+^R1P5H=<*o;!~n<*TP5Wu*a3$MKd z2aVF?M>t4Y!oC|x1A@h$HB3$m!za!fE;S14Ot{p$j7~a>cPR1A?aa7*?@YcMwv%>A z=1iZcF|t#h-YHB`n>I}QXSmQH$i+B)LS^|9TKeyS=F15;1mQPR5aoaLW&6JYl5Y$3 zUk?rztI8;#DWShIqq(+ueSH z$l(|4+3SS?7xgR`5;&9eXz0vTOv5h|Z59&`6P&Cb6L&;J0#Mj}x`-7xzFiOt6@*vV zS(ddh1iA@Dtd;xx@JrK7*S!9Ix}6BR zE~^7`VxuU@Rf|C)3LkFSWb zx@zMd1$TB4_w5Njvc+_8E7AZg-J!9qi(IrlM<5b#emVk!9`0(%G^~KS3pTj z{>~zbI{4LP5OD)pz9 zqO*wfU2cRn?9H3gbnE9HIGAi2>#1U4vE&H&R+4-jvG?}nmVI_@zY#aTf>7CD{ZL6! zAIVqa^FB>S^%83{A&b(Uewqe$2)PU}dxWX>G{)6a_An24R4DLgTG)e5i1 z2c*p$OpS%OYRUk)6`Jx^q7ecADj|3O>b;2$@eR}Yb}?0BfA+b(_?*qf*lT)B#s+y36-?b z8V4*9XK{dF-0Q}F)r%iJ zuwxyIBLb`lG1_2$%l)eY`bj%VZM{8InQv9_FMi^`wos<{?=Up~s(b&|IQhSI+Tid1 z@xOQtX9ssHQ?vgtKMhsrdSiC5I~8n>H}YaPOBi~Gg;4s`riS^VnM?Y_jcM*R<%5Ee zHbuVM{aOkR?l{|QJ$q;uco#KAq52ezNRoA=`h=5DV%t7TLUh92B}Xk{3qR0&`ge$WQLDFArQk2ktcu1wZS}!QcFy2l7PWgVFwW z8KM8trBvd-eW8V1yzJgAVx6r_{>|m;SJC^+M3T>>2dJ#t9TKsHB@9n5qb5q7pcw{M)b_n=+XvkdsPdBr|SrI zyH~WZVix0TTyvykzJi*vwSX7)eQ+p1osiUqTh)U(jl##p`p0&~LDMkp10V|>M4dot zcRKG<`vO+TNr3UWZO)e;{VLY15WW=5DvXr|L%xs9;xSjBcq06;Y+nHI? zhLs)no_#PCqOtnv`qxU>y9?1Xt%;n>{#&=hps52utJFv4qbg@@;2$6zhbW{^mqT zpS-C|4|`%m`^$(9ZlIV2knf;Yk(h|4SZ4)4a;YUudvoKw2Kj!L8>6K(L8QYCykO8& zz@lr2{RE|1g~rox_|+Vbp_@39G$}RH&d7RnuA^ZPhKxXRfM;7-=I&zy;u`cJkb07{ zV=}u8&syTh`Tp;CM)mncq4c-1)As*=fcIY|<9|L4Z}b0B_T~;E4)*S5&TkIN|LVfr z6sM)%jFYn}>!)dGt|_mreg`AXV2O!JzsGolNp(TQn(c7(fE}-W*!*;_w1s0sEs2$4 zWU*-EF3__s@J`l|#!ULd0=iHA?Hjl5|E8 zrq?jd=T$8YMSHx$ujGDZY0~5}{i-}GM_BH2AM~cX&eUnY$X9ZEuwGdcRaq^;xKn>o zexn{>au|LD*w19b{&E);$cS`&iQDm8De?ZtV)NhXYyZByqE;4W zF0TLkxe6627d$oOSMdb)!hSAwRN@f9MO24j(RHRpSf`T@wCm8)#;7SwgmODhwo;Y@ zk+vd>EkBcKxSS!NUMjT@+cXiZ0ucp1nB$4$6}AN3ua7<(KDAHf`?&#sp5X;?H)t(Y z9N&15prjx$TnrUg#ikRC0+pw7FEcD8W+D?c3B_-iF6|Zub{Zu%q;&8TpwX04e6omq z2;ax&$&Z8SpuU^L08jExIvknICn;##{c~nImp(-dd)2P9Ym+|RVun_oo(}6m}=E&B(W*GRV zts;rb!A_#8abKStdpl&9V~XQ>JMP6~ud@ zpm2g&^i!At`F0idSz*T*xR%P^CAR|orUJ{%O?St*r=9c=Nr}?B&0E=9mGP748N$Mr zuEX!8nb?`O#R&`?e3yc2w`XUc9nx04^6W(9+SeC&0Mo&o2?qn2Qk^4AV@x2&90)X6 z$~4h42I2+8!qzuEF!w|l2IPQl05Pn*!FW=<(QkhWYy;@`t}yEg#q=7sj>g48+zyy! z4M~7no#1l@un&R<_PWIs_TF~uXVw@cpbWxWjWzT#CS0A`dg*ApxkdA6yWhr1ixNon(xJsg1ipA6{An6> z|G`23_MC+GxE0ehZ~M3uH5B54B?ftKV|)Y*n{uI=FL4@&%0*!FoF#@?Z)39b2R7|O zHO(L^c5)?3o_mTDQ+thqgoN_%#PHwKSM=A~h1Wi4X^yS(AJ3c2smF=+joG!@^U1%! zXho*AWiM1ymQ52!Mx;M|VDEoXzW7@E(R|~kciy_ue=nN-_siG+1bAxyla@|a zS(8T-!seTWUP%$7BHcpTe9H!mD;7ikAVj66PLqbttRMf|y-a7`ZgwqUGZ|^~{XOz( zIBYltke1PxYMWE%a}qtQJcq>|kINgj+ZcO&c-qDa{J?_nDyiz`lug1^ms`S~Ks3)Kb&`51+{ zE%^wy-|so)M9?VsN^{AE4@pAT$ln8Zt8C1Z)xTgh*~u}pSLT(afZ;nqQ%)n*dl9-G z@}_EoOv&Wq{(q!tXG`R{IltKciZNmBlTHpwpjD&ylUT4F+=(#Pfi>grNGLN?y;^mS zk`tlhT-LP3X)dfPTWY%cG9uvot)FC2n+yzNlhop>D;xozJnKm{m9Fp;iju2eaxs)o-@--_2;N0S0-`ahff0 zXOfyY7U7VkxTv_Iprl~sJ1xP?Kw9YKUQ@PS%59DU7C@hAqoL*iJuku*p*RfS1K^DX zV}^?T5cP@q9eKD=RLE51cjU)&t`L7H59T+Y8VVh!PYNHVv@(>7c}vrUW}vP)Bk5;` z6il>p9n%Y#ZlWId7NKSgNVJim`eI8zNgfn-TOgG$lBg2JOl5xmBTn2M+po7#bNpFx zCNadol5TlF_aML{aDO9i8Epf^uOH%cO&}BIc{r$(ngzS9!gn=Sn2yLg$Ld13z#41w zT2<-J@cg$af;Ig+Blow~2M6Y#5EsUO4Ft^oA(@8l-+e?(L_$GDm6eT|N&YQW!c@e~ z+1*Ul$k^8GKNu?2H=v+|%(u`?S6vyTO?MAl&@84!vxx-^N%@$mN}LjhoMYdz;5O{u zvb2u+1piFkJ&$DtxcK$vn~>EJ$x&isZOh_faW=-ydM7(`CeZB*qxch7gf4T%BHY3y zObl3`+H5oG1}q{st?wAm3^L*k_n^r%(mc8!bj2%mq~+BQ9du9A$m0Ni2<=!cMWTMz zmPtdv)%z7<$uvfAVPem<+7uPB{W+2cultu3oJPtrMbWahQA;+qg}gU}9*=nIxkmDkLI!0w^Ib9cNC17#Q3x!Cn93$= znKtLB1;zlnHh)#DpzvF1nxB(rUD8dnbbgqiT2}8*2BGrP`#ow@kl77VbpX01laG=z zOIN2Hp~RSUnC1@}^d{ZOlkLP1IT7%SnV2t5m`-X}{!9`k2V}ZmSA-vnd|0qFlCZ(; znmt$n8`~R5AjpQrxX`rMnBa4|0+MAQB{9saGx?C_7_QR;NkjEtYjPyf59lS10--iT z)OU()64a)S3T>Z8%#ufGTjD?nn1{7_JM16KndLqlNvyp$@f0#h6#4+Tq-5fUfsx7@ zT-AC+l*1}?;oBJ8J_2zTDKNVUHp%$WX$Tmfupdv`1>MLqyTlp1`5l^04&}sECsb!` zdc`g#%<%_TLJ4$TMFo&re(8Inx(@m*@VBz~D>lzW_U#5o{Er*_zs^zO`uBJ1TMPeJ zp$4egn|V5#nYfynig}utIl5Xo*#GN}^;44hi&K5Yqz=`-fWqkO^E{tQ5h>J&P6Y-} zC&Jwo+geMlCAe3f*Roy2d!B!~FN`9K3y=3)%wBpR{K4~d@o@WP6S)JSI8jpkC`kz3 zGY1yvOqC=cqa)%!*p)Uq)iG8aVJ~KZA08ipI;{8vRqHUblXGX1a6)c%aFeL}F)`4B z26LSWS$|LfE3qcR7+ClR_LCm<02vAuv*v-C`f#!|8O{;a(UfbF>jA=ie*zCa>zthh zR62FJ?NUIcd~E(jWVhv9V=A=#q$rdP#YkC(p=RyRzLalpM;{U9up|6g@~qM!EmGQr`Ul68rz@+c<#1TBQ`^WL3;wd}$-9WKYk5I9MoDW>uVdc#yTTD0 z_Y1mV3iGh!q{`4FC)@rzz`el5pP2Ct4LtlKA^`kJgnl(_m2 zwG&a220AEVTtNc5mAb%2OnPWQov{>{i7q%L{pN&jzGU#w$vagg>vYkoA>o8HG0l}y z{;Ug&d!C!0@{hCp#PD#J1E#yC`M2@fGT&OiyY44@FNfRVKfJeGfgg3N1C_reqt;Z{ zaFe{9Ff#kaUaC!=q>*dAJB-ny-MqU-VWd`6+Ck=Ry6Gts&{&#@c`XWRlmJ))?N?$n z%(!lg4!zYRydNJcC(;jTCd*kSDYsILywqUVeo@L!x+Zpz+YU)ZY2Qk!f!rvnQD*Hb zNVE6&sQGe=#>Mq43fOPRY@lq{gea@Xue z%Z1-OGfA7PPkpeFeO!|q$p*07l&{!}Qu?xPABHmsLAX~O#br@x3wu#|xM_^Y*_C(> z51Wl16L-G5txg?^hfK`7#*(`6nLFt64Qr<uws;GaZsX34P(10<0Q?13iN10= zo_YUuCbXR0MbvqCZQT|VZ9{h(e-7N(OlH3ItpR1UlHV|rHkW`uMW`HmrH{O+?$&Zz zPEG@I#^hGG)De=}g=DS=!2MR&gx^=G?b+Q)%p6!9KY=YFC>Cqjn;0j_qd1VJXc!r< z0Qk;c@$S+bC@UxGO#9lq`MCFh2ec9cIQ*C1BT`F z1Gcdr(%mANM0lMIq5M{-1`$;Fcy}{-p@&Lbru2EiVM|cGsl02 zW0xGXqdjzyi>?EH?+^q85A?&Xe6(#(JLGjG+o`0`wVWtYuSZ3peWddYf)b&8uKbu3Q z)sLhrsVo7ASHT1CFlX)`Ut3#qNY|+Wf7qtwU(X4%|1_w(ukXiYzn9{iLE-8kYtv+` zw8ClvdM0R8eeT?XL$fYx$1($Ynmhe+X~AZ;xi2(HU;QoC^wEKjlmn9-vm;K@(!i~p z<#k_KPpJ*`B>urvBh9X#CVXrea{#Ls-Sy&{QSR7{ZpCJAO@zg=SM?N@^0gN~;1w;^ zXTh9YBxlVWl4`62^WnLj`0?9}dxjsLWJ8bUJK;nZE$Yc{xOCh^Dba0%Q91n*IE>OVKUPy_nL{%!wI04vOTYUihMG_`$%#_qoCa$b*brT&?*Ap(K&%v z5o1lJLVLN{3yueqDvLJSEDe*YaH1HU9$XjLZYrq>Ut3-5P<7ry>)X5+60t9+q13PV z%?N{~M(sj3seEyy?#nKXyv z)g5si)ErZWEz;lYPc1GsrCqoDft=N%SaivU1!z7eqXSd7aqByY%tT?VJ>(&g zdTt7aqiivVa@z-rmuWe&CGh{;aTaMW{|}xL=LxxvZvsZuHUkD9|3r zH}~ubXJAjWq01j?z?m#(Vrl83^|8nBo*X=h>2{kU;5hB63eTK?% zZ_@o#>U)RuaC+vlwcCVM$}EXzdXac)l~n}JCFaBOFuMRO-L4^YXY}879Iyo>3hH}D z{mu|SL#Fqqj2vWb^{ub82mX=UzE;%3?8!v=;)$&>%on?9HGO%HGwtFEk%`mX~ z$e<@AZ^{5)p+-gP&g44Sy92dvswCRd5XNW)={&BNa_Ge@_0BiHwLI za&WBWo49?IYUu0D#cwdWC4(c25jm+s%C8}MJa{b6+?^3Q$@&@%d@H; z3L+10;Na8e;jKrmv^QEc7X6>VGu^-6>HkZRkgTeuGOLLG3Nj`ZrGkczD4;8*w=`8V zRnn$Wl@`+0S`+r6HAp_(+O8NxHr$1D82L>&r*ZZQC{bDL3H^ZGAH*+=2l( zGdcR=ow2R2-zQO-?LJe@E|qxkb}`xkl6PIzV;%Z`MWq`@WK8oU$6FT7P7p{VEBMqh zZ|gSHn8}i(Mhx7K!5$l1qQ|mwgSVvFu!r(*xm4t|L##}xy`rkHwNfkUmTJfD?%Z}2 zS6+n>KgM8*%HHAZS!Yp~;>DDYQZM_qkTHwUP8jXe8T7HEsF7BP&4rg?C{Y&Z_aUNi zim`>al5aH!TE}u`^=v^c*YDdV^;~3m&atuaS@j>s%v6={MQkl3kgS^1pzfF`SYyOWoObDulxOP zw%+qcss)KKU963V{)OM2_WK738$7gypM#>L(T5!K6$jiJN2$a=eL5YEb21oEV-Tfc z8EK0<7Zk_&YNjic8indQN+pK$r$7Njz?(E>8VSXaBWXF17lO&VYpg0v+oEkpOVvBB z$LX=QYPW5V=dsdyEF^#>qKn|d3<@;}!h(Y3=cNVf@osG~zdU`MffX-FUEUPHo%jm9 z9&vH#FH@a@tKa>`fGtXFQuQC9OD}&O z&Th&QV)H@Ee9qc2tgmxC2Is^ zb4YV{Ty$iFtMcmnWU0LfzW<;W{(BpvJiHpz?A`l|A?Hk!RmRsLj5>o_4C-+Cw$_tu z6HS-DVI6K!%<^fH@hRaP>#s*~cR!hh`OT(8{U241eWk37;qDQG8k@C?i<$k|dFfZ`8J12HPE$g1L79vL8h%!2QsLc? zg;5^OV&Pg5va>EtoIiwdXJ+Mr*yQk7@!u`$yfttOOkgnjOt5 z>~59Cbj=5TkunBdES&5{H^XQr#B>_C;Th{5}D66e5+;{Q`gjjU2pz>&*;TiuY$fLT?^L=G#pU@d)-yI75 z3nIVNH2^K&w1CG;^)_pS^iNsLzRSZ>`o|oMTV^F`wz~PBG6lR!Xot1_qX@?#;2j!i z$~h5C)}3&>%FxZE`jYdvtH>fg8(LzWo8%Y@d8l$@N5H{3|8o zhtn~)5@|SoCzzgyqDzjWtJ#gxOv%hT*%KyJ?@GbgtKa&;tu z^@v>9+nOJ@Y-8dG#ffEN06!YXmrJaci>xvkNbF`y?4%P*=#@~H`s5^MF_&F8?)+pH z=Y!tQE*V4{c0sCDAB2c%pLFgG>k#Ld7{V#tss+jf ztdc^;QP)W!>aZJ?G0qQz6L=QDard0;yL(WSKK|@vA()}KZVy;@X zUbtQSIVR#)svTsHbPq#Sx0(Fc%)tq8d0^R1?xqRx<|ah0$p(2ur4z_LE=S*lcx_-} z@2+C+&Kk73i39`gy%!GwAySYuH>#)-Wcx*}bA%X!y7XRFx>i+OBYAB!kFNBTl;`LClFd*x%gC~cr<-1~A10$4 z<5Qf~G}wsaST$sol|I$ARS|Q)@qAkGUgn{`uF-ot@suHeI`n0&?MGpJ^|cel$ZYmR z&TaR%_179bzNC_Dg7J3KA9@YkVMQkU&DH24N(LGZ`x7z10k_Y^)L)A`4OvF*K{I+f zx$|$Y;!NY+DLY&J%o%d;2K$U;W+}bCC5x&q{_QP(9}=#pk~F-%qb3#Oo9l}D=%abv zW_=xnu=p%)juO5=;Vn)M4jhi}k`HOgrL`NM}>0Tb>%o z>v;=v4{0romliVI_Bz9d&dqM^x@F}@G}?0^wBtD^m2LUcb)up`#vcw>X3ompGcO1R zR?Tav79RJCT+V=#?=WGY?t4qstG?K1%bYUzn=;Hu8>k9ugTSdncto*+-urJ5Y_S78 zoM}*B_K!)d&jeSNM$0MMKW7RuE}lS@TZ91sU(Lt?KBMJI^w3_m5I(ZPCt;zU{W$li zW**o9zh0(vhUOsxUPW8&gK5OEYYBFP&V}ROyK9r6Z)pyU{if(QbVrDU`KN{_feMTu z*)OTmA0-T?5Mpv}wK4?yS?MMxb`F{;uNEHxIragl3U|cRUd&&zl%=SzLM<8W>2ae) z?I^S81!$YDF9f*3byir&m65=RHpIcL?z)Y+ zxZjy2A<)*W|y#<&h@me>39|<p0#jq+VePdQ=Z=hHI$M?aF>7DD% zLKTvJhH;n~Al7hIx%evKDoFl|Z#lA=TB(@JZd#*0GexyVMDUr9Hi^CGM3N@Oo#phV zzqHtr(1wwL9+R>~2Y}vw2#c`dhf`{Cn_hk##}0gxSeSTNljAByBQgCPCvMEAF!mKg zEAJ`1SY;IDEy^FwQ6EJf3+R7I7-s||9qnl9RT!R(cCx6LXX;mx)GoDn<(O8{`YvL@ zeYA|XW4U5Avvj2Gav_~I(en2uT~`Wd53%D=-$8AJo2KAoRGCoEN)%Uilm3-z(P!Sw zq5=^20dr`q({Mm`xkIXdFn9e>--&B4ddt&Xoi5S(TH@L^?a8D%__Q)QD5^!lc)EgB z;FVO=)}EBJT4;sUJ$?VJy>R^I=A^VcH3CG0e-SDfKheOkLeFBt^|N-xvG3~yLA+sL z#%}z9;#&8RA2h<1Y+CoM;tpYyPh}De~l43&2)& z+N)8`K}@^E%~xW01r$O#cP?xs!jkip-PFs=Z`DKzULglsJ>=Le&5K)|!hD4!(#J=g z+e`H=dnq>(vC(~GWYdy*9r8;33iHKo<&)L;Uk0|^`1ICa@oAdc)JS{D+&bEC_Y})U ztC^gKh$?MLS7LUa`D_00AD7qf;j>5CkWA{jR<9HMUdPYhrAF23Z~bg}7oAp|MLF$6 zU({b%m{jLq@c8{}Sk-inwN!55t=V`YyB^71lV-L=Vex4~iWU8+P)`YEMLz#sgJ~*< z&H1ni4@!f~3YYrz$i7EO@I9ldOdB<{O0DyxWIy79l-!&avkng16yCcLK?n0+Z;Zhxd>xu96Bdk@yF#i=iTyS^!~wBBfv7uxH=bp@{AHwd*xxySskNJV#f6Ad(8{m(1Aobcv`| zU&yPB|D{#IN-_B^x`Cz(hewNn&B_Zz-b_3XQRa?~jrZ>p ztzl-qKjhS4^GrJmlV@AogdXjY`{~)Ngbx4XQ}uS7IF?zuJYvJ{@-X-jkLHPQ^o&Z+ z2*WFL01e2ip(-mg6>dyZ$Q@yGM5WA=0?@cZN}Em6V^`~&uUU9sm` z<6TYIMU3dNHYwNmBs8k;RovOm1B5D_UF^PBc}u72obuHlX3Zpyno01(d(9@#%8pm= zkZ!{}Hu$b5746zwjqcx9WiAU%Wcv$ERNMN$mn-KcP$)mn+TmQ@T@mTlq?7TjF!_*g z=UirWJj>7eSh`%LmCS1QW8I~E&`M`5>ql$JpS_YS#2lA&kLRti^rOUZ>4S8LxABN+!LnU5)}g@FB54#RSPXwhz~U0g@hWQ$L;CNHVa z3R?Ap@3LK>UWkTQ{G-!iJ`Z~Pbc-q!a$Ok+s_a`HQ7%@uk!H**zxIT_50U4Qm;~~^QM&{>~cktM7IOrdT75g?#sm#-cnIiL(j5vZL^YMLD z&$k&c2o@`iarCP|gn7e&z%c>YK$o=T_k0K)s`o5V45peNx@bD_o>V=Fz)v{*6X(R< zYLYBbXnC3Ce2cZ9m)6X=&znX?0DqXfigT+@(a_qhVwwuibT~9mZg_)U^%_+OI@H8Z zA&h;LpOhCggg50}M0d=)7HxrWu}oRwa-oT>2K_KxeKB9k&XGT=dEz5gI8qWCe=cVN zf@yexMi~5|D5o)H=T!RD#<1c`mQf@V?+a;s-yu~xauO;jZ7S^%n0O+BZM06^5EhtL z6+@0Mw#7V2y0ak!2p;GVabGkrJ%WR|Cp_2**nz!1dfrXC8p8P(J-bf&X0l=2nh1G8 zxMT87f_wlEVxQ82zI0|n-Xjp1-Xnvua_8@w%ly=g_sV5SLF;Bw;jPk=Z9iI|?JzVB~?5d=)`v(Yr_ zPNnBHLj{cQVZpQVRiIBeghrAqvP`}y5Eq183oh`v3UGs`KBIaLA|hX9(S!Ig%lLnA z_LfnVC0n;(;_mKF;_mM5u8F%lB<>E0ySuyF!QEXGN!*=8o2q-i*YDk~s=nQ0>^MKp z-f;#iR>Y2A&AH}!V(YidY6X|)s!J11zm}HMiG=$4%`cY8Yc2frN;0H|qYjOK@CvaX zBeT(+wBBEotu}Vj+Jo6=G2EtdHsq(_Qy|Lvbp~vY;Zp$$_ccvF23EG=6IVYyrqA&} zm9;*#Prsz(D{OxPte(*mUH>Cy_wMPMJ)6`u4;FUiR85wsdl!+kz=Wh5wJjd9i!S-?%eb6%w; z6s!F?AIch^unBHcRnlPxWyP`H6POpI`hl_TiiJ=zvCo<(R_mAY&_cFwd!??5CMz8s z4hjZuDYpP0kPK1^rILnb5~B|uq_-Ckg@VNS#8~+Wc1yqRHWem{kFH$MohElJu)4C1 z8j9@tMx(X~IG-JG2RK!N;ae(XDx+JWAsskcN-BH}D;^yi-V}N0p5f1m-^PolHsxca zs%|@pOPn87B=2`Jd5yb))-cCwiiT)_qC`0e}O=JT-uJSmcAm@EyurGR)Dn{(^&sF;oV= z%?2CA)0tA5+TWK=gSBM9C&-~L7&@;hOl%#z{Hy(`Ux&HOnG5&Oz?Aqvr*l{qZb-)! zO({#m&{95%g3dl2E{2s>Ko+)7)C z#)UhfF9G$ij`n6nYAQaUe(^di^@Wi3fmj19NyY!MPuZEC)*s_oNTrq7>DL=0E<;LX zR74Q9V41TbZs1pC7&3#9yxhppNfXBzzF%nF3H`DW7g;D8?0{aC*zl>s+|8K{T51q<#$%u#qwVe7|Ewe^+(xAw;Z&FWKrOo%*0F$a<c zG{dyx4&#m+^|&pXzw_Kg+@_r2d46CrOt#-w7ebGOE7<5%ui~`Spa6*@@mh7tQNbRasdbufLJ|3k!wjsI6BSkwB{+{1Kxx&8|UrdwurSN&`>&OHY-762mFzS zni10vy$0RknjT}3%*(o#KW@H&8_?ry%Ojva+>v63yfV&5z({{inWjpz(#Hv z7f|0JGaPB*Y#JA6+uWJrbn#HHfkEYIG_H%$%RySqMp`$1C5oVV=E3O_`V<2mXNpu# z0vyt`6ZubT-+@8BR*34Q0(vy>#)9m%ShBPS(Kk~O%SCIX!;mAlQW2SH+eeDIsr{$5 zoa>_LB)6H-dFRDaijV45x^*gK;Hye2$VCgRWFye4lTms5n@01mHJ2+<-=Zo8Y}2g9 zS%;@~uwB~DaHn#uM91pqo0vo~I?9zBPb_6-$*Nr_zZY8>jlJ;CH2``_Y<8Wh%TeDt zD|&Nvp6iGaX$tqW9fbPWs4){f>_qNi7n4sGrl*q*Th+3+uF zj_7MQxsRd`%1dcz2{8EJ$1uHmG0zTq*UINau>$F_1GznF%i0$b7@y)9SNa31Sc~pI zzs3plN=WWt>%c3@m^8SpqJww1{WHNY%T1Pm2l>kv4#s~9Pm%pyT=CEF6x075DbG^- zt&XCO`Yz^A)DKy`Sf@3c4~|HpRt2vD17u}fCAgMo+s_a*%a9;PF42DZV*BXb;W;$ zjycNQIsUoPaVmUGKmww)1j-%Dd9g`*D40soT2r?AcZqqP-@H2Kbo*szOwI9^42?B= zGYU^qlesGgU-8| zt#zVo*0Iq0Xvu@#z+u%7*-+_V?OHGEDu=Le@X_i&&IKL6dBTH5T#RkFN}u&JA2Ah( z5$9|ri*_ovBVnFFg=jx!JIhkli{Ri>I~x`mkv_#NwLVx^%*)!J3%!-cUo*Ck4{!)` zVsUaKX^SjGu230fgjs!Jbt`m+p7EaB$pbfCn7h!b4i2bGHL3cos#wg$!g9EStbgQ>>*y)Ick z*R^SL{E*6q%^Y_8sD~7nu&TRs+$Z<3OaqSRH0L}?Ih9{V>SREI;vw$g*qs*M+Co~V z(i1=Xt^`JDk?<15nvB4}2K$1n4UTjh(r%gK6bDC%= zo}I&RM{2`^mYdRQ<3HjVY(~v|N&A3(2oNI37JQeS7T0?f&D|E>Pj{Lfs%ec|kFfgT zG_Tg&bck;%Wtpp@6sdJD)t-2}`bcm?$upQZ(n}Uozp#Vu8#vnd@{vmSs@5|4!@eQP zs#YchVcY~)zf?3hssf9RQD=HvxF|{(mM;u;5%#NbrLe}3AUHvYapiDr6l<$!NQAaY zrKre|Sjbze?2u*Dh=P4b)Teeg?L}f8klXc{Efy0C7As~_9aei(5~fiw(H>RQEzMX1 z6nMf;A_DuTb`hHllLl-|kn0BZ4tOCcuIXSLZXsrNvOS3*GM7GcE9^8wCuttaG*c%H zQ5YqZu7uQ)SisI_bQsCZ{aYWSj5K83F2@uD4`Cj}BQwv)Rc6q)jedKAeiT@FsiS@p z*jT1cz*T;b56^%AI*5DJjssMnd&E0B_&MXdFV~A6oqts!C+xebz;*-iXK95Bb5!$6 z>#^-g82sK)w9-B%`L56~G!{1FS@hBE#Vwi`@pR^=_8JTD^|_ldCQ*!E9e8GEu2LFYHVFQpy2B{_=@k7>n0< zv5*q}$_fj$U%JdA<<#{@v8ZMAyGgL73u`ps#8OrD#DUV5y69a;$@P1aM<(i+=0u!)A_NEs)evV7l$g-RKyq)J$mgn7 zN8}dAchC??HQ~MMVwP?dDzhublrrkMPRc;}Hkn=tY499{@bXp(g0gPlYhk(|Ay(-< zkaPvIt;1hGGkoPxfB%^{@FqvFbNh)*mBanhE<*9QyNIKOt&xSjf%X5kktA9v&kLZ2 z{M>Iw1P<8vl|LdXAt)P}Z-`Wg26pCWv^cw?44Ky;BbjPEKI2=Y=QoS>b`k6NSwCJm zSG6{abG6|m`!I8}VRTwguLne8n^m|A=>;&OKftC8D|_3A=IEbiGyM3VBzjEqyIa-R ze3H{~5w3854PH3%CLnkF3ASthdU*9|14pm5d8OqB7Ms=>M!O@17VDY#FtajCZL6r> zVmJj0=|>}TIwE&pGb!2GS`$2tvirfw&`sX?ne;)p;NO%vr`Vy1%U+#dtBle;_TuG;`HJK!YxSSBIi8OGE8@v7-oy! z(O4N}8VAV3Qc;ox$?Mp~J2a*<;O~JF2!C({W=&s*i;(aBZiUSiZ_WAp#ACnZE z)J2mXdw)<3s&#EFQea@q{%BhJQMx%0(nJfl!jpqhr$T5v$_%%ZO(jslA}IkrGj zT!5rJCPVF{F3fMr0t;AR2!p^5No)&m4bhe`#~c!dYhkRIK!GE%WC;)-o3OwfREFDg zm&xgCY>~AKPAr2^N5AJPW*xb*-H}AU_4e2!n!C)geSAL|k;WP@-l=g(#Y8+`3L+v%o=? zc=dZLwK!A=#{vq!;flRo;d6a|?dk@b5g`0gv#1RmyvD{JNYFUzDlA|P<377{5f>9J z&_-Le!4%j1lt1TWQt9_o&3l7A3m=DTNzHX7g-sd_YpgZIxA=R8L%E9YE2M#PQFD(# z_|eX*5jkV%39*%xg^Q3BndIIT>8Q*?r17$=3PndTk}du@>w~pw;qg} z%4I9HQF+Dl2v@YqQ+VNr+$cHEwP5*l)1qFP8Q~ti2N!E^+#ZEJtV1Fv6)piM9VOk4 z!G!Rru%>>I+E4H9_ZO2T?@obUar^+1LnGYCehq=5Fiw@o)M1<$vS)+ILRph&HkA3M zxs~KIV`x>!!%{!uV#Xj~&=VaR(=c(o?BaDd_Xziy9m(DNev|3h2#M0PPm(%THFbx*DrbjZoc$$X|?Wwzo&cUY4mnB?JB)` zP_7aF0B&bE(Q^tvf!mpX1aAM9PXCAFWkduO{sMF-W&9U*n-uwP$;75~ssP>qm`4jR z47#FrL{u<#+xe%mI>OApNnU-DFJl?8kM^o+PU}K3*T|x?sW>mPqUkDJGVKr zSo8O%w};K2kE@R!WC#brILc^%GDh9iiU(unVSIm_4 z;Zbdr_32V|Y6m}->X-gd*cqqd$@@aVkYD}`4<@FEAw8h9Os%kGke0lM`A|ONXMppj zHddddK%55636hMZjnvS7NWrjVZd-STijyujrnEflT!avV^H(&|XJKcsgpNAckzhejr9(ES`Qsu5 zi53O^&kKw^3>-W1-`DBq?azmBm`f_AaaoMvfmb#r1eFf}c6`QRH9eeJC$ejG3*}@> zW2EZ@b;kL;2ZgAmQ=!IZwdQ=ylMZvqyvEbIv=v9*+{|X#Kui0e$8h|C49&EEMtRj0&~47R>FdD@W>)+8WdQ>qzDC;RPpZ$XNvIX z70KZ|49CG4>pG+cv{KAxwypuFO*I}9Sltbl-OY)Yu&`0E$s=Yp?48!QBdC_aJ+)XQ zyJpY1H#K6Hy|-dkzb5FY4#>@umXRgYOE&O>(0&It!A|z$!UOS)gF5eMJN5*Q*LMN9$nM&vX+TxoNpg2e{|nbdxuS*ltmW zrDnMkbsO@qyrq{2)t(erHNMDgWiF-#d%zDod(m_ya%zs%(-oKH0y}bkH?`Fp{PmM%nOF?~27kCaa!_m_`mk3LA9jph!pyXcVq`Cl z47#d@Wwd^a3vnNSwH2I&rdnVnf4NvI#xPmJ-t<-ky@4cX5Pj!d6PhacM8vmm4nxpW0F!5*aR&jXO>mL zljWOl=x)c@S%Vor$e;lGNSWKD_e!)d3J{qF1|wI~eWrW2($iDj+S}5{jDK zRtkP$&FCAaM7`WfLCwe;=|sJ}&WIcAu^L66z#HwvpLwtN`v?^HV_b>+$$9k){J$WX4QgK)!jxD-YU%wH6MMBTktDu`dPy?o4Dd8=kFhPM5pg0Ud*zzur+F$u=$z zx)Wa$bghNvO7<%S2J%j=ZAv z0VA)aRv75SRQLVn8xBH{=f8>k!~u7f0tjTORR_)~^bbUSLWDa@1iV=2H-O?|YtZ{6 z%m7@WD)arTkR|2;Vo*F{AZBD&kZ_rafC3hKE#RCIe`Vw+V7SaUKtGGU5O7YOe*y9n z3mk4T;Lv=#6_igJWSH~{5e_#FkYc_a0Lmu?;z@c1h0Q_eA3F=+gYt?1hnL*$XQ`D2 zew+uOLlv6q2ZHiRfN+yueSx!107zl4kopf>Y-fVn2G=<0!$sW@^wXcz05lP@^(yd_XdtmxVkfBud*RXrP^pg7%lhBk2mHoUM(*# z^)-w;yQ;lz>J4+CRR`EzxkQ=8oMH|}Y@uGuF!=}%xEOnV8@L^DZwWh0xb{J!C*12I z?v9B{Z`DLQa(+$lH!XWS_~5N+HkJK!|xo)DHX@|5W=_8wU_ zgr7ZK_W||}WVB5^p}Fe&XVxRAt-UwLrD%#;L$O7&c&y?$+Zx2weHC^;?!L;ICOWxfNAe zR8*nRG^%+j9(!9|YJ28vAbRz**bT|txU!es?7X~uJUnhqWUyaO!e--gKae7^)^+QQ zO_7PykzpbgRIat-_nu? z+kS9eY|>fBqRqI~7|nh@YJ>o9dovu;P8|4paQGA&+H^%&z|~Vn#f5U6C&7aGvqyCu zXJ?!o6Y3G%=-Q!TETzmwo+f!FA7yD3xgo`}Du&xjc`f8bRHx=7;RaZXsYUHupHhQf z3p$KQVE?s*O4oJgv35DVVK@KYLWeSoB0RepfMCA;1#=Ywxfii#6wO~{I$Yr3aG(!> zYT8U>Lb4B;giw$NghD7Vhxls&0lr7_XW%f z#7`z$RFEn{IbvJRo zr8{imy|w1=Bt4lf2V#yfn!Kj5vWlH~hg8Zibm}LW3MNrQb&VS3o8*2~D6vVmK>y+v zXzp~ivU3E1Mwy?R2ncLhLk=Ipn%q_GIfw-hVH3-L(_%S7xF>T(FrUq4C;&zhd$gQ2 zZn3;j#!Kx%B`-M{%;Glo;X^yWxxDujdcTsJUd*Q~7)$XvIo#~yUf$cR5d94$f;fo_?jUdXRMYwU1?wuG!*QlVKsmdI;Lxw8@RYlclR%_nxX|yKZ z1mB^afpIIe9zFhRj)NVu+?=>DjZ<(qco_RB#I@>8?w~mRw&VafD5zN3g zeyIXL=fasor~%^vEcM}P(KR5Pfi?l)`Xsd&txzivXArjFwm`OEwjl6dApDm>T0q>s zxB#>nHN5`nxl1L$X>W9e&zK$@unLqfzbU0 z4DE*{K%@YQ3PL78sQ{h`f+j$w05$q^cFDd|6i>U!j17_*Z z1%O)sfdeqk`+~f~zk)n{y`ta#3Gns%xLL0K z4LmOAv()yz&*0q=>bDUi?a=a|0UsILcZjZNdT5+vE~I7nGB+t*+9v4}tuma#X6bv$ z$%J+x%g6=tvKHws)f1qy7D--;d-SrG!i%Ku4GV8dcJbd+7Fd-!imDUZ6;GtfCY7?3 z)(e}Z?xnhf%|U9O*vN;zhijm?u~kQIim%eRy`fl_O^xM#%VIpT%u*F%KbipFEN#F& zLgN|_v7OVTYZNaTpP_c)f~ZE%VF%zBH=c4xi?yLrD zv!F@YC}|d~kTaz-W17X8N6VD~WV5IV@wd7csth)0y7i1*Gok;r=BXu_MR_^%+U+VJq*~v%uPtR$j8R z&DxaKF48lg6_|~0h-|=~A?wV27l81w-{E7yUEs}O>%<1j{mJ&)#FYrmsq2OYR{GLy zv}nz^%|F(K44m|JH`?`of8SXetx{gW&^NQ^7G62jhiRond?2;vYx&)WA6m8BEVY8P zLSx$yQ~u144Fv2hJ1T67OL3g#kISsbFM z#!IYD;2S$0%{!7|Xk<68wO{QTnbgRjxjI2LTvplj@@63I?&=rF2P9xI1^w<75pjASc6iXQu#b?hk~$xe01NNl4fiXP{h zT7{8>q+1P(nWS3|Ydz{IX^dk$tc7yVnq;dw>RimLi)o5+SDn%*6sboG>k#|eD$yYu zsYecrJK8;zX^P#jhshP|+K-8jVb_l-+h8DYtaT=g)kMd5fSqE`kYuYYN;=A20xJdE zK>;fT>zd9)$990oM8{yjz(mJl0LerrDeCs9>COkMrpWpl_Xe*-cs;g$l}xk1I@>dm zc3a6%dg)etbwiP@;(B$AyyED#OpgYVUkM%NI#%%MeA zvZ#nF>)pxorK78B^Ow)t`vaZ;wq1cj0Y_o(utX)*5i7El6ZCUb6DJ$VGTw9?`>3az zPnt}H2I^J_FfIMBPO}%BfGBTc`MS6bZ7L1Id))jgp}=U_A= zj@#@QSBIPdvZ>IORC&sG4d5Pq6+i`wobXEyah@ONWTM_xY6-Wl2|p{Lq3^b-z{U0$ zR)rku`8Bhm6n2^hsa;|7N_z6XgwL<@C?9ew%DXCs`(Z$ zZdp4a{bBI@Q;6)F=i%jrduGuI#ekB9^_jkel!A8MMIkdN_FE>bgkJk`h{)5q5U`Rx za@t>3smE-B4<5pX#Dhqo)wG&?byP|8WaTlxqY%=KxUT<`h@w;Lsml79vl;a7oXx)$ z#Kr%+|Km*D4Q%YKO`JXxra(ad8l(ASxO}m5G^01PbFnq@Ffwp*wl<-+G%}(8-}-(g zTQQ0L>!<#mU-fxB(;0U0&H=5B+>Zw(l6sJ;2OSqJ6oF>G{doN?TwWU%Pf<4#AOIC_ zW3u*D9T>>8E_V=h{kY5R<=3y3n7skf<}%1as8xsdy}K>X%gu0<;nA#3QKC9j+MHjR zKX~j8g*Sf}IeV_Zp!@|DGs~jg&ZE6+asjg`jt(UWWBU2;$My6QQDCLn9L3Lg} zcR{tOSj4Nkrd{-=+Fl~{sCL{&(Atx$k;2cwd)%M87`S$?@TY+koa7RA(d)7Yboc`QlhwRB4iSK zi^>zzT6hrFenn84)|MugInmsw{TOp63f>`~)?nB=q){cl9ZN2gN;*hO(lixHk3jTF zOR`8VYGam@z^EKRb4)SAEdf8C0GvDpDC~x-K#kE!QNnQ6Qqtbi}$i!)n+7 z%{o;AE$Ncjt29hcnlejc!(t|b;TxZ4vQKf^xeZ{>S+7hC9(v5$bgc zW=~0bSVI%KXVj~hVYelsqjikc9{4_ct14!mIt zTx@h5vKnXBL=_#X8lsJwbl&m4Y7H<{bLh+iBzRk>d;^cX++a??;GAX}*O&oTyHnCg zLQjLHf-$j_8kEkE3>`NiJ~SEXR45wK_CTa`DpF9RHYrRYqi>^eQa24wnR2uXl9aWC zQ6-0>j3uF6PV+C*Jq~s?$#Wm_NX8h_E`dps#^iu2W1T{y%mk9=E}*$keO5^+l2$&A zpxFbqRp|Z&#{N36|wu??Zod~5afXpkLrRXS+!q9 z0gGPSCP)FobM}+Qn#nYgL-9o7i6t|BgZP(_VG62_(KKT;-|`HkM7l*4N`WDcejJ1` zq?`a83z*3ohoZ&<>6M0l80YzUI`52a2kM(>X%RSTCW>iHs~F@lv6l_0rxQu%uIwah zoah@47)W3-VfRjRoFS4Rkk8nITF1ODX)z@2V?VIR7uhF>u3!~fS~Mk)V~8qpr4-SO zi7W?afqJVpEFit?uE`u0Tx5istZW!lTd*%NrFMvv{XdB0R+?VJmS~+ z*^4di5I0=8Z$tY>BpQT(opM`X+#p*ykH!&=U9n*9wHg(TK?gY)cwaR65s8MlX;Md~ zk^^Z5_YJf%1e^IEA|IoO{D3`H{DnmWV0A=-s!{0RiD8LC3zp8RS0XgdV-6|WQ5tp( zoInV>0uGf@DG^Fc8ztRUC=uG9VlqQA4sIABs=hKVfNmW%iO~K<0-RPS1DW(&fooE+ zz_CoEa=d-wmZ=3+OdtN9qY0Q56#fv`gQm-&w?M%Oq{WyBtyx6%26i@uSur(tJ2!r3 ziJ|!pp0cmAk4$P`aa>tPq~AwEf%aOCLrXYA5+-_WSO-HR_q001S0%T`Gkic|pvK~t-b+d&(FV5Sv`uJgbYNAQIm~%c``e?|z;g3D)jSKf+hWbY+Sh#08~!b*`n<}$c9F+I%Zx5tCig!3&Fw5}gVFUaCR9GCPI$-N z$<@@l8P{sBqQ#{r%}O4ECarTXII(Komo)F$KcSejYxzYjwf~Kcz?^k+#k(aM&;Dz= z&k(6fBnkU;^o~Erhk{UlXn$i?mfhsQ3vO_F0mHydAi`PBHt^N+%)nMqb#|*Ay>H|k0Er!)Lx_45DJcn81L*?5!!^9FIxAP zN{b))3wh?nY@gLo+Gjk#A~+Fw=#@7(?}yfS4jI~wO%%-szL+UeLXx!5`Q4a@*8_(M zsz?%49N~vLRvGUAfDjSFs{72YLa6Q43H=2J5^90#>xkCp^+tdWuh6ltrPkbur=r+USE(Q#YmCap3n_GXY!KB^U-x_ml zWMLIxa+Ytl`lOiOl#&jJIR7ZV*MSZ*7bvF=7Y%O*L5)dwd$ZC%>0Evl;2?x>cPZEZi4%y4(SHwl>cY=}ucZqQBF;y5#U00#Y@AkaBX(fTD$`zuvh3c9wM!Wvzvu z)-o>((aM3p2H`($I%LouQ*$8$vHvY#8ef4I8q_ZtYnjKS7|2Q1cfAbKiQaoIlWlKu z_1ZIie&@*RWx>lcKN^=iZALY#%!1j;>lH9hclX22*yPS!{8m&L#q3AwN=Fm3^IW5R z)TI@EtcMrRuF+#-n_r^nP3&I$Bj$3p%}(`lWm-BwM1z@e_LS7Qe-H(JQU8_ro4s-l z*epB-ZTs(CQKyms9Eg=in(iJnA|K#DsIFZm>Xfrh-KMez%kIrg{GJXcfGRb}V_F-E zjS&d~rY06IdOpjs|13KpnW!50cn4R+< zee(yu%8qBeu`nRobDkXL-CURrAtL&3p1lvAw%E>04|mk&EnOfpjyfJyVtu3CMzvEq zXcOxB)byH%8M~=kFU}86&d{0*-&!^neWf+(pWJ=NVrEj^&VQ$Jy6H#?^CNdye#}rZ zvp<3d{bFUz&7P4@eLx{QW7{j4#%26kXLvd`a97DZk0-l5RZ1-2%5d%H%KXc6ufW{k z*Y?JSm-(i5;Y)Bdgy~ux{6Gy!!+DnpcY6EQ+Zx809Bo)m#fkO;50aKFv$yekVf1ND z49VmkGkLfE<=wS;4$9XK9M76)arh}0tMRMjm>&K675S8xq;__oE34pm{a(N~lgV)jdXELboMA4pip}i%8yBme{)bi+SX4FX=_Y^)R*0~*m^wJkQkcO>N z^oYo78q4fd4CkBH;b{ejdeclASKgl9pFU!jt7NK&;pUmjTN+)4YL1zG zYPql7Kk%Y$9_{!S5Wc$(x4ko0Tz2Vfq{MqaJ_I_rz7)+%GeUMP*Q|E%V5$D}I(FvA zJgMv~Z*j!p<|xOqJ!jvoi@2h>9750>G`se;w?58!A=!jinr$#w-YcKo_ z?wS>La4{F(t}jobP7?yHLe)AOxdxv}H_1|T4V)Dm4$Ug^`(Jan{l}>^y091buYK4$ zSbE6mb4ux%2y<6qD zBGwC9nIk&#S1<-Q6>-CM^-=ZE2Gzx{@$TZdyuZFFWZ@U6FH6o%x^STnE{hRaXrr#5 zI*0ISmDrUKRL>JV$8kIqxI8aWkiKbTbw~Q-%l#DM*DN8qtK-5e$%#NAsF`OMzfS(V z?VLq^Y<6-Nt>~qUswdB{U1Aq0G&j9CIzPQkIYYlNI!ixPr&m6|JWIcP%7e9pxy)q~RVcERBNW=NXgW|nO>@v5fYW8vN=fY9eot@&V zXLL6`RzyDXU@>-A_FXSQ2MM6m1g2*xiM>dsO`MmOmcGZVZgWaB%CM(1t@^1IemFf#|ae z>W6N@;juE#k&aUTblY14-)H578~G#7@0`|;F(X7}*d!=jmQnR`kpjZpB9gEyQt`_> zRxsVjje#wh(%!*k|6-ZZdSswFzhy& z-S9n9*yib1?B$x=%{GZ?0Rso)xUE>%`#vi!B8&Y=X8V9ULmmE18Z9io4-O5z)yUi=DlESA} zoRp)1R!pXa9ASUD-wB)N>*9-evRPE>6&{vs7Y<{@i*u9E_l_7k1B|3e=z}+>^@nE20!SSNN@ho9!v7Gnn1tFHPQI9v7kC+(_8P-}paYH;v0Pw4Pi7P!qz-4NGO?$=JgpOfLgUYHG`{e?0my_jP5edm*dYXO(l! z>G3o?ea<({H1GYnWAS8pJ?8ae_$udNwf27M&Ce%$lP;pAOD?fB_}lc~jCZ zoGYj|Gt}CbtDTptoFUZO*=ch4S=wD1efZi~zjrZyPU_GU>ge9!U&*@tN3a8NS_SpY z@YYA5{SUhLV*5)^T@FY6cOV^XtZZ;>AvlY-qg&xa#r{JfVrV401$P&>qdrlUcGlJl z*f>*PU&yiVF~u@)GL}PT558ftve6CB9;sd%wwz;IM3IgP)fX@_wHGPMV`repUyFWU zUpT6mBCFYGDq@^lab&~NmT+ZjrXj6)+9s=0FS5q6=Na0~5f^9U;pb@b`8Dus0U(i@ ziH)0EoMpLbF*q}9mf}R#d~Efk_2;v z=fT!i7HM$zXB4e3uynBEGo4HLGh^$INZ4OT(LSjXe-{b+x8CzVgwX{4-#d%CJO4p@ zRWNWi|2NO`KZK;C8Q zbteTV+3$cnDeOvC<{=j#JxBHaAkLx)iLYsVoaHiN zMDxlwP6z!yRV2moNTCbG%OxLZUmAZQQ?89SfYdLU`Q(LI5|=5>IGeX?RMz?o>h4y| zo{`lvsn-}D0M#!Nmp7~ZjS)3&+D=T;>nnJkqs7)Uxy~tRm{-fDnR)XX4(&N<*Wn7!)^J>dK^2bl&!$a4-pWMqvu2V_F~|y*w``1$Lv= z9E*IDB{$63YSz~Uf*)0|Yu^MzgD_QS*Npd zok@=pVW{|kxHOJ*A0B=_(60$D`JWStZ^JJyM`_^BorX(YtWY3#&u09@R@WNkxYGs_ zELeRW+_7=67M(Ym`hY=j>&*9^g&rHp)c_ZyluZJ@DMjDW=a*#-u;#~t$;4b`dz8L68uKR%M%Ev}X1%U%qhOJcAD97l7G^)6ic3 zvhFGJ=Ce7({RcUEgZu-6>eDkE|L7T!|JpPE()ThEwKcLcwy-t(58nhUaLe~IAim?K z7sq~~g>*5sQX-9PE0s=+hFjQlk+nx#rEti7Qzt|tV!Q%*QVg?l56c5cx^=(cn~m4l zP1Apoa~PT7nHTGT3ZxfRr3z6i*14Iz32sH}RH>(G)OIL?9!8;hmXh94u`JB8N+^;p zv(0P{F))mbnzlCiB^5EZA3m z`?LN33ibcb3-0qB^&dmbeQ&qS2M!J{4DKoh9&@*Vd^j+-t0D&OUpY`O@|O9TkMI3a zSh?^ESq%LAHQ)KI@O7^9*VwOt-S|wEx5{5CZwnE>76RfYUU|HiBaqcGL$mzDv;5QI z1a*YxAq8I9{Zl_Jfq*P|t^VTqIa{JW+uvLE zw+eqI|0C5;|7n?|{D0UM{6k(Egb{J@XXR$GubK_*Ttmx+8dNs*Hz|aGZNX#SXaiYI zwtCqnA8Ihst8IuY;qZA?0|Yb>VbiUbE~sC7x94~O#_vJT;gePTWI;N2gz+dGnPBdB!_Dfw=g54W9ml*AID>^{^q#)ut0meAa0z&pN(;VjyFLiyey199tj>RPZu{ZrBuY^ zioHv$fvE1t@Kc(b*ydAd$<#c75a>Qslcmos9s+WT=@2UT(}2X!_V<&H`oAzy^bZsN zW!?X=khbm?;{68l2R0Vs7xE4Nay2df#SGz$hj7OYJ0sf&5;wj)JX(rGX^`jP#8FMgZW3z<;i%Y$MLIfX_cX?;lNL`L9g- zQxEpfH}n4#w);P9{EIh4*I(Pz`8f#xHtNvNi*T8ho|B)fDJ;&vhNB6TW;a#wC#7g~?d64^I$e&zw2uo!K+r`QBg8T1lR)b=Or@cin}nmSE_7 zCWxcU)LcKo5d|_PI``3TJ{&v&RuB5at3i15GA=aykUU7F5hEvtH^xy4Eop~>(dj62 zijHISciW~S5lToKJft`5EkSU0gZG*f7Uw=?Uq9|TM=P6FIHVAS^lSWD!|4Kq%f9Az za$4i0c9oV)%O8##D0>DG3hr+gcKLfi>8h<0JoDphe?6e|FAKl_VBa5{zfSs=W(NOt z_$V&OURij56NB-aqM92(P~@#@hg#@#qT6s>?8ao}b5W zoV-4%>PcQ2IFa-cHn5DPOc-zrmV^>Www214jP)~lmgiB%WH9?zlNv;ZvL^{!?$hrp z#>cIhxi#jZ*s!cyKY2YgV7h{G0c~c>Bu}8de10@v4^ZM(oDp9H&9_w9`~Sp030aEhS?O8+{qX-yyZ-|VuK4HL{&x#r!hYyq>&N~F zGbZ?D#;w21Snqgy5flidVg(&T6+;!B*E=R4#wW%HrXTpXf=9lRbp?GKuuvjK8kpbJu)hL3L1e50Bgjq9+*v$^Q<*`TsUMcHJ$~Yj zM{jLz#TmkRX#1t-(fZWzSobVGLVP%65(#oi<+^7eiGB;!)>`KtPEKwjnKElomgXjk z%1sI9OiUZKBB*Q0w4G7{mp3&5;|3%_i@U<2K!(3x&Nc8{{i;@(D%QI;i9bJYHFu2 zDw}#{MG77PLpe5$wS3X!F#(Ie(NTotSnG6zvXU(&!^AAA&zqE4<=*6(Ql%zX)w{pf8(<8t z%oo%{B;%Wb60F!V+awJOSgYCUO+tS>L_u`kdJ|G&c;Sja#K7{!>hPBsHvdu`{u7J; z+itG^wbK9dAn?DgEtj8L@CHZ%K>tJQ^&5ODXc~w8nQ>T4 zH`3~b^ouc;)fsgzp2&%ooLWcz4}1(wBIFS;pCS3L6l!E9hRX5zdENQ`>IF!sD%?ZN#DV6ZtZE~Y+&#rtQ3_s?5@{^gYJKbXbe1@?dW zhhOWju|NC+CJ(B}XFj`NB^DMmgaAnP=E7|o$r7r3vz)3QAA1UA^$&NBov~fkE`E>c z`XdMwk7!{GmXsF^8&(RX=jUVh9rD8TwO6YX3MG^YkIWho$_w@G zMV?BLlMhgH>nNX?&J-s7Ec8Oc1`r7%*gJHOJvv?P<;-sjtC;cFTrgze3IuQmp9Xsf zQXTH5y@mW8?s8iO3l)6`WA`t$=Rfh4e;3AozZ4^WU5dQO{s#lecSSXG1f-}I)030J zf_T2niD~;S#Qng`Sa>RRm!ELOp~=e60=Kb@f4sSMe)300^z1w5M=v=lv-`Z?PL z3LukBum$A^5qEStE!{%l5|`G0np&*a1`GZb_;T9M^gLST3p8fH@5puv=&QvqS^TxX zr2P1ce|K+)2`T*DM;JxY{StuS!BFzTvS~$wX@jbUMzF6h$ui|;H6CI03e284DsHzx zNSZEza$gq4d;8MM6>xQ5c=V6c%EkIoI=%0oxhW!u$DtO;)k?{ee%%}3VLj%m9u}G; zGHVEn4HHJnFXArhOqGUeriq32mKWj<1W`d6q>$mj`aX1e4J(;mpT9l`Sjniq4*|(# z5&J_R!V7js>GS&|gJVwn`Te#Elgu%sUtV(MFBRcmz9s*`Dx~C;|L2A26xH@219+i} z=g=yCc%f;yX@1m`d1Z2P-#257-N58wW2E6KwMT$&@y)oh8#80s;e zxl^8=L`i1x*Gv;21fWJS+;#Bp_=%u48az$><*w`2Aq0tCN%6C)I=u7s(2+^;Qp}C) z-&ZmRzaMC)3)3gz)8Sq5BC5pTeT9!j?EHSd`4tQWObLuBaK^RvwQ11^{rz}pyE4PN z8$e*aQ@fHjeg@dG)+BMd7WB7Vzzd8tnm%NL^OxS@KZ%xq$>qP>hSPtkh7v-3-6bGo zufCO4K`#FC1@&ffHF50X^BB+nXGLmbh>J! zhaxMv5LUrSVYZYqQ6r=F%3sb8lDR;_lgOo@QO7N@P4&2aT+&E!n`&&nT9SV1JRcg( zzK-YJ(I=6YbecGvWbQ6&Mo94R3n1TomR~e{Hq^XW7VyR|XSpqDhx998ocv3*;Q9FN zzq5%yc)$4dO!yof?alO^9E}9@?Cs6|_Bu+4>XH6Xk-(oQ1>|5-oKK*)^(8F55a3`y z2yuuPb4I3(WUGcQ=DlThmjJG$24QIN{ll8XDJhgh?kt%GC$~eESX=N(~Ge0(|0&0eV&$)jDz8**Ye1jBf14Qo|l& zoil-1vEUitNsv)*uHR@E^d-2Q?gF_&D%NE2&ZcC-ku`HgjwG(%=5InXmYwp@2feUm zGD?)=6V_ytOyquoL~OP~BD9*8&E>cDQhj%XWC{A_bK-pW`_=I?ehuRLhmeB*)S`c$ zRrr^!s@6u14hDL*zqtMXRjca1bkTqRuJoV(~M5T)5ynmsiQQ;i?m4TgZAZlx6O}_6CX%%q()N5 zY=wi6CI^Ls3Z#n{xI4EE0;%tWWhV!77Z_2Z zLUu|jbD<@$CLc|Hir&~N6X$}QDU0J*Vqu-O&~YQ|t%oUeN`1y>TDH8o2A|7RLM9}@ zjBU1*SR{p_5XZ#X&*V%(Zzb+0M8zY%2LUY5A}bHY3giVX6t7sJW~owWG~y7eLB>aV zERX?6)nm-;u!E=?=4IMUFlxoVq^la^S+uVg6*kbx*Qn1GCHSLS;B3sTuO8<`e`n>g zSUW*@*_gJLTV)3+=P8$@z@x(0`Cwt58l_?E zf*&wZz$v&^Avj@}D(|F5W=6{v8xn~&tChbyYaiZsv{x@|jeJ!>wNF8QiVwLYMaN)v z9JvS?kKgbvkLsshPO5y~Jld%~4(4pRe#GdQBV<8RevdMpC^;mMHxiDU5kelAA}bJ@ z&}^I8_q6(HP<|yM$Qm5Z7Ey9qUIA~ zEFGon%AAnWyUw9m7=e<4T5d%)<=`)mL!Qb2Mdx1%9&T734F!X=I1~%Wo+yePS&FB{ z6j2;2FW@&>s3LVUJzNYLHL7Ur=*uCUE8f3mI3_&etzkx)sXZ<`UnwQra;0ElYFB0? z_+3`o%-$W^0?^GhJzAS#ga||0A}+N=>gJRoE?|U@VN9}>ta2h>pRwGG;S8GkV!}`u z1pyubd4^g)EI2y20-s&b5~)V3e@^HW-Yy`RLP(QHzbIH5K_$#JFxWy+lVXP*VIALH z@HTXrC|9Q68X)2=3`{i1JMkUTCc!lA<#ShDu$2W!qc{~W{zT_{Z?~o^jn?ac<}QW( zT%`t@7oW<@_t7Vv-t#qTx!sMpREg2`n;_Q?n)Z2b2ECC<(9Ipef(A2kY?IKl3Ws%y zw2?cBd?-QG`*#bhp#Bm98=)Swv`aZ_qcH6qQZdE$OY2edtPn+dwAYzSF<>Jl{YgP=KNdji@fruwss1gm!wU33-Z~^Jw8@teL2E<%fl3!c-`aZa|qv$>;w$&i$ zlndy?Ypz&N!gi4m2d}gPWhAB_&uKSk^Z;#)SO=q%qPscJ&y63O{lz?^eH4!#Y5Pcs z2<_582&Kg!$gpY=2VTemFfD2}yryxRqJ|^nPNm zY>s77Fj=E~{P96tYfV%Mr@WQr_#K+&%=-uDAc5Oy)T6_rCM?epoZ;0W+3R&P(G$({ z18=q?)S5!%DWh#v1F@*X+tP%U1lm3fU(ZyRtdf~#I`$jq^kg|(1yGY*ZS(?Z;Wl9 zr*NY_c7g=^Cch>p{F+X&5v3B3#B&hJQ&9e>rt-S7KQPt0Bhwc)8a&mu<3YM^)PJCL zbz&E$kjSlWVY-g7wN>|ctaZ7Fy(@}Z`ZmoQonUhHRr{i7V|a(7ohxI&B?<-CTQH#u zf@PL+`xbUvc}NfmLl;fZi+6bE0*XesaA_N|IB_^5a#&7&V1nL=re_N%dKGBi ziYHk}i=!jsLg^R>cE~#Gp8tfga(KsO?}ZYx#Z4cRzRK+Q9z-J=_auKuSlml5d5Y#z|9HE4^+ zD%A^I76dLyA7bNfXl=(cHof_hgRf-m%$xMu+oU*AZC+M@39V|X_a_o>+&7SoRgC>M z;JWn5?IlM;Sa&P5hIs>v$nQz{K!fFUz@0-e{G^h4w&N2;XDQ!H8_iGB+j!455YTME3urAC2q)1 z!7~cIu40^tZvMT8x(Oj($SIcN;K#U&vGtGN^(-=X=!H7ffgkBP4oM{?l5tAqxno1J zlTzg<0#vcagtY;NhjJbo{ml$D$eak|I~>;8bHOr>g}q9osKhazsN&R3pK^?YxXJPl zO0)-W@w;TjvGn$CN%Zsd^UV8<54GQ5Z5^_X!RW;HqF;L^dm6;dj&oRy58>K*5Wn%| z!ru+Tikq_Q+Fo0AMS{X&7H?PcX@&J*9+mVX*hl3^D~%%EUZA276}QgcjZnogzv;p( z@q80{!PpEt-{7UjBa&Z*TgJ?w($%v8su#sD8}QKfR^ZiNuN=_7 ztWLB4t5E;%0Pz1FmJ;|qEG7FVqJQHr%aD`$1wuNQXaQ;o_@f;yF6Sp)$iaTULBS9( zr113Sq_aXwv&KRV(MOe3Q%2lZfOpbei@p&o>)ID>;~x`~#$8_AU7v34L`fSt4EUeK z%@VYcEOo%m#>J|Z2$~tZwmo911TO68bAGsmi8$v-r5Q%mLuyDU z97$+aZmlx)%odtz$@l)sErDGe={N2xw2DxsC<3kzkVyX$q<@*b`b&`hD8&`1 zy67q#AawP`IwgW6!_g)K>-*y2>aGle?!pICjx_FIZ~@R^?BQ`?>EV&ZLgVFG&DKw7 zE%c?P*(Fz#`xq5|`Y*4@jQg zTXeo~h@8@wz&*e{a)9^8eZWKDnS`#PTLi#E5ZvOIj6Dp%Q;6wb9?^RofJq>@r7t0T z41ShH*aw)uM@dxiXcZRxfVdkg#%{KvqPkdzTBzi|3pO7GJxG6M1WxCmfJs7`kujaxvY?Z zu0nmLcelj!hwYs#xg9O$jQj#v8kR=Wm*oyzqIu)UH25DLU|_9)>m0tBvbwh3RPGBv z>ftIvs`yDb@(eHRLwR(}GpzGi&ER?~iq6$zZ8ZfQW`ill{-dYk(oCok#n_={<>t?V zlWXA)6NNUy;_V@-l29hOA*{W=oU6mLy_|VooQWa$<+s9dFUw7nTe?+Vy2W!{6!6DK z4-Iahp4@69O3F9lQAKPNwvA-8%Lijq*M_D`x+=U!D_aQxWHUk%7!ARL1J`$#+Seeh zZ{opEP|)N$kBC`2+iNfJ(~*lml&PmUd9cXtJlen#;4PjF){g<024BW?<41guW?EAk z2s>&TTGV36m@sXu%}h`-IEN)YqErqpmuCl2nm|0iX_pgz;i5dbgQLjl$Eq8_I1-;^hZxB2@l}h8c>P2vHHCTt@g~UkgLHjjD-%GbE1c=j zYNkd?x} z;caxvvZ<$yB@4;-e48-J$P@gqxz;aJCl9V+0rn&Iq~??r;$S$TiQ?v0;rY2ExJsEa z@`Je}Z|1JyZ*U`k%K|fUR0H@q0ua04tIqduBLY-G+CuJ{jTSnLC=$eo^rCL}2*-Q6 zr=~K&IEQNp*B);@ve^_{cmA)|7rHuGn-;7EME-b}j$Sl<}#!9K7tx z6<-0zcn+h29aF|+-c_|sI{Xq!5mmZhBsXuDtdn;%W%ANTx{gkpFcw{02u|4Gd-0%h zqR3!ejj5`-sBzT`-I=Wul}%-gpt-k=V<&`2Lvx}&M#%_}%`vu#Cr#N+C-#EtSSvad z{+IXL!Ffk@724rWf6N%Wag#tZ>4&n~!?y0=db4u<$1WKuwDIq`>9~^%-|n)HBZ=31 z_#27nO6H?h+>dlrFowsM~q=?J+}Kj$GZgz zVUa{WFT&%l6TkccCE}&;_`P~DdEGd|{Q1%c2r~%zM`VGs@)fv_+Yxlw;uQI4X3-r` z)HH3GZ4Me2>MTfZMoE7%YFGEk!6F%_ar-_KyF%xWbi@^?euC#0oJSt1BP&0%6W^ab zi@KDtP5puPG(smO5&Nl`o;LY}Ef02C>QWcc_N}eLFC|QdNCzW^@(P$dS`E9miVjkl zm7EgZ@+;;OQVuE<+EqvMq1W$I927dAPPEvB0(3&kZ?REn!$lO-P|D^^O7w%9#;K_{ zCw88#Q?$g;CP8(UEvMx3(y2{yWGk#H%@q>U%F0$4-)SmGfsF*Drrfnd=UGQ@kEr6E z7`ckp`7wjZgPu_nJ> zn3CYWtp$2N_U>Zax`2HQ0(w94_F~)Ggnf+iOA`ZKZ* zEvk;Rj(yYJH7bc9<~ps!Wau}dbPl17TvUbqHmXwYxtC}r#du4DRI0lPL$kpl-PVp% z%Ct6pVu!>7(G}T*tR{NZKnf_SoeIhb_1v_d%uKb@Az(hY!-z@dll=QvMowq-uKnn z7NRBueWZeIt445X+d^}#N$=<%K)c69dj+OR%5L3SYF+~A>Zyie$yN?rXT|^6J<1Is z2k}A_E*31t`UQ^~Z@XVvQes%Nc`?N5k({J)7mvg`X4;30#Cjm#-w)9``jVX_GiZs; z4omx@|IB{TPlc@psmd`I4US_bN`+(P6$NpS=wpXzg!E~TMLK#kCV;0DTV_;MqOAd& z^Y#f*J3!A5sbMe40|$uxscGnkqutlD@i)vQuLZCjyKe-0Z+QhdDONT>f}bgYi^|bI zDfSRX1DAhDK0WW5wJMtqq_X;&w$$?em0)E|J)6mqey zL<1@``^7n!0-7Je%nv+N0JKIS9IHQi7+p{ln=v>{aP5n82%XQjuw>7dla)6^=O{S3A?MC%jG(*$A0E&t38aw0e2k3&%_jvS7?v_Hdd$?|~4I-hN zZXNPeZ|@=4IxjP)m)CMpoW=L*7aNX%+hMCZ#wdH!AcRxP0Yv>?Ot-2mP7( zqO0Ys%qsa%6ubrnEA3sehv4AzdAr~Tphiz2&9vfX_E-g5}7zAAg*1E-lQR+T%RiOq@H7_Q}}*v z;tbI-`azicAV_YAU5=?yIlNVPSU<5aUL!pOlk%vP*4H~ z)k|vl%o)XDn&y{@nV3&7&sqmjxt3wMme1U)4^DcVk9*wjbh+HC0l1dGX@5*Mj?lMs z3mdN)pYw2z9`4nM{0#gF`0E|*al8-3^|95U=<{DSNDBS0-q8X!*2ZQgPWHdII{*1z zQ_}doKPM2FI2_0vk~Eh}y(}7j$h^Z>-hnJXP(sMcN1a_Va-@GmGF_7N=&m5@4QM&& zK0?JELDPt8m0NM?c=Pb5Y1`DeE`P9)N*%FB*4LN&je}E$n}f|RPS8u@PDnmjJumPM zJVE~8z)NND17KiK&^hW3sxOSW7_B87Dj@X{k70?f{Jb)pHPP5Q!;(amMyQ1fEX1=6 z3`Zqm056;Z9icCUh*MWY0v+Zy^jU^33!&SRWsT~TP^{cpWW^H4wYe(`u?A%Oh;#9K z%@)S6bta;?sMDRr93S-0>6|{MZiVY<#?EpyNguR%)gpD{M8+IzDW@xgg!ar{3^oi* zCv5&HiPVYET5}oxt^0Fo3YZK2;(U^2aOMUN6s3HTKG+V$7P%u=&z$Y*^cN%or2yoj zt!ASVmVss{8ZM@yQOk{BD$1AicFp4ZAy^0fV35^^V;$T`|dp-8Um`FVm}>1 zRTwMv4h#Z`U^+707k%0O=-}jF1$<5jUR!XzXfY%4<}eBooRAb1!a z)6{cK(ZhQAM(I6m^v||h!aVeA?0CCOlB0*c$Y>^pj=RPjh|L2dR?;7vMS!G@*-~~5 zGvnZhG+yk z&^=y1Qq!$|CYeux&Gq+AvZ`+fG(8d%B<2>F^5Ctl5^2FxfdSRcJ~ZEak0bz8YCTIP z5}vDE{!2bfOCwO~9W%8Ghu6|8-?s`rms>dm9TQYjFV~eoGqz3js4*QzLsq z{$D?oI5dSKsdb3s$}3ARQmdqp~nmnXt4Jqv-A zKXT3EYPe60b^O}DB`3Y0#TMi9K)R7NOEXMqVs=L`2TF|obLIsRe)^*wyK(H+A=n$9 zp*8t{0yf=|ySyZN*R7vTZrIPT`_lagw6%e!$5s!|Ndlu({=8xZO1VSe#;*;-uSpUl z`xf85^6nK`zalY3BPL4F!pN4Ro9Zs`B3S@e=yV{=f4!pztQ%sB`$j)bpQwjcPzs$} ztGu0C{- z0s!^R`!kWWFO(3JJ5Bn_R{Gd>XGd2%;9;&*_VQ#jFNch(ye2%WrsSH(`*5xh<78NT zYmBNPhznU7Vfc@8BUX+og!_! z|A6H3XKtRm+X;w^7#)u0UE5bwi6wSqoYF`p984dp&2syn`}1mdX_K49InXAixd8G# z?jVH#I9Q;m%Z$^#sC+Lj4#1@}S;D%3;d0wWyPQRAuyP}%U+A%z&PR^WQ%}A9;)qi7 zh;HQ|%K95~)w#-4^bejC>S<=88`$f@7QudD;;1y7_zRP#zr;lT{|P34Ktlib?zIG2 zDTzK__^+#l>&(JdZ-5;T_$A1`9pw5*K+0U;0pd|iYTuU~SuAs-)4WC$x_x=NKNDH= z!->l|f^LjcUT_&7yzSn>bkjM5j~ZL>%5uTDMyDgx2ViSF?8JDKu!P1%t7S^&395!i z0ZrVjNfY9#w2gtOOL6tBbl5qLQ6fh7AjX{1{C*S%5B;8A%W4RdxuC8zF<8SI8_Y{%rB zm>jj4R9EYClVw-6;zpF?(jVMu#a_STy*PMUsm~wK0R3f3{{JOB4F3imcg22U&~kTp z$OK%A+Iq8H>t#Vap0N*fT<=9f(x(07ku!W)7{)xJR@{ENx`EgRQ~B1e93v^p0O1mv z09)aSEOxl=X&=Mv5*j9w%#k9X?&f*dEw|cwjGI`~z43d&cj9w28U*#GvGXy0xH3~8 z?yF=Ju`A?9N%cl#g~2N9hqS{VKXW^Ft`?myd=1yyP92-8?zubv5uF*&_rIg#tW^K} z3mwY+U+65#^@T>VD?>E?9Ubal=+J(kqxB~`SmxhFKG2!$fo|x5c8vZL9gB1mRgcUv z=HKX?{D}_jdo(=mzePv(e`h>0mWF@cFdy#h57YUd*dV7{8O#nAS7dET!HX5Z&*$NP zc(k%?+2UK(xPo=&^FS%&>pD&l%3u?(_+~O(s3@JOlLaKxt@$+O??Z%yLYY>qAHaJv?*LxTe4yw)^F_>* zznY1J!CCe&6u(r0K~rG~*RcU$^+iGPSpoeGy8+utt8BNyInm(mNTH!}TCwhOh4=3F znyhTr$W!bOWPbjoTl;^6jG~K;v6+ME-|qikPVEn59uaupGJ$&($@!{6r~SRDe0}AQ zYKSe`tkz)Cif@1DTq9R+!Ciis&8#0jz*o2*9bgQ7m)zW&8vxjPVcExwt-#M@yObOR ztjP9T8zCaN(!JkO2j*e+2}k@Tp1kc+TUn-dG7I{2oe>$w9^vriEjMpERQ(OIhy=(X zBE4or@SKpyGF1f&PQ>U6+jqfu1T#Kj0P5YtQ7CIQ=5}tI23N)?t88;#hH71265I3- zmgUWM=}<7HpTbrj#2ZwKypXDt-Sm38BZ4qv#K)?5)1G(OfMpYG3E$Ra6jBi_lMDx` zA+_WLos0rcj=u+0GV31bhN{~@<|P?01yxuu`$QyRTU0r$1oA6P^qL~w{jM_Rf+t@6 zDg^`lrAzw{s*L|6F#7|722}`Gg{6ddn#5bfCjen#Z#qym_-Z2zpAa=k@f{fW0pWO{6Nd^-zLsRCFgivvu2 z4rDmfd{i^3;F+6L$4Y4JEsh?XMCpojI$XfsIxogtfCZMI>_`e zU`V^oT@~)WZqAPCKw(ab8(E5QpI7E*>#M5#4AjBla%#D;zO=Y<#N!Qmla`MVcQc{qzFoatk)Rt&5*itXB&!N$i)G ziQku zLj{4Sc|BFGrBs@$7J7<>ET;RI}3o&3EtFAA>ep+5Esvm|L6(Vs-(YP zYAgv)!NW>C)RAtusfsYNk{Dt(4F=AP9mRF(tu7@dz664hMVQdeNHH^`XLvf%@o@SV zMY+0@Q#GP|Ara(MHxI?#mFh$VshomF;c##z+mgciY)pA*(WqE)5Q2GC+!QQ=#^Z=th!c7t|;EKe)q zK!-NFB6PCKSaqVr6%7i!mPWqZP=j1f3Xc-(bMVyUK||XLwNIChWF08bvo`tYd=az_ zufL7&o}5gk15s{D{B*~#1VXKO1PsX;4&5M7G_cVShBh28X3af5v21eSCT zVO5y0nJSQ9bD(Kd5+u}LiVI~sgd^JCNY=>$xYGq7z5I}y>_b=?xrdpD;t)2!Wboz8 z$kG-J#CvYBrMDOq+wm!;PLAXwYGbxC6oW*>m3(=gfXbPOXHb1H;|KBk7#!WX&>a;? z3S`5j0_9o$rg8b+eb(&}wyc5XOANv(y zW_Xs$JOPfDL$1@~J($%@f?)!|?A*$1VIW7_VdBA0h!Vh{Rp%egtzP!jex+(~6EYFj zNzyKRL)j-00Y85ZKhq3O2`f0xTWLUIz)&S56~t&r%O*n1Px_s#m}s()+Kla(b*jk8 z7ag)oD3Q?>W5d?U>?__xp|j9|E!?me1>VkS_*i)EhtAXx#ew0qen}On^P`RwliKtU zj2DM19H)rV3OlgoK~aAN?x2aq=|PsOVA|9KkpcJ?Wtn8#MGkS zfQXw2A5Tk)M~Fws7h|i;FW4LHU+nLII4KbjQ9VE?R` zOE~})mk^4>Z|=eAN7StWvGxuRxoB+sOcOG10X&lan=N0y`2fWXHXpZzT~xndNkf%a z+8k1MrX1UPiM^$|dmTlxy%r{J_7L5XpiRf|SR5f}x%UUkQ>P@E+HXy+38F&Wr#_#% zHL0!7H4t$;>UBjFC)xIVxqf~o0&ru8k?=eAGQ6Zlkobvyu7Pg-1qx9ARm;HR?Wh25 z8z2+$Xpbgm_H9Moyh4IVZZ6il&f=Ubh4Otza4R6c%K7T~_(AT5xV6hQ{OOuG@VuoX z=NV}oy`^kJr#A&(X&Xx<>fGnq%|xswhQ;+cTFonjmm2-M5c7Bk59-n>Rt%{$H4$V% zISpztSQ7uMaE|(Tw`)j6egD|TS@ZTolBmJY-lEBNF0x(1^Y|+})GXaAF;t$h9kJKO zaGXb+kE~f6{dw=j2y4J*k{!B*;iKAZ4R|%WUJZnW5q1wdhKSm!NJF>*Wn|rMLiM%yyLOYfX66HV5ZU8~wM)0fk2- z>-UoIvquJuhwZB7rzOhwz=6%0hOVUTKAz!6kXM4;cQIkKceO#j*RXJHPaR>F_lSY6 zF;}E_g+Za$Z0xKdxUnmkSG2I7##cO)?@0qcYg{vcwKPP*QOB^GDVfFV*y1wj9=8iSTMZ*g#>z?kLSwE$wyF?RGhxHRo$gZMSap(}21t$<;mr$l4Ed z)oLO^Vz`HPRQ!X42*S=_J$*d7hV^~LNczdawD*2U=obK~s7l&9#10uZCvK}J4#eBC z+A684%37(bsx7O^-k@wdZ>5qN;MJ*4_Kx%p?7*U?saZO0u`_Jy+Qm8PAZlPg(l2%P zHdNW4p}x@fjWg^>gLM*@Vn4En*#twPmZ?2rKQ=CJciV(KLvqrLQe2jj8q_3G13|Sb zFH+v#7Ju_|5j^7F#kDz_{waAf+|_gRO#Y&jKwaoLdTr%=<{Rbh#`T2N5pc0toM-t= z3EU~PQXlSu%}aE~(veS9lvGc0cfD);Bv$w8ua?Ou@x5G;U2psAC%g@riWl7i-0ZP9 zln2**m8)@HHIza?phWU^Z1ig7ZFAjj<$$B^{N>#m>CkoDvHazIvNYrgTspFQ_rj|M zpTY8GRgf?DhmC;3C>d} zH8cddQ)$6pRZZ}jQ-aC)>o8d zlHb5>e$dP_karhI&2G4boFI~MmWBYKW3Gio ztmG8rid}tyIcUwfW~Qx$CJALt^M*($jX5dFh#5KuA;zd4j))W=w&X&r@2&17*_3CA2`+ZH-E3}P15lUF2`tPhYQc>G{ zm|PQR}jA4yNKMgja*5t!T85|DxVnSaW@F&cU|>5*H!@kB z`~5gqYyfw|3PS{k#LUjTjA#d6kf>$_Ap+8JQYEV{qh^^#^L+}Z)OJ_oNz|v(i;;zdY zJ@ZZ<(eEA^_*7&9Ft8pk^Q|r{u@-tvPON9!9tq^fC(uLcYoYYPYHj-$F;6}lhmo_S z%iN70wYDeVSHKGzWKLcQ)|(fF97k1hPq^e>8KV#KPg3NYBKtP7PkiKFaief@Pgb51 zp6L5Lzq5Elgyg|+O-ra)=WW&Xo%vOK{>4<&&9`oyrG_Z2R1aR(=Wz1*n7Wjg^0J~ zU-bjQdC#Lo^Wx`|kp`%|la8LQum(o!n{}mRJXt$C8!vjjKDmDGW?Ng-J4BzcOT|;8 zT+sK-!c(GLFC&$cYm>avE+|Y-l?P?oZ{GvSZ10tAmD6I@h_p@Bv`0ws^_ss2wn@gy zp&fB~XNPOHH6%qJR9UTENGzNJQn5~@XZ$MCoQ{_hiDU0?%YIkAkaGz$wI7p@gtc9Z z#>(9nyb9A#fipso+oq}PQ6AIT`D4Av)$IEc>DVse5;KmtNyHKeiLrQr6qx%e^qj_I zqrr>x)_11OgUVeU6zjGTAh)w!b{jDoXmoq9{DnIz?WCWy6;AjgY0&$!&G+uhu*Vs# zNMc#5PBUgB)0OPAY9Un|@N?|36CZ^-(ph@8wmk)rSdXMEu26UvqS_LOrsp@kWFEoI zQinF8UaP8}04;>=AWqqcuoKSdjySz0kCU?q80un=91JF$EcG~4&W{lcLAweuvnI^> z62{gp-#{^#DGOJ=zWBn%BF6UO9z$A{%nfu43o*<13iK5fOqmzr0HHZM+`&2Fy~ zjy1PG!7|;1KSxvV%1EowStC_~F6p%uXsfpLQ5jq*!tghSbN$QIRLwbpgg}x4>B5#!C`p^kw?chc z%$}2aLAjzVy-*3#3%!M=feAwVMJNE-HVH>7r?^-AeV&b-3n49R3-p23$A z9=EOqu*0nSzpNIqdpzDcKLAod2VCsLc8E|25Y?ILUj8OOF~{1gGzR*}E`t1(J^#zO z?f+_&|DD46$np{@IhtAiVZ|NF8a7BO@b9QPi`rPC@@vipKtE=8So_0(AasKyPV=|; zMY}aI`87~qwk-88THCO`D3+4*>Y@riTZ=w=|@LCTbyTn}PuNkc9I~^Y z0=dkVw;`KQTB;Jy-!MvU?zCJ!zL0DkwLxCP{y?VtVv(OKMPXs!NXal*HBlY=hNxIC zB~``fw=OUK!*iV(SzENAqh1JbxUz7P-dCpi39HbXO6o8H(TRE6nbIg3Wgk;1hfznK zs%=z#Mti5>>0E6hyId*RNCVPpHTXt6?UnevrMLfZS=8NDXAJ*|7-|EW>U!FIPu!v< zanAVY9fg7II`Ie4z^zxk4%@d2^LwYsMr8A0G-r$X+7WG7yO2qBAJ~JOB}!xQW62OQ zr@7{wgp?B18zy?XhFE$N3nikYA}N>1o=gUIx-mz5sO6W$@pUv(U+?knw^!zF z5in31yG(HZv{nQ9;LY`lC1Q0v~2?cM1MInO;rMuku>t10s5xOK3#BS5I zt){Nkzow>)i5Y|35<#Bq6d?xOVVwRS#@;F_vS;1){6pa+P`JChySux)d*SYdCGPHp zySqCS?hXZsySr7h_q~04^cmgzoR^hP`4VHSFXoDv^EYLx#@&&UlcoaMw`zQ;*w*dHJ>tZYcv4!CAN(E?rQ@)E(XuNsSn=pRkp>(t^=4rhyX17?}Nv? zCh(ZuFd@jo@iPQSri{QrPv~|g4r0O)3(e^3wK=AOXDJalR1`FZN04cRz=b9GePQ2l zddLUXQNizFF9rrFu0F4CdH`pq@0jFxySq%9tX%ZOQ7$MzN0|ZTY|w6Ei0MuM;_bb5 zaijKZIqt3cQUjKsM%R0rDfG=_;9uYGp6+CB^E@Zij%@AW6TLhT5tQrM0@7kg{9$~e zbNhvaOzF{=f{D>1JU8!^=}+#H9&ZYhilRlxzvlW=5a+u*dOjcD^@X*bkF+Of)rTHv z$Up}Mp>|tO%orbQ8G;g~-!=`Cp$yfwQ4r-BKz;ipHT1i$tKgr`3Bn@d47W!p$zu#N zBou@mK7>XKD2NMYp%%IBZ-hHG_mnF~?IjKbq!Og!d(SAb^l!BZQ=AO*_cIBM`er}l z6QisY#2DjNUHx08I1POWXDnf%)BIQ)WILt4nBgt|esVCp{dtSpWBpm(1b=D&F5w2h za5wr#kmx}`{I8#VeCGLjUAQ8_lYnr5M6{h>xD7@84;@R&d%f6U-daX8RWT?gnWYJD9FNa(*48NAYGlh z5N-fK5@PP>W1ku@qKd7oR1SB(MKXmHAu0c7^{ncn#tI z)9|JLABw53;rqYlZcO~tzZk%wGj=v3LmFp{ZJ3)drXd}z(*3`R`+wfKq^kqFVK)ieSxPc|=gAFtZVvQPs2=FK5r}Qw!(L>%eB(1_O?a$le zy&_g9X{2iFA-iAL!1c#FuqialpH!K~Y@fy%@Y1F~DA3C~=l_CiSY=r1^r#4%0^*y_9J zcMg!Bn+^qommUWSf`z$bLQQVa6R<>KT(LN~-P%)bU+w2$T&=BhnLNDk?O=>v`~MsB z0xPUVQHZ`ZF}W^NdAu&dF*(d8W5dD zZLCfL_`s4)JP3tdVP2L1lEa=(%vS(dOVL44TLY5CGX3v3-Tt27V^ zw)=0#dH`WO2nCzRyiE<5!{RzNOFyX2A_LO~Axx)#xqQus&}!X=->=-^D~XS3Z|{<9 ze?(I1Dv6(_6&l~`J=}p_$yuY-=she0@iJNSQ}8%0HzwYvMA>QCn}0#^L80RPsji3;@09lBQL@1J?=)C-vEV+EglvazzY&#AgDU-rMyJS@%@bTm^)fdJdA>jZ zTZOx2c94KfP<~OaMs?w6EmVi>>!6Jof`s)SH$Df)Uk;R0m6uT!{V0{<4`S9sxooV&(6)c?n*=4Q}TMwygGT5%_ zSwQiTp7V|Z@C0Kg{T`Up2_`9+|ND)XQMI$}65it>)iv}(nf?4JWj308?plaUXBXc6 z0XV?+L%SO%_SNTIzo$%Q0RFl2-DXGw68CIRWvy7E^p_Hj?&9p~qQS=4o4XIrs*sKp znMrUf28eFpD@3)rQi_tc-2BmRkfO~=rl_-VhJ^54Jjnd8GEjSE|7D@#0_hY!w+UD{x zf9u@Fv)k;x0=stGlN2M5+BNXDb!Q)d$KK zEHTiyv85>GvBD76u$FWkY@*5osw=vu ztJ@v!xY<=O7G#uy7=I^(K3O(w4E;IuZe7k<(NY{)Sp2hkSZ?RxV0&&hMfBqi=aXbi znT);$sw}TtGF*?!deXsEbJ(pPjz1GgMRIT!bY>;d82gWEH6RYXHXMwYfb~;}|_BT`E zyK&^Y(4uH8b&yhSV368uJdOnw8><_UP){z+Ly^U9)z6AouYKx_gr%$us|qAYYh^-SqH&B>BJ1e+6tehT z2HZd4d~xgiI+KMi=E%40#JNSk=jUx8AR;gHZO97h*XI}JYk>&uWBU0<$!$b%mYQ6@ zHYofi&o#a&6ON6@+ecf#&8f80uP@V8yRpu39S9 zYBXnKtV4003>+Xf4x4BuOFqPpdoM|;-L*mb4xBzpF0DJRwh|iScm@1PU9VW9$v_q7 zPJ}Y9SZCk0vNOW0ENz{cT9>hxvZ9USIkj~QRa`iIeJ@g*$K;HUX6r#t)e>aiYpAaR zrzoKJF6=oL8hWj6YhJ#71%uEQg;}A+dB14s&VW+-p75p!U%pk& zdf^N6VTZU&`D=(bzlm$SRNM5M{Zf_=cXi~@naymS75}vM1>2l=;8%H6k##k)ApB4~ z&4#XT9CD6ml=R&$=J6p~-tP(M2#=MLOLo2*d;VdG4f`eU?1wo6L@}@h`5P!X_?5Gv z0R}%e(%*Idktlf>{FBm6C060Z+m{;$uqQOuPg$dCE_ghe5-Xqnr#f=Yc6bqO!B2f* zYPLjzTXK&$v)c2S_xuX1f^H|LEb`bSXYwU;DjI3qXHjH`mSBFv)meVHew;~6IMfkJ z&3mNE@EeE&z5yPkg1d3|;)OXqR+Obf^!$^T7`f6UrDd14C&V0IKEkW}B#%u8XNm=7 zwpFd2II^x>YzopCVZsA?-_$Z*=IN8Tbb+6m;cSl&lI87vgig59Rm+9Xqz3G>h4|>1 zrZt9&+;-U^lh)w`Yzpm@tt*-bNb1A-ZWBUH0Y4Fh9v%`#ru;o*`3^XAzoDsC(pAf% zR9^}SZ5_Zb0zDAwAn3(dQN#|Vv(l_=aDSmLl&&viNpMp(m&XpWX5G+Lhb1okso?p` z;K5XJxqGFpY-gnbu6NM20Zm_q}u)1j`!sC?Xmz{ROi5cUe9lKw!Pk?x(Ui5vU z>F$CGM#t}bjJEOKeqo_OX_aLo2yidK(88wMYMvR2eY|U6BJK`;>yfRgWufg;Yo=N6aS3lAzmN3E2p=xEvmkDBqfsepVPnFb*MgQEb(aK3tfLJDNvdTw z&7PWub*dRr&+N({DA&X`{WnLlDc7NMkHa;#Ck{wrI` zs$fs5RQwW3aZ7p#yP$I>3YPj)f{%XgM@X)isA;_K&y3k=xu(3csC%3IN~XEPSYC>W z=+|+`2%v>wz>X&vGvMU{9Z>0qG&Q2$&G&?rd2UY|XhXyJr6CVTr6 zZN_s02vtf6-JDdEmn;oS0z4MRNI4Cj1a(%)E`>h}^AN~XE87jKg=J$XYEL)eZA-1lxBgd45&Rj}n7;efx?B@RXNuJ-P)!bE?VJ7^j(_z!eFvo|nO!O-8zD zUcE?L-%d?1sA9@?0OyT3Ghx0s2hs#9ehF@2IGtl$re`2GyVz(nOaFHS(oR)GYmQXp zym<~0$Bbx@x3Yx|X?0Hdhi8KzHJakW1{MA>W$Co$`)A#{;*(=f#SM*H<&Sj@)sZ>E z$E$}0bn)(4!ix*UH-;m;5l^~>%iPL$w6`SOvf;6rn;Yn$xpoDb3U_qJBhz7I(ONNB^=X6T+Cyjyt!w8vEMlLRE4<#qqE@J!elSqHtu96#5BTM zc+%d1k=yJ?lJ`gGZpPo0nZC1BM3nL$7bWHLBxO-2}B#6O<5JhVM2H0xYK`dfs ztF(gx*e+&Osr4EXwb7X4o(T|w$vcuL?^;25QrD`m{uKQ)#s*|hnx z170Z8X^w#*rBZE51L7#DQf*oTgQQoY76qp&6bV7e|QvJRHH?}ZD9?v4*m9tuZC6&2tb04cF-)IwC$z+dhU}R_HvjUp^0&~EJ2Ey%&?tMykSw70cI1- z>V7+3TH;V38oVm&sZyxF?}tev!jsJw?pMi)?msece(3Zn0>32I<=(7i+n)$M?`; zYWYe13}Me(O>p`5iAJuB=jvQ4Sy@W)-&qC;ZYsDlDLGM|;iTgS@09XMMg06{RfpB7 zFq)QRi!Q78dHYtgGy>(S?SAv=&1;wq-E|G7f@3PFx+Mzy(z{X=sS3`u3+{puMy5B| zKQPESOi?^wV}??*lJv;Jv)DOUE#>c;hZS0*6x@w}WXOBgAu-Xi_!zx`rBH&1PfmI% zLjPn_!ux5vFK_q^=1=S$wa|UV$C&NKOR&@L!<_v6OB-b;4I8_(0E#Y@GCOAw^ zYac#2PiSQsVno~O$&bX>6BqjBxgPUum?vE|uyY7o>T{IhJvp8P?oCE#=Bh2OX7hh4 z`jgD;o4oE*R<&$twe*?y^vv(btKwzfQrXtuj7`UL;j?oTYuKds)F|tH!k5z55>6XS2$;?;vY*s)dz-Xd6i%b% z{r+5J_$sbfe)^<$**VK8(y!*SwsYmO*zP{vWJ<%clGC>0n!aSD9d?_|W6RBFnaEcp zm`5||Hqu`U9B$qHHP^RR?9N!3q^bfyrBD~$4SMmV)B%@LRi4OV9ZI(6=NEe~{`yID z9A5mUdVa3uYZ>8h|Jgt)iumxUtBuq7XM&pNMY@?=bK_z^w;wjWw_{^HYAb5!vWfQZ zTkFI=*?4B7e#Qet={ws^E>}IDeo?i3;|kqoDfC>DSntqY55?LUMQKa9_+ohiDIe1? z@8w&}v+98ZlkGnW0ReR$rP_EZD1TpQrw9~x+Y%*{ggO?kB3cB<_9hOc z`C}hvPA@$bofUZiR}*$c1PYMLyAyC#rmMdlIR+_!^Z)`NJk~l^3$xzu+5Wnm{!vFr z0@WSS=Sc96=L&EitOCF{KpLyw*tIdRmf1HL^ahbW5kFd&3jzQeu^EgKb>6GM34<5V zJwrh*07Ii^3a}Q(3w5oMJ{l@@$1jpLm@jN9?X@|umdQ5-qzl+K=YlYY;}iX*NNR* z)+Y)O1u(K?6ZP2v?4EH3)6kxI{4*>+BZI1+)gcM`YN@Y@{PhDZv2#ti#+jzC#epj@ z;V}+Wo&x@={S@HO5dN}(X;`_V4z!N&{*r-MVD_U|G*o*}Xk5{?wAc9WJ>c7>&vc(c z{q)bGkieT!IKD_hWh2f{wLqV1OE|tUCW)U@&n}R;BZgGh%J0SCf<|p%+e$l#KwfME zqc+@awH<$8+)gdJXEX?Fu=Iu=l5u34iYcg9{hH2Kx8EI{>u0a(4$P-PAnpwk9AK9a z{h8}iI&k!625vJlK$$4|it2k`FO4T6*!e&&^)<|=e!s*!^u%W#T}QwT!{2Hln7@P9 zhW2lS@aOu=lOf>HkV-qOK|<$n1>kuocyM@_&S+TZ&ggB5@o3LQM6}m+J7&KvmC!t8 zsCL%bfF}S}Y&h&lv?@#s>RDPe+BVVj2|EVJ8f1)ksL2z3Y9e;cf@j8cI0Obl2VQYG zs%w_UdZcc3s( zk>_SmBn}mc2^u=Y0JxFk86Sp^R%6LJ>u-^cNZo7kg{iFk$+0U>bZAyO?EDJ2BUDE+b zfT#i?V4+F0buB{i#osx*mm4q7(fQjaNS^o$SDOTq6H_KjX|UU zMpoZk5Z53qkdetZ1C#~WHhJb4^uX>Jz4ikVvb_I}2n)>tgk^ILG~gin?~v`;7#|z0 zPB=mjegN`}JYzv#z&x%SFOUM|NXSGs7tQAR5Hm;^7=}gQv}+l{0YqXN%6rGe7CQa} zUHW#ZdlC^kV7fCw+}@B5gaR;G&!)DHUw)aNO-zr^3ZiGgaowVKT*UFA-Q}x;z zs413*hUSUWwdv#b8u3FH^lp{w-wtk>Z?r>f*2v=`;#5un9%{Kib)U~rrHn6e6wT%I zJn>}o+VvtLCZLTw40M$*u!5lO0sRy0<5b!( zX%-hF=4>Ds7mVmN1e7tF0Z_A^QC!U5xP^EsN-C9GjU#1vC}q?b9@BI;7-kB6WMoAH z%co~Sl{z*e4wi}3L#>N};t)~9saVvO8|YJk&mj3yw#vzNGdw6w(+<}ZZ%fshxNLgB zz~BRkgec;_#>|I>x&lz;7NCeF8X7{1s*D3|4FY$m?Qumh=ae*jk#D$a%ikgP#a*V-Pln@RMZoC!V}cMd}9jJeL$$5>uGxDF0d^`E2a%d*!h2DIiazZ%D8-8|L!h$06a?N#F!dUcy zcS>}K%RdyK6=Ndj8$MN5l30nev(n!4U;MUh=7J14gf_m}g{&SrrfjeoN!sqWFjEw8-MO zK79ka>YCKy2d`nTA5@w6HI8G$UQWDZ2@BSI5TPjt3`b>HkF$X@_(5IYyv!5~1&HJU z^3jO$=hbZZd#yK`P!r}7|7dBs;~gfWM`j8kDSy4Wd1fu-k-rh|lCPU*u%2+*vEA92 zdH!-D4uBd47EB6QV8X^N;u&tIOV1ihtCYecUIs*!)JrtW3)k*%O6%h=r`$^~FR1rt zq)C`EM{iDIWo}D)(!a_?3%i(B4yY!v(XV16I8!hWbp`R3k*IH&Ar`DoK4S;gB*jk- z2AeFUCjhTaesdp7*QZa3rAcL716-3+2bm=NDL|Y~8g}{y6T|*AsQk?XE+C`&ky;zq z?ItUQfN9&c-qf_B(?LTHk}&mxzVZB&e6g<8tUO)?7DbF&e?~G7K`4BF*5#*WiCDL7 z$O}{}KUAw7c3ZVHsKwQJ^Gj0XL*wQ|?JqH+9%5B)i`%iJXeM3gg-)@V>fU{qd$Mvt z*SuBRT`N^n`h8NxW$q?-&q6qwAAxkWEIQkF(4y?*BX?dljl6P%k@SJe%&eI$yN@~j z+Yd``WK_J+L{{#;&SUTVREPolkrOFAB(9FdMUqovRQPH03EqhK#2tTkz0l*t&-&ZKOA9&l5cdaZF7`l|)f}6omqp z(>&D9cjYqYr3K!A&W9a%dMmyITO+Qh4%a6Ed=d86;z4o~^NNI-o(r?-1-9o*Ym+jh z?4F1MNQP1}$XwL8qaHCyor}Md^`tW_+Y`J9B$#rBE(TagUz3j`B|3N$@@6r!tD`$VfFQ zd_;gE!k(ZUI4dzxMMsD;-;k!@>Dt#8>2FqC9K<4nw#J=N z)(`mB<@B6YYkf+GYrR))mu%J4pd(l#?x^Usb3C`mZ~SCS-j07XbePw{o=TA!v|;h6 zitX)dY7N3+;-;mW?EVU2Wai#gJs>5qx)}v6!V5*KLahR=XTAQ_rJm@X9%%jpi4-kpK@vM`h)OzTVX`e1d%I^<@QC0(2^l} zHfx$0ms!@Wg}d#ACamJSFF?QP-Gl0f@ja$21_${;3DX4oK5Ev{A@xBHc^pH5tr%S?a}dPnYrO-0!oiYgw6b(9aTUzNQ^Wx6M-r<-U*(d=T6zgDIoe68s?V ze?VOEM_9R6ZOM&KETq;Q-E_H~gp0Kpw9%mb(kBlz3;foJpm z5=4U?e+U80u=`zsZmfOYgV)opfsAZdG#8Z-*qbV2g~T^rE^!yf+x&xPzX(X_>NurD z?nLJmwH+N0n(190`(>u+-ZP2znEn*-!G~s?O_n&!*<&C-`S_Jd6hFfnl6rTi3=0QU zP`*^?Z;!yi+s}gyDTA!uhl<^ z&ZV2RK2Q2q*GU>6donQ9vwvxc`Kl@Z(a}(-&`*2!MTBZ5K z!Cb|{IK)#EB7gFcyz5oITZ=vCXuQmXU;9+wZX<(Qbq)+k2OOHl1tmiaZBu&VU>vMd z0-|9YY*Ko^{%D&L5C_vcPZNNP?4Pgx$wKljSNZNF_FSytWhwC))mAD>H!#tKA4{Uv zjn6IKwy=?)8zSHkrWVru2eBQdvm2katUL%AW+w=Zr#fEzn^&0;7iq~a z8NRd~c9GM#<5?IHc6aI`uHq_uOQEHAv5l%!4y()`!OK49zgGG{8rp?e)arNNs$1>6 z2qiZf6k^aKx$jtv8HY-mx?eizHRIRnTdhI^ct8JbfO%3{4>kERzo`7jO!9w^r~a1# z=HI=lqF*iT=BBRJ4)&^!*8j_3RIIk9f+~#0|E(W5_VafS6~y-`aBPkgd@$s>IvARP z4JPYBC1VQq45jORj~%4v3UxU2auv^pamwC4Mdd3wDG?%MdR6u<4{pD!lZ~gtjTyx} zuzQnkv=vA+A3w%yH~qd8W%-pVCzTY(bTx8}Js#Kty*MkLyo2Sh;0wbqj!Kt>c?0VT z6Q_nW$=@bog?i0wqL_UgDbL{B%@D~p7@X)6Opt2!)Vz^+>i6MYZS~?xU=P|0k>)nu zW;FTYgV}xjv6RzGA?4aWx7j^~V$IiPY$owN?cGJ`;~b^4terG*#fi%Y1j-Tla!rs; z`yN$}S+!GD?1Vp4=?WUZ2X(yz!h#ZhY|6;d3Q_1z!gDHuu{2LXOsM@FH@v`;*3wbS zWs^5&EE+CvW7j@gYb_toJYsQBO<*rUO#4Bb+Ckk{%sXR+WkJ?vOy=sQsJ^R_4Be_m z5S=j+D=~vUSvO8mFoEb}Vx5?KA+~w@!!d66Wlx_ExPV>o6KtF+Z;DD)f;&ffIxj(I zMOvDjx;a`+mRSmL06+(5V$)#PFspshxfYogSr(ZWS=pG_ST?`UV!p1t#wnF|_sqUr zQn*w<6)X|7>Ul;UdOepf<<40+7${5-Q)&_Qav~}6YDfy-TYuwW#+`?laYIU|ns6%S z4aeJhSv6$JLF58K!*9{>yOBb21JHYJ$t}s7gi?1z5+IO=Q8MR9^C7xXbmlC1U&+~w z`%*7g=k;OD+bH{Egkd$A)PO`1;+{;@1qh~(yHastO{OwKc6{GKgQCd((d|yC3-+!i zBQgJ2Y#k4@b<4HQ#k{fUEl8wO7)-tg4pFPboBRVF`J;jiJxR_?DnNQYWGd&;KVav3 zR3Pf}pI;X+7q*gCy1YY4G@yU(0>ANO(SO6Pk69SeF3Z-1%_u)S}mGUN3t#^OeJ z%X~yx-;=ynO)tIsL`vuFQ$d-5_zIT|Y~&2NfW2u^1io6WE*vd>ZH6mBmIcM~gpd=6q>!)&6weoi$avZP*K@HR4U^ z{q~DVEU`R0ZUfM*J<&2m3X~RYJrW;S-)pIR>>e7?DA?6f*S{X}xuj>2Ya+(GNTn;h zjLX_QM7)6)UX{H>ca;>}58?&X16Sg>&(1m8R{?SYOpri-YqC*LrM?MD-0SQr4C-|`)LPgHUN!@E>+mEn#kr;4bt9*oNbkM zKiJbInOqR*^?dZ}`kiSv<3H<)NV-|+lJQkH=n2<=md7^1HdtsJSl z8a$)TP1yq$x&w%S8ue`F6!+EqGR^@SYAiLTA|tJSb4X3JXsWh~oy;I*V1ijsJF+-P zt0f~LZ_$bcoeRgZngpEC(>Cx8-KP7p_@VYX8Hk@m`K*JAcP*g}2CTdM%Oq z>@2m)*z}Y1B+Bf~gqNJJ`^A6bGxM0x!lnFz3hH}A0rVD1jby$FMPyk>6bgfM+fVJ2 zoV0i~W?)k!7KWM}5jm(NM3;ubNp~16Rh_Jk?tFl(Is6#ZoE(JpRmmDxe^?S1a+Du&kV?yBnxAE@(Bm}<7(?wO}{!4qhTYR^| zAQM_>oORMYB^uAKSSAiIGiJdECE%OO z^v5Os<;v42;YZ7re0H+qB5D`+3}Pa|Bbs)Em#8@ZSD(BJ(?pgcR}phVjXWg zgu!Mv?!2|}-!W*#jA({Z!)ens_j=p{25)`>BCH~PjvVDkm;?LoH)Cs-%(RQ)@1Q?B z{k(R!$}HwsfTRG9`ER(;b7nYuFx6Oq3l5SY{17e+D+~7;M_~miLSrW!BHT`0_ ziAnv}7QqzFhyc_TTzB-h!#s>q7$))Udla9gFl6F9o#?tA9ndOm-C@-%ifn0sOV`0M|9c#-9B zIF-fe;Qny`mw^xQ7wX^YV6`wHPgTv}&!4A4xH8l9h|L zU|(7`ySquQ!Fh4bF0X9jy_KP%6jHF!aG=RxcC#gsAG#fdsh*WW^^<8xTb|qVl0~g+ zF#)EM38G9P;@D8+Cn)ptpU|FLtw(`5wOMWz`P!CH1-&AE7IJ5Jo_G82{uIS;DrD%%DQ`BlRCSB$yq~zhr zEV03GF-ol1x1=5q9@K)6%yO#pqvb>1?#+hkn#dF#_D;&{Y!oc3<_p@uban^Fuqtyl9@({R%kho)rDVPE3oUuMTy zM+sUckIOVFwk>6eLGoXfPNnVUY6abv=hex+@i^E&7G=_Im;a2F{r>W*)-nAu0!p7e zqBPOmQgFCjyo{}JT#XusgNkayX&poy+MQ&kETnBsuvZBa{{d;)$sN+FfudvW)!8m7xBx?(!+RPrt8T-^SG!wB(v8#i; z60yoaLR26xrX(gM))|gZ;vNYTb^Lvf+9WOfD8jQRe2b(8vtDw@09l`;L;OB`m2wvn zd|9#^M=I`T_1wfGlu5JX2cw%g2$_Fh^r?+?=u&&!;4(1jfjzLyf$|Epa!?{8;>FvF zeFknfH*O)9TMI{*W8QJ}UY%l}EmG#XH{Fo+U~u=I>A>)!?X5!(=78{KOP#Ui@gv^g zAhZ0s5_rB2K6lVX{X=l2!=FJDb>rKgCh=Op#-97_v7z9jWgv>8HUIQ_n&0quha++? z0`zv)x}e1UbdQ&sos~)Jl)AKpfEn^A`?$8$1@{Xq4^Q;n!~*ADVsDz~;>b=2!E;r+ zPxjS%68JY;_r)tSK1JvDP_`D5+6m|J{@Azn2l`0!&Oduz=@ab$A5AOmS2)rIKU${h z_jHoGKj`T`{`2?0+mKBZ<^>tY-HR*F++fl{X26X&8f z6;xqaCZR7RgtBF2$xKM8NA{?r?{~r0!RBCH989hUn?A>=hp@y6Y z2TQR9WP6uiPbi5$hR$YI1wUm3*NR@YrMY=HQ&?2Q51kh0ZyrT}KLZvV4r%a+iohF2 z)kIs0cI(NPkj5ky9hc&Vdyh|S)D~c@;4p5?91&%z!Ugk2LnT4)OM}iC_(N4B?bSip zfT`VD@ae+eg}pac7X7cuw%uVQ=4Z1gXW%`t$r{&^ zyvT*3HoSO&^=9{b*cX6iEUrI{El)MK*!yR_CZRmguJv__iw~Kz8F!#PNaqED^ITV2 z7BQ|T#eX!X9fc7xzt83}>{N>L$p>Z&yM+FMy#@f+jQic&a_~M|I^A=he}HXUyx=C1 zzm{+VMh}@pj02qH<-rWCiJzUp3~6>FD6=m>xp%20_2_m-#oxUVB~AOmKUIdFBA>HNCY(p(;7w}y zoP4Q%aD`;SJekhBdGJfSV*+k0;5_;EFTISP7YD9Qzzoay%mUwvaeY|z>ueHP<`_fP zEpKLQk`ZHHD<{@>YSxSzEpFmylIMl=H_59#7KoUwF#<645I_GdtQ@jfQHs7k4fOtZ z3)ufRL-fCoUj8o;@c*vN&C!H)#nnXbMwKP-;?vG7vD*|Wpdd>y=Z%z|A94T1)uKzQ z`~#Je!iI_|b>x<7UJ5@ZyN%A=cB03DT1kW|gj`4kWvqH^0OOa?L=Pk6c#r7X^vMaR zJ0pR7f^=B;==f9c@0Q2ktiRiDtar0XNV$-+v43BQUWneV*$7`D79leSF=An^Au^vF zjwmKIA2!(ZS@WoklpT8iF%J9ZswYO5!!2HX%uJ1+;g_)*D``b8(`Y%NY$;1*{-rd$ z77F2Zxq=%dKwZAPLz>{`1{96cNSCo`r4n`0zF1}xFWyaGO4bOzA7bN9iE1s%I;tv0 z*9%zCLqWJdsdv>Yj#4j<0&O0L;IM|#sb{iR#VJD|h_zAM6`^Hrihg84vZ9>ig}!DNE$wlv7EF(UX(A5=3f{S`&qoI?Iyq%osrMHLup%9&}e<3)>5|Q(OnvAN6y{iYe z7&#(SVQ|oud?}hdV{PVg#kn6o!_5q)M+=v!y1~oqcb~iAwc*u? zt(Iw*tZ-^nX7*&}`6L{2reUrWl9v2o5pGpkpp+3~vwbV;sDq^9cD9;N z3&G)_(yl>$Vyd~isA?i98UgyoA4f)fD(wsRasIrF7F*fA@oaw~MZ(1o87I<@Lp6zu z`=oQSJnmrAAwemOrOf=fQ;gE@C0&Yq*j5G|kM)#dRhad{VnSk#;lIK$kgG}7#eSe6 zqtr`(sf05zKK&sJWL+^m#$706U2)g&W3)MPldN#d@Lxv*DafrlR|O_ zS;tvuqwZg#Hqcg;2M_H*lD_J=@|ZAU7>)wEi*5>Lm>XLUU>-Uz!gjFsME$1`M*RCJ zb4BaJ%0NsReNEM-CL>(iTfK%l_a;$b>b#ttN^|;G+XH2E3hs*fQkA=B()*#!?b2DG zrq9G*(8yH?aVu6O;Vha_*n}KBS79~P#%6_;K{3}Ao<91!3HH)XSjD2q1KgUcG{N%Q zU5gGw^F-Lz)8crZS4R7<4x=@zDG0}j=1^&u#Lb-!JNWX!>a=5SUBO~=gK*n}D2#Rw z!=TQyD223WCN=CdW4RF)GBY|$tzai?*_{+8gh3skCG$NK+b@HWsq3-h5islzsqr>E zYV7XWwanDH5WpJ>UrPUsBmJO!oBW6h*5t&vR!nxZIv3R*HP?{6>bYAZvpWGD6ucon4(*mx?(`z08i4ZQLQYS z6OJKYlA)9=`g#>6E@r1JlV0xAR`$tZCVg{q@rU>%G}I*Et?^2~nAy1q$b3;YS^ z=Ni8z_Vzi;uT^;ko=fX)XAV1vSU(2S$ZlYjHs_;+LDSab$1MKk^vh-(Kzvo@(Dsv| zsw|c(aA*F&Ws;r@P_9KcX!z&T2+RwzElH(nwtp zA{Lc97gLR6mbr)0xQ0fpd%SH3=}~49Zfj>qJI=6D0h2~l9bGj)XY$}%4sS#giO(Ev zpAXplnT$LL&+gg0E=T1E1lyrw`dh$1ov=VH*6#%i8~amxmY8+Rk$H>+=FjEq*`u20 zJ8{P5p<4#irdUQG#iVQFA4L7z9^RG_y%T$#o1dxcB!29Yyun*@;0$z6`!@#^L5v4C z;<10pwj93M-NA_++n?YgcQk^_mZO(d>oR25VTApG(T|Rb9HAxV86keAGj+H|o7Vr8 zRce6~z|S14Ti8Uxx=L7_-{|H0wb$2Yg~306X`)Qw=jP(fv zaaMd8hC|jCFJwZ2ST9Pu-mrCC>$ILDe(>5OuBX$h;MPk|`0CB4(wjYfdN+5=pB}9- zpI&^fM{GTrqbrx@1xIb9n+P%Sp{-o7>yu+I8FyF=6N)`_>_-zxcY^npqcBjgZ_J?I z`d7(Pb>!)z+jq};QH^HBm!!p)gI>NZMMwEQ#ar+HW{vweBiQ}^(h2teQ78P54hzIZ z|LbAFur|D>+EVkUhmvRUIMvoqu>wk>=1 zw`-gKc0cO))OJs&wfg@ZxBW+F2nnyu*{J558{(vkQO`Gce6E?m5AbG$HNnqis6g%M z6oYTI%#L|N?JftO?hKDkh6g1^TxEvTOdAUq8;4sxmYN&(4y|z^t?uV2RA<*PlPA|~ z_d`KpYWlWcz$^IQ__-HbpId3wcG~ni*RSuL8@{=SBxh?UH;kPkLTh_>t{xBPr`K=1 zEpRY8Ezy|ODx$#&T1tXUVgoj86`^mC73%tNUW;0EWy4lBL?{A9!>)=X?otzMJ|z8h z3Jn?ygiGKLOKiAT$L!pC>?K&+GG;BC27L~HAOf0hlw%`(J6Pgx|n;oM{?IpCdSgRNuf!^uj8!8d5p^P(+EHr7(WUtv7|*bRd?TW=Fd#pTcFNm8pj5BKMn%C$i_{OPr77+W`H~AAt*G)5 zoK2tR_Bu|yl_kfY$F$|n-!-O)@yQUC6&UD*p*kD zOHa0$#mnqARK^*Owc7XdAiU_I2Yp|(THQu(H+X3Rr9EgqGjSaFN5fLchGmag;s&il zh&}B?2U7Lmn`mmO+Tc^-CH&~N?k#*y=%zA)=n%+L)$T1n=;nX01u|zpyyaA_k1*x% z&lHZegAqoIq!5rg_=(vGp2UB5M>qyxc-Tn{nWfK*i}ha_zA#{#W=tL{jV0d_VvIwAS@u)K>tVEKlP!4oi zV6MVvthi--7< z@z3MyL&9c{4&d~P9SE-nl>QWHf(ocftt$o5dYH^4EA6o_QLWgIUq0n>i1GTm}Dq>%< zi*%2SUAP2Gi;!R2IY}wYdGr0T&unk#3ufv_BVxYmkDYfbER^Ih6`_#8!TxZhFR<6j zWYP@YsNg3qfjjp^I~vo0EqT^jnj3+#Txa`3j|D|GsH8Cpg^xgDIJC@S2yO9B?6Fy# zm`JuTkkpCh9&~xYNx7GE!MGw>YTD{fVoEyiIQIN;DOX&ny4g9jKIRf6%>{LkQ{IFU zXMWdl?+XpP;_>{Pl?tw`G9vUnN*n1Dsk8KPERYYno%D(9JgG+fZ%Iszx=?kH56W-) zov$c-lsjC|%hC#Dcal&N$H_U8Sicx3cYX%t{C(66DURXO8I*{ah)UIoyRX&e>sQsQ4Mm5EgY)lH?W_rHER93X=C`{6 z0eDbPEEq^5Q%3NUw2Ze@@DzZChH>>7jU8Nr4lOHviF7q4{1Az`lkbwhY-{IQyE|3Z z&<8D)TYs$ek!{Ya22fST-nA=!qiw!24QX8auCTo; zH!2)Cs=jW+ung@jF4c0RjxpDf06W$8WNvXj2ReL-U7J*K{<(!$HY58z)w6T6T*buo zkZ6UeKb4JY2xEPZiv)%{0&{c>cJ4@IyxgpYv;7P84C7Zofd1M*y$3muhoIW_n%hCn zI%D}<iw~mL;bBdrr0cUV}YtSk;Ppj$l0vJ7k@Y>%-)ElogF;b04y6dZ&?cfVm|7 z&To{^a59^R+0}8bA?aMYO$Rda6dz_UhN7UrxIoLCAjqne#dA3sU!hn^(?m-Tvzwdw ze3^Fc=gZB()WLHlo(UMfmn~CTZskhHg+3{0!TUeFyKhvveE9J5ckt(oCd1bxWine*XbnCENv^Ha6d= z17ugB0cuyi0en|^4)T`r_P`^$&A>VgUtbL}zXA{%fb$v~aPVYY^%fRT4lIUgV%P{E zq+W?6yzYtd7|N#72+yX}7_14)MfR)8`O2?a6O{|juk1kfE+mNh9>*^1K=d9C{jSw3 z`UJl0TWSFAJJ_gC^TZ(x@0)Kx>pKqQ2FC@m!>j?DH(t2`-R4h_;Og6i=oJI}R2q?f zrd@tVtslLUANy;5R4rH^lZ_vSPufGC_CHX=;w z4hjUOFiC$S69Ec7Q`fg7=8A;tnv!@&4d+n~;-wLH6`ipes?QB`i6PX!{u=F}cq7J7 zF~vO`H@2q<4_OjZh1n-n+J0An9=3dh8ANrY`M~GZxlwnu3BwXY2j&Vh3&R$nA*YHN zCnM;7roS~Bu8il&j*+6#wIhreoI}LJ8v7A>{)T~(M}uqtUbtn3bJG=yJ@DD7ZDZg# z#}pgyXMOtJz{02{%`ikJD|LLPrzYc5fuRPl!`45Xjo$?YJdR@-t4G#a8J~wUF4;%k z;~KvWX>^k+lMRw%?->P0LOYW6t1h|=EHHm|ZJJS-;GHxFhab)dcYZQ^XjpRF1PObe zx}bb_=tRoB8W07^*nUbXcPz3&wETi&!vr+$5*?9xDh+|qD`jgcGeL#c8CE(whs8-8 zRG%tIyeoW6ilKp?@ohrEo2{n(=3m~}iPp9Ux>3agZeSNIJ&pEGl`+;^2U>oBi>>cX zXJM5AW1HYBEt?5w_9#T?TO6cliE+mTRDmJ3RK0m9m1%}-!`;t zc`Ml>#)fvwH~UVN|IAX6ei+3%Ym;Ufky42EeB-2g4hxcYktxwZs6k3xOPOKX|FDkT zLWCrxzN#Uk$n09tie0+JqE*!QMaaDWJj;RCKW`Hym3D1l?{h#(aC$HmTkvG2)M2XH zExPDsdNntdP=GG5bD^_ntHfb zzK>oC_om4{FN|H6Zn|sXuubuROh0o3h^Lkk58f3%hbNR~kEA?@Q5Ag-yfwlt38`LY z3{`NOaC+sGA1Qn$2excxlhgISo1Y%CI61K~vPREs8CxR88S-6N^970{8iPYsl{Fh?KtBy~AGO)E!C>FyBSO$bjoV#v zyiSN2J?`M2liXa>%otvBBpamJD42K8wg+o0<+Iv4+pAoj^?nF`R&m5R9n1mcX z3>h9g8bx%AikNnd+RmHUcHs<^bupE^E}dQa!6-%UsrxyFXq{)kGzG8~UCL`Zk@y6p^MCJLfL#jv7{{R*pNpJ%Fq-!S&l6hoWtyvshwKSu%IN zFn6hZ!IPD$%X5X8+m3M-GkCCJq|UN(JO$GU8+B?UDXxRphkot5bVd4r586pzrb{%m zqp`X%zHTdJC2D6=t(-!yYel7OxJVl}74f0(ILAfPu^JNR{AB*lGWozT#Xun58v)h@ z(-i7fzt$d4;x$DSx_f65Lb~Og|NPVUH`ms*$W=F`8JE<}M;vHLCAb@>4D@8#D{oFz zT#o8CR5#Q)$oNK)`hy9wD3kE80*;jtw?XQ~0w^sO3MXN>_rE(`pA0m+uupT*vCo~D z|L;R*|D%ccXQ%rgC*qY_(BAX+=zi6*H}W5EUmF!zLKTon3ur;chz0}M8jx(2bH2gb z^#6L-4zNUtM=Ke2mP2!G@QaK8VO*>2+#F*4^uZ~SaY z^)g}fFN9G-1lz=XM|FAU@(hA1I7lJKASK%sjMz7x@UgCzipsE43EjF8-$s(L+$sSH zJ-T7_S$_yfu0;7txmMs7O7$ zcusGJaXt5#u47Ij0qw2&(-gS}bewwGd?zatx#@B|0P>WMR5r9N8H|M?(z1lMDhG;D z1o1`iO*GHty|bbnP8OTH_I8qnVga6&vzu8%54wFsw~+#4DbJauddrCOm~uBs^%Dda z!05Ti3|h47%ZNMqDZRSO_hjK83&j>ktLUdm8@U=Am^b66q#mI?QFZY@DwlK5t8$xJ z1=hv^GStc#X;v=u$_I_q+(z0!Hmx^DP6Fkab)1V|`DH&7yC}m##})6}hD_uJRpd-7 z98cx?HZ3@WeCNtXXA!$5Fe#X2M>3Sa8b;IL)k-0)<5vTCYUOO#7Kg^!5QZTdqYrwm z5JIDF4<}N`#g@qr?R0qj@@dv^!$K_SEyY(K2@Ys57p zOm%E|H)Xyhu~GCr(RNkxnSVQXZf3K49FKMXh9^{WQlI7`9Gm5?ozWNI?JzgfxRm8S zWK>v(br;;0QI$iFaT_$s>?wqgT~}NvxzU@maR9p{-tO6UpuiJY@?Ex|44X-GjWQaE z93k84_~cyWlE*lg9V6M&95sRJW_EH4Adt+BmfW85qm2na{*4z+xl@iQ1FtY8)_6)x z9Uxi^PZkl2%h;>XoMs|Zz@>};-3Fs7REVs|fc35XsSy?zw_t#on_S#m%Z9UWmhOn0 zsjhqZDq=9OZXOeM(q*aHR}M}$kdLU&=fE{{6nuo zuC&cZm4KKQO7~QG0)p(ZoL74o7Y>lyYuEo9v{p@$R*>jbfa(EWr_x&EnCEI}g$jrZL|X<; zW34pygMyMGibIn;Q@tWs#kDQWSSuFbP}vo_F)kFxLyS$B3uKzPfPhCPux?jL?G6>Y zbsnjRMmI{>c>yQRI+e?3+fb9A`vd1k=|KGrG9qe5w(ClNtY~?MGfe4&g9)T-S^?EJ zNN$`!rtZE!!Ip-ZnK2=;GU{c|=jNmlkz?;+u?__k5@c?u=-tjWy%oXBipXNYqT<3F zcnLoHNyIUC;RZG`G>dn;PC7h1=fQEiI}^)Y34oK`H5|k<#E_cA@xmp!xZ0??N}3J) zu(8?{6qq?Ssh*o{45`H2Hb{^ns2aVW@SxrTKM`SoL?CQ14pCqDK-i$SF>{2!X#SJ~ zX#-pN-h%;Bh5n6Fp!o|CNFS&OSc}}xk}r%P5(Y6}w82-%dt5<0!CUlx;)1m({!9mZ zs`k#pU5P4e-gpaz%7W5ox+ZE&z$)Na4JJ?go7edT!R8ViFpYn>5n>-yNT0+Uo zJU>{4O%^AE)iFf)SRq><0H}j=cxb_038cH>Hpuy-)})47O+kjA&Y8;Rlbkf$WUrmv zE*yep*cA#gHPcoEdINF$FkTPe<8h~|3F*v$Ff`|vc(<$dn!EQND1KRVz8Z!yc{UF; zPF1o+)4t8u#MbGi_H+dmY8LcMZVYkUa-)(Zx@&iMV5#@av6G~A8_|_K@~?Tw2j?9L z5JcMzF@P-jY(M6}ut<~j+fg~xvcs(zg_4!jKLe+tuiK(gI%Dx89-Polstp4T-rsRO-Z{koBvi1fAYuslO1X8`iw+ zsJsStm%Z*Xl?TTrp6#USw@MANIboRyHTNcHyGR9gm?dB(N7J!HiKt)}NWUQmrNP0W znp`%tt_TQ5CnRgWQFYM3v}jGifRm1}<};}ZwkEi(@SQ@@YuqXIr(>(0{s#KuuQ5!r zV>)pEF)8vJ$_=$~?!lwKA^ytAS?=5RT?% zsK<80PLgSV4}=+IsI4a4q%lB)_ycZI7)!qA13!uc&dYiM4mGAeg>5cLcC@7sdOX|R z2A-6=^Ek;2J3D+7)meUfcoz>k-FpAVeMI>nHoW;z^}{s!w7@`Usl!TzzDd!+Or7_K zpnn!U3e5Z-{eacg=W3T%N4j^dEl;`HA9hSF?9SoWxN^4m97MWb2Gl(Cy)sW(V75RX z=p_c7Nd{=&Z@pGexnQW<;Lv>V{Bb!Lq|krK=dlotNi9NZQQWcl`WX<1Bx^zqu>(VP zZsGQFWdgi*@GcXj9WY;20$#SwQ8>0mp)-I^&{YO4;=#!&m!{BV+vw1A!TJ&ooS!}C z5mwii?t~l&U$R~pchvwgATG2P_F=y@%J-0EGKXG!G7B>-#O}S;Eole#e)mu7nEIWV zjhA>Z_1UzS)dCBSZWM(8bQQ^-CHE(_#5(Q zVSz!@3DXFNfk`VSt(qaF|e%I^h}Ie-=?_ef?;IDqt{0V1%>LV;uzW*Xo62r5i9DEr>rOQ8_AzatY2 zh{7d@0g(_1`?vs;#NOE4SSH8>V%+^Y01r56EF6)Q5KQLprWPg|Q#G?Qv zC4;KB@sJg6SfN*w($A&9oGvf{<{j$V({c-?1Knm2bVbOM35M4InqukmS?S{U!RS}`&s2r>ujc}E*4%OH$QLH@;x>Y9@FfU>Z#qOc($tt1mnBAOOt zcb%mz;V_~!b5CM7Gx}y%*u6bJJoj00!v)IC(QBBfBXAu*!~wFI8*yif;^#*V=>q8_ zWIXX`78#X4VhtFiWZrw=;MXTmNjYh(V#yWBVg_ZeeE*RnSf?`?ZfAKJX3dJS zN^PuyXB68H*+5>lJaly%Da$cT@53Wi#bFRU7JcwIAoOK-_t4~>*D|5KZN79f{iI)l zW+U>iUevTzyL?T%Y8WuAFWNS&9yOCQ%3iBikazoymhn&&ydw1kNcrP(AKp;qD$er^ z-(N2IivNP>T4eC8vvfHA$r*Na&w)@!SoRd_yqbA^;_K5qSHxso&t4XeU36LQaGA&T zFk5_HqFPs#rD}Vd8VL3G`zdIHv%$k?QrYh&Kaxv6swcD34E_!)A|(aNw1s) z?Qy*lS;4XNf%$!?X}ShAjj)M1M}Cf?IfD3r;tp0eqOjuA3TH=Xo?H$G zzHg0t(o{q3OXXM6U%8!besKWsUL*34^#`364XSA*L15TR*bhDMi%^ z4E%;l~1J z?o9q$M%9dk@~?_~j1-UWqy$!_1U=dKIqSSK^baxU^i;cjx=w+vo@9SUEy&$og)&FY zxU|&%e34PTjh|GJxeEA0Iq5pn4f2{Xsbfy9XHoTy`O05XHJ)Z-c_n3ZLDBHAz@(_) zuIycICfVPg{&#Ns`VV(y?XF)<1LNprs*~l;OV*&8&i6wPjUER>8){!1x7px?)DarLwwb&ESG(2td3==EyJJo(kgVa&u~^_`b= zVZ*1l%9qCBN4lF0;@}^-Me~B~FHek5#Ba8azap-1dq_K%*6sqw&N6#qPF{xGpuP{Z z<36DLhUA~!pPb3^(MCUc^#JA99Hf%Brt0I1H8U?>haXu`kdvA2#pZ~y@~>Z5%h~_< zOFyt-VBj%|^yLdJ{XZL&{P%}PKUW7uZNv?24Q>AOUO=JxA9Yl9w9jj1{)XR6BnGw6 z7jOcYg33x-(1ZrQK#+zjt*;TmIWmwsG6|M!KFVHnUAS}B~ITqnQJedK*e$X}(C z1(`qqS&sI*E?&Caw%Xn7$o)RN&g8%FZBX~eF(o)sKCr<3puA?uINq)?iNR67_rZG- zsE{T|HpXkQOS`4ah7irBmqdPunqFNX5agg>OPB9_%dXBM5-^d^$=e!PUAa(E8ond1)&x%^06 z+OGf~|IyI6g+-AJ;Y!|hcAg>;ix?9v#IrQwc|rAQ-81Pk&WN+9!4$k0srQr&sbG|S zCoaCYd|g&pMsyApTxI7vWu*`t_#qdvF*`q!^sEHpH5Da!32IsE{2wBcl9`a^^dZ8V zcpBjW{a+s7Q+mtX224a{6m*3mr26;mOsI*A?^1|IOIzfv5JS8*vrjh}4G(0r7>R3t zV=rK1jhwn?5<%Zrn2?!0fZ?TW^!oG~t3`?>v{XfxiA~^UK#$JHCM0C5)9uEur@KjV zLfe*q-unHfv7E+ISJC5lWBy1?rMdiLlpA)$7}?`{o`fVVV{SAh4kr(*oP}(ZgyrXH zCQ^q4EreX|qB^c^>ro%6N+TpZ`M8{EL4{G-$$)r=l}4mt7kLEQ=#7fU&G(=EfM8@( zQj(KfV`K8J1_q)l#nOVF!h{W3aOy844_|c?l~`1x;gw#GQ~7buNyVtU@zgR37nE#Z z*frO#r}ZhA{WcJ;H75562&~;V#*JxXTzHmlOZF6}jlaf3@vvRD#0;Ae5D>ugbnxJK z*zD9MilZWii8CV-#$X_@cFGMFM)fD@J&JRF#1gyv5xx2yph&WDOHQFu=2hI^wIv<0 zJuo-Z5&qK7h8Jlp&Smcgi@%YQ-?1Uea9(gv*e*Xm>5Hhm=cs0A)JiwgQTUccpw5!| zMu$}0yHBeEgwK>sn(8pkW?}crFm#$*RoIXTzl1h?B_Ho+99+tRMm&9Y!fy8*1yW zAVMP-s^K3ZT47>_&fGYWu#1eG$U(JhH$rTMgzU)AT!@8Si`pbouUZ{3bi5~cSO?SMA(C4rZRH|@nRq{pr3+SiD~$WAj8BwI1vH*YIAHZ%s&Nv zJYWrqu+3;jfH^a$*1lqenPmvT66Bejs0VGkMq{RjJvMA10Gydpce=~<5Oq+08)$;t zfi}}KIz;#HARhT*4976^1r@%&l|ipWfP0GZ)&%@nqZ)B~zPvsAop2_ii{G&0W!?Tx z=z)wom@95G#;C73pODOXc)d5UAO6`|B}mtVO2mLLJc?1=KhKrZkV+vaqi7ZR1I<2AnrH6QXZ*5!SM>|6{! z?CQ)J7)0`|@tE9)FFSan#+|_AwFA6p1@-+6Ak^!AVCzh7v)8vK(6ib|HfkwFAt({< zOLWR_J>H0-jx0O!H{`tRPT|2WZ4 zRM%8T`#dj1r!CAJ?j?eX&v;xT@zp4A8->jg%s(_|fVAkua%dK|0j(sfuC=6L~*;w!Z+b=Bsw%gk~8kN0=TpBS$i2)TIZ2Q3k~ z97^m%3Mi%ATZ0O&8q6$blz}tlkE76<<^~klQq!#X7JLIWaxQAz_wI8G6%o)zCC?I4 zs#rpfi#L_k_wxCS5V07Z@MPG^mUYICOmV3xO6b-c%(>Q5-CVe=sR2sCA-U zvn|sn0PH289NR&VRjJvU;F=Ro^1Qpu5_4G~fqAIKP(y`vZH<^!zvcJ@rP`2+CC(-G z30$#F`HuAI_x>R&53Qtz0yO;7OvQzSLNa)OmA%V|E3;Jr(^9Bu8PkR1y3(q`&<%8d zlR|P-%R=S&$(=zQTLPmI-zICsuac^AN06^mDTCNzqd22yuAn zsB-dtyDlCQszaMGDJdM<^!U2GqQWdx*jdw+MzF-94aZhY1&ZWg#w-L#<#?98Ij{?f zRMq{4!t%HbHm!oG*xn@M`yXPgXk$Vx3?;>ncLB@y!9@aX66ubEm-)U~r`#}hhD)s|DTW5`ie z2Gle>EGcEol}#5&nA08N$GBK7E|~a4_K8whu&nhfcm$(VdVXQk=DMBU%FmCAw*_s2 zDZ!|b{TxBM!M2F^Ab@a#2Z5iXD3BO5|MUW1fLS3isQwxHlMCb?6bFn2W`!ar%y3*F zmt?hfh6Bl4=Er#A_T(R+sj+wheyo2FO(fzIhTT(pn2kGo8XrTz)~AVQs?5xMwWzON_UG*u$QEv!|!uKIu9Xr zZZ#oSw zlx{)OSJ5E;03(~iW-m@GyE&RJDBC;5i3>*2jA!cSF(i@!c$~((1k#?YXU-0dtzU!c z%?^#e1aEsR?_3e|8JEv^T^+&J{QZAu`i1GbXAeSn-_Q8ot?xS1#xopJ8wd6#tU^3+ zw-_DhqPmVq2oEx(IgfFy?y~lqIj{n{+)am~*lf-}B`f716`RB@;$@B#ki2Y7`f!%7 zE7u)?{#CP^K7ySm8>ikqy{nnW{((#3sZ5HvMpx`5iXvAZzI(+&aO#IDfyJJLK_bc67OVYG-l_m|7eXomp<)XChsjd@SU_$|!RI|3auj5z)vKIKA0xsE_hz;o?>D zwRcJmIrtK(vC@4;b#Ys5cM9EyYzOD!r`ntb z@&EeeP*N8BM`t7a!&%zY<6rzsCe{D=;i@Bl*x8tyib~=&TTUQbSy*~g{^q!oNJ9ZG z<_$RRbGYs%VJw|Bc2qT#Usi3Tlq*C#fQ=j^HEobN;(#_-njZa}`=NZS3)7Hs@Uh)L zv0gk9r}pPb{Pj=A)x^tGhll;|iFL~9x5vKuFI?BzP)5iVkp`+@m=^tU{~rjO&-_!ON~rsH;0D`zBK{U9DA+KQ#3b#v&T;p)gV)iq6=2|pAB6HKygIrhj0?WpDUK`gF@zs81)$r;! z!!w6=(@=uxg2=}CyTx5KImLEya@f}uU=VF==dnf@BX40HdtU~)Ib;-^naD0@$L@%{ zg%fyFYgN`stjw#VN^Yi~=W6E|$(+o$nQ>|vxov^;Pdq0X)3iv{SZ>N$3U^trmR@cQ z1f5V@Xqcp2do$;6O9{?S%2;ixQ5(LPh4X5IU!;mnHNIj`693MefuEl*d1Znw%Pe^V zDCvK;`{;VYB1*6YwCm@*w`FNhx} z4FR${59gbJVn^#sf^;T$envTUGg*xyX(Da<=7I`8ExJAJ3DJUeO(aM*2eCbK!y37{R|k)b2`)1g-FbIk7w;OG|v zAV5SJq6$;=zhG6FxA^Y}OWY>01)}zwZJ_pZ@7ydz>}WkPHhdeNKk?j%mS5gO*ic8r ze`LZlNHKiE>L14D>jg>zSCKnb)LAU0r{$(t`+@zeHrz#(M^s$UUc z3^$BzmjA@ig*=$~1lpgB-PPw1x?>HeZ_Y8rFb>2AT!}eicA*c7e_CJDGkPZ)ChdIc zjPsu;yYLJ52>#ReU=xHJMb6{&_tVr6LSiE@;+b*uIV5~KS33eUpEEIDNwrt^LiLm1 zL$ju?=_jQ5CwQnU+;LAniau<=_Y>eOPz!BQnRX{YQ@KgB>Wx6)oc$_< z`XH`Me=;Stx3Sjm$zESOx_;r2tAEucaQdD-zK1rxweJ{kV1LUodV}b}^9&Zy?b4z> zgqv{vyoLefYUfQIM%2hkHk>}V#v1p)_7w#9NdczEf#%YE@}s~uIDWh!{+MoRB;1T) zeogMlHGU1R$j0tkw&ArcP42-p+=@(t3)v;Px(Cc94BO;fS@(AGR^3Q>=N&xX)}Q>~ zdiJv=g~Au;@2-vK*-5J(LS`Qo6Yob%FXko>{E4d{GG>0)bB@RQG6g12i=^mrtWozd z(tE5eQaE0;qDf&7PLoHUz!jdPfH{m-xE&2>p3Ks^C95hIhWj+X79O))DhfLYBh>hTlnQ&(0M_6YBk-!AMu8mUv((+!o1QQ(LW$s zKe=}u;y^zf5s`#?i#8k;F@$>S<2~*;>ucnTyXCIKlAE$M&`gL~NqLCdg5o&)%cv{5 z90k*s>d@)}&&nDmgrH*q(SA1e&rG%c0Pq;pcV(+(7tgn&ypxeDhH%jG+}gf^sCU@j zB4rp=R15xidF)t1pj%6f2ITDrcIWpTeX9I3(C0xWPY;1^6|rTAyW7G$o+&WX!H>VK z!**zHXiz_eMw%looCYMu#lLyvdje`GkzrnQq6H&mv(CJrAV>OkEPJzRz{Y6QRx}GbfQH9n?5x z`+2KWm(wejq4R+>uxftI7P>a-NKeaD>>jImbFx*k@MhJJ8644M55mD)RC{^R-r#5gX zb8#DBKG_*+B6$+P<*+vunqVP$R~D4~A@5#x0nRv9wcsx%@J72s;@KZtIu!9Up*c8R z9lPV;c~A^{j=chJ^iDN7{dS!&%jPWNTKD~a?Akb-B~N>co3E)G=U4VtfhzTJ^qAH! zS6&pms+qv)X8Kf1LF+B5SjeAm9}K4frOFIPgp&8UBAPX~7bfevo`_VF?~Yq=%~eMq zZmdic!eUB8s1pMz9yrCOV2)x#Vm$Quh#=U+T&8fuWb?`6q+VR(Sw$v104F9-Mp|QT zX6_X1zR1YQk&%@k*hpzF$_bmn2%BdmD2i(-sOjAUByxu72~jgT#@n)>{25X_VYNQT z4mv}yYQ}tKV+kzL=+urN#uXH~-UJ{XMkw7;ebe1SqrggpOI!w^;&Cvztv0 ze>`T7=bvTXfi^NLNoS==?8BFuZM9c^v@Hp_(BZ{_Kxk)0Ed(Mk5dHaO9Y_RWBg=v# zxg<%y$UnxAvRk~wrJL1V9=}a)@^0X-%qhCqS?{2gP0^}Egge1)cHIJXGt#>KY1kEX`rF+Y z*$8R(>Tw+`o-zQ>TdW;UxXWc)3llnLaGicXhh|rj*m61j-~4MPEyaYchY|>W3<~ z)$OI3BV6j}_`Nl=1z|+c%WQHYx9th(uJFdF_R3WCBRFPdBi|!xD!LE3&75t6AFY!w zu@8Q8D4l%=IQ05=8|5!rM{N7qMlr+xvo`8~q#OM!o&U$-Ta=on+q@Xsdyw%y7DbSN zh86}Yj)M&#JoP$SC(TBgU+L<5Ix$8dOA0PR@-0clR5hFK<%^>$CL2;3+;Pw)M=w72| z*C{%%40GW>zM-3oDJODhmtb+t+g>7)dDd5DqRqq|XA)r4Tt}9bKWKu)p1Z$~%{)nn z{dDjbNWK*YT^k*u=n%owR26vg+zKNp4kcHomZ6{d+I}#SM)pn3&kC;Y;sE=W`qluoNYSuJ)@!xT z+%C)1s(@6x5Lrt?KxpyERF-x?Rg2hewJ3ijdej2vNcGRn#=fd;X8e(|`I#tHxn%{VwXoSN)jSuC0RDK6w4Etv6Mg$lQ|alTp}A{PD*TG~VjcEq z!=#I1A(^EHt(i+YI%nOmi?)oT#8g>9+*U>+x|w9dz4;n6$4qEFwTz{}{-|JaNh#M^ zy@n{8>3YtcQEQb&vmr(ycK>W*8L@WL5b5gNOJVM-yI+=E(g_SzD+LxyS}V_`McPl2 z-s>^h!8mfd=zU(pI&dYqOx0A$vj=cxjFQ#@bKQmsi#C9?MM;bA6lj49Wv^{ZQf|s( zxUGavYaI=rA;nYBsvUlHh2aF%O-5fqxaCASxY=CVB2%ucYAl}iBB_)^q8LcX*Ag0c zOfjY?^G&(*8jV0>)!XLOB$?$%`_(hqh}5zQ**Q5&Usi6Z$9}esEVxJK=|=gF{7vLq zc@dofU*t_D4nf~j}yV>=}*g^f3zLUc_-JD;`k0e>~hm7YH{$~(RGiB zwCY+VP>ZzGY+bV89rn3;p6{KV2!BWQ zGIccNb6MY-5SHFt;>=m(r%GK8;N1Cn%}-Buuuxi%`Wfw__l)2!Mh0sjXR+35r~tND z5j&(qt*rw-sEp?WxQrb=lXiB|yD*44Q9GhKF@`inPj?XP^Ni;`>6KVR?Uh))+?6A{ zw06IvcUjExv3g|C%z2czi|_`^XYx2;Q*ncFF$S$E9rMK)VMxN^vdx}Y0@F8+6*KyE z(2f-M0eRK=D22gN8zt!sp(yOsZ__~EsC6;8%{tS~tOV8&L;hZfZ%Cvf_nAFrp6~we zXEr_KcVtl;N5+>}`S!R~$h%&iYx3{#EUsjjjM*}az(o=b@7EjTb4Vbc?Ff6I-+4d3 z;%YpAHJ=}Yw!?Euv6~r(H@5Pv2e+a)J z+)r#Oi*|pA8~Pb zLfUqA_sjOEOB{?2;_JWl4OOF*+>D3bhH}wr+v=#ah)~(s4;0B^fK76A21}SUZ&if zaW_p@v@>1j*1c_?`(qa|>BR2hw{keOXjGou>^CUw#a6XOvM5g#+%?Dl1Ng}9`tk56z) z$Tk=^*u5PKsfBIp6h{|(b`J7BXt)*Q_x96~fc@8IF& zccs)Hnhg(r9EcKsmAb<~V&G2hUVapUU|@SNRL22SKu&c63y*X~B8FE<&nc3dHSDHy zw+~C^S69R%pqSH)V%Yr*O)ausBGi_zR8!{jWo4R8?i>7HF&>n_oA~t;cGf?Q@&6s{ z|2n)c8vc<~`t(FnLMzl#p!nb*yyDV=H80}g7JB)TNjZC>F6Gqx5VD{TGaaPq+z2CJs+e#q5hn!+ziQ)nk zj%)VAW?MpcpUX?{j4*gX0z4*K7Azz!rfdV0RjzJmk7m?2;Ik48eo-xB-}VY5X7@TS*t(D!xu(JIyDF4K5?mTr*0aASp;K!g9cxcUD# zv2AK%`k%tPUjQw5`p$liW%222l_+KuWgxdGvSp-#qdKKC8Dr~$1s5v0;<0fnj0OfXm~c3ihK%2~GCJ-`_xYnTI`5ODt9aVZHl#0M>_~&Bl+oPo7$P9J$l-aC z@FQaDZNk-9Cx+t`4?db)JfinZ_XES3YHPFym$SrQb*{E|XQgJQaaJrjcPE{n(K$&6 zE5kpb;EiR%X{q*~NV{vHmhn^OKGZyA0ocWQIf1BrcojoQ4;p`BYJ?o^s*_I!t1E zP6s+}Peh4)DiCB4?RybFurwUr+h_JnR^@J+;soCk5J>psBSO4*N);vfaK z+57KVAg2$`m%k$XpA#4SKaOx^YfA?!Lu2dz5aa)>R0-_ODljuN+l-4-Gb9`@4*1Id zlTb<~U25Vh>QFS9!h32yc*HYxQ);j=F|Wg%JERmA zd5@YZXO!if%-cK4)h`qC-PdpaM27Vr*q{F&&fYRE?zPzxO_1Qh-GaNjySsbP#@#)* zyIbS#?hcIvcL?6NyCftq?7ionId|?o?|Wvx^vC|Ne)UwXs{g80FnNxD!!C{Ej_>yJ z4!bR=?F~d+Gye`d_J4wX`7hWv5n%p?z5RcKz3d%!_WuX=5C6bkvEIrj{to+}J?NZW z2v=<*Hb;0{=#{@=kNX>T#(!Y1_S1O!_f$pr|2WvyJskc&wEREQ6-|S7%+BKow2jE9 z=rDLp57`1b+_HvP#bgrP)JtCqEl4ci55%&QDewlXp>R3bklQ^^`)4nE=>072aNmKB z!peNeF?DT< zk1FYxq8q>Bz2P9F;r$_%8my<=>Kc!UDDC@w()awxx&hSl5mhNIS5~L7hB7|#HkeNh zu=wMMk`JXi7KR+vA08eS&x;3zc_}D?a-WJ8MwQqy$lKM4`9i$|M)8nCu;W>gT)pR$!HAz^|$-!a*c}Gr}qR?^)FNU|2^jaInw`s zF~`KjCZtt|!v0U7>vi6x>LdMKMp@KoU5&9R9qm8+K5Zq}UBxSXC|jkXZv8DNav&<5 z_!TXOTEHa!R73KPn%!zrr}#*w@*i6M#P&cw+1}L*HJbhW&dPs1RxU(p+@nR9O+Faz z<&jOJ)s&iyadds|^r$%8-A@;K!QR#n^{Ka6$B>9ZlgKO--D$Juq%c76+`4-qg8$O- zPl74$C@+*$hCeTZ?aocnhjFq*{x!ZsQ*A{wpz=F z>yGC+q5RG8;au0vZmR6O;Md=xJU`jCtiK}tU!(rtnhE~r4)mX%6Q~X6skV~(%9M6* z_H*qc&nGAxGb~d%P6$<4mJld}WLg$I3~9uvTY91OL9k3>F5;!DLmAt`^s*wKTA7`6 zcC$T%Oit?<38`>rzkFx0T&FzWf=<`ekDdh%m+7SiYh3)77uRWn>7O$lM>#&*J^nXO zGX@{(WpZ4>-c(sR+ULV)RGNGZBatnN&Abg;k(^XNfY&^`9)&}Z0qFR^)$`$U^efB& z;i{F0>@9U(YwJHOn|wG*-fE_!@n`0&csHk#&h*BTdn2C$KglsCMo=mE3Fj|ob4tcM z!{t_6*&xe!YxgfN`!{FnM2w!>Np*QGitrC3QE`c?4pU_F6VYDO-^Z1sa(KYgAAg3g zhPVENFO;~5wuS0fJ!DgC%5uwyMjU}BX4^+4?HOd0B|1`$75%whzar%2^Xc7b^QtmG zE=PF0j}_bt7^eASTD~yB@#PKW1I)r)aqg`%RRIMDd`Pam*Hn9(;Zvz=azaiT{0S3p zN^}6bc^ri+o=Ym8qh(}>y>dNXvkC*=9!fa6H#tQ;c_HqZ!d1OFqVg(2sdO0&m#M@L zAAZ69`Z#HJmTD@R{Lb3=X4u8E5#_~MkI^S_BnC-@$p?ppsY`8sRnW)ZTFqFp9>Ug&fR#HI zWN#wO_5ks`={zlBHETi>mKZymfU0yV!XOc}f^-s=OAdq_KQ33dqmC(lF`a`IK|VRG z^~HiMZtjXt6I-?{504H;SQAV^h~HnVGqo?4pNdF0CcVszQF{4;qlDl5tV@JH1&S(o zJgrFK6eomndklA1OGMOZn8;)bNo-P@0~h4Hq`(D&0DsU{FtcE7SXiy1zt{5>74=}y zxMUm_7Nv!bn5r8DTJj6ygyC`~^TvOrk}}O=!GIlUR;Oj6lJZuRbnR$@*2I<)Ysh%F z0d%JbpC5G_qDR%$#vt|0oS{e++dQ$f4UlVA_oN4$?#o9L$etv!*Vxi4Ynxd4+0myr zaNfGkp|$B&Rw^UPnPH_)j0G?OIa{ToGj7NgTGEs*qQe&wcZ1L=+RrNCh@?lPiXZ`k zjCAP;E@FMjkA6Ae`LBYRg}3EsIr>Y_m19_1ldKe)dR4H*?PNGx=BYg;EOxl6*SQS% z4wWf)jT_^_A$_nn!fl*JcIRl>(G%i9xBc)`g=uV|a8=*oN7dm5vsgvwiknso0w@n6 z%~QpkOfsftF7J1C?vrT7_Jg=}QBRf@0LQ`1U9-S}DHqfqswBvmXpeKjS=z{}qxB8<5`w5wyx!HFz}0I|`UA&x+Es;3Lc9H>=;RUO~hp>5{6 zIMgNxZ7C|UE@cIqZX=SRF`5OVZR!}av9sqs{)AS%kx`Cl5H`X(G2y)|O}*tZTW60o zMZM4#M<%ZhCQ)uTfSxyJ$2$J3stdT;a;&K==0*-KZh1uEfa26rVVFBhV-w*?7Fvel zt*dqQsW0Q-d0*%8XE?YYHe%=S{pP6j)cVurD*cCEoq~^t(kd$-GAIX>U8|!)Jj+mY zx3DRc#~mtF7-_0&X6CQLXnADoVUYc3Kn13N%Pn)Bc2?k@;+hlh`|1rSw7;BHNAo3& z!lh4&kvfhu2d24q?w*POJNXbT;oAM(Y7lM z{DCJ@&ZjxnLQ!GP7uI4fH{6RM?NUq93yAfmI7GXiuUGW zSbK3H1y$={Q`cJ0>SU8boUSnnXAajRTxC<8-*(=Nd)6rzwtR3ggEj=R>sh!2uK&E~ zDn5l0O5{?X);|cNHrN#Io&4jXq-dA>{t0DZChn3z46RU zhaZwnOeuN#54MTedSXXaeUO7WIslqs^Qu}iPpcw(+B(z|)5~xP0!agl7#rCDu~IY6 zt!U$Gg85eZ6V(jx8x|3skES$BO@olX!pe>%5jlb~MtRW`!)QjkD)pj4ImE&xLdRVL>UZ?XYtDEQo263vIm-{u*v6|+_HalGFDw|zlLj=4ON0qN3f7U zN3TP`ojV@Hs1l&V>bfS_1L%;wpG9*d>NCH^CxwvDk*~FA91cY=sX@S&XhKL2iH!t~ zXYuj}ZKI=3^X3d)MZm%&>rxU0{)$Rh_5-btV5PiSxM2}9OoQ2qYtM~Uv>w$RF^N`P z(KW@w3aAc5#&cBkp`UsLAh@#wo&f zf7dXy1j`o^TI9OWdRp5>uYNL14=}~?OOS?_u_#wZazo%_c1CkZ8~BQ0mjWXldid=3 z(QrV2Xz27VKR8zVt4VAq7X8eO-4Itz2M{YDezMt61c7B6Ku@-O*eXP4fBJAIExB== zcaE7%&n{z$gi*QVnK%3+E}fxT;oTL}&A%-P6`y$UJN?K@qvyBnl-2#O8K`={?@yDsqe<-`s_^|kAdCry1QX#iJ-{#06Oq+*brDS1mF?(X zdP3>L*Bk*2qDFTMpkUTAMlV$=0~R1Qx&scB9HZPFv&_;0Qt!_uT|Ng+nF>)Aa%3cE z9M#ddo(VE8cVGj=Em)>L(_= zn;@Ib1V6l@KrT~wYMsCYoO9@$p8rM4D_F{Gax2I|2c=Cp{%kal@8r>4f0vhU>B!xY+mDcg5Svvr zdm|lmA_)J}P7Un-6@Z>)B@v(g?5->M)7*E4m%3d_1YIPrZ)66?pcSs!bq&yYj%GCq zGT|EDH2;Bwq~jZOyT(HCsN~)*Aqh3&RKNBL>n+e~0RkGhBLnl0ugyCVNs~*c6d{*z zf(a)h93{KI8>sQSIHzqWdc9tw`pTvEtUbbR5M@2%;O3zDu$ml^>m`|@J6BVY+2`i; z8z~Anlx;OORiX8%?kulCxno1qmQ^s@*OwkgLH=5D>5r_-Hwt$o-crOr^e>#;j-|TM z;g*XT|b1##iml0<4qrC0q2nlivC_0jz@n( zbP9g9h#ZYHq|E)|AL<$Pyp6^c`9^rdeuEtuU-xr8H6o{OHl=B5 zH@hO|yNW#(L+a)mL7wFIJ;tA&^d#|v$4GL15o~f@di1@o`#uSdzy0=kQ~J>ITtski zP);pX5}<0R(Vqr{`0lF#gAX0E{qC}6!#2g)b`DsZ`yy;f0lI80jibPaQm;${uvdf? z*o1vxv8^P8V-WvvVW}FM1+gDt&LK|bB-Zxp6O??haS@)?7rGuQD=UantjT7pU^B`& zTRD0RWEt;->^N^na}E#fPLf?vY? znhFIBCkB<;nE@XARzK6E5R*sO$s;P5KJ#t^L;UXM4DSa0q`1En% zoQ5}6utX&u$|MbIcgWCIDO;CXh7VueHH*u8DZ!i;qji#no)|MlfcT?a7^Fg!by|4* z3f$d1X*qo&q#gzrsVwpZJv)x70$n9dC2o}l9`6sErc0*#5oIudL}M#qI5DAOKMir% zdk;d>%T%e_z@W^mi1@wfk-KVf@c>bO`iYONtOli1=DO5@n{dFzsEU7M1zMFi@&!nFmtSY|c zme82UfTbGw!_iduu8cW*lAuRvP#z{ljh3KCZBQR(MV*kSM%hJIp(xZ1F%*xDNF~*b zR2HwsQlT@6ji5Syg!Nw17r+$0-qnz*&oa7!rlJa*N&Cb^gRJQI#HKOsZehwDa3#o30qoR|IKroQh;<-XeHwS}b{=Cb%` z+y3sIb6QJjwyJ`k+w#bb1p=K0;*{m+dGc{-4bPfS;pZ`D;9i!>9>qCCYi}_>dT;nV zHrhm~Vt4(qOkMgaS){LSrh2uznsG_HJ`rcKep?;cK(yQ|WkQHf!?&&x(|Q~k_ij$C zl^J6KoOo4;H{tMInKC?1tOh7v z3QYAd;>H)~jbIR@uprHhWek{njvm#S1dxCeVstz;N6gAu%?qVQlIhLKCdCv+$i;D1 zs7wVAP&;EzjxC%*!spyjzJ(EET#re1JMsmjh-5!bm-0R-6MK4SOII8z)T_mQ$+LJ z>=5XwBg)q`_c=Kf1ct_{tM^nO%~NXP){B%xY~&sXt5ak-W`T5m8M*bUQn7vD5%D>Uc9rPfVgWPSNN z>=_1Q(*;UaSH&Bu0P(_|F&;4@8GIrSdJDP=Zc8k*xY?Zqyx}J3iLc`2r-8mz-Pg>) z_q!lj7`-J&eBQm|N3XzKR%hp;9@)Ax`=+zYPskqMrd^(N;e~joloap81iAcXb^<22 z6LkfT=V>Uo^bgdL0alVcq5O_1;ndaVaz?Oxo#80Qy`gR4vp)>{@UbsRDEd!|*?@cy z^X*w9D`Kl#2EaiFE8nb(Q(ikfBPNLI0 zT#lulDnT*(G*z4DH^~Le7`mRrZvmyibJ18J8BO;$+!rg~^~c5$MeHscn^Qss+A^7r zEQvTu;6kxMthPHQpkzhg@Nlib^|of%U1N7i&6BB%`e6pJGLAGq{Y6YXJzkDIxOF%? z$#Mq!Pl`YrYePxZcaVG;h+7nslQJ|rv#G#lI#k{zzBY%1X2TJM!Z*1ya`Uis18cg$ zgD9VbY08tk+i9L&hz(fsZ5+U{U^k4Fq|F>8%RqLk@`Vp!>_IhE;D?`lzg^kRb0Z+Nqk5Y@zSz8Rvp`}vCB6_01P)^wi zL~z9`Z?i&$LXRhtM7KY_!mZ3S-T7@#@?A|nO`W&hzP$O}F?{g3u6x%m+Q#HF1U>$x zT|^y#fo_(9{C41{@=>ATvY4z4ihZ;*j{u|Izb|*?0ROFT1r_!My{bUk^uhFT~lZ|AiE^S zfR#g6(rZt`V^8UBM9xy2su)2%D(8Uh|8)Ty+=Tsa=Z57$xkk!*w~V135VIG#EZcJMwn3U z3s+14gB)#C>5)tDyU2b@KTIK&L9d9NlaH1bl*3wnl;ov1!7`6zXO)SDSzmoz%w@3@ zV@~5L?vK=o7nEb_`s3*JfIFJEL~^LaO|OjT`;n81U0CjlyPj@h&IJSjk0FBx5T?ke zHeH@(XBlOE@I<{h-7>XdfDP7k_h|ov!O@|5wriF)ZIHK=>1Y8NzB2+vjg(N4q*nLi zQ}SXQ1ezQFuapzPx>4&)ZR6`09mXHfCC3<6I=oQZU7y(cyKR8ihYdtC4!U zyY7Q=h#)0GX;2fF7jKIoLUlrgL+uhj$0~?8#(ckC8B9uq)}S>UF3wN??(^VB`WShP z-H^8xn^+%qgI(_es^%M>8#aXZ@_dXNzoDpdqnSOIm1qaa{`{=qVz2 zmEep>#|r`F?xJByH!S>Ask+#yYIm0W>{!bt(_bzlw~s^5?{z7>j{(cxxEIE^O)s^S zY8mHklUO3C0JbAifQ|TfBk2B7 zz(%+xE-N`MO#XMA{+O8c#Kaq%Mtb(v>F@23JhpJ2(8xx{ojC=MuDK{S{ zCyqsP-Jo&f3#m;Ja*cy2_J~rVOw!U|I<(JwcW80#U^)6;Dr2baROYCehG)`fCb^7$WO4!!0{vIB8?@*Jw76XW zmSHkAUSRy*8GY|K_yvt}%`{2i{RhoL2W1JP_d8gRzIO^76JqsAiOn->z^YVfj}MK) zKMO=h-`nuf)H4tiP5<>rfK!h74g4Qh_is!N1hm{jV}A@6RWGE2Um$ zK>)kz`2jQM8{uVMOqswH<1OIIuJ(zen|Hw$*s)et-*DompTS$NklrM1Hr_+C}A>chs16+O^*mlMc zqpch?p=2}VcbpU^fALFCe3-pphiB(><21O9(G!bd=)L)DdmY0h<_yO0+3NrKG}{tU zaZego#sU1%9C2I@Q-20GE6)K~1(5{D#DJYs5$DkAXme5SZW<2ux4loM-R-=+v7nGsCzR;qk?);pivqH;T}P)6wiCGlXhxD3 zRMpOmcV%0{aIYAmd3t`5!sWn*V!JAf;|`F{#hQ??!El`%&9(mxVb<3qYamQE9^t+Q%z?In+3 zuLg^YjttSF)M=qBFW!t%rM|BQD zAI|r1hmwqmr1s#%=DFbbGIq9W_Uc#d-pspiWZ1!@(&W}b}p5@tDYhrx;6gG1i@fc8U^!-yT@BqfPd5cRLacUepo&Job45PhGl>oPEB4I#zb) z{nZ?r@md~V2W&+;+Y42kP};m0GnSk~`4_TevWx;7y&#(AYmw@>+08hrEoV8Zt+f{t zivDEH75NPI<~%?T+28%jQuZ8Y#=cPJ1k0>S`78idrcCkQ&>e`*R)uv(dF{`}_Tu6& zw7JRI+CyP>>(M_WH?0mA(bIa$_k2Ysv~INpB9nU%f@D1Yv|PF9oGnD}d=w+8-Gg_k z(TJ%)c%nX_l*XecLB*2F(UQLJ6D%ZqAp=W-(%o6LUU_kH;??k}de+Kaee?I*bE0{%)M}Y5XHFs<#X^93yQb38WB1Ymdtp@KjEs=7i&sZL&K4VGPipPw~wRka1 z+;b_Oh0@7$&#E#t%*}EXqTwG9H>0N;O}*j_n~5fw;L{zY&Pu!COANc!(!PqIJnJ8j zquKMMSc9^z(+QPSjX?pA2yzRG$MkUU0}ansc)?HD{_({YG^gW#|E*Qnp{ULdJ`@ILxkchXf93Sy-P+9(5m}Ct6!*iglyBN>~s zxbs0G48NSVhH>?0%dlJ8%?i=e6^5Na;#{>^JMHF!{Sk2J9iI{RykQ#Kjdu_>SRApq zTFNcAadG-H0!8F4Z+Zgj99M*8#aP=*K%P`#*Rfbnyon=r43c~|9K9uaoLCqkukp*T z5U4B@s)zvv5-Y;GbSJ|}k9~8Ot&CC2(L*P0lcjHxhq%+WCPwz?7Dvl0OGC@dz^_B( z3^tziam259ihUA?9Ou}xGgtQ`)cYTL2*>O~HJY7uvBL}pz77p#FFnkCI>agcl~-tk zP80REM+;_h62hLa4UjybsZF{?7}7&L{DEed!krh5-pz+9H_UZygFsX>AGVl>lS`5t zA!PXHnGyB9b{@!iue03txn%xS(!YlL>xK44eVr15{P5xTdxQ30H)sD|tD|IV_D_NM zkJ{iO1+WJ=8^70!|5+t8rqu8OIByJH*_-6+oS<4)3eEFy$^w#-mI_fld7qKR;hd_B7Vu)-Vy;cVOJ_diiZnyOxp^9;L&On@{cTX2SvEP$ zhCVy@WSPfOseRqAA?oCyI_g5R2Xx@X>cXx4fYW8Ya_e3sxfIWYOD8$PYMmNmuVW6X zceXESuwCv>RFW+n${^@;mtM%#tI-I<)2OoTR4<%r(tVl)d>*xJOX`qVldGaAy3{c* z-LK`%1>)KxZL|>^J6oES{jnL)=fsq`#75CK7Er?x>;v-O(O;$r@~Glm&g8DeNej@K z{PM2-mc7wMyk;D`!gfDK6n~v!u6qu&Iyy!@Y4(BaB2AMuA91=!rQP%}AEZ@^J1l#d zx%5(MG+jI+UT3t+Qs$z!)_OeO37muHvOL05%+w4`!OY#ljuU}_{5pt$)=4o;(M`RZ z5t2@RFYT!_=mbYap0hv8_IMA&H?}KH%JaBinV_R^-r9)G0Gv&Jp`6kJN-S(Z(R>A)(P7?XMwSWkRQji5)~O6w%z8z~N-$cXo8~ z$r3;46EBps>*&s_tY7e&)UD_5ME)<=^j@7_$l=spPZyaSiF(_=l5wtnN2s{7UwxT@ z@XdrI?(g0Dhm z{Vex;08u<*UPu1!L%x-UNHygD38I+5_mW(lEWZpt@z_oDInLI?LBGX672Blh*3 z33bE$t6WR>Z`qKtgo1{vmF+)iHCBDbWkD0=^($CADxt#k3;RGoU@3PTCMtZhQT~pR zr6m|j6_(Pj!lVxhKrr5NfJngOvNw2b8n)%EV4>T!Fxl*QQc(78kF>hGZP{7H%{VaK zoHf_hwOzaA|8ifv{r373`vVzu`K^V5-_4j3`?r#np$o$Nv-H`yWRNyW{k(h~46 zRl~TaU9H;jgZ6{}g?X;#C_Eqn%>o?`MY?xoZz^l#;agAGL$&q&7S48JyHsl>E>8jB zJUYIWbJeqM@sQeW+rO{u`(x6@+C&m93_en8Zne7J&A7WsE4K0P8Rxe#6+de}nm0dZ zRo+4F+M;lh!TM+tc!^Qtu%~=h*E8;@_*K4wJ+Yj{2ADF}^N~?r!G0>40f7+=EZc9iw(5J%x;^T!R z<84hTrzC$g9V*6z5*^lpeH+?YB1DE8z3Q|XA>Vr_^atxlmpw1iFF9HLT z)F8d8*I!=W^q_j6jXqf51Bn)P49tk_-DMG%ZWQdnT;j=*#LOB)v1P}`Pk0?l%Wt|O z7ENXWKdTMrXD-Rp6G)FG8^hMgk6V~N4cXvKH>BhlE#0^wc}zq7f~YeRl(0m)(I?j) zeK351U^1?a!s__v4KJQRW!Sv)rSyNvmjwU)8fXb+fWH133Rj zYty2I;7Oo?`Rb5m_HGs(Z=0P~5Na=1VMVmrDqNr^oIEQ_&d?xJ@KJ;+TZR?DhHq{z z7X%OSph8_38bzalk@(ySYl~OdTryAktmzAeRQJs`K>S$8xzP~2>pc$n#&Mgy0xo3uJj2jKep)`$*Spd+did1Q^rj3`UsgMtm$FyloQ)Af7s!|qC!oI%8o=?zAhag z(PNmY`PW)yUjBrjK#GMp!*iREZQo^FI7Q5kOJ+ZJoUAu!nus~6-TgUpq(B$Xfv(xE z%=U}Fjb;7In;Dq==_V9d3JJhopxYRqmAyq5n{)^n_=$++pNzXEY55B*cjG>5glBaSq6y7#cft9+FUOofzxX&cA8GtVC=qCuQj2^wgM6$<&sH{*}Xf-pWEetiqqF!EZbT*L&DC&EYqXUH zDVywvSZ(JW?zu2CrZvbIffyH4{Dy=dLrc%P%lQP<(nVvaBJcjd$Sm$_X@2R?Y3u3V zIPdNLd~t$mrKp>LR_tqzh6JK6qxBE)XogJ!L<@R(oQzHKF8QAQ zjq>eM(;5H~3!CMOe(iX)5M)fT%?Q~;YYj5{!i$XOlng%l4L8Yjp+4#U}brYf4UPaPJ1E zH~RXRyi;Rr3d&B#N|OA0Smuf?Or{5h$WhoP&NA+@!llc328Ym*>(lJUqHU3jq|cI& zP!^~`(0Irkr_GWLq||E+YM_D9yeY`Z?`7I`gBS)9cVwkyS1EV#0>2-U#=0;VWLE;F zOta`^jxeMb7*dB*HTFt=%NUgBPTN;^G94&gLf=Dg>3fznVTVp0T67<1vRz@-Fyggk z*?-wuXiLo1o7d6Tr@9g$rI?Dhmv^~F%gT0Ap8Y&VtzO^H5Ez09EozNGUiAo2Yx^X$ z<@DhWSi&M9Yk{Sf1=dZ}F=!COp}MV0!+!Ss!!M&34{Q$;`p}acqaIr$IX7sb3)SIJ zlO<2$(L&{+eqAVkoa!SPI9j16pWE4gSon3co8Lxhl1{6}>lO{0Xdc7x14gNUmCQ;n z+5^$uyL%x1*RP*L^QiW(zE{GXa(mGk@_l?A`D%T|tdt*4+_zn2NRtrbvq`zt^fs)- z-}j_2Cq!l28?$-2C)ZX_NJPa9|8i$K8XGZa@P-WIB&twb&s7lthNR76HUzcEV;KiV zapn}7uq7inRz`iKSD%YOuB>-#i(xJ2ZNRMnrI6XJ8nlmBQO~mp%GF4bd@pE!U8EZ(Jc9rZ+{4|!Pn|rP$&WhBsJR6? zXKY;sVR`IY{rYWFJRy-6vR20wZtY361c5?roH1*QHw8z60(J${Mxe8&X&~>-JVEB3 zcC-^ybn7=_05U{OWu{2ZSA*{?aW;aNirOpuFt}Qg_d;hUF1RjqLq&zYQ6^!b+7%F7NoBb{|j24)pT=bpVo{Xe$ zz^ZCVRzr=b1179gy|U`_?xV=$G6azeN?TcobYzFFGD0y~veYmbP5%_Z+#Fg=8wYp^ z!k;g7=@#T-nzGXZ%{GWIaFY&pkkfWo%edo76k1p2iDsx}7}lgV4NsU@)M#?j2dQ`+ zuP%s<9^U?vSwaT?BrCt>%mg7i4AHq{@SHlRoY;|Ek?m}R!z2vazw3y^(}g-c=|s$F zc1v@OG!-$I9g6|puZ z=yI26)bUYMMP0-IFE>w?I+mPDuV@U!gYtqq_&>zHGy8wbPn#6I7c%Wrj>}h|TY&Zd zRulsV$dwK?WwjqNgkTs8pkm;OX<7=Q=S(v3W6>TYT-oA?l-r&$-}5N1pD z`btf%lGCTsFO2~|P={E%*C9TkyD!UEq+L{49aiXNSrsEXNGVtmsjU$Bs4el&uq5f= zolf4waEO)B$hra)U78gRSw=Ounrh1^Gb>eE9wnv<)ZwzNd9#eYC>AsmBdzODTSeql zIEGr;*&3$r!x>o?SaHoupcYRyk~8v1jwsAakfIq}+|_}aBAC=U=bnLIgI3|%C*_Fm zinSws+DXZgdZy7VJ~G^6?a<_>68NL$ngoH%qyrDSDWA?U*eV9YT1!CkQ?jGCR`_uO zPs#Z5RCrqP1_;A5vfJZ$=21KloqurCPjteaM@ktCZ=Kle7Cil$s89D>r&;y!KCUQ+ zUE4)C1-WFkF@DiC=48q+$h!FDb&Y^4Caj0M|6Ta02F=gP##ecnZE`hccYa>VmWojB zhmPF#9LEZqj;)vli{=-U?2Sj-xid!mT&Ht};QQ!Uy~Rp(ZVfb6bslnMyT~!sm7Bu| zti1Vq2Q#BY@yk2h8@_=;qYEN%ot#c9j5n{ub7^mgBEOG6#{m?1Y52v& zHZXHBkkd^Ul4UOQ3=3-(-Sy#mI8`3S*o7#vc@opwj z%sJXZg<%*{L5!Qkhwdz z&d-SR2Yiz=RT7Myv(YP_zdLPGl1m+5r7g><-6e!e#_u#~wovXSr?R?d++T~1-`WO^ zE?_L+{3U-y$(P9?&kd_o3H3b3^`3t27VZ0UoAq*`Pj!=GUdB}T2!MV_!0e86f}UzG z+Mz{*@9d};4GE&lP`}11#c1A9gGPFeQIe-S9z23C+|VB}faYpH>5mCgoTP=_>kYy= z#9#*_WcFgEo86m;ND?1*=o}u};Qo159r>VXhIkvv-J8e)VKDM;KRyL%-@A9{W6y4% zv{Bq{%qrPHYl>*Nw1I5;aEYEfys(u&?v0(LEgL%dz36)b=Uka<(XsExRduIES}YC1rAOLv%QdK{yUD z_OPC?4sNBpe-#}uZDi?}lj+ZPT2?}y;ybZjZiV*4gd%rvfg^P%4Aa+jnRr|M^T~ng z*Z2Cpiz4PkL!ZdEw@&O^jQ@Vs*X9H;LCh=K%}A?$F%Y-%Cu*dF8X5?Y8Qh{~KgK%&PpC+yL_Yj;Y^xxr< zWFt+Gx<{GDkqNV>K_04+&ZNP8`O;w9g=K*`+d3G;GSSFWvpeYo@m)5hX0q*?>kwus zGtSbMX}uJ+{sw|APn9?|X*~t?%fh+=88ZTXWuCF#fan}Nm74E4v}tNw5_=`9%f9ab zqei0Y0QHTm^$KOZ2=hk^tym;67eo(FfVpxl40!OxY2`_A=l?<&0C1bFL6o+3CJW) zf;Y?*einSU>Jl$c3l`VLbP;R%B=AjQ!so2^=Onvq;83$hvX#X4dOgFTjcM%}baSJd zwD-&j#Rjx$yD%MGyDy^NN&fWIIm;@RPJx0g^khqhhJ&qxspr0(wBRVg5BtkuQ1SqY zY7lLK+MpL4HhDMQt^gc1g&Dc4Ogs6mADkAseyXE_Xj=#oTo1&w+mrlCUQJHG=? zze}CwZrLRlYB{RN@qGJ{BkI1gbW&~7;xr^?v)jrMck>=>vp22t1Ho@I<;Ew+6_-FI zY<3T7HpA;41+ps?4!(u?Fb5uYDG zp++bUwRJg}=W)M~koo95oJCXQ?rsF4c`1xo3z#t~G`&~I)9bXF557Dgb8%M^9BVUNd z?hQF-hJs?w2)JTKSp`S9SnW;H!ln4>Z|lj$Mq^?KdKGuY;YKo#wC)T83E5>)o0R}hutNYC_^&t<+U&n1&ZnIsnCXf4iI zp}SH}ugsPHB#E&67Crg9LN!^{JPBq6xNrp9#$&Ll(>NY$2v&8 zE0xG(=!UTP!E9ABIjfk{)d@x?Zc4LZ8yM#I$JFPyMX|aQv6IF=UY299d`6)qNk8SU zc*}vmGnNkpCAG$T#tQhCp9XmUdl~D$94W&25&$sYlsd<`*5u=D^-h%&6h11rxK0?f z29y?r&a#J4G9Z1Gcc;p(NX`V9bCPS&w9TfhQ#5gc>hSp6RTptT?sI$$1#8-OZjq5lR>dTz#+aiC zZV5^K_Yoo{t758C*86a=TX+NkusESjQzQ};Q6@j-rX^Dz^R%X@FG_yNba$%N`m=p$ zw2EAsT-`0u7YPG7# zU*+}3%+25o(Vic0H0hdC^K>e%U3;{znwuN<#PcW|sj=WFz&h_pPZs=61Z7AR2HnmG z!*fhWk?7E$*r|$qK$=>NlL@I37t>8nSbAO#N&Gp1ZKuQUJgdmq9S%xM9Q37Q*Me0MY<%{s9NzLh z!~Ru%!tQ?P1kR@yw|dBWi=RA&ka%98FWm?@(|q z(dTY+K6-RoX#n{hv!+gQ-qaqRp^}!g84nde*#d*Gf)m;VJuF9ODhq?3K1p{3Asq&e zuEBT>=MOO7gi}|(-`!aB%Z_{{Y4eQRq;D&COr1f+g~xjOgT6Zp!h0T`!=cCY-bd+~ z#e=Z5t0>isF`6U|()cFX*GIIvajdc)`i!EdK`=H=poIu zIz$^-)h5=+yOC)4oT3m0Iw14yc3t`SP9)^YNzO6uckjf{#zEusQ>D|_w?oU?XGJ}M zR2KwC?st7o+T|A5Qw=$sDrOO96`biqQ z;%BCZABH$QzX0fram9#ji|yr;3_xA`#gfT8VohBm!>W!y`n-{&aNVty;Cf0%P*A7X zIK3Lf57k`Oe3@d*@>5Gd85aRnMLWfFSOH>%Ds{)_BrSan9{g6FqR=0C{M6BEE7P^C zQFiP3*>Q#+DEALBNsbWmRr)sjy~wTUA=uTkv;7OHdhn)^%Iqt zN$8nEGd5a6UrTR(u8I`M@398Pf?tDYL-0Z{VV_~Nix@Qtr3`{U$7bjK#61ohp{$8QbtLT5rcJ7Sw-6?iiP^4@Nz(ilb+SEX{$e z1rGa;L%IW#m`F>tCcr%4SZrl8mKY1+*<{H0k*fkivZh8Xpy+EjlN@Qt4LKtS_Qd|U zDo#OB?t+{3R{JvrinRQ)uP}p|wMpHq7(M`X)k*0MrZsAmBTlu9S*8}R2zo@wCcDPO zV|AQQ<1V!P67Mee6F*y!|F?-R(^nx}6K~pCn_GHS_L3Q5n^#RRn=#h3%j5b9OG|`5 zh9l54%g9ul{qN^5fjWi!oq|lu6V3AwpRgx20zSyAVeihy+NR$ zLH*vbXK;|jR>9ovJp}JiX!}>96M+!{_v@nKpvSMIKJ#ccW;cwZGLU7bssNXZwjIM! zwE@aevmuT&(t}3p*IbkbomQv^DA0qR8=H$>EBb}bYVgCeO;Y&B^TQ1mq~-n}xYmfRVhvdCXjF_>BA;$Oi-2Fv_{OCcGJi`9d;_-)b z4({>0P#S`*Uw0!k&fEkeB!WYC+F?FLI41jq2&Rpa1h4Kfy;m;C zU@H7nm;VC>_u zjD_C69tmx}+K6_cHhPjXDzHQ_jASGjS;ZQ{A5q>IK6zWJONc^=IjA;$eJ^Q_bbBc% zyZ`2Hk2e6W)8q7+SP6@eSV>GppDl48UZON2e6gs>gvazuYmzXZBxBWfeQR z6_{18gdgWf2NKrT_6}R|eVPg7sSASM_qP$BmVuw@BlcP%@$dAQ(pl%5Zvk$9C4>`` z)IlSlNhe=s+(^c~nYQFqa;*#ubbyb^Jd3YaV`8(v;=i8)afSpE@hKP>R2&QZQMXi( zk}clgd_E>3wM0XT)L*Jz!kq__QNkdb8y$2x`uJ0YNUG%h_pn`H$i9WX^8d`m?yDXD1HpXz_JQ#~sa5|w{qjFsx&Qaa=>M-& z)qdfP@JBHHO{cWAb;eo=c(ipnWdeo=BF*{4DB#j-XeOxQ>==%L;M}&>rjBH?CX|#c zrKOD4aI|wGg_H!8p{+OiaVAskC}*f}Jyz%9w`oLkAHA~gI~Q6LD!#r6w^My=jypb& zvzdwcK2P`5UmNHz5(0y~Kq^6EGMD9*WA&EBW zFRpPt|L0lD8Bhap4SlSfMY&|gZ#*UtR$L{3BOfOEEX8h2oN`^o5DMJgVEPK7BY1lI z{uRpC{SEnvfaTTg2j-M~<^fXNb)zC7pT16$EY~M*JL#=VC`_Ir8!`RyxL4y zNrq-VLV$`g>{@1vDSjBOxLtBv!qKB&Kzk-YNy+|&rwPj{G!1+e%0RPJ$ZIY;vT zhfi$x1nmP*v2}7yyteP*_{>^y-_hm+KjUyeA&K@pr2JHXhPwa`nAs1h8V@&n*ht!` zSL)>z-MYEC7DrDoxlUEH7E>6v*%A~96yr$B9au1U0F+4tJM$}KU#F)u5Hu#=D#r-& z^bGeE+g7gz-?%|{`w4moZJiU66yv(SCI>?w8JV0wv{XFE@Sw$nu}8N-QMgGdtOa*S zO=$^wE$Z!wD)ZEx<0PUD82gAMKZ=2t)TARR4k~IG6Z$UwH#)SCE7yqSC9Gbab8*0R z&d0e(9FS!aF|$Au+?~uL*F;=U!es)JrAjcD>QN&{Fi2RFiKLWdw<&`%Fybs5AE{DO zO+&SrfoN9L!QR7q_R$>+qgToJ4#X$lTdWTaYM0t3inUC{gr;a%@{D;rQLaY>SeI&g zGBAq@Y;wYTB+;Bhx-U?<4w4|##q5~G;a*hGFb}wFhh5W6#t!WG%JlFCVZ)P~Ia=5U zH#Sq51ZGIkuI3vVieA*Y7i}ZK6kWExoyY1Co~q_W*QRYYa^(_#SIJOR43_|&DOJ8N zE@nQnGAG;rlVuoSIKH7WQ(0Woxr~@mVuSAe*!yCID(N)Bn_u#7?~e7=M_f? zKPIKU(g;r?&v3X+EFh4zN@H5d{9Nl!EUYU*TLE9Hs~tWzLQCekKp_vWXmEB*j&{py z92G&WGL>vK!>P$L=1^^(_qC`00!7BtBBZ77U2Rj{&2S!De=~r; zrLO1&l^0y5r5dgEwEFoO>>3H!$W4TxxwosU<6UbUwEwJC*d`kZ|FhJKl}mN9(5FOQ zMp^9|L{&O+7U2+@B8R{iS7Yx;t-A53Qy{{()Zk361J)+KOgctFq%tsHfT0*-9*z<3 znsDSTIU#y%*c2kc3Bq2UMV^6_-W|)a zt0kkkHe>1Qw1M0MX0ms)k`;4u%&xlEB9r3&!{}gT8?Y0W8K_PaNi-;ie=ynd%0g9i zUYsH9L3X=P_+mhTi&Wo89hUkVVHa72n?N9jIrwW+AX4cR(&?)afLNnci#3gf*KtK1 zu&D;voF2eJ5<_ZrZio$bKx%c_J1htfHbAP|D~SL80~!p;9oUc@tWR)tQji}^&(j_i zT+M^CXG9E*1|3WQ!2{zIV4%}kzRQn)mu07&DXCz1Bh}g(VOfZ+daiF+K~>%pARt=$ z^3ya;z=QjQ2#Kbpxzr~t+A3HIFKuR!e1SRsSbQ_36Bam@hULT*Q=&Rq+mu@W=V^P z5>O+7Y%4DKL0d3OFrSG9f54XR;rJdHHQ(Xe%8teP^c#w_>$FfLIkPNDP4A@>OEnTL zGctEzE{C_nj7BDh(UO@Rs%`e*Y^TU*rYZL1(!1hyn*RKhVVgx%t+_8zfK%4~S9N*0 zp`*9tP3EOBUwJbAb+2RIHB0>&Hl@$sbD#UCm`ip`16vk_+s8NQN2AaW&kAZSIT93h z6n3;Vm@JrC(gyS#Ss)L?(Y{U)Z^g*~A_u=G3@4f=EGMd~Fe9?hz8`;0(1({*U^4#| zDGsGo@XKRETEBEd;2t7`+ub*0B+mqB>;V+tfN+{XnSy?3FK!`V0*M?z1cfvLRZsMe zDrjm?l)oEwRO&q3YYl;TzmQOHQWRR4+BYVg10o%*COrPJ0ZDLRi1JRFNMo?vvmJ)$ zVBf?uBYgP|26^a?23b0Y{LY$)DP&CQk$V6F*(u{_-`g`Md9q@L>qnLce)o;t8-w`A zGNAk#3A+RJlVgCz0x+;?{Uq_42J2vQOyvpfo4;2M@e?pGbB7s}kNPp-o38}<|Ja|*&Ep_gwTn#vRTGkxzTL_Hax81{w?gg$L1vS>i|$}_+W<1c+jACwMj zK>Ert;0WU{d&l=hMEXqJLjeB{E}|Q10Udm^%uLt4(dby z4Bp#?shLK&4f(na`!J6IP1s)HJHnt_w9j>fw)r#8*F4;tK4?ziWvs11$@p)U-Sg zYzZxAn1YQm%>E$cV6yk;Yf=|jz{Nf3BGk0_2IacIjeOQYilqHQ$ujeq+M{jH{JsB= zUgb&zn+s}&iF^Wf)M=BL=t$mG(I-1ZRkHUZsF zmr?uqOcfA0WtM}>2ujwx7Q6No z3lk6G7~$1_#kHi@b2Du)gLAm04s)SiqboT)<1bq6xG3L?^N&`ppspt@&!{%2kOgtn zdF$xaFs8vrFGh>};kI>QEc<1%ie?+CD#YfV6NdR472$ZjU9r*6T zUN3fKl3-JM55d%k#$!WAle}Zr2E7@_&UR#d5aV&7O`?BJ*H*P=Q(gSA3Im;u+}171 zzA>u?^QFl)WOQ+kggvh5I4oJIdO0MM6dM!LU*(Dnjioq&a-_8ka}NvuUe-o$)&_5X z1FAe!qJ4j4c4PX2vSV4+r8?cZnzl9WL?lZ827{HnjZ+5nWTp^ZEp5e%xT;zTBadE_ zdJ^9to^1CGJ~C|i9S9O^J{#io)2c?keA*ZBYZoKdSsY^7Yf|43Q{aL{q;1u^m+px|y;zJzc zD7QaipLHv@?_A{Ew$8r!a&m2y@!2otww^0&x|ZAXlv``59`(sLsam1f(YBVlwKNE2 zo5;g((6(+bo7MIr$E4JXs{+wEiALdawOIzz1WF)7r?4<^?t1xQkq2|HB%W#T!`m7y z*B`GSxh-h87}%EvS@<2G@2B+x#vWL@;rIXj#{>#mWb&Up!nbcBME_IU^1oBf|D$bD z_{v&}Iy$(xIvZO%xc-05%YWIwueE)A)s}Pr<$7&T9D%c-04Wk_>H#lEi3Q4G;SVZg z(qiCJ{m`PU{rzSZ8JQ%);-zZ3`A^yd8Yq>;QjA(`utBI*K~LK&mMzyCH?5oc9-G(h z`P=r-FMKasd|WQKLcq5CKV!eBAA3$eXK(%dzbvB;2LB%6{k{Q0|4hTq?cRpY8&v!j z>4%TPR%3?fQMwF$>;{a$yBTor!ee_D?!aSv?~^ghJ&KIOFZKY2;MsZrQ}Eb6#;w>I z-p1J9jrx5NayXLlxS0;yg95897AARqTV=3o`mkFe9|2cuazyoE^S|rRoG$B7=#phE z5e;s>398<6;r?tvAZUTf!=3kJXM?w&wnZwGTz<^bttvjh;HVUnbmKN4T;IaFw2N=n zEa%g-R7r%Hj6-L*7n5jErzWqAv!Y@Pn2EJ30h#$P7E#u&woDrik^uV131Zd5H#b!i zUEeX>DQ4y9M%fv7A#b%}4>6cJ@URj)-_vH7FUjpQFP^{H{IT`dF=eZyhWuNoJejyq zg~{-F)14DGB>?F1yH4-(gD_S3NF$!*6cT*OfZE~p(_Q!*?#UA7Xg1Re|5T` zCSW0m3OeDn23v-cfi7iO2?yc0MBKZAH(r<|*b*aY?%*zv-MCRG!ww6^rFdu)4TPg$ z#*V7^Yqq?YaXxYQib2{)$Ttdq!6lJA8BX%>D2og2S4pQ1Sq7zIh}nXbvMqZ}EVW8v z$3A=6M!6!hyqcHUo?HoS!M+Arn3}Q_rm(h}k`@*wKfp}fag!Au?R>gaOI#M4iyBv4z5LOIOCU!Y>gVMH`|&sjxr#Tesi zjX+VsqBoEZrLF|~w85Gvr(=6*)3auPX0Vwvmo+sAQb);>nkL{rsAS*#o<%afLL80+CE=L~|Ss$0&&EvPEK~-M!zH z0qqfTE9`~nZONtRrxu&1kx9;JiPfdD7I9-+u*ch6OW6{Upvbu^+0bK`vs4X@B^53W zoZi86YRiBNB8Rf2{ED^!5xgX7=Yjq2?}sOgBKZ9y>ZzlH)-__vuz6Y(y_`)*mo4Po znSiLBG!o8GF4Nk>DYDtiNnxllDivE>O={jldwu%~3am=R@cZ#>C@JMFJn8Y*sBQbAiLw=gRph%vn;ALHv8VaZtIqG@q>)|jMh=A+^l(; zQERN7C;P+=Gdd7$RI*{0mGO|Xip>%}V}(^0C!0%e1H;W_Vu=P@Di)l ztO=#@I#*ZtvYlLo(IW1np=;Ju=|!r5o3f6>c@F)O#=#{v=4LeCnR0P$gei)O46M>3 zEB;PcOdmGb9*dG$ZaAeFgZaUB-)>rydG7HH1|1XlMF>xr1*#2kYf{86qMn!}JX0?8 z6o{&5SzshYn-s7bVw2)E3SyJ;wF;t58rTJ4n7nt1wnaLSi?&5M5RAr8F))PYs~RLp zu|_(e085m*r;FyR8#FejaTvfMKu8S{KN_1xhy*RMlySbn6n+$iN1r-&0(p3^gw zE^k%~F;0P@(s_x4tf59oZxF&>;`VGnU)j8a?6E{toKt8rUab!;9lvRRK-w}Y2PB1S z7~hm58rE}Ug$W8Dh4YG%AoQ5GbE$;A%WN{>f{*T(dqKtQAS3!R-N=%Tr}Wd&05F)v9cSVhRXJ37WZ+dkm)b*{ChriX!cC#_ga;UaZvcyd3J!3D8 zeG20;n9@UV&SWB33L;8r#Vp4TeDhSNconW2co)WWHT7LC^;Iz%)W6@7v)X03^cj zVOK<35a9O+a5)D%ShwU80-RVGg6~=N;Ly$5Bln;(Xoh+qc1b(~j5wCYfy8o2h4}sq zLpraK2!s$X=+l8OW>%DI-)^Vw7zX@b19XU$E=5`2PHS^4D~kOdP-Ve=;e z*#1;QGj}eyX+z9rRzZD9g`q}lzEndmuqy-1<`IMSX0Kl?RD|@Q-SLJ967asXLU@0A zQNGVyg!F;kWaj)Sl(3%(`?Rl;xOG9h6Ah^a;d{8RJqYmo`DRuWR#fdtMl1tpL7cC_ z2#@>u=2~z+Q}(4_v2pW)f2JBEe&P@GB}4xcCL%f7`w{s}jobVEAEhYuXB&bp3=$f@ zBJkT^x$PgS*rbSmSj}K~Ve6>ZMD7ImeFtS@Qv0)~h4(0csO_-)5NLtv1tI;CN*BSR zb~J$p!PsjkL2NKoXmSq&#+)$)K}Hk~#X- z&Xt4UVs>E69t6H{!xD5oh&AXOV#@bUR71335W1c%ljJCvYi&gE_mUzYt01W$YR@i+ z1!5WE6h)4-g1mydJzlLZnE&;M)-xe2-}VUI z>yUTMA7u;UQ&Dpa;eHq$LmbNPo4bPz*afAQ-ofF^0_rdfC{HxkfkChks<2AW+}VNH zMAxdZx?9VBqff}Umd>ICyL~SAoq2I3`vjio2H(CBb6XV;qy<0Y{q5G^*Ni-MJLu5m zC&vCIaL}R2pTGCZy5Fh~Y*cV`2OMZZY$Q<-u20O3Fs9?PM!0R~*V{q58*`j}@7r`p z^6dpfGhMnmxtWf~z0DT6J@=y$vwzp1=g=l!`;8_>gU;nD@0)O({f>0-CgGp;zq{?v zF10bONI+mMxpH|h10?vbrjUgp=PlL`h=I@?$NgJppPQ%gZT<1<0(oH|v#XQgDVKzG2;KY@&Aan->^w}wEi=-WoTE8yt*C9!_JS7ptaHHcuttQMSFKF z!{WM=h!e;#MJ6yIW;ru|3ERT?2h;b#-3;~TM)b-LS}!$}YNjV)>=qTSOjXvC=55JD3yEl!D zF-@!lO?~KA6~NlPWb{^p$H_`**_u4YDR|{)|6TRs_>p{u{^ZeUQKlXdPQoP7vz}n+ zqMQK)BQ1e_$sJG%P6;VkpoVMnpLXld`hB?Gh!Fazc}yAQ!}IbphM|!mQZ5~p`8jy4 zny}Q%*nnFMuw6a&J&w@Q#i^S~5Z|NnFBWlq$4KuSR5#|op(REE7bW2W{tJsstZ@9Zu6DpSD z3~n!PXDDxB2RDD8&tggeC+PEsu@EzU?>uswUnD!;C|(FCQ{0g3@S4HK5mnnK+Skl4 zdQaN`M~ezU&jEWTqrgiV_6gY*?2q1cQyAMcXAaenPH}^~^gPfeDr1QZuS)!PF9%sS zZKRG4watqSoj2yC2R0#>C!(o&XH1pbRArz3 zAnRKK7Lx<&hq(HlxP+Gd=(rVqW-*O<`q5f!ojQ-ZOVi|LoPGvP&OiHhmd@wuS%R)Y zJJy9DyxQrOA1K4yCc8+$u4g{CZGo^G-4XZgN>1phZJy^;LM1fU#J@)CM+VQLddnM& z*B&o#`hJQ^{W?uOJBI}@pbqE@dWtcJiUKKm{_2ZKLY`L4UHtKAmX&j}-_m>q%Kh~n zt{!#lHV-;1kb&;4_nJ z+U#6g&R^WljypKzjQMXj)nPv+l-yrxEahJq`~(=$F0J!Gc^a77isU2gGt-Kyxq^$9 zc+r+}{;natDl(7FhG$a;RHC;bWK%`##0QI=xs@v%Mio1C*e{4)10@Q&+2#87T153# z?#uS9zIhIwDF&04*->h=FpA6zC;yg}@2&sza2K5^J5Bu?L|G^OQYJpK! z9|IC9U?{OHRi;gMzS5A>$SmU6#>>=l5P1NMRJOQWrAdgh$YzyczS*|qxcJ++_}3EQ z>Vfs4;`$);03URnvA12$)*hUF1F&eN3#<7_3jolXU@?7^exvT0+=h4(gmC-}t7<|$@1{1V5oH;MMzHrJ z)cAvHUDIa`Bt)WP$fi@QvVF37+^LsX$3=c%5j^B+X55 z9p&oo3d1W4mMs?^`|st)Yl#l6r10?E_B~ar&&r;);XMm8D~Dal$RnXqy$)EbP1}Wd z9A5>I>(AJU!C|nG(&yL-!Rhp*&@K@-y%JALj=ehf4W!3jzdQ8GcKyi7Vevn1WC_>! z*fUlfW-;o$>G`c(Or_UT^){CuEkv+Z0;~Svy@!HE8LBK(&BmJ0?{S{i>WMR`HtGd7 zRVo~*f}8W;Z+gr0lwj&2&atnCt8jUPM9(;i%z~QtTbHp&J*cbrusw-O`1nr}GL9vc zg+I}x2g?UfOs=ensTGu56?lVtjCGn?HnK_~eGt4o`XgleWIu+Nr{e0fGD8<+Ht0Ex zoBmzP{P}58dzUwtk3O+mP7uuXwu*a9)4h(N#3I5td3zh+Q_&?1kJZJc%2gH`vrXZ~ z*W3@nFLU@(0J@?pv*(fmwmX*OZ7Tb3-j=p2C?UEIE3+3Cg0>TvW(IZre333 zF#gh*tT8buXJbA|XSp78OVKG}Q(d}2(T(W`8O`pPdq1lwAa~?G5pA%%8F92&rTo+! z(_KjBD;QS4od}}d{AV2+Zb`qH&n9TrGI%;z+_6?%V_@|Z@k^z2k{C0JQ@u*il=^w` z+@h%tNbF07aWk4!TIAQTRoDZw1ri9zooOP`kK_*fBqF7v9kkduJzLCkrud0TIdf7DApM z>``-r=-D341r}uYuWRed07rwNgblJ9|joJO@EMd?kz z1VHv0Nr;rt<5>|ep6xbj6lz$~09a#gX_0UbYXFPY0s17|3mO1>OgX}E?8& zV2Uer!3_ewbuVq$IH`Po<02LXY7j6W6-AI>tgeM6sU#AWa z>+1d`B3I_>6z63ek_6#Ws_LyojcaJ4k(IN^aMCDbu}(ZDO;SGKxNV)m7)Buc`$UZOn&yf`Y$qfUZgBpcq!-)N`I*0UKri}S)s!< z^pWhZDrYbjC|UekP{&>$sT#h_UXIb>FB%VVtYHx&;JQF7wzbK z_qz8a{IHJ;hC)JAo*yuJ$n_brf72ej$T^Ejn0MIES7GUTS@SK>Gw>nShK{mdlDoU4 z{CuJM#91fIMOpzzM8`gxz7Pf^CZR9#g)?X{;snWwdf3tJ+^dt+QiPpKa;9bT3$OWPa9(n z#OB7**HEDRHn0sLKOk2=lcB?^_#MMUdZxkT*lDbZ_5n0=@|czvrw>4ANtl!G^swdd zk>*G*TkAFAz^IRXKl9AFCN{Ym^=C7UK2LzZ#3S3i)%NDJW%3Lchd5UFz-@h52 zg$`J_-hcgh0x#rG=CBC^~|lRD*-u=uk$2(>G1C z<~>NKT7UNa(Ujk95yTONos3uRS~eyyt9p(EdUeLDV~JdQ6Ur8 znoJ~fmQh6YqNKnwrXy8Et(FmD~`f|Km0IYeC+Zbg!=1D*}qvR);V)oV|mX;2l79Ip@{(4l{Z=S0?MRQfuIL zUM#g#h?p)2)h9~qc4p-DsR-cy--v?vkH zVOq@V-?Ml_V)|%P?lI#}hCQF(toCjW2a8ajQHhKQ%IBMEuL=!;1tHn4%uHR2G&Q>) z+t#=k*QFtsH#qhYx2)A6FM3%9df|VQ^_~{qH?d|HYj@=D)*TP%!A$4neQEY|T_sup z0NHs-@EP`oz!rI5>Abq#k4;*PHF74uQVlv^ant|4QvUDe zJrxO2Hdb!H|6!&4M;^=C)!N+UziQ@;FYMO{Z27h0rDxiQ?Xl4^V2lh5QWR^DOnEex z0s@Bu3|)v^ogfKJVn}Y9g27=qO{dn@-WL8wC$@G)q=Hlm)81aGYjvfzwQjj}!-lJC zE$cSt<0jjyDaoqu_TTF6ZFg6W&kfIMo=+OzeEARGSLJUR)pZNTkw{>K8W#cAoP;Z9 zz%Zn1USE;$CbzRC(vl$wLeBFB?eIs}h%=PsLfvq9*Ry%jGSPY@UAMKep-^7EnxRr& zUzPAF*R{$aOV@Ud@JrWrgK&Je*B~UrrF~i6t&$-^-mS_ZO}BQ#JG9(|@wd$b& zB;@l3!*EhUq%)vWxZ~wr1XBEk9p(2@6AhvMWAHl6I|eA5ks3F|70KV=?4=qEZGx8b z)b%F%-~Bi~P2lItrs-~D!c2}6tsLLdj2yo**R8#Xr=h&wx z!wCvrlFjwisu5o!k0F79xE&?Sx6!;atenk-ZA_7e*joAoy*<;UO9ZzkD9TzVC!O+8 zcZh=&91O0dHb}fxt~xtw-EAFWEA8#k04{dcjBS*dP(EO=6hdVfc@N8J>p;X-6WbE% zHO9iPnU4MmOB4A-t;Gzj!GcauZ#SyCd`!9|xjtWn3A4iJVqg+1Ra4)^w;@V*)gRg}t0@Ar;UKv05tg`p z7beIW^Ke7+kSnj!EREKbrx9uj65QZxWZ4Klk#ApNDOH^+*@1#a?1l=8KiW)+Nl?Iw zd_}PYnVP6CsdVCx>AttxkwoLfUq3~Ew?YaGrtfK0W-jmYT^})**FLb6 zu`#lO9!Ji;Su4HF>X96xh2dT+62wAq&VZcei0B^5XWx9pComRCD^}ujn}CLy*;pdR zw2pTH>$pYgk(0oG){W(YN0{#Iawml)G<(c_nsj5O*-lP?7h0<5#B>R3AM36~g|f94 zom5cnG&|-U+~WsQQ;BG&BtTt~AzZ7bKpxH-3S5(sVM%KL?MxIYZx?eb`kckjBVfL8 z4tXe5ej+qkKsL2bNw`%50cnidydWLgE%>GC0jFFJ7f1=S!AiNhDaEkKy$%;f#5<9ni;6L8qs1urbnDO%-zUnquh9JYodWeRmuqpujO8_SIXYBdTI<<`&mLI$wx5< zwFceX!Py{Mcao}Zm3@>8L{JGP4A}kOP#*vi`FZBKnF+4`PG=eL)`B9UUs%uv(Y36T zq~kWNH=}?QSM+T#@qztk=u&JMBaSNz_e+S0)hk;zSuXAYq(oAR6{x}5N3ufqj!6Kc zBPAo%B1IDLi)Oc#2LmM1m2+_o8`+|YZd;6R^*t-zkb2NcD5g%Z`}W=(NwK$(d5iLU z)7Ns4oRWy8=ALW^xq3Gj_W}{-Gx(9ShI1{ld8rEicFa;_hcmM8oN3LREsVA{y7HXU zMgwSS6BfhR@8j2LISy|}EcLRzk_J9KdqKt;T4+|EwFp}rOL8o@=Ym2M;#gd)x!jv*NUl%<)?q&ht~Y1dRn|gry4uXj60`wb z+`eaF_D{8YeaFoV}%wCrnm$BXswIVo?uvgA4Y`C{Etd%rjd%r z;$i7JqUD35ZVjpYBadW1*5f(iP&+IvYAGFSq)1^wOr(^^$(V8ZKOFW?ve^K>!5AMz zLQ;#;nSpDK>p9FQyFuh@5UhYj{awm{)LUp_9!-{;te=ajvw~nb<(DQs>PX5c-T1pT z&B_a)JfBdb&x#7_@r1ffQ1xh6M5)wa0Z@`gTcT+r3B3;NRFDgr?I6Br1^I}HY!Za0 z1Ug~NSnxG*iHeMokkX%);0^!{6_F(j=zpx?Tt`Ph&_mAP)ken4+=?meWVIYX@tn>* z-=JU`tK~HBWkRSPplI}0E5PSOA}u&aO`Ph{KxbcS){6XyB#*5gZn^p6X z)m1qYkhO`JpWp*IdYG`rJhU)^o2D{66f%Sqf;J?B+IVLdeOgo3SgZelCGAi&%(nnjtNQBZ%e89+|P zZUmQO;IK|1*XcoXW;y$*R}dUfNLU<85fQ7U-aj0X$@u@vl)HSUGyy z(m2HMJb8(%q)Mt?@jR=*g=(!qF6JmQEQLO%I7!r^u?8>Unv&3E8^|3&J;APw=d)%| zQ8$i`*erQuyQ$WSvF5fQn1s_5%Xd@evbw{GI5~lH6qBQj#uml6{#a6;LkVeu-WXdd|pqK`4E(Q}KVn=7J?$01V*5xxv zrU>QS8B&Zmo(;Qnc`qi-CWoUyO)cO?1dEGmMKYkX^8kmb`9rBB`B|7*L^D!2uicnN zLNW;_6e*V>8cjqSIt?S}buyNor5H_Kk9jGAVnmao!=Wou_awTN5oX@)8QWAwiA3U{ zmmt{p;oH8J+OV*Zx>UBiaU5+gj<%JH_J+}gITuTp&^@0w+5z@dL@S;mh-YgVbCiXU zc_=Lbh*XDS4S_H2ULw;?a^|Yc5E&)5s4Ph8gJFT^{yXf#$2+LKx{)@dTqg>!45jpo zd&6qXjY4kQh`4e~R=%VQ?vbQ~*2n%}VraeX3}ezi2p*Id18tu2$O_qvlP^Th`op1d zdwjCrWFkc$-?S~J^W5TMiaq9xh`_P2(G<#}$aJE;ikjdY#v{2lQ9{Lz*CM{mrdumU zhUxz3LrK(&8|$o@044~g zW`3~L%C#ZR>lw}|ty~?Pty7d1ShqtES9^Ygu_Tr4x@cxA$rTD?7pW_kCYzn4*j(?% zwjq~35{lCpT}kFc5?HJ&YKHF6CCz2z0yt?0TeFoo$v)uXCzjL^**uV$6Z^?`AtBka z2{EMhG^(V)e&WgZ#C|s$V)}%%dokir^i6FDH0r%YLSVbGAWviq-kP+~szIMFYCDTO z2L3=Q-TvzphOyZa+Q|u*U3M1`6&E_38$06U8uhx;q;c*wP&=>zZ02lW z{mX9}?`~{Y;TEHy7z5SWDUuze|0Iz8E@g>SQUsA?zJowT6{hn+hJnv^*j6|eVP^sm zbgKvyLB`EO_mZsPYKE*2z!{8jbFmloMDG!^Bb&}N!BH%U-+{JG4_BB)?Rj^vg8H5 zo?$xBy#+s4-7>X#qQ%ZOL`Ju4H;Y$G{Am|0B_Z~&OKHuGY9>nB5>_h@l9mY0j(ikm zNuB=S8V*6awI^bJ)C$|Y9lV2t#g2!^(4>GiNW$TiWhC<6d|=Ij0d-+C1e;Mh2J)b7 z1{6Ia?{6ZcklQlLjaKRmiSq*@(<9B_QAe`# zzq5U)T4FV!RWA?`xSWeyct%2J*NidFC3l-XPhpR>G&`x_t#}a@ZX{ekvIv~bV0tVd zN2Pg8O@mtVcADn4d4tDcJJL(8TcL8v4VZZoqR5$Brb=ApDGQ@2mOF#2*t9&&wvK|M zA4d!J$?M%JD7N7iBD6;5f~=W?JGahiW${jb@fpX}N`?Q8E5OJc;)FKU8dFplk{8>E z@esvH0|?bzM3`qT7)1udonekhbrx7x=bW8u(mM2bdKQscC&z1L>S=yg1xk!8(X0PfJ!8gcB{f{MiCna7zDaP%03Z18{Xjt9YVs zkCyBll@1Y*G?o~URJLt_3f*+x;+X!prMY;6g8eR%_(LbY?;l~xPw1Pe4jh5Y zTE5@!ApNS#n@gh+_p4t{Kz4uAQ0#pu9Ifqr1V0^1+I599k#^)p7^OsJpETTLS&X9W zIT@xGbY!?M3+4e%YcGu@@`F6j<3g=s=$?t*yi+hzmb6|)ywM|{+*Idndsd$$RGkTX zxNNXpbqtR_rBbFxH?bq#!g*;9`^A|qnWGZys}s|XecGNNx;{FOae2KFrF$r)drINH z9ialx8`Q$hd7IA~bi$ilwaP`c!XMqv7L2=)u+M=VNcjuOrtuqsUWNV5vb0YRCQJ1?HFFmxp}$!Td;;cxIj)=-j9TbtkFT5t1z!$aT$%X^&HhV5 zIh?K=PxU`^>s3>>o2;-7_oWQa0*jF-x%%%xGAlfKnkLa$KYtYXC@1n-BsvxG8eoO& zbDv&m2BWKx`S**<4gwqU}L{tnQ>5J20D8%m-%lFvy<{ z8ygdQ;;1xzLTU*(8vBVDnIe@_vneg#{EE0|=YeE~2a40ifXunb{EaA(oe({pi>%Q| zA*KF+JcyibEHeAif+F>5fj|OPfH041(|!_9bgXxeq45L3iCwk7mIvHqp&q>Q)!k?& z&@dD1hbaUVOEtZUpCbuJ0;LFZaBB`Jn{rQH2Ad$Yzzg|usCMPXJ-yG74uF?A2}=&^ zSSS62A@{O$${eV&5=@{D&`A<-ZmYwAFHD;+{Z>rv=_@f1_gY~GV(om{M*oFJI3R9n zMk$)XXB~bs__<-NM&#K09A~zRa^Yfq+M)z^1$tZA;swF9CBh_jQAnR6q9~Rm6{WL zgm6E;`kqssc|+AmsF(&gS2EU;&Pr{Wv^TDTlan0lfW`O! zuy#(-nMKi-uB2kyw#|xd+qUhb{@Au{qk@WUn}2M(qR#DmANu8X_ZZ!8=RBR4z4w`W zt+~F**AHEyu^$zCz|L|y()Y5?oPcDbOphv6T@6(&BZB*=(EJ67#w=ry_Si8Lz&B}m zR#fFzhm}>@O-~Xcu`4ezv6LV@_G;x| zNcfdWS@ty@cvzS{O??R27dIHOPtR!g4A)4YG$Y0D+bp0DJEiXdc8?#TGMa-Cvy|_E zzn?TPV(K{g?pB(1+iqffcJ3-}TLz2vr4bwEoHwx=&G5*~i(EQ`V^{HOUE=QitJU86 zsq-4D^)>Ws1+PZNcsdvkt+R)ijKwVHFP(Lt!IiNJC2J)&H5CilB?24305=ibJ4N`Z54Us)< zf%83S#0|ELx+-i436O!(6#`m=8c@_{_1b|wA-`Y%!k}GmOyE5uHLz}YxaJH)z@(vG zpkyf=89`srvrX%b!5ne2ZF}#bR_#GifoMS)U=+yd(uO#IQ?OVHM>qgBSSsUU@i&Z-DSiAL&Yee~&(H%YeGGG+r3Yl^u$&lJj>iZf0lUGIfd9xW`i%$DIiSF< z2@d)KZ(!Pc4c!^@`%vXP4lm>r7gT*37w!d9!s}~5Np(2OGLD>VS=pMNHGTLe#Kuq> z?gc;C%`br|!(RqMO;Zr>*}Y9*pMyGZo^f?-K#}f9a|KQyHfRsg4TS?cukOAz5 zuY284;+7pk3YBfui`uzm$VvKp;GHf=?%-TE9a!@gD5Jl%C~*Wy^cb24v(l?G<>g;vy`c3C>+9}gWLs@{Co$eP&g>dA)VPy@cSi@Dzfi(^#u%8_ zEBm+ibq{*rTtvOILUhj5<)i1ZuP(jQ1o_1VO#k+HU4rNwuj~8UTgSc%4`zS3g1QY4 z@eT->GhDgPf_uUKYV51sHDCso`L<@I-Mm5b3IcJ#2*_^aKz*R#kX9vtI$#7OOp=BI z0Af(c&CcX&w|lAgb9?@b9og??+4@bI>%9cKB66ez{Ds<-16F}u5j!#hz6~PCFF1g( zEngUc6QiEJp8NW=S5$&0n6IL+uJN6R`jzrGoB&9GvRwY~fd28$Z9V6U3Bglp;;~VW z+7XiGm5~D~pw;Sf<6RF-x_4l^pg{oXrHEx^VEZtD;)W0`QoMKH==#TA452FQ)*lh+Z@+AF|!vEw^9@Hr45|6?U~b}(ESxZ4{LAxQn?IQ(_6oBg#s zfIcX4QyNzF?gR#d!~~U$a^vGk5C8^nE)4r?nIXfS+Y3!liwq*Cb+X%`Ecqj0>-`OE zTO>dGV3)uQ6p+NXS(OeJOY*%{I1o8silERK0ltVcWifZJgh;cR-B>E--kt!KgkCbx zGEYz9FJwR-$_qBY0xBOWq*I36+do{(Pf6Bw@%8fIws% z5ZUGDMFa~VyI}w|`x6$o|0S5;2EB-qE&=2Mg@sx~wj`-f7K8<)fT<&MM=lvEa;Z57d^Ou4@=%MKEkg#L^x<%e2^r{Ci zDE(uI%g7}gTGwlF$&cIn2_X?c_{5Cf|0HXe90QbPeTr-tIjJ+IeWuOZhJA>G0`0ZR zjQfq-`QjJaqKZhx6PnxuPtDl;AktvKH|lpu&MN2DbGKZOY1Cb3uIOc-&R8x4X1mM# z=JMu$=pK+;fj|@HF<|?TpS$?oRq?f9r)1HJf6A558#9{qUN%i3%R`VaWdNIpeOcg6 zr$MyqX9r>;;q60&{UzT=5@hd^0>qwallU8llD4S{9{-+bX@Ujy6T z_*VbmK(DFY2W&1ED^&Pjc!a-ZIe-6s1n1CtNpqLAq}Pb?J9BJ@H@Jrl>62@penkbU zk95w}f*gDcG6#Dezk}jyABY?HPwJ`-^`H^gkq`{KvRN+UiEy@ykC0-5WYw!K6$$Ww zvBgj$b>o$y8#v3IpJybogIm@)RfLkXEU7Wg6ji%;Z^~MD@;Od# zAX6ZxI*D6!6xu9Ue8O+J4Y*Tp&*;whh|42|`RPJ6qb@?BsrpJuraTRe@st@s4(jMn!; zg>MqXRxR5#V}o_$0G^|}k*MFEz5qBovMuhyN3_fX}u>j}y*HEcZlU>j>L{2%=NgO40xed z=DS5=>p7kP*eKn550Qq|J8w_KdAm!O{XE(sxHpWomO%DhR0)oSb*(cf4F zPdO7T-BJLl4-sNeCUnx=GVLxM7jDcUv^xq<%7?sf*4oD2Uxumtdi_L?0_+jp7roKU zDunVfX3L5MO70eMf`csomc-6kxzY|u6GMHMuhBYi6Y!;ChURr@rl01ec7ZKvo5gbW z&NTXMbXlF}8geZ(UZ|bw;KoJ54agfwZdJ4|G0s&E`{|)OxEHJ)#l-gd~MpSiU;mk|JSfL^21l!3Ts4gka@-@}MX|JCkZtb1I%MVIV z4+IBQXr=wG2Oc1c1IF*UAQmR22SHG}aCw6cjk0-%2JtL@_#>|G`j}~_M0uf@rJ-nQ zeC5;3_e>NQ!i-Gi%TEJy%iEA^HsQWv5gv-|FpLS#hxvC}I!K)iO_0eGidYZ(r2c6o zMW?6AmdY@@Qg;MKgw3?2RWJI7{(oiGQl)ebx`VI@LcvMduS1Z zI?`HH4@Y||!5IZ4hTYYmEB@I*8qk^8_FM7%v<*QwOzG&vc^D}5#`3ks&owrJ$G&bN z(LQ*+vo#*k9@HHj2bY|@mJYAd+%uk6rKW5NR#7ccaa~(c!CX;k`dfOE$f(|JbG{L+|G}`5qg=?ccY8#cS@-iFFxkIR$ca)jGn;0#%3f9*?Vt-kwz0pXecGYf zb&KdPFtf+BK39Pga&?Fw$3M)|4!+sHqU`(^j4ZHAqIFpKesdr#fC2mR7V4CAa`T2m zDXVol?tBLI`W%IFnGkk`#%1TQT~V%gvt&ru5w=p6|NQptv)~4OFu&8j<>!g0hSBe^(h)w zBolth1{8)-XyY%_Pvs*<(vT6w-QrRfN41+qOPp3sKNvW5K zPp4+nccCYDAE_Ab+|*4^C=YDT^7rp^EOfOz+q;KAdHX5tX@EW=I6wH=^9DN0Ys-n0gXdh@ zuY_|T(%RsZHy}g#`2Ka01$+KD(~LjQ?6%Dv?@V|I4YexS+GR8T4w21b#t4c0H{#S$ zMNSFn2PxuXobK#bUYRUn`ztmRB8DU3--xZLtD)Ru4U+IO2@g4{MoFv*W;%OX?>pI??6p&2zl+T% zqdo*z`dN5pi+T){fQ)CUh_a%=gWO@cc68Ra0m-=Za$^icDSqkd&Iki)joesT>d8FW z4(kdjPbxaM2H947sEBNd{&q0EPHtr#th0Mf7xqI`GbZ?0CvW|RxtLB3@mfZpc)DW~ z>pVwg121tX+Cy-<2qJaQ7C1rPM4AU>RpAvOb+#Z6_1*Tz_{uGrqSG_aI~lb@_L5~s6 zJZiRVO-QQ1L|LUadxQDE?w)*{dv!JBc+_2Cp%>4lS&~fw=g|ka0qseDIYe|n2;xK7 z;#c$T5YxjUh-E-imE1s@fP!K(PM{^ASD=qBep&eSO5v%{8+&M{-TBrvn(ym(?wA%F>>%GA;;2Kr;y|7b5tx2cw?? zdR}=EDh6kw-R)Wx(wt{@;W9~LBapYDItAL~DEVrmhYSHpB^mu*5^#`do$$5q=mw2B z?T-24SREn6j$f5hUsL_ZShIV|4n&N7m(oHJ_JgdE_`NPaUg5#a7td>&Lc=iO{%|W2 zynUl=XDF7HoyCDoK?eH|!YWxAg5tKX1lFsEuKwh(uYHS4ZjU1Inx)LHb)LwI0h&ik zzmE?+h&0u2*zO)7`n|u4bbi@g(!6PjASNgGyHG3cF}zWv>ehm_+2x+24lHAyTwpoQCN*5ipBt$I)mN(W3;vtCu88qvJVZmh%!( z@sHLq0(qjP4@c&fLX&}Pr^h8SaR76?Qo2el*#w9fX>lBq_k(HBXtuY}oK115aV9zz z*u8{SMW%g5<+Dh?A+(c042cY}?!6a`a#e%f{K`u@ac9PiS0Ajy8y4L@4WzH!=9>qv zPp?zxjhjmETOKuC#;HY$k-9Yb8IHqJ{UA5dq4+y}lKdB@d|8YYsk+K+-r{#J#r77$ z=|AR|FlKmaR98ZWurDPfVhm%^4@0t&w;FoK`r!5iF&z{%Qkl+(=2J>8bTA|)wYxDvWkAq3)!Ajxl}Ou$ZS{q~m}D#%{DKa%yoz{&s>+=zv6`5v^__ z#Q*}&)4;Qt@N%A9XjCyAmQ6hYtDeZXjMN<*&*3SNm%r7nd_}1RJ)lyne20@A*GZLvzty09;d8z6k zJAQ5$fyI_K<)^A;BZGHzc5{~7c)bWC?@2RF*rGDcmE}|URv{7#^M~RTZ)bzZ8JO$^ z>|`Nv%dElVJNa_cAlK#+9hUNT8Pe}uC3<95iK^Ct=5Jw*v4^pLkruJ5V;h>642KC< zA+}tGRrNctlDMUMm`>=?#6}nX@)Aec4`bsWzH7KxI{U}QVtu4y8PZnW?4JQgnh>Za z*Pc7IGejyQI2XvpA4^%Q8z(1gfOTV2$xg^*xB)9oTt8joI3(tl>5Z@5$6`6zLH^GE z<1PB_pVYVZVRp8Rzfxh>g7&gh_ZD{OM=cIcPsU(xS9eVPG1Z~feoEK*KF$9t81z1+ zGK0K$-jTjNKqnNijUhbPpJVhFEK*s2u0s8=FPRo`_W>Dz0~uJ{_h+nOsaA{AuB$5b zz*47n3q?ewmc__AA&DxBK&5`nX~sR$7$ywp;y207Fi_JAf+)`Qp$-2xU<-UKH2!=jw)9c`6e|%`-J8)lK zfGd`F^V8HJ#y(?c%ej%Kn@*oFk8$t^7paTi#miL9WM!Ppn!g2rSN=2ET$xyTJa@Zp z({a?=KP>ZMB7sVGL9>mQ;bUy{N7ulVT$27`fTYh|&BMHcPk=&dL(-CbB4bPHhibMZ zCQ8Zi7Hd<*V(MhY{D*vsJb4O1qp%G1Yh%?ZK>kF1qGUs1#4U>~U8R-%At+S(EX%O6 zle5<0&QATv3dlTv3DvBNIbOLkb~3#MD5SSdnw4<*_m>P5fEybrC1-UYbC zFHh7wlWa?Djt zm{#71Dzm4%;oNb?@$osgxB!PKd)wx|PjJZeCcs*`8y;bYseXb&b9zk|=EtgeLzFQJOK@0ZoS# z)jWwN61o^T_km)SF3dQ23TgNA%tcC$EsE$1|Muk9%-?Hx-k0qhkDr2FCaG|+rsau7 z1#oUGbcqG}p%B;@6OPqzGNzg|1Gg;ML<20?^2xho*!(m>8le=}nP!>{B2jQY;JOXy3#w=r-xzM^Jk~s%qW(hB4ppq&NX|_1e9#CT9~=ffO7M z)o0v<`jMF5u*e5y07WLe=$v51=1K30o7!{T_R_7DwU)7!KgLrO4lXV-5|I5U4s;ms z?jt50JoyqPeN%nE^L9vg(*>|NHh<1Z8r1V(E%dx3U%u7)GRi5ALYg+rJ; za33tUjy%*OM+d{3H%#V=DTs1z?n=^)P2ey8>@a#M;%Q{(TF>RRL~*ze3*Se zb+~zK66Fn%ltTBD_H7$RZ(4x)418+xR^kqNcJu9*chd_q9+O**O z6P!8e6#BT5oFayXoUwM^Y8nI^w+>)#OPouAk~v)7zI)L3mayT{bkBsIE-xJVlj4-%fcIK+x3 zT}`l2Hge|>m?*P|Bo!-Y<=m#nCBY=2&f+76roVO`a&I%+<~V21G@H4w&F2lJsu^*{ z5zh|*B;#fc>~xwcy39T(uD$CV*o7r<51kYg;=z?0nXE>oLyAq2jfCtYv#27;24!@q z%QiplJ`Ke|T!wMIt3xkhw8+uieX>{=6mC#jTx7FSCWVPM(8DE)en~}wzpc%Bre9W! z3pLHrNAQ}!HF{Mwi>*J}=`W|OAFQkRm66gJ*bpjUFv$z5lvtj8TIMTw{`JA*82(L= z@8L|{Qfc3lFg4!ltL&Wk&mlb;$r*2{nCId;FB@6vNck=DC^VEjs>01Zy=x60>NSSh z3Om1(?YyXSVZ&cqrYs%vvPPdlHn>ARpjjg>fq<-IC))M1l983#*9sKuxud>^r`RQp z^?uFoU!qu)FQ5rz^h<3v2 zQBy?|Lpe@?Xu zOYn^=*XSU-!&Z$sfc=~zBg1&i@@q-A&+4*Eri5bfrzEhcn8whr1i{=_hI%DkEU8PdU} zbSAx<9_9WnnT@ZJBg6ke4fXioDoJjvqqPiY%NZv5v=4y~=OJu;?_+B+!Hs<(kpi!0 z4^0CfBBVRsZdW-#b==<(=NAyO~d~3I&yy7-$|xU2E$(Z`79!VMN?fqdaD-q z7ODL?owr(XaVX$;C)cyc3fa ziwz=0zFeY?j-36Wk!DRA0f49noI?Qq_dGi6shdBkuEFu8Wz};C#Xz?(#+cHrLgryvTY?jwwOPUk&s@$}&12jHaf4GeB*W_tIwmVw8 zrWCr-py`bGOpQTrErhGo-}+^gNeS9|bOu5P|H8%~tKAik54U1g>fsXi?~@KBbtEdp z@3TG>xtXn;Q8hCOQ`AR?;71sxVJ704sr$Wg`*rIqP%{@QmKM!9 zY3SNS;0B5=eIGlDE^VJ1iY{ZH2iZ$4*iMq6V&JvR%};3iWFQ5!KULop$|gx)4az1( z-zCaLDi8tMpR6yATvC#Wtgjx76lIgTj{y3ru%X5KqIOYoV?+G!M&?pd9!oHPlXKr$ zLlvH$hU(Gw9U))SoQiPMY>m$6+cDi=pU@_-$Rmzh=`p#|& zEM1Yx05^MVgsXgF)yF>(tosY*VLH@ct{!I=&uSHAg9ZUM31Qt1HuT`X<4JqUHqawA z&KEhSm9mQm&huQUBi5O-u3D*XQaZ3(YFZws4h+Ga`SWR%N`rACpXkJ@Sqjl3BjmLo zY>a;ztRC_5DlRZZRrE6ANK9;yI_R4F2pp)o5J4l?<~YDo)23?aRtap5lb|W|_f^Lx zLn-E$OJgr!8kTGAU65*!xiJEChppaeaNnb|rn@Z3 zIt=h$Up?@fdfFb(m>wi*XhdHxJuStUtY5F9aeQg}R(1zr<$QeoaSbeJr3sibPxIR* zAv3S~@-VO15gKI3Y?Wa1M}j9KXIK(;mnC`#y7#ZWkn^&k@en-X_+DLOQay#vvi7lA znfuqmgVN0@)bE;O)ldy3rcc1=E-0h@wvd#6*bZ6BNgF~8nVCUD<_U5An~3Vc?_J{h zos&Hd;au4%Jpr=Ru(r{J9uY!N@`WyP>Qxci7q2P~_SdaI+)LERmetHA6@{t9PWF^0 zs}0Gl*&Qu(-Zg=LP#d-HOnkhDFFQ8@1olbmwzfqHa}km=G6MPCZ~m-woKf!nmRf9& z<=fm52rLyDZ2sz{BeQQ(P;bnncu^@T@Q-2fy-85c`p`*;mu)V@tu(6TLnP=p*x8f$ zDSecR%DY_2YBx-peTMKs1ddg+6F^^xEFdXO_CP*Ftn#ifmv%@LmTzt!CYJ6b5!gt% zVXy9YfygVGH&3VprpL$;0;9_DXHZ;GVLv7Idn6#10UZKs5bHfw2)>dgxIr{TVV@11 zVEB~g;XCw231S1=c9;d7KkSg^9mk@47Qm{;1xu^?f)+HxvKro``a(ib*l%&8h~A;3 zLOg1S8-x!xZRW@^ZJrQTaU;X48&cy5Mi{4BfO=f+2$G2CA7$zf7H14Uy2zDSaqh(M zlLLKhaUs5%7ZJ1EkwTrh++49pn1?}?_;-}5=a2JOd*&b$wHH1HrCohq`H(lPcf2@_ zzBtPILjv>l@_v8a(*BtnQFQr{B-PbGLbY8?&qf%()$0DBHr}F<76}W3)#n25yZoeVp7Mozp=0PC)?Ytqn})5D8-AP0;%j zVP|rm8Cq{-D!~O_XwaJYW#0Hx47&@Fg%jytN8e)a1Ew#@BYqJ;V1M_OF z2zXBK^YO$9g2mP??xhOF3dR;i1H)59y1j?%uFe0sf$hq?+S@w=RDt840@_04nK{M= zf_vr!$|ni|li>bgV==t2=AH)j?0Z9OF}y(LP80PCS|FL!4}^rYr3hvBxkKa`-GD=2 zvbNzB)N{`de8q{M^_XJ=Lp^qxe^3RlZ6cl6ad<%9+BWC5?41?{R6K#;v!2$#jcR-U zstUb%+5mhh?UtQ@hrRHE$r~2ZR*B=4JS=o7(r(7I#&AXA*P~ijo%msWaYe^vb3nQ9 zPV?QUYrG<7xXZ3oBe-TR+A&(g3JtEI3YBg7&p36CwR+kMESsReq%}9G4W^3gzR!?}Q+nQ5Jrfnr0~` z(&kZjR825UIlppv^hn^DwdkG7xKorC;7Rr{3N91He(Z0}NFe4yakD}Ya;n=;T9O&X zr(D0NwmYBvw+=E+J-OFHT5qMFL{1tw@i#wl@ok3R)l*fj!jWCo%GxeQy;w?nm+7<1 z(drhQ0S~Xs0ckwru&?$G#{4y1LY}!}(AX83x*k&hwD2T_l*eS$V=OLBJ65NB^zk|5zfE;#X6h~W=Lo30qF5Qr<9IT8! z^w+SX-ZzyZN|&jn6GELrq|#CH^l8RiH3RUHe;ejZR*xG%HHvex)z39M1bVe?lktny ztg{e3r4sr*$*VvgmYhVNL7X7C9nX~Yh$&~=0pt3Oz8KqF9KDaOGQK@oDQXu?Q+$Tr zkzx?2#D#c8+8?y|YU(=o>UGi2dXk;vbY4GAlYf3v8=tEYzp#yJwWDo9-c>d{>E&5i zQ|Ug)9Mr<~i**5ZbXEK5_dv5Y7LzxlleY(n{Ii9N^STSlV{XX{AN5eyN$v04`%0=y zLP96mvc%v4Z84%KYp&RgYu(@qQTWR=y}Oq_>OvUsTDv%c{m(xvd_yMAGsrD3 zK`u_ws6u_8wKMFAJVX(`BSKVdU#8ZBg%_!jF`rxq#B{mQ(azv}X zxx7%)McL+THXB_G{<(L8$0$^t3c>tKk_)dzn>gdJU#9PkY ziDN!;ZK)+D{^N{Nx&6AYO>nWGqPLbr>p>hjoZ&Ryg%%XMe@vf4Dv`O3nP3E)&}^F4 z&51_7<0`c&HYEcuoVSNNAuGK~OQf+@*;3CoXBjO)!{-O6pM*myY;-afiPMPV9L#owt%@C|WC z4(LPs#@URyRsn>?Cu(Kx_1+BtkjbqW&V;|$y&JMUJAl@!VZ!h<9ryj`p^2%ZScw13 zsWuxTx_U(U@k5&Ze^*}nKZm#~n;E%$)3fD_Tx|Y}v63`pzaWSfGP7uPfmJ48B?TSA z5wDEGS$P@=ZXFUFA5Wtcuc;a$$L=QH*VmXZLSHYWv=fNW!$J3AM;7n-g8-&&Uv@qc zBVzO}$A^8V{dtw(>;3T(@;5sheEwTjUpXg7Q(MjuC0zTzQkrUb0k}ePRIUyqlPC;L>6wA$crZfKHdfA=NNK zN5%uC4WG7^vG7AKD<7X*|AU^pc3F{KC+r$8Mu+XT!$-Gg;cW`LeYDlvkZ0Zq#K2TZ zHrm!UUvuMi(Xm0ef$@(o^%_(?ftb8gbG@#~CDxMw4njRa13L?{KB(#-P&&wCrsLke z^dM+-SuC1po_Zzf{Ad{(-9OAxl`;34%@w+e1(p5i=(Y1}9k{Jvm8z5T)ObZvnJVr= zk7X@_ty1V+2IDl?AZS|zwe7SLnxB#D5=2S!jxj0h<`%2(@k%vtQ_10m%}07gVZ(-b zo#!7>qLl=wwQu0;IBs1&g)?Z*nL3Mp=4emQGH5&flU*Xyo^`uYlQyg5Q4d*0yFBA@ zKIIPVYAjecnbCNCcK)*+BpD~?*6Wj-Kh(~Ro~I0gvL~ZZWEU!RV`%Gp?1;Y!4bn$} z6y>+%;w}OvQUV+Qvs^23G}Cww^5X~cH<04Lhf#3+AF(}}>`dH3uCC7iS+8|=F?0UU zWfh}trGu)0<_{SdwEr6|jb@Ri*%-?3_wpZ@p-?1tc96_La?Lbi>^(!tJ<~uL&a|ty zZDY)uOO+nwDk<8Tg)>Znht>zq#avcYVNl{YLg#5di*29O=Ukt>_xqiko*xguV{J*$ z%F9cA6#}-y^dDJWAEQLHjBnN#5)fJ|PZE3D!mJQr)h9EI%k9DizdddQN1KK&p@Tbp zI_)(^Nd@!6=gUU|d>7H7yg|`4BgDZM#aKFODWdZWs>acT7DZ)c%JpH?nLsQ1N5Kcs z<5a{SUBx5Hz!yhU2WrkjISRzkM9}Ly7KM-^cymR`u+^w%X;?ZVnhVHCD$Qb|6)KSj z#IS9~V5l2*i+>+UnQ1#&OC1}U8w)Qjm2)PHqn+upel79rapNkfgr>@(`J@@|OOqVY z^>fg9*1X^MMi&g_Fz9Jazc#aZonv;U4sev5l!YUy_sPL{-ea=B`it4C4iX-Hn+)U688i z_zB(&fT$tuiHu5WxH^cnvWqIljPmrpJ^um-ij@(G?}A@+{UBjO4vodeGF^?zrj{V&#K zQ3xZc%hM|9+N4sCN=76ck(MZPbbHLmS)#lQ#!cbs$O_?}%7g02b|ily>Z2?%cai3Z z3spqZ!Y>~{U&lB5`9X5J4=vnpO_67(p&I zEey^M!`jg7=UT9GpPe7z?;YwP}W%p|0q|Dm>dQlZxQb#d2q*_`HTMqN+}GjtmJ(VL?b!I_Ui&-i8TS z_O`=n%UIx9a{FkoAF)zz>BLPhdduOk8OK(C(_qVE%rt05SYsQ4ZxEk^EeK$W^!b!7K0N#jW#I$+{8QbQDB}>ALH^hWxdA}{%K0AIc z3YE42G9l$g*ob+WWL!9<9##taBfKHq)G2Z(IrumsmFb6Gzr7`jZnTS$c0ZAPV|deO zy{B4WmY+RG7!$D(<8(b2tq~y{MxA6b{m>p>)QV;&gOPy56ESgL+4 zH&#oxNh6203Gv#$SdAZm8Rr+8s5)*V1P$|JAgoHXg7b^hvaHXRZKyp+NvX>Oreicr zISIbwW`D`sO+rWS1RZ}*EQmgL{{c=@PCiBBOaF=!q6n+yX@0Smua*n^IX7z7lBx** zZVaSHaEX==tX(Uz-coUv{hqS~#?C*UYZLa7(@99p#;ng1;`lO8$k(8pc-v;-@u2q-Ig@5V_m&qK7YndhraEj@+Ta-JOc68m~ z+52r>M4r{E8?qgEs)KiCQrCB;{v81kRkE(FrUN1Kn@s*B39SE0vBX!$AQ&GFlG{<;xfl zZbjIj3`ZU@W-PSQ#%hLpP znz6in>StZY#&=?*W9+76#okpfm$fZ1zf9J3nX>Is<>z4jB#1HivCp~lynXGn^S1rG zowWwZn8OWgSfhE=M}mmqqj)6L4v9|i!drgZdo7d$S*&;1#{u~6RVJ7&MvE_M775yk z7n4t&=%Zw6ml+i|o3`oauPafsByd?3I{C4l-m_7Q$ox50Z#1tk6Id?D8f%DEQdxl4 zHV+2xd?dA|D_L?NQ+6^@DGTAD$3t>t=eV>-b>zIVH!)H|ZP*0)gihYXTPixD2Tk$v zS(0e7$8fkhK}RxGiZ3yCbBtduj|eVZ5EKQYG0%|~#FmApQROv0+#CM_|W_92s-rN`)=H!P^)>V8Nk)A2F zKg70ON&#;-yB1R8ATx}L7RtOawT;a!aeOGRWfDGl$4K32R8ol zU9yaeG*A1wvd^0roVS~_e^0C!0oCi~L!NLn&vHwx z1qNoGV9JnW#++ukhyuKg)RMkdLXrzy^*-bHSoN!QZrssi6}5|jrK_F|?e$zo%x0V@ zD&G81LwT*9gC%szId;S5iYOV(tL)MRtTq4%1dG7LBAeGtH9R zB@BFL={(i$=y4iZf2V|50g?0-YAFq75s92R78WKQEXQyShYV4Dk%LzpLO;fGALEOS zO0SIeAoi(=2^%$yt(-QZ3PwrBwfddyn{F<;Z6jU2V@nguer0e@mc>GCAx8ZYLvH;VLvj(QIwht-#i$jQ zR|4?I@6ue^?jsBb6Wbm7$=Qp5GOU%-V}`bK0VCxUJcALbMP$(_{#nz3|ps& z5bSmZ5CU(vp5J zNEw!-Pkf)Cc4)-)xa2KWNZmMA-_LKtA=>~pgf>ScDjcO*^e!&T)!wPzOK$Y>J|qjb zfA;PK9OAeqad+=ceKh8765O#_Cl(?zFUh{WZ|W{BoPo(pM|9er3k&`Y-oP<-_vj6I zsMUW2=;}s-U0I~liJ|0~bBPg>wlh+seRz>rdSY zxgAB0Q4zgP?~clJr}o^49`~X$+KQsZ%~a5TBORPI+COTWo{d6w)DF9e>2>G3s9c7x zR9xTBN?Tpq;t4k#TI&J92zX|E6#7n%rEtD- z2Jhu9w~Fegz>|43>FF7Pqtj9w93w!O204kYbc%{TY!|K{K#LY6v~3vfjQ%!k}0 z{=k%5mpw@Cb0)p4anstPqp|m(x>`HLUaG~G`QIJP z6;UB7s`ELaV1m{rc_y1;#&TaN?u#U}kezI*u=89eE%dX_v4eLBqz@}l+`hS_@-eoh z2rg=u5S6n-*#}P7F0q-YSNQom-~>$IWoerjDO+h%Vb4#kz3U&vkLO6r&y3piO|6_#WOuQA28iT;4TkvPOHl|WxHDw)02p;PKq zVP@{mhy0)fs@H6(wM+U+y|Pz~XO@k$z-7d@@ZzDFDO|b3D7VLGq%bQ{7^SXUdMlG> zn&Cn?61VX3hP(*zk<0e!4HLj0B7id#B`-27?f9lkt_Aa% zqf;2GNU^r%8Bq>+{`wE)W$UVpiUIxO zhduiLPI)o^U){97mDm3&x^lE&zgdrSd21I(_Vx^5sliB!ng=Nt=1sg{I@Dqeg@0DcRZ$S=-pq{~20ehvctp zVSF{e>Ux{JLg{|@f6a3-Kbp*7wJ@J{KKFId)kfh>R; zzzz>XDfo?7OUUXKgrXrbC)vcBx398P{B1gl+jR}~CUGXg*0|%o^g)phPO0$1>uIFi zl^qUrCJB(&aFCojEN>6h(hFbDPgxz zl4fhFQ8+}_KqWCZ@j~ch26BS+?dwgsBkm8dOR2|51J1-s0E!vD4F5C zx!;AA)4x#^g8wXFlc5Du+g;-8RsBgEui+2Ks&i9Y$#iQ@`{ORG@s|4=MJ66M$4Lw! zl!Wh}lHvx2GV1N@AF}&paghYDn!WQ2-RpaUKP^+=cCYD`#_oyM;U2e3oV*^`0`h$s z?n4>M3cIQFc_A9szh_CP0DTJ$8A=(Zs3)V1#b(!C=ivK?)U5;A%4RLUbL4sRc`FFe z#0C0`D;91nGJ%PPbd&=55WKjF4}fKLo+&64JHQR!#JwmHZ|-BP+fF)Lo`gsO<2!YY z3<;iQI-VeAnnR%ffKCHPNV+*6MSj#Yn-RrSJlRs2X$@1S#C@J7fq-Rrb}*+Z$vIs; zt9^A(uc*UE`e-kJ2K#J%iCE#x zfc=6q4;LfponwIW0Cv=3X+eWrk9Xkc&q5}aXm$pFJEh!Q<+Z+s1a^uarKK&uR(OeC zWOT}Kl~N)YVH(b#FjBc^KM)3Yvl?t-VC(SEXKr%L&tUuG7fgl zDyw*#6>x@4w?q0#TV(PN4DJGjUEU7jSdB$7gn4PL9{hObPIM(mc?}J|3?ii>**JHF zy+9rovx78qYriZ!hSbKB2nTO*9TT9V=e445X5!B(F&PoW`=u%cVcY!x*3vTm+KD1( zW^44huG93z^Pd$(*Qa(y_83foG5OXo>Q7c!HtMc{VW@iC`JW>H6tL6`rF(ogx$yZ} zDkY~V=X@1Q1K=z(HbRCBal(qkGD=kXlBDq!7KKlcDL}A1wp3Oru2Omm%a_||jZrig z>Pb$nZPab8%X{7QPLjcS$O%z#19x!)omSLXr{gv%W9*vN77n5nG#!CLuPxrpRJiDz zbcTw*bJXbJD!*Va&YQR@mJiD=%VQ``Esa)U%cT&%_K5ELbx52{H`)i)#)++E1MW(T znH1ejD8$DKjVT%#6>E8QS((1&N%LEh1V961VCP`0M5T$b6ja#?0X%;4VS=se^xv7j`exdl= z{9rYaoa%MpU*7F^>u^5cMqk8TfwIXPQ5wBlPGY4iL!Z@;Ji+(B= zkPM|TJX}3~f$=BYG%{8gbGFTfK zPeUq^TY=azJX#^AjM30g$Nu(H1g3b7`wi3aFDprQj@zW?V4X4%<_W>Xn1nPoZfdI0 z+u++iIJjUL>lg%WmeeTXo3`_@;^iVSpB8 z>9d7x3`*vdP(^-MTd0|$wdqmRsYh(`t@w(>L3_kbf1q3cFliahstK7$#KkuG z4BGc`NIK|FNy(|SbwrqM%Fd-zE9u~^C}njzCWXBuZ&4 znNsVZMu*X}P0Qo(7|m``@hT-kl?TtHcClA(C?Kaw3E(XUY)rdbkyw#IW$jLYOcs{ilNp34EAoscb0y}2%QLC1adGU zkTv9=oEy(X`lqR#5MS(acGFNe$rN)8NilE>K(`MD`3<1U5k?3Ckd2opGccDU_Jr=dR1P6|>8v2f&loXEHlgx?Ws zu$`oSz;!j`R!eljRW(S2vH$`B(6}^DwBX2kjZpM7Y9vkod-WhPwi75C+siT??#gy$ z40BK(yPJScaV8oa`Er;6o5UQ+yakT9K7ycN3~Yex&0Y-_MCRT1x`CeB;h8e$nzH6X zVjarHZr*1`w(?3bb!&wax)$DAB8lh#+!7u(*?8>vQU4Q(V!iAD5&?xLocHoG%?sfi z-LM|EK8Z+)JNQ^+);@qb zT=TSDcO!7Ucok*kz*Zo&aZZ z^w%4PiS6l1`@nyvd_%6Ye9A!z9>R~PBJ}1o8h0ZFM*>~Up6J2x0KRB1luQn4;6oII z0KgSs9QM125ws1V0>Dzfkp=?VqTFH@3qTkgMr}-c#Zs<4n3D(9>@r5Gix<0{A9f3+vMrF>Uvx7wM1dunB%bMJpg4`pW%w z1ckIDUY~JsMi|1^MXI?Wi7$*IH-88c_DS<9sA7wE%MB9YpVaF8VQ0O7U?lleJ|2jK zXzYS!O4_O<81~g&6^v8N4z~8jFf5&4&Xfe3l7V`@n|-BdVO_2t3_`jh3Dd8V-SK%u zA~_=iy^?4Xq4PMD+xyrdkqi2lB!5*4%PTRczAoZYM`HTorwU zew#8M=SFqVb82nO%quwKPE!ocn<>-1}NIb&@xXM%=cs5b|Kx-=ajenhJ801oMFIe z2D#JB|J!bAO4u=zgDPZa{@~X!E@+jVwP&jT%`{`M4CH##mZIsjV3OUh z6{N}sP1AGxaR(TKZ6EmzWp^5y$IFt(&#H-nG7UB_wuKaA=58_YKa0HPy?8}uM_!c{ z+qy2_SOioCZ*2D?%0&k96=b>C!>eUa2-Qb6Y-p)FSJroJBp~OMoSOWl*3&5pB#A8B zp@V4p7!+`==gup7Rxg;?pIHMqNb#)Cvb_y-dLHn7fJBysbhrX}=?~|5CFk#}8 zh}CYQFn19wa5tm%?VITBiOcXWiU5e6yU_6xU!buv)q?XfnvZXRFOk=94tCS1Mn*X> zgs&5=Ld@~$hk1be2uuaIn0OJ_)JkxF1Ivek>ivx3jpOyc!9|vZJgU~6QyN6|;?>zc zdD2oUl0LNX+tEj`WhkS0hD5V`3G-#0UWwbE*+u48I9q@xNVz#!B|M1hPzZ3Xt5f`Y z7VugVZ?o`wX!cI$YhJq5yN1@WJa34;qhdZUI$s?y*6aJZPY^gOa@UM4m62_-_YQg9%XX)^yMv)fIx;TU z%oA&-h8|W>R=JW?*38zVo9qXUboPlFm5${W@rCeK=r{$)RLYc7eJAE8`~FNk>xN7u zn}M<>3cp(J&cCNdOqXR8Ar>)kui`c)&lod!tLBJoTK%B-jQ2uQsm9Q;b!Xt>!EY!W zd+?ATLCPmfR_{rF&f=NbkqFqY7iwB8u7GEbWbk6F*c5_MRfD|!1grDKMe25uS`(2S ztX1v?RTd)hb&~3Qr?m6w`?Z1=lU0a>P(mqL!A_4Wi1-ENsB!z^XR#1JOyXDnF6nw>e z|J4Dys82$%$(w_i$d=UBy+H*jg7;zB*F|9Jyq1$~^NEJac-~Gh-$nn_ixZmnyPkzA zZd5diC65Ib$_L!rY`BT2_81o!obgI;kJ@Eq|D7~?xZ*s=x7pT76B(Wq3LfIuPHwY} zdSh&QueRYZ9igyZ!E-6Tz5E0pVny9x5_pQ)K0wl{bxWb->Dh)5vb1HVA`qB@eHH07 zTj*rp(ENj7^9y~}^*>JQ>b$jm>W8Re8Lm7u6)FJw)U3s&J8A>8!}fD+A~S}3PV`ZE!C5MF@^b{c!nqw9iOP9 zc``9TN}P~gbK#0zav!}#=3^Zd8zzzJmvF-;d8^H@#b}7CS3f@%UASRvN{bz_7}{XR zNcp3w=-YfA{0IG?w#q)YO7#;a6jUa||ChFkn)&}?7t(d?{c*H$gUXb%IRR=qg?NS9 z3OTJRRX@#`FeL^*OE_v~XknF(ax2NxnR7DW>f%2J5*R_<&(`5lh`$QQm_F^eUh|b7 zZOE@T>yy1Dd0q-U_SpJfWv{>APrLqxJsx_zFV9pvb4Eq+)f+KKCUZ@Sf7#NTYgV!? z3zO~%mv%N|rxq`Q9s6wh^z<#5eU4AgMT9J~o;#z(8SFus;C#Ff$59<-4-^*^bOaCy zQXK(;Ipwe8=k-Oh3#CDBQYfp&Nsh=hp*lmeHCej`f2k~GCayJSN;v{0mM79$>4XFw zR%C?jN}8IUbtlgeUSFq%;+ic>t1Vm^cq-*2doFRL=4`j#k0xaoej7jRt_5?|u9rno=_ES|<~5Rj=U>ll#95PLbR49$^c#{V z%E@o&J&M2~4-6nJJ;ojFTiEI;&@lXql=x>#Q(_QQW%nA)-_P6udc#AkryGCLSf?GMbGeSE9%wDccmv35*0hz<1S~Nc>01l>Gv>8NmeSnm zQk6ZOoCAA@qq@f9Xa4Of4eBuK6z=_uaX!|)rbp1C_mPpNbI=kVl8~v1k=1hwlO2RD zx7_|2V;xnl7fOML#!NO$vBh6)0iRH=7hjHo20r)K8B`D+uCip#*S%&>s5-WojmKfs z5x3=NBvkF!i-V17h-xCVPFAZY%?PD)OBrOqm&e~n@iSvO9<+z=VlVBR<`<*IJr5bB z9N)8shvtQKx&#C9ZSjQTb#dX6&975J|7K~?8^(l#_u%o_7?Io$*r!-x@X|6Qq4W~^Br_GmNmb6fjH=%RHd8V1G3iJ&)OLf^Ts(Zkn zx;+I=f8&?6`T!K71wR0V9}!|}`NRIZ2_##;zl$IWc|P^s!ukn1dOkr^?~G+K^|tz| z1iC$eEWP&UvEF_oUl9F8+OE~f3JxJax{3X&3j6a!@2#ODU!#0%``^XelnPz2Lh^Iz z_zEk^gP#3{fqd@QtU5`8)8izfy$OQya2D$XCGqCd$PToTs`xSwYJh}wo^=Bzbq&SN zYXsJoBZzhTK5K?&eF8|oqM7yOHmn~ed7a({?S$7+!%d)@v!{lpfbQDCU~=VL*)as*=J7HfWL$oZm{xw8 zTnKnQtC-;isXN>`cMeqr&-B2YVU^jt4A>MJUjLdAst{e0j6xQXHOmSbcW+h`32X@M zJG4KKIlOjR$pohh`EU|-##)nJ{N6J_OL)7x+9thqrBH(Hu=6Haj>YVovxh5YDiQ8| zg3mN6h5Q$SHWPl0Vfle1kp2Ha60AME)XeQY{*T|drlIZ!g7!`eCliUq5@pfAsAHA| z7tx%a5vzl=Qi_&|T{-k%okcPy30Cs6k=U(!T4?K?YvFEa%(yv_3|0)5JQL;0N=pCb z$m2LEYJ2rJ@HHdw{pD!U5sKlh{O5SqNZ5@!eF0+>F|gu}*)0?CanykT1%;I#k0Ois z0H*(31fIw}hrn28vf0hTf=k%y38u0XHXhfi->C_)ta z6qkxHAIvje7t~F`M8G}&)~D>8RM}b$R)0#fh4XT{n59--_dLnrhws=;PTR`*u^la1 znhkA2`yS_+D5$oUt%#%>dHK$lA*k^4EIY=L`qsM_w=g(MIF#}UaO0&wby@>@^W(>v zQpmrMc)ys?!!aZAN)g^%6W9&mhjye)Ydx}YrXTjZ&q0bWjS3@3nOr{7~{{$CH0nTJ;MbcJAteH5=XNco_+2YF=JcrTeA0nX@I9Q113W zmfXo0NJXBchFJnC_Yp1?hU0Jx&W;BO1VusTzSQhx=5QF?0dc+zm-6nWF>E{=;s#(s zd~QPQk3r-2=sNBq7KQ7U2x=W}C4~`OvIh$i#pWjay3f;ERdo%j4A@~XxC2(tUT393 z>8dvj_PQYApV>UZyy*lZZ_v-Nqnz>z6V#ni&~YT-5juw_7ask=LuA?|T2o3s0x=oR zU=|Z_adFZMY@mo#PrN!xAo_e+1$I;_Ub{Ulef%>?Hlt2K;kNLQoJl25faY}FhA$vB1gKaR)fl*s4tF3-5lnXS=1r*bomIs zb#{>|*!Et>l3xinI&~ezaB8Xwdh_ zi+5F>6?qF5F%>9!CQhH^NcBS*z*-s{i(B_-iRB#gvf??iX&i%9B|SZ>sdU=L@rat) z=SreXr3DDDFh>>+Lkn{i9ZTUWzfu%@j?9Q{YP{8;6ZL6764QA+H;9XkdZh83Dgnp3 zUXqG5_|$1UEx(q_&c=M?xad{>Rxk4M%i#UxRv%?dnY5bgtiWy|p7R3<~jpV zr&j86Xc(KA9+>H>ht&LW$2yI0Xy|Iij`FZ$`WK)kPrdNOt$0xq;tvbUOG#MPK_R1M z{Q1Mc{?Kaz@<0xeJuF}!!*?c)wu??9+OEn{SPhtVKG`tYXbwl0wW#DPE*oxcuk^Qn zz)+`y^I_aiNcqTaP(GaFWkWZSD;D@#caYGxIG%RgQgvKIH6&kWxQ!$;& zVPRntm*F&EYWZVX==bxZRnBUEw=Ev37jUg_{=1+WeQj(uaS{!lnM(a(z@_}GZb7LN z?V~q9MX3|3M^z**)f6QwU5(dZA{G0=h$hDRNDLr+FrvIMZZRK>DE2P?E>=CG)?UeF zsdxAo#`#+VozX**NiMd336YM$O7BfCG2orEr_yyPbJ zjgL$AKC4V4W3^C?2!jPGvoJetH!$#@kl zSL958Gh#$9Slh>afBdsBBr~Ro%CQ6rmy}H#z;pOGX1D$oE7|;`!dm189hi=kQW8!wNwjqYs|6~` zV)XBvM0!qx6hUr!Lz4WImNZ42-GmnFx12=RFm(wHKI%iXB$>0LMW}RE)!#rCJ`4}y z#xb^7mRPp#Dbf-k-e1(`eGK?z`qcVy3da$wg^0G)=R;9&Qs$Bz6`s_S%C^203!A+}BE-_%NOdH;8LBbX}kQN|+L_j6u#u9@^VO@FvD@@byzz z`qaRh!U#&J;nJPh&fBL?=cBveu49pvWUy>P!OW(59(ec>GwX9%OLz3Lr;jU4O)bMm zwZ%W;Mc_~R6(Uboa0G!zoY)^bz(to5y4)ET?)}jWGAY}}M(HB$lG9K`WeB4WXPoml zYI8dg^-lUAMM*?^&@t+a)H%@vRMdb10r(!pUo={&Y`r;9TQJd6Bq@ae6a~YcA zk1J?5y>K!&1p-JPHrhyiP|(A|1?K2bVc|8}l2oS}HviBP9o74x5_tN&q7X&LJF9OU zUJn80VG_M4!V6GYy}Blr1guS@You4JP0dq`dE^ATEhBxJK8R`}hp^GZh^Z<)bK-4} zRp{S&%v-@+z#IvFh45ZQmYx?nEI_q*E^QYwG4p0bUdER6a|4;w#9R|x#7P^8Eb8j~ zx+B&KXZYr<@D@gwM^<}m-t0`^g8#&3cuC$8{+A4n)7(r$I}V$erD=KbH+V*>wgpu$HzW^ZF}Y3^nHzXJ;`2LBaKDRyL& z!j~=l34n}=N%)YIP0bvNi8)CdM~y>`OjN$dev6Gj$K`GlI$+RJyXk1WCb1c_q$drZ zF3*l%->TMP@YRv8rRBBv>L$-~`v;$*O$6j`FGkSYcF#vBAIR}b>lIc@~uGdZ<@BCFjR@K_r{w^4HNwwf&{K)A9GVn_lAB)xK<@FBk6)3Z}I zXYGFD+utk*aLTN~icq*#ixtI_oox4N-VVx43$S6{Ado6=t&|H8zqTR5iVh<ln4x`DCHF zWy1n$^7*yWFiw2FOk%6q_0uESaPJwLPjMsEtiq_dMf{&yUA>1RY~m=}ea+pME}BRQ zPP1-}HmH(H22;I?=lD1?i8|&HMy!jk%d9wY8mlA&V_CS^AUwp+jZT%iE3kd(z2u-qx0O;?2nc z(Gqvf@m5;C$*+7~-tFtc+@+{F3kw@_>c8WMH}h%pms_Lpw-=P64zRn{o3=K0E?0D} zPUhgfXFE5o6ne@UfaW<}Jw5Xm`kB&#H6D_l%dJxnFJA`qPAgoURZPQ-Gc#3k%`gqm z_*|$vq_WqxR^5U;sj_G0X1hlq@T*ZN+6+SJjbqm<3>Fb`8x#w0$kso;h1I;gT1LH*g%~`$@3{cj5rP3py zKGwD&|(A?j}>(#6DU-}Dz3cArk5y)~GC3_|B}A1c?;8aMh#u;PJTb+6D+Yn5M}_!+uq z?v2@xYPNe0{CZ%Wbn z%3gl&^Bot!!4h7~JvwVMAc4Yw#gxh=kM?(S^L&+|7!gL?mtLa;AZ1CUZ$c~IrgUbml1DOU(c%KbR8PzQl@mpvw<44XJf-O z$SLAOhnEKu-G9AUy)`+jCr6@|#wSt)LwUE%YaFp6$iSdYccjZF>%`x1h?* zQ5rUkF1!X84@k$7BS+bpB1!z{W;gd2lrCTXAeRCKvW5SO$0Yj-49~wc^9vceembpk zrWx6Qj={9eXUJFY&r}Ve^EW#D0ZQjl@NKwOa8*@so@$7Fai{yoH+xG>m+3oj=V6!^ z$wWl_^S$(zXxgaPN?YhFz3HC=Q*B3`j0M7}-OmE%cTCi>)QXqQfK1C_8q1g}kKCVL zt(wQiW#ROT@Lz)eJe*dp9c%`vlhsbFZ&n9%-&7s}2OH*(Hc#dqUgKUAxe)wL5Xh0A z?&w$A3mXDQ=N8Heu5-RVKEOBS31kduQ`214j*UsJ|B~+Pxr>{u2~#j%>L~3%^Z2En zKz)VDbfa3tZ`A7b$KruhOij=}FRkt=w3qqcK-_6o`_W>)UxqK8xiyk)TuyRzz17gf zIaua2(Z;jOY9?4TO3HEBvFjv7DSNG;-d%$GR$fdX=VnAcu)QWK=l369oTC{mBmw#j zk^uRn-=0#@o4fIXAZjMcQ7x3>5T=ry>MQa_3jC>Z44MYFF;|==y_Igd$4I{u&?4zh zXSUxUy)x;{6|D5%z#!nim^bN$njdmqahX!jwdc`w2Pg&^4IwDPwS71!!WDfK@Ovl# z2KMScbNGA>GpUd=yr&!(SzP|gJ`VVN^_?>m;i^79+^15QVLblAzBXJRm5?JmAMp@Z zCP)zs8v}$C-b7~y58gz3hX>w7cjp!5?Q;k@BZLZmOMS-}eoJ#_80AeW)b%pzsUJ;2HP+_*6*^QyjMQfpR7Y;bxL=5x-n7g zDR8ZOxUVXZJkaUKeWurhHd$NlB;Spqc_mc!{Pk!w{Zg8tmRp5NnXyW#XRRz$hiPjY-dcRxj(O;X7uQW?4ItBWY( zdH$?&Dger8C{>iG<}|}qqs4{pJ;SpIux|#iUJkrvRb4R{=}0JUxnssXl~JuG&$?yc*^I~HwKd`C+33aOACAL() zbV?J6=KJ%-t95d;a+#+zJxhO!r}RGSe9ojNVe2~@_Ek`q3U#Jl`^+m}sMPWF1di}QKUESWV8op$|`B%c~ zif0qTzI}T3Vi^-<4WwFlay6Q~S;f;qrbqt^ktSDF_*HZ2ggspe%cvYlak&1~Z5aWV zWtAYc_vA@V#?AMMlULDaF0@GzIz?}Ro`6)>M^004g>p+I5UYPd-&OFF{blTq&q4W7ZwOBgb~#r!|F$a_VF+}wTmie0 zL$9^B;D1dr0hD7}+70IcGCAP1pKu>4Ap#Mvz)(VsT`EGIU6qJwivpCkoj;7{!%-+g z?4=TfuiEX&yR;FC?wKe;*C=?RLlBXOvuiM8K+3L7x58lb6V{S@3yO$OJc{m43nR)~ zd5jLs@z9x8J3<{@Ci@1s9^cihT|FFQUzzdTS}&H5YkXMiNf^xf7KZY5mu@uri2;vw zShWfwjldQp^Wn^6tNjEMl%VU&1a=0racvZSSnu3+SF@G7(FCc7JGaXYVsBIx#h7Z$ zhJLNY?Ca8E?(53_Ll)r=?49`7K~X%i!Pky^JiMYOs5S&3nbi{`SaQ&Zm5gZ!;R6G5 z1jxp^i->B*vG`=|GDKiSPz|;N$*uph#bEJ>VPL+QPs%Q)WUhIXc{?H7KqT;iOBe+C z67eA%F_#qj5OI{E(e1Jk2HAr--;iOyjCTkDw_A2`17brAG<}D($ns)-n?JFH@P9Xt zKx6W04wYqse1)^11v3+?;LJPmlNPk?0-wmh1y1}w>^&iMa3FJV$CGhH8}MD_(;+)^ z)2=YDrD(4M7=FWGL~XP_sxYR1)Xx~eV?hQEAYR&Q14gxm?JAjoP>>}WcJ-fRiE9t= zY6i%;lG4&GlF@V|9pf?2q2tSnEW>w;t!+l2u6D%fo0hK z#0;PT;1DVRX*trklx(sWNIve9GVm_7wqQjQu4W z#zXZ+dWsOIH+^L9onYhvi3kO_*mp78m5G1cB;l*S=8>aF)!;%s`Je(BlE>M!(Vt5= zDSvBe9%Rl51y(^ZOb3vJJ#pN>D`3YQzj`kwwHG|8%J4%@J?mHD{DW2nY|!b_HR z8l&A<_+Dx|{V?b=#OrarHq@fN(`}Q$IpWQAD|wcd{P0Y|H<5|09pZEYoBQPSehQLM zY)yh)1!jVgwo$iS z!TME1IF+6~krx6`O3@)cHgex0OmMDoMcr~tQTUHae&a|kCpfoJ%v#~!tkaNM2twLW zntI}7+o|T`g{@1G+6fnbDIp1s;P7Af>seR?96YJ-qtYfjJj$f~53G6DA?;6l^-pt2 z{2o8yG32nU)e=$N%#GtTss3#eYS9(#U5%3qaM+~%jQ z75xnOWBgDdS#(>D+lk4DR`@mNaDtb&MA&}H%;=nFf}{HP*K=M#!YV@L-_^e|KW@Av zZsR+$$W+XWgp#n>c_KW^PLwcK%Lb%#o%Q+uy4xXYbm;LOD%2YF-^`Pe?T z%q+ZQLqmDoNX^*AU0skz10$M$tu->RrY>aD`xOeVafvzwh& z)DxgPH${TKUFJYJf7XSUVebA1I$Qsui9cDPEmKXt!%PdIXF^H53LsfEI+L;QA!)d` zmoMVMSMlWvnZ9v9s2GP}El4~#9zGDccqp_~o&PxGww?b6pja9$)|H&S$yDN6Ti>>N zii;`?Hljj=`+Ht%y2WF5k^ict;)po8J;&oMgD9?T>OZnuEpmKUs`C&BhX9O_4Q*R@ zZN0s{&&KBP0+3`8_Wsepn_Y~N$nSKf-n6_Lkm3Qg&QL&u8GpiC`TZgWR@OED z8&a2isvmWpo_S89!;=WB!k|e{>sw?O-m$~)8`YVUUG2X4PFrJ>Esefhe9Pm9+8a)# zhh+3b!axt5vIwa{>wi0=Eb!4!rLv_BeF6(OqXSQi=I#s3)x7i^HwFdzJh?K9S)jLE zq^ofa&X^OKTz$@CJm+#FMHqgE%3N)Xdh;n;w|5hI=9Meqh+D(aS<}ZEG7}Tqio?`@ zFF_dD@oMO(W)$*!oNwB*AIocs#`hZ}LB`UL?YGf~Tdr{L(uZky%`oV1 z0`QJ{x>ez^6QWuCn>?1Qaip2G$<_yt^N($EEl^zM8CtP#pLwj5coe!67==~V9v)G4 ze(oCjjpwwev(eI|oYnj2ex?K+BfGLI^WLPzXQRh{W$y?7raKn4z{DN<`pJd3zXJEh zn8kaz9?~XwvA?&6oiNe9qQKg9AW^nis@aQ2KtPNetK!Ql&#=V6M#B)J;>#h=Fvl=W z$DosUBau>cn&vtut5N>9df2`!s>=$l%uAafEdwoPBk77yy25@WwqtB1J%UV`btp`Wb)6PvJ>R4tGgR)^6t8d$b;s`N1O&?$Aq-O} zH|H&P-16;qnE400JSX7D6!2FF1VunN)kP}aIOPvvEh%;zT?c65OUCG8+K!;D+(z<& z2iLMfYL!6v*{ytShlzyN!l?x1^EC56DnjcqCZ#STtVm<(YgjDw#BH7eTvBX%Xph@ZR%P;EH!BniQ`&UiwSZQ2`UslU7qI=WYlF^vwzWMT} zE{MfE5=Zv_@XHlzO{(rPzTx!C%ZHJlM9#WQc~lV!CLb1I?53RWqX*-4M`18#j*|CBMzaTzVl`e*m(GQClUzPUC-it3b_B(hF z?XSU5UgWO;kt68w5)|<>j(7Jiig0h7zgp0y4A3o``AA+Atp)3v$60-xQ7TGTXg-gXX4s;IH~$`C((~ zi89TBOFJ6xrJInQ;QtyTOeZ9BZxKL2*$V%6BVzvlry+upl(^b|#>ARlt{&E!ZubAv zX(CS#*^GFxrDr;Wdw-Tc7Ml*3656;o5}S+LsDvGJK`$kq5ue7-fsAJ9OR1V9b2&jz z{n=3AMBy?0S93}8;3o0Uk#?6awLne(;stU z3?ZNP=*Ugs^FI`0lDUYfkzKz0qhJQI%iUcQvdjHlb+XfS-xYNzB7V)IJ>?#Ow90Poihe|NCa#snmq&*~>LU9&1^5dI z6?9s(sIn%1=(uU2F^UU=r?h0|dCq7Ndh=W&FF?*;!+DDoq?~eI+~yPBrI@ocyhLo- zRQ`C)bKWp0lA@Avd90c_eZ5kfQJV}HlISUnGCznjGiYH}R_*d=3Kb{?+WAfKhac#q zkdP_>&}F~MVgvALDE%p;rCgbPx&0Ia*s;v}Xddod*E+uleQ&k;#W(x=(T;O2_!HKq zm79 zDANKf9A0$ERYsIrrBqt{8Uk*7=33)mDbYI>cFvq7Gj%ZH@MGB!O&3@8{=ub<(EdTB zAKqW?zho`t0X1nmEs_2%jf%uv0GfMZQurW0gEmx$n`T*kEPZTlf7$ zhJUpzava;g=}-^K^W!X0(KArNP$BF{bI9?cE6r(e{ibrRTGi?Bi5QPVPlG6Z@u#*= zcI&=Dg{6K3Z%*4{+fKVG$Ks|t0`|kJKhsir6kus_sza1beUI=b0DpPTEf)TS@dsgb z9X|B}j)2oFD9gqG&p(1~I5x+|gvX)PRGKL+*M5m_??rI_{zA_nGP)FrKH<1xBP*tm zpdQiE6X@?Tv>C%;vmJ*w=%#s>cKXyWz;h9@u}EJpSzbGx_uUImK=&>aY^r;}cM~d! zW3&d1lHD>GQb81-={Ca1HY8b&P%_BF@1}u1>CMTWKb=r1qh(t^lg~V!3&qg6aV}*2 z%B;qqxL4{&gww?=>}9Dsjj5oy78Xj;jcrRrn%*DL(R5#zMXWm!k{i+!?!uO$-c;$5 zJ!NDh60O}=R`TV?fc;CBp9h5SenQS01PVCfiPd0<^ll;5RiWSPOc?}!O=Q$@*jTvi zw`OAcGn^|itK4EhrKz*{W3Y2p#9fytv7yL=sOeuAZz++AvA%(Tb@_*()~9esroqyj zG2)yrm4>5+`*vA}Qt@5RdgI|IFn;cTD#}HZ+h*=7QwFg$aud*HVg?a=tQ5Io^3fk{ zap#$DoaEtMmGy}xtrnV7PI%^gJ)Gd})w8+nOjXj$aba7Edb=}##q5of7`Awh!W(5J z#hoRk@*9@1vEGrzFUT~-y988u;AOcdu;=lFFBj)A4J z3vNa)w&N*;eW1M?>1-Cv$8DOpv%fzwB;O@{gZ5Y94JFgRPB@_5qydVRrm3d|0IW;Bvr}fy6Ue zsP=qGrd)dwTy-z@pwq-^4e+l3fNt#X143?jYH#|&JzBYnHFZw%c-CbL?*YxZF47Wv zq;{w7*fvDII&?Qj<9K|hD#Qe5i#eSn;O^wXUD!{h48wU!E>hOhSL6$0NtTWb8dGU6 z!^V#|*Gh#aw0qz7{RcN~`tUyNiUKvfvK|iBw)@{4S8y`iwBKg+kV+$?+i-Sez3VZLg>l; zd`S54kuy~^QDtE;h5kh?QgrK97?d;@{2#@r4@%!*0UhVGmkaQ=0|9FClNWQc4og^UY zJBB9&3te=qf0+M?AF*I(CzT{1=DVsVgdMR=fFIm%%kLBRoy`qGh-iASqev0}Ocm2H z4EwqxGFbcI;yyd~5Z|!Yn7G&a(4q0Ns-?{4ycr>udpepq%U1D%dZ=(hr)&J|2K#)` z+`s#Rs)LJRa4P`n(e3PX5Jid3s%a>GcOpHS<#i-(+^lZ;;zCb$*hn5uidRXQTD{ZM>2j|2J;AYrN2G`ze)uAWMbGX0LFaQBpDi<8`f;Omcuo z3h}anl|_ytotEy!Tg(o6XPn@NACyej>7PE5qSu#-KYUt7hmppjJtt$~!Lplbg~wL) z_YOK*z@8fQ34*hugou!~9(M^N_lt~9M@Pr6i+%x#JD?wDFG26*ohYeHb^A92T9rY% zzngKnVRf7C6s9#6+P<2+oZ|Hhh)zx^Y8MOF2610x$zG34UEQ4J{$(`MYg7%pfFM$i zz$JpuC4y-l3yIRL2MND97UH}j*OP>_{SAF? zjsbMEdqlYb2&R|7ewPdT3x|k=junTwq2iWhmi9@SUFIh?36&g<9UKrQ?~^Qqx?dAc zwT~R<4LNT|)&5otXIJMb9LW~B7ydWyF8`ZC*mQrv{JE*x6`M3aQZP*@Oz=mN$QzpS zTMZK3&XrU<+Pg^@+}n4g*B$bY!KYX>1nK&ZOz`Hg$|NCWy9*;`4Gsyr8yJqNE7vrz`!XY z^CCmA*BSc8t!BroRln($Kce`jLWxWVb=p6?CyT*8Zyo{7~_?!MOrraG8r^@YMT1>!tdX(RtL4yYcC; zMF^1*6cih``kJ}wPpM|ZRhPPuycNy|mUF&-Mv|*aLN;hI_81F0i*2bPfZ^>?uyfhwO4MR2q>#6FQ`vgcC?npD3 z>l68lKhnWfj&kVqK_4d8)kRZ)H!nEVK#!ldPK)_sLn0ieGd63t@@dcYf!$PF+GdeL z*L8hc-GlRshyCyULa66*-Huq^vaLSr-O7m)sB`Ep*WN9@B6jPA(z0aXj>+F754J9o zY=TdcXl+fe99(YkS4hh(2~IxskjdI})u5+HB#NMO86lxTB0y zf^!0Amk!harZy4K+OE@?x13X{c9@gs#f30FqcB^`I{pvJzA`8eCd)dwJ-EBOOK^90 z3;y8luECw)4#8am!QF#faCdhJ{*iZPc51(!$<7v4$PcLE^f~w3d%OGg`#-h>hS)80 z!AiAoddxKDZT(RjYNAVT?nlo;vd9r{2wJlCz4Q|Ei&l;95x4%GA|&!f=O)KE(CQ zto`!a^zI_MV&&e(=;TGKA~P2)6HW7DxD==1(C)owNz;7jYCHeM z+ghX$;B_Xt9?G6kpuuxj?_37KfZn}I6K-u|E?|GF-~NWP4e`fXUSB9Vg%>hGk!d<# zK=^UvNyMFlb(>Wv9C^5$fsA$}{1bDU`rA z&vN04Lf^2lH4YdV8`mTS?~nXfT!oRe$qXINzi`Rcs!(-YvZ$EkY!CBvS&MVkt`zZW zW%^FOP=!1UW7)c>EuL;))xo))??aXx=xyf-BfS~RpC)cuHWO!R5-5R2N2n*n66 zGgNIw*gV1~K7?`W0!nkt}wmV-sXi0m3=H&4c!~L)h0_3WL11 zYmIxXW1uVP#W+3p#j$*rdyIgxMU*cy9@D@@OY!D{k;3e&d#qVPT}Il@3kx*blfKz6 zu{E*pwi%;p+*(u&;-6QJXT<84Vro-C_8l$)I0ku2}Sr>rg zZoM{&4EF`_f{=I+7EAkO;hBD?cDr~@Zkd!@t>;P_fgFs z>>SM)4eeZPjXaEiPR`aQjFv_wjP{Opt`^27j*Pz#LaSJq*#ezi98J`mEv)}BOflSV zRu$=0IQK`0Jvx$@KPc!j*fd6jAo8arP}l?kGNMJ(C*beNF(+q}xCP zNr1?t*G3XxRW97*4R1KAp1RGoh!Z>{PRn-hYPp{+%p@RN9PcdO4N*kWWS{-xCR3T;O>9 z;hBK1BooT|+7bcjvPY(gV1z$a;+%QMfl*ar^xv&AfOcnwF=&j;6)pv+`kkDW1M~>W zvW+5_nj~U-1PDe_HY|oM{ZYuU*@2QprU|YE604U#%f53>n1HACu(8GS$&IMXja^&* zq?d_4JX6%Z$Iz`4aqYmkGqs-Blae~Z2~~Qa7;!OIAoqk{$~ex!VpjP+L%j;mj3lG! z8tO$=C_XEgU;doe~mBsKD0$0lTv&{s5cAYfGZ6b~a zFCSxSz>gl&Y8;L{s~d0mZsWM1_&G><<}aLw?uHCAc*BuVJ6sdI*@jaN!->xU*Yt>E}y=SYH<~aT4p(_v~JfQ%x=*&j?zY=eiJLoXmE(@p62gM zKc&tetcljsauRn)7QPpEgY}LOC@pR7jV{kS__a}!{LAV4Y)nCxWD$yEKIs%b)lDHw z>7^Sx{75n>uyAJ3B)e0lXMv(Ics}bF&X3A;^2TZlRd1b$%*gF6JsBE6v5=M+s==|t zs(hgZX%?AF{EdKXU3-V=Wmo^Of}0C+X#dq?KmYYe;DI)quDmC_l%B%z&RLJva!ws$ zK~%vSs!K*ICC}JuQdR@$Cl9%pUMY1wjgfOuqZ3gf4_H@{WdqQPRt^q!YGQ=^G}$z@ zF)FYA3(kZ=76P+N&2iE`BZx2J1aiFT9u+&a5fZ6`i@b9e=9^Q)q&@l35JYAtzaGOssQe5rn8^>8Fa(bG;hFuuuc(gDV?y4M{^`x+9W%&a@=& zD^6_At%@xu%!+^9R-8nJP-I|QUmltTdVM^$9H((IZ$Le;WOHG{;(vdymYDKZ>S$7F z=e=HV5lic5K;+6or}H%r%)8_(C^BS4)BWj|-t23}J+#yA7~V!4|q5j z071qfKt}FoC2^)WbdTtkAz|n-0_d6AONvItHEzH_PO!Mk_o?&J_w;R(pfK=KlY~o% z=|o{-wUP7~Hk@(}5s_}8@J?)q#gQBkh7;UOHCmGTWY0*rovDlpbHQ8PoTJ=wx=NBo z=Lkr%eR?Iaz~kdGt>g_tL6m?m(@LVH#zIQzQBI$dM> z+}EgZugw-yZwl@d-rbvsEr>cIt{ z3;2nzRiu>vWtg)H1xzq^GBu(2TP$4V2GvD8QFI%2?xADkdOrB&UfLfC24|wsDd^(1;WZF(>A$EwS?JVkmS&nsu)ze&%a*! zvjGl+co`=8hU?%ooMdvt*3RuowZ1$USTob}H1ecyMi{Ud)^Hs3oEQTT>Wyz!UGV-9 z+RFrO8NMWqV5`w9_BSLHj5^bGO)5`mlOVB6sPy8^23*Tnw)oN4a= zoHOqu5C11!fHKR1Sc7kk>PB@<>dUs=#o8{GO96{3LGXiu!&t)owVw~lk++dm46Agi z^Yr@_YP;*1fJe(dCAIs?g_h{zM7(bIPcPTJQm@Z1x42zas@Te|9)Z9M5v?=2q$nF!{N|YZ=c=l?jN_{@)5vd4)Ry)qU%lDZ>kzi&?v0ahs z#*=H?wU5pl*QWDBw>h_`kh@H6=q&aPVmx<DgxBlVKe^qS;kNeJ^~bT;uKVPDhiL80&0xLVQwVZ% zgO;ipajA+OxxWDt2j>Mt8DJ1>)>dU}V)dm~4bWqy4jF(?$Qoa+h$5&^h$~GuTA+Hg zF)4MCiL_9-a!Lnb91NO}sW7OO7MMD#nSYE|?Gh{uyh0=rg1Wf5a!0lZ@NYhXxRMyk zCTUgU>$ZksoS-SjS}n^a^#g4UY&IIzd9aYxc@+Eh{cGuSA0YgC9TogIR+c!k)Ik>_T(tw8cALGQG~v?IKD7}G4exJ!8_lRRwCUbJqR_j z+iv8%9dJHj z)hX5(Xg67O*D^8Gv|Z}MSHY^TEDdb5-=KQ59wD5kpR>Ef=tmftEVV!OnSWW`3}F~& zOBF!X(;+tQ=19J8+bzq91R*~bWVbbmbKU<>O@{dM2TTboE zY#v*t+RlxJJ%icFa13P{G!K5$>1Nq?Od7H5*2vO8{R9y;>s5mP0h>D@t!~?Fh!sHh zQC{&iVv9LKJDQa4?&3h>1uH>2dYy`}`xJP{gE9WXYdY~vvpm2!i&)#Wb=3&y*8d$_ zLM9}M`rp~2_(!(Hzes=tRq(dRw!y5l{42SYBSl*le&|0%AO^DV;Uz;4dChSD(P zmg;VGwFJZSoHx5fu<0q=zTCl?iu$}mOIM5WSV@{hokwTD%q!DodoB^Mf>E%d(<6<0 z7G|t+>a>v6*;?4mU{<)`sK#QfHj6jZr3U5$`3Mid8p6h6W9nn-e9`B#Wdd-)E$=sq zZUT$>%KYM{RDN-B6Kn9qOBH4Dldr zFyv&3>D{~E)7y9q&NZ`{3rk3=QQw|QzIu!dCo_I!tOTZ^ zZUWu` z_~3#CVT3)xevuf&HSofM!UmXALz@ek4wwAuhdEU42`Wgi#=a@Opq*60G8q`u@JrlY zt>=}Fe9U!oJI{7HvzpQG?DPd=3i!zlew4$cDv`&Cy?`WgT5pkI7?SJj>)~SaV&mx> z4Kxn-F0xHKcL8!YB+uyjguTp4F# zbKQO+h#+$D*Vbks=AD9VL{IY{Ow)^Q?b{MB5pLJ0I6H`;45 zYciGRv@MMl&Ow(>zgpZ3sGrt7v(5obJUhs%{Fdf;A zPTKB~7ui91GN5n2u(@I`m*7T6o|edoLZpIaXhOvFm=rV8s0>v;cLG)zRtv43#$08x zYNIRw0b(A_nWm{~BP1Y$?Wd}gSuqx*@*82yhE1IL(N@@xRRZe!;V(t3@nvjxr3bhn zmy#X_eo;T?@yfbrZMGqL3<`IKb^1f4`(;(36;CvQv6Lr~YRnbS^o=9>11149mdGko zQNHLOOVp==K+qctO1pC+xB)+Ob;S6@RZFncrl`iyqvrB)jcyP6-H{qEiNY9UA#*o7 z*iffsp{7W`AY0_6#_z?ku}<^acH#3HLz86zUYNlZ^gAVb+C@RJ%8YI6%Zq%X?KBS1 z@{*>sPwDj&&vr_Pt0r| zW~N`G6RbfwxL-J^dg;CaGg9p_eWuBH9fr-su3SKOkP^5z) z|LGS%!bGuLIFqqv3<%)W<#+TG~;-J2i{>FAbDoHvh2Ai~xETui>nRo*K(yVSTJ6 zltRTf=WzIdjM|RH>L8tg5S4Mz!*!a)f!rSy&evpYSk1n=bTU%}mC|AlnbOJ>M5}aT zL=!R7gwg-ub#||ey_5>lCAG^Kt#=8x8{Wp&GGWeCDgdKzV?7W`Q%^{=0RS*UAUjmdN zJlVls>tq#ye7A{m{@YzUW;tP zE>9s`$CRJKMrWkkax-wu2-n@Qp=_net}qoOjKHw=PEw3k*hZ*r+S+rpGvb8^Qj_gs zd)D>HEhKM~1)Uywd8W4-Mjo?oqH!-3&`R0pV{rjl>j^GM2|hNZMN4W`x%icAqDfPL~IwT+B7kiD~nhecc+jD^)}XO7v^J& zdTBqb7J5CkxyEE}j*3u9fGxy4`VG~A+GOztBs`l(ZmAQ%=*L@U%!Y2R{neE-^$LDj z%<%jgru1C;FP&fLB6O-gw*nML7V@(jy4Ks|J?@n|Wx~50(*2{eO*t#I(?qlMrtF|GYOj#t(0_iQkdi4IIPfH_1S;e6`(F`U7Y7lpaR!P{hmTzjLD5B_ zU)-RoA72IVaxTE&Y88!@qBy{AZ6c{&i^bFL!${iT^H{ zBsFafTs5@U5E*%Bm65{w==u6N9ARNWp(=Ia-~h-7_;y7`7c2yzeQG!>s`RlBz2E2R zyY5{r{+p?zX=7q5>W*Ib>R~IlR5J{in-`m~1se+@yp?W>f9I__STfCaGHaJbUJ|t{^cJODW`3P>oXtcSxp>uQ+{X% z`j8%upu*`mhV+!`Ch-W+knJyIKo%YiJ~E?&z&0zQDoY1hJPj+%O*Tl5Y8VrDunLfo zHiPJ>O}F02mL-A6;N&QGnxTaGItl`C9DZeRKA$$Ic|ue5(EFX}V!m@YGztdp5% zyr}PD1)YH9rMzhCf&)eNzXoN5)j@KX+Q{n~0afz1O>epJmmyF=Qh2)ug!|GgWmUy& z{M>bs4%?_Qryo`r5b~tn?Y&_cJ|FFeT}|>_V{Y@3%4+d#dLcuKDLRgBWpvyj*mY`g z?DAiv?Cv(VAqSMoGK#8USPgl(ps*7-HDj*5sP|fVgpxLqpr%-h^R2IX; z^-qjY*HK3vKw~Uc>$4XVL&Qa|qv5`2h+r>JtFPmVc7}Uonhy{f4UO$Ggl=y_7Dj=y zuBvNB&GQ?EV3#4@q7P;28zF9+*b77oaY%v(k~aO=Q-{uP!|V03<~Po-ozlL9T?0B* zqF0mj?y+aM9YV-2(mw0g-G69Ny(WSIfyHT}-1!*C==}syxpY`Q*~q0X`bybV%paU~ zbq7GkJ>Xfpri3IQY6)B`#3xIM&^$J$GH6EygQ$p~$&ID%q9S>cu!b^{;cLaBGQ8Fp zia3I46Vs}AgvXJ>{FVOx=&j&$RFXs=VfM0+fRrB_A>+pOxjh5&6GZ%TrH%L8=ZtX8 zwy@~+k!X)-mI5pK{RdJY{mn~mCgv`OsJ<2d zl*;FI(GOi;(R2{SU-ChZ`uB~=70n<`F!`x$nA4JMi%L)?3G??{I`ex;hoxG4ip z&CgGmOFd&9jnN9!T&{eOU>zEugs*kDh#V>3zJ!9A?Av4i!u%b|%md>4%-(C@T$sOw zGT8SX-iHrTj-A4Pee?HEIPYKoVGc z%KKmV`)+!ykW8;2Qt*0TeJ!(P*+zGUyOgr?WraI+HX2&cTH`SiiY3Vp^`TB>MR3H| z4}OW9xc&K)!JA`kFOVVk54W!%8{n-$-^sF&L(Ig~7Myyh%)Ih(eb!O7lm#rmPpVZ_ z?UUomESy&+kA0)IE?$CSKZ!3l{N!)Xgg{^}%2OBbZE6=f@?DIv*cDdw9ZZ>3W zBI-zIvTw4@Q`>==a(c)Dy?j#GQ;e(_l?#x|&Fs*uIZdeE-qe#POe~+9=A&^f4j%l(uR&s-IR7y4l(Afivo% z2}QUgqhs71uqt2%>Gc}_f>4>GI2ux)kF2-*SQ@mCu%DObyBj@@1`RBc6So$vj76*2Y#~>hw z{A>sPCZzZy@q- zF0iLamqf}%e(AE37ze%Fz)XqUM=AV<*|jaN<>ehjlRv`zZ^tG5#c(l^f5QAPFdj>o zkO37!8|*ZCA{~<*^R*V8l&i$b+ZKl^6d@vp*3Ii}Kv<3#AK-?40h#JlQG~{S1bfWS zOS51!^;F>=^|IUZS$pC)O`WK|NBl5o4_z@68@d(Mg^=2G;~CYpv6Ln1AZV8la!=@8 z&Dav<>Mj0sKU%!+BGzym=suLLM`zT%l{|{1YN{4p%MQS$5UQQJ3?Vr6NhI-LmUy42YJJWijE z9!_xMU4Qb?DcQQ=%6{#}JA(hF+2e=-j%}iz_@f9&{MA1?fJMw?ZnwBX!Y0Hgt!{Uo zT(VRe8=HkfGs#N(%ynlikza$4*D(s2y$s5Zs{KPt2vLfCYy7u@39E5tiG^peD)Jq@ zJWW~2K^&k}lpJwZ4TLUC>Q9ZtY!{sM-wStH5cj71zG&8eY|%0O$NKoECdSl0DaO=894pQo#>x|4{-E5pyZA|Hz@{`1#{78n zg(Z6#L+1d{CK( zPOmE_P7Fl4VS|o!UWT!GhPN49mF0p2uipE>jY^3 znBXXQ50auBa)$AC5H5tn@V|}qmt`yrQO}l>(8c&8d?sWNz8)CB@HNB^>v9QO6BWebbEKmu| z*iBovhcM+t?WcWiA%%G&$BVUB6b=ju3KEA2C1;c3B+30G92t}kdL;3}wN#WaQ_S0P zrz5c1yo6q8tEuw#9o|^FWD28WLCSI2Fa=GD5w+C&dBn2t;??}Iw};d%JYKIHtEaQ_ zbussVsPh~z7)K>v<-sQTkVH!crnEKfz}?Tda#qLL`VDhXnPcs$Q*yuwJPm836(XmF-rVfKumspL2WkJHnP>Nq-bEZ|px^*=fk{13Q=F&j$3d4Ib{1AbuAwr; zFlQ(XHVzA3)rjO4O6Uk4Bp1M;iG(y58GE&fW}DO29;+~gTsL+9++n~WHKSq7Fb>@z zQP_17Rl$zKF0rGm)VwT)P2u1M(xD8=z0ybI2z^$qWPoM~{*+dkHkEcWrXgSv-B@ac zGL88ACMoiXyHEU zzJi=Vv8b>cV$91evE=~ z2C%p9ZfS%|(R>NmWElg5Z{F-9p=29V5V9n&rahU=g;j5G_d_|S3#H0;72LwORf^)v zsDFzwu_}rYlX;3##fQTvH+lu@laRCnpANzUiE2z3NL1e(6HFz`wdb7rgcbQ*RPY^Q zn0PqKvF|ag@E$}K&IXK;1DMq?3(Ls9>14AROyQkDt0rYGDX%p6`k@aA|#J_9| z3sOK?NAfewG9;Ipr#{0cl`dA}uFT$gWmetAPrQ(tv=D5-%o-?3z+y9(TE&-vom*o| z{q@&@iH<hlTu&jecFX0fKF z_$cPWC1lp5Jtnp&w~35(?)b;SKERLBpXm4S$}^_$s|iJsdqig2r8JhV5L}fUl*lt< ziaiT|$}XF^WKlGx?FPwxwI`^*kFE;1>=s!%z}9B(bbCCN5Jr1$Khn4IPPE?%RJ`8k zsqXHseKt!}z`~q%*zqHaQp}UigK-H*Egdglkf{n?MP%z8=fSBK1XA@b3sv@js`hfQ zvG-#M{0<98V_2fc@1jrrV?Or3h6NWxYYU_Qh9l3d-8?@eB%}zWkT@iJ#%S9p3XeEs z^380#pg832bDr}{!Si(6&hSp(R(z)FOT~`r%T~awv5$t?`RuR(QDmGD>esT*(*>EM z#!XrS!mf~}u8_;TshcplJxhQ}qPHI^!yaJu{s2sf%Jt($qCHBBj zPF}85R5OU?sF;RW{1`8w0)WR0hyrA00!{$DIsj`xTbF_JxPp|4B6vg%NMLH5KTHAa zkRj+dZ0sg~%@0GUP*-XGY>mm|u8_X;rsF_h!2GNFp(5 z1$wkLyLn;?>-cYru(uo@$Y|Yx0$qgUSq1J62K;MYtfQk7=kpw&VHm(Y^Do;X5kX(g z*NXBp+J;vvKO2yb57FD`P1E=h`xhuqNaLuPIMy;q^7uPQd@N{WcjH;KmK@ecm(5-{ zhkzMqu*}Pcna4Q$vC$9SoUQYBm&FA0{GNCd*t#rtoDzqWA%{Pq;yLOEzSa?XhUh}v z%(#(NXGQV-29K1Snyu}2>sdg-9r z7Ur&~h;+x#!%j?`A<06!Q;qhHCEk@(yiV%|abl-L^y{cI^JK)MgOE`RMJK)q)PmmS)r3ts` zKLA~WY=E9|6?pxaT??fVVS|#r9bT#TwR)tT{AbKgwn1zMF#fEQ#506vi?>IATr?Iu z^bjtu*f+}VHD-x$_K>F@qd zQX+{A4kvs+!zqh;r4nB{*{ECt&EWlkP&%_fS1PlgYvp{Ux9jEg;ThCE1}xyv6IJ+_ zMOMT`j7Z8{GFRLR7qtc1ZkuO3_dN800_&fQL0Q&C=%~WQIvNu zgGA<^7!7TGloi^;!BBY+mI|?Q*zufY4i{@`i_h&d_~7uY3n5l&KNEXj?* zJJ%!JI;%S5Z2K9k3w#1@e65=F6M2A^JF&&^T9Wdb@f+N5LFKUAe&rtct1oSrp$mrg zj(E!-QUABQu74|a{}vYhrBNxiN`omO@g)paNzL`KSz0xI3Xaqir$dV~fE7YocEF#5 ze~Qhpl6;jWCei!_;+x0`(=82y(L0*Ph4{DHHuM0cZM$A_6(%=1td%^dP;ONBLA9?g zb&vs-HKIR?keq#g5n?}6clbn$xVxfIZ_&9&-WQGSR_RuW)EZHO7no4z#Z+v;LX}Bo z_!P8Sb3cDbg;%9uJkrcr8`N6ecmLF>@tK<)6e%747j*hXO{pIb?Ky;3%jHdR z&~QMZikO+OjFrq(%vRZ*y7NVdeEnO*9b63xn|i^SGU#kR*V4oYYsX)^V_`jxUw=1f zD*g!Pe@5c}X;(?_jhT1b_Z|4MI{WiVS+~7X`-X%d8bK^*hZq|4OSN5Z!#Bd(4#=l! zSlDh6fgD2gXp$`0OQum?)(NQ5`THwWK}4GXCxXJbb|O{b2BUzlySeGc*RyEi6V{`a zmYQSPizUau#3{KucDMA1HmzxIZTZ7VuW567#1_SZ?K#trFe_1PzRsGUA*hTH?}PQ! zuD_hm-b*Zlxm2MxWLAShtwQxozAf9iF(Rs+co5B6*>C>b%%Qex9VWoWU*x<}7Pjb* zFC}BmC3Yb?khK5gNy@2fAi((`cnrS)ZHcSwMGsQe&7)O)%X>l6%L!Q3FS^h^j z|Lv~HU+k1nP*G*!WM<>|7g51S`TY0kWIjfVjE~~0McOW}saB0?gu(lwimA}*qOgH5 zNj{6kZ2X4O8HqbKsc)76--xHH1N;)*^-=cNBk5P1&YRCOpUy}-ef_?IEclP)ERTbT zjJYCs0bHJHilqZlOOPpGl0reWZ-(#1R* zef{#nx%1Q;2fagX8Ed92iW$=5b#9Dk>R=5N5g|g>waT zM1%6!Fmt4HkKI#Avquh9qGNfr^}EJIPjk7l5ySI>3V;#$6Xl$VF>T7`|V`gK!<)O>& zC8~>S9tz7Et!%rael^+_;%_IhWmDdperL?@ZR&qtMgBRa{bmg-8#B|tAWfmVuFA4H z5+A6MKdEv~>_&rBRsnT`tfH(W3I3~=UA1Ii5JaL{W% z;a9QIC$s0_(oYN2WOOIY$8{{F1yf9SDk|Y6IHGC%6uoLoldVB)Xp@_>*K`;Tnfa@@%HeBD#36j*ZvDL8s&>F2bAxN^-Q#<`B#aa#1q@~)a zk`!-=mZ(}y3(~{ibv&W<3^Ok&5AAtvw>)OlqhoO6>ae z!(u(`@V91*od(CU(?mA0@6kal*=cf#=*3rT@f~?q$)5}SzImDNg_zKUYP-hE^gynQ z`7)(=hiCS8MU<1 zw+m{Y0`_*_w7&C*@l0?05F@x790?=eqq1o}#QfbyCz!e%&! z*@T<2BGF=R8XyEEgJz0vQ-jY9JJzU}J~!Ffep;8FdVH3qU*{^;8YdLG{5oZ4T}rB6 zZq_#sOWszwBRSX^b730Ez_Ixan?8fUq}Xfsh_OjR=O_h)O^~&P3hAxIO$HFdoC0(K z`>~0W!;{@eU134&QPR+x1dM~&6k3y!PxLoGzZ$0+rkc7V2_u>chmoKQ1HQ8I0*GTI z0BBAAW&r)5$ic1aNqG9;oDU- zK3!YxI0^S5z_WzW3j4C&`6@2fCV9JEweAM;g5}H|8|cQLqZacPRV^v&vZTv+%1!Q| zl^VKr7wO2A^%1%%gk{$U;F;+94Rn#>0h8D7G?<6^1XZshh+N;b0fqk@SFa@KaL;2? z3}wWrc-xPpHahfDAl7{}+Vjv3bAa8}Nmt9n?edh}vk6d%;Va4^K#)_u<*-eHuak4B zwoO}&y6Re;u*DBDZ`^p*a+0j$`KfA}=6(KL>dQA-TOrl~-YcILNm=>f)=5O9MF|p_ zFJem?EafKo3AwBuy0|O7S{}~NaKGbM+_RF1?t2HD0`5=o>wkB>zv9=w=pGct>B{sd zzF)HVBA?PA>&3iI(*mR0pV&eha72a za{rBI|AB7;+gg8}@aqT51v1f*Bn)ETohAeUidZQ{>j4E&Hc%a?Ch`KFy#=rqPfHU$J`m>!M`XEnrc~+Wl?ny-4TNHTPoO(xz%PC!O@{)=mg#%cA{R z*}0zZb2~H@4Ef4aRpJ!m$c(F>8+p^8yE$D>;8IvK;1OV&9d{XBG!Qu6s@1h{@`lV) zQ*wW3#v+4|#|}h9sbPP@wvsA{Mg4kF;Wkl2PD71^ksIdAOz|ozs<)$(!E(e(@kpYH z(M&AAY)FVocW|yb@5Y;WqpOg4$BTB`wnh8~`+%fMCuhbIKxQ|+uIQO|q*=l+>ddQ( zX{H79^FeU?uM@#11W!g{??$8Z-sJiBMkDmclI6dQ<{#C1?@6I)xlgnVPivx{y@X>$;aPDTA z01P9$_nSzR%3={sDD9MPh|fxT%Pf+YJ-}j{qRiC~ARG+}VL)BQx*`n%!jPimfq*k( zbbSyfkDB>8{M3hLA>@f)7B60Z9IqGQ($7B`NG!}LrzD&O20VsHP;UuO{WveWl5S_X zg?weigk)C)FUa5O zWq=$}EqW)#{2xj2A7&r_AjLn4@L%GUD3;MKYEQKzUk$3-B6HCI|0yQwA3`ju;eS6kaTeLh@sMYU4@eEHc9}YGibu zKm$&A)cMr;O)gl;wfHPQXBmiSDb(|#JJBf9OamUuH^{$)JasA99QQZ`lZ%G}g0)`W z#T&`~Rz1gqvo&P#ckzPB5J#e8m$O{4%uNsF2}K7auo%lr@n;!hy=A% z833awVGJ=DhUd1K;uoSjeAjNHkLnHnSNT@{VNaz?CGTKwtl!#o6s7pBU5~UQ(E^4s zXBOoYGp+F1e#O6OcTtn3SM+_EwEwtFe?E;MCHCLCHZJknGN4LGgKuW-6-#^ct?p8F zM6&^fDS8n(J%T7G;QF3gUy5zS+)Q*KI@N?wZYH4)M8xu|TxWbzxmY{j0IZ|F-W}~= zoZY@3_#qW?7Yr^iBJMQ+uTH&enQ+7E!!D3wnByiAjn=&$CoDl!bQvp_;TR&Z0k|V) zmg9g~Yoih_LrBX&)4>hER0I3$Y>esAk!~G5r-jOls{RFt3x4TK_Qp{q*3TcTcv=lr z?3MmMBy^5>@N*lQ72#))?*a$J^b2bxN9}7=Ic?Ob8JB+W;aHa4-$TlI4rwOj4r!(! z7b%r>nmK3?tzwH@F=ke=8HEeiKDK{at%X-9b~eq{TVsA9d^_;a($sDJRjX~;s{S0fYJUgSiqkcLIpS1Y8RK6Ho~OYwc@g$Q5S_!_N{`ka`My4|qa znN7UGnOFP_JK>9MbOCKtoY{^~A?8lD4qo3lN@kXkK!Yyc`$WX?J*Jw^Kul>kiW%7v z?2f-mM)i*LI{)`|o%-Xt{<-NcC8qMvDEwcCO>C6p>}K8@oK}Ml)|v63)QZrPUp^aY zf8z{{l{_Q{6)lw1=`lI3(2)qo=dvZg4sEjk5MBbEi^p}5k5m_<{ZZ}i!gQ~lgSC9M z^Uat318-<=&Qg}1KOr`atJ$PU$ztGH&T>Ljt!!l5BTGd72|8Flq!o0SDGwn*H4wWa}m`(0adr{P^DDu_}{^G`W1 z{z$r%j}LiuaKwS~=rUW>{FN_A_v97&k|d9x!EJlkRGBXoeb;)-;Wec#GG(R3l&jrD zx(R8CK?kEog~A30*#N&X2nK^lUQfo$QX4!-ab`GJa0TUkZTABxL5Qi*`L~{ zaWqD@kU}0KQU9SqPRNI(CTE@q7P9S0zl(S0HbhFVW$_@ICVn}@HK=lr*nsbL*~&iH zQO+$;Q{58z)%_0QV<_^z)GF;w1LbYQk?z#8yj2We@uxJSd&3#XS;rX)F>$2?r_Q9S zvG0yg!nSBTE*|Gr)bsPhtuokuduF=a`0RM}ohi_NEEAdk=-zTl>i??kl@fT=W;c%quJH>7gY@h6ZlLRoC@!n zfVLli$jWowc5OMgq~GcH41R&<3SknGXQI!PNcVKD9TKeJdr&?P*qup0{93Y}IIr=I z(TE^(@D*O;svVDojbc@Z`;za!edKaOf9mN2B}g+rFxaRK zM}g(GR;!Jm+8aZ>`fWS99P+7Y5)kU}i7 z3?nPD<+%RK0zE>fke^m<5>11}w}PZ`dW6h7Xs_`p=+^N|=%=(t;yIOD78CL26Ys&b zd9-=QOWP1a15&7Sv!;OWXpDtT3kKM1=NpEwaBdaS93y7Gz*gWv3IUq{*fzx zjw-*o@<09DCGM|nlaO^eo0(bjiuDHHwfD@8fR{QTLQho{w%uKN{-c}}s#JsUTT%dt z`vugm{5~nUa^aO;z%~ClpstnhtKInr*P2h_ak&Os^dT@aEnJ3Fr%$uEc?&671R}x139%B5Tgly$kpi~Si8EAZ%~!2;)Vhb)#Oa4E zh*hXfx%)Z|tpN%7?1?DdPi#ILWcL9)J2uLu=AyOx_4&R-P%CoAM41ejF@(~{>&-f3 z2sU0n?VuLjdFJ`?9+rRcY0HRvl}@V3mZqu$nJO~hR?Sx$2AS-%_60P|hZhj};*UwW z8ZG9ZF<;>-l4DRXoJR|Qpb;S+6$QEKLg+4!Ek>UIkFswHuXN4Ut=P70+eyW?ZQHh8 zv2EL^*tTsa6;^bzR`))8_d4BcKj&iR?!TD-m-&tHY7AeiIECN<^$B?;1upOU_(ug= ze=oJ-R(|EIdqCrUpTYL7_W+iT+ki!~!ccug$+S9&GkWVx`7NqJM=cPO>y#@j z)5ceR{RLzP9XIa?3@P9e3=S=5$UJlKC~79rJTaxtJrijyj`djcw7zppiFcl9s;+fv zyp1`?hA>5;kTG&#lX*5Gu0>>8AgQA7fN-IF;Yg$goRE%)VKRrYNx?y1fd;W?Fn>m3 z<6JI}!T68Q{H^7b z>hB&C7UZ`wwRJFeGPC}t)jmsURpE~aahwz&0VRIHQ1nQCKmC4d{#0u(IQjtMc#*_5 zBa^k+WPo_=dZ4UN0Nn}Lb2(jLkuq(KPof7`l!hFtTruUb%kON@tJ5nb-_P4yCO^Z} zOQDp2n2pkey)5Kw3OUCZ=(NoJkwll6P%W+8i~HN}y&vxDFj$W;TxO(w)eKyamjf`V z+O|Wn7-hoIW0y9$D7mT6|9poSq6D{I}1A_>O) zR3S{o##P-BIY}Bt_L$YgTH<7pH0a~Pk$$KR_n4-hQipAh|fZz8<_NF*Xx@P`$r?6c&1~JW!~e zM4vf?DRE{IRxT#X$u>(Cy^;N*YeEnSF_Tb@mlF9L-Y&}Tv!YVDiGvjT4{wQ+K3?SY z({-U`a?Tf2+7x9;8ab=oK1-|jApZ{UF-A&V>IW>5WIfF@)u==!mEzztM2}yFG*W00 zz%&z`D>uhZGPR0S^tt%!TgI+oAU2}HG;M_j!ybE z|CLX%{xL4o_Z>OpGcOSkQLr)p!ABp!29wQ(nU^1T6DNuB>iN*8+qr`RuVBBt) zO38sUwraQCb9i8RoHiPZ;iEP+R>N_=&BWBO)1&VnO~%`FiWvUarC9yXi}4=@`TyVd z{)exdScK8~9}f9J6-!5~LlmDS4Rd4T(P(o1fnrMg@Xq*K5@zJIAkrc8g_Q_L^WLMS zrp9D8ovJ7odoO|C;cvEq!xs` zAicRo_g!x(ubZ$c3}ZZ%sXXs^f1YHsalcK$zP(aCS%)#)nVC!Mco;Mm52bd$E>H0+ zYE4_|a`Y*Y}9stY1Sh}eR!G%muQRkPo2N%KRX@rFuAgfHG z37-)qZ&zojjgKF?m6>V%M#~ zVEz8ShL>+=s4K-!X+`e}m$YR@;nSl{LA&>64t8v82|@@8yI0qiB>fR zEAO@3Mi9uh0wr3f*c3{WD=C>KD?vxYMTgBmARvTywevFn) zX)~E^Fqr6ZO8hpF;`0{upsg8}$eFy>>@}=8ne;Q@q}hD^HJhX;j7v4)$&|&;Y^*|i z7gKzr*?OsmA6Ap~aA!_6Rw*|3Ist?P6a*xBl6^pkbBMo5xXJZ%g5D8v<8KTdwoe$& zu{8{p!#rh~Y-sceMUVtrWNi3;(%7u=>Cey0ogAx<;e=0#+zujU!RR7fhC{zEw$!g* zLQJ=wwb?;ug`1=;gjD3{er=`qkXV?_yhIK+^Gp}oV$azc_&v?txTJ)o^71|3|H(P= z&}g3AhOlPX+BaYRX?ZTlw7ZM>-4fR1@i{0SVa_wS%5!cuV#nYU2wzh%&c01Q2YZp3JWd z9pRaYK&7Rs(r8_axwtjTAuAh*xws)tT8>*F6jgW-w*h<4?NbcG`{6?74jaEwdSL|x z+-{JMU#WMhyTf-R?a|4)Cr-@v+Nnm5+8+L5gk$2lu)Dd}u){z{Af&ZpYz*S72&mjy z3a&ioqH-HQr!rVMr!$y|h*FWNYM_9EmZa7i0c9Q8ddUeJZDXz8o5N?WJFryR>X+C+ z!l`MU!Xx6hSh{j`&cB30f~qxCM5&XfJfhxJt~EST+UKuRw#UM^#6^L`wnRe=63>6g z=XP3dT73I!f_Xqm58nl6Rlaz}G?~}&K25fIXVY>k?lSczW`M#o?tt~!ghbq)oFd>6 z<*nbeWjCDj>E}@fk`nJSw?Iq7i$0_78}_TX)-(1~f}1gh?K_sQ#?T(2P0gtd$siGIdCoAjlfU%ZLUNsUF&*9hrE#Yq)+s)VCx~saVBHMb7CbmN@Wyis;JDh&{1%mPQI@TNBy}PCL+e0^ zp!S3(84ag&ejS?SrupvIO1%MJggoD!1dq!SEwgVS2^DjY#nlk2$exo?)jKt(dR>mo z_A9IV&z}Ogb9qXvX~_d!yJjmi1I8CI;#y%UQyfcY0}}eChE?J*I-GdLzu#gxnlQj2 zms2+eUE;=1G`roa$8)GWz&yi~$S1#zYALv*@!wk9F+s=0_ADNhpkp49E8MF)9N8o% zH%Pkq?Ux*GAYL6Zn{oUM(%#5ToG)ZUg+Jsi%G~wbKdM8@6dmpA9L6eyZE36NnE(Bo zqdQqYSwBYqBh#02>n;4Ul83>5dP0%2MeLgIuHH?O{L(pV^7m24S^BZpucxoS-oG~8 z3S(aKw*#}BC(*oqDIag**mdLB6cpCqANDx_i>iO%{ZSr`b3;yszpS(=@c&b7`D=On zw~XzdxZw)}2n+rhdmX55kES0N}mY|g2 zn=3R&;zMKikFNc(Ny4i0s5^jleI`xoH1q?5YkxS2>4SXuNjq67%WnWHZI|Qt;x+Th zd+Rtec>DADmh4-~tuS!Jcls5mXJpx_~C*g-MCdMP?c{ z9UE4SW+&_ha|rOjX3QkWNeRFLl6e}5inAr)m?UfS);rp31a|efF7Jok}DfJraG+l8Cq49vGsfcEAf+|!HLYDrrNj56v*i^7yMXaIZ zxH2pi7RQoCf^j92v(*Am>v0w=#?Mk}&FT`L4JcOVmgJWTKd}OB*GZKu#-R)s7DbEZ zsymleyN&jXdSi}+oE+PAO(oyo+vH4EdxHSfHLG6Qti)IaFr)W#uye;)JYqSbw}|1= zcT1~{FGkp$7#Ug4Yb498DWl4kiq?8#IY;+tLbws1yT=|mpebkrPqc-Sfi~qc(D9E5-kM;ei7kBee9ZY_7DV=5)1+G(o_+-K?tp*LrY4Nuh=Pe zO@&+9F3N<%jx-9{ZE}QsXO%%bK~M$sbrfN^E5?>#>l8iOp!@;No5R#86h%}>N8J@vWl8mt&1ocQ!Y zr5iMgk` zEy=>YblJ#PjbR?1beS{ms^drb^ZG#cn9AubQkS5ikm0thVw15%&$d7buy~Uv^JJKz z0G!17Jhc-xT3>zVs5Py34%D-rkr2b(?_hY>-ywV=_4HKIE8D`Z>dTeBr#jpjHa^dowv3~8{zmoU5Z*4IQw2KJ3DT0_snLRDO zO%;h4=KGUf$hOkPn*L(xT>qI){r62Y>Hh*={%E5AaYbY)Z7O`ZeLi55kl@wSZ2)O4Od-H|Dc;9KLs*Tdz)`?O047K6lm;cZ^V_9yUt7fNaXN z?p?e1Hsu7unn|?uCgV8Xz&RS~WV&2Cs_aNJ?298N%crjgx@fatu~9}(3^UD?Zrrj| z*n`@iRzD1rQxm~lPnn6hzT~bS>?x9c(0r@{72v;{sfI?Q=;~$T5X;ZlrVFkd$4}Cv zXWvn8!gDwvRgC*EM*n+dh2^e!H`RT!xy^h9WZFupZGW1N;#azD8?2x%SZSB&*+@(M zL#oJt-R(%zk>`R_o&IW);ZBpu=CP9*8ldXpjq6=jQHl2Sgl!x1zR7CoD=Qp9XJ!sv z66O{y3;hS{h?^bN&=zcgWx~y7tqMjzqll3g@xCF3IfklH)EIgK!_*IT4j-R;IJN zFVkn*TJ0xB<(i>nTC>IkcL7UXr>^F1D)ZZcg_~RNpJllnPqP&4%9)}%!aw2h2&)PG zbqI`5kWx_%L{gWPq4z=}#-F8x@px6^`e;yqTC4VeCP?j3T!Wq!dWj__T0>(~y|J~_R> z?8XWr5r-!5)9#rBe~frMCwY&jG1Yt~Ah9h*eAJ?K*>CYf_!$Dp=sh3Th3*|ag4!O( zm6*MM0YJL^>iJlE&sN8y_5m{O5K1&>!qq1fG*XmfE5TuIgvYlPV+vN7=LW@x@T`AD z&s*;Z91C&-Pj-_bKLl?)py4J)fduI0H}M-+<#!S46_O`qQ>?K@b1mhU{ia`jped{! zx2T$AF0kL1RXsL^d@A1|v*HiX3$5Y(L$MW<~!0%)eVKc-64d7HlY9s=3L6?M1VRmxgRNXW) z_c3BjLF_{J7j8rLk13;h(yP^9fAB6OA?ZC4L>r45B^z@TYZg~xN-h0L=FV(ktS`<; zE-y)?I2Jwp;JsSYz1^5Hz4qw2IQur$z$nGKh@BwXMwfHUnJH8UC}Ay;-;s<}Bc(?K zh>g3D#$6J zf}Y3P7}!kQSk0o6m0$6jEM>+rMzWPq#*9d5FD>ci zP0Z-C2pOxUvi321K0Lt2oI^#hde2Cvi4g~^$q5@O%OvC*jA0fqx&5SCN+wlm>$TKW zIcU9_uX2j(P9IBRnxeelWb|d>C^+C%X)2WwjWst{c)N3=nLerJFOhabcHJ4p1d7GR z`pSI2BF-y5NkF0GleV;+Y#6xvp$QKdK@tQ|EQ&%oq5VC@U6wRwx&BlXL8<*k7%R=ajH)DRj$>D^Sn9HT=^C~~d7-&*lx3s(N46w1eJVAJF%-!t@R zJF5Ztf&9n8*1d9{@%IABylTh6HUX_9xEa$nTYYz}!#!WQ*u4N^xnRNiKXHq=e1E=* zkI&rS8@PHVW(TpvyygQ1D6aL}zg0}nEi~WsuQcuc#`X;(M0XBfj}d6zVQMZ^pgS#?3c7Vu#n{$aEx2|j9)q}qU*SSCTHtz97x_F=0{eMfG1kvpAo-7?)3@K5fiIL zeM7V&SdpFq2Y~3Sjnaq*mPO)*7$;E!1485m6(@`lxBC{Ocn;i40nz-$bb9PW0eeDV z?s7l~+;jq4>WKwZLuUT!M{x7s5e`TJ*CAz>%|(O;+krm-v`gJl*8>RaC+{8nR__iN zsTZ)5^bI>0xfh&29bYgPK?@(9Xaw;Dcpn(lUtA8q$F)b>y*uUU@TI2MIRqEPi(#*Q zDyqBEB7GtV2Av_smj4@)rGFBBkLo@5cf3c{<@=moA4}<YP#N+(WvL**z5VP~Yt~bF@}gW(0~C zdBa9X%QAs!`$|p8E)2dqGZdE=r&mh!#Bkt_=!BHdP3V6>u?^Db0 z9}s4pxZPhQspg@~M5MkuVeo$RKB~b5Hj5@)?ph#VD}er#uC5iQ+&Wy(d=$jWY&s=8 zE8cKAWMg*#0z_bDa*4)ti@xfM^9L7TjDQ-r$q1fY$s9O3pbn~4A26{;#jI2BGdacb z?2bIz-$90z;RwXVbgCbSG(2Ac82Q*Y83Q$8x)hvn zwj31K71fIYT=RZQ6+&Znle-<|Z|Yns@qo~B-;p__EmL+QjiNBObO8lvBbeC_iuD2o zm443YVepog5UCUtbYYsZl;`3t8I$iv1CVHhwBVFv*{!))G(MH^+qZTpU$H|L3H?qg z@191C`^=+LD6qA3e&Mr!`L@P)waCqnR^>3cg%zeE(2eJeFymo1E9GvgPx27?=mudu zIbby5{P{f=i|XbII#bXQXWY)aa2@G>Bd943*OnRK4tBu9i@=rf;M^XJ2i4x7ZXN5M zx#s8GWhAJ#@pGeSRM0>!+BE-&Hpb1cfDf3!$xi3RJ7t+!gL;LrQTA~GBgL+$pHnT)eJlF*?X;*6;^(=#uj7hLYE^`zG` z`%RaryF>Dy`CZ7|V>M=MAQ5*|n7b*UKh=Lwu(fA4z&llc$KY)T;C-U8>&P6@Ebr?> zPYbH5$V_%6Us8?`kRvA7b~f4E;UfV2WH1N({Ij@ul%nwZd?8xQuYDu`?H~LrqW!n3 z@_#CB{{*&4%GQ6>HlJjx`cV^q1x-B!g3cCk$wIL>Km5e}xETS(UOzgkgmt5HlNM># zqQMjloDZQ{x)>&x%v~VHIZhYk_dT$WP~U!!DHBD3HAZVjcb99PV~*>mqZi+wpAb91 z-LOR1L;mzJlHg9xB|M!J{8tjL+sW{prfbEXI(^Ah3B;JVn8es!EK+93kcfna#Tf`L zvoy1wTNJXGC=6%tHF`1`ApCR&u!S(GtwZ5rzBP)hL$6`dq+F?+oTxa5M$h zp^A3vAmYfjve7h&Sk_s_^TmJmBPGMMBz791&Nov<J7I!aS<7_5MlQ0rGHk7F%T zlaO9;52BEBDM2LBPXefLC~0W9UdcZnrXQv!EKy&sBA1Pqt;b+du{VcJLPng`DpHUR zXQpT6kTg`2obiWwIoRp-)KygLcPRZdtdaW#$zcXT>mT$C$^z#oSwvx>)npW-h&3Eu z>2XbDQa8X;Dr4UzsC=d$ObDlHX=pRJqd`ggFlL!}#5oC)U{cD@RA=5_9-ey6&M;nz zEIiR@xPQS#dNze}p;Rl`YXj0Azyk?O$zHfq8U(;(0IylDGf`z9+^7L*d#)}2JBk0R<8Mn>g zT}HWp9(M5UnDXo$q8w`od2kiz=&3%4$r>sy3O-~CvoK4BMg0LYPN=ktqd3f_3z{t5`T88#ZjYByK zEM@-rCVK;indFB%c4VYI$}02iz3N%i#BYjqJG%twHU~ZtkK{vyZ_;Q-evj_{S0^Tq z&bm1&XV>Y23_%rgnh5ty>jS6C)nJ#=k7+$kZ!L)jL(SjKc`r$9aPh8fp$IR3@{^^+ zk3a0bBvW+gzq`$8{+@aGpHSr=1VnWFw9NW<_@SS{#4-Wq{)l1}iF3t+;;^V%{MeWX z6o>&pVXve*ZIKr&ZftQUib+snJof-@Cc{i$tngouU;naL*E4=OmAGFo}rfbbA_5+H3i0NYIw|OvmAg z0aL8%kwPNWu2(mgA++Rm)L%=IGG(UNR_e8;)Tdu)i4N6@yyoj+ z*1yS}Z}d@Z8@#Hjq-)`DrjWPF;G~q^fYwE=5&gkX?}t6#lzfS|D*xgV`)fV_U+gB* z&Q?z5c2?%b4*xj+|DI9cA_D4PIZ!Y3o;lFzQ0 zEZ7)`hkpNaV1aH}`NRUD3#iD~kOGkqQW!k$GoU-BUlNtxJ&*pvS&Z{Mza$jq6(cL{ z&!NaAoTsK~ZYCthTb78exUqnMsDPk=!0GGh8R;2n{Zs!m+M-8C6C{59Gv9uF{&Vy4 zzqkbCY|Z~CBp+0HbwyH!|41fXW!BEtAeLj%i(?jt*?}69)KJ7ErxD=S@T!$=KHW2E zF=8v~ebPj@eJ3|V5C+Hr(cc9ZeSw&o{T$t&xC%kF5`5`3oEl|wynZ*in%HQ2y2$bU zeB|;oX2%k8hL86vHxpdz#esbUzY(6New)n>(VheZtWef&T7onagBit;q!NbK4oCM! zsL&0+FN;WyCQpx7bsCQ)E|8Y<7VJA5DugNPmz_p(Pm}K$Vkjm7at%gFFuo z&>BMrA^~tTnpc8UDK~bMZ&(13R)%CwJ5^0uV-+F=vZB zLtuk!GpdnaU@D5T(nya_l=fD4Ff(>ImY9}|+&$>UJ^LJVaZzF%Rf3w8l5{D@EfaEt zE6gV=Uf{ZHE(ElG>y=F$8IW4GEdtNlD#OkbY*P=4bsh2EUuR+EXpp4c`VO0FAwzeh zo)Tv)3l zrTuWZ(8QYAYxJ@q%1@`|N!td<@@&n)>D^AVej|12FqzJHm+T26rvPBmpOgo5ym5nt z6lD2|q`&rcbXVKva}HQo`Q7J`q>9>D&&eoystRYFq0Bb|)-M%ZxgOpr4woW)HYsJw zX0VEP%pf)8#cWV`y9*wAC;X>bf!Ox+XX+zr+8qvh%1MjAXrwY^+Ef!oW#@u zWgsju@>d9V`IW@M`^fYW-Vm?!)x!OP+})zknkCHoSRoLc#8bmB5sw17w+HRm`UOHl z(NTBoAzTegg3$XZLpV;7;YDJD)K^G$VM9Pe)^CG?G`LChS+kRC0|>%4p&eLog+mB5 zqnQ&etc2(S3mzB_(0>c6fe{6X=7!edP6y9GClO44ccfVvr$-imBoz$beSz1=3$6tK zf)0d!Mc2`Di`y-NUvsODK3?0{9Vdt=>bda1hgS8d8_d6VZrAXEYNt~B~r(UB*Uzj+E1B>4X3CV zU6ldm8)a6U+V2=Z35!;hOK6Q)B`(n&XusmkMGWHvOhpCv|Y4w0^&73#LBDPUml&n8ndwaTxi%!zjo%; zK?joIrLUXxb6k@vu*J&DD^;M@ek|*?Z%DOK!FazwA2=NQ#G(@N)yo;}rWb%4{MH8{|a!V!IQPFGID7fC1V!3m1@S^@?*qr3%3}my0c5S_SJTP$u%-J>U`Q8JfiSwa2b zV1C=jx>+2Vu^GQv2(v{O7J()teEvL2_q%Q?k%kD`ClKRnLC5PAX_ubn7+J!o)MZXj{0f4`n=TiSXZVWiQp*n6rUEHH158xTxY4Md4l-aaY1;=oy z5RGD_#=g9%KxE8$Is@t=bX9Iz49?+!I4rW$dj`hnfP6W>3g%zVgZJ zFZKD^J1Of4OBvb0+21To*HS;Y>X}TYFy}|)fiTn^GZpbw3Dr&C^-~j_bPY!KE{SQ* z9|>KjL7FOyVHPJ!8bb08mG{LMboaQK<~gkAW@!|AiiPLuW}!5u)SI2^4Y)M;dsJ-8 zaygMsi~PrfNgzVYLEWp_Ml%FC$SMtZc`TA9v`9+UV)BZV*EdqKc~f~kYs=>>(~K!` zsf0fJAGs~soQhkPYfRQL6M1>ZqI}~mBXL@siZ8s;i;^<*oKs9e7jKJ1b!^Yw8?V?ThLy62H*(muKvBN~lITm0Drmy@Xh5 zz6LSqv#dfI5K)8JDy3GiPX@x1_#$bBa#tKeR@|%r^~6_AyyHZpQdmPnX|K6zP`eU@ zA;a(;u2}_bd(8NpEGysUsN?y}CbH?NX2F;kB^*clL0!`7kWBshti+ItxWxl1UdNya zry`jMLz6A-vruCh^~obfX`d>QwxdrW`P{`Q36NU?Q!w_&5YfnE6~(z}M|FTy6~)2R zZTr54Z@JRu>F3}tu~%~t^ASkaT@Vl$_WayHeY}3!d-AY68UG-^05W_^G5pe8h_24Z z`~YG`$ZV0E0B{|J+#O?(SfUC&tbUsimyjy<@*RfGK1*PV5SSCyS`Z*eOomcDCc#94 zshKdti+%R~aQb$7zk2=`Z&R`e~R(W)jY6X~DEQ`2yv>n__@esh6hOXP{ZqKJ?X#+b88qi|t$QOvhUtZj*{JkA4P?s1%U>lFj0 zNzZK~!qjFL2rcLSb;)NN^G2{O{wu>g+3RwfmV#a-*BMx5(b+BSU$hbtHr@}j)E6BV zw*z!LghttcZw)RrwgBs^j}YWUsLS$kPpH05dp({Gk-h< zb(hT3(NPx@!rt`m8%nypOQWto$>5W3EXf{o<9-rw_ATc?K zQM@x4H<@7g)oxmqfk+Hlc@m=EZsTQS6eMs$MTO|$w9G=KL&~!+N>7Ez86Dps)A5GO zSdQ`tm$9wlyk6vVSDaFPO>v)YA2k;t9+%%Z!cmdAgSz;=BDh_HI49r=buK6&SHq@V ziCUE$?oomIspoVry}P=^YIC&2p;@|Yy@m3{V%Dj1qF6tfr{X~Dg!kJdZB1GTS)QsD zigV46^!huFVWwZ1?Fv@q6nk_hskM5+4&up_FAEN3XXu(CS02r2bK0iNO&r-8=uZWO zaH(N9{Een>(;rv;%K0yDcuAieHf?G>N8g}D+8P(5FkiJnYz^DZVgA3 z-WW+n?L^ZSDY`a8i)-26q4ryTAZ5gL?1@WIgAixVr?&uS`;BvMI2Dg=!ZenJj%7lq z**50oNaxYVpH`&H5Bm+Ex2HLl_X)3^VACh3F^p2Hmsh7edEl)25TrAZkA-2GL{2@WXSAApxWZpRa)_I|7^AV)WaEo+X zrH9C;5WiYuZwGl+77mBn-ba4#U?YsVZ;CC|{>G8HG&HIcUF*NY^RZro)yyUuqp8WO z6?{b%U5Y1u(3OW4I9S8!rP#RZcZq~1@6EZX-8uz_u_fwn*b~EVkF`ux|1jmYGE%u~ z`|U^Co$!GduQK!U=M@D!y8|ZsHBN)~Z->hM+aZ1brLu_F$>^K>m6(ZE;BovT4~!>nLA~?L{2~w`$jnTE972f8XgKskiQ>fQrBX{InR|*Otr6n`7$(s?4*?p41cWcb zuAZFSYA>U$#nbb3>uU0{X8VhvbBmz~h&XQ=audsKqq)Z6e+U)}_A1NQZ;{k<39|ad zoGc0)IlOCrLZ*-T`kG~kD;}`Mz5sU^_mgT*h0=W@6j;PJQH()sDoJN-U(O+*$qM~7 z%PLXiSl*2gNoUUO;HO15#k_ED)hF3CK2llvnT+%*Rws<-XSw{S>_N30v37R2*aN?8 zztO;xC+C=QUM@1|Aa}5|eV|`kP1j>#=p}q*yUuGnsPbAem%3j0Rkml>g;Wxq34Hp- zfYVm*54MJn+@!~P_4HbKkh(nmsUc}4E9$*!7^sOM0RYmg)fxNkJ{s?fZVJ6NKV_DT$;xs0VVpsHyM>y`vMR{Zd8R`e3dzJpwr+#V@n_A&lfB;Ub7YhW zs`XW9=HkWLdl(y7x*04E)&L8lT&d~0YS$K+;pZ?M5yz;&n7IAZ=F!HvI_&v6-d_C$ z20lMl+Pnsfm`T5Gw(74K7US=>%(6cvI8LfdyWTI#&gfq#yT2|aAp1MgR@}yk-@!rO z{hxHLinbk=Dhlt|*88l**UPsuFl}m14^m1d>FB)_*j%Z~TG7K4oz#ttpOI)@YDQFd zC~`IcOGsA=R>%z&9X8hBPP>)FMFc&7hTSzy<)!bxQ2^CR1qcyE*ZCdAetaeI;)q|6 z=6Id$IpsS2e#LQo=KA^aqWz5>oDcqt9nv`wG6-d*tOpk)8_Ey<9Q*K2nRXi3Z;*2u zc9vd(6H|_2&khx)Xys&;U~WDLD~!Q5(Tq5uhw0g#Tz8@a2*6Ah1qy0*Re|LCh>ml1 zHve3T<4}TGlRS}@gJXb?$%_!hkLIAv#IY@5{zW_mweaGiQgJ|>UX#`ojZ~rm3cw6& zx?>hHP3TvWS=|Am6A7P=-3;t<4Cf$)D`sFid16FqLMGdBeXzv0gHZt=7xL@;)x>#b z%ifpMhy+V7s`=Hi`(1???q5kvGHu9yUB?Y*4LreC_T{FHa(2b_!M%428&Qf*p~qyI z>TJ4{pn9*~B3lSRx!dzaL(^PHS3uI0sAjp zNIdE|f3hGB$}sk|@Iu z)j``Q@}`K#my_<5Oq}YJqNeq~X14<6J2xbl5lCv@l3{lJ7@5@f+9ecZwpj5;#=_hc`+WxZ#XbuM{XLS88A4F!^UT51Y@C7XF6hRhHjun zyefa4^rJ;v5IvSApPleK+IrgX{ziW<(4cG{F?sX}$kntoOcC9;jo97-_KT8(*8zPEXtcMl``nety z2j3E&WLCJ3v^n-4o1H_pf?NQcU0`AXHKoC4A+Gm{zKGnPv1GcDzv+k#;V$J zYuyK1RsjH8;`X)sIK8g3d+n$3a|6L?*cky&%X{aNWAluGe$VSS!(P#K_y8Vac6LFp z?_I>CqXr>c2fA!?CwE#h^`a&ST(f|ysAsL__ZCKJ)shHCR0>FP_W|h!%5D63UihK* zH4&e58q;7%1(?e$tl1(gq#p7;L_%-^{A{cfM+(!T28U4qPvE9S8C)L<95auEOHCQb z@_}#AH$u-Ly#Pcpq!W+`ob*RvC#3ch{Y>Zb67*!?EPIp)Jweb*0azfoa$C2`wpnch zS^%%NJu#i1A(#4=b_fnL~Mvrh1iamD8J6zf__>xhZk3*~zoKT{B za$OqAmV+@yz6!fv{}QET)BVz*KTB=7REtwqvA!kOLXBYQ7_y`)Dj4-6LZgy;k3p-( z=Y-zYmS!pZdsj|xmihI2>JP&=J)q<^$ogRHRM!0x$uH;yV@qQ5JB|;IV*8ctq+(Ca zQi#^jVw0FG>Su>;cL6q%n}B#CAJq)TEQ(;d&KrSFof{0Y;1KZuwj?HWKl6d2GQ{=8 zw3v#`T907CJWi1;s@0$z^a0lfDVD^XoQJG3O6R$6nn6sm3Op?XFqtSZ)Vug_u5F(UocQ1FoZO4X1)Z_uL!zMexwwIDn0 zF;lX7=u<6tkdObbM{08#=EwLEq8ZNR$s@%$<4W95OA6!Kk8(fJ=l3cTc(ONqdfywc z8(xrEyk4iUZDyV_SFKQQr4cOpM4ix@&>~DN2Fsi1+OPynY6W*uwWAmhsn~Rm3=$AJ zzR4Hlr1~(DPCE0jOk9MfE#O$w+QA|v<$F$BuU z$M`NWuAr6RN2R@9J{o)WfiDX)-Aj~0on3@!j+@$BkE&fTpR>8S1?mX;*kwW_u*;?B zUV?8ALAng`iftRQm0B2jOP!)Fzy(8q?zLg-8QRZ&zWtu8x7?xCs*2HO9yu$fWv2;2 z%U(HfGelwg>j+&$1zNZ}VEm|!ZX0)Q1O^>H+9{_Aj9O#kC=o~PVx6B|az?Dgdlcdx zPAIvjE4~qMz8$a1W_=oV($- zw;>g$AvmVC@`a%7slaqMK#NDtfzs80UdNwp4rpsuMmP&<`Cr}wZ(%Nxl-E6%118Ut z-L{?%zixTQE}~(sV!OdULGG@Uoo{I-m{2F79x7=lD444+E1C;$XG@&NcOw;5Vv(b~ zlO*zc!xxp~@ng(|%3J)VBG5m1;QSwrP#YB7* z*StFiaGsC+-AvUSpL;YLF&#~S(MzJar}dE+ZO`R(3{648yjlCQrV}eL5(F16`(v*F z1WDvaL0MQaBBu6Y$DLswr&&G2B4&ujmx8qIvKxB3wN>n<+qoG zbSdYo2N>12L!PcJk)Ly>*g7xRA`A*DB=mQWK%tAVx*k|3s`~p<#oJl|`?sb_FANh$ zQcm`q-mqq8Pdorwxis=(mWSExeWicw-C1%|`1)5)c-r^){%NnjhcZ}R2mhK)_qQRO zzg7L@9E=5Rt?k5ZOl<$EaH{-Ug)`|t$(rwe`AWxc8-UZDjb48$o20Cups1iGpyYo@ zl3?Jk$h{ZJU#*+kzetpSZSENVuDMe%HZgWEwlOsRf4cwpuYqj*Uqkc?I=Ctys!NwW zw&#rY2?N;4<4IBWc6ORKV_4>{#?ld0Z%MSYwc3>Sc7UFdc_FfCz`z<4EA^Zop$)<-DVH+69CF_OFbGJz0SM+;QOYPL+1guWJ`fFiV0ffS;mTdKv<4iA0F zJP9_;;4wJ!wSA#gW);TEw8o8+dvHc~yS(*mU^UT)SFR5YL0zfbm}Gh^F%gz%n<8Yf zr{iwJQ5jXY@h08ZscnK&%=$0%!wbk zq>K_oU>aJ?WX%VRR1BM-*g!iz-6YN7oJG9=|2TL*!WQtfudbfqU%Gniza-fI?ZSZn zf_#eR)^=9L0_LVd#)jr!L+}5Kp3?q@8X%o6y<$NjZEi*dz`sUZwDWz|PweM{Uamym zOu!iHDyb%G2f-?Gc|gSTyEnyt6f~McAXASRry&lX%{!b9m(B~^!qX;?y4f0MB1X33 zW9Rg*?rZm{(bMbCw`V55&1VS_xgjFPJw!}T4@Fp97dwG~8nQ($>fUWfk5s;*EW~u! zlVTgZLbyGN32ZJ-N`0dV=A(jrk32IoK@S_D@e`26Fb$^JdX1UYE3 z5ot{_s5#=;LDK|BFO*58fIN-)FpYuH0|(Ez!KIflOR1mlP;DjR;gq?{81;I2T3)S` zt^n=vqJz(hL0o0VV~~ZCS-Z1Jmg4J|IPg#cEjV5_q(`AjVOGrJ!BBwG<_SUbByKq0 zpfRLV&uo+8#6*_Yd3slac{FIkD=#ma3n|@kPj#qBrX> zA5qvSaIscdH%PR7m{%B>95Gp}vNE%!B>x}I-YP1tHf<9Q1oy%{xVsbF-QBftcXxMp zcXxMpcMt9m2oMN5y#4m9neMNr*ZTj1I;ewvP*uC`Yd`m8XW#JfTe7-04*7ppG(9g8 zw@MBXPrdeYOH2G z!8URoU(grN(y_Ii9jERy1fJ%J=U*y4Z+Oitlhk5e%GATEF*ml>i&XWfs~3eHh~BEo zX5{SkZ2j1$Th|+4O~FHws&rZozF%yFsI{6iS_dm(R`v(SDoX20SV~t8XRzB~4Ao2X zuvk2k4896sc)@gF;hUbCu0iw$AZ4I75%w`_2tXoG+|Th1+QqHrs37$dg3B@78_4&| zhPc4lJEeUkhFLL6;>%S-GBF#5h0%;ttcy3`8l($BFA8+S7Q-3|5Z{Lylp?(BPe=M~ zNE8GT#hhi#fi}P^&6s5{7JP%MYr-*Nm$e5rNHT~zX#Nk{mSZxH=@82)L?gtJu;K+~ zkVPnja59f^ieWDD*fIC_@kZcjS814{9X$_c^jZ)Ys`yhv5B3eoRpwNQJ9REdGyp98 zj)<`*uU6&;0PAK97#~+RMf>SQw_CV*eK%|Zqe~C8DXQmc@l#x7H`5);8DALz&-x%m z?+rDqy1=jEimCFK!DyhpA3htTi5&Ljk8fwuM4TJM_oiOf_wbCuoO)J8wb&JO6;^Yq z3*dw59sIG`UQ{TXq8GY z-yqC5y$6#nCYls+q7OD>PEIh}l1EXwb-{B_T~$+W!;BiPd}@oB{i%ds5RQ2M%jWUd zZ|M0HwBIkhl}{h*qzjteWpx$PO3>q9FQawyw}*~58@DNkoaVOyDdbxbKWP&`^y)oa za$PA?>i?*&)^FZs>AS+(u6kCtZ+Cf479v1fq_$<#O1(X#-IGC^K;Aw%CBJBOD^hP? z)OTHsMDK|7i@}!|5#5qIO{sXPD>-vL2CG=JIM{HC?osL1s+6WK8nJMXx!rm8pWZuE zVQ{``SEl&sssr95!w9iIc5hg#9DkmCiqYwHT-#&X`q{B-3X^{mfI`O%Z6Dd~(@jy) zDHL!po~p%{j2#t9zm4bKlfJ5SCEtsgQ6RG1TC`DeA(`RE4LWexeWeBHsoShO?^n=l zzdqW!wx2LHaY&>Lf?=j`!N5b^9Z(3&QuH`l(j@`-?P(XZJm;X8Ux|-2|8y`<`W0 z`r45@E}(So5}Rc%*+0Eb9=31B ze6RUHzEq}v2cU=DFab10)X4`};o8p6H>IO8%R{YDEs*=(*)({#_)7pD7)>$OiOw0+5}w@@Wxjz{n1 zw>w&XKbOeMS#5{R-I$Gt#~Lq;2gT0-h1RnG*yCt0XYWxlr5Y9N&bI42UEWeo-m{_* z94}C*GAnP!EoZ}^NBKW99zo>uFbH z;axk4LRZi5h2hd5@VHCS&J-a+T%7&;c}MuT1?wQcZrhr7I5VWzxH@h^SfUEtIcz2_ zuF5u%Bgs*ms6TTytLslhEjOE2<|aRxxw0A__Be6ub}ydqo%%t~5Au!_sfapJ77H2& z8Nw#0%VTGt-G=8g+^&K%^Kzgg(^1|0_Usp5zpNru$jX5-j(+U*5?Shh z5poRI;AAKzL)I`@*#vhCvlhQdR~8d3MVj(HF44{qKK{OlT0c`oPieA@5@OYzGXy%$ zAg`sk;-G&<-1?hDv^4tBXc<$deaVD}HKU0seDZ)Uia~D@3W_Jv+*_oVMxZ4aqSNE{RlY!1u} zpdbCk5`2w znN>}3a4A2nqN>ji!sgy@aCp;UN~EKHc`s%eI&L!P0JdcD_>^FN&74qPQ{@wr`0%A_ zZBDiZdXAsYkiXSr57uFX&&oZ_G@gh`t%Iw#?5avmDyLuPv_j6p`72yA0?FLcN3Sy~ zjdfAOQfYd+i=Umf!VPURsoQ70Ky7p6G-rgGykLLbod=WB;bxy0**UgP*IDzLB>ma* zM~s3y;g5!!grYJih4TrZ3a|(W28)D3M=1l_gnouf8EAte3`p*qtOEtZ8UVvU7KSoL z0=9u|F=~L_)V9u?%RLZE6A6AZ!!&wB0)41l&U5QUP57dC|L? zpjbPUgGY9iaLqS1SRT+V$W4Pb$nNx4-O(;vqKlhmqc6s%eq6?FFueRLKjRHJFP()D zc!llac8S4U0b5rgjBSa#fnYDt2uNOOyGCH&TnD3X6aossRtHT<$NEf3Fhgpk;)3On zy)t&8`n|!#pz#SfWbFcW1p-2$@X4Ma`q`oJNuSXBTS?nMcm?bb`war1174te#BWrf zf8B5f)Qao(5e9fd_we742GFB;#qKf&jFMso%K@a3xutL118M=Ual2w*d}L4IL61D5 zH&Feq&^>ZDUjxXYd?as}19GKK6MpXg?Eb9{;|uSW{mpsC_Q;H_@??`4`n6iSF9=tt z6{L-j|13(`FJT?Ga!MhX^fUE^Gq>kG|J%t#lsocC+Ik7DYA9#O* z>FpjC(F(ZqDML`b%q{;6D$bJ#`rJP@svqE-O$}${{W@;Xz!ZL=Qc*yg(f}AoBA9Wc zNm~wAchCwJz`LO=%Lw9=kQh#i$kQAnhhohcs|{U5JSpEYWM%22UkCb~bHbIzb)jta zht)zwu7|ZksZ@Aj`T!+w1f+J5VG_EUmr+<;77>~QTxjy}X49Ao+VdJB9#bTq$RT7Z zl{tq`q+dsOM|7JNAHD%qIc$dC4MuHox6g;|)eVMu=?d+<0X+f+XuQM47B6JG-!kUH z9!J2CRTK=u_iP5Vh=c^iB%A`o9w@p7ip>;S%+XDKcfRT}-H||#kLow6C8J$a6mpp8 z_cj$?^dBb2v!mrPK+M1y<=H2cUs+`M@inhJr|y7XYv$KNW%;@XsjNW?M>~qRsR`#< ztqM!p!=ZcJtfJhc^6V;Yqqk$&sEDMRFN@wI#v+Wuww0qZY$6WQlkI|&knOf_^ECMY zLe@>MpQww2S7C^Dgq5Gd4X z$~yl+$`En$Ig&m3C7id_fW3&!cd&3HupFR)vE3v2n+e4w?{f;}O z5UGVY-<}Fbi8GoN?}5Si~$lF_j+FSF`^7 zU+rK~hnu%$=spz6JsfO06cN;{{Xk<|iosd*f#S++$P@I;q% zmJ+G97Q>P6C3E*3$+FD2GP?6yFq3$Gn#)&;;F7f*CXLAvrwbhCO6vU@Cnc-xXUT`pp#1n2_4?(l&Pqrai!{I7^j#E22x2g z5sFd!_^fN<+@6(abD4&ymNcVtDa#w(MyDIkq^Ao#sjz1kq49s*x&DcY9uU$W!j`L} zv@m`lz|ApE8No(N(Tv3v?U(dIuMG1K-y;j*Yl+OJlI3B0AmD>J_KL2V3*T;{`WMB&Q-f4frvP_)XA=(IsU{wM#&Mr zh*kXFS&Hk@3Zoo}4wlbV>42wfCZRqrKUvs0C824oWh2MmX1o_KUw@ERGRSv8y`Qz0 z@0_rhx~F1z#yE6ftM+?dKI!<+7xuM2zm4{vS{UN&vw8}Ahm$jms*}%+2$mC8=N+KT z8o&=Cm4R7BQf)Jl4r?3OYn(tUm0kZPPvn;M^ZRk$pFdzzcqWKG?@(C<^dLkzoN&D? z;iYfa2We+?5SawU+>(Y+3}*-3xWC*YA6a~u)3`z03x>IlZeF>W-UjY%GO3wviEnUv z-Edvh&u=-eoa=d740BA-c)F`9OH+w!$}?JxWgV@L2Bghj5A3g?xHW2S$xRvG535FU zvkYEs^{5W0$DT^75UoSn`(E*D`@Yc-uc2%|F&FV4{JpouO#Qg&`8*0);QiljjekE5 z{a166+JDkODC^kbs37r7);vzG)(CYbS?7V7B|7gf6`5nKC4t&&*^Q}X#wCOZ;&~oe z9j(Q8%Z{Od7V{B&ddSNK-EXP8IM9+{bjyZ5c5RVNviQGFgwp<*%66Qc%1-xe_I-U= zMEUYHEtP<4+zQr|ghH0hT`a(Zlmc>3#n3T00E}3z`grA6@)4`%EaYC99$iQz@_oTK zlk;UXJ;9`u^2 zszFbA-Nxk0?a5iEzI_EG)Nc!eobXaD8wX>@%{i7G{&ur5@MSs?KiY{hvqQtywEi)- zKby6!Q~28|!o-?U9m*DbSfoOv8hqFxTeNuf{LX-NG;m3<7aakzDdO`HVG2gh+t44m z8sbP0m@K=Bw1~87CpdVAEo;G1+`n)W5F~5rcAwXeNO}@Nx^^#)uyfoUFZ4LWIX-_- zbLOUT0VD3RBQeul%B4Fj*Sl#>j0c-2MzZA!q_wVPe*Q4!P2%yJXm|>69GgSLIgNJF zv@{jfYmGnMCECCpzC8nH5eE&(PZa2P1f>^3KNVEmh4TQ{70C6AN%Hge@uwKnfIz_j zvnm3YJ%IPeU?j-fFW?6a1f^#bwhLEFmF|jYmFWt>A=3?=ydfLZg2Nv~3vtEd)qk2B z;_R|4z){26F>RZP17b4H2NI$nkUQVt4>Aaa>|uK=GA9Sf@!Zd~-(#OuQZMFq5YvlQ zA~Ybci~nTfeFnTHwjFg}{VcZ&ylgEe8%gqveXuXSi?r1qR>bEXprt43thlsj;=Dz2 zRdPT{%xp_(AeNDK@2GaA3PyKs_@QXs9d0j0X(i2$^fLM*O?KWPE|Hay$E3Vw#ZNYg zJ6kcMjkBdjGCI53S*D?Bw4?NKvV~4-gE(sA8PRjuW%rj&^8$p-8`wJJTkm3gZ~uDG z=?7X&DGPy52y>@yh1OiA z*fcGRktpp2=~w#BeAn$_dk%(I4!EMTt+nc-$*$uWGoQL*UtWe{u5=OK|512C0da-; z5(egiNp=gE4zbZRVqgvt=Mv{tb@@@=ypAf^t2Tv%?ab)8T=9&>Q+2pdJ|dRx*= zfe51pd_W7ngh;RPreoO|b15MG^8RcGMXapG zaW});9s{nphz}{o~{H9kY+&I#M6>`#`+$*F|`3 z08*RzMhUY-Dl;)S$RKP>GfIXmExOERyJ&^HYO4?yv2rzLdz^WwYU;yzR}Z6FGj5}C zx~K-f{OnQ6l;AkiShh_v+e7}~AcF=oS4@3@mP*6(uMlQZev~orTY$pyJIx!W#`yT{bewcgq0=T#JtlqT`H_ zEq*z~3xXz-W8XoaaVi3?t;iBgc&)iab1(?ew<0JacLoon+tt-|S{~p*bV56hoy*i` z$eD&KvbV?2(MFlHV@25*vn^8C?9hRE^S71OX3Ql9M zDQs*~H5az%gta#0G!oY|4v)*s@gi8-6LejUBic7bKa*=i*LD8b;%Upe7H8N`c&u=4 z^&p6qHlLAXO{A|cyXO>MqQ=gqTi>Z@uiXs3-80-XQ+!5?YU{U+-GB~~hG1an8bUF4 zP1&WFH1TdSy>TV^IEtfyCf!`lFVJ!V7iZ*dAg{bQm^?Sm=V>iC8g?dJ2(zSH+iz8+ zHopvWS$+*ix0K`R@i*nNu0oh6>LQ@07Tq#iBTi;#M7EjcX~BlS_QJV_?$u@1xj$t% z>wdD1rCUwJzxa*qM(g#wQd-v3hk}sn zFvn?38nwrafCYV^eqa~+4lIh`^w1bH-(;Jhl&V#Zf)O0T4)OzdkUyPD>Eu<~o-Ro# z?q;0w{_17b#Rkn8?UZo@0XZkg8_m&o!qACD(z`(UU4JWf`K2&J?qON}dtcnK+8e97 z5eVHSb_AOtjn?6QL#vJqwbx){9G?4i*`r$_2! znuJ%va}#bpx1=)qcZ{MZl&GKkhRV0g_0@k0V;Oo%o*!?W;q@*BV!r8jh18DmKd#md zPa+QCzc?648}Jz2^!3l7^*@p1e|K!0t!A)n zJS*_sEC}_J@PKtw=>`Z2G(na_%5An)Q%;w#nD_e@=Rx7Wg1l4MBYWP;Um`I7oVskB z>htmT^#bJ>0m(Px;t@QeSu*gLIXaRMW(cLal1=_5h9c-qaNX>&VmuD89Lyoh>HJ6KyhtQz4qnm(>q*W#?gOVX_XRR6c$?B&; zknG|+4XVNGKU5O=(#+u4pJ;*lU(w>fN;)(@(c+)^YX2_jAQXi#fuCj&g<#8^>Y764 z`v0i#D2p3XT+LeATH?-Q8c`&mGcwgTG1WIPM!EyR0aHCoO21B5OUTI4G@c&ItM%7` z=qxkAMEta?lOuk`3DY;!KQ!Le--Q5hYr|c_bw$C^%>1D&hlAkXG@4IIslzmV^VjdLuvta-eXBD?4SfYv;y_Pg!y`2)+G>lt8qPSdOx zJ34{G*-briQQt>6nx5I~YsOyWp+$KSh%t%EhZV{A_f$=b_~e3$ z`~}t~oCOOSk>7I(BxBv{tdq=gp&v=ejVEI*2hLr`wZQZCJ?O@wK`YD6Wi zn0&Vs#UGs~25$3AwwB8Br`1fzjB};vSwyz+R1HQEl^lt~cC|OR%Ht%qGpmdlf7@s| zy0BeNNa3@9SXRamvGJ6~S=hIV10PyPmMaboMUfDSjA^7FCmP!IaG)RG-y$`5ri0O` z#dn>VQ(BKk#qy}|Hd`YQ?oJ=`AexGArTe6qzV8p3PvA*Hcg%FzPx6=(+j?udbQg|N zB5Bx2M^dPRg}_9S_UN;HDg909m&G zzBWTpu?x*3siu`Bju7NZws1QpE-Zt^NLy91Pd#|y(W#a(tgww$*vZ;a$d;DOUGk$y zg#AJr8@;&jp=T z+uS=9QgG@rZ^YeXycXRWNF4#HrY=JBc>k9t?CgatDc%)MTKi8ttA3G$XVS@;)*$atP@b!CzGa{!ZdjYeMtO z?re;*^n=kyY=@b#bx!1OrG}nnuzz|>VRJ~)^y_D?8J+{>1S(@RK z*r0U{P7#@8q~UP!hQ*OB`%w2d%ICQq!!?$XC-);@X~dNNz_;rPtQ7<6 z*V*LJ(|*7}wJl5=(#_A7SURBPq=Fpd@Zup+c=Ge6h(OK=HzjKKGsjs6YCQdFxEUxh zvQa;(h}OEGypVHLs>y9if*nA93%!Yy+=JZ!_4fh_lqgZ8z34D-GB?$gj;_XW$1KiB zTmE@_BZX0e&N+i_{jOACrf{WoaomASPfJTWX;?s}PY@-_WU#Weh7dru9B!04lf-S!H@xiUd3vr5jITCS!VOEajSiEOlCl97WnFN!TbFjp@SF zp|iAwU6cqAwQ9I5fDPAl2O50xCMZA!Qz?&0BSMbKY#;L%Tnu|7rm2tHML2z=RLLQhzUxy*lpqqJ^J zv0C@lqTaxa+Xv&X``mBDjE%B}UWwy4UWpH4)zg*A6n z+rquPh>Eni2#Qt}a8;LxiB@5v^=B2hW;W0bso`m;kie@0$Iq{dysPE*=W8NZ?>;w) ze(nA4Ms7{?4D`esF_G1UhOR$*VC--1Vf(9elN?%T*w}KFtj9MTw6(Lrn-}KM%>dKt zf6`^J>~&0cQOO`>p`MYt5tDO>(Na{%?Ck4q-&hh)*O@~+&m3rVn&hq!vIjQgMXhXq zFS*NxU4V;7r-|LCzp)^&sD+$UF&Ff{uP5sxrjm%F9eZGWGYrKBo&R9JkFMMaxH=NY`|trq?u}dibGqJ zdg5?)Ed8cH4u-4P^CkZ`v_LZXA}fxE5M*64GgHx~Z_VAJD$6Ntlqv^f0;9Qy8XfoXF_Jg6v1KN$uq8^+;@37gSfqAZu4T8usewc~bkPmBtNW=#6+ z?9Ih$2)}~xW$NULrS(^PgpD(%>q0Qj4bO{>&%XU|xh>I;>q{62xiCV3+vgb+B1Zpv z58}7hC^ZTLXdgom78XgpQY@~nTc1cMxVQG(a;qe2yRz|9< z54FSrwj*{~W4=d&~D4*K@OZ#?*BvYJRuJL`a_Sm1n|x`wyP;>DDdw$~mLR8D6({G0=DoV@W!pWht86KaJo ztvPX(UfDH5Ci`fuvDq>yk?UEj>D;!M`;BnbyHbY5OPk@8>Fhmd&3PPKviFB=5q?%< zDRp9axN^!sX0XM_u$c!E`K^8Ok0RoOF-7xQgEjQ+`zIyBdcUPqo`KVM(7tBU9ME_c zGC~*z{0#N18tQ@oW@Tkw&2Dq{+6l}is|HM!c$yhDQ-_$QSGNCh?%CDd?b%F<^TvO+ z+Lf{U&irP2r>&lej>kz&6WZ{b89+iC)O>8kb&V+77xAQ(!rsaM(8ndfQ`R#%%WEff zyWOXRRS}g6l%7aSu-6t<9-(HE9dlC|v1HOs1ti{vM6r{aQ4gj_st%OfG0~$NPK7cc zB*QW)5lY*)utWcXREu3R^<4it6Gb*8MCOEtavMXQK)nyq;x)OFIxan8wqF;`hd(Y% zIArRB;6CbPITF%68ok&sI~KIYn~W*!dA<{-!W^h})x)E)XTKJ7O)b17nMUr7pLS^% z>5%$?g}Lj4A3~F{C-o4V{#FqedRHXJ5eQ>nM&-puDc+Y~aXFt$j)^vEr}~*XXf&rX zrY_GIBZ6kThld8pQep&=7^V9TwS{bZBGo*YM&7 zfluZ18ZrnUL_^?2n1q?xMFC%=ph(+8I-=GpRZ=}W_Yn|gcGBmI+8mbzNf>)2B?-pB zIqoR10c9rSC9Y0<#TXrv_^Kq;TwmgR6P#jW#B&Fwv_ZGOj9}BO&=YEMOmBR>AH)#z z7IA^+MF~-n9xASvWc171YD+{j>Zf7MhEp=mG=hzT`D=_V*HcGe?NHNMkMNnFz##MT zni=FWn`C``FJQYd3VJfy6LXa$L6c@d^auk$#&h1rzjs@wm;@JoSgtdr*8HQ+=i85X z3MFcVPJ!x$es;dd@Td)nc{!!cq8>p-A!O&MSIEEC3*5t1Lgk;91)qQEuK4#=!GH9t z{Fk}#_aGQnkMu-cM*EO~N}s+Y(GUW~iy#CEmJ!q@UQQXdfR8xo1#Be2_(5?UK|23!^K z1mc+{8YRo+SkTPnIE&fP(+*Z3m3NDcDd}@oorVV0E-d-e-#g5mI+)ze1v`nW*JJz; zVnsU3m^Uc%D&fkIx;+V0k^0k0C?~V9(j1%cQi^Awp`y4Osw4G{e+o?F0)dm0x2Pac8gnHwRSoh;BMnAVlBkRv%f&50bWn* z3>T5>&g(pcqfbqY-K@$^W$f9Cu@~bb*5QxV_mm|wRh77^&hDd3IMDLsu~^vL)urN& zS&z!oj1;0E7CflRTdQQs8!-YeWEScCY#%z<UvLXd<@~M9A&w&ZOlus(fUt3WMQW5ru%&Aclld7^a1mC4;BSCd!mS=2Eb z@4imN8Jt<2PZ#s%@>gTu?zI}fm>d}$ zaAa9K|Du>U-i80!Ysxq?X@~VT2ZY4yWOP8^GjVp(oOq) zr;Gpz?$7c+e>u7TI<%wM$sGPBRrQgl#{->Kpa=DchWeNnulyB{XVjh>l6GgYlQguO zua`Hz*Efor2jm};*sE%H50nr1QQxRU$^h^-K@(9! z`Bhc>SOeSOIjRweVrBlsZE@+c{CdSZt zH%o%Z%W~Y`@xgo%Y*hQuuNr;CYej9dz5qLHO^Du!-O;<+S1zg}1~l7hwIUiHA#IB+ z5>uupC4|G7{my?uiMJS3+!M?3p|bXd4A=CJvrhQIDzJ zCGG(Qjd(c`AbQRqN4i6SGZ5m3$|0Ns7I*1bl`Mg>e7t5boKHsoI4;6avOdI*$^AcN z+_BN~C6ezD$F@{A?2Nt0>O(&ZWdxhrf5IhrljrvJ7yO{5u7PO|eU{}7hnJK>NWAU& zJ%@(nIBUW)yc3Q^HSd_ ze*mAfMJWiol!s4cg%(`oaLa-g8De<9U%$`-HHWUBqL5lHj|YX4D1Okfb25Lp5-`>* zkDAY7d@E&(b+Ly^#UNbRhhq!q|XT18n5`^!_e= z5*+_0@%P^!PyXLbh7i!f$=t-;=(96j;?v@9W#H&otro7gX^iQ^q^T%47tPrk@!dsH zGmmK&jh?O;C(xYT1c+~*kvtW*!j?Vw((`lE{m1IkG_i=niT6eB;q0T-f+7LslhV^I z$&W{#pD*36XSTk+x2%3PuV{Ysej{J#cIz5sWLldi5^7ANSCSSgFj%97bjo;a_Anv! z%DlT`1Nm5XMpIY;Dx%w^DB{sy0>vbZ{vq* zcH-X!h$Pyx3Q9S{9CYL1iuJ~EZb1;p*Cs(&3sIxmbQwr=RL9Di64VgYX`FMZPy*vG z7SW@1lPn_>R0*uHhEJE7*1IgEr5A#mE;E@>zXML4#KE2F3 z=nspkS!L0e8ufvIgJ400aa*;LG_X*#o9hYNsE!Sfe9aYB!lNWX}bCCub1_AcR zL{C)LWICO8z3&7ftP-=rkcbnKGxCk!LmwJD?PZjh5>_&2QOVJ^%ZO-mN!MlLpc}QI z1FvWA(Nt)sqb%!XVIs7P`ea00DS`u%?0>1HRA#BV_xN0gOQ%OO{j5-wcF#zHa~Gss zyFIF-%$yZgS}&lJ8&~X~ODa>I>n!XJkH2oqp~g1OBvSabvb>Ka8FB{W={QkdSQkeb zsci*ZL4XN`-{F?rEV7UXB>udv^6!^=S&FDo;+7y*6>IU#p=a?eWN+Q@h^+%23DRlW z%+a~d2uSKQE$}Y8idjN&sOV5ew)N0opy#|bAXg{7*$6FniQhdN8GNVeQH};6u9*26 znyRQ}oliH=Y9>#bDrGROTSPO!m|1!etVkw?rkptthl{$j43w>30adKQqO3Ua9)`6u zq~Y@XM@{gpxdpj5+=JYO-JEVt_W?)t*s(VFT5ef02XOeNzc?aC*STl*>XXHy#1La0 z-LpmmO&soSUS+TM>Rj4PssToUkcAa2Va-%5+`dltO?t9IJWJOuSGXOGlf3dPNoPxM zDD%9m2lq7LU_#gA(pAMYEp}URhh*P%oT!j$E6HqqEaUk-t^L>EiEOlFY>HvR+Sd~` zct|atS=re$g{1Q88EkHqPnQphcrFtr3{vF?E<&pF_l84#W2LO+DV;l#*FY=o&X$;C z^;VPub8lc0C$+E2dB5}Y?vP&qNCVNHlBaUQ1D6_F2C{NI`@ z^=+QEKY#?Cigc9f94*~b>IpQEXTHum-Z9;KDpEPoO+x~|ewZ(7yxjcAY)|5+^=a2K zr{OIWX4#_xWZE@{Mc+gs$kAH1!fED3aHRJKuhAF83Q*S=ASV*7@SECd07myTA>3PN!Z@Hq!X79h z)MGBzc2EN^L~vtqu;coo;W0;LK5I+8(T(UW!lN2CCHDIB9Rm%iNQ3>KdWtzkcNMEy6aTLT#`!ejHZH0YA7vbn+ z*&Io`d}wh0z}4b`zZf7Z4H+S8DaiHmlP9M2=N!VhkP?%6{btmq-OEhl!@YN%(kEHh z7!VWq!QxX>_9yY(tH`Rh_{OjBM)=7b18E>WX66`3`q~uNjZHban|L}tf7fNY); zN*0sO;V{H_XMBTT+dOF50aT z-4b};tSugd?K%%W-l`vHADnFiUM-2u*h6j)G_{KM3_lS*T_A|{^gkhJ-AaePG2D(D zh$Vbq-gYDMwo1f4oe4xZ!<~Sj29@08D0ZYdk2ZeNgX{rGkX1rm4fBgr(htp@aoP z7YKA0h|gRNnQug_>URtb%yxE6bKR z6tD$?zKOPUe@o)D@xPT1Q-qe8g`W$_)z8=eAMF22z#!sg1hjK9x3&5ElRL*v|E2E? zp0!>q;!}7Ly3*WYQGlwUwh7=8$lrKl!80V8N;0mv(xRjYfc@4NicC)^8Si9&lGFZ! zGu5D{hmRK|%YeUb79}|i7F0rzIfV?hGV6$NlB+pRqeDX3t3Bp$fkYDkfw->#RxWQ} z$I7#!fjjjeDUvCENS5p$^9yK)Cu{qzjew0{HE>g5I2^=)?a4J}*9Bfec7P$%wf-@5 z5Az_nA4ZPgi)LRRDHqAA)&A^tao04m z{abEl-V+3d-k|o7xWxH7JK&|%_Vhi2rb$YvHtY-h2io=t^6K98$kRV|!D3CNv7n!F zl7W9pO8&Dvh}JOir>E z0}Y`Uo`^(_t09G>rJOQl0W^eZ3cfFpm(-HXhny>MHWy-~9YdfC!Y`tw?Y8x3y)Sz7 zE@7@*t}&JxD34u#W41k>&E;eMkeYpe3@`n{5>CjD-c~;rJ#0f`Z&Z$>Vx!zS|8pda zKfktRun1DxL%i>(l4pxb{xgedLi$ePa{nq{d~8jiOy|lIdW5?giN52<^tXT#P>5K5gE@$it%-DnH2FGuDg(h;v zjld+<{c9D{Efs>92U8VL$f7FJp@OFh-V&g@D!G3dJG4(stgt;7&^RCr(KdjPrXmm` z1lY8rND+h;&sXO{iwh5XNFNr|FkdmGI6rAJpLceyB4$D^ttv4t7Ezu>ejJKsaR*B7 z%rE9ltR&6XVPoC51~02u$sEmX?n{bgjp$t2aSa$)%fq*x2HGPCV3%!yJg7VOOc`87 zi$%@VrG)71LyZF~a#!3aaF?7WV3e4uu!Y`N=Jdse<{;9$85`N1g+-U`D9mgvYb%rt zF*9=5MxUjVug&zh8H_E9KvscYf1l6K%QFn_CP-^*g02{!WtjuBJ!{g%JFl#!LLwDk zzgmsj*!}J>DvzGn>;doMK^KUzOsU7GQ9^N-eL+=ZdcV zL7*?!K4*~TKdQs##a<3QQ=dz89_?-0hOBz zDi>ob{G8?+O~q7sR0)XTviyob%e<{Jb>+45$sQDHQdUXxw1x76jBuCej7bf;gQfrA zLMZoL{tp*2PiLGE+Kc`|ev#5(I0yl!DaB2_F9WA3{ZA?+UP_4qQ3_THR%V`@AdQ*Y zSV}}{u=QhOl7!w^OGHd0^>>G>L#O=ON@<_ME4>@<0B0Yp4}r2bQdUz~-{x$lC7!nK zkL;PFZZ}GP;7q1d%+xB5<>5V{pY`Ny?B_%~^=FIiIiJJN`$~H*_VlJK7Afuu@Uj|P znXP^)8vr2d&)MPX8^Wxahi6_J*HD3CVD>x@#71kE?|deH+id#WXDT)Py8{bOXO)VX z`aO1+!POrlzke1Qcdf^{;I5vCmvwm=7z;heJmL3U`Sg> z5}T;paaLw-krVlLvMD1E&|0^?WwEE~aks~Ha$302$2|VlWTbnQY48(SZd13pZKBgp zzLE2B`u9kx(N=S~!)*B!*j3$AZO;6de#4j9@GxiP;5hHu%=@I%o3q-@eBQ!y+J5ah2Zh@Sw+)mf^n7Rc341A@98TzJw z(8={x84>o4IvQ#=AbwZc8)!e?_j_uK#lK|(a_x7^^^N@i0J#oPSPg={Pl71?nGV(8 zJP<@3%m)~zJ)@dF%rr#KYkpZifS_fB(2_|zEd8BIz#B1dc1BdazEYDblW z&y-@l8dJ=8i-@E)I9R2)M9}6=g0=ynT$;e5&HTZxRnZ=MVfFE7bja_x` z&ih`NZ$lZ+)XXeI9ddHkJM33i_4%0iR3liFa){{8XipZZ`-OV&^4gg2+-VG9#s^r7 zu8NB>q1=u#7vzSc3yU0a*{|i!Jpn2;wN6xG@}eR&MUo;l*_d<+mKgPJ!wHM*jH!je ziwXJisfn2ehLI{$QQlMM6z&OdiXsys(O0YC&g%EmTB@pu*Lzr^W)8(}~D1A2vTMIJEAUQWWWO-@C zbn}Nnn)~rT!^^M6?!tds$3CuUQVqA!INz3ZR9%A#afMz*L?;Qbd}pma6{GSn<6lz3 zbRGA>D-^@KuS(>U$?!N7V!9%3z<$QuyTm`H#) zXEe7Z4Bv{+vFPOP%6fb2J2wp{SNG5I;lkr0XL>6}POjp4)#+|yd|C-$XQ>@JN@tHCy*K~3{w0vDh@JHfru^aP`)FuI9_AE!(SE8Dg3}1M24}bY5Mx3% zl4U%s0f+x@<7iV7@mX2A9wfizQ^ykey%YO~?CEe5oprdL_|wtp{oiIn8GR7i;J^G4PdHKWN?_JQWTr_yy=lJ+# z!)X{hW!K_y8hx{(SXH-pQ#IMXUJRK>Ii*X}o6WSgbCb1^c|kw$BC46w8cac}F8jzX z1sQp36#CR0C$t%uz2#Aj3CBX)J5o{Fj+e&GFXwpr3;5e@=}qT5{u`u zkzFY}apm%Js$ulX0M#FBs#sL%DuIC05h9no{MS>lOkicJ2jSWRE6*t%y%6sP68!6N zUHFHj8K1DB+N@M)m_eSfY1UV9CI9=|b2We9?M0RJ%jqW?m)sUe)qa@fFd;dzs62tC zju?vv&!pXftI>}c3^AuR9$tDH3NOzy)8jr_F?a&va0@$nJvnTTcQ8t;{jmrNQD4fB zHcl=!OKk%=l*3jGqtB_UU{vm2=Y!a3jPV|woH&!{E^eXk zI+{huhr=*>0@^oqMFdxG`n*(U+-Iy=gh$hpd~CghtfGtgzyHffZvGT0FZ`fC?g{>r zmE!%k^v8cG{{P8+IJ=v>y8Tb=BQ3?=7DE_y?C;iaPNxHhAM@%-M%mfXqBqy{1XV^XCdO4i|LW$Z|$aY}t=8A6!(p=;<>XT4`ncjKtT ziD!Rzw)s-~jK?D`%i3}BsQ)hGY_^n8wN!Z*)+h9!+&zie1cN0-b1l0S;?@vH7M3mi&IK-?G-x-lDec(!a}ntu+ze7vSz&@0)o?rD4DEZX4c-*9 z8zgn4v>WL4+7sK1bTiuefs^N&%blWShPH9Y<{3nFU~Wr9E-i`FMVh!Ir%WCN?VhZ2 zb!np+ZQ`E0&5qK~?b6j;5>mt}Y{qS;fP8shObo)yfNc%yY_g~=0yuh?={@8zOx!V~ z?W2zHSLLTKar8vulsK7VoEAy#ED`4T_tfiJ{pg}iL|3W-8|nJub9r2taP{q>tI30z z0lQ=_sdiu;9<&5;F=A^7)=Vilaq_TH(I#8WBda{}Z+qZwr)}5N?G;9i?N-KU!-Ew> zF6V@b$XSf3amxS`hqXV^X^vVHns4!UJlk_Df5~@~HuJ+JU9)|$+m!~E4gXP^zrI&3 zyZCUBmLCC{e{av}|9}6c{$(d;w7h)rC9&Q)1vLz6FPG&_I1|NY_s2B|c;uH*J6qP{ zX-Mk`Yg#Ikm8!<^bt`+SrRa!hxC*x)m30cNJE!GU@MtQ(zyVaK=fQjgNA!IC6p)9u5to`R+|tz@J_1WgtXBE&Zr)ydgoSBO8+osAC<$=Y-`cp>dsIe@(?KCGzsw(&=36%bGm<~4t_ z`^P4O-gX9Mp$)UA&y1Y6D%t(=SWX0qYT^}mt!`0L1o7Ja^*qaDFOf(pe5`%!*97bt zO@Ax)p$i1Y9z&k71?W{;?6>%!8~10xZ%{hutzCA5I+Vi6Y8A4K|c6?WN4fvUB@7Mw9O@c*c{g zOrqMfo#-qaavrQvybn(qp7nXlgKYasgOOFcN+Mf(mq>{A%!DYHaaC)J+Kri)X^kVx z+Uh{5Hbt@6adLo_xw%>(#-Q9Od_nDJGC#DT14QLcQY&g;oQ7NSF$3v~WK<;qs!LNX zDW{`a*w@p2v1z_-;`O|#lNI$q0HU5M09;QAxtczP#?l6I4J(?@gb&X`xJW&)Au%$= z+9R+~olh~Ix>_9CAl8ugg%FpWNQ_YxmPsQrHfEplQsH)dHc5V1e1_265}wg0I!a5| z7xkjqE9z)9GTKyXh1!s#Xj>p!I@G}A!t(2;Ookh3)to8MrfZrr7u8D&&CK|D>iv-- zSiz-H|Hdqovs1`v40bLr#L=Tc3ePK!9GY*|ZltW-sW?;BX@%_PQuAZww9%kH!JMhm z5EE;O(V`n*&!oG^^*P3164qISWm#Po(;ybD$=Cc z%vjERv=6h-Ef#hwk^d0Aizni2@37T`iRT&hx4`KA)yCPNLOo6=WmsGJ7H|DKn zpsT;MhW^6k0J09kT!3MQ4e$0lJOmBx3+1Xl&2;Jfulryf%_w^q0mSN>i5<)z`7*_MQx#u>ZZ!^E@=mLI!a2Oe{|)oba_$`a>;D@rkL#- zriW(K*45*CDb6n=wC4zX!F}pCx>fVuv$4-Ts*)m`6%G`71u9>r^mYX9%YM#Qjj0}! z)|PbLV42wTHQCu6Uk3+Xsy}B3AgZxeK3OZXM4FGg2c=)cQwFJ)KmKN z9MGgcO3AM{D#C9#ifZuX(56R8f-Q$tLm0d-QXGqh4S_vlmE4#j&SpS<$l9YdDh`T@ zJ1;UHNWUT?|8HT;v6#2 z?@sFMj+(YNfVyL`I?{aFC$wTcU9R=%9W0%-Mpd24W6eRHpDAy4p{Mr*=y%5s{-6hE znBN-1`P{(4&F#;fGdSbKEYS-xkc6T%K2gVXYj4w$#G=UHn&03)j&^dzAEJ{!;l^N~ z|0W|NiB6E3cTx+E_aPs4k{E>W1&^Fi4BrCa;Cv;5gIYq#1!;_vHRT$GRkiVAlTBZEZW;J!^b8l~L2EI-a9|> z-QRd(_S;79pUdpcjZWD=aYj=5vT2(_jUZBnjtdY`9cp{-+peFBnhVfw~KI8Giy`x#L1;_`!n-7IOjzu4c?wc9rS` z)^E3J(6?V`yqG@=R76_8

      p22i-#-TY` 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 R)>>r-c7^~)XKy0|0|1^2MXCS* diff --git a/frontend/src/main/webapp/app/.svn/text-base/bcprov-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/bcprov-jdk15on-1.49.jar.svn-base deleted file mode 100644 index e1d4bb31ce19fd4608d2c8489891daddbbeebc90..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2476362 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 z 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
      0xlFX+VQcUvPF^$saxKDt?{L!^PXP)DSY^6 z{rS;&oc;xPj;+^K!H@mz({S{70lQ(BY>Vm@F7mtBp?gfGcgFShL3rhs^Udbu?frGK z+N7&dcIO$~e{0R&FY1{LL6ZZp&UJ|{XnY;X^lqMZ@remBg5W6;;Q}fIARsh`_Q!Au?%jjh z_a+Tu^$QrlEY5w3oAuyz)0y?8xdX3Pel~jP1Y}965sxOng4MBgC zg)57C`Wf)nxm}c6N-ZfVA-A{uQC&c|bxEOrP)NQ@S`kH7)nI^K54GsYhrT zZYQ}Xu}j;yOdrx&@N_to^wm)}HRNvVDq8~#uggaLykeYkjGrbiid&=@vT8hK2fP|L zNMhwWuntJ|dDp&ReOUYE(eWzSz|d`&cK_6m{z80xfJkS7B@m

      GDp4iy2+p5b3Im~Ws*_mKj{*$S;bgZjmKKL{gp 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

      ;ovSBx}8NIaSb^}9r=+n?l{Q>Ke z=I>E0ACx|tvgBET%6jGdn0zBU^COog|_ z-eaKkZkr@&ycED3=W#pi4Ip#dwy}r!>CWqx6yL8nJu#YZw1V1pK(`r~a;u+!?2<0n zR;6|?+L>Hc#h(eD916Dd_ zf^3t6h11*7%iaaD6+%emOc_f~rC$97VTR6Nbt~-JEC~AmsvyS7C zlnBA-5P7z%Hf&9gF1dWIUwLR}YO+ML%^XtMkR=*4s?x{B%q@?~vx)6rP62PFo?7@1 z

      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%0Ad>Sj?(sih5 zqs(L(kOA^}Nn_mG#>_cJlYz1_SM6q?p$NAuM}sfgUmG|X>5i-=Z>P-PVxiO(-=_>5 zEhr1YlnSZ0^QOL}0~z7w?b(RtReSI;gvymocbG;W$BI7QbuuQT+6duu&^YBy#m*$> zMGV%bELMl3bwa51;Q333BCG(JOp7f5YCSYVHt0l_1{a+Rg+SM^qYQbGqDU9QL2iv( zsSoz32uV<=57b=PLNVxtl<%6OFR5>kk{7Jh-gD|-!pi?EE9UC-xT!T3&mQ$B=A>>N zY5=W_I*D1tQPBZ+mM1vaDsR(>_z0mG4jdkPPdpFZ3;65-OvELT&n_?($T3IH{P&5A zLm0XS_mJ2{FT*x|r3q=po0uYU{02xZ zMc&E;iF-0GEJYF|a8*?+Ubp48* zdN9CBXa*|QJz52=z&J8J@o=-S-wL*e;w+So^HKEsJxe%;uGVS#6w!1nY`?Y~x^6p2 zy1hT2z;XRhyhFU7&^p8&2XiqX{o%dZ2WIF@k|aH{3QF%NKxD`T2INq$%G_)FaFHN6 zz6^qzBdCIUnzZd;s_*-Pv@6gdz2U8C;v@7NMYflj>MN+QR)+G7PCzY`JgUvB*OPLu z=Q3EhQ&g&ZTzlH}zk@heTNOiF-c6hZ;1eeCqz_^}=}CYD z4~x(%p$CCWrVZoB*hr+EazSVz*=1&wHYN&)*)bIEBP?RWvq~B7(?s5F2Qy}e8=!nA zj4Vx(AIdU1a7zCKoLk*d4#0iJ1SO!|A(38%lbS6JW+k``U%a`-c|^NR1pePf@UNy{@|Bd#;e@-EFU_!C^bh~3Fsi^=xNY`sP@CV*25?8r-Gnj5o@6Zca&T?^Nu`O z$#=+X+k!0oCphk_Sa*Njr1ZgVgVfxh=b{^`flc=h=WyFd&N=8rGoei|I6#jOm_cbe z`;e{`aN*e5rZi2EJ%o+-*Ch^4Sx7X<{%-6N1Z$LA_ID!+f zT>RCgnxBKZvOy-dlW>kp19qb+$7&*)a6z$Nwz5$VEwtkhof07v_wVN$wcL z-M{g?ItL*zW;!{>138&ZuR1if{ra&M`?(x-ZN21k3&!TVO{ISOc_JwSni7SI&yFbQ zRB{|ER~?iVwfROmhFJ!}h&meHJ0TczxQGVRr4zw_|Vp9Pm2?N~i{v0hxl)bA$NV znPo%eP+3!L>1De5biCE^CAwD8D=gu9`zizSTF3AfP04LurORAF9P~}kzhMu}K4Esu zSAG}!BSrP+zNd_VqtRb|&;Mqr5|y46)|FvDfI!gjMEP@K!b2FiaiO^oG75U5(p#8B z{N@0qG**#?6_X+e6^=LWUSQY-K0v&47%DH4Qj6XTGf!|9Pq@{%Sp_&vx4SlNx|?6O zx`w+y-#E4co;!%Eewww-*W3~W5M{@gY#QwnKh|5Qw*7>x-BYJu+sd2bF;+ zl`w3pJT3D|7WiJzGTxezSIp*Wq!3#9%P8_EuEtABz6Ox&T|%rftENt@l9ZT46J8X0-60d@rR63pFrt$=P&nkM3yjfeY}qFlosQsp`d$*iaDz#*aw$kmnx&D~AF#9hK&I z#bg!v@-7>PKMd4!gU5(BvoqSUCX>e3l#~k+D$atah>*mJ>x;4LBENggn`2NGj#1^P z<(-eb{%1Dqw za=~2vz(7O3fnO79@I$c!)`sge)l=XT1XUNx2qfJDmJDn0C4)mrZ5b8BC=$}_s|Zm^ zIUeW;VQ>`@WI;}Gl@UZi)_@(1^R@HD#f>QNT^9v!`7YF>MXVi6xr2Qxt(zLkh)~9> zcf}B^r!U1D;bx$UbPd9deEp3A5St$X)}+>E4-Nqb-1P@e6Fy+udDic4tlXC(jV$iH zFu#7Um!4DN)gWZ?2dz3!83vxnNJedN#OuR@LK0Zv4}M3Ctyp;OO`;niaGeYPchwbt zj0Xfx)0`W-9UCw|d%+zUK^L*^#z>5U?YwSyZWG2(t_`(~{sDcs=cph+Zg6DX8QC6T zxHB0t;=0HmhzQS6+p~6{;{klasyJ(+bP2^uyj93jXif&O0uAf9nb32Sb}n2O`4Fi(_-q z0g-STW6wB#y`-r+4sM1UFK?c-bt(=TgKwYbym17xq0mW^)!(*^JnVp{p}VY5OVYQ& zy@fDGhFxbyekPdoYiEZ$q((zXCPkxB21ah_}%qHw<#8 z1Ra{6zuM0goF8BlUNdfTNd3(7SH63}t1~VA!gt1Bg4F+<@96%V@BZfm{8v?#Q#1!e zA1`XaujS*HZ?(7In8OC+*2enyuLIe7jo-n+N3B;ZfvSyn0XP#-g(TX^xQ)BqIBi_M z;ROZA^?l@Uy^e4w1M6j!hR3zihjI>}S;(ZQCy%Tw3F|bLc}~eI5hs+J;#5U8nIQd= zRDCP<{$45;HKug_F^5sV-`92)Dlv?N@p*}C3f=$==m)JwpKikwRcduz_mM`^9)R6u z%9pdf+-zuxou>-oMzlmnWN0V{PCYa zSWe=Lx`zEIl1k^!6V||K#6}ETARWk};3vZd9K?pe?ifUMDwGm;KHD#T`oZ}l$sg3m zmq$FKk`xiKZG2+t((`uGfQNf~3xKgki1u`A3k}bM5I;8x+);W&GgOeA|75BARtv6O z`|$t|ELeO1PLD;pYBSsw5jfh9Mv2GK3yo>x%Qbx#t8`cNUJ?G~JHG?B?j#1}D?Y3_ zGkdvpKn0dP(_^S?ZfHbk1$eyd)r80fq2g&~HnuTm+u_m%=ck=2ZA?>4zkeX-2tP!) zn`%v?I(1G6Ql&WOp|d9%JVduaLcs5BFAZ(PK(Y2K2{ds_28Gy9^1<|YfTqe@DV-3b z(0h>WrWIqFFZoM^(l1?qr(x9mH^5HOR0l#CK%E`+BhEe-;aiHV;|*2oiLG|igioPM;(d>9V<3H0UoNjY=0{L2h`u$Kkr zO~Uhb5Hx$h!J1hyEif)M<0{Lc+u_P(y4B_L=`mU08^e>TPIi*6L5ZIWjP1@eZ;X>`Q}Y`Bw6bMqP)7go}zrdb#%C zn2lIVPwd7g;CGncFt=puQbsCC+%&4|Sr_c^AR4oYY0X-<>V{eY<8H+X>Z_i*NSylY zjrMK}NL!|}zriZ<0w}Bt6V@Cpq<6#lyG|1;6}wI+3XW8gO_Ed%z3U~}Nu*6OH(0&6 z_gtMV+AUEmuM8j1^e+|9sn+Xp;!?_cDa*D;7l&ka52feWH^`ZK9I{u5?$ib!z?l5< zkTt6TcCp7F!`G?u*v84+7A9-1lS;QLQ;}tmw$!@{a#Z}Pa%6ga{rQ09fCV6^$y*5Z zNKqCR8v@3KuOW5nN_a@pr0v$pLR<6>re^i|m?BFVTBc3KG8(PZ+eR6Zxv4!~*xa+> z-DaO1Bv>mg(Wwb?@gkt1;F!_VQQ4U~MvjO^&dDtmkEH6w%#Vl0(Y1RZ+pB}<{Fd=i z1&IAAQjBgv($6gCEUg7;qm~H<+NX}Bm~Cps>T_4cCPZ|1jDZwV!g~fZS*rG|UbZO1 zV1y2yCg+W?AicTNm+UIW^x1SO)s^D7`8)s}d!J(%PYdZXeb3R|1Q4%qBT`;R(n7Oq zuD_@8u(M6lnq&&&^;t@8KSQ$|wyGMds&sFRct&1p2P^WttVcZRxjfo^Z{D|;Q@NTR zlY7RvORp_?3(5ER&2yjMeF~ON=bWxlF|R|6W)M)jKbhB+Q}axKtPjOr7oMO$4GK-=YGCCsA+yiD&k%|z@AY=2zrw=WhjDzpCUPzfeG&q z!ic@JY{QVL*`v_yToUggaxY%=76p-MfFb6WLNCgXC2A+s>Zj-B08`zF-@)*pDI2tI z>s}R{Hb|k{W!+=AZj@Sw8z9z=4vq6I5*MfLF~75iiP*6m8ox_gF*^|uh8#aLGlIyonltrTQNs&p)NB|Wy=C@?c4tdjIR_hqx#Y*OOiX)P z+rHx%EoR{-<5Sp>IAbQUssIOoK=DshF%-BZH1+sXdA;O}kglI_0*Ix)jJb^IcWb}7 zVQ)H7EI9$QjE<>p@d^PhvZkLu7+$tzeJ|nBpCDj=licBWM#%iNvM~&%HE&<%YVaSM zqkq=d$l9A(nK_y{|5JYysh}nE)gk4Yw_dHY;^Q4y%hLc@ZQ7If8c5;25Qv8mhDW$F zYu8#Qx}dz24t*zk1Mu1f(7_eo8!qP=b2ZUWCon( z%k+CuwhQ_YBPiv@SwvkyM(Z-n1TqcjTK>>$*&Gy-ZGCS8q3vo#JHFj7-{W3j7`biy zp7$y0Oa2kOuHCOEde4K-6wD$d0r-=$)TL{A^#t5x{jm~Tpu-5b(w^tb+#kDGQA>jr zDkxCkY=vHHy5dradu1xtmTM{os?#c*Wzv2f!oLnFq5c25Z z!@3k-qwds-ypcIe=}<(gmM297XL|idaJK4o;gz%IF17++x+FKQ$`XqFLC5UuncZA4xJfRx$C91PALv2Bn*rIx-szYf(?WBY; zd|7-a+k{rGcz{GA*YpSCGerlwcR;>ua}kaewtgbn0)32eszQVTEFq{wnO%YpzN9b~ zgASG%oh^bdx>;H|Pnmhev3-!2uorYzft+Sz={=o%ky7Hwc%AB`-hz^BR3CyzKoWs_ zFos>a@w=Eu;EIO`3CCtDfbsdzc_tuO!Vo6M)rH_I7j`N9G!o9aqJrR!!ps==6(h3_ z%ba)3Mt6Vj@u4YXMTW2Z&-BM8<)0;&3PyHLM%D&KgmnKz0P+76B9BfE&=EGwB=F`Y z&#*hIvuqH-=9RUDfHlY$ir47tN6V{JX<3qxcYt$Xrgkq)4-2cPg7-Lazxl-WJwI1pWT4WQqi@wF8;rx4bY?`zBiLPS z*=2yO{|)@gZXBxO=wqvuYD%Bw8clq(WcWSm-p1`E0ig>$0IM9!(d+f+Wc~^Qa`anJ zqr+319qE=!pv{k6r6TBr*wOG zQ2Rl?SqImrB$d$-_nJ> ze5v*^DEptnCh?j;OMLv^j^TEZYwe|esF?%MfYFyO@DPl@*azMO32zy1LFq!znx=Nk zegybGBOKyg-j`~$9xDg6Y_q(I9f*XI1f40?wQ&6wYAwJSkzc9&80mW}I6=fFjwOwE zm844a9W(^-`MX&tU^*jC_!WBwe~i69E1dr;_Wl`p${H#NDu^E-fCxdkxT1+^=7I|` zws00yd8Vy`Qc${sYk-T+U`R~JGS@(WtUxTL zscPh1rv*nOZCQ8#5+amqC@)x#&4jJe#|UROR~}K!b&qJ26tm32Sri0GvG`l9J|Pv( z;<*I=Ds)KE#~4RCEW$aJgKU0J%WRiCnJ@fRMoO?DMwn5_U<|xaEu0zj<*k_iG$2>V zX^$ZvP6&o&z0IONmX|OuC{a{|GGk}(s8Gp}&uo^WF4vo&=wx>)02xir0I+P523#PV z@zqH`jO26X9lTW2;~0$9FZiGnB!D!9}j@@lG(}lt4t8m2}bq527BpWodR8o?L>4rbwVnEJT+P_J9N3T0&vy%ndp<*_%;qNeaFX+v*jb?UBp^pAT|r3 zg)mi;Jm~>+gUPpG{|#l^dt!(%i_x-(vKsv3Llc$5?t1GkViW6-kpvl)@#0+LDf9H7!LQZ zQ8Di?@ZQBHu?8_V8X69n!<>i;r(K2QNxg?Zcct&C2AMxQ*SJ%XxzRLcNcw?;BS2R} zNaJcD2I-aSOZ&XhFs@4=(LfCoa&&~*pvOvv4CpV7=7)p_@X(CD)J0yFYGCJEC`Ryn7SfWbX(@&ZI)^==~q zyjZDngTdXY9NG{wS%-vagjl8$@O>HXd^LDD3npZ~zX0HYI%-9x+T@|TR1ke^-qlCd zXj=U)D~V}v3X_~aCm;M_+OhNgJ?@d^T&(Zp9m%6A9!E6K|E)*LlVAsgdv_&@kXg~m>g z!oJjQBI1-$y;vbk<%;m8U+HT}m* zzgWVw{`NPYj9x^lEsIwj`qR47@`TQ}f}8B0(-l;sf&9ODnbLbfx6~ZvF4KAT&L7bZ zaw01T2*Y(+zn#1Tn3THPm@s5DFsPH|#|#AlqXk}2i@VxDEE-o)1U`~|YWmS~J<22* zjTo=$*Sp%+Y^3og4%V_wURMv|?%;9iF)+g6Ff7QkQNKl8;uh9%1R8NCCntTjY>VG( zH9MS$ueFYw9lWr*r6O)g5n%i36DY4qC3ZTNJV3j8F+4Fw=KaXzLs}u-Q%mgAaBP?( zbr-g;ei&lH*d4=df)D>GOk=g9ALBB6*&bRAL|97Ka960UGFUh3tYQE`lWmoq^}23k z_pQ)%?1(lbKVV3Xdofv7(KT|~2_~K?#V8kS{&DVHKRti;$mW(A-bW+0d8pUGPAb-o zWo;l$f81^rL~^YgnYZ!Sti}4wau5!q zaji=2kkY;6BpcLA6WP3zCUP_B$GXG{&E>#Wv_6JMwALY@MCwn1V6xwpY;ebG5O2c2 zE=M^|s=P#$^X#gHKL2jzRote-u!4O176$#NZV2@syCMITjsCTd7bz=M21tiG{tM&6 z;{(qX2<63A&iG<1@JBCC27=>hFsVWL1*tm|3U-e`s8DaBe|Zcnf85!HCje}|v}x5M z-)LfD|H)2?TY7Z`9wWAS(S*G8JkwdmOr15ELOaV#LE90Q&l9=k+!ASn#KjC^b*AxDC?q}roPYLY^BR+GoE zKr1HcKf5pKKH4N4w!2u3(d?W@tPUw-ChzW2o4-sYh);`L>Y=h*% zppH2-xyWsmHh6{ET;LpaTMuoB#WGqJC+`92cW%3X`#_?H`bZpb2XUNO{sXWYa|}mB z^MPBk8&3dRUw_gwM&a~GdbcdPo(u2zZ&x+!-Ps<@fz<4wG*s*Pk-aTJl*Kr0TnRH5 z5CrfaV!Mc01F0n;uEI&;0fnsoK7Yp@cY`_67eEyMBS0kh-{S6{*ihxw2k~p3LfScQ zbpqPP-*WZXKPP=NAViVeuRu!IV%Zun4lzv-yWe;P(%N|cG9b8dMg3)_>A|YKfr&e& zfq5yX?uT%GlM+QE&B^N~&f0V_&z%k_m&wtkHQ*?Gtiu)8qes_chQl;hz2@7tgu*xG zoosE&`#pA=tuvuyAej=pqmj+1^LX4~^cN07#bAB9EqVTTtaq#qx%$Nh$#yA!mZinb z`K?AOaz1=7q<$qYUEDPKAjomz0&Y%A)$bLP>KJ*CQOBhf0gK?9b#u-$Ut<*j1S#CE zE21lWbqpZ>&g?5#7qPMyEtnSrdq@uSm3CIH_#;bLbCU@cDWV!`91Q%LYW>jIV+Fzf zpwa8XpIb>e0l*!XIYu7D`8dU>@gNHE8%cBZf(3Jor#122-0A}%QqAx|?TcoH_3m-V z5L9h$?HFX>ASF)5r$HQK0v1Sdx4OW=vk+CjJ z71|Olk#DNVEc8ngViy!HQV+mhnI5adp+ zqSa0+IxOIyMqJiWQ=hpY2&LtO%O`AS@olcf+KmNJn~o5cOy>b5pPE&cAUTXkN!E~= zhG5`YW9+ZwRPTXLsh*TN4YxGzbgO=@~iUTkV%WMC}86p`*i-SQ%Bwwqa>Pn@f; zx|~x6EYTmSSU=deo1J*)G@u|w*|kL zk=eDUjX2kG(Q8s%%=ANj_Ga*#qWWO?kLpb4@+@k@fwp0BoW?M$$p-)VH82*u?b!%3 zjH*)qKnQ*abi@E8K}1G!Q~4TgzIuNR#El}|c>hPT7Oh@mU@C|v(v`9tCBAh3M~Ww3 ze`nwY`{bc&PZ^DoRM$a9gg%@w6pg_<^sPP}U!&ZhCnT(&lu6SwZF(_n)QITvUadKhBpmiKv}wW>VtU1Qf+(S$i-eyq+LCG z7TkBc5ismiGoUl?qoqmSC$m?4RK{w;LuU8F%Gy#S7ll3~inBOvMkc~4()$n#_Rx5{ zHVy6|^cUa0-0%X>y|G>$u7h;?Kfu$@*eHuyy#ag@ZLz!cH>WVI@iwJjJ~_AajXdGG zI^$R7HF)*Rl(13o-7*UCqHlpauE|&L4tGe>yM8={2e=M!5%vX3vLucYXNYh|{~BL9 zFal~eV9+AN?3RJ(*1_%OVvMRB!{ar+%IX6&);P6;p4^W^0J1u$3Gzf8(VHcN@9a?M zu{k~{Ncr@WOU5kroIe+>rwOhpUtMO4%%h9WM!wbv?#ukN!}h!Oq35B7>oK?2$*ZN- z?7`R-yNkOxVB^Gi$moAsg?|h2Wr5AOD)nY|eG=l7Q1dCYbk3#?k4u%@KU$sOw7NIE ze<6MD0lIg43lWueFQ^^=1V6};g+&=p7zQ?K&*`wD9xIijbO5)ZntOL4&K%IiYAH^n z_;n#i84A?r$LYQ0RTq{SiMZOl>lX)8ckMU!&TGRe-%}l4(ny5E3>T!(uXHP&(W*g! za!mrxR$&;g;|z>UgJucEcxZRoyY%%NAzHKnafaUg4S1eMw4D_&_t_St_F##gTyDUI zh0LNPLlQVH+iT~b*w+#J$207s_O|go8E6^l_YNCxz7=Jb}s7pM=_sdpadrQueH zo?3d=0xAmaVsNg>6g`HX!CmYVBBhbV`t4k1PcxBQ#elZpt@C;`%KE)ihtYi+=RwpF zeIhw-UXZ#UPsXo)#|)>lEktN}_cKtpmzM4o(Qtyzjg+cMi@nzak^h_;YR=(|#*q$L zDSLV)oY@ShEV_vrQQTi}>sUEjC0ri8&o>QQ7{$OixgrJR)bbxEK_7e~M0A6!GkGhJ zWa|(dd~=l}fX<;wV9k-j zxK`iDO&jJdqCvt(pTd1 zZ-n#9hBhwti(WbYGCusz6zrdg00kq*|98Fd7q^0%Q9V@giRcLgLyn!4!R0oBmm^gx zb8YkrC%lr5jKb3d{C5}UllmO_KKTz?YN?}%JOXM z?V8+}jLRIAilXhxwj_%i7}^)gUt}xZ;^XT1E>im|p)MQc_ke8>_>^6$cTPmiK19IT zKwSXD%HM54bF{gp&M!>&=VA9h)6)MKr2W@rsZ+|F3~?$O379MrpjJrKI?4}p2FV{Wa>kYsg&0gCnHs` zXD+zt<<5$%(3m14aT+8mMw(V@#PM~ZIUDRCib_L@_eOGEGmAWeQKK8%?<}xv=;qSV zrYdl))p+S(l9vWWWgO-_xSBcbON?_a3_1C>v<30P!WCfwbQp`;rY={_(7=6IWwD-{8U(2+W<)U#ZzN;D-R5;UgyKLks+a&HYj^hct2=) zK9nC^s>oAKYaO(0CcTnuLxR^^^^Qahwr|j@=VYTtAR?k-%vkYTxAt*c3eIyLV`A>p zm0~syJ!%&P+sDMW=Bv9YFAeYF{&frm1#{v-)ZK2s*fVD2eqmus_h@n#l-r&D8jwec zcRQ|sA!t-E7%Ku6ok$<548{6QpCyY7QWr{>52bb+SApuFGclYpcxi5ZDz;+@P1!I13 z0q8t)V6=L1Obca057|zC$~IP4Kq9ZTdSgeFnM)!lV{ee^;R~dAHrmQ;Gx0!Xa)Ix3 zCYEkBVNTL`fHo)V%}P{VpwWx3f&su`p~NWl_*Pw!PqU_9`G<@$kqtVv}5lcE#^{hDFdA z*&u;djfnSdS)ysG#_L=i>W!Od!OXi-2i2T_lH&I3G9{#SZOhvvS)z9GV~~^DD-5dm zXE@O%v*Y;Qa|=}W>S&w6ZDW&KP8~8?X%FBN{Alm~$w6wX0sCnRu1WFnqkZeMPfdk* zLzpgI{zJMbGt3*0Wzt*IDzyQV^2kbbBE2#mg#im8+PkE=9F+lVT?98}{0%yBqv}+F za1dy5DhEM6hKbP~ed%C81gM?#5I{$4u}xepvQ5(L&s+Kq*YF5xVvB3q>Mp6F@*8I~ zDA(W!0OCehlz0~gH<$ioif5)TQvLBp1z}?$@md4bkDT$(W0yYV&K6yY~a=X zB18eUVtsI$3ABB6`4d=!CaIoTqbx+2{lh7mhQGh&IOAx?cH|@_T)$%*{5B&_CR*Fy zm*gHiV35Q%`7K1OlSCUtLMV7`1uo|)<=U z$7i4xCl=OQd<}-MM(|UH7EgLOf6=Dt}O`7;mx_xHI4x>lQ|_6jAqbc8ZSUFe=q0n-r^(4pD@`;Xs%O$=2;{WiF_}bOUQ)HZ=1NG*Klg-@WyREBedqz-45rCE3B9tKPDV++nj)gzvSn(i9f9Dlu1&< z>2F)_C}PvZ^v23+31M%ya+P$t79%YHhYW%IB16nBG%puMAKhFS)r8KltkKCY@}dE~jsu{-@5IXB(IVk{%6uO#=8U7e@D> zfZwa%Np1`Yj1W4`uTF=SrvCZ^c=EuLZ-Ebx6&GFP;R^G9sM-@#Kw})edA`<{f6(BwbV8J5g~c z`_s-t%17DWt=12vs8hJAYHDYAK2u5fooY9Mlj{dx3$7+2cCWx~lmmD-jPiHW0<`Tj zCWpd?4a)WilHl$&FW_;eilwkd!pREw3a_mJ z&p?P;nST4RfJ|B`Kp!w`NKA~7NbT>u{RrItd?er{I!)HQ)|OI0ELn_NtlqVPLz<9K$frZU%YG4VUgs)DHBs-A$u_+m}G`--2xyn&fG{U z6zw%l?c#4FoC{lAbyjZ831B2Z#6E3DR8lB1K1R%UN|U{F9g*(Hb%d8DTxf|qmL9Ih z6kTnkB8rK>*qWQQRc2`{P!HNxqK`^36R#yHC(_r1M+v0ru_@TkB_k*oG07Jnk}Scy z^e*u*tm$+anrQ)!v=Df4B~2&=%7w0oL=Q_VQ@hrVy--w_FfVfUTR~qEj-2^cwq$u; z4wTo2skzQ=?le`Zd-mcxMOztr8rrpc*dS%GgFmjPM3%m6fK1#l#HgH*zs4BS`2;jW zy=U1`w42bxU7kH38Qyj~Vb<1tu6BAIzCyX@8}bt$`U?}7BEuohlIKYc^yBm6Lx-E9 z+=PUP2yqhcfe~S-iM(={jeVbtMIw+Y<^YUM{JuU~op&)l69}Z-ccI|zvk2VxxPKv5 zWHIS??Rv|;4+%2Vf97AeEt>;xwW^6C{PS1?Fp=7DQZdPiYT>?GD=2+%j}CqUw4 zCCd%x#RmrHp=r?et^J_K9yUXJy^f0@Q9JKr&6cWhO|^@s)Q+tMt*&G3=hvfagnJLE zl~t3h50UtyJOYYi6KpYq0<0%$SSfOYn>%Mzk16FTscTabuOa6swc~B$@JQ^W`|4YI z_ME`=G!1Wp1i9%cC6U#TZNx)%IsyPPs)ccmJI|@#24ccK!x=8$fjGedrhBD$)=O-6 zU>2v;T~;WRVho{}<(=jDKSkR?T59~3GP{5kL2sXqZ0>$p??0(lnt+I?47!N&PgM5`qf9!36_j~=E~)!X;f2bIg*uA1hJCU$Y`Y>kM^ z^dtp8kqzf{LF?9~_EkBRnZ1>ReWqxaD(B}6jQc?h4KpOu`)jD-4MC`mZO*F{3>Btn zHe+{3ONUOYEn^Y+2_ljM%WDDD#$J#~@MOx<*Tp)!?{3q#ZUJ2y$Lr?LK7!{V59c|#M;C8AXI1AU9}rCjr4aVU_XRA(x7rOjwlyLe5=61LkItRBl^9=l zYbVxi2%+4F?Pe(ufAIXt_J^KH(SdNq(H~(^Ut=O`} zG{A;<4$#zuM}5dpfW}6KN4if~KVN|yGZr=`&g)JR;Ks#4q9+FegkV!rP;^mQTz(uT z@rCE=Q|m4P)9SZVq){8L{q4t`H{T5jWeVQiqv`9Gpnl@r zDK`R(N9%j#a#)Nc@)db*so=vNa~2h+{(#{5vb&k*}ntSX>iHD^muraj#QfY0WlL*>hUDL0O zkBZQ+xBRszQh($!|2(R%q$u!zYy39&AC2GoXJCK*!|)CG++0)hXO8#^TFUB|VJMm) zlV=_LIQ+c>{O#QRPl+)4+qp`DTz@P!(rg8xCh{SPLh{uf8Q%zwWyB+IzN{{9&g2Lo{v zZyh`S3kMSo6NVXMS~cV*Cc642y2gex%hz|kRnv4U(=$voUzTljWF$l9m=w%KdTcm3#X3!}Mx;JG=WE z<8=g{g-Sc*GYWmos07H8KIs#_8O0XL`~6nYH9SZ>r;Q+{gAQ#1^E0zcp}of0WOWu8 zLMdQS>H^1(-&K@aIr;C+tQSnzZBA^G@4LTQOLLlD^)RKvRa)=Q=EvYtovtKLSzLOQwR%iloPsPH(K*rPKOiJUl8Ip$?B3#b< zA|y5;j8dhJSn1)~^w828>8|;j?bHE;_gZIHxBr5ycW(5$10WSOz;_AUh-XUkD}L!< zfep~)#<5=j-PLM$0_gY{oT@ssMJ~|dQF!g1YOFEHwtP?d)n6>?CDvZyOf`XPu?u0X zKH{s^5}<)xm1mjjyT0Z!%n$9-=wyS=Qd5%rN*v~Dnil{{d?d?chZTKSXQ+>j6pza+ zaM^e|e?bfLIfWXINaoiCJ&NRH-sUKjnfZX(iAE{wm{>u-%C2r3r0P7@ZkzE!ZN8n0 zQ$#`N3o8A zxM^B_aAM{I_Yrf5QZ>}glS^50ek~HyC(d7ctp%(p2lR{87X2fu&Ge^W6R@#%aI|;& z8XPnHKjvp6m0leXzUFV3qpj<-a)89CK%g4<(|qAPeG`;lM9pZeV)+XZ1Fh`EP@3EI z92C$!cfN1icuuhHM=(S&yf;Rr`8&_8`bi%*QhHCFxvgW0;UnSwfNu!;zIdErUayy&L@{gM- zq%*1pXuug8S5Stl#wV)=NnC>g3XL1bgQOc1yP-FDW~Hiu^G!B2$`6etmrRrIVgmwg zc=Pe6Od6|Zoh6YePSd8x&xH^vqTs_Xgf}s9jZveR$qDykGNe}839sjk`eE*S1u5rL z@oyFoL@Xtm(N;*+hj|RZiKpbCvQEG=OPK}YjT?^=5phtPF{tx5!*>!*xd&Xw;ulZI z|4w11(vx7yLKjnJLWtgHVq{3RO$<2W^iubuNv|nKmPP{^HxrJ|q=0}L=apib2}wUn zN-MX|=oH!{?k34!~ z!&!)`xth&@tL7zrm*QAOOjw{7%Vtk`lNr6WQ4v*9FEO@+&ss_BO~o>kfo7+Zz#upx z*pQQw0N6y8#y9l37CNL%{M@DY{ak2fFbGP*J^wH{3LpX@>(P%5q1Sccru>_crYNJ-dP458f)kPlr3E}v1yR#Eo+H$j`jSe&BlWs+OCpD`DX=hM6!^^~B>%&;7 z3lR`{oHYt3_DZQHhO+qP}nwr$(!q+@mLbj+PO*IM7TzWwjn2mk4N@SZ$%SB+6sV-zGS z5!KG%>4Z`ZjTvKeKp*Zay4M!8qHxD93+sl!?w+ntv)|){o2L$x@R`(g*r_wAR6HDS z^AU=D62e=Fqk)k3t0xw$?Za044wR4IY15`77{}Hn_U^f@{~*sUbn8o3b6}3nyxllp4G4&_!ioriQ36RzM8ej6lJ?gM*t};JC#voarbPeFK3;+hx3tn~VrLrRkVVCgE1*X*zAtBZ*5kGqL)qQzPaui-p zw#2suviXdKxh#{rZ8|f(h7~zQ_i^vBg7FYKNdzoei|&v<_5`S_!l48N*Yv%jKAFCO zp8j5T*&D&j`u*TO(|k4MF~VOy1e=j4L#5Vb zi@RAPMYN)1ku-vtyRh+!PV8-tejUmYdy$iA2IfVl^@^Emg=veiNHz*K#D?ADJ;XQI5P04J`UHVM#p?3<;&TKkMU@e^vX3>s=jrHMW+iJ zK0-NxGzPaL^{kPc7s+_bVo#p%;An<)fzeZwBu?U#J#XE*3o#kOrMQ?x8!i5DT^p?xo~En1z>4Vb+Er7r(U5dDO1AFmR2Fkh26LOk26Y*9Ft%E(;P8(Q&PVqajNpyxbl zn1$}mQ)6z-H8Qxn2lH{};mHPZjzi9{pNy|1cWJH|atat~jWsj}_z)-2*D{T;62Xce zZWF%pWGO@-CD)?EcS0k_@_|wO1bw%lwiMVjN}E;*Lt-;!qQh#GiBz{+mor4=eE8o? zJI9Z+>m%;I_%>Atzo(sRPy>DdmZUfCma#UlO78ugToOItZ|T2)9rz!C-9I;Dzrygp z(A@uQ%O*(wrFIY5W}Y{TYOy$b6#YS9%~fSzgfsK2ZzRG-)s| z^uPMPIqKnG~1}1x|oKvQNWfxaQp-WyxiD3O_zNC*5yr$8zu2 z^%_L3u~=MHVyja$JtZ^bgGUfxB2T zZr4U|BEUhZhb+(8=gn>I#|_7;>Fv*V4$wU0ZTFqKyp%zmPhjp!;?dOhXTr zjWE9BSYl9W_mDu!IVLRqiqO>!|6Q;}UTX2RphZywUv#eWsSCraBn{cxm$e2$Kaq_H31=@1YXxiSeZS z9v%sSqT`*=x0D)MvSe7x2bke$1;o?zFgynmTH=`%HT65BNm1eeug)l4yGM9BW5@eI z6U9`}h4Tgq^GQ)w6iplk_e98zjKr8rzsgrhV-ZF2R6dV|hXs@xVuVNZ-_xw_PSJ@q zqAap4oK7?JO&Y%E@0`(2AUcTs5R4aB1aAz!GnJm8FP4uVWw#=G@_Z=_t_xpjC^4c& zZwS0eR_8Dt)MCifpWjTBAQxvxo*`QcHLK;h{(yxn+4e3|KfZ{iw#C>ES=*&0d%RWpUyKzy@%{6)WmywZD5* zpDhX$i_L}Me*UXIa@6L_AO|6qn=8YeYl3j7Fc=gV7cHjRymGB<0!X^P0g&Wu1i_Mr zfMEp$r>P;c2ubG`jsLm|NG)aGB&5s9lw?H8lz$%uB}GcvFio}lJyf^pg_#SvMCEXO zQycZ|W>Xq-5?ghxIq}xQM3Y+Jgk~`-k=(FvFTz!$;PB3F z8bgRuU~J?CAV35yboJn+LRfu_Q}kp8ygA4>Xd!BkQDGKPk!1s`5?F)oBqHCN@MngA zNt6IC=DuSMwD}Fr0doaM0uDeSn8eVL01Md(^Px66;|~jI@Uf13$Kp=_7wnTC1N5Mq z7$Wv3X%GqlPYkc}+i#=70|^eNr{##(+jFNaNXyGCXZ-xGX`54(9_TQheC226Sl{|;SN)U*HYEzmVbXdsKT2w_44D=)-k15dg>RXHN+=FfX zJ1lT<=Ti_K{|TxVWC%nvLclyT4M*u5ZV621N(F0Ws zto-ZZ8yF}hx#tjC@s#w-IaP;Qwyioj;bprf+hL{4OsrZqE}lk*Ax3gabKzF%)3oE< za8(aSYU2#EE2^zTV;J<0c9Uy&7~4;F;7~^&k6lu7UP`%G2+!rvb7M9w-ZdT$b|lo_ z*m%;m&>7hm{a8Hbn~t!$c5UI*n&tPzp|4?EgVHeUU91Z{-Pf_6XJMX1vcI9dX$Wje zZGmLggWxmmdX;{p4LX-+Sl`_vTtX|vbB1CrLVilfgc$9~pf`fT?q_vJ4GvA7TI0rd ze{yyh7V#cCyC9ia7Qc{_s^(qdr0JyP4%g#T_{UafDY=s&&QdovuRv(NQj7cF-FT&Z zfc};0?PGI26TkRF+?UzwKc{+$KlN_@tHl2g=p+(wHZd`FFgE(HQt&^AAd(ZeWxsqM zM|(FXCM154L;3bO4aChuLq;HC<-vrR2dEQ_e1G&SJ`))?6JIZXW%RlmM$-+8CCP+i zegpWBKW#@9^1tvW?mXIPbmZCok}14CpRM!wiBmyCrHFYav*+s82#;>PWe!zMqFuAWWiW=a^z0HJ8`Jx=&3M}j$vWn@guORC> zMcU7PrPAWeW|JPXWEYfKlF`dlfs%@wGQ)q^uSL<@fIY?Zdkv}Hjns3wK(|6YSLNIG zRad`~=hPm3lwbUe`REKLIExi8GylrNNFz{3HI9wA^EkO=8y-H%Zb6VF!VA$5@ttHF zRi1DA=KTS%*`z54iE@-n8QVOCv5s`BsxcvBGEbphdEZ1s_Jm9YZc$|@_O(4(jje`B z+{${8Sp@P}7};@1Q6A_ZL=9dsUIaX_HXM?cp(O2qm8WFCdl51jTI3!`gFI1w1My&r zeal7)J(#ozU?M|}p+rd+I6AAn>ImHBT%;2Qn!W!gBC95CE~`i)OeaoK+?oX)3NaeA6vIgb+Sn1!uXd+lB-zaJ;{3t2K-%T$rB9c-(!!7IS1dkryMT<%KALv z>H6aL@Eat?Xc~%#K&wdD{PQO~$Bu@k@K6i9wKfK+RHGb+3EO4E&hgw8?Bf~^5$x-^ zdVjzEHh*@!Xft^y6EFzSL6Cu*t7H2|G@c7B@DTbK}P-~|J`)Bd8A91#(&t9#-ep^>FmWw(( zL?8T>v(I6Wi@&m8U=7KT-v<44)Uw@qkj~e7Q@vzAecENe|FCu7Mk~a5_9|Uf=Xfo) z1v!j|wYqPUXIP8o~J|P6F9-EJRD4F|+Zus?n59dX3LD%T$Z(6EXi2 zF+6H%5m5y7XXZ-&!7e6t=*6@|6aK&$EWfME+4L%%)8A!^vw@~~N`XM|^@1*c{ebq{`g8p3e&1_nae z^eCmu8Is;DMWCb{0u6>$_(CB?Guye@1EK?66JZZ==ZxNfp}*NpOC49O`xnaH{v*o$ zXE&JtN^M_;F#kOpiB`1!vMz!1L5To80tXw5#KVDb=ngO)X4MfQ-whN;CLAf+4P1R- zxgWD%*|3)XKqgtk$UJuSO|oxUF#sQS8=tW<&2>LqO~0t!-uC@AW>AUi4b`pkf-RWa zoU8b;5Q6IFkf{GWd^uB^P$otTHKl-t6)xt%zZzvs^psC7*yu(TJYE=vTbmBG_6iYe z01ppbt0c6;0F@j(6}o|ZX>-GuL=-3!pGpwpu1*KF5WAUxQDqEqSlS5R*5^OgzT9A3h(5F`bCemHaosJdD=~RunQke&+R59=RDeV? zagt0)RSoFLJJz5YXQiQEQiIs8?^K~Tw1CNnW`W22ZNCHFkU}ZoxGn z?MuKIv{ryQUNDZa2lR0oBVC9l2#DQ!UmL@FnrbN|2-Ajq=POy?}N@7+!BcI-HOxAeDS7D zn5Ay8?wd9H`Pt7A$+L2}iV2!&;&%%$bQo#WKXvOAMi&!NB53%ZA(%G>pqc3u>nzni zL#8>F5q5r?$a|nQ)yPW-bX9N&`S|Z(l0Ji!Ktf9)pSm#(ShyvW?*g=A;FzAOy{{U{ z=EsU1zy3Wo=O`rcHvbCY>OYe7fA%c>D~$iYj&$*pG6R2^(*hJJObB0xsKP~?p+aM_ zVnm~&h!Bb(BBmCz7>SvKL+RiQlj>cF6q4wuknkkkG?CHcjffvQeEgpFbuiiD#mV{h zi=HO)VTT=llA_@9OeK6bGQCc^Ynh;+h^GzN3BEuY`DgkrA)wZNg4BSeOabQ zGi~eQ^l;FkGQN}i(Eyj328!TMPSoxZA}FyqA}9$k@i=sa_V=sMr<3+mp0zR6nT3mn z<(}Q6?jqf=<-ryVTKALa3jV< zaS((dz)zJ%>7;q3@w@ zZ>dc*)#P>IdqtGI`LmMJQ4Yn!wF$)~&T-H~TCm)O?wI;7>E1V3W)`60ypf*1|Aox# zHknv_ztU6bAJfx6&-K5)>wnbS|7PF{(z1y1NZhe4Q8J*CMTuWZq7CuHJ-}`V}&}? z^k?oXOjhr+CrTrJz%kosK$BYbQ1#3l8X>B*i$G87R#QCf^`Q#y+E@BiZ(`2Ye2Juq zI#(-|g+KaB7Zb^TXf~yLuFnqzts7%MAFl=&Fojj;lgl9sAw!Y372}oYsqts&E6E-O zqW_>OwP-1Fl12Pn*eoQJS^4cfWvRVoq2asT>e5cTj(s|N9{{-D5%6hCBu6_J{?eA} z3=NSM0``?Xgv0~^^`S8?E!zA&6VevwDDVT!!5J|`=qmSM4vCGFr1WHj5gv()h|v&G zl%)h>_gHYm)WQs~B=0_Sforw9-I}0_#L|M^K>CeHgDjgO6^)Px(-nd z8JZasH`#lAP%@}TB=vxh%$~p|&a2s#D6QKyTDMt1)iTvv4c&Yl621zu-`xyy_xe}| z6E6-*v^nbiD+2GGO4F#nqR;G)ndOfK@;?#yKg8hQp_pJTiOCN)`iY4+t2JZxqiCcQ zquQh0((|yncut}WfPTR*&vxR_hMe?9h1S!8S0$gQNr0D+SIM4*2hTzP)dt7Khq05B z)%VK;87MEp6^hX1zz^Sgr5VE;S0w+1??W}6EQAU+K;%sA$;kAr~yzEP`kk)vbzBS&G*phic1_jDnP(S(@^RT)=ECOtV4B7KBO?xDpQoykW65X$> zF6@3FcuX|LIA%SJG4wj9C`KgLtC!!`IGRwzug_s00Kb6@?g_D*FE&4qZF=K4p}ZZ= zL$uKYwq5ln1u$r-rTo;>geC^SOq$8m>F8|nV}q$8)R^d_kr5fymJ6&3@~R0^n%t5H zkyOk_T3!u}wqRvJjUi_FYMIh#Vvx4tN}VH`4%)b@I1@9q*?3p0Qc=C5X0w(Q(2l9U-)_T@;s(EIxNo-3OJfNLKEeapdhgtp= z4mG)$4)tFN>Cg9DssDt8{}T@X3oIr6y+|_J%Ssa5*g?vqPrLvzlJM5tT?0 zOfuzqVxvP+QNiOUj?gEil%6DB|Ko@J$Pvp(6j{~y{bkN8*Y@i}``N5+>Cra~GrB3Z zW|+bAOgfl*O^~zSUviUlx?h0hni6+LwvC;X-qU^LxAGH*Bz&L553O>KjQC%Fj%`>FJz-z-W>1@ zb#1iMDzpMmg(AA?)jn9CdfK^DjLNpgqJFT6%TDN#U}I1y5?42`tGx8wo}22uawq^RvQ|EJX#y|S#1meF?yKo!{Ds8MG`Z5TMa)+d&tFr=7A4E(}tZ5evqD<-b3EdOoO@k}pXHJXTShOoKjo98;LwAs6Ptpk81T zk6DdV>r1tnETS@Z9e0U%I^4cS zz21YQwZ86uI^VvY#>JnJqBH|4vS~P)*>JpE?Q~_>_Vs>-z>7xx9uYqwxslK&4aab6 zz?kLCo!b2i@>Ka9TY_#u`y8oE)v)usMs$OLajc4ZB3{QC6YIO*;b{{;cYOF2J7~RXEHyPR`Im5g=iN%6(~ z!kLo{)2`BKSAOuM@-WJ}Z9M{H*<#zmrSuMq)*+5vXZoZv@kC}uPuliacd}E`vvu5#=GUk!U4;nUYI4=1$6KIH`B>N7yLG5P38`33U4u z^8L*|4M)C<7Pwldr9qTWbl$kjhfkz2Sv6JVH}9zh-*{LnzrmSfIew=g`l5XfBy9U2 zr{lC`duYahv>)^|cu|~ym#1ih+|aFhU}_6=!LJwyYH)hsYAAID_~48InQBOJ5qbzL zy-KyekQZib1P~py()`>)_=QNZ7`;&UV0@hI>a-4wSe(#v$tL@A0+N+OeSaWS^ar83=$chm?TSV_*lE_|XJhbQ`T^ykc1pE#;*aCIiNL zTNJziZPiXiNH8R!$rxovb$Db5D(0~ut7>BLjUXL-#FfK|5^3OksNl0 z8Y$EP*2M%7M2LKjOkrL%FUfAIoJmO~U^?;r&hX6o3yU@~>3s0hkIHe*39DQQP27Hl z@&r)9y@k(kTFfgl%)tq=N4n6wpd;$KP?YpFm$Bon2qvB|X|EzS5_Yyxq*12Oowk`> zy0+0B?P0f8^d`SW<%`wjJbsJKVvr;cWBggt6JH8AicIsyC{BT~zA>@@Gf^ zHo2D5LpcLPuKKxM(Z_`YUQk7kqBbvsdvC<>J&frKpPBCFYJ|SPNf($#ro6VkVr_t0(}1~jotn+js1~q z{r8IUztNDgrs`h?(UtS3_d6k-icr#c`nVZOavrCLb*(~T!-MY5GQxRIbM)Apf+7H9Yj7Rjc!0y zee@dv$zk6k6Fo^CaucPX$>>4{^1`9*TuvBw8Zew-V7(3A}L+U*; zx7FJ2PbDX2eWPG=O{AlG^G%6h$nlv=Iv)~nY0jl6LvTjJbB*1NnO{|7=_(X^X(vVT ziE}&CYy(oEg(->j4js7i#^{v=a%DjnlPJ|DBxkYFM!uBUk=;#Hy9wEn!KqfG5>>=^ zU1FH}+_v{2qNe-Z@-~@0NhK*-JQ@egqqGtO$%albV;odWcT@G|rH&>eNQV%`Ux?gd zx$S7KJ>mGxp1|Hp+R0Kuq`?jFA{3HvKAqdsic_IQaS{HVV0tU5I`r&~X0t%B_>AgK zX`@7v=-hj=9N~fOhl*N-z|Ua_phw3NJ%3Y4KwF__WF~SmmAQhQt^i1g97Q{E{?5M) zHp!0V;FRXd^CbDj_*(;T*5-%6X(qnC0|sOxzSeNo-+QX{763Kr^2|f`2U79EMhicG zoXOB<_x}v1_~jhXk0{w0@S9YZ)oG)n^QyP>GH)|$N0ra>jJ*mMv}_=eE^pUe$(#*R zS`d3sxT_)`rIe|RZ1I}P2s#?-2yV^};{aoZuIrodpk$ezc5#SDS4lo{t)&^CRADLi z2%@c-8;Gri8+;S$HC=X;1KH6@s z!}qUt2CX@cwbDGl!c0WyBcW--csrlXMb`yWq2Beon5I2g%vWV>$vuV+q=Cb zb$nT`BJSwxKaD;ie(Z?G*xBc9fYPYEP5IhYgg%8sK4Ax*9slkgQ$gS1r>p zwA$tPs$;WXs=t43Q2+DAhOa)sf2XAX1x?(GvOvIX!%P~8$^V>V1Qbt4xV_%)jn~j(~gg&cr?xU^WTu1CjIh!9J zzkj3pVJ(Bq&B84*6wld&x}@g&4%=tzCFARIag?#AAeQ-?zgl#kfLa7srX0QS7n%ci zRao#Got9eZo6BfV9p0`!Lje(Ti*QWnfF|;`NKs{`WR`(IuWnlBc5Pjve*DDNiYbQt zA#+J(--)eZqS;R^1_45!$2U?Gz%zt2bfb2jL)I2r3UNtL&DWn4@Hz*QFM#?rWkE+5 zHwvaVDx#w_6gbB*kV(s;n>F5>X1uHMRDRL;HEDWgm=K4AhJzo1GymQDj=P|6PLcQ5 ztNA^?VAV>KBKel2j}-54LJn7dKn@4LPA)h9F6U5e4hH?&IsC2EuQT4d>kB{}g78W^ zo&ei@bolRDc{K*V?w3%Df(BHFX5%)*>lCSS6!Yc=ZtJfBrCRD7uq?Xri8;g;3d*(1 zip3<6Fk=ve=23LCr``G3FF+P|wfus%22Smtp%6J2sk_*QCx6RTrjjHgo&3vK_oVXk zF8B+t(f@G>^UuC%|B7+Pf0bM9c}?3jI;6gveF1-f;(S*RUDsX{E6bJ5qF_A+)qeec z{vSGW5pW8@d>Bp(TMz9Ib+C1?%okWo!G%3%2K}1**@;A4D20n55g(P8#kc7ft@b#|*!*ox-1K)(m<=XBf6cP1A7mRMT0 z^Ig+(3nQmkJTjkwIYzaFkJ5Du9@BL5ZRvYORMTSR$qy0lV15hU5&Xt%(&G{S`gwTZ z?^&MsItS{*7kVT4BkccYQPBTGrSLyP?P!I6dq7qhW@MmXq#!Kt(Un4bpslF5gVCt(aMJBm#@}Q!%7HWD^>2G}5K8uRf-1-R%-Y zUkE5V202KEFRKOd$Hf@BJp<@6(55?%F)m~F3R1A6``Mp!?y!^{^Mh-mW1-@PODRLFL!V$?55~QJ>Wqo>My;JrG>9u088yQDMgKq1V z%l8+)k1`uh)zT*=zws=yI*!UY7@m(711!|zW01cy-~8r9eENGtqn>JgjrNtkmjB2a z{yFZ1{vbw6R*BZtG)49iaBv(vSOz4nMwh!(Sr3L(*U(%oqJ+^nEI_i*uTFAy5U1I7 z8SgfC5R_C_Im_C{&E^PRO*Tj7O=Hjo!bH^IE#dtH{KPn8XJv((2u;(y?YiQ=a-8v; zai4X!{kYG4Oa;K|=LG@-sr$O4;0FZY#o)K~?S<<)B-0Qk$MHG??Dn0tcee42`vpB z2C?QP4pQjpb@y7Gd;XzSZeq0otk;(5Q8px8U}oywuMRqr?sDbEjcY<16H;z?=Ip=2 z2xr~vNNbAso|8<@v{eiWMpp*|*OX8EQmDXTN2{$^a_jGd5*iyjQd9^c^kXc^3G<`S z$LWWc6C%=OV~^F1mnIrPeKw;s!8Zf7hs6twD7h-o$r+3^B{mqwwRmhOm&b^+L*}cJ zT?8;Y#_BKjj%Ym2f5DLvi*G*Uh14-7ilf_4vrr{&6uF7JFccqH|NqDh> zhk~TDN#Zk;uu{o#lmC+KVtF!s#R?kn(PMS^82O--%RzJ!qC0xKFM;XVFB@wO$!LvL zCTx`(uP3QDl;MeVZaw3~d3cWVCn2rLRdVi$VdRVREABlaElhFwhz!?04$%^7huxj! zjWqQX5o1do@)^N(xn=C|4(6Mvlxg{p34{*mG1CT-wYq3~i0Arh_4k*9u1h4{eHS8# zJm=re9ncdJy}X5^(ei{n#u5?oJhqrluuN8Yzr=BzCz3FO)4~;ADjGdViie*ej-5L) zE?cwgqu(CZHf%br&+_vsttzYJfm)QQXek!Eo)gTq=_RRc(j?ST9fU8YGuypL42_>X z)H}tF9l8>jts1B~3)hFg^!YJiPi?sgP6r$x>uW0Gpu$%-5@Mf?b0F-16^H# zDR>r+Y%PQ&orMdL#-qQEXP{6!7v{~tZ42eLWMN)!u3hkJmZv^vMm$bq!rnlv4_!}T zrYjDP)T%!A>!pS0VW=9w-8%tF zDu_^y7zv@tFfR4$6{Z?-1*95b2}Kx}M9JlwQy27ga8dV&~iC4$=NgyN06=ISBc#hRUA^upPWryKjl@0GjD{59@02S>eD1gG7Z zgyK!IgWooKst-c7R~$gSjtJ6kVTfWSGP4ri2ZrX2AB#>!uVM6x-c=5%Wqb?UHAQgR z(0i%~lJ^SST~|gMICIKJ`4kkZyh_EwAx4h=@bQqJEEQ2ImW&%;N^*#gq=o%4A%)W=hWmJiX z@|~L%?E(n3?AWje1DkUTe~jr0?e(0ygnYK(2BvEH`ZK17Ag@RGToL40LPa?5#%p&; znPpji6+u9Ejz~Ibl)8;WSnx@H-@QP-PBesokGNy#@X5%hZVUufLXE5FgAtc#BOeS= z$@I437qe30J6IaMl9lyC$QKRBr$K8cA&tNuz{9Iu;fH%!;5RQ6(6wMF&HMq5jxX4Ufa=bxBTcQRL z3GT4r?isn+1Ns@c#a9GdnnT^sImB6-n@L$7oyC5-bA0PGJF1jLj7-6BCs6Fq7v}c2 zXlD9>2NgaG@{mu?0KHm^B(Yz;du%7KsvQ|;?{i|@c8d-TFHy^Dy;~tc=$ctRxI>Hz z-JU>|f$$-M3R5WTWb$`?t@WfnolL$9Lc_mrL9u)}>*@u?~vaj{24rRo3oc zZAmn=Dr8hU)8M64nM$n#+`AT!SQW}drC9hYNTyC7M?cmuD;sR5TY!}p0F2dq@AE5y zj{$l4?k!vwl0ipIC0yYVWosAB>iU;-#4JjVWstQOAxWThgLl9!@3y`0n5@i7MWZli zE@9#Lw2+`}O?dcDE)(p{z4Su zANL~ir2$vItWhgvXKhzH2Usl9E>CM-(Lbaa*{&|~SPEoyZ?1i-g*B7uIWZb?7)g^!G|eR!{Ql4zNnC1o9=t@ogLH23&^5?Ns-& z!y&L_{rDHDnMvh!Zvp)x?y!F%?*H6`{z3%;(sKW8)|342Mj{C+2^3H;U@_{#cL*k; za)9z~yGA16Xotomio6tj^o0I#sB9^+at-fe+_~0=;@F;RKTC7HaLD^%P~V^r#4{d8 ze>ECN|MTuyp6wo6nUA-lBkphSPaJ+N-v+R{;Y0G(M8JHF z=ufVZ6g9JExaH0<+Br( zrzcRPJ1ESikQz~&9*#>bGkB;R%GpAyKN1*aBU7WMKnt=CM4-%!n`lsGB&5WHmY2OC z3(^uzmT;M%DWn4~dP^inAXU~tNVqSWOHjlqNiN*oR%Fp*vl~vB%%_-22NuLXGWFG+xoXVzp$44=hJz?2CS~^i zk|eau?9MaH&>1ude){CEg_b9`C31qTR0nqUv*mSnrt8b6 z?q9#6&MwmYT$UY61YTEtz!V6)2i8b26r|_vl}%5}yNudAO-^l~J`Dxw%iB02*DELY zp<-olRNb6zjt}Pt_bFn*Vs&ujap-aEaaP>A`U(3BV^i=KIB(WMpzO__W0zyZPM62@ zsb7zxgh^yr=^(w6vvLirkZ2tewt?_Gkv&#B?Il`QVkq|GCe$?sV3qeTxY0PsRen$; z-dBI>Yj+D9ad<1d|FC3lvZIJ4=$?!wz}P{A7m5yJ?Thngh(Q+HH1XC*etdy2+(?6?ziqnrUxep z7;+u%r@vup#NP*YNq-v`ALS=M#gKq}&4NRB8}G*nl@LS}*Bgue92IXYVg%qyPpXIY zJBn(7HSFCE;`K@y9{YP25RBp7P2Ju}rMM8aWIU7Zd^r^E<~N5sSg`r+c#jyqJJzBW zv7Q?&Z=&tIUTiD6gCQD_BUgHc-sl1K8bEFp{v0*nHI^jZN?Y!t7?nB={>yKC{OfbU zHWm<7OeR@OFFVD$d67~QiK#k#Ve9Qfu5w#z!WKC}qR3U&hTf15u+S6rGWj7B-)ux$ z^+z7wPH8{HugvIr9ucr_^rmp9V3|Nz&>pFwnRb6H+V*669v<}g-n%k=AgcKMbS2|} znU((<#C<=c!&o1+vpR)23*F<0O}f>f&1P#Q-7K#34mV+_?1h`+DbN83fx$^3AzpC*pC$6Q_$9z#Zm zSAi)iPb9hXalZO#o!y4&kx$*O7Pn(?R1E7qi90vib65SzcQSQ(DiEjr^q%H8Gv(To z&d7LF^>MQe%L3rEE66Iu`p|h(hAG>A(}a11ZHML1ck*@b?I4JpmILo8Rz?KN?wL?t z1>%E@&@D~RdZ}sor7#g*lHYI%hx8|%`30i600n_l=zh5ohj|vh<M!fT7j*cE0gci(| zuw7}YiZDy%t5qFvvs2V;c;)R*spYfmb+k1lU#!RCI6kU{uB;Ss1S(rp5jr{TXJ-lL zoSt-3LAO0eW_onV(d|fC{Er{%nv4jnPRm4#;I}z*(PIJmM^)y&64Uca1t)&OhkV@B z1t(egCHudGihk5_NH%h0L~HdFj6!?PbUhsYu0RpL4S*)rWwfv<*@n8mF`_6YT}q-g zM6g?+=*oJ4XG>=xSyIaB15L4;PJaq1f*8(#mB_NM|DMD2s_v`e7qkQZ8M7B2=2)5@;;F#G$Lp z5}*5HQ3N<$0R*{mMMXtBk40kU6!|HoVV=W^h?l$C6#HlIVw{w@Rk4uK%i9<2J%E}bOovNPLTsA5-V|8O zj}I&@X{wvT*hu!;!Vn2^;O!NL$l*(c@4~<$kCE*~hDe3IB!qIq!oqyuO@*Pt*hu%( z;d4u1?qOBhfw;fCpEOuhRC+^m=e$1(193Y^xt(5H%&UPCI#zoXCyA(k+`T1uyuEXV zSH1E(`F!rsbZp(hd7(Lt=EulAb()=jq6(mo<)ZQWdgJ)joa-1sD;*A2*vU3UOuU6T zD@p1k7p2>R#)rPoS2S-KTai`{wMa401%&c}!vd7&_NNlmZ?P%;2M6-3F_q3O>D zBth|-7`w%%*aM)W^LLRMh7IfgGU5UWtae8iy-~nsqWZEM8&3VY6p9g9D~2}sNG!E8 ziI6ksO2jogiPl5COE61v!;Nxy-Vr3(b%Ah3^TjfFVsj)euuF{x10y|Ra0)!%}KXNiy9vgLHfRBTO>$6hYiO~Dz)i=6eJxE8jSv?31PR`cR-pD@)K zznrxsGP_dCu-^=suU*CbVe_f`vD;v+oq=XYS?tJLLJmms{dm7av}yNcGEwe4TDqO- zgj;NtK+KQ1-@xBp;B%B9H9QHNx%o0X;nE^qmpWHz@`IVERAb&G^ zgLi{v&C03wdxS~ZVsT|_tG>X-SxV!?n8xNGu?1yW?eqR#nJ*9ZJ=>Bj3Bc2;4}gI& zZ`J6wY9A(X{%MP)2g)DK=jWkiGgfb`G-!qegxZ1j%tFfRAviW#sc%P9OKmrkLxZ+g zn{sAmjT`dsg$V0QigZ~7!d&)WP@JCKQuXeTJhg6+IIy){n_8Bq`RUIq115s+i-z^z zHsh>PxLXo2Oy^z7e(ip{X{=VKTMaIE_M$VEDGe$oc*8q9*K#UchB^jAe$y6E{2iRd z0ayNF_8E3WD3#85hh`OU=+sBr1D z7j3OiiK;1t7uIzS{-YskWN`q5W+X$)^68$NW0+PJat5)+M75G{{0gimFtb{qu~O4Z z*u2Z7%5R%nRRI|}lBQxvv>(u?QR0&O&J4F;(2H5l9Q7AW$Xr?4m98YMRXkgNOb<$qv9{3V{2<=tZ(z5eThxYMH8gY zdq(2#aB^uoqWu8G!^$IAWO*oMnynBpao|>ob0Y{TBxxmNz7QKzoHkv0ZOA$8qwSg6 z=do)pG6^ZP#&_->U#-no&TZ21?a#Ld6h2-Zp*c8y!|&AaPET-Q_a)dIM{~fq0rgwM z^tc1{cYA1-f%U*9`Dva|jHY}>M3t5yCfoR%VWdHqq>PN@xE9zSMl|W}LZv(BOpNjB z!bh$KWR{i{@r9JdW_P7I$w=MDgUtufn$b0s9^%m`s#6I$ku_vz7EQdTT4o|jjpRxy ztkB6`Wg^Q{@p4BH?NJuLE|76Cax_fzDJ&}=qO8qDau{YRAKGe=$VI5b%?r&aMN*`I zIix9o6D-6sG<1|3TSyzZcL^ya?2R|V9hDcInQM>b7yIpbLbEnw6i77eH;NjS2`npU zs*p{q5z<*|Db6GW7!gm(mm;e=Oe{2JYlJ7<8T*Pv6HZi@pfeuhrXVEa*^ zx8js-WQF7DaEC?npdn zg!@-0sImUd(+-?}rameaiW>T`K0)2zp3+S@#XrR0rJ4d@YmpViZ0r3B8l*!}0N&4T>6-@yEt#N;H=}XR7^SpSberS#N$L~NxpOTN%99 z!7UO;gh%)ZEdPNhm>D*9Mb{*FdrYDsjzc}TCNxdsunu-b(D@sL^=Mnq&IguKx}QPi zfZ^7-j3_z(V)q1h2Uj%xx}XXE=>PEbj@^~6>$Y&kX2rHS;)-qCwrx~w+h)bKZQHh; zRK1yV?bG%;Z##2-7(ZaNc0U*T)j{!SEsCRTzi&F=eYyJ<3K1$w`A`pWsfqZW=|t@P zPI2|n*M%z=(;<$DcW*fw77>#GZcW64?8b?$noj^03t-c zBRQ?u9dZ>u|6`!6L=zHBr?qv^92IBxFplK(Tu!=hwL-*>mg<{FGFOi=!i*Xv+uXsn zNa^UY3{@XO1_W-N5{8E$4=ZU}3CWGl$d=bhY(XVXddZhuRMr{NGaI~2==Weix9Abb z@6}~F97?`94a?zZH@E| ztc+ER|FY%zPsRIR$3Ytra1*#mhX3*%ocw?L4i4+_3NCjXd?XGOW-in$9K?SRiGagh zSZHen%p}$^G1N2F+%PaOGB_~S0BV>3HSEVFg#dtEYatp+5gB=MVKD;*pa$rW&kqSQ ztta*S$am0tOboTgCMG*8Q0g7v1lTXK$rmSlL?0^Yi?loZ_4{Y?$v?+^{QZZWt&JV@ zzntIxPjy#!omWBpohU6r5t~FSr==pw%JQ>{J!mL;J=FwAV2niRFeXRk#2McT|e3Pg^|Syzs2cH0<7mb zC6~73R#I^Bu*Y=H+A}X>rpkj(Xg8hnlWnlKe);`)vQ;=fa`Ft`P*$DRp)XJVCQiG; z-KCX_TY}D&)mm&(-{$8c-Pn*{QogYY}r?qF7t=E5c+Kk-v&1co+0@t7ot} zDR-wAWb`kw{8oe0n$4gF$f@1~!`s4l?4-NTGaWys@6uHS=S?e}ZINjCJ}Ee(&PK`e z%NS;hfA9RmC>Hl1?mOp}&Q)S@LzJyZsg-%0hS^HR*R`9ToedYP@s-bz8ft?S9@-Kb z_}4Cl9EW1BAQTg-NF)>S<)*+yl#OcVWno7x8lOKJ=8V7tkSV-WD}kFMb~e4Rr{zWP zq`DC$3($HRnp&>0w%Uz_?q=7dCBm!t`3nz|_u*EpvZo?I(B80duL|guZO)nt$ci_)~Og+qPnIUS$G5M9IQN|dT`L$3UgekdT@unqzV z)0AM8J^a!t$@oIJJ`(;S)*dkckUbC^d7Rdur#6HXIpPL{?&dB(^u2{-ACYdH-OnEL z(oI?frP{Xt8(Er^xEqoxX=V`NE{+Ll2dK6H{+6BrgFQ*%En0#(*)oZd+Sm>*)Tf)G z0GcXE#{^zA0lmCjLfGJd34ok1q?t4`WK76VV7ZIXt-oloq@J%4R*oPyn&%8kK5Si} z19P3-7V;%rWjnujcthoPVByEl32vdpkP(`AE;|J4@e!#RkKDkR6uXedGEa8#bd=8& z`;@$Zadx)a$gVKb4YLYreL@|7(O-cXk`%vntSiYI75coOf>^#4IrvAD30DT>YzU=l z`MYu7QnY$8FF4~X^i5O6Q|!+V4hTM^dF-$z~*^Ejm((fWBHW27e_)`z&DhK`Sm$x`s{zaiT|v;qy! zqU5_Enks332Fxr8hsce#Pc=8P*1St#=4jsrQKO#lL?Q>~wf7@84{MSPCEoDI&MrUL zcj)Y8VZadM6Ei$J=w@oT;YU3p>^c1syhzKfj-z)}^ zNHVr?qNv5NX-jB=X1#n!$d@;d^A$WIZ{gp3`CF145{C!%^3^|d|JBXypEZAfl~Xq- zV+R|3tN#?!L6!5b{BXoSw4liS3WQWVeAb#EQ#2YYm%2_kJY>XW&N)=NU-EpFWKExdAPEO$5BqJOrfk0oYFcZ`$LDm8 z>o=S=EIv&i z)WptsfNT-0C85gpNy;nLFkB=29Q|gx%cWuQ> zDPJbg2%agC7HHOizbluW78VsdlM3@E{`OIpg@mLk?y5a?6A@1XMk7Iye z6gB!d(CYaJNGc|JTQsMuJklk(BrqU9$X|JptSNDuKSDyTSW3&*MV&i!or!FkpCp%S zI@J_Ps0pv6((8nVoe~BVS~>VbQQV`skTlt*;~5fC?!QG&P>XHOuC`NKKj1b{lj~&{ zHAXAW1TN^NE{7jZz0O_dskA z$u}}5+%a9s+%hIVQ-MfGF&V%GBx~fzPzT^*Msz69D;LGA?cUx-7bj?2bQfW^`7JiF z7M+Z$aV04vNR;zrO+3t&m0-|jGZWb+3JZ!zk}CbU!XnO!be?;0f^(rPPEs)B0;+xc zyu`kYr^=%IA$*DRs{^Z*U_*D zFW&P$6mNE+K=Y?*Ofz&ST21s)Ns)M6r8Io)i@V!-Y%;i%==>QPY_zmzm#S9ZWiNW{iP_?K6 zq9y=WkgAZCN$CJ1Qblf!{V`VqQEx85iHQW$!@pECoZplkZ$L(kpSi9IiLC!ye+K_W zpCv50|4NijFtZ?8sEH2ieO+3L{R6~oUmM!fT%QokcUt!Eg|XhS;Qa*sl)=lGTY7F0 zyO#uOxr{~_GJs4IcEw<_%)CFcQ}hKp1G4Z5GHVh@e#j{Ho2M0_8G4cyKWWRDnzSsc z(fxeB?+W+nnmeNoHlVZ9AKT@*wd0hH?rL~$ax?4p5Vc;>r4KU#6iB3y+qDgz*@N*3 z*64^xmZJ=v6tGA4_OZ5WD=507vO)v~IXa$G3{NS-tp>FltZzppz12Tr`%&NbOYAc{ z!B)%_nKq3qDOU~R$E~}Uwa7^?NE8wV$$fXwf!Hpsy@u#q*P#>FOkqdk%(8HUcaL$Z zw$p1aovaN}Y7!5yszPu^cQrZE`;}YiLaq;lc{sb{X}U&tJ#Cqyn%Y~FSkdD)0=zc_`W7E~E9M^uM2-7c#iTf$E1VgN1Q5|e<@1yApnQ<%j~ z25D6(P3_&`hL}FYHT^sw>bTIzE~I)9E4C^4EeC)6#4fHPq#hhd(>1ZDO|GcPHqmw; zZL_c#Rd#|UGFC4>- z-B{smKXIwg65S@Q+;&K_i@Qa$xMPRsF;Ji?CDo(kG2++-sJ^e?vVo#M%nPw?+n1Hi zkPO+lrAi`p8t*vgr`PB48Q4Gl>HI3a0CIGACJCvOqBRWN#oIh9)_>y@S~VcLsP2_I z2;r4?aAptd&ck{$g1617HJ6ecC{_7kD6E_NG_Fe-3D*#$!x0&z-$t$0N860r=PzuKzWg&Zki`$$ zdB@yL*5}IotminGOtamOwM=|}zx@W`!=v990|+s#0{TZR*Bb-aV8@1wPhU3-#niYc zpz5d2ITt~6U@(;KtQ@!5Xr~yQ_3+YzX(RV!c1wpce$r|MC(WFvRvDw2D$hDt4ztW7;Mk;gWw13pZ6CwfNH0v5_g9y^-MuY-MNyixFMaE9 zVd=nk+pxND8L#!?c&VyUWruD#PKOtK>z0zGb>&cZYIYZN8}{rtwa+PE8r3Y~d()1M z07wT}DG>B^aJB10JQ3D9(yHP~fDs8_O3ZFjB4sP(QiM`tDCbhOl<_IrN%p4t2m0Fw zOPRMQbQp-4)D`(4m?v0BTrszXoDj#I_s3+H|=4+8;VgIl#t1$g7 z?bUO?n?TMJ!eKIwWzbSV7#edB9eSnguo?oPjNN>;;+JV5EHBX zsCe+W!G@tr;42j@%o#5}7akXNuB+d0dq6_M+O9GGP?FkimF=ZqdkPzo1pns&Wm-nU zG`0F*%`KI4u;5B;>i4;IH@X;lB{EE0A1@wuggA^%Ufi`XImGV2 zMG;0QoDhEr{Ko&4>HDvcH_Fw%tslj6Yyn0+EGZPnGtDa_AH>d?Hqc z-&=;hQ$>JZ0DneQ_&pU(h!_kvwG-X5y3r(O{Cxc$#t%mYW8-wfg$ zI8Oi}(v0){a7M$`MXZyk1T&si&n;d|GqDB0z zOrthUi*t3M>@Lp$FR(KyHHl8-ksV$9_Wi2UF043--))hZ9A!NexDPb%u$^-{=tW{Bk@fs*=S88M4 zqg|oNq;n`ttxLtwZ~hH#fxl5jnyaRQmaSmSjdS{<-ZSH2QGh5TWL9AQaa zZ*$#PTr%C0lxYwKlBR%Y*U54dSA@zex?U0m(hI*gFkOCwxu zY$d;7_>xTAHQn(w#GI{o5#YE-~+DhvFbq@<(T8n*G5aIY%7 zg>0`aR2)f>s91Od5eW?m2?-VHJJJ`kaUg^UnHg}lW^2^j33>9ZuF`=A?hYF{JK z^wrmbAALE8CTRw{R-VV#N8S8RYpK9v*gVv>xFfn$NGY10=C-VsH;JRZ;E=rAq0d89 zt6xREHvguvzRfIi@xWwV-FPBbR|FpzKv$qS{fD??rd_yqO z63`f8M{jO9=|2W^?%|JN459;uZb+Bw08{$vL&Cov^nhYWy!@r1a`w^!IbUS@OjlwV zLaJNch6bYpN$@07hra@DTlaaINW-;{4I*HIV3hlamPiV35+iI|UR3&!yN>rD-l%VN z(&uj5$A*-{+hKs7PtJB|=ey%0@us3_cxSaSf$qN1ys;IY=&HFz={<0x!Hac&VlfqN z7we*;v6;l!neIb6Vu#F3!JvL%RP1ojqF&$<{V^?Q4w#sQcA?gD{)UP>NK$OZyECWu zXg-mf(A7f{lsax`OEAbycT05V_r!KYS)S(xsW}=cfG0nqw5zn$JUE?vrMea_ zZ(Q`@Jv4f%x$7GE@#=LbjQAN2-0h{ED$`nZwTeF^ju0{=S^?3vl#P{Ph!GW~!^NkV znopgl_=THstf zB7w{ISUHAX;{Gcmrj}J{S5v~gh2-$1_Uy*qCZX^l5LB!7uqcHyc}s2$dCPNo>rRVB zk8|HMPp0}&GIb)Wy6g8N@9yXKtw-;A+26-;j^CDcx9N5c@zAk!TD6A&n96|UaWz82 zqDW=xJzx~tEH%@~dEhZ34X*ew%i^ufNcf;fp^1y{I~fbe zr_ozm4K~QCg|d>?#bGGoWbkK{DyLy$fN~g$M)FylUcmXP*g*M%5>;9`09l!F(@L^X znigpmyJCdUfx2^9uSV20^Y(#E@e}Jd`KdVmb5gLliz8_+7*cA8)}B@xBdl0+gfTq8 z)T25%EFmc4v>B3ObbTne;rz4#ZQgnuzB0#Tka@lKj~^ammixe0Jh_T_mn3H*Oe&lU zww2u3#E(goK@vUvoaC+aIilh?DYILdEab0KbJ~J8t%^W0=4}h!{GPJ7WezY@swqj6 znV>!K(y_gtOM$B2wiwRBo=5|g#7~u?O6k?Y1+iw5Frp;Fkg`%^h=u@-this6 z>$5*FW+7H^f$nLowIm15GBcB;&F}1}iyN$)>N6B;rMj~j?)hNu_@ESHPAP%5D7EP# z+{?A1(WaGHOe5VAFH_X0i+RkJE*BKcxoz92i<5su{r=f9RkU^H6l9&k7}Zig;(jhe zM&a63Rzz7ue&uB73_z_|&zT@05=5f49(w%21MHl^$+=`b|J@_p!CNh6O}XW6Ppv}Q zVYf0HB!v+I0K3rW14K;^zmW!bgPUhBofdD_j2L_{qnrQP*F#&`ZW5%RjA6m)^8HYP zZ;&Q5N$`9{eqRYqr^%7;{0gWFKdY_5o9Chfy@cs~UM5{=-l1qf>ImPIDNSH1d;}TUH<))F$$ixLao+o0wZcAe;C} zUKa4;E@nt=*avi=DPAsF*BQEu;5t;@jy2e01h6%_c53BO^H@XFpPa6YFzA!l%DPZp z#h|7tih~NrEA!Qqh?z4Yo;B&r!n7YxWqwO{6gdRT_Cj^+a$?g$y?ifoGUY)!g4kMp z?nSsDj<+&EtLGNf+9@LK7A_k>$l98v%#KDri-WhXjV)brmQ%a0k<=j=PZLSW9~r;O z-W@`fh2$#@m_DeU>RON^l&pFUP#MwK^uoe_&?w7CP%BxP&W1RkR+j476@?S%6zwg# zWrTml^`ctZmxPm{E!VCL1)6 z26Np>fZht1t$+FDZ5ju8cwf+eBfTSr&W-O4DI2-F{7V|XAe&kI4S$##7EYF6ljWzN zw&6>h?Bw369-8c2>>!ij%TvK?MNwhZ=w7?JmnAe`)q(<2Mk!5AX8W{#6&~Fih)Ue3 z)ak6>+(UkqisIOmrrSem-ZOu^fWpu@M%A-AB6pXS#T zDhlIkSU4^O$z!X!0W+r%=~x#UuUDHcs`><|t+;mgSCyZ)3FFCKE!@N0H)& zOmT$R#XNmvBTa4-n>|6tvv&NeGT$IjvSn)xx%wqIJhW^4cQU9t8_DIgPT`_+_2+)| z)lwY!t0=j7WSWk891X*`Yh?p#Eu!z%(R$YzW((R|M(!GmS`KOsGzWjb=1z188#3fk zb;IelDDnR^P(19UcnaHiwhA}=63wS+h(3BZrZv^_!{&YTP9}HUmTfaKAUVa! zlS2nQYmJWjnTouYUG$W!{f@?GqUmt|MW!m#DGVtSHt4u46D8ZOm(tX;l=y&pbT6b| zP1gMNlc7VU`L%StuYe-Us?*L+<2=fM;-GSJ@AN%4xC3Qq{&^oO{1XB9mB#p$1_q|q zY9xeyBxE|rUlF&?t@qS@2xd!zKC2ieDt~3?sXZlp0gJrWq3omtmTPh6cIllPA$Q{X zR>u=MTOI}95vJge_tZ67LAGK`ulTaUEa@t)A@+}`C5j*CjdWWBI?X9RMC{oTLWx&? z2=_IqY`fFNoQV`W#N-xzOL})G^;ZhbS#SJ}?k!yYLa>;jQy|m+%XQ7T(bA9u{r3ix z(v4bIZ@UX9>EV_;v0X$-3{+wfx>iY6#Q{sg(|x98zL|qH_s5h*Yd`lk(H4cm_GeK^ z2RVdRNX$y5s1Y5E8uA03z7<+GH|OLr5SHLeX@C3Jt~PSv_zU|+)w~r-gD&#^%er|< zvnDxrntj^mqW!M#UptuJagb}x*Bk_d{BI}Vf0Z%(|J>oevP!;;3K6-RH!tU0;_l>g zogxkeX*4Zp&6Inv%A?E$2;u@ExndhP6ImK1*J%A2CB7`Ahlf-XcrwHo({DgNn899EZ^XsJRC3e;t8v5c#32p`XrxQPB6VXkynog7cn`liuq(`3eE{rQ7G7<90zIW; za6{#gRX?U|<+yuWaq=XfYV1ZhYF8i_JP`%a575#ByzRv9h9qFii_lj&644lbBL=)N z9tHbjZ%ElWCS-&{1f(8_JnBKp+Z1y_?j?t;u(LIDLlTPEUNdU*1RP(yDg`3t2Rw9T zePuQ}IoKJq#!CsHgH{2-B8+0^wgk*nh{W9RIpY}|!Mwy|GmB`7e@`SrgwG-`17^z; zl&TmbM4rTg$cdn-c9%ic3XBN9{xmHNN{mPO@UPy#)KDnx_1-ahOxT{4V|#k$WwoOx zIq=5S6rZK{5s+27jj(ll;QLVIeN_(OEVpZ3B^A!$8v_n>3aa$!Ux=|RG#FDVsNE-? z5HW^)2mIshJju*8V>5VXBGWBHwsDzmOXOZrc~;c~Mg>y`p5A7frC2I&*r{pH+$d^p+~ zXe;WzAg76cg`EENI}qn*`M+@pOVtGvL?2)nbpfTT2LHPJy}Af(GfPWUYgeSpCTck( zjT&@8R=QfkUXqBpjHbqC&v)_n#^Z+w{1cALKFZ_L&$;aR?zum5oCz@Pi-RDNM_ChG z_Y)KEGV$GiK0jIg2tN=9rzoC8ZlzE}K^KPJ>$5YT4u1KGb^Or^POuCdmXWLzHjK^(j%cQ*u0@yO?DI0kGER~R*|y`aQ4qpa$P ztDECwJto3@AI`+Px42M%9jqc3nR+;=RKf2mLeth9F(A}FTgtimkQZD2m|s^|=tP}_ zi{F`V5m9B62JGUdBFG3+mbj!; zdIao3A{dY-8-&ctoB!3Bq!W1Uq`c;cn+hdLgV&0it@BRUEE8%-lej?l8Kr6o|FzFI z1rpD(48b2$+KZb$z<0}>{N*mXVP)aw8a7rk5ou1rN~UJbQmV7k%O_NMl z8cF@v8u}o2#+t5;@_+1+XKC_fzphR8Ul<26Q9Kd25DrQl@>h_A*uXwfHsWnzsNfe@ z;+8qesDsyaI};Ce=83l=CwAiU7NYV4t<0iCRa}&Xvs<~G!z8UNU|V!ifqcKUaxz18 z2B_Q@Mp3lmHsm(>=Z18*>iUuyg39>^kmAh^(r-J`E&Tn0jKgvqLug!IHHf5Xu*(}2 z3}YOT`p989@&c$wfI;Zk312{@ix?m}@2lt-J=rA8hFtF^x-jWv%;E!zbG25fJqRz!^ z_Yj;8pZdb()G{_lPfYxfnfkTYiIx{=If`60qtLggOtW3~uoTN7-?vVxMF&D*PX07I zR7^>la;qUXL|}0WaZwO^UeazOfOTVusn&l?eLgY?yD?aXyrnxRN`3R^1S8-C-r{FQ zEONyQL)-_PWVajS&uPY<24r5t0iik<)SP4>MIb$P3jJ8|cwhbXA0j3iknc-bSJ-Bf zRl5lpRudBqLMRn}G!u{VF8fU3yu%ti2i&(tckqLs?5GR51qt`y!o#s1K$X}=~ z-0%m!)pGMKENnr0#pKi7T;}tvF5~RptXsb9b(CZx9R_;(`){KJo-}>ytFQX0^soGfe}(PE zZJdlvjsJ%?mz1>q<*bG{+%4$`w=OODv+1Kea7jR{CsDzg)Z9{_p!jZlE+0ic`Jj%5 zto_tPu-9S{Z`-?=p69I(B)dR7I#cmW68Q)255oDz<|M+a^G(lG7UzAd$I15{C|FW!4%=~2U@Q>92zwrq))J0btw={x!yP>Qbl@qa!Z_x=jDqwk z^=2^U8{}iVUu-v5=S=YFeD(cBJgtrwRER$W(yf;V% zmq`rSuE@iWON`56Ftfp+WQ@&qRasH!PePKLB4dXMlO`uO|xYY+WV1`*($~2`8k9_)-`l&_u zWvz=6JCgMEeL{9uHXh89S{;}T(dSmhdwLkPddE=NM-qSejf)1<7biDX@2}V)peP%k zj^%xZ1h{^Gt`KDhwnz3bGhgWFgop)R?RQDIU8;+G%dU?cD;tE{qGhT8J|HhPsSTW; zCh{VB6V^huS06YhstUzGWTYS>Fc1@x6A~M!2}MG(4TV%B2Ms2BZWIl?y5vk5smzZs34r6_=y1XMZ9g2%0Q z0ESv(2}juj6ajQQRgrWgMsHDKcEjxex;<{pU zes3t--S1FrH6*)aJV`gKXrz&b(GjF{bI3$)BZHz^GA&I@s^xcz=voXKp zMVaN^n%~HZ_3|Qa2D80z=C>CPH_bMMoB&T63Ukrs^;9l5+b7X1pLR#mbNpxx$$;_1 z(4`=pCqu~#37;{eAkyr6vwhqG2S7x;bc8ly@s&l&DHACHRz@e=Mx%NKeR~LKUk%ES z!3y;`sjuxYbuZV-;tC?kg{>0xE`guKjiL8IPn%jto69 zWaymI#KTxzoK@BR@YCMtl&J4ImxuJ@ZcSFyFf#v#R<>N4>w#} zg~yE+JC;WK#@IJP+|3@Bsl2)EA=I6QrnhJ6)v4=Vc%N1LFSm=^+)0}njHgxjxt%X> zSBTonFwE{Q0t*6)UY`uy#$KKKO946zuF@f%a`f7#^F&h3DF4w)B9SKiPWdWzmH$c= z{%1?8uhW%`v(^95yu9VtCB7o{xHFo_qHYx|JC!Uu2`hO5d8qv>y(z@NsQuqi=7ot_ zC`X6Z*p7#(L!HYjACW6(tuAetEuFy+Ya~Ejt*a+7!S@O~2R9Av1y-Oevaum~8^COtjASbv z$DO$9Yqh%@+*R4L#~JothmYdW+n$oF!Seg1sqLtbL@LzHgR|iK=eGSX<(vd(k$IY@ zFrd3(*v>g?nvf~}$w~?yFi_S#mXr-ia)}g0 z=xbCvMdK#eO?2%}u7cRMl^WM6XNI?fn4I$|JUfx#A|~ZsFFW(qV`gQgz3i zo>SLa-S^(F=Q+Cg-%k2n^||mwR57NZN~2v(xjbeI6oCb9uTGii)2{S=3HhwKn6gZy zq%)VKYIKaiDkIUu2$OLZ;LnP$@X+N3?=*~kbeQUa`@$=uv?i&8zlqyV@Wi-+Hk5|v z9l;GQ&Z#sp6sK{xCQmG=58^pc##*QqivUk5RnjnWdXZ@gxOiN*rA3%GS+6o~MjkS= z8UCm;C|{e!P}gdzY<22g47Spwlp`y|XGIC|UrymK1NXpIJqoQLzIvEIm39Wvab{V* zeT7;sHajp;u{R0n%>3cpKjRRNRL_+m!ErKGBYf?W%_Yx<w3gGE_m2Ta#}t02$v=rKa~153^A(6L&xKDr zY>Zeko_ZiXy0+^a%P^^J%fXcGwFD)<=z76qL+>3jNm{roz$vcB_g~{b$6w=rcI_j_ z<|2COLNT*T}#5 z_s9<)#!f>-ny>mLBqbN-BHc4bnw~KmY#&~lT=(-^`XlyfMzV#uO>u~wm!DY`)Fk21 zMMy~fIDI#&j#&kK(?@u2!a3rOP;vkdwygV0GEi=DVH75K`vua{bqwpBYJRm)#lxNWTe> zq|h-2sE5c)NwNoL2JX+0X7->$P4CwQ5_Sw7NJE)-ObMAfDEBdZv7#l}p@jP&Ep-D) z=RD@ zv;sM2vWnZxYXT9@ebd;J6$|5K@PODIxW>>X^4Wp+2*c0ahUPKeU7?bZsv_cUjdV>9 zBHEHftL2kKx~AJ-vprm+LM9Jy(Gl{2`|=JbYkn`2znM#go;wj{@&4&;bhld;EiA_E zL&r`1Vr7n6kT9@8vG-~0)d2cO&=XUwSsqF&Fi~v?BJ6WU4o}L@svnlZ%<&{v^6793^Q`R+{FhW^m*_!R`LG$-qK? zh=mmWO7nnilNOkZlW@J%%kAkcK!gPSO3S`t*vLfl2iUZQ!nYO3;z5x#x?g#GLI=YECO*;a9?0i=(*6r~P`VpmNT{(r~ z9D^@-(?`_X#nIDBdX9h^4uMIEz`6k3?R~rag3#s|VPdwcx)?Fr2hjy#;!oFE#Haxu zzDsVjZDhPH&lgvUkv-kNfW&5^2==Y7j%fd{!$18$TEu^KL|FriFV&2=k+F@FxrzDz z*#at6VZ0O6nv9Yyw1~oM3QDjl(29j7)PRS_pLFK{}D;4!gY#y+-O4AoZk+4ym z#7b{$c-pj7mMRWZX4F-_h(#>Etrnye_N}t)=dKy(Wa~2dEbOMjT zWTJcrTcDfW*BG1ebfT>vz*bb8xLE2a(*jWT9BE=P+9!l*g06T=w)b%fC09|x#`W^b}{FLpw#38$!cs z%RiOMFXPOT9CR66_!YO1zF<|}YW_F`H+i|a-jIq!IkYXoUw+GusoZS4tiWtvj%mFa zohhLir#_i!3f9u*Ok7@s41UNn@|U zs8jer=B<FaF0l=zQ!2p7d5Tm6duH(}+UV*@`btA7&-7cUf|NW5QCW8gjz_h*F_D`J~0 zi3sGhgM6EeHbv{XdFfs4;HDo5@~)_LLhnlpJY!evymMVwcd1RAGxL;n)(Qz0RI^4! z2D_l73XmSoWO3)jq6rIBAAx5ndZ-+`dqFFV*8J&oJlBCj}JAS?!!zE zMwuLoWF@jJ9vOWe`51o0=E~bib98JI@pAMfVfAKjGCIRi1uo>2*T4UCZi8h40&Wgm zIGw>;*%nQMF{YSE@|vu#zIEjAUS}_r{*ixShx!5Vcv4(a*wkG{n@ILcG}P zTE95mfr<9am^0&cca(QBHu2areuEyt?+b)^{Y%j9OTO4i4J9RenAZ$UQ-Dx%+ z4qvZ2)q&L4X4NlIMub+JZP$akP9l#xld69U+mbe97ahGMiM8(-*0=C!o;S>-aYo1J zeqM4&yRZ5*aE5v_Ny6J`C+WqMM*qaK`Z#IiDiF)${N$8RdKI`dw+NMN5q^5VE?1sP zIxuOObujH#;X|v982xLO4bHX=D_h%vnp|mqlIhUr&U&Nm5R|q#+sy7ey-bC_$As#Q z%Y}RmqAKN$fQlWKAWZ*{V0Q}D8k}(dZ&WDEOilorAsVm<2F>0f~{&j$|{u^KX2%Cj4Az5YTyUPk zTzGtwmr#FrFQr~#SnZcoU|yaoJxrdm9c@_W7v_GSCznotu$M@GM@&{G=Dm8@Pr8dC zpkQnao5Z|*f_`+2u7Mj=%#=MFOmUo~*$_fZO4xC+{m{tE7p{I&mz>&d_&5(QgQ->Zyc%W{7>IW+d3}WS_WM zbii;6>}rS6Ek!+2E!OzBN{qmFQ$NewJixA*kI@LLiF^+qdcD~pf%Km*G>>f^H`9Sb zSM_H{uB;-J{y9Yb86)t-8>q#b`5Ph*yYThOM=6S6S^Rv{z2iq9FJSRxcvOfn8X6v` z*uTA{0p;z`Lwz` zi@X#o7JA$X@45v7AAI^Qdq6)1w$UEL@A%=I)wajqiudS=K|j{wBZegYApU0b$31v% zWmQ#!40}QgsT3}c11@0OKje#Y(jXmrYG6OF$h+)@Dtp5!c`xT)F5Sg4C4IW$@QcP0 zVRK5zU?zX z7q_Z#mHhJRcnTffDaRkG7R(o=X(xK*4pOQ5_zNbyVi?d2c?uH3Vpz);0;a!)~ zG&~O%b&_=NKt_HR@9SCd@@0rQzV7}0yQfC48zKgu@jL0wZquC?UQv1EP(8cyPs7q3 z1?ANivY+}N&)?9btFi*9&~kN^SA|YLfE?@!)dFPIgV_@F>2}<$*v+tqEJ>}vR+AY< zlLtxgs{!LSqloP%LOT)T4gz3oo~jSqQRL9xazo3RgI(WzeIvZPD?=oV04H1_*jTVARt%Gsr{<@#AO)8##& zD51pxv+Z)Jn8UP`9skCHRFL?CmYe?hIfA166JM7)-hvvL+>|XQCvw;kP*qQYrg@u* zlACe*O=w*o4Q@u++=9z<#bTM3bS>$vy~aH)XL(PZ2IP;vYW>u&$^oSB|r1~ z`JG$w;FXSwA#dO+i_3Fb$WB9bA$XDdK5c4a&w~x|m|{~u47_IW>1`8i$S*PM)nEGr zR38f%(=FJxtO3O~-X_A8o~!&V7MtU?Oy)}0%g`>FAAOq7XByBkqA#Mj%>s4x1&(~v|w??KTzZu{f$6GU^^Wu*eo}P)98{@=bl5Ne{gDuh{GtSmd zYIy-)Ouzl-et)rLZ;)!sOHJwhKM0yI7n&Sxr>G}ves_pj^P*hQ5M&F3!M%IIlrTVV zdmdqTj!@pIH>pFHM{W>TEW=1#meJF@V2)l;)v3g$PIP0HV-qazKg*RVcYGeUz|Prs z;r^OGF;KBBh`(mfR+N9++o}F_{xozl{=faJ;@55F`4EHuNY7cFwUvPOl@$eLXSV3| zosvO@C29$UYY2g%KNMFPrU_SR4`v8#hhdYTz@vMA!z(}gbt%HkjAZF<>T-Pl(Z2uc z`1Fp#2R98v!C(|6L7mOZa1fcSaS*knQ*f89-zR4EI|wq+OMK=0NHcgsCm`=&rEC7) z`joYAN_-uT>orb{&8{zcoFR)nE5h%nwJyy{UQS3;A92)XI?h7-%?N)z8M1Oo=00K{ zPaFvxmRf(g9==a!CzIWU#Cy4}AlIaGZL?}H?E)kxa7jdwGg13$tO}AV_>oad7Vi<| zWG%$dc-v_(FLp20NVU4SlqW?=G*d=DMJT2EDE@|%(u>ME@hCHCcSiqVTAOgQp#!HL z#}VfqM>raJm?iog$2hodHX7z~{ii7@`7hOlZsy1*--Wg+jb5CP-`*vuTMSf&H@$FY zuo(q+@JZ!WKNN=Hq|Rny=j~y>|6srSQEaa}Ed5K`016umO>VI!G(5PSfrWFq;-FVaB0XoWJQS9@L6gOIXSX?3?iO`T`4-G*|3z!@BZwSU zcxku*=rwW+=eBut3Nh^HJwC{ zsp9I=+?^;S-PUEA>{U$%eCmP9l=yRJxcFhxKoB|s0?5`XRcXYMWjE<7+>;Q7hd$!Y z=2qIE+&EzhS_M9R#kfs<}zQxa#H%&@68%$ zK!QsMR5G)?w-Qmv2*%3nTn`RYOIzz&vf(?|ZirM3+&Gm4fjBp{P8=_fPwzlSd6~!h z+#pkkH7|uzIw*mvaUq;KmxaC}w>9nJ65W?fb}`zgOQ&4Jg*hc6R%JX4B!%0va}343 zGj`JbEy0DsP;d!Y#TX7j)MK`DvzloF-O|SZrp^gIU5XBY-9I>v(>#RBzo_5kpPd%l zC_HDypMzr~y`g*v?sge&c<&9A5nF$nZ?GZ?4)i!jmTE8bP@ut0lvDoX1ZSox8@Qve z*~^YbvBGs!n`PWitFzEpj2i;Mg&8>sY_Hx&qw#R4{s1`3TA5f_Gys&1eFGfVq!YBMlunsN)=m#F(VkEX z!;WdWF2Av@g)dlOF)7XIYn7xbXg6iJxoEHpdi;UCf2ZY2H<12ioZ%)W`8}qdmg{xV zBqshe(cnK~F8K&0Dv_@@YWuHm^q;eh{(7U%PIk_J6~OHuR-bQqs3Cr`_;(f^PS!oQK+9NP=GHrWpUop^E zKgWCvSGx)sLexd?ip6%??ZRGQ4^TgLXm^r>sz6;mkO|NiGak!9E;Bq{s1??`zDSzV z_8}79VTydqJ2nnDV{|oc8Y1P;F&qJ#Y}1Al*zUB;N`7d$Z1~9UR9~e{PApV>6mx#H zUC^PB6?m=M46^B_#1aTs%-4Lw75?)!W-_*;X(|8?jr!@IUtb*CfomRWd9uuq%fB3} zCw4r39q=;I*5on5uvF$At=mjV|KX81ef}{ztU`!`aNXP z$P$ksx^M!imST=gD>o}BC1hA@pV%3P(rAxUQdzD?QGSYhhD&>f#2b#!fML%P5Y+>n zAua13Gp^R|R3`2q<)2T^Dv^^Ik6Aq}qxFi9Cz%J~8{%NdAj>6lW=qJQs(1aw;l1P1gh3$nx0+oA-`l_)=Xbj@v)OkF>3 z32%T;ht>3Y@_<|qbI??99i}{;=act9EcK&{bq?Fb>zhR2spp}77ORF+7JHAtC{h+K zbCMVxsygwa;)WnyZt%sz=s3{A0x}d+55F}-3jr)?H^U(362?jeQ+xtHx}vD+d_BS9 zaGiFwSc%sCn>=(`IN-DSw8Fw@(x)T(6|(vTy)z4@;+1B=kSlxI+&b{2HM;C`glXem zhn-@{k$%-wb1H9i=*w&P?(|L*rOIfKX5T1>HD}@1jE>wg``n7^L%uGd-Bnk-83o!& z^&i-374|r~O01@7EhYL0ZF3GYtCQ&H8U=>7OmH+V6(})#mX!>jAoO{x9mPfa9Stn_MWEHul-jv0rBoj7@|01gGdtl1DmOw_ilhU&kNTnilmd zS(}6a-7YI?e2iys7X7ABWAUCh1jpOh={Kpvi<<|{H@cLjxstrH?5{u24hZ(f=li$P zou#Sw#J|`uGUvWxyi?%;J@@c$sz366ac6Fxm?5G`|HY?vJqfd=7X8HEY+2ACM?`ob z^jp}y=E{SNr(G3O?i=dH?4cJxASx1w6l!iOnF`d5WNRj8C_v?8LlRA@gKs)d1#sjk z4RYBg&IFU<@;m8E0VTO(s&LZkpsCFTVv{=rD9xai#ylY`weeF`U2S(!adEWVf+wBI*$@Or(hG-y!E&jbunrRrE}42G7h z6QgnIh{A5zSgNu<7onfHgU~Q@(&VhJm}nGQv^ zLqLA;8O(us=T-8juxonHC6!!IasryXCwJlt>LoIf7|0o(1+jk$hc&TMzc->HPz`L` z7)1;}S;8Tg^*a#RK0hvbRdZy9dYH{fOi2*^+^$e3mp8i=+ymE$0Se}{?>2HOTJ~JZ zEpQo)gpLmTB1FlA634D3I&z)2h_$wMtGAnR1?DkjelyBT0PpLK+#N z&T)97xm*TU50~gq+R0YSy>MK{-Cn1Qc*lb)lqp5xkR}#`d;X&w-=p>|!Ir0^Zw^~v zp|t~f1H_Rlt#*6(NJ;^~RPEd>{``}y@54a_SqWV3@q6VtoKHNifE4|~QQG1*=dx4H z2Vh-=vlTsc`vS6^&O(R6dG3R*D?Ok{%|cY;woob6+}mg(L-Kb=2?n~9Xzby9M|p$X zQkQe-a2DxM(o6x++xT<%WZqDRI`8uNojlatIn;3p23 z@=A<{gpTZ07|BdU%CF>O=voa)X?ruMCYWAowGnYH0cZb{yuyf`jX+9@!Iq8twqtrGAn6=DnP2oK4I9*C0(vK zWU1`E4=|g&B)7yw#;^MIr20Yzh1-g1 zOcG@!t`dqpM+U{R5$!Y%gVRG00*#Qv5($G7Hg2rijU$FY#GYY^f>mml)T{l%#1TeXUhk>o5viBe!l2w^B&jx!(l4po)+1p-PTyFfC5QLQW7vM--R z*qk&0v}8PnK%Y0E>}QGSg~X4sGE>Zn1h&ngK#YRp!d4Q$!CC3?CW%5cL#pD*#O-S^ z@f2If{Mj$s|4a)dP%Xreu3PmUEgAq3D=aPsW+al(w|` zJ$(7!Jzz4*T`SdG)exZNwH0fd2SBH=u*xAJlnm@XcS!#n^tVFc7~4*oUN>#sA>f1%@l2*_jAE|ft20fOSfi}qT%7>$e=43V}T z3q}4fy%{QY3g}{piV6wD7HwY>C;`|lYPAkUQO&Ao#N82Wo3yJkd5B-ezk+t--=8MO zzZ(4rc!5yqbqSBu@f||pjDZG(x9SMeRJgr_9r@f+il2)YEG8nrZrU#5N%v9;A2tU! zlO$bl;hY)^|`;QVbJB}LAHuoiXFz=lNcs6PN+K)y*ffVY~ zMIqvg&E0D^NN)ki^K@LKXJ7obFUzmLk&;(1??mi0Q}!e_@xmLZ%f zv#j#G|Bq*t8~(qRRj#e@RpI|hRyk-82Bky)t750BkEzW$qP)$fLCuoTIKTx5PZx_+ z?#5uHNDqAWl1T+Ol#z$(O$oJD3l$!~z0&VsDUcN4$$2Fg_~jAVE^8tO35ER2J)nKd ze`Q0!|LxZ!p$LWpgs1pUVaOO#HOzHb5`n2WYrr}SqK{ah2rI2w)kTr3%f=?kbjpJB zim6h=Ls@jG5qHC47E|t~+oBTM!&#ewtZnX{f+?-Rc;Q7ywOt~gBo^Bj??omRZ*lr@ z9WTMexfa)Ca>XyJam9FPS^6^P77uo7wF+R2N{v?dyqqRjE%zOVgW$zoHt8{t_d37a zIL$C8&J8u`mw62q;4IX?DojbEuNS9{sE&bSH(*6Sy3Yum+@pOT=%@oM4rEF{oMm)l1fq5D**@Ht|MbVRP-BT`GF^7?yaIwr$) z7M-?X`huJ0Sl?7&f{tvxQ2pMhrGkHdDR*@W3pclGC?pv1wD@Fx;IHj#ra&|c zdCxAqE#bE!2-&1FA>MlHHeU+g)0>RzZSMne_*0Xjbb*KznYsR zqM^CybD>%T(^xQ1m`t+P@bBDyjv_WUNE5~_Ah^w|#8Zx+6Tb_UroI2;1axC?fwd1R z=HehXp#Lm-`|I_~e@IlH(}Wt-fWvqxCk~vwsBV4KF*9vMrqY1Pp!#WA4DtXfJWtp_ zefSrz+4Woi^k~M2l$lesIGX%^w8{H)IC&*3?Eld!w@1bG%r3mF1eB<5iSY8;^(Rq% zTxztj@x1&}%2F#VToeVQVao(!^z~K?B#2gqXyH#x<*jnpDdCLrt|rT30P_XDN{LDb zDD*PtjVmZavdQE1++A?TDz?!n<+I;ZU?;bvt_Y+xbAK{7dtS_27e`8T!_daV3*)P0A z(I@}8OE5t(Z?JMgYg(;5NT4b5Vw~L?aB_8C2wZZWg&)08)^D9S`+h_(9MbWcaH{N; z_|P0eR?SNj$lDrvhE%;B9#YY2U8jd6SE_q9iIC=~l?wy}@vft13}uNx(m%G))kZ!C z(;(x>F}tQ)=w>UJh68TLgATJbdkkfeizO-o*Fqu8850e14Lrf;1>gBU8<_}OJR}S` z)47^9D*J4yob?HhE}PkN4h7z#VtItWL=1o}P7RHtd6ec!Wh~TgKinMG zx`qBC{DHhg-2I$NO|Kd;%Js(lrw#nfA!)x4D%JOYC8YlP%TecI{hw6S8puHwB!vzm zL9w?+4;Cl637bzSrVXQjM4xSQBS8$sveFIpWy!CXC^SQR`puuT)eZjDI<^G#BFYp0 zF5ufBA6Z5W&%?RUx$tj)zTl-lxeD<2K{O^14x7Oq%nd!%7T6mBC|Ao_MGY*?nvTFI z)1>Lh!&}+_LFz~*c<8E+G|6IglHr#)X+2l6R%nk2%?*8(*`c+EwcjlzCsJ~)syQ!D zszdD!*dOxCoYIH$%d?~ zRAoqrcAGT5b(M*%8~Q1pU#3Ai9Z2&!;2L@-HJL9=vyy$|tkS)a7yD}X?lZIUZHLau zMg22{7Fb6^otqVkM*NUk`}~q%=DMQ23&}z81O>*9X6al^-fX7`nCXqaIS1tvh@4QH z-+Ve;pJ~=$A^jGWTSdjaPH+lk9#gmlT*<&=H~hhFBi3`(@mtO!;?^{fPF;q!Z6}G% za0%I}hjEgeGzM#dsJKh!`st|2sOgCbi7Bjfd*MJ2^Fk{M)0=aA7dFbgBVo-S7@0n1 zLsh#@7dGbD@z&owI`?e9TnW(`%KCahUUxEpDtz#(}OW? zEGvpPCgw}pA04dY%h=E77yg1>?R=l(;uN-fDb_34mL+j_FR6x#iZOBvzL7dDMifZ- z7M%1GeU2Gb=_TmIZ`Pr+ALpdy_(yO)iv==kopa7Pp|)5tO=J#32IBlE zN}DP9eISZ~gx}8NU7J+Wo{sZ>*(tQEA1s6^gZDd5KZjA+ozgdQUBOx8bb=}#&{eE6L`XF^J4k3st0XaVi)sUlqy`L1=w!G~e9l_v(XS#BL z!GC7PVG-gKM99IWLJ_7OZJRNzxY5a&8-9T}Iv8$o2qA%?HzvSD_m4UoRoMf=wLCfx z3#88eq-k#>$9{K-cc2Bj(4^64*Pxe{YpB^56ZyftG~uh>U^f-@LtHC+Y+7_Xg`>9mG72~P%&#K?8cm2= zEec>&ISVS|zHB7RI?d|aP@{{LKW+=ZGGlSfRefkm6*Zyl1SA_tmY3r5PGC7M)ZdM0 zR9Kbk{X=u_@5w1mD#d#?MMxU)gKN2RM}uhY;J~pGaN=ceQI7}3)z;&aQkP1elKnef zCIKbwGyG<2?Xd#DqI4%y810_ynWnvaO{=A;B^p5&Mxaw8OjIpNeRL-S35EXLe~hU~QTxaYQ4=w4$|F%f=Phr~ z*LC4xPd_kM{1D1)H>0ldJ@6@C`BnaO-JYvkEMa@<+qrx2L&I}9a>K@n18gy%!=pYr_|&(hmzE~i`y|(Ewt}-q(YVkkeU-#v7lnXZbe){$ap@{FCY=Z*pZe4R;qFL86Dxs- ziu1GBGAc4RZv%vl$f#R{GU7tt^T2)UhAL(13OGnZf0G2d&d^NbM7<-te%K0!-{28zgpTw!eV+FSname*Y=OAU zTHWYgQXKfzC8Yb+@4_wn^%q!|{!L0M%4!%b=z20eIODTgepL)BC6Ca`)k#?a1NTXu zVU5!BS%MaSF?fG!?jtOA56(j^;*=+UL5Zv#HYYC!*^_GHb+r1yUoceRulhN_^a zD)z5W)nC`M>L!+!0P}x|r2kDQtLv$unc(T5afM@Sfqv(3oL{;g1>8Y#4o zx?Fu9+c-EYQXA;z`YgPei;viCT@AKpJ>Yf3 z*>N`5hvq$a?znaRqlm^O{dULbCeW|4>g1p%A$1-PgRDyrk`P_{WYbeI>~@YgKs&7Z=2R~ zGop8jIGT%SHcak zN}WNL9sFQFY9%fsMLY=5-*Y5vSwrb2MDpNW-*f!d2hJ_UGGLO`hY&GDaJa5=ozMpn zQH$>{;6xrNO+Y0G+BUz^j_WWNKmR18SFQUX3kD|G;Zm^y;`S_?eJ%fN>XVx2M}uVzVIr_(Uk%Gz@5IR7aN^eV|<%?I~F~ zpWmqoim61odx3Yq?;pu6vgZGmZuJHOyM?Nm)MY+EU0iZjZC+#%CEMQ3=O;6N;BRl$1LZl{=J$ z6ckhXd~p8!et*(D1{WyP0}2aD3Q7|S#n{{!TJ;~)FQo80+JGcyQGX5C`0GWqhPwFw za+r(Nd=0>`M15yUH|PGM=%P>3LzNg(eBk^gqk!=fS~pct+8l*3>;OasgU6S#!Ol)s zkN70bD(0q#qNYbh$eCGec|BFpHF?{VPgM_hH}N+f0jien-^T2=BliJ0mX=-YcYYR! zEA0VqMHljFZ#O&CewOZIX!l@pV%Jn z7vHsCl@&+Jden_OxGJ#)Yvlcy!h>{V&xVDiK+P=5s(-g#0O(80#mi}6U-m&;bqW7U zzZUKgmv$SoSFCn@G|b3t*-9>Cr$DVW`UOq5Pq8a{8Bah@iPXByene4Msowav&d?nq zwIveeh+FeM7Gm@a-&tC8K};9#ZrfmfDA&ih{iCrQheKqQ-KH$s3K_gG4zuPRRPoGa z(n`vtpg2)w^x`92NOlNCyz>=>_P&zCiEQRa-mQB{98{ml>%+ldHM=I;H3l5_dJNBb z-Y{EUuepwv`^nnFQ>Hk9d8QuL9bl+vew+n!a>u4+uw;T9+%E|JT2Ar z?39dW)b?7qmchKCi#oz?sEEoQb{7L*z-F-tt`~bBH$6MNi*QS|#_`p6U(sOopotkT zFKHM$a{JC$v0LH=sF&!a?|YG_*5yPHho&obPmP<{zS2^!ZlEX2$Y;Y`YC|#{G zEb5@Y0@w0)n0)05uHfQ74|gv(GRGJ&T$(v$4`2vDJu{5r5e-@+e(N#AyBx$tl)h;V zpV~dEd@c?L6DZqJ@|Eus|JfYwbN$r<<0d7#W|tC^`X(9=@fFX%tamV8WAyoB zOuEiX@IZ}rM|E!xvUV%e@$!u*Sl|6gu+SFd(N(dFBbVn)PCJdi;oN zV(a9@iz5Njlk63C{$9FvN=()$#4q!4ph2dxJE!<)*T>TgmbmsYv0*sj5cRj-phkFH zO?QT&sJ}OCI@)K*A9M6SITYh4JC>cr~052DQ9ioYE z&M#!m$`U%({Y5{5x0YxO@^J9DOwrv~fNeDSmttlpP4NZQ#_oJGZJ}f6uk124C2DlfqCHUDE zl8hA^ZMmO}^-I{h(6=6b)2&FD@jT1`qrxMV#=C_mB)ZqEQmr;n+9_=Lc6%2olbW1f zYcB1MbqAZ04X7)+IdV`oHYLS-V^8PyzGA9>{3+Dg9$d8imUF2!Q{7O0L{u+`nauR| zWTds|`byt;+08AnXqf00qs0AAfM=Gztb=^@#`fkdivgITn^N3GkmI2y)<7N78gnPy zHB*iFm%9=zjSX2Nh+E!A{2RYa`!{j+|9wi=Q~N^`ngao$Feoq_*wM)!Ks4cWqhh2r z4VBW_qCOr8<21aO5Nm$@z6@K`+FRm2_kPfL;h>tu>|+t~tLoRw#QkNkzSgeu%azwh z_er9YZvg=T;Kq1A!dYqK5_fc^3)p5%(^SLcIQ-#E^(5mymUgwkMG_Zt} zjL)c6u4v=%=_zc|D3)m?1^;97JU?#k&U>c-p!{R=+*z%u1r(cQcFfJQ?lrKnYA`(X zs!(BK>$Cp&z$x;e8IDg^6XU8gcL%b0w$}~YkJI6rkN#uxob-~BbXOriXMgojOg-71 z`t?&L$mSWt@zr%Zx(Ji=kIi#TcHC$3y{u0(wZ5I-)z~(t1on@NkUiw2YR=uH3t&5) zKYpU}oBc|}mz20@!3?${?(Qc-(2&!##2Sy7_cA|AkalyZ2g-tqjI1E5j%sBxRp@Vx zghl0+kdW+`=$E9BP>61&-38Bzv10JB)&BGmYHP-OMAnbg`_ov>g$ljkj~4M4!p#fdlX181L{dQ>bz8QQyIn90Z3jMp}-w zLMBqbldo^`^o|dbHr|P03R9MQDpW>yietQ4HABe|)|j@yEq+j$H36DrKZ4uij``!N z9p^H$NHG-+j4_iadN(O7ZW9og*oTCgV*V!0A?SXd#{IP^KL61{EE@ETQu~X)rN*HA zl>LY#yrjZ=jjHB=`YM#4EZ1~;h+5tS2z*WVZ}R&& zE3KeH*s&xJ`}qcvkKd5W$^o0#fA+yk_X$_B znANqb=xk}O`8_Lb zAqo+E3}@SEL)NPJotDItXlQb`qs=SCuxF}@*>tt+W05EwBnd_ju(9v zSi);NhoIMl5ZsDE58TtGG>%DA&Tt*1Q{g(DOp_nQq%6*?gL^6q?$kE+)EH4sAAOrw zztxp8XylyRo<7xf8yFt!AmcAj!&`qW=RBwFO>T2>0q0BT^6~wC?%ad3hr2NJlZ2jo zC87Ypns;KcdO9_1QL0m9kX??eVlq_^&7aGW!HdsMg^j-E_#nfk(CvGPU2INh4xdcW zIjiM|V=nwV!_vU2@l$o#2D?S17P~Z;C@sbb&E(4lF&@h^=fjynGwk>cfyZl@yW<1Y z9n^!Fp@MHiV*;iEP@V|4%VTE5@vj0%j>mAyDG}ApCw=E9S1?aX0-Qd51dGBZZe@wz z+4UU&qHTRq-W~iBu5<)B+RsYaVmk8KA~Q##XRTMHY0NBK?~-|N=FB~YkGj4+wXajB zL+p4v0vw^jnlT<%uAWu;4=yrbvr`oX?i~?R@A0iV8N-7(A2RHzY|%O6Dh zQL-d$LxwvT$rjBB=cpuI&E)#Ave8gYcVW=cHc@7R=E%ZX8FwiQC2a?JEqv4@koT#8 zX5mpS5Cj8j3LWIznC6fjaEjeDOt6t=h9be%X5(CkpReF#>d|E_XyXqH6W|$sYzAab7IMZ0FN~jlhwCyPjM4y(R>+J} z`c7}E^iNo!YFW|lO2KLoFL?Wz$6+{CMT%jH$a0%fyQ|i0PxD;O-~`6M1%7qiPfp%= zBDw#r|6B9=;FfOiplgW7us?#*w;ADaXW7lWgj)r+5{C3s?}f}gw*FgB-}HochMu|= zdDS7^;J$lx=u=rnfdprOGbZ(Z7n)GcdC7UpWr5r9kLb|#OJ4k3a}2^i5L?Og?5u1PcxF^SIos1K0{RVj>}KOS&4v6}N24$!bP>3< z&gT@Qr2QgsijY~8B*j_Oq+kxYdY$NGj3S5;ENkFCAFXV?24Bt_Y?>bK+dq=QG3|_c zUJ#2D`B#gGzpiUEtzE4DH>V4K8bOFbHZc@5n0+ZnG#Ot~&O+-iA7y*`?Kb!l!vD1| zM)_AG=<`ZA;;2sOP~;4rFRM~?$&&8@GX7I5NM%CC#kLq~&rH4}HNH|95dKCZS3R$|1A zkHbgOaE%Gj)Bdxrfd#E=?#rU{(hvp!*7Qb`tZFXYv_C#;Q-Sh6$~ALR?2Sg2KJ;xi z*?(63LeuPHSc3G3uzDru(D8|+D!DQ2 zfw8zPsJd<3&DU?HsSK}ZMLm0hH-4_x9!Eh9Sb8wPv6sv5f@QEqIV$mGx~0gLo_0eH zfX&9NuIcJFhT%BcfEQg>^fB1aO&5Rv(`OCdHXX)+f%-t*Swg=J<0jw`#zUsClN;W+yfg`AeMtvcz8dc5%SZSG;d6+h zHvI~xYyFBrQGfe0rm>#|4EfUk-psI)nX31@ff~VowSg3pz$j27NQg>{7o#oUVWn9N zasNJanof4NvaCw~0{{)m`>5jUz5?ZaB-QEL9973&AZ2rmn zh@@?Wh7n$fd>ZUtue^sZSG1=v4_^nHYt*F z!$by(07>Sj!1X&$nt|6Di}>*I(bw$0r`U5B@1JNFtQ#g!;{ik$MkBVGfRc)JV~{UOyGp`FMQC9N-TAeIVR88h9Y72ino8eG1@L`%SS?eE$! zEq*sfv$)X~!;{zd9RNAR@%oMp;B_XwMAW!mkGnYjSs8Z={%*NBJh`AMNLHg5Q+Cym ziWK-D{{l&SLv3M5mgE_eX)x>Xqo3!bJd4j;}+G;%qUej?&) zytLwz*b|Z{K}RCxpDwO*C{CcK*w_{v!=MO)_imq$S&EF{@f(W-y?IHay}zxFHhjdb)jNBZ%Oz5;OKXhD4;u6;OOIvro@P_p#-Pxc_z~D0go3>v777*)K%KCUQ3TBwP)4Z9H;L1w|27cZoS`O zazlM_?jZ8~4q5z35Kgu2lhOLu4yQRXY_jL+w6HFm5BVTqEsfW7T4su|rnqRaqq$&j z?P~xW>p^A)dKTZ-=2@PVMtCZ}rO^?6Td9RSxZEmT4fKHSnDm)HA1~xTt3%qer8#!@ zmnPKuktF&3xk}}*`ok}F6bU9D;9L|nDGe!wXc9_Vtw_RRIkC-81zo0Wbc!vP=95MQ zR7<6?cpKdZ;ZwB1lqV-H}D6rQ%NAO?uLVQ9ZQ&IRAc*}3-6Ty_^;+5sZkPW8StM)YJVZq75+;U z{O|3Vnt>LYD#iwO;)ux$jc}p@yBf}XVm-6y1Tq_3zv+Q^C(kwm0roh~c*a}G;^{`Z zp?(F6kJZC^{BhY<;#dB_F_~ECN8YD#q325 zvvK^OKgGiARH`%(0ch;N9HTgDh?E2}fo**BhPa12HamucK%WHOl_#pvox_CGXjT&o z`oTk>A&&F+z8my(e+mDdj5t!AEZlI+F}z<_M^8DIH#Yyi>wHot54xNsCEJ06fHh=+ zMT17xM_Zkt$b$rRejM_xlRJ1)l#M1pwU1~}Jf0}~B=T00GQr5`Xunx!f>A+iK$JDo z6OX_y3MMN;SYLLe9*m3Uut~VML}4>660*elpaCk||WC1xjmj85lc7U>A;Qdo@Z}zIJ$7BQ@<wEA6^_Xy=A_GKPA8L@jYnB8peFPU_{5dRV3iM~Z14T4b7_tzB} z>3^ozK*;z%70(8sl`@9Ep$J#{L&1v#8>6C$D)(qtD1-1Y4NA;yuf4t_^iq%kG}hd= zS%s%f*F6Oj_ZioX_~UXACOp6*WN_QIc`c`&vn{{5EN>A1_~8$Z(rW`%B8<}Dv@wVX zl`cH^2NZ-eAW&F>Krwf?D5}q1zsM!7EHwd;<6W4=Ix7byY-Z@;iAz(iloPs|b5`Um z%Px)GsMCI}hs(;McA}%0jf&Y1modu*2(6+NA-1U@X1J4ydr>hu zBS}qq^`Di#3|C>^gZxf>D7bxD>5CF+w|*TpqWklCzgZ9T;%BA1n`a`nU@*Gy8m^Fv zueAr;tIn7Wt*+8*Va5g8gQY{>!yIEyQ|B6W2L_6U8wQZrJ8+fY=@j)Mv3uGa42I2R zZV@|}jG4SCK)yKW9gZ?ObMtr=QzD;n0Cj2?Qs1qYOMk+0SeFGTSyA^`+y*#(zc*Jq zY52j*u!9BxOY{dI+yrQC+bPpX=@7)L6#55_kmzW9tRuAkuzdvU3A_rj$K8z(%owoZ zDyytmreT=%{9`eI{|@p?&0utM)FQG`m!n-Ymg7NXP;>17^RY z8CHnFZ_ZO0lMZ=62tg8p0en2*0N>BE-FL7T)%eajlFl-a2Pv9}*Au7> zPOD9c*lV3k!Fwz)7z3rbt-pB3mlooXp3q>5VSqtA@~!q7tYI=zUy6*?EtsOu2dGj% zSbO^AEp7(A!<+_`TUGKUv2X5MeLRKNmb4z1q%bzD(casXJ&XF+(&XYeY5gu{?Tvf8 zHxN>a{~$$?m4JafYuoOw=TZeXre}vOt+kUkeMy6pXPDiYXNl{;jyxW~K%Dc&_c`VL zA18-Yk6@fN5K{0!Wb}WoA%Cm?e^Fud47g2*@JD4GM1_RA)+f=ZGQjoRDR`rf)rXvY z80(HWF$n0ZZo3P|uOPL_@)r>5WI{reR(se z(0I-W#-$8w=SiHpjLKv{bC7O5fGOkc%x$O*j8oY_p%KZ|wx(~(@+I_YA~HaqZYD&X zuAt*>N>a1HX1)EpFB=A z%;AOuXqJ~MjHzTA0F+^mrAX3%mle8+CsILN=7k=RK%6355<7Lc)1dMc9VK|012Gns zmNXbCFEGll1*UuNnw0dF+9o!Yg|xrYPSWJP4K05gp1C$2RHn%mdvK<@vw1f=lD?JL z{T+)K zj$<}a?mVxH>Ya(`@ox~*Ovf!HNl;m=7euZ zHvzA2Sl-+K1hFJ1R0B3|-r?gkC){KN<=QPGbh4#>VF) zKZsHc&_8kn?@{{c_@(dPA`GKm2n*g&9)UxYLzKkr9)t*JfAB2-W_Bf8$!Icr zC4D(lT~R%{HN}laj?RSH!T#c6C3KlwPA?hE=YC9bdE8$aT*5^N!a>m9JtlZio4-^M z+LK5XcZG6sFRI<2e4j5aXYR1yg&x6TsxCJlZreo~tZwzGCEN^BGY5tu$JxDK4 zZxb8qY*tlIM{+z4Ltf0)A+p^sh2v$%?D*=P&1`HhQNM@wX_`vL!$%K_5v+o7A=dAG zpYW+#@3!|7;JfaxPTH1KY_!#WdJj9VQtsu;G7U`G7IH_S$KUqTObfn7%?1IapP%^H zRNi^LeTA(@0PZDEgb)(?qk>ZoBay#P9EHCJCZu?1A^pBu6)m-0dg|MvXi|kMaJObJ zw7%llsJ;b^TtGDxNq!$FNFG5znsyEUR_a4I>Od&d6kqt5a^$inE0w+|on-~AD}VG2 zkS3W+{X7ucdgW-NO4o+m$c~xjk)j_-mi`F=lWOABQ+~*r(BX`yz)WtaG0wxaqax%n zy9zn;jxvaSa#|$zYG(d=**mjlu`s!Yn237^@U_5jaFn;H;8)1QbX}&&&>Q!b7!);w zLM=~RGL}-F`3?aGJeCyWzOl9^ve`NN%2QO>T}IP2n9#x06obMpDA0T88ud`yw`W%# z%P6xoupSoLsG-%CZ0Z~2_!pX8v=~S%Ep3J@*Ij&c_MeOWLqFr1Jt=Kvf2$c9%`@4K zX66wKgwY<#Ylica2=*!_5EZ3ciEUHqVAHZouF_(-v};dn4Alwl<7dt@ole1hmoBX> zJ-qCpDSU3dp-!TPw+nQPZX~I~d=q^TCBP6Mp&Q;YN}z(*-n$mGB1azn*%fbdH}}Na z5CI=6h=Je!la+mT$SqpqxAsV6e|6Hv&@I#FDLBO63N7}+rYWIguAeTjI<3opndmPO z%*PH7RoQn|`=nJ3X=ll^hnOs(BDnKyw;)UTRQffgyy3c4Y%FWD?J@4X8V zwnD6@tlHy;tc#|@!kdxs*vvu#>TBIRZaEB=WQK^jB{?_&d#A=e%>Se$BTk*K{{(e~m_Vial__A{g0>bGM(SrPWGM1R-i%%<;+aS8jOnq{G9i-FDabSeEa#2}3x&|j_VU-NrEz32_ z{Wc3jTE+4E(W5U+ToYZY2BRI$%a;Eho2TOq)EPg{pdfXpi#H+IKLh=bp!maL(7!kb z`uooXo%=6eg8AQ{D!Wex4rrh_D{QQ^-o<#V{?Ys<{~mjK6}x9+n_Xx{85x$4>e{9jbb?@ zTxGv~@m(YiVLwT%aP6+w$I7OOXL)PySH>AhTvI`l`%=Y3@a?YINzCrl%rDH(`3W3f zr=o{`v}MTfF3mz(@E&HShdmhQD4t}D=Tyi38IeVQ>``|vfo@wfE`9M_b>+I@~%cFl_Ut(5pOXZQ}`rtd*(zExCPZ6{UV zG1Jyw_z8~9*}!YLm1nUywA9C%feSmc&U*TCqP~9NrSPMy$H!;~UCtdgAT;V0J7a;> zv)j(CeNrZ0ix7{!!TcxY7zZ_tA$#v?qtu=QjJ{mP$Ie<*C`n!Q7}AT@HK~D{i&N25 zZb5mR4(p>>Z2X!#8~47a(zb0ks8`cVM2|1?CQ~B6?sm}LU29k8mZIJ?%GLOZ{twRH zGAgb`+Zqh+QaB{IySoKPKY&bZWDP+)KaX7v&b+8eMluf7TLy zN<|rx6|#G!XPBOgAa=xniHmafSFFG=A8r|X&6v!w6<^1xuby{nlWoNLt?$e(A`1#laW1@Cdq`_I$j+ehtd>eruSMEA zoOT1ib;>t;5UndLCChhY!9tBPae95M14Ab@c{Ti&EpOzm1C(F!J6H7x65GtN=H&Lg zM}DkrCRY;1yj)_v#5D+2SyL-5Fy{m!0=N9H8FYM1?oAKTR(6l&JDPK@ij!Pg3ImuL zd0Ybg$$3oclUTMU4OFuId&7_eUbfqUOS<)8E%Ff`Y$xe1zYq}SNM{BnBMw(B;E&vf z>9Oyfzwt;Hxhpa$UwgjH2D*kO3y?8d<-`C_04?h~avXNkJ`#%RJWU;N!M7Z6SBUOX zzDK$t5xH2WDl=6iwFO3fK_OqkCXP(IJTjwamG(>~mY)aTuQ5awwx54W(<90Kn$WdpFm!m`7>5eAn zq1>vBF6Lp}iVYjbsFiM~GS(e}W-3qd)s%odD8d^^fmS79+j;Y`*-^T*Qsbk9xPcoF zO;}K1K1+JW(1B`hovozePE;!0Ab-NS@|JcCYeb#Z;-l6{5)Ajq&wY%Iq8{@cb=YH9y2 zpXV7x3Qu6a+Wgm!>Yq1KG9bUsUS zvChv;NhDsc4;LK-Ncq#|*#cs$bHx%`qaW96%-1F}YkM@2m#P=_%df56Nc9+j0)$Kt z^3n>q2$Znj#fQVpO|lE;*Dt=21GBnR4mo_e6EB?zMd3I%y3_9SRPzCymsEaz^|`R)PAN<-7A??{@qF?RH(Op+hJ z`%3Kb;-H)=dr%V3jFC ztRy3@?r3Z70M>&4Ter+Uaa^(g6MFcxQVcc&E)9kBU!Wc%p@TS?g?TB{**XG|EdAtU{IdqVUi7EqQ!;k^;!(`C-Dir=Q;q|c^MvMKC#)7dt zY&~ZFW2})8imT#@L3sZ6@7A#f`DMS*1>u#*v{`+3fsCwhTvnzx#ZotpeMWkY2|yFf z3BlihQ2CAh@C}OM5~1iqU?;7fZAZ~M_~Y*k*U#{c0Qd0wcwwdbj(l?VGd;CpZ8fOo zdbY;~7t9nJ8^!Kjrs)yxKVIQ33J$A1`1Sq4fBDa^@Si6`;OkE?<)wz3_1}U_?kaL% z30tgJCPMx*7Mt-^Q8ATZ$c1PUAzj&^PpWgW{q&7 zOR^p2O9)IO9rW*&)@--G`<&m1MDmQ~`1bzF@$I?3e?0(^1{upQdwkzx3!M~3Z#k_t zPsfK2Oi_z>5?w-`jAdCKSU@T!p%wDJGxVbp;_mJLsZKbC*~?Ti<#YNQmK|{ zCR9p5>l#;BF~vkzL2%?(fIpUzwkZESU3Kz^a|jHUiX*6dXVzZZ=#pBKYanEAa>z3( zs2ZG&MzC?K-1Z1~L)niOA=$4uHP!8z?cE;nKQ*x|Nh7|B2! z1imH9p|~)R!i}7yF9LvYz{;=%8M3CI>IBfDxY3Ji#PlYA`j{t z2tOM3r3RP`AMKYWJ9}I})%Nb078ZamwAQ<@Xl5$V0wgve2;h1P>cX57KRLqOrlD`w zcR_Z^wGS8mdItsVPZ>J|>=7ZL+tP%%#qpx{H_H=>SZ_08_!#+hfQH)e+s0rt^leOu zU^HcQ!ANCkqHL`?doXO(Gl2Be`K(*yBi@~OH`7RQ>L^5xFG{uY>k1`>L3|5qp@tW% z_vZ$|EziQ|swQoFg;Hn~&Bi?&+a>{>J2`pZwPk+^Ydrc-6PGIhv=5SyzO9Yv%|yaF zH|>LG%7kjCOa~r@>49#rs9(pPwkjpV0)*CyRGXF#)+8&RlZCb|5V$u?o7wE1|I9;9 zS+$VMU_WvAyS@YO;()(oTzW7?V^;@OW)o9z z-wg$g^$s5VjsIVdvHja)qGJCo@bdRjR$PkhAC)0+Ger&x>kEwdZh#|zAejprTICzK zcaC(q)J*1BG@(A5`57xLmm7?qc?ox4{Nb({iNekKG~!@g@X741MB(~rdfMon`ZAj+ z+YfX7L}v}jh}inr$XG>u1GY{|4sp{}3`l1UQB(amTZ}9kFDg!5kd;Ce?T;e{m6(#S zdIF_EH8A(}yt`&HZjDJFZMz&s7OoPUWQQF;Z)>r2L#DO)cqwCH4cDlq5dLXcq-7do zU@ILRzhgm92B+O{N412nL90;Ri>m=ht>yQ{kh_8CleYpW>9r#-X=X1wzlD#2?kVf* z8jt;*>Q436l+VDXi^ir9I*i4KWJU6_5SU~?f z;{+CQJgQi9Nd(g{=YDA8Bo>KC43jXT=5Q7iLFn+AP<8kv=Pnq83BW#rCp=P^M882l z#um|*ka1?cs5Yeli2#KFnE;i5wfV1L&VKg(YfURJS#8U=p9`u}4rv+gF<+VbPYqYr z8&#Osoj9Mo;;&+_VlO{z@lG`5A7D+h=0OR-d81x_IN^-jU_Au+~EBR1D>*O zAjRQ)Za8D-g3j&1AW$GO1zDcL-+Iw=bo-t@#ws{K3k)L_&i-U=4U;S$@j7DnfGImg zK>0;m7Y@8j;oek!`O9HAll1wszz%~5_g8ZH|8^LHf3$p4d#C?j9`na@Vj^O^RR2#2eF0|Qfa$lu+f)32w?CMvV3qLwF2xg# zZ!(PuZV_8_zx1;h?%j5-)N`sGAY;zkU!XZ6KM{UWd$FjIb4>GWcQ`nmq7yuyZS*#o zx6k2S;R~j$_R(O}dnyemw?*k1)~GSIm|web^dXlyu|!dn!#H7+wr4`KIPr?=yn-sUC*meloXRbvwLwL@{WR;kDB< z;n#CFU8;|RVj`t576o7D8YAFR%Cpgg8~<+HB{WjH*-|1b4n>8Du1X|AJo6*4{3Ik~ zh5L1B64B+|VF08Q`+^qenj&o{obc?Unr)Vj2EP^=zm=LGGjPE**2f4ELx;C+bOrZ* z`Ini%;hP9mG%2(*C$vtOGeGj2Xo3?XG;wXrEfAia^d5j|%oIs;9_geN=F3*f!YnE( zDXyLlz$K+LC5V=nRvpG>V7b563^z^76F)Q>ld3e6UWjz^beS2$(Ab3sQqME;QY0wr zdKFOkOL=+4?$v3lCk3==rkZ`L0p*hhi2OLV(-I{`ko1;(h&rT>r4>fEr|U&`AlFrm zZ}RK(!0};1Hf>+{LQRX59&`m0Q@dP#(0I%QCy)+0 zzoJ|d@I|zjPt_g8O6uQ(zmw4H;#KH~J5p^7mm);?%hC(se_yJCEgkA#0p)*gQU0`8 z1!XaFmp}BoOpV?CMw3%D4Ad~S@B(m56t!{5X>@B^X(Pkpoa64JQgBR~0b%M4ocA3o zIm7N;U92l5_iBd<%)THbJ`h#>#J%%?L}1E}FIToG#aN2j{>q)efw%DV%1WSck2ewt zgdj9dKP$q^>{xR|6;Z7W{8UEk(UdGtPOELF`98VgISlvOQDj(8#5Ki?9HqknWf#ptN);>xWUB)AcM%Yo^+cjFEm8x!iRzlwj-HA)EK3x%!evi{v59cZO zaT!A@o%SIGbDXRR(xy4ZFr!0GgC@7Gf`%PqTN&QHQ2r`w9+JaIPU*KL<1 z_)lU@WaKs`DLfxj3*6IcK^0cpyA%2gd-g;ImA?gkgc&aZ7|p(0%(_hyu#zrW=fUJY zKU$`X>1?_Kz>K8>$WnOmY_TjKEbl|Mpa*1t%=n6|ITrV_q9)Gyzc&kxZmz7;iK4*N zpC05kb&sqo`>-JkJ7~O5D^8Qom;P&Nn^9 zD^3#mP}xoco;ERY3U_jcTO+PE4Wos+^ftRMxjV7j?uONZ=7k_{2=*odc1}ICE>M_g z@FYb0NN?!D95Ek4!G690}E7=zW+HXol|@SmSsB3C^f(=2z|HpG1be*HR0O6+h~JOA7lqH|9#m zspxRCU-0==o!#I1Q5@>VY*0-hY}(3wLhW7Sk8jg9r^F0zFqfEF)<&2Ty=AL8BohVSS|KjI{4wb4Gp4RWKaZj$%Nv_57_#o3c|hkI%I z$CaT7VDUGg#Cpy9Dwo35U6u#8C?wh;VXnZQqsh5fSGrfvUy|#%KU3IT*b?j|0>ux{xxlhDJcI_$(HJ^wknAi zVU&u+m6AfPpnB*pmi2uU7acx|mBPKDA(YU{r$f|m6;el4ldZyc^X@@~@1>aiOkVh- zuzJ~3kFHDeYG(h%Gf_a-ZLKHg#eq@p3&cB|=fR)Gu%B7HQu<7hi7YRmL#govhJISZ zPP2HW^|>Nj;7_pfjQ{k8J;3Y!_RTE8gk}1hNrFX!ae{dQ`zI?8hmjyqS|%56({-u2 zxl3kj$EW@4($t5~!4usO?4GD*>GI<#!dILYKiEFav9VLVCM9noSuCck&-ZqE8&u?G zE~ereWGW3bO&Y{j?FUTEdD&t7Wn%>B~B zFSj$b9KF-g^S+LNrMt*%Eh>A>lk4HrQe4*;cPL4{bx!{6n&`7pJ*S;g)A3nb+`IN;Z0HVUtvZz#G>!ZMnRtjB`z}YC{xkGmxn`gc z;>A-M#4gc*kKVG4(QEO6cfjF>vk2prTYi+T;@0K61|;zby@k0>2I|{0G5)a2ZPH^f56LsOQ_zE$XvzqH3VZZA8NXypnVL)C@XeM8C@I_`&R zBgv`t9j!7xh3(OI+mCP14V)ghOC%q2b+Ua>7D5ch^ty6Jzhc=l{48n46#{iWZkig+ zY|H1evU?n#6|iPFh!iRLa|l2a_e~BqhyLwtKtCxWk}Igh|eaUTfIW%WLWEVe%q<&5lAB4Re(}?^IlMLlqrmZ<)Q$?=f^*>a`W!)h>GG z66Ol#8hdHqtLVn*-qW4X;nMEq^NbFNu?42|+I>U+)N#Xqs-Mpm5KbHrJU#l0RG30o z@)hR+?_p$@dUTVtH~(4e%K0jL7jxG!St%({Hh}rzX?I}vSK{Y{K=G;3O-f-!ArfNB zx1eXCE2Yu0(OybnnOB$xs9mGve6qLbXO4&TUCYs4(!hjg*DLF*Ut{2Z$cf2*y&>QH z{u5SVXCpk^0*8=s`2RPo^4}rkpJ{mitOr!(|GRiiO`cW)^E;39f*|G67k+5=5yQ}u zt*=+wqETc;H&lGcvYVe74DjUHFpx1p%cKtWE=K>WZiinaj<`Z5TY~fH1tu#*rkK;C)5}JQ0in)MNOSg2?~{C` z>wa{R9JO%Sdb-{GbZ#iiE{&%1tW5Srt61nqMU`W**%L)Gpx{v4XcYcr{C?lkZ0%mP zwf+r9Exa1hqRseh+vm(Z_UqH{VkhM@j#3|5)m@GB;^=dxoj(n206i)k6Zw$<7mEF1 zNPj95xO&iV4F7qgaa$uBjUHjJ-id1ti`mDdz~|a+^q0_`4Vh|-vJg^{!q^CACgfc0bR;?rw4{dG0Mwf!LQf-=Hft8sBI8#rP63ts1&;+7?qi?xozl8J`^C zN|Lp`iJ9?qha*qvWk5G2NPh3BYQadXIDm18htk#EF4% z2zO9d{&$!zzY+qsiHsl6xgV>Amq(o9IghZeG{N8tXgR1DkBy=HG*fRtm zw-HWmc?I|1+S+RPP3sq(L>Bnt7&Anm%>C0+1Hn|1HHnYj-PD;)^pJE?3KpF^yX8mC zQ>u`aFVkgq3)-pY_@;nr>5v*R3bUg@@@zwA_vPbbj^=EkBJ9CYH)RsDQ zrPY?N+9_x1=Ml?yw<-v=LzmPmwF!qUa@?pxEbpP@ zLPD+ZskHozHn;Lad8))nr3Tr(#@)W>rO4DFv$jJlv%ogrMv9w#V1wm}5vi+^^#hIy zbCJlP2ACQ;OI#oG4{GQ^cZjRgw>&fPk9EZN+rTh~*t>~WUnAOetlo@0B`aG2Z$N$^ zY9!UjQj*Y42Rg^PV#P^X-U)W`?CUc7?0w=kWzf)_z*5_ETV0vqOTeVyOt*h;ps!Lm zoZpl0HzhbPD`6(1<;gY;;Mg=-`?pV@i{4J59tgfxs)n}P3!zIEpeU2m9n zdwurFtZm9?2@D$)0(!AsY%z3sg&p~eE6%j~gxoGL=mAX~-4LPJ6N@T!64GaB{D#WgQHBY1R5Y5o|*_EF5Hag**esVv3e%cPfEGeaU_g83DA+vI7z&oWD`u^~+3ry25RwZ5HNIN$FT)4Cyz|{CT z*}zF)(@CDlCuWa-?WQTm5Uq^sKd)yG`2kQVw>dr&9odbFcNR;!ki^@3OOEux zi(mTFV=lBu*TYwzFco)!FY`7Z*o5LuKYqg>+~$Fm`4-NDr5{`TK0S<|?jv@=&}@t| z1SaGhB$aRCAT^|r2212LR?dJ1L_Yn!vbI<|+0U#Xe26AQV4{i>(GoVrMYyPC8FuVX zSbr=Rhw$Y5lBSQijIyltupwWw8NNdy%k3IS#p19Oa$cC*Np22m%^Bg%+!Xp6*kKw8 z4@k|K`d!28_=vxnVi6giLk!lXFYZZ8kz-3f)!(8e^%hI{0(XI}aXnN?lyQoj_4R#R zA+E98N)iVFq2fe8qwh_por|LS=4cl`o>%n5xnUm2qO9ph8l*l_`kyG}d{}z=QlYT> zOXl=-{H=uwD7S;MRs@aaGy-|9jpU&I&R@PzDr!QNtO%g?L(D9H2X7S}wq?hWBDx`y z)c*u6XEtJRpdRg-e!lRD`3>Y5%@^MweIi?uN_MMH!s?=I!jz)zXRytnnm8!WLjAb& zxsopW+bT~Dw{s7LOuub`bjy)(Y&VT!*|sQcH{>5^z0}ZH?xcD}g!sn*rnp{aOX1*p`}74n~M`E7qQ7jk$CV1?*(lBrB{<<`K1S z)DF3=L+!WZ0JYv5TRu=&Y^KW7m#KRx-t!Fz1c2f;{J?qBspH+l+4=Rimxm?hUdW6P zz>pIbDS~BEX?e%^wsB8RY&OuI-@#8|@JzCWZcDxKoWP;@RcYFZF86M?GHkTjT<;u( zEzU(pv^rV2pVbh2_^y(N`#A=vkzAk|#@`jev%=OTLVjbvQ95a_cCTrC7R<7apMI6x zvOSx`a{0~6%&ZD%Ft%T%p~70p-Xd#iuzbFDSGw%PIFgp&VUv2A1*)GMDOK^TBD0-8 zt2mwbzCE8~&u4C0L#IjGA@)B1*XPOA+H&~*!6#F{Gz<&~bddQg=Xfpp+iN@aWj$&4 z)ss^vds}xz=4l-35_e-j)5-gI1L^`CNTilaQVJJ|T9Y=)`MvctA)igNAs7j@*LfTnlzJ*b#$ zAh?w(laMl~p9Y+m9t5q5qMgM)Ng9ETEl2|b0OP!(ag{mq8H zgr5_E{H_(vG{#Pu-1o)+4Vh>8q3VhMmr>{1r=fjR{1yLceH7U$M< z10Z$GBbu5>779PPv>0O_s7-5yYMaLkE?NG2Go+X-qN~MCJ7by6VavpPrzMcEi7Hz1 ziQzsBRo>6?w3WUxJsN=_c;?;>(M#GX8=_%uPQmRO{NKpW(JGd;EqGSVz2ZLlzQKc- z;w_tr%kzdNZn#lNt)bJ|_bzHbZnh5t;W{+e@cN0aGfFKfDx&K0+(|%;qxO(tGDch5 zH^NS4xI14k!wg;-L9M{$Ik#FKu`f3185c*&5p;raKPNSNc1kjBw0+};xQbP}K?7gs zJ*vFABD$76dPSx!dVKRnQ4@PQVqCvaY2vtTn7=1(G9;TcW@hcTnB_)dZ2Gv*#FTbJ z)pLQlh^U>4)IKP^kv77tfGuuBfeULJ`U?HQmSp7CP ziE>YgLU4!?2@DpEGz^4D=FvUYoOb_5I{QzOZ&ANq-{k(!2`R88JvXcY(R1-6)7nxDwAKdKnWZ4eXYkC*V&SP!5!FG`T3WBBklYPsB-}`?ySD1s2f0Xvf{;*U0*u~Fnt?MI6tvH&iW+VF16Fb_%*_U@< z0{+nHpyqIuztg|7_F5+DXfIlysRr|`U;W482p(D+2PcH!dGnW!-J=zs>tW09^m|HY zFf|OspJ*-Z@Y5QqV#;xy6~vXnOa&-p4v}Dng0x6*O@6?fijMcy7JcRC&orNQ z5$C?A#|@flVZ900g`H@8bxRtpLc2=amKG(?V~v%u63y8P53|_l`iy|Uh-ZOko{=&W4M4EROP7Aq z7v(QKq-Rf6IB7;sM7}5hK9y*oaNFzIWLD>E&SOD$Q#wvq%)KS3e#^o5{o&IV`t?(W zW|5)qiw$wqA%x*m4_Udm|Lw+iA&Z{iKy@6n9CZK@0_F^&>ny3_}05G{O=W02H4zvxCGQtH^u5OiQFaml*LUegVL{6YF&bKS`iu< z_(ci3*mrSehou74zK8v}F6LWR+VC5URp9??CjDpKv;T1>@Py3V3_RUcHn#qIZ7f&w zFGjmC1?Xt_;G_*XWEnehh)Q1tTWL|kAD!qVJnim2se7SP6$u8UpgH21w;7=pC2vZ0 z81~=t%*;pff$C*lJuo4s4Yt##yuP=qN}G9tQpJIgqYt z742v7K6!xaw~-{cro56IUA;IJ1mV(~81?f!rFNU@l{%)cHFp^#v53dqO>7e=lo4n6 zmTqM@%u4ge(_~F0X;q)XFB!c~VVF-PvZ!4}OZKQc*Z7aG{U$Wd=yK@S{$5Qf{i)*9 zK4Bsy1f`N_347}ouTFLf@}7!FpQza>k|aZ{aGX_jmW$h~eauE%Le{bllRh5XGCP3< zv>N`ojaG?Zf_md0h9fUc-MRLmcwb){nGtnB6$$elOv`bpH<^ZXdzkA)jKYMdzkY0D zo|GGH=N2b7m_FU+C4iMDieg#uci8e0SxI-2VlB-DsCT^anG+5dh`7mVMSg_|>X8=4 zIUF`|st$j-KTdYdx)fYxqxxayeN4L(zF8-e4xe;kA5b}(&R zxd~r9W3oE>Iz!DF_4<^+&QPO}q_1g79eKx|YiXr>fNIPlxHx7YavL@~+s=VDW6&NZ zJ<;U4Cj@@F^nxhcoQoc@v|*5H(n6yT+pqj5oshB*utD+Hx_Si( z4X>=Or-7X(v+xO~C^zQKJleJh`EF*70)S=-?E&I-hK9mrnLuPC6m^-}ma z3TX~Sn?TY>a$vJCKyZf0v>9ln$Upo-Hvx52kVl<(&zVHQiv1vEKWKu< zsx)CtP}U*v;ut&6lKGzc^s6vOZsoj%&ZfQ|wtvOX-xlY1an&};PuQM%Xj+#RAHABe ziTd;)w&dxb5&gS4`}N#Xw0$~(;~jLZn(hJL0gV&4c$hvYTCQ8@z8Zcj+SAQT1E-ve zw(Uuvs{5i#_-D935-ggawqPqb!BT*CL;j!TsQ*r||4eWBXH2j%wzC6YOa9NyTzyp) ztQBfd##n-)0u691R~GqEqWZBzM})RO6M+8V1F&pn7^9Tphoo};3&Q3zbOzvfG`5&o z;9e!(mzpshe=a!P{Z?^N*V6KL&g;wFHExhlHxB&pHa;#cjA+BXi*5l^YtFuA(L&WR zaaP(n3GmU|O%RK1&(aGYiq)NU|At#yi~d8?+$%nL(akzU=id*3g=nUdP#`Y79{ zO~KtoGjl%uyA|uOQe=x4C#T4I52om~8)oMPZr~+tDp@93?Run}&(AtSvrTE=Y-yA7 zv-pZD+sV$yU(zn!32iZ@O`UmT_-Up+oG7vsR;~qwNe`Lxaq*Ma)7X>lAXe_fsOF;~ zhOLk=DuhW4CRwXQCmGSIuyM$BP#Gcv<;=;z&HH$Y25l~loLHJpMJ!6eHxK*(yj6|a= zb^T5E6E_WCB3+49ae5_O-T>G!FGe)u*!BJ*a!0W1(cd4*9I-Q6b;_ zmoxt!|IF0hw?9&D)4fnE`hb_;HFectreRGMrZCT?)e2VsWs$7_olWZ`OM-OmOj-4;y167bQAt)fCoAZ@nB^uBcyodxK6sNYUA zCD+|`a=%J^(ixu##?-Zc2U{`2iltPAya5e}^)StO&Q1BVX6Q5*l`6>B+m!w6j^C(; zfk#|^krzAmi^rxLZ?Bxaair(aSAn!GsBCf5s}DN;(YE&5c`ZZOIhszAeYS{_*s-)c zWk20v9BFv!ekuURzG$_wi}^t+M?_+>tq`sh$}Z1}yHqrZ#r4hn*53ZIT6CaWl$4l1 z@PPAt!KETkHv1+17V*K_!Y72QbrLN@78={VT*kopEb4xg>D!{kgCjMRE0O)zOS;qG z{jw0A4={3MLjj$O*9`j@Qn&?e7Dh+xjq4h~_x@o-*Vt-6`FwoTsUzLDSvab;g{NH~ zEA!9I$yEgXk+yiEq62!;Hax))DCBtaPB@($C@2Hc);v+x)>G1~RU&a7jH$Xy5yH}OS~_?-N38Bzk-^_sv!JplZTefR4cpbkRQIQt<8Q(sw>{5hf%#{)nPlnuS}$%;4aJD{h$No zR#|}y|DHD5K|T0y-e?{=_AId5>;7x!`tQ>nu)6U7;q)n+;2TNs1lkkkyDT=)?s^1> ztkQ`?Bc|des-2KQSs*!)G*nhwH9l(POiyt?A-t6w#oRL`j-M!fGX(dBx%rGV@7fhC z&b9XFH1)MD|61^1&3E-zuMi=m^iQVHfxG)#l@-kq-B9H?Gw@3#oQ>Cem*Z9TF z5{(9_+w?9kwF7cKs!R@8>)Tv4VFm|Ad>Tye!5dr>_Y%@%kK&_bQ>?Ky&%NUmp+zM- zmI))PCx!OG&naa;L{FslVPfemHJrO)WE5LLcuVuC_t!XfP5w$(k&0eEkJk<}VqDls$(MG2%uj(&soq#lFB6;Aud}ILb!(mb^lLNH= zJ{4Ip9Qj)8BVdpd0Yd*kGLdCe3YTSg62*Z7K@9JJiV09H3vV1E6hcYuNGeGmdP8h{ zaXHU%TnI2PNaf86x7sIXuHclf`XMFX0~h!_I7ARDD?lz>9UyVR>9fELuesoODEyJ7 z>U_rnrLC&^cxW~dVIZ!Z=J#L=RNgHFuu&JKEndy(#s=!Elojp+Z9EZ4LXEMFhIXV) zgd;0Up@ija!7s$q^d;rtzoDq^67FMXqFIP%Q8!7dCGJhk z(AdFjdaWnqEyO=m7GB!t65taK);(N1UkL)i9=HI#^7cuzW?xm-oALr}`cl6Vr45 zGjKaQFxba|I{{v7F~ary>r2ir-h++RfVbZj5G27}$RQYVz8<-SPXSX?9Y`FUjXJQi zZgxwJ2EZPLafMaNrFw-bUf-mZMtN?DUnYvqYSTRCtJN8jW0QKFDvg*vHfPQzD_ptN ziDP;vgM1Re*;_lc1mkMKMvJcudWJBw$%Sy^Re_mN$@s2a1;Wjz8dddfGr2$VnRDrI;-Vvo0AI-{0RCiVfCIc? zt=CQSBoURl2DQhCr9M~@>-wKYA^KE&@ zTYo9W5-?NLSz+@)7Ia+B_PLg&QnGy=HJ1k*{*f)AapKe0jIn?<&d zN~N3KcL1C+vm;|2VqMr5V@SY@r$70)qr*gmI)j`Y9Gr?}@cN;-S))E_h{7k|02p|6 zkW_T>OWxo^KbMuNaL3U=)lAGXh_e%W%hVX_E(n<%3*Lj|^qYsu2idR4kF}tUiltsc zK54uFU-?4b9}77wI(2=oH2mQV zZ;~jNQvLn)i(WCoGWK2;XpgnuHeOzjj^r0ve8nw;R5{%(WF$z4)r3FUphZo?*T7!` zYA#`o8T)a`eKS@@a$5|DD_&+$E6+z#)5L=WeznGcCYSya|c%>2*@<9p}K|_|3B(TNc|Lv;|t5=}=Ahp2KIJ1z1PIC>my@=w|pr zZlKLy$dI`?co*DLPUL8 z06}K?ccpG?c3MDzElQb1x$eOC@{URFOcc2`dfg5SEZT4b%M9YFTQ|IvH`0e_W8VE% zYvrDMCoj82o*CtStw`$w{gIxx(brc^Lu8$VCr^3h@H?%mk zG$a#zI}HilPmBSRz7e-Z=iom!E6hk#p2y1;XcQ3A1{=q9bJT?`w$JsMQsP^g{)SgV zZOF0PvA$rZpafewYT^UrE0Wr?KeJ|`w&Y396=s7HJa~!SmUbl413*tJ<+Ui%I;89H z!C#j3*U-9K6=ad10*2c1$DmM8rQqP+zIj?F3{Qas$z$;PsNax_kyG^cG?C@wh?bS) z*Bxv}SQlK-7gQqbBmsr@^dE#J!@BTYx-u9k`MoyAgM|MGx<+gEeJbFfEBGJF?Ef8f z|J_`{@SLi->HiUTHTAUqXc>U-FoD*IIDTtDVWK3{!Z^2vB^1*)eSwp+yh@S{Z`M6c{da>K z+j#C)98Xgd`b>*lw667}bi5^}VBZ`hpS{xJ+|8%ug8JrT@#fN7DpGu3HY?6$pvGFz zyZlT=Slr2Kz-DX}zMQ29rztY@NRb+pF}VZPyhQG#nj)3Ij;Fap1;y7?S``oK@l&$= zD)}NlN}ZyTMYTLHL4huMk5)3v-n2FW=AK3ZWQD1VIV(9`{T6A}3Q>121{J%cO0(^W z#(M@mluV$xR#zRH_rArTbw*@^cO{5)_u^I66%W8{8klKQ96dZ^LRA=$-CI zk5hT><0+yN`6zGif@5*I>A+|oQai;C1JgJU5EkE(hog^jhljvC=bJ6tqf>aDO2+#E zw!DGJSgzRbR>LQ2&T#`7vBh`?nvvHIqv(Ld+2}T&wOy7zyMBp}PcmOX0IhawC= z?Sz6)d1A2xjHu2CFMc(|#Io>CCjuK=7eWzeJS+$z6VA%K3^MIOpD7>tZxX{qC@A#@ z?W1~36U9XP>1TAeM!G(16cZ;UWPUm%H41ta=PU}w4XcJVB=jxuSusr)>>Mi+ApHq3 z8Bh=@NzkiyHTvkPov;2F*vAb?v~@yQo#1cuO{_W{M>rR8*Xd5`LJ4oGEI2Ru=Kipw zB;hSts=W=$ABlWuWgj)I4Sg;5OY4kU5VK|w#`u5$)o#LmKkwR@F(=y2T}>HUK;wd5 z`L5c~I-OG@Opfa7;EY&%sxV7)jev+Agcxgh%JsdA-g4^>bo0)ni9UavK&{LJK0W0f zK%aSMQO+Ui%5|++ofJ1Nbl30|Nui&M+eP~cB^0w3@cHfX?(oX@zKA*kMOMhCS7h1e z@pEqpB55qCKq)*Ki`!F|Z*zA}Ad4{NI+n$&5SNF1) z+*kH1IMYlLnh>}quL44=OhiO2J}MU+28bKTBTz~+=ggl-77r12FL`D7EQ9}&nxsOR z@6G{lQdS}T8yfk~Qj>pRB}z)7e=NgE8@pQleQ~B~p!VJzDJ0RN%|?6Y)EXi`+12fy7%@=0bk3X+6$y z9j%bYm8)B&9^3w!v^bQzLbc}xtHthU^9)YQVQuZPDF%LtHZuqHYJqT}ZoZ)eh_Ix+htDS=R$YN4%kFKQ-+gUFi)PKTP*n>Twu$SO}NuJ_)8%J2%-luH?Op zsyfMnDLT0SfR<(DD*n0w$U;V z@!bQ`ZQG;xF*U*=l-h=0PNW;PyDzh487si$&QAdoQ8O74T&zU00_`y?%7)qY)kKz9 zxk~q{0@@4P)7)AF3^1tQU(O@2Oh4rrFjpW>hniz`(;<#@ zJYHjFp#;@;hT6Ht`2;2gIJ!Y{`bKoRU+-L$_~%w4VrG_sp_9k+QND|vn%{<*huK6P z9NH17BYA078QbWr+`pCLd(YkS$~q-W-^2RU2gHli$9Ur#2(D93u!ocSn*YK+7e7=@ zO)K;iOYpR)^Exuf^5+*y7(K%1AzmF>2|6Mji*I3BzdnJ)%*&8S~IQ+K3 z-=zi=H(@966Ax+qS3Kn3&v?Fx$bU0*G_)~w{x83Z&rq9xxQ4tCAv&TBkhUbNOi*wz z5Lk-Yb zD7?SEy?^}$r4MWG-nj~zm4l8jpTp^dXI0Fu$7)VpF|Z42OQyF_g?>}L}@c}jup>1i1=Yns8vV=b*vp|F_rjB=2x__0*ogjFHxJHB?fPXzUg znerX&%X63@mKGuO5i@D^DcQVD`Hw>I)={Va_A(099p{vTy;JDJrn~{U>(Bq@C;nN% z$C%$O_^qn=Hi?2hxS3&|#yH#Jpy*k~$*9cjeY~wnp1i71HSvK0x7_we2M#PAL~e-FCQq2e>=wOsaZ{4nkI?ckh|e2V+XxF32iXA|WH+%jbO%MD zhhsl40;DOs{`M&dBZO4Llp6((ZP|q`__y?ZZhR>^cLVP%P}-q06>F5GtrB zdQg7|&u!bcXx|)9EC}7wUZkL0!!*MrRAU!=^#Xg`8qq~4DH8<;4-nrVuDF!B^R!!YED9=^uRLy(DCGV!|B7BOyk(R zWcA*dnL{wfMkdsC7RGuv6p|lg(IeI_3Ue%<(ybJ1@+^;7W>D34{dmH~fMpECD zyhdm+6Au(I6X|&LpgdqyQFy*sPJB^aZ(b!mZ%A{c;pPL7u1-ZRpcV|u3Ug#3g~2%w z*6+E*Z>8qpM_sP9bo|~$$I!(Z_e1x?xfkoj(XS7EcW5Ep?&?t8SOsX-Gx{7hSJ_ft zX0w4xcoZ_n@f$2rZ9WW3ju+QMLo2<8U|?R3|H_H$ovpf;XA1<6E^*W1pBw44M30{k zqSzZ;!|T4A5{k8~im0kzRUR>*o8cyh8`uuVO?2am-m4jiB|#WXm1p$Xv2G!qJUGg_ zHzum(Nzfs-uRKJ+xr(%t_W9O-9^boF^yWlW|MZi!6%z3XHr)4+=H)%RE7K!xBGsrD zTGcirNuLIL)vw`drz<&t*CM!lXjgRc=t_jShT?~ux9wR)zkc*FVg|P}v}up!p^u-6 z4hzl@U}d2*v{h|cDQlXR0{~FlgFPKvceQE6Lk@~9HQNoRZ^PW9l8Uemm4^qswFR5Z zltyzml+%~uFz(W^g((dC5p1NK2H8oE$M*TXXLiGf?n*J-$P0qr=Au3IH5E0PXMeu& zP>&QDupAxNCoq$)2w+7@-WCR%v0}U2rw2*6b5#~qww})^OJvT@|FLqi<22^mK}pbk zFNlz}P*>tlK&_^sJN=nFFsil&zARn4j3kq&VnRLK^<@Qx$Fq+2mMMCnOD}SWQki!Y z8v3|QjC&M=Y1g3+1u_{SsR2XSM{3QqDB0)%QUw9e*(dRBwcg9&d;N&GOv)0r0ypI* z-gEu8xt}@tw@vE%vh&~5UjdK_b?<5DxI2nJP0hL)Q7{m2c;Rn!3(^P12fzE}=IAc+ zCC2D7Nx`vVnX$|<&9Tfe|AxDRYrsMSEW>dCxZ#|zaj^E8*;vNRHGkE{86x)^0m$J( zndnR{5*!+%j7_*qE0d=wb~Uj#;~cW0c1^ui2BBHH$#+*-7KSw$cg3(NhnI+UO|VOT z+Yei$Zl_EWize484N_p2jQp(Vqp`a}%=-~M9=3qFxHt=KY}h94G;N8KEm++PI?tW0@PIKr!VpF6_>`ir;pJ6@Nk?gYXkPI{q%4x zET?9z(c1_BUhH$D*34}JfEV_;ack~22mlhBAR|Q2J#8BqoS850J7kV>Eov-n*e)}G z5A8O zXUet*_`xnY_-6ko48t#47={4>aLjEraLiqH@YGKlFm(qWd~?VbT<}*W3`4)pE$xDh z#Ni-EsCu?vhW5I)_qQRL5lbNvLG|y{7?WmtU@yK{rLb(|-jG zAfmftUiE_!kaVkV>4f8xT-xr)g8A}X0YL?W9=Aa+h`W`y%u#YFFB`%*p=FP*|Bky|A?rMG+r4q*A@yaRrb4&Z`UqiTS4M?b;@NQN_FK7Klz zYt7hr8a!gi@3!o^D!(Rbeqo;j<-vQ&=twf*)qL*;vp1@tO#57jPs{0?`~J+|n69J*0&?aI4;Y(DkzCx-d8Z<;5<;JkMg zVd%y^bERh`a`U1$z@NQwGb z&fWIYUGzrX*H#C-@Ejb4-gaj1r1+hWziaNQP_Y~4C(|#5{%>Ef|7U08zhAJQZ|x^r z^8b+oh9v6P&3ylKPGPJ?Z>Qm9;aDEzaQT*npMyULhK)G@9*%{|(4m~kP()sY^hWi9 zVS$Ds&9~H&0B)ueY|DnhB3gtOxGu# z5iDxE9*GJEsadhhQp;pAuZ1fT-K%uYyUUhGQDCGd$ur9O(nRbA6_DdtBJEAgZa(p*v~TVsfEy(D1}h$Kb;mplt6AkF-jMA{S*_8mofq$ z$5HB%WC%Z++#?u1knx*Dx0C09R3A95Dj!xMDqcy>Jg(g!wy+3VK5v+$XoJ%wX=q^&%!p`Vo9&j1v0(jZ_Z~1{2=DdUY-- z1DUFyIu$=`Pa^g zWz`YgURv)w(z37O-%hXcz@_>THiWq^0t}Hm1e%00R9LUQ@SH=39-;qMqqhx;A>${K zO!cqo)PI*eeO9A{p{2Epqv>A?F(>zvvi5XyR3>Ll(mJa^6)T8?*?aEfsL$P0}$WmJxJckzW!pu@bO{q^P| z*AI2t)HA2Z7)Kr>rIL)3ErW(`o%Sjf7}G<9xD|QU+t;N`f}nr*)j)stuvMSItxc>YwTc$v57C(A_c}{M1VR0;` z&K8Grs39|Y-`#bzbDqOy&MY0T0sw*2%xN_rEm2{LqflQc0n0wxT=lH2JX?p~1t7=B z;H-)`d60~+4Gi5*2FmiL{jgh!(K=DB-F1aMp(j(>cw&rcK4~{hlOLjU8{>`9YN?XI z*HL$FP-=>je>HB=foEG-o$xF$;6848BiG- z5PH-$z>gn}o~)Bv7MsT4nX5awshW! zZZO@0?3(#~;r5i;7C<2XV&{@@BI7e$6Qt)f_ZcX!Ed^$R4 z6j;C9r+=S1TY9-oV#h?+?PL7Y^z;E#0PjewK+`cY-5oQix0UXX>((_n5H0+y%O|A7 zw3WeCzh!dd^3GmZ!WO9`=eGY>U)6Msl8*^mYYrvg(Cl0adEgOww7YH`iLxhhxqyfO zKGYDbg*gAMec4vqtb#LXab&s|Hd`pZK;sC~ zQRbn#-*qEbpm|sMsCX)PS~1));xTFnY&p7n`$QvCi`X<~hna9bktOA|sy+|(H5Sfr zcIk*uHzCI#1_$WA^m=rif*)_>LvBklISf-`ISh_?`NMqlvuGV(`9^9-_m9kv_l_u^ z=@kiQ)nm@56Yy6o2cuC=o!xyh#qqozO$X2n`G&e!roUq~n%qSbD zZO&T32I7?Q7cD9Oh^10jJW~R4sCa4CMbG7YJN^7otxR5tMf0L;;s$OgoH+nD@O6Ak z@bZIxn@h`Id*-G8nXR$F&7GEw_>h8W8}q3-?IRF>05V$b+(@KW8`geHv?>KWbHB~ir|4+SiQL?-W zs@A84AI103sR*i4Y%rXwf>~h}LuZKSe5F8%r-T7S=XtUgBb_{4-snHA_lk#(91ZE< zD(s@)%3qgSFLOTw8A=bFTZE8|=n_X(eJ(sERu6K#5<5R`uhIR<&Vz|%p)BhvOIrB4 zXbl&+XIa*jaBzV6!G`@Vz`p#7_U0ej=-aL3raH&tua99FqmyPO)l+Ohvug7peB$e! zI@-J{vb9Pz2lxu2*Xi5WuS)i_Xpxn%G`>^^JjH4|-(GwQSS)!-R4`!sb{^v)2T4hl zI4YG%bQmHNloWW2$Pvs4FbDFjR#Ji)5Val09Z8IprkG!!I3gpUJIMyDOOn!BQY-s% z!3%a$#QRD$hsAg}lgBi{J1oXhf%N4gu4JXW4ZcUJ%M(%xe7YzbBQGtXgDefWW4~hH z9+vE4f{j;ILPCII@&}o;`=~6*wE6@twd+l7#n?l-OnNu*adkR_1lV4t&cBx^jeGuj z8luD~c>76HLuYGS8yRc7x=uN#Hd`*#@Bl-P{ax)|gl;P)7otg7jpG;=qS;HG=ShKk#wo6m$1I(PeHyU46EV+z8L~?eqbm*7U+e@H0)7^8Ex_f3~bZ5 z7V{k%%xw{`ERR4b79r>0&RhLA`Z;r`6T6=bCl^!Q5H1P^Kr!@&(S+Q^fl>JD31$7T zYEe&gja}MS4(>-#PI5lcB-_KeF7eHqNy0^>>{Uv&c#o=~kD;ZWoY(<;SZ~j%)8wUI zfoB}ggB>-w`JZ1waNwubgYTGK3nJDaI8-Mc+6S*J{ELse)2mCc^+X?Z(RUN`rgI)E zdhG3|yksVs_|3sJasY)rf_|5$5EW_5CX$qtwI_wN4=j}*p>^mcAJAbOa1aA|-$l_V z+BNLo;Ga{z9wVKFD7t_N(91m;djI2cK=Hu(`d7Yr^RMTx)c+IsBxP!7@?W5Dl_s>; zU--$Gm%xK>IkA|UflDZi4j7-Ef|6L2CPqxMfr5=mS#+eCL4~>(A2&#m2U|q$Z1B@+ zWhR8-hv*kx;RIpwV1~RR*!9%hDM2OAi%e{tdN!38s~x+Ej*Io1^A4xf1BZ>r$x)3j zw>t(PYxH^COX#Rv6qjkiDO+89(5KRc@Uyk|(iZExPyug2q?Dd7&(C-c=8B53VBv6$ z@avpR_C}?COfqJTCdwkb+x81AEX64lsM;JAnT>c{>9coAZ&Bh=Nw&w_^!TibW&>k9 zTs1o44PF=(#%3EcW5Ko+kayntvPT7jg|-!;lnN)%6}hgoHw~S^>}=S>rgRzctZzq2 zVCkvF@+9jy6m+;(ZRRSTSwmMN#^krd#B+Kr02l|P0=)7-Z~ z*Y9j4=^pa#zi#JC8ehLtlt|7#lciHI+6h$2Tg5k;6_eCCYb#nFz3cvnNSCZ>M`>qiQ#B!BHKmxKXzWa0 zAl2SDjlLZU^(-(WNt~mYdBzf_7rk$BcQP(6Dp?9uu#3rtgVyn(f{qlS+K9;C9*;ah zls_UFXz@s-x~Aqo%E7Ug<3r*j9Wf(4bX-AJ))cQo=BAipgTP3lLBxESQQZQ#qQdp<}Y@ z-FEXvmL^*!dGFLwG7ezJhIYk&pdJN26kNbAEY_Ld|6mZ>eo#0}mcnD1$ICA_JKc~;#(uDm!dnm?UB*;Tf2xX>=>EwoGb9rx3wbF#DPk>+~;=!sI)IoHZDkHmFhJDity*(8 z*540jjy1vJ9k$&MM`-vpwwX94mYHwx(gC2z#5Z9dvkeVUWbuyJo`uUbe5C6?Koh${ z2Zy{82QadFCvRJVhq|93b>|U%qDkE)Tl)IEQ5UpWzc8`72QOU!=2*Tzza!;pFa=-G zV3}Prb(ehyJ3zxt!`A30e>Gxid?SC= z>%-Hh-|2hZs}WBsrxZ{4pxEZyXvC~BvM=ojUSyntR_uSrMEcMGxrR(a|91E#I!D@b zV#X;Zhf;K%-s#Z=xdHt1G(iy4q0OI~xJP}!2^_2X)fxn`^%@o&&*9GjY*_m>5cE0t z^@W51eTsh1N_-5hwkYt>9UO9KG);#x`I}*=tb1E<>IhYjw!76(?4Wgd;T)IKZhY#{t`v!TbMZrQUHjNGq2_@0y>dH? zQik?pc=y@>&jmF*k>Y^o`U+o41@>=(2j!fcs)8rwytw5C_Vb(^s)85go73NXrqybS zWGXZa9OqBsT<2b>KweAs6qF}BW6)>dV98%!(ebb?Hdc|lui-dCc-`v?f(<6N-L8f* z3;T3F5IUMSVEgOt(3XGXUxmXUDCNCb6OE%)xByf|7z+A4vTEbT_u8^ECE|Z{|NmYJ#=hGd;WmRaK9zT0@L)8{ z`!~Sq-;d2cck2ImpG90Ot^e0E-Sl~EhN^+~4ngv@-{Q)*NL?HnmB`3S2Ut$^Qwa<< z9>>xqbPq`~QCbe7^VW!Q#p{Lid8b0J0!c$_G*n=z>DlTTcIDj1G2u(L33VPPE8)Qa*S_$|0~1|d z@xo;fN^wP<14j`tpk6GL^mas6c0{WaHup7&?MB0T>(rFPtbT1j^{PC8(#$S`Ynrp@ zOlL>ebR?-&zF~$Ww2gvU zMV(wVg$Di38fJL@dH3;J*hzRHQ5S>X#O3cju{G3jwb$Oy%#v)m z2r+6>$XAamXAbWtqtE0jRJ=4b$P+ls(BYGYwkXLR)uueO5ZvDkt*TiISz)}(k@1G` z0OuiAmKhFi`(WAW#=Q_)_LYbjlNL-L@sfB>?dlH*oNS$C(ATY*5l`2tpwWu2M&ZMb zOeeCWP5#omWh2M9BcgXX;04^P7@z)-!clLm2ov?7@S_ z=jp=b3h>RxI7Tju->WR}j9llxr+AhCewMpYzYXx|hIl+2ZW|lQxKbRrbI!zrsV$~E znKbrltEj>Z+O)lWXFo5W<@${oir$G)mbqq-YI~J53ccQ&vqDWx0HOe8U~*?a?~q45 zEsLY{mGi_ecDb+onm=FLzS!wfu*Aqu=s!t7RTaDqiAt^5Ew0kn_gy)~+_g zMorf}9JKHY_cHWn$>t5h>*YmS$*BZ#Gt{_baeRQ#3oQjKwOr zXHiY5)%P`xEDhI& z<|XE3=E2vbTL6_%S1;Sc_1yahYyn@`02BZ-0H=JVG1L}TzXK}0`)F`LB86O*5!ZM> zF)F0}f*5AMFhCT}i`m*pP{QL}6Bl6@rJw7Qp*97yU{hchW97qXU=?F;7`FZ(3QG&f zA?Y;#6=*{gYz5)TZ2S}Pf~C{$C*dM|a6FU63M5mAYws4*nn|m;pQ|}5 z^fM_7Ks?2F$6ArBHg*H-2y;^ml`^@LLLs@aBdI7#R(3ckrJnu_!L%d!Ox3ldUKPZ$ z49}z`2=teD--Tsk=rsY+sv$io+Ui@Wf2`*V%;UMa&_td$%|5Lom~|aYt5pa_e6uH} z!_cwLfJl55vU#xP*oH)Nc%@-T&Q8C0VI^h4jcB@u#F4GKTsFHb+q2dXxL}`m`cw#N zL~X22_^CSWEwA$#^GfP8E-d=x6-syI)a3J#>8R(+$;?Z$2;tqV)2L_Y@ytuR$U`)v z#saTq>V^h-d(FmK{YF6hErHr$w`Y3&#%S0hawm%+;{)mo`(nq)a%n9-hpfa$wfl@;Nu%3Z?0XzleO zxjFr(&>|7(-$wDjn_Ya4;{Rq&)upEMdHjaun}UatQWb_~h32)BbebSmD`}zhbGjIh z9xKFig>1DJ%hj^}`;p6snAZ_}i?amO$Wj?6*KW38|CONTrkfKHQ6|ObL*w54@X~$Y zwXq8je1H1G?JvxSvIPy;L7>3XMcL{xOat)C=+I|lOv!L{nBk_BnS#3~s(Y&V7Ya5y ztpw*Z+<*>5*~an?mHduSTW_3tZ>}!7!#j$@=e%h)E56;a@62W$i}Hu9E)mbJ&!!Y(76u zDRWA^GJ5E+avX7*Qb}a5I=ImW;K^92k#3FS#vWFVH@E(9;x?YIjfU6z=QP(Yl8bZ) z9~lJsBEnr!EH&&wJPX|+22Y`@U6%B`@%S3GYBfY%4ch2#!3^C>xO295Dv7mKYkW*B z(kE|M=;`s1Z&r^93vvE;Da#;269b9gvy45pJ}0;G=UnA=B)EmN3ei0}fMPv4!mzq; z`$2G`$%WOfQGhQ=neBBzrBh?NW_%zpRa{_8}ET*ChZn z_QACw>O#f!Xc7+SUr=Z#cWP{Kv2e((<|L3bbq3)2={!Rh4J~}6NbuwDs^)g9$HIFr z#vTOts?Sckj%CoF&$2;H(#k2&q=OgN(27D~b#VwhQK9Bg-W#0nC!9FXYh(MN1IcvLKXuV8G5c z?CoT*Tir97jm%O9q!Z*Y{qLCU^?>HP>q+yi9*pvt5^_J7CsYgmidVpIR5n^hq-Ax4 zspi<<`Sqa}u(d5AHV4_iLg>3>-F1?+ndJ=A{r#QZa( z_2@oeTt=K4WQ!UnOZB{$nj(|=`O^H>#L7O3QkoccJf*G1uranA%bZncB;|lR?BW&q zo?H>23+VHs2__EUYBb-Ks>6F?64tou+dT2NzcyC9e8cF{+Xh{b`iy~k{bzyngv=z@ z{{&^D;QnoD{g0sRe@?Cc^ytY>`Y)qhdcF2a5#$I#?Lw$}K^Q9~w6X-Yk-R#pI%w#t z#&z2al%@G|k-$%dm?DLKr%`^A6q)DMr$B7HN64q43Y@fRp1+gR?*69xW@F5x+uP3% zj3{UoE--)pYsUyun~F>MJ4uLH+Zd5{_3moSBp_1i#^DEw)%DOg? zs!b=R$v8cy#}K#pz$8ld%Ft}MZmnKxrB)-{#R|^&Y#Bh*@9tG-A-Gx}1fyIc`jARM z$ckFRy0EWe{72Y#`JS&qWXXgxZ3yYUd=mQNK~H}~rm9`*u40u9^=93eNuwhDud-3> zzm$#N*h6|Al1;xQb*=vkkJViTlg|-h3Jw zvd&`m+B0T~=t2*Y``X)VaBz!Nm~k{1R?Fs5B^xdg%lz1q-Y!fSX+PDAEE9plNJt69 zJA8zCamf1;zr<}(SV*vTDbU67G{^>+hNDRg<6jpaTfui&0d zv0)dMxzm1Oj~TB1CoXF%#$Lh%U7T1p`{ZSm)%dWDh|G<}iw*@%V3LfS)8Hcgd*)o8 zVN2ThtfPHK%7UID0gX9X>!EeDwTpt?;5`wE9}Q_Aq!+{(zmD^_&mE=X@c`oXtt zMFc&=k@6nmb+F4^f-2nIL(8j*+v>vUKF6v1IqwtbkL8FwL{-KT)BWAGq1G~M%Y1NsNi2mj zZJSbhLd6gHpBF}ozQ(fjnV?^LT9VvcQDtwgBg)cV8vTA2*Xyx52S~~DGmXGRW*PpN zWY3(Xo5YBak#AAJ=78U@DJwpkYC|lQpA48im+e5seB)z+0zg1u24(j4Z{2MtAfA0D zW9>4$Hk}m;-GVN*RsUYZj%2i^hLkaqWadOw(Y~u3_;yO@y7R&=$IjrI!=XSvWOQ$~ z8lf-0bffrA{cy^(`w{QaJ%rTGj3xpL5VbJ1Fb-pKW^!h^WpXFN!okud4n{V{K+MA? z1rc*d+{O?M+~(+~>cE&6MZ7)+WAjL1A^(n+XaTYuh%I;RkfDrABG&cr@ zp?YO49StB*Hfz-dl#FmDVns*Mj1;!hBe2O*VrgD@xJ2DDn{8gcHG4Y@VG;woe>z85 zTJG^DG*b!{bZ@(pd7=aw)!d>_FJ8(TAn_-36MF|9w%;Oam3x!LRPyx-jt*Ou{PyrY z!cQQKd-`*jAJJSe@8G^<$oR6|EO33zdO{ECvGLm_D!nD``*HK3aWO%pfZ=h|A(~3A zxQg5xhR;YN&{b{)f9IcMhRPm`$=%P+sruK>`FA<+=Z5+po%8>m6I6ZLM}0c7y@Q5K zA%S-~qEat%h|@*{24YsDFa%;$9I9A|Myn{>s7Sn0cJuDiPEawi?EZ#De5V>(Co95` zrY<-e%V}7)>sf!BIQnx?W48%%yIbTx@?EOQMo#E1%n)aR-?2$dL}C*S#UwF4^tsgh%80@$9xzY*<3uUU}HZ<%~w+>74led9BSbN zgtrii7&j=dZE>X?LuTx-VtjRI^GHTdR7U#aPpgM56qy%$m zS&F-0*~fgj!9+GEsikey!guhKVyjV=h7B~P?^lo^sklZZcA&XtP^G;edKa77X3cZsm$bg_=sdi z*rqpe-BClc(Amu(Bww093BJ7M-=8I$5!3c6R;>m5WA0^3f_H)R%+v=RBBXHIP>Dk5 zhKZPfR@saYfD(Qycoq7tvMjmI06IE?kYoM125jxA)k4_n1Mb%b%j=`T$#vU8hIrj? z(Ptwr(OIqME-^4F1W=ro%q5NSpfr|W$Rqqj(ulib4;zthe7st3K}wRly*pD{vhJ6w z75%8}fmNHwG3pm{n|-V$-XI?R;t;3Z(ov#PMKxiMDXJ6g^ka7IP|!XM`Mu(*$VL=|)e?_kwHb)BRZji8-t3n6YvQxl9A*c73VGaS ztCI8`tT7es)iUP{D=Gb}?#D^p35(g;^3lob74%Xy8r)qT^ij$)) zI_U{mWCLCbJs0Ve{xsn?;l95biwOB;q!xQ7MKAUY6)?;j z0JX;tF&-PdC&D7<)>awWeH%QPSh=iq&|NvRVKjHro^7G>_;vGSG_FJ6AZh)_ivxE6 zR*D3v&AVgbQ28jO==&gS%l#UxC_}s0I+lD>M%BL0x!_JvS`9vY?h)jwYI( zVh}9I84Ha6{HQsAXS2X5W;0;uxnx?TYflqM`JiIAGymOrM3??HFm*da8Thf(E#MxCCwI2othj%G?l z!meFM#jB_l(RqGqI85Coc||{$S|osph#l%K;oJKJdV^k^HOUk@p|K~>=Y4#-yF#EI zYK^tXoJBldcusLAlh~5&Ms;rVgnAu)yDoCH#l9~K-lVw%91*B)aZ^713?D8ch5p(Q zibCNr?tx7BQ0`ib5?Bf}4$_IS)Ggs!@+(Jb@*$Ew z^`4;Db^aD5ySZHZ59$lsYj?XhT@MNbgm5m>e%L@7r9BsHN9j6b@QwgDgjNXo{$M~Q zM7Ckky`8uz#Ax{nX&i1JVoR60q_7743lQp12oGej^7G#Bds1=#P@ld#Q)L^nS?bax0k2A!!P{36t@6lz(bxx3xT9>#K2^%Dw~!h3!#VUtkR0 zHBYgFPCD-h-SJ#@Nlz_-trHs6@N|#4R9V|+?c`gk)=^~^(TVH3Db${#Z5CW&9Gh59 zj)M#me=h77-T_ZAs1xRC{0Fp-goXlc3U!`=O#~-*9&ixV@a_*58X28uoub=Vw7E=b zvVtR+llsQhX&S&+=JOn*GLIx9J6~VMoY>aDlOSXYk0wvKyu|;koz&A}y5-N>8Tr@R z`5z7u?X0c;cR_oV+JD5|0x%!|!h3oCXkdHO3fMGvy#@Y8AU0%DrNqR8KqlQfO|zf) zVHvGAimi^uJA>e4BIqR3@UVVKp66#mY8Le2nK!Q!{F`kD3NLR%8zBC^Yl&M|kVYaC zvQ)Uzn$YHQA_oPQyiIu8jhu8hA(n;NWU$zl6@qL8xks^D2s&nEP-@t+vM4liDUSO~ zo>A67?~yU{T}8ZRIOfV{MCjUuzoR zlIVRF&NJ-RsflAumAK809daYxpN&Y)YOR0X5N;nD;L1&OAp87%n?-dU(QfF!^m%BZUD)JG^cI<#a*Dxkx(w_Q3RZ`FMV*Pa>; znGnwngwXv%Quz~^6OGN`0Yyaj*2zIdn6;Yv(oiTb;zSp2h7+$T6>DYKGM~_dHmoVY5{HiJhE)lkEUHbhI~7K5#y@Gb(talh8;*%j$3>bdm>166pFVNh^; zBI+JlRA8O7vyRK7Uts;jlgChYGY^oDoU2chk9xI8KJ$|6wdzk)AmmhLAtp<*UhX40 zikoC*FkN4SpYKUX4~ug*^4(E(1;ynyG=QL`ItSu1j$tvdOBq6Cbtvp-Bo=8VA~uGo z=Q?!Px%D4I~$JM6~yx_Aimw zBUC{8x&0%mRldaIZIM*B`UiJ3482%r{{C)~u|TpkrN1^6#c+?Z0W4*3?W3;)ToRYx zR*L6s31nd2!sVMpc6sjy5P{d*T>XR0(5I(*V}CZ>*1w+K{NFU4!+)RDs!D%7sNT;x z)YT(Uu~ZHQ;E~!fszjs7R1!?DnHs1J2ZJx?T*g^gw3lI^1zsqL=} zEuOR(Po4hkXUf0%6VH|RP_&oszU$a6xE(9_Y@#8dAR!aMV4)I0W0kxkSlHDt9oNud zvVM)TN-@;9lj;9V@7(L?q%v;?tZs$~7xJema({U$LFbOaGds$<$iC}Gw`RA2p{Fzi(;yS;B?Ci_V~VI)>-aR5f(A7s)9sT# zFCqyuRv#cUK~_n_MDEAqY-v>zlQR}3`%S`$%~Jv1@qe>q zNDVVZMT5VlJ{S89u{Rfry4WX5#9d-H>Kgp21xrl<*^br#nP0+N*_X{q}I)=H$^1@!{slX)n zB>%(y`}@rq?-%%0I74oq-%RalP304^GA{k!!;-9bql8P-CaQ78sXdL40b1r*C0yq0 zc#kDGmT0#;;j!Et znA)Wpu@wq;b7-GciAeW=k<4HQ~X!51j%ingq&~E%)>FMF!PZQViT}p6%KEqZ`^)ej$GM>Jq-OFmf<44z~7Buo&A`;LCnwSaNIPDXY|C%%5$jT`Ei-c2l zjjSMy6c|lsgkovSLQ?GRj0?kAK~h{tw}YUH>~^I|b_vrZTVvfX7MMWo*&}kRq`^r7 zy(hW;vEN%Ou9YDc{Ckpyo==5k8>|Ds{dN=T9P=-wZ7&m#!=5A8y` zi$twGuzo===a;UzM^QtC7;YjEBWI7ba|}Gku_oTmxIN9%u)kpEQ;7o!1@9@BE%{lY zXa7GcRN2&3_ZgP24`sUywHup>WrG$_N8IIeZdjE2e zS(a>KmOE7$|IXr)gksZLhjqg}cFn=?S*PLOg+u8DnMalWQ#?)*H?26HEckI#bb zDW|Q;F3$N*3u`M7tXXM^k+MAP4dS}|RT^W?o=NnzHZSWej8+OjpJx&`c@Qfh?XYuVc!Q`xHgfXk+{Js7MGB38(!SPNS9# zaM6l%SuFG+*v2xrG(6*I1TinS_)g~5@t75`-pi>ObxT^%O&!sQvzDE z&4+Ulba%n~S$FkN+#HPd0>-u(F>UhIQ$w%mVNl_%B>4(rU11d@)#0rSJAklE(7AyS z^C?AXh$)Y3;%f3R-m0|H<}b%`<6;sdR~GSNiVP`{`cQjz%0nSjYo;z=S4e^NT$|O+ z`LDyjb?c!H4dggOxA-R!^4QbHa7EeTcm>0@rHn*37n&MvtE}1{s(Tu9Zc|$OrLRDr zWuW+1qk2({Z#KS1Tu_q>)O5X(i{;p~M#(gew2lI8_>z=DIIu}bSZsyklww%0S@KzE ze%h=2$rqKNCvdt7jx5pT+s!Y5FuZk~9s)WsJhx%RP5BcuNRX}drv*#cZVVA&_UlH; zT8PMruu_mkU?oolVxkayPk2upJVhf_OzRV(PQ5a*R2#f;VOQHamQhrJF08N=KN9&x zqb1vkH{0Rj(rM8r%|xP}^#MkcPj~UBGmF+FxPjc{sQfdgvBi zMu&fOx1e&r$Q$mw8m;x zoAcp6+@e`_k2C*hODDR4lCL-h!EoaJ4<;Ptih=F#=HmLViuHeI!asXX%+&c)x%8iu zQdP3u-zQ-(cjV`k8U@vFv3O#sMG{jO7~G$~ixZI8zkkzDIhT=XM(7avWw+xc_=T(< zSvsnFJLHqawB6LV>V}ia#u`?)Zj7TnRP!<>d4?tNPX|JE>@Ka<@5Q_aFkzTk zEWn!dRUj6z z%6_EvK1Zc*&ZRCj_cU#P85{PS^Dx|~do`P|m$okzXk%sOC^C1|HN&h5)Pti78}j-2 zZ4?l(V4e`u3f|q@5|iAbYn2%e6&WY4i$2XjLb8()hJc(+*1hy|6U~O+pMN(^N?Z#H zMc@vPzmYhO5I7B(8d<(X0VGH2KF)9JbVxn#!MSH>|1|4Lhz2{#32k%d`}XP`O_>aY zH(s4`0(4btD0m&`pFMXV#dV4uAKl0gv!+T{t0c^kUr%0mwp|5sln$S~zkihGymKbh zN13g~PX`KMFB1Q@=tIXwIUj+_%SHUOj{ffda6W9&&xGheFvlTwc<^P&vj6VD5v-jLfXm33{Uo8fesk4U|5T%1w zmtNmI%mUQuL7pOkw3%{ZQWLA1uDhh>N(XyZN~NTq`=BBKwLUnjZ?|Um*rjrS);+(R zgP&teynUxP9xXQGh#hJZ60}x2r6HDa_{5Xpl2~{J=Bm`jwS@t_e+{Euio2&i;4t$2 zBc%T`0S_#U|9*{5QPFiqRs}|wA$Od+u@Vs!B2vt|HLcg9h?c*_V-z0GZ!`JMe}{aEMk?+;}F zy3H7}s4+gGiob&KQf52yU}kB3cnc5?iPp|N=Q2wmv`L9Zg{=7A9bylgkm5v@d!oVf zgSOV*X(H?E73kF zdkzzTqjl$C15CQ+GLxrA)r%vpwOo-^6px+)wv9{==5MbuHpR4Mn%31o^CnwN={6-n zQRV5d^#n;49XPvHg$K6Chnh*cW(Xm^Xm> zTU@HHSLxDq&{;Gvb=+<2;g>DlE-G}L6bIpMafmXKUXp`W{~6M>goki{765(WV>^~I zEXj)Id`4={<%^gCJr~~s2OpQvos6n-1KeJC(!O#hQB<3R@`{pf61{5)c1-OhL#f-B z=lWXZpjFx3ki&MY&dspj{RRnF7N1|5G6)Oja(`Gkj1sR)b9U6-xZV%V9jgo<4O=xR zi_G+9DO>AO$vtAoERX`2dE47g_3GYb@nLRym!tg`I5v*^nhty@;`6B^zHm_Qm@+`v zLqiqG3xX3uj4;+3KsiD%(NS_h3iEW+7zlmm{_^4|+ec6fla6xL6F>>V3~KhdU=Iw0 z9ei>OV^|i15)(b-o(&0<5A7;400JbMiEd9AM4Cy=L3)^iFNHB|#zaXHCOr*tpb-F@ zL6|MB^j-WeMW)?T?uBX$jPNenpw6~dAM1>p(DJ7pCJ`)O5{Gg zcc&Q-HGGcO=Nmlrtup?)=gZfvc!g2c`1BfS9m0q4JdRB`Cm`7cx zT5CbdeM_@hjZMBPN2M#A`l(iu(XvG>z5$2&z>y{I=rxQie58TZP9`3jk_oN>N!f}4 zB$Kbv%_-B-DB2V^qJPl-3y7HWu0>avE7F&>fPZ|`jz(ydyMXhu^pE8JpA*ynqb>Z0 zkT)gy@5|K4$0j5$kV52%lu``j{j`aof|I%PQ*^&D3^UQvXx=rgw77GqmG~H@H@xok zOC|+#;;}b>^7Te7Lktb3x8wA;?q28VkKE3O$2{Nzbd>tsK~(5#7cuzr){uACto1%( zEv$Pk+Obp~aUuO0OYS=YL$5e`!&#%i>9_AYWJwI&*1xbbjUA*HaKkmjl%Zn+Z1K`< z=<9Xq4BLfy>du*%Vs^p@weLGo>%^YZrbm4_&HgA$= zYoq#Qn-of9*2zQEDC{|Mk4j`BO(*JJGgnITuEd^1glW?*V^8+;F4^H_ zUl)27_B?O&-IK_7(Bs%DR2slK^}VM<{Y*{k9(&czp|ALG549RDVO1~G|l z)`BB8pj+>kdVtzrLc8!Aa3ZI1>3>C!!1vvBpdQCB>R`N)dZ12q4sTC;^XZ=yo5Z@0 zNYY1{Bvczi9rf*>MHH(dR)TT&%PC&i>OWz6YxfnadgZS%;d0BmK8X)%AeuVZKqRXy z^niIRx>StdadGj~p2>nuo9_7^k*)QgmKkwI&dHo z{Lw4*|HDB1ZxmPZ-@Nk3M;jObP^1vDSHvTlA#O+$MTCk3N+WTFC?OG1Wyob2mW*i` zPS$=X-R^XPhFmfzR)~%6hwSbLdY^6SiBXWMne9B2v;DjcG^zf!?eEJ48b53dBDs)8 z)JZmbGkDwWkSfHTg&Lpp9bT6o#bV~$ZlXTGcH6OP?lx9-1^VbX4-ds@S*(7ayE9G~ za9eAN{?^Re_CnKr%q_UQHQH%C2ni9`7rk1U|NUxcw6e2%UknwH15Zm+o6SUg#5}!B zZ9POw+g@;f5Di-7+JNfr{qBLB8MS3Se+~skcPQGoej`*T!hFrZp_)yN@=F)9hH1@& zf@#gPoT*lUcjDuchB)6++6(u_M4A|g0p;Dg2%EiR6#L87>Y|bknPu4KF|1EB-)}%4 zE|td^)-lF9!j|)C29(!sN_87+y3UWPPfI2it?wu2Wb}#d^TN#N@_f9WnW!@7s`jWt zzCbggGS%K5heeUGA=x!bR$BBCWEHTHIA{yvxc{*D(&6C(OKfw|$cXAp%n<7VS?ly0j<7#4Wy!MF_C!#kNke1ujD z#>v)^4rt8gDuN0ecH8~nKFVz!?<>9!jl;N&di-)U2VEhFepqNQBuLT?6OFZVALm2>GoQn0HiEE~ z%cBDS+&;wSP zF!GX0g6yTJcLrjD=;=XvlV7L{4KSR)yfD-e1ZelS5kRU20&36=t0M^MjKSRpuLOq6 z>xUiGhdC~y4ONH1FUHbEgoaV@#s@tHXS-D=Bi)bK_**^H+C1S9qhjWz+oJu7M;jzi zrUVm7j4=V+&GQm~B2TT~fmh_ZL1< zXoyM=ueb*0YRd+@kz9^}7xVC8sCE&5L2Uv?kjxQWEnMRh4b&NH52AEw+3{#H#>1s7 z5^V%wyY6U*m;9a9&p7#-EQ>|HeOf~>(#378U0YC}8IMB4yBriks(#oIgw-Dtrgje# zyT%k-OI!?#6i~4l(U}&-Rk&1#(WXWHZ30jnFdOo{lA8tB29atJ4ONRk)(lGvmdJ`K`t3>1qxJ2!M?UYyo8SCx{vfl_ z_M{%Kn*(rh+#X6o!o8Lm4}Myw*X`h;4&Pgq4@HLANS-V>lNm|@6NjSj1hfT=soA-h z3*<pAys}-3vX)VAm`Na3n}bSgv6xW2R)3Wq51C_Af5#Q(9fA&DyI5kdI>1 zia%Cj1^cc(}I>wmjRztNqlPbn$MVO3-%#6I&Luc1CElsmaWZI}xLUzQawf=P>uJ0EK^O%L_Y99`vZzY|t=O_~jrKPNzQs|vB z_7e-zBgsa~=sC30uED*(Kww@tx3R=r=#{OB8Y>U$Bp16m6E7+xwPsiI%PIv=0+I$= zD?vgt2oDdfzReyHtf>X6u=EFMjeYaj80+XHTWTimY}pV<$>M40KTuCkv1qwTV{!9b z@hMDn%fK%&mAa%@k2^)DBy6lUvQCfQoRBE;P$7w_l{k`C9Z@SBEK&BgA+2p>S&6#6 z{@`XH8}?Gqh_1K>>u6LGZaijhd{{)S?l1bnMM!y7DA)IPMe!qG1m&q-IWT4fmBko6 z??P=hg!jubv&USWKp!83HAdHuy8PS%82PIkNr*>7fj%^xodbfTJhl3a0>p5X>f!nz zG@gkv;#V{?DG@<1IO-oE#<9l(>F|CrzY!dESq5MLWCNaI$?$?aBMj3BrW|7eCMobL zd?7XpOIU1hIl5QqMX79tb=P>+*Ub)>!36~xKC`^#CpU!!|d+D{BfvyJVw z2M+sMIV|p%br3aunax{hT9+zITu=HX@$;^ghr>dn%0wn$5DpRj+4T0in>c)qnyx(X zL9Ur0XD6O4SH$xoT_|&Y!qH6%P3=BDaGfok$2p?Ed4fz{PVwxs(i*$h4ohyUoGq3w z2u8EIT=v$waMI-^`Vg5+s^H$Sj#q`Atrc&)=);c! zbtH)zWjALlNECrITbZ4Y?2miuEESoZMTZN8_@IW)0X7~)ZeA~|1ku3uKI&Q#mwsh! z=?<&UxxgPDW{m_pgnzyb({1~M`c6wyzR=t_;J~8vHuWx;kRqwDQMs@&L218_Xx}Lm zQnY}j{8=a~NXyTaJDq(qs-XYaGrKF<^H&69;}b_Xyxj$Ow3lBoi=^f_mv5TK*1Te&N)dei7uH8SFNJp0d{GvCo_AuQ~KTQj?0 zFEY(OS7tb#I zl4gL~Glbz@*~|_{p!cLjAlaLKhn{c^lw$x&@fQw}s4q&zQmEu3x}vp8+EJTQ4u_;1 zjz6(TEU2ic+8uUeJ)p;JY={JERNE(i{dzsjx~_d(|N52uQ>BLSs8bVPy*8leEca3r z9@B+9szcA3Kap@iL|Y8IcW57F<&D9~M}2s1VY${N(l8yq!?qLk*Y69M73iY4=A7BO zHSDP=D*&U)w0LIX4YTo&~(QiAK*SQGF&PFZxJ2k-*dU>a%mt1a|_~ z7|T)XS=Jb928=_j3g#6Ij=C($S>$b4w`?_Wq>f>FP`f!zh|SE76xCcZ-t5d`^o8Q3 ze5p9++h@)n_(#HC?jFV~oDRR@_S?>%-mNT~2F)EW@hjgiJU;xb2QmW@br=~y%m|`m zKw#CEtfVrmA;lbpGctIj%8w}w3ad3Vvg&l!hkuRDOEWILDQJm z>ZhQ2>zK$HV2Y7CN}S>vnmEJn_9f%)Vo|u2q>j!-BIzxZ%Lb>2CHZt46a3_wB=+>y zajPaDC_nJ3XR3j%T)#FyNu7QdB1Muqts@lNvTNkO$j~$`zPDSTsEGQH?q+}T+5;XX zR~HLWU^1kQy@RQVh@p$&KL%$tYS!w=<_LbN;J{~d9yLnEL29yWMkw?xVm8FHY-oK! zO2&24jl(U5$VsrY9%rK7z1weF_yRMQP`1;S_jfq_chdgC9}@EBZtUO^ZlTLQ9$W5a zxf$+eTdR*hXZ-!%V88pl&c={|^awDR?Y4jN-yxxw9dQw6{|a*)fvIezCGRE*b2ubu zEG2E;sO2QUx>Th5vxqE7M6F44Dql8Qs<_4oeA`3 zvYA-bB%FA)yd9afzt$9TLrNLi;+ROa#oyH`y?w3#7WYj+p2q$hTx?x=T1k?X$d;9i?V!sXIcWv$n-?1xEgVDU?%$lLA}{aqNo1y)s|tqO zZ-<*FAf`H6<>--cTPHUC#AHjFO-QNJ_T&I@YVgiuJ_ZghmemTrdPYq6wHe+Z-kYoU z<{Ud0^*#bCCaKg;6T?e+E9T|RY|I0^oH+~RuF82tvP~Hk8zR<**F4e64-C;B8iQtt z+9J)-#|RCoB4rWcqBh8Lq=njpZiw6>JY+^?5xPWf3o3A%?h!E`H)J1G^a4n8v>L_qLTX+EJ4%jhB|6j24< zHlQXw)>72Ip=rQzgXvMK(=#8BX?x{#@_vI^uw>-5-+DKx;pyZxUK5@_8^6X#;?0#~ z4W3uNys%c8rj~mhHR^e57E#+8L#%tJ@v9{|>R#V>QTiUJdT8wa@H2QkI9OCYL1=R& z)hPS-2lTg4JPlJXI%n61J`)Y*0RPURnt`4f)#}#r4>Y@Hm2Gk<2c2O(9@2e85!2?K zkQf4C_}~yfOc21R!Yn}%A|GULOgICDF>P*YLwEt=%&11VxoJd1gGb^nCnh1_)=or> zdDx`74>PO@un(YT$TsGfxiW%zxndfi2GlWi4d*k-Fp!XhI4bt@=_DR+J4*@Cvq0wT zHiiV#;E8DU6Y9h}qz{cGBsqXfhOJ=UAms*(Da0cL67FJdv6t{bvTxn{ zbc`R+%b&D3E89A7SEefh_88*^yMb$6QmRSaGO4AFld)!1!<$MYobT2p^294SVo5*0 zR+W5Jpfp_IAq|a>!dMd$)n4$6a<6h;dC;|FQ-2V(q`M&kv!uHs!kRzOAIEwy@*dsi zYT@Pc$jyCd>y{0|;nf)Zlic_EdFRjJ6c&6#hBk=;NA z*I`DKr?Kv(H7c`jYTPqgX7#jOnq&OS^_D^eb@sq-oiSb;K#C*H#chL1e_FBmZ&mYd zyW3itt5+ITPv+LQwV+L@{?;_a$Z)BremUrWrubq;<2nv-io^eLinITbzxaQ&UZ8x( z`M*4#Qq*jffg{~7uCNcG8B!`$F*iH3!@Vm_e-`;`CQ)zuLWSHmJir0kTMR*9Z&tmGH{U$cePmIBdti#db3fvWjfGBPVA-(*KXvvL?B+&PjuRiB5JbX)h0 zwv>i{hfg>w=1H#4k#_g_zzEZO+}6Ag`ufM|_hiC` z2tMoaLCrJKy(1kLwe%FaiEz#wXHx495xLI@EyMAgCudLlpk#ZL7~@Z;u1XVm7c^+~ zooB7x-=}5k_MlBX%cgpFXddsmq}5Wg{w}iJ#tM|t7OJVXxNn4YWbqAAqPb<7&l}_F zW+_llM7X58W6PyJN3q1&rkQb#I(%SX9;hX#IP!P$gM`1pQF9dTlm{7qSwqDsBaCHd zxMZQkPePZ=Zj4Ec7G@M{^m;)EPwpTx=SZOEDT{?H^ey>dBc84voLzFsr$a_9 zy*|o((;4&Cqg_kNr12KPQ*T_@Z_Pq)0OP>KpU5)aU!`APSZ%nc=nVJezzSIx+hh6) zFK3r6L&nB{D^RvW79a*O_$$NY!6c=|j(9oh{c7r@o;=B6c&ljWDP$~z0yL`~Bgj5{ zBi5Sm=Xrfbl_CTGtezN5g`cQZt2eIlefmWuQ#XD;+|anQRIN~=Qfg}y4fV1WZs}c9|7S)2xs0)EsK+f#o-!=nTn(HCzz-1BQAD2b{Gi)-obFnlw z1j_FI9X6f$Bb%c6l}a)jaw*grfwPuNa20@GeNka-1_lBcATICKa><4 zy1K6X-WC8>2@8}vfmo0s>x*ISg!oIx^W3R(Gc;I`)|`-u0b>nJ;844&Wr zo;ASrX&Sy4{}$XsNS6`jQKMZwfW0{uLjSAX@nH>U>QIa#YYlnuT+latW*OdsOsz(F z)}>fMuD{WfxEM=r?l2>`VmaOTi1Oq}H)&nZCWYO)ySPjH&0m=LbSHXm~DrZ7p%p%`CH5GKXK78DUA z@6Y?qXFqdNneTno-ixoB$Z8HPJL6k@V>5Kc#{J4Ta7|(`J(XFJuypf^&#ek^LfM$R z93a80#HjIC8GQu)!eap{DHQLZX#ZfcENXFs&HU6^aTo6LoSRK6tANQ{i_Z0QMO!zG zs#`zSUf!&Qmj$h`xZ5}Q@**n|AV7=oJ*l$F)ZnTqS#)7Zqhjd(Fc89Kq!qulE_P~F zdCjy+`wO3?0`ZxXcB)2dP(>N>8>HuWg(-P1U`1?t5w&z+7B17x5458ZXz0eF&4Bck zWU(t_naFBO13mHrOGBJ@lx%62MOHDWlGq@WnO%%l%8^RYTP>q z%@Q7!#Tt~(omjEnI_G?GHaWH0?Ov2uQ>lS zWm95|8=3(h#-Zg$C89&RXN9;Dp+UK)g%}l4AF)K#AzF=yh}fVu$c1<&szbi#g~%S! zuK0cF`gVGq45Ug&gLybIUA=?BQccH)wK*s~3Z|(CQ$+7fz|HD2t|rQ96nhtkL}$C4 zc5W+~>wS;3(3IBucW|n^VRXnG=ujhFI@8J?B$`tQM9xB_HSA7C zO0}|5Y1DOoYHHt{sut`Sbw?^+PwQ`Vc2Apl0;f6IW_GO9?G{knxJlQ7ru=1>xjWo5 z)-TkUSBe|?bq2RltniLuF6ZIe)@FQ2?bpuqygH>pYqL!G4r*;XH9YH^j%k!Eo<#}q zA79@?vUO%kji;D9fA5hjvuyY_jgFi8T)w@XaC)QLn>hi-7}-w`UZD7a(_9-02^R06|oBqy?zxG!hH=N3EDk+^<_XC zsde8L8q6bd*EGzXk>YV zGac^|Hcjhr+cGsR>#wBlLGQFg@=vsqmd#1_J0PZ@Wnf#*SD$?rG_bDZZZB{SBt7vD zRj(yqNcs#5QfEr~$ewWIyoDuJbN@yyITd-&rc)4qPrpE-+f6#aH$a4FW@?FiI6s{I zg!OQqs?fczQAU$B_(al!Q>VnlW=gKBpWh;%5muZn>I3jQ0PO8IZ*zrBQx1kpY;grf zI$rdn6bd6hSrD4u$(Mw{OMB$Gk!J55{y2c$^IQK7s}S9-8MA=lw{)9rPGTS zhCWLS`A{m+PLfj}4$)4LQyr2@v@+mVr60A$__iDAMSa#vhgY3cZ{_iAHrj$(V)KW} zTS{x7yi;QRK!tbqm3m@dF~o``ryTZ3x7tlpM_C(y`L?)coi>=ll5L+%V_oU_?m&fBZ}`Gb0Q;k>GM5EI0> zJ%P;};sY=!g9)Z*MunK+V3z{P?k@}JnL{~6c*$87u$T&wC2R9d0%)=}E5*2aTIK`1t$ z-Bjs<4uSRw$wY}sYfEAmm$$EW(M=S0nm)ED^GEqaaT$l6#wdTxVe%*M`;M7euKmh1 zBYW(2cfMG?o$lUzzrD2g|1@fxLYN?>uGKK?@EUji!ze7UhQR_2eF*ltnj++gIUDF{ z(b`TQB|C9%b8QoAn4H)Y*KlFa0^5g8x`McYh-$uMicz{v6-N&k`6(h>_Bm|Kp|X2b zoQN6b{%8XwI_${#tD%S)&w3-SaJycX+##ORf?iuNd3-71I4$Nf&znzT>qOkOSe;ZP z)}zn5E5X|uhg*>QR*xk)2uM#lk+3xlz}#pBZfn-R6TcgoLljQE77F0 zu*;wKMy`DPXX$nWG9>VN4 z+r6aWkE-Y63)O7Le3#FSC@`nU>=kZ#?LxvxeBOi1l-uWnL}&DxLc1l;)!5dBOAJK% zEFsKMyJ~iDA&yYGsti>6JR#6gy2^G6gB~j$oqb~z1F^7zVIU(FGB8vgBM_dXs5XxV z7AnT2dVgGNEVBb`^iQoMFiYSxOiP41}l8GsIwH@%77Qbe0GX;KB;0C+yY&9!)65uU4UD@=1g>!!$83 zsxU^-scH@MM8CjL9pIIx4`zSCji##Iv&O`O+h^**62n5pv`8B`V)7Yd&~U=OJ5(I- z*X4uGA<#2G08?T)hx`evMXg)bGQVk|+E?tr#eU2pcJ`^}h^g+1B56~QHfeJR9#D5Z z1()g{_IicJI52W2yN4Xr=n|qPcGfUSud!tZlHo#ZP%AxQQDX|}u0T3Dzb#>AQPc9| zUQgoePxOdf`qK{no9-f}o)HfRSyH5KI`l6>-ZVoMfpI{^uXWp2Ux^>u?YKPO5H=*q zb5ErKrhY@?MHC?3caXM8_@ye>mI9vi`Pos0&oD>pHlK_AR-{j_ielFaAU^1l^ z=c<{!GvW_C3Gk(2AVD3%Tl=lD_WOxpr9#1yQh^KC_Pe6V-royKU#Y^iZ6LlTgZWbr z`I98YnO;~{`G2qJ|3z}!Ca%l%3m}Ajpf(Vcdx-GlC0HnZW5GfW1{R5AY}=F)&^bzL zL086uW}Tbf=M(;TdoUTOBYjWr$FIq0md-r=OZ-ojlwWhoOJg2(`?O-F zz^UywNqoTm8UYlHkdY=pR@oG|WB$KOEdHdW`}^yYH?ji0Ns=`AYZ91QnmYaKTTDs% zmzHj&k8K#zm?x$pf&>3kLkSPSHDWR_isv*YvM$w0Tinn(t2O?r!3J5DvIOJmuq!yg_ANX_Rafl!!&Q0=7i;F_;SVA%(qi7 zSzTZ*YXWr(FDYPkzMMG^uxS|I@%c8DTHW0`=bCQ7=MnsONaszTTZ{I1x;2Z8ZdJOL zxVF-+5C`Tj3t`Yu@LF;Q;=n9`Gxx{4s_ES7Nlw-9B5;d|ZTix(-1+=re#WBIo+ZXl zD2zb>Kxzyj6pCYz!61x58iw-h=P(R%h-Q#H9_VJ7Z{H5*_7F%Xn?x{!hKF_z5f6dr zCo+tzm!UvZdr>HkAu>gwERw(!l>pCRkXL}32vPc?>>=YpL?^T~f5(B0y@}?|91QB4 zTmQvnu@z2~3-QFDcva#z@svnrlnc{*gT!q@T$`$n4Wn1c^58FU##!aZYpU}g8YUCf6Ab*xa2;18_IGH*-|NB+GlM)?4=Sh9%^wRQ%ncCI?H({F!{A`?FE-8=Y0H}Jjpf)Ks0FI5Ift`pOwOM@YZPW>i8H6t zJvY7b_GfD_Deno)uu{!59F1pw?#x)IRYP;;l125DS$o2D4{BPEc1cw^78z8CNmWg< zxj(ifqqcBBv8*rO$Rr4VpEOU_y`7ctm8yWCuA;Q+gQA?PiAAW$v~*>!vQ;jWEP0*Y z;8>bw;4YfZjsk--o=&DcA1E->b}Mgbd^n^Rx0;qb_##zft>vZKq5_9(x9IGfWjFns zgS{!A#nwN~lxe^2)=RGKj@W4kU)5_u_@`s+h%25hPlxB-ReN7i+JMJiUM#>l-Niun zN@f!Cb7_*bR6?=G_aV`@h4sbMh+l>BZ6Y-~h{puS+%V7g0NP&%BLr)LfO&l1NdVe9q5#_oJL8B!U>`EbfCmkNXRe^ecUqb+ z?XhKdG((fkko>gpbKatA>7rOIjKOXsZ7AG=@@S>d`g1mkZoDYIPKZ@bn8A|vhz-ah zKX;&04=Rvpd_jJ>a7nUSPN#kbbyJ#kj%r~BtVy1;&=K}I1>-(EndMsgPX# zosMa&m#uaHEFkeezBT$E`u%?t(0|~4l@EEKEy~9R8;y%U_qJ~w%X6GHKJVNR88h?rT<~0|vFN@F&w%?653dlE}vhsj;D?2V9B?SyMU-^UYYmu zMQ%G`TEJqKwU`wHi_W^e&`@n4I}Bji=379+8n%R?VsaZ&H@LIER+fy~#88lO&4=XV zNp$1Bkc2t1RzAZ_{^?`mDU*v%jm9~fz`6kwnZz=E-T&iP%SS0AL+CoBQoAuhWG5t& z0c5SwoB*2V!4^A1>;dM+pfGDq`PgEDu;2(N-bs7t5=(7S@-R;nprT_%(cIOC0_-Ox zskpjS;&C}nH>pZPLdm#^vOy(EY}rrNQTg~yirhjinjFKNU2HpmBA@&8Rmd(f9=sx@ zUtj+j0+WAK3t=_9!c3F%mNko+!&kGR9KwlFIaL0_S3mG#7&v&M{uG94LrNl>w=esD zJ8QKsuLzO=Pa(q}Uzz^NMG=TP?Co5DaO3~@YLx(&DA=mNXYS38Qa6ms0*u=4-&`ibh2_r69 zv*~Ui4a@U8`*-5h_Q&h{=K#)M!vrG;NeFXD-@e;Hx=HtEK#aJ)W+4ry0;u&+`Ojfi zP_8R)o7xf67^W4sff8mtQa)p^T6!J-uqfDxLZc!bG&dBnD0?;6cH8buljLfYroBkpDwmUAK9$v zdNd#X-14p3+AFm|7b%ORkJzS*yR}5~gI{8r$aFexU?%qzZkqj3pnvItKnqS=qefib z4U*23U2e42W#~1{x|Ml)qpCDb{q{UZr4#8h(0}k~19z>1B99W9xMu`*qlUvf?sB6@ zV)C&+C&5u~xIIQ4m@<1^8M9*2MQ1EDEQ)DA+AadGePX=8grvmlaL$YH+Lfwd$xn`g zw<0J0e5$kPRCYb(ENaR;xSS^w8~GAU)~us1v0P^9D{THdC~PHPb5`0hyyd(bYvhPP z;NerNoD;#GR$1&x197O{WEsn2x5w?wIFuz*cP8(JV80i==*-sWq*`7~#u37T8)t>r z{?L7MQYFSPD=L+lY79}~o-CU=f+}N}AZn6ClecbY5GU%<6JL>irZ5uvA=kTeHAj>$}eP#%C54K=aHcmG8Ri9dc z0i-ONEL8~TYKqzG3ZY4B8@A&z>(!V6g}7~i0k!e5kQSmLQp#h-fOa)eJ1UUxgbX1eZ!Fb~~D62Cft zbB9QD;Uyc4(nlb1DlDHpk!cRJ&FM2v?(Yc8ura9G>^L>VO(|A{5sg?sRff@@J?+W! zVpi;SlDEHLgy!E6Dvenn%&RH0+TaTm^l^OGB*VgmilQ*$6MJtHh;*(dUr6Q=?9iBj zI-5%psVR%wz5D#>l0ERq;wLNSB7VW_=^4$|Y5a8CyyGPM0t^N~?a&KsVR36&D$&yF zDRWnzG1W$ZUhGGOutIyF2%}~=D$_s7=%uKpYlXo3BKrT2eayd={=ZM3*hFdR0Re=O z4{NI;+vcSgzoi!$ZPvSLC?Y&iBM52ut=1DPBG)2Gls7e0l(}G!o1JhZa$kxbDP%Kq z^T)Q24AZ0Yw-ZbO5U$`t^9jHltvFX7Td>tPCIlvfh&Hp5EayIiCeix!EiB-JpH65k z3N^V#tl@iqoDKiRud+h98BpVR>{OVrgVxT(X#?eSl+cr+kDp*{bwOOdS$#apq zd93jrUtMQ~`)WJSj#+ydp|2bg!WhfzI}5-_Cpc=%FUEij$IMv5h%U~scwfRWm$30n zZGi9X7aKk%Xwu>l?_H9Cu~_C$REA9Xq#A`}djtWl$ABT7cSLCbJw}K4A+yA$@h;kK zn-p5XK6E2RsRe*E47eri{>E)`3L9U5j$8x49LF%jC^-*RClO-D^&D&r;;QLS4fc5Gb@Yxhs33cMzi?W{&f_2DW`ic1dceNCrR7&d05$ql=4f&)3)c z1L^>fa?ncRIZqJQgyTJoEJ?g2F|?5%%duFchT8;*nKKIv_QzUtXtT#$k*J$g7!Osd zAmS{{Wj%OpGTO}N$P`lhU#X>09D4XUwP8^kK2tuF*4 zEs*AD3PlGM5l2LD&>e*aB@xR+ve9Na?`N7Y5oeLVuPsM?I@F&cFzbb1sFV5tD|i5*F0czPe7&%mXG4df&rZ?dAJ_JFr9)RzjcIC*o^doS&){p|zgdC##p zeEP-%JGg1u^M~DeK_-uYQjcxCBP1`Ah=@rDLW&~1s2D9cW^B1pU1ovUu;HM|VnJFs zI>w7BPCvl_X&7PH1YiKLA_Qd|0$kB>4ZuR1J0=lQ7QjM7A9;A-wP9RHSd4HC=!PYS zz{yA)52lCE$w-knWbNjL*vZU|cx;SYivW_oCCaKieMaptd@=kCa;rV~6wRls^+~O*G-yGETlhPtU%yhd04|V4Csn z=SE*PF;NrYJ+acw2C&(+X$|?T%(!*HY_>Y>!FIlC*{FRyIxM9@AuWk=A%%PIR_UGr zuM6q-H(9iuvu&*lEZMj}_U=Dl9z^Yooje_Yb^C8k{2vu!irTso(6T_cU{L^&ALKsk zRnZKsq@dW~QK7*a#jfResx9%AQBJa17WWG5^|L-M5W0mhxrtqeeg>9s-W{j}^2Edz zr+Hn=!KZHo!yw+8IM%|eSUh%lLR z85p=1`#x)|-rHqmNWL455ADuHKwkqKqL zvy>qTdaO@uI)`Q(g{E1H5&X4`SRhBQf|{Ewnmvkp70ch(PgZ3a^Twf?bgi3Nr!^=@ z-*ZyTdYycrqmhl1A`kD{auvPt5&JrVgE_iN?@^m{M!>=|h6@*W?RUHTb)K20>=-)0#Icx6SVVh_@p1fI zBm#R>j9xj@gFy)Wj5G826a*%3``{EfyLt!W5DEKAyQCDxAS|?S`}7noH2IS{xI0O9 zKMFhhH%V!Z;B};FB2q+Kt$xmplI@)-&oQY-|a&-4jBTpoeBWmaR+1T?jYIYp`= z58Pw$6sSB(i>MpQVru!6N9qnA)H~PZS6p2CCqV)sYUWKR{^Q?s0pD~FO9L0S{xc2-DW=-**kKzz z7eDyg-a2YJ&xyC4eod90w5NVF3=!OSd!G|e$8R1HMq#%&pZ%%tnAZ?;#!es8gWK-=<+Xl%7+?uw5=`LC`0c8qT{To zV2^$*uXh|i%hp=t>Z-B1Z>LBuF*b`Ofq$7RkC$MjpgsHkrTM_(itfWjhIjXkMZK`V zJJZr>-$>QEXxD2(IZV5F?Xw(zH3u;7q`SEQp!H!7Q8>X`v|SK$3I6=6U2Wo~2APh4 z78utp`#m`zCcqLz6J(_#v*vnTrKH(tC#|Y1KuJVEg%G8Yb0dPik9Od@M^Jr3vxk_5s^OB7{RSD-yUj&)z*+W%%g^>#5$7iObG|q7XBH9 zNqR*s@rPtw4^p7UOd``N3WhI#=_ACHUXm>Miq0-|E?R1*$M6-hGj8%Uxo$PH&w$qF zltAyE;2U%BnPJXdSuY5hd5n0oF{Vc3Px{_MhoR_lL<`yGsq>TxpyQL9}QUd6A@iNxY1?}i2 zv>yKLJ78Hn1#jYQm64&}U5KFVLGp)xjT?$OLgkbOS+=yiiXhI3kM(OOyo~YM72U))54k zk0O(p5RwN$ZxfjmXW7g56m1*(GtgF>ADr}6jT(DHUrqOM$Q7!fKJRCA;QiBH)aPRY zU-Pq`km)Vm9@b4`jJv@noWb}saCx{1Oz4r;dobR{qO6LD->@-h?AdeFOwq~?#d-EWM4^e3hUzawL3+rbK2lRi%-*vdmH3`w{~&+BqECH~)L!ST+2*&3Dd-TJ$oi12X;W|v&lc|Ahzw_IMBUO^9B zQYlW+hqDMXyKa()TGBWET_V|LCZ_WDC*j{H+>!=3hVD-yE7&XBh;LEeDU1>$BMn zR`uD4jYR{}g4Oh!rOzGQT}51ILS)d#$c(a(nggw>+0W6+ZfeuA;G3^n)uW1A&ya$M z95tL7xQvXZo;@{Z*vR3R7>#XQPu^Cw%L9{smdGnMvt0@cm^fLxEpjii2Vsbd7TdAdpk95}zvx9=WD%?qMKh;Odq?*EQ1iBtfj+VA0b4>Of#r zButRc*&fK}badu?2d6b_gpgjTlqdCA&hlUqX`$$AJhC?)wK^QRi{@as8m~2*7u za8rbaMq*(b7$-PR*An8a3A_Dn32r~eI?tTrDyk0Dy#_{6!G$`wn-#lNX`BRwJ}S-p z#!iCAzOfc+w60qBe)y`4KRs<8j#0YAPCRfe^&dJcUp*{PIri?BW5wW{+(N6*gTDJU zN$q5**&!lKyIDQ<)r{Vb!BF6=Ix=V$$Au()ix6gs^B*CHwp2gzlOY_^d4BRJC-S)6 z9j!jipR#rt`jN3$qc~B~Z+?!o%VF)!>-Cybquj)}G!fkmz5RJzZ@}{@$W&Y(Jt`Yd z0pzMagm|JdJ0u%ZK=HVn8eSEvcwtg192Nd!cVEXFIcB#toSH39V8}OI1iHL*K`j(|BC01b|SMueuN@2t$lqzC2i?58Wr z{Z>QYnTI#n9FS`G6FnX}1v&7RB%qJ3>SqRL-VWU!Wb{tBKz<6EJan=@DSg2XIXGAY zJchQBYnC=zNfijM2_b=046J(~=}$3yeD@&*xmM?gis19ZXhjj1LV|XK6iyX}^^~E`~Is4XP>H<=f3$y#<+p#IEY8rwnP}E&h?ugVyfrwF4s}JE7UO#|yfT!G% zq1@3ZMcPwW;%Juul>mGF3Kl>a!ZxMf{gryfyFf&}pVNhJ_H^#T@`UF5X8(6;$8RB? zZl2e+WtO_E{SBftu_q(`w zw8<2vk;pNKDQ8pm zn8MKP+fE+ut9{3f%X)7ZqF2~iHOkI00o`J7H|WFSp;C&oR(V~?SKO6lhuv0Qx(<>yzME@*|2pG0EW~XlI!BQ?Vx8{$zp4_Ib04{#Z*I)Eg zO-iF5i6iXN@|-8@sp+SCmC^diGi<_w9w=tOgO3vT)!8Rlg7!%+pQQUIkKK~-6Yrim z1hvc)IgMp{m78JY)Z>0S(kGBJxtRYjfaz+h0sszE53LbpIxlvFwaCaB1$u9ZRE<2 zR1v4oY_rB*U|2VA=OD7STFbbOK9A^Totll!Se$%hAZ8zzfKZS`FX8DGkkAmHafN5P zde3Ksq&9hbaSIQV12a?UHmt@-+XMsFWOdgG_}9@DQi(l5GZ1|4d=*nNR_DMm0|}F8 z+n3UbE2XM)<@$(0r66f2O_gnh`6K)*Al1>`k0?Ay8KsvbkKHoC(0%V=gJs>noITIN zwX&|cOi#V$k0ssfdjP3@iotAkad8QJ7n!*h@9yoJJRFHm{Xt0(kV9;a4Q|Q(;R)wS z#Nl$M6_H~jz5hAuHoSyk4nHRwfCJ;yTE)*_6C9z7Q7%`si;<7fe=={2{a(+K%O8-( zKct1O|LbI!8$H+%EqS*)oF%ffHEe{U9Zsc;rFaizc))a|6gsB=WDpn~XYQDO*YH%M zB)NwRXR#v;7(7p$BEN!yye3u5fKZjrTH_gG$srdR?Rg%zB%JXbDgnpgDZwWW ziP7aZ4qjbVZS4H}FEi-QKlf<~Zdb9)>%o($n; z2EU&@%(&h)$NLI8J|C2jpWBU;WZq0cE9L(VTOwr9Ib(I~I^Q0-P!q=-7f0l|6g667 zN%IV{Cy6RbbIdFr*7-BU+_8eh0Rx7ZfWJBclKs8LoXr6IB!mAlz{pC}utDHQ8u=V3 zf`UTn1KKL*vx16nlBfzRjuKOF!!s*~*B3yw#`afZx4PF~u2xu1S!Hbx-l9t_O2L3JM~|vXUNn;*j<}X|AGHdBFU(9XTF(5= zxSb)A!CGqFsK&odagEZv&DOk-<_|CcQ%FFhk`fVeLaEB}k2nsP38(!$WH@#(Zm5d+ z-pYYqz9OZ5BywN7hb7Ab8D{$f7WC=Iez*+E0exE#53F9`a?p(vfFQcq&SggQm4s+H&vATiu zc#%k;#ls1Tb=_6b!6WB#mWCrG&Oj_)ypDA}WQLAfm9le7+&|KT2mkWYZ?*aw6CG%W z%-WyoM+%MG`Hzr^>0a+SE}jHY2my*hUsawyL>Sp_BY~uZz|Tm@wSl5qknqNe(sJ2kQbRUMBO!fLHVz`{6k*CPx!mr(Lq5Hn3{<};)GBCZ@6$v zcUuOPS-brB88~|~Aku@a`B~trIifiDx$k`Sq(`@eLSUlGO$H}kNbbOc<@9qS@7LAP ze*T<-X{BgIkvgw|o;D}ZJC8rRc5pyM#h)PZfr-ksYcwC~)(Cxo|HY-)iXj~51+1~; ze_dn$77^k=E9T(fWMt28ZKz;mZ>DD{?PR6@Z&6^9o&tg#Qt&pilhY;vH9eUW6Ecbu zaRbq$KvDi^daB*tJ`iRVp#*h=0&kIz9wWK*G}B`d?0adkg9|E>lS_KeP#J=du|)G%w?6YV+2Db3;{c?!D|$_itVnzV3jMfQh!r7C3=nD1Ou%Sqwp zj5d%N=ChJ%SZ|HvWx>UkRm+s1BF<+hC{-9nZL(G8Lp8!h#@1!^^7H%l6fHP1=R@XV zp5&F67*5|?5z zIaSZ~bgZO3C4DrTg_KFLDoO(jJf^}!M7CSNL@r?lw$n^!!VT83;+0K92douTzgmKo zXCmWxy@RJ>k21u<_zH5bShGSUoRZ6I@@yt?rEpUgPi7)^HYpo{Y2fh49~sU3Tg43 zybwlZ_7J?+Dya52M1&spqC>yiTB0HM5mNPs&^KeD&IWW?vXJLPDG+eb4}i6y;!oD$ z)9AuIt<>V-`MP}-v~)v!TD=kFgM$UxLjm0okngqPG87c(rOSXJDzVnLRlPF5M5OymJtN#1=Udfqr@1#cKP@V+7Q@wKwmmG2=6)bB zt6Lmx)qZX+n=mvSrvV)f*J79yEYHZf`#6{tHUn6=Q5n{o#;6$fGD$YipGR3t(qhqb zsm_6fhH19BQfyx0vr*)vjo$T@Yg%)#T-GQ_90!q?MMsY?kUzJw?aXm_dUd<~4lN_w zRtFG`Q$}&{Qe&8FjU{gXk?!Stpjy5I>Pz(h$L1;_Eb$*!>c8#`MM_!<>mo?pV3_Fm z>4Aa8)MkQnM56XlQaz@E@x#6ut+IH2vKLHNMrQk=qYO<(#is^7eA~Z4Cm+J5K{Cor zFz(_*-b$sf#rs$KmU<1j+B;mXR~wGEy6Uw*pJsZ#kjO>~gc4u~)KnU3c3=nyd9zK8 zbYm7wS&n#G*4u+0b5`r%5)(|(h4QVh=(0%l2OrhK<%1qg zs;U9P29D3uJ&q~~{qvnudJ6LFME+eLz zq5<&wCqgLEC-gz5#FL;F3F?Y{=2wFOd@GI%xPw`F@eqj#>D5N4d8K)VXY>G>btCd3 zd;BK|9I8ka^$wI3xLsPeiDg+a9G>?$gN=f0jEObf|8T&@gN4|r_ zFQHd-BMQ>OC(#+_9qqfv zHHhTzs@XO37-p?FiL?9VSE&H5=3|%>I{Gkx;6BRAN86^_>fFoCYecxoG1YgdO394kzWv6W z(sn0xzL`#MsOg6n@W-?a`q68C5$3z`ozQ&d#J94=UtUW&nW|#|Sh9DgwCu8$v{)fX%_olYAGF)hjj87EA{a>ASqq_2)Q2U@hVL zjoiApE$#9L!nVCbNJa-i^_~a(axIxY^gV&0=g1TgD}{(Eig%pG&OoS>O)36RJY9pioHe=j3$ew%4_h-Y2!8o6gPj^haBBfXPV=s5%X$? zv<<|V^Gz?^&dbWc^prAlmG9zDnLnpd+OD1^1Yq*KqGPao2zf1B{`@bk~aD2byG zy9byUxBhyor2Ff{2xuPiMh0fKX8#AzOhaK^8SVqgG7!1x07xw1L0}ZllD#`NxfudK z4A}ZS6)0$-Z2k-KBR~9Tya5ym*OSVD&d)S`##_mZ?gM<@@_Fuh%l$QZy|a)_Zj+w( z>8tFd$|s+m-@v^{6oTN8Xy8BWfq-^LG-0;pr8c{1cg%-36kxj8lBG;kRQYMoCmR`$ zlAT;41s3$|0Uw8bszik&b?hTmpe#LCZw#rd=OuZ%LB%sp%YYbf3-`^O!;N(I z>c;L-Z+&l!R^=hy`rN}a)3QRTs&zRt0x!MCH}sx>CbSih$1-RHj|+%Q*eegUAmBl{ z4GWbK_9WRE?)TZ6fM)Ld=2UqZ80m`V@glrZ_-&~I0?D2pOYM32VE#&U*_tzD*7lml z=VD+tQYBrhfO8;^6v%$*IV^W-qz@t${MBgI%zF@ZdGkX|$I`Gx zQz!A;{Tq4weOr-E7s7?rsM(kd+fH0&q}@g`ec+5y(DEO`fI_@4N z`f?lijs^NaE1?0L%WwPO2tYPDSG*mHgXW||+|k}TT>Pl*ZE6G+Dii`qE!8fGGLfXd zm;lz1U_;!zL5O_*5gLc=liYx|#bPMAhHkr4 zk+8`5phSxwEA0MGKZ6UkMj5hbVzX7Y_~kzY?wErUTSReUu|1-8!Q$Q2N6zSAFIKajdN%~uw+=BRK*YGFcuhzJ&u z+-ChM_&JQcJ_HMxs;pI_mUE5_tqsf67lo6WTt;TS@km;o=byNXx0!}+at)_HS<>9D zx{kSK+&bD4dH``gpuW)F(fWJ<&eC|xtzYjB%tYN=22g^V$v|zDxxN_BM0$2&MZJEN z#@y|_63{uSg!?ig5#7>qkpgmP`kYQ}l)IL0XtP_%6{fT>Wag1V*H*0dQW;8-3A%Hh z9HoQ|AHGUoDLlDIhmv@b&V^9BO)97gU&C5|v^d_!;0oPb^KR-X-r}<#vCaA%(?z8T zi@BoS)pEGz6ZJAYn=_v}Id2@Y&d!2g*@;K8!IrhEbCQL4Yjzq<2TaLbrT&7KMsZYo zf|yA}&}6^C@?NyN?BiZch(h?CnP4-i1AV5@dq#abs#QIw9ev9S3+-l>O4;H(J}Vt+ z^@-grkV?PPt7rGLU_3u<>vrq4eZ&)2h4JqtFc^Zfjw}t?n>_zkfZ0bhC0m}ZYM&S= zAtaByt@s}mBnZRAj|&Iw9dlTzr*JW*%yf0{W6~c>2{vk+K?!a|zq*rh60_AOLWqv( z4>H3wn8%wf6B3X(Gdp-0#90x?FPMW@7vh99mn>%t^X@awlc5~$rKdfF)-7*` zqK15Is~`-d!?2cCjn709H8A%$hT7d?AcK!o=z~r z@?YY4k%xNtTpiK+S&k?ytV!x6)b(KnT+J?eG+*$(PWZ@kI(E-@XxQQQl)`~zc5 zO6Zr0sP*heKgk}aX!3&(65i?_L+mBlv`2~N>O^;Q=F zrn++0y1BuYMvJ`;6iC|jQ&3oXQCAGK?3Z1dmdY40lQhDhE56F_PtuU|;MCwYCbf=mQ*vbIzJ zJ87rqTlu+{33VxfB8n)g0Mb*8^9k_*#RYk|;^6pd#QXfitih6(kTbxQ}V^q)vHBb^LU8Dx1^N zM4$m(Lzf&tl`c-8Q>m)p9?UJCM=H0rq)VVtXF8I^FlV9MVbda+tSm?;C&`UqB1mIV zc$^L{&^QXrQ)|BBng)j(W34b&B{!~4b?k??^|xrQJ}o{|bq*_#_njD=8x&vV7u>H71qC}zCF+^6R zknUYAH=C^^-=E5~E<{IOZM&K^TB&b32~T2F;3Q{0N24k?o>Fzxw__1;rL3w(vkV(` zD>?3}gP7ODkXhJ|B3D^G2Lzx_k|#+k+zeCKPhnAR_3_yJSx<2$#oYv^V=oDn09|DWvx1R8h}7A#;ird>Vzp@=`n{tj+d)VO0OGG zu46^am~1UEwinpQ?Ndi9WxM0GOsDu%G-geac>xhfhp|!bMTR=VXAw+?yJ`rfgt`c2 zBF<9pX~AEIx$1y$`=Xj?w^8l`y?DtoSMZHW@QmKQ6RK_iA90$5V?Ku7r!xg*LIjy; zyV{Pec@L_S_YgkRC-rOyjv%P3OUUWv@U`mu7;-F%NBdfFuKZ2!0c<-rA_8 zy*jzPd>T?lNs9IA9!*y|c{;D~--pq9Ec9Gli*yxvp_m zyY-vtLZ3@_lUZ&)9DbQ=hLLU-?}N_CGCd%hUE)=qjkwy_1(Zpj|T zAwlAHRg-InfLJfK zBH&rQA1)ptUlUtIJ>Mr6woMm7Bu^Y|fH3S?xm7jk<|`9K%5CaLhP1kw$kY%yim3?V zbw+i%>%dTgh%8sx)1KITt^&}IzTd%2VU!%vrymTtn`Z$MU83a=9~_O>pGl)U&_=qr z7UMfS4B{%bxaU2{KH=;G)G2z1UtfSC89}NkU-(KQ-Z&dIZYmIU#QT}8v;tDC` z67)o+9#C zD>(2kvDrpfC>Wf(z>bN9-r{Rq9=5Y?tB-Z>XFlyPA|u)Z4IgZ_)EflLpyd zJg0+6A=jvHqr#AA5@5icgA?k1yc#myBXhdrMj3lQC(+#DcP{aPz<@L zsHzywLcI_iEeasu)ohkX*lbl}J0yKZdwa>B^U3=8HD?>}^Z6Kq3VnrGRN(0ny+#*ruqT>3J%H>F-Lul%x%Vq=7zQR(osZzx z)tsF=nns~3%;?uC*D%ppYQ>m7+) z)47Z~4o{o=Kr{&=HogwpU+8Z-YEF2p!QshUYTMLmPaE`9XRo*Epe@;IYrFo8 zS=;tPP3W9`gt^JdWP-&Ry6bQ;t+?gFUs*Gq7H+HT^xR1q-#$c?=7+&V^N6H28Di9_ ziyJkVzU$<9lXMAOl!iX9HN6kjasmHDyIH+@kGar&L($OJG?Zw13~K5Je~8r3X>e>$ z9;{DK^Sfkcx}*UJh~<2Xj7O~Q0?=i1)$Aszs$#AZAL%{kYZBtwS5D%+%1{S_=?FAr zdXl~TP*x#LgxliK7NJh+J#6@EfTv6EV%sP7S)=bQ+Cp9$ynFAI2#1G=)f1e&^`iE;gjk853FWa-cu#D1Ca!{Z^0Z&s; z13mGctlh;hztfvVIY7tzP>HbXaqz@Y=&BrV6s-zA5Y}i!l4usr$hNL~H%1b2;vTUH zxfSG|>dH4(M$#GTVv=;;Vi-uN!3u?mO0npM#E_Y1gMR^)=dcT%Z~xo@F`v^}&-{V? zNDtf&&(SN-*TS~|bgFhpD>^QL0k{EcQ#3#r`jnA5d+dC0XXLbEC0mxBN% za}i8e)V0}S@N6Hf57<<8UzhJYmDzN*qW4fj7hdM@d+d!lFO>laQRfn@#4{67=N#<3 z6GXpDKmdhfp6rCB^r2K^UEeSB+-0CHf%b^8^0hwW7|4GaAEqJJMjio1C+WYgJ%2yD zNdaQ%{=?BrQd9$Q^pHN}lM~?#;ZfmYi}*5tkdf6OP1PujQc#e#1u*d?#Tp?ddmDWE zzG-_sel;;fPqRA+0yK^NHZw>hQL7Th?Xk9}*Xj4^F{#hD_uo)_v|A2jcP|7e)vBVD zMFZu<=>>`7VIbe0zA=|gPG~@e+&K+Fn;5}Q(HT)or-`m+#>*bAT>bEH(6dqq%fL?% zM4p(0A!aT~y$iG)$D&{{G%%nq$`Fz}NflpA9oHsTic&StFi*15TC$o|IQL`r(ulYo zHX4wm_`3Sj9XRjA^E$Pf6j^P5$KgoQ+>RT+hByhCLrBKX)cL6R(!tcJSSU$mJ$$hn z*i7G^9N{b?om@%7g-NDxLcl6I^H9|lPhre~ld{_gM1aI@saa~s)^W&GWh*fI-8dY^ zDJD`eox{S8zR0?)xV_+}bWd)oAb3Ozr-|$8wsmIzYfQ+2`(w{Fv1m26s!EAaqqE7{ zA#~{SZtp}k5Pa8GC~ZhzgoK{lJwbg<5h<#5$zmO#;GX zAkPOS0Hh9&@-uiD2pO&5v)+z7?`L#~q3(35mAgItymI09O3@GUc7BWp#A^8^{&Qla z^CAN(@ee^sF|Cl)@M85UZdWjzR7pxFv^)CXFg^v5hS?96Rc=5@-u!i&VgD-)h}#VJS@8&Q};@n)sL7FPfp^OzdWU~AQI3(i%4Ed@FObKAgL*O zB!?>bNsH(&amh=G1aa-AjoI6aip#ha)kpH9I5@113%_9E%^Kv7=eS~z#M)|3ESh~; z0vrdOlemeED3Y`9kiUORt~4`m*Qa4~FA~L9&Ms9SW44U22P-5L3-B|WcY>DCsYEmO za~QVzA#->cUUXFYfCOb9x>m2A%m-X^q_NM95He%ge$5)jY;;7>hxLdDialxat4 zJ{^7iUr8iH7M~CmDOr=K2qjgXNh4uf>g|U5lz8Ndz}Mn_0C%p71C_y&#ZJloRy17Wz9L=OuS z0pVGwAB4wP)dX;PVa}G`tqwFZM86Uf-Bk$lyk_(qzVY342+j;tvlJWEP15VYOjs$b zi6HLaqm?jIqhwDnZ&m-Q66OW-fRpEgd7a!XWr&er*>7XU!uQDHEj&h3(RLW#tk&f$y)W+i3=nsZ#0USZ z4#7Lp>;Y6EtSQ$$Qk`I-15-{}pRNK4olz-*Wjc&x1M@|_83&!z^3Aia6P7-K%D})@ zGsRuu(K$tTp&T;g#62t3zLw6Cn|pm_^nuI@`%Q|@fX9dZhR)UTVf#;OoVaP=-O$Yt z(44H|a5|3#gM@bc7;degM`(H<1h?;;w%0?i-LI9`JWIAcSgkFewi`WY&+}Sljp?My z`dhSQ5I1bkn16tk87}-$qCacKU#*}1ZpQMzwW5FT7gb8ze}w!W%@CHV&BFwZ6iCVH zqxE@Frb?C+7-UNeAQX+JH^=p>SC*s~d&Z}wupdx7uP2C%F9HB9znL*b_d_4=_$hk_ zCM3cV8%NsfrpL_hX_p!HCz9XyH6t=#Ci!IYSV86Z1hOc=T1j%B(l1v&GJSX5y2_v1 zi&moRFIJN;PrA>MvpTMngnL&DNQPXrj0T!Tg=>_>gtyliu+<;XijS8;iC}6(5=_%R z`o+VP&9viYx-Br#h$^agpncyX)DV^gYB zE=o$&AahxG%sajfT|+xev}pb4Z96Vh+HSzM@LsQ0l9K67JXdRjaapJDW_@VaVRUfc zOdCU1PBBKo9;iCQWOj&>b_%P=oP<#*u#_&YOy9Q7;HN&`7bRkFtIr8;O%kNbF@FYQaAM3s`KI14vjdT1XMN*HVqoeiIcMUlX zc5&gC{_??u)@iT|HTY<$9XYNe_sryqb1*IbPpp_lXilFpg$M(8PLEXF?qbh3aybE@ zd7)yB9gQ1#L?&^->T_1z@f&a_bjJKS|#? zBdgnr&##x^4+^p0+3x#yM>n%QF15D*R zhU|?58$2pn9=*u^2=-f|6w}Qq4^46j=JQ)itOM~L{vITgq7_G7h!cnFxARLUw{H^E zk;>|56-;$pcuckZ959}9y;UU1-pgw*a<$1)I9mz5W+-TELkG3#JnaE41?Iv2!?9AB zTY^TgI@dU|#)RP_hxYyjYq+Ctk%`SQlhuz%rzi}_RCg3k>sa2pGIunMEp&2Y zEVsgBQ6_&1z2Ck4EDA7l4E%NG_&dY(KZP#qq;F|v@b77(ND-jg=0oD17-*yq&)or@ zMX7BplPxDO_eu&;=i`%W%*7SJG{|J?V=>zKN4KppJpKIq2SnK4BxwYfT7);g+U)X} zZj0G`7@3jD`8s$z7vdbeWNVm~$KA=%_nw#0UbfzX{vv-AtbelFE1JIM*^p-1hdYrGT6rQa{-+N*42-E*wi7a>pJY$f?hd}+RpfM&w|q|W`(EB3Vn zB-0oz^VMMKmmGMq2qnmIVdvX6J1kjHxx~7yFtfpB-fU z&LhVpHN~;5t6#JVZjqpux}o7W@hjimQ?9W7?$gOFLgrmCEc-s$7EBKUhyY>jXTMYh z2z)&VgdBuPo7sRc#1A^ET{w|vmSHJPe^>*A@B0+2`x}~1gn^hFL_!a{(V-5a;cPMM z1VF80Q(D$nVc>UGa0vu2zs{>EvGB(;AaG(Lm`n@62+eS~Mc?)zlpx!NNPw8q~)-qDb7 zZ4XeAj%c2Jp#-yF;&pPLDsobR%1hno2sp&9v|Ps9r!kDHr@K?Qa|yj;4czJ@^$|AB zSOUHVWHORTz4|fCts`ejsKAM))cqV1cO^=p)9J^m5?7_#-$iY)=B4R4%Q|Rt?|A## zuzqzbr)h4>)!?xaA@}6Ea>=2}9~;k;9bun_kldPsuhSRg*cf^I9k~Z^m;43}{)@<5 z3{a^gf34KNyPeB8ni~CC2L5fy_^+)XO3~^M9nqU*A;<|zr(ppJ4jCosgu4kLDV)fu z-Yz%>O4AJ483tt{XRoI=Eif&W{Bd}vwdthN@J4z$s6=7%v|=FVcd{J>0bs~K&ysM#1xeVArF%u}-3U54K7 zn+-NvPOMuBzs3NSo~=b=)&@;Tv8SDtXi?KgW{On5ngl4i^L@ZA23&2> z37%D`Rrn$7j|^L1c2Ejl5QqfP3fh6cR}yMth#bC?7fw=h1vdQq8)DOmf-9XZ`}neJ z`p#t?6v*DC;5yLV>+zbudWJD+qyDU+WECfu#~QOCl&)8WIgxRO)V=(u_fYBGt8x;p zowbMS>^)N@1C$E$y5lLT;e)Qc2yL+;o2`@xYO#?h_-N}?5HLUbCivJ%FSLtETPtM& zB0TCFz{pJyg3y&f59uD^YNsxco@;N99F>+R(!m8Q0)cDePLIDIBwH*|0{3S$GU31u z@ra<#s>K5-2XjPg+?78R!IfYyhg-&=5MEdLn}6Y3;3v5BA<~CIz1I(0m0g+m>x!LA zJLG~fis5+V!IwY=ZE~Z^$l%GR4O~IbD|<^Omass$uhAV-^|yzE%IJoBs=3Ui9CA z(kU?QNoOFNin6++14}SxHxStVWSy$@pOa|A{>b8v8#iNea(cdu>PF$mieAw}SE)81R?o?^N(Ju{xHvd3E?Nb& zsA#-~Y}hVqfrTk|kQ%k)5ZK7jE{;lZB;_|>FIesm{;aSLvv6OWHa+L8Vaxzr=U=?T zuH}GA`stk5*Li~Y-%;Zk+b-3=p_F*erwnkuc}2Cjhq{EYu(bFvo?b=TDK0i|xOCP} z!Bkkz_OZYA=JB&3Phf($ZQ&7A6MpwrsEejr<~TwSKgcv|Tf>1#-zUL`UDsp$X z^@;Yo`7JbOvL{4vjQa~T+{APibH6Q-;Dq+?)uQo|7TW-q!WeC1O3Ln+`|uT%5@ z_LqSc<*BorMakIX>ZN@SIfoU!7@S0w_VI z4EdsCASFQ?Cg9!nlJ19xFxu6&f-Y@gY{DX^HBP?Wijorr7lHFQCw`?MVMbjaFWik zH8@YAe1>f}ET||xJt|$g4fpCB`+{88{(>FnFbHXmI00jLUU`Mg9N4kd4PURno%;eI zfvN}5(h%U*4F{bUn#Wh{q?_Jv zZ*QQ!!KBc6lFli5uA7aLKMLK8`tg+75?UTDgXwAA^_IUoh3GYAEn{yov}Pbryl&XC zlqNS>C^cE)sttPx)^L8)Ts%)Mwzlk9V4)tUJ~;&LmZ;P+NNrDb0!2^s!T$}}g5@xC zP{`^<-#N97ef!vYy7lvZs%m>u+-8`qvO@Tny2k3(VErfdeDidUaC29>N7M7~#sML0 zjmZ0QW1RG8w@KniQE-V+QM4pH2{eOLYLHd{*}@<8>DUfDXT}g1(uCpnjwzmOr?!Nj z?9=8A##`};$H3LpdLitJ8|<3k#dDm`6x=hK3}cYjyQ&JTV?}v8gN2uM$6ASy3w3b* zwmheM(>P`J&be>+Z=T@Wcl5ZWjL)3uPk08J-SkMZ>It+j3HW-NBH-k4TS&(8!*p}~ zl28sBscCfasfflr{%8#SWblK+j-V0nngF*-V!Z`$gi&E|ZMdWF13Qcz{c*)a(mox) z4|&Hegc!k{AR@O&t0Rd;WZ&arC}1`e>`PRYQKa*{Kst}aU^59VecxK4f~RkC!(RPo zVB|M0A?Cpvv}N+E__oQ*NN`x{yyt|CxrFf5M7#xl2OoTkB-4rGlItd16R0m_s$1(_ zgK&673$~p&kBCF{5*#O`av2Y3oh_(z8c(6$O+xK5nxh^Rhp9xe7dV1;30fX)i6uM4 za6M?=`$x6RqnQf*Co+2Qub=SWPnfcL4h}9h_J;qLo?NB8DgTGV83+R;O#S=oTw=3d zA&45wN}<$xAX8a@*?HiXpu{DjuYpdoAoW6q`~#E^Fs}Yvb7{Jaza%BB?c+km9b>35 zH&iLG%Of@$I<{MQkFm@ijxKS1fY1V#!<@gu6F1}Gm2VuE?>C!eY+-**X?SclPJ8LC zRHpjaYkk3*$jBgR=&I~G+Q7ieEUB3O(AweFicrRmLVd3@Kv?vNGAm*eUC81v-MJdetv-1OdP=-wSlN#x!!yogkpO5K$ImI^#nEa}A4+jC?;@aY zrSg(Kz=aMjvaE#{324k?vSLbT9WgS)WTr*+*Jw3p0FGI3--G+2?-65y!;di_4nj$X zYC{XnZdu9Z&O#s&4Myz^(M?GfX~GJ`EltMXJkB29bM%&&p^8nc6&$j%6}HjsI-JV@ zv>X7zSvBkT`CeA!A$C=H}wG1+7`msMp5!HKoW zG0waw;TBt;yRw%1TZ(b`y)TC~k8a#_CZlE1jU1&enjfU$Hxc}oAWLk!**6fz{l?rM z2r;z5RyqbMAd)z^Gsj?Zz`S1)kH=0qp(JvC!&(Jn9qrG%pvS*2f1aPn_$V1_4mqJ` zJxhwv@}$g;2qRf(3K=@?21h>K21Qb83f&e(T6+=~0JFBaMMT)qT#duUCEI}^Y8tja zCr4bj#|k6^SQcD6`r`d1sY!H!>=4UzgnDSOZO?uYImBceiZ`MH(DMk2)+BT@!qWX@ zC`3fJ1wv)sd-`(uJtZTWTzR}D5I;=Nh+4#bl$fA$;*_mC`^&HHnWLoCf$VH!4C5;G z8VLp3b*K%rs_>G}DF!x16qvhXkeTaZinjZ3rC+v4i9?ZyxqpT?PKr^Ui6Y)t&urxC zTNS2MOu7~ZMhOmvqQ}hLA&WTEmn$!apoL-e9{%3DG{oIum%+R)9WI@ovsrLNR)=k3 z6=>?$a>PpT-qogvB1_9g$pK>+N}KN)cS5#;o$ za`4Ci!@4!3QYCmdcxu@qf8ShF^q#%4BVV7-@5;r z^wZ;G_NJHfll9B~@iFZeebrxiVtfWn3EG2Qw-k+8UuQgG*zE)g(gdHKg*ohr6oC2`Ikr7c@ zrfL?TX9$E@7``HHSNoO^V1SvF2$=6Duf94Rv6Pi?m~zxP`l6Rd&(8fOi^8`)K&y~^ zx?#(2dN1DsOAk)ieL!(AUUQs;8NYO3ICK|!7S2STCE3gThZ=5*Y9}WY5-LGJ19g(Y zDQ7Ya0=>+Kqk!O+4I6aq-N9hkWjm-YHjnc%Kd$qGED?HnSG^6%0Lz^KFNVXF!1Q;1 z+xJ~rZj>LKODd=u=&2Evz#Bb^)*o@{^f5UDd`(LqdUx4)yNl|T(GpJm-*4Sf&Xhg` zn4ybPwr^I=sN5Zs#QLxeO42-dpt{Zd@XWaCJvG9XNVi@ZoL-n%c@3xb*o;Zb9FAv__t z=q$}-MQ)P>xxQE!6H0AoL=rYpk|^S-M{9RLTFg!k3W3+QgM|xlg4F58P=r?JRyAKR z_b5TSC~$Gob!?&yxOHF21%9iP`!&iNF^EFrHTB-2GlW(dLc4-67bhuFZ7vd>O0U8k zWGb!xV+Cf`N2J|y#MY_u*XM~&_T3Lig%`vjE7%ng%97biPXYUNPHX_TKftY2Y@U#=v&!B%M-lGb?0d@fHVf|O!RI6 zLcZ9#vD$oe>jdTG9pOe;VcL)iyThAdFtpEznm3gI`Oz7L0|P?8+R=#B{5{b^Tt=a6 z0UGuUD|UoftXVRH!@;6$pMy=`q%nG%6y;I6*-CK&vp;0lp=holLk{&psoh?{kh0em z2SWP9&x>qHh^)h(ojJ$S&gH$A&=V4&t-mYlE>N(}3yj>mr=aH@^oI{TDNuZ_?eYH? zY3~?ZY1?!SPcoBCY}>YN+qP|cV(i$qZQHhO+nJf<%Ut*U=&gF^d8@wKyY{*Nod1sQ zqgVG@t81zm;_Rqc4QbXZEIylMpk;VT)4$>x%Ak+$xQ4yEM4-P@Di%U>6<#_Kc&9MR z993kP5^-1e+{Me7WF5Ae7ellf*SZrXGRm}|IOTMC8o}#tQ&(yXv7;XwGmV-h+4GA; z094Se8P<%QMotp!<%fthCMVFN47CKxS(qFT-sKuDnnnUN z3GnUZgkp5a+wUBR20rSiz*Rl8gb9O{7V<=bpgtXd^^sKrO9!3xZNLmmS^(*N5#WxJ z!rV6HW<4czt{6GHS^ni{iZemrAe(MEIp3dy&{0h!_^VT%@T>ITV3CFBE9KS*^|Qbj zS3@n`sB&4ZOwd{}jAu;4wlMJHcrF=U7cwq@CppM;1oQJy>GNTIh4&Z-2+;`jJj9Ci zG@etep=g2y`h^Q%dTSLSSZ1zmdMe;)XIt_<2y9T-IQrgT8ldm;&&}3?o5b$T;LYLB zC_~=DQxJ3C9ZI@Gmoe8*G&V%04d6#n%n@lHrMb2T6z^DW^FmE|zh+Vh{0L^j2nw!w z2MN=L@`4DZ69E<|b_UDi#49PhaiN1->nn%ewbgea9LbO0-2S0pEDX0zN1HpaL;EMZ z^f~(t-#@Eyt-s3e|L!65U*Yv%gTADHhz7$Snm8;}3cFQqh8=dr8nt@7I z>&I6zO{g)K)>cJSUtB=s--;5Hq)0bzOT%t_6o^W-aZogLUyfK)0iA3u8;^oZh7CJC zWG<3lvkWO>UuKc=uFx}LoIrtVwBoL{LYA_YRK#W-M<_FVA{IF=dK*%u4zT@cVoYRi zp(3I^g|MiTDv?SvKP}dzYc6VR6xB&aR}J4xDfoVRC3+6^9hcZN+EIe7_%P!evsaS2 z$W{)^OQviFaDAoxrpbjC&V7>w2PxN;(o>3yYO1!kKRQMw^!QZ9%}LpXy}y+MwNDLW zQ!JyFVJ2*c<*Opmjz_PTjRvO4!kr9*ManF)vLm&pC7Z;u>4&E3qHsf~8M3|bfHM5D zPzU)QHN0&^3(Y?~!WR5IX(1({_D~pjR^g326d4tIA3|UagUxtS8zgnjX!YM^qh7=+ zHiy+gG=1fg#REwS%DG%t$EErK=kyLLZvilH=n={wcL!k-W-CsfIA4oB0wdj&Z4Mo; zS|2lyRCq2-iy<=IrYlJ+E{%(JHpPlN?AFL}y#oMBXPPJIkZKhiH*@TSyq!5Cx!Nc( zTps?57u*e(z;mdICL?ZIEAWBQv3}o=x%~Iv8E66q&P!tP^Hhc~OZGK70iYYnpLdbff2SuP!85`Wr3br?IFhCxP0++1IdCT zVhNX&G+j1Az_O>V(=CbmW~7q1-#SELUy8)X3L;)o4x$^{!X+PI#U#Ls5I&$UP;Ypr zh`tsi2OoQ3$0PDW zgR?BTh46NfJ8@Fa4IqW+6prqTc!YQ?e~^4QFmbo{F;0GA<}j<>ZbTW2+ZGY*a6yea zzPhjtsM_I=_-!r5wQ>Ez?>D{U`zJ#gqojI>eir8eP=BL5v;4Jz`=1%=vnKyPYkrmE8vIT1)}+4v`HRoRoRym&zC$EO|miO_Q{)M&6w3 zU%)1BLZ;#RXQ^Ht2f3fZPi=KCkkPO6rKTOvTb;*Q-0hykKd*h?Jz(&HB)%WOIEk4p z8mLcCiHDj+i?~~Ln{zgKYW4+H)SDn#m-~vOJe5&nJ$Jb!HJUZxuIEwZcC+t@@XBK* z2`3DlmD!oinV?t2%*exCsm+!s5sffmKWAt&jdLI`+eyvd$YM}-`C6E(r`W6|!W}05 z6iOghT5}$MQb>f&CUmVj%iV%o?X;>uAI;lEit`y6|Cwb~O9mlAuT7(*dLnj2s#wwH zG8${=fx7@EL;s}B4sn4bQtmRlhgPf58ly#_jD4SKuC$RShJj3)D0NJth(1iEKBOQ& z0WTUBffBU|?bHZ9;6yG@%R!6~H6B*1yo;;=2^wi?as?rpQ0mJIX}NSHp$i^_1K~-I z)P&271E5!>81=i-h7}Fj>=X+#KM_$D7e(`+!mEeDhFo*|((#qPGBvzk7~3p-^SmO&3V5S4 zP3M;onW9N9ee(FPzT-Ue_%K8oN(eQ5rFiB@#s69Xl?|r}#ZK@B#cG za8WPIM>b0L5HZ#f_BuoEb9Ydn6V0#ZGv>pOLiCSbk$2lc1$%VdvXeehinrU^a7i=e z*(eqkcw`D5`PoQWWi9>rD1GGO+thFwuc>iNE1Oceo5Jws7!$@Z69DUwd(vq^H}dm} z(W+PB4n+}?R{vL!uPI77`u>wl>Fgl%IzusvIrmgiw#Yp@#_9_mS6lN#pBv{k z6icBI=yK<3w^GqrYy3H;0au5q!CB$s>SfJC9NqGK;it>ZK1`O)6+Z)yQ5u4g`Tm}t!OW7vU^d1)+5^2ad(QkxsOzRTB6X*5fJU86#5NKJR@mzXqb{B z-W_6-oQYcRDWL^^{nK=RX8=FN`OH9~e{By?{51n93aZE{7~3lt|HuBc1Z`PF{!a^- z+@PRBjUNzdNaT05nZiqNKw?0>eIVlbYEa^>nrn^ZKeR7th~ANWel#<~OIR5k1Vj2J z*iSuurLdac%1Euh&v4yh=WO?VfByx77win0jj*YIqA`~4ZYo^h!7@IR&X^%R@8ZO0 zs8sjt`BP*_-4V?wwh%xo8hojgq!9djmBAWFq*6d;y*_GUVi{n=`8~L3-9$=r-3N7@ zj!{Kro0HBZ5TLAwc5g!INe}QOTsP`rW<7-VUT|b5)KrYvfT^-As2U*QP8FesrExT~ z1Rr;TQgphGAEeuzv?g_F62cU|M=KDh%-#(0U<`;74q2f%fW4P_Ux}Ha&K32i%2gHM z>%#_jCH{t96i>Yx#z;11vhdZ$O`K*8K`c3hvOS%;zn=P3#U@OXu9B%<%T_jHghcO> zxIIl?b~2rNU#ILNpQs~;==pPpsWq0&lyYw~nng_g8N)#*bh?A{T1mmVU;Y^mKZ z(_R_jW7g=wDNE=_m<>>VLXP?6v~hX$b9%R@hh&iM*Efm}X5S2=#)c<2LAPEHO&cnwRWkD<}W z7pF)DD>a5H{>?Kc;pP~;OtBbI3&?HI=#vnJ_?N^8XNS8y=@Suv{1p-WFQ?ty)aJi0 zVQW-9bwyl8{s0%pacAlcTp=b1L__fBYLe3q6|`DI3cz=;s$a3UZYv028u@xR5-S4Q zR;W2gd>U6^edd&p&kvrWM3t1$BA#QunM8y8GxzvGlJ{Yntn+zNY^9DU{Yi=E*!8;o z-1B+snQHUpne!URY*^R(B?a7riYNm&A+qb<}#cFYQAQq$R@de0rnXS2Y`j< zR_6`W{rNQn`iOy~fjC|=pohqnmO3G!x6IQZNE0_p;;AT}6Pa`34?80tXEPBJPbnJc zka9gIXTh1zCw(GTjG`{Q6OAt_OjjA;N-F3SQ3Q90O#y?Im8xfQ0HE7*TVKiy#FO`9 zV19CFf0qJC0Q+r?$9A~(&=b^SooU1_{<-srZIG_9de?DkRG0MmYXez9>9_Gr21V49 zfVg6*@~@)N=knuWoMr>k+=E44VhB*?w?7IdVJyP{`-&8j{V7RTvPBPBfjlzoE2DG~ zN$Js+@fvKoske4Su`~M`2CfuY`t4bY^4@(2@JpKv7!3-+=+{$dVQ9&v@@7NKmQ)+o z1B6bYY!T^!Y=-DzcG2Rq3TfCQwr9murnoc>M2fdJvqnRJtSAd}%G{8~hE<#`Znha2 zVez4cd~ge!1qp=#=|yWv_4M-f6%Z$W?I|LJ{7QLT_O0KGk+4Mo`+f$JR{zCHP;(`x z*#S>W^w}<)imKwPp+~jbFUn^#(yoOGR)Wx&5VeJ69`aw~(C-780bbzvMaK^xUJh6}56j?~ew%(zkUOL_@okuhyG z<+Xl3BEV>x#Z#VMH>J5Cb96Ko37Yo=8BglhWW(03N;4a-Io7wjFnNM%l!0n+=;TTS z$Qu&iR57_ymfcRRKTs_W1#M{*>%7poV5@fpw%a)3M(nlEIAdN(j&HiBZ#8Fad@Qja z8u^r~KqpJRFev}pUZ6}*b{vmkqjR2eG^% z2Z@9_M{7g7>MKUJ>Z1VBL?dcJ=K2Ebr~^X5lfPrbRl1Y^LN(3=Qf{x*Ya)ca5t8E1 znNz=qCaBf>8%@y;7D^{et_EfQB37ve9uZ2Gz5s0w3Z=imA2g$4n667J8a~711*`uU zy{qR&IGC26Yw`v;xSGK$a`zl+dSoT!dTb@ymcc7z*Aq&S0jHnU=%FqTm3GVxYun_7 zr=ODHO>H*%*cht^5{ft0KBhI`r4%6Omb7ci0JHy{A^0W^K#Iom1DF1nR?z`1!z2Ujfge3$Vb}X@b4HB6 z7+d08cPMCeCOJ+?CHJu36E@tzLC5a4|F)LdJ7S4-MPUUslk}a)j~PZ@Yg=Z_?0kiN zZa@sCNkBZZMGEZp+1hE6D{1vzva;NgS{-zwiR+!`9R&wfO_I@|xRwgfFzFcPzb8vLSPYC2ODDO=t1$hBA z;_MN*bDOH{EArxT#Mx2!*=e2!Y82;Ly_0c^1MPHfvW#zIbz*ePFw{IGOs7~v{4}A| z!6JEuWoG|O$@*j;u#eyw6^8hekoeP&ONT8Nc1?%dnwp8hSnnO9bP|q`{`^W1t!CDX zeCf7KXkH2vgq5jh!J>70km^;{!+nF>w$2lj2*+lcS!AQju3g?gpcVusDjfRrf<;02 z8>s!ehmqocUb6qgR#w^a9}l!WV#0(QsZ&BC5~j#lps)Dm=>_D|MKaoAmJ-0`=M{&8 zp`pmJLTT?v$BMqdncya5jMQFZQa(z>uEwie0O>RI?RE~1=Z)d20@siCM^-=j75E0x z8TcQ$IrJva z)k^U+zLVzVTmQOXLXZsxdBr9$_Vtq6f3C|i?AJq*@v+g9&+sH^-Bc2tFKg=YI#(|j zeNu|VbTn~kX2*e6`K0(gswS5iy$et2hP^H~g)*nyvyZxQ2}?v#@^NdtVN|v>D{IF< zZ6sxVtfXVy?1PEu|vnJ8mx8Hj+|gR!3u)yvAKd4fEkeX&z4RrEWHLW zN7VB5z$oMyoIFE>HBm2jT*C2ox1~ijp(Qc`#R1v|3jfQ!V_!Vq=~LRo{e+NUBoj=$ zZN9GMmBDHeukW&vFE}UC_I?8}D(_s#Wjlsm(kj6&amhg}n6@=_*l?$%gH9z@Gl@!F z0?pZ=aiuT#Ly%?>xOyF-8!WHs>&oCBbchr}vuH#otHYIt;Sw`U)luzgqZvhPsjoj~ z8v=$!h#kHw7{9_Hf=obc$+DReS1p_lV$c`0~@sl%`u^Ik) zf&G(V9DuQ0zI}pLiT@uiY5!!H|E47TH(mJ8(2VcXU)Q`h0S=_KEL5oqKeRTSH5?+L zOqmKSit&)zdKryGI)%viA^!&3tAtTP`QJmcENjBUB>_%u&!>mx<6o}NM4!0z1spFp z5iAWPF!8n-xt(NZ17M#1ZV1#*K5h_fBb<4`G5#t)A61nWJh`Eiwc7PMWpw3~;O1=@ zu<8y3AMgq;`OF10c~C^QFebWw@60*;EtE;}9OO=b(IU?td=qsi|Hqd{qwETdiM}jKs6ncU*OPr@E6dkGqpDd(RR7sV!OS1>ek$5{uI4L+=B{*wg4&h2UoZoRf z492U;uB8@QFpAMmZ9ri6u5sAULOpoxqxYwBbK>`BS1QO7hJSg4H8{asUVTF1 z_rFrs{vRN*!+-6x9aK5}wAw)WfX0Wy7C9BrJT=I*L`yb=uxxN| zGbwRFbPh!lJZ8UbDRX9`z$P*haz)5$C6u_BlxmYH9I0_4w$4p#S#1oVM%YlLIeFbe zAxol!e66au(opfhMw4HS0izk57Di35FEqAJiE!v!=)hz7enY&OtH}XDggR1XcuKF> zNSNK$O+`8;bgfbNo`Suh#aTnD(e5`)Ql@EL*-S;|Ncn3E+Ol{Hx?Bv6nM$)`f1)@s zI%#Pq(nh9cDA~aj?Fhd{NIX(@jv$a(JYxehZgXyUQ*j_nYw5K)#NHbIthloMf+0P{ zr1V5T62?*x(TN85^r%vD%3gnqF*8^f*r#U2`iT~fI6Xn6QKIO`t(8!H`bbgho1p{6 zty5@pqvZJsp76^ks3K0xlRPO7!>f?{V?=pcgNV>df~K$)8iSBf zQ20m!m+%#0gXU0ff~W8mQUbg@@jwDS)$O{ki^O`m=t{Hj2o9p?M9|Rq8eDLNQNcSu zxp#E5N#mh^6m z;bMFod-c)>gZ3}fP2}le2Km!HFys%>)s5%A?&6P@H{ss&V519BF%jrKhO%1#fJG+l zwgSNHCKEgmhKtO=(oeb%F7vA-;TDa6Axo$l@aU!^LP_fLFuLM5&rmiqy~>yYW#=Fh z9GYxYA(#-aFQapG08Cn4#Sg0_Bf=JDk8m7l&oCB7vik)J{5w7VE*t^^j3EFqK3*JL zl+E*-I5>6-QEq&_b_>-m+2`$@WQV0nl;KCbOQe9%W*-~RO5~88WCvlpv}1mfF+_7lEQ8KB2mM%dO_YZQ7dcBs@l3KquC8x z2j3^E1xQIChq-{uuV6!T8mlbP^Q2YqXBGRx(F`JS7iEO))qx#dTK}#Y%5@d$(QOw) zwCm9=%H`3m4vOuEKCiJ)4(_vijE_%;NWw6BUZ8(7d zs%`!fiWp2elc}Ac`RGp3Tw1SlVHZPydf`@fFLPlRML=ryr5V@IxeWl)2Jk~P%pNtH z2HFrZf*{ke{Rz=aiO_C5@?q4x@KDu@bO(o{MK`21qT2d{=AL@c{^@t+v%M7zXTp*v z+fjSOwA%r}%7t}>@;4eQ=NJDw$FYc~X1CsSNP2Bt#^%$DK!LvPc5~Z4NSlDA*)iDl z>R!ci_~aN zi{@=_$PH)gSh=^qa;j5R*`i@zJ^Hn6=f)I${o0POWJJ7qri^b3%d?%AEn#em{K^k9 z0>*cR8rUOfGmvinsg6MAo18s9&E0>){tbT-{k5g9WN!WMjRTR2|FU;f0mDo}CW3>n ztW(ex_(DiMDB+I+M4X6+ya4*vWR%>Ja#6Gj?eA^>#`qv;$}yknQ^;t&$Hds^a~kqq zA~U_Z$rm_~mYU&t?U?O2$0J}zN^#}3-)m@2-;C{5!1@mXggdbC3kJ#l=q;X4v?i}ZqT8umISNcDwFdxOo--!{%#HpzyyTZMVC ztXPH-o!I41(lUt?qD7A@N>t5ogLH||%=>DC*f@Ff-)$h7#M+A3lJ-VVHga_-3eE5D zUpuTLz#`aa@?;0V;eQjzgtHNUQX`6mGvMj*1mNveKGoH(pW13WpIrBV=WoLx4?@8x zFi=dnoz=NI;@?6DM}uE(#p+H6^;5Pz+2+2;vh;@GmVrBn#*r>A`oI}l=yGfP^tqZ8 zhPZRl4inl6AK{sA0+GS#E5utSOrXjUw)#mCwuZm5WJ{n8Bc%VdS|axHGX_VL%IZP2 zQUX_vNwQ0HkAG1Rz5u9H1 z5#VpnmnJU}Hh|_EC+O_7Yv0K3lz9yiH?#nH%|NDZD2cN2lapQ?u__6YU>a3wZW%a! zaW?2ad)dBr@#6WhXh>dY4kkKDik0-pDAUKnfKZT8MMWjtIwS9&LOA628zYU=2?D1w z+{IV^uB0|VkJj1Q6~e;}-F>{-N0f~>3Ji)ivk+LJ;@|EV7gER=3_q#+T~ zuMP}m&X~7&Z>$9;lv3RJZ6AFLG?$3eGs=TXX;WbkUB+Zxu!HD(4&J4?C~;!cjAJw0 zwHqMaJ{Uy2yI_?Wa$)bFlasTfoD%XwQ&r88$+gPo9Fa-ats)Ao=gXLGKK0kFo$Ydi zhuq4dVvx+UW#VI9P5}=BxvLO{J=*NEaB)6)Ho69Wh8`R@{}|&_+MOtie4@7Pzp@=^ z|JS^v=%jCL_qlsQP(kWHn2z#)HhT_#Bm)^2a)kJ^Ap;4w!H_Ga?7*c2e2)``hC{%S zbj2U69J~}*u-!|?1wzypLdd7(ddUSGH(`o2A&A90UZ1{Z&foKPUVbV)eZPniPQ%T{ zk9TRCo@6*{iB7~?B1afqN`%?iIL7Ld(>;tpSA%^nkfQE|lu@R0nx8aorl49r`tfYy z7_v?vTFd5cDU(_aQQpyh)VWV1I9G0!p1zf3>Dy3QMrJ=>)@IJw{KnCFu%MbU6*opr+u%EzDL&aM?5ihY z`P9EK09a)jc`CaPdkYO0K@Lv2DTrxCF1`RW&89s0Tm{=wwA1FF;*SZj2bCWr`Iu#l z28plfEYwm(ODf3l?y1Y;K`w_=cPp9Oi++PB@)*&^mM)_bhw2yUdbunWykwP?2CwqS zg;4@YiN$bW-dSUKscACm&^)=LW=cEfNfLnX8MI)cey=*g#x+?7|gumBZAJ(RQPjCT|`mPoyUnuP_@yI+sH6c5uZqRDhm*R2uFh zRnih*O3`bM>`E_=tFc8n7g9uXw+WG4i9|27%kzfcG%Jk#%4rd<0`h=4Kv>6q_vQsG z7l~m4Simpp0_KsHUP^61;y)Mb5sHf89>U5kCG0qP@lT1hc)q5_B0ww<6;IHSWhKj; z<ju*cX2$QHvwD-O-XtJTLcYzlt;>auej3&vG(JZPTijy=RG#oPxWQj&bXD+TAH z9Kr!^Q59>x&>}n!-WTs|{08p9YT>3MHfoBkud!Erl4KLSf%srsVBvsMAvy z0XlW}TJw@7*-2uukHnLJ#6{G5uP6yM;ozn_t>y26qV5uD-C9Rcw@>@x`=hD684O(v zL2)dWNN#IOkhBOUE>M99|5eM_SDDcU0HT(&7GXn1sEQl5uoVdj^*WU01y@}Esa44$N*(b3HgVLY-MYp4` z2x1wKVYt_FUXUL%!q2*@<7dR3$4#-IjOFNL@vge_O$j`jQWKoLv9y(D2u#WG81`bj zi+vQ1zeCeYWiPx`WR2fekha)K49+s9u=^Mwew5jr)Z^tAe{64nzd_LCDffcVfdIWA zDfL$K4H1JN&`_52AluK9=pK)Tu`^_V#l_dX z>n|a=JO@RRP7N3ZTx*xp86Fxap|XO zf=Tda-iC(BVvJTq2s*o-`x7DOu#{x0dKuA_`q$AmhgODwh|lDe%0|pOD}03Apq0;1 z16dbrOIG>abT)@ZP;jhjpsTArv>xwHA~QN5^o>8-qC}2#hQ*g;Etg>g?loJ|?_irD zj;=Hp2C<%hr?-e=S6u(z;J^2>f_&CS{`HSu<%x?TVd*n+?*1A%|BtuCf1lHT`hWhp zC49yrf)w20xA_l@`-^{H(VPh5Qi!rmdIun1}B-v(jd z$@W{VS)267lZcNu9J7x%Jf|FOm)~E1esbc)JC0^99VT>y-vN$-&Jz1XmCvQ-+fTPv}u8HeHt zbGkp-wf7gLjgIG%xn-N&hYE?kiT%#huRjr_oXbnk4KpFJt7Vorhs{qJCdyRJdf-@E z<3%oQp)K_ES*;2;(zK=S+_x#qSI(zUHhaa8%m=Bp)f~O&M_DeFTuW8VZfC051G9GS zvff2ut;97t^>~<>ZeVb=XfQ&XsEo61>ba;_4=GqaSQ0gg%!(*dGG*D)H6BF=sJt9F zC6>LF7pHN+mf%QxVG>O3$Azi@!r6l9;Z1ju?Xh^^CwEfJ5oUqJg&==XbxcU{32|1@ zJ7%Vmo7m7f#;2aTxY6}bV4IkvrW%^)@ZnxD)RX1lLQZU;+WnY>-udAd(K0+C2o#`( zKo=O}r%wfm)=T&U1#Ir8o4hP}pc@&qk}IO6pNMpY*Sz9wQE`@(EOxBz*UonP^b5-H zDugu&A0-MsZHhczd?dJOLaNvMP>JOGQ1N|tp#n#0_X;nNiNq3n&JV)K^wDnC``?qE zZgtVjW45V}&x$vYg4y;0chA07dr}wZ)Ru&Vx-;gmv?}pBGfgZEa*(^Pzx*B`v!>1BefsJte~YNXX9YGy7lU+c9J)+$z2)^Fb5@6Njaw#m;cNJV zAe_))QTB2TeS8&_s1e(i4cSdZ@Pa{P`32CXy_+R?Ljd7|`5A_~)lX4=$jYIH*4USV zJybzw5CRX8s*A5Xpx39%*SGflU(6aeEk7WQPbtgzUt98jmzn+Nh4-(p{hyP+Pq!Bl zxc7uWFr&n8edVw@__UfXa`Q>SEC~n*UxPbpum#<83(7^MsL)?Wda~o*k?9oUXC|C> zl3j{?l|r~jqXH1g!%Q1IJ%3(q`K&#jc7J@lVfLW;sLrHHB_cWL+G~kw5y!7K0WaQZ z^=k7|rh_+~a6&XNpejyUn@h2BgEKhTNYgFvNLs}Uxi;3$ zcuifHn0gLIm7c(7d4WTADcT3tOK_f1JXdjp99B{gDb zrOoL;qPc>^cu)8L!q^nPxnDVH^PGP9o(AGWoE`&ss20E=A%gJj6I4uw)V)$3qn2z%x+#(wf@-) z@b>A6U*0|?;PhnRdF~hgFl!4@FR!?x*08>mn7wegZefeZH_$3^dh$VM@}h#2B!co? zE*rBG*g$%%b&aGMc^61y&~4Zp>~V>t3C(G>r&}Q%GsJy zc5ed~nz&sU#!O_qGtz_b%o@&OGCxQ}evmZ%AW8c{vR9z20gvxNRi_hkMKl@dyumo< zj0AY_q@rBu3E;R2K3|;>1yt;|#IE-2bA(rJF5u3HL09fJ#Ja}M^>Ti}B(#n3U} z(#eUwQy)an&x3#*+XZgz*+vQsl|ltMt-XZub66q{#oYo0T;JGXPj8|1;&VrC;QIjj6Q0(?5#{|AhxDl`I|Cg^;+zH^<~bZ0>XT{79@d*6S4YCES_3Tf>0nJ1~mL zVXCVNg_UCu@y5}|cu!q@_)>CRK&NLuXAd{|Xjfz5@p9w)FaXofEl1qX7oD!E@8{RN z@84pE1HMIxhZZsxeqklX>b7Wa^40E3jcf16TF=nws$aFTyJqnXaLusW~-Qup%b4s5aJuP zewkoy`If3eSuxc9%i_{%g!7-KKt3VTg|@Y)ag|T?9MGw8c`(IjS$qOOx%g zHaID)kTxxNF>FcQwR~-JT9cuJtU%F~x<})dQ=}-UH z9QjK#s@&^!+9I87PKn8Rj~jFkU9wUF9r_;v;>5q(N=zo}Et_nw;o@)3H*rSU$oCTf z^yvExBt}wWZh}MR=(b~Sl0)kZMMfQj_>D|T)5pXo@MEECWCmQB>Tk=0L@s+^>-E`E z-4o&0G?_HUpa(0SCiemy334qKraH8*SiY`C_7!CzXGPGpEjE{P-c>vTOzp8KQ|Y)a9`+ zS$%@=+Rdl){NWiH5G{vqC^JY#Q|5;HX|)tu$_Au8cI9~qCHua~5GQrwVjdB<{&{Ho_zOG`JU=`>yd(h;d@_htg7yV6wv-Fd)wML9 zn-mSMg}1b|xr$;XoO-$X4rx1au{KP?VVq|PC0=&-J_JV>rc5sZ3S$DT3L7^DX6qNW z*6%D~#f&cVjR(Jl4QasaHeH@&W%gNugvW~gzjeGt&%G{p;_X6IiG%I8eS`gGVh2Md{*9F!oM!`^APU-sMKDw^0+Top8AljD#17fq#zi0$ACW*SDc#y5Qm4WB ztGI;9iR57}uXH0}9-mG_HZh;5@G8mVbBwNXa7(pOhpC%e)CswR#E|GM`2ymNZVcO| zvjtKa{75zBHrz+3pF`9O-)qzj*lpS!dUWs#HrUs8nVc)}Vw*${w^7Q&IJsVU9{N&=H7Z7Q z`}MQ!`RsH!NFUk6-hF)9dc2Xvav7cd>2D`jOPsG7tUKh44utN_U^CJ(I)fbP4F{Mm zgOU=;#>kGK9awY|$cP|dr8JNk=m`B5kTFL|!kWnxKTJ#7-Ct+)hY}kkl+vAQZj#j5?D2FQZF;Nsepl$;sD0~#+5J;yVNGA~rXTuM( z17vVO@)c|kT%W=ZNa}eH9;pwCpLhb{2<$%an|>~8H2kw6RzzTN;BjC9E~1-=7`>Be zh5xQ$-h1u~yD>cgO{#@X`qW}%KD1b0R+Jn2)@elf7CcAyTYpi@o4?IWuPl8n>IFw{ zx*-*F4N^kd3Y$pV52u?n%VbQorwfc#o8_vQOMC0!is{DkhIR6xXPKI zy5iD^(m}%7rBd?saFZ$a4WmQoZ%sXsOFxYL2TQZ(x@S_6NKDe+{_$S)c0nC;fY(3T zXui)lzG#Ky_4R&*!1Mnm=t<`^Fw>Ze+15&)q(Ra@6MtyZN0yovdjy4}ktkuT(;y3@ zFwA8=Bn6tShJBY;b@(*?ij?Vk3PZ0%X0oW1YgNEo)EJk#U#7x9U~yr`TW44RiB6rk zFDg)k*8=2f(?{o?^gy!7-h>-W?mC9=t9!K6-}11wc~Sy zE4-*}bCWkBG!9AM>O_v0t&S&18{whD`iMx=OV~^KNB*;$6sQBv6MWif$*67$)>iZG zj9)_7+i7?yqn25WMyJ7yEw~o z%#z5GJ{|7-+4@mMi@AD)Vaeg@Dz%#JId&dUVbR@tUdjFLbG})fOh{SI+As$ewVR{f zQ{8BlWQx_xN=>mvl-%tTGwEQyId0q=iK+HV>xte>Pmqt9&#=}5HuP!XQw4AV%scqw z;pKmQHfIs6SNCW4$NRDO16SYQo%XGkujXLz3ko=n2fdi5pd5G-IL@b3DpXa83(rlc zW^WL?g28D35B0bf*--rn{$}!ezR) zD3G(_^@u&sG$%Ub7l&~;nV~_3Tvz`G_~sbvi)e$G=Yc~-*mONyI zROD{0)N4qiGds{z6-)Gd*gM533N^zInE8Q}Qf(VDegcHW3=m!$yld3r-=ZD9{U-=G zb#44=K7+vJulk_BP?!G{8h?V|Qw}F>?C7X(`X8FO%!KJbnz-Tad5|QU@!RjlihsY^_6^5 zrHkAhthP^#+s|7QMqTeOcHi&<+M(i-#)4cTbI*NN$-mztX$%qsShdUaWcuY64+LcF ze@`;J_joY!4p{F6{w>+6GpgmTe`M84 zJ4XM)ifFpI$z842%<*J)?hHJi)zr%NzO{9vQ!mlB(r&w1V#74W?CX;x6t>SRi1{$E zD$>IOrEOBc9n9pw*XKaZ8!k&#k!C;%l(0xNl=2XJ@aV z>n4f@Z<$?h!BScH{!zWZRWW^Tsb#6DX^pRyi%O4mp1|tN8Zyd5MpK9WrJBj0gM`WN zD`QP(&od{S_x?GP=18Kt4@&;U@{@s_@OwQ9A|a)b7BZ1!B_}Y#-8wpPWNkEf6RPlU zRpg3T$M_f> zk)Y*}@T*UlH)bNAQ+yzAg~Kqd={RlyziQsm!;(*yc=2niefclo!u);w(wR55On>fj zc=*t5sIdxhgI~Ipc!$3G%lB9ABLR1=@m<5O@$*p62o69p7pNAz;_sg@dlUn5Qz<66 z!#ZDIxffE)^q&%BXba2EC*s0|cnZ7wosd(b(bSS~h$8b<(U{^47}N(RfUXXn2@0Mj zU$mW}R51|j@AB4V_?Lb6|FNI@x_`^0|9O0!{#tEN{_i>b&+&CM{Z}5(RMGrH=6fgk z0V7p3xHK1G020WMO7yL)QJE}FpiIpM0cyr0T?%G?hfdIxM7wgD=k5E=ps3ENhJaks zVpoIZ>)!Q^tlD#GDiTUe%7bxs=k)87YnS&^>bUO5`_s1`x(ODcZ(3+Gsr!@lKfi9a znW#4{YwK;QtTKTJCB78c-gk8p?hKfXQn(u;S$sO|qOGnvR~u|`5DpKc3=#U zr8H>C);pmH)dwjTd7{&P0gaVBK$=)R7eZolso|Lhh+78vM|q}kT60oa)-jvh0=ASd zeZbU~;3_>ym~dFm=H-Lj(?@VW2+#o8uhY+gv|F7< zJ54@HB`s-LvSp5b&cdiSX)OLf#=bGS5^deGlB!f}JK3>qRBYR}ZB=aBwr!(gTNOL0 z*h%km?tQPj$LK!yjs1I%v489}*Z0je0hVweUUC6(Tpa})PH5aj$l=m6@z&6)h25Bo z`JGB-)gu~Q#^~sAG&p+Xcxp|8bI)C-OzvT&zrZ=UF5G>RT2aC`E3wvlzFJ=Kh+iwM zt&m9_oc(C!VeEV?^P+vi`5jJZ`Q3(V@q0^a(UrJLi0Lg+s-uJ@NzI*K7&{TLGXq%i z7sgJv>mM2c*g^mnWYHqpLLO(leBRkMdrA?{Q{X9@=5?-kgoio+(~Q!E2pqN*6Biw8fc(J!~T- z^1Otv>XX^9X835?`dB?7+D1R4(i(8n?O7KZH5$qdlN1^|5mD}a(=f^usfcXA*xjj( zOlSoN4tFpLb&ecWJKXZJEgLuLD~Z6cwPNla8rm>k$T3V!eq&RI?0S+Cz~|jD(Gd9Y zNV|u|*3y=?Yog=tk7;8dl{G1djtlq~MokVCEvjj^JQ z_K@j)4d~mKI;HsT<1ZxW@U>)Nfi}{b+8QvtY1zW^tjopk4DI7Kd_ezUgfEhEHJ%o9 zTlMqgS0vA4&FbG%O8#eCecDM}lBo3CqX`4!GD>m~Vt_Z+VB#b4UH`&;rbd$ZMBGg1 zkH0H@mLn}$QGmmuA&~w1{|}7R|0A$*Hg^1XLTi<>wjz=~iVs?z@`k|pnCuOa^QQ7_ z{es-MErWt0@LcH=;bGjDs5ctqcx1Zawl$a~yFT zdH?)-8K;ko^`mT~)7we@QqnnbI3_d^nx^PfE(`#*==Ye@T7Cp=Om^!kyXuazET+xn z%%q<%0%QYZmDo(7g<`sB>@1&&WskIb#nRFdo4qU6xja@fSt+P4nj4>ZIbM)POKrL8 zYy-E0ni4UWy*0)#9;9t6VWzQngoM_k&oohz#h{MKCt)#)@fO48buCL(c< z0o;I7p@qMKYl4BI*}u|i8vCF{k4ieo`(7l;>^sICtcwOM6JPzg)_xwYFHW#^r>Ql{ zRg2SJ?x0hS|5UK}aKrK`RuS5-3_z7{n4W|>P985KZ=BOiPU#_tP!CS^)KIZ*GMX}Y zl-KBc#>Q+K!CQ_jrF+f#qq=mkLPB(V0g>7&bo_h;A0+!B`D8nf+2iD;uXE;*yDNcO zv_H-=&J(aP`01(+sX9Z*FH{m};UwM)%kPg27fcDcY?q?CiBz30>JQ!3nS`kXiS!-Q z3uXZ3afLzQD;*v^w-JVO0puQxq7CyNVnB|*zy4Yj+C#HJq<*~qa1<-Ii{d$QushqO z-cppy#O&3E6(GMLAX@WyyAle{#!m(Avaf#O`>KUToCt)QaEGwMCBd00qnfhJERI6O zoSTn-60<)hH`lO#K4(=zl_7Pxd1V`KUqLDD+4%uOa&&JFmW9JFnQ}SzpOvc5a95&A zRNKFKl%{@j1hExn>hT0j3hvB=6YaFxjx@z%kgak`ij9ZBWIw8cLOn zt?jIUO!>cAa#eHJ1tkn00qB#$GSqJ%!q%&6GMIDz=W^ELr9|{JFiKL%wLaw z^t?gkqHe3`!-j+p7pF$?u;TruH?1%+Q^AJa@8cg5vqwnOmt>HlF-*m=P#OwPo~$s( zW0I0&jfV^kXlAnURrOkhz1i4Nf^sDF41Nu zlu%P&^AMGpSEOF_$`Bu4@>|F&V;E3SYVPdSnNm-u6^0#4PRbHm{GQa=$N_hsR!Mnp z>>%PmOp%dXEmm*dC~*TW+C}b0(qb&Q%7f4)DucsNm;gTw2rqqpQk=` z!olno5x?rxvruMK)g|E}mqPQhb@;_NMO#Nbr*+wQ>vYGNhGx#kzcsTsv%*_BgP2j7 zv_k#siCVZt<-KKPC>1E^7!MuTu|zixo9o0enP%{JvI!l1%8_G8da`G2`tgaWjOux? zhKa)_mEcW5R~1RiWL6=v%6dkdGE0YHc_PP+(gq`EM_hTqy~W)Sob6jTzmWj$ zlX3iXqWR#IrIQmAl=~HkEw+kPcz5%4Xu{TNjpMr64zJvNe9u^YhTS`zGh~c>SG<~F=FAD z_|d}*1}^O|v8GoQV+zorg=qb7lUp3$KGcNUSPinZ%Di07{Z)U|V`=ih*nnB0X0fh~ zW4l&EA8y;T?gpRW^7*MK?R?vZDSl%5%EOfCJ$Gww798)vD+W-}?+6veWG13CV8})w zWKfGB6Q=H01gJ2D5|H|j%meyY2o3N|!qk50u~G_c#7H2*8uERnzQZVe{|dwWT@(YyIG0I`i5|lU z0|rVhWDj&{z=(cOFSSn+l$C%=4_O4GlUk1{!Kx1$Mo0foxnC7KsUEftGC5G0j5lxw ziZ=oYa^WV(2QCA3JeaY#0ujLLUB7_oz@-GN!02NK{V5z7JxDDE*mwh?1yASST?e8Ievp)A%4`Uns%tqvk!8~E1^~7` zyNTPuJtgwnNM@~&vK$;240^!5M~lF?_xN?~PF`pB_;XxOJb4P}+MQtG+-6j@+Ob}_ zj~i%tmJ@i7=9G``bLl#qppo$IFhhoY|6&maii(g_fGe2BKML@f|MO(@Uw|#(Y;I*_ z?C>w#F8Z(dLFk_(;|gX}lyeq!MS)QygBqywWZ4Ui5KTY%%qVQ)CEHW2=sWbsz-Qop zlg(nTI~fh9bOXaZvl}|p1vaAyNtuqaJ#RZcfgMDijIYbvJ)a;1VfBGqD^4l`#1DQU zAM3&9E3W3sbZ8_n@!DLqQRQXGt0^_u#v00l(3+`eRT_bbfmy6HnrzVi57^1d=q!-( z%d28^;ux#T@b^OMY?5J3Z{6f8NW~RR3IN@zjGzL4n^ohu85*Xv)agpnlu3c6(xY*J zq)}2KY5!`Yc|<&fX>u~Y=^(uG&LAu1Smjw!JUOdj2Gk)`)0mEd{KC1jJO}w1E5($P z7_HqV`$Q~)&PIBcBy|f4i-+8FN>sm~Ju!ci(B#Z`#l1u}Niem3j(~agLwNN|x1wt{ zFDD{avH78{24;Z~mWg?{R(`~R`zF=E%;=yzcA>ip9k%cQufuF*sXYR>IbvK@vA+Q@ zrJw!oaV+Fg1T%n92~&`9Y7`@x0kGE@35`@;{dSa9LaYUycPxSq!)3TkPTX%3s5iyJ zl5=TdGAJAT$4RmwjE1qoLl}V#duo!T6lF18|3^(>M1Nxx&p?=4`DSv0CJEze^j-B( z&w68!9KMg~iqy7Rtk(JMcKSAI+#F6~!5j{dn z;9CQm1bQRjTfME$eiobVjdbf7a^cqLYnvYO#t_G}`^)R+^zGdJYmF@I7mf)g2ni34 zP)nFNu4cnmXeF#7qyV$_Xj=|mLD|)tl&o@F_Tt4#JXAL7dAgZ~#-o|b zR7tjS85z1t-U%9xVokis~(giWbCH{Ib)19^?O2Jl(9stnAZKk3MYb1?e4Tg-mZFj}9%!vK@%ViG#n*IE( zDGR5U=`CYBJ^3DYDhvoACV=*4mIPBD@0->kAq9~?BA$XgF+C|^v?Vt=(#z8^=&*b1 zQ~+rnJ~DS92@C;IoIsK9NWNx$Y<_+WF9QtWR=NlxmOOZRS^*`$a%g?w5<`&%KEpHK z8#;+i<51}!)7ZeNDzQ$1=DYu3^$Tp>SK_5b?~T&ECE9gZr@PU9J4rSn&)u!--q$bh zXBxO{F&cJv7SLVNW~mOz1>m7I%W>WW)G+2zEyt5)g7cm;uHPOmAE$fC6h|f)a&#;f z@6rg-e>!Nq`;GGK^BU?2w`MG0+0vJiJR3Q{&%dT>Z$iec!(Z4fGH98r4^rH2y4bfr zWBlt+Y;sUI_E*nK=|8fR|6!j2CeZ`)E>+E)%*2KMz0V|W|Lp?lF%F1k%#;#BD0xFz z;mnod?}J6a{0-pWb^5+NrXphR)QSrDAbYXukAP=F6d`7~=@0NtyxwSz1fg0*(w*um zd35YP@|<3Ke}271_e02bw0ru>Ktvk(6fGzyw5a4AuE3GBJCmt$rzSD$=aH%oI+1)D+8%tP3@1K58YQGf574no1H!>$%i8lsAGGMup#ux`(%!ly|&Q z!Bo7QOyT-NE=}T)b(y$c*3rG<^sKJ*f~RGR>~?My#c)j{SORJY5Vnw+6=@jS9mXeMl~> zY9IIP*AKp=b|2qLk4DPau9X4hyhAQy6fNskX3;$hRlky}=sXUi3Uzn0=3=Uy%Dz@# zd%-PW_+DiZ$?XNau5(m87u>am$7=3T_t$|LBiLYCZ~T3W_TZN>rpSd{yKBw-n?YZU zagtTO{wPwXHhbhvo5r7x17VzOTF1@>c#rC9BmI8Z+(Kxy5!`~eh$ z`YY~HU!P;H67C8_4_Nce*mniG557V@THQS5K$P+BFY&g?+vdb;Iz0O!@G60r5W#0C?f=A#;qBc}r5#(QD+b$e9 zz!C5S-TdP-)qg%g4(@hN#zz0$+~DLYC>MYi1El-*jBDaXS@ zyNpq^lEc~*qUWF&ptz9uL9)N2&{IpP(=ocP`{9kf;85ZTwNtHMxR1Dx9y<>Udp^D1 z;d1>#U=&C_XHrOle-n*2Z;-(>Y_MWq7^bMgMXo`bhB|Z%Sxzz3SYcQ9A(T0|j@YyZ zThEz?y5O;!vP2kmQ^^#Rr(_|oTV;sMSJ`ixt%1F-W_0y0ag8uei|QoDw4N|lz7oBP z02_z|?W`GFwY|KPC1npMJQV4&t(Rh~7Pe0dOmzRS3c6s;VM|Up3tiV>scbq_p`{=u z=lu%(C1)&TJTVq3|7(-tY{Tf+bKU158E4jY1kEX6qYUF9ouEm|+>}yDtLSzhdabDT zd19d}tQWicDexh1pgU*asc4m2+h{C?sY6s`e8w_Zd$H?F_s5=V;9Jf|%V#bNYKon( z@E1u+VtT^rveW_RItj?SNx=qCXkcLg#C(fD3A|a0sEWu-+XHeKoWL49aeHI5E5c{+AmPQ{ z9K{{pC6r@*K&q+CgWU1Ma!D)Q5&}Fjjawb^`?+8Ky`AW|x5(vQsQQE9jUcJe14x6A z#sbD7FX1P&!*3qYIdJ#{`^5nTJk}q*0s_wB`@u=GfjrETOo(O{ej9sq~IJkymrSXdlA{~bK(>XrEdyt0Qt;Rk~`0&`*2`<(cz z{Q6W|7)35SlttXzhNE}(ZDxvR)Xl$b$3X;MNd1DrS=tL#^$aMZr_I_lDui;dDpoYwbRG6LW`=Y}KHYn+IvbE(^uD8-R9ko>B0{bijyQg{x|3lGk8 zS91@+1?%c-S!i4%wT>dR#s?&U$6&&c8D$L>XCh1D9Es5`l@wb1Yt+ZjY5Cuhr1HF% z8^f0L@siIpm)Y(Mi`Jiw*6JfWZHgqG9r|jsMoZKM8wIp^%gG{9C7<^#>a0v#>R*Bl zF~z+H@Fa^5O@~W=8p!B2MG8}vsKp~(A1+xW)6WFPJC|aY7_Dg)ve|CADXQTiCh(RfTyUb6a07R_^-WO| zP+yLwEz=@}XD;62@+{0py;iwjfQ)M~#=|b(XC>fNQ~c}4ahdyhCapVCM&?4l`0(sY z;!*l2-bXoUvS!ZZ!9Ytn-WK(XUL+Yb59`t@o9#jBZWJ=g{O=rSipoxR=`B}*8}~BL z;ZBl|IF2ro$-U*$q=hdzG~C4(9-DuoA>T>yTZBe*6yHKne^nerqt%-^Xj{Pm@1L^LK_4J&1Xj zTc~_7s!;u(JDOlvCa8l91+l$6!L}&Gd^v{eRR&XhbX}Oa_@W?Bt@!m`8&PUyighl_ zj|<&ug1g?}>I?A1YK^a`K8>?45h_D5AC}kI+LhfxcbM4_w_y29VcPrI$Y4~Z@4!n4 zPvt!`o9k}E9P$$n??SK5Uw+v~j=!gN*~PBM-|_M_2}()-j7#lhluY^KRUP@{LGPU4 zHscpkew&YcjY0t>iN>@g9m5+8{{>iZOOxvH#)zHBx?nSuqvjf#J(9C)171o#d)kuy zB`wYqcFBW1gQH0KZbwfeJ8A{2Vv>gc*nGdWQYxBFNqnQ-?_8J{b1~_q{dThh#EmmV>Iioy502yr^NfPEM|rVLk?Q18 zb;r03Zzq)Q5`rz7gnj<4VX__xqhkU-NzMIZnDIaK$o_>#vUYzp2kKh^;mF*`+{yi4 z(`Ax^Hqd~A!V@8lLX}S%`$rjTf6$MH3o&m7RE9!^{`W3BU+M(AZFm=h!9MB=BeD*J3v6T7qYD8X`ow8x8Z zTUE^9Lo0nxHi||{)L^RQ60Qvkw|1)5%j&cK`@`pU%_CCxRp*%HdyRxSloLxWbm@^a zeT*^(Iy$Uuk}>Yka9rj9G@+kR0TMfNYl=D#STF-9+|A{}DTF{P12q!h=nob;BggZC zhkjZ#Nx8|Ez1yNg{k?@EsUx=W$3%m6AN^%OdiF&s2mfe0>Uj)A_l|R8Y4mXuGGa#; z@utV3mSaZ#TfLO2ORG7{U}c&%?bM;rYL%KLoNk_s_U=hQU7vmFPG79?N9XAKjur+? zzPOTmQ3cu=d}o$tBbAE}!J%Z8lCM^qjwV~mo4CeQ_`wS5y631}^$(A|)1tFO!wwPW zf@~^mAGsFGX49VEP~Gwf%63|Pss8q0WGIii)IbQW`w*4-wmxr}oQIGWe+2sMnL^ODqRRBL+y4~2Q*`ZSJFOAi zmv^S;E9cu}&pN*P+>bnirO~#ub;_aw(yjgm6k!P`j@@p+ajPh;83_vAxrv!puc{ zsQFo8BNw4LfR)up)hS^s7TJl3(4aKiiOzYx>SKbvT1zD>&}_gLUSs~ng$A?qEinTb z3zB~vRsW%)_OBx;Cn?VFU}$FUV*Ibe`ETl?3fMiiE`s0_Xl)b-8GBen%*^5rqR#4U zmeB|aNkdBPOu$E2#3G%Jc%v*2ki;XLe<}F`%{jmGHBH>Ac%pGM#p^ic)aZ&DxykQz zVn5*F;h=4^YqM*9`}6IZ%ny=VVz+=8SZYv~mY-XJw0nxB+it5CeIP3y`)jUBwPJ!o zl0DCJ*w8Y8reO^CklKCe5T`;CLoa$~v4WTCs=`D15IqZ4*A<2|FQjnjo^0X|32|6Y zO$K!Jx3q?PN=ph==MItcXR?>#>=x&d33Tg>w0540v?eIWw^dzOm3x}yIJ*}bv!O@o z5$Xl%jtTCu1B!~<4JX+e`W$y`BoVFYiJA_Uky7lJVB3by?j5Q95>+%(sA@~5ES%z) z;R$XR8lO-Iu~(}U073Bdn@Tm3NX)Rjxs=KWen^W+%4ZZd7mlf0QqFC|#bN01J|I@o zap*)P09`n%%;mj%ydl3^g*pdjfpXg#-!S)(+j&Dbvyp19HMNjU(geXcXQ) zebH}FC@9)pOPOMhw4HrynQ$oD9W*jm)JXf#a1Jm`uc1-vzwUM;hML$4t~<*#`|&%! zyUEtwkr|Ia3f^r1NpUA#=v82y#Vt9mYWW+foG0~D<@poOV;>jVzn&9MtQfEGb76Xl*K+%Y(g`F>%byX(fGe`f?-P^To2P}nfx$gQs0`{5p zTeN?tgPi+ut+$2$`*fh@%ja$cL69O!V2HdMltyx9=aAPH2q~goFsM{cZ|3IEJHk0e z*DTEnc~xh;Y2#7rBh)GlvB5fx4he5})(YIi-QK+3v|cS)pFP*lXX@&6HZnx!k_!hr zcnu1?JqKhq_ujNY~GrK|{28{pX1NJ}Eoc$XEQ?> z@4qi*rN3#P4_ZSPDrF%=3^=2=*lOnm5Kt&7$eY?$a(l?pUB%_3BBRE3R3z_*oIj(Y zx~6~(`?%u>(hsr^I?D2$nI@>(%PakW909dy;yoR`8?g({NI< zju~B-wmiH;#2--%W3L@+4*|@m>h&;Lu7T*|1g^cNG#zS;8Q%I3Jl4*oEe2h=lP}sK zR2#IKugR9U>7YU&-k`)FM_^hAGjzWJ14@TI(i+C8mwudOF?#ix(XM>WaK8dv!1mG2 zs;NqSkMZ=X%U7dYRgSog*kFHqlI=ewu&(q>M={ckr}4bYElad(FT7#5tYy6< zF){jbl}s|pt#8PT#dBIF|FBG%iKsyOj*w&rDJAfQ2T1@U0b!6GUuVxm!Qao^#-ue3 zmIyR0qcxPjbc0w(s}EQd@5K%il!3iLEF7sPLtIO0fO30hZ^a3Q%#eoMcf}D z2L4PS+(?FTIY&Ol5{IvNswTg{2kW|J_zVFZzIHZLA*$vD{Shd>eorb*h(+|H+Dl{~ zRbY%vsC*3ljtyayVzAt>YpfhE#wQ}x?B@F~M;$r$kf4ME`r`C)ia9KTAF|^Sx`;-~ zcnfx~L?TQ-?@K-2um&s=Wkq5nnung{rPNM^^1HZQsZ~QjBm>(sLBk7$8w3ppdo71g=Q{jMnpEr7mZS7#)3+> z^&A?TYjL+C8}#}a2KF(ufy`Y5R_2}-AA&m6*uv@v;}%MxH8nyh3!S84n!@f0&E}l^ zJv>YMq!_g!mE*RL`{@|iGrMyd0t`#A+VarfKs0ACXP*vIz06g`OzMk^6NxK=>#Kfw zr0J~`^V3;FuO3Koo3|MVzWG=fh~$1)v>S9%WHBH+orfRXa7m{i8K@^S8f5ocnw_tx zYg14J*UPHozD8yRLqi2=*1AkW4+91H7L@>n#?VKDAK)hw>5_jQjI>!kG$ zM23qEXX+N>qi`O1Iaps|7)yPzkAeT9NI2`D0Dm%d|FSfrj_?GBto2Z>t`%$CXn4C? zJgleX$FAX2XT4#gx7Z}(NVVOB<0t-Iq2;ITtMJ?ql~_Gb4|rDVQ6J5n$4oFUyapfl zZ@cXPmAeLgzaV}z5$@Jtc{G3Oz!j}jWkj@L?N;bMFnm(A(DvCNaWuU4*~#*Cx88nc zXeOJDK4dlz`h()%qSS+Gsm=p2Bh=g^W|9{1kzcYdi?2G+UW$+`Q5Pi}8d%vN{82ff z=zSr8OWmvrw(L5@r1zWa6L0^hZ@`t`Cx|U- zH;%7=5tIV>e(n~V$-VP3Yl&m$=eKE@S}OsFtbH0WI-EqD}ed7b1 z%vSvGjV5w66xn6b3kP$qV8JwcWRp_W0iTgU^E6o)?MCh&PS2#@D-RgP3;0mA+n{z& z=nFVR{14pID~?CyljtT?{uTdWyu)(w1Uyid|9DsY2UVe*Eb!xC?(*NvCU8o0Z=yMj_7EW~mbmn4VMaBjd%9x_5}$ROW-2l2T_cZ)8;KjuJl z*vHZB23q|NuBR>q1jQYWDMnXKFSFba)3_d|raoS`uYhS$1DAc{Fm?Mzw7o3B&`i;G zZy7L=?H*DcW6yI|!Gt<%P#RIt7402+w{xJ|#>Wk9Imp?zP!Y&Eoyzk%E|@6hmzP3W zmL_ea(xNzN1?wi8%wxs1QCe*i)(za6O_r#%Z|Cr6+t;|N^jc72sPo&5hd5khUN*Os z!l!60m`FB@tl>7&Y8}ZZ&&D>X*<#oYK?hDISuvDA&2-qh1Kd`>YlT(%8*5T`S}|&bo|v-QhUCZNa%}b?tREUNXxI-{W#V zZBszrhI;gjBk<`*3`4djcgA${VG;>JMM@2%g=B!-gvyqu&()Lb69${6Xf4ze>$`>0 zk+W0ptM#W!%o%zBn}8apNgHC!F~N|a<>gG$Z!13FvghDvTRA13ON7MY%xKNt_>~n# zsd`TBnaLY3O~Qqc0k4#sA#=C}*+P5Sn0af&w9h$i8f{T9FM@yIUfjkkip_b31ru}| zcEqswHebQ23tQOwau;552_CP_0lu1$GK!qMe@%7hCE*~UJP-lw!$hmGl$$Ne(-mMd zK-!wg-H|r$qS?`gh3qWJL!U=7A@(BJDGr1u@gml5MpyhLma57SEvqE;J2_l@pP0IA z23U%PQje5OvahT)VvWl7r!0KgPBiEzYSK3}Vicv9OIk)J(+#9e-*-&5C$HdbVJ)Iy zxM1Srn|{gAgf5CJZY<1Uv4kHI-E;dr0v|!7pUO9$>2C}k_4e_T#wsIN(^AV?h#yl`>J|%wnvU$ zpDKSU%%s@>BEgz5R|bB*OY1%28+g3~xO&%e;Qf<4j2{Y)ox-E#J(WMP6@L_nenKmH zzWl&oA6#hP>P-PBzpU%pb9bEWBwS0_P_E&f>+Skp87puy@``9ooDcI2`zpCZMxGBI zV1N%BJjich3}c^`^g3G`+@b-q&7*NhxfK>Xpn-IOz_w(lAaDcs$60LX^RI>RD-OYa z32<0U{Kp`X|G+8#1pt2qd;_Ba{u={|6t!KEOc8w0@}bX`l%yMh&FL2L#tejYi&*lC z24<4dU&9T;-q(6fHov(bqE$Tdl=KjO0(eS5qBG}DqtHLdWlf*N42q4(KdYdrr^$w!$cQ7k>cNVC`cL9L%u zF4H?3X$j&md*cpL(&(?BB7G#!5VuS-qQ!R42sS4{vI)2~7j!k~LKyiKTT2;ja^M8w zGZ$}(?J;Gpx%P-*J|Zr;O43okDnZLv3|=kfSZ;iC7v~|%q+$iq2YV5QMq!qWD2@Wv zo`-5+T%b{yd0oQMwV&Ed@_Pc0{30=I$zYLszb!vjn-yT`vN*;wZjM@#E7};&f*w|+ zdbq1HHDzfD#v`b_8VK8J*um_78Qb{LTHfL&+a3^_n0K^|Y)#?gI_tD1WM)yF+ZBmi zo!Wxj?nIhS!Hn||c?)91 zhD~U21RxX2PO+O9iilVMkcj~L7?2Tj!k?rD)j`mcx3||y{nXJ@u}67nZJ0-mg&=A0 zwd6eTl()POKAok+J0q^BncFC=@boG)XMXx+Dk-ZV11X;G;p-n&8gPmdJ@Kw1IL1c! zdagT~3}o7dco;V%s(LvL9bEUAcTP27510pw?@tduur8KMwLd`P-(MO(OJb_wFs|u` zaE|}<6KZ+hWde+NGi9!NCGk}>Tyf!$i>LkH4n*cz?)4pE7;EK3hL2jw4PoXPg(iMs z1d9$MbTUp6^|z>F@=lD#+KUg%dyU%a*0oaaVO0OQunZOghEh)LevinYMpGM9qkci` zM~YyNuqFBSCm_(?YZ}nE%No&vK=wOhT>} zAV0%J&4{GL9g8q53mR;*>YkM!Opfw9C?srdazIOytgd8Ulr0|wgk-MV2|s^c>Fk%g zZQzK-ubx3*@m;^6ugAAJ9X$i%_V0$!d(z+Pr6Wzxo(_o9e2$K=d@6R9Iek84N$%yp zF2SiRRy%%ufWs@Vs)bGE`t-vp2@4I`UTA==WRtTJEJbcz{P|5o>nEZ~NpM?zgx2((4IwCRzZbZ-zYOhu z=nK3`N8elP(!g7-C2w>E&%|o=GfuVBg#8*>wM%yx0gIgGA#n{ol8wNqM_1)yo%(=A z>VWGMb(XZ0@qn{cqu}n}V!I$-*3Wq$Uflkp4dFkC?f!4P5Vx^&{}2M9rMHUFVYvO)}OtP5Fv?CTKzYDv))>jTsJ z^CnzH_A9fYExW!dOLYijN%DB0A{FW;sbT-jW@Ohzd2_KNM#;Q}x#IH1lH|C|tazc~ z6qR~$b7jvyg2!iTx`tKTVVFXV14O*HEK5CH$gkoTEoJIO*2GBTlVFRY^5B-Db(@!< zVpXmAIu0p3{~Mdd#wg8fbCxvX5({#Yk%p#}^!5vl_I#UlNRp&!(z)it#Krg`baLU4 zT76%ulH$-G#5JFXCzGTTPXVRmf^@Dc#U5W%=3L=Ni@g~{+q~>FoGk@MX%s`C%MTE@ zy?$(H*wENwv9iP#$JbG1pJ`4;jHB03v^Z91Jkxl`FS$+6rI><9

      &ZE6I5IjikCC_9cjO&+0;9dlL@-a=eIg^q~hmAH9L>@mkMaZlZ(?q5U3$hvzC z>$@1|P7!kmdB=`Ol9=V=H>%d{J91K1;cP3m^CDk#8|&^qn-ybkZ&@Z&d*bP}WdMgMl1yJq%nv=Ti0Qm+DdJJqndh86F@Bd zt*&>_Rcga%_tjoZ&B!1utkI925wzGYBaBPx?bo0zDBzsd9~DHG@r;U^$zHXW*+H9dicwvfw0VYoC zcpizDFs+fAIzHG_i#L{H*VxFOekYge@7Caouz?Y! zkmS1-F-HPN?x4$_+%>M*biXBDpW&=0AWnk50~Wf-sHlHoOATYC(tHO!R~iw4?UCCv zpaxBos!6cXE5@i0w5{94{cEJ?((6F%140DbKSIQR;-DRDZB1lNz- zN6Ol+Sjs4yEwM0CWbuVjO~rMM>B%sS7(*5bYZAaR+XNW|a*4N4EOO% zzCSJ7yu`H8+9x!sx}Sc>IJjTJAl!f)@~b^ga2#EBTyeZ^{p|UCeh2eYw+cpp+Mx;N zvl6+tiqn6JHqW@!{w`7$TYdm-PE$Z1S^f}hla^H4aJ@p_;V2(`EkIFGNk>(5f2SZL zk4LHTQ$IgLsWCF$J9q!>tu$r2XgNYcrmKcBB1=g}drrwZj4p5U{=#~odS*&_U{cMa zYsxNJYq7ecU7Ho-TR5|KL?^v_g$@I6XRa#C2snyM3nYSj<<+scWJ|>;>*8WSq=mYO za?4zkh2eOu_CZK}-9>t|v@xz9=N&qnf_sa}+G0?!xpE{{n1}OAQn3d6zP;oj_6%Qh(Alk^@gVsmovTpo zm$O$LrU=$UOY?0PF3BG)X1*5m4SJg?J7feqo!&q{U`7jqoqX>ZC@Gj05eau^!l-J*DP{_MlRwf6(?(@%|1=V{zBxDDpO`khlD2nk$T58Z} zI%KR$DpaGZ%1Zoiw87_H;Qh?@>Ogw8D)z5Q4c;x-J@UApCVlqFHYjcTq7syF2y{Od z7HjU2_tkb_hCbt(O8A3=wjMa^;f&Z{7$+rL{q-Shc6cB`ZNxD|`T7z3k#zcAkwmV4 z2C}tb_FF>|rS5Iv+Fahy(-8WD*)ZyNMitR3$hEf78GIiH7;&Q@j*I}1+)?_YG@_zgv0N`AMZbwA`i{q4I7 z?N^{*2EscJ4o9yhSbAzyX`T2+J0s3v+_uBf#>Yjbp8jK?A z0_wHmExcE!3eAYW|)o4>a=f_Uv2;EcqRi4@ zi-X}YS{vcvSs4FLoyFp5&38~H8XN^uh&~bnRrsCUZf6Fndbio1{*t`)dvR|FA=p4` zMQ@BJAPYrbg8vH>U?Q9zUFh2_fch7Ppi*FJB(_>21MOUfobZg$jIq@3JgGlKm@TzJ zdmkGVc2e_G?B0&S$FiiIR5$z;In~E$dTxi_3BQo595s+-8&hk3HW5|g0PrmJSpII#w{ts82qO*acvAwggjnlugEB;IRAZ@mBraj5L2v@jPO>lt z%O9jf3CABKAtW$ne`Xccrw#6l@&xh*EH4QJRRADDUcQkJO2G)^AI$J{x--3U+j6e~ zExA5lXZlnSZ$ZII?zMXD+TGnI@>(x~e!|UxgEp-DhT^~_;XzEe(-~npoL?-vQJ?44+#3=Nv7zG(1YqBWFWQoxY>O z?V61;#56h85$w&Ze-}hf4vQeQLUshz^gOC-rIT~k@cjHhPD0O`SJt_Ns(M+NyuzI^ z#qH)j`sO-S|56hY1wgY-#4uqPkkg~L(&|SwVZkP?W?YagHAvGR>IY3n8*3e&(Ni;4 zYmn=MjUZk=0l5(Q8bnHh>S4&FW`J!Vc`jbZ$5Q`wQcB%8{p;c3%`1bAFK7-DZ2~v? zMi4)Y+47Ixx5%i3_UpLOm(g#~?~r5f3^qwa5E=J~8bs`d8*jW93WH!4S+43t*t|`U z@dn z|ATJ}{v|!Nm2c?GHwtwJSejdaxtG*C_gi9A=$OwsbX z*@l&nI#^mN8L(B}ymhsV?(=2aaysv5#qsTn4|&Y3)pra=X(gSvkA~^1wAEGd`nUT> zd|%L+YbHT_!5;(m!N@T1OqoU)dTxO`C<6sBF$~;OcIi8i!DN`(20#y<0sFuo<^lC! zN2~`}IPE={GjRjzQ^jQj2yCo}kSH^?M<%rBFlM1)VbV8dp&Y^&nAsGB`@m8%A#ZjZ z)RXNoi4dxvKogUhlelf_c*r#gQx5nAf~AItJ7tErc_!q9nTTy zHfVVY59BEnU22C#on9l(Ppz+m5mk#$sxgnL@^rW8nOJ5h*VL<3q@K7i&dZpvWLi0gsMOt0@W`+X+O2QWIdtW| zK$*a##n#Q4E%drPyc~wB(O|0-TXm3(3wpDdJuKSVRG6yZu%T$UOoSdv4`xcz0J<|P zJ06Oy7rPu73>LL{;-|FduoI4;gqIzYaV_vVd>bxo3p6T(Tv!*lTc&&|b&Bk-2(lq} zR|yUS+++q;pFg_;5`zl@1aBwd2gXOfFH&~#PmSIWJ5V@-*khFye_S}P-N|mXeEM?B zL&)z7&_mb@_|r>a5Jn=!2QmnR)61~SrV?loNFmJy!VpTP0;G^>kxU>O0yzY}brEXy zD`WBC@6ugb2BHgu?s%YA>xKOR?2z=22dYBUAW8LGev61DTL}cs6H_BigrNEsQY+z> zB}ZC`s3j02cQFjuB3OXH)9=Dgktf^uZM$VvBzL~xb_V*XJ0If1$-{eEQu4q=HHW}K z<{)LHwJ#hu4=52T7K)DGrgIS32a8Jp%ma`CA;Qt2IH+kT98?a&vL6+E7+u`HprAeZ z0m}$a2Y9q}_uOviKQ{V?uU3xT&7gm5^^q}ipThqriuP2~YLBpWbB5l&KVR>E)O=dX zxg&MPyXERp;rgm@B&}>2zoq0HQ`jTt98&m0_1;I^xA;^>yr&$7>h>V>KAGxl50 zzbqW7@M?A$KnOYiN0OH7e*gr+f}*mDN=(cQ^fLO^#zun94le%{nbf8F>ZmA;!rQ`q zX&nW%L($DAw=OW*eN`=7L<3e{q*SgaJlGgTl1j=VKKmjh?A7xwh+=vinPvYriuu0j zJ953AK`MqVATMI#@zCKp<+IIUIt}{1SCivQ2$0zpZRE-C0IVU-ZX#|X&vqehqR+k~ zUPPLy3c(9Ca^>?N@?gvgBJ$wKn+m-GPQ#AlLKzY3{Fa7R z!@6*?`jZzJ735TBq=g}L5(uv@umzB#8t4LekSJF+CM82wv@WPcGTU1P*=0%&#}>pv z_yZV?<~05nXYUkdS);9KW`=Du!?u}W+qP}nwr$(CZQHil@$YlGs;jEcuCBgV&%9c9 za}Ivv{U9Z$k13m%M2GbgsF19F>1qrhsMsO9KcT6Z2NBGP`Daw_kC7G!?go)XMqne7 z!&6=%#yh!SNcb-|p{sO`n*dwt1@Rn5 zFOmTB$Lpgs+2~B1+Oco+z~Zl1YFEyOKY>!$B}0NB~-!4<&wezYwq0e2QbY95i<$lv(FxSm&3=R=3Aa zA=|5dnDd47C**ar9VyXcSZ?6SMA8=Ney0ANl!7caj;lDEH2Quk-dKix%P+m z+=^X$8kZtQ%<5B93N{xyro`zqQE$^4OtWjPdlGX+8-#g?TRu+Pqz2L1AHnJZ*ki{K z^8SGvP+=BJBS*2|mgOHp;;z%n@yWB>F3M4i?SOg zeZ2{tqc9(s(CY{6O0K;AEQ_1x&mRu)^vPTcTT1Yw@}|AtYu*Rn$MagAI?JI*kMrSV z7&k@(nBvBA2OX{p=~~uL?(>rC9j;`8bcXT^!iZ!aUbLsrc4X{AuF+Gj_hBr7PHss? zovw@Nbu7r%WtR?qMjd2s@@F}+Y3Din4qg63oEZ7bovF`9lQ8U}*3L7mokx@E*bZS^ zCpq&EFkfWoq>{TdGYc}cDHO0sb%|nCeC<4JVcQx@Gfvt_KR@NVClYfJ-)i6|bq~t{ z3?0qoP9EG(kuPZuQTFzOEg{R$_oi`&(su~YCyLAuT{4mR0lAqXLZFG{(|(EvQ!bvF z2RR-Rm9?5Je;J!PP zlzHt}mx%s8M_%u)js7g+C6!qNb zt!KEyTDtuHd(}*GXgigyx98**c4H^-o6$9ZC!Jp#&3rqT^2vStclFV`GLt;?xl*`?$H_lx%8miPj#!zp7`T@*|1 z3Hw$=4*Qnh((wgMdQ$bJ}x*zM1A-I1>CF1)(%1l2-1iF^;h7SLF8vc;R|5JZj z_(Qn-A)|R&xvth!$f@gvmlWy{sq)RKcmP&_gfJy0^UxA5l%*fEX=*slPX_to?nIw- z_n@aMFyue}&{Jfij<2l#P=V9W8{B0izh~HAaUJ*k{r>s_^&z}~13`PkpXKEDKInq; z4-YbIaYi3vSn@T(NDOtyY`x^LA6-|SoPBB?&wK?3DU!`lDwXk3s9g7g%C9)Qu5cC%wF_Q@`)8gGvspF%L4wy6G@lYW1!grL8N* zHUXEfe-MaqzFUZ=ldLi~`XPF~Z`jQT8)`X1ujd666LzEYH_9tdIYNnRmth(OazN=` z7hGW&;akcQ3*W~>sejB!rfVD+g{(zok*+$HdnhcKRgEI5O^OlAwLTiGk*_0H8r*Rz z){*T`Zf!&y+G#3eo=lo*yVkJ~4dX7iF0bM=D$S`EXAE9t)Y&UIUY6;T%#G7PaR~35 zz-FpVl|8si^xIg3a#9h?; zIH2Uqzt=N?gUVx1&cy3Uu1_Gfx}}Xbz9L7kqcR@D6uY;IuFbFV2jX(Gld!`b{=)0( zU)Cfm2kzm=+G{!1;cBJ51eSb}yZ)Y6Xm%bLWkdnG$I^4h?#QU$RI?vK{s@&hioB<{ zHgB7v=w)=8Zoe4CMr*=1CRwF;&O0-xmwwz~E0YCpvz&U%O7t z2*f^uXJ~oUU;kUEBU?BzYba7xH*SK~yf0|gPsm#mu+nMxzrVqgn;gTNSflN82&>qV@%>_(1{D`pM4|VedH?A?CcpxRSJw%PhT{rP{8Y6N|F)|A zH`WCIYHI&!j{m7?=~?L*S^k%hp{V}j+XeRpBiKY)t_X(=Z>ngr>Q|_N1W%&@q0}l0 zUnxy}S*u!qv2;l``-2+q5m0Lg-3$N6gD9h^K{h9@WppYv)$4vTBX#xRxSB@$x4>;* zxDkl7iH?7+;aG#DZFVk)l{IEk>Jv=`;gaxhUVnLzxrJ@-rs!YaNQbl@A?9&Qxejz{ zBPxPqeG>vEtK$IOVpe~?CHg?Rl7dQ$u3a+T9Af+Q-shneX8a^wWBkPxb4TfoI+vlE zqD={}@OAtr>cRRx2aBM3N14FrUA@gjxGGa)qr0NSqaX92*W?b`N|6a-;^mTmn!Le&_YmyJ8ZtJry+lF1 zgYhgU)ciH@9b5Q(P5~e&-)iJ{S>OHYqBbL%`zKJ?Ph+t8=fA$5>18EI7jg#HKoU)@ zvcS|-o9uXE?r?BrG5s#&3C{dqli7l!+V=639|`b}5``wtg^2s-7n`~)6f7!1f?Q5+ zM4})qTT%xe&%VpeGx+#X`7qXKb9()Wp&=ZgkKvYP!g!%KeBcn2k+i{WCAYLEyp z)M(3k!|BL|)Zqs#$%qv+dK1EMHk56V7<_`st3)edVGB~^XQNFM z!Hfz*8hc^Qc<(FXj{;y2&`k1@!vZ}@?BXUBN>H17ZZayQ_(UYiw>pCxxj5I!_=yZU zAXE$CgpM=50L#9xdtq$n~kX%;y5Ow+t19Re6 z`V8XlZI4|@IOUIVOPq2!Y|VtLK%?F`h~j=gsZDrptPJu^wseKRMlYU>KL{&^;>7Xi zFv#%v#8J}(JxZ&P>Ii1tJ0#6yL!ri&Xh8mlM!a$-p$_@y+dKKUwqIQTAM*D9&`snHefPJ@009s8X@;DDACc!$mswgHNz7v_LD6)0p zh@uQ~ncORd_W|AAFV_GCFHfa%(prU}JCuo3`=a*a^y=;_U+<518gFEHiq0s`?bvIl zgTSbalabM=jI)t&Y_`qVYsZ7asE-^1n&yL(iHk`k3N?MR$;AS!{LtC-n0kgmlyUJ2 zYIanyG9ndu4Fj?_IQ!9DR$NQUmO~5vszm{1O(*nkI12}&HihzXqGhD8XS&<8Fp6IE zWOJuNVh_6!X7_Y`Qeq`UF$rRITsskgnqDPkIl9Fk0uW;r+VHd3h|AQKf4vgIAx8<2Onxc;DdH~G4uk*!3zaF#7sb$?x=p&rb2esQN-q-%}QKXgn5 zSYW5-c4L_9tdJ}ieeF8EkRKL)^g8wsy~4#3L@tblYMvnZH-WI{&n84@I?=e9JfDV0);l1qU00*GBWh6F7g8Ih_i_~ih4r!^`vj&k0G(^O`A~)#1txn$wwrV;My5co#Sa1+?JVkySR;=nk5$qG^1AcF!K(Oz zrBA>$Q8XBYd67qkTz)u$d2x7wfwbf!C*n=Wz9`Ii5yr9I@Fpb-BA0}{SX%QF$!hC5RJffoqxI>g4F<|~gU|`o}anTy~QerN| zSm9_XtSlHySt_(7JqbTWsy{d;9SIvZO1UZZJ@JKCB_IY?W?>1mu1jgPOQ6}1C$!1U>`88mmVSC6q>LjWGcs! z5GI)O(u){}Cz$XTukrhUr-&5V&aC#yVAv1bvM8fL$VcG>7W~7bH<}grw@qIVCv+aV zA3{rBCm-S;5wffR$wg+*fGYmLI5#!qPl(UBx-}%G&sEd$fL{%~Nv0_gJik?Yl@zPE zu=ZA(ehaq}LN6#F(vnvK7j&^REApK}uhlg6m~s-Ef(|q^srh!HE1cLw4ecU<7N!ii zMhy$Clwyr=shds1be*=)UX*23n7O)1{`$%4J{0eT-W? zNFXf(#2YN)$whQDDum&)J7m|B(!#PUSLJ{vFHO*&Y3F}u`IMCA*Zd`}PDe{7i2*)| zBP<~LjPFiflqY-gvx$r6?|V=<_0(ZK>g4vv;iF`cT=;s^0xbtPFk* z_QzEBzfXqIZrg}UhE;8AbORkOUAztccJ2MK_f3vHoPFG?A&QSk#??CCI`^$j)z)@# zW?YP3?=f8S;Hc-`dU1koerE3SJiQ?bbRU@m8-R3f_r932bb3FxUsk?)QsRBkyFb-( zb}_!X8+zmOUQxfcY&=l7f9d!iPqhJja-l7!YnS_vgy7b@buKRd-(F#Ro}80mryrax9g(%Ydx-^ zE+H;OgVVF>A-<*N;pRl!Z4>f3|7-B`VPelazJqaN?WB789@fm&)W`|9>-i1#>anS< zKav+Wo8{>};?Lx?*QdPr78~hHJ@)kwLx9T|!FHxA3fQ(?z1=Tm>Cvrs2FP$w#r2PR zkIYUss^f!8Q&(}&^8RT9FEy>@U1)5rSjhRiGMMU98= zcW1dekDPu#nC`R${Oi-3E*NFU7nxu|Z0yn_HaA?VD0mp+XMyGJbn%I zipPWD75A@smR{l=11F(e=4ty$dof++X=Uf^YNly$Q!>3FrY)%(i(5{wr`nIB>AY@H zKkY5euP!Xpr0#lxabsN3XKT6d2J;8R))sSzGCFwE>yb*~yY|}N=!3bcUMSh98xLTA z*&o=|)%6`G@AM^zWn`xp`L&1Vb?x#(?l^V#`oqpuW9b6w zY*u1vLdtB;I~A{WiM4&v@KJr$PciOoYiEm&4RmSZAt&vNW)5zxEG+4$sLQT{0FJxS zD331@C2n&q?#)=5CoQY1k>vbjb&_IQtZBBp;{8`fBX(RO;s1aVmr{)+Z~UB^UjAG3 z9?$|BCAJ>qmqCk zJ^OggcMZ2YQ7%Wt7I^UtQ0-Z!743#3-RZ|f+bAG3Y@+(i?FkZWuFXBmmbGGqEdyLD z80#Z{XE5Zwi*lD@Dpsh&b(E;=s0wf{^o!E<@3yRFox`)tJ8D@~({w$3P4Fv3vMtjR zug50Pr`I5k#Qh&OYnCCXNn1*Onrse;H{_1;9YA0}2oPkbpL>HH{vh%2@3kcKp!?9> zL4I}Ktt^%fUH_<-e!Y>+bk?)P?X+;mmt4yn3eV6Zc-P8mugjaJnNESdlwvbVAs+ij zff<`%KS*U#>vPOV-U*Qdx}G;2pbY&|_E~CkdK>z!T zLO;4k5gwi(Xq72zv?+9_oP&-~zpBRaOz3o>D}PuzhQfpyYa|=l5eHqMy4*(6o;cYY zc~ETy->@e#K})e7l5^pRNUS_v5C=KbDML+}9#*&#E#PF5WaYO9m135WHX**y3HADPNg;*WQcO>UXhffOsd$ z0y?hU=|IVN*Ymx7IR=@X6iT%;fgK~vi-pK=e>O2S9O z{;Apt2aC>flF+=-oime8>#huUnNQv<{{aO`o-rj#f zowxOKOc>5!)SF%lYVgB}38i{cN;_|Un)!jV-zwC~3yhBcVu)f{w*a-i@g zfg_+9V%;da&g0evzSbha^x_QEc>VN15=){ck*eH--W;CM`J)VlWRKVncPc?Iw$!RG z8QMt0JTFB^TT|@)XdBXUui^RovMa4!9sKu$xXIz%qEH_y=1Ty%H!{JGWDD z>ES#4lhVLs!*!+gruA+PxEMSdiE}Cs#jC%4AMiMrfYgi^`1C}GBQPV|aIZehuRyV$ zuSmK20?Y>l6N)!B+BSP9(LnrG8-IwNVlQJUT4+dMXsM!c{!l@Jro1WS3wz~$;ykQa zJ1i6)UxJ*%PUd_HL5dMb9?Jmgw}324w#; zVngT+-tYX;DK-Bm4&wh^fAU{j02(;y+y5Ks$$yPJ`_~`;apnU}RAVO-^#Og1x5f0lo&rg!6Jd9)Gxf{H{S? zdRWHp_&sBsR0Tit%wIu2ehvm%N{%In;noVuHDemDx}3M`uT$->TkWq8roFv8Aat0h z-FI$xoM3U_cAl8VnXiy`R?);yf~+hNWNK$k6@nWYkel@2?{kb8vEqTi3aZ0^nlGWr z#adYKot?o;ba5b_fSN}#?F3*b7-z2Zc!RMZg!%vk+KZd#(Q%ZJ);kn?EGOFe#iYCP zn`-z&fe1Xq?%}R3peeXEHN{qJ7wR>q#LM0y{DWLqOllThf%m;ExN&5UF0nA6T*Q$Vt#IG* zL8-S((%=x8;HS(RYM;=sFHS?l|BM4XtHBT{5#szqf}o}$2{eD3TVOOppr`s2ER>TKmyX(-~+;d4GWdRFLWUyF{uJhm17jK=$kXw$lkEMz?O$j_{x)c*Vss#)LcMV-if6lcSRowi-I(NJfgvH&kRb%p$y-(EuUOT1 z<;GN1lf)JrmnoO%EcCs&L24_Pc;4vuZ|5}3;Gz^7&Ki6!DNp25_grf?n(Wj^Zr8RSV=_|}MAvjpA8sc`4%2$+ti-te`}a3vnk=?8 zbMRs~H4g?b$mn0|)zt;trsLZhW4A~|?Uqy%qF=TQg!zpsFvc^&MqHy`a`)*@GqLMU zdAieQFZr{V_Gny}G6lC>43gyDhz(5FS^ndX_F$($^T|U_n;#gcSc~==n`EFbm7=c= z^I01~M{o+E96lYSEVvsB?mit?ZI4>7PI%LpN3`c;)y=5S`E%idDm#Ph4{o+3NHkYM zsmWd1-~tKmwJ7jbkFK?F9GxY@`x5V+CH+=3OSB;_e!8&YPxPFJgPJnvAZU6}82#Kq zto>dfnY+LGd4mLq3<%MoK;rR;bQyvOfns%Q(1OsT7&r;=27)R@7_gGyhVX(25ZGz) zbuqINZ@{wRM;7UViqW%@Z%Cy?R-#Y|9rg+Wuw7*NP_^P_B9n<8c96lNcS-xn+S2)t z{%AHUI*8mHn_k5uMjnv;oUzLU4&LO&t!dvAMSzBGEA`;wYpM4vBPK(b zsBE*=eFq`beP|7--crnS(njo1TXP68bre9o1r~K0EGHNvm(rMj+@_JpOkxF~z zl6&|rbh2qRDf-eWee-L<3KVP6nAtpI;OK)2~lvL)`h ziDB1CjmP)<<<;BY0|)23I%c>8n>+eUbVPP<*Vcpf=zDV)v4t@Tb~u2}IQCT1PNR~y z^|CB9%k>F%K{Aiv4SUK4$Q-RCB5MBwExrDQ{@Q0teYn@7Y?YU-yxVr-Sw|WE-o)!c zk5hHPgW0-BzK8CewA!L-x;iRGJ#&_FtHe=0J;`K3HH(AxBmzRlrlUXUt={F`cqH@c z=`E=owKk`4OFMgz1Mx+K?G%Cf^I3X4rJj!b!f>b8k}<{GH*G9?EYHfBP)!LXG)Z2Q zw^5`q_$&>=Y=O2M?~QBfATHoPfMFh7_t)<~lG(U_+b;fZvWkEbzx+R$<-aSuD^=V* zupHsPt+d=%t>h5oa6D&{sF{%RyCkuO#n5?dtmnoh_u9<6r%YA%y zAO}ghWRUVh(#V}d1>lj&nyKaBucgcF}dM~AJc8+UVUE7r&+_$D~Pk0!6-LG#? zY-mY+Jl78YX59G;qrhG>;kyV^;i!`dc#du2khAFv1KNgl;-u3J$N~XJ_uT*4!c)Grd_FLE@^2~@_o(y&0W2{GiwTF>EUOdyqIzn3MI6>!KVuZA-6TZ zu(Z9gwz-ci(|ew@q{kkC<(pLZMHEv})+vZI$Lz;AdVftXt$cQH$6Wx-`pMF!jv zDj0MjCDt?=;UolOT#JZNf;BYRETSHt%hKYE=5I*^=~WB@cneo<42BG!WNnX)O5_Zg z$5~9#K1~{+E7KTzjk$|W%yS#-IvmvNs$9N$Uzk%*Ck5J#03%b++1O3Tymn0Kj<6~6?)h;*nq-eTnd0rVBIwJ^W=0O}(JAYNlKj&j0YwMo|zpcrl3Jvi1@oojkK5gIMxNOZl^ z-Vi5i{ysg70<(crZoi6+;aF{iRYgNs(dJruqLOU$Favwz9C@14xj|`|u{0!^)#-km z%Z*XiZ?%N*3JMe`(8e7wQ!KTG6Jd-H0y2lz*1gQID6zqZz+c1w@%Y4p_)Q@zBraTNd~%sW+ieRSR)oRvCP}A zatd-DOg0%XR`ETclN^*;S~7n5EwJN754;%<)Jm(8Iv}H5iO*^*c%n?%uB5cmJo|5y zXlGnkbN$0n3h_M=S+#3^nndG;Y7ga7F7WTy$zIj=ZFyQ3d0yK{8o*6mPs^@^olvm80a3qO~^6dtQcOHfQsx znN`ibiNtRY(&G-Eort2f3|#YNB~0`B_OYtmm%xynN2QiqB1=f=M{Q5vUHO-C%Y9V2 zyJgC`dHQgU`$wNgPlNX_0D>#mR(w18OO=CB`aQ^#*Khk;^R3MA5%P1Qi$l?IYK!&P z0z(eNrc7x6|Llk14lI`i5sr~0GZ`_y${oEjf=*_qA7$FY-s zLHZ}Ycw6)!Lyc&7^yGa>`lX$k2q~=CT47J%lF78vWKS)W3Bt9xru3f7L&K4x4QwM)M`Q$aG_%e|rRq`i<^ObP?_T%8G#-NKWA- z+xozq7T@QQEpmH@d*GLJsr6B zHmld_l?M`u7*0=Mm1v14qF5L9k^9o6h_gQQ;b+`#Dh~L&RidO0 zdALpOW#Mrzx6ntuOR@*Q=e`Tnr1ngeh;Qr7%KVDsU&!|7o)G$_g1=fTH5o7FTQ9_+ z-bXc@Mr*P&jahIGG|~z|E*zLGmLTlWYE~^)5|EXwdW!0Fiz{mM0G-G&ne_t`(Q8s) zg)6FNR1yA)ZB8pPE=Giv<4+AvID75E+Y?{RFIrSFn>S6g`l)@ToOb=?BHmn-lWImcFv*+3}*Uyqn zW!b%CJ}OOk73&yhtfrq-9MYuLW%lhZJ_7gz=PNIn_q4FnU7==B#K9S#EPeouiEQ&sr@Kz{pk30O?oUbQuwznT^U1n)&o?d%@ zy&(3`pCJImwq^wA2;46KD)Bcii&7;e)AkCn-?qfeF3BNDlbpD^l@jXKtk62L@zOlJy@n60y69CvaUheMdMI(KhVo2{&C)7n4@BG{Es zTxrrmQFAP|QaeZ~UmQ29U8;#t4zl7v&OK{ttf(@Q8wVdRNqo=~JTNhjbV<32TBH#63!ynq$ua!RFDoU8gS}RqQ*iQs% zrFLR4TE(Y7?_;{e&XY5kBu{TDNp~Y!EJ1NyuA$0ES%wZ{y={g@ca-cV(KjGkTchWF z%GV!=j99bm1T7rwjUyezFDu_sKYb+yZznvQ{6yI1;+p;i;40#ySRU_%`MiPwSH z*N)eL+V_qpA=VPd*_cg%Q1!&~N=3AyAf3V=(n<}M-P?PtlvI4Rw< znYC2j#veFel{)W47ax#*>F4gMf0~5BGCt`q&EIuNi-+ot*U615$&7H?t8%`mzS}Mo z$~pT6GA)?(6sdVZ0eb!D%%XAL*qeQt-RDfMjIN2f>QFmKjWH@(V%y}|4SrF8|)&F0&2EJf)0fmnN| z&HDBFZL>l0+Y?GH+cOTnHzor1wlsonBgPh-#V}%@0p0kfH3HT~e8|-UZ=X`hKx4oX zomYesfL_QpSlLfKoyf81ilZmQYQN@`#PrjhEu2dUc!vH+ix1-9FXI7^EtaN`JAIPOM(rij)g0q#;EvoyAdqOf9^1mggV^)Pq5P5I?WRQ8HOkPTmJHYZJ+($f|a11owc2m zwS%etf0`8*Dw)e8Dx-P9{AQtC$A=$CQu;kei0M$cs02&{Rst_EqXTz6ZZuhe=yZD2 z^FaTJ_qmnoRmcDlF~Rya__J!m-ezg%4TMG5-4We8gSu?M*xw=cH?R(Zs2W+2`~k$D_-3F+W% z1#tlErkzq=BulqhCmYkXpHyARnux$rz}0O*=|)lYm~N^5*|Jpt{9h-M){w$fd((r5vaCmJvB{MRmS7R%gpH6?Qj#MN-~ILilTlCn}w zQD68HSV}0~o6Gsg&$i#ma=YSSf(XA!DRbNOBmrlb`{Y3E8Js${eDVPcA)7oyZ6 zAJog~kJ&;|hzGJ1iy$Lgz38b#QpRs_90tllT>A|nGdQ@$A6hKMsu>fmG09(?29 z#J7Tn-cIz*&Bz&Lbu#12rJf#V*&3{pirz zyOjNG(AxVXLD}e23>rFUhFdBeaV-Njs)N6(=pz_3j9YT`VxB?ha`#xLrFJ0tnS#=x zRFU~p6l@Wi735O&QjA(E@dMG{8Z&Rim`#a9f0^Xc7|N#0;xjhQV=4{81`t=m;0dAd z%rfW!N`C`;r_iDxyp3Sx*UE46$WC|gN#S}0dhl56PVn!ElrSQ}>7TcBhYAl&SLk;= zS|f}!EInmewl~|G@;PU2oL)xfzi|+L^J#d8AEbTZWU7l$pQNj-^z1X$HeEW?J)D;o zinzON6XRIyjjE;a;YP&RF-K4~2J*(GrjMS`#HtT-VccEM_KtH>HPbf4toHP`0XVWN zq`>;8Z}t5mn;<4_=lf&FGK(-FYMNtZ1>JmhtH}{;!Tb9ZIrX3@A$ ztd3l_?VXM$Rwq2ZZQr1M_~wUNBK;yMn8TQfEhN@j$YaW>ufP%#9Sq0IMGMcMtrf{d z^T}v)4K$g_EN0#ljLIXZeCd?i$_X7y%?P!`-2k52wxjn*J&9wqzYW_6u-|cki1Tyu z9Z6X45QBJp5q(8vV3A%-jqQ!|KZ!Y6q2e9ni`8=OjJeTa_6Rw@d&-}KR?WiwcC{X2 z)&3-32*2m{EL3sNNofyr9XmR+JjnYN_LdwwfCkrok1mU@!D43)jJeKw6;2g*K=rXk zZVB&-pGI6IKqaJ=2JHXGk zs1HEpPn6Iap)aG`N0_US<^{O#xA?zDfJOvI2uBP@kn7j_xKh$3ozAd;@TQ<9bV(*p z1+XT+w27I;<}Z``3Es;C6*@=;yo`@#k&%|Kkb$-`@JRZn!)H)zQ!6?Z00@G5+N|N;#x6 zNF8}QmcZ8{K0u<0Gl^3No|Iy&Ou8IR&hmYOr+W&zvu{@OW$vZf3u?6E9OhP*{4P!B z8q%^6w31=)u()b4l6yrrK$WgK%^I~GrrQhr^&Rrh0rE|Li+yKpiciE`;GYd@oWwM{ zl&i^ReWl^_n0G~oE>CHei-Z}fsOtFY$Wlb=H)c)pt(~UIl1~O3YDDd4R_uqkV|iDK zl@%o%trrHm+${SEn(`G&mH3ty2rP?fmm3{%i=-JY00i4tz;@3dW^yKBkxq}{3-h2{85AZWizc)*Zm1a z6=@p!OuG4`v87Ce!&&&kSaHalerkl3V&4(ndW4l^UlQGVl$B<8Y$H^hPAYkpIV_Af z!vS(?)()|4L!0@YJ!&aXc+02$Xn_fX!gO&?KxQYXa2`c)!J>f(3!Ig2{`2CSt}tq@;DT5 zGKWG2D=)pUwO=13O_of+*##t_V++@iR0R^_M5ofRS@Wj7W9zK6+)c>Q$Dy}q#r!9O zAT(;s;!Lq6e5Q6GC zH#q`?T$0EvQs$I5<>1p3DsJwRF!SY{=c3#o;%L-GN5u*Q;MAA+FML|sm8QolSZKjO zZn2-E{qlSZ%9UH%b_OG{O3Ue0|00-k>FL$*BiOUp&XD{+MWS0EW8m0NeAxfDG$xk+ zeKz^e81c{8-Of_?AJdNiL^3IZyJH^0do8moX;tg%>Gkv$fRm{tSx^)a;enDxQOWtn z_!Y7$%?(r(M#`9phZ3d(iRCiR0J>?npjx_>6gD(si_@dc6$G1}YKm3k&N~??Q&d*~ zwl7TQJ3AR|rG9o<8#ygof4nDB`~tb50ae3p+45D#a!Cf{z;dYu)B=U!*s=!ia^e zb9BD+At6q(AZ{HuUjpFJ6c!c-2NwqlHtOA<-(NQj9Nfl42m+}ll%`W(*ZNPvyV@%4 zp65*o3(`|m0z$&WEdg)0H7Q@YydIrelHF59T0!_yN}S?HX^GQ06jeRnc5@~(LV9Ri z|CFDjC|9;(JbET|HTebNzL}EthNFjKYFna&mb?YzX_o!;T$+Rc&CHateQ0<*(-2t#Y_{I@z=G2#gC2JD&lQpqJ3uGklt8i|dh35r_Re)@xf z$}$#Ui=WqRnLBl4NqkLI) zQ@K$sY&%NenqmHt#7?qp*4Oh~!usZUVdA@~nlY@y+&}hE3=)j_4D5c~`1{t;h_j}5 zP+>!$XBRqv#pPPINdDTxJkq-6*<01j)Qs6qjOobaAoIG?ZKvpT%~;70 zs8(>uJtoGMW@@Ab7B`_5JO0N&lSm)4{~bLjHeohglAaUFD`?V0zeP&u7a2OsenkX# zhQ7L*5DPth6aM%aV?R{C>yc;5KSU41ji6{+&cPempl~Q@29Jo{eW+}m7sCGf$&fv^ zAZa>}v|R?MY{M6<{$up6o*O~%;Tz6=W%Mor-H1gxrQsWU}_6M6;7LbRDF4LAataw{ZdU zFSS3jYW!W@kAyCtAUV3P7z{Df@3E6_VI5Gx%slB-W=31bm;0dcJW=ul;!>rwf;p48 zviwm?qRw){(m2BAyv#eWmtrHxSg&|dT)a;E$ZwE%9OBOY0$id`p?K~v$p8h_x(|Qu zk+qZdi78y8DtxcYx+6N{)^$s=ok(+5ws7?gP1JOtxuhGno<-%JYKRu03@j{+<;Jsb zbDZS%4d9O>1T81$ShAVo!j+4&e4VffeeU4n(HCD;3%&hxSIUDMC{>)aK>~x9es1&P zMxX8Lrk@h9U{Q+ayME3Z^z-f1ImYXG-g;uuw2^Yx+7-!uC7+^Oy>I)+H9oifg7ToI zvEsnqWHGV%PGur@PzCrB?-}>H!>QiL%J|b}C$Aq~#L8Zi-y!MA19_Hh8DcF7KC&h0 zW*z^FlVl=sKZ|V8aR#2HcG9uFsjT}1={M|7EW)8AyJPIZ`8X>)+1|0&GX7Bo&5qkM zy_ArOYg>pm$_*rorZ%yto)_?Ckb74M@@89&9||#5%$bW~mibZe8CQd|% z-p%h}b5@*MxKgw*6;aASd}f3|nE@$$+^`Tr6#n1iR_4Kt&tpU_ZX6Y#?UtU{OB_$D z9G4VpZN&IVFzUsfA%ABpsnt#=w$y?UY*BB8_5B}A$e5Pm9h@9M_?*y(P5f!zH!mfD zDRC(-?MV(X3Es;usem;M^?xg`l_pl9++f^~d5J#Hqkl|XEKln*MQRpLD$k=#Fa}Gh zmlPpSHW+0pRTNRBn&wHVmlYvTFqTVED9qm(r3n@vmYaqfrAZc3Rpqv>8%iSGgvmyF zVK{YeGRGfC9hFUYD%iE(nm|7r61+KOl<#J-Y;d*6^mppCXuilmJI~s1+`2$N$L)4C z8aedZTvwbBip(~{CBlI_y3=~{Xfm5U;mM0eFYVy z#z+A}0z;4r3d}XYLHO~gT8NYSGLlJ_K#>}zLE)uHi5aPtz5`rQyyxY$>`;?hvZ0(? zyTEjxXXkHmq{aZn!Ev%3w_k5PZys(s8xym9zgi;jKn`W3Tn=E7oMom^^c-0|q_0r) zTv=_*PxWQbHr1BcU7H%8s$|a~3<>?7XMS&LxP%gTbMxfV^(H0d$pLGOZJO$uw2W=) z;wj0e;(Mz3Rcv~3nRDpb@o*XT;X}&iD`*juf(#0U+@W*C~m+ak~}Sm9wQGFiK>dZBp5nzgiO*} z#H4`8fgpDfvn3DbaVDk=)63GEoGS-y0KTSlh9fhV5vnLI^h87uo*5}xhY(~T>|+_} z4Yu60stbQPEk%#iS7AZHv8`*xCLw@g8SuBB1{3`bTbXfc`TFEIMl*9TWfDK zk?<%1Ex~2A4$EDgaOvL>0C)4BMAaQNEjmMj^L-WqevZA6y0~vIgN4;PydW6vq^*>UQ zZ8jQZ^RM;vi*u~iCC0%)N~^02*C~@2^sjdytEI<9^4<3AkN+2GZxt2Sx~+=_2wu2* zaCi3vcXta=xVw9BcbDMq?(XgmDImDJ=P=h=yPbXZy>p)1+I^_Udilo~fA9V4pR5-t zkKu5YN>As=lO{copj3)aiCsuB!2p!8tpF}4(jqOQY~h!oW|*}q11uae}lx!?4BMao@CHsX3ZL$+X4im3eU(V|s zHYN}-vMZ(tMm)Qs*gE&Lo_??nZ)%hU-JS37o^muV5c;ld6s{>>PGs2goo~K}kB-xX zXSk=NB9?CydT99o)KWUPQEf8qMmNz+C=aWsWekhNjelT9Yby`tr@`uioLE|o4%eX< z47bPmIMs1^mB+5Hdn5Qi(HpaF92qno++P@#cZZI?QZ8!-zWNTy3-MZzu^AKxiqFs* zuxH2CK(&+cebVgXJ56TF0Wk-wu8%i=Y2CM7BfSj?~>=%Lv+@e7k z!JODzMs67(g5ZzfGY7?JSDY=N+jbDsmIHCX@}Z!XIE`3Nae8#(Q}_6xYP>KFdtpd8 zSP>A8GgGZ`!{{B+eqC15RbQ$NOj)U4R+69dx0iH|sbm{byd$w9A6R~oHS5vC!4W~h z@>Y`|z5GL*&-d)EpxYyN56ZK-2Xttd>Ud+q)uPzUeVk!R!WXJ&_jED)V>n+eS;GmE zV0uGSu&cmgbHH{S#JF^kJzzU>hilwc+&=zyOg`82^^0Pr@l!w5lo8s5(1O$@CqA;| zR_50fzUXO)>~b!XZa*AZG?=jpe1c&tV9Scgi87faez*VH>HU?xS6Xd$hrb0y7TKcv zCi%J*@v05dsH!UQDhOsY5Bu2RJ=)KTbgs3=iqc+yPCbqbFPVUBD$qD?;K**KX-&`6 zHoF5x-Z9I2^|-9i`5xm0|1KKOM0c~UvZ`#0Il7v95vASkXuF#NIX+|PYLWfbX_aSp z*G|h+N5ogXC9IzMF$}LHtw*hONgz7r&*en^zHvq!p(lOFTS*>K4e##EWB~3fWm)UX zFrz`fF;0I_RgvW*`wCyHlf$<20gq>W<(7?Qc1N&$%3Szl!>x>dyN*1LAnQfwmkdYJ z-!#evlXUU;awY^Epr5}LklK$FglGG`9={LSk&8=fHE3A|;N$P>xcEXeIJg%Z-DFSm zRM2NU9N<@)ZPl;7IUD!uOwEP|x3YIvN+i;LA4&G*+4cMLFRXI7N7k6+mt8O{Mg`viQ z>=x?hXFF;?d)Up~%d)_m`e0+X81jwibx2mrD9_$VYmA^>NLPGMMl;)s@JOuN(_gO^ ze4TU~9oDTo1`2%=`NWS=@$^H~H0Eb3rv&^US+3|ax-~uW7E4mG);ljf4NX{tTGVIU zpQsH4n@pm~@ITvhrl}R!tK9UE)x=b!H?|%IhA8Uw^!de(Gj|VPM3T_-vbcKEOWUgg zBN{5nnOX9}Wl%e9YKvlezl`)qM)M(Y{WvcIsLvF~@aaw24NPCMs z_b3WIu42c?l4g_}%vnuBl=EMBtZokBvybHOXAKu&TOv%lKVSf&A51Rw zJPkOo+H|lpXiu~#c1hg<7kIv8Of{lep9Rk`d)(K4`^?ww0dUgoRyDdE#ZJBok5o7A zpa6;tl|(KZcMyNTS>JG$jUq=|7TEY_iE(1#5B|nhuJs)iq@*9!}^pJh_-&@8^o~ zUUTkn4;qz^W-~p>r?SvBj@!M?PE_P@^sV8M4XqBry{^m)WyDLk-6HjA6O7LP*;2^p ze^gIe%w`#^evL_blP%u?-%_$iu`Q3a*Bkt_rN|ukA^5Lr859}}9fDuq+@`r>>kf?R*+bIp8DtE2P zo3VW{g*!Kt?d7MVZJCaJk*L>Dzw}##UQq~rQpPN&6G)jsYpw@hmIw>jf^R#F!7cE` zY-B3`vB8Q$`w+I60m-I#4b}>~;?PaM7)O{{18S4>W1XCYDB>;@f!+!u?@Uh`6U z6g~(iW#4r>#?@OwuoAWMpn<4X^J4>5735jIU!=X$F3g7I660_yeS4)8AW6QheX<|R z;$o@jwD?-$OcS1uS*{3d+;3}Xh3i*uz~fRsyNq?mRoGNrP=i$?l`7ls{r(qpl{)g) z4*s#<KYi3)QWMc)AYb~>S=p^{r&CX2Fvd= z2f33dupQMy-Fg`F1l4HV$>lVF`dh8c)tc+`sQYeWAjoJGKK{YxPtOD#ENO!&1!-j8 z0l`DUkp#8?Q#63zmMi%jh|+9!^m3k?@D|T5MPhp_HY$0Tk=7ixAilg`R(lU~#1tX6 z^=`3$>`_I1;F@V3bBdj8yzgb##-2)_c$;_vGoPE_Yez2AxbGmo8sF8JF}9H89I?hi zm2Sd9reo8o+W_BG69aREW+R4fJsdwvNlGOgH_IrT#QX&qTa;QAb)~T4?mdodq9nxU zy^DjwzaDJEgA)gw)p&kQTU4Fh&Yv}b^-|x5Jr@}gYJkYZo6uYT$^4Cmz*1U|KYvM1 zjCBl^BkyRRH}mv#VHA-@2cv!N+kGLtMCu_4Aj~mLS+I zetk5>*$7DtQY-LOrP&|DRz<55pHajTWo3G)cHoAXKN{gLpJjWk>8M&DvL=;-THHD0 zSNQT%sDJOv$i$<8Zz|29=+obx!PR80@dUOvKvBzuk93hRM%rBaft{i6dS20FtJmHm zyaMTV42aiQi_BCj%&v$u_)Lq|n5CU5Mv8Az*-^=_pjBUfTrxj5Y{R6O3;IOnDhEC^ zpmlr!Gd`;TRjbwNC67fZ)$5hkYB?%I!Rck|=byqJ4++O$=O$&`nQhk|h8Xi%py*xq z-`aK9O~A|B-QzTZNFuXyb5h{qyXeAl>Qgul3Pq32BN^0cyto}#rw4rhdcBpi&x}Jq z#5o54=)pn$e|fzPoDBYr!xpM(tN*pO3I0k6m{($;*DDEJOO_1yY&Ng$fdXzp6QpIv z{>wUErvEF8Z~|;$<(<|Y=jC30bxX3WMqS18hptBc743LyG%&CyvSts&dvJO)+1y<} zolWff{xui9rkF5B)hF~Lu@*ym=Lgjo^)1J`2g6aP*y76t`MJWqWU^Bo9SM^_7P#{Tk#39O6 zd}xa3Z8#V44hD)hi5JPUXeRnqS*S8NRMEY&B??Uge7#nGXuW>Fd+2K6V=?Y?cHSm$ z-uh|`b$kBn7_HRAg`w4)L^?HloPlY09V1CORN~W0*Qk#%=#vg-GcP=$-Ho=qF$hc@ zbY=sBcSzXml32o5dX=MG&rcwI?EyQ?B;M2DDW=SXZ)xwvhhLE}1}z`sRa_T|ySV1P zu}868mSchXa_nh6-yXZ5)9HonEkw!FuNT6bp4s11$R)vH9lyno~TgvDF)f!fFF@Pp+I6XGQcik z{|mr8%xA0Q!?V9Cu>R2xL<)OwnJY3z#7c&v1c*SL5>B!6S7p!-d*>9HObqr}!vk-m z;4|B4n~5o+sFHFoK%I3g9r!`IAfzNw zE@WYE`Qg|fmQZQGb!FuQ9BYJ3Ngs07FDby4VN&3+X2=D)h3AIbUabZQ% z2Zvs(6!@*4#DP4u+sZSwmfvZ9M4(f|yCIB`^Hf-Qel;?}jJh2k@EZDidv-_|r5umV zgm&BtMV|VuwPjeiTn08rO|@ju8skS@jZ|LVoVqi0&3K(**SzwTIW4DB-CbgEr_5V+ zRy)D2%Q+%0w<|nlnGKPsRm_={v-S|){XKgdIZ{-9<^fUz3|>+olF!f+_4MM_ubYb* zwA0`EwkVbvj~4gl372nzzL2z9|90?qpEI=e`AeJ&_$SEf?;ZUAwT@OWa5DQass{eI zRG><=b!9wb^gq_9@ikGMfznZa_lE065VE<2DPL=6^2Ay-&1g$g7)CiZab1M#X6C}1 z!XMTn82OGKl}vBJOs(SMYJtNzM6b&Df1vI%H)W|}zu-*vU%cGAR&8@1y!?9T_VM`i z6YaYj=xT?V5x2vwFG7ux2NEXllPMEA>s4NuJy?}~rr<_rSrM)`IAZkZP-AUHcBpxp zCTZJ26BQ+@)KF~k+*oS18rsb+-0WU-Bp%JkNNuJ}yf}A)BHP+yQU*?ZX>g%~UK(+o zJ?W^Nw|f2aZ3_!)xf!hJS4S!4XWF0@v4GTMRwL!8Zn5GjTG;#?BfaPJSY^^SzpOGB z*({|fAL}iaBC923{H9q7dXrQZ^+xodY7y<{)?T=f>+;r>V82OYhb-6T^o)@yrRVnQ zaYqL-ddt$0mN@d&o{Dri8ci_IJ1ZKN!fA`Jr@&0sIVq7T^Q^e{tGFpJU3uC%iZ3d< zrV7%Bl2sd`G*NQz_bMMKHKqP{=cL6h{E8}(Bzfx5_+}btE>1U}#Z~_@9!qaX+7t2v z)Yg&oT#Ok#%{!BaIAxS_c;>UR?5t!2)nZhR-{|>Df_M&m#wU1fo=LjPit2KmqR?vw zhdN=k6+D%=$N0>8!p%IiJ+)svYLBQ5gI3x z*S#@k0-v$9uw8yGhYW-6KukZ7?gUQ#N7}6g0&&)Gc(9{?H6XRm9Q51p?e@!M8g%*u zg9U#}78t(lK$;9??&!HB=|}GW3#>^+igGI@RLnHRHci!U`H~0E$l5V<$@8PnPIW+0 zhGpR6Hd_|K2mS`eiaOn#b1^XM7%1RWMR55?0Bl3K!U98;Q&FjBjDyv&^^7H03UJs^ z_*07nNlotx0y+nr=6xL*xLR}?9PQ2~7HzA+95)gD%fCKydlP)w`eyl+<`?~_I}s~@ zM_3GQTl^mSGDbGLQMPULXY`T+J6dT{E60Aij))e6NL9fZiI6*w`6lDwvRsNC`t#G&EQ2FGubaA^SwWoBs)4aQJ4EzkbUz5b11TOcDl7b}Cjh1Ey zvfAo|@DXz1cj9i4l$7i6ZZX)XlXSiE3$v12SWLFH&!}3V{Om_gYb;qtkR7&Rtj4wD zn5JWfE<_X$g;qy9tE+msyLQGDYBQpm`>)Y_Hg+!V6Hkz9FDG<{6fv3+c3OdY6grr3 z)MyKVc<$JRX0lwS;_ITc;^n(AKx0``|@gR(}@%7v>EGIkpISF{1zeDNI%qdX$b#x{r-KH>%XpFWn%}I4;rY7yWM|L zK~;2>Q4P?2)V^VEu)uZ;O-`t3u;$q&u|TrVB@URK+5{13L1RHF)A^L>`hxVL%~7IU|`0<6_KH{`9#4D!?9I z8GH?V){F!b{TE=Nf)u%WP&sU{1Vf&jn?Y=jdvj(|JTYP=nn~8Hs@MjTrzI3oMTpJW zQ=63qe62nmhtox7QNnT|RF0Zm-AJAD*k-y&OG%h}aU?k2~ z_Yjjis|}_`x)AZ}AS*M{?`(7J=FYZP+ zuL4=|)P=4>l9dW`^J{D89OkD?H##X)huUqWDQ=%wzbi|7(p-IE&~fO!5bB19U;rrH z6n4*YlYf~BT%r0=()HD@)Ls|;yf}pyrFmK6Xv;&jpN1O4%EkSM)H^UzDPw=He^X)k zsz)-(6gKlU;k##MY5h4*Q`dkdX+`O3MRKinm&Fn*N3%zT@gC7_=C#!5A9bg^@<3Yb zq+g<6`$VCLgt3H)L}0OgnZ%L-h^cb%!UOdp?N51#Y$XoAg@P!AR}gTTan6}Gj9Z33 z!jKJQm}Hnmu#5Ox!l4Nx_2WUr{lH)xq$+03{lE!WoEU7Ar<2%eGcqj-xL;&RWEmX- znAVy()}6`LAh6N!+q67x7-c71zaK1LiN!#%5Vg( z=r4?QbRta~dYT;MO8wTUmPq@IS##FRiIU=@#?xE8xgpoRQz#5NQADN=y+O2Uh2FgG zfZ}(g)bcNqrLM@GmBuoPMj)ykI#P+ar~J_TNW$=eXcBs3u1@QPngBQ1pisp0rXs@t zl}p=9&Ycp&JJS6XXRUMacI#x`>8f!DV58_R=U>Cwd=;Sh=3_YX{m0>q@t=n?6$1xT zof>61T}v zxZXm^w!2@1oscrTt>)(uo4Jata;Nha+x~DP9*%5`Ik<)41m>4DV2iF_j!JN5$Q@hM zp}BNpX$Njr_PpVeAGtnn<&cV{%LJPtiZ?NkI}XjlZ~$4sRGym{?B!rVls!@DPJ}96 z${d!RU7v#GCfx>MJJK9pZSH424@cZ>i;E*0Flq{bi^HG2HL%v&i`zU=kc~YtF=1BZ zryGPfs*>r-gTRWCPLaD(nVR0Dq$MGH!k_DZ6_;(mZ!)lWl*l3J$`ZP+mwuv?$)KEG zr??17~%sxK+mwFKJv&@<8z;Lgdo3opGc`9fh}>CO zbb&rwX^+HMk7%ziNmXlGdbaflbU9sfY&I`Bc<;JW;IHW8=yWi%a_2O}N8sAx%H>14 zolB9pgt>hai3r6KZ3s6*tJNML{GgLGM66I6c84N@LFfJ1=oV;mfz|rP97db6yRREJ zGTA$Is8&9=tIwo#Ji?d1wh$irY90F{g%l%!_lG*oK4B>p^g(4E1S0gfu5D+f_e4d3 za7Ah20^L$!mA+}|3r4ZJ%)UGwSFNZA3fc#~-*r~`5r4WK zMbC6Z`xc+xWf~_(|D=eN>OLZ^DSy$r?owT<{rdR+XZFcLitsDMGx*^^=_kaWf_?;- z(8xxy3RqvUyUFpV$`FyZ%bbo3${yRrIFL^4IPL^5|^^f-<1B=M z5TB*q+52qG7Xd_PpL{e?0x`U9uwREGuVew${fA?wI&?-by6%zGDY?k~;=6k8kVIo+ zXa()rx!?5quc+Z3Z((IxUtsAdXZq>wA&BDa5Tb7I56{%s2;Bnd&SOS4%O3-bt_i(F zc%(~^UXm5??)mk$^DChZzDF=d$or60s_}9kR4dwCxvO816LftJBekT8ci0qtSF{@- zj3E(W&k7c^Bs?%fSg1wXU^A9VAb%L?CVmZtyQ1wIXVJAs08yv0X!oj*_tklm4R@Xm zo&6klxI5WfQuXQxuTI&VqvkqL$}4H4HeH_KZ45xl3x7qM)7&WR^$PaT`|z{y2sSZB zpe*Xp)2saD=rP5vrgo_*m!=1${^Yq%*3-|9PySm*#r)dn>YY6PF!ye^#5*MgZsA^ zu(1K~ADnCcUKI1!|Afqq%pHt@e{mcQtYi)B{td82#ZF4~e?}@g>}M424<*}M>^aZqgAs2i7pbMM62bUKh1d~a&;f(QM2@WS(Uycamue2<o z{LP=@Ot)A0604Zp4;w!)(VLzlUjLfHUC#~v15zmhQF{xfh)gXHD)5kYewNU79&Q=_ z4Q=u5plU;?BLEAaupTms7r=YB8Z_SN?{0uls$6`vY`CKP>HVZMoK8)ZtVe|`w_HO= zAOZv3VMZa+m_8X*xbEb^99wJoL1>hJb=QWhMz%ssSng*yK01??+=rKo6h#z&c(HC_ z8Am19W~%R98f zm8?Qq?jz)154u<{>_+*6#18gRZU3Ic{`aO3e?2f^wZ9x8%uURJ22THl^sAltq8VfQ z6k){=x^3sQwsX`nX_yA3d>6WbU(GD=4bPP1YuUC>o@?W`#GM6+#) z2x!-0ED<&PvG<^T2~V^n*yG#VE%cC?W}Z%wpd~nQv-MX`JLNg`GWEx&<^B7o&5@Vc zL-7Qnled*$!<|0(*SqTAWk1dg@P;85KCj0-IHK(>Ctw9 zH#3(kP+A^dh{9a1wc0?Tznm978rbbG9hBkveOVQY1QnL0l zH{HHY_A3VO_sW6Yy^@bg4CQ?M5hpysWrnFiKhKshQz4+b$dVSCom$6IkYcJ- zN|xX>A4*f;N;+*^NzGcR%^Ktl`DnH^TOZ^hnv5tX7k~5I;1UZ3t|g@=Uwqq8xv6QR z-Q~3+Gt}77zCF(&-=oGT7e_5SzMRiWo!()&N_KSRu){%-7F>vP>H`raRdEoSnBEb# z&v#~ZrKb^jz7IEUGIy6d!OX$9rq(dJOmL@Ob!4L%L566{JRdn6q~iD$punOROC*TNDWC@5R(I)LY{}j z+RidnDdN|-MAyiS*J&Nk44o_#{Z!HpR5CxcvivTIpNfSSJ$Lp<7|qBd!In0sIf(UZ zr=1g5m9Ec(fn5Q~&ZD!lG3g~1VE~O-r6U?mRduEttSad|s7lGGSRv529}QtnSks-^ zD&-S+#$1DJ;sE4Ho)IhFoV`n$MFh(YK2itaxry}?gH#Ph2m*$qEaZ!9MWZ66U)IFf z8yYh69A^u-tQ+O?JU!PoLq%AO-owrZ8RQ_ncpu(@ ze25SqFF!5LDwt25W6dx(97~{i3fF8(j}GZS(RDM?-~LLhYzY!F?9~sNOi2o;ltdK3 z)MMvH*TGmWWmbQK0~ZZ4NpMv{_9@%wvv1?1c4^AtRYRvDgJo`~T?Og7HF4`=G*3cfQR`tXs3#?P0;Pjb{_E4T z_Y!v)4m$V0uqH){=k}F@2F@5Mc*7dH^zJwq40ZE{6j_q{@2;6iA&K}v3eEaQ$ z3W&BTMNR`rcD~76X42%vfX$*^gN@g!P;~(ZUbhfoe_@!;fo> zK4uIVSq*Bfn{R=p)b&TGLh=#+RqnvB>02dCzQM@Q%5YIqa3)9J;|`6wwbANOrNd-Yp3xOmMQkK?ku0{sr)(p`>!kjnb%x;Bx2J0&Tbc2o2+=vR z@u?{6a1Ll$#e_Jvton7gM$5HMrqin}m%RJuuPVzed9?=rK__KG`KK!T_r?bQk1G3r zNXC-X{!Jn+lH@h#`MSCQH-`Rgz5$ySP6Ney4%|P{P`ezg+58#?!k|cwBB^bsi?*bs zWk(BRfhIQZ4(5FaiSQ4_-4^FOs+7{tgImvw&6iDHS5MZbm+kHMPczZV#1pWfA>?xa zhyl`HLRx9(=Kuj*KwNT`J!E5CmOWRS%F$G;(@rt~Zk@mW@18KCwBPmS89RBIOt= z^hkVyunEf+e-I)C>uj)?G2fk|D(I%`As-DV#zSQP*s@s+5!~5f5F|yX4 z(DpuRx7ulT(?FhKx)sai#%ki>xsyKrp->doGmW}tPhT;BBQ-i*!d!>JZ^Kb9y}d}U zZs|KJppJX=>;+FzQUundml_uwrnKxV`%SG)d5b((u&H9RdgT4sy{2LJiD~W^l44PL zr+a7Xb6IES2mZvvb36$f844cgHs|>{0$Uq1JuNFrEWEl1H4`=<`bI}64rDq1(rR~Q zXU2;a;P>E{#rYzt+vAN=7m;%1COkQR2bytLcV`DdXe!=qwKNgQBm}KLH6xc^)EbIO zTN(C2CyT1RQAy@~BLk>EjOUNP*OWQOL$QWt|SYZF}=@SIiGF_4USIeW~;e0HbnsH)P`DkA&rIH=St9Ye=n zj$cL=#be1X3NcGh@;WG=Bri`?R7JErJT?3yw7tAVbI<~#xuivP5VviqG;Q94mz~zR z7Ddv;T!@+)gxuK(*D0hLMvxK2?_JzZg>fNiR7*9dglUX%<#ZWAiY4^~*~u2)5qt4n zmc=stn&ZYJo}sTO#jc<1E~4p;-%tsjI^#yY2Nh6r2)KKhNWh`mME+0t!*S|ms7j9Xv^a^^U*j}jXF1= zYTQogY*F0iyhDeRl_%eTm<@pdkOjDzDKS9lzXMp}EE!}3bKF|AL>VwQS$_D)Shm15 z;@X&+ea#9!`DxLDODwQtsSzZAu>A9TKU6Rjz)Zu>lkE_Dp$70^ks9-&5ofZJ3)0${ zZii;8Fw%$)S=lj2#=%WC3?=UWavayk5RBh%1C?Na)UOxJ*DnAS(QEQSIwgzb62l=x zBJG`lO!;88Qex`?fTZIbJ4Z|$S2nDAaHL`2{Rseh<_`QJOfCQ^02({nz%3b+#MHDi z%fx@p9emJ#*b5J+=J<&x8vJ&vDmf$1@$Aj^c1Qm+Z6)In%aYWhWv!tcpE@E$uV%fu{gs*y-qgC%H=ivEO^csJUV*Cc9D;t;YZOKj;Mt)|LLeFnW z#tB?Je~cR6h-=`Ip`RCE%iJ+}sb>kh&9)!CQ?xWRgxVz-RqdH)?T^~U69q(jWL{fR z>%;1;prkU0^ok-zwo76kiTu^W<4^ z4V8LaFY`ZLOAgE@97@Um>W7qq&5`&+?xoWwj`sL#V#QZJI=3}bMYv$;hKtp)qPTZz zF52;w6lb`F_?c2kyoAa$4majKXoXDasH9>WX}46;D*K-3_O)9c{;3$($43l@(l$y% z$Y*yiLLk&_=0Pw=Eof=&P!gXo#h=Oxd&4Kt0uqyo)qPF_vv@}+LJ`+mW8sCj}{L;E5X zLiqcmxy@T5|J#uVIUuT2{R4#kiug~3>+gZse-*C(Jsb+z8oB?6FQeh^g*J@wzLa7_ z3~eA3z#Z_3H`(|rSKw!WB>gxG)k>WO9`rXY*SMwVuM$F95OUfQ)wf;qKeBIC)(R@k zzvbEEefcaj&)ONkrM_0=n$h%Bf96?F>mH>pCinEVpW)4V(fPFB$(heA|9Sut|I`3- zr^VE&9SAQ}qif!QqE*uXH5e9Rlvik2i`HY*1xl$)fBh93NTWWUEeFe9)srokT&}D2 zy`DWew6s}zWrbQitBmj1%9SF%Oj(W#n6_7$v1Vic{QCC8|J-ky_mJrR4ifsUw-@xy z*R~`CYNT^|UH;trJ&s|P;Ap4zOwa!NH3ff_MVwzH8PDW23Y&s(&WB{R%Y zhbv7nkcT6hG{aIjwp&+J7|lCB78v&M~EXJ40&FnG%AU zypM43o$PUfj$|~jjBKIrUfTU|ynO{N69{4kWDPD{`4NVE8e9-hvF>=fZ(V;X|wWG$0| z_{SF~h_~pYsn*0yOf?B!P;FF`T1#otcBZz)-QTqfNE&|3(TL}(@H@~Hk{tq_2R>{B z;#BA=jjJPm8@6HMHN29NqK~W)2dR>=VHbzruWcX%b62|D&b5kDNoueN=XNX5q9)@| z2p{c9&{ciTOEkw-nnT^kD}o+YHmV^pr2A@{`wn2RER_~Z`W8JDpeV|Y9*(Uo1?-B~ z)^!;?#c0>%_Fi-9AD?srd{&pq;aqijb3(8_C@(@tUg=0m+Hs&DH6Zl0I0z=glk`DJ zE#V*!)G$;@01u0#fk&!XDK}!drW%g_e5N2-Gw*6<#W?5?!opwx5_pO|4I}6G7x)tw z8b5d6B^5dJd!U38IfgdhVIzZ(fcGmtKq{KLFyQ8-I2dYyZT1*H!hYp&NU}(r-!lOi zHsU5SRboF#YKm%2c=5GH*6Q09o_g?zc)U}F)Cm-7DRYtz?KK$e2U-XzWI3Ta!AJ-j zMZWk#QkG}oNz;lW8tn#nI+qcn?#URNW3TMVIMBDC%AWk4nncx+RA~LCNAz8f{Ko(f zF?ZefFbh+wGdhc)XHwbL*s>t%v(E?=QLvfn*cc(j9PFyC95exDvs{(<_{uED7(+pd z20Ceqh;yBBX?I&A6F#;^V=bH$PLU5{`xXyFWimMGA`sL^-PEiWQ`u=QLkHy~G`UWv zUn85P9wO4|7Or<{Kj-ilr#o42R)~18m@%G;1~k{2*O5YWf2R;XUYKv}P!CTZ=1{yF~liP}BEAQUPny*g9_$ zakZwHz=SsPh@h(E>{3s8opm;kvj#=_HMWiscE`l+&~Y9AwCCqDNfU-;IuMQC&%T89 zMqY)cx?$DiDwmJ+5tB7_^9aKz*eQPp)#Vf?EtXO1LK3CEfSe=8rrb9hddbQPhqlUv zcw>#5>x}&-ud4uL=@e57kKWMNNfSZm#R#K`G7AqYn{;{>6AJw3#-Uwh?3~{l73{n= z^@pzM&pANzE;B?qnJvIxFQ+(C5lZrTCb0Dn(IShu4P!;Y_eV*Z>ge%#3!FM2eex=( zkM`8ez|2^qzb3jjN_}lMCf}t(Jd5D2Whis@siY3^i zV=Nl)%7Qoj5*PFP_$3doP|I}m2W266{mO%v&y94tYc!e{$A$USWToE@t6v(s&n<$0 zagcZQrX73BdRT2^`f^LF#7*!c^BsxFD;6XSAToJ`=@++NiGjuzuoTV&eX8RiyJQZY zX5t&UR1FrllDHN@MOuyRE5@O);u-;(XX-z4^%rA*P$b-g8CfzLiTg2Wx_a#5KZ4`U zgYkv4L4f`g972;+qsMRrV1*YA!%ouN==ZLj z?u-RuZh;|RUW`8@qx$5n{1S|r9u~rG+=3xo^LgKk9}+EQn~zz3f4^nWwVCxS!#z&< z>F)vi2Nmck*|qdVT*8KJL@^!<&nRf`1mT)$Gy-tFN%q||7TB;Bfp9Gl?~1#JGFSDB zhWM3||8Xf7j(wrpViH6xe))NSc6h#1b3xY7w?%JkH>^HEB4~N<>h0GWz7MiZbz9&8 zUfC3>H@-81>Orhc^;BNaB4r%R!PVsRF@Clc|Bvq9muJCc_+4@Rt`3iw?G`^viwVgn zY>Q1$BK>$DttIKDD&y9?7t%}YRkTaoOCd`T6i#wodNviZhHdLZBVx9VQF4(&NJDb6 zdmY_hi6eZNZ)7mR9>|9J=w6v)OzT(ZD15R8J+7`Y=+ZZnitV=~a;OBULs5ORT<^Qt zDSQ9CPuc>*_kAqx+=z%pQILAVwT>@b53Ynk)0?qag9{pNEO@FE8G0bdbeoxCsv~=*(Y%;|DsP;d;bV;;~;e?Wza4G!!i0@<5q|hsv_uRLBd%Q++y|_>;0yD1Ebe&7PP>rt?G-w6Z zu5u`y2BX}5NIL7#$!v!=A4T%Fzd&H z-SPo?Aq0~@%#WZxwmW~n5%_!Q>;Gu^By6pWj2*r?JDJ%!n0x#;=ZYk?7j1Oa4*-sV zm5vl#Pk2BTEd^2&g%+NbA)*Dcf*yth7ookMrES8h9YRm4-qVFsxxTI;L$?Cm=_)Kc zFUKSMz2x}C1WL;Q>n_B5+P(WG`@-vhcbmK3_s`AA#i!%gcm*1Rpui+lHA$+J8Zn`u zz(&+1X*ZFt(Zw|S1~Gm*@~Xb9oRb{zmkM2!GqzWJF`MCcjn0kQmM5Pjc>9=TmnX6c z)<8~D>0*-xq`3s@GLtjHVlw3N^!)U);BasJ5byfpmg=rQMg1aHs`N|PXO<)d)>RzU zWy0X73JIsL%SY{mBI?n=zz1tT(u(w@i$Q9A2JC50lnsY9X-<}H?V_@&S{lrYn__f% z6z4F0eTeK&>&ICxc$Iic!wVuxX9_#u$$@l?KI~Q^R?@S2Z#6dfvztIED-~z>*t0t; zVq>W=5wrFW#pv+{jtrHDTPm-l^%tRx$*?jCZVIb5pdqaG&K0(}l)v+h3H<1i;bBo( zJxPv+0%jU<{Pwjw+6&qrVFl(ZQqEsx(i$~PrLrP-RE3k!x_n^F!d zDo{^7w9fsqysa;wJ?xHc8d8)y1l)X&M-2_hbmqlkvOAvd%Ic=N<#Lq$a-It{<}(3! z^_CDGUJC_}D#jvyyzLBJZlRg5ms_%^p$bh6#8I4D37V(22!#X|>N*Gs0-1}=Wr5z4 zS|ZZ1u5+}^<@-&hSlUN;W7$1xr^=-=`!+wqtu_PDN@gUKndN~5HOj)vRx`)Kiz!om^~|3-8NkRmC(dC zm;BBh{2{N=wt~ICJ@%%-(lX4_JpaL&tShKvdj1Ag``l8@uh{A%F?Cg`$nLm~ds>O) zw3Fpc<@6J7*?z`nt0^b18=0vandhO%=NGAqdqC}`as$hTf>8x`FO z9|cDbeQc$#22dAiL6p%%UkAh^TA zCo!@zQG+6hlf-1)px^Kbnt8}B5QP2FW*p$?QT4EL9SgzOw#)=2Fq{rX0IFF#E`*Tg z2{Y|;Q#?D}=7YT5l0XDl&nrztL@hHhXn!GX7}4p`J5Z&)iv8Y`c;1)2W zc7;~0Ba1J0+1jeLuP|e$4aArIbdKAIHIcVkGmC^gA}&W@9$-I=H~*?8D>`s z(FHOF1_jHMANSIKo1qX167#~%EeCWX(6ha&icjXO_@anzrJJ922RW+OrV=E#Wj-bU z+(xHJ+$EK9255dDYnLfx6uJ+mzzUv50$`+p#Q@ zzY4_N@Z3CjmZEr^)z>9ps7`tHo6INe;%B%L4`td`2A4dm!?E<`#b_G-jJLg0(nx&( z?f9GQamlFWrmW@d1BUD7P*l34m-tJAdhRr;SSC05Lfr-5wfA}3ZahOGtBzD8aQZ<_ znb5T8LTm%)f!lMPDM*i}V*G6Jlro5R(WOGY0%na`aeIA=oUU-Ekus+#4^l32cUOrx z$d=-A7TsfH`T&iKHwa?k#Q+@3#F{92*NRY8xiqm4t5d`wEtI2GA;7#SLg{g|s5o_> ztDz-Mv#Q@Ab&t9BA@JXn$#ntzwf7H_0oy-PCVBpmWbofM&;PD8O2#I}4#qbB<)s;= zY$-plkM1*8m6(U;pzIGu;$&Pe*J>5eESpIFB`kt0P+s?eMM{cyeQJd9nwG5YgOTCt zn|Rf+set{aFUa?yUftNve1Cp>gZ9JU8bU!sj-NLsa)k{1ee0w6Rb-3Nfwj#>Bltnc zPowJ8=;rCS5C`R#Cw~H_5KW%-8mD#>4d?I$Tm+NF&wxXh`RmMtcwHd)j`Kc-Jl{TC zi>Sp>nLJq^V-FR*C>=b zl5fCESgsr0cqM9zFkM3rMlCq8P|>EvA*;4L5nk+mDkZY>eL(Im^k|E{Y=`?j8`!B* zYkui}2q|N-*eMJq-K4Bu-cah3XIW*+qUuOD`-|7_oio_@N;BG0t==NDPE5;XmWy$mEA1f7v)OGslc{k_HJCoJz zgrrm+?U~^6OPfyjOXKp8tpI*z!{eON6k)0Oc-#!>Lhi#S|MX+6do6o~v3gSK! zuW4vduV}~)wV#ZzK{Hmzc ziqfA_i}Q!olRif2R7Xzd^wuvS)=OxqR7DbGW^v8F%3WwADQ$?ITuYtr`(OjCa2QVE z6k-?pB}i6Z$pw=QpLG>fFJ-!I%yDK6fl(urht0kK?+%2aFp)JQz6GLWQzKU+2(qI* zem>5!srK!A5xmSJ94Nk^?F!C1hrPP-`IldKxTPKa)W^Z_eh^sx{^yd16lqRhXnZrJ77}!JEBR zZD~wR4OMbpPP1^%Jy+wNL$cB{qhRTY!e`oJvZkvaadrYDx7WnlcR~ipZcvA3)t!Ch z(V&K#Q5pAv3@r|^-E(DhIN`lC{kb<8V=Ciyeb2hqwb<(b4y*d)rqx!UC0Vq?YQMv|Z%z+o|G| z+EtQA zYQfRa_?S2-+{7-*Cy6t})fdjaS0ud;nR4x=(MW%Kl-`J_e2Jgq-Dn$eD?ep}Ww^^{ zlx`qe?7yG4vMbGuTN;x$2 z-N^3ea6Iq*)8-4gK5>bi?wO*6UN73fR+(b0uzBx0 zjgjliOR4K18~#~BflK$Tj5JRBt%(iePu~}0;sJ_VdpXr6_fkb~kfEfTaWHW~$w8!Ne{*j_nhiHzS-yz2!bl@Ux@QLI=xkw_s~p`? z@u^bsN%yi!czXi)Y*p%e7lK4umS7lZ+6|E&tnsQ5`@vGKRvyoei zHBl>CN|EH$$yj+beC{ff5Q0sX=Wk>8h3Ks`rl;B06IkwMQy456Mdl`lvg%m*+3Nb$ zPN|ib9?{jEcilJgS`v>&7vEDvOPW{VdABzJ3g0E9`7|chrnos+e>s>Jgo`wPfNa1&=64rHd+-f%Pa47aYxyi9xAgHCByQYe;evpE*0N+n>{izG^r=@ zWf~hcIO!3xN`PZ?w1o<5hrrPZBtT6IEnGa%h{!)?R|gOoW^kovv12y}ll1oK^2^YU z?@HT6J4rp-^H|wqRZ(y=9Q23i@LkG;j7*NJ*<9cNl6}V>UBX2bz`eL_r!R8D#6q%0 zbF)w5N2PyF$*iy^1Y48P=M-Ca8NMbTAJpn6T){=FkmHj(1?=)5%;~w=Wg19i0Um~mnRR-nf>G4%la5)kdv$IYbLWNhU2jdk>~3>L5%j6v z6p884kh+vXZyA@~3z{0qG_CtwZAs?4)Ut|tcnrGMi%Q3cJjHGFeYT`A2J_2qqZV!n zr-WRot~Mb&HlJ+kBCBfA2u)T)Sun?iIN!{R*+VUzbCFPzfwqjPVpU$09gO88&2TeI z((^(+b;r5+>FsWlayO0)W$RdyZ)?i$*JHCHA>8W@Ry$9*%3;0(KD{tVsl!(N#+7JT zul+G7T?I4ty4}ET%>>&d!WglGtB$vl01B(qcv|#FT?Nzrs{Rh^i#4=bLdMe1(m4I_ z`thSxT@H;_o3u$&nS(j7dfiM=81@bAbp9b78ARO%d+P8sKiIYIpHWbZrnp<|-gpy& z??;4G7$JygT|NTc5h5zvQSXCF?;~-20m6PR-#w^oGJZAR6f{2=!tY1pVljvO5*Lpl zppC>pB#H+7Ucbxw`8)4J-urXc$Pf*hkbiBv&HrUZaaWXBfQ4K0Vj>34_H3Z5m%eGO;<4 ze91X7Y?O!riqZHB3P(v@l$gR46GSOOsb~|%QFyXfNjtK(FfxVuoI*jTABB=mv4uGY zNTY`FI+74lcI4P3*c8y1zL^JLqf+tfQddN62_|qTiX?%HWY&@ll2rRbfkATwifdn`y#*~1 zsV+f^_;MQ|d8FLpW+1>CK|pK;1=|p*o-$jM;u+^3Ey??51H6y4o+M#N9rP3ZPM4;xE>qmy4ao-lcsARoly^xOPoDWxU|Y)|na;j>zJN?-6=?-j~9}58oYdyZJrm7W;;H$o>oMkUbbrMHaqZv>>CR*%A;fxQ4t#g~twf&&>j#zx_I}JyH&#Ee&eYq2 z9lU*oANFQ%Qa8v$IiLbRZ%g`8m_OjYO}{kkRABid=$iPzbmrV1_d#O$gZRYWV)k+G z5BKt5`9o)Ze=~J}-LDCRA2RqlZT#kXGZ@(e(j9us*|(1E56j#8vi?2h*1gwpXdAqR z<%7V3bpQHijp5tZ8;BtRFmtR=sLtrym_7;YPcU7;OUX`Fq(4M=@~uWMEOrlcril-u zN6>9XA7A7)sGaef`VG#|bAWN=HUtBcAJ2*@FZ9;%3;s?~?B3{gWH+BS>L!u5<)VXzkzvx?_>T1en7eL8e;tFKCweF)C0n3^rpibhQk*zOymn zSqfu5sp_icI-K6pl8r1bb1pRyaV1lJjd4#g2q8L$7PE+V-S2|so^P$pwqIdOx8zn+ zT6L9;b}z!~T@DlB&6Y0yhWO8b7L*ZRaR^K$x2l!j79aTV<2ERL5$W8)$J2mVgiW>RCb#-G6_`|hmgqYR+a zyqEcnGH8>ylQyUsiCZ`{#K9KoRm4L9>N;r#>s)%}o9TXIkYJ^Cv4JoX$Ncn^UdzEl zrfUXRnS!vp0e=k+toqc9oNKp*wv}`#iTPw$V7nqx@eKVURjGEkb=JZ!h_&^aG+}&B zrv*3d#XImkQ-<>5S~3?ntOo71e1Z}VPRWwe?K0f}FbFv2iYHr3e!1Y{O)mA3*m~xQ zVol?|rPP&v{1k^v4`NQn1!Pi{2~0UxA6DaS59XxlqD^Xw7MGk@q%1T`k?C(Lr`vPC zEB$KhHfk!2%bZDU%fjHqvVjY4&|f);GrglW3oO{shS@;V;(L4PjyjdnT`h#9UnO|% zCc%rGTwXSk3b@$xNth~umMGe#dE2ak!cT&(NOt^(*d=KfL3Y~d*%)L($*f`tjjNJ6 zf#JTNVqzBCnM-)-@D`N~iY8+uk9U;8(cA5!$aB=$#^gLGI78{C_(dAvG z$1%&+xJ%MV#f5-6JYMqf2b~etYV<}=!!Xd*<(&B`Yd%l8=_j%~&$z`q-(Z`#Q4!3! z{w*&y%M7*}EoZ*>HXGpv0{gJyLh*y?64iW~0w*J~D- z)$By2g?Y^Rbjw4r7_+lsFCPsu{fzU2_I6w{yh@Ryrqo6lET4~pIWo4Q){X4AbdHW1Ozrq}Y>Pkhm|F;OoY#T> z@Y2=CcU%d^nW>B=A;jjHFWh~+$nmhd|G>*VG;1z9JT`KJIkgP)>YM+3yvs1L zPwUq6FreGr9(d2MV`b+NH-7xnw%M!?wZMo`fogS_xegdGo)4>_AnYo4%z6b}&NMX? z5>}MdMqPIT_FZ39uR*-UITx~&OjDj%8W8Gy>{pECuPx^0A1P|t!%*ahny>ruDO~fn z-a1=!-rGD?sCS?6C&rH<3Xlo5mDb)A`sF)W-<#gTs;R*#Yc={_XUcXELcWere;b(@ zcStAhV+wGF@%0EnZ_L-~lT$?7_<;c~f#rpz?HCn^xUXM*h(5qnlN*tj0Sx1fg1a`i z2(JE)5)#N$m-{`{Fvu{`FmspbO2vT>MwSDc4&2@C;~$jA7P=*+=zYiB#Bg3^54F+Z{G6ys^Nt z^r4T0^TP@0Rp@8y)xhc=yMYJVIr~KHuET8`YMN*oy?_7^vHb>aSVMAH-$)|qBBpmc z;I@sa*!TBeSOCkX0N>t`8JPmp-rAl&V>!CJW9|uI@;H>^j0kKuG`G0H%aeWtE;-P^ z4V$fix85tlGXKt6BkoCC%*V4ZFy?n#&qR#(Nvrv-b$vFJh%aN$`sIFCtukgHrZdQ2Qge6=CV4-K)*~FxKczO*Ju`Xs zYB^4O!0FjqG7C!dYlX)t%gZ&i->7n28D6ndpmgBarYabE#2Db#;yb>-&Y;24jTy8v z!F>!l8Q)Qk^fwW+eeR{D8+GUwueB|zU5ld2OB8NCTYoCU7`{vR39@Ils@-4>8H-!2 zPaXn)WCgJWnUh*tM17|Way!31gv0H(B*DH3Maw}?N-Y;&&>j0=1bOv0repK3rw4KD zowD;c=fA%YKjTpvpz=Xh@RcoR+}gop9LdkFk&69%QnVi|=%A7uCg&*_UKfd}+}A+M zDIneb7JhZoaXK1?sLVS)ZpXTbX?O3+=4-cQ`wQ3WJ2G)OUl$$M0tElDT@a^=4}7N& zgDdo`$6PhPD0b95gqB|4{GkuW3uWXLiNRq)^&P94X?wKpVTSHus*GMf-TD|M{vkTA zO0w-k%4PY;mAfe^ulkHym$Djubt!?n8Y0&OdE{&L}|NnN`0A4e`~@&+lijUPF+`rVs32%8Z@FPwhg1mX>T>{7k9Qd$hxJK#xq*O z@Fww&-OM-|w^KMAcr+jX!h1OaXtYG2SpOO2Z+Or0*G-AI4RB9FrsCpcX=g5NZ)s=h z^l!`$R$iChS47k6D3hy_z-`)Mv~99V$6)cj6}uG@QUoIe6Wf+w*Cb`9mcmO_NMlUZ z2rlb~djauFY*o-vYMkp`eeRkXz#l*40PH0VoP728-&=^d9Trgh%_gwl9279 z-2Z&hZ_xyc9bYFzf6&cja?5^9T#^d0l*(lm(RW$pB0S%lv)<%WCSYG zNSX)&1q;w92~NOQcJc9=M+80+II;l`VBv zN$Z+z*I#ZajEa{v4P&v++0Pm8dYFwYH=ZCZ-86nz^7itoxJhB#U%p*;J;7NUWvQ|w zuC$)3Y2tr$Qe&Ch)oJ|0{5pcAdCP&jW%R!${QP&1xPO@6zbfHBKYqN90;&?y@Mp

      !Qj3h^AS}?0jA#gF1`7qnho_O!)R8O0MIo#cs|OSE&e<;3U2MUB9=KWJ+IJR1s}O)BxJ32dES*d;Cmfciv`CtTai_q2j5 zkbOvoTsldVnGPCeT$s6VlpofE%gDmucve{x88%=AO<9TJQl_c@C(SIifcBElF~s(s zey`~&tt9zae*cVPqIXj>arjx!LVfv5{lpAzN%KgYX4@K(Pk$c#s zH-aWsG6u_{C1DJxn-pHM59zJnjeg_}k1}L;T78(b>xa#CO`TTiPxgZNIiWpFwmP>9 z&1Y+w*Nv{+$py>uM3~ExZ_AcN$yhYaMi)l0!Qmdq)z5;=iwg|dm^dtk1UusTwweJ# z3bMJX9LU)(Nxwp7LMd`Lmc%oa2s!bzqB;M#;dau-cX@5 zD!#t-mrg*TgJba(M%%!4C2-frP@jpA@HcGmZ8#?wFu!Am{&tbIq7ab{^m!%TH;WFy zMC|h;Gp?P~dk;LF_+^YFx2wuN*|{BHdC@QFXY=E@R2=_;tfr`lO;ezFZiFM+U>;xj z0MqZg%i^VxcdAZ$>F&q)sJ+KX?bj520_F>2ham^ZNSv#s*li&RJ7GxHSFG~gzN_u+ zHXJhn_I82U0wMuv;|z&C!hb5&ad=un1GwE4`s*bU&0o(fMMGn2Qxnnu_YJSDs*DQI zt@C59SS}Pm9BZi=1mNn~?0 zQ>5KHF~b}3S({X>xw+HTDA2ES%6+=)bXs6r{R`Z8^&xre4imftM_oZh8QIpS>@P|( z6VaYB@`92X`1{Q6MWv#&o~#V<`;t4N>Vh7HM(UZcpkU!(9=X=|M7SKd{>>Ju zWvwP@(`lEAiH?QxQ^w=^Oi*!0sm`kosXy=!qB6)UbeWG!eYQ%ck1JWgNfaWF#fz;{ zozpU6vTNfTK+>ITT5`Qv*_t)WlGEsOhoin-1ShnauDEi1Eh;t8?F?lC>p2fHBg846troKd5n4b_7F4zl5qd`B|9{X-kv8 z(#Nbes08P54aP~Sb}^J24)|6@62eNu?VvtLoM|m05Q1)jr4-xiX~#f4^SdHi$*!74 zl6ZLX8>dEVTQN}-bFh^}TU#a3PuLCJLfAcDjImE|-4g!y1(4jB*a(W6D4%$-W=Z=l zC}l8y zzxG&NkO?&^TCEb!6Ww;v#KN!q(^?7&s-@#pj}l~NBIwcbg;6;lDX!+`224;@^dqpn zL`kIP=0#At%(5C`8pr;a%lZtyBl=ayo4iLFFN7i%asK}LZjTJ(C+R2QA8=f-W822GA4)PJA_4bjdJtK!YyGR#VIl@HK7|$?7;lPKS`d1i-c!0^dBU` zSf!GbW!ENp)0|U}JDsN{-r7Gtz6yeP2AUNKpbn|~>`GJw-BQHRkVK~5crdP2UOO^6 zkqYaI=Lj#U;`$js7j)<_R4wcFOA-oo3Cmw_OJ_IdGE?c*fMm1|5}%gIm8l`ln9lXmp#u| zJh*{^jaTDH3{>G}te12G+anU(6a!xNyMEd-1VtPRQ!pB_It&hP^N+%y#Th|qt*OjN zigp4fs~p4ALRd1gySwKno>OZly}FuMUh$1?(R$-g(JB64dXp9?hCoecNWj9w&%?I4d*Femfz>s+n-;UelP+ophTee)0ooxJ(PrP zJ2}sH^M5^)Jrq_C%Z`VYnbBG607$=zIN$F#T-E0t+eKt~mh2qiwGfd74LgO{olUty zKN<(jCa-Qa${H%SD2VLCAsH6^ zWJf9Sn8->`?H6FlAC6a>xI09w;#sCeqk;f1Ok3z zJ@2r$7q>5hb%}1>6K)WC*17U=;o=18NLSHH}8Zm`2Qh zzEA~f#Kr8e`(X7U@kf78#U}+Cv*iexYDRxYyNA1G_30(b_W*~5Ba3L)QP-bA5)b`S zDgn=_pboFlucH%~WF~4I1bI|dwY4U=O|=yi#5nSY!1V#7TRO2esdN)yRS#v(J^PHC zE%}1}M6fjKN4INTdI*qUEhFK7516yi_CXDWXH(w3k}s5gF~NNAyt>FYC)7xOVy;!~ z7njjP&dAgYS|o|n3(^X_J-!myrts^tdUv-tI7vn#{21Uwaz#@SYD+l*WoWt2-4KnZ zk$t!{q>o$ssV{#jN+D@koKyje{P`y)Aj3tmuS?y{UDf5hyCY-~xm7~xyeV^U&p+hp z1lNT;+2=J(Lk~Ge$+kmCr|FmNV(lEwd?j9<7ME~AiltSwdo?7>%^hib`MOWDQT2&J z!noH-(UPx|q}ogyBhWW^xb3tGIGVcd&w1M3v8)~L$A9pua5lEMHJPlM-F9vu**?;U z<6oV-7Bw2=7vb15yVko}G2Ht1da!Rvf@pvbfIUE+pgYL*x`OzE{(*+L^Shitf*Tuk z(-Co+@{iaC6Wf|PT<3IH7MU;$-N{K9XkBQz0Dn@j`F$Pc>sxu?HA)XE}Mh2wr-iQuBT}5CGevKQw za`G6_k1{Q>s5cB8{lW0W?0yxBZKCwWTZn1uhCE|%)$7M#>fAs+ioif-Jh$i(>yC7) zT+Fx03M1xSltoe#u4k}YVMTa6<5Q^Vbj@!m;#yMWlxms~{d=`{U&9bXskY-Rs05IC zgz|IojN8I6;pc9Y#q~IrCy5Tca8jC z=VTQ61(6_cKEv-63A)j@?S*E;HKM}$B4$I8_mhCxsS!oCYtsG0^&xktoFCwz>N~)VKL_$`U8^o4}~RCB43|>T?p57YuidkOTzN4TV9I zNEL>%#gRLSW>X=}55Qrtqylj2Dv~zDvN534+uo?iVumx|wuo74@L$(tFmbzp1e^i2fyKzMOK0Pe;LxiyC3lIMo zh}$-x>ILK<;>T?|;N%P>erv#@`0t~^|J4s`XY!9B7f=xTpZOrs-hNIIZ72r;7`ee> z3Tmg)(iWxc5X|MuZCpP=9*^{Cn0!;8$TJ779b9kXhr0a=Vz$>SX>^p)^-uf;eXyKi z((J*8_tksWeWtheRn7Lc|Cf=yurE286I^Z@y#p!$whQwEtHb&q)SKmta2-RkubaEx z$pu9#+cNg)+KVf!ntFnT{TG)YerDevbtOYNoXr4BvRSTO8b!Xv>pDPQtyWV?USWCm zt9_}qLUs|yOnsB4bK)wsU2REPty!j0%=3uRtOFXH>QltYw0yeC`qrqmm!B<7<*MJ| zL@G+` zRE%Gx9Ec2oM~y|l30KMk(d(uAOq}3{ZB=xTn?V`wj@n@CewjYZSKbs!59tRTg*FY| zQRhh+5A@mN)|ZgX?PUbErt&oOCY`OLP?BJoESH5qecgPb8U+uP{%>~DslAaw)<|S8 zOccbSTF`zIj?WmJ5h$RoxPo}J8)Si@M5A&vp_cp+!bjq}X6&I@b3%Jpvj!&XG^}*7 zta8gMSbStB6Oswyab}5xpaeY2c&GENm5q)DQopr590GBN6;;xhCHY&pZzPeh|=4f39vDa$~9uBUB1xlVMfpI`kxL?9XDsQ-+cCk>Yd0Tu6D`xFV55+is5fk+ z*KR&;B9a&shc#J-aRWTWTE~yYC8*L{aH}m-f{weW?ZVSLx~$XH2<5mQ!+I3m>Qgvt==5{?`6eIY&s4jLy8e&3|8*o8;`DchPE zPkN@5ZRRA!$r##}<9^(WyG-zGHS{fHVP1~2?y1sAG`fTWR{|%6Q3X#y(^W?@PSv_B zFysnx`SNT}36-;`?2EC~=<{h|kh|fT)~#qy`T{LPTBnVZw z{pN6{D@k|Z^g_0I8nlfFqJY=A32|fzX&kcht*TxYIp?`Y5SS0gf=gEFy0?j@r6o=oGGv zr@op}o&Ln`QJ(uMLeI-J;JWvSLGVjJ%Lll#OgHvlGA(`;c4{;Uq!4G<}2T}eZ6z0CQ3 z9%3tprbsdy1^XEW`w8k{pp!>Z#T4#cpPhIJ6_Q97=kaeDp-S&jkJ} z+Rd`FMD<|a%hiwgrV|)9IbT1TLJy{QEA}OTmIU}6TLZMb+#(J1%euDFBCQo41o{Br ztfyKn!Qkixz?!J;$0Ew+q@G`ZjJB{BA9(*A#tKP^h_qa=&lDV9lBQJRSL+E{o=iYc z1<3f|-4lcEW%EEiErNSCwi*cHL95A?9k5Bys_GK>fOjnyHC>_g)2P(}4}nOSOS>zwYW zj3ErWX*i#LC;&vdg^2v+&er_oPlNVb{ZVG_MO+7@3q>Qf*!$Z!2YOCD~fJs8^r zs@FMW{|}{DZuyGf2rO#Rziu1=UCi^4hJFq6ZgBMq=hVlu??=`y}O;S z`QGQ=-X4F${_x{Pok4;V!|Nc+J#Ds3dtxf`A|c-S&YKZ_;N(eK_q`Y%gg%M)e5m2K zOXNO43P7+4oz%iNW>=K-)lZsKeQK$yb=NG$h%u^_&j{9{*hWg>ux#eHvcYUqq8)jY zB#kNATGySoEScZq8K>+|{K(TTH-24?ea@?|S?kHlduR@=3saAIJ(xjOPMF+5~P)d6N? zTVV3gH=zmEPc#Ny!ow=r(rTPid}EX=RVKFmw-3urzr0P(ghlbozD-)6;GcbxrBir1 z8YB}ld?0C$W7)Y^?9K=-kmquBMP8|Ku0N8jcO2Xn4=ZVOJDziJwjY9A^qHUCew{y- zet`Xan zcaR#Af?~mO5F8S6adgoNiL}Fxf^x!%cZ7kFD2EfMuANd!6D4CV*&t(!c z@0-87K*Qe=!&A_SvloYjcSQ%yPoxe)8*!)FM)vq+c8CiKeh8^O4kel-H<47Ui3IZl zAPDPqjFE*PC`!Exlztd*d%vu5R`nT(dp8D+Xo%TT?Tu0-b21f`M#=N`1V};lgs6)> za!s3YGTqKv3gsyLX>6xoliY$J&{XmcLP;(U1wot@2^GHsArMw-lR=z??K&UO8%ndV zhem91Y{^~b@eJavxm4jdEZ<4W2)ntyGby6W8>e-jIn(8*QS{yW>LVQRlf;ZhvmJrp zDVuUZ5W7Sw5t5arg>KIhc^*$b-rZtJN+89wJ@Q_uDF{3TzUN<@-&-wBLmYS=;0zQO z{&&v*-xK!!MVXvzWG$Utq(uKi@`3j8K#~Lm8crL|k1`O&+(v)wzI=|8OeKYdzBj1GcN zCp$c|>wn|8ix#^s>T*T}+OLX_QCHq}p6XPKkRbRUYFNN++W8G?y1~jnxh_5UWZ)Jb zlSQTlLx$CJh+Lm0f`8QaezoSKOgK`G`E>Xrf8=o8CR8%1nVpkutXNTxA-6u3#y<^h z6=mKR4p;+@113hyk>P z0u>t<=vInciGUzK5KbJV!5@+87A$MIFj#0zWJJUT_yAD2G!ITwmmPId?OfQEU&Pt`5BNBI(Ub?<$fQ`hdXfQD zlqVWjsdCu)^%;NQB z|1Rk)H9cS&EtVfbkll*SpnC1nQu>@QC$7bSf_80qZ1e0F+dzvOXDRuVOB?s~&EPWk z4|u;HfJlvRq*Cmx+V-6{5@pw`7ZmXE><>p=*WO#l@BA5WkIywdAgKXq0}*gPt%{L$ zynf)qQ69;yKiJ2XFIyF=>y1}>!T}(jF-5qTud&iHIz zEC1+h(BI;RkXc%{*X=Py+MI6H@85L}5<2L-6v>Y7h1eDOZhpt=skuJkl4*(3&2#P9 z!C4PX_t!l{^qsH69s-?fw%2a!loQvm-z>5DSV1IZm6TVN8*+@=C~mOT=&3l%w!h81 zT4ikuz8jO>s^(_*o!>iO2;OHY^mZ<29`;rldz2&pIT?dry;glZH49vlFIvw*kmA z;~lj7Q-e~-GvjW;gBnoulN{vxJ)vu6p~8J1I3x}SZn#ZRm7+-bRlX@nEXvm1Z)gLG z&zT?7*6Xj+o0%!QQyY-qZvd!T-bI&Q#zI(fn^X^S-D?^fOY87>)rxUld}|qLs1sO5 z58|JcN4xZ8braQmmbVL6a+BqsdaAlPmv`9J_<%TpTtBnv-3|7v-}~I|)7F$% zv?ner2JG*}la;iwv1&}=)Zmy*RXgBtR9OAFfyiWNok11Clhl&C@Zgk8qzjzjokfB} z>oEG5OhN8waQo>$&OwjBI|bm-387vTdjlic?8dN$^M9_WvGa6KHArBga_be>?A(#VA}+_jlX0|)esf8 z0BwrY`XQfRxa4|d=sGT#N_`&v407rJ`lh$lNU)mAe+FG>MPU-ywMLSRFM;DwAqM5U`25*g6RaFUXOzeaVU5yx6;fw80{7s^D(kMgLP?WXm* z-Nh%n@V%DN--BAIdl^@ZMvno8e0YN6?fO{5y6)IIYN=SaLMdlDEV|kDqfgEDrH13Q z=CMc3Q*u;p2Pz_U?=CWFYu)h^@9vs2@b#MUBg!D1e%tsEw_KR%n@}Q0aRzzfS;;*yt zS&|Qf|FIG=?=ojG&=O?5Rv@}K)O@<^eBXGwNI|oFbV@p%oXXA2hW0ON4rq2 z)#)QhKXLgvhYBij{(Tt@*-pdeyVpGobtli0f8zFdw&tC`PpuP8gkyU^*XvBk51-S~ zklZBqQO1*)MU^^^XE4(9FB;p}IrBiD3EQ_ObQ^uaNv=0o6KKkE`l2Zg2Actm?gG)S zzRE{h2UFOh#Xmjsni}w|POku+<;GoHawW_b$=Yfa5!^p)jeDUXT^4gQk+C7~-^R9> z;bH!;+epX)IN%&)munFryob5GrGJJ9ag=az3~a4(h&o13dZI(dD$Yhl*f7+!O_-^Q zAr5;nRqhda|8fYJMCUN3LD(-3hpMi_)(Eo-nhXlpkAB?aem{;p1VT9#@)x;>0tTNL z?R=Fy6#zCAZ$2eH@!b!RKMJDT`D&j5C*dEkyDa&Z@36|`8wSXSQ7#bhxZ8-fnpH=)p(pTQ9YjK^wxVruQ! zUh95Or@oySh({3-=q`zo{ALm36op1y0ucep&6p$R22_f3hH46Q2S^Q$erZjRw`&pm z3@S?^+Kfh3n@gy$T(gdq2jku|eNc2}orjo5i(@cScNm4d*qJdwex_0#+HF+o--JQ_ z0R0DfWpd!q8G)_%0TizO_g4J-uqUP>F607~tQxtxnEub=Vqskw$R{Co1n|7_(L@D% zQHe%`8qt)L6#HPpRRzPf&Gugsmu0`0J64pPh zRj~ekKR#ys0*xkOp*F+Km83Mo(vwTnSeWD@(vm}UqE5Tk?MLVKSYK9;kQ^OUlpFE2E7!W5-c3|!YJjalcj>a8>0&cMqz|pw z&{EIt&966F zN8e^{I!#Pb_yC7ItHWU|6KC#D;z3HMvs$Y}+vmC;nUQB(td}9F))pt}j^C19Xs$dy z>@pn=lI3&!Ff&Bot2kvRs5y?dS>pBnm;%_Rqi=6X7H2q*Yvg~}4W@f9_%^fRcl(Lr zbRgYt^M%q1>B8@6BQ2v(6n?xfMZhFesyq%A9g;`w?Jay3hUVkXD}hOd21y0E#8RD- zG0%y$kAlyMFvRQ6N&FclXAy)LMQW1`8HK_o=N!SprWD$MF-BoM;Aj)sGf5^J!E2Mr zjwADwS0BakL>@vr8s&4!;U$7SAodi+7)9}v&5kWGNvjlP3P^!ji#O8;LrZ%ue)AbT zNHSTyvy7!LA97@j_H*)v9&%-%yk6*))j}F zt-$yF#q?(Mv{uH3W^diYj0uD zHOgmPnWk1*Q#4;gr9p6%N;zQ&o4@)ZNej~5QY-T;=b@}ekQG{fBGLC$M4Ra$ z)WPj2(|H=Gj{*K|3i$VYenAqS3nKtQ$Pv(Q(gF3tbQNhy0fUoJn@ljjhMkaPRnY$& zIN}3SW{(oIVi<;l`NKL9jq9mHE^FJ=-8DYvHh{r2pmFMBmvHD@oX1StP4fLmJZ^Fs z`kd^3?x>!t0lcXiDQdWR16_d`sd{nkFdWYl@uX8TFoJnVUPx+vE=smB*Ssw6ON!^m zmmW(~;dQe67y~ zI=E?Omhe(bu4p^92-;z`*+xE-%yd1ddx1mj@e+(D z_E<~D{K08>t7`YX7590!z4__c_VZXV*bVI9*OVJr6<^(1NNx>&gm_o+`kn$qMYzpZ zUO#y?1nKc?IXmJN*((lidsiO-=1f3CHjhl+Xhz#b++KYkG&p}u=i&T{% z^o@8&=oZt+JQ;CLJeKNRgqUKJ(A4Bv$ec+17f<+( z)Lvt|qt>+Jqckwi>9#tmU5FUFJ!DSU4c?TUK9w*WI;m9AppREm730Py6s(i{7%Fwr zJ(=zlNiIi3P!7wYULj-$k>B9g=HHS?JtD^JTWM~J6GbYM>XgvJ1)IL!)?Dk9v_`zu zD-WFuLWgBD-l#KWmwzWw6StA1+9jV(snza}U{Uv@0g-^VN4S0Z;RfDL&ENm{RkTMv z1J!Y(iZds73D{0sy3h`96WF;ytK1H;yyn{lJ^-gW{VR!FDK0PF?(j4(F3Ddv*r6>M z--b~^wu*x^HY7$hcBH_^G;3@J1^(%&@p4)37hq2*{}n#|KDhnUQ~&EOB1?5#8C3|4 zFN+AZpNJ7TIP`12JjGdPI0@AVsTC6u3Sn?{NMV$56e}}p-9nSV?idZHjWN(&?$CO_ zAGnKPEcHzQQ3cJ{%5>T0f6ktNcDp-#U4Q-p;Xohc6_Sf1r+VWBZqKri!)!Z`Yig0h z#1cM!joF%Y6mHFb1PK4e;lyQUj)l{(A+u6#9y)(^b+@ON{WQcEa&tCiYLO?mHaY3c zdA!1anRmn!!n1$ixv}@$Dp%OuG4xfW1&*hJk}kp=-kLXue#Y?4F#VVpII(drOHwo1 zudRj!TAF%f=M^|9-^j|utdr2&tFq$Qe$3pfVWnqo+fvE%R{#@?dETjPTeAmU0Zot( zw+k17i(NNO%;bkHA$ctvmNfi5L#H*9yH~bZ=?QFljLd^bo0-j4*{!Z@sI#)u#5~TP z_t~duh@xZ%T#FyTHAbzTa6=FW^d*X$Qwo`7iS2cZtyyj?L-~WW3-rjNimF{rrdL9)tY0hi2#Jr> z)1}#CN@t_s7E&9js_ZRVF>=TdmeU6*M6i^X5xp8BKJO$$K8YWnpBdtZKS+NscZ^wx z)2~n(bN-=jHV6s&%F_RhssMy$Fdq!3kC=PWG{_-wNAoKh9%2D( z3E*Uis1K=+sjrRcNwE@=5=tCu3Muke9i}<7I3T}Q6RRuLLKKV=T0U(1tT17hq%;)t zi^va~h((TFDzc9#?CS8WkX%g=zBNiJ1>`w?VQQY-j%{^p+qT^?D>gc| z?R4x;$F|X7Cz)T3lR!9G5rS}adC98cQJGM@5q#+3LKe)(ci-{Tj?t? zK$rsOy^A(LF)*0&4cnpB&}}g;lC@R~s%Sc!JCT3oJy`}{rCZwA?*4#Mk}~RwBLqPHTdjCZNm|rWOSZA!|_^rD(*lBS(ekbpS`BE zO}IZ~))ostPkoozYsa6lZr3E~tXIHkbeQLJI4kXUv_?v4g6l}kS)FykiI`dU5bo5P zBIJZyIgV;KD&8vPn3%pPGshvD)4aX;UX{qnwki|Hl&qV~3ihi$HB-vgPio!{U9^tV z(wwtC0%mE%(T1a=*ThZcXAosuDi=bu&J9jD975d#E|Y5JE=Hs2^;#)%kLv8Qo6Z(_ z{0t}EMQXkjH|)ss`WY-}HI67(_#EYmp=YkQ|CRQGP; zL)b3V&1F%3Qvx&>i#OCNx{@x>I(pM>c6Mlx5*bEkED_ds$i5tlJx9bJ2URN{1>Qp( zv#}Icc|Vn^=h)N7s;zwwLU0`xb2ln*C=nC28{v{agq3~)&q!PhvZ}h#Iz{5Ji{t34 zJHlh3KRJErr)i?T9w^#|XZ*Th27wBR-b7No4LvaM4VH}>R0I8qnRHUks3yA45-+%o zWKtf7A3JR>dTk&E#zitcJw{;XY%nyY(bxmAHME^>G9|`eZXDWBn-btNFgebR^rCXB zkcFdgL|g*Ga8GtI9k;(go2W!o6SM=7qv~l1m8}v$@5Az52sU;CBG)NF5hC z7zIZM*IgztBPI^s{)8qK$(CdYoj0!Dk~Bwo2KGyFhv@o_eLRL-qW47-=V~n%9+hW~ zy}i4Y|7hJuG3)Ve83>&1%&>cN}1`l>}?J zd)_1nC&#x`&nHgJDjbBLxlBxb!6>24+T(nb9vX9~wwQ+()o(Yv^a36!(VM>Y8slWx zlF!Ph#yVLlJc8ColXAc6n|2DXr$nA}icTYF?PK=lu)lb&l&wpwG-~N}F!!2cjK;vB ztO+7@V71p@MG?Br<}!ERbMs4!?YeNb*s7oKC*HZ3-0$+b^bQfm^ohM8^`DbjUci0~ z#bBD4E*Q))(Fv-^*9$7$4i83zVEKbVV2^Npn7ad0lV~AM*A6ua6J<9OnhZ**b z4dt)>W+>Lo3WGq{9Wj+17XxW`9w|=8F9m`aWkmPYXUWNoZ=3~xq<{R;0#2K<1 zUppUq*Q1kdB8`;>8P=B^(H_~G0<9v6$s6jRMR8Y|=^I{g?M=i?i*U7BN`-|dQqjm+T_Sq0E!YMPEw|f1*5g)c$qL84j}q7H%JUTo`l= z4)-~<4vXc~E|prbV^Oorhj*g}n7JunlW zfkfQf+V0a**=~K}OH2k52RzytgpoO3dfgDbG9$Ad$0W{+yRsTzJF%pMw57=O#!QT2 zx?g-88~nNNkS<0>l&5plK@@p&;vtdpF=}~^J=?eRw3u(CspK!*N$m8}8%gLW?B-pf(Qn-aDOM@{KX9KPigt@gDq@pA#8671m@iSd(cr$$7Nm#`CY*ZFS6XT zx2bHq8rjyW`(Za0Q?*IEc^tl{WFOjTzF5Su;$w&kc$$own|1F$Ti;xAyKdxg1#|bu zbN|kxHGZnG8H2puPw5gYF(lzitZI&CiAGNqMmW=M;csx6gtd2R2==L7UG`l&E>56U z9SX#DemOd(=jDz^aq6|^Q&DOSh+R`tA*ggHpe) z7Ny*HulC_CQUNR+l}R+|l(m-TE$UWPPC$WO%5#UwPt3s`yV)oewyJTFL1s676RDME z8S^E3&4XpL>dSP#qNVB+IroEp*G<~Bjuz`%(z!YqJfsnCU7YFrz!ZW@&rY;6!}TaZ znQ$==CB_d=Jhl~r!Lu2*35C?<-vt&78+jT+10yBnE0aGW;drKIJnbW45TeM;B6(U2 zAM4DkaN=&F_>4v$Ruk)VL{tX|VSFgglj{ryKwzLK@QtwzPHo8V;8j4r6I-V^6K80@ zJX((VF+cZetgmP`TnldY!lnSwcLXj&;4a{(Idjh8PB&P%NK(&-cds&HABXG-0MX|l z>s^YM??+%Z58PkB+LK+eoIMNPY_73w1+2{kXTq5Nw6L1{m_#hMLx?A74Oz_BaE&kn ztKmh}0rE3~Qqyqx5CbO?Hyg98FAh0@Vm@qa6y4;jWobJqV9U)+}b4D6DqT zrlJPJ&X4%sfyqL}9|L{i4+5`fRYEF;>8Se_H>4A~sAvGNhAo}nwF;w6*sobd@l?e(a=FT()+FaNbtYz8?g2>L8U2oKMo_D`!Qrn>( zG_0+s?|m%Uyb3jo4r4W??UM)elJ32`Xq=h+{qlA|7bsjzVCgJ`Zs_7OAkNE_Z>71w zVIwBwBPGw%c)kR?fHs-2wApZ`02&)B`MqL{TzKigtaKrt!VFiofFl}0UPTX$xFmz4 zhAM`yJ5|kqR_x}%ESrS6q{fkt z6Lfw5lm)KS!Y+z6s}p0c%1;1o!Af6k9&GMy_VwfkqS7Ow(xNg$3z*Y66RCAZW-em2 zWd=DL#66BV4>Fhf{gAfElr|2gQsavuF?J3vy?Xfw8~L&dly&YYN95eIgYAhDIQ6UW zfOLhDtko-ZHcKezbAY$K+rv?N9`KC z$SCW=L>JiI#5=f}p0mCQO9)iCyw)$geIpgXvQx?P=c1~>(#A?S6VSnGa`l>kX;xMJ z{CyR}{xK(k@KK~pzp4^&S$(FBeqQ?{1D7D9a=7bTPY2S=sR9l~W`Xvw{W7uPlb|x4 z!4L_K9yi?{J1A?1QL>R_5j@V3>Aj=LXnu@&cAC>CEK~d;3LHe;LpTjnZYTNh&@*42 zA(BB>ZD!|B{_DGx)CEYb6xsb{q3=mJM~95SgMPYvhXedD_5!ztF?i!jjuBbXF#4fw zFfMFl{SmLIEQ%Z^pV00zuuB49q<^7-%nBi;D&v3A+s~3xg|inCiZX|_We4p@A-e7j z5q(Dd=(t6zhIld=r`+`-Uk-E2|1QLldZ)keQ$nC%zkYjaC+v;i8}>LFW0q)QPdF=K zkc@C<#|ZJxORSd$!qZq^2l3Ry)7dj=bU`tadQ&3G7t(KZ71!CbQ*PT>~^36ZZpFGSXkr6O-IsVGH z`2QBVz~cB{kQ^wl`vV--ILMx1mOR);rNhEWJmh9VSc?~=r;9(d45YU7>*=Udy;Av| zni$wo_8S95_e3vWJZ6(LLs#m-&pKfK6q6qk)r6X6>Z)NyZXIFt-ODo7h1!(B0dW z4LL5ZSN@tphYJDHqd)UUj4E-q!d(ggQM>#=-2Nx8P>zofi%#P+;?PZRWV+pn1Z`8* zx8!x>W6o+-!%baI)JhlzlW$%^6WCxuhPKZ6vpJl3lpUM6N{x%P(l~k_BbZ2G!W&4a z3d#{L!97TWG_nSZc79>l9Urk#sfQD@YB*wh@6jjKF*_MyeV0L>r)~>q4;h6*+7v?@ zr&wzc*XR|52aI4O$(y7sQ)el6%0f+0<7Bx>c8Wt)P!-tj#jLsCNFW0+bf1A?JGB>^ zVgScV^y|Di%HdFx;#D`YU;}M4tIV~R+JGpvJhoSoyaGcTP3c-d1Fgx^OBQ5FQ=lt4>;xBS+s?{qOgxKL9WKF+C z@s%AR-(Xjr6ojEpG1v=*gWy04ax`XRKp>zTh5LndmACuMcG?Q_(U#G_w=uSafQpo( zuXBGAw1;()4aYNK?LbL#YN3`0YhxG+jnOwc8`i_|6S*_ijeKQQ1rKW@8!Cn;8elz$ zW-o$zJPt5QAw+OZEQ!x8<9R`O43>zUT@_PBj|nu&b*DX*2IE=0y6%k--3Shle*>`~ zd~fRrI{MtDYhoir0_LV1r6UF=4(h}a(Z&@0EtY6DHG(&Hbj1^~9uqKJRcCR-9G!tr zXj{?qLZ55b-xx=;v@G<3WqBXCWOic;=5iM4AIh32$u+F#;9n@Bfh?S&4RR8T&6p}6 zFD7R7jk@|pj8hOIfY#BJJG7Ew8%0~(A@kf_F%KrdN($dm3jv9!#h5X8iqO^U(}KNg|xY zM2Ino9QWGr9HgQ37UehE>31A!0ah);Z(Ym_g)2XZqAtxrtuo+)n%X}b%?l|U#W+pX zQHV7RoY2XiTCy6h#!0BcKv{C~eI}caYu%0Y!H?gc@||~F&AlT(^*WS`UN1|3WHlOJ zpKTDuWKghqaHFGoL13Yiqa<3K@|v1un~DP*@aR}Hc`=v)p%4y3Y|=^`{&w5k{x>)) zmZM_;O@R{}`{BMT+gjFgY|M9Q?$ermf(@x(Sz;4bghkWnaB;nKYNmDoyjJIx#o|=1 z1*G}R3vAMo6?2OU3)`~BEjb+=yLse2SB2=IEIJce&Sv%Sm}d>rf)c)C>yKm1LsM~h ztqhEe`S5S!d!hWPtNw7-X2eESO*ZJlcfoyQw}veYOO-3$-fh4WF{(dZ09Mgat8f;) z)8Agirsux7&SQmi$Yap`Xz2)EFIdEh8>Woizt`HBJEB2zr@wMG!%w{lj*-9_HSHoV zk{+30jhpZkmuQT^#HmJAfPe4(g+)F@+vkoeF-unew5?v`6@De-L!ta)Y3l*lnlAm> zXWz9|D;5n{bbp{<9$%z=SqM{y*biR(Sshf-fAjOAqW(f{X}epFamUrRcF(S50763D zrE~Ly)(X(RGp*S*e>2|797Ck>AiecG zDva9wnoxFp<9}La_@aS<*Gg}cXQxzMa^nPn(p5@4zN6MvvyBW2tKbMtQnt-(jnNg^ z2&=Gzf3&IO_(>1;)JebJ<`wnWv1T5mNJOtI}P{%MF4Gikzqif6v4{msT zA*dQB?0rZ6;Dt66VR$n95$>*;9R+aOBUN8y;b2K=co*y=$K=5c=vBw)!3*eBmLa3y z!3dP%YZNF35g%Xtg4&cZ=xJiT2=2{2W|@FnKXr-xuum{AaWMJedIet)@b(18@Vv)e zQ6U^e2aecPU})y<+Fp2ha*3;IicGZLz<${rrz>eB((UdvG{LvQnugB!gcD~#{w~5a zqJ*sz*(x+c_(t^uIg8r(B|){1e;SKfB~V}Nfh%)LPw_oek%F(EiTz1#fM+#g7500; z%!>ioyFeeyi(b)|iS`@N6ZO)NUF!Gcs%3TUY#&*Y=I~yYEM7q6+%_z$Y?}^gXdwyZ z_b*<_#IK=}gd|O%^`R-_F=~98{fqMtY>TrvZ5`EY^mg~Zw|_`&d3i2B7DjhL&$Er` zOMMkzthBMrl0r99kydUNaeYIrtL09$v^rm{f3fpg^c(+ifw|A63dDk zyKOPW^92DHO+MR}c3XhJ?|cH+%4)B6sG;_e?<8doEmxoF3`V2Yr8D>Xp73JPMku~^ zSxE6RMO#EM6>#$FI_)Zv#MjB=M}CsmNWM>uIKFgMfgdUMwie1A#AL@WTSjoNmS*N= zDTsEsO92RaPn({CxK@_;e|)^BYXVh!fKu8TxW6s>|K7r=D5<%aIV(80TK)G-Mk=s{ zLDN9@X9Rky=jzXswoNx=nRCJWpI-F|_G$2_ zpsh_dy$mD0eK~FK#8bZIWS-3Sx%>=VfVy1r%Kyde)JgMa&a!?7h`jGfJC zx6nDp%;Vs23ebvliFR;Yi_UWQrEhIIy>CV5w$sHorS=A$)OUm~VYWAKkTzV1m>)ZM@_ypR9 zp6fUtnk8!Dx0liytq#4#fnabmQ^=w1{ivA|=|z+cMWDE;rJ0%DL(iKhc8)Ieci`$vgvQi6i&gpFYtvLFXX0@QE|!?g!`B zkZ9fg7qtnOt|4{>*Su7}m&9K0?oYjHF~UzoQ(F8fBIvIi*^qn`oX>{wQ#ANyF9u<4 z_~nGb(=dD^r6ItMRggu28VTPTLu>%*4-t2Ru~(EUp|IT?b87)OC;U% zQlm}`a*A^#eofYH%}-kMWwsO!_dO(?G{+O3Bub7 zeAFg>smd-$m!AG)!AW9huB5eFVoez|mtE!y$5>-YDcz`Vl9hMsZmB7&QB!?*h_6Uh z9(0kLFw}hCDDFIxDcZbAM$6T+!bd-g^D^=_PXoXfM@L3tqmi&y{dm_`HP@WM3dimp zN_Md;yOZ3f7WnYhd0u@4OO@1Bei=PJS{cV@iE#<-<1S3U)=Cl;qJ@m3fkB-|-A#WG zWJ9&W3BRuKDhrhO-%rm#84mjcHs8$;YenHQ>td;W_OLg%}HmD+F z*3jx6Fx2YaQnUtn{V5~8fNyIrUnz-+iKz``0;#v70xRL^o>3&y&7=@^-g6Lkc05S~ zsX;{131KJGD>>;VP58*b0VWiuAqvZ5LfiZF=-wWkfa&-5|S)_CMjEd_XXE=nuO4R z$s+FE4$O7o>**t#rs_t2WCuAlTw0PUHrh`sc8K)tE564_EWIZv;3O440bRk&W!Gvf zGC{6eryHL`!D5ujt8Rhhb&^z4X2K2^Z^>;L`m{yTz|q|7*=3Zswqf;H*1 zRHk6oYtJcH>H&y!D(qs?Ddp|Zk}A}aD2En6;Z`6$RNSqUXWr4ey>E6w(845=Bx>I| z-XTu2%v3(3hqjG%WwhRT^&ZL}j@H&5eQNk=cs=p8iw+5!G7r0S#}@dHXyN-aFZZV^ znh%)eI&IeGCL1;v^ivRjH4HwYsuz_4s!Fv4Xlz8&B1Dyxd3Wbug+`mysfy zap9vwR&qtdOZugR1+7o*A#WxMzVX(+vsR|Db?B+VN!V>w;2k8V$yeK}B6Rn|nMuW) z7_&u6`pNWhZYuvwFuBov#2djIWQlVFQ2`AG6$4oSB?r;K20Xs&nZ^kN?!J=j51(`Z zpGyZ9bMmHTmSsb6Lcp+i!DodyW$edxfwrc8ghFV%+q0V~&pyf9%>wtTa<{3f^6pLm zp1QgLp8F^>LFVs=0Nw@{)SBInP~>!QL0?qxNm=M^NDT*PC)ok=OUHU_F?3nd0nNkR zo=B~p%t1ZIOQ%F+l>Vql8zr$|vyPE9b#ck;6fJLZYy?;-XH;Qar{?zUTk zITbmYEo8en?@ROo#zOG}_!UIL7EQR{cQ;*p3)EHunc^iOF-gCJ_o>nfJfK?n4_VaE z^FI$}Fb)hOD$o4Rs^5S1nJiAKZ|0o8`h7lll_!IhXj~D}EFkF0otqcg33~8|Gsd|X zPskFKE;;G5B9*OaY4QsmNt=)(1R@^R$DfjWX>H^m%M8uNFN^HJhf?ydv_F==*FT_x zjFGFGv)O<0sR#ssZ>4_!GVfK15CVH!AAg-&g-dLOC>5vPRlRCn~`W^^l4vBFE6AcFhej-4!+0L zx#`Z3+xxV(_$dOqVyGO$-MuOs^qZ^a2YE|7=^Q&2hF{=v;$l0jba(+(?Vu`;lThZX zoH;T)7HbX0s~OrQ{suhy53fn+m3- z-k@W=)ffZ1%{N;4&Op43^_%%wA--Y6&~g`TR|UJkj-bcTao27K2S(-Mb2ai{9thzTQnb?Y8Qp1~!n zn-5_x{G#*4g&W{hd*kIl!B2@RkS%xhCHJGg5L@uQw)sI*xgvi@oSdU8FeN-K-=-~8 z00HcH89Ah2$1EH~&PIv3NO-s^oTPY#YxJ6jsH?;X+ks8j0%$%Jr09T17Ni4z#k#J} z5>ypMr)jKd?Ao%URzo>nP8@=b_2`$$9JlDm)4n9e^?Kr)=0kOI}vl$ z!qtm&Gd+z+uz--@OB4c64J2|>OmuVk$e%}ob=%H(03|SL6XvsprM|3^dbiG zs28+!`R{)9NKYtb$3l+`)vw>}Pvm`#*y}i+plMn}`rGnsu%MM?-bH;^0Nk#M}>R*amOjkTH^ znnu|(?~8o>ikhslfY4)>IdH~CaKrvGxMXesiz@`7i1EvyZmus)-nW?uS@K#!h))*q zHAHNck53?sOEm5-Vl>T(fm{Ec3Usm=`CAXVM(l%LUgHM&M8h}i9lP8X23-bRdD~X9 zoqxjLjj72XAK3m<{?$V2^Z&o_|G!(`lq4Gfdn)XaJhB*(a#GuEbgu9Z>fsfXJ&ci1 zIYuc=-H`^ds}ARIixX|pi6lSt-|+hRP7RjE_aktEDL4FKI5~zQw#kp#tyi@(cMsXQ zSAqimkV?alqGC)}VK)$>=k<=_*P$evw#^=A)l-mQMMq45bmZM$mAaAF-$BgsK5F^|NsrUUjO7@dl?J~z>caKfpPXH13dXsOf z^^dh`>&h!`c$>x`i`R&CL~Qj^GDSRIldt3VJda3|GzQm>h?$*1+{j&{2@fCYG7!18 zE}c|yV#IOnplZU(Kz>F;FdckYb%49RiDsU#+(r0Pc8{ASfljGOyPivzKy&H(Vv>F? z$uG%ha-(T-iwyf?mu}*Zrk50fqh`DJ+L7nWC3f<K60%Ch#VRxy!dmHlDC!8NpQvM)fJdp-`fnpIdGtX)h7C{MvQ+a>H%9Ipz-(rNGkp% z3#n~s;EDf1py}y#PLPbh8p~VJWXTT#R)25`>BtmG&@7e~f>bh&)#>TFldL$-9=$^e z>_qq6$jr=v$NqR2hWbGMfd4gZABYJ}m7aVzwZXgfcDR|**%dcZ zIlsPZl7O{C?$Ru$!GartkWYSw={A__lI1(EqFFeiwH&U}Znn10e%@x0e!?yKQCM$%+_IDI&6$qFlz|~UU4`+~V9|~^c%!FWM>=?- zrx7>rG0BTD!FY=*x|mn)38=QfSEj`Yl1dv~?vfyd{~E$&%E!f#?F4H-m)`meU%j7X z-1XUmH|PB@1>d0DG2nxdooa3~qpPjj{lRc|V=_dqKBzQXqd60Od;-pUnw3C*^|OEY zU9~Gr$R?~^a2lUYKP@&XscuV8Nx_Sa7kE8>w%Kek;_3fv!6ZN;!MC3$A-2oUF zDxeS&IrX|DbOF_yVu-wpWJeyx4|UU+n}e&pm8~qoXK_gQvMkdwh|qLz;n8Qfa_O7- z;~n0Vq*1+Hb2oyNO9ixD!Bu3YQX>P4xJ1P&D@OrmC(MIOgmx0bCW@e;5`R@kjwlhz zq-f+C!=;V2Jldv<8_aF0d4oLf0+K9&>wEc3xQ-;W;PyCi*gXpRgP%R?2k+B?sH!7o8alP5ilc-OuL!KZsHQMdIL6RT+_m19 z*`P|;4oCT*7>}^44p11b&{RxjQbW0Gd%EMHwm@D`N^n!~uH~=jn`usnDy)##1%W=G zr4YWfCQ46`iOB`9bU{^tub={$*BOCb@CZcE>8XiBqJLD9kx;B-GvBcXvf&BxJa#|@ zP?@D$k3)6#Rc)eDK*Bk{aA~2)RHAu|sT5ElkTe9ct-=-mm@D9yv{rdV+i)wsUB#@z z1#qoU4%N!1tVO;e7**i?T(sUUU}4Z29=PKEU?WU4Qz-EV@#|T>A;7uUS_#fU934>e zedD(u9oS)@FI_Xa@SjxTLG7RvFVWmzK{}2V|85;GqsF&6AanV3i1YnT=M^UY#W-;t za>O_BIzAFoz`z=gBJ;F%Pq!y7$QQvN*Hmrtb&)oPwx?nzS}?aMadB6r7gZv4-BuO# z8-Zm}y`*YkSO{sTH+9CE*%lAzD>ft7Pby3F&NW8ttk{!Qmeq9q0tWcG?`PP>O>oHt z^#c9HvFZ0`oxeff&akC^II$2_kYyls&CDr&-~y~2E2-`Cmn}kDEq?V~Y5Z0VrLb`f zKDha(yj`K(W1<0b4fJ2j+uubk|H(IU|GLloC*72&|7-mU3YT?If}uTEVMSxsNPwa=M5AqQt7<4twy!VaA1SS)wdJmrH_m|VpozkAN2?}h< zN1HCwF8Wv98Nc6V9D2d9gExX@89Zf$icn|3+t7hC`QdA+-HQpi^>bHX*`@7DPbXWY z9X9AHT)3cXXZnv>E!|J`1dF3s{aOdOn3E z^izz*tRz|(gp^e-e+sTaI)ThuNAj{dgUMHK7hRD0mvzTas+NA^!8e{0(B_`qoK~!F+mQxbci*_XQ@G}^5*h24@fAL3%{bX^ za&SnzE%gV_EF1NHQ%xqAHorNh;t)o=`hpPK?e6w3B0UcueXD&VEZDCy@k$*8Sj4(W z3uTAYP->%&QEoCLm&J9_Zo(tEAl9?rKZN7w(a&ZTVj?{CWPD$aqrw{bi)tD=QyaDY z_4qMfPI#pRqMQ|mm$EQJzoe#4hK;o{p>uWh2Z;(|Xl)gFe^R}zcF7nmT@TPlP}_VS zQ_TAw>HHwXs5!mvb$}nhUqpu$wU~u z5~fmZqs-%uc}7(jFuvb`zKw~Y`o6RUNLJxiFs+`;@zUWl*oW8x7M{ey{Z*mdl-L61 z>52KypHjVOG099!Rr6zZoX#SJ>Xz?3ERS8lDw|^Hs8^maUewoN^Q$6V;Ulh&B;~N#Pgj zm6#I|qD@^UqEUPYw`V5Q+U6$6JZrnrLVL7aNTTV+*U-EX;7iaPP($8Zg z9jFvTE{PI=sP9)MVMQ9hPyiJ#wrWJ=Fuy3M+r?0{(@{VEk#Do0hmm0ebI#$v@@-)1 z0scrk_lo@U;oo1lz;_2{3npU+H+vH=6C)Q_TQepj7kd^aGZz;iTm%M={s|iR!u@~z z-QQMFEwj1Csef2B*x^@Xr>6~JnGWUYOyzY6Vp`?t!iCa1vc}Wb zPGPZHqnIH}H~~?;`L*oH#w-i_Sc3OOnYmzevwc>@C@Z_np4vkdtj*rR0X)Q7-g@^ZxD51 zJR-$b2U?1FQG_aR)v+7=9OmHg;WwtVJ1g>pr}ca3Nt_RA@ku|rbA?PdI;%#LoXkA( z4!O_r-KAJEjIqn7F#%=?S0W-#tDz5CD$)*BJosOF2`irE)mX4~H)*l(tH<@v)M(&X z@>(>^$s}YJ(BP9(X*hBo(xK`rP9!q>&B@!hrcxfn*_z1I0@VV^w{w9N*cOxr+!gj1 z^*XShpr)5kAp9%s6GQEg8*law|AExaIi2@_%K4>J%HyriiDPIsM+|!W#^_v!Pz{eB zmUf%WVW>7EZOWjEO&Dt~6N{S5*WHX~ZY{8`4!-6`tsRL?qr!XqH!h^A`~#ahiADq& z^wtsP<-SGbqcsEqdA-6e*F*_xz1C9^Fg%90fmiY-LroDjLTO9T%M# z5wANIq-4|%mf&e-W3Apo_+uq=dg72b6y$WX%aEB2coQ z5mfB2lV-@sW*Z;8g*d0OO#bN0O=L2f=qF5_sm~nN4mbOxGGR2WQ{aU;e&>uSoOS?z z^ox1 z9#QJ(1Ns4oTa(1c^sXGw%Yr+~t7+qI*MVXyZ{}Wz1SD35&hMd<-}jr7Pw?^&IFEZk zVAGlV6~?=K8E%oD*bW`()S7*{9XaGY2Jv$X#M_7@5xeK;H^V=>!&F8evC-e0f6E>; zTudE)4F-MxhxzgqQbQI5IOYD`66kLr*Z+jp|4ZJQv?ensgdF}+Jwo;wqPnNqqI zJ$n|FzXT_&iVl85TWa%l5rKUzIDS`0Rf!h1kW2qbX}3yUxJ(%=W9;1jZe}K7x%E}@ zlej6)%ldDWkeyuHW4=1vaiwaO;z|*_3C(9#WO(U{xZm0#0&HKpPje&?aC9O4tE>m^ zOtkKQAbCXld^;jlf~N~04njRuS`yVV)4ZIvvnTl72fM+7GOGVMNk*z!uK+nWtZ;g} zObThWHUg^vHf#T5~VVHdrmGN0Q=Uy#{$sFU+BHmE*RGPmTWt=@%b?e zs1Y_>dewC<_fR?eIKJ#yNQz|-x4REINtiWS1m1;Fab&jYA4v%lp47%3XcD(zgMT|H zBTXn7C>4yIlf^|xC@ymeR$x_iVvzAl6dY_9NfPY0y20W`a*TT>z+Ba|uE)Gjo;Bh1 zOID?z*6E7%(r+7H{{=PJ)QiX_>cY+jL~LAjElm=KdYHk;2;?m6`nS2#ZQN=YV&42? zJ^pO*xPGVB1OxX%g1|5N|C~GjCO>gu5?4_XHFN%7o=>TE4rr3VvqE^h*)E@i<1*>eKGA!XYBnTIm> z7EL**Dgjy#%U3mm2@oE07}$o@+cL{2vsIXmzk{B?%K_v&Qziiu4W?B>ORYw49_(^4ls-N6wu+<&q`kjDQoC?(3<=ZL2Oz6Jl z+w2G0C*^81JcWq+Jq?irb9;0?GntcA_iySwlNR^q{sL`y`=xizNLWLnKA@jZY!%A_ zPWU3Mx^*z}vhs`@;M)A~y3)VKv8*+_0SE(TxFZC&YIgK^a#p8a<7t-c7OJ`S$3eOU zJwy!OKh-eQhWXYK^?3wjv6szq;EU@HY8)>Bc|!=I(05e^gId^pvX zEfiXlHv{4bxQz8}le^=ejMFWg)P|{hG@KBZHGM~o6NeEnzO;zf7aPY|?6pnrLSdju z)k`(Dl^dhN(U#U#DR;$0S$`9Zx=3XQ@b%y~L9Sx=tB@=K-6#Ls?zjmNHatc=U!0^4QoL5$o9 zJf_-xc(}#Ug$6Jw^VG;Ykjmh_TT$#tcFa6s{tA^;&Pv}^_J1VXM*9<-R#ppN{ur{& z{FT{H_t%E#e}dDU^%1{s)S#dh`{A%(Hp+FfsIMu-tc3dkv>deCJ1o$z- z^w~*ptL{a0gEx?0?KaO*YN+fs<$mQh&qcbI{4k;5sQqbv(<`rQTPv-fZQkFHTDL&p zcXX(-K@nT2EGN8zyjv}dMDqK)nfoP=G}+7XI^5**ovPYCa}<4kSZmY3c2VuQa&zH z9S?O1vF6I0sT)^+g2pW^nRf%V^JSfi0U+8~>B(cBbERoCmtoX_XFj1fvqzWdpdQG{ zd)to5l?{@mftz;66nm&`D7{H9MZSiN6=P~72f6Y!mg4-lH&@kZy-y*T)dCHxZn7Vu zV)bS%ErFOWnRohdrZo|}l2luevG!kL5C0u>eLmZSB0s!%Kt6o=8Pq!WRtm+$!_AgN zD+rE*ST{%{CPl|hx9z7y&|O4GX{ke+(=XMq)Ut}9l8n*-9{fXnsBfI%5RgctI2~5c z79l(BBDww89Kt}CNOm{ZZO62!#D2Q>ZizHL@E2?Dl=v_FimX#5dzdPMU&5mrq%jet%h#;? za3ub7;Zn)U9&S0_`x4f*jlW<#s3sJv`8T?2dkECcFjC<9x~;%~@7gRG$n$&79yf4sRai*q#c-omh2i19cVzu=@rgpepGt zVoEet7@OaA-I}B1zANGJz{LA1_01DYqf30B-wpl>R~}!GQC{2!^J5elzbJ=Qdpqd{ zRl<~gCn;uup63P-16P(z(oa$Z_N&V#VJ>Qd^~EtPUc>A=cB&Js32P?HbcYT7Cg28g zb4M?bWZA6ABzzbF^Qyr!zPf<&WzREjSRS)g(|0!1XtHB_M3T`H+5Cni8ai50Pf7Ee zVLt@X)eFn0h?~);R;_ij`tx8S4^8?G=E!)xp{^kjmmShWE#Cps(}Ao=j=^Yg?<*=5 z76ks#+qqsP{?j(hrpi6k6}r^0A8fkR+F4e1lE|R(C;MR`?tNNUF7W(83$Ik+EnQ5r zfKjEP&X5_GCu3P#5Kgqz(&I<|js5&ziChs)N#dn9G~Tz4lDF4l&QiJPTE&`qVTr@q zhd$^rWsTD+`boPgW`kvwro;?e z-Y0Xs7e#l=;8$Jv>On?OYOI1t{2qD|%107>PLZ2bvQi}C&|Nyw(5Og|j-uQj`kkKw zE+!&1KSK~foL_8V?ZC*P`>k0W6moe62pd;g+LLvJ9H#2sNy`x!|L~Y%Zx?rIOMjOm zgmp9KA4*fQ)$;uXmWd%?=A<|_NM!Vm&)L|fh->ci<`RW8J=x_m?UQ@-`D%Gg@Z4xuSQXmH1;60vAdUU~c-TmiZym#27@l`z#@If+&AVQT*v~>Ty@}fZ)xJZw z!FF(Cy{DQt3w4^Kvmx|^Vl=o;@2V}rJz7GVyT&7lgFxdO9(kzO5qIanG|bxU#OCw( z3xK-KYT2X)U3Z5E6@3r+dK~aBr3i3q{L`5f7N;$^TY2cDU(W9Z|8zo_NMZK;G~V7~ z1YqryXs5P?DFXH=H9DQ%M<7ZO<;?(!`6wrjy6?k z386Qf$kX%DiOx2$6VDro%+9QqPA8inrNdzZPDyl^rFHF+E8;L;lbzx%C~K**aAk)% zIN=!$;C3MUZQOpW*O7~@ZX1Lb(1=M_Em z#?hO1a#Z<)z3E`prMN&}t3t9et}X--F*~ebf3QQG705O&UxcZ0KxVZ>^uC4mSnGb3 z*;9k&>qOkW<8HBe^U1s~+osR#-39EA`~0td7b)j&w7HkNWJs?m=VY~MKe-eq1eEuo zK8jKaCL}d5;7yeKKPkgX%$5jA2=#w}x;FrG*TXS>T z0Se*Lm1(gq4`H-!d`FVSo+XF0t7+PZK7cI%XM~?u_nb1tn#Cj5B*VW_-tD-Er^nn*GEI*Z_W5wnGcUda6Km7z&J zqYknf!7SHtfEA1};wHx>UU`F2nsU3dR!YpRR0+Evoh{dEAG%A;!B14k_XJq`;Re~F zJN0&IT2xepl9WuRL%X{IE7gq#DI7K499$Y*1q-_c8eBFr7V$8G-H}z7w~aabRTbDE zIMm&0>AjW80Paq07qRBdOvkH8*w+-iw1juKTEkRZ9;SurHGoxHad)fRbjaXq{5L)m zqQmnw1+yR5Q_+)eoV=3+DYI8RzJ+5^95(Gg{ItKe#W_^PV6du>AE(vJj9BB?m;$|s z6h^#Zc<%yQsmP3S0N88rYVVrkT^2?s897I&sw=c=*!#(s_4TN~X_c~!V&1-CQ8#8w!r4m! zRqSazPL}}@P?%cD^bo{fHQN*pRa&q%jFm@;}Gs7%^Dgftq~6Tx(iy>;Wle z@@FfVu;4d%tMHKS$UWpiBZw>~-F{4bGwu=QNk<9cl;uM1azi@FHOEkrLFPh3UIpfC zW#qv!5#?_f@WwIvA1vRfEeXG|=SROcd0ab$a6ROwwK#r4EwwBq6GN$!{|J3T6T6R( zT)v+?<)PNE@7)9W{A$8Or*}w=o1bft;>R zJZX1()s}X-j*?fAePjZNu<7PbUG@-;@9INB&Q1#!{|&Kc1C7 z44Dt{i{Z^cp2_M0C#iriC)9ulO#xR{+{s*H;*;Sowb}*OZL;1sdpZr6$7R^Ct|Op1 zMMKm61&S82V2X~+$dio7lP|%`Sa9~_A%6X$Sa;F^ieA(2a+}Xl&)cpV zeh|OG|J41%8jY7f15Mvw2b#Z}vIZi&|EDNT{S&21$p4Ab5?eEvgcQ&}Vd^mPgF=W{ zsQ;fZJwnAPahKKw=etAWBOxc(4*`cEHTD7ddbQ0Ph_fbSl{GIhezTs%W^tL_uHN(J z`3NF}*=lT=hCHY2MMOp6n%zXO#`}M9_D<22Z{OBvRVAs|wr$(CZQE9*q7~b=U9oK^ z6&n@Xs^nW6r+w$P```PVdmr=gTP+WBj@ifPee_Oi*k7tCqcZrLb4PWGV zC{E(wtkQwPqFH3HLMk*Vh#f6R7v&(U++0bkwvEeIUSl&9y^?JGhwVy0s_!5AsA3zg zBAG57G}3w=CCbT3h~aVGhJi}+_UNF^Zj%0rWjRZr3;|tKRA{U!k!k)S)0p?iM7cT| zX8nl?Gx1Q8%~aibKBq2Pg32mY<~Y^+W?OLqHvO1-ybbg3FMXTL$p z%^uQ2vl*t_Xr5S_APoQ8(F3>P6&GM`|!m~u2qyqMUx9}Vz-QNe@-53 zd^7sSp(!>0bchu{Vk62g?yWMiT#*m`>QPp9WDrU;7<-`4Oof7DGQxy&A%Y~15lyuW5CmIu%-jL( zN9flCbKH#BOANrpIUisI7y=N%+8yF|8UjGYP~*7@a^a2dreaz}1y4zeKHJ_E)d%ut z{5A*YI)(@#FpO8@B0~AheLpS1Co1z1WFq?!a6uNY{Gu(x;!r@g@b<=LM?TRm%xI16 z1(GuFsuRX1j?TZPPp~r3R7Tb$&+724Q)O6mvxZoIIQZ+7@6Y)-uIl(Z?8w(N`kAVd zg6>DBnm41L5O6_*Zb5@yEvcIW)nzUqOBBD^8 zha@#!XDm~cZ*1+y@v!N|wpg~3P<58*$w5f3n5!0i76VG@$>I6vQ(v1V+(ztzWQ*_H z{PNYK<;*(nxAW4UBvC*x zPzcIrBdwvoL~pRr&TAq#I7!lnoDQLD15}y%TyLd~`D6$>b;x47S}is9VUi=$mC+GO zF{XYT!X;$XokYtSZeDD@7#Hl*aBbR6R;QEB6YT#q_SKeGajl3SQK=9Ut)W|_(#8h- zD$GfYlpSuM{k-R$+o8-{H8z*5NsG<;S+QMBvT{vZ?buSXhFg_5Z>h?}h%raHxGG+E zaj8PgA89QJ_HoE-L6NnS&{H4mbKFI4(p@0$go}HmVh#D+GfzdL=1Mj)!y0x9J2hJ4 zn8t0K<{WN;z~}3W&+^qeZE+5&zUg&%D~+%l%5=4@6%7M>$PBy7>r+~j>kPQg8FF8u z&&#OxV1e)&BhFE0s5BCpNp6gT)L5qH`Rue&5|RVh#JrY>4jZ5JDtB2DvN|JN%BS?H zd|Mw5)wR$UkmFiI|JlxF*CTpgOXXH1!}tR~EtR=gjQ`Ys!(Cbl<^p+aB7K#fu^^%I z^yphzX=a+;Jda7_68H6{Ijw7IKJFu>YtT$!TNMst+nRZ_MRK&jymEv5E8aNbAtEg( zVh^`qrWtdzKLJUoU`N#LnJhTro)AKR%ZN5>sId)+$cn|=oe~06yv@O~4xSLG`ihRS z!&gc$bH~6*o{S8eWR##MnxID%nOgR+QyaTFO*IENXq!!SgrRUDl?bTf*y5Tz({`H~ zJ|V-NPn~6MSEmi_Ul~M5JD@-3v~dRi)0fcyrRZ^eNLEWoD(aQcpXK9 zg3a5RgK<#*_H?-K9PU#Y?5%}tJ-38$;Ccl{WSdFZvJV7 zgPhUwL5%nIea&tkI&y&J_@jQ|a^2)7yxE%x^0yy~a%k3jI*QhW@;lx$n)qDuT_UG6 z!fOzUuGDgL- zn6@%bWhD78<3;J$rMuh`9RV@zPag1ZcFn?}?hOQOv_3Iwh11gz=7ZXVevha_tV{5% z0ltZTYyydXREo%y)4l7&)f5zXV3W&@r}5 z5;VOCMP z<*aUHi_1mjUOAm7z7JG*wZq7V>X&z=M()k#onts%%4pMQGUF~oq!yvj*Ot`jp!bkuFh+|V}I8vsFo1BXk zoGt%WTdcS5ft!<_6-c|&0~`9uxn&I{Lj(_Fk%>2KqM|QBqAmn9T6FkiNHz5 zMCqhdNXA6SM5C0q-_73w!pp;d1K+s~LgV%=BshxgnA+#*i}yb6KG==ijr+dt{^e-< z=;Nq-Y&YR!TsK(_v7fY_yj>i7EI;{U0{UpisO^pNKB<$K9-%!6eFA$Neryhj`-pr3 zetdImH-SB=pXfKh8>uIDtK_C!*DL1H{hyXv7t8iTr$7;C``^#=e-=n!|05q@X=rEo zFSqcYx4-`UP*PA%@SpBs{D<5saQmxUJq}F`RqYGI2mZ&NR$V zPkPXb67&QK&k%k)u!S^MVi)8rFL?tb6|sDDb>Df4ck6cVVe|dn`QwwousCKsjHZ}? zn8FY=U{>P|yFauXIX(!5aFU^{f|9l3#7e9qheB|Z$!5H6eH!MyN<3uAs#w`5mX3Oz zV||n%GQnMoV}*BpwjNSZ>~!~=o(n|mYh!J*_gJn5>^I#q+*|848>XP@C->@=bxP~u zL-pbvripiG)Qz@ZiOu#j?Iw$uixu}j-1IsfBa3^nt8J}1c8;{VJPIGfp-JZ*tDqy| zk>$y?*LSoC{Sxu3EkbGA7dAy8nURQ)^rTWvmpPt3S~&q}8gB-`hK>X2R_qvw4ScWD zjnh8x9djRWga68tQDcAv4J8yrDU`|}ixHyVOHC8sTxjsc9>N~PBg(W7$}s6F`id`< zvl7uL$h9wo0J!OJ~t{xFIW*HsTYYQmm?2SPQOdbSF=;0maGl8?ee94^#NtN3!N# zdr{~d#>hjFrR<$oAs#zfegeGa_1}dhN%|*lyACrCGar3y0b3vMmf$@cc!PvPv(yB| zk!Hd=h%@Eu+k4B2zchLqzAI}EJMd1k1QgoyQKdy2lKGxO-%7>v-1%gedevEQxrAXC zqtj@7BM@L)-#u8*_UJJ9N<#~#HwxkN8MknR>szjJOS+4-Yt&{cp;Kld>IPk$Akb|6 zIr%hp)5-1LeDMyJ*Z5S9Frm@5K6i~-FR#IltM|>gpXMuJw|$PtrIwswlgWzbJn{^( z*5duPq1hspNmdU{tyd4_ird_M{DBwa@;ZHU>1$USJ~G3JSMWr+wo|06@FU3D#8DS> zcA91zC!f6T*l9&mtB`67icKw_`(>|*uUr+bily(EQew_`5n?3;_7v+|_Xp!U_H9sC z>1LRX$%$t`mxR=Og{=3J!^Ix-A)UDgbS3yc+Dt}Ohs2k*FDc5M=bEQ#2DY(ecrA@_ zkO=Hnx9GF9yFsCNh&7={$c{<_l!zsw9aQ=HB0>Y-zvl&i*uIjWI(NgJ8-x#>D~h4R z(IJ(2Cjm*PjXUZU^yk^#xV6y@3-II^87OZ&!(O42xX{e$<+#$uB3N9pL@~{?NsIV2 z*wFR})S;h=W?b1y(J}|y$Nglp2B7F4<2Al!2~kp;IWt9MypLW4+dlKvpFMSL`%Yu& zYe#BH1Wgr96$gKS!Zwo>V$8Kn))E=Q;LpIXWoEFK#j=Qg);fxj zg0oj)%_1V*3Tr0Jm52|=*!ceWp1rVJQ0F)5G3`BPTe-yHPg@i!jV+|6?+jlS@Sc66 z*c#@Zle7f&s*FgM^!(pp+#3&L8<-~SXEg^Es@sbK*6AxPyaNOmRUFyWdqXyaF!AfV zB4fr{rfF0olCBM~zlK=C)>ubal}Co~8=qlb3>G7w#I!WuqWJodDTOgr+O|mR4+UMm zKktPwNWSEJN>GgNPc(tfDuE{}E7t;p3tqqXq_hEfy_+3{JzBP@D$7BTOn{yDpXCz2lu(xmb;lLMa+dUZ{;Wm?%qDVE3GRY(%31g;;x}-72E=eS#+ThdeA9JvubovWS+gwX2R-Xc-v_?qoNizY zF@%wHfcUMr&U)NTX;nm#=i(1qK5;eXw8WV>me$sE*Bkq#iS>)JQ~}&v#}=U>2>y~$WiwwQfkyX zPU%)jUFU3VOJWgYzhu5VlAV$ zHp?O2jAzn~qFor#x3P7hGO&@e$XWuUN?6iis2TX5DkA}`Zktxxd7NLB3yPDjGLWO) zIESTDqaDp?Shz1jpK9vWhISYE5*(GqG9ukDahdGKj}m7|_o5^1Ap2)O*hokWE8$Lm z`i8BPJr`We%oS%bNu3ip%Mbe44eXy(wM@mN`J}6nJGwRzUYC>Ch|uzasBf2asCTLg zMCim(6U8h<>10J5S$F1B_q!X*S);FM(T_{|2`{N+cRo+BE-d7ePUs4IUE_wRj9@6u zMjE2B6O>tq1b&JM*TzuHGg1jghgV@Sl;L3cyhnv11Cfei(9jo>`#l88>smq(9}n82 zI2T_YR0cX#)j^))>y=Qi?*v4uGDGMgl%=rV`k?X)h^||F{Kr4U{aNhUg=(%CFG~ zD>K90hQfV}dU!@%UK-p3edy}4Ns3MJUa6~uKR1M`&}Z>aUp0Edsd-2(ifTxX+}yvb ze}q312gTGrwaQrecgtAOC!~iqI4HP15-7OID@e`4=_C5qeM!#uSE@CwqnpthFrZQB zsfb7U06y5@5Hp%xHN!xFnE$Vf(*J_<{&;B>D4cMxaNYO&2rlrjf z$N{U9*5*r8OLP#eG*U9&Rb|e?9p83KIkO9seN#>rL6&{{{7$i#Y08Fl9&G27{g}nc z>}UTh7Ly$&;qs0*gKceTV&_53DFMo?Ttb?`KnnJsCd`u3+%JMOHx6BKyPX8#6?|5ExJfg^!hus~v^Xx2tq^96GvD|a#V1XPF}amndtW^9FI^|Sl$MeE~~iIN7QO*Et%!-OVg3r7KI%u1(} zD?eOGskDa#TzD9{5txFf55z;^A_Aba2fR^C<=ouf#KR=lV+s^ZW-F zP619|vyQ>5_t4CJ&jKr{OE>gtRe7Nk3r2diPOlL8aSL(FA&a3ot1zx9elarXlX6O& z3YT<#2|dYZz@2M_a@Gy2bM7>#N$(vma)W~_Zg73Cmtvy1RU+Z(C+Vf>x)p2~)}OO_ zOBhy6oE;wU;m*g@16%7t5y$=ICC+4DR}2mGaJM0oazBU7B&)D?}k;hRK^7;@iTK|Y6dIiSCc53U3W5uIYg zZ6bDPxFKOX4|Rt2H(+OahUjAS2sM)|by2(}~KBSc=`CA@{w^;aFXbcBWFK<8+JHDM!U4vd$(zowz z!AZ17oAf*MfqctBWcTq4Jd3#R%u}{RdzcSy9xD%wT$0Sf8E}_qPV%+M9{az#o?l}w zvwDslhg=x15TPEX*P&Ji_1?S%}Y==f|0rjVrJldP^X?0`K3wbEWGmfBx5P8$7~dRsE6uy48oQ_i;C8hTT}mOW$YyrM z6xRXj)}hR#*NQq-go{$UDGaJ8^okcWuiR^)WVagGaOgse82Ti7JUQ2qu8iQ^F^(jC zXu5$UKKpr#Z@!rFbRd*7=Jz74z@<2*FbFB2lH<-?Ej&G z1{PE`QzvIjd%OSU%cEiq%mM(Wl{VWIg%YS6*5(NYkmU^tpTBpUBaqiZQ8 zRbd^H;4$58d`~&CQM4RWC%F4XHyf*(SG!<>m2B)}31|y>N-X{V znZ}~*pYN5PL#WXm(D2LG zR;M?25T*PJs0<{AAwv+{XWb(dgkhG5_%B8hkViu>()Nrk#JS+kFasP&u^1yfVtH2> z{a*rMVjR&n26zJ7Veqa}dx$`Sdxh~5T84oZNL*VPE`Ydv;FgN4>rBWZiU@J+{uEI;yI~Nk^F~%vY4PJb| zfOwA~*BtC@(y`GTIt{L2LGQLUQ?fiGz>(XCMntyo1cQ3vs+1tatip*xv&uLgcX(bQ z{7+WlY`k$b9f%`d{`OG$&jTmCe;#N$TRPjixctk^iRXX(R#I6~Syn~mpAc{2tJAy~ z%Fr~DL^8{IAFBZ5uSF8jl^@9Du>uUmkaVpInM!t5?a7N%Up1kq!2rWnsd>z%#qcvJ zM<92&TpRZFxMGZc4cW7ouMe383!K*4es90mE=Bg|t>uO}v$kF0=PBh%IJ0(G`i^Nz zoHM7KU*hM%72&BB3nP}gHWbn>W*v#2!F#W7W)AW6fyX;mi?8*s(=kxvBv`$sjj$tH`eg@ zW~PacPXV-I=1!-@5MO8~A0y`qGIpaVM2Id>7PT^%7z*S`+LSFw*Br0t5G>I~10;;Q z6>KYC+DY#fhAdRA#FD1b+e=VSqP&bveSI%|k3UVq&b)ovFk@+b+sa`dKH6WtDM`jQ zyK7+%`PkZ+9{iYI6ux6s4Y7d104Mu?+C$<1a`pX-0;o?eXre!*0aocJ<{lac_Lmqu|_jyIRQ8?E`@1U*q z&t{;}QELMi?RqZI-axrcs)Be;Y@r`&8$X{RTI=`WHM$``q&C(VJZe`Mz-z4epEp04 zFMqbqs9j%WI}^0_Yd~h?R(y)Ujeq~MC&05Zav=lu1F?Vip8xqS6aSC*(HR`o19Pp)|d^(LJm7Z@aCfSop{ZlBhbGZtF+yc5syC?`bvT6s$c zu%p#!ZMf`$S>a-(wLhCDYOLC;OtSjT*EicxZ__bX^<*&J76q4aPCrmDrjI8}E|y%W z*k4?1s=p`<%mzU!+ID&t9fgzXT*#$oX>;YWE+zmcXD){v{>VQ$*nPQ6Gx90>>{5@W zzH#w-_WSsj4MJ^zvc_>Nw^)d`3137&p<&BS?o1&I#jnH9CpyXvaWicuU1vu=nr5b4 z`$s}E(Tz!rVk9_94uv3*9mX_!M(Y8Rv;7LZA$XlX!PXNzRk~rIUY>QR@l3>Uh4iu1 z`2^`5E5wMPWXR!!VLj-RZ>KNPM=XKoAW!fOYz!S)n0Z@0aNZv4-S8Usbu;^ZT!++< zsh@p81@r7!)4gvk)Iq=gcG!4{sp#^KF{_IYXE}iJ!sn^sn#zB$u;P&6Ysi+JWKw09Da0g&Yl+M~9I^KNO{EbiXLT!>mSk^7# zmf>@Y30NCRwzO-yx^=_WYK84w?|Uo&k$o#%U4b$Q5R4*i)T;ro54 z-3uDEAZ$2ni=jzhEZ@MN{o1%N54(=6oPL{6T$6nlcgr$>cX;d)*Y^cuSFW&z*dHSb zJ*dkrG}?gNWG zGb5+q(WIVV5a0bII{uLst7B4Qx$kuzfBE@lLKumVM$@F$^VB8~^=?g>zQ3LRu@kjd z!tfB{ND!&skD)e$fhqCSQc8e=sS!W1-3${#syPCpCBx z)amWPU{%1?T(kKaE>=j*VHw3}iJiM=IlKpzXl{KTwN@YK08>Y1AwmPU}0^@=j50@_c!nsxbZ z0oo%ZqIMG&ZyDdBTnc(~OFd)<4N(E%e5m3o9o4&~;l@DzjJ@or+B^!p|CRpq(hw*e4+$_*2DSdv*I zcc}WwVR9HD0N7YVp1Zm~u$P43dr*Gf!zkZIHnO_nxcE99pxW0-0dNA8ZkGC^b zJZ-;y4)wG|DR?j~Car-@W3-3Il^>WVu0g;1AY8dQOrb5zzm%$eQBcFxj9@y@Ky)K$ z)cq8P!iOwaXcyie#}bW#>jPn)fegpttMI#|ow_YJtZ0)qQ=dz*FNM@cbfa_zK94dN zo5jhUyP&(zGrSl8PEr{^^F(k*VBj7<&g9KT;o32AahMls&tB5Z@KT9Xq!V^GeubCv zJJ@rXL}P_SpX%I&Tkd)D_zHZJehzb2XDT`6&f#;E&ZpB~SU&K*Dio<&E7|!bUDWmn ze_^aqgpct;;Fur{2(JE_p#PsSmIo^X=f7Yqk^ixt{`mufCMK3Hz-fb_%^&jyCtJfm z{!sR`b20Szo4r@kmBt1p?iwQ@yDt@1T~pis_F%#sWQ6AnC8ao*7F-pQ>K$g(><=ge|y?VBRaQd%9?1qSX}}M;Ebol5(?DU#!mz zlXQ)OT2^Wsd31J(8@lJEt0}mGE0nPw)HJ#{qKGcu54e3Nn?p-dJXT)(^CD zHcGuG%ZcJRIpY3W=NqRyVZh+7q_UpGYuwK^8TBYtD0<*boR1IqCEt8=C; z@e~}rH;4FRX?nQ`99cqcH+Fc+3GdX;^@OK}aGV*P53vJ%I6C{d92zbZ+K$_XqX1KE zHOzSYz_u9KKAaax%*i+`Q_6VBU07GP(p?FKua(#0Eh!^c;4QrGLF>5d%J0ypz8$A^ zcxUX!oqMfCf?ymSG0i@&UxOi%dn0)llU`93Yf82Yh3gm0 zL>PKm!5kWM81HCT!eaiFLWw28nN$o^e)t04+JCkI;P~I33tLO)KgLl1{VWuz>Hd*) zvLUQQmK9n2t6wXE&7dd&GoEtUN}B=;_{dTk6j=1s5MuUin*hwnbhqpM0`zCV^^dgJ z%FLec=fM5Kx`lY%&Avz=!Hf@T0j-}d_+BrZrzQLF{eIs;f0yJ5{~luyDl8#o!rQ*P zq6+t$8DQE{kMs4gL1}#!sQRlY9md_${_U12pj9?tC_t?WGt6j1t?SHwUcPgoRNT~A zrR~C{(m<=;tYdCTywS&r0~l}1xQIp1d+I3T1a0kU!c8b}iEqSFCuYR)xIt?SzZgzg zY`)9SaN~pk$156OV?FfOU0^QOGYrC^!!9mMVP&@SPHiz9jG6gyW2C)mEX>QTa7~ z2##2jpIeu93B%B=q}0BhB&NSrIM$Ch$q8euUA3QTdI6@sQ2iLUBO%>7)oO^SxcneN zgw}T$cECwudErN!-BRVQouadjvO4QX9JaktcNyDOeDISqm9$CZKJao6Aw-~=1NFTQ@ znI{ELzHrk;<_0Pex!a^taNX6EZe=#r(r5PdD|sjSDv1}`aPy_oOSLZ>aq}5heo0>K zxA2_F{w||XPF~7it=Fe|Oo9sTn`t(pr`69q>Gs!KAepi1JfW9MP1Ch7gcuV`@VMGZC+m zHqowuPT3qG*hJL~^D*us5FY9SpX|apVzh~fS|;I&(^~uGw$KrU)6>Arn9Sq)bj>ax zJ)q%1BaJ0{RDCD}gp$)l&63kJ5ee#3BRf6?pOZP{q{XCqQV@j2q&=$;bjgF3KFRd3 zqU1|#gP1wpnX=iZxI`ie*M(>xmwkCghV`l68t}-2ESu?32k~{S9C!8696kgt8lQgcdP2Rr$P0m3b`R@} zSqxwQUj4J~x)Z!t7asibAkLs>M5;7;@^IM;ut1(_*_vdok&tv1S1?;3#LPtE>O}#reCk{H^~jQqy+- zseJ(WNG+`wrFuyDORXabg%&#U_eGG`4yTfbockouJV>{ z1$@`fMw74SN;|=S)|CzJ(HTo_O5<~_dgm#=t@nrf!spvdeLwJ-sLOndNTKk2%5d5* zCwp0#^3mQ-N&@|i8$UOYzcgj4)H7P2l(U@=u{f_%rB<6+uM{wTuJYNpSb{2CGK&7D zYdFAC10_Kp?i3cxEw7#_)Kmux zH?0iEQPw1L$o&vl?YZpxOnIIMgptEQ6#mJI57Tc$=$b_o3* zy78%^;!^c__F~mx)`rBB)QvL#y4efD6GOEurc%2s*4!aVp$MX|VB>MiGnkM_FkvDC zdyY`AxcMKZP0=Sk%EE`qBM(7F$aaTQuwvup z3=LR#ZW_#GTLAvuNoML2_P)m`IGqS<_r=BAwhDc6*`JMXlt^`|1NB5rVas&8oQRCT zk@MUr$x_spzB7?_~1npEb2MW+8HQx~$JfkKi?SQ5sZgDjo`ne|B z`IkxEq6cSkS8t!j z+xptm2Kb~XcGn&bbCH!r9}}J&iMNo<0szCZYDdL6ooR*`)gf|BeO_|wdmc?&mBpS% z^aKQYAH!NjgIh~)Y?|`#r)jfOj+l@g z1bdzx6nm5~BOYI|Or>70>KHWk zN$+k1>79_^Zp-2Afxaw#i8C?mq&WUlyX8RzEkuaF+mWJs;~j9Ak>s|ukl}Wbpp)Ji zVYM`2af7&Ia?stpA}jyOuAFl-`K8UU96F*uh zNp#>=91w@)&n<{Aj*isSADH|e=;kix{yV@Pl&2?ec3=2zx>tfvzz;F!P2$Zr8~($d z`Zvc*OW*eqUmsWa3m&-SX8rX*=9rBnywg$Ro~C`5qHbu^cO!rJcUvv~y7-Qmn9E+W z$)zs`was&C1lsr~Nq4_{UdZVsUmAL_1=}B|*mLkH`K@oQW6FL#ZXj>k zszQ#}gL}OGwfx5KM>?h>840R`KC^vKS0Ab;_12FVeT2A*6v4rTSazrjnS<&WA?#Th zb2YU@?$h1Ou_XeT^Fnt8gzexEPztW*cfdZt0QTSD8sGm8u8Ei$+Za0i3Et(+WDTwC z|4?N71>mcI^%WTyPgg9P>H?7{-Kv?G2O+C0^-0iQjYSgVt8{pSnsUwjz6+NtlX5(= zP3P8C^`-C4V584YUK@*JT4P7Y({_wgtGn4;aS@~|E#3`KC-?qvo>@P=pX2BEira(f zgDs>E!7a>Dn9Ix*TMgXJ6CgQ$&5XlSM* z&(Yej4P64$E;CP@YzsYK>*{W%w_j+->6JiE$7sR{>-5;+xE8tsFdlm2d08Z}oL20x zNQUldZf2Pv!NqB=&{JSH8#x(E(wxXFHHXGnu%8(=NX}%ARBa7?a8$)P%DJ?wi(?@x z$;ruXKe22SKIRx<+o~Q+91gJUB)v&M%K`2Kszq2Q=o!PmYAKTqRQ)L33PP@ubfJ}r zv-gOwk;9SQ=nxDcY+W3ZY#hlcwRVgF+9bex8#-sJ{*VHrG>$lw*N=>tGkn8rdR9@mUgJIk=m{i@OuZR$Pgn$AVLQu?~3=i9B3=f33LzV!9YDOOHAvhiQ zJp!f<9C+dhgg#inAx3fPjSvQ}M;zfe!$z>QM=LaCNB$1Z4c3&gTL0dNrN@^V>y}S} zf(#RkEm(BBtgytD7`@n7*#iN9@l?ZF3_DAY@J9K9Qo?9;RuTg%38U=1Ttk#5F~Z|h zbcr@kF9vs#jhB?o*B<3T%9~sRjL$ei_)YU~*xv+>yXOec?6h)jC2{o7}2C8iOg_0`DXCt{WB;>{=wlpRsJ&xHNl> zuDs7mcYNIB#Zj9-j&z3@r&V(SCQSg52b0|J>GG%b+b58z1%~*l-Oh;_c?#95_Zg}% zG}$I$Ri8S>2uS`2VinMmE_d4dZ3E`kh^cGR9G^fWH4B`mcUamNbfs|!(GL-;;Dc*Z zm!;UTIWE0Hb!r_+Sagc+BHk?24&D-lOSQ>aG_7UQe~hrxS#V(JkGa+2*mM5|P9g zf3HYWQ0|MHj$3sfonCR&jx~nWs6*cZzAcMxdz2?QLDRwJws{F-db_4=@Qi1C51+R` z(|6OV+-p{WRdncIU1X=zda;&iN4EgP$HwUAL)E*B=C3su17dnn&C`kxIiEx(=*Fvf$&oD82P zA=jkp%zK*m_3YNse!HgI?-{iRNy>4=Q74w6l(e4kfOMcCqXS0QnTK2>!NIJbhKy== zt^A56u9Radq5^U^eUK<_B3}Rg%jVfRWQ^RdTB8ox!DrjS_v}kZH~2Lo4SOYVi|!S& zx+KfntFxC`L{cf)=Y?1d|7sLj!@4Z$VZ z<7$|ZIs_Z4b&wkSzAh>a)xYJp?uGLt9VhI{_}MK&2Tf`s|K?Qe{;BRa=5|X*V$mtN z#O!{lkn%ZY0ZTLIN9byt_SvK(m0S@D=+OJkE~;^a9TmekIA_VeLK@>YcqB299O{Bf zmlK}61dr`zC3*GE;p~sBl&k(tr05h5r%9$EQ<)K9u61VQEt6i-b$TQv<~);L3PZ;0 zw12hK%xi6%xZu7cZQ5x^sKu`Cu?q#h3XS*F!xfLgaANYg+^kPT;;~M} z_jpVmCN`Y*`7PjL$CiAOPrBPg=;|eN<@4M}zL-2GOlnETZ{pR*&anyO&?C&8jDAYg z1O}BzL&ZUueuQLeN3GV^mUrZfrK?H9glnW^Z-$G7E7u6d)r2_y zK8YC{;vuFev+s+*#9)?4dgn5VjeZpptZI~(T7MNn)evOKZTvq_)qI(TVI{Ct)%jPl z>3=x{lQXmhddUd7x>)=_@YISrvN_5JERbg^8#z#_60^0&2#wRyLHLPLJM=|M!1hQe z#017T1X7L+t@7tZ)y8A;WA+}ku8f7VTm?PfUChaGCo?j_4}#%?okw5i$Jf^j_5{E8 z-?#LivQi&=4~0A7f55MS*+4Xi;&vQur+zR0o%O|s*HM_=^|j^uDxQ7)ePa4m30bv; z<62GHwaQQftF*MsD;P^XRh8~!tj=x8{VA3-dubTxbH)68x+J!~Qav#sT@Jc5&o)uy zz9ZdIo0R=C5ie|+a)Y&_ds`Ze`Ppb<(OSJtSE~k3`Q-8!tq4?f8sYCEH_mc{i4Dk6WJwI0lTtILeZ~fJO(fUOel@24#)s*FMoVpZ z#ckPfF}sv6O*9efdh(_&#CbrlUNE}chIqnG8DG>Uh&5@HpE0RK!=6S;QOz!SI7?w* zKPCkrvtZe+cVxB2){>CT$jZAKQ84F^k`c;cIPzG->pLN8OvwN7`=FST`=2(n7% zH%)V_heUR~>#r?FbA6ymVe?D;II!-hkz*`UVuQiwbk^-UOL=o_n<{{O;@P;~+1Z6U z%gpSuGmd%JZ3~M9FsgBCOniv@<78)n`e3z+=f!!FHA=JNjw1Qlq82fvoGd3>ku!wr zpwKKLx3H@S52=B9qK7buPz&U|Pz&@~LLv&I?$Fp!5Ef^U3hQc@r2EE|%ZQ<9;5Qd^gKKIM^)K)7bO@ya!*jk) zbC-S;%8w_WaJHv=UizXTMRg7|)EH=D-=c`dG7T6Md{mN_VUxM4pdJpXlK9HW614ip zxzxg*1E99GrCGe8PJ$25YWU)VtzIz{NMfT>|Dg+WHj4yMb4 z1_TMW(CjcE!PGFP!dQOQ7GkGvW2D`|xb#{sKz9V72#fVW>KLXPwUF(QkdX#Cs^*KJ z^#>QOhJt2tTv@J>UiRL#FGu;799tfs!XRfQBc`;E3NiK96r10-GtSg zy4PMAYzn^ddXH&oVfh?5w>SSwunA(p41Cb_!P&fR-n$9o0;Gt|e@?x;W#o{Lo4-FEKO_D&{U)FNoEsLsnGY7;EIxZ{tAwRWP5HlerO8ObfH zj%~(G3F;j4s2grO8jlmS$Yh0S)Sp!x+Csjaxye^hSr`?lkCn9v(^8`a4888+3Zd7z&NOEgkMRsLKIil~f7mV9sr)~jy=73|%a%PH+#$FVoZ#*d z+})kv65QS4!QI{6-Q6X)y99S95a4}s?zvMl_1>JB`hWNpRZz{B?!9}j)oZVPzw5%$ zD6g^(7{01bA+t^o>=WL4MzCp1-1$ooz-=;|`vs^L{LI~0#&f`( z#BN$BE zdQM3ktLuL|4g?~k%2cRCsTCgjn=p#RCg{~?G!@_UJBZx6lcj%NoeB= zWuuI=vRv2VFMwLm+!*lrP0NMpGC%EhWV{5IWx~2iE3v*iZ5&63V)Xi zHCoZC;i{>Azk^OZv9;chx2T56jBd{-FJd}-JK^YOJChg=mHxEsK+0rbjG|FpSc_N4 zL@Q8kEqcWp`=#GLJ%##ED<7)r5=4L2ys)!%Lj?+}@w}qOppWUU0sPYz9oJXWo%tp% z>OcMQ0Jv6)&fgLoN%O7+aLb zwpwLWekW+02s$U_w!|ORm3SuC-+!>pp9l>)Irdxh)*jXMwkPi|wI5XVR_Rr;slh9; zlbn7SSF27C&de`oL(}997&M$w_|##>(6@ltIGKA7o-8ZfiAeh^E9U2lyG&V6)WS{M zUAmaJToqyE^H+L%=ZkI%jXgrO*-k34wRXi@kzgxj&a*_cnssTn5sJ5Ab#&t(QI+*z zL#l`EmM{j{68V{815{5cuGA6r!aM{SD$SW{VqXg7ihkd)NNHkeBc4&xvOEY170Vta zDm3`IGqiXj^i#%(b!ef<67}$UY0*@ke$q*!3hYkTsL@+#UA>z;LB3E*h!=+3Z3SqE zmsmXm1_|a`bUdRK0U%q#=z_H;O^yy^A%CEtiV0xSF}a0Gs0y$bq1_SY%M(iVDrl=- zVd<(~aTICUevlx)i$CIym4IzPJ^A?B@I2kaOH$>xc2G6X=~8$wvnoBMnGq0JZO$%; zfl}$UiidVi=Wf$m{R-Gz8~D@}v`Fl}*TARUQ`{WBj7e|c)8V_c$a-)MNE*K9(Iujb z#)as3rrsXPRZZ%6m)KOBc@9?XS;Keh*n7dC?O^i?eh9iCweP#((WU>Hx6xkA<Qv!hioOh0z`}a7A=vXN||jC?GYW8R~3Zi)(@%ks3%drg0RCqkw!Oj zgmPM5-C0XM{!lxtS&3)Ao{XPLsHJH?7!5m$azVSQO-B5eK%r-{k%JwWo)iC(nEbOB z&y;>xu>7I-SO)-ynA)xvAW#i?`ELY3p#&YJ0PH$Ku zT7plPn@v}$8?(*9xg3|r^~~IdZxF?Src&w@JDez4)H{+ei71Ow%Y-{rFt}vev^zL3 z>7*^B$`ZCxB}wumy(IeKftoN*D2T8lPAX0(W)&~sKP;;X_YYQSxo}Ro@K2pAr)w34 z$?=;{mMiwy5aoyEr>1+RN2UjA5_41i&I&TSa&QzIF+d==zYngmt$f8M;3#-%kRaG8A<$;(mk-Sa&3hdhQK+*TjjC= zCHnd>6_ou2+L;CGODnQ%_Otl%ppKo6eg)@?VnX~x#~v(HWO_!9`FKY~KO_M^jy7$D zkD;mh=S5+s3!YyVN^tNO8@x46k;n=Qsb;)81Ekc98vLw}Bw4YPLG2kB`@WUTD$*gD zjuQQ>IYSuB^is4sGzJRjqrT`a4IdW z6tIctjuB=D=jd$q^A#f~LE(FaR*%Y#cn>$f%_RFle7>gq_1KJjWpiV3dsDz>-d6%> z#r!f=J*OBZcqQ`0V=GkSmh8!bIl0l&04gS=<>Ta5Nv{ z!N^jCHEu*w{1ZuwrfhhYuH?Yu=Y}Gw-YL^DPaklDn{e`L?^PeQL zbCh)(yH;u>?&HHK=t&VYKBa>s<5}kBq=UHM_mH?-E%YzIbk-R8LfiX(1qp{=4b-bGeGD>aLAyfz<>oz#A&`9@^x2J7_+^;A3a zf&aiIcvpoqO5^REXmWqd7C-zG;;UZIdGj|e9ve(d`iQWpPbw+rz&=qjAIP|HeN}QlFU-3bBXD-Ar+8p<-wNO^XRfN3j!2^ zu7#-gu8F7!@R9I9FoK@P!Cb^tjB&$t~W_-vCD16SW20YESofk}!<2=fF3Pv6z&ewuz$ypU}NL}A8DUjQ@W z0I-D!6RT_FiWN}J%`i6bd6J7^sNC)WYnUCc1!2o^8(NmxGjvA_5pR$ZDr)BzKAPEc z&5!#E9qM8r8DII*1<&zG4L_yFCEOOv0Y1Aho7|(%8{#w+H@|z^LZO$oNCg6@Xl$2u ztEAMDZe2^LEV5)W?gS2!Y+Xo*EV5)U4yIg_Suq*oEn2r8vuc~z$(8E5@hW$? z`X&6EqPqy*yY2AxA;+6|Ima7U03R>p(cyFk_Dqlmr8~i>$2#+qixZxl#G_#+t28HP z{gdR` z^s%NNu|gRiOq+YmZOF?h(yj>K`-+;!;AY;-8_w-c4Qmp})224Xa}uY+0|=+c9QSYc zzshJQ&Q_E)V)1WI#}<+2&j*K3Q)pjD+Uw&PD>Jn-wb7-!Gzs(!)0P>hkcd-H5kt1Y zj5u#~t01~H?Ch9KN4AH*cbhxmvEt1BCTTjx(~WAwJoQzE+Z*erWopjjZYJds9E|&? z#=#t|nDKyUE|S(_S^Yd}m*m>k<#R?Yb=^*DVzH|uFCI#9-uUFK64`;(=;pLqYX-wc zTjOYF%aEGK^<6XZOUQx5!Lgt6U$8Vkz3Y=(9T< zxK}UkOv79sgJK8ZFU}pag5Gj7C!44FYUUs?o{^k28>YLP=i-9iGBfEKrsbB+gM;2u zGwJH4`B(|K-jIH?e*Lokv9dtMZwBL^5apj8>i$Q`q6pNN+nXEy7DE0lfsB)p`aR`n ztFf|D!m@HJTScx(>v%N)N?QOh^zqaaZEIYgJ|DSu!kO(+PG zC3tjVlKGNbby^!QHKKFOfE-d%&+)Y8z|79x8;NP{lL zDA*k#k&7ZVq#m~G5vYi)O1>I#4Kw5vsA1!Xuo3}KYDS-Onc9k{w8t% zmR{2nls!Fz#V?p!s|nz!_vhoe&6#!AVo>#CJL12l1r$HH3E!+AcQs z3svJ6s&^VQLh{p4cM3Bbw9o~?CVB@Gslep_DZBde16~RjELRisPgM`e5>C~n6Hff{ zHHF1`ymB!!%b4OYRoQ8%H%al>4CJtYPt$0A6#a!)>R9e?R%iAEu1LsmFo17^Wq6s< z&_fB7h7%iG9!M?1xfkGOU7(h7++MkwO2oF&$TYvMd0DBJRX zj#vbtk27$dFLq#1Dit*0Dz0jnScMEKQ)lXS^U;O1Gdbi>uSvx zuw)F~=iEbQE==+o^aRbt`P9W(^Z0t7>T#W$1$|V}X&R9z(RC)N~24S$c4m za{B5$?vPMv)DweUjGIUM%I`)ebn%7q^{W2t9v^v(?cJjA#-nh5JRFeo+y#BtE19*` z$hC>N^!6>B(6N9FG+FCDAM6Xq(J<;U;6zy>Ti@npeD7ef82R<5Rm^}kid@_XvnBhx z*A!L1V6B^vn^2SS>Fel+Ghpb4G7#)o^a%&91u7w1dxvxFApX7u^cEHu@_|R` z4cLwR=i~I}gaFhf8vcW#{?GcxzZMD!C@HfF2@1&rbvRbWKnJ|P^^J+jfBEh33i(+j ztNh{@2pSWMJ;zWl&odJ+hx?YRV1OXeKQ}8oX3!pa&fkZ0CHC~mvqxCd5H*1Q%Ts=Y zi?dX3psMAp$K^zZ!@+v$=-cz_Ik)fUMJ!Kuj{PA7fHiMNYK*x`l>6QHz=_TTCF@!} z?j~1BGwST(dr(Zuw2SzaQrPiPJIF{;3s1i9nf}WU7+-D9uQEd50KRzp;Fv0qd<(d$ zcF7#xYn*iLXS@JEe2Xb2sib8#RA-`nXx(jegKq8_gk)+6hw_fo9}fD>*h>J-bN^Ajs6aXQ~qM_mujwV7hIo2gVo;dFBYE-{UdjXMpJE%h($Ad=CwRTy%% z)BI0iA<^L}TXMI_`-PvggE0+LPJFo*kcfisY@aLE3dwZjg1C;68skKWoj| zRI-Cna;LzoREpPeiTl#^NzFm`F^x`Bw)bvRsbY?fmPzP_uf(c~r)US3oK?FIAK_IG z2hGvE$OkaNyWdTS&}z`m6E z=3Im2MqlBILE~fb&1~_1w(uOh)B_%SzX(`|EP3xB94O)VM^lE!7)I*(0g_j z%(WY={z>v;$AT!fYl!k`$!itXV zbkySD`_keRhtN8f3kIRNlJbtjC^ZeLlgi>X!vr2h!~^^wVwZ81!GP7jCidAgxtevi6r9F1_^QdtX+V zz5z7Z&f?nC*HOqZ9JHRY%q`&{@e#NUT@A>x2W2Bk<0r$@3~|0R#j3R-RatTykFRsa z!7fd4B*M!2w-d-FyO@=WlZ?S>buf?FJ532Z4eP$R<;KuLHXaWbVmYtJX*!lQwHo4NeZ?r-SxHNy`_a(3mc2CqQpuiVi!B^YU!|T^ zN=Fz~)$@iYR?AZ!DA!c1&-^K3HkYC+dunxXrR;paEHTfv-8oMd0h{o!!s(2J2vNe)x}&FhYU)ebD*|w&^(^l?4-WfIg=jL;~U{);&ht z>w)c+wopaTkI-|0Ec$>Lq6w4(=tmeNXe5~1K(WB#KpOpA1jQHMMX{m93|_x@{+YP5v} zayu|QB>pix{@mOCS9r)8I|40IZH<4ouPVFQ{ym*0D9#J$@Pam!-Ts&;i{&5k#B>#8 z4K_ZY27tyTr6U^R5Hffww`7+YU8Fn5*MG<2iz7GrDD&%s_viZz1Vdv|mewiG?&8C) zyY;tU_vcW)D9(yls3AB%SNR{o4Me@W`*Mc}pqTd1mSwPB68&P;U9`olprNVK+(}fX zYq;vDyzaY}Vl7$|4gE&+01LENL@rH-d|JA6}sKgP3am4px22=8ixuPiwB} zr^VFlvN_}3zW^SFiP@N$qo4Io&ecW_cKk`=ImLC_dDVyvD)uoPN+8@Y&2T)n3g^Hn zOMrqvY16{(m&;zl4Zu9XTA)T)-GGKN2_^||oP4~Pv`#{roH28N^;=8q7VlPiT@TB~ ztjJqlt%n=?m}lkq(9y3MvZ<=vial6IeAJL5ags7aJjNjoQ;7#fF6;b~J&Ytrqbr6; zP-%p4*P>qj(0$5r2L!i@8Xg0;JcSLaal>c3GTnI1%u;vj92&KAjmoM4p3Vt}W`=N1 zvyaOMbh{we-#>0qbP?=&45$ftCcBakzzwhq^2qVv?&8fThg=d$y5YdgQgPM~Acv*) zty5C5G|ATdg!pBkv}C z%#{8aXQ~Kv7%@(<(-Bt~mn1lA`^-^aR$8(X2n_7#~*)5U=j&7={GJe6G`95Aa*{{JaEfJrYj=^F?^P@(uS2;(2 zrVlSk22EaBUKRLkD<~l_IKU$bzM?v9xEwp+&xJkW(;GKHJ4zL2`eR}V38f;s<~k`Y z#NE(fMT*4t)vxay+Bud~y_{k>fu#4u0;lIMB50##;Nib-$baSp{%l5MW#evcY57mI z0Oz0a04SFTbur!=M$B;e&_i&y0y>LDm|r7sQQGCF5;=; zdA%t#Ex{sr17zep&N`Jr_TgG$1MdUx2IR6KJzMW5RSTFG|xtn}a8MMgOU$o&8-LQc>9bwY)GsQKLN{FyOcPmYvjEN4OKWnz) zKEnia*L2eW4)F3XqQ(O>noW1TZ{G9FaTKazM1tsxIxe=~FNldYeBRfaY6!svS z%iQ6M zdGTd@!*4}=4-KszIln^18vg904h2p9anyTLav5ag)^L4qkdA}C=!@Y#_+z{J!JuQy z*Ymt5#)-n{k4rDDN)2OK*l#c$b4b)J=*YTnxUzdD!Y#{idw(6;&#Z5=D8RJN{C8pT zpAYSyajP}ZYW*K@E5jd8>|YCIC6ttbLPwyZhLgRs@xMW9qJ;yhF&5ymFu^On3bs-_ zoH)v9t*{otTqrPQSrrV8$0p8dnS3Mgdy%4?>z63L9v_9J)Y%#AVL9(BG0rbj z7i%$1z2;rokC}&^k1LNX=|GX=tK0{>U!)AAR|P!^e#PKXFz|2@(0G`xn%mfZsGw7@ z8ECGuz$w^WBS$h221UyCmgAiT+tU#&uMURSqjq0W_Y{jkGdZ$vSlx(Z)8bn*Ciac! zC>%IbweZ4=QM$-cQ2od$yzsMOy(v%=a6hMyCs`F~O{PiQmZwztf3&mq+EgzLyLuIT z2m?(#>nCm}r}eGib9Wt7XTD3*SGx<^4b!l9Nr0^~TtSBr@-E%iWPMGW>Da>=#JT5I zXI&~)>!$Ts45waUN;TUkJsNZ$r>jhkDAHnf$~ParU+MGYaTRN_T&-%fOr0d@Z(4A? z|7p3yCD(FR9nU4!7MyM(L2oq6op<=g-sVAY*AvQ%^mK~QEO!*ip5EM-u9W5FY^-K`9z`&19Iy2pk2}GT<6ym&!Pv zVpxD3z)`V7gTd0_D}tbQ1ppk{>GYeg&olTHeynR5Y{3^qv|-#d>F9S&z9!i78iIlk zP%uisG6syQnoR7$8My6vvfhd1#3aw`QVG!N$xQprY&@<(;eR2-1b-pctlwJGa_7r&U8yu~Uj`XPBPjFEW;PD)z;_;l2tkyB*{jnpoNWoK4JG-h` z5$$HH!HOiKsu?bXW6AvX7Y2#JTi8heR)2#3C~y8VME|dd{}V({c=;`x8=fj$-ZX$? z?V$OB9OR#3#GcMpSlEDI_4y72EhZSHNkY6S5Wxftee33<2nf2TZ->a8+8F#qPlV40 zAGE#KP2Ocoz^5GMS5Lmf$rTTK2a1=Y>j0n7ksKe=PMT7cSrmzCad(wji#XlnJ3s+D z8ExWSQh{;YX3||$!G4^o__z25#aSweOG!=IV_pF#D{2>L6u>h(M9@Ud41uirObs$y zo+t-K6Zm%~gdT7MU)^x9bN*m=)k-)TEwjeyZ@CMz7JvOzQ4vHJY(1Mq!(S@BgD$%? zDXn+NqM{gUN~eTQOTIt5OHiUL==8TTaI_`c)U8L6ntvETxOX$^eSq~E>{xAI87*4) z*e_iW|2nFdi3hV7@apGIh+Uz?`f7NT&8;MtcrL_@kZEE|cyfXuuZE=Tq?c0${G*>= z86v#$S6RKBs&ckzrv?7`1u%u;Z_njWc@I!cB|$xn(BG7$_v)7KS!++>zP)YD zJ*S@FOf^ccik*qiIN!$BhK_0%Cz#H{6A z3b~7n#(5(VTFKC|d*E)Z%Q>1$uQfJuH1pItN7V(3WS@S3ROCxu=%4yhDmC5Lw3CX& zr%TCg-38a(wpm=sH?=5(R=6Q!1j^V0y35Z!4MOTGtA{WR;Rt5oN1%s44R;6f%8#Os z1pgs`A9nczJP59zOb-JCXauNXkBJ^!4f-;qu$f%EyMx!Xc>9r%9(@et0|*-fh>tt@` z9r{&c&dR7Fn;QN6&C3aGM}(#wlX2zKm{XK}l%4ef-p+boYa;VlE1*80KD|EPfz}k$ z)W1HuKA3rQWxO@3KHCBR5ONY^GBSg5QYJ$vBOs$cgWNP?Za3moxmp``&LGjJd>3y4 z86%pnAhTW2>G8O_-O(b=I>=-rf6e81o+T3&rgACg?ZoLQT+@a>y+JpKZrUBSP5v}{ zd17m4nFZhQmEgqYfp&iD3?BHg06!Yw2X#bTxg}s~@rwQIzvwXSUWu85py}f;S=r5x z+n5zRIrB`?pm8d4q+Qu9cxe6#wwibEawMfmFC?T%FK}q_ia_yz7q zk2g3aGiR>)MRoPIKF!LSS|Wkaoh+ntI#72sLyFu2P?Z;r-U$u+{K2c_XtVrdi3D!O z?b^E!hf9r@SGNynj2#XC$8FSYOa=-MCk>X-MW&HZ@S2dmTc7H2C^7X%}mC{ zvMZUtT9t|&%apiO7Aeu3#v5b~GkTQp1eYyY9nU9gXq4g;>j9hdFvKMN#aYgLDBr13 z^Bg${RAe3Y6xi^D1Mtrk;%UBHOR0U2%H;+>wyvgSZAWT)tFZ7IW+JV$8J`ttBt{}G zOw#8*s5HNW9vB6>W)(sd)dvUmcEc zfOLYik93T5$O!rLONBweD0w_B`I@wI%Gq;l4}srH-5L{5pzQ9Q%dLE2XTokpqKD&A zZmt-BU{AK24r9A8D_3sG)=#GpiPXC92ZC7j@*z+E&zSmfhp_teTaZJINr_2<$zx32 z;7`AwIdYpD9qfUC6Y*~r;6I;*KbMRDi#g+;9pC?2D5&pXZYU?DBoBNhx3#f$_#4?2 zs%re^cHab(r*TBs&~5$36j5?~^9aL}L}(L4!pvrpr-yKgNSDDyUn#n7!E8l8lQ1K8 zT>(3bdDwG}EhM?SJP$WLx^6cdrbaW@`FwodK&OKr@w9s%&=zQl@?LLc+h1%VZDyGuQLo;Bc`$Q!g$QlvNL4nLc4&h11*ODN7qcqASdIGF&o2sN=OU@a zX)_8m!93Ac7c_2Fc5x)N@~6-ED69 zXtr<}A26xFmGhK*af#C<;oGnR!LM9=k~h%*pQb5R{|(ff)1Qb2e-eO(d0iS5hIW zdQz0oB9uF_UdR>x_ti?L9EAx3fdpq{^mb=PYUfJ>QA^uPgJ*6%k-3>DLz9)Cqkwa) zB?62`WYgTZHJoY&h*6+}>bEN8ywGwo)>PF|K&gjC9hUl={BlWhdz|;mgOX9IF zn-@PQ!G_UdoexJg(S1m+5E6HZK)H93%Md??gujFsUz-Hi?;R-!T@rIwrO|}nhVXs- z-uik(zn%5H)$53MJ8QJH^N4agYqAx0CbK$ascIP{ZC7JLge+-*;2<@Vw~5(E;|cks z0IXqPgN|+7AaxOG8ZWud)k8s>fra9^)?}zLYu%_5@(XS26(mJnl9cgj_qUn2 zX?vye3Pc~d$Hm0D!&F8qw~Wv0+XFs7)+zk`TMwI1e@BspXhP99s=?``gP}6b>hC{1sq?h%x^vL4<#HD0=`_aCaX_P74 zYh%E5IOnHgaucBi?;#~^_6CbI1uD+cz3eAmYY4byd?T~4Tdup`|D;* z5HVdVc2T_6g(*WO{E$Q-t(?)Y;COT$;o~L8D=&ntA{RWS<}*2}=_Ce_p)j?XcT6j$ z>1|e1&gcT9I`F}jt+%u$YxeG2sN0!cnsR?_VpZ!9WG_~sv)0oRg}N9w6YPf9@WljU zI_WWDF_0JK1q|HzedvZ~M*|T6$p;Su|W-ekd%2N~emL`0KlOz5$^u@jE<*g$f=hz|NwEsLAi0@V zB|%Hx&(e5%sUdKx5t@vG*Jz#Gy(qc~g;#&|i(k52{CEL!Ew29vps4@%cv5oIcXaxj zEvZZdK5X)%4Zr6GH4u&9EAxkeS}E1|tI_G^C{r5rV$9rNtjdEC>93;g=U>5O*m?4c zX^NWsHr5EX=SeT(_ha&^$;{yOcxX0#_i#>s`}qQV;YaSU%S{jHKa5s)P8HfHC@Vi8 zLBtEvjy3Z%r^10%(%xKEyh9tD4a1)OVVNYv+ltIXR68T2X9drK4@o`33VFElL(c4!F-b3X22NBSKoviBvnx} zdUG-rP>)F{)4p0W**Ok)Wjy*RB|ql4l}bJFQ9PA;e}?dI%C#XtT-cF?@~P%rRjWC} zLO8aQ66=E1YS%bR80+42;vBoq&tdlD1y4~=r^dX_5z(Sj z{G2Vrq;>UVHg~Q#$*fS$W_inw%c6-4p)Nt60qYLo5+}xyC+UL;hQ5FWiSa&h}uxIUh?VHL7vUDZRPoD*SwVmtxMVje0B^4WlUA_4e z>Vz~L)<6RPoZv(t#M4zm0JBj6T3#pk+zT@69a-z$Zk2vmsgqL1K%AFMCqbCQJew2* zjbxP9gyh#N%TKXD44(+nLo_Ow~9EC6z>XB%eP4&0g1wgeupvDdgyeTWkd{>OEk z`l4rpd;~gf_;HbGOqPPy7L=nn$S_C}?bpvr=Oz$MOX>yp%aEo8Tf(pYE|_%36dfKv z9xwB*KW>8Gzrd-latqt+e)I|j)orkKqY-zTIAj#lC71!tdgmDPo|@bgrBym4W^wja z^LQY@t*B$lOVw=huDnC9&py*fW}m{2N-+6a=(93=J&zH6_%Q$mN~*U7bXVl>iC1cB zJgVHlJ1+4bCzg}{FEMFv`R^;PQbh+yUZQz7A#6CdYxb%NQx`NKtRWn0LV$;fo0C*E zQBEt$^hC?tv{|m40lq`dNZDjwXMLT&5o6wB^GC!VunWhle>`Eqw~2gJh=L(*pq%gP~AT zzK>1pjP2nL@e0)=49`2RnH1?yd6+~}Ge3q`>}pk!Y};ZsoOmP|>Q-quhq{4^g2{Yu zwxr#QNi_|`5JGIfY|evDapqN`ZecBcGMp)SW}AyBV=n(*ZDPtSJ41^NkzT1(N9TqY zJ#-Q^B~8GJ90^li)Rsq7er6pBVI?UVP@+#x-PlR#0fx!ERLu|^)>N6TPKhTetml7n zTikykf+3M(ZLbuYlI##}2GFWdWm!e^iXFOW?-Ew^RY$g z(kC|qKpbSsg>aDW${>>vZ=%?#53CVKg}90hv=a{rcTnt>gcyP;(rgy?*wj8FjgW@eaOS(CQ4#ji(g=Z2pXU*eA6iYG>~240wUQxb`Gz_4v{ zIZZg&r^Z77p=<7r zl5CajO==*F5t;O^gKQF~#?B8wAZaq0olGB$C#As7lDYQ&4{8`HM;OWqDWLs(Ad4#5 z#CDso>=J+>h@L|O<)fCZR7Bk32*`Bw7hP;Sua1fBg0y2i!YJSXA=nLXk%+FIsc&F3 zD#MTC6h2U$pr3k30J?2cIVN*X>)ycr0ZN_`CzhKc=v$a$?i2qRGUd{~Z zqguAWnqszL3k+@X7r+X?o76Jw8F&XkPSY9c_=hvpyjaVED$-6L!AZJRV?-@y>6n<=S-(Yn+{rDNh1C274E`F$punr@% z`}H^2wRvAS8Uf~p$bYPV|4exPRsa5mtA8LoBjYV><`}SoqL*fh@&go9o2vHe>@0@G zlkVB{1O;CMSr`i>6CWt;b(+U9&Zs1)pEN>{#0js#o)nUMa5n6 zb$Nnq@3sb!!Ku+E(9meLnC!F#p~JC5+uslQ=A5m{v>UcNYi;PXJL$E9mnZl848E+` zF>_lR51*g4#N)fbR0v@_^+kV0`GJJ`87LZazvzA>4KD(3><%VCSSjT@BuF2$=TRM& z<;9;JF$JeCjS2EA%MJ@PD$dCKs!dm*myr_(D?}hu7^2*jIz~b;={3~J&xA8Bufm(} za00F@ow2urZOYgi1y3<4KMDTQV}=H`o*QeMsrJf#QB7GbrakbseE98E_rXYKg7e~j zOII5i8O^6zsmBDQ8LlON(($f1)*J8H;KpC?@#tMkVUGHKJe>uStYTLH2A#IKp~75a zNpYbrx3FlRoB*RXQcRP;qSV6NY-Q#~c)Tj9SZdi{re-;woM&!ZoV| z8`u&luMBaq`vp3ybjJUt>_Ws&#l@f_?MZVNH?*2USE9p2+sor~xfcxL{1LwWH0Enq zWjxc*hzkl10497pzyY8Iz(lyj?J{Vw;;?BkZ_#s|sxfZ4ok{4G`+bHY-p&HHfrQC2 z@ErZth5qMPdYXT}U;agT{AE7>FCbN^@~^2(V*ukqj@b0NP+#pfj8r8BN9`X)vJ`|Q zqOgDyF9Im9p5y3^Urs{K9jHbRqU|XR8gCd2PWd zoU+bj3PmUxo1zMY^Svw+WvZNu0*vs8jQ0hqB8pp zw5vlC4p@$dT)G_a?Mf&UqAR~rxXqQmn>0$RSRL8#-i!^EE|*XrRwRuVnXIlNRMV0z zTBzWd^H)%3jCUEY9vI}2A2!}i31gnMg7K$C*8X?ffwP7U?QO~eR+T57GfXf$5tm@89F7AqM?qbf0O zAve~s(QYg)uKXZq7l5NQmEfWoc3JZBjiVT6rDo1&M)bfUi=%?|Mt5s^=A0bev`X*b zS3m!8s1Lhi=*i1_fu@hpsdd^ReF>+);-{JN#VTt|`V5TcIPMxG4YD5s^tjR}UHPB+;gKS}TYW_|I0rg- z>_S>?_Q9K2REcD3^JlQ^L$XL{Fp(*`>;nrItB>N)>A&OeH8qDcv%-AJw8+~BG$<7AOY2Zn=k#$ zr5otSmC2747x7eR`JKt1wkinxJ#_0AObWCXkZlM;0*)JXcqC6hW%8GCzsP#YIJ{dw z+^p*M_IU>(3{gR(qx?9!hY_5#(h%EpNI4%TfoMg!5rvghi4D{FvGV-v1jb|LU|M1Z zV11qrD5S?EJ zV`0VvWV8ky+GE)j4ctXTxo;k&Fq`1 z>3)L`9)(OT#E^7)QsJJ?DvjV~Qqi=gehsB@wTgE#LPA3F6T?M{72}RZ zB+wgqC92a zT1hliAw-i|*I_cPFxNVRdT&vt#Y-aM(kLXeF&B}b$cluIh5Az(yg14qE?4>`@@g4Qm$rRs3M`d zD0(OaE6M%gc)FjGDJ5fx=ae{bp!Tz`d_>DV5#MV)K`ya>*>MIZ(hv`8=SB%p4~0AF zu++7g{KP$wGAB@syc49{2%j-6!BFDJI?`h zuJstNaLv*c-O#^cjvRjiBWWA%SUo@|N5_olTJE~LM|iMh0BEuQrZD6HfCA6H<9>UGv4dll$s4o|JwScS7tx2cGbZ^BRzJ@%~s zokI~x6Y!juo8|;LGoK}sVp0MH@4r%_tUSkKc?2KYHe-2gEGgI~+PGfASB7 zI(P1=d3On2dZ16x9OPlMeD8DcT7$39+h#5RjSl|wn3;vjAyh`j^n*31RB5}1BakDI zQ$Q`Mp6rr2cY-VLHmWieA1>M$lPNO5j%LIx*ovm zmf&FQAgGEi3l6Du>8Ji@Xx95b}+F`gV$b!^VOg2PCM`h(GV zf8%jPjupoJ=YcfI?PSbGOgHf(q}@+Ady=2Hipe9a`_VbmoyfQ{yI7YSG}ehU(c$Bl zG4H;8^nozHIgXIk@@P93M#9@@Kp1b}6jx=dyioTrxe-#V&y1-0)`YE^ z%(m30z-(UFkQvb>Ql^?D)Xm-O$Pz5zGDgnbk#ZWseH@u2ds-T{+Ot29cr^5>R$on4 zNKdGw4+4z11Iy^(V*s#{5oQrGAY_)uieSWgBnp9n)Cc+hNPEk!I@e`eG+1zV5AN>n z?(XjH4gnH^4&2?{HMqOGLvVKq4tLDVwf8>fw7ceN_uL=ww(((9)l=20SMM91!-mR& zh%auih*-SFjD1^S0s6AgP+PSDJfTo%>=TCSf`kW0QuVflu5i=xh#fj163{3vCF z3GVa*rJJSI1F#6R-<%N?%=V#fZ+)36R%yM5KZUoU=gO?ZqI+Nlk6m!JG9_s?2V96EL^%Bz z!7~Y)QJ5)3Lz4958z0?sz+GCu}^xiS2YZOngY_5Uu>re@Cn z1t=9J0J|7NwBSof_R&!^#XY;uFV%X*Nkk=_qR5iEq>|lOJqm?3;v<$L+M%xrezz3k zqS&$h-N4(G>x@}CKuwv^$VJxe9rxk-)Lc>5*N;c&FOgh<=47e&_umCYrM`O8O*5OU zByrG8CvkLCoO`$0rGPSmzPR*j32HFAgb)7-M zaSpUM9iOcX2IjWu_sqL4$=kTtj2%DG4ecBdNj5%7LiMsNwda`~LWtwK>`^!zl);BE zKw@HOoIbOq$Y}bteRjd`+gMPS^H{2NF=uM~!syEN=w;JWZb~B3v8<)HE->p2W248#zvgU?It&#$E9je#%r#M7mq& zdb&!9gUhwi83~GY8xky-9Twyp-qq-9&+^wyjbzL|^dMu*r?oqMX;q&-Z^uaBDC>Nz zDD^!*$)Z2zej_ZRCpa2iz+dDMAtmBQFiH2k*LeyeSY5=UI7<$PPR(MfZ?C{fhh-_iJr7y$! zt&xUXaURo*wpw+BRn=+tB&0n@jZ|+DvV8Y9GPdP3l-(rMTUt;dm9|tb0v+(c28_DNO_@x*xghR~TEj<;p%MoL^@A{5MY3t{>!29|9zIF|4+sL?;c&) z%k{qqpM{BbDkw_86$Z`fPV2slx;fD0FE37A-8gAVspvq(eWm0N}kj!(>D!lGe9 z_M6V{1ratZjeE`Ms5OJypk1Il$S%u>=5xUDL2ogXOiEfVtYxX7Iz5OU`do18{N1vx zc7%kMa=)O)}w&>oV3}YZ!EYpCa~W9p=E7OO>#_d#(bFdg`%TfF^&o0 z3%^;je5OI7QpOvk3#%9o*q1|CX%Jef*;%`4^o@KQu}R{j!DaHZCsF|9=kiH}fDGOb zRoU+r`ZCs#X{Gpa19mut%58JcJ{ylEJ^N@7k-iH z?Ea|WhS*d!VZvza4cX+9%U#b1IIgc;>BMYN?=nX-JpGUfUd)1o3y`cC*kQkii*?=Y6WzrG+ZVX2}C!F}wwGKdWSJ2~Z~%Ks}djfsEMA zwuU**tXAyR7J*0AmcS939J|Z}e&1z3I+UATH3_W3+sw$zz72fddADDwjCJO%+u$Av zYh$C{pwJZPQEvjsE)V0tOXj%gKS4`9fm|Z5k5aX3ts>&(wtTuoI0o~wHHSS~p~~@~ zh}N(ZMyO82(?7WS=FUZXi2QE9v=Nkp-;t{5nZJ@%Bc3VGkw{Z4a?iojCh{S!# z55kl3c+@!{WW*@3TBZSmu^DyPq|bTa&nmw1B8-L**mF(%6;#<^_hARx6{ZcMgXIPEFDI^-`hoa(m0f5=&5@Dux1+a0_^JJ zYaT&kFfB-Afm}-Ivb1V+?N`8^6kohNHq!9^U}?mlji*@g6A0!ym5M4qpFu6X2TCE{l1UUta!#-Wxksj3 ztMl(?=N4AH+LYdEbJ+vKX1zP54Clec7S7s#= zplKCo$rin`v=kNn)aRk)lahG#8mOj4xJjY$#PVUBba`6+F2q@wPU4~wp_rl>=rh!U z_?6zw&k(MvhHLdg6%pu~@;^f{9CObv!Ia+U=l$-<%v}s!m2?(*r6xi{VBs$jXWQVx ziF;s-&{bucAYd@HQ8UYU zA6F;n#A;BcrjIfEA-2XLy1#3;OcIuTHA#%4d<(jpQqwr<6bV*Up1!s~l?fXP6aiN$ zLjV3T(S8+3`f{94p*m^zLDb95$r3Mtc#<} z0((=w)>9ael2;$m-h8Sjwt&rT=DXOQ6X&op$*KZ)G8dxA65_ z&}ybgYwO|2XbEO|de9N#)w`fsrItJv2plN*GxO}YyHz#AyP zr+tKk+AO+t9f@>dkU?~dWcw*aP(;37g_uVeWp|D6RcVU;@om^iM-4fbs;JiQU&t!$ zjSBCX_KTV@{QOmDMff5|<#?9OVK(}FMpy6_ogc09C0mSC&_*S`tQ7GI9U-42;0LiM z6kD!}TdI$2*VA^cBe9=3X9{-Nd3+;XTcGSRn&GnVZ)6^lI@BCIHH*T`*d>Qc;?j4H zir$W79vYjxhJafhB6o|c@2roUT%iRh-_@^B?XSKAi;w2$L^|&&DRrl3jK`SYOBfo_)1l*@14hZc{AKNz|v z5{jWy>nr&Mtfh9ijg!d_VKyA}X&jSa0~zcx45Jpy!>dp+0Go&)g_w|gnS?4ym5oqQ zk*l1b#K@WcYs!tTH**o*35E8ail`hmbWsV_M1IAOCcboS(de=e=q80S?>cIa2rJrB z@||og)?yyj)bx5P!vbcqe*O%``l_(e0zNhjlbLU;M-%;#6I(^@&aww^;_2+VvG*If!5e+a2|X!fzni*5vdAlLJ-_2e1%_xMUq2SEivjLZ}et@XR?W@p$PR zw~#}IP`s~$`r3nhG~=d+`d(6YuM+y0L(riSYp9JrMWB4H{i0Nr+{XefqM5&xrVz~x zHz!Nz_k?pKVLsu%mn@Eax6mij`$g=H)ggC=zPOgGZK{@DA+zrRo>67kKZ|oJqQHq- zqCvMiyT@gxjp3^I8J(|gP1+^-=%+c-@RpoX;g6GyiE`KUU`zRnsV%k7Z5CqTamB-T zUjhe(o-pwYrfCg&oyZM(vVM@zT3j(lX0i|^Q{-UBKeZ#^czm9kvod3?I$T&S2(7%Lglw4Gn#yihd81mF|)kx55~PLvb+u*Q=+GqI6kTELFb9r z${`8tAUs4DHrVP&UwDBXpjh$=(HRU^P_En5(|kto%Sk$XNU`#gU*NT3D|ZWlSv&cy znLZOR5mJA+feVd{_AWkol1%5$VTfRss{nJdkw$lbz-1Qs>xQ{g@i!*@rAszqYH;&s zxxR{E@E&`T_PmiqZB7q=&C(PNX4cBi9k^Y>J}DmSvicX5++Ufn^k>)urDY3D-vLor z2X3N*uA;GOE5e{In#x98VQA{AnsUM#S~xb~wJJs|Xrwt~3P`ak-h%K}SZ6VYC})z1 z@XTK7I7X*b-B59wuUz~wQ`E2~09A{iNb#0Cz&)nzDA_|)LL3*>kfg^biLJnAgvUQ< zo5~yRrUGzz_zn1f{rlx1^?&%UfakqHx|s97$kL7fJ#1~k*vBdqrsf@hos|Wcm8Sd< z6pK}0Wq-8)5xLk?Xz1qsNZN5qGA#=e&mz}xEk;;&tc!shA(laI{`kx1_v>WKVU`c( z*Z1dV_y9s&JX(8&hKh7NZA>+}h2&x2X$wMALEPLe-s)^P0dvtgYoxW8-eO$1QKkJQ zr4(O@3(|0Sxs}}FgY({5Dcko{SN7tQYIiQrx|RkHp0;ALUu663SxW8B`nNvcuhIQQ zWz1D>+{J+=Oe=UHL@tY($$g<*C>on*RQtk16S;@Z+?55BBN$P(wB_EqQ>EHzeKl0B ztve}HF77=u&${fX{^yle2d;i+=M@f{I_Gw*g_f<)%4#JpzhA8!EjlNeG;dFQZn*Ag zPkXiHH`LtR47P#0#4V?=Au|Gb0u4{stE0Ucv4O!!2lsBg@^fM%e$;VW6|^092|jr1 zlFe-9RkY!%j-${J8SS;#E{D77 zjBQx7`K?F(*W@TR4>pKpM%o-)5>RhPm2NdhP+Cjm>0l)gbpVq~#t1m7(x+%D@;O;w zS@Sc;ZT5IAau2+t0lat!$miuV?hEEri@N^3PB1V{S3@KaNU?R3o9;j&@MBD-1UV|K zA_~8|L(5zS^v}O@smDkXWvwCKgnDIK<<$kWM=MllcVa2=ztGAPe7S4E>+aS;cMKJz zk#WaBD@LfXou-Y|%>7=0$vTPCu#Yr@vZxtjTKMF#o}+n;6s;qWE0bWmZ}GN>lBGVk zQY!K;-AW)mIJ+|NRajb+P8Hbz0@+F|YEbAJQkQUs{A)=07lJ-7a1CMFZ7F0Lh$_XE zWU%Oef_mAJ@dO-#=o$FtO?c3wJe91b@;5+1PGs=FuKXv#dUPG6wg)7_K zOqqLMW~MWVWjEoP)Fy_O30jVI#P%3xv5$|hqMzWdl20Y-HZjD$ZBw-4!Ur3<}KFove|I1pd;E10>lFyc$}mM zt*|qh_2aKw0UV~HX6;lxDOEbVO3)odXW>G~Hd|h_4ytS^A)f_h zm#)w9bKG;WfyL?43D?e+I-=3L(ib3+j3eXQ(la~ilF0btY+W|&SsG}JK+W;&Ks=_+ zo~MwQU6Y)zaNi%v>V7wv?sHuiMec`@)Sw*4ZSkwS<9TPkukuQvkMP5f431UM{ZGm@fZ46ybAzS)m6jnf=$*SkCd zw#oZI`|Kb(9#wn1)|ID2v>@IzRT%>q(4_CV`tXApusf9*LrMEkI;Lg!W?zL_sMv3a z#V%Q_T7$$5rqR+oQ5vjwjGB`McUKX9&H4_P<#;&C&VG$>*Xy?@Tg%0*&9x+5RsNTNxpneRa&o-w}UIR*;YUnSs)u^N5=Wa$r3zz`i52+RX&>;cl5;{VrFJ_H<^L z{^DdNNiRj;7xi>k;$8C8yiUL~cEYFG;M)W=Ahd1Li6DPKub3*cHU#jB^wv5fZJ{tN za}V7aK$QHD?pi8=Wo~^cVhM6*<8E)%l&r1Vd#!jNJ}PM|n^q z3c*I8WcMf)#O&?``2PCL^v_NdBhI=J@30pT z7wqi@105*M20c7#>tlgBr6--Z&1$-3JM3T&*zKon5YQuf6c0}9TKy*tJ!}_51MUMq z$4t3iR5I9q&m;p_Z>vJxF4t+ZB|Hx^FL!-sDTz<@Q2hT~*`hgURImU?9r1r0b^ZfM zTvb@*e_OJ3{L4u!z95rPR;E_brbjw=&qO&bPrWpkl1@{_qy)US=PM(r30yEXH@0S? z#m6_q#{z{;V;v}&MdwBazdv4L<~IwBOnPgJDFv;a4eNoN_k&WG3JF=k-p5hDzR{B z3eGdaUZb0cOufaZjHydSl$-hS@@Gm#Pn~d)R97W5h^=liLg-!{kh{sySoUMz9B>{Y zF`mhd)L6c35jmjX=jZH~ukeaaj86j1WxSo!T)eITx?X&pjwHKD^YK7?xI~-l!9h>F z-h+)<*9lb_c@OW2#VYsoNIE_v_6HV4di$Aa6Kvf$9&@KkOLUGAVtaKRnwENidDs#9 zb#Uk$@w4b%1SbiQb7~>hPPUT~5If)1#7?wjjH}+bEDGy0txtu>L~@=24?%40Puf^! zUv?c=hPfl(g`(um7c0rUDz1KxaBHu>#)kUTLmgXaI8PV$ zdDsuvXvY4#D02}fT1=czrRlel)s)?ZX=`TC;6sY$NrfzGh+gF6D3b@PHV!knzQ{Pu zFZA%Nk4tau_|B+;#Z7|1g2jSV66sandUl@oEZ5mF1jIfEvs3@IM|z>T17>=`1Sh;? zQ#c@4Ej##$e#{fs37ZeeG{b`PGvRjwam=dWqrqmtmrb)ZAGk{v+2NQN!xYozNydRI z=swoINP1DGu`8-Ry5K3SIJlo=aJ#U<3}k>W6O2Pwi9r!(SYqMZ2z|tTODMvRy24o4 z(8%L531)%YRp1a>!DP@(z9RnK9Fe?l15zwNXYzejnX$R!`~*zZ02f{GD~DnH(oer7 z$!aCa!uga3pxTJ011+|`i_!cT{1kbZ2m>>Uy8debjI0S(t)(F%WOSLI;N1AhgXe3X zcvPp<@Qe|McQ;8Z#>p;Dn^0G;1LRx3(EBOV2SGRk(&}IkpI?-sw=H5}wv>t?=0idm zTTQeB)kie{HizVe`Ms8HP1*qf1(#Hru4LT%q)15_W3A8Qd*Hr-qjv2sUY=I`n%LX> za^jl8j-Rc{=ik?F{EHse2~^2>(_!Fkp$teH;)-5TM^QH@e2}5$iGCI8hG$Sb_D}NL zWw=W+Bt!TrS=&Mjekg?aJL=^ZsE=1j4}E1igN-8VV`>jPkKJw#GmYCO$BNRo3 z@T#MHmTRi>7R^5+JC{L-R|2y2(2snEYvYpDd;&Cplv^CU59bMo%dApf+p=OMt=rFGse|uCrCQ2o-a;53&`zd_5m+{R z*7DU;1t*EMfE5d8(u%X%NUIN~M}0Rt@&ct`LYSo8INEtADlPu_jPzXPdhqKGH-+eA z#+z6q4@b{CLCT)&EdWfe7|mYgiNT6>8fiJ!Z8z*#?woobyLUvfm+w4DQCAVP^_ZVaibfw3R`lk6^0`zrmu;a!?nOkB{eS!PSy;DTV3sfnHFCwLAf~y z|0$jqz7@_3x^gtzR=%?iV?G}4jW=}MUdqQn93oXtvdbRcX$^CJ zAf&mMeMnQS3cabaW{2sby+-<%WAqjUGYmhvtQEYC2{#>I?AMv+Z=+1s*@NLvso^(N z17a(h1(ajYWi78z$KQ$0#Fs4a-M-wf{y1BNoGmDXo@0r!`)F`e zglnX4+Yh>B&$mI%Nn@OXvP+!9gb)Vqndo5E#PU)a^`?(?D zf4at(Y{C9MUf}%}c5L~PfHkj{v zx^BXD4)CzKx~YRd5KD^2ph*(Gf0U91w)AiBCpW!zo&#N*^05wL!;AuJBsGa?QPrW! zgV=igdbzhjh{T#%CEijetI?O}Dz_9li;>V4^F`%1rOyw)Z+_`|H3BAxwU>3#wHhncb%ZrT%Qo3hjaRsT zkvg6ZlWyOE5X{TJ2v7fC58fSZOkDnsEs=Ff*hu0S<-V>j1-VKlJ4xl~r5@kLN&X>RT^RXp?|q@J1}qEWk~9A>!MgO*tEKV5-lQ z*QCp&*F}rR$LrfWm>^cVJ)D!HRG=J!9ZOoSR{b9JF>8x7dpVA2Gy2%59iFKg0w@ay zdPmLym#e8NjW(`ycju@zpgvC%B+U78VmHn9~v zUY^lTlv#8VROg%5VoBYl1wfvJOKNYHwPq~?6`PG!QBUq^g6Yx@qa#dZJT(c6#`Il7 z+Ab2KORC~5EmrCGgt(usYz2Ffj+CvPcv09?ES02gZt>PB{rCElmF#iVdHr*w>T8Rd z4j=n_Zucrem2eg%$YI>iCqtOVHpOh>CoXkurM@NZa;y$xre+#0t6An&FK6aZBl`(p zt-NCm6hlTehG#ej7JWAA@_P$#mrcFou8imV+uJh(`RNjf(fR~_yw6_iTTI=%;=lhp$z)ce!s~s;yytPKM{v@t(Uy~aM7E|3d`W9 z>83|&k^TMTKunwm4}#2VicGJIIun=^DlZ$_+=qclE(T{T-R~A8+OWmn*K6xVnuo5i zO0>fn_+c4sBZ=5I%__V@@-m42JLaLELu59r^!%e5INAnb^%A$ut5`#I&I4-{BjgL!zi zrOPHmn$OxYJ|_k6%5f3y(V2sfs1~92ypEw84J`MSHypGCT-)xvRjB%9!4R@s+x!$~ z=G(-JWq>u$BSv!kw@&6)*Ry@m7&dBSGRxwM1g1`OTB8m5fj?Uzg$d09SYTeV|Kn2p z-)lW~yRj{;yO^Owjv_JU;Yc!H^I+D%#DI0#!2I7|-l0!Xe8} z>NJu!NJe_3wv?#VudYQjW77q$q3_LuV$?52%%T4%)P5yGIc4P~w_Mjaa+~3DWdv??;cr$#Pb~(vJQ+`vs7TepB$UzN% zViw-vcYA~Nk^G_&R0=%`YdM!mCXrFK#(Z3d(J`T0Wy-8dUF-w zCwh&pG_VwzOncmv9ghbwl0_=9^`Aw9kdcskLqll{iC?e6j>L6Ek(M4^6GE7fLG7;` zX@aoGy;5LIK0y;CFn)eIq9!FUB`E3(CB_~^LS$M;Fu|hM`vuWvYnY+_`S@cyKe@?W zVjgn;OQa=F3|$&uA)CNHKzB%wtL8hl*2+K!A=akQr~qMd7g6H}gi_Y7v@hnvLk#`b z-?h~rAH$;{d8)PW??EN^=@MnkR?MUMHz3A3M@jy~>hbsg#M$#FU7yb`u_y8h_bA(k;UJg zbE4|yU&L;{XaflKftKU$W7F}L*&XV+7OFYZNxv^d)=fWxq6<}L!zzWfcCvT;1H-^b z!cq-hw+PMJt08pPyQ@eqH|IPq_zpKZuTCF+UVggq97Rf~GYcM0vPzv~`KDbth_sj< zNjyL~P`7A_3#a1Nx3WT$DJ)jLZd+lVIBi{mvh`+dh1EViC&ga59ttQ*5DCp z%Q$rZwwRL~o~&`!^_CA-y7I9i&+L4#`GQ)toKf6UEJbi6Y(iFR83eM?IxueALqDa2 zV%cBY3W*~9^h&}&77MnJAqJ-%is^+hDBv`Y*_WY@(#p~c8Bcz38sFB(lcMz1ibT~i zgF0Vk1B(DRKPIFW6i{|!sS{+{>C^%3!^p)uhNLXoCs;HiTOPT^Wcs z*%SCKz~t=ip-81dmf!s4L+}JO?*>{K|A_*{uYmeS!}d<`s3uBhNOE^F$3E-k%Ro@^ zaG^5^NHC|?L+Bh@i=gKFw??CEDEqAXOhS7DG4q-Z`JsKtvENK8$J;_u+jgyFciLNsf5m4pzkZDjFg{oRF+Tr2^ZW1k1S(JeF9E9bN077?epK3x zm@=KR7wLFa3O_tg1XYwEiPk!ZcEw~#FMY?>?NsuW>OCTL*j(56Y5)?*Y+Y|k7hj>Z zbDr|>?sS>-P;j`2&Nk=-rQC`QXpSp~N?C8hU-OZzQmT%(sVmYTj@ipGW?co;476`t zwc+hBvdYbE8|eB{uif#OF6MDifVBhLe217cvzxrs%lhlylGsI>g@4)jI+7 z%u<4Ge{Z;Qxby^7p``5B3p6rjH$D_LPClbv&H;<8!7I$Cai;zrscSJjfXRD4(G6o$ z!cDG|=@EQi?Ol$nQ^sR%QGMaNmwE&huYVS$ zoXsNT62Rcx`p4j8`wztv7@St-e>DO?4dnj~KK=WW4DBmDu6qJ?UH~(i7itp%B^bqb zB5p&%BqTOkA|N6&N*kr#3On<$MR;ZKhl9O^DFF1)ICO{TsrXLzm5YII%H@Jf!C}sz ztIH2EMl^~DEy96$U9-+Mf8GomGX1Fxh<{99H45kbkiiFF7s@!K+r`6x8GE2q^1{3nfwTfiA z+{8hzjJ1Yyp<_PbR^Tx2P?(^#Jk&mjD585Lry^@P_?n4Rs!8^3?^sV7ZT1^_F#QFT zn10)0)HL7C=tA46D*6&Y;-h!|bPtc?#L^RZE zWhJ=N7IZoI5RGO;wqYM=slyJm1?6p%(Vx2R&iWYUBZO*~zFHA9M;)1~z1MqF zTpDfFn>{hmE?W70D8sa;o%4B8-tXokKf1a{8@3~@{kj=Eb0>%^H5;2=&Z$L0wyN@N&Zvd!6(pwwB&x<2fPT%2{Ch`DNwz`7H~a;YJDBOhvO#gQY|394YC!o5Xsu;>;zrG1 ztHG+Hb-6*Ijgh4bP_@Ax(D3k`_Uy@Sr*%DN!603aJg*ms-KoM@Ecy4alaKj$QycAq zJS#tZ8B;S{6fS_;7w(sDhrfP(e2NKLi4F~jVUE2u6%y1;J*2+rZjgJ(4OrO^$6cVM zX{}r_o2XQM$k!pSAC;dsvY&6rudg^s({!+&E{<)7?gdd3%VH_jteZNkZK7;ygASHQ zM9I4{##g-yD-vnda|9F10+jr1C*4zfpiu9JDjH^^pG0ojee|D}z6(}4(7UWOszfmv zjJKL&RjkWf7V+30LT*Ss!fSL_Ug-OH6c?i^NYdJ@C5ZH5CQ7?z=L$H4-xj5{8x6gN zB^)&%4j9@rwoVsdJJYmlm8-d|xlZUsZP;bOAp=b}(V1v>!b6utb16+C*n|^hi=RKQ}}^sC=+2ntRJ!NEa6gz${tG|ZC2Jb?*{3bKxE>a-8`0*$#0}nHLQaAL4?jWZDPT?HGeWVKO#5 z@V?y|52limF4qAOA-cZ2pCGcGnZ^e2FtwnS_DBIc$e6Gw#*ezaboQMQQ_U%d#%jG- zoiUEMGAM(!l(CoLLC_Uaim}N^L(Cng^@+?K3$u7@rOeza6|xyHwID{%N_ty_WutSd zDaEC#abS0eSIFR4rln9bFwME|5c`;SdQgk4*?~f}B^c5Y&(HNxx7o z5sv}dLmJj#wL60N1_Z`>=m^)Ek%W0U@&v{r9U|th;C&}771@Hsjn^EXaYHexq1VC*%e9$)fdSF6+{ul&}zny*!1gDb|1qCE9cPn#_&a6>!=7z=B4fF-z0DW_`kF#Sh@WSiWchs3xBa`}iOcy02_n zIv{R+O+Ftwx8okn3=}V6Vx9gh9^r_h{sykG3lG2)A+ldk%KN}= z)&nf%vXx%{A*lB_h8NreXK_B*f5Kt^Jwx;F+Tvgjv>U#JdjlFftTl?6anB zGalLrVY@zFUm?B(seMjg`f0Q(7aWDHrV`2ZSv*Wmz8E_wp$a?PoY7Tl=D8=UcWazd zykPZ&Ux9jqp1QxGoydl26fc3!;hd5xpIIa97LJc_-&c5wYNn!2re4)b$Q;`KW;>84pUiQ2wQsm9E^rTsOCk$y4r0S8+U3z!FY7nFX6nPtSYL*^sl!W<7D+EVHC150${bq-DirrHEL{H`L6p|h{OHsmo$*U1n*{mJWZ0L(G3sc z2dWGD46%;pDAR2R0tR|9J-I`tyT>Y$16`#L-J_>(u2sP?=bmQTWv#mdc^!1kbDAvj=|l`BYlAPA%4P)S zvaGKhYTvj&V6p4P3VEX@;;6eB3Pc~7oe_CyntX@bmsnJicolgoGGtvg^r)9KT9`P) z^DF>Tp~Y)(!iC~9)4&7(RfHF3kd@6|OyaFg zloMipyjCc-+D!cn;joJ$r{F!}(JfRiKr|0IN=l#p8siExMZ{f*>KQ(Z?LB%$T6h_n zSfgqx)@}Obcu{wJJV2{7=x5v;l+g#%CRsr@Vg+Ny);lr=rM@|*s6i#SGvGlYRPtS= z*=ny`O2(hW({u(wr=bd`a*u+XN>D|u0Za&XLnbT2A-U5i*RqjkyQ=`dwCU1#)|%po za&>qrnJI;q2WE7IAB(d@)l+#?C8T!*G>lPeA;Ff!a^V$XnT}7Zpw6XG&Jm=f zj}BB6h07PlZDh}%_`wynex*T)Nx{AM^oKA{o+Swf5^ zWI_YlXj>uMD}Of1Mv_X_CRZ zPE(kp*T>q209}Hj-i%Q(zv?QvFyn^yoB!!5?xbvFt}nvdfmD2;80MmnpShb5+r6)) zPjO~jlFuOdg#-*awaP3jL?zV7W7T;SjlXrgh7CM;yQ3|h)fk=Z!s4_S5;gz59U zVp?;=n8~TFYRKXla%&h;YA_E@GL=QZ`3EXV0Im&6kht_S^4W8%1tX`0Mu!pbbItgo zF=2&%UYbr<@|WTpzJs#~{p{UCUiCV1u_yamI7C*8J7Ei$Icoox2Z?_k9Wi?oXD>$} z`1?O+QHkny8gu4Yox-qGOrr-uJqHbxl4+{K8|y*D^@7E2ncRX+bxRFia86`Kc3Z>z zmkN(|0)d&k+Ed<>2c2hqUlWF2q~?^P?G}G$Y);8ky?9r>?2nB2Gkmkr z0e9L_A%}JHm#2WIk@i{K1~W|z79A8H(blvLPNLIX0AsZa)rQlHKw_Eq^rvy%2OjfI zp1YCzA7ULFM42n8C7+#lqD}`8wF;#hqZkxn)z1wicT)~;wg^WuRY2 zg}M+Aiphq0YV;R`QXyZ4c^Uwb6hbJ;gBJ$nG-qT`2SWMgR3sqQ3XZFBLqWGu;h1L7 zAw?E@xj49&N7*6@<<*w#XK5h#HK*)s@A>o8!@yd*Y@kTW9=(-(5KqQBWbfn;W1a|R z%%V0uboxhag-Lxn>ARoY5i4-ie1_||Mld`MI^M+};2T(q8WR5Wh)2(9q98P2&0SAv zU%uUgKnYXd+GuM3qU_6g_1nb7&ex2&#t1gm-808Rw$EEHFa>O<0azXt2ch_Pe3n|C zG{x~Ee49vjS(92?MkZi5vYq3x#ZYWeiku{R$tq-;0aMLSy1j7rF7fe$~O=`gJx{BcTFPw1PqJXfTfo{p|vSIWOf( zvo5fp?pB2;$~o8Ho)O~|kW~!6cvZYd)P9bGxaR_JFV{Mry&ztH0_!5X*|iuick?Y5 zvwpmWFt>gz3a+-#@(-Vbm&KffakKrXv{v$#mi6D-zT`*rD>7u;8c`+=vC`e+h1aE@ zzrI&?r7l}gObI8q@!V6unTClSUf`D1E`u*=(2ywoeuKsjO-Ug|i72I>y=~Ml@Y1&X ziHu|eenHi;Q4z%+oH9~TgjIj91PACL4!`Tmea3@!tG&n7>98-crH8~>L`i+YiQAvB zgp)!ASgaKRv6O29jTXsgOuO*>BP9f-qJ`E3Y(p>pQL>HmpMjwNt_X_GR_?&H5YSHP ze`!fobrevA(B6aBX3fwQ1%-0agjVTl=)%82AX_HF=o3T#<*16_R=Y9aF1=O!$iRpk z&d&7wN5Z&><69kk!w8ql0yT}}(AXRy1>gB$Y5jvAHvH)g9;dA9N2u?ZO7b`LEV)!hdAAMhdp|MKI*=Oo?EQ?nDlXhJ zvq8EJn&O+&$j1)@i~QJ0gRL|4m3uC1^=d)8yEH1bJD5`4rCgyv1rc0v)`kG9>1k4h z37o3ktY8FywdFv{-9~b6wUC%%I5bre?^SOMaX}uT5fwoxR!lKZN|LesfZn*|wdlYX zf)cD=lSHg~>R{yKZadxrfk||Vfo+n9Pj8p(Gs)i6*(E}=cCL9RhMrRDp%vz{`QFG= z-zYS_3Ke|CGPcpmhcruY$A(fq;GS|}rpwQexxO6pk1T$VQ|vV~&I{GVzs%hxFZaxx z2HeHGqi!l#F8O!+6nqFIG z{e()pfb^45Urbhcn|!ttLwoic(9j_jKlZ?)p}A0KQ(84=WR;2YZX zk8kL|cb5EL-%ucKs$ybkX7^t^)c7%bpfqvtht(>lTPCD)pp)yvsmzUefWNW zpgulit>@qpD^SUUgV>I(({@((#)yZmWX?4G8|TJm=f7URt`e$ z(?;S}r{TOkhfSB5Ma75)l3W}*OFQlGVRe|%hDhX`yvdD!Ni)0N^h8xGb>i!1NOD}I z|BgLE>d2J!_ie4WiPUyz_`$Ftq7ek=gib;D*=WHHIo`uR!`DlGf|p@FOMT6M}_~O314{%98@(MaUs&`i4`p4op7t5r=r-d$5>uUblQcx_smv5^3a{-XMASP zwqw11yb76>humnO35f8ql*NMRgpz#0txuFmA*m2#_xPM56)dZj-WBr_1b9Misq%_^ zMR$fgAY=FTTsPa`j4s7TyivtYOlIoJd4x|F`Sv+pmKPg^wZ=4Wp5p3HAnhjPm7M^Y zGT#5l#QOJYnSTOF%EiUa%o%822fQ$|GP0F-vokjP*L_){>R)nhK%t-j;Zo2WcBF(r z$t92tRs91b{Lm3%ArfdO!nO*O)e3_@h_+;Q*n`(#}bP#5IGe_?>)9Q%* z7Q?3`rM9fe9$Pj*a-~V%c=Ek`oq*-6fi7pm+D?2d@mmtj676n8uEsg>++A7X^eoR> znA{lU;k|C`IZB~yFS5VwV4YSVNA}$iX9tArlZg9rF^)~-`P}K#K{|`TP)Ou0tQp+4$J%^N)6eNz69ToMAQSw5NPEZVS{tlc zG`5}W*tWT2+qP}(*v^h^+fH_D+qP|-biZHsIrom+Z{IP_TL0E~ey&;1oU>|HZ6Bb5 z(mutNSGIuXmuP}cxUVVje`c+cZV#}Od|shLl2jAyH>!(p*^K=|5X=g}Ej4`Hi-Sq9 zesEF{shP6tI>*SFd!6G#6o~=vhy+GIC8*Vlk46l0yJ+9!1`0f zEavM5+Ih`)R^Fnq2&5QG*%H`-d9`DNa#1%IUt^X>8ujHa>1OkmA zoK=EZ+VZfTb1mQ)o(lD3)LhR=EY7L4yKYmh=Y%z*Wxu!Kh?b+>H}eBrr;@E&E!Q!e z`G>FDS@G1YG|ep6%ur^ASZh6FszGD8-}`4smC}($hOiYJN`L8SLr1dFOTIxB=Wj>) z|DsI!Zaaj&tKho>`NmZdXB)%+;q~L!zEKq+_{;jAs0szzo7=E6-5+*(2n2}|s6;M? zs9dTPI6oFupF$G``^cIX)2j&rDJDz;!lw0&s_I8}->9nlzFFJ#V(PN^_BQp+>|2yD z7DybZ!kmQ6CZ8hq0oi&+p#>a3Hf}un%ayU=1d~Ah@GfY%f(oVV>{B*wjr>3-;zQgxC6?m=R?k=AWmDqn?9DI#;n_Dc{OvQda_2IQdVr% zIqTJCdUv7;-@%cRBV`t5agU~dAH|M&y^Z%Ed2ZOpshd+CO`A(ZM=3((#H~|6BiAf3L-Agx>8-^$ zo8bFs^ilrPf0yjoRECYw2-+UR$gs%)$}a{!+aUflu&y zu2=Y)*ZN7VPR7uEbclOfu+K8zwqwT`iB3n+b#0UQg zKp(*3mvE6l*iIPRl)2#FUDK(tZEdn>38tS@4IMfDn5pFM&i}o|pir)c#(2n)hq`Kj z*z>8cO2hFJgw;*%jaJD$f{whCd9yAIP+{NFfM?;SXe#Ky(9mf=^Yn=B&F{Ets1EDL z|5KKRG7;OHmv+|g%)TthY_Dof{**PV+XlLr`w{%@{G)LZ+%AG}^&J%GH0P>JmSKNX zHpT>-jPOL}nnyn71Z}LUA;8lQ zj+NZN>N;c86-Ejph1qVr+Yzh?2Aj>UxBCuEhu%(MdwDmf^#HU89ljtiHr{1?MoGUf zDkRp`23l%G2Izg~wEf!VuIzNeuxJ6u$8TXQ|e z=}hO?BDa5C6#rDI>c_I7qJCRW{+{mggSD^7&_lAsJXh%eZoJ;(&{!pHpTev+XU5W zlhGbbnDr`!J%WRk1X-QB#(k-uBRW&Gr=NM#JKuvtYyI2rh3@s}g$o+Oq*Pn=!5Qr(niaUQ^J47J9R&_h7*|tmuvv zI+bS0JCNdMFr)h)k@@=}-*T^0YWZUG%<$6GJ0OOUcs{HASG58Cj?HR};>2`}q$hjF z`fS`7&b4%%O=&)0*Pm^5>AXQyA5KC2cEtlY8I=#$JqFRTC%b*?aOYTxkJl8|t!Wyk zyNj~y07iO{-#|?_<(l*-ucZK&*6p@0)+*=a_f`CaPG?Ihqtry-lXp$A8@1jS={&6MwW& z=W0V&OJ1ArM5Tz88!YBp_X}MXWL$$mH(B11`% za_Bm^C%XM!F;T}YR8LMZ=GYU4WQWK zY1Tt|kTSMsTW2LIht&JxZ){{%f4)|sz7NMVp2uY=q&Q`|XT$o(+yuKxX6*RBQ{EO+rP@Su?!$1z6d_fqQ}dR z2MWR^TZ#lk(xFf<4EB+81p_Hik8(6D{)`-FBlP_I@liq_3cnyyi+oRe zv&)n=kq>;40NWXvIIN%j1?)kIAr3EQ%>7=bN}m;-aN~q0$qZK@x|xW$Hnb}`RU?g} z%LEl4wQQw?aq{~Sn44EX?wF9*7TavN?bveOh;xK^6!7DRz}3!D48rQ%pZsQjIgPJK zGUJL%anG!19oK1#HvUn8qa{B58-OwAyrH|dcs0(S9Wq)y4_FM^RPGi2GftQ>ala|C zqLifbQKdrX$jTJ{67LL~^Cc~QH%owjJAwY^B;kJ*j3Ohym8q?Rxs#dozmkNNzq4`V z5IzN<{SZ(==F39y#cY{r!bhcP8q6+&BoHf;?FD||t0{;91H*qJ`1n11aG7fMoHYM@|9FA^330{FzMcgNCyiWIgatp6aOcjL7$w~*x4W&i zI`4qJnuJP}As#f_)>eddn$(*cpe0XJd{yzoLVj#tC4uF(DUPiu5k`IN_ky^J)=C(8 zTN??}a-@2cp9#8ZVg@2>v?jxBkNpM(iSqF(EsJdoS^e%Rr)KXC{ zT0u!uYtiu`u9CcBQgn6I^txAMv_-kE*8Zila2gi^+#z74d@1nr%Q+if3k$l$!@- z8YUciQbe0YMa9fHxOLCD)NCCslhHIBX7*$THhLjQg<_Maf4)Lu{|z8p;&_sK#*w|> zkT5RJx9_^sO-uhCV+<9y7I)Qci-@6k#^?DU2h4(>CS2wqLdW$v7k~n4L9m^44G6v$oe1?pv`#0E*S0{xK&$9v5y2nUd5S&3~K^+Asm9Q z4c3jh-uj8+a(7C4+A98rnEkHUEv!1;j1aC~-`SezVsl7q!O|D-y^7D?AuUp(v#mww zK-po++=0_M!5!=k&$zch^Ao~{dYzUGSu6at1s-&}m{;(zGY9;2+~PqmxLa++zG@Ag z*9^T@(X33GAxP)e?`H+L=ItzDc4f#rj9LgXsvXjGiV#C5J-FHUkmHd{qD=C$f|!e@ zkRxxEri%CiuaM)h*Cz&9%cg>xan;c-2nUzoTWkMn5(S zX1`;^aQXeQg&j3L!^)6ced%SHgcJ*FLcM1&*qPbTykYp(^2#g{8WjW9D%l)fJ_?M0 z^C0q%QH>0P3*q?!%sCVm^XG(_>53S}Xwij643Z;SfJQO-J;>mu_hl&yoEHKDi%b)i z0vj9Q&47z7TWD# z-*ly?`!5j(L~GxkbnvYD^1!RwKGTOp>{IQ_ld(66A=s*O#V1BVLojdm0`M z*RBk-27LT4t|t@_9!qZ%y5& zRz7usUGNN{)*XuhiLSEy>$l>(+O}eu*zv);KrK#^4kr(TGHZ8NnHj&wj}|h@PMkbM zQvfn0usoI|p@)cHs5y|*jU*v2WQ!8XCO4VyrKN?AzZ;kq*I{OAAfA$)p?d%yU63%1 zo-hx!Pb)H_Wg>f(esll>eM-2&P(TR0NXTgy6P-@zHWS4j91uM1X5J6&`NWYEH^w5+ z1qr%OTOv1*OlE5rNeA=PMCAoNvgTKyDg`xO z4e&J{QM9P}A5srm5^b7ddOFW8LzTz_K4ZAqIzJ#kDY8?)b`K4L z5oD-HsX%t{G^$8ErZi`gw=dof`g6Flgi;yxcZJ5(b-0p3(h^(XUe0<=wtCq$yiYKGm|O9tS-Q& zqXKQ?P^>#9UwR^auPX+D(MXS{o0}agWdY2b<)Vr)R!Icm`T#wfg z4xMR;VBvva-IabOVo43qait zRnXDv5*b+cXf=1`St1|SJpe+Zu4|&7ZD((ToprbvFjo6>SR#`pBcran$54cWCwb~9 z)8FC7+n#Y(j-C{ zsn97^-Z_RE-m-m0slZSG72u>*o=>a)+KG^wD<@)^tSSjo?%+LXuzNv7E|T{@^|P+F zjc^3twb%ZC)u>7eDl#zsYrgw;`K^76bx^eDfac%=-1rY<#)OL$^{I7QP!OS%%Y}ZV z$1-!nUKGG3l{SGR@pZ>sf76N*R{uDL;2UjulA^#c4`Qu<cqjQ_DvLSNsA9e};x(R%D&GK8 zzuO;~I9{$cJCb;Ns4}yflUG<5Xy<4%im1{>!rBQe5mO*ky7VC*rP=A1`z zP#JT{NGsW1P$VWYozZ5bg+|}%O7pa>?vE`sS!nCCD zhLXAG9NGr~A>QaY^gNG{epD%oN-buM!FC(v*Zr{;7E>16IpH}9j7{a`b_3Fpf~ch>G<7AyDRcGs^WEqnZ$NdcIYJcsxch z??kqNM$uU=y{62w6nBc)i{)yImKc*F0au#c#7+<@sDN zhR)jX!i%8y)hT@avyenTNk5ILu?-FaXCg*84a;mev;=jV!k<0n^Jzso^CDOxuP@`X zQ2tVkCpv0cCwz})6MuVG@n1L{x$l4cf4HwtOm_W+GVo*26iEyW2E-45zZTs}{4x$Y zM@;~UBpAsN@%-q}#!!gg z<>T{(cdF~^eEgiNoyqmbr+R%f!{G=P@iKc49LhO<&mgo*ja~?pONt(xmuK7qrWtgRh^z9NIIojrk*II3SEkB4OmY!npK+K94MDajUgzPOwArB z7k>>hD3^GRuO1n+3B)3~np{n+UXh-(e-Nl8+BlL`upSd=1Oyr?HL03bO`u*q`xtKL z6!T5nFWq4o`q^mcw{Wa%6^){-G2F*a-_;(Gsp#=jK5lx5tFL=Y{;Fp*T zfkG(?IjHatwj6aIUJp&sY7UXYk&xvvF45N(pMxaax%wU2K2dbh+?(hy-SFG0o`tp; zUsXodz^F)R=p4E&E*iBeLbO6pQ=0rj-VXy@mFk&n4@qfe7Hv6&7h`5!}^v0}B2``5Ie*3OmQ#Q{~`O93`HJzH|fmf>Tv z^1450Z0bKvf?Yw&=Kd7rauRJN1X^>-h_?I;*@#}sC(6p-P4Xr-pD!amck3{>P!twO zQz43DP&ZFkDux-MWFq_n*)EM@T?@?cvym%LFx@&}M6W$7HvVM%~Imp)! zg7O9j%?|9abZ1W!5@Nk$$30phrUpt;BRQ2gP7A(bmDCnfd$MP6&c5Ntgi8mBQLx1c z>IgqGzHXnEwH%Po(sg> z#po1M{HkdVzhqB`aIbzgh0gO6im&5FIt`Ep|JMwG0e>8M&fE;IAPwMydx7j#J|iSApn67qJJ&{TP15FCc2W zG+5c-3xk%(v5&gu$m)*d$aOBykzpKWL6a0tEy3G?D;KQ?SA|o#?O~+tC7q?p&r`4$ zE5~0Xd$UX ztaKO~^~mpkxTzK2zfL$~TDhrW8UgD4IDY=HgR-Nv!?NSF1G6KwL$hPGgR`ThM`wp; z$7=y-L1=+U0oQ`j0vZRW1w{i$222K41%URW@+2By@rh*YZ-hQeHnfkj~##< zDBKUJ8`#ZHAqVCf@Sqz*kD4Bi9f2JJ10EX&8weW;8%zlR*;gV5sss!UJQ{!$h^71Y zPa1m26c{PMA|U5(`JX)7;8?!-e&*dy+Zfww+w9wJ+aTLQ+r;<)888?>i4Z^pd?A?u z^>Z+5d@;MF@PUNA}r_WdLPBWq@VCCjllwCV?iwCIKfw z4}p#VkDg4wZlQglInER@;YYN6e7SG-|0Jh;u2I9sP%7dUu_Fp_WH3F#8(Ps)^%s+C z6YwGxo{8g;dBxp(&TffKk$J`56U;)3`4E4E-J8zhiER<^1l()Snu=wUcttw_pWGGD z#ZHp&#N1=g&WUT!(uq$IdnMd6%#w+%iC>X<`8uJVSj;{dA-XUAJgHySy?td4|B~>a zJ)tWw{hcNK%6l?YpefEr{Ne9}d?H$a7i&ZC5$Hs8Qe2QO&PVi-p>(O|u=x^MTFx5& zDf3EmQd-~>yD8Ha<-~fjR3IsSMcf&1PdjT|;2KX$)*0hOa?)8KKIt<-H)z)M+0hs!6~dDdtb zm}bTKj~ZO#Eq|Jz34J9ju_mt!qo=Zdci0tJT&lWXc`OzCZ)_M84Ke6sl*jIwK@^D@dE{T;b zeOHA?gXPS`56J~1-?EW3VqHNTKA7@sZ<-44Jm(sZ7EwLP1TQ6L1|jEK-jO9m_3Xff zP9D(mu~(3a%V%>n?ZqKIXLUT)PFST*8kyUH`85eOudS$>*Dg=}hc^eN3U6H-zlEz? z;2Irc)t=Lbw(q7`l&eA~`k8v8NGsb z!Mf&+!jtX%b958Z)3;7iFCw9nWhA-z&M1z~`iPDACEUf^CyvhY=&7{Ks=Dm9?lvIN zNBqU=fQ{s(sHabv?Jn*YF6t$!S|^Nd_o;CUh)VLEf|~ZEkNyMWd(@;8e0uyZrj-~y zXVdJS(@9>xg-kD)a;`T771u}e?Zxs>aNFaS;N=I0M3?T>T$(~PRXxh>7ox$s{9zX3bvqr(gv^A3T;qo+QGWY&@_nlk>*wOu^~ky8u*WTDKQ5JQ{5qo)kkI3!A1q*%0M9D|fTja!d!NG*KokY3XRehJVzw23PmR5`6yOubHSOwP-g0mFK_x1(C z-pao<4fU+ge*j|gx!c^ZkL>-2#Bn#cJ=`*O?bAf*VtC8? z3=^FkldMHn)SiM1-74ktV(rutPl>-w!?`UKg;eY+D9ZR!b-Kk`eurC} z6>G7XM!~_ekzPGL5BA``DWX~zbW(=(-4h5{ig8OFdV@|_z=^dC;8W@WJb?t# z)94|%VvIv!^lF1K0HQCi2(O!bXXADGN~R#wM}h;1T+8K9-`zJ&aheDClZ5B!i$c?U zZ_pi~6{S35tHdDP6^(d=ebKJvXm`TKy?XqS$O&J71%-*xL?c4M`L@L{flHCKAY;15 zB&b?lYi~iz6#5;miQ0?`C%8OiX0ki@qTw{yo+yVCvhzE2KOs+eRuAxEUG{a4DFr1) z+TApIPvM&P2J8#Y2X(YUofwTbl#S~Igb!vcP+w7YPI2GZFDfL`-!UynQhi6TE`!3~ zsJ(=|o?sTNbG^zUdz2s}>3c2cw9|4Jap z;1089`Cg-?{;fdbKPM3U#rOVyNb?(2-c*rQ5k8Yb(yh=+A$TnoeBtAwuxc%oE6|9o z^T{bCU@gv&l8jl-2PeRCD_29j{%jRi|MAOGL|)BMyrBD><|`{^N(TurnR8opfOCA> z{FY|6GCA5_X8U|Ra{1!E?+bQ^X!CMY$JF<^!b(?A(2DV;?jgPQQ5LCgU(m z^>GO0_$`~qoj$WuEF|C-%PZgvu@2TnCm~KV>T4=~)JHFxuANr+9<&|a7dnlxW{gmX zG+zq@`3c>nq&5t)D1ezEu`xwkkT&L7n4Q-pIYAs9iO8rC3N7`Go=G@!7SU`ib@O))+g9XoBnVyQ6uMa~*OKO3!|3e>i~kYI5- z<3?F{Vo^4=SZ}2bxcZD>ww%jOiEu${AmL1!{}GJKh9kXX1&DL$u*je=lOkTxq!9=% zWj#nCOraNVd^W>CWl3rpZ!sutF3)24DD)OAd*7n2IHZ8$(*idSaWF&pCv$UoVA+2& z#eg5gsuXaC5mqrwy7LgM#7HsNP-+gWtwX+Vb)n+$vF}v_AIiME`7^TYY}Jk9abm%5 zeoa!~X&9yFa%lfISTD8niG1#Tq7kXbALqTpKoUJs=kxKb%(r}0)3DdR6#5peO7n$D zvqUlhsk#0S3+D=OhfZ2c2R;xSs^eAAIpMx-)InG6dKyJ|8B3SoRR(tbmBiN^e#CG! zvRz2TGhr))T6v-3P+G)vAuF_6;eHjw4MG9JUP2T^M8q{AEA(2ypHF())^n0aWngh- z(xI8S5Y^nj#XZTn-M%`|ECt7Ka>ExCKz?0RmNiW-?WHkJ0T-vWEG8+#XIafU$5%zi zOAO1E(Bgxa28!%C2e{4;Xm(I)1*{U#xu6DNA8v(n)^0TRlH<`X`It(74Tvlsgq6-f z9d!s?HM?~(*- z-4cN%4q!wS1oE^H>eEFO)6?z%Fr%4&N3j_(knG@B^T1{fGz1EY)!Gqb2aoJxMPNcs z>8S|t!9adDAsF4tVZYR<>!@{1Zps2pZzKTT=zDe@0N(hgI*W+z2Ma_Ge3P0QiIuan zt0JZvU^qwa@jGLG%yh35RD(?xaw!;?!*t8G|3U=nDpm)tWSc%#U8LFG1O3GU|7kcp zfFwk~=r;&EiWfT3Q@k#0rPCU+2xI_h42XAdbI>8zkgsPK4Y5*%BW(o97;1%l`}}H( zena%ZhG^3q(W%t?n3JmFMM>;_y{0>cVU66|(3@Iv#du-29gKk@lFmA|H*yA1c zA3YIi(9S6R_jb1p_V0S4|3djI2r>!^2>zS%|DXOyLHi$qHJ&;6CT$f&;h)eDphoS& zi-eSNKg~)t1QUMF7VMatvpLsVHEO3FxAXO~ZT+eYYZxR2)1|)=#k@Li0*!ClCG|AD z%ygXmNO^g9TXO|KB*t8K7_OxNi@{!vV7MP1=}g(<+lx?jS$2-Qf>@&D_q%%BG3Db{#j1q6^55^4R{(Ls@Dud$Tm z@qjfX@A!4fcoZSO&~gm^r5zI)p>O*-Hv)sdyA7I9CCa?1cXgg*()G1Mpx19)!2AEC+v0UPfMZw4TOG z_yks#lG?x_)22`Wdf?C^u9AhC>M}!8BIn@T4i?f-sJG1yPbIg`X#btvFC3zi?l-K( zw2qZKZuD&NfMk5Msrr8R9ZG|&7z~Hopbh1IS$dHUSqSD0#JAx&PKzW5$T`>%c@6im zk5P2$ufSyG=b~`Y3EGcGDR!qEzz0M^jR6s4d*EC!gIxJ+Em3^!zEQL#PGQ^S87)|@ z@dZxOXFFUjsONurVv{bN;P-!XAVB{&te=7+zp$e0_gR^pzJvb1Y#VXLu~GEq9c-PcwbD>3A$WZ5P_KzK+o3#b04`Bn@#rala$?6l;Xn zm6Rz)NAA~|hj@IJq`}PaC~s|v^s^fQC*nLY4^5Tn0cu>cjvl?)M5Rr1fxa}N7_4!< zh--y-0YG?0m1p~A2Kx`K@T59*ux6SEhLKp<9`cg3UcKQsmyEd@k|QSx!wL7cw!Mg; zY$f#_W(uwgNxzJgn?tY{n$qJ4I*>q8QZ49s5@R#W-rkn%tAo}mej9m_w{Z80{{_c)HXFO zBL=Yp2oajpn@0BOJ!1RWlOy(=-e7Dr$BneegDs$a7BT(%Wn2!w2+H_BvKCYq%a8hG z|4`YuF3%BO3@TqMp0)!e6}dJ-N#&oI)Fr zX>jl<+B>2hcB;qCG9`jB`3y3zw-nZ@Xk48ivGwKfWgj5=Ai~ z=XTiv0z&bJi`?-7ztrFKYevXJaM448Mj=E&qY$F#C-2X^)*FC?0}6uAyq=wbNFwLX zy{<*hf9{6FLz0O!ToC_MCeG}4nFynxR(uZaCEMRapPpk34xNwz-g@{~ z`UW!=E(O84s%$EvF`S>A{a}bEg5*NOA;Z76YEsKrV35*X2tB2L&^2P@zRxJ0r((T9 zBSqBl)ko@ivTySUTxxPZz+v-yhRqxwBi?SMR)uDt&WUUS-nNZ!jYKv5>4v*$2-$g6 zTM^Xt%2*L}1&(!S1VsFEvwk5psH(8HaWlG zdh;z~FnmN=F7uU4s>RIZAAXFHd&TP9gd&Z*U~N+oxq;AR1}hyEx8~BeG-E1IBWpBS zE^G3?DQJ!qV1eY~#Jb2N5uY|~^Do^8%)-T29(;t4Epz<6Z#X%(@Ztg5Rd8YIi8(cH z+^WI!R~I1c=lmZ0ePBZPx9&avIobK2BiT2`{qKY6zj}a)L`~Iigd6(mvv$C&3R+dG z%$-F7GxN=BQYcLjDLhcf74A8U#SZoxkxG*ycl)!|1t`n=DxnISQ&IR(2+#Wh_)bmx zBx8aP326U92>-|H)AOo+Dz#GInbsJ?D7PnR(#EB3LdfhDT(&XRJ6n(V$#cD z6{!;_{qwzbp%XPT=mdJh+9uD!))cL>Q4#kzb7%8 zNOJAP$E23c5t)SJkWR?6_1#lVlN*(3EG&|6ahRlYEf2*srW|yvXlNB=x&$nFDM~pc zXDowxO*jP5%^|JbT^AX~&BpV1%qwHRm$vXQ8U_>gQ;E~Y#Sh2+nT@+=_B4Abgk{DR zpU1=FMn2==YmnAGDE0F&=@!j+S?#Xg&(|3Oswa1FvZ;u!^@M!!f|G5y>6=qwN|WN1 z{Y*0_-#`Ck8{m9cb4e272inbv52)lb?Ag-sRM;$c|2c+0;_*sK4g8-Nt<}x z|8A&){hf~1@!Iq!=;iwpm2$<~cI?vi*MrLhW$aBP5MJLD`^2$chGB-O6Qk1LoSRCI zVTpoVgas&>eEv2h_t0&eKL9Ni1S5(FaDLd#xS4*2UISy>HMi{#h3QZ#sMBkpG5x^^ zs8fdCmO+dMLj*bo9g~h;48wK3b)!foQjGY>QUDJ-E?=E>gASaZDAkM&0I%0*dzkf$bRhr zm+TJCl!bGpH)mGyT&=<_WjR((HF__NRuyi>TjTriR0;Mr7pxBJ3NKb?ZT7rzJzF5Z z4^iaXgoj&b0GiHk(YF9*zaj*rpAs=&8raEf^mwj4J1A0~$Ctb?xNb?W9+7z}Zw#hU z9>gkqa1HP4m2YrRm-BF_S=hpfvna*)g=3XX^e72Bb5NHOaDWTKzBo)@9YL$!C~frm zDC}U>`JAI(ZuY(kP02os^a|cv>pR!ELZ84k)Rw;BKC~aFTK;bO&S>SGQHgN8bETM3 zNtH=DNo2H6Iw@qdPB72hUqWJ?Za~M#scyMys)0@3ptB|&tE^V`3A}J_$u)3WfzB?$ zXzH+&9I%^(W>bc#cH21&*Pnw1rwUH)s8L|Ba@+YiP;(hX)N&e(H~suF^ZD&4wa%Jx zbE$nlVIR|EZwtNRzurq$cpIVc;$HgRpyaJW`JMHRmplp&9cL5k5va$e8Q0#zzSJ27 z4~6IZSKM2rZHi#@H_|oyEz+_5{SNs5fpm&a4$g-EJ74iTQri{T7~#v>Hl0**4h>4E zqaZZSh9cLEKSvHoh`ixIp#lwcgLKX5#D$GGeb!EN;O#@l_W3vf{y_|>;fTEJdAr=l z_bY5Db;2gSK>Pq(_q@;ckd0~U7t@wh+WXDZ)E|K3fo5Fp-5x`rQ$cND*639?jh}+Y z5b;I46Vnx)Kp>A)H|(hiMhYxqHv>}61_BZ0W%`h2DyH#8{1&!hUE026xfALu+F7MLl*Myn3yq%BSEL7X^zJ#uU%C9UByxmcKE01UK9lPXe?U_$(8%FI($ z1X5AUGZ)T+xmisD1|un5)7r;sN-Yg93fqQXh~gMAcPaS-3LtQKlMtUMN&37Og$APX0U;DA)yltcrZ}>Y9_(yF~4Nm;W<7reI~9# z4f>C(4EcNDiZ*{*e`LF0=8a~uwx{Gh-0)Gmzq`DbF>=s>#gjx zUX_qGFe=uh3d_-ofgKtqbWKu6QM1;>FYOA~zGPK&2<4~iT3^o!hxijM@&*CT2uaK0 z6%W|(i#>!tkF)T^DUzQhGiPz-ZNWYfp_zlzsYQl0u^r-|>^ndiBVaM9x zosxu_#oEzfsawWP`v)N53MlnraZ~7X1%wJBy|Yv2Cgw)zv-D{MJHwn|0>M1dhhoG| z`w=0f*(aRf_tk*VMT?sa*#{#}gl?nsDZ=E#$TD&F(GS|C?WhMIVPrk++V^)Z`$5uW zb+@2%-2erQ#@-m9PrA(vHSrd7ECUDi7>Rk*CgXgt57F-p@D_9?F!#`p5`v@Ar z;l98T-W5De_5AT2#<=+e>Ppe=j;;kg$EMmAX^$PUbil3Nzdg#Gu5OU_=1y}Fj3YWZ3!=V-L>Ci$6j^)ro4UXm5LI|Gb(1H)%k4-xY zC=0iOhgJ{ArT!(rqYU%jn$pM>^YndJ5LgYm-jl_>iF-M+_rT#)W7ZO;tmWZ}vqWAW zW=Rg)JVvp%MESe`<=yJ9Te^)-`8)uXMe>^H%h5o~`C5wDyaGFKP`kn!$DJYaf@bo^ zb^SiIY`2T~ss&hiV@d1jwd}II%F|l;$#|)=s_ZTN%%<|RYrAc&tc|YC#z)z8(fP?> z*nUeOzjJYmCMO2%Hmc_m^c-`KtxdjL)4fA|-~E?DHy4RhRfe~Y3?EH#cH&&j=*iH* zeIH>VQq>onE}LW?^fKGx_r}WxoK5|&(|IpD0UPe`g;dY~L{OmsKzx6(9R3J=WAeX0 z|3%>b4}f+yurfFNzM=oC6D?G-bX-$H;2F(#K$&5-o+Bl;&R9ecwxR0Hr;)}Zt^`y( z;>QM}Js^;D4GgEo)I2SCN9Mgj?}cdu&H{Wb#Cw*9X^&fnan2A2_xx4$c)7CCZd(2R z#P{b5P!EwXKp!$-Re)j88gj^{t?S2TlAXmsL%sBkAn`9rqx8#|U6CZQB5UN4ilrb~ z`21*y2yZ6lFd}{eOO_fUIt$W4kB8qi0*o@TwTR3c(_Yj~(sYEk?6$(nQ;kqu58deA zH@v8(?S+#U^p6XMZnO?@(BT!V6U1S9Ih|B5vQ)aphCI~r1)No5yyP)J zo`pcx7;{F~%muqQ=80V#qNB@}us#DGo3nuFNY9 ztI06{X%CPGjM4{oK!GMJVSlULtLZxi_JvU~JNm9^`#fP(MPvJ%gP%~xx10PO)eKq& z>_T=7LF+r%BK-ZSlQ1tCQBcQg_ke8Z*A1Toce?x|p5<~2@aQY(fAz~@4Y;otd?mH} z(U7x?^6B|@&0D`SV^%XdC-$(2)r_QtVs?k}c7{|x%58x9q&Tn?9%B@cZFhXav}VW7 zd`f177|B~?p-k3q#?o2auzkq&)mt@mg#zgH|iSf0zfAt;oSn5 zZRi7AZ} zqgAoL_RJ|B_!r4%-8f}n^-c2K{w>M(-}cIi{EFX|tf=^ZZp|uHG{0Fslus~1WCL=Y z>F@_24Hig&pAo3?XApiuf;m$CU~5H!jBrHpsVOj<9<~=3weY+RblP49jj}3|yB3QU z7m|3d`Ky;at-fhOZ5oSdw%Lx4&2&dxrljvLOLTvLFnW`1?jg+{UWni(A?;phYwWXS zFxyJkOhFqmt6*HBLr4oGXWSU6M|KKOGBdKG`uh}t+RCFT#Jf^5U|U9oN3wv!b*S+Q+fE4FRhwyhQ0wr%e`&&-^2>RWqepItS7 z!2QEr^|`wH-Fe9%U+O8e($8E)sblY1e-7%tjRAc zT?to=I2i{LN-XXccJE0Yn7HA(=!wEDJhP}xS))L)l{%1 z=NDvX)E%H#lx8T%Xv&b2=5nMeG`8AcG($=?!MxYtplQ*iNiSWaAhE$R|22{>$S)oR z6F8obsEi8j6t&uH5BM9)fvBj`oYL+$ro$-bukuI=#*y!{skqisgoDg1S`$spyms8o zSQ@MmLDKQwmCLz78DthP^G9m06Wfma_Ngf1@rSQUS`#ys7!`OiS`r8TOlZUVoCLn4 z1od^qW3v&|CW#qwBW#w(i`Uy?HO_x5PC#65&%Qe~)myn6E~}_xobhu^ZIxR&DAgYW z((4_Tw5f~I^~1^y(&S%Gp~t8Mjuj>{} zl-s6Ai*u9+p58#e50*n2mVIW#upn1IDr33UA%8%Cx?cVSjR0YdYIrqg`Ve&)(=1gDlQX5mmscmo->LRz zNKX=MQhzWd>-GB$q!ns?R1LC39n?o3PdyLV4Z~5Pci(y3>pdrjfPRQdIL$@xTo~zf<4rgON4%czW$SF=$sK9d4s)>a4r8s|Y^K z3=!x-V}{B}6zS>exk7&dz3efFSciM}okSEt^c8)s36Z^mddk#+@+GMncu?SpI)g#J z(cT8AswVuln?t5c8Ka9eV=3(UoS-WC2-N9p+<^p|w9U35L<25%Cv+Gi&1mE1Z$Jy{M}HRb zci|NB9}B1d!=aeJ09gMIpruk#%Vt&=*^5&*uqs~qXn5X={t18vD^G!qjcqwtoy5E@ z5cmqxu>dJtKrQcUfXf?@6gGm`c=Nmu&xqRw%0c1SoDl73kLQ~@H+R?c{`~T7aRQ#j z=8i4VUx5z(MA?|0P?A^>@a@-?p(&E8&pR?NQa;$u*UWX`dx=mlGs6xFOKbJQJZO$a zx9x#lQ%#}}Sx}7RHUb#UI(lsAFjF~a7glS~q!@BINQ?DORw+0BW&tY^A;?$HbCo*p}^*DF2lAuq6$%%29;i&V%|tUg4$TvSfr77jzb6`nfzXInb()2ax8fG z)t&muV^M~-&#VBqVWWLeeq-gNlCQD7U3q#H%4nLDnt+D#(P(}8h8gX^?Z+MD3Vp{u zwFelDfQ#m)xl5nvY=C)SR=jBtu;^B*L90MxCSm-(hc_tc*&?5!W4kH5`?o|j{UnBsno;s2q357twSWar- z$1XsCU3lu+I5jx>pq4Qzh^Enu)4JXvE)yJZgn?QQ@Ff(uo_J0a%IhK9C`e=j_U_hyL)|r)uqh40vhOxxi z#l#|YuXOG36=hbo)~){{@{2pKj~bRSg`IXxw@Tqw*oo&gsNAH5O1YHRzDW2;Ig^)h z9#z3_9@A(rBy}ncoUueIZ5S_NuAyy)AN|b}(Et$$tNMiis>&m728E>78am8M;sx;6 zj9V+k|NgHD-haNxLiPQ)u(3Cx)3^CPwdH1@=iq2*M5pIq%|Q2ecU!^C#QOhxBRKQB z4Eb(te}V$W%M1xnsMfOO2=oWQo90UNQYNd;0Se2{Y&(g;#{238$&eHuWffb=m}N<_8-kgr zb0X^$p_DV2+<#}zOnW{Ni@4KtU>_Hjm&yc3z_%J7XD>@N1SF2brKzkbPzZxxVu@ej z{z36x;96l`p9H3<>nzeNC6T4f#FR9V2da_p7;vsG$2K35o2E`|j4q`RX{Rw}Z{Wx@ zvWT;EF$+L`x!hJNZRkWaXbE6dMRIm5LTnzFUiljrAl{0zkQ(qejYc@Nni|s!b*VA7 zzwmqn2RcUd6s*WZL85#zbkomDRpi=wPF4}7S=Ys=Q*;|rKx@U|@s-!K%VR9&!K%{| zcK0}=%aZCvK)JH4Q|C6I$ih(;B{M5RPVbnCc1B}LPH$%A#DcT(5vlz@j4<;*CV4U< z+yM+I>~j(egiF=^&vvWS%q5%@+xEwIGA-;Y4CWrVlA37&)$0z+%y?M1u$9i1e??NC z<%rhqToi_|32P$WBz@l;)mb#KpEK7l0!mM(XW3fK& z+#aDR(ULFy4FG5EM?f~0F`m&6e#rh35bq|lo56j!uK+>dL68fVZCCeaBsqgx{P?KN%Y#PG zC);|5N+u4`nutUX911b$rZRx*yJ_66i#VtN1it4WgLtpSXjX{MDbDj_Rllq`%0&k6 zr&EVfvO+)YQ?g;{fV(DbY$rzj{s)mbMvA(WR991+*3Br^&_+%M-?n(a3n zJ+ODOX?EPicWXKBSl4LzpCS+kH5K;3Z@A$fK2yCj~Xd?gLeY9Qq+m2qex=?({2>$guXy~heP*-}#Rn;5G z!*kzIgnsL#&8xa}JaBothxX+hz-ELMwAr;|O2P#4JUY1^_3)VCHY^G_D!BR|d(~FJ z2{jtiqmSKFV>pe3>Ziwmc3HXnFEC>VzAQU?kj9;sywR#4cjhbaBEmM6mPu4;b4Cu5 z!gmrY9!PkJ;}(~w0OklE^B?gi@HPZ+=?`{&x*1H$U75VDEJ+aVyZaN*&S=T3 zthY*dI(>EoO5Hih$gjT_lj+Ta??S$t+I9c2sr~;az}f%5hmI?i)l}A$;Xi?i2?b~j z2}0|cV-~nN;sn-QMpI+t6O-Ld`y}hQlSY!yuO373pnUKl9S2;!7sS z>EmJF6sI!vi^`7_lMm*qEY6U!#;^hGwU=gtj91#YSZH+VLNS<3&`dNp7|Wq2sHf}R zbE+7IQEY!2SaVWZ5@A$hlnD-NIYN7s_2HC}TNv;0rZz&Pi>0#QsIWLl^?1>8L=B%e zq~hr{RblpT-UHWzgcxEf7ef%woGcD_COKr{AMr5RBVu!nS_V_*Iu|P*6&ck>^cF!# zA1Ze`*B!o@^Gjotl@|5|MOT^E1@$s7h^?g!_ZuGCkJ~8y9HS&BkD)bFVi7P(T~(50 zyX6)wx4F^W5HperGc4ziA&sAC)e8mWq}Gs>R?SMKI#e8HQI&8SXDYq_bB&Q!n5aSq z%_@;f9kz@cIgv&?=epQrD%HB5KNExSIBoDLjS~eV7ZX48*j`pt>%p;hv)a=;o~gl+ z+}b-$=uWh3E=@+rAX|K18kz1E;~r!bR~QeB^0a;HSqSh2*zXou+KdOWj?j>Mpr z)*&W!w)#!9p^sYJzF1hT5V+;s_e8d2Gk-|-o5)&bVXN-*CUV%(6RL0k)|!f^@`XO` zX&bd8pH6@sn=S43)4H?061A>({%hEFA-$G=F-i`j*iJYopaB{|#mLdF4sOYiS^w7% ztPJKaG6T9(qd$NCut%IRI`5ERWM(jL8)3A^Cf35RwLC+T31+M()#A7qHEiRO1mH@E-&3*C<)R^Fm}aCPzP2m}zadWE%()#S z(&~!zk*FfR>WQ^PfFWx42!`%TOS&RBBV~z3A-#65*iMWxHN;hwkblbNRSf;9uYN32$Ft1HzFQ5qaUEn#{<8Q=R4Bw-la<{T|M*nKu*3A zc!@2PF4!U8>wW-+Felm1zo0aPhikiv+SDnM|huuh0hD~lkr3`mT zOwx<&AV^D;P`043_4~OX9sz9>y@Q$%FkcO1Vjiy4wL(-c(z_eoF`<|0Wl^Q4Gidgo zCrwN(-qR*cxSJo+CQLwD2O3A?isIOLVt6)yW8nUo+WIa&zn$)us;W(c@+HzU>Z^e1(tVKfB|en_A~4-y zg~CAQ?c!B>3@d+({cnq}57Vn%qevGr_HyYwuY38#Guu~y1vZ!i9gIy5y_oJM)>qDT zzTR)he8k`J@pFRWtJdugntsT^Tn&IYmXBnzKZTt#dIK-Ct#svi?C8{*UA0X zPaMw}th*5mrde&WBhR55&L~i_ho{~c!Vq5f<`90Xi@s+mi8I$Q4%|dXg3A&x+Io?a;l_*w8f9e72UC+0(>~xPo z`d1eAjA_j{sD~{91gqN5Q`~s;5~0RfvFl9{gu_3MU1tETQ7$sFXp<_(^@hkf+={SB zEaY|8HM6BuQ}q|cj!Kto!AfXO%fy^S-)p6<+1?o<#iN>huXC+9o6HVYS!?vtLFO3X zN_^8lOQf50j4vajUi?j;Ig+ew??xW+Z^*4#LpL5l8n2%)(0XM;U&j6DD?25AeD{C2`puqY8Ro)a+s&qkD~mT*Dtbn&#pt4A#Y%T z$c!T$Sc$T-5nHUj2`iUe8~_d+=?xiY=&WOMn-3=kprHllgmjgs*UL$P;k8=RO)NUT zLygaKD1M3~PufCh0vkBj)b`Wzx0$L`ruN2b(A*;(R7mev;|`6s%K|o#z2{%O_`o1M z$MW<6K7Nw$tr+`x=}_XmO5+qUH?e-rwz9p#>nhXX(Jv>2Xm%iIH3dHp^6=nV=yG$u zD?+PQw0hN8grT4a^2L^C0TJlzv6Stis9?s;;V3Dc88S^vyPL=eiVFK$8UxH|!*za% zA?U6IiY*mQkBLDA440c0ILyV?<$~yQd4@510TZNqBh=|ZED~wb$dK40p9(5NC%bB8 zkU7HcofW!m@6G|P6Fp{NF`z07I(qj2+za6P;Z@1|CHnN)EQ9K>4}+cM$owf1)Q%Q* zKll@leh1O4{03z~W+ma@Jj#O9Br36$_=2yFl#`^2q40_e0Nypa1R$AxiH};C~l|hyM|U@$Z?a z|1k{?UcB4zMOn^# zOgM>YLUyOp#cb7=f`~Z#;!)j`8lINP7C_rVHs;oji62X4j3LA4dGz}REO`Y?Uzj^OAmf? z*7Qr)=S6}foaZKVA*i;sC+fc&SDeSK=1kq3im+(N%8!)CR{RWDEkqh8fr*2E@)Rhr zgt~BIuT@`ouoo?jq!QtGn3ZQ)aLvy`?X)O8woG8hpJu~=$!X9ipVbB#YEZ6^t$B`0 z=H~d03SjcreDn#(h^O?n-S^wk7@r0XqAYDPa*M>PMU9 zb&%Qs8<{OwUF;1IvKo7u-Rr7 zDN576A*r!pOI~G#uNS*tE*&N}A)fAVy$5DNtnE#4&WydhUMt8e(U3-yxA0ByI+Ekl zi7G6G3HsB)B{sihy!&uGl*GL~Js!^C1We*634d*}e^`=#^qTNfpb5|#9ZxEL>G%P> z5{M&@Z>Rai!y^wc zsUT`4)7^X_E?dC}K6x34N0)D znWIMz(y`fy3$&+N>hr0MjJ1wnH*+}qQ7VoDfJqMl;kzwqDosI2Au$W_iQ=J$6#oqH zPCj7v6VNO$QmhFndzkmijpk_WiB1O~rKM6piJ@3PK~C9DagZU%tn)E||A@QJt%pXI zc{S<^eAtP5$ysX6(Q51nX34(uH*yNJ^yao#ze8o))tmDeYM&F}TGab=Sj$x-Hy^Sy z6=4p-ZITk2<~6y!R=Puw+wi0CJ_yZb$y*VTkcMlQS=%}!b-3Q6GT+IOONa%SwP~Z@ zpIV^})TlkXQ9^aAaQDsb{@$*dGgWOa^FY`Iq*Z8z87@$oOGm>bn!DNxq)f%3*7dNt z=gM)TwAh5I^KWm#&Nn!)Qjc#0L#8{l*qEJ(9=T> zxfEV6He2rm-_Xr+f0x%h;R!5AYN)C()lQ|$Cdf%j_TudhzcN24 zNLt2>1vV%PFuPeM+#@r-6RY{GIX&fvx5f$aDjWKWlg0_bMd|ynPwteSFWNG813(or zvzK(xT-m7isq<&ZsC#d5s`pKH)%Pz$61J=aJ75V66iq4vTq>gsKkXri`61s0yXK-D zL~HXF=qf#cq@ePaTs?%KAd(c!q}s_}kl|zYn#7sC^hEu*f8HNz#(s4r6Enhq*(Hrc zEb8PQ?3sjN7J`2KI=&!|j2KE?z+umZ%n^!T@($F2XBXX5HZn$woRA281xqwL#Zz9U zeK#&;l*F6ButIw{JjYGSs@zcB@?BCalQ0SknX*kk#YN3hN-R^)ES*%Ax`1d9KzbEGW?_@#$PhBXS{KaZUgM_b~ya^C_U4cv0_3o7sD3)|sTUn=v6s+^V?ywn+C zhUKPrRX&6A6PG9DnWt%$msZiG7o9B`Zj~<52(!^Bv2o8Sz^qJDD?Gx;E*VZOTJ_7b z3}5fJow!%+tSL(?l|N8A*tB!{FCfpcVXq`vsW9;rsaP#7GH)!PND}?wIS$$|OwGB> zmhRXYc!&QUZGtn}bgIxnJm)Or*=g#ZAZnTmGm9OY!-Hrr=gN)mHky@h6#*l?r7w7~ zNr98{fv)*Bpb+B`x39S&k~Rnu0oLL<6}WuxFTc)0?iPp^;=`g)6w#PXIB3&XTbaOH zDIB)gtDB1JjUS5U^QF&X%{hFMbvR1w?|D^c%G2WX!PVc+aU%(IB7j@Y;S*+C2*!w$o)vQ62yP3&iZ zU4p2pjQAZ%$`taJqz&&}&`5k5lxgfXM+!ese2`D8G;ljgVex0$VYi3}@QdzlCs?m1 zP);*ycRMtn#$=}Gg9ko3pVcGbaAbc9F;U5&^9ODrAiE(Xd$c>qdXFXm8a^t$uf4gd zSn()(QSF~SQexcZoa>fI%xEsvT?U}kVd^sO%UxazWs_xpw9cA^v*8NIDYM($EmCrB z2tiDaPW&jd@pb9iv(kv#-d+D~fHf^+D)H`_KG@T(ARlPR6h8WH<7vAlUaG9Mz^+@I z(>rnS_G#@Hks`5_s@Q{-+Ss-Ja}gsuGq6ZdGTXsgEoSc?%l#)?cfsv|ju;es0b{VC zB_LF|;9Tokx70|&IVl(#x1@DwD9+EnQ9uE`k1&6M#xwtm3i(&&P_(j{7lF@$NnU0U z%^j9>PY_5e*p?LQe7t-;5TJ5fYRZ9RMnt6aqdT8mH`F^i{D#RtD?6aReZ7FozPh)X% z1G=0zVKE(H_<%eqR*qCf3E?k5B!)CA3j>vd(;-D32?-Y&ux%AoC+${E}g*+nuTJL2&>3V4KXHIl`wH-+dtqqRfmkW@o-t|!My#a95Zrhd`2VmEdnuvFEeZZ&o z(L93ChjMWs+=tN_xT^O7izWAZSE~cK-qtZDj$ep3{&9M>-i6-MaoWbgr9`t6_--|v zqI0^J%FI?@yML^O^w0pr(hhY+*Wa0EXf!?Ku{O&M)bl4VFSQitmc8G4ej~oY4G?4!9n^^Lxx-!yA2l= zbc?x*!S)0M6&Wa+5y;+i+k1CO53`rcZoebhP>;A{V~6zDCdcDcA9xlz;N zDE|j1#B~k``O_!QSNO8zCN9Fr*NsS|8wgL?o{OMNTrJP|!QO3l&29S09l~J1U`cFJ zcFjZEz0MW6ZMol@pD;|$=$6sH!Cj?C8hrMU zrnl+juAf?2Kke{VAxn)Qi7cy=4pvO8?zxKCsGbg=ewEt^SN(jH`+_V_dW#yFAXFJg zsUMutH-;N3=A*=gmfz5QBuEEoa&Ukjsok}%FEIGWzK5t*KhgZRWZM6Wl41InrP#`5 zT?jr)nyz*aw*lK~$JK0(xWPr-zf;?NsS7#4#YTljLb5;tMd?NVa{Vl~9B!qn#Nz<1 z7Y$J^6t5>*AR;>c=R{)BsTh~V6*tq}_+B#K*Xsw|kDTj3m?oGr){N#{vwkkt4#{oJ z;^6ZNV5U+0l;05NP`%tQiw?d zQcxoe2_NtdyX3p_H!+Vqv^<3Zq&)p0iuBkCn>M!sTWMuQBp}Lnx?=M^+)u)c+-kh#lq_i>*^(*1^;_hRXz5sG=CD zJKU9zS&e|LX+`;>H*5?lKP6qSBK~mAjnou%*g^7TLzbBei8ADK`nQDez! zQPUn%PPoiG=Kwe(&m6C_$x^i)@f$J>%xklL0w(yh86o)EqCFGD}d z|F|^pP+7~YZU-AP+!AHr+VE$Zj6BB59JYt}+{!(K!|>%AYv~B{zod@t7%}^>Np<>+ zUe&z%Sc>FyYNP?Ux7x3j?5FmyPu42bEX{OL z%M4p2+Md^~zZ^FQ*vf5a-<<=T|F|>%fA>UU{)g%s6}SFU9d5C>N9(uh3T@v_1rb*z zXSY9g9xk;ZXMej?q85_K7lxH_&udEkK0XyR(NX-QawR}Wblr~SgJf`N0Bi)4##J>l z8D`qL^th|M*!p@tQ2AD!8W1LoDeJZekUETOK7b9VZB@G)pU;+Ztyy{BQy*bJC)P340+o3Wj(h$pA4h1_9Iw%7RQ< zO1=%tO^|CWNR5ZXFWA#5pkvI*K;zI}pa#9!U!oziq2dMmq{`^Eld2;?t_k)sYQ_a7 z>+UB8l?h~o;yhEx4vGrGnN6WnHKtM&L>WUurBd)=oe%~{v9^^NjN?S>4EX^{n;e%k zOt@w|qm%3vQm*I76Z*8N4ynK9;gjpo>4wD2Iv$er*%s9me=iQINp>*5Lj`v*Ytz4e zN#^{5T6qFszVqrXDT5gYwyou(y=_~b8h(k-qa8xgzU806!$Ahf_!?WmgBj)Yk=!~E zb-O37#uGi+zIIka3m!z@3YdAOe>G;Nc;majE5k*V(@tbA3-fZET5ESb_05ckhU9jA zYnX(1F(n2B3L)InjV~c%bK4jSDy0 zzcCSP_9OEWE#3Xja7&n>J>9+d9BXE&4Q`I(xjQ{g>$}Q4w0mKL?c(BdNIJgXVn6vr zYfRm2uO{?8oXc>j$@^4z(F%4Mp2`$Xv_9vL^iu&TG|&f-kKKvKSD( zBZ9PuZ{Ei_O={UA^CR5(u~GBd$eX?FR}Gi&hpQv}&ogH=R0FQ@^0E@!FQs)}94Pi$ zX5eYTD;iB8&E%#if)_JT)q(AYqmycc7QZtu_ZQ&Z&PT*mt_ug#t0pv=pHHZ3;m^|= z=2<_kX!!gez}DEDqxc{CWR_v!Z^V@j*Z)?T-W*sN z`m>-`5ra~ml5e%yqS!%Vy4jBS?N~zfaPBr)fBL4@_Qm|aD zdu@_xvxWpLl8_G@(++E>FE~t!u~Q*<#2Qd3;u6wJp@!U=*x~I&{SR?c|zk(t(BLd?L-?+}1Vu$eqer_|*4&VqS6iHU9W|iLn)VY;h6%iTu75okoJ; zi&gwr5UBNRJ5Z7-{(A3!3@@3u-*n@6Q3(w*U$^POiebxv$Y$OaY+3Ya&fV|{ui<5} zlnS2U^Z?FY+<}bYqy{SQAGXbhrJ647r<~@j=v4;2)BBDBA^z6h>>|CFit(cTAJCZ1 zVE*RFuLrK0kvE@89lTZ!%M8qhHIe1bwv)En%j}>JchL0F!Asex-6GqFlkO8QNbv0w z4(yv|#_XF`v{^nISvHe9#_qXZfFABQ6cxP79kou-##}ZB6CgtGfWO-xk(2NmZj~z= zr`0Vd@ciFTFcLG>I;hw;2Q~-d%b6r$bXow>bWddeiUaq%0X3!HaiH-(uJQceC34n( zmCxQbYeMK=){^GKP#S1$z8H>$Q0a4W9-mgl8wCR#7Q#kSY0Prc?|N}WV+ovn&Sf{1 z+j!~>p>RFH0v(T}0O~_w>?fOC-B%7zyjKn`pC8dW-axuLS&+hkWqE}H3U;A8c{A>P zH6yM4{nL-G+}FbJV4>F=3L?1H6%pOa`Pk=jzjs$?z=L?LMLlWg-Qydb;iK7`^c&avEgMvBAlmSL4Rd#mmtcoZFPYBI>Map`DV-DB;|CY zMT(yBomV$sIxS-Ydfr#BiY1l6mJqtO>pMPm#(?ORr399G>;K-=$iU| zY^wbiADe9dR7--l?3xJnP&O5W^SY%p)9S>T2t~p6G-I~E_kgeRtt|gwn?&L-gjGCi zdub*R(R!SL&4tIQpMtAU%i(E{k);h16Us$uZFpT*N0(Vw4!mDCM>gF+^w&Z`#DYn3 z@wtCmMrv{z;V_aon%k=^90mCxGydGVqOa;<+fLP2^iTjSg=tPj0xn&(MB$}*by$h6 z=ZPD013`a&8eCV+k<2?<(K$C`WZB1KWgWOS9X;c4U00AdaoWMZYW1_?EbXjsJ@)mm z}WS%_#lG_YmKK4#hK~AUGwgME28 z^n@8hcF@J9tmU`0n5o3GR9{>G7viPFvt}O}qGC|{D*wqXyLj;H7$H_+f97NDRF3)7 zD%c&YZm{LTD%g^v&#}|Ra(4e$rncKUu=V8Jtt@8O(&N+7@aNa@xrj`ocf4lSpUL6) zSGxA^wvp3(t*R&x+}ShYnbUfZ@^G=~6kvM&X{=xMO{AZZEeO>yxvS4Gq;f8ms()@y zAWe|Ougzi&xm7$_d&XN0xsFU|^wT#p$~xVQ{nkHbpPp&jUWAIK7WDTeF6rtbR!(== zk8~uzdTA^>prEF=!dLT$qT3@^<4N0nUOL?TPqhoxI(^p4S<#Gb!X;Z=d@r&bLmTtm zb*xHJoa7QGXD&v{)+^v&s4}!K5UE7VDi)3T8-K%|9l4}Ak47e!ZWhiK#J(8`6)CFR zK$w4zr@qrm-|SA%?0;D>?Ee%@yoSx37<$l_FR}ARO+zkrM@Acoj{@xDGq)Lk7>ulndVa`5AP`tH0en(R`1;@s4O&x zsyxQ+&fCkLek}nWnD_c3dtT!nV~|!v#sm+gMjBNI8W9*-cx|z057d0j(3tMZsvXXRtkJkmF$m#b2kw^WYgzeW9xq&G`Em;aZWkLUHrNh z&cHgorjW59?X(RMnOTQVT3Torqb6_wNid*YvzmobfhGMT$UwT24M)CdP)Sf8f57Gl z$W-6iTi9@lL3&5S4cTT~;&xkcBSbaKdPTXBIEz-qyg4%q{g?cS=}0wYZxc>A@Q$DI zuVrh`=rfGkH7z|ZYE09^fU75qbr?Pf!u#kzw%Cc?OgJ%;;#9hK%PRsR$SZ*18{h<1 z6B8|T^y>AwXWZ0ZlMY^SKEr;lN|Q2qJ*nZ~jUhnLK#&nvh_O@bBm~SMPKy14kTF|J z9E&H$Ie7}V%!p#;j0OT!dh4v`xdLPjs8lz3i-84y4SQry>GzhYZnFlcnwq<%fst*X zkvkOi_GfV(=8k zv}C&Q)Y~S1CiX&7y?xGGaoNYE`P=bv{Ux5Iv5HkuO>5bIOG&ZNNpae{|BSY)|CC5c z4s9%l@}k%6O?*?NaL3P-P1q_lHC#yuRjqml9rg3?p+Jc(Fz&&(hJODSlMctfG~{hF z_gB*K|JIOYLoPixsN=VWKtDYn3qeNsgo~~5333TOQ>5&n_)D2qWI(*{f|mI#SctWM z(3!8U;9DWB95=*Y24B6kwjaG^Ty0!+cY^5dM*S@!;cpQoZa1*H3e^}bhhjbRGO3*l z^J4~<8nl(}2q&G$E!7K_2Vw7B4Hk?$0gg4n1P21#DflV=Y?9m~e^j6{s?tm6m(rqY zvOG-FGgZKR26cL$ H=IYjrRA~i@-osUFH3P>_2m@vz=fmqFrJ%fbd-(QhQSk^D3 zcw|kDDPY)wG2ja6$9L8rH5K4Fb*E*~nsWdegT~>~)z(LHbS{2rXrp43sRRNf!HRTM zd;FG=MZTX2igygk3P8219Hhs%=p6%@swbZ-efA+r@6g>j{Ty7~X)3M^nY-H{SqD7l z;h>N=r_O$Ua(+dHvF6n1`n)9XEFS61lm3!j137H#^7EniOxFmwHFdEL{Rdc*kT;6Q zS-^hhi>0RI=6i@u9U@~~3Bu3mFXUO9iuG4;4aK?C$-C9&y!opeG~ii1R*ma7zQ&ub zjJWA|Tjjo>00+cL$!CE+5D3a%H>++tx1r2C80*jQ zpBQ02zBioO7fn}=msKMT3q-@VK^NNPmz8<`+0iBt&g>yknZ@Ok1c|wdCCO4<(Rdg%>rR zp{cz8-k{-uPQyL?KZ@x8%Ifs5!CL%V)SL+NP`6rK<5GZRzd(9Ym=VPGd7Y~V)|y(* ztZHS64!-QW3AQYkulEmB zpHMu-63RtIQ%adK(^B>cTY)Pc<7tj&?jZVBul zUY88=1~>H9Qashz__RKVxB##uI&3bf-2sHuvo~dP_o(E8RGQhI!b1kl2I06H`f)_Q zTcjzN4tC~Ni<p|%9=AprsECuWfGHk?LOp%E?6L~OZU)mAUHtO0F%A=UE^;I7v0%5< z?zl#3DhbvE|C3*g8Qf{y8ByVBdLK(3d~DhW50XTf(U&NV*duZ8=}AO;FOJI4UU>UT zJh39$C`EE3zBlBNc)u3)xT&5liObm!L=;%rcnS^9j`{ z#+v6dtrt9h#JWJbpS7vldlPK=SYT^;HGCVI1bFo<%x_Q$d4b~B@${b{!zs*nPRm@7 z+554Hhc~dUt+<}^3ERk8si`fbxN3lAQuB!WR}sey58<@=tsU9_UIJqLryr^?-dlF= z=U)lPYNL(Pz)v1Mj6D}i-`mO(N371tswXEd1|GsYW;N4*v#sC)ybE{B=aWbXQOAdF z)Rl@jjUHr=+jQ+M2fh{=c<0h{ z;4Dh8`9v4$JCe0VqsI?}QC96XinOJay1||MP=an&>N}U-F*ahh-y4fRZ`VIZ{e{vGzsd0FNoCRlANp^}o}MM@S$_r$ z07DNJOB0O?QGRX;pRjD2@euHEvrCaMg#a%I2}jp|mHN~70c`KNCCN2Oyuzd<5#2lJ zK%LthsbI)x1S4xP4k-nDykL@{oh?2+Ga}TEfq-;yo}vMh?sg@X=~yRcarP)>6UmK% z2Rv+@VqZ3SbaduMp+ZZKWz2YhJkAi}sE6R;@8&oy1l32}_XiL6U;NTf2xUilV zLFNH!w-{bYGK6TL1rb>GV@r5l%US^@_72PW85=_g&lj_jNvmPiQFak|e0LAB$|tQ@ z!21)g>~#6t-lPGpU(kAIH?{75nVQ=D`MD?igY@!GjNu|h?j8#FL+K?qb}LhGq=bGh3r?~W9{wMC_VP3^nqLh z60?{f)O>2^31;#9fvA#Ra_R3grxcAAs9k36MJS?n*nv?5aZJNddpR;wwkGyWv|@9jiEVvr_TJB1=c`looO(~~ zU#lvqTKU!KzWeIFE(kU&F(D#i<*yz(U%{PdaYmBKQ+J0`Yh5 z6{1}-5l)U~8{AFq&G=-hgX0RAea-MoS7o?!;9eQ0;ok|_W?~?Jj(Q>{eB&J(vl_Xp zo{;U{BYAT~;X_j#ohjt}MSNK^C;XBs>EO)uj6RoFPx=h3#g&O}W&uXn_9xvhWmSX3 zQGj`-XTqRcT&lLsK)T8!nM2PSZN=knx6%pmXE9%!rjmvH8pmtGCY#b2roTkLJ7C zEFGiq>15(q&B=`~Ra;SJrs@E2{6(*s=VJ}2)mk)ObP@Ow|)&Z}L|YbEunmbe31Y#yc- zMaq`=L2#w`lOMdFD}EX>KdL@fI@7wLTc2( z-*?=;?2Dt=vhIwx(V^9Dg4oI*A@+CX{I~x}^BWLbMgJnU{!wB;G65RSKr&fNRfj8+MMkbcGZld!G4^6~(?{9Kbh1h*~rWonZ& z9!G;h?teVA9)b7QGxtyMFSgCA)2kM34dM$S5#)&zV>QkmUVKc^kIrd0KqeO7PqdVSz zAcC&7bS<~p(6s7EeMOWe-hqt^NrrSoabm*ZYDHxt#}f*{^uTCC6`y{{N#{{S;Tdq} zav!EN%4X)c!W)$eLXO$!gY7s$Z9WGyYCZ{)WnCJB^5MssD&8hr1jRVg&nfXs-rQ=W zGBcp@C+rT3qEz=1@M=ypCK{Z)+>)}z&0U9JPnJSyQk5~Qb7MTszq&O{j0nWe6=qAb z&@r1~IN9*W43o5+h|=DmRjdE_2(?yj`zKChYt%tY;_VnIWXm^B)S8xT-Bt+ zX{|uOyW75Wua0RS)|+x=WieOzjKkd&_(biYBjV%J4UHM>5 zQO(z91H)gs%80e~sojMvkBw_6Gsb*yS^rkCi*b&^D*9GfJGA1_Lz$eS|MPm-NO+p- z2XjW0rxseHLY3S6^)rQ{Dn0_Jehj;+yvo)(Psp1z0_!CKzc1>$PyzmeJp0w$+ae}z z4HRzX+BBdqbdsJ6jIi~442y?Ijd#Vfm3@DCkaeBI&C1+PxvRrT4F=3;8N~bEj zy+I7kMkpxyPen+W_9znLt;Bx-^x%2nyLs4s^VeaePm!JE@TjE`s;CI4Y0&g;-f_@) zYo)ZeB4oxGSMe-)kUC1@=*A7^VYCVCpGlC#vu8ycmP=ETq*P9?G=2)UEB;U=EhLT9 z5G^4b4T2F0A$cQpsTduI_kyFa>MemO)nPEARmnXR7j_s;b=-3dB3WyyxE98N(_fJa z!8s6qEv3c@643N z6ODwCG+v|lt+b|^fHolwO7J59;>!)#vGM`SNb;reScOWhY<;7^)ad?_me4*PD(h@N z5lv+5RIq_B+n50>Wm|P7puEyt*_Bwg|$fr}%IjAjuhUVRN@V3+y2e@7;&NytmrbZ66(ze~kgT-bh?IS}4YLqe25%vQ?BXQP z`wd0>x>X1;Ixs@)WmbokK6Efb+{YootZk`>dL_@q1CkR%F5JVS?#-n1{EfF#_x9>f z-dc-x7nj+v7Pphw-yDg6h+_*Zw z*0tIe_0+tEQr-mJ0wW$CDT7s(!;b)oz*WZ zhfQiKt&&OPBSTP0?V6?Yz*T2BALu>>=t=R9V}v2?9!Y{)24Xx%dOp2}eh<8Wji)#P z|2KqB!+db15aR=tA)z7Cko2n?6p%W?#o@#SUIY6Lge>}A*)$x{>w0|yM1?Y*)Da#7 z7N_3HAyy6HiTfdthFB2M;@`me?~0>+OTL8%TOr?|FhGMHJ03~pu$xeyGmTUbAx9Kn zP+_xt;XEAL7Zrt!4VRaoB_1)R))C_!F^&7pDm)Wkl}jUX941o+FM&lZey1Z`t}^h@ z6@X07_bY4`J#th_jMhZL0tGtNqNDa?T;u0ANicRYqu*cV%i8v zyzlfSkZSj%PwlT#Jn8MDkT^#M@#tb-t2pZU(@iZi_@vB_9M#O4ga^Y`47exYb-egI zSn&@_0w*z#B#-fcc%#7if8dQvK<4midsIj(IcY*NDw|u3-GPASNzfdB><``|{tQ?h zeZky;c!NFEF4zX58jgY;kL{|oCUls`*oJ~Msn*^qWYK)lrkW>#;` zWsU(ug#|IM910|AHpdK)^g*K)(QaelHo%d%7zUefXx;2{23 z4)PJx6Da>O;Qomxm8h%$D_Fo6m}E|SAbm1%TL=d9b~BoH_Hyi8(4J~DbyWE`jc@Ui zp}-DS;+aZF9VmeX1Pbu5@+E4xVv<=(K^T{X+KyE7M?V8^$OZTm zuUI`czOB2Hd8dg!6)@c;+d&uWOv@!*fD@=zoA0QT%b>chl$wJ9*iDS4 zp9eYDji{nf?G}tC^`elY&lw2rxfP`t@7UK7Q)(D}i#T)cwUQgzqhR***46axo)vF& zS!8DEl?O-*r3Ny`N-s7K^|b8-HqF+rW+f|3WhvU3vb&9`jO4iQ?6q{uZnR1z>JmVi}pe){+=TtS4OE~0`J8i-Qmk~RC@3&nE zUg#*cqXU{iN5G@u(vcXcwzC7MKn`I_IYM!-@gE0pqq6VAsN_RrKTG{blJ~pbOU#=Asq1sxUd=!9I1z>g; z1-4yj09r1MF|vwGrbtH^W=WdzmpJ5)6$PqaC>UZA8W>DqVncZ4;ZYhWOmW)882ORy z(OF%Q8$yn;Pl`=z(jHP54Y#s&VhUPO#2B3$jFK7y2xc9gi*i>}0H_a{N2?&fH^9@d zE*9Z~K8~o)3qtRnml(gj-1g}4p=yzopnj}mm-AIMyA;Ky!Eoq2YBh~+4^|B8)|l*m?^FeJac z=IM{{CP8s#6kd}85|*vF$3$KUi)0Tu8SEQNB=LbbAC6x^)>303$%;tihMDz5E}+=3 zm32<#7bv&F3^&G9mXu)UT(m{Rj=WR6@)X(a*kyVXzM0HHEy0pZ6+P3Xk`Led#==BY zQ+0E`^p7~yUQ6+f9X>@=&UejUCg4noM{bXe4;QTfrCMtbK;HR{(%pTMF|=xrCv|UD09*0s6dFTp;eO&N$&+ z`EnB?;lX@vM(KLW`jMN4PNcZyQ_%Su(Z=f7T3tWJf{9g?(a~C0^F`Gm_=qLHZh2jg z^)J&-6NACN(!kch2Y4H7kF7p7FhV4q6Z{2w`5Pk}f!c#4qpmIgF&OS{sJ9|jh~=f$ z`{%EiKvKH6&Amo{?47F`uL%O$cK-Kha!fNmMXZkIraq-JYQ zRS~|dNeTC9K2?*P~pZUGp&UBt^)Vj<1OlUZG{lh(L!l%L~d56`K4bi2trq| zyj}>p3<6{<$JJ>6NHCzrne+479^QHWj9oSf9_w0Ks=l@M@88RP9)a4UOKlI_F;iNj zoFa^jJZ3MA;_smT_3xk@aXe<`zSyU%fIdI35~|vWwmZ)0?izQyd1U3X@4+-0A8>yN ziBYJ*6#_^|HUA>U{*(MsK9K|7QGAEgYSpcRE;Iu{ZyCcF>UOns6_o*DUrpGCq+`2!esak0#!BFI&SJQ6$he73l5a#&dOd;Q-*1qYo#IzX?% z2c1lVw`;T(bmi~p0FE{Q*XX_$gaubTfRoL}J)XY)j7yYSRq}E2YR|c5sijqI0nPzz z3!R8Eev8)9ZC~~G_sBXcoCV+one{$)8QHt?x;3*LoXqp9PvdQ#U5e@zU+asjzGfV) z*zx73%KFkcv~bIJ{o<;`QL!Cmfe}w#RpjX&maaHi1Mi^dAAA8fTDGVsrMdwJFT-Vm zQ@$sP9<)tuxE`ZDc4Nn2 z)n)lja@9~OT{JVXKD3cw+MCxp>HZh~2r7UuO>5CMXr=#jsrGsq;rB%lX6#R$Gq=o) zz3VT2z0~w1`OUb0_=xvx;twC`Gn*zm^}2PlJzLu6wxk{jssVS}K8PN8IXvi#=8;36U<%3-vkI?y7W)k^k>TET`p>SyV=1iHUFmQ(wnLhc6D~no8XDAyQ29B7#AUr*k{1@nfn9hJKGK+$k z&IrPLl;wwWETm%5oUDiRMdPh$o8(`FG$)r%O1lH1%*)&Kh5zx1sQhXJOCLu6#<{be zAFqowy!{^4Z{#l0$CowKUfS5B?G^c%&+)T3-B+ups{%e1YZ6q>JkM{w6Ez4V8 zf;roT3x2}&7t?z(sE+FGg%_eiXdQ;r@`;oYz5@9JFctX)qasq5O}jjSyB+huj+VP9~lru74CB)_Ky*zSyB;}czRJvXJC$5Q$o!ZkZSPf@Mgv~B^tbmc_pug zSw5|w$9x5vdtaF;>Pw$~yc=?lLkb|w7G_KE&@o$KIvEIHyaq;c?=`(jRQB;4mbB`K zJ6JQlnA-TG!oBPFw*h{x=gEbp>@DKHda6lLcN3FJa%#qPwO7E)M0zT}IZ!n9(*P@!cWCtG> z0~?2be{9wCyi9nd{eJR2%gtGQ$*w%U9TEiNfT!Il3^esI+lJMGgkNW!9;$(@udLk| zqF7!u{M8y;RqtvOble__5A^>^V(B=!`G+x&32&Yrx=0)QO|;4jH`DfSj^g_`fsWse z?${br4(TJdyy+D- zOI~(Er&dszNBnZ!+OYFxuCCHgzJ;x&iRmkj)Vr&N#ozItXBvL1OCX%O{zW+bC;pTC zm%1AT8s@8i8|JG(!+i3H-G_heu+v56dd1yJF%YQlO5XyzhQ^so5F>M}x)AhWUPWlg zuRuK%!<#r@iXm1b{zQPD)^B|B4sHI9od!U?kXNT0q#I<`M{YOH`A2VmN|I0r-TelG z;gmUIh&L2DOc2))=bJLbt7It}JUyy2Op2I+Sq?e!!$T$hC2;lux0 zBsy<=N_N2u;wNsxVUai$NhA6a2o0&~jrb!hGed(CRmfz*hEH3uyNondmgi=sI~}I{E`&e#aL-(mX%8qmfaBysi#P}HwzRpr z_80uLpMSaTo{U+sRzEv0E@joULS=A3puG;ibeAS`Z2b{_#|L7%ZJtL2dv!=y6e}(X z{x4k!_N!!IiwMh%`PO}3A#HFR76PmxeWJHBo#$0NGtrG76xs67cHiEW1N+>1jtS{H z1AKMW%KTmWVJ)6hZ&YY^fWCW&9l|-?+#lcF9nn?W?(L)VuFi1hHSPC-+&w`4#JBL6 zo9{dT;tbITI?r_*^|$Lb?E0}Fl-&|!8NoA#O}{Q&>kb@TEm-Te@^X^_=DDT=m=2uX z06ut4@l#>#4rPduX(xED))Flpysff3@2D%^hI+-hMy0HFshljJ!NQ`o+_=4T2^LJArM&WmZezh$ z;PNch7-^#VVb||IJRj#$rB#|uwq>KY$}%rX(Y}A5navTv*8wF$FZe3krs*4UJSGerf~h{#a)<%PDgZOIQ?e zW6~5feQ%r_i7CZcD|+3QH;Q@nD9ZT>;}Mm8SW){;1!~Dk0F@#R@bShyb`xNCt=;L8 ze9G*1b!|B#cK-A2=jB&*&m+iN_ipPlQo_%FHYObt`skslBTw@R^bbh>__h4wNuXSD zk&u#>pfk02%=kV*a5)B&vj-Ivv$PwT}%19b^e&ohUtNt)nHF@|+6LR807g z*|J0+B<81OE$`GVSx>yQT2`GkCw*;g59+U@@*c<4&MP^-#R`7C_v7OI1U0DGo4BFqjIsP^qJXk>9jEh<4ajU{rsjoExbQ@S?%M zO_S0Z#pDa#j5_g$^8_1?A*>m!+}BGhc%h8a76enuYK{T6c1A~SBi(axz!7@B|1cjo z{B=!G&A_Fwo%IkmV9&`peput=NO#Hq7*p8%xroU*AVi&} z%G%ojM_7zf-tiaBX{blQaaE)OGR^RqOi4Yk&YzHMmV3cYxa7%jlf&aFx`#fs%WL*` z$~)-ol(ij5Q9Az>75}Re5zBu9LdmxFYbwA4vzv+BSD@C?*wwa`3|vzE z0TvLFg)om(PQz*Ma!&IY#TD&IYiReYL+IDHfk-bmG;N_DC|j_2c1#(!8d#6BW|FBXon9uaf)gTAtq+B+g?%P6k>>v zhSICvuE^_ZlH`CnO@F|{zN#cgn{j>1rSWcUE@2?%a5GXz60xK$6e~2av`>y3W2i`n z5l~Th(eraw4@|v((Nt{4Hik`onWLp^@;+kan;5gvnywXE%!6l!z?7o^*5SHT>hDFo zk~4uKaUvSnN$Z*jT~P^S%0Qf?NYdQ=Xvo9Z=VX~9Zkr%J$%0Z^FDM6N$|5jD^LVMY zSR*%G!khz$+;l2Le!y;Wk$74&6R0Gv)m`2wC%{t;kur?2GEki!WYtR@Y7?tUcK$$q3Z~S%8G#!WC!157m4X1V+4k60`hkqEsYuM##2kdIS+!_tf*O+S&p)@lZR%+J8w%DCFC$G8uotw1t(PH(YD+947OZ%s_ ztlprl894)YYpJ##uXAuYcS{69RhnZs8-9(gHFwI-rSqqhvoM-0Iv#lTe6asy&=?nSV>72s(b4kQDJ{N_*A%~II`SScq6YEsXKBzoig7$)cdT^$7y~FCOqnnttVj%U8oW#fc z@e~b4n`Stv#yafhs67>Uqlox_j*bqeZPE2b?JB{KGgS{wN9^QasTq54gjzFoVfMFd z>YZJ4GJH-PZ8|FFU0(6Q(ON$9?dfpW19J7ML{<3{?;(_MCe_kMAG>;~mG2l%jiopgdX`Ze#u#lRq(<35U`Y^cGbm0k6wU$?%fO%P`Re^z zJ+F1@lfbE{x!`k*+%CL{e}S{5Ut2ru2GYqWU}y3DuI0?GsB<|+Ug$P!!|c$B$RA`= z-wToBp>y(lmUmf~6XJPJTDDTI3#0bU!EInHhIgsK%!$SxZcHykBu|owG|kyRj5A&Pr!xBL5b<_akUF zD!Ef-SNl>iK)_;{l>ZYU?2a@=V6)u`xV*W*_{Br6{{`R6`|HVrz^6}xXOQza3hvv& zWiQKtc?tpVnEl{4NZ8p1Ur3C~i9w|aXaY5bnRcj&DGyXK7-PeU@Nff-i!91f2eIUd z2UuGT@yy{A(L}|Weu{hnO{AOzn-CLq7+@lfC{Ti<1M8>d4~(ovEOCP^I)9Q}a=%+nep>F`_d z%=%^@463Vn3lM3vc0U-n|IR8serm`q`?-lZ3uDnb{*EGeBCup`cs+mh7h9*OH*L;=?#J3CbrmhcT0lG2AgEFz$H{z3*xac1HBE(x8ujG}!&chJ9 zq`tr`^P)Vs4;sVUUYIRzitBR|-f~L&-k>~lQ%kHG3QxsSPs>5O9vHPNAL(M)Mm~nu zMVfj|E}R!ly%cw?NB5>f#P&ZN%=g%XSf=E>!-u))zEcP{PG8+#e>?z1U)|yGGjRN2 z%4#&1%|(uGmzD4tc-WPa@Z2?z8frBM&{^ladggMG(-e;3TXdt66Zk=K_Y~96m($eV z6+76L14d)6{qbUVhnwZPDeARZ*WFfjM_;ze&1WYB)~Zzxjj2@+p4Yt1Y}1wx!J#$% zEi0u!S$2cm2b_nXc_$T0z3;&QtR70;a4FdOG6O0rfcFuLzvV&$kasAS^e~zX9 z?Zb}EInDj!#-?)AQqd&DRio`Zg?8Bx00rgc)?(CR?CN`nRj4m_f#c!uR^n;0L|4_T zskyvXw`I4kd0)6%hje?q2@}6rIOnXMgPPwxg5#rc#;V_UkaQPQm1cG3<=wDh!4Vhu z(AC=Z-2wC$he3Ax{WJQxj}@nbLRiVQb4vfPif zgyh06it8Fu)~pnv5+@akp^hY$u-xLfcqNe|CZ5SEQQ^f19JHDjnsVZ#1yM%9&;wUQ ztWG;IDif80szi$MKSbuWP{PnHs!dJIp<%`Jof&7W0oif<os@mXTQ!Osb*M8}H(Z0lY zDx2r>*8hI)pmnBhyvKxd;oggnj{sb;q@GgRrlW8tG?xRYfM zyRp|5a8g#3w|c(B9@2~2a~Jxfv#4KB*7FVhRR(=l!caUvU~)-_-CWJC3zR350RH%WT~o@XAwH9d_C9+2)04KC#^HU_~?M0)i?s;PGcVk<5n;NvziCr43Z_=G)|=F!9!!?N(Vt47f9-`fNnzx%$90{=_E z{MX$Z|0^@;pHNwfvTfX)IFjGJ#1wxLhQ#O9TQR=aPgD3|OBZgjN~UKm`P_Ocq$=N3 ze#*9fQFWkR0j~ zEP>%|I)X$UGQ%N9D7{#Tv~?68bjXb{+=#&yN-326Gc&fMfV7Uh$Gpk-q#P}8jIh(W zN5LT28v1)5SvW(GW#}$p&mGw1J2sISU zo)WrWe|GVz%zGSGPtzZ{JF`8i+W2CQ@AdjTOoexGWW{1cw{7+@dO}uM!=+RFY{gH)Ta0;8=#T#LZLiDV>zc#+ws^%I z->>;Qqjtmd+5_o0 zAzOE_+e6nNztQ9Kn*Sv@ojG1Jrr&N~zRQ2*T zv~IRw#X47Tiy$sqUgr|NUHjQ9oYg&d{Q$n6|7h#|hSe|BDfuqcDfDibg>T%uWsz4D z=I4y6k2iQx*E@1&-r05^JAGk|U(+p~zJ>g7x3uiHIK%B#wxW5#8jJMqC3R4>KSX!! zZrNgac-&Yxhuzs85aa(>0=i?Rtz-@8H<|xezv+JkoPWY$K;X#FDWLh$+ni9U8W68S z{}}&f7ofY;?J6?4+5)mq7oY#5?7QyhgoW%H@~iqW)R)9Zuvf*AHK9V7-80he!+Tx; z-$TdY=FJNLp#KT2E0P4~D{U;NP;c@onS^=rgsJjvqN*w^TUDjCYVhQ3P%Vm$xl?5> z%e>Me3n5E00vFk*pmec#? z{&`p>J#>fL&wvL+n#UENE?JV%8&KTS5KF4985b&=SD#mVG$=s z>>yH@AtDJL3Lb$2*8XMuAXeB{aAWIk`l5kPM|hTNa>|=9U8!@`#rLkDie5S2t!9Ff zwK`1^u)XD0m%J}Oa=Kphu$VTa$5nA;Dma|dES7WekGL&2q$}2G-|0IWtxjRL6VUp; z5N{LY!gxe;fjoSH!4jngpWUfv44|UD_5jToJQi+kV9?i9nze%Qx5kqT*4l6ERx|3efrqG?dJNfzoI^v@{bi)Pya<6k@J$ShI%I=^_lF&TScBrm&}60I!|5 z;qNT= `srZcJMf2<#hdg$oZ{f~c&0evl%5!cT0l?*~bf6ojidkP9j2-79(g8*X z%z%=K;!$zHvd-A`t!%ymB%YmmEt_pknPFX>G;OZB2R}>#pnP44OuE~{) zMO^hg6?25{Dphbrnu5jgBP7Tfc8aDwf13hAfX0I6QLMiX9P>8kdrJ~4F81efpX``c z9(j?VR==_)mO5Y%C(FzHFx^%9Ir5z~d+hEIj3x28^_4kZ_nGUYLs{GLtbm+ z;;d-cUtVn`=Bq4g0qe}bJ~=&buZDR6ha*l7^>ocdY3P=N?jYGMYxThFB~Ps-a2<^y zerYIz4Kl08n}*!*iUBj7$>4e9^}dV5bXSfk@nKRkrRWzx-H+V`jd2&jFRp(D+%v9*I%FfdS{5Qi+aoP`_37B`<{~~ zt+ih+pQW@d=_G#ft@k{GRLQSOY1=Zirme>KPWSdmt<>J=CffNfC6&VIJ37~t|8!*B5uza($1w5h|u-gNx zI$Rk!PMt~3ujClAlep)6`a?H0M zl|qs;&W7d66A9ktoU`E)G6FhDlr**8HdiB%LMD%*fJ-7M-+Vav4k}jGGBm|I$wrCa zV4CEs!y5Lo8|Hg9|G!9vo~68zK{YRx$IhFh~<+R5;s^JtY^>C zjc#1$x;vLplKW@H495G(C=uJxl09=sI($S^MVmxD_@&Se8EMbtgCjW2v9A0naVJh( z$r?WiAB`psciVfocBAqHiAdsE#q z&5U;?Gvphu^bWD#+HBv}rrwDc9S@gbm+Y>0JuDEK3L6AbFTetiry>9yp^|!2!NSTxiO;gPdjZe`Ih75vr zJ*!U)KEeqjD{vkC@({fUNiD;;Y63!8QxG^${Qggyp=qCFQ|7obOT`~S_gkfB3mS!z zCH>Q73!{73Py6TCU0YUy!9m(}a{@>XDX)sw`*>4+))}WlCnzg}YP)zsy)#C)v-*ou zh7am`hPxi#<`3}QJ+o?B(%&BO{q%i9T6SA!)z-$(Qrvdo&+Fy$XR8}2LlWsXthZSF!jxw_NaNJb4Ev7KZ9U&{=?SC}2IVLU429Zy+xWBLkYAG2 zN>a>HP~fu}S~Fb*h_Rmb@I8MOVB&|Hb+;aWZ59UuEx?{1dNUiZ^QrJKoX;=Bd~U>= zjch;Dz>RLPY6&743wLe{F>?v(INvrF@v-Mz{P4oGkI=DXue2S`kbayhNQWJ5%=E+Z z^c%9Es0(f}MVVL!|Jl68?+ddKd5ngw zGyFCvf>?w{fE-=x+8IrjiZsQ70H}*tQ&f1cmR{jYBBJY>(rdBQ`%$~m7zWQrbDE)h z`60LYq>sh8Bn#AAcm>`E^fULnwlGVQCpu%ZlfQtMtzC^NU-tT;`Rx^c)=kh95gx$DU zGxs}RlT4!anIEA#6f>07#AVmUd(CUv;7+K1LTzvY^kML%+V7|%6b)e^rT)+!u@_{13!$|laQnwR8&}4?9#NMY$Qcfz4Ije zo#t^?RO}bj?N`!Vd-@WYebh4%8r8d(fe@j?8uk8fVWlOk}L`PtK>ycLD zk$wGf^^5cfvKCEfnnIbVYq}L%Ce3@p?-;e;8SluOsz7uJ29=}O!&0CHU;9xqE$}7R z_@daj1UP-l*vLdwjB zE)<$879bK#EU--ub^{Hb12b43=7b_)b$V7ui&-=3gL!`>I@!}IUJ3quq zHEzc{ft6YeMe5i|EqaNodbiOuV&hL4zE{mbQ-nP0_QD-F1br(D>-NeWnoyd9&90Ut zT0+gZN~7#JHy(MCP~h0W++K0X9lLdMY7^#!{1)NH638a@iZ>kO+l$0>gtPIPQG8_$ zi~9a%eln|FTb+3r{+ZSDF{85CA&a7LTWnWscC3ytW~i9c75LhBjkepkKK9!W>K_DhXgs) zI-{QdbSN1{^QX3f==twCM*9DHVE6w%Huv`qvy^lw7v&}F(caH8n@vdG7p8q+@noK% z$n{_PBfv;WqvOe>0j<2GBtJ*Y=2)9gyB|VJclUcR*1Onc)mKY9Wgny-HoeKZ{hwA* z47@x>4`1H}HXgcP_`9phs&>=frc^kD4{h=w$es zoKu-Ll5`s?;R^wImaXzj3v`rYol2tkKPtD)TT3x7nedBrYl)pTM$x7gEDbtG8$bA zetZ{{?wdmjpZCB}U%>7kk`<9gZEz?KwRCVQXNoVsOAfK7CWa{*31>o(Lgb(rK*$XV z^spsXSRi7^QnYXWnc*!qUs9y%ivESFV@4yUjCvIhrWFG0N;G%}W{5-&&{Y!Eg`ZXn zjh!Ic&K+IR)X5NwD+HK@*!NH`aB}TDXS_Ho(bOyL>SUO5S2?q>%PX?#EjkAMx)2gu z8HJ~c$x})1sG@spvV*??{9VWcmzGCflN=sh7hq=K<^T0jg!|jQ`O@zz+{K@d-Xspq z?c(-nNymhwUq%$eWO9-FiGau6;kI)^C-wBrH<+4|T=WvSF=g%T0Sggm+^O`niS!eyS7b&IP+0K!u>yvJ(xDs!5*$M_# z<;={jLz;5=n|TjIMc+*Km=|d!wh(^%GKwy}583k*7k{mo+uAE)|89=`2A7LUDp_0x z*_fBt3g?nhB|V_by($BKk&s`dxYv@0VM81LB-17ja!qtClhJ-)dqILcNv}8r4!V^} zXgGe7SHD6q}bskyH%9qD6vu z6q{Dz3<(Zj<&07c!Q5}hm{iMVog#Fcn)%-_F>02##p3dox6R@JMudvf1ByABQp*(g zk6npW?{fveF!?rKV+*(a8i5nDgKBDHoP?aD#kn8}=OSb{(t(+9UMhKl&T+V($5cmY zzb(AXrp`p#(A@5wUXbS2Z76^y9F^0BPmQ+Ul$%anmeE%lmbHGgjg6sw#I5TMfX?jX z_4z^872tg0XqGzg>u!u+QeL9BAH<3PxK zChPy-A0?;Dpax3Xjg?|NTz>f4y*@Tl)=WH&%jcmnp~4airO}kt{+uR_s0- z7MK8t{^-*oJIzV#5WrIzDVFpC?k!>?OK(xc^faz^}>)hHc>fRDe8H`cNzcUQ#B1inN zZU2H4hwGS0v~x@dCzlpKQ?tch}(V?(XjH1b252?i$?PHNl-mgS!NGg1g)6oRhh8-+eP@ z=Kj{3#e!x5%^&^su3cZ%u3fGpqOK!~T()-K-$G)ajyw3(aurT1{EDi?-+k@dM9tUW z+G>tM%iGq!pT~M`tZVHOaze^e*v0bJ*wTzPZ*&wsbf)Uqb+1y}Ghi^QK zZ}~B5Xt_Z{J9%KoW|@M{;?g7YP6k$s7f=E^0~bZH>>{ZhGmvP*O91dU)HCJv$kr z-lI+KplEZULtDE}Uc9)%Z-da+IOLa~g#Mf8HvqGVGU(3ejSxQD_2m`sq9 z9w;Ha7HAHQ4}MDG(X=_O_(+vS;sMu?yZHjU5#EG`TIO_$sQ#3g>y z34od(1U`w$3(YNh0Rqrcd}Li^@L+aH+k^yD2tdH>P`pqr^Xa7qGZ&G7@l$j_a7o$> z13M7j3(}$DMC2B~=nE_r8iLU$_272N+8hWp7aW4sCtd>0CVW5!JSy|#*zJ#_&_CLC z$oW1sSFYwem5%69yH~CjI@ON&Qr}nd=3V8Dh)^R|@)lf`jTlqMRr2Ov6^*D+D^&6p zUR8}aQ%_cQb`)Gyj9BA63jDrRkcfv^rOyDOQaWsUsxoWuC!mOcRKXPDh7CNta1_ z$eK+qdrVsG&vW+Nwbd2a&I$t)`7|#uvg2FBk^butay)F~I@3MJeLqW<`OAyv73+tH z4RCcRT`GsIT^%DK*I?7_^o|^r-T}+-?Ocy~O1S#51C`M@!N+@L|7*mg;`i zc}Ku)RnX%g)NV-z>cr+aj&7y&(S_+CG~?QpC#GB~K zk`e3&_7;VZ>9?Lts=oI2*l-?bX>uoLj*^YG=B43ID0qfcgs9CLGNtF{z{5bov`ROg zkU1v{k}sNu?QSH)@8~PuQur`5#A~+bUcwBYJOzBYr@>HX=&0L}i*19QTQL*;hOn@~@w5lP$&JqIoC#7j$gjwtQNR64)U z?dC^sEnwM2ZQWt9mqGGAYo!9q}Cg903^)84(s979rA4(qGtb+`rS0+Mn33 z(m&hJ(qG^2+<)B<+aJ|0(?8lz(_h(d-GAJV<2YuJl4dR9&k@l~ON*a|f3Hoawp6-4 zPBS%JnqQT;kvP#wP9b~7+B&+MHylIGk-2K()IOXwTrez^*e-X*l+K~W$YnRf!e!#L zw2P6bmAE1sn}*BM+E--nG-5Jr@^e=`v5{vPFaQ;pF?98cGQ&mPW2Frhj6FZTyCGA0yDw zwxzXZ`Dp*8?*bexWJyLTSg8ZcnVZr>XNDCgT~B9O_Lp(%n&%eigQAi0`M%TU=P6Lbic{Dj~_H?QR zeG75Ra3prjcheD?3F&00k&(H=M;wMjlU>L!U52#EWTnbzWPtfQnmu89F!;f~%N@aT zVR0F`f z_{BkfgcuhaPEN)dGK(iIT5VB+yBl8jDGv4QTRF(iV}O;kOV&bC53PI1`X>q++-k=c zC6brFx@~c98Xu580u^1r&;R`8X8A7;>aUku#L&Ue$kN8r#q!@?@M5)NbsROcw-P}L zIFbB@hJmI}dCT!1sHRe+jlqTIH1n1;leDY*c99^+Sq{g7+1JmTIX0nRbcBLNwDsS9 zY4ZmnZW@<)Q=rxmxzSzktURB*jyF%PAB^qBbptyIJs-MY@`(J)g4+})ZJ_OC6d|9& zo*?N_;O-D*p!!{A>)_5ag8P^@66^;d&j*KgP|)bI<SVBu8vxh^G#(TucsYw)n}xe z2ViIqxl5fzqJ2eeaE(pNkQpX-N=!MnOrbC1t}bb;q8zdxV}Q=?FVCz-Kc=%fOFD(> z=8L7Zq|u(6tCF2dJzb6^l~XZcbsihuP0#Vji^?)z!jLo0RK-YjaN#{zf<0Z7HJBg+=-Uv}(Tz(iJ zJ%8~<>8s^eW(>G>$wj~}8eSwN{FMzIirPs{&SJe?65?#yq<4{1J~vHsRr_@M@#Wn5 z`1Iy;g}}C1OjUSE$yb$#wN#R;Up{SB)m##^P!y&nv(gt9mY56Em^D zqRXVi+MBQ3Y6j{(X<1?uipO9Y@h(oTwq!W7n^WkXyU-hCsv+QkUA#*wOz}Ww{6t6X zL2PVuQ(pQVXzXm}HWQaoPKq5VY=vP?1`^VI_p9l+hl*flwqMC2;er$a}JDQ9BHC%(I98?w2V@uNX zRYEA*KrAa3=H^ERE^NmPphz z#py{xlKgG792G~D$x6;pOwPN4$ikKyVL(x&+p0ys+8AR;{{?d&U8n{Q@{T4P2evX? zGnN^)zG0e*!$*7S8w#FU10;7exGnae!Md_d6b6PZc<|JpID>i+#GeCdHZ6P(d`c+R{ue>T@Anbj{TD8ap8B1+E6KCl6(QN4lB_m@`jT; z8%mX1FBuK--Mx2%_;Y`lN@j~F*?M~HORT{;B5<7uwfOL(aPR$tO;J~EVOO|&_uE0O z^mlIw=H6k2D334bG3eX5zKE|CzLHOBabNdZSsmt`xc&Reu4nspFB!gvo^WTe(bo3q z2Q?ztqXNxEXCU}BCG6n$xzDN%E%EGHSzi89nIG-?t(t><_z(mAPjQU*|2B^OFADiP z>x}t2D&H%J6*5W5tbC-`L8$);6|{hTtqzceWFkbICMn$eovsiYw7RJ;aA+ok^y|Y1 z{v=0jI3i>kmUOq}cb8INnL;UlTu;t!{1E-*w|LaEtePQ&jzqYBQ^sK6=00{^km@)k4B=q0n{QpHl zo_|g(S;u)<9ckzth7_aD2n!Ym+ku{5UK^xAZAT~OIAy&oKDHbeN%Sk9 zYq!+;^G98aF>Xxy?yqRM=$P;?FWoc2OHgQ5J+J-Jp&&=KztIo z8prWID)Xj952SLUd|Lqlq464MkiF0Gm!VnTuCT(hK%Y$;t1Y)~jaFZjHXCq31P|9q z7iDr5AR#Q;ySnVp#y4*@r*OPhAG)**B{EQ5th&v}G;QP%&oO)aN@(X*I@G z-G1yYbN@1XRC?b4DpziyuBAkSuD(ER+1~NlG$r#{&D?ddN(*G)%1w)E{*LZdaS^w< z7j698wlsG){-l=I_>?qyQy*-_PY`lQYaTV&_;-bZPcN_gHNzfV$3X*`OW$lXYv-{r7QHFDCyhg<`{c%3yd#xbsi$8p zC&SHqBX~5})$5rZjDH`9uG+VHG5fhj!?TqY!Ioa%7xaLACD?8JHi!e)-pEpqdRY^0 zO}vhJ*%gi`>O*Oy+@BO~iM$9tR)ygBK=twZ;Fo^(ht$szRb3sPo{Q|&PLXfz^$D#+ zpRpp!`eedTW}b~jqt8qt+2eX4%bDFilpGF zyUy3-q#mGTPy$=1h(xi7B!fAi40|aJqZ#E}q&>nIh0=&t3CB=~FQkyRC|18ZfV-3G z4l=hApq@cIns3SUg7#V=K^H-D1xjm@*nlPUmj*uv!x72+K;|d$k$(uR6W64$2_`hA z38w5Kwh3cYs08;aF-VL@G(`R!){+)Cm0OMtr?Q%UKv0Fej&dGWOJ4Tglzn?rWEQ9#FgWCFE`@}dvXxJKvD96*ps$#LO}>IEvmW|(7; z&q&{3zy|pAkRP!I0rYZ8h3K-}K7i=56}HZs5-n%Jd-=>9Ars_?3nwsV8 zTTPjQCEXv<8J0~~+RdlN_WLo=LodL)cf`|q$aY#hh-Bl44%d^S3%rlh?#XLCObst0 z6PetuB+{#l+b|eX2Cx&(;6*yvGM#yqP^!~APo(s9H(-X);L^L(M~Z!^qF)Tp7@ucF zoKKY|UyT)D(7-!kp3ur*p0Jf6ZSU)c^Nvq9Gq3Vyy}lRzYHTXNY0>R@m{fe%;gaFZ z@wJO;Gwvjjkk^*y`QG5k`N@m1i0A`(vCK$aXkO9>@n;UT?sF=xNh9hkQJ`A#UI^Hfl^Xn{+&O#0GX{ zb>}DXPwSG^JV&Zu;~FO){<^Yo?+>~b1KHy2AK60Uzw=HIvom(`ba1h>x05mTRCF>m zGj%exGdBG{SU>rzjtqzpa3j}nUxnpCqA4bFpk*DDt0|bWzNF=rxPiO(LlU&RhT9PA z7xgtL=vRL~RaR>vqPFSYG3K#rpXW}3=gY@CguG~x&a*NGeDgd5l@>6SZ3N8GGlHu2HxE zo~#ZSk$j}y(YW>$yPGnns~?KAyz}oL!)^^>P%>mUT_`So5_4kNt=&WJs^Q6y#2t6; z_pqBB1i0asH2&E2rB57beU--b7@t}#zC&Bk5_1J@AZm{+#iDTt6WEPtVxJ)W+1s$<^8AA8H8yc{2F# z&sGKgA64N0QI$8eH8l}&b#gOxCjB!B!rjKN#f{f}Yb)U9jLu%_U_^?&`?;dcY=+pj@iqKC0b)J70#GIdaZ2tV+a zeM>Q13HA&}T6DmhpdE##B$l*O5sxTZ>9W=-;cc*TI8j^#ppnc9hgxbpJ)TgpZvnO{h(&k+Z}5?E&EWDSm>q}D zMa1$&HZrWj3tSzd6s!`y4eP?3Hty%jNYtogH_6&PNX6W`~&bPpL-W_ZA76;VC3!y}hNQ721X_ry1Q%c8j`Q8;c%LnGzh55Pe-ISB&sz*i#@9Uq zy*6alXAf}nCVx@WpNu5>Sgkp}B2byCKf_ckf4RLdT$&B(%R4Gju z78f_AFdlZA%Th8>O;Rz{AgMAZ*6Z%6I*w;uDpMDSSOj5p%;3f;%`2XwpJgTy?r&R-j7D~P`#K{t>4>~?iOr@}RnD?c8v_VLwF;*Q zRg!po|ExT4e7`}Yi8r5b)2FYMsvv@MM2_H%D}L=L=n>|??@1njnL1k-+^&$(hD-}tI>LnsU0 zWR@WSP-nT>kGwM7k#6sHyIWl8ar^a`y(3SsFB7&{#S?Duge}j^BZEd|?)nCJO|x2` zDh4=@$$imsC@#c77EwG{0*;|Ol6zL5I}&@^p=uD_+odK)tiJk9FU(qf?|fX!!dudM z8Pe$+Uvt)86L+wGSjqwj+)l5#leVFDe$jortIVQbwhnzSS&*}R-h1uHIQsAu54TCZ zs+Sk@u?o-$-q!5_|Lg$T^yC1`f7JI}_cP4(p$@Tm%aGu#2NZ0y>G`d;#fmkP!*L=v z^lsQE+MrHFEx)P$yQMH{z1`r=Ks}lU8WY;}+Mt#>S=_*o)i%H^80>KKIrZfr3{;_NMn` z^|p2t1xLFigSKuMP2Cm6Z}@51wWI$wTgUsy;n{y3e*Z>GsAjyMN+gY46kNaVW}vSikF=x>cYdB4ka6upZpVUCQ8pF6%SSWETPnqCX4H% ztwdSx7c9riz9~b~6>NobW!XHbYfGRz1_GT@Bx1Rx;)Msn`{h`FAmhL(1&GOntD>mH zfFn+SiYXLV0#2-%9SU0U!ea1gIDG|93h!btB~fpwY$SLin{HBuvlfMOMWB%2@tW&u zMv`C+nVRp_L#eq$wwM3ze|1WU+6M%BHjmm!U#yMwS!hwD#M+~H;WY7sM2 z%!EQSOe&m4&Xyi3!P0VZS(L$=TeO1y<%fYQCqq<;kLFkug{jKKu_#t@-_NqK&253r zEgNMvY~9B$5A9ur$bCmUik<8Vs-ZnzQ1;BY>vJ>6`HLY#C5~BUh9j5*IWD@)N1?S{ zZ|GC9hI=h#tk$5%S>}iz?}<&{ux{37S#l3wXz*6Maa!La#~|wuEvA1%yJ^KK4RR49 z9&nnf#Ewz2?iJuVC0pXDMR$_5_!xAh1-bsKCmEsRXFw&MM#v(F=2iW?82&0iHh5dRCInv#gbrWJM}pf;-=z}(x6e{grb9Pm z^QJz;XievPsxVs?@KCNxO|L!JNAkK=)b>{8qT1+>lU(_V8FGqm$c29RQ@C*X*5B}b zIY+vfr27lqJHOFQ?&Al>aUZw2{I(o2KQHn_r^N?kvhf1x*BSEa(#Ep3&J+3)gW&S! zBdWgJn1}%0BC$5$eujFsJ;kl2Il<1#5sw})^4Dm*uQJm|XCS(L{)f>0$MT|4_0<|z z49ky0&O7zka#r(L!d7l&N&nOF#MlG{vLU}Eq4WS@C~?a=-D2W#&WWA$YwZmt3B(J4 z;I**-CmYf?06RFQ*}mcWLH2>?2KL?GOBEP@@ZUVw&4dXN(BBy@g)O3RaxA|v2apA$ zKHw?QW^2q4Zb#2xZwLG`$R@;w4YY_zPLRZr?QqO8)kLE9xL8nAILNWq19cryW5{6m^jJ1d^*5X`+)l49&p_;^6u+@($Bq@2NjffKaW z`c0>yLF>NY@am3@kO$Cg>?vH|NUihAkK44Vun#npq2xtbW%#voQVt13U$>=WTI#2A z+D3X#t3tXao{2SJPOqCQ85$v0l!~Dt*M4mZkOFa6nDi-`sZDBrr`>&%VJ4v6Pi#uM zJ$TS-9N@fdVu|lL#Z+Qn1|l`q6yl;PX&$R)Ox-|JyHSB`>Ce#7juGzvE%G#k+%zed@)!({~%^&At`ontI_{XZg zFwhq0dq@Y^GqO6H_WLixsXLDavA%B&7WfS0&~WY}-^)&TYmW9uuKo0{)DLQu3!u)ve zdU*i%+qB!7Q9O(7k^(6$2&o2pz{?;cR2I{YEI$yazW+l&{o`lRsA_GGqlT0%H@oZz zDknk}H}kbA-}TeT`n`yd2Q9e6u0w-iPrlp7M8p7FE39x9~2q&ez_Tz!*5JL%x_$pcv zeV5{0SvbZ`xr(Zdv}d9`=s}N7vH)pcZzwyI7EdZ&%xO*q_BCsA0-_`F8!n4cLJs3r z(cK)Euw?uUj!1oek{5=EY_AbFEE@7!&PS-C}am?X?M?IG_fZtg!I-3#vtM<+A_w! z$v)3Jw0%Z*cmqnwTv*FtTW(G_FY|m@%Lr2ZT1kI8ad=i+Bwgjee> z9UGcj-VhsY)uCi>W;h?gSAFnJI;oCg%oW3KEp*irOS0-cJ!`#Y0ywxG%0cbjHk}~X zk9t<{JW4^&F&tXEXVtxU({PhM&(%-w8d&cH2=IMddzrMo<8afTI#U1G{Dk;I^-#*c z>_@_weeqhjr^8Uc@+0&9J*K*PdExrD1NWGjR>T~ezIU8l`*WyT%e-iFrbaiUhCw~# z;$|U!2OUkkvPX5^omk=I|e0uxifn`jR{6ooQ$!6q~lT zXD?)N@IP*Fg<5-OW>&&>`#)f7X7WCxX=H8wh@;R}m3hGLV&kuDac&%Uncn`S>tFo0 zbw#mgSxzFpNB`qvF`&9)x2lS^CO=G{=+H*j4-zb z@PaJ%`+{tkrg@lm2$$hlaWzN*fE5zm27RFHZ;DVACGpz&D0BDoPXD>8ak1(3nE=?3 z`hX^j*`}v?BwPzSs^?J+TZ`#X(tT)G8FhN+8RCDfk^3GY&%%HwtSlyNt&y81|k&-5qeK^6q~KL zGznXc-|7=f6unttmQe<3vhaku*m;b-Tf-nt2GsDN^90O;5ahY<4|S+d->NNA`x`dg-WxISV_e*UG(Fi5D*{ji)vOE5o$q8g(t*Bi-y2OOAU7_D$~?N z7l)D#6_tov0z9ZUSBDCR%ih2mIWbAJZ3-0Fp;XffC1J!a44ermlTl@z;_ed?(2{$l zz)GQqg2^R=`_NRu%+m|h2_p*Tj!r~EWVg` zq!N{IREjk|h{P6gHv1K8D1<#6?Hnmd2JhZ$a`i5=`QZ8gjRKC!|G!6pk%e-~&AY?o zKT#lN)mLb@^U$N)()1MDXT_F{R>cAw&EeWJ{&sK-;K4A%__9Ov&iI>-MO z1hT>=n013Q^M^W5NmqO5NiMud>#bsUUd)zcbnX+rvUgCl^!FDjdxf} zW?Y4XU)QB-ufRarb9HB;Jl+djQLo`#)fTxo{>`5PMff91VN?r7OHQXV*i9)$9Td$4 zKZnvKjwn5crqN$A2>UY~^G5IYBJGzUsfq#|%(T zs2E7z*={(|QarYx(4SO|Nc#y~-M?39wUy9;ZAia|C-g&JELD8pTRd`l^)TC^zUDxW2qi6Ns-y;*p<`v(K4h<`HY2CiH`~?;Ggo&1#QI z`DmKmG~*n6``J^MskQ5*8T%}*46NGFbVplxW{KfSo4D&fSj92woK33oXuS_d9>lFp zoK-+A%WSjnVx!)CVf4&YStS@~+=?TQH!*8~2mVtB+Z^pJYgoy|S9S>^w9r zn@PnrCUw2uMt;uLqS%KDB^iyMd*%695)V0fGm;)jm*bQXcOHX@sxC{rF?NZlaIYYl zYi?P{(Oppp#HI`*Zs@gZ+HoxF+t2|&<+Mju&iqy%rov~c`jRPQ*vNM9a>$-7OKhMU z$fg!pwx&#;hd*MHFTDTQcL@x+4hf6BT83Ua=TfI1);)I1@cdfN@io2zemav3jV=#e#1Rcj{<#ZD3{*+Hc@Em#M|PNs!qiyok9TZrXC5vemWN^3b( zJwJeV{?hC9R+VZUg_9cHCe8SH<#J*xcb~FG2Pp`(Tfolemb%o_+w%0Y-N2kW!`XpV zjVYWEwJ}&dR|ZXC^ol9GJ z+Ozggd=3MnfCxjRZz-=+uZlpU8xXzRnKo)kHZfPaZmu@M}K*Rl#D3D4PiFZKOID#uGIw?{HLxM;xO&QOr+948r zkXce>d^>)IQWjM{Z5w1LOC~v3df*$33I^mi^05R*0}r(6xd;=&;7Ap)G)JPKrJ@8k zRyxaqLVwb*-^e9fug{)otJ zRUC}VekAN`LD3rDLm9C8&R(O!oB{(+uln{E2b(pnd_2<=eycBCH1!q5o?6%HCF`RPNk0T z6T$CsHUY#f-|H_LF9@IuyK8rzJ~P|LNxZgweawB3`_^=Tv-UvJ@<1^nyfzCf@QuA< z>qoQa+IYc@{mLRf?$u@;qy#VL5r7FX*4v>sC=n{wO(Ro0?z_*XKv|?Azox!Vl^a6U zTsJ`3-SL(|Mi01P_*wI`XQQUD)lPyHwVS}s=kc@K@y*ED`D#WD-8)zA7w1z!$PNVD zVBp->uO3|8n(1V(qoyr1+Qu!~Rf|3@O`ASmUF$y2mi16r2XsJ#9sfHh`FYG>@$ogD z4j;}vvWxoFDu!25axq=@QFP+sWD?E<5>hY%o(qlB@mXc2;5u8dWmG%wrZR)1ZApz4L@tG83AP9SUI?%JwtLs|s`E_W~{)2zd zg5a!yYEU4A7`&Z@gGvBE`nC}S6hhfxlCWeHPro@m2GoifxXpB*ax>)sydO>%mPNP> zXUbpEgyaM(c7Ul;#fmBV+aWiETPL?Ow4+a7U4;2%oB7kKQ8acq7Yx>qn`2fe-3i*v zlotV zhpYBSRCSPLbfzd8oM0{;xfZAf47+a`mJtLWcAdE{<0w%t6RZ2*Y&Uf+9!rcPjx$QN z3nL~%9hU!!WIdxO@1mP-5?x^^5{bIq5h0TM_5LHpWGXo-L?ZTWaO>nA*IL7*=Dw|( zc6gP`4%vEtw4_@oB0rTfM{}`Ry11(j6(D6j8>vrZFzj$- zH3T~vmu<>Ik(Cie8fJ{lZSl^IAQLl>vTS8dRvD7BDYImEYfERTGWT&0F(+$t7rNv~ z+b0irCeiN+kZ9s*7EtGelB>GPTB8g`NeMc;V{qX^6M$6&{Fj$#vOQXmPEr`($O~FIj%cte)OK z!%1n2*_`<0=mzs%6noY}GEMOOdfwl>Vb&~Hi{Cj?eY|{keC^4zNCcP95gg^vE`}qb z8N@@^wjy8nQ8%diDx9;C9M4pQce>Xrq1+U9kUpMXnF?XNBHto*8*Df&) z_6UB{4ZpAf$q5iu|Ga|iU#6QsK55x1w$}5ESia1qo$dOr6ZiLrCF@*`QkmpbsQFT# zaAngu`-%L@?n950t!o>ye|66=$m9NY3pCP(M8)f>ir{P6K`TI31`C zTcSN>CsYa^rtN?Q=sN2)2189Fq+~RWAhnbP=21V=6#JtgSoa2tf}Jpmq-U1GIguiI zBUy0!zaB{%-~u-*krT7Zl8`4M2%~2DB|wnCQ>yd5~0Fo6D5U%C1MQ(bq{^4YdgMk;3qATLSg*GOs*M^ zguG3-oiHdqD2&=$RPfa@TRJ&dD(QkVdOWvS)EPh)3%`#X*D4<@^Ft*S45!h(+&P=E z7FqTlCR5Fgjpn;X(|55$l-s{DGlaJfl{<#|M4WHT-ieR3-;Y8V!h-fXzJuxz=It15 z3J}=ucDi>~Rf#W5j$}O~q;th?nyW z0F5Z`$wE`Km*xKcUmFvdo0c`;8^At9&BaURK>TdV!#F@e2o7`dWKH>uoyd>}=*Hhr>I< z>SB)^lt$C$_S5$ESU*J`0g**yA`frFc;9*RWbdcG>$CB-G)EfD4Czs^tPm2$TfE;` zQE=iP?){&`${&lg-wgCy>>@wwRj&uE178IZ8;q*UBW|s-nT+)ck2{({9rX zQ8uO2pC838LI{a3K_8UDwNRuy_~v#5G3@TItEB1KJm3I1uc4A zc!3-Mr7mQ3Nrhm3W94%gnDR7*A;!HHHf1F!-u9$31sB>{VId;1qQp#TXi4A0)eLa~ zxGdCJslnJrup*smy)q+80o$QfN)WI@*u+cRGRTa88gQDokp!PF&ODOWD)szxdD;ayQz zaKom3a8X(wI6OFW)onpEx@dA!ekOkR%{n|ZDYfb&or9k8PvD%%+l@JENX7~iS^!?fbZ%Tq5Yson+}KX zZ@AqoIO6Fn*?u6+lLa=kW?si!3qm~Eruo{k^>*JOx3pmFiyX*8I8<6PdUdEevU_=` zIx>6ax9m860S$S+Gpu-N%QbNj9RAh#wy|z$eGXLr-A?l%!@WSRxJ{y~F(d z&Y(u?U2aW%&Xbw1u1*UrXCOm4Mrwr5#MSr){ureiuSczZj zSaS-2F1F5-c+Ws(%RA@?s3N{!w+7{qulR6Y7y5|n5)M`^Z+L;=!0N$}E=wwRUlkd< z`;6o;CE1u_i5M}I2KQpH%4qRI>$f?{;t1l1yjaGp-7GU{=uG9o^zRWrOz7d^h3GjC zM7i^$*@&HGP1B@-E#w#(=M=0AO;g;!XJJK}@I5$lD))>7c__S3hS==NSe8x$S>JRI zSPvq}h1*HV(sn1PtQaL6_D3zbY|lcpwfD#q(x>~m@QSp`LK=IiWwbJ+zG{~QqMHSB z(K(efIxZEfO67$1UhSf&a+)~_X{9I%G09PpN0*Y4v^qd1zO2av(_>uaBGblEe`b9% zR6RmchQ}9JXwohyV?!58!*=9liQk(VK9M@hu z?8BHFqeD?yd%;uhhsLvVNYdhoVp^Sj7^9)-J??_>{5{)DZ3ywD9*RGFQy7du+<_@D zj`)EyPzKp2aC6(C9p|QslH#&ij*X5Y^EhtoGNAg7V+E_mzPn^z4y-veZj9-Lgka4T zvVdpqc{0YnYuIu{pYKJW(atK9;{MvK0+bVW`ol!uI7T(R0k~b`FSqAUcU#OhH(S&` z(_z+i>tSjS9f*rtb_8}kcwkXY&o7g$POO=Wh7+G3_b-3T#MDx{zSkGj_~L!93BI}0 zf}()}2_((CHk2?F@HHp+QHy7YoU&ElcY#2Ucvlxuefpvl50)OIb?Uvt$@DX@7#dr+w6E~Ld26V= zh-?3U4o_TvPdj9*tk~g-AyqqOop{wF4Fx+uL(3a|b(Kv!^lpxhf2z=A{s9GRD8@^B zoKSDU66H3e^nlm(L7%Y~g`h`*$O=M6yq{QJ{OC}5vE2Dcb@JtL@%#%g*INs*!%S(L zI_}-0@0bqZU}<60eCG}d2{gG-0dP4Bi5VxN(pr>)&kuS6mp1nnQ=-yAsRW=kO;K}W zC##bxM?v;t)jB9}qXnc(!b(AHQ3VS_(HBsxTOWHEV(n2=i6w`JY||EFK`DvOTF^NW z7Jpyxvh0MBRip<=2o*p1n7L}m^c}d-HnF}&Qk&(x5LOo=CCzzRxiXEAHsV(jw7RrW zVAS}y^eFW!Z)mKoO2A4HeqBdkv1XC;U z8V|U#P)9g+GUvqMr#p6Hm%w@6vuOKl=J1$nV9s501XtrL;KM$ai*QWQibG(d=IW_9 z!Mr*9Q|N8&rtZ@#=ckEdsdU5x^x3-cNV7xDw(@5?=?0k6<4bY`8`W?QdCtYR(_pEVDcez)sO6DMO`MM!n}- zna_GaGq*$aZ>g6T>?2K zrmmLEB7i+{u!mb|XXJTJyD2R6L(sql{T}W<3NhCIWd;Pp5SyP{>I`Q4T1t=P@cSD7o_8*Nhx7J^%BvU(0+~Y%v%9-(VGuMaXKyxh%b>K-cmyez44)> zVu(%Qlzw})n{Pim(sRG9`G5ad?7OMeF3sSF>QW1TsO zowR&zl20=kq|t5&bhfY|K~}207rTk{5B_Oa8 zHzrhDHBck%;EaVAZ3EB8@oV$|bIOmh6vyw;Dkik4N+dg~*rmf|$&PK&=*;RPnq+qP}nb}F`Q+qRvG?G;o~N&f7!_i61u-2Jut zuZQ(EpXMCuWAxtDi4LRzRwh+R^bM@jE-ZQjRU12c(x}&5vM&x#{*0pTFqYYFx7Nqb@#|9nZh07P92&W~Jp8mGx5AN9p+c zH4!HC-Q|bXN5;f5A&dYAmpwWCHvNclyPy7V+Qz&<4n1 zpMP6hKk75Lc+{a@;ZYBP;Y|&P;AMqGz4VjdQTG+&DepTXtQ@4g)fj0i=C0pjTKOt?qfxgk#WG)G*bF92-xw#HjSZRrj$2dX1B z(VGA_`fKB@Ur|oC!nCZ#x5Nh&BTnsWQ%0HfL3gkR!`d0o9wRW(sgCn~1OlNG=Elqn z82|!N7$X>>DRUF^XhOrXM)d5=2$w{d;HWTBd5ye772ay(E zi!?&A-TlbosrgH3@x119Km6}Vrv?gs@amZvew`RjIHOJ*CQVETfYG98FwMn%_?-0b!WOd#T>hgv1=4K6u z8?gyXOl|$H;W21VEJsLuYk<*nim1iW;8j|@JRTFQY*QFu>21^BfJFFQ7^1_fIreUB z&>BN?=-U!sheY}u6(WmWedyafXCg%OoEgHyN_gnoTDKZ1dyN3o67#d&j{34OKk;p4 zz!y8_u&2?!PZXv7h6bl;UiumWCd}HJ^f?0Tq3nYF-1Yd8?XCf;5=QR`j{Yt(LdUvM zy35j#ZPOa1HeI}~c-m`Qm`rPU$N)vh+DW?W>n?Ls8^tbTZ8AmnfChzCD=vbF^r;@# zc;5!)ZGEA>$7uiCCIRUVi$naCJjzWvyD;nHjKoVA=CJ-NZD|V^xiZ=Yd6R^B<6Qh4 zdcIb0Xh;k6a93E7K}p#qcC4~8ug2Gpr^r@1U6yM{&ZIq_oYpl_1%ac&}oYP3pqaxEHTIb;)E{<0K zhFFYeR<hkC8lFry~VT=Z0Is+uu1fth}>0`Y{5GoLYhYJ|eF-Tt$iH0*e#J^;* z3*(TEgcA*646!>TzrZHxUS`4nR&MnOo^|gH$HuO43g~f5X^~?!ENlg zb(l6jNE(;6W#yPVZjeMoI!PLrF_kuzamiwl-XwD@{gghHNu74dropVi$f55jU;0{L zh_IvbM}GTK44NAKV`S(I*wAbL33bivK(>8HhR5B1vm{&HtDt829@HUuu}ykiQoN$I zL|e^PZq>YFdSh9=n$ebmuIX3Y68b(6%A#4z=CIAYWxgLe?V$m&Wv-XQ9tN+xYFMw?T)$i~9#r>vq;oqGMMQ7c))n zx&5tn`~8+?$?3*cur7WCz?8JhbCR?B$8EOzZB*~;+)y7DK@c)*4o#3a_!?0c<>$yg z^r#64t{TngeF+$3lZ$}E3iBqVa8!z}uCz6s0T}(aZ|J!@^)|-HSef0G-%Kc z=|QEehEk3Wg1n?AjvZwg)8&_{Kg(gE*CyQ1LK&8)HA+8~!jnm+r`mhks@Bn^5iJMP9BwZ-`P$k14BCV?)K$~d$18hW_Hd11Qgf`=@a()tBp{np9jyXVDp7=8w*;dDR;ujLT<<&vWxzo}s7nIK2jzzs(~p zy;T@q#&HuaMlSbx&0fUeaq}!tbra^O_$1AoyA>CJqo75OHlSA~7ub_H%+kpzI{VB{382Wd}UI6s<5*>;?M%TvEwdNcN4ZyZS{}s5Rg?Me^h= z*1JE|%_m4vmkebN)yPFDX%RLAJ6elaq-R-D)cEPN4cb>}jK6iqFdr?8^`*;%H&^yM zon$az(~T`jT8Ze|W@-H1m}=CW_H(l7N;$M-vno{G`V@+w6Qd7zBV?b{5AFvz3*V9k zVFn=*gWrgL>HS3gMx_EDE6QU| zg(QrO!tz2L5N=`*%7ANtM;T}jcw-*C#0$_$E1;i-%(Q`d=5I66elEP~iNYq_5%MTT zd?<6T-B{Pb-@APCISu|6bjUhZgl{*8QuO>Wx#QG_C&Y=Khp4B~e)B zS}BQ60ZdlLR`8LjwLS=e@dhmY^DrH3VoEi z*e4Pnbn=C>2Lbkgqk{h}-OzW^=}#|Hm(lN(EY#csrj&g^%DGDJ+N%2=o5$Xj?_N)k zBe^vUS(^%fw=Qj zvd#s@1KkzQfqe|ieOPzNUXFMXtxf7D0% z?<(caU%5%f#L3CP%tXS*-qFI=`QP*DFXexGUMzx2r49$u$&-TyTDOiV{s4*6_aJ8N z7b7OHcxh@f(ok$!!wvsH{S=W2M$W{1--qx^zMFCN0BgyY@pQYM;`rLXGj;lXzP~{I zj9>|^!`n4BpFhx=gspyEX^`GTw;n~0f+gUZ<{%5`ON+$=!q8~9qL)Lze(fL|C<^CRq^G>l{-!>IKYb!PDD3Xwk zW>q5NET(mwg-mTiYg430qNA8`P@le~hhxzEd$@BG!95 zn3SeaK%EoCyJxihvrI2qdbdwvAu?%Am~T#c7TYXV`nZ$W8orIJO+;iO@V&?SW_^J7 z5Zaa^obpt0uKIUNAQ$vCW!ory`%ac?Wb{S4`?re)fX5s*$WeD@8&Z?+HJ*XA-Qj)} zFj<)OTMk}$DF<5FdLBNLz>bvdg4U`fGD#tJ!uea5Rw2a6ktRJ z_`4id0__Xm{f5FQUFjY!0Weht_AAfFQT)Q3Rfhe|;q#;_=@CniaaMd|5dLxa<6f+V zyk(vjX-HsM(e$S@k$&Gx%$iygb}wQjrXON8K?;j(o$|0_hzhr_IM$QL!BEmhkSH1j z5fbmnK9p)Ky&17)*WIKMHIBhk<|wh6`##fKI7W$C(@b*m9SlEMA#Yt~&Vpv;9j+6a zUwihNTB?~`>dirYFSm@AWRNEu&pPGtDvIJUCLJ;h(1fHkQZ0F9E>}i5p@!-=-@hQ4 z%A?8Vs4wtT>>nW+vVSb4%1X)-wx)Lf{=Tc#{-~j-p?-*hejg;46vA$j=y`pfkA-2eR--=Y@#U;n*s+pdV4hLa1g9z zUbZ*s#gZ}q1sb`mPmiP&R5~UF7ZP6c^k~7!BfcS_w0M9d6bFMin6ZO)w)`VGl%>&O zz>L;nTFD*xj7F&(gvYkRGrkF|sM+GK4QmCo+owLC zXvrBy7dg~v2({64Uba#DT3CVi1W}+sQzeRRwD+SiLk_%|cky12TjHGgk8me)f_Zpr zO&v896Y?Y5#Uc8anWslL(>?WadD_`K80xv}#PEo4#a5W17jtp( zHzxb)!WAH@tVCfM!&It)fJM+uR)L%M3Sdy9Z4QISipg3Lbj{R$f0u}ie!_*B+s1ginj|ue2!{}+MyuBzf<~eeQI1k486YbV4JIs59kN7n zAzTT+jZ&vF%=SO3cFR8T1Zk$N0w`(T;4$%(4ryKuWN?HE>+SL9ZrB!3&^DdHk=;{5 z+()}2FP@BKEyx$p0+*X)d%`ZI8&a-P792z9yngk9NqGlY`@Xt}+U`gpj$X?t*lI{c~}9J*>w zqaB*!nw6~CU^tFO(z}wJ!n(&2^L$F9y52eq(oMB;)-iQWqI=UlWb@}TJxk|-YTWj6 zWObccU>a?*&M^s(s87qjh-R=zE4EtsJyl|=#G827K5KJY>N|9SyUV}cxc-L^ESq&` zfS|QZqkF2?+hb~l8k{{h_QWCS<1N2|GSzI;5`L^~01xn`7+DWn&A7s3ZRn0^!x%YF zdmwQ6OCb^-fPL2%J)A~V2noh`9V9mL4l6>QtPtVDh$l!^sl!Nond*RG9{0yxQ533U z-9CPgB2-9ve$6wDV9Gw2V8A|k4^t>vz>HpUF7N=BA(TC6JYN6QjJ@AJaSwIS0xI(^ zBbdfLU{57<6|j>eAD4=`W9+Usz*=HGsD<2e@Er=yJ$+9IifgS71z*B^2pbk(YAwc% zn0e15w3USU00k=Uw^Brlx7tAAi?rak+*CsKzQiR8DO#z`azIMaOnjCYSWcWSWSc}rAgCv33Z>gzqHw(Zl_0w{4hh9^H8cF*_tr*7dW; zKOPqNP86!$d2$qBOYJ=neHF>gDMO@!%CH8HuNkb*@cL7a2IzZQ_F)ey4YUFM7=G}E zTsDjB-y(#akROse6#k|R^!-$wll1XC;^N%FFXVHvFN$Y3Gu!nqSw)a zt4t7KjIt^Y5E5!-4#aQgY*tli!*bCEs|{OxMqeJ3__5tvqUB)r>9pD7WnK9taWS|>D z;g~XGJigEJ%AHKR5g`xz<2b^N(2sL01$Y4GPG!|A{J5Rc1`M)h1m9>`wR;a@8mCK7 zMp=09(#$3vN{=c`ocmYj0K~we47`(?;LNNC+nH~&s&(;32R0a(UA&;xvHM-T-W5%| z`vx<*c|*6in~7eQc{x77{#BI(2py^fzABP4@;?DO)c;(Sz66n#oDFR36-^xe(|W1u zsC^B2+d_%(utG>Ml$w+_A;d|2sLeDqs8SRg%92QkaK3%S?J+^)u*Trlo!*!Cd~;%Y z?!(Q*2Itj(VkMda zb((()(nw7+t2jKJXuAfwVPU)DY)wPfc&|+l+%j=R!9Hkjt#5rHPQK)wfwX~!wo!ZxhbEcYc*j@NT zU(e9yq``q%e%zovtgf$=c)pf>zdu+o=^jh5u5LTqD)8^d*Xwo^s_xY>kn)o(cikkd zb;vKmaM9Y$Plw-J=!zn`Zc`Hx&JAxB?xNYpMS3UPLA%Qde;@=G)<*miC=>umJ<;{j zBE_n-bn{mp2d`KZlXfKG|FEQzz=1=|Jx8JlGrTLYj2u>s2_CHtAhMAh>m`u1W?61> zZ=%q9=5a=6uDLoS7R5gIo*~?@@4u6AN`?#Gxi}=wgarb5_T2OSE;IGuWp2*7GB@V| zJeFz93fh(IT#h8<>{{CvN+%C!G;vy$`jla$d^Wk(3k2RVB2(yCIiFtX4u>osM%_`3 z&y@tIvTgUdGux3EaxK*AMnvF|n#SEx2tH6# z9MD%yvijK(?Cjgd4J1X$N;tOm=m+;`!!+P?UHC;J2Yujkozf0&{Rg{(38)>#r7%Y@ zaC(vvhmpfnpcr^DM%j>2sqNK|Z>xiU;7N+_Q$Z1_C(uXU5Z}LP4xo9<^>Qm81*fz81UIIFzwkD_qLVK}VKbi2Y@|M?(PD0YGHSh?A!`22 zS>e&_wIF0aoJzH+6#A8%Z<=pa8M5mL_|o=Eksmo zM_Hlp>y9aWj?yg)k_d!U?~+|(@ikwzIDgI6ybkJv8hQE=~>?Hp<8 zBq?F~B&E}KQ!#+G&X?xlKBF!LQkVwy%4KF^OtL>I6Uge)YC z9zPAH9Y6u-7%s<*5^^Wa2RQ(`-DwYKNsU4I;C{p7MIf4#Y1Jv=d~ezo$z8>IO~MJs zrzlwC_dI6+4OL6F5G2%jYubgpDpYt2kr&_+xW&wuxq@^Op+;5jzo8=jm zGOu!4wc2CQAWzF?*e2<5-n10}adgkVEzF*eSLoCjzUC-AhhwPOCx?i5hFUy&x*m;s zS1{!7_pgc^WZ;HW`86jN{%217zeBZv{~84@2LFK6GXB$J!b-|2%nZydf)=(0jvk^G zCf3IP8$mKkC|Za-sl@QnclqSufmj0L#>g=Wf8FVLa}R}Lz(op`hqn=Jhx-jg$xx)! zYP7p6T1WZ%M!-}l>hV;3t+ihYsXNI~DM;$)zx>?@g(Wo1Gvg0CKhO=_vOG{ax5fe z+a}#i(TruV9YI|dn~zwe<@}MJ!BR~Ec9&d%)u%Y3%#RXs~t)ooA|2t>spVrCvvYt*5=@^uJ$3jO1Wj35*t8a0!WVT61!o zGF-1jrp?_`q_N?+l5#4xW>Bv(nCzxB98;91czRgey7jHCWZ$NNIn@+sf0`)X0k#U2 z@?EX{5-umqG0ypppZ&(B_uey2aL>amN}5eYzO#E+Of~JNa$5bqU=XM{iuUUL;eiTZ zVyHN1m`fAbOttPc7ORb2e++08u31m2{7ZfzAK^|dlwOCAfyv#3Z|ua;gKM^8{@BztR;}08A2hYfrivTk~g4jmb6HHRTOl9~U9ondaz%V8)aYc)`$N+rET^8s~2jL0q0BL9SQ73&nMs@+t?R?5cGGv*#8y8t>kg3 zMC;y@^6!O&tel814+XW+ESBLi$oxRFoE=E7(yyMXD_)m##dw|yKLKy3?pL!RHDK+j zo={hX(mMKebvT+HnLA5>ZJ;hTf!CVfE+mfx{!whKJxY)P==HyEQ+p=G*ZOXjA*z&qH22~pa zF^-OK2P)T(Dllwn3i|`K3`-m{5TlcAc;qEYnTpx$trWCB7<5<^WSZ%PcsnH=HycL~ z{uR=#Pi+j`U)vYZf0S;Z`+tc|5utxa=f49pTNUbmAfQm2F?Px3vS!VgNaR3FhtjrW zk_~cUO7R$H2k{Yh)+v2P`O}^?pIs3Vn~N1(Er~JIuw0t@C2+1|6$-udpTM{P|-VmD+dwWhP1Am^uShRF*q*&Rs z%ko2wlL|qV=ksKXE#;*%+Q~xsO-M;9iE%>A29{WkC?ahp*X@eKZT=ER7)}={uQXuU zFtslbPHIYPt>r2JV`=zG)n_W)NFoSc-U;DYs)R1{_HwBenL9ms8#b1qw0TQ}E)>TG za^2`p#ee5r<1J$iiua4)qRM4iuvo>9+%?5&2z;`MfvboNH45jF=Ac<39wO29IZ z-bUP2x6-potl6@akt+fkF^5`5!_=_Q?It--V@14aJWT_gKdYQT&E)uzJZEI3#pj}O z)vl}++UVIdMX_kU8;;^Th{~d4b&%n&_({d|^j)=sbv>iin*KSj<+Ab1bFH<0bH7## z_p;XHnzYf)IrC;k7&#Tj2ouV#$e;&d#tpP8bs^+;ZS^shOFh%|p>(<2=bY7?qPlp)t^28#`0 zAuSWGM5>b+c89|evPP~E8#abxAw7R>#p*?dR6!mx7;$GcK_)XxcsPeBXZt0s6b)-; z2Bx+&jpXk zaHZ~h34=Z}HMIXuY+WzJ*ZNN47-CcOZntNhn)VQkefH7r1FFIZRMTbmC ze#9`?y=WpWZjkX#%Pm z%?G%UGwwhKp&|;p=?oBff6WclXx@?zh9Tn(FoYst@+Qnh@`n0`mSX0ZzJ%`?LD{&g z4Dfade{y1=hiH)auy63T1G$3$fbjd0OgVT`6|*$%5zeREHxVja#GcuAWjj; z2ZGtmT|o$;#dGY*Zhvhu1k!~%G%&{Mjm&w1G9{HEOpQzZez^E+i&{N>O`P$)av!ts z1dC_&3?TD+f_^4(VzOd)|Ainf80H1{%BEQ4BuU0dVepg4=ud?Q@Q_Q@J;Go z!q*S|VVgKi)Se<1#@LZsuFafI;WtSKO(PQQqNX?-Z?`avM5eEhgxoT`?D7VHtBfLU z1JFrf6mV$xjQRIFxog}2-(gQcBJp34XUHC@pS;Ad8m>Tx5rR!yR*4oWXTAP)2Nw!X zYnSqBTGB@f%|&)2+GdeRhF#OCpCf1NJ$U`O2gGKgY(W;b=*G@YrWKhskn2T|k>%2T z{lr-1=O-EW5k85ND5I%nb#;spCHw-stC?uZH$QwM54=g}W>QM6JvLH;T8i>clGbp` zq<@dzjrk!-5^L3CF#Ue{pF-12l5hmL9EGoPmRX9TXBssFB8kPXkC<64v3;$`?FflkdveYNqBkoChaD460wEJsJoJH6xv!>KbI2?Wa)CA~ z>0wb8#!hopv%MM=E*Kj(ml~ofiP1%J#4Ul#sl>I=MYLUz;z;s}$(iQaw@mX$CQ^qu zVlXmLC1j`=`xvgu0%{G)$!@waX<^}@laOX@nCfImMn}~_Tqgx~8Twer7E&jztfuik z0g@u6z9i&ue@h$dnB^{ZW5GAn2H5s%2koC->!9kiP($HR`4u3yVyHQYxrQ5%>`^OB zR@|;4@Xm?a*h<-G2@ypBP!wG^a|-h*h{Y+@V6sle9VX~=O`uUe6tEl+?#%Sjf@g>* zw3InoaKve4?c*e^v3u4zfs4aj(*iy!iYwco8z z$g$8Pu-qnL05UjkJS)f?Nw<`1DaZ%nFX$E=LxyprJ-Oi^yX5_8{{%^1Xco95Qt1jr z49=zyg5jW)@c4dD0+@U-L5#ivN|lQMm$q*x7w)272B-;ph4t-3W{WureG_jVBQDyX{1Nh{<0*^xeSXY08=fZNd`2; z50#Y>Zp|qKG18wkt*=gm;E2}WP_vjtGn1c&!TAVJ9DVg$8ezJ~sx9s{DoqDRP%qdJ zkp~PgFS8J;765FTVjA7!z7Mp(T(%LXu!>2McfeH!+9M=GR*)-#E+bR2I#30;X)E`E z(B59Q3o1z9MC%BE|C9s^{LTXc`$r89t3Q}R;py#9AH5{X zx*{`qKFwBSp5psr6m$o{F5^V%pWb;DKi!913a{}CM4sk81THxWItgJ;Ir<1N52pYD zQOSW1G*o~he|w*?9+~+)(}N$WctG+w5b4Bp?3X=z1*JUXZ#R83bH||9TB1zZR5!l` z4M^_)eES`C`z@|b;5Tiulc1L+5)7iEBh3cM%$^EyfQ_~e@+-tfqBYkNx3i~>i;v5T zeOL+phDSR2KF$bATppARZvvkyXqw0U+Q{*GaVZ;ZRc?=aM=y&uHuYoc%AZ8OKahNP zz{a4(!J}XOulA2q=lTx90l~uhaQ6y9K_U5Bq=iMi%~jn0{`pD8^bGX#2Um z&vW9!idpTvrLYj~LX_t7Fcu0ucV|!d5K(Vgmu4@?#=!|_-ZikO;}v^Zt?lC2`WQBg zx|v=KENXFaScYPEo}Kfq>UGkyJCsPh)ADQ=FY0KXE#yg6>Ug$D@hulO(`H{Rc&4&) zI=|IlG{V$%U#tm4g!~?>4p7DYcHbJsn6h18=N_-(MoYc>`%SBN<#QYU@5c*V4UVEw> z>W^N<&++dwZ8iRQUFjobuD1JwVi>l=7i94E`>&11r_}HJIPaM63pm*ogJfrmPC!^5 z2C#8k^mPmMP4TUT@6`+AD;vbPxD{gpIswBPfjIBO)IO0P#wos`A8qh{ zx?yzF3&XEhgzp--9~JO^Oj5IpsTa4ajX=uJo5b@<_s-L-t1Exhbv9?M#BBg8<7HwB+xd~Pn~}@Y+s5}v z3%GCMS?*c+Hz#);?c?{(%(VK8UeY$t-Qmv0pSzXpnZH}t?Kf*$+qD=#kDfBdRp8LHV$x`bU0kx^O=Z5`3yX|s2S1zOXZ%>E2-Eup?jQYP` z&xcWOhYyS4d+Gx(Y|JTX|) zCvo`cm_EH`!1u$1@%hWx?DZw{mO7?Pyy@$$bQiJ4PB+tObJk|2O#I4^xohXDx0>xU z^*`I4i|O;gnmgzHJt6WgwqD_z{)0Ic&pYLtcy@1b91h}|xlA%Xo_UWyejiRnK+0tF zJO2fk(i${u$v@a(EoX438)&a9>YscgKj!oOhS{S|q<{}VsEj{){{og|W2UO(VZLlL z(Eq95|L+@QTK^^_vEZTPNqzOy8*D()R@NTxq=O-wh zi}U}b7++Eh18ti`LR$o7%^IzOzeJ|%z1)wHHJ={K#Hoaq5$l3znhcTS?Kpz5yNu!E zfP;@SyDejZnifLo^l`G~bbT#@_xbSX^G&Did{7k%&rg4CFL)3Jx$C2E7zFCq zN7VNL@`o`d*B4I|3nrrtALI(psHBYiwTO?qgqNdyB?c%o!ns1SB2$z$#@=bN0oSW014GT}pQg^5Jr`^HJaUxEJ?WVhCaA&X*z-kEM|!($X6>8w z@=DQx>sAuwD3t-$%d8*EQ`M-~9TmGvL>4?rk+7wUqLOmYTIGM666%d=$)Yb>(x=7c z8L0@*8)bKnFFJlPWx!2NXd;7ZP@$zy95Y3v2j?^{iVDw~bP&E973$PW6J{=zE{yyT zgR*h*sMcx-{@qACC{Z)lWr&qk>w;Eq?m5*mB^{|nQ;W@HdkA;(^EnwEZg}RMOifB- z-LZnvEOC`c$ms6wy5{=(q+H`w`bJ|%vE0MM=0`H4UFMm1ugMwH<d>{alY(r-??=5m(hRsN`8MvRR?U?IEAl*VZFhh^Ua4DJYQD zfxRhL4f>*0m&q%@#YM)Hp*B*YHOCKEX^9ZQm&rTGQzJm(pr5MD`xk=xfR6r%RVzgK z4jKe11j+zr!(QAMmjqgh_G5@TJQX$gHn5Ka%peO96A4pkF4h1H7gGgMKzonc?8gk{ z-`OX^PjOh&Byi0&XPzmK}W{>5eCuqD?2pD&c7m|@1 z147J>um?SU@8G6qz`{7m8R^dUFWWtZ{d!h+j1zo;rfb`nJE3$h-?E+h#pnZJ z(y*XBj`R71Z&_Js3zVEvVBCxSsY=b}>jsQb<2i9NMk{~e_v6ER;2s=#Xzw>dIW0f8 zx4gN@cZRc8>r(Q+v2wR^)1h}`h()TzIH>H0%h3+hqS+e^@$`1YW1cuTptBfqjw?Bk zW_g3u`h>sE5pJ*;Q2gxg5pg!p2Tioy<@^^r_c&kfAS2Z`+Ugfj zOS`f_T|4P4uI;#Rr%hDFIh$g!QyRZ}x~k+R4Z3@_DxWQ#^2&5&LDm#k$FQbwHeJ|{ zadnZnQJ1(B{57~e0FNH~4AF@QEG@GvqCMR+P3x5GShZthOSG4%Rf(!G0*}dUj@*gN z#*lSUZwmc2q&3&=xA6X=+NRe)oXMo7N`GBpPA znu?N-Upk+k6?jeg#G3HEPh6JJKlm#R3Umx|3-i%?mF0M(y{3toX8?-9OzGaIxg~d* z-poTiq+|U;9G+)>|4+V5%kUyu{@O4Xel6AhyPM~Kx0L=r^QGO_q4AeVo1L-A|GM<4 zPP=_&%}==OapFY~t-P_@d@!U1Vv>{;Pzfm;sd)YjL9O_2zOdtn;7RF;($FFzRn@;+ zAB_T}bm~O7ORwrr@~C)5i(x(?T&~c&+(^YkTAIewcYU6_cRQbZ-mblvdbi*1X#LT> zuf+KIW$Gx-_Mt#}^zWVHR)2bQi23&tY0=XxuFLu0E{jh0>xh78E?~{WnASL~vC@<> zSYd=oiMCsBpfkKKLV@g;5ApL+c+!&bPoP^*A|j4$tb{8#Mko4jWF<5^jVQ44XBbS+ zdyfo9>XO5#yVMwCcujdPI7V~NB0q#KUO_?IlSCrcsBRW*zm=Wu19(r}KffM}_ZZbeJ0F8@F{d{>|6=3T`uEC!yEry{C!z|(;K`~w>ro6hYm;w|Qc=G(u2C*KOlo>g?7c%`3OM%QfJMOiaWNi^5z zzbe^Q8)mg47DJAH1jXhS=z2Zm^me{*KRH&{Y8;)hZ;6>(J!Iu@qk1syaAVUMLq;dd zc5x!FWVyOp3k=anePj;R83$8lULeqQRjtG{f-#@-Y3u4&R$@-EZ92T@@F^eJfd(Lk zv1M$H@+was)Ee(Aqm`RjGu>eamWxHP>^Pq%do*lt#?Z=IK z4qNCX-C&5WLsz?DJ7GxjyaIkuoB0S$Mi`x$BG6c_@C-O~eCB3RgQTYDTaG8t_|%gr zlb@<8e2J~_P_7t+M3w?pn9O0ZF^!k#!zon-6&2!iRT0YEL7;4LmFr>X%GaWWsz_C; z`VG*m0IZB($Bv-{6LbDVl-=B4nOsyeB+?gcmf_Mk-htYm2NPN!9~=`Lt!Y0wkhQBq zpG}sjYaoxw7_I5y6tAmapK5LLTsO<4E$?S2PEfzRJffJW07NWP*NA;izcD$ZIy9$4 z;GRin5-cEe7434ABeW}!7M98#$?SA^RjL-bV>B^Eq*YviE;Xj1ErigbnC?e_qjY<5 zO58@W*Z`eGB^gD0vf!e955yHY{R|Qa3xT|ELG?L>N}i$QatlILljy=(Fa5We?z; z;COauV(l2-LXz{b8=XczRK#)76M?AVp4vi3y4>`J<(-`V-1hC9IYNml=8ZheZ&y$h zg-4AoZ5F-8OX^Vim3bF-CvrUFFO}*{0ZpT3n&=UkOvyJQTl2>Z9LERx5pNBY?deE~ z#?y&l@j{v$pyKb+dms4@XMr}K=EgOt=KCjvwo|k^|5`{kL_ z8^mP$kzK-^U{U)--|oppvE*;N2$+mNRl1RZP0-DK+m`lNWxusCPZ{(vPg&v_^%vd6!e72}&260v1A%d%w=vv+)fCqs5=72btYfe&z}J)Z?kkF59+CDQ3YLI4 zfQ^9jw2@X?kn>{_l6EU37jVECG;T~bA&*PI-Qfc7a6?)pTL?&`CX9 zP4na!`5zu5SLR|(%a{3P)Ymrszkd_|xZqF`_-~A31)VQ1RaBlN{Lb@~788^8=O__& z8Nd%oVji$W1jD(5OR<)Q=(UGILY3$lLtmf%X&aFOJaE`-`^^L|YFgvfhyC_~!=&lw=u%U2Ohy@mH;8<&UzA_CcFzY})vp+5rPH3RyuPAL`Jk)`F!-`A)-)+i8r9lLZ^_c?>$kb4d0wdV)=-9sF8^aQFmQ!Z(@M(< ze`TX|x#v>Kb7qP-6PGjr|9F(`ImfBTX_n)8h9^nL?q&xjPoyddDUm_%YtmXYZW?13 z6RnJPGRY!4@CIOvwaJTSM!N!V897ay$JMD12mw;Y!6w?&2grbJMo(kl#A#B!v}kWM z2w>8rD&8SIT7_|CtWA4F6QDMhC$c&jKDPGrz=-i0!@n<>pT7?c^0tt5E=78z$y|69 z`R=0#Ynjz@o&|J=zpb>EYYPeQXJO=PXk7pmthUVMYbeVV==Ceh6*cfS35*eLz`%$c z%e)xeP!1B=9o@n~hA;Q!N@wziDKa=G@?BHTgs_VXeOhx*py4hbbJ1iLTG0`QbDjXl(EPijqBrKL-b%;Moy8+{^!^^6+MGgN1-9w#I0j8s zmv_!UM620b|85}gs0d9{lS-FAzFA$WvnvH*V&hu`X$|%iEZOG5pGZ%_@ggkzB4|;f zdUI0IW;-b{m`6N2?q8)>n%s#STYz~Y5nbh)x``kw#su{YN&2F5k@V9PY=*2A{l zg|ccBr4j?=((xs|!NVAxg$t0=Z)H1XuV9BQp36H$IUXT>apyg5_W(k9tlhrvk} zhi$bP`+J}uqadyUUpa&1#6#Ly`=@N@3-Y-U-SWmLl0<@?wU)j}J`1WU$KvH!F+Jv7OFrak5Dy3r#JR z348M0I5YeA5nIAPj)m)*#0SVPf`>uTDvJ^{` zYF$g6dNH`wM^MDYI@2^({@7%d={y>H>2endvCyb1louz_9BWk5JhjCxwBT#ZW;rTf zk1a^zO;CCC_ncdmy4)hWCiwEl%_LxLT#w5xqBLm>E}}ePS}|Xj?}eT1`UN`XetACp zgr^iv=T?*; zT&{_Ax^OT*cdH05en*qB)<{%d7(1GyzVd>7au|Dww}!kj!C-A}FDsI&o~*!WV4^wY zNsx1*Q%vVnb_e_>9CEXwtED8~|NWcrv-qwFHn55j28RGxg$R9^w|AG#kCnIQlGChz zeEgBc4L*KD`3gp7O!|h&4J3NVw*a%im=xKum2BhghR0Z!;TCD z2V+Oh&KFn$lNM}qs!%4Ku^LDiRGqMTEOhEePCb>}9SZ2GUU@VdGY^FRX4%Iy02%`o z=D-w|p4nrN|HEzyH1lJUKdMh9VYE6b>>dYnJS=yA^Y~0TH2W?aLW9H2NB>Vq zktmFBAobv%OdYa>Mc*A2JUTpZf0{q$V90NG>){$rg^$u{=T^S~-%dc-ng0`GW?Lxe>st3k0x3Js@@4A*+rUpIW^$+Ylx7TZ1S zCd!OFDs}4tAMdg1_=~8D(F~1MKddn5$(>LT1Vuce6)%&QmRsEJSj>3<29iIFVp_#*WU1|F%+;AtAyAMuU)66(`5^j$9i8v^?LBLd^k#*B0o_JVBTA zf$u*^X2XIcD`JQX*3S8cWD)2ay}_5ei4xzdkeaFf$l_o;m~^*C z%TBTwIa@cJZ_-{Cs@@+Ca9ydaUtu9p2SHkAS#c?-j0IeYfnDJ^UK9^Lm^ji5wiYkQ zCJa+Lem|eeCsV<#Pcg&?EAIAnO24vZoMTMM;-7pDtXp)|oDal?TPV@UmS2_XVarM0 z${IY`!<{6~#dJR!&;Ix@}$dNLXPs?KO05c4NI9o95J^NDj-Hj}fn>`2?e;{GmuQi#1B^y{RJ3 zjVk*h#9NhO?W{@#$sm}pBClR;Dr!ibhJYQyid@_jH**BuRE|QZCuf9unCJ4)-C87G zHJ%$DpRYmo2!>>YeOaT$viER!XN|`QQ(zjpp`={qjzG)fU%KHgC!pA?jO+aq^e5u) zG($|XLu7}QZ0($_26E%ImB#E`3_m?IctLP23X)SPLN5-!)f*QgIp&Ang6JGi8w(3u zGwjspvuvle9UO7u1tRn`Ww%edmCY1njv0w>b*=;)sI|9)StD9)1t*(-ydtIVe?yYr zD2>~(wn@A-)s5AeAmD2a`ooA1n(_?lyd*V8t-i9ZM{3tZDOLW8Y1q;_c{#54s zp%oYzWGLb8>B8EUVoyF3?aMZAQ!wP?z90;IB*QH7Qw7HUY_=-sf2i=XtWH{ ziA8tm?avdVJ#FklN8;)dP)j9uRacr|DC=(A*-R8`4v)-F=yanwV_WN*t9-lcQ!#ev z=bbG5DiUAP*G@Tm_gPhTdY)!itH4dKtu0@ zoy-dR(MC8xzs;aXG{z2(GQ&7>NMC?rIpk1eh?if6tD=< z&|>xWB9|$3-sfUA>I^2?y1-e%YJd(uI6{>uMY8S?8O23s%;HbfJ!LAVDT1k|PolsR(#1GNR~e)*{5f`T{jO ziAL{NzmLAz9=fqF4f>7fbL!BoQa?Ow*E> zm3f|g4q+23sJ;UjhGi2GNMln>!{2CplEQ}G|MMvvA zT;&;$I9I}a*G2L&@EX?$+n#Tql{B7?8a;vdGJc7NmqGSKr^@MGDET2)9!z*s;jA)1-RrEPJCZ^A@&$0z8!*S@TqygrcfNd!8+7FF|G)%(ZaoB9A_#vLA>8?;cnhm4UG--qz~V-Ar>m3 zspMqKxF1xx8?t5J(N$;s1kq#-d@yhNYr^IDT?|!3!HsQ?`&;}m$noTdq1|6KRclQRjZ{EYkVfQf#xi02J9QTo{<>^m*y6-dd~;ZJEx_#;Gv z2~D%gnBG0a!!a*Wc&|6n*HCp$v+PYy0|!58o9cds(3n>3fh^d8QQp-{`VBnzw}hT1ksr` z`lA*;S|}Q{)7eDiTZBm#q_PrO1;*a(HGLX%jJ8P`z(4rYFHFH0Wst!KB#w1ulOoa(2UB z{oCJUnsN=e{HgL0-el7(`PtLhX|7#GXQejd>N(*C^GC}$1g5n~f2V!+8oa;3qRq}o zUX>I#uBFHD7p9V4=jSF>MJ2c@=fN(mrW_)Z)HWTXm0{uPjbrp%#Bh39M2=idB#FJR z7{4^gTqk)#=Db-_0yrLD$RE~X&*8t<-rwUUTtu(vPnuQwC%P7|C+fIX6P5{{<h>5LSE%8F=rUd1eY8{`&Ho-;g&GXmR>B>vx(-uJeU(e;kTD1t<7?uFh9^RCP) zbk=`OvOekUPO&m|yvEFqA=v5-yULtl4%6WUU@9CoMH{X!APET-N}67tVfL*v>i@(Ep%%(DnN9R{S6l^K>TzD7TO3!Fe1K$sv1Z9-y5 z%c-61o9kyMm)ffc`nL7@y$zoUXI}mV+SejPInH!4^f-Ay<}X~5>d@eEc@1vZ;Qp35 zQ%-koV6ay&NT{a41gBOB24QK=D&3ftCWmBeNQG*nFF}sV=gZ%JeEc(&wRWG&VDqyI z{O`lnzpnuQ~(lgi3y1?5#}(wxX4TJ-3=YQ9V@ zSyy-7pN=lse|Q6?V=$l^C~{#Mio6J*8}wa)6fI(YZ2Z+7Tz(1n(p$AjJK$v|iRjdR zOy#hRoLAgUC@s=r251rCEh35#{Z*=^kfc<&x72xjSU9H-}ujnYEOKN zzJfZp6PoGzmag{WB@bdaOW72xp8>4 zVoI~VYL!`0We{CrK2iDlw@c-LV%7ZN_V43>y!HgeCKp;(Nr9dqaSQLR6F)ImrYu4W zv*)3M3-_$+%%w7&+I2`a4si^I`#%R_nao-93=EaSC4Iyr0!epc3(Dg zHji&;+|ogho!H_dELdNvI@h!&&(ZhWVBoDok8qlGNanO-C(1XQLR}y5u5oZ0dZD-E zt%mMQ)!oxeBi!J)H5K1P?kCYjmefLsg;5m>9?FQzn1MsC>VO!Mz5^?Bx(P}*tW<(jhm6CI9x z_crv3kp9F_XCKGdP1r6|`-HAr{u|xGR_!{pa4KSyHrOwW;Wr^vm7~a@4~*i3kD`q#O3^m9r)BNL=HN7GDAn#5yUS4{SudWb zR#$&k9a~nm(4~}xPv(g)5U5B8TMdz-QLDS~p^b`i z=_@r!R_p9A&R|>PjT$zvk(N)t@1MNTlxJujh^jJ0Kyn*M5W79!kBQKt%i@TMPN>5L zC2drs_osd_bv6wM5Leens#>C~mmyG{H!sV(oC$ZII>(8z!{@{21=53#4;NmN-0X$rWry35;~yrrxtSqaLG@=?hc)huWi!*_f6T z0}AEXQ`=cNgR?SCHYZpEbj9QvOT@}5tinIasFPIIj5AP{+z)uUwBj4HO2`tN(j)$~ zR%QhpEDt^1LeH>CJxzz?BBb;@ZTpRd$VD>SkB7jU0Wr0W*ikr}QZi(BxE@xgQkYFr@u~en9SEwM%7I zfw+iDDcAMnzMQyM$a@z>Kzvl(HaP-jLKg|>Yt}3WxYaDe9XsN0NpX!565Ty3@|elN zh6(9DX{75kw=Zw4+;(;%eIYGqX+$J!jG5L3lo+MPwb6wM^=U(F+Qx}&k()j&{6ml* z2%VSUoi7L~jAu2u^!3EucTgk3>(?FMuDE=M-+F^*OKdE1PW;N6a%BTC)NKY-wQYWj zb%=gbH|}~tEG1dDW-p3}MJEwVYdgWK!_sG}yVQdXj@dF~#5IW!j7a}+u?zqH3e7=A zKL@0P>dsR8RQXWNP9UKQ+Yw4ipBj%xDAzjGkl5M#*kY9C;h>^${5#?bY240>mM;J-0@A)%1W|6I; zY!*{x%qHcemSb6GN4!@Z#(5&wJ@m;+=x5-jU(EtwaT4ol+X zd7#wh{K#1jNx{YI)4~E18qb+_aapqPL(oY)hjFuk*2uZpE+Oj6UnQIeMh|hJTv_pI zoTCjXEJ-BF3rNhze+j!$(?t_RM_?s*zS7&qWN{n*x~2bUiNhIH2(@(XYgl1s)PuFq zH9XBHvuSb)vUq{sDTXvV2>#7KCOY$d4r?zHNgC%~qvFGR7I>zCrQLULYMbfgL~Fbf zo%Z(C;EkD(Db0Bt3W`WQ$-Tm*Vrx=9RkJ@}apllcyoEN8DgiGd%H+n)iP>^LvjL06 z={{RSp17;n9%$@nmp&%^d|^Uv8tGs~gXkHSl=~CIgiw@EvmiOG(&MzYg3XX?k&FA! z&`k;WLfDDkW%O)r|J!g1lWif>(L-b7pxV6Z&ijcHb*jQsB3v&-CMgmJd1z4~bRy-J zltQzmQRfdpnTaxciiMpk3?M=Djbw0IQ>9TBCmwk7Hi*0&UzH5z245UsAt19MBV z^#~(29g8PA7>w=mj6fSL?a{%y{7c>JjREB!mMESTg^kEwP!ZbH_=+987@A-jCGJZX zou*u4>b!V0)g8BJ7wO&olQc0|rnh?FwO4cp`8tYX-yWT5w7A9>$ePQk%@8KCkIAeY za|5k>dz)2H+)AnW8omxoExo)e*(%F6N^okGmIX)EGO>_B%BzofJZSZmw&j;2fNxQ6bUjd8#OwX!@Jz?>7Lm03t!uw+#s{Aztnn41PfbQCj!8*Frh63R*+4 zKGr_&!hA=mWQ|)4s0a@drrSRl_;eHwE#o6U^@1@0vxH7MR|g)Z{#YL7SXKP=!g4SY zB!a2d0r+9`hD~2#9{Zu22ndOCCs66@ZFdx^6f*;WaU@RrtHeG8X((TD5HY@{93!_F z(f`)H>9ws|$jJWFbnnq$<*DOSV_hbe{`5Q+EI-XAQgSKg$9+;%o`u30qh5@3aQ#Ov zXMG3Zsh{sKj9o@jX&K|DdCHiZ>3|};+6>Wb`@qr$)MR;`-cC1nzc$lqq<{cTpkJ5^ zVCB<>w34_?=1Ght#>F~d`qkk6+{d?+@CNMKJW1i1kHx-6`NegPP+ z(KP^TRjk5&e~YCvC030_@QYu(zZzl8| z-g}gmW6IQm)kQy8KD&_oRHsk>q+YUEFCY4+VY(qbi@S>Bmi0JU2aPd1{S@+>-FlGV zxiiALbmtyk%b+W63CiSK=hq-TyZ%mqOF*b)!n=J%dw8@mP9X&FrSu&so2r8f$5F_4 zsa-)JFZ`hdfSO3_#u29bNBFhMBKlvY%5;w<%jwTi*8cyfH2;6Ve*YaNgvM(&uBW) zL7PsOC}gRf_t5dxpZn8dN{ih@lAFbzAUeim&RTA9JcmNXEyC1gF^MiKjj_!_eTRu> zp*@{#RaUrid#d8ro2rd~hBv2VP8mA}!x=X=RlcG#ldYXT2OVu%qScG9Vtg`hu%113 zqP55jF4AnyixVxjkh-@&VKc+TEG-|ITIu`~@ZB1BC%fF_Fz_2Vm2I5KKDUN(g-1X* z)PkTKk90-8);yq~#CVT>A!F$Rzzcooym~>W(0cDpezdr9iWwnKJHaIKD0+@W6t+xb zloR?!yeiTVaf~<}_gep_Kt;PwuUiB@5c$gpe|6&UM|7PZHvEFp*8S{bYut2y7T!4m z+`KY^X7qeRQ=>ysX6cZ*vKAFr-rRgfj4TPiRzN%7j1K#PZ&W&Op5vi^jN9zZcVNpG zxym^=7oMmCMr`Ycp}WE-{sODEN)E!F)k2`^XkB@e-I_PT2iH!7F6P=0Zih|7{>P9H%mg{ZK3WC#dh)k1or)vSGq(KpZ4%VEpIecJtzv8$+J45r^WW^)yw0@C zjUmpu3%1K=;5wu!^ULOg9Op7jcl-7PZIQHP+z~m?Q-ff9*B;3?`4!-Vg>u8(W;WJx zjl`t+6k5yH78)weFEs(0zV)s6O~6~MrCXM6{57%!~KTFc?f6?hME~8#=auf9`kQe3? zRX&PDKkEjki}y)`Q~3yA&o$n030vZiENF-dwiuMqp9J9w?(|_zB(E#OqG3IvtURHI zvkk+x3BJ-=BurwSGHY?Nqy=sc6=*m}u{-12e4}5bORyUhm^20?sjvU38fS79A9H+GjXD3TG46lgens@3(YN#8ruYxF zW7hvKj|&O^U1&3Q`CsfBrT8zq8f!xr@*&mk4z*Y+g3GWfhC!*JldlG07POR2BO=qr zC5znq1mUFEEn}icu4M5KT}(N0Ayg!EBtwZTImR^oUEd~! z#tcH<3n^+{ykabjrBPUOKh<{%7+N-DOH(YMnTdk|vruXhks&<*3kEq~BQbOk7%H7A z7U{Q?p$cQYpH|duuF&CPlz62dOsaXy_a#t;fTr4)0nNJ^gI-A~bh9%GA9;wpmoEpO z@^u>vuyo)S)DlacEmOGH*VKn{mkac)75D3W^}g2aHo;Ubh=$tT4D%7_x-@=*lm7YR z`X5|b>vse&{Pck0|Kbh)_bk!Bmr?&`QU1#V{x;$NEXu4DC~uX8Kf_a!GqdSjwyg0E(tw0CP8hPLMmka31+52U1wj!KWJF}ye8q+g z+s2o&#nlD7j~`bzA4?xx4|FI7fV}OCJ&j~TuX5L)17P~+$pXcj1`B-8W`T|E$hTX1^R5=foE zSj~<}GS`gx3&>=nr8e?F|IwS^o742w)0?v3)6voN(a{^~cYVDe1NJcJ`mQ zdg`ua*-fdbf9u=DV&KlgSFfMj*xx_2V2%%kYkXi2LeA5km+0VU4b4rR$g%>Ws*r#s zL2t-NZ@))X$z7?X*QA-DP1sIs*okK( z7rgjG(I2*GaYs%d%cB4D9v1FSq~9?-Ah?$2+iPA831*~XXks{>oI4AGDT#v{cSn_5 zy4fcB5__?B28UM!HdGmtR>YVr5swxxGOu0;ERwcmjCFRaO&gvb2_RyPU%>C6#*y?+ z)QBf&_Of8XwSha`>?^RlAnU8`g&Qk}GPGqfZf9O;XPQ{f(vIVE`r3xBEvm?;qJAop zhd66CsMx>Ga!Ph4cl2%7iWxHs7EXabrapn#;bj$@>ku|3V^CV~dq z_t9H!?JPX)wT(%;f+;{Xw%WIs0;Gj3+~b`NlV_cYh9qyhB{n{Dj+D*v6pASfsEte& zU6mb?5{`k%2=6!#;$&FTcqTRrdQN+@^5jOFk8MJ-?8Rz9iWL1vSHHXqNjM$d zw6HN{Mb)AD7AitQbSnOml8kozFpLW&rA;XG!jo&eZ(+aP@Mgoq3tOV}gK!zHDVusX4xujN?c-$hknI|ZhCg&(l+7gw3 zveYJ3baNNvRu&hk({;>|UZ^;$wTsDH0&mAHIJo8cI))_&x?OH0hm$0p^MyWOF1 z?xcjob%h+>K4Acxj{4N;>1~q@V+Zw|7u+UlsJe^J#y*#G*0pB)d0BZy#rAs8_jsrz zj=b7$NNSk{5kML<%?g*6Xpylu+L@fg14-DRsXc7-l<*<)4cBDq2?tlMPCC9-#Ut1* zzm(}%a(%2B(hHMG3->QSHBT+wS8wJcOxos}7~j0;i0%cuw8nWec_^!qZ%IEr8SKIe zOGcM2EkN=a+u3NsF2qx8s<_x=EOL*M0zLAV-rAm3WY>GB54Onw2`#G>JDt=42{i{j z&-a2MLlpV@fj_ks*CsMAr?Ehc)Q||KObL-FOO^y8Zl#;}8+Pc4j;Pr~imUUA%)?{( zvyw{DxQB1U9jY6q<2f`qozLGZKrA#J)Jj@8{*ZX?P~95`8eUn~^Ok z@=(;?cow;rI@z6bo@Z_9?jqW1CO-d+*SYi!j%~9SFwkbnHWTX`5@;C!M~H zWzo9Vu1`22e0mH*4e<93;#fbem*#!#xw&WH!Czy7$-|oPwZLAd)C0&d7FuylG0o^& zTyxLl1JW_fF=yJT`i{XH_OTqz_r4qTWJB7<{tS>IPsi{L6=-b-@3^+V9I>YVOv5bX z%D5HJS@X~kqSc@fkGy6So`1-Srz4Qf?U874b;nD?JcPio6VJytWo@T@*&sySp#bmp z8v61YjE8=x{5*8oWLO6Ik(_<)1fw3Er^8SCoH0!M0)*`|9gXGj2iO6=M+=p_57ddM zq_w5BOLj|!PqxJwZ;`@9Q4!rB;zOlB^@hj zdSZHFd}0n&dv4GgMmEmegKQX92U~ZZ8FB_POHPGL*^Px`=#yWq`HR1=F5;koHmAmr zsGDv;Ta(YUpV)_XcbK?iEO_kE5z8m|Ko5uhNKp+$Ndq#bB{0uxiqKT6t1!}xYS+A9 z1}Sv}9k3^_*?M4Y8W#M4tMyJlz)zl9tHIn-qwufavr9x5U>o@J7mgd7MQi3RJY{PnZ5zdF1#P@VYay=f>dgozZZgg7 zt}lUhS2Gue8=Iw{J6FEs+SxB%;I;h_X%2DmYPQQ+xbWHF%UwHieaW=DTDs6}4>~tF0r&C5ER$xT0MU4s zBM3Q`nnM5l(Z?Hw;VNsaxJ2qByu#{dUy;*um5|o6L~$KaZPAHt*=ffKc`HSS^0?6S z$JoOI(A|vS6b6qB7w`j{;gULQfFL`!=!@8#lif2s$3@C}dFT)s9T~StG?S@|#t5E| zixIXu)9WMnU=w0;kCINGUoXM66mLyotRVkiT*jO-*6)ku8V*7c`0u_MF2#dw3At4F zaywqZ!!XAZSJyoK#?V=9!*q%KG%Ju3H_;i$HzzXe)ip8 zO(D>;)U0Ju9*Z_bNQE1<#Cn8una}EP>&Gkt`{G|K>R!)J0b``^Mg#~g6gc9WKc|?f zm*RTAWp_p6HAK_aaiGHqtFBN<*KEeyugE(eXqV{+kdYO_qCDOj)*$5#Gq(-jy#Ic= ziWbl$Z@+Olaw+oM8ks+A1X-3(l}}SMkC;_6Wc6)Do<2RHvrl^D5N)N%>|8~?c1Ggd zJ-DAfwX-=VjOVtdhBgH^2OB1c@o$un6%j^kR%xomiiX9dy?n|ij7i-M=g91~w{wip zc5(qy=;zwHvTj&#T;!wAx=h9RPHtwFR7J}7ThJ?V`t%zWZMtm=c6}rfVymhr+6pq( z>qgk+jER1bS2t?1SEsc5LZ{`3;_M*mGUTFa^u*_=%4$19|7@p- zPy?Z}{gjoC_LaxhuRbts1+U4>9BO2}pBlP8u+*6;)L{+d#~gl(Ka#{xvPtlkaf;rT z9DyO_C-w~6cN`fb<(DVe;EWzg7FuxZxR3XJkrBkNWAF z$=ejScnCDl$;T3m5Vg0%^xDVS#Ttwdv&V|3z4sV+Hx>K-jjUiFqsS3!VLM}w(`HtW znkY+mG#u*nzA;`ri8+BHX-t-{C^6$T)TwqvJP|n|N7+giU)@TEuR_P{M(_YRL0d};jL53_~h$UIzo|1o$x?4CY!Cqp86VDr?=NRnsjqN-4aD@0CH6U z3)uKPIg}w_-w9QF3W&cB`|)ktM9Y9IsGID$7EiGkx3c(NQk1Xug`=3~ z`J5-L_EP4r`tnIkEs~q@*zQWEu$Q@`nCntWOpjkauU3EFx-Rs2HH+G~ zMp$nVTVMF|3UpayukMY{;-gg=Z2f)4*VljO{ZvUH)0aaqWVmy)6? zpW*_RHvgqIQm6r=qrK$$LEti&R7KwuNypP?Fy@9FP=)ΞYR{uRRTzZCZo&=#52y zu0R;A;>oV>+R(^hk>u8A&m1X?TxJk^o^D+eAY@*Wz-{q;r1i*HtQ2_x_2$L?$$H#dx7<+&FuS4ec1@e{f35L@h5jSfEr=Zvt}iL z1F`}^RQT;$XHq7xLWVMKTywle6V+iSmZEMmp{J_1Qcrb3w^SI5i36RYo z_<6Tgfg6Q+ZX*pGYc^pd8&SiR@rO9KvpIL-N!!MGlh6qGirhUO3MH4AnANpNKACAY z<6LqNv{nP$uZn#l^wbttdmbwCbe5AVj?c0FYTmd3C$CMed3*LEl$%rm&Govvi~W#E z*fgr`2yF_Sdb2T{ue(%!3hKZ(?D#_@0<3fivynO(H_F8Nx_yZ@mn8va(e%-_U|N=? zv=fKp@9w}XNs9Kp(tWB~<<$+0DfajcEqC%Cv*TJX6N35VGH$*-%wDs{n8L%hePAb0 zZ6TIh8Dt)rp3#$Q@cU3WGKopNBQE)bS3*z$=E*cIEanl8I_;VM>&Zm=ld0N=3fwI2 zsg_#hCgofnxgqEBMb7)EbyR62Q|Gex z78!_dl5K88W~H)8xvhFX#_z-XBv8^>FmCZM(hG0?q}k?ZAnKg~Hiettd^qU?bIHA-#2OoPF4t zc73<#+{UvaZBt6;TWJc9PFqr(nv#hYOE!6j^}1uWYu!&U zqW>V?g?arW`e-a&nTQiX-JZW{NsIrBCcgFzdLmWVv@@c}^4h5N24$Tz17l&}z_s;9 zvXe!vO4d<^W>?lzyiV@dwnLs7$v*Y%+iUYBXp-?XN+o;fi6;__Izgt~c0Epb9L(pY5`EPq{%G9k zidFqRQg~4sgX3U$8?b9N=_%GOuSA=9#xR?u#=M(_#yp#q#u%Fgd*6e#v6Ma~9Q1%a z!}#-tyPe$m9y!tKOgcgQGl~KH3$;i;iwdBARvFU-yW$!w2O#0KU&luC0V|9t-i3zC zuS281MxK@oYvL_>35>2469~#_ov2@|!(!^)q1ljDYm9FNd9B^$i}8`_)-H;I_;k z{eqkK>@nYGLO6`VcSH#;`??<;5csb8wXbvT+H*DE3q>-XMsf-y*2S}re$o(e{vaBN zYS0p-5iH;V`h9qbFv! zFM{6z&xI#r{>$(qIouhf_UO(V-T2AI`I-~mNCbBc;fTLLew7;lV3z3w`4Dcms2`&rlMVlmX=7Fc_LcVg6NN8)?Juss7XqG7NiO#v~)_1Py}xDYdbAZ(ul zt#U(am0(b=qYw|&%RQUc@IG5|qa0L8OX4+g_;Oz0L*n_`gr-Mg zB=0r>N_421jQHy3q^?(yh1yOoI&sc2wrUdB$`x+H*v$cKArKAP*@c&x^4(JK5F3@A zYLP0V7N4Mhr73Vpj=$8=PjVDH($ybgf0lL z-s6!0D{e?OB*^o?x{)kl287>YCeF?8s7MVJ{j~T!?7R1hSl`M}7f0rqhsU>aKk65H&}Ujk0+mS8D^W?=ks9($8Ms@1z|cXo2yF`nA+???9+31crh8 zUfHL{cjMJT`Je%t*@8`s$l@$YvbK-sR;GtZQn+Zz8s`JHTEznJ{3iFah6tl#U8&`RQrQ`Wj{qcpyKswLHwNR zit^z6@NXE^I%b-cI4yyltFN+RJzku-tiP8#OvXFf^#-mR3MeG?40x;I#)NE~PUF;Y zR!tPe=pDG)boWr#eET{HF`+2e^6!2s+2HMDu|SV}Y+_RD?0IMM@f~}FS|@N0>F!DG zlol}pQ1@+kBdj{bx*nL<41ia(Az?e_cEi0Qe9=@?aql{sO3+a=GHU>ITU@ zHhz45LfamGK7L#P3dl@Khxncm0GppOxEva%tU*_gGB`S9CcQ&)k1|9yxdXd@v4dd3 zysHv}APAkEu0)u!gi>1xy`l_0S(P42O+`gjB~kU}!!!wUP8^Ml)yxGM1`2SZ!c{}2>AHSq zcZ_KnrIf8LKUn(mmS6YJ1M!Ov&t>y0q;fWpbbnRu7bWL61~ zdwoptkaSE$#5onJM8x|dE-aah-{ZwHy^EA+EC+E$@l@23ipVL;_xB%wxBsPQ?Sy@PZ8??Jxw~3_KzkcM|E!FtNl?dzZ zNP=`_CrfVeWq+%5_%3kWMeEVB({c^ua++u^xN1Qv(?{D!PK`{US%x^5-_(Ua8An{t zj;=W@ZlM(;Rn&IM%6`H`lZCEriK;7yC37BLEYnGqKO9f}SNX8S8IsOg@VI&xlJqIm z*{je@(c&{YkFIz$rWvW3In5Gd#t9swi9$mh6^>Ab(1BP-ho!2py@omji{!nSaP8!c z>IKdn>d!}t0Gi}?pZQHh| zZQGc(ZQJIwZQJ2l4%Jyd9GRYO&Mau zOX!dZBPCk+wA!)T)um(!%YYMcUc!3EU;XJtt5}{sLHQh&B;c6s7aXQae;Tc$BCM;! zCv-ZQQBe;%*z>uQ7FxT`Zw1&M*kVTBEEAIo`v-|s97I;e5Opd?yN-|D6RSwt6Iq!X zn5zm23mnO~bMMlJ+D_BQh%IjIZ%{h*Z^{k5Am%;WUZuM3P9MlRslvLHadAb|nh9LM z2rcMnz$?>7F2XXz$KTf7sx3nD8so(LFHPEDE1Dk0N_%JI0ZMB#>1|o2V^`wGO8t=B z2H=Yor0u(L_lTT%Hq5&x;b!w{-78|aj>`8nq zpP?pL5+Jjx2elMMw$Pes*%%jX%3!6X@O}lzavko{Y-bm2t`(8C!FKh`>F|3}l@86> z_Tb>1H6Ar;JZ7qk6OI-V#oKc>bGrI9=Cq*?x)@ip63Ag&*K2zm+fhuXJ~=VF&Nb&bqHe0VehLr&snm| z;Z2bJOx2d#&lmKM$i6nik4jqzZsr^`%wLwU^d3IS zP*Bjr`y)OQiMXzFFfV0z4}P<@)*cl_cD;pP(~gcZ*ErfQ!)w=w#bm5pwDX8~YtD)J zzr@mH97i$gvrbkVqo2;{SEkv7FGi*9PsFWvO5TkM zOTSf(G7Vx_R9v>O8{{BI-AT{Nxs8Uc%V0oH&vP{)W3ScDc||aGpc#6}FJ&nKn{+fX zsvevg%1USllX8VcM$EvLf8p0gH!jVcIavo2jN>efqF$k<9pc`BpAQ)0`L5An_^zp6 z_Lc#i>#a=Ig&6x9#~Ra)(~a{ae^7y|WgEI@AAlyK1L|rWeYX_jmQ=R29h0|kB zN}})AiejL8=vGiY{c6a*#di8YcWMsyh^^bZK=*s`K<_{)VB0zcOxyvc;M?L_XuhWQ z?m*c?@Sxj}6|g-YZZ<%s2DrTTIzXn|;Xv=$v=BW$>UjN0z|ZJSAlvdH<_3RQkyf5mR%$bE9*E z1~pcCt>MIDbCXDhVfFVlRz~7AsZ`?0DB~o_O4aZ)Z@eIJiWK# zyxD#kA8g>=+rx}E9Lch^Ucm<*yi*6WtZ@~s>t{?b`NPy8jnA~@EScV0f$RdlX7)>V1VIo4Ht{x;TCehxl{*F@DFIp>i$ zsjyUh?q>Wkc1Xs_zalRhDOFIxiVjnHHDtg&@7$-t>f)O{^pavWW@Ih z9;?h0I=un^j&A@&tJMD#U!QWm6c6m>4Gkj6_5FEI+_8yYKg<>4tD)W)X4g7ir4FYD*|A9E*`Bdh# zEvc=k??mX0_yBo>m^|g!{>_iTd%H2KUv1(#BMarzC>89*jbj+Dd(Z>blP5CY2Z+7> z+63w>#*Ao*=v)GUQ<(@gf3 z)+seE`E~R8mmO)-9}8%Q($&- zn#JYzZOf#gJknX0U9$z)}FhqEFFO2E%qeV?+sK*MgB%FLKI**&6l^)uH-)x*Ek1BO7 zz?)7r;Qi`DU%df(Que6FoSB^d-26iq=%dnS^~X$cK6ed~RlB9*7^?IADj$4W~n2Fev^Ydw|M z?~&H#V_+=WL;Yx(*(o-}M@ko&#Pp);x(6RzYu8Bvc9XQ>7O^id+ANVx^1?E@N3=!5 zu6c_aUo3H%;#IWINu2ZZg=W-|Xp7oCe&3U5I=Mspwlv;VESvU4XS7(nOSX>0y?7rq z{wgJt);(okJ>FIFQEZcNh4KY>v{(!;7AKaA%)Mj3GyWqUKQWWgUCbeSUw>4Qh?l69 z@0MqjXOu9$SkhbVR%`T)cslVtbe{lFxT8saPX!e1VkEQ4UVQf<k=v8_9NeK7CD`ueC|1sfsBm-i%{+PBPOrFq%|?b0+j$C{F70xs zXE^F(yKa?(>nx3^epmAdoGwkx-D~bubvWBU$?P41Z?XMP7L9OQ#f$76isi1)-j%aE z+Na+rICu*x9385f2iF0s79k-GXdxkuEFt)FOY9x8?aMoe z7f2!aOEivd-7c;DF=nb9?`u- zHX%8)yKuba)(vhMDiX?ij%n|&8e05-i^6v~O{wM?TozSD)a8!YvYx}i+X(9$g|crM z(?t|D?(E8blSgu>%U(2q3uh%z7FNK`x|p)wojc&B`Zq;QYZzeAT`81RmoMPL1Tc`c z05A|1@Oij2tW(?G%IK^G{DO$tCI`jQ<+NJW}d^L!7=bq zO(9@lFQx`~^;zo-_wv%eg^_#!f08|Te_w2JLOa^@ylj2qWW4)${n$g`LwmvuG_vR) zLTBmHM@YafeJ4XW(x}8_rX21GH6(I2j|#R)6w@|KDWy_rJZu}>F1M&0Hc|Ak>G~6e z7Eo`Jcn=rgBe}M;&}O2vP#i?vX_oanTYWNJULPW-2(M|}xKsS?tWCbQ3=LChS^1B0rLocClmkhAQw46BuKcUe8=ZsV+Cc^vb!RR!^El4I(xF@J z8bgd0TXUm_W{RCoA1I_Zq#}&pBH|F$5fTGe%Q-*H9Zr>9%h*mjI^z1Z z0oEUOqR!A;hHw<{pnm@pC-XK0_xb`te&Ilx7zl9QbO!JzeNhHuQ3pfH<178>YdmFs zhy~zviPdhpfeqVjcvYgIa3*q)aK|wO^#jtp>X4QVQ4#T{T#9HO8;Tnqv=}gBq!=*d zhSVFv#P4%Be7Jfi&_uQ1^3NP9;B=fS`0=aaH*fUL=rT>ymNy$^H6;6FlMvsjhCi*> z4%DrDH7O0m?x$VjQda_KyI6TlqGSUHfG;~x9Jsmiicr2Hd&D&gXPYu+K4|CyB(aJ<6)H-Py6 zOf>tCf&7Ms#*U6c#*T&#=5|izwl@FjZCAchoi{=87VsOuxHxu-{Fv!OnM-U^5#~>= z7c1VND52AOiYOeFM3)s)i|1(mGRk?Rtzi`9K4YK%wG#3n&)IH^RK~Z)?>Xgo<+*j# z+WFLFo9^@Zu_p^8Y$Xv(lo|U&l8tyL&o?l=G_Zw+Zv;XN^-lHn&+Xtl%&+RB>Z!ws z4gVBSG3a1xb`?9to@;^g$Yhv+mrtZS*y&X`sz0r9I<->DJ?7l&rES4e{ofMF>|#K- zT1k|DX9V`YKC(EDV4BzbcH)aWA9xfJL@ABs9 z?AkKQrsaz!sM@iGPIar`orP|?WP(CnGlAWpagRDgbM(Je46qjM=6Vfpz;a8TSF_S+ z8s!4U{9}o7YBNvo&E&*eqt5@7Wsuv@rbWdWY7D&P98;VWNBs%&Dl z;n`O9o}{|&DuW7V$jx<5;bn(%%E@(VK26dwND!PtuMYkL&M~!kZTuDO0QbH!XN2f` z${(k#`lgB=4*^7SyL@)2mg|5cj;MzD^)g1<3!9>}$>;lzhJ%8S79m7Kf=$Gms?aB) z4%*$!&^v-Tf}zsa)7cOfTD}W@UNs*1>5{b5-h|?7^#{8|UY;_I(fiUuM|?NL&a!3M zef2xhJP}tawEObBaiOADD2`z?hBt(#OGUN7B}UT}_MDZTtbpu2{2k76McWGI!(Y)_YDqzm+UrqZoW$kk!qKare5H4WHSEPQHC`v= znM}q#4vEBV=S|T<{ZhJ{#2xvM!6<~f&PVJc47|(k1D_-oUJe+7{0ab$qwT*jT44SU-mSlFieabaw=%VL zFn2Pu7B@1saWXeC|96-xRI*gWR>ts#gVa`QDr}h1$Ys&OW=Ztbpti1rMPT*^#;$;U zXd()6vR{!-C{+9)^_s^teMQ9;$6(w$kmP;N$Jt_4k5ANsG34Po%6#Iwy4##Oyz=pW z!|ma6;66sX1}!!;_9C-8tTNBIFmHoI1U>`#*TYdP~x+S zkBO5>h>4q&$Y9YBX+xyk+n0J8t>RNu-dMp|(dgoN_OnA|1qXNt# z#JJUZHD2TV$dz#BibHF~V``mQ`wmmxL#vnp1M~s1LFra>U; zC5jfJLNc~Zgcb+Ao^Tg+W^=Q4?GUhDaI;;ci%$xdI@r56$TqsB30HaNcKIt@YcLLb zO2#f+IRoammue5*zwA-dIE!)4DitM^ihtHDRVibOkPyyiZ<~aKj~9y-E#jk(a(#Y< zH7fnFLk$l`oG@z%#m1V_Q|ZS(p4$$Q6~ynu`Uc}YVSYT=5nS&kDG0x5vL+quii!4| ze9yFQ=$5m?BUpgW?==&Fkc^RxnMWZ~n`eN7PwzERGj`242(m_kph`d5PCkI4f`LR) zwI>)Xi@}1yqewrAf@?`ZUQJiQ=rzVyJ=VQnaH6ZFoxGAMg;^z~c#aVEoyW<3vEghN zEm8FpyizMNSQx_Sgh}X;M#J-AhcH#t4z7o{NQg@!a{#0=;#IQbRTttSU-Sz(_xq~s zMSgdnT>O-x@Ohnig$WjA9|zf0%yj`odmeR5b@pQodY3M(f#ehJZX6!Rz~Qv=E{-;% zedME5hZ12jT@nmxT-9xkN~evdPD1vdBxD`Xb0$}>X-Akl>|E!L!(-d~B~!RKE^_-n zl-BVDUe!a7_!eUz;HgUS0CACoNl|9rH-vr$cKWT`6AI z<%{(SnloPol12JuEsXT_?XTU+f|W8oJV2gC>~9qh{#2p=-|Ltlj z0c=!3sgP!J*Eg3MK<1t`4O0J6jY93c>4{!WOKCJ{k@^KiS9@6SLTpi^YR zY4RO6eIX87?b77MDyg;TJ}yh2OQ+qB602K2UBAF*qEoyV7@qqo>tO~vgN<8$HOwR@ zx1bu5&FZcNPvO&a=wA=FVly`i`R67k=d1KBQe`0%T_S}MxndA$$XZ0`B;K}MG9-4+ zCO3wbs^5gF=F+2MGE3wAneZmf*4j_zY{F8e2bGB{OuduNl}B9hDE2jBxz{bYL)R_W}KUKNjv4nc!x(r+};61k$J_`wOUav;}&Owtpw58GVWQa?ti$ z1VYcVR;4>HvxK={H0|vX<2zj2e(Xii;Ly8i`bE8zA?fAV&+*6NPk?0=ZUZ*tsa# zp>lUv6rFPQw#avQD~XccBqP)dlh(P}P~2SoEZ1TiJ^NrJW{rNOD0uH;nkY*)9!q7% z6z6Y{St|qc4@|uSFCIe37tnbk()t?KZ~pYkACa}yZd2EwdpRyh936oO&a_Atj*yyW zX?HI|8c;E=#4q-Xl4ZZk+42a0jiqM_;8*abt@i$rGc2G{AyELr{>0xB^!zQ4;(u8o zfIiXO$lS?Y&e*}+*63f`|3pn$tiRMpC{GEh9(2mx)X#<0lnN>^_8PDfm%oT5z%1^}%k{V+UAvNgRZuZ`GYlmK08J)Am_E%@!=tj22n%b&mBCHm-8+VM0g^n-P}MIuH7zj8>qkTW(D`aE`jNE5H>nv%>m7Fb-y&#|jl(+2=otmK^&{vX z`EB%lND$v$iy4~o18{MCePNpvw)GhGv|eCekTb_! z`7qlgOuApDD)dqMAci$fUnkOMQWz2`3lzwb86>?$grXu+?;OYuUXkrSkS}%X3*R(n zPxk9ljHcO5C?&M3TY#faB~W@#$?AU7zE=0?8yS|^9aw-H{`FTVOBkHF*#RWp`v3}$|4iLT@ps2W|1hF| zl9B$~aMb_egd6@!@mCxIHbO>EMk{S#)Z^D$7E&)mLqI^Nv|hI;KxD>>xtX%LtR}M1rX!b2RZRqBX5Sj<-~AV(aFlU&LxKG!OZU zeK3VgIbCgQwn7^|zyk+KTF!V#Q*hsg7fZ)3cw%N3OkU(`=L$LQr4s`;gz=2k6RfW= zmoYISieW*`9Pt;8VFgBVtq58eRa#^h|9IovBM@%Jj|fth1(sVD)Kf9}bbs@UPsHh=lEUPi!dKu5iU12mW*t(HRaqmB^yocJuVUtX6b zsldhbl)YW~Zfu-O8%LswCXsfrt&hMU!Fv_`g|IVz6Jm<;`r7o`FPN;l#ZSdxvWI~g zR}0nIy~wozI21Q2Hu~jW#l)K{TNg1ubX8QPJjGt&L~^naQGQf^sPrH*Q87Od zIE?%A66%Iegflo019>+$k`e=zfFl1pGJ|mRj8DdmlRq-^P)d-)6NaN@7pj63Q$KzeTeD znZPptAC2&@T_qrYHPmo3d(1qbeJ3@B&3ty05D9G)GkJPU7$eLK!Z&^ z5LkeE`7*j{BthXLv)~)dFTc-I$^yoy$puC#pXXjd`b%N!t}bsE z?O(b;V!h|0)&7@iTxX*l{#}yEhNI(9a8qf8V#@D2$TIRmWlK4`27wbMvkrLefh>~5 z-c{AmAvE8Of6jNA<8Rc88;h@ZY`m}Tr3<( zw~I^|%1#uU%&}xSFj%hTS*@N(v^J68q`9l0oXt7lf`;(=I@B4kAGD?$rw9r2uU94} zl-o>_f66nJ&!LIepBBWQtUFNbp=`vrT10Ra9w4zGMOq)otbhnQc&B{hhfc$GOtv~G z)+0c;@10fhoTyJbfgZhRGL~F`KC2yEB!E;Tsg`rWjRMi|2|MH`bflIBx-A?fI~q4|^Dz;T;~!Lck^D2!HV- zh_!X6C>tvDxPhl#eIyL94RzJgozd@U?S4*V2pCL&aB{3aINOSi!cRhuZse_3>{QsZ zB^P9l{7Z{50q})b7Gn;V`6By$(l_?^=kL#yW%I6C1DvH4@f2WWInZ*~l$|gF6i(5Y)rcS1A48NvtdXo3Rst@@ll7zF`qC4z(wP!*xu0B18NS&J>o6&sVpO@g7gh*57E#E_u zDl42btqpZH8GQU0ttTWk4{hl#GE7TUwS+su?8jc04E*yK;*K0wcvFt8cHMr?_IxBm zcYyyDNi)n6v<(18tn{~JJM91eMl5b)V*Ag)TBxe7ilU0}2^JgNgt~4h^xX!AyAQ}h z$Q}}6NE`x79%;gaaX#8Q*e3Jxr-hQzNLLznY6lVN(X+(VC=h8T@?HeI`#AiFuDHTt z1WdmZV`@sZ&BkllCS9{%vln7OG>oH zO59aT>8r{QeAID?LjGc7*EMDH2Au}#C;1kur>Y7X0`*myO7rRbz;WMK^@bFr9Tvuu z%QDh)6YA+pHE?;D0945K-3zJp7 z&xDPI!irG1F{26*lET?)qbxYe~@)j`*38P{D- zx3l`W^?@R%k=ifp1#e{`FT~SON>+9kRg3Hr7+^zRobt-IN%(-|X!?UuRP%w~_1D0j z)0&ke7xy$zq`9wN)HyibEQgpA+>@WX@-JVKk>t8tw z2BHnL4{djw5rxOBPttL6@c!B`No-_0kT~%OL;8@|c0vN6*>OMe1p7RkB+U520vQq| zLbu7P+lU~JlWVYsi4ynJH#w(f`u%tymDwikf^&0rh=Wrw!7!#6I{L1$`p=Tg`mte- zFi?W|gV_ZA`Hk78V^L;9S%sPS4O>QH4O)l@#ysVZ3DV=xPC|HED_eT#2J{%z2wVsW z4d7uAJ?RN{%{zz<@M$8Hyi<3=LqA$5c7ZmF@JU3Y0>e30ZE}6^DCGO1@|7W7hnp6d z))c_4HLr$BW10%_){GMugSi&nTo{dvQtp_yxckhvMV{;4GVz2-?aW*3h>AVt z-I^{;=Gp6^Nq?Vrb9FX@!nf0dx{}@LH1BZKjZT!=smJun9CT(^FsTOU1ks2lubfra zw-AetT|B6&uO|}v4|kJ@Qk*}qs;?&#F2bG2ps|((2{L<4$g&}o=5A~bfiH9WE!JI3 zZbwjwTx3zS z_U-AkV39%v+Pd#F9#bQ9odo?s;d)C)*NIL5?Q8C=2|R)hv~}B2cFW~+TY#?ai2&_0 z)KMF9v{@!PsA-9>51q^8JrA?k3;%a%4(I>koSmJ_{;CnU|K*V#to8q@6#lbx z_^-T2amx`|8RgR^!KJ?rgM1-;sBVG9iY182tWk~+AZCo9K_o}AH}B#YHcr&;?AkAv z11J_44590uMUq5f%IkV<>v7)%)T_rbXG|%F}xu3U``%xe3M}`ZZmVG1Pd` zVxWeFwNMhelH~iED+?wDgw%rZ@^E!WyzJ$ntwb5$fc#kEv3qKc4T44$^;>&m6!;t* zbZ*c6_p{t2OEnvARSPDg4GWZak8<*jn&**ZZfn0$^xqQ4oHoB&511_G&_~?7xtn(y zwLHh0{A+$Xs%#%R28~&C9k1$4u9}TFQyd_w;74A(A<})pE0o1C9(DCM7J~;+-ex49 zXFV=_{!ZGxKu>M`ppQX2oIZMV($Le#@Y=Qml>w0#?liYPsX{-+R!Etgw3GaS$F>!p zV02vjq1iR>ByjZ87%BIUZL5Di)DS9;qMcT6pua1M6os2=FQnhP>OnxJzW8=a9CF7W}+zany{q2T2<}`#suCE&9i_5~}Vi zhsqZB)y>!<=dm_LwF3O*VQqV7u7SZpF=1`{7wjO^H>b?m{24pO%;n<##162-;oIBn zAj~}r4Wc9~WeyO8K;uABIBlM`6zrl@7uo9!hCC+;XrAnjJtxp+&e>K0cWoYI zd1mb+4Rtdf2!qt3=Oi;-Q;YiYCDfKu9yY}F`fML9-J*Mg4zHCY-{cx9cwr1LwJM8h zBrQ?u!bar%e0wj>uG{7j8UtfDIzXY!xaopWG}N9@sdvO(FFmhenh>qXzu$L^WN_g0 z$m&};ejpI9JJv$?Xbd0CvkQI48q_tHK|8{v%dKQy{4kCAScipitOfk34VQ2;%!m0THs5{g&NUqyL+Z zD=;&)kbL)bFRw(Wt4X}mD2$Ss54SDn)B4+H=N0kCTh6#D5Yx5<&?2xDtX>+BZV8FO z4lp!4yRg82r{awV+LZo2-d zs5A9OOJGRlPX*;Y``z+iztZ`$G#Bfbc`bF(AdvH-zKp)qN12QY& z*Loh$X1HfTHhresY@*ome&Gl^Uq_zYYzbj#t`uC(<;KYzKtaBe`*`~c%9Ac%-BNV0 z9DzPs;e$3^4^a~SKCQIo7d0rEO<;@gNML?@IyTh)iAgwPJ8R|BX_0q$G`n6AlzQpJ zkWy2bAU}-F25KH9y(p+d9$zcqekj@U>=UcEF~8YFZ!f#*8?JEaijG1Zcd*|?Dp;i( z(HUk!EVDy8#>DU|a5(H~-nrN<*S|~VjMn`rFf)FRss(*8VA<2s#%?0v z>~H>JK>IB@#Due}&)Tn#nPJEK6g{FA2yP@L3NI)nf*@+V9t_e?50Bp9As z4TV^MDHUvmdMP3zfSjFJ1Ns3YOV=@QT^Cr%)r>kVu^e2Ck!|9pEWk+Hu&p2bhsbJ} z5vH24<7X}^ytrAvIV9(GXkeC`Odn0AzMCRJH!WQUu|BI#+)VTl=BA08Xdhk&SuXO& zVhi+lm>AXk@5LB+#%__HgzMSimQHnuP~Wd-@o{;dLm2cL6EXVCOY*p%1bVKR(gVov zp_Rz*M6V|yXfm5iq{KN;f(Ae=(8+y%I=}%R$O=tSs?u}Eh@~+2SBKbtcF5Ia!1mW> zNcLH&R%#8j;?STCeq_>yI0X-UEM%($-vkl7hr41}%|B8A&ES~ISxm>scOI>*te&qwi%h`|4``Zv%#ALzS-1J>O z`smySDL58Y#DvZBvUA$~5+JDUTJQ69_l6JjdMyay01+Z+29rx3*y77alx}yPX=n=p zA%esOAyU;6gZ++>_iZ(gd&hXOi#Zq5ut5UDE$OON$Rgi?rvBYin<0BEIDWi&9a^(0zi#m^g zgppu2wlQZM*#EJ17LGDiBE*$7V$jf-j5L~WC7%4fk+51P-JX!jU^X;$D&oOZY^tE4 z!dILoJ&Zn)8K)&(mYg-aTV{MeC~8vm7?o}!qDao6fy-z^G?~~I3s6h}D&p1ct7&Aq z!mNrWFRCx+FcN7`n9l?VL9}x5Xvgaa!|{(X)ppW9O+CO3xjseu?(rNebb@9s!$%$y z@U)y6xyZ4oHt;wH6mAt0GOdynn^2U~o-}m{F#cR~qLhyEVYS3MsX4%9tH9nV5RBW4 z4|9_lxFhHz;1G5SJ4UnD8h}J370yILL_|c*g*eWBo>sxU6?KQ@E5XB0T>BP=;#|{J z!g;+U=49XsK7Su4c0kol5j~3yka<0GgW}XM(#-Q35`Az||05o~K21+}AASp*Tov?v z13fk4U|RbQor9%D0Qvp7c9K0v!nt&9>ySwsT!34`q!upCHZ^3Y zn`~Z8u{+CEUF)bxoU}$Cv|C0LMQ+Z|4>1Y02-oEf0HiL^vE!Pcs$N|$LBF0zAE=oq zQ&b{v!=`3-83QT!w!W*Xb1ux8j_?g4YqfdGg}$Py14uBOF5mibl9L3%5#R@u<`4@=&w%R-QdeZ>Lzx?qV z?-8QyWOT*S5q@SOhU>CY5XR;Q#`6la8=9dGUkG~7$iZ-;v&a68d@aMhrtcrFQ>z;+X2&kw%F9BmJvZmHw`Bwir|q_KY3fzf$_TXP!O;#uQ;+}=ia@_aC6vmQ(b9OE+ZWbN?9SZ*)sGDztG;D;gmw{y7na1Q~Jc|YP!h`QR1wX&D5#n zS(6PG+@wLt?+^R_I%UGb*7B3WVvRApx{XDtC9V0oM=-$)#fMfbP5CG(Dscu86SrUP z>f;PbSBwCc-!vxInuo0sQdn84zQ_`WOkbb29N%hFz@kuQTx~|b$go?RyRYOmA(m$D zY%ZKpY{=gHVpfHXE%E@EDs>^IYT|Pj_d;Ze}t^@GwJ;Z6|pfBvPF>gT8hMjV`Yc2$AHTN{l%}) zI+&Z&FNTmpC-Fr|Xre*rnCb;A!W*6?_ghX_t1t^xBS=nwR*vS+!Of4D5Y27)VkdVL zOrGIR`OnB}N|1e72-{IzxyFF&yv*SVmUzvH2g;olPjBaJr=*T3@wCq2)CzGh%Z5 zDBN4l$OF0u#1y2iPY>G%tRoatot%Cryt~m!r1`H^~>gL7UJi)K@u z-+~h6nalj#K^~;?d*geb1qzDs{m=eL2V_TdtOsW|A@3K7LJ11}IGUa#vZL#FVj130 z+Zplw+D{1o6deE%Ev#?@()FdkP1pYyL;=7qWt^=I{tb*vQqZ_i`Mk* z0eN+mM$5}s*)P{GcQ$9YyGIC}Fzhd*lpo?WUR_AG@M32K zP}5&>ySn&%zTTqpfyTtA>W8iseh(g~mkYdQ?_ZxfTiyIUf97lP9lttW7Pya`bX<~7m1)ld8Mstzj9m>T z`Nn!Ofo-<21e;t8I`>9dFI_OqD3ybS+m+f|Pz&#hPsYQEJw1fE?>R=RbS@`IoXOXY zhGd$mbX@Ybo(Oc;-m$+%7e2q<*$UQQ;SX}Q^2hWI;s~QLhPiC)h++@KC_)K`=_80i z0Sk9sqPGth8M>u>JKG->w47v)j6zMtZc9i+o(ctpigDuHNs}iW#pqbpG_Su*qVxd>0%sl2!Zv73UCB82*Pug52Q zUB=LN93fHo=PCj@XU@L_u;kAJR?>g=?*IELQZUwc{I7lvB~8UO5tPpX={iKeP%TJt zvv`tiB4@D-rl%zcOiFsRCWr-bP1WUZC|09!Mx^)NU+~ttob#&b4YB0&GH-JspCvNW zP&5SN-5xx+9Z`HTfZ=^I#V)vD3r!mNXwu$h%2kI-51Z9GnW??DO0P) zGnTFgGRRQ4mzT+^K+RidBq`2IkmnnVJBX<`{W45XrZHEP_-V)HG#+Ht%fvO@ML*z| zU+}o07_Nz)MNz_Np^_#iQGe=W(h-|p7}g1DtdJouVIH4E1`*QYowIv7#x`F1<}H(> zU^M3Mo);INrLo~`k!M*LwH@2MSCl~c`Vr0 zB$EOXE>U_Kn#A%>W5eltLNXO+ldW2l>$Fx;r#9WMT?pm1JJ@!qT##FnNQ;29=Bc>>$BqWK`F3S~Y95~zJAuN?fgSJFrIt9k}!Tr?6->Y4%J;$HEHqR=| zY4jb!TdC!9Slp6_4h#WC8Jx0pWLUFvmodjDSpME4BG$Tut|LLK4ih|Sm0q53GoT780urhrx%)$8m~M>pL8 zWiJFlJg@+EumiR_I!rYf3wxCq~>4U?QZI*SzbpntF<~(*7qW1ou*3aqM_yyOn?Q#P!Ld&&io^*X< z)Q^0DxVE*!gcWlJ@S@935!@*Hq#EaXfs+l(hKMTGwI7I&HW8hIK2^$V@X$VR#m&zN=9LS9Md35Z`b7xc`iE8i=szeQ_Aba5Fh zP!lV73vYtHI^5$*ya&CzA|Uw?bjLqqzai6Jk5cgH2;YHrsqLuvr?08;1~bOw2YAIg zz~+!F<)X$^?&Rz4eBy|)FO}!s!$Gdxxv|%VPm}Ln^x`96pGSO!rVg0;2%KY{2Bg%V zjiCM67GI~pIy&iw@*$2Crp6!QKp>$a^7fO2w4t!s56&rv@cK?h&DUZLR0+`v#bc|#mPAhWZ@*!#IS<*lLnbk(A2mEv)4 z5JGf3C{rp(>mq*P5tq{TkoUv+WUz~-G$A%cNPs^ad8hzGU&~@XC%-EiC+TCK9nbb0 z=kp)h%vL^xG&g{4^2*=B68^VsG5}H}XKQ6{2sk_cSFKB7T;e-D3is?%)BLPPrAE$i znKjA~jh2`)iYll)KY~{DJX^s6jFjQ5>28$&A8T(F z6lb`t4F-324+IGA?(XjH?iOgA;O_43PUB9a!QI_mf(6U4_daL-GiPe{zM1NauDJH-xVR`&-{4=m8GKR~`-tFh=iA3HQ3x~;QsgdbSU`TcdTj&J4iLzrl zX$$cJq(yoCNzn`p6Mpg#)i<6Wloj|_Y5_xaOusA{;{}60Bc+hUa1~hbhNwTjykbiG zp>$4?B(#TgkJK^yg+y@JdH^P#qX68Ip=k%lqlP9INC_hT!J`u4ZNgmw`~OskoxRg% z*?wM!YoAih|8pJwZ-p4$e;9WDw=k?kUDtKp43$4J=~*R&t)xJxJsqe(l(8f&TVO8| zm4u6m;_jj&Rn1j`&`V(AGF>b6*B9wW_1koqw(W^`iUwbN^qE|u{^fe$ zslWTk60_7X^Pb6QoL*S!BtNNh;jWXN_J?4;p1t>6<@DsE-U2Vy_T`C}baGj*x0RT2 z>jJtFUEvZ+b~DxdjC06z(ZH2FTFJt*h5NhSwjS%l<{Z|pSE;EiR}YRDQcR64O7rKg zHVO4+I%6x1N%jsRZW8K0^&quZ9CB1B$VEq^h)yzF% zO-Kcb_@nby3;E1tc6-r*5Wrl~c#>vSCw7JXS$yaL+OR4-GJrWjgzrLk7z2eoxvTzZ zueH{cKz#a50dtwKwH)gq$S#Rz8cik4Mps0TmBQ>jb)?Y^(`+Flm zASy{a+TvCOyQ~qQJg^#4_R5tbw|-4NONn76ZJ;7eQFD+lJxEN?c#)Imr0r+-%lrqK zd16NmuYHYqgIGoOu$sLguCVE`if3mJ^n@jI!aAYi0-u@L-QK~t*#kp=;nMC9V<~fz zTyL@g<`YnL@y~tbU%RD@vYSbx0NU49;FFtT8F%ls8pm9;;S!=KP_*BBx*U*ffo#9} zh9;xhVsTW?0>kh4@tMD<=1ACFA!;c+EX(zMpY0cmL4R=ca{ef;a9*?~-b;dU`RM4b zJf3HEnsasmi8`LP+!(G206EPJai^ig1Fj0X z@qQ5k`A7Y(L56HjP9>*7wA#X4az)4{_~<>QR+zr`(09L1iF|q>?7!u+9O_6Z#~1J> zs(y%_dLJYUDy=Df4BTKOYorkQw8YeL6dUN1bmA;FN@qUS9gf}VE$#CCD0EZ?+-Z=|6G0%+B7O!5V8y(C>j?+I{FpOl*&4# zIb0ZqHP=`y+O!SVbXg{u!H9*@msh4Y7J>Qn&;b8m?ju^tdzZ$4w8fvh!~Rb#_}_f! zzfJh&X8a!_QMpe5Rb83$pzHAQhx39j6Bo7C`>1{?L=lU!?E^xBr@HOM7Y^=?mFejx>kbkYL5RG#sgyVP9j1c8DG3g2OJ6`!CzO8}Emw-h63hc04i zxS)a&DFS9aKJJ0cmuIhULWIH8bIKJ?wAMd#&?D9!4{rI*fLz1=`)wW>S*^5*7~H9l zHvSy)(Hx|g_)~cx@w7z*36I6%{e(Q}eq!`Ei$Q|3xI|ra6^lX2ZDzDBi$NMwytgO9 zFhz9m%m5@MPIHcI60X>#x~n9{+3`W^U1p{ou1&7CG-tO2p}{1jC<`IMD$j$O*c6u! zjmP{}*`#Yn2oYmE3u$-9qz@AAS^BdL4i8$_m_a<{%^o~kpmm$O zG3wQ@eMJXO!$eSZntz$65I*MwfOiw+Fqvsv;Zb~(No*CR&E;3PCH0XQ$YOeDt(5s` z8vkg}T!fVPufMhknPPTx+Yz_Q4YUgU)*vtZ)<7pb!(MhE0U}X26C!Q+x09$A;-?J}5e2Wu2q4G#JbSp!Y?^io zt=X7Lk)08F)iF?luO@>ib|Q%$AXqHvOW_RLd3vMYh5|nNg=4qCOMwg{0ln^M&HoBjoPh&B6F#I%y<2>#b+FvAI58 zv~K_ToWsAJ{>xJhd4VcIiWtm9M~WI#qThM8#t!$++EKyVN{%?$U{XAgr`E2$lMwkq z)Qgwkq>_(JD?VYvJ#7yLrPUziY-bylbudbh`i|5zhLF<6>R2x$9w>6PNhu(e1k`rM zg~Q0Rz|%M)KK1iU!XXqi32}7o9N;g3sZMSn4<>2)m1zDuxqo~Eb0Vt4_y(PoER}#@ zc5<`;Ni1|%zGX5InpIX>FmDz+@v+eIQbirM)E(Yue3m}R#y+77NSw|NZr_MLy0*&i$=j%N6u1>>RAZT8r=R(<5(@2 znQ>y^3*~JA6A5+rUQZydfO5XEv@qdQur{`Zc=|LZIb>>|DAfLd?4GG{BYZ6>y_`b9 z_GV?^IUs+BsG7R??eyz#J(XN&57}>x1k>Oh=NIh3)mZBI5EYU;V6#vd}jhl@G7JFOi*-(vaK;CY)SfpqZMrhxz3!Sg?)GW?G=<)8DX zwfTP&+bM>M^GdkGc}+;1GFa(-s2q@LCp<=o;y=ND3I5>u$yJo0mr_edQIw-kI%V4% ztVy{Ah>D06Cz~B~+QqrmEkAZ6BC|t?(!DD^=I?#-%yU)v`}X|s=Zg^JI58VwhtdhY zKOHL%oh#G}Zc4r?(`E`C$Ve4h;ZWXaMpNY_k)lq)IrN1(OC5+QTx5o;VzAWY8CVK5 z83txkTQ{oU*Hk;wG;&*_17{N`;^V9dIvOZ4Dr?c6IZBAAvlD=BT*mm7skz%4tkgqa zt++XorZawF3)eXmgU(-CD38slEiIDkljq5H+Xr2W7sB&}XS)dVbC9&F%M2 zNSPlUKA)Ji4dkLCE>e}(-z;66X497S6xL+P=ls!UU!Y%9^ROB=JuBIC-tQv7*|2gi z8j8{2>~hc}hpihrKP4_1A%)!k-kMtqMT%WbHbh5n-I$xW#0oDSB+^{^H}N7DAJe9S zn4ay|D8A7jH@eAi)N1d=1e-H;8m+vB%JXVva`+MVRyRipQ!Eu`XcWx=#k|;eBQeFB z$Jxcb?=)w5##wM0Hbf&B)Hxa|EjzziX&9D_OV>aW=1U*jT1XFnyySCx5CFhkmN<7V z&+MS6FqCe-%$bqUcRIbpS=gUpFv8ek#DpSrhz(2=B5i13(Jm*0xCqPI=|;whAc~E> znIXy!G~-=p1XVgQ?q}wy*|jV>IoFeZMBi?@6KW`5ws~>GzmNtN2?n0!C~NT+#Ip&o z-@C!R1|4C$eoDSY_SFKyk9;8$P0*emZ;a9|0^hYZ!}XVuVczGnSM&$p$%s=?Un=?n zVjyRXNNe_pvBj5h?#Xis2ER}Eaf!g#13?=5bZl;eTr0z?6PS7nv`i`{@LGkD$!=56 zt2^{Qdy*3`q95Q_*l3Df?(t8({;A%#Z5HQ)W1)|T7vl$y8`!m-qSu3g?g*UA!76FYu z!g1Z6-t{H}m>lF38X2V9e+nio^RfGJKTqDwzhz+l1LPy7Dy(GeVr*~j_TMB-iTb~^ zBn)2(Qq^q`T7W5(3!#(H9pd6^a~cJM_$BcixN^SwiM;3TsYvo1ME7~mW4!^anfV#F zhf$wQ%s*r#u%-rdrYxRQ{2qC~v(vnj-X5M9d%?AWqjxEO8uOo7>mU zUPV|pX8GeZ#jNYdht_c@5^|{Qti)NL(ucDXVQ9k*TZ`mGP_I3Q7 z-{S2>bH{$Fxw;VzK;?;Oc>;i`(L50DtVsNfr`Z@URH@QDxhb#N#m(?cs?bwr<8 z^=EP@TC*~_Mqd-Vd&Ab3a4^fxA=Y?%5PwcQ;1q^FQNpGdb-jO!MKKAfL+em}nmDcx4W8s`VG@wj^x66h2H7>&Gi2@X3=v)2h$#-%F*DJB?k(~-~u zNAJ)r1f!g{C!BWz{#FxzqZ9kka-BLb6t0RfC@^Q3NGP(&$GeB4Ng5XWzF*cFoQ{p= z7)3vr+2tDPmHvHuGz$$XDASQrA_$3bOLzEA6bYRw;-S+vEc!~5-1pCDBetK5=uV$U znfLz@ZS=oqecFGI`-xdwn!CFF4;z`9y&{G%s$VL&WL#2YAUu^4WV=DazIs2INvG zKi1d6T6Ip_RZ7t`L5CFomEDl4ABKpT^3~aM@UH_O(hr8ws{};2%ZhB7IwtnoeCOT? z;Qa)H+1-as!FrOI-Pz47skWCca7gI2vR27Xq66}9^5~fq8;MR?#zr4D=7YGI3!^^9 z@zx-YA9a(!O_enPUc+A%mD9{+q4*ea4S!XX96z8$7<102sXRz2L=*;dA;G%|lz6kIW8F?nYe>t?GoNK7c?4yW0Z}wFz%C`|Xh!wuq)&QY~G;m>7PZF`8Hm zH)sHH%xb8f$&_U+*aPR=z@XU%$kdoJ*z;35Rm8&cDVxGbVsXxc{asB=4-or%#HtXf zN=S*7AK9a3*I(pioq}2%1k+b9r|b#_2HD*5ZGyGwtV_uyeYKiV!w^q`{#m>ZuA*I$-s1L?-oawi z+-U3sk6H*ae1d^z#OIWl$MP&r9kfdgZ6pY@aj8y%A z3lVzU=ws5_*7O-Ckc=ZGc9eLNI0u8NdQ#%8#S0dd@hL4Bgj|)jQWYBNMH9xwX85T# zT6ccxhdV#CawZ~ehTKXNj$ktqm0K~3#PD;qbXF;B)2ko$RGZD3FRRt(qv6A(<(C&D z3t#1VPnHpTX+;O8`=8W2OM`z5l?Ugrmu`6#KVDeX%&nB@pnFp^+gO+O?{4TSTk5A( zHN64qY-yEpy^pPB%@7<)VZqW`q9OdyJFORV0O-E;(HkWvYiUaKe?v?pR^bS#unj%V<-H+u-IjeWK6ig1ZQf4c zVgB0P6p2b2&V|s(U@A2Dm5)rIuQJ@Vjd2e=C<{@b9|GH#YLBmQLI;C6Fddd;4-~$G z7Bm8GaZ?hYU5(Hd!w4CC%N+y^;FdyELF9nkFm^-31M|puCJv&29!Dg5judu>M38d9 zjm|JXTW(^W|ESdF7I!RflZfQqIS~vf+Y9>|-wk@fX${YFzWw67HB=VitoFlVwfjPweOy%C%q65OJyIv`29eVR-pRapr^h zot$6V%VFMC5D@PDCj&byTBy%hy;7o$iXxn)Pnz60vp zjhf(dgN3a_MFRP^prQ`V6PdA{3??jnlEj2zdmsrx4`UlTYsH34QUhZfc=NEmc>(wR zl`5thoKYH~SCrqW#S=m~EwBlT@iR#`&mD6CxTz1s0#|+eNx}tWeahH82KONkrDPF z$W^S^*xY6GmVlQ*CI5-W#?OVjnFlH)Vv5%8PkckuAfSzQGHS$lAiS3JS-SCRWx@<( zI2*pw2%F|L^yR%)5T2{v_(~EuIX;qgr8#~o!CqS?J`)sMw&wSRRG>|y0lpGCjDW3cFP%y`oC#)8~A`OG`wl-YtN)J8$tBl)}Xs*28?Vb{Yw@{iM&PAxFq@x-HV4vgd4giLyw9?siWpREUv z`BTo!Cgqy8@h{`a85Wz&2#r-5Zn@UQmpPlraFfy%fPieT7&E?Ik}Y@o?1-Cg-q)CI zj!l;cEA$5SK@K#ONPyI!I~uPzq&QoYl31`rU&CsSdzO2H8OPjV;IDBjlX{yew->R;fvQu&P zepUIa&RZr2jyEVJm2(-#exh24E|+B567OhW{)Fi%HO8R9SR|#4-Wsoj#oKxQf@%?_ z1fNn5Yqr}ng192_YGY(jP^V%I!LhJKHHE{;!4MM2IMJ7-YkgMu)q|oye4R1>92uQv z6ZwGrV|$+F{B`2*;kxbqzQ@?#M895x+gQ3Bxn`K+Gqz_p65XxeTb^2e*p;(vaidys zAeNQ7emq*Aaw;@lEHff2VVbj` z!Y{2TE)X@|(=Hom9?|mCnawwz|I13Oka$yy#R~D5oG)j|b0x;V5cVY5lPEt2=?or2ehxX`&>l|9@W!z4n?1;hr zUM%#4kdR3)i#+Pay_=9;;I`$}7UE60&hbNb`3zTuavQP*eCo%!yT+#+i)Phd0m&oB zwSG1V*Mm+EP;SGbo<2I!QpZD4fDD>xdlTrlCO~IzKoI6r^S50gdE~l0*f88pa&Q?g zOjPZu-73BwH&-X%1KqLH{Gx*A8c(Y0b0~0E=(4NR33=JF%f5L3kYY}JA$J@1`O3eVP(w;AH-IfjgjJM&P4uha%#oWPArXTnx%H=V=(K%9nNn0 z!%}f9oltKzv6NY##WfOd>A)lbq|Q?0HJki^2nEPoq?+i}V7im(r(4D@KG54JS5`UX zQ}%j1fZ#44^J1`y+H?REW|kh9*%!pqUeb2paZgZrY7m8;BdPE=XCY}OzT_VhCpT)B z^cnA%2ras6A4JPE>anHxA}_P4YhGcebm_&*2XQHE(wGMz!HFlyKL|0;gCNBp zBMjF{V$-;tcd?}tE+@ZVO#ZgJ9&|fT>5eCFyl+JrJl+h4Z*92?I0ES@Ra3fjFOzi3 zoYp*L`mgPU`Mjy=Hv7yk5Jv1~C9{5%Ytus5quDy9p6uJt)uhS2h1uh@FIIjgo=VaE zu^60U=BCS`uh_cPm~?nSl(u^PTehqs_z-$Ot&fcy$3R@+yMYteK@{gGI;gLQb4x6M zc8d*(w)vSZK`DU691exHkJxb=&`%Zw8)S|q8XkE95{1r-!WD|{hY#WkVn^e=DM$D% z#Uus){3Q-*15_G-($K$y0H&&CX{2okmu@j{&5?ox^`SSyriN||;O0Y< za*OIuLv+WzfNzUK^d$lfGx!p9fIk7Rw_zTB>489?> z6$>)?i#=W-+-Dp4B^@=X6B6g_Y#qUsa#qc3*23SZK-oZXH_|Xw0$w^xrWzpX7sIT* zAFZzwDygJEbp=vCmq$N*WZotyAJJmWf5{^IV@;n28`G3aoRlOSu2R2)AAaZM3wKI# zdOT6{TSZn}y%V5C@rR<64M{dovGE&W?kTD^5C&fCWgtRmHBv~-SYOU~2e!+@=#IBk z?&bFo=nG}hV5F#bU-h^|JDPk?FHGgvg=-_ix)4Nu##`dJP6PLAO>u?tR`+>@cR1Q5 z$PHLu)xsUrg(N#hsYd4w;U5j? zIQ1El+b6}E`EM!K|6uzQ2e_F#n3+S=7!jV=GHq?Ks=OUMx#j2v7bgh1BvwKX*! z;V0Fjh;YLoM`~8ENI^4?8M5&S)6WdJ5HIi3ymCf?yFG{>+WC#um$D>!uK33+kgKYLInu;X#P|M*W0=(x3{$8W!za{SJ$i|1xurJ zvv2yr#j(ZNP(QJ!p=R7s!caNEq-!oOD_|y5RoN=RL03vE*FMDInB@}qfSOQE1x}Mb ztT8%-sWk2)1g^k{KZdowtd_)MtOsWSXGNaHos*1|M9tcmN)|@rg|R3vyR;AdJ;OjB zrAKRRIzQK8ARK2rCCX=EG;x!KroBHmpV%}wJSd%ckSX7F+v8PT&t`)Cm)PsSz*tT?dhY{kgZw$lK34x z9}v)Ibz1WcV2So@JO-z6eMvky<(C;2OVA~$V47NR76Il*%0@Kc>JKI96C2%ix&MHj zkeFdiu%?QB59@(*N^L9!!_}A^=rk43`sx67(O|vfOD*O@m~FvGq~PH=quYV4;6Ll# zmE*}vNUITN`dh8~*D5xATQ;YUbP|`c+zc>VifM>6n=!%p8Pep=fMwA6_-_@B7{96; zdZWjD1UpJD+jVxt)be0rsmy@5&({L-`>>cdhb3 z9A<~os+|%2j+eUcSbno{_3A-G=26sE-_pLmr_dBJs)N6Y{`jgZE?zNQhI)f^i4WV) zoYLd!&GdBRv>xgrwea(Krx0sq&pYG>L+#mstn1P{Cet_g*vFg6y`hJm@Ws<<{MMG- zc^ymeSsDhPzLo03xS!jj1!LSLK@k{P1~(`;_Ex(tvb~C~j~aC3 zlVchM*%7_nvK6@vMqn0k@y*3#OTEI**qBeSFI@QFLg;{h9Ni$h>AJbDZ1JW0UZA%i ze>5h+UyzBfHG0%Tb4eJTAY&Mwg9UCmrIw&Y!&$*Id^yJ@mP-7$W0EvD zYisY7XnUf!OTi1zGJfRjs@z;3CK|vB5gn045lMDXxhv`+pHSwPf2mFqjPFr_pCys- z-+KD~gX`m;CDHYBApbADi6)E|;Ru$WXy-21PoaDVyalc+$Z+0*&^=sKX9fv$Xlaf_ z)zt1otC`V0^@vM#sXe*Nd4gb@)M^zE`BGafi`hiM?&6RvSz9L)6Z4iS3c9>AQNfIlJd z_2qxn@~DpyHoh?;;2zJyFGR{B$i&aQwM1B>gvMg^(auSrn_cyprR$MLjQlqGZ5=HUn2vVFF@&Tuy>f#P^~Qy%7h6bW#V;N$+5o2{%kRsP+QZErXCO?mpIDEC2< z-_`!^Ig9_?`f-q>C{#9fe3y5j*x_W#95K>esxs?=aJe`t?^Jc^lJ7_is4N*;HD!`gF4)5Kfs?w%q(&)DMNydH<>*+jm$jCU) z(V|*xcyRk8Lt1~4eL{dq#?02XYHH_$Xf~JPrIGP0TH2`{k8Lv#3Ff z16gX(Vy1K%3+OV9i!#N~w^jf#S%ye2rkVsR+0!wuAMqr)bS#RQaIV**sBA2mMfVUDPE{(-*F);y6~baGNo7ffP1DZ+6nJ_bW-LxFDGd{Fl9G> z`OV|2Z3O8YrO#JR6S1mx4H$PM3P`;e&A^1B*pYAvNc}NdfvLOiS0;&m-r*tX`rMCc zQD5MCWmy^`Y|rp#h`6wkX2tVXpglw9B+cEtzSi|cJc}XC;H9L81vjfA4F?0X1cS10 zsFm1d1-vn0*gP;7HIKK*u5wclS(5~17hmb8fwgNSl&~l0u};j8IQ_M#9OoZTjy+=7 zJ+QVbs808dU0c%|pW5(HPI$5VPBXGvKJ8xYa?)xxDVPTO@rUnQlUtp64|OT<=y&F=()WP=N6%mdU80}_PjxF~{XADB2q*SI@EJHq_&$cf zO-OIp4%k|<6Ur6Y`nVnZKnO?}xLS%C*cUi-$S_!BjC4p*NJ&__KvT$Nj13{DZ~e}J zS+EA8POSa5a1NwxND>gJVT)i~!cI`taD88@kpdKEV9rNd1-^7U8GdmH;haC#1$Uz8 zV*gV2xpGIStRDv+%ox1XzD5{{TM{p&Ms{|Fp0DIj@=IdB9{K=?*FP!Y{1a|bSP z8r3It#}!f$-6wYk0n(8C8NELZu1DlXJ+KbVCufJij|)!mbr<=WqaOvfSiM0Lg^OuJo0OD-`#WC0s?Ja#L z&aVxo=Q_-Lx6Ds(*aOy2;>I=55dAH82j$r^@^v}V|8823z{cr7;m!ZmMoR()Y?Xxv zdLVOd>+7Zb9C4z19B^}vIIYESEf}~g<*l{WJx84INMrpZ?cELREa9iT1hcM7(MWPn z19HmplG}fN$*fb?P+Zav9L?6CV>_1C1D>^pW0R5uv zeZHKKL~PNE)8ZmGkq3nul6DmKPN* zBsV-0j%$?{%;P?`K^$w*x+R#USX(_)J+>iIa?>1ZKgCCgffn*l8+Cws!N~4C)y<5l z(~Hju9934pe0PDf2InyTbklE_-_PKqZ7y$xZ38o+H+B}dBx!V@>FgxXv)crr#bJgO z)|P-NAe-Gh^p-RUG^r(pUyD$(8mg=nTuM5rQBvRjqq-%o^`sb-%VL z-mvty@B9hGK`@|eGrS4dp$KH{hZx+g3uHunBMD4{myg&nANVWSj{`3VYrydK7rRU3 z`S<7B{Pq{KOXV2>st*057okV%#viUn%&KiiHsmj3AR~rf-p+W)U%|jS)VJQiI?Olj z{)`=eY(B-oRQOy*z|S2hk>8yC2qD{yfP|aB(l_b@pT~nDkkRd$=kjWQ&O#pP^rFR zoh>KYfm)1PCn;ecbkAEq0=$AeHtxZv8^8`%f;hWxhH0m7PYiE3!&zU^de9MR2rZ6t zJdZLwEiEwoKF-6!zVO_pe2MF2HyLA=Re+`9Ej!ie2#b~BV-O<8Q>dJ;%*9qJSkqxV zJ&biw3HRbHB9}&!p0!9WhQeN41^zQob|gt@Oil7mMMl<^nF7zfJ19W_TzMfX@oGMlEkm0m zy+~1CZHnno3<+?obWJW(DO)B(Dri3n9C$OKcyL=$I4QCsj-gkq{* zBR<56@q)Z2!dZJ|J=>U;=ygB7OOY#tSS_=sJjY@}$IaZUS6#~g5%%5P{V_57mcCjW z%UXaGHKT$UjdP(9>TPc00dTVpLco`?o@cAYYYewGRf>8lRr!^T@v8RFZQNT`jr9S&O=>vFb6ywd#6 z4bYaI@30yWg706Wz+Ff$#f5Xu*THzz8-9e8r^oj`tX+}uykT@At+sQvFV@HNe%TCZ zc39JaZTBRiufAYZb24yJ)|y`nH~qswv0WK+;nrYJPwSrI^}fCxxQTr1wndA{3IR#|1;s;XCUDqF9nA7wC#WQ56y%lP}bBjTT}bQzRFLnKDYPgjtfS?UIqa zl1sJG2@n59ue=41^23HefBgDuEkAg_P30#8ViPVJS|2-_J+ApJS(K)BIb9;z+Uo37 ztb24*y3uW8IO@6xKwk{T_WKQd6l4@N+V_I+Pa8j-fhqHt2nMxzwD@O!DmJIqMzt8K zDV;$fW38-&o;XGZ?}=d(`b$Z!HhyzVuKH){0HSbTnp~9*34U7I?G(Cz0p>*;xP=(*%8gQw2@-h&r$3*voOIMdtCy6mYdoWJBfzIcQ_>(=gSuYY`nSBQm4 zy~!P?-{TJRUN~JcNB%^L`urw}7F@SEN?fdUF4)=$!HzRRZrS%gALaL!2a8&P2gnb8 z$GmIKK>Z@IF{eAjZ5i6 z1e*p7*}4OpV|(wRj!I|;zc2JrkX~`P)2nKO1w{xSQQ558tVa6&Zjik$EFcfei(4zW?_ zF9>3W={J}U_?sHDvfA@vV`y(5ptoDkxZn2G%XF{*A0#1c15A*zm2$S4lihH=p2NbU zMYK-LGNu^%m`?x!SSnUDISs7~M~B&3X`90RuhC!$^M#STa{^8^qoaJ`nSHao9zbsB@g$${(i<*MA=uJV-63berkuDqymZb zrYeQ_8XK?noY1e^Wi2t1p$)>~=C>Wj^qmi-69tlPdlBVr z&68D_W@m8C3}%tE^7Dmeoz9s9zcaokkP* z;q&saDMM7)`*#~25Dxge05!Dow*B@<*x&d25Dbf3g&EHT5VQ-)z??k-3&NGaQxHul zq5?U0jWNZx;>PZ>fCy_xaU5CY0`2fpaT#_p4{BNEcJxDW>gkNdT{!V95(q%&0L1}% zB&56?&gU z8`GYJfhE&q>+}NScV-$v5xr=O^g1=Kr*$Wb#v+q+#xXTj5FQ-o3_n2`2>L&aUWbUe_~auo&6?kfsdSG zti2Y9B#y=sx2~8Fl~Smx5F!$vrYxd|ZVb!7To-O->x=!}C!!(hu6gBZl@By8hLA{@ zUNYTqy(kZhZ4(~)5p(XiS0>+u4|e*gj8c^S1n87sWArYY3?Y{J(m*2 z?gwbL(PvCpt=ego37W=bE+q|a^yH?W&BR;8tJPSroJkE3;-l4b72qH1?iNI67!^6t z77L>+WdOVJJDpd#}@C0b_V@|k544pBs$BdH1boKwt^dZf{4krkvOMfuW8 zbxV#VeLc?|?t1+7dv%7qv%9&0rUc0Xy)TNmhlaTZ=cU5r){kR#%GnlK>oE~BtS~ ztDdFNo9e8%8=pC5GsT=KxVddd5_QVV!|PY(s0Gz5s?4GzQ|6mCn|K=oejsPKH-JT} zx4gPhTdj+LvdQ6ANawnA21VaQ^(-$jAjg9fXs)2iYgyhor?bKWdK@&4(bi$fc0mM% z^6OGrp19Q@Im|X%FeJ@HdTbhxMB=+nb$ zy_jGT)e(uI6Z*$@OyhCi(5K>O=!`Rh579NG+JpvV;Ht=hQh5`4T)p*eGdH|p^hHtCiP}k`1dKUL}QOQ1Zeu#oCy$8acy!-94aNaW=r}0*}H3?yoVx~M6AN|!tHRP2MIu30={K+OA8~uVzDu?v9K|_?FR&o-&#Or;jP_bLpgVSu6{x! z?TXpGyx8Fh^`PNGxK_DA?+P0tz}*^8eq!!2?B{;|0)oMlz;iHrMg_?ul3285>?*NK zIMIS6&8*r)B}lFk69z2tO3m)~-9vfJPoB9zxS%rJVLasVm6$l@jWH)d5Qqg@i?go- zjIZy;9M9TEc=)S>=`$h-2d{@5WOj!-%^O@d+JoACHhM0Vv-V9iPTX}xd}7)dcOn4=A#Nu+BVAc=4a8ff z=jXK(obbl<)NrIfrlpDt_PCIb6Eu^)C|Bs{Bx3so2jUnR5o3KEYC#Ie|Di=#m%5@$ zY)$HFliCt?aZGrlNle2W(@Y>_NHmnc!xFz!NKC^XqZuO-zhkfghFuESTX{iKO?^c! zlqsjQWb1Z6*=JSV)lPviLxM1>Ug#T?MIJ&oakVJ2z9|aXF4!22Zpec4Q zhe438r7PkSB-@2V_6{RqPv&YfB+6B?=xq<1@jf4S+&5kD3CAi`Jzes!M z;9A#h+j}N6$&78=wv!p#wrzXHwr$(CZQHh;o3-{n=iaYwowdKJTQzF@J*wXE^tbo^ zwDxPGcuJp>N?M8(Y^}PBA7hJ}N*K5Yv!rBN$0i=j*qd`}tUg_9eRoCEOX_CzWef{uv07JwYTl}J9+ir7kXw`^G-5r;uk*}Fp4+CE+)ys?-vI+&&VjT9(A-*+4IYyL()>3dr;PdJ3_>45M031>qFcGo1m)Pcs*z>8bc$mKZY&IZOBDoyj6Ry~d zW|9U;u3`6yXnoN*=0WjtjD|i zDP!ld)sy+5rF*_CAEe21W6D#uvC1T+Tg{>*&*ZaJU)uy*aZn{>E5z?PE#AnX`pG2e zSZ#d1JmZVumey*uD8s7d#w;IsYZPgkQ6vZ%`Vb_u1&jF8=RT5{uG-rjQ~Jm&rq{JK zCt8_HJF79T0TG5n%_wc?lE)u(#r^HfdC*r+zWdKa54Jk8GducdxF(k@=*cagh=c6g zx%&<<2}2aCk1@0RqOEs@-gw*)3}A&r!+=23k##m?lTw2V#`$=aam@nC?E>sWP@am) zlwir$6&z=VJ}TtPIZ_*#uCS<`4*b@cLpXKoto(@gpXTX}CAOjI z<(jfHetaZ7#cyFX=zI~AC@~tbE#tA}4X`Kh0Ujl8;?!Krmaw8LF{9^u)3#evFO`Be zcf2fju|rfAb3jK2K7_|K@pY7~l1nJkr0M71iKJdNsriH7cGqR(e;O43gYoYF=nwyE zC6^%k7sUBHPZ4S(nz|r@Y91N3+Gm0~R<5EENM=<}QW5||O!90jR)c;Gtj*T>1QEyM zH0in|s&h9yFgzT~^QLENyKRe)%h@?juWlq?J}%|Y5C_O^GyFmxE{59oD_nlp z?<_N2y6p43FT3a&lm;q}AaV}Xle0WJIW_m$ye{{5p517c7MQ7dOdc@x(Q&3Fdr^qc z>T)EEH+C2&JcE>jO>lO&y|^8^ zWEHmA453fa&S8io(k;CQB15`1lDhZNIZIA?;JaO{{Jt|tkBN!@_O(}s!=W7+wo~l^ z^1sSnzwws}t= z+;TZSI6js+-&*PiJXs8N2=1o3l_&LBjvwL&+5u)NtzqD}BGf2-;QM!oqySOUI3G_hM5AR%vA9Xf&uF%%hCcV`kUgl`U25|OYPPA0*phng&|ceklX zZo_knM=y}@9si+qnxnSYldDJ85ecn5G4=sKRqreUV2r;J?HPfW+0Ee&5p{%KwX@{r^1Oe2%6T2LI)*O^BP4TH}Qc`h!8j zYP$h{`-_yYpgw@rsoQ)0Cq8Zi5}$~vJ1<{udb$A;8e1eHhvLq-yUlrnNVJGRgxjH{ z+cuJ#k$%%JH(MHpx;^X8jfR6YZ5DzbXDWu#^|zm_*z^(#mP?P$sEB1N>y9pIZQOnm zVK7Q*41|57`Xcl0jdKPfH$U9@b!rDbu5DlYUoBE14;sg#9uPLKzv|sOFOq}ij~zsJ zLGJB}*67bNGS^rwRWh$^=5E&=@5as=B<-Wx+RfQ|0K{f^VQun8C2u;Hmf1-1o&cV zgBl^iy+Wbt@kuGBo5jj&39(hcRF}iVu%Yv|4bBqLW~TDe5kleb z#iN9Chd<3q)zG){Ds}bB6*SKTc~RF?bzR+C@96l>_iQs-BIlKZCI&uqg@?aHm&B^& zwi73Fi*3bJh^_(qH73)6=c*p(z5iVCyF<0SvkzX6q2nc@-NF8AVGvzy>oxO@Z9D(| z+x*YcWtxAsZ~pr)Bk!o^U}yMWnq?((c?9EcFB%}mVngUIupn42JhOi=zG9A=jG6vV zmFnf`Gh$V}<4ce@D8aSWw+oVGnvY|NH{i8Y+KKx|VB=SF_78xJ%(^xJUsd!q`nsvk zt8WIv_Xqj;qYCE_$aECVhsh)Vt$rI$t#_b~^!y+iz~@eWCLO~fFo0y=rQTF=D)@eb zI`D*qnUBX|q!TypHmEuk6BaFm5Z@T^VQmX1Svnn#_!e4Ij9 zs+cUmX|J!*Y;V$cnD|8rkm3{s>|837Sz6;9x!ECA0yzTijMaKc_Xg_<=B9z3mbe-L zvSzH)(!#yKqUvO^n@@YxWLcP*fbxU`VdASb5&Ia5)RF@QPd+9_=>=x^A_y>wBDkd?d2*eigoE9x1A3vsQOei>Yr~9A zSsvt;t2lf7RRK&yTakV^I4pd?Z+<@}(hSjVa_}C$6zDQa*}@hcfM(5~bJ!YR?DB~v z!qZJ13(sN9gg`eV({5j`nu)olluNZ2aVr=hoTIimF{@wXGuU0S>er{p#tqV}`q2!F zbgPs>N!SYlk)=S!d5&>!r=e#a>W%!)Hf6C(AjZKd>aZ00S4!tdbwW-2j?y4O&`V~I z$eNkUrN$Ozxh0^iJERXcw#$d$fJj>2WnU5%jHS?SUK>2hrT=|p@~ zwDABz-T_77a)dYj_FPiSe7W}M`D3lB~j!DIsyPAgR8i;jw$Cm(GifuQ>Y)A22VKlh^ z8-0^RlDdyUGh%db> zm;L^$tx($dt9AaO0;AjjA&XZtmE}hQ z#lYpQ_!zv6nI#4Mjz3Y+h!xjpJ)bq;=XqE1cxvce{xvjN3}Y)KB5d^Ta^m+V-fhwd z0UmyqRzCUTqT}dulC8`As-@*G?(-Lb&X2A6yh>~=cut?oV81)~Q|gmKD;QB$_S}JY zQCkk8@#1Tehqql{ZC`@+X9>hbhN)1ixx3;a=y&`S-olI2MbhS6)q z-qb>Ng*%b^gpem4?#ed@AdpyD6J2hWAaoH;bJa9CjCfGWm>t}0AqU6bZpe`|{eV%H zU59QU$0t$z$%3yK_f{I3#-$m_ubdsb@4=*DU<9mpX~RnAmyjGF+;51JkM8yu_RZef z?pT;3Pz+v?w@Mg5jLD)d489BoQ$&_8%zUFTBDJ*GHXL0o+JWvM`z7<6 zhgXDRunChU>#lIXe$Ye`>kKdTl+e{fvSZ8vP3#@3muB`y4dOn{%wSwp;6b z_7Pp@dT)iWiQ{UPh3*3!y3=&Wv_@RdYF24b?tAK#!@$HnLHj+7hjKER;?vL76~|wv zd>}@3^$}|pTZ6C6l+Z^l>w|$;whYUS5m2eC1~j7YA$u?_rz!_vZtN#$3hsB{9O+I< zx@B{pW)MO#s}txaGk;*PxKtD`xKAr1%RxHOJZi*Iox!}&4`JdG-}C2j4VBiw zdmC8W2F{7y?(i2&yMBKW;aJpLG)_6!MJSFps>N3z!zFpfE@M{K1Y7P0PvL0@EmqWX ztOv)?_m#Em7->*2SnLOC_h4LJHz|CS>%|?Ndj=0+0htydAf%szsri2E2(De4lX`~M zMC=mVH^w^JH-^_T3{>Bs`5<~AFN^9TB?Y}sa*tIV|7B%{vTvl>{Vtn<|9C zz>38Shhj*UAYBgfTy~lfOyat~$K0qn@y(R?Nt6%6K>3hf{RG%p*yLaUgF!%7^?2EE z?|OUZ3gr3xc);_<_Sog=akf@U+yjpu#J{2V z4mI){F`>unJ`1kF1K@V|By!D30#~F*lYsP!`^k0OUY{ku{D@&>?qI zYbcnxNi$o`eHn#^OA~GWc9Yy|Vty_WP;MY|Y}#^J$Z3$+YpCVrG@y_nF#Ll3E_+QLAz(CDawTQs z3A;Z*5gyEpR)`Px8fs+8Y)tux_n9(;bh8KtFJyacrPXyHN@Sf~>`R%UKVH5_Yao$| zBu&T%IBKETEK7}g$JNu?B}tNQSL2P$80JTEPRsq>%8J$AR%A2c6>3$P7; z1|P%PDhTij6oIM=L{lqxoW)!g5$`fRim!9|Og_IR)DDTACh{INjJ~QMea@+Qoim?Y zTvXpz6x6HJkPU#_M50%sI->_K^zX;}@J`I@Gs$MS*7ePFJ0T^(eAAPg@DeAxkQh{$ zj0!x@E9wCn^5J2sG8@V#p6ayuK()Yz;1Z?-AmAT+sdCbO z`wR0?oD#JMhrv7H5$lp@8TVnpr@|#o_g4SvE60eL_LtSt)N7{HWr>AUMjdQN?OlT; z3oPSK?{0=E`eqk7e#43o1M6Wr%FhHBgXY@78EC>G{YGu(g6@*<@qEE>KyJACCxv6G z=u9G5L!8m9rrjA#434>0=uA{_wBPDN`~)~8X~ei1NP8dvv~LLbzhdk4hCp5nW3$$9 zyZA)>0KaDD%eB#SkVeEKIt9mRL}Pbyk!*Oq{Bv9xhs{yd;&Jj!k@(46fpMtz?gVvb zZmafO*}T4@wYfe%sc7_-kg>a?m2Jrz!ry-$+im=mXzBgE1kdf^Uw3DcQ1O61*{XC+ z7IU=-2C=h@(HXBnj9n* z)&{s}Q#iG8>gC_*>cUmT32|&->YeYF_*mx%c>%NrO|1O|b5dSo%|A)n`sJ*?Tp`E;;ovE(HzshGp z;@`xWp|7&t(N?GlKS>0HfqvZc)NISSev?_Tda{ZIMpCj9{?^_LBPdGbM2S`FS>+Sq zY6iG;`Z;FnTYQ|-Ir~IGOkFUEm7PCXUPtTpQ!VG$hg*NqVxoFM0pUUNYVylW!TQ7# zE!mt2)1^>bY*gPh;GC5F#}=!0m6CA@k_d*EH;|Yeg(P{{@};OF~3 zmFx-ttSqjA%j?b=yW>e!g)%)xLE7$0agj=IfI6Wqn%R1fSTg6|zJlmOhdM!*M+YdTv<&!1i z*T{cb%sTmxeD;1y?8zY3@WkH69z#@=bBm}*?Ll?|z|Gq+&ZW3|d0OFlNiXLb>@P+5 zk~))MJg`v;teipG))4up;|u@kGC-mnauZ@8kg9>p504IaHcXGV6&o}~Gd2hxagiQW zMY|GjZhu_Nrxr_o%!w@Yt4@YlbW+iq63{mvvIdrn5?nKWsnrf9UUR)dj#*)wD%W9^ z-US=82%IdGWxm)+rJ`R&7}lzK@Mo^9G`AsIr3zK5G;XyEVsaXx*0}>|br<&V#4gLe zgm5a|S&$kyl`HVq?!K7(7<1h_E{xc^*RxL9IM#n_dfQX6dPE!3m2Cy;TQAg2#Xn;6 zn9m#X@?}$cT=PtJY6bON!|}|D`8fQN7HU&RI-LL?yEH_eA5ljX?i;M->jH~GS?E$R>|jua8%;H?BP zmtM8MSh+-)vV#11Kb_9(^~2V?2+F{FZXZv&WNKKy0))RxkK-DU&MHV-r!+Dwg`Jq5 z$v{d}(PQXN(L;S8554n6eePG;F!uHcH@4Yp^xBs#j(X+86{x9OcgCA3&I!+Y#L0W} zj->}Sz|%VkV@IToQDfi`(|LU}a1=(-buxslcj~13#4NESZSWbkORSod9Itywko#t> z*jLYLQd8;}IQMCFx)pWQ-cM`S5WQ{2i3K{*lV>l*nhO;viGSTJL1)>Axl^{c)Tj`(e|3)}3szRun0wl<% z!Y9C&=dTFQEasx&-IVDC$e9zU0u8fYt?oTdneFChb!EOx)3ik2`La>*fW#oW7?Ih5#S3e3rRHKT&O~O zT#V~j{ZT}`y$Lw7vUWHhL!c(teU9IkZD{@hcqw`u*f=^1GM{gj)~~7~Hz_+;t+-LG zW??*}77t%|e}s&YM^(wJQodnrDypolzuEagWJJF?uU{Cx*`u{ki=Y-~hGw3s#=f>> z;S|Zw%kMg=l(%#)?+(8TKn_WwuAQ02b5w9Zma$qBpUBaIbRg=$ZEIO;K5C&ewiwA* zePGDeG^nPT>U_Ji5XB^U(%{sP#mA%2Q?Q;v+SZnyWY4$;Z(*s;HY7^066ZW%eza<9IO?)VD~ zpZ_~5+C`vHp?HDcK^y{rY$rXN%Q+#ktTkjrR1uQJI2xk~JePh9dh?sd0LV zR?alXw&H#Bu}ZC)UyF(szOz~z8&Y%>)Gp><<)jOw1?+_MRJnIv2pt`AL}A)V4|5jn z!eL9!niQ_c8$BD&BuTl!7@vmpO_X-Z@T~7Z=h_y{yBN|nnH}OSN-BIG z(n-dxO@l2)?nPRlO>ae7@h2we(8DU<%6ES>e8>pMs2oWlET`{~XD2imoyKsZK-Xjf zePBR(W*rvkr(u=g4*E;spl~;b(c~yki{&XB?;X)VYBX_M6(Oojqgw{ZDf(haF31i@ zPe^q4enZM`dxmN7j2+UxJ4moVFA%?;dwm2sFHRpqzlrNm94eQUsEKM+Dcbf^;dnAx z$k&7B8ih%$bRppR$UVfuJ$n;;W< zB8{Mp_S$+dMcyM_N0Ft9%WmhuRjaf_F3O6GW|?&4uJcX+skO!1dZY}%C<6^iZ{xRl zvB*M&>@yLCO~qfMPLloJLJf@9c|Z+J5Y$JNJsq?WDtU<9c?ZhXRP|V;47A3Tp^(xM zPFg~k++BkdIun9(P{6Ko#>C-R6$GxR%C30W?AB1$)I4*H|E=vqf!y44>Z?XxoB(EV zRf<&iYy@fiCvANR&sqCP_NIf-m|QnXxL7@YAPTx96l0F)157*8fvM}IE;GV$2a>zX zJ8Y*FvJ-V^=^_G6qdDGw03#BY23KH9?KSt_ak^;6m?9#6+gYKXF;fnmYwwxRFRIwh z^qf33GXI9PpsOxSF{$o3g*;8DIhZb9NOQ)4H9{3(c^;{mB+U7XRg)M(jA`I=1G_ORAGGM+JNe_~8LHR$%xM)b~RvmJGVX#D6_vk^!-fi`O@ZD~&j>~5t! zWfN`5Bg1W;-;NSDVy~|ejPtkT^Jb+;cU;e}Uj({BT1jqlA^tyGFzK6<2c$JZWXBCJ zBmziOJ+6v{H5#%O2;xrftRPc{&@}Ao`>0((;(|y<_$$>69-{Lif!YJ|@zL7<3|z3g z&8}ZqxLG`g@rCL6h- zQH{ty6?QXTSoEhQnTi~W+D*Wi5qctVnxnJmZ}qLHSFeR%uhQ8jH_P^%uVFmT!mjPk z&ct##irf2l8y<(3;~Oi6FLzbiUclaj9z#3a&_S&AHqBXmKQXcQZIb)=F(YkQM|X6g zqik3QcVwZXY)uYe52gq426Hm{Y@wqVio+W<4Z7K{;|!+L!<`4*_eNY;yjo*NT#SX= z88%0!Q9bf06|H~fMnpbyzJ=P>&4n?NJ+m;(-@(6*hkvg)iH@h#X>sn%HUBekC zJ05x~vD0lR9;nVOeEjGj$|_%S_ob8qIk`@#_?zVpt>_r6k0A`%Z?HS9ks{odqO77d zlQiD_;h}%ur3FfRoKih;IO*+aqnrX0gv!Sj#m-5MRg1g;>=y@UrGV1`IuXZ(_BIxI zF(r$D*(O}2W`BqCXURH!Rw?Cir17y7v-bE55);rW0|ejQz3;`sBwrFfZz z;wG7XZvm}jtsAphw)m}SO2^@g#~Z6Hd%m_4GZp3__E4K=>sXZ@4n>X5ECbint;?M` zaL4{Bp!cwDU|6&mKHPjfy52Uvv?8eZkO)GcBw%^|h&zaQlBfjX2vP`>u#@n_phuu! ztf)TJ%_71{pwfcb7@3jV=I<$LF7TOUz)+ba;|N-~$Ns>+zlY(0cIfehRS1*)iF%Rv zGG%a8{PBB;+eK_Zse2&!K@$6H0L1*u{1tn}bul${WfBIL&^xCF{VzcIp9GL2cSS(H zUNHTUS9v+v1>BF1R8vR{phr2$>=h2lQcP2h3?4@?W7&xB!pGrK`sk&{Fq2YZS7_{c z5B;-{9G2+JuR)!0P|J6kjNX-e&>}5+QEDEuwpX8cdBUv_BFkSG6keFz^_zBjHQtCl zTEMn|47Xm(2RL5J(`i8xT!3s?A303SyY;(#8nNGgo?7`aqr9PY_S!G4v}zcjAMU$8 zBs*w1o(ne@2Hv>F^hMYu&s|eBqbb+~?`2$5EK3$YO1J)&WLD5k!m!Ce{s7Rj(rMZ@ z*Kql%1vdT=2yV!&SSXdk62DS4o;Es9aaTzXHM%Zy=uLk`F;_hPYm|}fu7!SLw7pcK zf!>--K5sl|)Ia`30IhPIV|1SUu905XkXy+piXMjyLH3Z#@R9s3mHsW>H6y(1Dxqht z1|SO<2J{{3ud=0)ig=>&Jycixqh5mSpBw4_FV`kPVap!jJD{i$%%D!w#4jKeG*CO% z%BNl^9v@$_1Ri5`Rit4zylz5k5#nTH@-R?TEBzCr^X1pG43;H_Q{Z2Lu-_)5SfY(Y zAakSJi;v5f$(Ex`_sfs7tF6qR$^A>j5!6&Ut47|eeO%=k+8%LFhmrSMv+b^e)eUSZKx_HoNa~LNRmndaL(jF zlrHK8+!r{RmpeNWAm+o8SF(PxLM|GmsTH?EDr|V4KxkT+{_c}ScajXVQbF0QRX3N3 z{#_fdpxIU`HjdwT>?T+;LUz~hd3b1Ed3#4x5J1BRUeB_$B3OfGj;(%Pl*@Dx#OE-J zLRx3RJXTl2BTkR|kx)32DF*zeXCS6O%uY2Y_KRRsd2XsNi-S{c%=t{nGrGWx#X zdx{`S^aRmC^kkG2>i*C%uRh;SN0)G=)YpB`H(ZR3qMeg=c4;K?EB#oHbSXb^s=1%N znI@Gcmfmq1jkvf3G7un;&~JoxJle2%tonDg5293|4S4{IJZoBS3*x32p82-fOP849 zZSneT4dTu(g=p?umlYA_SPTjrPUBQ=QOiy9PwcZ2>bBr*p&L%VxOoOvvog6E9TJXV6(EH2&6$R~p-NY!IZ$9#p$|UoR8} z0cy1^A{Yi5p{qmxpkTZ49^j@iyCFe@IlcMAk5tTvuC^zfHRdw-w<+T-Z1T$ z%@$wg2~Z)L5$YwKhuIERJf+>6zi#B_NJ@9!n~epr2@h-Q2ha{D+THvyveX_cQ>%}# z2N|u@yF@rgzx2>EDjmn5eZR2&JNV6#{=4O_ADvgqvrM=)z8B?S)ohm8;8Ls^pCRs; zaz7@a2~fKIC-07X^5hk%1^XX86O;fX<6mQI&vtXmKwq<{gBiot@w+u!*>?=1>d$(= zD6nFBhG0V`@kQxz_bl{BRtEYBU1T4gpU2? zdEvLV`bMVee&?cBJWP^De`_(|&T|^W*A@ z20&t4-6t4(3aA-=yR^H8Y^~&uJ1(>kHHvU~d5chU1; z&`QaY-^X2qqb^-;u+TI%QZK&|oq4cU$#06;auUSo(|nc?duFvj#!01u)I}MmG>{@P zxnGN5TC|N^@ldOQ2UkgAQ^VDiqo7mIMMUzacr<%@>_SvQQWQCDMhKc@Q;Oyb=Uh&G zvPZ=de52jVlHOIAeLmA}Sp^{PCyTk|uxe7^p{mpLkYSmVNkU2_L|AfhxX$qyE%8vUG0a?04Fh~8@fR7^|?cOvgYns3NT_08AACr=l%|;+#%hyU_yn5B<@p$`q?~4+j9-j z7la@$XcSu9ovH;&TJJrUUBC$?yTK@P-)F4(8(Tx*^eH z(ud)13qFXzqFky`Ltw%U=3NNzVy<{Qei<$%NLwD9^?kwUM0Nqu;)GxB@jHKJzWjo3 z)}z0+_L!WDvQG`9!(RDa8QFl++!nC+_GGVKWj6JbJ;DD>ca;ttKIbR}_X7JwGP-O8 zBF-Z-h`nSbho63)O$Z(3t9zNxfZeR~9j(uZ5pH9!18d)&N3egf?9aGbvLr!K;2oG- z?R4H?Rr4C-6OLJ?dFqrdCu0>{g1FYYAfxusJE!nUUrRr=&|SjWSwxzyL zUj4Xdj%%gip`QR23`WTH->dKF<6U9*?}PmpNZ@~#sQssdZS7#HZzyMIWN2q-rT=e@ zTEf2}bRc{rkaK)vlH^L=$bl)m!D?%OmMww>b|o@1^_#>arl^n%j48O=1vIY&E~f-l z&54qwl$LM1eqDWAx*P8FqH3U^BWiEwbyH1Ub=C|cTVJ1_B;KIdAb8@%3$I07E&C&F z@PMmSo9XBc7GoWFIj+4DPKE=1>D36i6y}y8JJh|YBZNNV4NSUmcI-RLXZU;6A^v9u zgg}C7<=|@*VkRPB&a0EH#4X|`xf|(wYG8Cp>Jee#Fv(F>(MQb`IWf*D@uuqPh30I` zs)-Zl<#BK`^oG;58$=8l1f7{k_8X8zk{n2xQbmHJ5>du-Y=eR<@Ol-)HjhNn7oqXl zplcM3f-L$gB_ZhvQn#XE&b4N(V>@6JicTgE<7`V}L3zv@(KmhOrOVWVNM}6i_hN(Xv~bK|k9w zYLuv!)JVjq9YZ@}ZKZ_j!jZpK6{`mIW2`iLj%XS5o6)wv2h-?HBxokz{~Qv)*YoSV z-Qk;rE%L~tW$5|9B!|hywkUF#92Awwr*Q{AkwmYvdo+3SAGbKgTdnehrvIA5)^F!L zuJQKR+pftThik)T=c$CSAHTS2?Qcp|!-rpFI~uiaJOs!;QCE<~(y z)=FPf#bE$QJCE%@FoMl-w@BrP)N4&=5!6Oxe?rD+e$X&p;=#|2lzB&JmMBCEg}-KpPxrfTL9xbwj_i;PG1K7 zJ(d7bJiWbVU0uDkd!@SQkB&a}6lQvad0gXWMj99+s8RI=Z~#4CX86Aam=b0s+>Rwt zTN7*eMK{DS9xpq2yUJ$ZF>1J|tgNvL80Ah=u_}$A6BDLl+eC5b7#hXg+bEXMYfZau zM;{PTbs{>-3a0o3dI9y_PkqoON(-^W3FA^LiTO>r+Nx3>S9LYSR{{;e(|HIiS55oo zm1~9Qa|(bB&Qc_aE9$YsRaF_h5S1C6mZLVR1NzLg=GXBuG_VCJ8=?3e zAS)N5m~6|eOb55h#_&qNxGIVxZ1q)9b<`vZW{h<<~@4Z% zD>@j4yG5;GxWN<%i_uH(Rx@}_{oO=eF$kb?>!@7ya$3<@(5@Rj4+n{Q?E3ji23iKT zL1w+c>S+FW@<{GQ?mOa^sIvmmeunMG3MB3O39=BR>M;&`H}h5b#;qZ=F6{0x%GZDPfk>@Ospb(u4%ju-77k04 z$boPnt~$)i!R+=qQVAT2>-TN$Ez02^fudWI!>EL!V=5i)()3;2DC@|9n!PD69OMrW z(<Flpvf788Bq(06Pr3zxsx&D>ws|Jd@>tD>5Wqmk{fBPeal<{k6Pa?d zDzmW%R}&XvB47SKP6T>nGx#NTO%u771Z*;(p3{BPK0 zg1PjZ&bL)8Kv%fL?w1c47JfK1sl1F8K1Q|_NfQyFyWyx(V(jc>1;IAUO#v9r4}_I) z@%Hwe0Gv^m%!+P&eJgdl$-DF;XX+`oi^spyodB1e@y#J zz{v7CroJmw9R2GrOD%j6NkULLd9sOoL2BNyta`E^7tB=rQ8+;e zsitS{t%=l4R)&gsCgV1!tI9Bn12Pl&@XU}@CFng4^zOV?=EAmAhG&T*IZxoBtEL+g zfwiqMI=_d?9pqLTYK`7mD~&Ap<>$lEWPE2Hx>M1b;7==aE@V`ZYi1`bN}Ql?zoKs; zpf(_dGcIkfl>(KP8mp3TM#pEy=hJuZXV&Xxf0>nFSeBS~I7%EuIM(#onlw-;O&h84 zOj~|LQ(CQ&GsOfA?=eSlaH_f1-p1rJHJ(` zuiPEq1XSHkZjVe1MVcpj!Bv16h?1D|iA%@t$y9`bPso)THV@Vz<|)c+NG0k;DG-eb z(WzAgi$@Y=6*Fd#>#I^9i7%-Z*YVdm29mZZ*H<1cuKLMf0V{f$q6j$jP~>9pReF!A^56Bh#C>nic`WYXTmhp-VR z0zuNQ{XhnCSw6+iglLXJBR)(~L8c8B^vUJS(+)wR$mtQsfcc{S<_2h$?lO(xDo<^a_=1Ckf`<2uuZZx$c2yO0K{vQ1i!Pfo} z%3=(P%q2Zd{-!Co_KL=r)x)g-Ye1qZU4zN1Gh)E=qDco3goc|N<8Veq5Ty-bUYN*b z$BUzjX&U7r1@PzhD`?X@!mKHPoJ1k~?J}ohF9fQ6`>H5I74Zv%FUk-VYLyLUE9+&z z7F%Xv`Z-`HAV@Jq6}}fTaS(0aREe#`T%&hSGEY>59MC)PU#F`KV|@GbJNqf`9~Tw> zK@0h>(&0`Pkc#rK3Q1OP*BAb00V>mlFZph zRX-vh=Ir!`tn2-lJk~q~!@-`gUofAdr=9hP0ZQh^w-;+m)=!>oZ?V=q+@2t?LzW;> z=vp>6cz)LN^%6(yEkexV$$QZJ6g%;X4v-XmXn@k;yWyJKBb?g1iSh;}>Wqt!T-GXV zo||OJN|AWSRu$|aM4(v=hilwfyH25?Erl~!@-boAj zGb-u$SR@p`atqn%lUCPY8#pytvV#a0qKcU*@RB3$1@_zXu`R?VxSf?;iP4F{FJR_{q3$q@L&x>MWGy1h(`BY38NfMpzzrD5WNeh0HNn+psFaS7 zL;yLPakpauY1|N>vm3J!WO<};sdc8Kp!--&$Y>$FUl2*`)8wAQWPbsf`k zz$lW((+1nyw|Mu+1LG01QkT;13_?CLUt>{$6>3{j%mdWK(0e z30JG9qjiB5IBMVXx78V@-`W8Ddu=fDeJ}YxuMPfxy~Jc4buCPdObzY+`(iR?LadJ$ zF<|PRrJ}+#ucGj@H(**xG+a)Q($_(e^izhknS72gkxVytLf~9KB+S0=03x!{n&%?;}_Ur-k zo^V)NWJd9pit}?aI0h3tlY%luetCi+b23$VXGJ2s z7=i3-L2p0J2rHcAwHTLJKX+;F_>a``q4(HAGCEZVV!aYiK^BxKe6e)}s0{u$qIz9o z1uo_!xdu{kCKE!vPb`80;Yb3z*?GjS^!cIpo`{1QK`uRk11!mv++9dL&4Lw=Uzq)0 zcyjUNb*nZ>fh^@{iT=pQO9k5kooLV{ z0f@^~hT{LE-r5-u9gZ>VzROFe&}&|<9+Pmb(>U}^rNG`i-!j~v11e3QG)N$$9_-f5 z0XHrA#e$pt(;2v4pV#}F2&`TVCj*h@Ed^PdK@o(@5Y+Y1}UJtrVRf(~L8?C?@;BtZ+5VPeF+D zB1fo~NX%!jDb&;ej`J~{Gn|3u0#MaZ)xzt78rdg+4poPMx?^bL>)aG^{gi<@mlPpV zzoRXIEUJhJhVr`oPBk@cgT}daY_$|Y@)UwCf=}-wF7*DZ>-1oro$+1-^+i~uQwb4UxCL1wv5mQy69~+t6&VYUq?Ki7YtgD^3TjoU5mR1&8HSTgaPh-B zsw_CI|F~{fxs!|lOiWWPxYc?}Zm9S}D2{>Wx#LSZmX=^}#4VjfspkNmBegi1^^x!Q zZ4@TbFff(w+{w_@LxXeOXT?geFj@y~7}Y2{9@iZt!95@2QCex zzx1~pheMRs`7*3(rfMwIO3j%{zB}4>Q6Jqm9LS4g{q1h>SGlLr6v^xeux7T{ltQv_d%=I{g zQ?1K?`)t!oj5AJym9b_X-zp)f8k&^GWlysC)1U_7UoQR{wmJmk2)q+;_D?*FsW91? zYFZR~zG?_w!g_F5aTVZcOB8`=z=t~g%$xt12_$ZwCe2Cl2PfzWC4olUj@j;^hOTI) z=I7&;g|kE7-%gtL`x1=L`U`yr5qTyQG1wl!+U)$@5F0n-xVJdOMk?&M#}m-eOj;Wj zs^YW_AKV5$sZJ=YK0RdNOY&&Qt)4i>p>0=p7Q~Nemz9X_eAEsl1?e?* zPm&xwfLy;*EX=2%8?$nrx{iaC^C%t(7Xtp;)%=(d73z_0FoG0(=r{}kPwx=p%}ak;aBmAN5szbHC6I2$@SJN%a|jwriCaRZwhog=wLfulRbEJxI*2 zqCY9|w;cvI=5W@e&i7Rv`A2FZJ@7QG{6L9nS-2VPKw(0StWFMwJG57ggJdu5860#b9xu36rZaqYzptZ^$Xuy%CAD<= z)M$IkE@5vp)RQe(4aM1Go19EqEWnKR%UofV@2+J^p5iD_=K0*=py7=EtZ3-|DW!r! zham#G^|QWSQbM_dm>_Y@G^EXHOO~@7dy(l%nYv;hqVi^b+Oo5cspF8wqU=w_K)t1F zp^k%^uY-F&_gq$*y{E~|Tj)pn&zrh;@;_!#o{rY}E*$BBo9XXZu#y^6EwF6L>@0Em zUWR5&okMp=r9auz3ACZMEE`n%148Eh_Pa4q=!XC(5^N&VQ}5=6G=Zm&1!>cseSEi` zXv{UCnmbTBtQ!iF*{rK_)wDiwXo`*VP&j$KW!=t=JvkJ8@@dpID|1$5F1U}fTPS&K z+*1vCB$s$(wvi-rd~YbO2uHE`%K+U4d%`${@hjq565)LNVwoeDM&ZMWUUiLlKb1IBvv-<9(LtObN>!QkWoJ!m0+(k z#!=3QD;O+;30r?PnIZDkXv|G!1U>v7wt=heAo+R>y&poeTU;L!=~gUY$QmBcUJXMS z2G3C~fiAoasd8Hp+SX98SGnBrIY2O|FDiijGOe!>9O8-1%3)YC`3MBX61$OYJt;;= zhTvd|&4~TidGCd(zoPt7-J`zp;sKHf zb_pr`zdNQUm-`QR^^SMlLB|Kap1EQZ6P~q6Ge1y{g2L<1=LFwYEsLg@UCS3jyWfHh z&Fjjsh4k)m_aUtAfb&H3jwz8|6)*Nu(pK&VX4RN~%&PxEhf~2=-_h1a#7h6a4)}qwSGKc!=tEgxgNXWqEJco| zKJR|g#)?PLW)TJPGs9%&z60kF>^pjB>XNIuw>F=#w)4-uyxqK`&)AZu0BI}7EuJme zPM0UGwXCkr&o4e;t|C9uX^+7P{`8uQbKOf8p{;@+UgMiFd26Kl9ZT9cexms1=Q=6v zHS1#zwH5%>6ev(S3Mr*Gie2VQ6?kVylNC%A$(0$?+=W#W3KvT-nIp=JQ;oG{7%6b_ za#9opee|$kZR?xr)|jL^DwgUAD;#rK%ZwG-d(74?cDN)d!@2V++{ciF{U}Nuc^onv zFX=(eSFi5yi+EhD9wJu37W<@JNa~i2E2m!DB|TM~gV5D38K%-E>0bszTIOQ;th(Q3 z`%Q6eqKy3?CDujbeoc|w`mqn;AaAi7wsD>)OySiMJe>O*s58>r{-J653f}mM^WxO} z*>1*g%Kp<>>}#{T`~EG$uVKjZfLBxQB(Hvz-A(k@TQ%8qQjW$UwV<0dBz$~)06slF zIX(t{RiIY3RyWsrYA`b>=bzQjHcxpo(ruC$@O7V<;@;d;$!&@mwtaosVQ%~ZHstNj zn6J;gB{I>WpFK6)S*u=Y@I%LY#w-pgu4~-G1`N^C1^OtJ{73@VLfBs#cgRC5QBa9m zQKp-PSi#(dbFo0A#hK8i1BB{8Iw)qO_|S-3ai^1oTtMB?$f0Fw!k+ND0&Uc9(~gsf zx_m#P_8pH^iL!*fwQn)*n~1xjc&Pv2V1x52fIrx+YNJE*Ik;S4aSh%aQ*ym=S!?zG z{0zJB^aaCy<%je7d&%-9D;uc;Q=1U*;`jf44EqmS{R*~L#{Y9XH{&lA7*%wjRzFKX zHac>FpLV&#@;8xoC2)Si+(?Le@M^sV?O~)`eY7~?o<*ILjz_OPop~A4=WR3&MKJ3^ zrLN@^uanQ?XtUSOw1Bh#Xkx}G_9M@%yG_~Qtj{-&ui5Y}*kn%KCww(vXE^B_QCF#|xU;x4*wfcc3ARk$n~IC0{KVvJ*@wkI1TG_2{YQa-7Qv_* zwI&S*3kO^A0JxQx5+F24P0_Hwx6{i|2@f4lZqG#NuEf4$@(AJQe8VZ2h}cE61^52c zkIMLrG-wNtpAvK%3(6Np3@Zs40>-eGIT3xO386!poM>+spl;LwVU>@*)WGq@y z74u3yRE|Uvfphkx%s#^Z^(h0=In4^DSrvkmQLC+CoT$fI=~f z{WO3D0xkjzpL{eeoj2xbFziT$q4Z9R3?^I$3u2o^W9^_b~O?ozs@ zxXvLo7sa7%2Js`>NRzt;u5*mLuu*02cQtWKZej&hkJ^IfeRjZHUywt=q0s)ev8?V7 z)7#7R^TNzdXZ?rsL(!4aK8pVFIw{fgGr1V`z_fPApOsqhLL=;mnKD-rb8((l7LNI* zhs9n6J5vSupzu{Ur@OR#t+-khj*`uumS$S2l@%eZl?A5i6Ca;?EiI9jWIMH2HzH_{ z+s&{%^{v-zVOsZPA$mAkG*-RPXcYFdf!1)Z7>&E+i;(CtE!6;7#`>0Oj0>9hyuLt% zbdw8=AX9Wd8Y_O*EBE9#D#0pP<6}d%p=)f*sk=)7e2r^R|I>aDEr(rkICgu))b9`N zWv1%fxp1oKYypUUh<$W@%A}ZTi#`BSOg9&FFgVD* z{*!hSp@wuAIt~g{{&0XGwm!1HaA7mh_r0bjbo_71MCSQ;32yf}1{$2DR29Nx`R$oS zc=1gqM13NhdTDQ8sN?L0pJo`SdHY|8G~5r=e=+&n76qDLXLSpUZ*lTJS=F-)Gd_2} zBF3`%PD#Sp7&2OSwnrE0+DZCoifuQDBa_-^FI^<}P$m)fF5WGUWt->pZ(4r@-!yguy&}415w)-^)$5@KPY46&Ngp7^X@LIqYw5OT z>Nf6W%|aMjX{@19T}r`Aku1sbqV73tHeJG$wssqF+V5E$nrFG#PQqaSPkjn zZh|uVa0Gfie;`9t&-psCzRmgM{Lm&>&Hjk=`f!CDo9Ko0LSm!^oTR<6gQ}iY)t&r; zVZb^suW1%ZqvgFKKAm(^9W!`I5wOGiSD{h}S`3~6bPlNdM_~ree@38z!e9Ra6dZt< zf~|wwUm^|W2F^~#|J9g?x0aog`%50ONPs*_6l4ey(fG`VA$|y-Lyts+j}RKV^Q@P*1x#O|!B(%fU_+@!Rf1@4rgAP`Gkj?#S=KK%RtUC?HH|Bw#ED((s=m=ZC@D3CEM!( zt&{!8eC2a`%!07bkm{hvrY+NaR z%2VX^9#4o!bcG-KYQ9tgU?PG0IZ%c$8i>gF^L}4|je2?-Ka$?~2p;)IeGQSW;Y)mi z-Uv8e+%fd-a;Zkriso==00{=BN(J%|UBl~1aGxBhNpAUX+*!~B4*OCidZG&dQv~p+ z>GDj17*+3HRUti5?w&eOm0KzV`-M<`$xf6}EVB${Sl3e2nKs4lH?;A<=$dx=50o-E z(QC!pLB4qD2gXAZ8AQ&(-XZTU-WINxl^y=jCNVeeint`Va1@=SY*(qIyQ1-vo;)Pe zmi`o)+-SrZXMOe|C=VY+IBdgEbm3>0UI?zKB(({2@)`~^6puMF^iAuxuYaw3``<5W z(ZFh_8@TrW@6`_T|7zU>kMZJ0#x_oWw+Q}q>s64r_4njbmn3MKRbuR-f=1c$B5+Kp zV68qoQHjc20ZY<1R_s7@Vd65jj``f-XHw?i*XU0Hym#8^Jfe``JX)T=W|!*Jk-CW* zlY@a+4$srjdP>HKuJ>mv!jDL2_#C0y?J;8b9U%wiu^ir-RO1a03s|c}Q;8nDR!faS z)`^^GU-gn%Fz4l`B&*`Pml~&5v7N1e8llmF2^jml#>do>@gE zxY`BQO2~}U7FFkzmdY^0PBqMp3)zw~X?aCaI7?9pgqkN6l9aI{FvtiV2RoBuZL z*{!^M!r?R3iZh3KYo+o8F|d=36115k(U1$TfM_+`VUwi{|#X;dUO^=AM1% zkTLx2x%Y)Lr$W%I^!@HyT7o{_(t}X#*A0oJ^(bdz1UzI=($;~i)~{Y9ainyHXrRp=I{e`8iQGV`wXhmB`gXIj(w*RmRwT3 z{o`A`r1woPK1r9x-X*4_ZMVQlN40r-Lf!Z12t*J8_7JSX{XL=EGo-u70tAx`J%m&O zLR}$c=z1IVA^Phks{tYSQeh#xV1S~VoDjz6kWfx3DPjDbI5HzC*ybQn&_O!FZH`OE zo8(Y-5NIO^qTkG|!JU5f*jhYcL2?)@ zG<>!trimLt?^w9stsVG{nuk60Ly(Z;A;`QvdbQZ8#Zs|LBOp4qreBjQ475#?lmM(EIMA(WQ z`-G(yFKF4cC%Dx?@n^K-N;e@{v?VH`4;SKRzu$tCd|>bV=CXgS*3eR2iS~5XHwUVV z?J^v$49Upg!6%oTz~8ZgZDhgMN;d9&e<#gKhVp<_;OV~mALoYtcfsSoZvy`!W&RyJ zfMDO65qf8@<`1D|SgXkibvu6+2#vyHNJk0L1)Gg-dV3s0%++8jDkAMPf@j&cecf)y zM$`*-8?PIG-qAfzQgeMi3hcEx&Z&2Qs*MQRtV=BtGslD#YOIwA1`;bGNx1PUzPNOOSQ<3Lbf=dt1G21#1fKxxC z1@dBNPes{e83M+v&C&2&OOD0>ecPp3Yr@|(RQkt@RwKn$P-`1sIl8`TI7t>-=Tj6a zBN9XVZ;B5vR|u_=Xox>y+};JP>1bNDm`hfRL(>--5vgQ^Wo%8J880D0cUZ}in4n$B z7GAU~PODPa2w|`ry;`ub7@|?q1QIxvsu5uyB?Z^Q1yeyQIDxep4+*4HRj`;c`HF(GF(R zB1^$4w6vL(X*zoj9cClkD~|xd@MqXe0HVkq3^b$7M0=hXNyfi^>_|LzNiq=PV}Qa+ zCX<29sQt7perrasX2pRMLAbj8=0cvz9)VyIXNHEk2tP@hA)JTL-^Co3nG|Zs|6cL{ zmAB8DK4UcmN2vJ)3+!M88@jP)aY zDmiMC`go1l(~r<9wOiimq1=%^@W!?n*U{OM1FG5R;(!bPbZ zUU$2RYtYTS?fr?xgyENt6&79i^g0mn(f}9mTW2;$W9}zYe-(ope zb&snEQ|5l&v zxnWlhfj$~B!-S9|`TLw_|-rpXyG}r7Vv`-m1%uBTQapS6&4uhI!fKqEOlLG^I;tu5? zak#u3MA@6a|ePoTSVhorviF6>~TrY?pW-At41J zWkeu-%lm7E-qZWrojgDD%jfrzL?9d9a-H7u-)7tQNB8@8W7C!1`**nn-(eKNB;OH> z^p56pk+Q}OvIV~FBA24qGSUIxHH>tO4A*Uk#7FyRriTTug^5P{MRW|;u7?K&sO(2X zsAxr~jAV4x^wo5HU%rEJ#u(}ALBwM7jSqA~#Y5bJvjGdUuTToKA@m8r$LRxp{(l#0 z|MP(b6{Li1oE+T#_1p>ZnzG;Jfp|bLDr%x|KCnkr<6|sONfG8lmQ=dno@e1_JNBry zM5Vc|9r7amYp%Z^4Ug`(0MX5DZYbU;Tb*`3KqE)|=sf){Z6)QC-4sX&yg_vTz-7+m z{}FpW1^y_nhX>0Pp&oS*4SSx(bZalmqZ=PZzL)tR5!G+LqNWxjqw~Y0_2=r%M$!pd zrxRD%u`4Jw#EI(5#J(x^6f2qVN*m{sRO&|n?X<{dgce0=knDB+&UZjwOK_%BQT~~x zEEQw2m79fYf_OA9V`4dWyq5h8y>4pI(HeuX>!h9qfr}~K-g9lYR6B>FjZbND)V{zBxO-Eu4qQe{e5qAQ z737m1!;pg!b@XQHD#kJ+bKEx;(d;sn0A^WX5wkdm-1a`u3a{Uq%|{w{iMG@;QhB;m zl*QS~JvtE9Fa|J>}itc(u)LrguNB>`yVjqF`R(lw&SW)$1=XqRjMm$`J%?T zvLHD$%0IX2cpE9WeQgotY$$ncP#Y9N?oBgm+Q_4f^=DjEH9>vH3)3My-$dn#a&Q6P zhV1;ZVlk2LEzN=^FUfySnaR-)A5x_`S_P%XbVIP9Dc2h+34f)j!O&+MJPZqy(Ndln zfVGFKYZ*5Y5N0J&4#QEM@h5MsNo(TeP#&MdS!9S3)Ky-)<~jjnW;5~OyqCCMN1u|G zO=BlO`+nV*Cd8!cd!eWWBVMoc4mZKY+RX95xu`okPSzfHNG97MnM#Tw-x;K+^j!F= zLibKTye{;ffxvhgGW~tJ#9MTi8S}wbjOvVcx;3i5yfdh+thtLS(Vy+*+VDpNrNmjK~<>qF(-D?sEgsF`3RWz6qvQP`;;e{aM<1{6*bVA1pY zAF)O5|9#{UwzdPh8re8o|K&CK-+XYS!kA1iA2K(Xn43}w)H4fB$W9HJHo74baLhr9 zj^-EDI!Zd9cuMM|9*~Pa?u}`_274phv#x-(pHp9F1gei6$y@^2s#hRe9cV0rpgD9n@y9vswe(C3X>k|247E>Q%G~s=*u?uX zQAJQxMH4fTDWBPh$%uKs*o`&w09vp_<%$O0e|BOSwWrz?08{f_KnqA)jr}8SCHcSq8x@Ry+FBYL{gqIF2Vg@W2IBbt{ZnJNWas%1 zhq@etRhucb_`Sk1$w(h%Vtf4&!1utCcw*+0vu}Eu3d%)utl}#hoN9HMk^$VxWC-DC?guFSaot@St)?H+Q_X} zb=o(jUzo7g3K&ooi~ey*mRLQn6)xN;;<{{9V7Mv}upEh-Yi)a1Gq`}h9?$9Jl!3VBO8bUj?c8kg=ZbNYnn9m?;xZhT z>r%&{q|M!T5#wBt-KQT?up{2`L)YhO-QiGrfU zM6?hRmfIXpY@rdBSdpuZ9ZMfU@?DAq`FwM=1Eq;(TDiU<+`1;=AYQSo>zMsr_C>b7 z!^MOEgwdR>cW2XO>;2Nx_VRr*ZKulHs|z|Ci4bD=d(2+xby}@9--nF!Qp5&m*jc=u zxfXYd+=Gt>=8{Yarv!99xIef;YnyTgq$6leb=8vGLo@2ao>8z8;XObyTG@_GI~MILI|?{B2oei zDS9(}knmXnG8GchaMW28LVzOBJ+-ag)nNg&b}hk9pdryp)zF?%cP4)(KE&xZ2$qQ( zdSdB3Sj}1MM7~{L7{Tp*ry5hCx1k2nTC#`$eBQ>=Hk_27T10A2&>5NW(Mx8W`lj+6JjVypgb0~{8~rDjvP}VhBm-E#$Bd-4~Fx68cvKG z3m%2ZzQUP$d{2b>Qmf~rn>hirU0vWT4a>6?aQ3~LdJIZ8f9*KU;qaHbNFjTY;%)hO z{E(HBJ=MkxO@wUbnO0}k@jg1asYfNim<2b&97t!mKi6Z)pMk?5dX&#m8-#`w5a6Q9 z6Bx9Fpb)5pk)gh~c_)FDucm(r6n1a7qMNGtVKigM zSuQAumS*!Q_09BcVQhzwcFWbZqQNWd{?rNFnrK&+=U~3{@UFH3P0dSp>V8p=evgFRp<+L8>S^nH~8e zIA{=5epHHZLn;BPRyDH-&YnEFa4~$$?7EQJV-x#WVW8!7Abt*vCsO0C8)^rYOpU8{ zFAEWoQe7TqmDq9=np%2dwf~XDbl%e%g^oDcMeawrQihD^e%4|qmOC< z4C*HTkFoD3(HsyTIjAYAFUA(9ze|!P6emwm&rNd$~-$o^U;( zciu+qp1n!NsH26d%CY#CMnPL$p!W^k1 zo`vbs6QyZG_y{M%uZ7Fs6-g#Z09ie39c8O;TB$yFC2IH4s*PLOq`atn2o=!j%johu z$s_V>-m?L+e~W0<$}_}q_063aBTuych{aSNqxt$#?B$9pN93#3EH|F$Tr(}nhJ(ga zV166a)XJqs*<3M!%cnN-{+n+Ha6WBxx|-fpHT38Z5!FM&wYHyXqXCs-cftGfk!Ws0 zxGcklyI^l&6lft#QeD+Y9kEli1ATsFrx{8cxpQP>hMy^2H*+WcM1tM8;W^B>f}6s} zOn+4;Qh9(g{-{>)nf}18nbq(hJo~oHa_(pRxMtF2oZ01X06Z!=?N`$W*_yk9wsCS9 zK9jUWZjBcn^@@t33qv>=GwCHic1GV<)mOad+v+WP|5eLmag*Om0ZF_e!2irr7!F+m z!1Cq4U;kl}=HFTB-?huX5>*8dTbMUN_UeV~9aQTMlNf-dXa#rf!J;UJ$hj!hE+RFQ}aRR>=u-c29DM0fW+DqzA|f~{Wv?a+Nh66H~;;6 z<^m*IeRz<{0b~Vwu9lfm*eafSjN;f0|Icz zH0q$pis%jsp`pc3{HnIXiUVsGRV!3%7ZAy@!JS^SMKPTDDbjI8c98HL6z@F}xBjbBoAvO}*CQoZ#LaAz70 zf24jfsnRJPDW)2mJ~W%8WZZ1#7#&5JI9HoYb04MZjl{@s+TC{Ys0js69-j;eo#C;~ zn#z^l1*HI{G09S~tSY)L*B_&zp6&heSwuY6u!~nwt|m+z-1>O96UEL7ttvP;2h%=JOWQ;iEJT9#MeqXuQZOErG;i zXIle_SEy&@e=;;pkD8-`?*^0gvG%Zy+UE<9GUKYX1nL4%kW?hpi1ix+P@ye}$`h(( z1j+&)l!^tTF9vKt&IFWn$^wT?o)AYgz>FMQ{he@nIJQ21Bz@DTIe^DEHcg(b5*;og z9uKCJO*O7*6!enimakFEr6&3fWHc*6}*mEnr03s`iF>lKk4J8JNfPu z{ny=}gmt7sxKd-y=DBnWn{P{y^N!ZdNt!d2Y9-m~6XX4ow9S{KWikv@M|HZ%8>CrO z+mkR&3}-9Yzc@VHS^-DQ^OZ1BtX%^yly~1OS}!H~#?AYDB|5+`9d!%r4?l$D19m=j zu|K=lC^s>Ag<%Yq%d-9T!5+!YdhcLZ7=g5bUnHFMv7(&+I}A&XEbWj{zmFSE=EBYo-Mp8e3 z-w@qcj6NU3DM%3xBWRAnlRfKq4TK?34@EtwJ)&ZGbQx#@;Q)u~Pi^=WhM`q&csbM_ zqwTsfVuOt|59`Pn<^{eF0>k4P*OT;os=&E^dQ{~_O7%GR-1n0#VG`X@R3ej6fg|HL z(ow|1W%G=7(L4tsN;d{;8{t7lbtVJSfFoI$d%-)^HvzG$UCfzI8Q?$b30b@9c-E|hrTjXVHtq?AT|3)$Yk zJT>;g8L+gPRsbMfY|L*Z-=+GL>&J19JD#wO6TFD%bFMwr{=5onUf>Cob;GAFbP0*v zotnn(l&2EDSk>N8;ts6xa*jGC`h5q;DO(|jtroN{jgs0MBdC1k**^N%xv&V_KDK1_X4^v zxuU%ONuI}8xYTnC3CH|T5}UVEqjO#_lB2dJQ@S%n701*N=Tuqv|=kQF&Ls8Myn87JnvlW{Tf z!R$UNB18BVpA~v(RwL@3WkmJXOvPI4Qkx~ba z%(V0$c)x$n$CF^SlpCZ4r8A!^{!U@sV5g$Q>}v_FPhBob4>uoT#70F+*-a~3Ipk+Y znNo|+bKo!)#a6C$LW6G*?qip2C}p3eSm<0LXxLYflo?fYa8h8A5qh0hl46WUK1pR* zQF0=Pn?pK6s=@d8A=G64EQ9cj)Qg6r#;hK$L}Ot#{3r zHL8%I+<+WxB0KY@XMNc^SA^v5pzG9edTMpcKs*wU7MVP+YQYl4_Wy5h{@ zR@$1|aiT<0hDk~iZqF{{iM^g?R2Mze)A`$rShD7O`IVZA19Tal>MMJR(=93*JYCVR;(IU80cWMKM%+btTsjlS*HBm$ExD#9~*UQ6%xag*CI~C-xQ4APwm@fV`lO${XiYqZJknk~^Gs6TZ|25ru?lr?ZC0)x6Z(qn z*cNx=#`&p#i;sRccQzF&epdGdC!J^ZM!L)r-Y3%2UoP-Zu6?nL-UfdJzK3 zxbb&|K*EKX5voP;1Ja-fT*ZZuX~T>AaRC+J$|0ey@aZAO;IxR~^8AR1HQ*k?A@* zEJ~BxXS(B*wYNRvqCTFO6AmC53WCPjK2^8PT#-TQd!tN3CdhWI(QB%H(M5QlZ)q7t z?vFLMYuzw>H>eU_d%JKvsXbqNZgj0z6waHBoeROrSVq#VXq^gZ+3pG2PX%;c%s~2R z?v;ZpdqQA6$8y|MUkU}6S|Pg*r=8ih1-9&tAQeE@&}EQf&d6Wi=X-jI;fhx zseMnFnlK+f_BDAuJ)~f7eiIDufbOUcdeTkBqGT<3*GlVf8Xy{B*Uk!Gkd?NK4?tcVJSN$+s0VCYTDNzOj( z)FI@PPyFqZO7OH3khT#70b` z?l%jN>M{)!W3D!dxKBK1Yh{h~x;Hf9Rlr|(OnRQUS8X(-F<~`rJUbFnb9);S$!MyC zN%UccF3r+|z~*Gj^T+v_Kzv21Cu7UcR_0Ih>jPb#|2V`!Fk{P~lSO@80{wNLXr zem%HhLx(39N5g`ZhwJ;jMpk0!EMgtQPGLtx&3Q6Eg|_A@?=w|{I?ijFjYUouCb4%` zNp+}&8zmi^oO7$T-Xyo$q<+aE?*2EG-CqcA>z$<9FVXl_D(5d*Nybb;gva4KWUwd= z^w@kvL1g#nt20xFd~h(3>YPIaJq973NorbAIk>8)IXjr)`Y876ax13_ z1S{MSVoy~!j1E809NN!SRZuz&a$wU62m!1b>GQuIzbPd8KmS&!XXmoQ~L+5Q@ z{3JmtpU<|dz_?R4@%{v~L?{0W?}_z#qUIR0T$GcZj2lu?yYq|@lA8(FpZT7DM_MGl zC2(c%$_El%{D4#mf+nB^TcP#r^8w<*+Gkg8;985!<9nyi#;?q_KCxq6Z&x8kjRnEA z30Dq9YEs5_{P+I*!FkL?3A`_5`Nsyye;7Fb*Z%wes;0zmDI&=u4|So%Cm2VPfs-@R zORCkQjLpiKzV!Gr8c8!vsL8@^n&B*GEDzLVzLLJdx)-FtjFprm;l4<|P?kEb3{>|! z;dQ!9wPd|#I!@92`uual=tGr=@m6v#p^4YVB?7Y&036aR9znDn|mOqJm`f!FS z9k~hRLF!)ei`GS>%o{9qs}s8xiw`E~SCPnn?jUVhley4ak#EbB!#Xwqd?OtEN3G#ofWs|`aZFP9=ychJ+c1mpz7{0Q{rdZD59gF<^hqvH)j z3TFc!5zAWDXV&fIIA+8@xiwcM3*c)e(~K>(X_eh%+ONcGPbMxOvcB)jzc_Pe-Sf2p zr&PSa=XuIscw}5Bi#~9c^i9t(A1VyF+^?TvId$GWCn!UHpvC8o zJk~Uh#E=jRKEWZgjsq@1p<@3)j8e(x_sY6-7r&s~Si=?TBHEU2A#Mu)lHTaif?Y~0 zhqnJCl(*?fANH$$)B?87;t;3Sb`|bjhwhMmY=1-ato#La<*E4=x)0(r7E4PzXe> z>T#E9#r=H)fX2YctFWLA|J&b}{>V@2Q2M~O5dS|ik!1g&zW+Oc{1^DEs0{>v(Y+>l z$j(X~TO)Hq-~g>MWP*TU;D9fU7zw7S)O49m`gm+bq^0Pz~`*zYb z<@{59+<5fOO#YO|<`dVE8?Sro=iVIJ7dI+;@P+fzU|FtTqjYv_^-?Y=_!@hcr3cMH z$_H=^ZU_`WsaHq7S|*j=l+pdn6ct$hNBfa-uTz@cJqK zgmscu9xPZ9h<%50B7Uj=R7pMRw#@Vw7Gw_%fR=|23t&W=ln9}hijTU=>yDADBer#L z?khd{fFt92<9vJKGp8-%;S^{yQ@;3?r*H&u<5nbA#QRk3>!+8Qub0DKV)BYI&B!Wy zOT>lWQvAUgkOy;xvE54^^`X9L9{Z>h;^)T}gpv-Xh$z6<^TQ9uNK1*%N0NYrKu?Ju z9Rp+!kWY_K=qrvPuJt_z#ZFrUCN%JBfgnPi2u~x?$a8 zy#0YK9?ejD(s%}ErFm#Y(1LrZCla?bfKvOEApt$Sn$mP~@4$nSZ z|Le&5@YxqaTVH)N)-hWz-2GMUio5v9rLZ^@>c9beZ>+AryUl%L-cT&Swb=EK(@4bs zVJ(_l|9h@BQqdZCumrkMhhQb55D^h*NalA2e1X*H5%5C=A*SZ1$o_V3Jwjtozam|S z1^#OA%6Knm$}yMXRlsPy%f#5=brSqhEHgD?qZ81dnv(8ug8P$vS$45;q(-HxjetJPE6r<(sOanc-I0?V2SPuVhP>s%^#*(EZSrs5Hb zrU#1pTwQ=Gbjlc6A~9cnh2UAf_IkC|fY^+9uA)F46>$Z7zHuNSrG2{$O_Lt6iz4K)Ni)Cz!ysW@+1Q>Vf)w|I zyF^2nWCgjU1V=@QvOzJsz1PmA^~Ch;eITwXX|}LNZe`U3d%W*qd`DyP%@Y#Rqm6rSP`kmSFWAhivrp9gbn7-A0Z%h z`v#Tm##5O;A!T2_!i+b9zM%?G;nfv(#GnoA`alP6h72d^uu=-xV z$UtL|=>p5ZVJ|6ymL{ndzayBAgEty;{W}7lYUEfX7mTr)a0h0QNT`}zKVpK7g{VC| znz%jq)r#l09SWt@Wz9+~ov$)t=1 zsTVHd{X|jGu;0N#TOL{WV5r1~?_;`#*f^ zB2jBJFE}QWuv)|wTFzKgg}k(**E!WF49g2o(am#6QkBI|&=Mrypk{p_=;YMdXApO7 za&c92gRja@p_V9$+rpm*?f3o$fdl9YUKD{53i2O8;Quf)sqAR%AoI68@qZ&}|5B{k zG58@Qe+|Frrz{y3?>@9!0A+z957OhF27OWUorI|28$6rWmo7is&Oc#{tGOBSZaX~) z2hD5Xa%3s9ljkdSM@?xR>HAMvSG-^PuWO+rkxu)#N5ax$t1YLi;f_)R9`U)qQ-v(u z^-6^6^|(@2ftB(H5v88$sS3J}JhBRE2DB;J{ZWZK#PM#;%! zn~d>0Y1+yfoJaqtZU)0+Q-Zee!Ot+PSf|=xroUg!s$XIa!*ej-%H1Nnkc>So_iK~s z1`OHf#c$}UNTk+M!9K!0tnrf5@!r4>-{Wfe;gpx$HLZ!STDEn=ZSt}&-O;cFR~%wy z+wyZ{IBAUD$*hNPL#~2}Btt(nX$+epxEUTtmr3)aMcN|X8Q_Q6$o66auFb3=`ibvf za?&Jz{PJ!#b-IK2ap!xjLb-J?Y3D$BrH$?YduRX6CEITi{8sSQLSVx~*`5vOam>K; zi#>^Fcf+elr}_t z&8jd$wmuEKtW4#cZS3$ntG4dd0h0i`lmQ<)Fm}IN~mgTA1s)tI@Ep? z)Ft%@vSR@Oe%9BYdx?JEoAcz_)2M8kw$X!*37zLAp+E(ZzZB>3D$CCl6KNQWr2|IL z>d$_7a931lK<{bnQ(jth=>C3#`=Cd^>&`PP_wlF~!`LXhy?TA`* z!KPE_7upjAuNU(K#EpsBzljM7dkaMW2{0GI{ghx^N(LwJ5J4gI#)o4Yp3H1dNg`(SNb`Y~R%4)xYj&;s2P+=l=I5>NO~7&J+`00v3TkJzzlKOPARPEKwA3MGGKjt_|BqbQcT9sx~$l zZ?#^)UK%s02IEp6wYc|U96cxN45Bt@SqUdw-KOp`eq}pN{qeYae9-&m_%)+SnvNsT ziknXD9IHADu}J@reJML>1J_u7={SUgIYKaiOAZ-pmUilWn2@c<0hhz>WmwIsUQtPN zNzGD2tqSs|vk@QDOtUeL0FuE^P(KGTbd-c2b)GB( zRorc=wf(S_eak(M%Xt@Y!VN>?m;}In1~!yqeA@_(MR?(3SrfHg2ZkznS(EHojrk@~ zEr_5|v#sh^LBQg^^&CuClD1VRj{^3Z9ov-F1fjLcLy(o_qM=QDZ=>R|AMAwgNs%Pe zd7v&%vStpoFB5{+omCZdap&O+l(w95S+GhwvMkUNeXL>=wO#br+zweD{D!Vb@*ncQ z6`0cJ5BU81WJ~Mp-cF%ZJiQMk-%Ti)O4bd# zv>9=eT}#;s{hldTGO_ajmy>#Ld9%D-J~aBvz7nig0+8z=0gopeLq>#zYkUZ8gK|B* zKu9+Qp(0bEcDBNDuL;Wf@s!GzIUIiRtw^@1Qfiz=q!C+6`%v96-;B)faO<>jv8{=c^5n#k$p+U%a6hRo-Dmu z*(;>lL*!Y`FnYp^gIq!X4nLj8y3Ky-8-&GjKvW0Gpo*UAEhGOiFL%AGFqfvq0-Y z8DxOelw`9=r;J&;ImcfPeqzN{;H8=%K6i|-TTnGg-b<=vck&LJSNj*E}BE?|XWOkrQ`%#KqeZZ{t-6B`{PI?jo?C)h2pJkK78B-P8M*H6cDswgKd; zGbsE=pT5X{C^XFfJ4yS0*em}f4*idkld1Z(DD7)qCk8d#T494qgC$MREIaA+b7D$nQ@^rP^oKF;&{tq+oL{13MCc$i^_N-a*Y9x8 z^z+{caGBjuT|A}fOadKMdrI#Jl_{06+I_YzCtuZ|IhYoyutOcH+D_Y*pQ7H5;XjX*kQP0{Tpd;i4H3ibZDltg38aV=#bMY90=x z+Usr=;wlO$N{kJ*);L^i_M@!;S~S2BmDKn(Ib zxe>M~bS>Js-;wy2k#wAjiLGriW-{&%0aSRMk;fVK^uBJAKb-;~vt+t|5|XdBH`B{# zk1D)tKi3&(6_GV#2Aj3AKF00GrXbEi`M;aJm;v%`=|tLqep*?liJya=fp7p`q8ZPW zOQn;LKR+ug?AO@xB>0Qm1ne|xyc@c(9e_*0VNFA>OR|TEu{IX+mYH;_D@?`PxwMA5e&3fv9>0;Drlp7efSrAc~Keh^(ykk_T)_GvG`$;;k ze9~1aX`f_h@sjW`k_6Eq-AD1=6F(>t(TRj%ku4edw!FOasGsO$i;-q;zIlEKPMdSS zLh|wuB66mqA;*OIAI;{&4C{b867m$Tv&c_!ZNRKJ6yULC;We6-MG|fx5%Ob!JQ@yB zqv|mfY3@?d-AkT((gXsIRt_6sLFt=`H~ddjy$Bw8DP}O@9R*&&k`pt0Is$@%7p3~Z z)jqDSt9b3IfK_Kd9TdbFHfJ272dK1XnMQY^>CZUf0`B+9qWL?@g@@SiL#GGw(g%Lg zZZ6$`MhK_O#0}zAW2mpsIABH4@}KrWtee#K?-E43(gMFw;kzIaBoXrJUS-6A46MdC zsUfvLy$TKRvaL9$qVeDnP@fd@V>;tQs8Vo>h*>*=RS@iqf;&G=brJ*)4*NqWT8zj; zs9b>jXl%|7sST&QWuUSykZIwF_oc(~bg-;0q|@`^f=Yd$8@R_llkEBnZ1VYgxZ13w(=K~A9lwS6^i}7)(zSJ+ zGdV7f$@Y`m9FamJ+VYmnJR^iVLiK zqg1c`306pEEumD__@?TEo)4`~$-Z2cz7N1m&}myCs^sT-r&z^w8N?>=>cN)8V#$9D zhWey@$l3r0eKx>ilIe82YR&#N$#=9)`u4n3-35Zx%R#{EP6TWJ3@Ox91!Io2TYbmSo#wlK}K{u)BwG~3# z-B(#|=@lm+r8%>?DeIzz@CE!NfF}dcR*@HtyK|2?TiH^KHqlN@Luhk{sM0FU?af)x zp%{@*%~JmU^2*)l_e-43P$;mOkg5NaJrV9HO&ZAM;6c7tua;2VdI1jq#N$AUV0V}Yr~+WKxSd~qtts)#n)4DqfCO0q}? zd7e`L83}#FF<^#n7uN1fDC#8o9ZoBQ(F|;1d5+4dbAzMC{)OAoDYSZCDtne*uOx9w zPp@-Ae2h(79k&vuASc|8PnpFlpS)|5VsLZ%s@!!yA29|+1AR<LDmxCeXdVBOe9>+c- z&PV4kmVh2LACkqUvmbE}EFiGO=EKS>)?&uFDT-9P2ErrRCS2IW^N@aT;HDBD^x~8%M>n6!~_Q;3Zf`l#59y*%D3`Zxa8D6p8dct`eynP&G5>LK|NZ8zi|% zcE2YaFHibZLvHZxFBzpfWlxMa0P?1^-^fem7JKCAP27Dj>?T{=0%(&O`B55iLkh+V zy1i?si#Q#j)=%J}(87KLZqfk-BL7?g=JJMQu1rtZ&DlMf6$N0<7Dv03+1^7xAOoG+ zQTPzlm**03LiDe3{Kgki{RnQB-CfQM+*(3xzF5tFf*_8d_(G}Giw2DmL&^i(q+txM z!BIw0bqV@p3*rZo!+i{qQQ$oZxb`K>7-G<)F@zy z^@PFlDGghC(p#z@zbgd5{DtjV2p#-o#C$^D9Ln~CJ1qS^Hr!SeaRHPwQGU`iaHXLm*TsF--RN+gOIk+Pc zca7Axi0>@}v(W&-;iyDYLD|7EJYR>1%S~Zlj2@&C_q44kIH*6D)av}%qMnvl<03V2 zQd)6f?$$F*Hia(bX-b}tG0`DWChBc>JN@)J2|LcKf4_WB(VAY~+i&P=h?zRgg)(i+Aa?kM`I}nFezZT^46Gx{gDM zdct$WysPniMM5sCY{VWu12=k6^4iO zJaL-LAUP-{$QH%{1_p)?;7N84j7_W=3hf^*%bxs3HVJmY3oZ2Eo^yUFV`3p;&gzfd zc~=3odGTwI&7bbXy!XN)`b?f+^awV@G%H(sx0k+}rqK}9u^cm=C!X=lXyf}B6c)Z+ zSS9blRQZrmX_C9y_DtiYx+NQ1o$`QTdB~+M`g|#`-m<6yTbIJcjQ{7ZD1teStcOKq z`3F5ip$gvF`K?e^7FJ!^erjbQ{=l?1!StZ)KyzEVc(Zf2qL+g_oD1J@_@1m)tyfU| zA%0d``HJ}}@WOm@U4$`rItHJ_o3m0MRpN!oOQ?sNw^*NM7WR?lBvj8o(k}qP+(^z4plttbip5Q} zNBD`YK{J;GfF}>^D|chjf_vvell~`fZOp}@;jY8KW!0wTrPv2hSZbfEh=Sv_YCjc!l%9vqh382Wl@U%JB< zo-JdmT(R&8><4FP`IX2Q*JUZn4MK5wWM zyJc-SdX%${lZ!W+hB$%$R(x}UxY3CS1e{aLNpIGD&_;DjeVb>>BI8$QL>yl)G0ZNkAb1D%!nw&HFhdp$UF%ZH4-N-Vf!$KREkd`E`13 z2WPolw;H#B2h|EIW|%jObW0diAZ`wKU=0l0C(fbO0a}0Y#l-=n9tpgAE{ht~TxYV6 zPxQ95h6r|c%WLH(Z#%Hu06bW`N_};EZzFjQ5l&32n-n!BGa zZ{GgQLzOP;F6MK*hw`MC+X$|PAmX!$JyH-?niI7q4V@91B@vY6T~2MojZSOS6RyrX zIVO>VU)Kf?<^`!UmWAW1ZI>mvj!3sMS2^0|xw&OI$JZ& zts(`9#qIL# z@@g}c$BE5~&zanWB40(Rf}RpRVP?^7%&3b4h@rC1Wu5}Hhf6WSQ#U57E`BshePpoE>5MNVpn z8A4bybLngf4N*@bQ&VKkn~cIzOw%)KH{)_AL0IDCEKx(S^1ZRvwDEB{@Z$grOz&Wr zV&I}Drul``rpnTVB6Y|sS)(nf!ua^L(xgwPr0134r_prnvDE3nzVk8|2M3y~juE8t zyPY;KWFx4tXSrnCLeKpTJP$X1#{~>v6}E6{DU947p}%}TDOb6FX>cj3|ESy3-LRpK zmM&D2clvJPOg(i>rR2m6yp|EK$E&7V9(TuVtTcupeByHP?U zBz6>Y)9^C2QF`PBv+J^d|<<7i4Nl)YBI-RFYYWvdw zC2o_|*$K2B&GJ4V2OP0h8PV8kus!~Q!$z&{_oSlG(^2IWjdFZL(L3b2IV6oz5p&u4 zEgakLz1A>DKwW+YuD6oVK7I`betmjYKqsCa+f#R$`yEn#yMFdofKVJ`4cq!*Anl^n z6pJAZ$X!8sDY;nF6A?r7W9!MIthEOh(|rz7gQMs{wNaAjz&5>}{XpBU$!qyxTd&h3 z-$}bH6NgGf{u6&SXQv*sG*TPfg|6T+n3Dw0t{y2X-Z zKO6!G^$Z2#J=z#ZjSQt3|2tkB)tSf$>eFi=EV|v@F+Ro>H7^-{Bz$-1eI;lFT z1~f(jts-qz&9sKL$&G&ieE~XNK<>7^uC|grcu_#UH9>G;4(<|qM}S4JYr3L6JYijm z!Zo!iI$mf#vWi%b3^G-{9AcD?F3Qg+u~1rCx2> zQU{mmxr40&y4_I4*EIT*Jk$*ebN_jJvx1Q zq~}&>yiyTXHKNr}xGY~N(5kNJXdf@$w1K~H?&<+LWg<%VpT7&m zIKSz4#X0JpZ-+H$#M$+>R|7eypY71!Y?9ua;XW7#sh_Vf-zKoCogud9cSCOj6L5`#FwQol5NV`j=vA=>h89QN846H>N(74XMLJMmL1=EKQyp*ZXvTkm2FmP3@vYd6eU^U&nhe`{ok=s(mG1+3hC`_t={^QHRmvM7o2c?MkhOnmyj|GVJdtxNy@{pDc0Mf|6N z&-Kq2HTAEk%Kz5h|6jP@f7{v;Ugf@aS`2pWEEZw}Qztv3qd@fAVp4_?1^9)NP^$EI zrCqpEMYuGt$RT(m5_X%_kfxdMf<65lbSlbc3lXtl?z&26F+0rInDlx5c&7OV2L(Ba z9fp0(XusJF0hS5b2H%gMjb@&evW|%i6ii4WVfl`nDOr?&5#_Aey*;As=)Y?S9K<7Y z)E=K(ty8-9lCOepptC~VfD5-RI+cD6%4?l|%>2%*%WuWgB~Tc`i-}OIeEhhiPV>l@kU1 zgIY|`e4!wXEa!4LE6s_Qn&ZrMRGHosrGi-TY=uoVRA<42a+!E2o+bCyh?tsA7lxF9 zy<%ZB1PR`+iy591-lnZp)0s!OL)*(`mx69(WQ=j`pEsFhM#&~KY!`KQsaC1@@f$dT=7Ft;}wJ&^oX=&`R`u`@t4M_^+mh8sZqy`^z0S_$5gEf8!bc zf4t-W$5`oqM6n80H`Lagv3!L56Y1eo`%33lYHO2}mq6Fnjq?gCs{+u}j2XLtMFMp- z>;{tD9G|FH9e0CpuF+n2ZqbAsx?l84uPxSK?gVSRUpH^JkKS2-@0Pm1=#{rLepKp` z8Nk?K8C5UsBu4kX1{pg!p;2Vr70X0cc?nK2u>nWEiP;ex!!eh&-V^t-2ie?T5c0jy z8f-f$nogw~W%YVHb~1gl9ZkZswYv4wtky&KmyMul#ay}+gcQ|{?==89e4Mch&$)Tb z{=M)<1L?1#GwM}Ii8r;*_yBfN_BFe0B8{}OL~7Jls*ltzTtN$2q~#QAC!?)?lfcx< zl9yVGjw@fYk@l^ys#-$hnrJL?3|^g8W}`IVO;bcgTJ0s21}|0aWV2IrinhQ8-0l=q zzP6=n=~6CoW78l|$7$yAlWM~z^R~rzW$|F`k8KpDmV9$QByfh2X2FQ)ZCeXZj7ec&m?pE%nTxf zUZ#07BNl=lor=$7l>;NidnpQY*}pM^|CmU)u<4@zX>^)GN%Nst@^o8!?inAf%sI+Z z-D9uG!wxYA2f6Cd@6SiO8^4qij~zTeK2+!vnd)+!|Ea*h9q#h?GlrW#IAAH4+8s;- z!fw|F!fpp2f+1JF2Rp=v6pNlpf}~g<+Jn6qeYmAUKV^rriW;k%4Fa~0sEVayh;ht5 zaK}5OmDu>2SlHhnD>tQA!z-hglV55FZxo&b8;H#>y~Ar;Xb;keMxWRJ(?DHc-S{cd z;CJq5O?+NXHlvqZ^+n#scGo0X?E$oH$Bz-_#B!vBlpL|{i$H<-X5U%lw*+z__Y7`= zeyG@KQmaU3Z)e2P;=eZ&{FipG%0=T4Xy`DWppzxOM0b4gr&q()<-UgdRLp0m{GFS9 zhfVV{lDs2=YGnAK^ku)EgeETa+1eu*pnUzxOi|mPEC~-07ZmO&+|KUpXuM<+l#MHpW+WFr&HDNnj*DnN+$$y(*5^eq+ zSomBjR?(E6tvjNW2BFHUqo5PkaDw}RLifv1wPlw5tcote$UDLFK)gm*KY`_;^Mr*h z6HGCxC$eYUZt8vOlk2bcrAgQ4zm`71x60w6nInYUQ)5D`26&n)<`|7P$X;dn<@|6X z$y#tcDP0fB8j*u*AeB%?EnQz1;w_aw(F_S$Ei=%(5$Z`Q1ZW&8f%0k4l}^YND{0a< zGP3kEAsX4pu0r@Hc=Qq6f>w?5KwztLRMf#&aN2e=!GY8r=waKgqh253|I%sOY*?SR zZc?-i^-^M|)$G?x+%&e)#lUC{66CSqPW9BoJrkRE&hyk<8y;hua<=wIRasy@H)K_6 z;&W2@U|YE}bKG>2ZKs^>QcI&uSN+j8A4GPM_g9MOyk+3HPO0h6?oMo^-gusJrPkbw zA6=TE3+QnwHY-I#ZU%vyj;eX+-%x0!e#oOStf&Qgl&<;kB=M)~@WFIs8+!~`p#_zu ziCL%Ad|GuDrGxuj%~m`c8Q?fTsg-5=>vHWy{)(OMgNM%K8ff@xe^I%vLd}runtpbl zp_vW)f`+GHul%DcU=LP~lCyL>F<=gMl9IFBk6wYa^)nwEof9DQ!F93vW`0~MsK=PN z{tKbZ_0R8*>QUbc>8N|(f{j;EmrK^`x$uc*5sFSr&%?F?W9+x=KOC0U0%s-1g37_Y z$HvY~UXft%Ne=LI)T=XPyU44`PY$A@42IN`ER#FbQ@TnsQD@YijI+VgEh8-hEfXz$ zSSFE7moN4pX-Jq3F%H>r*9ORYk&=UnNWx((a22A=oIq*E`IEC&3(&cIcf(!BC>1~WYYD)ACS^|ddONiQ|?wd6=?dUF^$=f(-SXka*Mqn`na?sw3xOPq!5kt7#n?zr)^Rp2x{F)!( z{&jBWT6d-czP>!He_S8+ALxz$`tn5GolR_={x>u&3Fx7&e1tx@MKkObnGYHcQ!6_& zUq=P~9VbARn^ra~EUaI|CVsQk3A+mM@9rPBqSz+#qDHM*_6@7HLaVmrMOGAR>xAV$ zC!JT)ZPh1_zS&t$hhSBHypKCO-o6=EUPo)G9=BaF{E#{5p9;$b*LcC)!Jfg8!D7MW z!4t4rXldx0Xid}&)D2Xm=uK1&G}da%x%Q1hp}lOdnXo+QS>^VXy)Lj*N)lAgRL(T# zOg|O3rYYL=?sNQSUqXa+AgQ&|6DHQuwbIv4zNQf6{$&ugqJcIM_qwz|ZPKO*K@VI9 zEpaES#I^4oe7!s*UM@jAhb=Z%L0aE4BJGVUnj|Lv>oG1cWmaTa!Pt>_H#Ytl8GcKM zt8Eh9y@-2m5PxY>ik_93Q{bu0*yG-5gdBCXWITo+8^3W_o4``HIAoDqPOjaUhM_>H zV7l8WIYRy0`dxRl?wp9R#+JQpEQ^*rhO@~ohr|Xldf}q=$8mZzuHwIVKT#{WSL)h5 zf{kqRTYEp-6DC8Wj}ScvIvm51_J?M*iw2oD+G-YW*8?s>8y`i?+d&R=m83bk^NCnF8yv)w=O}d)#Pn(^XooQVrBNQ@Gxw!_Wl%vh!+lpJ|V^LkF;v z?++@FZ&DVLU5eGLZ3Wn=Jvo`ynwUKiGeadFPkk6~%Kli_I?azWGU0lVsU0#Uj-R?A zlyq0OdA-lMW0`#D)}!;geKS@^0$nB)WAXTT1=x`6Rw+3K-v2x)62ZMh|A<KMEEYqU5LvqQr#Jqd?RpH1Q|_Q2GLTKeHJFV`^FgK7k0S4J_|zD;Micrz&{a>`OYc7bDY~ZI$B*>%&`6y<;q9rr7BI z*eGJmK6Q9ocwP8CNcO*aFI28LC0f+pmv~h5ZJoX!26F* zF6kMQIJtG*eX6f+MkHxH$#FB-zyX#+k0|WHbmIgG$D(N4)n7DR>)~tQ>&{KEO;@HI zS;i`9n`_r6<4tST#We7MeYE20(REL>AkxF}W>hsDVI~14@dt>&yFKC54VfCeag-S< z?M53jQ_sq=iyQE@xLJuw`G#9^Aorr%4#L(kBf{1(v75gNb^&o=anas@WIkopCHs1@ z8rrC}3e`xs*s1lZd(rub+eo<3srNduYPYai>@C!u|3~jv$vfnQc*7PkV(0m;bE(9b z!E~bs*h$xMHBBu%*}h8D+>?#b9NLEuE;;g+H;)2#qx#_D*{E=M@p;7 z8+Hjgk#cjY<&Kx?Ho!mhSgnJBIxfAtjS*AYGXN@n?*MkL;F4i|CEZ)E<%7q91Sq@;uaSbY zsou_Z2L}FY=I*L)Av^bVRKEP9l=C0>PXE_&`M(65LNyq7+y#^@GwDUm&5Y=T6w+<| z_~AP1A=ivPM3}ltQYo(i*No+zVa?TLT;s|(Ra$u3soEqzJ1{&x8uPNZ|N*lpgOrm7M8pnbDkK>=BWu2J=K z0c`;EO$>-54M^5as~=@^8s- zHL`vepxVTKYJR35n&8)P*Pf8iRj>j>{Lx_W7z?UPYIYS>mA2iV>Gl;SHSQtw`E~St zr!s9X@NEe2uxGJLHl=*~;^flM~*aLc)@C>Yo3WCsWa03G>Aybc{AkZfW6Z_Kg zqF5*&2OA970@exnD?GtKxNuBrSPM74$D9p@qH_ftPAJyUQtM$R^ntX}mT5C^0GZU6 zX+@I+BXFWEQ6yokjtz9{^P-0}MPOp}Aj#-9Y${xb)^p z#Le^l3PwK6SqC{-Puk{V0Y8nk8%tCWEdcZnp@FQ0c?UvU3bKe$2Sgzq4AclC@Zqi^ z`^PnS3)29Ew;cnMpEDgh4wo?XdfUaZMj+uOq6oY3&mY$*Xo@vrdzCF@kX7Ql2o{c{ zv=*Z&>%>txK3peB*VB;&HJ2yQLF_IP7x;vtZGMXymiy;F+YgwoQVN0?$@s`4dc1U& z=%b={89x$;VWK<;h=2@oE>*Il+~0rN&8fsg%=F~cA>Vvv~FsFhOS z3Q>{2*!WO&4UA^j(WT)x8nS90T(9nS!gZ;bN$()yP=1g4#{{GGA7_MhA|oO4pd|Dd z^(G{{BqdXu+OHRUOP7XK07x*dAnP3@p4jIfqnX`0;A#gh1L7%b4n%6TYSD!{3k-_8 z(2GSfq)NX|?L1qB{=jHUfGaB)l$583Dsmr*>7!OyeP#zv8&swe{bVBALg0CV5EJ*O z0o7`in6V!9f^_0f34(Yb6KW0yrCyUF^By&e!XL}Kx1WO@B_maWk*V%@_>h@c) z5X1cqH&&vUQ?nXIn?!hb4b6o>aRLI%XsTSIOcR*w9#h1Hr`}^KLp);#%`WM1M5|eS z3AwhzRsKz(W%#AhJ>_{u0`=2zn=(LwVF}7Qc(c*ZT(J;K$OUyyMuONpO^K?wyq#4X zJ9+U+2E3nv`vNC*wCy&`#D70onEsxn;SGYwF5buMyVS2eU@;H{Hm*c@7UmLjrNA>u zV^nrtnyMg-05CjUR1@xfGy()xYkZ`mrkusKxy})ZQZ7Y+^(huoYIdw*N0LYa>;*-N zSx@9ql=l_-U6z)`fO|0#0Do0L(P^P`cNC&~KG^2IUpn5kDOAS*2nWx0CSuC~$dzMv zJN`8RRL2s?l~eaCzI{0u|F$2JAxo3VaU1ztk$L*2TM4b*m=8cKcxE)A&(gCv$D_79 z&t|n!_yQ22suyw!NEV3jDFSvDFrPvdwJ%9?ZbaphanMw*Y0|UO)5vwb4KH4&} zlrW2b(>h_1SNmS#n6}h(WG|YY*2_d`CYAO%HUQVy?nq2+N?cl_WX(FMj5_LDH`K-* zOhR<8O`)Bt-sf4D7-{hrffrtLzSL=l(*fy6STbcxSk8y1l6QK|MgAI|ys=|@ky55k z-1Rdv4QFNp#>mvo26qgn7TE9l#y4W1IAul#Cg!Y7aM7c*fr{ENvmS+^SkKL9ED2J{hZwc8(_7`E4 zKqi6);E_KuYEuUwjf%E_(4+1kfahOpplm{#iE@Je4QGV^`x`mnRWz&zjKnLl8wx2r zM^HP+ikP^UvquXix>uM4zNgQanM??c0AX#dKM9b9?^{? z3afkCb_9tRTBpc4cG?qjZ8fr2(l!?gKll`8Z|1cSafZJgvRA^k7Wfvqd)zh;_!ij{ zLC;?pAHi$k078_vlx+%d0kS9To+%igAJ@_W$PXv3g{ymwn$vm z3qT^~P2;%fW>qjOl11BQNiG^CHZV$uNG=*AzW%a{dsHv5qMb#IaGoZ?XP5N2cf3I% zWWdAxL9E+az4yi_MOHG^S3CV@7mvq2dc^FRgxO<~u@%I++g^D?-hb|$GlL5<;FULn zE8^{*Nu3eG>_ve;Q$Mhv?F=gstE_$ZeDuB_e@LI7`YNp6XVnZg`mcPC%{z?i!0v*> z;%;=kjYAWoAK4Szoca#lJ*a{?1=4F{qW%QO>oc zOOG&oQ+H82(EtJIsoHmZ6^BJFd%*f7)N**)8|PViK>KUCwZvqtKQ#~GFTnZFjEhwP z7$4^5>>$Sok4}Ra*QI0E@~;fE!F~h%WLgxs{ex5|_v9)$L(ruxne(JX3D&L04Zf{v zs=j|iPeSYvg6)q$P&~WwxSP43`@ie)@e_#jA20A##2%%eAH^WrJfIokMy>axCOB4k z3sW{H@9f?3GiT`=lU6-|n7Z2z*c)GQ3lkAHRI#IOCg2_KY&&}K_uZY2jIJ4WzC0=K z58e#RhF?;Qd3owUM@)=W|+B z&WFO(9Bt*7yB73n=7%PQm(F7CS-(2eWp`ZXT@VB^zu4)28x~;EX!q$atbF#V8t&?6eA(<^@0q49ja+aBMvDPZ#=UD>-3; zJEGQXCx-|;7B3`4lf}0PL;m8>A}5vL#VmY6XOLWFiBstRHd8sE-gGGTYzb83eK7>l z%+=N#FFBz~Uq;I~)$@`JxcHN8bGY8)@%;$&XdwgBvD4p);wYVyVRyZ+b=U*@=#G=& z$cz67mrJj^HT^C)L(Q=>?5;6`;jkn8&Tx`p&kN@0jEiCCO>r{Wu`}e(BxA{`GviL0 zli{Ev`YwV~Z|E6zQYWK&zazkD@OdEP$e}a%&TG<&v)Q3D&57p-Ap_ICGyE=stNOqT z{YZ8Yu2iq*^WR$U(lVID;g`-kkNZ!PqW{3``@dW0|KVFr`tP`7SUauOz_4^>DP%1f zX$TofWk6woh)h)8u9lz;N4k}E+j&tsE~Jl??~kr~;mp#JhSbuncZJNX_LXm_>{N9u zW>;rAMZ$h@RqP7u*wj{=oxYL)V9k6EKA+ zM{JCw1C4G(9jlEArGLVtHLkEbwSdc7yK*^|0nd={~i?E4(c{w`+)DI9uK zVVXss0BMWywwTUw(qm8~FK*eY`+08xELJQ7NOom_L}sTHv#-cA^Pa{J(*3X17WvKA zD)npVa^jgA%&zbojt}dau1m(~muGGJzij%b&bZc0P5N|iN7>?fiKnMQ%qv?4WTfoQ zyBjBihY!+B64oEN*lbr`bn;(-xT5KeR9;ssB=#_zJDw(gju-KqrdZ3?P1_V)m|tdJ z0wc4mtS{QPD+T{CwmwFxXy3B&> z{$Rm5+|n*`B)c8T1_nnhlF5;=dy3*auL%5#FCZ`)mhdi0Pl@HSvXXQ&L9%!b=nh4@ zmv9IuU-@lkwg8qbgJ)xROay%+FHrfy*ZsP*b>w|38O+Om@esTEP-VJ3i#*Vb6JoE^ z_f5_cE0|U_Jmkmvv_0${j+kIe5F=PisR7oO#dHm2)0S0AKOI8$P7@Hs zxk7zGJ|j-E?N#Sbm>^pKhmg3rM@Cm{q2Uvwc183->h*_^6$L!%0dcxUsyN&a?zk8# z3}9IlTh?c*PXnylOa6+ziPOI8i4?Nz$`M(jqj>tQ7*hj3;O?tgJ@cZosdhOcr~Y!p z(Xu)OlYXFGl=ty2>511O=KC)ZZa%MMYnqugib@PA&*|5C7dKBVrie zj+JDNQiF1j{!A-S@Y^a_9ko8#8Eg%K)1|{>vkFO8*M6MwPcXP>|KiQ#-){~WV<04A z%;1J4zgq(YVICpZ1wae*V*cyi?Sp0VZR$&=M*2sr0o8xDP{3>>fw)CpHPS=KUQ*xOH zSJ|M?H~pZw;d14|u<^>j{*v@yYiJ`VH-l z0nQvy^FvTju-q@lFV?TduM%_>+!_@brADV45#$2Y6*deu4CWZwzSXbAFUYUJPY$FV z{2Zf3Trk;>23(tJ+X%D@#lF(-4BSho8v)c7U|;X21+h-QZ42@XVx3_-0n`)x9QE1) z1PSICy+*IQ50n7qI>?U#!b_~%41$+#JJzoc^aX~6B7RGg+-yWzg=5>f4 z1ME}0Up4eor@m^BBlsLdI$erd4M`6Mbkolo#hy`!a^&%$?TokHw`f5U6vP7xqvu=+ z671hiE@FVS8e*JfY}4*T#$oCdH9CjDepz^0h&%Szl9H_AaLfEe`B(wc5gJ?^gV1*|^BZU#PN6wtY4KwKWZDmDnWo`$ zT~=lvg%N03RIHh{l6hsu*%tS>6;5W06T^B3NK3P zcNGK#y3X6dGB%fo3HV!TZqzt)&bVuc_?;&84!FK=&8e?%@I^1DX>U;v6Lc=+T3!oL z3+ZKV2v+4wOeyh;3VI7abudh0&h$4)K!Js>XcNkb2<@07 z8__ibWOHuN7apRl9D1cP*vjk52xO}(Dy?slmsAyK(sI>av=%v%mXxcjiY_yx8X9b^ zL`k#O#XNhpz%nmJ($uZRQRUcwES&YV_uh!O7v$zznORlv`HuUAp=6fCIj+5=LBjhtsl0n5gXi7#%Ns0f!ep zM1mfj?jWi(N#pI-{@|xVma^&8?a(dQh%xW%YAXDZUDUvxQRP}+kFgJF&=A_g!cKSF z>F6^jA4ciIO&huPOk0|xUfUIUMY)wZZM6kebw&S%pp~O?V09G$VN`eN=Yq1vkzLh5 zaJ3Z@_*_RbJx~Ht49|e$v{Ri@W)HA4`IC0F5w*BP?}A3R&N%f%)Kb00-r@I34u|qW zKEs=ABl`Z2&20*Ekz_X3MKu-T8Jx6J1k97clKC<$*F!ed1?5UDt)ps7$P{SRt0LA@;{Ks@4l{9vyjCDOr1nAAU% zB4~s=;PI@oR{a+zvWnEL=7I-8+7VlGBMr73>mW`d0Hgl^0&K>dHZ>*`;V-jqGL!ny zqB<)8zF`mC+{|8!NH^MQyNA-&jS*vjB_UA`4o955iH-A=G=1VGE+GR|NZL?KD=KW4 zIAa3?7AgvvSpxqexvFIy641|uJrabV7EkP%GHF88h|k{VMUw0WNjXYR{CnH-=cYP+ z(}8W&kgIAA(&*mJx0k-fqRA3`NlpR@F+)xjRV^%vl%Qj!GnosxaI*4!krorx3gx*) zh2K5Mu~zdnArTT-Usl{<-FA(>D(i}ZN52+jhPChQy$XBbnJsj&B~b%?)Lz4$3$s{j z{)9C=R+wl%Qfyz-W zUQ(pBsQEL+*|j#YTdOI z{vXQTDZ0{bUE8gsQgOw$Z5tKa=7??E9IL6RK=(`+4<(2Yp>n*zt%VBpKZrFJ6R}=xec>_^??v+ispvlYD;80HYpzi9uu$%K^_T-Ee1vbb^l- zngTFPy!*Kf*16fVQxFDT$DUo*u0TAwBm3#|*cj5==6Y;r=UZnWPj)>Q7h`EX((bqd zM6uq)Plcqa2IO5M8LASJgQ^K+1<-aKc^#g#6^uMxY)$0iolNPN;OJizHj*g&wO?iO zrO0Mi(>+AY!lzoF^9vGfbrH)X$jJ;1r%Ys-jtW}*?EMX@$eOuv9=@G`(8eE)gL0=| zi4<_rtVmY;2JUzha$PGR!8*x9pC`uDife|XZk6Ey9BSm%d`PJHxyDZ@lkLfGWdD3n z^a+Rx8m_Vt$3VL&^)7>X>GZOLc`5a}f_bU+#(=%5_g;d%sxZhf5UxB0Orll_)Vc@I zqFIIOSAccM*Gl%4vpkl7f6VP{W4($6epp=bf0s2oF&btWW=$@tgTl%vt>cN3nM)Ni zOkiabF_evxSzOV;$|z<`87{W83K=%Buu2}DT3X@68ed*%Yb{Pss9rd9GhH-l&8*#2 zVE*ILFKRpan7|s5*)|9OTX&T+z zAMoos)p9u5Rl9u_9ec*f@|LUiqN@gB6CJALsKyZ4l9RJemLzkT{f-v)7sn={4t1fg zc4~*-2NDnnCWi=%(Ai(Tq(Rqb0oIzXQ!vm3wv4DPHzQ+5+$RIpg0LZK$KJ;a_JDXs z+M1Ias*m6I6$~EfjNC0~Mq^BX3(nUsimL(f(+#>}#{jqc%Ouxp_Kr7LGc4QbmGMgDfSx`~ zxORTS4=|&YUsrUE2p!ULLXMXbG>G5mJUp>e!dFszY3L%TuGun zXwz4BrkaJ?uc1oN=_}qX zenlG40@W>jg&I(UI$z99@0nriZ}ot z`88;#1dN~fk+Y8;(nsQoI^Y57J$ABMzlZEGDyyls2kCWrif*6N1&zSW*!QzC1=c?m zp!~g_AMtZx!S(q3UGunL7pI_Ah1K8Ag3UrAfq5u7p_gsU6}fF73{J!^d8;I`uRt~U0g`{ zGj?#eUoc+qL8m7HTC3X#90#?KImrWDtx^6%k9y#q#;wG7#UHZJeQm9`++T9Rv=iC= zuUq`zTPb#n7V$7uJWZ6(+Z9+R0_u4x$4XS%XZ-$Ddrf z%Jp87Nf0XTp;Xs!QuBPVsu{A&Su~ePq$RI%q&l|s+SZ9q$DhB4RR0do$zDQ@GQMgy zNxw2*`XHt5XuwSlv&kHNGZKAc7eryoDbv35xB)l=rQnZZR3SyXO~x<|_BFZO@<@ zygW-$vqeBz&@3rPW@4>WFEr@*uWM?1&*&@MY(bygB~PHQKR{VV;D#)4pT+^$GqgkD z+n=LiVXp}d@w5-I;~FeGPH?HD6O*i=vn2Rl+l1~Ax@tTbJx1vB6nSC#XpzEd8O!gG z=<5-C>8xQtN^H!Qa!$H5`!!0L?2lm7xJ#xp&c2?Jd~sW&VD}5*RXYpLauT~Ke`ch` z5^MtlmPcfPSM0VdQ49QymVzPv$$}K^s9KSf1Bye3)ttbH7`XeT!uvCVFPHVnAd}2m zyXLCqVdI^E3%}kXM6*vfl5sn2<)yIh_Qw`K@WMN1Qs1;eicx=y4c8}U*De*cG;mxqkJ$gyg&`L8LJ+SI9K;y73_WgwWI$K%lP4U*l zK=ImsN!R3l?r8g-Yl76bm`xwV8nv0*Y8TTTUMGHbbf(J@oO^oPi#C7%%W!P1S1IyGsR|&u&Mr4 z+==i5tZm-ugTh|sRwz|@hkWXwYkmix?mp+3o+Ay;f!c$>7K5ejpPkiCi!gq-QDXSJ zfKWhrUotOfJ4&uBJ)9@15a_^9y+^JI3HU-7Mi(B#fYO=K%*?Is5KJ0;+_=C)l*A$B zv%3Rp%mXzZ$OInu22w<$ZNeblCXEU^-%yRxG^5bRd*h`_#SC^!g{|Z_hDA#aVRzGj zriG(=E-LV+N$dv6rb@-##v~K&hA#TMA1TXeU8M^bjmL)%0h5a5gc)7Z!j*>Qn;av?W$Icn1h~Wc^C^IqASA3ttj)0!fF#uOyeF@__)3-kKI|PJe3;9j(F&& zjgvW|G;uaSJiXCH$=Yb@q#7D!@xYRr7u1Wwk74nKl$(jR;64<=Tw>m&OA&{*1-X+u zK4&YI956X?Z2g=O-?~1kB01LoMY^m}=4PHF$pk^GB4y*9M|8@S-o?dtsM0FCs4T(Q=#ri znd&()Vv~yaQl9E+W0Fb5iiFrC4;+|o1g|VVLemx~IKbFZ71RGj7b%VAW?|AwgLY3c zdMoLZ)H&SHMbg>A4HMovwc$cYC5D7aYAAz8Stn%PDh+U{EJuw)~d*KuId*NkWAED^qwMBMecX9Lh| zhmGDaD~l&ENcZcX4uk87b>?J{FyQ3&q@tGMZyr3)$eI=|F(?sqv)bVCt523o;5;^B z0v8=-0;lJ_a}5zUA(kowvlkksF7Xa>1~5EI#UgfvT3{QJL!hp6Z^X+M!$Hz-;F=A~ zoz^m!zJ7M)jFjN!3S%`;=_X0RpStnX33N=9=*G$F;>tJA$6QuJADQPW`2uXPtG#*- z3FxdTD+3%{(zK88^$Rpjlyy9+O5MKkw&&~`Lu{sIsv1?L0xk+*OEHI8nr!ZN0pV{= z7bc11b(l?S^j$YU5#g zr?go|swIb>JkF$?O}ee9%=sHJR!tzB zbLXpL(;lkk)y&K0oL_!ltNx@t&4W4mkv^1G0WNKK*h)5vOHEOj*Jg1d+#=;FGf4Z( zKb&Q0&Wy5YzwP&w2s`h2?t&23VjaSk{}3!%d0&F#D{M7ne`TbD@Z?8Uv{ap)Sjp7Cro zN`5Z(7JQ>*=m7WyLrhw=1%D@%I@kI`M8!W;aa`ejSfTqv{+t0O6+X_x%Xf#Recz1*z$W`@4ROz2zk=`goYb4$~x8G@Vnl`|b_zFXV+*vnm!@ zBCc(l=0#$`o4*_5Gw0hSO#*B`E%!6$qHWMCjU4wwI%mQM7yUbHvUqZ^~d_Kf1z@CG=+D zl@w=ltkjhGL_K6ZCW-OcQ#|7PY2ZQMCaSY_z1VE5WO?Ub4$3V~it_`hVq^xY@@x%t ztfTqw%WKsot12f#{_ytE89x4%d0kP5a7_n4o)@4U)PsDC?7D(uv| zq4~L95B_)qSPHTC82QpOW5k!Bl6nTZF$|&`trzpP(;>BqrJy|;q&vbaxsX~RKSz!G z2I6TGn{@ktg3W!UuKyqdmz3J3ZB%nd<>DC?MAp^+@566UF;okg>zMo{6ulV4#64CHp@^D3 zOvO$tQ*nD9v?|Jr5lG4FHI{BTQ`zgLH?OX}gjJDNqXxx{tp+GuebuYh;0b6dOD1Zw zbMS_MVwUtIS`2{6ArdTOLp`S9MCA_BavJI&TEkorz(f^`VQK=JZkMPbpu3cj`os^s zVJ@uBM0IAU$;9}pXoiO1NHr_x`Lyws@Bm>I&5`zkK;TVgE)9 z_-~wv{%Z05)vfuTv^-IY({i73*LQH2j@HT*(286Uk#Efl?bbk&07n0{L9*`{jDva* zA)9qH8YcGKLk_n)t3es;$cFtxfx5k=yYN>ril&lM%H;rf+pU+Qm!mHFm+p_pdiY#F zP{Ec2O7?xEPfvJe5ztL{rjoJ2DnE!lHo+XRC!7v+2<@4q*q_+8Ny7~R1cxGC2}65y zmWi$CPZKHXN#T1S6R)ILOGN~z3vh>#KTK2t{8`&2HVGWYVTwXV*n|=61B{TrQ`WS@ zP+LwQ`wCcF6B%_1js+7Njg%(Pt!L#gkS)q6V8q15hc zRQ>cuo?4j*EbJ_?PvTX5b8TpA&?^Q>#wuE&iVW zcKviKWcD|j>{FIm`)Bo&uXVWv;{pCQN#0I-rdlVmE5UTvsMIEk)Lwk9b3tmxNnrzbk~dVF!dqz>tTlV)jLU$uqSU@qKA zl5Kw<3`V0?9nvw;A7qRVajPP$L@I-cV&y_xZgZSAKG8eA7i%WYUcC%bF@;pEj9)Pb zv$>M7QEgLU%RyoLoW&94bBGoo`lRgK-(4 z@}anC*Fq($(P}ta(zfaIlDJCkxqL3Q8pqsiFSQTtaA9{w>UDwu~ipDsu@@?xFr>94@Q>*qAVG>H+Si$t0K(@{x{F%@wZ1-1?Ln6EQQ zIoTQNMpev~ktrH-pU7Q2S|%HbX`k;b!5Fs%hbk|`=OA*+W-L4xyC*1#B1~qwoKZ1tI*gU@o3GntU z?1!CNNb~XY`DBr_c}5{R75|*L{NR4b=6!*Fy}i`){mO71+UxEQ11bcH{*4Z*la7JL zPGd*LzXfay%}s1a$NvFr3;j`GC&HhZxZpQ0=vHh?Byws|nd>S*%^rDqzoT^fI@>-;ELzlYwy7Kx7 z(Y)2XlVUcDX-D+&AdJ&Ro2kJ!|2r)3XRDsoyDpUq%I}#?Z^`JP5E88Vp*D-n#weR{ z*UfU1I&g%CEWetxRIoOLOlHUY#@elE#T2AM5M^Xky||&B5SMvbohT>`PRI1u9}X-k z+9(H%l4V}ZCCwKHMkSX((=r)Xod0}>y-@d5-D>KrdR;q;ZZ!Owl1;z3H*?)=(}>g3 zN6cJpt5uEsdmZzj!u{H3_|=ZON8-T>e?=9ggUMDTJFR9(b<*h7LCB--c68T1IEDRE z4$b5S9*R6BcO*7Xh-TW|YAE^=vvoy7^TOK$^=DC$5P9rmh(=zDciTC9rrV2dRr|r} zu3)S*2mX*M&2oQ7UeB>xvosufUCu^(FE*vJVyfhB0*c9ZBQ;q*TumIkr;iqyb97Nr zJvL*rgFC8^Hfg77@_iFI_!)ZhKf)gkoHb|D`d}?gf5{++F_D2d#M2ZE(xPz+28oyn zK=WZ(!)V57b$x9^ZBwr>D{vK>hRvxRVy`K6iG8IFKqb@Cr{V(YgB~0Qy}_eiTc{8N%qb%F^{5;>{Id$$YI=#;334={Fv6* zOX4LZf5nEm}k-@wXckOE>97Uk#9r>w%pYt!Y-rF6xPV&AqIch zIlgj*{6&rp@BD20ZT}xQTUTeR%j~TSo;Xj)2gqwemzdf&@`dAna5~bkW-g3BgZS)U zy35ajxX&Mn{~x*b-_V5YodH&#lyGCCPukm8FqAKlpP&Cr`0amx#Se2^Yhxz|b3Q>7K`*i zn`CjeEVC0GmTEM2b6mtpG+)7S3PwBAM%tG5rr`1(OVXrz^DfOHhUTfo(gb&V+8!*E zhGS%n+t^R^S&0h$lGd=R88!^K*~P$?nx~C%>sidTlsm7DdUuv_#|@OT=Av_WT(6>< z6U{!xdd&rzgVrkU5MxD9GT;3~Gg!h;Vo;=NpLCbZsXO^NE3a*|nbOZe@darOb8p7+ zV@lp}6OPj;+NIu^%dZlg%6KaJCK%71_7dINJ2s9y0&ypAt7UZ#g-Y4E+x{WthFiez zdUI5`88S*jz!dNjNilE8@o&7;`sUUn;=`6iDp@94J})clxKfRK)z$~FBkFlba2y@( zNPi?wVrM7;JwacQ+DUK{?Zo>5P+}P1hO9D%0famLuMLY}*nj-oS>q{E-YB|t2p!ZI zP#jx0Dl#yuS`D2xb-K6OHV$CGy(6lv?t&g2;1|JY>3XCfXFHl)oMzCqFe@YPK$2Zo zynTC_kD@uFJV3q4SWo4i*DJ{aI>b~wJBEK7sXZ&=JB#HIIm>%7#QGE3ayEt zIupj+Z?75#_%_KwKbVSu9@I)PScC?~Ksks?SPgA2GipAC0ZB(taEdP!N#JqhSy;kz)x}KOGD)#Ed2-Cd zeOH+@Dk#G3YH!iKo-7sH2=Gu`360nbqI?6tLHsvzv3NosqfIxww8Hak9UxbS>nQe zHRu(~)}On=#NYZL{P_Fh{l7z6L|I8fLFj)u>XQ^Lr8Wdmc$XJ9OY5qyn^dcs*4p`2 ztQL|Zq!d*7A*B{Y!T4!cjkLuK@+DO7Oq&9N(LT8#1(L_b$u>jqTz1o(j`*hFCO+@a zf4=$!lYZy?o*rWJofpdkDsAtTP>?=FRq8PQ{(aNoClSI(eFQ3M1z6SIGgItOh#$>2 zYAi(Lc5;wia}|*!$@ehqWWeV0U##wA$o40Xw1O0kYJWB@+*~fCjPoRiKSxio!u-1CwgDwN#|8jx_bWnp4u7jkxR zF#e>U3)vd|3qY5otn+CRh_aa?Oa_ZA7?ER!+q48=kOox;Qm_s-Mu+(2F6;;`lSqf= z4d7--C;sW;4_I!F@y@kGH5}Kh@;(*%2>ZydIF=Zd7u-65uq+K2Y~nUJ?Y?kePc^|9MLo7XHi3Sad`)R+3ynN- z@b_1+(mU<50_4qi95YJM%FWdUWn+t43iiGrH?@yL{RoSzUltz#`eEpxjbh!j|hf0wcC}7Hun3d9SPn%5Q;jS~SKt z72VWWZFUSry%p~fD%WAo7y3&!sJ0SpY8nj{Ac4*NhpGTTHWsXKwM&KCLy3*HglUv5 zR`RjW;Tm;_#sm2_mZfSrrHQ5UC&sIO_$7(PpaTJFxsSHbr<7112O_} zSXZK*az7)~2q~-t2kkB}2%a=EDVIr`rhC9qdX~U!U}$+Ha6_z#y=xEOK3~Sy+KJ)- z2^Tlh@c}NJbCq(-W45ei=;AQdCuWr0)E`XplJM#SnW;!Xv<6f}K(Uw72*t~qIC367voA;w|uMzy*D0C~CzGSa6Cf3bg%u%6{@0gSaU>itR zX+Q-ps)1ghU#H)+F?0td!FJ?$Zj4+f>(8H^_)})TnSZ3sqf9Ua2%Vtw&iJH(SHR#W zWS!O0$5%P6q(GKQgl$XQd_{6z2(1{TNVtb&3`5MC{|Kr42)-jjdWI=%G0RySlz8L3 zKo!ddykknTyTsDv*ceFQU}azw4nTsg%(P{Y@fMfiq5rL~SzDELcW=Cf9? z*X6p}?lRuTBf@=|Y61@O!Zrn(Ar)Qt?{K9E~Gps(yfye0aZT}mrg$Fg! zy%HtuTv?b?tB7P%bv3OhG0Jtc2#>~<&wx-!GTQsszoOpFeOWrpql)<*h-r8Q5i{0KNtV^3jq%@xXZ2)OU0?mQbge2x94!4{6`*7D5O9K&HesH#$C4r5I zC5O!ru(JqLf=qzu_u&Pel&1Tb=x}s0Wo(b39QVvZK#}P}slsS|rpalspj9BQ<}B>^ zS{tYdUDbu+BUI>delY9=4a~^<07ty}nCvRqF&X^vv%&3sSodlK~ZVTt%%j z0MVUb>b$Pp#{rg8?a3`?s-2kW>&yIhn_M>ql!RQbMdQ9h);Gsc4WNZ+f zv;!k?9(GJy>XCu&4|w>yJt%Ylly_>My2kU%C)u&Zpl-V@w5gj=HR6>1W`8SOxdyzF&nP*lD=*cmKKz<^dG?K1=g zsc;~07@Vc|^ZdO*r7m`Xxf>rQ4TO8hQSt5aH%52t&w_ZQA zsbfKn!NQ6z7>*0JIiEno4b->@`B`5rvW;s$9yEQnep5s&oiI(7(8fqZ(h@c074~0YRO(O4y8C%>lK(C7`rp(?{yU5mgp`~B zPR7>8Hva{nSJC;4gvi_C1-2$2DEJKpI;_x~P+6cfkzQ(c$`9H&wXbCc99AhlPX_aq z@->o+7{z$F4;}ASA=-0307X*frM9iZ)8*mpLgx8pIwt4Kk1*y1iFX+-9|JSsNr=s4 zTzRn~Y_`s11h$40Ydlt9MkD;Xr{>%kQ)7I5t+LemGAy<1N;6YnogtGOf5oZ_bHUJD zb6h^x!-9~?PYn;vaLhJu+5*jXb9q7`?s`dv5JBdK3aboG;wREFld8tzQVrrl8nUfW z1JOC@vUT(PeOJFVl6sSnK3D$c6~w?-esLa=gF9TE0_zM_ugq zdwaAAF?)uh+sm|X^2j@A1kh%PGgQ6QxiSJBeh{E|&?ovBn)bEhm?8S88`k+?m$9$Z ze}bhdhN~69V%vU?dA;Dp+opO=wTj0R6Zp1>;tEE(HlfHzi3H0gS)g9*xQG9W(zTt! zlR({BlxcRfSs3iUenczm(5kfOn`bR#8Mmb};B3=SOqMgt~$ZK49_Gols3Op~pjJT(qGVn(e&KjR!Qs>c2O zZB>5N082JO>F$Qb!H>vT6&$Axq>>r}-1f`2N2y*HkDCyz1KZTelnog-g+AOi2Y%7q zgX~b;*aqW8BkBJ!VJ zFcn3GnAw>*|MxsY!CIeLif|`!)NI9OVxx3t znj|kj1AihW@*qnD8Q2b=>3HD?f2@0P`+j``F3?97BY}sAha*VQ;VmM75)edmSol>U z?xqns{)d)PjvxK+=0o*&Lczk%22AzQNsF?&Xjg$JSXo@@_O`}bxh6J8_fpM6;x?R_ zO@7fm%j!~QvDd6wTDx5Byi0~d!KU+_f3%Dt)I2q1j`HWaMS=I|0d1u}kh>|x!q+mdq<>1A-={_R5; zCbhrwi@#u|Ac_PCV_|;k0BE2H_$h`k4Wl|4WQFwr5MeF5sNp-|BvYwmL#p3C$h_bj zw9-~CcN*8~nn$o3tt^kBb=U+k6OnuWGXk}A2x!|g0>(AeU;CWQ9wdaqXOh7Cw@Cv3 zfBHXEGPVZTIGGzd{zYE^A%^vf%5S$f*_`?k}W*MRRqYq70EO)z~W&k-vBCG)5!wL?~sNZRuEb#`jqx-oMv zGlvwy_tC2(+!S;g-4dN2V))o{-#3}g(sdhYbeStVwJae`0Zsiqs2Z3^APZMAQuHea zR-c-_dT!{(r*eFgeBtH7k)}k>XVzkrm8hMSqrAE zGK&quhL~jBesWkLq(Lh8f0D4S*6!JVrEM$iv|d84K4>?{cDap_-buMh^_xR|MVb;9 z7w4ef#f7?LGCGddE5d0y$sm4YzZ5&eWaVx7=+^8rSTf8j-=VAAD8Tl28r^_QhuOO(1y+(n>Q)V@eHs43wTbot`CZHT~J;40zY~)>DONB#W;ux($NlaUho%iT=qAUN}!lp%e1 z{1qZbcYaa`O_!h0wa77j~JkHOxcCqd}nc7eTN&{OlJ*g?99-z@xVP?+`W`xUBb4ILbm4MC-l_3O?u3w8T|Gf;$cZc?o^VG zw+sbq21$RPfg$wNDD45sSHB?4H)=F39nLL@9d z47J7QnGzMp6>Gh(#z1P1onyPeWgEYxePM>^cL4W|124(Q6PsR zQsYyBS))`96ml6fMLY^ZA`Tb({}`N0sV2nSD;mIsMXun_G#_0&hxBid zxbaanHO^<28pdgvciiT26fc2P zELb;ulD4luUVw-qmquaq_#b4dZHy^>aeYddpu|{IY0;}%WPLpCx zk#qGHD(GadEG6<*9K~2VRfF~j@KXN3zr~GGdL6eGx{{oiI^&$sW+Ale0Qu{0RVZ+0$(bWgAUR1v8x}b z)h&S+-$t;v5)1Z^HFQ^M+no05%LB1Cu|MNYI)6?;h+W&lHb6-Dcyo!tqxZ4Dj?5Sk zgs6tFflv0DYac96#ILx?I;8rSu8`RA>l3%>$M50%Dm+mj_vl4XPjwm9vQrnV5>-?YW` zKdBs4jBITQIJfl%V7aSUafpv&G}y>2Q+2j`d%ceHu*kNqU&NlBETd>Jy#!6ae9{ez z_Y;Y>o^f=Rz$cy_FIiu&z#nvXSYWJnHoU$kWaUR(?yGFn^aF;}WPVbA|G7^x8qX!A zDWSNs=cHI4HZLP5IGuWr^-!9f@_kr=iqqhZ6$5u-B?uF>eTe%-kh#S`IyXt2IBmV17_CL3S2>$*&cQiLO|C>$_>woa}UjsLC4)Tu1 z&PKL2?*GCXCaLOtvRqL%69mX%=Zk5JXwj^DmqMUeKwz4K4W7bKi~OP#&EK%%r7&Qb zPba|gRK2g|b|PcC=bA_qG%UPN1A7Mb^0Jwk3DuFn)PH{tGpxGicu#Xey*@qA_kf&? zupkxiDU(yD7kE=;61uq_T6w+(LH~m=@C(*=$Md!GNGO5hZ<*_r8Bb4*@&h4~<#Y&U> zze#Z%Nhvx?`~XvkMVZDnmCtq3KiRr0X`is1oito8G@HfI2g@0rjzkLN5!}1vy(0j_ ze+o@EXHmUn-F{LW z1kvVgMkZ<(#7buj8vW*zsGwZh6sQbJH9k&=R6acuRdwA65dRgunu9YwaVJNk1+G?6 z!bl<`Gjq;!TD43`c%cnM@%mjN~(NJKD zk#_8LJy6X^I}tHqmb5_Y)1sSBqLtJ1e_ZcA&jhRIu!MCS-I_+@$LW7p90U(dG zrx#)r2X-R`=B2ya0=8IRLuvQpyAS?CN4Ezp{}Y#RR=V=2nd)q`A(irm{A_pzRX%|oJT@lrCz)Pqh!R-N5zekc z(K_kRh-weKwF#Ki0(J}>S)-CO3>|Hv!S2#!V6rtpvv}na_`g7V#3{^t3Y;byo?<6W zt(?A5!WCZ0=kf11V)x=?d}D)Op`mIGi9vy7S|s2zNl>8}A-CeQ9#Yvbyyf#2kyYpP zr*n7+1V;k|wSwQ_{|Fo3sZz$!)H-M>sDtI9Gntn!tcB}8~I?j5aitpk^KNLdmfF|I@hGe@oVmHSa_Z|ob? zbbKsARfK9EF>T%V>xF@!)E;+Hx?FImXG?oevBZA`AkAZQ7;R@u0fVev&fA>b8}$TY&qbBIlUpa#zGYQ6WR zoxWhokyz#P&OTX-=g+GlokXSKf1)B34)ZnOT17h%K@=+wI5piV4YRn?^T#yip_1iA z8F%N=UG1W_dybfQ|Iy)+)Ck`e|D3k+{o4-LznQrD=SFAj;Am?Du=?+Ib(NZi5{eqi zI~F)rx~jGSX*x%0sn7sNu0la>h>8S47y)=a+vhM=@o8Tg-d7VwYMWKpdaQ=n!W;ea ze&A1KWA|Oc9zqrO$r^D7*$0+&nmCN|=Z*&-)2`!ePyg-r=WFsW-yhq-NJ%MZ`^Z3o zyVGT{A*^tar(xaSgf^5l_dvv8+9=!xhGSL6qP}U zs@fM7(p3sgtvx2@ChfFiqH3ShSvHZ+qs*`62Qx8H2@qGAy(D2YQK~Z0xZg z-ux$G6PPLBhFGohf7)nkRJ(pcINB&wb7ncTola7Zfk?v0;%OtaaZ)B z+}pe%=~N1!J@B|SR{eqVb}*Wwe7tWnS=PW&8LwmO|NWKcmjT>bmLbs;Q*Aj!2uoe7w}=)HIB; zjz~6|$OhFuBW#kWlc-$83bjsV&;^kXk(CGqv5DxH@T15X0wRKfTuQU0IX64B`f+SQ zIV+Oc?7-mOL8FExwfUw46J)KrFz0CQ!0bq^({ZCG zMBS8Ne1kqRJ=5ZXJ8FSpl_t(S&2TgrX-M2QnX4YGZc318!C%PO?EK4=Mz|5+{=_NGxXm5gTa5O%i1>x~> zz{AJBTQ^LGS6T~k&S5?VX!N!hUm8946R-WPk0Xn~3lm#r4XNgPLQe2B59br{GMl5= z)Vmo?L3pxK^+dH^wDY7N5S4?*5GH!`^O`oF)AlgB^3#s{B1z#}3{VG_D8k4}xDJ?f z5^oO?J*FOLgNcpd!W?!2I7w0nc`@1uFzh@_Pzd+IM2fz3@Y@9&K={o|V#tbT;uf^4 z0G5?_nltcY$OuN_{s_M4{^U; zy3c8g=nt&&a6a)5dXxe`De(qSx*A@^;Pbc$s~BZZ&kge$(!{xBA%rW`Dv#Yf%$eee zABsLABPf!IdNcM>N1?^?**``Is^Celhni6Sz!lfpGK8xwqmW&N#P?D|bqY6t=}PS# z=74a+E%Kbd$=&D*?_WwHDK$ZLUbaR23bp}bGU4-Ip64^W?^7tcfRKi1jh;5OOFPno zPVG;W@>w{S+Zo`^mYilk;D$UN5z=GzzQ1Fg9ckjodxZIv3W05<^*x#2t&g{u+5xb{ zP$nm8W)6tKdOjuBq+xHNIJ3JxNC-UfMrtYIdTH)Q3%X>^W@Y zhKD~x+Jq-MAS<(2*d*cg%P89Sv*!%~iB&&SHvH|&7bp0?>w$Cs2Nzl;b5n``WdI^7UP^9V z03~=@AWY`h4P+t89Qj?Gd@Um(3YKzNBQ}XLT3oEU$S~WIAEsEd;Gt<#Qh;)y4Yl+7 zhmy060m_JZk;nC>=W%A+?alP|cK26?S@}4%yi$1;ATv<4JQS9=T|%AQilMYvciuAN zIa%7(DhCFy$9VK|gG{yK96D5RSC)DY&y<2hW88*0@%ftwHv+k!TQ*acgi@PcBMx4> z3r>)l414E6b4ERQ0H9j0am@zfTmKEedfgC%vxSakh%MAK2M1pgZ($q%0#Jyqa}(x* z+h(*DCn(z|gDkE<1S6Lphy6Lga(MXB|p0;JXc zP^ZlWs=>BB`0pR3IZclHs>LO8$F1^M=V6n_t4r@WA(_T=tVZ2v$oHlKZH?|>IA9pW^aS2JnF!F^M zm{_DmfpN5hwP~>Rq{6VRpBI(Fy3_2_Q$eH$@3I?+E3+h(Zi6IP0+sYm{UrXeo6KxH zai+*ZuUM+7=S{~R&nfeWp7-~2*Dqav#kpPpeja1rUrXJ!cu`^hj3~7Alq}sCQL1DNt3n2t*&1fmZ93^b_ z`m4389CIo2$gHBhf*Vs-%`zNpaYm7HlSqi<8>qx4E_0K#Xl}>^HK?E>BlW(8G6#Mp zO04*#Jn8n_vJOaE%zO7tPT-)llAOg+Si;0jT=;!!_Fe>NRA?>_gn#nDOy}=UJ7X5hRH#iv zvp-B4%M1m`XethkUU9i1@Yko1PAjrZ?N+8$kLRt)_AWzt*H}rx;bgFRK@b_cq-sFTVF9xJbc^d4>t7Si_TPt=aqMx4R9l$2Xn|b!Nb%YnX&A7Ed)z#iSE5De> z#!2N%n^00+$u$d$5;lJ=%ldTMT>p+*tXdJ*YR(~!bM38aQY_i#>jDwR^^q8vN;X@6 zyDT3~=zJ@_3ms}x3DL@F_+-r|daMKm9lDP7ouhJ96;!?3t@X7lR>}UM{72nK5>9s1 zUFPtql;u=sl2dPe%w@qZMHeS;_sNad(=bSJA z6t<+gZdgOM=h9BS$Hjy}yDf!*cEu6qqzZVwO`Mly@Gd%x-W?jw=NMGoPdK^Dje(Xk zrbs)|tE)HK?7x7o-H%1J37HFbIh*xH&zX~#@x|}XT9&%B8O>11)`<(}`rcGWAxIQV zPUf;1*5`8AywDlt*!6xMmS>|UDQz1sQ1h0+u9yG{UFDIW?2)eB$J-UHFU=6nGFuO> zFYGs*<=*WCce>7cU%-H6IrGASjm88)nm}MV_U2aLYmkbTY?}4c0-9_D$86jQ3(v_1 z(onOY0*ZkfWTq~y{8j0SLR(X`yj!DgNep%V!eT1*vYGigYPwE4XQ^}i2M*SqFXk+- zv(xV@+l?sjTG%)Lhgb3?c)7^K>Wf?A%Q({p6SOVxvu%OPS%IO}EwRV5?XZ+#9(BS; zx@sR`=G}pF{&b+Wr^Fc@oauO%Dfd*I{FWK&6Pixc{#L&G(k-E_sbYjQ&r5ZLTR7}T zxcSm9LM72GvXn;1V^WF2xd4DGLcNw~RF=UL)ADu|m4|7WiVntw32eJ3 z?}q(TCezAJnK|7IC!8&Z;f=n5feTCb#I7&@VU;DeQd;u>quL$RKNVq$f6joi4*C|R z1`I?d|Iq_C*gDdvDy>v`D0K5^E#A zE4rdJ%cYL#A3~FQlN)TYPhgF0#xpjVISX)};?!BwNMUEin^sq9%Cz zL2IL>$Q6~t%zdAjqKQ;@>{X71w8X|#hui~ zqi5Pf(p71B*Rgxr3)=DslL*ntjPA{N6OQA_>**v z4^t#{&>hDm4UA~QKex#1)k3!gU$`ii*!b>Fk<%n~{766*R3JY(z+=-}iVN&yo7r}& zbQXHC#%!HyS~AYsPA8bWYJKSLYscrp3VttrZcSiF!9c9f!t-R=v#E@^19l@o$@C2|}5B$xOJE%fr z{u}N*?-YK7Yd`?T&^+j93QwPIt9#E`0!Jo-19#!tyPYGG>FR1Mh9k}{@MP~Nx0!DD zPhHO!FpdJjbg@eMcZ9mjzHnH~f|MBnuN9g8C+`(?=k>6fv8e06^dH9P3NV_0o#?|q zKIo$R=a>bErc4e0+JOQpx8>gl8Wb%R03@gb2Q5uU1IIqaPchzSG#h~2XZ-0#$ONGOIJ7|JCkQ!C&R~CBx6686KTNl? z{`fdd()l{x7pYGc$|y%Bm!3d}P?g#{(&{jT*5F*8%Ncn(G)j0dZ>iC%x{lP#hJz$OC&P<8zx1iLHiRH#EQ93c}rE{mWA);Yw#VKbl$`+Y*SZLR82{xHJeojBsYSC2U zaEsG6*TF>`MkIOZhVL$GsD)Ov3*#@5Hg5@}C~`)6h&1(l6$V6_ra_^e6TimyTaB>X z)n_YGQW!F{o;!2hI;k02564XsLr-rhr3aYrYN=U5`iRdAoh&lz)5g(GBiWG|7jWdE z&9_kEHC(DKo-43hAqi#E$QCeee;boDrP?{!hiQm;Pt*7o8^H?wZvWgZBmvIiY z+M3f7cp9Qjv6>L}*pG8h{o~;au6F(Q*>Pn$=?nc_Nk6w)n+^7st4P>;flF7~(;@Ob z-@vowU1`6-22%h+sN1^4hTH_vy0cHe^!(K(l*Rd-XNdmk=iyw8nh^9Y1<7?`DETl& zAcB%Du60SXcaxH)0b{t6VtQX21&uymKqwY=+sFY6?YbPjZ<|HpGF9COtN|>g#ioi4 z&LfJXffOIM3n)Z+Er8V&vA`u0{Y4c51Bw|6DbFRf2h4J6flHCxLkejuCmVccz%qX* zy2uPNl9h+k{lz0*d|OVNX*Ay!gkAJ0(b(WC5c=ZaG7x)PP(?OT-jI`U12c|{=a}*i&|WF&td@pUk$i-8Wnc6`Q|rBnPc{AaPp)bU? z;k*j>_9q%?q>B!eFWpKl>a!%#kps1D=vR(V4<*9ue~`-XH}^cn^~J8}3p!m%@07rS ziiMUq6+W)ps(mn#wwhd|3D4DI4N5yiEffz(2ASEFncg{sW?r`u*=s@|q~To6t=JD) zqAL|yF2R}?4yBFLadTQOCk{o(=V&4b%-dNy>4fKI&_1Y6kR952%--J?q_Z4arG=`1 zD}moTp)*YK4IWkK(3eTE*kdDhjapRR&nFgYOoD=iO3pV?jV{z3zo$`s805KM1RT#wr?=oXxRt;l@X{pB zehde2aM#=~>R)&%D$_%X1^6PM#5L#YL#rrBZl{J;)9p1^@(;qG5Kxf?>&f+$TPFsz z6zIY>1&C23qy5|zY4vRe-y;kUyJBDhh3Fv$N%F?+fll;qA=jfioX0>FMe%!z5J1eE z@k+}*h9y+y6+TfAfk!m}%~BbOiq@Hzi6$@X{4S_l0mag~ZAE`iKU`qxyS|UlD(xGj zwckOr%q5ZI211S%k6$R}IdFDrP|o#z#}8?pH0dE@r_Es}vic-Rwx8J#Q9_a5K10Ie z8~3G~paZ`KVx-Ms-(}WE=+j@KUm+)$aUMXma{0$<^$*AQ*l7Wsm4c0t0pJyw!5{6; zf4Z!McuVV9S->k!v__@uPz70Ap70hi4O|X)@$v8x2A7&(xEOy!T8WlEnu3L2YK_(f zAy_lSgG-)ddo8koaOL`G>ws(OUAJ9_2TboDdjP4g5|@6kxoe!>PRJhnE_r}*+eCEr zdL$m(u4NKm&3h-Qb9c65^Kv>-EV5OE9fR}2>R#g!z2RfI$JiOv5VN^<*BGz_Tjx;p z&67`YOZymiPxdR{kVTBQ$4?FJonLb&E=qQF*R|@m7G0JNnwvy?S-+E}j75qV&_DSb z*X+ydPKO7d9o)EjjG2mfa`eur8aWB39Nm zE2pASJLkP{*tA60UN!mn`NVxnx7&T8AZH#rdzV{iX)EUdg?+X0^t|9c+;lVcdjEL9`2j8V_2P%kNGw*OJ8`z9 z@PZ&-q%Je5vkM62vVm}!}3F^%B)J&UVSm|gpX2N2B5KS zkf*p}n(QAuTBS0w3^rt)6csj%2swl_;b*?@<_2pcco4n_K?gSz>2j^iM@T_MV?}@B z`D}Oopfi=?=bO2adqpJUI`aR-fgc40mN>lo#Q;6$-VW?jI1^GR>(*Zm%6C$;!im9~ z#O?Amj0?wP*^tng=WNxURZ`f^eT~gTlmU3c1mH z!qHT0qrzT+)KTxS^Tx@jf!A%W9fyBif1~F9dCUSIMmAz}q5{ zo8h=-oEDZnKKG+e_|2IVg2H|pMTuv09398Dyca4c@EA^%;}i zQNy*u&^(Ap-**(6GAhj%D~}x^J}BRJF~#1#evs|e$NsbzN;kY%2iQWSGd?!zba{LL zb@y;16^7U%p&%iV6iUv6N2-R=f}=a&5bVmzF67fBFzxWoOD4l|v(A%?BhiZeOz!t3 z4iUf+)@_-;y<~mzYrR63XkJo%1U_c0xqu9s8GH}y!yZ}k@I{&Q{h_^KG_6eu_Gs7$-aH_vgtRAE8_#CETZYrTN zMJRR@tI-?*dfSHd+Ow8#445?pNuFdtiz}+}4pu^0dC}LJ(AFBl1+1jpoYg<8^6NhG`RqNijgpNfk%lsCz63NH9w1zX|rYzyh z-0CE!c$^3Mq0NK`iIEkg3hv6sI-G)iS{&5YY!q$YFYCphs|jgAf;?xAyZqPtyjS~q ziiWHw#JoLkUHDJ~{s$jF?r$B3luhZ=%1w9`+du}TmygSeLVV)BNn@~CZioBSeVfEc zX0gfKu5VClY(y%ges#%gm|HZvcFDqU?CN0Qs*zKa)QCc54T>;L&|Ohq=Q7M=dP!~Q zU;+88gW4}D@_{jD+xc8aoqb*8voM-c`K&nfQoRS(QIrdiOAerr-ZtCOD%%CBRG|+U zAk?H7{{_m}tcKo3SMRIVjG{Rh0a@8yq6=H@>#|OWUXjFm6e5i2(8|r7GDP9E5CKt& zWm;P6N_uv$D3hc;+ot;6)f@r8xuS#I1JMIl3-gCN+1ETaSaaSE&^jvT_Mnyu?s1ES zNa*c^$>ra_zjz);CSH7@Omj=#P}i=Ekx_jIS0jl^92q6OS`F^R#dq$i+LIP@lv`_a zUAmhnU@$m2)as!R_X7J(H+7orFg?cFw)`nJ#rII~m^HOmb ztp!O1r;1XABFBvyh{fNb=A(i7>PluBs7jPdO;*jJ=jyE$N?PJAivU;osUEZd3TAN> zDMu8c%9ctaGL)6jZeuAGn4#i%O2q~9Qmc8x6(*{&1?Gu-lm=nujcSJ!M9KEEmyIhF znO-G0z=cO|7lO5Gpv&k0Ds&scw1yW;VLAunv%5A=QM%U|&YOGzTCV6btD>Et@;)G- z8a(^_$M>AAm-(A-dQoDV-75J860YVLC#YQw=g@xN2We?GkyBL+eHSRF=bzJTo&$#? zJgaczv|GKS>h!5YIOxCnzBxp@Yj*5IRqHLEi;YK}phD-vI7;GUyL1q&eMI-CghM2w zMx)Su$0yy6^j7=o1Uil|9x~B9$~|={YTcWC>a+;;`mi4J}4_O1{tFuN%G?_cOdM+p*bAe8aS+*6BEW}KZlWvz!Aon^`tja6zq zcGy$Unp*{pGJg2e3}8BsFjF(=W%79^C-Zm7DteLoa>mJ#=!#AjJ7)|h@Ko{%@`Xy2 z#sMjv=BGY6CrWYjQ`6XHW#jiH2v4bcZl-sk`z3*8YJqwTWAtP&sz0cQW`qRCviXDz z60fE$5qb&HomawBM=0f_vvClS&FSHgI*|r<2xOes5rR3Y8cx%7kD6-dtb`$YmWQs$ z6k+>*|FBJsxF_3z!9^NAZ_a7AcFJ2VQePHR*M#7VDaB^or)I3DMrgQj-1|-glw=K+ zp`hd&U_RaX%DS_!LAbP9;VSNOfXGu8x`ezn0S-UD0g^J-%IXHOD3wYbAY!_;8(BLT z1(Bauy|BNA_YyNQCE8oYy#9Bx3LY>57wSwuBne>=JdF6F7x#{zzGj1tBGvn@4W-hn&#(}H$qiS>f zPNz0>)(L7jugjY=S*ihWpQT&#s}p^e722%Wqyf;rz51vDq&TjO?5F|en9H~>aa55i z(UD!<7UP*ngL2zEFv<OASeGmz@4E25$G69kiu!4utf(d$h5X2GTlXijn!7S@Kei z!{k*BZQOHCziUuemymRR&K6yLqhs8#ln{CfX%a>W>8lLX5-_j7u6fBI^B5NbK!E!% zf`H-g%&%oVM~BQE7-3&fT^W8&z%%3>Z%JgUPil-LA4`(^Gn{~^-`^R$f?P<8qTm?h z6H*&pAF=&54_=xDg6JEx-tp>E=TPS%?i!#+dV%ilH3L-#O@J(yP zcH3?BTyv<9mdb^igQP&9ZuNs&$Dai)@qCc!4x6{ueaiwNd44Z_#j0EDf??G1!j9HB zou0Io%t`X(#+#EcG>mNDs)qQNDl+3zsMOrO^Y}(L6E`J%q;BU1;`k1eamDbR$C!a! zaU~(7-mWtH;A2$2j<^w`BrLH+ixExZ?*T`nlhu?Ek(caPeV(aEVsH%Tqx<4WeROOY-@=p+XH?4XjI}hw{S;f zZz)$d1Tl|+epY5)h$AkyDp96oaNq;kV zzS<{xSVe$g#KgpuHceizQSVC+WW=0A96vTM81*AM$B4Qu&w5Z!o$~bqKHtU3n!99O zf^AJfDQMc%H7gdNEu6@0QyKuJLfbf}py?~!g+wiDhRh3fNmkPAL+lY${m3{b zJBJSZ?jQqa_+hq8T--3HXuN}u5%F8pvLnCT9d=aF3?6)cqBy45_GS@w`4y4QC$6~# z&oh#o84UM)x7XMpS9|NLR@%UGR5jk2zNg(cof8G4Gf@o6jl6=k=6YZ!540rKq$I50 z-`nA~!z3ca_RqUrnx^)pQ?7DPRN|TEM++F_<%qQhAS6Bh>W#dtLF@Ve2vPqR5yJR4 zLjKbmB{oqOi1P^w!3+9R(r#{U+S2Mvx~`cQlZ)!}6ZONHv?ZqglB!hk{S@y4j}h#8 z%?oz}3n5|hwxwy~Tcq*W(9EXLtX%GdeS%%2nmhC4z5f#*$Uv=Q4`&D^X zpQa~CcTLX*S>K1xGu>{Shd7u^KnT=;!(9J(Zl(IF2*qJ5@sp2qzQI7n?Nr@DBUAlw z<4APaPsIvSYudCBdrVMbZ{b( zq&MGMPGk*v2xL@l`XqD-@0%?RFr+ZbZH=1+&$CWq6i)R@-@K zEUW;Js;0bHu1T)BFzBiWlFpI_Nx}eWm>K*c z{)MB-<8!_L)`1^Xgm%FVJ;q(_5LnW2{o(!rQqSS@S~Oi?YGn=0d(&59jelQYrc+v3 zo~i5c3eD(dZoc;$c~K>qvg|j=*)1p>snmn)WF_|AEJKDXLoDF>0NvYPJyLpO7JMck z_{sjo;Ai?f_yGm=2l6NOR%-+~Faio6JOanJ#wEuNg7K}lU%X^l}zrir4_xRu7I`W`K=G*Z2w(NwPDL`7<% zmZDW7Ff)u#YSfNx&U-DS;kZJ(2#0~vcNhrLqN0hRA%=|UA-%8^7 zbEb8RQl7%a+;0ox#M?HSUt3*ILuhLG`sXIg5Slq>zw<2DmcBsf?Q>2mfg!d ze=g?dXS$<=)xVxD-M%H2=U#1a{X(DILq$bA7sGw5P9CzPB3|1!jI~P^CQnheOAd(b z`;Kgv+@}tE>zvqUP!12xe%!@)5OD8UM0sHvHUyUOjjt0mkn7hfU(;9{p{}q$DFc3> zC=3uuy=@I*4Qy5VkIz`3!04els7KsdeK?B@Jy&b}Y*{v+R`!tBqU>I#F4joA0E-hW zNskha_|k#}r1+*Oy0)f97Cvb`&j2}fV$x|IovZ3uL%0EpFnR(i#uC!+%aeM@D}Oop zw9#A={oBFM{CDsJoY?>dxPfbl@&$^2WqxYV$Jvfh`js(@;+@23cnCOS%OQD%#t}z} zE1lyoc)&o+^BfjjM;Sr_-|ZZm!p?ZedFT#!eiwCXz4evMIi*h)mLIkSI}qY!;D+XF z3BcN!4*=j=X@9Vkudm=7L3OtB-+cs&WG`>6Ky;=2NI#15g@baV;TbCDL-M zNt)ThoYbEamQIS8Af;6bI!#ndj}8j-T;AW6DeRP1bj8Pb#!`bdf2$N{sUT(KdW7fdccJ} zDc3TTDFGnCBFDGuU2DXmm zv9xQu_d9QoTISq_N>@9>q`G<`X}1vns+hCNk2j&+sVi00%GDP3*8LzEc3;Nsce7FXLJC=x|1$8|92{I-TmLG z;O5U%U{DR13MBrT3f#Xs)kIsN&54a0AST$WPa0s#1EzvWgKv~B|BmNWhIjBNZ5371jW3B6Yp>0L8Ltrv6Kyl^;Zbb1V4JzXrK^VZ+VjUt#Mz+eG(-g+_H^pd2YrSxqWQ*he}_GfCdmPy<+I z_C7&Y)JjTcdv^Xc72K{Ik5erfBIu`>iYt*$FqIb;Ekx>)O+kB2;ZN3>do2bfjZb~)>$IZO z2s7AIb5_1yzo%l!1}QRUJTdbY%iDq%lgWhq9I-R~ao?TCau3a~x%6Nk<9V*eX+}B~ zfc}*|Ue==u53WXAwhwdd?bF_*YQnA^!W-b8%7fD9h5XDj4G1Hr-O z@Z4|+j5r3Xk>prgjlp_4|cvj)a>7 zlmdh!VxumOFQ09fXE@;7SOwa6nm3;vrV<|e45%qDr(S@rNJ(g~4fHp?dN&MJ;bI=p zMYdwM6ji~{zP;Q{G9R&)@@=wT>JV`JZSs&hE|hcZkU+U8`gN_B$$AuKhLz0v9I6a# zs}w|lEAsX7secFVWr)98OlBkjy^yJ>Zf`1l8_~l|0@Ae1;Uy?2*9XdGUoso8hDq{D z8a4&0Otz);&IP&sj{0(1_oF^}7>r5HIQGc+=n2I5Ipg?wMTL}jQ8iCrak)4tKAzWg zb)Ej>z)3JWIai$;5$W>e9>?H+c5g$`u7W)Pe5n45_+b4Xd|1!3pnFPs{dQenG$*$( zpo3h;7tz>dvrR7tKi=)%mGu#io2IDe?ag3^)v}YPQK_+Rc(2PPI0rr(JHwK+1DYj~ zOCY3L@qF)`dOfXqU*h$8gXkWBgP~&8WuE@28=%{B!9(0Eg8`)!FUuQ2R=`KpC-{;p zB5?6cfx_3TZxAd*D8Jtl3WZ57Tykd=B`0k&wO<4y^DQ)hz=SI{GtE_;WOU!N8{iD9 zzwU7$cLLcXBm=^KFP|68k1JSn1srwVf0%iCkBq|C?c0qu*bRJ9^i^drLqR5=+s-lX z2ZfLkVr{b6(j`4H3L}KlPv5%eq4h&wdZCVbQY0j964g%D$)SA@fk6ErkaNDAI{8Zz zA;)3~t#N4mVz9X!61Gq2<*dltSlvA($9VQ2wddK8p*&CRlNcKCGgJCsnKFmZ+ev&Z zl%%U8#x1Aqk?C2v-rOv5LBF)IO_7{W%cmnL!L71nxSZ$VLsW;Kv3b=jC zLZw-66S5uKp;E^+auaiFpcZ~RWA&)!UYn!CePDeSw9ye~WxRA{>GU`$8o{?!n>9eX z{dwBv3HI%&ZsRg5{pPkoNy6^6p2Ftxdaj@3g2fic2^`hv-AQ@Qoi1f^oSS=gf9yCqdtu5> zYgmjW?Ks7@S%1CEc2Y796Qozv+?do@r_~PnvI(;~7`4;Onx{LI9XM)p_onBi#qky0 z-Wph^%g04wv%BU*7C~TQElh|1w6{{>I3s)f^rC$2iNZLx6+9n=xJXk5Lvx z(h{UPQ~5Zy+~RH`0JHS;y}l6Hp(MT#sU795k0jdpi*_LE54Num`BH1}r27}{k1LNG zE6)#mw<=$dA0^n-e3ki2{7ro!IzGa6H}VtDTPpj|%^8-As0_!AVoqK8)w1X(*_HGL zL2iFx9dOA0#6_@3ZZsE`yqdP>AKUZ!&K1xEtjB6G7scNrmDXl;q{`!qx9A z_Bvbut<=M|5p%M=zsGMr|Gn7`Tpa|^UU8G$^w>;Kkkg*`p=pgo68QRl;X5Z2tw`RC z@Tj(31h7gYhl!ElU^h5EjYx2VHzTLyZ?Uz3YA{MLc9;ju=`+>Ye~jco4(}Z4_xaNA z!i&^aWn9hg(LQ=Yls}SbPvB0^{j7|oCN!#=qS!G5IxD)a;JQDL+nm85pX99@U}>H| zXW9#DJki7SU(7`SLq%!nwFyc*y;2YP`fx`YO1eme?_6^R?d5NA+C9WXy9W6|!f=Ml zTmB|CXi*B0fmIx; z$KA)-b3MeqVHevFJ~>Q!CFg-J3``6#@*@che7QgwM(GOQ$)iB`)Vd2$37RgtaUmH} zN+knr4T*|CVj0Ax%=iz2dTo z^^T365B7qZBhHH)F5pj@jdRZGZoGBwwMprhPp7n8)QdIe`j^Yjv}3OkGYPL*0kkph z_Mo+hdlxu7{kot>+ak41%Wq9#r^{x6=QLKmr@IQ!t<3=$G%Qy}XjwbBJ+Wq=nUt;A z(k6Cp3UHw>&lZByYm{TT@^kJyv}Cl z7Xq4%=G!ymm3ZY^M~^Z;9+$3XD67GWmf2K^-wP5v*ImUV*H?M?p01Et;T#Rzz49@{ra{tFx?EfV3 z`0xHALBY~`o(415&`{#2A;u|Z+^J=+&)X%^FVIdNPdpE=KcCo+_JX5Odop#8 zF}@b{s!z174kijwNE2q-8tkc-GSyKig@~JuH^hh=%kc~4Ljd*E?=Jot1swTc4y~mz z=%o-c5N0%En=3gJ_f3l(n(Wt~K@EwAh$s*h;!-Em)I9nBnllw|63FfoI;q<*+AFYGhsOP7bZ z%~`_c;*PmiC-l-wM?`x)w??xoY?$^kPUP*KR;kE-cc5#0-Bkr-7Uc*Y`$ZumO=Cq~ zSG&d$A!+jq(v|CBmr_fo#P9c=ZpCm~_n<0TqdA)ng+tQjJIZ1Gh53L>*}Ym`a7*p` zLiB*ga}6MC4Y6rAOqY;H@2Of{2&EfX*V_j8?NPY3C?L3T6cBS_x2`r?n|V( zGup*MPL|T(xgNiQ2~$gTVpWJl7AG~bpiabg)imEv<$#xC_H9=>?ww0j%9Fiqla-Uy zs*lvEOG5`V_r?CN&Izg(yL2=vs|h3@-3ufK)ryu$lr^*6YMNDost~K)T!O%8HWfZ$ zx-eAUtTqs=;KrQyVBGDQMSeTO4hK2ZI`f5mX z?kevtc8nnr;hA+)!4f>}Zu;tgajp0CF2YV)H9SbdFN}7!v_PyjaA=evt*@{5ye*E3 zhq?EkWXU$zS)W_D`&&$~-GW@d(sEfXjZCt;3{51~rB`uxwrvVA)qMVC+(3CGzyB{w zJQ)60;$b~643Kyrx@%VMBleo-R<}ye|Ue8%{PS2i>Ko&sjP0Sq?j0Irfj_5_Pz3cp?jO|Z9y$ZRi{oTWix-w zL^_iztyk8Iwwe4cofkdY|A=g43qMM<%MmJwZ!{V^48zYWwigd32~KQqpg@ZpkD+q> zEmKBm7DSSHf$%OFPZ(ekVUq}sL&`6oBz^%(qC!znma-d8v1Q^r+Z~lcNeq)u>Z~{v zQE;sb5=E9LX-DI{EgTc7FLr3AsdCF^s9x7CVN}|z%Yn!MopR-|m6v{;nlaYK6*m(e%D@*W=|Yv)+UuSq(*O_skC2=ZuJN|@7^c@ zWxRH`c5$9r%lyq_iAUD%>T`ah9T?bM?=qR5_xN*ZQE1|9>iXwP*Sk^SCvh41y9<~l zmE#qP)zWMRY^838UzKeW&t@4~Tg2&danb~fRj=uu#@%XjKn2UTbk3|Smo+~nke`JcZh z0}diJM#H83Ar!q+GNg^lEy9V)f7dYZYoLl^k;K3=ceQX&45Ki!#MhNv-4DAxUY5|UzVbaoHQfDV z=fnDG%SrHcSEyCuPvUkb@!uKG7Mcp1uE1ON2~qAzOd#MET~M_f#ZK=q%eASKZ|%hn zlxQCrZ|q+$$I1dA&S%=25D-7Qy-1X9mXOecJG71jZA14(kridb(e+dbetW;b>O37Ff33v}1SF zw1auppa<1y)`w=3)-68Uo&i;fK5+omUexAtZ_h(Aje#trO;Tr3GmPfE4T)RT#mH98 z1V4RLu_tMx-QfYA~N zfn>4S1k1_f5&d^ZlFhxYwe{XOlx&yZ@(S@#x0lDncZ*Puz{Tz5?hHz)`~Zup9v9Wu zzqawBy+|$afagHd|03M}N3UXTjm?bQVHF2R5z|uOpyCn&5a(8Lbd5t%^n9YYyz|+2 z1OycPMAOxr7HF2nWg9ESZyL@82rz9=@U5BqAL}mtdZOggQsGNCVk~7tc3>7$E3oW0u#QP%w#*sursl;5P~p zL*Eli70sYCVQ0ZG2^AHACiY*AS0hX|34flKAW`s1nFjCd0Wk=0@%~xRk&hvbR9G&~ z+?0rsqL(Ra!bCc_(=R7cEyGX(Y?rX2$Ptj>2yMP2#-Glx+1$!OVEz!l%_K_bk}X_L zKS&&CL({MXk|x^(!2&};ujiadmqBLCu;-A9LC7GUVb7o>EtkSB?msk-kQF2N^8!Kh z$wD)-Y^u+}*)=$uGa1E2iEG^CSx*k7&gBPmSdYCbe)C<_tqlhaC5SoifryKHvP#sR z1=lKdnZDvU{9R$4+}pdo9IPki?^`qZ{^xe0YXuaq3Xl#wX`Ix7vtn>C>r9kZK62kR zT0YKOo!&JQ!OaZmK<52>v@0p40er_o0&f6W7#$(pkw)8%y5Nk6W>m3efxAVWNf;b? zGm`6k)yKeeUPX$a8JUgMBMwrA(2mlh4q`201KN|YshxL2L@RQgv;g=B#}}}bW1o!| z&W@$m+%Bipi8GK6xAzW4air-cSFjcGC$CehO};OlOKULacln=Q4K!vmZWvL*pBXBQ z9vS61cYkpB3vAOnt>IA)Y||$KwjHABlOk};hT1V0XY0-(WHmNW7-#F z1J)C3>N#bk0!uRI(p=&ubnna|IK4tWrf*F0?5;iD7ig~MwlNuiD-R5W(Vjq;OGmTC z9{4-yTQvyI)04~77n%U}Za<{v)-Ko1HSTZiP2VngfPYpuzwG|CAVr=! zbE5%(ar0jUHsu`LD$sn)5RmN=R3?7aQ97L3F=_= zX|o{Ak0}$due|>AZx{#fe*jbL=kOH28*k9ruj1+x>ZS#z0bKxQ3`O;)DrspNQ zl5Dil#59cKE~M-dY}f0uy1kI#dq;UGgRnv$Cku=x(O$mdS#v#)|zq27YuoM40;2K=K*)GWwGm9T0 zXVnDFN2H38ob$(uqmYP@Dee^p_2Sn%Wgo!gq$WN#dQWN$=sgjpa2}a z|K5Bzke{xo6Igb42hZokMtf80oIG{gmrHRF=8cZhw^IDW=DBKn$3k8id@*Z(=npDo z47f4iMoZDr>_9qJ+_Ak_IVpm8p>KtlsdwGwVxI&Db--F4`%1psG4ay$_N*NSSj~d; zESgVGzQtW#u*W!=%*jc)?4h{lm7)($GJ(KbbVAgwG&`N5EXy&c3<{~evgq_Xg&~2= z*z#~w;JSA~Pt@I8f~XK430GqR0C_1`joZ_Ppebb2(6rUeH8E!UR-7s`daeB#!ox{l z>@@)As&oH1)tb_=?Nrs}C2bD$;&>Ut1N_-^ali@QZSCsUvjQlNX4J>Uj~u8GuWr@{ z&(@{icA_|^1NULuL7PsF;$Yjs(r}!ytd`~~T2C8xFfEogq_M1itOrJAZw01RuLZ(9 zmBZlm;ebdKK08%5|6 z4!L)ep&;sM^+jUZM@FX*PM3K6>qUpRIhZ+G>xM%2>*>{p9loCFo-WG!GPmh338_j5 zT9%!MN%HDf+U>!fiwjIw*f%uMCZ}og=`8IVc&QpV0a^hKD9WWYNy_RDh$OvznLq8Q z0N-N)69AH^|K5w2{~|I$!Q6UI9G+VPl7-+0#HE`{B9Il-a$DmgpNnWjC>aGD1ccnR zY2BuO_BQ@d$+k`pns0GGTr=;v+tph|sd3_xtrwNyd@uJuJ`#si|&{rOJJTMO? zckBn-agi`xo$4oFZy`xTNeBW{WQ-(sylW8#f;;x8esVarMXYy=crOo>S&B4?^SMbUl2lsYyU zvM9rHLh{^U9C``lB1tk|V5b+Cu67Z++ie^^UBt>}$yl}t3sTfsBAg4+Vnw+z`;$)W z0&zwOIupn;iC0OqmkMf2`d?e4beXDYP{rk<1O|()t?YnnXSS^XB`O-5)mw1n68rA{gPS%v6MtAOU@YGWmtFVV3QNoVD`DvTADlnRG zAmG<+SLvM)oi21ze|VODtz+}m9qNGSf^}|>c%HCKU$Zz*!!JnywzEUZZ{Sb>upyhv zg98)$`>4;p2~z+z#0$WNe6^lvJ%#8W!ohVqH9X8{KXe@1&@ATeq`YKE{jXmy(rmu$ z2w-aa=LawUC)V)4vbF?80BZ;!L$HBZh8p}Sr)TB0`M;2UZQr~fvl8%&S18Sgq(($E z>o4-SwLQ8b$fC{tEPbC9h?vKl##3@Q$M@+E@sDwI$Q*$gaY)HY zKP8TNtEL*SB>zKpD)PyBAB(e5B!ZM9VBaZEE>k7li7|{>j3C30JhLMe>2Oq?IlAGJ`E&O|o}i3$B2ht^!|^i0xr^Ld9yn# z$)9({3*X%E7ZqUjrTN$2z&+bPjBOtj!`5+P<@z26B_Eq;$_p<1bhr8{_lW5xzNZR_ z$e-;{*O{|z+n`=7a}mCR@uaUB!VwuhwH)sy#EuDe{l1Bgr4#JB2hgnBO7bNf5PRup z_Bq$g=*5iPzD_kCLb+!|(d|r?d*8-b_w{+Tw0ZOj^W0@!KP}?FzR)ym#ezA6-op9C zH0KE-2&q?QJq_OY2o{&wUTb3+{&bv|!IEv+(DG<|MD%EH`MPlERH=MMpf~U)As$Ui zpa*rf4SDGXKy!i`%OzOv1w)E_`<;@t#dvSU??iRGyvQ_o`RwX3HmmU#pDB0VUufV` z9uLus57W{eUeDOF;qr3Qi1V1kV1#mn(gk-#W`#ybWb)+$S@XfW*iuTz)XCa9q=5rV z$0da5H=>iTzi;PJ=fI#Lvi-Fh-g$@kBH!LR+rEFt-i@j5xpy(w#wpKKBPVLhZ--sk z%r~Mxth3nZzA9Zr5hpA~t|ABbhy`(c zh>dao2pZ11p?1XHdW7CWG?#DLaC|{qe?~VejQ{dPHs3%PBcjU*s+kBF>LR&DytA_L zXW;ia*vSu-C1mt|T@AolqeoP6+8j|OraClt>)F*E~mG#?HL z<{*2#YT7(R^6;M(u6=9~-vePUUiQAO^}L4UpxKuw2JW>rraStiPaV0sfeD`N!g)q( zpP0Zj<6S9WZS6Q-o86*|EFs zcC8R6n(ERF*d#c>O?7;kQds#+CXluqPS<(pUXQu%PQLw4IoZBl)vvEuJwg0o2NKC0 zyY1^m${gl_+mB0T77;!HdQCDoeAg|!$)A93Tz_wb=bCgjcD@ib`#)?#7X-qvS z9rZz)LIaBvrE?bbq_a(MuC)$z_7CMEo`c|pb!7f1o>T{OlfDvU`4*|Vq&hw9kx~~6 zmSU9XTQNEcvb3{#vGpIMmMO$>t!Av@LA0=As5pfIxC8pKy<)ua{FbF_?bLb{+T*EY z-R@c$l**$~xq24#vRe2Q0Yd?|$IEwQ%6FYU+f&f)NhZ?c+>vRs@iAoaQWr_ip=JTB zWl4K9GN?2yDJ-##E)iO%+&gM8v?Z82bVV@#3(&O90@=LuU%q-nBlQ?8=s5X9PQR5n;hJCUeFJodgf(z4Q~pIx4d#71 z955c|c%WB5ql$hn_4a8JGJ3V_@6?4>3;68qM1(rRFhY1UG?J+z_7=Nw&_m%(?6vSu zefZe=88wfzpuTprab2ZzLN5j`bfTdiOnU?z>AGBBXI#S`aiL0s%XSU=mQ z%tuT?@c_UfL1VsL%<**VTNK>%Z;YGjc4HrbZ*0^xsQa5yqVYMEF0EUc^&l*PuQT;( zW39`r`*_(y-dn-wXeO(+H@^A;$K<~yNdBZJ97H%{|8J_9>mgD z|Gi-PyHoG4_rt(U?>~YGJrn#?|H^A=P3bcaL_Dq151A5_oW%9jr$w*_8^dnJsI-4j^q>uz6q2PMhba?|Ns-G)sL+x8z|>K~ zpd)mVK^p3l?wcZWy~Sebh*_ ziOiZ9I{!l2NPcg8k`XaaPvK3&~?tTplti3#Gy{wmtFb==Wa z;e_*ew)YFby9%t}=rizzStr;UDuYXtPa_yR!9&DHHmM(h{L%@WQ@74Ec=i`i? z+Y5+C|Muzkbi@`kdWA=lV)>J~ZT*$iY{$;-Y^0G>XdqR=cSuyaIbj-dEKV?X{j6lv zsM+*!V7I9c9BY{?sZnkSEZ-*3>$^a#3UsT9C<(-SOgC!X65OumGv~xrT>oFGiVa9r zaGkpvWU>yeq@Mvx+DGdO>weCrA^S_1HBqrB;~Ov6YhQ;#wKjzM58gIs;qy5ZDl5j3 zn-9YmGj}pNMfEne*3aX)mY)&Y+_LSmvbf?p%{}-7pUn-1n(gbDvbv5mrn2;`1-c46 z2=p`G{~8ba&}L!y0D|lIzc26m_ZGhkg+Kc>$l&x-)l)Epn4!a<^_Lsxt~A16vYJr9 zq(nr>-kXB(S)8@-DlP|f$q)?kzm97dl`lzy%RM#`l6IkG7O9(_hg*XORF-6HL74tSO ziHx}sEV0ukpLSiGrsJ_v#sS;I=iR2@@XOekBJHPdMG@$6S%+rSDC-_=dvu29qwH)+ zi!5>5N>2vU^Q=J{36|<6rl&a$TY7h(@+G2;%o@==W-Y<%s#$Qo%B*$gYfFfNY>28iGMd;0y|_DJ5Q!F*9dKblr2s=IClLM@82^@X4eb^H zIz}|5h0N97*~MKdpWSuU2t9h{G>*0y{p`Dm)vXYjW(dt9ZiCzc8Vx5KL}0)h@I*m{ z4nT{vyyObdL3Td^SM^@VlR1E19R$B565ZnOS>NOq#0a4qSl1oyh`~~BV#)h}9y}b{^6jkquZ7jfT%HHbKv0PP z_krTyoBPfb{!9%)>NNe^E{)~Qb=hWb6w}#G_W2}P;JD~3vn^jrdY!y`GkDGr*0fNH z)GpYg(%=dZ6u7{-As!cC@v6$@@TmGq=#!LZe6Jd;9&9Ok5e(&1FQKqt47s(2d_qM?$q2Z4Ep0>{X?a-zw}m{ax^4wtnF(H9;c?mVa2e%F zk#SjydZdpgUh0SgGuUAZ<%0d({9Oq7Vk2}#na+muc$tACbxi(Q3aO1ua%%~njA)&! zv`Tr~Mx1y+X{taqR+ou5`#xEK-CD7Ol!yM7Kt9PmSjh48?_5zBi^<>(;VC$nL!q{z zD!_h7Xu!%DXJ?#ysp3zh*Q#qj=DXFLRR`qXrQ49%r{;Anq02x0UP2tvtsb`B9pTJA3(7x_}C9LE(2^DM5$LQ;KEg^LvO>ar;{^tH#l!qX>lL8vP1&;o+uDy(?L8!NnwUQDNe|18q53Z`IJH!0C z*#}lBva}wC3W?b{_)C(U9{URMq5H5KYx;cjT4&rbD{d@-_~fu$Bn4@s@d{n$#~Hsr3H5o=P}t>rY_%X0~=_W+PH{ z(b8*js}_oDu3HbCE5jN6N=5Q>oFp(S4+1A$S1;-N-Lv%!KleRjrk*a}EH69!?>6TW zV>>*LH9jeu#sq)CJk-@PGR_MY$HdgtGBGX>HyC)(P9cGZE*oZ*p$fUHEk zId4?3a4FvSlNh_x<61sAN&Qv5;X>98NDB<6dn}cc;Se!DO_G`TlpCsxrckr65u6RO zwVAnebk&RrH%Z>Qx3tN;NwKcDCbDoJN?acA+d->RN!!^;bQOIXK1*VDKTk&&GhG+a zsOlWMnM6Qee!g;YmxiYgV;uXSHi!wQE7OYhtx)eNONL#|8_q zn0DKE&EoHf`fy9)8+`T}boLg6_Zo!v7L@TCWbU8&4!d*DU^=uBV#hneW_eGyA1jcz zzpf3?>+nQPL6mGIIvy+Zy0CJo@brttto=nQs1o&x8wI>Fq1V{@sby~1ojI%uyV7)? zn`JA#Z;$3ic`DET-Lo;g5!i*o-PfN+X<)ibk7k*{JtP(x?jm2ob)$oJl(uY?ztDds z*Rd&<5zh5}*~%m_{8qkWrawc@j`PL>4Ga7G2Ir)5w?ce z4fLa$(9}k0DO3<^pq7UrD~ryf>V{SJbLM9)E1VO%quy@U6!xVc>hjv1{J*^jm;=}# zN4Ic?ac>gzpLi-FI}UgUhHd{M-VC4%(2Axjp9wDyD-VA_F{J2{@X30FypiA4?QiUN z>%Z?u=#TFA+ocpiVRT}1f@6`xCq_iwqC`Y7;Mn~3fJQ`IMItEW6ZXh_gR)!DKNJ>= zmP0Hk?Gy3HeuJ}H-+vS~g=R?HCFK+T$a<6fX*1*sJdS#&z5gMM2z)=dOYxQYEBV!` z7}kvZIjM>mQf-D5TBlgZFsg4qA*tkkIOvQbJaS;afl1i1q+XaVm?xD(qJM*Ko%EAG z-*WoMaO`K^_^GuoE0kHkcH@#8TR{4?*TKX$iW>FL+$;GSF6Vg_&wMK38W`u>eID@iIN8yRPG3fxK;SM#$+nT(YCbTT4rdba(7jmJ}LLexTz_gBFlU*tct z5PPd{A?B&Pe|>@twe9PBe9#Ey>uscP@%H49KPk28fK5Fq*2ook|Jv$vn(Oq7`P~hV zceOXvI2dVH=q38?8Rg0ASTf~QQX$^hHu4Eh_Q}|EQA;pH*6p2L`nI!}V8MjE88Y>F z9X~6B^hzK1;esrWnsG5tdjQ&K)Tr&=hQfR^0IV*b0xjMH6fB(UA0R?oq{+?GT={xjq1mJ`P8TV`^HkVrm(b2P5G0ewO{ zoTm@Q%iq%!m*QBG{H~GSBLiTB?$U^igm-bMmMxycqOmQoSP!1d3{|rOeT1{Sl&zlq zqSY-UjD+`bD4GYm21vfU^jHsHmdUDC2TTc_cR?91AL6jM1_t&BQD+~B7!hOJ)+B)< z6PDDk!aL!Ck5}Vqu>NYE3GOMqIq2E>0@^!Mu!?h&8jq2^Yz=h{{_377?lHYv=-CAv z=-HYriA^Fq5W($MbQpd=09+U3!9;ZUd6gQE!M$J&Ai;*T{8DtXFLc47R#bGaVmpMZ zxxLjGghg3p*LcB_R_5)m8av9Xw81&F>#}rb?`**@R*EW*S-qwWDZNt|m&I9C*WSTH z11X&C#+ju25Hr790eTZjf!W4l{}SSDj_Q0bf6j# zZ8pl?q|Uk$y5Rp%;2DCMLox7`D<|qdE#qYPr)8XfDDXckjYKD1{TY@W>W0EIFJ$id zw!4ms@)!_QDJ_ zLw4@W#UtlMaO>!DHmAGG2O@6hnYsujn+{j(C^teUK8kxmnR z-+TqakliBup#$NW#6}?}nbb;5DdDnwQO>bWUn9J_ZB0j8t?EeX=JNb)+|BA+*#r=F4_#^O?&M*~r-_9><0 zsX-`|@>18XZPmyo>kEPGir+iBd1)0{vJ0pfh$$#J$Q~#qxERDbDl?5ygpslB*VRby zxnGM1CzmaV<`y&Ua%Jn1+ouXIbal=SKQo<$E@Y?C^e=-A)?|qM7xgEIQU?sGstE8r zn%1VYAIzyQkr?TAI1kB#nD;qoV92Co!@kHvixi^YA`=!bVEwIGRXK@#6L9W$sW zB@L$tP#USi{eDDNPu$YCMWUGY0Y&<{L+i5-bA`b?PG%(j1ftyfc^AE4)Pr1yKPHFN zE2f|DYG_T%Hp|q)F`^;Q56mZz851n+d(J1H3!Gm$HzfyX>yU)tVhK~;{YkTfqQO4B zWp%D0L$5D8OngK&H(#UOYd^lG_52Jo)EgqYdGqZ*g}CfQ3Y#(L-#{cGCO}RELHQk~ z@U7Nw?h)aStJ1Uy94Y~`HSd4S)+qnkRsY(h{dbn8Ve5isj_%ha-8NE(QG$+llOR%S zosP_?V-=ZFM9!fyR;Wc&(juSg%CZr3j!C`w3F8XZKv-Nk?L^a@-1t0d7fa|d_I1~D z(!s$#vB8XW>gAGWs3H?U; zSN;sAERNEh(k&9@M$d^oh=)lDm;}zsu9`nL#i|!r9U9+MsNfz?(9S+zU$~<)l8Dg z(;cdD=Tq#d1&|-jq)k%xp`G9euw*E~vlWJ5h;CsLViT-jE})%Ao0AsCC>vPsHZ2^c zygu2uoP)ta(@U0C%pLNYou=~GSa1kPbCgWr6;76Fq}j&(mOv73NGQfFCRbTej#kaS zfFU}eVecqFq!>g)Z=|ZV&@i{~ss3t2FuPlZvw+&bTTR&;j7O5|%Olh7_QA=ZIHtyD zpVoNYU_yzuGbSsVGh#DmbCb=3VB4F4un@)2Y82ug!)jn()S3e|EXT$n7-&~S7pl!} zzeP%jc@q{UDgG$d5WY-pk{ITWk|EAdnJ*e-C{`TyHH;BO7=;8yw`91Fj%Y&AW?khu ze-*iOKuE7EyD712vLJH*_xb(JS@psekKRRD0$sPzrZ!dItZ!op9jWtA2D<#!tFHmV zo%Ch%){#OAIbNIx8Fu2wC3t!B{>~c)(X9 zX6{{mj9LpUC5-0fSqqev3It<;jYEcHi=((FE|fuc1FlfLB@K6VBDkarXAkjJea;Pf8B#; zVxtD?G$jL4TqoH~+4*+CDm|R1a$nR?HxKvQHMG{E*u0w+SGR-{2dkM`b zoC~GHewuMlFpmLZcHCeBnXxU%#hgNRDuS>Ll9_|JDEOng_FdH+(wPWvWMH@<<}BFONNca?>e~W((4Frc6r>#MNBwvZ$F;c>5Km& zHYh4AiI{q|JHp>};(E!Ch%-oQdw={vz;EGvb=ufwtYMYY2q6NH&OF z+S8J{^U8z+&tIyaPWDEWzg_0pq~E`}%<*Z$w3IcCT;63QdM-DZ0u8ROh&w*7O&C0* zN%~BivJJ&3OdyMbD+T$vZuP>_l z6<4e>T{MFsa-|L~rGiwV_KJa9573mN;eKe+X9#-=wNsWaXs9-q%uwQ}qQal1c{Ib8 zJ@nF-+*j8aY1`-L(vm&Yh~G8269~KWK(T}GMQ2IU;4C|N=E$B{mE(4F`8}^=dZkh?PQU(#LSG4*qC%dA4pg#eqTf(~b`7LOMs`YvKQZF{W~KtiNZtO@g^uAQ{-!ohiSH8A zi^V@gba1noCY@)WpfNS$<9V6&Ab90_^;_X^svFpU`5Dcxi3-FX%+MQ8K{X`-$G{9azXVD_PVI8Rt ziWvuuL!-(;YIZw4mrW_@;JQzlv2GhF=&krM?ZjZxl+kqdEy&?}lP?p2you6Wev^GS zu41CCvDW7|CpR^OeswZT=z%>Qx#(sp(-V{l=0H=Fiy-M%7%h`{2{jk)>AWG4kkWw$ z@(Zd&ruZm`5L9b2XWIOt@fJ)aRSDHx-C)V>sLG^+f# zd`0F+Azo>O6)%nDl_wzL=YuQH(;-JbcdfJf9yx2IAIjk}cih#Yy4caG`fTm2Z%)~A z4JPd?#^oj`hkrnGE<~Ac(2t8^E6z`Ek_BB2odYcn49Epx_oSR*&|#ipVu{dgpkrRJ z6Q*AFp9I=W11mu6*4S}JRT z^}RYt4C5P$^?NmnCL@OpxW*%G4DD?DcpXcri&i&B$5H!V3+sJ2(SPx@s|Mpwnh{)n z5AE~OTuO1Zs$bTh;zwkRKNDc08{0?`>0{5)fmv3qD4L`6?{eGvjRcx@A5vfy^IG0E zUIDm?S9}Y7kIYGb-%>otORj~fi-K6DG35{i>oYk|P!5iZvN=zw#W!cQ!M4F6H1bT! z17*ZP>X}Fn&C?qsJvXkD9HhM)Eiv`P_w86@GKGLNqwhEHTOYa(ih8*rw?!Y5!8f`f z7S$SL#W%TN?wgTm*uep+o`#Y1BAZWR$4DXRvl%#W9Z}u-U)272cpdAehGvQ4>zPiZhRPv0A5*GI#i76+A7hlEL7v(}DOprkt2G>{ zu7#CEPV40u3{5iAmm{eG$-Cr)RZGoCyhuHedfFYeN{V?xPj6O41rHnvB`NZZ5~PXdrSh@qXr10&hifs#TM z-?3|qz9slAvm1z+Ta@WzJ`{S&5%Ft4^ld9+&o|J+u`joQ#|%bYaa>GUtkr<=$YGy% zq%gG#7>!%Gwq6MQtceVwzFbqn0+p2bsH188$=zr|e?$gjn#g8W&pAbJ#=8CZUG`;3 z%$#M}#XG&pU6+^IU?L{78$ZVE{z%lk^!7x5;q>W zKuW96$2b@K_|n4=)mIio7z2NRtW`EcM6du=f9cHVDW3U!XVa=$kV4VL2R_q6VnQn| z>lXpt(|J^h!jb(7ANpChGTIE=(lQfzO|&mut>51n3{#%;@B|;Wb&_L4VkwOQjeGAj z#>-n9G23KeHBb@TBz6VS)Suz9zFOxH7aizDq9HQ)LDdcmCTg-d5dcmXz}XW#`k6jg z!UlEk?dd?oBp|fu21)-4*`#Y@6y(!}_E?`m`twM0YS|!h0koATP$u;MqZEb~573&9 z)()sQ`MmBQYU>x?|R@CVCx#pzvK?m{)pRM?Zg>K7^;;@@OZm-sSLZ?*QR5q%~x0Hm~LNX{ky|PjPA;E5TN?oh&{xc-gvZ zS;w(flaZ3G-oE`)-spDmem}Y%I}YXXhPjDCfrVOTiv4EBK~c+&M60!BRA2qxxb#7K zMi99qv5F@pZi>FC6#P-luVSH^=$++_DyQ0vsW%;sPWmc%2izyUss*dtnJ`=9W_aP9 zVVOvTatE0535-XK5?D}Jc8EmSqLLrIhE)O~3<4ZszFGaLIm7+T&Pw0sKZ?vexXe>O z$mpZcf5+H6_A~jMp;7t*V2qTED60>-~pQh zyW9WIhs^NLkdd%9w=)yBGq*SYx06m*vsJ_eDjKGS!kv{ZJWKfKriMDyD$?D9h{&4S zs^Y2c7GpR%AHfTtFJ5BM07?*-~95*V9_j{NCPg&_2U6VXu2x zrS=qr{zio-@UmbcnKJ0y@x9UOsbi>>(dxiynUfWV)O-dD6w<6y^whp)1@oSoPCg=a zqJ6|{zTJ%j@H!rWV`0dM-&ARHAHr{>FnDICZl#c?)x4A4_OnM6akHap2+n=Rp_D!7 zs5Rtmaw+DiCxu;SrgI-(UjBlywkfpB)5Gk6Aa2k>Hky)U`Q7c%zG(ARG{d9FSC4a( zp_svdTMEN7e$CZsAJ?M(+x`Kd>adb)%teCssk>uxeC3%gXw72I_C72jbL^~6y&=d= z1Sv0k_Mijfj=H5VS5r7AU=8*e1D+aNjk&+3#x2lK6I(>{X)+nbLkr2ChvAd3uz+X| z8|?#IE}v=IGcOb8ynUsVz(&WV(gVbc2|!J&KYXRGuVj;xC#e-DtBg|zKJR{cQI}?w zAQ@7~g1zMX!Zb*caG{1T$3uA8s2>&r6i0RaqsHSb80+Aekk?r6X)yLyX)Mp>#ES7od z4Aj$dGE#V{q82go4aX*$(c)plA$p$HpIp9?Jvc%coi|VBoJDU zG+<%K;G0HLhBN|ge9$l&PSFr6cu^yPlF&~_=9>j5!(?cAau&fC<-txqReCEr`?}vN z^-HUk7i?6ww@b}epH#Hekmpg$VS`c%iK<0bO%daxE|xFh7bf%+gi{->Q{={yDca9h z7u#OiYTjp4*3@jqWVtdDV{GRF69P0wbL{P;$FkfyPg$is$gRgiR)4yLwDO@?r$1%B=+rHNahV%G(tvAiRP;>y3F1Rw8{mwwW@! zjKMz5yQtQ*En_e<>%q`5y}F>t98G=|e=D6`bxLf%3e7U#i)#jp-Q^~BMKS~Sw3x{L zu+Uv|SPUKoeh}IG*sP^@dH{eU$`X{z42~0G${iYy-PgcZ-#A(ZTa1Z8QVcD zk8}V)72&XM)`B69B-9?VrhK=<=u3DA#}f{+`|#C)3-peP>5c>D`W>C@F0+YJFW2t- zB1nY37exKDU=b2?DN&v`gLY3Jm|53Xf0^V18o>m8;hWCt7Rd;*5?hS*9K>?t#ory} z+dU)}yF}CFArJ9IjhZL-bUD{SaH#_|3gIU{sxZ zYcBB=h_wh<3^+332~94cyuM7Dm9)hyjexToE($B>VJ~)@{Hix}$aC;dWo!Jku=lH_ z`{b+8rb@zEoOVpw>9ViS;B7W~_g}tF0Ba@j$JcNFu_*cfFhwuz0Nj9O?kwu);BM{= zlGhH2q^*#BWp)B>po)B!zsi7-<~6culT|)W$qF+0bw;on;t+ z2&(oxz(FU7R_HTP+3CFzi4xiAfZjyw);iBajQ>Zg>?b?ZXp$u>9cKY!CEN)``;ZYN zgY9tr5E{OS^JSRse)u^?tP8DcMkKu%%V}%>ZKrOJbKe7aHUr|8v4U7*SOgrIqu;}v zzI=d*f_j(BFsfN6esrIo%v6Qn7@jTGTq<91;dPDo(=B(zxBFuR&;_|JjBD%-F25J^ z;mpGXqQr{HFnx%Q1+23?@MT3>iT&ox7B<6r5hS|)Du)?-Zp3tRb_Q5tMbM$tpeOXHu?r4!Jh-*29OQt=6MnL-=5dw|ZfVh|}HX;Po z26xo6V29!q_fTo!8dlxwm%{R%Ru4VNN%7Z0OKbf?{WQ{o?_00o16QcITVS`^UfDlk zA_gjnv}j6mWFbD*z#5n#yVG6SkPDE>;&Rn-zW*g|cGUweTni-oJ)lqgpUIx}pUGa)#KzpzRoV>5 z^+0{Sf0u9ntF2%Gcc^7X%#r0Req(QVv&Vr}V1{3V1`%o_cx}@dmrR%EesLRpuru6u2>uEM5Wp5@saqHt@!^h=lveU)+dH%Hhii}jW zf(fYRmm#&PHfxc;>BK~@HkY2d) zz%<(Tv?SM9Vi^`M@`fab^BSJ%dn5fFDB(K#@$*2BzUCx zEcqa~jt=0m(db+)P3*HXRJ<{z$UR0WHxS)~NmuH~vu{x)(#l^DXr9g+_!yE;7Po#s zVuqWQr#dLMx}5t69-6Jr+q1S3=$btJu&0-482A;Fu3u@q$ANnr+^^&H?v*1v*f)p6YBbZaT>p<_|L zu%ki;>B=-$Kwx0f`^$aVm+7=7kU@^A6R4<7tdnD-6pU~%oKL0PEPEoEoR+N)O{i@%Yd{;aWMIS zc~qnNeZn+xOZCQA(fHxWuN+r29WI;>D+lHdsq^*ZC*x0eBgz^&X1MPN;~?%}?oc}4 zT7MG$+69g-;C9@)>U$ksJg`3z{BO>87*_Pg>*|y%s+1B3X+5WN}jLREi0B!(k0Af&?w|8Q`&2eAA#gPao54I7| zc-w0fh#ovEw_}gdIf~Epb}8acbs`*2J8Lcq_i=S_b39QIaP2iOW*3=3I zOLm{sU0(x~?qzB(oxKXA9D`^z!|qce%koQ15QIa8Pcle-(Qr%eJ&vh2nBjSK&OVRV zR4vNLbwtGI)~HmdqT7@ylhlfoG{rv~e25ljtHV=AfcR9yF5u`$ZfzftzMaR;e&oHw z`h9yw=oY!}Jm!)+jICmvJyi-`td6|nn7U@1&)E?u*?JKK{(>EQ=?I0y%sj)m`c~$M za7{l`x{6jh3PahvA?p;}vmFyx=7^akrY4$8{r){rW$zQrJ(uA96!aw)jZcF5C#V_bt z@|Iv;DE%t$edhJk{SyAy(*l%*=J@xQzm#FWh^gWl0rPeX#DDP@ERd-_eUf(W7WwPq z?=NiNucNailZm67gXtGjV;5IDb0$;gF926ZrvEeR{co#6fB#F^<%_+&xvR6asfeAU zsja9r0I2Z!uRO>NSQP?e!45iFYSgt|I8{9-WItX=q$30s366mBmNC^*Z5~N5lUvyFK2z^h*3EA1R?CKI)`cwswS)OuMIJTS%xb@LNo|M68Da}w))96yX3nk4Q zvRe=OFwT!g44ToShbRxCS@Go5WR<{LOt!PYBh#hvDM3%Hsth!5?$W1M1L(MC^67We zNVaS)99huNzO?~!cJ&rRX>}-j1Y<2ey5t7}8gVA^^nAsZaRWm4o2FdJ9kEvt9{)rk zG)RA?Ei!!LuM-q7JD-MT`lCN*QFeQUbsj5lR+flv|FtCMKGv7%2xwd7f2;>_{DbxX zryc)gLZD2qlCkyQmdsL-mj%|>eAlWQtQ#tu{I*M*IbnMO!_>e_xgfmDj_lj!lbXUa z>`6XkdPqHyr{1ZZ>R@(zB3x6mxaw~=na3uFj?VDDnx30Stm?yP5gISuH+hgnDj zwqNxqMFc(>?Y6=%uowa?do9V1+?g?}OaMMS&XDguhZ2lP3u4?=QJ@EWsmAPCuoME# zXAln}29YI00waJr85F=s@eWd6%5;`efU8Da!;fn0(Qghil90b3VIko|<}w;bJ+LQr zE*cv>DwAjT@3;1AZv8D@X^_h4J~rml>)f|QQ1CEiYDc~%D@ibL>Qc(tvF*3L#~t=| zpngMV^c_Z)m&st4!&&_?XP|6~81+iKq91`cJcX)pj&;5qD$9OeKyj)VrYTo39UeZB zv@8{NRl}}nDzhak&SO`!U>g+0>?l-l^S!9PyXZ_B*YHpI4m~a|T(@3A*`F}6>Eu-0>Cru>?!zmn#THj`nJ11Fc&SoP_b5!~v}~D5yB;&x z8uMuPE28Jkuf0?k#CwD*R#tzF&epmcHl$*|VaNA6a|*qVNTF-g=M+-TM{8Xvkk2D) zm6`bw(!#TRE;p!O?}NSo3vOu?{9_Mx|D)_5z`F(gNB5=w2YZMZyI7kFTRNNn$3mB4 zj}7qdGdX6|&hqZa$a#im>#02Npyf1s)l}*c>-A zo}S*GA+JL$zmYR7f>uXVoH9Td*i5b0z=5hx7@IE>3Qhz=sO-s^8QSp1H|#g8U)pNK zr#Bjm`L6M~Y0N{6sXX1XG}Qf=Ea{HK3Bi#7z4f`x+1bFS`%Sc8y7RM37oG3hulTnK z0Rz#zgu)qHEUkLO{%XZxKn8iVIx{3GC9(&;k#l0zAHxt>b(D4kZyWm`4MX!!hWRg1 zQRz=qME0#+tEyBl*QgFKXo6Gg@{*@Pt z0t-@n=548{u}!f9N##Ds-?d}woQisXfwPZgu$KU6@1Or@bH0DFxtoQBxwE<1|BR{s zg`1Mqg&pzKk>3s6=iD+G$Q@LvtBe!bF9sbU} zw1aenw)*YEkcizDNte&hH^46kLUYmTPgU{D^9@^E$z}$Wsl$zXlbS^tqD{{g! zN;QY1Yi|z0dN;q>@HKapEDFzMclo46xty$Ko0=kn!Mt?XW+0v}vEL>Ez%N}j44Xe) zkE?9g>SwDs*zeH1k-JFFg==^BCLz#v7OFtZd?KxG&xOmn8HH;2q`Z8;@Lho;Y`ys5 zZL08dj1QjuecLTO4^faC4itgVord>-8=;!fVR-#j5*XFpXd`hhOJMS{Eth%8CBKV# z`I^nH`t0B(+DX}x-UA=Z1Ra1QqVt!-JmN;o898m7IoD-_nwo($??jPW?Nw35Gkg`& z*cEWay(pm2xP?QK=j>z#9$*N3mjL&W^|RWe++oBr5GLHbY0xFGpg03h@VNFf;ElkNS&~Tv*OF^--ZG*j|LYmQ(_63AapW zAQsShMQQds4xUnq{0O1jdgx_0V)98u<(P#V$f@bY_@x;G&=ifoAgh4g?+(fn3az?$ zP2u_JtjzbhaBBD5DZ{0cbH!AzduhHVvr&@=Q{mpZ3P{Dv7HxO*-LH_v{=uDDcsyeF z9>39>Y3`)9NC=-Q1rx2YJ7F`_gsD0;9$}v&dzavIHYUSG*DX8?YZ6o59BS-NM0CCv z2<^=^2pd}(P3nzClus$!A9`e48pREkkgdo%X8*K2nSmXjV@uR|nEilafS6*r zM%r&Y@EJYOm8+Sw)is2^dClpD{EhwbR~P9b8KoBAf`Y2U^(r;Y@+VEnsZ_aMH`X{pv44uD{w zV1%mSYs?hxhD8u!n+d^nk)BBGty-ClS+S<6~ER$Dk5L zkr)i2z$coSFrexxsm65@aKJU+D2>x%v87Y!u=#FoSsR)k8!NY!MC`PSFQn?s(U*yz zL%va{x`Og+O4=%e%0sEyzEiou2EiFa1CyFzW*ro6K*oNihC)oXO%#WL%AiDNpwP4P zmq4;oWs-b>7>vxK*1&u@DlaCz_dNY-bh>J-988vZU#kv-uKR$tURNFy9x8BEx=S2Q zgfNrTL?!q9xAH5hw-jyGbDIK_6v>X)UY!EcD2)mgl5L$B*yJw?s4*LJn)mNz4k<77 z3$zo(UJH!X^ms*VZ5r$y=`oj|du}0 zdvsVLqw@_s$|Sn6gBO@^HytP&>1@o6dupO*H>a1ZD9}t!7z%S%5VANltqm!-P8(_$ zdE*n?1)M`W$wo+Im-ir)9oK6sJbh>CtmUZOZ~9LdcQ=#CpRL?EHr#2w)LqkcXHV`x z8=d9#S~cn`^OdXNa)N%_H|}6FD9oOszBVayQ9G7gD*b%6=VgPSfv|?4!pKyauHH6< zD8|TC259t9sqOX?rnpM?eiPg3Uz4SBA+Mbq-MS3Cs*d}ktHB@u9D_qye|4_nYzGXc6d%}u4A`mx*tZWBA@m5aob8`r{;2Z$-0=IXX z9iCNsTL8gVj?pM51S#J9>IgUFIyi*f!77XdtDi%T^(kRQo>En=C~X~}2h$0&mvYy{qL1o7%n)C60HH?+JkTH~hn;X#5fhT1Api#H?=v z)d2$f63ciA+(}J;36xaf|6uK%qwDOqwc*BQ(-@6y+qT`4J^Sn@-+9M)M{@s@wN}Qu=RJL0bN>2jDQ^q(M@P zV!DL|>Tt83L0k2%gW!4kh%vPK3jD-K!a$Se9STFRuD|GyA=1d`N829YJ{o|d|5E>} zA4bMxM=ywsN%n_h0-w9r@Y$^xtKF_}#p6^qt;9>wccKMY_G z7=?L5Wqx@{mO~`?rE`kU@k_{9#`*n2yfnA+a6jp1`7`s zymemVK9-!Y7fk^ZVuY|?v|fSGkYyOC_mF~+Rnh{n=u2KRSI6%05kL7X4%9)gKEb5H zP3xr+s{x_87Zz?fC_2V4LPgipp;Hh#F(P5;m5|1P-DyQVb?#crw~Mqf`u2;7ebF>` zpNBZwS!$Jdb7$P0$z^A}_NN_?#^}kQd1*Dxi2}cngeHu1B=tc0`3dDAQ+~&!`s{Eo z)Yccx9pnS~&l-H`N$CIoBMT!`)D1VJ>QO=&>R_}pNhO=3T{>3tcwdA z3cUNy=Xd|CC)h#H2@wE*9?wwkHM;-f=A3^x=>IBE|GnCgmzMpV?+fS1mHO$Bg@t`1 zw>6b&H{;ssK^JFAbKTajNLK)+UZxrRMJfFv7I6jfkRM?~*&k1GzCCgNm9Z{C(I;Q=`#YYW}6P|CE zcm&m}-*FW&L0V2(e$Y_nQFI^BP{S9lotPu#NK7_|S96zShEyJJm~V%tc=hK{0^^%x zkKbezn|I-h|2Pr(-=6Bf^D{YbZ5DaJ!NCQ=RYbsj%lm7EUNidJ9X;O)%IEfwMZhCp z@*H0aUS`_&M)&%6;xd$8_wq*l;ygSL$NeJa@_hR9`q$>-=JNEN!9|?GNmxX{QNfMD z0TA-<>Z(rIP*NR`$7=zuzwbW%N4)u;U)sjX%FOX!+zKn%HtSx%3D6`lF-$1PDbD<44#_B~|D8L1yBsHEk_OLBM2(EM;AHy3xX$$B;Ph*f6y zPM;|Jd?Gy0o?UVwQ7+Ut2Qwnv@iY^rb5WgK373!;NGe3HlHR4Mzb`ZM1zrB@am$E+H}1Wxt&Ia7a^?6= z&Rp$Wf5sfj|4;(MoOXRL`BpClFS9T9M)vx4;xeUP_VPyj;+>t0OFnUP1kT{b&fusb z;L>n-FXj%4*AnIVnN0cU7)(q)O!TA6J~BqSMjwDka&RJGv0*>ArJyhI3;a=!+6K(( zP{4Pec~?FDBmd@~>hY(uDeP)sWb0^VWBt#zRz2m1MzI8f5k@gt!LVjWwS*}$B3EvbgQ5^3H7 zgvDS{TgMI@hp#%Nq%7q9!*lsMgOM~2sgb2a;u*CSR`LZen7ug;4S=` ziUQ+Uke%F^dJV#M{B`Ood_S=A7qQ9E&!P4gK&Zv*1@cbDt9NdJbWqm?cE$4+#)!N?@f{Or6~u9HE{ z^C@K@q(H)T)rK>+)gj)w5YM!Mh4Eya9tOqD*YrnTXZ`O`V{rj8r|L9)rWJIj4L7dLUOhyd3l$lVeQbF=qpJD_oAy6>`nV`&lS8QSBSZmN{ z$&+)e6q+3Q*2lKjMg@G&XwNZp=of#!U{@dv{aLj#ibA{G29V5eP5FE8{9d9UWMpsV ztoPgUL;!HZzbr6Nu0{r!AJLQ2m6B|fRc+m@CbuZgXM~tYV_6L@eWZ17iSR4PmDfZs z!X@C~aTI;Q4Dt=4i;j`@$ERNppmaTI{D)O_wNw&;vAf-|0VWl;`E<5a4j0Wxft?6E zJ!ffmh7{0~3CaUerNKweSn##3P3@m_AOf%CZ|XJbq&uHEIO?b`{IqqzuC|Pck#WRoLayjU>NmW|PkZ1sX6?e^DrCXS3oc$fkhx zuCibVq=cPTuFA&sM~bNqJ^{(%FYFYzOgfN+_4zY0@mBqiwF?lQ^}DL|A1MX@@L&HD z;Qwu0&iuQ$oIIB|UfUlx{?h(_Y~JbTGt&lqdEIxPJ`v#6zr&M+%uI|N{=se)j;aB~ zWdK2#vWGk&0d{D^b}`XH-lkArnbcmtK7!#jh7_dII1`^K3$bko*Z@PX zm$aY$+>lw#GVu~y~5D)kkB#(614yU z3Hl$JW(1hp4i)iIhBlf@D`-ugAzkd0-AQl=PlzXtZW-IB^fhg7>%O1!|~V zpF3XnHEIspa9Pn}v}`(bY`E@R{b4)A5?Q<4wtH9KfL-tnabdf0BP%cPa{}ZWFevfY zc+Ln#;3UuxV0~bspq+VMSv7q&$hmQ6{8KfR15>Y`;ibi^?!|9{rz2!TI5tCZT*Y(g zLFu|qQ+97Z2@}!+$W(}^2&wTwN%*_d0_Ya<#q=HOEki>LG=+du(G`|*p{V20-AV_{ z9MO&nakE6Nh86IhSWKzq5^_C4ECoCVD&5(HRJbt-?gOR;9iryxQwYX}MdnNl@rL#x zOJ404t|9a7tpnP1FW?@*9>_ZX@W9exbHnWc1}gC`6!aeSA?)gCWNm0<_-$%JeMLXil98+9zlS)PvEO!${V{|*x>Jrfr+CK4uwhZ9Lx@}H7_NUEl(ISObhw#|r>s~E z8=$ZN%a+^z&^9xEK6z^1)O7;qL#p)=bbSbk|A8X0-Ubw5rNFYhOSx9!Vcgh{*f>#h zVkd4RIdr&UE^O;D<63aSjfAvjyto&3VCEOCJSd8?U)%X1TDC)yU1F^-vqB;5ukfS( z7gL4|%#N*HDK-a~PlyO}f*rn?G+azvOi-mYS&(aljup`#`fZxq?boH%ff~N?ofI>< zrk?L>s;XiK%UAI|=Pcg44`sq&&wg8^wQXVC`a}5V{Srp94-k~fyT1HAqX*c!u(g4n zt%H;0pOE-h{*)Nq0q;i#NJhbWvImBIdX$V=BSEHxNYRQFu&8>H67+k^*neAk4WjBt z?lBj8o6c=6oqGr$P({B>s%A6FlQg;P14&{WW3V=Q4Ti*7PZh{>nOGL~3CDcbF?B0R z{;$Hb6{f6Vb*0u4#)T^QFNlJEZuQSar3(3Dag5z(OGNA(i34=$mfe4CDr)18ac{rF<@J5$o(MmaAAh=Al>5xiHe{UrjM{~8-{0t|Hmsx{$@ z*%hDo&8-4O+w+30f}A$RG#X3ncCC4n8@>F23`o++Hh%-GCGRTMdsXb8IBM_kU&NDt!0v|@QcQ_kP^a}8 z<%;TRA^c#nmvuDw_#;8Eazl>e`=&td;ui|t=)9b1H3>3~CxT|iFm~Rze z4frus(L6GMPnihFAy`_59T$hc)H)?1&)ihZ>K8u|VwJ(-GlYH5B9sf@55U*!67z$`|_`9}on zmyYh00L?pkSNre*ul}8JR0%NV5 zF%wgq8IKtWxh-zF1hnA#4G}eCjbp!lPwpGp_wwrS{?Ob{&rfYmI{zw!D8#MPd(@Kb zD&ZOLDkQpGF(-w@1lFWY%s_bN>i)ebBWHUGM-t-aL@1xR8Pp`nY2ZMZ84{_4U60aY zi2Z0ohnuvUwNVk2%v&mWl6vQs=_C$9AC#>2Pd8&Bu5pRXNd*~C|S{y3q(a;U|yy*WQXCBr2GuB}!2Dk%vqAvrZy$4FPhNXN(!V*X%A zoJ4$lNOVwm0+EbjbWo^i5p+fOA+u+oySICCxO*ofJ8m>*xEp%U?*k!vEf76v3~7Hi zXaFp%rN+uC1{;f?GN8Ks9s2Tpq?@t<_df}^{ysP`y`vy<0>b|a3IE6{mZgxHgPbkS}*ou4d3)U%cwsbAa_5 z6%JWkq@#JaDxJD5WGBq09Ve34c4^EM6mN)Fbq=$(p%&~<{pxJK!rJu)8N(uRB#x78 z$GHLrsar^7uQ4J>b(pOpi z3t5Hvi>x4UF{1bu><(1MCrNZ)&?LmL9c-EqBXufD`hsfAJ~yp`DX`+fLS;Y2n_W=+ zQ0EnKeLo#Dl6kf>Q*3l4jtNC0CBYRFttUvkX;MP*Y!xvwd1><&8itibnuP{OGz-Cf zYz%3Hr-1QkADLf?U+`w?c-W+?JQ2(L=>+dy)9x$;GLQ;6nM~Vcw*8bCS6HbmIt<)6 zn+x~cFJi{Y)9g>GUr4$)-hQQWLgS8k&XVcppU-tW2DKWU!O+N#?!}Iyr&z{XDxP!< zNLP@a1z>uzMy{#YOMK(^5`VnaQ$H=tta*-xa(Vevv}_z{;L!j&{fqAwE$`{0f)ijw z!OBSRKQ%~&rP|>A_z*MVlL=7MmX?-*NRTZe;cDt;0&rtv7+pm#>3*uK5TSbc;2CjU zHjGS88XDhSwXXw>PZ7#ll75~-OOUT2LdWTKI4Z=KY?tl<%q46}Y>sR!8L@4?)^x6=1o7K&yj z0RG-T<7kIWA0RW2Hp3KrG#mRqDnUR*VBGjYuu$SNK7D;W7EMXnj!={$bJbus$faD! z38XSr%a}>_*C5&Z=fi85ZfY7(clj3zM4>CLTd~(Fyop&?lFzB}p|XSQ7`3C*;ggZ} z4a77S`I+6Og)9{6l<}mp;h&7KwLh`Qq6%Bpk|-u>D#k4rISSiv?%1Wv|8Ud;t!zs} z7%d@BU88<$plw^(2%`$uEDZtcZS^ov_uURE_p)(bKz>Gs04!w`^i4NqIa8Y7k2|fa zJ@&_5KAz0htBx-b@KuD}CWU=aVgpGTI(n_yWa!5Qo%9UXA&g+>khJ7&W$WUN86;Dn;>DNR(;)D=gOMR(w~V+wrJY!n=Kpj!EXEox2j@JlA%)DadGU9VvMycDKA+zuh}?$F}Z=|9g(@m zGzP8hRv~QNd3J+&r|!)k?W2yzl#qZ5T<0_G3*qtFIRW~>)WPI<=GTMqwI4UD(X!7U zjB8SY(nRnC*M?OI9z*c;60VKF=hbLcDF9qvLF)qPZ*y=%4*k?YOMq-bd9f+$BuQ~| z&v#=bV3M*jdTq|67;2qE@2Igw&EAUFw%_vt^V)KM|O$X3q$Hok1ssc=6^` zVZf=ys#Vf={hOWanw!~GtF1@$5E>m*)fjBxn50Uz zHkuc?MB^IGH&^WAM)L7b=ga!nV!bbRN6JXHb$1Zg4{tRP)$N;zw?R{7k&$r6nU|j2 z<*AiroLOHGJi>!>+htAnN|YhsQxAt#vKWa#aP7@~F>R+Ixqc|yYVbGt;ewfbx}g}R zlPb^1p$~`c5b@ft?oz7XUEZ5S_x`$Xi#{0YO6<7eYERV&_Ei_03Cj-xAIy}^A093f zeR?XeIfw}v6TE;8LfAh@{s-2qE%Zkm^g%Fkn$lr?iGj~QDT3(cL$P7Wp%qXHQxg1& z7;8>>^L^#Ly^jzH`{^LTap>L2nP182)ggYMJkFw%x^X{w?>GWWq1@S)#5}}p2$wAN z8|AI@FPa!Gx-a1xccF&0r96Ikq*FKLY|rl9EokT!9XBLRZ$=#g3Zq#Nxs5e0P!2WU zq3C;NIpB)38fQ|kjgjw7*jWxn#!QVh)#nKvieR11_^y- zt^JwXkhO$+&^dUhn5twA(HB?4mLiTs5KlC}0$W9a0 z_eZ$3P?0pO_2#hAC;o-u+EEpvEq(G$BlCiJGiz9LvjZ6yW{uW2xg~{pHC&x=Tr^1~ zE|+<>Oq#UG(l6q&;EMZCNohASaa2?06s)LP){4CGg6f+pR-rQ8{3n=!8z$VjXmrj; zu^j}#bL^be_)-Fpf=h6EvfWHFVNOgN%Ie%7ZE?C#S7G1EvkGqFR$0m*hqqswJT;-hHIMtS<851J1*K+pIbp~d@K%+Odll?VWrlJ>4!A$~{9 zs`h%ew*M92qT6HuL}cNM?l`#ZM87QOrXD|*Py8s9!iZ3y$R*eY>`^R@%qIbRi-3}a z2YMS0St<1(;=t~3^3TE!$_%8|0Yf$AeM7M$EF2s2-Q~gMoi8*@_;r(mbE#vAC=HGx zTvCS`g)G zNGih9T_WNDZfu)nFsoEjWSP~He%#AHb1@lknQc1&k?{UQX#aUGhTt8c>HU+{PW$&s z#e1dCzdkP{_U{aN6)VM$swiGGps0k|&Jn znrZD^@(+sZy>oO{Q<05FrNVWd^EtR(;&n%>Lr0{t94?lxGp;inE|7mc-hc1%i8 z2ZO%7RIVl}O^2QNl~$wUE7f+~DpRkQibD>O_Eympee^|U$tv{(^NmZkrk0O%*c%Qs z4x5XxlXMD|0fFC!>AbaPsWh+|n)^B$p=S+3Fu2GVBA{mRB~hP?bc5t;pq!W&@0p8F zSESE(i^yY=XYLdGvk9E6-c8A zLvc(!t7Z>uZ9C&a;rOgoEdQ(m$TsWVp|rD=E1D&YKYd2_R7%r2 zAv|}XsLbxZu>NJ^*C<)D4+a>Toq7*hr?M@wDoQ`yH@-pTnl$B{tu#ME;6X5K@M)eN zCoqEtnI3tMsx8GeC0ns>^n*_xQJT;)Fd=&UJ>+{Lv4aSJgE)s_)Z*xU{USiU66ixk zfpKA62?)tO$hi?jgOVRlCNi?2QEU8hR#73fd=7RneX3&{V9@Av?;m3uc zJKC(KYpm2SUo<#2P1lV|7C(y$^KkS$_wG}8hJ*>S0_U8hkgJH!?@cw!KB?w8wHZ>Z z-Q;>8cc@u2#s+A~n6};)g$ZQJj7GkD;o#QDRTQ;Mm!;H}pHWbs$`c(GQ>3MTpq$Ly zm8h{+%ZOMQ5B{OqfzZV?|1QtMq27y$?_n?hr{DOG<26dF3bS%3+QFIrR$}BX6Hz8JK9( zzl5y@B^#N}GE35G7-BJNO**XIp?joS76P}hUNs3%F)g_9teK)=((A@md!Ge6HWHhVbE}iC zgTfIY{gn<)bWJM7EEPk+Fg^xPs`#Xn%JZ z;iE7I@@fiVS4m|zU+Ic8K^YzOyt%>PxJk>i?7rC6o~69{YqaOBc4%giKt;)p?=j_k z9kZq315(U%C=dqE+?c75e*`0BSaD1QYJgG3$0>>}Dgt073^cmA2wYeg^s8Nt!Pld~ z6g+4VFs{p8)N{z@6H(f8sFa(0gnO_lMPAdOAPmwzJAba$9?%ndYM9~jX$L@r2*{ClcWXm+PbitZ|m7}gq8z7fi|7(^=#T4L0w{BSD!{!~9? zJ$S}_$MoZvJW6h$Gtd@8JWe_hX_Hoq6k3s|#)7q}O)7~oo6`8d zjuQNDO-RvE&)QJW-cZ!u#>v*w_I};GP!dd=tEZ7Sfm8&!qS2pq-U<6v_m*+ohf<{l<+T#* zhk_UL9qtwLuXoox->+pRyk8Exex)M{gnDa*Wov~+QxC`jerX3hC9movuN)+=t|hNv zB(FjXANCYH%*nm%$ay+Yy6RE7+EKb{Q4Ude8XfMtsu7DPxo;Ix(MSuvWFQ)&iZ4}X0Q8Gyj zuR&ZYk~C|DD`}S~Zx!E6bnp!?(4rqqRe;`1@*Ff~D#?ecjVuVCW$rIf^RSu^{?fj4 zCX-(DP<=apv>gdMO~PJqO2}dZq8SmXXum+d*f5I()*QHBEj2IxG@Q7HbQE26UCNz zJw#$aQ0z_2;KBJFxASXR50(njFlK%)H z);inmL0nkm>ms`L9${iV=s-IK$D-$j@QMCsJyH98^FqD8ax_S%_!YX^X3QZ|huO}? zFYaV^nWl#Dh*#?NpVtKd>vrmsx0yyrUOt1wt4tx1DpOmGPO0dtE2w0GD+z+5ekxr= zCJ8(s8Iw2=q`-w#`qVCa*~|4|WBjQQ-cX^E$dpJsBs>cgYRtd5@~ppv_y-%LPb%`J zL*u?~M|p)0trEY3hetyUl{_$V8Kg#-G(QxF(McMFo~_@7h`FoaBdj41aPX)A#L)y8 zNumr=Akf!I|H!P=-!IG%pIZ;VAmp2O|=x+j!0Z4PeeK+gM$WavgA@l)Dik>^ft`SYp%Th z*$<}Ub61c+;|(Xh}fR;^csr=162e2ozvr&z&ncnHx?ZdTbYSzy*xva_3*6zXF&|sPYW)A9pTQeno>Xq(?dYDOHUQbV~5Ldm?x@d z%B`J-2c{l}>$wYQ%(>PLr5cN*9EKQK)L?KamqjLSBpT+jK2lQcR$z_-YR&_KMM^^v zgN4kRCuWcEmYJYtw9sRalp$0W;ugY@8URLD>ri%7i^}m~SNIGvs{l(R zTgDKNQ-KVH-bTO|Vrj^sbTn)|9uinYP#plPB)%?81x=YSB~l?izi`3Aa!#LoFt-bOpY^8(B~ShpTcf~ujqYA)sTDyQ zPREMYtSHU1hjH@U8yBMuzLV~-GSKv)|5vds-v6XOlp8l0a3xjpv?#hLIUYgRb&Fn z8`8dAfg+Ndjid5+`y`2r+#H`m6jeIO+z#UrslU&LX+A)18;2ru>u3%U`HN=*_J zGGD@4u(jFkMTOv%Tf;YXn~J26FcbPbsKI=&x|*WTkmZLHD{g8387VYm2TA1DUxf*e=O^U=gnsE(+K( zO>5&?;lBQBAcLQ4;PxNF%tz!1-H?h0qTzh`5k7GE`GEBD_FxV0ae@r?T{&uA#rUV} zHqvtpGFe)eL-{O~(--c2f~fx@Z_Vgi#7LA(jEm4FS~IQhljnzDvV~-$4yzTVB!_3G zl)yHt&K@vU$E;(LLpWG(i@x9z1vHNx-@0T-&j+2_pXaPw-W)1qDo06A>{uu;&ivvR zz^B?7hz{ZgWz>CJ`B@^Akf4$*`OLxifbko7zYm4}ckHl`8vkv6V^WFu)a4EOB%|-1ze93qta5~L3|2?Tb&_Xfl1F2l!pO6XLOEhBLO<>qy>d8xF@bg z#SMn8B~pEo5`{2oISh+z9kkyr4sio!jxhzzMW9|qie)hu57@A`qXwE2 zlX<)z4nH_G({&O!!nmT3AQjU;)0X4tLl~A!D64Iz9Jgj z0oIrK67w&j#4uxOb4?b?lgfnC*{2j4D9J>+`*F+NZYfgTGVf~_4GP{fX1T9Wg@3C> zP7-dm!-K>XKHlpH%GeS7hWL1p@&^B5_~s@3Mz7eR_b4q2TUQdvAi^RCoyos1nCqHK zliG5apMP|?-oh$p{~NZ5jmAI}at$~kP%dFK?6_dZhZ;q78SQ`?Clyzg9TU-vHw{0+ z<4n)mXsJw*VUC$NyP2pL0w*}(qWIXYHZv6QqLAyNIM@$0wyp8f0uVlt4aNcKrRYHV z(&YohQE=AeRB)};alq64k5Lkyz<5{WT$&Dw%Ue&NN?7xd4b2zVn`GDpB6jB`-;qIm zhFsz>$2nzMkwn5MHx2p;;y{{H$pzK!L!w#Fs@I|iN(^9ZErFt_yKBJM8b7>UP=9dZ zn)4I_mcf<$(L=IT$5lIyk_La~(s!b67MdT^W&RoLpcgZ6M$(2cX_0`?tf zipIa}0t2!FM*eyO$s?tHlo@&~2HD^Bh6l~hlJPoCo#F0u@sg-|-|TAjHj4F~y9Tk? zM$1DF|J=><-lB~&*_l>n$?Yz2@qQAIs$X4^!>L%S{c>*KzXRs$GfZyPDc~LZ zqngRzyF9(_S9%INGOwR)bhw*q>%QuF+gwC;j6raojT|C4({{DCy&ZpiR^4cIx5CGL zu|v>aU*GiH#gye@rM-i{yGwm7A*|cvXm&L-x%jE|>sLc2>3wG>qRG7uXH|t1E#*!- zqKl1-PN%Kw*0I3a<1fBTJN)yNvHUjc+3V@JY6zCRbZ>am3$M!^KYVWiZ_85fI{9_FantRt`|SH|<}S|o zz6fFgBpsqW*2@9XrE^m|_yN~lhWzU;XhJef4F?y~rn}?iaRvD1n)@zCkh_o42ie~a#%ek8ok=o-Mv1Y8&%*CJwC607*?E>I(8S5szJmu6RG#RHRO^nF)1(KF|d z{;%Q5v|O!-2)wUAaeJt8(*K)J+4`1WlmhzJ?>a`GNorD z@zSS9XMMU4-^^5Pt8?2gcje3ArNl+4+Q9#U{I$-_iUrO1dVX0eV*>Eej%BU139Pyn zu5`+}7LIgQlRDmX3zPovovnz6TGtcU^(K>R2$O!*{)_JiCno(i;Z@ZABdsbvZO4gY zi(5zjXwI}94Wv9HYiNOphy6o=XkCP;J9tN#h?Gy(WnGB(6WzA2c6yD27ll;_6N>3> zW)?5FPghgz)v5PO3lE}4yzZtOgz0Wwjm%!GuitUg?o%h)Yni>!UOh}VcGKNFEncWz zolU>2kAJndc#(OM#ZF^gxIRz!QG4TQa67-&ygtu)yHR;Vc{OQ#GI2e3NI&eXX6`I_ zTT^*sdfi+)-W+uJZk_d9QE?T2Y< zMOfG4;l!-2_qC%QM)AY#sw{8a>kT34Vn;Ab$Lir2Zs*0GXHysDue-r#W1kJ3Q(mN~ z$NSfL^9EPhms_W+iTRH7GMn=AWv$okW5V<@UXAsRmZyc|%8B_VRTEZK@Ag&)hg;H% z5SuS(o1UT`yR8qC$5Hbo^Qrg!_f_G%+SIDWs!bJDZPWn#IPfuSjLN30bd0$06 zOgdd1vigzy`U8ne0#(~kA_AZS0CfBJSOCZW3QG_c6cYPSUA;`D3!51^6mEni=mtd= zR$-%2M{BU4PhiEX8AvRRS=HvI_Xn~aBtfN#^ME_JzP%toKaZp@Vv@SU%1)MxMGGIZ_YQq0=(5zR zi4a|%X-!{ln43PZ;eO?XuS}7t!Y-LLfOJg-;kNW}BMzn>BMzdyk2!ob=&si5v!g~> zCz^JgO+EE@OARJ1do95-PAkoef z;}}oMEjBpo75`xJ?BS9Y<6w$ADMtu5LPf5fhLfZcglPuvY0S0N#Q>QAua8MXe7%*H zny=SUAIsQ{Kge?x>tk{@lEQ9F$Ps14$0X2E>xlpw>vhNnL|VFP>#tQ3<%|V$r`Aia zbWieZD-_=dmCKABbecf~dZel2=StGW>`PMMcRLZV8+m8z0*n7D3reO&BSl z%Y<>=Ot?$&lc91uDFQakw?#7BZGQQq+Gk^E*yN)~P`e*4AM@!4h}*>L%zj3^2%Te% zW+QRIn%L%daf^0CJ_^yief&{Hh9giAgT}{@i%OUN>=zgP%ya&zCMj_dXLn+NhvUB@ zS{4u$D;vM@a{UPp!M$D?4?zdT!}3Ax4W;(-&q&HTZ0!m?pi_qT?lRl=R_6Sx+5B5E z1^-4fWdZ$W?!d^V`8*JQe&Hg5Q;2*Sj3d5;SH6&Mj3k56&ih6vZB9R0iLY&b`jcpU zwVwX!H;l=s05fgI z+oBS7k0yPGFZ;}*0^fQwJ!Y-#pnxz@iO5jyV6AaG7&cr?M(pAQ#OoR;T$RyVgi` zu6Dlshn2Pk8;Pn@o3;xTb1^e)NAXq!o;>INw*e15-pwk>=O4%Vs&M$VrD^gf>jgHI zylHV(_1|)3-P%-}cr+HN(t|cg!vSm3p9Ya(AC8mL5A(9d4CVk zi`(YvL+NAc6Ar=%QV)`ZO~yDNvc&zR%GgLWKClz)Zw*9UsNY%XmhUxwhD&Id%xLIz z;84IN>F?+{L9AiVR?*axFWo`%(TbYI^}bVjB(sp*i$s01oKRB57Dy5rod|3fU6Iar z6`OspItzXBgc1X%eS)p0r_IBnORHkTFH=Sk)hk9ea_66gx6wQs zkM-}_`Dyld^hDo=2O7gWEOmLd@{aN@r?0#Jux}}nK$VpM%A5NCM0us2#(i^X`0907KADwxJG9CB3apEg9XvIn zr=w4|`-555#{P(_D!tXgSCGNrK+T1)GI_UXzd!MzRsU$YIj)Jh;#(?wTczn$hSAVr zQi^}zBU4G-ggs={@npI2K_+nUw^DTT0Xb}|(jfbzP0Wn8h7CI0Q45(;{VEG=;JM6g zTc0$?629w3eX5lw4tmvkIQy%r(9zP|vW;f3T{NeOVVV=bh9#QE38Svm!zt;BJbg;x ziRsf?-u8Zck%`)Tw$>GNG7Y>6QN4aAbG0ZoNcWZ`TKM3_1SeuMGGm@pdRXcz^oWHS z7p025qofghg(fvM?OCOt)tgup6f*ei6^D#P`TNZ2GwStZnYsD{wl{J7lhK;aJT2zR zQci-(qfxoU%3t&M)JDt-%gf+Wv2Bc+8+=C`!&t02Sy#d+YdjL6(rUuOtXYbxjLNBt zvc8L)|5$I)7{scXZPRsBop+6#Q^QI?t3cwo`>S&Tu37JBOpri^u<50o&s)=<9dj^RD~5+HT}|o+1yD}ceerz$C zV@Y}uj{juYWPa{drNue6^RwdPZ0o_Dn)MsbLIK~KY-yxa_|{cMNPG%1l1Oj}Wc=s5 zP*+f(g>=;E$b=BGc=Y(gdY(oM9!X3mcwCP|qNwAg;X5E`l=`Y5zswrFDCFH>KT>4MO}G6osqRa4qWiM|(f3!#P3foAl; zk+7zIlVSogvCAB>0G`Ar)dj9%RM*RcjPX?eL>I~m%H>}MOtWPK^nC|2o+_T%y-i$Q z9Zr;N9Q|lB%}ck108Sx$M(7Dc`&NGJz)vup%oFA=H<)f_{)d<26dEJ~+*?p6o?LmV zTw@uDXa}yX?a@~h?e^UrYBU#Z5A0&;_Q4esfvG$v?Fc)9^6yZTq`g zFIX?K9Itp@H&*+t*gu15dF<@u+i(TrP+ceod*kzcg?eE>)fYS<-WaIpmY8Du_ylk4 zJuIvaFX_99l>f*|KF*DnJ=&{^m@?L6#EWNaPfSJvE_ex_T+ zL-p?MK5j|;CB+Km?USic*n=saa2w(6oE$p^*of9~d|m^7baEc=4hTERfR@J#ajW;> zQ6yOt)QKwj!6x~yKg?Z+**?es08Q!%=C2g;Khsg(8>0GGq&BzJvoLyxl*04BN<{zq zFA{S6lD`@1j%EgCwtD|Os$^d6tB2z4r?+1ck~6lk$S{RmAm0M&nOTsW(1#zizSI+tc2Am3+1_v}tm% zwibxnNJtvJTgH3M0{G9D$=9q+_QT`?h%cVzcs}NOtodsZsm9|B22mIe6DcM^6A_Qb zRCETp7>UM8sdgn8V-rX8eFj1LL9)7jo_6s;CtxHitPAs3{-L;Os5a&Kg_zz`RWxXb zd(0M*47%|kNWypUOI-HdA7O?|cN%Vk2v~fT4R0Yl8+kOsANGAJXi=4|xFw2A*mg*D zm<_Mx5EDB%1!{5@tzgDLd}A`8=b6LgR`+~1({Yq^MzI>38%pXd;-70NwG$-Uup_Mz zgxg1!dSXy@e!!H0Btuip-KiGe7snf~`~a-(YgeFx`(|`_GK$}5e&cKJFb>y1XELAi zSc_dXO}8m9@ZBT$nd%~CWm$Q3zPhBOp`@&&vBgYKu!GOc-bz~VzNmHOpw(%jVESkM zp1tU5>%x=teEKm5X55L<^2rIgR7VfIY8FmqJLj64b2Fn$^WupK4s?-Xf^yDC@<)sdMZ;yFwB-g zSiZp$M2gb4%)v1l1m{T5uPuO&)>)#F>lKLl<`vCL1u;)zGgGV5EtRK8oa6}ioPwMy zDcBU03`4a%BTI~bS4^2|AG z+_ApZnDz^11iP84`_~DcNW$AF8R>mLQ3qODJDjBj2ce+mBCIU>H;e0qL!Kot6RW%D zcb8>^wK$4i)iXV1(zSP&Pi1T>ac2*lO0!9d88)-_0)#U&%gnVUE59usTHVpzqX*h8 zh!FhzfRmBamyJDneygxxhVCHJjlIAdXtt<=IT*5`BRsvwmohI`OKp~-m@Q3d)H*f; z9X$j_PR;C~r~p%e-@rWR(sw#1f$D48(bbfk?wM56qGu6d)6Y&0*on%C61}rofoKIQrQx)LnwFvr@1py8tNZzLf&gpMlp=ZjJI~zdraUr#OBVaMzHWO-{ z#F9=gAIgSqJCdY*BtV*^eHoNP+`{1;t~#Q!eUHHNwRNMV_re0YG)y)$M$g&dm!|J{ zvK18vLyN7_5KX}UGpqG_Yjwr$(y zleTT!wpnSr(za1)+p4rxl_%Hgx3AuNpFZn)d!HY0&o6hxoH0hkh{2*97*?ifr{BfY z`*U@G$bA0!xJxK~;eGnIbOF%H>S$x$YYq?3HxUh z!+6LR_voP?;o#w7;i|Bf8JifZhr&s#jVz2-V-RIl2OP-wi3<=3(!UK+kcME=5Axx@ zCc}ASUZpEWD@bYdJ8%}7Sc1f!1i*>F>6^SD5B3;!!M@YA0V`-bkPOPbG=OtZ z?EQihs5gMDYTY%5>uuT1c_ANUf!nFyRr876(}vqId!ZkE#`H7pmv6Zm;=s%`eQ5{p z^svQ1VEkANazA*76EJuo8jQ#Eo4UarWWdZde<2&J!}OcH;R)Me`3T&Lhx0djX#{U& zI(goufzwB$tcLYGgWNsrP)zWHg;;uYA{6f+`&}1Gc?@vlm{Z8bq8t?q5!Mmb0&Yq4 zlM3s}c@V?$5;%K;^9^_y#(LA1?Bx{kr#Xv*`)ymSZgOfLo~o_qUHXT@@(5v>w7HSI zVu@|7YSNlbvky=xrMhC=VY6V`NxyR5AdQKJ#6D+c!F0p{YSrl3 zwdosA=C>n9+-V)|5<0v&b@|h(@U_exVgIt^`eU|}mz!Jw7e8IxUk`nVcBd<>1h=vh z7iAQ|5(>OA2TYUbmtjwhRL#YVJTy}* zemq$STlmAAG&{>dNJh3Xk6NlF4VB!IJS{OL>G5@bFSd^?!@`0J`Be!8+mo~NYIb`^nQ^Wkk%WNDA717LhMAtjDUVLT&Mx;hqXU9e;# zEKKVH)dM%}GS5V>2)-Z}!9{2DwfsD4FQI5iteOTu;m>xpFuq+o^MMd6CWoLI&7`T0 zum(cHVHXlyk*vU`Dt3oz%UZ{#WqdJ@9X!%RI!qVj{aEV(HjLf+-jvRM?2ygNZHEHa zt|Y|332^cHo*U1^(Pw#AVC}_EaAX)p0w;kL$0dyo{|5XYPF?LW-DRm?lZ9IN|HMQJ z|Bnkmr!P&Ig435k|L-ZO{}__0`SPnn5klny4Ym7aB?Atg2ix=JQezLUln^9V{1_TF zXR;CZYv0X%&93SL7woQ$Uzdj)631523i+r4RtO*(2>1qZKm7R>o(wq=+P z%cdz5R%(|uMpMxEeXY_l9EpsU96;{p{8IIoM=cA5PPf)^TDm9TFwT4xUF1bUx%S6U zG`@&`FtzozjO+YtW7??e)x2Rj+WB`z`(885MqORHRn@9Cs%jQcGLMt`RzCF)A#! zBBNQ#l!2%QS^2lHv{s%H>E_+`EKcY0(oAuw`dA#?Xx=Bqr5s3u^Qs0S|(>5fK^_1ThP9(xp|# zph!-x1~)Rt9ej@g2ncQ?RHg?{=u-tQ0vQ33+;0e=5fXJIiNLG{M;dJl_ys}^ zCJU2+oPflLM|v%rV8e07*K3*1>6${wFdG|Tk?1ETnjVX3H-yh?0r`HmsK$tiYu>8g!UghBGQ51u7~Uu z_(Ei#g``5mC{<%4$yFJ#WonL9p5NX&2Qrt1-YA)w0$NfnGj;QB&{#NKJ|S|4g%g4I`GQZ^YqApw$@j+^%9e2qQBlgg7)0np&wZ)mGAF zM|2Q}Q%0IZpz2j$@oxpk^0kno6#D=X^pz3f(;`J8?iPKk!rhPbh-OCgeREluQSvQYCNBA2cwOzpsOsl&f;80yHI5bgLj+s9+Vr|Polv?_|?W7bh`>0e3Wqhk#(sth5%9ar_K%A5z=g#bQSD`&AH@Y7*_cIBW|J^_|tA30}eaMmw z&BVre0o-1Ox~AwjNtT6ab)ue$&9=BWm&W;iE^+Yv!uR+hLGteBLjb!c9(cGLjtJVr z&(tL2r+pBf+vY?So5{H!`3qhb%0~AiUfR_1bmb1eAkGTwO1u!NS*&-~R)BGVTYMy$ z3PG_n%7GKvle^`5!qi+H3eeI@1I3JGV9_oeLo2Ds!AWVM=h6>e+{8MQnk> zhLcTXm*%0{$)yDiXSN)q{%!yq| zIPqSrYOK$ff?*2kIbv3W3^tIJUG*Rln^KRR(VvX?-qLmH@FY0m@0>)*T%|6==is?Q zHh?^$Rf@55fbub2odxl~F?4{MYIT|ji!W9C7nPx8v?^YJ~+h$QRBII#b_zub$C7myW^|KkTSg7@v zhrJhx!*{SU*sSkHg9pl1#yC{@%Ju0PiQN(a#i;&Cppr4VvZ>9kdLZRc;EbEN+*c9|Q*Ngo%NB!Lg-evZei}$Vkom^$eA{T@nq9X;I z^#&&pk8;9Fph0|RDqWKXIx&1|7}SU+O9kI|lSJq(xRDmYfS-xSmVm|c6%tJLY{^>D zZLuFH$_3t3956b7HWlmP)<8w`83-v|@VXu0_t&{OaRS(0&}0=kIfnMMfgst`I^amz zK&;CPk|^Db+DzhuXod{~1{`=+yz5psiozn8fi73^Cn5-S=eSkl@x!#r9UV52ouSt; zAOjpDXH6iPg_o@+18uRhLBmzu!+op7Z@~tpDS=+#S>VQ9f?mksuPJ|^k1-|aBXy2S z_lY`>(3gT{?*`y-+6K_FGW3(uw&~`GYS>rU4{3P6e<%kessiA5;psuB5y)VfcB7+U+(1qg*P6Knh2w1O~Sif@ZpabVLgV^ zx`pi*VkmlIB3VHZDiN7mBZ!<8B%zm6ft_6a&>8V+Q@mHCe4&LS;3J)Zun~8CWaJO) zhi3`mM)anK<`I-DAYBDhMTN=}l7xtZn_cI1&<(rl$HsZnrmk+)Di^%NLr2?dRxD$m z5>mbhEb!V?GC57C3zNIT%f%BoA=Rl9!cB@rix4G6Kv4{y5HV%5Bf;Ioo(%{q!@`2o!XxV+NcdhJ%QcnXD-A z4cHhX+oR#D*e=fx$SGqmypD&fOP=0d>%Nnj>ly^Jvf9np!A|!b`b+wL0ym!K&{Xmi z*K5<3_um~;_sl=LGz26N?lBoQn||K2uUY04u7MTnur3>YXW_pwaE z`xg3a6qZ=zi$QkU)Tc2BW8m!H$K;w*9rRV&gAiWRgZAmJ&ho#8=dC!3!;f(g6HT_` z1A~w-Ap(3ioi|H8wLK0z8@%o(X*o9;ykqFy;|WkpWO_#FsdLK@XlEi3GCVmLU3TL%;F!W zn)X$Uo5&J>;|JH3l3gq=y)WpO4ni*6&h2^M|90itsz}e}_u|a?bH=#C)8XsWfnP(x zM?U z@3l#9?#I*N+-SV}`HKG034yN43Vr3Zp2|*Vc~39EzWZL4y|W!qr{jM@d(Bfu@f;U# zw>=^dSowK9{AuccKgs+1AQrK||0wV5VYg6;nOdo?+KH zeCA}^r_k@!o$U|8B1c~LADo`p-d?{-z0VuK<9axQUWeCX8{~t|{^WMKyx87#L~30G?x zIL%L$ex2v*qT`v2la|cg&cM}6Pdx}&ELyW4DgCP8S_gLz*J7t{)8u^PO1B}A3d=Gp z74Jbjyrf32#<-0pDMcyL$#)MSb}7b7YOy1|45rRndVWkTNF>Vf>WDFxHK*IBRxu8; z?Ok<+5ol=lZ3V;(1p(RAtk77+sdEV@T{6T1_YlG-W# z*nP1l?o4wtE`NpGg+8f;`~i*oEn=C8rT8R5FI~pYc)nD;Wz9*qWe@SMaJ-MzO(pt* zB&q+Xwg0~hN9O-M9FwjU76dUzdq+pO%_xfGM^OFq2iEOmShh1Fn6Si?p##N8m~NNm z@SBSsvYZAVdgq74_F?}3eNr9(Fqt|oL*=espK`D7eXeS|^LqVsfKKyOMGK(1BVa_P zn-DNzW`Zdd889)+B54j>J|l>(VV6wH6E8&XoGE$rA5f^`^(GGokEujLzw;}o>_RZb ztIQNF2IM(X942005Fmt9VOEX;vh&7=+!2l#odD^1m5Q8pNh8wSn+hSENQq7mOakcB z*?#UPOWM>A?C-qrWM!t@pGzNl;6#JxqB9A1@*Gkg((hEG{&^<1G2wxusjJCW_LyPV zb{3S@Z54)z{j0y7XWglxiT$GuU#UF@mMF}5ZoCtbdnCuoeZL>6$XR1s9&z)nDRIjn4O4zLTVH65?};a)u~e|P4Pv(^ zgpO}!SOW$cFI~Rx2;F)cLVqZ823?(KJ}Wk@M2g*wg>|DGDU}6Da^o8%m&I2y!E3qj z2cgmOaN4jLPQ2cBN~tNEqc_2gF~Y6tdtJwDl#6Pyfd)LjQN6#PYv|lC7Ms42aS< zzE(LoZGd`Xe%ZDQJpG)unBrWpZ-UATe{K3k*0yeo_HHk=WDx!v@b7X9^jMIba4wb; z|o!;8)*{w;N&dg!S1xyXke}+VN*P>6paQ6W5!qA@+yG&l5vyf?m9RW z1CLHE%y#0D>AdHXp+|uE)(et^nB#0or6{ChQ|g_*eL2COa52Hj6ta`roJLDl}o=2M%wWtqjAc z>6+|yXatQF1vsr!gCFie)8>i$hT0a>tnQWg<#w?SoC-2(@9Uk|Mw^G%ANCq=*~=+D zx|5f86VvgB?N4bKqQ+o-!Y`#~UKrR0>SRy6{M{kupQF#9{Q4_9|G4GhpO(@6pB>`A zd%LPGmNx(K%q*!xyQ8e2{eh6mP2{}@^q5KtB>lqZXq_R*LX!1N1~IYGwh;y35SFy? zlGscvAhII!F8cGKwSmQSwhO+nA*q}l+&!C+zoM$j^(w5bm1A*RS_GHntAR?zn7jOstpZ6tnX z#(4>%xZ=~{ogJpGOKf5?|mIaTxE~fEp#h|n=T*|q2?0RQuFVz}*^6i~U zEitLeD4dQU>Hf4X!UD)tlB8v-g0p_JVYFSP{@nWEia)}HCaF8Z)n20g;`7AmOSmm{o13fk+P8C5vcZ~MEhDKmqLeUfbe9%| zr#W>pS|WeiU+&B)h3wFjm(R7O?A<(+pQapdfkjfm6_yE* zU?mwuf-7~EAz-58+xJRcv3W1IBqOo94x5g!(z2SDJYx_4&P+EbWv=Qhx>UxK$@)ml zqWM#*c)aWwPmDYnP{Ha1y+E9V=g#3R&h+l?ez{6-Fl@KQTomqftmH&1R;xjt*)d`Y zqda-?i0gW6{iHa}uFS=^#&mv)Lo0)W_D$L%Q!>tHK-$8*S&}4yIlvdciE>T3R0hZ0x9i@UkU9?8uOCy*Tr7S}A+J;(PKjImu}5;#oMXR+!401ROtl;^MaPl2grHR}MRD zrpXy@vr=tb87sYwIy6BLyRaJ%AdpoowUB&Xi(aUrbcoXjf8LI|t+>5y9ChVeDk51L z;idP6+D@6Wqtc}^gIAx!;$ZbSwrX>V+2NQ6WeEU_k-|1L*bSHk(9t+Y*8_aec16!U zWbL?nVoYw3mgo%eGwP6muN-gA2+N3aSwda3R|;tBoI7pyUN$sM2{|OwtS%Yjn(ftf=FAZeavi zHEWH^MS$iQnK(+;rOAWF0QOHFv+4y~Y9AdfSk2;K=`!?ymja&R<;t`M7rv^K@2mY? zZj$ls&m#%OisQ6Z%@kE+7pv&%_HF24=PHxyOx&QqHy7~COm5juK{TV@*;+nMtm)-LHOkfUl!L}}tB$pW3MbLQN>SH{h4tPA>{{u?;4iAcxR zN{>hM{HY+=GF3}gFp21}Z%;@_zr=V+_vwh)BTm27YYw3!Z4tLbog&rCiPlB%Be`tQ zZ>rTKtiWi@Hrc)*X>N37!}L~oZae^(@UDK|p>+OO=M`v&C*xbmQp;-5Gp~7r5x8Jm z8H*p$vc8ZZ@kcB-Wm<2lIgVtzd$381-g2Yc(#6rQrp0J(fazYs($NgHr3({>9w2fO-ntDI}6jiY`?g~rikflnW8_~+Pr@N_H zQ8oS*3E~Tk6ASM!`p&GVy>_L2cZSZl^~s&GQ~3G1vHM9U{y1dI!gVyZT^?lBe*b_o z(r0V1LqVepjiJt)*UEut_gtU&J5 z<`9$ih!%P@qlCCXG$d1c_`S(y{44Wz2#*PzQD6)(ZAv{%X$;;N%OT^8CNq0~T0LT1 z3_Gexb)OQ}FUE<41LiOX;SqWC&YSWW@7s(R`7VGsMs#Zf=D-1*=Xav(B&7aMQ=1`g zlcs~;%vv`>SV}&m5v=?p`v*i9qbI_%H{;(Bb}POiZ_4aiqU$3PMb7;2h#JPw_-=SB zhQ4EPD~G;gbZY~}T_t_6K-)90Uq#z9vcEywGq~SL+cUb48+{_ocms{D(D1?>Z7$3? z=7zY}NMv$DhHfr0w$Bl-o_e&5Sw(90H5o(L6@!XG+=4 z_Aq)1JBw)((W}m=A#wpEE=8g~LH-B}0Dp+iPeut`OhnKWp}bHrd}{WIQQ;HT0Plc* zEQRaJRw9?@yI@L00IPLPk@yKQi7@02Oi7&%-XA)Cyg1c^{E;FM2y|J0xq;`HuI_PU z;J>h)La`;XN{-rD!N)-B?d78vL#>yUW0Y2j+l%^yTV{MzH~TI`i*1IW3s9FAiKRr2 zFOp8cVF-_sj3yH}uX;xs3Fnp0=95krEsWYJ`9xlrc}oFOS1?`P36tP`J}9<=Xs)3P z$>j_sZ()xdy5XdsD)LQkvUSRh7sHEW>QdZFY)xmYeP(Ux#8x0tu3!@79;mhvmumj> z(t6&-)AK-5s9L{6PLntCmny1~r98vz)ZspIA@Sl-n4R{rLZork>FWkOFf!NHCRlI>Rknkl8b64;k)0wjdp>XYYb z=B}k+hUeXM@*9-A)2s6O^xS6ZQoS16b5S%v-F6C<7it~G(oS8VfEV9P=^%j%0aBR6 zS^hnIy=)gH{5$puE3cE2!|D#FIYMjT2p4jzYb*t1bY$}B6MeTx^yWOc86<_nD;F<; zQ}(?W&dcAxO#IGk4DiJh$YcG}WFPsz#S>VYnEk_C-@iA<|JNC!k}{&=|Fw7aUo?ZV z;oo!o_AWG4szO*%@WecQ0;Of~OPCGXGHXq=o5Ba^Yw@(>wH zy5;@VXP#xS;k2W>1cwU15;a_fp6fvM_rda*U+HU)bCmx;vn`mnw%2$t%hM@64n|@t zQ*2Ny7d(0G8e>AEBf^TS%JL75ArL!Djd=&{K|EM8TJ4NcK3H{!mBMvjF9C(5upwkJ zGDe-H#s@{OX|8S>^lP{U)$gnu^n88c_fx&uD{sPye|rGG_|n9TpNw>VZ!+Z{y}^-pQLEOQPasxn*) zW^F0ew`j#CK_()qA@nHJ{s0Vlma@UwGuaGT>V8-~pxdk98U7zS(HI0SbQ=M#feQRD zA|K%VMekF^bh9C1D-*3J7r!rkr`OUO-=2eau7NT8o{_4f3|zq&#C|9U6E3Mg+%$z4 zR9@@I3sb7vOgM8DASBbmq|x%@|3MxB4Kr;UL?zbeq!J=Nc)QKgu4tD^*6#2oI$L*} zH;J1jbBXu?TxyA2IJIay>cB9i2&Y!zFbUvBs7k+-&PmBCxUZD)wtR{(WC94wo}jyD zOgg)!tCN*;yEjf67B)?B`ifE>AP1I?Yml znX0+Uu>TD}8h zSK3=Vs{WvLH2~_`+{kBi*pFSuL@cFRO`S(GOoLd3#q+xA>Dt%8yf=_Ct{mv8lQNe} znO}>FUK3HK3|Tgh5FVFu%bsXr@Nc!1P25e_v+USb7+EMZJhP%~-W!=Tv$OW&IB=G* z%#@vJ(2m<4t9O!!!qvI92=~`z#40okQx203^++gaq9x?94_Q-+Gb>bCu@SKcX^61h z&II0)>%~UYur^F=(r<%e_^~Xpelxp`tx_4M$Hc^7n8J;%$~|IR?~v$8MPqO6WH7fi z>I*xOy(eOSGu5rMzqp+ycjawXrrA!uQuDgCDOR?Xf08WoW}2^P94;fj_Nr|A1IC8; zmb*JgECovErZKlX`TNASp?!%wzRYbB1>_x90LM69fc-t1PG#GW)DYl9 z4mx6pBdRWYAsRjOyTwsp1I3!( zFvgO~-Od}U4U=Hz7uLt_w%E=9dM9|6mGmq1Yw%Zt=<3thV?hO~0NFXnm<}j8^1>-lzZfxl% zb`tWq;v2`*pLte+Xn7bJvona(Pw*u9&u+b%6Lce3%9IWec%9B2Z(n^y&aL5eWQf77 zepk%5J&Ar!jq`Jh-Mimc2E0BwRNozrkMp}k|Bx`FLL-QS221NiPPP`y8y4i@d~>*_ z?}0V~UQ-4ofOn<$`&tE9-R!9&R}MRtx;@KK8|3d)zguiNz!`*8{WCJx&uA| zsnNYh{2}i)M*5QuabV{QcK}QG?Tx~!;N+iNj~4`fQeOXrl=U0i^4yN}rj^2ZHnEQ1 zyZQnm`g1IpU9T)ldjwRZV&yr3*QXezS*Yc8w|_6_B$K&>gZ~;8`T11_{D131dH?Ma z;4dkj%>V1!O;y!a$N9Q;zg#&>7uM&~r0Hz)RgwiWg=Hp7IE009+SduOf1DF>;X#CD zx-bj%y_Y=p6YLc+@R!RVGg(*6{Gm*Lmqj+n3<=ew@t)Z}*?7O$;5xbX_xl9x1M0Eu zk3>I3#ttrMQ@|h_>z{QJ6$UWs9Zw<^s6~t(fROh{cN}+?+Il^YGh=%b3l$Ehz1SET z`nVC37YJo=G`MI9(=@`3vUM-PGaF^XwMu!;@3OmRj*@KP&q&Y0UBwdYYDvXpLCkm| ztGvanQBnL{ATx}zr)pvAqv*HL7ak1cb;R-iK>$zP!OXy$(&?w8`aIK z*%)n%mP;_TIajh|6caeNvru8w%z46oFn>wV)#vMsiI`~R!qs=}ow)gKuJy(%Q?oF4 z_g&hX;n;?W6?g_ZLX#uY)XX!0854e%X;bMYD@X>08%;-Twj^Kst9!x+Q%mKc+m8bi z1S1SH0ON)BK-DIXq_9G;Fi(m5;2}GZ%6)TJ9Jl16(b@`7D|E=JP{~<|_9| z%ggZqELeiH!GGI_U~gCXV|DkB@he@1gbk?V3ozZ z1JX}n71pK#F`s6uwt$Q#tMs9-keVtSv?G-4Fdl6M=16!@u}X}A z*f6Cm+Vc;}vCg1kRo;MteWGmuQ`{l+=5Pa{&NnZfLujw_Q^$>7^2XCbPCMa3S1kBK z!iOM^2;|rAQOC}eIF6YPDVTE@q^@u1eVGoxGlOEhl27P2uk;srM1D!-;#k<^1|+wW z-Tr&qvTY3UGj8=nFBF{`7#|C|8fZM!25YrBZK68xpD^BtJCZLIF$LQR3W2Y=Jz0_d z>O+bR0h{HUL>Nq2q{*@RKh*k0J#Ao?B$e%`_v17)KH>GzZOh=IZ0Rj^Z-i;R3(lAC;6@Ff3Z#lVFhSoiwFK_UDj7cD|i9KwAyBV2m zIgY?gLhMp4f@y>cQiWy8Aci8XF+n9fPAyKtS<5>pmaFp>aCK_(%V+s1nQ5L$5lw>X zT4p73ff=R~)hLaoQQs@HJp<#qH8$B>$7{~igkZqhx<1+JGJHI zqdl+suS<=xkD@zs^T2inoH77T;wT!sVTzLYK#reJYLC1UWu z*W8?Y5?pL@-ci8=pKQ070X|%z#irOjk{2Pf_`(uU6e6cEdntk^I?dWxXq*6q!xE(* za^~tXH-hxuY>I8>wQ9cs+n@2I6ePaQN$wKtr%f>*SV|wwO7b+tBcPGfCQkgKP>^SEpK}QxOzoP=h~>O`wc-rMUhA*A(%BWcH)Q! zthJP!K@mX^P~e6SRGfnr;wt@)BhVw7;uLRa-;Hrc0)o)ts1+HDcPYcPXQQiPtYdz~ z;KU$}$c@mA*pA?hSYVzop^t!X8gH7*GLmD}GfG`Cj|{ejP>q0&h>Vbo7<(xgx1;jm z?djL)<~ltk1#&|>{9=W1n8`(a?U{Q9-g$oM*?1P(S?Ko2rH}Oa7Q_(gS7+(AhyyHl zjzP*F_<8ymd>qb@&=l!YhV9B!_0*}M2&qF`r3;K9;JYt3Ea#2&ET9(;TF({jndVcOK2%C0YJ0$)F;nC94SnRN9Z~^WtR}@kWB{s#Ita4$n}0W6geMZF0??gW~n}{%Zq3vIpHPF3vU@)Qpzr zWDd%=ds0|Z98xMLoJ_cyd5|c}RkLw+op!z6f{Z5t982!`8u#njH7pvMXcIKez^m#h znQ&a~I92jy>s2zUZ+xs}#eg*V%|xtBce+7(n2?Mt!O>hLc9)GY^T(eLxvb-hm)TBX z@8bGD8mc_i%}PYRJA?1zl5bLXp;`P)wOLtjr2!EEr>H7}E$Px^iY>I3*>a(Nw-btg zx4O-tde*HNg>ohyE;3lC-yJo7+36Kj4E$L54?`_mm}n;#mJIo_hD!I!+lD_z2%0-3baq<fH&0{BmP=iAOYtL<4M5C ztKxtckCn?f#WI`DhRR@a`l#mTZxhufJqP+Aq*e~FN>(Gf`f{xbEQRou<9qAi`q2u( zje6Q6819P~wi`J6Np?B?PLnV89#xjtFCa8h--lN;%Xr3bJ2Y6xer_m+bN{1MOq;jb zdM+XS&`=FBET|fY9$q>I{(&q%1-)?0&kQu(r2{SPmg9M_OK zaX#PaM!=QVI_WRfuJR+cTRND+GK+0ozNwmoYKX)3r^IQ5&Pu$%zaL3wO#sNl*VKg- z|U`?$6YyCMh zly|~Tqlu4VbDuC%eAq@MX4cO|N0Ymjw?MGee!+6?rdmt&S(2N5$$AODEmx_4`0^TC zoNSkIcQyAi`B%{ORf2|@nA552g~Ph*1tD$wjFduBkAX&-tz%o8DVVmcX}^OnaZ4;7 ziFyHUyJj%j+H+P0gZ+k?M-Vkz@NBK}c|_%WtWLkH3quoLcHwYk?dT8j3cDpA3iVnx z-bPDoA&q+H(w*w?=1mn+vmTC1uhZqRPjQYJHw@g74lc|%`wi6%Sm!|fnN)O)k#ym7 zan`$5Sor<;ROtm72<yt-xuAVGERF4zXfU z9gN%32pnQ@(Jr!mTcm4;HZ5Ljb`)HQrTw!t`Iy?AeVKx5uW7Ii8L=ga&SB-na9vxG z^R=|ON04w8j3Ru^W)|tinf$_?pBk;aTQJ#IPJ7=C@vDaY^)l#zS70ydtTle=hw+&| z;+$X$XT#ex?sXcns2hb(XBT)!oqSqSoLpRoe-gd6zoio$fMRvSz0Hywz(XJ#G1~>E zJEDL94wxZ`nCXcQsQFDcC78E|N14T$=ns(j6AO0ZVxnJEMi}pyw~ZMCI=|Xe43Qgc zGx>xc|ZlMmJ=^5^!c%Q%o8rib;%Ng`(~ln6y$4@Y&`!FCb1CW;X$W z)4N2zcBNM6-9E)d>1F{)9qFa<`iM(%-SbjLvB|PQ#+S%`GFk#samD$UhL0G8PN$>h zc=tdaPTS3=RB4Piu^w!%$YLPR2V&F~xnAk7GkrG!#}Ybg>djKGM3fW?dW9vyln< z+&>Z9>6qHxQqRV1AY7lK;pl2>p*rYqc+5b~DQ_ zk(cS0+m)e<{l6afROQLPJWBbD7e+?PA60kid-CO$c1J?dFjT(@sraDwtICdIN})(e zl=znzsOr1``=xkLoY$6c4{mxp&+wTe81nP)Yy(#tB@!hvs9-AN=JOIZNzfc-3n?vo{n(ybL;S+<<2O+ z@$9YaOtbsw%pewE^oCkQ@qOS zX|eFM@w}vW%A>=e;X%WlOO7WDCB)G);_+e56%b~R0F9VnrW*>25RkJy7)y&lEIfF% z3{a2K8u~sEqKFc)RiaX1n$O1|k%w9`%&rLP088D2H^wJK7vK~L+@Qu%r?8mSLl5d$ z8I9=J5kK=(7`>R!lfIIg4*Cek#VP4%`3-+`2tQ7>#f-2V;~U}ke33_xP#$_G#7=9~aXE+bROF|IK$?i>^$a+44b>~;!F+}de_ zk5U=qPj7cVZ#KGL+dYlW*uMkS7NAOCh>&Jx)g3U4ux4tFGc{4DJI%+=aWWJ|u^u0# zG-3CbK1LC3|1dGLnZLzl8t$XCwh0U`&^(6Tqfql4xT8UnfU=X(fAJe&1BK~%3J$qU z@uU>TT3pK76}w6u#ukY;?ND1{1D{y|&}^bKiHd|5tlV`gX5@NYsl2%K!P-}q%G`!w zqFKB*#!-}YOz0dUK+AmoD1IBK>H2#Kx_Vj7&aT;Shgful?s`FC&$t<$xGzeq$Yk&hm zo!Ns`>Lx(QemIjUbZynhaAE(~z%5@`VA_RQc5M?eDm(bIjol}?p0!xh9~(l}<0*$r z#hR1P@d}txw$k9fY9$3Dp+=?p^A5R_>U;&E-k^IJdP+=12PGll{`?@KdFmEB*EAv} zUavAyu2folTmvbvIQ8j?s_)V*Q+%A?Z4MeJj(TqeT*AU@Oh2z|pUQJe(%5i=OZSk) z*<1!^XQSES%g9`a3-?e9v8N?D!`Oy;rz-M4zm`w{ zsIagyG5xQe^FP(J9RQpcBf(Io+!!4xuxRfrO92fYW%9i?`9+u3we%iZ} z^%+bUV?O*|`TexB<^TMm@cH|KA4zpVH`XGnt7%q72Dcb|xdq0?J%MHxr~uNZsZuHtw-C zjX^RtzM13A(&e;c2NVCV-IQr#ZU`LrvuS*Ll9zAiR_uHGuedxft;znj9~;BH>8}`O zNjEoy*50q9&fMG?IFk-;M9bhyNJkSznX)dVY53TN-R47a9Hrp^b_{eGIQSu!F2s5h zZnP8lB(CB5f>G|WuKS$+#ewoQ!ph2%G{wco$6>fyzZKhCmg5#z)|}C=MHQ5x1em4wiL4 zjPL2*_PaDuj8`#+F`sGhW}|IP!KX%=A9Uf>R+smUAs`llg5kMO-6+~G9xF|YoGysG zW9f$DguS<65I#LT-r|)?bBz1z<$!Q^moLb0+s;+UmwDy%6fAJKu2%wrZ zSaAQCLDE50+j^JhT*wkH&0K{Bj&|=WL4li*rF}k9?3IL$wt%p(`0 z)er0W)_>EW#vk}LhpVWG$e^d!@v}z3;nv%HmY$k}QW6a!^-D`X0p!=G+{fJK)Cbci z-ACPL)u$y0n-BjZxW{Z(z7GTjQ$=ittvqBCVhN}PSZmyP)@&Z>23rMo6(K`G3_=wo z7m{@Ww@)V+eZd(bw0t$cF4=Mxwu!*F6MkJ($%4<|ifydW1F0E6kWat}BngB7gaDEh zAS4Kr009TwgE$7%0EEK`=Yi$`<*+KTQ;I|odWONz9uK4k+J*2!vSri3M>HJ z1@3`!d&TdDW$1$!w#lP9ZT zqiB4OGf$ES3RkIJ~Ibgg32jKmnbsWS@HxGy0o zK~4f4^%X{v!>;h16l^?lg*YHx-2D=3bjv+6_UiBsa;9u?yAEz{m z{ti)g0>-a=l^-m{k#{?Ps8js2Yfor&6m|e;=#8Sm7G&$LXq%F?nL>?s#%MNZ@U9X~ zW!lv>xvhJJOPpD=Xw`G=?K!d9(kt!X1%k_3-p6qXO-fh&q# z_DprrN7ngV3eg|w7CmUy<=t}X@jQ5=&1e4)Yv&YP>APNn zwylnB8y&l2J12Y9*{9aJ`PV*m&eg21=Ebao0aDt{Dsa$L6$qIywqD8rK`5R={L+gmw?QKgJuoJwx9Zi z1^VAV0`pq4G&U`blO5-A4~8q;lT9a{SGsDq6Lb^v1M3m)tYz+F?B|^@*(4*TKhNtD z9PiM%Rpgn_jYhv}CL2ynh*Qn>A$1snTOAQ};TKzKoFSa<%FZ+%s2!4iSG@fsKPrxX ztG9w(rYoOvt3lo0m*RNAjTkp&fU^OcY1+XE)PjjYDb6##4mK)T7r`2`Fs{Vp<|-^u9aeCtG}>@=^eeINIf6OFn7Ex=IDI!g0N?SV`!@A#g?JZHHTPu) zFfizY<#>UQXh_!|pB=9D=;jr;Byyz{>;5%bWaFIjTR;U`tqdC*teoltOSR|Fw7FZ$ z|AHG~=hLeb57RYofd(=H%M{L2K5**}kP8r}6-l)C+PDFq6xvD9 zG<}EkmaRRe&#vq|N1lPBv?#NKaIAjviDy zKW#esRPT$Cni^wIe7mnE&Dqr~uvNt53&Rh0A2f(ayAI`bvus8^{H(C-=hJ$diwZ{< zURR_Qm5GJcs1}Lla^v_+{$LvOF%9;SejYY`s%f=kS0rlkI@6;(q!{34GTIBb^McqC zIp|iu+A2&~*`~U{idqb5arfM5X1N{Orh7tf;^d_g@cA!LfYs6L-E1z(AJjkCI(=HF zoR}0YX`9P`2Q)rN!w*vQ$gz59$b2LpRwFZRK!%5NawFF@3OR-N!@_o+p}3%m}U zxc1(-X9sA~-qQDo$&BnV)Nxtcx+&?}vCxZmK~d^e)MfJ* z`B~PPu)h1a42wHcq1YvVxqH;hC;v)Y5#HS)_l}}=fUQ}f*r^h{ z6KR$2l1G8?GmsQpC_#1evU)V9wDIOw%$;Z9R>I?W4T{%|(%=}h7mP+U8gHO(y4vxJ z+(0(6%r@+1nMIsz3e(()>4`yE!(BZyPh~16vjJM~oj?ZIq%SM_n$t{pUYf5vz0|i` z16p5I7#l);#EC&)68iCP2fi>*Z@xwJDICN(a}pX{@Bi{5z2V`MC4CK~6_EaEc=k^f zivLIU{AKZ5;9jlI!EYxCygT6}J+eSDjq)0F$;CY#5?iQlI!_CL-`?&Cs*@{E}KQ}hCcTp1-p7{&cp$h|0%FjoL|b%uvyZ8q=6wY&+IIcz z2s@mdKrd+mR2huX=TJ<6r4zUvqt{TDQEBT+k?58YweNE41W!VbXbgfBl*jpQSK%JX zh50yTwlc`MD8TX(3pT{~ivF2i!s2U+~8fiOQvwy#1qLN{i7gX?ueSAzW;BE~+ zz)}P-^l=360yskv=n-9F`GtFdu;)8l20-mp0Sx746K{i(kdnEzWK|~_8fh&iCtoGz zqNEz#Q;8O%YR%tOhg1#C(h=|PA520`5l7TVSMP5Zo!wiPo3HJko;%yqHIU!*TVpAG ziHM!*E1AB_o3aOxPg0}$nj|JGDg`BSDPuNdeX*YG#btu6MGo6fEqR){KyfA!FgeXs zOlIFrMCQY(q`*VTy}lJ0vr7O*q2l9!1>&L!UtTh3g6(whOo>!~s|?D?;Yub;tJ9*h zT0e_KrmteRfSzP~^x!Gic>PRrm1#TM8xAe63qiYv;bow&sHJtHruJqq8c3v*l~p+R zVpDv{oYvv}0#t4mwkz((UkF-d5yAu>^ND_MmK{&M?pj=de z*M(Qh_+v&jCXEd5&(3can?qQ`+R~?%4iYk5oGtx}D|6eooZ)D%8`+jW?+e$kej*R8 z*&V3Ua4~b34;q-QS7l~+H@QT^jNWsB#D5Np;bopyKT10N-2gqt#_FW~sg%$#CG`<3 z&(y)EQ|g`4QisJCA^I}`+f0>(O<9UJQk9l6hYg`_Wi?VBxmL&ze?_tRZoh&rhK28z zQmgr>r*>Crz1!I475(<8dvj?-^*ka}x)jeTjtBGjonbI3vv(;{uj@JK>88nAW-m6$ z>$$Y9vQz&BH{~d6ZD=W5-UV(GohRJJ>+i;`i5lvnwUfx7poH-)?&&Xdb;jJ@1lmgS zj_2Qyi!sF2=7HB}yc#`L-*frGOS^6Z?CCeVt*58mg*pIQYuCwZmZz5Cs+Nk>!}n_8 zER*(S-Ft8Cj0fg*rh~d*A-*?vmi2c1Yc?}1Gvm6>5|`y68+Sv5bu~8cgmT8%NkB2W z*PTjwV>IrsQqP?8a~?}qx5>6ABee^Ro@m!f+Fz3E45_%Ds!1LtuOxBa<(q3=5{Ns- zX3I+#x;{;JP+XUvXF(=0UQ7L5oSPnJ{qyMYt4aLVLhc6v)3tU5qE#JMz5HCS)lFWb zCeu5Em27wY%8)wqa#YElX{UeFtD+n>m(!LOUp9x{&*>QVE{+~}n@>w~!fx4^_d6U~ zGt!1ysKA!t*ER0KR|ORU*m~SdO`}-H=6iP8E?Ix#b2R2?pdE`20@1Y89c^{?@50ti z>8;$VmEUjisXg4YGKv6tn5nL=N0iCB^`&PEd+6CFCpv3ME%*)_#+W%YFSH`7YeT`= z_`6kO;pV3O)Xg29bAZCS%z$;g%v!p83RXw4n9tiL60Ma~;diS`+|&a@Bh!mC@2Y{E z;hSa1#yUt)o{8tug7-_zb;!ED!t|fZVZn^5r&jBy?$>89st=oFevh!3S=OhqFBuJ+ zO?rm&yni%3Om_<|8!+92Q;$CG)+k&{y6&?II@`PSRiqe~|2TinPL)@uSG(2=U0Xl= z4mgO=HcMaO;nL;2J{-W#seRpgv~53Mi9t`(T33Evp{hYhN8S>sLYGdo3Ny>lNDQ$s&_)i6lc z+7aXs&0#sB9H0ZQVTq9+oM(wa>PuX3_SxNMbaLNlmiYdN&FJdLr}MOMY5+{Vr%wmM z?B3}E5hbL7vp@!5CNLS8WK2IwUVCcr4Q@e*F$_R-r%&tZzYG#qf=B{M zf|Z^JgTE-mEgnVwuK~O8DIt8 zGr9~^ljxf5gKjMj@_|CswEiV^gFD(S(M9&`x6e5m17s7ojeirqVS?$}Blky>6{6#n z3)-~ws)P&Dl}nJjc`}uBnY1l}_m<-a&kUTd3x>{xWP%ce>C!=rjp$aVTOD#7ACMfw zp;nS0Bbdj?$H=D`IR0TIxKB6~e6vk4fn0jYt( z<4}+8T(MMhQshZvnCU<+CGZro88J-FY^KJJ*+xcBR9f?7M?m$cVi>OEDV+7U1RdR< zCHnA7kbmGbq1E1`cxA}-cn+0_NML->cH@`8rn1@dl|ro|eypK%;&vXz?>A-;!a~xU z;2*M^qM+WcAj%+4ZYx(DJA$yTaKN|2xF>Odh1fnM0K z$GXeu(cPqFlO;%m=VHySB&%0^()yiJGEPTmI6sdmFN*4h=H@r6zjz}#hlt5wgeMw0Yn@K>1!GoscaDh0_>1UFwfus@VTk?&0jDq0YLg7{*eTcaa}z4cy4k%T@>KsH&bHBkh_f zDXVc6>erYTUVtdp5*qr{T3_lz7VIf;C@i$Wu`sGdm5(mwS~|Iu{?>kxziSg6G*2*e zcD8OT{eyvM#JV<_PTT8mxs(R4BN*SP^utI7;GV3mlp$d+u2?-=$%OUAa?GIu4uXjZyHH#7LR8X#Rnw*y1)^a}_Jsa>0kB0fuOZDPJ|Pp{ z5frQ#%5)};#TA>RRv}nx(5lijiWx-5A_=3W0InAtt0A4$6xycp(`}B8 zGX6k-)NTT4P5qO?{?(KeU5HjwP;Zv}d&4MKL*UOPJD82`C`m#!>bx35jLXI`?1np= z$}P8z?j%Wpdr7Ee*aEUf5m;P4okE0c4H6H9S;bYLhth1{xx`&%K4zFmZVIXlJX#{2 z8gr8y>s?oV*u2!;Kz`Y94TRq6c2No+rvq{7{=M*C(J+N4U5H(=-$j8}%~cF{X&gj_ zO;}PtzFO*PJgN_D+u&mxN#I8QNR+m9_e1|D-b;0v<}Z@?DnrW%6=`c7Q`Cf6jD_FU zK`N1ARJc|4+KN679LFdk4*fHs$$PsqV{a zK8QlIOb|lKBMy#%lsJfCpDKabv7w;PJAR=!FMFCr+qDJxlA}BFBB*=x4f&FTy=n?Y zhgXgwD!>pPR23pu4#bt8kf2=HKd=B5KQsY80>|v&KRf_pKc21*2=mz!2_kVW1VVAJ z5J>?Mh_g6&f&=#EV)g)R#5x>T!U>!QqFr{caEzWES7GiD7-7&5$-tm~YGI;~woo9z zCDa%oh3Iw_Lk!`l9#iYE5{WU8haK0K2N^fELtscBVid{@Xd#^AkQOwyCl@hxObxDe zYDI_}%)?>`?Draw2jC6R1G>f7*|{S}4zGZQ>>(wH95_paqV_BP7^4PMhA1J+hy@%S z5hDjzAVe|!WT6Z=(ZsfUu`w9qdEeru4L}WXLKuZXLfR4cI3@(7x9JfW;`+g$$U=fb z1pz+%(z~@d3IloY4qPE(h=Vvw1d{C5{L+V4MEQyRt^+6lE<_U?PDCY+j;Pcj1HSys zelgS}N{JNFjYe*~1Y3X_5L>{PWGu(TvXUi{4`7Ze-x(Y;8hk(dw zRZ$bq=JkA0G#XXg(z3LwRf#sw}E{ z@JOt}c3y-V{;cC`7zDo6phtMqDU&$_OvHl1=opQI}_aOqXKuw-KjT2Mx7@4zw88gZ=RW(`cA$}5&C4TERV5t3nx zut3j=ebxJWtD2;mSg1bX`?T@dzK?=ygL9kNWp8@!9$rb-U7-B%wBds%C^4KpjaV#GXhFgsiqsdyGB*It6Gb!U%+?!M9P-2VMI_xkuSx=j4cau9UL1oO z2rCqr*H;TQKMWT`?>%`8IBx>dsa?JSJ=K# zr46IaYu}q(ZJ74Xtc{t|;V6~jq(vArh)<$OvmD8Hw8m9UrqRCS) z5KJNb)5yLLKLted&o~gRbZ~Vn`C%%74b#g@oCRrbFt1Y=U+yjl`mq%6buSg3d`_WY zjVSj?v*K1lR5Rlms--nQ45aSUke1MnD4N+=nscJSRoaFKfgse$UIZ z_@oHNzn8O|Z^1}q4hSid2(e5v&&o8#o#Z%`(YrS?1KKfbgw>5QjORngsfYYZ;-R^4i}Ih_=*sD^-8 zy0zM+nq}4d?&0*CiAGeU@cCl2H+4lr0Zr+I&RFi&)Rp^Br}Z%1B7WqpQ(X@ zzdYI|A33A-3O|zo6NNrqTEGidX!nO-WW2rfAMhK^u?JmMOoUSEV^g()R7jaYtZ?>d z5XAEu82;#)L3yP=(Si-S8-5U~3kI)+(ig_uwqKc!k%v-Ju5HVDVq0Ra9npFwq)}RS{vmxb%n0pzs^qvowJB%O z)y4=L0z*62^<;{px=#^jQ7t39PoZZK560Y*BjD`fT-?S)obm7WB&+ziBOp(i(t_BI z1g>!b^kF!WW+TQOLV(`(efdhFkR1XJ9FBdcNNzfL6eg9TG>*E}+>q^bO9NV0MJo zXd369hCm=}*2pS`IGO>nM&xxN_G7%$jCk_4izDqrToHRpW(fAkb8Ui&x>&LijD{bi z1VT13Rh(RQh>bC-XzZd}z}+rdJ%rWh_f}tSe65inb^fJYIY-39gotbCHt?VE=si-j zi>A7vmzhBdheXCw=zFvln3P3Q^5lzo>c3HrBvN)9PaK_7lJ^)-V5C#32P)=N?4{K9 zU{A2_QmO~v=UjSs?~jS9dZ`sZZagnwiHEz-J5b*B22Y%3Jmh-6f>z7v1J zU*=2}EdG;FM>D8s&ayFiX`A}QHZtMVA;uZOL(=Nn&zWv2_M*Q)5lmF#anIreWFi)C zz-~^+O++)~e6HV3)dO5lDkeXs5%0Yao;;Q{zo-!!bJNs`kSz3At4^BrEa)FrXVOAjTUaOEALs3iW5=ZO(c5^t~SiBe-cZ$Hk7lXOy7 zkJVhtlQd`GYhjIj*BwiFVgHlL3q(i}acNxFpzsMfQK1nA&^v_s#8W!?SC8q5m^Rsa zAo1MvG3mSi)Lf05+zUKa(UwEh9b|kFU!CR)tiqgwHW5o+mQ%v$&1a4A2iSj^bQJ5* zKv%y!p(KF+ch$iB@2Vk5^^en6ww7;w(zYwZW{sZ^dpsrHR#FJLQc&uk0=_q~w2EJV zB*PdP)IyO>%Nj?xcn^&CrC9DXl8JXDU_$+GZvWF+q>nGt2V~@)&$n!+25iBRU9PqV`NrW)>0OSLGK6AxIM57|u4{@TOj>0sksN?Gv$?Y8qJxUG=i9P_ z1{{0XCz&1ed%p%HaA<#EFXA2Y`7Y+dQ&Aa3Fm$j)@I;RO2ly>nDqruL#GxFcPyBNN z^Bzg&3ykbvRTmu_v{Ne?Z8xb<;2g__VqKSfS(%D+lKnxH6^^*cB>UH@;Xd5K=Dy>1 z`Hty~OR?e-){x?XQDf2HQyCUr6{~|M#RdcO3LKpBzXxtzUAk1vu$KL$me>B9+Dxa{ zMA*xrC5`FD6^l#EIFa4t_*Mo7FH3hG0#?kjDu08pTe0RR%$w@{U?0*S27l`gRG(-H z^$Xy2+Li_<&q^9sE-x+gMX3fG5o=Lif7L{R`t?X`lU^Y`L4$%L_10buys_`pA{S@+ z7U6|On{kfmA17(L2L}i<-*!_n2$h)L3@WB`SpiVLO(MA(Y=y8Bc2YJuA!cL>$)`?<^W)P5TWM~B`dd+G_8 z{RvI`LmSvCTq|gwwhhzk39bh1=mwBoj&N?3TegB1s=`EHIQmKo~sm;cx;ZvC)wC_-z($sCN-JvCxzH*jFtr!9Rr`{AI^1 zR6;|*e>@t;abSP{2X`B80xn0fcy$yPg9bf(7~CwgDBFdxgR?|@7YJE$nd_D@2k5T^ z5{r5qWA}iqrkhYjEF5gV`JBy3Mq+x>^XL7qqz3MX#{@KB&l!*iNlLUsmrOQ?BY}21abeQPO|qIwz)uqsCs!1L!_p{rn3NKVVuiR!f7^lnk!FV5TKm7TSy=B7I4P5&n zE{hE@x|kv8xbEn7#@^wI!;1~*rWww~72D@J;K@3hU8P6Z>AeElxq@|G9j0R)RZ@kh z#pF7}vPOg2jv&5gu}+V6+)KLB;Qmru$GAQVzc$ZtcCz7ptnIz>_F$dQlhLwu__D}2 zBN1|G%$r$&jo;*-S)la=p#h4q@mXqy>MGp63|fXyRi7_*W(1k z!M!_*+nStW$f=JLQXU|R*-U?&oYe97`5<4e*in*9@$kn-STx=i-(M(P-Mhk!>!FWX|rkb=g`gTnU}?dYp)|M<&L`$r$%)g z@8sm_>8Hr#OAo2S>iMBG=Yt#{&q!6Qd5<#fmJ6c$#3`gwvfSrbk9L3;Kij3uc>W|^ zYlHc=xmi+NB{GzYaXU&SYUtFCBjJ323Is$*g>4(Gj^?np`5j=t`uLj}n&N2;sf~JOUgCKz*=G*uVg3)9+cc51wXrN$fh)!S8o7FC zYR$wE)$Q|`R~MsR?gTpd?e{S+KSsUM33STapfNAP@~ZEvoUzi5kO3DD!TeHOIF=K~ zv#oFTUkz_*%a;$m%E+0NjS2)4#37gW?w|s8ZbnW;?Ha)Wead0W#36l)n_|8VG8a`B z+Bxf&qgA#DK?kOO8<|$cSsc z(_92k8X>MVmlu=5(50aXgyf3R695TQf5anBKv6)ILBSEi6N2^n(|L5>MFcClt-Kx)LIlDioj?VzQ@W_FS zVYKqs>BbAt3X5(vQeL!+$Lt=E*1=Gn(z&3$2}0AxI>>v zE)JQrKIIKO4}FKcj{(_DPnbP)CgKXIk1((wiciE1a|f!A3TimdA{;F0i4+C$Ew6SR zzuM(h(}WQ@)3ff)n6r$?DwKZ{yqK_k8zD@7h^5?{zp1G_$cwyLXlH)(rS)E?=kM+l zU>jlR`cDtrz%`jKAIdP7A0N(e3s}nTlkD~ddl#geH_jGB2Vt}ig4^Em6kFDa!`o|5 z#_m%=5066!_R|pi2Zp^Jj!$M`KSny(716|sfozYO3=UC=$k0><#AwAXrlYIxHiFP& zMPAyEau6;JXFwcNojL&@KJ1eIbZIZDa0xh_&}Zy1w~QWE6+!}k?L%M= z;ZTK=Xq)_o(;c1%EWnuH1w(6O{&cEL|2oXV!=n2XF1}uv%!mx7B)Kt8rQC^T7Wpku zIXAu)0KQ~JGGo66GdE&hGGCmO2*T9t!ePUiL=W^xlD7I=?!O2Yi3@}fpPz$G_A*6cU2Qnf~?8?-OIfq3+w6{{bx-n!Dv}h z)%2_<4j?Lxd1Al}FFJb%POxKCF-~|*t_NOT6OrpYXMs(GZtpy1!6bg#I&EPzM1BHk zs0xL`o6Z5!jd@yZQcI%hgy=k)oB9hOnUMz>HqEw&vG_;;Q3R%~Frv!s_eexwUejDT zuD`wUUBfZM4sziI2P&Y<>%FR(l`6x)>g<>^52BY$5Ul z(K51g-gMbHW_SZXLIN_F!K0#TeG~V-ChD1KfhUrc>TG5a*CxAa76qf4U*lf?)1N{o za#h>kLOc9KD;KpYf6{gq5O*6tH{?`wM}foy7w5!kQD+X)J&EUH*=v!MikYbjoxIj- z*Cf)(d4(oP4c~!Q)u`MUR$IgJ)h)p$W2n?)m68lB#p+2LRATXWLR3rI85-5r2-f0q z`wjQll|nWV-&1iwmC?hKQj-a1JEp=K@RLK$9m%cXd5mJ4^*TwZSI4>H#=bJN0chlZ zaplICHV}{G5;7datY=6O_Pf7svrdBANKj*Pc3RwoYYkT0w-}7|w^oHUIe2?-h>US}w$O%v%&Bt}4cFVJt{evI|j> zYAx!9)Cz2j+0+V#N@NRz)snl%yY6VWCbK*lbP=6#V+ksA9liw-@8(CRhAvD`^~c%6 zNrTntLsCp=$69ZHvxl89eKJiy7e<(hr59M}1hx^+Kno zE;c*f+h5X$(_5E(Ak4E9`Wgfli)%_eXyO_)tQLQTDkc>IvL2Z4`qa99QN*5e3O%nq z?#sg_qGw3@2zs9khN);hYc{t|2%PVYtzpM77^juJ6iR5m_j#jqY za0=#(b)~~Xa5l%!v?$X)(S6wL063TQ%<#f3YONw<+0y6yq=*-iVCBJTjZTKJ#cZ|F zAM7djU2M}hIRgD&v82)XtB_dF9fel&Q|$Q~n@v`Si#1MQG%zeMj61@wFpMRcOFV7F zFs!pN42SjUZj*7TE=>f)Qv>CiAf$c8ux(n=VAXWhzrWzRCSN->!iDNlhR%tt94$(FFIX)Atk*6oS^GhU(}SzYQJ|4 zz{xnVD4{>$FfkiWR3c9%IZY&zxn=e|<46wAKc;6loK|BQW{-AM->#V)J^ibqo-~2i;rT1hl=P24vj2&nN!G>sKOBJG@m5yz z`d`)FCnhH(PA<)y%NNBN#bqp0;}v1Gl!AoLbm9JID(Sofk<1jM$Rxi=_1I@*QC>ja z^V#?WaFKa&qS@5Eb^WE z@o1Rs-TH`gv29_@s1*rWZn4g`{A=_i8+z;G_ce|Ik{uXVCda5sg4@4yCDd)ABJ;*P zQpt_eGp5I06QS@ZO!)%V(bgJ2CNb}BNfgI^tYzBfQpUDKYjnN(Hm&JX6EhJ1tt2A7Zl6?V8c#PLS95h zn1PY~-yc>GgfZR3APMB=OlvAIYwsgl=6q|zEmQe=oUqO3=eltvw`7wgU% z32EX`Y{Hc##!zj%Rb>27cu+c-tv7B{qL}dM}b&L_cx%cS$B0^XhSa;Bu zj;J!69;`JvvgirS6A?xPQY*rVWR8;?_C%rLuM`P71-yAvXl&5yIA8^*<#A|(`k?>NS5H= z#iqA8q0KV83G@goT|}-c={F{Wfj}uzuYSm3$mvPf$_foSHK_t#47|*DNh$22`EKXN zgnHgXR|ui2rz*Dbq&sbcrsQrt3VnVsot1j{yp7)I!HF#&d3DQZ({|?_6Zn1$3@9PK zQ7WLBxTr)IpeDH2Z2oiBv0#IC+ z)Ez7u@!1kX8wrxMESM2$ULe&MGoE@>3%Es^Mv?~G+oI0_ZrA4$-y-1%eEtzVm9RnJ zp0Q6lN)!J*{xWuh)IDS$@Wn^aiT4Cv#(Smge|^MlkZJV2IyE&*>-8^cHqB0`WwhKT z-Gkb$f=>bTcMbIdL9TjVS8n<-K8B-A?tdwC5sfkB54@WkkXz*l>TOsr;2Ti+z4KDX zv_Z-{*t{mp@N(OK!rjOCe#D&=((^yN1#&Yp3z1s=Xrkk@Ps%4_lSqLS6vyakJJa7SzQyZea%-E=!N(8 zhc381QfywA^>P{XlU7B34WFA!ayh=RYi~a5XS3v&oPSgy9Ik7H zsHuFTC6FDyIg=-PxDCn+%#K)HB3%SkZ_t?RS(B)2Y9WKBgSxcXa7+J%Vy5HdP%Oy! z>sz}r73rR-?1I#2t4$L&)e2Mt1fJK|xZw^S=9ooz&Z5h&#dz_&;h6lDnRA4f57#Is zI^@_;OanV&_B8tg#+uS-?d_F!>oVuPq*MB>@cS(|Z9M3C*dUvstB;qv)1#09^T1SG zu^vMYQ*cKYmU+!E{cvk()x9v z&n3rq^l2e2kBL|#stKW!-4uwJ-hgJtxT*t(W7rzbCT1vYKpy$| zS=YEt&<@8)KZch7jfNq@5vcGTvoJMMOi>J3 zw%nAwJ0fpLycrzA^wkZhm(kFl)&j0zBc5pmt`wbN!%p0-PuU^IQMgyG_yyS^`!>%v zcfg;~<1G2O5@Sla0?J0QJ4yLwbjk!XN)p9v85MFl6&Pip^7nD%F2Ms#mAsq88bNni z6{7Rgqk$rRcT<&IZl^N&Y;Dw1aXlCo%EOeFq$4_1>bu34d-jeEPvqSEcj911k*O zC6#Kq56ab(7n-^MUV z%9FykYY-0Jaw0*2h>&>1{(a1;7W6>FcD}*Q_HIxXVp7%?y^Nqs7B*f@-*4e5!^Iyzez;7M5*qCk2K4jn32V5H0`;D!DD+UCyv z74avacwlP?z^ieLiTy?;O}(4(H{?9!;_nlR6<^NV+jHU@w)8}sP)Lpa)4vuxlBtL; zTVI=Z`6&N1nf<>|5Ulk7p&&H$tZ~FJKbJgPT7I^h*=g$`JN}e02X%Q+9Uzq1 zB~{C02a-k^k!?nJyJl|SJ9P;=s0bRXl!iir%bhEM5UPao%0n-gDkCD_9nPGL=xw@L|?wbOnK1>e}Tec=HUk_hhT@PdQyl$Yr0s3@q#h&H(n6}>c8|WtV zbU!Y?-y--tuXj)Syq~D?(RT_dJx)aMeeP^cTK%=UOlvs$>{!;u+A>OwN<#i*$nbf8 zGds+P^8BndNC7##>Vip7gA)g+Q7+Wi8YeB-n;a?!{YL7qQ8Iv6YDZEzPT3ouJeYz8 zt2d)G8>W++l!?@1=W?0y?Q((?#{oKo4j3Sb!O>q`-xZAwUf-GllA)a}Kz%yGlQ2)q zn%5Vbo|ne309a^fs7a)a;d zYvWm3QLu}m@MfWWSsJ?KRj#yj-C;JDuJ^hwjk-3pQM$TX=L=X69UGQ(QJdC(Y^G`^ z)zrA|*N(kBZHnfxbo8gIqO+@5tj;ZYl#O~y0ry+B0ArnF4_V@ERtJu0Mj-8ge@59SDeHmo#LvcG@Aq za5hLC;6>sMLkeT$7K`!j52}e>0g#mi8zN-N_G4rcGRW?-Ael*I5-Sj1dq70@Ho@V9 z*u}T<@4|$!F|Ke4>~e>}0!bybf!8!hDdO6s3?jSh!0PzaAr|}JP5e|Z&J}HIWvpCk z<@fC@h3vuQAl8k205=f0WBm$*uHa8|9M!GSac(-;4(c1E$$>F7^;eDsKUSf(@G7DY zTm81ltw8s!Ti!`){>4v>WIoUr;$sQGpP(6D#qAW3Wi%Dt5rk_0a7u!B-3>(`%V5|*3wLjnT1z7rU++v^L;SUd$f6@U*_5=l{J~uJh z`=NI`h4`?CoV7U-2PTBrQi0`hv9Rt?0rx;_VKKxG*b;5YRiB1&T8)s5qsJKV zgpurpV^OTU5{OzpnG93ryIhk3la0$_tKT1m<+O684yGn#EE=#I5kv3yGCD}+a6@QbPV{!{eN{S+rL(3SCN>81xTI{{w;q$iC|ApzfFTiWd<65B7NG}p|7lTXh zSj&gJ@hLtTd|A;;p8TN-mWD(^ifGP1H01AWI2THq<&m5{O{@B^oHu$N*UU_M9ob9* zNa>U+$M{G-o#t^0#y4jUCD~W^?o_Em#SD8geMAN%w<*$%siJ_rU$iGCwb9cDKSEof zlK7SR@)SYJ$r%@*`BDV6yDUVhO)i*`vY?qmfF@!$Cjr46d)@79`$6;O<9`SY-sCbo`0MR9Y2L~OB<=Sgpf7X zAOS;HNX`~W&JY^T&A}F))Zbp^C4XuYo*FZdqjFr-4<}~oP0eW#EIc@3{N-1R7(YZp zej9|F$W%%(K>C&$WiLFuk{HNCwXQ;;D%Y zT)5tC+`uz$BV6!+s3PA!HPl%ht5k^LF{vo1rqwnHAw9=(yI+xRW^`W&O0sr&sD@o$ z=ayD>PTeEkl;qXk^UVe{a4wha8wIng$&t}OsLj=ptVyy;7)an|eBiCtx*gdr%+!(W zer2Nrswm!4mx_jpG598jFOh5}SCTAjCog)JQ2gSSfN`d0Q_NWB*ekr*%v1w8ZvnvmeCrjr#rBIcrAnoDRdh8~lbuC^=ijRxPP*GsIQdN+D zU|o+na@0$`u>>}3*xyxyto*2U6#CEstwmfPJ%Bhz@_{!1saFzKoJ1 z5(XR}1B)cePwaP_qoXMfOAU;m6aIE2n8*)KbrRMmRLDL=v2W`fWV8~3lH<6;X0Xoz z={QeOh=N@k+o^U$#gNU3$Z_yc{(#Ed6c&s}D5|q_e{J%+CkHOf8rJOuj?4B(v@Og6 zy(qYGy6&6@w1ZV_f<=7U*LVsN?QkXmdct7^qY*?q!s8-hlkfe)_Dq}Lk+tU<*UF!(6v6%!1P9=Nz0bVxnZ&7s4bR-fnjCU z+eHfAxcc8Qve$X>Dn8DV*bkMge&YC&t1~ZHs>Ow>lVfO{E|u!e#*1_e*A@u}8XDu2 zRE?JEb9%fDjRYNfQ<#J)< z6I2&E(nBaIm}JP+=^I(rNyS6pt|-wuEW9guwe;bxd|Ne|37k%k%jd?_L!y+P_rl2w zUS-P?#}w&i*kGC`S=2I1FWfVZl%B<(eIr}}?`G4HaBe-GF9ZT?0tmf?&hF`Gi0zmU z^aC!JJs_Zr7z6o_Xt_1ywVXzkPg>Kfa*EfF2&L5nBCN6Y7h=AQOUgqjWF7Rwil)9qNL?y5(%;odW|9TB1<#gM>c?1B6LQOA zIz|)KYc9p|l*%_EvU`5j=XY$1*6M*JR0p$yO&RV^R+kbU6TE%|FehPh|b*VtAP)v6dZ(%Db_E*7?1 zB+toR2J+6M65mo+ZQ*)N*pxD;UExuS$DXYQK_M3EzPD5gDa)2qr0rO-!4xzVtkNXc z`t{F%oY0?rF)FrI{5!!Z{Jp^ey%PSi$1we{wZw2+gvZ3}vR7CGefChA)9aJ`8B z?2W;M0jHWo`ff~-x9L4rX{{v#4u`iC}IDzH_+ zJ|S0Feu$S#1FxXu(6~*x>OiU~;(1pZbw0i zcOtsuMohnCM&whzdg9vJoEsjeZ)-@sAWVwfGoRqx@Y|LA2Wq>#k2WraOGQ%YQkGD)oG<2B z0>?~Ze#s#H;EHRTm{mE56TzJ!EKoS=7wBeb-UIg-&Cm;73q7ltloXE^`J-v=3s2*+ zX!S43=3@`MPTE=z2=@$>K_Vw>@@y}HK9p}EJO}sgN{?%QvfkfxhPDXVm$BZWAacB> zJ=m}*r?qO=-+%NiaW**hcJOgPI`*z1^<4C4?0Kvh)$&j9&+9FGqh!;xmEY};{h>wu zH)ua#(PRErBR}RpcN4#b)JW|UU95Kpllu6WLR}6k9C`RFl$Bc}!!aMsZaR*$b2YAd zIQ;pt1UU>&#+nl3l=ZYFdn8*KGkYUevPKR|8yVX}6Ln*z&_s|-17=paP2pQ0#Ia2b zFqbiptFG59jj#>klfsiQ%OxzvKrCXk{Fboya!MmStMIfK*!{eTt`+RkM9(knI*F0y zeR!T6e%?>J!?C+$V(;rA;KCx|`yrhzEBUBx-8UJEeQHUHVSBODic#dq@!^r5{pj!0 z_<)zd`=RbOH%1S;K;p*yMJneh_kqr~x^c&%@L_U|gjXcV+XFJ_9*AH$?v^k?Yq>2+ z5}REv@3_WqPHp|rT(%};>?_e_%ixuL-&$krCJE^tIqCpu3t6dqlInNvYKrQ2T(j{H&D*Ad zww2W(Gv^Gb^mWU0s`TKLkO?!)Y&C)WMj1C}wY)_u2SzZ_DJ0`Ca9YL?ZdzSaYs7tt zC`7!NDU9RwCr-#s^UId@^!*LSQMPrf#Ahr#*7AK%<%mBTV757HRlmBhEL_Eevhjha ztcb9lD!xIeEQ?2;R7npyIf=X?F5=hn(xr={rUxIK%pN5*K^;(ZFGDc@2Rw!~b<$v- z_CK#5(vHnq8eP&#zxWb})S?G)O)w<tU^(Mr$5B^h;J-w<4YJFuY+Ypt%u zQlAQBAn9qb=>nN2<-T(p(;L~`9*y>TbKvN7Abfm)*8ISa!*zVI`@#qM!vD{qOgU7u z_&@lSIn@6pWvv2{1fyGJVvPr z;-{={f5aVqzZ!he<&+xBj%}Ia6Y(fZ;w!GE5>nOLi}(QmrV6 zkn*8>`gApS3jv;OBj09c&avyY^WE*u&VFAU?0khF^cssz-puuR7Ig9XhJ)FS*_t5G`4d3%|)$(xnvmKi}mqM%@vCiL;2Xo_1Se*5CEdP_A^@sLH#^ZG@ zx0Om+yd@}Uy*>XQ#d5FjH?*l?)vij-G~Jgn`KGYQxD9>VlXIAeV=zz*i^aAai#ms2 z-Ct#^8(QlooET_da6inf8aeh*Arg-^`=_z;`d6_S9DXh~9HRaGZHX6xb8)7>CiDqD z5)Tr3f)7*)t3o6oj>hEB`Ed77C)pzL(PVVtVAJ&NfS%cYsAX0fSelYaqy zxp;V0ZCT`H^#kiY+M5(EDw8UdeM-@=rys1tuBw(xKj>CYDi0$Mi^Uq1Zm?_VXITIE zAm2De_Y@vmwd+;58wnN3kKhBmNE&$jMP5@U@Q-f1s1@MkRbJGGP#1I&F$`=uCe&yIA>!J)MgE z&|7@Ye|jCmSNEUtwP2>)4LLndpG)o5KUh~g*DHm9+IU12>Mg+1=3d z9Fs$+1$GHIf~|*{ASa;5TZ=V-j;oQ-6MA5dvyp(uKPBLTjU#Ll)Dm$1J#ry|^H?GH zKH?07Ay|(z!B5~xU>^hXzM>6$A{>uvg>AqdmviJ13mKbdkL5XG==im6k|U;iz@7HqKJ5@P+b{*%6w6Yr&9scuv@Elg z8)^SZ#ALuPCOn+xfe@*?SqMS=E z$`cKWc%HI5JNjety&=i`+Rj~`U>DDl%_GbbaLyNyk=2;Dm!$=Q+nw(3ax@>k6Q$+M zUE=Ff&W@Z9j0}#2Yu(nt0wq72c`_@BGWGF;t}==64z|oB&}{AW?&*7cpD)#De(34= z7N}i#L(n|G_4HG%xVsbws?ukRP%6~vBF^?bzZO%aC6oE#awVE)-oXp&iJf4~x8&EVOZ5);Le-sa5&vTD#awa&U%|leB?t>v!k-q{@9Ad`3Woh9 zhzo}4H}|)n%x^BJU(F4`@br@~DETklJrfOr@j1}YS%LAh0f8n~NPMvYf+iyjA$0(t zN%i1eeE|lK8ierZ0;4@m*m4Q*)#HQ#*0skivXN1ynwVXPP%hs`s+|S}pUSP1ff|b} zQFeO<8@nl44ZV+CdLD-&8MK&%4{f%ksrJv80K-3;u)cS9E+=AKTT?p_rWY`tOUl@s znILUxnF&6*2&rNdJClZew8VtdqOu;8Jq@dOK%YMLqepmxrG&X3+-;sPJUpS*6XLT) zZSAbqY&X3@Wt!7}kgG^E!|`7(RJY`N0Fbiif}qUzD5 z2qs)@RNN^C3v^NF-O&GrbE&*dn&6yj-$}wIa*E}tYUE8 zn8q%h3iM1|eDcu=jck?=RdKb!UH9PJ3vp`If-q*=swnW&{8vv^c*NKjmJ2FZkRuLo zb;@z!i$-|Nob^l2DxTe+$qht#W>nDYkZ>wNQbMIt1BBEIrYzLUSVm|BgXOMQw7JYR zAZeD3uj3CRoU)j7P*UbWX$Fm#bN(jJkTV6k9so#pnWE{3)Opf?<1r7dw@&GpxtCn0 z{hjo0hcQIdG+SXBQuR&`{wugB3Ni`{fZvJ$pPZI3=uj9QPV>$L#-?Lq%7hD)nKs`SzP<%-Vl_(BD{s} zegxyLlzq8QTbQ9J#~@z}Ri^yfMO?Oks4rPdz;AAd8JDSkc+1T5@+>Wa_Jn1zQ6yBw z8WfGW+>+bGC^CH#<;Go`213Tc)UqDq3@-M*pxap2$ zM^!+#cjPjqvd)XP;6>(un`2~gLa7IA2Ei!@eaX;pP`RAstM*hhrQ}3?k;Ht_S(0NG zxpD*4c(G^%8U!Jg@*#(5-PV?bhaq|YaR&=2<+qM!k;U2gUrf4M3$H0864Gr^$7eFq z^~XjUNl7XaY7XDFF#*zCxQQ46+T{mCiW02UkSeuM(oNJGP=ptqc|zFsYatCC)i(4$ z8f~9O*Z}%Qp%nw&J~|o>57E08jR_iDc0N_$mJ^B z^{2Ak%M-HE-L~>Q#SjX@-MtIwRc>^|d@j&0uy}Z3S`lIb}M z0rPJYRD^HZ^mL%x7yah-;vjA2?Y;Z@z2@_IcK#g-FbDhi6}k{O`ZfBB&wuRqas1l*F5bxhHNpS>ehKfs!t4;8 ztEu%CGz*8n_cmbX=Y12hjdSNOtO!m1TMt<I_1cI0- zVKpBiYC~wFquKXaIUq`;)i=g8a;_sdSs2NwlQT#lg+4##*w@hE!IaAy!TEUb#c88A zx@Lc_LRXnOb-&eV;Ur-*jXDKs%#eypXX1#}VUpVPM~k8swITmLIH7#j$$p5!Ot^7m zS;&*HI(e!KPYNBqCQXdOn3FnK>?uHR=|OcDrwsd^@%jeq_ii|*KCQ#YQc_IswAZb~ zvfx?HlEyx^WtGX;9mmQTO54I~io&e1RG_yoU#}1|JAMB~(8Qg)&W{KeX)h8)hbV;8 z1P(W>M*0WMDfkKioY#M?V3Ch$C&^jncMy&H({OFYEHcNxi#BbXmx23-u+}hZ06Ai zP@^v};KUekY8=aknRwkpqEZ&rlu=zi&zst6$r0H8bIDxBEIn$rBGo?+ZNeR!|L0;3 z^6Cq8`LqP@J!^?DH}K=oNzu)l=S56Z;=wR{z~_yUApr?r|D>%p=UelVwZQ`lP)paftb8n-ZO-A_viyUYE`x!V%B_P01@;sI*A5sWU>yS zFS4h)0Bg|kcvD2_g_p0Q#y>GF)^X0nUfo65YnSBP0{Z;tU?2bFJ#D8IZ3Bz2*Dp!8 z`}F?v*@q4Ue1u^|*;gI(fb0;XI{m*bx^+-O>a|BjO>J)d(X6J8kF?(SF+a3EKn zeQWia+5VT)=rz;b@pv6-4Df5|(Ok`?_np-1dcSmBd2|rR^SXA;$mwQe`$6UIY3j_y zjZMNeBe!C=H6rJqhi%yTlbd7qjUC`;EUf%eWh$K9szjnPh!uQg7n2T1|88~{e zcDuWP+Te9?2l=v^=#PE%>p=%!;~%-uGx|4?;g{xA zwNJo^P19<%mBp57ua%GPp;eZSu4EaJ3i1i!39@w%XizW^M4GNfB)8V7 zZ9gtcl^$DZ1(Y!>>~*yhG8pnXR;CZ*>sC=9^MIPnT+o5D8_B`VQ_vDt^?l7#hufDbB9DWRl(RB6Yb~RrWV5u6|SC2&%;T=y*BT&AE zvAaiKFVzuj8)NR$!Om$7M2GNCM97TA)GAe9mi>@^J@*#ggR|$>yvCgRezx+R*|8_K4#^f<6Izq9M`}ULfY^lOhR6=m-D4lX69TSc6{611o)cVyeHObz=mNpd zM_j?|7qtj{Cb?u2g3bqo!`#;tV(v9YGBOb^M!bkQM;t+I?yi*>K9PkQK20IIAy|1Z)@H&6iK!g)D zzEQAl0_=#25Ac^WO2v)S05hHE848BdZ}{F_Pbbd?X+?$L({HU zlQYed_YupC{9}+C|1@dXe+smLb4l^FMaAo~j1c;`g7~&aG>0FIrzBizXn{pqml87& ztU?1z*+(MjS-jB zLTLLFV^iCz2c}o3w04Q61IgB}TyvrF2jD|&nLn_n=p*p#wEPF*<2@plonW2Fe@ED5 zKD&(s_mZrOuD9-ihf7&cmVAQxoabGJOO`KkCV{>*@ksg{hjUc9iOCwWGQPa7{#Ag8 znpr%S04C-i?|S~rk(TA|UkFT#TWO_e8rthX(ulqag-cre;K>N;@Eu2WBejW=b47I{ zf_-nIPw}N(tP9xVv(iDVI?FOdHrnRClEMQUqK7KkS?lvDGX_i&AG?f^qSlP2LWTgA zbD0B*uZ3s6Eau`=>c}{k^(QhIr*#T7yx=xfHf^zeVb8flx-^kW$wHDjg$PLGFto(8 zied@gb6L;zEC~W7pzL3X3r(7)P{W+*TtkW>{wdrZ28rZ}d)}WE7!an@Y4s-Q|7UO^UTyiOLq08*@cuTo0k4~DFf)F8IhfH(U$Si1~dD)*qA zFTV?I*{rxC-b6KavfiHg`ELh`yes6ev;qw^Yjly7r%trX(G`+-|Rnb6SB{8oi{Y z$~+yWa&-QlCT!pysJ4T*)A3r$pNaC?ZIb6nlelT{qbA!)|C>jvC~DNi+7S#&FybkA z(S5rzEY$$UCm?N;YhTTbjd@b(^s^&ZXP3zZk|&rmQq!EIsfvk`i3GU7k~lhG+{6NE z0eNqUQ`vJURb4(X0|mfy4ld22#cO#=Z^~h7RYd}6PK-3!2pwmpNv6<0M77LBJxKr6TVeqXm>J4s9CWI9(2o-cM0g! zcx4YlM=W|Vxzpn@Om8|zGX1dM@mmD#p){`XeQ}K39jhTMa?Hq9AjO_|VS=1c+5@m5 zN?veg-^_$F*S~5{p5XKW$%M3(sPYZRgtb;^=I}A@@tvqBnqH7@Z!!-0o$83F2kV{0 zd~8@JuxelH2r0+E>X>t^*t_8nDN8yF_Upg0b`{X{sjI&ipPm0Ba^im~oBlsGmt;R{ zt9EUEdShPvrqeoPH>IbmBYpnmYyR8o*{rwuSYYN@grkP(&T>lJ4+FZT-y!6&@<`!+6y9KxaU#*t%O&jCG zfaOSO?TysoXrk9&FlgEzjn$>x2 zxTzmmz2(w8B=4Ov=BCg7m-Y@b54NI%)-$W6^zX?06TO;qoCvwogsgY#o0EIZsBHw! z*Wt^p%4ZCFB~TndP320VO%*^kJ`k*fC{);Ch)Dd9O8jfwlc|FUiyH}U=B%=-Ux0!@ z{ZJ?QqNvIijld_m(9FhXFlVDV(+X>4|EL3Mz*~sa5YUjYUrs|rgXZtw^J`Q(9GxqKGI%!JujR={3*s#WluVFxh+680c<(62wj zvVia<@mf6KyvKs_WBPi#h{-fiO0S3~TAJbWvdz8FX=1K7@QRp=Fgv zHwWU$0Gkl?mqNo?uV;KdF?!sXo8XuD5jRBE=!Har$^bY;hnwM(sl|Z^|1klcpfCUE zqtX{nD&0>PgifllG}?cUibySE`&1jw?&QI{F?%Hp#f~UYY0nEMbG){^bv-bRk|?{^ zN7tdcVjE%`a`%g_30ja`kz5fqA;0|Hh4_ScuIq;o43OavS%YpCyFJfkA+XoL?3|fWYC;1AyD*=od!0e)~9F%?Xtbz+IXdoxCdj^4j zGawVg>4!E6vbgv(MtVQN-c`b+^U_@&1*`-E!2lP7t9;h zI>4V%UzjmfZ#n{*rr4qQn?>Zc*hcpKFK{~TFi+z7+g28QAteex+T$EwB$$zbfA05C zF1oOAK&p|hN={R)NsZ^w1AoO5wR-xm1;ZI3Ju9{87F&7qNMEir!tY;jWNRauwKX(UXga zcKwx)DbckBkH_oI9o~T1wDP5i$I@py9#q*>t@G&*Ry>N>gD-Vd%&46AWD+LRQ|rVK zgYZ8IXDL}4)W_5ags|7Vk`+wS)L;hfM0J!)Y{}7sZ3j|D%IVyE)TRqh+&6Cm1MluH zujT5hOXL%b0^sZxs|w0jT2`UD;?Z@HOF*4D>&ofd222tkKPb_XcFdNegdzV?O&mHd zy|9HPOH8JS4Yr*-L58;6!x^K7Q)Vq1qx+>#dE}}L;cSUwl6m$ts0j2iDS)Xi7UFl&MWSu zOA0}qTGH;2iiqLL43QYqOcp8RB)Mo(Zc#{I+C04Ia$X?^)Cez_fjf2mh01Mn z*F{fU!A2a^%K?iYX9MZcvmr&8pcq*|LBKMSx9o@_`_vj=>NGQUc1%+i=ErSsFW97&=a}a_YV~K)X+xtZWsVY;7s2*mN(7?=+@zHV}4GDyVhy(zmD&dgSrSRSt ztY^;qq37E}c723riozvEav%03$z9;t*fz!EyY#%)lHT?~sYyTnbF%zSbR+0ox>!9M z=L?QE&gXA1rP4>qa;Z7$oVp1ymvKa?ah`m*=@YpESniZe(e%Pt?^q^W=y8}^f2WR= z>&F<4BW}xHNyFk(hC*#R%#pU*?;}+ko zP59_VX7)_S(!KE<(e#6|rc;Ta-x9|-zbKE8c|bMCL`@Loh0z{iilXI3Q|>Islx)Rj zj@5n}5`t+?o#Gzd5gP)~iBBKf$E5W9b^1<;(I18-xbT5W&BsiC zb<=^?k)y4M+9S>pRL*4=P~m-}|Nn9bV;@4yuKnt!{r?-fiJ9ZSt(&3~C;!t^G%{N( z16?d3NEMbxq_|1RL3>OIPpj~e$J5jt5PLQkGkC@zywMMGxRX6n9bO}|)z%jTNDSFu zT_YlW38*lJsuMb&hFqrAuDTJ z8VvZwS5!Gl5GGe5GWtFO2)@`hCB=x|K+K(|xI8 zdh-})o+bX)_H4N;LyyjCEQ_sAmh0FU>+QX|?FJ_YmmSw@qXvRIxA#{V&ca0D@|n~w zqE%E7l~q#$(?c}z69Z!B=wIx%crII;+wg27`k$En6F(GGas1R17YDWEI|^Dq%dbB% z^oIdVWv+sp{gPz_zX_HgpCGCLTP!PWX>Ygs(~bAMfPiL|B_r6+(xx~vZ`&R;iOs} z9<(oX2k>ll9ykZJJ1FjU2c<9S%p*0!g`GDf`kcsj^i9L%CSS;o%{#}3=Op$5(8Z{nY$x$ZB%A?&c-GOM{NW%)lwL^1Br{|q3Ub-7!lv{%0ZyX)Tp;E(uI{c*r_^Mn(AogAsyjO&gDgAUK&MTgJ?{TF%!1QSVb*@T zie~?RcNP7vX_^1urut&_e{LwtsJ)r#<1%c>9r^15Yr5MK%M92$5)uN520&qCf5XXq z!;3l+w`E%S$=U`Cq#~Z$7s^Z#r+MC%JQb91#K326s{01pVuPDp545`)r`L3I%$h zgE~;NVQyXgHCm0lN@+VJtm~4qNs2n;=vwV4Cct$Rq#QrNI{U@S<|T`mSl38aE*!Pk z{0Fp#_pf!cnj@W@IfZq%dRQ}LijY=3acquZSH-^a$z385qc6C*!5YoX=0H(hUt1Wd z3&m;C-D}Tk^_J_*7z|By_v)YBMyGG`^Q#0asA`y;%Gbo0lbfGV$|qZFZ@Rs7ofb1x zF^q3SPFL(kRI~~+##xRTIN~2X^ET3e=@MAO19nf`3wNn@q zS^`oqo2mohN0B9o({QITM{Y!{-pJ6GbcZPnhXc)M&}6X64XtAm;8|b~Gg>w(;&oP_ z;IIUlgM0H0gak!>%etJWemBbh~vB%WcQV>^Y|V;i5Gh)BsFu#HT4 zEpP-#IZ(ul$Q~;gO@+CfRyoJe1Gt${7{^#+v_@IydgP{uo3=+Zf6A~0R2U9kNWf)c z%8ZX?e?T~@A>$riBNl!Pd@a>Q>GlOxv~fDJ+!F^|H? zN{{MpOq&EXu6-!bbz~Is3b|B zsC27=CH4@eN{mEJp^kJPYHskGHDg4IkT(UIY~>{=(k$*M@Vs%VT`ZXXko$j^azsxuZP5+lGC5Dokq)9^ z-lXKKhwycUU#MAsTZcF8l~-z)6<^NBu091I>M3#1>a;%l?ShGwO}m+(+en|Ps$6C0 zc{G>tvE!g(?P;N6L2f|YkiSuFl?gE~mD@A->w>@|(S)K>=>TUy=@VKIxrZ45Q&55A z$pm`_ctPS3tU=kLwg|REVdo14H`hr7%YwN5%AGbm9;&K9DO4@PdMLuXia8+$0ef7P zN`xR%swE_6^oL=5*rSwJD~pAZ3ZBI zr^0)X{#8ga$R5Ev*#J949?3hKfLjC}(L3FMTVxr;ufKbtApAscjQxZGgCO$AJi>Q0 zzfp}-h#c~_aO?&9xIHiTCAJJkU}a0ADLRRMBKt))qw7vfW5tv?I%W^%R1G*8Hplf5 zQZsuqFGO;x8ut_qq)I#zq(5D~vtLFe1=MURgnr?+2(XKpeSV*JXxsz8K zUa07d-YRho{JSynd^MP;@Om>w7U*715Y!Amf~%K^!%r_bh?=isKU@kyZ+Y%%oc8jP zwm>!nMiOsFOQFKIHNv=Io-iTm7b-*i7xX_s(NP{^xg2Y$p^mZ`eLMYpyDX&x2gfSF z7?zY1c=FSruV}Ie9m8t*(FcPX+N`+=YF|=Zc#vW7e^J7vCFQ+3wC{#R{dfwBGDXMH z>6Do$<2@KW%q`fbJ`TUMJ?<`LDOa#u1nSY!@WbNlQ50O_6 zozW-2ssTW&k#>6WruwAU+@rC`S&xO@VY22K?2}HfZZu^n`YxSxP#@c*dKgk~q39x= zc%vzaYf5_{)X#9bNGw2>Iyj)w6>>yjSXRpxS z9(a`e<3qlVJPH7AEl&4YzrGhB_x+7D-96$=k3QGBa4*^}xMI*(6@}PYThoL>n_?t) zA=zFiex%;P8$tc>4{zZNNbKP!@~Yjgg*hRtsnWEHA(Bb2LEV|*ao5(>&po4ERt!qJ z8$dKp#j2GoYEiCcm|)5GSXRp2QIWnQhk>SaxCV)b>_B4c@X=)uZ7PSmqElpX%`~fM z`!+o+^3fKJcXmghPteN6kQ72I;>RV3p}d?OU;Fv0#f*RpEiT&DRd|xU7!Z>_6?uNE z920r`HNcYYur}6G!(#080ewd$vMCA4C2Kfr--(idE#3>n zDMKjg5bl>aB9N4ls*@{*%sQ!)#$a$g4;v8Fp)p?4L&>L;56O0bR}mp7_f%gNEqRc0M;d{yY?0m3Krbl07vm z{X7sK88x(TY0JfnSR8?Bhy;8vV)ZSvRPH#|Ms&yRy7K(qq57N2#z`dQKI?C3V+{f- zNbTN1xCo$$yzorA3h6wTiR~NDRL`}Q8DkA&TIRLyG1Q=pl{gcnWPZ^M_6@#v4uyOp z14YpvVeUg=*OWZ57`<%X!Xqz)v>|zr!`V&rT5-8Qy&8wNQ*|I7Zi; z;$?l0&tF|sRDGS!zXbY6`|0H7<(T^}@rpy0a-x;0#tr`i!7qS6GJ=wV*&I_$p5eKY zr5#eI>gYU?A@75A>Frc~+W+Jw#+GQjjv*^j%Zc||F2!7{EO}gqtdVnQ@=SYdN84^93~J`wE9LMFIKG6U6(?r6?E>YF;DsC>O$7 z-|qBc50VcKV_$LN?k2zGU%q`8^GDohN_%j_!#jeN*?mG@HV_J{;Da!C@r-hK)AFMV_9*Lul+cmG41kO4%ITsNXJaIM;nd?!*J&A^G|?+W`EGYMcEy zP~wS(6L|(dX$s`o@%x-r%Pax5mKW3MeDaTh$%p!lS^4<_w5 zsCS$p0@mO*vmLBFH?HNZXMcFcis}!2vpu+O-8*W}%CVUR;QgZsJHTfc^Pm@9aawTo z(V-|3`1P>zPEE3ElAT=DPWVIloyS&D#@+UeQ^xR{)<0}oz_R?<{wBR~!G;1QF|Skw zoc$p1nR>X<%fElVR9SfeWlnx?oKyRH-|;ivxKYwYSP8>I0;grCez*C=sMcwCt72r1 z?GWXE2mt!tYV7^{yJZCF_mdPFmxexC)*{iEWUfF;%q1a84f-{l**@Z1FEC8= z^+D6c1KrC7U24PpM*knd&&vp;koa4cRQi96l>84546Ka*y)P+IQU=)&Wpo!@2Ax8I zO%nt$ydK(QO%O`Le*sOaWu;>OuP|n)zhOvIpd_!wf#c)ZbmRRVk_-+*!AK{nYd{b&czsrQLakqj=s59H;Mga?#Cgr#(N<-rR)u(fO{9jqQ2Y zr+4zXu(i6~QKx6uWpO$jpP7c=x+;BLHeJPL+Dh;d-|%^!F$>0`#%UFz4RlQ9ZXnS? zbr)420)Rh`995AmKN`oBhH?tK94 zB#u70F>(|HoFE|~#QZb^e;sff;w8ii!q}A!Tm`v0flyqnyv#Xa4(T(}Hwd2~-vI%> zJNuYDa+uS@4T64o3__5HdpnE)cqa|*JbD`q<;9M?3rImtQ(+8{P&J?oUylm-`OjbPAT z(Con2X#-GuGX-&R{p|vC;1b?h!zJxcpqWBQ&p+8Mlb?J+JC+{|A5@F6`TUk24o`H8 z;&ZKOd=Wk5m+S^7qmUPH;_&9U0{k(2=aivlz+#G6zW|afMuMOP0|AU-n?4MwZoor| zQrNIOci1pI9Z5{*3>)gHmKR!!_Mqy+%TR8&bjoCRQ5G-%SK1~KURi8}&0FBz|7!T1 zei3s%{+*gn|BqAi|D+cCcWVCq5jp?A2j^&2ZF^)>l%E#a41|SW&WDs84M7|kC1JNB zD7O+Fn@oFiu@?1Oljg$kwXF=BL_GH~oazuZ5xZ#!xILKpRtsD$Mb6(pE|WW%4VVB&@~o zVc(Fd%g*)kNS7HG!#Zk68LKzt;h!ka`VSc zMBy81@iRwfs|&);KqYNdeVIwhN-J=v47dBF$t8hiP0nI+XGql|viNaKKsu5(tk;xD z=F~3q(*8Y3MfB=QT4F2UV5_8Hq=3OB)hvrHW89XyB$b|}D@3Jg<&vC&&8N1~*773B zK^YMvsG?G&Nyq6bwhBtms@xyNO>}>bRKDU8E2JrF^jXTQW$)_E<)Cmq#nhB(IW;94 zE?GpCm19+=@sl8hwa8Gf7agtsDfkgpQY$s_GbgPymo5LbZi+srT7)k1NMY7R-45W} z$M=}xFP)Tfu4XAC{Xi+#osfd}6EP0~1yp{1dr2i#olt1C)N`KxpjkTB;gZaFyo%NB zeHmhl<*=h$Q*Ao7J)fP?uc>WYWR-qjcwcSq^>eD#DC54Z#(Fb*dfn&GdNQ!j{mFWB z8XWc;nRVu>ypcgYweUdy-O>71;Bmfw%c2+1(YO+x2vtMF(y??15MRNowSKqeOM`-( z>GEp&=^T@z!M1$=Bg;f=o{e!YS~Q!};ksV@lr_(K4VsGmu&>A<_emHf@oGu&L>#iF zFA;ni7*&{37+}cmpG7c8>t{&JPclRk#uVlh1{Ee1MioZX(F?-Nz(^Um9)3(a5as33 zqZv@4zu0>|0JSzcI|x(9(0eu_6h`deY#EJgclUwfs!KP79>j*}hJg&>3-Jvh2^^|R zCLCtyBVe{Rc25*E#CS5mb#<@9v-7G0)P!dfGF_Xg+YEHoYayOy7^+(oHpCLn*ryGF z37m;Db`Ld71lTZ$A$ zZD(lwim^kFD0c6!Ylw3@Z-ioQyJpBrQ8yS7&N($+vwD4v0Cj!+=O|6yJ6_H`Mdu}i zdd&d`J?tfv+WSVYQfwgsF5#$=B$pPKsC+3w%H|wGvVb(a#W|`dj}+AA97Hmb*0P>9 zo2Yy|Awwqo&{ z5loID7K6jog*$dPF2qOl*gjFnPK>CPw|n(f%#wCmPls z$iD&=a2)iyyb1CfKCE&Wju8jGJ$qgM-ig>{FG zLyqk;4A(7qj+y+aQ#uHa1mNfyd(pmmZ8ZBEu5FL!pY8C_dVtz>NT3%InfBlq+l-J% zc08D0tymBTE$?CX#_e2n>>n}rPt><5dz*BIQKtttB5FTTVJNH6X9~Pc5YZ_nBpu!< zkmv*l*OYGtHX_Z*Il<#dF!1ibBp4)GE8_OAH8$-x2l2npK>SbOb;=fYj?SjGrY8UG z|3g_@9$65BSC~?FLJhDz423qY&89!1piC#pah~b`I6UO7$%cHBbaQ*!bw$B1HkMC< z$YA)aFr0tlO}4XXjMR{vliBIyDxG=v=Ij0QoBXe(H3bCqnbKTgUaG$(3?XfL<)L=+_euI`Fa@65y^0Z$ZTc{C7Pv>G;YVGW9QghxmS)JEr)F~Va6)8_b`jQC<9C@ zS$KoI0XI?nDdc7=O-QvrRTk z2P|C*&EUO^B9+~l=?nrfl{Tt3FT$jUair`cadoWCCH_-X@unD=x#refHRHeMH zJMX;n{PWH{%+BoL)cw5=*XO$K-QnDabIrDpf})O{m7|S%F+PNgd_Au& zqMmQI-IQR2eE%gn{_t750zswwPI4w2S1Cco>*v+ld0*WvW~>~xsh0J>5}1!TV6nb+ z&(y{9OumbrWL2v5R>1ST;>jvm67TpHXrE&8q&d7(&zBU^7)P4e4f$#F`=fTY%&&`a ztYjVYazuwjhm3(YEfyJM?u8w5U$f)WIpwpLNO>wEHSg~!oEDGo7+_r6xoiKBx6huX zJY_Cnod}yN;HLW+_D6&GqpG%qj7~?jwP`D{@(?uKLi7G3LSX=cP=2DRjC$}p{orVdI;#6V#aU-F|q4ko&qN)s*kJ`&m z1%}f(xTDENw6~s-SB24%@UTAXAbeD0A-v$wpk?_qr1xZ>P@?;lmb$|(?I!aovqgKh zaI&5^T6{{=)K+@TCaw9A>dDh=8OLpg>sH4E=8sj&2bKp1JB&)?UoLIr+n8DBRONf6 zVg1rwLSh_YPCkc;|IlkI9h#%;3H~d9LF9SJFK)!rf1^?^hCAJPfPZQwv*NlTs{s_?mvoM8|nksDcA4d zHsD=u5B|eHJd3)R$Q2h@BAbuAtmgd}le)6Cu}4MQV=e>}>wh&7oE`Tj>YI<}^PJj} zHwZPA=Vkk&oA?JT{7(G7*a?5G?zcBXB|>(-3~cTf|GVF2q+MeEE;-`kQq~ymY@Qld zhSWSbbgsl8hZJvgI0p9fPvfdKz~Np;^o;9_`vb90NLG|j(i}wc8{djpyL!CuwOV3* z9z{;*mrKJ-X{jPFA;|q}&W(&IB7*41HFohpQ|UOJc|ex-Q$RjtXgei&n0;4aK)MB( zfcU9~lLB@Mg+N%b8nV+^MnYF&& znan>uJ$Ub&4=>~Y8r+l9MW9Z%)QJ#_xTKztVsw7I0kau;o zrFRkW<>2tJt=~G(D-Qq69(#_kb@3AVnXxS;c$-y2`O{ta;ass_2`-Olmz3AW(_$K( z=gC{E>vtk?UxtMpx}gV8RJ_Up96R20JXN`@o48W*N0R*fOEc|pQt{2GtatHrm8&^f zsjYDLZ~8`B>mEvfK_jea((p7)@6^QdbJPcYm1+y2aMO7Yh|b=;MAO6WA9CBhZJd$c zI30t>bl={P#*CO@7e%fx`!obdgNhC=jkq!^*(^@^-y_bJ6gYoIFu{@kHuO2m3Z|F! z^?eisetJ>qp<^gh1CCdSHsi6OiO_G=Q^MhB?77DYeCE#-1JPQS-<74g5DJB*jKRjlQwYyX&xi?bJ zx5un4TU-&3#Pzm#9WoLrCq3--m?zPq8_6w^oew8D{Cri9I}WkRRNse>O9!u%A`>q^ zm&_IoxmhHxd_OY7F5wGx-#T8)J@5#9=8cfmbvzn-71xq$)1O?=_%6=>;N0wht@s;tC2U^}o)agNk=d1i!{A`GplX>ObMqZ>bJ07C&V_ zC_X<&Mg8%s-l5Q743B!GYw%{yWE@+tq~P2ZCglni%wkSx+;H|LcAz&~s#-630dj!U z>3$ft&*pRJQ|+VrcKZ(Hc(AG5TXIa$qbFteZmabjyOl)I+k^Y>nUK`*0e4BIsPoYN zgQ2fbRd963p4vz?h2*{?YR{rCtlH_)AE(Bt=)$(;pa(HIU*1q=anoTKXYJg;>9V`X z(&Or@lqIbHBkX5Xk54QqjZ^SXNXn^1SiD?WM~$U*>GhATGRxzuvfNCM{k9k%R=T;m*#hvP^X;@3_AneTshfL;0KNvm5&b#TQ!+`~vdU5HS*PBU>T z_t@?R`%Mp_*(1`^kqeWC3nByBAHw~X6q|Eec6oPw_ERh0#}k0-Z5B4R!yHrb>r-WC zc^7D<17~ZiPOCk;1$%A<-n94ZLbxpM&-yKO7tCCOZhiI#Bt^G;q;^woP`4AsdFQi^ ze%RNtzPo6IfdoCt=IQoC-nb zj79JQ?7~4FwAC+t!Uw{Ft|f+^4l(RucMsmuRC~+&kuen29;DoHZZb0Xym!2R*S+rI zyxZ~bf^l11(AmVx@}5_ftEBBHVui1yjH5k}>!QBYJiOTZK?Xx2Mb?{^XUrOO6AWd9*Fv-!1?tE3o$q);6L zZ%e1|zQok2iJdycpINmQljfqEWn7epKeKQrQ=AI>Sm=N|N8W}v$dpf!bVBAClNaue zA7vyDQq=p`?%{n~$@h*45J5mSm>aVjo;sV6WW2km-;$3l^W~0rr4tA^^ws576?QMO~v?ACHn=faG{A5 zbuaqLT>KZ`#J>(?G`$l~DxkKxE}60i=kw>Ey{k8&B*=F(e)n_UGbN<*r}oaXiKJ@h z5B)##C>j{3JEk5Ru*-&BwxTK(ZK&tSAqhDSDt!?q$_P?x3f;5jlek6_Ydk?CQgK-$ zEbEly9vmX;5{$S~$wH7gR|}^8cNo`#>8&&Upm>sIn&WqRk`0Y!e-pmqe@wl?yt*}1 zQ$^3}?M4QI);A2bvQCySvRf2l3bCe#Qn5X)6$a`09(#z=U#rD*n!Na$egKeF; z=}d!$wmZbsDH@gD2gfSJeEU1Rjn(xUSbX!D;y(R@GcC?P!jEtK5)G!?@>itkTEjHW zNK*KC?7;=$G;R6o761M^Qj}oUrtqkAo_I5b^tCm9xbA=N5!UC^g%|F#&y15|UQ92! z)Z5{uWwD&rI$7xo*UR|W+*mW*L-$03>7%2E9bwof^Y|m>u+kZlSDe==AI}F|P(0-j zr%k_TQ|wn~rAD(W&jJ+cTn`#f#E!B|>Yn^Hzmfag@Zc4s<9Sg(u3A{pSf@h90Rur` zQFWdO7hkMC7OXd(GXQ6Wc|)J=*2B-cE?v) z>u1*eGvSVSbKcLaeXjbI1?icdtz}Cl;x>7?P?y9?n>y{gAO%g#|480`R$peW^S2!z zd@tlJ9k$ci%-k)KAx^CSyCl8ce|$n--@^V)plTqA-ki9{yURRqsMe|LVQKH(xm_J= z$0vmh;dV&BiT&La=o^!#jZkTbaG$N_wYiFZ!|-AZ|u!h+O2bu^1rHWVR{Wr@t!^f zd+`-*TQS?`vLl}KnzmxmUt*c$6U5Hf$ldL6fB$l4$@iDL`gX0|-g)9x(_c;XH~6!>YLY49_VKv0D+#r4g)`~F=UpVx<53Yk!9I`s{LABu zYnRM!Lo_?q&k0e}tUASE1&@YuYfg5rZenPia?eIecNu$Al5)@&(pPP|x1>t?( z-iQt=Bxw)s62+!4zeKbvx`L3n%l8~Q%YF+K4ZJJl36NKWMsq{v7qI7 zC3EREv_?UhW3iY++!%a*f(pa1QVAiy;L|Y~nMOQ$R~;U97H=OGyyfIMe*Lz$hlP_d z%TNiEX5Sfh=rHm(nY`Pn>k!ubTy&*WKQRH9UbmDsyl)aFH=A*4bzGASU}&0O zKGi?ou)OO*xxSf{oP0QMtL};M8q)|76{_zsOntY0$Z4ZrS?;&5?U~5_&HL$9zSPrn zBB@nZK`)%ArQY#dY-`mdY3BkhnWy2La>sY+Gj4_EKZ9x=@=3fbJK>&^lQ#9!d0*Zf zelU)$tfXr7>X@nUN!+mOja*`^p6__AdgAF>`>yS!_{1B@Mbo>N`1wX=9gTkpMMo44 z=G%P)C2sq0&uu)JTbBM_DW>?eUq=?r$~9ghguKjdn>zjN?nXgEW=iic35i+lb`1_O{EvsCVRav;dHQ6-1IIP^= zFwmaDznFaE9%A}22wx`4=(}ucl|gXqM)XsN2M13__k{GquL>-`r9}0+6MD;TqEOA) z%*?qyA6Ss4qhM*irfO)%w}oz3LQc9yIUeyJ2T2(${I=C;GDbf)Dw&Oh&ZtfKR%`Q5 z*K^>fpS6LfP@Hj=E|LkYExFwtMsW^|#4a6|*Rtb^6N_VK^E3Ik_Bs5N_1(`{yLLOp z$o&yn-tSs1nHK-^!EV5(mZ{=Z?w(P{($)x@fxL0%uIUIxr_Et#YWljpo*}+DrZ!->`QT-#H8kbkKGde zE=l}$&JynHvwhN?XI}~Ry|zft86I}y@|~F1J?v_JhSyShCnfUH-Whf9dH3cEFD=#K zZAsfXSGLW0SWL&rc-TRCX;{qhagrbBm48SK-kvu#^?_($45`lTb(4udw*SeGnf#W@ z*$4if+kPMUNRxw^r`~6Cek~>nW>#()6-)nq-Jv;_8Q!ngG2W&rNgCiC;l^}h!Xva{ zI6L2c=$2wP^l5a@cqt`8e_Sb>sq^q9k4=|r{gTsS%1S!qT4X&t$lPVVI(X$9bJ(Ea z-?WPQ6}_C1Yoeu-lMrclCUH?c|J8pke++ZKWPkYOigU9+Wu2CPvO;;2RW3C)b24mm z;aFS05_LYxbtw5-{(g(lrzofItC>GWwUcr)t>)?dWWjOQpK3R`o^QtjynpmBir%qx zw)&f%=BH|(UAZ1A&sBO<`)^WSthl-@VuU2;+p-%IKh%g5uPzRS7stx9QmkQ^e>1Zj zGH;fY%~82{D1Iu9vo8J01_k9>OWg=qTH%DKCxG;k#iSuG@7-kgN@TzZrU4e&)zgYB z;cBO*eyi(TECVkS-ZD*^f(4_OBqWAl5B|OXtp8~#r;R1yU`0=&posDL%8X<9kj}^h z?fHnh11D<}xfA4QGB&QULf~ILp@3sSUn#BJ+d_vShZC&r@|(*d4+EzM+b@lje&p3K z{(*Yv@(^Ae6rD`pELT!Xy9M&iAFsG5w!(7Km3T$7;rG%Q^5OctC#{5737ql$e6E$@%TVxGL|`&^#RiDi$UUyG+`jBWh%_c;5wDBZ8B0>|O$3rm*qiV}FwYzg-A zn~0(Unf+SGuLJosy=$gxLY))6^TYO^&*Lg4vb>I8cJRj;iLGCm6+0HQP*t73XqCKj zVUdR4M5IaYJ@~8elLQ^Tksv4W?bgt5=mTwBOT~^ngGC&%^e7XDjqGLsmA4d3SiEs@ z8oqhN>HlH7uux?4=#G=!hu2M{2d0xj9e4hf+$tGtH{as5&DGO{F0L$}8zi(!^Du|p zc%5*b>=wNmo)ohMoiO;#%v>ic^KWiFJ#pM9uX?swzj$o1V_eX{!t;els`#5Pmf=`u zAN7+%*$!(i8@0oq5@rv8iCflZQ?o>Iyz3iwg$e)G<1_~~OBi4I8xl7sJ26Zg)OdhS zuE^Y!Cw>SpuTmOZnBJA!lJ$t67{YFgb_si^LNXa$w(Tf;GD!@i#42yNPH?+Bryjff z{xkD(J?-D$3BO#A!i%x!otBZ@bN>yawK2kQxq0XOxd#77M=VY!{uAX1m|T|Do5_)Z zKJNwaC2S_~^4$jMGiERSsmEPMrMW|a152-#pR(u18u4#YW?mTn;p+E0l$z_3#hfyw z3Fcpo(Jku9L??Lh%3{@3>~v+vwvas7Z}Esvcy++BSyW@Sxq9k`*pzHtJp14s!FD2j zdu88Nbr7E8Wbe2d-lC%{$GWH#G6oCR)0!+&6iAa;kz48?lDig_5(I}9UWtxpx@P@x zni~DHN}OH$taXOUD>$4)H_X3uy-@QdoCoFK%KMc)>&I2_@+Wb_W^CC5P^U206)kf{ zKK`e*gV&bbr)hYfJSsj;b2-Rv9-NsuHipdXnR=+_GQTTS}aBB4K&5_IOaz;z3G)?(fZYYMLB+ zxyfIp(nQz=n{QtcGdL1pi}>A^xa<$QX^D7?`?Pc)8s;zvBNxJC3;yLaz5ep@;5azp z*<~&})%1-g2@!+1NbbU687Uk-zUi@8g`-JRmtPuby*jK5FH5VZT7&inz9?<_rrpBd z8q`ZOcxct>fURZttU_d#v3$%&RlS3g7Ac&X>3TZG@^e-BNQ`mWuW2YM@NKQGj_UdmK$m?VSa}NXPR7~GU=-ij_dw~6sOumck!>|PLH8=K|mNqTx(30zl zM~~p{1of}gyllWkro^(P;|`H13yOrvkyrg(9c6Q(13waa^k_bKTjY5C8RVcjJ3Xzn zY5YBbtn2@5`W8#v4+%U}HF1YLXS*J%cS1WEbwX4b8CiNR6j;QAaqPW%v8R9(?E0DMn+wt+#G5A%f;H+L zLR8N3e~{QD;+^r9db0uh<8u8Zz(Uhqa5H1-^2^P@Uxz=Bpr;oFnG?7TKFtRoLX)ln z_r))3?;ITsb7tQE5)zs_mfRd@^wiq;cS?}6K~Hzl!{3g3B1jH-WztBE<(+-7&?;7K z#Sc-i&y-*VSg1H9!Y%Q z+^Enw!;@I|Ylq$t&!c2aQr3{hy79bw;A4gJ=wW|Be=@b- zx;AGFm)79*{!pgE$S3E4UY`uk!YW&pQCSJy)R47kUy_!1TA-h4(DzCWC)flxcO zkJ^*Ga8T;CMNfapHDf$SQmEZtwz>2kRnj2^w&U9;G`;cK+9#wI(+mIlm8l3{syMk4 zVMUf;$VYxBhILde#m0Um2?P1nyG^{fF{n@@P9zohY2>H}%0UNH@Fr@^EsDxncifH86+)*;Cx(4*qy>2?Juu-V3_onBhly~eU=B;0;S@BSICQgx4=Q*7*-9ksy z_hi2mw)MKUsL$-DnOzGq4}@xD4B?j7^||nstJpJ%pkmO@Qh17Hozyx7!g%%%t*mXE zUztp6vw|hV7{R#Hu4u9S_m9D;bdn~1u~D9KiZj4fgBpR+Dbw8-GfN&W(>> zb!2dn&gh)IcMrV%B~ks^xO5ihIrF`_i}738db2j)RKI1h0nc>OE$ z*6RqKQlg=qg--%MA8i)q7s)ooa^wHDc?A=D3?}J%S5(h*N8h&8bBI>{-GLX>F%f85 zbSI^T9d4c(oMv?Ej-0>Y_%@+HUfR(VxFhlsADb8b>P!9fkozbj`g~Wnd$j1BFF5bt zNy*F?JfXJXyAfPX?_RhwEb_GeYrr5CL+MFs>P7KO#tf0j-66df16bc?!#{j-cH|c` z6+WL4g^v+rq)FFE8_7656^m?!SUZUHq1@atF|^^1))?_V=eYfJ{bo%4W8qP&ZQj7k zig!HWTl7Prmwtm%12uY8;g|Kd#MB`%OjyUve&-cORWuO3WJO-(gIF_sKL5|uB%1+` z!72LJ%+vnTV%R1%?=mFBaxDp9o0*0B2@^l?AXm{d_wHJ|;s|(c_YXVOWj=)SoIT%h z?>vKvZnqk}`=1+{x&kM+{Y!B#+BzA+3eWPlexSOV>={SjnfF|B?yol!lzv1Qem3XNj2Td_dNbYjjTE!@ z^^8|*W36}0s4MLNdv@RLGytEN8| zX*GY^(6twJV0Ty0s$y!TS)j5{|F^}S*x|(=4?Tx}j(Re9YRu`j9`4@WE!L}=Iz>2? zF?-HGX%O>XDA76GuDx`<$)iOrt|jgfUv2^MpBwq;GFe>$mqyN(l!P++cHtQTil5dJA0vV z*W}f%Do(bnrPTiJI6YxYrQT3dGyei%%gb7#taH6pqLykB?es#Uv*3f5*@=8zx>apM zzYfp?yA6?x8@?Vrbld8}7m5u=npM2g5Bwj~Lp{fEXR+_GQmjjF`WZ>?aHUmO4pyjx zTeVmAn(ep94_ntneKWE)6!D$Kkgmm6)x^6HE5opEO)?oU18dHsO7kq8r!!8Cph=5i0F_>CM{eGIidMj|M3M#`@6w_sbl{QY5bI}1E+YOf`{!Jm$Kj8CK1?6gQfnn z^Ncds?Z$k(b@6$$Fd33zn8Y zEM}7|R`*yG`e=5$Y&ZTo_47kNjW*}Qt9nb8t1zd&SZ!Hi)~>>XPfRoYEplp$MKukq z@CUEipm<(9F`_7R(KP?NtL-Q9yO_E*yJ7?4hm!YeJIkT{8XrwhPKHwA&T)Pv-yTgi zo%!Ly7;h|o*Vgu3d^)8%rM??Jwy<;UdV20i(pFX_!ouP{7d7`#bP+?_*AZ{_koxkO zzE9i8`-dqkcjCzLI@gbV6PlS~4oDFgz4jGyuPId;Y52t<$zk+|N0~$L9GYt5;0dN; z=Id0f*4RzhvsGc;&S{OQopi=D35_v`!{!YM+yuovH zK->XN!k>|{yVi@fLV|Yw;vYxsxA*s-sATu!?gjQ+ukjV^-XiYL52Dr4cd{hv%u6f^ zC+yz8A6kY6v9DU;gL60eDPPFvs`T_dlz7feEB}i7B;<9HRumZ_ZBPO$E@9`xTpB*g zG zCihJ!+cRz`fntspjFZ6oMOn(BkC$#xa69{KFdM@xHhXhK+l?xZJVy<5=3&K6*9nI= z*;h|qxrc1885Y(>KbGgb~fS~YtgujeJQE!Dr& z*k?t^Ul2F*rYYX=W_6?Ezk@QX8VZ7EjZZ%v z&_C`Mp&1bI43rLFL5TH`vgAG1`#!R)FCXh{cdom9cu(|*m-a1|Eakw4!&2|w^Hx;j zN0~IE-n__8o&-fJ!PAY!>~)muvWa}CY;Wvm7&(_NqwVt;5$Z0fi*H8(CMR1VR8l2vH}4?#L77}8i~`(SNn-NfL!qDYF4C3168hvAbDOa}U0qFH{-Bd9M#rdiJA|Tf ze^z=Oc>dVsJ6sEKPJ8rszx*)&(|tW9X~|JG_U5>2*c{#kI5f8$_Zs-pK-l*FKsbcZ zezT<-uC*yU@$hQF9{(0tb!Sh!*+Mq==B_#H&%K$#W*(YUND9fhRuAp<1FDwW-znodm+*DfT1FvuKR}51v}1LpS1n^EE<`M z1IhbLo4*0-Be$(wUBe%4gy(!DZVs~651m5MLqtpO1*x*aQxBJD@X|cH7#zKgGQLhV zTl=ybR{C)ITIO?R&B`{E-|uqXy%DVsI8D5sIjR!7JDBTlkQ}LtKRJJAGiNDyzuR?J znSPNyw|Y0Gx$o2+FhB66Q7D?8=N?$_QCrWRn+*6sabKA}+j{l;cJJaKnp#N*Hu(anRR zr-ug~f!e<6n}SIP9*tvWOG&%20x~wHNmqFbdJ~Aok z%QoZOef>SzwOmZ`d*~5v& z{5ooQq{iiM@ngUybf+B(-C5LOxvbuZ0u<{Y|k^= z`|_7dd+I}f-f7T;{p*-@{rjn}iVGX5%vbSsF=lD8 zG-f%Cuso;Z;Y14X5o_P@fbYrjvs6;?n5FQfodG!z^FM~A4rS(;`d@h65h3)aYagX# zD8)n)WBnN}V@MS>q{3qF80dS#$+`Y+SU%`BI?V0Y7WO4tMJ!2B#rR>mSxCfW^u&#V zW7{&gV@QQ#4p%JkmH+L0*4_9hC==$IB*okz7Pn?8rtEW++g9##LDQxk?Q84$nvB_q zLGdtmAR_EYAi?s><)5Wz;iRT94@I8GVp~+_i76$L`o&Q4F%Jy$`bI6;Qpt3=CJ8X( zGLZFkivfG}#RZedbh$+dGb?5EgvJtNa7U9`l8he;#9M~&!j}+Bvm7zPiycYqx|itw zh}{eL%4Val+7h?EOuu-1S=f&Zl^9Y;3^`Nx(-_ZR;g6Id^n#g|JeOt5+!lU9V%rax z$1@P9*i;4{*hm-!;Sqs+gs^g`ucv{~&wcgcDfp&BY1HNWwEH;nKjd)>V>;saT!}5=ol$ZFcG!_a_ zx2UrBatt&_Wc?AL(vYPdVA?!!dGs5aZi#BLaV@VGGW{&b>MCZH!DLOH(^?>-#L6^+LXQ-_$ep;UUF z$MjMQM&$7mr1q03$(OA5FtF;1H9YUpXRw4>JyG_?uTNty4mIg0Kaww5%hBt3s$s>m zDiKpd=_=hV2B}9;m{Pg2D;we0M+D2Wj))h&=ow&`fvrMgU=Lk+lzk}$gDv$#X1gNH zAgRA2wC?v9=pR`@l?CPZ7at7pq_bOx%>EYOmET|9%$DC@pPZ53U*fJBY-Wfo>0A2F z#(M4&xSrA%pAmO0-euB*%}}Y>6U-3(@1e2?z89L}5n*a~n>ElZ{kMAJ>(jc zysNY^u2dCCmVex&`XYu;tr?0~R>fl!j~{Q?KE3mbG38$c$Gm|4W5e?aY5LXX#>(#& zk{L(E5Pfz)sJxBu^*Ikaq^T=nxao=bvz>;)h!}`rCl=iSF5ag97y~2cs=9_AzZJ1^ zj$d;p8Lj;MI^tx0c8PoRo=>@o&?}aG_*%a&LNK&xh|E@+RE(@QoMD(_l|AO!2D4jK zVcdI$%qOc9F~6Y|S(af0mr3lOLmU=qp5DJ241OL)fZMjQoKggv*;{6;C5X<_)tr-ChS5 z$)D?q-iSZPm;DiIAr31*aggqujX#3|WAgrM-*H%5UDWd87Q{i)r6eSOd@h42a{aD< zmv7!)cam-T?XKEZ#kPtQN{92sJm0zR(59{7>eQYC>9VRUP6T24HRX_;<`2*ieS-9PqIi9H<>T>IWsv85>$hNYMWaXkLQ@P9KN^ zEn-D=5|N|(l|e!SDoB8=&TYg0gGox^zp{yvy7!~9b zMgrK|XP`vjf^7xjaE<|2ix!HYCFrMNL*)Wjf$%wK#3v4;#|o`uB2fD&2U2(hMRWfG zRnj4lU0?{&Qz%+H4*!M$0vqoF=@KH4<4_2!w;MDR;ur!cNCHvY zut5DbfWeCc!37Fs7&Sg9Vl)aIMi+spKp3Oki;97%-M1TucIY6b|AO!{}&C@bW5(J9) z83N3tS%z7BMCJ+n_LYMSK?hNzdyPtc5rHX2AfJ#z)TFvWmH!Y(C2WWq=WCRz8w~!{ z64i+VMSo}mMXr`(*c4!8-*F*oPc2cYPJqy`A^mS(qwLgS@aGn&AKVcb`f^O%N3e~3 zIp!+}ik1oi7mSo+e!`&W!cLG-3<6o!0UD`BAiqE%YQ=4!k-rFJjUro_G!$VK3dYrk z!H0pKd@08e@sf#AL;5c)P@OiwE)O7TVMtUi5kw8=HR>@V3~mtxws9}RL_LP0eStQ1 z$}pp*FgOLU2o&%Y3yN-FArqsA5QUdvte{Xt6&Rw{fJ7Mr{jmqCduNHFrG>#MEm09V zFt~0I7~0$c3Z~~jOlSqkQsdbC#XltXeq1NGs96u{)@r=6f3Kpvec$O>WtSRtTD zunO`En4rIl71ajFV4My0Ly!X=AB@BK3D5?h+UZcRe>4u~S{a5`1^JhRK#dESj)0N_ zo*IpV>&F4F29E7zL8&@&z_kHh4B1d^bOdUxU7!tC)MEjFDnPg80PUm%{e|qPEfNm6 zA3kI@1P7`QAn+Tp$O7;Qs8|@lEeOYki3JrQ25=mPWAim0W5ogxrU;6ZkHfGrbHL|9 zad2sYh9hunqRKEfDoA_up^EmV-@g5+qMGR(yR#`yt3zYQzO?hOZAHxRrIAg;p!*N?#Atcb(F?j+&5D4c>d zpfE5w!U|xR{sqp5E>JKt6n%yPRZ0Mi5JS{x0p(yp)FxDL3d%7#L0}s|kyWVYi;W26 z86OmF`wKLJ1F#hcwvhx7LZTEIpy)viNPz{4PPk!2|856G0szH@f(w94R>ccN|LXun zs+VD23qa8|0OP|5qz)B?Xr~pz@Gq&qR63W zhc3`aApjs?6ox7|B^@9kZ@}gNY0$e8o^934#(I-cBB9QG50UwFO z??<9iu>sNnw{Qc_Kn77m1J{BDaFo|5#VK+W#Us!w07-pVnJp0%Jq=*l&H<8C!SM%N zD$)y;*9f*5!$HZZK18d@-4inM;;Sh`Kon3FWC0d|S{e(AmY<`nhl-%z1duML3Q_`( zfao;`+=qbxcJ&d*W-kuo4sh@~4)gjY2i)rc!~sY)X=TtzM;zv12zc;0D3UH76BmTT zxgC#jz$Zr!14#==a~jBpWOh_15W2&UV27q0W!yl7{Zs}i06k@|oPK^*YU z5jeOC9PqU;9O!#CRH_vRoRSswn+4`fL5|i2cFPCiNr0TjAs*w-MNYFCk9ml~;j{); zl8~c6bbuz1D0`qfFAlhA6c|Wj3ThzaM99%~kvIi(fQbOq7y+S9PL9wE!zlowSd|Xq z5RDUtfH~9uZ>|ze0mecG$%w_VDFK=%0SF={=m)Zm_9c*lI0R}+fR*qArt}Gi6976& z3b3&bP!Su7mWl&T^$~!D1+_)U0iOZ3p95aW8x0J)Z792lYKsbDZCRXIkD69^t4w9`32<^VVyz=^S; zG=f0(09Ahm!UWj<0x%Y~2+S!!#B;VXU|dii2`*^0Ks{EBz_22a|Jb4Ev2KvAI=~1G zq@U9gWv2*($HT}F6cDu{3zVHKKn4(uUq6DOfW=f0Lezl%DW)Ni%fdihhJbOIVPyzB z2oV&>Yc{xJC>Tm_iBiM@nloc71I7*x3HT1NU}&`}P7DS_;Rp;kOxc_XfH4IIq)P&v zQ0xEfg^vLR11lc`u0jL^D&Q*a5g0NAQX3eHSOI??VD#d;2##sHk3?St0JquV;SWTN zSWW3%nmeZVm>wMAd$P^FaSUF*5){BhQKQ;L)4Wyi+Q z$DUKyzdWzRf2GPc^#4^PaaoHsGg71c_SSm0_cwp#eKeoPN3K?1I~UqUq2m-N^*2be zb)i-kAMA@Tq210u*G4VVfglehOM4j8%faU}M2+yWx}ODK|0RQk-z!3>p=0CvDZGyr zaXPDo^WRhDL)ORp-Bgr*d-k3t5hO(5>?kLdIo2-gL>* zE>@CXlC~CGyT&ix_CBE=)z>!|<@=stZlH&10$1tsC`%6;=`!6n!T(u_t)cbl>&9P2>`0->I^=#XS zjghy<*VKo-STZ5rijt3QZ!f;2>sKLP_yv7K!f;I5b49j!sc+K51`gM>v*?ed5j9*> zW{KQk+GKdFi=%b^&s|`KWYMBr0-@g?3vfYWS$rq{A$a2I87|jXry10t)goNemcNs0 z!0{qDe@NBcQ?1qeu!B}0((R;%++!Nn<*zDPs##NfcO{U7&radim-@j58 zoL-N6X8hH1tr%@#QT3xzfcE9DBJyI>qvys^tfuLyV_l5cPSL_8kfoI~%>gk%&@52bPZ<+-<1-dr6 z>sp)zMisfzB*523`%oOz7=tIi(FeZRavP%f1N~? z^f}4k1^pupRV@Q;1KsJzj7c2%i4|e4lGeQWk*;`agAVoT=lOp6_h9~0!gGp+;DqN4PP$U{+<&KOJ1f}H zVhY>&WIvcWv8}}h_XslDi5@FUU&MRQd!2fHj}a(uL`rahMv#4J(r=t2M2GSyt$gI z_a9RAD%}3)KoD}1r6s~DxV?^XPx%dyNo+g?NXowDV6{kq-?iJH5aeW42%%yc77 zH@eZ*tK@SuJ!6c5AG<=gRkl!3uP}Sg6kfh=GuA8Jm#oIv2o<=L$`cWmi<}~+PHXxG zGPgei|HzYT!9s>+{r}E#!q*gG2l(EGB^F+9w0QGEf9?_%T2~_#Je~yNkr>BXlyZ%W>^7AYS;_#ei;0XmazOS_YFY}>Z2j%_<{Y}>W|V4>aFLdx~7u_oZrqz@ZCTPpV_F$dio`jL6qhJQX*p<&Q7 zfAof(MHEUU@GJRGf$%_bW!Lgv9s1U(m=}m-(k;6ku$c^l#|VYzxK50zU4UR?^thdk z!()C`vi&Vctzhp$Qfm*CA3}ZfraLp0e=gaAcFu-s{sxMdGz!JZ+>&rDn}oiO8-A+jB6$IG|f z(CX?ihV?_D&A_vspZgnB)_|AHY!;sP$9{UWUD^5FoRRLU zT>+m-TL^!j)R+fICCp%~QBc|G*Pb!9@7`eBt0kx3udI%x&H6G!g_d}qopFP-)G(4m z9l5z_4sDbtpR43`+&kks?zYdJ-*n18CCmS{|4pad&%H$OW9Qvg-QTQ4@M7ovOudtG zUhsD39bdhZbG{Pu;iB$&KD*1iy1OD#$O`CkF#tE1hqze~ov@yq$xRMfK2lS4=g>VS zzd|&c_J`63u#Tj}ix#8gFAP{;27ZFh z7~2HOI7s=9$}O>oF~VL0$hqeRXA{#?y|=jhO05 zW9idm2~DYp^%?K&G&%Bd+Vl;vi!CZLJK;y~U(@ z0@4Sy1+VDLlCpVO%)b02#Y*`=Gi*=1A&zT3qQN0TkQ_Im7fVpD(75q${(4Yq`L%)2E?p!nf&E18P#>qig+tm2SuyW)=qm09w|8Q6XhCWKDa?bTox426 zERFzX9DNEoa3pQ9B#FqhF@za#a<@ALU80!z{17N5-T@-JkTylFKcs34lxMw$-GXRG z@XE&!D#G>rk_y;EQY=2nWsSB0vtzjyF-(r@1Q8SWgG4*gn?lh;$gE?sm@yAl&UDSjWRUU=6YB_q#+9T_8aI#7Sp);e6Qy`zehP=w z0L*ThHt%~KoL6ZaA;|aWHpn@gC+;fI6yX${W>h@^nbsSqux^Fd%=)~*Ss^Z*-MFqP-I? zPZ~oav&T%jNgQizbsZANIh24yEZ-gfiit197t0>cc<8WGmyBey=nllHoGN%>kZ`Zev907InXCs@SA3DyoI6Oq5gp2l7*oBS(Q zT)bd4$91O*@>R(Mh5jsj-^mi{brBAUA8_x7z2Tp|$@=t1aPfrBIlLXYOyp~g73o*) zO3IBHvMXFte-i&v=kUhr_C5dIx`fVIp+4T!@2~9$6dUun5f5zQuR^uq53cA}5;n9? zlw@JAteJ5i!MgGO(?&a$TpN3v4p_sT)&f_745R`f{L5jjnx3j0H>)YmXp5Bn^c;;V zYi7=^jX(}kJX{EvF=L8w6ytqrpB(Bl|JUat^)DO> z_p{C3$(+&1-qp_7(-`3FVq?l^?Bwa-V$W!5{Fy-v>?_(AsL$WOk}tZyzfep>)byXX zabhsG0XRFm##AE&F=2&NhO2Vs^b8r|n2WP9P_Q(A%t1&8#4F2rutO4dg|UFPVB0+< zjJkiUpS*d1E&+zSDy3H{9N{`DT>aI-*QF9w&37^}r0*A2mSlhJtB=YnpGcDrgd!Dy(+#Py3I8n3l43G8~PzD#_)kGzQ_QB1veRu9ho?AP7r`oH)5?=o$EJ~A;8F&hbhEx_hq9zd4rnLMfx z8ox*&y{pnUrDAOiQ9Al65)!CBQ5ka4sL#4BuXrnt*lXttM~O=sSJZ6N@fIY{qkUm4 z8a|9Vye#Fa+33(rjN%{) zR;gpn^J0G7nR1P5k8{N0%A$)0%Yn1kO3xA537$B|^VZU#XkS-xG(psIIACo691INN z*>UwVZj`?%&;(9IvY*L@C}tST&S<2|1rGX`F;;gJ$YPh?a|;VV$S^U{kx93xwfEOA zLE(^rELYt^EkQByYTEkP7eW971a4#cDyrydE|$W_w;g`3P9qEJTw}rq1m&X(NuPmJ z1G&T|_;C_T60{=a9Hy693t%I}lE6N~4EtC{KMsbK$75z8Vxg608Q@4{9sHk85qXTf zGXBq8WcB|o5A46<^52zCF}wc;&n&f7WmF*~ei31e1u^hS57Hn*;Q*?Q;0LT;{I5dP zIY1L#an9DJG|hdLTS%XI8acY(*ViUVgr>_00YXII;#B1oyyV?;j*d+HKc1f9yTtfx zg^f{#;Q}RHvWZ<(T9nt#4rR$z<##_$U)EZvf}ts~Gjse=*iwkz-n9q|Cp2if+RPCaVBIkA;~k4;rau$2~{ z@(gt27+YP14k_-VqHE}zz;vkgKbGl-*B=L_{2ZD}q~(%k;H^7-@Zs$^L|>C-?!6g7 zzOuU5Awk_-Qv_z8J+bdB+eXalo)4v|%mA7+V{6M^GATE}7zYblJI+$vqn3@Juo%ve z)OQ8qtSrk5w&j$#E0Wb?kEBv6$o4dvAP{gY*r&|4egx)2#9(vT<*s*qW}Af1WN}E} zp7VHv#WQN+=}75S+KLT z85x64J1hpb6HAlPMlxtO|@Lz5{)@{ z7OZI$s%^OiDnliP9+@x1^3#R_)_Xy3FRX1@)bz!QQcpfgA;q&r)_c(Kuz$yqXchmG zL67dw>f?-Q10(V=N@3bVeG7XV#3bgcJY_`xf8<`i2URsf1^e>F6Y}pg!vCoY{{?LS zgDw=-l{Intu*9JXOir}wDdm3rB9Mq|lBC1Xyyn~daPS1`(32cUOS(Sg2~@=8U#TdB zi~!0~SBRDGVV#xJiUBUf5#qfzsjf0K^L`D@*g$9wR_{Pz$Apc}5Y6iq=*q`v|4BMY zcpPwepS2&>U=?Uwc_h;pogklKh`=H#W2VNk|GJfW&SX<~2>X{NTp{y|$^JhzA=l>_ ze`7p|iO8F}E4mulSQ^Wida61B?3~T)ooxSU4`iuXI-^P;`5F&vduutTI;1+3bsOSy z^z2KU5Ct#|P(nD1URu(_p9IcVU_}!>Qx6jkE&igBRMkb_QYm>(bW=RlW0S zIB2J8YmHvIm|)Vw=<1AOrvNEl9(5e!?T! ziWgjZ?!qZYM&im7SUfr}J4?q5_v7f7UCRYK=$!8$js3s_gAQG27@# zgrk{n(P^_$$UkRY2D;3a3iVHF+{kNr@@1vW$HUC<B)N5J>jwv!Q+#4G(sI1~4Ox#*Z+Pl}Z(7RXX%i1gbwliTdp!3+v zH0K$(Br91C+_(w6=oPuWfT6xdf!+$2wGH9H#6#ptARN!?j7TJVNHm%BW zzOM?H&}6ie2%K#y01Wg|ou`KHrUNr5P@3|Htw|yb*mODLdg_3yx4c>KFqux#iZnph z!#u{}g3ezAie8Ai|aPPQc&KF@G@p&bo;62C zjdZUG$KEP?!<>W5VnW?llzM}4&KYB-z3%DH>1`j?S*G(2J>WadyfQk%o{80Z*KwTE zmU!e3fL>unu5=&sR1uSZ;j$4!_JiefJSzL!@re81z@;+4&cxo<&eYlYZ-7}#(T&#~ z(zU`&B*W2@DMaxVX#i_vWa-P*E-pk@Uo%&6e-N+ir{dJM!F>NC2eBbAi zt)c${XL#iQ2PgM`fRpK;;H=~TRaG&Xb#1kDGN}^=#z{<|QvTuY$Vk8AJLlQpK2ncd z)0mySZu=#=#d@kEp{-1|!#aS7KaliCf=?mMom1B|yHYZ*_kxyaW) zSgshpib*`?7z|cd4%jdeWw;ceFKln1SQV`6dh4l9E76wUK=c%iMhs&#`r8h{*|0NN z7-j^XLHMy%jduMAT!-*usT%B>gt%up9R?blp!G(aHsU3My7$#)A!{ouKb|MPH=jku zvJ@! zp`%(EYrh@9@exFLIvf#OXB-{D@C|BOq}gW0elkca9WaJvn%6o)VUxnXFaZFN2wLGJ zKZ#Ad`v9kNUmxnRSL+8u)G_!h|z#OR?1OMRIVvQ4z@S zom-r!`8WuM+Pz}%wG=x|Hb!ur)Ql?aTl97=(>H@kJ&FOZ9v3qG8)pBNQ|cb{#S+q7+$T5u=_dLJ#( zAnaKvPcT3jT#tc&xlIp--F+{4Gu?|1X>>e$I3Gr@D+*(vt!GWRJTQ z<#sxLw^`~q{AHyzw^-tc5g~?zNRrbsCoQQzTWjp5-%Eqa!Y?6j^MCR-@v8>GkMX;o zb3ZV#KJ4Duel^6@f)E;?#};LGcO7D?-E3Ih01=sU(Cg*Q>X;;Iq^mT_ke{`R|AByM z++-5&9>ptif#W74XzM~Z`=Z420GT~+Jj7!sW6#ytaFj97b)wyJ^z1u1O|Md!I2qM2 z`r|482zx^=*I|W&yViT9BP2Ye_^VbAU9X$1wm}3yV*E{_@OS;@B()l4V##aoXP(34 zS@h->P;e=5XFe!Hm>wu30_7e-uwLHZ0d9c@cO*)ZC5s)jbag>CbX=639P+GE}Ff}IXmbt`gr zOL6j?R9W}xH7L>Z3=t1vGti8AfE5w_YUzGdD$W_3yOa;clEQ<3nAEETB@z_VAk`!$ z5>#NfFP-@9KP=tQGGDLs&tAQLuK#<#|4)fkbFsAf4~LJ^Dg&4h*1I@jX?=;jE6uS( zHTk&1x>KH`5)Mj{=tZG*je0}v>4fw%4PStcu7&Up2w&Ji*C`2#6~)cl$Lr<;A1q4bN;JJI9qdO@nQ$*v4^o+UoBwppyPgiX?ejG+6EG!~BC z{1i_dLibU6EXPcM>GgeVPV#O^G%IFLX-=C`3bMu~38n)t4BM7Krd5iYg5KXp^^*lM z%~G7DVKZ(}7#|itS>k>k!x*p-`@&PhTf+O|xCH68>$I|T7b|`6>ohMBr82dchakqY zTIHDJ4&-^uW;T^OJ&Nmmkok)H+CgN~ueu1jJi6;Ypy4~h9ZLorhUZCy0g3UY;KCN; z&}xPXrem+zSg>FLBq75{g>!^z>!>lH5Q${E{Kv&KM5!7ZxizB8eaeut?s2&qXVZ)= zKeY#w^t8OX##T^S2A}>Q?7K-n3<(!nl_xH-8wOqf3j&_8bZPtizH({n~0 zM&}O}PoK7k8l*Eu8V~}wqiS(jM57?X$yC`SSS%VESqpw8iz~z4BfgIMAr65m3`M+2 zsP=mVwoP$)CDOoy2nlycd1Ku8I@|xpX7xmSc^q?0JG9%A%R~Fa+N!VJ!(&d)hb?*+ zlV9adZsejGT?D13tvgz775i#_-)L9Yt0EOi2J1bY3e+mt$zAlWaZoFAd9!Kr zimYBdQ=DMLTT{gwShMF#>cgwPW1N*_kW3_%XYM*nS6d_=*lyZQJ+o_f9%#GeHyk$2 zGZzV%b4oH|2n%=aG9+5ZB<1?54rQh4-JXT)Qkbpso}WFwnOS!?rK4&vK5;L8jHl z-5JdVJKKeps$)lfH*uws+@u$MV~r*?=UaLf2B_E3^!^SXe(Sbs2v=4u!7_uurhqPQ zg`vS})9#oX*|bu8N!rAuEIzLnoi)6|*Fr|a`DW7b+wTKDTaV7Ori<5yYeyg5>Dk!6 zi~4Izss$UC?sTc-@)R-BQz!71Mw}Vlp}5vd&TAC!8Z|qp25v4tJuiTl0{V z>rEB(VDjHkk7VJ%?P(q(gDPnxX|Pn8er^2->V=tcS)^#R`f!XlzfQuDhhyb#e(J#| zI^j41Ote zHDSi@$1=l$fxBRCo4f?+4TBQ{-oRn9wMEO|$nU)1bVQ^BRhotrji^|c;GE%Z;3|N4 ztOHD=iU0?;sNEVMw5l;yzdLrvpds_rOVZ$B4kUlq-Gy?(J-@gb`L%=;^Gw*rya2{` z@#rMfU0kEJ?vjYOI&{+C^aG7S%;X+Ce`Xz%FB|KQNna3fT2&OPQeo)xvvG6><~zeF z>4*bag$xm+QKGl!3>@zOTNHX=58NSLjQ+YjytnRAo1xsd*aH%KO>IFr{=kS@8O1OU z6R*uF)>n#z1hsVWko_O>sPn9e z@p%i`rKBv2aWcye{v0HDdgQ&urb&wG>}o1cP(_|hqzi+RiqRyTvjE_vlREPa#LxJ zQ>utan)YRNK0yS(A0cPeZpuH`)Yd`YtHMsJWiT7Nw7pLdY6uD(5)aV?jzGrKin4U?48m6^oXD%o+K5s!GsXir{RV}F#p zT(r#i1A8h(S_b)0qTN0$wx}G5mFn0Vwok1DydHqSquF%*W zeU7H!f}YFkwRQ(oEvn5s4AL$yvrW%vg1eA27(siiBoDz~q`tP5sp_0bSk#fj!!1e) z<#~mtf0H)h;0Rq5(vh4|R7Xv#VP;*h9LX{K&c)ggAqmkvcFb3FUFerVdcISI-5v&3 z(*%i&x6D*oqkRy?`v~Q3l*3s576;01H(T;s3(zrCt*Fj<=V5b4dis6Pf+9@LcVbT3 ziCU#8Uq;6ILp}|#{8Ixn*7iJmVDoMZ9AQQWZrX#WJ_t7$dRO6UchKT&fSLIUez#d04x1NNj9ZxsI4{g>ghVA? zr>L4FJRKeajh3IG2#+ip%^*A;jywRjgVoaQs0S2pnw^4f{nKO27Ce_IXXcd}Ov>_y z;`@jeDM9Kuh=nF(f;we>IpN>StaWGKR!NT>EBo(f6@gp_`fs2 z*#0fOtso?(_}^7-x!R~RnkmwUoST`s8|ycZC?*@w?t_};D&Ra7@z1ZIbVNcZVqFrz zEPy+JwRS@G$6fi>u9@eas2YPVmt>NZXmK$nVzPgLS~j1ispox}n?GyDrFPOx`O10r z`TO1C+e^pO{)=FT_7|oA1-7!8D(zkz=!nz(_#cdtl4dfL;!BD(aq{sDj=HA#eGK$9 z@==nK(5y8Hz3hz`=S2BvUdFp& zI8Dj$80$iVhPH z5-+rN&0yvvkL3)W%G)^!rF9sY^`p1J7+7}DrrqQ;1vkIvso2%YJGe-58|7R0Vmqn& zXYN~{)QIauDCzhVG}*1UUxC9+ew*1cOizmnlB!2&mXNd6NS@h<(ZB*6?#dsDOsS<6 zhP=J(`eSxp8a5&PsBBtZ=A&jeA{|wDnB5mQggW)583rvIrZ`Nr0k;?eg6JGFv{ewC zWP3UA(B87lsjJ}p`l=NpW&20{W$2)Vz$@d<9o|3@TZ=r*GxYvKTo(d-^bFOt${i4N z#FC+sr81JDp9*67Vx1x9!DsGvtsy<#-Yc-ew+&*Vx=JJIr~AQ;gbYr&%e?KcDDLJm z?)!sbafZ0s^DE;_-=H6O`WH_5g`1}7mv?QIlvZXcV7{I2N8~@)c^@$_IHuffMrU_! z{~2nJxm3U%l#_kk6w5E=eeE25&oFf@8+5{d0EEVXX3u;EBE*DU)y2S>;IGqpX&x%N z@QoN@$MX;bmKf8s;p@cB0Eo(s@xRm45eOH_=aidcHK<5nio4i!G2pi^dg@-#6R>)B{A+IXHZ9m8geJ`Eiw1UMqGvj|03u2+2(hx%;7(k z+hEX~by}*!e2m?RoxPE5)ReNG+c*M=ag)A*Ry#NhWDa#|?xb#mt{U;llC+7g&o^AM zI(T6@g%i!SM(;Xs27Sk`oLB;hCpo>VwZ(dc)0M_QC?1X?U`>j{9#Dr&&6F(5#SR!5 z79{#ptD-Z#;4dVxC`z4>X<2H<;Z-q9?vuunu$E>K9?wY>hjp8=alnpVm3hDjb5Yjb zSE$-q7Z=xA!}bs21Te>6nBP1LY;O%3q2BPNEPnZqk8hXpVOKJHir~h-w8*6`omG2x z^jTL^uU>}`tt5&SBB5cVe~YS28^H_8{7oin8mLHOHn|&}_lpTqO@#b`{5G{FuS1nB z0f_SlP4LlXCx}Mx{l*+(G@}3b%IbT62pT%7t{k6!&q{&U_ar|6gU;X{KeoFQpswkM z06D|VuSr&5F=_xYw>JCA4{W|Vi<>50t%!lTBZYQ-2zbuEj#L>>Cy3Dsrp*{qb)(JFM7?Q40@RXHFOW>f*j8XAnmQ(W%hC}RCgWA16Vj;?r%8> zfhu+6EsL5&BAd|w3R6W`U0*m{FZBpIDV`pG9*tA7=$&jl+mJAtx3p-|rZGgjvLq0p zx2NIz^nV6%<&lUzLyE*q9;ZF(V@sEirDhFDaYp4~*QDtdPa68ic&Qv*@eKAg=e_`K zRpdUW`pp=#bodV;-H>6H+!h6X71SV&C7#^s^8Y=QSq)%Sk?uo#2mQ+#vW%Te#RBo= zOW@z?B+h?JCn?H^sQecXBxC*$CKx{~4JL#H{E#;q=$r0qx_}k>DLepTA4$|5T#Ns!6RUeNm&fU{_P~=AD_}9uMBye7KhVPUXpj=tr_pOg_ zXMJ}HDvha35}n=NL=bwGX^LWhe8ac+t&l@nvrxkCqG%IVZH0AaSBk2YB%*Fnz}odS z!9JmzkR|_oR!S|$iaK2<@5CFfpkqI)>;_+3Gc5nWp^Rz==7=5)*t+SC;6)=&LiiETAI_24keyC?anvUT;D%58miE^;uAc z&a$b4LPAKXI-bQi`vP?(C{U`(YToInbgvkbN#+=*+-$f(+SB|2dz6<^(=*6cv}ep+ zHrhOpcsGsnOjg}Inw+q zZrE{&JB=fLmRL>!r|>t$*^h#CMefsy4Az>T7G754<9Q?()#GK^iMDFniiO2eB1+z= zS;4=sdJ8#93+5AdRqtHob4rTX^i02(YH`~tA*aBzmQarCerk38PIDg^{#<20UgZ+} zSyrvp2&Q8)4Y7v2vi50B`2oOkqPeOLJGBG#nS_ZRvl*A_>~mQ~u^ErV{H;|Q_55B} zt$;El8-~EIp$5Dfc+$k=akPHgc{)x+1jve^S|>94li!kba-qXVcC1NRO0K+K{J&e$ zG%5mt6qQ`<+U7X*ay(x7)aJ`HrWzNibnI#D?7Wyq@)T;L$LubvY==zJE*IimR650> zE7GoaE$a!jY9(5RC#e(i3(-De=>+Lx4;>RsD)b2udO8f$I&Rvw!?Kj+3mD&7jE4z` z{Y}~hch(}2j~bj<=hTF`&lu`14%Hu11!#-d$zx>{#ZS`FmLvC~pk0R|;Sg_Q8pPM> z!xn5=5bB+{I?yS5A^Nm6kjFJ0Ex795Ank2CCamvOw;_H-Sys`~jx`;vcs`3S)tTK{ zt~c#(hzw1bF1eV}yUyAAh&kdHP4;GAPvH_jPm^qUf`oy$5#GRR^`FO{hk<%L)uUi(aY|j7>OC-ER?%LyE_DxZ7cm45}PeLKSR$2)`_zxe?gqqRM@iy2y?Ys3gyEMn)xY?f*CegNozp)qa~H(g}SV zsohYvda%d#g4VwyBN|(PHtRZnDmR*3puMC3=@LlV@{PYlG-|~}^?p*(NP!aRNq1GzjmP|8of)vG4uM+Hn}7Yrx;wpFV71$}oDEEnBz$9LPn z!EOSN@LA)K=PdyhNJ50`(MJnt>_S1mDAr)uVgy0a$t9SIgyys~&93x)$j7nZ z%Q#b?rmy_EwIOM(=frI4=fq)a+7C=4U~4-LLF%l|my4>ABSvz>C(q?rIcV4$>0)8K zEEYJ>gIJK=vxHT=v9z$9^9$u$`&n&%f(B11x09&lv69}Ab1!osgh%}?mn<7kAb$`Y zoysB&0-uUgFBSZbNB9q&x$yS*eS+*CAliid>gBhSJXOCw1vHX5j*im5-YkN)KpoXF zNN8SAocaN6TcfQCu^q4%JEV{%0Urc=dcP>ARZr}W&q+sF@+|870~9>@v?eQz`2Cgn z{bu}`5RxvCcr>X>F4iwJeSMA9veDN(M3Gll+Mjw#!1OQpj`51RGC>#xFM_i8yQ8@0 zYPdpms2{oa4_19a2t5y`h3lVIRzd?Da67lXliRfStWwW)yWO3C*#hEgHdZsAWia(%|H)7P zXTLJh-`WD^mY*M-|HiA#_-|Y-B&H%}_t%a7scg>DOf}WUF&igO#UhG#qp(7ZXsI~d z+>HzkNppWfNmAu)b)SDOU4Q+ZPka{2%twUzc$j^;x@*baY=6k~T}b2izF+IT!+UFX zEgCkVF_R7UdqfiupaX-$5#YmzJ70aEg^P&sgYOlO zZ2)dFGus3DhT`DF2l{CB{@rxnTtgs01O zzd29kq$7jC=1UQSL~uDoySD4CjkhGvR`Rzj%C$+iJfd+#w)$FJp&gvwo;w^$%*Fu@ z1FPN`nYMEl5SgoO&AgfRQ-(0QOD*hZ4D2>s@D-UIw&+{!v05e#b zfR6_l2M_?>@R`*btd-Ng;~S37>aC%@@$MH(gU)vd1a)<{ALnPQ20z}{TM2)3udEO} zrZ6fHB?OD8JG?&Mp_{zlpMjgy*Y5r}JD8N%x;y zTJ@+<9@CK!p>~xb2;sLH)84%92vjo*%?=+%3)Ko;G7mz*4MH4D`W57KJU%Y$bOIhW z~<`(qeTBRQSO zE~6=xATENwUbtTmhE*WFGWlC!g(tFBLGnCr7J{?IBJ08&6eb&x9G|Y8!s%3t(M9#z zTX4MeS{qP|>^5}a9Km5ZLIpVO#zH#?2qY(wLb6;JMX@DNfTFgzYAQGKX<(KC2j#y;MwbKb2 z8uoU?BIljmMlr-YUGGPfnGlwM=KKmJ)i2DM4pR${huj|wnox|E(K$16xGuE0_Ct(x zbWC5p_mPke2?*v=V6 zYtV;#sC$uJ;QLZH-3L4Scep{oZwz!aJS40b(v9G3Cq%Ci{!8iu1o#W(Un&-=;r>yb z2BIbohRE!7d17;#YKWh;S`Drr4K(I2zu#Kt7K+upqrDqwcuR=wcoa5uY<;xoPp*fP za7D4tZ+{d}T0N3RZUx)Cz6fnGg_Ib`{(&xpzPY)0_XdWBhCM@yi)zZ3_q_eqSlA9k z4)iE+6y@*~$hl zu5YshD{lIH3Y#wx^#zN+b5JnP-xBhGZMYWP?zX;f>K5Pu zoMHm&04ibSfDtkw=d=k*Wk#?ZTBR|BKGf0?5~BNd7r&)D>IIjfcg!rC9I&u-G{MA6 z`0~{`y)y&S`2vDH$kT4|&9Eb9Q$JO(c|lUM%G%Ua(?a7JkB%q(5g+4Wd<1Y60!?l> z%y#i!Rd*SxsJYO5!siO$DAe*I)w2(>Q zjJx1g?H=F?>;4CLM{+@}DQFrAX+z~+!)Swd#EQY;xw#CTQK-NOCzZ3C-m{Mvdf&BQ zp{LNBtW|s6n@pYo)4O12*wv7mTU&KDFqcyGCgP#9q;z(Lv$R~fZnLEJtoZfxoUan? zlv`yV<}`^^u&1L$4Hd8%L?>V6-}gXX<-a?S?U3tpfa6f5T@T`LIof>gP^`4x?ciZ~ zFY7?|5-{m->s2k|Q1)_t?O-#W&c&tQKBCBV^=?I!c?(kxSu{q7(S1a(6SQ^P&fmTr zrI2yt;5IV~@4#SgLd%t7cCXS@HM;`AaId9;#9+6&0LFmtEchh__Rbb0$!Vva7%oW{%L#P3zE0Vl>JCx?Hs=f7kIy6b#Ua$=pQR?! zSE~&l>@D?F6)rHD^n1Le!PuOxaGDxK!;1kD!@IgS*(!)CkQ28T@1XJ1?6dBMu3A?^ zcPnpsNz|;1uS@p${+Kg`G6@8D*Bk2yM+0JJ*+mODjYOL*f|`?D@@MdMi-BUfa)E$i`Jeq+#W%MK7{%SoI3-2aJT1!N`dxrX zvF)Zg!<^@~65erxzBlS|HXk?Ev0Swm*xmO}fr4mID$UzY*O<>!@;EWP6sT$?WYd4` zfM(k!=FL4?w%*OvGMx9gv}`)%V*AjZgV#>PP6g49nQ%nZb}dJRD8D~VgXw6TmWD$Gz^($M&?ess0DHqI60x_k?T>A;_)p@d?TF#eHWBELmW zpy{1P1I2%}PY)fM+Iy(5akMClF5$`@7Dph9O|NcPi03>jvT?R3xfDSa9tt4~BTFNT zPbZM9ZCC)dvKLCcEWX%@%%~y4M}*(PM%Zj);-OoNL};*aFz5e{$jG$lbAWgGDMUJB z@%x4oqhsF0Qf~5!SLJGnY1=M~n~Ya5_~7WB*Ia4|I4SB21gm@;a(Z9tp~MiVM1@~8yx0lY1xE9eXA`Rv}`8h)enkYBFpSc^C-2T z?A~d%B|KkapLU|>cO9*tztpz=l`?B)tO{-(70G~=l&Oo_UY4ncqKBG=UyjneZf0!r z6Bgf*$Ej{dE28tn^hKre_ptPvTe+)vn~L~sI~6|*J&Mm#hw-KYGQZN>KI3X;~zI?SxY_JRvVHh8vtZWFBYBW7n7ruaH*(<2lcz0=}% z;Fj}O3JO9#Z7h&(a=zsO_g188t>4n5kd&%y z@LP`KD^zEu8IWHB@UhNV##L8f{JUekSSI)K&Jnz~gAA&BN9ixuY@!x6n*_TMZfrPC z*sa2`%VCoxQsu_&5~#DhxQvvhOq)9GNJ&tK6HW~y%wgw zGe9N}4}>yb)*EvQX+Qjio?v8R@#Grm2nV$Gov09mKSbD|+kE?<$c(2LFeiAuPIbS@ zjr;WXlNt9hWcIWf1J?Ii{Pzm9A9Qm0k_^nv5Yg7oyrhwXg* zjvt~~;bw4zvpRg?QM?SfE4e`0VYPrif@8mw-@pgYX!g4=K&bF+%EEHwFr3L!fp`3Wi5T-^mDKL-@8v9MN? zKSps4II&Yk(^6bdW0=kCku@DF9yG9~LO7_oV4=|7ax$PfN^~dpWr2EX?nG?M0+oS%T ze$KH?v8t15xOldv7&u9LEc)eYMQ*E1ee|r*FL=YOKRGCfZmazJFkPFl{QdW%x%$9~ z)>G?GYb(7v>GGd!{W<+F&Lz$=onQ7%7z4QLf1Apmfio3x)cgHsOXFPT3ap|0 z9esVt9$O#{Ja+&XMyInNG+YMY?D2 z8F%}FrB&Po1Y^{n2WZ?LSvUW2iZpMk3PbNcn%g74i4}It`$z5NM>pN;|KsbcgW7tc ze~Y`jx53?=0Kwhetq{Bv_u>vEIJ6-+6nBT>rMNqMf#U8CkKcRqX5L>flgVUu@8;gk z-emS8=Nw)H0!VcaS{b`5T3KZe+FOO|`G%Ovy(5;I!skF`1!pw1d%M7}H(TpobH^`I z4*3cSpRv^LhX~F$e*B-K#t7aA_o7w3>8NxeuVkIRzLx)es9ZkE`9WiAQ+(pp_4_3- zpwfqi#@umzWoRLC=;40(vRS;#tD`-Mvw1Twv+4OmF%@TQ)*yNx)VoJz1jt2ouRiMW zjBo4LMaheB7BT#wIT|m9r+rSF3Aq~>?eDe{`D#8o+96;|{7TNtY95o7kUQkDb;b4b z!9j&Y9APGn^Y`d@AGiDYTBeH_8ZYBpNLF0Z(CFBe0cx!^oMP&#k}NhMp|b_q@4T&+Rgae1k@n0;p_1Q%4v^l=M{meX`cuj^HYHXB;J8 zC97w^>8Thnww~X0=Q=ts&h+&49rb$#*amh{*TZo}FMZ$WbLx+?@VkP`Oz`C$Wq8K4 z)&310G`D#CA~?GHENY9fjq)qi8|CUER%t&I?KEi{Ikq_P^lC?0i5O1$R;LM!NRK@91-H z`>2hI|FFL0=h}J@9YqY99}+Amqmck{xuZw{GQwYYZh0cKf&PDQ8=0yi6y|BQDw^- zHRS=fm(VPZE3KPOWjhCL#+RWNGbn{CrI~Sb%O0)%fxnkBD2FS9gmH9x2lc8IXbD%X zZ1Be!HO_~+*J?ezCj5+^ZD$X4v~L0XcB$JKLWJ!`@miYYH5Q$8oc?-zHrYD zK1<*kXz{l^zQ83$xM~O9rx;Fpr`?`#_6{UV)?oF;!Cd^NE6HALYURaYeLOEW(O#FX zw3;Y+g4@fE@W9oSn%s6=>~q=humFTjTnPoCQ5u58bBgc+G02zry^oZ8H)xFa*u9G4 zKfc7`(Eix94Cn2@-(=fR5E>FC7{3w;$8Zqhyi5vL76Web+|inB7NP3~Tj;InXIGchhQ1QROyHx+bEO&G)cPjd)d7eD= zd9%C*WhI4L6HGPp<9#pJqOSbNzw?>(nq)v#? z=b9;rJEsQhGC$1fULNHA<24!Hi-)M2(dT}l&z(>br%4NdPYpn3e(=z}%*y|lVmQ3l z0hxfO&uvl?A4&^YW`00qd2rIYBrEwx@P60GUFIzyoXi+3?M2m1V0_MH|0}Ma7P!p% zB*gMGt95H%c3f|;WLH=>q4GHw?ytCYY9I&e(`0%dO=^G~(}R=#rEtkV>*{}3io<*2 z!}5w1?LQ$Cw)D9-O5*%!0Zyp_YOD{0T9?C66><5r02bB?^bG#~LCGC3Z!j;fkBOqC$-!F$7AIBSysl(Q)xhtJ=yE?rI<4UNu5s)WPo23E8e#$DkC6LqaQZ-26OHZZSGKU`tYD|F2$_eE=x~cuM+yx z2smy8+-USO0^jINAC^_mxoec~Rp_b5>m}vrP4HDh9gTqPjebE6H!_YlKPC_DE9b7v z${C~dCa@}@^hQAX2ERz~&7#8%<@6zQ@m#%LxjgvhOC_~=CG^<{_|o79eV^gv;X&!# zj7&KrsNAkhFKOAvWKz6M!Jq%Dy2uH%cNvJ&;BVFFZ|is$zi=v?zs4)wzL(}TL3sjQ zSqAPj`jb1{RZO3{Eu22U*6QWj_iDT*cu%0t%Rr(A|3}9=zM0dkUu)YXYbmnrL(;87 zdgYAo^DEa=cddlR837*}{7%6)i1s%&(}x!ehxS!-Dca>jpz;#VUyLDk8!l%Udh1_@(%gTNMx8 z_2tZJ_vg&cQ1jBN0bIW(Nfh_De)|)CmM*wdk}CMJGlRv8AucVW_oH^54%U^a<|B$~ zNBJonLyZyfm0fJ!zcX23xBoTnhYv#Nsie)IG48=Rv5e4qD3e_C$JGPke)Kkk+VE3J z#3`z1F%Oh2!nJSFMXzyVv%yoTZJc!)cLVQY>zDj>j5c=W*vFFB2~B_8giYc$*g!vg9iUMp=uk zcL_|nui^$Wkq{G9KvQ@#rtv-3xIiupv;eD)8lm_D=6yp#JZE%nGfhTz^lvXxee8ai zq3&cyDMO-#9trJx-t5gx{sCgMh}mFR~| zXIbE=SH6g?|7O?{XteK`>DJ;g=2PZR83L7Hyack3O4i7+*_l5FltwuKw6^-1WV{M8 zmRzmA2jU5gxt^jmGXrHQZ9AfWtKdF$T=1VV6622MlYG*Qr@tnlMMIF0 z?v+dq<5JN1h)GOYY)+}8@vvPShAfk1@}jZ<8#zIGG*)<#m4sy$SlWQ&E1q8TYIs_2LXA>9 zV+FB2nqxn>*N8i;My=vg1qn19t2d-Z(}~^*Ul&a=AI`F#NoElMk7_K-Wtl@NxyXTz z?-hL={xe_LG9&uaF)=@?zYKY=ncKG-bxOc7$qO2ajA$=NGxCc98$Bg)OgQZp-Dc?@ zIU$D8@a=q#&G1rbA!aAEl5niehCh-*v{;^gdUae|!o#yB!kk%t%OrFwpbn-b;w}2& zS>86btiv-R`%>Yrx^+bTj*zkvFVi}!eu`<0l+$7xoS0_1E86w+V~UGJo04d6`YZbN zlw;sUmyN>*8ifM3i#(f$m?XM#`2e;o@_0tb8iRORh0sNojbO|~QQqlUgbhUuXHlN* zGOPV8pewzC>mtEsB*v9q`|9DR&0h2wJq76b1sQt;>klOKgCwF?uV?)hRG8S=43NG;rB{A5D3tPq==sq%fIJ zM_16Or6d5QWLVOJWZE>`+NQ_rwX;E{E+M)+)A9ntf7I0=Q-62a$SMyxAe|qx6w?(1 zQjXCMRLJfB*iFNTgi83pWn=VM(`GKiaw#)(1-d-dHgpdG(=hDajQC>>$vO-=f#I*; zmkL2F*WZ!Z(n z{^37>Ir?(B@s#-ay=(~9$0J3rpAGLlN>sxN?w<7JO1mk?RAuVqe*+x}8-hyN_)L0;&9N^&^`P{>ply$KI5 znHCSksgRFyI2kgfa!8N0{P!mPn9W|RF7Th?FxVBJ6>AwXpy-vR!@LyqwaBLM%4Znd zm;BK%b-Kt#3C`A@=_kDsacMmBl1P!t@a&VAM%}nlHsnTUKJ~a@x|olJ)m2GADMp)I zHchx_GjEpJ&~-;`IFZR$N&3LG!A3AuyeMyew-&;#4WFiB@6y4i#2leSTky5i1|v;| zKBtI{B};3a&^}d%I<4XdewmF@{0x12feuR+WK(6BgE>n{KxRp&u2rc7BFmDiG;fNg zTX*xf6cVVXlvYvw^_NXjnhw1`tb!%WNFqa_IJHx!E=;KcQf4~v)xL$bQK@*eS*y-o zscKrI{o5RbUC%GAqWrS_J!{jvV)1pWS)HCzE#yTjF-;|5hQZ#4c|=LNHK^X^@1-%F zwrEHt#96O6t)fe-l5h60OPc&Ii75R_ffMTzVUh80B=d&SygZsd&(2~X1WV^{nu@a@ zw!*EPqJG`N-!_P+_Hx>B++~%`uQz#mZ2<{}C9)zj`!73Y!>PsUO2s-sN_F~5-4I`c zXV%7GEXKItA){x}sjZC>;y16!SN=oe=k~R&4YB2JIi$E?bB8x_VfNQChl?|mxL|do z=cB3@$JvJa=I;aD4{WbL3tmRV4WC7gpBA|6-^g8-yOF_fKWn>9TH%CRTuc$ME6vuZqF8mwLuiRuvHNN-cThI(v-tzRSe-1d3mNA1 z;{Le3`5D5?@2J+dq?)t5ZE|y%@+D{_oy(*`(;A)QY;g)%zg&kbj6%0Ov2VVi^ zVvD6^t>XcE)qdWI;*`Tk2kS1IZz=pqIsJaCXS#_0yvBZp-DkFDlSRy|HXk2aVPXiU z{_?W$-_qsI=kpG?Z7iRu(kYP+lcowvv$gtvx?9UUa#v zA>C_~jEe>Q5Ul3tnyv1}G`Aabh(B}RldEukd*V&!(JE#U@cK*|vpt}UJi%#h1{hwb zo=6@&5%~T*loX|KakUp%7*8-1zHoQeyh$bKf?s%ft`I-F(X}SqCZCiD=*-Z!wDGz8 zN5>-`=tr5ALO+tg#%V?=GoQhEM{9if&o}wy;cD$qGS6qwKb2&F#8;qy6G119WlX-`appMX28#)$hpa^A}QtE!l-v|tEnYk3krvjs7z-DRCvyb^K zlU@ae12H=}+J^PeW1imWD!azh?~s^M_w)aJX2()W=$~)TXcGJ$E*s@uI(&`udb$Fw zH_b~mn8=CPNJ9tPy;NmWo*!2751>HaDW|jb1MudyHaQ##hm*`m9LWMLmuhw$*z@(- z0kKF~AFpzzm_12gZ@f}=Wu`=sR!F-z8=S#y?b#sV>A)&AT~Zy7Z8v@_v%gfof|veD zTG!)mS~*#-`>s=Hv~or|fXDwfa{t{*rR34-=PBH_(Nc>GthXr(GkaeaxihDwLs}L` zJ&EhQx4el)NB6Zv3YQ_(=IuP=5M#GiB4xLa?&&N%^ZJwyyKD&~u{yGp?w_jw_35o{ zODtOxZvByq#bGYXE~!Os*028758mDvzrX)C`QIOiM@36#2oKRAOClj*V5rmzVifX2 zc%W#2d@pr$cjj^x}v?IcOhZ!QMzYdQSXoM^;_pk77;i6K%UM#Ruiqme*0zJq|M}qrT zF6ms7oaX~ll-IEH-n-!9X!qDIA69dI+mq+K{{$|SyJmKC{;@?87VIrKlnBbZM%ZdZ ze-E`?=dN>7FtG4n#zKDy6bw45IY$qm6JpbG%XAKv3hPAxgay%TfC&f<846Vme7@MM zVDlr0AWm_4C}3*}wxFD}**BXgNXj4vay$Q3KWON2)f*tvrBn=+7WGQJwqI)XJc516 z{Zqr08{K5Nd5t3YQoKtA-zP;V&#+vmyz#fhT2d%b0J6TA9Es&1dv=F+r--?e(kJgm z=R`6||50B-5}adlD_HV!r;zsjJ4^uX)92n5k5gPia>G1hi|;Q8+HVs%hjP;sFDF!k z-Dl^{OB_t!)wmA2qYmXFXFfBp2n!YJY6zKLU~e^f;x<}xQNP!GHGC25-|V`l&<1^b+nCT61CW>w z#$HFEf4zI#cKXL2{YO@?e!e;flmSo)ItpGL5TZhWUwO;^Ox5>Z&;kHBHsu%7_>sjb z#sr97KZpfWtY+6yPqosI@n#pE{^9DXiKTVfn+!&l^7s*ifcx{S17H3K$)9NO#!EZy zn#V5oA%T{f?Dc;=Zn&!9`PC1?J(XGsFfEJ8bS!@FGdsX-fe7;5=vIMs&HikBT| zR$A&wAQdR#9q3YBesrDZGwxN;j#+uA?5%8H@h;+8fPf4SD7AGtc zd!8HYkzq|L6NrG^snkXpb_0^;7E-&mz~pcN4p=}?Js$G8efm+U!tOj=qI!n@rVZli zudk3oYTj@$6}2yUBW*~eP%`Ou8)lTpK@cp3 z=3Aa?I!!-Ukv$w{-ycg-;xBIKky8wjnzUh-8^kAlH8k#t7A-tZLXj!{q^E*@z|u5| z$W3=fz5a6y{x*yIC?K)iewe(4%$E8qspjjXfdk|~< zdvG$3+?tUmdI7a_Tlkcsd*JVVK%AU4UkrL%WEfYr3s&iaarl(B_W1Apo4yyWLHB3A zc;?0c%)wb3xS^oHLfCRTa2-+3B;Yg)za(54;XwUo8_qb zy{O&O$#t7JL>#YtUBol^**$o$B>-c{l5))=zCblTC-|e_pyplV#YJ#>&%M~yptV>G z&Y|+2<#Pi!lr(st8+%X!6@4IFs-Dq83hhLMfp0{IaJGMZF#Krlmt}8f4hutvfj2Ti z<+MF_?e8BknFen6CMt#4??smWm18-0?OAMXpOA1V2AUG3;ER=gQyiWN9w>BjWVF=k zY1!k75#Ww7Qc)SNbKqeRTFH+`!_~KVtpA`xxh`o@W`CGwc?5g zX2AJPn2i9_^8prX*u^qWq$a>Hgvqttoiby~W^*i9oUIOPcTc!(8qBR#0$X-?ii=i+ zv1XoKp>QwL7cduJ#$wI(IQzSK)7}R8ypYT)ar?-FGIRak*L*9*)_zmRcU+w=yc#Zb6+jxipO}l!cM7eCmC!t_TtGhRy+pc+mF<(Z6n!vxp@mN@p#Kbdq>sA z_%yn^ka)di1P4YL_qHtbVzsKd%GXzfGw1G)*hceX;T`O{t>&wq47uYTEk?(`)*#rD z9OB{Bv-)25I=!jabLaR`jTWnpb`h8mxCc}rS*V4WR&tj-+zDq&BZNL~o@Kh*EaHsj z-IBTIyk^F=!om4V)_c+IYFQ)tF-3+M?b2knm-yO`zO3it?9!{&l3ZO@n1uOyN{sh) zjH^q06FEuBYVm$u)4^$T4oQ9zu}ht-36GhP%#czqR?WjqdrPVH|ZDMn}x{T3VjjAQMkN4@zYh zz^dM`h`Y*7G2&u9v}#J1*JNQvOE?X6Epf6GU!4Z?1N*uxrvxP=*woVQaf$bYXd(x6 zUDyY=5;HihxyQ&SfBhpS&h<$~Qw})e?19WzCRr-ZhULO^hXdJ!cl8mJ&6=1J=r?i% z2O+sPhnDtj^>_wG$6$Z9$_oqT^m)ghM9LIFhLJ_H{-N{SI5netUmV$3@4k|yd#a?O zkL*vt_(zl{O@79IZlLSA)VlJr^3Advsr})n!&V}NX0#*LcNr$VVet@!ZCcZ-dnuwv z_xFj6RjE)Ui71V_`or9_!Q|FHw_bqDWP0!u>8quzp^L4jRREPr5PHC*6;Qbk@4nh`PeP`0D1yEPX3T#W$q z33)!7OwG!<={udl%Aa| z!$}Oh?U#WS1)r(s_j;)-N^aohy_cJ*bsprbfkZkLC4m(Zz-^9wYR=xsjy+MUu(K1Y z#mUT})`%+xP>{BlBYYU4Y^6PWr+l*4O!7CuIQ*EnEn^uxma zylf1%#Y>iRa4~3`?X{?aQcEwLle##Kt>%O#+Kpsfx*9q^v{$=xIUBVorEKcN?$yZH zgp88gqi3{e;TVNsT$`pdq_^BZ&zq}cadb1xS;KA?DY}?G7>K{(AV=KW^gCxolJziW zQI6H#$)9E&(L+Mt(%+eua0Q{tdC1F%%u>|Z>M0^7srChw5WBcJJ#HONU7Oe2ax75{r2#wuEyLTm_=_oMcj7WWcAnSyIKnqdBBI*VaR zLZp72J(rIJ4qPDBiL2>)Uf9hi-b@^g)Zyl-*!rDDr!yYDD8ou zUd!B}BsU=oYdA`m&QX-8GJg1%3tVue8Ts{n6=GUH5{w*(B4672J2?#mg6aArQMRV< z0TPS-uTkaePfIFqmE%IldkiRx#*yU@Kq&0TtXuny2nUiUa~2xh#_*voEQy*aG1jxi zo20s8lfCOCL)#uB(c5IX;sY1rXbzh~p7la%ctabeXuTInp1J?YY}u^28KEa8aa~ee+)E` zj3TtJe{T{3`GjOA;J`5()FtonI}u>3HLYq9O#+uIYjkXtwIi7=EFg#-VH4jzTG|@9ELMd`6&%I-53$PWcoI&3KW~s|c__{9v-p<7J7|?; zfBRr^(%MM6fBCaVHy=%(dFwDvdJS}Sf?9<%deOswi1o!;70gtnnFgm?Q_v!Z0>ZB7 zxq*0}g)VoawXEB_GnkZ&x2R@dH8XGBUOkz$Y*!FtA4U&_W*05B@HS~P zuIBZ|iCz!1NaJ~H2S3SC-5C7m5|&&BT3f-KuUx&G608Uj=afW~nNFe7ezExWF zFG;)9r8v-U{tYot%t5dHfz>M$AS8E^eHZioKqI0p@iC9p64YPwE15ljH2QZOI?4)M)7H0d zxZH=Q-rY_tkLMfXb$pn}OqP#Sj*mm&BVwH;BXs%_TfI#AxAreuA0<3>iP0m>!?u!d zwo61}<-8xop;J~Q6U80}p>{f}7x4fn{GO^6qPFnBU+zjB?=L25F5%4N$7kE?YWCg5;e@qpYm+K&qp5b>?e)HR$%0z+V`uKb7-4& zN69Jn*#X-H6i}*fl8E!p3HGBHNriIUYfs{P35f^Xmwq#&k>o^|{VITvcCmf0z=|DE zxJON69}rN8`YX-ud^lLfN<*{(FW1WdrkBx3;y(h#2z8H)ix|NELO1dal=VDI@8DkL zT>vWPAd=aJ3n)GapCG)TZ&n8el!-4Xb7c=bk(7~NT8MvD6kK8Z9r?w zcD?BA{qqkd9*73c;vv~MXdUtj>KQD026~6~z&^*IFqXbRPgwqg$ znoqFy9lN(m>?(=x4Q&GgG)B4+uSbEu)&0CSzX)OCY5jeB`f#lU<74N-{9Cixmp7?} z$hVXm!f`LpW}!dEdid@Z$s0oGafD4LUQ+X~ zw(St{GeqZ7jlOYv*p?4L1LjX`BN6q`dp;A6q;Qy?D+;&|=^ZIbOCCiNec@kQK&$#h zD<9e*Ie<3ExiA7#12Fm>kD)7THRmVlSo(8eMk?;T1*NYMd?_0b>z4#AfFM?m% z6Kr7Gnji|7$xv7E)o`&@ovzJd-w+|U(bVXak1hd|a+DguZj^5MC^&NO5I-NZ4h@Tv z-_kjcZf?WccQSb~a#alu8{aDLf7U3?{SOvirhNKNa5uh~U7%(E8QmOzAev#2UUPCf!!>Dn{ zJ1=l24{#7mj)qcZdQfwXT_b@qII&f#>6k727*)|kY(j|*9WAx!!#;mz``~9-qg3(} zwR}1P8;0$VQxQ{JTT{vw=5Vb|r}m>&s5C+pu5FYW*4h8j*cHIdU#g&jBOwN?PlxXm z1L6Eu_jxZcfD7F&NeE%Qq4}sq{YepWESpRhae&lD`&@!8X z=~T1pQ6a^PqBx4$+3T>*LWS(3J}?~>(BeZWdbbo$8v`td2xl0wGmhy;FJ1Rb5CP=l4YSt22{gYV$#(>2 z8`34pto6MLMxYRz%8ar5p;HU61M`|o{_5btr!`IrBx1I&MQ&R`lhj`f&(PnzhGmeH zT0MUwxvBYBa~7sY>knGk2ygbDQh{X%c9idA!<`8@QuO%CbqB!=lX1)T{Q$bZw(LRG zIxx96u6;R1DV9TuWD(C{KG@tY!=#*pMv6aqS;Oj?uF(q-Ra$Fdg_<$ePBF1E!?{3%3v)yo(0N zMr2fyB8NYd#RGS6C$D*vyT05$E12`yfhO~=70erhT_*#T5;4hsMTVG>Nji0+u!lE) z>`Tw$1rf|60@E+PC$rG<*jB7#^Et9l%E{TpbC`datuzD48O44iFtxV%tHVp075k4V zT1A$T58>o9yeAyz_n7n*Skb+$&A3T91$R62FN~aU{pOH)=q+zzY zH1a1LxVVYio` zHhSH*B^MY(_u*7S-YI+mxXw%3;Ms*iSZ)r%gZ*$6JRhD0OtO6!rVmF*TFfUK@~%zg z|E`*M*Z8J4!lY0{9zAkEnUw=-*J7=UK zndi(;s~J6i^s!$CHncAQFn79>s>gA;&d@iTiHUf(R0Aq<0D$x9hkW|-Hn3R-l30dch zkYgJ;x@j6TF$WkpMZ>L>Fl`82e6MWfM1OQV!_r zABN!D@F{69KeH2%)I`Vl$1ImE%H-p9l zQ>Sw}G`(CO8Ck!p-6bp|D#)zdb%Il%Ct{DCtxP z9ix{1E|MN#>P|0REb+qK*O1kr6!!+OxCCn;q?NvXsEnd6&?>@<(kzp|n1dxKeKcm* z@$0Zc0{aG`={!sqd>x8())cN&MBUf;tTFL~bPfB5RH@{ehrTASQ^vE)0`Bxj&_$-M zKwB;kWnomqlu0v=BPnp0a}$(A;zcNpE=D=gMXD4tD>#e^wfu;i5|Vj=Tv=8f_9)Nz z%hQ<<^APJS6kAuiu|1ABB-R;Or^F0v4oyg>TKs^rw8j>Z-ODWG_E(r*I*vxcU}{|H z)aQGoNja=pgRi4F9z7#@gJDI=nkj0y@3N&R0!vet25*NZ>N_8>j4YxdiuyQPnjx$1#`7BaARM=8*Yy z(KK?5XeXEVs2mocSHz8BEVppF@d2>T<Md)8N&w5NvM zb_ul9efN-bwn!?b&6A`XX5GUvw19TMadhRH8!}n~Y z7Y{#oS8-0!86>pdLIeJEhdjIgCet}@m=P*)n75u2fuWf+@AA<%P|}l)rgTm@`tc?s z5cHx~;1%{OSYXmDaJD9Y}^XQ5+*9ZA9Ob8^rqjvLJ@!DK#uPQl}0B2H$Up@nXF; za7oi1icFSHwUK}cO)6Q*BW5vCk|79uBfq{S3c~9)^umhf^!Z#mHih>Wp7JgrXJa7$ zgsJyv^WQ7s;BZDtq@#*wj8o;%V#9;nAs)i|ezAT4NA1x+K5c{c5 zV!jEBFW}bH{$1XW?L%SC$Uq;^&Y1m-)Ko(j$`I?czq2U2{YY3+N3}7awla z>_JzR9N@!wIgQEWG*on|xA&c4IBff@>f`?3@t-gzp1VGu81YG;Cclls2>5dgdU4q;ESJHTfPVS#LSy)gSp)Sm12IPv>YJ;Xb5fApRb0axS`q_8$98(3ahwV~kgLtW#C$5t~H=}bO1{?hmo^6R3%fY z@KD!6QPEl(u&>cUe-hjfrb6^S?N4t0mGjuIdqxm>r@L{f-U+f0Y?3AyB&xFyy{))X z2W_-`*URLSX&CU8>6nvdOyK3GFk;3S&<_$BgT;h7RO27pV&I)}!0~fBJ51VgU%`>- z`*H+Gw}nT;Q3tuggDq1Kb==BBZhP_YE-b_V0F)rmI|*ZlS6e>`lA$zd z#`X|{{|9E)sH{M<>SiiMQ%A7M;{njps3HWiz&GHb8NG;3WmSoacn9$iG_=i6`M&!p zV4dUp&)0oo9(h4Tv$TZL85|SE-+p;wO-3Al;}}9tK&Co`_nW5(p)8H8;^UoaJc=8J z#mpd^db=)ut9s{>-uuywyoTV2{xgDM=L@xII?FY?R3qmZ-{GA}hNq*PcuK#!Pa;FH zr{;UPk0xIx59eU?20R|!k6XC=No$}=oloB*(j$T~)+ePHx@L(PYq$)&0GyNr-`{%jxZTD;ba9b7F~YR`=1AolkgU3GM6sVjH1 z-?=+lX~`(ga-0;6QD0beHL3$T3rsziCJ=N}i1bKlUXR?cAnzS8OQfprVd{3IL}_|4 znTFT~(a^^V&M%r(R_|vzT+Ea6!UUI;*3~ZELY1&!JYI*giLL=yun(l$b2hr&iQqN|J5n z7^;jdW@cugF5#+v_W&=GguQz}ue$e(PwbWpuDT+q$8Bwm3%Z@su1VRP+g^*RDg$Pb z;>F93o0JOwfM*no%Ou5$7b*j0m!iO1j>Tn@62)7N!`<4fdM6Jzt2R#$HmjIJtJ}j+ z*ThyE`}Nqpaq#?nTaKc;=ZShIs2HT=@kC;9Ii$i-lK~#Yd2y(wz}1`8yjW>=l6e*d zw|-6%Vsbn(TyjH+kA?2vX|X!{7V=sgMIl03(d8#!G=h2!O_bj&SdLE|Kd+8+9zRcy zS06twkGl%7x>4cmi|$S}&E!o6b!^-wO$R*(-_2Ee#GiIQQ>@8lxvo5U9|tUq-yN%H z%LZ*!ZVWDMaZyrl>CGg!di2l0`IYqHG0OfmW7d-MiZk2AeY?U<=?hY3@xxFhjmqj3 zBQNq&wq((aTpv+b5*Q4s&Xm6OADQ+yO~oi){0B7=qmRHhBUCCrPh>7FzK*>}R6Hmf zBt2C(ZLY6W-FOf;dM}YfT&H9w_WPgL$dkIVotvn5 zsV59LMwNnHYS-5Uk3_u98zZ_lOvemoBSKlw9iT={RPK~SDeYpq`bizo zU&Lu++9`WdhRzogS<}$+0f{{Ye3(Nbt?n)z{CPttn#wT z{@vV;DxPH< zO|lOr7l1XbW^$sgiKYG8toJGR5#{_;-3YY~C|0*rc7^JO&E@SjWog`IR!&mgQ~c3` zx6CSXwzB?J>0aWq=Ko!6=4$=1hAsbGL9u3C$I`w!H{UK_vD?h7*4+Kl^vk1UpnEW5 zv}?uGwT{+zzGBI{^~m|lgktLyFhx9>f5*>z)WMCmsm<}h)gy^l-Svz5pROLDSC~JY zv-6iElDnbT$Fo!9+ZHr?^#I`LcK7&6)b{a4Fkk%VTQXk}j+NkJ`-vT{HdI>dSVfJQ z4YArOpkGObWy7B)Yp9UU(1uv!6wr-P)v`bqTU>8pL#%!ZXwMkPVOvN0dEUv4VvV;h zR#TwO&Tee8%*8{!WaVn;!tnMYSe@=bLZ7Qk%+c>c*FE;pX<|dmV@~JqLx+;>*e(@@ z?0EUj>AK;|LaYCqzszX+n~=kEpw6hY+rPWo{QixCSL&nSMDk#oo!b0Y(({W+rz&StL2pi4 z0}p`{_tu${4x}kzY}##!zQ#x zQ{hthP^oS9m-mBjGVdT1N3)?Mwv(v~T znk^yymOa?_`a=SmEtG&SCO7M9ef{bfzu!H$e>FtB=pi z+vJ%G^VJ!E^KcYG{l-?qj# z>VMw8X+~JRH%l&zs9McN4QiYmw7|C)JfwJV*_pyBQEez8_w3Q0m2^9cUF1Z-KDN?#= zx`KR#lmrrhDz`uk-<$&5G~afl!c2lKV2o=kmT#toWtwd}U7U;wc5+(tJn3b9V(TW2XKC!_<|dFA37R!KRh(YK)rtO=)pN*?Oi zhGikTY4U>a3XTcbfJ)xTxQ2Bh&S~U=Vg-tX0e~})l+3czEQx*Gg<4_dAVG2y83^Dk z=oj74XYgrSt&e@0!#Yl(J;4QV!p#%iu<(a@TD(uW@MRD_8JqM-Mg&ZWd+_~2p|Eez zGdYno89>Fa75AQYg<;ywx?O=WJ`eDdFEZNW?>^JCeLTA1e7fVa!*6crl~a5(El_Ks_K(dxA<*nlYVMI?=#OdW(lm5_8ag@+9qFaM_zz#)kxtx{PCS8L+?`Hbmrk6DPF$K^ zyo6qyj81$LKUW<;7Y9FA4?hO(l8{-uyji=JS-ZAbM!iE` zr9*ecLt3LmNriw&#egQofN`Y&F* z1O$Rn5s(@M0RidKn^Hwe2)&PVkP72<*R2WUqGMxYImCtzN`SN9c{zA& zD!*)Dk;0f~BJrG)pM)G7la|e{XDC|OlR@ljr;uFyPAkCe^>7agi-gA#-w`d^DK{Pc zyl=t9)3Q-|hJl4eH^+>liK;&+nf88-3UCcQ9DCua#8_1n@vx2Z#?dcE0Un*2?W1St zR=BD*R`rqC*F(AB;P<9*_4-(1IMHH|lByTmMmbP`r=?~;FI?pw8_OiRwo%5N{f=(I zqtf`NpJlql%6zod$Ft>-``W0#T>Ski;0n{(SR~HA)`e$wH-VhiMg8UAABlx4;j=lA zhNiWv@Y$+JvT7&wwv&HtCA@1oI|ylLQ|lr>%l3nM)5*V5$Nx>CXe4pEo$|)XPv#b! zJ1u)w&+yh*Vk+_6Grx5?xNB?TndC!OI0i@ChK= z3|u4C;NM!?vpz#hFtl8Xd`0|e6#39|%&gZq#NmXWMgSAM0a^ydL~?bOB}wPO9_&ZI7KrE)S(DabHRRh@*^MF;1cMYh=nn4tZhowB#AA`o_kmw_L*rGnl~TVw(a z4>AGqAgy}}Sd~D}1eHLAVikYSOcj4)Hc?bqlqYQCqbH0x!V@+dWenShRDi*t zMopJ*Mnjit#-c;MJaL_;c+iPGa3FwvEOkz-P)Xsjp394`sq^ep3L&c54iAj2YxMpg zBhv;~*sD^bA!!bOJm6egkUICtP%gY7+`+(8qs#h_d1QnBtCXG8U9mq(Q^o@><@u=u z_Wi1N;(uN4DtvOdp&;4S?tH6D@XxJCEq%ktu7MHusEk0dq9L0~)O2j4={EbRckwp9tN*;cg-E#<cMRTU7t-@< z{iLk`?;3JuiL@CgW^YQr%ifg6A?^*^H6q#n&BKqe$KI3mywo-C%oX{>S*%Ork2k{a zQ{EuA;GU9t1iK>(M{$no<9zd~N^OR|Z2aj|t@}LBV=lSIHJInO6$09tdLI?XGX+O) zDP(DP45kZ4-=ak*j_QexiYbI@=jj{g%Q>Hm?@sTz&*Spql54Z?{rq#zmhmF#-?bA5 z+6DEMX_1OuQo^H8JwI!Y4V)Czhn0L(>>$aE>Ujd%RRi&YgUVbHianXaqt;d7+Pecg zf`hQxi0U7|L`LsbrE5nGa0p5(`+ThKER`KKQmE1H*As|O&X^Z0yA>W)J^D##RKl}D zyJYa3V3}OX$Lh%ekx{iV&HTMTYVpdc!df%WO|Q5nrfKC5I(x>~rh43;aeEL^JvbmX z>aCEitv+BWNLCcmnsG|L>{?eGRo(MTeAL#nPMbC`FGz;*M!xwWb$#@%XSsIxfUO{( zGHb+}PCdcVC;du>%Z{AXj{(1eGjEDY6*TsWN^514#C5qPcU*OOg?6}^!+Kq$T`tDs zEK)^we05u-c9?XNmTao6nY3D;sjf)XBZ)h!w%GBzf{2<+H+PhD(`0tMba9e97yG@8 zmNSx#!B(qe5lov$zscQY^c+qg6E+DgWQuiGD;nx)@ksTpuUx#CV z&C_MkWO>ALQL=kXFHVYF(TkJz%7bP&t;;Nzm9A@M!$@gqoWe+(43S~Uf~)IR{S)TP zKAfhJ^!d?c_CvcH1-$~&Ma_FTQuX&ir0R+_!=Yhi`OvN5btHZ8o<%%h^}U(pj?^d4 z!=eJEn>9zXZWe0#tP`&jFUa)kCu&yxdK%)TTadd@`{qfRlI|U$t;*}CUR$M$MZS_U zdA@E>Y@e=A-Uz)kV8mp*E&XvZ<;UyDpNYe-OYX@r=k|(JvM+pfy&LCl@mKJkye>!Y zTgyhVJRK?h;iPe+l5>MnMc-caNq@}EXn!qo`HO|Y6Tud#mE!Azug}*QSsXdOPhSa; zep;1zB26(_f?d~L{6yKCWL@oy`O!z`W~B7jvPX>aPQBpl+;^%~d;(ON8$7vJW%*t6 zm`ic{I4L>k;U$;5XS2sfPpLLYrBtZZ6-1VN?g@_5z^q(RQpgEaxu@1IEa84!cUro% zYFzS!x^Bab>ZHKNw4~(TR1)Q9hEM*qV;kq2{Q+1h)52492_3qD! z_jJ(AC)yt*@0M>3k9JNV9b6YF>6SA}cXJDvBhsxdtxmMx5}rNM&JmxA+! zmKN!$o_CYIt%jewo;XlW7M!1+9R2XQEm`f}*7M?a3^lna;n?VCC&z}JYc7ttCNuKZ z=8IQG|B6~`A%i1=M-R*)f?_l8nJ0RNiW9@Sf-bz zxJw6OK1>?j%-oRf4RQ`CfG12^8XPh*q-<=929vWNyml{c8@19+%Ia6v6%gsF`9&0N zNLF~7?p`b_+?Z_aeXU8luISm+Yn_+-mg#gGnp6tXm}+I9D!^hsq%&&EyyM4L`Sh@% zgEJMO`|lY|J%%wcR0#~Z*8&T*02z;9M3PZl)G5^r#zYSmm{Fc3IMxC-NVIV!;3q~a z;jlyReIj8z>&Pf2>eS&h)#nneB)}Q{Dg}D~y8`&>N}WoIVoY#h0dpj6Hiuy{i3NVb zX9@AOKoAMD-Ua5~pp}Tapl!IO5!Mw9@=s9h;w&M#7T~091pEZQ%TUdD`@wZjJi-Gy zo3$O<27yG6RRBZ$B+Lt_oopmbe=MDED;5|TC7c*VXdY!4AI+K{HH9)-et>?JfC#NA zi;*=1wmP8AssJ`T;fRFEU`V%v&MxR(EYLMgctt{8rurz*tU?$UpP?P`giaFbA$9*U zEhB~z*bTNmL#I>$QPYG1(&iItog!^EoIxH0O`Xx6Re(hSaL@-HVS)W=f&~fnnp!79 z^N(Q+_JZXuXfJA=60IqO(b5gt+M@-kfG#`&McqF~%SdCu`$3k^U?U%CQa_U8)Z|O+Ad!(gn6Uqv3dhAPIGX3ZuZ#%$0xwo}fxXU7%T| zF>Lz5WP3CU3+&+uY@|(nDvXsj`+?yx2qwFrOR4~4Ji(Q;X+wqa(yYQ5HUl7w3!1e8 zFqtOcNT`n#v%?`UIRRWhPs_+;@cjT;?9rp{TMO|JxfTe1$>d{lo?Q_nh}j<*f`Ssd#FC2 z$tdYr!sl9G&jW2d1KMI4a2ML_G!^!qjPm?{TM>&yo6Hg-YJpuOI(!z)u3<2oX&IB$ zx(qVP=>LV|#a_aDfF63_Vx=2>8T_sl3b@r%e9E@C9P*X0(YI&uWSp zN}4f|tc$kcEdUyCFuJUWnAc`UCI3Eyi(wQqX2{r70dT}Z#5A3v%^Dn)ET@3$RZ!7H zhDXo;Jbf{qGDVbSOf+Eu)@g#-D8i|VVrC`IFqzjuD`_5;nAoAwkI*%5M-gVPsXir? zsfj2CT!^7{k%*z1A8nKiGE9u2vxgP{<@TcpcnZa=Uz{=V=n)#Lf3%S)!I&t~MrWnv z123ReKeRfO{gGT=2{aV|evU*;NhW2=;=iMfUsMb*t8si1w1D znq{?tjboKS?+~cQiUlkssAfzMUv`0wY7pl_bWQ96-5}1KOJqz~VgVT#t>ld(IzEgs z0hT%`oAu1lDk%#8(m~D3#H5o@zGN2dd>wBf6+&>g}L|GHv5R z1;e8q%)LyD$|YfD(jk+TK=}YvKAT}uQUT1!QOz)IpqmLE0avG$0M6(nO_J;*h}%Dq zFzFu|6KYjJBx4ijcayfU^9*gnjYr@&5I&G106kzXG!}XgFdb>LgVZ`!+6KK3T$h|i zxLl=`$l9ZAj*~F2At|FzBc^<33BI)e5!!;lyF!v}he|n7%>su&w`pi6E7i=sA8bUT z<1-j0>(JR7Nf>Gb!^_zbJprkU?I(r_L;_(|z>yf0YYC4iI7N#xC1Dbx7+!Ps=)KWe zpko^0!$O_1$YxBi&Va3==rfERGnycMVu=~OzzIq;eE`IS=_b(cKNLpVbfCgGXtO#; zC3=ZqBefEMP?CC+VPd3%PI@wmAitxS8A6oNWeYiVD+C~;qY^{NDSIH;ctD;C zVRQb$QHitzT2>dGv5v*^x^Wb-3Yl@QqHyg)uyH10HXw_E5b_M6 zqwb>!7iiZEgraLw46naQ;JVT@VHE=MSBhB~L?9vwV6HMv{r=HLx){Uc9)ux?BgTXo z6Qfull49n5o#8c^41R}9&%lTnHS?pAzCFy!h2#_N8~Hzm(v0l(3fax?h%%W@>AtsV zGXI@tWcM`gMAMS)`>Yi6-w%xJ${N|PX5{~v@e{8|zkmM12;x*QLt2b6L4{DH4_Re{ ztm+??(6rGuju6zwMiGH=l&Ko?qo_;NIyu^`+0n*NF^1MdB4#Io5eQLWI%)F+#0}Y$ zDJG(9s}8z`dlWJCA9YHY;Z++Cs`==k<00RYqLtX#qqBJk}UEL5``9JmfCS=TheOnDXo{(C7s^^`hg^O0dfs{qQINtjjwb^ijbMA->Fag8K9 zQwbcIQq3AV!S8uUv>6uoh=YEBDj*dKcUGX_28wEANtnh2#zZ6*c#fp`M>D+m>i!o~ zEb`Gd9<_rK`_qUPNyz1)3Y@eOSQX=<6FRF7@!2s% zAxFufOqD@E>K{eu*`swKA+mtn{Sgsk``~CJG68Ia(3ypT1kQ|zv9vfUx%L_S-T|?@ zBy~T6GL;1pJQt)J{}U%I$XFVMOSJ%aBuRyZQp`3WZQ6tk!XSf?J5ED>uLP-OQ2}6i zg@{Skg0xMH;nkA_s;NVM+(?<)`^3l+W|(kkqxa@U5j7YJ7bGj|cZnEzy`v2zgd&?1 zupJ@=mlW_j3c|Gq6&4NwACmb>EP#bDe4kpEP2plK0Ni*XIf3+QQ;K0?ri1okC1U5gKk5|s6cq*)5q3sqffV-GEI|~K#xRD-A1v^#6Lc$q+|hzM<@%3S zH3K=Rw=;&`NR~(AZ># zNk$d01<}kk5=QwWg9(cND}fmes@Zfe_`M10G<8AmA(uDf z5a9Q+55UZ=1x!it)|A%+=wB>F>5M!2zhW`NCfq&SL%W%~nV87D6Nz!bXSK$!*4 zcic|`UG*>nEs0)wdB}@S0=DbvdpW&?HwqwV2~MtV!?`4?GIpnL?xhE0%|l2Cg4FwBqU`9DShc_w*6yt@P-k6;$bG z0L-O(#3TV;b@XVUmr$t(PJZ2i#U=yZkoC45m`FdNk{eB1K?OYllXaId2nlpX-j+`a zy^QrI0&Ncd(KzH4?L%zD0ropEpMJs{VQ?rODAoigOO{b{GU$y5hgSShmow?nzB@3{ zL#sPNXvVF>jJkfp!GB<3$_mD#i;%I5A;_Y4i?-{mz~s$-gn$q_gXNGH_zbu%{yS9H z1C!@=>OOT5B6jL7qyVl7^cstux`3PL{W9$4M!CR8(_Gx`oPrWQ~P zb#QWa8%78PUI~E76J>zt5@xfDa5W6r^P}sdyAc9m0QNGP%t0T7A6S85fU7KM$qE+s z9k}~%PjN1x$Q=ZV82AUbh_ZbT9A2Y)bT6PjyWzlllklF@QI;SDPNau{CATiQxSJVA;@P zDcdmVE`&N0de@mgDEb?d69u?(gWXmK89*4I%z++Lqwh^0SP8f?7?;rQtl;G4A}T!u zaODA$HMi^LXOCzP>C%XH#6MN=DC@xe>bMfD)#4plt}?3stDv zntHf^$_@t(@6w}H4|rP++&#DJsEa6z5J34Fx?hmKS7(KGSwwLM1IowI{q_g$K1(PM z0y^*t*xfrxP&#loytY-h3hb{k)-fWzgoZPW=)WOg_oomrxoHLC)lYb93?{GaOqC}9 zMD+u8U9g+~a6@w$<*NhEoIl*)g|-a9Zq1!KgGAuP4lEifRtpi3VD!t3DMLn}-o0AlI-yjwoy z^cr5sYd-^r_VgAla8h~)w%1Fz|IeED(4DK7&}a-E$C(H`;i=m%gS>L(&c7QF;{ zs_DY!>B9{56;wI|+1sE&3b0*HFN@l)Lx4wmhZ`ri>NLTb%R4Ys5}^DD6E+k(C5 zCPXb`JmLX41X$>@jKQP;SbeaNW2f##2LZN>%92L+OC4@RK}K(&H{d%{e;`JQp$~@l z68`M&OtGW@`bG3X=6|awP#f$%OK;&rPyHk`8-dABc3?r*(Mu%<8CyOLbbZE7U1<`q zV!Q(@`wY}Vh}&2}@j&pMfClgffoW%ow!NRT19M*3ga#w*Cm{e!m;TpH5I?YbxP+18 z<@s#bgWw%GQU~^YB*1RQffeMcHqpR*C_p_1&MX~l=x)Q3f1}bq0Is*eLWQlV)kRDo zE1D5?VD+L6@sABm7TT`k{s^oH9JsqIp;WoijvV03)bv`LCx5EJ9J-U~(R>H>l*mSacfGp8{vNz9e4&* zM*JX9l)=dxWq`tVU28btbse1S-bbf+|NqP|NKWy6YHT*u?b9oEdM@|LsobaTT9+P|syH&$6tG}}XP%eb|9I)* zxr=S`VrJr5x@B24w*&lh_^zMZruFZYL4TE;I8R)| zD#^bJr?HxH`*1(-%yGM$$YIRaJ1q~;oNJE9Gnh!6S6$yf;S?KwuMub-KYFNkE1%Ws z=?~M+z;24*N+CsyNh_d<7qO+}Wx3|JP@xsI3<`P?x&2yE`zV`A6wAcs*FRrS!vE%Mb=$DTS*3Ypu*?=3L zQS-B$x!@C+p5nkHY4R<;!O`3=bLyVg_z;~kN7D}@wD}}e9w`17-dA_-Rb^bbKVywwpsH@bk$0d*d zF+Fk@5sPV5POYu>o|gByF1@y2H1YK4l50qF8uh3)e4oVXdnX6`mg)iLZUQTkL?L@zZ?c}DDpSLA!@&Ef+nui2Lwt@d?4H==! zFr}>nCTx^O&!=GwRSBn1Xu|pI4Byfx#x{4S^h_?#K55P!;x&naDeFCV1j z_`_zY5PG)z2q*vAQ=e?~9VTI_J1l!{^6tJR;^B2T+5ef2T*oDaOk~)IbFV_jRfSJV z9XA!0Gwdt54dgo5`6vbg$_n3=Mb^F;-pAbj(C9(5@%LSIDU!|fEe+^B@>7lbmmOyr*Ks%m;ab_^=}WXlr%inEq0{kQvR*;hXH znURD}P-TlME-qmPi88=)-@_UmJ_@bk7F^1jyo{2$I<9U=IH%v&@;j&SiPW$EbTuFH zN_)9K6$sn2|0b(*bgLLH`pOz}1p#B#8;))k+x;?~fr6oev%M8Pf?s%7Bg6iBdpiAT z(~qkVxHfd(kvG#vEaXMX-}ffmP4-D&$LVJWB6(5ctK1Y{kqq(O-<+xQgy#xZd0%^+ zHa0FC%%2ba^>}8xa9lpwyIH74uV9^gORw(asek-gH(NsMn zqM+ooYJn8--+NFoD7Y?8W~*stEcS7 zY={}*{4C8GsX+=0<-~>&to`aqcw0NFl1YA|D6dYtK%A3@zmgONt*ZQ>I7rMwgL$On$ z>$3z86=~mb{Z8`N3}X{f0`kH{Wlll`RZb>Yb?Ck(Z}qiDT2h0z>yw%uWkwV#*Dqg6 zx|Qs#L%8jdTX0bZet*{#_3rbhfpO(}`H;NoHYIKgIyI{Am ze=(04qhEQy6Z$?Yojm+DPXDCmA7xv#?#4Rqq~fD#@D-X06;^{ zGzI#eWWIM9%X1K<`KDB+Y#!*jeM%kwCQ^g8 zbEpomTYB;xrEq9$bo|IV(A)DH|9Y|0Z_}32V2!EXveSKe8dIHR4?6OndYLAnBK%`m ztcLC%+~9lk-+}6!)ZE1<552xM$&spG%%4edDcq4<3BRWm`r;#Bqn!6zWBFI&?h54c zxel=I7#l8i@4zYi=d#<5Vx~_?jd<*aW6z7VD^0=%Jw%*>)9_jUw=dN`G=|l3JD#dd zb8t@QLUcuZbo<0H!7lV2?i|w)_B8e5m%^)e$=LbvO9~CvkrH}uAN!YbDRrKAyKQP( z{H>0Wv`4T6(N_IEKwKYVz>l2}Z5m z(0}5_!b)|{XE!|0e!IbNu5tut(@Zr!GB&D3i- z_5h{yPrzjNRr&G|s;sBvlR9w7kKy@Crv@~iuV3P=&)nzKM*gcw-THEL@#Hywf8y_V zUBx|>SBj3CC8$%nrZ7GF%vZ>dOAyqt5L99^PA`@Na3{3e0gWvoM6sLR)RE9#04NK@pl zi!1y+mtXu=sF<%Vf#t_B;(xdG(!)IRMSmmmL$)MF+umLwMx;JeJ0+T!{Q-z$=_=A0 z+kQ4`|CZVHbkP0u2tqtdkEeFkmdPmcnofF%^5|vfg!qH2t}-kle4(uI*`IXs^R_KV zZ!`B@{iUtO>3g7}catyHU0d`wEuU?hc~nQ`v!Z}cfRMu7Ho9oK?29Oc)wRHt{et8 z_ZCEq?#w^1jCP634*4f?@wa%sQhki#N3(>1 zZPY8?Sz&yqx43~r(}n(N%WY(BKlaY7TB&{03Ek<*CCggLkv4CR);@0~7Kf(O3i$Fa zNql)n6u!KNh~(XJuZ^ycC7&jBcnh@-db7zm)404{Wg(30HBo z98vfeciCpk-U`kt-;N?H2gH%R10u*QzlNv+)<0|crmE&5rYhz_1uEyF_mKO)MUm=T zuWGYY!aTT4vE**kTKK{FS=-FP$*{UAvZm~8i%JezgC6g3Cuqp~*c@`-@g$U9A&Pv- z63?;}h-9_nn+;LC*smW{b!RN&J$xGM^v8qkS89P*cV_S4>z;8b*5tX!H1Is9bI*2JH#rF|dXt+oK=Ey!E`Mxe|Wd%9!@Vb+nwF7QIf(gMxmDv@5bH3As?`ssbWQ~u&d5p*-nvg zVk8_R=l^!;N`SY-LFv;ii~QeJT5UzzZAFjTR*jf)xYz^2#12le2LzdH9a^*%S+}j8 zV9I&Kl(WGRa3pciT>87pq-|A-DW`}dV90dqmE-}*WUIlbt*7L-@!-}1`7R|bZ*4av z7iSi!u`hAdT)tLiKGIXTreHJT@;(=*td(P`m6O39XvrQ}{+QxxG7=8F{!HWukTKp; z{qlP^A=t1v7$8t=29Pwdw1*LcJXfosCA+p zJ>T%V?;LP*k??&5f0dsSV0LwS-@Ubl`(Ir`zqmAiacTKdl=8(T@=MQ+wc<;ZX7RN{ z>tWBVFRT7{ah}21E=+L3c|UJvKaH6Ga5cf%i*|)^s>1V2DF;k&kKpWr z;B5ZjZ1q!co#5<{;B5B0xSZhZ!{F?IySNK?ae2Yn(2OK|!P$y;aS!g|c!RS$g0lf8 zxEIu>Q*dS`_?`29r=b&Fq5KkA;}%|P&>nW=q}+zK#n+~9tm&{*zI^EsU*ncovk+Q4 zG#akDKWr?qrm8udch2tx7v-BQH|A_?%$ARmvte+Bs4jjtzM|+ZzDfu0nN+cQ&K?)t zo{jnd&j^KYp7$3y>+gKd|L+y*v$Os|SE#>)NWRwi-Ovgbpu#1$V)eGYA-2LLq@qWd zL=+|UJtfI8`=y_P@1OG<;-Fl+Ov${t=4&{-beTfAO!<7y@6S0ugG&^1CV0s?I1h`; zrOk2PYX%`B3ySG{ANZm|DneM=4bnrfp683xl)r~GBre+hT~xK9NBh~m3)WTkjO~r#CT-*OI^FhrPl?8U`*fF%o|LMlW|7GR_v)A@7|Nk=| zL`PxI2iqO{uxU6ZUs6+}A94vR9QmcQu<%6Q2&w1hHdjqskK2{=e((4tjBcdo{{3Aa zvdNFz;CmM%bG+!A^7~tRns>4;f0LqC!_~uI{87{4c{~_hCFaC)5q>8>Lb*=a)Z|Bhxr^0j z-zM^j9bJmDh-5D}nHD!?wH`U<`!b}W|HkTbganK1|8CeMeQiP3LAPV1j{l#=<^Se} z%{?T_$Jy2M`Tu8Nrq5VU;B#fRS|+)^i^T~mpTY{A7xRAdl)WifP{Q>42|+QfPTPv; z7N1l8o9|lo=l!SJ%JEIDCX2s3Hyc)4V7nQcy7#;*y%Vy~)a*pS`>#@(o=J7hRSn#$ zOApkl-$utrpa0bHjkUE#&Tl97-qn`zohuInUg~t#znb;>WXSmYF#^0Bk$T{#_e8IJ zwu>z>(dCcb>vghzYBPPBOYe}frC#_4CmBNwE&uhS)Cy+hSWA9nHW1MQKsoE3$~x#j zdWy{-`Gy|6CSA9rs=Y-fYoRCk?y}MS9gViO53%#5bC$?dH4hnOZ-QfJbkEQEp6(L$5{JZHga%$s znyOISD)T(n1Iq5EX=+^3-fQ5o5>1i~ipK|)O!6Yp726!OtJ5xaJq4R}6=UkM$JEal z?sb$WX2m!fCMB<6>jH6}c-mTX7-K_X+3sJl3EwNb8niNtH_K4_LZBhvtL65>Q589r z-z)~odeXs(+iVIi{XQTZGs)}5XI%sY0wZ@P{S-1~y=Bj=h8O;8KkVZgTDq4MAo+6P z*Q{%OD(0bwb>^=Cn9QK9&ndG2v%vNVy|E|Op4zJKHpuY2m;Ka3;a@uvdrWoxNrm-R zHC=|kB(DWB?=K}{mfEs>VB5dIq2^fGeNsq6=(HSj_dCHy&(l}9n=CXbd2q0ML{^Jbs~eA7G{VG=3w-nETtxM z*_~_=$ouxNzf6qBSmavQz2?#fG2*K-la^l}A>VNvym(}!#%{E;Mi!6zKquEs_T-(NIFOb>loqBuo_Q}lH zj$M~_>9-U8M`3O_q{EZEph#7>{A$5(zMv)dxEjvrvA+6{(0SVVYtT%Rl%m+=TREPmkF>Qyx^9FoG`*V)$#L(qKIoF2KMgGD)IL{! zYjZXom;;VU2R-Y`UD;PP9{Dqxe(M0Unf?BUL`eD#v3&Ql!AAR=cZd6Cd~A>c>yu4fY>06t-LvzoPSBKt>&I*8sA49&$8hzv!|Zef%Y2TU75kI z*BTRDW(H{u-rF1=eG@rZ}8yyp6u(Pl+sU%VwXmtp4n-;3@b-Cm4 zbCWmgv-w0xU^B|i=$Rn;Jqj7{2)EWL<{+`-GAb;i(Wlj{qNb>sgr{?Z4@StZ;P^8H=Ugx5tf0yWeQLQ~!wi(d`%n(YWXv-YTRX(n?wZql7M}3F?`d=>hX;YS0<$vQ`7kY$j z|5DMa5z2vViycC2Z2zncyOFfv3iDR3st>)L+O5gHxv#v;MY>8({>0RLKKL*n5GmWU z6(EXoeA^K2dFz)8-Q+?}l0(=+)3rv2gQW?Ut5}&8i3ga{c2 zS$dLX@Ycp|^VifYB@ZEIgoW9es?GWSP7>Ejor3{4Ad+g_iq{?RUCs_xMFHrJ+dXH> zZsC@EuKXd}R&ed||N0*3YnX|Y+w^3V(5H)nPyUJZwK=~_AXr2kB1DpVPL%xGGauGK zJdwKUwFcuHcq10Yw0j#~@!LYrU8;JPCnVIpsl2Ow>c%W~Ywpm=yxRZm!+f(Qr=o&Dbf;u>G?S?7y!a^=*M&-Bz&SkqW`)o*wX zs9Qa=wSNA7Al!xP`Ytiuu{Yq=DziLb)7OzO!i2KxJFTlOWm82}O%_&%b-s2fZQBv> zI*Dy}c*|p2U$gd(!CYfV_L2?rdV8;> zVG(n_me&_eWwR3^Ce$-dZAFLXbfh1PN;mhM^u0C7uU8yVBU-lVNG8^{RJ<^4C^Aoh z30~NUQnvcA_exUPp3y{Ru4wz?D2IH>KXZ+jrBKDe@ps${Jbvuo3FV0f3$~0f*tMv^ zyLaw5cs~Ejh2%HgJyH9-n!UEuV?IiHb8NAqrkJLK%&NHCGkK_AiuIa!zlTqz%bcAx zJtRCd^_V60MjHA>mUfmK$182Os#eyTKL148>P_g?up8lZ%G!qG|Jn_k>Q_M;oERA;+oW zDZUDSXKM*>S(T%!Obgvk%4U8NLhbq?9)~?s6Zbls8LM%3&mw9(XROA~qPsNbPtHDCyC0dK$G~Z{b z@EDKqK0L!Ty|7lz)AI6->%S-!XSLgBdyqZ9y5(@Nl$QhhA+j+w`;3o{4Z`J%2a|m| zD%leNkHK(L*-Hog--emje(&&!%6@wJLtJXNt60g0d2xIr|5Bzh!!~k^+E%R6(s)nB z0FyI+vPd?;US&x^k>BM=w)CTdRT<(pvcedhc~KW0UiFH5@TGE>WK2(ojEcG)@pdNP zzqp6gd#&?jH<(|=;04+nDh7O1Fsxf0htpM-i}b;!qL=nOw4VaF!1Bd*+!OtmuiBPg zT3Z9_r)4Hc+gDN^B%|Kx5@*rBjULoQ)>Ft!s@AnqW2`BR{ehkp;X*NMY^w#c8A(*O zJ?Xx?sI^7KzZ2#8MXMc2HMqH#6Sa}I@bw(S%AvIJ<3@H2>4W!8FM#Y3iCtSfu;w~d^ck@u2j z9mx7i3NHMWir|h^e;7N}Id>`}qF!AcsrGlsQ2f3B1ealZ zi>zVFV$jG+Lp_3i@c0*|qFmrFrqv^qmLYkx1QrnYU;cBlK7JdY->_(3rm(xU)%KO` z?K4itkcTZiN~2+io{KEHtQx!ZhIAD1){nS# z^LC&o{48$WE2h0FSyN#hy65=4%I)EVkuocvjh1f!(%#b^XNc?}5X|njf*8YcJs@aQ^lp zySs1uy_~z>Jl~YZZkxkj#f!no)OBSnYNapgKgKIGM@%P$!VD$R_p>KhT$VZb*CLx2 zg%y`oG34;($~l(nvOh%b>}YHXgw%2D2z1P905)4M9{rVU&R|r+=E)kjm^RDV8PPsI zK{9PkI1kgs7TisjfUR$fF|0Z$w}pFP&r9mFfO~2u~lr+uy`;o z(k!bHD67Ppla?Kg(;uStta|657I#S}qPJDyDrXRGF&VM4=R%Jb`jfIbwxk6;xLUJz z?!=?q~U(0vkBwOAF_&(b1-!l;l+Oy3H zAxsS1wv$hj(!xg!`)-9Jji*oiy%qY#^5kNL+{OGLDX%A5Ux9+^X*XeHl7pWHeFo07EErknC((22uSg*vLD)~0QXP;E( zBUtLCe0nme`_~7rv8}M)x`1go{#0N<4838sKkr>D`TBX4qMZNUuP;gb@Scecs({Cy zs0gG?p7S=DIn^ff{1-Rg=EBDhjPDiB6?beE&r?Mafgyn}j+F2~`p8MY*Ck`a3RbY- zR?i8h3bokHcUiV3+)TPhqF?Rse{QOz?loKpPna%$xdml8XKA?e>+!eVKiOjAzej}G z*RdZAwTMEGpZ}Fcv2RaXGHFe=0Fk*$Yp>bMY=$_sGWbZ5x&Au_xod6Xm)IFs;$j?H z$dO<0hGLvt;yRCsL%BpgvnaHxbl_0PXuzRHV`E0D${fI6nTw7Q8 zT(~Y!Hn)&)?aGOi8#c*5oW}F9FQ+H5verQbW)J%un2aCGdwv&qq?P9Vb-btWRDnC3 z^&#;nQ1gl3v*T<(?~j|mllMGblsnLt75ccAcy#+SpW+vupD{f6b1TWz(%{#11TL+^ z-u`*9oW~&ZPZtBf=p7iHv%Th50_Nr3-?u#F$4~xjuknb4Tj$L`$P3nbj(Ga5WrI`V z{`~y$Iy&syZ%*HO>0k2~EMg;X^dIGodIw5KtgQTcM@zt!Z$0;NICk4_U-G0O&PeMw z(M#}55{mVlW)j84?D5L@^NY4DFsX%!JTmj!i*GrPW8O2BEhq(;iF|Ji_;}YOhsgR^ z=>|&e`(e^th}%Q-org71`VNohoXFZw37*?*ZYn0F;XE&BL%Gf#v1Q*Hz8PP2<8Sum zt&t#Pf3kGn|M0~-*b6>h99S!|e(E1pGpin@^NmfQj?;@pcsX~7fR24vH}8C+xqq2C zqz*?=_|0g3C%T^Axc{FGO>q9(My-eBx&gWV|6%MaqvCj?FMqhZ4IUu44NlPD?izHE z;2PW+Tn0!21cC;K;K6-x2s*fHaCe8D|L&Llv}ez$FJ0Z|^?lX%R!vX8dJoxakC-*4 z^^=mZX7zE-QR&_zBlV4Z1PXMJzEU{wx3N&v#JCW%rg?mld{FtH(^B)IV}lu2NgoLc ze&NrtsA@WCc~UV45)`stx6Oi|z z`&A8oQRrd8;wsdR-`vj?-Dq@#CH_ZHoae_8a8PdE4u}_*Gfh7;=0~}0g4D>_CW0La zaF(F*k*h30--8dH?(1Pr0d|-;0;qp%wP7)8oBu0!^hq*n(!b-xqCVKDnR97|?=4F3 zgn33fQ=PW>mzrgKlwIA)rv3f=TLbcIkhft^h`pNmeJ=SNE<*8S0(#AvI=<$yIv1i% z2Fub9F-mZw>0FxBa$OlGtm;}>rT)mTonz^<7*+Vk${sZ2rC`5=j{&(a=+~tyG+^;A z8tDzDI~Q~@Ut6Z70B;qAr(Kn8ffSzvo?$Un*Adsp*&c z^JNZ;kv-EpKl6)ZNyxx9r80Z>4fj{QJv{^U5vd(B-=qg^9K~Voe>)WRn_ph#J)hGX zsj>r^Tk>>{S3UNxw^k{U(>}RGZUnH;{iBsOOv&8-~SJ7l^_g004{ zK88i9=;XkCENNU z`YSsj72j208&yKKZDyIv68Nr`DAGVc!s4|Z&wV0j8Z}8@ln>h)yh-nN; z#e)^BhS2*5Z?4Bkr1Deqw7RPGH8*7^rBk>sPqtlGJnd6Y3lVjch;_!TEz_JxJF%V_ z$2gB1=4(_d3&3oBNDTT&e)FKY7jRnQyWTEfUfgsj(60$e;)m=k5M95x?GZj6z-;#S zbdE$GsZTWVUrsMH%%qRxM8BRtAG5vxw8jA`M0{YTTl}qu^4_3hGwxsE?7_YUcZht* zSvmJt?JXtu!Wr6WeAZw}{=)mS8);?v!4Ad6bU$R)PwNBkb~3$ysJ`u-i3r)=3E9w^z4G|zeOtP?g{b1Mq!17rgF>u1>$&^M-y9aV$Y z1U1|sAh>6vcZ~sf?=l9$_F(Zq@148(kYwQ_gXW!O~;(-7Yn%hFcrm@~#j zDjkK@PKqifwng9WMlx9LlBqcC&AIH+FO1vU?d7g$i&+|Pe!TK^I*IvkFefBfSSf|u z?P(sT%sjn4^Nl!ZcZ~-Ik_{nXrALiXB;lDf zI;u)&ob$J{s%*d~$Xj|xU_WP+o{l*^5Cd?njC9Y7v%h8t1ZGU>1ilV;jpqKlT7Uigikc!_44)}-O8~iY+5k0Pcp*Lp>{ytIFmowm*2(kAe2;KLU#qea5qf_bFvv5Gd7+!s%3sH z;9PE3IU;CR!NMAck?srqX^>0()9|pk0y4@-YjnKC7(*^fEq$qQH?CtxGoyZs>{iC~-78%eas zJulrrE{NpZHd;*FoBgnl@G7io2!toW(+eASsp&Yl(@esb5SoUKYmX)T^QfbmrG==) zYNXYc>Aog%`rf&(8_USx@S*XcImfcjeCx8K5R;#qbx0RYUtZ+o(fe0Ir!Yc1LOm)j zpIEWCum7Cu#~Hz0mT9AI@Y-o&!ttl>4)AGWwY#EO5|6VFwyre_k4WO%E-!QyjOvzL zasa%~<$iFJ%X0zGYzVL|>d|B}p$t`bgq6yTL z*=ANYw{(E6Q}zYa8d|dLfNX3({K_YK%h1!KO4}3|&5Ex=;c!L#W)Ag>H+(IH&v^L|I;`+pC`bZ zLLauDA^*?@zWam()9u)eIHq4Tq7&%s;@S)-{kABct#PZtw=IhcZ^;Z_%)PSgo`^G< z=zh+XyVRWps?=>TZ*iC}3x5*0KN{UhZB20v)riUFc;Ta&mfR+{fG|HuCMdX!j*hEC zSYF<2#Rvv`gDand%o5Pvk~YzCAe+9FO_&pL{X1p#?7Y7$-8p5|mT>@Pwaq_ytXOSE zXGhN^X<2b0wRwL7Whl;gQ?o{8s7f04%r|8273_YcZ_QU{XJ>8Y3amK*eiV1T1%A!G z9iGp~YK#jo0$yvqc4xSp(mEBFJfdYD1-*oGUK74{|9JF$1BrTw$CgCWj8AKu4@@iP z_D&n!?f%rr?Vgse9^~saJ(xvUKOJ7SbDKJa5b?^93gIPSjq%Jtj7NdhugRDb* z;=4a}PSN$1n932Q?+;kOIY)Wg?kDy2p1StV4Mf3OC;KI1|du=J!<86 zT}O#^+^mWn9WII;9n^{iU8jm29U1!xPBQoj&dB&a9%lOrPWAc<&M918PcL6O<=^cs z>dyNLPM4fJRi*t~l$PwPD>@yjOO*(-brg@Xr3~WM2eq1Peg*~@-d0cU}xhRJ=QROd@vwFQF)^?QUcRRUvg$-*v z$DZZ%jXEF~>%AEhW4LY*W4QS#7I4_>cRQ7K37N9Jg3M)JL13ci$CcGv;XH%LTWnfo6QVn(8UdB6ob-AwH`rQ_N_^!ut!WSE6)%u zs~d{^fdfjpg!$;WM-@C`0jUXM0j+grhwp2~GuEs6GsGPQrDc!OTGQ9QTGKaW`8NAI za$_?k@fk&fu^E-sWC9B2?;WblOlHJZHD&^X(&42=Y_+g%yz@y9tmKN0c4Rr{D&;=! zqse_fY>?xGwZ$6!HXv(I)gWjvIb(2$>@=ED4*FB7=Wn4^?!~R;c>SN2#zHDs>x}?ALK{kBqrWXoS?{? z$eLRhHtefl3&@$<)K~Abt0trEu@x}E<^kgG9z_baW!FJQ0Wcx*RI+(a`5*C}WBZ?A zK7ijbog?oww#B1NV0YyINFGCB5BapbEBG%ln??JBs>$0AnOf$s7HmB^NekVoyA%RH zc(h{1&;32fE8$C+Mbds6#EJAJ&i?W-c3~B z;G^!fLR56VBu}gAwJoY&f3Ssh(|$GNmh2?~MwH*hcPVv^7Zsl$!pp00%`KlB^E$?_ zF+Tr3oEtT`4hGoFHRY3kAh8`+q+x~-1P9bu;|l>gORF^@1d`o=0%=P2;#kTufnH}i za)y>LUR3wo(FuM8I|TVY@u?qL?v4#s=^SEKzT6+JGRpB22oT(*AZ8@>JdfH71Mf7y*Z>$kt&IG-DW~JG)&a;BMF0Yy z=P5{xu`4+$o%*L@FQOqH`g+!h^N+y6A%{(>0>oe;c{0oc07=umG9-o>)dy9o1ufiH z`rNucVIxt?{o`+-n&!X$7(>HUsdJ+QsTGZKz8Fe39QjBr0dj&Qlm@_0#ucmU_|PP+ zyka2+%TO=!1pHebY?6DPn3hNEEuKPzUan2r-e81x)9n$V5Eo)(UUb@LKwo7iMlW^V zI|jrD8we^E8aYY0Yj+HOCu0FZm^7-pp)sE)DS#Ip;e}j@fQom_+;@oo;@3lKrdoS7qLId{thydWel|)-pi8Pe<1^ z3NuVuzR$yiRvsnU9THQL>Kip5rcxZcR}zf9Wx))V5|ez-OHaf49l%OAYK?z=XN#`@ zjQl3t&BTx!nF)y@!?u>Cij~6Nx}+H`z5fr#VxQsM8XptSiiQ5cTA204T6fJ|ftQVd zqJN)7iKRemN>jdAQI`DM?}X3S->p-=*-mN6S1Bp}ELKtax%-~=v#vC6EUcJN2i316 ztLNPrz7F|&k7+>R_%wOy%qWQBTOn_{iVit7gVyKkAG)dE{J!hSdn+1{|I2ofC?IS{ zffy+nk!Q0yfBxz-;3@xpC7yioz2E1I_iV{h{w)#Tz}kkzN=iR?6sObp6#evpo@sx1 zzi9A|DAs%aAVA?{xWsM!VV_a>L+eB54MfpH2sm`t@J%YCITofdWh}pQ$qDiNzQwEd zw=F?xji(M!sJRH~Q}iOwVr+x_-R=nAY>!C$Ca-N)+@bQNZ)uxih`#a$ zpEl@G9#b`%9h_YR)eY{qHqv4RX0U?ql)wic8PC;OYv$B3+CO5LsAHJOVnWEZK{H$zX#i*}%i@jKD;8aKk&snmJ7jh%Y0sK?{+{mJw)LfILT)3jG&P2h>A! zgj2!Do)P%L4*l5>1CkI0?Z*a(u!DJwFjN^*p@xOX#nm`qN&un({92S0Xnic*xfh(x z<;YAJ%Akxqf1*nkauV8jS4vq2A(!cZ-vbNfMet__E&kD+=LNPcq(ZH`2-9yh;dtP^m4xZIK;+;eC=IRhh*91c^85eToXy{mo%*34nrGTpoMHzJY5kqwXE+{@^ zL00f)CGr3xBhW7&nW+SRaT#HHq7X7%(v^Sc&P5o3-?71>aHv{{jtw~fqpuk~3{_^h z()naSw2Z(;cCeNfhUy$Ec-W4yMqdk~LQfBIyOYi>i_Q&=5qKkr?2?B(hY26%1T3+g z+%xE~H0Y2CnF%Wr>dTJu%F%^H3+MPHoSgZ{w<(Cpl-eL8Q%u!hMer~JE6_m+JS@*z zqpyzve`JAh{&cc~PYR*J>?i|-tiZ|&qkqA!a19+lD4iu(AIIrkXn5GM%3-3^h;UfN*Mks8I3BiCX zs)aZ`H>xYhsz0+89bQU+1Dps%Q7sJ`hV>Y&MN zuqlJC1(7>J=qtJy6+f}T$#4=E5(2c~oP`UJNEzg*hnNhf=?R?nWbj$InJ^s!Uk70L z&EE;rTUo$m(RAm|jKBx@X&h{@ObXPqjSzs93iXVnbMs&XwiF;oB@m_u3nHIZA{PhX zfaBpLTvrC!DTDqD;y0JTMWl(SqrwQp(LwAr!+>xqgCbbLN+IwLxCfZZAZ-;42%$2l z!T>Qj39bok3{_Efuu=tK`T(5X1~MBG%AjVr$l-cw;6omFMGsuSZ_X!7cM(7~t43x@ z#s(XcBd+TpCSx-K*I2*;cyOKPAs53XQV1agWMYFIDG-@izywvu1D0@k6(ASGMKxxE zp{fq=EJvREO^N6Vp8z_dpts7PEIwo|5PDWAvb>DU1_OM)DMFshU;}R!Av2xAkt$$R zpa2kU$q~u45vMbiLH?gGR2|{Y@G$~^I-!ff6-WbjUV;(GS%EyT9tABk*(f^<+0A&x z`=3D39!q}PLDv8NLzDP_1&Z?gf9&j)k_`jn>kC$w9XN}gmo>RSwIPejO;9HOs z;(oE@8`gqxQuAX_kY$ObSlLKFe(VqHFz8zoWugDI(6&$u8cgh9ciqjxy6en+3LX!* zCEpGdNwRW#Nv;^Rwkdx8^OdiQuTFqMjbT+#^@{_;JB#N@6-5z0Z>C~zR&(0nhNVu0 z%Lp&MuYvpL!KzQLY=0YoE!@|vvN;`mU{}=Tr|qdm}HwonMWb4vyM$E7o3&Z{8plMI!o;u z0V~V%Mw4jQdpllRObLTZelqjmcD$bIM1|%2Lhn&lI|}25h~j`)>gN4AcCe95by!G& zJ$l~bU?dRJ!$%Q$@imrKs-Lg@9z;%fp2$!IhOV*tKYiCri3{FmQ z!%_E8-OKM^hz*~NIs-)udf6t*WDf8VPTG`9Y19YY_;Q&%Dx}FhwKp0}TJ%34dwM?u zV#cY>Oyu^$TGA#NgFj-na!7n3GF4dU&vR5tMsT}Riw}KD@=$|$?4^3|`>_CVIuv|{ zLiaXoc+OR4Ov2_Tl%&p2^~Z374s#QvXp;`+Hjw7gUaG8Ai{dc=e5HFb5RY0w)WyqEhg?O=o<;WV zZ*>o~64ojEwS9h9uME5_d0PTPQo_#`j@|aEoIO1S`%W<-c8b=T?@GX*k%ThVvZ9)t zHjaAiWmSZPg#PGiGY75?F(0N>kL0oni7*;Iwti(Z`kpj1i!&4vY-BprnCD22uk5{G zWICrUX|X>w))6!>MdR`!@+IRB7oFBO+ywDnQ_K7?`VR?O2kpj&y6+#-Ic~9i?8Jm4 zMzKzo{d@)W(vn3=Wi&qy4dqD@6kSpGD(^L9Q+%^i?Ez1_IT)}tMde@zDMcANzyAU3!{?z zgHU*D;;%9qy`NH276=493 z>_W=48H`3=4Rz)c9`aqurFE_uNsa~eE|#BTPcQG~PdC$Qz zm1x#ReK7iF>FmEKw^UZJT6c}8J25&Ga~}F@Nb#kGh(3%ydtWwXX$j^ zO^4j?uiu1mF&HZ1zu^;1YbJ~lC<20>I0zGyR-z-Aay}h;$ZPQf;v|F@ykIZ%C-O%>1cx2U>M)$ z_S%i$SzE*NB1bOLXUw=B>AW;n(u@aGtGt~Dd&325B?MCM>`qcFD@k<2=1xmfj`m9S z9{M9h501-@4}f^wB4!Y*WEHEndF98p;mY7JLi{{8Pv4d)r%KIz^BFzI>rNNB3Pi%l zA~xKB<45yZec$)Kb(tFLAaQ}yv6$ZP)wGWm_8n$m!zH^#0S-0K;IJa4?OTh36a?xT z&%H8J!`5;=+#fV`+ylI4i57;W-yNbqALL3}EMi1k7gItEQ(j7nMDWW4qQeYfr0UL1K`YU1HreDwX7n#A3&64YAxaxywTD*c7iK z1KGGj+4vl(To41*@J56iznl`S735W7F#py&~MYD)_|>%OshCvecnscq1gAbS|xcA*&LHjP!5glYBF=wEu= z44J}qZ823^oWKsdcXtM6LLx}5gHgh8y17wwPMB)1#^!?6qe5xDP~DXKHB>;31X5ev z*Md5Ae~+oi_lNAO{>e|2DF=lp2F~^zzA3K7)ORNX8}W((Qv+D`=81!#%F}-B3eK)l z-Z}kG+u(*VF-c43L2snmTm4tAikG=Y@i{#wKEfl48}4W?8C<==R@3rmtJRT=PQ$y+ zJ(UXf7H!m{@`}f(8=ddC7B6&lC5E|tmZWo%9l|t}RF;1&!d)AX7JwY<6qNLVOqRW2 zYJ`G?%X5QKIx^~@-c*&J3+Hu%d``MOW|jpnXp~OJSs@sdB|jd14ahJ%jnbGy5|YeL zdj`@_qHBkD)aV2mpM1KDR~*O}JZ&G1od(*X7Q~u*4V>1*LVi=2|EYbjW56~3H+WXt zKOQ91SYJsV!|8D=2O4RQSX%h9^eG) z(GY}I?yXSQ+yqZVEiiq?8*Fr0RuB#Lj#@V?2*;nH7{TVOqfHUYiHGBwbcrv z#>ZFnPH{mmBu=PeNsTE^&aT3_;TaCLtQQKK!< z>bd>$81kk9WDq4G^=>JFwU|Pjh$c8yygC#+7k*+hf9_QeC%>2){cX-`bci|1{*(x&47RfSiQBZhiP=2>S&{ z^wUE8%eM~~bAHxLIm_{*i&D1V{LEKfcMHM~{pBKkzCKjAl38~yz7j+q)&slgp7_w* zO5Jm7h3g$2JgHizrg5TAe>}_n2wLE@emJRRP&I7~a(-uc>apyOk`lT#x#7u{s+ zwy@_efg7!h(ZAVpC%SoFY{dSRbI0MEsh>5H^^ZLk zaq-jW<96<~q0YNvu`d*8)w1IbNRt2bUAzG;7C&!?OxH)LTh0(mwqx!OQ4<0CYrkPo zVg-{4iGgqS#cl5Iubik7S5$t-6xdKxZrE8>^9Ubat|BWunc9O3UZZT?Jcq8_sHlS( z&=qW{MMK4wBL%+Ad#@V(L%B9eY^OU4p?3}RK@w2Mm0shGR{VFeDuL|R67BQuEK!ig zZ{h`w{%krNMOdHNf+De{MIXxZrljNUw9J7p*k5Ml-hOORNTVxlaF~}*WV6up!Y9k5vY~f4tuAx( zA3So-?Q*bhTDU0lo~Q)dhI_D#&QC(PK?}Aub2}g4ei;6ZR$bKB!L7BUm{T3ki8y*1 z<7s~TdVFHr{c(ZSHVY<;x{d96g=<@DM>L*MDH>hJDV^-zm{2Y`?rrEnWE*aCJ-BF^ z^tg4r<|yu7^_dK1&nR;Z+7hv=;LgPzNIY)(HcPW7K^;5z@W;JOc->{nBP+ML7k|&7 z!a4eiIf`@OVYv; zo{TK+vSd4dxcsu&u%(8ZYtHv)QhWo&?#33z*+aAM?H_8cUDvqYqQeP+X5G3$6%*xy zOt4BO2fdrUN~UeI=VkytmudM5AkD>pcWa7$ueI64w4;D)zUnx9q~q)c9`1lfx_Jrt z8qnNs?X6?NWhaF3AgzaUDS9+cC&}xKak&?@^X?6rDK#{4AsY2ukkCp0_Wi`wY3FJp>cL1o zZ+0CReH67jkuv7CqA~j z8CGX+x)L+0ZR@dZ>CO=Hk=JE~b|)c|WNXT;&fZ#Jh02k2YqyeS+U-isU&7_*jK)Bv z!w!dA`8*!ON^7n@ZBq`eM}OrV3MOWjyo9t=TfQsHz5zEGO1M>rCa{ME6XmJ8QLa0C z{P4K^oUEDiGsUL&>bKoy=R3!DE^YqY&=bG2kd0f6iL&NiZo6nvrukmCl9otj(>U8HH-px#__kU0f16b@LxL+fyYd?@$MY7=qRX=3 z0qs^yr$0wsA_Gzpe{8Qok9V8*N{qt;Mov!#I%Y_7-OuE~LZ{-FT(WsmVFH+`^}fU+ zNBNq7!ZL7=VYhk$2`WpLkrxniUMw)7r_JmWOW?hcw1qpf!U}Dj9o;E&&SCu1Q~1bs z@Y(}y^V^0J;50;?G8*kKtGQU|4?Y^a3^dVgsgV>}F*m%^2sCj=ip}o*dB=-)ujMgl zDx65?pdc3jjhLx!7#jBzcya<)-Np=Eq1f zzjYtjzKf(hFZ8|zh}je9;b}x28;3Jr1mtcFOSgUT{X>7kl2ceB*q=PD6Mpee+gwtN z^@6usC(lSnOh5?_I-MAweBqfMFCtJd^+`;PJ+60};ftPF5Kkpd+}|uJNWKw`2(ce6 zmz36h5m`RH|hgss4j*6mM~>o&gnLQsSWBfRHI`J7N& zam2>$#d8G|U%}23E3r)CHI#`t-JnEUGWNT^s||Cji$KrS8(#@_0gMTub{xSTM|Aa@u&@#MMsn{p0CbiNl3_ImBUd?~#u zE$Yra7X$HZo2=iCufp-b~Zln*C}Xl{Y7*bo{R6wEl%XE)&ubZ&@wC$U@`rGjeN~ zXHT>JS2$jrQ2mF{tzM$E0^#a5l(_2AhuAG!KMR&%GfxuNCafyowvaoYc5!=m8rSOL z(Y`j3)U1o~y6gxaj{$}4RRnBn8W zCE-lt0@gsgQoUe(+jb7D3U(Hi2$=DUo5<-Oy!ep+8%H7}w}a5UqU-ZUy!hRJ=F;Zt zJ!zv`j`v^W{|=@FL^ExVg!ikQ??k@63lv!MKsRSrJB+G^mzL|9&-Tzc7kIKl?p*Vo zLNdp~COU6`zt{xw9iK(G24#BnHT9n*ZY<~htG@TPUU3R+qpinYSLP_$Y@56PL*bWu z(eak18%T?f64;gIM!ViM>NAk^&wcFNY7CcLlHKb|_k{Hw{&PE>bN_^SE5ZFkz@YCl zp?>2acW;yAMS0jgO&67Z*Fd#*s?|lg2QB6E(iZT)F5Z{h&G}T`+xwelJBnaY(@$~h zK_~O@xaNNMd+{+CR+olPN7TB((sA#ZPppR)?_>a@^5y*vi`JV|0c>9p@C_JQ99VZT zsr#uOA;V#tOnTe33q7Mod3ch;XCmAt$q}6&g<;_1m1S%lMUqfh`P4B=^X{gCcVK0Ypdo@2m$G{Er)wt(D;_{Io+sDU;kvW;}7Q znOL|%HNyf_sDoh>z4*O@-IFX6s8LK$^}wv9S)8c&f7XCg>HwT5G72nUU`90;d*YY^ zd7S`~rj5t+e<{PxM%15ONL{3V3Ng|E2{S%*D?YqX%8M)ig$})J@B(foo^cDn3d`Mg zo|d)%=ii&?1=N1Sz`y065ekS(a(nl6qs4)(*RAOCN#a7i`@=8;pg*-6#^;v33l>Lx zSN6X~_a^d-OLtv)P91n%nseoj|NTwmX_8;O*RyAN;tUptcs+Xn=F5J8-B(3SEyONj zxFN~dM&0+#-S~hI;RXaIuP)a}CEDr{U@W_O=_Wa=^1`EY zZGFPL?BH9?Gi>1w-KvtnNCj>Rrj+V+YnpYeMqVcB$Y^z*wQB&&zn&A?R80%@avZ9n zr1$6e;?*@%u3I#U2QrO%JAa8>1oMi6yx&`qjGnIFM`7N~Rmw-+n$qS;SO3M)vbbkv z*Nve#4#lLbK9-MExI)yb)ru6>bxPZfja!SQ)pC#Uch<#reZwY6ZWS%q3N-c6HF>q6 zVsjba)pFmfx6^H}JK|)Mcyx|b-pP(C(1x6nvaPm=6Qp*IS0^g3U-6f&@E(b>X{go9 z>;!FRX+D@8Bl6<#h0*o=1w5okxMgVcq~i#+KI^4W{w{PC4rO~_q}ANnjMpi> z{JmqNE4O}7`nSA#OYdoQA>ubuK!?<G%pt#(@2rCt1nu6Plp$!<>?W>TNe;PK--x{C zQ|e__6Od*#nj+isUB;&mN&|*DQN6nG3={mbM`%8Z&)3YA?lm^x->jfz{>oX`!Z}27 z6^Zswisq0FI!z`xOncgiejJ~$(p-P~OFctNwMuY9%VD1M$ek$>S#)ed`6F(f*ziXZ zCGrSn(ClZ@0wR#TP!}_Y>1bN_pXG7;nrl-J%paLs>b-wT6-4uJ3FwO-?ON`tgqB}8ShJZQz}geKzKH>j^8TNRhp=G?W>k3i6yy(lAR581JRh%e3NWl9?m7~_;fYbPG5MPVk|D?G&)(Vgf#1K*F3b$ zp^s1)MO6f=WSC^BhgHCbKI=Bb4!NX4ePT0ZwUau_MQkyA*Li8M;Nf0p9u{~zf?+4o zG%d^D#kbFwA$e*Yv1^Vxm?yVK!a3RFD#ce1Ffqa5R5uHVBSoo7-E;yqP>ypt>_S_N z#~p+fNQ7inJnLjfx@lKoU+kSYjHYu+juo?w7 z7{=-ga77g8SzRI6?OY#V88rkM6IHGVn#;2LjDYP(+;|8px6Ei|$|F^n^JZZy)plNG z$7c1dYpDuHHp$PEtxt8*^)wrS_?2mB6nQtBN&&FPzRC-`Z6jy4B~^)FWM><04(ZHm zWqG?~N?r=*&bv|V?LmurlE=kg&Ta$T^$DCqGRyo=cy`8@JLpTZAFcr>CT7(i+ah*( z?3(;qNKd#(BqLO=^k_Gx)ES`tL7t4w$W`3nk$X(`4c^Lbyyl8WVFE5&Ecu?D%g`dX z;jT{zTzAWyQco8eKMH~ZClu@?O%K7hSVRqWxwVsk6ITw%$EUD~m&tBu5U&VJUI8p` zQ51vPge+zs$ij<2E$^u!7p>JHK55a|h9ok2&`CypT6G+n*kIlvGYF$&-ETHw?AnI? zL*4f+D!>y7J{&60>HTd5v-h4L->>gO|N4R*$A8eQ+&@Ln1xa%q|s`mYJTc^Vd3ha*E4Y$xu?(|VM|b-L|Z zFcPX@4EyZi7~)welq+K}7-R#7s% zALKAvy8%b&e0xLX#tqjpna(lTsJJS91LmZ4f`~Vc+WZ15(f-t-D+sEm+Klj`-sL6JMLXhqk1D9WA!@Pl;r_Ji z8oTpDi8G8gwgJ{PAcXVSWYnD(($vPfPwQk#^rGOyEB}^mDg+DJdN|vcWMx5nv1PW- zdt0ig-G6g4#ebBE*&1e9CtQwGzGDIQ$|E+su@__7GG60&t+@Yb&j0QZDz%3Hg zA9vLd@QG@p<*z4c8l(=VBg>8b?`nYiNq;)jPCGZ!@cTptpkh-mML47o1z>&LZKe6N z@f$E>pGJb(Lh%Jq-`7cpDn3es)%Ay(xu-gK@$S41%LGkwg4E^wigN{}t2>Fbm)ofi z<9@7JkT&>Ajrg9k`58S}ls9ZMZCL~^xsPsjp2&s&B;=q+tY`#=B?H39 zMh31CADOq!9IVykK>O#E=-6pQ_`)v78pvGZ3klHFqY^r|lf6px6^S}LL_AujXed#d zEb^Mu3^hFcloi1Yn>QfLpDa*D^LgG7yLODV`)haJF5u5)16I^=KpUw{70Hg}5Z+A# zM|!4JI0)%Z9=&Su6QadMj;H?3=1bVi{(&yS~Zn3um5dr=xLzzsoZo zHfLE*IDWi*9f7vcC6Bbxo`$^QyvGhcVSqEU^q-IfnW2sob#y;Z9@5_C^lpHSW-VFN zOCWLFrd0AMPhe&cm2}bV8NP!}8%iGOz{gUZW6y|3+_8^#`?Z!4@~YfY`_V_a_>T|n z*z%s8CB5iPtPMQ$)53TR5;T5EH4cqL_%;R|f<37JLOw2}<75&DJ~;9BOdX%n1#Tq| zpog?OW61wFxc`qq&6dLA-|?avkk>d9qV?lQjOVXT&{E>1@j6w3e9olBjBbF}VtlkC z@KB+o9H7TrLP`Id^DQza$Kj3MKZrxRFQVNlCjBj+i{54ZkG!nK&hMCeku?MY$$m43 z{on7V?#)Q)MQI2K7P)o8hk#xn29G}q^q0okaKb}A<1sL+a;zddmROqoiZJBdk6~O|J9pBKz*i33cGS(wDjD;7KON+ev5_;52ArQ zmwGP&FLv4=Ai-@i@i6m7N-GFI86a7=Sad+u`xcsRZ_Wp_xf$O9)OA_&515o6hVe`+ zT|*a8PtYu!?lwtyyf+_i0Byqo?<}!x>`&~)n*X{VSSdOm= zN2ib69^oflZ?;>@_9;z+j@eeg>of|zMnLmq0L4k zxSWYHE2-&reI&Dc@5c?dRNs&5Zv9ot;&6}aOHC8zi!FcWPVynaa`D%4$O8kHt-8*u z`Hw%6T-s!rpI)D|FKt6{IG?&KMPI;PNe|sC6e!@x7cG{-*+b8OKp`^nCPKRlL&l=#617Xt6K!%WL^u z=%=(r5^I}*$S~$Xm?Y4Yz^}pY18HW6dH;l@_a=VF<%7{BD_abLjDGjrcdwFB&2&E^$nm-pVEg;Xb~lXXWE`O zu9F5Ty`tZ&q*S7x)0~f1y@9FGf3qvSqRYKy*eu6l{$H%UcTiK&*EXs#Q3%pZLQ#|^ zkrJs=MG)x{Izm87kS4u1X$DlJcL*Knok#~k0!j}c(yKv=(h&sd-1B?id*Auyn>%;D zKkm$$B$Knt+Uq>edR8Xq>_acd5w8FbdwC;IHIiK@S>bw^>)oyd{NooKVG{BtL37+1 zUm9p>uX6-xG2dZeUS?%j-ekRbJHMo)a-m|uBS3Wd!AhEU+Qiyl{V1ip<%Y7owO*~F zf!?E>{fN(jV-wED$0lY$zt=Sb0xlXhH+6o=o;wB>NnQMQ-h22!S~7d>fu;t(p%Oop z(HLKd{=SiRS?)s5k^XZh_8``(;nKaE>Lz8^=RkZTZieqpJl+3#)*}wqki^c`z3h8rqxs7AM#TRO@7&z=o7fUl_BcziBUO~fGl(@cpRYC#mrDa)8!(>uI z_IGWa?edH10Nva6-3jUM171oiZnjL1`($|5+onE)YJT%n5ne2o;M$)%oUJ*_|=2o){|+; zj+27sF;0aQC6t*e+OmbP8VB_#wUpnZl*;pckqz47Y1Y=oVzrm;Z8!-@4nE_3N+?H1 zm7A3M*1=Hf`-=iya$>-&w22H%xwD+CKLNF+WT^=zm}7EU(G#Y$dPx0c-U|uQ&#HK4?1_)52zjc*M6`aU?6ZyarQ5&D3`)B?GDYLdyp|uCZ6S9kIsK#Qa*A)y0F@r?hKk(Y>{QbIv{f4Xuh51iY9? zILGTgrF9Uu?V=5a3Sn-cq0EZXiMJh z=C4y2RNek-ym{6h?E{qKF74z0yrA>d&wqSo{dIbUK~4EEyXUZIK(_slW?m4P({WF> z0m)n!^mr*d?)=)*bK5=5oYRrtte7L&h9W7`i#PqUA*ZxoPe)c*bB=&+E(x_$6&D)3 zXGc#rO9KnWOX><@ttOvnwf!wzA20beK5e|qsk`>}ewu31TMv`cXI7V~R}FrOuHDr{ z_Db2G9~bhS?^RTuU(DF~?)veb=|2)}X*Tg(UwL-M;w$ob8Y414nrlRUgu)xpfDElCGr>!lN7&H~~!^}^Gd+tlw zMQteY;_T7kS^u3I=hO1o)jL`C(7%2@#q^?A?OIL8;>5k-rBdN5(Koh>MMg>t(BF;J zn^TLoFm7-XSa~>7Y`A>$*XOr`hQA5?}+;mf_UZoAFe7_g9+{YggRz zx>jWa>*E8h&sk-k7X&8fFN!65)W1z#a_UbHJLYSYKJr|?So7)q5HD|9(0fQ5TBdq7 z^QXB?_RCmy$;G{q3&!XMOAFPMAldnQX%CMV9ZO8*T8uUwOTz-6tyaBvD5VU1wr>zB z^`%Utut4P5KI3TieT4nidc&wv8`rhkdNF4eec_4+vLVrc|(NP_zF$X`ui_G z9{$|<7yT{OXPi27MQ(L_CByH##>m-^s-OYChSiPW=?a#_IZye%WeECZ6Tj zR$hXYH><9;hJkLpUr9-V$>@VvE>Y^`$D;i`%cBqC_eN2C-Nm*jZ@m!(4V@9ata59~ zrq;A-mdZkoZ0(ws79(|$Da`?Bb+NT#Q+Qg^(o;MAWX57cMVTDyXTI@iD{j?kV@t2> z^iyD?{uRqEe*X94X1*_))u(|rCoi|Tm4yfQau%84jd0lru1m^N3@-C ztwntE(lp%gX#>me?CN75maL+-^=b+>@~ruqa?>iT+(l=4ZjU7M7jKG4Gg(55e(JLr+dyt>*L=#Tu%`8WpSHED zC+gRyHoC#Zs#nt>ZK_UtRGyZ#3m0u&(h_Z5PPRLUvoD)6FfA{P*(kJ@Wwtx+iV)?CISC9P|%RO2H_ZDNd0m@xz(R+Qvc3pkRc3r*evjKg!KbLRk zqvMt1U%6yrg;BxS*34i_IdeI^E_NS%il=6tun=x&1Ti$@U-ua zuLzHym9ox3@8$fBl$p4A{s}fN`FgJ9*DZ;OA#PWBQg^XBG`*ixd*cy0H2oj*E&D}O zdgC}%dXr34B{{sgmW!oh6Qw2JBwD!LgUq;9(SvFI5uZI z6;F~zZ-pORFA+yQ!f zH=#5)H~}mI0iHpOh?AZ#%BGdZx z<&>`B3Sy2$uU+h`-j9U2L8ou5!0D84!+G93F4}Q^?-4E$uT}KEHOv#5MZW>JMGk9R z_FZbw0`GqH(wA^kxR1bUQr9Q^k4)dLby=uWd7)STn5Wt9D*%|D zttywV+n1plbT<&Vi~%|5JPeKqYq3A%lV%QU53iSY)o#}T<>hi^UFEsqd&HFMV!7QO zu3~Eaj#pYzl07^*W7Ir6Ir5i_qMB*^6GU8#cchj=uo0f4lb#b8$1+M!;(NPx_+xyG zR;{IZK4|wTU4hHj{+Ehs?>uWe;=Ch;!XIl_h{$Bg;lOqX5<$1v_J~jb482k^E zUYDLC<70SoOU+lFju+vDxuW@Yycx7sy2IZe%4*a9hKZ=slZrE-TRKt*M~*t(h2OCI zh6_9lBk)zBW!*T-wIU9|$A~PM1s!;to46W%x|Te`_Ku?7u&SQ6V!yT$Vm@A~RAqDl z0!`CZMQmLu&>ODHP3C>V(5V;4tE-L}Ez01X{x_eC~Hy()XXC7`y@rtONj|LEL7(dfy*vsy;(X27+R_Z;8E z^Yfq+vCU<#r~T0j!6hx>Dns3riav6i&uaC`b;D~j*2;DgPej6#p9bhJsBsg+eO^+q zD%%Hj1FbK=!u=A)aVaASJBgGePfL(H(7&?8lzbJ9EqP6e!VBW+@=}TTLPj4>7-oGC z%)ls!dn@t^CoY0J;zwioQz=OTmLMuABtb8k619m1+4BkF3fPbYi5N&ni<7kH zC5&cJ`e#BTRd@;CLZGN6Eu5qp&?^?`RRoIoQB0g>;U!qALROI4xK4dNEPoobysiM0 zcNKwISAZlpYvT%7kOW!;#`p_({wZYTMltc{9bQ52RA_moIwW~q2=`nES0@cS6hbiF zfK5h2%T1Ia$xd3hCM7*=dnyz)UI4NXM&M-?A<3u3L?b`sjvz0=iw=R=%>}9T>S0%} zAuxjZASw-D?rSOgdw1x4jHB$R;Tx;W3xVq%Bde>-{=fu9h>nQ7zd+DeEo zI1rdLO^A~2e~t+T#X=+F^ss@V2t2DAWZbj>M75=db!CNNCVRjuvckBgC^U9c11aeJ zh7wgMh->D z05p%VAgVuT>;eKnN)DqBfW>(U%)ru!Ru}2Epd;zZ{uR^wZ!3>`Tah-o&;pS3_ z(tknD79jf~AsiQg`fqqjRJjF+3IJ#zB@Cb43r-$fhsgAU8Cp__xnZVQSzxME%E)ds z)=2<{L4BiY0VaMcgp&+H5}4Y-E9=6zP5=X1?4$g|BsYRh<{kp)ulsxXee z51h;^ggf#ECID{avoB?o$fPV6#e&==(b&6!xR2?Ss3d?obALewmZ0?vfSzJV!e|)4 zRtu2(6=2N_NWqD>l&G^8puK1`c2yFFc?xjnES2a}#Ml^ON=BfupBZ6H)cYWSpLNZ_QrexsMY*m_K`GBktK}qTcVpj)59f1`5MFcC|fnlhSf@WEiByoL6)`2ovS&w{Q z0b6l}p6Rn5nS+B+8$r1NU`4l>*bLy-KNmzLjlfLcp(KGkklIWM@$@k-!39To8Vx{H z8>bxwMU4W`wAI6Ia`F-gkx*1d5oizK@)LJn!r!-0RGJX(o-XcfxE}WW3Ig8-z|>9) z=X)DKbpo_}T^-VOiC6F z2qxNMVmuE5Q?3a~&L|=JBN3QlfZ}aBxIgL8NWiVncM$lXCy*6>AQ2q^QwdA>&>^=z+|3E``8g0H{`{ z5@#Kegh?R94_JdD0#b>BRv?Q?Q!)*ZoFBk2r2sS5g>Y}*0lEJk4Br4i#{y4$VTdGn z0Z`Kbpa>-Yav*Ih3FH3g3+%8X2`|eTeV75zPEbj!2iXsKulm%P@kc8TI zl&H?%kk3P40O+_TAvE@*5Db$s1b%lP#$*AoVuFek*j=vTy$=fdPSp}d894|*Tn$O6 zzXoGU1^_Jq!wnB{X#%cF!7w|PATx_vWCzDKs`y z62`QO#+n2m1!(|nb7&>91GE4-eM+K?Ohsc`zEPcqQ=-PrLG}P~PqkW!A%J!QymLVk z2$_^9^b1fP1E7uNjE9UcOiL$_odD+70F=KCj3|Qp2wVz7vI6bV12pG_;oC^ymDyC{ zv>rg`%P^(`G}aa1rYNv_V@ zZTEp!iis~3APiSZh)>uMOlBp-pU-&-50aoHGhhS=noJGwf)RFj15l605QYhWq9p(u z#1NQc4af?O7OqaSm}tz8U;=dE6aeW708$u$S#|`*B@eWC6Mgmmfg5)Kofr~-gz zRC?IgP*Mdz8bmSi1`H!12kG+R6%;NZN^v50wEs(TM)A-{UO>|TR%fU}lHY0Jjy(0S z9{?YM05I1VfYgv^GMtwn2Be#Y51>3eAlNTJK_5Vz5m3~F51>T~1ZEV_MMFKTISPSs z06YZ&nFb((UJR7R5D|?X1pe5Ihmu%7fT%`_iQi>-1=9cr^Zski?csov1)#kK zJkh>{7%z#y{{t$KFhI~lp(JN>P|c4goLSK8BD{o`@{n({TCqjPk3TuH+aQV z1Q2LE@$^4zQxw>tZzYD}iPM0jt%6_}|F2+%Tf#U+p#1Z+0!6$9@C_vT3qUdaUw|SE z0n`)0;|xN$CIFS0RDd!A8NeQZ?P4mhs}hnR5l2~W-w$5dT8G>LgdHf{Iup=Xk_Ct} ziIP-vvHk1~1(Lu96nX%PeE_kI{7$ve15OSHR_22w0MCCzZ2)-&!0+@efJ=aAn*oBz zGC|b>)T_!sqG1LY4u@eJy1)zufQ)_u#LQU0jn@NK;wb~p@L-U?Jv{0O{zAxLe#gxKN1D|n!T^OfZl`~~Fi833SwE}RM? zcjS2q`h}nfSwLvtp~<&^BCrEIuK-zjT1@m81yBT>L!j{hP_KFO3TDeglw=T0&q|27 z5CjuYi!}n=an-|mSb(Yk{Fb1}!g|=-Cp4&IK-R?3WG+BY*b(>(G-PES_$Cw}`^EZ{ zX^V2@ki_c~>Fl9BX|sJQFrbm|0b5?MNL5HVrR5W>Xu+;EG zj=$}hcC84zeG8dlZny09z9}O?t?T4$>O6eHw=MghI|OtR0zXuza9Cz1oKk{{O6ep_ zgNa_W;DZlz5_8lzD@w3N3L8NO`-m1-@CZ!P_LeAi6|^o$!Qv%P9tAp3(n*ZICc4pp zx@G0DCA7G+KxhjCC^VC9Qe2LVf#O>&wW0*mqz@P6}DwA0%+#;GH0}cxH=H8K}Kt-?T(#&k#`24X8gWq+T12NwdOT(ceDYi#7jXce^wuR~ zQb52aTee~l{SU;2KGAkUMk@{=^@dwABZ2>Av7_%M*2*1#WBc%O{?DF&s|7F~4-NM;RbLb?C+kw@afa)$D5!qg4$tg4;z(5f`BW z$CT-kzlDN|Lb+X<(YP<4;1~uitfV^bOahXet&N?EhnULYMj}xz2xxf)H(|67w4Fz6 z4h4n&(8hjB0TosKCkWV*r?@Y2P}FlCmkc@FG8J^=M*(q{0&)P%X@|x|Y{4=5x>(;N z&fl{6crC)D3@sd2%=HPO)&jHwB>|o zFmk&bUW3%%<0jnxK>UM(&;Vcfvr$QBfcgoj9T_MJ0UXICioF4y@IW1AYKZ&XF27Z9 zi-%<(&9fk?IciWt`we>pc}10G+dlL(-|ZAyd3ZMa=LDI5^&1nH}| zO$l)FJvJAKYd8yc3YG?K@+0`6IYkD;6D%tY&hs+3-kompoenvL%>_?|8&RY{-C`pg zye10Y06*T%3nf;wg8J{#NeEq;xke{39!%Udpm3mlLdIMM^}nJ( z1+WnUz_^HJItkCW#03TlR0z9EDG29z7fd6<=3+#NTRx$a@V|~55u!j@un|5};H<>K z<6U%Mc z(*k~8bGytc;J#p>8&|kp(y}0T8?>?SxC*$tSLAF*H7cL~CkePk?>; z4B--$L!dSd+`b_+gGL7%@EUYt2i+**aVZ7dzX2_`;351Q0I?Pl=VL*kv^<2d4@5;P zXoi>;8J~jr35-}k{G0@0T&^YpKu#$j%A|oJw6N(O)~MuQEmNQdlWz~FNgGVThWOw+>NLgPk^p{QSg z1Np@HV357jhc8#58Kv6TvZuH+8fZpk9$Q)EnYCH#j+vuJQME+!+|0-1ZpDcLn!FiGtEAy3kR)&bm#vJ=$b5Tz(VGcPC{OxRt>w=tSe$UZP|y$l^D6U6$K=t>3F z=w>HmK3@(mTnSgnM(sX2gn3aHuN!e<_RwQE%D$6n14-<>>>`4 zp~Wq$QLy|1gp3KqXu?hq4J9^HgNjt?Bx-|+=R9DVZF%y8YoLBjo*h$)jb%2MHC0@{ zJb4EK9uJ|LlzL3&h94?X7$-i#ZffFm#i6Kc+yw6&;sOd%uL_qS6%k#TA>)_f7$Ykj zqZWBI6SU3?Eq}=4GMff*(!`yiAjt;YE)q((#R@p)9nc^I6siM7tydHKd0ZUiaIJih z=sX@mWj^tb7}WT|An1oGt|Ae{2;^pJ66hY3Mbi@3uSLdaVI384j$oiLhEMA2V9PXd zo&a+Uv9|zqV}_z00Z!!-SG}Ma$AGpx!F{2EPj+i#eWO7$_u&#rMZ^*g$iW@Bgl9g{ zl@b!&_JJsdqMA(wF+RZs&_QVWxd{fj#LvLIh-%_39+zV)hDHb^x)tC^KCwC+6ew?(moUyH&LgR2qe0y_pbnxuE=+ic zsXET;AtYG`%JNE!+?WcQv4Br%=wcm#Bg(i6PRPMIeA2WZ^e>kX$BIgZ}^6W=-sW-DYj`nWpotXLQ*ETb~=e#5@wLZAT{I z+(8-Y_Ts9a9-lXcCBT#47;$_Ey~^X2k+doHF>k-Vhvijq?o)p-4NDJ%-IeVI7_8mN zEOVLlHO%bw6_EA(=eqj}ymZC)IF`lRQvdmh>~(EV{kS+7;Jk!?-7xx`cAB*`iZ$qb z@{-zRQIQqOmXb^TK3U36!S5Ruv}0{rqJpuntn=u4x!EjL?%LGsD?K9d#iGg?7!AZG zTAuequfx~O?d{xJ4PS-^M)+5+50v!YHzp=VP}#5ZclA2)A0-`|4$!^`YN9_0n7BuQ zq%4GM6_aN=y`4}M=9VEegr;gfK{jJX|J%M7D}DoHjaF@wKQogqk`#TLPu*#onl=rB z4@@zWw)$H+>*B9W%GN@u9*$XS(b|6!@B0M&M7*m%v9_IOKga)r@0V9!l$}$>95etW zIe)#hsbXbLslbG%q2spfJsmOkz&s=8!wQznwY6%O^TO$*G zNl^WDlzqg2V>Z8h%`mh-YRB65S7nU%A&2!P^5iVD&rLW+v5HpsH|^g;i=1J(SbGm% zbKURJ&>7`>^6A7!KGI(if2{>8a|R^M+H);TWHbUPeQkeb$Q?%a_@gT&ljXb?=zeSB zev#wR9?<(-I-#RO%RkjJd9QSIU-)`%$YZy1Di(0g z^b)oIHufxKiX`QCNv*Ws(TVw*OXm@&()?TTR7)an;r9Z`NK!ZbbH3@cij?xbe<{%#BUZJr|4IDSPXl<=#*5}kb2xUmwOeTLef^JAC^9@|b) z+m}YG7az~QeEg7J~YqV3a& z{H?t6P9(Q%O0C`td`BmWdlRXAPx&re3}uX)&st`Mg=6~=g}fP+jA^+m zkaqg>g!m%2d8*{R@%}wVsir2F2JBh4b~JBF1nc60?c~T?H&t}#d zjt&yC#=mUUHd9OY;vV^vh~)p;Dl(MQ1!4uhbZHg(|CPi3Po60*Z|-R2;9zV1zoxOd zDR2L0ik}2_Y*rd{UbCe$=X!7|vfur{3H%MGm#^?xJ6uPe8XT_$QB-K=&f%a4f6I~k zfQMHRLQn7KjFF>5eDvOOw)O(C#QbvKYW)>+(zJcD>o;!XS5ap(WSY92(BgLy==SOT zXv`K-U3~5?UfQ>syprzBfKC-wbm_m}KvAfX$%_|rOv83XG6$!M*g&lZ(zx)C{OYlT z8Ir*>PM_3WPBt5;Rt7Wq@Z!!{*z?n);D=j{@-DwJy`fvp>-_D(5GpVgBR?EvRIB1L z^ynW2gMcXtQ*9YW{(Q0pL$!JnqcF`LCFJvyZAR%sa!9aMe==pVfEhpLU!ETJV-6G}@5>sOxg>{@*9eS}jT^H=RK2AAaWhO95Fu$@$76~$6?1~CjU!*k& zQBN166myhY}5p2KJ(eT3NXN-(lt8vk>7j?8W(6 zaE$CZW~cXFHigXDU)^?_>;UB9&jH^|vZ-ijFeGwoKhY}Hg{pb4FNP3Jt1UM0}jKJg7V39!yd9Ba>zH)D&2rzfQDW+j)z`waZ7OdpZqyOJ7QTl=8h&?b|sSid4I=hgmN@J&%Wib0tZhjz(d8Jxu? zpXzfoGNpneBd^O@TNkqN@u_K5nLd&`JKl#--+Vy#z+qDBTd_8$9B@J*zq0%)$t`<> zunb@^!BqT>uRm@d7&h*7P(cRL#Tkt~h82U8?>~p~e?EL6moDZAPBDE|Lay%ThZzI0 z2nNnC<#dDd5at=-&TT0VI**M>?byuB`;9-t`M{Y{o;N(UW(~g;s4=!D8JPA;%v&)x zdu{SI9bq}isIG522bO`v^`|P#5*&`pvp9OzSWQF`0py`@0o_G z9J98-;PbN+DmOPb@Rh6A>8`U#XbJl4VB5cakcTuiH3gf0c}MwhH_;M%P8~Vs{K98ZRg(==xKkomzaBt?^ISEiS{)Pm?)&pT<9X zQOz4y-nVnP%R7^KBK6NXrILV$-Egx%DE+Z_M zu7q*TD)~Qb(vQi7C8Y27-LRNzFUd3f3DSb*%_0&-Pn;4 zd^IGLakn(^&j;gSF`7gyY&&sS(j{jA0kFEPrd zxp&`&8ZEEv-Pf5;c9_AP4l#?9Dfxdw=~BSnBR!ei-aMv^vyZ`fHiCd`8@P zbSH4}c%O%xG*B`l5H$O~qoq0Uoe}LFA?|x-s+mC#*MG{q4Vd0*=VtNv{;TJ-p{7O| z;U;|H8aUpT$(q#|+^iUbz14PMcHQR9$$N;W<~iZ%V9%cONw$9|59jXQ@iH8KI8>TX z>iu-S%IDn|w|8@CS^VYf8%>8m4Y_DPz1?fHEPB#EDF0j&Jo-A4f}snlzX9!#41?qy z@6LR^oBDt<0UxOvoW4|;J}K0rjz=Zjt8t9&Z8UWHoZ1>P8_6SV1-(U)8vJ}I`T3+` z&wV_vZc%koYzZDYQur}D))vn{Qe+{OAe6cJmV|G=BX5l@BxUp}$y>ijCZ%;c$y=M( zld=Yq<*gU>oA&i*`z&YsXcSgR=C?T9UD9X0Zu!wSQ8)B&Hq@}k%?KH+3|bj*xC?2n z3|QE605^uO4A}&6?74={x?W3%H(l}W%k-|+jeF>tGV94WgJ`0nvTO$(psFu<_s@AR zIw2RG>IJJ^*iV=Y-z!$Xq)%ryeB-y2%?%VB@-IrxEc+%S{eTd zGykg|i#yq}Xyg26UV<{|3sg@28Q63YDE7!r_D<}zJH#vKt}7e3rS@x66ulunDtBH{ z&Yrrk6-K2j_fN6+x|PQw_$HCP(DKA2zA3)mr_v}|S<*YzJ6*hnb>Sun z6J)AyodVLfKM*3A~K!eOeT5M58E^!-UG-EJw(?xU0Ce?wE4SreKSUzF9Mi|*3hAX~2M*Sl6D zW-MpK4&17#XRJ|rsU%!u{ zsqfp(yp~{t1y7c+_PQ=Sw!`Bx*9basf5ImgeH_(y6kC1_6O_T4+w zlQ~NaDD@8?TB;eEEbp^9G?uww$rfSGuJKM1_>8^6XGVU_B0=QWry=LCNcZUL)BIFB z+Ew%Kwe;^D)Tg=q!jCW11w+GX4ZQzJ^4~}J86QEFmwM>Mn%%%={S#(2Gf7o{qWt%$ zpPL?C{n6L(f7s(x4Q=dLtLT#U^*VSvRVeX-|2A&U^KrpMN#moiIC$=sk?cY&bm=pK(6A z)xCV^%3>4TR@Q0k67fj#%_GStx`SCP9a${#cszyb)2G3NhoOKaq6}|zFx>v%ZHuMj z|FQVAG^lw5&HuTT7}g-)1V{mvuU}zAC$=8@_pb-VL$CiamAPh5c83{uhher265D@1 z{FkYxJ-`vXLmxO!!#l3t`EUDPZYV-=%jdsMC4%8T+s04!3ZuH0QBbB)g?f-4MwC4YB*0fey#^$ib{@(_;5<;j6{XewpHy==R9NZDM?4hIZ z^Z(zhrzeh+{pje3&gv31~Z7TC0w1738AFs1Jod1ut>tkYw^?L_l&Qv{-EyrM5o|Q|9kThTU~^lRmyAPJXQ58R_-+&x{(t(W!6jk z{&a8l*kk*xauWOH?i#$7sRY~lGwHb^D1LIXg_Oyi-huS`T_1I#rkFGO*67LRye>B- z_PY2HjZQtio&$_x()wHFeYWSCuQ87(Z|uVvtQFBOm%i3)c5tYB`JoA$lz!-aot)U+r_Kt3psM zmtX84Rfx~YYZqdTJ8f4gkG6yR&-}+Z9y#Q@MLB6XA(Je}?Ix^Iaf{P*_1zWbOl4k?Z|VTXf<=aJVq~Yhx)# zmx3XG1$Y0Og=6TKH_IGU{R)zmwcOnbyeZG~g_%o&N1AqidLReMYY`%N?jbIw<4;WBC|YzG}&v5T%rl?YXn8Z^&knD88ZA#6u!=l)jN z5&6A|#F^Qv!Z^AR93zFcbQx2=3QILUj_XxmmENT^eQ)KuJCWkU%SiyyVir9pHP;mQYpXCEYhO(l|9oVmg z8yQ1iA%DS)g2R!;Im`*eXcunc7=H3Cek+FyR`H(J zNQk)tT+vHsB*I()VT9c^CMn!1eItf8ev;-wncx~m*5P=omf9GpvmlI|j_0ej5}t04ZwL-;!fWF?z@V{n*8Ep;aTH=6t{HH=@6 z#suFOKf3S~S()qI7~b3X^jp&I2R@iVf~@htSJ4M_6N1B0bh)<@hSk4i-pzdod-R** zmEdrKMD9Jm#>%H!Y`w*=a(?`d}ZqhmqT~4wPSBYw4<+osA1}`yiR|;ppmIhfqzPoANJ*? zz&jzKj7t_0Fkd|;Uvwl}CsX@Zl~<8*=q?pG87n23gg622oMCQkZmd>bY?$`w%{)Al zdbLnmn2^UU3w)$d@JBd{MQY^7VAoofMLd({H=(Ss^%AK{8{tYubj~)O_*H=;CJa6M zc-8d^Og!Fiwg;^vrOK|Vs9I_n&zqF56R)>=*E22Nt49`|FZ27Z+JLB}Lx>*w_&X~n=~0UbR<$=KZM@_}(7 zJiBEP^4b$Ov{QcHWSleh@E-o6sL43d+&HKxz}RZ?*LAqTa+JMKfZ5X{?)E+(v!~nh zOcReVH{vhD~oM`kf0HLi(vB{9E{+RP$cU}*LsjaiJYDXl@ zOMW;k_?lq)l>1I%5aqqrM9gW^nc8qz%DJZX!M_X39?A=urLRG(!sh`!!$FUhE-DPi zom|6coA_BB#Fy4yMkA$pRxg)maV1OFYw&K55z1NGK6vl(#2LAs_VX^_CY91+ln+%9)=fe&XYz%9lQ8Xo*iN7 zN1PTucfI=JhNX4;ZMI?Jz9!9sj>raU zD4hl$Zf0T^4#G?huXH#|{rQgB9gn}AP@gO<>lR1m5VAPols3ui+6hwq*=BcYkacmq zYj*R(@o9{h5+qe+h`92SA&BO?Nc^eNlUGWpDQ7M>zD{Q@E2K@=4G{~~-*KDg>8($) z4!2GFD)2v^uINj)bw1~^TJ4=BN6jfoNhBlU_kuh%oswzOxAyy-L;`<&*HpaSocd2( zS$yO5iQU}Li?`gOJR+hz5f|}?Z!9%c-DD$H5r>mei*zgSO#GV0#;OLN)T)X^*q8K# zb00l|mUwZkR_5TqdixLS>N%xE=C@IANN)&n_*8t-ZN4wGhdvL4Y}Fn-(ie5;)|sU- zD~_dbI+8DZ@}kk<1xa7UgE4vkUd%tnVO=rZTOo8LuYx%p492VQXNF7v z{i&c&d>ijnoA>0cnB2?+r5lT0{&%hT?ke3gdp?+HTJf@KH~HmN%|CtmQT&H#)SCFt*gTZ)w#f8%PSEwK`8I;u;7t`I8yxqObGk3se0UPAyRu+989w zLk;SnPM#t4v4m`}w)a|hbN z!n3Er|LDth^I@_=oqkDkre6rZvRat=^cF8x5>kAB_NIG%&(HM1cNiF+3aay^iHPr% zC?+u6Y05R^W8_!mO)Ij!XI=45c6&*gWRj&NZ5!6<{_ZDFghr;&KZ&EVns6JGeuGcn z3+7IDhW=C9gk*+!=?{lOsYcSarV%bStXam{pP48t9_UDZI^S0){l)ZbR(=2m8y>HBE z=xpbjG|pk%{sb=l)13`O>5u+Q{kfV+pFJOT@dNEVY_-*@*<9JhV>2#gC9rrAR;Ad~ z#_{!2eb>eU+P+}2Hi#XnuN_wP8ouf4I-kw z&v#4=_9Ja_`4~IXV`z={;!JrKSAX}Z4{xUDrBl+?dbg4-`AJ*J4zDb| zBe>GKQ&kIDMW!Nck_9vIT4)?hqaB!c;DOHdN4FslJZIS-KP=9bB$le z4^0-gJ?h$YgWE=sK}CurxcmK@TINpafs6r^#U0Bol7qG3NT@Ao4{hHk+@ESi(i2Jb zZC16&GPf4)PoF12t*_VQ`bHY|O81pJ6bhH&GfAb$F6og6FA7r?RtyU-*Q7~?8qOtJ zj|(~r+NZ7KZPHgs?r3}K`|h$e^-T$>PSvTNBr)rEQ+=cdjDj_2_L|D3RKuZ+&T{9< z7h-}Dsni3CB&8K$Ym1tUsjt$V(i12vG11M`U#aG#y#a<5Na6jORKxz3Zw{7X;(mC> z)G-o6;oX`7<^cz*L2SL)Cp=?1J4vjNYww0`x^GG9Pz$Mr}VL)NQPzQ#)9&l{PdF8U(MU zLP+h_DEIdzL>4sd73FAQQIn?LT34&;lAnD8 zE9wS?_|nSR7x5;kc3ECl{}*L%9Ti9L?GGjd3GNmwxI=JvNpNRyf(Lh(2^QSl2?QP7 zeQP~Mcd!4QM8*7X08ct zfF<$isGVyOb91T)Th%1TRGUjy>wL=U1V7*)^Tsd(DeYzg1#t1js?DW@cyHA303Se* z9$U3$FW*u(z1Lbd?B=>pKG%~nP~4qDd+;7`!2@V<$>XSE;gPFabIf(yf4{p4k>FZO z2~%VSq-La4vGA3&*7dHPkILU9GGk^P8t7Uewq1vhI9oK99gP+q*aOJ9lnivu+S=+C zD_kvd7$KuRbCW6Pma)unSqD{i+z%~vBiybQ^{q=Otg@}wA&iHkNe423Tu#jPx&=iy zi!AH2QIDHwW}$JiDq(w{w(Dr`i4-d(9)L%tdes?cih=j!nY%@^_0i}J-9U=Sfd|0o z%LjwMwutT51!ae$qNrlMX%+X+?E3pdZ;=CzRb4iPsD}O%<#qt$=1bgvzhYi?Z;G{m z?N6x#psFtWLNvf;txYWmqPK5#Ari${)#aE1q!X=KK0gW5wrG1w&KRqcSfR??EmxopbI9%m`jCBnA7CvaFdEDh|;TpWo7IcEbShQPxmUqYi;JV8s z=YCnJ{_~1y6lhcDF)zWf@_utv4fLz!DJS#|C02Lb<<1wh;dF;YVt95Er@el7qM~i@ zd1nh1&EpiSjbfo0`0w~%6Mx|6rO|)_C=Ch31lub-qA259Q$mr}O*MLDtpvd=MlL^f_ZQRg zK9Dz54->MZ5ta+|vD{H&+13Qcg7bEJ9dh;Mzs)9?ntcHEE3DoNl`hOb&`DaC zZ1l!mn{?0lMTVG~wU_EnY=^S6rUW-xNbB6~_Fg7y67)ZERl2lU=PF!3YG=MZY-g8}1dbTM4$E0kPAk?H@|vo*slJ(H3R^?qb+O^8chU&> zy|6Q0ua+n^C5xZqqb+c$r?HG6bF$;Ph=hb@!6JfAx4_I%+boYyE!J!|RhHRFo(QBM0=EOm3JrcY&2Tl!6H+=o&VA42V7vq2`t=JP2 zZ2^HW{gmzShEe}|YP&rmQtO3vWjWCLgTeO{jppec6QrWh(>+;z{?Z{G`N zmw?#j6Qdzmf-;>>3&b2I_<_W3ucdQ_>Fq{fq?|jhc)@6JgkVl2OZ(rQbEKA)FF$LC ztp=;G+#HLCk5DDs?p4ERH6a)4FCS6Xs)qnQcyU(IyPqqi6@>HUNFu+r*Z0vIM{zl) zPNb(wwR}4Y2^56?@XB8%>fN=J%$ue+&ohCQ*&0TZx`ub$r^-SBF0})#*L$z``DhVjO4Jv)cPi+dv zM5+l0y^Slcn?!83mu7}ogu%8IPtzo}SM^^PWxE)49Jkwp&j^e?VhA?kln8R0 zCkV)ASqXBN=qoa}8yiQf-&AxLdVOuT^;7J%_kEo!@5#?=__rn+ZSuY@$)^o2+tQW031YoVmBZv(d zy5n_8csTIt&;A&N6bx3gxdf!eJ+F#hKpvcd)sfFaJdaTe&OpAw*G}QbD9jxw8!B|? zq6JKd0My#ua@6E{1Wm?0>(f4h4iJFu>n&g~B2a4xmLPBeVeT<@S6SQ4+J%Y|zG%G$ zgWI&%Hluc-H}twr@S+t54_t`rF*fA5 zfTXs7MUEiLR6ysp8-VfF%Yth*m|^#2K_MILBY){x|3EnU42tswx+_4cp}o(bG#{WE zEJnx&c;^SH-q?9v!0iBkyMs~|e+;q-MOrxX071gQ>K ze+GSp2g1mFy?}RukZOnX*9GPvuqTX@)`qb;0#E@7hzg@chg2IuUKc#Qfp=;!nKREI z@B{S3ssr5C`2fJYf}Ui-i1=Vc$FB?Qu*@YJ#+_p@B2;JG6iCgFipabj^2m?$0;(pTD*w#*{Gj$JlI%D)b zdmCX9wX^$)ioJ&X3}I2sJMeDI==*CTp^n%-!s3HZ;7m7aw2jgCb*hh~H*lvGM&CvH zP%9v?%nu#iZD2wjz6ZF|4-#9a9o@~Ttcro8VwI$SObM~45p^p_-0|){1A1j971J&4J7lc6f)z39hk&hLwJ8%%#oYQL9 zJZrI!70>X2ckIrABuIgGn-bq&C9rfn(cwZ1{#~^T< z;UxezD=KQMS`_DHAq@d|x7%av&+-WJh24}{Th&nBM-V$2^yDTO{M5Kry+QJ_06+rX z?X-YXg2CZI;8OC3X8B7%T=erQ!y||f5qL+@WBeL$3BZK$XNO61xdez&yeweCI8Sa> z8~a$XX25=tsobjWg0+fzSZ2*jLb?k`CX5OO zZf+Nvi~k~XzEvIY?%qCb)N;LPSf5}qsYTfo_iR%Itxt>6Jr z;sY#HgjD;?KZ6FnfLc}%$NAysD1r^+m#tT=&JOSi6{K4E23o$_0k#1>0PbKx*$v~n z$OnMo(d&X%C-}$ttCshMu_7$t21e8NKWxhX7!nx2rY*=W z3{UX`VB!v1KGg|6ff<|=m^Oww!R3Jugi66+W#>*e3FUPjK}alnGNG z8HByf3&_zAD~m7iD&m2VtOH!${TyWnQ|sDul*7hmY0d*7%*dUnK-dGWpyh=yU0Pp0 zAj4{4_Bo1t!d%3cy~A_5ENg29hek05dsXgOgp*v9aZ z@BtCHz|~_sjtni2=rK0Hf6)>O0;|DpXa}N~fmxVsr+kc3fW?d?y$<}@s`g=g1i_ft zsI6_{^cbI^Ld%(YHcO2z`O0C2d?6ToveE)B3IcoaJ%SeDfwi9>LD~qw8Jb5>04CJb z<&w}5X6x~Lj2mGImM}cpFtZQyD!G`@a@c+9PV-1ogaqUeg2kXhWvyX&NM2%;VM3T; z-U`-c4RK$zU_mc2m_w7jUt_)hPVkR6te>I|en zhRO;)MlA(_%atwxdAKhN#689@#4lRsL14iPb{MMiE11WFc_$N?YaDttB!5}3f(JTF zT>{o&9ts9X3#O}77*FL(!rfr-GRez8&sOyc(Mt?l%yT=;)J($CKlB*$Fg=nq!i2#p zm!IH8=4Oli7YsrE7W)&dDKR`o^=`4t!UNqKx7aZdfE>J!QAW-{txJFi%s(5$s$isA7>y8Y9}GgKf;uixK;fGs{*nfV?SBoP{^B=Hk9x`bE@}6?*iEv-o3;8 z_CL)>6!_n4UHyN}M^v=7`r-Efnv|H1?3KK*Fa+6Kr|bLt7EL^i82z3{(ULA++(10} zvnkD&Z&Y94X_CypA^uX#&iD~jL3vSt=p5l&nW}BAg%u<(Vc%HU7`1RwX}E5qZ+mV7 zy3O_+gO850&x8EyI@CCP03U9+LPQ?cxF8)@p_qBXEFtN17bzF*RucrrGerO~=5ycI z49q_tNHz@EMBXN?@n=EjJy)~(+Z%ne?dt#_5)HE&H@I2y@%NyZfI z{JX-4@HC>NL@UwC!BvGWwJO@v{KqDN>+1~@nQ5~9d=X>hqK*Pn#*fYr#0ty0$hB#L zv2nQuT8%5k=O-EN0m`*`t)y>F6`+#tBOPQ>u{Or6m* zIXeI2d-KRO7sfyGBK%II$$2sb`%k1AqmdodnONNWE z7y8kq(r_j70H~Viq?GjXicfK8ukLap(&Lod_%jQH&5!tNFO*kk7v<;ZX*KNeCq}Ab zQ*%>)2quMVHT>}rEYN{-ueci_gYjB;knfdioA$upOt zaC`P{x0FtKsh>ELUjx^bTdgpnHIpBJdwV{{o~6#G$#a*X*->a;Eaf#83)y#cEwz(b z|8~rIv8=3>N!KFN%HSGB9Ierh*UYc=xNb_f%QA=~E7C`QyOJIYZ>!~U&K;o(jZRCRP3 z&kk*Cq%-38Bf9r8x4)B5&s{VaN7`~NP82oLj`aEo3z^q(tlytY92et5sBE+2M>N9K zWClp0wwN8x9ag9xDF}_nuawu@=44kR*hbtwVU??X^Mt3ZUejbt;SP;#8?(T9jMU?E zKu5B;NQ()e1sQJ#3>*RKpR_IjF#*=4d8<$4zrR!$vnwd+i5o{`a(~SuMG>?71zWz? zgo!$&EEcPnTQdE6D5MN6v%M*+H;n`iH?LAO6e6OzfPb#(GoCGF_=i zvSd*j3-q%4);mh?A4g&%XY+9%b%_Pc-S^^)5~NbaME8KqV*)QU98y*Jy$A91a`iY!9<~THZTH2gQH=>&zZz_y!>y^m9_9*#>Mh{@2pBHWEKQ9LY8{*EUtr z4hMCg#`!7@kN;XJv-~!^JM?sx^W<=ZvqH`(+FS`Dk1w|3_;*F<7!9mmRyUx4LTzOIu8h_Vve*7h98v|AD7K9_j1A>tdqT-;G;4o({6F$05qI52Hn@;-5D0PAXGh zjWTkO24Za%K#4L|Jc3mv^Y)E`CLTseL^%zV?u2#?%~J0%lgEDltf;Q22{Xk6*cweh zw9Xbhk3d;DHO>91R)L)sfiuX563!oZG^-aCD2bW?=lg69o23tF%*;~Uh-MXO^1tl- zUl2KyRmK113AB7dDSc~4N{ba}$#!=FIY?=9Oi$Iw4p8?C-`As<*4zDwNS&=tsB&et zvM+Mx7u?gPF7zQ_%sPO#^?tJFO9h-BTT3<;PlnyZ+a`DnyBCkE64`8B_U&Ep2j&Ca zk2K2P(vfE>0F78kFV_LJj12!i%;vYGkbi>yEat-lzEkcjQXi{qZpi2Q$n#Oj2JHsC zy}lEnBAB8#t*>mef6A&SkGg-W9!zlX%eX+tBWfAgNXLU3O&6EuG-u#>t6^&0FU3{G zPj%&g6AV(lw~?qOD2S8Q!oQe%?Ad2eeu%8Z>;1WZWHFR-W+~8V&#&h70Xj5L9GE@2 z^L|Lj=3ZWc5%1s^X>!aj9L?xopERXRqJMu7WqWD}-mz5tvf@-P@gcNanzeIGqx93< zlauN1QQRB1L;I(GVOLX$rfsf6`OrFSsXPM)5{X;J(7M)aJ%&@0_$1M>GKjs-D$Uq% zB>X%t^$4@({#on4Gb0;aTBHFsmzhc<4AsiXU%9 z#cdo`R0jTi4es_h=UG{ihxV5dWmG>8Bd1x82*&AVKHNfGS?w=F#t9-z6BpX1KQ5Go z*s~Yc1)6n>v@}b-c-X49WggqW@#N0>ttUvOb>(7e76=o&!4Q-2ubNRRV79rBL`Ip0 z(Xy)yfylC8HRGaU4&6MC3I{rK0Nm8CxzTgpJ-ya-#I#)fP62r^l48AO>P)%p0+Yx8 z{q^fd-s8TFsjb9mDo2ZAc3g58idNC_?)g2snvv4*+my3vmaRBPdy@Y$fZ1AhL|1o= zulR>{t_OyNeceTxp{cN8ZBp@yK+;+ANFUeW{+}s~zr<3ZIh^ok*_2+2vwnjIk%n}y z9x%m0tKvOYi8jnkB8dX?UpDBt zi?0bVIBa`1O)NIul%=}dj)0CK7|_-7T#OdoybhKf0TWdN??3QAn8aS*c~*vd4WdPY z;x2_eHKvbjqrHTKcQUC10^+a>%kFQbH=2fQ)*YmMF#XL}T!{VIYFv5rFoQ*9rIk5m zKB*he8vBPnky^1(d6RC3pE-w8M}EclsyS8aBz?oM9X?kWO06p5P;lUklap&;TJ@E- zO<15`jhwMV#cskiTxv2rWb#*d^v197AaN<_0Y?(5Pxn01+5C-x+P!nq=+)Rck31ZN z04zftS<+BqX}$m{Qgps6c)vh?MAz_c8dLHON}rloFDeJR12giOD9Ifi;cuj2N#O{O zWVKlISW#GX1ZLQ^@VgPa*wo71$~)422}gY?{Yg&oI+0()lbooXIeBqZ23Pwvz9e`t zb;+^x+3nyd(mq|`nhI#+erQQ2>UZtOlEr3LmClZw!YbJ&?3d4$sOUxQKYnC$Mm)d; z)kb=Knxx8&rNEhrN47FWaHi|}njMN7VP(ST%!|`sUmNd*QAIu3^TQPV;`8Ldr=8YE zBxiCXn%uCj5jWU0xp8Q<1mrsi4D@V2<8;Erun2cJcBpQ#`-ncX4Nip<7R0u|8`CfD z>Y9Ei#%1rd+)+1>H#neS8S*iO5AMf*B(24s3unH$H1lWzpEU&M0gYrjHmpcnB|#Cp2o*?S6$4;wT_u~RsF1raUCZ!`|F*)0fBBvjtF zf{$2Zynb0lgb%fLLv*R4ev$hq27NBHnYvZI_AG$H!2M6$bp}z$EKA!2si#-2sbm7< zB-5iV)Lng&Q?jW6ei;@e{T;-I^=G{$x(+?Yx(+ggWA=|6W9KcY7UC8gflIm<{c$=M zl5At^{8{_tFUk8xXQr)~fLcEkX5EV+k5m=raimN1R3zv3V^&VMV-A|NegxL3Q@>;O zDPKbOO*)3^kUZ=C$n|x)ep0ikS+gKr3XgrZ ztRwB`O{I5Y9!vUGCmf2v66QoTM(CWr|3yzH7Pg5W_lBuAq6o{BDc@L{lgL<_Gy9n9 z(RXk1FrBU-5}mF{Mi%3~JYA#iP2H~84=n5jLHi_+Klih|viJ4FYy3#oS=hHdQX%5t zn6%o|ef*A|Ys2iJYY~IqYk%R9>kl2h*HYQz*VMw}*JkrIFYti+7rcl1jz}^VvA$;( zv9FQ)gwr|!5%f9%p;0;kG2q&cUz_zEu_7#v-2>Nj<+>Y^tYeN_R^BA%EZ_l_)Xi&m}St=katT(*ig}J zzl@B$(H^#ovGKjbIDwC}@P%Jdm8K%YZm__aP7#(q8-DTs3iDeclGX}O~QS`g+8O6UU2`>&_qAhP6w>~yzl=f z4YB_(G$bvf@!u6w3HawpvgF>?jb@36MI(yFv&M+=fd0-i9EUNofMzICQzJr0Fg`o; zGqOg5br7w@S9zje>g&aFOKyOb!OBGK*pvRIqi^;VKF0@(69;F4F+0geQYLM5B zZ-4&q(~E_CecH%+zG#2wg7|vA>-e`m1(uW+x!oK@jDr*H`!&w%Rowqy$FfJt8yXHF z4q<_QGa5=QMexY?(eXW99Xk^jqFzqaoAF2E+zfak3sp`HVb}hH5F#2{Ir+q78paXA zEEN;Pua+27vID&GktUj!g~F>?tB9fSyzp#a9!+ls4x%QkR^K8vS=%f^_NLM3f*HBk zglWQ%M@%GL(&I_#SOQE$e`BZ0_oAR)Z^3 zH3BOhmS;q7xM^heRb{BbHp8)0F(de+_e^gVJ zH_Vt7Y?C3wIb-YxX|4k=eWCmG2ZV>Qhf`tSCSb3;5*(n6-3-*Lh$j0cJ`DclZc;pkXt@$Tz5>lP;AZ-z491ZL|GTOM&bR_1;~F^>>(qHoTERY-?@$MrbiGJ zR~fQa+6sm{g`>b(#%lTOq_))umxuFc{WQW~sZOaZrlR2d#PI5sEh@?E{3PH*sSFlp zA3Uz>W-^SLQ<+gvdt&id-fHVc4-~_Dqz;@y?O<`z*os3i!uHbI;t5JVKzl1>pc|`-hgef-$HIG6Kq%6wu zGT7u4XI>FqufLM->=tvt62J$W7?)x}V~L_Ei*i9$hMj`-s#V=Z65o+=tIx)= zZqoJm=`BQ`IN$+8L+EP!jYp!`K)w^tCn5>5b)~z%87=Y$(J}K`>3jdMPHqt*yT;Qe z|DO6MPLHBvUAd{I#iyznPhtJPryow!hIy+mA7Ua(DyLKQ9gmexIA2xnXd``7z1emR zez!1PRp@5;#tNiF6bsYu%fxW)?#j{~3}{YRe7ZDUI#S5CWHNL8(NsDbPPm)wvDu$e ziKNA~%6H`!?b=ypQ{#QvH4!Y#=mnS5 z*u)Wwes)p`;%_exK9%p8({CO~K+m2*F>bxPnnw)`dXb$$`Q&(s%lxAwyMm|q3CGRW zQ0wQhc_p#1E4O_(JmO(f&n#kq{Njp!d&YoyWxYKg+UQD?q5j$Gv;9=yao^R4j|&4z7SFwvC|9S*ve?LU%c%-$G@^ zDap2b{~pauyJ14qYqn58Y(j*O+P(qC{+_ba$6{USv)h7uT{9+s4l~0-N2k=_Q|ngx zr6b!!7o}XjhHciefcEV%yV4f38thSN2Hn?U41&ji*Nq>>oqQ{Ri^u~njtQ!z6T51j z>%P(j35L@!O%QA2ipp0hK-V+!%&)&ZOT1lqygR$$aoN*7BFC+Vx%^KAGBuA!>rvSL zVSB#>deB!rRFb>sc?l@meAO*wwTV<(}6FXU|lNwlcJWD*iR!ABGjkXd`d_rDHAHQ}i8L^Z8m!vDY zXr6kSF)ny-uC0rWxSGB82T~fDRa>#$6l0~-Y%NUU{CZWfzZh+0-)tj%+G4SLc0osE z?@3>{J4jR*p|(SrdTFtopvu{g8;d4{Ta4C@V?r#CLrIKB*e@j+!`T*@RH|M?h2Nar6VrkY*x8muvm{(Y5Fjy8m>W#3z2X)VR;xw z@d~kLsn1|bx%pZdPIS9wa&5o4s?A%-{HzdVqnqM4R&-o-1^mJigF#MwGnTk7nx&M3 z@(V*cMS{d2Eo!rvPbL*w#DgMC6FMb&ME;FowMHo%yrqWGF{7q->PSRc3-8RLxT07{QoMx|< z-E5jBU&sohBqKHx9rCiSoAVzw=Afg6a5jMgj39{YB|}geWlPkSx_1OZ3e)dI^c4C0 z#73ne^-`L~v@F#!`z(3ie05w+c}I;h0;WdEBBRpe5P4C}lOXvV)iM&MM)9If)iQFX zJ1JVVYFs|n2>rC)m~T>={pxc-BQlf+t-Ya8A-@2GH2Bsz;1Xo^Q;N6a6S&QdMG-vAMr2P2IZUMYEg91 z70>}CHtr1~3?K|$zj>`V^-nZr)ImJIdo5cU-s!vN*q7FjwF|0B(bv)3xyVcYQIjLA zbE9^_v^kPF60Nv5Tl&ey@L{QQSfEtt*=g~$o3hNGh!W%TemD_^3vJfzzWBSZM)s2QV>v1-Qs7!U*p{iENFrwCh6(-EA$%nXOj3TYy@sfH7-*9nlk*1mG9PH z%g7k&aFOJwBvDeih1*q)`4VqGOR`fv{H_bo6xg!4?)z-a63pO{_x=PS4C^~l4@Q1B zHjVIbY}PHlQUDd&y~>y8U-3YLVPO0SU-zqn)7$43&z@JIZrIl!Ztd-3i>LFyO~y59 zx}>+C@o_4c0Gv|w*TDK!R)kjw{Ogd!o5M5^?KW-aiM|`GV}n&d;C+9DdCYX;IFJbMA?W~%0e{AsVJV{AIv`C5B&0Ww( zx|fr6yO7Vk$DD9X9`88|Th|qOzr^}#G2&7(P1N@zn)pZ!LF8Bd5ZWi|xIr&8A5Ez^ z#@m4a?Eaiz;2+e`z$+N0M|q*{4a>SWc6T zX50Qr`y&)Sv3}_%Tw*Z=Bhsxk=j9sel!X0C7#C#deel%&gJeh;r6iX${{)qv2v!dv zHiiN&sVTZwSPTVLtZ*G-%=FerZhjQ>JuVhY@t|NT33!xfaoFO6-N=OqvXm0kG^K>d z-~YxK<_i5H=Z8Z$`TbLe>8?7BiLCGwqwN~v%x5@c+0POmXow^Txy4}*s-!{iVV`?U zxC6i2!o$r={lxzGC6fHI=MDSz9Zs>D1EJ#j%6zboubLc%&DmG^b$IMccH3aYWk>ku z9o|22oYAjH@y^m&7%q%iw=v>BJ;x4%UfiOFr-a9HlG%s|5jI#+wwgboRfr4V@rSad zhrr_>1yO_|rW6E1@pXdiQL2z1Xt=!ySH!KcnLbMjNT>h&h*K!ZekwZ6UVzNtgkyNg z_DvNTdGxacEe%63JPxeoIZCEm+BwV=YdpS3#75nVe0yAm;`6eQy;^Ell0>gI>vwU}sUQfXP^z)}NM|h$z z-@QxyA4fts|9Aa-3v-MA-qnxMwAUcf!V6&Y{!42|Q#{Qpd44aWBq<5c)EG)2_l+k= zRq4IdyoVf{iNf;4nM3(i-ZF7XfYUGMK}moyf{luoZ=LEHHhZT8 zs);uZPE%_m+r%L9eLP=aQLxn-myJp+b$K?LEBz9}r^xK6S)tuGqZCZ3w~N@!9af#W znCdWpATUGCb1}YXTU;cRwHmd;yPuDhT$zUR{a%wxE>TWe$(kY#BqDUgAGS2dG5z;5bvZPt1R^+SF936B%u zU5}0NaqHM7@#kYZaybTn0^hP@Rce(>T&t^gq=89Q=9`On$~&=^`FsDTjEHt2ORFD! z5D0{V6jv!RMBv&E1&ha8se$Pf@t zm0SzkHY>8DLb$@WZ{OsJ65>ty2~}7+Tuh6J5MzI@HzJcq=SdHQlEzfCW-kP0Z!GUE zO58OGQF?Q$K5#4HD+jKf=8D=c;KqC27ULO+YyK9S6hPRORQ!njtKvIRCkh+YpDkfL z1gS^y9@=pxFF^R0Iut~XlJD>S8LbV7P>SO1P*b8%c7zpS(Op@8{zEnna{^|uWl?YdnOz#mke8^@D(AdtlUXHcoXV&W+aSkQ&{4ocYd|>NE zhQ?Fp;}k5)G)NZb>(e`@$$0$PxlA;X#JntoYxctk#$wW$Kx(KCw&@)pJZxKOPxxLz zPlc*8>xqO*#rYM1PJ!JCG~Yw01|%^qT489u5{OxOtP7qsI$ zMutN_RJE>s7sQD`@UPtp$j=|sU6(NC{6~@+H;>;}0RV_u&mb5lzwQWZ=1Uqo%kJfg z95Or!AF9kxeLjZBoB^e+`4nbyF&6KCQC}A(tWzLxYehZ@dNuGJ(X*@%6f4YpM_Msz z7SDX$5;9*y`}(VFk+-~8$9Zg{S=&0D{LiGOXS_>bed`#~T3-Vf(ki)!{Zm_K_kS59 zgKQISR@jnc-bnw`pd;`9+8F(R2W3;VS3OCru-_^HvsH_>Oa{y&bRGpEl6Z0vC-90+ zi9zQrn)YYuI?Gz5-L}@$j&&Pajm&&Z$u8EY_H(Ki{04B_rfmC0tBe=UTL_cemq?er zAB3;EH^tNcrr4S3H}KQnO!&FJP59Zq{o4fVf0&Lk9$lt2YmOG-NIj=a(~|*)uvUU+h&Cp6D?*rpEZo! z0v&>kD*e=_GVc~;nl@gyt!}M8;=SDP%4{>!fZX9x{==m+Tj%d3 zVnv+>Pv_rOHUC&N&9+bGI)ljKdZ;+A+)o&SL$^#BSnwg9$$O}6hAySiSk%h?88>hk zhBJqE6-BH2c9V6{bq?s7V~qlR_rI#~V)Ux5$1nW0?dfO` z2_>Cy-pk~Gb}og6ZUGx^QyTkkWi zpLp-j5D8={IGjW1!%hy4Q$^8;vJ_=lAuE{&5$fNEu8h~ko_H0&^>Aw?W7yN%U%=WO^WEm$OD8>GJ(+q~pWK(R%gy7?Z7mN2*WqXa3 z4HrX?)tRP481tLw=}Zom9db@29uCv}PJU#cqECi!P+U2GP+S>*lr?_ew3c~(X?UUG zfLbY&a)H#q2d}J1OisBSQT#Z{;vEyWaxeM|z!e*vz<7Wc z)n`R~NH;!j>!*R;n)Gpw+6;b0CdJ(E>J~dpL_H;V(VPNtnL)Kbh5PpA6h*7Iq#m<_ zP%Bz~(&O*_^$Hr0ql?@9lq8r`f{(Yw@ee*}iqqSu2k#(5cx+DqA?=cwjwS#;&u)l6 z*Yw)i2P}p0CiA-j*k(xjr}U6=t1o_L@cV3@hJADi5a$n6&gq$6DR8n=_~Rv}Qnwi9 zvrF<0)~z&9dG-TV#E1Jo+L!zDOmryBkBc})$^&g1@oAT{)&44h&h}m}_$E(CFSL!0 z$n5b7ziT4pT%PYyy1*eM8Dd+raQEf`aSE@LtPRn5(O+J#j;K}u&VguzvLgpOaLUEQ zM>{xO@jmG6EL+E#iU-+CafyEZ#C(kRnt@)6#>PE6I7Yhtu$53)zeoF*9MQ>)0#dJ} zu5D|?R!H5%o}t)eeiZ|I`pcb>36fSn5R5xcUDXaU4U0MEj;=)oi3w{pUbLjVF&r_I zdnw`agC`BMcj*MRIrNUus<#w8eK+EtrH&m~Y3|p0_|!k`|5FC)pjKLMH(Jlid@F>l z|M+YVkQC0SICw&cozPZ&nw{z#PPw^_B>hl zOk=maxS~W;ClVAOpQ2HotgeyiB_i+D_|I$NGhE7K#CJLgGaSBDD6Yak$&!vB#|?W) ztdoeak3Ty=3#J(~|0NSSf|gRfFJQkZFXrhg%o#_| zbkFE46IEqKTaO2Lfx}}HH>oIyiAG7A-c;_J!Q*JTL&B-i^Hr6T*J!xM_j|DXz!m8H zW9Jq1iGphWCPctrp2XHKl2_{w*BG*FX=2)(sn5B4$0s<{+c(-P_ZP+fKU0=L(ixx4 zNq{~ifgTC{fytVg+Jde~V*U%wYL7|lH6zpMf9VpaK2AnhwQ1Nk&!k)^7cI6)%@yJP zvsw*-l|vqB#=@-<7&@tX{4zIYLD0Wk_)n7IzS)nGv^|Gi+BCyYB68sdLEwJMkCGsQ zjD~6C-{#K1*7lCre>xd@Bk6o@FrRJ;`^!~T;R8J0yN|Gg#04w~bLIcfhYJ>Rbg^PL zb#!+y^ENYab+fZzH*@iJa&u(2aIms=uyAFUvHNObZ({e~dl@;J$DX)acyH*sbUDha z4b#2i`fvrs*4EPZKT$%};Zn3CO`}lf_7X4@IZZg<2cdp+Xo0Mhe?D}=Fn;`r%J@|n zLCiZA_!AiG1ED#Fiz&F-_Jp)UpcnTWS(|S!-YDIl3^2se^Vxnrz0;Pv3=!I46Q%AU zx!|9t?xBdKIN5gp>{m)p?r9%bi99zKE$0tRV#K}pOT$_#MNZe+< zC#~LFT-TRxpFK@h3&2Bk*H=OPy4)J?5EaiFdx)-2BlVRamAJ>DISd5+b@EHsmX zC#E0#MaGgqW5)yW{tkznpI`hG+s5vXr&t+JoBe5MNDAvWozlbH$-QVzSsGuI*yTx~ zJq{cG*ZEj3Ite=eVSd)(%$ix0s)Sc0MzpBo4FhtrHdDQvC6`Z#?wUQIaK#H1p7I@-hY=gCg=ssa%q z31qk)%~U4)YOf*WJa>vrpZJs#W+%=)nDPjSOCB^OlWmOx;^yL|ka)(Z`FA*u+WM;7i39@IV&{`_3oA%9SnUK%1 zqSc)ikIymNVZnaHeVYQZE$E-szq8`?Ljz6ZxHSq}URsa5WbfSMkckJmt_QVO-!QH& zBy_6^mq_LdlYO$jYfR9mQiOV5eM#NAqx!r_^c>3KE}M*u~eXNh-YgJvc{&EJ9EC5}TGD z-r_Xqj9gpZF0AT`%=XxxvDTLrZBX9;X(2-8TBV^6FMS&?LN6bT_3Yz-8|Nv03!fa3 zhZHa_wo@hytO+?l6Mt?m56}vPgk9b)NP+8O{nhuf3@YZifkTHJ0|H+?8)r1LU@vBd zyy3|Xm~xluMAG3)oN3Gq*TkD}A!@prs>;B2SkNP0A+p&9)FN=&zQ_NRYibXUv>;NS znXCyiq3zQqRjq|r0sR={Vv^(^o}4Pzi8c8p#YC_zfN$t!B*P~aZNg(zDnVgn&Oe^d z70pRQl!zwTgZqtnd9a4;R}eWK-dQ*HuR^pTB1Ob3$|0wqZSFn=Gc9Aa%}sQ?VLKPF;%y?;Kc#RkA-jQRL4<@JC%@iaC8XL7xj$*TyihD+>0mt*WDkG zwqU4#!h(!JNANn|r66c?qx&D|M}%97Qge-~7fxORPu&^fq;x>wJJtQ9_Nwsy#Py6cN(KRy5RRW znQ;sGe(AThwiZVEJVs8j4~p@ej<`1R9SE%46|#vaX%8ezP4+Evnf+PK3W1rU27I$x z!wFPf%Ukxg_eLh0hJ8vKa()56mS`Ntty9i>t9}RUf$3nHy-Do}$jpld-xV)NBaG*7 z;YdeEC|RG;gjj^9Szsbty-{Dn#dj6O8MsUcQa0-jt`g&pZE6>l=z>k;V|rtpX`|k` zl0n;sU|?p`WSN4_{9wj236S8h89V+SU6^g=a`pX%SAwPs2#XQ?;Z_ zrUMtWbfUvOoelm&5Ty5-Optw@0hq2@@NLX*|6ItI;WlIMP^%5e_`8G7X^W0;30hP& zO^onH$2Y29+$yuH$NFXHryEkn4^%L3Ooo`9h`ec6(hS|Q}^Si7i;KpXV?Io(b#OOc$ zn0o5BS#zl!qYoVH5@lJ5@h5D5sxjd+YFTdFFQ`Hw;W*~R^$GoQb)XeP_}sx9<8mKY ztdXI)o$mvApxds3243s}5TDs@nQT>TOD^sj27QrsM`yYC6LVS%6im3H=x-2M=&R|9 z=LByadX4P~?fLBEsBQ_ceWE^YRDifo*(SI@ujvO;2y%WQ+U&Agom>}A`}&`379GjD3%@PQk3 z1>;b?;wF7o$Ix%9GAq(7^|n1C@^Al+Nm>>Qb~O`jTPL5S{nUL~ow;UmmCXlNJF|3* zjgA#cl6E89tQ`EFd^k0Za)_0D=$q~tOL~HGjYGrq?}><7Q%M)rQq$59Q3XT}tBy5& zSTb%#a4r-H)sOEBBVJ%mmFa5amz_h0KMg1|hfHY?_1Ij9LboZWWHTo-Q{3+6ro#s( zR9bAnAVK@|rUR)M^@%k1+7Xxw_WpZ)Uc`02-&;K#rb4q>1;>coOTP-mgw%OVmchli zoa9ArkGLPWMCkheM4#H={aW?>e@J_W;9j6_S@^_GPHfw@PEL|vY}>YN+qP}nwr!u- zPG0VPll#8Gzi!o6wTFAKN4wYR)vJ4=p>xSZl#VHBBAV>pExV>0=wA`N6kXa##_vgL z&c;)edT@yf6G9JwPNSv^QH={;x01V8V|RqXgti8_C8yEEL~~}d(QI-nt%)V4#RR9u z^ahjR1egZh`dzq8{^yKrA0Mj7LGl;5VtIuGz6LAQnSJB!nUdm@(Tuvtp6XX5+-E=@ zA?^50XNkd}iZ{pj=CbQvMF)tF0%?Pr$di?u`x(@T{?$zT>vGNEX_wQ#o)b(=&!S8s zdr|GkQSdeFxG07x23m$H1}lb323&>?yxLIFLJcq3Tg= z!nF7u-&d?joBmFydkuyjxO=Bmo8Axj$?N_Pyh-)}CORL)WGFXo8p>3QyLSd3ykxOS zvLg+K9XJWB6th=}RG0pEKL<2p@h`|@+Eo7FSA|smfLCW#>rwnbQgR>2`>fi-Bbk2r z*q(WQ@U1n*kEYXUSa^wM7R|vN90mDva&wQVo41-hq{*O;AI1|iq|ePb zR&Eq+302RBd)gL7PC5lwJ;X~n6N9o_`(Ur<5K`1tGDr9*Vp`r`MKl)X>QQTgZFVwv zG@~ctPAcsv=ffMDmTsOUbw?6wkc~4&_ND^f>MAZWeAaE`_*)4GPR=sN0`imf8rE)V z%l|^L?^cBQ?$|sG&k{1K@AF#R)N&HmA|+y*EWansCp6Hg@Omyw#UA;a7a^=2erUln{?e~u0;rYsD6 zpbLW@54#H2htBgvG`0Z316{)}Au7CRNnudi_0@QJNSBw0x8k6P9(a=dR~mP<`e! z($52UPPuk89lU&HN~ihRH#Kc;*OqDfJxBE2SlBgrjA<|M#+8NZ95+|zf8%IhR=3_O zcNYE7o+-={Ch#T|JK-5Pf8QYVn^CN&W&t(8TM06F<4T`BJ+CR*%@%o=#!VzE*pc&;-v8CR`3RxDEF%diDSRF8c#6?dEKzX@h3Z{W*==iI)m9(lMyuQ?1 z1K|R)x1wuDd*@(~T3xW>?rKG_3h3|r6(|L{3fl`Hs|(_hIrz13~y?;qO;Qbf(*QY>WXJD0}<7uHFx>~#6CP;{O zJ}%igVm(ffAU-k&p#Pxop9miLFUNQskX;V2ofJ2(bi{z0@Pq?coN514oVgid=g=}u zf;r(-6;ZpeHZ5a16;bxdRM0$;U+mC@j6&pR&Zu(-k=eh@!ar6pc*a2I58I`yVdKZ* zjiCRqhsF_$;q8IBN-HmD$A0kTK5TIFMr zWxfM8o|+96mx?<5cfnVEpCZBEftrhGRsRzsB-`YXW(I-3c*5S zPB{1@E!Rx1MRID(*fZ7M)$easnn^Xq#)9zfb4sjRv>T8<{U~SIg1+C4rDhrF;EJQg z#TKP!>gHIlO7E0rhq4hQX;=EgOLJ~e4G*AFBsBnHTQFsn{cdGOTUN&NGyxC`mbevl zMV8&=H58UicF@w3^7`zGG80`kq|u6bRZ}vjh@VFQGK7Ugs8Fm%Bv{k;xS?8Mev&#@ zrEG}Lexbr$d9i`P6@whIk*>3{V&P?}p4R`|G-sJbV7>{>2?t<#`ErB59Q-*oAtO)S z5Ibi3bEqHy%_S+IqA(j5pQ}~?{|?Fm*Cw3$t9RP zP8G#-MbNR5I*H@pxuq=Z(^F~+*Jz1iX5=4e73E0f4*!S4_eYU7sfkxJCjgBF+B7*Q ze5gOW3|49qNYivslnin+0afS!q8-HMUQK(R=F$}WVlj3_nVxsvSMRrq9d`FO_wT$? zB8#q6lyg)e(6)ZKV=ajpxAs4--KH%WUKNFz-ZkMJ_?Ij25j@Rq(PRBE@GI{Oe?Txq zTC7R|;=I@kox96IM+jY4>P@H4Ys&S%Vb%Wm z#6wt7%>h^0#faCwWQVfz@T6LTVj%}d%^;S=F?7`HtX3?u$#?Mi&SLXGROzVcrWK=# zG;@UFT$;&_vEjzVQKOHkR=*Yi&N#5ELXb5_e|pi#WG@Qh0Cnf3lu+xAxT;&jyalGt zbHyirR3R8$5_}MdJCShn^QEGy^9n5}%^11^j|3ynNW{^JI|OD8Qb6I#iT`kmH}a9# zMgG!8zJzLL)2^N?KKGrOfaQ`p6! zkbYZ5gjeV1SCpBOu%kz!cSPf(SUA#>RK)=e!2qv;1EWTEuQ&CbGsOHB2-kwpCH`@! z6&6#CaQqdDdHbe5)Y|)^!;H1E*M4tXPxUd(|*N z@9!|WRA{Sq_(G>JC@tf^+ABZ_H!7!?HwMaT)3BHbvNNI7PjkH)EIPrtk8h?Wm8SPb zrs?p1PP7WleoHbRleu=u2#TkNJMR}22mH~Ff|s3REkDKodTWW+`Ch*L{?`)y9L~yh z@i+%B?pXU`G>Xsde|s0A#|jpe`SaS6Tmdz>aV#cRuSP+Em1I!3ogzPIP8GRnNNpgp zniw|xV1`FSbAkn|?S1u?kL8~TGhc0)9Jq&DEHg`M;9X+|cPoh2$q>C<8dLpd#D*+R zD^`Dah1paO;dP4i9w*TKqvinr=5c@LQj=e}1bHi>*uoo%EXP_XEWDk3=`2PjuW+c!mjE_R0VI}u#r_)a5lKg=nzG*EbB-Ic%}+mov1 zou-eVT6M#I8VQ5g6JgMMp|=;GmC{mUnHi-@BnJZKK8gb7+^*chjf0G_r9v_L-LyiU zHA3cCHsBBUmP{$$JaQ!5e`?C7x{pFS4tjh~s^|0a<0CqNhjw?&Tw2OAWAO121jfMq zonWM&n;Sv_EB(&G+=n6EH_U(07zHTdqK3bJ{W2r{Pc+8=CVfl9UeC;$k%{AfvKUFq zI||q!_Vo>TNau zDy8c9*jxq%wxKc{n7BSy_*mD!v5s{m)+o@;_K5`X8e%l(BpBnX5A7vLe=Z;OE{b^U##%;xcmuq zQBi;;w#>-6`3Y+)W``?JW48t2e)XwD+v>f6T_owGvh(I{>(<~)!)0vvsuoR)N(@Y1 zhmF+_{(dPNXZRJ2tgH?m_Sfm3kg^}$1N`5{f!G$$E^T&6Ng<&YE3XF2rCUVvAzS(t zs$?yvmE{sUXZU{6IY**(i$>TX7h|oB*%dnuHWMuCu08wT=PwE>#x^)sGA`>Y+!e!Z z702Oo{fP=>c2rE;WSpm5%9Y4U$mC-*?8+)|+z0B)!)gtdIQGZM+lw%)Ta_r{P3dxT z7AcqF23rhUW6Eo#9ZE1KT%VG&l@%SsagdJ;`o^!xa>Hpdc=D}Fn>b76PdK@}SESdf(4vR~LD_`^#Pb4QOwI5kb_OdVdb0Mfc z*ha$Y`?T^Ari^Qu4_POPDrFnWYqpt0U2LW3o*A%(1nZuNRgtkDY*oFDA{c09EqWkW2LwN2wm50_vJYUWPWO zX46ZHuE@BO>RRq~ZoI$aZ0$4C1cR^<0G00h^-%E5jiL-mb{nI1{{dx8&kzyzaN%am zc#!Rtq$bI?Zk-8}5dNZJNg8)D`(*gMXRW**YYug5MxM0sv7HEEqs{Gsm{K>w5KXk{bw424xGf+G zw^5332hcFL9fDv=y0|jfor4=cg&Y08kPuKgJ7y7Dc*!69j>1p(Hv1Jvc65Kxjd&f0 zdS~9=^cgHurUg{e)J)Gvhi2PVb;;-#ck6p0z%)53^v9W)lIc$IPq?Ufq$HC(K-&1T zekADLoIf5BP!3c^glS~x^Jo5s4nT$}mWgx`Y4>oNdJT<7dc3qS>eO)MJ0KbP_>zfY zOL?gH)Y~TDN%RIHyJ`0V6 zFqGwb7#TDy&$6}vuCA>L%S!5;pPLP7jR#%F?eX8sEvIj4PRmv#-F<@xTSB(ABct#$ zV!JR=*4?V}y?}c_nSMw5ONUhWX-Ggw0s$-!%@TNM27s3Qn@Gbcs?47t%lz9ZA*?+j z&I_oF0WJ<7?#|smEOZown3Rm@-!;@7mI)OR)0AjjSt%w>{TV$|_FqI(ElC8%L2D!l z@d(Q}B9^8s9(8p2q|Gw;ZAnRTlUv)o8viex9OOG@PC|45?1_*NBWr?3FJL!l81MlX zlg+Tsk5D0QYONZD=!pCfcwEoP^&Ncs=aBx^!2ek3Y?p7A(Q(9rb$)-I!g$eP;IzC- z$kbxP0(v!311g$Trj75ob&!i4@`JxB zhK&y_J%3=uJwhH!55l$a^KOdAO#*04EyVMa-n|`FS0eXIptYaHJ(L^%wnt^qf`n_b z$L69ZQ9Z&&%qycD^1?GAFTw14d!htkT&IrPz#Y@j3=i-bm=_wlb zo{rN@7yRFcqP~6hS|k)3NBHlV-aHATg91)_N)zmI&lQ`XuHtWn*i{S9 z04+K>(NI!CQgzHVYC>DkWDpX@0j6H@iD`2>49`A8K{{#6l8@v&iE_p2aS6OcDv)Z? zpoOXZifU`p4p{6H8Vz+D^bD_YM_#Gf;^Yd-(|s4(ypx zVd;;#49QZ_Sfn94jOGo0tnoTb)>+EcWapsF1baV3Elk!5H13kKJcNya0;CdCu? zJBsoLFWtAw{QM&?-JSqzRm3S5^~jkubRF8Hs%lw(@Q^5dIWnPt)MBg#22?jV9;hRA znXm!w7@~{ojU)8ZTD+avrqw%^+X!{kO~NL)hRh+5LsacKLbM2pXRbxT1Z_dKW@ESZ ze&@#@s4D|;+2>E`yoya06M{wNOKQy(CtXLjOJ!gN=SC%XikgG&SA->Hz3`cWcxxar zV?Q3Tm~k>Ve_G9pnl)jmmxM<=dfm(i5O87%R8l-IMw>*>tf$)k1xs4@Jtl{s>87xc zH{&a2<<+;yA#CQYT=e3(m{0VL=dpm}ozRN%{`=lP_&C_tEL~LL*c%BJ?i8Q84I!Fd zk&YIg_>Oa2%=r3UzEhbmB=|k@p1W&PP|=z+PsbkdFT9!)5j&=|TJ3qW{@`8s%Aygb zeGACaRrGG&LpHf3zg|&&73bF01M8H zrE(5|r@+13_PIXKd#&=3}49{jP8{G$vxRxskJA=OE!6bW>jS!=+ zb&V6|P9uA)f8mQbDP1bWiNIG_F3g!#Amf#=Nq5W^=KfqPOgSwV+hVbjNAF6?qjroM z+Mw|s)(;+{iQq)zH@Srg7(NXaKv(OOh5_$Fj5wz;2Tw9x%9ZH!NE-fynlxqJs5pdFGq?IY}sb^Vgg7ukskIe#ml>!w{lgZGJsz8zijiiwB$j5%QCo-sMO z3!pruKAW4aw2KIL%Y0daU%JOJf{V}*3_0rqSL~`2={b;er61fTWY|nD?AhL#nUK;} z*j&H0DCAebA|*UShEK=CiBe*_2g1J7Ro2+yqON80qdeC*0d!AvK%qE0y|%_)&LfzIh-j7N=r{NWql0{ize;t7iGx&KQp!& z(!wQZ+I0cxbZ}DCs6rB1jfR*;P$q=8QBj7++&H1U#8O%DdBuFphr+nnrfkQ6Y{&UH zs&huIa$V|nd%$X1AiY#0(uS2kgK#4f1ty~$m80k|Q-OQ~OM$y_Ycp+}A6G_Lp2!d? z_-DEhFO5v;p2t$j92>b^-)xv_pU3G89G8rd$DYt%RVBeVlHg{Y~)W zT;Q(toF#>Y&oxPNE}dPwrI^ROnVq}{W|z~bG+uZ59*LfvB7}8? z-yIKMcvU;+|FY>Xe8vu*=OsIuMKYdgiahWHS^DW_8qYl*=DHq2&C9l0N;?FbQ6#eH z9R*+w=B-%ya<-M@Mtkrxi&Jhgt)v(5ZpLzA4sO|x;~Y4Ka$NVm(TeHcQ_>Zlsqb9V zSNL;`6T*Hnzn^QlxT0gE_gx{$X|f{td_Te!L=zxBdXeiEF?CqaP(Lb&`eFSoryC*k zG+!l{_Fk~RLYdyRy}?f_d18)iJ(IuwyEFgp!NnB)F9G_01Zu|rg}^{m@c+}6M=5Ez zAg`c)0peK)3@L~)1?EU0#pTuNi!emRVOWOXp@0LRoD;B2snxI~fYk~j0gFVt7zNE@ z*AG~kY-U@PLlVl$^~zpqgfQ_d-A(+t^j?=X6kG3;qHMY?kLqtveD9t=k<8o&Jzwt$ z9>2hEyMfgNWc!@K2*J$2W+Y}0SQnyI%uzeyYm~77a{lad>?91-H>gnELOVf(Xo6mU z4c#ip<51^ibM~t6KGbF=+?0q*3dSc!_E%LXCZ&d%NrB{e<@eFzRojJ= z=?V&p5F0E9QT1ksQwnWFdK*O_NuI^&HAzfYpB^hTYvxN7M-?NL@($~zYa=GmfUW9O zR;Uhq;;1#Z4b_p^6^w#}lt^H$R);ATV~r$rvr@G(G`MrZJJkw3Y{kFVMse?rYB-+8 z-vU$+W;5{e<&+ClMr2dQRkKuw*v?C%D3!`vY|QkBmmi^W)N4mhda#zmcvkC*$s;fC zYzGR10B`qJd3uN53~+%jD%OHHL&jPW+C#)w-495Om)vn+Ty?(oaDX(bFEx#Oxk80UnOC&dd*tB$(a(wxNW<^rjrs zH$;Ls8!Q)kt06Y#s}U+JKXzxJg1>6aMRzr@`Z;R!(CL0Mw>1r4*aloMx+h`{Mwum< zP!tVsc~QydgIU4%;sIcECx!qxIu&m{43>dmre>23XPJ*9l3K zbVeho%Q*i6Hl4(8niKHNA@+!>;N!K3(nPCwrwn@oWR^%bFDNbxU7%JH?n=gyj#YC$ zF+NJ{?==x*`l)$92iiNsUHaW)ZTT*G*uMQHwziJ0oZGtecnMm&{3|MO>qD?FSB}BOY+c}Ww9PRl?F4$zoU%>e z!@J^7IzJ&;HPTmIj@px%c!#{@;ae858c{Atiq<}(N9`-?J5N^RSN6K$L zU8`3j6C>s{Q>8Oc;{Z{sjS99~1dcZb>!aGw$=PKW5@D&5{v@YpM)MG)1$HF2!^jnv zmqiH$bZ%R7e49(ma;7 z(D6OCZ|<KjaK8*q%zw!Z-HYV}y{{>QXvZ?hQ+;}kOGQ)e)agwd$^10>n^$OX`_@NY3 zPE@6z6aGoXM5QfnC-1MBd#f_qAe87A?vb#$EVTn&nT)#*Bxcn<1k3B7AL+Vp?l77- z>tnXeMx8RHT!Nd<+-w$PywEJl=lsFyFbuU}yx@S11kZdOyro4R-!+-dW>;8&goId)q_dG=V z6^^=*%&G-(+PdB0RPCZnT9kFQkN=H^FUUlrig6_8=rkJ>^wmMLLkq2dm5z_D>e-&G*`|m>k!t6GPJhxO?aSJkl&cq zfrEJe7w!5eei?I6mb&*?fRK+eTt2vEqVFawdiB@0*Fyj?oJx{OM@EjEG;}L*6;Zq%GFWnJbXZ z`KW>X2x2fZEVy^sfw1PR9pv>XN2rU79`H4zreW*g4R!DYtO|zr6hqY>dZ`%)jK%lnj#5@+nY@6?#GaL5fZf$pfbp{s6UJq`#J_X8{l2480cd5%ydSo4l|?_ zIMf&!vd+}W+DA{8vWJos@{cK@Xo{;cskR;5&)i znqpSdfXQI+ps9yE+WT|JkiKagn~kZ?K@8^FX@OClI2(UX9C}cddRBPrTd*L14tUsK zrbUfTF^N)m5pp=&Z2;%1(PHc9Fe>O0SF~E;LB(gRdxnIeDx*q>@ z;rh9A13x;0{&UC`uCCOSqLx7`rEPn+qkmgzr~Kr-8rlgxp;hH==gT z6W1*s1kf@nnMDCCnKbj$IAMCse*m=+YB^<0UZ0+WXj>ixkU;p91wxR-n6p4P6$ zy9kLVvhK*J&(wUjdPZMKpWeqln1G%Aj}Z=4oDc95m0D4wh(dmyR*0(9L-IAOH?*Xf zI7)c0fS+)IL0+|?eqNlTZob~t2P*3)G8G2?R{v>eJ_0ka9`wuP6gy(*EBc27%J2ph z5HG0%2Hts6(<-@Shn!tn=|~-C=Cq@7A4f_F0~(Y&XW$Z|J2{{>kV z4zjL_KajNz^Ph&U{~J?7vH#c9a7Z=G2gL>TTly(=YYj>Yq%P8MLsvtR4T?HB+8^_Z&)8@09+&U!_b=~`jgW7r9U5QOmlA}OciRR~6%P@~Sze^gOWgN@Nqw4x z4TJXr#$=E6XOT3I4K)JA#!~ILd6OCrU!r8C=H`xubrCVm1=5)qbV_ayo+A!I2?GWLX zUhBVsGPBUQnIE|HkBmS zvT;dp@tu1HWAjF5)MQGmX+#_|!Wm9jdtD+Z3ReOHl2=e(A||=QxK4cf*&&`s#}bP? z6nE%f4W{!2De?WHDR^Ewsy$)OB>n3OHUM7@`DJ=l78tcgE!8-m9J19W4=2@P;j&S_ zaXot$gAJF44r`7mbEJ6`C+<#%Q(wfAUKK^5 zLy40Jv`NLkjTPd|$t|$q|F}{y$c6;oYuQ(;remvgLhaq29HQ=SyMzkB>fuf7$8Kbc zW20k+9y^nm`t@zoZi+uvPfG$ERl8rQ@s`AdOL}!O(GZKcRG;i0dq`OfUP&|^4Bc67 z)HkhnUcE>h=O;D40^`!F8dGhS+z-sF8xSY%yC0pv5H31W8<l8-OX%S}RstEpUNzEkR;$ZSJWm6x#GO>-fY7fI0TE-(L)u|1mVRkV!kGBd8 zM=|L$X;TD@PsezrV z&n*#s4!6Hav@xLQI&J;B*TS?{UEZ$qx{{FGPkvIT^l7Xyjadtq+rlaX-gUqA(!~YS zIINIp>xXfj;vci`^j^3A|qt*VHrL4q#t6xR%M8mqa|*B%19oida8z{j=~L!d%; zoB8f$k8p?QekxTBE22uTlNp=Q>o{1eFK^ zPYJh3b7VNvpPwp(vPP}gmAjQByOiv|DOZI_YvMyy>8sf{r|5($T^%5SR2oW>Tu<$U zjH=Yi&qqxuQ;qTu_a>9#DAeb)RzmF8OY$z?9zH~s)Gph{bWI93*>gr!*=4254qmAr zK}3}qIaj^P>&zJQK)D$5Nb{8Ji?~$- z19|cF_hNg+Ne}~jms7k!lB96OjArKSJ5-SDF4g^wuWv8!7d^wACQot4ksw3GU|Zv_ zhhuanK!&dzJNS+gxw`-@xmmFLi!XndfUob68Cw43?=SkH_q0rXCfweMTRAcvXkEx> zu-_w$KgvYU%rVNhq~yc|g|tE5T&9wxtfh4SCg2nJ`W=yPl;U zSU$+F8?A%#$xoTUBr?-@AHO@~*6-T(Bj(mTd|;Iyw_TsXh1@=%de^>!LAJowjg zhHgOV0yQsu+V@`pBllP(H%El*9?ta&DF=dxc$Kc5dBX!ou9;O&uDOSHaKkt;6JZjA zym=mW$Atw~gB2%oIW0?Yo?fBx?RuP@rX?CVhmVAK*C zQ^+*f_EaquBRl&Dc;wVB5j_n}L;S7M_suUWxNQ~R@I5SF*CYPC-FBN(s9D1Gp*pL= zTJB*nGjy<7AD;Tpu#-Sj++jMXx4dYe5ie{jL+8`WxyR0^w_A8R5iwwj1vR19uum@+ z4>3X?OqkTt*vV#JFs+jJGib$4UaE!b z6t57UZBSfXgh%5{+HX+w5}`Y)5h-Q4kckxdEVqRRxf==-U?Ld#(x-3IU_hLH!a!!v^=#Gyph!65@t8^pU#*BnDg~#&Y z3)2a=aF$LexfO{^;hM)lI(Z-CK=F7yNLcKp@M8Q|LXW>>HRSWN)eQmZ2+aH!2O2B%5m&0|_F^rjwCGJ9R=%$D#t z6?xw!PaZLH*2fpGXE4DokwzF7d91DAnzC-uTW;UMRp z;INObMdPj-Z#`9U0`2e48UfAk&Q4-P)Da@x?M`B7pvD*F#ru*_lWJ?iyGYzxQ$EN` z+YK%NgXWJHmCeoB&DTJl?rmjb)U%Lx=j63^FT%~Gd*dALhATk(oM;x-ISft_&!G&(;5?68FjR&E_ zM5JI(-^O*D$sfO0XG9p+S#ve%XYSlYX7RK z^v!le-d#9Vh(qC@rWXUxIGYZ_5Rc{y=I{!@0Gk+2@i z)7|%%LY?T)uHran%QCMpe;cG!?ouYUjWC(&%`B`2z2~;a+K$q)23I^7c?oeo5DAOg zh;p0uULnaZyNS@dB<~;k)(g?Pk6^(@-}pqfwPkl^u00=$Fn$DIT7p~f=?^u9o2gRo z=3j=UF|WE%>lQXnGHk$$B|TFUSa5L7AzO$cS9rQ?sS-5IxyIV*%P@7OIklB7?=f4n5Ss(_mde$FBqI! zA}h~`ZMwjSFx*aW3=2-LBK`CM(f~GW3g))q3*!LG0BSI1a0M*C-isNML8^>C&PoEu z1cP4-Mm4Ejbdy6Z=07n{eD-+PC`!`c`%;EUrb))d_|(9(K?FIYT*kQJElwnl5v>ri zQ7F2M$Ks%X!K_@uSD+_?p(Vmk5Ueb`PVw_N+;h3NQqjCGahkIJyvf14HPvH%u_L&n zG*$U2u_t*+DyF?_Qzf#FKlYoe{WEa9b$&URUchX-nEl{rn8~nqATY4-0TZ(fZzP-K z&b^Uj86Q2q-=|*tj~p);BySMWxL?2t>~^Pk!zI^yn-6H-aq;Z869XBlYlBQ?8LC@< z&-?af7~T3Xwg){lRBcAM{S0xgVTEocxXd>N4#?ya?>oTHBwTJaq>rRuSfih6yjc35 zf)&q@@vG(A*JSo}=?!dfE(|ChIQ;m3&-H`_Jli&BW!8o5$jX;xI~&{ZkHRb7ZQvVR z^LDaj#W&wnK$yAZ#>Ww9m~jRtM|N{Uf~wAfyaK^Ye|#wSx}@!Xq{YH+qc%@v6x zXsHBlAn;r0U+P_ZRb&7x^aisCnl*d*+0>3mrx)H&mli2kfY?EhH0#($kkI4hJVx7ml-lK zDK6`T6#FEIb%TlU@cu4-Om>wNm$*osp)fl$C#0?e$zqC4rV83{L>}i}q&{*ABl_SC zU%us@C9Cxz-1lsvBeUlJP;lM99=H+P zS;8-VA;q87!8lV<{+85)nZuX4`Q=4_+fZ-~=d43;<=^e%7FF(sJ<>sDM9S1P%Q(hp z=95wwQuyRv_apOCe7mu2l3fd>)k8i?njNL%36wT^b4;UNwh1hnO_=jew%Jcy0i)`_ zecC!ZVaFpzWvcS~J{+nD>QtP4rm0D~hdv`p;*zNvozN22&XZy#iI*Z1KBIE?*Fv^J zh|Y6H?N;Wjp|--0jz6VxkI!;yx*XJVGzuxM?^tz)J~;g+&B~?y??5+PNwq>b6xoRq*e(4yK zT~8U#C(Z%|lijVdq!s!3%LU7ut%v%tP{N^Y5FHvFv${P@?N4Sj3ur>guTfR|QmB^O z0nr9YQw5pH0f7w#DGk9<)^Z`jn5vfL$qcw*fwLO2YL@OodX=7@V%HBzit8lLU>9^L_sun6J8n$Eauc`vyL*`~ zGQvQ6wkwIo<_qjt#ue#m>CTTYEN>GZVu5WpKRs%p%q=%`OH{Ai?ph>FxZ@QKywT;& zna(c|JMuV9g$y}zXKblXo<%bnX1s;UrSe?12J-bbG%AT=OWPa9ZFiBHkl{AmJ?*l=65X zid5Po)3^q!(JRy-92)+zsFOXVKp@Fu?OA5=E&-O%9GLs28FaeXO2(GuF+}BF&p64%tduNZkZaU30y;#C^3bB5%=k6B=hc}6tPrH&g?qCxV2!Uc}i~p&lYy% zVmqEiOY>O9;{hQ{MwXhxQC;|57O_1%nHE}OkB33sR+3B4Pj-%)X`V4_tk483AgmW# zs$9RzQc!(9Ly#fiV$720NA=^bUO8@E+&M42QD?9DSRC1=X0m@+54J{mYw6u;5L%vy zBZUPv!p1F>)POqyU0_B9*cK0`qD5ywENuFC^@^)e1H+53a9f})t5C3CX_%yy7M_J_ z@;~g5Jx#q;cZ4bOPcRogN>ys`pJouD9&`SO9Y!i{nO{D$o_}1lMO*AOQ#>ssx65XGdLK&2=Bkv{RjRUF1lKbvUU9n^tWFMeM9v>dgT^G{2?e(d^eb!mM%}*4C6f)?sH) zyb%(m-D@HJ2$tRo5pUTXuanK?ZUeaD}P~1|iX*-UC~A zpR9@OasEz?F*HXCMcAdK`#lw?iW~I^JBT8?s8ZcEApBqoet?BDxt4NM^ZIYsbLy%1 z|FHH>!Id>?w{UlC+qUg=Y;?>{$F|)`$2M1tj%_C^w#}8KW7{WtpPRGmt8dp^_5XMC zdR~k<=6D9|5>7sn9CCdU@jIF{98`;LPNUa3VDFV zURXybT_(6YK%X$_udTBMbe|DQO`VmN*Wz??J@~Jk;!E@B)ar%(T|lY*5bXT= zvMRX(33_C_kmN>nXCRdueh_sezyuu)gRf`sLtgn%bo6(R9TIn*GX+S6{T9e(pIA?3 zogx|_U;2nqJSv?-x*ZU#)#Cl^Ivf*cft{VfY@H>{`Pnx>bs0*_V8pNg*PWayJy!Ej zEqM@|VkagnC4Awd1+_OV?etr_^z;-g+?rfsQ>t6bJT{leIgMkx(zwyMlRbdA^ z#{T$xO2NrreZUksZ)~t!{gkCDtvO?Vn)eK3G|0kkWh1Z+J6Fa~yq`n>Q)%VuA-qaS zHmV^iUT`JqsU%FO(>G;$&Y#5Y$rGHXO?P&np=TweUlts$#w}3@cLJu;wAi2`C5Xy6 z#o^7@c{?dJ#@OUu;~JEm^c=^nvl&w^x|t%9O@J0Y+YpqBPFK#?xvMo?X2H9s&}#L$ zxVldLCppLWLJdE3!Mlc~0?q8!^gAvME0Wvu;Ec+ZAzVA-7Qx@X*zOeAr$Z~cUd3Kg z19iTx@UfyvS>}rKisgF;CgXV^PKQ9d(ARg$-TM&@kL^EKqR;Y`h0Hp{dE(j;OoALl z`$2p3H$GcwseHGkaNZ9|ygQNX#M!28mwT~*Z(62pv+a1L%anNok6(Swik5AaqQag5 zr{vK>e97HVkJaIP??<{<(%%q}$6^WoFCj)<_pL00`|@QM^S_Ba|D?)K(caYB^s_7e z-_3qZ#x{n|&PD1|&iJ2aw2GpIs$|#KWPI+t6l2b}qSIA0OADQhdCSwZ+`(`-uCD`m zBRZ?YnZxbJ=X8y7Fr|*V76Iu_hQk43q3HzMUu=z83lkgWXrU)rfXV#W?_Xdp&XCtE z0V!WCZ#}!W9y%X<+n;Z`KRn=jgkI$(BnOZ%l}eV&LBAlrJFMsa> z8;+jsQW=?Y66c~LIz>?0lp}cIrK-50YX{Ax+feVGoXWapJ4RZ(bSvQ8dft>uc{{-j zog#dq0r=Txry>u8Lziz@f0lq%dNpWky!koUJa>Oy_ z2^K=Nm=4lSg=?@VO|lfrT_Zqxb;2O8iR+Fv$Kx^AIbAp(jOknW^A5FN8#!M zv!9B(itJj;YTL_i9pzcSsNS|-5)00>{CKm^)M)$^Id?iAP22urC*tR?wCt4XuG^Q{ zUcg_;=m44y78$pcuqNw$BK2mo@f$351om&R~Nf0c&3 z6gu+3>WP*KQ%PydUSP(yDs~VV{B|Nd-?DIS5BIAuo{;SWyN#3f+}9`J~P%Fx^q1G_%W=n?NPPKGvt z@i`6?3xnB}YeSt!fPM_S{BAn}Gb_N9XXq!}IQu*<9s(B7GbETnaT}p>p>Qp?=tz$1 zIBDfrYkq`-kRcB&nU7}sE687VZ0n^Jx!Q4*TY>QYMdm-2Nh!XAKk~b@z$#Bo4h?iMl$Rei{=>JYitk}tgM&j? z(aSv19KHbuQo@7b)*iQ1F^hH}t;$GE=vnI)fwqu+PM0uU;6q!Bi!O27*UvsS+ydgA zei>gIM0@wzg!x-_n^<;tk~!>}JLK&jKp;13vdQAoC6*~cTtY+j`Xs#LWXqlP?M6R* zV}KgArX6yz3^&$M%o5Zdlb=JT6K}V8x82?l)SP~Y-zS(?Q%wlA3r%$?7aOSQBiq~A z@X0scp=>DO{!X%+4i~Oq%UMLE+%eriu_7~(p4O61IQwCLcQHJT{Yd}xl*B+h^q9m@ z4UnUdO~pQLOEdfqKQRB*QyB}SPXNabpzVaVS7xeIb4_`=W%47q*6+Zb<2HIOP}gqr zJ4j@PlTYrW?Zkq!#A>OLPSQr8kKB`|aki|cGO`~xUY{R57 z5guNhcPg(CXRL>-bCh_8>Q0NLM4To^UF?+UD-`$Xcgwzxr^eqaa8_Wj#PDZ~9{xH! z4}}ABiqdc9oDpx6W0npYIvsJANL>n4==4`@zC0t zy4msTjee_(xgBP$6rwy+N1>k#je0U!T9Zv=Ib#Cx!G^dQ?H@R44Y~v#jMMvZM$jT)pfo9J^#nP&!mo@?e>#-xt>oPD~ z-|$DW<6hIlQoiF#6nz3sVS6(N6sx>tr_R#Sbl^MXxpna7<<<4^>V@zVm)UlD6og1%~sjk=e6ndW9ECf5su^sY?fPx9nIZ_ zgMZFT8-^${UmvyBRgaG$Ue(cxO&HorM)jIKEL>IG z`QevtlBdXHQ!Tyd6kpx=x3=|~*Mcex$?m0$xig2HJT`>8;Uu%)X>nQXre(nC3FTRz zgUfxx$FBncs8^kvTkPXuehD9ONoUV}Ad%?{fXJO^k7>fYz?_2!FexN3#1fGmkIAZ~ zpG95A2EaC((6zhrfD2c2vv?T8knDyB%ToRkUNLQh#R1A(k_gT=$}B)AUtqLnCaJ6bYUTejtvhJbVuYVywL{+U)x`7R}J9XOX zN8JGByu_TmoH$SV+;R#A@e^mLaB(c{l5%uBgIosO&xzICm`LMnP*hV zMGYcxJ|Sy1Urhy~QW`^5MT*`$2vu?j7Y|C6p02=mi+!yj_`VK}PGRlAck5x|-q(Ns zP0$^Oa^m5weCm&q|K(fu4d4La-Q*oQ#J$xiBJP$dF+!G=l~SlXJCu-@f>3Y59ZGSq zr?CpyK`~c62RMbcIMLB_TKpZStsc(;szjtT%yy0=X;|9Q;2;eS^7Yf4(G{j>s%y$; z@OL`hi-+>KoLXX%6R^dNBL$uO-udRngEqE!nk$T912@lV+a#87J0tVV0o+=~fnh(b zf}fX6QFV$c8*|JG`bQj=2avTe3CYcY9n~tG%j4}^xv@3QOZ^5!y zV-ey1{g*L|$wLm2-eB2)mBjGY{9c?8gCam!SQ#Il38}{0lVz}^w?r^yMAQf7kKzXD zTj0*%U#;t=U1MBwk80X;2!w*ui&B-SRbYuErjD$^4ti;vSjo6thW zOXhp*(AS-3P?ZeA3SKEfFxcJu^rMCEP5w6?E=L*LU)IqP&VdJ!MCtFZVRol$ffNG`Y|KT;P>^U4D1HC#wh+# zEp)Ey+_Xu5u50b*Fr>Egf|A>4;m?wP2*yLpr@l&k@_FcVR8lC*F$0@fU(rBN%T zuF85{Xkii%b;%Kt zQZ^k{$uf*Nl_E8{B9(%)csk=oS3tgeF-;k!DkgOCs7E@0Zl6ttHT}X)qA-Sfxt%0NBx<8>G8j4f6E;U_+}ER%@>J7EKT zwHT5%xe>M5s?2JKHbQZP&ysG8b`IZax*q7d<(gZM>5UD*;GswEEoUz0T0SDxC&TUmw|wH1yJYpeuIwh7Ax+3wJ3R6US20AO zs*TL7Z#<%rVQrRnlcj{u&RjoyhgD-Vu3t=m$zbN15t#)_y%{gdHtQlcs-8PRPCho> z(BWB(4Iu@<6uY8~kvgXdVI5xGwy>wNInH9&_z+0UwbE?OoDTwVMUGF6>Cv;ppC?{p zCTKfUCn=4L(c7d#zQVgn|E%;_GXcvSs*YpeinULLnxI+#QcgM}WRn$jU6rU}A3Cn! z-Wb`PtB+)xy28*HSuOV0MsM!!HC{KS?2rC|K|ZY19-ULFjdTP;Nq0ku=92$#x*7%Hx#$wu8s*1wUZ`0fsA~aW~sxq$V zax65XJr;ty?wy?88OLaAQdOItbLt6xT$sc-xFNzTV*O;SA7i?&gNK3-&mC!9g^Uaq zk4s(NjYwTSuLFipUHs~&?|GnjhkLzz=mw){bZ`Bc3>Z=PhFsNTP2IEsa}M@^D#%IR zmA-af)EQ6ZWhwb8&?JcT!oX1Y`S|U_CtF~AF-drp55Ij2QmExcVMfWn*}I>#eTyyT z7lF5o?}vh1Ad}_3u$9P6_l<2$p(Y4=nrGzw33GRN6G_|NGx16%dMTWe^9QzHOap=9(^!c3Hd_By57rK)J#5>olBx_=iWbJg|u3l4S*-(S+}w z>}8v$j`>;!87uLPCF?YnefVpdlv!>BK^Pw!I(58u+Bc-W(mln;EP|*76Rzh({#_#{ zn2tT=S7{_*_#RVB);i|Gp2IDv^ES0JYy3EnjE(qDBBV4ayd#5lP{FWK6p1@faPOQa zksyH0i9(3_p$B#^`;bJ=0iqS#E6#ft-w9)qTFThm2_Yn|h$n3w8h)fUO*97RRENO1 z=g}dbLjFx-Th9qBn~J(m>O697_$^N2JeH~sjeQv0fteT9cZ9AXKG6}67ji3M!6Ok6 z;d1?rBXRDMhnMj82woH^avzivln{kEh}Q{gRAw>>5RE;;yBsZmqnQwznRwk$m<#$1P0o#?upia;Vg87i}AOttcB#{^|79-bvkFD%&v=43>ICl;X~FbYSU z+>aDl%$_YmYMAO(e9!@FC8~O407s4}MroLG`iI=rmsSMkc&Xep0kqfzDMO)^z^vhd zE7|DOkLNxW!bm0cv8(iBo{mbZ0oJlzRs~nEE|sjX9ChkEbyv13&8)zZW3}}XK1A;_ z#UYagT&-L_bkDMShk#=n1huT+2kHkPmIcqWNEG+)t8LYj`;wU zZA8r_c0Fnf(ON}qu)-yFk_E?DQJ*3PW*H}siYvZkx!urJ89$3!BbIyFs$*yw_?VhI z2zf!DX@7&}dnJ%y!Rs`?4H~+XYg=?d^0cZAJGkt{A?(=iwb<(mb}3OmbXllF#IYfu zzzc%AoTw4`jkTk|i=efP`pZIMiKbw1+_B|)r599eY4!ko*+D|`)UNRYyocl+*`{h| z(3l$YuFe8IjdEv%&Vu#fpU=7qAMjl@d!v+N#*S()eCqPeUe_}B8Pz+YdyURmK{a9$ z)jLu2%G^5xu@KJ8su82^nk{uAZzlQaI0WiCxyXM9aezeRdW&Fj_8mhTC! zr!J~0bYrsf6hCDXuxz-CtP(k*lW`~&E_GIyGb`NH&*-Az8ajd=nk+M~L0=eyL}@T+ zAlDerd3vDJcEH(vjMH|=*Xm$(F3#SS^|VXOIo$ednMmdoHlVW}q+s<8-NqAs6?gsmWBwl& zOY-zuK!BnUmn5~hoZkk5*=w6F>Uf}6<1v@~7<>5H#5={PN~kn*{QG@5 zB5dYZif&cAhD9tPk^iz?!z|TK6I(fVwH?FD4-}mrS}ta1@fp6CS8e+V7ZL2X(BjIa zpZT9`t^99YCyW6(FEGJf}-z=lRQQ7&w<5|Wxm+aQk8fj zG^j~;6ce%9KL)7rSSR@h_VwZ%hImf`lieBZ`3xNNy;q&2tmf{t*Wi(VFsv<1UkSoC zSA$1~V%*{dbwzlX90T;J9x^pk2Z4Aq#FhMZ167^S0-G?RnKXCdMLkSQv<;Ge0L=CQ z?xXKdlK6QFjy5;eb5FG0=gIh{^f3DT234G8c{$zP=|I7=FOU~tjXIQ8%VeH<_&@o{ zYT%>`+(OGv^enlOS~d{k|uaH^tR zgdL+3sC$~;CV^fN{N@+XbruUH{#ojRF6*x_23T~udN`{5kyjWv|Yjt zQ&-Nor-4cFd&3rSbw199%M1#6!{@_-H%q&F)F9$r-cYd1(_q9#cTBgPz?99Fw<x&U&=7{m z*cuO*L_DHjMR~ty5qXn1ec&(=JuUE>a^-*2i3b_PIw%x-&A*#o@kHW9{*oBZpZsir zp;qCEVE%JS6KQNw$U+p(T-(wQ(xt_?n!t#;8FcjF3WkMB_3%mg&Ld7Uz-w_jN>jXDQ0?U z3yD<;0cxx&Tm#ZaSmf#=QAwV7FD)e7!lT_d^+r_*!lObX+!jsXY?eJKr(|83`l6)` zVZ;-=0~K9YgswzWZyH*%fUV+zEmWzfL1FXe$z5DF&x(eiM3ehniB}sUO(*}pbY7d0 zH&pW&6L+TV)Ekda4?VJh6n9=M`gLf7c+H$M4}fz0$g?A9;+=?@ar@w=WnIl6a|pgr zkUi9vL+>5F%|mN(K~q_)Z$`!526d~8v;o6r;J8a8GR5)FYeH#JViw2k2y}h4Rm3 zIV-%w{++_Fr8!yJH)O0VQeAQ|*RjSMM{qu_#u;(J7KVR3>Zep_dq3|M7l|s&9o!zP z%NsF@SE9z#f$w#WhIJbOZXDUoR`;^BX^{(V5N1}KGX6NG`txDAaHJq0XS%w?IE=dy zsH4wOE-x5T)p(YwV7*nE@k3jvSE@}ILRT{x0#@(6JFmgIw$^oe79hu2AF28P!}N8ipF0E z2{hqVPS@ydqiN@3dvHm$t|b#-$xeA82NZQ=LJpb-N83~BR~tunvM^v2`(x! zoA7y~x3UeZ49FMLD_N3kW-g@VmnUsBZtq+&`YQ zi(G5f{*52W0o(NyJ8%3)g1MR3)tl^n)bgr75O6g z{he9xXE)#%!7m*ZpWi}ANNmi0ObU#S{B3o}hLQTxTabSWFX_&Dw{rKFUaw;cy3H$( zs5C`Kw0SnPC?-&I&cXh}EKS(z#vF@n?78^8g zO7-fvEgpR-*PL1nuha`x%v!`zjX4fZ!nVPlr{(TLZ~aMw5PZd#>q{Y({(uXDcHjn7 z$SKNQ+GJbAy?Ew&&!TQ2ZqhH&lY-OGhk}Pt{2O38Q1!HbA*`}dN%@Pt>mry+ein5h z(_;WeUZaAM&V__}4p+YpF7bKzvvh>+&j>P{=ZP*7rSN%NunhD4(iK_sn+=rqP=2O$ z_;J+&cYt(-N!ctOP^X9AQ$GbE$2S2_p=8AL?VxRYJ|6S1)#q+FLX#QF?4gTzhjPUK z=??j8=-44F&nbE)&Jpo$xX%5N`yu}~J6o3d-YhY}gc8ItAvarF<@4>|KnKz?DfHOO zfscGWWyOOE`UOMn*yDH|jo3l!Cv0wIU!3GF|NEzz=N~6_ddOUxbNVURXlV9)Fi#;| z1e9;;RP-rcuOubI7t?IuXnx@{s<27}BR)Z2cfy8B&BCnSakJr+LgDL}yeC&|1ekfk zar7sb(1?IX+gf3dA#t$XOF=}XgQgjd*2j7BPxrookNE%kMftl8hjIk|<;&~mndW~- zk$;jvQ4!;0{|{k1Sk2mg%>=`bU~6{1NSnJ}4lPCh7l%xut$uxSOy4Xf%*o720UUlKDqOspjKpE&axv+j^$v&4rZ4G^^?l2 z*m?5pW-G;-2x+muv*kMzvFke)t7RF4ojD!*B_DK6Z0T*il29i?*^j=TD7 za8r+4@3}N*S(a;1D_!?Nqu*uS-v&JfRRJqh&D_NXzv4ohcF^r|;#Q9h4wB`%^9(CxctBy_3V3sr{z)NzpI|2475l*@PZd6>I^uCF zlC~bo4J?EVcn_d|GGOsR4u74(5y~Xgl1O$Xw{5tbfs>^1eI;sAefEgUM(%?qHoOFp zBk0@g0EG-OQ?JWgY9h4jG(>ul{YI&XjM~I_peb$ElupHGOHUutxLJm+(@jyuzzDAkdnrlB=F@8U3~oZ@ydv(ZMe{b09#s0}^pk%5)Wi-n(hi#LG( zvX!elTD>5pDGeR)Ok;rdm@u45(M54nRD!3lF~l%ds?t;mSC(6vPu0l6&8>}gT?QyJ zz)^=pJBuoj4a8EjO`%Z7Y7oG^c1n5{J{<4%HZI7S5h^H5weV%sLzJYopp4hkh6e|O zq{yRCmCAUwMle^mx-K0psp%*gz1xnWD+T>2YoTPYI6bYCpYShI?FDZW|Om)d=H^AfT#gQ?wLNE(r@bNYx>sAGJ+k2$aIDp zZB9D_O<9;kCM$4c8*burku@MLFwx-nVh63`@%7dXx~=7Fk&+4wVV-7~NMx&t!-$iN z2)z9oXhTm0A&bYkaC)UtJFLseFi&h}&4VRJ)<-B)308-UsB?fJzQW_DjL8{Uxi949 zzpHFbl(varJ}3C5Vg7%BS+4(}Yp!Zr_G@Yw?|N&sSuGrE38$KJb9Ub{sKy3m;cSjS z7bY4`nyMHHb(@*&oKj8X&f;2re*w?KWW5?BCkeojPDYU?sg@E8G zRXWMp_7CG4-pGO90pQ}%?_eGOIOVk9H87b}xz6d7 z-nwGjX{0W-Ed(^4nWHNd>NuM!2c-*KIV6Oi4rNWAoQwh)c z4)DExjA6gQz6d}SDwj-VerGpeWR_=Ar!)Fp2*d-1rdykpO?WL{?`nv!Ev@@C`0o`LZzZb0`$!7G@ds1lNCCIR*yi zjrkZZ-+|}eA<5taycT{}S7Dg&anJ=2xL5GwR(Y6zmYh#?+V!-Ti;%xYUkW2X<_iU3 ztk`1wFD0pjOfh8_f?s9E)EtEE+e@{XnMhHGhyAdGw02+~B2qX7cpq%)&Y=S>c=Z`Bgk=Tiskb>VDRd*~= z2D%|p0cw2Xu=SsoZ`LfEzfh5n-5pq&)_d2RC-+fmu&D*i@GAkdcGz8431=w8@=(7G zJV%&14k@Rm?a(TL;W>`4ee!!gIJx7qSA_wa|`(;i`ml!hKQ zdy71rAmR1UE6u=*iYs_tH^;n5esAr^Ji52slCFX}&qiwIzj@+%p&M9R9qV7TFI*it zZY}pQho(M5;~~O4w!3qdnEbYS`mvqFGdh4gr7!$oeC!{q%QngWoLKCb$`9!$XDn?7bH}DJ=I?Zd<6SyVARM{ zBVUeAgJkiRuy}z!SC+Qe-ynQ?(GrcD4PWl)E+auf4q_MeXbPZrMt@Tws~9-C0-=US zWnKlV)1GuRCujgOk`z#;Q(g? zAgQZzlC#_DAs$1+O%8W9eB-1=&nJOONwyU=oY|+6vczQB@WQONPoN&}0Recx&P**0 z{xBqFv`WnI3#Q+eEu3mWFr5>MvezT|DjqR>(uR|&P15>yozT?OabKQ_p=zTay++|3 zMDyI?k>4hR)*Tc-S%s4A|Dw^!9#nv2(rnjp(>SDLH_}}jZeVaQ_h)pMn4&3m@lA)S zq;S9HmG#~Qa>2`9%WkSob7q)fWWM*U%8b+Zy5ksP!|Mkjrl+NHXSDuE4M9p>RnVWCfOzWJ}<{Lic%|53`8rM~tr2K>?5HRz~Ka|dNT z+BZn4kb#Bc(Zf{ZhTS*XCbx13$6$9#g_}-@W?o?-3Ud}sP4pEuJfI(3;9vY#8CpsD z74tIW5jzg&z{jnvhbu^W?Z8eNVZZQiGKTvpKFM+R-Z$OQAmW!b*ANHGRGZ1tHXM6^W?L^%2c zp^(Du^5jrB5%z6=1-T*p41jnZFCYiLk7kGzv3ce2kq9z7o~1#2M$BAE<-A_RgX|RQ zN2pVKWeRazWMc>3QcSMU>(mQ|2;Giv-4#|iRCv8YGY}HRyWfD4B`iD(vr513ujKTxWb6L< zXvEf}gkjprJdg{Q$Pxm(gq?ZGX$=DRE$4goOsr> zHJ_BJ(EXR|q1k%l#t((CL+dUPs%Zn{!sbNo-$U*^XYBU`FeoZ(T35@8T8+--nzQ8) z>}E8STCP%HM&DjoC|e89cyH*T17L-XbLqI=(`}BN{K9W_=2$5aQvP}`U~h5 z73ITHtwU3Fa-B8;D4v01Am>T?2JJQER#eW$X9O}^D zHz&`QR?iYrKr0aINi`%d5UMGEI%G{{mNpK8NTfuEPUHWjnGWD|466)H7l_@J$4cwy z-@{0plmB5>H@p`W&UUz;KORC9ZRNp*z!#4%{%756X$X9e6&@Da@F#tC??%5tZam_S zc0xV)HBmw{((ub6DNEQ^gg4Z!7)317@GVsT@UMU+cmu-G>Eo&4SB4#FILKmo!ZqI4Qc1%7zn5zKuker< z?v?Rp7N^tnfTMUR;ksg-p~rV4#L7ZCIPDR#c?}^Yp&H!)>V8E)0~97+rCcy42VvtS z;(88?4X1Q8GtEU%3(aiSw(e?H*{qrRf6w?rTDhr63Q7HbJ} z>buQ8xxlxhyJ8Ym++Cv?4Y$o`e0$Bm%=Fws-B)s?>`$FCuTvk|3s7?Ra?89M+qjjP%t3pIq zsy7f#GEeYZjc~!;Qt0SXqUmzzYSNL}kImSMkqYR>IPywR`piI^>iSF1BH^JKQrVKq zdwcvIR2x6W{L2Ai3;F44#@LJ3RHB_-HZ2KN4_6z~$7wDpJm6htJgT_5Sd!bOQp#`E z%Y|4r&T1>xh?pmbecCWxRBCslznZkjL9eC@KwnT?pslnzaeLNZ&DKbq;LD3oONQe; zY&zCz8jR6H8qt`w!k`|-0C5B|J3-h|PAY2Ea1uF4)bQ2jYl9H~wyxFqtA{+Q-*taI zu|IcgmHD1sU?z#nzMqIVj9?{U{!2m^uQC7K90%I)it7tJ4okrHmx@iO^{+t2%Wgov z@y6NITsyC6Y}>QJuNgVv)_5+HOLHd9lun+MXr|6N_Z3(ERJlDTM_{lJdiWSdXO5aq z^VmznW6UNu(bl*PWmo1)|Hi9r2eBM+CWTvIg7az1c>FV_O?E@_)#&mIyfN ze{40>`@he>D&)2VFQ4BPg8!O?=KcrvR~1Pyb~aYl|8W9V*LOx&$MI`=apXEu$*uV* zD+XRtC_~!NOT!pg7$`|c!Z@$el`@eKQrv!W4i%0a1H6Q8Vc;HTnY`67w<%lv+Hohv zvzztN!+#~%4$COoU{ZI%d*GXMAb6q4)&2H%WBdhJQhum$6%z3klNJ+NeGek+s8@xC z8BTewen7?2p^1iMu=#dhlF|Kr-owwt!()|Q@9XGHnLc6+EDF<1uY>*=6MFBZK!G8j z-S4Cn{nFKxU+0-ILo#*?RWQpcwSnl35xeTYTZ7pL!M<{+U|PrU3TwYb#AF_NOkNIS zXk{xY9{Ft6j7xA2vBhs>J27TZaZGCB7Mw+6qCnXY?af`X9yvSQqIC5c3%^uif)PO9;X7cj#sXII^c8_;IU zB@aZl(wMx(v)kV5<7>PjItrp&X^z%uB-kmY33J6ob|DKE1lfi1ljg@fpHT0Zl#hsI z@xUvlaVE>a znp8t#VCJVh(lJqE@a;qVARPCz{sZI+Clj<26NFSmF?oNx-QOJwnD=@%W%MUMwFB}) zcIJG+$I%ikp2G*b)(w3JT0-cKMF|}6dHcZ%>h56^$Q!Kk1f#Q^oS=6y4$4+5C-Xe^ zlt(-zl-*h3&edRMa+o-%0kJx&Nu!PNngT4BCxW5Wfg~V2FGoGG6nI2pi)lwuAQHxt zqaM)BXV{(kGxtG@n0XZ+LgYgL^rmsVg2n#RnijT;LbZDv>%bKgFAX>_;))Sq8gRrh zZy^y2*p1m%Wtwz!42X=>8}Db0uw)X7HAYa?lXu@G^pWf?bj;BDdUbF?MC^SCGKBHK zMr-rPzfGMVa7NUm6KPSwv`B`P;*GyON<#QtCmn~28mEgHH_=qq9bCBR6$YDXh7?4M z@9DW3uQJsmdd4)4To$~=Fg9m{&TvR|46Zg17&v6BV$8E&BJ&#F-ATt(YjLEhYamqZ z)s3mg2>5o=LnjI2Lw*BZ#l`x8ei*zc-l|D56ZE7X>G7pDj3z7zfqcWDzvcByriPspa@M*I>Ku+5U+a)dvj2 zqm>+xvvtDI0P3qHXtAN{5G_76`>mE#S=0{OBn)mA6RSTY&`!q_mYKN;j;skD4O66e zp2$(vu(;V8(pf1%;JZFq=_QAFHk2&}Yo0(cqj^L*PFDD+C3O-ekD7))9ZOax3gxa6 z4(0CmIu=>cxPt4C=SZK=PymsrT6q9ykO}QZ_v+NTulBmR^3^2UU`-SjEtV3en_MYA z3{st;|2FL!#k+LCi{aFiw5r@op!Zhm{hS-}?nl(>eR~yClOA239M*zRu2en}#;^Zd znuMOGr+oeC!iN3K)cx<0^*@DGc3zJE0jp}Cuxg6o*R*27oyquVp_D9PAc-psR)))C z3~MTqF7#<^Bq> zE&2ee1r9n6d?#04@22dPz9QsP6zC2j;a&_clN)~R=W3#HHI5U0aaxG^XAi`bufw9gU_770o&{V=EClpa&to$1%L zNX&AN@|g-;?(s6)WQbcV{XaXIF~Yi)+Q!+OBa|f#`$^?7lq8P8yT5|OA__8YRkOEoGVDP_e5-ic#vdNvxi@HpX;zSvz?%Z4dQL;#%LY>=ssoI}nV0m(@ zMeVZLYP-6iQhr?FdO!)rM+y1rjQ%?drP7kKZtj38Bt$aCxzB{BCnkEyQ!Dxu(%RG5 z2CVKQU=wgDQ2Axb_t4)|K2vd|i1f^lviwN%>=dV(j!}t28Y_2Eu-SqWub0MxUUwHG z&JI^He3;v6BE+6S8%npypmHr`XOkr)y2x}3Bwfe*mASk}Uc`tt3wEG^m0M zTtWgFjm`zIL%gYZMK!3_5$uSGM+M>uuVaP{5o}W(Fo^x7@KG@GaUTbC0MB z3xZUyzK&2{PbO|jJiC|?-ry?ukztdqD%C^AOC(7|1^0`ZJ*&ay5G-SvASy>G9`5WHZmD@OJmFVXG| z&0p8=sdQ}}X_1k<60y~wT%ztwxggp$l{TS5>aH&S@*&Qray=gjR3d?oOn7l}kxmo& zM4&O4zXa7cX9+S($^z!JW9s5Iu;NM55WCre@p-FZwY^69ESg*KB}Yb+vVM6;thsr~ z^!Y8n{r8^S^S+A9(Rjo~m+uVw;_0|ANLwdHOjSbz#Fva)GG6JeEm~z1MGEI(^sV_r z*v=7Ya))rvMe7r#q~b~}nsm-ZESjUTfvs>bsV#1i4o$|S?kdBC#PdeX@2|bi_7YUu zHqqOtLhaZIGXo|a+YQnN@o9ozU;jPVa+!}rxBdyBTA$X${~bWN{s}Kt6%n6qQGBQ^bRGqaD2i($5+|m>hTXIwyOZA>6q(oz!wDCgcyy7>? zcQAwJpSrMBbs7WM?Hc}Snh)6&qLl@~p%Am}4TrUmf zxk#HZjm{>8@8lINg)yRO<{~~;0y3Er56}s1XsZG0jp1D9UZ%bih=lcKcz!?OH*T#K zdKUh?=>*#yYMZ&-;g+{eCQl7r;on@jW~j&f)j}&;8NP`?gBCTjkY#)i=J89Gc)0r< zztQRSI$3Q7Xb#HY`m$}tIZ6(GMjO~dOc2IAR0nm@p5d6i;Zi9OFhIoM zgeSpbBTA@=wWzErD&r$Ah96g0M+-dra<3o0bb@G0%_&`2-itYYPcpZ8I2JzaAR}m9 z%3Taxa?y1}{Ha$1%}nX)SAV`OPqM0~mYC{62m-c=EU_ZbWJy*^wc(arkZnhGK00v; zPcX8&%T8E?F@j73t4|?_Mo7aEu%oZ1mPb;a51y0@txDH+6&``!QX%@eWb%dpj&Ojp zX~+|;q+XJC-oxXBz>c7aYlc}EugMa~jA5euQ_F~k&1b;j_fB!(_hR{N_K+#u{4>`O z&k$zZE{$B{0K@NjTP4;A&TyMR#%GtQ7Rms_GCnXb9_eXyY4B%O{ysQy`f!v=3iwJH zP&`r)(HRsO{Nd#3_S!fTRf>B}SM-8Gk3U-Ew8bza6KjKd_^+pCic(^h2jL7=yZM_p_&Au$D)%b$~|- zkrT(;#C7I545#@+e2HmxOmG&d%d?NP0Nng|d6??)l9uXXm%8bmC0)U4gs)6nJ27Vm zYt4@9jy{Dmgik)dQeg051*uXj@&7RP)z>U*7YbIWzAc=gcpe%r(2uy*k<5d!Kvvz8cgiKCq|^0rkB8 zU=+`%eumjI3tQETbWeRtHJ-+78@8|R^CelOkGR(u{|e)hko7aK>b|C(Rm`q_*W0f?+kLz6Y^`+EyeK=KtC!_J zmTeb#w2ajwz(#GBf-1Pvo%naRtL%*Tst?N{41~lUtb-O8`Ds z@%OR`%R7rYE?$2D#PsZ*3!P3`9?R7k<;z|MQ9lOfRQnP<$MUt9?vwP~{;C~O78e1< z(v%pOU0hf`TYnF2*g(9loT`#GtW&D@$DJQL`E?@LmarOgR8@+BJvK1!7)BleE~sGj z8K)r1mEUR$9KT%s(b8E9wVVE<>pM;wARs?`K?(O}y1v8OF!q}1F%#=K@6ZM0elyWU zQx4G%Y8vM&p5keD7a3=FK5!`QoIJLDe1<6YHAm6{>3I}v`13Z!0Sr9;bk6lpWsj{g zL?dUj)FVIT$7Gxp1%@~m>5zxGs@GJE=GFIUgNwPqpuu^48toxW5eU8x`d0 z!|YWhWi9j-WxN?kqfOcw@=T<@MA5hq_(ZF`jpm5tMx~>({2)cLX2p-7X8LxY4%<{| zi(NR4Kinr;EIa)!c$1{hC2|G}{|<&A+=Bui%ALk{szcmF?%6#&k=3M~CU=^}s}_;T z33VUY_06@7n|o`9YYJ(@@)MXlO`FSTqvWyD4@Im$m9+9p0%vgVeqwGS9g6q_+o{uP zR7%+*#smNT{9vrc9YHW2T)QHy=@zsBs| zL2bNk%S0Es7OO#|x&G4$4l~OmiMa7EnR`r$9GO`%XWMOG9?&D_uKXIzYOnRW7>f`) zXR4-AROP0A(kd-xa#)x2H?NYO_CvqbI+C*W@{AtXWC!M%sP;SlZsWF#d{pH%)n_Zb z^gs9gpgg7fVO@5x>pw;jBmtW{6Zj~W{SU93Jn|a?gtzc7nQPYiuT_+ZH7?E|HO6bXG|s@)lj}&$!;bZLMz7q5id?gT2)Z`g) zDrBZxszI)jJh{M~#%;xr#(^O)^A5#C?fB+R!>HPyk`Upo6b>|qR#wSyQH2hh#`ikh2HjLyyN2O+lOW70(nwH&g(###qzXd(X`N)R>j7THjx?o zd-qIpEJO3n+cZNXv*aA(T3>sDL&Z?UG1k=2e}u|otZAMngx9vDGY6=C339JG;igz- z$4q%b&5p%}*;1+0OO-u6)-M#xQc5zY22W;Mx&`A z^s{q}C+n;Fevn9-;jYR$1P65~RF5MhCtKYMZPRt1R`S0z71+Xcq`Lsr)o9K7?-PnbsPQ5fy-s882c zc>JcR8$II#=Z)_7U!uYp6}qS$E=D#9;{O^2#*Pd#DZ-8?bX~Crn)8PD(s@;cvw8@po)==ts9a8y9o%j-4*V@E!1FucrE`EZXbZ0K#7jvc@u6 ztRNj$r(;h~*Vkmh2127I2{dN2l_W-7J8>zE7IVr=SZ-`Wn}5@>(h5!u<1rWT+v$;X z)atDs4f`P^?hLr;La9FvaOlKo061uz33W=iu95kp_>#*w*-Zv#AeRqYc#Bl#nuJ!` zT{UbDGffe8x}6Y%#Ecu0)z8TEZuhUAnt$Q}?xD%7Lw1;jp=urWr zKmDd^7PdLBvZ1Bh*ASmO;(%#8bJcZNnk*T9+c4u#bfk+?*kcekxx~4F1 z*qHJu-6M9h(ZzYyIbHXiqx`DYhh4u$A--j>9r|Ab%Em3S3i@=Py3jnE_KeoVojAkA zJVmsjzK^_iN?dIj^Bjq7pD%t+)&4RjB1O4%-}yR~XQC06P?mrd#ODbCNu&a zHbXhau*KLq&kL2tpk(s?l30YF?PCAclGI&-+cNb7=tM_1g=~{mQZh5cl+0{aL@Ypo zw73g^XK7u*9r<1_?vGzUE!+BUCd3(EnFBAVG~msogZ#r z=A9s*iyYtI;vBKNjYrmZSM}{Lw5%$Al6>>vCgLwXt z^^p)IM^~p_lp6$e3MB0>NN@1o8qfsGaecu>|Ai+LEGoku!KnIXfYsBUnuq}LP^=Y2 zMFJ5MT64SBc7F46ONYyB*U>cJmlgyW6X4n(%iy{^dDXwAT>aB0urSd<=88_^r8}HM z>1q|JpZJ}O+?6;vR>6Le_;ad0b?xpqEI@$XgBZ5dhnwT&KU6IT{eiTc?zD_5`2=rx z5=cVw-;tJ(6_B;A63;yxa(t?f|JuZXavyPDWHnst_#!0%X=FT6SJjx7;Pm}Fz~yTo zRAZ$X8QxXD-x=trDrNf>OdRzQgti!OeOB_9`w^f}uoq@uN&*OcS5R+kTaJn+9(3lcKo_u~yex z^)%;iJx%{hnHbNYbBNrqJZD=e=nUX57!wj(njLJU&9g?hRH!R zPI2y)r~kxtiUv5TNiFVCT6_jvM^T2Tx(ok=HqNLr@lG@He%7*&tAY+!LciDP5)dZJ zlNzXN@>@Rq%ub#TZ6^?l%qNJmtA6^s-H@>pR6ZwI%x#50e~Ioj`LJ$l^&@Qr`dS&7 z6;$q&(nwcidi7}hD$*Jzt(E*<`K3K3>SKXcxaI3+(vZSL68e$y-@gNrW*2gDPphK; zNZQ>8d_MT7a+OIKy~|Mg_Tl1U=uS_kgE6tOTxdxtF;XrTW|L&6ugPCqV{L1KWEhQ? zQOTgh=rc2lp?n|*n;o&C`n28+WCZ0W+`r~$Ki9>_&=N`#dOVGYEqp#u4XtvRyvAyc z`*lp{-Vs)%JPE*RbqizVI+(z072C08Xe4)@jysjBQc5fEz{i=9Env7FF2+J+IY|%DKPV6i!byV6;gre1;{f zFO_B&C0BBO+4Wzbhefue){s@X*4mMI{$r(wWtL>;Pmd2ot}a&TLURhHwTg1(g3=Hf z|FM#L5;q^2r0>~=8^~*M!ICvT3t+b~??z zvj{y)9X;c+PWMX2G%|`^TSolTP#CpJ^h^JI-DONG*Qioy(cJxEv?qE?1z$C#;K!9i^i^JnxHyS`AVs4`p7Ed zZOKac9|?=nkpRX~^;0b$(Ot2$C^$23E9oh(&w?-E?ued2hn9+otc{Y%;beB`A0g5| zhtqtnYWmqii$qnm_Fc4Gpx*f8=RF44{&1&|!J^}@L?FjhqHJL55DQ14GPw)CY52rP zi45Lv#Sf1s&mS+5YO9P4A&J+|(C$ReZQQyk!|(}?da^ux8Q+ISSc5a-qF0q;-$2#G z=cbI~YPUo_h0B%NQK_QJIQ{5_&tDj_g1)%DhI!qq{hKOC3Uc?cZC&_>KntA>v zeM)z7w{!P%a20J@IJ#-w`M7FWynLKe;NkbI`>J};d!KH*m2VN3T|QU;uj02X*-F`9 z%gnyq3cFvLk(Qxsmm_g$`FNwOoZJ^Zo840j2Su+Ufn|dz1Dh#NrsdSzr_NxA86H%B(?2NX0gMf$105#U%y>I1Y6`9ZX)BISrsO`ljkH7Jy$w z-9@wPl1EpWKI6@UVCwGJf`kTrN)|&qYP&|KXf67H=-mD|7zz0zhpo9(;_%haW|HG| zPlxxcgAeJHSTKCsSBM zMci@IN0(csiRqU8(s`mWN-^7o@DlLXTfB8#dyAXsmS01&R9y0As{nb#JEwoMzXyz55|sNaKlt1^wgR@#a+ zG}jp6R_Wp-qz4(ySBVV%fvb{Le;N*LE5!zKk85e~co;5dv8=klR;%pu?z6QSS74&=ij%oK;S8;24_)7Ew8#`V(5yLfcwd!NO zJof_Dsb>mp>znO-%DKylG?8(`yI}ED5u-?x$c@+zY00d02HBFfk`V>Tu95i@=YpUrIKbXH zL%x#A9!A9~6CX>F@jg8^Eq3vEUE9%6o74L5B$gfFn15{i5%4mMq2)g!?D_!oN-@lN9k06@^ zFXU^P{pe(?Wrd#|VNy*rHaW|b8Ld+eN%0h|wH_^PJkj`-gWg?Izw)KJZByx7^vXGU zs^4j-(2m$*$!#fV7Ias?Gf<&jvMr=@!71lhs(x2d@~$3uBZYDuFK6341=8dovT7cE zsy$%Z(6E~Bn8SA*G}U7JR657XXO<$UdW!Aj&TqG^+cBc4^~2!Qb0KDF=cayX2fVi9 z`FEcFHqLOR%ihYXG)TvyAVI^t@>>kUtYqg$P3`5NFJb{TDkx0P7~=XYUA<}39|B0Y zih3tNzQi9E8{UturU;TPekw@z68aTYY`K7u+Ggc7i1M^ud2&||)1BHqZOL(U-!@%f z|J0(=;%CrBB{;gOCtJC_Q@HSBbR6vcr1PY> zh%4L~

      x`JxXsJIbAAiJ1#q|+W+d?eQF*(T32!8?W1q}url)Ic&9J0%HzUBZ%7Nc(r>hA~sSTR#n;BR&{jhyDX`e#gvJ+ zyu;@aB4nE5^_-GSt2Vky7IOMvtu<;T^ZV?#tCvjf$Pd@svi1VVsN3}COWK`=pv#>L zbC7Z@6Y%is;xKzx65@lyLcHtKjkuRkuB(j+1VXMgXR}g ztEcEGf6#@@f`5y&quxhBPFERE(U<(@m+!EH?(Z<_V(h=zl7PQ^){fM`9V-d(6(jD* z+i!!e;#0OlhTLN|`E&PnQ^2PL>v8LMd-^JDA5~-52`k5WB#xc^ruaLRxWW4|^Se$G z$Nvzf9{i)Nk+GwBcdR7I{#ED43mDa-^Wiy+D1W0rXP&ZrDztWUWL^s8ivjm`MT18Y zW5I*PvET`O34EVl*77f3;Y?I`ihJ;bdH%)Lc7aOufT3@{&$*`>vl*5W)FjmIZKt?T z)cqXkmqP4feqZ|KQ`{3wDe24Ca|JOiMeIj=?h5CxHiubzb?RJU1&UuObQ;#9t8Ma#Q_gHS(>3Ag zw%Q|gJS#&cfYCcEz^z+SBwBM-B-*_V0LR4$FnTW!z`3*oQf?Xo;qJ=;iLQ14rh7y{ zxpz$DoRC_dnSPZC;B2PmN0Y7g5S-2f(#K=JA;N9HqXOjprwiEikBA&!(dgS2((WVb zRPNJcovex1vW8CV+d+F+cwjqz+_0@>9-*FNZlS+gw%##Lv*+CV*3fZ5ZlOLW8)#pU zt@n>68}9_CxtjD_J8!VjWKE)=t#=4y_WXU~WKAxPEq}KT5Zl!X!1m7{z~;sWsCHHc zR9|ocqP&wM`}`Xt7n&0y7X)Pc$o#7#`R=~}oc?_UNZ+w^?=iRz+Y;tD4>@} zP%Z?R4+@MF?M4WGF!6cp71o-&4r8$-N|mEXcj(QfEMK{MUp2xG{uF{Hy7 zvTY1Otg(6zt)qbXV8Sv0H)AM%rwD%YVIa0pP(TluuLu0e7?NWQk*e9Zso6)W+2^Z) z=h)%>W!ZxlAmS> z$S4#9&+3CQWZW2HTeHtq!+;1QMY&<-xp^{yMf2UbbKGRx!F>Kgx&A`c9AQ4wP`A9= zeS9+I=rGh$Rl>GYB4v1LczWDe>G8kowI7{lGjoSDZI6 z-Wx2AnV97ynR6K}^#BYNA#+<|t%yEOodGllpD>Z?YTEJxa zZm{@n{2gF6Hn0pESjz;|t+I9>)eJH>2u2wM!y7mXZyK3j8JXV^(C;&u-vgOn0*N0h z&&?R$&59#T#}alw3Y{5-y2aEMcSGxXpmjq~E+{nYY5(U>vVTHTWdy46Uk|(q(8p9o zd$v^w@UUYNz5*EigfK$>5ENYf`>6SETZN~Pi9i#>X3M&_(JO z$~jdmA9XTWqB#{@AA%_T@U0{R6@$s-BgxWvtE+~Pt>J>m5!yuHr|&|x6%rRE=*e`p zWeOJ`#qxGkxQddc#|h;r8$=Doi>cEJ)sh^hZHCd`o(>mC?8wc+z2bd9oJ);!kI|)} z&6}68D+T;PkP{P@a7Zdr70lU7jWJJ|{(kY*k4}0PF&e9gR-`aNCbtwnnenKi{-Ol) z55ZB)n{Tb3YJ`pw#u6q(ZKbRj>x7Q-CND}Dk_ksdx8yrg^(e2U=w$;^^(k{AB(f$n zJ$>90dPfU7<=7G*IKTlx=Iq>}hy8M%H-A zri|+SKI-9g3G_@mLah>?_El<4CkpWBX4GS{Q$~!7i+=?dqQ|?7M(p<)o z*7Rez1~K)imNd)7qrpO%fSoCF>cl-HA8wrCg3%D6Oq`u5BO>+WA9up< z(ptzq?tt&o3-AyH9N;13@6vooKJ{;h3$lWRT1kfs^x!}^T(ArWis1smU?E+sov9pA z%2kw|sZ}^2?@V=wQnDakSbzF1eT(Q*k2PHI7$W40FkFBJ2Y5!iqLd(b8d_1xN_gQa z)QOt#0x*UP=HT(DJ5xaF#CdoG_He=2c(Mw8|p+)WS=Xn@6vw3LcT=91^aL*%$=!AQOXnK zivtwuM8h{1)*|1f(Sn6OzulRV7p3fgSBVJ@7&}um)QQ;e)WGl3)o?)lF71Tmb4B!B zS{j}g*>Hgu9EgVtZs9;RT!0fS^ng2DkO&8o;R0ni5DXVU;6OfHzy=4r;eu*70EY{l z-~g}685}5w3#j1mZnz*94)9(zf&;u)*Wm!~RS`Jg4;OU7D+k1FYFIQnnAsT}6KAG*dQUl8W6x^dRW>2(QsGjvTszVN|Wzq-ezA#8ivqNq`fgw>^} z*EPe_yzX7)yK_DKjV5r^`VwN-9BE)V)zdt}U8Tvn-s5HycDGXia#sUV;4#i!rQx|A z@@CWYMiWuD({;$YsxmJPhNm4bY~H6vZ`HWzN4FygtBvQa=W!sklCnmRuiJ6;O`8V} zOp^gxnQPqC*yHFBy6TJUSxyT3vDBsW&RI{S+o4Bpymla`r4f%8M>eyWrNVQ(>AD`} zhk>Dq9jlhEX6xjSp{hUq*S2*Z7k=8c&X0|GSPoaANe(#Jd}eUO9MzBgj{a@A*LQQg z@vR4@DxZs94XA0+b?!t)px=RJ-^kwQCa2NWEuDpG)#2|8Xm8`Rfw1?33|+s2%>%6? zrl)g8%iqT&j+o`%rL`~_+5ra|6~ly`uPa1w<76YOzSn=TU^u3CXfrw$j{2DRhQQ zf^V{%1dNZ>(Z*Rj!uu6ge$X#(HF5`eRh#nTWR&vT|32i=bN8oM?E1-4!PynvuQEnt zzxdAWw-c=neqBUEx0eZSzkO*GZe3Ay!A}jRyn9?&k$L^88p{}R;%@fP1tXd>R=p`a_h7^{8cC&(VbKu1(jC9a~ zcVL5arH^xUh2-mt3{pl0IU$2`5kU}Ska#dSLlnXys?0cfi92~oH#viJaEN{754gfY z@O4D-Ekgv6ibBprA!_haEvJa=Y))z#Gh(jCxS4qxhgx;fn2CRH^ZiZ`m196?;_BQn z2%f0YW;p)s^s9Rx*u77^;l{Y3hIRLZarcCEw}T|Cg&@3*m@9~o>)pLi*u9U~ZAG_H zhjZS7d;S;MpBGV>4^bE;IFZ#FdyvtNNcc(|;rLQ4KTjK_9f9iDzY4{_5mA^8S-3VB!WNuZHKc^lPalbp zJ01-2?JmaIzz5usBlzng3M(oFLkzq36}qK^PO^X~H$sRvLZ~+fU-lF_Mv5{S#(R;j zEbc0ud71Nn702dTCFKoqU0rcsnFDJ9KtBBj3y325{EoSg4eM?6aY{z&=*MRJAwr|Bk{!mfUL-T zJGrj7*{}3X4{YoYY-|n|9S&MXCe_RjKJi_}@m|fcUsbSQ&2nAA*sr*`ubylUNNo@P z1(_c?9rz4RUMA;RwdOJOOu7~4?JJ5ySj8bK;t+0e2xcUBGZIV%04V}M(pVrIGT&(| z5GDX5CJvz#R~8h9=!z?|h{L1*06@iLzI!CTo!nRY_6MXE2c+f)84d?N{gYvI+Zx+b zGne4cbf1#Ht zwN~-9`#NS2;z4lbAlPvb4A&BM2EhY^U~)5M12bh#C_cPA%Y#MJgACgP0rLZa@ySbY z9>e;i+R!A|;G|n;UU5bqgZ)9qhl5Z1^vkAow8$BYAtht5664>-45^=>n+iQjUw)ew zM_GS0oK@IW>VyA$f4dfo)@R05gx8FXD|~>6P600h%^7`FISE0;(Y~C~oM|943A<7K z?_Z_YDiw;9qZB-Z@g+(Lm4un4E)PClf|t8MSeIF86%HZbut zui3KV+?7aGDzf(B`SS<)RTKBx31#Y4{W~=Zoa*K19_4uTCgt&K^+o^JIbk|=@UX_? z_YxHJ*U6|x-S65e&R?iLYY_dy5rhR9ySyU*$9~#j8`rr;j)0H_Kk@f}x1at`NFdZC zB_;mLOuvZkoi?z@cg}Sg^e2~&fh(Ma8QlckWE9CH%3c&HB)kZt3Y`WCnEd?>isblU zXP85Su0^eeUIR0uZYgSS=k}T=ORTP)gGFtnu3p#c7`a1NlT+96Lo@5yBQs=72r`y^ zKi*IYH`3bPJ{a27MW`xAW$x(6Yp$k- zyc2?4xgkRJJv|-3&Buq};81xkl#9kDB1mN@FOJzBR*CkGla+yrW)!H0>uUWf79J^w zleg`5`L4CS6eTYThgY3(QmO==8#i*p-6+fLnvuqmyV`2PKuaN2zKVuW|) zK&|&%(3gU5ajBc%vVZCY56>wwz4LkMR*{gTAy-Mcz`$+z?eigDsh%QY{p_;ODAnN2 z>r!OHd9FPu`oMZq`f4Zpy+pO0e(X<@L+P>9mG}J>PFu?}XiD#Si30nH_6cb`#V>XH z!8U@?!ECsq)NO@tLgwqN-Z5+;eH+ct4Q(D&BzxENx}x*36zOZrjNGqGUZ?QS=Sw=) z2MF$KS9k||EM$4hh9a?^hQBD5cGJg1+kV93Pz%#lQEUw<=7ii?WZm6Nw(v~`KGl<2 zcllo;TL;}W@J-SvG>J!{&shEHi($d})t9ueE;@8BD($Y{@=wfN$oGcAJ?7i-H>C(Q ztNfWVMV$PZTDP-bZiPqRCh&{LCHA+gJHoDOa^AZ3njD}y2xXQ0z?V0= z6rcEO^l#l+zMZ>1v3ritHNCq*)8RXJkjJTkdn|lQ5DP4%u_bs|1mc#V=l$e8)(Tzk(sZ1{}$?oR- zB-+l%I90@fK#FjVd7z|0@YZDZ@2HWPyZgh(IB>i3C#mY?2Al$AgL|NvDW{alSn5&{ zNnPNraGXHEwOw5NIC(_vfQLMXXCF9##BXnDVY9O<{P6|I`lU}YSYB3c{R>$&zA#(S zS$qpUVJ4(k72_V#jKKp4J+NcV-AwzhN?y?dpM@udmyAATTNBde@wFfIP57{Fv za}Afr`z$|I8-IPddwTlV^r!VH;qdZoZ~1FygNE-OQAG9gQ(30ub#xu^s;8c$gK2<= zhv{njk#6AB_RSx`QB;i|8sik|+B!NMO%@mXBYkh!v~%D_@rh zLxK!cgdT5VT<6I({tjiUE=)WY4HlS3 zsI^}5W92cvZrc=P4k@qlXwvgzOy%XnOy$hVueW^J6fc=eM;9@zpO=w)iBQ^>E)xzJ6hcxsx zb!4b1t+oNaw*!}TCtA!rw*IhRsNIq=?hEes25)ECGn6VDanU<*vE`*Od0!`I#Zjbd z9At-MgsS6!ZXSn^cVmDJWS&s3K8V0x15SA+Bs1kHo_3j38 zB`TR74z@HG)QG7YO&6KB5wXICR@)ul`^55ml*M>}tS6HCO5<#hf$eFd`4VoPb|2A1qX(LuPW_fpyF51K? zy>l50+J3LCbM|}~R|{#jEmL<(4Jvstz*teRC%>)R&MVC56p?8SeZC%(xs|Nl6UR{4 z;{pQ;RjRo$F!pHcx$vtwTjfHx-n9f)u7C>CmM!XCgW@y;hbNE3kHyZYbrU10B#&iZ zWu3)I5xkV6tvmb$0FOG@D_)o|5faz8kBL&`eJ?3f#odaQ zM26m5tvB*JuUoK$$&Fv?hjRaw=m1<9fTibx{fRV4~J$gOGOE_y6i06Sz-Iam-%}FQU z3id^m5N}!g;Nds$@SD?}hb?FtTV$Btvy3y}GU*UoV0O&5Ru>7P<8?tdivv<~?J=68 ztyJjq5{BneV2w0(aN;tmPhLjbSH|jSOua4Coigjw|0xlveAA)Y3(`T0-SpnI*rteC09y^1x+_Lu_$@g2(hVFM7)+meuPgKKkyHTyp25m8Zn`?rrh+wa+AchIAw!nmE+KYBObaCpA1eNIk_MwyvRJv}o`qeBB(7Di>`Cg2p}#G9tVM+UPHdVfDc1b^b(SgN1G#6<4( zd5XwI(*pDHc=yVoa?Wt};0q+~2>lEj$EZ;{#5l)V!WQzqexpni_O5pssrtNo##+ex z?J)|aWMuIE_1Ew+&y$`MZKv~($r0?Dh?-j=`_tGP85KC*l%yEo6(9F~L`r{Q#I<&J zufaN7>GSL#NMM!7keW+6h!TQwWe#pq>NK%X2^JdUI%%V{f$P0rVc~mDGw9oMeX59$ zs~m_z1J}sP?6f^@AeV4W+~2`))T8@$M*u#HY9CaX6kesBIAB zTt;&HDV(FucjR)2oNZ3);xacDUNxg7w01055|OxVc2sJRj?uu#Uod1 zY@`F94!aOL?a&(W5su@KnN*BF#V4SA5Q4fTB6l8td((=%CWm0pi)}9*LTKln#d$*S z&IX?72BG8m*jve5(IiEA&|SD=Py8@DFm|M{Kqtz_7Ya_9^- z0eOy0&A#a*t(RwMmQyyW$p)@u$SN^r6~}(hXZ#+yh#aDb=}&$?%4W~=*$Fd2ZzfseWl*b<4;M2K@XqPa7Amr0wqkPc7)qF;T%>Y)IL_sf~G4hP%h)4Ivzq zVk0_!9@Fj8rTXc82qWbK-0?wa53HR`B$7WB=zz6AEXfC>;r#V2Iu z@6nqPn8aaz(ZoFwdzj~L;K@T0Z$Fz2gTgQt%V0t)Q}wxq&*qPR>XKMoUB9!qxh2K7 z3z=VvN7_^Ux$N*aCk`j3ZW}fVhb1Q?{E?T(Pcl$Ti6s9aj!o-&AwEb`Or4J_AUTzi z#MMBDEnrb3JFKIflAx~{uP?Q;7nLCGD7GW9Lo}cuc3O{zlHh`~Ge2)momkl>^0>Pj zr6_7BHcPidI6y?}H-=a~ic&o;F6=~j|AA|XrpsMPd1ql3 zXOMr5Xizcd9gfmBLz1SNz_){!MC^e}aW^C)eo9Vp)s>LmH@yGZvAK7LUkC)S=T!y5 zwU5OO)&pJ(<`$A54wq^{>>1W}Nd*ne7xpte9o-Bpd4AWic| zT4j7%<>#2vz)mTj2a44;f`VbQJNNGzuLChx(PiYsQU21{_ z7K+$pQBQQaE!W@q61z&`(GywN38uVIjr)x{g5Y?<5ZWKeo^$-?Iv72J^kD@ln4WXq z=Q{ME@rsDj?{Q#d=o@tkNMuZ?c8rLzN+{JisDT0$70qudY#6oOf!-(XH92@STcyT| zGu`VA29jy{m^qu%JYrZp|PtR42{e);9R>w@0jf%3tPZ*K{Ld&+;?zZ{* zHetrx*>pd&&R&QgKp(ozjgsB(v%#E&pcEzx7YyT>3zj4fU6>Cwnhz1olQ%x$G4{ah zxo9vB`OLg`gK1xjYHv!TZN;K3Yw*?!r_U@0k2g zR3C_*kCoYHj_vlf#wkAe|NHcMUwUr`?M@|&d0AfPTUj^ld|Z~Iz`P4c4_J6wiF;Z- zdtA9~Sij}N?_}SU$L}=7r5G!R_@_VhUIuL38e9h)5W93HK7HZ1tGWw3yA9ZWgtGb5 z_dmXD5TB6xzg`7w-9Go-N_Ty`3K+p?KYV8xeG9^`;@b4Zx6EW84JT7*o(j);-yyqp zl4O|VX;UP5q2$^YWr>U;V9- zyP=1ML4c0Nvxh}m?49sMTNlmTeX_StlCpP7z^1T8YecmkzmTfqtq1RO??R5^0`$p( zJ&15DcbQqyXmO0vLQ~k}a{>>~r2$&*j$bYtqerz?F7U0;*=p^m0>UYpcsr@E4V&DB z3&Rk3ZsvKrRz~Jh*Id>^=tBKM+pACYyx}PeSBQs_x!9p1<~-$StK!MmvooxDjP-%n zdkgAw_jCD^N41*2%Kj$8BA1V)5T6EV|0y=V6wA`}lj|eH6TG*nH-5V=ms6=aM^A=M zQ|13CMaVXUnZQM?uGjKIr&zI|1+ ze!q`AxqO-F?O8W8{uKU>%U*f@r=Qm7Zp7No2I-fsqVFN`-?;1e?&dC;ja&CiMYlSK z|CT;?4~;6G5Wn?O&W1OifoZI;NN2P3cdg%__x6UFgwYixcONgWFdw4&rN`ytabgoc zuAZ=bO9b*;ReNdGKF=~K#^WR=W^W6#@#GFkN6bDAFD%ab8lAqb_TzWH(R=K$e+;Uh z#~Y|xUReipad!=!MH(&1Mw~L`VhgYHtp}8ba@&1=g6Q^gQEZrWtkF1n^Ak+XuWjJ%3(^YK z=ng#7ptDkRgUr@JKgFlY^?`ItN`FC;qqfn<8V@(0(3Whix}+es+v+cyogzVkEp3k5 zGnYmSXG7@gox?g`vtq4$7(2Z+zh$ZjF{vvugW;r5F;)@f%du7{U*`JaOv)lS^jCXG z^72V(=a>gSY787`Eyhh9k(B zXlRRQ=5&o=Ms-bY7ULUUTg_;qpbzG8k#EMk9jAT&77JJ(|ZIoZi!<4+- zm(#M`caWSXlS7M#eXkUa^it#VHvcu#;J>m=mr&q@_OBZ*qB73G=rXQtI*;$QGL@#; z6&EDMCApkL<)v{SY&o{o2}k)AK@fg}2=yaqjR={0!LPHgk@CQ4z}#u`q$!v zKDM8>{Tt%{d1?%MM~xU)sArMD-DbvVFhl$y8vUansDf4B7^p$GUh1W+a zDZC}RDZFJL=p9s*GwXFaY^RADRtwQ)N9hBM6gdvjjwn+COO_OTzjhc;i`!Ppim09_ z_-X^V58n~mPAAS0rBG^&6b{W^(>rMRDK7nf$f`F0@YqCsc9`Bi+NXb(i03&hE-RN+ zE-_C5tFvWZrGB=UhRoWh1Xf{ZUDapWPjekvrhqk)=%2sXqOm5v8NcS>d-%{O8&h1(+VjJU>qtmDy7P}iYa41)R?nZ zEnhO54!o|HMN{`mSyE4xMVnJr_*`hnby)LID=VGKepuo=RA_d@l9EtfN1yZ6gg!?d z=cl_I1=nFc&~%zq!+u)FW2Ml|wo|sc6hPlm6=*k2W($^eDkD?$mA~dabl@2;^inUE z?b3`@c!>8MD_k#2pzkO*`OWUUTCMhCjHeiR5uSuG}^3I%4OE z(EV)ObR;aI%qG(rBS2BrO1Wc`4PQi7)9Ns;n90(-B;)L2)3UHo=L82ikZXCGev6vU z`bMMfDI}VN4Q4mBU>?sYbf{O7L8|9!oTXv2wYVaOPEIlQl_lROr)cb=Wb?vRK)aC7I@)6z@6prApLa$@X1xDkAMHerFt~OD{4=ns7p?e>5|< z=opz}IXTd0j4%;x;Mg^@a32^hDrD79Ns>6+!dF4IU1on^Q}*Ny;zl9AF^@b!vDZo) z9kiUXhNQN76|4#}vx2h?9aAO6d+2>x_XQ3LNYJ;=_-m0~ zT4~c6rB{u$3gI{?K3eY!m&JuF?-l_BpBgzTH}VE>MRTx=;AI*)G7>H9GL#gV4UuLhjjl~}9=Wpa_uW09Zx3Hd@In_xr_cC^x>vb9y z)Jl_ERc36${oeRk`%M|CUZn;2LB%V{$frrs*kPJDS5t0NFA?XgEYsf0FgsJFIM!Gr zbBoC6V^lfU%M@SUkZjdBm!<2!XnqxPryL&4n6g}tTfI13V{8dY^vqAX!j@z7F`u97 ztxC}5U?@T}cVFr)b;wLq3Fl_WT&|~|_tz3IznXg-JT5J4+%aH0MZ673V#HRA1XScK z*OLhqnE53VjZ5OMsM6xn(&J>X+-!vS%M>%E||X#;PR3oB@5dE9-MLJMT%}Y0aFc_xnVQmEqup$KXc5 z&I2}(@$3*>-g%V-WUO|5AHAOhK56{j(3}L;u0NePqdu=}zG9hWg6r0w=+~XzJ)S0k z?wp4g!6G0W_%|Yw+Xt$HYTUioyEb0Xz)TJ}JOg}Pl>`1LbyaZ#a6x{4arnFOkO4OQ zxYEP9eaN^0Q1E~TbPlRdKd#Pmz}0-90p4frw@UD~!%p>~&1)h?B-pX;3MU&E^v(X= zw*K9)l>nf^f&)M>B)G?mDJ>Dw7*IXyn=8o@OmTv>VOmH?I=->XUpz&Lx0zZg76Rh-6b?lk`y!oB1|CwIM z{=LfeUB2esFys!vGc}l4dd@{ z02N@pwmU!p4=CII-NorWtumb7%d%g~drzUV>oI&DU|ah<+A6={EWaUJ&g_`kwWJQb z3Y&E;nFn+o-g++|)B9N7-7RZ+573n}ciG+D8CG_!e=4tj4V(v@H$I1{$ZznKSFfJl zzV#o|*Hv_d*gxCWJ$uB;Z;%yVn3ppXH$VT>_TEEM2O4X7ccQ8T6?nb(ev5c7@^}xh z6<6b8&OJyKSM!|T-Uab^n?%hn5}e)+pcYqaoZlwiWOU&k-D2rxbZt}112wmAu~ss> zT6&JcEsLw&MvuauM7)hYifr8uRLTQeSC8m@&Tj{>i zc;$gtuEo`lt4HB8IbG2H&l3FJ0|0s8G!x{NZr@}`eYo-(`Y zAV>7XADP%6(#~!NmUFt2GrRPD6*Jo+9rJ%^R}=A$=Jj?6o&}tu9lzAh0tE2p9?TUt zNcg?4%!-*UGrHI|j!wjRy*sx)TDN(dc%Si{G)OK2`gq_wb3e?Z4R#X(^v7<8vv92yN7QM7{~+K zBRr_q*?+~#hI>0Bz6J1t96bMS2=jqVsy<{PJ@YdhUeHehRbk&MzdWz>Jke)6zk66r z0v)Pv7H363zhK{VML=!FmD zstMZTJ*j?O{je7M_b!9C0os#l!lT#Btyk}rC(q0~K-bypT?V*X6J(O|p{@4aF!{q? zmY(VJGr=|QqtzK;q>q<^=K|1u{pls^4gmLIn*=A-xOQ)ep_3b6UeGTMkcrvBMRo-k zV)Zs4byDp$^o(@$`ZoR?Ubz5#9e$=4{rJlI4GX6N>^Acpo}3A8)&_}}-T|8G-^1t* z>;Nas0e1kZkA?y>z|A}$g%9%uerSna0P@Z~)3@`3Kt^v^ybHi5{sTLlgA3+Numo4u zM<#62mi*?Mx_+uHEHZ5$Hy1vo{OjIq@P7MZ6AHpj% zeT`%t)R^ywih3-Kh#IKyC3XF)Tnvp{N2tC7m_ZqN{ij+Cjn`QO26$dy@j?s@1{bLC z-kff;%xpvK{U>B${d3k-M6Bz89%YCSa1crY{Fxbs- zu zAIcLjG~P!MB7i);S1UQ)KGZBOe7+_D7#h30z9w}T8hVaUJK`T|x)B(Hd3|d?L;w*H zUt=*eRQY}PMsm6ZKbnE}p|JBqObrGaR~nCqfnmtc@8f=3@z&SyJ7SV;C=py zo(lF2#rZwV@ql^V;p0)v1Z!NpCX(=i_D)1VK$rJ0>jUN}m^Y&H*F><(yY$&>;!q}- z?6CS2>-M2o1O&Qx#S#|*wZp!7&py!yee`!^2i1hzuZbYkXHSMhJJvT{+%GLV7otJH z23(&`0nb-mlc&n2*FioXD+chP&C@_;60kaX53p|igk`7c)5)3yT+)9^Y}W7@uv^-M zdJr!6{s;dbPFHtg*ey7epFRci|4&X={~OSX|8Tnce*@(5-`On+!NI|a!ud$RnW9Xv zNWgKWk9Ult^Gm?>z2-T+6}--L?2hjCZ^vb*zU}6X`o(#@&2`+4cgz{SedjhaGLnhE z%>i)&?w#x&9nQ(!@|USrk@sHNm;5wK-|4+Zo{|4Dg#lZTv0UOKz<&&oV;z|Jc z_HJC+VC8ONCzhcGqhyqR~mxK=Sm9{R+_1Y?rFC>K$z-hY!L`2jM{#o!wr(?At$q8uqkXp| zzBqT&`jkqN^`6@z@9KghuO5a>XT6$zif`e8AC^wpJcdc*^ETIKZAFcoAfg3i5#_)>sK8-DGu7)e?vxhk;j7Jqw$$>z1{gbx{QVFOe0_a z#4}E$C-KW30PTNs@e0EF-#`qfIYR^X zjW~by8rB7MUgg)_IAcYxNQK8eK;)b37ML`T1{#zK=DQl|HSEv2ijfy_bK@Njj>}e> zk{)IUd%vUoG^uY(VYC{ENYcr3ohL@C-UHfN(Ew6*))!^9vx*F}x$FCWzA;CJEivCu zyQ#wW1$X`1(oN6x=djuSS&gOS_}l$j;RB%-@Dws|T{^>I+W<@Xkiyfr39+cxz@(Uk z%n)%bG3Cm6C39J-5w0M1N zU8FndY+ZYO&l(TIqay2PqMp``iNJZ3hq{}wxEuj1CEcvZgwLE6_8jiyY9VKNfuNRW*fxQhZ;0=857p&rZM1(+ckE{&<7)mMy%uzlZ#}4 zMUMPtu2zd>L-%H5ZRDI81|3p@JCLk;YuFh^JzcepXRUh0(^Zj&rirzKtec|38k7-s z##6RkK3wjGc{7m`IH1ptiJN6+j~j-}BpSK}8?=Lrgd9#PyKP1)%PPC`LOPzXRg4V& zvgP^c{w3J$jzu)g09#n!Ep{synVJ1HWQ(GYHYhtFW-#S7cmB{vlxi2iqO~IcG##EuZ~$*16o} zcd*&8+2dOed8yj53A#CTiSif81@^Hr&qKX_i5sUD`ell+rJa%y0h8=-WxLI8jB4HL zOW$6AdSqvQ6mxDq`jQnqPTcS~G!dcV=1jmMwo{2=3HEZh07E> zziPzl8~v#!cz4F1_WoI`dV4}QuILUJ*n z(elbwa=t79wNxt}`#8pu(!!>oR4o!o2#7M!$Viiugum`M|im!^_4_$`f;Z1axyZE!yU`|8!)7=4#&-UO*0$evz) zM8Opp*qRo_ofy!XRGIkp^Om4u52>b74f4T5I)eN4-cpE>gB)r^Pj1*&i{PzkZhi*s*OqkLX%SKc%iKqGz?|G@p3d$dz$H`wu7i-(B3t zUu2Q|RZ7gv!!xgwmTgw%dg}U1@FU4*yZx2URJ-%lhQF;N-dB6{>y5ajLR`A*Bs7s5 zQHyx;>=~sxIX+kLk&T}(G(8xE+)=7!N@=fwKO-7vfAV(*$S+KOIg2RDZuz3whCBiq z02QX$W+vPAm)m4ZHq#EY-waXS)_Ohs8>`S)X)G+E!O*}V^$>o-w3EOj-Jp92`1hY9 zkV;i{Y|;haX^&gyk~!7Qw(xW4AHto4JJbI*savbs(1zl&%f^bZ0rwfE`TK;gq0x!^NC!s)FN z)MDqB%|F*|&rC(GM4J`mB**rD%B#x5@i_&ymvmjY=6WVqokfZ6M0FPsPSixGk9qF| zuoMRC%?LM-4$qG|xK>v<-KIaIo~kXZ1(UCL{A6nOJYQ}38%};ZI8$G1yzp83Ns}gZ zG-#NNSgxPF)?xR&F|Hw&kc>CN$KS1YJ9LsPu#+zD$jQlofwO({)5YOWuB0QGyW*M0 zP&)yxB)yamuwG@OSvNeH(PUyDJOz2a?vx0VDQYT}BR3bzeF-P3ptagi=d(!RJ{clr zevD~ZxZuHAD^^1JK8*6;?p_Uv76h}RvS=T0Mz=JxUuKP3t~r$8twX8J4(f8JTSG%N z_!8s_f2NkI;tQLHP-kzlMFgAXTM&K^&z{_d)H_w1I@XXiDcwW ziwiYJ%5KSW&-G8nYS`+94r^(S7^NB4j|a&@ImL7;LoJ`|tB}AJ`x59VQXj+v&S} z&H0#a2NlFRb9u*Hderly@;A!+JHc$Ijhy;QpRbk;iqJD$Yqr;y`K_QI@u8Uu>wgq7 zz*x|Hn{k~#5>N3#6$7;SZ4v{~w+bSCIU@f84ZQYR^?Zs1wyhtv2!t_Szcg{AO#?BMsIH(Is5J zdHIx!tSSEV`xW^M9w(AZyT0p}1-tssWPTLG>}ZcHIsT$GMD&M(j}|C z`7a1A&H4{tT&gF|$qj`^KF9g1yF_~XtuaHO{RGYHoyF$j1ElcXd`@7rnISd$1lCQl zAyjduaoAZK5TQ@2sW_LcjU7KhQb@d?P4kk9SOyiZsAJN>LxR2n(tU*f)bc4W*<`#^jMMdN z7RIT2kIR>)SySe(4zauFBPLlJNPe9(5E;Kt>v}-QAz7=mW8}d@n0`Bqr&`UTbyIrC z2?e*Lhnr73tfy`bH_VDrJ$Gn}xMO-j^1(xqz8%7SlfI`-Q*;PFg{#!FyUz=Z=dT)9 z*cH3_hY;NFcocZsPo30|&poJ!F2kl57*~IGNk>?wF1&k$zMhKqpst*L`KA=76vvvi z@vTP!mY)v7nqK$<{zjhqJ$3hq2*+Bs2E#A2VTqP(n<84W$la$Hh5+Z3yhnb;+Ajnz zjzTKzfSVM8*Fy!HUbm!4_Mh(w0dT#aHv^Ov&b7b3@H@{QSrS`eZ6yEmW&K!M zMT*#B`VmA`qF_Dx7YVm(8+fiXFN_*D{5;$`!i8Zk{1_j6&9l-2h5Nbse2bKu6ifb_qwW5s!tA|>}w}_&VY?Sa{cCY8E9i^b6d-SO*I(P`(mJ5n*R}YT&!GefExBY* z?aU5n6z949C?8rv`o$@2RksJjcI|Yw4bizt9pc5WxhWkSLOm%QX2q|QV_NV+Wu$e= zB;QRb&ujY&DVbC#K$@ZH@h#No4-Jy<`;@jK+gVbpH)Kzqqz)HSI`Z3k*w?=nZ@GH# zAs^;USUiJ~MC;(4vIKJn zLSCgZ&7v(?bKHy%me{o;sI%7G-!Jv@x@nBlM)6;@-MTIFDGj{gDyA$nQ)d6nCnp6( z1}~O-xoap|T}F$0{cGIhuYP2r>6*gaI3Rd>m+9dyf1IT4Qo!6OCV1+ieVnB0ipJV# z*iK&>e#l1ZLKtwBxRRsmDvk8|SGvhx_&A8Q@hj}&R-y~c@EAqk#X8{n^D1+7_yGrY zSagU)r_^Vj(*atebrg@xUT5sDP6HaA7+=l?WuOvsc!hDr|88@*OiR9F-Ey?!8`EK zvAvS}=#r!XF2>xL4ZFY_c(4w=^VGQ#%zeyK^;-E*M;>;eG{BwrNK9Yrqm8w}HSiF# z?b*`*Y@_Oxj=5nv&|KL6T&d!9g0)ezy`pINcCO;}K;H$Ax#3T_U?+LCR{40YX`Im+MEnS1>ou!Y)t;7C+i;tL`N?;2OT&-q`=liMfG4(5!y7rfT^1jJY8_ z&@6pb$yDp(Jkb2}>W-#sedZXTZC6fTWjmm@(&EwAL1GxVXt%#>srPU_0r#7$8gys+ zIguOuvb_c?^zOaP!qekFqz674|D_``n;6{!UBpi^-3v)z=M0-7VbN{%5<^SZ`a6fS zgvr7-YjgahQ$S|jHg;_an_jAEaBSkP1q6`)~hU=X{F!D+^QW`{*vj@R~)_x7_q8PN-z-3#%|8R=9~ zGWZP(>^~N*MKmwNtr1!U<&gnHM&5DJZhb{Vw{>Z3oO~wb%y3<%XafHKe6DA_mX_rQ(8|p4M9$RO}PjOmgrkD$aiJkM%wXvgm@TTiP5>A zRWV7F^_muHnpC#WR`h%H)4RjAZJ_ugj_slCvwWFtl~mH#;ET#Jz-^ce4|F$r=0x;g z;Mwkz0HOvDbtPJlR8BM{X|!Hw|nuSTEQ}uHN1Kq;>i!>-tlXe*#Q$ zcBI{!ra4l0VopO{Z*kjQ%4zaFZ<$A=nxLFx>cU{~8$_!nQi+yJ%w+Pori#iIBC_ko zHWSE?s*R?X+Q1IkpRJtX$Xuupthi1tSZf|XN0q^Zmr{jo<>Rsq3-rcHx6k=Yl{n$hXu7jnMe+Oh)y41`I;G@4ikt~&eN;M!(1O{iSFiIr0i&eTLR%Wg8!c`8KIg#m#9 z#)Bdf=FNAN>`bmhZTB#C*D$(3ZB}#eBf?_4F6*0C*74j__O}Fj_3~4^kow|nW8hw` zcYB(4Gh)%(fi%+VMZPIy#aF2njwIWV)@cXth2S$tD5eia> zi>51!*F`f35}L#vejk!yKQ7IHF(0dWlaPV1{2}K{8q1G*FPnqU?w-Ai>I3;vSb*mQl2#rHQfnkp1>x-r^G4YSk_ zgisg+`4lk|su6NLw(kWQXUJ%&qU6>#CF(hDD@2w6kHR#1V&9aVXd5@I<*}(UipfYR5Ah z0k0!HT|r8!Hc;IcWKuC@iyTar+pj~wYo-ki&{T7F-y2N}YYXJ68!1Q|4J!fh~S1TV+q5c->vCTM*Yl|5~W_9%__kmr99FE?y z5;Vo0&NA}bzVDhei!3@4t_rmZB`Lr^b|3x3^VfqaU9UksFD_FgXLB_xd1&AXzMM5Z ze$Vt>s%rcfs&PH`7BdOwKFj)V(OeD1s_`LPZllYhTU6{pa*b&x)CDOihRR_hT=*D~ zoXH$wE98+U1pZfI5C*9%+Xf1E>%H72?56-f@(Hc4vM}X;H^gMBgX#HZPLJ>K+I z)u;zq8eb3cYyTmB{xa57B{PZ(V5h+JBF zQ2cpOKJBa=IVG}Vt3`+y>V)g;7dq!zOa$)4Rtpx!;eyr%#Si+&9ZGB|RY?Yy*yN;E zb9_eEX{S&;Ra%F;BYfO}a6Op5ZOY8Bed>z--D?D;1n+iQ*Y+u&4!@=hB?^ zjhrv3tg*cRaZ$EW#^beRy;^uf=e zt8vio#{>QjkG3M7yIh%&*kxXN_B1*I&!3RkF}N`&^gI%7wT2i^WR&-*%gg`N%{HoF z(FbXsz=e0#V1P&^*wu|l*?yQ^rl-c$EmPTH)PRaU3bmRFOAeJy)4|2fS=7ioGZ%ga zjg!I~wQ1zhR3OF1OGI8mpUo6&7Xm#ZisnWH%ZpmRFT0ol%bTV)JIh)5JvdW6w$Vv# z>eAHIO*d$)Hgy|s{apgIz^zi7>$w&b^vlts(TjYx+o0;252bkPoQ3V|vvn=|?7|Ys zo6jjrI3YydQtM*iTrZqYcNpn!P{g0DZVOwjs9K_(-R^HJ8Ao{-JG(!ShMx+;_y$Kl zyBHrH(Ycr$rY9A*FDv-0-CF3D*{MT&Y5`o$PhP#Xn)4J+EIqY~WlkFWE7?(-Y{TZ; zR{wdQxb1Fv7U!b00oV!kbfY$w)CI9WUm+E@YeRtHLQoPbz;8>dlc_H z6y0Hznry>d4YevPnVS^}i%vHRfpw>6g~0yo-af^7zrB6rrWb|4li^-I5_>X#W)6M; z8c>X{X$rzoj6r(APV{Y1#2Z1qo@Ko6_n*|T^-uMf-k(kBpApBmNQYZH@Oc%c zOTFM<*Wb zhkNRPKJS!hR)3*ncAjpI`ZT>h>>?>?o&2=I z55a1&tnu=gVtdeTX;{{0dMw>9Py$$Zs<#y8iVXxDbjyfo9|I&~YDcW}VN+C6Z8uW3 z1YeEHL&LwLLdGeJ-xq1x2*ogUVe>k$mx>PA?9=itL}aHKzgHbH#V9&qm;)L}D%5TT zcrpctox}8CPp~@SFOkk@?St|bds4&nV9c(rh9f(0-MP>no@%X_Fea65eIdDrmRCAa zUov$_GluE|v*|oEUh$HVgb%KInK1>KvZm55WyBRiz{ORIw8*6 zRN`o1;5~$1aRKEP+_8Qc%r$zwFz0QPuqq5@fK#>`EOh`qR_AxU!b6`cSFf;3Pa(~g zG-^bUVuN@`&`N;t_S3)wA!gOyPXna=P|!BR)|Ae7>w%;J@TKxrH4oJlpB~d|WO~5K zlg8GCSCYNI%C$rm^J>3JKzgfkOW^MS8$z5WdJowSwP``aG1N-jvzw9k@WglM$y=|;U6t4snT zN?Wv9R05GMAyYISKrigsfrHD1kg4DPmr#04SK=L^+cM+5V`1yqKm%R3L0-~c$ob!!cyt2dgXvZ5?vV`RZ3EZ zhwjI;_0Xd1%B|cQn_xcG_cY=xpppKpxpkMbR zFgYpz>4r58GwQGU5|ZE)geaQm%eADJ=DM1v>zqu`bp(OhoiQRq_sBPZh{a)zmFm&E z?;pSsjCE~I@WeMMC|goiw@NB3MC6R~P}i;0cr7b(o!T}lbHB2dpSKi&YurSD1(s~B zeuqwqI%L0lX9S~Ns6Ey-iUva);*A&-et<2w)4J3xCZ`Ch_W7gs8F`psQB&`o(Sfu0 zZ8B(&m^O-x`4Uq2kz^^gNwYAwy7Sd1?lR3MPxkF^1X)sJY{zY!`wQveL1#G0WfD9& zo#}B!-fP@#YzdJO;fduEiK=Jo_Hr*(7K=maMQZFipWz9cv#NRI+S_#I1vl8Pdm1vl zSYi?CYr8dyM#<2&Y)bGAGYPE;d0qUO|&4laxZBPo4&Ex)v(XrL2>%)dRb8? z%4XMd%^0VT3BThAs#G`ys()+i^sx_T+Lt;-Mz149>s@Ew41bgZ+zOo*$YUxp*3~cN> zqF2%8+z=}M73tXn-CB&byo+ep>wwo@BN{aNcd91c;1j=zz);S2+MVxBBW}=j5lXkC zxVx5)Y^gIwd?Fn&vA^bbj8 z81h6u;F`wc8gT_h;|fU``sJJ9hNT#|WpA3x1a79U!2uN$95Kv6-DDJFm775+y|eW+ZS%Z zp8Tk>%{McT3s@XEMzj1hB8!BSdgwjp1N9FK~WseEk>A_6!#= z8byluPDnh7S}7KgKiaLFe%jr~jA?RYnoL=X^*23}?^X@rgb?N8EH_q=Udccauf@TP zs$di@5sJ^vtjOEt5$!*ww9{=rh(kj@$;=2Eh2coL0ovFod^Z!1hjZ8++QB`{x znqqM^JxBHzii<~z`CxCdhT>wxru`yOml83i5Br5Yhewo!20t~{r0}f#ELGf76LEjp z_9gGkv-7O;%+AiUbILJT^Y1@lq45jXq=T&A7wiWa7nx@7%XOl(iN)*e>6cR(e?V<~ zk^uOVGFbriVVMXZvdxm6_V-{5+kz%lp-Du#wwStvO;QA#i?+nlY98Bhv*E~Lnl=T> zoIi>SU4Js`58&~9MLQ)X?{77ey zpVx6W0X^gJkd@3E>{H`TUmz5rv8BcPR@U+it@y0$C|>E@{*XF#N&>>gh^9KPcTuy; z{gugjoOHZ&`aUpieY$QudtGZ|eb-I_jdKxx<|^;jUEt(U5)954^$^5}ke6|{xQh_z zvuFz&`E6O8_-GkE+A;5Drkbh5S?`Fb-Vj!`%xfs*)l!zaez?LSH&k`hxHA;K7rGaY z6(XlU79S&kF!EoC7s5z#%zq`cF)>gG|4-8W)#|Y+zC}@6u>MPSc$S5P^Vys-`HGZA zX^OJ0HoEy2uIHn&<7JnBWI8nSvzFne>axi*5p;H~31yv>kfhzpYk8*V2#Xsggh{(2 zbFR{F610L}kqc+ZEK2QcjxM3?bup6wq#R&xeX@IBG%5c6qokm`CwhtqIb|+IL}WhqIYyWcitL-(4fZ3! z<)nmITAAos3OH{vX+Z+SFSP%2Dq#Cl5Fw$p-DoDxDKZCxP07WV#^>L>i#3Jx;b z?15(I^p?`zC0(l|=7^lX)}-#c^2+%{Q+h$f(Y}nILBFbE`_Zf3NnHDYKYlU!fM)xE zuvDbO_2+xxzndE22`&p*7E%k>HnxULt%7S|ZWR@0f~@SNYP?C4YStotHIT8!np5zF zX2M9aNm@#B<)zR-R7GYCRra{{noFO!=8aV*xB?lGY|7?~u$NT3i~Oh>frBmAEtG82 z1wlg%qq+w5^hWmdM4P;LoO>_QabCsH2*;a9bq`#BbEu4-WSz=j>DEe3OD*K*OGh&; zo679VcqxS9@Z(x3sAG-Gq>Gnwtc)F=S)6_l+(yIR3~GB)-liN_+reCfM{&O{?`sEuLL<#W&!1VqOI$Aa0$ zjcvZW5^?F0wp5zG9Faym;dp2;m`{r;bntyDj|JL2|^843(dyNopSr_KX z(8p=55NBD|pS!pczAmcLnUZI=*G-9iHd~{6-k=xcYSveZz61QI;!pfppAYlxWmoq~ zE;cn?1L|n#J&M|ag2!BT%HHP&RE-n0QZ}eK#E3Xe0Z7`k_VFtXQg_--yrWktzS+|C zL)&%w!+dw|(3Zix8z!{4Melm&(`*w=m2_jLE*5Xc?v`bvNux+QJ^GAv8u|K+d>Y}1 zE_SNvx=FH()G}kAJFUdI@IxX`wM5p?S{au1315rP8Q5LT(%{>gTNvCdnshRG505J$ zHj^U><@I~V3_Hh(*eVwrMqFPtS-fxN2I9nCp*SSu#23gdC$ti`>~^xoR@bU?6&faZmYg6Uo9(DR%;!(A!$^L!tFq=mdX4*u-N zr1;x>9ODB)W^vhD#3bA+8RKES#j7rzMLFL}vh^7t`cxLSWNfuID{bZ2z2gDV4}`sV}ih zJNgZ@v1Ne%1!=}2tJ+#aeIK8oitJT&`@nnx1+U?6(@siygR@gQz4r*dNuZYXNhCIV z<7Hj`zO!ZA7?el-P+A~LDwEeUcUfJbd3pXQO(eXvlP3NeZoGdc@7poflVNkZV4F%3go1%nEb$8gjNqOIUq-DEI^G5)znggR& z<{08VQ^L2kmOoAz2SG|{yhHiXGYy2%-U+57S3D9H3xo=Jo+*PXR_RO7OgWJWipNmd zW+hYX{RdLlJV*PLV;8%aZHcebZTa&oaKDA%g>M5^bo4EXBFR?%j_{A2&AiOZ2=c0J zeX5M&3J;(V|EU*+h?kT@V;+9`mozqKja7sSahXm;lw8D2c8htHpV6 zyXi3{yXXBA1)oc!_VcZMIIOny+%|HvMy)vfni02W1`~BRpELY zX5lEatt$qma*1{uk{wL|ABM-jtiXKbddA}5sb+wKQ`w15F{VBe5$#IPs9Xk&^^OgS zBVO^=yuD*5^hjo;K;f=@IK?7%wvM-=qeWiJ>5M?idSBj5yMdy|T}tt-MI;~Z?5G#F3Gq+@2LRuKYp76@Ai;EOlR^6- z&iGZFR7xHNxkj&%&Pv&71(z;PCY@yS_wPxr_w-Ev@VV1g)IVk zEwD$eePIyIyAWfc841x=?PYKkt2#;*I(|7D?2^K7lJqj?LR1y{q-wQ$gQ76K!c@eEK{F(6remD!r=_~`6`XWw9m^F@DIm}oSS-1AfElZAl+>fruV59H$|W#BBbzVFI{nBP zo1Qv~B*3m#z6147N2(DQ>sc<|l9TRng+k!3q|Zu`@8Hf4{AWl-LxN0)riB*K`Zyb% zW(|x^ouLIq((a#m*0I4A?>K1S*wxfivPt{#Rq9c2_BneWkzO{OoL)98@$GZPW$U6@ zy}LKx>(QMrmaRx*kD)42l}KY>VF{{+Z`v2#68T45PK0%FA}Hp3)If5j&vA;uJ@F+Y z_B_Wv_MFG|xS_{>*-8(=p!}#m>T|J*5qyYzO27KPmC)MLSkk=)rNO=A5`Rk0kMiA7 zn%#n*gWjT?^VjD*?qMNzW~dMogy|>=?tLiq01@kK(yHBA+B?r0@rcP02>+4);Oo)eowK$`{ z^c=>fz??DsMA2hR4chGa_tOXMhIc18qu-|~45)Q%CWytGvv*FI99~p7-SVBrw z-?O1}Ba{|2b!U{7_NdKz))spH0F{vgJ})6o7P5eiRnvYDmKmNS9;$gmdjN&Pd_}y67vio_PL>O;}$oti=fz`On`iGAt;1vMA69 zqAO7fk~&i8qxKH{`arS>drr3)?hIIzbY@@dPf+qid`df3E2C^<3chk}`ErcJ7j-PR z@WB&zMbeXdIM~4=w`bWRx0}@> zw^!Z5_{WKbu^7#wHe1y3+Bw?d{5k$2Z-Vj-^HQxtx9_?0!b(H`|K;o4Y^?t%1Rl&p)`AO%ksuxvA4dNW%GM6xtV46+hzBw zwzz5J@QY3diE#P_EzXP|51ZT&4IJzC9xui(y1_Q=30O_CSWW6!DbqJtQ#6#uE?%NE zMC|K`)8h5)>4GQOz?1SQxuXE#ETC{RyZ?mQT@kiFRyv56!!MQ1kHq{2V>YuY20~US zZGClYaiw5(wbtAX(%4rqI9EhW`##!JoKjQj^!vkjS5FN4 z{6QUuGC+teChpuT*u) zEjO=JbZUln|6YFTGAXarc&Zm>Nzy5_4}u>CGDh&r39s1rb_`D&qfcg;i-zIuUAOyzsQ$IL6HUDsf~R|LH(yQj^mn`-Axz zGcpH9Y=#O;RRuw8wS_fK-*5iwe7FIh#0uX|SYMSUH4D*)o+u5KpGJJnTj=Y?>peMa z4W3vL2^fe>9T`5HYkrsGV-3%vxynuNP)xOYZBebcB)BBF+sih-!0;z#r{z(7`OL5N zovK{LjGdQX_Om#H1D=~btW)wyJuibOMGTkx`MqF+4`NLn2cOj}(|iSza*IddQkma2 zlNNzjxGC_q|8O{=iCy;lLqHLuux+xTDlZsilD*oZhCsfO#39F$bhbZxGC7P_i=N+c zQNLViCI<_8d(%7N%3)$zeBjtfjA8<(j7v*+-C(hrTgbe;uARwXWCw7KJ4h|_3OWi- zDcA9&=hQ8a{GthTlaH;a?TDI;F4#>W&Z0XGwMspWqR2@a%5hy$vl_Nt=$|Xlyk($J zch|OqBmtX+?Bo`xor<@<1Q$+mqQ{*)Rc5lzYlSg(3n59}rZ}ihIv3LV zKLQ3`8V`Yob4G;J7B8?JYZvG?JVFUZgEc#(4@A}9l~iYs_#v!{31F5XV%P9_XNMa# zW%{Y-@~u_YW$I4m*`}zJ=u3tNjrO9=5G3(_N!(`!qf}>}#Ox(f^lLDhK^lfU(aj%1 zW$dT2dOhafHPO{T1%Gc>Z&zUyVvs47PIk|wDV1(IQ;$k-q$u(h(Puu0`Pz}`)n=@t z!2m9vwr>0ICc)<;@}hH31ltt^)1WF*ytE6g$j;M3a+EEa&+NVzK6}+aB%_N(lf>U4 zx#h3HhG*OfOs~=|`_0TVZ1i?!=jQ~o)CV=}(yVgt(72Y&_VMZ8pLLUdk;Ez|WImqppiS0Kr{Slkqal5<80R4LO0)8wbIt3L^be+~Kj-fF((H_8zLe z92%N2Qnm|DUtI@!be9oc3J#Ly?r8KlM#A)uo2jxJ`Y4M(PVjWY34iZ4gyv1|p?3i| zDK==|V!ot3I7rFG;0HYd0#1>2AFTGgJV&=*(pia1Q*O5~kNt(!WDd%!mSnouxCAM6 zEhkq&yN`PUUhKswTN`!!KYbrwhc+giy>H9!xGAciA;K zO7&o%ukH(}`#_G1e1j`xc1SSJEOQ;$sDD`Lr!1g!mOyGdxv?kusxupocg%PgDfTe> zs<%1*eosnSEAQp@VdA!`>eEqDpYdNd`c#(0_VW98?>6B7jyV2FXV_oFA+IjV`S0ZM zO?6xjS{3lN7Qa{>q?h0}*pwD>hfS4WXz1yZQ#E1q41;aOtR>!()GLkhq{|eSL#QIp zp?uRx$lJWeoN<{Cd!7R)?k7Mierv);Qtx=`2!e9Sia0$&M1Iq8%eDVGNl!h%LC`R3 zlSBA*Te)*RV#=<3&IJH)yO%ET977JWJ%_g%V=-H=Li}bJ7<2) zX*o@K*lRYU%=~<05OJBWLL}@0?w+bcT|Xl{vMWcHa{BEp6_+$|kE)>OKx~1_reocN z1JLNgFg+L>h!oKP^v^txGc-5b=*015v%K{e5~KD!B8yQd*x+6G0E-q^g{Y}9le$79@QWE zueUj_iSTUy7RfLS{daGZ?Jc;$$<>`nEmbX>NB0sXcwN++t8*67 z>}bOj_DFN9vO~eq@Vqy;<0u*jLNL(*}YBtA9 zoE56!UGCMsKDWDuMm@cC{c*0AJ|Vq6`=>!SXBS6$-9F)J3#a{~M!r4Fjw@5JRx0Y~ z{IJ79)^FGTbNH{(TbVCoPq+b)3Yl%B0&`K-#Ig2bKN1h>>-svGN1Eb9B6BW&BDRx{ zH@=Nk1pbj4*q{BXN}&bMYhd1Kx0GTq z-Z%mt-Dug;s#jMUXJJltpKOk?XJe)%RG@Owvewa>SJDk_t%(PC_UA52kTs~^*o>E! zI}Fczj+9Ew@U%0viHZlm5HNKA=wQm3pWEHH-BOxz%?kZeQLWA)RO4g#SMhkfO`~;e zVikGP=qhJmY(H-PxWXv2@CfhuW^8j()mMe$z2*;DC|jr;Xf7y2=vG(@m@9-Kq&&NJ z*5CYpMqF-P7GA$JPlv6@`BtWZzCo_W6LWah_{#7JZ$n@+PLLd2!nO02Lqdwe-lN=@ z=Z1x%ECCwL(!$JTWcWgVW37f#%JEI)rHL}K$a=r;ZA%y& zL}B3sn4TksG9q4WNI~y8a|U0cJg|?f>p|nEdqQEO&|m{hrins@ge}j3q3m#5D8kmx zpkPshV%|)z5qEXHKXE7bttZAaRhgnFml~P9l97C2UgSxq(;Je`smJ13$LK?c3l?3< zBAGIIq$rm9bhZY;8qnXfeofUP7}j%a@5zwN9n#tL)I?dg6b>^ag{$Cw+vi+)!94D* zyAPMwm#r_Jwz!I5E5ka|4ynHj00;%g_pBqBUBR+=zQ%Ra^3_GVVOO@WsSdhxbcSS{ z;sO|_Wc5Xh;==$gm5)B8Mywc5p&yDXg6Ugc9ApqY~OO79}(lKH~kyx zn?e{g6{IpPbeVxew)tehJqN0>BgODMdz;iZ$ADO^D#jF5x?x@L z?Ci(A{qTt^k<#;ceV$A9z@2$5ymlF@&sTR*SI^i&#Qd0 z`9oa7ON?~Tc0Wt|aE)|Syf0S8!&&Q7qo*!w7vvqOm4f+@`*ic(0{!KozdeepZ+4^X za)r}|&%IrA;~55OOX&NZ(08nb^#^lclW?=vq0*JL3-sO9$zN8-*y#20nrQzyf@p#Q z>4tS-CZ#|(Cv_Q*V8rO_TG~!Hd=^upZtz2%?w-QAjZV(Y#yDv4cOA~o(oU0K{Ghnz zs!IO{hfhMQe3(!FlF~h`R0g|mh2_QnE-WLxvE{pWvaVfX|N8OY5AwI~|Hz@gJZC6{SyP4SYrQ8{^2>B@5<2?Qet7PifNuX0z>^HQIxi#z6D>6DrxnzLcO!2 zc(%^7u^txfEB48xwa36S?z8KF(aYDs2dp5%i<)=8VDn&|4d3a%FGI}Z337lkApJ4% z?(|C@EUH^yp zW67=-xX%1d>O@T@M^2myy{nX_(h(_9gCQlB@a7bmnMzAwOSnS%{ACImTiD+))Lf^` z75F>HJZ6?-I^t7u{H000E0J{pZrT)yHe|Zac}GozkLcGYP6$f+8F};)Og8aR>mLSC z2%;XO+4j z3P_wZ`Ps=*2BdMwSW>au=`yOUg)WTa&M3NHT{7Y|7z4GaEHf~x0;<*`5gRq={+8$ywdRfl)RO*v~Krh9iYGdVT zmIVsQ9iFc{ z)cayZy~HQPCoYTv)2c11iQmSOe3_)wWg;GzyR|tM-IdIm}I2Wsc zt#+>LXl%J^gh{{R<4m0CA<2V}3v2pT8{H|p#GvMwk)3VNpx6?{kWi;D^*LsK$h#^= z-$KHoal|Icr7{M@VMM!i&Ec3d%~B{nU<7=$bRXVNy?_J4TU-t8r%cmsk^SC;R0*bIxx3+RGYb>GjI8+F>mQ>kk`2&d} zvgYGD20}MmxU04HkW@DuiUK9I>Ryehq>tju5H@fb1TZyRu$3zI2aBQ&)738I6e<_c zG$pyKRWBI8QeY@>FN&g04aL}03@QUbt!h7pI5$suOU?#HFIg{|Mp>D4S+5nYml-ml zcKuhmeoTW=$5Oy*-?y z&~5E;r>nyH^N!4BAo!M}J$?fU43A6H3lAVMyW{HBg&n;2CL%SvgXy&f2$!xq`a?Dl zVQ<$zBY}YhceNpaHbkLf6BuI^HZVGe1uoz&J;X&gZc7&IhD3ek0_&36e-R0dZTuF@ z$9~Ww4GzSB~}; zPxFsAzZLot>hnagDHw5i37~x$#C1hW<2FVU8QbtNW26cpG8)==T;*@qQB~@M?5-v> ze~&lI4&SszzR#pILYtc^^J(6_$cj|H+_@M9o{K~^*Ct3u{z-~-MBcdwP4L2NAh*TC z2mC>CL-}5?7EqmgMPXTk5pY!zm@g;I8E+nX*<$UiO|mw;b!73Se}bA?%_Ggr<;_C> zmbmBghls>}XzROBr>skw-@|aeX|Z+jEf*x2qSL2u_?Xt zcRl>Tr=Jvyy7Lj~6ckS>a>3K3+9wWxR>rMp3#e;#(=ZI$?|q_Imi4%7$$B6l+&24j zXGF4gSRCpSu8lJ~xslRzNH*uDM9w$_e$7t9# z{POtsSh}SvIZ1ro_H=}Diw$9^^+*oyzRyx0LtCD8+^(w7;dGvzTIe^i*qVXj*Ir+{ z&YpKgs6@`sJ4)X*$}_?Uz_MVrXsmMtGegJY@8j)b?&B`d)QX#w{z!oifYwI5LPkM2 z##&&ml{QgX{}|i>Ee_oaJ&$0(=$!N88k!PX8DoL=Tq2kjafR&M0?Lq#*;$2*k&Pt* zyB6jTG%I$C?)naN4Tg8<4?@^gDk!Wlo{z0cZfZ$nHS<>ndit#SW&sUi0K3!6b3MeA zy4?WK%M@ciHIGG+eec|#)-9sC*i&Y2uH<#vWM&pOy#(~7I{cxJODxQBWBycG z7Dw{4s-XYLeW_G0)E|!y%T1E0Q5MHxmr;%({Ve8Ed2HuXaH)Xe4JOUl?rDk`H8Y;8 zY!7SxQ436QIu~nL?(T7;dE8I_+@A-EmLgu!0pCU38hhQ5W|FmAHQfeLmKU5B;oe+u z&a{lt3>uBn234`~)6V=2LP3^JCi0Df?kLrfM3#iActQyeu0QMiGKwWSN%?IF%0I8C zpP?(S{UIZiyzZv(F$M#~g`@l*V}AnW4i;x6QYmiyy1iiQs3i_kfA$D=pM*YG{Q5c5 z`zvA3x|79)z;F=SP&_l6ln0D5m@g=USuSF07m=|QgbQS*$&YKgno8zzEdJL1t6v%U zjNL(;O@3@bz{)yDsB#S8*c_%u(3An}b%_`=2eYoqGOusg__>HV7)U0)WP4EA6>$#a zIp{um>D*kOm?G8d7#eM;7|U**Rg*eTkyfWpd4CZ3I;hAfY?H4B($1Vsopa^^BPfb7)Pv zAcp|_4r0FzmAD%4y3Klj92gzxD{PnDW3W)_I# zu*0*(HNFa9T$`L?ZrL?ZVuFHEi3irEDBsjv7^`Q&g|F4@w{s4U*4}aiCyn{# zMyvXN2oDa47Dqt~9cAlg8+MM_;OjM2sO0N$PBs-eRlU&jSCNFft?(wcT38EUQ1F-O zZvYy_t1}Foo8nG(OY^10|5~rQ(?MMgj%W1d6z)Hlgl*mogmvn+#>rk^M0`_A@+cx| z&V<6<=eA&YKS#=}hRC6ax}XZx#MV1hvTIlBu!a zH2k9IsSrJADR1=&WPm1a6b0>1)nv_y;iXZaF$PBEC_p;`h))Rg(I{^~wJ(EIXZ{Mp zG#W2_KTz;-R$67eHK?VG;96l$!Y(rO(`7w5MrF4SZ*GZ-x&Kn;hZUTdO1XC2bCvqk z+t+*xVtKofvsYK8>L#+`{AWH9lSm(G>gak-$EhVX>sWgouU2QhA38YIrwSWop|j<$ z=k>qNG#qLTfbQGf79g*;$9wro`S&&JWY_sVlDfZZWek7R6kgxTcnsrC!;w%VO9nup z(-P7LzE{rVOI7Q9JX*9h7p*`HV8DYoPZrS6h7|C+JiXTEt)7Wd?rk7yP413WBHQkO zrqtexQgwx*Rv8VT4`FM3oZ`!wlY|hc9l1}E(gR{k< z$bsNf$Ee@=#izeaV%p&uZH!*G+D*|3sY)&s5;!Fjlq9ZnV6Sw%IZ{V zyS0i0I;hf4e$^6s@y1+qmwJ}e#08Y23%d*SenuCdRGZBg*t%OMrG~W0&g=sg$6h8n z_MRrbzcugke0sT_5e`!ICzA35NcVV$k|)UQ`nM0iRVeLr;kXm^M|X=Tk`q2>YfKmT zP{-mcj$T;-0Od*ZR(o5Pr{{_rh=Z|$n={b|k!JqAo|_heUYa^R8;}z=BK->QooIYk z#L@H90nl<>T8lXXn8(LIOc1RG@7Og(lyw33GxRR#)Z5)+nk!5m`J2sT79J~mBjL9n z6#Ca;@~hx;tD~KqS zhG?2*I&Qbmru!son;BTmF$&chSa7U{o-rdOwe8<0kqVA8c-RGvzoh;;iwe0#*X%s> zHA^CQ5R|gYanvruYdK1hC|TDSh2&)HkQkpc&fsvqb*2)zeU|?z1hm^uVjjM3Rrp2$ zV9ngNs$apK>za7IlNsR-~Jm6T>f6%yxc$tYgErmLqhBAJ;$hAJYMC*2ew8X@1>`*GmAt|OW3VRRT>%1-2&yP&_&MODZBu(19IGZ znuJ{kE1$~tk$+9Y8cK@@xKmNPZ?(sf&EMMv?(YXtx9s#u}DknK< zS{5lbusoI(RXg>D1FH3THMn8uUd)eY- zlxVfPy!2@xW6rVZ^UfaY=Ad&vN!Mp8N}$4XQ1RK}ZegTKpoP^l!iav|#MR4(y4R=} z?)oL-1<9BDAEB4g?n`fnsgm+ZcIbY_cb4b=qES9lHOq%Lzz)kor=5elPdg8=#%yZoo=L%W7TU2s?hQofRZ%|`L;?xQI&P19WqjBNU?c-FLf*y0* zqiR!tO2tms$W)=w)32IY=__!V8YP#`9pPVu^iEQja{H}jIR^K4`ysx6#wTwktGuPp z|6mdiRYj+n4;TTAzz~tDJB!tt~q(N(+7S3zb-Oa9mq$TF#d{ro-!|d2h$20BhiU!1xkW zYEhno($D5I@?7|}@uBC_fnOpkbPcAY(0O4S2jHqj<#CXBRoj#afXAWMBlsRzF>7}a zCUPUmdzzTFK3D-^fUwP)0liPW$pmZ%l{NZ0;uIbkZf<&B$kW`no zChkG>wq6yN%tCxSdSJAP^ry+D8KU_`n|Hors%}&b&X^_Px=cEBCOtj;3VJPhy*Phb zn{4vKiYZu3bt4$5HJq!$_!p?hwkpu(T5!dI-B1qpNP z*e`%I&-%AhxLLo;^F<_$&&RbDB_av@Z@cdBX9eX6ukxjCHy{~;w<~UY$NrBO2N)j^ zwP$2Fsba*qT zb=o!Ato)AMLkT0rZ)AV#j9}Ge%!o&!M%b>wHWXmQ=ZK~?6upb6vd;;Rao(am^&s4q zX>&)X!G2`@8~Now_G@(&kU`?*He7)myxaZ`KzyQ%I7>-n@H&V49?dGYXDy0R>O|zZxRc?}P+59kHWIEl0}ho&3}yLdBZ|4q zaCWsB%q1|ppC343%^q%sH`9{b4>U;V9y5c(Z%7X(7Y|;YImsJlSH9*C{ zC}m!xE9=aRA`t2?cxtH4nen_qbMTG({&Q*R!#{+l%$t(3HGjjWim9#Z|KPuzWC!IL z6`aA>G>7Cl3bH&D-2Oq3S|WKod+IjZd%13Br@37spPhcSBQMA9cXD*`_AuZb!XKR;SdxwF8P( zR<6o8#OCod;QY8sEgsZZq1M_k@i^WBqit|6TN!fA5U~*^#MuB$SGDG5w_ME@_RNs% zlXm7Zx1Czu$#{koYfy2r|8cQeSI=;(+8RmI?ND=4YktKyT#X-`%2^@U!~eCxTXfSy zzD#l7l~+R~(q#_+-s6;D>GizlyU8Y6Mmt;OCR4v=m*F6NZ&MtPODFBpYT*Z`h|!zf zkXWH$$&g7bi?4hxRjAcc*}RHp}_S8d~qqE7y?dc%) z_&vqTq`bc;gMbYW;Vrb zI>5le$z|oVCLxl&RF|Y)EDRooEYHO@<5R?`?27FtlF}*R%);SWCxxdUW1=!5B}?Q! zUx@R4t_f$w{s>wTq<_kiYyN8g-Yu)#y(GAFbR!@p<%V51I($Zv>6lV$B;n#~)FP{> z*3G9(7i1*!=jO@827>nDVRy0;W&amo2}UQ@USE|g$}lbwnjbVe%W>?We9ZSAGhsx+VU0g z{#-P)azQlwRv9wv72_kAOXr$uO>(X4>;}AT2$P*3CDd&;XkKntEW*;iG`g zQeCsp7l)*()Dhj&3^P2-HTMywjuYv(b9+rL=Em<1AwX zKc;HMQ@w2II~*RxQ5{wiNr=Cw>;sw9>Q3avtU)rBK9o?>=g`_q=3Slpka8 z_iZc+z-i8BcFR|z3+=JUe(xFoIg?6 zCZxw|)MZlWKoWZYK)po~E+dUjV>5+W@@w~3_EL`ZJr(I>AcVb#w-FQ*BEqQtp8hF0 zTa#%3=TA+)hT(IZmLaHX_PG@cB>AUSRX8$V$|q;{9J5)?fP%rd%L=}wIB$F{@+b{dM&7DZ zS)@DY*n>bO?;+WK-#@*)Ji(ga>Z82KTv7J+RXgtAaDs=QSGprQ3?8U^V=9to^XflkzK)dWr8tPZI`FH0)RGA)=iYb-cZ*d)eg3Zrw z77K#7-}pL%i~;u|to@_Q3)`PheZHutHLnfLD)9Tbi(RyW=4MJMH54bQDY%a^fz@`8 z;PG#6MMQMJWv^^4F5VA0&+R+&hH@y~Yz+Po7Y`wwr#9$DMHFU3OlqMQ{o!E!eG|ot z3dTiS?A@(cOY|eTLGOD^H*Y#K681!YL~EI79f>|*0Yy*bXC1L@$EHS~p*pcCA^_h0 zHUCHV(Fen!#6r7Z$kj`qtm;dA)>~*58(??k7K26UTBlST8J*C9ppQiHvwVHTP$*VK^nZDd%2hUuOIH zJzUN=lfFx>lf&S25Uw!l?5g^LYrZlBYYc#lt2yFcVDC zY%w87|8Qs>ZGtWxhAA5ofEfn0Dl@0~qE@yx4BA7DOR6OOx&4J*s(Qm`R~xk6Ny_z= zxa(w*I19XDnM&-gx6%wZ_e|CZsd}9b5Dr7sQqE|dSV>JDiyyUi!49Y`|fYt_N@2OQuSGIbWfewu@Fje~89TS+5Ay(A9hLhUMU1!Cy`8 z3!^fsVKW0#js_op(WS+YrW!ABxTdHRX=!wLsm(QSJ@{A?5%Z%F7qTmDZhew@qI?Su zoGUw;rT6l8+U|7aCQeduACtiz42iR4I*bh7PnVREhSqkca?vzfq&N7%ZCfqxCZ3r^ zu>cwP(ZDuN*5M>MT_>N+Ii37ZH+iK<%scZD)%1~=KsOrziWmR_5a?4dD)g%`XeJ3kOeY@*XKdYO~XqTgQvg* zs1KX&g3R(whAY3#?&u%vH!IE5BBeeB)x1D&y<(i%BeO4MvSop8PjmS9Rs}g9Pv%Q& z-dVY1k(((9nX1HG^>Kn1zU(aE3byo4bw!CJX;0rZtCpb*ka*pf`VKCaI*DLt_U@lIYUf%>Mt^?S7(U@VSpH;3V}U4`d! zp!1BkdD0sqO2~Q_8F(V=-s1LVAEk`7>sRTt;oZKMPET!aBW|&xEIhj3{Uev^*UkjJ zanIPZmG{575Dwyoq9x16RtV*4I4#lgHH!TnQvD4+{g-kS-6c zQ5>%-4`+q(@Nf-PKc+ADDxmVtf9d5m_!Mwwt`qQC$*}xWz^91Fhj6|`3&+r3d#k)x zZS1R4#viC=a}|zFo51>Z7GKoiWtb~kCU%7*+{QAD?FVumBr#3DbQ zq{puEMcl29p4WN*f^$p&A(Yh{oCE(B&O-lC1gnew2LYgIr#_>C0m?7VXCERI)qoL| z*GCu<$B^)mDaO(Jp!#G%P))6{WRkggWqi*>oZ<3x9Phfa+_(Tl(D^caYIVl{*y6=` z|GYP-{Lb8)@&`6x33H0A6zD6}ya#)?I|8QdyfFAsSwf&Uq2iD_M2%{wZ|(!-kl8=f zP;7NGcJ&eL9*t-tSBKItq?{gBp)XPGjg=a>&4h4Xl1}WRA@+e%yP~)xWBlvatyP?L z+MO_3d{&tcm%+Y83~)PYo5Sx*5-U5l&r^DICUiSFsUE;bJL@{8AEuH za3&wFL9=gF;@j4f=2p2;&8^j~9AA;icTd_k;;(V}FmdkMbRHU;F#Qn4IP7>HvmQXOX5e$_Alty5@}W$&sBGolEfePRo^|Ix;q+O zqdz%lDi0J7Zi#ILNE$?cta!){vv*H_dzfGP#wI&{0~TB@nQ6l3$GqH3ui+JQiG#vC z=+lBYhLWCx+@Y#>wxsvvP_4!@`trljhoOVs7r-YhXX4(S9khbE#2a|=uBlhzL?j7` z7L=$jC)6O)C$J1ululWY!(beKU8how{*^uW^TGn3=-DYEoL7YSptnaz@NYICYdq$o zMl|CEh+*&~pTXy_gjEOer}_sjjXotu-&<@Cb$HvcJyWCKl7*20)4Y zsG#)g&Fw?U%w(a&ohty*sL93M=C(|qN4_w|zAHs7E^p&?I6&hH2B>)>Y>INIJ84 zk}6H1!GI7D7uoMfyeoS@=olB z63`UYhdj=(vLJ3%KLPyxv6)St(3cE&R7&D9L%n9Eywa`UhhoMe*+Hc#0m z3%T45I25&Bc^d?2Pg-4{>XcMwT{RT}xql)yh=1@=Q11Uj|C@`1`=^u^FXv)F7C|%5 zd^O5hA&9Y*eg142B5Y!jbRyfqY>A-5!R$3iwHuudL9_T-e)>V!8YYvsrn35*ne4*R zmjj6)d^j6R55qk9$-^A5t%cjR@7PeLFNcE~;8cepiN~8|MwY0Mn$pCI$u8mjav4&_ z!~oYY47-pEWonduw5G2-f5JA99#0r}F3L$e|743vStx+tW|yvfwcIVf{^l27HZdwOY+^Wft~JnZ?9(5N20W6(K1 zcDOz5c4e`};fYmuuqRKTpBW*5EK{D*q2X0*FV{_6bvDrVU|Ii1D&_ zd0}N?gVbEI3lyf6L5tIZ+{+9jAKVW;Dc#5f0<NCq zr6sP?mEQIQ%Q?(X1>-ek*}@6oxUsP_>f^H&v_KapG2HOJl55s zPmE6AOA=;h`#oYeR$QQ||C)K7((uWtz(7@JY8iCE@>1OHAnFyFR`5_e0`UtuWGQ&` zsh@2{E?cdwS;u5b^b@U=nz4ve_j-bf5z5lzi=tsskb%N)rX@*_w5HIznrKTDQ!p+H zBai|mkd7g>@I${|nGlmk9f2eRi6ugTPQTjSf=Z7{ML~FXd~)cg!x;q9z6LGLvZDqN@B*F1+29z53s*RT^=^L3wtz%wY; z03(w-Ve#CMfV)=c9535mZ9p7{(4g~|4V>Of6cLj<^4@ryzH=WiD~Es7#wf}pL*$ku zEL>;*xdZIU9XJFg@N3@tL8Pf@RyO~n4Z*A4Q8-_nvUCR=_&gK1w4_{^Qz-cf4~t^T z@?EMu*Y`TEos{@Gu5hcy~iH? zGg1F3@qPPsn`mNMINXJxk?bGhw@-6>`ZlQzXmkxdPsAJ3T3$jZoljhZX* zyp`@7Bc9Vm%|n8o^OU+sJC`3(-cYhi_X?X3L93lB?SKTCr~0+Pr~8Kmiw&Z74R!?9 zJF5-`X&{NUjag*maT=hsOwE+{NSI%8hQxE9;c6?6l;csXz@2<_S_P z%2vvuY5Q=)T#W|5%^AulbrnOknH|Ms_uVRI<2?qQyb(0Pdv=@$UQ}3oe-x`?q*WCT? zD641kZ=q>W)?^tk^pSdsUeM$IiCJTI>x(0BoAXMo70Wg`{&nLQJGwf6U3Cnt(4KnrHBkvXhk%}|p z<1YP(to`-!cQ5hv3o8?QAQauk2CD=tr-U7OxJz*m51}ps`k&EUXFA=VZB>L+opX1y z49**O30b`fZJ%jtg^KREY6hZ?Ne5~usr81rVZJ_G`XkQgp2G9Wy<)8H(3ph&rtgYM zUYQ`W!`0kxyU*>+dW${R6DVy>AvGe?dwQg^!b4=!+b9Ndn2TYkb% ztOnxp0-cC9NmH0TdPG^)tx%Qv#ouG7H7@1}l^z29} z=p}=7gxa8N!NN&mRR!@nxh@f0O@VZ=EB?sJ$oZnJcz=d498z_^#Z&@$K(eQ(_aS&2 z((POk1t`}@K4(I6O>|MkduqL}XH+kQLp#&FJSUN`IgxqGPn0Wcj^ z3Og?}eoGScBh=g9C~Ft=3}N1vXL1qpKY<4P|F#%ZQf6UfVf_!SR^qxOFh9yrFQv8P zdPBpXcY|UR+GL&}!XROIbrkK9VQXwF0$1w|;Ll1Ad5W-{KZOP9#^Vf~?R8rdJ6T&< zS1_IQweYgvRO+N=u)=eYnyeWjIm`p}ax{{#;eHn%d=In_nEL4q2V;X$Cg>i{m&|C| zS`b1&5SV#KZG!YX@F9m|JlmByZ=JI|eStkrlPNOVUeGZ*EUUt7UF%FT+mn4tqa)E zI$cQeo1_ut=ku?~6Z9|1Q{+eQ(;&%sKXNXCSn|#LnaKLwDBVZqYud`J>C&gCV$InX zjBW3X9MNzlmN=C$urKPflxN!ANM;g~V_^m~I}_mp>jPtEmbeSZ0|OPrS}ShSQyUA5 zAQ&o^5=)n#4V0%eq!LI=Vj?wG5&qf?qnlh$Pf;>UE3r?^*-qb=5azLgyB(`sZ+C@; zZ~~Al4Tj8BQx)b+(5}+E#LVZe56PYF{0x($)8VfQXj3atrn%%MN{ggdX7oME3I4nN z29J|XtN0q}Q~hK6{V&lZVZr}!C6v|`zQ(26{sIIdK>korVSXA=tVDTYK*0fWlyX4v zw<#fpkn?1u(&;C)>^?!9b5kpr!=}9e(O&+IQuLX*Uwn8=JgcVF-W;anyq{iw;PgP& zfi1WL`+#jA%W~&nf9D`>uc@o)BF|tfULY_VJmOWeGRG^?wwNQu;ubBsN$@E~VNNJm zw@fhUE4P9)4W)70k}3U$s7%Sw`_UM7M08~^Tctq3bXHMsNj5Ub3}v>d3a?CBgT-h} z+cC}J(2S}Dxwxr#c&|27ryeCA5F*5Bb2jQG;%A`2NNQ06OIuh@$u)&CIYwfwm@aLM zl(aV2?3c4)xFqh3oT@~Fw$3chc}WtT%t2{PXs5!qTO@gVx0BI0e4ut19&(%HaD3>i zFw7)dq%X-!v$axgb8eu`iM8AewfYNFeWyQ7B*4$S$ZD}Je904z*6I{Y+tr&9k+!Pe zEUb;NKwKy?ER#q>xGCHWeFx26QYbV`2Ix|*8Sw`Cn98OoEv3bYtI+BilsX2-IyQvP zo4m;4DTpd`fwzq~55Rn^BwAYf3ir9|F~(F%^*cu|KCb1VO~K)=)+s3|HOml+?a&^D z14fZ>^_gRIimTe+q9a0*e9hlcx%jvg_nph*gL=$Ok}y=WT_E@8hD$OU6?V75v3TiA zJ9{AvI^I~@_t>a)j3jw*ei2#=qp<6-wh%(h2aFU#z%U!$sM$am45aMy8AT`~+#XZL zO%r0b+mL<$z!6gWTJm^^B$N{FYx#r3F+X2Fx0GXA;!G$yjtS|#p-%rdG?Jgcs9*2E zC$vSfbfA<2JKJO-bf}*NgOQg6wpo#T3R}?{fLA$f;c9u&&46q6?9Dr4!jz5 z`8azxHoT`Re2J}#rkPmt(}TzzMu<~;BO9>(^Od+~*Mm8inzq zw*5!b2)=)pZH28w^{w@-{zGIb|JSep3fs6Ds*FMqsIRr&AC%w!hAfJa3^^PjagaXc zZytgR?&!x~JcLvX-amy=M=pW1V#bByUkrryBaZ2l?$V1ZUS1#Iw4oNisS&p|z!Pvs z3e32jDu`35>*M3H3z9fccZP+9u%h#7jbT^4qD!h~+aqJY$VVq%RvWqeR5n(1h zvm#w;@*JvdD*CjH@*8snKzn}0$X!{YtM?2c{&W! z)<2y^(L#pxGdcPt{?4nj&FHR&Ru}1aT)8Ah%i=_?Mf8@`jdzD*l18i>{0aemlh|X& z2@c!w;9n6VDpVWBgUBYlfn={K)EmY{beSM<7;)4>p|_a2KIftk;y>axbhe&#ibr`C zlGCD9;yD^Bn+hdG%^9Mp@c8VvxRwKKLXkJ=Lb_x%kh-r*=G$lbNqp$~SoAomTRml= zwC3d%sakZS&`OMMYyRiq&MMPqb?v&uy#PMdM){21?>EQ^JiyY(l?d&G=KNF8LOurp9qxVKmaOHnzf)_h4+ zg#bHBrS2B=tpFdA=;6Qz>YM;OV#r5-pDRUHQ0QlMs8^9a`s#bF+L%zUetT3jn=*_k z`Iy*jHzfiIwc1v=^im44an<1W`cb>QDAgN1)WB7$p@yApAlk;a{G(JfSJ@8{(^ ze4C5G>E1AP0U`=C(jv`bU=6<0pyhHHu2st zJ>=u88W*bVoDS)pb$6JmG0~pj z-6_B9_T|=_b|K!*fukJL?NBG=xTxnvPA6rP@G?@*4AE9|^hY|vbCPbFYx?vp?@ zo{`@ta45#x7?kK5YbMTcYp45p&R)}ALa?)6=H|xTEl(EvcYO{H8y>z#w?Zc_;n{do zvOoXLilI6wBN_avND}{%#U=1BZ;hRqvGo_X{y(Kp1#8KEITW9olzEPM9omcJSB6rC z0(yC*AR&B|Q^kehvyQ5C8z$8{U*$M4(04x{C8w5!JccH&%l0F?oYcl~?@u@P?{$&V zA!QnEdSS`5>$fpwEWwiqr4(A1kRkU3)li>VnskCCeOK+9`z__Ui`f0w82g$#xho-# zv}L_lZ6!LcmsS8aw_!`D-*)dUN5{jsy^BaWmYArO-ozU{yCsXi8yKr0@9Od2qKaSU)E#9PA1Ld`#JSfa-PDc z6=KFcq0OOjezJePfhq0GnW|rZqsTx0jsLRa5S3L_VrF4v_@5ua;{Pr$Tg)v{xL>ijnVVYie@jen zc70s6ymF@F*z)y$fg%Vy0?zRMKnLDP)Xc&Exs3_fHGlQ{C zTXxdrmx40Rq}aTIMEzAz7M-Is5-BGl*u`TnDltzOnDk(knBXy0TDXjl$c42c&U6%B zmP=?%mLxqN!p&1G=s+4PS!$-wD$Z67DnxO%F%7BoyOHuSP9!y$qcmv9E8eMOP-du4 zsD~hpqBAedE;Oriw@yy*?vhQ7sFh7k5m>CmWKTy&kLC?dv`!;c^Y5AJLmc z7h|s$LZkmQ_AkWI93AE;=~3P47j!vpI`22pSdNL$P9_1`&B>svdzM5@6>17IL$+5R zKt;SD;uLaiR!mfwaFiYN@Way7jB=A^Ixu*>)S{ zn1d>|MvP&(sy*Z(x6h+jlcCUXS18TyN>$|>0c3c8BPXa zqa59S?c}4sr`;NSd#lM|ZNczjpCjEGKuvU(%QBkJ%&TpQ0B8UHC(RxF zW2QJdf6WejHeqG+F-DTw z*ol1om>%irhGjnv_li-w|NJa4x52P1=!FfOH^g{Y4-%Tt6q9?D2`r&O(dB|zN5ogb z#m?0je|l5Js7+kco9F^H8|BVxXaihIHF)>$#>~ZmID7W%@!b7Kx{1)gON0L%KmYOd ztXBQ)iad_(C$VU-pg3RF{e;8&T=8xxl;^(M_uFN6Bei4$sf>B$-d$$; zA4b>1Dcj4cPp?n-r*8ysy+}ZG{t&=^@W4C}ufMMON5J**y#&75>zz>yGseh5Z)0NM zIn8(KARfiITY%2XEtq(6AQ%HoImIxJ6Lrrq#|0{k(Lwa7p2U>?oJ-}T8Ca_DkCVRhK0catl5+}RZ`Q_8p3}@f~%BU?urY(WiDeB zTSv_sAX?N@tSvPuBNEIcMW;s017k?{4J>d_TegPJK|8htM`}(BH)48{{Yc2wNw+3O zpH^Rek=WD;D=s(WKCls^)cf|eb=wM(`AGPux(Cn`Czo#B-2t$P9GwQbRTe_X^VP-Qb2*3YBAhA@YeLm&;Hq8?t9pJ_^C6bpVsPs{@+e zmhW+(=GYNa(yoeay%hFcDs^#HGJqzFo5F92X{?D-bS;Tk(Rxg91Ywu3#K^{Htj6eA z&dY_;TJ<&wH@91^Wdx_uHRqP=CJQ`E7v34r(ww~^`S)ro`n{(vl-Gmy5vkKPoS7Uba zen)wyN75Lirn+Hi`S1`PyR+&8#UjOznL%{G<6Z+^k`g&?&1hFP{eT8aCs<1iFH5dH z@9feWXR7Cx893tfi(TuY>-f?R9UMHzq$E76H2TS>og*Uv>l{=u@ErtuyA3QBL1;S& ztUJ$aMwUSe0aQ5-{`*Cbs<{p=_Z*MxC!$qr~H_Auxm+x~cCY^c-{9JY+hD>g;v zcaMmhRBEFP(_ySQ!F9!Bhv7>*o>zAkp|J#BeacTeEJ!UPO;10%a4tGw7msJG-4^T5 z^O@~vJWscS8CtF$b-;_+Htyhp3VH)oQ@5k*;@5eq7!5}%@nf6>su|x5Yn3yWKBsWzt)7VyH`9DB1&S2dE6Bmnh-B> zU$wMh2$z=NlTw{U-uy6%%#Q~lEZS$HVw|;Ym$x}114tcPba2X!LPwJYRTHmlGS)PI z2dz2qx;Btn?eEzjky@l=g8Qc(%m5hLP5<#S0oP$N=?)=cqTFZJ6Y1-v%g^ATY@GIC zqz$tHYyv=uaOW!(h4QBZEaQTrW)9o?vb~L-Ad%vrkcXH-MUt4Iz|3A~Z;ge(#mCOj z2q~iqTJ?#QU(-XV?Yqz|w;--&@m#{PS-Uce|8zfDp zA{kmZ<+PvCGBuxYUa348h1AjfTG5(!hLNXUZqJ4;(P7yRj zS?BFFv$|ioFZm6V91uMS@<(DJqTh>hA0vYvxuh1-OkQ6ke$wT?iOP@fn7Yc&ooTtzVa0s0tWHtf|pNYWie-48@EL2R=77)b>f@?!S!uP%Mf?oI3Z+$C-q7xi^n6@TmJ~t^GI?FDWoaT+|gHxG$3a$U5GH zba7#*Am+!})t)PEKy+YF!Yv)X%zm7**rI`#@Qb!$2&iBdDjHcTf8#}ES-3h|BqMD> zI@_z2q2tGE29*nGv9hxaaTj%kz2AITo2=2z_34>i8R5Je_aRi$F7WzsA+tBDw^J&Q zQ>vC|Nv8keLcVKMsJZ?mlQ`$=45&uF)I|NMi5)7i+Ko|#YtH?j#cxbU1>>M^oDSoe zA)mcLV)vgEwpr){5QGQF3KEvhikXX3_`f%%yRy(*;TY%}_+0+_#nZ>Gm5Q3;Bs%QP zqhSd2EX;mgd{PX&z9cHCseD}Yz;D&0TeLKOK7Fi%+Y(g2@K<9QndYOy0MNg8{3asP z#-UZww#APk;JP3hwk>o(emj=7t~(p?&#M8Tz2Mx^Si6q*1(ywi(d~yTGW(Pn%Iqk* ztVTv)zNg#w8H4$J>)diTy`i2Cwf2bX)aGSuf@Moi088Bl7yn>2@d*3o{H#7U-Zizs zw!?Uc+dlNP1l@+}7)S zUK%?i1!;_EXv^ZxMUoSG&QIp1Xnii95S-KNNY1Xi9OS!0oAz0GtUlM~0TY|^>RH%Z zu)%QeGt7v|VQ06XMJqq0dDL2O&3i_}!3a^|A6x6f*y3Gv?0I^2 z{$^`-Xoc4(e+^!4|8em0FY$G;|0L{IwpK(|Me#`qvVy2oX0YHthq8u+WD$lc^Q-PM zAB${xRuE!H-A|w)>9lXGFZwLNe-Jd~oX70F54?a_nVWr7EPa=6K03Dno+o5scAw%l z%{|KUoa$bEd!MeY1%lZ=W7ve;6T%=z1u^KRM89f(=Hq8r>ipSf5@0x4uM~kfS#P`y zAMgB~iXN`!c_&RDYl;!BF=~>Ff*sk-d#$tTUW(9k3L?OWmm1IAf z@QGMw)%vadV4XK3ZiNTnHLfDY)uI*a|FSS#{@H4wDsW=@ueM z*#S}}=N6;&35xxQO@&#BymC~VakSQZ;d*m0-1j3#*a`1IFswxT7Nr_8crJ73SSJxg zf>0S10UshbPZI9#w#&B5h>q7UjSU*5)Mm7{Sj8u6gOJJ+>K$ZMJaRYr5s_2|RJ&A2 zU&hw=mCs_r3WLK?9)};UXN6D&_3ht>4_2H^MPA5P@hvHGStQ)euh{l)!Ljb1rq6gY zF4b%e<2`Mf`f`YoJaJ@L#jcP%W?72xnAFE`c~`nzy+sv6gN{jy^S@hTbzl~lEzbb# zfR=B{BoNPXCDGkqN)fO(U{IYwu$g&TgZ`3z&0D z+MFHKJZ)P9W(YP68>RwGt|&v;A4IQ!L5L6r^soIOA`JcYm1(AGF?uMvOdG~+!`G+) zBtRgabr!GC*aU3?s#ontO@T4}G@(c@;>m?*h42^E}`V|j*3*H3oE zu$IY+tf(c}lN1WCFy|~YW2i6*4MdTR6%E|lVLCE;0MgzzTfJ-bb$(a7;u7kPnz4oW z{M&GOQ=s@PAmP}u4{j6e_%HuOX+>TU@RcP>-~PAYoTBu;jO^HyL4bz$rhchbSz=Pz%`A5IFJ%i z!+#A%{-K_k;p@Z9RA%P(y3O>9l$pD^Z9s!LDxP0Gu#O53EHAVTLk)u+15+*QPEi39 z1yjvm3qcP=(1qX-_%;YL4KvM;r4z03(FJTOT8|Xwi>MC{(Q-|8Q25oaV}7Ax|DTEb zUuVJe|HoNG$^9>#MdbhEEH+T(J^$CvLR$2Hz8BSsTaL)eC?7U1jhP|UK>~3ZU`qi% zR$&J!@)T$gBrKb7)55<4lE7O=FI>`Duw892_MVS9ui)NHrk8YD$-0SM zyr_{qNk$){YSo3}1k6fLAZERw>{e*6nAg?NWaipEvYsR%Qja@2?ZHo?`RIYMYLuy+ zfQ#u)6$PS@Wi=5=RJ#S!=^Zf#<%LN-HV1_s7_*Fq@$~fEu%yaF)X9J=u zc3a>rIEIF6WT@^UW)}=R|I`hx(|qClX3_mSrDwSZ>!n+IReqV*cB}?UVD~U5(WdHm zs`LZBav?r-JLPsryskF1XSPZ2$zTO-bA0%en~l}mVTV&s8=^*YC{tqxn-oCn z2wuj#71ONKQ)367?>CRCf2axuq~QhzwqkDTyRk(we@WJ{+u{Z@pBW-CH#wgPpwX}J z1u%~=Hx1iH_>N|4gK4qe&-)ezla}%^fJx27?4|DkrER~26q-rqjiz^L`(@2c6M2Mh z(;A~Q_H1?{_Ad3r^`P%~{qeD&v#{&5BP!#69(=$(VMp=yr*k12V5{b~$?nv!C+pU= z1&{yv5+CET;}KG_x8E_>yrrcnZe;kk19OL4sx}E+4y5Y(YRp2n;A>;+PaeAF+w`IkuGL!xC2?7;hWW7mI-2h5ztredL7RfPrJ2KlgLIk zzuqlNR%yvqX4xhU?MgMhbI5kd_z_{Li%DclV!yui@&5ix z%`0qZd_*3HMkA^0S#U1E_!Y*Y4`vef<8L*+4!orj=NEXt_K(6$k$(q3%IF&!>KmFF zD}D*yZ2o5yzgpGPOHGn>rZW+MI1Y?pkzYxDLPS`fWnIXhFK{kqeSy*0|kdn@=0}+9sknmvjhtCt4_1fm; z-dh`Q&sNr*XV%us$5eZ%=kD=4Jn%0oc7t_Bc6JIsSwCbDc6mQa;4G3~N#mOs2Up1-_Sah_QkrmdE_@=sHgEaaIwDcYGZd|#@Br9CTiB7d{2tfj?JDY>^i zYkmo;_Jc5{8*Paq4=Li!gI-*9efi|C2QV8wJzJ|nAjFuU;GMLTnfpPt;r_SSh~x^q z%Oxav-PDw+W3^z~HWyHpPDI7_aSvXmy-ylv6!nq5#lO3!O}{EKfQww!C_ZLC1Q=OiSy zM@srEB4x(&Ms1cM-*wHrWGUf+6_+ElN*uitBpzIO0QR%!Nsd+fep$6jy zNok6Djf+X4(Rh_4IhXjOm%FlNQgwu`cMpezPS#QSz2Y;;Nzjq z0O_4vyWsJaY3+b&Gr5Rf&|~7>*@?WdKCD);m~0?%B}iewc~tVoW}uN#TXIlN(AB`G zGYe8Vx(xAd*|;R>!-(_rYCsX|5|$d1yW|ycvYC`~Pd|D;v`2Nx)HT6gDLBb}!A`7_ zK3US8#i(P}w4Hbp+eU7vNP|r;EFn&PQ@`^fN1LuD3P&ZgC;pWH)FTXse+Mbkr%V*wUoJH9*?Vr3$6q*LK;8tEE;#+Hth~?|3S*)()+;NgbTxp5_V_SV9|M&Drn7~!lBEd?D4-WK=eikl4?|Zb)dj_OwzR?S{={6JKsp8`SU zr2)e0B@$%QrV*r)M%JGWVhwTuf{u8P(8N~=k%|D4A09FnxHQh!bj>FIY1QBN8%czZ(7?9 z)N2`(YugjV6Y`R*EmV)U4=CV|mL2KOo&HxJv1^3BJ&<0zKIIwFYwLh31h3p}AoTN~ z+;%w4CvOYTBv8v8B_+0NN7JU!qT*`Wrc(&GJV-wG3~!&@$g* zRXT@zuuCpNOTqLs%kXn*X~z2^OKz?>o~4Z`;T*5eaDJxd{)F&_WH%DM^N`ECMP|$xa8~6;{i}s3PUovMZK1T*{2P?H* zl)s%k`vs0MsjZS49)zBAJZtAE(6KpS z23BB=7EdG=aWcy#3AZCzw}s+#;iVDCnvL|0vk97SZ9{|Nv%R)CUXR&ic+0wsD+7Q~ z9Y8_P@w|HAts3+^@W%QwL*7w|XCH1s+WXVIM?1ka>ZkfHgaelI`gIbpK;7+EP)((N z{{ahZYDSI}IGt$}8SAs94$gnvC;q;83u1V|JAz6!UsS4=YjKa~hnsei%~xIBJf&!Q zzxxBifc$hq2E=HUc$~wHSk4ye$G3IC&5%PMH(EL3<&g&_6Zi3rqWtl3hw3OUjwq({ zDgfA~aA|=F`yaftK>g<6H;Tm>jkbt*SZLA@@4TUrYj&`8jdB=fALJoV1_?Y&4Jgd?u=--#+g|s-_QqW3(V(^{C+0jyi+d^4X z(p&~6&8=B)5$6Kq?Py_tFQ;u|k-T*#J4JcDgX3TG(R``K+ern#B4+)IMfBR0x8q$S zfQ#k*MRSDUmyF%vvIUP2COMu-vzcdcP_xLf-!UXqjnakC{4@0Fz3Yz&mgonn8tsf4<&-2ivbZx}F#4*2#r zZ*IaSPK;tsvNzcBK;Z9hdjmGuo;@7(wcpl>dM^cN(j#&X9!^!=Y(uH8=(Nsblg}fx zGg#c$7d`I^g^|0<2a&OfbUcmjXalcU&nHd$d!=vFP4<{A1#={lm!ANg7cIib_E)UT zkAQh((@UnBr=4t4wdYRe2>}o@x~^_g@MxwyquL^#ZKzd=K*CN07!DFs1|_Owa6y?- zTo_0s_>dxna;RC#MItDL?*{2Cn6sqP!ZfKF2*T!I1)8_SGI27(RdHwp5_3dCbhLt1 zNh*XY;?`k{3J9~r&IC(hgaaDl{8focLh2DjOOmMs9>wgtLgnD~{A>Q~;Q(c^L=LUM z{XIL{IY=BEAns*m#+PD8gok5DSSr zc0tPGdG<=ajOlc6%3tYGO@7Sua{^OhW5QXJ{2CLhKa1u$GGm>iwGd_xVv4tBG-``oWNC*sg*0NvEjhGc zQ;uMUH^($`#ZMic+Y~vnuZJ%5sq@aYXTcI=4}X1?(>NSIb#yLX1kLV=MLB?J-r~aGofGddOtXnG zxSU}KgEOIU#Rrb5{GcL2-Y19wQa9pj5E5w1x6&ONQA=&nJJe;+$#k>suO>Sc8u9Vt zm3ZI8O(UEF4CeHB_8hs(zQ11lS*G%Xtb#%i+%ba9g|-V#*vW4DCTm8XL!wbaATEk> zF+h2{RDgAoK8}7j74QwcofBr9X$-Sb>5zQYD`pk$$#^o^YnB4yc(k6V5hj#0Et%J3 z)imlXAax`uewBr0FOFlP0rXy%^W&k4dN@m{T7vU40Wz)(9q8lx-pUNL2xDpKcnbgy z6edkYW{WvCBHdxAE*p5BS*3kH&7)v;-;Jx!#H(G|p?NdX91^0Hd11KaLCK&Z-K#$P z$MS^f88)ekRO#|sGPY%EfslpfQDxUPPrZlq>D3 zh(GU7(PA3i-Y7iGWuyBsh>_z&d+i}upg>FC&GRZhie3e4WyzO0o<@y#yLUH=7vGTZ zncm9GRCVa;W}DHWO`vi1#?dV~t*ShHTqvagnGN~v(7a#JsR5ZF+6br=abb?s5J*mf zDt4%@;n>RCf@R+YA-<;9hCCYr6QS#2NK&s1VzUTN0iirFhW(+4QqBh75CiN3{(!(g zSE@5LMnQ+Rp>N~kvkno%$GRKhs6O`+2;l+wR0pVEzyz+NPWbjufae{a)|`m1LWf%d z)&4+>r%J1&)?(2RyaBVR0n;(ZXLN-6sLu6NJZ*Q?juIET*&>e5^N28pgtf>hJ3&K5 zl#NHIFBYk|+KyI|B`9Zf6^a5Y^7{jgH*d&BRu1IqBI6A`4H@v@At?aBFDK`Ex#4{6 zVFc54EF9I}B#E9aeeDkBkgnDvbPn0M2pa(mrhMoK@CwvOX~9EKJ`Z|Bb}){URIr;?`*XV{7{_DTZ>Af{Khx z|2b}y##OPMQ9eS_M`1>ridQIc#Wi19NTd}dGO1>$Ae%(+1_R_InxzsMK|)DPnaT(E z?7!SWjbkG{ocdIz>xGNRPltl3Q|TVs?9S$r-L9l4;*szpUwoc6w_I}_O?{s4&anLO zR;Ywf34t_Jo7Kuw#z}{p9e@YKT!#SWK>lK6^W3Qh`gF)CDL3KFH;2%a+D(r|s|`S3F~p>=Le4X$(kwer0Y~93 zN4r|PkK;Dok(O@L(L^Vz|H5M`PSLhppgQ~ws{7QLMdQWy+qYRA2#?!Li@^ zC5#*p^JqAFtGTQnBf(9nvrw=NMf}=cByqy-X2PH$nUcQ~=S2OF2=icl0J^pew zn?8QRW8a&~D0tTsoG6!Z1ul7;`X!FaQ|UK(Xyff+<44mmfQ7QSY7+ z0{V&zqAf!dc>I7FLaH5c(4AYhevp3Djt4|{n+R7L-NAEeJRK@^jk;5*bf?7*#*1!V zGPGQ}XFmTg&#qv0!PguxZkg8}uy-167Esv|NO#i-uI~eoyHGns=B26{@l8WY&(~&3P$QU^|`kCDApPK&L+bpH9Kbde|o zhgZwp&jYpjqGutDro!e+K6L(su~YbnVD55lgjUAGa}Mf|I%vcPkHPffiq(Lpmk`_R zaJ3-eXYk$urEEl{Zu`n;`(vQ%MQg$@P048x!j18JM?VREcbbHt)RfeKI})lO8mur0 zK();fMC|cO>~8%+5kMmKC%xpth#KDrPGU3;Z%&gJFm2S1ioVzEyiZ!!50nhXN>Q_? zjmWH^Fwff1^*|}JNFTLL*M%A#@h)!ElCQvv8zP|)hhK}{^D)`0(#5e7Ye!*0p>v%M zDyR+6j=hIgeTI~AAQFdv;ikb*xJb_`6j7z@+k)i3^d%KSjKP{a+7y9c5BhkO$jM9I z|8y5M&9s0QDxP9ZGsG5~%0U#Lu;GGPz`5{QPU;WBWDq{?Ahm!G8xE{*_x<6&e2_xvD#U`MQ13 z=?OC0v_UVe2rI@7bvF z`k|H5(oI|+WI6U;S+QMT442Y>3$bU5F~flbQub7XHqPV7v4n*bdgwFweg!>n-xu7) zm)a9Y@1Ue#I6|&X++rDO2pkGs;`wud=0su(rr5;7_+)+BNZpgjGQ*ERy(oU5N~uVb ztk6o634&5{wbQ1vgg8zsIhL(Cv4Jd32R-YDWMhdfPjdeKcmKe%7+>CXlTo`adE+S` zO3;>dLPhIoS~ulXi6@>Px#=N>9VzloIOge7tXma4$u{ga1tioHC@WiJlfgX~8ZQ+W zGfu$VIkuSal*;8QOo21;BBQm+0@E0_(LWZ#88UOt*gOh3{6#TExge{QW%MRw&<>}j zU~Ma=UFKBNa50)@S+o6a&|NwQzH@mg75#}(ogi?#d~x!v|K(&h;C9T~D!`^uopeHk za;{t_+vfucj)J3PC&n+qm-%|vLI-_53tqZJpV{yE5H0WXGUs7W-0RFiGJa!UngQB* zEB1N;6wX_O{wd2)^~vS=06xF0KCkh;(IHcM!(Iv1vrbtUt0Dpbvu>|7XfvSXWEdHd zeXLOb9jenFRTRS`uaT?F0Go*_VWc6`aQRq-SB43OIm>`O+b?7s5@%37L=uJ=MiuFJ zPmOnqF^Y`A4;m5&u%dFm3j=TuiM;Pe>1rSm=cWAi%C*fix+dVl76Ne<*BZNv=t0Kh zjKaJcOVI`HOY~DDQc)O2-eWBto`S|uWZTgz!unMwlF3Vb$O@)fE=Taig#uf9=z;=o zKxBSj$2)q{grzh7mWpWe<1NQ~*^K`>LxXlgZhb?5rXLK={vSW z5jq#E?=BZPIdyMX1<&4o<1P$;PQcv)YRN?=t zko$*vMse$}B?2EQRxXKk)nO$+$jqP?Ltyob>+5eNA$cW8niljJ1K=bb$gRjp(tj6A z;NuQG^*jz@I+w&QVOk1tJ|D7wpniaVfbVih5=e!X1+QM^cuqfMdrona`@X%81Nk9( zq4B8&&@-mpUB`g<60x;q95}O%dj>DzbSnRF@LHH$vPhXuXRukMaa9Ol5yeOBRKsJj zUf-Zx#O5lZSw5=DP*0xGL}b;^tVu&`ah6R&2WdB)#-Yn7CY}G$8boa+DzK0FWUgCA zq*Z`k^+zC}OPq{0D<%kN+&Edec2M%+A_IGC&1K^`BrMaWi%P0NG=wyZS6`Z0T;Nmt zF2`JHQe$vLxw61OrSyF4F{P}%Q8!5_FdfNbt*Ad{FM<|wwnLlo2Ze}vsZd{KKgB8+ zY^#kM2dwKYow4cq!v;H5la1sI7vz|VFnf(5%3-O9$xqFGA##TU_B=xxS}F7z)S4Xk z)nb`f+Qxm1I~~wbnJh3-Cz#WHaVy9n-@0}4Dz!_Km=cN^2Hc~&4($>!PLt${TP`}* z>_f{=c{0I4YAU*lurfDgVI^TH;oOL2r7pUB`cL|4UNXY0kz9*(OU>pnjA@&QknTdK zH47`K&TOhdOqu;0**J+e-yh^Gw>WQmxqE!3le0l?@elK|c9wfJ6zzuX%rO*2A<)N5 z2%#lANP@foNip+d;nWZUFDxCui4DKc|qramUr?;3?);|!r%q`8ozOlb_u~~ z?z??=xaPn@fqI^0#8V;)pqBKVAlHZfkExUz;5m6 z)(l{-h~B*}R2j2N{6*mc)*HHq+iMpPVJfm;mm3|JYp*y(p-=hJ*}>xD*{`Y z^JF=|E~2KbD|yGSChhy8=dPNJhx^f9iQwa##ogSV{H`ijhPM47o{l`b(xDZjOuks^ zFW*kzA|APwD*qTygG9MJkS*Usk1zjJw*<<83<3VyGw4i;Tyz#_Y3}~scX}%b;u;tl z`z6i=fAi~k3B$PwO(x?h8e3u>v+-kk<=*w(I0cm{pR7BtKYro0=%Q-4p@xOH8^~p_)5CsJg z0>U$M3dFmxK&Tdr2Ki#5xL(jFj6#A6^TGtAsw=22L-sS z=~dm+JvH5lULPNq+Dp9k{OWt_O(Q<5Ua%JrA5hh3U57@t1{!7ILqo9WVt)V%(=_BMqDD< zqZE_g^DLw~PcGpqj<5Y-cJ}ONekVP=ob;J`RC?jl z)0lfH_+g%|9?G0J>n95An2yN)?=sy(>-Bbf~iwHpnb9Y zW*mLE+0%jToEx+w@YWL0gq@;Ldx#JdmnmlCIB8ZmSMpMJ94C1u*|JN<0si2_kz$MkWBS4? zz3}^!>k9Nn;bd&Y*0!Bj9%5(Avyz~$D|a>G)1#XU@vozl>cxqI9RlMYSk%_ZXz8ui zIZAI^g~Bh2H@u2A4B=3i_Na(JqKtXF3`kT35anh9YQX_TGhoV11jPl|rAp_4WLBlh zO$K6vcrc=~p^d;(knHr^0RebXRAG?pA&8*eZ4}!He)d4BAW{_UbY1UlG}~V$_ZWqr zTo-7V2M@E~gTle(Nu&|I#4nMAzKd4{LWm=fWfjizBp{9c4yUr|@oOV#+L4;{Mknm> zFW(ovug&9n0eYVg?^B-e`4!GK0>SzTww#mC9bc8cWarfrf!RQ&Lwtuwt~%2dlJnA{ zt*oV6`y>}%@h}rUVUyr0^h}P3ooSm`(N<3fQ`wd+Swn+7oHDTro0PG{Wvp zndK3FPgRoh@hq}tl;?c`VOvJc+f$SSenGU5$74@!Eucj^+uHU3WloBah~0JlH$;)u zG&hd^6^Bs&_@@6$Tg0z8{GVs;lgV3->p}>_y%DtIDoJF)ZPidoy0p!Pr55Il)yPoh z5QEi;ZQ_t5eC0H{xW-15$Ak=q;343*P$)PA%rMh1fZT7NkowCm1V!@sKX*c> zs~;abT|GS;d|u!G;D5^kWCW;@X`VWW^Z!&FtDz8+;mkSfyln^=Fxm>6oSsCuuu$Z$ zI2~)aK66O6A~&mA&u_z&t7}_t;D!oY%+3hd>9`g)leE`vqHe*aVmK9$iIiKbpQ?0e$X;K-1OLn)>YuSrCsr%HKV{F@stmFPu}f99y|R(tuNPHnNt>IBS?Xv-pFP( z-uT|Zs;i9*2O9074XatBp}OHQnp!|-_O1r#8HO=)<*eVg4XYEUOo&b)|Lq+6!x&Wm zcLf;jmN}P;qDQ|&|6>PCRk=y$ECQ2Lwz;dfa*(fz^9>@Zs^>6LToVFm_0dUy?71ISwWNnvW^P)5GB8DeJ*=#mn*u-)>kCm(;3-Q-h9VpLd_fS)o=SS!%7pBB z8)jN91D%{`4xPaL37}sN|D7bg(HeH~vWcHEcQZ zR(nJ!q5v)koeNo6P-)hbnHpSHct4-@QpC1;tGRb<%`@?%eie~P=gvn+`%~A}Wt0z? zx%KPXf2kOS|J8#puLywQ*pafEvh+fU9W6-?T*@|2iiuzJrHM19<|Bay4nG(y@qymZ(eRb zGPhHF*OhMI_dhcK9R0!dqGy#EeO~mI*r8u}({Xn^5@bo{?bWMJok*G7xAILH6ynvE z2Ot-Vu!oB)GAH0}P!3JDq#gfqu@8lfiW2NN(j45e&eYfvabah%Dc3BuHMB~j24s(C z2p$qTy1`Uvmio;8=8J!BS?`~`Y|--{{HCebGmxjp#(Qt`C2(Q*qV$8YT;5_Pf}KgwDEny%t)=xTS+JA8DKkpqXBR&q)m@M4 z=u7x;KLzvhQM8fx?{I)kfBTLKdgfUCyxo#k_(tKgg^lG@5#)~=#U8(-<|&99oeE`F z)3@@YN04~cENq$Ti^s-|-Gd67qPxh^EwiQ#=0BCZ2TnZXPhi;aSdAM8zuI(HOWCA3 zCWE!VwHBSMc2Z6`QSC=X-8qzcFgLGS9G=%JK0#TME`S+%_G)(@KGF7OdCZUEXTd3d zCG*^|Y$suIlynsK?3?0k?wI}9u|;o>n7Hk$z8RUsk$w~Z{*|b6W?55*yLn%!dY1Ad z7z)1RkvUhnTzboj!K{T*C(d4N2ockE#7$8|W2h8XQAA`YHIiDIRvRnpGO7N!s-`Wf z6G{r2E%PGmg4Qs8+XcY=G2PCn?hzf94U9%7IA#mt!QBfzaf8Z_))(W@5!D)oG{S|* zJ;n$clV!%GAZ8OZK>ZGj&8z$V}NeBxlPq zl(s1~2va=Cer~xfyo5Ff%>xrV8(c7n zLcg__L|c;qNs}ucHqOS7@qDcNt^=X|h_%-K#kk0>3%{?#B7R;BrA9B-Vl9whze7Sp zN$CJgnF0~t+b`@7C=S(j|M0`rXlrE};$`1das1e+cIF4-Fibvwa?+-Vd69f5FGUZ} zZZ{kme3ga)qd2ZOVH6;)6i0#N4%7jB5r;7m19|wQJ3o@<1UheUfZN96{38X@5IwbJr9CI4X{awI(B9A^Uujx8iYIQuQ zaXg=J)fi;mxNqI5A<8N5qnl6UqkxlXg6I+Lp=|lZ4a0#4s%>(XxO#?IX*WfxUeMXZ zVAN=(6s6$Kbs!^|n!$ciA@vWp17?D_p^}FJ=6HiWA@X>gTc~Nn3MyKS#YuWkd zze$yQ~H94KSE1DnHk6(7|v;@9#71V;~ATA(}EE15Qk#-De28xA|m%{N9P7#qs^y zO2VL13L*cKi$wWf@b{lLGh+V>{F&Q+I+=iip?rb-{9-$F|1}f(-yg=$U$zdWbOyH0 zHiqto`i@Rk#&m{%fut?n=Rra9PxA=}aT_~lCq*X*V}0v?pfgG79|DDC^{0579t9i? z93pumDYjXq*Aj z#A|ktm`-zqqhla?4;**82p$ck)L4ks$y3RXkJGx0({;XHa`bj!PRc?*Q%qu4T`FFR z28D@;j38GdSz{_anDIro+(Sou)KY0i!aT_+Xue|KDYm{`U4u4_wLZhpLtneTw9jgb zI$muo4Y@7v5ZuW;*;u0!e0;)UFyE%~4$WFpvDxNc;Zb?%Sl2wU$yvI-MA9YCXc~b( z&WUIgs-2}27-U0AdfQQ@P7#PI16H2bm6DFPJ!Ju|$r{Cxp&HdVKzQHxRdTrO6MLtR zS`O<&T*ibo3wo+F%NyAhDN&@x4|g@17OYFs{qn5W4bMmn75O$AmXN4SMn{tCEoP@I z!zz_&S4@7mZx~f)7FIJWrod$q7tmU!6CuZLwvvuFsT6t&P$yBLvEG4Lqs0W>ubWgk z()|hv3JppjxfMH3njzakg;FKypwzQFMTvrgY4ON^x3eVfz{s-b_!&qFe2UMG87kKC z;&=LiVr`;cjdNI{%Ff%IOCw0(3$K)*=x09aGCKTVNeJNmbz zF^}k}3vh|Pc7$odUNUq{#~NW6KKki%g<7WSi7|ZgDiCo!Wc(e#cK+wDFQL8HCIN1^ zIo}w9#DOuGHV_nJA+U<3SKlsXP;mi{w@J;>X(F>KaGo-gDQ37ZhIay#Pi|4l^qW9c|JW(C7@8Ijt=S$ zk;Q?c;@#PLM-D=9>6j`He<6~cRWa=AfaVp6R&m_!Ia(zoyMf?v=MWGOiDA31R2pk(7NF_2Re3U4z=vhL?HT zM6r}Pw$Y%$+4b!efl0jjkdzGTD*92Oc7!*_$&@U=G0do)e|d%eP6}f+OEi~>d^>Pj zP*Cx!fLZ!I*B}j)+XaHL#>mW&U#l1mxORQH%sF)%^DSXRk8qdE2vlMNd%K2@R|dy! z5X<;JZZb2LebVa!hyfKQdn{l_AvDk~xI2A2rN&1RJdhQb1!-&7idfAum#M`ck@1RV z|6?^TyN9Ta)_+r^Z#H`*P?UFp7Roe~YsJ~%o@+ms8y^3hCHS|QRDA-qEMNt4Sqtnf zx#iSFqjpWy+V{Rv+->z*ZRHS}drO1u_3zassa%T`wx2lo>tD-2!2cUKlXZ6bA9%K| z@@cKVc|t?-4ZQG&0s>;KbgxHuZU7oTRgwp&a7Pl0UIVGNc=@jG<1zZ=^OHG(5aRfdk7Fy_Vf)m2E%qGW>o<43L zDUafuhI}oKs4l0YOaBzFk983makP_wt@adKx@6EuTEF(}cPZlfaR z+to#&Pq!0bbC#sFNZE}Au%L6wfW0!wa-v!a(oZf|QZHS~LPuH<-b7vS9P<3ZG+(FY zYU#YJi|?lHp*V)6;?h^z)`sha^j*yIw_z9Cdv)cqRzD+2Lya#=v+x?sznx&B(yUbd7@dhQq|}I0w#OJ&CPq-m`%#%6m6w$VkBIt$pllDu zfa-~OR4G14NDkZXHVlRO#x}Z2f$C}31|`TgY?r+Q(of$n3=WE+k73+W{fqn$w8993 z*5~jI4jhXX5PDu5087iDWsG5np?X{@543Ej52b=dzLhndD4+3EdVib1sbdvl=T+2^iNREk%ey1+QzQX#Cet1CbAt=m8X`}QjI(-^tex8uy} zX9d~H;{8YUE>?<&7|x-L;?PFNJ$SI)a>xrxi4XrCfdpdT=+6+clmz@)fe6j~*jxHH zs4zY4^XDtLX~8SI?G*9|6A~<{h*5tv0oX5QbBsF^lrhVZq_y zQ|vEG4tFS^w%@6_%x)d#GGPC4@DD%wHm&m6y}kb{2lQX65Fv9@V@Id|QH2C6j7#+M zp>QY2L|GRsiCS5n72G8?NZ1ht?DnC9fuRRrtJcDiYT)}9On-$T%e&Lnq zP*jkwY->H5=se17mHKo4{s&qQTo@RtzXrRp!We_0wC6V7WK3kVaJGKsC2NIL=BC_C zh+&|tdLE>8?FF1DbKFtW(fjRg+E=yiQ$_Jzc++_bQ=}d6qW4gDz7&N1sN1gFsL0=G zkp(8*?WOF3wL8%`c2|)OS$SbC*$vfEeW-~?Rywo$IfFs04o?kl2@isn9{dv6wQU&T z3`~3LejpHEJ3dLeRHmQ!c(d$$`@ozef_s}`zSY<2CrAYnlE(`Z?_uSO4blUl)a&et z8IXq|9qOb==)=X;i%-m(0>j436NaVpefJua; zEIHQ~Tu^HPL5g%TB}l-a=)Pv^`pA}EtQ(={=1@Sux%RLD@T4Etk(h~2kxn8t>%%P>2jiImPalt9z_4gw|7bSzZ#LowU*PrsF|L4l{ zzd-drG5?=X9UQkV0V0nA{P-Oiy|yA=KPUBDuK-DKSs2~L?`vK}E^SA;Q!MU5s1228 z#8zQ$XxQ;rk5aSW_OJopVJq)08@qge4`x5aq_BR`T+x$@tUDM+{ zD}KwM8c!`YEF>&aW-0Sj6Y_t9A(60>jQd7v#pv6Pnhmi6Wsq1Ul{_c?#YF z?_aN;)Pu^1(t`bFsbWSQzjli;CpifGSuDy7VZMXt2TRloL!xl! z7s28}!PF^m-mY|0Q?}FSeAs*h`)jVUo$@8w^)s&S{~FhSV`4r#3Tb`A|8S9|=?3Ib zxNE!%CQ$YYFtQkiOgROyU|0qMVwnihkgzLGnH18@$@ZeI0F`gxFi80NI}nfZyIm%b z3@aOsTb&P?u7B2+n~%`HNRk6elYcYXS@!ej%~bZoEhj~>6zD8#U<4avjo1^oaOdzt z5dk;CTo2jx&#gk35t%kiXOUj=G2NVjc`<42&CVAPaEL>*%NNVqjkGkAE$-(ygHuw=tFhx%Zg!SP@$bt!r7%f42is{f_XfQcc^4FRf;n`3aN0A6mKZX}6ndV~ig+ZWE~6jIjUVs=b+r1+v_ z53euM(E6qUlohVlzolc&BlvXUf2gM!OthWgxsdz5dQp)9K z?)A6SdZ8@=+2J#uM*kYm|B{Cl%}s6o0~-(=|Cxv75P%;E*(^;_8g%lOXGM3(|0H4o zc}PfFFxF}VYzd)+`0Q{Vpk*(aU0!Zd+tpVua(fwZ;ZJjzcXq%Bt0~*)`pY<#pK>CG z0ni*^XSmK~AQ!b~y`CIQUZ7zxf5Tln7+cx8J5%vwGm`7ZBY3~iYDZ1?^S%SH18mZ@ z4Hragn_}-5Yc|C{*HPJMy8`*JysL2KfV5l^pSh({MJ*wm(yBnxSrpcDw$*%}{N>EO zeP|y~NwXDtB~-8D98{4nE36NRlzaK0W*VsP@^KkF!l-|1bl`~!cjN2R$@+nB zhG#C9XNl313iP3e3zRcLOTb)47&UvEYg@b)xEGDNx&u}#|JxWcb=JRHa_dNf_jr@tFo z$(!6`9!6+Stqn%H4m}H9=S*Ws6Eos+v^j*LuG?Y$dav#mU3y+@%7j8WsJA#0oNrIG zzxw3!%GKoKC-|8nnb`lQJ z&o~MHuiN>bNj}_vL0d~>YsY_~`Ply3QDH%GVa3k@tFVoszMZ49mA;d?t<67VUsdvx z>--Ap=YTa!Og{TJEJ8See&58GXxytF*m(o;L}Fm-7pTH|gf@b6bWx$?K1$NB*;=f6YQq;Grcb7Js)1S=0zVypD#b&8^7qG+gOB} z9WPxa27Kxs&d#Wy`>y=~g3xPwrocyqqSVPh^vwZ0*1l6sIOCkTxrV--gh0u8lPRj! zVM+Hgf@I8#oTNn`Rh?3`>WTUDJu=1xUYjHQNiUba#zSdYp7e5+y5|%CP*bx4;N&VQ0atd+@YchLC?j}vb$F^>Qji>w(L$NuuDxM zf^!5%_Rk}H;YSalF+U=!lDtbK;>UpNgYuQI?Q@#Uzb(}K-X{BPhZ%YzT`iOKXfjcH zUCP*66HV$RRYr5;Pm zU9tMgR6)#XF8q;Uy_Iw_ik9! ziBsIGCwr|jYFH zGG{thpOvFKCh0;~y?-L<8enM&u(sN_GxTsMx&^MH-ts2@P6?QpwK+}d@J>VNP6ssY z&uRM9JyWdxQIi;~KL^ega6-0z$49GKP>Vh7Fjw7wYzVieY^n&Yz>temxb6torgW)r z;~$Kmyf1YV9~@Tp5*XA$HAj6xspMU%95c^l#ULNo8f@&au!zULd-wtekEiKvulRgJ zGoO)yr0%ghj5SqwGt_w0HN{QU6E_uYsA+Q`?`Q8i*uKTmCb5$Qmk3uvLg(o z`w2qjk`ScVb}&KBGoT4;BjQM}m1uB0=W)a&BRzc=YM$oO6m@^9 ziJoqGeRnHe6AWw#dO&UIrw{|-Pkb_PBsP-Rfx;e>An>*s+L@5=Hf12#dG-|v2lF7E zZtA%?#xUb#>K<3&Jzqb$T0IFp&?!i(K~u2oUQ=+E9Y>Jqof{C@y~>_?YWzTopWlzb zzQrN0^wt4l&HeAloqhyjqD35VjZ;TVDj3;+4yS~NOXy4X5W1=iA$5(OzK^@Aca z?jeoCx6wy3j;kIgn5}%w%%gXEje(I1wky(uB#|T8K5tkXuK5t(`Ve3F6b|nVt8rIf z7l^#m?u&m2s6w5>%Wq`1MB$UfH(#k3T%m1A1=;K{j-w_oe|&p4%&C0&HoDAT>l;=R z4f0h>GZ@z^Ly1-|)U(L%1)V_GC_6Y_X;+;P3#UTPRUiCSEFW{H zI&Iy|%Rnrj`Ks*SOXn$V9&NCl!0qL$PwNUn4Y{c^)wse{xLUjWZ4C~A3d}gUpP7WE zxRJA{HAHiWbsf&|qO#bC0XG%xkB->SBNzuhL|BaZFs|1n^g5j(weupkEI!`#P)+l9 z!;R6;j|`S!My1Wb3f8lj;O{E9=Q<$k()OZXTyDRvG?D17WB0gR0hI!ZfzKco&InSs z&E`=II-sC!4yX)*Fm5jd%=pCoTS!+pRXgZkFI-dIIFXlYi0lA}e*ZTvfaSlX zr+?Hx{~ECF1VqX8ViHHbeDMQr`L|o8>h3`KVDy6X#IS=YJQ=D zTSKpr2q|zsAzT94$OyB?rem%Qsg>&)SG}^$xyqjs3Fm9IIa@?t^PUM9-94rHo+!3; z03frSl;xXUExNVd^2a)VUM~XZ-z+G8a;x^WmW|~bW=tmpy(BL1a06ap1qGaJtUMG1 z`mVeSEIf+JgZ4z8qBWanR8d6A{V@(P4XD?8gY2sG(lCnY$P3K-Y1{@oB$tqgi?iXQ zPBSFT8iT03cK=8iLy1d*eGZGJQE4a3Z=J@elro{Eh1HpV8>XBEh%bcKni%0~@MO5+ z=wnX(v{epA;cT)A=a!chPl%xEgUz;|R2ugumtaF|3m5sBiCbIMfek77sIJz(wroAgqXEHhC|#A&J}R*}OXgT;d6 zWNAgd+SJ@C7yjHjb)nJYH}I&Kt<>E($RJtfiH=Cx@)swl)s&x>n9S9__pPB4dYo{m zBr*f8Wi^Qo#tc_*JaF!lc9aGV;zO92HREoABF&Mk#vLSk0g=tdg+{j{Vv@(HY{#kJ zNSqc)$NDNCUF0UGu5!2hm^L}>ABl)Od=)*A4^SK#nP+E|{cYQq2)bKJ6u2kjFQg9O zvrp6T<8n)ESfV;oEz)@ zdh8_*kSUW-DG-IOxmskPWe- zcYr`0ugV>+KUgxmCLk#cQ}n%myTcWR^K2-_4VF;S?pP+-%u)a`f$l)?Z-OL$&|!7U zTLRiCt9JpYps6O0nffY&o~edvQoFbt`j6q&31>R~)dO|pyWsha zSAWvF8Lo&lTxVE4sq3N+c<0l)>3>31pxxlU6`-t&`cj&3djuj$#lNw?VOP?C!Jol2 z1i=J#HEK1mlZSlJp{{xh=wq+b5-QN6Y;w(uuOuI)RpDWGurrBQnWi15kqCI+m>!-r-yV8j>4 zLMGl1X50;I)op42uBMs*_=1E%peT>Q2nhXv%PZ};L3cYy>gHUx6yvphn84Ze zoyd@(&l7&2fmOWv=a$Z~8vcLYxg;8AqFU zuhu|+QDsVl$F5m`c8w@-sqIWD+|FDZR%+bRF^8IYvpv~x1y+y-Z)%NZxw+5fsB3ly z7OSYd$I>Fd;$<~>31L~-ou@zmTT5v9; zu&8l(12(28*^_^S)2P-k)u^;ySAXG7^MJYeER}m6QXnHmy89^DMqQ&^7-A%INCU;9 zXkMjE!cIx7t|n{DC4-B6xxCS^hb(ZqUs8hP zz#F@U931jt8|ZV(^)}3)&Pyn4!vwpN35@hhvDfJ*`Px6jtQC~6k5CSz0{J6m;Ra3; z*G~GY%?}EW$W60fvV|cOWDC(wv8Nqm3t3KFA4QR(BW#@_a;G2V-~uvLJTLU*Q;F9M zwt;xn^hX3#Ixpr6JKIwA zgR#=PxqWv;UY+c6HOg}6tkKvkzxdMEP14NZYNR!vWIcgLCkRJ^Vk|<=7*6qKI&omo5o0W0 zS-!@XAEK&6mb}~r(AIBnOi9Gq&A%+pP*CaBzjC;>{X#=V6+zvm@%r~ZuD+uX+JVnO z8p^*uYGC?r5Fsca_@7WB>n}l%Gr|W>>nnj4jqqGKF$SMR%a>Y%yfOIT6^pSNN;4R> zkUfW>ij?+@@ggFgm-C8(y})@FAUeKNaj04e562$wPDIT+%cFcNY(OW zxb^PWFq@XHla<70L^Jc7b2|5t#=U zt?f}LiKkruYLim%DVDkO#BwEvr&TXOT15HL~ zqgdyKmOe@ziVf68z{9-y_M7g=P3b2*ImjQ9A~9F@;cW z35#=)>27+#(Q3%qLL#7L3?uP}HRA>?sdY>ldJWnlsKNy2b_ z6htU?P^|cL#fuy3DxPEaKp6yE_u6b-jAeHzJbgp@=J1QBno`Ka&qAbuwf;;Esy9a~ zco?|*4y?8QMGw?98My;$^Drl^&X_^aN{L6>p3MG=ucYEq?%#f&!mF8NO1Uo!l$vr% z9x?By5oo5$Ic|R&euIPE%Jqxu`5qJ&Jw1 z;>=XwBNQ0qN}(Tgi(Xa}xFcr3mXChwB_%VWRl$ZPL(=!~GhI5oa$h3IcfeEH61j~n zODc%9SOMw@&jW+p;Edb>z_*pU#{K#xzl1_&JXID2wC9y1whZe2(buss9YZdY(0EJb zA$*IwrXEYt@Z(SDk}LcN!te(}RguT}*CoMyAEZyWLD%TCrF-`V3Xc%b?1J7g2!RA` z19?}om%?@dsvPmTi=CXi^o0RuiWaCx?7s>dn#G3-%+JE+@L#1j{~dZn1pYJhXe(kH ze;R*F*AY@nP{~t(q5ovDBBxOKnG}O%FiWmWqgEI?8Ba~Jum4Igi%;cR30O>#W6Bn>~!+vh>OG^{|0%UBMZ$TTtz@bojU!-58Q|Y ziOEIkdM&%=XJWDaInGb(!^Pd@VwG}bZR^0I12n4Svek?=5-1wWd88jAJl$flwOYB6 zz&(t0_VzkyWt#;S3c8&>QhbNOvE&muZ+FjPH5O_pT=02mb?|kHHq9dU0wW1Iac1k) zR=O1Onjn_8DNOdfJf*Ek0C)>N)LU~Dr^p=RSg_GhT`4xz0g44l{khH?rK!qBzIL(D zv=|I_^JJ!{P-BC(^CS|g7NdibPFc2oj|=oDT)WDY^-*NGW!h+Fy|(@DLh{dD^z)mM z%)_(540Q@g=CtfIn^0#Ehd~%C#qxlD(dyW531u~Z{R83|{b?6-aG#frEOfgdlpxYIZVNWHdM4e{vdtfp$b z>Ol0!nq4L()K1uvtN3t?eyWz-UFpbDH`KatND#^`12;HAR60R|k!oY<7Ht3cm*zRtFUh1)ZZlv;2wpg)0zf zgB4)(mE%rGlww*LagaDEPG|vFU4CT znVdg<{F#S)j<$N3qc7=l<{j*Mah~Qy?OFNZ&nwc_VE#K;e??ffcje`7`W7ldm(2Gi z+C%3z#OmKWfJ2(&KeUIZt7hgtO){U4zkUwCz4}k*az97XVttD#(BAHcGas0qxGA3Gq3pY7yM1?- z`NRE<^%iE^6Qg`ME=3q+_HC*+XQDg7sxI;u!+hW#JDYbnOQ^CT>%%?|FnsQTv~7!>3%QZ?@#$ACH!? z{A9ea2Q>Mu;0#O=+QA-?tj*EsAQ6xSJD5ml;TpBE%3;h|Ak@U_tI|kh*B4CHfB*tM z0vm&oh8xv`aC^m+h{bTCBPVs%Ow3N|2d8lt^$RW+ttm_yVZTHy{EQLUXyfWw8NTt; zrV`B_|3nL1mwn8;Hrk51B6Ou;g4v%E%AzdJ6~87L6ojDZA|Y3p6pHpm%ZI_v@o}X( zv9=bdP@^k#E6R({SL*ya&%_4HPcTRnQ+}JL#ha&N@v!o6@n^SwB~+fDnw$O!ZKNPc zvN=}@VbNMSb?|!*XK+fnWK@WaXHsB`Tz+(cVUovCt(=0ObagSa%rSo_-~#s3NkPh+ zBDzdC%Y&b?*%3Jr1-$TgX?l&VkPRIwONEYVLa_yEy!m_~Fg5T%ps`eQ>ME*3#{qWz z$1U^@ucS%q6=z;7rV~yHeH3LUyM1%sQ`3Su*|fxGO0ssh!7zc=pS8a62|Xp)b~7 zoxtpf{R+MkgSx5q^v1CsPf~p4M6xFO!2McA6n3ZKqh2fI!M%-*i7QFGMNaK$;Rz^z z$&Rs_sG6TDH*PD9)~RmkiXkn2-~MWB-FjEyPWgtVOq6lgx%!g=>E0kC$OZU&g-9Pl zFi4+OFq2<@CFFqw$4@sPh!koVLjy7KiY1-onY2l4C59hL8x{#jEEH#O0t(cJg1F8L z!r(CwY{PteOx-~SA_C=s3_yEeJ!}qRCQKfBiU3=*6eQUx{h(bMKim#+9pP@4X-m(Q zFeKMUML(d%x{uny_~K5Kud12TqgKVk?pIuS>AJ# z9$>WjSjD!_vjM(l^O!)7wzrRO_X6V*6Is+F#Q^VfQ4VE}rp>gfb}FF1zf zej2j_|1}N4vRL*-Sjwx626(mh6L|gfb&?+$E!lwT_+H|SQ0Et>!R1C&s^&ib3~!0w z!gdR+2&xwO_g`K(b|pF_JMsnwtpejaQ(E_s@oHXIdvSvOF&-G@?eXMQU0Wr~g8OeE zftNf$UYt&Ey7}vY@hgHUx7le$PxtR9_uFy1)WYSbmiQ>~FwE7`hBTL6VCk3aHqZ8P zlWPDawA}jA_T7fMP=^Aj%h)}S&?+6|SD}fI{j_$(s|gCaKpn=TV^+ls(TNE5eugL! zsS5_GByj_oF!ePNfUGJmkShd!R3Eu&d)W6@q2h>Fv11GA+q;Oc(t>n6A98u&#ol{o~uJ0GM4a6F3O5wSgv! zMeZ$~5q*v7YM zv)_(QOI_Jjd)@EvZ}4AIuB~yx*q%u;C5j|zI_LS28b>r=#ALg?kyY$`jdA!H3BDHs5YTkSPxJnoi#(C$+S3s2rz|5EbhK%7- z*|7Yivyg!0ebej8%S7)N9GHp-3bkbdbylg^OYns_xzg+HL4bztBc&iyR+zi2WzI$cW z+7)-WmYJGMu;9ZbundhlXRiI1hqCv&HJiyi(`grt)4b)9mnz*#_0wkeiN&VcIMB8d zs^s+2sSvOnrR{)+-J}fFxrHjrQGs)5B9xUxKmVHsRdHEWGt){nS`$%-G8uj`@l2%V z`egC$Rl=wBhM@hPV0Rl~60{BM&38o<;>u~#QChy{=w>{)ST=#lO^u)8cJ3IOW25B~ z7$T9dR;p}*STlHWZf78i2vOE0Lb?=+Dh7CBW`;25Le(=}hXU?O^p&_M5_5 z!k$4N+AH>gs9=n}jrdn@sl`1DtDf{m$qmB>&lBuu-x7=#&3y33pZ!Q9=nRN~qH4$> z7J(n#nZUa+Za8X5z#NL1wtvBV99}32<&YUrB!*aD2>ZTEjuzH4a27i&=^*}s48zO6 ztYeUu38zYfsh`^E6rC(UG;@&-%6N9TW6L%$C&i{^#|NTdL!*xCbWg zg-deOs2}3QCHHZg8~xrc=)Wqq`CQfgrW26({UEx9%19_KXY7a>BOMp=THcrp3TMzs zc(Is?dwGUIt#GG^=6?(m{lPdfAbv@!l$QGTSSM{7Q%?hml{UgxAhn`L%>;QhIDhAD z#Nzn1G`gKmW0a(){;E77qUuo}agHBR>As(y_#d-=H@Pn*WuFY!0q=tw--umzkayn{Ru*KJB1iw6BQl(M1vU(80@TuiAdWp)#zLGDFqLgAcU$*nq>DP6>`?Uz#IcBQhaLvW@$ zYF5ZzXMIF4=GQ6Mv)~&OJsDj_5RY6vBWFN}MYWs;6R3MZEc4MCn4Ab1^5{iZbwtW8 z2Q3o4&UR|80cY+*eD<_4E!c<(eWVnL9vbMpNNx!yeWwAIzgTWND^}`MnzeN(De+Y+ z6(1Z!Y`YHa85Lk~4*GQdX?Mcw$HPcZxfI=0KK9tCy3$6FhB%rdIC8=$ zitQn^2cGK0;TS4FAB*HGmwJI-qVs%NG6ySYz?X7rjdULj|L!B(q^elwvJONY7!?5hC^*m_cque@|*DvCUKX27N|uk zoNz9ti1r-(sc>5cJ=@9omOrkywy!u>n3h~P$3zBu{ zPRA6< z;LDF0KzKx9``!qxMT7{}45E*O&L^LXe2U5jF^s|n2M5i>UjTx5MQ(>jiZY|8;D1IO z-A@B9aFq>WD#1UqW1R!Q4hDEBk!3goR2^CBq;L?HYAB1I|+~P0QV;G_j_;R^> zlm|Qw%!$M*{~lv~A9}D;JB?Rs$7N9KW~KkaFwi@e_xjbxmFpKDoKQ&<_;~v1nqL5^ zEuVM-%P)UYtDgKNNZBTB3i&GOV&cU#DfTOSj(7@nXA(u)M%pxmEF@_4B>6Ta)-er* z%~OU%XA4jXVP(0c2=eH%J92EhS_wM~qMDnZH}>KAEQocd#)YhIPf!{wQcGx&mD&5j zRgou#-+cPq65?bL)4udK#@#V-=Hxk>u0G&&b`N$Pu`9&-ud&CA01-mIE6zaHxAUdq zN>wMswXbYU`fzu={s6s?H%tW4GPvaFbIUN$JzRNfIENO+`n94eu4Nd$ylNN=D+mUd zfFwG137ob4(1f8nWO$M1@5Q{e4CW~?R zm$6ZTS^6Eu0wkwUS6Xyy8)eO2rVB03-RYLoS=6H^YUXVQFzY92Q+8r@eaSI!o08}=vw-53(d=a*a7#O-N7Ru9R@d>O_I1f zcy(5BW6Jo5U7L zu?C*iA@U;i66dIG1QBz_rl$2HhpkmJMHr+)dWgMn@VNpxII`fE^5pl-(>DTYc5j=^ zp29VM4vD7XG@yWNC(S*srE_hZv8IMu0G_Zvg*fl0A7$PRBpi57EMc0Yluw;=tXK81 zG5WLnNz@7hcXffQ4Q$bRXY2!Lonh6#JBQIhjjEqJ6g+xl^}GFLq6#{Fpk8u$;ZFST zHhC`rH;SLJ&)I4pCATCy#MBk>|M*n)cQv`@UV+G{*bfjF*xfC;e&`=@^p**A z&38%BpN;rrv;E-^&907ub)-dv)DH4QAJwm0F7GCH3k){{XCu-vH)f&ZE2>qNs)kxI z{Ajw*@=>d--0A+SSqT)%RaE$7#I@o7P1*Ecn-#JDQ>G}t{Ivn|JsHdeE&`5H4W>49 z2`Chmt5A_VCK(nW$A9g=M4~RpbY46vGT2qwcv+&1cs{P7`SP=hPR?R@*J)_#Hszf# zYwC9SeeOPU6OI@}IrZ&={m94jqIJ8~^JblwcMC)=j1a1xBvCAtYDXW+7-@`TBIPGv z9}yCogqu=;sz5MUPEZLLTL&sX^8ZEJJ4RX7DBYS>l{PAE+qP}nw#`cIv~AnAZQHiZ z>OAl1zTLO)?ep~*-~PS!zcpgToH65xW=J~^N|&WuxnZ3wS5xg6Qel>f7;})-F&L)C zg(aw%r9cCDYKsMU-$-ll1VN4MwXIq!cVpt#gg$hua_byp4U94=Et@^aG&5$>B5T+t z<|Za3l}fDU^5i*&OX<;Rpi zSX+u&h|%R5DJBU*0;f=?w>&>zH|e<>y44p6M52GN_e&}mqma@{p~nM$BpWw~!j(4| zsOh3EB8^>zlrWu=R746t2rZnPZWcTs7XA@%_6DTMO#29mgmK-mmNoc?N1zZJ37f{% z3qzHMs_80)Gp$&1s;eV1mklb4q$9FO8hF6a}k(2|RylUY<{g??>%NI*RXB@`ei0_6(nZp;9kO4DS7&A5%^ zES2su)f!O{l#=OfDb;sMkck&3v454a*%RkJkN_Z;m>)2#-rV2d?U$P*u9tEy7a5O>l8(K3jT8iKM`{y^Zr z&lew1l8XE2I*+RPE1)YwTka&!_QCV173oqdi@-dMnSJ+xnnQ-rvUC&txe+RW#1wo( zMw2l$fI0(*+<;AOgo}_-1z&Uo3xGYuAqh=0EuwISonLFnfs4?P9+3eBpWN_wg!xJU zQvXjt0CX_g8yYMl*Z55aRHoZ}khR-v&?VbmA1u_C9@|x)OvkkV>Tuf)PCpop$0ahL z8EwmjzgHf$?N)=wWfugHjHYA4HgrSLfBw1>d3=x1#|eEsx2anl{CZrVvm6I7*nUe9 zWp5VjnYY`;cRN9_i@fr~vcmV&0dyzgAg(lsdpT+uL>IKOv#b$54q|Ce%nokm*8ZVV zh-c6twx!G%_`&jGWB7~*>6O32?JxO@MyJ<&8{7w;E@E1=wsQ3^<TM6*R1t(}@a?Iy*Gs)G8m>0*Uxm&-O20u3`?~s z?7`-Orr;|qXjg43`+VLj1u$MKwTg<1RSmPbKUp14abM=go~S=BA_UNfRH?&l7TsD3 z?$t&d!?Cguysm-QA2J*wb~wQ}T6fZ*Qo2U;LAhCPQj6Er4~(vt*pcqk4xF5@93fG^ zKKl>g9~d+6XuwvSRJVIjx%4@-lNjwVbNSuWQ~cxuMeI_YIR&p$)gFO)wWr{SVacjA`(+iGOjve#j5VR(G59t-Yf$V~&Q=_D@;$I4qRZNjr zztUa8#VTHq+Yfv!;hIuRuk=c_sXYl>;sT`d7D+hxOrD^~WMtFoqHH&GEs833T`znd z);~|C&xUufDT5n#a$0xX)}*+(&9yb8Tis}p8&H!b8C^U`+^6Gu23d1IHCii`YV(H_ z`-I)wk`i&ax9lhQg+GmNiMiOCCa#ZIfj=C6YdhUdYY&>gMVKD6jN9y->t|dWP4Bvx zy2(7RLDRC1kB{FCP|1$n6&br%QPFn8i!x}juTzig$>82sOz!?OBsrad_m%xl-$KIt zr*G7MnJW`llx1gSXXUptW&9sst4w8W#owmiV_UE9d(9$}8ss?$ydz*KdB`6>Btpy- zL9B8WawsJ00tY8aq*+uhfm}vrl_&9cMgWTvh+|`3uem#`CO~4A#!Qvfm4Z({a&j4-utDhJRoTF{Ni# zm#xfOz0o`R1q^1)f_PD8JpRh%qHJsSlUdKgd~t4cVNz=r5-lyY z$plU;#!OP%!01J3xwI-JwkSSYYvu?j)u0zr%JQdlvq_^@PX4|co@Cj*k)B5JraB|F z{tKY}MoV)eWvi7VQlDHlkqD z6|pmR4vD_pxY{HoR;VNk65+XeAVMG$4OZrF`ZafPdKrFi@)A{E*5vQyiI}w99Dyny z!t@Rvfd`@%v(%lX*rKx#B=i7_I;2hha7l|S77dLqKJOz?3A0p1+Y)&}=K0w`eYy7t zH6HB=vm$0Y#?nJ7Zp*pV^PJsNc4~8LyT}PtDr&-B!x9jlmzB0r)eQM~CDEdZeLa@! zC>hgm69*n~Ji&01`+IguOytCY%O@rkK^TW7xyBNbHI)z*CprZf$q2~VuvGZe^|HKr z@-fWoXxkk34h$~Uv>*XvWy^c{M1`p9V)(+L%FTqp6UCYHWDb%1ULd^VG1A8*I!nc( zG)&OSJG`uq$n}hOb?H@-}<#PSXn`Qv>%m z7ON2<++xQe=&*c;puBi1@aSRIv`02<`Eqt=pdK5c%1Z6D(2k@wNHW3GIla=o3VjEt z%If;h@kF&Atrw&Km5xBCKVCTK10@@v#h;L^JSS0@(FlZdSKiKlkY|BnWx6k#1C|U@ zXArh&s+O&K=Le#dw%m+=IHb-19&ND2Y=9)ymeDOrI08yO)s~5U>R<}0cFNrz(NHHF z$Yi)pQ=5IH@R(!_1PY_hgTP}R+;v^cnJ{!bRgpT;xgExJO^V+417)z)yO7=_dk=er zN!(6=K*pOKz<9B&2h6j8*;&-g0zz&nxj?WL@1y96O71xsT%yb!qXu)YI6@Czx%}BB;3$jNwP^@!8lcB znY)HtBQBz2vuC}RU0PNUbcC5kyj+(85z-l2bl*)CaVJDuc1Z#ge0~ z`~G-e(99v44`-#>Ug$w>)dcwV!=Rpivy{mYgSy&FNRcTS?bjFHu5xJZe!qdD*2Ftm zLEzq$SwpbOa$;sgdv$q&SLWGv^q$_hC(-jF(Nucj)M^OU0QzY zaAFl_-FP|4vq}4Y&T=!^3p8O99br+nT=u1yv2*tC2WHsG%+}dI>}m)M%DgZ)s*`wk zze=`4i)+yrB0VpkIytp{$nelCp4vRM`YfXW7jbC&|GE@=WO?0G zNr()$3M4$Ba?RN{kkVi6(d8*!&25e~Zsm^kDMQ}xA-LFo|KNV^13&~V5+a58W~1v|f8 zB!9>$!h#(l8ge&3{0Mgt*&SgJ+1)z-c{kx+h>o!hOT!U8zg@`wb7)ocEpWo1LAnK= z4L!GTef9|Tj^82}to=yIFov*_(5?1nZt?izc9FXr{p$~)YIPD1ZQ!_Hj2a<|4q-a( zh+Z40?mSmxjqzE9McR^)af$rMH;B11`ROU^-at-Rq>W`P^Yfbf&cbB2u49X1nsVO{)r8K6VA4Lw#Wx zx?i`r<{`ns?_@t*?|<(W0ir3#uJbW*hk8J28CL$w!xLAt+f60BNqnU*5)PU-$093I z=*}$i^^vT*{U(73_w^Nj&vt>=-D7biNtAFzqk?7!O|`SzrJjR#$r(xX$d|lfNx$pC zcft44$LFnD2^U04Pj{(9X@Y!>01jU$ci=t#R8Q zd0vj~Et&+sg@GG0AAg00k^ahXlCW)tDW}29uQSU)z?&YS`(zx#6BEs9I{t%$!h&uL}OQt(_|!A8@$-~36cT>i!u z!eQ}OU(w=K8z%?yZ_gaxQq#1y#Sx_|ZaRyDOimVM?ch8|?RxQ49XwS}>}4~E7BkMs z3GQ~wMGxlAeU?b6$^>zh%# z)`^f!XVK3ftb9Ye@hWaB0O*qSvhy;$IhYFC5*jQKl~{;m3)!wSL^6?9lAUl*;hisQ z3bLJyc!F$H#DuxAf!UVTHfx6cU?x@d60*d7w=1=b%$XxwVp)PLkEO~xYJBsY`QhQ2 zuFc4{UqwWHjPb;NLWD4Yv4vt^8Q4e&Z%oY~MNn=i9ek86n4CwP!Q?h7f)!21P*~(U zk{8np_8q?S8ip!~6C|VC2qOqem%pnLsf~y(jvaCaC<#m+NG?=2qRI_p%gE`?H5e(szIK~2Z}6rjPUE(bnBx(cxw=!L_BQqbh3NG2 z84G#dmYC<-4fxARC?){T>hsg=GE zAddaS{h;o?Y<+Ii`=@aQhWcsu=Z<5pw7`5RXAfx`GSmyO-D z(Ivm8$+~5J@ZL#Cf?%0_iC7?r?FeWsF`GC8l4zVCI!ljPZg7hM^q#)Vy%f8TUQ@wl+LG> z!bTS#*rgD(7U-Nt&f0q{$Z? zqGV8Dcp5*6v*!b~XC2@K{qh~$M8w#~?Bx0@|AuP4ft6UR6Ewq?3A(8p*#7o^*rjy6IrLH@F@EU1 z><0vBB?7U%24uoyMB_RC+=oF!fF{K4O>gOw3)%T)cIWS{5@kYEcZX|Va)?imY=;Ah zp@xAG0jd&g71MZYU0gF9$W3F_T*KX$1)rpJe@WBpIM?i~6s$z_;lCAEl8Zc( zg89SJ?dS4uKM*ZLyWhDWD-iBKr)0kx94t1|7J3*J(%G5YNSs+kge)YKHt)fK4B_nR zd0Ij=L$md1_wwKPoG)iQ5OBZ9;+_RiM%PCj9Qa^-X<2mpgbfZR^)1N7o}7-a(Y`>P zqhrv^tKI*=WjTETc6+_UUmm>fYRh~mn~1g~h=AbiU4I@5DZsp!rw$OFDX90D@{X`)r0$WgKqi} z_73e-d9pQ3tfE^(%V2qt++OB5`JPrQziAL)KS0fF3nSHpX3<)N)hnmYRAw4~g<`9< zy*`rBD!<~SeY9y^IN15O0Oda?f8A2XPFwa^-b39WE|#|n770vWaQO|>vHFGyTYm1A zc3!}DUJ(6!saYp`+IP}4eZc3@>>7S#4^}mC3SoHZdv9@R{b^bf4Owl9F(Y}dzI&~C z75!mq&OLmboBrwLOja%c@(M*T;u*;H{u)D*y^d_|DqCw=wP;!fdyM_0w4$hPk{2DV z_ohkriNJY-%f>JUJ#07y4V){BE-a7T=q4N6@0s>^kHc4uB$W4FC6)* zPia-plU~AD454nah;3Plxvc1ESxPy+kd^afvpmCBSYCYJUAE^W?ZoWWR!J>iEzFHP zx!I!JY5s3mYHAaztns({!}^awy8p6xt4PZU{tv@%QEBsE9H-fzKfW7T=^vRR9y160^YrYN$A$I`t|wbo8h;U5Cf3h8NfQqgd*!=T}yAp$Q;5lOQY zI(C63miwK%ykr%4wIT5jxI6~N!LXwt+e0s5|$eC=1S4r50xrJQ#BdP zQg!J}MUHUdA+@_fo=eHa(17XJHP%XPFC~uTSX@zz(EH<}qWm?`K|puL{3FUrwcwkFi7Ioh1NShcnF#9q48ThyT)8l^N?OQ)Su ziI58Z$H?iJ$Ifu#wMVY^uo}XczWz1p(^bjdi*crwUVc8jnmUFs_^!GQJJA z6PNuM%-~J8=}1BwEa!b7R)3p@b_7H-h$h{t(1P4~_Re2^JLMWQe_``%UHx*M^yTNv zzvk&l*UT$~5kvv#|(XQ{_G4@Nr-e_h6=Fkk#^cjY1)8A6k5D*S+50FLs2C+WnVH)ZT z&|M6YdtC{`(aIVI?kWPNJ5B~mP`z9F_^5?2#-Kmu=2Dv{=(;;3_BCW5dmQ=mhcwf0vR zgLh>0csm9NTmtz2wu;e6eAfN#DU%b-6&3OcEKka?>I-kzt|ys;czS}49H_85H?{Ki zA97O8u6dkiDk^(3*W?{6`UZ{b6w~kWx;2}u4NiDc?l(!KRj#t4PNY=nvst3cq{o)% zw^*Rlq|^69FSV%G*8xJ?*aiyL3b831EjwJ0V-614%dL(EUB8lsvk*k3AjQ6tl)bb~sqhv}nGkEPohq-4evf@6 zSE}(2Wh@R_YS~B8N*;`{B8aw7*S#{vZrjL2QHT8a9Il1AdD<)a7V^)%C)mq!=V68JW{0A#Ve8G^rYl=b*XE|blCI~z^+zP# z8|!Dded3Ia?G?f3`N5-b_zNV{0M^Oo1;)jTjh>I+_57nBXnj9REwQ0YhF|JE(l!Zh z{_)?GlFbMyzAG@$|LMPd7vk@q`2UN(kMp1Ov#pWwf1&~WCw{8+KmX+y<`?>ZY~203 z2X~Isww8lz3pg(`+i(~&HJOHj}cI)caxg?8(L;hVvk~<-wTm6px{@dQvk`a za*R^eB1hW(M3=IN8Ni3eyTI{00XK3xytcqV;96+RF4BKLl$OM&q-%DFeAtEX=aL3TG*T=dXbHW8zv4oZB)VNXUXEuBY~^IRFKN*1q1G(@Vl00 zc-Rn2yfGTK2v}{?>GCVl5|pW;dJ@8IX)(Ul2aE)u5is%OSsB5SoJm!9eB!8e+|pY+ zT03YTuTP1Fr5&Yrf<5V*z01BUY-*JmkwF_k3zf+@54L;q*y(iW^Qrwck$b^#v4dZ> zcs^5j0}L%oejc+$S{F8)Fyq^6Q`uajbZ&j4alJ6*K1fL5YX68^=Wip}*5VJgLeeB6 zuiPDVsNos8MMzq?{Vy2?rUEZn{!NBM`Ich;-z?q##BKcdyYN5negFGah*Z}6*8vh1@aYwHKYYGYBTnSkWH&D5>1wNd)I(K$zk4|NJcI8ezti` z8Ye)LQbr!D)(hi@v%WhhLU_YjHcV2QU%+UX1imW#&eo>SlH}u(EcNn`I ztXehRb!h$^clV+7$gCcjwB20LZd32-UWob)Gfj6-xRK$M3E7xRqs4lHyoykTr@fc8 zIY$Ukq|b=jm4db%v||A{L3h#{8H^0Y#M_xz;pRb0o=7}LeX3e&$P~F&-ML;-%|0Kq zWp1IyW*&VFn};_M~ijs(Rw++i~z+ z#IYkyv#l;#_!aY32}^=Tv?eOI!rym`i-+~C%i<|c^|&^0I}^{>N0e^ZwmhH}ZdA80A)Q859{B&oENLOR?zSkLG%OjAC5SCC#{ZnC_c}MAP6; zer!-;-LuNXDNnlMuI9vz{ekd$K?f|6xb+^57X(6tEFe-JB}26Fu0W~&t+6g!c%ggNsDNrKh0P$aPV^Om|{FCMks{&-guFXWpego zZ(tW*ZBmnd{KF~!VlE5m`CbEs{Eus(|3B)Zp!EOpsZ3OT_e3&9_9695U0sE+QYfN} zTe$>Ty+Bk6qhXm@Bbvd0K$X^jUWn6ojib7_3fxr3Q`1!HP?n$7kX9zE#UL|>5<{HR zTl4r?`P{VSdv`0EJ-`MrkMc_~T+1&INu&c{tOX@?2z{Xm5$?Xk!m4o=D7|o;8D@Gi^}9kNDQE zaARtEs1h%nmYgc2ik*A#cdIfox90i5#AoJAXtbwd?c!5OfU0N_4YCx4Ep6E~8yIFk z)r)B@M1m|DgxW58%8=Y^$gEK%qSWm;>fOs*&8$~6SsalphMc6rxD9y|sBc7=*}HRN zXkZ^W)!Xs#=PcPLTXovSlJ3(dx!e`|HJ9Dm-KKQfl~0`CMqJ|>CIS(2j4@Foh9Z~# za3aW;UJVqIH>_Bp&M{RMohH@I>$+$mR5zyyI}Fx_5koZ3zQqa*Q5=ER1#PL&G8;5! z=hd5>FFm9dT53N#CK8{hH`gtP<*)Yfl(_=NwAkZ|3K5OhYxDEu&s@{rCybV4nxNSd zG|Ng|ixe9sIs)4RxlB4O(`V^HhSV$p|^wA(A0 zioH$3Ve@Y^$5yof``N-*Xk_dtt+^MqphA0Mw6;a1!qjJRR(=5?PbsSz!rY}XLJ8q% z1iGanIXg)NG(%=xS`K;MM?92izlEcokS@KPV2%wJ&q^{~sDjTNnzb*auj_OBC#}f2L`Fy!VBNKbaX+gCiz!QY9KVPY1$x1Q#9(#Qrw=< zhRQ&5K0OfUn>brFU!J0qhmXrZzMq!X8C4|K$_#xn;KbbOqr;84sSSx5HH^NLL_{*I z8C%8Gst=){YZ`k+RO!9L(B5fyT(8^am4>2bCm$=A)JYu(*8-j_uj#GNYg^ktTAMOX zSdWFNToi>^*6bXWZhPDIKw-5=JBD7Rr}gV!52$ZkLuf%L4cBcSLtY7Qu6jkTD~*V0 zPA&{us;}3Y&aFa$nRTii9Gg0dJt_h1a>e@Gf)J$nY;8#mM=sE7zQP~#?-VBO}i{Gu7GBfJ#-ZWk+|h2 z`sTPJs>Ve<+ zY`=|%)qvKH%}U?wV>cPCWzgZymvzw*E^k`@1$Bc?jiry$7YYve5V=_Mp*-2Djf z`8;@(c`Lkn`V}q@jHR|olWkMpnB=$qSk{e|52_?Nmkl zqsR?mbN{gikyX^UfJwp3knK8+M;GGybA~ID^VCcxUM4~jHPMBph;~=C_(K4_odeJCzHE9yahJqH4Z{QywNtDfI(I%TJG_rw1_g$ zpt7_f_vp0F5z6UR*<+-kz{9N47_NHBJ7eh|oS0y_<7hIEoNGP`wQ4X~H=}ORqVjnp zCVw98ooS&1(rA~upVv* zhf6&Wz*d#_mDFVx*?d~1OQK$YrFLY0TFoP)WKBTpx8jpJ4az;nkm@UvwkzUm+mnvn zB)W2$_D?{+pE(l?ZlNp$dAe-=DJsm0Lt#}?p=X++;xsTr zy?H-wY2wyyykpbxoRpiMXa!dO*gbj5ec)TaFR^B-GJ;-%p z&cov3@Z(kWL%pJkfrQDQ1Xpr@k994Eh$XIHi5QZ7((6B+q!?w}NHi&AwGofCAG7rOfyXV>>%a@E~u zYL@o96&phQZ_3sGP3Wjl>EECrojBv~z28?zq;yDYYs@?T0<%Sh^1vhv;Sx}AT%Vd% zDsi(B6Bf*2w*AO`+?%?o6OjFplZU*_SiB|v&eI^?KFz;D9#babbH8At#Gl-!J-fCX zv+loHLFdKXKk~`kc5Zhnz>-0BkU}}Yuo(zM!S~-L%T`u1bb~p?2 z#Z*!AcNwGtKiQ~C5_hKL(k(JAmYF1!5fwuLTv$`TDIhV8jSp6Xdmluzb5)0u?3+k( z3~eSVk}4UQ=H;lG%{->*v?d@N^=-`ZBN!%IW7ZQTmT=xDT7Qj+A;jY z&4`=KkT7~OFpUguK!m;D*3QktJXZV~E?3E+BrZ4!>>DRzZq0bYrQ0zqSoC4ajv(RR zxW=pHf<%RA;N|hoZK(%3lc)kAeo`;Uw;VDyKiF?+xe3kf#@}n+ zg6xJ*j%I?!*Y2+~0{H>W5Af+I!5i2aR0bivjq^9Plji@C@P$-Wf2B-YwFBC330=)7 zMK^#>;vKS=1V`wcVv?fowj7MMbvvthWsUnPP2bTQbE6O4jBX;k^L>0V#lS6omm0wN zpp#O-`?J#%<8Ly^7YXT(*eM;EGfO=w+H`Pp7Egy=OWau3fuYLvz8@%snBG zop$1ff?#tfP10wa<&~qj)#v9iibn<;CL4iLKLznLSCcpDCe<~;bsx&x3W|F~d=tKb z&V+>`O6Pd-o9UowJ(zHPBvZu8XbY9Oxx z3%6@bC$7E|1=n?0o{z!nrp8&o(xAqbe-;vB)6SZ(%J&UH_SR5-j%C`)x>?%DARwY> z?K<#{x*ar?Qyt=s$qtKXDCC+@Z` zf(P9k9sOtSf?n);_^$$`FNv;^J-aa90VVk16h&x%GN@m=T#EIUTPc6`gI-%Z4ik83 z7tSP$$`hS69j(esPY>(VpBruke8e2JDr0EPjA6~e*|cUZf68jk*`}mbt(qu5TO2H1 zyoD937im8xy#a$Kh_+DaZ6|UOFKesXCS`iWe+VbpRXqiXBU4o=iNUU(LOOn6DaG$f zEm&oa;>1f((=wC2!-O6xewT=1=%+NZ*32(`lEh*Ov$ViK(aP0KT4H>YVksa!bJOR0@d+-YQ5tv7;?T!d+qDoHIfJpp)% zJ>Q7Bb67ryT?J7uG24_Gy_VeXO*}OLE}RV)XeNY`_jiGLsJ*0jf1$nxX1d^cK9M}L z`-Ay34?5?$L@lY#lZ09G8;7oT=FxspvsZ}%skvs>t(w_M{KQ_@pJ!ZWAB=|Sj$t3kwta#$GnEG%8x)_~U$g3LC51kd$` z$gwS3+YGVQUVQNB1c%9d>U)l-u=Z2DdBRt)=AX9wMaG~l0PxR0t8z3Gco`R9 zSozmf_kx0F-ddr5uBYeJ1#pV0Y4mArq#)o?m%>aotx{5_e%ojPAs?$0kPwG`)JIICM$qf)fZ!BCYQm)@ zmLt9~d%zk3xK$M1Xr)N~TE8fB==rC!`*<4d82hf2ivP_@Da^0-zg9|Bb5BfFWS?Qi zxskg9@r;li4Vi>M1>q(_jb_ljfkB5k73n>s43b9a(&7Bt0wEj-bELhxL?%Aere7df zNi3R~gM2`>*vo_F>W~TE??b3KK0vzU#~ZD6hikB-@uJt<$6NKA^&9qEZ`b9HKd$tNt?nr(}~D1NsLt6rHN9G%p)j+3`r73chD9EvMD|fe!^fD ztMM*K9>j7|f!x+udRYd$A-ertI(#bF!TsFK_6b6hU$2BKLoewel#7l_N?#MK9Y;=2 z&18z=SWMaMwbBaT5OuUbl;~7Ool#U}q%do2JKK2ziyY3>v7rKE3iWwHSF|^+;nL-B z?$uyvGU6eH@W6xGmO3oTYfi@ip98m6e2S;i^HM$P0joL3<)nL7@FGalpop!cg_x0zDQivRo9$y_77lZtHRz-IwSb zD?g)vAjmyiC`m%efE5>Ev*s|weInvmiWFP+$iXEo0%`sbVcq^2tJx~GN?J0|L;FsF zxYmS!uV)5fo!}S~rO9KHK$}*6>PP|0CeiNNY_w6-3{r$G5)+(IWvD4i;Q&k5Xl3H4 zCGRIkY-Db<5@IDg0pZW!c3`W((g7i2-uKK)oxu{{9^jv zPU~H+GHBMpd6KTL<#wc@+XHqnL1qs{z^i8CFcBUGP|hUdm6Vz~1d~Vm&3L?cUE%Bb zpUr0mhnOQOg~>iTp)?5PGBwXj&P2(ph}(Nhhh?=!k~|UEpnY!1ev#16^j5u~K(2I5 zdz+wXXjjH3MkfXDj4j*o6*_+EK&*F&@ExO(K>*_GF0@3_&xXPQ`q7~`TMbWWvmh?5(Ck%tYnApN$^+@f~D_>FF; z`pE&;AhCn0=QnIw25z~qf^4HVO#R7dT|+l8fa|&7(sYxguBT1+;)Ap(&yk75P`D{y zJP9R+belrFpv8nrIDDap?HBW2{k`j|JzQcRMdWQ!UW%5SQq}~PU)>|-LX%xyFj;*d{%$&AEL&$;DuyYLmZIUCynY}&J4|pW2DkI#EA^e zyVa8x)jW8CdLakt*7udEKRhp%&%f+C)5daoQLW}o?$9!u=^ZsBDZqtEXOCS#e^vOs zsx&&=WaVxXJA?Wv*tg^rQWrb#N>?1}(cD}GwUSRb&@`wUy&*NxM{Y~)!cI1OtEGH%nsqV<(D#NGEnlqn(au&F=XJc^HOm|~6cP;gV>SM8`Ae48 z7`C$0Ir>>q-%JGQ{k4HS4!F5%LN&rePO{LS8v9h$P49~?+y$(iA=3E173^4ZVCxtS zF|-G`M4SPaU-2BuJG%IP72+T4W9Nl^b>&n2{)WI;?MacEx<$3=lpnl*py3>Age;$NeYgC`kTPRo* z5^r0~y9L6n>v>V`T#9bb$Z0}XRb^pZAK(1X7X%DG5~6;-`ONx?=8Tuw6b{(YTIs1* z|2>5*>)>}hq;7}eFSUbXhI6%Pi2cnz;^_E=wB$&e$qkgvfnTyvMOR%6RXV2G+&LyN zi3nu~4(JpT7i{B*TC-aOv3RisGv5V)Ogn##7*W7gKV1ebjf&(#Ht;yo=?gJ^j(WXl zVv@&LXQpS9z7JreA?ip|;#CWGei4EtiNBvq$d6&kRS_uQH8u*tW*BH$D{ZpGpKM>e zym&Scv&i)qB>!uu5v!mw5IZZP~JJ3WAYQ5co%TR&2XoiDUHCy}eU+Z-4q8-*!&9 zcHL*jn{Ih}(f&|^G-gRL4yd=LTLxWZDXHx}WO+&Xk=I-iyKC{2$aZy&gTQ$qzSG(A z9K&4Yj=|uTg~8&nN^P871s*J3OK@P1nY2Pk9GRJcP%9;TWI>Ob)AIK97Ix}DAy^jP zca6%j5}{{E1AVDMpmcBV&4j6u4KW-|Qr=WsQSy`cTmy5N2^^1V818Y>OzZOWR1zag zW-}i>tE5W5eQusz@8nkth9PF78PNg%#XPt6ZD4V0(^hLBa&t#8*%h@R%AOIv>)^1l9bYa?mE zPP7x`c(Y#Zjh<1Ar{GI(?~ag|;mGRHKHtyCXgp>qr-j1_O4@T2APxFx5z${b0+K?B zZuRk5x&^W;QUIAf`Q8~7%`f^pImYZnVgZyx-t;!sEF}!fB^y-t;dU>r)ZJLIPh*J7 zJd~w)*%Ofy0#jGsAWiIOBg`nYl**?k_{4;}NNa|F?qqMr$Z-kuAwcZqIk_RKy{fZG6`|%aq?U(TKq91^I@E*Qn>=)TVxHffh zQIw5nM5&fJ`DbcP1B6PnF5+08MXQKSqv~~&pLE=(;J41m1}pj zw`p|NAR9v|l#bU0CFHXRf1gSp$ik=>bf!45C4{!YI_q{*Bx|C5k<^V453VLteI$hi;4GuU@gjuh{dc zX{3rAzOT*0F`T)kp2Pc1Y{rsIuNMlP1-Zlv0pWiTP4;(=vKt0v#oCT)qbOctr7?fg z*cnvZG*0Q#-kq8n=H`9PKm4$mx+%<;UpK{W+%DVy0fDLfEZwbN-VSYWVkeF;2aPL%8Xn(8ET)_Zqe&Z%SOen5WDr{ZHhYwrchM(=FF$g)<5X&0 zT}_Yh!dNNyn#=ONd=c6&EQB-ibf2Z$A09`+HC3v;MS(xYGu;&In)E;IW7Mk~^v^6A6a{$z z(wyTV5nvrjo?)M{GLaylexiB9O~d*FumBnW9Mo1ceFao9ZWL%NZNzQN#eG32M(7;K z3{-Cttzb(e$W*}1+oMoXBH2lQ!DS&Dn~Ua2hS8r2a^nW08Yf3Amxh0gDK=S z3Q@{wlo1r6IEN9T&WqH86+!rL*uiqa2_U^-UXTTI3Kc4FUk+YhX+M~WP8oR{%Q_fl zY6}?(ct8p@9~NPANH=;b&A0<61~8(01`ch&^@}v7?B@W!lRa||F@mJv`o+Kopb6M; zI8TgHSV>q(IHE6`W)TeFUP8w(;%^6>n|2Y~3f}SiOaP{>12r&+@QS3L??47bjQWw&(by#?peXfa;lT==<%yTVulh7a!*gxP|@gdZIh@f{2GVg}&@} zMq``#UZiAa>~42_Sg=keJX<3d48Vj)bC+NOiku<)RmG(hU6*`Lk?@A>PD0hC?>|fP3lC zHfE&QlOJ{rS&nq)4fTh~#yTHti?z;9Fd14LFMZE}K&w2$1DcvUE^<c3Zkw54V zn6z1IYskV?y4;_bzC2O-xMWy|tk4(TJ1rdSr(w=aJKH>nwdtSHT{8SFlm2v;FZY$B zTuX!K6H1%(PmZLxxc#(X!Zu-Be9)c$YPkz%2Kuc`@A$B(5$XM9G*@{b>0EY4YfHhFR#$pFy;p3(Tjy_0vv@ z%%gTFvXa&T3VA?r1yc(9i@A3dK(OAVb9n;x8l(P3c2&BekE%)6Rr-o>F;VlEZc z8l~cE3k71_B}?6pMTW^bdtrRcZ4c^a)vNVO=8)FKb^9I+RTxE<={oFZ1It??giEh_=rR z_U+X<7O{(g5fAEOJnl<()*L0I)5*H(F5F(fIO!{BNFz*LXRl@9qO-hw=rtEwI2FJx%DG#-Na zUW-;cV6Mh<3KOH}%`Qe**}p_o&+w^HR(PmqGN_z*RCtIts*x$ftg$jACsPVZA}#h!{&X4}Emn2u^SPVD-2bbtk#HHppAJnfN@E~!k)GSRRgCe>K38potvR3y z(kADj6q3a8`m#T-9!zd2?4W1^OCf}n<=O6}ZiHOHaj2GQryu`f?yJolr&+Of?V11! zrC1|9F&|K^N=JjW+gnWF=`^*jn{m^!><=@z+~3JIV~bjH@+J zF>)HmBAGEePU)I5gkj9>XZ4h|C$?@#kc@0zEzF$kj|7(v7)qC15<(0113q2f&XfRJ z{YhFK4}v>)mgss@*bUWug=5!=)zu8u`VJo2AHJ^v2m3Vswpm}S}nBk zTxJgwVMO2}wKS@j{15Bf=QQsvgn9@)(_;EBY#l0u_;(^CaFMFlAzYd|N40b%W^~W# zJmk1K9VID2%CcIhjEvtI98{0rDaFhdD%y53b*8@Y%df0~DC=JfH&42&r?0EYxLgo z|7H#!r}@F+)%aK&|29`{GQ^&UO(6|PWtV|du1zyVU?7&Xi(wCfTD4DB=uW&E-$mk# z)aQPOVC-@YHwnjQbPjLV{O8&@dGCXf_V*|AZAltMww8rgpS`=lT(>Qu_je1ZL6#k) zdUPbn8o($tcO2>;hdE z!cmxvJx;$%qZ-Da68vE{Aj zy2L|*`!F-itJ<)ixVJo^df?G5O|rEo4;Ll79>_bD*d@hLqG(U~F{3%=e9o{^9rxN~ zQLieRV8fBEF4v;Vky~oDE#tNBIf+`N4&N>v19Vm!s5?3D)|ff|(I~~~EXxDa zFcs#`(-)@C(}yt5LCT(4QA>;nnZCLq&W)~8&h~@j2EuWa&-QBwdv8)EBN;L0U-&#Q z(jsXwn;uuWR&uTVIEBj8#l(r*QeYViCkw5|Mh%wJ@&W#e9R*b#`X_exbs5w8Cf$OGbnal(u zCr(ZD9w|Lx#WbzA#{%REk36SrG;MFa&@QyAA7nW*f4{K9+rl1@;s>EVSObWa z2TsGZi9yRm!&|8}_$AnP*0S%YpWhOnYr?H_?~Tx!v&1X8QFjH1Q?4w~QytiOi4peb zEYVqS4t{F~{SJ1l-J=t{DOt?nh-B_h}D&@v1}!2(l0@f~%RBaa_Fp>iDbArTS|12=^%$m6SLcp(Q4E9LuZh_LY66ZfXH`d7oq* zGSGI=m5j@wa<6NgWUeJw?>%x@wy*@w_1fP=jr=yF5%%j69M{MX5>Z%8o_S|8odP@< zW)^6PoAu)dpzoI(yLcV(nwh*-QQPTOLwVadxCSG%)T z2?x&HIL^>;vH5O>&lGnwq{=6FbkWj{G?l9qER8+g@&LP#IHJbWXW8sCs~QN z5g#LJfP|%k@e|c-#8Ds(a+(eiQFmNYOs#lVvu-1#Q?y>EQgZAw1S!5t+mkIK{T3FN`jmL=7zB)D$Bk^b>H2IV39eJUhv-P6%i78W@mNKQC=V*? zOOHO05G$_(8c79g-z?)I3wqAh@5X>SnQAJ!a30hTEnE!+G6J|IQ7Yh*35!>SIvgEA zm9>Z{Mx85}?~ZK7Zm*-jDZ+Bmu*b5kKcO$TsWBlf_wWjhSH^LYd6&oyWjHbZ zX$$OC+lY8K(dXUgZ7HI(e0>6z_Q}6v?`wVS-=nYukD|K-@+(`rK4JZx;2rU2$T#6l z+f%b_G_5S>gWg>@kIE7uCu$hic+%+{YWYI9D1Hp=|HV_q$fot>eo^yi*CVSWQ?+gZ zQ_*vFP!27IW)JJC5g3bXFX!^=*f^`6*Moi$x!qB{X*VwJKfr;fIo+rdu8GGv<(!AO zF#{&WhLn?_m?aGe6+!(+~O}St%!5b5(Sfnw$@bx8WO2 zpFLFAo(1PvJ3p=@xb=*jQ z+1uh6-&V{k1A$ntozw-4LKQNzFNbW?GkADut(A+2l(YaiUfAqHd8iO$2K`D=mRfZa z8WAWF${~0V0xTpz3qxOSQ4y7lIzp-18EL0M^ve(oiBcFeC3U-wgnUdcj`V1$N-Rl;h(fG2QZ?-rFe!P(t_)k1bcu;K~AXrB47p3E@j|;d$-jorW@l)VyC{5|Kdmmqg!m1*l@`Hmi$n*qNvRez7*P-9ndWys zP~JH#^22<5zcYo+-j_|hw~aUvzZ3vo$OqGy2gRmF@`G5n2VfMhevW7#`*-4M36Jdk zSsZX-dW)*P`>s zc1j**ZViQyj0LV@V(Mq)4zZql7HVg{TjPnN#1Mlrt54X=qMfh)PzK#g*9A*VdO$ph z@B?aX*Q&@8DgAI1a3L;QKNmU*xPRUa1XWU8r_hJZTb_Z1b z>~J}OEy*pG1a|=DO;EG!tuzeBrAy|_j}qn6q)}N!&(}|1Qle_#m?OD=J5>1>FiQbs zbrZ^~IC&ZzQBGUgR zf=CuRfcA`l@?{}~!EoZRYXC3fWNO_qC2m!|PS#=WF(`y(a`nrIn6-4%K7YdO(IWhk z=uo{B8VAzUSkTJlYN|owVn~$>-!^~qwvG%*o5o(?SGNH*T!OD*OqU+*HryfYl>4rH zUc&?lhn__l8xGwfm1v)Nt_T#iq3CR2k8r;eDGSIB$VorAPVMC#Y3|M&dexVA<`p^c zEovZl^B&?v9Qc4#2HbEBNxYMKzQ%p{q|I$eh3=Sek83cM{2VozEJ?yhea3)E0gWPu zGNXtL!|w$T&=m%4yb}bnW3mTgbg6pm!Mb&g!SfTk$H&Ahnzz=$-;_Z(`{ zyP)RQ5&{nqwaV~5_+7>~0BCu@c%*rMuUE&|GWl8W6D%*#QE`Is11bnfc2vn zhPSz6ti(p?O*t36W7EwhSf_C%Wug$P2kZk?2UT&=BdCtw8Q&-eC%Wo~Coxk!Ob1D! z%{yWb3{nrrz~)4I=C}LJQ`HY?N*J4RX1Q1}PP9~Ujmx8tMA3?+x(O!wJVRPVIQe^>8P zTxCc=+js&66-OS?Z}t@N`glx|N+6~TqY{uBZ4XKuqt*h2fuW*6dSW!o>mO0GCQ+Cv z;C{Vn`>4;qo<^Rr$QDls8fN|9&$-{wb+^-~mO2QC3u2DcAL^G!3R9!Whig-j0^eP7 z@^{x+`l@NBQUi;t0PUl)E?Dg%S$ z28bH+(Vm^q-^E_#v{Y%K->QGK5Dn?LcM~_RXfV6ziT5PNv-IQOeUITJ{{DToJkNZ4 zjzkS6%cL6M*|z1O%8>^5e{^bNDuQ5_!=}bLsTfs0NrPJh657PIRw-m3A?Yp^>VOB5ZyrZ)f0_w11hqW%3o^re0@%AGR9MmMdqTgYzb6*c$rX)B>v97f?hF9D@UZ~2GA^5dFz z*PR;uGcnG*E2C@TtEht~7CPp0--brI?>D_X4ngksctYm4e=19uRb!_?ePBC?xc>^< z`S*<1{}$R&S8&@lM-4QWOS+`3J6eT<$S7rSIBtmML@lHV<8~O@9}jLtvU!fQr)!U~ z_c6~JnsqjL{!GB_9D>N!buVlcDMpR4zx-JUME4hRGwpbj9S&pLcTcNlq299~;P?aF z@xd9S#Ds(eFcS^xKm>B+d)(B2Qi*G@1OV37m0sh z@|1D`CHurlyB&UA7Oz>a^c(ArC1g|=;E7Xf;$w|qqcY;p=jyayRI61noO0aKm`~qV zq3^mLn&{$q6YMk?IGt7UwjnYpDYO?KHaxI6id+->^ccr(h)@ibL z&FyOVT5MNt$YiIp!am*2W0j%DQF68O+-l99Tdje^+?CM!<20US5cUc0_i#Xobk@Xc zIpsuoGHYG6j;kL5xHTtU1%pKISD62diGz*QjLr3JX%5bq9WYS=Wbz zsT|RGcRio)d}T)7v~W_@$R!v75DQIUy9Rr< z!V?6$*tRv$9GP2F3m;EuDl_q>HP*^})Lec#GucIV91r5eRSMNib5MpO-%r(@Rch^z zrr;P0M^C{uQq(Y`a(jsYS3OZw=5a*%`xm>6jf^x^BlT;-y!qc4A#hfF}G6B#kjw5sL5ZDt|rWZ>T$R#$KgCHUnelTYy zeZUdU6YdlK3-JwyLuo=^*!nuo`j8!JLPRYXKsh2% zx>M2%@A(X2mZJSek*q6hOq`y8xg$}I!mE*XKVuNv5$WRY^J`edJ_?~q@BT4|5j*F+W$7#Bt**AFX@jdV|`4*ei5FMPNvK;+64nG&kv$>TKOE(yU@+;9hr!Ipfj; z#?^~eX=SU`_8{zaN%G&vjO51O3r0D(4~P2uk>W7dDz|dB9Fdv;IVqtx%Ax~<;~jWT2?uYSFeQ)sr|Fh*SNi$M_XM8N{gC&NCcAv=0CuG;Y* zTKcMH?0jBOkeXdNhNv3u_QyB-tLysYhbScKOL@3Ge%qk3)K>mf8`$m&=YHI^3-uRS zFtKrGg}Nhn%3VEH*6t!!c4Z3pvSQ%5nr^*-V4~H~Kfi4uO`A>eXO{q-*v65@JUWuf zu}$SFR3EEhN_Ed?(>|IXuOB`*zD8j2@qvFJ#RG}Zr&k}^BBlRQ=auK*>eMJXTR199 zDgSq3(f{Oaec;84$#db2+Oj=`q71FAp-483)Pc%1p`vkQ%E_w1)$~*7s$!fiIs`{$ zEBH)(D~3FZR=8HZi&>DSguV-DT<6bhA68(!*H=G78j@5X7kEwt7GCr3_)jSPzW(V% z*!QUoMTI}mhs}U`OL{L2af4K)NV-shWtYIlka;=I`}yoXMLoZhi?AHC=dB1vbGIWrBWikV%OOHC;g?Y1~ei`A)K^zSmZ6qG*}Vu?(g%FslLQJl^E zC7~xg1;ndSZN``_DpRr7=hVu;%1PGKl(*YK`Y~55Y&YL1g}}2iy;_~wJC+g# zN?JiE(R2)$qux3qwnDrH-$h8%=yk+FOWNhJ^!YDLDj&!DQd{V`myP=NCm!>0B&ww~ zJJiDIv)AeSXW37yv-*Bx#C4JC#`6Mbj)^Cj?Jhb5EK~oySPSPvBAhT}Ymw|a7<Y|SCxx@kE#OuXFfaM? z1*Kckgu|74I&VknJ_RdYTv7Z-u@)J^gsZ_;tfR``Z{ZrA=&j@1T?s|_5R83Zc^1A%}?Jc1wi*B#lut3Vxwg1)@39YnC0hE#Iz( zgdp?0muft+B}GcabML+OIC;(;q)tipu6$!R-#C9}wuM*(GxTm#!L~bBWJ@R=TeSH} zj4ZQaK~3(+UN_@liZ% zg;IA;rrGDEZ-5Sh%|8%#S7&mN8sAodduIaR6&U5Vd4*YPJ#BMWV`CV+0jU!;okU5R zRZk8Z!7oW=bDl^ZfiGQtQp8-PdirnCs5hjK-J8#4r&nUF{NwxnIZpTpN~=K_acjka z@v5;{@&cn){sH;2I;_F9xUM+cojsX~T3nxd@wAIC2bUA^E76uUa4i4uEmH0zg;S;x zd!O5hdn={oZdH%|4izJCUb&VtJ-RmH3?0Vt4I-cU{p;9w*A*t3BlX1~=P8w83EyE~ zMdMWK`Df);zWMDB$8HgmppDtIYPcV;0xq*ID=l)jdv9N7zI#~_p*$5O421PQy{8l_ zu)p6F?7bo+^U<$qRH7qn?BMe~$?{>Z@<1er{p_SaxlHi+T?lk9n~=6^)RjciL@CDA zIN;dmB&PTy

      T6^!w!f_%~CJXE&oNM^zJ)KHFEm#ZP_@(B7`<9ur7f&WjI4ML4Vb zE^&S&&nHBgA>7sC@6YhKYN4j|otD zG5er;KR-MFCDFkjy^x*Gk6td?%2%hd5Mn5@1k!*LNrNh1B4715(uY=e~WMxC=q(bW9%427^%@-_FN{Nvy?@wk@C#}N}XpiNPAl~)96_Bdo;cG0Ym6-Y6i zwfJ(^StTD>^EyyGxHqKbW^uAU4z6{Q-nZ4c0-HRxsqZ$mZ@C3rrXn%i+@{z~^-AlV zsL~W0ds$DC{O38#DKA*-%)LRjL<6d5pyRi=495==d zFt7Yzzr_QQ!H`0jJfcwkO(v6tMPT(ZgGtPQ+3CA!%C{3Ehhv!bgq;n^odctkBkmT@ zcZ8Z>TGd1<*G~xzyLrDqAAjo;l45R*i@(kWT zedpZ}Pw*JMmqJ<)nQBMWxaXY1KeqB&!g0>-mXuJ$K^@QOt`uE4#j>qN2|z~JfHAvH z@%c`}SeP+s3s=eNO176#=`oM--T6wif^fs(4Qr3&3)Z;4V2M)5As=}t-4iqvK!&r# zFu!T=pjKpn9#_KDA-zg2-k8oU@^eJLy|<*YQ?W|13S~jnwrS3lxP3w4WN$!f`w`co zCr-o!wo6oAhO@#jJb0HM>rXE~qZ5x~+GLE?z+(pS${<|6k@;5>a=UboCtaS3p$ zFgb+g1c2&D3z}j5kabNQce|a~wAz11%l+Z~vw`k`lV8ZZS|BQm39l1O4&g)8y|W^! z9(A11w1KoeID_ru9zW?L$@~o+ua8m2?d#u*>H*p!WgT0CqIa=nL%Acq;B+5(_xGTD z{LITYB7qNg@XRyScA6RaHh+xWZOp8S`Q%x+m%qT3Thg@(YzMBUs1rdAqP}|7Q=yYa zom{sdB>=W@Gg%nfEaQO&o|`p2kdJUC&y)c(`IS4W>`A8=vt!{|HFjNkCg-|4t>)nA zyqq#XMn*+=DFWlp6W%;V6O@Ettg&ICxvx39X&!CRz+uG=t?ep_d zO)r0>uK{C(?~GUAiikcj#8f!j!$QHeHS+9cRb<5%WJ;k1)A@q^7?KI4^fSfEG4a(< z<}QQ@7FJzm>Ua?s#I>06hAL1vP1PVQyr^4*!|_5wS5{yOF9{9L{8jQK^o zb(~=9+JSxC|K&&jgV0Rf@($MOA@M)z>YK_Qj)9L+VAsEN-uhp>AxzB8EzJK9#$24* z2e()PQvmQLO0HjDC`&P)J##ByWjB6fn6r`3{~Fffznble^W`Y?sx17uV~nkkB zXJb;2;dwRNhLl>>8#3m99F=YA*qCztE*c|!en2g%O7jaus!2tbd9s=R`Z3_hCH5hI zM79z?uvgiV_}ZcGN#Q$-LffS=aLnTn0rp78@CsDq&We(^N|0z1`^2yl;_hg1OQsjpiM%bma@#{-Qk7*x@<(&rr3p41zSOt6$t9TJF8!S{{gp zsqrnHJS!qfV=XjQ{)C?dVEPr z$e6n&=C`~jK3mp>8@=?i#))Wb!>zHvrGQxSgoOb%~OnIC<<{EtuP5o}SEn6krdhcl?Lh(Q}M- zOd^T#q6(O;tPSeKnu}oDEUJ%Os|FcLW5s>8F!^(EuLoOb;yGGxNq5)}3GkSdoCx21 z?m;prume;bcGgU6b|gzIbYqkDxmWK$l_J04@H&+72%@_6&S#LQ+Mi6 zIC!1uC9@rvaNg)_rdN+5wI_VDm=r(^_dk{06Xoz-KZg`Q4X~h7UB;oI$!_*LVn^dnmd>G#7LA!iPnI0h42wqBy%Y_#6)s)P zV$9(q<(L}ZjWhFie}Q?a?EgJ1N9-;stPArn2J<)M`W^lzcb8Ix2081(>q_9M=j226 zuIF{)d%`0`FG%Td@sOJwm2G_PlMuRc?9D^3a6(f)*VzJsY`yh7oV!uYD&2c*5XlFk zvLp9{xSofS=VE#x8%xV~q=SB=TE?h*&vxv)xhhV?uXZ4k4wH)hj7MGiCA%*BUM25i z#n^O4GOTA=6O94HoM*O2fmD=r>*_t!%k*+VT{>Y#@j5n5Sde19{}+&~+WdxGyIR;F zPj3;r0S6YqkgX?^)rp34F`R-#&h4nx9Mw`tCTDjeWi!7>3 z9sWL{OB*Ki4m&BF5`o=Ev@eVn^IUXm=oNyZjP3kJ>i|iDj@)gMF3*{E{sCII_HEl| zMaD%h?YmK#+F$8TSmu2fPDE8SZs<8Evq$8Aw7@$u_s~zvGlW9geFwbl_q`;D4+Zf? z$>7fGP|!zG_SPJ61447~Hyl7Ai2=ho^f7T6az$@j2Yt+X!QT~=`78*YZZ8SRU(O)$ z$EzX<*zbfy#B?ioFn>3@yxzOV7YNc)^$M;0#L%ZoX;D%QoW(L|w;{AzDj|n3kP;G0 zE<(xh$d!_pB8ZMh3&&I^%vh{DB5>t3G><&8AjDy=I>PHMKcdlJT8gO=nB4aW=fd6l z5JbsTG{$s;i#@0V#G>9JUQ;s1dtr!Y$&kc!;MEt105?9=SoZ#b5Q;FJ5E!Vud}?)S ziHK?SL0qM)EDZ)M;?PeWPI@-=4?aq9;%Ub{yY$L-Dz@m{dL{KG?~R%In&OAKzer&| z3M=f6E9CFI@$@6L2xL1YUsd|@PXb$%26A&@(`A#$8(4BMN)HIVbXJp5xc41cv) zqFk)vdzxFUizqwYhA0@`)E-l&ypcVKEGP{RBHZDnPl^}V@*q`BwC*@C87;CyodR30 zDzwiM`2OrV58EUX)NBIwRF`YN55IfiPM4>q`es&W)8RqX^c_P-(dUe&wCwUFG7yqK*1Hk+7pFS=Bz0fq-zimaW%p5+_$!7rOC)ke<{(ljw7WiNNUev_R z#_WRyC*kev6;QRXR>Sy*nQ{h?fjn_j4?jE2vj`opi69&^@It3?$ibDieB=BL1Oa|<u+UKSudY=)nVB)4c0X^x?N(mduRjJ{8`;vyb$vHJwQUt8Vi%iUp*Cl!v)oa_ z`*~P;wR))e!y-TDcG0Vs!tQp{X7u~pYLy>S#d&#fM{n!R!}ax1sLA8s`3b6DI^_;T zp@`%Otqg~G5-fPUJbdblC52id10V<}Cd^**#<_=xJ8f+rkZzNwJ7Te11Y~(hWG*sN zbG#s?dnK;Q4SWeOoVnZt7XxTmLXqD5@oZI`F)c-@P_3cjBEGniC0q$9afB_~E!7XG zK{WsQ?6g2i1WmXc;FoC6Bf6GvJJKtDoKV`6LQY|qs6z6#GydvRRhsWV(Ham8e|B=5 z>{*+iE6PS8=4iH@$fukf-=7G+*r+2twz?fN#lOA+-QfS@y`oewKVAQ!JY5F)ujWj= z|5t&b;9>7><7{tZ@&87J@|@zZFm7&wYWjM$`WUfz92a#&T$GfVDbHz`_cB67GiPaO zYbgU&06j+BXb8%_7~X(x*QAJ7OV&3hOV5O^(Kb}rxTvSosl}M_TTk{Itc3FwpG>G0<}bK%(`R?wcrz;e z3F`H|><9r>$^PkMu0WyZDuS9S_da&zjXy&lODut+iC-rIDZBs5?pTOOTQ_*0@Mmbr z93EE%(KIqPk~Y#THY$fS7KYHT7U^hy#UQ<_U&Ma+g_=?{CDO6qAm~PvBu2n0xbq2QoKNq?K zT`*rMKW@hH$MruyrQH9koAKX2pnMNb8-mc#&|=VvlF*z;4c1@gm?fb#kznU?bX5`y zGP1Rjv$T_eLz9EaSs6ORlO&00+Ub=ADVZ7d*9EC**@&2|(@e4(O4Cepa`p0x^o&z7 zYf6mO^wd)u3v)^`4C_it^J`vSj~)`Z8AhY?gVXba+f@~&6{0g6 z1YxalOohm zNWd(1Oz=Ou#8=YMT+qh>4|Vtd zJfw!Zjs1V5TMxDGPTT63g7r=p>@GRmo>wTQ4ZG`2ql$TPjf-tEg*2Zf+-Cq#aBV21 zGLx#yrM5d&N!8WWFDPJb1<}Zi-uN%YHiuX?e}^bgt4GNp-yw&)9zAxDBY*hCFZ}-C z8vFU*-d>*wK@Ji=3-e3T`yo5( zb>8d37JsG8v&g1|ty`mE*Gcod?58gR`DXu)HAhWmCD-MH=H3jvaEF|d?384cjvRJJ zdyU1b>S>DNcKuahW8R-|gYOQ;9VQC_6vEc~Oos@Z+Bd0)d`$J3-gXV?JGPfxGkLC6 z4qVk!w}w_5j+9=yX|{Yibk`I@`T^i711DJL%fF4UnTmq6X#?oOuQ=l}^^H-+J<6{x zf8<_|d@ot{C@%*1N0|Z^w^Bq>L^2M-5${-cFb5;+`UFFchrfn`KT{WiDhG2&Xu!~u z@Uw%BkSwrGo0X6qLCt3J!PK!Wo1u^?#$hDLQ>eJkOaQ7KOQ~o=rfRP zQtj^S4m}hmj?xSVltJ@Pk->?~OlL_~Ic8HvKeUX_FYxaRqO$KJ zGm{^#gL@2=Cm_e*v6D_$$`q04I>ie`a#;Zq^U}P8Ve~Qwhmmb{$%W~BZs;yHDf_K^ zyi<5AkeE9SRXdBzz8T_GmAjTdyhgpWiB+|oHm!RMF7@UO#rZu~aRZ;`lhX@hp%vGv|k9iu_($#l25(l~n%{vBeUvf?Av!h@gri z>Fz3i9Ae+`w`JilV8-GHY@tH54vUpFvRrm%w(MllymvSt?k?6e7VWtEkCtE(SKhY% zd@tR^Z7F6J`ZrS8U+(Esoz8ep)HIAo>2xEvl$cqN9fm_#ITn`-0+4S)ZlIoA5t3I=c)S9AM7G#MfrkLTeMilnT{iy9?o#-Fm7&y4Ozkb)SnU4$7f_t4ff9xYrohVX z<+4Q*NV5*JhI$Ko2A+13i-8k5q*4WLdZjrpak%}%pv77tmgx;(=zSxBQ6Pf}RESj) zeEzurR*LkpzWFTe-r{$a$7eO4+s9_~)&Ch#h{AowbAtOr+?AAWxD^))qXWB{ zOa=V`7gGgQUG}_8@-dT23ZV=nG>?jkI5&IZ#>sS>ys&8A&Hq$tx`jx(;xSi!oLWO+ z_f0WMEp8(Uuekj-SmdGTA*+-Uaj z;cd)R2jBPN=G64z17P_1EyU7vxIZ%b@n9nA<}g^h_K3rGjD+gs>(pHN)Si8|v#5O8 z)R}J381LSNe}mlNmw%MLUmXvbBRJ*in0eHH!O(wdeA)daLD4V6YgB3KNW3AV7w4r?BBu%m}DL;MQDF*8k-TcALX zVxb~JjKXQ4+PnYT*l&Yx$}Z{Ed>!Dq_d1`$#a9s68-QYrxq(+Y3O0b|F*ylEL2x?3 z#e^L8GnkGsRvMn)?&73{+{Uy~ix}Y&_+Ddyw@Kdz6`rUaz1^Por40kq>S`m8^_XX^ z*QiESr$hfHCY8(`F+yOVU3to<4Daihn?JO}n$Lcw#ROB9+f0o_hAY{x2iLi6YA(yK zAETX92rJxKS!LD?I*;!Tor-OmjM+I+Gu7Dx$Qi^=sSOCS4d3j%LILv!m?&|$c5C%Ln zX0E!ktORCtwAiTz8iZPrh^h;&z67y3mK3TcT14?-CNr-u8Sb!;38T0R5T}GY#Kc5( zxHPPbU`&UiggZiRnBr7RK`n&>j|^&rM3lXf(V!xcTEVc`r&@_z%&3VI!u1xZ{z8~P zmP%|FtTo9Vv@o^7{IpcC+KOw?kicAOkg0IL^d@bKvXLKrO#w&cd8S7pr-_(QClG7f zLFMrdACf0yVAR|#E+Ti5lQOr?WurO|Yz1?&`hzCAn&Ltyml;ORpSiC=XeV-|1m6#9 zzrC2^%6+r6`${+JuHYx*S6HlbBvFw)uZ4UMZ8MJ8FZ1ntPF=;W3|`^gym;0Jq;K~=3;vu4#=6+BOR1dx}GAcfGu^&nk4U=O~S z@#;2d>VOsJRr*#NWvGOM<7#fg#Oc!7`{{8qP#S5%<@a@9iz6@vzTYY&W|ER|l_l}R z-pZP~g>9c_*r2fIGs}Wx6FZj7zC7~yxbD$9M3;ytX(cV)2j3*o9}g&Nsh z-7E;XUIa#r(mVd|^vhaWJjbh4B0N~stEyF`cO5N=^_k#XOfGjt$hUChI!77LK}{XSn9 z2UIi?9fWVJhQygYP^fuVh2;Aj@ze4EVTKQ^B@9m)AM)77&?=REaE-2Jzmf<%2UP zCWMg;(so3#z==3_kAOO{%LL%)Tf8x3Jia0;uZe>Wm*-C{ztP zRGB+j)8&`;oVEw=3}(0qdDPYdnYB1AtT*ErOT#cZf*a1#U7{!o+5&iWaCNff>;-jV zX(e87V{KDdMzj~YZXTsyobi80Ed6R;MX@D6LGD5f0X17+SHVUX&m7MlOmzjHO16@v7S%_tBM?cZbib=5AO}-<~-NJs1o) zjYJw(gzOwOgAk&1r|(F?Jb;32#?yDFQ~}x4Yw=N|yuN0ku!?2paZIbMH)Dk<^8L({ zVJX=T{iV{Ss2=xM2}O_cX4;J2Jst-dpez^5Ksj~x?ENXf`b$uFmF7S(dy1W|tFo6w zH4EGwN&pHl6d0--JVV)e{C>EwbG9@o-o@fW-`;T!L6G#NH5&hn9(z<77#-lj zTpnc-jtS7`FamQU0c$T32*lIo=OpQHd-H1jCs=*S)wF>Ci68#|j|GrFEG?-l&&0^Y z%x=v5CqsKFj@ix#pggnt$jz|YOed0WOx71{^b3)f_CuA3kRl~hhfAoGZf-Avc6fjP z;!w8R8-}${LsX#W`3g2vq|kn=JO2zN@oRqpk&0S+SJqwUYTDiNQKR>l0!m;+biy5}P7XHi}!02A)A{&ey z!f5@*QapXrysEGy+DI$?atQ%x_2V$JOR}*9ot{XAC5!Z4y#T`~vw8Bn7m( z{e2^S--2m^y#qMh9OCd8e37189cgI*&n751!aP{l?wn;i@Nu4dVpSt5stq;A1vk`L z&Fn)=RMr>}gM+GY64gU(GVhR`$e}AXH99uRDpMCMCj~Pj#iz(#lu)M{j^Alxx55Phh4C+wCC5Jj3Q+uUa5AwQ zv;Hakf)ppLKwR+Il;fDZ)?%9Vd2MM?d9#tWRutZ{2Y?K3IDjF@W8)fpJU@2wDJ^k# zUic-PfZF|hI^ZK5-1$k@*6KaErjlsCAIIt5O$TVD)XO6?_@odoGHDE4z?yldX{ts0 zsx22nT|rjuIcF$%%YcGC7dJA8Hu5|>b~ybWgQWi#v(%fQ(M&8`dB$xFf1t@aul@04 z)Q4qQ;cso zFzy{)!$MIQ;K6F!!`hA4>B-$gH3Rx9HwBt*T7x8FeY@|Bw6pq+c)G!&!>b3of+$dB zqDhq$S!=w(Bv^(KB%vRIP4vsY*9<|&_e@#`nyWN%)PQY%2F@0C|^XfM}eqbn0&b316`V2iac4if>Grt zs<;^WdugK135!n2OVnYHo$;-LXFjWfQByI;#k&|09-_}^uj3X*JW;Khl|(SrEmpEL zCTAlqEf5^=vBE%Mb3?B{j#Ig?uTnJ1>Uo4cZ?+#(&>Xo^uao!1!dh)9hcQ$k7gRi? z4NC3CRoBR;2?LkJug=zU3MT3 zHcxiA*d-o90&1Nq+=m}VNS$E+;K(=84yg$9Umf>y(tVtB7`I>fi)VenAOn&&_$QN&h8 zI@j0Z(bbq>EGhEMC&x6`W?(CEJG~M4A)i_l79rIkm`+~ljE}xrMJ~HEhqCZMJk#j( zh9U|8oKv}L-)ld0`gobS)ihr1^K^#L-Dcmn54)v+O$Fw+tuS7<03|UrG%)mL&~RGY ze`r8bPgv52e^_oDndHr__kN^B+DV{q57ijgF1gf_7isQW+We9h@|Ggi(w4AKK+M%? zVlePR709R4{<@_JWra)3iV0boro{$oQo+JpE)V_|7A9c4 zBaKdL)STDhR!hmRTFjdhOxo=2#vglgjNr^H>66x?&Dg}XnRNO}m6*b-&691bVHSm- z8^Wtv#NG#gv4Q3Mpx#z(GMuhDx;<=SS@vO`YF-Utg!d)K;C2974}7deWFdI5Au6?8 zT{mDDDY>C6L&I>4wZOkai7J895xuo`bs^^%gGJhPjCvM6kO2?pbadQ(OzzG}(nVx0 zIR$ZW(hanfpk=B4rf8`E*-dD#;z8@{EMA3r6!bCryEUp(rp=V_%i^+$MXb5w0cHLbn-Hrp7wFA^ft4tQZ`bBSZLsnMs0q8fIiMDl`&(e|HAi&iNhUqjGXfEitWS3-egR)GKI^3)d32lqZeCeRe983>y~VyFc}{dOXq~7lj4zQ zL&m#MO69|YX`vqil4obRY|9T^Ruq*patOl+`;M9m0rR!DbQ`r_QZHB@h?M9j^NT(j zT6;r$28@zNnhJ&>w257jRK9EQ!RMHxpe*wFd@KA$_9gIq6!M-g! z?|nuMxJI8hA7*3B^qP0RND@ID9OBFj^w0vUlxWLhn75S1Xw0B_%XI}a>I>TYp^iJ0 z)u_tHt;H=3of|KG=Zb-Z3lD(a?m4WpoE^C-%0*j;FVRz6tbp3K3i1OCvdh^+_oMIp6Z%2R-T7Wl$(W>$7|yFFFEKzneR}~H+N|?C z))GbnA(+i8$keF2K6nxqyiwAdW-GHk~0ru~(h9;iuXzC>8j7oaK?S&$pAw_}O zS`Q*`_e;l=2}TMby-12gF18$E%rFOW&r~97r8w6E2a`}ph40QAy7aBpLzTg**EyTY z1NG;=Ylq&BJxh)Sn?D6eyWcqEF{ydR-0-xDV@E@66@CaW_`ciLuxeEvq4HfHy=z9L zE==kb2SzPoS?Jhnks|GYlLg6ofsYo&I#$U9X{X0a0>BZYt1|1}6aNzn+Zv}Af@&UI z<6?&9f$Dbn^$iZ5V!iCGpeFVrv?3pZkHZh${68xXH4;k?G|(hxz%OV0nf?j>st5`H zC3W}wEIGXJxLwee>SeVl2T-XuW1W$0OZy8!xm!X+$k%)pzPPf(ah1z;+Zt4Il=62c z2?sTAPeWwJa^6DR;`T$Mm|D?55eF82P4l?iJs!PZo~Wks#b2QUM)#PrB4dX~aU7eb z0HZ(LP`hJ@_*p7;ESxZ^1nzZ^z>{R>9!e)sFo@_gr>2kCpK4^nQDDTKI`=8ulYEH3 z&F_qyoncW&Qb7?%kX|TA2^pL&?1XmMqyLWhN+DJP<1;L1>p_+EHzd8U+`f-nhELUK zo2N`GHpcr3t@&gMMrQiZ7Y(89&0PyTsp6rGbTq({vxF@!uHw;G5<5)4%|GZEY^F* zeXb20d7EkzeS?7Iq9&_Oub2zwBJ|YHZ6UjmN14SwTkP`udBewSb#8hF2?sIvCf~xYf#*J_2_usd7c@9$Gi_FBH^n2gB2N$ISAVDEU`mDz`OTV3F~RYHyz2xX}+2ajOC*%DRbC3NDgg7MfsG9T{OH z9<9uVCD$&X4@P`F4Iv@$HntZv%xpuGvQ9G5UjbN{_BHKpcR3BTLy7+eY(?yClrydq zLcCfP@)dnw;ExZ|?o^+ydv>a@+|S8Pez4oB$^r%)GbzaQHkgfd31TwE)goBPpwe^e z?eH~%?Vzd@Z@f;lo&&xdH@c(n^VEBA|LFAv?!LKdZkeztYh#9SX59pCCkw*eX&L6QJf{$Dy*quVq%{YBP$|t zaO#*H5e|P0%&Y@b7lxPj_#4s1uZV)M>bvp{6GoQ0_J`YWXa&X$aFqbe@j|*8{i+z4 zw7CTv%xW0hwNl)bK}eNqI4>s9G>|&r#}SbJp;wTrVWIV6Yb0m^nM&^lJcGRYm)?i= z*~5+`qNl$33i(wFNbAk{NL^sw_N=3v!5pCg!1i~NivF0LU@zHWJt6pp`zYJ)T!Tu zp3@a|61~u-a1KOO9}W>#?)vHf47f+jj1p8(u&MsC9%cV0sHA1$XeZ?1Z1R_&3*!ijuq1=`5mr zulR-WS!jv(9Xis%eEwpce4gvR^P9DJznZM(nZ!6dHDrKiMcvVZhDPhQ<%;WF#K61nmO*^DNU|yM8$1~ zpw3MJxeui%EN25vRO}kfJeov0&>Vf8fcrWbXb)lM8UGG7cPpHouZDe_faU_F+L$K@kNY=vNbG6Gx}th0COP zY586OjGzgDT>oo7J5!@y~?M_*RBhfXWnYo>2j zuqAV@T$>-nT^7ny-`>pE9=^T_zyoUOb-Zrgjn-|$ScAQBSB31o#JTVhwPN1R2}@^8d=|;^chEZL3Kn9D>RiDJ55xmrX|2#70ABt>%e5N4bL`6Hh;5 zk!cDyms%S?T&GUUE6m5tJQr>Zn`AKUK9E;C-R&P|M`TohD}gs71#xLZ9vt>MA!oQm zEE0>Br{TN1)1pN&p|&ewukQCd_SN;d@ej+lzvU-we>;{iP?+HU2`+H|GUdtrpTk7Z z$-@TZWk(AmX%mk>T>dYqI)+KUj}awky}?3wT0tpRBXv;-H0gv$tcs7bKbxCjRk2wn zOR}so>|-bhPRw)$ajO{W6uW3Sbo#jFMX|ijpRNC@%0X-&OFcp^C9p&Tz|zi^bnXVZ zNy}twJErF;`-Q`iVL(mI>bz#jdUz$mNy(s*GK_i=+u zV1}?cIuS)t)hd%!RO`a=3lXu+^T{5o*qbd%v3TMEB4J1=`$&gyRJq%yIuHuSC!oUM z*g-}&4DP{r%`3a^eSe>;?ror?*G}pqs_}RojW8N$l}eas_eH;z{dZMoK&dzE2xKu% zkX`>?)%kVK|Lyb$3(Njt$$uT5|DMLP1x@2+jJA)Waf<;~AM>1_3LdB1w}-d;H{&x^ zp0@Lb{o_A8`S<7buNZoXtBa?+LSbnjYbZ&L6Abb7G&9o=baVxfy8=wb0LqAj;7jew zG~bpgc=NOJvOsb(w(rTdp#jjq%-FzTTwc<|c*9YWj#5fij#g3@s9u|VSG@4Eoc*;o)N{Mn2Mp49NV??SU+Z9@y04Z+#PTv&0cYU&U zp80ySiqLlW3{Q~J-meB3d_P_?D0i^1?7cjWUp`KZeBVw&$o;G(OUDy(v|tpfgsfJH$YB7#qPI-J!kWq9rS8 zsj0Z2rD)6HbV;+RtB$dxrI6Sd&|S&_PIFcff4b;rB$+#)7ZHIeT0SP*seww+VY1#> z$F^K)oMOdRY`C!dG_1Gk5U{cuKLb#jGIb}g;*tdz7VN(Cqcf*xWN5A54ue9QE1hHxMHrt1qKwe90&!WiO}(E4Qd zVup~9^UM=rlz-74JeN40cq(Zx&^|RjH9jr)-6(F*=bYoo=C4CbV8?;3g0hz!^S0*5 zR|r=XcUV>o^~g)e_>A%z(7D2skgTw>f-{rAlDE=Puf(Ayzy=|+!T4xEw?f}!$QgJ8 zcwqTrWU~h!sq9}r`X}o7?uhnSY)JbvfL^%YDDRHgzro#YN9u(9DA=WW_U0DxEJKM4 zdCPx;-PwkkUcOu9Gqa6}+J3NGg3G2v?~A?S->1E*C;EmhK`CMpRPX*h zr2T5>*8V38aAE+RWD{c$qx>@^2$GkT2fc~G8v_O?+JJsdlQ*;|LTbS5pet+$R0`{7 zt?em+zu;<@5eva#zEt@7K(XRFgNUb|%AWi1jP2up?3FxQXy-7|a+Br6@6G>|3cfg? z1;7cO{c$%a6+$e#SeD7OAI?*E^%2Yc)3}29(x7geg&XqmjO{Yt{nd`IUjsIKb7CHU zY!QMi1)2`rrPi5r!c`u{s5Fz|7teFpIV4OUpPuUGoy+b9txg8e9Rcx^8U}ESbxuQ~ z4n~7TSki@iTqFpy?K6%0UdOyCf#7*x@peM(*~dCVp>Rsm8oiVmdIqGZX#FYRzI#6D zpu&o6m$eHmDT6(~3fH@W*e}HJvOxt>Scs#!<^}{%n8^sV8+5{-P=7!QccKDnxBb4` z`%u;hW?!;~0Bcn|^I!N1I}>z)_9Uedxn2bnUUh;XB@ql% zQH)6_2IbW>1D%pEv^K{08U}l1%YwH%hP}nNP_{bedFDE|VBU!iS{gMdh#Bu#oW|20 z9`B!TA?Z$r0oN^5z3CSEoTTcDuL3c5!zLanLzo)!?%PVog%nf8EvdQzkj0@ zpTNAHtBXjRzv!B`aIs%WLWxI7CXx__(mCFt~KM# zYSnUi)v|IiXPNls!_hI;E_1Vd`BO{G-Dfro%21j!KdQ4fVqX&|cnw7&AX_B%ys=1J zd~ImG%uZ3{+ln?|fcJFi>h2fC_i>$sq=d5hqkB7&;oK^Pr9V(VOYIDEf3jPoSJjL2 z0PrZIgoQE6eSv`}#4`TK!?kT|B(z82{E1cQgy0iAGQqa^qUY7s?Qb2YqRxZ`JCJMP zf64b)|1;kc`RUsK%b{`qqV|(Qg^joUSbX*i;L|nsr2YN-LZo79^ovmqerS+3<*=Yl z>(5{uw5(I<&5W&6{e&j%%3%&>5()25GF$dC3T`fs?w|x<%Ms#%C!!7GM0hTjp~Q*~ z+_p86QBK}H%X|TA_Wrmxx25Qu1X<$gD|WVS@^69*juv=s;-P1&-8zC@Ryy_!AvyVWUVp8E{GLPWoobRQ94{s2RTAh?AlTOofRgEhF~l{Nz}-xpjO{i? zqmn6~WGYwUARTTGXDSd)%TEfY114E#v5%vmvmS2mXOK`x7i(U;ou1O!g-z4>h6;Zp zfRV!i5JoSEWc~QQyLWYii{R^~r%^ZM?s{yipw8i*ejFD{A0akFpvJu~$+}STeJ{FL zXwtK9zKDGf6$*t|`dE-gdoYQjNLA<;?yJa2lo9o$QF*lWpGTO7N;WMRD`wh zeV>;{8ec(dU?%)lyRSk8|IW8hub7fIaQ(%}gfBv+xyq4d1e! z&iMNhDf4b_!RbtkNc3Q(d5mLxpwa!-Xqx$|qeGGd0RW(J1PuB5GzIcP%Q!#V1bziyKa79+O>F*k^Vlf)paQ3w>t&1Ej5FkY#y)w4-o z0$7W!P2usNoOp9Fbt=uREnJ7@=4Hm1@x`4kgDWw;%6)07BPzJ6b|;O;KPS810Y`DM zzb}Z{TJE6e`s2es?*&FGGkY3mCZ9(~vN)d|h_$iGm=wJ@O-0GYkj!b^?*kETs^8#r z9jU>&+NPdv9%%T~k>u5;Etp4Pb}lSX?PMfpTgNvIS=al9y}$e#~0Qd)JgQG?1l5hSrgLn8=f4rPyVJ$hT%+FkOP$m4h4F;3DEq| z>CaAv>CEiRWPU3kNCVL97-pP>!(YI$Wkg_!WLz+@J@ao>H?~utH`5Tn zRp55SD^+7C0w?)8Z_m3OcVa~mXd$Y#ssPD+)M5Gqa*ZXM@GHuqf{TNFDf3o-N$OKV zD<|5j2cf6=-EQP(E;TVy$f5%!SK&^S_Q|EKYMU-zgb`&|7z?fEAF0ER*1a#mvsYon z`_6ek(4XWSW9hUnxEK<;`6$0t{qPzAh9`%@GIef?ZS)9&jds6GLs(3`5O>XmB9}=!!-xV7uZXFNJnj9k4AbownVH$$M?b>RrGF?eoxxtvlBm#gB@Gx zv-@`d7g?T;_oz@85Uo-lSa!F31lEHwmZDyec=J!c^<;AnCFV4S?AX+YxT3GsYJ@!!9TGrz7Ekdeqb!|1J(kQAhp6_k-vjyjmh!mkAJ3dzv;G(|? zFp${cY=&JkxOvrVIPb7U-0W?d`d5``VvAz$x{Ae?fG)TDC9(`I;9{+h+=Cg4I0|a? zE9?+IMI>~^XyQny9wt;Fn1uVVAe4E^74a~XT8Gv+K7`~F*qL`Yca%}FU;DPM=oL~5 zj033MMrE*^w8FxbaeG`GN_fV)nIdw?Rv>cDqI+DoLOsfq62N8DZL0ZyRAk?_mJ@vGaN ze{eqq7enhm%R&F804hpLgDYY@+p@41E_~l9r#Swsi0f}|R9_NWkf$biTs32&@_{Yd zZ}~as$&Z~LPAXS)wviAst9+US&cbQJ?c|0NdVFwigvJ-Kg4x`ZdXTYGx8n5^KKMl| z)i5GpHR&0uPehOv?tKHz5TiaCM{gBOm%-`lRh_w%sw?bytB+QDR%2x|jv{>w(#z*s zE?uSzK@`-8?_bU&8pkn`JFh4`oC>~Gq%mM+5wg!SGun1DGWMWwKij0y3eUb_G*NUp zp7|ij<<0Ig6w9dWqscxxvNc8HWfw1-#quV#tN4i})Cdju)3w1=NcgDHOfvHRM(m+P zyR$5WA`-ciuLk`4#STOc={54nMHY;=^I3&F2`47ogmnGm*~(U?nR#h756t=r{W=3a zBdSV`l>jOz`U!)bb6!gK$)KpYD)#Bo)R5tuvT`HY35OdcicB>R+|IZm>*ekdAIWA0 zF1k~#Nev6%YgqS9p5|HwApCw;biiLQ41&&uE8U_-$J6cTyECrDl2d{;fI9KBh2(Q!oF>ztIh|O2eGtC41P_tt< zy$M3IM%djXO&@F+(7=WQMT7ti#CeCvWs~0|Lb=k$J>2!KkNk<3x7Al1TNY}N#?yPF zvDKb(fLU=PCyP9hI>4`j#h7<$5zvn$^^I;ZEl0B++qY}Efsg|;pEmjRxgB+^SYX^k z_EjX>FpV*{F(MiFKd-H?TJ4}C2J9~|hJzu(q2V%1SSUCIIGw+de2ESwUSE)-h5qE|zh2$v{|6*rS@1s;aN5$~g4nzXDPuO3v@~sg z9WCUtyuql>ez6E7JvR>c^HG^eUzrwtR22ZcR}lA#Q^h|vgkN`#zFW^6VI2MNa}b%c zmtHt;dmek5!VhkgO1KC!wN<6_fRW70!WQR~Fp8FQVH}s?m-Ptop0-}+TaS%}#JJ8` z1fE$wyCAQffsdi10oxy=-;-}IFn7jFSpxkPWMAXUOJ4;Sh3d197n#z$m{A-boHqv5 zLyh#d2O;zcdL_qG3+Han`?T>$4oqu=6)Y_Hg?SiBY-cGP*JxL^$Oa2bO}KB2WmncU zw8%oUC%+-wTsEu!bNI30hGcqg1FRp}EPqzvy z$7!Jj-d%W`_#T6?CmeHFC(%?>@<8Mp!_n}cydfr)Nzzwv#~r!_{AB5iTb7zUAV-D$ z(oz3JR{70Qe`V_bEfx!k0bWN@{=B&Thi1HXH5>2yQy!j;p9MW60hswa4H-N(&(Ldd zb66*5DR0#HbXKZaObp-!ey`(?AIJ8}#xUSZ4NDE^hnac*4uu^ocQrk(M?g41g-#4t zvA|*qVGC$rw6P5|Ff`aU-Z0qsW@uox0TrC*ssGdk8l`yhJnk5TZ0=^xe(LJGYb7jHl~|LHSn`=ZVBx<=S9K z*k}wCj(K`a+wzr-b5_p5jdLgLo==zaHFg|JbO5p4$F})F;K&KvnltUg@q=1Zlag}u z8Ai4Qo7tDhAj@Z2qeR!_*|(%q?@~x_!hs2!ofCt-@ucTzz@vDd&E3S2S`SwTsyCv# z#m;1XRttC;SSK=EP9YDL)G~t^`ZNpey98YqW6Evkg5pB3)pP}C&FRe-Ka%9L_k(n2 z>Xwrgm!M`)Bn?@@=z^6fQhTt*M>9%VERFAtJLHvssg73u2%mzNg|5Q52RG*6iyH9<GWE7JLzb zmD}jU6a~5Jq!_h}js{1Qw{{y-xOdxDlxFj4gbd~9zrCI^k8dKp1&S#3Kj|cYh0uS{ z!x2#y{3ELVMSm)l*FhJbFrH7AD)ZIuh=UM){D|sTb2buCh4ai2jKv~{2tKq$7SZ4w z?Zd$$ci!sn^KZZ-r#GkF8eGls54+1P;226p_LDz#etgJs>U6TR^?7`}!0g67ful_B zNHWmPIU_QMJ_mTYhlqcg!$j%yJ$!#Y19ptCAJomNsN3kzivtaOFD`b`9nldg6)yYL z#y0r<$L_^Wo@86;Mz5Q@lg@=uDDs3t2po=8alfv)Xx{Y*$O^`b)z!0-RZfd9wksDa zV$RcH!fq`4tR4H-FNYqb_;QD>G5UNw8T4FN1aSLqcc%|o5c zJ)b1HK&n`3HSjle+IFE)YX0!By^(CKSx2X7JMOBufO3B#yw`EYa$OZ5PzH$Me8&FF zWFrv5m_uYHAUY%fW&(jLjJkuG+T3HG@a=V9MKtWnyaT2a!X;NF9peg6qX2%?4c!St z#`lEOWvrIr3HhC?tUId-u5Yu12V50ul_IP35%qb&B@U)pOUT>e>3|)T_ci?fgyWqb zO&Q2n{n8?>iz|L?AXu5pTa0nm5{+|b8+b|V7#3M0?+6vOvnGl&CJ=KAr^&G=HCgBd zx#wTt?{aS^%?xv-PLz2y^T-m8*fGgZQD;!ZNlwANe;ZfS8B&&6i2Hp-aD!qI1v7)|ME^L&p*SjzpbYJlnVaH0m+~o03!x?`a9_V zSNkxT!e_!SDp?+wJB$eL*1ywOkn@hYrQk(l2RM!zG_Mj{yUX@;4E-M56j#krSD zJNW4Fw)CJ>bUqRR4L7|RBy#0_2(7`f&2BKoCJkrD(MhD;B`+U{FWPH2fcw8Aj>uXGB^Aa#tS;de^<@?y=f)> z_oht*nRdD$bJUpCD>CVSV_EEfU|IkFw(S1jTejk#SXKp%mGc~A*`{Aw_Mb)V-xm`$ zin8*{pgG7RP6zv}T97O$V6c>6bTq4d#y}WMn@Y+#4!;eK)V}4esWe7h*jEZ%!{1cU5G}I*cHuURAm~%APw{Vs&?=hg{@>!x$Lb% zo;81*%^ZUEp}&lrvEwJyhQ#jMQl1oBqQ1s9rw?WADjP-^O{+$Z=dB-QrUhE`R(PdJ zZ)84SNN;+tX>-T=t;d%V2DL>}rHjv$$KZ085;j{o(6)&jNj64)#j!EmXz{}WkVBFm zSB7L%%p%iiVAq|+_mRoKi<-Y4o_t56;SO$ufZ4vQu)}C%2xliVY$_|WMHli8cPwS# zO^@=GwBzJrJad$8-3+L4cjXXUtWj(U&Sl}3H&bHS^sc~$L~&f_q_L{olax2*E=E1x8C+8PH`G2 zM1BT_6xvafTBbT?HWwk} zG#R?5?|so@k~q=Qc18i8CV%3FyXem811san1kM0(0y{;do!$@zo3K z2R{E|iZs1D2Fq-9<^lKS>@Iyv8xRGa0>xOn(-04)%d9Jk#7yE7+Ke^sF6+v)y>=hC zun7eY^TGUi$Bo|xL5v>Ltm`ud73gW68Si~)e;H}9t=3pBNgq^}o@8izoP-S76BchZ z535a|#h3fp9v}Haafh5OBvyRUl{qFFpk6QQ$$>&`g)rERVsB!F<%~u@DXa^u6&iuG zJ4p{^zQ0&nnJJEHsxxBSH`qbyV-@Sl=C#s150H0~3zoZDWGPZSq`Im*Zpw5lniz^?dQ1%Gv)0iyKrPbxv3ZzA zO;s@sj`BkoHSbT6&|il<488l5x=X{z@wWYgJ_u$Ws! zK3!u@C`13AN(EkoS;0W5^z4_Z^dIysMTLJ^_GT$9OZ5q$@GfgxN2ch_dWx>ct7(M8 z2n|4&OVoy{>_4#UPKQcLwPIeV!)f(E^LNLf4N``hV?KN``;qyMr7mSJWsu^PY6T0K zY+LOqwve8QNXn4@*G#fKS| zqAY-HUt(|tAPZQ0ce=(F9B;wq!^I<+vD?NR`-9P0wVz=P{3{yYs&yr>0mpTSS8^fw zo!@bjMMa|@#x4R`4}vkH9g&~T>pIHA)X)A%5Yk+xH4=7u$gODF1vpnx*l*(#@GP#&hg_-yaO-~d}cgiOoQZejjJg(Ks|ED;bY z6#c3E{i}}r51Ns``RlJV`%iiK|J&-97gYUb#mzy`83suFSMiJefWq4SmY;)(1sNF3 zHrariZhXM95K1DPZHkQyfd@f>41o?oN&x{4fs6&g4Z*-DlXa=AgoEKn^1a)@6w(k> z0T1|tVG+hd->}Xkfm-8ok&Sny_snhhAc=%es zF_b`8c(7jf57u>2q%6vdTVWII=mFJ-qwGczwIjNOh)6_{9RXP1`yVFudBE86{pJ@` zn|5D~xrdD#b$tG<6eOR+w7UWsxBHjI{RfIT$hiMI4*6L?3;?3&Xhel6`iWK9iTdd& zI%%02I`Ii***Yqk3h~wYu^Ne~+7+jV-?OxEUKtiA7re$~VNOMvMNvpkOh}8&i^}o~ z%JNH!6C8pTcC$5<4EDBUmeBV$)eB=I4QLU=C}MV&*12#(XSqaS*RTp^VlFW^M>7%( z1OQcyTYN+O!hYxH3IBtiPyaWIlwkyCQou}w{0#XQcK#<0S%YK>p#Qi0oD9OE=MrSv zpOyCCYd6B6zxcan?(BabD-yL92igFw{{w3C%7Y7{c+n6-4}#@|Qs()-_9ZJ8qnQ;l zf{7D)o2zf&l~UR_or}kf{%e=7-+gS+Ua3O(RO+LbPj7k$PHO# zT_v-@JCB%^jdpv)Rm~{8MF-yW+1&(E9a0dlM3g&{rCb~Z#U)95Yi*ydBi}OQBH6RZ z$|Qg#N)xio!oqU(J6@Dvzz_F~QbeoCog&X6z*|$s2**`cavS*~s#aHJ`400G^N_~k z!<*;g>_m6*M96H&E=Wxw-;EsRa>Y2Jk7KId?_mTBKamy<;(AH%K{QxWd=JKzty8Am zvxE#0;vFm$|N2$+N4EaUyQw!H*`VM^;B<)KR$R{vBzwScLKTs5%XyV|njOmA|MB`3gS*`ue83>lHwMo<%5rgYnTH=RY#;x%3bsgq@ciEoQK zuVAA}Kzd#dQ%+2Me%$U7;MjuU4oB+gKWh zCHw6jp)?*rE|9{KIhLTq$mCm!8=hG_u;W|Ocf)*5H?8P12=%4t1ukUVA1%`lKcd&m z;>OB3Lq1(+_0-%)*iEcrv3+}Ho!ThuYVp>}(@zBJ6Brf91ioFjl8Pp_*)87$?XE9L z`MzbS$|X2X%~+8(@3YB1Ds;+zlt}959Zd=9B=I5PL%cyn_}s&kDS(y_d-xem0w|(u zu~epou?r(N-HLOs0&wBNM-&c}nV}JG7Gq1x^6Yna{RWoConw`At5DD%X-W1zX4FPP zye%isOxROo%1)wm`tvrM^D#NbjF0fSDW|=|Gv*^4>apoF)T4w47q*VMQ67ZwsV8QU zFMCm^;~DJFWHY-;$8HAlX8WJA_Ftv3U*9nKpWghdE0dIX?LhJvZ?)X!EVg-svQ|#) zB=RGwy9ttEj*wyj5toa>CL7PY(##kx+rp|RtmFRA(_m!rQV1a4h_R_RC|Du|&6An` zexhSf=j-$J!?N3}31TRO1*?K)3I+G61DE&|aDOc*FZY5xV$56t`dLXYp)uHFIE-b> z#kB*UNpN`RLyaMcYoR;W7l9@;FbW&cf{5g5E?|DjzQW-4YuM%|&cuhOe7&QB!eGe) z6B<4oGOv~yoO+k`a>Kc~uxP3e53N&R$cQ^fB~`7|_imyHGAoS0jAoO~#%@Qa`L}F- z@yqR=u4C^hYBoI=Dka<+ncGHAogcc`ao0XZWqkQcnPY6^mkR^zGh}2mBaJb^BR^S6 zHDj#dLWaJ$b~B?rV@((TPCTU4kZ6Zdug=dPBT+GOJXV9 zB5!4K$;H?2q@ybo+mWTE*Bo_1MVXoxL#7BRltf%Rl{X0vkH2-MHuusOe?E8s{3Q|y z{A0lX1zU;x*<;2IUQcl2UF~oQ$^muclp*PuwJ=cg;>uy%#JMAf-7R>eo|C)-BK(!i zQ5%lMMc4NyNe~Lg+&Y&ZGO;>;YePOPnx2`Lz6p3~p06lHm)h1<*T4rmU zL&NYOT1=c&59`C4QD(m2DKw;S=t}6z?*Ju4*V@ zS=vPwqE*V6UrWgSb(T$7FC+R9If^vU1Bnnj1RDO093t4|3 zYv|NaCO0r797Z=KE>IxRWAKi7fUYba@_KT_#m+Pkkr#A30G&~7QvM{lZfyVhU_yeY z)yQ!x`UYlSz;%Xj1NqDY0BS3bjG|;j8-zAED9gvx@Y&CGGEFOr>$)oxKM}_#Ab$7_ z;1yF<)Ga`6P5C7x{DX$$zw-Fs@}#UkCI`6qs=oFOuhrv;14D^m@qLnTd;ST4tekE>dsLQU_2_6wXkAZNx*q^Q3-(lD7E9VHfaZ(Aw> za6@j3io4r@MhAMRgbPTPk~(%qx=T=^ zZKTtWaOYz!597E#sfEdV&~Rbyy3hgu=l82Zd+pO_?jR@sxmx=x?u-2AvnwvItir;| z#Q1Br7B35GEx-AkeQx8VO*1mQCSX?uo1g*OdW|oF28VdM#Z`g#j;7A2X1y#2f$IwF zUSX;PpT{^c#pAi}lBdh>+spag52Tz(Qh)OvTNJW!-fyM2f}f5`$+4;q(ff6(Y+;np zf$@mVo6JOCR%)Tepk=NPg7(-0H|bL#XH)2p?@7M}BEiq{7Dpq53>T~OR52abhe zV_d?My5M-ITU+MpQLq8%1~cybK22S_D=$T02_K$(o=!xNw!a2Q?C*?5Wh_%+xEvUy zi*B_zMdNUA!+Eh(cLk1$KP$^CT6CGrhkQ*}Or=V3m`>#yT`@R)s1W%s0kJ0AL5m5dg>mVsZc^00BL~ z6`*JEg=??4fSD3p^#9QI)*+=9EiI{`v)cXxMp4+M924esvl9$bUFyAxc# zO>)lry?gGxx#zuCUs3xXs7=*O_pIqzy}EnO%WDKY7PRPHRbq#^B_8>ktstQJVeVu# zF_%w3?eU|EplxB$(AqG=(CX3x-rULX!qui0I%|t>;thYjv%iPK^6dZ|{FTc5_wSXz zL1X^8n}6NPe@G322Gfo*gqJm+G5mQxdgY{E--B75_qa ze}HSio_{>7E1J~_NDQVtxb3F6T1ov(4040q03!{p1Xhqly6)9KSxayWL$>(v%^yG% zz|ej{m{Jrk2hIyLt=c{v96zn8*T=hQ9f#^qvl`U2Ypp(n2t64f+^^GbUbj3s`usy$ zn?Q9TL1)VCfQ5M>bN1}r+hRnfrPNWKW_R_3){5=MA8QSmj!O>hi&x(3_i>jc8q7bI zcE2u`pK=wHK<@_9w1U06pE#v9Ysl#ww^r#!_8Kr=D^zI)Dld-FFi1B@=T8pA=KB@|9Y_TUdP|xq zgMLc}%PZ(BbUm6ShNwuE9AvNEbr%{fchGG+=r%WMiz|lP3EON%bRuAD6qHZM;_5FOY>GRI z7cd&T6$%fvQE~|}6Tm;3KX}bOnmZ^4^ci@HyoxdMhjG+4$O7#U$cdXj!wnwWy6$kk z2&h{K(I$uiS&v!nDcvf5aY}q!=NA=DAIw>0_mI!QiW{;>Nl43KP_j9Nr4$5p1+T|zX_NkM?|}&;rzyGOmxjkjs=?>5(L*(sqEqRvuOCCm8JQY zG&bP~naNpZbytc&a@V@R&N6!zWz_?Dqja>N+df)za;~ntwI3&%6B0?@DTnp)ymHMD`LkISo4& zTiG}Dj7KsDO~j2BROCytX}AiAZ~W}D+4QAlm&10ufX_8D{+0X7UAYqt#hf)yfx>!6 zX=h)2dDxD^jL6SGK_1C*|*EgCn>2E2snwm^$&@(pL zGdMNM&Ou&5(hAc>@dmJm!@oV&-2a1J{-5zYuW497t}y05q+y+2*5LFI`G8(?v5~^2 zBBnC*gg(eo3-3f@Y#CxEm>3nS80i4`NXHO(r%xPDe6ULrufO-nAkTFtE+;P^MTL<; z*w}a@nqfBZ0)NJ_A$KNOCls0!V{U|Kh!qD^5%fI{s30hfBmgu4$jJ;q&Vv6!PEY*N z{tjSS5PkZ$^P$j7+*EJ2MCj;%@PU9LP^w2ALEWj3O96>jbhHdM*32T{P8T$^zi^ZZ zQ;pNFn>_T}P5vLa@^8|H(h^b|uP;at9)1vHdw#M#&|(q#CcBNk9thxU8uk&yPa1Ke7(gk?4A}^^=&t9Vv_6NJ$$o6vC6YYjJ4ml>hO$oWDtzEf8m5 zbfU?151a_&LS0p2zDPw44CdQ4u;Q}g2%Gho>UA#lC(WtKqwDRUT~*R5>WEJ><)y10 z@k;Tc%~dK~v6{;k7S(Icl3!iSP``_`lPM4i3(}E9QYf}xE2pkT=)py?_Mz(r_R)9J zy>Wvx5vPCDPBiTAiR^+d?Iq0SCM9<%gJWuwjOwdJl7sK1@0A%J-9k*vrQ+LVJ1@9H z1!0^L7){wHcz}MMLp#BA2nNcY5LltI*8%QheQKjGB)~Io!+V&E5o(LG^I{j51Fo7$ z2+L1nzb{RJ-NF~Y-ojo8sh?NA<-W(!d9qo@-X9T2_RasihA3*g^hp@{#NKsw=t6yN zjJMN1==qHDVA(TkA9X;p`bkiSz$5ovw@}y5iISgjxPsz#?Wu$l)uq&Kv;}l z@UOS(e{~uTaImKo(DC+uPkuY&K#Lqj843Xo`c4og2!cv8#lirk$#Gv2;(@~bt!2x2 z4+tUXDbqP0dis=vGJ)oJ$nJK^>ZM1ToutRpvkRp5dnoc8bOgf_33DejBt|7oLo}wL zA)5@D3OUWZ(8wC{Y)kgro*x?Lv6(e(=UsFf?dTACt0v9v%f{C0zBD(sf`=M#pFecN z`pVcqb6v253R-~XI945iv~|;|+BtsS3Q}Uap z!I%z9FuJ*YThDPad+ab~cd(=ec_`C;-g}@kZ34-1hAudonGna3FG}EtSF#v~cTs#y zVFfW(S*+7c{?66UkZY}~%p+st7Vbszb0U~MCstW zuMf@aC;H~;A@Q*>Oo|J~ba}qV7D0y*WsK=#IuW&#N`9DRACDB!>_!p~lNIyv!qOP4 z&e+lRSIq0M#)RCDW`C+dpQpS=Y-LAuJs^32drGXT7seBLu5}1)e3XJt$7@d2`R07P zJm}H+1x$c)ktg#OsBmN76DY{k*aw@6s-*7&J&T|H*%0TpulKE49&k_rZ zN{}DChyHk|wLy~FAQpNZNCfW(+j<-Y1#-mcRg8*|%lPhBfozFBA+Z*~cbR{CQU49S zn8-hux;sQly~^c#$1q<)7mQUEO(AMANp*~IshLm_WbkTieqiBFA*M#16VDl$%0vQF z-@kDy*lQbjhWmlCYddzj1a;ch#?k(Ul{Xb%hoz}flb+~Uu)R03@}bndxH$Ey5;})X zM;nQOX&6R;XjgrJE+YrL#hMH#J#!7p;oi^qJ3)4J*Y}-5j@^|c<*ThyZL;v&lx97g z+ml{xB6fjdQmzJU!M0D}R`0CV&yz5qWa8T7#^ak)YI1nE?SourRo=^zK|@19xV|y(1#P2qP7u4o*ei$ zqmpQasYHjVXKw6a-oL4o6_X7KMn@k8r-U7&8t_#19`7IR=p5}B=gXBh z80qNl?da_o>hIV{Nsk`P07qJXcOMz$1(5^Uulue_1ufAl=S?Ijh`ta1T}_RH{;S$H zsOnF-ZTI^gI0tWS6d<6VYTFNgs%={)Ty{19w>Zad_wsMNCtsT_v(hm#{tLKvh!}fK zulKb}AkNmw$bp=$Op=x4;;;t>r~;o$XRhVuTd?`YCId2!vK*ZqziX9aqQ{ zocg#exz;tuD=}ggS8k`#3{tpMmM~g?KX03>VNyhD@dN5(Rc*(#$L%CvtqWR&%WT5a z^XA#}sjBj&8w7bJ?L_DVFA|}z@y43~>KdD#;nXDf(S|91?&0@iHqZ_4C)S*Y4`LnG zjOIa8j~)>RKDC@Lewt*&9(Cs$)*hSf3cr#uaW(0 z!yP7%y1cwv1=O;o+)BCzRMblF4c^Q(l429Kp4jBr0kl0ea%EstPET0k6%maFI3t_) zm#KC-C%uw#g$$gO>B07?!J@RpQqwNEVw_PF<$&H989&cju5ifaM-gS-OqV#cC+aE)WT;N<*f3cKGdujd`w`)p9JZ~QLW*S=)h{X z329i~!(R?B)QJL{z-;A?9(a6$i2#cUN=W-v?X~JynZQl^o$N$NB^rfLhbX7 z00dx@-F~~#f1@xKz+U|q1pL{N{a1o~kw^kjuhz5__n5~;B!=&-#MxL%fQRR7a*COz zw$`G{5c#4UDK=Qx!;?!ir4%<~uL~fjzA-d1(p*j3eRC~iME5uY;TUFV@Vga7mkl6*ho zMf}VXwQP^D_^4A-kc8cv6tg z@Zf|L-BRGp3m<=wQ*J6mB$yu0gsl%_l`m6me`FY59ftdS^OX~LM@SkbI4yd?Pd__ z)(<uO1+2PQhCc0BZ*VPfa0bdK-n_bQ zk!=j2)+}zZpr11TzOz&6dpOa@zG(>qEauW+*46M#yaK!&JaKFLyAXrIy#w_rIqz;R zGSYf_LiPz;r~sT7kxwkwJZf|fJV{@SBVJM(=a#o9C|Z;iDv3g1;gNCRR5tKS@bJZC z+_fRsVNgXi7^`eC=L5CV(a{(Z`w z_xaD%ZDSeU$ZG{4{coex-%X3O{-w8gwd_xhC@RiQ9`NGg)7_d{$mdF%~M`y;2S??2w13MG<# zrIRp+3#WY{Kk{9zOdpi%3Yt}ANp?9To)xQgVTPQml9|x$*!>PCQubnGqu* z#KC5}iBoG6@iio6{xXV22rz`}Z=bs&|Cw=;)X~$^(K9xX1N7Ik{B1(TPgdf!9ej$! z(N4CB$wIQM@gPZVEd{CU_V|M z@OZaOHu{h(MD#v(V%FQ344Zh0h3%_7dN=3vG}7q2r7`^iPcV{pz4bo6Z$_T3v#(1(_Zo6plC^6uZo{_M6XI zenEI=2!>F6D`*j4#xu z#?6T_vK^vtr{5_;q&#g7aeNZ>Ctx*CLl`ILay8TZhIMO3;v({8jyb-so%*=aWY;6F zddCDrfJ$DPL7FG?9p)^IIocdmXQu>EJ+ygTrN1ir;T+B3HM7^Ws0)_Ea>-#jc|?lH zRDKEsmQreAG0YRb4c}(k33H9%Vbk8qV$nxMci-hPx(Ip;Nr`W4qx|d>dGIFZJ>vcjr38!X7nyL2wv_3{7d4udG^1Nko~KF{q?;2MezWdIRaYy@xpf!1j|ZG zx|m{0ba(npBnE=<@$2z+c`d3k=la*>XfQoV;V?xdI-h~vW`|bycfy6bIyVE9H?E0y zk1j87#`%5l%~UNwM~>7u{Nv=fuC~#E2qQjkx$G>!%i3i7U4Nw)XP)G^GGh)4T zFI&%UpGeymetHZe`CPJ{$%vNf`rMJ~Ig~kd(dtO%N4kON-(>QH{9)wz!nkp<&V>zf z+jDPz&Qq|S{qB*{_q1IbcSD-KzA1K14bfQ-<6lX1 z2pe_|A%M*&e~Sr%|3ggp_k@33)Q~6;J(B;+T$1KDFj@1tzwul$f+mV!BuIfJ z;ZPkm1{T9f-c`{~f`+rVU&zkI)!-e}neaa*ynGq(x_rHZGeWTak197m-TUHOQ7+?t ztmo_oZ3L2Pu;j93M`pwVjT$-iuB6SE?O9Mz7o3s?V@HZQ({(4#L9)#ORTX&lOTLb& z$?}|=Qc%9PCaAgp;fqdlPtm(7v8}zO&G4NTw};X>viOMQ!T>9&Ei$p^*Aqz0My4=s_{ffGHuGnL4hq9 z9lB8;S3eSi3#Qc%3-Vky;P_wh0kx8nsaYiAlU~Q+l^zv0ymdOm(uYjL=tWY(D1_ft z;}dr2v>nrA+|&orOY-|`{X&0^NPEYZJNVk((d4(b`WuD2|L;7#G7BP#f3`@Kcs*7A ztGU#Es?zdjQ1a|?ypz^_&Yp6J2omB~9fjXPMLn5wqp!3~2s+WaVb6rnjey)i5$8rm zzb1V)bgXW+I;CZNqmV)muDb8f^If!*jqh;@yJ;PSFVt0p61=4U`Z18_fHhM@JNRl4 zvcwCKtuv6@X}Ds#x-WjB-XD9jYT54SOlgk|!*A4+=h8cT;`$`OQC}^);uOsh?k>}a zNxl6Ln5!A%C6hBiu#d&{&|kxyruPMMKzLAE-@IQM{c5LZaR!Y-)dYKKTrpqG!F_DH zmO?ycc2D*4^l4_87~flg2(L(3N6qg|pM;{HuQ~$ykxg|uUKkL_S6116j+}feXQ%hU zTRA+Z{%8^hyf1`(m{Gw$bjU(dTwT?!F4|x5qdH+t(-NKg<1YClZ>uOeU?Yb z-f12i=tY5t0O@CuJi6QkfxzxYi{0qwom3!3t<}@?H={OPaMP3${ylM7HV^`HI7cuF!TxO~buBq$wR_a`qP@w%x$hWTPtb6*uL}GI8I?(PVQd{jU z5H3OrqWQ zq0zDEdk!?eZpKC}<8%rVKne|v1=Jqi5Hj>`WSog^-*FN|eN%kY@Y@!15`eeqWtGo!gNV;O+men0!< zZzSUX(Qb0QR?dG|E$UAWN>)#==7&`A#()|El-O8sz!e1<_>XbGQ{F^$#9trzK@k$A z^K}4yP&I!Am|xS-DBb0gq2c_~>je7oZ}>jgzI>ph;6n7>3o7wO_bHtW6NVH&;>dba zzgLx@sRx(q{pcT03kK^nB9OYI< zqS_q2;jB*tN7DoMvM82Z9~cKc)dKL8lX6}(yTZggi7WR6{I|b~%sdnF%?@;5(|~IssFHhL0j{*gYS&U5dn?ul2z^Igi4g zOB>6OUfJmO)G_M7ZTz^kS@wAueQxGdmhuY7wI}0~=IjwGtR7`e11_}1)CDh#^{~t8 z@%&1a!#3A<o*dH4t4Ta@W^=7(@ zabYAFF!XwRBkdt&%!;w#Gm*X}Jl$oW5aPa}{$y1UIW~A*nZZcm^5&cTxmSsficTjM zNMs^joOlHGF;Gv$@H+eyavEKnz3&WEE@FfgvgP9ktI0>x@o75sQ9^mdW3Rp^PR2y7 zZX#}lP6FTAt~m2Z4)&L`KBUR*<=m+!$3_W)T-6wVtEkUPO|Soz_}-utAvXk=a`LyP z{2T0xEFWNI9zfLl-`adT{829Q6)?XdyUyLC#@#EDgm=7nBeR!JMjENbS#+~bqEL%Ab3GV7B?<>3>;}Rnan%%js-KF3 z8Tgc?qOtRLeVd^}bD|@+s8;I<7Jm@fen_FyPBcHaE}!3W+*7}F!%;wF=A%M}_6v8g zNJ>yFH^5%>dzKVd#oK|l)U|uRt!=6`!)3lwsCZx3=N#3k&^w7UkObA%Y zzr%bH;lPI+-dvc8Q12}8rUwB55dhWrg!Vk;_yilQm_Yz&|HWEG!4SzWT->ii5@0eM zOqcKtc;_;)M>lN{L{)5rV^=v>_Z_rcSfd=|@`w?8*3lx95j{vZsv3>l`|c7z?MEhUq+Jcg582 zip*cTiX!t-Ize&0y=61;+>*@$M(V!K8!#Z>yj)enB2yv9-JV3qp7wadJAj_F+MTQ~ zF*2^Uc_hDa_61XrM^DLEPVdw3Z_H?|A6Wx+U37DGte1^TCWQ_qJ5JS1z#WV>k|j3m z*UP-+wvD^w7t_hvF%%x(v`omnzU2-~9uZ@^0| z!!@K&P?gX25ktfvtu@3zXHuP>>Y1b!3#)(b@og*3H^K1!mrP_>+f;ra*@z+KPzjQ3 z#5kD{`f=eF zgz_U0{?lY{LPcfkGSbFP>@vBsob|vmGpJHgI z8Ed-Y7|+5H-MNSM#W{74IgWH2d>f&1K@9-20HP&n7dXS7nn$GaEFOP$|K~1U#4ZFl zg3WIo;cujAWaW5x%}p#{Cz<}$A>yK~#4vf_`qD?x$8wCAOtSZJ9ezv`gT6Oejg9q& zpw59|l83vuwNs%rqILRaNH`+2UoUM8UNb&f?@nezGi@4z-vGww%J|TnWMnl;+x7xn z5s*quMTh2i7pZd|hkJkjf$wg!lQY5(!L2YCXA%V{mgj|;!A=@JfT09 zMRysliV3Rh}WHV7yXPasA$L-jREr|~H6lQCYU56xAdbGQG z7Tf9I)R>|%@r&jpZHmUa1N?pbGd)0vDBY@N6nV7vV}%czjNd0?iux*MleNy$8G4Wa z6B(zmj0F$?ee5acw^a<%3IGeZ=QY*tp>#Lt3KXQPWk6B{%8S=z$uBAOZs+T=RT7tn$K$&*;E1A%;s$bQ+h!oIs!w}u zh>0HXMdK|IFSvt2F{6)&&~RA?aXZ%=ae1%;40nBmmAfg`3lUXtk}6Y}=0Y+(;8 zq3vGm?VZ>@@*@R4sH??@L6R0vAE^60Yz!^1mjr zE5gCp)=C*`Pr7K6=mZw>n(@Zv!Xs$7Mn`9*k3rG=yG)%-=W*AP3OCdZq+Po|=!|KD zpCgO}`x?)@L^uR?UoyLpT}u+@M;qE}V(=5|gk!#NO&fKcmztXfH?NWFswapLt_kNw zI8^1AR)zcUu!yN)^{9P|)a)sc$lh6D!E=CXy6PKhEmPq_l56E zKUg#?j;y36E+6DrrN{y@-n*{YGa-&Ryr8#!`)sb*H>&iDW^jAD#6|#Y`Y_=0@Abxi zgT@1F`X59PpRN6W&s_eIj~R*n*|iTai`{J2!hgh--dwmYJeCrk;M}p&nx2SeX*xyT z&#_6b(n`RXh~^6*PsVPvfLR#$Nn-SL_44taJ>TU1XGR7&1iDb-n?nx@-$oX`O-~1_ zkEvbdEO?A5B(Vh)!^voQ>dv#lub|nw#}bXuHP(TU3!aTUf5s6cY$a`wnz-3~0w`CpIg!TUY= zX9t+E19+kV0VBNu2mJh%#`q7{{m*an3%?4G{+oOi@Y_FLWpWl$07!SQ<7hgzF-0y| zbLH8-_YQ$rg+nYtqgBMm_kwG4ZnZ2ET4>&}G&^daib?)zuy!nYInb{TAgVS|gLPJ9KP^ZI!WRSPV~62u@<{Tu&9 zCdPZT`}gPzV{4oPMmcf9W8#YN6xFmr2%Fcpu!yod|}sMd}M?0TbIX4%#uh(~tT2Pv@6IZ#~g)?(y!|5XX_Qq#7@h z-q7FLevI329BQ%L8_n`m_D5GSj6g;%u8Eudu#HSfxo9dg5vK8>+z5H-JB*NyzoDT6 zVZQh=#GX}8;U?+6`E(UHUIz70VDIE3@LSHjTm?01B#{w%Qkg2Jq&G?56;ijW(VqYn zwVw{kFs4V0O*tC#>4zpHHVbAeL?!zwlT_ixPh2jGq6pi&ZHH0TxUNdAj_JZqjyde% zV@#E4_V1{`V3QqbnhfHhOG^p`NXN30HR`Y!?*rq=rwP9GJo{EIsb&rI1gl6pbW?|Y z9L~Ei9No%UZksNHX%rChtu%(q_q%G&~rsY;LEsnuM`K^E0ej zyA5z+Yelua6`6aSXGnXY1W&{;1orJBSd{hj@8{oym{-=yHn*vehd?O0IXN-y*Fr#3 zS(A1eU5K+`W)0N2V?u}2YdVH%4bhe82YbyHIT1kSPG*R1fkPdilOyTL+~{a>Hy2B4^QZm?1ABP-#=BNLNJTlC!49_q+vge zvFFrlr)&XLx%6L;)A$uNph9}^J_6kmu0fKJb>J$#+(jqK1t{1kGJiB zn-~oI*rA?e6c7r{|1l8dU*k3Q@9^5z(&#r}{o70Z^{c!(b|!iPmiD$*)}Q699BlOr zq;0JnP4o?HiRgbJc5cj=)f64lxAv2nyu)`R+Sr(w=007M(88{~#y;J7*c34IwFtu2 z_!6a~aus4niWDA*V3BBe?;qbj$^`D_AS`%ci{`ZK;-=sHsD64pyopGEqiW1Bd>7_u zsAYKlp}S?(*{(zSYB7oS7>azD5mZo}I9RXDp>^K;`MAd1C`v4*Xg!CL(;C#NgIJ2N zyE)}X#JL0JTtC7#IFsZ`WblE2nRnp*EbmuggsoJ8O)_zUkKkHYqt4=dEYFdfg=mxC1Rrdy@uPzLfTfzO4lYU5jJjS3k|H;9 zu=nn~!rO})y4JGK_hJnK)v$%N;qP|(m3)@%Zae!vI(l0ffAN1pE1T4RPZMLbHPnfE zyIT2RBdU(ynKC!3oDq)*+kfmls#c!zMc~XNScw5WgjND1Bz|Zb(m9s6A=nkX&|tmR z9Q2naxxR)j_Yr{Xn7>tfaQr79{r8UchnvX`iSp6Iaa2wh&lZ=S3LQc<8JCAFHo>1) zN~p@c5f z-H+ALrc|`4>h7RHBcc5&IHMcYqlzttx#(N$o0u>|cdHI=Vv(s%am*PIP3PkePxrOITDsD(=}ceBiGSjT91G?fW3o z%j_bLLIG{2QR^|t4*mIz1KJfF?E*}zRGD0rL~>yw=u^L5nd!Y@j85YmwfnlJL$UL? z9?)0f`+(z>Z3QJx3PrJH#z#0gDWjJL>-t&nNI?p2uD*9yUX2#E;Ms{bizN~8!*~7K zY51-AX3_Ws6vQK%K5CTIih&>AB~wp^HB&LQY|;?xBtMQ0Rq!i@kB)wYNUww|cWu8bMI6lAbF5 zr<9%+d$*UIlJEK%k%sOvP42SpCYrVewz@VVl11*eG6p;%ZSFkq(s5#uF|OP)?ka|& zrtqJD5I+Gi67rS!!)kJreI^#T1BvUr%M}S=2m zXzRRrD~KWps8M2uL;Q)tCJopm;edq<0Y3kJslU}Ty+SF!iIIVw{ja3mADw@#{)l@0 zWLE*hPLQ5y=0_}}1$+=JZt(++yGhVIYUB|z5<#d6=;Xdj_Sx8voX|}qj_V)Cj^6h9 zl#kwSg|yv;ilVb&vjJH>fjz=LGS=)aEmL8$sWN<7Z3Xn1TRKf?2JjksU>%>;kpuMw zcZgRIq#20QQ4+roTQr6tj8zM7_Ob_D1&Nlbmb=K=v%ym#D9$%AyUwaMH9GTgQ-Rwr z(Li9;VH?dmq#oAoG8a2a;3=vUe^(Eesgu*NQA^{V)KYiEDn4(Jl=YJ2Vwy@Up7}U- zcEh5CO(9^Ja?P_FtmgC;N&R{Y;z+0rits^&#b5?gQ)+qy}nnbGu9K zhcOF?6k{f(i<^DL3xoQWP?j&c9>vrDLBym>?Tni5Q=X=3cIXowJTH^N+ z>Lvr9i4waY3aH!h`E1d`IpYbX*I#-+U`?IH`Pca4cy*d-o#c~QQ(Sr^N2!5s2&3)k zv38C_b#rrd>!i>}deg!21$gm6FGB+bq6zcTkAqBi!24$hVz9msld47YkJ3TYp+m2N z{^&o!>K_>~b%53V**^q&mF~;XnZ~<(z#x)$-Dus!7-`ei>M2B>aKMs;qALR&BY8fp zVkc0E!(w@oL^q<6(wfj(h&1CT2n6=;wuY&{SQ)a=8yMEplb+?b1wk;j1$DK*i@_qZ z?61#=fHjpiNH!(w={CH(FH2hP3N>l#?%`BxY@HoPwR6q(un@MOZ3KBrk3CY7^EM^E z=%ID*qoO@Y22vx#E@2j(-T*PMr!B=QU_qMsgwrH8@$m+Yu{!E#^fYl9oLCj_vv4%p zd9(@*S#uP9T%S#2`OAuOjg`2VN#UNDzAVKuXX7QL4JVNVbFK|hZdvihMwo*{%kvdy zX=E)w52@tg2J9(G)O2n69<4#EGDL#^v+Scv87oU($dMuJ3-FIgMBj>RVM?sS| z8M4V3gL(S4yihY*1?0c@oTuxJX>n)2&s!vpSzohba(3_Q?3eeD^$5ZlOu}%!H^)?B zql^5WE?zEFFaUczOt>EC>J5*(0iAZiyn|fhppi*~{lzl1%@UJ~|15@fYJc|RxB%&` zDhueU?h@+S&k8SG)2doQ03;3n5i$MiH!9tKf~9|mcz)p$wM6H8Z#twyMBum()EAx> zs%P&YFe!}2eUo9o(8w_JZeXqv9{^#54z|Dt$VNRpvunMn>j$4;;|l$P-*fobM5r(8 zYPQfO4J)E7KY8i_s*}4kF!&Wg6WuLd^5a-7DV3S~ZpnI+?zgIV0%c4+O2uT!5KZe{ z%mLqHH7jK^zQcCq#8Jp30ttGtF4P?~xL#jiM7%wui2{1#z_!@0mbVK@x_@j*l zh`LY2Wi`oljAOTL@$T-y461|45_lq;TOw>*zlC%&IrI>+=KEX>GKkmr`xxY?X^4jY zblWlRK{4QX@u96DNF>>dAetA!fi+MCX7S=4jPDYjTnwU+y#AYLBUu_26nm5yGh|ZV zL#gBE7$_X#BYQta!EqIDgD_5Q*wj_-}b>Lts z4&>?f>%!3V6-?v;kE*EiNN0f6DO`h_Z7@KRSmdX;8P1mKRvUkJ_A>~PtR6fzpT=)* zHuQ-LFLttd*bA=dO<;O6HBq`*6P_5($aZgkb%-VpC&sadmij4AK@-VCu!*t#{s@Hf zqIbzdwz0AnT#^8RN8T54FMJK_3%or~h&K3JFK_r1A>oV(a7ldRF7Q5n;gCoO!XOBE z5`jcWJ+vtu^`31ynjpYm1o|gu?H6h2H$tV~O0OgO`+m^{{w%nS{*Icb&%gzf+moUr zsHVtGC@aJ80<578>Kt5iZu5tz0Jl_ek{)m?pKu(njgs+WgY@{O1so;!?$gypKozeA|%4@mg%-qEBg3Uvh9* z$eTSA)idT6nn>!H?I1lg8|@!|Rt7#;x`k)yAUKdc{rqhz6q+ z0H)Oc7FT}DP5oTEfg^w!HPBZABr>g>{u1HE$^O}mzwAK$+QxB=9Ur6h@ zJlsBloxQoy+Y13qlioI5rR#4*eHXj56U`l0p^lPgiupt-Z!hhi1xAZ>_loUnCiVQ1QNYk8%hWp_4MO>?TWu1Jy4+PU(e-Vvz0 z;ZW|I*-&k3>MjRM#Iw|{>ynlAgGK7X^^0l9Nr0B|Sh0Q*QorzZk!rce*1cpke3>Cg zQ@4m}x{?i_Kzs043Q+VN#j;I%FZ?*Q{n9p^TZj5OyfQsbCl2B!J{Z10lLo&AP?-7; z1(8fdcp(|a!URP++`!0sHaStqI_kbb!2UM0UhsPm6sJV=!6NW^{0(C5BUMIr;*;~> zdv*9a(!&{CR0N>@!c!30_GJWomBI=^i3sZ{Hjv$qUTx)QWzbb}!^=X5&F#fV?R7 zY=w-XmdJdYWK<6K#Z&NUGr8G@GRG;+PlvXN4Sz&HKLlXmmzBAR230~q*` zbl40Nlgty~;ZY}aYRKduRx#tEzmRh%%8FjY4Q-jIa`yP137&=$b={%w=%eX~wvC93 z-sM!lW-(J_b-D|s<62@pJ*UN+#OafZCWiYrlR5jrVAObt244MYi&nUqHRTC7;{?Aw zHDO{ZKA8kl4NIjlID7v^mTYlE4}SaVh5i;io&9y zv^@1!UGSn}PRawhB$%T4*eyC6=Gx*?h8mi+4`>^~pRv+*rsi9b?q^ z-MMYiz7?kn@1l?{1j*6t$n*eod`PBdGIoFPbeQ@8qf@mzQO;eLa^EB;3WG7`p>PEz+3Y%8)+ z^HJiM1Px*gl>X)KMLRK*$b3rk@P4u@l=F(J4aBoUDm5S{x5uLzHEdl!oRDn&Nb8Zi zYT?-U_8>Dq`QrF{)q0ehM&Y+zuR;;jPAI#X2oSMg4jrC~Bh!92Br%q_;gZKJ%}$z^ zII>V$+-V4>6QcEJB|zH=)b-7Vsb}TY#!`Y`+wP4*?p&(APGI?4BOJ_sxb3w5~dDblN&$GaenUH(Kif9$PMAFk3E5`as&4 zemE=M)17GKz$a~I?g_MQ1Cl(C9u5x8-dIa{`fSpo#2MFE3X%vsE|RD8X)5V3UiO01 z5|1e^?SoHQ(Hq|qStM8STXa%L+HmfQaGKcnt{&76vr~Sk@P=@?DzDDpHjjvTR1Im3KK_1O1no}mD5 zclqs0Kn#HS|F-MvE2{sKxAQufn7`7WeDbpYOkSkQ{UKi>(fDflb&lDzcG}&vN}-+; zT(l=3OaR3u9-ZiT@*hv1JDFdD99<^Gmr!cb!RDch+}uDwfb^% zclPv6TBlB8;S49;a2tYbPC0twSfrUN^ku5D-!9C=r|sk-f;5KMG4GI$Fd+2CfK)~t zS=03tSk;Z_hegk&63m#@u+J^g7>TQ4+nMFZ&BI_%SGdzRC zuoAr%?Ueh9yqZBz(3Kf0H2KkQLXRQ3L~Ux`#2lWEfIwf z>+!MZ4AevlnBs+mY$^|4dF3g5VADfwdW&yR&*6*$7-ZK0~BPVL(8B)&Xl=5HOKDSF9evtgt7XFCGdZ^a|8=l>O4vyDs%DU1RD)c6Qaqx+Q=q7w%^Hh} z)f#)rdX1iGMM`Y8@@d(~n7Mr8s@r|;gWkO}aqXu#?Fc8ln&@sBsd$PV<}!!}1D825 z`Olj4K#&(?5SlhV#LO)82IZ>u%Q~t$biv#&=D5Wj6?u4( zKF^>=NuxjL$1X}}*NRWAQT(Psg!%40ev(LIS6%$0%jQvx2EjO*5T$}N;%20&V z>!tYlx5N;D9|aeGZ~3LCx6)_k*U(LC(tVrHiSW( z%7($$v)k#gpDM<-+6yGc%t7oM6%67KNToDl(fdg zE<04l#QgYA(iR8B`|Vm|#bV@FJcHHZ`UTO}ko^2XhWb3%8g+S}Q?U4(AOtS*WboB< zr`blnk&WKXDqq*%D_>|`RqnMPWgjSsx=}rPJ{1g{>u0F=@KI=AgEEpnBa4((R0v4t zRyv2podON8Wr|gX1^~S0CnJ(})pGe-({A?vm-pz{8UG9KiCHxTM0$PgCWy0TYHD)X zb*7kRr2~rdF8E}~v~@qEG5`of))_KzQjuCU>N_ui&l$(d$MdrcmyyqsKgJvCGIf6a zA(he9@Oro0itEk)$Jkp&#kF-y!wK&08rsw1});C5`|?q<3&7L<_* z2fir&Tp4E%?ikYDT z+rG}BH$U*?Qk1P+w90;3gn!p8^NV&M`I_KtXA$P1Pl~KEG)~GIa6bxDVPr!5OziA7 z&L1d+QTs|LC$)o1Vx_%7YBR0PH}r?e%sg?vR2#$*{JQlQ{JcW?0){>okmo-xpnn|c z@K1-Ne=(<3ngMEPAIutZ(?T*D2ZP+lfuF8S+a^W#1dOKG;`;=3K-Cz&exbptf$h24 zf;^Ji&XPRlR6ZtiZ=jpVS(%}>p&cCbL!0D0`bicQvjjm)p%&Zu>5 zo@}u{D~#XeOjdA9?e)t0HZO`hAs=RVLFk+fbi@D>R3F)c1Q001d-gKY>o?ixwLN(o ztq$b>C@&FkfyCOsrFm2-FH*v3xFHDWc5QaG598&fx99aQf>u^W?rm3KE6Pwe1IwF-5|3v0S}$&xk60~t zA1&_uj+SX}9MV`9x;pNGM{3LP)}YBCp|V0jQO+5sXxO^Y5rakY`vN{oj;-@1fY6k! zDEAbu0hM8Xis9!cz-HI6a1{1Z=!sMX_LB1&Jg!&gbs%gZ3>%HSa9SRAb{g8uAEZYX zs_{-{WPlFJVScm-e*z2nI5U<-^me&CI!27C%pgvRMf6@>G%UT>F4pms`BGa&3x|C% zx0q5>$Gq2@=3VyBtxlG?eNXN}9we`_?%YMl#(b&sgaV>Em0O~^``}VR3_q#fG2;UG zyN!aD&v<70Owh3`jfq1IDg35JB!Z+0G$j)%pFeAYeH91aK#oCNrnlfmE1%jh4#Rl-h!{J@>v85B0>|kYN3Z^UCu0IjUB6x#ATNr*t^t>kp)^yQwt%@MD$Xfu6|9(xC@mg9!^M|`3k&vFa2?7 zOn^HCFllNTZFO$Ah%h~32i;nux3aN9z-gNS34|=RY24)1utwl(8%s2?{-)}>e%P61 zd>n?>K3@O*9r(xY<-hRi-`|1%<9_@Ly0X<2l>QP0;-0+cct6@rA);V(J$S>5jcvgO z)6iHr#ADFVo%g1@g=MmBEK8s``$O%}Q`%YW+ttxg3I{(1d(4FTo_+I^p2p1H&(3@~ zT=$*q_;vVlHMR9=pQSgCdu0frT}^jbkcPEva%1CFa-n9B3s*a05e%FO8c_&~B&3bp z57np6n_N89#CgE?^1wFdXA+%^=yKUmfvay5{izGbHEyL?-=6_Yl~`QWFg;}a?kk4H ze$>r%S8D!K0V050n*!4?b%Z{Te#MYTHPM?zMC6@|)s&j>TQ%WN>O`y71<4hm zQQ76ZU$!a=;qB3N*s~@J)JW6|dk3~jxO>vhR6Om&cjq?;r8tUw4exQT zvi?11ihP6?2Mx`%Yh@$*GE)#?mb)14=mI#*`N8SZGRHvDxdt>SbZIl`zFNR9nY&$4 zv~R=Gt<*cJ35NP5UzMOS+Z8QGsIpHouq8-MkNHVsNOpe*L%~2w*aZ296}W%aPGJ{q zi$p4yuVfhoQlI55@5S1KJiM59Y1f>|&4q*o-9v3I>cYyI3avZzhP#6fCY^d!a#ckd z?tcY3DuV=`DRHHh{q7;Z{hEI{?Yh%4Qx#BGhFd+B(#Q3V5pU1qf@Lsk%cFyIbkp1F z2cLDZzhG!j$Yox&|C7OHGVPFlz&Zr zH3cWL)A(Q~9RHDv`yV|8|8^n&$I|`JJT8T~l0o&k=N4sbQEV9z(S8Goe#W9N?aFYc zwiyU@6bhr}7|)vRb$Q$1kIK997bRn!jQW!nlU|msLO*l2K8c>A%I0j5sdru$zPp$A zuYAEDb_-6tj)tdvB0OU0C9K!NDx#MQUVHm4mEfEZMSgt5q{AMeO`=95ZpxbSl^JW) zTBgq#e11PiehS52FZ>oq`gVKaa9eTfSgU7VAc}U#@>uW0fS~c#;@H?2_{ysM6m!(Ai)muvT@dy0( zDDsc9MgBq&O$BAKe=B&zEc*JzczhbV*;-kdTshq4BZxK_-@ui$O-_>!A9ki6@)+{0 zG{^#Z0+Yp$X1?#k;C;mPE#MQce@}g0TiExGY;OSSe4VKxCg&c4IV56_# zq&O*@%T!v!bxb$<3riQ_wrj78Ce$#%QTC_GQ}_87XiTWrwo73jLr1Rw#hj(7mnXu5 z2L*(ZRH$zQSaZC}Ntvv)%DYpH6Th*b;lI(WNEDle1SQo;WLX6+<)Y)v%^f{pehmpC zjk0;j1+l$Yx_4}+6h&>QqK(tZk6c?~J8KMhs!cfBt|FdO4x0SH?*PrKk}4#DmZJwu z2nJ7?XDHWAY}3N2_t@`~o@MPD%N_8?+yfN0pmZQp&Ua zx(~D2{N5ybgxWc2)K_CUxQqpujBzNbm?dwkJfQ5wG-FvK70|Tz@a>yfy@=?cZW#jV zZ4mK|ZsbT;diolJ=qd>pR;1-E3Y~#5gLC#A>w~<`;Z?CxD|p_~RT0uyWmAL31bXo4 z_6~miiy};mxV`g`%Rb&IRdFrL+WLc>J#ft=f@XWnp)pbnoS!q7#rNxCuAwpk7|krQ z%aq=+4w1$7Y~pnj@uSVPEDSpqdijWFeNOhQiuF}4!48FxEfQRukZ#MK+C$Al{=d<( zO!>BDeygtc7y?7>X`gFT_i%h6pBuCaqA$V`e$$Q{^W~$j;m+9OZJKp#>;1N+H|;3k z$&976=Rz>A>HXZyS5hZ%{bdbZVA-xN=OQ$0d2`sLM$ESvnX>lV4Xv-h?ux&6%tViP zvruybICC&zc&Rqmr6qJeOJ)S!GX6C>9}ZW&AI&*R>vH}w2nmGh$?b10WsJ{<_L&pj zslkws4eqL8r8Rd#1n*3Y&6C~H%B?P;3w2?cf86rd4ToM}i9LyJt(kMu{hlpnAmX`p zXHP81ycy>C1rsy^b;GO|+cTbp=8=u5}% zs1%(Zj6I;P&*Ui9od)zVetVd+;GCuZiP-8x9Yq6le^mln1j`w-9 z;GdWx0i)U;mB+=TT!)25h3YX`-cQg}vbc#HGL67Is9M=d-`REiX6M4Mt+$RC~jg4vgWD#~Md?L;4O>v`TgYH+QMqqs&?*I%B>1@u^XqOw+hyMP0xO z2lTu}J7dy!$-7ZXnGHHaR(B05(XL2DI^za*!3nU5Nwxd{b^}Apq=F)PH#CAMxh8Fo z1a|${Y2@AgemBV)fAC~>@%?DJ2dH-W)FZB3lwSi$Z^)h_a+!r+qak;(-BC;Hn2$kx4nRM;ys- zVl!$Wg%97c5Ii~HgLJoDMxiF z=PaGTt?M8EIjoiw&}UwHu^uYrjDG17q^ZLE0{_^gNtoQ=S)HjH&f`Z@en_Rxg zk}xQFsZIR6Wg0`XN0yY1Nb>abcTAvBw%cB-`lN8|0goe+|~4-JlFrD z!1nj`AM(QA(!*c$%fB}CWGx+U`~}Rnp$vuFWtCa^(IV9fD45A;0=YU=8JN#ZaB23& zbi$%h8pzFnCSKZ{JY zvALo-%U)aM`ZoJswpn%T{p@<5WDO*LL;DmfHe}`Qr#WOv*o-74r7u+zTgCfK4&l=r z4fhxb(PlLU5<^SM2@6Y8|7rn6R;U*%Jq^)E9~4us`JKfw&M*kwh-!W7Dqm_9FIWjL zpL3GeLG=9M4p!-^TAVaq-d^sG3JR@-QZ-@?Z4I3dEhHkp-`SKrUh!OpGGS!D**w7Y z%U3(r+~`nm4-E4wPNxrCF^7E*)2%gI>H z%qqVojmegE`)<`A9HUhuG_Z@2eQ9g%8@tK%9CYP4gMi9P2}+V~8!(B>u)ewtWu$ zwo+#32bye}R9VH24VV>4rK1cjICcxBYpQDr;NWQIXKKXK=h8Abgulr9U&`PQEGuO% zIZMy(bwe~LEzQsg+O=*!$svw7EP_0?iKMWQ8dAPJELeh z@ z33;4tb&J&Z3d;QO4WWJw8ZIwzF)Kb5i&Ts|9EA`^y1Ms%WI_w)g+1#-X>|3bMrs`* zRHZeF4~y>=`u6fk&t-{2S8F-a&RlZGe;yG4R5xUT=b8d7i;R@C;t z`0Vp`5&tpwucdL0t}@Lpk=PBAgG(qgW7_U0XmYu|C3u@IV<^IA`@P;bg&> zfC<6p2RZ?i`;|nUZz@n^A2q{^wk)p+p|&ip1)zkCuh~P?5d6otaiL0a`Ny_XN%(=K zqGj7*2>uv-82+0Ph1?_CF9`ml+aDxT{}QfWBGhfIH)1=`ZZm8M{AsjN&WkD035`es zn{$@R78VWyJ#Q7&1x2SRH1}^%GX>MG#hOmPoToYJ)C%em z7~_m@p3))KO{W8&oHlvau`aCDj0Y-u*b-!F?RE8qc*?b>`{vQfc*8!tcN~%fTQcXb zI5bb&=3<>65}iv%*kV;76~hmgBDac#9yRD!0&!lRqx-3UuyTz0t~_Z0o#a`v<(xZH zp-uYQHTtvIE`yvJhEuCpcG>wq8|1t}NHh1VVe6f)!+Of7MfaFiPYK;>hAeUbv@dIP zL)Ouw*ebmCLtBFta*r2~o%n&}8LLGN{Bgb)n-p1Q#hZb}5RBW%a72y!7WvBTO%2lu z4xb0%=!z3FDB%0%r}nt0G;DT4xQ-KIDWFrXDSN%Ybjzd3#WFoW`QSQi1>z015-LXVUwluCV#DO#jI*K`y|P-PuuVbAtsvgFE3@FqqEtSNZYXXRsDi`TG5 zsBM2*iO;~efTc|0bNhphgvMEkmmeov$Nq*Wgb+pG1*ZX}qAc7)9fE6O|8eb6Amfz@ zo!X`5>f!&rtXXQ~Z53L{STR>18ZZXO*kH>d>lMS8*Pu|^UZvav$Li?mmV(&+Sm9^e zg4yX8jajsCiln_EFM;7ne%yATmA&9$u@cY2YeE!K`Q>+$+@-F6r3u4S9EXDtqi*lg zE5>xuZ?$KP;xFQ7>j%4~^GScM7B@cKLDMELyrg!(T@%!2Q6xzKK0p%KhjX0!ekyR$It!)fv(%v(#zpp;H z#zYc>=x^gt;yc41&pA88lryN%*jY;y$N!5UDb{Ur6)9`zY3>+PO%{Dmo_gOe)Fa`$ zubRBY*E{z1uaBJsMtup5LT_5)7p+^~FOZ9losfXE0GX|+=wz8aiMab}n7l0j#@Q%8 zYqOOI0+ytW>EmZNYV0C*9dc(Zkzn{^%M$KjG{s&d?wr_i*TJ?>?CRSwL3u5N0~=cI zG4=JM*EE67*-iYiE0FC*}vD` zvwo&-ehY94rhXnSHowjkor$R&pkoq7T$*}%0XO}L#NwlU?N>4^WxUzR{=JF+z=>9&g z<=hiDKYaI6^uKLIq2cL;s~}g^zRTqqz%J+Mos}u5-`{fk!8GFv!x_=o%ErKECaCygZu5?E>Zy7h&%DQmLH3Poq1od~`@& zgU7Q^T>}aaJX=J2+Qf92YQJsot@h`(g{~9?kk~0v^9{E8j5{vM$#he#_h0(ovrqO8 z^2aIl5bd9cjDHNt`isc;`@s1xyTSkO%n9qKK7jjfSika(z5;^W8p9p6iX`kS+tnbt z=yVebScGP+L)wF-p?1gl;07XPW7B-Y@4>?RAB%;>&CU0+!KU$stE(^70!^C_4p*~I zo85r#;srlnZ{H6yKVmnWy6rXv?|%Aveg33!SneDScTY=D+&4qpDHm#{Zmn!m2Ny%j zUhZ58S4C@0yG+YX+e%BXvg3`(N?WO#FBZB$>!%%*!9Mn@vB;^clGe&MSr=0Inls<5VDGdOpDcps@en481;}~(qnQ)peyF?wE^*(I!T#EjDk*409#uC8@g7=Z_BaNZSEDA!UCS~ zWlXk#VWR}=mfNwcxujn{Wl&KClEXH<8Sp`lHPZI-m*zw5=+*gB;30R8GvZp`*!F?Eg6>Y+=ebZB z0!N;9r>`kCdjk3)Pq8rklzw!^-rmAAw2iQA%Gi!gJU*c=j*rKoJ=YP}esg3=s*?gG zE1t$`r+DpBDx%kc`CQ||${}{$dv^WqGI?M7;OGr>QICln*$5NcDZOw>#P-J0&$8-HL6L(~0s+`ll=UrOh?4nYdZH1RJM1 z)mFSg6*}Glr)a^bbq;F>U?J6ekZsIqb}H`Gn0XX^9-W^G#oLrNdSDUy1Qc0}`)j}L zxR#*HgQM33r_QDof9=Nxto4yF4w-onyi`-BQH~1-CB}SW1Hj?I^qu$I6CmVWBLFo` z4N;?fx~Dx5g5()?;J1D;SL5KW!ONqimG#|D%c2>-schu|3AtN`&`OHgK+|BhYZ;Di zVakmB22wxqqmQdiT!%ca(Xb5Xdn9gm-x+M^u0W&tZ0n+P$FA4#~O*&DI$bnX&IrKKZah~>;?4%QR%K9t!tfWj#gZo zzgxArb8ameDW;AN*mrXoFk;N|Xr2$?5b(-auJ0E7_G{BV#y_XM!~Pb(Id4Q;`VtvB zp~Eti`Jdoaefk-k7Er}f*MmsjaZ(>ONE@#@&H zqutG5YV>!kTD#If!-2Wg%PJ#Hy3S8^$CHzf6vPv5$QKzac#f*?r?IH2iD;0s*#+7O zhn6kOHV+tHvegb(woXQyA*YzNi;-^666N&X?c}d-rp^4+E#ZDnU(I;+WRKvFQ{K9} zMO7lbLu_&`BwRXE&gC=&ve6dvw0xa^SC@h&x{)%aMiu~A?CI`~ z#tNuCjNjFLW$8d6m}whqwhCJ2@~zQ&eSh#j5=wGaPGOl^&C)0Y)Jp!L#=S*8Zz>$(NwhX%Pr zFr)0JhkU7>QRuRBm@IsM1vBB(M-{t5%Jmd3XUfn0u6_01HbYYD^J5QYO@-N5;vi#2 z*mAR<=%*Z@Mv90C0OM=2G{%{FU>I@-SblA`v<5nVtMnioLtOiDnX!CbcBTi_jD=l; z?~QZTlaB;Xzi#SGn2Fi^X$phWlhh=W(WADgO{r|c8ig5pOoEF*=^?^QcbVP5o{V#m z7Yh|r+XD;Fg_YA8#0-A^Lhz!K=VD-8@&)Y0II!4OZR3vMH2v7)+=ui!-QtDPC)JdW zoKeHL#Ax`XlK%EFZrvKpyyZ*j@5oMSAUvCo#Mc#L=r#3p#ug1%st8b72}WAjI4$Qi z2Mw}mYi)@ra}YYdj*S`ekY&nvN;`aLax%Hlt$lNP)1h{E3rFHugkg%F?)k+Q0ICW3 zu|O#W2-f5qs_AP5Pn`IByGzaBL&rRuI&77nap^M%(Pqx9%>b1vRCd;R=rnVMl&{lK zEGYbGb8Th{OSPuQ@YNF-cMX`fqL6>n)ErG*^lMgkycl-(ki)*d{+;$dB+tOV-JEmM z+~QGB3TM`oRHAx@4gE42y4X#cvDEFf68{J8SHaR+duQ&!>RLN5p@LqwCvJ0U%E<#@ z){$IjL(K4NU_V)R56?9nx1 z_d=n29Rf%tY5Z!9ha%pk&GzT=plMYaK&D#2o1dEXYN77K6>< zTboAeXB@?3_&qyQ%6ebE5?x01AMiq{&~O8`fx2bAPHxMQ@37o-pRW{pUeK=JAnwQm zDSG4rb3f&LiVytqxeInVEzllpQn3db?Ymr0352o8lpc?U1W}lZ!ILIzJHKC*a?ulm z1SK|RB(Z>wpKD6Ndi+Zwd;?_YAt${dPuQe&hAc|b z-~<*}lkFb%+82T48^5p=LFkHUw}6(F-JAYPo38Y)RJizWDdG(&odXiT&rW9e1-#%g zDS;ObQs)lvjDlp44#H}+qJ1=IipjMEcNmQzSQ_dc4VvRb=U6}iAOTPh@Q2N$$f7e5 z?#lx(pr!OJ&}c&~6>Xchazaw|dC+jn^x<){LozsP!zqS6(L9C&u(ZDiBlqsmXd_D% zZHIhU?3FSxf#Wq%f$LbpE*ic^bCmA2xgNmigm#qg{feg9r$ECE?x@(y+e!hsab1j& z1#6_(+hNjy@fNx6X$RN7T|u+_sYT}Z8QZqnH6rX*l5+=uk9?hGhY{9G4kv+`-bB0) z3HCv{RjW@C_Ce+`1z>=7nOdvY*FxbZ)#pXw#{`SrJC*3n!v7s0M|;f%`!nf!h};k1 z?c?nZG@3v44z|oA_bU%Hb9~8XuDMAk^j|_(hsehX-C8_Y8CEw==!rms9*W`?E#y1HSv==WgKy$ z1CJ(c1R8xmh!F}>5HYMbpB4Wamq(paTzV?Pnx&vPJcVqPcxD1sfU5u;l`#4^C7cMF zmwHs6K&uyW7+-kk@mD+-)%BvFU-EdXbMzCws(kl%Q_HZs`S4~5j9;upX&EE}GzDqT zBnGIX12=CB*BtyOU$Q!JECVCm<@R7+3+rrP3?1xogO~7*kbAdI%^E6AuYpV zS7oyKLcIA0j0ud|`w2S&bdqPzbz320lh62e5!O`?|_6*({deFDVCb;A>A8}N-_yNY&)i$i(kM6#8!yE zxnA8^=+H4_za}u#T$S%I1Z=`b4F}h$n=9;RA69_Wi|)D`VIX#GO_uTaNOV$gIdNw?St&&8k6V4LwUF{EDh$I-j9`jC_po3VA*r>wl) zp?BfCy*-iUk7SJrWZ^3QP99!gjV8>RsHKHXZB>;n|GR;zh>j4mnm)E6xtSk9s(6tOBHw1 zv|K9Ns<;`PH&Y8fW@zkFKB_e7R_+hbvi9I`VBt${;K%^_AXok%Ne;O&#Q#!ZFs z-7})d9g_YTv-NmO_p|&-q|Bzh%Vz1DtyB|cMO4#y`)4G_@+gjlfji4rp#Z&yP!{*q zIffP~+3S2lHr7}hfaGM2#!Gd)kF5sJK9%NJbfil~N%f(wweZw&gUQraO#&&88%S`E zI$e*?TlF4#UIy!t2HFi)FF9eEw9gvWgJFdQ0o3lFd#Yx?x>?RI#!@?D^W(bO_6uOT z{vy3R`JRdIG6h%{L4B|vrXam+`z|NB{) zC7Z@$XH7ju>D(&FINKohs|+S44dTEmI75L0EXs4p?6jx|V&aG$>-TX$IxHGC z5jNv1_;RaD?+pQ$J%5-kt*#gSM~j%R(JYv#h>zk=->t4K->dGcZmtWXfcIutV~7iC zQ(-jUL}{uUVDRzwPH?{kWL+;vt8`iZhFZ{DV-;e>p|r<7IU6i2VIMWh%43}_YpG~0 zhDwpU8a+onPg#Cr{Thv`c-U_>E1a4FTQGo) z+w58ghy zl^-@NM&n0H$<}U=R#<%E1^gYM=s1kY=#3c)Q&zHV4gd}lb->knz37lz%tDG?L*bV` zspuq29O<}?V#gqf%qUvP<{0JjEZO@bW z-TCxc)do^6nRhOAUWK8;Kdnx1NQNzrI&JL-nr@*!2I^JMMMe%BWsR>6dhC3xMMQ~{ zsWtF?ezfZLiSvk%(EL9$=n}y^*P4TC8C{#V9D#<4vPl~>YmI&tsQZ@UzCi*c_iSF~ zFO6nzCye`s($$X#wwLsFEzak|s92)C*JD=Fzi$}dr^lY;^3{+r?u0=0Dx_Q^OF^>{ zlL92A6q%^d-H`8P%o^qz2<14MH~EoSkz}-z>I51$@xehW*kyboR~AFB4Uwn<0^Bd+ z;9^@Y73i<%(k*^d zrP-%%ysX}8L;gU2`4jFy8^WtE)qCH77-+nkAwTxa$iFTZ?xBFFK_b??P`C(ptP)E% zoSrP5gZpZ{NMtp8;8}||Sd(|#k;xQFZnpd-9kGZ7HCES_RsnaVCH2n|Gm zn7bo~n5b>p+UMMajm|w)JM5fp61o#*=okDI2!EGT+6C7YYA~0B4@kjh)Voi~Bg-ke z!0?mBwio)HANTs9){x>9-kdEr2$U!hM3MjbV<0ywBWEikHya;=&K24KFq%2W7e7Hp z+Ri-FzL*je{zG-{6K+QLtS(W09$|1w_$-D?@gl%rFVr7_xoJz-ga|-&j^>JH{TL7*KBD{%VE@@#Z{nv8scM3qKvHfE?H({=7yd-rRy#L#?WhT{6b{Fq&mBV~>z zMIq(Q=O0_;qf_s%@rv#R>5qp7^6&2hL`rL}bd4pITl)FvwpdNP=yCPyNzy}?9?5tc zjxQv`0lvabzt3Ixe?-X-*ZKdA zl3EvDYnGVrGzs)8Dw4Ac7N@g24wVY_&{Q_~?Trw(yG@%3?o}I>I-jMQF^2}?`E?j4 zpbUb*3NP9*p?p6>Rfe)o3ihh zMqsgkWW(iD;|FRGrJB$k`uQ&G!0RM)U0M#vI4th)?(6AHmIjiT?jjxQ8JsdwKwQFvm!fCDmr3qk~iAY%(|z` zxGiObUF%tln6uLa@afdoeJUmSg*eU}D|ORrS}kb~SL@z_-nzxYj_;_b=G1?kxN~L` zjj6$c#peE=7;&~MkQK00QMs3_vgET@)ediSv#d1dO@;^R)m1IqgJ@aBHpX*sE>8*t zSuU=G=J%11A=Z1z6gGCc{XbWIPQA5XqG)#7d28C2!fm~OQZ1I3fb;%B+(>E1l~phT zH&mHvX*2JrU3~&`Jj^u}j~FY``^%n{NV;By_Q3wL3CJZnloXOIs=xsgajEfG?n(By z8s=D8LU(%gE$PWZy-j+o6={kBZE3c1t8O#R#`RF*^9We;)@8xIf+SM zYubitKD*U?1hxEa@k(H!ds3rmn^lZ$h^c_*W~*`051@vk#Se`Jd-bqvSF;>jc_aD^ zjsPS={OB?Y3rE?P_Dl1fP91ly@_Kmo_phIkeSQG-%1acLJ(sA}X->$R)f6$yx&}fE zRJ+^A7jg!CGKyicxmvT+f-KP&ylq&yrwaOKkUE}lg*>4TZ$rj*0qXK^c z=UdCoCtHMccdWac6dbox*}B}`+{-IB|FVeZ{`&oAAUids##{kazGT(D(=24p`iKs0 zE5aM~V@9wEBpI9}W;Bg7owsbS3nUeWIR<~#Hty${8wW`jbz%G0hA$ILDb^@^upxE&=Gr#~(aaSb9pU}&WJ6r%Ecj=lQ4lg!uxSQf5 z^3e7X&XU6q*8=fR+8lH2FBASaCl+2P?un>@P+?Oa~@$aBen91!m)U1Ix zvNTgiI3ZJS3QrBz^y@Ff^Wd=xH68SfWSL}OB^%zSd zpVTul>~V$2zLIrTvl$u;c7)jKYhk;D^y62|j(_uD9Dh z(0_^YB8J5go)-$P&5cE&Z0D+5t)4`bROzM@uN43=|khOXcCcDJBLP+jdf zn2o2OUWoFZ6d08-o1LcWw?JN>gcd5 zR96aHwVyD|^oO-hLd(y3zIi637L>M$tLmq6GN39cud|8-B8u9^Pv@=F^UWjpsi-wrkF+Eq010fmt7%d5-J!knkZpdYTJu2zx{OQTP;|e| zS)uZX0u_3`3@_QygnyY%0=Y_3!$2pS4s~5J?HXxyu?f5=zv;HvdU;Fw6gB2OQdXg> zBJ6ckogdJgS6}fu1@(3t+T9V0Q;~mB0r$uz0;B+RQLzY1C2Y zjH=2U7`9ZoKw)x30i6|WxxQlm?ct}C&l`mL^a%p-pUR1U96|qI<;35cBoFidvIt>D z*L|4xaR65}4nH#EOrT{tPVgXHR51w7lS+hwR96!u^J@stwz8rul-jCicf|8!g2vWt zs;KNV@ci06g{sG1lv_c!ga6auThENfO!K$t;{Mlvjl+EL&MBSPxUdnVc^ zUI54w?Rks#+?{~|d2xdGy_46wAwrh31=;ese%BlCAfcYRoJ{&4`QVK7tiQ4~j&j_l zHaE83--{J%gV4d4U=i4;cOty!s@c5zqFir6xv=*V9D?u>^n+WY z>u^HSl#VWfFZ9U=I^jDYDfX0kav8a!WwH%T+?M~p$GaGR4?mP?2=#j?&p39SXo!pJ)teP zl_|BytXGWvJ(`}pJ~8ef>PceeP=ki%*{j3#OJh{+VpO*-jd@JRRn%*|!;;>= zx2|3@-Imz3qMT22^(3z>)?nCEwJFlffdzrH{D;|*ncRG^S;?)ssdYui2pnj{lm}l9 zvm(@;!9g>t6H_kLj-nLDE<4`jj=Q%$-4f?Rv!+#(N_VBj?~shSqn|&Y7GQ);QcWIx zqFYcO5Xh|29Zf^JpS&7Pui8B12Ho%u;S*T#4DwKNlM*BnII$i_5FK?3BU2OPO1n>_ zf{E=E`q||%eCxClM)qpB-OPcddixfxu<#i0WB+1H-< z6?$8oUJFDO{TnkR; z0r?GJZca=oM#z<8@*}qCYHb%%iyxM0geD@11_*H=Pn!r{85_g9*ny_BlaTp{&4HPB zKUMeTCnm;IsVT*3oAsrZl@AU>!in&*CSf|v`_UL2p7_=dw3mo;vissp-80WTOZlTsK(_2{=W=E<|>>!0h% z^eswGghXU;JCXzgRP$086BaJ+@h%TDb%jq$VzBVE)D8oeZPn~WRC)4)#Pd(%5b+H0 zx=bg~-wVx*U6`lOc%SP|3a>D(N5J=*8k!BhnRp#3iSp<*a^)<}<&PD)%_jIal5_rE zY!7=!X)V~D71SkkQ|?_KJ_DoDF+R5elSU7vYvjLBVQT&$yW^vg>Fxsv|1#kJd!yx- ze?SE{8!N|u&LRJ&TH`;j7FQGbS1P00-(UA1K1)p-Ep#gke;@=ULJ0NcAcbuzIfA(I z8m*?nCl0uo1S~w8Cb3(zK}z(jbY(N_j;k@NSMWc((7uX@3O00qR*4tpe5t^9U{o^P zT(>UT9t6Fmc~+F9SZ=DW*_&n)?a7DPpK7KqBk@25cV?J~`fZw0`zJ-PW++;f{;S8nqUQKQqI>@a!?C4c3O$Cn zAya>qUmLZ&72@$UuktEMrX7kNemJiXEZ=%n!R7cMnxvo&FXSN2?WQLvp1f zA0+CWLxT{OQt9&s^ZiM1+81z&J|c(M;@U{{*ROEr(r)S*k+kFVL8AB}WlUP>gpP1F zX|UBG^QzG-wMZ3TS?=Y#`LppTC^GKvjxI1H{%{4I?+8$DmUR;gx2ntTPl}`Cr}E1 zBE4ij{Yk_>%hRE8>S{H|+1$NwlS0oIgr8g6_2p-X+5|gj$J|_C>Avbplnc^4_giN0 zVohQNib;afj82zkzZkqz;9WhR`S=7}#f(PC_`&nx&iH|LqB*AwOKM5(@jDZRPxqA5 z_d*VVyGp1?`LgA>Y}(+~N>irlGHwVR32ZQ0L(?1nRgKPIB+QrTkp>1o-XEj@7EG!5 z-2)BG4i|+15v;JAj7S5Vqmaf(aBqVF)Xw}}p6@LJY3eR;PR(QyXY?i7oyEo|Jdjq} zossx(lM4eKaFc~)Ut;y((9%rewU{A#3-Y!}H&vWrOGGst>(eY)mV!)h=w<00y^JB8 z8d^t0tym^V<%B53E}63HpEuVqL=vQ>TR#!E^U&SB=Vz*ko53GN4SMoki30bL8{uZV z;|8mbNjIZx_piF)54U*ox5k*Q%0OIgqn1%r$K#K^%fmoV(9V&>BCnVwofuoH#A zFVE-=3_Z-W0ea@cv+WDp%~t5o_wJj_{{;MCifC5CU9- zIsDe@p&AFkFDNv}D-uNnUXbUny8ST|3gq>AOiNb@I%N!4bc6uOnwC&?)95l@qI4dp*_K^V9{7O!u0lO?atw-jTwBac9-7BzTEIh91EusN8_poC3j|KUU$1mA8c5j2HGG>o|!*?zxFDcQ7Pk!+q z`%wQW`}cnX;Qs@9HT1Op%E1NdQ{n=_s;ioV0GTBpiH#By1VDf(yW%z6yG3kH#arWd3S<__zHFWA}4J}$s~A3mEZ)n3;hjF zgF0cLez7_Sp-Z9Y&931_qa7L)d;vXy>#%NU{mCLB35hn!b`;r zxg*VeF~bpG!I!eeTwfWk*w$kp;szy)nW0Z2pW0H+X3H-hb})*JMq1o{p{tR(4y04; zT`rp+Ym=O;Y-?tARV+N!jD9+&fCc6@jiN6tpZu^UATSE}+As2OV%EyH$Z60M&wCV$ zs=ZZPwI1JEp4u<)&}Gp!Fe$s|ufpMjwLf-HpCha1xhitoY_l|=YA7mX5SZ+A{*wfk z${b;Yn`Tb|*J%VN{-!zF%RGA2TWio4ZPNU;##^$_{1DR#XbLn1LV+`q0zZ)+ zUpL=TuD8gWBXXK8dAmKwMyRaYo6FDarz+b%s=&oFY*v|$E5~2u3QESCrQ>uS6}#X3 zigqzd)Q7*TL(G6sl=HXEFli^tkIjy)aLm24cfjQLi158b!$)4Hd=_wNw)_nmUDU)o` zLVejrEE(Rx{ilr0%XwbQhMI_~d?&s)Hhh1ODB==cS#Izz*hMopIX5ypuoG^k=Ls5d&J4^Tqv{K9xj zB6tSBQ5TPbXmr+$g5XHM7U`Hkb}8RDG-?brOi)^LDESzzw(Q7`87VjjrGa?1j`1u2 zey8Cp6a^iZL@e_gz8KH`sSK%^}Z>-2px4!u|euI`iNo z!md{=-S^QloIWGhf49A7C8=kieQ?XqF#l9C|5IDd|AHHJ4R#iGj{hBVvNcz{&^<8T zN_0vHfyLV2rz7*e*kqu!(*R~?5$WASl8U!E6-q{gQ+U%cLOKHTc4Or}W1>_c6Ci&n z5^&z%uBZ`wL4K49e^5-|WKdXL4ZGTGTf6dq@UqGfdhhZj7Dn_(HFnYT%<%5%2Z5bW zPLfrSfuY8ok7ne+V;99ZL#~M2{DG@J zL>w!j;re10Zz7@fVg@z}Wal6_hN(d1u$}jmMC2$t1xrCVsgth2%3`mC`Jtkrh2W8k zhS*P<_SeI${~Aw zHwiBjI@Q>d(0qJ(Jg7sxZ+g>)Ts*i(VjF5JEvy#6Qfjhf+?RJgx=>1NhedRzd^lZ) z*&2`PdTqZ)3pAP%BCEEGX)0e0%s?HFVPdM}u7(?$?|OY+Sy|+InX~}MCz58qmVHz) zU;r6L)lg&PyDejdO8~2M`qyLCrmmc{~b0EO=at3QY3kWUP*Y4`+I-tIxRq^ zoe8CS!KCS^eIqjN^$&UN!u4W0QP*<+UVo|IXXr?gPx0^`N-~wQ@um^}aLUAsRi;k1 zgjj24!UHaw6-zj-J|I6PA4i;Zxo;ptO@hIe6${8%h|p=qKRw&`!z4D!VvfQDw!^GS zg301xOf$F}K@c}K-#~)rX+kp`f|URP4QbpX!$<(giZEK%XXML2a1#)v+(m6dqo1G@ zn<_gSpn-!CA`Gj;Om0N?jzB9KMlz0Kf@405n}9%tqo2Ba*d!5zi-s^lVH--44?9B6 zzRv;6cS9?xTM)<|!iBqSFaxXV!M=yi+8FSR>TRsUmZDCP~GT z8wgq*xx1EgPKDANH8=xx`Ca2yzF<0^2|$QsCOj8sNHu^~tq+8d0h_scZ0!UfXb9-3S-p@VNRWc8*h(a!!dHz9IxH z%<{m9*Y%2h=}_i2K~#<2-^Wk?>BYh3k65H7rLNtg(RQ^lpiw`qrnGWW;n04i1A*z^ z@foGO?N=d%Yt&n!PIF>lLmR%7SgCYcr#U9)rN?96P~I-NA`sJ!@0P4^k2l;17f zabVq|`uwl7CQZiOZu1ul#YOs0&jQPTLqzy$*;5hzKi`B6Z*(=3e}Kj@%8hE>qEY3a zzvALb4-%1kXQ=+c z8GKL;rt8WK*+m|KxSWsP&8H``#-x4!oga6CJ?+uK#vkO^5-Kh`YKzdP3wVd6)s$` zC%KAk!b^T&-TA01yaM9b-;OrZm&SRN)|}7)Bbds_c}o}dZ-rz|IssjQ ztH?oDo?(20tZPM(mPJlNe$xJ7#ifoj=cQY_J`3BvdbSUPy}FN%>771c+MSK8odnh! z=yu%JB4h62G02da(%7`Pt@b-6VqH1(Q;m>Pz$Pc-Gj8W|>7#EE^)vH7c}C$8??;No>EoPRFlqChrPjaG$`Ph%IcQ(=gUFxRqEBag5p zNDrr3T#K8Xazn#Vp#w|BSih0HS-HXdgQilG^!!z(nV-dbufV&C1urGfnPW$f*Ve|; zr)q6|?}E-lq@NP1BLD!Gqgtoej|8Pif<{ACb|9Ncba?G%iCyb#4BSYGKt zf$oT8PVIJ4nz#^%XD@%^(RTLA>NH0y#!8+p7Y33Cumjf!|Fzs`@MOme~d!RYkFZ zSRvI2w8NVCE3?tzkU2ndpkoM4NLGY?R|#n#I>J}e3tQLp&3B*b= z;|!8oV`4eXH%AF^AvoIaHQ9SG;Z^?)go@7#P!pLOl(Zv`RL?^QqeD~=1PE#aMXs4gJ>X-aeUlCQE3h>v*_;U7MfhV-_=2P9YD z8~CZ-P-*_Q3^_Z_49m(Ffa2M>{s1I>&6snfowFox-$ZiB=B5QXzE7tN6qoEhj+A z57?$JyJ3vS4{24Bu=eb9XZ`i&;zG*egygjXWutK_9g`fma}V;XNf)iN^FA0fbEA(r z;wCd_WR)DeOyfhkM@tl<(o9-|#EUlMcuNn^FMYorgKADHh7;4G zX%Z6+YZ587l;uLmI+p9trY0z|Vuqq`48HP-tz$n~RVWjUKR$o@`DdODP~c;Y$Cpbs zLAMgM=Ik#c()k5?Tz_re+_c#vkGI>ee_wg$y4!94J**|h0(aSGgRNf#*@j_@WF?^} znla@bjJ!B*)PJC35EJ4i{7^*7CN74q{KDw0h7ThU#s}J8&sJ6wPvcFBm^SssaW&YD zFNn-JjLgz=q3=C{t@wrUX}FbDlZgsDWjahhQvqY(vE=nafJx!J?F466Ow=J3vJs!R zwp7J7^_dk^tx=^#r_z#TZ0>RvF}m;?!>n5Wu6$IaH_6*W4W~G8#jK0@H$!q#E{1S! zmBdZ$SH0#Cg%zIBa(c0O*`Zjm`qO1PYjsP<7e*c~XT9rgSG=0Vk9j+@^ZgbZ<#IeVLp4{geh)sP2+B3>Z5ehGj6VPx^R0A!<|}8AeK* zM9+(|8^qh0Rk1KZvsD*5RL+ylJQP<9r!uNGDm@mrVSw6Y+QNnXm956d(>kcjinptA z&kYfDQ^gqp0zXVXHU1jo)Cf*YZ#DjW}s_EK3iRTQQO(hf&e8J}9z?L)?Ajkoss_VvZV|Pi4(ZWU6%{ zy_k7N+{#$O3ct=mX5cNfqGs`+u+;gZ$MsC|GtjCqrrE!*h+Fr0`owa? z0Zo!+oH=FCnR|k{ARqmh!v#bD(tqJ4zo@^kZ(lq*!E4M|CvA(4PIEOR9qnHMUwC-Po+p5>a~#@+qkqptthCGxuJ z>k0q3bdOKh>~qzZ;wq58cuLryt}XN{f4^P~mv~x<86rlvFriwXk2Elm?5HN|rp8`} z6WHf6o}YsD+ZJC5%F_SCHvdU@0d@`Pv5`cf5@B2fGfKXqs(un(YQHb@C%rbWG}_~Yx?U$6IWT)dSk!2TYe`{QcR!SNEW8wAvL=i? zb!K?+Y``0$%YqXZFWinbVP{`dh3f%~cqY{B@pWuzZAyY|$=N>G>6Yt%fTDJ0ZgKq= zD4PC90rNjy3HpCPQ9=3tfJ1ew{|Seb=`OsOWf-_JBwui-B4UQBT;?WiliyS zP+0IcrIe!#ZiA?yu4!uuqa*5dh#8MxG(ip^esq6P`FW@THubU`>m@|=U=sKzVt1Gb8kv`yz7P9?XMQ@jN3SD)qq^w&IuZ`Wa)yn7 z@PaCsmzOrrNvzeIgUl#)f!D5NzM`0rIlPo`reZ7#%xbd9*lS=mI_S?3?9?p%((;pa zJGfdaBt3)Gszh^RiUc@X#+DY!7StS7UdG@b>vEc@W%{RyofJV~)rd*rwfG_;rqyev zvhQjpi*lH%q0$aC-_BggvYR1VtiC5yB+q_JGWxMT$A!aPa>yBPA+TT)RS!_;%P2ex z!c(Y_Al*!qvxeosZKN@MFx8da=&*v(RBkyT=BXH>8DN!6R=&J-=*&4`v1Q0ts-`1! zm58)pxFd|Y6`?!S6z+#rq2yS~9j62cWRr_$8?A#+i)$o$N#MICOeMW)39VcOnV*{Q zSP0o_hu?&ybL_RZWz;8XbK4!xx8T}M94IeJ%f`B&oH|Z*coMnVMNMmF{*hSGTT+KN zVXkD`*sO}Qu+vU=Xez|%=qy5?y%?6g|I1doAXnbO;!WU2Kbp@ygp;&sTVa#IRX)Vy z%*t@z!Z_(HamTry0%d8oA=)9Jj~Dx$3u`9eh`qs{`KSu2su#GLF3zB!4j2oP-sj3G zP+gufSuw)H)#0#Z-C&N@O0A)gER<#_#$|u;_oRoG%a-?1uP61Rjlqh3iYFiZlK1XZ4tGaM#zmA*i0 zP?WSKY?anH^Uqwj+jWvI2aNa>_(C6xHc9zWwX(wpg;Ne=pnCw2@3;XUk z+dXy#HNz$E19^Px;N|_BG5k|;TaR6J7)^?mwq8*J6X^CZ<^lG>S^;j+&yDj|ZbpHhci z5~P2EKy_-b8p=~)#6Zyr|BXl-3d_;`)Zmcxs*J3>n_QqtF`J@G%s^Hej=URj!Q(^n zCRSgMfYFYaT#_ik8}F=UPj!o2TckJN8?925Yj$g8HfiKo!!hF!n+v5of^EkL07TFZ zEx9GK50Y7@)pwg~z$p9<9l`QhU|J#lxpsrDAfNB`ok5f%vgCH%RXK|U+EaIQKk;`y z|F&gz{}qYiKKpi*2L>`ti+7|1szG(@CtBl1h;@*akB44Zn8=_|pqtE*kC<{1t_u>4 z;GIO$!a~~Qm#{a!Uno_qoIV1bWKbkiKE7{Ev~zH)CZ=v0bIS=Oh>ePQ3#UJ|f3YaE z)0jweCsp;F{a%t*7Itx&&A;sm<9p3{D{)Pp$f4gY(+QEoGk*IQ_BxYWO%&xq{%i>Q8Nx2J~y6w7t?mB*c z<9vTziG2g3R6-JtM+u8!eD#nNVQy&S7>RI+M@r2u*q=(6nl>d5Qi(}L8LCPp6VRhg z0%%mFjLQ3HH{WBz3TP=|)Le!aB{Hn*FJYn`RNd6Df89o=(ps(2L&=Io0z}b!t9{skfm`zq*JQRo3h; z8B42+(Yf!|l%ZnDu*=8YsGqXI=8JG#^BnSPeV4K0OrceaJk?&W@$f{I?QCw)h+rVM z3OQ9+W>r)T*V9p`QIJ>EZzHjWw#ec)U+qtOaWv7jNPYTUR^YmMVoiHpgbbzlA$ud# zV-u5V18^%)Q4P-d_P51`@`J5<2OtqbyOeai?o)hLlU*Be2!P${9B^&1xpXfo&=Aj! zV59x6nx(>0W-K)nNvp5SLJ!g{xNjbz__FlQEGZcpkUPE{4oPw$-%8K8MyzrBaeTzj z4JutHDC5ST&(skDK-W$`M2HX6OGoq7`xOdv!|6E*DsmEIIjroKibfT5(%r{-K!VNT z;iE^lTRi`YEe@_9=O;pU4NtrNwQ{9#r_B{ z=YvRXRCrzF&bh~Cr)Gf;86Y*?dDP*k7!{Ae?48A10{V~%Ue&JR!dwtNkPhMdHWFEg zJ5G%ycdREOS(=HaVcYl(qi6t#637Y!gpdPifo}-z>|)&gIO^YyoRaxt5+e+%6Ji*7q|ZVQl<~oZ?=Z41XCyT7s>4rpx7pW}AkV?f zBTT0xX??=B(6+zulvhThK2hPt^_GOep_(RIJ_z?D%hx6z7pSE8-mB(;YsQ_L(FyA^ zJHacNr@j6nolreQJO5~0*qHe&ul$1bogFqeQ`rL3%a>*#=0B+X_yMyFM!6sE6f{~`pV^=*=<7Yp0Y@j)W21uzn^d&2%2T7@+_3z zpui#Cb_xZNEMTO}LAW%@(|xAjXQw>f7!l&; z=8;tYT7;QnpK>0DYh^XhIpSD$3b8-B)C3I+mPu{Tu2)GAX|u(Isq*zqoD>uh^WUTf z{Lhg)W7-87@{3)T|HpmRf3kS~FLwD~?aWpt|2x4m$WeS5!);+?QN^ket(%yR z5S5El;H)YBWZ=c4ML@l_*w#!e)#1ByWtIGc{P(l>B|k?c&&u29?^*2G>7;qEW~Q>U zg1OtV;QgfY@$`18-^V9LpXVqJ(#Y36RK^e`e<@l$gbQUu4akD>2Wx*lf0Izb_Iu8|FZE{$ASql8v&z3clkuws8v9Ci!P+$R%n3y^e3kyr5Eu6?OUzSRRuXiEyuz z+SYtUSFzBKYZ%MyhQ1+%KX~q&HXE}HYpZ-v{`C-dPskTFcPrQkoqM+Lk~>{LV^aM9 zU;fdZzLno+PGw@#W#L;vD(wRh0+WW~ahro^k!-i$NqyvbxJn50(86_OOv^t0zd zos3o5n%BGuDe;G-O7VvlJ$f)e{w_IAwwRBy_2oG>&{9H$?jP~=JA8TT=9I9GG}9?} zj41^pf%(l_yG4D2zgAi8k(GYFH z)_iqx__U=PeFTcrqz!e10%Jd|&nHXWe%KM$x%&mObW&q>BB^M(y-3#ScD zpKqVA>crnD`U?(H*}?(z2l|G_@DT0CX{-Hr&bk?Ixb*~YgIFOFZa0r)44X;Th5D+pcQJkaEZAoU`j68o`7@y)EbKGY4<<=|rp;`@u{bG~S=1lm# zKFFo?j)tOsvLnxqeM=L6jEc-bAA(oI@>gAI`w{tW<2~z*>#jY1(_Zs8Kenfwj}`Af zx)<&^#Xu}|ZVCOk*jAWcY!KG}97p-RhOB45?2vuX|B06Tr!wgO1sKvQiacCAoTjY5 zR8;Ajc%g@(@d%}AzHxTLO$SO>m+TrAeFJ0 ziC;9m(j-{ooqq+sA(pQ5Y&flo#s3CIsTXJocsE`4+U0+T|)D#xGx=UQgxReYFd4l0BTw-Pr+Xe&J>dwvrQYU z-dsHh1Q${X6=!W;ZACFB!)YOJifFHE%|XDy*`C3>+$2FACKnCkN~0b*(5AUyofya= zk&dlc%1Yxbh?F~muNJA2`4A*jS}gBJdpzUzTFcpxUL;g)kzk$*_Dum4m9}O!hh*Dy z8)D;GWTNyo@ETGAa(nrvtLGvuTSjzDzQ#;7sS_>V=xL+yI}j{q^)5wfqu@|OY@KhN z6rPj?d_0m;XLkX>?yucs#GGXjAaAy?hG?ta=`XJz(cvU*>Zvo*UBZ!_yTX=ibcMF=e+|u(bmp0xaa#QAOnKd(Lg)g;myQR(; z>EdYiAa8C{TfV;-+2K*ab{|9YY&8s1y66dK zjr%SF8O8hV!1{*XGYU2Niur+Hi^i_wB2wwB`s1a1SjD4?#|NQixa-!UZ;zzVG(Lyh zd3sQboy>?rgQZb@%}CmTDl4dUy_sm!Lr`==+FaA4%b>$S(9iCr!THD=P4iVVL>)Mc zzVSU{`08PVqe}$s)AoDn=32M_?t-9ySG-+~nPw5Xqh>{8tII;fi`}(wnb4ovpR-cT znTANhX@*zexQxjlR@`+{%T%LsgbCA=IM8oa`cx8Hpf&FDXq|cp^5~5)ZcUs~HbMr% zxmno6pBX8$ja7|F@oyd*678n5`YTU0HDClFV&|`OY$vSEl&qD2!NUkb73&MPb4@Ep z4zlWpF(psyEEPKg0?uxn%cgUzPIHXT;c-b6!r`vTRrSyb%&nPPt&iy~tJCB4R?}{B z>?u5}0XhK2$S5`C6CxHKgVH|=(YXwF&n|oS7F*2vf8L8r7%f&wa$SYw6?HJ?Whi8t z(zDXD;&CL*FpL54sxYG6aH;4gkkSF{!pQyKU!vf6UaH`njUwT&2h=f-`aCeVMeBm{ z&?w7hsEkO?J3`9jmrX4gjOdl?ejXUDZE-0j}?yy-yId=+GX`aX=92|9-CbpYzs#e(U$ z17|k5=kx=pV0z?l2m`LsE~q>rcES1^?Orh6XAyHlN=N!7LC}!B1kl8x0+8OYIX^rS zcHba{29Qgk)*ye+Gme^{$kX^5bjTWD@NlD>?7)5VL7N66&Vpw9iPGg^k=oBuHq&rQ zEYdw(Vi4)oS7H$ARW093^cW}K3;viV-;4Tq4|omjmp?E8e5K|`MJeOcPQ8qj6D&-l?7AR~MHiI*a3?iG7+>Nt!apkz z{ovfFFjr`lFw9`k5NZ$(t8@VWTYsljHZZ0q(JitYyeCC0LzK^YWIHRj7lJn<m&@%?|4++trhA(1T`<^Ux?lKJXrYiAb5J$`on1p3j}p5q+yp5B zihV~6%xrDQoC~^vH?_YVp64SN@)~&l@qpDn0pT7xY~Xc+^xd`esm3Bb-@Ujoi%w}v%nW@+DywBtsyP*xG$tMCGPja47KyGfg5ahODYuuHvtOn~uY|Gal5^30Z$ zzE=9a3sb>lYro8(k+?GP@k_wE6?le(02h!P#@Zq6L7Ksgij*X5 zC5Xg_L2nBY%58uks~^6uV$-c`g5o#1Nd@~sWl+7|U%1;nRH$l#@oJh*udk~W2^?Ng zkEriqeei8e^X^*Di^>XqW4>n{_qM!mHU=1_=E=+w(IZ@Y@nr!N`{(m;;4lM%#p>$N zKM7!vU}JuHGi%17MISocdC5)5>j=jmJ&R&%6Q(Q`+Tyvjv(S^2Rt;uJRBGvm-&*5O zt|R`gbOQoBIQ`NNh=PPXi-kR$Q9ijLdp9OxoCpYu16f@iV&~-~e-BWFcLq73s(%l# zg@#5~gGHk-lZwkEG+sS*eI-bm%Ufx0nLEDW#kXH4ICnOViGdz!j?Tfa*oOM0d` zS)w*7dF>za(U&Z$c@s8zL-xp?hxj4;@gp4K1}&j(*L8j{bj^wwcw0t*4y!rec6V0? zWpj&JF;s|S1C~?D>*JrD!i*_A!1f0Dd8aya5qC_cH2#azFi0aOs4^VAy*Kum zC|T!6I#gL*wN4?IAcJ}JK}qj0Kz;I8266FvdDlYn%=R9>$OXQmT~2*HIAKE(2jHNFZ^LeGf5Kr^@v(Z z8LGmD=YP`?pc!i9R&9VBGAw_4@$K^Z#l8=&n6Gl^;=L4_^p1a=t%!#-vh1&bw0yjK z?huq++zF&%3D!dnMdMDHWB0F$M>9(I>T1BCV~k94JqVZUFTY4}pjflLEh3v{WV!6i6&FOY0^ zbDlgBK{cOPA<42T6*(o@^U_85yT>UBC^4q#8P>o$YaTJ zQHR6N@{5n!uvwjxZ-~&eVvDA&bsm1U)jB~28z$bGX5ij-6#nHGa}DZ97~_sH12ZwESw})5VbpZ-l)p$KP(I{7P9&)6MRl?W zo!xeeEyBTyPaXK8`a|dXp{>2>ip?|8rS9Y?1xq^CLq zJqoPj?Lvbu%2;Q{#7ABw0vWjYutQb9gjD}b0eBFb4%aj$C#w(O`+fLki~7r zOTbc2CBZ2v~NDp0Sh?G=N+7rK3l4iNhE zkAk|JTb)kWJqXAP2}LWTaTk3712(zkK-E+3=ZB#Wl=M*6@&x*453~t;*ie)kdv@z3 zkK;E2Z{`bjd zN!{B+#RB(V@iF-^J0ckkr22Y{oyu~_X$L0?PN0m=Pgd=|7W|a@IZ>w!^CIb#EU+Oh zRHb7*7kxvdqmX6zGdlpyCEP~R>0sxAXRq8d|K}m`CsWV0yFvm)(}F`B~q{+SrRm`iy&30#7Tyd2rX_S)f)FmNDa)xoA zx~)l0LUD*1Mq7R7;io>CS$oQqHQAhtdC;;qxS3-M(*C99~{GPpZ? zxy>4qES~J(W0o*USTPrs@Rz$RtaJlB;tEq^~ zS$MdD^N9CApBX%39?$x~4LzZg0NC;FB`VHjUs^ZMDxjF^xRK#8wN^m{cULm?21ik4x7rDP(R@x(vXiwb}l(n0O zj+*ju8QRrQ!!#%Ru>NAx>Ynv$B5!3EU|n-bYOowDmdnwh_m=PFZuE-jtR<~fxl+k& zHjOD_IMO?Bb4SA%C0H5(kC5H+x8=obWo3%U`-S2HPX<_K!pxy4j%ilk(hea?P`riO zqXEU@xrQOttz^^XhAScS)J^KHDjRj)W&BNcRf_gvQBPHvBZP*QPGr4+rhfB;v^`eO z1BCa-?_ngIu(6BII)&#YlML1+7-5R089h=!UBdBVxX`Ya872ly!EM(VMh1ih5W;Qe z=Sd3J1_(mA)3oV)8S<`O`gS-ZBe#W@<{wKsLfsapI)N8(tXj&%Rwo_iuW`nX-FkK< zk%OPFHpTDxRqgXLnET-^dImRcOZ=ou)sLM=-6ek$lqbRp)mLi`V}|+gYA}_ar;TvZ zMag>}JK2Y zH9N6b9dck2#gG)R9C{Pb3`h2Gz^}PCWB_j9q!{HxKeL>aJ^Tm~C%Wi2Mpo~iX`mq5 z3@j$v{F6CT9L|hxurNp2Lv-xDo8F)!30OZo>gC+#FLJ z_x&F^t|pMBo7{uzq8=ee^U+G%-Z+ZwV>@4tKHQ$c8?%sFHn}!ONCW5n-`pzx?x0Ep zMUCApk0=oAS2V^1!NBO{`|oVN1(weo zHlCJQTkcEi>dWuJ9ozlH!QQ1|Wc1#F;nJ|$)?2GR`}$klJ$&1D2nT2RFb=h#JXN9q zWgb|sQt|RK$SvzRKuQ*^!mKyLU&hEM_>Q>gf-LkNiA}w@U2;5FxxM0_``r34kR!Lo zmyYx>FU)K)&L)<=cr(zYHx|&8H-+${waJwSk(xMV2~-YBn)GQBHNEo!;r6+HaPK3M zKJ&cBET%W_8W7RKR%o?Y^kp~7aAZzo&LkHi5ZWnpQw$^k8k~Mp@>-> z=$!dk{S@U2er9$4ZQ}GBL8R~hJ=_g%8QGDXIdKfvX(w~P;nYMu+fSBK#%+EQMWv9T`n0pRgxw{QsHOv z#_(4+L@CW<1+*+>D3En20C!fIhr2Qhdu}(iGD{V?be0*h&<_v#mFjkDJOb8dN741} z4zh7v==3LorDE^p25QR%dIe{EDh%zrg^fuuMo6}AsX>f@wSWj_ZKB9_ z#~ivQYTO75Ai1TD}cx+8I8qfu_9Vh6)$Fo&bA@Wut`&j(s_Z^2V7qsc`=A>)YOvL~}GB1+N)ZZ-IUn{F|C)D#Uc}fw{Uq z-C(+1SiL6K2Zid11$(eIBEhBLc3C)nlD^Y(&#Y_7^679JbNHyoAC*aA7Tg+tE=!*m zw-}#qAE~WGVpYeC)pOGAvbj78$*hja<|mnKr}wbfK6t?oPydb1)}=e{Itv_mwMEi& ztBQ@N&LERyGc7a!iMtz43U@}Hp?T$=aZiEe<_SIERJ}tnjVhf(qM$nKbp2hqzFlvO zzue|fBkC>B(<{IMyO{u2w#{*1`mmeQgmM;;use}cpN$7+wF3#T!(4g18kKlaUC}OL! z=8rVU-hER29gE*a;cQ>LPn z1350ccn)SU>QYq+>CL9Dhhn)T&1PGEw8s+SRb5#}?E(=ZiHRB}33L-(@rQw>p7 z1WICFq*M&`mG9xu=>c@AWRA6?7G-DS z^+~>vrbCi;iup*V*fQy9!SIpzc(6rm%NLr+wPq(|3=7{`v20|yVW?otH{bN&)(cfWAHq<|T zeVE;39h)falnnWX>SmnpC`*w})|`GG3HM@c=PzTgbC2_z+vC^X&Jm&y^_}+*IINTH z54syGSQ%SGN+2na&5xds?0b)9CjSUNTROc>IsfRLdLE1Mr5%fH)JJS4=7IpFa6z~j z-e;AL0Eer#h^3bkc_tsrUtPC%7e>B}?37uGCfAMS^S@^z*~88ynQXM;tzs5mSsb;?|hOA(%s5sDKthD zPKl7vbVfT+9|<`P4>BySdrsS$4pX!M!A#Klx_f`h^ zCBl`w{in#{hN~21+{U!x(a5ZLQR6k1JB|&P^Ku#@9C_?mUG_7jR_$nBv#o}Ldo{i@ zdK^#ZZT7EThpVIlu_)e-LkWg>r-)SzK?Qs?q$Jnly)lW`iYLwL1PlAvUr6Iaf2)%g z+Tug5A{^JI7WD$<5Y#V?t!rdxAG@yFQsT!q9-&$@@Ep&~#;X8F;;@q46@v5OLbPH! z6=>OMBd!|uF7o(q4w5a$zLMWs;k{F?#58w_9F?opc}zNr&DV)LLzfR0rG{DQpc<8J zubUUUm&#x_IKJ~*aS!<2*;`lOMzk1e+=uLYq>k8oPrup%S*Woi7A!5UzSCCOoRO^Z;h z;I7zHL3?$|-f&H0jeGlNk-`e9_CkMd*5hAfMjwy~g%sx1xW5@`uVBi8C(k?t6lCiRAf{{=M z`vc3v&t>L82LwSxk{1qs7&Txa0;$S)e7KWO+pzQ6c~gb|b@!3?zHH|zkM z{ZpJC0x_gi+%w^*{YqiET{>Z9IyO~YEF5bD0}~G;Y=r@{wg&jz5%CaK(cpgbJg#C^ zZHAjxzb0)*-R?cXY8{TxC;Q(F1Ts%FPBH^37>1DE^_j!HMLTkOFZ2RQ#w-e633rU- zn8H%D$#H=>1WyMfipoPlQQoW<(zKjoM7)*I$1wH_7hpcWq`vQmoBEwx;idQ?f0|5t z#yX?;8iV6Geh0!eZd=xy^DhSy*EPGpK8TEAea__x4+=&M^dRfkmcz1)7|!C zcHt@3?3bdcJ8%e|L}Tq6nL(|87NKJ0^ zqL@r(cKL7&hTKDw_)bc02jfT)eC#oIRN?46!rArVpjL|$P*!9b^RL!6PCW6`8D)n|{>sD0U}o?U*Hn5>O6m=qtW7QZA_VBkcXvV(FsO%KOKcClcw$IMm(_eQX z=LY}=Ik@#MWr)HTuR=yRs|+LQv;@?mXJ2b2L_)=xk=fM~LL5CY@|u{m4$-ykCzySq z$h4iMpFlJ6Zm8UgkWx&sd$4Tl;|g>jodVz2sy z7<<=_G%^Sa&8<6xGx?yL{m{g<8AJyF1|Y20p!f%;PV|9AgI4c7nxf>(E4Q-S7{X>1 zI)I{iWpxIK$Ob^9HV~1vB~k%mpBa$xa>O-qJLPR}VhE!M-t)K?YE9xQulR65mpsX} z=lPA&J&{smGuXo83o!iTkt?DI8lG3yN>rZj72IZWO(CoL-@;cCsd(gKd}zgv>m73q9F}AvQvOax4bsM%ySN3%NX&RXp}V z@~R$q$&_$LV3B0Tb{tU>(L){sbv@xoIZ1cs_LT57XZL){_Ok)N!cC(kf+F?x`Tp7b z`1k!b!Sz&4&g;tl0+{xVBCIg1hD@8xKqQ4O0|*axMW!ru_6G@hzLJQhNMev0nwzYY z>@0;Tl*bvqG3U17z8m=VYY1UBze~fkMsHzaGbVpSPB6|!82w-x84ub_!#qnIC;5Cv zjTZixX&{|Phj+`oT$PX@&gJzPiMWA#Wwed0E&A>b9{$Pcxt*0BA6+Zg%xE>>^4l^X zTC%e_$y(cyp}11w*Nmp{wus7nMmc3*C#%G45zWvzt~GNpnq+-bRFBNh`=Qk<6+}R4 zN*#b2>Q;WP1S=wXWODO$SF= zbeWRq1@ZuOjp){*%gr%D0p@|FT;V%cQ0xneUOX zg{P{+vsIvYU$Y=etoRC)V_`3(*~UhtdCwCSc@^pQN${Z`bg~?B>w2==BK5!ed=n;( zhLGBSIM3GDhF*@l?dngHRZfD7Zb-(!wYju5D27|6OWDfK_y=XUvYuHkMC3$ZSk-1N z4bNL~6c-gr&~g==siRsQ5-4vLWJlmcTHxxqU8$oV%r$7KZL(6QXY(+~r!#pZG&Z@I zCK@B@j8C&$xRS3~@8jX0YO0$yndXW-QzWq{$7iQ!<>1Iumn5r`MU=OS72JMeS+r^< z5R@zcE18(&OLS&)WmP;gWoOPati)eUZu{Xi*e5bfpUEdj`;NZOzb3}aQ>J97GmuH@ zASSR&DVKk!CvytUE_X4qIv+%s^mq|L9RD1C&`WRdU+uz&m3f(GA0ao2GOv~+w~mRK zz2#^Uv*1l!T_`pST}!r^xb3{iKbd4tF>#|ynXf#fv1tqIE}-A&?lXf`m_bFMk^J>H zVjld<|2V%dm?EzYW1EU!9CI>o+IE2(+v>_iS4rS8>lb&4|* zp!!}Nkuw=JiJo9JV#}ww=>fGkRbO{)w8)&KRMC>f!3t}w>?VCmWbT}#mHTD3yL}Hy zQIkxVwi!siTnQrM1B^2#i!h$al}3I?bhTF~6c5lU6^D8*D}0b?U{x^rVXkmYiPFR> z+=+8`ky%7075yVsem(oLS07D$;>fL}IjHfBg43+2OfT|{$K>uuu^=JbWa^MA}sq`g}3ZO z{o}WRZtR_!u$~5lEr8~rB_oh}1$mU5b;Y#DMi#5T0c#qZR7UN$=ykAs_Tti`bMt#} zLsL>tug3b>znwpBtGVLU6cmJ7Z$k^7AC=>Lhm$#1k2zGaZTQf%C|rcWEk3EepKsV@nV&O|j^q!uZ9I;3rpa2gVP zq^vEwkF1<~h^+eKH>@GlqEw__iB%{psdX zmY?s*9@wCrlk!k{?AbO(cK_?p5{H>tj4Q&7K6vz(L!2CVju;R@xjp{)e)_QVyILQ& zuM-yZ-OC=NFK>v2V&FeWMmmN;+2sZ5Sxv6s-%az#BC&f}Hh&ApWda=EZ;}9y?kg!W zmmP%z5KPgc`RgqFguZB@v4+ww^hmM$D;ACh|6rwzh;05Z*4_fBl5N=*ZQR|xad&rj zcXxMpcXxMpYuw$Tacx{1cN%YatM@)P-u?H-+2_amkD!V*BNhQGt19Qn9GN5I3#u$} z`?#V+l^MdR=rjA>XP59@Q^a+Skk!IQZ*lH+JJxSV{H_HDbh(PJ(x%3BXZnR6o7|B7 zwG>3ETqRi#(cW4jBx7Bt$Zs*OVJ}HF&cb@rCGfHB$<`NJ?N<~^0Us^bG3f>ZNM54n z5j#)v{YS8E;V4wjwK2p{-pvDv-|8Ri z_b$PMzTgJIpl-?RF4OA4y^02Z?D1MEaUJysjLu%{Y$!}!0!nP2*jVHTqOEK1kT5a=my3JGKU?P=O_jb10TM`1?iU&3Bz#^U3 zdZ`s9k1sBD)kv9@ev8Zb8MeJESiJkz54vqYN&3g{ZrQ3wyfIUmqzuAoxjqG2{7?ye zPhN6f@=Fq%l5Nv9)`F`8@ZJ z@%9*pp`JdKU#C2MI=<3R9#jUs7xDBeC14!hE(cvq99V<>$R1nObORpt2Q&~sKqfHc z$8iJ7d})#XMkj!r0^m#1sZZ#y7ymlp0)E;%nbRBDyV@Ch8XG#h*qG8AJ9#>|*wee% zIMe_8Rs^p9@SB20&Mr=d#x5#0&cc=s7N$;OfQ7x2=if?(p$YQRAdHA3`mgq`y5}oa z*V~;$paa^X6eEK{3WY=-GR76!X|fY>rN1@uprO5}%J&-m-4o%7WGDDtTe!ar) z;_?Q1@pocaJd}qv(Uy8#vGz;)vRPL-?FH4qmH^2|;YYr?o~L z3Mee(Mbitb8r^~Cuwpq6(DWiLyuJeLRRG9n)H!}JoZ2VcW%!L-^p*Go?!6VmDag*B zYgXV4gNh9F<;xP_`1h9or}FGS*X+Mr-p10@&gH+vBmY(~8`S|HET90DnD?q|B}5`> zDL`u>3K4=!N0xzWZ4q{Y1R0Xa$^80YM$h+%a3W0by3n$Y;i~$rbgH+-`d1-;A%E#5 zpL1kF3DCqOpY!9>rSDAJ6DP{Y`*FJYm)Dz?FZ#{g#Qg-9y_r9U+L@*A2@z$>b5C=a zdpuL)2co0OG}6Ib$n3vwGo=QRX_E$TB`pWpQLOAoQ3_y|)04u^lr2>Inswldd||Sp0zD*iI^~h-Cbs(|qWenizAu4SV22{ZU+;D}x7-o0MsY`2pRzK#q?M^$}rEbTc8|CG= zfttUKV!zhKveh*weu`cpOvN0r(FNn)SW?AJH#(sUT({_1;=Q2A@_;+Sv9;sp8Gj*A zWp7@sdEPGi{gdA!TvnI5AL1qs7ZOC&x*4+#qCfy!F; z$CG4gi;z(cm8QXHL4a`Oq_)^h-VzKh!v53Bk$PS)FPP0W2Utk)h8sU?p9nYJA^oqc z4^AujW^UDkQlU()VpgEM8e4IN4(vUPmh{E9B3D(F-l&TVP}*Cg7G7ol)X6Ws=N1NLid0gA}2{ zZ(2jZAvd2ppd{Af8KEE;=?d|bk%=~4_H?1bJ1qNSLO|NLBiIx7e)8HiZg$U3L&Ua6 zaN60i?Nix>IKUG)F%t}Wez@Q}MR;)9-EE=@wf6@K+R+7tIzSPGI)JqaVea=?_6-qDwx^2=G$3G|zS?jBE`d=l|vn8%ZB;#cB7N{|*dq&}DA@aZqq zpzwJCm#m?KH)U(=4CjjP`sc77G_E(q^9fM2Mz(0YL#f2yBQMY$Crm*(`HT#0FdXee zT(SlV*npIV({1X7Y3rK%o8AnNF1~YQ9Yul`Hf-#lgaUq96#O44%NqM z>Ps^u|6(_31Y%5vTWG=@mwDyfoz=NXZoMy=_6aiG5%`LG;`xa8>H{+1z_4FFW}M>W z36tK)yC>j3OaT9Azn=`J@f0-p^!edSFYrhoj||D7@s7Y^yN7GqlN;rHLwPlt>+5fd zq22$*m$>D@GOt%T!|hjY0o%=fi?XBI0nYO?P*$4*=>}70q`bekN@`p3n%p+q1_aBR zl`j_kQ?&|x_`HmMp7xE`UDVcnF7LS)@W_z-I%V|@DFVOX^qTq=P1M1Rd`6Elkj8L@;153Qwc~DopnF& zJEPU^LOfd{9k&g^r}f4lqU&>0_+!zc&wQ257~`o~b;Z5g0%MmPzGQ{yp#LAgJs(%I zr4DG`Tm3(7-us_^+uqK_)Z@P#x9X1ah8W^Ui2u0SVHjf05-lS6+!8uGk)@C}IVl`G zC<+BCgc*~kV8jrySYpOv;{MYI-lcc`dS()X?U?Vm@JEH*qfIm>qS;N1yZp`-fSK2F z_xt?Rm;K`2kS3%hSfik$j!2KHKTV+kv#idn3PnP|nMYhk+1tof{?*pej@8D$t?;XH z7ySJ&*FoTcH*~K_&Ku9Qhv$aVCGRRS=<)AMpZ+y9zic5J|J7rm0R!*b99G==UK6NM zyeUr&Q zbx`7@-%bY_D&awqSeXZIPk%v_`!Pc0<~Ta|jIQgg4wdFtKx#YlIJ!%XsG^-pux5bD3t#AEvN82V^m+K-cIkc;m(ar>ECGnar%N{`b{AQIgK_) z?C1wq*eYoG(A=OiQaexFok?5>>5SE4NeB#^Ry(2~Rkyob;`k{hl5vHYK&^NAg7(r_ zTPB(FV{;lzPnhdGdek}B9mUx*Y*-xXs4J}GJ*N~G^2wqj6eAv%Q)q6cXdTJ7mZ=NBez_8vI~IC{lM$Ie7U~R}kb7sx&d1%SAJu+Wh&u+5^Ez@8 zPsW^?(k#vsKSxuvUJ<<1WK*(m9uibPB~z6fDqZN1rb-(Rv%)p3Uf_U}Z5e(5k@CyF zXP1@@BQ(4^ch)aWQnn~dF%f6aRP_bW6G0;BPd$Af+6?|Cnqs{ zY1RUCxSahTcewnIXII+PQ`E!Q!qCp#^l#u5t19h`BZ~N;hO8;7#VzJ{U_dSZz?6Lh z4-cg2CLl6E)(9u}rAaUT$d#?j$Q|_}diFikVLy#33PfeZEvR}NuB!bGq^Z zy|hA#mw9Vvb#ZHv`~Jzl?-OX3s&&wVHl`%RfT&}Cq6=9l@~}sf5jFH`$#sb784gM* z4_&L{dkq{^qn&onr32IfsTrgALCtth`1g(xw`2DQ+G#3AsNbZc&foV&%L-A11_Kl_ zz?+_-oppvEwBZ99Z3%>bIy;Zph${r=bCU}Q z5ure(!?p!``h_z~horE|zIlsr!rNIRur7aFeg`fcp4^OfpIppJDac}%Ra^K@RKAIg z2r?EC`pdR#F|By4ipU+dnnj!OJKRr+h;4hCHJnyurPa%*((ALVDcQ2K8N194Dt2Ag zt}7?;#h0X0Hq{p=cH}_kmSU-2z+5)LaieoGRBDY7&t;>m%+?F1k8Yc&S0nhlrgjm( z$0p-ynOAFDrIj&Qv$JwmWtPn@#_wcfJJ_y;KBRH(jm5?`1SA?TyUD1d47AcO(}Y#R`8$wT?kb zmNMQ9r1WtGB2A0mpb?BY7OQLn*~VCshk%*h`D8wA3^=a=n2q(-Z2$K~@m65G-V2K)a)k`dl~y>ac_GfTc-j25;p)nyk(L;?d@<4Vwsfb|2hL8__Xw(Qr-7d2il+z=) zZ$jd0?Pb^u5+_J!5R!<*p)i7pM9E=n3RD%q7BJ8QBYC%G4iY zclL<#GfgDflm4FMTC{+gIzQ4U)bw{ZrKCw9S=XBk?%~p1$xJ3OZaQO3n2jrE!4D<+6nL0uP zb~5~p>d!Av@DA!mBnt}hr4=I?MI{oc{d=q4)Km-v(^*NJc_#??YfE|-7=Gx;R1vjCh zh<`k}tQQI|;(1N(;!dUR5<%Q3?7KvmsG*~({_1U`*nXN_#qMVX4>4iML*gptiEr{Y z&e_u*G$2%0(m0j6)u3rM8l3ZFtN*oh)<3(T;w8snYprG36m?dLP)hNht=y7?rcJ9- zk$wTTAte(X6|C}ZR83wBviHvaw313VonX2~uESc-chNh=iK#B9HTk=1L7Ht_cC-l} zd5#c%j=aR(uWpffIN4zdbncrhid>d;`;UN`5%M^G#A+z;9@;B$)E54w5j_}E?hySy zhU~uaxjh3UCk*~?1<}f;PHz8Y%2f3?ebiO7&$zB{hIlHl5s<@c-D$ceq->9Yj3a17 zl#s4aP)0`Kd%!5+xvpkvg_hZTHVf`ay$#n7iQy!KR6@d5uS;yciXae6`Vl2Rd{tJWqI%M%oZ>GqG*;i~-@S4wWslOrtXYxWF%Uk^&!M4Dc z(kg1Hs#HO$lrx3x+PP%X!4BEne;Xt1Nzclt?;N_DL|d}ln8D(N7^c>PvOPB*wIsIV zyv_Tlvs6}SX>?V}zNO{%Te~6iHC`gS8ddRw`b8ODW<^FA&T2nA&b{O08`HEtBxdzJ zn?(-#s)5#ILNhw+$6)2ArUf-)+$1-p%z98U5h>ZpmVzrssSz88wRkk=m59&MM9Fuo z#Ty^(VOe*wOK!)V$Nk*myz7NP{N^4YLLIm+`-EIPVL0!pTZBkQVq<1rMGx0a%^B*x z%v#e(QSkZE=5X3`hOSeO^<1{tn6OsYc5$XwT?gvg zwwTS%Q;V9R@2p3Ut{zoYug&Kf%~2xrp<6lzl)Vwyx`OvV;ka@qni*a)P;&(8mu%N| zYkkpHync8){K`kJKk=%0gud=0qj!f$X=kZGG@V(NP)|-|6QkX@qumR=`9S0nI)N_a z4tW#iz!j2*LTmFuv#CI*Yt1psU!uZvx2`%--reOsgw=TM8SZC7JD!(Ex=~`0i_Nvl zFxgqVU_!pHA`D9@yn9%tNY+gD!GuVLt8=1A5(W^un-t>WmTi^g_jNL5IjO z`6g~G!ImW;{a=tzz{KIK=IF!|s?r3t}2)zzI79 zIQnGobs0*1poATt7Sr#=%rE2Xz0BPObx|A>&oKl}L*C6S`lknVzbGlmmz0P}N!q3) zWl@l}C`g@krM#hCqmSSy-5H{VlZi@Uqf-(jIkqbMow4lkAL8%>dAVSbhhf}Si@x8n z-XJvLtJm1B348`PxFAiogipMoK1O^IB?-=|}b6?$SC_GlAD-(RMU(h&v}>5?ap zI3V)lbw_$FY@q!0`@ys}L#r#u9UYLb7D;FXwE=w&gN#|d}S+os??nAQQ!dU2{x3{_ZI@Ic{SRR0{XUTLvcPTbi!j7O}; z``a1v$8h}px{qQKn+MednQJ3kiosUg;+a8>nI#9b|1X+RrzS)?UYIAMVx3mX^lv2y zDVyQkw~8a%<#oh%C(*~Gi66}ZXV2wsSV2;sQ$Cp%iaCn&t<}2A>4vcCy8W~0x7qs( z*U8i-el3$FwRDi55P!gcB15ZY4Ir}HK>oj!QUC7^KCubYR=|R=W1sV`WAU}BI|boE z1mkngq7-^C_*&hwa^a??nUr0{OJjFmgCGd{!>OjNZY^*iB|l!kl5%(_SY~KzY!*z zO#qUz{6{3k^q+_z8&fA25mRSlCrbwxOMAP&F)2W{T8(U8#N)ThimQO9}XzD#FEl(OdKkK*5g|FwFM2ym@ z%Pzx|in0z_@miYY$TSZ;V`&TxveFpWHXy+<$2+kcr_4+0R@8j+sKRjdPJ4^?OiiOF zbEF2bSk{>3zE>;d35$FaTHWmBNcrroDQc8q6G=N9j3PcIrLSqGK0DEnyhI^i9Hff> zcug5?A3a=|JOXi~*_SyHdvEaisvOU`uH#2&idwVO7$_Tc&xamkJFKdF@<4+&W6osv zXm6C?;lVt#xUo>Gc67Wr)xo-5LM9zo>N>6De~yNwa+b+C5C#)VTMQP75srcaSEFmy z6GDQ91gHDeJv?#{?rvIE6?$5KW$p|If0+Xy(g%YpFatqRuT#J0Ad=@*Ig4{fo71cz zR*rnU6GttBOBzQQXBdYRCmDwory0i?=NShUCmKf@mtmY~9BQ0u9BZ6w9B!O`fHH;= z_p>u=$l(xIpOYs1ylmbs>!gq^O6no5l^CFO>MDG%-Ttm;(Kp7Al2t|vTdas(u4hAB zq+1btHPi;eA5ahG2dNIsA7l@f7x)G;I~W{zyxY)!?_j#12e9 zBpj%|JJDb5Aim4mPJd(Ej{6M7gZND8!+gW+!Exj4L2?80thbwfkpACb&sNWyouoTnVaSB|Cd&A5ze|-HSm`&34ko` zzh~xX{=Ym5GNx{(Hh(_^vavnT00$C6o_GB6sjRggu}4vqC^{EY=jp@|S8b*Pk{2m}*5lDd(RFz*k9|u|L57PHrkJ);K0Sk+)s#991N?O}UjbaHqQ;-)ad8-k1sU5+U;)8`(IS-&e@ z{tK}S{^~rOyEQT;Q~p_2mI^LwW@KkyCW}-4_f(G1X|oc zBgh=2BF#J|!rp_}gQ)WMVM&9KMF&@nnq&w3vgl3_Z1ro4p2DablwpX?y7XYw9(;{1 zs=p{-$~C90U4Z!n|Ix?(Cld;}+F1Y1vJ2Xn+dEmhSlIsS4vX)S8)85W`&=ZErKD}% zgrTwNH=@HsLN+lnI*-~MmQt3{A%#~Wh=z&`gxD=a95V!HoAd27xIVlcKb_P%JDObmPj(wiU2~@+3jKpQ+zTa~lwQtku_!(aWx<3BO^9FRya)SemocfQ3 zrUqP!f2xNN@^mp(bTxJTS8CT+QPX)*4fVs0W-Q842pxD>8p*am4;gk#I;|BRh-a~| z6v_~oKJC()SiyyN0d0WiSDVY-8irYxDYWtSTQOG-F()aimbc4{`|M-xQGMSh?w9tk z&d3y~#o>%dN|Z%1GcdqZbp0s-11fNsw7bpTWz}`$acwyR%hDQyF*n`nVxOs2AImn{ zWkUBNjVf^`>3)ipmw_m~%KafNULms(B96`rk2pOv4qX^-yi@JKd!5l#vK5#56WJJ*(~%XSL2^LE!^OeC*opCh)N z1N4RExp*BPHKg9_iukmwdCYkB$Yjw=k;QU`5Yr`XmArNXrzXMpkKhO&e0guvQmQ?^Lm2 zp2OVQ%hsERZds4O)*m0zF2j&9D2pKVjL^*)Kms=&um{Q?6orw>u84ADA1Fo?(n;*+ zt@AE|9$xMUd#UBIJWQ{QTXNRMprem4c6V^&S-!VNiKH;*Ph-#e>rR>_C(4LAEyOI7 zP#52Nr_kOo${{q7COts3PWc;nu2^9B4LwWK*vQA@@BciX{5qQ^+S)B*`G&Y7j{~7m z4GXW3Er&?OfCvhI17fa_srssB7Ar=o&oLN_Aw21vfvMCQmh!|IXNeOEUJm!DPz4+J z?PIdr4tF(^85vh7bRX|KR&$)x#~NOFlY6#8;q7b~DBr+yfhPx%@HN@5H<|Mo}#JloN)xcsGAl zOb@Q$;ZXy)7Ttf`MgM8!@}K=e7=R}&%`A-#UH?z=Y*Odf!_h`w&v;i)`x`2%lfm z{)SuTOwBq%fXSFWv)gYQZ$9Sc`8oWbzg-ao5PG2pFoa?Q9_3VAHgY*Yjs*0i6=lAVFAl9ZcZ zGPzOO#*`L;tJ226B&67~S(;s^O@OP=Hq@f3Qt6S^9C3@1bY__wX9x;KyDGy>tx}3p zo5sd5mSmPElkSD&j8W*BJZi4KRqK!(a^evQO_gNll}=AcWWp=Uq}mIrX)!xrB~X72l0R#~HP-AmC>^DkfZz*8}!NQN}p-6+#z0v%eV~B{F}RFv@wZoWC8fl)hgSq0Zq`9XR^XhF7;*KCPt930%i|b-oW# z;#bkjNtREKg1%n8K5DSBWhBycbOEJc2hnuO>QCST4fa#2p@Bo+0^DAXB zRGSH)vc#^J{D5aW9SM-%#Vf0F#ADX^E+t_gSfqZT4Aqm7e1nb(<@+2E%}MvOL*wT@ z3e@lCh-hwP@Ea_QYGhT-J)zVaHgwX>eq;;+r^LM=ekYWxDI!@bPwfNoQgb1%kMhf1 z`H8iGH=GFdJ^ICfq3J;uehE(oFQJ57(>aMqU-K1Yj;8^+mUzZ~ zg}Cs&9??d8*q_#W&%yabFZzUf@AciJ#=MuXpJNOzS#_IFcWfZVRPI&W3FsTRUXOPS zJqP!<*Ij12LIB_2>u3Ak>R>?M-pKUYqVI8cQQx`-&$gBG%(jAGOuN0iGy1CBEx9uw zz#(v31oOLVvz>lx6sA4Q%Ef5i_#W;>sDwb&{l=gq)#4Mi_@BVb%adjTf=Rlyt{y1N0&5&3MM8%oy>LxNkS zTbBxsar508{P!;0&mSYdWNJXo&mmW-_~!M(HxLW9fiR4{RUD~)M!)TQbI%0#pVUQ>p-4Qd)7#gt=HSMKUM1K5zQ(Ci6Yd zVd$M}u^C22A8FMsLlC^f@jXMlgRD4{2`GQ1xo?>5dCO@!-t?Z`3enF&MUIG$ z7%|eshwjr&DiAZGerMD89n6@T*+w`y&DK*H)rGX_Yk{?CSm3@%kH+_u=_pHY;K5hl zEvoZsQ|0~uL$16QGptT?xz(O7)v-I8MYOq%pBkGLjA(4y(2FHVOt!^ZB!O3~S|}_n-2*^g%*h+h+@r%O;=m# z{a9XiGZ}a9%@I1upk7fa-&C;I@GP9V)mEs(-YVIbMd38@HCC+#NNa|QD42+mGJcVJ7~ z;E%$9NQqNMsKV3PED3I~xvChFa#n96#lM3az01uNZb&um{{3)u2;VA{^)f^=hR}Rp zV*I02?Y7+bwzzfw`^Vyjr&`qgdDa`jZ&9lB_^LADD`{Qv4t4H}=e-Bx4aV962qduj zU0$%Q6D5bhJy2li8G%E^2tlPA^dZmg`dwKal^ZrP)b3zuXruO;0t`wpXo-4)FUM&I>b4GgA_WP(o_r$XSz^T@>vXgV(+}YTiYs{N51pCi~+i`7O{y)0?|jgh=bek6A>+ zrh5>gz&%=x?31VCo!by`lU2=Qtj-@SH@}{0=en{zzQxWTp}(1;wAF)^0izi8wNLSg zC5itw0&({n(x9pUe+vPRQK6^|!=5X)vN)buB34}U`7lob`+ZoFk0pCmHgcK{4PQL~ zZue5?-_lwvP9?{cyE#g)}DJmAf{$emGZeNJYu@fY~!a!5k_Mr1TsfR?11& z6Irjc&xSljEKB3;3%B`>6l|3MtVF1)BCM^kC6pMo<@52xHkzJXwHESnC;;`hMiG8$ z%;`D+GAaFIdCGr^5C0ov`hSMlrqK=1gAAym*Nf{B$@zs}dAKT57@>|q9SvFDcY2q0wP5nIS=rceYU4pMgE;Mm^^%1` zA;ByN5s(N6W5xZ8!-W_M5=#bzVr_uq-zOISBT)RS?p)c`^1py$>?(u@&JiB?O&5*% zwc(g{S`&(A*cZYA390>k)hW;uCAyD?$Ut8b&vMR zTa<=ZU)Qx9)a*Uq?Ceufa_^^m`QqX%&r8YyN9~o_YG$X|rQK>~gR6@VOW(BXCf%wf z{>9ACg)XKJ7q;xFocSGgh79f=YX^0@+zGelL!}Mnj*GgIa~7+51q*TFbV+lm+%N(1 zNGa=$G^Nr?ozhxoXBBJns`9nQeE9ImTsbPFa^v%p)Acr&XSJ$1DN=8ytu0;2dt$MN zm?t%q6Gy@5aBGn8rc9Z2ri71+N>d1>3s7*QdQAIfDuq+t+OCZ!!l*HDCA?7P3~R;& zS^UK-qx#KoO1D9Gb&U~R_X5)`U9qX&u0g=xf!Wd>QOn#yyZGU*-eA6?J2Le1DvIB| zdsDYi(2CHw`biyFIXcx6RgJN^gt;kiN(23T>X{r}YawvtH|bmVp!Mim)#GZ6lMQv^tITZiq0D1^t+pL z&%+)|%|?d2+XjjklJ4l&*|Vud*VzkDUG`z>4`ODPnpfGqX_viNdXXHu{xnKcGjPnFN{5C)UtSD_`hJf->5m)mRGaS&$i~%r^*_iZF_@q2d&feavfb5 ziTuu&F~>j%7(CXVEv90IN)c2o-+7-MCwZJkZE^!uvE>Gn6Mqv0^U0iTIe+jHkF^A>9aEkazQ z-jys|qr_^djuq6olCQ0mp5+u5h*LYX<(co^drev4G36X@gj3l~Je#Hvuay=0!;aRo ze%5U(LGrN4EfK#l+8&E$v3t|8TL4DG#(N{hs=zeYYWF|cEF4~&d)^k=$@@(_%#F)$&&6v#?&X~>^&zRp3(2&p&(U8#)(vZ>+(~#2;q&QJwRAZvT%*MdR#Kwpm zgDys096LXAV&KBW#vEsCV~9J;5$H%{OnpEy$~HO?ql_sz>LwPIXl8=Rjp>c`hFKi* zJEjTCIK~K%XS_Yak?{a|v@~W4Go884Kxd*o%8~T|d$c9y9CMY~&R}!AJ<^f+ z0DZJJW&^X0`O08(qCMJ?{Q!ToC*}?Fi5cI3XWS#=mS*svgja6;|KF(xTa30iPI1=4 zfQ88@hDdED*ukHd-L25aY0$?j9W$t7xtFc& zwsp+3td1)Y=ijAeV+bY@VvpSsV)5`DvA5LPLX#b;a?%eb9k%53FlTIUO7}PRriR`7 z#fRMo)g!Kh>QQ&#`jmVSd?KIqp3(N-cB4n0hK?f%0&qqU2G2(j1{iO%_hR?k`o|&( z!q_7T0?Q+Jpl31q;PUAFxVvTE;oJ4zDY|vuF@1ub9XW{o$bGt>bse$RQGrKafbUs z+amlS=n+5h?GQhKwh2Foed?YeZUk=;_JsEd20U-$_e%Hk`(Z}-Lop)#!RgUIas6_i zF>b1d`$F_-KhWN>Z|nEcqw)j8hi3=P(*R@E7d!(oXEkS{N0fKB2OF!*$N5cq_72(B>b1M=zhAQ7T41`hT|ZbCeu zd|EvydC2s@^NID~3DSP~1M3m_(Z6fmzU|^1ed+`0lh=jRqpJ_FN2(95Mpy4y53}A( z?`u7SJL37&w&VBeZ10fovPbYk<(G91`6NB#+)(b@589)CLiGx~n}<_t-RT!#-|FwF-R|td-|p;X?)&#U4}XSak9-EL zMts8AqkKZhMSa4!PxxT(+Bp)x3pv92MYcoXBaZDY4o}}`?yKJD-C8|+?z1|?d(gfU z-Ewh|>mitr;OuVg$KFJEpmfXU1R#uiz0W${?x2=!1oqKTVfHbu@b0zp|3v-x{a4AH zz%AnW6aW`R5dITN_)nzF-+6NtPltbHlVoMP>;?r8bHHLi0>7M6SP~U*&Wl^>lokm- zoF9OajpdpWB))5^BvL#F_^71tQn{7Rf9Esv`>bRCLfwtLem{~n=S#1H#0U8xdGc)! zk8q-PRX^l5u}@Re&AVkLUJPO|yZ({t$-EqA+Vz{*X%%I#`oIbm^<;1*o2=z<8+_`X zvi1UEAW^fDi*gA_vw$z`4N+p|&cqADeI5M8VA|ymgRsJygJV?rpb$wPae0@!g0~`W zgjY>WQTNjZ88UZpk|}~1y7pE6KNQUi9o5Pt07ZfRW7_*aHS-Do)kh}i>S6(CC;O9m z1Ms;2&0=z0a)4&OoaytV1c9WuBzOxN5~+}oD-flC1)_Z8px_4iW8RWC8Y&WKzJPe4 z8f8=UtgRno7at$KpI_PsqUQR#*Ad0s={S1H=ZFo9gkiV5ZBPs?ZHBH!u%;h77AEYV zqI*8(CeObqpIh0(q1YKWDXZE9pT@{t)H2DcJF8qIQ}r|j5@`9QCZy`X%In%5dE{=t z-a#=bgy{t;1{#IoTSQ^WK?O6}nY!tXCTKuxTkL4*7|>mId&UJ8bZ4zHBJuI;EAJf; z`w?N8y55GWq=my`>iO?opg_F+6~gnC85ZvV%=q;m&BzXT$3L+Lf1B~Yf${%sL)V09 zxj_Nc&{>U-nt+0W{XTBj#c%9lwKcN+-$;eI1tcvez8i$JIhpSNA-ZDR12Q5bZSRi! zo=9>RUtT|+LFa}!gPlE>O~TfS(2U!t1g=Y?_F zS}4>u1jhl76CC|&oxogywTZQf!*jUzvq5zjJR@2dm)Yc~PP^G|<2190{N>Z7@F?mmPE#cWk$pv%&(Hn_G<7 zU}x#G`xdxl&l?M`QH~6Rog)u$>M+{V;GP=x>=xEtY@jC>N|j{mb@Yfw^By&(w6nIx z>sKFPb7hV{cc|X#EZL#o%2e5PfSi=?DHw7Ou|;Co&e=hAoHoUJe_m|72FjUDjh|l$ zPPyL+1_7rmLiQdVMawmrt&8zi=w6C$IpFQg<5g=NPmqCi_NIv&e4OJyLY9Rr{Vi`7Rb67}xDJTtyvnN%KDOSm$*vHB#^bLG3`%g@Rl5 zsg_qJ-Xw;=Ak#^<(-2bcMTNwZ#z?hO8OjK_)jomIF2LnVdG?qT!BeAH+s{DQ##5C> zx^o;q1PjTv^y4#l)s%T1yZG3kWAWGL_R(j7$0+t2LCEz2e^fjG?*f zly81A85<%`dKN8RsxSAY7ZZbSi~$12z>3)oi?N0U2jqLP6|p2Em`1To5R(&ybw&|M z%1BLM4^XgBV7JErvow50dC*OAAVNRCw3*}#U@*<>Pmz>04DM2cw zp$vltx{nYtX_@cRH(7S_jFryxQ=x9KS*ZIegq<+c(;v@yOL{ijkQ(jS@f&m?92)Ml z36(?0DQ0omyn;uZlsu{N7c#gzsc-gqVOIdct>+1!$jo=%JmracV}Atc!rwHKX|g0w z;uhSiE%T&~+IMJW)Gj`?!iCjPl&eEVDe4(D-Tm^MQq^#;;he)W2?7E*8@aK<@0*c` zA!bO8h9P_XzX}8TLsN2hgxO?A8-9v<+(-Bp#%@8DL#!v$@ggmZRh$z|z!q0yh_A1q zbO?)Ix6iGG(y~)0mmFw zdQ*Vc+esN$GGZrsu;ti}tJmLA@F7<2rxbK3!uCqoAxIr*!a80>xr^ne5mA|`!GglQ zk5-vH-;8O|9qCVszHdc_e9hF2}%zMAcpRc$QCy&uVjncQ;jcpQ%Y#bSK=?}nRaPf zO}e$2unYO8l?Ori2k=YfJbYzh=)PuTw(s@l>-!SpAQw?zhY@ns-l&>^xNv&W+wKjh z+ee@m6)YeZy0gMDh74};NgtHxLXMwmQ44f9KTFl<9IeVt;=`m>>Dd4$54t6C&$g}Y zsn5whzxg?tp*+tfl~~4cMhI-mA((&fq;4g|@4f~zc!sPB&rA=KN%4gkIv`yaQ{ ze^NR8+lF>_rpAA;h^XCv*-y3$evko{=bkD>9SiG60I88UO+;X1tv5E23Myv>T{pAgv@Xq^VmQ(V;Je!aUv!))ipb1$)6?U)*@N% zMJG?br%q3wFmY7NICg>72T?DtFh^5AbsrQTrnFYr%%`Y7!$r--&0!S)MIjjrSlIra zM-Fq+1fM2czOrHz)?Y!~K~2m-9%Vg;w*P&b_w}_@GF~Ke3DSa|0CQV$^)KreBjoy-5m7P4{Na)6sE>@)H*BLp-FQ6NQyCri~!BpE~@U_mSS z7nPevt@DUjl5%_m8)iB;XzYgw{kibn`7Kphrld zO;ySU6`V~9CG;bK3CA`{-uj_IZqzA}A?`UrNdA049z`1N@$K<<43!c|M68fKb?fH0 z6wJDbLLjRpie^(LWR3Viy#2%N%U$K&5y8fzp6#`tzM)rmR&?xxRAUi~3)8au3w|oq zN@{iDY3*y{^%kAlQ(9>HiM3^D+u3qWwD!ccS6Z(f$zgG|Ss38RJ$#-D&dglph-Qm*wpgXuO&LunK)}QPJ#PK58ze?fXO%Nb z8cV0Max#hr7h8?pgSk8|=(^8S2UQ0%3d#=34t5X(HBeGO(N3CyyooO3ZitCLJJL5+ zx+PC-<3cG(aevT{$%J{-ZTNBhc(dR7mEh{T=GBg7+AdACLs|>hlvA#0!wmW(?YZNh z)gWLcV<$3v_eAM!eTC(r_#Q+q+7d1vG#1nqySuwP1PXU|w*+@5WVrWs z_sslf_3d73KGcW$SoJ>7S?~Fsv-d{G6Dj|W3auyb4Mvf3mLfA+FN(FF7Gn)vr z5{8o-&w0X{r&P_=?VDpbh}XB{wpB0V5^?oP^pL<-P5k<`ysv_nHPL6r;URYU%syR{ znLk|bG;!R1@L3a1O;Z*L<+W=bTzT^1tQK$HmZp~qq^LW<`sZ4Edx~7nPN!oz`&g`d z{8JpjMf5iq2z0qf!%l-=5ydmLy06nh{W(BN|=DN8xbcc?T@wgY9&gbf&UpZfb*a(p9U)70YZZR z?0r*Ns~!~H0=EGh`!bMBToKZ#Ewfg9ey)jn_(Oh!CPZ4NtRPDx{kMAO=+~G5Lh3GQ z<3_<)I(>d^VmSpK4xNq5V$?l13V`SeG^u{X_D@7e;d$z;aMTOYblm92p?w{EjZmM$ z8>PmyQDbJ@24sFQ^BwM5fofT+QX^KltsSL_Gb@!3cs35;aS7?#LAo(an>4#Z- zr_3r2EY%Qgit-O7Me_LbI5b_x{$tOgL{io z^cQEo8E~CXVN_Kho21!2vR?A0Si}32t}UvNU)3*W@<`mujjO2B^>UD7U0fbVPYKC6 zr|NK1++d0w2rz6E{YlvU7C)}8Wd%D7Z9HZv%bIODc4xGQO%a2aUk&!F&K+*!V9t~s zyM%O=S1{D8=H)3+sN(gc(v*U$pe*q>B?WejM-4o{5ss;ro&eEFFw?%gYPg2YLEu8^ z$3lBUqP^tfQ1GmpLMwOJ1S3Bl5!uYRy=jHWik?CNSvGYyC1VZoPNfh9W{k8#faddW za)$x{m!4U(o8Z7I7}I=Gl@)P3F2Ti2G9(7HC?(a=+c4aXGYX=_(n%W82`_c2b*c za$^~v*rfI~BlieH2!isYx@EYi(Vz^S%4bR^w8;EQ?<9GJ0>ehYphi8R-2=s(2S%-y;9xQEv zeq;ex6m4H3T`I3Y1Lb1Tu#Sx7llCJ`4MN-S-BsJVSVfk+LbQJw59+-$OLls)63FBg zGoD?>-N2&ox6^QOP*fdb0~tD90tT)A&av`uudHJ!iI^3nl8f4J+>0rHBRQR&%u}^* z?L9781;dtU5^~9V=Bhmg)tAXzIIi9yQVQ+3912Zw?*uDB=ZJjrWLt_|!aAuOb%?I5 z<_d8sFlph}yeRf)MpZByVld(L`XTu+`lQsPB?>&%q3x{w; zUQ?oM(+}vAc8iC!MLM>@JcVC#qHHq`@QHbr!T5-IVwnwf7DDeh%W%hJ&R&IK_R;i* z>$lYo%EtbVIU9bSCSDUaNm*)3P}3Q&MBkDxZpcprriPPunA#?mzC|Qw($XHWdeQHf zLQvgA>7R}JLDB!pqc(5%1u7B71#qTc(oWsQOy9;$7p@&DYw>5Sq1~-W6&Ry904Ica zT}o{xP8&B_lTh2Dk1A>F1OTf=s9^ z{Ak|INyAR>JdYPrx5~jJw)fSx&2_}s?RBy<#`hOw=GIu^Z1^QR$2iQ5a$CIc_s=KI zOj2i30l7n(1~$=ol$p?6df2+_bx~Xf%qHjSh2zU|L}J#awH5UpWc65;$Y0%$6}QrD@SN?2D{7xgGeE$jOe@F*L&hHg=J z_p1>onh_-353tCd@vNz6_qz&NtExpSd=PZF`|1k3x-s{uZ85nCx68u3%ET`UaaQBI zj7BoUjT1afYq7>gMB|wqQ8NWOZQ`!{A(B7b4r_}RSU;#qvHKg9 zB#wb>H1*fGtex7P{;d?-f#Lvim~qmMefX(0bFD4ruOQKm&)YG45)!0%Skc4mU(x2s z`TD}EeN%fV2I+Y8MJmS0Ly>v z2aCH0jmqASM4<&El$a0cPcO{XP1>)6OwpcUM5!iQA4D?f$OjVs&sdVSZ!r+M*tO7I z5O~-IpldH6UO$O2v=r)nKLjiyNUW7#I>-i_6p#l|1|iC<9mFhWWM2cphZD<6A6$W2 zZTbweD1GgpPT7y4#MJM{tRM73%r+VS6H+L_Q0QGP2njT!_52H!|4U!|?w5C!AmQf} zh?;Ag+}~WN{BV6KyWFC1{#3%a{!GG5@4`VP*OIW^0Jc3vKtSrQ%ySfkz_ljqGH8eV z`OCY0P|P(FEMZ81Og+>GMIh1#gE0CBS-%0$W=|cq_scIU83@?zDC+({03V!37XF{t z#2{L9OVaAZU6N+0dhi<5<|6qZc|aD9vDDkmXS;@D5QYAj6;J9_2ANG$S@rC7=zh9>c;aFRLLFJr7n8`T%x z;_jLhR^tF4cA11?&$;+rH`*nGr4A~0xP;@g#McEbwEyUz+BLE?)*7r&{|wEg!%1b) z8`?F~ns#(U=nhX~owRUdVP~Z`wX6tq*hK|SSnp=7+J+f*uOU)h>j2#VIqul~?F0(@ z3Vi$#L=7M;mf_i%Ya>3dS0_IH;Jo^zt_wh&$?CWx6(|e)(%2Ioq>FQD-X6C1X%1@P z2@Qh&G~s-%&grJ&${h+J$OXv*uFO|Qu6g*f`%?f_I664?roTTuMX&1#az`)#f_&LS z9_xFu&(eI|KUUbzO+EW^j2#(32=1P+S7z;Tdp&?FllHv5cmjiA8*BrUGA%p9_7o#L z(H};9qKSJXz+eE8$#ZlLm=7Ar1}6xh4}cRz5@iBi0Qj&60Db@zAQFpj@}8>uGv@a3 zkFslCU^#eiw1eSuGk9-M74|Zlt?4zJt$BN>5f+F5(1inqz5SWh1Mqp(*8Ns!i9%y#BKD8i=Wbj%7$i>D#TEFx4mm~bZ;(Wk-Q?o?ZbD6_|;xH`l zSTD?9KeEZcAUFi^KUt`ZK-FvdYaz6+9p+!)Cal;YAzrb59zO#1;$kaNVbTsLh|Axb z48arDCHc#Y2AHE=75YhhFHKe5$*(Q34bJfg`fM#*0s9f=PfqV5I{BAqAjiz#LiakR zQ5MJxjb_*er>5?A$R9q)Y=mph_-r@@(m#wmYn!AAyt5a8*JTD(x~-$j=pVb`E0nrs zx^RD!28bqFllWa*vF^k6jub53kbAvRE6bUYe&$>^u3rX@EV&c$eKYVXD7*fS2i%jRdddP`a~VW!i2iYf>$_?h$6PA=K9-99v2J4{vqxv3 zyzrXUrh|EOivIEPB@DP}W#o}g6Gih*wGscRU!nfObllb&T(4y|zw2T3o~v1`9%=PX zyGC->w_8!^qDsIUprPJG7~`NL%V{Q?2-^TLqH5mXqMS~Zr|lDF-RDvxVdJ^zdTckAG5W^~ zkp>Fw23TmLN|HweeK`|(ewYQd;Zgr`P0fxF%?#bT!@{o1RbR>d zPtluigMjUMDCV%uAx^boVj z4E)1lF!NeX<=7*7Z*tjakkA5tW{j)OjQjlF^B)vOEU&Ui132%a_VCllP`XLx?0i~B zYf)7fo%GG@frTL*SGO~rx*zH_T)zM{(Yu8?%6=avkCrWXl2PS<;~7jlYPE%WXx?q$ z@&tg2Xikyao}=U9+2e7}SE!c=iO;(o>(F@f`j+GE38*NuwaC&AgJRb?m zC77stV=icG(f*tx?Rvs<7cgCsxxfbjv|oZ(3h@dOb5SspSsPZE=PI+>=WX}JL4(X$ z?E}=@_S<-ZWukI<+T-`V)mEF5r5B5rV;J^!a0+S7N{Wyhl?@-c142hjN9GpbQQS~B z()LuhIM_~{{CY}V3yln9lN484pU#R#(_dSD!nG551|wZ*P8=JJhXq59hvhI>y~FA5 z2}`6GZDcTqOLB|1^OivtT=yEDkl_>r$}qs{wlubeF(oiLX^+FO&P#@*`LM;;wj`+` zSTCXrx_rTH&OXp1IDEYp;lv@e{WJSgW~w~#NcDqu&ZOEqGWmC_;IKrl0(?AXDG{?p ze3*J~`an~#r<%u=mPC6xW|0C1i%-)OU5hpnwimOa;@n9`bn%wMG)x-o&km*PxBP;x zZ!-lMrTC~~bre}acTr^;eN3(o7@e=E8f6~SY-d^2e4OlEYy%>-wJ#NOgC~Y0#m>5( z$BT-*Tc;X-tPVY?%s8jn`TiPYG|LZTXZhS~{vsb=7kyVrG0K z9>+OPVL1p3m$U`Q#9UXjTRu3Sq;guKs2gh>bLlb{GLDliC_J% zy~dC}?Q&5+$AbSoaQUAkV*dax;*Jg`|1mI3QL(XEP{Q_~UT3tMI@j?ysZQhGa<Z2mmnEIW6RUHR?%J1iU=9VGOt^0j0HmHa6^;1}xccJ42~?I-e= zm$NgjFGxx=q$%Q=hUzU_A1Dv%L#^CTU?s8`gsc+v#q+%uL=`ej_;TYLaml>GG7DK~ zZ??urFvmoln+UD2;a|e3>$IZ1S}|rh{m@kG7k(Ml$@=w2TcDUy&O`8oLGej5(Cu%v z>ml#KuUjl%mrNk_ctB7nXH@naM{K?}JS?+j3=uSqVY|^ku6hg*9`#@PWIckf96&@_ z6!%=Rw15X8%y>-JVmbR*>IVN%UU&@q^OFsnlR59aZG8;4CCamjZ~Q|}2Yd38u7G?m zGlT+m0z$WDBAg3mF@W>DN%)-*(nZ@QC#Qqpnb8Ax&ZE-i)hz53tNC4^wUXm+QWept z);EP=+FMo)M^RvO7HeZXsS91$nO5B7*63!`qy(W^xmUFjTO1rG>^$E#NhoPO$Bkr} za%6~@T4XVmfhC*}mOP5T0l)U<*Fc)WGN}kWOKg)(E(PV2=mw4;qeF>VI-+{VNar$k zE{O}D3(3R;YBpLjO9{J>Q>?)i3=)E-z6aBFfnwaEccHN{qmMJ}`v&Bzg~@unfbskYJrlUDlax4UTz5PG z?n%wkiEM$HmoZ|ITlWV36M!Pj9T6ABol6KKLE*qn#~zimBtN>2p@RbGvl~*MPHavd zK$&bA)2^(OX%5oWl%|x^<(twoTXXJPtLYd&kH|aH;02}hpnurd7RQT|H3`u+k5TiY z>qq_|e!W;1L=M^~+m}Wf^!cRDbzu(w;F}liL5XFbzjg5Q^WXm)|I>*6AJ^?a`TT#3 z=+$OE{W8%%Fl`|sEny(Q$iF5f>a-SEuNTXU%wqzY?Fq6;!*IB$NE~8V8xLiwiUnPr z70sQ0H~bZ0x+q{lGf&*+T@b2VXln#B&yKe?f70!F>LGf2y!g1gic0%Z`xAe7mzfz*XuC6XVSaHmNmO^ARgMdXbsg4*wlIzI&dqt zWOcjr!{HrUJ9!xS$+mAAhZ1-5Adtc{!8V%+KPwfmP*-BUXx-60CScTYmRgU^$X`#W z13bX9u@goFuhPHONnjTLSwnfzr>Gwx7U#d;(yO-iJa){m_e=;X(K^*J08w`^I%r*5 z&xV_>63+V)jiDzSBbl6sE3f(ewCj(52nIHsN#<^~)+n`a)(5-GJ_8*^4_0#@lF}QS zJ;1*|w<<18${D;@u3o5Caes3FkiurAe?-8wM3zbZeK1I+=BDX3frT6 zkZm711CXh`yi&RmwFED33<(3by|xXglhM= zO7WH^VObrI3OjTS0h1ya?co#o49HSv&ZsCTa8zN*YOfI02a!7WQXg*r+Ey|4U8mk} z@A^xMLJ?VUhb99di;rXy7V3dd`PSG&7zlUIS|BT5QVdOw?zl5D>Rn)@_@;&v4%bn0 zA!!r`MrXFOO6o{uB*msmLp0N&n%WIXubR;hgH$yZf0RWKJVq(zs7)*(x3{FJPO}V| zI7?l^A>XU+ATbn7*&Tte>N8#u^yu=iHuU$tajcKQSEBgua4y&+xy|hom{tRuUomY$ z5jk5^4H&PAoY}=IUhc^H!@#!@u?v|ZOA zMO5F^T_*i^8)9J!VTOJ-SOsbR9|m|tzw;M05&xxVvYvOJ`u3CSOom__5X@pIHN?Q7s4yZ$_`ZkW`b%m&#RjRYP13_8iL2@2GK zC%`Xvv;+;I^th|ZRV1Mu^Ds$fG$JpG;q6Al>Ax1?+MVWSl+4YReFdT!6CRy~*!=|` z>1`94xvHD>3)TTJ@SY9$O-Y^h6+OLr^hmBhxJmMTExlA8%hEmClIiWz?{yL?u|#v1 zy6pde{6{U_Zm^@J|D1L{{o9G>|KuL{e>{+XmD3azeU}X}bb(4C(}`2bd0Ub}WF4?o zdo+}M%H{&(GMaWbnn5dK*xAv?<#IAvLg^F3+!wTG8s?lExiDx}(QLU1SI@mrq9x}# z(=h)-$eHKOswRt>%N~!vUhlgoKeQLo2c2J>!j?#f529lm_=A5{)t+vusO7WZmGv|w2?qRkz_Q3;|TW(-8m3EM~ zkrtfLyf_zH`FeeJUjB}TEc4025$>rDOr15Y4B*mbsBMSr=*83(P^FT*Df1}`SsHP= zu}nP$;JTHmeT&x6uCEPz$NCHP@?}PfBNOiA1RFoR^j2l6J z1QvhkhIf08B>y+}P`t$`aj8k95xx_F18K#99S|R6qvR&XY8pT9gxbU_aZ?*>;;A?? z;rV^UDO=G5N*suUeaw!oWURI5hgJ)(9_3-Z_e-*OeaKxYTE;Clyons&z#Q(yNZk;%hLLDJC6C>)Usj zhOp{2cJt=n8UZQ=2sehky*DtTKF!Ab9u%y_Y6(|=y76KmV->MMf3QNqS}&Die|8o@ zdll?OE^su#<4J&Rvo)dTwPDz%o)6^mp^hmNFO75XN#{c*pinqF$RaESA`n$8uLQ`@ z_^z}B0tI~(r;&bLW6CpIyE5AH#K(+R6Us5#ZZ9mT)=Q5HaQz-ipZ(VbCwQ?}3;L|M z_y1Np|G&H7CJxS~az_7Uvy!3->xs97@}aqMsK zau&H7jr$OEOHUUH2k=^0f`4e%_IB@QO$}^iVQbh8(ly}rvU34Nd;OMONHZZKx8ZCDwCuHL- z9~hCDiyc4yzLBbw>|4!Gu>>^|MpVx)bcVnQV9JI(G^4OHo^VNd%LiOhlF{^+P$j*7 zokmG`H zR8c@e!#3-|GJ05U6;iV;VLH7SBRx*sYAd^BjlJb`G>ZEq<;0$+!Oq*$n_0$^_m`+m zGnY&(`hs2<3TI&&ZrJ4g(0$;;oF{ohXpk_QFc~2WmIIawJzgg*HnQ>(ZC+-F1Y=jhxi+JB zEfF~VFirlH`|PHc8-;fZRYuQI;`yyR>_yM_$dpo(!c(3x34W1p%88t*gw#@wI{6egwBvHg^UJB>rVT?M(aC)iYo<0{hz0S{zP4}%(`n0zd zeJBV$!<68r)Eo740h^0GXQWl_p7nM#C3l>215-eH!_{F-casci?VEfIx60*aI8-Ed zdPC#<%8G0~zWcSJ_iF^er01_Sj>R~)>~NSFecBwgNoaJFSvHwTOSCx-1FIluk-9`y zGzaVQxMiACZ8Re6oo-yEI6WPCh7BsYm$mR1Su^Z>Ri3tkH$&3!01ii~I@{RFB(;!w z898rVJhdkJSOrJTg6d$z+O@=YOTO&v*8JEX9S^tV~u1x zjHv(*y-;QxGex1NTi_;lHAL+4O_7Xwry(7)QiY+QV6h zGK@U@3tcZ{hOQihg}%5O1sC+37^G^b?1&3G0Vo3xjMR56W(`%Df_{#Uw zZq^zSfMB0H;WbV8K!`v-9Cy~uAxAEd0N{xgz`8l&C=>>NUFYM0drrnoFdq*e zP5R;Q7(eIWY3`x`N3bPua*dxW@HF?c0CBAEL3=pB?_Fctq5u#ej*Wkex&Imsn8)_M z9Ak5B2Xx{RjL7S7BIrFEet3?-%j>rXUNQUT84-by{$c$|2P_k4hx6foh9ETdOg9SO zlLQDo?y6!NtxjBrK(Fkl5&Gipn0TfNM$?@TLHdc%2&-DP=s?Co0=d= zXko<~OP z$#l^FW@Tx0e1*qlJ@HN&mXlE@wj9J)B|u>)kOUDNjGD9pm>nfZ+Zs$hmhbhx29$A_BFLD_N5J}dyL0DLi7gArY8mMs+?~WS7#gx zGvFV}?+y5Wc&}E*@eYrgvc?&kU^!hfUYcPX3KItr{a?P4U~#aRl@RCn=A2h*nQQckyl_(K+itq$n>Id4(hs!5T?m;BOL0)58(vS2Z%)aMk!P0(&QO3F zmfhF{UNLhOE7%Z^3#!d!k$MX$Es={u-0=m2`DK)>f072j{Z1fTi}6`v7M`z8LyQ!x zwx{Yt1%=7HEu9(>Z1T%eqS3ntSM8aatOWUnL5nG#Y2~H|G?lK@`_RTLFLy_F^_u%^ zM*;`li03VNlj9`7-^?)){C=MkKZ|F|nX)nqUCK?4w$bFe$Ab;^2q&Ujl(J%-HW6iw^eICIvqERKV?I6Kr?C|apBhjeK216c#c@z{gidRneU9oOQ27|8!fJFi+Z-D`_d)d zPGF15&jeT;s+o@;CQ9c^$-iv9cy?#;-%4>q?Bbdhtl=R|`|9+PYBKo+gPz_qgW)#n z5^t<=1)a50=G+GE9R;g9pl;qd)l4;>p8c?rWk8;JaZa7Q&x8ppkS|1#C#YW77%S5REkJ4O11li9AO#w$ZJ?d0aq>s_b{2I{(5 z#2_`@Oh&I%tt^E^AQ*gESZf4Kb8qxbFG`HwUl6OCI9I0vXMCtC*O-aUWHUiBTjtmS zR6xApWcMiEGDY=MD(xg7r+!p$)SaEOWy%GU$kew|4z=BA{`S)k0vvX#JfJtK~%; zjS=lGZUNt1SMve`@su~kZJ-10luKcXN5SszrLS9N;kJyEqq;TYdKcTmcsm*)KKj_l za5}rJ$j_P%4lFl5@fI7#)5=)5u;ap7>Lkdip_=sqo|-`~tDwppa8XQ-&-OrN!|3JU z7``z>=!kt}?3n*pXQwcbXN5ogMeF0Ama3*aH1L-2U%oVA{X1~-zahXXX0}#FpV;KT zNH96ezxwqYHC@HUZ|EOzW)tp`+6koLyLLm2`DWT$DOqrZYFN_Wd}py_JXUK`Q=3Ca z6>r95<$NiXSDy{#mQGuZyTUVtRO@NA|j)mae9ST0VD zpq0|7sprK#V3WJ5G#w+EsUfmv8F z?6-kebr1A}4=|}d*Nb?i@bn)jR=Z6&`hv1^yv^^HMsEaQPgXx+aD*LXX-o0%yxYZvvY?LG+tGLgP6VLrngddUTe3CRzvPB4x1})D&d0fZ6PBLvG_P+E z9J?A;{Wpbr1yBHhjMT>$O^R%o_Ng2e)YdEu%cG&P%>z9@o(*~+Z7{TZ8W`CQEP`~9z)0;HJ_9LT+@VnbSSf&Hh+(;fW$@%Ile?2%zFO6h{jG zNm}_-Rw@6+gXjp|%ys#`>RGu@UHWT$M(#+kv?hOPeCzmZF6y+1Oqn>zeOP5t!Z)HR z4{4hcZLP)J?I-NBwc%&VLCs>4BnzyV*mSbhyb5-SyH?7wHJi~aznqgpV+;>Cgv@G= z;ip)w5 zdh0Q+=1w$I8Cf+W`@L7HY&?aQvR>ky+U)87}G0Qom-;&}M61pvw zfjqw^UwZGdXX>7izF?d)hsYjvrXn!ZVUw2Jy2bQUFX63l9EGcQ8E|o%8V;Hc!qf22 z-|~SM@{pEW(Mf2C@<;2Z1^e{JpWjf~cWt_y-)Sf|g9A_aNGLqSRB5f>6?mtf5E`q5*HC!#!3^YKQ$FT`PpyM0t zOu-{{xIk3)4CPgex=hcR$2_XvuK(Zs{A}c3f1~{8`fG4xM^J2nGT-Vu}}Q$9#L6g z+xq+_WOAkW8?^ahk0>v?hi|(z&fD0%+_dR&*fd~ZNX=V0^&8yuWnE+~O(vF0IT+-t z!WCJ@tjP;Y7Vgfl7&3_&)8*)M<@C5S+DAzX=Th5KXA_~k;_fXIF63|8zh&?sP_&h> zj{QFMtnLb1-bzp-MPc*gNMXNUZH+FdSzfZ2?IKN_bIZh_mY!QY)l#9zqR2cdkI-Mc zW7obYj4Ab@j?<^{<1_2hHQ^XYsjw8f*vbv<%v6ooZa23CTZmY(?a(c1yks}7j&!rJ zDiUxMEef_UrdH~%Iatbf);_kGMQ=yX+5gVW zB!=#IP|}^44qvtzRFPiK8;hwLyX;h&pY7zxdF1N1QAcn-&M<7Y>yn9zH>n#N$8PY{ zmt{?wbzN%I6zu=CiGAAIp2}wE%$4XJna$m1^QSpy9>PxjV!5@Hhagrg+BTW8B}bx{ zkzdYksm4{u_-HH{P*F_R6(# z^+tFF@=n2AgBo1x?g&YCH-x;-)-v5%&)iBgEKy+% z$mz=#zp{6hQtC8{tjsTN*g@`frcVi2#~u%9m?_-7H2M|SbOm>A>1`K}0BTCOF!net zKzVi~Ig2A)lDb%-oxy%^ldL1%1A`Bh z>F{VgEMs~aRMZMp*=4D-Sy0*op{R_Bv&4JysHsxzS|UXuC8!!QmZ|kJB2ghrsN1AQ zF(L6GvJ~AZu^jwE>W#^@e;xPCL?+j-t(w`!nD`5PjpUOC@B^r`yS`EFRLQ>VWgj>Q zeeBZ*SPDO<>!!+SJX77(M5U~57adXE#2q#IeV>-wGn3c?Yt744umejUjc&Q~}6 zRqxgtptWPykCv5hZC}bn=`AiF7NyX5Koj}5yF$jH61V3*TH%H}#(#*$;jB3`&!zs( zEoc3VHl0HC@HV-z%8+LqLvP^P-4i1_*n>uE0(rOvj&qk6^1-t$=u0Fz1dcVfH4Y}5 zt(g`~SP&~Wh8kNltF7tkpd%y*6DaOT!%bul=?_!@V#I$U3oT(JQ5+d;Q%H*=nUvUOPeJ3Kr~w`Kt8m`O5Tn0DkQ)z_spCLfSp+!LmN{ ze+Iy3;q?A=ga={a^bR^!MPFbWey(i#zDz| zzBxwGdqy}`n`8B1MoglqMpD4Q4IFni-{8Fs05pz2wJQBTlS}jgam?>O_LPBn%L^(7ltN+o4+kq11*XlarDBXpdc8z#BFY=h6h*i2LXDm(R45Ub=%E&wBKpXG)N0 zNjp><%em3&4Drwe2(<#_9oHF;<86cw?!U-hV7Wky3M<%u-E7tSiD*_!p+SR8 znPdJL2z@3Z7;CxbCefBAigMB7>QIo^VgthjY}N^jC}J5|pIJjMpgP9zR*rc)RY}=L7X5O4!t(UNZtJ~ zGPV#9At?7Z3@EOR$wVl|i;oW)FvP5DU5?({)Vr-lM$90=FI>``q#ivpK*>GvbmGbI zq>bvUAwEjnwS2IbT7r%QO(O7CRy96r1}~g-LtcJu7(KhE?y}IST7D__)chWMe(Ap8gd zNt8_q)G_}~FFhQ0M`)WSpM7sV^-it#DGn#X(Jc+6uJyA|0BOI+()H;XV$oWukT@bo zEN9Z^9*Ausj{JOf;lZo%!uyp3`KUU^N&QsHKquXyF-oBi;{Amag`)@p%b5La<>vT&Fb=9!G1$9o93rV=UA8d<+hq&3yuFlSz~wfPr* z?|b?&hRtwf4hg~MjK9}zlUIu<{zPX<%Kcl(>AyIp7IpUDui8d5VCV(aGEgOCQqnEFFD)R`h(_;8T;nOhgEO))rIoRncLg(JoacoQiJlD5cKF3TjmTImh> z1+Cs$g1Pw%k}#2aFlmV~CSpXOZt|2-#_eDzzhs)&fEJuzG9wMDaY|tdGg#`P>ZY2@ zXl{Nvr9!@M&UACgD!NXQLx1tp5q@gi;SKa);Yi~v!qAOHHI%`zVkFPuFi|iTEw#$c zpWoCh!V{7QM#cWG1jGN_ zk|Y1u*Z%@X|4$XW>OWQN{+OR4c9m^4B{g(NTIU~ELBtj0>>})~H^KhQBX0T7BlR3Ud8*{Nfmp8 zbi5ec%U}3(OU9Ky?Y6WZgcvn8L-7Uqsq=5i#_Q6yzjYZS&$!SVs=q@x{t>F_gWqjp zVeAuea7k1&mUZL#v7G7V;vgzy+^|-9Q9g%rZ$6vX|AlB8Xk$MGOlZ5zihO7z)lp0T zoR3^LG@0&nEWEbX!iG&|W2;0?vV1Lb3UG2ISoOR8emS*ZG!weu)w-^`S|<^OD{8s& zTOw?@{>Ly*jBp@Iw3X{#y#8SktYrUI8XsraWV zMCsw^kJb@cm>juQ{KMbCo=gt{f1(ABfW-}(37aDcbt+Osn{jWOOqXX-yw)7zMWR{qg(GgEV9%2*|WSS@q^Ho?19f2ev@Y}rH z7x0>U7B5)vq>Q~Oc;pQo-L5tL8oQ#F!j_@dRty&EVo&wUEU_&OaKMZ(vnw%{G zAI^K%w$1|whOA8e4eaDLgO#2#*~f`LUzg}Awtws#UBNS_i@Ubr!;zG1obeD>0k9>0 z&Wb2|biFBoWPJOzA)J*~FGz`V4{t_=(Q`>?BH0&Fud5PQhz6`mkSR6n2w*Bj0p>pB zc^0!&6}O1mH;)K*$!Zb870?vjeg;VMU5CNJ&M*imp1uZabsCRG>;-<#Os}P?I+UR- zvFtieO2{XiIosZ1DSy!6y$9S>(hjc>0L;{P5KuvpgjP*;LiwIce!Oc$DinR|7XyK;XZ@$>20vVAJ)&l!$R4-!_?JQ4* z%)gVMnQh0)utbFWj8yC%3-Iuc;w5jOXnfis<2y-aqh2y1ipY2D#zM@Sm2>4HC5VgOTb$p#a<ODvRxXuu3Nouw%s1ebc6;%4?mM*6c!h>;22nFMbIXs`7~fDxO=czk#vM$=i(fD& zRO{*WrWN32U~X6jk8o29^n-KB*4Qo28O_k+&FO@lX_yr}`5{NKpM-YUQX?SUa<&-T zD_Hp$A_F?o%bt{FXjRhFrQ1DpLHz}9+GvF&XJ@DV?WAr85BuH+$nRPSL1hj>eeHCS@j{H!bCIl_6T#j&toE z#AefLVn4(svi!`J)6TJmUcW%)7E^6h=!i#HBUtlx#F@Rw)tJf&r&zmU#zX$_U{p`a z#M5~?CaH#%3-6WA$tWP}GHN$cgpj1pm6Gm$Kg1`Ob*Kyu*ZKp}>NYdqy|AcbAip?- zS)IT9p2Bs$LzrT>KT^6&i=uvBaW0Zv!+3^Xejl5w&{S5Mu8lb&W!pj);II2miO*(U z{ms}9!*F9j7xJ-YTP$x<%o3!C35Z;1C!^l$U#f@N7(P7Hfx0_kSPFYyGbFimulr6h zlsJaP02-zj)3#~Pk3lHqoH^`~Ob}>%ipS@g67^;Z*PnS<5s;B_fHCV_Ulmo|v8g8M z<{q@5fx{WnFGNBWWHJvyJ;S-8DY!ph7qQ|Z2PqBgO}NR>qb^GK$fD959fvfPY(E9}u7ujh!tNH{HCx!=8;bGwkIuNMwB$qo%WISN=MSwxyUb^KaZP`$ zFWz6@B_))(X}_*7#G#(cmHz(y|03-hqbuFIbStXZcEzgLso1t{+fK!{ZQHiZifv~{ z6(=`!zHfB*=zH%uJx2fAWA7j9-E*#Y@|p9&BGEQhzF<}sOL|;eO(}@QKuikRM$A(4Zs$3O^2{S-@zqZC-3_q)FKw(5(=w6++4&WnwWzy|}yZ+Yz>RaP`B&ocy|Q z)5ex{7V4@Kc9$!pDHj(f6L?y!xEZaaz`qVKfF3Nj4?QCZi=(=Ymoz0QaSYApTC3~~ z^**7W-U)*yxjt@2R$$axNqLl`Uy4mVN=r)=f_`g|=@oZkysjrwqK{;q-pNX1->UWK zUs$&n;s51gx@94C*Pc(zF}4SuOxnF1YsC{IXygnD)zBx$HP{qtL=(v8JRX6o^DVr#UVfyskB^GYeAyd#<2Qqq`Z&#hDlelmnnW&;NcyFDm3d$-#> zLi(2MF(o-K?e=ql;|8s0VL?hDgQ1DR$Ana-M9EDCX`Wz7`Ew}liFi)2YHUYqF&f9w zQQ?x}_R(^dCGw0gHLt*?i>>MIlM7nsyFptkD!Y8v^G={z)pTy$W}STke;GgCulS-m zDi^C_pF=r^>0H4##de`wODX4UQXz^jCf0hLjOKIWx3)y3l}kq~+268{P)1dJgEAC| zom{Qru!4UaeSdx+l%8SfWX@{4r5;~+niGSm8ugHy(#)v3MGo}M%rfu3X5(0=jsQ2mOHtGx!NouOc_-syTAnaQ|mQA$}o z-d$6?mH^)kq*v&KNnH~8k^L-w#f__GQ#)^knGlzWPPRrtMx&;kzC%2IYuSDTt6JRf zJVJr{0Y>ZY>W~FX5)2%kB~8HLKrb2Oh`TpT`~}h{vua zejD+TF_>zb76&h|+aANe+fEhIro}MBVEVeFdW9VK2GNo2~)o~F+m*c)|$A@ z;$$MMsMZnhDAU3IfA;r{q_Scy5$ZZXMLRIzgx6fl+kg9%QyUMknP$ zCpn+KjFYFAw)pvp;`7UqL%R~=TXxSd>TLj>#>fs$Q%FB$(BQpZ5J_X87JsiUv({u% z%!8`H5?w`Zz9nX-vYqNM4i5Kd89V2Qd5E$_kWHO2Bj@-cLIrETLq%4OuP$ou0cbfS z7GxSk6=_S5E(jkq9~B>VZzE{>1ORx=GzeV{x7Xee6_g5c5vhW)-(@8cR3&u>{2U58 z!`P;=2eT=0n*(?h_-I8Bnp3&~5*H3}T?XI;?diW^*o)8xxhV!9f#&SxM{|wCt?f}b zp9F12_6*V;0G6q@`V_$r$SSgy!0mE0*Puq^^BP?iXGB*BYhqX0UT{cmL4clLG=gWs zwgD(UnQP286{rpon^~`A&fauAyy~{b{wnl@6adms51JIX6@A&*Zv$;Y7`|8AkK4}+ zRNIfhj}`%k$o1!T0GPIZGvYcQfWl7(d0otQ-7nM&y4Twe1eDtk2$+X2X8W5je-081 z(z*zM-ESJ%Gj*E)`ZdOD7MMrBQ~8m_qZzfUe^YQqs3!9pF96T)0eM}@HX5~SSQAtO zf&=0=!U*UaC@Vro%YoC8>PAv;}uQ!#eexZbnH4L2N`wk3PjqlqX7o-i2t*3 zh<(gk-2h83e;9}AuZ4bCOeRsY~|Sh>k9#)#kqXHu-xP;=)KVdq~DMaR2c8T z5y%u|3jNn35AhZ9c7UqYxl~Rwy=$$BBKfki3SD29S}?K@p`TL#7vtCI`-r*^=CpIt zBM9u~^r7uSJpH9er~@L)J~P%#Lu9#Jp&rJ&(k%6hUuNlyW8Sl>ss^kp(EaD#@XTl{ z&=*2_y(q@CYvFkLDjFtZt}rxr%N!zseZx6lWbO%CfM`soHMT2$cYq851z6A{ArHBr z`2db*4N$a&v4)Sp$fWVn#+o8~=ed}waE-c2j{478BLf@te%B8X62>zY?yp@*iu5Y) z73^H~pI;4=lN|>KzLwYpt?111AU{ocYXyhRhR8DYW##NFLwJ-;4T&tr8@{QCVn#!q zVK9X`+u<0m4MMyq7}RbUme-)?Hz}a^jGulIbq(M7yOpE&Y%?JraYjwc@Ipcg24V$W zG>;*09u}gCbpxQc;7G;-uUbjobKu#LjLYxnY$?_nNYSvq1?rMDemnXm__+c$z(2_6%H;Z z#b>#wR2f?46JEY}TFyfCUDt%Ix68L4y3h7TK0|kh&O?dSKti+LhqzL$67QH9rtkcy z;inH~(70Ki3VBTcxp)+Rsh+>zn@U`wB$Sbe9^#Xlx-P3o07+yLmevZAv5%y@aIQ#@ zUhU)V7rn|VyJv2rOvFRUeUOypu`=m)1(rN%fc;}YELznpaw_o zjnqPNnMTZ2nR8y=fY^?-a7E~|l;?Gm*URcmDkfFdFBZT|a-Goef&qNd|M65Cqe}fBnk(5U7q_7zv_GX+)pd95X;q)Kr3!Fg7bNKIx z1n0uyn+){|M|8wM3TG8jBSL=6h^QxQHH5OKHLjZSma+@%sa<_VaE8Gdb?X`I$@3#i(WsH={JZ+g zj_sVV#(qU6Ct*M#(Yc=fqHrLGl}6NFiP+CQGrVo91wf9tj$sPV*W%LWuEt85KJRtY zvTz8+5!IaPqVm1LU$XE!>0sF&`lpW1!U13{kpMkDe7q=#*aTdjvi4SBq%xxiTHd1zOb~~NA6tpZG7(a5A&Ch%t z@x>=_^@;)XK9Q~KmTk1NA@%DKFfR~jWZboO8H*f<917x82CPDX<&B0jhc)O?HN~Nl z9t4yXiz?BSKPW3^wWW8AXIMmQk*i^&2@merH2L5wZFM+cqjx@Bn^cE#<&kSO?g%3x zlxmN0hq}IvM+*mzGmjVF!}2!F%jsDa*|$<_)7+;Ra)>1j#7lw&hbvR@W_E2O3x-0F zoETeAt2^~g2rGPNj7;t5iKf_tYXGHi1TV{ZZi6;HF=8=UUhWtw6k9gbOwRHx217^b zcK}q>U_O5QMTtB!)<tryQ>MXM)+*#{S5^J(3T+^gd zk<%+`PK#=+5A{+`v!C|4{ve?4~2Tp zr#Pe?4p%?euQFdQ$ES6+yuYXpN(3p^Du&jg?cw>$SB&PM@>nZUGK>$X37yW_;7o^Z zGL$r(1^W$vC+#uprxB{V2q9R7&A??i?|;t7g4VY8p-t76a8Q%!Zx1X4EQuDi3Y;x7 z;BHk|+IZCo)qTgVuR36!ym%APi?_XuSmnAQEG7xMGvYB#dwGvFaj~R|(9~PyE5>~? z-VZu7?o`jmdd-n*8B2Pg#h`cQ0FFJGBT(+-*cl_{~;S+e80#sF&mzV`nC2 zcSLk1$M&=Q;X6hjct>u%R~4nkIYS>T1o=SBnE+7bm*W=`0eT?e%p>Z$#dfrQo5l@N zEwD1~rIRs`N8|f2Nec@4F~C`D`IYDnxXmuCPVOBlANq+-joK?VjbaRAFyb0a7+!*` zb{7mb@KJ;5vAba$z0t8vkSb^BSA~R?TNhpBU5$HP(U_U`#f}-gvGxUg$oW*@iVF(2 zp^Nl&MKp?4KfQEhjGb?Up(g)(2KzlLJcxa*O|gl@_n#OkAIv`( zuZAw&cdN)QpGhtqSCX4g#2z%$0oZ?VK?Bj()#RVmM5({6CNlmL5=_rg&%|EO>c3q? zqo`i-PhNwd4>Onarp47=i3V`UF27@fZzvV6ClrzWadlEj#Aq+(c%ENAU-T+MArsxh zY@4s|Pmi7+;I@(Mx!tN|RosXJ`VRSu%?ccdW*B_?c!BUKUkgsW5MFqZ{dt0`37ZbX||Se$)!;@%4Aw# zojx$DgG0fdw0+Igxgjgky5w|77|282!get{11MGrV0vH1*vA!OU))G{@!8K7C{lAi zf)kE2k+z}#$PG+Dx7~iFUtE*ax*g4bFy?)v~=Jzu{ScZ`rJA!U~gpjha*DI z(&685ROKs$PkKTw_&IBcwFX`v(_E;=q}MOaVCIdA2?2^V4LJ?ubISPX!*wky=jUCH z5g(A=ci~$Z97Nw342rWeuA}WcY>-9yMQcdoZ+~YxOnY2yuAd)X`Mf_O_ei=rCq90PpXL5H9fvjaTc@jYNCBk%)x=h3gcr3Cq0#>?qWZ1+P3ppV@SPrKg}o} zd=4?_B$-Q%i9w`{VUaQhe*lBAUPKC+EZu&^c&$>ICHkcU0b`!8RTd#3L`cMn;F_z9Zc}f>}Ey5#_lL8q7TMOeo_&iMwjtk=a^k zQ8KC&*JNO5X)%@92ZbE+%Ug4yx=z&$?$qWazPhWMS#uVU6x7TNV~#OrtJMDktIEt( zrQZp*9}5X94oe;;^yy_US0DEc)iglnruS)S~fKQC3u zCFy-YQ;6KQRZeASbl*H^$38ETZMBV1ZEX#~yRx*el2l{3nO34jgX5Z`5tEB%gS5=O zJLhrYY~S8f3S(k19EWS?qjI1wN-pEqYaEo!&i$ zhTOG4mn6uJIaAgaI(rxZgl3R3Q0GV6P9GEu)g{j>Qz6=vf{u|lX!G+DH)JMVS|<7^ zM4SYNqT05A*zCNZh3ya`oarU-Q5wrf{KBvJqc7D9gQ^p^{qeVvJNR$qMBOk9_Lv|2 zD{w5{6-co$u7MBDw)BnB*NIvcHhW@}b&4nBF!Wj6%3KOPeTZ`6TTEr?=Jj}uU z(6rWiSsfewJJgvHH;3vMMp&}mq3-otLOg!eKg^7nawa~*PHQV3K#wRLP&fvZM#jDd zaLYW%9{)@$c-VH{2GXjsCg8aF(dChQ%r%n@lV+v7*!S1Y_LFSd>cP(m)Z@S1d;gEn z_5Uy#|Ki;d)-!Olv3L8It*BI4Q^7Vu_^@jIUSy$0(^v^AQ7KNti)CF{s4RdaZg~=@ zxVlV9qX$hP;WsMZt8r1z{dAgMjfW2iyi0Mo+u#}7n=tNsR%l47uFQ*+XdlM#2r?(M5mN{~oTp+p@wHz8LT*^?vQ&G@z^1}7yesA4mi3g&plXIX6cMygeuAno_oraVnkQ3oudjkG(aYt|B21Yjt&WZBa6I0 z8#J7lN(B6mDxfA;Olh#yf*sPIK%y z<9DX&)O#S{JZV7G+-Ei|Xt6pFD2=NvfbWu*{x#9IRrj#5;c13E;i=v+e*8)l-tM6EDO^C87L@U(f6u^iB7*BhL#;VFxvZEtX>BV8gW;0+H}@tQMA| zVX{;QtK)sKpejKv&R+R*_%C46nTBmn8x5O|md&Kj8b^AMPmk@m>$@Ta3Yp~ToqHzp zif~e~X%%^ik7s*i+VfwB4Vkms{Ln;UicuQ$)O{yx({jUe!B|l`Lg7(MT1s4lt1Lo{s|{JOV!nM(76UCg}PQ^jrE6j4=ki z;D<1Vo}7VQFb**<8P*M4dun=O3|&V66#az#L_xza6hYIRDFX`dRl5%GMYe1H7OuO! zPM&<-qxlP|NSulIkzksH$#wvdz=2P~Ly5Mtx~iW|yohH$>Y$J|-@+6YZ!F3bs7`n~ zx-~4ib6?p7ZsNT@!Yj)USVn_xr!=(o_Mx=gWUbCE>%8E&IrZ}2Dw@x(RE)x#jowXRO@U4b`01@aJ|GM3@byqaU4o`EX_Q zF)<|=usw^!c}8#97G;Ect20cfLIL4 zy|wPnr0pCBoG_u+7~Fd}R6=52XH~BN;a%*{G7Gu8>0)nK8ClI~ZQL+NEZP2Qu{Nx9 zcP{8*Ow&{k**uOgP^w3d94au-EM;i!G?q-=+x)~gl&&GKP~E4h8#U=OWt62>F4xaX zbDb$-ujEp}4j)Q+cC7-kWOMto2k}{SSd7coilA*S_?{+y(QS0cY9u~fT;)<9uP>sv zXsjolCrN(DKR3nJk`gou^?~)%mkB7%J2zd1e+>MVT)PijF-4KuG-|)sB*ilRRRP#h zckph*#+xOZ@rpc@`>u}6+@D%InR_a@(UdV-8YHfxSgKM8LW!$*5+g2_C{J0aG*;rM zT1Z5BPl1B}c83s^S~pqTqLLqN|NXNHoYkE1u(%zNWoYi`KR+G2F$xQEavH?Z8^*W-)6J#H5z;WMiHG5uI*}K@1;1T@anjB`i;lN=VmsI`u?SGc(Lx`Cr~J`G2;94oBZf;3{}@7S_gZ*yeUGC4neEU&1nMRE!DNW5ab$Sz*DNaq=_ zNXO?o08JPsqJvm|CsWxhjk|I_9)0`ZIpVyu&a5dJYTg}+7TT>6{d6crn49(lwEmF( z9kCa+Fi6%@P)hPZ#4y{l6Ma!i@}Oi$DvH72F|k(UY)%TToS3BA1nZ!u#6NEM6+P1tNDqO=Vd|YemCQ4&=i>hT=tARmjh!T_RN&8Pl?gvBU57 ze%#5cs}y!@_8)w5ot*t>?f7JC)8xWSI=zU{MA78$6UIJz+P} z&c+vlnMWAU`Q()fxl7eFiB_9*2))i(#qbY5^_zf?V;->F6h=*r&+ANc7W7UKzU{B{ z!l!f2rw^t^>FHT;&Rb5OW;_PF#`1caUJ%T4= zcxFhgSiyolFns+D|igy}To!$6AhG1(G+%@d&pi1J&4-=qgb`Lll6RM^h^ zaz*Uwznuwu#RPx>e7~6@xZ=DCLh!-5#@X!;Ig)b$W`oQE+f)Kn5xiracEW8+0jzyp zusgPXK4<_ozg)q&y7a!_x^{za_CKcgG{-!!0C4xap*`X6w;ljMR~p;MLtp41V1W92 zAf}7y%X(OJQ7}N7811J(V3&c;K`+1Dyo0-4;X4BD^?=r3FNe3ue1X^H0{0E>kpNaG z$^L2_gLt+{U!?dCDuhUrjb)-D_!DD4xRA!Zll#P-NMN$OWP>KV}@B~%S5z= zPNv?WDvu^SZxQm8-hBvJk^HnX&hNttaiLos^xgvE6c6+s5%j*6jNFAt1FR8-k6J)> zJSzv73Sj{Xv=NxEl2?`rL2(W_A)M?dnXf-D;sQQF2?QwfG340&G|)7NkgSr7EY0E1 z{vJ+S;8(GQ`kyMkOFs!qRJizBU6Ea(U9rjio`cEA(YL;A0&RkY<+y(g6OK8OFmhA4?lZ1Ie`9lqkpk)@EaOm zYX|Q3$+nX(IyfzmHmhr=cD5ED*WTyT!1wWh@<8%{@xb!zaaB|Ob;^~0cAyW6H;*Tx zV(Rph%cH@W`Q!B6Ey83aTtg*x$m3UizAfH`Y^3{QL8UF;_U@p=>e(G^h#=1{p38K` z^S$6VWJi77d2~V1OP7}V^Ffk)htRJQ(RS|*b-X-xmp}xqFjYsHng?$=qigkJKYE%8 zb}rQN=J8}MG3>izsCt1n%!|%9$qyEUDOl4fJb8r1tgo_oSCKNQ#fE_2CJbi(Re~ha zGs_qMBmhl9`a4g}_dl*;2w5B0yV?FBl={ER7)n+O$SNq_i{G%5l!#QVsMKo~I}kL1 z9^l^n#xF zF*CA1tRH0@WhKAV`Fz|CLx1T9>>Wo4L=oYMsNjSJNQn7At*_R=WY!yY=l+Nqe_2xF zDR=E4&7~c?RJ79Q8!R}|STju1YwTa_0$CJihOm;7?CSwytack9a+kg5TsoTQSfeFK z5~mHeSK=2bBPPu(ZPaw9CL@p*&qXN9L{2ie7L#|JHi)9gZKt+@tlQzp;5tB>`s_Yh z;L$!?O2f0=N-&uivS}G}ZcT+k_bmGVJT90zLj|6W5soOEMspf=q)JE(k)%s+d% zp(4LbUT!b6IZHb*4-7mh{(9STz|kNYvf8GwmszDIdwDhBUiMqh#wO`)atWCgVgosn z1I$vv0Z1iVJT0sYYcZ0wAmdn4Kd@CTQ(`^!u;HO&h$u#Qo@-mR3a}Mri4tW*8U3*) z3fNFfiRm52Ce_lm?;z_#Gg(~$Y50u=ynsh+gud;M&nj=sbw1}+Eo`UxEy<4@YseIi zjE7V)5Aze2!B%IKbknCdB9B{);gI|J;hD>`jHpy8FfmzmRyn`Zr>b7RZzk3 z8$UD{o((nQ?9_(9Kl2`#kru)|0ZbJmPvX6_h=PcOh=z!W2tLSWlP&Y=VTvcwLyLCa zu2Lc|jZEUDO-1+LjpHK6tsuwRwV>Vc91&sQ$2VOb-|&FLml}Sf`-TwBVm3m-wYR%K z_bXKwD-)@CSXT;QA$?W&C>9g=P?{hpdGd_$A!rK{Si$)P8+#&S(;;A^IirDBaaR}i zom*+ve_HWQUt9=ygK{&tY&Q=9GDDs|fRS>FsCXCnhO!DewucM#N?+adL8&8nS}8+_ zPqO>GkIgtR1zBIa7uK_K=Ha)mAL4h2+5%lg(|lDleW_jyasCR3+OqAWn#~~{LXN@v!&kG8jmKq^ zHoe0n9dJm<(O*I4OfMX3Emu(amF1|eR%>02U`pVb=N-2y;OjX@#ksB}KnVBX=(asY zQ_K{Wjn-@s#cGVs`f~+PFm9d<2!Qra^^~SOED-WDL%@RkJG=8g&k+8FWc_!BkTmLm zErc?(Wr{6{r}>SnZf3{6@f>efbdN=cFDOIUYVhW+-~y*P%zCo5 zK+dIBzNy@r)T>Ons%_X}D&b&}c`m%M%tFVJnISC7s?}LN39?giSlTeFp4Ny4jjYmq zbg{&uw6(NRq|taz`zgr-SLy=et#I8`!J);lT>|>J<;9~)&e=-aqTST)9MU_YPN|e? zbU9QZ$v|qQ>VkKUX_v)%TaDpYo`cyc^-`G>h^10zt9_~Y4=FCKqY7x{JWYuR6E`}I zB=ZIJgH+Nv*dssHY2HZ+lBor(U%Q2QN-k8+{L=CgswBfr#jX_t%b^(-N@U+nb}@?= zQx5aGUQk;T-SzJzH=G^^w5t{zSY-OvYHXQWcuwTSttopHSJY>G;E%ka+rh*lrFqCD~tlcfya5$o;nZGw0S~a zYDslXIkmoNJ6Kh-78P5-l@G$!uLl`KD~mH1pG!;sa#}5#@8{sko6qOqDw^Np;L4qc z%XB_%kSN~35|SCyShgKc95BEupSW?9AgrJlojMzpMI0ZP8Uo4YE9}>kGYMV|;8%_>r+Uc=wjs zWW~ZxHlEW&gA2!v%I z*O#q^u;b93!Q(KMrNU(>i420Bqxi-z8bBtry;|w0`szH81Adair^RG03(jQ~L&0AR zA%}>U*Dw=_xgecNcaeY8w;(etdty7Pl*g(#*C1=K-QhuEqI zs0g`A1$01Ei;#;2LVTni(eV}&GLiRrj|rQGXj>M7cJ})0%{M}NcMD#=!L9qn=> zeXNQh!;f79n`BBxVn$5IzGb3>ToN5e#YKN02kv?t9ao&fhh%Om&u$5LtKqc@yxbm^ zvX^~OGGB>h3VX2MOj+_zzC^Z4eWwO+b+Y@XHp?P(=GXa|j=+52jK1W*TXG}Z8{PJn zBuxfS>{x2Eg4aKx)sv;O3LGMcY)IN#(i5#9DoM=8nVYRnJ;L8DvX-?6_Z!HI zr1jqU0?|PT^DbIsPJrIwNn_>InLM z7IrIF1AYGW;U_&E5GmMRJrjF>E{DUG!2B_gcKf=>N6o5;&sL|`9nV;9&hOcem{pO{ zFBqUiy4VtE`(WR;vL!#;?KX|wT|Nu%;#x>;D2^aAu>7o`8$ic!{4Nk}ddI>!KR(aL z=+foYr0 zZHL-GpYej!7I<+2P%U`DZt}iK0nmoJE7_)x4qu{AK;Cq}!1xhlMPF@nz%~8UqXTYY zXf@vavex5V1G0bnaJw??;`i6zbJ1PT+@`58VQm3#!&nZ#-rLq*xBz*PU4kc-O$Jpc z!A6KkfBv4C9h$BeI`cgZct*bp*ITWS119cgk0kJZHyEki5VIF4hB~^PIxGR&T1HvC&Wj3S4@sC-U{{P5OupL3gFS9=V-%pX_c%K`xqZiI5R_ zZS{1Q+mq!yW@+;LmZS&((`s)<>N$>*bVVL##R z)9-hV?2SB>9VPyCNC&gSGwalSyK0o3@8%TZL`7 zNaQSbkBsY`JlcWPEWV+j)KJFwlKXaIJ++ngWxBij4QN}y6)_`%H|iS_pATqQfPR@S%|$BEAR#2s z6z{6pI`8@Et3S$DF%0pBtR1=3* z)&kUXV?$_+ri=5`B_mw(G}9_lMVN^73aI)EcZ zoD7%Y#6Qe2BkTa-O=O3G`mka7un=X@_ybxRo(t3>YyhMF9sfH?RwtU0%gjYtrsSg|AY2c`5LGHM!voM)LnOgQCc zpBAcs>gh1`cj#I|LG6%f)aOm_(rt!C6iq(95GAmAeWu9jfJgOS=5-ZYWFaudK02xa zoGw{g>_8yT2yp(2c@fgHgySUn-_=(5$V{WCq9flV;Zb>Y9&1WSXB5?QN=fGkc7^Ps z3nXlO!0~#nN^vpb|HRic)sc4>x_bwPxQF$m-yn6(r*WV*Pal65lOn+V1^^JW5N4~FaoY-?ZE_Y1_pff#b@qO1MY_IfhL@xDT34`B0D8lc$LTHh&)|JxmM`j zwtH4#^Aas=zLqk#$Bvd)SaW>@-W3V{n$28}MM@pZ&Bq;`#X6afA*iF1%8q5f$;d(vMjk&di#mbjw8?ChS~o}5MX3% zWdDgu5Y=<|Hzh};qSYTrf;S7~cVY>?@5*Vs3cb#^`~v05R<+_eq6xq(KMA|6SXf8< z;wCLwRv%?v!91@8ekkx0F)Hz}??u~lnz$fWundguw?1UNa2{oNTyDG^>2z~~+ad=G zgor|vg=U2RK;k#oryUnqtheWcDf3vtaWKqstpdw8XL}$P-Oti)-bJm{4z(~|se>)H zA2IIuCdjOf4mU`{B#snxA2tK897@hND^*U(f?wr&m}8BLhc%GkRDK#F!h}6*mCJ5| z(rQ|Xp)^@gCZ6Q=O|Rm6#-Mbc(}iqIkmk6s+CpZ>HPK4Gq0MR`jYJ=)+YP@>%*y(L zr969ImBK_=I`Kez99?6zSG5rgRlF64{%lj@p>TgGb4G^%vs?nzWm~Dzcxr}OSe@}9 zZrS}ik=6oEf0?|UNkn8{*9^sRgHbXgSh?J<^fqM|$=KNotLO&3+3F^I$*P`^~-3x#BQNS$sb)q8< zpE{?|@Z~EP(9GSy4Wpn)o0cDJ!oU>izw`3>Li?JzB=lj!d2_pzmk*<$!96-tsRi($<>jXoI5j=5- zkPeD|%|f*)2Y|A^J=gjK4rKX>byVx3xS(kEZ0Hr#_5gtTxq{&PWn+z0ja#Namt>Ra z5!avz$EnP#>Z`&Vz=i8g>;d)nL&!gd=%wlf>Ln5k1I$2KYY_Rqro&{p*}0%hgi*>H~j#K8%6faAONFGCN^H1#`*pf>fijN~%68jp;+9Nf*TxL*3=eu;T?_Dkg2Xz{XH zf6Ppu3-qkX3|@>$dEmzVou=)j8}eqX<^TYeY-ZRChDKKl>psN6+2+yd z))tWMg}1?yt0&N< zUQ{gC(K88af6!!Zm+NrRynp=@b`-^v)$V`V5AMH3Ed1lnY%>!h2S+|j6B~OoM^meR zW$9AWUv_*CQdZCmkxdKa{}s6W#)PXco<=dMcx=#$r1?ot zkl-3*+1JB!l#U5!;{DO(^W|=qi0uen!Otc6u(XwIh6tZah@jWYJ6#f^8lI@@2q&Pw ztfi~7G^~c_nE9BkPhzO~&A{>Zp`S!jpEN zyHufFk8?*mA<3GU)h(M3S=P$kk}sAzhBwPv`!}mv$5B^iU2$*4jIy3@phdEO>r5!L zzx~xJC4CG)0QrQF+5Ihy?4Jnhg#`HZ9Lya43t_!9mjy5%O2$#C$!i!SOH!$%C7MSq zKs1y8GoN*eO>}x_(F%M~D+NY-|KgL-;*zt^-_E?)U3J>Y?$l_gp7R7G2X*RN-$^L4uZBb%t2< z)aD6`;jVZg%vwqY%s?o`EcFQEh?a1yl1P@e0C)Z7xEYBGyIfx#2d{)jUa}5lFqy%hn0%WP8otjHGv-vItv(WJpQ|1u;>m6Pf z-P=In`(HA%X!iA8`IH&%-^%Qt0LDTBvNmScj>0zfR(k&i7&}RGNr3Pnc*R%GyUq^K z6lT_{NfJQlJESNRAj}0$8i!(EI!A9r#$+3js6K++&$bae zF;mpfkx`GpdIE85le%^D^_=002KE6=BE6VJyQwy>y!HwWvS&X`5|=4%m9OAm8?L%+ z??VM%{}NzXdn)$+rvO?0R)Ea^kaqoNQ{=zfz?n7aK3;^c+iFk^3H2tNdx$L*->_&S z#H?6@K$(0;tQ2Ct6*PSfgN!~%3`OVu32&4^A=s4unrhS3zIHi%wZ!^GF=v3666FU> z9;<-M@fJhKS%;NU*;1072}B!f8nhB^bpX3OT{8V0sSVTVv;B45eK)D`jdLYuwNb?p zYB{6qDe2M?3=bzW7R*ADTw#zB)!sODzVMH|WO*U#!pT;4o!AB%Q%38X!BL`@jYXU_ zT+`?cx$YyznT~7TGk1k%*0UAltrLsR>+{J6rma-dby&JP%?(V~z1)u*%AL0_VEGVo zq9}S{5JCz3MY81jD3n4OgnY3DqN6pG{p!H{J&J6;jIRRy9+!J2*jYcWt(LBqryAhh z*apphGVOnZw9}O>$k)ToMC|aDhTaq`2DQmW_H$s<_iLUl+s3^M+tz9zc7?}9?1)YR zJDLsKCUR5;&~to${DO<>8G@R>)+^T|%~AqLlE}7w2kN~A|Kruhs{1+}J~dkRw`)QE z@wIUM1GqP`m(f8 zu?U_}1mPJ^42Aaj$us7PDTifnb?DuEl$CY2cYA@`L;o9-0sNOmQ0e?k!0(7$&2BU1 zX^TqX+Y$pO!noz%7)ijmlm?y8Pld&j2=MMK5ikOFOx=YS`_fL{iGB&Y_=Ol$#ke1H zot{ZuNkwO@s}GblFoEFA0L5-HsW>bcwU$?M+Hm|TVY?+85gAepP{;hl z?4VFj_g~cy9&(bW&@0MmeI%6Lq}6sUvjd?&Ow4AXFAEmO98vrAIdT+pPu!#9*7-|C zIIdO5x}0`JhGTb9_DAd|Z1>s2aBgv+*(HzYhHGr;-(#t;=TF7(kaZcC1BU6;!Z{4J zN`y#j=awx>vr(LDgqFUDfU#Tp>qVOaQw@*=FNHwEsgxMwYLjHyyQaF%?!fNW^`8x_ z?~t4>(^3DTkvg1*8^P<+KLR^>0{)}Sx2l9S+fQZs|1Xv4Xk_j1*|z*Io*`yb8s`(c zK0ZMQQcwS#fB>7o5QwI7JzrB6j{N}1t}&wYgudk>>Oy$J-~fdpn3ETe5|AFhHb>@j zP*zp<@%C|>9Kt;tnzK225}4C#vM2dWDC&vaP+h5)TyPjO(Px_Yxs)6#tv;!el}-I| zrUV7dslQ!VQ3N|M6EH7wS)ga z7+q~BMwYvmWkk5K(#{FqMhuhCfI2^Uc3O2B!!Uwj2s1vyZ0P$QMhm(C7Mz&_zXh@I zUD77xY4!`1rltEOZjsXo|4P(JNR(ZKJVy@wD%5jI`y8HUK7b71z4HRN=*#Xq3gq#( zLG}LGsPX9Vm;*ou-1q79nFMzG$w2vlWTU-fbtya&cq%?3Iumw(T?7|w!gq0{vp!(x=l~r&~PHY(p(4CBDjv2tleVw z#V#^}u`qXtqE;hzcsF3c7koPxfsq;lS)%(jayOMNTjvV@i!IzRFcev_3osfDQhbX9 z(5^7AlHOsQcV2-2kVIAhA2O!@$NGx<%*|P+hDYgO5K6K`oL*M7b z7p5^dIyBkzuE(VY#@mVwoz^FEGKK|5&W|=R(ky^(( z-fl!T&|w@A-~17|0|+*A9H*$SBJuhCwd#I3pp9P+c@=Y@Ux33pnTmEAwaqKyhc?8x zgqQPw9Z1)}p{9{<-)K&zy3CmEBS!aiLM66 z7S}sF2T!-o))zueNccMFVdukyPB^qs$@bAp8=Ik;MU2~K~Fix4_ zsoJHE@nb`ZsiJ3-?X!J~k*={)*O~`yG*Y$uv{D2_Qziq~uB^llAN|LAE^&gj!-2Yi z6%7@x%AQnKRD2LTg3ChC3%wLm>|S|CnkB5WW%Tl?r4`DU*0w`SydhMe8Df%Ag3&9^ zuLKU$*CG>M!w;#r!|*BKQ9Q=ZxITTzE6yFXPlh#_EpHoSG~6{>e^ruMdvNhzKLZwz zPvQRmIU`yAA*7KoauaejF#SU}_uu5JGhIo0A%u96ro-by7dI?@CR z5^JQi+g_Mp9I=pO8Cb(Ju0qZO9i8GQMwFtXOTzlV@PI;5jpiyc(6?;1(+i@=DMQDD{zRbH}lv9qO+K>ny~8 zzgaFq4)EoclzA)ktn53=@1Vz)z>nK|`rsGNpY0}Pm-bRhc>cY2hoU3D)r4r{^?N76 zb=G=8kEzRt>jd_|;%KVYlgw1j1brzBn_?B>2lW|Y2kd&*nIq9w{krrODOBail{%Sr zweywsj{DV!O<<<8+i9f!m+aCMQSJKNC#`dVhdH|8CO9sY!tR z36)k)kJ+p%U%J-J0za$NBqYFi23hlb%c-O4tApsCg_-A5b&T?J*s5&dl+UtVuaTGc&F>g_ z%5^kXL=zO%360UK!iq%~x>Ww%VS1sN38iE9d*e)>`83}jck3m*p**%=Yd6fp0#D7z zl-y^PN!BK(mp311o;MySoFMtbqV@2L#EWC**)SkvvAa~!+-^uKi~`##@L?2Khff$t z?p8i%noeu@ClyuPjimS+N2Pv4RDSTG-Kx_pxA3otbv@$v&fXbRKo#qZ6stO8<%aCV zw59>MNBE9M#Gq~Hp-92+HMmQ<=T{)9IZ=dFegl5|j=wS<=b=H+giqB={jKW%sp9h= zsu%dL$ZdHEiGE&$_oksDsl9w<3oiFF0SF-*R6cch{@!pD&LKy26@K|RDf$m_J__+;J_C5L%iR7C_zf6K*tQ^k3!q>dBvuc7+^pt zA1)W1439OnwK!dw)Xwn&XO~-H<9j5ySe3ciwG*TjkI8wQ-I?r>b+lgWmXa$-Y%{>F z=9ll~g+Cgs-$EO2$R#P_@)HP=gF>B<-H?lT+p`Pj3Pnd_oeO&7HWArMKhg`fYPD<( zZ@jf?4f21&VzWbVS)u6}toa4j1tK|vMp(1`AJX12y3%#q7Osk2v2EM7ZQHh!s%XZx zZB*=}VjC4Z72B!k&RTn)`JC zPSe1_Nz)?r-Oew3nu@1Rs%;g{Q%=npENARG3}w8NO0cvaAhvYzZ2GWM4>-~slNPGx z%RX6!*0>P4Xd3tie;VBC{t+G);D1EoZ!6(HVfb=FBL5>%>nZ#N!11+6W!x24J8ZO7 z+6z}8VGt)(>4tUKkF&x{jgiKiDj!+=LEk?6CwZbE0;YPrCXA-mpP%1;Lu~Iv7|J@J z2VbaUl%AvuGJx5nFDWBuk)rG{>%0W((^QIj2KWBRdH#~o;nTU4bvX&O7rhLl5y9)e zrJhNt`l_qLK{vLnhvtTVA*@7&)n?S@qY+YR`m1{?s4XgzSxssPqjh52X!aA^j8%_i zk8Mx=Yzq@^0qDsdm<1RMfoew~QOu<|mv8ZAWkXJ4N!ud0Em&#RdiZlz>k|0TzcGa!NL-elgj{U)R z%_WL`>$==GvhI6hSbxpU%$RVd_v)e3QHY31VJvIzrpxC zD)Qs-l;rcSYEMb!YPWg~cJqFV|I(xH#!Ywon6($E8%_U*!d>!L5(<=Oo5!DQ?e>>r zoHhnB3b4!Y3(2zx5PS|tZ9tMize;~M0^A0CbnHcRr{!EfNQAV$G@3txJpX<1p}}u_ z1G&(-)69G6;VA1t8yj67b=E!2M6B@&cTK!|n|p*x3cn7d$pu;$U7H4b56#J!J&&1^ z{@?NoEoVnsRcfj{Nal*=j0@nn9L0Qgq^rPIt+^XDB-?H3c-_p1Dyy7-Z=?Y_{ zj~_`)_#D9>U>prkyd23Lq#n^7XdKy@gLd`n3R$Gd-N7}4Ofjz=;kuyljq8d`GcC<} z9f02Px`1}|oaJGp8x*FdZRI6SgdR~Hv^=3Tc6fG`k}y|XrJcV8ClUzevg+4`{(1}j zRegV1*c3e*yKRJJ$CrcAK75JnQKvqyoZHS-vs*m%t_nQ5ZIJTU9ci}fr8LiZ-q z{cCVd*^^0x-nAf2n~nJ5tV#G#By}l=<;c224xYbo?a)l%F!*>s($^==sa3WBsKU z8=MUzYm{Z{q#|qPvDsTK4F{PTm#&He56?H{X)X(P<@&{BfjXWam>=8H<{kWLdIXB~ z&jOd7=7z{#peQqN`*BKfY>Y8npeB@9X+wITDy(?t8U0-E4{ITS|Xqe(u$uw#>>)H^iFQtpNwLz!a= z);Z`%{XkTHvZ)&&sdDfaKGo=U^^H9{@caJtCS8joh@1d(mha!z>VK*Xipt{uqcW() zj9Y^UA&NOXW1IM1>YA6@XYj&lfeC>TRR+_pORqKWNtWuEYa8*?RDO%}738NbT3sxH zp?9-)iv0b|_Z75NELRafCM9^)#TZ3^Yz8*JBb9f zT^93W<{5~J1JgSsRPxDe_8Ksm6a8(v|HrVY$N*d0|6hNjx@JEwh{#7SwZUnRqhcB0 z{Da&|Tjj!o5-qua7@P`fR2T}&BN^Za;v4@=GVGQ+O*BKFu|#?`MLZ zFNEfa#V|sM1(pY%=F{E>6ZWsahF=su4LQmSktTN+5N1dlOhQwJm7ON(I6q^7!~F8b zZQ<;IXDk(TdquWr&<(f%n>es7=μBk5F4%P@AqFwe&7P&I|w6&w1h^jkd_ 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

      9o(TJ=X>Htd-LpTstFXjSwbEB0frO351D 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 q}DU@Nb!}bCcE=$ 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

        bl~ES{~~4O`c)<<7hz?Ol4!Qqr*qOYRt!H;s({ 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 z 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 p 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%0Au6dzb9IHfJtSl@_)e$(>0M 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

        0xs-~|?R;pwk?g>M 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

        cKM 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


        NnFh}ne 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
          n$|Dm7><{Q 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

          }&jdGYBG!l)RSL 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�=$)JWc&9 zqnoykQsDslMLSLS?47H89pZQ3j|V=9`VMKE{rwH9KOZ2I?wN@{V|xmi3amJ_5-C&P z*>8KuZ^1w3M5?f>Ck(pfv8Ioj zw8TOJHB^E3gf|id9RlqVVm3(CXtQ>^tOOl`>$HEK!j>RUh;|zU4*SnQE2YQn2~3cx z(d~I}zzNV1yD0Ycci{-82)reS5Bjl#G=<+AV~P4R0^38MaR_oG+kX#R^=kyShr5=? z(h+Zx?&I!W2yF7V3l4+yX9;Wyt&{9yhq^$&i0oYTfgXsQiwUx4x`E0&C;b#6 z_Xv~y*CW}WTlyP{JZ_QqG`VbiT;y=f;xB|zrvBm}{mJ4Sm;<(c9moTxT_5O!Z~9$c z>diAH`zS%Zgn7K=oAb~#Ir@-A%YK)5|a!aVs=zY{Z9xe*aOtv{rL)#4B>nfRAC0@Rx{c9akD6tE~IU z&b$elW)gg0)>@a7hpfZp1WDif73XSuVZZKEYF1C$`9|vq_*!R=!t)Ij z<{_QQ?Xc6XXrBxE%kRU*~!D88n6F>4c|Huc>eZjRa|{44$nl68q%mWa2bS}Rqt_E7Pp@(TEg z7mOc^i7gV1Fs%6pRo`{0Aq56qJ!3z2o;|7?!Duhem2RWNq1DpiHMZqa`niWZ4$iin zlob4B{^e{Fj%F$CKq4e4SNRD_2YT@_f9LFq*#tMo);_xIj8|#1RKs4pM{JjKWFg*8 zN)t}U2h)SBLsbk(^Fp0SN@0wk!6rav;#o1(0*Lp_Th$H%bX}*|7NV7;vpm zzHd9KX={Q|F@Pxkikbyt?`tTF+TpbR@qW{t%g*#3l#s<~r~W64?ZoOf%bdRi86)kf zmIfcQyWuJP`QmA+b(2a=qo(eFS!YA>%c_S5^4CN3qH1nqI--#TnP~raoh-}Z12k6C zDJh^h9#n7n3d)?s#IqOOmO7l8ZA$(#jyr=gQPZgF=ZG42hrom~U{laYibOt7-z6}F z=L{V_>eI|!KEF5V3@ff3wW{61K?~=tlz@V4LA%?!8s$RXg>25sN+=yc{+89InyT6R z_5sS=AGU-(*L%`8#hbAfb{Myx3Wp=-G%Kccbw4thbzu8UV|80eRWif)T1_%zY#WEh z$~r()!X#FaDp-r3CqIzWVAAK7vTb;*3y13Cbn6S_lwZr~m;B}~g1 z-JSs*aMbk6<@_Bz+CXSn=SDv?9S@y&6JOGR z4`5T)<+*Og0347>hGj+mh@Navb-*KN&AP6rp9A0#!#2Ao`Ue&4Bhj{J01o&n?4zJ= zVGkToIqW07tzXY0NIBpU;o2$SdlNOSf$(Jk#|F*^f1{nYuIb

          AAEpn?IU2R3b;F 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 z%0AudiWg1e6LD5;!bhc0B1R08Aj(5AVMRRhNh6$8_kWiO;)3}*o{2BuLmewgfCLtG*`$wD6bXiRy!ie zlw~j?uHRK$f*V0uJM9=$Vi6C{Xhk}gv79}{^}(@dAIA043}m{HRW z!Cf&Yb=T8hk9i!tbeQH!5XdhQpFrh4VM+MuQPGv|wT;Rhzw#sLb@k^_*YAaZb!asF zY}S2I=Q6}Qim=xNQ*6$49F;#Oqce3dl6Ax=k+6UOVn;A?uwYBXd>iCUnw4D``N0M} zDaB&6x+RUOz;R1Biq<%pZYUQAMC_1NYK2GBnZpm@$;X#J34#N~fnFK*u(2Ub^GH}B zCzMeCl7>zbuJvZkOF1Q#d@&x~lVkn9(!fSc$p9Hh zc-!AfoN$~gqM3pxr3NIf0W%F&mN74tU|O=cG`*thQHn*x@3-n?-d%w(R_8E>U=td`dq#c~%frfaSyn6Uqlt61S41W=w`@#TNTmN>?>n zm~)nzmPFqiwldCE=={NIQaYp0GFiykpagA{L{L1JrzyX*y@G4~K_YhxF2W2(eTHTk zZj!6dK0~VfEH&yl8?R{=95aBdw)~r`J}mrFw7cpkieiJpJldTj^?Y9TI5A)NNfmxg zQv(4T5(69>JhF;3S4XHVpc09TM2Aijr2UGM!A;`N?qbOu132T4@zCCMXGlJ z=~1dh%#SEn+wX^vfFGG&cECH5AJQvn07(ETK!SsSkcf~-M470rPgkBUA2|&)RW~U<8*nn3(H<)6gF@v% zO@a+5|sCQPPoLTYTmQlR1hPFlZ`B3hFb zZF6er?0u0iUi?(&uEu?a)LmZ5zh{n_t~F_yGF@w5WGJ;%HdXh;+)z}nCY=#6q|CYS z;}&l!3s6Y!A5pEkD3$md$DLVqK~m*RT;v_J(~2D8mqQZQ=dXr{!-%S^j?9bSRksDB z%#A$6^-h@BV<^$C2H*!3zFBW)CAwnpK}PpX8R6uHmI2a(MgVrEaiQD@X@W6RBU6Lx zpFt7kLEu3X6#BZg5zUP4xTH*n`3XkZak;y5OjOqe5d(non}i7Wpma=Q!pR~rLzbO@ z2(*aNlHNI{MP{Au8b|}C!(B{F7>w8JiU_HUgq?wwh;ZAmN*?k(Pfsy1+`fV5iU{K% z*yoH0)#vtz=Iw@vW~Pd6bd9}mro|m;CN@TvZ8ywFfW?hb)_YjQfvd0hkHlKQkNBOw za3=E`CrtL8HKxOzHo#WA9ieVqE%;WlqCfuivH08#hxhn3a!_`wEw%SiFX3BXpv(3Z zT|07@?GBr_7y8F;ubwyWICAiSXAl@&J2t<|j&o5ve3!}dx4tf@ej@bC?NDyaOZ}Gg z9lR#{YA73o=_BH(>$Bi%eDup93s52FoxbN}81Wl*a3v3*Psbg>b{PU3I!{o3gXcyV z_*x5isAL#?R4_ms41QlZXkLIGnlNXd5IWvrXmDV>9#@}CkbaO-& z5FwDxQwI{f873QnS?8I=d+b^q9S>2I4hP+cjwh@OF~k!+@J=;oi=ln+`bW?wW4jzd z5#v7NxE@C{0)96==7&nipKGSRY^eTrAy0%Z{hXztYbviF+P}`tlpu(xez<-ptL~z^ zCCpyiad8Ol^T_O#gG|R?M&6t=W}%`uNI}RT3*Rq-LrefQ8nkqkn~PXRgon$Aj0J0# z4`~nCmRJCS+r&hiN}1`@)P@G2-TOr+LNxfSOD04R4*>kqlvV^)#kKx893r15#+u;? zh{-E+#M4~L`jj5R(T*CC$xditCo1YXTx6dst?Ng zW~gqfi0I$#YDwwXcu3L6!777(jxdf}?p-9x9aZuOvK7z4{s?`Nw=GZgBaKi+i&OSn zs&rSPVXd%=4i9R%=B(m`>*H>nC8xR7aW}Xf2mKvC+=o_;wpHUQJz{s57`+o)1?nQN zqvHS#9|hS}S&O#Sz%tp$A~j^oQ))L50=cYHCXUwJe@m3@Dt&(PfLV;bHg|SRF>z9^ z=;P^bEnQJp-}uUsMv;)dW-f=u{m0bNY#USDW792)Dfnq$k>)9h(|i|( zqmt&NqAD!h%TDnZX!xM5I?<0iO2rAx>e%YDq0||YiW?XRV}8!;h6_*P1H*bL^9Z|5qEd% zT1+cA2^X6@C~GX*p(3s96g>c06EGsbk z6g#uiclB-Bo>#H)bX^)BXJlZK}{8{Q$4^u`FLFm!R)YndI^q~}1<3(oUQ@)9tR_wSm^A4+IZS)NR6#k!Mx4gMf|>6OlKw zd4J}?t_%7c3JC2M&fRT4kq@hR|~* z)0AR^xLz~dRC(vWIx!y83~nt|`im43Y;u1!!Qa;=EYGkIi<_5~>; zsb}{ZSfQkBKBg(!#URb^RN7`BYz(bY()n@u2NQV>*EDe!E~X*U8V(=}ac-K&2)gaC zjO=nfZp;2vcChoMVIu>+N)Ft=D?9lAUM2ot%Z`7Miwo5uT#=tpKQm)JAMJb?F>ECS z1wil+YS&S?NpGl12!r&`e@X~X&T8@zZE((xEC;Y;O1jK#%<|5qrlCn&&kt@`Nz8UU zZF&@*oh?0C51afU87u9Yy6W<_>H7SWP51uv0ReR0`>TvVRnG|3y!=a~iVGU_4$neB zu;f_jp~jNG)^Lj~vN-ex&gFYo+u+C#p4HM(AD5AWP2D3lrzqS^Qk*NoLRP30A%2aq z6IhT;L(0cZHElC1YUqh5T^+k*R9=`%6HJjZG89>WQo~k7nvoG=T+mf-@rhIvmQOF0 zNiYm%@lugAtyNHwOKE%ke-(k62j2Xq( zZt6s9iV{pC+QpD%ZKQHha#as%O;hSQWSIpUqgHyyeIY!RxMJvdLL?Xl>ISI#{u`bo zWr*sNpV@gr@Ly4@@OIjlb*;sFWj&Tq|q>h74_--dBtZWyN z`5_TuNt%t(zJkBL;ME|^eDQ|1AeEzgiMr@zdOZ};c)pHals>E%Q80(O=q74bvZmd8 z&~3c2{Z7j9>Vkd-k!4-i7T~id0$oXWp|{EzU0M^}9m$i^GG)u;Q8q8Ijy&7qR zA5nzSDwPjc71PH4Y->Ib23|XlXf1af=HhA^6p0k?XjJk&Z~6~SV8ABmg+JjIUr&ngRPR$_J!wX-{(SEK&hfhQylHN4f8|{v z%!gZ0>gDi>|A|y7T6f>&m#l&2I9Bqjj0av+IO0WYp;K4Sr=Z<&yBC&9o zOj(0t+(r$1Crni)_6SokwK!7=b{JE;b0%XU+nh|Tw#gAjE$L5L)CRCwGP%rw0bc; zitWlmfUD%3-94nBYbYo?Pl;Xz2f!X58U9bEo_(TtNit0`Wf{J45_&-cI9MB#TR1ZG zl=Ue?Eg=wi35i{QB**sTk*{pUxDgW)jA6cb+sDcew)pc1WYOo^$t&NH;8~hy_5L8UJJF@-B8=Yj)gla@l4p-ikaoOXlH}?}`2nc6@@|*S9pz&d2?Lm$*nM$wt#1#$X7nR_gT6db%A#Js zoh8wJl*1d|EYNhu^(7b4-ibgD$S$@-BwTAqm$~YM`yz?W$KIfN5At&vyxFVl8siY_ z9`cykWxBLn?yyPjakh>A^1!3c9G^XX(tHb3*L?H)&LMjEtAkYo-|(zU5x-$hKAtD< zn-13f=l0_v?t?Go8*T8_v?d<-3vTh}vVa#u@YUh9Kh6i=j8>|+eoj+fCsQ!LT)b%I zJiDXRhEBM=78{JpunPxNWo~RW1?9_K05TXg*5^Ok98Kp&!{xr(uI$nOj=J#u8|w0v z`u3kpg+$cV@$0*&tAUa2fBDZN6?*>aZSt~6FOto-TA0np<0(+oKm{$_B}GAWSEBrC zZVHX9p-itV`c;?%iT4J?FO@Nf7p8K}U}NmOnVyb_&J0eC5--D~ zLTu)jZF{E61DQ2qn`gj$kUJj)k?ik{H(DF2Jg{BJwVUsl*K0<>6fcp5f02ES?YBdy zI8_*@m7>Co^O@W_H#M<~f^CGI6bUWtp- zO`}b!U0fpU7V5dNvOCx&MujoDczq+2)nEv}-{C~$egsb)f z>PI#4AId3u=}CK>8YHCMVP`{bP(Rt+8z9i0+*)MY<84j%r0m%2h|T!;FGqo__Hn?h zp!({pkZCB2t@Lpo?S{t{uja-#_etzH%gEut>KDFjm#vOZ%%`l+j6VtDS?=3{K$*KN z{Ae$=%h9CX754^-_~q}WC>qmsZq>9;P|sRyKW3>F*6bzea)-#v=B;iA_)Kgd1lmX-#o6X8kBHZX1lXv?6p$ z7~`Bs{y1Nul(>L@3rggo$eCX229{=);WcA0HDJQP+ulvfEtH^@;PXpElpS;=rn9YcCMc8D-0xQ|K3R8X;2d;q zQqKN%o1TYTGigUdrVQde)!MCOvs_$Qk=benMRQj)8D7>VM&3X%!RqSJ*CFh-k7V<> zYlU0PU5vC;fgAdq!&RF4$kj!v+{()Ln|hX>U~U{pe2iR6nm#rqA7#f7Lov*hwBus2 zC_dSY@v$KKMDg|~7Xz0l({NG}x6Neg;diOMGERxM!dPoK89B`aoGxoOZkrT^;)R+l zfVeZP>;I$dErZ+Yx@_IV%uF)I95b^WGcz+YGecsMnVFfHnVFfH*_PRHZ0Gv@zP_jW zp6c%Es~=k`X)paysaDM~)|}&kKAfUZAtj_w)y>I?LXq9KG7_iG&R#^Q__C-2fm{E5 z6Krsvx1VRK_-!#3OLpNFpH@LbwblxiW53IiPq47)a)YM00?my%{kx&jmW{z+sv5f2 zrB4+K%gCyM({}=b8Pkd{t#ue6p_X_!2Wzu~%i6}Ra#U$KCI2bS2WEAbL@tTMc%oxC znu|WM!%}srEnSxgRs+)crg63Qhoot39WT3) zOc7l^uz0?&x+18dk@KEHh44Uu8I4p;xroWb*As-|F5Dq8@#_`Z?fE=;V7-2WT%m4- zdE=YSwq=^Ff|DFFb|YK~M-mr5UgpK(B4awuZl;Wjn!x21wM8f-L32d_QUWuPpuf^> zo}369o}NI*a{RX&qkEhi*L3uV**26Xlq1N`_Jk+5xV!*RvpW2iKu3mdE3+fp@sLW! zyi9eYC>cCUUFqxPAX0qBYj#!V$4Nx$uURP zMqrI2?mD(oFKwQNd6bi$#DEmHN%Aapp6sWoONZ9~Y3sU3ecHIH{ZweplANmjmT1k= zoVr3SL4>g85+2b(4P?CP{YbD~Xs=`s(m1gW%|Xs&nKZ;Cd%UnG(yLT^V6cH`Zj!AE z{rBG+vz!?M2&Mi`mq&!p5}3}q?K|OR7u7e#OIfxjEK?;lj-zBRCb!sZb3J>}rcYn_ zib~(o{yeFoXX=^x4PoPwLZN!T-{rMw8`iAV(4lrWUWuo#veBnzcGhrz)70F`{-_UZ^lg@chO;mppE*2uf%#lDFoI zto-ue)k+{?&SgS{)Zu7DSE8IeR*6|%%62kd%O+&{e4zv5`LvMCp~5>(e(0@}O?x7vH;bhL3$=m0iod zQJIlETgTvRxtqf-40};tQz?~+NY#EtMQSTisVHkVd!DR;sA%TltqCt*zkG@}Da#*+ zoTeVj_^qSMckl4yq@Ws&AFeyXJ6gNTZG5JpcfNi|G1_KegiY=4dEs`_O?_fd={fE9 zWu_`5sk7has$RnVp3S34ImpzQm*!7pe1M&%T2hi{^Pf6T)H^`!d9-oY1rqOnPKYG zoUk=YAQCJ%JF{C{td{RE`)ZKHSa`SGkkYqMpF=|dP@R%}cAaVZ_R1&*bH6q)bs}3p zn*?yn`&DpqCXT4v#RfzX6rH+#jN5qz$k!^h_%|lE^vfPC0q7vT<~u(uB8A$o?o=8f z$akm0mj`z24yocqY7Wdl`V0Pe&==&U4Z)dc;_HUuIr2w9YfRR@e2<73YsEmGz!@?( z83g4bM2Q>o;vNJuy~Pg2n8@4(_%n=3?4vU)(aH>`z2qan=On}pQ)>E%4zvECG3K|% z@0~HlKMbY;Sz@uelXsIHQ2VG3FTE5+T5CLOvAfcB5AWmAc2Di|&~{Jk|DpBk-B+je z8`yVet~PGEaEKfl(ez0hde(ST8GgKchVoG!j<|)1(64==i{P(+NsuuIxnk`Y-J)ah z8{b-E^_bs6fBM-YkE#8_v_Dj1CT=~y>gzL$^*A2+*-{tXa?rhxCpq)?{pL50@JpgW z4SaRd7h;p0DrDW3fJR!(2bM_|;8Ik)lXb7l8`Zv(Ezdh6LMUSkxy)@)(B``5QY8-Q z3$wJkky0S_V}S4@NR^UrQ|+-mKSlXpImM=S7ZW%9g9t#CDzW6 zSH-|=_%$;c&AZL(0XljUx;E2MrI9N((kjh5PSRxW(TL~}8&K?5e5W|PvsB*)8<*IH z$V$^F_IXZXQne%1Ygg4~0TOZpU&$nZ25D4xW$9SxlIIp_wOz!8oh{YYQ-P797^|1o z1W0RfRZBe~T0}l;`ZqszBVXiP^B>WYUV}gHB(x5AZVS1>yToK2zAO^TUjV#GnDFh^ zYx2gnVlUBfRHVs-{lM#XfXwloviNUHvRiYnb*|UvI$`;pAzhN96&1M0)Fu(gZ$Ty$hG1WlAmV~V2!el+DFie= znjWJ!7vF2R!7}nl=Nn+jKJ+F z@GNY&v9&k@EJ=21gRV`vcWKc_vPD33fqaWsLw4s2hlN22TP=HK$doG><`y2rv8(+z zmf;Tvi3m;h0k2IJQdGJ|34>d9-yA#qS-x9PZFPEB>M;|t7@NFI2W{SvEZyQB@lPJ_ z7CVX)tM4M65>L_T>4eC5+`p9y6lF_p+ldE4Ey{lwxP(mkv0yESSTdH11%!oKS-nU5 z`oHFuGaM8F1nCG%>@|>q1y(`2OAt|UrML@F2>t*;QmE7Nr2_I|jEL};gPvKSdU&x{@mAlDVf=^^=J)oY|4NUF_gd`o1<*p*!gY}Q;y ztRE6HEA~F?8uLo%zuk^2^^A2htZCPO3_<*9;9P^wY|fg0KJbw_H?%hQg?zOZ_beQd zQtZ3Gvj9BhuUA$!yBy`v;(;7K*IWX5_HlLn_CGjrS9}77R zIj9zLCJb2UG0Lo?H$X&fv+9!YaOf}d&BBHXuH^UMC_ivMGBYolkX53G@8)r}7d3eG z4IRG*!GRXrt3#t(7frs`_j_%9s0xGW=`9%Rd=(`xP*Pr*oolK{j9Y{}bQb)$I>F8&eMhB_ltp#y++2R&iWaS@seEp$61}@ia zne`-}+nctac3w88%8V9DH|*ms8#s%vnz#wsHu{0rM`_mYhtrioc zil!#bsobxLHl186CKU47lwnPtNotrCChTh1o^>&f7bk~^n0pkZYW1l2loAPUXeDmF0k`K_Qq>$VY9ZP zvuf#PB#9+XW>iV}t^pY8NlLUzR1&sk%FcOTCauyr$8QeTf`@;b^0o91PCpoTbeB1> zW`L6)OW6B=veDIAip^ISV7XWPrtLBeoTnXnCutW`fH|*FO_Qu_n6T#CY*vCPDUh-| zt;s^hRKc5HDrq4zW9{4;Qxw01ThCF8SB8tBS{@S#n;NBH7Q}lSZ^RYos~r6*^Gjj; zB(Gf!xrAp^E#D$GDk?`Orcz zq+I|YKZ1>&*El~y#7+iZ4gV&d;)l4$7eZ`nf5~BCuB9}?AI0yC79ux4DBGD&zI%lo zBFEa6Pf&BE8VMEnTR7jMV9Gr#@{Nrpb)D4nmxU|IHf zUr(EHW`dR&tSdp4K|>j$Iay*pANoS2to9;N4E{rdex;KsjgRhUjuda&gQVygrpCVR z-wm|C9iWty_csi0P*U#mU(!l}5gyFRz7CAYT_i}<&9dI!4$Msd4vfiO6-XY<#sgN! zs?=fQCfZ^e(19JKA{L87Ou$jAdf%A`gZquKV-FY+p#mdzNZX&UkiG zYB7iu9jJbke-`JzJz~v?lydiAtnpQAv5{#k`bRKW8&-qGF%TLo2ALph#FYB1W0h({ zhIsMKZ@*vsC^jG-#-JU5W%r67LZ{7EnGKNtZZYs#V~5M~RT)5L?=3gLb<$$(F3@II z^a=VjL)nj*YxqPDooM>_4`G`Qf)D|YSQOn<#{8e<_m>v2Hnwr}f)|#Eo>7x?ZRYC3 zHI4&Ffcl;%K%M2<%13^f?S(pmXsi`$C)ttUp!%fl;+74-v3o&laVh4bKdcQR0@x2l zFx&OJn`}<1*$pFWyaf%(e_EVFH5zZ}L-v|)(L+QUZ*fC8CY$~3ExQx6-TnI^w0<-D zIm~vZP%V2Y%yuLCrk#j8rnmNJ4-v^C37Eco zphvN(O{P@8^(7Q>H_aOM9+t>WOMR1vVS^r|$hr7vZ2 zA?+!>6O5ACiDE?hn4A~?+UsL4m3d4sFcnBO=OMGGaF1nG%}a4uu=_J0VM|TRf@W$| z)k9=da_;(jYTD7E<_+h0yBfd)A2mIiM3|=})8AH&c#Q4=jm#52sr4?Q9A2pVSpjI={Frrm zT&6R7j_bO%%UXg*58n}yrWJRcNh>ur^` z>OS{N@T)=W6=Zyu_OCh3;3Ap)f8}5K>CT(`2 zg~5xa=8Lz~`qelX5%s{e6|`JSU>2`1M0K&fKFyw)d+WLG%x)x;PTJZut~bv`P(w+B z+;T^B1Uyf9XE)?y;%HZh;)>!B_hv@_m+dVq7bAibXNrvKM&6&BPrM@(+(Q!xY1>c{ zdW4%1BZ`)N8JC9{XOBy&C@HN^hA6zp^mwz3 z$Bs0t45fV&8XppEEsLkdt{$5-5}Dsj)45m$Z#1>#i`J-Lt10-jo*~6KuPL1&(Vg6W zMNdR}r6|*ek|d;rt`cAHBxQnHkW#dFxIA=W(V{SBUEa($pe3GO2hlx@l`?aRYEZg3 zi2YX@s*4^QtC|AMIQ5t3UFWw(%rid9Ede7#?MN$zGAA;vzO~iu-PGjVa$edOx>R${ zgM>-*1&1x+)EheE(PCa2bR|{v$Inz7H?0c#u}5CGw}x55Tv{{hS{)X0`8Qr>8+%Tt z%`aM9!82E-M*U0ddsYz+T@hSp2UZ!5O;fGuFVmF6Qx7^?X@@mj$ard~%fX zuje|hl*JpEv0mmB!8zWNb54WRS`Ru6o;4+$Ao?2Ifu%%n=c)zGo%HIg$0|9x{3jf{ z0+BYyS~hYlB5d=*!E_swOyNc}#OF9O{P#&O|2>B3|1AEeh5R24BKq%d`?vI% z()9GuS#srHNoFm$ZHOCzN4UU2i@nWnVK53a)i&^_LpQ;LfIaMfzD|HHj7tS@xnX_t zzl2{y|0en8=wgMHN;1$tE&|3scb0YQx%f|aq3koeZowQ}d6S zUb4wPbQZ3$xscA{L;|%teHiDn(gG$HB<9dn(cJbE#_y@v|DLKE2d|{ny-=H zs=iw{Nl|51ms$1XB8sY3Cs|R3n{wrq51BZ%%sG2glde@axlXL0O%F73> zqBXX=U&vDNl9U#>m)^F8@%N)Nj(_o(4MnsZRwMI0N^QRgNhVyaE5K9y=DQ)IV&WNQ zJd(FpF3_HReTF6zW-J(N*GD$h5{XD&keNhOX`idoP{r< zESPm6-Quuaxyu`Oaix5cd0Kbdi!Xuh&hqGX(K(`CfOX+f)WctQ;D;drK<63qbl+@< z;jD&zjvImwG=_u}45+u{eKHwfWVRZ%dP9N=wB7K7lkKG;zQYEN##NvFk;GU_w%aJC z6Xti^jn45XzDTXh86|Tfunh6HJNMhAFvFl>0lDbQ%bb1F(mNF$j|(Ft`CiQ|GZGWU z`GmIMMk2Dscr_bcyEil+RMNhvic?aeY6q76jfs}ysnC#$ij;I7edei4^&xD>}#GoOsCpVaFh!ciQ8b_<^ z^))l5i_@WVRUi@EA|aV*xBGE41b)rB;8v+kr9)3)rAgLgsn_t=mUnFT%MFlk1rdK+ zkJn=>ub{kDKPri0VrZ;TW59}IoS0j2leD7A5i)sTg^j93MGCz>fIzh@DPD=p8V>gv zq2T-p37=hN!c8Y;$~q9ep7jUH2&QTk9JhU~Qh4|uH!SFaf}&R1y*@v|6#Uqx)9>T< z^-8!jNs69vw1n;txj2G7xpXwoBhsbEL%dtiiyoX@x>N(GjtUAVeR*B)I_)jd2r%oc z_4d83RVqB;O9ou!nW^P_sR8uf!7Rdr!J)=qkS5*H1-WRUN0uObEG`iVYs#G1RNJ5? zw5bzDr0UAQ9XnZl_6Oq%VaVGIeFVrCvHlkAi zPq=`n9@(aYcKgJ0bKhcr=;4rsDYg3Q=6~P983Lr%m2n>UF6KTEsILff2sDu;2O>ny ziIA{>lCEfqn4O9xTMKHU)#+`)&+1`B0}A;0aMtIQo2@=Y{7$9NqrQP=9U{MpApXe?OOFv&*!mtv4daqnL^DA4se9lQkmV}zR~)ZIfVEev zSk#K=&4g{Iz1`*+-0P|)Z0}6S?LBCJdM!ZsX5x7^U+8*zk`WBRuyD2u9D1vNu!uVk-PwE{GY`@$nrJA@-$%gh zcU{y*sLxCIHMKFR%V!(&HLnwid`qHbt6zTu%+wD!MMoWvp@RBwYVC--$ZI~55oso| z%3L26#Zy@DIR$Rr=R)%Jg>ToA)-8fsM6&AC8U)m`rQk)kw`g92)vMvY_;6LaF}o3_ zZP_9zVmz#caK7jVEXg*jDom<8aS_FsS^0alCvFqY4)V# z1cfdTuxGh=-zpsN7rXCVci@EH0!svpM8f>RBx!Zv&`_rM6Qd0~ngM%Ps6az}2+3cG z!ze4a;|l&sL8Z)zJ!hhEfn@~7nV)pJ=!2K&U=Iv*eU6V<6bdNTS!fHQKvd+LY=j z8&7%)N>x)YA`30MH*h-!Mp`9cE^Z$eX_Lx|%pOT|wEFyUSTz_!>9L|xc9jzK#Yvxv z*i=b{gMMsw7b) zZ)cn5t31yM)<4bDxNikD^t z^McI;>ynT60~;Z8l>20Vpve(H`JzfmClTR($sLL0-qcgn8}&zTzWJgh2FnVnaon<) z#k@6dLg?Bw=^FxUM9f(^@30koF>D&?b+V z*3jJsa4;3IswFp_h2!E74d8XUx#SbCUZ&cRX=h~K*l&%@PYBE4v}k#J;PfDeAB|}- z$yD9{;RWAsn0a2`2#3$7g*3 zPj$ChYaCF^doE_VY}&EZ z*j#@oVk^-?#K^~ftX{Qw7_)9hssr6^{pOZ*)vxp6At;TYr;2(~wQWm|+EUT?`*^7` zghl3fpf6#%Sd#tZ(pep`%Eg$>{YmcB&o$D%S-Y!0-`-|9^t3K7uH=~sZ({m2Q`wPp z$osCOhDXV}A{pGkZA;r3zu1;x-MH+`wvuQC0cPomMS7S1#AH3N+8MKOWc|l$bFNxA zGf%+1@dCnp_l8H-G`m~x{YYFwKWS>@u(N8YXfj6WNA9vU_*aJ=Mt-OUL6uo+y;aLLns%85GICHsZ3QJ-i>1gM6Ud#Ik zNNO>CD(An*>dq?wyOyjBb46QeL=``r6M25k>1!4FEM?30pSgB?`E!5HOrv;T0a0L3 zD~zqteP04w7(Ft(%jQbX%-Ohwx^UMTRSQs|Vi;@Bte`en*Tr|{Pr(ty&Q4fy3vyOY znV{I;!263Nzv^+kv%br7@QMGO-sQ)6qYV6O1lrkp zKz#iXNOX8gDFWpJ9B81UadgSJJmTu@0<8wvvdK z3|2TjRGyB`Rca&@oU9%?_fOBMryY6LW%r3eW#H(H?&jnB%G#JY5C={;KLnhb?H-n-=DSPnZls5i-pci-t z^tLSrWsF@jsGTN|V{*3tq3*kaBJ>^bV_IlL@;3b~y}k7hyV&y~$4o)T{clef^^ZB)XRv-Wgk?C4J2eCehfGSKybaUk`jN1PJ>#ejc@er9E9@uNFv8D?rE zT?z7qhctS5h*Ge3jz1h({AA!I8)Ky=yU1MJ`vH)5zONXIQY-)Hj@ga{S!vA!U1@FF zyDieQ3A1`WVo7H^{Oqs!NZIo_uI>d!}z; zOwr|HGvp3IHrD>qYyYLUxcGC#Kl$-~LxadpQ@<`Fe+&LJ8SWl=jWd zsQsjM$)F(_e7`<6DU9VwbUWu_4wZ}DiEHz0Thz){uuR@XqDLja`YF8&CUeQ)!MnBD z8M(+U!Mm1VMT9$6qo$W%W38E3;>Esi=j*x!u{yRvTMhm83kExg`|bz=vzFYjBe*>eM`Z!S6}hEL^%@#M!7z zANO!tUp3#q`n2DHE&~~6SN?dz@wwhMe>?_1LM9Fl7Pz<@`s!}}VYcO>s?I2)%zY?M zyz|k$oT({~*lTZXqqj3zf0<}>rCRYAZ^G5-Y%iflVr}h9(w|Xce0uuuA)fh~>XjG? zMs4R*##BtpGQ7_hWuHLvm%91uI(URF?M`P;(^y3dmY0_4?e2-C?O&)+4EDt##Nccp zAn6^5*-Do;k^baSuiuNKa5^m6xne6SgFWDtYh8D>*0Nx&$1-jZD!Erz6$@;n!l#%X zNLa+?Q%fV@<5BSPhMeskuU7T?RDM(WO7Cm9^sKgUzVv-zh&+S5VyUbpH|0J@w&8(< zb}4&bjvM+iu4K@lzSAHwfjt}E6Vq>Qpj-VUH z;xB=OMskc&n6K2qVE*(LMQ9G6gZ~4GCTM15Re!nz|GW-;QqN;^`NZFXPF_M@%so1v z$z>BL5N|y$xw;sfcW&r!ws*2Te}24Q*nfEi`9gDZ*J=%nJCNla1_7HL4##tWPoN}0 zKONUaH=Dn$z|+}E^84;AXCbF$ciD-SESJ&vYJ2&$GnlA@!W z6z8x+7aS5@C$r=Gc}dGvgEYAmqVWzcX)nFg^i1Q5CS^N%Z>PBe;A15q{jumkaTk^a z{qw9Kp4WPIVV=mTQb#I&#`UchVqLBs;>z}T=^pG%?|jGoCBT{|Ig5h@m)p{K@~-H{ zQbV|hA+?%P+0;4^v(IF>S*5Y*fs}!drUw77DW%2m9nN;#>}l}$*3-;<{G`UkCl5n%kugu?nLfJFj3a%epXw27EM#_6}Kt5Rm^FmVH{J^v# z{B|vHv^gW$*rUF(2i85ABi5h{4Tp~MyQoIEN8Ba1_4vAR51j{F+&F*k*gJCUH(F(b zbA5x~{u{MC(!7g@s^R76MM~t$v)^9ZMA0lyLC)lEFgBR2^1FWiwqP5OgeV>gyTtyn zy-5C9V94;7XsdL!;?eP<;k|t@W8(fhRpFscdxhcG~@h#x>_M77W{(=^Unk6-VmfZ5zZ)ocZW`D&o-QXr^e)+IY-Rayz!>)59OJgT7= z5B7NQ9gOdUzo5N=^`-C1D~4!Q#$ww~D#$tK!oq7?Rsfx=P#=G~4KsA4|M|jo|G`J~ z;Vg>iVl>)|Rmu8o*35uz9nr>sxOTjkJChy7nAl;sw~N!-fCUYTeJ|5L3WsSnLJ{0s zb2E@>Sl8edBEk_18}T&N;1+{lkGU2~5*&&iPa}q=(z_j<5)>)-+@Bcz?hzgQ>Y5c? zaqy)u+7BycR})K_cAmESoHIxgYk`|ExafdUhQLwBILJS z7hrbte0zWz>AEkx{(Cg3s1GQi-&g#vZO~Q;NdB`VeyPO$TNNMan`uJuB*vz8GM>z9 z#eFm{*4~p3+1Y&#otZUKXYzpcgJJ&|#0wRF&zV@*)#BH;f*bD9@yk82Mqd0FRsL!6 zz@xq+R37He43!8Q^yBJ7fBFQ zsJrs&j+N2p8Ont^{dQmq15YATON{r>GzFd8-XV*iRE2p6xZ1ViJ1Vz1XHAAPTzsFa z={>>o?aWF{5CqcV(h8F8^xLlcu1jQOGloOroZqD}8Yu?w}Q~ySAS$1BDVGDcn)=kW!%3qq}a3A~un7YxytB zhNb6QY^XMcF3}lA?sT;JVX=&Zn!`n}j{&d9zBioO@tcUDb=F+O=BLWjSD;?hCmubs zS$G{Y-Hi!nqlfr7XK>3lc0uUqO7sbg?6i&YkuDH-vNmIlM+n2Ge?h65roicW%_1YB z4`vtA9c#*RlC2Rvs(cCMM&K;Eop^#h3C`ehRc{M9zgLXeYUyly;_Ee$tdk9G%vdv$ zbZm}2nFZPn-H2bFIBKIA%2R09GFWsy+!T&6Eb>S7|2>4Hj~5C7Y)0^1pLzKELNr#n zauJAu6iD3leZ|5MXm^%nUfDN0Te1fPX5iXcwpQio5BvfOA_^k}-VPq`kZT&@gmZW; z!Q$2Y#*;?zl^f>JE*FN#E}os5+vw)RQp$8tN>DiI5WUo4ft7{F3QKFF--A-Ws#Qvz z_hhFH^33AMBz|?h$FFutT)9Qn}J^PTUuIplnyjHy}&rz*SE#D=V#iUiKdkDmWBxjd{)dvD1 zKCzj>fby|(#rkbl3#DDeqkmJsFxu6%qCaE)f&U-U@BbYj#PPrQ`~NeH@i__e@6zQT zEW^JGj3l))b#(R50t1RjMobivc3G>Jjuy9eDSQ_U$Hq#7I+VorDwcPD)&$C&0%q&d z?%B7Y>5tI`7fu$FX28uWrI)gTaHQ3W1?%c@Zu=BNGxpBg46-~nkZw}FoW~R z2))_Ui_an>oiM3ZwGti4y6u2j38`%Ehj2eIqI}6Zl^5l}u^OI1Rjb?Kv=IF~@q7j0 zXDvS?!EpjR0bSIv3g7vR5DjxFURe+wU^J?ZCU1yjGqHANPJ=g-k0uNSS$ty!jAkOg?lVaaA!Ac3#knMab`tk61#Q!EYMrETamDSpBoiic8n(Rp8{K^q zn7=%cg(d2ctz(9RyP#UeU$T`l0j88w8X=6XdJi6Q8+|cXIJ`w$!XpY-!3*Yq17L~n zAvdq^Fj{$4XG#oxrY$X%Sek7ix@y+!fmo0fJvUj0;94RM$@>AqGqa6xYm6b!z&k<{ zf-Ax!0uPQG^QF=1z^<`{frW{Mk%ignL~Tsp%xwSccx}$!*Y^CpO+verS$r)|akQ>= zY#SI;J6CG`!qNxRgKF|V)$XHGoP{0!j5G(=Q|`MY&{q<-5lEv?0cEQv6E##84!ruh z>MK%L6|Qk<^d`O*Ny}$>!o{`~j8gznO;5c%+v#6c>Iy({Oq(G~NMtxiWGRfwAzVl{ z(DzcIvH)Qmm0CPuxN%3ZJ}3m5RWgw#6zE`$hz7XjgG?|0Dctg2XMj{B^=jk@27d1W zT&IVSKS@v|JRD&_c`lf-P*89vOkXe#gE(dW(dmFFF)P4UVw4j>S&Sz;er^v=J9I*b zm*F5Z7k?-*(pYFCjD{Jkm2426*$XAb5p8DN1BZo~urGpHZjT&5yhk3CV)|et6j~DO zAu7i20sv3N+UH`3HlB~59}HsbJjL2T_ZW`&X2I&+9u@i`-S~3TD@3r?B>W~t92Ob> z7VL(1MhDyIh-LqAj502&rLbSx5?3FzjTz53} zOlIngS3`cQh;|c_ehjj$o}PwEjUXcbO!Di-xTq}|Zr}*JaDFi(t-Rcs4OqKVu@G)So&qhpo=QYrQmbeqjz{nBPr>-xhTsl~@OYO~jxs0Qfj{oKpmHSIhNIgZg;BkT((H5( zaZ;yHl~P@7Tw5Fb`Oopat?2?L{^#aP_fMRHG&sb6trqeA+YQ+DbEo}JLh=9Z8)p2U z7s`kTD*Ov1Ct+&iVEP|~;U+Cu1C=AxY|pi==cgmcej%`lG>2oPZzo_@Fkb^CdxL0x z?bmyf!DnpMcI<(EfV%B(m&?nVwIC!TZw0i4E1H_Bs%)#))wH#}J)Z8Q%(v@2JJzP= z;9_sy|Gu%@&+z|!yPxsiE2_!%!unzc`z*PeY)}btK!(F0m<{n84MRfVyI>qd5!z&; zK{W(Cd1d3z%GS4le|;J-3jSo?j8Lf>ozx zj{-tl@8h`Wt#p!Mg(&GYkn_?rNz6TId#f`sM`(MkkTb^*u2fmz7Yl0PQ1>tX)0phg zT@4#n2UyvL!e5$_i1Uj8)rs+C8(rlNFW;m3aIK)p_3$IirY2KWS8W>g#med`0Tk<$ zl$mt?pTt6Hx}uu4zsIXwF^?{+XjYc(tI9R>6@z!R)U}(Md|ap2!=tPv)raoJqfB5J zNNuGHV`n#J1=LWIA;Dmn*_MIhUELH(Wps2_vA_|}f;opa-00;dyN$fpd{?X08^p!3 z?b;ex!`7PSa%MD3)d338ySe}?d-wol>*e1wWWEKyWh$ILvfB=tiEqd7K_r9e2k>ku zB3gmuJOPLw@dAM@MTOzHyzTC7E7*v^&v88a8d?J;zU>Sc2=PvCncERw?|q|G)O9iU z!K(HubOlK-ElpyodeJ{ScElTDshYv+F`FqV+x-<8FM@~@_%Kd@J1rL>2*6 z;-FX~GL?J6+sj{(Q6!IgXnv=%5KSmhL*z|1!4~sJ;r}9v0x9ZDh???HPL1swLGWFnG7l131X0;*bI*NXf)*mVT0l=`0GAO@lb;DYgr?IcVTw= zYz_pS32zJ~nearAaXbPZmy1|@-lBhl45CQaJAir2M5^uO?GRrwWr{}$HB!mNA*Tk8 zgcdpY*<&CvPq!nX}FEW zyc+gT;E$gX9JwCH63tGKGB@1h%_By3Oy!lpEH#Sv9zMxO+>N#^x_2+1!iy%A!_T5ttX* zuT;#S(XYREF5ixcmEq7?uB}NV#MB`vcQtRwTM96!iED=RpS!W)n*}RZ9)?O4kq)_s zrI2JLAFLdVq&6=SQ6CXdlaBc&^(8NVzlu7yr3gtINUETjbeb!K>g*d4NA2rDeA^5ZMgOnVm1w`!w6PxC zC$YvsQ?sPVU*3A6Ywy^$9JS-6*$ z3NN_^4rjYuj`v)%G&&qOG*_+fn;PwOi?|P0_nxG4zqHPyAk34JmzE~OdD0dV?&l8S zr4RNS3>+f8);JrG?~!uKhj@G7tnIH4p?-)b$`@#n$LS2pD5h8b4j&nbnX%vNC2{$X zxfYZ$Snev8m@^P{c`EZ=eKhWsZW3|P7iOiTpi!Mh+#mmaqC@_5pDaPF8ld zK&qo^X_?~W$o^=xWMR!IL7}mbEseJ-OF6k;WQf`TR&gH(H4gAHHH>M5@aT8BvfOTD z?ji^(7;YgpFLc!&#F2;rmJ4~8!rk3rGgINtlV9e(d;Ud0#R>)4q7q{6F`;&o_6wpC zV(-Pmgot_w1(A|8M$8iTCy=;=gA!qMNqFh{Sx9(k`khJeG50)C^-%UYNPOgjutiU? z_EKSXu=k)zI?4JcNZv$(a>79@sCwvoCnRq|K`Wv!MKC>Rdn+WJ#QpXn9?C&2A|Bd7 zJK-Q6R6mA(p2M{AK{z8+Rclp8bpk~*bwswLxY^Xsa*e))3>)lQ=v76}->PAdNRlQ; zs>Qj_MRz4T9&Aj1&=&_!*WTDT+XVEff3nL-?F@#qQvx(*q}d-RRWw;gUOIh*OYO@< z2Nq<<{NM{klc~_giEy1x$cYRSMl?oR(Zao2AXTPLFFB*kL`7c31`!nqgd4}8=v?W9 zWfsuV;#EoC?;n!^gX$;;c%KN*Mm z60~HG1fnmLcMF$QZ~1M7^!b#P?L{t=3J#-$#2^!$iJu{i0}S76ItD8 zRw@Op)JmZM`S_D8SP@aICHG!6s1F)9P&4}yjB8C3vB$7~JEgP@?Q zjoi~4Rowjn`~$EH)PWo~tOrBx#W>C=?}bJ{?q$7}Q{VLkqNV2b;%1ihmPsV&_d6gD z!~m9w*Y^9+F*L>$MnI&%M^15nM1%}LGoy_uXP_ZoV2q&Y>h$hs;w_4Sg&7R92tW() z#CU1U8L?*rlm^fnw`T6a0cil$My=_4xIk+_wQ+0q9uyD{U}w}Cye9|j!1?F{$phsb z=?8f4;HT9M*yt5@(SbdCLXdW%F<>X(t|q4tIvnc241vx7`eAZ7+J5x0FpqdJ-<`Q`GP(m+bZTC15$zfVaEBZ368dpd$~o;|GrMof2dW`AI45?S7@^zyo3rQ z&a3O+^Esyc@yqUK{=Ex4FluHsPFf2+GUK3;ZN4$pQ7pX9wWC zK(Ig#6Nt#s&_z)mH>S5=pOTFL$COiFERJk8>}2%2vvn)d&1h=WPLd<5yZAvH0yZNr z`2h|uML~uQg@^8N-6n1X!vrVNPnrXdx2#BXkQLAxr`ohNdd~}phht~b8n$N!)W)$h zZH?OdGH`|9&bT?|fIYB<@XWY5;Xw2$!FLQie(ebYLvYq{y2n6_1EdH$Mlb9G1qjdp zLUT^C0};J*kOU@gX1>^q8QLduxII<06_!!nL9^7lt6x#x8S`RgrCMQ-rR66SuTl; zlMY-1@CZB7BQBdG4wl^1yyd&52q`R`y#llV-dKNi#?DcYGfLS4ijCXk4DbzB(n?ShmVmYC8pSm&+|@L ze>&jNeSZBn{ny%m*uBbr%ZJ^qW=~UT(yN}^Ff=jKXI((snMck!uRgQ%LudD0)hds8 zb~jJ?F0+s9>{UNldnT@yWyHZbyVU9$O}8a3@E?7AwbgUe`d+UyciK$<(z@!dYnQBM z508_zOuDw~_NLx1=Z%ju{UQI^`1QXp+_%g!>#8$-QPq3mtWFE6%9dolcx<}1Y&Utw z)9com;Z`ce1`c6M}xg$ONFX(y{eLV5{xY%~7j;B)}BwU-j=ih0j z+pENOoTf_}e#U*s$HCo0ojTWuS=8}vv9ceESwAh=!6oJU=3(DkE>>+n99#Rsy{GqM zk0y?u*>{lJlafh0mvkw$tyj?_+pDB^vp9XHw6*!i&q1Lj&diDIb-P;fe&5rDR#%;G z8S`S;n7sXGj?27MtjvFB>pLVKti9;svjW1Dr0zTnY=!Y=Besow76Cy(iJtJo&|+tp8o)!P=fS^chY$|iN`Jp)$meRBQW zV#kDomHQ_Y*=8Pj(0q00@d|~<_k7o#LUzo#G2vCx(v$tG-YC?~blbRv*W%h%DjMp( zEUxBZ*Ihk3J8gHce%8In8S_f@15UTtw$q`rZpHQVC0gzDrBU@Qmqb**UTo@y5sgQx zAD#R5WKp);Zl+xVP`f%L}as)ZNzWzYYBsF87^PE8ij9~KVEq_wbh|w!(->BZ@twrd{6XMO~luj_@WM@o5svF&uHa8^Phl|NeW&3 zH2L}2v9GUva`Cwn6<_2!v1l!%wa;iLp6-FM3G(su6jUOHWSkZCCne(rKHXM|7JTm3$*}9a`dGxsb6{_NPy% zpU}79_=?}lS>>;4UZmOhJ5iq-pY6K%(&&Ef!@CR*zOkuuqmgqntR}qw=km*~=`Y*Q zN;-YD%&RM9cL&rRzwqSth-Y8-MQo^@RiK-KYk_Qx!nS^GrC3s#*DjvU}s z?$rDO(Tm^t^c-^RQBryIPU7ral}G+pY(e!U4bRuRbYfdO`|pi9=sL8B(pq0Sv8A2; ze~mh9D(6)GQl}Wx@N(rho!Z=PQ)c&*s~bgqoO#Kk-lf@@DgT9y9lvTplOD5=w5?jM zTg2lMnmny1E#0mTv)D4R=e;AQ_3LgbpFHXC(IxR-FYU*UIkM}7jorhI{q|h)P;}f> z>hhBH;gb%}bT*69-d%kqro*PXH)pED0_Gf^d1KF|=PhCaLR&(iH4?pd{cvF2Iwu#37Ci7D!7>XHAA zebjfgli7~EmG}Q_9X(O`b zT7PyYjoGQx4yDHb9J5Ecx_|NiP8C||c0^mi{i^x)D`#8>d-dw=qMrWYm}Tu@zDHh% z#Z2(%e6aXE@3p0dzqxl}_QB6-wLf20ehcbZs>r9j1AOEw-R+0&s&Xp3l*s1b6xU&8 zWin+G-sZG5KgWxTAC)pDNU7ERPVkN$msUKjdC6fvS8SXzWXKSw{pt_5tF^2VTe@`M z`ZWRP!?&D^UDD-bTE1SjZKsxux0~MV-O2m2b~Ib-By;UOwEx0WEh}1kno84G>W#0&k)X08yQ_Rv*O5B$FmT+4=`uLseKVQ{5b@@|z zt%0R>=6}_x(u?{gQ#*P_S{x4uo2X0vTy5TBpC!JB5-P0nUbd$CnCNLEc3As=E1hwD zNsD@c!y^{PH7LGE*c8ksUP6=<2W%;8s%hf zx1pm7=aFsE=98785S{}24~o0o52dFHFa3WWQ!Ba9b!?2R!ex!6seiu7Jg@#g_fWWz ze_uqFy?x@VclwcT!fC6#S!W@6|AH3y&98q!T|t;z;0hqz;GSpjXfWl2z_`mL*RNWg zY(nav`}@j0TPi%WcgcC8nB_u}$v)K=z*6dBZLtZIqkke#z7gR~Gw^R6(8JCYM%@N1 z3^zqfTerBlXmzNPTxF? z2CUh{ejPKQ;vV^AvIZ3FZabc+e_-37Xh`#G>rG$gEp?L)%mL_Oe6=a?`wpVu@N&Z1 z9cwc1LK@I4Aa)%J^>RZ#YGMp|%u^L6jN2#Q+?(%!mjGN^!>=8=xb)Sj`byZ}#l-y> zV4VR=Yq)VE9&GkSNYU!vs<04s45RyW*K8gV)2(hGb2n#kaAwD41nsQ59H+9YSC+}@ zQYs$bmo%>!+j82zivM;~#_L0jkfK+FRVP7mNEEqI85Sv7RRO>c0|V%`Ka+ZQ8^>}%)z zQUk;>b4s9v(Z5vR7`X!N562Wj_t@}2E_!H!iu4$Jv^8GvVijb4jn6hmX8biWL?STH z|E`@iC%*@@;sR~EQSg&nbKw&c{+ODDFRlPkhpH0-bN!#fYVvAX#P0|?fZU;6kD~Kx zE0sgd48{UzJOq637(CHiGkyBENq39vHIPt5{(MVWTT4fJN_d|DY(L@|CZ5w z+Xod}LB-@+<(ywgq!d)19scXOxrZe*(E^&V%mKz<8Z{p~fu)2;8kLp=5upm>Iq33bHs8GrNdur>JN!52 zmp?@+GEdL0B`bVL11K?HdhT->#=~zNB4-BxW3}@i&I9NZe6-N5hO`x>bDojB!UT;M)$9lNFI$5SrYH4; z1=0w3Rv&l6!Epe@Uj_y`W^-B0Ll=#5J|rxgVGYnoh)sK%GD|tYzh`w}U96o~NxK2k zl9eK@i>b>cfd1)WVRWmN%h%im`fZ?-j9|`h@k$BkJT<>QG&;l;+Smte)X2fbUw2k> zp%a8f^>FV|_#Q-k3sLD&uUW^(<4M^eH2O|sNO&4EF>MUXH*iqJr?n@me!j>2C9}og zqyu=DtrCHGa{FFuT<#;ZQ4_M8Q`-G^2OnN1tlsw1V_uhsyqBO}dPWQ1#R3$V2$)Xe z)bwV_TMI$aCG_!c?qT737%^k6Sya7WUns-3u)cY`Kg_{*4?rn1dl^FJj_n357o!zWfP z{2B6gMVvrKz}qvq*!;}Tt+4oS9kEwv2ATRCF zw%wNi${TaLC!gps8DlOLLxk?OAOsBt7v*K;S7E~3SmtH(3KObA)LZaBbkyPWgoF7j zOT{zYfsaypt_Nx!tb=HSSocC4nVjA!Iz7PMg7r0$f0(R@I@r=9e#9sfRgGcbMwuLG%B^LC#*WiKV}W?Y-4FKXgzL zqSv8jp`m4Y;9{$WR-;4eATcS^0GAGWZkLmW%NxhDV?LA~i{7h@aZJzoLo4#oMFYUd zqbIkO#C%@^fj&LtdVq`RAc8ReB#^xVUO$Ens4(FeRB{CPw6nZaorBE}E*Hy}Ui<+~ zlr_-vdkYDmBEe-l|2h7`!DUb_3Fy2oeAD@b8Qi%{j_IQYWq4z)xX_H?vWJ6b?0qQW zJxqdjJ!$p$cswbGJNPSWLA7NKVv?`*IjA9ywmeH%Z)w`46;Q_lmG%|A?D?pzL%bUC zke9Ce5p)My{RSJO2Znhg9@&^;p8?!Th)7RrE8DZ-#8-sHPCr@T z2LDn3V$#{RbDfyDs&I9zIzi>Hij7E!6y4|BH)#CBrO?26eDtC-sT+&JH#R^OgIrs% zDo(4?;l>~KuJr?tN;mwVndfK)DVxdp^-;3n!;EV~`>jQlO+Zo!c1@Gi4P%k`D|;vZ zS&X6t!80~{<$*tiSGzA~EDZPxl3VCwdUyClIFBT2xugo?+vBq;JDxSg*tvs`9`P2) z;s}QU{$#^Q6(-ul_lud?#sHT@NAyIsCyIrQ=c7Y3QL0$P^o)vuxS4D7VkIYwh0f_w zIWUHW3crNKe$Jf@B%jJErKyl(Dfnx391F91s6jzW!%3Z7WDft(9WKD-HrocS=iX*tU#@NndAxcjAbT$o#IEG!r|VKBT> z6T713@fdfnp$FQi(v!IO0YSN*c`_Ug6;U{2Z&&5<9bjjepzw#%!Ia)2*c>hYF3lkf z2TP7jDGu$7hk?Kc^^%cLa1J=$-D z468}LYD1Jq1UB;AoF6881PeRyiM8f}0sf@^xNpYtSQ&ssJXvlMN5?dR~ou`UyX z?((l?xG?m;^F^Rxd0eTxUXMv@1*x0D6VmY5LGXRw|-yTTImbWsmP?!9z=Oa1lUKV3}f}*+sBp>))?TE zOX?eR9!zO$4-(|(n+@xpsE%f$_bxQcvI{glrl`KN9&=U%ojbkUdN6Wsdl-lclG9pt zza$NpF$=8T7kT;~fY$(+*7EyI5n$fr5+CyP9hN|{b+91i9VsL?#zJ5)iAHqtArz;BtvtZ)#v<6$DyuLrZ(ux z{a-{G46Q`kGOy=%HZ*zPD(8FznHU!j%hp5DRr`#boKx|jxNQ;RPs37cVR7g9G~BbShs zfXsA^u-k--iz}u*W0O?TnmARMhcZDaJde+6e{E=6SaK;?GMxu{2{V?K;7-r@iDkuV*4$d~?C1X^NZAhgTuHV?qyZLkDRtIlQ6#E^8Q zj;Hi;iFqVO*qlf9|XO>1w`WQ_9!<{7YuwC2tx>K$e zg!s3L>yOy?s6}JcpK{UPf$9Tg)A4OfFCMC|PM4_CB4eOH9fUHvWnxTs);i0-s$v3S zW!X*GJnbge`tm6JJpFiO5JdV(?>pB))Fzu}khyvmAOek?ggQ=*sf6tdqSA)U!QPl` z7j)x7Y1}!Oi>^v`i@=IDhvLtB4#G2TP@gLfBthG-n0_aGXl)!3b8((pX8o9lXiH0I zitgt}9YiQXw8~grPFt81YH!CYO+oP*>Y@$QrYnyk0AV$I$ewOe{ip@e4Q6usT?KGn(S$!M=KHbHS5+vX!X|j($lY#7|(Z(nli^}7=|MJ+tk`BO<=pnGO zCyypbsnhk;Xu~A5}y<}9r^>x>SQp_Tp1vV zB4;=V_qNI`wYN9aGz5t&+FdsqB8`AK5PsMdenM(4z0m`7!shC5Nzl-WnD|w1H(iCp z9kK!j>-$b)cpM6Oo1kD-JhC;yYAH~B+^Ax}G%KyYm}>#o&F)%-IwF=AD{J#sPRb9R zw7~30r`6Y?QdtTvFKF1DQ2fP9XyXTl7L8tNmMD5I&&klq`K^h)5srMvLX=+McAhH% zooOd^;~uw0^pRDYYe7xC4Holog^!JqKp}Hkg)QTuhZyLA-YrUBE{2HgW=tF+9eJ?7 zuo^z%ve8Qbe+zKhtT(Na1fEqS;K_~CdUYC@rvp4o2F!$Rz>Bq#ICwVLX{mY)_9kUp z08YED#T$(P*Ed8~8i>AbW8zjGg({S;Ody>(fvx^J#XI>WHoqMDS zsz6Fp;xTM!j$M1W9P;1*FNrAwm#(n`$-M(faD%mSw1K}=`}rK$q4O2Eg@SZuzI$&R zlmJbDa%d0Li1vnAQd12&(OO}*w17&o8Q>EwMpC?6;LsYmL09Gvwy<({I($5gu3R63s zBUpc4GBh`l9R6VOaS|#nM+2-V6Dg9(XFv&#R>MlJ@2On8200%37M4frOW|AqWBw(hTs%~ZNgvt39>#YL;STMyQ*TRy=4{6g zYnXP)0exu+mC!N2)dMbgU>vzCNEr=mbr{|o6jsa2rjc=r0Z%HE=$L=^V=g>)N8Plc zk*J}~CSnZCJOPe%dqeFvpmusqwEwvne)ei8>&hec;$3y8;fv28h(ZJCkw5E|2tk0G zoTK=Bm8;!f2F*;t>_d!CBGv^5UZ?GKn)Wr7^+x zblX)b4d6}yr^kMkuSS4p)kzAQ%!mWQHkZLb(j~OXH2=wG&}uZ{f#E?KWR-Q~DNSMg z9Z`GR2cbtJVKVd*y=T4xypgJaUZPd78n(5(G#O)c6lve`ke`;_9Qi_y7r--ex~$7V z5)5|jS+PVl$}jqvuEv1_8y467Aw{Q?tu zQ>t0_D@vpJqdhUI<&(V1=fjLs-@q{HnoFmWs=v}{!|&k;v1}U}=Rq}Wb}b{=e&@E_ zq9cUb#~Ma-NS;xL#Tb?pYPg%+x9PiAU*Sh483bAR>vDlev6*K=Xx55N*iC)0ALd9l z)%up#4=6g|NV>2q$&%5dja)(C*Ej8GjWyGKN-(*@GftM`<26~Y)&|MT=qPOau;*dg$b?#xFqo?PU z9-JWGI=FT>Ab1Rb%+0doWB_YD^6a`U?_n zXU{nLeOF$XQ&Xsl4t?vjmB7U-RaVS>p~8JRG9{W~MKxn&M^R{Y8YlT&cTIod->`tO zq+lbv@L`$N4g)XdbAWG@r54kVDx6Ul!WmOR%7jQvqM@9K==|EE%ici?1E2-k7Plja z;b3D^EeWHDEc=C>%!fjULoFb+EzG0=rHBGp$Z(KDl-dXt@n9%@Q|Ah_SYDPsnK3M$ z1+G#W=4qC78Tn3u;hqO7pqC7&fi?YVPXY?kxnvO`^^f6}5t#>UfbRc#(|BZ_ zZoI=!xzk5OXH8o5071fwvihmCcBvu^IPb`aX9KDhHl2bI@d;ZL^a5$pLN2JBT*&-8 z3=GV)Um80f%x>(-nfxc<_0^WJ^Pr| zqWHohKMg8uNp3$ogP~A|G8xBpJjftrXjE3VoZ)+?b_jJ%gDNUQR62EWeIpn5w}#1P zcXl)*EO@Dp)z0(-xTiq~^J6oQAXu~)L#@1{H$%%ipc2~cT*Uvy?#0%zx~y$1U;Vo| zq)i(ScQe6thUxOgszX{G^m`S8(pT_R-NVC?YhrMeGX^CcWZo3pC$yaTJo|TSV-wE9W!oElg`pA5xF`Xv|=1Yxx6i3@pzCRzSRq> z6Ay`y#6@F$jH>BhTj=nM4ByhHb!uBL3??0%79A_LNau2Bqs4k+O;3MqABeAo_;jrJ z?6?TDzgm~TO6*!3>~eHEBzDF$OAr4&Cq-ZbLv?Xbg>aYp%_~~A0dRl7)6!mc^;r?z ztduJ$TxH4J(R{1|w=>G%pY*isbdiVcsqp%!KO4KWnyRmH-`q6`@8 z>_Oh^w*5|AUm-I!K<@lp3Nq}QVST684h-3gDQzt>7xYpf|7#v{j%&)w$TQGak5?`w z1-m;9f8)QXLVbK^0i?pV@$&C~CK<)ddG|c*Bp-AR~%QB)kKIw?><$K z6=VexnCrRoP8pZ3=(#Y*@hr@{fke(3#ot`Hg}nM+Mju=c`ih&B}nn1g)U` z%kY9?G*}(+PnOu4rkIxp_(RM;^gQvYh&Z_auNgVVhNOjBQ6<>ehH21|1>5@NK{t|F zopvRQxH!LR#eHyn7Q;ZCzD-?At{-j&blO0El;%nJy9!;TVpgp_--?7Ir{QI3=Y7kR z2k)uKPO&mJgG2A8HXVpQn+!KaZyNS3F9|luE~mqCulGvko6($HarGI-Km)g~!UN8# z(9B8-GbDbvw(S?9i2YCm9bhi3E(-i>&rmcUQfyPg&*mUm3le(q7l7H5v24)kvPL`h z-bC@!S38f`4*U|(4n1eSsBIj6n_T*rHed=_vlt>`6AgCWUS?{JJcDD}WiY!pm-fV?oVeg*q3*5K zB*wABy@}7a?I9O2;!L-mme(MSFFZ7`V$?M7mAeIUw4B>{#Km+U@dnB{fUGw?{L130 z2M&k7heDwWMI@4t%*!`C&)9O6-1LL+Lr?kP?qc|Du)B)P8XbzT?3ph7>+Hz{*Qs?e z2?+)!UA0H|gql$F1au_c*vs`x6~*#Z_$mTILO3dCNo}5s2eXZ@nA94qm<&W8I&A68 zEf9SOW?Fha>>&-1I8nA49xM4X1EsODR75iL9&`TyN%H>6R%3%cC&QdGnxv^_Y_J$r zuZA|x2CAv(<2;odx$6h@cu=}NB@NIm40TLdn+3VH*A&UPP_0)^6LJrz=H46nli9c* zybYcEc^D$832tFA>a0o?9!rs+#EAFklWs`E(?NLi_QtU=Vyx6PJ=dZ9O?Cv)3Z3Vl z+C>rpE2)`jJ_Eom8Ii?0P8LyXLm!?;B=LB{yS}d;lFe-RUEV1ZfhSkI&j`%TX6= zxYO~-rG6}iD7DTo9_fGe{v%6>x&t3=K_&Wgf&6?Ge-n>Xqg=@h?7<4plrid1twyH_ zH=J&|UA%O05u_!@ZJJYPmn5JC{Kox@DTh|{qd{!hb%xun|Av)XyA&cHHdy>u8_Wfg zyD35%%H8EcRXDkgZhVw)sa+r-mx|CmSu2H05TMqDagiY}ho-kWI@)l6)^7OYTxqD>p15Gj+-r^##rnOsMb60> zUfjkKnYQzJi0g#MXe?rTgScTr<%@U7F%Wk+Svsef$p>obs|XP-Ms#nnY7{{yrChX; zAD_Y%lb~~qoTUo7(Bi-hCWk;=ykOfFofei{++Y^?!o_L%SMf02X{TngBo&N@fWPEg0^j& zv~hvZQ?cr&vp4@>O(|@$S*<6ayvwmPKQBH$3Se@hcuh*$c}w`f*j8g?gvR`MKIArx z0he~^8SbtXTuh=|j^XC^&KELQxsU>h8&C+HH~hIul!IFs(@&M*k7r|KmC=9nKBM_M z3CKLt@ax>!who|wKrwVYF5f5_n%A4bP3Qb1S8N}JR%%ndc?wsibIgRRkrLLux()|w z7#6*>uAgobK_%Ki84t@+*1Q~9_g^UEB;=*@A{jd+AnR1_$qB4l?!_zXI*|qGI>hpH zKYHzzgw4JY;OM%WYu-R1YM2PE5YK}m&`G$B8CN~CZZK4QuXHmILx*e&(pjhpN4Utp z>h-dc_Ck+ClY?$isewz2Lfda4HoZyOFrqYP{wmd-#ZqMH5APQ*ul7OTqrJh0pIiG`KdVKHch9cq0@&NVWIk>TB#lvL3Z=uZvMR~HpW|06mBy{BeN z@#;X|WuTV8k|OAS9$t1?@C@jwx{fh;yjO-wJ3X~zl;K1B$rZMCzxB>QuV{aue-A_? z+mQ00Eq#xfC^~0i&h3e3HyIhz5Xwn~C0bDP(r9x&M>u2Gp=QdR>fm-QW zd_)PprRL=))eb@7dC`}&9nP!A1rL_nd>_K!0vTf7Ydj&JaI7YF3ds+mE+BJ7!}MD5Ei!Iy7)tkT|fG zo|#!uIGu<~Z_NVMsSH!^r33DrtcI48nlC!8`pL!dl#AJMkt3NuZo$Ng0hx|HlRNMv z%#AE!#il`Y4$$e~=bX|QbQ|Gu za^(1|5&r?6Tt-gAzYjA8-c}giyYoTw3xMBc0Pi1Z41BKgq}-FugUW4omP7BN7EDk2 z0a3=l+Y3wIr_0FE-2smUn;!g!SYzNFgyG-c9lCx6;J09^q;?x|J+F!|dx9uKS(5b6CPaH+P2_ zgU;{?j|V*4OzyT_WB`ADq%rUepHSf6iJ9cV403LTHv0x+je%z7)bwcjxq2IpYWxwYme7}$FVrQt}V5|7*Ji;aP2_=LgVpF3=a^ql}t`-B(EjDTm@WyZqrJe47QF@w1(-zsC!89w1y)h%D} zUZbqD0epW{H%oSC_6(me=t1e7c(_qE*#O>WqcQLdpAf&Z-?wzYBekGsIHp^TfoJG` z$CYhMuAyfm40^WlP9xwME}?q+{kN70+Kq0H5$Ft$U}@*D@;uPT8OYuXwegZWmf;YF zJ)3v)tRVV|gGQh;{K2K9!THFsToNPDBP#QV5$Fte&>(&ODUy;U-iAhhddvuPhBq)j zJ~VhY(o;3c>o4AGV_#9K-i4!&z@EeVkbAD01E1c0X?{rro0H{XE&M7|OVy@VnG7-N z7?r_B)c7B5WhIdrCDnNJjMP&ENfF>1;Q414MklO_r}z6`$3^5>l>+qU^}}m?L9^iH z$~a|rbu`LkSsS*~_Fq?!%R0ybf4a7M?QJ6o{89+ zjUOIKT!MzY1chG4=b=&XZEyt%Yctoz;>9!#NJy^Qo3fkK#}Y_>ZAl;%j=Xq~_V;ZR z0*Yf9Yc-0r-%}Q8f(j?RwTS}dQ*WytTCoOhp&r}<-Ql|=poIW81h}~isaQ+@_OZLl zl1P@UZt3Fmb1%f@7G`2h@BM;p^XNd;*MO?ko4=)EO!c#E@AgAad8#hCV& zcr0JL5mZev?b8a({QS36j1Zto+9-eWtg0c^hi`vN#fS%rtg_uYQP2Rt$V?bBM~*oQ zngv6DovqfcC51U8Vx>*}L%zRcVyN$8(;*@21eq)g{UsAad#>)?%%6jaEK%q-xfc0L zCPrixsC7MdK#*xlvA<+uL|J)<*awkfYZ9r@ZQ5V*FPRt-SNe*@&LnMO$W$AL--V+V z5!+)#Uws#Luq09QFuh1RJX! zWNaA?JMu>F(py)jta#G>x-8ZgZ>ix7wXmMuYQ(R018zcT{mPgv^?2AJiV%9IBX_2` zXY17`?4X9S*iWK&DE#cXpon?19zsC*im;pTK6urT_-c{fzVH=1C4lGJp%KQPF|&{5MHt2+ zoFJsTuW%~~_`G6(x-Z8}_lIM0g!uH@#kq|XXj~hXfQVVcd~4Zd*7>zt5si;V=h7?O zhaII5@V8(u_gp-nG0>~QxM{Qb(wT$a`fm;`(ItRWx-#(-)X@e@(EO>Jx|M~F`vJv@ z8YUz`WJjf(0C{Co>7$~yY*)Fo zqVj>TSHsgQkK?%<9$9x|YP8AOm+A?R=FA0QnWW;WE?k`jrQNBCT=Za%mcocLdtFwe zdvMl*quh4TF!4UZuv<1(%}Z8M3otFyL-+mwNwC}-Zf83$d+Y=wYXk;* zdLD>_*b;g#OYYFn)|n%ICC6rq$usGDVJCF`XWtDH2!5M*)~(>`-nsAT zV_6LCpXzMpuo#}0e_)p~h&;|g?z^IAq)_E70Uwd$;AKnw?E1=MO>h;D6L z0bZNLbh2XjTR&F;i|8oOtM@(#*68a_PFOC~c!Cq(t>$a>GcUELQor+xzz2Lj^Z7w_xL3rS7 zY!C^Nh1HY)dBa67F|Uw^WoS$Na8C@H_o{F70Q36fQkpBUR2tXip%`wkN~vSL^78b% z^{gn!OKyLq*C9in@o{lSr>W-Q$GY^7Iz5nvr&U`q~B^Q!7$O!SeV`-&{ z}S+yowu#&yLzBD&Lpf435eM?yzbZE=SgN24Si&xZKt{Wdvi2 zT3&ic+$AW!D{e=peT!{*ad`T+gxpi#nj7yfky^9XsKBpF%}HIWOT%RZsE0O(?I&-7 zkr$rnF_d0YBCxj#ccYW%s)Y@`|Av{1k6`>~BK<@At}}JG4B5ER?7qxfbN${Ski8tx zX@~pTK`JssEfdzq_dg3?{v7bMT23{R49#8Osk^+f#nXkdSujL8<(9`q3Im?+O2A9) z!a6Ue+uGnRz=y$HYEkB5+nfuY{d$5h=&JoM{qF-b7O^!gaik{~)K`@dPVx)9JBK># z+g5J_lwA^IpYF>Qcwd;~X|s=j;TSXZ8fxyb^L_95?{yJoX-n#djayoZLgQ8@5~fJ- zUY%x|KIsJYtTC`g@77!zvXP#sjnn9G^SiL->$}c=mIUPt!dziRb?1-vV$d9CHR17H z?>>Mf4vU`qGdgo&$&eI{42Rei-q#iSm~0SPELQT-v)*CCUC+E%HP#Fdd)@}<`3?NI zGMtN^y?NsyGKsFLbmBJI&szkI(^H*U6c_$i9G9~I5bn_uhcsbDp!&10OL{CN#7e-& z(=u_eOosCsT~oQ-7tX678bAwwEnWh6&MnOhbNul3)nroWXksvD4AmKh&%DlHQI#oq z$t@ji4Hm+AanB~l8{`~D$+COiLU_`;&aDrj6%)`3I@++o^UNHM+>cctb;Ubg)oe!V zFmhwI2P~DI``Y#Ab7ZYEvYsFjHlU?>m**!3QZ^X`1pf@;BWt2nJVzWq@k=}M-uQli z)2rV+!@0nikb0o*=ueXOPez$xrEBe054{Tg?}xvn69)f{ltLt7?c3+6TuUypJ^&X) zQ#g*3Lh-dhDlrsTr)uu9%Svrsy<4wE9*io4V?%lM2o+0 zvSe(mvpw-ZF=H3_Zo-LDo!}}m(BpJ{PTlE}DLiB15|TY*6Jtmih!9`cVh8@WSGNXK zerS;&HHp2QA(@I?UWSWMa;1uNqQvu>TD|v&BS}a8pB{weXGtYCY!X?P#|=^v*e2c zhy~%0EGg8~Eqqi|7zhg*`>pMycF^u9%rW$`t=Ud4q}b~YlSTw=&I4JOz_Za;fxh0u z1#V;e%kliOJ(0!Rmo1%A=Yz)#(~JkDllBMrJa&Klf3CqwdRBzdsd>#eJ;0dHVCfQ- zF2d-Aq^od0Osii$l{|o1%2YqoTIYlaXf8i3BKf=Pej~}Dp|?nn(0y|EJfFngs6MGv z;BoPOu>K>^5`ELkd89NsfeSW!od5JnPTrU`94h6RP42L~1rwubwp|yc$<^l~4roF2 z-dW@{7hWmQ)7ppIqBI_=aAjgNN-QwJVL_6F36+&^OKPVMI1i35=pA~Z*4!865xC1T z_X_iJWKwfBa8k8A}JlJ%sgo0xKvNCb92 zb9ZlQ#WOEez{UkbdMkyh6-Dv?qF9igd>&Qda>W07VJ*yHUw&P=RhP+$t`o3K+HmSr zl?dss)*ywA-Ff!S1{bxLzfD0{N6z27Q!~W(>JnKzLlnNPq`p7dEBUhjD6|Uq4(VMT zp2tEWpRZ2iU}x)u2i?iDop2msjOly%Aj^hiKNgpq=xOj%Es0#eFAvXp1WI^v8mIJb zw;wEB!9p)YUF%9@X@v?0+~GuC5ESMJxNB0V6?&;Dcs!|I>Rw+W2Wk=Qo$Q?@chu%} zMgLoXjw%YjMZbGm(?%ktLKUOLGf1I2(TK2D#j`)!fUFdBNM9)L;2@EV6g~xpGc2A} z3{j2JS#4brI+!!)tUjOeH0#xpC9 zATUY5N`m%}x0;AkAcul2Ph~XQ1!Pnn|Mnh?>kc}AP8k%Ci{s-dAK$-ll5{m~E4(<$ zhQMGEss%?% zTqDP?=6u$y*N4qeaa{~3I$i4;z{Slf3&~oULv+?vMxH&3op6QJ$&i{x4{F6h&wYbR zh_ZX`lC#`XX!!8ZiPeE_0yCteujdL5I&wUUI8`WFtFTirGnbBiP7dtj+Hk$qpt=nQ zJL`ceHtNFF9j}lSB;IJ&)5qBM9MpEsj&@{FhGBL|Qt4Q!ovLBC)20EPT#!VY;FeCt zpfe7W1)92sF9m#61NfC)je%zzARC}5u!-D=)4>3KU3X*P8Hb)`Z=F|iF5qh$z@Jqa z18*-p7w)S6%0d|aRHQNR4#My&*Vjv)1?dYLNS_g93_RmZQ~HG79%+DYX8?aV));uk zL8c+MiajQ`SR2AWh&KkFaeAqXS!$o%g7AeCje%zzSxW6%D(nT|`x+?6qL(r7jB`qL z9|u1W_6c!)jDTmDy>*R<%j6=cxdy_|=x+=an+bZ_YG2aGWSo`HU8 zPi$jy@Aor3haxrm*;O`7+cAxc>KmJ&ico1qlDo+sii+K!i*O`&=@qWm zK`#7XEIi9oR$cJ80Dh=8IWEEQsn8GO`!#rke@zlGw6Qhept$LhW3rQQ?$MgiD7iWg zueb{j6w|S(A^rd-_lwcFgrOO1F>?sAu}M7=v*y-ez@xc~(T2RBp%X3kCyk~M$w^m< z+`VESxXOcz-nf;YVsmBHt-D2_HjbSRJ7|04Koy|w$46(oJDuhri|N0!Z=PYTq5F<7 zMLH33<_rfmF`Se-h2`{vXh+{IKYxTf1}IYVdc$el1#u!#`0)4B`x1|+!Dyx9l?GSY z@PDjFq+2(6hWWKew|2ru=K=~`7eg2G=Z+WRRy_kQDSx89*G?X`CMHImz&4kSTPm&} z3Dk4=YT?WIeZ9evI181zAr&@QxA6y%mO)h7hhMqL0nKtPp1ndMS9aka6KQGZ?Rtj;hbM^rRk0BXks{LmT>p9QJwV4o zTH4y$-Q~bjck;8#PVOFRuI>!wnsBIuQz1vjrF&o)8Hc1(+4$F2Oft#oZ_`f?dqYJ!Ef%X!n%%oJ#><9V?bt_08*11IYXWUv&WI{0_ZfgW@p@Ve<%nXnSrqF!BSA z-UxPo#e?gW^->qH3Ka}c#5xuY4A?dgB&YDv0aoa1Hc4P&LR?~kBv*Cwafg5FV^Sn_ z5%jTu&^K&?-)};Y!$3Nb$?>RDS;x%~pDapfhIjAS48e)mCPPiOl*!@cz}9BpfIbdA zK|8F%AJ`1orNJo=;lAA+U&QnV5IulMJMgw2#Sq)#4Uu3~s0O7Qj1tAF2l{R#%j_Z8 zn4pU*CVk?d<8XvBMl{kXQfdC$5)gYPK69+=1VqmW)AIbo)NPKy9zIe+dA~gCHFZlu3$P8EhFT|IDb3Cm7$+Ttmf)|xug^0y8FPbzrm6-2)BQhDT3 z)TTRs&}1k^)EDf5(nR|!N+Swr)rLjHGFy69UGuLLq8@R|D8oA^c8uAxY$^=5Lsk7{ z=sP1&TLiiJk!O-nVxW#grGc<}JGd_2i%;m2ujmtZYT&)MlHP)BE-k!tpcdBwWf_|= zU!QP|DeAjr^RZnor}#Qr|9^Z8<9;``^Hj1qI~DfOoFeS%WF%p*CNVb5Hb|Kqtx+;g zj|@GZH24PG;&k{Pn(d|Y->~5|Ck~tI+4?hTgY6bRn$5Y%->}(p*}UHNKB_?1wM2CS z9p#+HyLjSmBHP%rOod!3l4BpN5ml4wuHoKNNTR~R4JL!8q3W`CprTXg6xtnRNXGQ= z!P{D5v8tuti=xFakWNBNv?DFsLaOi}^7IplqpnV!QrZvpYylqn^1@MpQhA8e7G{#x z9nC_dFzK{$2HlbDKfk0Ux`LdrqD#VtNXAqI2RX{4)y$GGU3*2|_Zam(3h8qcZ6{T3 z!a-h;%^kDkF8c^L8kUzF!0|yZ(9vvIM`JkX!H}Ebn`J<`Q7~LbXv>Wn3^%(P!$4lH z4_Cu48y;q6b+!dXcUj4%3;mN{(iwDhthMLsm*|EB3<}z1ROl`Z(MPF^lpE%nSYlVB z#Ew?6Ny4&{6ow*yt6F&l?naWe!qybst1Bg-c?T*&>>X@vdC7!9JF7;KM~e=^cIeo2 z0Zt#Y{OE6av->cbM=;wjz^^nypOK~Xmn@g!#R>d1#8f;X7uy@Fw7SzLd~ z;?++aJ;1|`2VUCpt{181lNo^bO_2ibzytp}xk(X!bgc?qOE0$Ojg|u5kOy9KvTOW* z7^_n;R%uiBnIaC}QWG1XiqVi7GagCajU8sc1Bn+%=*8&LX%a{hqq%m|Vn(UNTj<$^ zrux~OPcy{PgMEWM13YZ)8u1$NIQILHG4PlBYUooqFOW>(Xv3pW3~#@L4B#_m^(ktv zl1gFM(2++G+jagk4JkZ_m!#8P)iz6|u(#v3!X>FtfzcQU@}l}Z{dTW7g~G>;>w;GP z(_s2#=;$Vf8J#!2c1RMsogH_iRk~+#IurPJ4Dd^zl7`RkfRq`Jie|!vo`wsh zX23-031<5fsrWeR%$@=s=fB^CJV@gM659ShzLG$Id&H1(=V#ncj=UIF9>MxQt@O8L z9Nvjjgg|&Ls|A&?iPZLci_dp3v}R$$n{L6X`b96y>4+P7{d*_I`H z5p?uw-$e>T5P2W`H-*r-0HQ6g>(M<(9cO3EthCcD(#>d+98Ix0xEj^L&BA#U5o(Mg zgYHc-&%5Uh>|}jY{RKlm321m?+cTB`=ZKnn=&vkcHc}QOlN}wd?;A5lii-+xFQpEL zgV_XIUVkj^R1$};kVm7frruRa1pexXNG`+F1$&~mLCf`EIdq_L_^BiYvM0oA!h!A% z5$RSkSs_>bCfs-?PJj)vp5ba;B#&Whxh-c+0#HFQKtIkXh-(3u6G)cYbq(Zhijamp z_~GVp1yq<_v45{uT@n*24c?Il|G@Rbp!&6OeA-7}Kemw);Bk~EI$EvdG2Hy;%gF+W z;)h}{!kHRSX%nO~h+5LgLnZH$9dt)n5~H9BVil8xPaa7&-wEIA5H_ zgFl`-%~m>CqpL}*L$67k)=L6M4FInvIvktflmP7R=nXn;dT6s$d@%*}-+Ot|GkEBJ z2#x6hJ$tt}$FG=>*N8=?qkO{Plhl^_Q^4Z`;shkSX4lBp!HGvPd`ZPeeBw?~-d+wPZnoc~1`92ffK-Z-C-V-PA zk&DP5r3>m60{EMlhiUlur&8dN9pOozkk_8v@+#X}PJfhHyb*`@<&Uy^XRiF02-)Wv z$UgXs1aO6$8v=i}=1X1gw`L`L^}VwC?ygOq;-b?*OJ!)NGBgq|@~E`2Jer|<%`2v& z6=w~`Swv9@G#XWuO2Z}SGxE7%I3zkYSC)}LfJ7lr{Pcx>Jujn&=O9r?`%!B% zar9uh9S=ONVb3_cX(tPXqozlfvYI4tF(>!%c9D`#u;%)P4xpvqTU!c&15f&}z}r<# z;6ZVjy588zZ!HD9p*>eQDfg;1a|Qf61NbOAN$`$b>4VK># zG7CBdy@fp%#`vPw7~NbYfa8V+J6l_^&V9YGc%ADYX$SM9Nw&$Qk=Q#sh>`4G(z@$c zSkO}R0zDOf_K`rMaC47Vlaf=OA?0;ee^!FS7ej$=NZSDE99XsTNS;34Y2prTwMIke zu~wy(Boets%MDs$EUx@43_o-LEujr+e``quJn8rJ7_;|gWhC*SA9|***-iqux(6zw zR9r{*!NY8OIfN?1k%^?;Xn3MHgTm9(gD3yg^6$>>M9^CwK`$-;wVBe;#SC>#h`m{L z^lcl2Ty+0_nk9ij8Ld;=+3=e1Y)a{(Cjj2IzCJXc1EXQIm zlh)DFEfNT#)NwtOp;0`BvpbttIfgOt2zsJTRIyK-A;i;-2R{9yYxgzSZhQ+PqB|h@ zkOc6a8nN~3nOPq9uVHZAft#Q$boga)f;Is`+;He*Ym@KMuugJ%nAZOOYtqpD6mIrB z1s&LF(di+ye+Am7eTA>++7ZOFJ(+zv_L*+R@%po@1f{ZCG;ov zQuidlkp*Nnv~WgfO`xl`D)dkv!6$7jVb3JMXH`}i5U|u?PO0PGJ2pYY@2U~Q1ewgU zy*YUT;{-w}q-b*eEZ$23M3JQmg;iN~@B-B-x$|ZDSMQ7=d*9z-i*$-0;j<(zs2^t~ zL|8(CFLo!lZ>FPFbgkG)T&~B;2jx-`Sg?>6C)#NBZmTZYM-%I31 z0z4(FSK3$oA8AAiH)$rZ`=2w_=VNAFTt@#2v);v}GD+57p$UOAR$}nhf&ScbSsy~H z@)F6iUwf6-wvNM_z9O%1Yv8Qu?wVgw5}l`98c~(lW~Wj?)Cxq+sdjy+B8@0}A5|J# zohQpJ4nvER;hf|Y+qY`Quu1N=X*=v^wFM!mH*%*4?aZYS>K)t@8D>dZ^Eqds&b#m( zw3+;8A&Ku-{hf_8eeUcuaxI>(kiEqa@SvLKT-zu*$qK#czU0|7jDf2d-n3!L>?ARg zGGr;U<<{3VA1p$XDxmjhqMweEh`?hjh3I zN}=$VdK!;x$5z~OTKychsKE%J2lrGzNt{`mzBr-q>nSka=|933c6C&}yy(Dc7~FD7 zuWy1R^EFi90ER?D$2UcLlC@DwIA@wLEW`*x=`EbS`CLXh5Ee0L;re!x2=V$xR%!@o z8!u%jUY!#0myR2{{C6FM^9`bfMxCS*N;A;zd;Ci-gt3@{iC!i5?!k#&AEXW_$I zmsFxGqo0ZmuBI;`AtpAX$wey-q{QotdV6qN`9Rsn9erbQRyOrIdiL>QQRxRdTQ>FvzNdliclMNkFWdmuFsecgqwdLUf+$st;llo1R6%oR82K@5 zang(JIbu+ra%|zjsh}E&cPRlGt_@sjO&X5j+7vqibRNCQKoNoADcKy-lu|2&%@Lyv zHB`!hN5kurN0m%5pV0fJ-Nm4Coz)h+MSy6-`r@Zm6`&2g)2f$jOBpF5soY&Ih2dy} zq3`X%fTuF`7-Zwb7`)u2Fr-X9K4k!6m=@^KT9gS+og~J_E=;}^IshVSXtP87e} z$@Fhp7`Poyb<_B_AB*98OVGdB={GOUFot7c*3cA9;ZRPLLK%jF2vKV-zq``& zdFYJ$m_q2zm|IDVLgAY`NXqGKmTRt&%Q2(Y>0dGYh|m~=3i7~tr;e|MdtQQ=pWb)5 zAqg+*5)uqE&t7qwSZtN6g`c7(;bZ@J)327GdVr6NuROXB--; zGNNvkF;LB1eDu;_h`AIVX|4HM{m|^eU>JvwwxvW1i7a9bsk8M^FHe~3dYCI60d}yI zNI{=8$(<<}5PR2VI6A#12%4h}IlpgKQoysGo6y-tNz>MdvNx~w2HSZI4SFl=O+D#s zjt+!QRBfAk_as{$a|+6)$nhb$yT16^=TQ}*pfGd>JwS#!NT5NiZfj#}=NN{(V^%|iSq84! zu`?45A?GmZ`mp>s^udao{^$lQPK|6G!yLFIZ(g66dL1NpK|)X7Zq5=&NP^gjOVFl9 zk7V-5=nzbP&8Z&l?;?dDd)D}M$84?+64u%3J#N>JpgCL69C`u&qqzjO5O-X;&FPYF zJ!UO01!!_hE^XhWNy<(CLyXo)YjosI(fg(PF^C8gl0Hf~CZ zWIV+Yic3{ga`L`hTNs-s)t;2@QYil5OK;U9XRGx^puU-i;Am%a4QI31p+lCB$3@zI zC>dQeA-%uyEt;|&&7!X-^Nf&$FUh)z@NW!GVubI66Z#r()NCJlye1aT&IX|}qah^XFWzzbH*u#Yz){YS%B(Imz zE2G*;MiBBkiqPDBG&7T|S;)B-I)MGyQ!0%ZN2?hjZPnnIj;1uvQ5^oV>n)i>l0}df zJ=%TlbuX}yfke+nh5JfolWG=iT@JLDgKQzlJgBC<>?cZ=t1`|AyBJqO{t!&W_0a~u zXn-+{Vx5+fWcp80v}&z^(|a>eGLIOErc&=VpU{{SXp9@BzV1V$lSnp=>F0M`By<^| zYfjM}9V(qps%@+}v}xKpFl9iCbmOdtNoJEaOA)(Y9cFIX6;zJsFnVR@H$s$7>?&14 zu&zR%u_VlUgpZC<{uwPwfC29M_ zh2xtvB^69{(Kvdxo0)1ftymlL%9k7`c^x&#yr?#|oMjxDv;dFvp0d`15h`$!FrQxU zeVHxFnbRQR9DLgduU{iFPe+nB(nv~`w!;H+jikuF{!5sq%&Sdj$O}m(prMx$z2_TA zqj1;s5+=D@*Vif>BVn`-z@2qn0jH8;y_{#6527OEfOWcT?0AYBHW1P zYpzvU0sMFa{E15>;5QV*Uy)e<6q%WwFji^*KXaKleojHK7?0b4{1r}thrE_b56%rM zr0_^y)R9i<_x)X!(jX(T6g^O$uaZb6)}B#SYG#nRY&i5rw@0}~3dOHcFV`k8(qyc( zcQwk{_^soT;fW!`ym$9qEAL-`=#vb(e53?44<8c0slk ztk5KCLsdaqO_Cb#O|UMUv$kE7Fa~5KvrcbS&fE6aWWruVy}e3JvR9pfkKRn4wnK!< zBiP;hcT0r9|Lw7H3ps*y0{u(}6@zw)foEOgnmtqen&??~X`XMs#g}aA@5V=0S6lBD zVWE0OxD91{J1BYsc_}`+4OaV%LFa3#a8#qJUoawG!o28YQ{nw0EMDqfsxXBrG*PSK zO{@vyw@1uI8@A!2rz6!t5e7-Uu;Sjr^8?X>8fXDMrj>`p@Kt!LK&J|8i_1kcJwL*DZ@LJNBB+s#jku;izl{i2H)LWezL;nsMT9i9HgP(a5ff4%NBucmI#Jvw)5&S;BB|cZcA?H8_hV zlK_DLAqlRNWPk}VCKE_-XBT&OU!28#ad&rL+}+>b(W#m4Ym+zU-1D-#=hfF$U0q%6 z@7V~c2iTs3ee1MVHrx3sPyUgj@312v_p%}9JExh9y|MD-Ki(ZK>JDmNEaKDo*A5pn zlKC-Y_sSmrvtZO4_-NZmdqoE1+a0f(VTYLyp4y9V8KQo}FImwZEzveY&<5$yBmGrP z975&mws6I?F)U#(3NDS0m#%AJ@+qD7v`W4SE&el>HR%kj_e~iJ+tMtIV4`fH2x$U= z_hlFXCO_Mh;ai`%_cFn?{>y3|sa7hIhnNu^v6v(Ctul6yyX$XkA^nxxda#u5rIHfI z1P2*Np{d8pvnM}F!Spm`9{5cOghc@v#2>{y7aUHB^Bp#OJeU4fgg|qbL0sL_C^gG- zX5ga}f2UJs5w9JxR4}@7qs7;(D6We$7az^tiD2>pdXyvHvpba%0NavhF$E-Y%tA!; zg>+)k;n9yn+9vt)tNl@=0GiTexF)U7Ea~N?VHq{%$e!r!NtWNwnc_PuD_rIq_J7l) za#9vW2r1#EX1%++8RgHD(YjeB$*Dwm%zX?}gfnxV=RbntGYiof!`zPY1oXB(E>hy# z&7Qw>1H=bFJdI^_3o8*Hw<03N$e#RouURnCQA7ut6Z;fb!f56#C4JUubEf3b;BT7~ zUrox&OIK3<+I=$?{ltTlcHT1LE#K zujJ+9BSq;~dcChRs=0p->$bMnMFm9)QEq?QQS6{NHkMkoH6KrTgiQG-RGdGq7Am=1 z7VGl=@{t#gvyS{&AqsAeB)HA#AV!#jYy;bZ@O0VP+zy+;pjp;s8A&dF;bs%gt@{Rr z$E=OS9Af9ZeaoWTxpAv+wMN^z0{5Z5>D5WP#FiYvBXA5bsiMQCc5wb@s8%|}NgbdZ z5E^2})7|{U!Q)o9+-#us0DU@5+75P8Ou+OMo__AG59ubjDSp?Res7oQ-c+Y7d@26>S4g4N7|&3^QXx7{8j+{W{x+&5At5R~BEw?^%=r`JNb; zTReAZxmUc@Rnx7z5a$BZ&?Lg4ubkxG`l#^e72D|N{h~zGJ80*bT5Q|uR2zh@pESZX zBB)19JI2A$P!kq41h1IvznnjR88ozxuz#5Z)ieZyx$%mn6SV3rrpJ^g7DyZ4(?yj8H7v+t4$D`%oV9%2Wr2G?)w< zu$dxSxBjCP6Qt|5{@cvYPe6e`3tQW#?PwW<5jQiLd?Jh@`+O~5`tos95Vfi8hP zo2rCk;X-1_lhd`Xv3I zPbr0W$7|epFkRFn2E2(nmI)bLR#Y_2Cps-si{%HU++QAaVJo&D;ZZb@p4li*a1RUh z7aV1Oxoya#k(&p}_OKPIX4vhhp$fTSMKg@|d_P z;oIi+hTzg=;Y*+K(dPVhhrDcWgFZam5RCUVO-`7_5~W)CzlQh@fdU`UlhIUb)Gk#J zz77F3OQq|c&cWfIT-M@y;C#1e=QT^xnd5pJ{6kFvo_b+d@3n3Jp*wJ&GblZ+62ORU7qTIBH=ZP;?D1@{ATtQ$#Ags7AU^GiNJ^pqqoHeBL40K(( znGA+tbXPhP4oR^S+LqIgmbw0r4kr!`ft@a9vTmI(zbU0D7*-e68y7c5PB;z2IqJ)o ze=EjFjH=788Z|r()X0mR+$F(c_-jzAtkN+o-e|ZR$`lnn;F7i4#XEP>oJDtX)<&H# z>6GH62B$4%I-5?y2kJo`x<{a7HpTLz$ELEXESp?n1G_D|u1&7kIhQQTV1j>%bH(Cc zhGkBMcG43c?YQRWlaU?0LqKMPx25mpFQ-w(Y&1ZVxg`0e#k=d+zKw8kGS_44;KA1* zI=_wR(goy1>mp3O3}VqMch1cB5Te=ETN<4@6_gY06>1DIH^9T4dO>tLzHa|+wxRSN zgg-jGn_oyqc)a(^SpDbPDL2^Gx1m7L@<$YrLEyd!JhE%@)cc919-hw~(}&$0#P0T| z!d;!@gd;s?V+*n6U-%|lz;5bWXCu6EacSZ4{hC;K^?&mh{DEri3ji&7o|1CH!@JAa zJg`omf7n5yJ!q(ORl!tBTDZkLo(!Yc;X}!%fWfx!(mZWi8EJ;6p_|@6igi0=5X|pC z*Bm%nt1>VRQ3*6AOf07m6EisCi(hIu@PJJ$Ey72W{h}45#W!`)$yn%40q=L&QS6QA zXz1+2@QTv1o8k0mKy+N-m-=mkjJjtiG20wMyT|vHWF#AU`^1c?eU1J-41%yQ_1U?( zY=1&w8>`f*DlOm3yMc^V$_A9q&CZ0KM)yuFZmuRH+ouVel$Yq%@6D>b;xEYV0NK=8 zzSfkH9Xpc7R22&fe6tTJHEG!tbg_G}f5}sw<6-;F$a6{o zmhk)7R0iVXDZbHfvDcvFOPL!&G)@0+w2%?Yw!sDeR@5z1+SzS92L6ZAvVM>z zPxpP~21Fbx}R;OTXYaon*RR&;Nx`Q->^ zXp2A;dYnzc7xYvpSSPjS+wJY{myaNuCFZnY1)9{!_rNPteBZB-Ik{;T{H1GYYp2{8 zu8!Evh#eChuluepv5=Te}4Y4$dAxB}@C3-0F^ zC4DszWnOAi?#v_QCCkmwglB%Sxdi%PoR_qU1ux~LyESsR7yTe)Apx@yF9{2Wp9|LK(^%0p&}tYiuK5ZS3^o#Ph8|$AS>Hlr;{+r zxK0bdM#3DkvRO|6+*+qVv=V>mwY_`z8XzLzFEr`dwp9^A)?@Bgyt5!9?9Mjo(?D=! zuM&cE&GsC0A?r! zolV(N>0@!_vP?*jb)Tp)?~dGq`obu*O^rFHOt@V4x24deI&8eS9u-Q5()-TK68O(NSXyW6 z2HmwKP~Z|iTBEZr%8K{$Y2p#ROkoy`8~i@3s52OLKaHqH^Wiy{lt`C#nIo-!yDdP` zkK&_)-2u1c0m5Buts4$?@k5#OVtSg+P)FRB7aKc;!4Cl23+FblQEqP=kE!%dv1k?u z5M%g+;73^xPeV_{b4yzx)N9Wjsl4g?&UfvN{jSDs)V=_qW?WrA%M%ok%oYWk1q6aaj^BTOeUTM~m)7~} z@7?y_GWM=a;hfevSFvVt<%_>?OL98t=dwX3JHVX-;Lda>ewJ2>2_7L`LnSFo#}@5= z3WT|NtV7C$wsMrX3mqf@&ilNs)rD(sLO)F}W=!HQ1MrFP3&dJO{Dlr&WkgPcda?Me z>c(Liooj^Hc*}qNm)>J1R;yqZk9x};p$vDEDb(Z|!O|hVw{-OVmj(LMX_*6 zYM`iKo}vEwAZ*?=p`Gxhu78&-Ez8Q&!%Jx7c-2EvsrSyf04lSQlB;G-y1%JVYcD%X_Fkn--#PHYVi&6zgw%)Tmj8%7}__2!35%+WP$l zdt~4{yqWe@|H+AMJQLQ?Xy^-<1jDu@lF=(v94 zpE8ntO%dT{LqPO&2j3!nZ!|yk9m1DGICZn+qhy4)#4?(k_!?suKAHpZXYkQ!gHEHB zif?HOvQj|gbh$xE_;nb=Aq4vC1N{v){ucD?(G)gOdjlbYnqiWJ6t|eId5!(`jr|Q$ z@6%s!-tK%079Na%PxHF-I~Mof#U*|1Roa} zZL-!HR)Wog55Py~OP(!J&El(*^ZWMjkEol8h%Y+gL`|2eMZ{boAfuCulXu%x(C06F zbPZwS-`aqD#V-7}>3|EyCQDkN*%{tC!^B2gXcT{;yT^wf7GJ*%IFVA^nQj~ z@<1)QkXkCgNiBihGa#eT&URon@UQ| z9qBS!rE&2YngSY)!bf+Y1nknp~3`!1vRzmZkZEFq0eA^ zbZTk)KJ_rZLXr2b9$*uD-{F9CG*s|_ItDI6l&PclW#?YzN4)O`RkQf&{M?=6p&oT} zwV1U!oerx*V5VM1ogy29i}BSdb51pjuTGK@;|k3|?Xc&`sJo3juMW|sYQ>r|`s7LJcOo>+b^kO1a!AaMUo9&dy35~RYK3;Lt;+K%c_OP?+c8- z`!xP4GM_MGf_9dxeSQ5lR=bPz;b$7_Tl5}WON0W13&DtS zaM7X3%jHjf?}b*71I|RX+x6ZK8n}Gz3gp<==O}pWK~@i<-J*~7@p|JT2p17HyjhN~ z>=xq8zBy&KUo zXR7SB>ym*nL-qKPl*On4AqOjn@rMY7t#SSkbKkUZ)CM3@_sN@43o&*UTF7g0)HTmC z@X}^P10fnt$)<(pr8k=R!A=y)>G*ej9+lK^y-h4%{i^z3W#E_l5K4WCPQNrr*AmQq zhg_KT5+%rvbb_{yRRz@RXIlbsH1ANX;F5muSUhfF^~_jSC-r26b36kUzcRybB%NM% z_@h0#%?(+s8%dHfT9MKbz2!3RaY+z-4&iG+D)@9I^~Ct==bQq<^_41B;cNLT=khTu zp|)k}s@Th{T8+;<+PVJ*K686jJDHVh2=p8?ul`0pvqE({nN^)D@%8LluFQy^s7Geo zhNM21*06^eg159$yL{-(ayKus!8zM=LY*krAND}Q%>hDY#Eu7ckP(2DArChgl^TC6$ zZ2iaD^>27MF7Hf{M>9~v~PWp^QM|`2Q^%!8E7V#{4$4tG+h45NU zCSMv4pY*}3d1KN5_jS>rmjzflkRR9`e0m0YD{S(z%CC-^G;kF-&exx(au-K~=$p%0 z)ALcjzw2dWL1*IY8p?cx2I(MC1o4E44#j>9OMqtYq z&BR^isn#YMDBTv8v<&#n&gmCN$gWQ+Z0#D=JlSDty<55VvDJfopt%v+k#%;^qTd?f z_YozYA6d&D{mKA`Y(j`zH`q&*9I7UN*!2>-<1{D0%?SAW#>4%nT1E!x?90~==QAG0GK$MMlDs>}h^EUUq)lW5f|f3oErGXu!x0_ga0?ZHHV>iDYG zE;^(aJ5@Uq0nVFLX_do?KxOXa)5ygcujTRi8E*J4%EHw;+flpuOV9V#V2& zDC~IGJ}O_!;FFU&y~5nr!2H%dZTTl!c-9%Nu<0y$Few+iy0N28%}#xnNMKO|`mr>1 zJ%(nt@6k@a_J>463z|`j`MaFTaoG<)CKg-Nn8K-9DhM z6`NnhC3&HE^NO$SMDx}`iviDzQ8Icl|{=YET{ZFHFVSO(NJO}9>`wHGa%hkfy3VJ06y*&;1< z?1||U0V?z^Q+SRS%+9vl4jB`JD{?KzCM6s3xg|3v0$1o)4>Jrq%D3}}EQ!DsI@PO5 zC0?|Lot;p>UL<7i&6WsUZ)2FDshe}Piu~}EBe_ekcWf=wnT{Db5`oTEHTdAZ6Gz?k z1UN0!rb`fw%C_>69Fq~NHf-d zdBVqTbF?2TY)3y@dCuS)d1wLqvBGB5xI*fG*P~uPVFt^EG^3`4?7}9vl4$<8GQkBo zsl{~*4L94YuYB3*GH)uTblE9hnoRB124K^=aU)K-`Q#!SuC2j4h7N@>HBLt;XDVyb zj=-homdi&@*fR|oBrX}S3Jm4kHL(?}w9GFy+?*dP9_6soLia#a_teU?9*HLSk>y%T z&f#v;LZR(OR5hJ6I_;~8Y?-$;cwirG;O&Nuf6`pIA|HB7ih=&x^rTcLcF=fFV(}pl0g4RxG^0UAz&iF$_Kxj22A2c~X$QXz8}QYewZ>pHbnX(c4j_CxmMw$82E4%Ar%U zP%nKzfbb}7hu%kB*-YJad~_pK(g=IeUQKj9&b^#FSCuS5>b=FbWKD-Nia2hiBVIqJ zmz^a@XvmfhUd^1M{B?}CAEK^l>?k-y8!*4-b87D5?v}wH@Pp9WY5uwWihAV) zcs%mUr|)k!?ng2t2kfO~>avY*Cl;MgzWL?9S=rH{;jvJwrIsUi)stOyIH4As@#;)w z#5_LL-8DS8C7LKZPw!4DyTudxs6u3`10HEh0XY;=frj%uue2hiJCLuA>CWXvG`NP3 zy3{6gqBa+2N}Tav?ZqM*_%yFsy=JulXUPP&;fUI)Sav@GbUJupDF81yLziFKux5~guQVJz$PfF7Fd*YTP+WW-?nLg7k+hs)4^Tn+DrYb+}C*&HFXmlF>p)fGa-^o?w&D`$bthEVfEg0=abuI zP9$N(_M0&Srdiq?cwE)b&yIm`213-Q;wL#<#)`Un0(PXO!qIZ zGfw96Lvtn~zmjON;7amzi~54kmSgBJa7gY%;j=x8eA73qRWs`lpxHuWa}r)6^ClKr zxHgmS$>rR9cyGrV zc-I5G2f7rR$P6lyC~&s$h{TcaasL$wTfP(-YI>aNrkjE4I3)(1PhDH_TxTcf%(C)! z#LwH5RZsQsX>K_xMsHHJHMRmn=Y)qW`Q?ac{P-)|ewG8}=t9boyuAJ8h>f$=Dk?0^ z#-2eti=i|rZIX*U73?n!i#iGmvaaN;0rwGteqiuR2M|Hdb{B+S6H6j;?VOAe;%AJM zbfhNsRaK8vFdZ~B>!qL9pra8w(hUAkZB0OBvqAr*+E?f?>URPLOLQ}M4j1)U40(y? zv&;3p!oy=SEWV)^yML;l3r@BJ9}PGC-Rv&_3dFXf3&YKf@k@`f_k!7_q;wu4YXke~ z%*7?~7gl6G#1>=@08g!ds$rtw(YZ<%K=1vv$5?Iwu6ZO*0jgG$EWjbxBfG|M3-Gu} zq7(p~tYiTW*IVt!uYwOv6Quy?XeA3U++l5R)&REPqv@T4m;D7`ovm;ps>$#M|Exf~ z@xhLA8doQ^up7;9?k9Ynz11PiEkhqqPZO_cuO5kZO&7#OGnmdKgtzak4#mCsdi8@o zbswOI2*DI4onl(4MLeE8HpI{R@NM_-e#)GaV7rP~AECL?@2(mYVnhWU)4)7gPDdg> zjYJPYYb;d{4b+%tqxcFwn&R;5A1LSu1?f#-&w{m}d|a50eAdOGYqB4OS2&{Cxe)J2 zZPLb)+yg!8$3>8d$KXm^H0x+oGMp z`4?RR-KX(llm=GxY-S}_eK!{~u5I;;FdKAwlgVf>(Kk4hh3r$~)s-L;m(AI1+*{SD zleY<;+7;f?g?NhN1P$VKcmvGX)#$G`8)6RxI=M$${7V_XO>=nIg6D{Iy|A;5X8ewm z5~Vc!!1tx<cY4n-2R12$#M;qosUV3wPzH-g$ z7OGJMEp#wefvMYUS+4=eZe?T@$espn9{nT)A8S72ADIe+;RmIx)1Br!v}2`+SMz^a zeiv39Tibe>^ymq##Do?rMb?)ovY%~{h(u~f6Rjc-HIn0p#nh8T!LKA~m_?r}p!$b~ zbTxLfiFtVrUz*5fufL%aaV1iXDx~6dCJ2u(>HUHXaTlHQ{iH?YE@LjRE~B|qUeHT5 zT3}mWB_DIB$q;|}C7;*4T6o}L=*8}QrtRCWX#U zQrf*Kzt^3O>S4Jh^msPN58^GxsE?1j;L_^8{z{HcM39yNZ~Hs6jD%0_+I z1{?NAT%?kmWY8=*fb`nwnMrfWFYv}XdR(RP6?*kE_y*g)wG|9{ z3AsaZwiyn zRUCf(59_zyk6-`!a;gzuRkHpgA53)P*ZL`-+uUl&l=GTAEJnAs=_3ya&=K57= z{|(R+(Dwg2uR4}={l6PnwI09zlNM0L;n#op{N>lM#NZ56p&_$#LFMA(_pV5K!ME>2 z^Rdj}8$Q~3HZH7%CFu+K+&j%;u!s2ENXCD-m$TyYDl$;lHSpC%z7WbcPuEag(c}7 zWgK$(<>q>aQ&}xAdG83W`Jh!Y448^xz(l=cEe>_c?v{*A=HfRm$UGtO+Awo$N$8gr z-a!-Ng3elKUasz~v4Y$vSntpGlpOCe`V;|>-JVa!gWD?E350E9Cl>kW8o6%Qr~xc< zQrZ$)R?&dwLk4f!dwNhTgvQBtRn<2cFc*rvSb@4Z`IL2<9o-=7E^liy`xb*wUEk{ zq~qkCT6u=@y`zeY7M7%UyneT~I^R3CyJ~^Sdq?Z9t8{tLl80mFjK)b9H!VaN@3?be z2fr6R+CT%1?;VRD{rbpGx%@`xr*qYn8YzdcZ8T17CD+RpS7}y?3&-MZtDC%kX72;f zXE%z`L3fm=O03j;Pl}{b7g*BG2BA-5@*cK(oh-%~f*by>PeZ zz5yptWtp(1QHx|(zAaS3q#dwk&jo$+LnF5Dr6B?R*-|AawvWbSnOu)~Wr|CSPk^lh zlsaVI)~cb_&RE0M!whsETtx7Cw zY{JRNbXlLij{xT`{H7AAN<({f9KQJm_8;ezv|>3Ny~CuvK`n~!4nJt;u!i9~>{NVJ|3lD~=#qzz-t=p=jY~hjJltyDkBa8kEuP5)ViG;4O zGT$Z256psL5c)*a_QLI0_GF8S?4uDSa*E_t!|wC7a_FZGCG-mS zZ#fR~wHno58%pRFTN|J2%}{snxsnbz>p+z#%XllSuuroaW?*s9mN$QpJv>pZ1-Dtf zxd4|}W{4d;Vbyh*pUo>Dm$!YW9Xw(EUG$mbxDZWxJTe-Z6S@so$&>ED1_v&vGY*Qe zJqt9sZT6=+5I<;~`2NR}{*Z5*&D0*HPJRvP*8Cm&%k=0pTZUH+a$M6<5lCNouNVRv-#K*)E9hoGBk3MYE<)}0M?g?p3nP!#SH5kEa%sEgX{U*-_$yDNaQ;B6*#gxx`Oq}juX#(BJ3Yqd zPE2`rpe5)}z3-N&MoI_Zhs$ag;0NGW zD^#Om0)Kz>mbgW&c79`)gc2&-HbU92{8XZ6FRw`~# zOOtlH;Td+;CF$j%#JVXG`~a9l!c-RZER_O7W`s{fb#S>VQd&ut6{BzOzjwir=){Ms#YzCJAjfa17m{9MHPE z(G(OG8X6?oy!<9mr0YG`3S{KK6q*~F;Joo=pO4jX>Q z*O<6VFKy!4Q7uci6&NvX*2=9Lq24;7D``u(Q(tOQ%bM$|i-|UIWl6BEWoxMxoM&52 z6r(LSQowt3cC&DwVe>XDL?7F4A| zEUBT8^nAGKpV6S?gSXVTFqMPD(n9JhS5Il+%GYJu(I@8Wpg4m< z=U7UYR84W$xr*NR^mv@P+H=$oOaH0Oj+N5F;cN3L>F$0`AbiC~2N-$FsHUK!6uMiM z5?jk2gF1}?qVBf5tVWRVhSy|SI^^K9ZkE%^swud^x01)!^n6y93L06$n_KUVk9t`p z4FUv?^V9j11{GDaq({v!E9Prb2UTU;mLAnqjcP7xOEvSkzGWv>*gT>uiFkk3Qca1S z2V=op6d|URcIj0TtS9(d5?-b{T6wsQ(566{q(qM5YbETt2~e`P}%C<*4=J;d<}@`juVZkndL9yqsNQBHL!!O#O%dp zcKprEZi}AP$WFAJ&6CeRkhKICU8}KuXjy~bUNYR3Rd;^m3-w9Nxz$89+Pi_SawTWy z)+T)zKfHvUZW{Ojl$jvXqY5ESRnx?nH-mE>>kfs^qBo*TS;v~G#qbqL?Rw0>cGfR| zA~emK+(I3}TURCev#d$6l>xOblzZQH%;S!O&1eSH%~w51 zy8GTWb+e95-|fNYL7Z+(8}+Q%o)rN$zM1ol`7z6yAMQYQfostFXVbMy6fEp3d4h4v zjNIAT%{{yDS*>%mx3d6MDxz!StL-(t`am`l)e&mb3EO5J6N4(Jb(xPhHZpz}cvn?Y z+c`U{=JQqjqkH>h$$*%TPe%~@x~M|928H(SY7Fo0g!^`)2dIJ}W72a;PUitEH*89C z-Ku`tfWoZsPVed)K0~MFz){q8e{CoX>-c88dHQomMqsYst53|B&!7z@6>+?WJ!#h- z_Irf+KvzPW-c=h-I_dXcZCzY(F2CSL^ZgmXIE|0CuDTH#I8y#TVb`+G>?WDMa16T0xTTi{l(e(E&g|8L z%`;B}kS;P#k5Uigd-|rTlQQz_C|_UIjA~B8IvQH*OA9u~83@>^iN^E-x>0AyJ48KXzN;P0k&onasv>HIU07dH5Sa^NiERl4{XQn|CdF8kDvm(j0X4czbBVdE~88 zW3%vq&nMUg6ip_NDBLwQA6R;lJwQxS@SSB)(iy+^W7KdGr}JG&1sW%714_rq)43~lbsQ%+qnN{mff!ambQmVGqoYb(;|(AHL5oVoTcb=$ z7qFuUy)MKnhi%dVlexaQVDb;e9kFAvHFojQgs$OM)i~)sGx$lMk)3{I8?>nzPw!TZ zik-?8K1h2w{ij+@0AkZdbmG`+uN^SC+FR(=>>3NowmN3rryVPJfHq0j>(kgR3${8= z-ERj>PREZPNzXDJ|HD_Gcxao0TCtdt7wnE4|0UyKR*{`iku+}JJY)||PRr!apSc$X zm+eEOadZ9=)!f+Rj^8unu8^#C8Bh-6(h<4_Rr;7(5}#o1zN*!D5DFuJ(E-QS6KV;D z0E2w0HG0{w9Lz?9RHG%2ojRwGE532iA;=Qi8q@d+RG zh`r}Dv4kY=mR++j-(%a%XbY=3S-VpkGJreD_173U{ud*2=Y9-M_>Qm1sfs)Z-a7e<`D;+zkO&@(hQs@R}wT0nB4 zs>}V?zt+Ks{lTNDbGlm^c`{kU*530ov-bTQpF63#vUlwz3i9WLdFG6Nh(u*YcI!5= z`JNV}bgq)6SJvjtHRd=L=yk|%-f1B5{dVXnuNzYVDTg4`fV7zQ zA5}rv>m-$GI9I7IpJtqy)9x@^%%6*o2EKqVb}|L?`paHroyzVl$OlbnzH#lVMxrpc zsh#0s^jV~p;89kQO)p6 zBTje;r{jkck1j&3I_NxT^1JW1W>#33F{GQoM?Aha3#%XE)5RA76VMlyu^FEJTR;_~S*W3h zAv8ojFC4Su!$Jqt)*O7a|JYyHE~22vj~aR>A4}z#tJ74zQc+DjVV+j!p6^7q*&_`0 zq+Q5FCru>ro`~Vu4sBy`iJfww!JX^ zTJJv^+<;b7&{tAZ>S}5vN}F=xue)A+Q;x5t4ahfT=W`8PUxAMtM^mex(9ZDJrP``E z-ns-M3P*Y+*5`e(F};HW?j5rl#OAH9nI`c5oppyd;cxJ$*;F-4I4oZ?%6m9}gU7~Z zS}4L*fb?6l>|r1WR2J=3s(GmgVcA|tdh0N~Cx01zM+?;?Vc#`n^x~)NObhE!T!`ak z@lj2Q=}ZhJJ+7PL`+2&E=OL5e;|?|}+arBd;BzMib?KlT%T58KY4eSmd4j)JL$0RBJKBMi({#kDfNpFP3%h`i zPA>l0Su2(;IZLT(@L09L1H4A4RJtsdLvIgLPS?UywiIj$ZZ~l0A*{=Oc5vfQyvgwo zyc_X1oB#iTuL<$0RRM{?7y8y9=aT(e0O|+DTM)2ISNp)xN8aT0uJY|kb*A?>e6+r^ zbWa4lQ0>OQw>@Lak~6`jlTXWxs=4AtfM%IDugL(*{$aDrz@dj)3_mthc|9;Ee>Z1n zuu6i0!%VA&EpGiAW}5)B(b;ihm}Z(Fu~@Kl<_kw~Y>zTs?5UcC#GPdWbWW1oaY7SxrGFp*J$0m=N!VW*4u|egI(ufjj)h_Ta<`HZ+F&$q`?4ueb;SGPh z>zIEvyzVm+CThJL{WNf-mPgDzK2Prqb&g|TMYlVZ9jF$?4@B#dAM42vL@x)aBvgwZ zCJIM5eP%a*`imQg9uL(_69l4P0~+6BTaefzzI5KA#cUFhzIoK5E39zWm(vH%?;rrZ~%|0&GK?s00 zv=?tbS~W#HDHoE~Z%$fZj^d-M5?{xt#>7N9zCNpKmrPq5x;((73k?WC<5YvBM^9O| z1i!5XeQez=+eFnU;T26i`~Bm@?(FJd6LvODQcK~REZ4!p^ZADiyG&6>Fb0MM=nX;f zu}2UMGB2#_S`#YSp8PvMRU1&E8C81hc$YoZc^yFN5Rub0!}x~W>|EnpdSGl9o6pbC zhLZC1)>TGKVViuj!qZ)$V8YLHmNuHSyI1esBsFsrcI<>kic@nm@%To}dMv{ucDX=7 z^yn@LI^nOX^HgDc+}+*cJyF;T_OAJ659QsP-&rdoWSvi-nx*Eb%Sg?Lrpk$ zk$RZ0AN-YMOgP)f;S3B7w)vK*$4IoTyVIXeWcv@;>LS%=`%+CHzDvwpxoiUKqu9&> z?QzpDSC0{QQn@o`c*xo>>v8GC<*F6xIZ|!6+WS;v%OjxQ#GsZAmVEetR9OWKjpaMnt3&96 z!u5Eao;^a&M@2Nf<;Pz|EclNml$1N{{rcc3+c#vp5oP8^O)zPX7<4k@cGhfH14%Q> z&zrU2_!cy}m+r)0%=Xx-j$$z3LPv9aEEfdVDJ3UOVN1+)5G81v+P+N_Pa^Q)q4TM) zU_sW?(@4>AhgKHfiVLrf%E=OE+tuvNJ2jD{{4iO{=f(ywUs9XCx9o0BFlj$bSoX!=FzYf22)cc1hnXkf_ghJgAjaMQ}`Z*y)BtlEH2-5Z_%AstSMYJ*1H( zHQjP_YtNu35YDa*pjG93R11!8z}GuceB)oMHt?7_N)KaLpx(cST$Gym(UAKK)Uv(n z?EP_VK!hp2ZmUa|eb2hE%lPU8nec0MQX5Jtc6`5B!67$D>_i*wo6nunMiYAdp4r#^ z*>MLpt?iPa75?%)qZuVWfA#&p%6r)KNIFDCSAx5DRx3`*^CwlPnY{?qTMQ=6syAQI z#N)fi!cO~dv&OX$?U}BZ)xD$+6Zc2}E)fVd;qroDFH>kQV}L=hz`epbsyQ2S*{*+T}g+?-yu=*u?j+a9z(c2zY?*wWtbaXpp}rnH^iDtKKrMXHgVt{$0}Jz4h^ zbw(T6Z|bgl&R&;jSj0M1nZjFK8s2b+SzmBkyZv@vYcz?84D(GR<~p<+%r%NaE}%S%aBH z*!b8s7mawN2_@y~O*<6Y$IcRZ;`oaTESd0o^`9n~w7X|Ic)T0yzSy1=T>=Y#Wq+m# zmvC~DUvGym{`HVuOU>p^=snk{SQ3vWump!=VxFn0LKZPZFj# ze`b2#g+0&cf{9(4)Teu|1tXPf%o(tD|3O#7&s#rK2dOI*hN1Y#`^RGl}U zR3n=BxKx(#g;67C7G)22Ud2}*%!FUtFWOjA{&218io@?gI*fKiJFx3twb7(w)T)3g z`Pi((dN8T~)%l@`$FH!yT}OMfp5Jy#e9})HuORHWJHglXX-qD+IrK{Os!ZMT8*4~ZN^QJuq{15mC?emwXORORY zW=DU7cbt0{*bYdiIuPyOXV8YmMe_bVbjGmmc&psS-Nh|hccZ_>zvkD2d;ZfeTv6u- zvG&o0l%!)8`%B^)(Y33=WC&1Nno2ucJw1Rb@k5E)kkXXPVSj0qmSX=;ch5H2uwsX& zf89wbdgZda6#Qx^)jD~S6j0h74nemjyOhy}jERa;{y(vPhk@*1(JM4}I(*$xUK>-G zL>ac8IeQN3-GG)>+jxa?K`#J~*bK z@vCy9N2*&H(>XYl%4x24X@ak)AnnxV+J^ z5d0??{zIp%+?uJ!di1gl;DYE`@X4(_Gtp4yWwP$4Zh5N*qnC1OiSCeJo9|9Xq<2L` z@FA&npk{H|Hfe+_koxVwP+QNZm$U=ZXcq2qBx0k4?8KqaM|2n+m5i(kQBdZ7saUfS5*~48&6yo@f@%|(2s`d_WtUj zh+rNeT|;%DA-(XLuxOI@Q(%o@ZP3&nrnUCM9RW(2ZpLngaI<8%3@qoM?*)72!Q47^ z_9&xLOuXaKHYM`99HiP>1#vM3n^g7E_yzu+C}{?il+K6#B@*GTV>h8xuHsy=8PdZ5 zU4*HZ!B_l3@S^Ymg({$mzv83QGSx!`g>=`UHksN^Ekg{EVFrJ*A;3M--wFK2Rs%Fw zLQ8)_w&)hLR{9`g06Tds!|PHd=&$79?ZM|pc*{;I<;6rYgL{a7XaMdUlOZnuvDTq4 zNMrEPx_3OSgeW8a>7zTd*;&PjP>2ToPm08QH0J z9+?lR_wZ3SEPYXt{0P4wqrXu6xF4nVj)dq{_-MVByre*UP(yvNK1e7%#i%oz7RMI8 zI{r7|m*KKv>4^7|7OGw-_z8pD!AEb$%5gCeGMN??%i+7LpFGsiFN=NM&c&X-sy#B`>*Yi&k>>x#!t48*9w$ zK_?n4+TB(LkT%WlDL2zxhwMM0Kt23#!msTedHK;fe&xGv=-bIz(Ne>aDRQ6?NBz^#zM6kAhq?$X6-mPWo0#s70MDAn=y*A0*`zuC~#Qp z)Qe5Fm7zxR8_Z4E`EnX`4#>)K2?+@`Bj(GEi+?p8U$hPw>}4#vUBT_STzOqXBSQS6 zboy{}kRfgcQ#7vV`|MG=IvBStFK8Vbp1#n+;df-tjV|Tcis_pGOy9UCI41rY^Gyo{ zvqfEv-6C*pjc{V&$nL=5>~Pa(e9Z`Q%WqkvDYSY843ELw{KHl=Kp+dZ~MPsDcu@|lg;gd60Y|8FdW}BnE3H(;l z#DK>rF1~ra;;#vr*>+f4e!t|2#}{9JzM#gq=vyY(OIuz<|GX(R@tX$)#8!LEi|4Ss zn7%0Ww6`oaup93weN(DLq5H<{F62Aj-kW|W$7aOxVNvVW+&qmII-e4l@8R06$?%q0 z3hU!0uDO*_nz%Kn!iwedjZ~n;*Iic%Vfp}z`*bhC{UUOrnlc0*1t0_fnmCSasSF^UIQE~DJ>)M0jpHyoRbX>R1@hf> zathq+(k1FxX0)&h)(XrIQU;J#ptk3o7IiUETr7)q)H~W=iTs#>teh4#Chn?v3C>vt zi>`Eh6EsW(MOu}6W!{y^hPrMGRVZZHCQXPKDm-&Qx{`Y#u&(o-=5HS{$+!3B_{%6_6$cmvn8R z7Lr(}x_@nb&vaUjj}A{8E!IH7LtGMS)$E_wfvIH++qOg_Osv_=PP;PkeX;a1wJ@L9 zb9)lHt?u9QGv5~%EZ2+^Yj=4~3!juQB|GF^pR}}Gf2+mC=B^UT^>4g&7E{iaHhQI2 znpn3n9e2*^h#>e!Ve2rJWVK2fKhowYTUj54o~ajlKN@NGZkGkPHF1j%=fX%kDpmgU z`OsmcM~6Wp?W}(l5~L$-f$n`@Wr3IH+lN_3@~Z>v3{I-RPAMDqvi zMRyNRJuU~LOX9*D^Xrh7V}C)9U0B?tzFhsZ9D*O~ong-sejTw!%z`XCCXJMYk)mf}41>VN-l@LyXuJKcUGwhSm*?fXP0f zC#NPWbzdzjemEnf^(|JsWJ}Nnp@NVsTKv*KRzgFzE;ide-$%bUV4m@NcI%PMp67~$ z(?wFD5~*B||8ANdOWT+jrM>r+4{A8_=2|he&3~Ru8|+o0ed@R*jxzI1UT_4q>jhJ3 z;b!)7kvX2nZ=ZolCZt<~8aaWlkwwj5=UGlWU^1htFJ)TIIS!9#2Y;u7pTJy7s9vF1 z0gGxD8X(xcF~u16(u|da5?Jn~l{LjtPJZ;ebTul*H6@ury5UfvS0A%t`!9kUC7C>w zk(?EhbpM_ChaCjU0=v;xbgqLe$)FF1M>N%k_u#uhuXY}f#vrvX3J<4~--SEN31^#W z5`vE@+;Vlna!4Iy_Rf|QAs_^s<0vDGK?#Em+C$8ysOElwn04Um@t{hx)nCvpPcLP? zsy8}BAwx?1+2L<9`NK>FU?#d~cz>Wm@#tuT7TWVRPmyNmTQ;I^p%z*)T#@+bSY|Xy zG48Eid}#nw=miyM(`)sYa)wxkGvg*!xt$C5XrVRG&6ZWhE0rI+twX9N>ZaX$ZxE(8 zDk90FtDjNJm0-w5En(1qeQ;g5p{R^-%ns1(rSldg6dz-^5KO|E4C4N)x7(3jN6@T& z*=!sM!0x*hA=q}oxaOBIBgbzZrK_#1ei*RkfYE8csJ)6|Xoqr~5oa0|Is}dvI5fRn zzE3#^-Yf^I`6K<5>d0e@A}CVpT{@r&BQe?OL>h9ZfbsEX@#pT$U=HyDnk-GR7qF0~9go?UISVy+H|r!D;CAzp9j^ z0CV1DvKKqamIldNMGGrAI5=KciV-WZXK0@zJ>i+j;ruksxp_-kx`LuVJC)n*If~3~ zYN176c~?ew{FWtg(RZKCF!M2_?}T((^!N8+WGkrMKlhvFvj)5x z1R6J+Jyt?cP{lR;4yAkv1e?jCO3Zzt1R-C~AyvHpI}hos1E3M}#ZxIl{Cl_x3^nmb z3tdM9iQ*XkQ$rPbA;(}RO%xzr6!`A%4mCQUDN{A>zfpuxP#NV@p731;279o}1(lNU z8~siZBd#_Q^f8#l4t%Xm=>u-Su|plyY70K7!if>B_RQKi7>IK~&@QOqCn`4Sq>U_cnwX*oLq8b72%A%1?48_$dC`_nU(V z#*Y2y+(aY;^Me+@k3t!o6sOBOUC=GqaW2xnG8RJEw#)psQ%liBff#pP{2@Y%94u~Z zpBFjUk2BL76@m%b{VP~-w)pualN201QKb(t3*?SYGI!GzV{sAIk}@YmkROKC&JESj@?x}0o7anMk}?|@4M73!L55&|J?y+MFPl3p{_^2<>EFvj7dRZYXi0p#3^yRZcGJvv9`9& zhvxA|nU`VvP;CLIHkt=ks3IY=L0B_=S1I!{*&ovRUAch?`{HQQC5TISR+EtJ5n^^R zne?2^53D_Z&%W+3S%=a6Dm%%4?qxI1tLlIXA`94N=y3N(t&CTF%#BmMV!ZYEyr~iJl z2Z96hV}gWOx>zF#;l3gIu6%(dQ@+gZ09Si~@J3s6m6j3$Tg!L_E9>~5E&i(pL$mux zsmG0PD5pD&jbcAR3!x#daC<4)zWN9SC12=SIYnNSJUdEGlB-CQprz8wl58~YRLQj}59tfY@0M{cNpco>;6VTPSHcH#bAh-LwB zFdEU;3T5C!iPaL zmCSG}ZyPq&LqNI+Gtf4E&7=;OVClI2gvsv|e5~+t^e0oZSX(KwuSh;y6N;S$_i*Ej zJz2QN?8UIo6@0WY_8Ou(x9|B$`#J#Ht??d;OW~@`Z4h z_m0-_=+rPNu{Z+4H^J-oKFeO9jBJLH&SLJJAS2MyMWPSEOL@rRS6O!b0cUj0ZGAo| z+hnC2z6O(mE^OY5(yxYDoQSJ0pCc_<)OhygSoDHjxl{ojN8MuELOF@?M&TFsMXI(X zo}!R!Tu(z$?xk{~rQEID#18@#bz63kwf()0_2tL-sve-|-^qXdIL-LW*~FyOcyxC}=e0 zO|jSLe)6KuX?y*#TP&{^PQC<4)yu`HzU5a#@e)v+W|pq|L}Gn#3_Hjmj_s2V?r$?6 zDj&i}i|TqrB(r5mkC4#bA=X6|^=3JUMQa@8hz;u*GyN|TL6;GFh(zeaL!50o#d5ia zPrHETys4;lCbL*lPQ#`?K2p1tnP0ycIN?eeI8FhZ1nm4pftt}}jFufY8N&C;Qq3F8 zN{z~{fy%B%EZF9%l<21Z?ifn>8+1CCN^-^jb}*`HP$@InsCBM+#ayBnsbctIOirl~^e;@o+iFjL+i`qRB6N_J)Ujpg=rl>G;s7=cs zk>Q2oQ20hx_y*mRFiA#I%q3O`olOnl>`ofCZ-BRrh8f%QYwIIBQOX?Xg{g=4O$Pdz~q0M)GxzE$o~%?9g-PYNnT3z8cs^1hj)lb-)5jgC<;TVkUzR@n4g@>-=}Jm{JcWW%GYsbE zW3ww9mx`ZM=gfLCwL08w*{M35{UY*Bx_zQ*D&;)3r9md6b6xkV!%HZ%8;Vhny_7`_ zDE4MrfjWQnb~|K5c$kE)g?d!UYzir!2GN{Ezjh^$BtfHN52w&R$-y!l|90aMs)XHDO-~s1DW?<`7x3g*D<<_G%2x49BW0r7 z%uke8$np*iHS6?2oV^dxvE;#pSyj=|oXln&tE$#i0YF6IH_VGHN>yGER zt3vtK(aLhVpq`{mj;4P9DQq|P&^x>2%5#t18eHA6M*9}5lWjy#pVj6`!7`#i3%9lSwQQ|Gcm#@V)4yd8)BpDbZh0Igp()}_#WGne^wx(2gmM;Un8!p- zeX-&fITczb@4Dr}-afN;^$&pPs!7piRcJHW^&^r2Fr4XaJPjg?NRtA%? zD`#GssWZ**N0IVSr7)&pT`VdAColAxU~wA?oD9EPasYrQ`eJp7R*mk96; z343UWHnxI(*CG4a?;ikr38mc#^kukKsB|CfJtyj7VbIuv^3)N1A~X=?dX_FNyE(F6 zc^tfk;vV$Uf-@O|aZ0z)$I80hhFPz{ zgBla?gZ^5;N_+0qnIc`rAf>ttuch{_IY=e9K}4W2T;Ibex{90GckHSB0|v&9Y-l5? zGEyThChwMlrb`iWi#^?y4=zh>TXM8YsH%uir$&KCClK+sx?sLD~8Qcx#dtpmZeoyZNs%qmagDqV>-C0)NueP%X}}5%D0$rq zFL6Ct8o<49Q>vTiYPG<)XGH{kbIxkxW}Su^yCO@aUDdsHYEkUcWdH7lUiu&@Yj(VL z{Olko#}2^Kc3*g_cA~sdf1dpNT^(>2U_?ZNT%Mh3xr&E-Bc~QO-$1+H&QcKKr6=~N zg-UfEqOpM!VdmW@&15GEF=1zuBnDrY^w&ga&;k7~9m;f2DA7|NC7SSRb#OrWVlYu} z^aG7ZaT_02R@~TmMpeB)Sg6N|x9~tO^a3t~`sj#Ss)9bCzr&`I&w!~4Md`5L{j7SN zbPw>%zi0z?DbE@>JDpydeNGiiE<0+_w$#jNP^dLP?!<D00 zy|FK9{up8r-4L+wl?q5~yr6RkqUxY)2E*P8ID!89K>wI)GDVV#k&4|TBPsrFL9ZrB zl3H52=7-)_UC{)*Y??rlchZH67fJ4#Y=NtwVxC&&T{p>w2i=0t7b=2S>5RH{B}#05 zZy%BGOGRt1N>cz;+!U!DJyO;1yFy;vd;y-l7d>6cG;3~p`usOEiiADs4C$HQDoK1* zk}uk}^*Sob0~tAu#TAkiAGAg)yQ?#v1viCxTr3#1l@(0I-Nq8a3byCvjXo+ zqLF0Jj(AH9`YVEnT2V{D0$HA<5i+tuvuKHBlY| zDbLc5|KIWmgLuf34q5m`YS{VzTqIE-FSW*J5Wh%IyZnEPBn;-yR-Np}FVbkg|8J3m z0e$h~7Snt%7vzJ1Fm2A|0ur%Ed`ET)Eb%=J9619VxfOBbpMhH82`e9#O^W?nei^`VJh3}Hjr(^_Ad zUkqK(#4m=haYVH6`qBj>`H~nd(3In{DN%~ScgX`OMi*zzf?X38KwNT7Z_QZil`PUa z68$DN&=S|96RmO~z+dw$RMnLcQqoe=n4%0euThm5E=diT(cH zg%UQWkp~?!^Q*7gfd6-)gpF(R*BhK^Lz{dOwf~#KU+`N47DDMC3uYGv`MDCg?^?1 zdIEH&)!K8mX0*)6qxvYf^l1^|p5vp_Rj=l$WU{ro=!+d$;O~vMqkOvSg`xHF!=M9v zZrFmv;EJN>+|zSc^11I8CIVL&AS)Jj&!3KKXY=Aj;0j~lz_Dk}hNIa|MW~=l1)rDL z!A)>rQOGMzV#Jld6~eenvaN?TubvH!VkfdB8hZ+^R3q0VJSsTYfLH(gEuK3|P{pz> zR?bj2Bn9kt7LzixEiPTJ4cREl&twdc+T>##cQMU*Fnv*1bP2D(W;M+CX)e6#!`E)n z*Xw(dBGcLf8eMp9w?hpH@l@G@aAD#N`*uk~!mY2OWK;Uf@0c62D@P8Y!8!jbK*gSI63c&m_g1+NP$M_C8`2|M zzxOGWpU_>4F@LxF`ujBuKNf1xlT7W7D#gV0&|=E`(92&Nf^ZIBeNxTqjwztT&Cy0L z+Qsd=6VsLtKYRBRJohBpr3;}2oKQ=P-#{bA4Q(}Y$yO+K2#!aUJ9b(vPTrL5R;}Gw z1EibCJ*bPnI;(=F#5YcC^BTAjifsmt#+r#2)u7~+>c4qr{;jC7f`~PAHGl181*Ew2 zRNgfj&+h)3-9gDLNL4z0O$A7SSM1N&utyk3ZJ-ua>A?*ZB);uL9V$J4zw4F&Bzsj} zNz!UQNXiK^h8SS@pl${~lip^B$XHIxHU6pUV!L4A4>qVb3FY>1qP2kNtGgzSn6>5yTrCPaoT$l)7A(YH8H{cW)ZL&>D?F7DDmdxg zD3_1xDO5gthm%5vl~4rCwxN!zp9BDYH{+)g%dxnh!|g?TA!qH#k(I z5_)wUxz_0u@+g!&0fHSBR_8s|7`2ilP1q;@io2O%!d1DfGr`)uv;rk8dA!D)fwK^> zhatP54!Com8l0p~TTbtL-5ro%K)o&0tubyVkX z0$GQtCb_A`lSfZ{3iC$6+0M1dyH3Wl@q)Srr-#? z<_zQUeIaC4z4T=;^M45e$(7iy;3gHA_@v~2rJa9NlvNtXr*c(VF;_8cfz-htB&i^x zWF!(l4znl&3?kVN8kiRuoB?-!0C770z#m1Dl$n)e$I8`Z+mmftdm`2~>6ch~tl1@Y zP0>IwFj-sfWDU^k(zsBMwDyr*NN zZI8qEj2J8Wq^y@zwj=|}fr zgewrn^fCe}!X05Tyfu0mGu)Z>(b$<7NOBqYREihrVeybLAw-ezp#ml4groMI{4Y7X zB43+FQqVoEEU53IAMX{G>TcJ1y0@IvKc0%s-ed~g+{OYMG7~Kp2WmK}BXiSh|M4bJ z|3{ldA*;S*BALA>b&t0%4hvWXQj>zX@&t>xNV1oi3v7&~a_dul|JecBel+?#(0Ecr zMA<*d#VGiDEvTn$QQ@ZZT)Zk&6;sRsO10{W!8w& zN+%=3_Wb$!_Qw$X?@{bLR(&VtyNgJ9aSMunvn4nK-}bCml~8<1vjlD*;-|NmE@A|2 zaJ^V+B#nJS3DO}pzHy@RWXQX)56&M@xmKAmcTN1) zuysEihmI!sL$$zj9OhD|&8!-#iQAikYv*i-(nru}zI%jrw!-$Tz=)Jf_Vfg@L|BzYC}*#I!u=Bd^E+sC zS{Oc(gE6_tN@FaS97VRW3V~+_=l|{na_LeABIFdAqSz?iB9tLp7vzUtw$7$zay1y4 zF~~M$Pv&S2Ge^Q_$N2boK!5dMTOnCuN`T%Em1)P2g7|2o+oi&0jaryYX{<-La@Z>* zyW$l?-POwP`hi#nRq0%@NQjc`zUq>K!8>tF+@ThT7!O0!F|{RFq_JdAlg!LTZSvRm z51aG4@ z#$L7G4a0a4ooKTs+%D#4bIjh+WbayoeZ+R;$257QUQAx%u)5^C6qa*`z%IV$>=YK+ zB{^LR*B*Uz?<<$!89h*wHm-gu7nEwP^xm6Ql%`GWpV)2Pacu=Z-qc{*mh4J;W%{Y>0{mo1fBr3%R*@RlP@S@ACf z<3MS*|B87zU8{&|MX{YTP)}h6xphTy`WMtl32ob8#Atl{p8t!b%Z1k~Cf_1)B;~vE zzrPIEuZE}6@0Z_P$&!R0zR5=2yT#UdN9>{Z8bPZ$f}~Q5WXVi7 zYHr|C{3bn>AsH_FmKTPYj1upDqoD`hQZKzWnX5W;xfcXHxIU z_{6}R9%M%o5MXJ~nRA3E0XMd5(BI=RF1JB{Qo4x_t*bp;x;MO99U4T`1oQ`Vz&yP- z`_C+6t4M?fe8+lQ{V~L!9f&`)?{7XX!e28y`OZLTd=eE>&dfL(3iI3n{psL#pq&dZ zvypRVyk+zDKooq!H=Vk88~U&XeV{j3Nni2Ac;QOTz47vm^YijBiylOy&9di=5XsY* zz*nrA*7_yD(TFz@_}BMXx`c3i=b%)X7`tIr~kC+=R+aHLs;Q8A^#*DxxWH`&9H=mb= z>XoO9-VH1X?76cBL%U3vvLD1_ia&4Jn1MOtz@{L9GJV;Y>z5(u&<*SF-Z}x}>_MAP z37Zzm7lu$g$eu(tS=kE(3wr$TyPF#jFCVzwKMQ?3OuHNGus=Q-taP7#HPbhnB}1w-lgXfbHPg|3aOXw*9&-`=pUxHIVui4uw>T*S zbg{ayitMRPWlL~LrKA!)m39%Yyqd6~wjT>d9_DO{jD_nCG|&>=uHrJBq&$M}E__!o z;ZV|D=)&2BuLJT7DX4MD(oKjz8?cNgQ6lFp6nDVnE-1ljbv**@(&uACA#6Hk_*_ch zT}H7$GS4v&2JA=Tps!afFQN~P8gp1e6hA*8E+5srW&Vb-sHzn2zlZAOgBB(yW_lOd zG|7gP&Znl___3eXjeZ?A7>d9^pEtLbaMc_*X&%TQlxU*(*@7)?=Yh@#nl^L$a*b%U g4DL7BZ0mG2!)u23;XG=VU9TIa%S=p4pA{AL6P$_JkN^Mx diff --git a/frontend/src/main/webapp/app/.svn/text-base/itextpdf-5.5.3.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/itextpdf-5.5.3.jar.svn-base deleted file mode 100644 index 0cff7af5d52073df9af491c4c9d10dd2fb3fd554..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 2237618 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
          azZt<=MqVPxXS^gc@R_E(2-0 z2^=YU6&-UZdf`n2(&IP8pa&!1p@ZXZw)t7}42e_(OUKEDYz+Z=(oH6~?XW9weu0$U zAOhvatvgk8`#M|)M`9mz5_l6#7Ko5Y1-2)*v<{nsTKVu07A+NIRCP}9m%{LLmHm^@ zq?ncMMUBgrLoRzb?S_FnFgb=rZn`@YhS;`O3XVLYHC}tGR$w~eyqV0Fz{xcg0Kf7# zQ}0DfNESkftG7U^ZY*`%os=MHE);iszPLZm_I!KW&quz2-dObB@^VR3mUpb^qHc^3 z3^EPd$7by9lJ>k854N@9uz3EKqd26NA+!|?{<>|&R7|zRWEzX{*3nWE z_Ul-}%hkvoIsI6Q-&4x}CmBV=U1V}^AEx>MaX37THpp6I<)E=#T#Ar6GDqjwmhiUU z;3{1p-X>Mz)w)DmLb$zDJ5QWSPTg~<=3R-Dy2k5L;RK(__B(0=t3#-$>pVIxMsuTv zC_gzIcAH{WbWG?ItwJ+>UaHk@<0EtO247K@+VaL22fSSn@RF$%8>z1YquT_qx@pS# zIW|&iPff!K9z8z&a$pF@bkG~WC1HdShGWl2nzGo?Npr2!6bzfHM6&Bn4xg*$52{jR z6ptSj2g*01Hn6vB@Au8n7%boG?nTB$ewFV1xI(VCjbnMIhA5s@H+^2#bXW3x0^fvN zx%Y0`ejjf4WID2m6}@}WQZv3sdEIjIdeid<=o{eP^zSC^w$ur&H-=8d&JK=?Q5t==bC2XrPa@(93 zM|1ORzrWG%l@EcxU%>3@r(Gh6QI+~e%8`rn!xe-Axv}7Eocx;HS$RWTg+<|7*JIg_ z$KM|Z-J>}9%?#ps)vhGQB*7e$BMz1ffeoCb%Xq4H~~*&|zPIUvmqubltBJC$BSi*`*DGM5`un(ZA@Dwk-z$p6~nLfq|vPU3%I;~rK=3ItC+d3!Em_60oW@Kw|&JZp!P5C|Q-%lwV zkCyk?;rGMfyh=O!*Q4M_gw)VjQ_U^i-LMU|J&wkuLS2Sf3AXY;9ioX*DkIX~ud1&B z;WxU`%XGTnrW#>@H!lI^Wn0lX_vLl9(CY z+8aeM9H~ZPySj>^&T-Qk>TT!uW>S%Z2t79(`L7kx^D_^saUdqops4YDF;Z!z0`dVh zRxAcqQn&V8;QB)MvkHS7uspF`!MDGWVh%69#L zko%S0J;?Ph)o0m@7-1Q2pt78}_H^CJAv|+y<sc;$VMC6dFHIjExR0d$jY`#p zX`6OA?9QNvgV$Chb?2~-0UJ~XZAQv3BF!?0>lT+wV)coIDV^}wynt`h@pYi>A ze`f^86$X~I#ahNhE+dsb+UL=1>V%4M6w_@bWN1PubX zet&!4U;39a%JkQ--|=5Yjn6(qCxHVn#>k@HAc)m&aG^Hmc~Ye9HeV=8G|%HiKynTj z@Avn&J~7kuFGaR5&C)TUC?uVTwQ4#8K#jV+qvVvuGljz?C;xuhK@}rDO}$=8Jw83S z5RzHZ&9&hkAXR&*quu_39D(S3>^9##R}?m8{(R`(2><>YOiNRzq_?M+J!B(3oIy-y zBRpAmjp24HHdCks5o6i&hwJ4+!L@gd$M<*3E>RJGH!*rj#Z81raa%d-?6v}?l0i^y zClF^mNhyC3k)Fk!#_n0}d5P*5U6}gz=zAaX@cCc}wMZw!#B7%aM@QwEGXzb-iKmsS z0&B^rk2cZ}*}?AKm~kIo>l^f|*Tudv&>l_NmD=i<8x*izluIxO)XtO_Cx@*wpL6eV z$G`auPczzk`k7Hp)-~&4D|XUi6%>WYMm(XxnZMj{NhTs0N;387-uTDx>pwj1U&)b9 z+J%S3d@2O)Hd^$YL$`~S7XjyH zy7=2bocHXXbPs;byuQAE4E#*5hN(yoG*7z|F74v=81~ngICzjJwkPkpo5K}yGt?4W zo$8GDHO^lpDjyZcFNN1Trh0Syb7XqeA^UzGn zAB79VN6bm^SmrvDLp3benbe`fv3A?F4x|!>Sio7K0XV(C^n(QTH;?=u-@Tm)iMy7f zg|Z)^4BV0WWfkxvTl1LG9)RAWh8*Y+f8tEy(CgI#kACK7y+x*+xv<+-I?C@y2A&KKo@r`*u#=nX z$8g!6cA*4|V@|)vyT4{s;@@Att@UpcRpZy2UK{I0k16(+Tx#Mhab>_(IuhfPEl9h~ z%TLY6v*OPY@Non!w zF3hH#1k~HIBkMY=)_rBwdIQ$U*%Ci(C4F1)bToZYsUED8r;#5XVH}X0Ssd`DtHTqK*}Sj(I05o{j3AMDE^@5@nZBwmdBe5e z&+U4eNNrW94d>;aQgo%BAZT_J6@H@bpM1Zki9@KN^<}f(hmyZ#rXQ5VFN4y@ar!)n z8xz}STQ?K+AR<%W$xf@-q)D@d1k1NQ)6yoOd7R{apvm&{^nTQXzH4vYkFmeT^nRYV zukeK5>@8iNthCdu`{_Y|b-C?(ShKY}K58y`DKdKqH1hn0L-zesd`Tl}>4Qu)<;Bwl z$F#(}6N77QL4art!d84nfE*RTLPd4#|N8YdiC#c5u6Z8V7ea}N zSrkz&?SOW@FL-UfC55|-v`IH$vuH`Ql{NiXy$|f)+*rDKPLl@_`jEa^^o4xsBf)IA zSm^u{3E%;huRwH9i2K8QIk-L8;PrYPiS+&Xy>FN1kqV@a!#=%Uo;kyHIFR{Xn5@w{ zXyy$l@f(;i6WTeK#xtrgp|^|uk)hD1Ss-1j6}Jl8CZ_;(Kzmeh0?AZInd$m^01kjC zu+~Y^DfA<<%@-5)5o6l;_Qm6RcHKarZO=0YYtddHl}lj8U8>D;mhaMOX((Fxr#-zPP{KG{c2<29*%sfr;~`!jirz$G{~XYRtg z{w*4Yt|Iq%cA*C@yY;6-^#`4z{rACErViWcXTRtHj>6(Ay?pAvOqK1P(ZDvtXOKri zlR7SRPJ#I)xSt-duBzvtuN_?y^^X(~en>4oO6#vifCh=1Qy@45QW0Lm0AaWc(0dls zlkggYd5~8tv`86Rg|CCw4>q*l^ml+z#IL!~xL2y!#`n`IfH98Rb81r2Z4x&bTm?&1 zlKtTT+Z$;e-sg~CoRoj?FCR19&)4q>)sM9p!V@250?&&>=-FMqesN)8x~-=J#kt%+#EpR^-+9(rLXJ1 z^^6{8*M)^6eLrK+VXsBfh1o5tPk1tb_+4|mR1?l>;QLzoueJMcYD-Ts-%6>Y6dskZ zmv<6qXJ$ltEk-5Uad%T|8Q#|?GuG)5f1gtP!zD=U#$tQyocgs_P|eXKr2}UtvZ#FH zp(6rfdD>sc1-_ol!|uw^cu50O%)USPpFrN*b2)IuH;m${iF`1G0qumbho77KgNDpj zV3CAG*XgL>o>xupZ~sT8{^&G*8xDDuv+vBlzwjs3kytb>?;(;33dlmYj9mCVeeD1r zjJH!wCewR_^hE6e zUypCibZm+*^^m7{)()p6%m^n8P{8qUQ}x0^I}q1KF7g7N`fCcrt%wez_&?W-c^WQp zW&a}GE9)WtR3UUfHL2*;+ zoU(%X=I_i?dQeWUgS8Vzhq-&Y$ml7&pz=Xp2`0`1gXU?tKaF0rmM!9L@Ko<2@m4D? zkiI^Azm!A5`n$Z-vleU4m2jFw>)G{|ee2_AHs$n+Wd;E?rvl%x`p}=yBZ0g>{JzTA zuUwG?XDDG}01(P^lq(PbH%E%+bpU?;*6V#K2Vz*_u!fBvNfCXPdb6M6@!kQ=Loe3}5j z350AS@n!%xp7?_qxNWC#r;m%`pLGNrtxZFExiliP*Ns4C4bi}bRlN)dH=5DeF)Rfe zcH~X|K#1FZOwT+e7#=ad(og9k-s2M<`0x)exafo%@YW24jHv4@}g* zDEP0md{*cx$X&|qRIXQMLI{-6G>ZI24JKvmYWLz&R}Iqr@{h;j?WN_4@pTJ*$%R{) z+&rDIER8T2=Tdq?O(zTv=(^}GkQMNqUg)v+QRJszUd&~p)8dxUH9sJVur!U=U_1R_ zpAJ_djwL1%fxT{P-hjUj?~n8QO)D|v&%OmOmwc{{Wi<*DeuSkBW7I^bPgf>eT)#za zqNTR?NdKR*HcmKZ=?6R|=A<3k4!&;@q3PE21jLDeD~S=2LBP7`JmhX*`^c$%Q!V&! zGxbZf@i@MuiNm`<-AjXmUgf>G5cGZHTyHHy+z8Bf0i(h0SnhU|4BP%ca&&#cPTY(4 zg%#Z_lsoKbXe`C39*_jCy&FxW(7bezz@I>0R_4zPz3py&TA9tZOKgmhL*UM4Xu5phzWY%76;}E)X-bpDWo&AoF9kVAB;-+HhW}z{f5`9l`_wV51Yq>a8U#GxPZruOdYkz4ku!QKBy4?Iyv$*+%I~+u6wJb}`3TemacrI#o4YgD;Q_y^RS3iqKkCw%A z%4c%Y<+ZI-BON9KwAJxE9fN+@Sky^tf%9*ej#nwYA z(X9m@X^j3l`7_erl4%llLgNna-@@NCO6D=15q@m4d8uQHv4Ea)Y;mX0u|ys6OyPPj z!?iAS3$ID!#@~;Z?EQ!MwRrY^+DR-#W@oo1scmNsaToC-mc`A0RVhlS=qQaRt-O`z zGW|fq=WqGWFK5c95kEE7+jNdcil@SCJXwl)Rc#47H-y1e4bnj5Da8jW`n-nntvC2m zfU2gjogz!Cs<<40mOGg0r+(rVQ}Bt1<_}H4Z^_$>BuChLWk=1u zp(*$g&`$+7C1}LkjCf^tbW7qr!Vx!;)Rgz-vVYh1jn}g&Lc-(Maikq9w!&OOZtirc zeW9OMAbqVP{XI^|q4euzCS&GLUhQe@=QC4vQJ;a$y7Is%mLnC@fw_AsC zy*QupkFtkH_;`6|L&8l6!vO~ezOERyb>`*`;!?P-d#M`iY+>k)za9h%`7=h^BVMpY z;1sLA%jO2=;*C^$=#P8xc#cbUQn35G)x#Ze@yz$&`rngHzaMUy6`Cea zzA8~dM$nhE@*$neX8&}_Ot{V2vr;)NJbT9 zX!2+YJ2yCGpa7lLPRK@gcISHp^re1&--ff6F!|Ai{!2+bEsT&25yJ~b66I76=+Xdf>kQQmR1#ct944K$*1YuxV?^x zcGraMt2+L)O!JiO?EE~+b}5n92Ft9dY!N;LbuE?xoiyaHyAXsfdlSXj&ax!Tjm57@!q1uPDIUCcj)sh-YoCXHhO43Xhd z`4U-i7j10V9lm4 zyAs2l*kiIV@W(ts^H+VDw_aTo3KfTgMn?QjxI}9{XIf=8(vW(sJ>IkSN)3`KX;7B? z6CM4B0N~5U;*6$NbU-xRYiJ*e1dJ*ti>W!@OpetM0Lr?0T-WT$@%^L!RlWn+y~;W; zIomkSzwY8Q1gb~x26mO=GYWq$dX-7KExUBKcdOy*{i*!VhRQ#6qn>u>rp8&RGmP{R zaf$Z*u2>XF!JAv;B=WG|88OZYaNh5S_W<$>esK5a{GuCZsr5+UFn?t(oVDp`TEJ6s z<2B(-aQa4`4Eq8pI|3NoKQIsY8I+Com3J+nL=a|4*WEQ13gn1}qHXYdat`Zzto4rQ zHHgT-#ZXB3z)Ji6dcWW5b7B#C5f8%kiY=5+_PBJs+8IYsO9Y*FV_HN6wD{0iB!%~U zH~);0!lU&V)(?T16N!FWm0Z zS-58?eDNT%J;eeZYS{ffyqk1HJ7*mnR=aobQH77B(<`b+MmN&-%+u0;D#iXSUHCdC zf1fWT9U2cnC;4s>o~RDU?o00)URFXb9cH^P@Z-`(?L}Lf_g(cTnio%7!Kh(PfrDOS zE6e0Sbz#hl>9qG`89nc?4Ul9}NcSjqe80+n#FFoZ1>rR&`DI&)HGV0j9Mc;a<1;^D-9^Jx0~8I zNlgqsrtHs`4{qK3VeVR`$JWY;jVztlSxMBexk&yt2`>-m%R?eC3nUJ^kXEjjSKd`+1(i{;GI zXDdK&0>z!_8N~#vP zJ($3P#GM?5#bCkp2%QRVY~2QD(~rH&LDk=v3!Y4Lyn+lzNWi;Gd0-R1K5Oy*Qo0=y zAmbV*dw_zk!3o}61wzroYs~h^%6h7#A%r8vtR=klzGG?msOvI$yE^JkjWR$njm)Lz z!$ucp@gsuOSKs>+c{0>nt;#y5`x}#&fKlXKtOP`bgs0*%Oe&GPAt3lU!3Zlp$ zu?-E8eNP81r=R1|U4iQzq_bY(?_`my#NdT&>o1D-@7%nKThmo;Q>4&U=j>$4b7HtE z7Evw7sKG3eCOm7O68sy7g8x;k^H|Ken!Z#KcA(zS%50aP6RN-@+osMyt?yVLT{1x| zcFTI*5b%ubqK_s6f7WCFVtW)JzFAPda>;UO38k9218puH?`Mi*G-X{ntO}$j`;No% zCXF(BngsrR#o=!P)?fb^k9>NPD^eM{(-Tk8m@`R^lp)^gV9#E&FsgFZoJ=4@R0}hfS%067erxEz%|wUW?q=*T zIg7?h(|5ilxlodpm{YoyTjb|1kwbWF#}&Gt zl%r5JhUp5Jp7-QQBC(I`&VCPzUS(j;rg%vM#B_86%Y)t=cg>jxmqimT67mjWbI%4L zE-R~r4sEV;N$K6 zeQz86>(?rI)2WRY^acSJV_ldG($3vFsCFpPFwHaah2J_-#0UBHhWW)sPiij@dtCDa z2R+=Ot#yDXf!R?@4BlWAg)!is{haz`W3|w)TpTiOcFdl3>VHuPyTi@5trT;itD8Ld zQ&1oTT8;xIuSc`Ko;GYugUeO#N~q#!xqCB;_g{w)^Cu*FN)Em_I<$kKjKDjFmd&#A z_oqlib|Y@cEeGJ|n`a$%!;-xZ5I++QBcA%t6WqeKQ)R}E0(VXGeNemO$t*1bMnc)F zRK%FTxZfswK6bA&zn^dRtt&8P2{3G7Nxh}%73pM|L`Oz0#TIfjG_|i}g|9BQ^qKp9 zY5ypo*kPNcuXZo2Z@GacEDaC-tzApU_N4u;!-NR2J%H}??F5Ge<*d_3YH9k5W`+%& zPV^2ZX5qf-)ce0mJ}0|jGUk(cZKlO%`@*<&p?`c&Hu-f#?z_(UQ|iZ&zg(A=A$S3{ z%?*gO(VD6FRIOuj1f)H*E69ku99Z>feEjDfj?F`;{`q_KQ0~4bL^B>vR!l=$K*&HZ z$s?YZof|HB<3@ukvr-Jb26m5Wo%9~pUo=@Y(e>kTm;jS?_oQE4l~cQ|m~CoTKmq$b z$Lk1r0R}&Kk0F1p13l7{Pc{jNIw(kuETXyB!o+>T*foPOUvw$&@&stDkk`%@sFBxC z+ZO*GIy~ertZA>*NdetrpNX|40tQ&?n%97NzNR&34J};xI8Xp~R(-(U`p)L`UZW<< z-dAZR52bj2K8fw56IJ*7D1+G@zbWaX8Te)uTMN;)!In-&g&Ct8HYc8}U4kpY-yre>3$UNn@|QLq$;!z-vxVoK=~-yjAcbgY zLs-|jbb*3Q4s0Ew(!Ec)e?oJ7B%|N7aGtV>fpoX-`%>xB3SDi4|K-gIBl3>GuC32J2DDz6Ss0Dv|foKqlG`N=L!?IRZ6 zPvr#e{@07w;v8e8ER4<^2VA#j)EbPkIA0v;1cJNTzoLRUt7Da%6;}K|XuU~UdxwyB zu>P>pdf@dB;X6&=Dyv*2L*3!>vBJ)WC5}Z@U80CVa%{Jo97!_v^a};{{~nb;wJkmv zorZdv#PZmhZJ1A_<%?vAw9M1R@GA~^tiFdD?O#uO7lv|w zl6e*aAiD-JrHBw9+Wx<~&3=Q|nUmA_ z^2Y5X!z4m22L$Hk6sQ_2$y!xy=tA9P?|=gK{^9=9U*Ku!P#5A*DB+f;UFz&K8Hutv z$*JgOwAs$!VT@s|tUI2F&!l&Ln3DNaB z29y*Bn+?Jj>>l$;!*nV(zhRI-bIsd_Fh$ z^McmnKR(Skt2pP51xHUwhwxUr4KbLFD=ACe3arVko?BtR+)n)RzT5E&f$u4cxIk@Y zhn*Wdapdjq5-f zCx>}B!e;#bw*TeS_C+f;?n(Esq`zkigh8(8_rFzd9Y!{ynE{*=0NoPUXTDO|Rnr}} z%iCaW-oN6k2ETmpUX(mz)y)xmw`^8K3FoVmRF_5<*DH6n@r+ks9y(wZ99+6T(xiJ~ z1F4;qHxv!LQ7N|Dn>x`J6w{4jHRA?yy_Q7APgc%4K3nA-&{FK{Q}c(n>+9h~C^_vG zR#v8X1{JBnPXeuKvZP;agy@N)gbXEY@)$0o_hIs%#HSy}^|$fvr%_Y1T4YnV{r((| z*I3<{v}055dMd^9{o`BiLQsnA8#8(RVBGGXJ}^%SK~NJC&WIyoNpj}EHULeFt)Ls~ zv4&$RWEyeOb@~kM->6Fby~2aAKXdnW7KQWl`-R=zy!vL1lmMqKErEPMqT6!?f>Qp|*G z2NlPI(E?9X(tjJhEOj`(WYlv5s;ftP0-IC5^a@Pe!A!f)nI4RA#bvRkLlHm8jU;=Y zBboL$7Q%gV{q^TOamv5( z>7{m>U$OUuv#?w8@UV4zOC2uQu3cq7DCmCg$xcSok~~n&#W@P}`-}c6LG#6}dNr$R z?;aI}a82kFCkNaPytM{=oZaa}}2G(eU2>;|%g9b{S5bQ8{_ zC)Xbs=9$0IHhRh!%uaOEmLr1kT4%>Zpe(x?p^fV7Ze9W?@^WI-DcZ${_koEilEQdJ z@a;w*I9b(0v`A+990U7Zy|dA?L!vw%+YgSK+?p19RzA8(`=u7xcme%0yrwK-<`V4(2fM!3i6@V+kgv$gzk>X^_tI4~h_!-)P!fpx@7EWB(ne4Stj za&qcO)*O>bDe*o8{XJi&21hP^sl|n{zBCKSA{C)jG*OTZm6zjcEu{)(d7UKUuq`tk zuWs)#+x|K~5P$M=dpKa%Rzze~jEs{|CmL!F*Oxu)>bKT0g|G?DVe;rb{DA?}KacQ7 z7xT^Woh;G}N3whd%td8YBH zJTgljhm7LP-lL3xJESl5RhcDuK5xs^sJ?Z0y=v8mB+DCB)3Ad=WQaR+pB(X+p8Wgo zW4%gWXm*{4Ro!vBY~-8tkiRaL=!PS)Pb#aOeUnrMQH^WHU!=p#=cUWnmT+4xLU2Kj z^Bt95?5ih#;EVhgfqwr=c+mNN5&8OI%l)*UTU|*H+7-~TcjD^OVra7WJab>GyA!KJ zr@$gJEI_0GvH9Zv_t;i1o%&);#B6x35m!}XKe;ZLoH zeoG9-NH~T`$FLKn`Lv%d%nj19o*5%mVX zC*+#nmL!11NJaj%ckT}vRZS(r!u@$ z&g($FMsVNd?4E}&So5karKd=){8qofM#V7}Ih}Gy>Kz%NGr{i`OkpVF_36OoOItl9 zvy3~;2$hOgYu%^^y{KDsv!o6kPhnewM9Mn5D){@Kn)epTx4@`#suAdYP$! zPhJ*MU|4V&nm|)-cD#Yp#|iwyUht>4;J1p~Ye9JsIj)Wr9;tjlqOi_mt9Cv6P`9N7 zlM+?fqCSO{X#(BT@c19==)c5!k~6ABTPf+&=YHFkPO^8I#*_mLlDG2_jLu>0sV;5I zm%bn}s)sx`*!Sv5=@0mM{?IVhU|EDh7CC}XLq7&+5NJq>+%UI=O<;Sihwi)oOkQ`(t8m;=a&z1=-&v8KgG>dz~xHS9e|?ClZxprg;$2NGSL2j zK=IlMp^!~$P! zobC-RMno_4!ist%j9OiUe(4cdvl`*eF;ajB4aYbzr_G+v<~x@8FQnWTV}atfg7L|5wtj5QPGRPKNEIK*lYTGhAC_oJpGK^Fgr%XPff0g+%Z!$`eysweL-oe>Bg6m~ z8!icqCXCbTn!Hxeo%%y5f`2mIZ7A9Gl|byh1NM&sh5wqA%6>FKh6I0 z14*8em^iCvjADASG0YuT2E0OE2C6zOe%^HwJ&fm1nCqDVL>Kr*Vz8^Z77k-|(% zGWDT_J6PRci&R$(Hugl+x)!-7d6EqBcn9YMyfNt-{BJ?(+0~!{#wC z{F)cTZ=t3lHqvQY7wB5U(K=HQ~uS%gG%Oi0aXKe<1$Xy2q^VaPw9DCCK)> z1|(R=f(fih`^v=i{L1eVi(J|X#Dhv?)9z~H`TNWN&ADX{=DWE*l#DpUI@b`mRAif- znmhhUhlci5M~JB%KP;^(>X%wvKO$)U=+L~f>h*N*GNC;>&4y`1@FB3(A&}J6UjqrA zi%B@penjJb7`>kg_=n%}yY^6l+Xs}dvI%yyg-dsQwP*8yk6e!<&9Qdu{dRN)m`nGs zAM$_Che!7Ew%Bk`y|zbg>aN{iPZb1P2oz71I%0uAlB=hW!4-Ng%JX&kpENo? zY>N76&Tt1q8B*eRklCBJ(L7sVu~_` zpx$ht1+1PMJL7Q+GPKA1gkq_R)70TTSLHC@&xCMHxb&UFqH@RuyWM9uY+0h7aK&;C zW_dj&o13ufW^|_GUUC3>XO#NMa2@jOLqtKl+3RpyCSL)CR@VSkK>;$Bl>;qq(S>eT z2jJHvao&#S-`_bO7Im7uC2~**-udw6a_xxhmcRkYSb(WP7w;R>18{?D%3XxIC-j5o z{iqYXlu+6H3?f#%AxRk-iDP!*qFWt8Y!zln6VaaKQ^(U*h7JDF#lEo_Ut7JL44qi6 zM~7!c8!gsM=_!)%&sFN_2ma#LGc7U-ciB|;>DvD1EXdQ^q^e^#A5VN?r-bd1*bUx3 zjW3#F4oxSkny5Q54<9Px@&}xp{daSypWElz)vKVVys0CIttB0#tE_l{qyWm}R-IU(xHmZc;d-in$`D zf{7~g^`rT;!#uuV#UT42l9Gc3hVYSexm6I@;O2^?cOY&TH{W?{o^EG;PSf`f`4{b> zJCOQJdT2N;nVw@J22R2ao6i9T?J(hRO^i&xwM@$lraUdk03F{KS-uLF4?~6I+dcnO zG6E(&{NaVd_i@5A)3-o{>$uIXrwKdTTg zymcscKCLxYUXYC4(I7fi+6Y69nN@=8!8lDTfJi}IVZPB!`wEoe{htSbEnbZ`onCsa}s~qp=Y|3;LNTc?eOgB0eCZHeba&7`&%h+kaaGPpcjV zCBp#>iHSF2<9X4OLqm6+cBHOd!MZ)n?x(x72c+uf7sa}gRlt65;aQc4gGn+{{@p@Tj!ksd?U;VRE~AE_?lrbVBw6Hvq}&quuQhjghy~K<+Qm+r;q#g zkC^za-}GuDC2H7N$T_*lW6&IP#xY>1Pf~54?CSM69#LU$*#RA_WpG)!ntS$LX?R3ubdFtD=&%7X8eQu}H zYpNLF-tD}$)~wETJHwO3>C6{R(40S&G=4-1^}7`M(_q-1!Xigq3<{cIocI|dEx5tv zp=wNgD^wQ^uVf{c$@5;?vy}g@#|Y|=A3Wc+5dfuqnjK^`y7?{<(ZMZ;4ptFG5E$)( zqGQjkRqko?dB5jpP?G98&Atukf29g<6BI1!#0?{)lHlOMgjo}kYV|y$V}O>YA~so> zsE;8J;veuUzWQ1ZlfYlK(0?)7+=e2aS zc%^;IoOZ>4+A_^P25ABM7;QeD?LCdkik2_h7jb(%1M`%XHv-!G>W1*Xp!ZsP8|4!? zl(uMJ2wV~YUpKn<73wdawilC|d2I5VuiCh#5F=lZczEP1j4W_@SbIl1Aq~reJ73Vq z_v?#)%dm`MQ;!T|0cPQFDo@r0@%tj5%SGpQ&U={W?+Igf8-%69C%~|7 zZH8@OpH(u4DWnxB67<4s%Ucn@iYLW3cmf zLd@|}?Il7X{?y{`j#7&@P5zeh_{#}1dcJ3T(ee;OdXCPM#J&_H(Uu%OCxzE1xo6>~ zouss`ljO2HME3EL7BP7E=m~5R0}+RDF2oOdab0gcS#-PxxO#9!J?G>7<4P?!_INFs;*6s zvU>I>E=suQ{q`}RnfJancD(0X6R?8*G$LA{)MbM6FsfcUmI_E2#c%aQ7c=dTVLDw@EkP~>`-wD{n8@AkJP(HTMh@?hO}>(_ zWeSLkB**mvWFZSLZi*u%NeO?`V!NB6aK+>R3P5=^K7j^bw`g)a3KM_5u>ulOx!=YB zL7S?KY>rw9JcBKki8->lRY**MgHfDK1kFECl+ePSUc)i{fx%t@6e0w6BsK4Z{mL7{ zVsSkv6ZU8`F_Qu(W)%&YO0~l|d}9XmUjeDF9Qy5>Rj$~@F+nImG2-T;i5oKLVT^Ay zSReb)>C3_i@*uC_56p<}YnThC{JU)LQ{>6n#|)!s+yE4;2u_{9UyCB2loOvqmo4Qs z1!~=6tzw@m8cBD&d3|8PR|Wj;S_}Sw$xdzU0F9F?%`YTx;0fctPz};;}a*)og32gHlYYzfjPA$!#+$8wX5uyETeShiiJNMD&d`SuB zrU^{kBp!ACww@y`S*u+4%bW+`{VI|5ay2HtQiAafk?+lfhM5uvUf;7F{edGG6IQqQ6f{ZPL$`ERM^7t_)gl!s8tT~X-*L~LPC zldaYT;w4c(6YaigGy0x*B`owlWd4I?{?C@!v#)Ss+2gp80NH}63TzB@IJjGiAmt!u ziHwIf9}4`9q>Sy?Tv28$^8fM539Q07W#I2|3dv``bc(Rl*dwjel)dT^*o!&=pxBJ9~m3kbJbypkxE~D zLZ_}VJ&KEU z0?^0nbnFx#`aml5u~q}}&bLJA3(gbb?l)cU?X;Fgwp8r_L>-Q8bymm?=?H-A&XN5@ z<>1fUTg@*@{XbA zzUJ?JPpO#c%Ni@aRs!SsaR|Dj;u!N;xGkwnfbtmZaRx7Lc7`n3xlRu6clWP=@$@YQ z;Z*hQ+8T7jXYGNr?V{v>As8-vpG~6=7DyRDl6zI(^YuQ(Q|Zft&;D&4^%z-y0jGAe zRHeucjFvMq3=Vlf_al4gVI9_toUW%r(n}Zurd$1Wx)bb5q6Y<+f+NN!~HVd@}C^?8n2>|4>adzS5fTY2$s{<_Kt} zk<=@uTJ?F;91X)FzZ$_hL7gNz`#Y>EGw*|PHtE9ohXw0>mtF;e;a<}*T!hO*#u^Pc zgPCGdA{XE$6%IE?hD$)%84}#JAH#^h&)lBA5k!k0WjGYn%h<@ks)#dnU6DGzj)j}8 zfvHhmHg;#H{y)Izw6VW@0h#wVB7Xy9cI(hC5N8=D#sv3^a4a(M$g)^2*xiC8UACkV zmBLN?LFoAOEE^AiwSW4R(kL8I$`&01Rc#;Hg%&CR+M&$$Hh%2Rg`Td)wRVH+`6CCo zFEW4ARZqiNRGdz^apTdVsypg_v1S{^+qmc-3ky?R(vtxMQF8@+PRw|;shS^^@mHRu zwlBx&Q#?sDF*x#=1~kXRvK`K{+)!**M8Jx43g!8fQ`nj7zJDKo+R5-=y6fqep~+L| zgXfB^J5k(DF$Nczff8oBKupOHp@`KIcZr{iI4rpM>rPXCzkcu4aQoqd76%ufwo7>uPz%J+>ohh!06Z|62Oh7Ptih) zft6|#zF$UfGtL#0`uKaWF~xC#5Pf{yP7x^NUP?o_GQ)rms=r7yLmUm!KQ|x;vp*#=i?#$*XRLB zn)@mWFNme+9$+O>+R%=jNwSDv4m7=>xr}G~pqjydCH2OW|T;H{DF<=}fZ#V__E=A*mU(M|Ox)eOWVF|=p8cfE@o%!pCNyE7G5 zZMDoN*zQSZ>#2bbbn<;*`HR-{0XJVgaVFq7AklS;i#Xi^z$hkfxS0UE+|TJfUW<O1}fGNOQl#H$|-_9l=MBK96Wm9USDW`3UWU% zIkkR1+jHnK#2o7Z;`PSzxnPkvwF+wDx`SkyFv8NajYFcl5%!sSmh@s!z3_y+bvD); zhN(lH-srPK?C-b3HmKU1njACU*m9eWhWgQ<`l}|5eX}TDPeH#8UF%@$LP~iq+q&0% zimn`ZK03+{aT?lg-sdC_6c_m-%{~o^fSIvye_EyP1k}}7L zX9@SYPT`-c{UWMBj>A(%BR}wXjLP*<1nG>U{XtadIJ}}J?Jw8XTJ^~v#Q~5U^u_hl zKls1pgFW&%h^f^yd^FI+GC<6_-*pWsyomsFV#n+L6jusAUD=v#8Zy4~e{ z)6sb(w{ciL^0?;{(Ybb05Dj(|KQRdP7>bcNoSj`$SAd-7h;f7umcS`*>bhSQFJIAg z0pvDkg>=xGD2R=!ne6Lm`gl&%k%gmt&@z{8?_uFtetPTt)6L^KRGk3MMd)^?TepO* zxSv;bPx6z=<))M+WI-etZ*WMylP(_@twwtO(T@2<3MLS|V7$iVnv`e3CN4H$Ox&=S zsMEo9y*4V1xYqY%su-U*AN@+g(w@^8BZ=Fc0AZ*oWKlVbPL#M9Ekw~x=>XJc(IRb} z_x8)Bd`}$xMKkvgdW`b;OC$Ly!7U8aQ3WDp@;B3Juqoo|U22Irw4Ge3u(belvkhCJ z_5IKNy)YO}^OkiYz1Qks_x%oSr=wVp^Su@JG8~2=+!9eCTj>c|LrXs6C_GE&kCMo5 zJojETJ|NwP8R)ZhuNR65nHwynS4vXZOp;DEb`!jU>`*rI(mmzPq<@mE=Xd(AFZc1D zL_IV=U(E?`D0{+~c@l7F25K7%4jXWA2Ut|SM9l(SKllz+7%K4@QCBm)*Fz#sh*dKR zw?WXz+h}sAz^NyLrS?Z_S(%wPj(P|V9$P3MiElm*(Mt*{(VdS&fx?}Y*mFSk1~B*a zq$D!aApJqE*kn&N$~{#kU;n;eci)xLTe6Z_EBEc9%*OPsfIaSxM>YawXi8WDLm4^<&jW{8cN?|*Y4D=krPi75Bg}zO3hd{5-#7mLQ>()#H-z0ry@%Ap+e$Ts}?#KRloY!1t1ecrMuM7px3D(6qLu&%4`6L*5k(`1GcD2rS z{{eC3cN*!xC%umRF$fQY3(51TUR}+XEH6+AVQ}28jzoKOYLax3QP2L3LeKx^k7<+N za?Cg^PGy#K!ZA7$8)7cn>3~Qrvfp&=$azVsYrV;^ATPYnsQ&|#`fjm561At-`9VE5 zwR@g};ewW~Wdzc2Xb<#RKJRt|MP3P}@(p48M0fHZXx!8EmuoeU!P$Jf=fU2fZz>ro zW@Uvk&k8r}UYfTjV#X2-|3ARvf9h@?zwr1s+Q73X8TmDBhyznlWUQTFH{jFYib?3) z!~?S$)F34MSs6d(-+eiBrVpp*SCZP7LR{|UvgVxK0Xo~7+SlO4NUaj-wRo}Vp!7Dr&9)PH*%;px>AO!HS_6Yw# zE#UoA&eGVs`wQY!+HGb=801=Xss!mq!bBF%#GYZ)3$UE|kpJ15=i}yQu+JB&G_ZJm_9j^~~BL9F4fXL8%iy`%p@lHtX zfH`G^n$$RpCA|4&;}a9%J)6x;@%jsVHNw6@-Ir7`M~78_9TiCx>=RLv5G}Ch1U4%> z*Tf4m7|x;{Ho9WB_Z858%6>jY!`u+32HV@0eQY!(%&^sM=7SYBPzuSn{cSH_%6bNd z^ZU^Dt7_q2Y8+21qP#@;Nl#gY6lHF&Xh`BvFnPHso_gsB@P1eITUx>X@x{u&DR-au zb^!6@7DuE9$Fo3N^o_UU<8)gIp%XNC+h1Y>I_!8(e;+vRCx{FC%NK0_2U8EvkFUri zTi#uO5{4y~ys>y3=*@Z7-l1s9% zV@oWW{aI_*Ne>wBP^V7E0z(ru~<~FRN#{I$5DNWz|T!t^cq5Q=ei>5!;>Hme3^_7cS<$W_u^bdS;io>a_0kWZx?EZN6&$>t(-)zE5Lz z5iz~UN2fEt8i56jr+Dwd_`=F~h}RuC6)>MclLU#)do=Jb&CCay^TqB>Unv&AiMa>8 z!*xm3xi};z3KkLh*5VWml4&M`rdA!nWNBy2)BfS+ zb#f0C_wupJ>3(s|`NzD80FYM4sNm1tcSl^$R5}7@= z_-pz!yQkpKmJ|&4C@1^a>?_rgozA{*QK&DaxeV75itqp2RUziuuI;CJ$3KUlPGu85 z?)`?Hgs^oU)DO&W(&qqjZPv*1VRyc9++mm8=ZF+`_UR@_r1M!Il~u**%I zg=_4e7t#QeZL=Ei5Ps0T(0<68JWZWzNE+IeS}LJ%fXrBrXYSnX0*z@AA1~75GG1|X z*Y(HOoi4sQe{sQ|j?L)T!#*&$l!EF_y6q>aR%wF*M0|@8zb5jIJEqLZtv~xsKeCF) z?fJ(Kd5@RWEVNuxPp@=MF(~Swt(^(@<=mf&U7$>Puv?z{y#LcJt9-1=zmZ`)MuQOq-NC;n$}~{`={`+j0s(L_ zg0iTx5-%oh*R;z&5MX+cQ>*eTGkd<^YSj*Dx{|iJ3aOJfz_X^r1`c|5GtY)-Ge=I? z1yC~#?-%^OT)(h-7X3yQo~{dwAwmTu0iLlKQ!xqJTB(Ud#v-7j?_ru9QJet9MF;*L z@SJ`S3#A7K_R9wNY3~?UJ$-^bp`tdF^~xQaRMAH6`)t!(^#;OO%S-qPjq#_c#%~|{ z>zB>y3G7IZ8!V6PrqA7hDQ1c_j7xiV4{OlT_Fr=RqlgvBeL zAbJPbf&r?tg+kZF4R$OE27A~fYbcG{7s2ay-B!A4pIaw9Cg-2b@r*?wovkKAj9|D# z0OZdBb{4F%O;An}lXF!NM;(eC?S1+G>HFY*iEt!ucy2c9bv@h~_q=%I5%0Qm7&(^* zOOF~b!Fp`3slm3@4gG;Xul7^E;g3hSHPY;9u!WgPj3$g2u6SwACb~ajaE_maQQ|EH zhGD^xV1Vk8k^JCtF}{c@58U&+WUe0x*h^B>;ntS7gWp~9TU)f0uDN@2Wbu)z8!|l~ zk;FDiyB+s^cg28HyE!c}ob0Os?<$?duX>0hD`r-n z{9c3SFTL=m`6l0>%$Tj$^gM#IQK~U^5Z&BJ8CWL^9J4es2f!=mQLnRw|Io{39&-2h zeDJN{J$poX|H1fvVB7b)>Y~V39R&*+(uK;56HXR8C+_PqN zy!UxyzQ@|`!{u-ghstpRaTsGS3s0y-vFyR6STkv#4wAT1|I0` z5{n{1qor_?II0f`-9=# zl0l+#5@L{#s-d?Uz!+F9J45e;**$yGzAPY2^rs^vYL0yKc*;Ev$jmCF^?}`@)YRuc z@$_d4#!ANBivcdV;tH1yOYY%iVSe%^%=nU4;e*!I4_~bK@;Rc3B@}2hig$^eCTxT+nGDq3{|wgrmDag zEY`np^wR#WQvbf^D;tN&Qi-0u8BQve_*pzrTs}`~dx!*|TJC9ha6M`V=t{Ui!l@Na{K=`*3?3IovN+odYTRw@o zn4}ban+-BXPva2NJ}ONBj8+mo_E)I*$QtJji;T6xYBw^WmwQx3wW+)Tr{R9E$-@F<8kSmMhx(yP0H(3CK+Cz*zhFT6cqqILFX8wYdKE*2G9ju%}B;glQ1i=)dMewp`a0A{e zGOW>7nCl69VuTO8D8Hfnm&w)IkpmhwT7iNhaO}9VQSrD8oA{8BfX_De{p((RsPvDo z6S<#LJP$nf?UbU?+Q4)sF7~Y1dkdlJMT5D(r6n;`Ko-=?U8gJhf!x2D*8aiHcy|HY zM`AzdC)5L%OT44nr5nzwwU@?wanb6Qz(mm)LRzEcA113mJf44kctt*ftQsT8Q_6&k zadsmo5q7AzNFanbRxgnje%m@;awU6wpS=E~bN$ZsSl>w;W(gJr=gCC4Awng2Xhi7_ z+~P}A;n11_xwJdc{cq1tO zA35)94#_P`DCZ>4gsqeXsK(fB9;BXR+oPcu1|5NgngsxoLBMB@IlqzVcwsc&lp`sZ zpitAT?H(P!g%X!F-JliMsM7juiO&WWdbas5^a-^tpYB!hqXGP`&e%zgeZ5pcu^zm6 z)<KK{#r{G+$S8g8)6c7(iQ!oJLoRc?A!N&($5MMF8 zt#FN|{gy6Z$)OsZzZwS`FOD}^ar*bzm=qa?WL8jL(Y>_zFfBQ zWXn10IQIe$J+WBP#l;P3DNBnsw>X9GFQeZ_tZ%KTr_w_Nx zcULY42seuO-M{dS`)LU9y~xv$wZycv(5OC4^AQ%J4mN|>!7pdmr~nPOmXk}f4aEBN z`>gtFSnt*Q#+t-5UId4;)>%2K6(TuVKk~<`bXX>(KCL>zvoZ(>k42e-|)OS}sQ|lxMfh@N#!$KwrCv=Qol~pU`B{r)>(6i<}7u+5=mP zdIxr$ZkZS&ByJCaO3V-wm^WnA?26Bff?wIGvsa>n7|SpKcVl<{!g1D8FpyieA(>up z;?O!wa2Ok|ejh>pKGgN<;ra-b88eC_y#SG0$aGk}N@VRRXx(n6v)WWz4BR?c*WRu-)D?B_LYVzW1_yr= zG<ecQta zZ_43KmCunSAj{1gLW2e6-AGy|Wplzxm)gE@Hq`gGst>6>ByH0i2R+EJ1KR}oc3gpf3a zs|UDpAlkEp`;>&$VY@qLv-TQQ`$gP>3i~{M|LbL)IK$T)<^u$@v>+f?M6ljwDGYD1 zO<4!-{_>lW7Wp4^R-PCE|MANozTP!vdC(hP&w1}wf3k_QoUy1DYAL>lqp`2r^W`vQ zDk8&(+Cdn-gJS3Xi@?+L|K4{Z%bzz5qK3F72m#U^1ersO7e0GW<1JAr)@we*P zFU_E2RX6C9Hc>*{q2^8+cckO&5G!Bv&OzJp>;$H=(AE6xJyQ#B9ie32woUnHJ{*Zm=1XAGsa43A$3@VWLK&#yh54)mec?)Wn z+U5|jDF>l+=NzYRBu(%Ksr;8F-+Wkye;)Oxtr&iZ1`9ec!|ude%xz1#X|}M zDgGACo)-T5i&r{$g&NtpEwThc!@YlL^_-&HX`D#1FAg!v!3P@s;H3UCFY|1@oG(PG zkjyZs0y0kNEIVNbl}NE9bn(_Uj`?8TqZP!#FG_|dgsgiueNGeYC;8~rm{6@5mVT^WljTsHh%;v3U9A~QBk(R}?zJFjmBXP0&`o=KzP@7RmXL`PW3EbOS8 zb2UJFIn;}&-$fCU8B{{O@eDka+7q$*#HiMZfjR5V1}D{`UDk)V`N~|Jr_c7!B>tG+ zqu^s};p0;PKs@Z}9w%-la$qWaLg<4U6P4oknSTj}lXd{h`)O_A+egM)U$@<>8S{MG znXTH#Sl-Gu0BrrCNg0tjkeS7B61XjZdSP#^6o>#mkr~5y7 zZoqNxSrc7=_?K&-9K+ZpgLY8^iV5yuNtK z9aMv9*EJnjm;Y1N=ik(OTzuxFh-oK<$Jy#)qxD{KPX|<=TrywBWH1o@=1hV88bkSy zJMQw0CV@(NPhXXEeoTq{K$!j~zNc_cQmN3>B$}(%@Mh$RS_U2{Wauf9g%;|}ooLPR z1u!CH!aho+ezqN+=kF3Kjpz+KCd%q1bu@toV_GXsYg6r@QmnFIi9qAd^jZG?PIpqx z!nL`bM;4k*`{o}Ib?^%ITzoW~g`2C7=0P5+s(<|SJknkq@6aWYa z2mo!0PDKC!0000000000000vJ002!zR6#9CPDU?7PfbBXPggEeMzp=zlA~C%HhRC! z`W^ZrFU~Qn8;L=nZT4Rv1_5FQ0peyGGl)^l@bm{oWMx%%7n1tleJ(0f5fvG}Som`P z-2HQ3dK#B**Eiwc%&=+Gs{HT2?*G2~%YW%C@iz!P{EbTEumY z|J~2sw*BWd{`X&xgJ9Q4q%ygI+?=j%{pOBVlvh_N73B1JY&$3|JN_(X|L2{&+HKmf z0hu)K!X^x~unfXRNZT$f!)9v%+^Ocz!NF(r6Ln{*l)D~1V}Y^gVfV`QZtN47<2ycK zs_WYYC_zM*eifu;-2Tw#!mDz!Du?gazqNp7$1-)6Si{Xh#o?f|1cP2dFpLFk_C1Rd z)8v6kmji*fZx_&pe&3|s{9K80A$4p^D9q;>mp&{(KMv<`gm1A&^=uyOFFFG~(ge62 zPrKARW!~ntPel#dqC%~@Vx&dLxPDhP^OnHUI1~_BrQJh4&&TAzrINZtUYXzz@mv7F zgEmlC7wU;bwgkFk2gc$09kTaQpX{3y|y6y0thH4yE z-K*Qu;xnqK(c%W~96HAP?N$0VSr2Ddm0xPTB{ES@v3+PtS~OtoQ5|dJN)rg$z%mll zAoVDtvwhF%>+#{g6q$5I4z_7g=iyJ)CX>}jgn`mjb=Y)i*lsOh#!jerRi*JNEQ?aW zO=>634$z`x3B&V|yBRhQpKF7*ZZDTWlx5X@o%StBO5U6Gg&V-RXA(9j_>^0gRfBMy z(>q}*b}pVoHFD0bn-BX_lN7g0-e}QYs;7r;?Qpe+2jI%y_LVgkp?E#2WL?KaqVxfR z%y%EfKRK*Q@8zj~31|K1xnbQh$hU0;14`7vFo+C}ga=)R^rhZM# zZP+BkcyE<-K%ctAxPzz-C+mNi^=P?1auv|DhY1MbMGOnmlxOa}U0#=LHixy#*dEiha4yp&@>ZhV^rp1xpgTz~bOb}V?>kOM8R?}_j5~JL8 z-F2Fx(-+L%O?@$0^W`2pp|UI-dNg1*aoUtuxR(OmIt9O_$#vMgJS&`To(Kzi7+L~~ z>E!duUFB|0%83{3z{H zaCk3neX!79x3>)s$Pccp`%dpxL{x0ahV;l!PM}3IR?fIu#$LQ}E?NbKpk{uoCTYidO?Y$qiZPonHlWH{9pC(rP*EH^?q4WtLle}HK8sCy9 z#;H5u`s6a=v43DHPhuFZ!Jc^S!^`-ArZvw!*+cl2v=%mZCyxsEZnk&J`B-`n0(uNl zA|e?>;Zoo&$=#9!4t{Mc@+t<&s$ZXc(*$4V*^&Iy(sMzgEzKkC4BqElG!J+7p{7$B zeKhbx9>(Rh3I6>}8)@{LwfOStMC+&NrlP6(5!?AX1VPfYCD(M75}IVT=~~omoAm+rW>V&qt5L=W)+A--i)zrT<1 zR1(b;RBxX-eQs{#uIlvDGc@y;<Lu+ZQOCKSDWcIS| zqJ_j1jtOA;721SRzaCue-QZLBHim3)8Ql`IRxO@$GZx4JL*P7 zr}ywpa4af(zVuCLXvT)J1P8pR3{t{F-0rAQ+67)}N6BR`Pp$7ONqY z)}I#Ev%I1@q6~gJ-CN6h2+kN6-elY~TXA9ElMyk_z%fR#9AoC`hL!-nG-!wX2bQ;L zgmyly-(8niW#QJE=p*c$c|hhHv|Lr9#6w>Ld&pcoBEPA_k%9vTDNz-MUPH2T6NcF{ zSlf&gkrS>}v~^aUm~ky?qAlMtR0=hzt6a^T)47MoEL_)+_U*%KVYH&YElFvn>@Bdj z%EL+E9`L%RD}vF7`4Q(F-5nOxgqNGldZ7PrL}aVm44cx;R}K7m2MPd=l^$xbF7+661H5A@|WoSa*HP{u-*4>wlYwh?p$WteX~t4mSSS zo6Vi3(%s~C^*%PvyxUzuN=rv?_ujTX(Y4`vdH92@^1dj=&~5uBEWQ-&#Tt-)x=vUa zIHY+PIxchXzzr&uJcN;aKOM7E;;~v(W5w>hH~j}sF8AGAS8nvT+pf%(N^kRuJxFl^ z&FLWT;YvtuFxxi(?;U`_cRx5^;jlhx3vy);PW0F3?Ig%;My6(zn*CxL7o;0uFzkk}Kw-J{o2?V?_2==0r@!9oYo#rVV3d`G_T2ShtE>^? zOgvtW#I3YXgW}dsOJ77gfX?yjux5SAcWKZfT4+Fa=Y4Xj7CYGO^!+SQL#9MZ;B*$k zali##;PE_d0^48Dm#?U{ch}zwQsLm1ZtOOxkjBqs_-d3km(Uiel8|L)LarSh&eU~a z%~dN74t$tPBH|2F2!KL0Ir_c(AsL2QP0^1p^DC~395yS`+%)`>K2LnA-LTA&XVIpU zZk9{3Y=y*cglm%smk0?Pj18Oj=IE#BO$X=T!YR6+;KxF@w!$$w5dr3v6msf(WBps? znv&7h=Zt)xSUKl&oopiKtIg8h9L;wdbG~MZ0}?Z6)Ke`Akoz z@-zp}?A&iaom;>DA+7rR4!L(Bo0bcN7wHU8vD3<_78)TFA>`R{(_6}``VL?C{O2qs7JQ8>w?&SU^Mx2KCOgS$`MnD7jH-F!=$+{ptUa7UFUs4O6Y z02oF-xgXSnW{u?HW*I}?^_=Cl1J7SUUy-&x_+64&)LKVl`dNc&g8P2-o(O%NWY2+^Vn>g24q_I33Kn^6Y@y10n z05*Re<40c!^!0pzT2;8E)E8dZyveH1gU;`0+hU~2q|%!0Fw9jO^{DL4woP)31OUst z_q$m6DAM?uRM@r*$zD9FSB;G>2AVj4H51*qV7&0 zrE1eBtXYrTS2U)D?s@=!tlxfS9afOn*IMXT&1NmjiFVwr9Ig%`amS!*IRK6D^s4PJ z41<&UK|Ih%IF62$zjjy8lE;<|0INW`)z7;L%mHQJ?+hsb?swmLm_4^+@{0bx)x&wKpDI#;GjcYKw7Zi1~_TDOhOHNZF5%O)* z4E?O;>3$Lxt`^2C@O)7go)bsH2Hd<3MJGW#3A(%9YTzRc%7TiWOXG2?D%%k0_om>h z%=9X}kID|{5hKFSvLiJ0rNU5e!R^qU$ua=DLwmm>_%u1T_FB)<3M8J%cWt#KRYCaA z4c6Cp?r)y(%Vj22fHp(CKatkaGR_Tu4w>cbA08!W9wGYN-|*%kTJJ&0cUD6w<1fqh zLkh=dAn~=Jf68&JFZxec6Gyrj=#M_9cAAGbH#RBxfT|tCo3J8hvI$3>-RF^rXfLtox8^< zd6tw^7|p0KTF^NKMR(aLv>o(V}AFd~B^H|-GXk8Jv z9A&M*(~By&x4bkjw+kRzZhJ4~g!9cb^dRp2HvHW2A9j&LdR0(v=eA+Di5R0<5)(s2 z;emxo#P=5U31yhq7DXW3#4Au)Txx8%97Eh1y5*c2Ig0zu?bf9i zT{u?js>RJ`{S{*gZkLw(@5=m(0+_*T_~U--ZNBUGI}_LRc)D?OJ=!Lj;ifXD&=Isxr^1+L*k;Ys0f8c!V=?x@UmEaXcD`md zgW2!1*Dv@V0=sW_u_aP{;D}1!>3cX!_xV9jI5qXB1!svq5sIM%mfa(Z#78;&8#<-` zM$l8jW{pmsY>4)|1SnK~_QHO4AnQ8wF~}OT62##~nMKZm5_qu4EOZSZ2cWcqC69>T z*W-SgneV{po4K~N2_RddXT*8jdIzghrUj>va`?x6xZ+eHohf-;!<<#;#|LlziA>8N zZB|6Ag;Cgq<+k%uYfN-Hg;0lwlA>@vYvygx4mtF+xxkay*T?9=#+;*XIuUNbVDie-z!GXcFN%HwSYUQvf) zpC#MM0~hK_1;Y)KIy(qJd!p}@`B}Dt?qk~Ft3qFpMl;zzD{1RacShruZS=+5Sat4o z3edFBg=kLHY-8>Oh+|Et*y_>|JMC^Pe zwhz$*m;s90g~46&f@`37b#Ac;#qhN^M^S1czIVq~Qjyc3PMwtDq~ z21v5*#`vzDEYc~ntYUd!Tw2>7(NuoRCjWTq!uq^x*uNz?HbnTY!ZLhMfOX8-}#mEiy%xl+Xa@_mbZ#;IpRuRc(I8z*8rr<>na_+v9m6ad@xV;u?iMaOsri zt!v_ek0y5PI*dDFa|ku?>od5O*yqZq`eCEH-SZ!A`nXYjv?I<;p(?T$iKcj`*&@)2qT$F5l!ceGJbh+w=VZ?#n%h+lSdTY={~1{=^+o5Lda`A|R~3)A<3}A16_N&*pg2Hs9rf zZ@iFaBBm`%53FIHwSUZvs_v@$a$qZ$^Vu<-FGi1m* zb+dT?E?HBmz;yjOh4sZhX4gNy*nZnjs;Wi4CwnTg3-#t2CTlH;b-E7%(#<+}srxj) z^Cuf6n2&q(ys?PTzXu@ z=-v6&#DaV8)nz*fJ|1eEqyi(yUSVrbU9X!8wGvWX!?kpwXRq1_PBYmPIA! zD+Iy`lO(L&7G0bX#+SL+nhyI8Q>AYOExpuvP%o$~^a&NANC$Cvo-|MGp zxJL0Vad6~)&&3}(doRg~ocu`c@a~51dBYJFqBt}SuTo-sZto|r&?Mh(WonvE>g#lB z_*+GOJvDhA#%}&Jg7a#0r?v89bO`$LFck8Z!{V6UlGNu!W`D3N z?IS$-2U5$A>uL&DXZ}p+cTbP7*%lFI`>Sb5B9HQ?Ju^M13`s8a8Yi;%kd*elf#6i! z6?gePg!v8&f7UIYA?owX|Ix0JKuc$XrD#&7=&yyW`0me`a~CI*mG+*UAB%)5?HT6e zQqGogL=MAoT%iX7Lq;9J_WO8MudD7QoS|3f1TW-l;VMo>ePHZc%?&RL?+9I6XsEeM zRXfg+%V*AjO23HT?sf`!FvDA9?WwM64_8P`>&5o{Id*|;9OvbM$hvbNz{zOAkHX?_ z*4mb^^Jp&|rZ>#pQ$j5;)OB$!?knag?XdEQxJZ77b`nT`!t43wRnvsD8Kt6(jwr{a zq#nSMA$mv}4}~sn{1w2BGenv4gKrYEyeglS(1q1N68YxQ<>i44C+yTY;AL7aHrr}o z$??UKOS1!`!ev%c#^6Uw_zy7I=`whRC4cvy<%mBIktV6CqU%*5Ld!nxmn;^=L(k~7 zUhf_x&EIqo^lv6ei7#1kD<-C!<^{vJe9&qdI>t3xc+Z?Fu1IFy+UK#B_+xbtmw9R) z*TW&-Oc_3{#FSN#gCS&@;9ZSgE|mv^x+*b~&8M0NFzxv#5(eNB@EC zJ%w>vJ`v6{Egn)_I z29UD^(v03O_eIF8_!5KxFBQrlS58tN>YM`5=J=8X@iZ;X7yJI)xb^CST8P>bSu<+K zTd+2F2%Oo=UOLhqSI;Sq?PbxugQEl3cgIGd+xvq2CkOEx39ozbMo-p=lx1(0YDQeT z2k+Ial1H->*VrbrF9&L|Q<#6Gn(FLduZt^U%^f$bo{JPm8O#`JWWoC=vG;p(+Z`46 zaE&iC1u}zvKg|t#<4F39|bVGws z<59pL$y8f-E1`K=bU^sts(yR9`03&DXU|IabRqvNkWyjy(RIED?Uf}Ji?cotTHp#Y zSRNm>lp*oCPN7_ogZHoC=XQK;|97$InMvK`v;@hym-gp;!fkZtE}TN3{+OoG!J$G3 zhq+7Ct|kqY%=ZWCH@0%x5wAK9Df^*f;>2(nPh`Z!q?B8=JF0;$Sgc=hNAU50&~v2K zm-p!AH}>w8E4%&S6>*nHT|)CEylg`Y^Kl3oOaX@PWgitgkQ)$Tbxu=hWW)Wvwfttj zKYt>i)?c2MFME0E?j#}s)($-W7M>BlrGJNtn5z`qQu z&RU8*S-K&GvcA7*m;ElSLNM=9YGg7PNBw2$_pcTESsP4W(TEF}KOR(j?-wVeI8}PB ziDz1n`h0wl^*zX%KHHmQbW^fTPx#Muw=d@OCe>8yXDfGnWT7S&CJZ7#y_<+<83>pT z1C2Vt+yRWKrNVrFetu7c2|qvmGMk$&m>-v7r(~KVhF62(K`pz31_VEHsfW}`K-ORr z>R@?Y(+9NacPU)jfoV0NBBE>)br%x=r|xHjuSICc^fJGUC^toZNTXkQ#jKD)d& zec{DS+Zsi9WnUwT)~9e_q8!*J7h8{LlfjZJT1NpVg462+$S1(=u=#=$gNI=MDyyns zC%S`8hxxSNyQ94?55S#JTT&x4?M9*>5ler~uFyh1tsa1=KInj+22M8b4~(mJepsI$h4ZlQ_3>cb_acDZ%+?fu z!F@S_sq%7QN&6h}?JDPAwQaI2+(05vC$zs!&;Ph+oGQ6S%RJ>xWhpWoa4pGqWD z-?W=&AWA={D}1HAR=l$=Bc6Z!j8Dm=FE@cZEats^MJX`n?_R@}!A(1*G@+jeks$jE zQkc1eNlkhxH_g>MrvB4>ZHYgfS(C+}!aK^l(e2wZ$Ed!?M;y|G6U-0!Jnu{l8GY(~ zhVdWc1|nMD{>$LuMn-;WG#Y8;yWEr60C?c4qEdkbgz21_t7C>dg3Y8itziFXIElvf zQvVNKOF#T%eOq1Ae;13M$%{XWkWZSWu&uH)JHE(s=1R`KHu0K%Xhy>ss*7+J&gf}^ zwgaf2IjfiLli-C@Ma+$A2)h)4#etDE2?ee0ytJ|_S|M@`laQv!@Bc=XUUakYSCw(I zGR{Y8eaAtcH30R18g>umlwlhOjSA-QXxm=w==$lZJ>L6??=}IDpmj2>lNEQI$g)!0 zO*76#*Ym;4Ansfl=QagOs>}MpzRWutQ8mFKp!O)4k9eFb#ErA8za~XfVWV^_}%*_iv!rX{Z z%-@29Y6Q!Tcw&liz`&W1pM70KW#*8~pi4u@`}6dNX%pOc@iBcK>^yu`60}+#fy6z~ ztC(+-(9}^n*-;n7;}Q$ys=Y{hK*yNn1ix>!{4J7Ljp=I3UPTg}fSNMst6n)zU~Ri3 zTn2QU+}5+&?g6pS0FOYM*iHKPM@spPY_bjaE|CNg#~m&u+Emxx%v?0LuyG}3<%^6n zM1p#89o>?Ke~o~?xNb#GRmJxVlg)lAqqW;UJGu*yNaXRVtM)=SJv%pyL@khaJgWmM zKduM&eWb8S8~p>%=exrFBCR_3ymK!YQj39(Hh8nN4;{V}P+TV;MJEJoYF-Z}y94Bp zC^p}XPOn$$r4Sy_TG<{b>SW?)`Dn!$<$5Oum{| zVS1dQY3^f29@W(a)qtQqNR@-g%c?H(SrCh9qYI|Wd>tvJ6?kr{{-28Y-~9$ZzW<`j z7cCZ)5g9ynJyXTN-9e~nTASL*)rDA{9m<=?BixOU#>xEgeM0>Y6CJs-?bvOve3$fN zHX@J?-1b(-)qC#l6eE0;<|#3AYXVh;Q4Si%q?;v$U!ZKN-7fj!8U2>S+)VMP>_wzc z!Vr45Bldu=SGDhyI@(p#btWftjNOY3->l;LUg}E+yyVAQeFmMZ#6vzvA>|HghF-}N zd0}B`|9Hp|KUi_?`=2%qJ-Ug1hDddrXU@ ze{>e5c5pWBXZP|k1YKj8I1GN-Eu*S7u^wW;c6$`^UcZ&uINh-zA`-wwKt2E{3QdQ= zW>ALHG5EcI_>D06s$sebj-sFL`2v_+XtIz+X$~R=FfoN{`JrILjwC=4^v&z*pyGqz zZSyFj)L4vQsTwQLJPfrZ#D_eDwDJtYoYW8{!{3)jM8w|vaP@bH`6OWbA2U_>tAA;R zoN*haP*BgM+S`L~xSNZTewZFr5o!(1si42Gon?B*mOru3?px9*FT0+FL;QactOt;1Rr!YxXw43pdi+3+EJq*#~O~v z$vH~seoT4b{l@;xQ<5u8UjwK$Xb3x+j4Ir^ypM|i zoC-qdB*)?CABZ4-#_Wx!AAGPm-|42r+LEc6>@CE@m6;UUBa;-~V)AJ{TlH0;e%QT;`Va z2Hs-#>O7@qX+FDVub5aijF?Ol+&=QRIc3jxONEi!=iTpx{U6Wl$Mefot=E6D?)-N8 z@CfG1EtU4jspJZLI_eZ`K>^h>lg7J}0~qJNDo5{(y$*=EA~wSHB)v#T&~|rGEtQbu z;mC_h)9|rNa#zzfQU}DT1390LwNeEt{1Msd_eq^Uo;}N7UvBagDP&kgC%&OhcQ4Bb zO1(I%xRMWjn{gKHHVOSm%3<|E<9M>#!SFlf{`DDbR!>xf8@hcfse%;&Mykxkc-ig2yg_^ zoY1J%Bj$zko+j~3>b$JqVOYFRk^pX3NvY{5!5Uo7z8@trl%R4c-9wK)rKxUTUPnQn zFiClQ%+`m)H+!evwC?duv&DN}Q-R;N}zz?z53 zw0vVS%R1blw$>{u$1dVD9*A_DUT^UlCw!MkU-dn8)I8@UTpCGA+^Z9T)tdX4MJKC4FgQPiauZqvOgd;XHOopf+;;n%_mUzsd2fP&&_u}rV z@S8&9`fyL$^6K2nGR!}3ymlTB4p|(>CgdIoY$8EaHGW*76H0_oS)SsFHy3hBvEhB* z<|kk8*~nCU^=$p1iZ4&F=>@KktpdyVXsk}_ptiHzH5O)d4> zH0S$W35HJ+8(4RL&&&8c zKL?_&pNz&$UlimNsyqz)Y$hCE=)(t~g9Vc$W0AFc$+`LCgM*PWv}EFg$w{j;x$p89 z-AQK&PInYX?g9ZZcOo$l4o78hRXd7pA}DzEk1n&~U=aH#N%LFyu_aChI9%J|HSJru zm!J8>k~+p{`J1dJ51hJZijWL92ZxvcecfmeZLPwMb|=p8OvT%gq}=?VVWgYc&J;8fp<=o&S`0WvQ#gU>}yF~Ot3Mk^&r))@|QUJe}~ z@gEI=e9P4y@A)JrpbjX?X_^i$K=Wx$9`~fQqx_r}V&!<4gTui)ythc-Je9GCz-PUc z+N4JeE;tknDBVsRFPoT1mVi9f;2qvA;>kQ>>OsD00H9RR=DGZ*+YdIOXpOWNKSPzW z@RBZ!PqJIKY;u9FDTq{~Uhk61xFjO4Zvx>zZ|-8l`~}r?I(wF~fVy_8vZYWC_mh_w zG*)GrEtn4I9K%kA8B)UFw_%TmDAUAz$8>#UEb1J@vEzyfku zzs}@6L*Z9=50`c6T9k8U3C-9B5i^E#iTdXi51nRkMizQjQcT1n@pZl753LN(sqL$* zv1)?1CnF;+p&LQ6M_$THM9gd0HuV4)5E+hO)VU1j{Sg)v`n=7G`(q&f9kCGYYJRpk zaS57;1jY&cp?lx}=Ivv6gh6aK3QXGECuMI?5;Po9@%}Mo>6=#b=e5nvY&F{*PtJ}A z4Hl-WOmArUk$L|9qS@!eIkp1>X!t!33+ex2$iZfA9yz##qw=z}cg^aCEiHaZJB}RN zJ)fr6*4Yj2$q=9@Mc&t$eq&GNm7ghYx_OZ1M^3V2@OUKq4oAtLisj-KSH5%K`w>{O z7Gj)F!Bpqk|2E6DnWms;s*`Fb;Aj8vAfl0@aM`GK&M_l0Z@NLvfjiy3ab#XYrLS3M zujWS>7CTD|gkgBPE6nTeCQ6q|GnDl}be&bGdFCC7J8aA2%Ubp7Tz+R#|G1>v*Rg1i zs2!p^dXsR`H)}XCz#=FCC8xliaj<&C3he>o?gt*`C%g0?Yt&5DjBfJ+;vY!giUg&7 zh`xIP+gx?jTh)1V6f-r#@ymmm##;|s(&<0IY5z4u{4f9Y*DX}83iqLs_ZPOwCw=tw zX4xk=TMWjwD!O;EOoi~U&K+Ah3@*-5Rn4i;hA5K(0G zN3TC)l;wPskD}7yyD{xq)!mZ0ms%>Pj>YXvr&X{k?8}&mVW>-DwaahwY9$|c+|U7W zdwk-*svhHJtCKA1s(b+@Aw?-^>W1`4-cFa;taITop+I@Hwd;6fY@XGPl5cF){FE+O z^lkTyEdTy|3x5*1%e7c4-640hf;622%LASu#<`|ZOhrMiS86n*KgzuSXyEa$Nbkq9 z4NmW>ZHfSJgBO^k4+ucH=-z+qvg%$%;BL|2}F^+EIlCaChqI|{Z0vdh&y zVo*bhha*`B(;e$k729P;P@8WSdQ__=#E(sQJ%38?B^`TbGlB%HxktaekxV|57;THbsJJdB+#fq7ab;@14g$tOP>Btuk%K zrI=3W&D$*tk4F2xHuJ|}Vs9?xpl?M(>LiftM8>*RuG4csH-bduW!yuQ8wbxC@@(t^ z^0j^Y#Gas=Ip^46ZL~Y{DWaul;mQcF2ZNOC_H0lAM6t67CpRt@A$+h1EA+l_=&Lca zqCFUXyg)o&bnNIxpk$~wtLW+dNtWSD#gWG{nvWkbZ|&8Xe@%ob{qQX?Jdql3wHH0d z&hGi)psag)_*aLFu|yr_6r7~<{VpxX-2Sxq_h;~9swxlN&9_~`{-s5bWn4|z1sju8!W5xAd3b5hGeMNc52|~#uOIXzZx1#5*Uct1 z;oVI4(tPZqizc$$xv*&8=}_{in`$75|Ixq-ALNEZ{*8kq zODuQh!0nszc#%={R`AVf->O<^3Mk-}xh;6_JH)xNW8F6CzAoJO;}`D^*2Ty0J({df z&B;_X%tFt=UG&HS;P9AY&65_K;VN^DI^V;RpZU?%Wp-t_34~$}Eii>Z)0-DSgRoQ> zRgz;u_uyV9#`}1JG8Ym{zx?1bqd$`PHv6E4p0Uc{N};Hyh~dMqL9Cx6hduz^F~2NU zPQ~Y&Bcg8x*#6Y2C#(Hs-R7+A5CFPJS8PI@*-Xak8ZMh<8}=7Xy_&IcgRx8L&Pw@F zit?HD*6Yy!Wu`WJGw-JEXv-n54Jm-InWr^(M@hc612{$0od6MJjzkmg1J>N{d9<(l z&z{M&EwK^OqPfAa$a%PMI(UxGk^v~5)nV5g;ND^4F-;Vx8qAv1P4h8`kXOvcQ#4%GB@ zCuM*aUs{fv5=jtVXGQ*S&DtAR5VW2c`Sdx2AAleRd(qabJu#~68mfBdmUiJfxAA-F z>^>;LJ%cmBovVKPek)=QN4P<*;xWs~J3=o|+k-?Wn-5&;+pxGUr42lq>h#_N{NA=^ zhW-l+7#$yH9>Iy#)RhJX-!B;k+yO@HYI#Ut4G64nY%x$y+ag4?|DoS z^8Rp7R^+-L_sQkWG@+034Dcp_?6j9?*o8A>zi>@4XnRR)p`H*psH0h{^Y-ZghP>fB z|IYLs#+}|=CU@ZP7xS_hE;;AqkgBe34cZZ;$wO#VA!Y~&lgp!5Jw6^R?iX&|f~4ry z*D@uyGhXR6-2*}0!|{dd(0jU!@VLJorL?qZO6VQ7J2a@y5p?(3$G$TBhlaj36Lu3c zpOdFsDlrb~?k(aTojsL)j0$xzM#*sz0xSqSYpGz)?2(d&1xVua9!4Bi$ z(52J$hEsZ@K%ANpBQ@HsjDA4BSW(0NC2Ww(QW^%Bq>h3DW5B>33Rdg&7y!paThYUW zbfl(asQHPl|Fe50g=+iyRCb@&2alRqglT2i8pH{vOvmf*$GQ&e#J*rH=CELN%igQb zKi>HG`-RS%q3!LlJHbr=M~Kqy)Ya_zXgv(`91&u=TQRy|3}$?dm4yCy`XX08tGZv! z%dgs&`EuNg!$O&-svmUkrn^GC3&RuWq^T3k_88k!jvAIlzfa`+wEyCZN!74VwJu*D zU8l*+YHwy`{J?NOu(6?2jfS-X{zynET`d2%6Z*EZpE(~((J1FToVy~rc;O!xPAp2< z>!8wFZZkHqpgRxZ*?NzgzMC6f@|CZ50;Xpt?8lge)60QwhMYA{A<&Iik%4iAZp{P= zqhNYDOXm-C?4K8Q>tXz=g6YNRhrx#Nm4+-!9EcEo;kquP)7@l&Ur2EQNx68Jho6%_Q3?MpUU(#M~JMN z<{PWMta3z`{ycJ|WXT-GPRZfw+i+dQW0|&MeZ2$|sh?%;QUHgKMrpj7*?Q>m#m15& zz3T_A&+I*nndqsH)8$BdP@U~qk{8UKbud027xNl3+5X+MZ?r4gF?G5EmI5awUYtQY z^1MZx?emEs_FP(g(#rbh?Pov8uih}dbIZW}nPUC(c|m|=%*0+gSF@wq+-*HCF+h86 zSF+us(l||^$i0i5@Ac#LYyNYLVO393;3m7M#!bE}3u)@uD`yPwaaTKZ|3Fp5_h{?d z&}^ipiG=5$CiQ>!@V~W~Y#Na27!51t!yhtZ1&}*5Gl<>DadsfpK<1Ewar4CZ;VFL| z43LRiKkLGMSAF-;YSgr?UQ-#0#@>&NYjUVkA+ z>6uY~rbnJx?O)@t--1_`R~veFX#9g6y|FlytbU1~Xn^@q4hCo3hE_N?RSWz&rX)Jhgpe^XAW%rIc zh}OrK2mI_Ic{XgnyXJABl{}1m;jmN46z-D87!j;LE3~Wgw#fjTg>v;goAdlE;>W~-XoJGYc`)yHqJ%#v?tBgG z`EKjlp47VYa%|^@ZI+v!mLAN~M~A{fvL!-!@*L7D5HvnK8YT>r13XTfMjW!8Y?u5sz+YLi{d|Y!%fb^Rg zp$HNMF+6(4Xm?Cm3pt16AC24pouqoIg86Ic{&Uvb+Y2q&{rxH)=37?r5J=$rYZrIZ z4Z(`p6{QXXDAI8Zo(=Hr!IHl(Lwj@Q)V0B}hJ%3UuxE1vva}AU9p|8jyAscN{jpOr zyCli+gHDBSh`@&V5I!fm{du`A!}@!kvZdi&WTpbJ>ZEGC4rzWPTB8r#LQM3IJ6sVC z9}$7|#0}EzK$S`H`&mBQJN`x+P|Gd486#k(<;#d2{84OfV?8Uox%ED~lccTwokD2Q z7LWXhGiYEx$}-VaZ+@T#-OL7$?oD=9v*R8PxG{&`SE_#N?fLQjK40Yq%FC>V`iNnJA6=gXuNDr=Wk)9Nyn@6d-#S*MK|B<%8*-Ywgm9 zEvdmIoFB!Wz$J~p6wWX`kIYpOJx@!h<7-2K#kB8;F z7vUqfBeV1SUU8#~u4Vd!Wv@F>Ko(d0)6poJ1dI?6xVAbE1VJ6#A?oL^;rBHOwdOmGvt;uA`5EtTU2bG()_g@%To24R{^u=7FE~xyl zL*F8c`Fe83Q7Kici%&ZnVkY5oFoF-JE-GKw%A|fMz2rmVEl-GO9tOuUo3sjbC6Ck^ zBfkds{7kWxmhYA0oyb!C!^B6Jz!Zdmi)+A%3`Pu$HMUzHx*_c z`3F9|f8L)-mNT;oP^x^hD0M?*$b=kEISxl`4dV(0UFOuKr9CDDx07Q%l+0!Jk$e3p zZTEXdbd#`ZWY@OzSoC~nRorm{Pi^k}AzDJ!3l5-^ad>yBsw;H;cgFF4WkbJjpV&?l z)=_^WxT^_PQc`K)!@2-jQXj4`e#)aI5Wv%dmz93S+V`23KkXfUGjHz!g*>>|YLc%! zC*mhqkW>vH&#|y$&jNo?!TPYM6z%h`p^{st;1{R=)o^uTMh>w_342;ynoA0(M3UEM zIt^m)UPYG&@8hB>X1Mb~&ix-QfS04F4PR3Iot%r&N0$KC{h>1;aVBM*wGVOCKWLj; zSR^)A9bvLqeeKVlJp1@*m^PL7Vnp~Hg~E*UJ0ZUa&$;odH zpYf|V_sz&=Y2h^aK7n+4%*PwZPt{or!U8)@K%W3LcJDNv9MChVzL)ps&F73j81(Db z^J|+3XANj>FtDYAdznWY{oD2C%kBm!o4X3I0?)>HII} z-PRUxlSB@|;!vDt5m11X?95rS$}TXWb)#c(H(G4q`u~4T^M8LeMya3RJawph)j-<4 z2Y@s?530glAVdyO;Fc2L!Z@7+Qt!D9|8TYSpTG7XfOh4zp_FUR$a^&R5XTHDlYmp0 zF)lT9<{CJqhEQfcpgw(HukyP2EE`EcBaM#Kf=REBlJ8r4ls?$i{ZM30d=eqZQtAJX zv+vq=6KlGCnZ9G34@8i}B^e}=$l{KiGl=l?N7{C~-EAxQzv-d9+cpB$sx_->)|{O4 z0q^_!GW$|S8UFhDC-%#z@o8R?0sF%=!p?c1lPI8%M$QMMR7hL0!r;|dqlAly2rfTx zANkfNCad4Q^z*$d-l2Z>}ObhReCO;$Fd&+-~)~A>4C9&7%Y&r(g{oBnM}7nWrpLilP@QrDwuGD`Gzy8Zn{*@f5 zjmHHMYymT(goj>^HF)d@NVxAqL}NSv9C+NPIbs#Tk6En<{*)D%V#8L>C{9&WTP&i$ zo=)ptw>g}|#zcahZJY$HvrYUx!uqFt%}0J8&2NYHDyl-ab3KljD<>h3va(C#JW^j= zPsOBJqt_wz;xt=?kGl!~Nlm^!KW2W0SA$iQDO^ZjuawH^%&lQ3RooK?yC|{<$eUAw z47G5$?fLziJn)Acr#`OF6NRRogiC&<2St^@9opIOwx@?wb7BhDDlW3>mDKJCpwvE$ zMc*YVAN9^Jh1WZ#dILBh$MG~!9Z__Yg9}od+2#&8D6%sfN-{F%6rO9!Ei;YR6{26; z&fhQmhMCz!p(Qp#3>Zwtc{T{#W}y3;&jcews$^Z+abwGI9Z0Hp~?ag2yyRSEmZJ zd4x|Tca}C_9uLj?OaGkW@c(>%TYW#1E}=)UbVq%9zOw#4lzJ;wx+b1Af@*s#IpMp6 zIN_)FC)Zm9{9Mez!+>!$ZFQl7lUsBr!m#nocTQ_Mm9!nG+0@Tu02F!paj<`SDXWwA zh*JXE*=@UhR|0YfwUglvdgyUSm*eycZQdX0&&~^*}Jhy0ExM z?7Ye!{0{3ITjvh=?!NxH)4|Sb_frkxZ_ADFhc7DCgLU%k+GEf$9t^f;-<9jzAl4V@ zp!>KT5g@UZ=rLbT-kI`FmkUV3}AW!o^Q2zh0Vk{(eGdF->TXg#VV%u zetOmf6g@@SFjWq5WI9glP0aC3tPp5zy*8k60}y+C77zU&3{*G|j^LL;>Ek$k9>foq zYD<+1Z6OiQr5V!|X42%mxtGkE z=w)xXY0d2}<0do+9Z?G3M9CF#%}s4u(KE(6CI=O;=-WrCSYOhJQuH8G4Qcjt!5zNIRKy8Z{ow9P!g1iTE+$7Gu(`nY~ zK}JF%rzmlF(z4@aQ(kQ3zX?Cz$Q#i^o%S0pef;SkjE?8p*IdNjGjY%7i-OUZ65$S5 z6JW4+K&fmtucI!y2{wlp|9u(k_grrBh52uZ&8@jzN;IqJF~SuZJ!8vCLyNoT`6N4} zN=2=jdywk)y~N)`bmJbqi+le5tswifzsRCkSLN9hhtMu6C*iyU`(Y=_025m>WlJ@> zp^ysA)B9B6-<96@dp)mgF1W^L}`a`;&BkDj#k1 z_a^A!eztf!b54)iGqb;>QJ+;I1ZDscjhZN~18(Ycz$n-EkNtZ%|9aIwDFVEze>+(Q55P;*;LO1yR1~mt(4po z1{H#KoHAfHUe(#>E-1{;u5~UQ$T+m*4SFBdzPYh9;~0exCbAyA*>W1G-!9xW?7=;K zJTvyp3=2G^dz2Z$v4;?wN&NHiW@&G_*;DEc&uH&#AKT8lCTNJrV3Ke=b)HZS+< zzK>{6;Q!NtCxeSpl3;)?*e;{{QD~R*8tyQ9QAtHNJchHOl(4Z6*m`%Y@n4|uycG%; zgv&}P8C_V+_g5@Y#A?OaFge|bOiFI|yo+Dh1ohrnwF^~ZOHUQ4jS#2&0h~!+Jd;q; zPO6tVMin2;v5-dR#;hc5mt1#F_>f=3 zq(Ct?pvii=pU#6sQ*YUK1%DaMu0}JkToSI2K#L1g5;bzLp6XrMsc*=`Jppb zl)k0Y)w{hX6nrsJ{>6lROjAE!VUxZ?mDtcR@W$Rw>#@ja@Ty!nWucdBGA3f3ukOK| zZ`kV-@^4bKQ?++skOi+P(K90mH`jr8hr&AfM1Y!L40c6?gg|1Pnx;ZVIZ3+0)?cSq z_b2?i>PzJ09uWg$vZZL_7M@z9i8Lcbm5-`JZ1r{;=N>bz82|bR{^|B!-&SiCa1>LkG%LmxGti$-mU@zv(0#6UFt@ zuwr>tx(FvV_&y>3yrTadZm!Sez=x7IT#RnmD*#bTGpLgx6!bDQN3?(g4M%1ZV>(yd zpwFeTADzZ;!y&J7_PrNgkBfc0ouk4ecCNZa2|aQLgq~&v&YZwShjE)_Q-6QuzXz`B zmlL)(VI)oSpj=)5O#2Sz?F4bb&NU`50YYNu=5p;7yqMzcqto}RO7P`w@}f*2hW+9; zd&BIq4RsYN=(mBQGK)Fv1`P{<3s15QvlBl{#3m^I>E-_Q_)(4eD*I9_c?vI? zt-KC+M5yNrcCD`mINt%t(wvk8RhIfTg}3eo<%dW+{lRhZpV@||8~ftzc|TJbf`zJ^ zraJNz?-*-$&yztn9%Fe^DKmx?{SARSYreusbp##?}&2{ zNkE%gcY_A3))(_C2GEiNZ1;YleDBY{w7^_*Ju;Ov4dB|Qho!{D^X)_km$B+6Rz@Ja zq%W6K3d-@v3-hyPM5ZZ%q7Tx(t*~ZHhw{GpYd>!o&N-NT$Kmy90l>t|K1erJ?J+&` zm~wqPOChHxx#O|p72Y$hmNc|Xl~Htm#=$|63`^16E96uok=))Nc3%|ySK2zPuQ|y{ zKC@FsGo#`9c6T5NP+$oL=HSzwWAT8l8ryc?gY$ovFtn+rv;K8E8@L^SN;{+wA5QiG zkQg4}r)}EoidQo_y3WEOH^x00CLc{!5HBwlk_XZ?L+Nx`YW{L4(0UAS{54v@01f)O z0om&W*vrm)<7)Xhzu&YH1^Z@^x|rGNp7G78POdImxe+f2b_YqWqLsnz>Mc1@e^MU% zS=Pqz`Xu^*r$ow!WC`~PYIxLK+@aDX*nqXCEU2k6jZba(Dkkze^5knG&#%qYFVRN3 ze@RJaJLPgfvxEqv% zZg21|DkSG-a?)~gmG|J~dsNQGM{@Uc@A`fQkDww$duTljH$6D|a2Cs6c1WW&TjVM6 z!b5TrgxBXb>4o1*GjH3YdwRgt1Fq*X-MG5Dg!q1UEHD6UGB!xpV+ri+d8aP(2bt{m z`X58cx~Zy9yGV3FgLan@WEy6YECOaWfnpB%yH?Ftg&Xu8Vx6^{E55$T$9S~94$U{U zz-L#};dIeT{1)Z|*ptZ_mCEDZt}0ESY0e|hjkIgCVOK)h`@ZYnVjbR4ymBu&njB_t zdZBZQm3h+a#h!#t+GSc1xil?6-g(+`X4VvXKPDNCaO&H&euWQ@KatQ&-s+!2g1K9UQeNYhh^-go4Rg?7@ko&9Pf74l%Je_ z|%S|LmHBfswTu$pg!K?Q-`Saw+({N{A zz?MAWGz7aT6=n2ECfgjz+X})u)o)H*xYDj@oS^p|Q}%i@2g({&a!7!fAF5p+hudY+mq$Z)&may0KJ|hsp zok3u^#4+0Au&O%do96MCvsvHVvKJZmC}Rol6F65!jbAJ!*$(G(52;v7oaYAOBpCr! z%4gg5qrNjO8|x1^Z|{E(Vkq~F2D==Gy~|M``W%qWFkBVj!< z@AE2$x|K}u)`mUb-hj3ql?twuFdrvBe*bp=t7r0M1=%xC6)7wb5Drdyz44UgbYAOb z$IR{ViH9zXd~Kk!>hHZ6g{;eabo~#Fl6;JccpsZ=mi6iv^azl)E;YIaT+Cx0Fc&2A zI4ztf=Z3Q87PS}Z1B%Vh#k2PVNE>CJ4h^(=p|yv0%FRij{mxGgdAwfsSXC?cSV+3F zx4V2QQumPW{BovzTFbzS%`9%6psJCwUuUIa+GFR&Ld#HmTVnW#$vT>n!tP^jrf<(TL$cvfo*E7L8zF<_JILiI4#`i6Gdy(Xz`(cNz zw`&eJgMN0-F+%skm5%&%T|gC8^aj9OT*ztR{l5EeM?rZ#DS}Q>?kOanhfchvBX63M&8w)0RC_j~f5^_v@MBo31M8_I*D4MK;w zFMY>D3I3yj*GKqxd1sf+7KN6^a<@-KMHP)bK#w|qK4>7PCX0oU*AyvFT!~YvE zs4O(=?CC~zsID+Mwn<&?$|8{(S9B$H{3Jx0g(S(Yg`<$xSM>u4?*C3U{eHM*(EUi= z%Ylvhvo6*t;;?7DjNbHz#=pvWORiLjQXw%)F?R_0Q&4z`F(M~QNiIdR|SNT%L zr@Gb7`_qLi(%^abe? zd{65~oIF$S%PFGgzns-En&L=_X_%|Re8g=CG5Va3Ty)$oppPLPPPU+@vxm#@>9#+S z0tbH&Hs5U-zJ8^?fMi{dDh5>?5X8S_1>hCKHiIER6VlG9qpGsbg>#h;7-an^Yx`G0 z(x(c>YTMR3hza0?-748mDqW`E^t=mfh}-I_{^>)2!vkdb&(r_;(kMZl)J}Gu;TFVQYEf zpqvM_1-#sYc8D zFb?L`x}&O>SJj%zt6$aesSATgN<%MxFvXii&Utn==I!LULa;CyNTQQhF%cMNf1p-D zHd7s}lsAlJ^zA}VYnHNeHc}p$7YmRgg}PlsV@)R)#37#LHX}}TF2ykBP`+<1e+|Js z#tx_#)NiXOMc50c-Ec%}T0Rm~RE-Xgsv~rcGI?ty0#rPDHvRX=@Vi)s-j><;LzwE> zg>zeWv>Rjtt+&v>d*0(QfFW3O94Oc_bGS0AnE&tg8FT&@oA*cgB##qB9qVd z$$?Ki>?G{z0@+`D2;Naz?}D1+k8~5hsjsyEA-{aHfcrku`7IH6I@dBp1S4Q@L6tsl%ui-rKlEkZdUXk&7{D7$>-c;;PN!=}j10f2 z*glOV%924%?GVH|0`Hu={|&?+0)Q_Yi&AQ-CR&m^N7+pk#XW>1h#&!zThQahqMO{NP|9K?q}i@LKjBr0T=D8;uPK7hxyAFFJj}5BmO`UvvW( zxJFrQyqd?ud`R<7-b+&0j9oXe8@2<6RGDlgh6jFqfAszul$H9GcWu;V{_Y%4-L$7~ z)wo}4D2`Fut?5uP;1vbe3wVL-<$%6#&^=!7_gj5VXF6;=7seOcy83cYhZm;X_m>r7 zT>2uS8oO?#v)GyG^2pQO{3AwkkJh7CJ`{i7n)OIqavOFL@198syB`jtL(jRKU()?P z=!z>L=+fT6!7hGt27OfG(4&#NXDDp;AhJCd<86^XK=%Rbl+giGDS#>v@_K*I@#VIQ z30;cx>E;{aguj3GKc@>{$K>zxg$54W#a*?ID*Bz)sqQT|ZnJXSd4^RnSe%ZmADJeK z;qRB)6A_B1$Y-kKT1GAScoB|Df?yPD((-jSamQPaL+Uvv`A%@Pv>~nOGPMY=|UWe*1*PFWJA<* z2jyRyhxhX_D4x1tUj!sDmTO)T2(&v#$YSX%OcW5ITai-((snLjbT=rf1rwMXx@R|G7DKqjVl|Uj|DH?knv}bM zl>7P-oZ2XXAqe`*jrxXc7X5zRx6MWAC@*k)s@lVW|;HyRj!ouk$A%IWzu z%b82SuqK*)E>s(zfD_iSwpH}|PVi8e+(oAo(LxOLTv_h-a{8~qvASD)%T*A%Yvee( z0^*JncXXv@_QA&E(0~G{Tu=U@yK_EWZt_@Je|hrB?8XyZB1QUNmAY z5%TF`e_W^SoA$Ba?*R4jw7>ndz9OS{9-o#L%-#_576&DY-P+OCf!Vf+jkH>^ZEK&ERXtE?K7&`gLc#=>Q^E|p zfE_H{hI(OOCFDKn=3C0A*2(KOU{xqwc?{rCJ=CL+4f*}aUcCW5){(tHV#E^=z^=iV z<{#ba!~FQ~!L(O{u3e=bkuAFu1)zf_-yg!OF^jt;tCq?@= zyt2K2c4|27H4N}IzCYan8ZZU5>ig=VXmA2dyK{I7NBV>0?*H8Cw6if4qn8@Si?E*M z%om}IrbD|u>r$UuSy08r!9%=O%lV@U=NdtUAB`sdsK@?AwJ37<<^%c4C2Nertio=@ zJ$NPuqT;ljXj4vcKS0rWn4?qewNyZ&tW~^Ue*X}#{`%Ln;?r0TR8Rvf)y<=Qgkc>l zkOT9^0;M`2S~>by7h^7 z!(y4pr1xj`w}$@POtjte3wB_nC{IJd$GpGjqJM0-OdX<4K(RK5iaAq|y z-li*=9)T@8tNi7jWjbl6p*{3s&yoE&-*m5^e`@uGYo;K z^0e7c;|SR}awiI+ z2%P!r{k^>|iT>oGC)Brx`>*45?*PTceaOU!j-QnijRtjXY264qn;uQ7-K13uy*xm(n`)J=H7h0|x(-@7#LXp==?XPAX z>JLctl$XGsnUu*3Po)&DtaH|u5({Xp zARl#tV~*a@ucTv`6yYgSQOM&F_H3*r;r&6o&(MiSdh*F8p*VT=?^rkTy!AFN6@A`j z{0#fSe!T2?MjP%sRJ?}3GXG!w3ib4bHSIx^cN9YcHWJaM==daXN10tSTnYwPOlo&L z^0AF%lW2Zywr0IXP09rmq1oH1t!qNJOzenKx)3K$EE0UjC2-gRhECn#4e|QjiUP&R zI`hAA8GpS9e%x6RGO&Yt4w$OA((@*v>>fpCLCa+$Wt3%(c*zTxKe4ZS0%0FTurCd^ zJB0l}hOK^3HSk@wdLz(Pt2Eutm$J@>B3drVs+4_TnSp3eYx>bR$`4)Tr#18evRHaY z9~M5eJKf~+n-1)+%*M+5<_@-l-a9>X2*dPq38+^t8_AG{WhMZ@Nj$(PoD@ihcASLD z*2G=pmJt>w>0zBHfY;Cd*Oc_p416;aa+1f|a84TJxx{f%g$X9mkU4@N9Uc4O@A~`_7r#2gIA*;C2aGOK4P&!zPcICt)cxgER5iHY|D25d_^W!+TD*3l+G?1^?pPBySw^L3+LH&IYhTB2cnh}l*Bi9 zPqqkN?z;MHRFEj(3Tbc)OI|cu`Y6Zy>L)+Vd(--WTlXUenF_VmCd1aaJTC_jx#v>0 zmDT4vbjq~>YyM0*fxiFi*=unQ<-RS}0^+h2_fBWmI&Cr?0Xw3wuGRotua~&vaJ6#A z56TK}klif2VVaWzH6gt;bgiA&9v{=?y3kI+2*#rDQ1jGAP;X-OYYOD zao<0mA4la6ZHo^^r!%9`dLhM+y=Ff|HImRs;Yujh)8*(@zEde&uZx2uB`CAX z)%Q@N{p)G(LJQhy4Y1oVvR;eUmq1@7e(P?-oT^uJ z@Yb%sbj}^OoDkAzjE{Sn+)A;x?VEK*0}aj zIdc2Hf{vqpl$YCXk_c33MH_OTGbnyvlYg4-uio56ng&?8%w{JKM{SWhdl1Pn#nzbk zL=5pJ>v0&poCf;3;N|f@pMtCVCeaUTZsbKza}zt_CBY;Reu5guqYuAGjv|EGzI{Su_`= zT{oWrl97a=!d(k&_~XsEjmG5`ZP1GCt+{h1@&gy0pUE)CSNYd4tLwfxWz=MIN144v zs;w!gERn!|1?M<#I^H6#K&29&+O_|1YWt!UEBB=2rRz zkn?6Hf}=rM*C=PWNN=?oNuP$KAFntm!7m@Y7bQ=!-kZhQO!0>9yh~n*rM|=Mw6qcQ z;@eH$$|s)Wif)A86TLpNft0T2Hx!L4AF=Kww5P_3X7q@X0&mbt&cbMpX@OI!)9P;H z$l7mwG5_|Ay;E>5Owcu&?AZ2>o$T1jj&1MQwr$(CZQHi}#J2ea=RN1#e19EI)l|(z zch}6#n(3J}y%e%J0df3w71&$DP~}npua+g;=pa^BxIf~si~RU& zyQ5usVlxtC?b0M|4#_4u2{NM^22HVn3@T{Z@Mr9G9>V&I4r|?hU_bXJ9#YT`jVac` zCUC8;96}fOe;N+>a%nMW3p~Nq%~p`Y1xFP>zDxUR?ANS}K6+=p?SA|A)r)In+BgK4 z5pbj`t6J9TAbQFTBjYbA;Ha)}-n>hNuas#F#f8kIBH0cKd)%U=?qc{Y6|WSx4uDQD z(61fnTR>MK1O9Ey&s$%B+8QWZrBO`56-V?L_{oWLujP;^$rESnzd$b#yr}Gf_#bVf8z5|2Q(6=2NZxYaxDp0 zTdJ9_fXLZ1u~5gFAGVdFnta10xV_J(oN0cxX=9NHGR2Ux<%7I{RagX z(GWb8)p`+JRaIoegIG?{nDk@@s%pNugYpnj`A#lH)=G=gG_@1P+zYyk)G7+UJT>AR ziS`+V%^;$S$Wm;}gmN!;oaybYyo71hXwshjPFfssboP?^dRj1dqC+1S3vXlPq3TN(ZRR{s^=QxUJ~7efO}b zJP%|(bMqZq(taFW=2s9JZQHebHf3B7D_bJ#A{+o{>=+(ENVo>D3S5Je^pUen z&6+cpWsfzO2h?g)Z4{%;-zm%d`T1|dKtomAT5oumMOle4u-~5vaR!Apsw^RPXuwp|+{%D5 zXWXsF`&mUT$UMi$OK!H&NK8a)JEM_LJ8s@Ev2J6AXKZLBI;ll zyHcruqOCZBH7w28^}xenVbd_4;2i84@nHsj!sgrh_o)HH+mP0s*2r~B{wKbveMGt| zY=kNP97N8^?V4a{<{-bpSP$JgX{bx6G-sX`*U!jqQnv2&#ldf0pBpCZYwdGm$a9zO zdlq+@FY4_U2Q(<$Y%=Jx>sO3_)iH1XNul^W^qq4lm3^*0DqMHSBuIO4{Kn3+mky5B z)WB)3M2%96d<+)(>8CmDGtKp5Qst>-uq7lFsJxkR;eCQ8QMmGjK_uOYR7MbKP#Jcn zOj-R-J+XtNBOvsB0eY;o5j*!($z4a|8%bK#uHDfjLsu@xi-5-l6Ui=cKVS&WPI;+# z_{}~%6(TpsYlC-O#xy3as74U)4x?tN`_TJCBx4u1^VfN}`SWAPeaG~_E#a#whSze? z@kP7LJ-r_U>a!9gcB8?Iwl|9(=X&2?IBzs&3)^^e=G|5>v!$6f_%1j{bK-aY3UvKX_p8vu3fBp$M6R-4~E9L zA^(!9e%($m@<*vdBZ;R1Nf*uMFhmKlm zDlg8l-cpi*pH!=~86>cfyt3LRIXCMI8Bph_7AnnnpDg_E%`pYX+HPa7HS>BIC-M=c zd>pDqISoF|CJ|dvt+v_{KvQCK0Xg&XCA0aI_lAM46w@< zl|yx`Rj73I76S!}PMCZck((Rb2;7HOD$le&dsCST@tC&tUXyqK1c|41YzH1dY ziN)`Y@xUdRAhp)^9XTss&mhxX38Zd+EsY%&8W&omk4_HTS02^Vsel_9^?3ko?BkJQ zt~D84YTV}b53~_~jVekIfxDu2>r1WsJUt|QXbL&iSS8iVNpfifWhK56gWZwTPgewi z6l0vYfQh_WfE>nglZtH%lYaWV5~0&U^w|vC%6pL}BwYC-{5d8SZ;u#QpGcCO@?|X9 zqU>F0R1q|*z+_1w)#pTFWYaR_DicP9ZP)hP!Q(_Ya&pv+&wW7WJcAIYZaiNM{s{Ic z$kojsk5aZ7~9t*DXGXD4P*o$3s8pSOw{Ht@xI4 z@h3L(UT9!x;m*Zt`5qJF=Yv1Z2*?yIs)d)=w46Sh-b0FosuPood2cIeOVJZo426kL zU#4Hnjp7s!z+2UCes|tD&tKK%&M94C?F@I=|@Z z;3J%sTVlIL*;VBxyRIpRwxy#x$mBM8?-+q;U2XkGJroD;^>Z`d-FRX0_rCPGlq%B# zfnA#^-fQb2Bz)K53=uy4i-~IzvuAKr`RLKB@7V2{So$xnwjnX0XEtfjoM zQ!i^@6A6^A)fs!(v=Z_VDyNU!mTLjjEkb52{d6L%mh}kEqf8%Uyp`QYVc*Z2yx%9U z50i~W>}gRuFjYYXJV&8r4{GVYxAX^L2&3tjeTjQi~#vA5IK3MS3E`O5g|ri8a!c{e|X^@nibqSYw#uY zvZh+~L=Tz1oqLob&0@aUOECayWu(P1VV_S>8`O{6zc0pKJR)xrqx0R`Kn^S5CTMyT zIweV>ZPaWR{;5Y2awIgpc3%WN-r4cZ;`hAjk(Z_AGCOd!Amsm!Dro07qYHJA40}O| z4lk>w*C^}L;H8fSKlWZ;TOIp`prud~c~B|fjyFdhhrcA!o7eay=Rva8R>M95eSCW2 ztte^JkO%VUNZ(UL2ZBUGlYF)G<77~;NPgBG&ts#Kj#3`Z5T$;%>=-N5ljsd?f`VHiXdv(4GzVd%2^oL1rC_2(~$ z^^0XUbtF>fdB(^9bzAbVAyzr7r-+fS0GbD7(qmvc!7$k{)NEZIazQkZ&@>CU|Kwfe z#75jiRRp$g-%^a~oS)D<2689neJzoZ_zQQNCalQ$zGJ#R@@vvcbL7~w3Z)9!|(%LL^nKp7dqw7_lOdR$@ zx2zoTFQaLK)ppr0mw#VLg1qx{w+ciiGcPy(qF`=`BSo=5G>^YJg;T2OzfSYR!~3cb zW+A7MR3D3hgTCZcVMDAP*AGdqmp&j6@iAymjvQACeEwZRho+j6c%s(Xm(qxi9QmOv0w&Av~p@#3_5 zAQPD%r1En(_5>z5x&-4>0bF-cz{)9z?%Z*f zJSVSYap@;+T*$xG7~fl5c3}FU&bf!^$%4(pN*1y67jo9&t*x)!@Sq0Sf}YwStq^y#Zo}sEsIU;4 z=ywvq#zbMKWeF@i4>z&DtP`AuQFTztGXho+??MKGXiK5k$%# z%dAyhZ{6!Rl;q&X=tMi=550;(pux@3Onq@upuZ9KKHa6`(YtqWZRg%oPFVKw_JU2k z{ms#9Pjg-G>JZsIS1;Me7Z){TVoKB~(gkQER*U0NLV)}y?^&+QTj(y6-lwnr-bz#H zVl_PQwB=1&Hq!Dmv4?*JTvSm^P>=S%`x^FN3Kp6J&1t6^M)WGE!$RW< z9uvc+YRQ`+#B-2+7ptwE%_{;u_h3A#l|nbn*19GUv!~<9u6+iys(X+xnam2q1m#IPd_i@5^D0WbEZsT3 ziI2yf{_4f1a7)7a`Q?rgra4{B)P)M_(iHh+j*_0NvMdjARsobu7X7l)#5CQJGmG1H zwZw7d@T0wlHA~@zZ?^bzrqPf!eEN7P{@bDGi4&e zWunNRfOo#$EFD`Cim;YUlbuMw>$&bF_G0Dnns-g^t9LXtD0vji69_ij)X=yJnqItQ z@E@zK`yzQ({{H6tgOw3ZK@{g)Z&>Ps)Q$`kodA3u zopplI`;H_=msE+$BBWll2mCk5QIrnu16mnMy=`J=Xv%?KuND!iDj&Ols= z%RtM89Vt06_wueN;B+_ZwU^zMb+*?SOVA25g0^D6mbQfsJ08qY^pD5Dt)JWSjQ{TP z`_I7^@UPrrlT!A(kI63%SzCjBsuk%ZZi{9uR?`A{9Wtn2K2Dp!}Cb#R4huSz6a z=aG*Bu3N5XL?f$?8nO(~UNP-1yfzv_%^lm<&tMdss-L_L?zV%*%b1o}b#y zffRxTk_QK_ldQ^7FR%f&9{q*cIw({2@+2jvvyuH9+)I|u+ID3cvLe*-NO2I)InSJ zaSxj9cLSF)51=Z_+^OQwX?EpmBb}&{J6d_l#LWA~VB*BknY?_SI3T?s6i((*jU4!M zjiuFXLfT?WFi%z#QTWIT7hFj&BFo(aId@|^x6++jsqa{Fz(!9Y{a_ldog-xfO0D?-L+K5LTmNXU|-QO zUh};G<->a<&kcSgG}_ZL8|RhNY-GXi!*`LEV!St^7{Oy`m0uv*AFx~NVw}S~VZM0^ ze!CrUe5cY<^`$z~&Cn!HE7Z{3c+VYmQx0d#v&o3VGAe0QR}FM$4Qp*cQz5Xp|0+&5 zKH{m)IHv}7^xLQzrjLT~Wn%w##tw%rHZYk1LOj8#entH`-zGj^acEIhUOOkeLThcduA%u)$i5jN(5$AR^?`0p|Q-k1<#H3 zCm*K@zAxcxj*o4LpC~-Qop2CYP|Rr#p4tnnLMj%$I2}Y4YDeefAd7Zw|Q}$Ea8C zHEy8Zz5-SXwQU0DI1U@lURHPDne!%$n*jp~RJeAP_PcpEZe%~QmhT=qu>Nm3-G@k0 zLq|wDeeTSrvDZ`Ez8aTF`I{Tv&ro71C9kT9KlRf;Tc}=>H{4~&j_a&5nibo8X#(DA zPb#|WBu!~GLUPJmnKs9G-_uJe}&jEg^9t zJH$^k{iyOxp<9n7CF^ihef56<dwIM4(dNC6m&#&qbbXH5eU%k?ZIBqjGe0k{PQiqGTGbFRfRk zyVou}T$?A^;;nc=*ti%+x5CdVm8XT4O4dM%YKHHz4k~6F&>y%7^y%IWK|OYERq6O( z(+xa$F8XFKDHLaLsxBcwUcy;KTYfkcbV`mPBs;jxhhX_$A$_oFA2Go{ey|IDByDDTd)69cB>&9ncLyqgKU%<8lePr?jl2we z5_-WwM;JS3ad&$supQ(bG`*kkq9U9b{DtYLi1~vv2^1o{Z5<6&jSO4{#bc!ouE|YV zOY`aCkPrG6@e>_F%2!u*_6sQn(wViPEW6j-7}fx_a2DE8pK)?B!Ss2CPsOc4>X4Bz_cR?^&Icoiv9c?j^z04y0<( zW;>^EQ#cZf1f$={>)1$wZ(}bF5+)O`1nwDRV zIeX+_%wk-d#KcX>Z8)v(io{Z@wLrLwe8xB|X|4B0H|~LO2W2_YcO_i}emI$by=<42 zq-9i~y_8tuBPzA~JR=aaRD~|`nTr&K#(R8&`>$)nk4W)s33aY`!oS=503EFUZ{Fv6 z?g7Ikg_-zQ?s9J|h@e>(IdR+_Q)pSM%YFujg4zet4h$%GkuwBiO4w^qV83I{@58W*JF!>(~L3kPp=Epd5;p1YP-M zp)%@mxSxoSYO-~auko=iXHn5{Qq;)e^5IhY5ru%jIfpQJ#g6$al$G*QC`Zn*aDFVy zQKWd1w?w089SJ6>s#Ui7%ppgxclL?UWj3s7ehE$Du!71MJTRomo?bfiChc2uBz&uV z&|^+m6y4?6qMy$`;e$)zZ;H`3sa9MOA$XiPHM8%2pD%QI)g^uZME|(pLTqQ2q7k+e zRigSENMTS5u4t;>8OH%RKlHs`kUhg$XrxiugZ)lsliXv7q@1TA*I43+TqYWWR}x(9 zqJ2NjwtJ2mU%_H`x5uouz9dn|@5L9+mfk9OB+|j-Cbyq+e1Ilic!KY?ToQQHHFgl~Yw*#`)>JJ4zF4zxbPN`mFE5 z8)rU=2zJ{8(Mu>?C)`bH4?%?krMiV3ss8&>_e{B?YJ6$xk#6l|_3|G!6#Ds!Tt`OL~AWe(>gjqCd@-65-<_UgxuT2X>x z7d0!`pXVS#E4li-F=x*KtFj;+=Ls-Ks$nPQWrx^_Vz+jxQ)5tg82n`O+ir`1FY58H z@`;M)$Bo<(9Sp_+a>d=U1VbP!yh4txWvfayxGr~ytId)mcI7;<>Zl->ya!ul4HV*R zAKhUAM;69u`$vLc!qV2%RV|+hoeKJc# zx1LHU^`aWz`qM}3DXRPzQ;a-Lj5r$fK7yH~1hi0NKc; z69fC%-QG_s(#!ZE(WvQCvY)w&CsNn_rBFxIm|}2+iOH&96l(J936^0zoNi}6Y`PSV z8%Q^5itzo{gYTN-GiPjcsdXh1nQjBlEbi|e8#bF`cxdA^(8yO)WgQ+2B<;#tSTXSi zdaj-@pBFGdsPB8fgFKd3l_(zMY<)nMy>#7p`hZ(J3OO1HwHzq0l}by;JNN^Cu%;_Pau z!RGoo2jGzV9%kDJiSiEw5TTFQp1MurADllHdcPER~#3)(y z*~=LExk(ntFIX#D2s(xvfgXOI-*SVCxl7op&5Ag#YeG5y_6@CM?OXDUaKbaE$jhBj zSYQUmS`sjKk@UU_Gk{QR5FT$O37^hK-b*5VEh&GY1AQCj#;J{N^mhES#PGP<3;&}+ z33E4`AVJ&qVL%p94X|nq`qUtbp|qlc@L-br^sqV;j{V1pCaW3}u}7vd281K&+42EutvmqNIQq!bxBAqKT@VoGJbM?PcfZ zu?u*@7vW{)*PDS6UTw$sxV`Esw?B|KDP9ikY2V~4udiwmN%VO_yZip;tM}{iQ=PHb zLy92d=&JsE)9b3f?J+sCs|v?JI;h@eCaxk3b$(R%!sz*mqI~8MuB)W5-DFpE;>$^H zW^~=J)2MaT6D!V(X({VN&pLE}BKG^&{d3jlv+u`%n6Ha;gv#>#jIM@9tH@q6FaB_V z!&Qdt$IRd5I|A!M-s+`=tdF58PQ+*IAbg-F)~^}&T&Bumb$N+9z)Mc6czp2;D47n6 z{eL>ZpJkihP80|1L#x5FVg|U3b(fDVEoAKtb+B$|vJYorC@;u|OnQ$lx{=l|yj>uZ zq5=_z>*<0b+m1Q+-1ymYIHKSzRoeSo>2>>fCjd&c9(f&z;K$kTlACnoB`qr(zm)f4iO-(d+u=r9S2>b)+M5X9+i;K8}e63 zeA$Jr{c!lnWPPR@Q7Hd5SpePE-zQ_-HiVqN$>#zh&X0QGI<+%kKp;lCeS>6w7EwGG zjeLVx%3JZ(j=q)HH{O_ck=&eDsN;(dI&KqnRD&2SPqkz-=A+lYy3PGmjPmBt7|Q)M zZ7-tNC?9e(!n6_7&o={=usbC(W;1Hho}-NY_Uq61s_2sRTRGe{2h%c;zP?Xl5$m^^ zmyU~A))F?8D9EN^+7#2ua{0D=;75$24zV-V^GwhO*o?rB_%sJ@6v8wM_)MzK;`cw z+B=jn2!@6y1pxmQ|91Y-(Go1H;Nz-ObiMkvJcSOvR+NlA zomg?MCaHECGcP73lAX*94|&25)s{O3w%9V8KQe4#@eY~oyO=MV;aDiSV>&I7nTA&E zCQ(gu$fUKf4CbYMl5TmJxt{0>=W=vL&98Do-oGYl6jb`~_ce9cKXSh}J>g&!f!~-t zc|<#ejdhJ*gfhIn<*nOIf5G&}mBy3+g-#wkdmbF6jfW5!A$w^6HThW#Vg57Yuim0h z)b!v4zx7EtIUx(22QaU{3Iy>-UKEfzXrNsvFWL3bUgYmcoz!A~`HGWwX8$W{KbXTI zZ|m;l&`CuaoA$v-KwiIqysB+Wdn{S1eF?~FSnmT(0UCO9F<;C)Wb>qS3dvG5uq+tpu3LmXO#ch060B%#FPpZ9AtyzGF%y81p= z7Q&Tm23NaJsRodCQJ+v^k-x{CfZM{~EX5e)qUsjQorUx^ZGeWK{0qD3g9z^FT(vq` z$R|g;F`=VxfHOgoc9)Y0dxG-K31)Ak#7c#ky7u8IWc<$)=;zHCUyrZ^{g5Or-E>1| zW*bBfH}Oqcx~s?Q-%UVjTu27Vidf_=%zIy-a5Z;i(%AC+l7*EEU5F5Gs7jVbQo6bH z4Y)5a6s~Wo!KpXb>k6-<2j62a@#kq4??_u+?t0Z)CnVR+O?AQDDYC92d+qIykNS)$ zEj|+W29$3j<+_X81Q6vAp2&847P(aV~(z-4TVj+SW0T zQoLg;u+iU@$anL2`fti_H97pKVOVdeYyv-!-((c@9K8-?hXPO6TJyN}*p=#$4E-EE zUf*`I(urXBPN^5mt&W#2~F0_Ou zbi1!N;aeVfE8ehQ_HnjWcOyTY=NnBh^Lbz_W<8k#g#R1l;jsO@9Qu@4NMZJzc%uc% zXR!(828BQ8flbT6_65y-ugF+(WT7bzQc0bm$Sf`=T#U$!gkLZ)3wDEvwj~Y_pFq;p zvVsN8U{o5~$DenF?vKdOsQWipxZHX#(C_ik!gJo0@EfR|tI<%~(_O28RqdqWmA>Z$}1-8x&BSr=8^`vDcPuCDd z#_j2I-zSpqF*Lu4Rp>;sfhg4&%uKioju!4@dd7G}fg`N-ZhfN8?BsT@$1V7)8aeRV zxVUyyv+`e>IsdC#zQ2)YKpn^?`3orByU{No%<@q*;@+(|)6bRmP99Bnf`M^4TQLzE zvR&IEk7JR=4)GsiTx+=aN?&1S;8p310bKqo`4tpb3r%1AMwD-J$a5o94V)7(tcLP&;am*r=WLHdrLe!_?BT@r!zG6TOX&R791L%0U#u zB))xTl*L=?CAo=%ch#3A=Ur|5=Yr@zadpixCzA5y7hX2m^bW(%3=^K>+4jYM5`7Ys z39TeT!!sr-Sx5)lb#-6Qra=R-aWy%YDJ<*k>V~IhH8_Z6_#QJNrM(%<3c2C)WOhH> zJodfdRD~SB8N!(n!|GAZw?rvzhdjd6gLL632^==Fx|`EjL~j%uV)d3){MM36DqlJV z290{ZU-QQDQHg?uPh=DX{UtXb)5SEw8_^HV`Qa)+pM>G&I=6f+H(r%Z_dGgO8#*H_ z&kR|U<9h@wtmC|6Lyhncinou*>C+JsgE^l8YfrZ|adrD&V=h%=6H8N=tqB-cnwIc) zFcMRO8D(Ucptu%``=}n1bX7Ae_AP&a`I$9-D5?Z5bA;4RUm*Gnl8WTjwM&Y8{&-?< zMpzhKqe+3&<)q4%|N24!u9c-J6k)Fsk8W(CU!EsWbG33S@1tPSwZ`|0ObYa3V~%}` zZ3W$7c|gqbf-M-Hk>b}6@*m-WOb_V!U6f5N7|$JYgzAFLL%_|9G*oF6bI>q?WSy3{ z_UC)PtQSOV6}g`$(NDCqA9X6fi7NmQL;~4`wit6NSAD6xvO+zTBDk6qujOB0Q6R8O zW0#I^h*t)M4F2=ReiJ3!=pps|3gas4VIZO|75R?0BX62^8XSbjp}%vH((|j3GV~GW zTb&wsob!0d!V8YAn<6Fz8jV2DOA$!uFQAE%CZa}K2p+-&2G|_oiA|K5Z3DiZ0`m+% z>kjl!Z=6EPmyGH%wRb(&01PAudKH-EI+FYZj=$y^+ETvzf4#i&T6ZdDGI=>{bQVIU zleQ*{W9vlm?RH~e*_#diQbflMEt!AYEWk(olr29zyl?GGyxA?zU|!h)+2Hf1iDABM z-xDFlFX>Mmlf!|3h?ie`j@K-`V|duoqrvKvqv8jCXd$VbIdUf%H=$RMGnIj;p0?t* zZ29imCo)q1LL3f&?Cvw`GwX*Q&3^!9`F*V7tswlfPJqr~wZkH@>Os}khKVrZTrZ|E zjQo4{7*J_@%k)$Sy!QJ1WWr=sog=I(Iw5CP@SVz!A^d9tg=nnX`tRRRHa*!GwzJAt zHr+ZDrq<>V`>m+YS2w<=6RBtaiOb_6IIDZ^D)(_MX{TE)LZwtdzBq|y#jW1G8|m>_ z{l(I2Mp?@rckSwCNCW^Q$O~dJ69gMeDp-!m=yPe|mSR+({5FeT)kCY7DIdB}qug4L zwfHG;a453cWd|W({1aUVhJMa9;keHucOms%!en>ISf09C&aV%XN*8TvNwOyH(%0GY zWZI*n;%!-KDk^6K6mI^+E1#at<-?5k>wHaXUWechr7}IFIL~`mu@dZx)+bfTa}NA4 zL2-0!$o~8o!3zJx8PeZ39O9gO1yGVb9BzW!tO^7NWSW@H(tfLQ@dS^fyY-?-7u=_| z#6*5rg}g@z9Es^#EZ3l4-(>5LllZ@7iZert{@lSi9n7|`?cSs(sq^RxKb&r*2kU}XAuhsl3Jf`4;D{DVENr7y7atB5E7z=n>Y`}+!rp+bgHkjbf0O$ zK6Q4a66HH@lE&Y13fhWx2VWjCmHOZGwTwGNXpcf?VD4pKCTKu(*&A%$au0hK6B4Ia z^>WoT7?BzMPRH~*hIL84@y@;9d{o@uw9&x3X?ERT+h3RoFAmqoqHC&rpnD>rGTo&iX%TkmT(j!6Fm&|m%-L8l43rn)sb zit+E=eZjgCG%UvIWlT7PK}WfNIBtw-f>c5^ES4tJy+Lq3o$BOppKbKcY|Rw&Repaf zQTt4m?HENMC>#+#g$EzmH8d zH8kMH#fS?uUa2GT#W(}3G;MYBe>^Dqm#qohWKrGI!w0>Yr{BqSQ;YPTyKV_3sdWN< zJjH9eq*iLSVg98(!k^TwJ)X|b7kvU`foO;T+O`UR>!caXhU=_{+ z6|56BFK$>oy7LI;`2E~P`4X|WNkj)&?2p4w=6Nw>w0~f819>*_&`vC$m=CVlvl;nv zGT)n=zGk1>(Z`#RV_Zh#)K(SDT}hBCL^3~ivQw?ZZq5_!6#VMC&yl`($zI;Q<)aAj z``zl1(Kx1SycM8BBsygg>%-ezU!~d(JuH6f%c(PxW{@Amqaca zZB_Y|EPOd|zMGy4FWPzsy?zHc>NSaVCu+hsE+UCXjk*R}>_l%g zXT~?SIv%o_WDN%omPgJRjh6;o1P;5B#tj()F~ z-g_z!fx7P*f93&WtE}iP)5+Ul%KazVQ^!e_zFIOIK#wRORyN_g`gLY}U8KdCB2}^6 zeZR2sUe-%Un05_kLaOTmgV&-!zYQPhINKg?e`1_B`E438+HLXF{zTJhr$-s}IzQhl zQ7D$1&6diVG`P`!q6C&u|8EFizDtU1;p~f7>xQ^;isl;{X}%6!gN1oQ5i)HQurOfS zdyU+YCgMbWGmm&~dz6k$ilhbg^P@)j-7D>cPK21|2fX>9-UF3z4HN?VS?opy z{YiOF1jz}5Ab(v)b;m)FCT|;5AVbj3m3gT7J0X-NJu|>h`{DljbRSp#i+reqzYTu% zT{skrPkGeI6D-g%LX)iXIKP9@Z4c<2+6UWc8LQu^dc_BT24QD!hgyPgB~HvJw&28+ z0xzn2`K+!Dn5Z79@OMSR<)N$Yl>0GEP;giOVZXYHqlGPU={Y`#c{n9q$l%8oD30*t z(d21af6I~|W}!XN+XSWHj%cT?n;8WDS@z(tY%}x&Ln>@seVZssH)ohNyM9|3o|EQz zhE0mZEoH8{iuN?^T<$`>Bj-{ywGk?Z6`qnwetr&J&npe*59`$J(N_BFo~}-8ZxU9U z-0D?v{T{eWY%`oRRC)nLED}xM!S#a>bT3YKwm+h%;qkD}$`TD%GmMqi}sN zPH}4$sF#qO4q3rKoryR(-x4mnNTuL!4cEvN%>R z;9DC_obCflYM^hqT+d`e7E_T;@j#dbRd~GyPr5{M;HfNUL}<$dGPaXVw71dg@YM2S z!0dPg=l0E-LEV-Vvj}9 z$7Sj#cS70@4A;eS`S*j{tx=&{MRmcoU8T4 zzf`R1@k&NzowdKafd(;k?P)^4-|e0zbfGFVoYRGWU;7|!HYZ&R87bM5ueWKtr)Ep< z5wKG1v;Z2s{G2|?!R}by3`M;b)@6hZDhbJ)NUsaY;zA1ULE#@^U2>Vq7eQD)q0h>f zfzCCm(mh*+wsf>yn+|8Pi!H50^cMS&dnp+9$gCh(j7&eI8O00-BD!TmL0sv+U(R}` z?@&YE=M7ADVQ=iPNx9gdKlf7%y)U>;eBp3)r`=B8 zR&Mt@#X3_EfCK_m=*4^PyS1cCjtVm7tXRurmW^AEKmo-cFTDsdza7?gWXga3h5c1< zkPk^w^P@3o3t5g&hmOf8w-=W1r|f|r1$=^fJvit(EWgvnnyg{}?3lF5A+hVw8W&Ax zcSjhu-N=>D%OtqHwa+}cJzuFkW)(Dv(W$B;5<;ejlL-^#Q^N+XJ(cH2LZZQ_JlbID zg}$oh5fW>5a_)u()OoV-YQrQ#GQ>n|!h=d{jUSB@v_RMIHGUn*;O4*{_g`*~kBXZjKq5_K=gl2tC#K6djoGncaOnpZ5_ zkN}Bh+$FF*1=fz*t&6C8=!*vB!dB|DzD12A|mP33R!g3XA zZm{`cNUtg1&sNgs>#=g?q2$3#SpQVDf8>v6n&Z~eqhb2nmj|ucwxUITJa@I|iH8ye zR$nqbO@k4QB)}m)AxgbM_gtlXHrvrp+ZMR(FEb7R?|^t6F>8PNVx(`e)mU2Dbni4H zHVnA^wV6Uy9IPIE{X~1vlU`=kdq+Ciak%6J7@`8Gdku12G?U_XCLI!Ws* za55j7L-Sjv_=;dK@twp!pWXxt~N+nfVB&K_Or-6 zp0JAL*ys`^aga<-DH{n~W?>0V>;VxKvk>aJ6q1c}%VgHv6n|4MFJgG^SZhEK`p6}T z#x%1{u(}u#M7qnAEuNV^^}B#N(lNer zPCWAkX^~F~WWPVaK|3a(8n$l8qXX(v2k2O8)x=7%aZ^$;d>kL3RSXvgn)C$D8ptUkIHWwm!Tv2^;26Y^o- z-__q^U1a;;cKh69ODnlG~!Y%C5Pp}*Gt8rz113ckYT{`kO z%M2|K*tWx~QL3SiBn?ri{Lnz2*Rn6#VV@gdu64*s4Rqg^av$20ua&np#Hwt50peB`*(eiibSsij}xzp(%%uaLIKimNCR=7 zcLkN+p0E3*M+q;7_%ttAR(47qEP8mr@^GBe`mo(C~ zqN2xer&qWiZIAO1a*ws-wV?)J2Nd(r(lJd{WrZt3&Uvc!!Ijz-x8GY?=Z8>18VdU5 zlgKDM0|aCu9TY@C8VnpA1R5F|#3oWs6y$$2^#8`PqAG%Pl5%1U!t%0$!t!eLO3H#P z=7u>#qZKPB3okio2{{&mXjXOqbxJhSBH}(!20SyNEGQ!y7C1Cg+8|I4A>zY8ijx#b z*=cEn%ydsIMiwS!riSI(^h>10U#dgn2+ND>#^W~q6QjQ;2PvkHF084Hi9inQp`9R& zDa?#d$j!)bA8_vchu1?iz@%BE9}FzpgSm2~;83Hal#*EBQxMPv4FQ8n^c6%6!+_=P zMDLJf6^OLugW?}dzM|Gl0Mi={PwAsK#u%GbFoT%V#U+3QxCi}%S|7~Fj8;IRaI z`F6rt>7Ca)&p4kLJ!mrfjIIE~z>aNeiBnO~&$ZM~(^AsO1Fhb~!7 zEUI8HmM+>pJT=A@LoYFErrI-!uZcj8uXi{N(KR;PV_J@gX}DMI`-K8CpXf@rl^$rU zA6{Bh^a|+l`&JEOSPJ=^p8b!oLf7QypoURHl~R z(7gZXzmHd}T3^-Bhk~Wu9YrS*L$2AO0dyX_HA}mt4q56;N%6oJNzGd z>w5j?llk>$Y3PrbM7`hjU}nUFOoLO3%S&Q2HkPofxu<2I2(lKX8JA1`y=sSb>9pzkn6Y{{*Z59n=2r&5-`5nT>&~i7mtbv+?i$tFe)t4ZVf4iMzAC zvFZPdC;9(}=l>Go|3u$=`~P)8fByf5u>WsL?l#uPxPJ0mQV%~;Ux>i@oL^L}FafRN zvIGkG2lxtdA(f~?@_1fJf7Y$~ba-Ga-)}g&taw_DcuJcWdGJw@Z)c}xZ*y?QzI|@I z%%$4%LAUfSGqkM287b|l@oww3wexUqSA7Y)eNDptwo}RlgJeg1wMe3ec%>d6QX5bp zHn0$z_K&Tul)+hz0TPYTk9M@@;XT>2GMah=w{|u!H1rr|`N0a~5GF-}GlW-l`-IMs z^lxBVdl|F0!Vy*~Ihg4x9K$s0aZVKd?hNYunB4C( z#=r!t#Es+*?}`sFqMwr@O!5i!Va{I@$d6*=J`T?3zeC4U8!H~WM*4U2jUsrLcD$#8DWx3u>SJBFOrveZ{0#-CPMt{Fbds*180>jguY0< zT<(<={wbe~Kwd?qM2LQtzA7MyJK8=c;i+);lz!@k172?p^pbNYO5srZg5qc@Pz1Zo z#E85*-zU`<{R%<}H{w~D3F$IrV-sB$G?<}^uLnL6crN&pj8cZ~1B#Rt33%$#&)4*o zmDT|lso)Sn*(&1&m5()~#;MV#hPyrCz4aVnUT1yeNhj1lsVDqEzg5`=C!D+99LOG? z-u+m+_02FAUluE-8kNjCAImJaIJ4xcZcq=!wB#^@vNS-vRNMq5-1g)0sMp|$YYNCg zA0~iAe2=S)x$rJhK=-+VO2b8n)G=X5*ZBoxihzI0`;U^smka}S68V~8eq*;qAw&6S zWH)g(H|Q8-NXM6rs+PcxSrDN1nJ0OxiFz5{?kIwMJ#g;Q!|wt3F{6FDCN1`$&AZu~ z{tMO2;@d|s;?U$+zVA*J?$2zg3c=AAhR7lCNc(#HCq)eGcZGEs-aU#E?3`r#5w$D% zVI7VBEZmIBU%~n2&d=p)@3x3~BXCoZ(TiU=%3>ss8wpm>hsVK>L!#nJ_~4nv9mN(Q z6a6&5^$e67HTLJh>F1{O$Ja^t@#w66?V1QZC!qTDeUnh{t7BA9;fn=@WMoXYn0DGD zy;z*eV0chpj_Gwy>=c`{dKr=Df+HZ_?wP9vnH~(au`E^3R90$1#{*Xy^WINVN>3Q@ zDyNJ1MXQDYW)T3yR{{NRqYSLk2I{WqPg-EogOA zspdoh4hG!)7N4Eys=)Bz{%3rnX4GPY2c2UT6}*R+j@`mKa}O(+(d@EX{&wOwcZfyE ztN=vugc)KZPf4gcO6Ddt>Ta?9o^cdv`SBs;kV0*^hERtl$mpO0@H>8G;6(kMMdTfH z>f4Y&>?XmfkQru8%rIfP87ek>Ph{lIJ7Iq8n&K3|GAgT--$*b2Ku`yz~%sjm^JwpjVl?pLoN&B-)#D3)|L6_NFG1RG0)jX?XQuu#;;m?#y(#r&c+un}tlSzo6YDjR$IPY(moCZfF zbB#D&U$|Uch98k$qMRtLd4Zbsahd!krs)BdrgbnTsjGLlxA(nwcxExvHqd2(xF1M- z8W~+1M<**Y%d3@@P6n~o>zj9t&tQ^YKEFK_h0%G8?Lg#`5^5MEKT_|6y@ouGIy%{0 zNbkZ#MQu^u(enate!g>l~==R5;rEm$xF0(Rnbh+}w+g&Io zV9NvsM!lHo5Y|nqcBkk-L5p48SyDq1j%@>H+--qyR?)>gg3tAOdT%aI8~5jr=eIXh znr+HTp+|WsB??xVF2Zd4(akLp&9A*|9!n1xAciqG0%g1+(}>x@j0{evw-25kLua=; z*=K7^&r!DFSz0V_i*s+SzHL93=)2UUW*PANF5{80Wwq-LPVQJSQ*#W-4QJU_x4iWa zgWrVKf{!{xR28oE4W)98lySIqwyK7?D}9@t@9@&qxEM{_z_USIZ~M-?72D`q6Z3dN z^*i&3IZBC-6zIh-%?-W5ek#!)2_#Z}Z^A84kol3htP)h0xaR+b`_bbEW8o(Vy~)fHH* zaWPz)XXVi6TkGPL=8$5winw+Zt1M5J_G!)-q5Xa+r$;41@VFGerZ6!I{{#_&R@pcY zpFi=1one{j5J@o^GVF;6O74!l3{n7^~(iV>m0^Pkqp5n_FL7GDpPX>7rl#g9nZB1=` zGV36__-yNidzk95i@P=!1HNDlrRWbkRazRZ;t-9Y^hIe^JwBO%GgmeR8{IWQlh>sL z1K^>(vxN)_h7o9p@#%iH6_-{GFdam|nKIXVl-{$H1V4l&*Wil>;>nWx==$R@7s|q7 znPVKew)KwGz9j=}d-XrKKIH`nZ^v;qqpqs4w=YgNxZ-;>^D6>|7EFukO>6Q*D}yKz zXNo4jvnn(0mDOk97FWpdyO)FjFBq*^9g*u+&AX#$Vw}9#!AL0v+CX^U&Cu6eIgk? z0_Wkov``H1xy-@HP@gas`3uo0L0{x5!``K_3*=$4RQzCl32poFCbg>TJ=p+yI{2aI z$f18p$iRgEm(vVJM*7xAgC9Rmi0|potgX-PC&4`Ez+2^_ISA)Tmz91PUOL0QptXSk zM1|3<@l3YVT8+k8gw5?Cm;Fv;AzFf!ILvdG!F zz`}im!bm%JNGd=>HQn7?NIOhD#JqASK;KD5b1R$&?Cl*If5}%#M9I&;a3DoXGAbkm zB!3`9@c$z&`TQUhXYxKs+xO4EV+i`+;*$5k<->c>@TXXT>9-!R|JCDv#039}UYLLD ziuik1eOISHU76*#?r4A2-PHJhjOKR?=HFsWt^R=&_TR#+%^eN@0f_!P(8<`*$=S)= z%JCmSNdF0P`!gecXYqe9;#UMmr*CKeCmO%=n(!}a7&|!FI_O#(J38u{8voM}asL|b zW@v2ZWNvHoPtads=P#A{Z-w|{v?lt7PPPv38vds-|1P}0VCMTg&77?NNpvKCN$wAj zqq()6m9d?^gQKy-KafTJ%PW}M{t5E?ZSmJ5wPK+Eb3Fb#=&yPD2j~yE{E6Q0ocU`F zu(CD%f5!aJ!2fqTe=WOT7(-hl<3HaBzw0Q$Uo!FENLTAWCmeo9|FyRM3vFd(Z1_v( z{xsF!mHn?d`v=^?-OlOHlKdU|A9wyA+WHG>hEb9zo%uK{z=dOp35e- z|BNL1TQ2_#X=tr)_fM4nUP}MM+dBPOO21F}@2Q))+nE{L=>I0B-){i2za9Ob@xQ+R ziSNG)?C({@+{Ve+;oZ*s4;%A49RF{}@CV#R|DSBl-?Pt3-^SGW|CdeurE33I6ZQAX zX7BLp&ioU{#?4OO>7VrfKRldYNZbE- zD*vwt{@d^TW2pb~WPe8je&^yZuZ`c)T;E3I-C9ZO+r7K4w1!stj*gis){5B5C_ZRJ z?)nTZD0TG;8sA9$m?tIPk06h~OhY$Ejt8oD61Rz`(Psmsf6=Hre6t5LC3ksV7v;Ur z!^ut$tTa~`bYk?p<=M+}Jaru7-m`gqIjd;n>l-)u1cDwd$bTRc2Y09*1^6xHvShRg?0NL)!>ls!M?$!#kgQ z)?av}9~@alo$Znd>anv>zKXd^!n~){Zo|*t(fajDq<47I$8sR392r)DmWzv3>`Psl z%|T%fDrr#peEhifI7)_ZCV#HQw)Xs~nZ9Wp$AUj|HB<|ghIj&?Za$(AT7cg-g0T>r zb~`1VxZFF=i;P1{fR4wTZCIH?;Cc{bnIU75*{lmGN>-sPB<=s(j78$qMTb>FT?K*v7$I zGb`5eG8Rk1gqHooW<7~2v!piUxGMY=ChIkW$RkP6=zh1NfNok z9**0G*X-%csx?wCMgd8+$%Ra;R(jR6j3-LlSq{5&$<&sNNUCne#K=^hf$D~2QkQ`U-89^vs>UwS{XH_;1Tjxi7ROnoJ;Y7IE&*VAw2s+D_j=^#`$aB zrfMQeWGlrJR}Nc||AQn6a#=f{(ipm%!eLqtT`-X4Mt5Di0+mtD_23t{ZXuP5Qwfr% zyZ)M(!VS0FgGK*?qXJ9eeMIY`CNr=}MHrpAN($hEBj=E$o!Jl4!yjH~uFTCZOH1pA zJ$}xmF@q=1rd!V{4Mqtg(L6=s(6QX82=z56z5VGN*X$sTN82GXW&&y}V;nFiA~J+RvR_rUtQAdhxCmn}T7Xlr7nh)!coMsT zYRtlSt%N?-+iPORojKZB$NE-v- zGZwr?_Szmic6pZrn@!AP+l7x9Gk*@cDUaPM<~0z^3uv|K%0}?D=u!>svziw@{;^@d z35gAdpj)>=aAC^ICGIs6T!HLs)1^2JMn@YBzO$k{MbR?Wn*SVbmf4VQTk$4K{(6DF ze<|C-cZbi?m710wz$nuQ#ddoBHmJRvZ&G_2tiB9nkyl|kG#IBPMtcRji#7Bdot5@d z=KG8gE!cvbeh-cgfE(}X8|drl8|mvRx+9(Te*0L0^L6P0$@{4)OwcXK8w|9@HGsrx zIn`@UJi1*xm8gUH(JrP2JL9J;5j^`_rO5mkO+)G!0@^-{bZuyXM)$%lz@#zESmCr& zg61RQ@YP8UVEC{J_U`Rh-2HT3@=fDC9({dZEBp7V|L@l7(_dLDA!8GLXDg?F+ba?Q zeMjS8Kjrit^sSBG{RYSXGGPh}5?y>K+=_-%vkl7SPpvahV4xTLh_yrz&L8V+WD|^X zp;yoa z&=fT9&0;9HKEdF|S<2h=L31?@(JNV*YL_sY?TqJS{Y0fhAcG}}rfb+CqZCMgQpWS7 zv>|1ASf44WA3NHN1oMeXrLQMA7sep$1LFuB##7&`NwA}#k{j%$4=iZfU zvBeNWgh*F=H7@VCr%znplT*Zrw#Zsu;)v02IKYR-!D+~$u{OUCBTO7Jw+A($3l7wJtI(iy6~mLUooxm>|{ zSD^l5oSOtDH)D<^vFbQ`tzfE9JdG~uhemTS)LgkNdpK2Cb3dbw(*M2yjHST43p1QBq z#Qbcw<^4>_KpX0zwI}L|;NC#{S$Uo` zvJso_snsL9{j7+}t9ao!a0pp4N~iR!K$~^FRYD-sl~9y@x8>^dyc)v`5omE8S;du9t8!%ibEPuUNrdm4Bp}MkT42lwhW6$CC}!*8 zN}rlm<%<2SX9=4CA8>XY5=}& z^Xi0tKIkY9C*VTKGsqlssXY42ER=V;a@Dli%qQe8N<|$eERMA`Q|ie=Ry&4 zP~>$bXoEU(wt%SK(OVPZm3%g`P{^60O%H?eEY=;)2&FPK%9ywW5!HQuPeC@K<0Y+9diNc%uvF$MRW#4zO+SIGeR6XZ6Tf;9luY8z6ghmI@I zYT>qFLO->HgaUOyOv9`JNGS%1rQnOzmI?JE|KT)h3}*$&Ni#HC(*W7%jw;#v!AB?g zM#EPFeN+n*9LTIqjMoDvrGwP;rk@Od%t*muw69H=bI5tWZ-ipQ)b&yL6d8akI4QN` zEoo!{IqcAEhaz%$c{mzom#*Kqb4rOW)6<8;_h7nS66D1n0S*6`^`5fP7 z07@Z}6xi8qV`6nr!!*EBA@iVN1H*HZ9CC1n5Z1CP`a6bmMDWagN-%)q8IjKHo|$&~ zoQ&D>z6M99TN3M)C?xqJJh*KWmG`x9oK#I70L)T5a3)?M|FtI0TCLf8$l$mUpCbL=xUe6K3njBZVp;s)Ox}^h< z5a(u6s%=^vRfEndoY`X(ew7k{r3MC0LH@m_9}ljA8A%g1LfEl^d<*=7V|jj~HZmW_ zAGEkWkCK%Q0DA?vaV%-_(ic(vxol%i*_dQcJ5q~gYktqRiiW{d)-;&eC6z`A`_|zL zS$RsKoaDG`c8|Y0aZbCM$08yU+P-WErLZa@2-Ojb;66Df(P&&}(MkM%eqK?T3dceD zNt#@sYM1bRq#*KKpzJ+pxQK+plsQ17_^X`o=gDLVg5of*0WIvbvb1pw3WG?T-f$q; zPj)5kVfbae^f#GpAH zU?O~4F}Cs0_$Rgbb(t(ShOk2lqLwx7(|5k-7X;Cbq6OQ*K zdBiX5hLS~D{nK@%ispG=P(;a#ltfvWfFHUFB@RtZGAecLohEUE^b&HvpM-hYLgnjn zB8Ty>NkyVHvwak%y_}vA2k?llAWE2IQCk2SCvC5U$mE~5W zPw?Bx9n+e`Oi_K6`j5;mGs}T8rX3N#7oF{6eO@flEpU<0BTw#CF_(I5^Ik1QMe8ql znsW-rt8N3=;*1!BT1yGU`8@D4(X&6->MaVu2EUBW+nAI^9;-77X1($G&+m*9^YUnL zZKn1?KJzNU`+>be4<*QAZ!kS%Gs0Wmv%sqR;yeUCP&zz=Fu0a?|bNg9Q@0N^z`Vd>;`9SYIO}dzRCXU;;-L>*uu2o{Vv&Xk+5gB1CjZ z={+^}&zyeHy8GR|)#ET@I>XCT<1q=d$+!Bm-ptqt#$D%#ua-VDS-65af#x`4!XF?b z`9HZPq(q^-5!-fP_K)+T!7hZc*LNA&PWnMtp=OiT0;_IZHJ~MLfO+}7Wj5PkyKKT4 zJlVmX3bWyL(&BX9xcQ^VZUMMr(ii5J{gdseNE@b|6>gbn4Lu`xM(p|Mf9pKMHj1b2CNqLlu8Ldehohf0xv)D;xx{m_J+v0C7%(}x8Ee#fD*F=;EDh%?dGy7 zqDBIXN2l?O@$SVyg#zz#dwfJIF?6sW5BQIXE`?6B)vi6s^Cj z4Q_lPTzzc&{%q=0s{)A4+Z1l;EL-%H z^T>Un=`pT$P?{SBZtzjpy^}bj{Y1`eBS2!zhCC_@uQX>;Pqi9@t{wIE7^5i| z%#ZvtWv^i{M2;59rV+zOXdw(110or8VKbzJN?{>8KX$leJMYGnNLmJ1)$o#eio(4} ztx>Po-m7snLNu$?1@v>Buq%cgw5rcPrre4QA&2f8^Opt^s^>jKlwyV`h(Cdhrq?{o z^gM2C&k;Jr(rQk`7$2G5>AM3Xn+vny&+3#dgH{xU@MR8D`ZMd&zHjhNLc*N>$^Mez z9*)~Z7m}2vH7tHXXhKXNAx|=hfVh)FNoki`+$|*^q)rq}$p9X~L5J$-cqR@xREjK* zLRr)exi_j_MI$yvk2wyytP%sZ8btNN z3JtGa5Yv?bZIOK>+x_8fY|FhF7$a{l_o$QD$*tU=QHH5=J_hc&GZjFc7?cJkPZVQS z(XE_h-uoV*4L^u8gW=A(Qk&KhNj>}C3ZGwnUbo(Ed_Ny=3^d1fJwCahSfp1B!-vJk z!4_J7ymqH$zG~){0BHvS0&Q50H3t-Xd@(o=vV#RD6aClR**Cksm%j%epzk5d-_QL& zQk}o%{>Kt0zln*tjj@u0zKx@at%LQyxKN-0>7_K&_%@o^=n6<6gd`z^4D=o_0>lPY z1`7L88+`^51FBZi7XuK+4tE$ zVik{W$`~~oa#MoEHQa**#1s7e=)U@pBapBtf51$yA#j)&brta>69!8W4o_y=#ZJT% z!+5==<;$v_wzs2ZgEcxJM0*$jGT>ML#d)MWeXcI(2eV@v0<-X~tt}jzmAU!il18(Q zBX zFJ7-!_=1{LO*<4$sV;gTgL4o8RjuOM*MzK^!zR}R{Il)??%KrmG+H}__yj{xdn~duw-`(f0@gpY}tCy!j*LJxTc{N;&iR5SDxu)8tWZktlq6Wa3 z7q6?z{{DVc8G~v=)9Ro*f&ly+?p zFDnz@U$x8kq^}+gOYd~bNdOLqBThSoBuk!p`gz2ZWY&0SU!>?8H{6uQN8$R3zN4Fs z6Rx6B{YKuU3zbkm?JDAJk^wyA597_#9|ZBR5%f$Ln@IKgpgY>vs`OHow!@2{&8X(3 zk;J7t#y*c!ap);p+(`2IxBLv?4m)kd8^&)^0B@W0w(ALv5+X&PUr0Ti9|dj>IR?(q=*hv?J1D_A_t!fUfD(aDeAX2Y=3rm$KW zI9U)9j!~J(HCnUTojqrm4`zaTW5y=Ibe{-^SI>H?tHG7URAv^EJu!Lw(SJC(~m^n0|sS<#X#qXeMs?M|E^1uaZ=}DzMf73sHs3VWokMdAE)! zI)+n3c8YtAt$>%4iC`PJV0Q|B1BSNaA|I^tshjD;A`IN?DMH%EhET_eAz^rQ+dO2S zrhwH=MAfGQZ-eseQ&GZM`xBie_-S2vv&*UG{S}|4h=}IKhGe|+DM9AVqN4rK?A5Wl zkVbY%{LM|o;CnP)ZvMO$p2CbmO;8%?HVsEE0GnEF`WVlEaNXE?hF?jK7q~=g*5-{q1}x(adL)6>Qht#FZr!**;Z%Ha8I> zw4DSWsW)M`_o}gnWp$C#xeRJ_nZrzC<~Pwb7bss0(sgS?Rro^fLo=7B@pX^#P9V6PlAnBzisOSQaKBC4KQ4h`0PyJ z`K8~EJ1GXtPIpWfOz$n53~>o6jpcOwff&g&<62wI$^_-~It61L>sBt+KB`YDuFG#B zB_D(29w*X1iA>=f^fX0$@4vSACZNKApG<}aC*_qUBkec^kYN|I!JQa|810&4pHiO) zqyQE5yb*|yQD6>nFek>W4P#Zrlg&}}~p~^$o9lBsIF5#Zwn(1ztoe6m+ z=l#S!;f}sdA8(zVXoWlZ8GXxBOB{XcQ~TZtt~M{)g$z|8InVpUi4AA*k~(=D+|FD! z-p#S{Sc*sQOpPp0j3ZHxBd8HUMXuD>y6l!>L{R@daS(0USVR~T-6xQoUARp;XlLX% z>gOvi{?)$i!vON4_^|4@Wt2jg^9<-L$@Xj5{hK95^H8{o$WEw^m5C@s2c zcFY!%EE^pJSvs^0GPJ96WInCu+RuL3fb&Q{wa@}c6XyUl-pDl3rDBZWOnBuXy=e;! zXO>9!01#?)m9Gsh#1;abo;Ciic;{TtsWP1j^SiK2)el{fmL2qYly>k;#XycJ45(^d z<^(4o`P#)Ng;w|CJkN%l&xW+mxhOvJAAKA6tI5!(Vkz~f^5UB%)NYDFv>==DNR!KY zdQ1}Ra}$^>#kSjdOjND!Evr_!$O^)VmB@+^D-dol?wt8z7wc(zr( zKU3hTc7gHjS0)@ma8MN!3>=0s50CAURo%xN3rNI@Bo=BBRPGudN#M&!?ZD5SF zVMI_?`%$H^!xiH``omgOB5(-xXKmBYLg;o$h$GdH{IDy>?LQQ@G{Y{^NqI5?t-Usx z&Y_^k9{8;ow|G8uUX@w0;MqK1;Rtkie-}Jacg-SPyUtkXQqUiCos=_yyI0*#F^88>{oD_LhyA+_(?D=NVo|IuY;HKJorhP z2FPWR7=vDpWe~i)7z1z~(U>V{v!7zJQ0UqSsn@kB{9~bw*Y@Te1ZRc}y6W_r+e7=* z1Y004&@O>~u3OhG)64rmgKU&_RHG4Bbpccl#lhACqp}?S6(s>@ZH3+oNspJ%=DI$j zi^<$2bZsfOI|=5xw}q|G3X93Ml26s|e-D}K;>kQ!r#@a%nd`P@zDoaW(K@Bb74MKA z{OsE-+JC~CPPCm4N0?9>tH>$041zq!hi7o+@*~g<+)Yy;zW+;XPp?_kmS8BG{|wS* zxqf|QPe|jrXzm%2ix2$8{Zl^~FJIad;iGTh{f*&v!W@o$N2+YR{YEWdn-cUB-H3?v z&fXr}%w?^G>%P=g4EP5C@Z|1nb^h_egCDY#KETY!jfM2ZH(6=-7$Je%u&x`Pak$NK#Q6Bws2TBov~ zUrjUUUpK#c`GGa?WmB$}z^gaU5L&*jIk%?~DZU6Zf`UV69R+UC_jy@IyG}GaOH`A< zQe{Y<1L@R@K&F43WsqbCk)hpTR3yUk>#=)fR2U|fx`d3l3=9bmOg0IJfr7$UhUBF| zS4SGM8t8{Ae}Q^*HO@kHDq@aVAESU;JBhW}lJp3t!UZMG&}Nk2*fo{tGw}Lue{WJ9 z*JEVI1d8G4M*}~9=~wLft*F#y-#_`EcX8?0t`mV?!^DK>`4k23O*6Z+roxXhx#dA@l!jsm_?Hebpfye=1usHAtd|~Q;9W9Npu~HeTG-| zG%GUr=+lmf$xnPakL-=d!yLf0(Sft_sL$vC2BGSpyvIx*CuN_WLyH>~~`t6_p{a`kLgC#AR`pjJoi z9Hw#^&YDJ2|4G2Az7|^F(VfIc5XwggGMbWYKz8#-cv%p;P_%-6ToNT7I#X48VJJ5o zc)#jq<8ATuXUo0qkJP{n$;sRK_bJgB>8Qr7dXTId6Xep^j_mktbhieX-f&;M76-gI zWgeX}p3gzzi;ChRzoqV{@LgikaA5AdS^^F9n3K5jU;06ktmToCZB1=)@{}un8G#^T z9T6kGN3dGlsx%Eo%gAxTiIB8;${ft{`LILJ#uU}f4kVx573f1VQE^wPd#2yE*ww9j zG((xq7r#@5e9YnnLcY}unGHO6FEIJNsbzpR`S_B=wDFo+*5QlfSap1jlqZ@5)xw$d zZL?9^f=`x76h{e{XBaUYamILB=GUuBw~jip9a@CvrNGG|6@x{sLF(l~D(I8rG7=h^4WsJo9@Z}<1fmfG%kutwJ(2logEAH}& zLyt~%nl9jYG1G)O3gO4Y$Gq4r!SWE0(M8VY(0b;UeKRZ{$lNkZ+M}>X5?^N(s#r1) zX5aa|Qm&Ui%`YptxACSOL8p6ley0AIVzAB8K=o<&wtCN8WPeM^A-I}W4$?s8t9c+J zog77J2Ot)8F*LWVmzpYxO((T#9UP{5WmKtph_re5R$gN}G~kwS)5ZZ>OSi|ZC!}N8qu~h3^FCC8#Ma3`@_k`WeQ|HnpgC`)pfzWa+XN=U6?&}zhWw!8$$+=^A2iAOeK_+vudX6x>yt;ks zlaEHq8SN^!UsaSbXSVeIZA3Zkqc zwurHD`wO5IA|A;zgzSXCR>;Ki0@(0g*y3zO^lu4iEeQl?CgQ8&(yQXJt~DfQ`GB*0 zqOqW%ecwD2aV%XWW*t~8_0t32#NHJt!yYK{_fJKBRXY>4JM}r-r%ZT8l(cHye%- ztKV>5{4iLoyV7c)tRa z>Qs=8`FR6HEgWOY-ZOUnRTb7k6}$0X>`?f4Y5v<bNMdh35p}lQRW=$$KXtPd1%hXmO ztmWqEtJKySQ>@l&zrMe}_JH$&s~~=?(3klka_rNA!e~XTgHKfA6?T5c8sYIPBE_C8 zM6+*B<^4C}9ji$w>q!dJ1R0KxnGU;$iB~;F?Ls50YI%(Fk5r6mk{XH~xV&iwB!aPX z^yGbZ@;MuYJ;CD6!NS-uFKUO6LFNe6kZb*~c^V>l`Ivp2#z3#w?Xdkpzin%sM-(<<0@E~>0?7)hv+@CwX9u+Y0ot1tIY@=; z0I!vy=wcC=7=5hpdD>u@bSOnsF%pz{2tqDQUSdWhb{3Ox(K>PBb5*DfJ=#&MwzR4w z%g=@#C2^Jo&k$x|!9~sB+8;3HwwRNvjQK4+xksdaDp2Zll+`ABf!zBT3Ch*%_cGqg!6so*nKxF2A4bj8j;RUSvVPC~fu(9W`9(2v(D8US?nR9G zWb^^Mn^b~}RNQWdr|b~SCdrB9H81n+H^Q+BIPMtYSB~TIOQvmj@5sRpgPumYbBa>t z;scf&-4n(iVVkl#V>PZGv^~3%VJF%Oj(nCXWP_NQudy1d3It zyatPLo%S93A==#BymLj~+D>u0RvXlfd=uvmkGYkz7uRY9FP?9vj&i>SeY$llDwnL~ zm~|`Pkzd8FI>#F9>l_Df4n{MAqDw#y_al@s|C;SM+s-pJ&70=H8u3Bq;oamSv=aEh zO}b!xHSAoVmGnt?Qkh!11sZy72Lz_e5Ah#8>7kTLitK>CwmWEr`IZ=eXq<#eAjcbVfti|5<1hB>+g z>&y2Akua)F%FkYu1^bn&!)kD1KMZ3V`4%H+4hfZcAAEjJxyP9qHLeqj-c zh;kMcG?^&>gua+=DRWi*Qzfr|-yqLm?#oHxkSS)Qhw3t#c_NmzJ?rS~kxY$RjV4XV zW(Yb}l=RR|2F=;dO)~Wp>R2f!3Pt_gvP9KN%OQ${B9E(%Af;x!Z^rve<=v=ih|1%A zH3}5{t>P@y4ldu2>706?6@(Wv9aB$vQ$}tE%9rhqbaI&S4-=cOhdyB$foq~{5s^DX zWm?o89hC!-ep*p|&Q-iP_Ndzp1s6)=DiFI$;^C_!47Ms>QgLz*8OTh}&Nnq_$ATA&VAnFF6867{<-+Q?P6nfs!nsVMCpzWrWH?~8m*tx|S64;kyBDRNMVw8qv zyfODcNOT4!-XnZ&Z5*Xe%CRWvBPu>hF;Jy*2`=HFBOZMh|08L;OQL#J@>NOPhff^u znAG<>32!k8na6-G`G9ERwh`TfBxB=hn_TbjZEuWCfa5TK#El5b zcM?NNzQ*n^yWF!Wv^Z=$WDV|;j|}thDT;jiI{Owz`WyuNOyj{w_FX%fJGC7P50yK$ z3kVOHTRm5p6W~$JpZ&a*O9q^Ren@85rYGFp79d{A5yaGKVwZK&_RG$&(#AnRzgMts z{$mB}`?k{mxqt4z*98BEoe{CJ)pz>;%*-Ek_dLlhR;vV`lVHb7Y2-Q=Z6w0QY3gPG zQ7RM$B@h~>TAc!OkYNc{!`0 zzRgruSyL-vFLCtMxvt!?vO3Ocv;8nOESlDFEiG_y>>EucBX!b|W7NFhJr*$p-LFs-B&uw2_^}rd~k2!FxJF< zGx(-5A>MK!OYZ$6iEB(!&e;GRrQ9*fi3_~zY9wpQi7>qDQlw1aK|x)i%=4O#kVLJm zPkZT0Mbme08}7{!ru6Hn+=*nJKfbQ3t6pxy?@X}gL1od9jy(vvZ)V_v%1RF~g-G1F zy$XrK@}ox`*!l>#m=JV{0Dw>#7_pS5`@3_Pi4y|DF;jht8{)(TNja^(HR|o4E1WNy zSh3u|qukIdmW6>&HY85v{Z`K`?hM9Hg)?Zy&?C(5{H-pD7Jm?EHix><^#{}Du0Zp+ zpr|Nl7*;+Ou)tB#bbZ2*XzTjKV~d51vqA#S){}FfA1xJQr{|HlHOT@e8AFl#_`%03 zRQ?`uo;NrodtExa^Jz>j|4x2C+f~>YOg^;(fhmB{1Wa%kCO8EXhJgvgz=XbgST7Xy zz#o4`*R6B!>;V+_E$HzjZCYNCY?l2#Cmn>}{{`)cE z#NGyq@Uk|iQ+h?iBKc&x?Q3*#ci1Acbm_y*1tmP9xg6M_DxKidpir3rf?)F-k z_8TvxHerZ}l%BJcC}918SE?1tUbiRFc&$(pTbi_}3I8ImY&zTPf*f0Hu`u@3ay9yi z>1nufv!c!S1(y#&)7h-20b7-U&`Lp1V*PviMi%r`UBg)~FqczT5GI=d1oSYJ5C|S5 z7g{LPFeH~faj?4|C_0+9nuC5SABBJ_bE@%_g3n~mH0tQi#;mh`nzOwVKOJkuYwf~}~e>?63`Yb^cS-?L^$%>6f-rAFU2 zu3Y$kiu)5ME=@wfGVrLAA6r}WhBu|^ODa+)D=>-Aj2r7Ra^{-}SWi#G%nW0K$TFwT zM9PVb?6L41vix8D_-@uYdCu3t9=RI;$AY!))XXga;jpWgeA)b16OTb!0zT&@5=LU}bbxF1ad-_O9Y*aCyim z6?aUQbU138QwxgO&Dn>KUz8k+9L{bZWIR21P*dhE-C1aGzi&m8N(EqxG;BpEJD^4> z{ya;ADBt4%(3O3A>}YV#uxBx=Ypd0SMmvH?6)~v`e;eXaGRCJArYNsIYn@($=%c4v z9!Wsku~o9zlO`F|UHzJ{#;?lnh7aeXc`?k#!^Ju~m;lVoI;eCpI?#sg6=0XJ;5c9Q ziNc@yd z{K}}h*FMe8;Z_n!;Z~o6QIXny8tRB57mYA6=I!K&ef?nS+#8bx4)6cr?5%<#4UlEw zfx(@@26uONcXxMp*TJ2^-QC^YVUPwIcZb2G8-VD=Yagrm%o zBk?-s54q)L`G8o`Qa-0I^ZNdXueANxX4hM~oW3frh_8+#dJxWCqEEa>gWs*rcQc%v zL1g`#dXmUGin@lV^M|@sWEJH_mf67*3VZ{F+t8+C#KA+v59f7i1q_|}X!H|N?B|(& z(nkgS!1-847=tVbMq$B03n)pfVTfphR58QZp9mH>`g34C#gx*amcGjf7smvJ@B>u_ zap^AartPQnjDzHZx>8AR2p)KmzC`O1l5Kwz8~_-wOPZwXGftZAg{JXzTBN%B)4)3! zo)YsDM&88O<8)tf;34$#O^pAeW*;PtK^l0LDG2e^3^ClCF}giM;vHBc>cEc)<81Ug z*~q7?lq)paU2xJX`08ym(n>HJYG`IH(rri0K4Wx;B+-mLcITN(QB48t;i^@>Ke*OX z&!)ql94_BKzaR?|$_#cu#pDaZGQZ;a{xgLAKMf`S7YqC+ay4r}d+Uf|eon3Jp7;2y z;7pLwPY7m|*fv1JN5j~`h9nfRO#@K_6#8t~=#LlA?K(OsX-oZ;M3E^80&yZJep95D z1UQ8&wcArXDkAJ(4P*CTWMzBZ&cqpEvQrT z)k|f)a)%GzP^V_+%TQA0p)e#2+H+Br9%H6#3DV7-&N7D^Zb4>jrouzBeJ&GyM=paF z3+0hQrZht{agHxP+!zV2BRdfW+s3W*y+q*p#$#58vmt*=1|Pkc7St4|TyL>+Wx+LR z>@}OMi!lYoLKj=i)-=?3aBz0jXP|x8X0sM2$&5?{GjO+eI&I zt)U+vpj`S6u;VPYgxTO*oT>_7l4&_-Ee_LR)Dv&YZbiCgt3E$7gV@xdO2*5xptK%+ z-JIVhz@#SVp!AisE;X=m{CR-vSe9$m-q$sX(;_a%pe{e|Ty*b6-Z%f0&&#lOj)TXOuj(G>M%fYhS~VCT*PYU>bm>EE9JO zY?%H_+ob`KaX8D9YL+|;VAKRqCdfGsvW(F&XEPdS1;Z=jN*<7ff*;7W)P?;NO%#S^ zZcU3gIJ2y3wi@j(k0-$|T}fP|HAg(BIDkQ!sKKV6q9#+e9^EED+ZvdiF)?FE-mJ5j zZAb&ekU)(!{hBkOtaIv^tX+ zeqmw16o#zTOCPJj#Ke;;ZaffJI!NQpiY`rP($G%Ck_3zwJN7tB-8TC0IZxNqKPX?9 z#Q^Fw0J|~>Lr%Dm3|w)e{W4r>E{vLECYXtKWPoiAH2EWsADt>Z#k-a~g~Tz&t~`;4 zE>+@6fKd+Bp<6D!zDO>;KR_sB)|*Hc*&eW|wN>d+wWI*@CUduN#n3%PuKp~-hyYK3%n!6fOX2uywj_ji|RpG^Oq^n$Q zgNhoIYo^VOylj@qiCY-1W1!kNQ!eDpF7d9mOo^2c5E?q{>P>md47P63%Jq#uhZNE0?*KlczIkP{3yUnr@Co{>NAHI@U)JL8 zd;`AKBS(HjyBZFpCzfbF!S1|GluZOjUJ!8PXIKG{L9Mo-84U^J4Xt3&Wqg*=X2}Q0 z)ptP+qSv5v$FL3e)mz;MkMa$_;T(Ol*v|70B(EG8g3(>ykm@5z3ex8y-!@ZJ7*=)a z`*|HNW%&u!eX_nmRv7nuN`P?>Q z5L>WD^3S68E}(Cb4z)J2S8WbuXc)KhJ}eu@@;PAXRb6)Rx7Ii#o- zl1t~cw9Abtc+T26aqtjX=~VMQAzh)hV!79SKIl$I#MD$D^CT&jsjfnI~6zgE^Qq_1z`t!_Uc0ta!+GS^Iw z#HJmvHyOds1E!`e7(#c1YSblac(1PIyzzXL9=SxmzWqIllQb&vUb2OMT=M`)ktBd)`4Q3DwpDD5!amU4*KyC%Pl49?FzSj4=0Gd?ySU&lArXQkxl#>ONYti&-Va zX@P>2j~l2*c7jBL6e9V~Fci7K zYNi7vxjHJ^sxajVE&gqmw_=2#V#N4yfEZ6efakZ;H4@d(Kp9%BL5m0K#13OqIG|pE zCxGsnL@ivGLy8AnnJ3!t8cq&rY6tEbXA*g8*XSCw29TZ zsYbB*TIra8wRA^*+<1taIj8h(s9~37OUGW>~JA zmaJmkw9&JF{TH>=bN`-OR=Yl8@}2Pbgo&+~vK zyk@f+yrlT_jjen7zB+_Y`S~I8{AgZe_ytVsprLhrdm^OPuqG53i)4P8!)mQ1L2b=g(RM_9X>gS7n(H1z$d;FQf2`Nc0aR zXH?yB^@u@VDFqtEh@pI`^6?EX#mVc^^<>lVY3K$TMycs6qM2}(!vu@(6YZp2;Rie> z+Nt9<^qOrNW-YO2>+)tTVv85V%-ZCcnWkotqc;%gE2Ji$GU+R(dm&8eEBkw}s%CEB zyj`2g>9*6S2XyHx%=Pf>!10>=s$MlSH{9%CY7?_1WwYEU8B9R8&=M|(JuSI%78W}OB~^ao{zX*)Jy%)ow(d0 z9jFB#()Aig%Nq#AlYHvNqQRjXDH{h8wr%Q`K?rYEDHE5HDwU`nGU{YGHNWhgi_&Cs zS?S!quoLF6yYyG&V`r}Jc^aRTX{;F8_}fkcRAyLQ{7G1&c;Xf)b6_fe=A-PP+Jm+| zjG4M@b*L6?bBE%Y>WG^!-dfxMn@F-pW;XVmp|<`=iw{i8;SNuxZRh)GbgoIG*o=cN zNU6`Q(w4dNkGEdhhmY^Jhv04oZuT7O4Y<)EH0TGEC=N-`+o0asF#Px!tK%ss%)Y_k z?gn!7Yn-i?+y`hk+F9-pfe5_>bO~=ieZ=`r!9LaFCfWgf`GPO;t1cTixKNLF;=psK z?#v>#wI6}ws>i|N$ARjaCl(i^yYxe*Y<|)uftOM*yfk^fWanA3{E3h8a<;{}L%uKh z%MtSZpZfnG5r<%!SK8HoE4wQH zOjNPkWDADR7l=epnq^OrwE(LsE}mDKMYqap$yd;dqZ>`3LHQwretOrr+v@9j2YG~H zHjfD(GtTj{z`y-uj+5KjsVhV=Y{>C=)_%xyc;5beo2&2logwhhR>4s@q8w_7ma>G{ z0~WJ~yb%+`QJ#QHmvV`w+lKa}7?+si{^YXPZHb8&v>(H)pK3Nd zCcnVY4waT_X`;b$1BnBF>VR6?a*m0wwFP!+?gf^*+i*I8u{Ek;oFQHV6-q`OCRBjN zIwkr!yZS4SKCd>_;&@E$hDOX>^35$8q|#y$3_@F|u_Dl)pH3NUH$BREa&k<0940u@ zv-+s01O*<%5~=}G$-bi-AV58af05a#FqXR%gv(54zwcm zX=Xz>aq76Os*~CRjXl)eAPPKQOfsI-M4i)tGgkgmX>PpyMMJaJdIwu`IyJ8D^&Qy^41#b7+BYxnYPs1i5zdHTCa?~ku8*?ln zMOfAf%%~$|#kgULMB+i4xZD!X!=wpEQesOxX=^w5L3Av{W1uRSbH0ifxT;VPGYujG zc`fJ*5l6P?#Ws(*ws^6yV8>2tV>{iGd_{@4dHJ+<<@4@JF>zHGj8FXb3iyNQbu|!$ zdeh%_Wqp^Djc`WX)fLuaqqJ*t`kO{_$eh}>>C%(3GY!r=-%w`=T4xuO9IJ$Py9B;4 zbt7hZ4$st4u7Un1btJa5)fUmuW!Vpqdutt;4+K}bp(dt#^{u?j4tcZE8n7PWzTQ)Q ziftBm(Dl9X(zaO3NrE6dCu1=8?vKvvnr<7-*);ZWM!BN~-5>b1+OrYT{xd!zD}G^W z;#Dz|Tyie1iW~z+7blJ`x%2W$wY&3(dZL8bhCKn~g?RGA-J%EUqGHWG^nPZw?@2ue zs(d6GF$A#il{O|bJzsxhB{TMiM?uo-DEzxAD8QS1)f2F~0i@b7_}>d=%3$kQOY zhWC~5XaJt+G{E`SQ)v?Y-ERU{_mFSibb`>|dv2o8XOUr5&b|qy?P90sT+;tC=z5DC z92>r0kly1ay1#(a<2JgV-KG}t6Z{{DMcRhUrT-;+@czqC>faIT|B7z=zY&W`L!_jKJ=`OKWNLcy=tPC7SQ0Igou8Ig*WpJiG)r1;=&52$1r0QTv8n-Tl9uF^goWNxFC+(~wZWivI*i%kp3=4NxYc4gB9 z-E7X3_`;dL(;N%Em@frp$eEPRkrDGkEuP!Nj}!&wMA8thva-8Pna_vxk}Y#rcLf6#3Da!HyfNS|d8k8$G1a zNS2tLlW|b*K{ydijj@gp># zb{G4jS_O)p9v<1HXqNL;V0+YH+|zAYQn((c>iYEe;TF3DBSRixgC;P4nJK6&wKH{J zZ_$u$F#zhY)~)ZQpKu>uo#*|~t2J%ZshhFO9K8ERgohD6PL>o7<6B^T3tfoT={!4b z|EcnC_Ju8d85&u>|L^Md?+Dape&(%Tu3cS z8QGcu5ZKbd#))rMhXxr30|XcvHmDefmt)EuVXKOpHKqq7sErQ|g$QcNWGyTu*Gpn8 zx$b2W*kn<_6K5F`%|h9ji!amp%x6FHvgPpSBug*Jc+K7K%NXZOxRSfRB3K@BE`1-@ zou`uZ{Z9AQzv;x1zd;$*;zutZ65H~_$_|%dAoCYYzf%mPVK8Dsb}_tN8ApZTm^l6x z%@X|+OQKX2-N-Rc)D1<&L?eT)*&F@-l(bo+y$AAUic$I=7hI>h89ed#xdB&EYSTLPyI*dm=mo9a( z=oQheo|{*_B(o+k*ESAj8^$deHIhj%=Q)crZ47PoTg0I#)37++POmE&%;eN0(~lro zR{YK`s8qA%YIX^Co{R;2&5=4%5d6GNQV`M()nZ$n){z#|8XBaSC<=&#cqzpI9z1ppH~y z0eXn^hh3KiVoz5Y5ZkFt4{PDOQ7wn~f_E|&D3B7Y(VjKIYn$+tY?JU67 zvC}!MZ;z-b8qHUE!SUfuXL&MnMqH+uu??1eGILd+)bmO22 zHzhasU_AzDRPJO$Y$+{MD|ZzY4s23@$A0Fx0YZudaUhbVLsA>0hsE22e$%}F8L1>Z zr1*M10o=P1o`wfZN9?j>fjLga9f6K@o0I%-8$pfdngmo|bj2ar9N`AjV`{1G7CqP4 zvZD{;(_w)Kn3tuV=|rI(#Hmu&znzbRUdalErLcg33hoUf~f_NkbcUvSalX z#4%em^nkoYa^Ij4NUR~dWJ`Qel(#7xz#~=39g4Rujke9P8H=(U`RV}mIClhTF&Lyq zqC#yl7a}2pLBx1264<jmt>btzv+_fNMKki6}0FQoZvbvFdcnePdmB)jogE*7S9slSWyW zb6z<$x9`w_>(dPZSgt8Ud6quJYZISakWR4y8t{I&m-E&}hHkRMUL}Uv7_RKRj0b$? zvWcbqn`*yr;rPe8%CVstZuVqjPl5ln#V(Wf@@?CjBx}f#Lj|&>g62ijyz+^`DOkk* zBkKyJIvY*0UludKT5BRuPxt1ypj3Q4zHN6ao=>_knDf6U%_6J`BHvFN$=RcN!|Qin#Fok zQ@ZB1{O(I{JAhx@?V-$cMQ#b|7a#MtcDC>-^N#XO*c0S4NpHBfNc}p+MX(Jf^^Yi5 zWa}I;)Wpn_4o1X?!pAs9ghVl}zz`h~HF!jS<+iX~YZ#5m3*?Zxk_Z*7e`h(S0WJO(gD z$`w&4Kb=~E7PJg4S%a=(nxH0-s$z!9s!mZS+D%d23Ez$?sYTYM9|5Iy|87ILS-&AI zhC_z`FM}<;spp1}OzN`C>(}C{`gVJkhn_T#`j07yo%RTi8nHr+pnD_Q)j`)mRocHR zdfO{@???tYKo}l=gM7cMt$%cv-+C~<%|d>K_96W5j^W=kY8n1x#~^NM_q7XP^N)6c z5=ybnB*QT@Q z-^X6xH_SfADzKSAXAnAKL7cu{hPp_=Ap$W+Nsan%)r`pOHQNpN^x(*VWP(5sO`dcl zV39_N$lU@#&0kNXISD9hv3_b8GqiC@C=P5+Ub~VzS7;?2AqI2IlE%{!$)hX@Eo;Sr znWbzUD%=G-?wKgLDbtO4TUsw!=aewaV+oEI{CJEx%Yk`wn~CvKTCeCC*U5(XORPM{ zMFx0t5uvWqP$t&kyGf}ydQD2*KRwWD*;G}u#}830NyVkV{zzG^Xil&Vw(li@V?ckj z2_pd-NXr}({ZkvX_-bz@w-SMF=VZ#6S%tzv7k)ofcC%qN@Sn89)eLdfudC`-ud)KwRqy_$ zMVLD%40UO|ASX}L%@%+IM#M_1L+g$loZ)~ZoSWjG(_b~03jHcWz*l!j zc3r6+Dn;iHCR&(-f}oNpOh;f-1YF8c!0Ml7_LK-6F3pK?ky^U1`N0^!4zE7R#l9;~ zJye*yj`g3mfymP;ydJZ?#2HE6+$AO>vhQb3f9h9Epf`9?yyhb&|8Dwqk~FEnntb{c zbgccI*|_vGT9M%XLo5ckzj}_(5L4_@dN?Bxr<|16L9J-}Gbpw>BU)v)wkkF|W?P4w z{1)NPgHyZXR1d|2cNhlg)*VtS2`xVWcq9iv?Hnpt9_F=ko5Ne!pc0QH{@HSKVK`-| zhK>8Xe}O3eQiLn9HTRI0XdTCGz{nRyrvUr-{x4TN{d+^S6tVhy-0NG_{^j%oa62N<2l9F?7JF76*k99#CzQb3iTl{Ri|um# z2vlsaHIzf&zMjPo>7`J&j)7+QstS@XuWouSO)-T3z0Y2R#qQFIu2cF zC6voLI<{(euk-*Rr>qS6MSoKsroot1uvPZFUi^(d{(m5w^>%K8_ZM$o`j>Tqe@C|e%$xrgvi*}cS8Ko;s4S#^$Q?M6CuTwh zBa!?ilq8UWg3g0NRu~Z;NC1P%1EGXtPBfVvl}SrCFmiVlt!zGDJ@06N)tX*q)&9CN z4-ErjYg=jC>elIFliOLn254Ce+vstpetkdOT$d3NYFGnxzTo_Pp8DkaJiSV1*Y|+# zqf-4Vjyd@<PrniWHYs~wheRkb}|4Dqd_Wl&)?T+m+*9Xqu zvMnmyuP~;d3Da}nLV_tno&aO!%!4Pn2nZ}!At{dY5_Yy82pHy#u7+I2!a`MHHoOn_ zpu&wReFQUpN5-iAR`|Qxwi@z*?ZO5nPibVOp|iZ)@i5@wpgS7$hI(%;?`2|*eTn_@ zMB%Ck@-v4<9Bvqyv_XR(rOj8yx4Mw;1Tk2o~DO!9k z6ICY}_=r@?hfJpT(PF_fySn8?k+6=&LqcwDFC83M&)aXJvdA`_eG!x3xYD9f&`OpO z16TC=C!4iDbB~t|i{vl6O_nXgR+2b>Ih#`t&i7r^g(g{8M=@FZ@Gm754eg`U zQe-dxei&$wLDbW9RRyTxK$!m2pk+o7E919R1TK0MrdgZ#MKi>bDk0Crk_7qq#CvG` zy^+>dr8Wxw;qn)0zcvfTD{JA7(4Hb*BJ|h$1>Xc?u3P1$JQ?xzom>6yIz2u#RzZyo z0zJYHDQA)A)BN-Vde z$CmL4^chw$r3F9cfB3sdekI086c6U3T)Qw}$%i|$v5csx<$9P0$v_NYVq@8OI0=Lb zV%ntyES(?1izQGt5CxDbcSQTl2${|_P1dNH9QP$LNUtF*}GmFF%1!%3Zgl5OP;0{bK%0nFiU!?fR&8ncTLFlk7taEuAC8 z@SxKYNKk*RCp=*qld<>Xxcug#b>qS$TMcbRUNfoSVPgOQc`DhgCgrP>q0U~m44jgRFXA;@=B(* zo$gU0%c4Ti{0AHJc);kk@q9oVT7!ba?7Iw4vUj6sgkD8a19>YgdAz{0X4!eckjQnAsYGFWzs$aA%WgJ}xYh5Pj2Q<>o(aSo! zY)eBexE1raS7!O7bvwWKLLGcgFM;>WxUyUFxhY&7@jzlmx_l?o- zBds=hW8Uo=&egS?;6zC;5-B)>&SF+R=0-3Be$gp7!L%EDn=5N?^W494n0jE6KAD8t zN`Kh_Vr*B0mb0wxu&%&zgfCDKBx@mh5*#P+!r*|NK2LyPnA3q`fPxI@FM#OuTg(c$ z*0km!*l_M^ahQeJBnnUGwNmkS|jG3VTorh(RT>e53(O~3@ zZ;;g1M%}pa;)}p7g-6!1j~({RUVa%C9aa4VEFyT~Ef|2VLW(vyL8#@72_dSJIE79< z|C!x6u+JS@N4T92M76v_*tvAY=Lz9iqKg(4$cI2(1q^@N=N@L!`|}f|Cy2-!BX!qx ze#a|n<#Lzn&HwRL_+>VhiKhlIQwI6YQNViAKamwK_B}@IvW~R^)?*z*`sjmS(qgDz z{z!yhl+ia->J8`gS}at>HRit`8x-4eK3ORtYrnoU5vnP;qKt24X;2hy=1@Ix`LJ&Z zfu9k9pBaIlp@E+%F<0E7dzZL}`2sPZuh(qa0q;-F)&Aojfy}8n8)NC2uQpz^#YwTK z!BaB=0q#GlyZo@K$%J??1iLUZ=uL0FeF(H~n*7x5bD~ly)lgDFf1t+rF&4d+EUvxn zDeVaW6~~3eaiwvXukTY_17+&WW{%Cl-IsA1$CX=wb{4m&O5)%e=D>%g+$B-&wf>=u z*-1tsxaw9jCRTn^__bZJVqL6UbTPPQ8v{v^JCbZ~{;(+EdfeunLk?5s{iFhNGfyK+ zXMpRNG}U_BHhwYt>yP-YgqXXfnfqF*ufGH5v(~~bDl*_&Dj>DJy5i**s`+0=*;7dk zKd@REbG&JfKCfr5D9T0q(q)0>%9d4K?xcwrsw8Od;S@bP1>!m4wkyS^@6~CFQqD_`tc?&J_J}GezIWv8m;d zch%p4p^wTPXUM`f{W44Di41{N3uRwVcQrivb822!CS0YVR4M-0zlu!b>*)=xWW9o_ zBYM76D6n7{zv}P5`difsrAB3G8Y|P0)=;*hf5rw)_h4h3mQHNT=q=e!py*DU3%%~T zbBS*0(y_p#a1nI`y6xzb303ZH>9pLQ`OV5Y^!1SAVv4*@wj#ur3NEt3B>)!}hPU2O zhcDkynKtcfY@HE7bVwF)#oi__{oLBNMb@3m;iMmOmqL1|xTthb`J|=-U+6uQwo>K4 z(SNiGt=w#!vYM?(2!jg|!uB1%`G`ygt`DOfSKYo4T?tV>;s_9*J6AusF*852%n+Lx(Ckvpq%vRfOO|(3%RId!=5NG^s-^SJi|oY;BuA*(-N; z(5>aXF&E?^6GY4@PL}X@-aKaqShi!LQ`1cCO4!c`I{TbwIf%XKw3{#8zdUf z)AS=6Pmmn%z8WjUo$n9XwJq3^_?O-*3{(J?#qOe$+`Z9n&zC5#-qiI&jU?BH9r%H< z=UX@A9ALv8O2B^mV&HnHj;mKF|D+qmYJWmwjYEvdCXnul)v~a(&;{FU;lF6;dDW6bZg$m@aLx}FeZB1 z>2A~`UO%D$yo1;29~R7xd!A0;o1UdUtU?vJXYL+N*Ntli*i!pHkYDj~T`m~c#`uKn z(EKW&wFkD)2HKp6RvzW!YjSpg%9f22!Dp-CCirQgXUyK-S|+vi$y1y`m0X|!706YY zKT*ke1YejfL9_9t(b*W)ya^cXs}o3zGbg$MK)6I9W|v zLD?MjLr#x9Hq$?8IT9RM1P??|puAuGmnO0Zi1n{0DLTer@jyZeo6cjnxmAEnSTcte zhTXEu9A-LK_M$AeZdID~F)8X4AgpGNYT;g-@?Z$2HC;uV;XFK_?ySKHl zZ(8xUyYMnEb>9!c>7aB_+ejQV3CNHz7{E)wet@cjC4kO>Qcew&`q{2OxxUCx)$?zE z8tee74v$I>9x-|?$y2G{()z3VvO<5sTLu!RkSo;2ox)vr`7I|kXZ$>3ZfhALnA}oD-E%IPP!w1Mn=#Rq8 zWONt7{nn z+fz&eSx4Jba%{{T8I$D}ZD{!i;}5hkYnVAEx`Z-YDL2W`LI13m*a%)N%0E2Zg1oGd zWKKCIcyKg$n@C+NSV0dnQjP*M-n#PKbmMg2BGcQg!XczRKnu7c|k2H0&`s%3xq0~{W2@MwJ&JIsB`CS(7dPEDOf3t%29-%|xQId-2O2;$6!#Q++bIbn8o z94CWXZdr>7k0r=QF7FN#-`K3B#v}urXVdD8)-o+h2*CYe%<^+FDo-Te5mYAzh`Sn* zx|qukWvy?!I0V+>90UAY1XB~4O_5Jk6K*v>gLhV_HLi%;8bj74?{&?~x(jIqK;iN) zoewZ~iF1iiBE>CG;}Uv3{^_cO0j~fKubf+vN`1A98S1FA;Q}q{D6`OyVse#I@f{I9 zFYQCc~^@bqn1jqYtsnxE>pD1sL>^@K7+tCn_f@Qmcu-640D zp^vK`dysO?PlhOw?g05S#X3B1B!Ym&sUjRV^?mIcY3!)UsSBvpbKExTrZZeEyp*c12`=2>o8I_;pTfM;BG;&k(oq(M|H+R0V`-^0N(#Nn7;vYU&ZYQ0Q<&Wxe;1 zU?`u_XdEqU<>xbkW}@LIfY@-0)t=U?){dv?Y~2kzZ83z6*enD2exmq%E4UGuW`)6mkCuqT zU}PNB_P!D{9u$zEqRQhtihRoUD~;sCBu{sq^qchixP9N^WKR9yat9GW$$`tm(tc}$ z)g{71saG9jLtYa-LyAYOpY!^Ag0DQKhuO97^F#(3=1G6hbxNIs-CB#CNsbOt2OEoh z#C8=7!K*r*=NjP{S5QkJRK-@mI%tJanVsTp%au4;yR=<pz}XQLeO>!uQU=0 z`_)@ZnFafx;cIjVr>JiioYyOhpQ&0^mL8$dI3rKroybV#p`*;g0O#i`E}@!wc*O{_ zkBvD%zPK4A6>K*28&0oa(RN|BC#CoI^Obs;-q5;vbtF#|Dt3U5ygp~yV||VnN%jgY zm1^FNW>ERKf3|_j>3$4Lbl>Ee#$*F~amdIO947FwcvzWmJ$i#sgpoYBok#}xR%HHn z8og2eZ}2qZJn~?@vzh5D{<1{|X{w>HaO$3F`&`?2SoQ3vzMW5=P+WDmQA;ei1VT7N zM)8&m<%?bEvpDmbLRs-C=R0q4dIy*2LJX?&05KRVN(@KWkW&U%`7<92#<^Y_0~pV7 zxJBhoqZ0AOi!{rTRg}o=zk#)^;I%X^J$hnrnjU+mgXFLn`uM~j?!VgPo&?}P#u6QN zS%a^*YL$ta*y~X3Z+3lPPaUzeuh`snan}d3WB(u-Xav5ZzTwgAg0q+|%s5e2=A?*g zGHUHdL1_7!Zpc$hR3Za`7>mDgRPSUuwcykv=}#&-11_-&dP>xKk88!YkAP1iQPc6e zS1As9XCpJ}(;DzYtjY7w5E1Jyhr>tz!6@>>m0tU6vkb_ z(l$$_93fK<2>R162{+U_W*@BH)fr8xvb+F@AxW1sa^K0s;I~8#U5mKbbdM}r!tZT7HmMK#@`rHRVwYQ)0iI07RPZS8#yyQhvT$|xSDlzoFZ z*|bEB+mthV*3cO@24dN6@87VSYEax=IHqpUk`~YsbZZTbL%ARfjq-=;U6T~p-Vy1q zmDw6sCCP(6o3iwIR!Vx=lu#@+HcHty^?7o|1#L0w3xZ5}PyfsI4w(vHgJkNgqsl4| zSwdZv8g;>re!&W70Guu2oOaGR*!4s~>5&z*Sdii)G%8kMf5~DTCY5{?sn~CnIqO+= zW@Wt?t--sr_`=$PiKsLP*GeI~&;(OlM;A_OGXdbF#kK>}2|vW8i9jZt(-FewZXoT+ z?(5xJcqQt!?;-vJI^fZ&A>gkJ@ae}d9>n5?Ou6xpnF z!6rmvl#o^N#t?&g9(Cq|rG8`%IFE{^OJ@qLYiH`p)f+{`_K#O3Pk}F{=!aXzLLbRI zF59jis{mGSw(gtOo8NyWD(#}!Ewh1t`)2q5b2#?DK>43g+^qG>Ku2|f|FCC;nR(@a z)V_gbf-hZQEs2Y1!$J}^xJE{rQa3MglqI`mG-A1WZg8__)=%8lU%ri-+6g12>azNk+^6eyv!iF+sc+*_! z#k}HS@22U!YZmp(C=#8vdz#3h8Guf!Ia_}vGwo)v{Kt{(upRc0R>x&iXoYupFD>Up z*3_KIGC##srscr}qYZUZ{+p5;xmODPsd&*j6)OI+ua(QR~*DgDf-!{UA3lFHSzhw?JLdzrO%n`=a>Vf z%ASVZ$av1lTmxsS#@Grv+n@#KVub86LQ&#E5h&gSgV^%xhvDlL^ zP=+a<6<+F8W%WeG^F+m&Yagdt{_iVliG1{fup3#x1tcFaf^tYWCa(QtlO>gRHIbz!ZC}+XWV$Df=$BEj{bpppwxv zlOM!~WT)qSn%*ffaue0;&=Smc9~MNdOLhDe@$p(6V-v(;{a`NNA-PP zzIdM2+N@;0nN^F>5^R>xLMQO4ix)gph)PSzBe#HgkruzNq?9^i4476|TNG+|d z!M3)F+8Wl8Tur~J_j+B~RWaF~8zS@7Hdwcf2I?2;ij9Msmg_KE;QtS0?-*QLv~3Fq zJGO1xwr$(C?PSHaZJRqbcAOpCwsv;%<=lJU_uf5K=iItgbB#6Tzgg8s@3W6KM{5lj zxeyLuBI2=R*YTG}K*8N^+z}y}?!4{PP6y6|7?to3z!jFX{ko`0iDYX9QgP@Ick<@T zHEH5OHNpnlohSE$H6+T4Jay5EHO`!p1cA?`OMpgG1muTI|M^J6vlSo zc%NQidIc}IMz9z5o)xzjoCYYOUpJ-7ROZ`Q;^-bAe`4y5E}l8-OKLb$#E4@r>r(^Q zzwM%u;Ni~x=)-h(!hmhXP()-Y58-gk*a$@n9D?R^P0Ruwn#d#~oPy=5j8Qd|m&GcH z9lhfi2?#HaaE8J4 zA+3W;rl~Kc(n<G3(aib96C9B<25LVF`TCXdXd0TX)+o>RB zK{*+$G(2D;3&U$z&wxJUK`bc|leFw^f`sxD)(Q=+133(eNx;`)#s$i@8^ynol(-sinhN%mKU<+F_eGr8`i^QO=s36KD*7MIJ>n^ z*Y%ip9kIiZvl`TnfRh7gh=aGf>YFAMYg7td%~GM>XS05Olp&@$8Ll?RTbH97_23lF z5}e1SarYkOR6#@scPaIxpA(xQFHOZL7rQbn$B+9pwZLyn$-KF1k9vrVzRaohguCBk zoYD9a_=We0?wl|zF7k>B?A6Z^^%_hB0O9|LJUR;CWcV6#Z6*62V!sDz3VJX*jr;V3 zrAQ4SWeWdy_!>g7eBqpTezv*RNs@f=mM(d(Lj^>Pl9`JL5r4A>vpM2>9hvAG;)U_( zvT4dBzRk|!f3`^C`e6J5#w*i1 zvjDtYKs@|y@*{8gDggFG`~FD2mKMAZ;vY*Y*-;0gmkVWd3`S z{g27Q_vA|Y069rrv4qeHjO>xZ42+o`zqLlN+=GsWviyaX2C`|YDHvK4coLIlixX|h zIiIE_Vyln(To3K3CaS9_j+hEB;MGVMx+VK!Q0QxDiTG6Jp3*_b0J?N$vOfCc;B3r= zBF{oia?{T1Fa3gBH?qLe+$OW^9vhO+Tz#uiW(CPfi};Z@B$=1XwrVCWJ2D{=eqx6&)V5YroZ_!}L6=FTy@e|Y)rjwkq6 z?#aEtD=&W;tz&8rmlv3G$Sf6%ZlP^B8mXPcko+%^xJKA^bE5koyh(JwouE1YNA9a*%>+?tD^gRMgiI6A5vB=v5H=JH_YKz zZ9~Qks_VLv)dAI}QYvJNX^yQ%(P7oLHmIX*+ zc*p{T4WeI?BdxOJ?jU2itAEgLJ! zA4Ea*2(hhlEsI(#%jk$jHKNeFz&6P?PprUB5ZZSFYBaWj@O(=jXM!h3imRvA0e zLkW}HCfi5SY39o7rsPKSph%l5sA7PEYcoe&QK<9SG+5=IJ#Q|olrqI)$7Rd{ffUI0E)!g;0?n+;EH9TaEIH6ieSp zw8AGxfmBnST}v+6v~X%(d(N5j$~X`Q2H@7d|>S^aGhu`TW%A!8+_ zFZJ7p_7>KaQiuZPCao*O7%4wfyTkI9+Y}8z;#luaq_?Fdy=h_z5oh={YG%U#XBjA&}fO%bl?lB+`)(Y}1rGzg(spTXJ zNKhRK=v0V?%&I)RCZz-qtSU39CB#Bj4|J$AMR_C0AJRl(TD4|LnhHi$+6$-E&(TQH z2pzmj4f9pi$Z$V3GJB8I+1*i<6LgQ`sZi`+c}#ZgCB1^ zZh5?hqz*inJwq-wmVo<`xkm9Z5qYMRV>BtIrE$Pzs9>PzG_nLLMQZbUP2nJ}9OEsa zn1n}J+;m=@_i<(p)A2l#g^+r;pcPUw`kL`78Al@t#%O2a$LYa3;M3k#q{fCa6UKH$gKAsuO{q3Qa-8QTE-^ zSk|Ye5h(d92_xLXs^x%L5(MPnt6RPK+pFw#=ir~HzXRS~A4oZ>1ofq6?>*niLHybH z#!?^Y1P@NZ=!^bBp0Pb*Z=4|s9waXG3GIx=XdCK_AYm4J(--ViO%)~neJtvt%}THY zS9AUiOW>D+-|YJ+cX>r>X_bV;IMo}d_6%0j#85EVyGEe@yqsxf(5m))roMKfVwQi_ zZD#JLVZQ8PrtYWlyi;=%Gv6Bx>Ml{;7=LXU>$<1CwgeVySnIl7Cdt>&U924p=l%2X z0DLh%WHKHn*7|5{MvQ3MW}et+uKje+uvXuJ6?k~}(PhQs z!N+M$0G3;o(nH4Wec-(_B5Y`>LOvwq++_w?1LYy2qP{&m+OcKuXvh+O7mJ1Ivo08R zs(9?{!A1s@fbLXeZxV8Y$JaMqyu( zDwWG6Z2zKuLP~bth9AFo|IR@8aq2-}Eiq2QYDfrEw7tL@V%)iqvUX5!Nw4nE=PDiz z;Xg~cK7krlgPR2*zI9PRLf(-Wm5_>3_0Hi@K+BKZ*UDJH)~A%Ssz?QC+j|vJKyI|2 z!BId@mj~Wxz}OvWFls+657FJLAm^r0GQa106RxsiK$1gIK(!G-@rxd{p|@t270^wc zQqdhs_Zan2=yg%=MPOBj40dtg+C^qF0K7_#=sj6c8fOAva-yH`5Hc=1z^hE>EP`}- zsh;#hED#kSi3T?DDpK{lR@K@)`@wB`>CbR_tTE!l5?3jMm zjC5$~3<6*2+Rvpqsp|Yq!@-AN80+_h7+7G8+EC&09y3^44Ns9Ga?^b`Ent^pqZ_9CgTS&$3s(erbq zBqT5><>!9w|6}cjfRU73ulC}|bmklReyS)9{z9_@qe$kU-m3xdVXXC?4a6u(xtUPV z6)2#nbpX>Sp!f=%%lN}-vL9CJ@Vh5hjT zbAbRi#luYSGUVVB6KG*)8F|mHDmVTO5l}PN7W=NbrxctNpz6mxO9W!gbzIw^=TD5k zA#r!B&HIC|c-_JZX`3t%+mfG-^ezANc+uGT3*{eQ4x8^DVHDAUfK0zN9sl*Qm2Xdg zf1%YPWov6@@t@o@6;~ryGcivSGe_6|U%MqWVM-cQ2vN*ogx54?RAb+yup+x+myn)h zZ5TotktxfMr!5&i89(#P^0r=AtZ5tq@-s=359$Xh27Omm*ZWGRSb#4a00_SEnlLsA zj)tq|xIsK4-mFA)E=8$E*w4dBxIkvmmTsvLX`NMUE;aMz`Q-MgM}W{YK2^O;I)nO# z9qLT`l@KbdYvI0XqceTJwgaJ~SrdV86dLg0w<(*Q76ldV#&Fp&IiBa`?ddua?c_I+ z8%>zd3t1Ot#TLVO-*PfRF=V3#IpX}2E-wrR@~RsSh3ZP<5(HJJ-az3;Ig&exLLQY( z&mF~kf86n&;V1ws_|NPX>qC;M%!{LfYmsyYrR8i=29CO*ln6S2rR zl8{tVCJ@*rpmri1KaAC=ViD~SiIu}llSXXKY)u^q3$3dc!h3HAWz;JDPGvfITLiBm3 z_77U&DaE*i6L<&-UoJ z(bsQwo-Ng<*{h$P<=4}tQva5A)A%)t^<>`-=ZtDY^Pcljq3w3woT^;BHz&Z}r`nzD z!e_DE-R(=G(RFh)3C}02PZ{@KVFgB`awxH2Fn$Ttsq9j%U&y(2+~_EJ-88Vr9)vu4 zZDKaoo%eeNESaJQFK+;58>2l++CfryuKN|9*ZcVLfIu6(|=0@Uyip2zt z+7#LtLwzsxes2UDQajpZ*t)de#M@k|7R3jZyuW^zhO{xmwls0H5R!V&mlJfPz*^kzuI5}IvpG8OmK&5hUyo6gAlJnB&0U$^YdBvIAy-$^1aJc2!Hm3CV#*iX_m|0t}!O&uxztGa`~k-_J}`< z3F7|#bt5d{Op1zY1110s77qwMsNEea+-+2BScd-ONBw{wg?nv@yx0;wDSD(kawxbk zgPD!r@bm`Fn~vjkq9PAHIZ@2BZP2pmVOpzM8um;cG0nE6!LvzXuwyf_(|ZZrPBNg( zzwOFTy2SFEZMV~=?s!&hu&Oj%R30cR4VKI9SL%aZmXoI{HWo+z+M|Gt;Ir_KPAfN7 zXw;B*aWFnjI+Hpf=XIBYH%=+171->0BnQ;Vtww)tGzSf@RFHS(_1EJrI@H{QVLYLw zA9-v)+Q=41V$~clfA)iX4#U}==Lwkn^t*h>xOPq8>#hEiUFe|v^1&3qwMF%ZxfyFD zM~K$2FLG+HW?-9eMMBh3S0jB4_#8AQDIo9f^jaiUtz8b%UxI(+@W#GrH4cqf!PXY0tfCq~j>6j|3tFMXEK8D3 z)>hb`4H=FyCN`4zSdNPb6e{PxFTL=#rLGgQDGL-3sJUIS38i`4aCh8b!^DZX!GB4C8@TlLKx$gBWBpUKjfHKwnUWCCtFoitnmu ztD`hg8`a9MI&7f#bp2(Bnzq+k(Zo4&+y36(8jfA_H@jCr#|Zfv|pY`u4j+$L5-gD z-ZA+$Qd!BmsRfM6FiCzr_~Z^f+t&{+Z-zxETmo!bU$omK+I&d&OCvOhpV6kvbBFAQ z>bMrdJ2VzXPF4`qK{W34LA+!mGvp0_6n{GgU}7W=R|L6*O_z3hZXwlF1;K^A1@S8I zm7&%lT=xtvnWdwaF_4XGpY&8_;z`0a`(kOlh7v0(!)r@Z7d>^t!Hu|Uh?&y-L zttbvNsSvOXO(jA4Z;())D3|p)15&Nkfc3tyuJ58sklD?ugUY^$fY~Cc-#VHYS$gK9tyg zA~eM%FcuGwd9VfK(X!P2xs~yT8-@-bzF%|zc9y-N&!>{2rIaeG_jt^Cx$50s>)md2 z*|zcfdGhX!bJFwsk9WYdxX-qSYi3YmJ7$&4bKr!l!KdOu`m4??U1Dg!HfHC2b%v?iGe;4Dvk0={sjla|qS*^b%CyTtDOSO{e zr6D}I$esbT!$`b~&4SD>@l&e-q-71g=(z4WJDhTX;%VcmFhUJ;*6g36^d3XCtmdVA9dghBr~h&yABxqw<81pTnA|Wr+4~) z7YWE!)ltCteyfjedm8;@@&ExwmL>$w-d&Z;hJmu{pX(wcH3T7gOd6pzCuxpexk&p6 z?0s10*Vr#*NVHaNRsORgef5pBo{JD@S4MF+>%$Tws)-#>=Wto{zV&9B1bkgi)dQC# z)JxFVTUrju!I^lI|{k+e8?N58-`_ zN~(|KMCC+z30u;L6~OYut2D_(kHL6_!Yq1OkXU&gr?q!>rLpoqCV?fBw6CntZsd5t zb+;UM;1q|Vr2VwEcT!J7yj!VN{vsR9G+8L;;>z8t8Hbx{>tPyP-;J*StX~|W4M&HZ z3~jbX#wK+s>uEIZdKi^XB$-*1-=?I;tRwqFSP_9Nthd6VH{_xloY!i%m`jOWnxw_u zE2L)p*T;)CHEL5M#0Q%uW1HAxstLx$j0zbaH>pgkG{!`u9igLXCgBqxHFj_I`y1@A zKxbcdY==l^Nh(%G54@JHh3h@o&6IO5=0r7I1#B|s?6w!7p_ z4Uy##tNW z3>E`E+`yk*4ZA_6T%PITu`O*=#s<3~zh3rmiyxa`kOmc3$qyo-DL+vQUvKFL(I|}- zR1uM?)fFk)dO_&?8-q_#K|3)jO^!&Xz+(s zT?#@Gh`&7mN!I|9gt-Mfj~{@G?#P0?G=q8>G#;$JMxJj#8RxO5r#f)^eaDVO-RXOy zlL?CNXol0WaC!v~R9O8;eh3KpyqXhF*DNj|<>Rf_c(sZs z(6wXd>WQME-9r{gJgEEdA~ABh%kE`N5RGq;JB=XG{lyyWrithw~^`5Yk# zyiLpku^wyzshdy-&K|%l@S+Lg{gQrYVKqoOmRa!C%Buh22tOO~sAiRydTayC8-60@ zEtFL+^H7Aq0ERd?#rz7O^&Sa#09Opr0JC2YcX+$K0^f*@mvmGVjqI!EF&gYO5xd)wz#3pgVU>tDlJytT!o}qE|F!e ztdY`USW@PNJvdgZIXs(9yqyo**4*_39uPiGKW6I#x zM>3ylXf!Ruy|yhT6}Pj75=V?`^lSIyrR%VW545Rf0`quI1sUv$5X0$}4 zVrJYZ$=d3frN(cfy5HG{>^>2EQW$6lRROqNm%2Z(m zo>^y72@+WELI}9B>s-W~FEDYe$vUFODl1N1D(!l&KE2kW+#$R^F?t{DD0_t z5pix~%xgg^UN|TId?Y!CDb>4|P2DMa$`i6ylZUc2$Ha^RBP^^rvZf@BqN9yIC8*u1 z)|#>tGZywfytx@iHV!lg?~iO-~LTSyN-lP*mYzNhubF=Jl8=O;Xuku2Wmdu^R@$ zqsi&_^ii4@cmpBie6>r+t*(>Hw6Zwv(hzo-?iknQF8fKyy&K1d3FBTJ*M>J<>mrLe zjrTKHkr?0hioELEr&>6LS2-#Dz-x#u(z!XFIuj=ruS zq8q!n_qz+OK{#43lBNxOz}XVvM`3cImiyv0(kmB_MjiM%y9x&NpKDIbN2oS3guC7! zlLqA#woeGf-I~>JWN_#Ke*y*r#aRPi6|oDH2%8^ow4yOWVGl`mhIQRJe0<^ZYhG-h zYk1Vj$+HN*D0OfPL?{F?yVPK}&k7kRw`K9+H*>i~7nMOMl;def z)}g|}Hq8cY3MUkYFUg5dkB^W4LMKE(DbWjAT8+LJY*R@Ryo=x|)5+<7!#Po83h)0@ z$5uaG9oN(Gh9`rjjCc8DjrJ6r!(-!xJ-W`D#=*OC-1?F7S3S_V|6XU?iN?@tbZlLA z3iek|&{fXEc#enfYF@UO=J6x(ludn?)WL_CX9(AXh3){ePv)!(SYFeMZh3nY%ej)L z8iMQ-rtrCwW);T8GQO?4pQVb=UBvmAeJg^WwLqRCD5f$5qFRV|ar_`fwh#oj+xV}d z=%m6@due>StCGXz1$t?Jx~nqOesA2eSb4k#yi=!O-@pTBDaa7rUt?2aV`F_r2X3mp z8i@B4517gaKN1l`c-_w;krjVX6TX69LCj z*w0fKa!qT5YjEE?1$-LDx@P_r^${V*P3G_JT}|qlL5Jv!UNdiZ`eJn^{qt`3O{?WR z2f~8BKudq7NSyrD7*37%grV>mT77(JT1<5kl`Z#CM}I>#VZ4pXD9&!uCVM}W9nJJ6 zV?Tv`q|!@;^|)ORe(uP+dJ=m6kgTRjv<|;b*u+~`vPWK(Nw8e9hcz;t=&p%$`^QSf zVuePsrMilxhC-o6?nt0FHp@A#`7+C^Bwu`ACB|K&w^lhxm^74YTwn?=h_W-}_u*Q? zQvPom+p{%D)KWbZ#O{Si{< z_ETXVJBJPN1I#GVz5J+j)$$|qGPQ;W>C_-cUks>nc%31^+a-osJsM@*&$@zVtz*vL zE@2w#qz?498e4L$CRlnuMX6_!q#eGmMCo)Sb%z6@CwTV?k4722J&mOo#;V@jeNjri527$s##!KnVE}f0Ct#$URl{TyPHo5LryY)&tEalNQWul!R z`F(lkZz3y4XeSr=BDC%p-fyHH?SxVStFiS~r}Q1iH@JTca#Sb7&SOv`w)|SsT0e^s zzsAVYmxX-W9-F#=PReD{)JEn~55Jm(yZb2DzKYuqzCdye&^yuNIxD~Wx#View*P{C zQrktyuSHTnC4U0KCXto`_gnij^C0$#@PL+gmfV(ee3I)yEc%17I5bIWaxjZi1-qr z4Q+FK^G5rMZ5r%8yz%PAu7ewTT6Xlq8;mfy5_%q`tNlwdTkLD|fG-xk{(3^pF3xnk z%6V!ocDCVD7#nc3weZFs*WDe()!q_>@{7*SaI>@YfPN6NPyPqdk|$`P&>xaLZ1w5F zF2uVXuLvRxrbA+Y?r=gh=A_8J_7uFZXKMP;psh-uD+nH3j1Rr@}IULsj~ z$Ti5)(RxT5-|@SXeSt@&&kZSm*NL6zBlH$!FdjzW*IX5uO7wdd{?yrPfGhu&f{A!WRw9Q5SZLP!_w=8eexBu5CV{{H*+5vI6*S zBtaBPwdvr;Vv;0+0?gcuOZcqZLeAoOjK4tWYTJd^vEvR$OxQu3sJg@Q_a7s&m&EK5 zk{-lVOxSN(Jn!gk*<^tdKkC!ay3HEXcM53p3T;2H>=6V292FnFzzT|QY?$jRfi}&; z({4!tBDd>NZ1;+r8_|BEuyb`tQOl8h>xcNsEzN@n1d*)mcAEj5sOuMk`4W6hW{-lA z_=Mg(jpt-rWT$_~{wDDXiAVrPHQ#QK8kWLtDGGBSc7+ID2ZRz(7V5PKYw3Y?NC;nn zc~Z~6P#P6ecQuFFr&l3JKN6}vcso>_@GS+fVh~&h1-79lODi%6bz9~Zvqqk$Q?_y; zYeVi-{otbptt3m3CfqI%awVY_f?61F22t9UGC~%^!}8N}+NW5OQ<%yCUQ-+KST}x7 z$&kKd17i{9I34yCpFUB`yh`#KSEAta`HAvC#$=#o<}P_`B$4~LtxsVdltEC<%tO}P zzV7#)lVK3?)=KS?Z#s&b$p^;D$<&APAfaZS{yM}-Y#sLr{Exhi#>}QN`bK2P{~IFn z&&<02A#df(TwIJS%v}D9QKz=$f})1{wPng7b&y7G)h-C59VDDpQi4ipfMyA5*+?Ln zs11C@zE-A_EGNYt$o#&`8Fw(o*~@uw8(4%qhD5hpf>v700(~Ara8QiU`;PFs8$*)U z-EC#F7U#y?{LSGAIPv(^d6JWT^VQ1)V+aH7|2nT122T3H85p9Ed%rIvAnN+(7SX`x z^`rp<;Sbc(g#^L-Ur6IXhj_;`BzVsAkphG<&JCkF-;{v3hgn1c|LJ%m-s>SK26<*r z@n~=AVrJGyc}j~E&-pp#yJBl1jcJNy`v+TuLT)xamS^UUA-XZFP*Hj@a<-pYb_N`J`wQ3V$UMj
          6vpU|^3uB1U}HXPH4}vL)hXws$Pz~9?(A#oTGq|&X^rTvQ|BVs^mCFLfM;MYKD%Qv)#;H) zMdsM8C$;0;Iix&66r?eO1`#!Vi8jyJ8N}bbl!c+ILh)9~jbN?tw_f{fsYCY8mZCGK z^`WrINqNI!LTO#EDNja9LKh1pg>$udP`lcU)tBGQY79nEnQOGqnRdgna#WvCMJ}2E zF1?=oBpOhC^p~sb173RZ_7ztCxz4Lz>OB@IvPyWE2aqRkx2CFmb}`xU=xm{aqL1!g zY<#782kyol<>3ULNe9xsQw@l$Dr#Z-mILrDc_umIzd5;bXItGrDTOYj7j`=%sOW03 zHeG^w5B$B`{ysjcgx|xHRz{gxOTKSQbaU3ms53Fcxu^cX$U41XO0_eEmqZ7;XxL^g z2XBj2Kv@^Fd0^|XM;Sq_O=R9w`I#?*n+Kpcq#KgJHo#I-F+CK413|QI$4)=LDXFa!?5t6T~$N#AM%wbs)o{&ch^6JF#lcV&8}b5iu`k z!$`bNg#g1uFzIHe}uV2tgv>*}I6NcTL<3|ShxA7EK zU6T#Az`YItcZlGb=*}=dG3EM9o!cv%>a!I?C_K)s?S;2R-is^)+EyI$s;em$uM~|n z6(>zw_monRzV1$NLke9)&W%%nLy#$6z`*T;GT`qKP6#ujfS46AdKil+*-X>wHB$-MCA>SLzIDvr_C1yIXu%a>x zKLT|eg){kVvB8!k z?_K+Se>dcwU)Svv>kL`fBSHlce+g1g%n$xSBHaNdU*P~4jl==AoG~}vc!kQGMNgFc z#3MN07zRd}zWiG<{~?W6Jc9!S-;h4XXs=tk>H!bgQM5LAfd)!{({88Aud=(Ca^%F=aD* zQ#0ppxeiGydsi1y88ff{D(^{C_9#rKfB=eQS!OJ6hIZkzpHkGAjr74{B~?gBk}Z?L zxhzg7?JRljqd~`EhC|?yRS{qa{Uksz?6jUx!*`@nmWyEHNmnkuzskSb{~o=R&jR5a zFABlKh-r2l?9!v#(XMHlkK;%3gI2Q~5=fCfnSfX8*0WkwirEb?t|dtGUWCyh-8`rZ zW@d^XJ`_xtSnV4vEa+t-URMrux|NFR!gwY@N_)czK=W0ORPx&scz(1#a|bgQ%KF}f zDcT{)EU%?XQ`ju^$!QNu#X~G{8`$ICYiz=FoO{mdgb)7SNKGf@Wab`?!-Uq$bA^~} zK8k7-TUA|Zk+oLxoNgr@ki&nh7+#C^Ze(yTX=LDKVrar%fKv3OGN1 zfnrMtEL?wOUWgjTuLLgzC2+DViiFZPn&p7v_Zvs5F8+#9Hd)}aUy5gGR@1PV3V>;4 zw+lGi3%Z)iZX{L(vHtiz!&0Q0P_60G1}|=$eqL=kiMn?rlZWPDKrnxj7y*r*}i?gmlT~ps2{+n!)_qM!}P?Qa4{mrAn*fdDM3lE}DnrV9}6vxM;>E<<4#AVYy za_f3M8F1@GPS!5Bz48Px5pcQa9=dz9b(N=OlZIl-K1mzyD1F4^B-;W{A83R|+{TiG z5t99a>LA_e<@nCY*nCBQL!n%bUxhh>wFH8{;R`Dtcs|W4TJ#g+Z0;RCtCV`HmBjHC zB6Ng^2GJT(#njFVLS;)DMg3p%q&@5CKEeOdF=l6oTX%gg50ihpJUIWi%R}AB*6qJG zeyJ*Q3WML~GAhtv+F*AmeF(Tf#bO6?2P2`Dq*)bvy(wrIGE8<#9~xPfvb?XLA4;QE zOyt{_W)|C1J?+ii&G`m51VHW$c_Pp-Xn#>Kdl3SA!pfou-lM=yh`(6tI&SHq; zfrcEpLObe(xM3c-Hafha?i$RC8bKxolJz8hM{e<{7~p0rHz>>ylPY^eM(s(8I(A5p z#X=Iu_i{%Q%|?B6e`)63GpX1i;v97bHIP1uo^HjRlC{*^LwQWi8P@U|qq5n<4#o*7 ze_yx-%dWnzmSnw_wIDf|>%#+jNpPsSXQy|%uJSrC&=g1F9PalFJ_E?iR%;c4bX$jf1hGl|mXv=WBinRonFj=N)88 z>6dH5ObVCdI-4?sACE1Mn_x#YkEcRwJ?FpOwQwPixn6-iKH8*5N=lEhuXF%4H^u@w zJ#!_}OcI-6r5PVjvr`lU-~Qw1l}+@Gir;sLx&Lj58U8mR{?E)W)$;OP8bSM#f1W-b zON=HZ{DH{0hDd^hARIwE0id;IH)@U?g-J7og7Ilw6T9v8`K_)q+om1A09x%yI;uIa zB5X5aZMVGr%x`CNv#$PU`-41t$DW<;?J?fhVmsSwtjFtS#zDaA`ideSyg`~1?{v%w zN8hmkXbeUvrk)2<-_$eGi(&m14&u^t4dB4N+wWvPnd-pQGk8lqWW(;;4JmW0jr6Ty zjK1gd%0Gl)`)Y)AyypfWxEm#4`4|S|b2kWTys!ZBSw4dI(%C08)E}AgPZ&6#=l#|nv5|c&A0c~m zfB@!?=)E0S2bLZY!hS+bXiQmHb8wiD)PYe$3rbT*MpPzC*k(*~mT9AmDaC2U!Ee#y zQN>@3@rA*KNrh2Hy>he-k;y+Uvqk>=2~KpC6nq#qE;O|v<>bZ1MsJvpqR5JX%&;U^ zY+T#wTRytFcC>qX1+fqCNdJv?>-zQsy9e~nQiKz2JzX01+7ePf$r=+Hi2@rR-|{xx zIHb^&lYI#(t`v}-Sk($5^RBzC@4;`Uv$1(qr|%$GFx*Yk!Lf=6H44D)YP*4kE0JvQ z_8!QyZ|}b9tJ+?;xc3J63*vI5K$0sTDaQ!se^_^$C{xb3u@O1tt<&A3 z_gU-TUO#h{UUhQe6Z;``mFk7QEOkF&7RMMZ*Xjj=Hz}Fft92qiKNbd1dX|qt&@ZcU#`0|HkTS;)mblWJ%`R;?=GuU50z2iTbp-3$nD7>CQH|f(^r8 zsGO95<%_#cJ^vuHw=}PbEtG=!=0+2dbOW$CM;U76&KH%W5p|B_pByd}-;glH?#=pi z`*Cq3N3%vFi}#6Hqo3ZVys|UDp0Lx3ut$BszA?!40|=K?HF4rkW~*Z28)k?O<}c`- za4KwB#o*JCbonq6IJ|+q+}wd5Y6eCMo|NdarO8WlE3#YjysgIN&f1dktz5V;<=T|S zY~XaZ#cc}xo7e=Tpe{Xon&atl_6TI416PTN9-*&-j0+gDfJ}8+7i)`*F14-5mx9(B zo(bOD zw5b~}52+$47N~-nZR8KnZ64fQZJ1GGZ^$In59bp#23b*wlhwJ!z6B0#tl{R#(CxJH zrlyj!e3_mVX;YV$H8*+DZskb0ojj%vdr@TFGA~hyG(z)~WF*@a^Aw2kqwPft2xWhz zV6}NF7n(AnDJ;O_*g!rU@LEhJim4V**H_DDhM;+=vQMQZs4C zshOj2sb`|~u6U9PCqj;ykoGudm0De!uL$y{K?6*N&L2v64g7N$6j>V;{7Y8{hpsJ& z#aL9}>b1d%3k{W(H?;vn>40xN^?VVZg#pMn-3AXd5fU&ac^}Hg2&)|_Ik_9r5)%C4 z#u{=5{&khRJX8&dYxvwLo-7FBsslYvy?xnd0LmmSXnpF>19P!7T)sP3XTl}?;}x|m zz4r2^2*ArO6?GQXjLx^Sy3!D+XFY(&DP8byjCU+Ky0NO^S&0sQ*G{3~a4N2}1eL?q zA8=u)UVAu#p)oe!;63}z;ywLM5=EcE6R3a*SNi=WGhhm<&Tu=Gw>xUj8eo&*LHDhE(1E{k*3H+BNM6U+4Nv)VXsGtik~jkz zrSg5OriNZZ3`<=vVME*Q6QIMKDnke04v7zzt0g9fpy88jdRw(Bs?iFG{1KKnSz&H1 zk+DvyT9zQ?5*yB=b|Aa+zRv%Sr6Vg~4P(hmFr_pyAtW$b{hD^fSuiTZ23UHB7elCY zD#sqO_De7FsAeh}tk0}an|l?E`s8ag&j!SWOiI$1 zMF>qzk00*$owxF+u|q;*l-#tjhzdTOCdO@>xWp(tlu<@QNa*I%v?V0A=@Ob5Tp)au zle^q*p~97ZKbpx?bxIYNc72S*tqPT?U$wHtmoIhId_Kdey*E{v*`%>kxR@(koY_iC z$@vH_rIYgz@=3RUE}ms(S6h6wcwbX&gQ85x)t5oB?>kicfRA_-$mZQbMm^C81j@OY zP$He`dZC`w;EGWBq5Y08l%0d)m@CoUg*;}X-V0BRGG^Y*Mau&De>f;`UhEw4d!zNM@8v61?8ViB*{le@ddS zrWAjKNT#=MsQKejg21O*=Ut!G`m2CE@B3>8dFwI3w36!-Yo%MYbS(vQRU4(+k=s~D z3%a6JuB&FH9%rR`ea*({QhRcM2i8)$#rMUW-s_k0o`b?L>GpWdOM(8eR&qEyomT(L zj^bth?{>ZhgrD2di;+_u0>u3!K^|nHW#N|lJ{jdk`X*HL8R5};lKcr|+WR@xPle-Z zEpm)=v!;tox~y}}?5AvYd$Ql?&HZjny2g)^41G(kGnM`@txl9#^1cx!Nt=l z7c@Tk*rjld#YJCmJ`xM%$~>{oc5sGbsCpB+Z9$f8;pm2aT&1WdVBbF!?CNh_Cn>Y9b zoY-s4HRqUPjHzp7Z)9y}`7ffFjF<^=AX(&rDJCA1S$au-W|aEkfFM*^o#q-pJsbU2 z?ANj6lzNjHdYiQ@!i|(%R4PB_r@f)JBkaw!-4~EgF^YVE}BE*s(|yB*->WjM9(WNiEkMTm%|#f zf}0A@G2*P`Tv7m&wCPG}gd2T3N{5f=2m?13MC0BERN+NN7g6p(z3|IWd$5bA1i@URIcSigt8yu)2Jo)b zS^0A;HN9R!wl?0u!TFolRn@Wqp`6r%u{gP#ngWZBp0;KZM{@eA4foUT#)kxVI1GZD zR6uDIqf?D1)7T3Bo>~c(+14Lpl|&p29O`9*^yNRRAxx8zEHR{!il;jhwA0$l3`0|| z4hUmyNuOmA+xEboiu}7hzBE$Dw-ty$?@%iW|5LR9=FZtj*RvkSjLxs-N5h-W>l47c z3LLz+13>2Ir%nWQ7Yo9KYY0xb&#_j_|Kwfp;(ha*S2By3|EoyxkaH@csA+8EwvXvg zVE%Z{W_;DK)cJDd?eziEZO9pxi^U)tKua+Y2|nO1*Iu<(7^N)X?agc_tbs^e6l{1(9L zOs;9XlQB!sY{(9`F>k*)6vRuRO|KkWfXpf~6d!M1vA722e11eJ(O-goU^Ze?+=Tp8 zpi_}o_NY~$GpSzdB#XA4Yk(raGdV!(3nfRSe=I~0#7zY3CJjz)Q%F~&?ygi~qU7L# z+(*9XupX_8vx1Jxd-&qwtyDTrPkXBeK=H!t6LQ_4$&(VJ3napFtPdsycT5@)nKN)(Eu6)U=rc!h!Ni@-{eDWq4fu zNaR}fs%$gc=3t_bfmp-mSOq?)Dovp_3kO%_(Q4m4hDvJK5`Mj>76fm%G1-I1LI9hY zysS8KO1p+7eRnGK;AJ(sIo`uu4>@rh_}*ME`8M(#dHEhlQhA9X5(yMm12M11J^z$E z=nV&7E_$!1>qS(^>53!Eq2r(PBB03Wi%ZxwrER^hNdBlq!8OHA1M|O z4d0P>+imhZXS$CR2w-3mGz(drUd70ZDK|4Y<2*P?onI?ig8vewgKPn3IV;qYkQ^Ys zy(KW*U*(jMCzD-NZ@YjABF(D)C!4KN+?yU;hS+47rm^Y4!e^8Yy|{i`}s&fFT2 z51Fe^4i$i+R=g-u)-a1&eW7-`wj1oEuSZlb*?@pI10uW*>I6Y4=AD?Tl4`OGcP)Z( z1&yUfhRJiDVNYW}#dSo_u_n zcO6_`u{%AC355kiC5bz}^H&5b>04Q&a^tf0DGJ<|0^(s$dZMpuif|%wZUsG= zk^&PZ6Rlx0<`#KF6{)Pv`ICc}%TNb)%g+zvTI@VDaNzEKdI-82X?B4ClOg0Oxkh2q zJbOxa;71|m^t|F32+kZZ)ox_`4sVDfTTwY;x(lR)Y#E#oD8KVve4v$a`~>|{;MgBR zVd^0|X$}{EM^(-8nX}}6=fsN=C6EUg+pOT}|0U%=QU>OR85XF0w#Xl(AWTc#IYc8& zGX?{7_VAyPJ=B}+$7;O>I2mQoqT-;3!$t^!4IT@<-d7pG?spQZuoHxG1-Qw$gOd^< z2W;Th3)V-Y_&WA-rN3|*1Z2_1-4%h^NDd-Xk9sGL7~B4g-TFrsS_{3sX!I@XE&X1> z|9ce{llCMe32$*L2!LD;6?5$bE1I^xRoDU~6QW%cTJN{z<<3>B=)1rvb zNVFI*?K=q4eslE-9mjQ)tnTQ>MLF;U@Pj~3Hs@@#`v`oaUMOyy`9msKqb@3tdX1cd z;a42W{9?%0qL$g&mysfm7PT@6Pioa`PC1nN0PZ~KH=C=H{L&?tYPdZv=d8Iks!geq zJv*Ux16;#vnXHenW!ATg?ljs+*siCmQObXe6c!+pzLhJzl@M2fnEA__=ZJ`sJE8_t zPB60m(;J?l5a52%r-du3K)#2WJ5Jv8KFrXBT4`>*}!--A1yN-z;81GSv1#*RExZEI&yO7fY)S1D`E z#&G5le>Mp6QX$A-9ca&6bxo{rS;V)L$gl9YuY%|#lB(}vEOGpZ`^g*ka}fC-U(X5q z8Bag8Ue2Mm5LP}$yIKQHpwysh9MaKBOrYG@XCC`zS(dHwUrzkwuyDjsJnrF1=GjBB zPIqHkU6&BP{@GU%`7Ps{^S$m-zkBole%%xP|3&Tpl}k#>V=E$aSr?udrKX7f792Do z!UsMiG%~n`LduK%$p?lgz|YUD#85wNkc?}D`3nk-y4Ge#jB0EuQb|u$p#&?AUeU|q zLl$uKc+W@}H=KLbcJ<(SwC;ZCepS`w{hdvMTcsZN2qA5_2#hx;=O#lS#kjBe0 z_erCdYMVFbl2wiOTAQsG2T7Kd8crFd%6~HTw`(spuGzvSM*R4d`yPSk?bpfgMA5?I zx_Mu{yNUiTAdeFl?Wiu)ay3=z*sweyan`c+e(hRB4wrwA8thIwSS?Jh@Ta9~uN&YG zup6kbJC`&TD_eY1>eN$Ax=TV;zNj5SMDd1c_&`rOR$WS4D_&S{HKviY09>RZk8Mw) zl-0~8q^3&9BdN-;euN|}rVF$2pq%e`ZD?&(lP7$dymqx1SRpQGY9tn3#22$2S`E{jyuXdSfz9;ec+7R;O+Me!$IeA&x0_8qT&#vlEP4Iqi!IVYPGW+RWnS$UJ` znhxDIRf{LwrgcCWIvGgga{>MEDafl(&<4WTBN!5-0#fARYA|e|HFvA%8vrsSt+;q)Y!P~6Iwtf1w zYrHOs=zeIC#}%8KES@V7Zze(Q^;2Vvy4Z#Pmu{L^2fmkeu^hg_38t)2LBCAu>T$o@ z4^Nu)3}#Wp9HLN}IKe-n1PS@@V)R0Mf`|+p=_|f9aGxTUcFDS}Mt_1aMrFYdToS>1 zapIBYTHua{EHV4}r&Y3j<5-A%S`m4PT}$ z-Wn^CKYenMJkk3oyy%W>xPQ0xb;KQ-P`jhytU6svJ9zu%tm7SLBCImJbAKU<1f+N+ zbmnaMqi#f9lGsEr{oJaVz0%#LE^8fH+6D{z(qAqmln|(oc)sEn-;!lM1dmB4@eCjw-?rdPo5eeU}HH^S$?a)bV-v)97a;@et7-bB~te-X8n zG`|U-=w8e#25T3POv|%X*Z9b@`S~g};2$!-J%HuZOsV?AY9$*PlP%0@6Bn^Mbk1S+ z619#a!b0Y-(t9vWadg`a2Qj|lUeoK=i2DKb8C*wPN9|X4UR+1{-XC{ESwFM{w1!~w zF%f!9>CzGURB?`C7RfS}VrFu5B`60SzY8Az)_h&LVEjhX>q_)yhJrkdBqoiSn1$<1 zAVXO`9d=3GP(Lnd-|%ah9%@!XNKC!ClM{zlV=-U1()1=|iz#G_vt54E!BUA-2BAwq z`h#@Ubb1Pqnnz|u<4PID>5P#?aZivTHHX8yI?qGNqN~<{j2k=KlE2xZZ1$U&3fU`r z2YwgRxhJg$>6A3fFJ|6ie2k0nExKNM+zssp2iS9+TJ^8;_44G9n4VA|6%DVQryHbolb3PTT{0TZEa%OJgOI_QFx)gx*|!5bOIVV+nEGk z+$9DmF-VXvtOS;cK$|aWJ?3(#63i7=a~K>nwxC2`Fyy0!+Wbe!t>31Zb81fdrbpS zPkja!qJgHD9T)bVSlu|%^tOFO8d(M(BMXr=CO;#IDwg_-e*yi1Wg3#N61iuZl%cieXl%|GfIJ~sa z-VM{An_~gs-J30VmvSD#>7;qV7(E$i-z|hw6u;Ka*Tlu2f^3(&Yf$MVo2rZi6MrY| zzkm>jV+iv&!FDTI&IfUM#R$ZN#0Vz8wLSE+-&3~fXeP_14^&z9pp6lwv&krqU4W_5 zz)6yj$h+XXZ0uZNVBp?kH1ftIZo?d|*pDCAgIO<=E>U_6rWCt0e!<)*GFI|?hoJ)A zmWbkZPF?=~w5`x^H>9!cTYpnU4tY?-9o{7lHdu)3yEN<9gegAdEhZ*XxY{jcHG?4L zxYA1_g{{b5K+1cX-VdEkwofYi)4zjK|Lx!I1{XvMSKP!uI@;x2Kjg-|%mz?w8?4PS zG4`UwvXX7P)t8Rv=+68J62>2}BR?ao^d&=r%6B|?n@3og^4o_m||0{=Ve>^=AA*G{n6StSfs0#96Ea zjgFsUsrNPxV}Goz5f8lD$?`Z4MN&lKBj^#)nznVM)r%zwpOj}5qF)px=MnH2c13V* z@}iz)Mc#{}Uu3@~&WNnO4a%LaKMB!QlP1TgGm^42D|QNG9f?kB-%P4lBT8MLTr|Oj zI~?s?QP$j$%9cN2_)kC7`EDOYC4JYA4me0YxJ>VV^|cDveS(MIiad{aYrWDEg_0qX zznlQt5pfB2qV!{uAs>P|=7mj2#VUFD?U^%G`oB*_RW}Aw4*C3_wLj~0PGD?Mor;#`o!GoC? zzOBj*0XS=+VW)KGtd?tiV5;@{f>QDgb$oEbKZ{|v5+&0`d};esI*&4!oF|>HVsSa& zUs!$^S6lRU-^pTkV>Gnu*tyPhul!7BxQ+`=x(N&AmLNMSla<(OSEEi&?lCuW)hww4 zrN&G~n#R(y)YPF=zCAT1jk(B{t<1lG^K(#~trfJMur>6Wuo^b?^=gyLA-5rLUh~?z z1epwaJnOt*rpVMbHp$up7^?Fcq&RKbX6OiS%Xw%Aeu8+sgJNafjh^eXicIO1X(fC* zwyES11Mb9}E`lyN#I7(ObS6w8B`%BHm}5F|T)5dnQhkiTfCLHvSK=(gV`drO<#Jhy z?Lhgyt5?eOs+n-2s`c=6OLqF|DUf^_y-T?9PV<5})q*$?E(!ZY#F5iH5QF9;GWovI zVFy4v4k`+g=XUr|?lgcBdoVu`J+qqD&mR@>FJwee@DgOYn%m4+lh`*Syd*W#I>~_0 zhEsXFxL2IbTi3PX_kp6EP}KoBIT*iB>V?vra(I&=8Es4rZ8V7DRa_vc?Ql01YHhQ{ zj-&>2Oq~r#xLJ#tE<`YJ+}BR_i0zRl%}S5jl&ce1LY(QzTc&p%b(&-wdD;m@hNR2Q zWUy1Pe#8;?(E^s1JfQ6-ko=8CvZLJ5tkUbXbNYlDc_g)CEa(uUSKxGhqLOa>0*C*T_ znJ~_d6$qxj?@qsGh@c&knw}m~ES~ACO@etuXgB3jc!(aX!0}RNhI8kL8GX)DSbyWMZ(IZ5Oy6ABp42mq3u;NPLh2vAJTY{Bf<*tE0L@M4 zKlKIZv2R1~r`t57N!DNA%ahxJum&M%y@;!sw`|*X?kc&gWdX&S#)W_%a1sP;bs>5jL-*%SjR>mY87s z$&M$FEv~H=FgIf6V>8v( z3zqC>8yD(QZ(MIm{v2~<6{#D|R!y3!U}?5jjcfQK4GW6qdvz#`k-w3rJb5d2TX@;&h*OG)=v{u2XATu zu2`9-tQN7N2qGKYiv}+LP)v0vGk;i>tyQumX`Con6@wLVS6?lIN^lx(6CFaI57ql( z(1G=1BQsDO!WTMfEYg0d=<-Pi-h@S!fhyG)>EM{NZ!X4o=LX@w4=%rdb>XXj_A9`M z;HtA{;a^2}ComSw>xdRGt+h>%ShY=TH^C%|o1;_6h0|H2JjPga} z6M5jD{e81w-tiCWBA(gngIm}Is%A*T+NQk>Xnl)J=kB{nL-yo3`-ZRMZGfl9$>Twu zf$`#L#d!#U2Lk<4XdM|0jl6pMeXJnqR;T_xv6(;f%U1HDsqm7;9#1O}iRqCeQbC}E zV&dVu$&n)pVd!Q0qa?`hMs{Ytg>1k;{VkoKA#4~I@!QMWt|I6eBJ2s3y;?Kb{TsvNGJWMwV?Em|EmG|K2S{F$mFlO;5o%R+MZvERt zKtrH;-4y4b45}KGWk^X3Y8sSfM0w&qY&8njA;a>(?};Yw&pcWBid%EY!#dzyd*gk> z^I~0aBjo7BFwN@El&*v+O=~V|s$ry|gt=ro^(PXkAL31%RoFXO^%l%Ip;eBx$^%vL z=Ift|JNqB?<9XlPU+2FSVE?-Pss5j~|9=5M1C`XRu@vDm^{uQu(23G6px} z*li(+I)2uiHO`yHH-=&2<1;^!Z0s%%Yk?g_^7!;iZ%2yo0?Elj+>A%_d)Pavs=I8k z&yG7&-(^@IrmG%Yd4E2~hb$h8#>v&k=G)h&__RzOf~KWeSk<&l9O`FqOUn5*#wip+ zrg5-uNX{Z}%$;;fWkG~JECGj-ca!<3J+V)CZA-g0^izD>Ml>C`HGvG=1#@cb{-Jz@;Xqlr)?<*-u?IbHb9KT(zu$m^Z96a`6p*D2<&Yq&YR6>9op} zHARPi@BEG`tYD!xtSXm%9it{=meG#MQ2Ek*gMApjP!GjV6@RyVm#M}4+%TTiArqiZ z=!Yp#8=hr#NGA|4ur{>2J*h3zHmWLx9fn`2I5Z&w?}BLd<&ngS`_aS@;3@rp3a6@t zV*srhrhB)3(d9}-ULhe|sPk)?g>=Dz_|G6oZqp}r$D&g^9C-oame*eH8W^!Tb&({Qfb#31(m z#GAT=mnPqDp$CW@hzVYw3*EN!07Q<;30%0N_f>na9$dZp$I|?0RK~Wxg32MQ!xEKt z6eueCOqJMw7O9_zHi!23cM;(|C9w_<{seQGc9dbBW`rH}Vx9jHSp5^SmMK86j@LHy z&_^Nk(DywABs)NmWI7-DL!0CC2S_`GzM-mp6fsSWj=XM1;i#P?6@Nvzy;k;3S8q~5 z=v-9IB9OKFUrQ2&G>A1Oq(*ZRizSKW%9LtN2Hm#G-7jG63vHc)1{y!(ysmuFPS}sWo&+Dr ziYs4G|41k<0!GT7z9S03e`^N*Yeb>_e~Kvoy@be6)Rf0EMD~)Z75!a~FZ4>BU*J)X zpOYV`MpkbEkv)^ZpN$;0NUaO82GQ2Mf{Y#f)m@>*F_*TE_7^n>YO&)oGw_?;` zj99u6M#o==)`vF5-{U6Z7+$MzgsQBjpN zO_M6kt}`kuugD*JB=pqr2%y604LnlW)X-#-@SI#6pDi`4s&nk7RlcWs9EJCrOqD(D z>>qdRV@#Lr6@CXN`|29$v2#0u5L;E7ftXP3Od+qLIeScR)G&|~UmP_baGhWld`t*S zkT4l$ZLMGfNXjr2maLuRDv_Uf%suU%wmxNmw8MeN`dzLYszBGpP>3UXw<}N6iR}SY z5w2{F;ssiP&~QeQEY(>uR6D9C!TK<@G0{i|UTpj|zhz;Rr#hRp=P1-;O^lbAl3}sd zrg89@4Wmw4S&T&b^_A_P!K;LlLL5@1Avw|m5Ia&k^g}G=D{K4o2qfxRFlB#tF z@2i5cNn#|8x359^DkMjTn{QPSfi~&`j7CH%)B&m}_RV>ETEm+7Q2eNY-$N$h0SfKm zPXX(sL{YFLEIW$|^W*%dkGBF`QyyMG>P?o(2cQ0jAzT7 zM7=LAjexRT?30hGFq?N;fy}KIw8w$D-2kYhjZpVl0&y6RLY%f{8GSUawVzXAQ<;Pp zJS+$E&$LxCL0J*V!@UMUc&O7o-eeWqM%mX{aMr)}`=E9*+mUz~$=`bAV!G(kb*|q&3z9Z!yk1v9U~SEjvZNr&9s**fnO^L^0u9htsgn>=~I2 zxK8favyEIHQKG>=**)BdBFekUMPfTJ@wCm%k5-^X8boqU;V+JA65X%?jTV8EMdv)j z3BMFji{)bypByIsSz34VDeTV;aIFsKtr)0Qf2{KOR6;8(!8{~*rO+)-nS;Pi3*`dl z5x%DgKvl>5hk05+S1b@u55`wyewOMNZmOMVL2n70;XR$4@9Bd0LfKzxjAEOK7K7?u zA$woh!vyOYN|D*D`=Ljh@{Yv^^jrz=qopCdh^H*hgD#g^Z-(8eXOMfiN<`fd4|GDF z+I*c%AQxUfO8H;VW`ZfH>q;UmIq1?90|*}I1_{)3r12Z&Qcm%Nu(Uq}-UmyUsqPvT z&wYE(w zt{wyHIedrwKtA?~>w4YfRXRR8i8&0)8P#$*u*G5|RL32{(-QyU3G99GwuJF?~wk#M5q5~d^ISW zyDKc9cs;F8j_(`T1?Le#Li8FSMr5mqAom2AApiX7`?oAbLMpDNZ=99ES4Q0er7C+- z+_Ga=vprAgZ;xAv*n*m+XXa}T-fK?Q>L>V`^MyUV#85zg5wrB8n)y}TQ`@4J`9;H% z$Lqt4^AE~_BwayUZS<$TpZHzi`gFL+x8nF+h_^8@!GW9v`!lq-eS7?{f1g6T$yvQ; z-RUEWuIpor12`%6*91R%I}rvw z+R21JSG(0gVS{Z!FBxq5y90c;&{<32&nZ@41nJV0Y2WBEIJPpRkRhFVy6FOWrJXEj zEwNnGd$!UhNy4z(ekY2eD3iP7U8o~_Y^>m`=NMU%>sMi|(U}~vkTwhEcv&*1{IwR{ zm!EY8^BkB_;LEYJq;JckP^=#cZ^_xI?61^Y3Ymzd7(x`-(0|Eztj$E3XVpV%qFM-Z zOV|363%35P4R4tRYAC>*NM;uB`^X9H?!=O`-zzYN!s<^eJD}y5dW#pA(k4o!_hbh5 zgR~7NWHS5C`;C&Elg;Y#9;4|{^w5A>5=OA;>3(FCmp*L*Zl)vi;$HbT2j{rtpJML7 zz?ln%-|XOQCkVQq5_2f1l1E{;zafixPM&L0D=#ET!!X)pmK{7(v`x#6)65P@=S8aWwj-tbs{=8id3Ma~DZ-M5z3 z46@yZswo>7cPk$2xw;+$W_gKxdXSW16-_EpQqTjZF#{YPjIl8lExp7oVgrTTq$x3* z-f?se?dteAl?n!&-+b~d@%c-_K*aQfrtWrjUaxL)+)HdvXvRbIc7m&g6}SaV8nT27 zzh$wxWC^R1C(9T5`pSLM?m{JWS<|*^^j3EjKt*7}OdDJPF_33QWgW(VQ~$mKhJES6 zI*iOLVYkE9{z*aQRIOt*9v7Ss{Gi*p+*-H|dUwsnW>dC~J242r^93@KRa z(WrxXCu=b?FH2ReEV3UYRg;FGUgoelSn5X_-K%-WCn>b3n5r8Q~htv zqy1L_8sYh&l((SVv^V&-B;38WNL@oiB-}kkBw^?b*I-ClBd|^Brn+7$;;vD z$a)N!{ekhDh-F{-(`*lrB|<_R@uLw5?#ulZ&622}EB#*U1MHkwVC3UmbQRLD(j>83 z@l)cTRLL_s?Cta(kavYzji!vT`T>~a<#v~+$K##0nPB7FDMhVS!GQQoFC~qZXq>^c zR@c*&+r^j>#g<(X_k2>tKc{c`^J$BcgeR3&WMa_q8kq5kF%V_uiDyx!<_VvjxgtqJ zsR}tX^4pPhMnxH_Jc7{L_0p%Z`3jdB&4CO(Y(8_z8cMzCBIAqmGPd(%MoFua9SVx% z7W5|(DdK6=!7X1`mXDEs!)0XbmJc*E;vS|isMjx;fnXOQH;(P_-?PGGSkpS{Mo?OK zoPbXqA#v05vZir)2e##LR3=w~I9uluku{{mIw{<@uFPTQ zfj0h751|@2ssL%=}Os;6_TYe38czGNd_{M$tyRA zW~c#CZ-_*&$ou|ZJj7Xm%EJBeH7T;yOIz-Q*gwNK){m)lWu^o=vC8n)S?X7CVCFsvq)L)fR z+$8P!?FeVb>Aa4HwU>On8!Arp5puPde~%4NOk?7L3-74*yGx-Zv&O97h@q22v3C(+ z2rKpBlR^S^6%mtM9NP?uun6^ts+X@tHn3MvF1IOi*TpCR>m^yve4~5YP7eByZ=Q`E*%fNG3mn)L^dUUi`AdS528|-*O7%ZZ_MR$C zbZC|7*_v`i-#&vYueyxlGQ>W#PwGR#9CrKt*>!hyGw5yQN#!_m<;k?nLCUN5#@&pX zPeLM<4D1}D6gk+;R38?xMWEFq0S6%@IGy=*0~|Ua%ubEZpyj_)yt_+Dp`cYF4F-Ks zNT6U<4hQ8uh7foLmiC`Uv%$HIn@6UE?CZM?0jSNixggXP8!iN47~^|Zcz!v!!h&3W zBoBYY&-5d<_d-g3sZ?fmlRpqqD@*H!yJ12+K+m44?$6st?A|Ts!QLKx06mtW*><@> zz?CW6@OFgxpE9*q!tVU3x`&&`dY0%2?J90^sL$fBZ~@FXMa?V!JtHKR^V9!!H{4EE z7Wc=#GbQVz%}f7MRaE)u>K}Qr%zQ^8|F(sG#cAK+Jb)$dZtZLTdk5I^!BSZEt(^ zn0!25z(Fc5)A(>wjZM*@lH=1}6Z3j*W=*m?@+u*#8Mr_y&f*myUUWBPBGD+N(>>ph zN&q;WAQ2VsQJ+fIGnJ3+>9M^J0%K0WFa@4oU;QdJg_MP|?|b6(*hE@QFMY(9c#u_X zv7$1y7_d^-r|`;W3Ul!1t|RzR$x@AP`-IrT*d6Dpt1UXsfArvY=l+N~C)*WX%3Me% ztSO=90)@*fnZ3zM0;y@uZ%iF=2!-9n1(c7Z5#$>)L9AmpwpgI9kp>75|TA)i` z#0z)C?m0<>_oiSdEH#iou^Pfrd#Pxi15p>J^}NCBd-qy7@;gSTSK9sPIENM#b3s6p z&i8yJ%h^Y34{x90%0c)9GUcd$M4vq7@e{f_ec?9KJT{w-Hhh5Fbottk{H%&Q_-XZN zwZ6B@!Or#EQuve`|E^HU8QJB_{)YyiC;sM?fCnn)Kin>Aq2E-*Ab3BxA5z{}G0`j8;C?@gsGJN5`+9g(j4oV3Q3gcq} z7^g{?L<@Wb($Sm{)(f$aL9TX5*M2bnofgt3&(r!m$F_v!QtpAlQkue zivVe3Cm2znM9`kwERAhc$cqCAawftK&f)Y_ZiZZp-&8b)8aEZ*)WY#-)e8`=J*u#7 zl*rl|6QN%8kL^O~->AImMN)Em2MaF(1X*)unh$DR3=FNG4*%YcZXZ%}lBs8c^BKdZ z+S1^u&1KXi2sexggkBb^u+Ju4LRgzZT1m4A5xUq35dpjBYQ}CTnk9Le_+x>ivq zlf8o0oavY&v**h#^HFReqY*PtUksmPAZ5-Nqsh|(xm=33d*#R zyefXW2@0}sU1vQUB7YF1!Srtu%F|)!`LTq9dq4}2HDu$6Nt|hQ4@RUE6R-xALR6Gc z#e{VX-8mz@d|3$Q#f3M*RU)Xg<_7CW5vA~}ge^i)D)g^)pk1BFOVYo)x9mi2-=ftY z=1kU_M%at}foAGeu2fMPYgp&K+|kxAi`$Mph17p7)f!wW@ie^`S|_su=k;VL;9ntcCobihE$U_~wUlgoDrylT+ zn8A$}iKEi&Q6P__KX$&);d7q#BEhT0H&^{oizK&asIF#NM2RB0xOeyG&gEG?i3a@$ zg~hlxenn5&SawFJ%kr^Yw?z;ul7$wri4wNw^joN8F3y70)r&B5?V+u@gnsOfhSb%j zoT*nEzgm{E4^fJy{W)#C8*0Ep6O~-y=4v3WR(~nvPeqp@<&f7(KUoECm(^r>B1S|T zP~NFThs+ z7iph<9peyGO^PC5d7xenQeBAs5g`#u7lw4$FKgif_qTfGUmiiw;t0%uVTeO!vbYvS z2aJH)>#>4s^WW*tN-zkU-?QOv>W*aTkjRZ514vjW1BGnTVeD~^`l#nCW6hNJB8e%m z7UFLW@-W1X2%yjmUKDc^0K9y`E75Ma10SBRySyanDY=%~OR&;1U{`UD1F@X9l7foS1u)7mS$+(P+ z$(`g}m)Yhjv^lY~zi~dg;qiT!c5CHyXr-0r%utxOJ}$fKthIU0?E(xD0CDLbJYvNq zrZiTA?W$}za!2lp4=L_?chEXJ$LPg1W?)NNa_$n9E~#oKmY5#WJ4hc2!zI(%Lr)>VTUPzC>sJI^(mO$?MKxM+m0pv8x&+)TpI8mKVmhw0tRR!RZ zgm{IRya?R%cRPIm4%Gzf5fwthSj;~8Ler+5ql~idhEoMVx600$kAf`+ro1eAyB}0f zYW=qf1^OgFqiz=5^eS1PmCE}s4z?T@Oa59-Hk_FgGWZEU%B&K`tfko`G(-vdFIS5$ z+$ir(-oIc);z?%D#_+X>8fj}@EakGpCHe!NIz^DG6b4*7}v=qTErw0jSR)=ZtGMdLyVXRQV&9^^`jgK zhuIAl<+0O|;z;Fz(xGn0VozXWjj?@EA~Hybq~#M!W1-(k4i`t0?s{1R5z)`dQqReL zDP*+0JhpRz;33)BqZif*Sjn2iKe?5=2j3er=sW-Z*=g5|u!^GCn!j0B2HZl9-5I)CRjpeyRi8pfxU5qZu92;p+c}W zNHmfW`=;ZlDl(gXP&NU;%iNO zo-UmqE{;_j=HYIdT3qb;uoI6=KlY?{Eu6y&XXaS9xc&8bs3J7{X15wK(2yVMqM+AaP1o2p`<;3c8z)jwGv)^361R;I$4lp z%kBvRXeTf4P-)jLD%T{)4+^*;kbx~7GwnC1wI7lU>pXk~P~Z0{9k^!! zo3~n}fH@YhaN%9pIYZ36pG)|G$4qXbmJp5Uff9YEe!~YqaU2a}SJ4%&hE+Vb{q@VpQG;7J$ZN$6zA@?Cxi{}Yk%`L}u-_L*!Y2pR z3s&L^7Rs%%=)Up}CqmM&H9VJ3taeU}ciX5umXiJQ(A|&&j*nY0ukJf3g~(pw=?%Gv zc0rYBY?dAv*0OPmIRnoFZ2V3Q+v9ix4sqAYuggPHrJMX(t-yDNtCTM>b+-pLUXKC#Hh_GHy?D?6`@2{$}sF_km+Ilf8 zyE26`k~Zd0u?DjJg~Hz1R66C8j8ZX<{7X4oP9D)n3e4D*6xG)L6M;0TR%ZWoHBCU2 zTtS|~p(2=-)vqD;PT#)rl0Dkp-m@eoU|f>4hvbvPf%AhfVTP2bU%}hiDR?;V^TKyf zJrJGP?csM$yeR5QEuk$%Ofiz?f~-b8{Uqc|lLbzeQS=SzhmgNo(38mWl6LYvWsvoG zCRYkeOlK}a0hxuW;GRfEGcCUu-F*%dGQfHPu+uMw6C_m(JWKl-sa$I3IY_nfr|7Zdb_Hvja!Tk7fgZE!KPyZ@y|M#4y z|6OJM3+JgqN!?!loAcxpAD>u`>H?LQzA8UhJ5gRDvVggW1?-tZ0#vU8VaWoJ zFg{IT`;@^BxVN(s5&s^wQ07|te5uaMT2EtIEGm`MOq+(au1s=6EW z9uQikt!$dO{u=Rlkd}2!2oiYrxPLG?hOL_ws17OChP?#{S}3nCHC85DA5CT&#!$Fz z#e@Q54RQ2TpMAfb4oM%t5wP!SUDN}wXJiKPeW z9ZRt!B4|IYQH`PC^fChZ?$w*&p444<`_&LS2tcbxdW{fF5!9m#wl#rDPZI*6 zAOGA_kA(j^exD->?6qUR|7sqt##F4bp9v(uPUb928HSl*k=8xvYAuem&{K{NEzlWu zaS9TGF*G*5(9_bD-<|y2Vng&AfoLU(eYqO4@CMsb0fM)b27_gHhkX?_ zn;jwBBSS{HM0?H#4j~MmJKdyL)l^aite&Kui$@pt(0;Nhi&@ek`pFTvk~uE0{>Dvw zGEE&6EX{w*3?tnN!-5g)`=-6X(59H}IRnt6UNZrQySM?e8`pBzORVBI>$*eG+cO3Z zTFJQ6(FRVl*^OmUZx!VTSR9b^yaUgVy8|!W9poGt=(_`_s<&yd>U>v!UnSpV|?rwU@9hmJBQt1jgu zWXQa1jl`l|D1#jY+eLfgQ-eJ(|tfce7P7jB>MjdJICnC zqBUz*#YV-pZQIF-b7I>@#kOtRwyILGZQH5X$(O#}-{{*t`gZ@==kGpi?6v1!>s|AG z=BsfDeHV2~UQ2(I7_L*Twy z?t9KFu)kz7f6;jE**yNj!`{)Y_)2VU89@pBb$KQkyhiy%e#R=jhK+ba1HP5WXYK<2 z;zrLc{!P>Sz^*TT`~HGp07+9)hti4Nhp8Wp?^m#Qiwpc`VaN=3}V29rEu1pcG5$XzEN zAL$F<{8?LTd4lCYf%N6AMzcX}iabfVUXOI|1d915&cDfNgrZE_?bn&=%2(m)KP{yH zT~7bChwPu_^q)Lr)v6bE$|hgr_U6`$)lLl93mB33?z)<@Wmu5WZ)k(-gUdhh;K0sT z$6U>pCLhq*Sy0}Jm=b7b2uX$C1~E{W9J1s4`)fbMe3(BboftOOEz<_+`KH>BxQ=*x zohGkNHon|sH#C0y%R*ftEJ8tysxl6${cT~;$VbMHU16}q^bu|QLnha`cYD%EE^>dd zR?>esOvIiE1r6Nr+k$;Dh4-%mzjj@6kZ}lvD1KPKY?#KMm@0*|_T9p^$lzaeXpH6# zGuf)sH8Mw;Xv|i=+VXd^6S2EWZ?Kd_{-hUtxn1O7C8ofduF4&lHkf|u zXGY*oZ^t5D7b1ZZR$bk~3%O5*d$_+?4n< zLhd+K#laa4WrCZyj7RoyIE;A-Cm~j+ZMTs+;LiunARfZak!PrPzj?sjMI58d#Nxx_ zt?h^IUoIl~w!iB46os8Qp@O0x!g+;p!OLdKaBDO)U^Q+_EdJtk^x21})nEQ4K?u*g zgb^DljqjNtGsJaW)WJOuB6W15uwaY%6Y&rBLpLf;xm7o2S;)C-$@6C$RQ-Jd%faA1 zIRG$4Me5i(pS)1FXBVg@KG|)M7+(D)u$H~M+pTzSZLOYQr9>?VTp`Mf~pVYFk@4$v@V7F-Hv z;&P>U9oqm6O_!Sc1j3os#m#-XLQ_6vKHjA6@%bUWBcJ38c#6J>FD%Al5_z6g5_uh; zG|ILTrd^PyC4+bWR_YUU&Z~fm+%47F4t$z7+ITmxuv@DDvO@e37`@mk+N;dg(QDac zCv$gFF$1~6MDbFDgO}JSf|&Cwjx`@LcIS~lcI@19o zUtoi_Df&viGQF=8Z08-Jc)%vdC1jgL510E<(CRSjU#OgC*}o-jAbm>Fe7bdW=c zkZ)5SYv!7%CuZbU1Cs#gA(JwFN~2LG(*A{k?To-n>$BBf`&QfzQkx zoIHu7MvsQAH{hlOcAy~ko2|Ta@{XE$85k-dbu-M5WPLUT4vhi2=c|Bnm0RygxH3 z%A$`yJgJo&^63jWAd>YOloi*Z7m_VfnZqk#;Ahoh!jI3^xkh;)*G*|mi5P;Qwje#@ zP1v~DX=C>&^`XRW^7;q2gfe)k^}~I~Dt5st4d{|1Qn7ZT46rEXF?sL2Gu^~W?{ykp zz&r642XjbR56~$kfd*ELIW~rmrN9+$m_XZ}*aay;nI*e2&!Cs1vP?~p_mxtp5ojxO z&dg)!kEp@@M%l!-sHUf^#J7O?mjthFz4A(bEcr$e=D8HC>j!cV_IJ1vaRiw}<|eu=cwOUb1A#wbaw8GDpq=dLLApQ(kOVp|u- z9mf+fmnhzd_sqH*yzy7;0ONTvU?4J?#LNI2KvowBy_w8iqo(-!kF=cZohDe5udbhu z|I+pI-}U=nJNEurzyF(K?>{2W2X)W;t)u@`Yb#0jk%i;!3g-*jYA0XzmvxXGuA`9eH z@qZLK9^66dJBH53kTB-K7S%&~7s4f(=B$;|O@)f2&mfV@K$65UrM{?(SJP?D85@)x z!gL!H7vEbIqsU=iZm@HnZ;CQ%F+GrQa%~CzBWu+k=PV_+Q#A25=mv%JLDDrfjW;1} z5@nN(i*3$EH)lZ+wZO3b{P{UtDa!$eloYcbCZs+)k&`3rx?C4)@dvAg_G0ox(^Rlg zmdjIIj9$DzSIp}P(LWwqHN=#Pt- zdlHn+f!?i(aGEy8As59!pxElCOE-|{a(m(x5H8CW_y{{JD&4cx)d~_a36SfU_6!xm z2Tf&tEG{>`&wJdoP7}~s96!7MBhFu2Y^+3DuvMRK-*@mYT*Kn492CwUW#IR4@Iafzf#JiJA0iht9(nrOw_zL*H;q)B%t{1Lyh zqwJ?f$8MhzUG)wX{OJ!mqmGQ~4WZX`P4y;5NsNJpjD$s7AZ%=coPV4`j4t6TF7|ZU zs-OWKe8n$l!uo?!*t@UXYq|f`R0U){O4?Egt=W*RIX`4|M$mIw)U!VIfk+7N4Y!S{ zx5j>=g71*Z^WuSo=ghwz@c4JkT%J_v7D?nHQM;FdsxRBO)sre zmBvRTstEI=eTHg&1}V`OyYm<>N^D^S=c*uS9;DD z_zxZHtPvnn(*k4D0>{RGqaALe9BwOH=TFrI@|(TY79`i~;ClPhdWVDP3~_G!0(OLJ z-JxAhgY^{FV!diTh1(WNy8Xr3FnYV%v-40m)TbzXP6)&>LC|G{?8Hh{_1bgy9uK`+ z3V?XzBl<{bF2sNOhjzYol22}at$j8Bi`)6XYv;fA6aJHS{=1*BTTR0rR}GD?)=Zo) zlXNYi>Ve!YoQ>s&BIyc}*x>Jn<#@x9A1z&!gaA+0guy7&q;y4EAwncV#bq~!$tGTjGua#h7Lw}y2_^DTiM7^|2a*-|)iTTNP=ZN`@b{h@8Ag2H?{wRp+((igm4uky~!TN4g zI(0J70m4l@sWKQ3rWb}xI;;+I`NZkDyy>!;oV7^Hxf5$-J=1Q++oDrF@1QUhTKSH4 z{A#o-?X!wJJn0X}ZAy$LQ-XTE0QlfI0HVv*8XF<3PjDUW`3Vl@@mX>*q5Nw4h>3J3 zs#pD!BKYU#o4sa!2SuU`K^Cq+Iz8O7v#0@3p5MeQb~QL^d_&CFf>v2&c{On~w$)hr zqbiz*=1I9QW*M1X5@Ts}qVrT^Q~ZcsBdP;#x< z*)3*<%F&HHSNS-CZZGJmp(~8@A$GrM$7YNfAb~cAO6vCx?wPe&LB%h{KX>=$Y}&>; zC>c}CQfL%}fhC*zuutLiXMo+dov(#=sDjxkF7k&LgY+W}rgAmv9C692XyIQp;~BNI zMMvq{;g`b!q;SRWBA(Qh)AqMEFk0v=^SPy^hT$tpC@?sw%R|44Z`u>GN6@cqya#vj0NAc}}2rVoEg2|H0k`z`d=B3mB{VwfE9F^z#kg_M-PRs!d1Hg+i(D>wvIyI7WB-TYZhat8`6N*TJ zCk8`-`a{OUeocEHe8x?(X)MedmBD~L!U3v#<1T2VN{5rzRGu-YzF5bhN0PRuxV3|T zRv>eyjXtJ`1(3Gqr@Sqb} zz4_KYkVkYTw>(^SbeXMRVVld@+AF`4U1K7Q2pzyr-MbH>lMG@MJ!!^{wkQ ze~U!57|g?5TvaN1d>yd@IYQFGm;6Z&&7 zat)5Ndx;0;Dpne6C6x7!5wurD9P#Nw4fD zyj(im9OUFY^yz;nN3~0@0Uja!)mc1&J9f@c{Uv2K%$)5kUgcNhGRsQs40AXm3)M*IK&v2?=quH}gL9C zp?wMD#)Ciq;LnZ`Z;>q zN(6kO{QeBy{*?afOY+o<@+Rg)=56dD8b%x8JA5>(Uahw`_yIL#h~`k z_#Qa#CaI{ErOph^W+fgT3qunSpdGl~rUK$9_4h?)B!wWvhDtw}PKr3csLS=d60U0rJ#tABIwA19$z)?e8hhirk=5B%5kKNt} zU4EFt+GlibBw{EW#d+*~y+RnKKv9D#%E0N9WUW#)+ictRU=4AE^7#beLrIfB8EU5a zpGC}3$QXS+I7nBk-~{G{Ar93#0bZfqWBq*2Vy@}oCH=rEE%PdTv=E@__+3=`=Dh)` zQ4Z5k?=V{x0f024M*mNMd`ErFxcc(~(I3P#qjR0jAsRvK_VRk!)n)R>lKSa1bB)3A zyh&d??Z!F!?L{kd%&xxAyUd_y)B2M%${wx(fl{z0=E#X#uRYRFSFmUsbqiL*YUDqv zBr&EWiXk-%E|kM-Cip1W8=#bJw%VlZ4zGgByHsFrshK{0+g#_CyL4r0xR!@bhrCVl z^WO6u5nA)_^H%*Vr{7QM@m|ommjnD9C;)}GEzC5$%fajpJu`gvL6u>yCq?=C z*_ZV~8lYQ8zYswlBj*2cErZ;fuo5fwD%xK<+fA}s3w$GwsBX*OZJqtpL0$Xn8GegM z{ZY0nuh_Ix5g}0d1Q^g$c>@YPg&AN^GJ(6`Wgnq|y;fW32>l5&I5oO;Qtt3p%^YP)pY4KLCT^fle?{A|h+&~Roh_u5S*X`cG9eJI zb`YTWCyUZDv8RL%fXWslR(^k0Qn-dvjJMT^*jZV4d%`nv@;bNPFW3y9+X6S2FO_`K z#8jFI{)gFu`1jI5Ra8LrnO}TqfJ64qMcH>%p*8Lm`$xh}v`+5*y;mDeBcJJ(!`YCO zW&m9&p*{l=8QmxwawKtD|F1s&2r*>XSFu9QYZ5B0%oIORcmHve>Uvf}hD3m?DP3<5 zd2w95^&Ei{TTF0`doy~@JuF?;HF94LycMxgdW>mW)y2gbIDIkJs7z?E36z5WKANR0 zm>Q%F!p~;k*$j@-cGsboI(@4EizPCzZWu9E7VLJrR>O;9RU{CCJUF$6O^fQ;NzxwHDuM`?SkTc1Xc5% z6UO?WL^sNJ=lo0oh8z(EYJ8Z7x<_KIV4E^4w9(HpuxSx26Iknf3z`R|NKf&%?~Mdd z)Q+0#4`jW3+pP?*7eaUKbg(&Rs8kkP28i)|p)^olI?kA`kZuAeQ7JAPJZX`~M*W(OnR1(K@LSg90y5(UCLkxFdeZM21h9aRLy*u|c;bft-yNE}n?p`S=u=2-?@e6!rVNjY@Ze^+nHFPygr-KYI{({@ZBT}w@gV3Rvz%0=D<-&ZcYV@o`h``TR5Qb%foq3Syb5iyBpWaKxK9GaTb9826l0x(bw8K&pgVpw z^!YyQbW9}N4F=%qZ2cs2{hf^CSW9x6zmG0T(UwrYR!L@>KVWX&kaxhPA5SDONN0T= z={>3)4q;|3ZR`qZQVF(wmCKTvWciHbk(n5=HrXxcXb(vMQG=5Evk6t=c|f(UKIKoANhOZ9+%a3I(l#Subdh87BYcUCpA%p8Qm((8r>5jVg-|Vf@TrC3ykp}~5wZwNX7k#sIF2o1=k;Ew6-Qv4*P+qqqsAP1-7^Rh)Z`E!w zitf5epuaRax83g*Y2HYx?fD-xhsCL=Z*N~9mkOl+?W_8);qd?TDUFWn zl>5Vo8uF>US|aP8G&TqUQVff%!{Sd&N=lE$Sf4&GrQGa#(Dtj5>F+mQ)Ll~1F#ocN z?WvfLNN@h$O@VJ&23x;t0{Mg~7Dpoh2SF(WVu2I^f8JK`UY6=}Ak&lWT$$uRt}O#q zZgS%%lkmh1h`7s9HpZ4=k|&MH&P!%>kBhOLmf{7}4`86X^@bRUacdv!QGOdONiL5h zCyT4wKykRJ@yaIvMkGj7a?Du}&tN_V9sXQ&xX)zx)5j`jWaa*DbRf8!?Z08p9NA?= zhIQvgV+gSS>#I&hbO)=*xF-bWHl;jii2?c2kgB>$h*Eegh_5{?G;<`zayU%nBh ze=qlVN6El^Wg>`HvSCMm9{`m^uff|zd)pC4<^9c>{uY)Phb3U>q-ETct-l6z!{v$)m6dY1*WhKayk&pb|fE!BS@X+*VcV zCWMAc0&DJjbfz{H=ES@I0c*4@wtp=98rk;O^{>ay{C|&K+`!62#LmXv&er7rXAvaF z3(0^8VTNpJsHw5bvNSX>hl4~;!*K`Ah%v#1=l$paD~#bRZfxjGd6aw4B81|;1AT#g zkGh;`tqcv27lpv??(p15LO}JH<=_` z!xYr(zyBy-s#{^SI(<#&ivM*w|Bt}8|2mx|-R(^r0T#Aa|C!9IWMen0fa+trHWRR6 ze?AdD`Bh6AJHHFm(@vp<5+=09N(Aer#b`5fOG!y$-tfH%G$ly+H-x)D`%haU6t;}7 ztxne+*OdF@$-C?QGmT&AvgEJ6ir}DdNa$nr=(+1@Veu6S@3nyUngv8Rt7nkl z;@cjmidj!ByR`iQ+$rr3!urUZR82u#AriZC>5GQ$kN~U&blG zt_biPZ89F4t((*d_u@m$o-vP`IiU0(7EqEH^jhzQSG30W z%c5|FM1L-4M{`*6HngXg=ib&Wh&INzs<=-V0VIVNi#LgBv9c89n;-|~ z#I!q$X=hv-!Lw0_OT0{@zga0bo2(FuZOC`qqVLj-SR%gj6??x$_s2+{&m1v@2lKS? z(7RAp=Cm_RXEs`m$Y5fmNe|HLSF|rrwHt0R;dK(*ky$z*atxOY&so?(ucihM4P#&b zgEA<>@g|M_HQ|1KQ9}N;j!^#JIwE6X{O>9ntT-mu_m$x*;xAks@C3mYkCjgXxF?VG^p&(a15lJxbXb*HIp9=$Ds+;0eVCWOJs zv)*nbKOSVT|9=<<4`s4Uh zdZOeot1OLF@8u$iG!V6a$5~11X~#g?AaCBZNTdt1*tae1=Br$@rbl@s98S|0jp?&{ z=>@sO#)=0dEW&X|3bN)ophSsCWR0Zl%Ma-0excJKq{(NeWsTz&>PHmPH`0k}r(1^J zYrGdOVJQl@Do?}LJ`3yRJ>_T2NaNI+_7BilG{g<{W2&S!@qp&WPR(w0nic_~Hf|sn zbRm<8^a>=~;dd;*_3Hf8e&oHu7Ak);l%J_vRu+ZkmT^cmp&d+WvZ$KF9QeocSuB3B zk^T||%KudqNdM30^B;f&Z%A#Gp~a{4be_kCvEosXN_~d5$PLVaABv*kVLE{sX=ti~ z@nonn9vl<>sCqf%OcOzOqA2LmJ$I!i-H)4|?k6t-W|tdd4Sp{lTaO2+**tEe=`3b) zndwf~Bkzv_-@g61!=g{26b>nK0mYzDP&x`ARg{+s%(Ov?wzZx<4gfV|BeN>At|nS+ z|BXtabd(6^(14?rE6h-;M(Ng0R1=1hxxS6@N!X^Qv?H)# z*tjg*UP;-$inN5etH}|Cy3}b9)aDOkSG2fB>4rkap*$;U(yHJ{L)MBcWgCm(7RE!> z9yxj$gYl@a!e_`s#p(y@5dzg|kfAO!K$mo0w4?*J=i{*oPozs`;c8~=Ri%1xL#!RK z>|8{e-!U?FfMWhqx$lZ))LYI(Pob0H=R5nW9buj_s0C8ELY*fUoVovi*eBj0f+=*H%)Q(C$eY2j2y=Qniyw5ei8SQ5dBHO!Z_XX|zH{Uy`!1a_U||v@&vlZm6N27f z+LEQ4Q>qP4mfY{Ug#-djs>(AaBU?zS5`HgPQ24>zq{+e3i~?63(-Aj1b83+UG0KL$ zYRPdHKrOE&5^S|$9nms5!Mhr+UX?9so&^}8Dyq%lXj0y5o@<&rF~LwggR9_S(dCih zS({ckyRT2V)fP7F&d-)$oGSIF&)XLk=^TzGWyoj8fxGy@fm3C}+BCLqUDmcaU1Q(4 zvq~-^!p5Q0IXnGvVp`Zl!-Q-_)tcU6lfO?bUE^xCWUfWko)Xd-Gpg|HZ~@WkTG-;B zU=y^*F475ID#rMuInyFQHfde>)@MCfxjQ*wt?b-Y`ZCYe?MIK>O#fxf(&bExazh~X zWii!;gcJ*zfwU&&ij=IYqN70fWr;B&*=NE2cWL~heIjXma)nr=)!2kLzQe_j>I*XC zN37L7TU9C8n;1lrErr3>hK(uq-0~J}W;>1zN zLvUvGQV*$UZ^8Ofl9$Lx>-;uP>qGYgD49SvT902DU|KnnRKm`8bY)e$3H7JX!@lXVcHbR z2@>L-u|yjoQErVqMJJ}MV_?!hsHB*Unfa9A(nr5xrirn!{q7i9@PB#H=j)NvQp2gD zsj1N5;%kc$5;o8`v3E2F+LV#2&;1ev)KZ(}p`oK;u;_~|>pPZ}^bje`)e$OeV2Z+n zNBQ%+ZDys;Nkq%du3%{3E1MK!cWo6$ne~sc3&B8gUMMJQ3#bsvw$>lr5eida^#l zV}szzXhesCk*s^>%SisI0^Z^n8}I-=Su$=^A1FrFH$7TWX^B-dAXiC``RmX_hpcY^ z__t+o3VJaK@~py=xWJ(6_f=h3O0}B zL%pCNoDaIGcv)5Ows*|y;0`M?j*M$*B8K|05-;ScMHz3>QV|ZTs+vqPnL`kv-_D!e7G&ARV6X5VSD?YP|mq=ovnP;i*qZ(@j!?a}&=StfmV`5oTLBJ5+_R zlnT?%KfM_SX+wQPRRyZCgsDACMz>R|>!Jzj(rZa6kDCYcl2inkZ%WcC=!gj?`c>*R zGcPNI1Jo3yRD_3>kJ!Pm>lz++Coxtn1E&FzzQo>2qu6Js0q7y|4fL)n>+E!Ux3Ffk zbd;J3tZs+6sAkt(Y;X%z2#ai})i5exXGg&?Icz4>?AnSrRcRZTWi^(9XvClk&B@=h z#IVZaU#LNn(dnpNsbo0-1&MZPV zUh-&V^BfUz=7}x&-+j&Y#UkfN!L{D%Gor6g#?Fyf&V6>%93)=#I zSCz$7n4c3Rd04riv9)qfXsZ%bX~`xDZ4g$d0-Law0wTv-7H3z8o8XYoeC#FR$dCG4 z(&pQ|-0SGo@gvP4n^~-e(9w|LSK;T-p{REh=$JN%{D_#AcJ1(1{Pn$!*kFWU;%6GZ zx$;1utnI9q{LT-Pfr?BvUQ=E>v(!Ep)X~w?J|DnSRfV*wOHfl(3NgM!kBngUVo{*2 zOy+`}=ZLdBLte8s&;f!<9pEl}%Pavd93^I?0Wq|LS!ye)YlwNaYpP+1VBbwe-Xdz-?=ciyaaze+cD6!T3tR+>`a)9Pcqax4n z%RU-Lpw)p>A%%C5%8LB$%zo&wsf|#+{vmP2f0iA|qG(ndGG*EC)P{#8K;on~iwbBJT$Jd~70}P({x=J4Ew?22qr6Q8G*$uk_d)94hQfaGWE}Js z4gKX@u{Cj?I}+z%SJdaV`Re(t&8ssiQ)W?ABn}Sj2aPG@6>$gW6?E zhmAfs_Mr()s1?>3!ypMQMZst`AkIuGsISq)+WDhpqLox}{`gr?IskngG*m&zPE%%vJG5x9J5-cDT^mFf4qR*WVI&%kd{t;o0EQ zI+k)#&x+Kmn@MgKS{#!{B#pT_b3#lmGSEq>Lw)k$Vt8X6VvP=+8$B*aiq-7;%tNzG z=7q4RoosOkRtgA4!>ffBTovN%DiAmduFlpLY}KVD_f2?}wQvv$kYO*Q&D1&)3C@@~ zkW#Z$QWQgM4rnoO#o`>XS!GDWl2znh&$mf=8 zuaafvYt+qjoM&-^z?so&9Y^kjaaL;~&1Frz=2Xo{lw*_)b&Fxw=p+H9IfY=Y@^5%> zw6%>7-hDt4?A@)90VuJF#A+p2d8nH;kXpoov86ms{<2*TRkiEJd;;|=k)UVNs9 zxNG_;`PNtufOueGeFNf1)QhBzr5vDm_a`=sf+`km?mlieyw%d*X)^~eEb0zXoJ1_- zNX|UIA~^tQ^@}mrCL#b1Uo)*d0ImYt-4iaWm|*7MTeKkqc#i)EQPMzu2xI|w!~nU zdb^Sr9X+O=#E7ON?h<@!Wi{47ymw1OO@n2UJ54Pc*hmUlS%@fMr%PVV_=Bf*TDGZY zJfBfG^2v;JJQ$lCDro?(lgl@6P`V=gO-w@Nig@dLRlDHgh1I;6XBU(HRCxc65U(*7 z^6~R3D1~YY)sgvR4H=O<72ia{2^e5)qt|3x)__=~jW9hu@h!&6MgIbK^h>h zKJghgfxnIre^@;`$f!EThy~dE$`$2-DO>4gP~n`XXlG)4L4gQ?Pk-<^2ZV(4w{3et z0RQo?6hmHCR3nYxZpd^;C|(4Nf*N*8D-x`t-82Luf=ya6E~zj|y;7wF-l`B-LvmW+@{68%~|Ci*LT4W<+xYsmXWbs~t z3swi2w9!tA=Er$~fPNZS>O^dqh4?{^ zQ4%gUcuV!B9tsGV5guw>b;*x8!{#9=$5T_VY1eJ$dHnsdn_k|Iw=4CYtnqg!&8lzl zQ~ZpTFy+k(9Ox`KIF>jg^3V{&vCI{V^Sk_xz@iIHt8eG|A$g!J+q9N~4^5V`{Z%gW zQRcK2=F3@W?Dv+eI43Q8k-+|vO$5$it~*k$2T}LU8CL{g=tTl)Uavw+18G~yZFcgk z`@(@M=#9Z~L!XbV^8<~me|%$Eo*-V>ZG@(ok+qDHJ6eY%vR>j6f|b*S;hATZ%0tjn z0+0@;1`OSE7E9CYM<@u>lBGyfd2wTCV4J0@^1jm#DeQ{;7I<=J+!=L@C_>A5O*%xF z`H+$q^#D8QXu(v_m2pSjVZ-1Q28oRLfr$NaHh*g8meX^VG5U)lzp@n;OR7lou#Umi z5Pf%?D-&F9mBoc{PusHk8rm>eu}3DGy8-=T~cGrile;c@wu{52_o zf$}+h!>&P(@;O@9*Gyi?hy!MwXz~#70Qx#(EKpD2AmgdvV$e{!Y;?@g%I7*LTQst1 zXqR~o`asm6&2yoJq>XQ0WozEu$Yg@!a zbBE&?M+G@XME*FEKU|83yOimehHE>D>{vt<8&?PwOCrmq86#xQI}qnyf=e@$-o)*Wiq;wlu2@w;fT)=#u!fGjn;H}8&Cgc@)1FWffS5B zYBXIofcy2YRp^-y3 zKJzQnCz_Pdrc!Fccg^fS-fochCU4n}9&`=t^DrSx7^GLlC6`ns&;Z&KzMUJzW}ZVE z(`(SFr8k6xVI?$|@cJikYuJrK2sbF!upeLx8`2HA*NR*xQz#`S8q=+avx1cHYUCJ> zDns{M%pW^TPv-3dzqKA!?YjkQ~&0sTtpVUr~DAtkW6@%>8!-_Dj{Q4lloiXMc$Ae(G!0=3&r&Y{>6mpX$XdG&;} zoV0|DSCh(-b|XG&Q<&aEX2-lg!8$;$yh&`w_RJYWY@gYct^N)nvS~2NbD%@6H--Y| z-b!^9zb4xrnBaNfO@0;95pNbB;FXhr!5BZmY~Ao)R`+c2c4ywa_5fH&q6->qZ!+|a zn|)4vHyO=VX^BjDU6B6!DBG@O%es%R{2{}yKMG0ZE=fGaFI?oCl)*1P(tF~MPDKBgN4ar!qXXH%#~;($+CEqgdh< zL;B#Z&GQVRiR^>Xo0)Jyo*T;i`>Ig105FU(qcD>C#5VKNxOYpO@oNmOg8&yk(fdyi z+X2m+Mxu8=zilCO_TQ8kS_z)sjilPqCBSpXz_VT2jqJSW8?H~yh~AN1Kk@8k-C&$u z`i;#81T%{7+CIT`Ec|l})z-mPLGN^Xd6@lG=y2N&Ur*-mywB6T{-mo!&1YcAFh{Hs)9HJM?C~d8T`n?#ODhLQS-ZD9$R6jB?LAXOSt!dq74- zYC?^qR+bKjbOV4dbF|}(571p2<9t&67#{X@#~%^)Nei_#2&!New`bJYYCGg5Kur7T zo{}^&)57hD=aNl%UDSH83s=69O+5lX+tM7PQ&6VT*Qdgg%TiJ`0^{RAS#PKec5liG z9q+Vq#3cu1?rla6=AaQtWdUIVlT(S)Li@+1oshwKi8CVrpFDvKZg&``M|^qg+z`$S znDQ5(R5~{dH`rKcb^k08;LS`1{(>sPzv6y($c??*SA(vgPu^uJU+skpDrpsRoMJ+rf6OG>M)r zD^b8*cV;}{Z5K=VaDpm>7vp{=;BEH{j<-actr5`4bE=}k?5688vQJfJiRhArVzYM~ zFc!d9?Yx-8H6TVd2faGpCw#^le3_8~BnhTkY*x})x#P>if$1=Vt3p_f58jlM1-ChZ zg{`JJ2^vlgiC_@ML-s!36nav847{K-D-bzp9+rv3S4b%#RNvCS@|XD>8?GyhUo$|% zK`3FUtx)|=D)T|HV-|`};p&8kA}OvW8m|zVfhqFA zXFQI9&@tRGk!>R8UQGjCrR1;61bxg#4m2oiZl@1ghR<5 zRFMyG^T#-Nzm zq8aV+WruB>*W4LTa1WD;E6_uuas5T&+^itPd3ROTLQ+@rOa?CPS@6M@-8DO@V;HkQ zJ?}_9F80pnJ=$gAWICD44PRU|;n^9JD4c()?-#S()GiiTqJWw3E*3&|=!CO4(=uZ- z;H@zvq~jO?v!-|5k@}S@?M{-W?f+S@3ts9}HpNk(p^# z%hv8>$kCn`2X{g0Mb$&Epb}v!QzQ?YpVsCMXHd#*OahmRL_@{p&ht+)-G320q*a|k zuQ3sFmN=pkmub2hzqJ~zo|1WS^|<)a{+*!-WaKmw8)N}!lCoI{qZC`8bw(-C5!3P& zB0MpZk-Pw0piYp|JQqGw-2k!DD_6n=C&Eq-kV)6#VRtZ4{LO3J19q<+0buOq^hGfA z^DYTKt&r;%0$C7cYmUQLn#zBHu$os5a?ptsv9h-Tp$4mkS+ckoKVWJ=Q`{DFR?!il zQqhUQqpQ*2wlHPF(_OJcz?O3Ty-vjvQAJLj02&VP5y{}IPpcE8E2aD~E^J2K@=k&^ z(#o$a>3WG`x(G3<@{KoGRE$61*!f;lgk@m^9sC85ZA{nOfF2K(n1lD-9wA@lC_fZ# z$b!OBN)-+^`)OGSv5`CPl4yWDWn*pgu8>=>k6dMeCvCbL=vdX$`13l=eSoD(yL@zj zEr|HX)=nQo-Eo%PP|hK4(4^~MizdCYMMa&BCUN6t=oYfWD`6{SCZLmr3v_1N%jh(= zj4C{7NV1HT4CL8Ubk+z%`oH|SDE*7To z;NX1IU{#Te%B23RklIW;Hvdz{$#E%IxO=1KdqWI}m`evBkFngAD-m&ae63uyxi8ti z)HYb9D4+g>keR%^xj!XbWsIm^cMRCsB4qLKNPc0kQUgF0S?$(2MX%DWHxlP@FPOS8 zN86CA^e}V4(9q^7Rm5wm@auN8k}X{X4`frlAT=RC0h&__s{?^33aRncqM7+MJz{=6 zBKc*!`}ox#LEJo+F~lr|a60)w?BaNBbYEHWUdqiHZtUkZ!$&M5O6<(U zyWJcBYp``}l>)`` zV`$lf>-X+*fuv-IMQGjHL$PNR;SjEBfl`gdO{x9O<>>6R8-&l!{+CMq3DMB059MBM~ z#Vj(>Bul`K|H~5KB(pI>fT$8;-Em2A+8o|tT(``~`m<)5L z5@Q?>vktoeSxt!zic^g+2^&8IpbRQYCp+YZCPpKrR#q1=b8Pv538|8o*Kt86R|Ul0iY-$~QNXSI2C@tar{}_Agptz#0-7`pVcX!vu z3GVLh&^QEl*U-2Hf(H%m9$Xp??(XjHHhk}Q=gys~nOpbNs#ATc|2%uI^Q^u1`aQ|m z4NMUo9I@B#1sO5+?qvD$ktj>QiPy*L#4Oa#;vo_sPNqU@1jLkA#17gtm0`Q1Eb|F+ zpPES!7nJq1Wq=Y*^_eqIr4px7T;O@=+9@ui0r%Ewfr>?<>w=1WCGHxTvZwGn>^w=6 zXAqy|t!58M#5ltNt4QfLBnd8|{46kjF^%elsKd}(K?W0f_TzFWZ!`(P zGijup@TAhd$hA}?JR+KwI7WPs_-7X`aYfrRk{Jl$i1MbqApq(LQ*S(fNJyfwaoODc z4~D+DlZ?fR+G5*HN+sdn(Zl{6ZCzZwoh+gBME}T2lG%0S*dD;`#d6qH^MHh6>|A(a znNk#g_-+jE>OV$vkmO#t{yhnE8MU=myMJ*eByIB8%vOYq^K!CI{IrteKfMc1>z*>L zIW5?m1+Byd*LhKHs{2KW`%s5-l+GLetjRhhGwuSt(oCr3e!Yu%NYYdN>oli^AzC31 z=RVo^=)(?_33#)K?71gnMO}*_6#fZ^K@B$5-4ymLYwU~*4_A^{{u->KTU(*+^s){29!@JoZ4e#%RZ4WVZ62`t-x>V0q@-b8WTCE2NN==KJWS2 zM)x^%&#zHk8>h|z+BZ8`m<8E^bzQSJj$G?%qi0sILC()RwzQ!rNI95(4-hM`(vKcc ztiRO0L!iS{;^Y0g_|gJ(3&87?VL@@NBHk<_;{F@H=^8SF{drao9!B76`X%RWsFewv z0HWEZw-QvwytRRo;$5OaGg}J=rzTJT0_0T$NY}PWM2v&VRH!t$QN)Gg&!Ys#AGPVQ zpPa@BMAk6zcQVEKNXE979A3@*aL6Dp1!J+z@8tON;y4Bf9h-WGs5~L0=V4n;q!i7V zG~Fz8L8Wh^~~wbCDpnw{z(kT#do=6tHJlv*a=5LLEod{a|u4Z)a@5dOiEicTU@sWuUD*h@f*J$DMIs`Q?V6DAh()NLNiQ*qK;emwSh7YMlFcf^d~p}?BWM{ z0XD#sAIU!EBxp>;NGT9DOqf13RhwpOSZbI|lPGEd5)A6(dk04An&f-MX|mM10SH-r zHgH2*ON&YrQET3)h^qI1Ub$WcOvWo=BtMS6m#L@}&K{|cPwqIGGMIMxKouiL{j$`T zEB-dugLRanT@SA)E@}mNMg=G8+F)_l`gHrg^`RH8nxA!@@S~efJx1=5%4?J`x0q)= z2_V2ab#hJf+!5Jk!WRy}Vin*I<|6irw~NxgA;{*fF8^w|+yBxrz(TiGGf8N?O_&@l zkx?2!g_S6miRNI-*`&`gS_^B6Akj$ZgR5v|3`_ikfd1=TYOLl+?bMZ|o zzw90m*uoClpkJz2iyOhgQktQ6Jt(9Bt2Kj;W6>C&hBhUKOV5+ct(7CxuW_`)IabwJkcmSy%NcZd5HU>YW33!1j6 zEv-vZ1ZU$e2yfdum#%tabo?8DqS6dex^{T=ZUwywyq z5>4Ik%72cQ^`&zmG+GjsA!V91isb@Fzfi%~W0Mn%q#=9261>6}KVZopW4tl}zN%q_ zURW5lkzbj4xQzz*pyMffJ3!zerissg`2+TkbHv%}T8@FsoTg4BY@)S+JOE!!k%!tkiK z_4-*Ef~$+%J|=bvRUVeJ1aA$0k~V&D>-+VOOCP+6xy`bw34AEe z&O}cQO@X9(S2k4z;-yfhAE6sk`1oe)A65M*#$9lh5$58Ue+UWWDEE5c@>^tP)fNA) zOQo=oiT~}#&MI<*KT2|-{;2VZ<@{_Bj8|3{dk;6;`q-3wwYJcS-<)ACNJ|`#12fJYgYqT9(>PswcZCf6_KXpAX)i=hIXz7 zc48&(z#YG#DIq@b*WXO0D~Uv~-G+JH07dCEi`kPTDGV``3@_4f(kyLvUxL_5wW=(@ zX$@;N>SJcwh^slNRYhsp>8)%W_GXs0mVWq_>`5aDx*kb()+@PzmakHJK3)A?zA5F` z*RITdpid^lyCgnSK=-+rIerM^L$#JAJF}%2_qBCqB}}hT13;ieVG;k4J&=PaNg!)J zM(gnv(X&_F>?eSSn^p3xgFT6R`mV?)yWOFW#&I?do0HNOIRJ%qF z4;NDWQ#<`4NhZr8QX@2f7%>k6y-$$2vf7D!83FSc0rQheL7~Rz;x9mqVXV+L*WY@vci=)k{9ly)`jaW7)ga4FDV?6C z9{5ul9k2sPT^BP8>=4YjxKYmK6p9DC3syd%4 zI3QKyZwKj{H6{|)nJgGSu;tx^(*Z_4weS%3Mb>;hIaOSx@Q*oKIAy*^^vyi8x^Rjt z<4)`de_wbJ$n@{_tw(Li@$Zwa{d9*vRTql&AIGg{eRMwMCo$Q$(L9CijC&hmH5a~O zKD7#fdI{SY2-tb3+juHCRemRWi4N?3-`}Wzd*$&6x>xBPOPAR(xZM|vIZ#vBYSsCN ztU7F%pVHQ^N5ZOf0KYAkO;@!^Z_1&Jz2F-EH>^0i%?o6`Z`jY0O?`iDcg1eT#o-g2oQ zbUKd*36cnhU<7Ufy(?Jgw%*EwCEIETrs&7S52_|o>@}u)A}XiI@fA|*SBxn;!yzj( z{-imuwjWAPwBURXKnQgN<1uV9bVB+jWhf_}XIEcE8DKZe1V-fLCga(l(W)l&R z$}nw0W*pJNIYrodW#&cyC%W*^h$X+%6n9i=dFQVwD;C`WhpYfH<|D>E!Jmk?LoU*h z_)v{8C`~{5#+g>JZ^9(5vddp|N_?okQ*K$4Y2a(ChLy6FzOgu_qf%zv zv^WftPb*Q}+)JAw&$YNA+egyLE4=8Q{5EKi;y>gDZM>8|@o|BdLpmsO(1w}QrPl&W{PfB>z~GC> zhh!BI$7j$e(-q!%VY{m`Zm>4}s=}TQe;si)c2v#ofR8)wx*&i_vWhJW@x5wL$&2CeEliffs z;Y~n|%H1Rm~H!#iBoL?*f_b@*9FbVg#kZ2xo!NZNH zpiwxkr+@C#FiSX2cTl+@ILw()9uC{e5r*B~`!A_)EEs9@zK{9zgyV3Csrjqa*6DdD zuoUv?4dNfwZm zLnN7C3OiyNfFZ1l{zqqPMDrXAO97&zXHeOKl|CeEK)LwfYB3^wOZx5LEkEr8hrpfoP++jE9yx}XcwOSYBaPp21pK9P1aWtzUZ?#cP{dPMye@Jfuel!@wFY~ zQ|H%OBW5Go6A0)OY>ZD#JaVccvNCaiIO>9R=Ef!s-x~RSIj8jKV@5uHK**=Nh`1DT zo2l))3F9`VO3#eH?AU)=PyLOe2m4&SSYY%G@_WDWE4@wO*v!PxSuRCCh95?RqjB>|L|W{g@0@b zYv{&2Io|gI{9a}31NyjG?334_rB#rz{p&FU)=Y8lv64MB`+d*Y)qfqOJsf5Nzq*fb zv=0c$sFA!n0v|izXUFNho$=l;2~cCAFbfPwQfbd&4y&3lL4#bJNP%VCL(YL&XJT5< zA{`{r)!gI4%Zh3rVhNQY*A%v*o5}?V0-?(gcay(8j#eVd*UK=loxT%F-3NN9*I&x=USS5WmlN2-S7qhAl z>%ocQZIbw_Qy5`I3zt-h1Apq4IK+Y>YlpdCjX`ghDP!Ro&0<$96Q7k;gM{WsxyDjs zK+Cf_tmx(vrW9uf4IdF*Db>@0VicI zVdO#FCD!7qdrHs=KSIR_(wxVm6Z;S${$3h))Fi4%amO`(aMRqqF_wU9HYmw0Ges;o zNuoNywH!ywpn>;xMnHI}d!K$;v)UoDGL0o%mhgs{nahK45D&#YB}}L z_LO7>fB*fpv0szapfv5jHg8pl%E3G!jyXu4B441zN+9pDz(eLw{|7CjZ-usJJBNL zMf;(8`?($Rp#VNB!67V`9?8WB!d>|SoZcOz-7U|}qU6ug3MxRT1?lm&Y{fkg(RJ$X zSrqh0o6$Q~V%{WyyyXtMyf(Z?`#gbhk5*tU)gZv$`bV>71^wg z*?~SKP?3$1XFXJQT#)T>4fJozTV4JaTM{Pk&K0X;e;uEKqLq)}?3vfA1E$P%VzET|KlQSzwMqTbv z0*lp32D%7ef0WcO{5az+>zh-AFzltnoM4HL|5 z#+ZJ|d2lF~a)sUkMnvexkvJ~I0#8g0Vf>wIg+%Ty$=%RNMR~5+9{Xqk27UOM-uJ`(oKXbN(1JA5c_Q_FP&G&_~?)B z@7vm5%C9gvksDk5SFoqJf$WB_{XhFQm<&&?mbSl~#J@Oq4Jt7<7lfNt^G&#?XyZPu^e#>;w+{NiJ)PA1Lx1E|*! z&bykv=p+<;rs?~(@I=V%z_SeNNR{p{XC)wp+P9q#81ad)NJUzPU6ToY^sGH6lA~x0 z?X4K>6>W)MPb%IMI-Vox3r3>4p(CSADb7|c)>@u2v7R9}WR%jd5)rP127RwLN#KZ1|)^lzTz4RgkN(Hi%|K3=GydYP<`z*GmmHf)#N<5uht%5U5S#5ErC0?AA zUE^6tea=if@cXWPzgX2EdH%Ifm0#=EJ$`Viwhk8f`Ykg~sl81%N9|g-e!;ilj=7?m z*piKJKz>qd8$nCFsEL7rj$v6og16RaC9=?Z@!%|%t~zRFiVPbm0OLdC$&HkRg`vWj zi2*r6jxxXQIS>~688d~OA$6s5MwRXh3u!^EJ?+_@Y4m+5L-wR&dMHg}CO^9x28hQm zpkwUHE|4=K_jky2P-lq;0Yd>tZnOtY-GVMag&$Vx`#~?Xy+0N$(VoIC-NE5K?LLv`zLzwLVA>3d`B#6Trjm4IJIh0lYss+$CANH_5t;#_AGX@$ zU?b$nWv;&^`l|c}h=L6#CP5yQF_TR_cxRvN8m=CsGn};QH3G@vuPDE9c-@|30v#su zAOoeOGu+x-c_y_!8<0WY1i(buK<){ZGu(S}k{#o+NsfW8&uw0*h{Q%a)e zc9thO<;Dg)W#Ad$ng?BKe?tl{J@5d)zGjiA;D3>;7K};7sXkeGnd&j}@7|i3sTmm| z#lja)cPFug;|a^^5i6XA9z{`&DC5r}C-8RR5ryrryf#!QI8^9KnBZ30Y7+5uQJF7s zL{u!vHv(t17=&6cDiI>m^Cb`?1N+#}$U)QLeua(;ts^|%ud5*%pMr_x* zvUr#<9B4XGg8jI()y?P}yK}i@#zVOJ4~e8@y`aE>@Tb*dyA&+b6?Yw&f6~ymnd={} z|2dqPAkhyWUbs6awBxNy8`Sscv0}l;K&%`~2LFfhsOz`0E(!K~5BV49#8<4u*V7NQ z;f;bmx%kEKyu!8d!c5h84+liT`E(usXwy65{KvPCNuk%C4~^*O1z^E+oLUzJLl-$i z*9U9fb#uKNR<4xWMN1}fydmFIuasM_iHt+F`J{MMN#n_p$?Qx|NpYyEGHgNi`10NE z%UR>eFltHT%{KS%cXDe3erSJQoqt+PW=Aw@5f%cbHt(dS^gk@kTK);09MxsUGTnWm zVrwW*qt`rkPaumFLN$&e)r<{^`dTj?#FmA$arR3Taq}4a6o{75+;9hflo#Yl>xz>u zEluk3x^bhdb?oGY@v}EXT$os^Qo`R{3q0i%1T!exix=cA+(B-&#AII+Zxu{d~%#F zFO!f7tEb_OVo6lt=#v<3ME}XE%F(QdGW^fbck2=SQ{?g^N~7e@QpsecEM$*HN$&2m zs@~G$T^^e=9r)M+vh%NOm1kYSwL*0|e(F(?nXd3nhSA#hhNnfaX+{D1!qE_C{}3k! znRH4wz~=YnLfPaiJjyvH(JC$PUu7q!oJ};h5b;TPTcOr}Q+`MqIW4{5n}ia<+;Ew} zEJ7DD!{1pMwoQo>G7i0-1j3Yc_atj(UfTjJ`~CEaF?+#bs&rPo|A`0%!aby|M%8gN zL;GY737*fV#6maBy*f6l5(CdxNc9#HH|8Q2PV#24mSX=+sr?dI%X{tWa)y>N-6gbz4ut?tXl3eSnTM&-Tk+Z12Z?Str+NHQVMOTDdE`50zk!s}5 zQFr1zb)L73ujls7YFyf>7$dQ=zvum4Kd752IKKRU|An>Eq8X<}Ptw2dFol>t293%Y zxt=Efa4{cRTlD)dUryxSe5|t&)uU0 znu#EXYlTB*=TycCP~J5WuUJ*M^R)n7!hv{V`xna*L||t-+`=`+fm7iZ?^W8@zhd=0 z%r0!wT=EpgMbkNdoA!qgoZYRzvS9A?LlX){X;G|xKSZ~bo_Ro=$EB@FbGaRczfq}p z@wa=1mWw{>-N={NJ)%8fr)1R2@JzE{LN)wR@beZFN|xg9%!&33lC`^4m$2 zQh2&;TnG&q99`OTBLPakiwOXbQH#Zd8JixAD(U}+!kx8pWt##<%QIX19c-LQTg_@$Z6cPe;sH8P5V9I2)GWbI#c>K z(s1w&>QVX!AN3YTX#n+3gpQLBaHh#Ag~qVM@5FZVEZmvmvY1rU-lobY%(@!|2eNmf z!9v!!nP3w{KaZvX81FknJC<-&&>#RU#Ts%}lDCW;J!nuQ4YUrOvEOGg^pB8ij8TxK z`rH|Lg;&4d%r7|G8!_{M%>gW%4LctwQBe4p8Qg{0%~yA3aW(Zy!)qkzDZ@6)$n`4w zdi2O~iOa(|io;pzSpORb*i-}WvXVkH18vA3f?-+6D{cO-20C=M-9>9fYw|QoQc&16 zI$dhKsLVSd!Jd)E;LE1n6K_STGR2P2SN>hs%OF3J?Ct~CYicjaPNc43?X4icSm!62 z6Y339|GhT5AAa$%KS}H8uPM0|1OBD_W7Sa!7-rbhKDB#7<~I%)VM*GkE#E^uwR}Qs zGkg!{8rfKSyGFfte4_Q$dha(%eOdCo{_>(>6=#DIghttqK6E=asrjvd#yjW zryY$dcR}^Y4tFfewXZg@TixWJMp6ZMrBfTIo6y2hEDzn^3$uXxcHvZ>B43CaAbT-Zi{_HeGmh^P@M zNF7#}P{h7cw5AnB22V^ zHR4sQVScOHl-yh8Ynv`L!A6;YE04ZvYf_~haPGDPY24yh>h2PuC6}R&HEnrg(Fa`H1{AjZac<#d_wDM?FZbI9@YW@ROVW|Z-yK`p*sy;}Tif||PV;{}*3M9F+?Oc- zr1f1(bo7-fS9V^#FXm6{+~J3d1%R+IK4`BRKc-spPzW1JK#TNd0wavSCJBHWf%$m9$} z-BC1&uzuQ5;@hPg^)lS1+x-%X<~np;)OokSsF`J&lriQ*R8CSfB`t_3606M)*c|~zrJa? zksrz}o*Wciyfs098^)2Z53p)mZinS7H`GY>LA^__SFzxzG^9=Oo~?2vdXe$B%>!fI z7d_AR2AM4i6=H0w5RYTj+aqJw+}R5AUEXaVsjY6ULerM9_q&2XRl(M4`XwA#9Z1`^ zE*ddCbYY7Vsu6E}M2rJz@7_!iuV;|ry8BFSj(DxyR*oPRA?$)~KcU35lExZWQ%y(g z;|}aeNn`l6TTNA5XWckj{%W&FsFiL~nM+C7%c+_pTC!KZ9~+bCe$NkLOpm-~JmbWD z^eBnh4b>yVPlXpSJ9O{vk>Q+e(*6Q?3l*;&Ov+i6FFsO7LdsdsUXyA;w+m2ucR8%r zSGmAIfuV8x5Vfzof{=^P3|C}9XVn;}D0t_#+n%NHwRf4Kl^^1E9T{l+tno0XN3r7W zOA-|i5UoSDHaRKnY0%0x@zlA*8Ri`=GAC#E+v zF994AimAPkk+a+TcgftPnZUjToK5#pmG~?`+gEK|=eEWb%ZOK9{Cpf;zdt_~Ms<@) zE6Jm#q(^9$msfBw&=K+c`zs=<_HiSjDSlG!G5Js>{BCa=`)7pPShv69HH_aMS`3&<{vkTATkPz4$fG<#P48eMsxyk%S zdRZGl?N|7L86e5@aH5~4-xXDOs9mq{M$ja&5jB6Hr&Vb@IDgDj!*NTvwDipFQ5(R~ zrsim>f2Y5w_*{9a^u~Rk5Wv4uzR_bebzv@iR68PNVmmENv z^C$et%^#I@O8=3`pEjrZVteFvt({;*>{+~BDKM>io^;FVDE`{@F7T%Ow&Rt?pR`Lp zFsu1c`O@l+_UZex`m6t&&3pPg(uZ7N%14Fp;KzIpF6cc(X3iJ`|9K?8{5|ThvWr3L zusTxU%{{TYiyYyOr=RG}zEa*( zx3${=d&*2i`>(S9JsvD6n9DR+C&I$GN4SqIA8X_utZRzCZ@~1`R+A_$(?aZ*PE3ne z6SU$mhBH%I1!QZ~PM=yslXkEFwio)BQ2Q|cxs8NKGoGF?285pe^BO z{-OOd;+0;KNP0tYO{P}ZtS6ISG7SAdTC3zxFoHFv^MWx(&WUj8P2Ye9b`mgmMK^bI zi>j=?>MnK%cK=pvKSVa0wWe`+cb&C{-+qKMXU9QLqEkX2(QGH(WAMsG2p5plFjZ1N zn=c!BUcY5cUxKkm>`XEf&VanV&+FY7b6{N?JExOWz8%N$(B_aYBItsvZ=(;L@SW6{ zPzeJzneoTX!}9EgF5PnzMol<1e|-Blh&w6$f$;k5Nk_V|X}Rs2oJg95+>h1}kQ4Fi zUroFR(u=i_gg2#g{xVy;|7pD1w!OVGYo??}O5^#|rbNSRd2&Y;aO}|lB=5{B{yl>T z7FLG>ai@1Jcml_O8&$}YVulGl{#uNR{}`cD(zQpXR?{Fn<}PC1c%q8= z$qMvzWBp|FskqoUxLLUTKg7xZrg2p!uPI@QVhw)GoHwaNY0R@|L3cgcit-R#s3?4C zhV17IcAE04w<|u)n64c8a!n%yq9MRw_4`8l&&#q^iHv&^k;UVFbjfx6!_!jf{vju) z>x;nP3=z8*I}#?xbjGg{1DqROCUaHGA@`jcO0RbOGY*A$As^c8o!H--)cb>Vo2^e)MH5H2E z7gbgCO}66yk=kjEZhkFs?KP`)J|w;@ShKEwZ~B+;=62dB?mPhS>6U!!HBn+tt|l5= zRdOSGSw-Hk;_f zn?KIS8X9?{#vg_!LKwme(tDfSaexmYplS z@|)cl@H>jW>*BGFf`ww@FV%U@ev4n!k)V=sC;MbnvezcmL&b!f7lqACnykSr(vFC-$8OZGszxoC-G+X6-GY6Pk8lr9 z=-P>w;CSx@0wa>LtT*9sB7JIc(%9?&f+pZ8@1;uAA z9TL+r@C^gax5R=5PB99+c?Xn`iX&3Xv%f>Azs@sw7DwAk@yu+c9St=!P+Xa_5ONc> zob0L-0t3QzhfY$MD=!g_JUxizmHDK`4QPVf?P%EJ?Uy`zYOpFWnF%}Dbd{d_c3 zlelC1n5~V>>Qh8})_n5Q3bH3viOzqhbNdz4^`>GRK5dK~bAm^@Z6cC&t@QY!4XS6O zvhNk3mqW!hJFc8ZBx1rKf~)G@@I;T4;MU{LEL}#-?VFf{zO5Lv}5E~H5=6iXC5v%;j6pp z$SJlIuVl{RA>&RKZzCcbi)q(Zkw+#Ylmek_kTU^s?f+)xYr^c2@y)r?a-)>qqp#)@ z2DJ&8775mSk`biEA@~V82dY3PUfP@cr8Of`+{y=cq}|2%F3Owpfms3!HuN81cg*R3 zF!A_)=}ZYaEdJ>KGKO6*;yK&2s-L0>mX}XNFk2{^y0lDzY3yycOW`lmw&~_^_g(*u zOOQ9{7Nw|t#0N<)PuB}nu+p5s`tx1MGrSeN+zS&Pi##XrESCX~0#klv3$muXp|-(g zk8|K-sUz(aGcvZnzi`Y$_8CW$@dZ zlSY2KJvtBTCcKu95+YYOg?}#cS)L%8P?jOn)_?~J*qJ%fJ~#`Vx|Y( zFWg!qNLA8ARncuh+pxo@7SqnV91|#iDm4|L^s^a~_RsJ|dWL zqWP1V571AS6xg*uNBU*K2A1;2hHpSTC4Dz4Geaz(XQ*O`O;dekISBx~IHWeBR`#Xq zy82tipUC5;3?BOaOT@1PW#?0}T@%85W5BMTk@oWuEX2zha(}9cM`uTDRl~bwo5e`0Sm`Wc z1O?8KVu}l9SV9^N4UMKOS=yy((TGlpoz=ox>6P*0DC=cEE~ey8sPe!{JbN}h9S>$C zYMbkRrt7$8r>kYa>+2)D2(o;~VSgGj;etIDAiD>d5R=YQW%~P))K^VJ9%cnSCw!mT zlpL%gJOpG`yS7dYR*i4h1Y_OcgyVz{ysT z$)V$;n!ss8CWXI#t!_bOi6~(1;^O{9%Sm{ZhYpiHz?`D0iONx(++SK5ABp5Bqs_Y8V#H9h zmR0}xkFJ>s;c}W~jW$^6)J81Nok)YDRGgTX_aqlp9mf`>h)q0$mU5{MaAJaT({Q&u zg$dhSW3ts0%1;)R{(&Zc3fnJa>wp-qaez|(e3r^^Ecz`x-r9sY@0>dca7b4xW)H+; zN_nRd_9ZG1LTE`BxOZ3S^kOesv1Lt;dig2!&2O==vwuhPs)F)QGfz@&pnP%BNhytN z9=D{Y_m-RIjkzIS;euJ{7LpEkIjv;;zuaonw;z_n8HF8Er!ITMI!}TzJcceU};dnP}hzS`_C673Me#9kOqFLm_2{8?`OL7uNz5Ct?SvWDHk>%sm5 zkU7z;QxKDGORpy1U`|)XWN?c!{x7t8HYE%{@KXS2eU9b-e*y4`d;LEY02)9mD+}{a zDXeAz{QUU;moE74Pk*77z8#??mSBBt{k>)8{uDH%Vvfysepy4K!dP*+egSY#xSzyP7|SA48}On}p9uI%n9q ziBtD!h7lVj%E0d_Gx4|8!uEb?QIF8k*4mOK17MiF<6-xU?rga=JsNq6RJ?${nqSZt z&u89Y_it|wW~{!q*aR)p2-xYH{${R%Su}k1H}4w?ZHEpqoln_IzBQzg zp>-^fMk76cxrH=Su%F{x5lahOdY8=PFm42%7c3>lQMOd<&F!G-tl*iI`Qxz0;jgLp z-|-;ZRy03`MJ*72oaFocT=$`*17e86DLyltu*2#A@N+%JxWO%4Vn!c zS!z-ydRluP&2Z}d9=9cn!QPn4>Vn*DsA2cDeA~Eg#Fk2mtL9d8*HT zRtdOONy{9t_^scQ)J8DpLU$;SYIk-%kMW3>o@vpkKiF5B8DGl=g%gtldHpaevS*xr z$8H!1fwk(;;Kzt6+WJ>Ih*BB~p+Cfclu2=gJ?Sm4HPbKQrf^cG|+6zX`>_O?oiLHw+B;DTd2t!emC}=zQ z9*7NWI(5TNYEIG;E> zfZp6&j-S)4GO}I0KLfz9(-)6A&rmrsf!iUssj2al3G`DPi=n>s??Q5~{(ngWd|=|Y zA+Ap`@#(GPV@Rm*Z=_yoHW<4lk;tU_@&44t&y(bDprIt!$!(~m@5-=RSnMqKzQ#%& zk)q02$=X{m;-e<%H~p*p0i1Xy>w#Xjo{fbTg%zB}yxklO{I8@efeY@S`}Br>`QM5Q zf&a6lENc(6vQPrr|Hu3R=mK{SZ3#nUgdk2Hc zUl_cE;ECgr6*eP-p;M4`hEC}4uvm_DrfSQ;mNNe+n==_Xb_tXwYYpj@_J)BYDfx`P z(|4^N%!gT*DyOi)&9aZo3!Z!2;5zr;A+HeP?KngTpd-*p^qNsIeXsxeEgky|9ML)P z<)r3;D4+_)G_BIpOaJsb?r_E#{|A!g+JmIdjaM@xT!V8gx{FzaO!)aNIg)O<^XP`l z3i4@c6)m^4@)KX^d>KF?c0kiD_S9Mvt8p5mQ1HC@Oc1{{KtFv>@5Cy#GVk_ezt(AY ze@fz`u>nD< zbe*t_enIzfN(4nmzp0QKs)r=774n>*TpQRe4uX0p-9qNmx4)UTQTud6R5SHWpbNK| zWT+W7I?7mYBu)oN#LNZE1*x7nYk^*;_Ajz|11i>Dz?HjSUZwe!R#h00$8^Fnt3HcyUQF{~ zfDXlrh4Hg(7_ilgAbc7oR2Q`w8mt0N-BvAL!@A;gg!!@iSww~+le|0!Kxbs2fxFA> z)*hfl&@GWLa4gRSheE)HmguIr z1Hv;k&J?KharTKz=IK7%r&#N( z6DK0}{SbTOkf^x-$# zaxnEjS0G_jKo;lGk6A{=)r2knX2Y`MaoA3qZ?Box^(VUG4s{mT4* z>-T>IW&B^S#Qtmao%DwGR$hGk{uxpyyi$3EnTh*qxGso|4dN+*Yl&&ah>3E-ayX4c z82=g%r9ww)I`pDHqZ_J-(Aidokpb7zR}QW%EvagiH%2yT{=kl`K3$Z2x1F}r$qY~o z{VtEcpZho5t~!siyslc0vktp3yPscC<&bB8J$h$RCfm~U>b{BK6tTAcHT%sVa4*9& zKts10O9NhnH8lODixyl&%Um!m^=ZO{2@0pNN0!an;)n(SmEj7@_Ekc7f=R*a;{(8R zO-KO_e%vXOqCIh>9nKASSq$Q13L$utN>R6S5*iaT>VOy)<5H?&FAF?5Hq~UNqabe$ zdYU_v!iqh^JYtGNrKAk&5h~rZU$MJm$^g~lc_v4+SnlLp7{HJFqIeXC0iUAS>k!U^ z_j&T*)by@SR-ejyG_jHQnbx#@DzU!PF(zYtkQb0;KH^!;E17js=;7Fvax@06ZKH2) zKw#WBLL(O+*~*>3lgwCHsOwS2JDE5R=h2puZ20Qf${UES(`#MHdYG!sHJ(^5?ZJ); zh2z+mGW9olLM1FWwFoZVF`6n}x^*cLSt-kC%%#Yh-6WDqO9q?GWFql6joEfAh$?}% zE;{nDXhVM_TGuiG!l^zy^1kKRJLKokHa;;N995T^8wuyZM5^7FBqh@t?9n!nm{KoM z#dw&s;en2+R)5iSG|TQ0ox(nD)q2To+n!aOn!CHLUK^v&{y#C*1|O(d zQX^nK=-2iLimY}RUxt6BRC9GYWCC36j_qr|h7dnH76#H}hHM-c`XFI*u1*i4>Usjf zf;A*yy8A~`cu;hYTD8YT7I!?9c&|x$9kA%GMS?73nRM8B95x?16@A1|A$lI(-?bNc z_a<($96rmuf&#iu3R4bDhhB*hU*oCtm=9uQUQq#E)+1_guS(S)soqJE*-p1OnAJ|V zu=HDu2MnDLxUV$TAB`U}UEWGvgM)T5uRK{FHbp-)KELZixx;qtj^T+nY|m`D`Cx7D zoJ&^dWl^WCt}n<`}C=R%ypZdbI@74c+3jJb1_% zgSokml(i6J7d>8CWD|LR<>=tm^{8>|>!AH8@B6~m$nKq_PIQV|AF*5UG?! z|L#VQs+-H83zTE^(AJYik4iMKVQsVekdL#m4ev2>rml!{3-WVWqwaunNgovp%8av+ z&f!Q-p%wfd&L$sG!G!-a|8-BysnsVHSf1YBu{k@We{a$29&|37Pt(c{5|Q6Noh`v^ z7f!9!+*jea(`)~vJ<~DQpHy6o(K!a*yYg_`iZ(S9u)9eoNhN5cZYOOSSb3pyoa9m% z!7}G!l5SYKNOu~+O=|V!iPu?V@9jy*ZphSt4oK@?f!u<=&WMiQ#j>;QlMfD|MrnB5 zMjG}DO3xtCdAhcibsLd9O6JCk}VSx_iUv!c0;vHF{~%nnZB4X)-|Ufwwcd??s<2cv{Rtl6eJXe{3WR zl81BNh9`x7$}cA9rj~K`h2|l5n2fCCQye45hZ3=`xB-Fe{{TlDK95jw=e6`y z$kBsPp182Stj+RRA2Mr)+ioEVFz)J{w8Ka4vZ2M)++rKSs@BEJ6X~PXQC_Kh4(6kF z1_H*NbBRIzGi)$!yyl9^)bd;bXO?iF_8q&ip3MO_bxcMLNxwyzFd z_kY0;40zU;!Qp5SPQA#LO4n?8GSRi9YY$M>`!}+7LaZLz*%?-{!(5eefa#IUL|f}{ zIw*?300_53!b_E62K50SS=p-+E}9ZhPj*L%E%$%;jzdND;<7>{3eg&W5u(m9O`rSs zhfoco4fU|C!IF-sH*w^Y>E`4Hz^zDRY(@eZDZL(cUT57C2;zEr$Qp~y+z4#U7V85? z?QN`};yp_$nec{DEkv0O^;inn^RU_Sod+w>>)riyayUnQi4x><7jJY;xLVTjZLF+q)JH?8qE(0`Sc8uq0>ceM7nS9F&eKY4 z)@@4MMdj2GUAu!jjPSjx$=0$TLS2`d2l5<@h3{ucOA0w?hMsjbU-H|d&nFumc_r3) zWX~@O64VS>m>#!D%&O;$;);K+Q(@bAeQpi=#~q8szN;KuI*2KFi=7eszd>2)%$hx9 z^mQ|g2nC8Qx$i(YtFMXW89)xGAUT!j;n{_J)^J|A84bkAI0;_d{}f2|$^7dzY-UORFRl~PV(9aU&0W<>KENlp=1 zKU?~2Gf~0IG*u6guOcpV^on&+WAi!eiCjLu*%PMEJB>!8vJ8+jFcILM@b`I6e$RjaG)4#B4k(&u_ckd+_4@KFr;w% z9Qf{t)hDf(eX{{ZXBFnQvhYyyhndtrbM_`mCJ+|JI`G>nY`s_z4?4ywsNd|48pM}RggCLO-SkNr(s+&n~c++ zAImS?WE<|#!DG_V{D*W?0|sXyfodSt$@WhjW;>1fLzNG<{88J5j>e&Oa`5`AccnzprUoA?vhbhREh(T zX zKDaJIH_b{==~Sv^4S_Q!2EC=|1Xb8-OzD&(;anmLG3u%5d(%X@vWp9oxm9{=GPjW6 z841IC(#(1FwYbcW!;nckq?SWK9ehyn1l2%rm+%k-F>nN2Mhu@sZ8_1@JE`80RAI`l z0<#X?RV+$OlDT#0nisGwg9}y5SR9zo6r;djJgIsp_G$k$2vSWPyo`aIt9xueEc? zw!f|@31(({$9TTYpCNrKqO$&XeW!c!VMbe+0lf864g;YYs=1b_S%1c~{7DO=e~(8T zp`sHwx(Yg6jd%YdMpdSu)@kqX&Pl_Y^qmemth*kC0kcbtSth9*aKKu|e@<}djJ$NP zdqF&mn;P}jvfA_OdAPD7@0sj_Ro7TRAK{%aAwaMf z14B60I4YA)zuW%d`@H7Jgq0xWaD_)k4h$y$>ziSsRE~??QEpsQjHV7U{_&1#C$}hU z7?(0;gSFlmOH~@UUFR}}PX6XBql&-P zsY~sLLLbv`)ytw=wX50HElC0CEu4tu3di?2^zwR53&Cf!QZ}k)b&S_F3!>Ja3{74P zwF`w4Z#P?Zo$d#G$!l}CWlk)EC5VodZw;(h_kI8L9 zo93nI3zNw!3<&CH7%ug>wv7umXRg-YYsSo~N-B$KC2%2m<^4$$J45;vmWqcWEt+=t zzfu?6U_(G&FU#!~S^_k7poaXk)WXm!@JWbC$^V&^slOk;HP*kM) zZo``RU@sx0HgmfS!>=PScMey_GrRPWrDgWHZEWVMnZ=!#+pm^cCB81=Z^69@J&K5Bp>U5ig#;wxxEIB?gdFgcH(c4D&ZWQbhlzT2Y@^-~UbdJ_hA5)hoRx98x@x$*fVuLif^Q znkMp@WFwSNz&}p*gYI-4yd}Gve7>6&|T9c-d{MLkH zTXIbMi0^{5^*(Zr;w-$4u|0n5*xx?%aqF%H=auTx;n=d32xDeoGH$9wf-PqFH&(u{ z6(Lw0H+>(4*bGGXFKqmF(U~zruE0DuXf1uoa+Rz|`ubmk_xobtLatMf0Hz@J+zB0# zYdqsB*-2y8#z}IhU&*2m;;OAB{)BGhZAg9wOjUMji0bmXEKB>|tt>?i<0dJcT&M5p z6UTyC@-18w5Z!tyvBbaz$VIW|COHwGvT^v%qBL+b7B# zCc^GtkqjT`Pc*X8UlHuU+pPk_As8VR?G|IJ(o=jdFMH|F{YRn-1TqG`mhUOzca;Ia zJ;CRVfi>ILu?&@j+sm>491p7N;{+E((^KW1D_$F2D2~4hsH2A>rGpaccW~18W}BAc zSUBUXD46rrxANcn$dt)G6;u$FS+X@4Rosl6Sdp7d3Iu|Jt1n6PHb<5%Z|y6%R4Ks$Cwbf`}ILgyz^Y7IU+t*gq1E`U=J z^CA$e8qkTy{YYnJCS6y8_i{Ec6KFg4q*I)99~Q~Yr^AQyZ_#WLy089K3p6XvHW@!{ z9+KQ-rj~JvvxpGxYqCfe*Zv@Crc8pVMk*}+uv@@T(KgjLbY-b@)o8&C>V1&ycCL%VYeH^#npg|A zX)=5|*!*bV2(ZQoy;y6JPsJ#Fo>UmY$}e^2Hj}l(^D}o~=~I~0$U)S&8VVXlg2aeSDt!)P1fTJwQZ%hpLsSaC;#Y487LrrLe$AON z{zak3QQAgX`Sc9wkRbU~&GfLe5*tYpaPz&KS49m`lI+o+VyF>(JG;gE+R+~6mSL5S#b*`?Wuhe|aHD5nFvL6bZYU&JRDK1|y z1*0qNsPhWQeB9geK#tCwhsN;(HP!1UNdvpz_ww4mo?djL9u}{$yS0~c_ThX-_k51k zs|$ZTJr810cZ)u1?iK_~#;vi!5!64spqz?$YhPWbtca#g*gl^$Ke~Tp6$3A!F93 zn$P$x0H??CCE_;HusHAZTzg2h1=XfL_wutVLLHJ;a$h%AQX*#dSj7^IRp`CTTE zmW-UmMy!PePET@r{s6rgorH!a`nxeq4D zcBy6n>L2ueg8^ddmgb=pq_dG`f&P9Rp~W4f6uZB@T+%>0ur|lTJ_@RC0s;raD&AU4 zVkgRmRnKT|j7KTk1rFw@sL$ei+xwbr#xu&6~>a_*J?G~82emBdA z_$aFSFrO*4Jrd3rew+6wiL#9u&7y!If=nxzWEPBhS9KoH-+Mg$RXAdKR@lAeTyHQ z7YK2cwS&7L^yP|kqA$BMCFFYSO~4LpWVzwnTx53ZbW^9Zu;)gYLp)A=or}*}F|_}@ z@XzKlI}M7;Ibh9!!+E@QKn0vJ1~S{eGk1Ip>sGe=12&b!1yJ)3(kA zJk{AgPiY0Y-u}^}KTX??=0DGXoKI!?lA`SHZQnAahD>_162%!7Wfi3zh7~zf?5qW$ zgz|SM7Z|nJQmO|`f&!DTzE4*4i+K<~U&(KTvMQ=OE%u%LE+e6~6}^i%dJ~BR{wh;{ zzaE0LB_Xyi5`ibTw(VlVp9R#N&v+&u!F3M?HwVT%ALmk@d)#)?xfH1eT~-;G;5+v* zXOBM@(pnQOt%c#Uj;jstLCPmI$C~n}R|NLxBUm?Zbr3ocZ+eWUHly;Cb|uIf_L||y zx#H024u2f7eIh9K5`>lLL9$(NKZx7vjFgYhnmAxe&|0d|cA**9yk>4_%yV%)fCJ$qLLeo+IAlU(H$ZeU**q#h^dM$pp{zc zg;y8Y7t=nqBN!%Cp=|SOHf77E%rH#T-%_bNf$eG`KqtOvn_cI#sI#cnDD#qajm8LR zq@v8ELY`C{wiPF+E~1^M?JhthzD9n6a-UwDq4+sKf@??yl965RF^{ZrQ(EE!OjaSR z+y9wgrwuoAvn{r>$|2 zYu1(Awnez>BqGi%!`Mg4UA$c&e&q!o++tqRpLS=yz2{l9wY%lwjH}=$m1U)$qFYQ; z>J~rxr|;Hl?$~NsK;=bYhlw1?XCy0u$hv@5=0_(M+@C0NXI~Y-p6K!t7Qk8%+7xBa zh(0*+`iW|tTsx;CIkz&NP&4^gVUU{B}y&cPcJZc=9D|7?=Zk?w)E z=yvm$bE4}7qU$D1jpGK+#c(s5j&PT8CJjoevz>QXZF=nUpv;npWB3no-Vp@J4D+OS zI&W3ScPEflzz=y=jGr@XQM!&vv#~nE zb8^~j4|P`ToqODwzGs?30!}(|)ooV=+3f^H%SihjSDpdByPj!V_I%>q&YeQtjlk< zYoh$(JabaR`qR95x)~y`&fw8#6p^oC`c=6GhJVa+c-sgR_Jsv?FHB&rM_IS(Ejo_p z+*9UYYN0v_%zM-wV2D7y+!NJllV^Z#Dat^$6sd>4mLik}EtG?F_+@E95Bk4C2Tyb6 z2sLZ8X+wR{gc<(s!PWkS8JL_wBUndtxEXF*{`w_8qOSjNdWs5=6Uu~xq=ve&OawNGI;qgz* z^ZkL+ndmHa-a!&Wxep2XRH654Rh!xXu*My!OQ-};b+(yR+Sn2rdJLXYEfo<3JNUss zk-xKbS?;fc<2Tb;Bk z@}0v7muY~t03hQ!Xd^}66=4|`*^v~6s{E$?<4QKdjKq%Np7sq;599K{H$NmNz8%bs zij0GEEV3Q!x%eBo;J<^YDhmlkYUSv&&71pj>JahT6_-kf?q22`T^Z%pFAd4@&E2M71I;Hft?Y&lrH8ve-d zQ+F*6m?QaBr)R}~dq{RI5uc%*Mg7>M=YIUdRzD+j`xUFl=y@JIphX7MZTXDJ5j^lsCaG+*37*q0hY zDDqR81VTv=j(AF^IDD5C^Yw~~M383JVG23lydFzNEv&XdCn`TwgsPKrX#U*akCc37 zJuhP`G})V+9EPKA-J40{0f3$tHGBr{K4i<0~!w$jpq17(dIG@Y=# zDJoh3i*x!7%vFpQ=kr@CuD1TsaaQ{+vdP?bz@Fz}^wHdgpE`QFc=~ERh+n)iXWl7C zvs7B?=GeG1yNjkRn?Hl==24H&N2jGj&}sGlw7u^AwEVq0n?D^`zEeW`Lb?OJf<+YJ zvT6;W<~E~>$K4${-NzPNXrkP6K%@bS{Q>mS4M#&}q56A(Y=tW~SE|-Y5ugP`H9{(< z4H0`Vc2P8x_HQUHD%E;a`_FdL9(B5qc}3(T=pgw;zLi6VrM7oW)q0HcRAXq>bq+3P zzh9Pi?Coq@{JaOnFy2Jm6q8*U)7VFd?pzhX?lP}ddhh6xwPWMDPR@J~xXt7>$n0cE zwr$dOw4xIZNB9QC!w|T`85ABFHok-*FLe*CER;hJM$fy5Gb!(8i#BC&$BleyXHmUc zsIbSx?owz$ovJCqs$s#`lBCEYEYFYd9N2kCQ)R!Y79k0|T zWZ`b+izM%H-9>j>emCq;FqkyShIWjvp)+vJ;I}Kj=TD?iPE#ff)cRnP7)nWU4~OX7ee?Pu3Xa z$if_R^vHR`NL#%0B+l{~fNk-Uzs#C4ta=-8w_YcvSmRm^vuogF-RN#b3{&EHUoDwVK&cxHQbqo*_e(D4iGidd5BD=lIy)yk}1-M!Vv`0uSrEAj?I7$y%Yzdf-MQ zpXXBJnlqEM;=IIYgw2`uOJ#sad1GAMnCuC^^iPhA(Tgp)KyQ-M7kUj~luVh(XO5o& zUCccXCavt0pA_#|zKm2pcx4>&iEb%g7}{IUN zC$k(0`4ZwU?JwuAg%KP%I(iTexSw~Ru0(vD7^KHOHMZ)xeOSu|WglSRHzC99cBKBa zWAMTYLOiO}!r~zoUsl@$C|!_gM16wm((y(^?)ehPchm)Is-i zpJ*Lw7gP*k1oxcNsXe3fhE1FiuiS;^;>QZobU|DZ78wm(J#4x$Rj`Y*l&xzL^u?@O zd0@#u8-0a26$=oSAH;(nqBg*@X{+at*&FaY*qy9`u$y|ufSio8^N9mDnBh_~9aeKC zVj8dyJsV7JL)_YJZ=pW=Xe{_xoblhf+?Etw^;;6Uln5Nj3ykirgFGG!ezwxL+s*qh zM^+^jS%vfMImj&cwGp_TTull+^W?l|;yGuZ{;>@`aXz^M{Uzkk?cVo835gF0FOhVa z>AfPJchX>;WR+pTXHJzJ8DK?RVO_M$5PW)GUb)RHaR|q8a}C)Yo08kGj>>ATyuW9I zkeyZSHY4;&xqkLxczLjAGea^-dgi{WLwTW z=?r`^5Ouv1G+aO)U^4XOeIh;Wh}X&o!$?b%>9FBO7`|OBq^rke;^&wb0&i5&O5zHX} z@^ADBgF7Qd7WM+WJkIMveq_k^g+5b@lzY%v5&k>@Yr`sjNx$JjZ_wifFFzNe?H1>S zAISmKginW=5y$8Hcae3$o8#mh54Ztk7Uc%6ap)vG$t)Mhq7hL*13z>$-Fk$nO)s?K ze}B$WXRbqk1wszjbq5oy7;Co0>e`j`Y<&kraBf3t~~L7s4Y{2(k5JR<{V zKOeM&T&-H?%K(11kM_^kzf7#9$qoaHyL$m&_;{b7O^?|lir=Dv17*%gw4kDDQO`UMBb>VLTA7o zDRoFf3yrdjEE=9lGRAEr$DO6tFzg&yhoz2B*Fj?t45uo4>^1i{V4{lA_s}zhmR3af z%>1M1`Cn8rq-=&A=nIoCLT@;(d#^i+^TCz3u5%E_E<=-(Hs3-a8a{z%Uwq$4&y##l zh*z)08n;eqEqMS_?FyA{N*N-kLJ8vCRGV^se-~_r?@x;m3x}9jnYV|jVo`6M9*ODV zHTmT=^}@>9J}v8gRd|nV$sOD*vD*>Y&g6$>wJ-txzr+=~@MJy@uyBZn=O{IP7drB) zj4`KCQOu+mgR_nOju@kElaL(PP7d44`6tkP`ej9lYODdjly!(O9eo zUJa+`u})vJ6Pz6KWQl$xw`+2zaS6&PBDk!HRL>MRyM-#XlnW1y?aOwXVdQm0cYNx;!}=i^5N&`6g=Xn#_kLG=`-r+_C#r0OEI?oH#EWf9RqO;Tkn8( zz04j1J}BpChj)6=BP;a&Co98=PbP^%2wb)(;m})?3R7O1U0#?z04GEEd1UY*O#kNA?&xZ<@D5?Sch1Lc*!>ji}CXBD2=M;NOh&81a48)h!#0WJe z+9&St9+7ecY+JzRC&g6*9?pA+0b7YFOBDyvk40fta-XaGD`T6Ja4r{(2Lp<)QW0nR z+E9cAc2=7BPQ@q`>CzYj7J42SCc+C{Pwlb8&ev@SDO-#TNX=+pSov2!s|dTn{?ZJKo z5m<|V8`ATKq6F!(r_M>f&Bs6H_S1u? z!{CRd4uA72QtL@ZPq5n!IpUE8sv2?M3MZqXH>o$CdO7FB$7Kcrlhte)7pQWn#KmkE z-DU!+vA@glQo3>;cM#NZ9E!Ca;Si(gxlPR^V{P!a{p=zd>&PaXvqp(*toSDIpUwHS zquS!z5_!osrFOhkM zv)uqR+hSx5_dFWiOM0BlGn0phVu@AGRKz#2y6%)P@B;+(6R!~lx4pP+SjkQC$~)gS zU0*hululy0O5C~7Cy3*j-(PxCob54KT2gMFwUnN7)-xv2R>Gp8H!AI~zUXpt&>LC! zCol2h{Q0EeC^rr#k2(d~n;g$VcO#)la^Co|2MRdUZlp!-Q9~nqVN?Xg;di*obkB3F ztEr8x^Ya(7;sJMvlUL5Q5J-MoTq+-^y$!;Kid0{P41o~(P6C1X_Ve=Gn%-0Nq(*D7 zG7e$)u$?{B4UBBQtrYDh->e+xN)pXz6T-PvCR4q6h=G#73#C#xVWx3{vOsfSYGxj| zvOpWhFd~KA38IS$r-|JWj!F+CYWor(hhH&ooyOk()Ad&bZu1pG3j_pX`oFvW*!~;k zg8cuj(U(;I0beNpPyqf*;T){2_2cVD`-#eS#0~-ZBdE2GLthvtIFx78SSX+Czmm8R zun@5(`1mIYfwu!$|5)2N7p+dKxf5_kGm=U7@;Yp!3RRkE#GBiS_DCG}2AgCS45;01Y9+6 z>5y{)L1B`jRp(o6K}$qQjC)BG9lu0mq2M*p^RbM4|4@_C>n+5m^w?7Lpo~#dGb&d=U(#u-Du`+b zAAP4$$GD&u0d?o@LDNFx%N#`%!Yh*GmbW${ezhhP1*qAsSxx=17b2~Jm5^1L>2)9$ zI`h49x3o@$uinjegh{|qBR0tFCl&u^%ZB^TO@VZ`xRHD6nI{MXiipe6^1YPEX)LABzIU=oy5<+ym{P-l7-LSlFfm$Z@bx z@c?K#IXXuoS~L1zmbAa9(=5Mt<#!f+SVjAL>aex~JOn zt10r;4ja6`yrN=?4sXxt%rsr&JVTUKDRqRM1>9qdbG+%KroTUFC>Bf|JQ@`F4TpxU zQSkThu>@0>wTM9il~pCRpq*BF@YVU3B=@k1nj93D0%TEc5W1n-TAh;6#AnCnwhPH& zH@s3*dVXYq$}DHLF5AJ278h-`IW4*UgN5mX!73k{v^k+jK%piJtLu7oG-tG9>!54X z3_xo_??C35;*>yZ{kLo2WtYHa4^j_2J6o5xoNE@!!g^>MnV= zJZber*xEmvRX!f9J!7i!0mNrV+G&q5T|D{*KU!mJI+& znJqL3rpzvXs_xvNt4;VEB$iRl_WJ+1hnN!L$PrRwGSLUZ=pRVs#>Ntj$!*r+w>fA1 zg!36bW#+3$bJtw;eodS-%-G6D4!dJhHY7imTJRVcZfK$YV6Z#t6?@KYgpgbN zl+sV&&$RQ6hN10#B~~@mhY+SaKd>tIjzQGG4qI9BNGygQz$3b1hw>{x_zGV6mG3~A zYq0a`Lt-oLuW7vJ|6gW&Ily*6EO-D?fi?H`9=A!TVN)B zY3Fg5wnIiSilugmP5R-@qkY>nD*7ArQ`=qDfZylx7A+{y(>s=C>qZKEGPI)Sd{JVq z(kuY5edI?r?bwg#|MYu)Obvf|{#cG4{}0O%<9{n@od3BU|3^uS%S+QcyE_l^tvlil zCtZJ{>$oFpfX^mpu7qbgqKgP&P@|2;C8G1OGr}9H24Y`mOBi(fPB$`u3f>)==t!>q zGHa8|=6_yS_j;MWUM9S_xLkkTjQ;fT~_?e17WEc%H6$e6nF#2tGFm zF4b8mhkcKg*}nFDy=r%9?lNB+zV>Bt{W@6pQS#Dqbv<6US$*!R@i9`XX>)Ngh^#wb zcjS85>Z_Mhw~O?n^)a)qZ~BDTsu)YE=CO-3WwZ9#l%wOdQ^QpgNPf(x^V06J^*k>t z^LQEz=5jH9J8pWkZLi?vf2_HU>Umsij{e+S?s7@$#80j%?fe^U;9<6G|3(F@`|3jI zugOt)ibmm{SF{a;A&}xSy9=F_{^Z2bxH(ll=F$p+^xSl#^Qz85t{Iy*1yGSvrIe; zODxh)Wdu%eseSt9rG9?n=ehFyt+W?2mNe;^ z=6q`z+-T3izA`ZT(_O%+hEN}Q6nr!#?qY{=(&)U2L9b6(3k5_VITONfMMKc$mO=szm4h(TF;gbNh-1cG9CJ#(l5b!t6h8lz;ru2 z9x{I@n{EfbtWE0;)P2@ok3Px?Ldcs{mR|Yy5o2f?Yn#>~vOh&_ldr7Sz-H>NchGtS zYv}YEKn9J1`i(vhe79(w=2^SHcZLsCyvbXiYxp`4N*aLHBXaviEpryl0QO_(z$`== z2CdUB_jpTmINJ67NxvOEmE(GC@R}qixF9TIdU6F6m8uyd!IEh>zVK254L)Cg@)7yMFCC%kJHv68YNyt8SH{uP+&HcZVk>4 zM1w?L1=c_x(Y^7$USF&AhKCD$AM=sEE!sWqR7i8D|HJP_LZ8Rkf?^t>ivr!t#JAw%7;l(^CfL z@R3>-WLF;q4?gVtZ|oV2b2kmso<=_!0UI>?2Qe`Ky{^fNB&h1KT&sI7J(lH@KWGKWo!v$8`X#ykCz{|55=2Rem<-bQFe4hk2% z5OE$40xA*bJT5HyncKQz;B*2c=aF-Hxg}MGvlCw?YB^TKhU< z@y&itj&{l^hJVHC)eYBrl2%K_5LXPaH`D=@uzg0)dKZ!!t;DAf;wf3F=N`%p_1;oQYf?oCz|F zhB|3{{a9esEBd<1ImBiE{L*g!$JJ+NrcQTl3dizKtZ-!dxtI6LJM4_mdEF8I>E|dQ z4~pCx843Jk)^DNTFG0YgQ{Prj(9lgE-5oL%w(ZnJB_K(@)ok{UZ8IqZfkwJmrHrvr zPVkhS)WBkm@YH(Sl@ri*AingSKrjKB>q>$MpF^p(L~n`+$^zxX(iFZmd2CIkHd@c4 z2tsD2ziCE~5~@e98){oBv@Z1uOinrZuh5i|stA;z9w011E07E*wUqCDk~Kmc9)n5f zNJi@@N*Agnx)VUdB}_A^ACTY5pNQG>9yho$(YW``5HM&-swGBCXc2sVbU4r@joGjX z@m&SnZ*XaI&)7ogyecS8!4Sqq)E-nSM&y5RB|T*#eE!u$Hy?Tlg+}=7xzY2*1Iqs@ z1UH*+;J$20N^S~);J9lLyv9r@#^=w(tO;J71eqoFGrhq0e8Y|dMuIL_o|FaCYrl~A zOcgKqH~=a&(UIhez;F7Cpr;^smM4ifMk-|nz$x`Z>qIPKPza^?|FE*d+`uLn8^6YX zlE2;=eAyoM;7HDK6TS3piIKxA2h(t9A1H>|S+`azGf<&{D^e_hPO%5VM+Zi+@teZW zxRdDgHOrZhDt^sMR{UD|CjuX73Zc%mLmZDRml7Paf*OXYT!!C*t%7a~V*hY3d=TRu z!5fR#AQdB6*Sp-(Noy1L;-K@$n#R8Jbs?Tpcr=Jk8Y|ByFYZcSvC7`R4}m7yQ)+J4 zZVN#cL-l zUk%d-uz~+B6bH#gO~@xsId&h$A%oq;!&pmZ`v5b3QvOTLVRiks6+z-c+f z4?iri$^eeRFS>|i8QL|R0X0De(Aacd^KAJo_UUOghUn_7cs0Gz_u9jh`ThMDfcmt? z;xMoT+_q1&zcalqJ*D&zxXNszY8X-{Ug%u^!61i%mlE5d!tp3oyYH-!0=@OVm3u;c zAsmmPCxs;nC2OoKkl6tNY1Y|j16UNR(iyEV*C@zKmGG_H%~ z3Jb;!LfoYqsHXScu?;djddnr~&y;oKd5gp2_~OqqV&b?CktMak&dV;TipoOFN*&@(hW=cwVVMkri4W)N|ukENU#n^y(g@W%cTkVQ*O%07$*h z#eXc&C;suzLJydk%h3h#?o2R~y}m+_nJ9$|B#dY$!W`MGoG>qt==6j!*r3P=ghtgL znQkC$;j$jQ7s@qDB6pxv8lTY&pC_A38njy%VBvy%9@7PX4;UOdhaCDscXxNtj~XtT zc(|wIlK5AD+7_oWAn~g7I-P*^lq9=UlvOIQb+#eQSFWABk){b7BCxj?f~s&h0?LOv zVBpzH9E9AOoY4Wv)M`l)GKn&3mM2N8Yc^9!a-VDD;hq{5vVnS2&V3C@>1MFGfBtJtC*SC^)$puh>D#X z@RtZ`SLq?q_OGCAeN110waW0vRF{?$WK7(^<$|bT(oYLcaq%=V-dtu~@TC1P#fQ^3R;Zg}%Es^3WAqwk+&Ly*2JUQ_+@o76P6Z z1ibWE{>s1rP;MYET(LcqgkpA+N_g{g^`ES;nl9lWY_zJa^*3iYfa>t#I&1qo>o4K# zo?X-(Rq@9=k$^8Z*tu2_F`pXG1(`P?LW4F(uwR1lu$p2M9Vuh50bm2uK{$D z*8dk@?;PAq_;vXvC$??dw)2f`+qO?^+jdTD+cr;Z>%_SE-I;r5>aBOCs{8M*{p{{~ zR(G%cS;(tnBGc5`@ZJ25a{ZRT?>Y8jgXX7HVg!k}YOfi;>YzA_!MIdtX&fp4lnRnn zpsRS^66oqb?NZdy;bRcwA)vbb(GPh_Na~!UCG3BR7NQ>K zFpLHc4{Z>Fj={VtnkEZf1jD|-CdEn}1b3+a3DrB@YJf@GY}i#)5rM!^tgi)jNDy81 zrzUe$I1VtOrAh62(Sgk`)JW}96t2j;>Id4-budf@>8M8ukio*`gYL}VvXX9@6%}C& zjo}O-?HHIwvW?$fhb5}X1?K8tB>^;V7KpfpaU>c2(g>utIOC|%k`L)UQ^yUWWSW^Q z5Ct`rik2}iDgq&9KS~tF@pm)Aa=qmeAHm`jp$Rp9A;!n0EKBltlQi`0sg-Rv{<%w# ztM$OUBe_TWwy9-nZ8z+&_`}SMehKQs2B!&0?Xd8^K`ARF`WRkl!Y@-OZj&zA zP?oCqbzYMJuG~k}M_{ZwT7`ZaTXiy|=d@6uxs-9g2Z<~0rkoVCnLJgwG!>{C0Rtbg#vAf z78=qvD2h<+6T>K_+JcVW0;@IEM|k8VhTKxSGqWDodDw&>8002}&`6P})4zvWtgUTEg`!! zsUiFY!X+Ga-XoxG;1Kjc<}km?xfG4JXrr!}Sn#E}A4QJXQSumJXH~>;2GKa;Hv6an zXbtV9@Qi!M5`AqLcikeud~O|=WAuYJ%HMJ#jzpE97;I6zzZ~>VMwCPKOh}>ZTm+Ye z>Xq2ugT?II;(mhh7Irfu+=$fOfdVt7<;q+s!*xj2sD@ zdv?rOW_D;?zA2EX*-EdaQox2<6!bU4l4#^1d@Fkv3uBB&akIMklCS)tr=*@77 z=9m;l{RJ--Z>5`j>VXk;6+d8E&p9(3w(O4^HH(Wx&j}5Xfpp}#b*Rc9w~d_*Q)A#8 zspv`BDPv({RK;0YDRzre{=z>vbkV(?2AAT@Uy_mS>?qGK;h-^|n@U76l!b%Ox@syV z)cS-R*utiZ(aE%Ftw2B-drP=~zJ;x*rWb-F1d}BmX^#I5pP2%{mF3ymZANS28Xj*2 z_!OfpYqt8(0(Hs5lrD&l`HQOaVUVsqlFyf{8P!B{dO{|-3Zx$d#}oV==lp4-WtRN$ zB+Nv=^yR4sNDErQMnE?_BfvaJA7aIa#Is^#u}jM~0K?D&6p9sThP{f6Ij|rO-h!L) z)#6ay(>)|O>9!!Ln&wRWIlPX+;WxR|z=fKT^H%=|#tG<^Vk$qs|4qe)XhnT_Ppj=NB`%p;BRn#u!;dj&khDM79L?F@ zLt4*}eie@##x|oNdDEmzM$5p{Ix3Lhf=xlm+!(-%WXmk?7j`t;G4v;!Fjsh_G7w=d z>PKxhgvv8eDEJGKx-E_G9z1gL-3meO{m#WN%_Jh5)NOic*|P$Qzy`i>m8Aot$Oc;F zn@^K+#x|NAI#p+kim0sf;aq`;^uA>~2PD1c^Dh(}QPE2@?FQ$foMn2ao&ESDevs;6 zkKu@=rs<4;1Bv)n&#g`3rm{C!dJSg0KF?W)ktAJL?Y_#1WB6V!zoaUL7;}9b-&IU3J=Dyv^ z@P178l{MKbJf3Hiz9KX>nRx(~4f&{|GVsF#gqn2@Y717dK!>rZht4Uv%0vy-NiwMt zF?HL;hS~|Q%?XbnZqm&U6WjnBqlDro2P(|-myBe+RFnb-N5I`D8`Xr(Ad&6~LWPa) zgpIf)o-M@KnH-RQSlYe*7`D=$K!&XI|eb#bw3Lw72kXL;z; zw(N&h+bH%@B>>kwZ^?HoD-{wB?G4(|wYaa0!d74zB|4IwXy0Ep+Jqb~Wby$T0IDLa zw?WJS^+2fJYC!KP66rADOICVH!*jEWG}CyxDA*4TO?UOLvaF;SdD!4{l>eoP9}9ZE zsR))b?;GefNBUY(NU7qPBtELhM0KeV*Pwg+KZ zpowEo`;iD@5T_MJG#Ez_0IuyUNO)ZRu-5=Fj}<53A(jOgi1XjKLkb>nD4KYGG;ib+ z(xI2;I5sMyAo?YqDqe;KM!pgQcvC5sDyA4b4r7~$taK8ce{aBNu}%UrqKPbFjG{u) zpqU;tX3_`+H;n24Lz`U~-XWMI^_x8%f|Mq01>)8~eP&@6vF#t9fQSGpH36GUHR_cs z^Ir4EhFzM24QdCdVI@vcAZwsD;V3N^vSui?3L^pr%DPSvG7AHK14gk#o^uyejUoI(Y~74qm2byA)Ecm{|Wo zZo?Y_CXoDoNx%Fq-d)QoqK=-;8Er+YK$X&YTe@Le7;=vst<(012UWtJhflzdJWEH$ z$yg?acZa zrm>+45x6Uo!~3igp3Rs?o-jRgI$tQdk~liehuh37u|pkn>UB(B%UlE|4P3qk>i) zVgZAT2C$Q4Vp_>WDeU8cBrAOo=As*3oWSrzd1gS=0xwJ6Z>I0|xz(+dm2gNLC^7gV zZZEa46l+$D?!`i1gB5!XZa6Q>U#MOUCvS#u!Gqphl7f)6lhbAGW~Z0(j75W5_OX#{ z9frCZT{Z@-PffF0)_Y-(O;|BSSE|TyI{vxIKY^;+kXURls>6x(u}<;Q62ZA|!TlQS zg@j0?B6yG#2lFbrn(ksRtBN%c8l~nflpMH%InL(=jXKc)KC6$*+cgn_g{X>68QEpZ zetdDJfexRwB{^aqZJqaNxhN5X8pZ|lVXT<7U`bBpRMx;_>k#{tD@^Vb|H*=Ct$xDaKXQC zr_{Q9z@|hInc8!984vDVp>kacIwQ-W1RCZ_3v`AAG)SkE=8rj}h$WWJzCbKw2I?*?MwrPZK z>y>$8S%YZb982?+tK=hNupuTQhS~5?5$cHpm(%*oVPBGusOtW(HEhtxRU6$mMA>te zn+r-mK;8d9{0nyyl17}ITswYET-BA1lf{F##u)WEXaQ2YfXyecAbn(Xy&Y9L{&sQL zca^HdaKKyJ+|>1sR0Sgee^4@zlJIxlsz<)db;H31%T)uOZjs7%HVekR24N(>fyhW5 zTC?mfsoMJ(rY=p*h3{Log&aK=cZZz?J2*&10kj(w#sLBV39$o2VKIU@L2mJ*EY0eqG|JNyo08YyIA6VpKbC=&w+U8R#$F3##XQTl5A!jYITHie7~ zdLy^e)A^FNvj6NdAxJcU&MTFnPk9wpcmpRpRG_wYL+0tyqx9o9 z(=c)bvw&w}vi!ScQh|}D8U79@INO`8%HTF!pNG6soip?otGLi^Lxwldqq+|WcP$Z0 z&YvKKU<~NB1+!ABlxQI6Q*hF92f?;iSST|{&m0{95ycd3O?csyPy-1|a!`x_59OHD zOBt5)k_sF(m1f$IgH5|EbnenIG>eqN(?2VJ0L8BQAQKSjJZmk{XbR^qO1QvhdyK>U zWVTU~g${&s01O_9qsijwadAPGfuQMH023bNSsg6mrxB~d9xY*MVh@tr{h*z=+rgfj zyeyR;`SRqEu39&4Ul~g6f+zLFo#nq@5sCa*Z%%8_M_dDe0dx?*H*J~g|3!)r+$0t< zGH=&^C7d)Sy!$SRUJfJM$)*>MdajbH@Ua8Y4Tn?q^ugb@Ly1#TB$F}A0JAx$RTjCK ztf;DDnCY%?AwP`duE9jBTzEwHv973%?~9|4YAOwFj|p0jYu+~^;St7KK#Cd-D(GO9 zjXDnA%I|Cj{>gM@;1K%63=rK3vfo5pX(TTe2oX&pWa3)vPk4mmmOSe`q&?m=Phip} z+l0Dk7@kOVx(H%HPRSa>)_5Zwwh*A(EIXNxV=;CxUhKDu2Q}7V+kGBI?G>ly2g=rU z$i||CzZQG-|IN2s&l`_2;FUmwWE?Qg_(FriHJ3@;OPen|$uR)#qQE;%#GzlV2ZgYx zg_;24jiKZ9)INRLG!S*NDZKd`TuzV{C?m7BoKIog=)XvvnL z)`a0Wk=VnyNh)pdA}U5-aSr&7gnt$&Z2&|VM?yTpQh^}|MqM(iLy@P@`hv})f|h@D zVkQ?eg8+Z2P}{N3Qs`L;N){ggzb)yu2h#a$g~ti%Re=q5Bm|3R%WF)6--0nmN(g8j zt+0+59{weF6i%|8L2H6#+2=kSbJ0H2Jl`Vw0y?-fgy9hxt_(WyM6^~lS9QFpYNCRk z$pPVWa#u#C1j!xy4_GYcWc6)6#zrF!Cz{Zcdgxj<2ID2Ih&3Zyfvx;jnkMo}swI6e zsdOFDB9?LEh8$yL*o^Yjx6InUJc}^V$~af|%fx)ZYB_Pp=pQzukX@qZccny09@SY8T?t626r=A`xm=edtg9y{^d+&G zQ0bo(!9NbmQ><$23;tH>Ofu)7Hr1ZKw>ROw;F#t2mxUM!E5$M~| zGUA67i1Q`6{v>uE5|R`_XAPE2Z{}+e8*3VOn0u`SQH@Z>B*Ceakm-FfR7-{*dZ$F= zxzU3TN=?$K&_~)&)*z9i7~`z5qr1OUazBI2x4cp? zTezt*wWC8qd&1WVsZDE`RLVh$SWJ*?EYko!C}gr+3!t?z1*L6) zl?87T`(ukFaJ@4@$Mi`R`i2T}$6amOKXbR02{h+T4>_3&7F$TfF(Phwe8|vxjS9de z*y0<`GgmoC=R=UrsH>0%5Dw>t+Gw1rG!i*!yet&X?I`nkD0@)Yq6Y)F5-^pM1D&Yi zCsywJPG)zUPa$PWKEtGYe~)&{AcH_OH$Ed$wrNEz>RKylBKc+SMH=GEpRw_oZp+h7 zQOkBFa}Vqn^h1Y%W7-&aBT}j3Ez-d~Ta!8YV2n?!bYJ_>OYffU@V0NpS7ULwEE_%u z9e?`~=kR&@^@CuZ6GOTsPSVE=1dp4V3xwj8R){kH7AD3^MN)tgB1#sPQ7o}jz702`0g~hWI7!!V zaWD*@k{~C8J*nsYi-r~y3M5`^Y6>l-^h0DC*tB_QviWT}6#{%P(r?_ILjF6cS>8co zQ7I02lS^pY0g7XjHWQVt!5@y#9obz-I(58&`ZFm`40FJhlcDPh{D+Zg!#>Dlofji1 zcBFMA=9)ixSg6@Twg{vIk>SJfhY)XRHIQNmB^SSKW~oQ+bAInRPKD>O_z#J?;D&j*wh!l)-V{u4x*bY)l@vkx|TkBjkhi0uVE z{J+Qt^fl)2*qL%(Dh-BuP$~uh-&Kgtq1>tl7h@%9qR5D~OOPUy*gdRdUva*YQ-HXW ztaQ^4n3=VOM=4uIAhjQ8BoRd^h^KW&DMuLv1-e0mJw;f2(ZWYH6!f~CQGaN{LR`ON z$HTT|x|Dl?H~bva!&I`+u><6KuJ0mwBT?xd3&tl?&WjT5Uam`~ID}Y>YMblet$kq< zz%!(8&z&>pGcy5_ga`!D%;^+iu8X_LU01%;?r!8|k>ys#oY2q+z|=sdg3Kzz6zXTe z3l=QWU@53)9fk4>6+CsrF1i-@nC@|>+d}t~k-CUtFNsZ+9q=nq4hkJ_78$#X;K@lo zj}M9li`Vc(EUh1&P5L8}PM$?WA3{aA85q&^=y_xU*;$q$$5#&9;`MJ348FDFhs&G~ z*z2)(7`_JcrK_@NvFeRE{&Wm4jOQ|alKB+DHs_c#!IU#6eKH1p+LA)ULFY$3qE0@# zKp$1I^Ukq{2p4sYdJkQjJ9B3!e1#g3BDQcs+hJqg7Sx{XaN<$vuHuU$-IwYP8rRX3 z5CjxklwpcfpPt^aDKbDfzOsIh00l<7vwoQ1QY&SImzMzPO+{F{;~i~{uYkqj1Io(@ z0OSf5{jlir1C6)nkmMoRa2Mzq=~XPv z;&k@-(q&lPZ+8RRueKl*UFhE4NGCntk;~ijzxY1EvcJ2y6&whp31tOg6~}~5pfUJK zS+>@9;PQl+4Id@$`2tg8HHPgr2KWA{xJzhH$dS9mC*Gt+4+@m^Ait6Pj-eaB#pT2z z=T%b9=wm$#a5cOHoT{eP%8$oq74_8# z%9%suT|cGKR?BL=4gwULysv0>)E0<~54DxV%tD+)!o>-NFZTo}#&=($0k2DWV$S=N zX+gZ1TC(dHO2x5nr|JfBzPS3tvF32q1gzymux&)%IbKPNku*n@0s+5LWqu2dgSvy(e(xum^JE;eH9VK`N$%-`h~r41WN>L49!e{3~;)dXo0;t zP$I|aWe!;rGibL$)2FNpf$9}CJACJA0-K{-!_%(c6I^U|On;0Esl zLXO~9MBp4}PR6cWf)g7(_Y2N+^&_$;;*Diy5ndN924deCvf$BHG>ZI}Z~=*3vrEC0 zGK4Pgb0_(WPiw5qKNE=Zcc=+$z;sXga$LojC^a|j7;F!5k#(LAZd9u}#z7V+S`~(R zmUxm$2YQGANcu5mI#hj?X~r)vha5ox{ihF0u@~tA0y-T8&b0|%)95Gj7hv_oC!{Ot zemp%Fmt$Xh0MRDF>L$f zSNxKdYl7{i_N2$>V-};^o>YVOu}hi>zSIO*D$@S3WTv|^#|9$iq!WR+wHO6L0ZuUuv)~~LX_nn^Jtn6yd2=3l>zk9NG_}AiYj#r<+)4to<@;2YYuzKp+S_p1_ zoG%wUmi?1ioAT~aJ3D;o?i}j&$L^2qO*aPaUh~^C*ZAlU-oXcP!&#otNjX#3z?Tu9 zZ5|%(4|_yF_IBF?#Cewj7_0WBZaw)S$KO5OSvxx*Ky^?1e1g1T0`xTuwftSc8l_Kc ze;j-t3~JFGm_07{%&Z(ZJk`_z1_qzc51o_lw+EO1_N{Z}`iU;lT6`z$qMvzvL__Ov(+ zv4rDrUB!W=gsABJZuaHo_geR2%s)(FnDvfua}xLi`qx;Rs;RmB_kp~d^VhfG=lTNZ zX~AKguU9sXVHzD>?VW?Fb~PE%ejU5$VexLA3mcy3xT_LE4+8Q0{5twXhN4os(xM)7@P0o*=&F=hlZwurG)Yyi+8| z-AF}OUj*~vsu2A#VmEO2Xc|Jtd%jGBK1d1wRVmIojxTz!C)#UYiR7pAV|=Q)t_;2@ zS|QkPKfckjpN9KW?$@s$9fk4ia`^n(0kXIj0D_>ed1b%t8rqNQsbQmL$M7AK<$Xx zePL87y(obuUlihkbgT?oj%Y#qi z&B;DU=&lb)Dqd{SCiXomFVNd z^ZMj5=42HtF0c$piBzV&az{>#9r?q43+66Jql|GV>uMJR5D6dL)b_=srM`YGP--b& z59-AZu8_ye)W3pT*GE>CH?ux2s<$N5D%@0Hji7bR5t68xCtYJjaS0*gGL zVaZ+*NoR~M(=3Xh9{PtMO3_`L1fKNJds<#0o2u7RqHl~ptBIFDW|ja z@ub2kZREs@yM~AW`xzL!JDl6%&_NuuuhiN{T7+{vVYxt;CUrrOxsEC%w7C` z*(4^Qx^qnEhZyD6hH*`M})tR=oB;}u=y#~g`G4MZ7eoBjZTJ1J}MpS=6sp%+PUQ1e$G)pIuuHaSKJXy}& z(a{&jCpW$)Hd{9ah3_lGwg0X^d;iO@PJ(B!j((shC`m#Pj;7*t+n5ez-c$ zS_D5Dd>iAAQTR95e zn&yR(`?r#z8nn&nK}ln2rzIe`{@A}Ae#LgS6frni>Ay55t+gY%luA^sP%KdJZ42m< z0R(n1C3HiAx|uVm-ZJLt!GLr(Oz^L}pwZ+LAc2=b1_SJw_Rd68?Th2EneD&cGww65 zGwmnmSMI-GNPr-2GZ$R(Z;PR#9;_i3ZvHK!WVjqjk)PgHysbz&y=&u9s_aUJ{d&xPNx#m;(XhwDsziW+I^T^lj0XGK3aS#!~v#dOj?O}3Eg z!6@6AC)-v&GnpDwNU@_1UC&}PgI&Z9H>VwBUAUq%2F1r%GaJon-jA^8H7$0P{(%Pf z>&_XQ{AsJuUJ5UkMK3X1;7)8x1l%A~?tQIm52?yCr<&?_H!_h7w*F0WrcE>(HA(b^=~gX|ml;gd9pX5mSo~NW%zqaX8YRp6AUImAIYKUVLP&z+Ta%07 z+KNKgzBhRqK-93LWE*EpIrv0UC(7b%y<8-%Z|P^`N|7C3g3ve=z0c#~96Tw|8tKkN z`4y5IYlt{4STu3>aH}s>Y>l+&a9W4Ovp0+H0BR`~pb8nv?6B1yhwgxnUCE`fdDI0E z&LhT6yhhUVKL_0I5hxnZ(&sTwVksM0HfGhZW4=VNpGYeA%+Mj`W(t#rZD~6+AL~v{ zg;*+QY|AavjRq~zi(cv?J>h2exvbL3(Pph*xO)or!Qgg=qOkP_CVz3XF;?zr|9P<0 zS*r8Dv3Q}UuYAc3Rj-qv*yo;!?^{_`axYnY!(Gi{@gRtiU(KCI90cw3R2_VFOsG_p z;9~1PR>2@UNoR?rUU|aDyKh?@;w9470iS$>FECo@PHkZ>a24)0Zh9B zhD_V=pcg_utjBl|uV`B7Q%y9h4OA9z2E#X~Mr0J^#+4RlM$dmlO-R&5t@eTl41*W3 zxs-x=jzR*_@DSaNm>siteA@ngD`1~$#9QLM(?Z{nXk#R2@PO2Uj=?;J{P)1%9ZQ_! zy(&BpJ=Z-qO#rqh4lY|l5#4nxKApp3dK5_~c$ZO+4S-J!FQtRWtFmu?@#ZYtxe@Ol zcPu$nh~uxra#t)rcX z75<=l{&W$&57veOg_|+VxH>epX+q|q>e8Zz-GH@=u>S0Wg8U!c zf>X{!3H}+#Yr$Td0v^XSyrl5Nmbj;xkW_{CKJLa21|miTRZahWu5wC< z?rNGfYQ{J}EgO`!=u9D{M;$TW7=W-;~lCeufnewS-qB>Jx-Xf?c z48hnmt_GO- z($GMw8HH)AFSEUkgX*+HT5~I&3VZ(@;_w}$zrAHMuOPB7?vyzKN;h8-9mlhx^ZJzI zz5A$N;v)ZUJTSleP+lnX`g%#bp9_;+ekJM=T!EKk;)%ZcE(IBjHpRuu%`5h#osv1> zDg}9nCd&U#I3s0zB|H2C_DP;NExhK4K~^R8g(v{&z>AsONy^b-%i& z@+EcVQiG~bDFb5S%K!3ORUV`c3PX>m&(E6I)xLh^;z(=Cw?aR#aTVy=7=$)z2|;sS zd}zABP%TZZ6raqIx0F#hGU0Wg9f?hGiro?u7C{kPdoO#*Hx4w}cDCT(MhZ7E=8y-X z-hZIJ1ug4RptF@LU!Cnoo~YEzd_zb!*mm>%A7x<-D@FqUGhc~?{J$%U|2kty{C`ju zcJ?lYE|&Io|6{bWMBUOwc@(Xu=!$QgS+9?MBp(ReX3{?^h75c(k~RoiQ;(DP$w4{dNw|j{8l{{L2%>>JCX^=UHgn#@QcX{fC60881tg?o+Q1bR+`b9FCpc zY3VM{42~U@GfIxnRH@ll|K93_CaFg19OW~#lt}6$pGWHMQYAeyk&-0poXUcmId`p>qH&T2_r!j*;LrO=|1l*_*gj-1nk{bh7bS`E@Nk|%VOCwSj!T}1MXrH?|1rx!{ zHY`u0f;*2FLI8fgs0S@_gmW>Y6GhRuMzEssWw4vlg`{;xMs9F|ys4R&5G60Jy!ig^ zB`5~ut~XQVUQf}T0y8)6DCrJP>`==KCN@@t*x(9aN5TU3VSG&Emr59b*ti4%B%y!K zgO&>sFX&n0GG404h_OOR_%aO3*?20NMJcTCmW3;@TFo*;W@Ro~h21!N<}7-JRwfuW zUODq8?!NaNyKJ$>rL>D~So6JOp^Y>6xW>t%9k z?%X|9Y_((>Q&wQ0pba(8Y7+CKCkcmdSJ*QjQ3V<)yX*FP;LYV6b2K;iP5ETz-mx8t zX*%j|l%l&Tj5Kvtu-=2WIER-4`vBEIqWC`gZ-XT(7KW4g?y1&^m6`)8AulZk|Hr4w zRs7?qZs+wRDqm3+GevXf3NAjXiOLqnEIzhuED1CxOE^u_Fsy3r5oeY7F-sPWGH4v8 zgBc6wH`b!PN+?yDHu1@$g$k+!Gu*Q5)KR(6T)?tNBNw0k8)G%WYNVwxcghJBT1R${ zZd+io4nI!`hCy$&5|Y@$TXrs!QAJ>Z`J<0L#t@GOn0>VYZ+s55)5X|Fa&DuPvaGf= zRfzu^P;?jD5*#r9FmyB_h2o#5QCPgKBtD z+w^;X+8FwS@>@RTTSo{;ZxYYLB53z;x#9S=A9i6|p19?dJk&O+C(BG0rtQO`*c+4n zJ7i^4UXjWOH8F+&3Uv2XnfoaP^yiZN%>r3*bEI$|U6&w9@~m~4=Qe7`Wf_gjvi#~P zchTE@KI4~j+m{^2W}%qbmO~D$wi$8w2mS;a)AnLJ>#4MPN2**(AoX#f#4Id>{SoOm z5`j1uo4fc`6)lXPe60sipKR8MEK=K`A!=BiUH`WMca=~qPD;V>^h9U?%83N-xfSX> zd6)AB(iI(QzS@S=Cgb(4J={6yb;BN^Lo1v;#J1rePk^`0i%6gQ<}F{}^Tw@j-}B}z z{qEl;z&`eFH@gnZhd;CVxPzZk#c3w!IzEFf;0NasNlJ*y-!&**1IVJ(xV}QS-$*|ABd6Jp{{Tp1} zK>cu}h@kqIq}}6tka{?neY`O;OWGKkjf*~UoCVr^W#K>Y&DTeC{>~KnmNv%M*flTY zD>>4@Q#hL^vEUDyB~bxY!C_=RzXL&1q8sfnuv!Bw#8RYT*Z z{_@7M&!+bR#G%cbuMPn&@je#6+hNb16O#1<9%~hATfydI$iXC8WdLGFcL|{hA`1Lw ziu_@ZRHr;Y4h$W-YxG$(EmgE?vxMiJBBL+=gBO6p8w&K>Y~X;Wjrv zWdyt;1wGTg>pnV(9tFOT>qMa!xIXXcX5f{!U@D4hO88212gaf`D*Sgq@AsEv)v10{ z>=#}6zYKcPW_HaQ+XkIYllB(PqY1!baS#xNi;t)9HFCjQWN^Ba-f@ZQ6yQQ*`dii_ zPRzngl9`N19*c;{&f=en1bHXSA$#B!dHkl#rp7z-I4#m;JSY!oKfGjJkQtZ|zm%Z~ z`9rYSKa4)=v|hnxy^5jc`9tcFs=q%pF*$Rmh2>&W3>uBm!LjSGKwXtlH)Whn5j-1) zEAwvQ;q>+_m3a!)M@ckaC9yn}c|e>d^&2If%I!R^DI!`8h4q=|G_T{zNV0@k@Pz`~IOb=)_M{u?~*1wav1rY0v!u>_Zxk^I4Dsv2I zkJ4bDN__nE4s$0Q1Bq`m$hHEEwelhg?j^w9HUXsXR zd&Kh6Ve|^j9pdPj=G$)#kmwe=xSMR=yJF5fv1L`AOnSBRgmyMRtTMr8;boqt;pLd> z=#{j4V!5w>jxWknM(H&5R%4a!nPz7ApU1r>la#zRt=AuqPDR|@C{rc7&EhuGArv$W znxm-S+K!G5`$o+^cQ@4Z__b|o+C47}Xc%z|EGzp&kG#xqIuEMQT{72CQBnW0Oz+h} zKkN_9f46qqVw=?AI0!{U;YUQ)pk-N?Z2kMa`v%hXbpu_Kgr-}?zG{_W9Tw*ki+#`Y zLDPm`d%9umd`0K}_t&cRUWY5#YF^68dM>5@dW4%zO?r9JBbW6Z=pQkttl2-4E~|7K zm=}I|yfIlue_GXHz?FRDst5lS*D&A;>OOTth#m9)CI-p>TQO+pV96k9XYxbZF#LgT{0~8B8`BRRD2OU{ z!?M^=SV!;^_Y&$S3>lc8|5;uXvqs4#wzE=*a9UKz6b$JT<&MAQ>{rplwZIU zW~P11{~skB;hj%Z@l)E@4{0*VR*2?+`GUzIS~|FL*w2Sa1i|5dx`v@CoeBO=(Y z`k(w4Z;;ly`a8%DgNwi+-~IwBAwrE9bLTx^-sE~Vag?0lF3Ih*sZYmlU=2fL15|@4 zMu9|0?Tia8+j0wTqg_Sh8%(nuGhNK{KdQf5Foq*a&eK9IozI=5TukSeTuB=vQ%iWI zL&dgngV|k}u6hvZLu{H~7~dy^6vwq9Y}J(Pe10t4cATxh`>*=vewW4VrhufW!CyTg z@&o^;a>z@lfU=*uZvU^9|M#4g|Fm7*$>OW0XhOh_h6AbJsm2~1_VM@S~NqJi3WNRf72dYqzR z9m>S)(5^;WhMsJ4e1g`<;sEm6|5_q8USXHPCHNpl82W-yj7}Dqd}>OTO2*7wZj_m! z5nmBknw}s8RIDRF!Nj1uBS1yN)*hT7gw^W23vXy_Vqjum1OzOOE)H%6j!u||HU=_p zBRBD2_{k2%-K- zQ#D>{6FrCx$3(*&D*D;J3qirsvb&m+*jr@GOiD>!kpza4cKZ zoX!GYzd4d?uHCX)qt#3jBCIq_(f=iUzEt(zLQB0!vr6PUj9W4v)D&O{qB-!tkf5l>e)ivH$_ zV_6yB4}@qJglUA3j$q+gea9-}bB2`QRz-}lfl$35t2jB4Jnlw~V(ZSipLHNG5pBQ< zI~&4bocEuW4lohMdi}Js?uWbbe}1ru{@Vvz*wEQj#NOtAeLvTB$5}@EBFC0);FYs6 zTiyc)P5M;|H(9Q2%8y zY6CRQIjNukf&XKJ?)CSmuUeB(Fshzn9K9tBIuZ#fx#Igc!n%Vtz(2w48U3n6*m*wa zLJ)x54fCM%XVVk-I4cov5ns`P6yL5_six$_C*@v->1UA;V* z*{TIyMGq2|4$EEG9?O(LilBLuf&dnM-6RJl9u(xt2ZKY`IruVV6mko7d*l86j$l3Y zOSii(Dv_b^GG${0Pi1ireFaN>OGCxKLNqcVCQ2f!(=JiG47c;gPjD-u=lb{?O*X>9 zsn~^UXHce8X66@VEgMauXE9hp*-Ffz51~pYHM<>zTV+~Gl$*_`ppUGvxQu4BLlue5 zN1%!^j?G-4k&~8s))2cjltb6(;Mk5qSE_wNw>$@Pajz+6G)}@>IQE}n)QPX z%qJrDXEn_HM%Zb=HjQ$=jR{b(OAgPZfzgr*4_z*3<^N$L%v^wJDN?59F3+Cnf^{d~ zWR6W?YrYGfd?u@Mu}n5=JjXMq&(pBT{rf;OF4^*Rc7pa>^8+Cftw6fTi<9t%hiF}$_N&>u+K z^d>lA9;r-#1xaxQ@i`y!xulVTB)j8~nol?Atksx5A*bZMHnGkY)_JJ4(;!>>UZx2r zJTr9=FLA<9Md>w?RgNTX~vZ4$SNv8e9Xkz*IZ;XtxIWa|-?+bionS!;30v!vf!I`aZ&JJZP)wqK}Y34&iJGWm%jh_<-z zU{`3@sgFBDct2V*wh&Q3 zFXCRA%380|-0WQB>=|I+o((6}Wi`>oezDj)i~R2-4;8}=(08@tWO?M>d~6!hX+G|@ z=q6i}EQCm|K)x?lR$ARroV9&U?_$Io1o4ZxELq__hUDIFl0+YsE%Ux7>oxA~;8=qf zYGR#*)KpVZNrY_)2ei!x_M+k(1lRenwsA+_eV<_K z&I2t6{sC8(POaY2dgTTw=QNx{zBkBKx|$1R^Qr2p2+r7aLYL_ow22hf z1DaWN+|C?WwW&>h#AY47`R=xWFOn@`?L1VR_Ppx?5S252?ktEqQq|uH=il(3UOu8Z zFI*{-1>Yb#Y7YYc*@XS}7Dw12fPfs~|MyM!zy84{_-{915eq|yAA$Kl-YI+&b>&fn zP(ydlT68tilp+Z=6c7bA?(6qk1IfXSl^TH)g@4$fo2HsdZWnHm`_;dPrR^n#uw}d0 zzd*kOTEBn}*3U{=6}%f8Po}tLy^nKVU!O1BfucMrg+^u3T3JQo&ql#a*bW(Sf}Mpp zYmJ0N2w-D=QFm1vB@k)0`h=-RrRux$y0d%-26P)?YTRvg?AB1;TMb6We7=3|g?*l+ z6ZKrS#d?e&P9HXkX{mKZ4l`PC*EDZ%QfhvIGpJG}F?TaNa?Ml0Cn?sSEMYB}t@AMA z8g`>KPy9c8ePeKC(b{Gw9ox2T+qP}nHam9Gv2$XxW81cEb(~D@+;3{W@6Nqbr%u)S zv8&G6Yrm`3+Ryu-8nJR{46g=qT%QP1-N_=Jr{ASS`jYFZ?eczYD=~|Z3Ckx2M}lA=ktENJ;=d`X&I;&k^J z8c0GM$}-Fl(iQ?>#q;FrXTs%*XtO!%i2kIqv3&aj-j%1%7*}2(@f7bKJbN5w|I4-d zT(6f3`j0v%Gp>rQrnEYPkz0DK7zURs(KXaKTp1^xw)mnxD;;tr$iHNiO+^T;CIRHqSazL7Zgv&V;qK&0vKD`G>Y zXW0X%RhJ0ECkV`j=Q=A`ic@Y~*C)}9+%@ATL;t(7^Za^pW4@1;o&Uqq?_VpM^8Z)a zg03$1a;~;U|EI=NRK9Cm5rH?Y8Aa-)HV}#kty_AQmcmZ}br4FcN=S(m(P+Zf+ZMg0 zee#NyNS^N`ZpPnWFPMxtH!=!y;67S$suN9Or&j_=jbejsq$4&MnDByK|9Hu z%B-OXBdQqvYjO(IJ`x@CK=bP;Mi_-7F?kzGgEgpP)sv6nq!4qfE>a%?s-aZX1a1s= z^Uk2TmL7yMag2y!QYzWF5Vcll22>&FI&kiEje@qIOt>Scx+-WLL#%-q?sA_*aO(95 zzf7i~!8Ao!|K#FSsiiot*$Lmpd^YBy_*%INEMe$vbT2x7zG&_WES1fAJ-%wl{!OAo zqWf7``}iwY4K+F?WLXc5I0`lpOcLJ1_-eM$tdYmX-f#0$S#^p>cF_#8d3+(Zfz2+z zC=MC^B)V7drkx*uW`8P8KN8(kz!Gx{xGP=&8ge@_Z)T|x5pmz>3u3cHOo`?o zcSdtWT(e{MMS?9Nj8s%uZh>fPX77XQ26n(kkH~w$w(a)BEv*D%ZqyO`lrt`{WSxDn z;i5BB2A zwmX+}y$fCfGWpPy0}^>`){0?r0?4m$n<$S#C8G%ms&R8|k<@4sa{+A&N*5tz3(G(u zOG|7iOu_(M2$Vm-p;tgI^GbgLQ)hKwzq;I~0S!J%LjGUz8=cpi-rIWD5#-w*Cs98f z3hI}BvU-Rz7Ts*VwcM0LMqSZZa`8smbJ$qu5?Xr#@!!e(NdAxq%i*GzLbmQ-y(ldp})hoo^ z?n~pnGx>$``=o$&1mWvD_a8s|CIj%@`+?Axylx=h|6to4zmR8VMp=KM+G)3pw0Ryl z?eOFIKy~kiP2b1b|Jj9ON7&!)vv1#}V@FtjYTeDlzH;p+L_7O-9y#l~u8-f|$K7`C z|G;|(`iwWvaoc6a!!R8L+-RbIj{HQglf!f9Ploot2qU)pWYp8tk*Ql z)B-6zJNvx{f%;B`b{{-7yg#Gz=Nu0|={{S->zJ*)g6e(XB)!AF_1k-1x%0g8`al1S z`y7emZ@Upi?+Q_vUw4wrW9?|*pIKhqz&e3@2yt(AV|!w63H$j0(N!Hq)J`mWD`C_~ znJhVoREUizrIi%nLY6pU6E{Ha3ZgD=kVn0OEKqtDNj98mgz0N*6u`OF=oD`wk zIKGL@!M?G)AvmtHdz6}LAP*jdc1B!Ib`nX3jLDlIsKFBMFn%!dD~CwrOkz%hF-?uz zHy<@eBCHuk*6e{rC^XQL2|0@0Rcy|9GXYXd2`4g!j3|8+<<@^_12yw#%r^ZL_m4!J z8C%ZaL{XxnP~AcpCf);V+=IxFs}=`8Qq0+@iw#9JyLRiknRq)x^?NR@4`rQU$Re9` zrYswcAE)Lom#6!Ytf2WBvc>2#?>1hQ59J2Nhgd@p*m;okZ-cbjWUmD-JHd>kO zBUyv%UTeS~Vc-_|wzT=SzWGa^2Kv7jkk^nf2!b0~TI^0wu8TtmCQl`Z4bTXj0n>h)3a_hmekkwc9xg7*C3*_y1e{m8TPYq+U5b8 zT4G#w!oVdtjvUF`D|b77c7E7u&M?nl!hnYeBd5#OiO@KsSvL4hy3Gk&JN@1$s-#Yx z@g^G%e?U2n#~ofyi5A;iCoaS2cT$>+9+c>1ee~>)aHN{mg*ZR6#7hrl){n+`~tRaX#{6G$Elehck_#C3A)#og*V_ z1)b$@O#|^j@UDu9yfQX#&_P;Rf`kgX4;tVxLV_w$vIOCMxEnS9Ru+LPjF6&stS56qewPVXY6L0r0k`d|h*X>y6IZCM>X!)-GWK%IaI{N;1PL>uo;aVP zC8NF@Jmk!S83qDUE7EHY$BS{Sa^rAPLNp=qJ%!t)8RPM!rU)T|G<-DTYnaRQ9B2@OAsqf!h?wFtG^prou(boBW0RNGg-IcoVSUU|vd#W(3P9R#9X^lhn4R zsHyLRHlw7~zGq*X#CI>Imz*w9(zF*2QEeDK>UUJyz062~>sxh$^qW%SMxJ2NvkLkH zHmB=!Qm_h}y&)Y&n3z4Pa)DH@LV`y$jJi}>W=|i|LLmzcdHb%ozR6)UQcufR35e!t zXzl7G7&0pNp4Ej+fQx)GZP-tDt6o8pJg*w{U=l4W?&Q^opQorHeg&OHXeax)l9cku z7!CS?I}0($rKDBLu`L%hC7GJ6k?Y@e=}u2cEJN~UY*~Fvd3zVDMb7yu)c(Lb;6%d5 zh?Z|E>_uk8p)XDH$C@Q2>)?j3vsMg>(s;fuMRP_Bq=-oO6(Y1yJz6_4UB)TPNLS#a zZkF-&08M~H5-XFPxMk|~6fI^Z?A74yizbkZ&cTDyoYei4i2t`jg`s5$X2!2!3U6g@ zgh_|bmdAqCD5ykQ*<%77KO3Kpr~>2df!{g5Fs3##z7INTpl;_8eS(*`4SPIx$zkM= z=li44TL}{+aq0RKbBa3#>_}1PVzHKuf@%y*i;%NNjyVXR^E;!}Wwas1MrPibIa32> z$$g1#4ytjY{RxWI7mdTekJvht*?AWG+bm^(?V!Y0z0}s1n$nM&emA%*5SU;q-bt8M zQjT;o6WuQ0A;%PD{)(+js!6btI!Q0F{m=!C;2={@?vpaN-^ogeObU{O4rvkJo>v!m zz*H$f$l#^yI}+N=IX8sYjSJLHySIWZ4UR0vu1=?&*0U8MK|~7-OX-;gIF@N=7u~<( z8bFqkD=F~ujuyR#khe4OwZ0McPzjFf5oc}1<16VM-UWl@17f#!fR3{ZmAAanY|Yph z`9u)LzmO-S^U>_*XD(ph;g>mb^m`BX3gL7sfqzDaecI#Gb5aRjzD3336{LH=D}=Xx zrs^u$J%3hDWNPUZrWohMV{YzlySc{t{P|Uu58fGlZVCGp`gJrrJ=(lV+v}l&A2X1t zT-Y#O3qdZ1MQMdiZbHAtfw#IWVOi@aVINKYbW%11gIk8Z%zi~YS%PhRI)tqIj9+pW z2K`k*nU_~WLDIb^5L$w|Sd3!nfSq%sl$EikwBf?S7u(Nr*jd?^pk3X)%HSM>E@Hkqkdr(X`nYK&)3^p+Aeg9+dA3m8_hY++`2 z9y&!dL#a3`Z`ViXK&hOySWL5$QW_;rTC<#TJXs6&eD+!?wSj~Bxh~O&OTKO?nF|Te zeIGBaUP@VwS@_X`xo@t+(DXSa4D#>s`?%TJSNVPgEtZ($N~$~}*aecjB}e2TkC$A( zE(X2GrUN&uvPO|17fjFuRnKc_ z1i9v8YBuNLWIL#-d|B|?p!DdPsJ9I7=kmeCVDs3;#m6d8I)-N)RFrNh2TpF%FJ6`W zl2~c~dj&2`fL1)OFWMrudxlk~$K?3kOkxoX?k?%&q;7t|i+1oM@v)O)x|jI#)J_L$ zv-FrV=)QKe+xmH;^3h!lKxuSg%5jcuG{NqS4Xl7TR+q?|Ah$IF6F^e{KMo3EzS4-p zX0HBboq6=>P}|wYD&y%Ba-aRqYN7h!NK`AywGe-hvt||NX(>L+$;6X&tfWU(hQ=C6E4lf8<)u|r;jKnJs9Fvn4?>vzAJA{gK zh-$}3LxipkW3CnlxAr?($kjfWdG~S#>^gvc9&XYAtcyq|9`mETmm(FBF7&9HTTTr7 z3jC0Q2I2kA14;^zAKi?&!vV$D%NqyC&$^kBU^P3wt>l8`6O-vD>XW4h99Ag%xV~bS z@WHQZb%GzWCk?>2Q^fw#U(q%y?cIBq#z9trInvl zlx`|Z9n)#TA#LKx5vK)n5_^G-xbt%mM)WS-Zegf63+u172-YfoE%#AXb_m*5zw`pJ z0>f3cvQXd!jsjPg>rb39K!iUZnDK=8=HnW!2F#eI0+4$or|}Uk@e`GDO8(r#MEoTl zo90L3$uUx3_q+(S?`sJG_S#v$!6g)g_em3jTkA&b64zHH?0qT*F`q}*JG^68m{>Y0 z-+vnD!KXQMNH5YESb{I+%1IrWYs{dnH%sMu?>ZC}`UFGjK4Pe>OIa4a4O*G|nu<8=hxaO>MxMYyhjWV`R}&%n&ec0KNnj_zuQhBET&h=q45D z@c^xq-Y>=yD&IX989v%vnT6Ys?FF?ol@QD0n=Q)4&HRQ1FPOxr71x|dORfsc7H?vm zkF+dE%qECk9gfEX*}OmMK$v61xC*D-hkGOaoD%N<&SU?lucjEKWo*V~^mfon8(Blh zG0^HRXS~co$%a_&XDtwS9ws-f;fj&dl2Mpp6lNGL6O88ru;aMlGxl@Ufm{624ZD5t zmmr5?Aa^^iI}`{V(msh~S902po5TJOl>N36rO4B_YYLV0=w*{W>A*K}#615XbkcNJ zU@(Vd?<wn<&5h!@3cU)Ja&4k5n5LePhIGlz|yA?9x=EW6Fh!L*8!|f;kO+AyIaV z(X5I~kfbPMFq$r|Z{Q>DX(E!iV5ub9DEFlLTvI^P<_8W@SVJ8@kUvQsStUc!5Upcr zw8NyHv{kfB${)6G@Y~wtIe>bQ)-L?A{!n$#D!$0wXY+xYV*s}|Xuv*h32co?Kz8mcWM@oS;*g0f6Hl{9hB8zYO9+J$#@hRVgOay-}zIkpxr2poumLY63O*>K^J|qd>uJ zOf)T}!->vyN+Ugmp+vXLYobV(_aV){w}PEx605SV!m}4xZE#i2o8i!CRa)S<(9vvh zU1%NjnphiqNeB4Fe|3j`sKVU$ z&utNag`UGhE3)@T)Bby3u(VZ9pX=oSgH_akd73} zCCVN_SNOXkK6}85`Qlv0eucJu?UA}V2fnlYsDJ6e5aQBan-d!5*>{(yc@wIBbF8Xi z0HsZ871neNPovEF>d%yy4y`T#Z}~UtI3>u_Gj_*=IaKo@)vQ(n51CqA zBklg3w2pfGN48Kz*QI8+^XiN4$dDF0l#n?lg^W;zEV-6!Ro1RZMOi*`mIZ5*YZ!9X zkl3!sFWH5?Ns+c$>E&17pK`qlkA@uXZo$n{u_=_&$J*BQN>SvA?gbdxB${P|NfEqM z>>f~EqKTU%aeOFzF|ceaaat@^oD@4{6y=aPvE~zlEEeIX;GPV&Ju$%ZWIW17YgE2f zeb?Od)|pLiecc9*g;2YV-UWL)&!)k42&UxgrHirP6`P zB8!rlXj*4g$F3ME98pgd!(`L}HEtR76~l54uoAZK(VC%FI=Hfckrg}g+Jxom`O~F_ zBZk`=0rzasgcb&u3DfyNo=9r^s7(ruorgkEtyMzbmXyD!Z-4MNodz#hA~m+u0dDLv zc2eQOB8*BLn#QfMPf5H-$UCJ-R}_FcH7oOmvq5C(E+IH}63xs4s@QGs(QGEdy|*GJ z(tJERrMp5K|JR^KBqP7oO#fE8C^_WO4l52PaJIK;o`DUNk;nyv&d6e!#*0XhJM5Pp z3d=Bq3b#wt(~ImMzl;7V5&1%}BK=qQILp&tG#swXMv{B54ZqkAkkDUN9T^ej1&fJo z5nHE7bi#e-aD^~Z59AVIX*ktzY<+f}q~%Z8sK?p3`X(JG9Jz-($l{FQW_IH^F&m+wneI`aS8N0H-qZt20Ze0 zyW=Oe={fKw_Y=5HeqGXR(38-92-Pce?|1-H;pm5(#**hx-NqO{K-)JZ85IPe@Q)IU zibyf4XhcFrp&)}6KeI~S0!!XvC+@j}7E=tBVoIGCyJq_h8@6(!y`<5kx6d~*=%nl7!K`vBAhQ@Sf_ES&2*91Y8fNYqt0Ld(V#4u?2x zhqx?=@s>Dra*;%D;QcslEmz;FX+g}28>yWk$C<8zS?&s}d*tP>BbWmo=`=t+*kMfi zJBheVK$~o2PVw*D&)Q_kDK2GB zP~^S5Oy{U_HDqvBg?zd|%`i@$?^Z3FIpnIbgJ&54R!RDvM#Y)A>RXh-N76Z%1E8R7)vgAvrnYjT?~qE^m1QOKW%S(-lUbx}EMX4(&1 zc3b7JQgr2|O&-T69TgS3(hOcdJ+SeDXDM6z&Mw2?xO=O>M%j+z;aW5>vLIR5C;Hvv z%^8E!()o8?$FP*9OlWXrs#gsAIwpgfHc;Ae$VIyMhQ=pzi^&HiBWMO7N8HH{x88O( z!=JBH7HA?y=LZi|!*|LlJ*ESGmlwz!=E=C?cPxjf0(Hl&3XapO{w!(})cAou=V(K| z(2tM>r-F2o-PgPQ=>Lz7j{z?<2>|oQ4{gE!-tl4jm#8%2f7|g9u{V~nbapYd`#&93 z(|Bp=egTxw=?B!zC9QL0kr~|$44w9SMFcGrYPvsBw^$`4%!W*=w}7@A@aMt-Zo};PJJ-_Mm29R4DeJtre#-gq4i4sH`6FE~Ay4dZIObb zO_9QtX*ittPwP7kfs^+Cm}3YII4$IFYGmv8_y1BO|8AkUlEM zj$hL`b7!YrK!HDi64kVT(84)sL73`E9e?%XFltK5&-LM*T|v>zEy>~xpJKAx>KK!| zB{t{VSz2KeYv#w^A_819o9p%m#FNTx8`JX(0R8S;D;qQb4;S6?rHlqSDy*>R1YCRkF2ifUg)X{rMh{uP1iHQF~ zxziW=)E@bQc+n^1N4=|#&xL&H)}a}kHg$`E?3G6mC`OW`BeYu*z~lG4uMO}KdI!1y zWbup@3*a3lkdbW5gVyVu0El)eQ*}w}yBFk5IaRIzkv~+GRDZy#(4ODlS@6-0jMNK%&ey%Igg+GE4z!?eZb6D*{)nK1Fr_uR450qjgD@Br~7 zF2gG1=@L4ynQu_ry;vL!Oxwg}HRt4-Nz{I$PlzW1G27MatuO**d=wKB{6({*1>(EJ;#? z2??J_X?@jAHH>o|#^QQzbaYW1>7H)H&5!(nT9z>eEwB0dz`A5P;|=?IG#G&K?AC*Z zihW$z;JRL2bvW;asnkPwA$Z^DFP_Y(oCk*x zSe+dl*}{Sl)rBQ}c0Cc>%|}hH=iFM<5OA>izU0~gOMN$jak?i+UzvBMVe;g|2RXhy z2d)H^+|bqEtPQQ~NajPm4BR!v&SCJL&T$Nhi8v1&*X+GSbOv_pAMUMVMgt4~ici?9NN3U0q!<*9_2KY9n5N;eQ*exybYav^PYN>29h{N8B zDz&S8Q0{ZI*_ze6^B_wad{70Zz;a$u8F#{o7W7pUE0a@Q7%|aDdJfBJ!&2g9w5b_w z##a70D&wcwP13EI0GUd2I|{p~N0*$8C&O4bL&NK11B_?t%4ba(cnLD<>{E35(w#a( zrS0G4z=(@$uI*t5D4p7rJ_x28H!ZFN%bkDGt1eAz{4H-bs57RJw}*KzgK07D&2S^z zLqXdb6M!ej}&W}z4SYqE6wzJ zZuij>-@vIW+J)^XoAo6z7A{xDhln8+6aLuspupWLK!6$^7BZ9WVJ{xZae8+VC=7N9&)Ofy0&@i9!dbdt z#33}xC?iXT?nQj(en1Hsd#x!Y{SqHeF8Q4U7fy65sH%e^2X4IIXq+kqV2L&Yq205GtO)1b;+j42ED z78L8Kd^W>pI+e$Z$X`Z24|eU%DLZv=Y34qn-NoXI^*A3O#?>YAo84RV$g9(MICkyo z>S`@8a4nmgeZUA?scdZ?Aio@Y%YRi+Qk{M=XAvLv&QhreLT}}wGXhDdNag`rW90!` zlc6s?pO`1c7-{Vhr_*aJv=zl5oXPu&qc4Z*qOMJS9Dmuq_T+wjvT9B}o$fQuIz6nb zP%||b2`Dzx+rvraw-uaAS}kbs2h^E2U6C@Yb8g?IoEQeoEtMI1ZMINFdP^+Oxc8k6 zTrp?33!TfTpD4w}4RR#a$}9OiTNUtS5CJC775dKBUi$Uz%0>lRSMw7%oqPqh`vxY8UaqHLpxv|JZAB(d>*f& z(jbN&XLJ`oJe6x+CH{qxLHU?r*-zvn4A$Y_oI|poA)HR6YQ}Ro%10xlnla>)3D)&k zZ8X{(Tf@^jo}OK?%dNx)uh{R6soRKgoH6o2WIJ9$j@|fo{Y6oy9Pht-z&%PZeOkfs z4-`!{tjA6Qb5fe1Z?8pWPK51=V6il8Y_lt_v+mZUs?LJ73eBZX{r*7Rdoei zjc` z5z{gx<69SH`UVQkkSO$yI^gly;`V6$_7557o>82F_J8|-cZkrkdJ}d?X-@3+7Vjh% zS_vA?Bxzg%$x-PI3t{#(SR%B9U^$XyACd77AP2U(Jc%l&B8Vq2+uX?3@ zXUkNN)pNVJrb;4C6()M-b!!?J{z%PV|1I7MT#`=>x3+%?h(6e?^nlj515V|+(tOSy z(C$2K1=rO3z)aQ^=_iECHb?Nml0~-gOI;R*&nM%EKy!@gt!0Yp?M&D0Jc9wpdGkVT zNQ*UY3c>q{Gc22`jBb*(_NTWYZ>=AAnIUA-yv8@_sfIULYO71Fbr}&)h)#aVdD(HQ z-tOl%x&q#NQGO(pf_!LedSqRKRBen@UHBMcAyh|P`3+F{kS`1T)4UIl0IOQ-U_8KQ zrzZ=ADBjXbeTK!?m%;cC)Szcl>uP8))8rvP=NQlDJXu}u_;`{HQuqpb37i`tIk62|Z)jAAh(5FN zhDo)heX^C1dm`^yddw!rvV$V7QOR)?sXK`r<{jG`HE-E~C=)ZVq?)ysMmx>o;hU{h zYyIgyOAb5y{f)RExB`T@BAlCnYFr_gE-HpwqdZm7stj))!%m^A6?fiX&f!uLMP}p^ z3k&&3iQ1D!RICXs_a&lA#0Q&PZT#j7nD>u&f2LQB3z?|d$m${nLdG@8R3K2Wgn(cR ze_@{zJk45Dm}Ps$?_!(lg<_pgENhy7mZFwh9wAD^h8 z^ho}!jJyb8jQXYKSk`^05I^s{&e5EG-uCOS@FeoeXXRS@bVOtCfk zn!dp$y%w5zW4q1TH09-hZ)k(uHSD=hsB704S2q)2YC41K%L*;K3w!B>?c68a)z4Zk zJ1&ze_qQnEE6nxtm+R+m*H06G1>ne0U=^I01yXpIAwVmfpvT|1OEp47Pl zn&QROIV&Dhs!oGLS<8!%3Ngw_Ppp<$V?bG}GzvKFASp!?C7n=N1%_!gQpE=)Gb*%y zjH~gGc?08dm~EvYHhO(b)KQ~jU*oOi_)t5ic3Fl8Vs^NcU1ravZkU(;4bh)g(Q7>M zxQ0pT)_c1VxnI>}AUcFJu1$GUO>@A=27^h@IM-$4cLEKEfl<%a;Vi%3R!=QwnpPQM z`Sx2m4YqwM_K&8y?WP*+xAt3KG>0cMeD4v5C(|k?)8qJ0X^LJ(afj*JVR)s(%tk%z z)Gz}bFPg_CIL18u)G$5wSB%pbk0|y-HBBw{SFF<<;|imtH{4A5s5XwmD^KH!ec|w4 zMriQs^cAWSp3T@iffCsJx#6b?uU|9|4VZIgRG}k z*$L*@-e-0-wvjEI`bWa*G#vIXT0J&)dq#e6-??G*H9k;X{jlXnsZ>l#SZAsl@UA4q!?q;7;j*I_W=0__=^7>wmVLK^){}1){76c8m-7u|dZtLmrIB z3PjopZ0Ly-)aiN{ywpQ~i(wk?L$H}hMEk{{|(du-3Zc*tNL3c~JhwMUDV#xTY; z))~S`V;*|dhcfOPcvc;LOR#Upzfz42zhUjLv)eKj6K=b8md}R~+)v9IwmcJ2m36NP z-0nmxzIxOIQnE9oR_|VeNM*k%S>$U?0c9n6in{2HTA6-)3wU26%g7jVyve&n9_ox( zv=NK&hDK{`(L(hu=TAt_mol^8%~cKi;_5PdH({P6MEzU3akPW5pEl#a+vGpUj@zMS zhd#G^veliv!Uz?KCWxPWO)1b@`)c4X$Vyal}-|5m?CI6txf*zo`|bTN`nWPyH- zQ{wLIDY@wS3-}*c%P&p;Ts*`dKXAXr!~Yp;`S&`3Z#?UNV=e!Wu6X=gSBy|OrEI+L zEaB6QKuFd4OMEa`QBb!7!}*?}+89UD&D6c%zL63Q zGytm^*k+G0eQzvJ%ScF<0-|B>W6+<%Mw_#W2IpZFbM6}~*VA)*PazpL$d}ly5RcjC zV}CL3x%|5dHuXPrg%T>Z@%qpq6N)nsyloXS<$d(msLqL^@MbVD*dxeCUkMou3xsy- z$f@*wJ3}21;)6Iy?~*?ZaVU%0+-^~X+4nY{2*y{&C&-)`tILWH&1VWXPmL!u+@e^e zPL8W@nnH2Feyqb9{bG$?a*(#3oDy(4#jJBH`w4fTRd%tgBs~Ukz#SUVLY@3_^c=?k z8m)1!=*|2W@*j^i$K>NW;2S<``XB1ze}&Kp{}Y7vPwo6aF|-(UYj+iOOuxSqCUQ*7 zB!ncC@gPVRhD?w$6$sYO`H~QxmgV3d= zc?fw6OVaHc<29c^%Xd-Ix@!IbgXY)HM+XxJD49+5Pk!H@w~nWVV|o0pN4Nm*8$XCD zk1nY5+aMghmFl9mzM=86U)c$4C7g)}Y^4(0VE>t1dF5EtM2Qj#s z(2;vx&-Xt#Tk!`^LeG4D2t%11*hBEQ#GLOMOkW~+SxGdStw74Ti^kGdD9f zy5r|oK3U!)B`~N*bBdw$THX zNN(4N2^Xd&`gCRzTYInxPvUD^!o{szW*X9FaeH(1J%>9BCcE#x>`Cevix<_6k}q9)T=?p>?XAQhM*P^hDpJ3W(m z?ja0qbCAEOGw(0bD~&2bJH^Tx2K&)bo3g25QhKGpfEK)o40C^}h2_WZ1%c4e#B%39 zRY_2^FVdp|E*e~wLS~x~bzyC4h9y6U`|Elg4{u71X=UN3PmgW}PI@4f0cSCaQM97- zdk@VCIp=o#17nEdCbgEWG9jikAd+P?nMScvf2D}|$&z9Op_H75(qAV^pk6$uhE22- zi0Nt85GE>EeR~L)r%O{AT5XHWRVdiKH||pp_zQ9gwiGolV8Z&c8Im}mZZjo`RLZOJ zSr%;+q=#-K2-oeEhExPSO=4oy7-Cd>XojuE(!+Ap72%7L=4y9>{u~xrb5`_>nJDft zKoeP-IRQV?9qrk*Br7VJk=G9@MS0ykwO-(5b4?^)Top#6iuujx?k!HFB*q9lgLQgXPAP^j<=<^4TiwVnn1N#`lb=OR=Gv`SEw)q@m>7d;d2q6Ar9B$ zblFt~zQk`&tK&pt_Q+%4t~h?cWKSD-HU)Xwn@6*;;1if)Oix3HT zm%%Z;dB{qBrG`Z(ZVk~Fzrogt-HFN*6n7AX13!$PtHtP5)tPtT4Qg=^?q5fIM|&go z0KXQy;eO`};@^o&d`f`WO5$SOEHQ*yNDWV+UAhL`y&x_&09&#yqSv%jhxwEXM^8c7MAGrwKb^VP+pd9S zQ?#qu2|7KbmfXH9xF-C7ME{TkF==zajR!3=TZ+%ntg*VPJJw^ZIgC7%fqY8B%7^J~<8wnL zI_d__#d)vmK?R|s4DpMNDc$jiW=B^DrKy@SMvXNNXh%Hf1FKWce=r@F{2)dIw_;D_C6=J1zZAW7VO@eMn#+f0KN^LCMT z3QLWhKdfNWeSz4P0k@wzOZUM!N$JUQ5#zKfknQ1!X1Pp%^#UN=~8X z4CyK}HEROs_Wv5_WWO==rkK8xsQWdoji-FC{=e%GoluAn!*u;mSXA%mI#lWv*4K(n zPncDibmRT8hq=x^%lQ_c`c(6e)74RZZ5}_sFQe8`yN3t6TX9Hnh(Y0Y35);s!~IPw zEjx(R!t}(<7Zu?Eogy$%q@FSq-2=0NbI}pKY)?xzUM>h_)B1(2FnVjh@xiV70p4(z z%k#y~`8inm5y1L|FP`c8Fm!wiT5POP~AYfRR8PGd=mM`-bNKX7d@Amw$yuC8h;VA9idDJRxcd2kH+*1-LAUSz(`%< zA*ZPL2!ibpiMn3iNLT!;5BVev=n7i}C^pv(wg>5f=>t3#F;L@ioPklT|iKUfJ zog)nv-lH4b2YPqevk%{mgyfQgeT7gDO-1uNVXd@$FhX`lB$}V9@WGt>Of(#Mq?S4! zR<2=xzt@hA`_d@24CSmfOf{;MUfr9!*sTqTb&tdge@hQM-4i6b_u4Lm+L3*&Cr89#PGq){k&1+5ZH$eOjj2$SH7=-YFN1An64_@Lfg<#r#wY?yIN3aV2oU zF0h3ZqT3^lJ)y2!ffCNh!(51M*{BXbB0c8b8FxH4kw=U} zd~)353naTOs?f@?m0_P_^qZtDx_1*lJ8Px%=Amuh=Tf_GU-Znj3}Mz7AJpodmYSEa zkseMJWuY%P+^FhKbk2Syde)uw!xOv(R=y$K^2Nj+q;A#D>SJ?Uvy{WG117g~G>Ds;K{g|Bq8toQBii^UFLB1Zoh34*q#`%s}_P^H>TwHe%=lq}Vm+nF% zXc5pw+5|O}qstr(o)VC#$uye%y&R`7iP>`gNXHCG3Qj^$r%s?!l7v>OXB&x;%*hk1 z&s){_YY9$ps~XZv?+V|x(t;=Jv{BZ%c_y<^oJoC8He{}SJV<96e~JP~>F%@8oF8s* z*jlV;Yw{ID{^p_8OTg1AFyYt6bAJ1KP}P=N2^)@7w~CBbQWNPO*Golt6M8Cpie73N z2g*QetD1T*HC`lHVUK>xm!}n#OmdE;-IAYy+2HEn$7BFH19Fc6+-ILiZc0ywlasQC z;}T>UrH<;SP^8cZX#4X>1&{%c3>CBcYxsHCJIn z>FR8w7;J|oY9N@^IrQ2OS39V9Xg;9*&wg-S+?9(!D`{*bm7hXW3hyo)I0kt^PnT1* z#uSzyo`MfcXZAJg`b|XA7jGAtcuGAC4<03FO_5kLFRQ|DAt`Y^Ii012t|@KV+Lr|@ zS&58s1#Pd?$2L;aHDD2~6&%=L?c^M;Z&Y7MR<{U!i2rQXmyOb3B|=?p!7ANxV7VCD zXC!4`+Pu2)ElV4~PwZc|mpaqh`*`-{k=WSchycH}@ZP6<&3t#lDC9iH_7FevHtrzB zkZ}R&AKY4rx?Q_?Vzm4ukgIG->Xl#FS$GY5tG;&zut<7+Bucf#Kq_7v%t(?E%XEF@ zLc)ImNV4tT5SOM%`zbIV!N8NVIJMTUVc?`JQJ5oV9hlCB7IVr?9ld^YTM?03Gh*m-gbuS~#6SN(!m;FiC0=)J+=v2TT-$IuH&gQ4%I4pZMv3X|^z zz~%<>Gy0(MnLqP%m^~|>F!$&7qr>QjbTjxscG)~b`7GYBKL6RpzLD+!Hrd#v-_;K5 z4zkBqn{F`iK;B}~3A@JX0{6H5W`%a`+V5V&@CUTO@`rS@zeD)hJcIu>ebpX)SRQ*= zo_a_#f7PCRSRQ?7NjfVH#>u6eiZ#$qmPqM`DPf6t`WAs zzJ^?!p3k2?VtU4+(mzC|Ib?Rs;Sa~gUVOp+V-bV1-XD8>YjicfeIEYv8!q|3eHHqz zMf^Wm8?JGkP<;XjA?B<{@54g1$OB^7@YdSKq#7%$gX2`>jF4WCo@~(gJ>f|71wp?C z8Mw!XYrWg`tACVOKret|0m}-l!UGHWH>%t!TJ^U{24&OecoE`rGBwb9$I-Dm_l?OQ?YU->-`0V z_lG{NlZqOe_M{6`sHa+2A0^}{T{&1g&_GvHQ>g;T2Zt6@g`_F-ly|JN&%EH_mMD_-1#_bb6eO zvj9Zhalv=8ANIj`Go%d=;UynPQNm5c(N(=ff>Xk^IS5bdr3l4Eit*U*Gk6@A<9zSM zK(;-wu*FJP@HoC*IG$iTve)cq*?La|8FHTu|JrgNkGUy-soCTre(gEwgY@1BN@6Fm zkn^&~nkjcz9l~Vu-R;wUmmhLMS|vc`yYG#|pV<4U{D92yIKJn>rW^kd<@i!@$a^v@ z1(dY$=t_ea`7N;+8@yZqjk0*N(%y6~%#BgGT|V^0Vm^lo)F#sxTZblxaj4FlX;dNt zr6B2|vsyl7{u}% zIAQu+U;8FjY-7FZNV^(abkO{4(THI`QiV+&T1ouYfCeu*7;<=_U_^-v=wV#!Ku6y! z@PObWztXqzW-(_eBS=r}Fne z{Jx2l*tnT=R$y|hez9j&P4n3>R7OBQ!YFo|z;P^ryAa`JHoGZWOlz>Dm;Cqda&v=5 zG0hqGPu)v=)kzOfLXRcgPp-7e*|dIbT_5r3^I2R>W!;#k+NJw7WMp@g>cA9-y|_8& z(5P|+)8cXgembBU>TG#DnJMhmVS8$mF-u8+h8-YtfXHPVf1MH_U)gYU3R71`kw_2p z2aM@h$!2^`kYYIMt!_NZ#l1J`sQhlpUjJflXoCt9m3W=!7#fT9RR}nwH~>D2%daiT(l4 zZ*v{Ak(L!4#+6G zahbjy7a=nhX>RFye}W|Qk;VD~?VQ)M=n+DLM-$X(0ZSYs9bVCp*sI!=gL1liEaIBNWv>JBtEyq}np6a7WstpCa7Q+%m9b5zm)e4e^V`w6R&AbcFs1ZYLh=UxKPn9T^^+Cj=IFucbfmBqu!PBTLEe zcKQbaQP|!}p9&7!&C6RO)+)-!gr8*&BA{qhs@r8$Fn`~na1CXMaX`bCDC@iQNUq4VRE0z<{K1qM6*qxE7gy+cQ_gkz7Tog z$TgDJ?I-S(ra(`xLDxW{ZG`9yL`V!Tj9UkH2#+fr@b1FdV=4`MQ0Rt@+fyOL8dTck z5?H6W&N=o5Q+rv*>CL;t+8$CV#2w@tbIS6%Njd?Z#^2|hgWu;X-sz*!bWmbv@3;-M zHo` zLuhZJ6U?0u6=v?_x~`Q|oaFiH+=P^hF2u0lIS+8m`sVZShd%FF-H$x&Xh`Kxi zHt|sEpr*g4knk`qYq&4ISSQ}irGMayYH6obcVB$W`PcsfSjJinxZ zh{Iu`1YNLzL_2dgSSnCR|4;sER{mltccQdXDbtmaot@3u?J#!jEXA~R##s!TFJMm* zU;cs}NdbAo)a|a$mG2IR*OPbNVcFNmC%C_xy^sJF{-a>O1Edn8?C6X9PgzO!lG*o! zz&Hm@m<6P1^3{MwLw2&z2g8?Qbf$FF3UriYdNRc`3tsp3(b*Hn5oSx1>(){mo$q&v zUQT7O)uV!-TgTtMkT|bMLGl-U=bxQ zt!oEc%sQd%9@9fOBkC(_bo-Tg`ZJN(s(zuHrHHwUs%hTte zoANx*HASTb!h~VF?1&wUsz?fN7)ZrZTq4%>#Ue7=F8y3G{n;9P<)+(twwf1J7|unv zDpS@!lTj!f{!(98G* zCzpQ3JnD?L<-Uy`GRDRGoDS%fF@)h^nZ@@}BkKIvN7~NMDewmgyCvP_ix9%ZeohQy3E1<5J`ay4q`AyWz!x67dbDE{aqR?4S@ZU22>@f)A3x$Qu34-x$hdAN zZj)gAF_nVBj%;aE_$GL}hd>Q&58Wm4?g>LD_9DpEnK;OWdxwnZo7o^@eaPTSZ6`>Q zX${Q<+@eEsDT}lnix?{$oYV~+c)JxZzw9fb2VHB8Dtib0h}!nYMNHvQG6aX#B$6=h ze8TDLG@v*;zWCRyp1ULdz4zYOU>^KO6G0+D@#VwGZaKj{)=OyN&OF180l<#Z!3V-c z(p9%oehMRfb6rRAEMGubl*zT@&-;$Zg!5w z|9NEmo&QRSm!Shz_?AahvLO?dYStuRb>;0ZuK&qQo;VI7arWtYTuHUiHnmCdLF5~r z5ZUKO`gQGSr2%(hn)T>c;6%-0y4DEH&EFLZJ#shOW1o0AT2B_nfNzq`vzG^D zWb1s0@4W!lhb3+#%(wLE0^N6gs&F_al=5w7TvDH5jYTA(f( ziVuT;mLL-Al-mJAT|<7i&puQ5RudrkZ_8QXWazW#4JcJBXMY$U9$P0S3e<&901Jif*7-Tx^-Ir2PG-*5Il z$PWQ#hK7cO>JXY0fbiIeg@6%I2|omxKaLwX)M&l-Y~>7ZZV-QhKx_5o?c&!XpG=pB ztgcRGdAx0R8t84~=K)w7jrGHzIh7yF6D12`lJEUCMxfNwYl4S#79?--#>Fa-k#kR& z>{PMU%ey(Z5p;-(=KuG?-vCAQs}f@lZ_F+1OX-RTPts+&G;^{9qcQ6@_^eOim{T*7YhI2FN^6x*C4C%WyfX z+5KOV^*(`Y(1PD_dil4pV*kI!%GULpQZbgW`Q};vDNZQ~JF?$8qr*KG9XjUFpuvUj z$T#`~w#1tTgT+ixh{Kzoyyk}^Nhwm^y# z+D8VY*?VesbZ9=+KgV`KxTQb`w4bB(?D-BYck%N`@5FqOB5^~{ohpib1p=G-P{cSB zEbAJ#jmn!2cz?5XC`Noxb0Ut_TbQJu4Fh8C8He2$s?U`%nyg-fIUGvS(Ej%L3bJ$6 z(+1nuPC8q>DTl@z_a)m0zWd{rG1;0Ru2hNnqGyWHiHIf^YvLUT8*F>hI8$5wW%OrV zA)6$?oharxB%viYa~h0vmT|%u*o7IR<ohUq@8EO^K zV!UakD+W8cbBc}}J|OAol&0+h!Fxtf&FPh=Nta*7cr%qecVqzQX5#{2k`#V4WCL8!)XYD@&G1mXb9Qm&2|06>tWHYz(2H*5udWVR@lFGWGD!A}!QAFYn&%ID_$;KuWdQ@aDOas$}~dYWFA zrexBtW@ml99`og1bWBhI)YfYY0?J9%-C9Rhp0K7`Gh-YhAxhyni)4?IZ(8*j>2tv> zRFg}iz^kNz6B%r6EBmo>Hsiyj&WJ_mmwW8IAi4qL!EH_p;P{-p1*n^m+m6at${;a+ zDPC5phX(y#q7^DY{eAlWlT7H&f_W3&K@8ud+%rK=lzpv$7aMIcKpJD)-Iv+91Zm{F zZpF>Tb*P>W4mCq|)75y17b;%P0zgM z)9iWPmO0YrPQdac3R${q@q{v6R3|J0YP_7jv;D>v=3&@Bdh_Yz4u$Hm293uRPEI}; z*3qV&Lix9d@`;7$vto9MZPXtelMM|cbp0|>Zn1jf;SCUvs4(RvB}{{3KqVf*m>*cG zGx~ZGNoCru%e3)My4gfu;Os`cSMeQjAkQ$)94T=HM=+ICSFB>cfzX&bt!jX&Pheh? z7+TFkae;pp2f~crvVWlV{6)~VA2cd-e5VJ{zfF(-fuQ}bt60U>$;IB@?i;Hc|DP$6 zqwx0utq2LUmBB%C!f*)Bdq9nlT@s|(as&t%LXRwd&tjVaK663*+1MC z4Q{Kz6MEjx>*y?~=+M{N&CmhB)ma+BQK40$S;Cmm5RQFxhd03}*E)^&(qcqj@mma} zoH_BKwZ%LQ==fZ8_r>!iN@k)7xomVDDP6y4$K=#R6l1Zu{ef9?-GvNIq)KUxCId#) zc?gh`9)b;Z4qxEN(}Xnj^~xU8$Q6zVI4m2*8MQ_kACgn2Us;; z4g+x*`}_2}eKPR24CL^?6K&&|T8-{Jz$i?P*@dh$>F&-f878VVSga7{b6HuI($#2m zvf%~BbmypGh%Bb4Nu9Io){nG#37&*?m#i1&JxJ~r_r0&`6?7FEH*@WGs~N!b0yZ!= z=A}SG<*g}mbyZfDf(ufiA~>ZPzV&kNWWZQOVCB8nH+NMft8a-40Zzt`7WB=mEek9- z^9WwBLKMeACG)l#IDXTqSuZtUa;H=qE;B_cDwK$?7)JKxF;t}vlQ}cEx-}+* z3ikoLn?vTqqK8;K>(l!a5M%82+56*}68m#um|%SB4PgY1AWs>qwVCDx#)jI}Plf(~ z!L2V9eEihnQ9917!NL>+oR1Hd$w(cdGHFaETAm9*ks6YKk0Y9v)-CT!w^Ri2dA#vP zkOD()h=-k}5a2>S?PaUeanxoPQ+4QN$R@)s2hT?pSnmi)3_CQ4M01l=Uk|f7fq5H) zYzc%uwO=g&>rmkAgn!n!Z&WIY8_j{eA0=3$8uf~wzBiM*?Skd~2rCE7o6;R9xqM!HqpmbUX}u=a29fY(M5a zRV5_gSXKF?7uz|MM-#*KL(i-AKw7?+8XEO z9zm8?>gk0(e0LMv-7vqD%7^FP=HhiEzt%$@BgG{2Y_h(#FbBBdy zQN|@9y;#7bB9MLQb<+kag=$}&pG-&i)u8e$Lv5i&D4dg(MD8o-cBgs?dae7n3R3GEANL=4>UuM_Kz`cmf{tgK zo|UbIB=4_}Gb;ZDj7WijIr7+MLUa*5m=AV5AqcWUc1$4@PZ+KQwK)pZ997dFkxVc& zX)+thprQ6PH-JH^&Xj=#MaJufhTW=Y*F3r{5NFgJV88I}SCnsH<&&IBN9g4lvo*Jq z4HcHDQ@9Mu?wyGk_I>LCok3ZOSL%VGr=M9x!+rKXwo(Avm8 zm*saqJbjo}bFjS@n;f%BUcgEcKZ!zDlbLR?3|Mq(R$y%}6w_#b@kB`#IBlV+&`yCCZ1Bpk*_@pw4`DY;uLo>nu+%FU zH@qujFh({yWDn$9?!TAb^r=JjAc!GtIcN`-uzRXB;cvl|eYyp}nEg@;zTmt*$h_s& zCE0dIctIcWo(}3;!itowzIHF17uRo1-{=lHn_qqn&9tRl3$C(tBxci5_6>7hUYVXv zu_6ovesr46&xJ_WBv=FKIvQgNdGZ7B5)**v7;Smk{lPgl90YPHivF6+xdrx$UO;nr zGQW=PTut~`$At3Eqd}TEc?9M%MT2oR*`hEsDOyM z$&WVBbdHEKAoIrwBP5m~Ge4LhTIm?XM0y|ZS|3d5Q#&Nz?Xpkz9&=n$VNm>pbsi-| z+$Q<93nFP);!(ahK{1x`Y3`81rK1JU=nv7lY75T6WT_F%c*$b5bv!uMp{j^)+^TB# zD}0YjPF`^i*t^!D(BTFXolgudmGM3{Iv@a zU#;bQkuf;QH_q??{dZ85?_WaEe=5Yk>%{-#4kP}nHia$BEdH^E|1H8H+s}`ZT@nJN zDxfS6I5Y_S#D6fS->E-~RTzNe4S819=2Zn*z9s1a=!6#*{i>A{rq%kH>& zBW~uG8vq&mive7PxWtv~ywtk)5@0nglu_gB3~x?y38JbqE0kK|=A86EnQA5kWmXD{6l zS$KJ}pue$f*f2I2k>uuz`RY*Dfv-gc$cGkV!P7XZ)xCND+*!sy_|QY^%q3D*zq~p7 zeE;u3EI4Tlb%q4d;Xz7iV3p7XKQX4mkne5JzR`L#U?HLy|U~xuzf) zZKEJ%D~>qsmVopMZM1L0`tXeL<#2Sv8A6JDyblWUB&B2Mzx5aU%-_XS9-$E1S z|L>sw9hj7;?AUE6e*=^K!Ptvt+h49#TCDlN^QAWJm*CiEVAMKdlBx)}Ih?`FBd(0- zE3~l-F7xsHD9pn|`+&@N@dznTP4yKy<>`aa@b4sEBKsMRH95u3)$w2njyF6zJSQC| z-Y46K&pp1rAiEHyCe8-ZgNT?6(RT!7MaW{W=jxHFBTC=X!MvT5VM*Qx$@@q)(q6TZ?lOZHF!x;Bf!DIDDqQ;Vku_GYpklR4Ke2@RPrP6bZct!fQ|G_TcS z!S>THW#srwi@4c(r71O{QM;BNXVqbI&9lVt^?g<(j`FwkWei*ilpqcw%$!8$5sV(%)EtP)!4CQhJaDRtK3DitM-X05Vm^Y!y;d#OdY&tx6>^3! zHUTS^>?PT>^0j7nI6OJo#P+iQ5oLWoC0w6=L707lwIQ|2;#kel+U3F26xPN~3o2QHa2JXgL%A!W zt4^FZ>pXA7z?*-aogES#`SuKL{R0DkAK5z+)jMX!9z4$o znC%WiZ};23JcUQ}JSF@E1#WU9Ixy7 z+3ulvSrI@!MS&{u1c2;nvPko~I~A~jK_Y`<7rGweC_l@}7iiAoeQf4(XlJSY3wg8S z;8|9#wY-EJ2pb`mkXh-_(xT%+9R}t!6^`{3K_`hw)}_%kwEn3#gd3JzDW$+)6kBt3 z`P5G#c0r#`ry5rw?`(fNL%4izu=l?&2F3q2GWE}VFy6mBLqzRtorxL#epLbOP-0Q&C`}lzD9VfA{#}of!_|< z8FT;QTn&mMy?XufV|&haaNX^M-4A-0QHzFzCt>x`;gC!cFEqjzE{n z2@_Gd(}-#6Jkp3=B(MUvZn{#E5`C>zy1@V(_K-J}?lW1JkDo49x}Uk-J%1aMuvE*@ zvY`~z3y;Sn9?Azr-En*il8~n#b5n*_Y1Z~Rd-rtVy87$|lnRPsvN^iR_l`Ei&_eCYj8#UuoYhS;bKP+CW5<{8lq2^{)J;5%vRnRl z?D}#gYUo*us#*+NwQ1LUej`Thd6rBL*ll}*&c-~}3>%dVaMWXt%!1pSX_XBl2#-p`j8oef!0OMRP*hXcsI$oFit&$9( z8s|{Ng-~v%Q?r?a6gh=_R8jMdZF+x8w|LbGAfoT|VUynC<9mEhcqMJ`^7zv~j()AmCAgU?e zD8}!E2ZAVfVxm!c0-`~B3ZuY1BTR$PDn?RF-h_ChA10DoS(ObGy=hjOuCjLNzuka< zDorq}rFHn&>ES@MXI3&}S}m~cuGqLb96}w?@LrRW5O%lZ?@>#Bn$82gn>6Q}*Ro25 zI4k&zRiQ0QdQ`p;LaMKcgg?q+ z>C&CkBCR?@L8Iw1px@CGk?@;ulJ-*RT_tg=tcNn$sFgXNsmkz5wf&`~Jceol$DvWh zH8yeLh+4HJ?n>aAV*6|{^iY3HL#E)%JC`5cf-@A_ z_z`nrLdyd_7q|1_w(NHkr+a0e2H{S5d%Pi|NS?IBlZmj|A$z2Sn{tgLTmxS)+K)wO z$HxO?w>Td}I{n-Wv0B{6tj5&wJWBTgoCY&*wFp&0i5DRE44v68!m{t#Ae-5bj`Jsb z#d%495lI5Fp~kYI;M_am?VL@mD)qoUsxEG`RVqBVk5(!bK?2p3ZuCEKh1mb_R8|qA zuJY32GkpDklg>$c%4^Fw)#$#()ZFky!BN7!+A0 ziPYJIqi-l;H#CMs$*}Mf@RQW*Ybsfg#ms$G$hp>ClqSz5@NMll+1_gOdeVJe;`8eU zu*Y;`l)qC!n|RR_6Bw~XJEJ|HaAno1R>v82$`6|@0FT1SIRsF$p+r~r4em&Bni^hBL z5vXnTj#bB8?1Jgdh5RvD^GcHe~v?ow&@rQWlIxzx_ys5DfR&^om+ z6l+Dx&YOg$=qndsvTHG6CsTDh6v}qnO=Cc)Vdx=)BvdI}J_`bs-Q+5XWc{3u%47ZSc>w$pST%1@?rrRQB`gk%yx}R=f(+5VG3J9V+BPZ1} zFwzG^SOQ#+Zm^SewI1~cUbw)G(T{akUU7d06OGc(z&mV(p)8DI*Nt!wkNZW((PA|(6gx0&L+6UzJLr( z5?z3e&5*dVR<#XJkh098khwYats_t5*kdG66aoXGgB^`u({TA;amjQEzwLYjI`@&T- ze_=nCh2a!ALv51OcqRMjIm*mpGU+A+t{O>DXs2jEE1zN2kin*oIUYHmshxh=+1!X* zodwJ8I(a7$e+hQHzrE6x(!l|l$;MdtEr?qBBX*R)(OdqS2hMKLS_e3AmBQcsxrGEQy*882&C?mVqSO|Y zWxnT?dF!{{Gg#Op^%75)P^j{AHz;N7?=05m&#)5l?+c6N-&#N6{Eryv?+7VJ9ok!Y zDdQ{8$?SMLLt5OCAiw}gSK^1Xu%P_x?WB_EeJ?jcV0Df(DLwmSa0X=Dx=FoDN1WtF z^M$H1NJ5xqC50uwe0`OcrlyP4FP*LRt83SdbKdour{)dS=eO&wwv1rRQM-q?skRfY z6Rw@Nw`n)WvmhrrAa%k@9`nAHE%O1kP4ixok&q97neMTHU+(THVJqCsoznw5ceggY zPhd0M0|Pq`w>o&;CjvCv@^|o9+s;O~+xG}(ev7w0uy$520ik~Lw?gorm|ul^dOR

          vDFZ=^xnf|085yZumC@SpS>Qvd4_K4^O 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%0DKGn?;PuR`WSJ-a;ZKUXs} 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

          OU*2C88hX6sbhQz)GJuyUyQ%)U7Oz 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

          wBHI7!i`EF_-;elit2t$~-FaQpN2%j4+uLf~L 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%0Doj9fPj(zfP;ho`F}Z# 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ΜW&irzqn=(}6-e4RHp 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

          aFbRK<1)G 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

          %m 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

        1. Y$<#8|fC28>x|z(9a?`Ln_ve7Vr&gM@d}>_z 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 z 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%0AnM{69_z zfGR1nHAtrVga@XobX6ixKwTB#jUAvy!At2{If@ZV4;)^5E3OvD7=1HoT7*#ZgelhB zC=jTe(ChFnu}^E?;wlI)&IAvdTJ{eGc0!Du6DE}Hz}^4t+LPS!gex7k_lz9Gl#{&t z`Do!30ukQ5-&*c7)fsqMQuLE5Wd$wee&3^UnZ3K~EOfP+jfh3ItIYr(^m!s^xNR zQ}Asv@Bt0&&K!(uPOZ)z1~j)k$qcjgHn^OCVb+tX(Aq6}rg+o!LGofpk)98ZsH#M% zM0UvsJkEV0@Miidv$8IcT`BOoy_48}u5_y@>$BcE<7Jp4LqiO)N`cG|i+8<(~m^r?mp zPrfGOWgjj$>pDC2-P|;OsUdZf_sAvv)>hn#5IK#`oa@I7fhJdluFY4zxRsGSQYg3b z3;P{npqT3yi-$R{p6g1btWIQ8VS=MYmx@L`r!!C3G$a2kfu8k(M`KizQ*(Wte<1zS zFFVX2ip8}Z2Ionf1~_icpV$YuxYRz4-9tv@4epL{AEldtcIavR5#;$nalL*hHX4f+AKD1AbjxqKW$=A_|Sp z=tg({xI!Crz|Yk{>186`#A)YC`Ir`LWGz2T0-7T88$N26tOU-(v(c;;65p?zSS8eM zY>K<>gi(Z|%n4`HPKe2t`KLw+s4*q5$?uC%(6U~pF=L4=q}%+w7vp!AxxHri+9J08 zZ%VZ`tPr%|jGPHHLpzeK`hG-;H0R?)82X!V5X{1n zOzw(D@I*1E$U>)@ZB4Ha$8Qo>I{G`Kbf02l(eW|ou{;oZRI=nHtja@0HR-ix+pUx! z@peMrgah=0Q*8GqTXCFUeTO(&VT@5P?wXIl;Vq0}1aXM|J1Nd!8;K5am~k&A)&0NB zONa0b9~k<5UL!bvNcCF@Bk~<6ofrGn>8Jk1cNVTux;@WcjRrr`_4u55BB1T#Zh-wz z?dZ!6f~RB3dZ3{t0z2^>4>nmwp6uS! z-@Z<@LME#>>ZRw34jjCP-I_iucO#AYu6<1gyJZ|`K5Yg(>3!uIO0$$H|7^?Uu)9|i{7;T#)ZU=h;mM@AJBvrqrZwxWqz`T zMZDJ|pee2TAlq!G+733<&V5z^bt<&g^nPeP6?Lk%Y~fjd)iO3Llcmw$sSv(sr7@l@ zFg+WjeIk9CNb%oSiG6N8iY=cXGMt97`h8oHVyC?fP8dWH;{C*^OcO z&d3Wic+q-}?UU?&rvwfgP_4aVq8&aI2jr3aK6|pJ_x=0gr*+G(Kfe)q+xo>e1rQ}VG9b6eW(p2}QCBV9ROj(vuF9J?*d#lP5doGi zf_7l%P0}$2enjyfx5v?*r@QK?D0D7Yx;=e!ui;zkF|7NLw!I+9r)WpX99eT#+@nY# zr&P^Sy}H_$vO+q9G4=6cmp4W-^PYYpc3SbVev9@GB)g}q)#?p0{baAz=^ZFJZ!0JJ zf)0I$X^;Dgu)agv?DuzG4g}4GB8gIgtXhYatSM=&r5R1@OoI1$%|9%rpuywit#-N0 z8wPA8(e=f?A~GJ3u%8is`G|xdnGIoZ53NO%W{ZB|M$d*olCyl~;&<`yCya|X8d(qU zMq!S~M2CiaYRD?YCR0WHmZYqlf84wfD`7m@hC)?!?putOK^2e7CHvAtt0ezYIZZ9e zr{5!>X_;~G@_u=O|7iJQNYwDRP0UMMIw5`*Dv(_nXQkOtmZ(s*G&+}l;P_rWJUA{U ze<DNK8k`~iE8XI+qYrL^X_*NEfjxtv2}T=Qes=5# zaLR!rF4kn^9N>+EA5RIbmoJbNK#4Nr&(D!4n8}96O+d81HOh#(DbFw0f9D9S?!VjO8(kg|;?9-o2Y;Wpz894+85!^qrxC zb7BYhn)$b_7_K1)5STh@3X7|f-`~z6jp5Ccb9(ly^Vq$x1C+Cx7>OS>7h*2mJEgG` zW_DPjN0=yHX54m# zt^p>68}xg#17?~yq-9QoNcET`1~YqTypDWs&;v^wUm}aEJlWHQGSY>Bv}0{s8zlWp zBamsUiCB9a_R%ym-7lL%W#H_rMe+N_YE^&i3dxcO;X0m!D0}J=TWSgLVq)}ol&_s3 zg3#h-wb;7nP3BJ^ar;<06Fw8O%d~bqt=*89sb=az*()Cr9rXax z+g)bM62pUH;mrL>L)ZXQArg@}z{oBIe26SHI3S7Pw>+0EYL^_Rw8B|FcO$oBcIn^A zKi5zOVK+`7!Iw@Qi4wq60vixD|BFU~_&q5jTITk~`-^4$ID5)=-2*%CccMv4bFB20 zpvpWTDH0sH;t-kiC4%q=U9`k4d5si?RjlHiD~y;nL=;;jS&phh@VNoTzEacjJ> zePT6ys8wsXV4^*W4M;j$ba{Xdei=P4gd%WC&5=l};=Bc58)S6OTNmmX591U=_MzkHpC!Zo zq~SqpI~7F>$!kUf12P0rD1=BF%x55?znEs93frUUfo$hvr_iBHOHSp~;d=Vi;=G(V znvL74LT`-9{<;*4h6#DA85d*9I-@wL8R~Jw82&N@$*BiM5I81G&+L0Od2{K|qo{$r zT1CAFn|QM_>s^d7B5??Q4falI$qvs%6B;LX;~?>~ltyNp*n5A}|6a4Dx0IE)r*D)DLi_IIZnlgOHcENH6&5gXDD zqsF8-mBd~nKTH!mfU@6V##NQ%CPsuB1qsN0MU{=?-Lh#hAty;Yh5V$BVUjC&*vq)6sQ+#ErK7~+D80k48Ptecu1xX&cL?jEtuH>|B0LzGcj3g;VVfXK%?(E>y z{h!6r8cO#1!Q1`oiJsj(Ruvlv!`S^F<%2}d$+1NkAg!_@i{p5^7LC>h|&%BJie$H{no~k#6sjJeX zu*TK}z*Hs2CPLdXxe?-4g~jRs){_PcU$PDnf|K@c$-BeZXz=I8IsthJ_41He-`{tT z8H&CyA{lWsiZIv`V!$y^ge^P+MasCO^Zx54N1WJW&msWHEzILNt1BB=XC@?cI#;eN zQw#@p%nx7YZP|dxQZTbp$Lud&VH?bHl3)J9ttwj{!!O~|M`3)9{LX(B{W%M#XAt_fNI$A(!!# z#WuRa?qk%Z{`90Di3wnG-y0QB$ySLT)A=6iMmb8@-1y}sVuy{iDJ0rCGvbIsQ+IH# zP;rux1C4lEpScLBlceVN(|_pR^EhS&lME0bmU2U8W(|>;#znAV^Hlx5cOHJ(I+6`j zrV^~>RpLS8rV+LH(QdYo?clI{(=6Po@dU8Ug-nQj}VQ zue*QvnoiC;Mvf*L?DD)6%fUwWT*zD2)JXBx&ddb8bnI!ZvBD|h5i>VdA3UO)*dEi1 z%X@93_(`(n(4$0~Wu7K~q|6WmJz5p_a_bGEKVL2DqSI&`Jk649X4F4R=I-%yEZIps zZ{ofE#@L1-%oh4@@aJ#5hnHbif0fxwi(wSzK#UQXJ!gjL^Pk>I=ko&$wwuX(m}{T? zB^|Ae3g_9jEnv~|LPy@nRBugSsmY(Guj3qj;|E07{h{((YTDZ3E3?bc(QpbhGR+k za@|{_`I~$Nm>s36E1{Ev)Z?-2-%3bBx@52K;92&U~6V-~?hC^kb)r+Oi$enkfIO_4-l#88=RR&0ZKh~FIttwO%l!@IU zVxHYKo_@(8TWPUI1M{N64I?URTmCj*=L*)lfY+&LK(CD5b{4&{G(z}l+|a36$aJlW z{p&2cYiUF|nz4$sh`zHsET;7|3XgTPkj`dYGrG2t^nkvzGt7&=voy>ri6?gyMh{Cb zI&-=3B1$G*?1qMMVB-lZ&Cq`ZJMEd?%fLwrP2El~zzrYO@Q4c1lGj!|0IUB47BQMX zKv46q5M-$sv2cRrJOgZ|)?Xt?DXgui{0^};QcI)xD_9^yCxnnp^tI^RL}5IMWW#9@ zthP=wxDbBywQz#<{1)s2eJ6}irx>wFg3-J*WCqq&^tb7lF;r8nW_Tgq=xdR=?Lq~T z@zzs6NNy}&G$EL1BEbZkdFyOL58cRSxtvC=C*bsdx*?)t zjWx|>1K5wn8%H*SM5K{~9|?Sk4v8XR{DKSqV$596lKzaX$AIoA{+d>eUwKHR9!Nt8 z_R%95_{BGvxcesXA1jcue45D5=G!-aD6nseG7yj$-(X>3zp+KLiTz`E{h!75uQGA4 zW3qBJ^Kf-EHD~&7XZo*DG&R>0aj-XcaJDnDH!&0QFfnsaFHfQ<@xdvsqVZXnnPDo!lfkyp6o>KCBMi!ITV~3R*ZE9j(u`bOa^-H z;NBP}2{UOEk_>-eWZ}te={~*w%HH_ZQ{YJN$=`4Y*sZY+@u_$qAqurZurO?eP~Z;E zoS`<5_;?j#UcX*#It*Rt*oe-i)6NJAG}BXuOZl=J{iOx4e7!b6yCj)F`Sv|3f_xzT zPz6%vJyAc@CW<;dW*CP_L8y+Da(c-SveMQm1oK+?2O8^mSgB8Jhfq#NW)|Q^4)x{C zaWHdnu7KHOn$R_ENE@e@$og*QzpmNoRNkn9efuT|{(lo5|KG0t!$1E2x@K<2YGiKr zzoCwqzdX>#mPb#fwC^;rOxdB80i?|V0|93_ILwBbV2g-Sf~lrDBr@WumS;Ur@Mpz} z;8K!7IUxz#2>;I8-bdcEmlLdEGxqPWB~4oF1VBYjL;kvyfcP-fZ-^rO_FS|w+Sz=lM z>`A#SIyI(@PQI)%6`*{h)2crFCT0QPRs;!2Bda?{07X&=N)H_=B>>#Y^H$Pv%FfL| zlVpObLsIEfzx8jhNQiHBT z97LY{QyEm0{8JlblKfL0bdda0AB3L#Qwfxm{8J00lKfL`K0|sCu8a;&Vt`);)Rgj5 z0_2kNQvr0J(k%!=Na>c8YJWnbWKwgk0bV3`%Yr6Tx`jb>Dc#bbs+4YV(1Wyo)uEfT ze%&FGw7sHp5il!xv-&Vr+Fr@I3dl+0*#v9@bjX2pQo7|p8z~{P_$ju^cgU1Cs&|Z( zzW|aSf=Vq9%mYGXg#E(W8EU&DuG*tq+=9nki5I$^q{7TD$4HG;eEuvZn$?W=C=*eo8)sYjK#q_cp(aCD1)ie{CmDN_8 zm#${his~JW=Cn4cjplS!LA-ntS}q+mo)ejM)ld_as>{M=3}mE5PG}#cp=fR&g%#tK zs=n==#5MvP<}e3)qIyyQ3@giYoLI4mBubE}k3ny|-yd{uh!G$S(=R9@1kLApSA1x$h<3^q?GnwbA{7aF| z=&2!|{pcdnGGHnKnOYfNtBs3PW<4*I-eMn?Z8qCtf;$-HfuXNA*^d)8Sg=`3GQi?vrT6%y3oIbfQ6vo)NpYKO7K`^O+N zPfL%JL{l%kwspfh8a97Htw7S3HZy{=egoY}6v0R0!6Ss;=)?^558tHM)ilg7s{Y7~ z$kaS5nw{4*AMxNqrL;-?)7#jA)7iQ85AW`D9l9WvZfxz~AI?rU!wbE9lM|m>HBOr2 zTvG?57IEmP9g(k+-MyX2v5$wko*pOK-N-NjW$U1Ws$bTePU1?sGPlghlK1rYAqi6h z>X?WOE_cqbnccb1nUZK=hkMD;Cq}fm!_S5824ZA6h+-biQqNncr;~b5i^yI}3bDTr z%XrHpLq77DLbhjac6RDl9Rv0RJxUpIq^Uf@R4K{nxDJORRhbW~VaHkjIe<&U_QHgQ zXonJvR+)_>0{^U(9>UN6FcYl(rZzYO`qHv;EHMi0>eZf?{E|_T)*73aMh=>}`+y8)hk&jU6pYZ@wJ= zD!Je}&}~R~8Aie+^HQn_v7JJgtwAg+zTY6p&J;8HkIUj$Jw6ZJtsw79zhx-iTFW?2 zcWzCOwfX%#hH7w=UDhLx&_c5YvMx*AniA!o0}Gc00b4wUa$=?pudu2eM?5H;qRDnSjAjxH!;)*jzE;L=Ud^ww-F1c7z>u zg+e#UNp650bA?TJ(P_G0EzX9jR;%6oAT!v8k#YFvqrMP=quQX2n$)lp#gPYXeDJ!j zRo~n2gAPB|v?UvcT-X8*xk2X2RG1ThbA~AvTdxl(2wmFbfqPwXSB; zY40O~Q^c>1troLgeLv_1whO#wFE{@oVv(*YN@B}Gd2{<&)F!U}neB=hIa2t5)UD|?G?0mBp~4)79yo)qF-CT(%MVVj zmLoul3)gXK>AoM7mnlMH22j!PL^maMx6$$q0I>+M9H0)5nGs3X{BQ`R$O&k_n1=bK`(!gbmP zPW7jn>YdU!sk>?gaj6_+@m?}atEy*KR5zQMd6um4bem=TPkA3QOdhvLdqO*osb9dd!;m+k(1HJ)>@yADGkAs%*dF`KRpWcceL^Es&9W|74^5 zXhy!Tr!}AH&&Uk=CvR7p^fTr9Q2gLp{NQfnkVg9$Q`+c%x}2|(jJ6m1;aQZ?JO#{*mV|y(+?elgqI=F4~R$NaS#r36f z!)42^{Ny2cJSe9dJ7YB_s9R5YBEt<+Cz-cgwnhzCQ{*Y;hWE1v*52f&aj~# zTkCpp0Zi}9v2NH{RYy&Br6{6P(%cWH+<=8tgSSuTm5#RkYfEafS6 zQ$AX0e+tmuyrZM`plokLs#@w0cigMU_A-=wf->S&cYIn1oLON~qo;>^erE~au zR;rTS!yQ+g93}J#jk(y_d4I~#A)$V1PMmRv-rP;Mv8r$UZdP7&4c)kDY?rznCA-Dj z#{L64_AK<}DnyYXOM$(zcNEN?80NP~IOOwJVg)kCv&M#uMz;D@RD|NvoP@=PiO}}t z1m2=De)B@ZbADUjo=Kmz3GapXaw{@ptOF$JJC#kn@j%d*mQDWho|>Mji7OSyId-=R zAoEf4eCTV(J<#Zv&&EGd7?K!Akldayl-drCF;?P?qTB*txfWS;ot?CM z)mEK!c=c9cw|f;-X`aUF@1K{{*1F}@x!f@Q)2|13&JXFQPg;#S_cyoLs*5e3l}@jm ztQ)VV7o=KyN4KJ?tWBS+tv7tVt^IR#4F~53a}5WlNjsN^e+L)L$<%pqYgVuDDlSgJ zdm|%qm|yS(#F!m}L5xhcXsS3QPHlAyjT3Y(j-HO5PDjwgLq{pJBt$fI%{^eZ01E6g z4q$G;VZ#+dL>cJ|SOda7N`wVT&9juvC_iErs-dMgSP@bYLlL2g!Kh!%2QCcr`VSsv z9#$R}WK-8x-e8zDm_WTtMnjD*y4C4xX!o|RV7^PD-2t!$xP`@QxW`8Cz)*M6)s1VU z$A-56F?ZC}m1~5@rnkV4t53rQJw)Vsm;i{Yz+DpW?_8@yh{z4$0U}ogyUgA=T$@D5 zarF`bGGXS1TC}&09w~MGo0fpdyg>yn|HGSNqY@z zk1zn4ceMavrs*W?;p)#GcmP<;-~PyFao6M?SivP>Ou;E(M8Pd#LPJLu=uF6=&!j>k z$m&aaR?F!AdLn2FZ^)X~>H+*N=$aOXfl4B%%ngMBt7mpr>(PGxE@Z%_8><;jzke68 zp)(6isyDi0Jwbn3KKPKlO$CIgZH)!!sBH}e_^2q21=y$p zdMZ3Ed1$Bxy0eHevwE}aRW<|#7QVIne$VI`57X07U=7(%gQ4wlPsO3O<~_WmtqsQL zsI!g6|DJECNh>5RRJskB9 zAMXJZS&0X`!@ZzR?c^gBHtj(ZSz)5~s@_+M;>kTGCv|4?*+g{V>Yl!R4)qQ7>gsS9 zN^F5c(Y=9hl5hu7lI~ap zEo})|zqapVM5*8lTfH{#GlOgpe{u!R-1>oV5KTA($8W7bI*2AnF|)cR96ogfy=JfF z`vy@i1icujA@#iu*E<}6ySES^6eJP$4_?wuV4e@qtqQ0Q@h|t5Q@RVz{jN6}$}=j;4Qave zPtam_Kz;h`ZNL}Fb3EY=H?9$`5#BcLHl7eJ42M6vKN~z=4_*+i6rdLn4EO?=k9->u z9U&bt9YGyY9bp}D9f2K@9ibhu9l;&Z9U%jtkMNH8jzCJ&S&&?VvDvZNkgW(uc=H;v8Y0jvHQB@gtQ3Ql)=RAR zcxof+Bka-uwb2+3bb$YeyL8HYzbxAV01J=~&;l$2xBwKmGVBTFgwwnu7TR9b!#U3C z%B;^nMuf+2EkPQHDqMoox1Jyl#M#G>)u&B|3>OfB;tT>33w!t4Ejma6X%)YgqkHPs zeO4sHA=TY0L9Z5RmB84+H-G;riU-%3b<4JW+_h;xKFR>G4S&bdw`rd#>c30E8*~*F zAEgxKgS%tro4Jn+>O%6t-?8wm+YgF*ArLlwE!>xgLLm?~f34iNh)N_7HhV4I*N9Rf zxMmL=xzz)mApYbD9JrMNWg?nz2M*tAfmRVscmhGUN}x8xUGBiqTO-g5;x5le|E&Zl z5mAKuW9U``G>a(0^D%g<0IEamFp@~s%FYHqG5W|s+IpcmqAD_*G9lCr9usjk%A& zTID`n1*=bAF?BHdc3rX=+Ukq|?J1yo5i|haL-NlzAEk8}CiKcPz|~|MY)i!l@?|x@ zAL230G+-O=vJeGa;GEf%W*bXT)dxc0;(AZ46J||{1krn0Xu!D>XUz!byO5{Lt?4$* zWmR0iaVLvz<$G9D8-|$YpF0KVVOezygwnYbRx{?IouvuCnn=O#(3fDfsCgAQVGmD5d*DI1x>YDJIOoHArVQsOl&7dg;-AeIpoYFG9m#7<=qSC?k*V^~y8@?atpY_@P!VINJ^D zzNPw8trhBo(e>afUU2Qf2SK*0lfcz3$b?lt&F|p{A^JuLV+*R2zz~-u!X&QHgpQtK zFtB1IEYma)R;XC>8UGw~|1O+|2owAy4?RcF;9Z!+rM(pzwh9|SS!-xGGM-;;dI-}B?x zzbE?`I*4Ktx+l`AWM`sLZg;3rZ+FVQq&LzkZfB%XYj?suwKx9Q+L*Q8=5$l9_3VnV z?OZxz(-ULz>J2&L>P^zA!lLnCugG67=SlA@hjAn0QX3N4%)gAXxj;+E4t(+)rHu zbe|TSacuWVILZ7eILYw_m0|M~$2fbIsavqh($rmOV&eAF*v}@+4(KmUY5uAAJ^eH?k@CK3L^Ayc^bC#&Pvr5twSSVulM>S;P zKKTo9Z1KrAN%Mw~q4Jc;`17nzS9sN=DX^%|?2mfLA!m-1r&?L_rOoq!-BIEAa zPu<>Ck*1Hr5VJpOe<$u!zv7Q=J_ROO-cT}3o_;d+o%QJkuZA>z6!|oL=!t%Rsskrq z=|hlhyk;h?HWxU?eBMzm7$iCZZi#iI2f@p7sTpJZY1R1RexRZI3i&DU!|;|pS)%XX ze<0}oXNJ(DVZ@jCP*6{M%JuN#%nV7@sc8ax`@19blcS0n7GhJ2d%kzE zy(zwV_Y_&j702M|+BKNsN+bkyJsZHY0QPsii)MeMB9h6w$Y(YtXt+r>M46DXz{R_O zNq=$C)&&2A?^ClF;RecZ!(dm}=?@i=(CV$ChuN341 zN?oa1Y*ifH^@K-JoCse6w7Y~gnQn$>oSOl-8;U_;)S#hg^Q2c@0NT%H+}eg|B0>e0 z9OTBQl#9}aNA~>4%+wE*h8fcFx^=lZZb4qZf9#<-yfWv_sxF7;HDwqa?2VF~$`kMN z^dRFbt^k{9VZA0=hv(^>&qnKz)vcTEE6uGz;<-WMtZCs&srx<0`=lDaW~l_T^`m_~ z4@v4#Z~Sa7nHE}}&PX9@16Ritf@sU>lo~!}hlE+|+$1HY=^Tuv-=#Htd=42_({%O7 z!s8wJ{`>p`cbo&)o-MX87O_H4`17&xp_r>bS_N$Nt-zGpycYlhmEAwAcP63S(l>ya zdCjA@GZQ&YP1aH?d8zS3(rS>w31?4{w5TTJ@O|h)!>i_nuh3|(Kw6C5AAAP^4Z0ts z8L=c%`X7`D7$R{^LoDXNS1h4-r7iMc9DyN{1GKveU*iv|9rTbmm0{;Qh`}2d^84gc zZ_9bHG>M=w35juqL)y&p)MBVK8M31o4PhYlmk6%@Jl|5z%Dk|ytD}E9_#>R%TLJtj zi#-KaOFC3#yiL^Z4;LHj%Lc~ojBKbC#{GRfa)x|6-qq}+9(=o<^kSHbtHM9JgV>m= zRuoL0#7xaW@y(UV$W8@4(R|ol0kL;p7(_F1#=$qg8RLi?ZuQLs;1rVT2LPnb-<^AZ zul$-*bm@x0`Gq?5dqjREmb|SDeNlZ<-0Ye>$64=Nx(uO%YUob8_S&hs7uYhV`ju67 zt)!BUwSb@eDgueY1-o8m>s05IrO=umy2GE++T-`3TmltdZ8s0ECnkh{F@3b_hLr;i zQOATm+RagHgsU;t9Mv|lKYu$`JVM)Wu@qwEnUf877@c9N)M0&zzbn*quVEuxP5Mbm z-xIb_9_LUv?xL?=R%dY5tyQ-RPU%h4Rd1)QPt!SUrSVn$E~VHih3AO`l?Hj!3z0#S zBEH}V^NThYJ)6^dp;9fWDOM<(a}&{GtJ|QJhYzuzlWVK-xCvs#UR1WVC%?r|)1$Mf zh1?-y#r?GVMm;I2m?^fD3B4$bFP>_LJ6(?ENqc>6he;$AJx9lxJX0d)DU?1x%^8`) zT6A53m&N^1&oVQrT_3tr7Wv4=RD7d)ufnhBUnReRnewit>s=JXSZdD~V}E4(D?OE# ze$uYWP;|0Uprpo=r(m5u(|DA+>E!EO`oWt69Ai4}g#>ICFv!K8*JP>r-W9aCZCfxl z4*)5?KNT0M$k@>FH*WDwW%VJ=?yWb?Nd6ro<8$(8FK~bw(Hm>!3qqrjs$J)<_!uI@ z3>d{rFVVjqv6juVLkE*aO-UKWM=3hs855F=3)cQepe8 zhWMIhqQ#+m-dGCnPbM6QDlx>0G~S4X;ympbdHo-i@^NLJ5wi2i=3GRPWBl5AQJ|AD zPj>Q4OgDkce9v-U#KX3@8Elq0z5@<^9E8X01D;OQ$y=$VDCTnG`uBM&&b(SyG}U+r zd7AkZK7`mG#RNTY3^I8X{#`4~^Z7g9j|Z|n+H+eC9(|Z3!wH0fCGR(XubFF*^++hi z0QcAMcOqL(=pK3$CFiFrm&0jH`lV7=f8;qiQ!06{N+B1jt(-pZ=tCyrwUZO3MVoK! z>G@Q!{C(+ij+(TU?ssB&#_>kAk|8={oh&*XxOW;k7G0SOa2;?I z$_dK&#H`+Z7zJVlDGN-yCJsOf>jF4I`QfC3TP>`R*R0;Cv+bZYIYFhH+(jFnrI!Jb zs5=S75)WVE1i?W4X&>W<2qELeQ3u3d&+`!LOh!jt(`Z4K?!g}+|8b_j)K6#>PV(&= zn!x`&)93hKObnj?|1*7cF$;GW>3>8FN@+VQM@zZ?B4zv!GKS`^%YrJdP#Y_J4MrZX z*O#eBu7#Ds@SlJYNgg)JvESCL!mo4blidi-}ff`$b?#9J~|?nE2Lfmw6&FU}sxCSu~07 z{PM{}D*Y>tRw8EeO`}&kW{sjTsGlX<$$cmKJt}^hQf_mMF=M3f%)>gb!VM?vA!szC|_*d*Lw z!SU=)ifyZ0KI{Q2=W)xE#+ja`2ef=_VBQ;Ad_?ort9JHNno=fQl67SiSf#Uw@D3(S zWp{B?yLOUqZi|!3%Q}_nCY%vV)mW2;+QA?&pl8U+4imz-wwB#y`-24M?&kU_6fbjTi^^yjY5kT7y7h?c$u1mZ701^MNyqtjT2 zAXv7@5jjAFAjTkA^v54Db7FF$U$lr`<$|_^B^2=w|6qhQl5NZapT*ZVjt3^&-|h%# z9%YfII{K@wVIy>r8-)`}<{@H=Qu-l35P>;l#5itxRhDVY8XQ$MRoP1kbLUu!ZRypX zGCR5KeH8ad7Bn&G4}EB}KSf2XM~SZFhE2$3nEnNB)vn6>&`Y*?jh=;It;XcGipzl1 zSC=^KY>g(e^aCqw0riDSAXkWW;XPTF*C3Ny#6KbUgjZ0TLH+p7zub^BH9gY=w5xiC z{*!Lh-}e>}`j52o2=#vzIraZTk^dKWrA)^!P;(jU>)Mi?CA+&m0*FBY2}n|;9x|r7LVU<)>l}T2Qt_?;IPpbikj(~V;LYt>UUM9GkZ5^ zb+z?<9h)q+ZZ0S6X5+A z$>h9r2c_Ev>J86!^qgn{^JaQ3O!FiXfitthi07K!u?;DM4!P-DE8ioCcNt0@Qb6y+gUX zJvuyJ{lE>Dpnu60Qv)2n+90y*;58*T$>y6_UiyQqnD&@Ma^)Cax`VXBCwpIIGkv8w zL@0X@5Um;%14Us5)x%B54O}Lpz~?G~uhniSWUqG4ZCIqeiG`9lPS3FNT!kuWIEG(W z8fdLYyJ%F5bXZugsdV_^nFeF=Td842)S=@eGp@0>p>a5N$@RE+-4Jp;arSMnRz-eJL2Xq*atN7|kn#QRWaH&*_&pzmMti;BE>ueAl z_U@`zj>gIq`KRQ4%QiRWF4mM6*Pu#OQ?S-+TpH@+TsCwwM;`|<7s-fdy1Zq;7P*0@ zj(Nd6f*W63^`9k@O^wi)CNr)N&EpUr(#{ke-Y`{*qI)i0wH&&cvfDVVW~G9NdlBT= zxryff`9bm-ZO1oVX9mXyQWr|%s#z$4>6PHxnw+KLmVMDVb_2-%<|)@WIZ+u0)%|;f zdkvhGM*>>RM6qbGh&DPiDRQ<*1scwS+%?dpx$LpGXFyu8eFp z=x7QUF3w}yX8KOnqTSRaOifxvp6Yh4(3e$wMBA;aaD_E1wW_u~Xbv{>Pm7KKc%@`Y z8eF1?;#Sn)09EpR*hV1_Rj{Rv@>bHvX-edJFTRY}_tt*($)5b=zR~Jg}_Swj!IXDZB_*KVcjwD;k%TE7|Nz z)Z7e1B{P#{)*^@5RebfCJ7xNPeHrttQGZPF$L>XHhH<>C~C7ujK< zlahc9>G^?b!VGCJUt|YA$-g3Xe7E8=CEwo;;nD`;#LUd@WHT~K zDQX$q5^2-0RIYpHHZbxiB$cjmI?t&if3cmfGMBK$vLDZ#W;-hODp}7RF9D=i%Fw9v zevRr1Vujvit{!`zi40-hM+;({L&wi^yBsxS#wb7}Uj>f+AZR7vh+B*@aoRg0j-wpo z-JA>*RK#;hZDSnH_Oz8}#sk+Gz);H_@w24*%bFfkZjTpp}w zCuTn1VMs7?OymDu^-79rX`PiOWp$MKG-fqWSbS7zPQe9CsKy|Y{xc`v?zXN#F;hvU zv+j`K&-yftV!sLScD<}<8C8#P-}^>va|+&$@m{di(LHqDW57u)oo7Ifs1O94A@G=w!`<#zm z04yHb5MeE+y`N~@>z_{c$2PPMZ|oHB7L58Sb64M{^a2LA9A%_5=e+#yOqvs$i4O@7 zb%^)e(bUnAq#$?wjm27)=K=k5Of|n)qx|6*A5swS3NXC2w4$}t0z=rjs~*oF#g=D| zI{dE(bkXwr45BLs1#z+EE%_4Yx3YRE6z< zwYZ+TN5s77o-!G>W88B8j??A^iY#K89k?mp`0S@%;r1TkvV$zHq&_GBtt$!JwT&;a zC^K;>3CetQv|5DF)G9@I;C)%({eJ42JPQ0-dYE-F-*H&d?RZ0)u0~d=pg-H@%_Fah zdBPyEl>>=-Ai(z{yFhWXA+T@qWOd?0k9ZZ$P|`=Gr2psD_;vX2%P@{Z_!q_(V#Yhm zg;PX#p>;RI%h_`=GnU^e2@ewow0W((34fkp3EUWELygSCryoyz-QViRF5K8Cja3q4 z9xU0QrxaU1WO;2!6N;6DY@cm|+RfJb%MOZ}g^&D&Izt&BFNpJdpNmbKXfAlMht;+a z^7%(w4r%XB;4y?c+F zKs24M609YlG6W&H@wdb9e6A07x=`~N(MK=$Ng)5TiP%8YpZ7%2DRr`rz{^Oi(;5AY^=ipRcDCaCP04T z0#NoO_zIekmgm2JoUTt7xb!{bD=d(R^aaDXVteqvxs_uC@lO6G%zbcVKDA^%Z;zP7 zuRWFBL(Hv)Gd$!fIplYyWSv0a@!A^9N?;t}+FD^HLwzYTO7HD25+62D76=Q(So(!v zXS~?$r)oq?CmYqjO0)_m4V94lSL)XD4Ur^pdC4gN%qWJ>D zg}!mbuf{eD^VBd+jLvZxjiV#p+N*ZVl%7#(%CS}A=ks~6lrq2JRglxUUk(-CT6kWV z0I#iS%rtAR(b{xE5B@#$^#L(e;UmlXwRujnz_od6uc#n2e7lMs;MQ7RV!j_ju(VW0 z9$G$Yh1FsYZ35pKNpJ)s?5Opf$bmYUZwh$C~IsWvXQ#>i??-_PHeR{Bb zFY`^9@qr55Q(ij%PJEgtf4qtqI%tirfQoR-?gPwX-dS_%AfRG;2% zONFPYCwV1FT7uth)pC7rZE;G3lt|Wt9-Cv4@4vy+c)>bU^hO~&xFVrB*dnPhv_!4Z z+ADW=H?r@JV>^3pLsiO zE~j2SJlSg~L}qC@pPUmvFoAVpsD+$T9}V3M^38FN6*%>t;H#&`Y!xI82u6F8BAAm_ z36?k*=jV^cpL_4bXT_cCPk5Qby9b+x4d@(S6is~no{#kSm9Y%86clHf$QrsN89&iq zaOeGABCn4;>YC^LykIg3m)|JoWMQeb?N(eX@W&=AVrr60&y4m{wXnFU~#LC)@&fY zeG`QFpFRA)_W_juM-OXwx?7q3H_0EUW9MtAg%|8%-7$XTUF0NQ@jhdj!aXcM+zgd! zy+NsrA#1+riAIx}YdK*_J*Bu&4pyd)<2pbzp^hC!9=EWjC|?bgrY)wXrUo{Aau;K*!Q>(kC?u9)vh+CB)-FP1R?H> z?XEip6S+lx6q9%)(fD4ELNXw8e5Xy;=J)0BmtkP^){W@rtr>TeXW&9K`&R9thOl9* z3c?>i((J_DNyNzme{bO-G70wn3_9Vkk@z)s{tIk}&KMin3tWfEj&R|j7zud$b~MWY z842+S#r<_VO5(x42pmPhz^!PSp|uiU^|8$3O9uXe1vl|<9xLh2skErFecQ%5{tPx0 z>$k4XYAayIG?&pfFxCnpJ9T^8j-y1(;XqwsD#YzWLvud*wsM#U^}JOwmBOS8b)~ zwk~B{p?OPkiHKP5RlD{}^HO{%M>k&+%aBt3jG9`4sjQYNP0M;K(nXOZw_C<*_O8QZ zK-#iloF6GhoDNCslg{d<%h>TjQxsMz>rtiWaEhW`wnb+Hl_#tHGeT&fKx*wv#gu1G zqM1h@-fCf!>IFqMY%2bmQJX@#N~S+Ev4!>7HF-(5cGw@s^!sLOwVpnr zcj=E=+1OnehGDVP7nXn@H1R8P)!X`$5Lh_#hQn#7qKoDg;_Bq(2A93}kococn>NqJ zEx9zQrR+#tPz&u8SQtk{h`Znov@gV}giz68zzD6>(u(6h>1gZ9zv9ZF-#Ny=Z)3{S zQZvM}3l5?yf&DXc16U6Qe+LLxz@Gx@nD~-na}3NEJ{L#$UE_Ui_vjG`)?$#Lx#9E@ zeQ?{+Z#Y#c5>1AgA#Rel?bddsFnji@Xgdr3Izrr_1}KZ^Zu^lMb4Vcw=7 zVaAWcK7gF-ADR$`Pt}O`zUR@9XDiVIcJ$fgD^f+?qXb&yp5V)yc--zsOi%GkDu z?bCmlB&Fh}Im4~CMxRUM8k|c!hF?3Z8GbXT;0PkBF^Zme3OyLPSga|n$aM8@jbDwye`6@`o>?|6F#LlY5UN~qe>YFv<`BlP$HXzWOtC7zoi<=R6k!;Q zhOM{s;U0@DtENZRI*gpXqP0q^b08|x*I3h4)(q@vZRr8_aA|faf${>6<-Hm_V<3vE zCofaP@|@*{V6?*B^=CMlx-cd*m~Ac^5x7szrL35h7d!iFiYJy^a7?Jp zqP(MOn<1>2G920$j>ZSti*xKu%Mpw)J4(>#&qX`XA~7};7kUa6dXrsqwrq+MNztD} z3!Dobd3$huPuD7WbmWpCda>(VScYcVP@BkAeuQBPmg(C+<#GIMOhs%@E0f+_cxt5z zVeSRLMkg0=_9jLG7oZkxNEPwoXU!Z)h(7f(yk+pn*^rw6qUJh+l$Izy6xFomX{`a9 zcXT!{;wMPlwQXzj2A8Ky)N5u2H{1$!E22I8yF}wSbA(ftvY;$4Oo3Tb?@`*{OYO6T zH5U7{6Apqlu6EJ8S1$l_=lIndE2G!X9md~(g!HCR-nR7^O_7L35z+J|SJW7Tsd)iZ zAl;nd#zVw%`B*^ukwEV7J;tLQ9NI>Bq_-n5OJYL+41~+JCF58}V?#o(i+quElp9=r z1wE2!4pvrm_^kyIHTg45cx)RLd0%?#doHFlaHtsEA^Xw#+<0`su_!Ov|D!#_r6=vN z!E!^ZF_Bl7*sWgB+=5OZSg?wHp9U1UuCJOl9J}SXEkEUwOKBibwK{<<(xln?s%CEE zkeUw!eK*Hups}WH+@pO~&M*6i$KaVQ-*FVRtek)SUT8q3(NfBj>?iWPQ7%8D-QAhC z^G2a}W10Met8gt0?I#lO3?}|TYDH4?D1mromi15cD>PCnl#u%;E{IV|fe!(QsdYaq zKcAjQr5)?7B0Fye(+@%pjduEG#gkDi4zloneYYQM*omA>z7A1u;Sw%( zI8geqKY@QRhvG7bT;{c`d(dd=EpqU>!ac%dhG8qdKya|va9`&h{>428Af{hBM~@{N z_x%z=hdHTE{g&(Z#S`4N{`oh(U(6OtS4aHVSue*@WwbcyJom5EFABnDI<>cT_t4lU zl8ove=2R+H%7{=ZWNS6c?F_Re5&0&1hZ%$8#lJ?H-Y)&?c7uqcc8x~->iv5(G^~uP zD}9$O8>E%3v>B`MrM<8nsD?-DMI~*Ba?DG`HKblHl(_q zpypq-M~x+Gsv_Ruw})v95x&!%yUiQtgy22j2Clq)n-yyAh)%VJC=!JIlWEdAJZ0BL+PWhjAntrbT4X)BP-<2`+aQ_nV zdzP1t!S2NR(9I#JtEu_K&8e5Gw&ApCtmR))=N2Vgnr7!11A6;~!%&L3^x~xtcZH*8 z%|3cT5u%(qt>Z5OeGl7x9=`+M?w=t-p>)Y;$08eIyJP*Zq;YXnO&e695azZRA%JH-2y(h4>ZYjVpeYu0#?+MUHYmw?68it%St{B3~QYa=kh% zh6`|cDjjafrN9rx5oR{h8u4X{#&Ko;p2--{S=@$MmWk@Zg~3wQ{POF>al+cPC#`av7zcaSI`8t1!-(3ntd+kP46l56AUNIx& zy(vGNo5yu`{p}_9AW|XmSrpYl|+IB z%~woukAJ*yiHSn;u=i|}#a#9}K~Yq$_aASN_L9|e$Sj#)od?9UmEq4%lY(%ck1$7~ znp)*ihZgt;!UwC*{c21$m&&$XL0y~tUC*k6L+m!xT5A6gWBM(|2zgDuH8yf{aT*uM6HkttX0{w|1k4zi#8h+gQLsm~fC) z#zMvF4F0vnQuFs9Kz7E)sN3SgTNW!*eycM2+>Rai1^_+cjaNam!hI(Y>h69|v3Aii z6bnEeCwFv;T(hu#WY-b}kN6P}?%j}3vDP0#d%!o%u{Z0I{ej!mK1HL9hIQYW79R}t zAAO3oJ6Iw24?cxK|4;bzzgHkM|1W*|-&*!8IA2Yv`~K>;9zKpFIa6>;^bRUYvi-Sw z*{K}SP*Yh{a9n1*6ghTO>w_ss2>MQV;u@S-__35iQB6@Wvci~)9^;yW4&sZT%i`0{ zbN|#3t?5Zi+`*IGKfQmRjEuJbU7rO4Uvm`SSixmBig*O=!|!ghh-z+m58*~q0Ts9^ z274}q!WLmRSEkW2SDNp32|}a31*t6c5g zD9=?AxQp9j8}Js{=IjsCt+La$3CO3f{qj0n5fkxkR!sNp9DK^mw6FpK-Qaj>sr zM@>1V8|&{deBZ`C zZ?gszWbG5=p&LRmR60?tA91W&$z9P5)vT)&2572Ycivts7wQVOHMZZpuFqUA9A`l7 z;3XjZ@LZ@Ui6_Fe_Ic$!LsfD*JKmJOfW4&{ovgz%*`|u7ZRfCVI-eN%?W4s4tur3s zRl+P$L~v1KS2pDl-$V$iqf9G|s-w5Qjc!ZTD0R||S*G0YV>yf}QcG(`)fRl25d|AM zyugZ57A1}vq&)9>&Z)MFa}Nz8g;ikaonx{dv~;u~%pf;HR_VO_bRaCjdP1SW#D z;+ISAuR#_+nRoN>J_rR%!4X{1Dq)k-dkDU~q+nh(d&A^l*f>W}bIW*CM3V{qOYn(9 zNQ|T+UQx*Kq~s6b>t@Me6|7%R9Nk#f6pju-gtjX4($+ z{U;~^;hJ0)v|1cm%P```a%vtPJ*y@JwG?h*brt&VcIN1nXPzqYKHqCrVgN;b0X>Y; zC#Bd3*IBwc(&KZrmy%iy@MOF0+Ky%xNa8$nCF z%#WH(%rA@dk%7sC#K=H^kRcADp(Y_Bv@a$eP26vJYL`;MtzT zHng98MQl?E)iFb=<+uRtWm$i|prXc+w>Mpa0ebpJXjw8~!LrvxL^_M%5ioX2Lvn16 zuNkPB<+=P3uMpG1&TSGZ*>1kV)G6YJ@c=ulP2<%`O-tL;lD=TWUs?daP4d&IB;rdWnj1f=z@XiN?`&xuJ-0)bA^ zi0UP!g3?jzi*tL&$MTc7K8+_=f=o60qMqSgoKfeoWBZL4^yV<<02di#8@jIKd;I6l z)Gp668&9)s!FL?SqO-dte~Ataax}h+ph+a1pNh^NhNf^tYdiKO;DcGrg70|?zSSg~ zWyIJ&`!+T)=bPgm!UUT-e$8MoBFYGIb$mc}f+7|8_4P*5RkGC$wZ)z$tQG0#3#7Zs zyUo#~t#2aZ3*J=oj*zX^?35V_LX(#Cw8aftGnmFU_TZwrsV;q-hOG`KX%uPcn96G_ zbTE~x+Y4Pcng=IjD zxmW+#7NcM;$(S5~#tF|Yg=o3wY*4s4s($?_WY5r(y=pIG@?fd#bt?3VZB}@| z;>?>gA6hRyaIA;LPObM>!!`T&DvIooiKVE1?7FT5rvfGJ(a`o2KTS8WXs&+a+96Be4@#-wbwqJfJCp3bK4*=T+gk98#1|RLz@K7TlRyR>2g_z1 z)Gk#&@QB%46Y#<>Xdz@76d8EGO*_pwX*;}+t~<^3G$k(Df_=L#6#Ih8tA{i66fYM? zCfA;J@@5Z=3X%g*h{Zl0v}`v7!bcJ?5U@$^T`FhLUKX#Zt3!R{0jbt zen|7)n}wEBhLg0CNdUyb4WQZVA!e+)C<^(txPo}CS&UG4`m6nhI1SG=THW(LGl9vX)nUP1e4^)imb1R}p$AfctY@{g>urHsogIWu zw?t4pexLFkk9meLn|<3GqpU+0f`ruE`7X5F}l#FEQ6~@o#$f@?3Cm4 zTj@2-i^-v8FhhAF*t{@w|C4*fkbeR}vGA$=goTidCH2`Hv|X9r_?eUI#=0Frk&Cvw z3B`tn=f4D5X6aSC{0FS{o|}}7oB7b4XyRM2s~r@&zZ5wKDpFO!$;yajHLRG94JR(MKR+Lq3ImbU-O z0&nDiB<4%_*jfxizqI9X?1AybswQd$>4W+U)VsW;@b4Wuelizyok3U9tebq+23>IX z?YvSp%iE=|dcTE#AB8!w(#{?UcuV)u)92T&yap=1^g=kB2Qd&#SgTk{|KhL*^{X2S#qlEW(ZL+vggpX7+Q70)BZ+8JU*(J|$?{ z>|4vqdnvagpwk*(HM0~7CLS%z7RcOd=Eaxf6Pv*$MIg(LI=l~+0 zqC&Rj%xHa4fRuGl4En;#1MHi&`3b{-r(4qZNg-BGg8YOlla96rZ(xQnMW1Fe1S_>V zi^snR2_zQQoNclDwDcI@)qC-95dUiG!aFG)M*s<>NA3}ORVTkXmjeN%yES`02*jP& zxK2ElJOnnj4I{)JEw|>;X5do9U|DKi!B=YfvWVK+aH*;|{Cy^c2%wgyG z2;1qDTEiJJ6QM23y!PY$M(;{GRg43SCT@;9P4_1gQqNo&Mi99+uS~m%q zWl*}2NJ_yyiK-x7=|G8t;gfy+Wd?|%Jia~sC=6*l zOz*I98I@DonuulRDA*tf^^P)K@U&tnSB$%a1*_?$h^RIzp_*}yogxgfh98m{M}ugX znFv$7JOrZWq1LaaiV+$&vn6mW)e=YKX+*>K+bY!&EbXAq2mk^eC*T?n&$ElG;X<2y zjOHHWH2RsBpFfB!h?^p_7r|{tmhGKF;`mE+ywwfGMx~uZCcf9Ok6c#R)ql{FXBNrK z5@|_P!0lPO|0**brAzv5wKw998>(T3I#X)lg$)>zhdm^0$2}Q@&qJxc1#gGO8GO=( za+pUTXn<}tW7-P$aus>ob7{v-*hBXv`n;t!h9xmY6$YUO#+kk15$yAF7vW|8i)FMx z>BiN#RrfrECk)NpN9`u$xPvDQ(=ivW9U?c39QMUh9;t3XtQ&Z^)z6Esb|d@3`}8H^ zK6s)$gSPjgXwj9R;?cOoKF~KzY%@pLiQ04{x-MHveZ>hR&b`B$_{8Nov}uRx>j%Cf zIfF=Sb3Y?qXd_?f5uA0rw~F%GHOlrr>5+V@z}jW3_8{mHUVf>yt87QSFEjayZbzY1 zJ^89S4N3gMBT@4?D6wY{F25e3S@I54-;SQG+WOx#RJkQN$L*~O9%@^13p9`jlv%tpVnW+p^xuEq5d9FH>_=%~{E(d-P-$j+ zt@1_=E{_M5Y*2m}3gGn3P26R1BlRs=@9At1ek5u~nmDw)nmC~amvHU1=~Dz(aP6aP zl)aXC^L>>9M@*Ut?sR~9bWU*#&7&R;$A5a2tK;5(4F&cDui> zH(n;Hh;-yS^`7PywN!$V+|N3GB^Fd{y{*$Lv1p(9cbr%2R0jK(;g`;8gnQNT8zE11 zcpB#JqxpL*BIF|PBe~KHdp^NURq(tDvd&*3hcP{JFWWJ-4rcIy?5W>w zXGo;#`O|7OK2?07Vix$&WMQnCaT+%PE?{c26?bmj&O)xz{vP`-)Hs?|-X}fnfnZ)94n)(EVHWT=NYD#RvkFSJPH?WWyI!2> z`?5WoVO>T)@D~{OFN7jJD6=^D0R(%x?n>tGnak|HN=(sh%fq(~osbE?uv`_5;C8Fi zZ%aDi(>w7ombkJ?wSCq^m7&oWRO;m+&?MJ;HJ`Cv4I%T#+|ONxO#2m{?Xq%(bSiflFC>5?ar$6eXfaeHw8 zL$O|k$U_mIJi{A5pE;j6|8p2+Z|%Q?>t}|n5f*rWqP!_fOE>mhHb63H%nI>j0gaGg z9Cw&E+>M$dkuB#A=AWWn56}Pz99d^947CV3TH_;Ru*75=VH@Fy#lyhGz)QuY0*wFj zcPRtV0obMaEa(pfM>t13rJ*dKEvPN94+EvCEVwO@EtnZN|3A{+F}SjDTNm!wwr$%< zcWm3Xoz9AFb!^+VZ9AQnbZmB_IG~Vs=2D>@AcL@#vIRh5NC47;|?;4 z$;=-e5=|@4F*sRfw8VOfEjU6tVk|CT0y8)Z&5VnU#TpomOg3d{N^hn+WNA!qLT{lv z)fVhTV*;_yDvYYj_?C1H3rrqJ9#9*o4Ay|FMbW3zWq516<^?_s;01HRI-u5|?9g|K zwW)hnUULF32HXZ71`r1Lg7HH9Q0!4T;dFvCLp)%wQ0-CdG3?P=V6QND$htJz^x8z) zR6KL9eSwTXdmteYY@mCb5R8u z-ZHOofQ}v&>HLj_Z#Iy<*DXc z0Qfq96ifswgz8KGCi+x<%?9iZ{=_82@MU}x_LO}pzNQ2E1slM9(!Gg4RbTS~KZAe6 z`5}K$zezncUSk1k2lfZtDFfASzHxg*d0f5y(v!Y?LvcFw3%UEl8mNf4Z*gr(sPx;J$>kG7CzVrplLPs;1e<|6R z=%n;R>q5s8k&%Dk4`yJHuFDz|=k1cG_YIj+&d8GIVOF|T!nJ_n*7>XBS)(MIeJ_vP zfQ+&!UR$x|+SKmU6p~q%X8)66H%EKTJ$7T4TXjEGiiO zHWkxg!fP%W<&a1FU`|`MZbV?dP6C(hjvuqmZwa4Nzr`8be#37G>Vj4*H|lAMdFbed zdNy`&>Lp9bmOfxgn`E^x0M=+hmo{4P?4B08n2t`q3!h~*dgqivz|@CNx!-2OnM6;? zBRf(b%QK~CIoj@-5XeaARZnneMAAC7e+mfg^&c0ej7p<7S2i6rrZ-Zy9%ZFJYN3!# z*{BC)GLoHa(;hF1l;TLjrEHdEG*h-1{b_3moJ6fdNp*39(8x^F8Q-EkWVCRG(9mFO z74N6RaFvPj+B8Do+%)27aa5plNDp&sc5-7-XpsNGlzOq{j6ru|Sd+v<)mucay1crrBtO3-(u_WcRU8ZMWFd%k0a+l~ z>;P=R4MQe{vo6}Lj8IP!D{gEII^BY?qP|K#6{sJQqHCb6s%0KcTcNAJq^dv{WnIZw z2m+0xB!}@3+-5H4G>i&v=jrXEresDDxCPwVy+S0>?9RSyCIq)Ii|TbL`HFplacgdw z{^M*8;V~^z7s8*dM{tQ8As0z9B5P-(6GS5lh8oCliKrkJ^;^QR6ZC`8kND5S>lT4H zT1}CgcZA)&B3}e%bBhO*NH!r6$bfS&{iW_Hk|)=TPd-~`QhVhVp7k}>m&CF92RO=U z0bk#=TMnl}-@Xk=*7J?yirSNQH;94^HL0xU!LxoYR}*r+ul3sl1CpYPp+0;7ukz7j z^~Lp6rLBj-e$M)j&a>Y5$j^yG&=d* z;s-IsKy3u_rSD+1O5`hd*@$ctO4P4A?8sG(bZgJc7sWda`@?tBG^q^7>ZPH|ZNs-l z?u@Moe2ED9kCl=nxc`h1=g1b1pF%k_;PMw{93reBc5XCbxwcCr{J9piI+gwk^wEoO zdA8!#^Rr;?31)B3N;b`uHpY{3cP!dbRbF41uB0#R`FSP2fp)fZ>zt#_URw%xU;}qr zEs3Ek(Y)WNu6UCFbgzw!mB?;Sv4bjkOhjf=y$C~2gQ5;&f5@|qPb z;-Qll4@i8c?{NeF0nSL=vb-r=O62ES-YWL{xewCE^(ef>D2;qm9BvbG9znF5L4cP+ z|McWGNlY5=eqitN6xZpNEsrnbJwRO{uZjxYvGJjr>M63fI!4|SqMSSymJW%C`a})w z%&WLdH>$Ha8}bQqt9ih;Ce3JLrM(u%v3~j-cAUA~q`j3xlqv;xxoK%%Z?fZ$JXgAd z!kdZdd4PZB-)K3Fzf87_WcVuWLUTO3VO4e`{#!0+t-&3Z5~6e{l^^=V(L})bF|7GK zRfjs`W3YJhokuoY6JE#^SoGC?a5+<=s2K2`q1Zd3$-Chyeb= zyI0Yk2kX(=hMuXe4Vco|ssIJs3_|qVh)68vUe#S)Jy#MLpjO-)DJ1Bl+426Ggnrm$ z&hyv71ew@mY{Fy(8mKs-?R-z#TUBd=>M0&*1?pos3}vdmLCQsP4Hm-g6zo-dW=6K| zb76Fe4D$gcXm=nS;%#t%K*byTt*MGDrE48pU%bbP>u&&wVQ(wFHi#TGCpv}tn5KTj zoJT?Hpo^|uEU(a4t)kR%cS^oC4=Ta$E8gm1)dOVL0x2aYuHQOUw-9n^pYkG+fF2kC z&0z_})MFJVBwvGm3AHzn%i^>{{H^fFxc*Yw%fV4K0BEkNlaL0|?hgzkAQ)|EI^UEj z5~0#H4MuLs^1jkre&B4`6Ft)r4}Zztou^_ymMQ?ns#|Ep7bEVjEcKd-HplSN3?MeF zf%C`4RrHB>vNwNE;YJSQ#V{_AO6?6t!58+oGVt|#C753uQjR3}{zaPGp z3e+$l&y2YAx1@0^%1`54 z7+-1q=PYANXLhnKlh7gRZP%`kbPNt9cT5wt;*XU46>f{RUsTA~P%ExK1Aj!C2C`Mc ziz9t@;cbu9u{&!~e8~Sa<*zRJHZZIb7G_XM8@BP#WmO;86pd{H6gk}rl*(v<-ZIle-r@_K* zJS~@yZHhdT-7+<<@z&0MOqaLo6iX^5!LfY!!5kEXXRC5(!QuJ%zRslO)M~e2 zQ@}eP)G%0F^}31RXo|c?+)Y^q0_^B)PD?yX*_wh!<05hy8<7p7>pQw7HF|pT8H>T? zdJ-C@3@qY$NIjWg1$a$Y4Q-8-sH+O+iM<`e^6xf~Qk|>fME0gE8Bw2 zcLc}<9tqoe*3+|y*K?oz={zGIXbj#ITuII(ZFIm5SJZh$GFOxfR0Zx~gd%U?WjIW( zT%c`jTU+R!D4)c_4*_)%YTO?W>+bHvTa)A=%jlW)T(?c)mqG&tD8KN6X3dS9)s#f^ zhGFHAX$-58PITnF5HE~{4IN3#iw7rLw~w?8D)CQI+q2}X@KPrKTicz%MrS2 z97IP5-GEnaFN>c_j$47A(cXB}WyU-Z_zSe{$iXR)Z|BURZhVh4l)u<7oBd>=QQ9g6K4Teaq=a1zk|b1<)wR#ti?kWb6zR}ZoJyoyJQ5m&ps>pYX= z8qeea<7t`7O-Q}64-!mqw5vADkdH(1=jQp1MIjlS4C-CQ+?GCz?<(8 zU~i5e6!p^QimBqjK2rv`zKhx8YH&2cdx*V7{JW8NlUy<&nOl*9vtqEvDT1v-49cx^ zRU5T*SDK;`9q;wUK3A$$S|Y;{3c)3eKgCs!vbLFwJdLc7nOIR>T~fnP!%ZtN_-JT+ z?)x0Z%3ZjuL3D_ECXIHyr*IXbxun}cejZ}Cq$(^|Kecl4@DT0C4<{^%`NpYT{vnKG z6l_&P^P+?ACL4@Uhw_cJ4`y}1&EHYL zuPv-r$wx)?9kRktpu(4I*&(vRFX)s@V%Z`8rCRA>v&`39^*vLy*JKRfftY?(Lvpw6 zGXe;7@ysr5(q^J*T$yAr=QDf!DK*}$|Cn*$-slrXqrk(KoL=NjbxzumY0VWN>h~?_ z_O=uYA95-QF~HE+i1eUX3n`#VbrJV2sy_iU1X(vNd22!Zb~T!2GjZ-PsSY9wSS0787?|p(fI&8gq?( z&IZM`SX9MLrSlURwL#@q7|A>JTE+q@{jC2xG&f?^K=gOekR74IBXKgg>U2-I;2 z{*uKwJG&TWd|@tFkT-r#I0)xW1c_nX2>2_xoC&o^D$Q-3O@1FAPNP7*uAu@Xc#d*oDwRTG=Ai<1^YER$xk{&(w@xd zUB@Y~W_W=)4--;eRGv9rG$mZ3GKS2VMcU~juqJqcJ|VO+B*{gCW6lo_SY2&!-3)tX z_(K{`UPx{$>b5wOKt5O@b|@zH{&9FoTyWD>oliNF4>SnT*l!7LQ3nyZ0Tw3T68>hx zfHSZJ@I#GG_1mL`yCj-yf*HE}dJHg0>~N#fTwdssGVKdm6Hk)v6OCtq!B2xPPXjGv z#%N$>fURT;TrT&<7a9jN2EeYC&(MTY!PM)$#~k2Pr4ULyN={TC*HuE?NHhf1y#N@BVjfc65 zPdy5kk9#Cc&~Z;ePvK|+6lT4Cg*gWOne!5ngyU$cmD=y*qcznnnngUW{RERm9OT+Z zan0H+Wx5Ff1=SB(m3;hSzN~#4JtAj={O*;+`Mr`KR!i>L$dNE~UajlR*O^~6n8cg! zPu*y;`wvXM#(m~UfiWk=a%>m;s%HhqRyVHb*i}3GYt1u8XJXZf&L8;~zvx|xPmHi7 zL#9&^BY#lSyJ6uE4}nRoTS^K+(#6afBfCkHlITYsb>{ ze=VS?PKn=>P&stGb&NA*4#w{zqc9F01NVsaGUV*sDQ<8NDe>qexzyt=tG=fkQkob^ zi{BQ$l<3T?UNIb}TJXOAJpPN#Fs`qY4jY7sjLWS>1o|3NpyA~z-1@rd#P$dfZ`$yk>dM=HrKCvKFb zi4Pl%(aD~mwPJs3ko(qMWZ-7I3F8i0cfl8Ln4P)xcUd-vhM`xlvAJEjSyen`U`*M~ z)aS)47DBNRV+@i%RRA{5d=;N%e%Ip2|8NrOGtSZzJ7yj~IFxv84VGgQXKZGRX4-zh zffLA)4aeWFl6k$*)CAqtWa$|+$L@B9D4B9kC-%4QDhlh~oAcZer#OX~+rCI8glY!l z7)$O`A#aAnTlVKt%Ua*;mOjG|g22^+^#?&6HiAg&2F6adVj^)q6-!*m+_5e05vHVc zt-}&tT`R;@YI<2Jo~&ugb)=rILgwt*2;q4g(?3IUrr=vLjCAm9?QuGP2cM17nzOVn z{}^C1I&#CCw*+A_OJrnDyc@N}Gq){}zHzUX33}#K_Y!fAJs`<5%X@8*)O3vY-p10)+>3W|JjXsBmsGXn&eu~jILzB^6u$E^(dk)n5rE* zm~UpCk%9pk$+3l)x(LL*ki80n%RVupmdUrE{heMDoZrQ~nZAwWZsCrd(v~&jx;fV} zU*!Z(;3rz1L}H`0VHt`YTFmYplHv%?xQ;l@t2|w@PFkz-$BY;4tYP1fswI(>B*#z- zyP`}x+n~=}GpUxs@{xJz5bttV`Ltr+>XvN2+cO6Bn{*+~3w1tmIXb2h4muE3Ge!m| zUG)t~A9NMS+D1TU#HQYlSrw|M2^P0oe2u=+f2WB=RR^L!I=M^EIiS;qztfL#4Z_)P zr5mBH8-mz{PqmA|4WqGd+J%Z&2NARuxmpNy)z7&VqYr@Jyg_&0v$_YC9*@r6Sd*B1 zCpT7%96=#~VU?>sSlois*hqxWV6{ z*B{XtlIl`>!*@V40A64QcxY1YWvA$NO|n98>6q^eqzJ#In8EDWXoc#~S2|Xjao9ID z?fIlMui2aoU8I~jg_$7<8a{(uHf8ncrD!;{9v}e5ZV`P~ZwUo$pP_p#cw&4KgT2Wi zdYLHp3YB3mlPUL27Ie3$s{5#l)jYpzhd~ur-o)R_!OM66jZO&pNw=dEq&Bau%CX|4 z`EJ4%$eyCV^rp!#H#{fkgh_%UN5y_XIQ1c{YMLjL%Fy?fanCL7XeKSD;attm>tK#> zCLJyy-Ad;T$C)}{`-Qm2=$-Im>F2lKO@cvG)uY!IEBl@kFSs8IKT&_T^hEVG^u%3h z3JrOfVfc|*>^dCOKk<2i_E0Gd3XL^h$KB!s40@nH>9O_<{-C~f0$_Z}YX{>F7~e{_ zf=Ul;ZqS}7-&A|Rgp#gCW)B#i9G(S1ZudbC_Jzlo;G*7g;{W^&QTwQjKZpw{peFrM z57(JUjX!~%PuotalunuW>rSj;50z#DG@;^Gq*A1WDYbq+jYbrGu?~0gv~iPj?U?!{ zn#r$h{@-6bZKUs9oy?F4*4C-->Uk75omq)z{S7=2Je|3(&pA z;PQc+$*=;Xtpn!8;J&32mkKoUPXbP`S&FvTgif5?G=30%#Ec+2iJxG8ZvFVPFX9_W*==G9Q@3!WsL@(o(U2Tetob--4Juqq`{iLos z40GkT0FyA1Q`txk>-WLV7@QMc7q(IR@V$;#Fzs!7#ICAj+{F(BLwEKLHE>0bhr3TS zp~rTNhA^_E`k-~$s2rI4Ay%q&0j~n@g#0FsEQCCG7Zzpvamh(8I-Fs%CN$nK=^8oaV08gBXO!_8iS#as5^P+g^BPl1pHV$} z4hF^?6JvnJFe^6&EwHI9bXE)jK*Cro+D>RT?+;Uek|c^|9-hptUNu0o=bXh@)5l}X zF@t4O_bbb-*wG}&a)ff*%KQG0TdY%rY+=0-7XbdV2;n!l!GIMj(TDRh$y*dRT=8(~ z0M+$Lo#;bjTCTBk7$6cQo28fb&Es5wrCmgDIGnI962VDu*p^FZ7=ZX03t~DIuVA@% znD+ex%m5xN(GPkA9>N(5q@52D`Ga>7&96M}`PA>9iqiu`OTH7#Z{IGN{}n<1_f)C> zjG#L?n>d)7F$r6_{&03S^7;jJoTEoB?OK5 zMA)E&Q`UOPW&;J0S!2Ll)P&?!o5~yw8#28#K`9n5*%AumW%t95-)@NCcfgE!<~K7) zDmIH*uUYS$zh1d_Jyd>gudgQGIvr&Pwa-=Rh5UaYFkr(PBM2^W<0Cf)4YVlG3n@EE z289~2;A0Ms(l*cvCgeqH$!iHut{crvu0+%P*jxH-fx%$m-!kMlE9Dz1y}zZM*&KP8 zAZ;|&B*Zat+a%ghoRuJCwU(mkEk4X+f#PbxsX<%BFj~dCxQ}LaBNsIe!6(slpLcNH zYPWy;in=7V$OD8-MH7H$a?y(ukQT&5Fk59#Xe~LJ9yX-#(+^}~IbTqTIxPOdg<`cKLBedbZWdO0lE&4QUVDzs+1sFne{@=q zPz!A)uCWysMR$2wl?>2WKHtMCtVDLmShTxJL(1_UfL(xj}vaV3EC4|HC1cE(o z^r4Na;PT-z$z8j$lDPB3m;(z*&LME@KMfv;Nw$XYa57n4rgRjlQpC3Eey8QQUr}dZ zYgcELB6yo2=s=u9NzEPFW=jVDMrJS_uMeVwWA*W87&nttG6S(gns=roWfJj9jNS=j z!g)vdcvbXs>gROaf)*OJr(TOBZb5N{;;lz>B7cG~()->euF%GYlGYqdZLGi6)Cmdn z3vnn1x$uag!J<_4xHcru@ATlFoFf&bLaLnaldVNXaLB2inGsRL%pYUgyYLNFw+K?F z;`DCXL*PKX3%-u@9Lx2Z(-6-%v8jaUt_dwqx*`% zqzmOdIGR*m$KFQ9wtL=mSb!IldJIljDb7E4@BAKBI2tZQPFM?G4@_Tv(1qDtw4Fyx=RdS)M zShWWk%22k2w`IYcT8l4o2smP)2$UUbKS)z@m$EeXisf|lY9P(HPm|?AiK#8`CZ!&} zZS|C})17lCK~U24@stP-i_R`8@9HNE>l-7;?z`z4R<8jt@gtQ30%Wiyk~>p*)LEjK z9KkfM8GIao6?B{MXP+*S2}Pnmj6Le;HoR2cu_^TVR0{|O@UkGnn>X(^<=IJ^Ea$ZM zOKgrG>^nwADh)&s9ByOc$8TtN3gk!@wf36W&|n<)vs2kCUhd#x+%Ae^GOW<&?Otf! zF5RMz6H+j?cbJe|hcW9oaL#ZwMu>>H685}j+!3kC!bgl*JQqe!j-9m@6af112FFOu2DNfsuF%BtZjIv+6B&fBXHa!Z{Xw) zvT8Tl(y{1$r^Qsaa1fRW*+)X=O_mOKbNwU#v20)LQof1FUY`0$6ZlpqMsD zRETuco8pqax3>q}-$MJpd3j3ga&P3g9F*cQ^%>X0;p8nG#=Du~pRj13pr0TQUcdDo zX$@^<7uVO`%Wa{A=qep!LdiK zSxZi|5tvykj^g~eSbGo%7H(Z>L)QG2z+&;|rP zzET0KMa25fTgKxWd0x#?CYNRs0ldJMMc52|+Cb5rYVKvLR&|Q0sracc=R@D8NB$qP*Po~f%U^NlHzbtB+SHvY{2W^Dws9lT z*Q&bK7@34Hgt%^ztTiK&KTMm?(M7>~DRsN^P;MeJu2yMP(>$8omHKa{=KRzh`|i$V zygO69VtE8mye1oF&%j-1vGHv7O;OqT31%3@-pj@JU3)o4eAT01SIj%YX4kRKb=PY! zT>_Hl_j1_um=;~$1q`50Ljw12WSy(j|59d))TEipuovkA;|B(hQH)yyV`8914jNRN zCZW2Fvkl*Z*pg;`F_G92mOWF@;a)bWl`Fii1e;(8j6M>~-paTyZ!ijDs;v3Xpwp9d z1h0jMp=%CiC7Ws7VU}XFYuGH)s=Qo61Olj!!}!T*2niZ}qPp^WMEXn6C`NC|u>!9k zR$FxkCip~wniyK6AgZWPp2q0a!jkPpxify{V4UCAnQ8{tB%PBZD` zG|^MtStw@(D9(;zmb#?@KcD&2O%>#Lmb(ITUU}a6I;W;~dwmZM(hi%U%eq#_Agn7P z2>vwE0TR&xC3)dHD)xt)zB_qx0Bfy9-C*Y+YqSZ()UJ?VCZAt zbtEzC0y4RKfZ`*$I2{d2U~TYj=fe6`UMjR>SFUzJp~fyijzU$g886*vmS=`Xso-X1Utas&cdN;r9Fw1+^1@9)LgSNtn{bi&je2_C=7Dk0da8v(eC=TwUQX7{ zBHh=sIPpC<%aSRy%AjQGYmapj|3q*@mgrc{+k6$oeZ*hf@V8{d$AtWtMQX8gIe%6w zPZT8k6-2BlAvh4!uA9mB&R~t$`9@wd7DIV=u(5J$<>YgHs_eg#Y=uP!8l;2yVY8RaDFGf zNae1bESjwJgslZ)>yKJ>f#7Ly_i{aZKsYQuBAS~?z*aHO%3%dbUN4!i`({V4Q%Mv= zyc7oL9Xx`Abxsh#{`6F{mzA|PHc>sy&GVo-s!Ia*4AjmNeBUZF%;I_yn>u!!Rj@qK z>XV)?;Hm0}NMRG!8>%QQIhXaTQs7X{pULkYReZo1=W1#50I6=IeZBFXZB-KClx(|d zV7PK>x^lS@+8yv68zR~z7EFY=GCq|9&qz{)A*H>nqt{H>NaF5G!}GdD#DikS9+;KN z_~zUY^AIbuZ^0@>%Z(hW&K>c}W8=Z+=VovelyFxk3fdGkMcQ{1s8KoF)XZQ!ec?9% z^LT}4zvPzqI+8ecp=A0IACk~(Avhm{##OIA^&Oe5CN>q*2;OBo*bK4L8ryudt8BCGg)Tv#jEO~~4+qoBf~1p8fh^yk#?e=v2Dn_d=mzGRtCaR0AO zOa05C%E9@628}BP6%A}(#@6Cu)hg=nmg8YN?MQ9pLsf8yszz-wDAFf5rV9w`35FId zvBdi6czUe{By%BFmdz!4;AD&Kc(566>iMAHIni40ZmZ9BY5h@mcZ=+p@j{l%rT5NV z&+OO3^S+;JkON}b??%)@svp3>O*2S?gi4t8*dNn|Wnp@m46K4b0yqK*m|g()=YRLQ zrodQr0alwp#p7(0X2Q83bWWwjeK?o7}QP>_5!Jk4s_I= zOVxRYn&+OY&!V4>25-i;+`i^*-ep27rG|P6D^ofhRtU%GG$ItPazCDdP3bMX7-hf_ z5Qv%_+X=-w!3542HWf57@fri7@j2z}G0KN2{~VdgRufmPeJfIEs>JmO%MI3&>hUE@ z)x$D+`#*`%m=seWWL9P_7vN<&{Ft#^u*Xg5tR+0Z(fQfo=+V@5iME zWm%Mg>_^sOlB~F!f7f!LvVU5z*h49Tio>l(p zKNjiGlHjE?*2K^IPMh#OEUKM?8doPCwc49_N(@!nSe*2F%O%)4crY0>wUTeM5^^Vy zMYb!pFU#kZL}-r)*s5xTQ}ux2CwFi;oODdjJexf|=c|ou0p^mWOn8?n$9*mSw!Y@Y3QN>8nWpiNI>c`M#OTn~G*b5Y|`|uY%vji5w z(+I`xmK7yBM?p>QNx(C};+D}qPuZZUc*)?gJT=PRm{|E4m9ZT372vQQ_xE1sQ`p_LX=iFIYOJ;Vc6Z5Zq8N*jJCa`fV)S25@rK^ zW;ua^8s&jyf)wPU{4dKAk=-YkY1|dj@x`77gu5}AyA$|ZNYWdui+a(6{8HR8UG4Jx zu8%4tnNa>YNsB;$%`wcDhzxb@BmDrLuIMl+K&I?1nb5ipP~rxbV!7wP z)XGzQI}Y?e(te(rL_w?x-=!1Z-F74eNC*XN;&p|c=AGG8C1t3-W}`Awug{v8i0Tb= zjKynq(OAJulD!_VrRr#9C|bX~cfLRNoZ+_0WN(are9Ojy2-VdPI;fSnCIat9)2Ia28i$aGj5K}?C#Vw;cp}8>-g7)4Qys=nMK{0+uTa1 zaqUh+`wHt0NR6sC5~@f*^RNRCj<0w zF0VB=R6@Oy81|@$;DtM)IK44Uf>PS^)|zZF=IM@-=rzSfV4g??9kqUVNe4MD?R}L=5dK#NZW3Y-VsB~dQ?5^7j7Xp@OeU(egk(ybBQdJ+@?m`q&0JS_1{~a+ZPZynnl@|+ zXtQ=cr-t~S-lUsDBK^d_o%EOVQSXFGT?+g}*S^~%8$6MK6ok(@>ML4O`&K8^5UbXK|~Z*b{$x=Xn6R>Li48TS_oD=ODP}>m2V(-rDM?_RE}a z(H&!#qmMrBm#%Z|lOR`qOfLBvx$(oLWrG&7Z#-tN5C>jyZAVe`XVjJZ_n0a5#atQg@NzLK5!7= zbi}@S#4u1MdAOApF%bnh;TeXK{ETM9!@_P1;vdPBsAxzZ-@eRVT2N)7!w7j_AKi8~ z)7RfWp5H+0;*?=o{v5V{^8=va7_S zud~K`rb#2nZ>WhW?NxC|LxFGb^Sxf=P4ThVZ)gts0)w-5!<5;2h{g1@fr$~aJ4JD| z>i{*W(i_nuQ&*~+C@IvBO2qZx=gd1sYGeoNJ@c4f1rKB++1ujh53OYDC#3@^Z%!BO z@=z|tSnkx0jr*ebZAQOC%EUEh6p4W$d{lTHV29zDb^FDw?`V&$+sXG(%i@h8LOt*3 z9bs@DI~nTIY^#`sR8d&?yI^~25jLDNu&E6~661^Lum7pYoS2OolN!@4L9#Fy!g#`u zb;H8{o7s2{gk^$aup^?(zKN~&LvPwc?AX~5KVkeq-`txFHr_&ECQYn-6qiM$Mqt&l z!9Nbvhgvqv1LVss|I6ax|7Gy?ay9!`uu?@%1z!zaKwwdXO>XcTm?#eOAFwPdW)X5C zbLbLcu_{h9V{7pW(3BDjOWD#iBnw<{EJpfNbuF#a8QTV@B-%on$%%y!p2M_!LrB>xzO%>V%_Y+)E6Ygxpy)aX-dkY(2f4>DatEz~_0`?NR6gwC`A>zxQn-ZRl)@ z)r+kI=F8El+k{sR~;hs`$E0ZkCqSV2#;PMQ
            qHZzBlz`bMF#RpjJMuwnbGRW=+ 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

            hYqzp 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�Hu(uQ#y9X}le5!Q9m4ofgS-zmdh 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 diff --git a/frontend/src/main/webapp/errorPages/.svn/entries b/frontend/src/main/webapp/errorPages/.svn/entries deleted file mode 100644 index 4691a58..0000000 --- a/frontend/src/main/webapp/errorPages/.svn/entries +++ /dev/null @@ -1,62 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/errorPages -svn://172.17.26.185/COMACO - - - -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -maiaError.xhtml -file - - - - -2022-07-28T03:40:14.580681Z -a511029cdff36e3a9bcb0b27ac6b1378 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -794 - diff --git a/frontend/src/main/webapp/errorPages/.svn/text-base/maiaError.xhtml.svn-base b/frontend/src/main/webapp/errorPages/.svn/text-base/maiaError.xhtml.svn-base deleted file mode 100644 index e5f8865..0000000 --- a/frontend/src/main/webapp/errorPages/.svn/text-base/maiaError.xhtml.svn-base +++ /dev/null @@ -1,23 +0,0 @@ - - - - - - - - - - - - - - - - - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/pages/.svn/entries b/frontend/src/main/webapp/pages/.svn/entries deleted file mode 100644 index fbd4c6e..0000000 --- a/frontend/src/main/webapp/pages/.svn/entries +++ /dev/null @@ -1,135 +0,0 @@ -10 - -dir -4669 -svn://172.17.26.185/COMACO/sources/frontend/src/main/webapp/pages -svn://172.17.26.185/COMACO - - - -2022-04-19T02:20:17.053961Z -4664 -usermaia1 - - - - - - - - - - - - - - -a11ad980-3ca8-45f0-88f7-f0e618c262b7 - -test -dir - -firmas -dir - -sbs -dir - -workspace.xhtml -file - - - - -2022-07-28T03:40:13.777678Z -11945a9ce828f288aebee4c07fb87057 -2015-02-20T10:55:11.096147Z -3826 -cpiedra - - - - - - - - - - - - - - - - - - - - - -14595 - -accounting -dir - -safety -dir - -reports -dir - -customer -dir - -armas -dir - -application -dir - -prubaInicioFlujo -dir - -security -dir - -initialtab.xhtml -file - - - - -2022-07-28T03:40:13.777678Z -f444a8953867160389fbb6571f541938 -2014-07-18T11:55:42.487555Z -1 -jvaca - - - - - - - - - - - - - - - - - - - - - -524 - -general -dir - -bpm -dir - diff --git a/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.netbeans-base b/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.netbeans-base deleted file mode 100644 index 33bab5e..0000000 --- a/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.netbeans-base +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.svn-base b/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.svn-base deleted file mode 100644 index 33bab5e..0000000 --- a/frontend/src/main/webapp/pages/.svn/text-base/initialtab.xhtml.svn-base +++ /dev/null @@ -1,10 +0,0 @@ - - - \ No newline at end of file diff --git a/frontend/src/main/webapp/pages/.svn/text-base/workspace.xhtml.netbeans-base b/frontend/src/main/webapp/pages/.svn/text-base/workspace.xhtml.netbeans-base deleted file mode 100644 index e5e0efa..0000000 --- a/frontend/src/main/webapp/pages/.svn/text-base/workspace.xhtml.netbeans-base +++ /dev/null @@ -1,306 +0,0 @@ - - - - - Control de Armas - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - -

          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

        2. e3djcw@%dLXyasv+p8c%WuY^vEIREBn(C^UviqEY4yOV99un%rN*#UP4L^#@ zNzTL^96W6M0#wI^gKyW4Xh>OZM=A_HJkHO*`MT29TmzD<%df{~8a*GRNEc%hd~di& zqz6gIlNpwpt7tpaV53IjA`vZ;dEkOhfdXY#gK3Bw-qFNi29n)FsxrvITgs z>ANX*FG6sVq)3C{gPn$$w0 zy|QXQu0mg? zl|KgV-#KCLHEKW9`QMyw=uV617N7@NAB=NtyowyLBUtcXS!$}(pG{#W^lGlci-vX8 zqKgN$IJW4#eGJ_j3_khBpF|U{+*AiIjZrssQ9Ba^vD@%ZMsla+BH!%=u#)lay34Z1 zUsKP2t#T(p)1Q9#g2~W&eFomK$an`NMlX|Z7lMMI2lu7RJ8Tb$B zCZ2WSwkhmCYbKuIYdRE;GOowbhplv<8vJo<-_429k8V zxF|BwYrY^y?sJL%AjF_Zt zpuZA^&|n~L(t=vV+1f1b0&Oq2Cq4>}Kh7}MYKk!?8DS4j& zts_)22PMAn1BSGd)xVI~y8Q^IzHD3Ue?Or3~q%jf-%GxD7d@?$|bmHt@F&oKUSp^FH*2jMsIUL^>|zyF$|gEbwV!**;)&}F#rqV>N5Y9gQ{Fw5sMzZk5s{so zQtP%E>U!|nV)3sHsfDgPui^sSB%pB)Dr4)qQt#OOi%$e9&0F|+y#fM06Y*!b$z~d_ z>|#Z?AYALQuvg5z6kIr^RsjO*xZ)4nVM&e#uR=4&rEIl0rM4jz9Uisg$TZ_j%B^~h zS3wuTxS(DCQirJW0{v694NW9WAtt3UhAi}aLMogV{^ur+os+01m{q%h>54b9bvJmy z!NsK@D#=Z6v*Mz5W8d~+73#=cr=kCu<5ndq(f^*e4Rn*&4f65!PF5 z>YLMd-DD3+moabK&Kg8%LXY_&8eHq_7-_EKQ?8>de<%+a_L-eicKT`ONd7`*kj#gX z)8gA{6y)4r)x3o&VNuQ4>85mLe#(E>j z{8kXS)5Z5rh3LUd2k|Bd^HQdy4_;Oo!PZBWVY(B8Zvyt;?qdF#F@HL18NB?|Fe>dSsx;j4qUD`Tid zKQv(08S3gbfnvR z(`vQD!;im@kInQ6syts*P4Kz@zL;J)^k3WRq}Ew&>b3=s?tdR^;<{dZ+b|os7wmmk z6TG;hPs|Cp^aNb;j3s+%M6niQqhNtd-pvWvO2tf6#OJLLT=iJG%0Rt0*Xc~%TGP}_ zTplHKX|dO_bQ!pM8p7m;g7e;;|b)J@xk zm0-fu&D(_?ox*WWvGh-*w;m8(mu}Pa8+#%`*{TxHZUk>;a!Os2u(l*~k8KOEhO)aJ z@VG~Q39-ith6=rrbZ77ezA=8%9hq67Jjl}3_&*qRgI_1S3Eoyu#@1yg9kf{{OhTp= znlfLy|H|L&N25RR>AVBH$zM>cs=$!+U1*k=b5q&?+^a=y#~o16Cr5Nq)*((V!2eb& z^q4v@B37B@hO2{zF1gu)yI`3wJ;3TQceyHc{hp*RNm`Sw{X1%XXqRyfSO+MrFgqik zVC#IMw#N6@T$U5NMiS=8q4hXt<-h!;``?u+QENGGnVd)kzfZTfN6a$`#J3`g zK2~j9csD|2uI;I~$8d~8*9E{3aoFytZFjFL1iNF-vYC(hpDGXLSUW((#hMwh3@I?-ss?oU*a*52 zcbQINo3Sv{c49h%`fRO#KjY4JL+%2L10_WVLjnmuD5;yM(qkfh5goKnzw_CvA*FNd zDDDe*{Sh`ui)?vo`k(s{DhyvskowsIqpDIxbt$alQX!Pu!6da(P67Bw=ZC-~;{hqf zjM?&|hvQKx;u-{|O?WdE)<}s79ceQy(2-FyM5Gx{`wPzZVWd zpnrZhfAWew*tZp<6N!T07N*{j)fHI22ON!bPs|Dy(yI zNc~mt5xa~@(Drn3G~B}0;8irF*F=GO3KR?3>L@w5-sGocOr2Rwlw<;C6nmY4qp)qCTfsLTQ&QoL|FDZ$LesGen;`{DqY#UfAv;7f za2@pszen7qbEDt|ik&AmsQwZU8>8qNuwk5$bDB}9_-JBymEJAyRY1GIIm|2+!j!WBYjUPG)?~JK1*ww1FSgEL$q~m{Jjnl)}&{m7o98#y#6&Yx&C%2P_Vl$0^;$P zm_phMslGl>Z_(H{0V z$bb~pwP@2?WXBV{SU?FLIt;(B8)isvN2$flfEgE`=|Cu*`WtvLWe;Co0e}f7O(4Sv zjN0xiLV4zwewib{B8Ma1E*CULmZ`vO8_u-D@8Ou;wLf^eM6aN{_vlkz>1{+0(-+I- z9?*`K7Yz1+bXWeHh-)e*;N)%LmSec+=1%aI)d#KnaHb#jbLJM;Cy4wLxcC8;9>+WU z>4>%=?-MztPuKW>j^bbcjvla^8O@$;9mF>aXE3gD(BcNF|m!6%xCS&o6!2fAmLZw&nM&e{l?vG+)i5${6{2NmiE zu~A#C6J`q3MAKGdz=vFf(a1;Q*tYG4X0mcCLO?$H}tTuk=pwN+qtORtL*L}uOQVA@cXUqT<>Q{{PN8n9TCdG z*~S{ojSXq?v@5ZIQ!<9 z-PlW<2FH-Kbjs!IE&`8xyBW^`ZqoGBKj2K2p1Uq`b0(Di<0fK289{UzANjTDSkclc z)EOTIwde@ZQ$(69uzFP6$|-=AvRR+ho_G{ka_~v<^gH!*8MTGaP6=Qnp5)YnBHS> z!-rAT(x59mPlCy8Ow*!9{6n?SeAOlfZ?N=yTx9EnGrk8iWCIM!oe>OCIuAn0=cBRP z<#GCw>)|ram%fxL`RC;Wcm=!AqFW@-b&;Uy59%z~jfh)xO*jiyJe@jV`%#o23*fsL z>ac<4tQ8GTUxSS|^^NI^%B-H|t54I7=@WI%AG3`&_TNgA!?4kOhWz}R&QUdBUf>J>DpuZe>L`RQS!kZgmd1Z=?0{b6>xb6(0H#e^K4YlJu!`8HX z`gy4_(zkK@l6*Qw@=DQA^FS50pagG)TW{VYKuumha0<>9JITJOYym4A71DtXQbvcg{m|O@! zxqjF=(PXrBZ{J_dZ!p3>&&~l_AlooOjD46P*Z!yo7GnOc zTN`8y>j0Y!i>j_PCPN{%O+)pElO07H{6%%hTKOgQSV~&(@)wHZR!Q+*P&2H0eA23z z!0`B$VD$J;FisL*rUHa_5<4AVI^>xIx|G~;A5syQ0BmuHzO=Dzh6i0TcCrT@o&fCj znaYK$nyGHEM$aLe#*d8KGb_GiI~jT)XsyfZKwRM-NVO-#gL`j9S58CNJzS(z2+z#=f9LOxq^ zfW|+MfCPxfBNfA09K`c)oCCxA$j|<7;Nvh@IdERb%Q(&{`EBT(?zorj<)c(v z&PzhXf^p!O%?6_p?&uK6o|N@e(F^G&L*mHdgr3hq9k%NrfsBh#Bc<->8kby~5a4qPURO8A!R?a1gsWX}-QvB8R5=5EK&+}=+Bb2~Aa49YwYo!h z|4zR2U2i$4b0T?@nn7esukQ3?6KY3HloP*fv?s~-f0xcR0s?yW2Qr$I-|hfUu)xCV zC^J!^Eb*GG9`7-$UE3+&pDVayAszi8A_v7+cL#WQ4}=YTOBeNG&?+>D(kCQCyMA}@)FP>E)%tgwh{_VDkyYEW)jyKY7|#f ztTRz7irFHs!AwSlJBkduC*I7WEm-qLW=LMSCHv+$@5O`{F;{WhGO6pCa8}F}GdPI@ z|2l-2-~J?s^3Ee?Wu;&@ko72~e=0}5x~(N%Rpj9V!p%qdCKlkizBRLXE@J;@6EnQ3 z+FaKUysWmTxDout0cBT)9_G;>sUh}#5zv^IB}Xzxm1H~1?Hx(h6PP{z0xw2rxHVR6 z8DacGH!yE&6;GlT$6;U@zqKePK+W&I{XVil- z4gpBP0}GFL13G4g;)6R)R!=W@CZ zvyzX74-Zx3Zvv(6A^md)bsUZg-pcylK5bLT!cgQ<79a;nB)m5exM{YQ4yrTrBWKwA zc2)@5caT&!@ak2m@{%D;cAVy{q(Dw<4qcb639=3Z4v#Ilcc(wx4NAVdcxy zYlHgSaNiE=zJ(i%`h^tW1`Q=^5x`!?mZ{Vu_>Af|{Twzn6imt*2HPAj#akiGu1A@U z?^P;&^1VDQYQ+hAK)M#5-=mCVn@hGGMGyh;#*u!v$F;;|)BZqC9HeJsT;KX!Fx6nmk;(NbavwnRm{Z)=qn3%fbL`m zZ^|8tAv336?ZlLB>Wv+V{RgIKnl^XyjX3l869qu#U<8qoKX?!C6-;D>uqbYH!HolF zc36O8Mvw5w-ZYpz9H%zSbYBtVD=%m(hMUc(m#Klagjd5r!XwbUVqOj@=5fnmyU24_ zFC??69W;Bj3p5*QC3`)~=FMdA4UufxH*n#N@pM`@H}!#ccI1r`%K00lj6x`_rSX=c zs7{lJ1^Zp{&}ds^{d(jtO0sgI6|yN34GU|JgTi6Mw;P(b2cjRS+LY@ITlD5UPDEmpP0FyOj*)@0ZZyVKNSs=4563bJG7MaJ9-iEXASyUy| zGypS%pRA_WYEZ^8!ioJZ1`p{5jovT?1K5&fBg5RoBCZ+tVaBT9LP;Ll0_}`g zFXFPId=@9H>@hQqz!;zVxOFi|gH0!Q-Ga<@wwa+m z=G*SyQzmZ5y#B$)#g-0oK9Ot)pV>b9yxg(^UU;d;PV4rCcHkhv&B`8KzWSrAN9#4| z-~<$hO;iyLgSuuDyK%7o*VH2m$2EoX&FYc$#FW$n0demHdv*XZG7;-k{C2Qv zLZ;VTyj;i{QNTXEDx2--@{&z<6J?hBZu|`A$c1QuiyqS;jdbrE!m&39`fd_Y7B-9R z9fWn`>4Ugqcm4J?)$M73t`EZCcYSf4=jQ-`)l>^X;RGTPg%dlTeAD7*oyl{-2;W)g zWbxz|uRD;2s~g8B4EHq{lFyNc3-Wu2os;<{c{a-g%)}V7-@WcSV1df-L9GzX2HhUo ztt<2obd~#4KA%U($={F-Yirj*%CK010Ja#xkXNVLS3j$1AZqdBP`;qAv*+VAK z?s=dSCx&4o2(DJ^D8y$S+S>-J$j+mP-4fkx;E9a6+yr3I+B~vn7gouUa}s?$eO>~! zAgYpWW72lsMUeIdiC!Sw+zu1MAZA#}cisIX?W?>Fz`>`<4%+Aq7j){CZOkys-x5L; zM3f#3k9lmBXP0~In8iCZW703teAsVo&1MIGY)FA>8(uBF3XFB!)N$qfoXX%^BkjP$ zCynoBcp#ZKHQ5f@GBXnCb4vrW4UZjE-N%HYjeZb_%<4Tw^1E0Fch!c;1XU)l|5x#X(f^^UVy*bUoKf!iFRjr?4SI{)Fx>Jwz z#L1%e*rdc=A*mv3KxgBLB#^Uahduobj5n+vnG2BwMN6X+I);l z5v`NrR(DY~oO}iR#;rC4twUX~x{}4RW3ByO<>#cd7nuWF6=`ktO`6{0K}sgKEEt zJU^60naFZsQ18kpzFZoWU89<8?tai*!(XioIYPv`Sgi&*GNVy_KUSl8wJJG`rAp~? zQ}t+ z<=!3b?_}UMiwL~x^*Q63#PRl;==>P+eXaB8oAfsi_mE!(uzaK zqgd1%{UfjV&%6CED;ixYU&?!ii6s4hFt)WyI^ov#w=9^$6}3pPH}!p9;3){VV-D>9 zFarag92$YX5ij?SK9R)sZ~89kspEV8?A$9JEfoAB7N7~`TV7$byvTX65r#zL`p1si z+J=3SUX^ere0sx>8E#P8PurIo7N=F<}P>ZEW77!RoqIO_& z=3#+&Byrned0Otf=?HEkPo_Sh#yGQEcFCkt0v@|7C&;RfNk0_jflonkG0APjesqVS z&2f$lVh{FRUOi(RdA;~aG+5~Jptc}&=V2A?xRzmbsqf3LZktxxV881y`9};(7a+G8 zO40+JXRAZqu1HSvwxGHispBfGgW=a%&`P!dg4eC-G&f)#8aMWotU()h*{`*%Nwspf z@P!>AWa!vCP3`i%ka-m$%njAVFro4H#4M$_)1Vc9Z=h?%IGGS;q^nD0!zfVuGy9g4 zy3Ij@<#!E&Eev{}QDHi~JV3B=i=zZO+1nxVd+ZD;JTE`LbZAg8g^eM${9hRKnCJf< zcKUyj+j#$vj5LMr0J*Ji4dQvyr**H}ln zR|P%9f@i~GSf5Fh(ZET)1baXAvs>~FGDBY_3VUkmn>6C-D)^-K&(Y<$jn?s`jdA9% zrpMP4SPw_mNs6E*ulGR|<9MMpf3G|SSZg7^cZ7qduY`~-_=0P5)|`x?eeCo%3YBYf zUq9SChmnGwf>C3+Hb0LbuKny;tBH&*tAazPWtXC@;(f{%k_)x6dMjb54ccF5%~HZ2 zQMrZm#>N$MzGf{N#+{@*+t8K8YRA~~RI0QYQ*Mei#VUD1rAh@!tX)e-?|d~2_%YMi zT3w}UkSJkhtJne(EHbR6Xv2ciKZ@415O*}8!c4M`m@dEjV!{qlW2eQtgA&;ouBy1o z%3rNZ$Uj+I^f~$Bi7dCqbEBJ(k|q(?Tbll7a=Q+?Gm!jmpnV>x^4^|CvbQeSBuQZHwSv3G+>0?>9PbR(!`2nw5$1rMr9PYP)C}uGwy&ACIYd-2 z6o*TVa_fp433ieGl3y@w`jj>FpaqI6)aH;o;EUZ(FJL9QnyHfEV;mqR7gvD!E~OR5 z>b_aloZ%*_+so?*LK@d`3ed3Q(hrU-Sz2(x+WZUmk9q2Pi8BA543NNA>(0iUx^!b9 z#R9&&zZDE3P&MpD=u{2m&Q(*y)A`R#0h=q6B;H3z)8q`-c&xu5gDV7cg+keC$3%j3 zPEcwjP}(jhAw7_gI*V#31kz^=K$(S3j)DX7^rR4ZEJ0r}c{>X6#V`2yGuM_=iER6n z6X2gMuP#h-dhvCrM^~O@P=3wJWRU-8KUCN6@qtzZ_YB!7IS6IUM0UK> z>(8Ad8n1K#j)yINII$EW2eR=V)HY;A;VsX!0yKY<37JUKAk^2D8Iq@d1TQ=%A6Et% z>goV+_7G07d(73|;fDfs zy!wM-YVioRskIA%ecJNgH;Qo^qn}L9)NI|&mKVlGKbt)Hxdb0J$)zy?j&PRoPnyb4 zyijl0$FJZc-oNH`d&oP2>B8rw)?#M5QR=VRygb73d;$p!zMiDGEgt(P@S#Jtmbr_+ zBCTj$bC^dMeH;T)K5m{#*nz=po-TQ2Zql1C;?3LDKfhXxb?S}u2Kn}F7VQ6*kfnvC zB$)pt9CVD8wBcyeJXN5Vo&BC<-NpQTdDjIlvQm9$hlCP90( zq5;L1?=-%)W>&>>q4GH|(*%ExFX9YSBQ1w^`8Jm`9(>wf9|gKTfef(ykg$BpcB7-G zF#Yrdp`2+CG}q|jp8{rp0p5|FCf8^Y(5L8FbWE*N7HI?0_~l}%wSzm>=xplMryjYx zd4iJ&`5}0aCT=vq19y#9L*6E>G$LuVkg}<46e|p4{XDYi7q`qg`zM{}-nR*>z{>-} z_n?#WCP#dnOZFa>t?Q7IELst`JWGw*@t1t2?8^yE`)3)m`sJz`W(Q!bBgbIU#eSLw z-Fwv-<5sRszqJi%DR+d=gWqTAA>58qE(y5xSmKl}}_lUgP}j8BGlW2gpyr8*6M0LT8M{ z6_&0N2j~akd?L)jJB?2tBmE3qpms%9UuG-d%W{E+e!@(3JC9?g8tk_4??LHscW3~c zPpph+&BaNs$oYxR$9KY>=Vt2}V?#{oo?lZZ|JqxUIZ;aZ3McRGnKz}d70Ir^DZLd0 z93ukcQAI18EqM~QRjqGCeHem50%p-O{OS6#%LEqy_VCnwGq!I6MgBfiRoH{S z@NO21CQt$!(&|l)rW8J=IQQYxS$R+^(vE)~=$Q6G)CXX#yuiMfP(jO;r~m|_z(F@i z>T`L2X1eae^;_>h@{i=tstM%vH)HPoP2#j{6pMEiY5!Q`c& zoH&LpX;Ko;`!}baAnlTE9HVvl-;$oHzM+TI$~EEb+%chjf|5UPrpF8p31Gk;H~+xW+MXOFQx#OD&n6Usi@E5ko3HVd#Z zVaAux&A|U}q5pT{3I1PIY-L0Df7ff3P3Jjr#E;2j5^bfPpj1R;6~DxtFk+5abY+z} zZc;=mS#>uSxF4w_PbKwQ)ADG&FM7ml~rF9sJ!pAsrSfo8KjAh8$F|!g^s_D zWp?L1wt4KbleX2@QklvE&aACHB~aibcqav)*!FBxu2ijdv=gZEDI4Sw(35FjO)TWGgHJZ`GLb~Ki+so^VkuOA~*&- zxvsNT9o}-G&O<(QWQWZ3g`N1Qouv0{r`2m7A6aaSh#PLTuAU8VoLpfb@n#=zsD1$@ zT*@REbN%Dm*{#z+wvoW1+}a_lfax`#GVL2|)eJS}%J@zsv%S&BV#NZwe5e3F?_0Dya81(nsC zPyBSX#MpUU;uoI{Yfv+BK-mqFC#6MoBfC|hi4M8!Y+>i(a5AV-^BFB;S>`Rc_)DRhH^m9@1-^! z=1`k!+UVGri)31nyI*IYCh@>jX@nqA8L%L-fjx2OF#g+(alX${FVvf|y-gd=Gv3w2 zayZ5SsPB6L&&CkfS6usn8}``Uu=;eth#G72RBcGk6{5f{lHUNr6WpnzT-k{2qt#73 zZ)R~g<4cetwKxW3p|PlaAa(x{v9#(kR4?|m^PRS%Tgt{iQQAhucu?+3nBM zi?T}RB9w9lH5h9RSm{4yeLx8YpM2+lqqb&EF8B^tFSA(QKW_WXzhTtc>@dcIzj!pk z-BCD9c6*}0E0Y^F8z@f~g3@zrBZ8;u7`pr^*vFnbm9=NY+asHhF~KoH1>0n0wAo4) z^clY8i3!dc;(XW$g8b1}1Z@!Gs?WUKlV>O*ehy2;n~|z>dLLw`u}=;H=OjeH{sj(-lU zDB`Fw*0425(|`AeZ!mD^$JGv~R)XETtyr~%fq6Z2AEA%3>OQk+l1iN#V(F+iUAe|$ zvW6EeWil|gDV^Y!c%`3nmN+tD88K%US%`t?RoAJ1{t0f~OkseC%0< zS*?U9q7Ct4;>}Gtx08Il!Ke#-(kd%7^T1dlK_Vp+7uHB}JiZ542X##owyrT0v`)zZ zo3p%afMY4yNK(zA{ef7)3aIX#F9G=H!?ein;BF=1zW!z8rdJNa4e<}-`t&$g&?w9S zM`4I^B~JeYr6f*yCAsu0E7yb=>-XGGqG)K_Ycy~6>FH0na{?sqrG=#{sOv{Y_SmP{ zuIQqtjP$+==OsEmw6lg0d$pRW#!bUb?gtk8s@!1DF>bB2rsW52c-84iZwWAnrbGOG zKds_8LLu$cyk*@xBXkX^1(DP~PO4QhLvzW+7^#K$Sc!bU=>1mb5bZSdOsT%6q5~|ZpzriOzSY`50 znx*zKU9eM><%B^h65|ZLgQb~@OR2GXZPn?IYdEl#o;j|%GtFpSrR&T9k9Uii8VZ)a zZ0qHOk86t_>hwmX8(sapyd6)kWX#ihI?X~Uu)JD5Ze_QuOwCeUCLR2H*_0-0sjzsf z)~a3jJEfW5Xa(tO;;FcODP!Y_&}l$zyytM~*+RvAVs%?oir`@fT&C%6l_ONr#3<2+ zTx3??-Rz`mEE(~iths=|b=jkkl~k)d!PR;u&7@EdBs&?6l1Ih*%8L_H7*Q*VI`=9$ zR}QBo=gV_6YTmgcOFaC!u-uB)Gneh91MOT4aWV?#exshGaO41?|Vn zqElvychQJ8`vbW<$xIj?j-S{&0lRG;Nv>^(2^*SIYnQEqHX;uFpmoI~8|otLXfC?$ z0eg4W+O^BsFgnH*TZSE=*L)NlRPX* z_5Gb&Lj}gA-w+fsS)H@PIb3`Y?8A@o@$9$Tqc35e{dL|$h5dpEPM@IYkD4jh6dZ*H zR=NE`{O~Tfbnyf*t{H+}3mv+8Yr%tA0n#u*iIC6 z-^}E-4$9^bz31|r35>Ca_ZTl_&}G2QB7G`3j~3z0W7y{$X%*4{vQaQq9r^;40XVQ$ z`Nv8>$|PkFma+v*Iq}@8+bad!@#!5YnU>HF#?9X>ZL*jG2nWdJE`O>}^PsWlYbZKs zB&0@~rfBSR7ST(*EA2LWg4y=MD{#?g!5)q+i1aXzdZ--*rU{sU*U1{jiBcDF5QETX z9;LiiLaEAs_l%jN8(jzZ--LW^oN+sg>G_AZE4;(*3hP9zn=ZR5;kaW&R$X(TXD|GE zezAa7Zae>suIa7>I~qlHQMj$IPeY09DHS|JdyGMKzlUiXo>Pizv$2A9yPzxG@@kIY;g~*#xt-CK$D&Xm_k+K z(G^Ji;uvR$hy$0kMN&!dm+5cweM9V$zqr2kK6!dQeX<>yhk%>{xVEJCfhT5XY9 z;U0H7xm^;g`k~N&J}&eOoor=E?IVPReU?(I63xVHnvh(6Lxoc5)mjSc$*Wj1Xmp;j zp@7e|Uyc&K!G?|uaVc@Zds6sq?49&@5~i9*wY>MLD9|rXZ*4VQ*VF2DMQoHZ!%y9I z`^FpY3adBxqBO|O?&1xHW5m%OESG{r5M>Md37-X^Tkj(S+z9op3G5yH-;x$KLqILHmSy zUKMUNVFa6BX#if+UHy6_VyU&swqatzR)d}i{=7NBIyS@9i~k(KWF`M-YW$G&Y0E4fMud z`8)9D*{x5peoy%miC$kQXH3@?oKL^THrwcj`0^&zD~9Rk0n~_VAYxeC!Tx6V=dmV{ z2UTRaMR{XA$M6eGKWAGnsmt}S?sp#iCOU)v=$o0ZdQgubibe_{LNb?|C^OM`lyhEZ zr%mC3Tfj6rGLd9&Q=QvGo1kq@AH%VQz0N##sMH~NI7;Kfj6meIv ztE?Y$ZLO%4!J-Fw^fXveUDSFbQ+_75>~V!HXJ(+U5i3)yZfPH#zIex6-vH<*SO!1q z9sK#aU8pt8@a2~hqsuhpFK@smwF<5T#>9FeS}A^hgMc$I`v(eMF{Euap-(o}C-^bT zdC;_oGXrV*p@pAhvxMXp(;vt~z)UF3PYfuu7uxw50*iKH)zk%llLMN9y1qvO!q8~% zD~W;;K$`myTv~}llOU>s))55u9Y}MyHPE}D;Ae0&YMvUJi@=O0v}YZM6Y&09fF3gu zftAoU$&O#*o`myndt+uIvb{?SnPE8|5k-qhrS>2pUVsl)f``zd29?*bW+s^@vi)~e zkO<;dc?c-)8Ms~D3gP-IeF%Gg z-3Q}pW@hU2KSe^y^e+g_Qq@$MQ$+osFDU3IG*wws1T9P?+o2~^wn8eP1>T9|FFY<3 z71<%B0(=S&`HJWGs)?UQB1BJhzWl(QlA{Ku%bIap@phg}sq;B(dmO5+-uwn@Sc@OU z2_Ou~^U56Hs^uXND~^PLrr(JV7;7dr{$4?%)bUhYR^9-ki4Oj|EuVJ5D*#ds=v4o!u5OIw9G z-EUTNT#+VqmqpYmGQeJS8a@c-yyfbF-RLY|Ov1kKpu+;&++oaHXp5R$#Y(hEL~EAw zLPAInpZy3`Gx#NbKC<{*uoFf8H=2)EaE0y(9X!*%;W5X%4(N5&Swv3>ngVPDghh0;v;Df28f`3ztOyeO>LdsP`?4mXaea);c^#6)%6C_1%S zVOF#FcqtIFsVupYw8vPpSAIncC`;MAJXPrcWe|mt zmq_U!(S08N`0WL&PiXNTa!XBLH(FS>!;Inqc2*t0hkgZM3%li_P?Szbh)QBClL`Z` zbE2^ds94G5-@2tw(y?-qiyX^Gv&i6XrUs2WoIMl0eFB%8*lc*lgS2t+-R>?S^j z-$8kY`$rSV37g=>`qc!w{DCdvEL;}}I!vON@nRI*%s z=cX4#Al$+1Y{gQ_e>6SK-tB;A^SP6Y<>R(mqU#%Gw=GC0<3d=V2g@MBlZm;x#E>>r zBub(^&{SkS{c$SGbigC5PLCQM4ERcIiLuns?`Ui6 z$g>Vb*~G;K(Ojam<(kVS%c<)*l!hq`)_w-=Y?NqA&de2OiK+OIqkWQUmmkcE|;t&%Wa}u39YaPKnh1B7LU< zxnfQA{6_WJ+TQ*7vy&jx5lkjc(%GmAX2rm+#=#A=J8Kmf7Jq#m1Ac{3%tI|Aox>tk z1b<_$MFuD~ZDkfi?@GKJ zOWrz8x|!GSLEm6_?|Mf$xpIN9 zWyfws8IM;A<0+-QBwSHtEBa=pZ(_XCmttqY^*GZ*4!D>0&q9Wk5{e&#md9G;xSVHN z+sp4p=BrS;u)(7>6jRD=5lR)Mt5jTs$!KLZAj(5;Y!0s~-l)F?toU!ZQ7kYJY2D4zJh zG-nCBg23!R$i07fj~tH46m!UY_hYTe5k{S}*qel(gjaV%X_4t{t|z6=0f)W?T_imq z@fv>gs0ZM|J$8xA8TYGe?IPrUuFSlm5U)!5_57%7^Zg7?r*rJDmxV?Lcpi6gLc3) z>;_#tVw3uv>aJu>+}bnprtF?6f~6jSJ5?6>QjYaLY0oWj`op~5o(rqIA{AkV6*uK! z*@P8qbMRx|#HU<+&yE~KuMHHp$R%T5SNTSAaLCi<_nE)6c_f4cFk7#BQceA=hgzZW zwSZC)Wu=f76EUlCnEG33zljvhkbo#UGT>SYU0^M>`ZO`CxrYPK~!WEP?S(V?DXeKMTBy${o z^;Np#2DS#1S!wf`1yyI=N-W+-43Ue*ZOA<>Z|fbqW7@|0>SMLV8oC`w>!Nc+Q^o=I z0JL?o7ga+}2E@vh=$;`^QU9XS-UDI&DW2_FYYhqq180B6hXwSk-2L3rxn;76yxpj5*37-{vn&Hw zV$>6#?byZyl#;m;J;)hHhYnyMxK&icH7VCWs#^p@-GNjZsF#ywqpOtSLbYz{fgiJ$ z`0sRdfc=9u&9g_#v{@>`7qtS5@AdPxTyu5*(6yRFyt~f3K~77=2zD7!Xao&1RzB|F zo@W*>Yl~8Wkk3LO9*<*yGP{EAyI;<@g-wf_KYfe4JQk6}!Af(7M|=n7ddG6Yt5pDn z-2xsMyGsZt!|P=>;U%q=Xb$2PR}_Sgag1~G#ul#MfbhV=K?wre4tktXc^*8lB)71! zx5&yPQVhM3V2&mnP(#)OytPo|u@ZKQvM}*=De%g0ihHFTRRhlZkWBjnyDXe&2wIXH z(E^9olzE;D7@%+rRq&4`i4!3gkpw1n9#Wm}Ky5xboY%|`&bUK(ogE7pWwA30sbD?} zW$;) zo0|NUbdnM^{~?{B&!+SG!bn zlCZ(A^Hh$;=2cUCc@{nz`gyA6-ysx@y;EYyP6EUWW5D{e`Dd2_#%%}{Viwbx&A8Jz zojFTV^fhMP*;0PC%<^)xVQO%1JS-k6r8Y}etr55F0T^$&F)$hhj7)U4JE*9zAfIOD zaG|8-@Tlfwn4rYosPYUN&}MTMapx!&jrk;6ofJz~1qDkza&|2oUtRto-NU+APMsYZ z=nH*HDmOW^N(%Y`naL=UlxQ&+Y9IYUGkQ7%$9cg1cem&hN%T1wcFQ30Mp)+r3>Y9q zlz_PYlcl?Q-gKYSRMee@Im_Qz2~%;p&I=<^q9~bs#u&24N^yC}y#-%s=^rR{)*?Ru z^WQXbg(E;`l`q$Il6FGu~WsT;*fgCiiqFQlxQP8ySg9IR0KZsGb(nY@+?KK?@%(HOmbCBd*OF@~Dc69yZw389(0t}xFyswa2&)GCqwT$B zZ&?sa4@E6Rvd-Lzqq$|u>0!98W&ooagH+|HBbh-}DqaNL6s5 zcryeA=7(QZf?O^?iV6vD_L;WfTQ~wKhc962ak5zI+%vp^SJclEY^pFsoxEAk#`e-y z5q^z78co4Hu8}G}qt5>hBt$Eb$HW)YbRsrz&6gzCR!x@1xBJlSP9Vj{llpYWv+jy@ zH0HyHRZfG#Ofbk$!C5DF&vAXV#EoWdVX0)K$ch0Wvpuc`SqZ&xUKECtgQ-icQ}nmY zgC6^7yUnhJZl>xav9<9jgHck-C4VITIw}9D=%xDIro_J8Z&09jUj*yi9Kw@?!|pQ! zx8kZZ$&-SOevAz3&wO@EPMVh=&AntRC$(Mf3oRQbyCyn`QI1CS?+n~tiFd9Mp(h=gA#71F!-NG{B z88BM;2Ai5{NqgGW>b#MZVi4Cq;~H`LqpMLWP9Tetq+xnfrzs9;8>B{C=;agtTy-0J z=ofkd`u45z>!c~lfPkWYgM@_q_TQ)MYpL~rxuE~68~n>t_OFvwsCKTRYKr>F_v+@J zQjYnXl8_ed;CEPgi41YRfkhh;DW&O?+j7U2YqIW22c{Owp8^sV-+gV^^U68;NarVKa8;;!IGx-a;BnVDcFZ=aS!U<66n!BzzWQ@@$G-Y za(3C@h5{YWEHwqMqz&X#q4Mozby^Mpmdmx0<$#c*v&UX$dKD(lSSZHSCSC4F^lh1$ z39y5%NC+oegWtP(pB&M%;@1O942aB)XjEU#V$L;psmv_~W0$}$h39|m>=q$@(eN3C zmfw+pX+OqKkb0(Y0u$*a-THIRek&2*xBe?gbRc6?&a8AFkIR0v(GAZ1mN<`i;;4O> zXj5YE_N93+c{G}d6+be~yadToS{fxSbD!SmJ|=mJ!zm9QBSi?gewW8!IJ)!)Wuo?^ z)gddI;T>fC=O=YZiFgz%OMX7itJ-{?o){f_$&!B-_0CciF`22QjcT4umD(sfKuio) zTP@N^RxD$!F;92EnK_>>20gADJ58PzU^-;#BPfw%pbwfrGwPmza^ld%OTf=>*UT{R9Wr|L({u)(U1?0Ob+ePkon<8;WU8 zu>WpB(S;B?6A1JH?g%V##o7RvugVoCVUIVi@Bq*F7Evx9^qhF>hEnIOgfWj~L2fD# zo1h8raCo4F)@Tep*&fRLH5_!FLIY^qT4n`=&xtzq-{=jnNL@Zx7?IxBpT<`nj*#ai_ld z)}O3dj@s1k!<5G<1U{&FN9&(sAY6^ih_dPk-^LgW!Z}6N`V&`=!WYC|*$v7b&G6Eo z^rFYF1+vE!B0!gRjXk^dGBB&|sQdR^I0$0l%WDZ}dmF5#5-ZJ~PXav$`lr1y3k@sz zUc?sW9906>AMrj8rH#cKl=i9?bmHY+s|wA26uZRM{9a|>oQo>LFob110!@0H3cFIe z){22TbXxw&E&9pKSD?f5ueqEA92eMJ@~xYG!<3W$c|zxEVk`$fBv_Tf_fg+E%nIeQ zufJ35rZgJm`YB{pDmo$s%9=1}f}I}4X;-yuHf3~PyvHDs9+{O+MM6~BArOD|0Y`T4 zN8{0Ujl5>FZ3Isde;2AbAUD1%C{&+O+Cxr+9F!%`P7?i_iKp;NhpZNQ#uS|K1MA6C z;=?=ikSn_4dv^VOvdjT@o94@96M-$ZHwz-yOgN7)4);3E0Ong_vpIOP_|tBDm>EkK zZaR*rj=lECLt7Xn0>H>^R7r6`2;KU?T(>XfZQ%B}Pb8OAn;utu4&O9O*LTCx#sHMa z*iEQnfsJiy2rocp!^S}&-^FAr++s~7e#_fZ7DbcxniwNou<4E_g zMS^4i9;^DuxGDTiA*Az_)zS3SyU@YbjwW1ollU+Bte?`JEu0~<63C}5;FXKT$ft;J zIR9v&Nv7iE+rRij59aTx!(a9RQg$Y$4yIo}b}oO}2Pm(8u?Hd_&X6Ncv8|*e)#9v^ zB|RNFr9EM;7%Ew~)-M@-YJ6PtgjVS@N;jov3Xc*{;cb6}EdZi9hq|hCa5(MM;YB~m7PCwe1UBlwj zl0VlXhYdI`y*)*TBa~hM6#|sIeuTHD(r&Nk-jdO5!56Wmym{dWPl3Sao!|IWY5lel?(@(<|;jfLc(71V|j4}Cw zCSSGJ6M->rha*1+=bGC1KHA@0sEVp)RH546(LL@y@nH7QO6S}Iv+Gv*6Y<;h+qU*0 zQQ5x#I+HgKMB~SU!A1BCpiZ0`EwCq%;2E;Oq4E=Ke1Xf?dJUh40-zpP9vV*bi(pUv zTJHx23`nuxG=o|w)Iv|_?=5GFV`5usbP+c2h8S+mC9?LZZvCNR_Ler=WtQgEFUUFY z5}TtZtG6{`(YZ}`10>R?85gkpaJ;m*;Knh%NaV?Jpt+>3ItIRNj>b_{-jMS;AQ){Q zHj#9_f#D;ijxmJx;Rig+TOW{X{wnIW)$1;JNRNKb$pq>Y07HekazQHR{+zV`$KfmP zc$C5TYC=)|V}|tKJAib5g(h-_4&sJi9*&8ahq0-Hi>1BYznCOSNlu|x5YcxmRI*b2 zSzRH!z{=*W*{~f^DpCvqk(a@g&RRO9UhG+0kM(*B;YtF_yhjv;vpHk@tUZgv-tFP` z^c|!d$_>t>wotA|5PSevnkx}Yo!*2pK_*0N-FHu6EpD`>vn}1rC{q%R{S05Es1!V) z$H|n^jsnmb*4j>hsO*q56o?;F5dEWDmN}6r@Z8I4Z&*||;d-lQMsLyX)-hsC5Y~?j z6LV%%W*;juI$bo|LQ1!-RZ?Jq6$MRIt|HgW2!{vu^%K>cl0J@1O`p^jX=sh&kMepp z2gcR3JGT_6NDep6B8C!QReQEYf`U;#{`(hWfeAeq1!xSV(0F5m50<0F$r9EpocYt2>A7q(H;n-x zaJuL?%y#xW^yEPJe7 z(a)V6H3?6rBYZhBurOP|2guE&Qx>rLuU{u7MVvIUTOQ7(QC2H4FZhluv{Eo*RWg>O zThc5hNm~x=!~*)o5sr%N2#}YM{USkpeb4)Vv+-%<4CEZw=fTOH09xBY+*XJ~1Wn3i zOcm%Z{B5!^d_@>w5A^3+UFlQSmWv89 zNgzG8vj_0C#D;fetxQVO)X2creKP5m0wRies=q;;qI^2VN3X zg`g@dvvN18s7_H!4I!u0YC{>!6~ry4b(KVIxfz=NY}*gaC3)$~7HMPADaQMvDscD- zaalHkLKF{BHrX8LEUdVgmTjR2)#6NPVidVA#K-K%*?<=i6CgEZzPf z7dE)}2|xktYK`jAHy0+JF11QQZ3>=ulwhqd8+L0j6fvE7yGX_?*s~e91ZlZ z`OF>J>MCWL12#Rq3r6LC&B)~qDMpCl55M$~=!PLEyR%&nLZ*UA2Vt|W$$ zC$~Vx_q4(#=US-$DJCvuDmY;YIU`Yt2aM#gbqG{ERhnbIrU{tT>PwI>kJ;m{%{ap6 z<_p4btM~Z05ue$y1MX zmMK^*ZW=XFvfLaR4v8sv&>Q}vPLw3}7e0jmge6B%C8y9vcK;Y>uwN#*UHlPNW*_7O z_YM97{M5E*_p+l)@3Ny0+hjC}Nef0z3@7fQ?>vwD5b@*8)3!PT-rXV= zM>&ZgIP0y%f5^>2PBN2x7q-aTw?^G_Wu435!vM9^kgmgDPlQ!M0|neS zTcngsG|vRc0L~#jfH#n{bs#+h3GI>h=pdXBTxrru1i^JBH}D3LBuK*aa9vx8Bz0XA zS|Wp+uP$>sblnF1fwE?ST;-ID8#SjFMP{QneO?*egI`0cZ1`~Pummq zhc@E$lv-*Qy&2p+=^RkILbx7KMmv$db;{V!#Fu4G|>J$T9N?5diCYXWTS6Vtk;GX)uuIBJL9M+KXxJ% z!1a9uO@CqkvS!8n;r}Vd=U!9^9fiO;)mnkk7B0KLj!mN_>}?4{Q#4 zjCP_a^a6U!(8mP}$xJ!yX^4YtvJ{vLfq@yGpe0?0`8{>74J&&a_CC(kRZWdKIa!rB z-7j>AB;67WQ~Izzs7ebfP%sKisOR~YU|1}fklbPgVxTs>J1ruP%+N?_d@OIe6rGc? zo~~?sA$NRq=?K`L>7Z=3)=IJo69>5|J@eS!*2$>a0;}}QNRhbj+=UkCUG|mz_A~)B zT3RhdVI~R=Ot+e<(%oWn2g$^h`~gSKS{l7;$<+oEv9w4@T<&27wLHd zrOLd7(=>Gsm}sVJH%WEkc?Vo&#&f%!$B30dv4T@+cH3S79 z4>Df#1O-XSN;T8c8U~SmjohJ-BE1+V7(Kct7*)@0!_CN6hb*iRS}Lb!yiwND=V4W3 zwdtEFtCO=R@D$-|-AVquR@QHm{fSiWaVyJ6)M!dV4lJH6SN*9GHB?u63aty5bmClt zr1tX#o)MaLPCqZ+4@;~b2>XY68Bl}unCqRAF{kVuq$aXM99YS%ecOe17nBVxk%{ z#x?Q>TyvA+4W?T3-m#7dleRnRrOP5sA~UZr3>1Heh4~}4l_b3}V(cWHq|N(rH31hH zPW1O{lteDAXKwAOCZ?ZG`SztHct#98>ce$twy2fAd=&E5?F8cN1^nmkPU=4)7!I%TJbj$;84lfdDKbf1^T!U>IpxwXa#reEXp61lE0R8e7L5+vGe z0V0xguyA1_x{6AGoHkXiX+maE#E9L9T@AAyms<#yK-E`t(ctxN2o8gbxK^T4%T2G$ zkJy(?IY|IvWrxM2_lEE0p=Z}5*ZccajvtT%C|OL3HDZ?JNX`i1!&bw$!uq!~Wk(`N zG^~~u%>L6<^*GxBSw!1ZH71OHoMu!}$lKYo-{Ca2kh^8`?NoVH(mCbS8_Ko0-7IW; z<$^M4MJ16*F01H`0mCiVzh;*2#(QPW%vd`d+}wyWT6wDkrKpye%+eYG8IzfMWzb;W z_{;K9dRoIexLt%36obWe_~bKHgsJ89^x@JA&0@xET?GlH1qSvnt$r#B=^;rKr)PUX zO320y6O1G@8fDP(1-I&4mYhZdn)I~f`{@N!VjYywuB(>owBPqZn>0O26JZ^Sjk&yzZB!sc zOnu4fXvfo|CAF%o5~119?dCFoAN7}=#IWv|=SFGiS9-Uf*m>>gJ{Fjnh62%@C-_Y(pV|qO*kkeMqybS8t-+iCs$utyXd%>+6e?LG!2>9~Ck7ZkO zh82XQIH*c5vhv3GV&@+jqBVJXkRm!h0u;pL`^JW8md+<3)>YC5MVSS$%vB$lwW?O+ zSt;@d!l&_+esP3044TIRbQ+-~ah6+1a9?z%V` zDz0Dt;&Zr~>9~RuC+g}8m7{%ps<)nZj@QH5$QD-k{FH?hN5n{l%J$DT!aTV1MEa?e zVw)Pa&ZWHqm({z;+^_Tp!;KQ?XI5N`gOR&*tzM?RF(j%PgO4kLR9HdKW;b z69YjUdX=t6m1S27d#22&Ay>i0DAw*H#@Z#s(^YLpn9@b@0d0HYQ_&!bVPS_a9^Gb} zo8x0vlD-*IH!gA_w^cG`H&J&IDTub@@>s)!nEXQACP2P(!S`BJ!Ty+^_w;HI<#8** z*&E^G38dt<V(Uf&~;k%oXl@I?X-$`cU`71FpJfQ{ymYHe$SGASqh$hIIfn zai|eJp*J)JyF09!h!Y!b?HQN{Ki8JOqSAP%dgkKKjqS%8UiihI*Cj60qZ_d|1jO_h_YypR*Lrh-D;oFD7r@w~ zE=g@4y<^&OS|Y8eL!i_$>|_s>sv|r{Tn~@z>b9ZJqMQeI<^1CoCis3A+fwjuBJdke z0MW@ibCOp^A*w4xPbhG8g3t{)V*tv$=LmC90_H(eRIkT~cY3_dg5|~D4>JFbYl1Cv ztWI0d3wN3~zd2A)Y&^(VgV@au4>0o+-^CW`5_w`UWb37S#O+f5O+?Hmq&760dhWBv zTM>(=u*#3rt(<1knRM^K0u%tQ3V(5=XQc9&fD`8;A-_lzY&F|8Vjdgs?WNF1BHLR9 zRn!8wh;>$;XRK%SA4iGi1hVO!(=bM=O>A!V8WFpC{n<;J7vJ+8YqnSJ4{$4($u__0 z9Ze4E4ao5-n4YeGG7)EO;wIY{6KzBPUAxTqS4^ZVB>q?aS(LJ_!u;3lu5Q&XMGH&_ zRf%6Uaed!d3`xM4Slneq92JT|G~Ukrr_pk}Ez{FZ_0_WePXzLSUkD%Hek5Lx*H_U9 z?}%Kkam{&8@tJ?^pxAE$$!=%E;Q;WC1i$ix$daN;ZFGX6(8$#&wVUk>M|yl!=NACMHYQLljrOEa{V9N~C{r*&|IDg@n+>bllo12)2YMcF+u#hiGEl-D1Be zaaim@i-b)4&@U29dEj!uIo%IlDY~O{ygPa!3HSEXS2oQvO%~jA)R1^2rrIPWFVnV> zZmO!xl~N~iMC$YT&JHS17-&b9HdU=%x^IPi*=y+wOiMf#SzK6+SXk?8B5e#Ye9`wL z%NmHUYsomt#BaK3UQxLP8&@Yq=9MO79xkl|oJ&~|x&Q=$jev!2^74r@>T8rq3_jG24njx&BlLy0ps zENfQ6TkI^qLY8KUm{ry;jHR%lb+G z4{PqfW4-^_~JhlO)ay3YO{@8kL@zeh{&Io;lYanP*w1V8u_{*qwZl~gI#;m9U7#8ZBak+D_ zHsMVtrSyGE5R)t@c~q{@x_*0Y#V0#a&x}ij!T$GJhEY{wRapij-!OwzDy2%;_(>h# z#b$6DG0V=3JZ9_9VbiqmKNq=Z8n}z7ue*Ob3Ka-hw+3&UVR;AXLZ4pPP~MDJju^K_ zk3Q5qyx%ycKmWN$6CX&KF!7~ok}s?5|Fy~f+rs?I>FWP{PU42fF82S=+&<~MwF{~_ zmLEA!#xiW5tqAb;iX!!h-7s)rB~-95WvKx&;~H#SZ%tZIUdB2n&-Ot>qpDc>cWs*a z1?lpV25c)S3yp3onk2ng_4mADe1;*F(_;j_p}-pn-%fjT4jE>dk(l?Y%h&eH$Bj<= zhqoU&0w4xRe&xng4=ILR@L>nW`OnQE3P+GT3E2FFB7McKs@ry1JUKIt2p4}G6o-7D zD!xBwhD@ENhKb}q3q$J9I|_87{vW>HIl7lH*b&YeT~&JzrVDf64yp@z5QfxSc_;|rBEup?o>*h!uP{<~ zJv<}Eg*d1T5p$g!;1qePj2XX`Ve-;Z^p@^tWGFnK7@bZKx`t2YhuK@d#l>O9T~>^_ zv--%78R4$p`NGMcw?pyI-!;c+-w78!#0z20I|z+2zcs>xhO_Wg7u0Yc57)X)T`3jV zs4|rD+t$iwxB<3h+)BOFM-SDwY74eDFyx=guX)vs{H3Y<)SGe}P*ZlS$Zg#_f&^r* z&A>0JR4~-ZTh}D3Yx~^Gk8N1op*tBgr-#j!8b`LYRkn565;0nbm3tUBTV6VRb+;K8 z#;#Oq6#j;(@VnZu9okK<_o)OXwr-smw%FIKYjL|JRD!J^d9O&_)Vy%lA-U5mwE!fb z(f_!x={6ZisdUM#swgb3ml(LpPT4ufb0(>cYjUAa2N=6iXXxR|1kN^T_}1l0J=nnI zZIv94vbD6u$fo5UR8l_xR%)h*qqqIY3k?QS?|5qO9D(Hl^}E}9i*Y?$I*Nx~jOe9g zroM|NrQ13BX`U5O%0-=VXN! z7|ePXoCxQ0@S-c*InS_8o$GLuZEpUpEtFl#V;&pSx%lSw?K7T6H>UaO6=c;(6)1sI_!YLusID`*y#rhM_^JMOK55U~WA&HQv}3Ken7e zPRYY}RlUv2DJBa;h%&@RgY1wqMBdnS%?=-B^>5=nat>OF)rEmjLGplEOpfUM#R?)S z9Aj)fhCAlJId0p>oxZV+n4rori%u0cY`J2{x3cDt8+kWRz+Lr>kXLA6zipZVdDrBG zF{EfD{2O~>`CML@P;tSRqL$eTkE0><2I*OHnD3bUEcbZy7#+wlMIY-K12uW0&1(bI z@1uf7dNtfN?3Df8+m1DKi+vSiDhX@<;=N^A=$+P{O!e-Ve4`!HyIJv1g7>Cq+bG>U zuU-WOdHD--RDSdE6aT8y$7+vY*Dyw3CReueb+6)ISG6y@6xCQR&+!_YEd3}ko`#W$wj zMYBw{Y8D8$Ipl+*%(RcDg4Xdh{8=z~3%^NY)tWio>-BcD;T1XqP~lP9V8vta8F6z* z8~DBZ%&NY_^u73mKc$=6MN;Lw(lN=(cv%HTg961@roj^}6giewanw!W9rDdXD&3LQ ziZDOxy!-f4JnOpZ#|riEVNI^zrN(f#%uWWJY&qmcKk6K)eEBJKkI+L}9I6?Y?9}?I z1Ya%4wUUK5&feS4(R)o|G^E*|FMD zg@}%AoqfWO2i5VsQFlfYXBF*5nMhcHC@`4~qG7v|Wwr~jiY9&) z?4{)bjSBaxn1Ce+6$`SJJyHeS+W433L$q=t-9GqDAm2YJcYb=V2*8TOHsKQ++hH8> zS_K`Z1?&k~sp>$}5y4pf5d&iou4y=|+?qtvn< zl+7lov_DR=881!{D4~61EsJT%@kYulxcDOPiYy{S%0~u;I5Y6zrzKT;Ug*VzEv|AhW-1{{e-B6_@suP*}n#%iTv9C2uoIjU=sfWgfFJen4ASPou zoqoqfR{%kNN92bfJS*xC+?V{N{l@$~sdx30D~9n|^zZh^_!;hN&v#w4lQH*>X_ucb zm1mmDD+0|Mm3!Fq2#cRh<`{2#G|U+s@_>(jbo9Y3@Aw2^@_B#Alst0wneLW3Kc)Oq zo%DyZm#)O1xF$O836%Cwh7e>QIw11rHduVNcQ!4LS#QHs;x^&XnXK=jUOiwEp*s~m zVv3F*X`mS5k60OU#tn(q)%mwHr+re!MHFB|Kj|Go8pJdi5GN;yho_V$=qnDvxPKff ztih6yOOO7DGvXrx{hfIJNN&(PJ(0mu&tr(jTmoM@D!%)8K$5tr^@- zjrva~^O! zMy{~1hS7vRrTCykn* z>*U8`Jr@+M)ABjPyNPZxYd-it!E`I|NdubnDG*bg(y~dA(gdxA2XHENdC+$+Y}~^8 zGmsW_qMJ|t|42crtsr#Y|4sG_qW$lw)qfpaqx|nnDrHGK2Uizm7bjCg+yCqgE9u%V z8esC$)1r2Ar9|d$qMqt#pF~97kJj5blOb*)Gm@Cy7o`-j&LeA0BiDbi?_@|!ci%z2 z6~~E)p>gN%0JC{dLKDZx8 z0Lv*OK(I2z&M6tPt0(iNjj^WhslY*S^W~RFO0)8%NFW%M%m{NNA;cc`Kov9m5HZ-) z!yLARIs0@>pB^#81P?zHB**M|;PO?Inpu1Ou(d~>^ilh>VD<(K&RnAm!Z)dFE;3JQ5b1uaR+BZSCH0$A|aTqz@I6l)a>3~2?{s+ z*$kLEz8=jNK64wYEFSzB*pp8Zl$=yUaxYjVY+vNuFf|jOW_}WV#R<{QAUsqfpYN>* zB(jC#y5_q!9^^Tk2cB(mvg8VbxeACPfkTK#(>clp`;kD>{D}HQ!|s!Db-hOQf=6(9 zWnBV%Ph?BHddjuQ@Cqas&^N>hi@N$lGnH2r$aobNO|=(=s5qo1j>ZwyF)ljhs^;oe zOD%55EGkc?B%6{-MtK-Z!Ih6&y-^dFXKh67WWi6L{e}Ye(su`r1X$SG?7{Ev&hF`> z_s;g$VSau-um>bHmEKrEP(~CLY*oZzjt1#)0_spgl%bDC@FS)oLzNJkma$MF7KRU| zx+4;bQG1CIvN9FjVH75xl7s5N7_a^t=g7T2-)_lUK9^B(NMFR`X9tyZ79NSuA865l95U40J<+vqB z;F1h`(Oy}Yw#J`^5P3A8vVAr=s`lc2I=)p01bvA$%|iUe7k|5dDhkkk_Omi5z;Lhk zrD2d7YImt&;T)8P;*#zjADxL#Y=cp8u>XYr($hXfARx-UguC6B+W<0>L4&?DWD&Z# zQrc{!tZ}L#NnmiD?5%aEtd%eaUMDj#cj)oq9$4_*2WSO&k~9MtF=Og>!Y+_AgT+g@tpCYylfNa*bCXw2Ya*P;hkt zc*cI#>ps4$kJqGr%Rb8YWq~3mHw@;I5<~KYyeCD_pBz!ESPr;)A`7#rY6^om9?4Av z_WQP0zaV#&#-=zI8xZ>5kmVI!&!KoG9K`W=lxuege%BYZHVrLhi9cUN^K(BYysP7* z3163U@4=cp6~mh^ga|ehj@lf;y2YJBg(SKx{bE)@xuE0*ivJZwD3oIwXXwH(!FAzU z6y1xUbW=(q^b@Y(|9iWyy?UQ#;pXSW+k>FZb;|Bw%op`YnyH zlpogA_IH4O#VSwe7{!49V@oR^;#N3?oZZDSD2VxFsWkYVUNP#PgZ`NEbu8c+TErYTG)V zTg%=a`7?@)!)bVC!w?6Ur1-tE6gdXnLaPXj;`_qz($*EU&q8jctCL!Ehp2oG+Owx8 zozJ^5R9b$lTN>%&U+#C|J)Tz_N|MX z@3@s*3%@9!#w}8vtCRH`9<2ut+6iTS4><3n+<45oTtr;cDVTG(1_r_@6Pu*|eL8Wi z-C=yb@y!N_>rIkjJmfvP>zkzq{CzJ0g*2#JVUQM~fIhb=ZlV65kQ&Gyno~?tUy{Or z#|y6sqvbi}-b$z%!Ym-$e(=kyzW?~`Q+?u1%lux+fE-M%W#dEcl+2MSe!_3|H^Y<^f0Z=h5M_@IX*1Y+kkUul8 zc9!)b?D*y-ncZI5lbxh9ci;e67;-zY0oeD4);ij_e9BkWb?A*)yOw72v88t}@9`gM zziYpaD~N$+D!db7e@8|KVPHig1=maIeWqNb`kT;V5Z?~sSE^%k@McKAP}mK!?#@q_ zp4Pp(84eg#vm_M1^~zZ;>%5ra5_CH6zyM#4(H!v@_He)rKLqUvbuS64Rfm$FPJ!hz zLihaRCCJH8ETD_(i!iXOdouN8Y;?>twfBzAWrB{4fAkd>#eCQ$hxs5t$bZt63f9>Z zUXEVV9Ih8BFU{i_h_BcGwz!$tw<& zzA*gLO3*?05LHNV>$c=i>1+uX+>ZMms%_K)GmGHix*CO9G&drMraMlfz062L8LKA< zDVul9(i6aD#wlk&Q@|5hj6xn{MCEg~!Z&sqVot>n=U&JWM(cMMcu&GgtHD)ZN#T-Q z@&s(weGaYpgo7L~I%=N^D8n+4jA+1O@&=39`)P(`rCn#yMk=LG`29J|(;69XY<`}j zTSA2KW56T^?yfX=mYSnFXfw<<7$S$f{-6n}3R}=e4A|JOwa)^j4@fMNEdmQ{mY0A} zC9RFO_Fyw(0v{zyouU_0C5_)_)S|{JaC3I^4aC@smjmFXbEBdeT{2r#E)Ugsr~siOy!TIq!2hoX)eEIC?yv(|kl! zC%s%VMQ#f`B}+0JM&;pnX9P$y2qWYF3W_!9?;sY%k!;W6w0U06U64Czrh&~MPuQkze%}u=|9rJkLX!GO3&gW zPS67R^&#v74%4JZFJTu1g zJ8NTcBWkhA+Dx6XF`m-fj3r3|f_MUaz#*G5e+c1(mV)+mMrtm3pUco_uF;Cj@^`cD z0wa{;XES#v&#JNl` z%p^`xt!QCM2M?CD4HdF)Vm<4cjT}}_fMh0?Ez7=`)brPyKYAaM)u#>Af($8BbT2O<$#kllcJ8&UA}f{_^! z7Nkz3Uu;t=53r3z+E}w^m1yMZzqGqkCKgbm$dghBz`B3u<4`On_4px0BdW}4U*ysLSz9;fRje{2BO?)y&j%zG<$~W z??iw2L{q&$3k5t)+3^A#OVU}PxoO5T-OinY-N>>yEjX|EG|VS&Eu->RxDQZYgL&2v zP1U0N=o8dbtS9jWnxYX1UkL&%m#puQ$K;7vtOzAb9(b0*9j8nPG;d)jdy=dth#u+SeT8E8L=E-i7BO@8{=d)B(_tmKd~9cPPZ*6UeFrD! zQfmGP)0}_BeL~awhwgHz-btCY($>{J2nbI0Z);F`HQ=-S`Noh!4u+wUM^Rz=z5{7#Y-3ikA$;ZZ zF)w&3}L8wEB*$wnRM zy=?Q>>tdEkX)EWccDXG*`&YS;O^NH=+c2I@?kwFO?C9lUM&_hU{sM!ibRA1ArmXb= zzf8%~U1fE>ZlX)0YTJ?8@Kn+$Dy5KTz7RXuGNPkFS8in+-9Z}}d4nt!hsMy*V~ms6 z6umEp*COh=^}o?y+4-=c!V?LR+)|P>@cThCmtUi=n)RU`q9V9B#)a0(x&jt7Is1># zc8g|omM~!`7;h<#_^)lWsG3$$>7!{3$*c<*9*i~VlA!vj8=5`8vExQj8Vx`}h*!rP zrqs|{46LN{u^Ck9CXpNKb{PI6sIrP zr}#1}q?jz^$&xjt*z2W=qRj%`Sq;vI!B^)!4)V4nScTiHEE**&Dk8>do8sOil93k8966U-0~?_oifOzQ)Lw<4p=F(<0FjawV_mx}{<(snQ}* zP zJv+=TXR|Rk?0U0WwiV-K-F@*6d8YPw{nd0jzJ1;&QkZUGo9o{y&~Hz-Ha`3h3w9K+ zIC!U;#YP79fI@iTg{I&&2Vs48RZS_q{ z3JCQsF%9fJUPBx{&XFE!lK^wPxwS z7((F{3qDtuFM=-qc+*r?wE;$KUd^#39f{{Y1TM490UDn9D%4)`b@TTRXwKvOx&ZcC z=5j30s1V&$6L;+WT2;0*E@6{$$&DM(Oc)|D33?&1aCi9lUHh|nWkqs#&=^fkSLflh z`Cxtg#{0<6A9{(!!D|*b{X_Juv~{@w`$9vZf!b9==`p?LQu_`(oN+Raz~>rm6fRfZ z{n_SUU-u5Xg@0;Marv!5bF&Ta zVysikN>Z9*l76Y{O0H1J4)*Dpj`k&({=jI)Z7MX_wFN%m*tg8y;9e0f=c*=!%C@_J zJ|pFFTQ{L4tGskN(`@5PvyUy#+*D@kCc%{^Qf?>ST*cV6j=$6MJh-&kvZJN1ZNJ2# zo^jF2(K=&}={jKY8Xc-1Qr-d0H71XmL$ELwT$fPuf)pf^dE{u3r@G9OwBd0xO$&8N z$rgj78oC=nEZeHHA7V?9rgCWJ@9KIaKmb`PL2{D60{_!U(98eA$4!~YWf6T+=C;g| zmD&tz9Qvn zn!{{9{ZGvu)on@L3ox%<@Uw^+BfBQ6F0aPpIVnda+AL@WdoVMh7DqXDPl%^37olgX zY_EP>f>jAAyde~Sz{MZ2dWC4Z@aVw@ugvci39&Tg!iiUS{{)R6Q(RFRR~Y08*D{4u z!RHsuek1z<@r54$sok8mQ}%hzVO!vC!JJ!A>w+vl*X3cgQ(S(3>>IFCj&V2g&gKhr zPU&OtllUF@67$xCo@<2TJFWR-jxXT9FZcw7P%7_<`V|XvAFCzfe_DOUoEJ7X&GZp8 zbq=d9Zm#*)(HM()H{!N;Q)8dC=3)EoVRQUHTp#1_uG?~5`T8||F!TMyIl|))s&8d| zUVEl|-$8H2{7u>O_x+NlK}%@xDUO}JswfjrJO#l z9*yXbinojD4L%-odjxie)u-Mb1pH;tC$~SoJRW<4@Z?{e4DXQRn|OXG-y-p!rH#rJ zo+RzopggH?LZeqCb5_cnw4IdEtD4?7l>(<%N56wMWvo|8@=10=@fYsMwO6}2&`$Y$ z%bo=FsRl&$mGTT$r+{{AaSppv)ZbwrWA2uA&+aP575gK6g?G!nhukXm?mbsczgAK0 zmUF#(TjB54!=K((6MGbEg)~C_E#QjuFOb`py};e6f#}eU4YE57U)Fv@dUo?u=}B&@ zvVLQH#`n`fCI1VnD@dF;!~Xk{O6;$J=we*vYfkxL-HT?#@Gv)@sl2>$)Qoi;> zea`))tKfVl@6whq8SMy9n}5uGMyW;alSUv`NZmb`_F4?+hE#!nxV22_ZwQcSeL8i#FC)R8!RzalzaN&tI6ret% zZy~-ey$aS2_%;Tz1t~Q~K@O*fb3yI$BMgFSrUafBack?^E)SiizhZv@g%+zKIr~>j zkaO8?Rzn`?c+C#~o0%sRoInBUhpZs&8ixlE1mev7otR*YpBQy~lrcBa)@<|83ij{bUb28tVw<3wWYK%PNJyKys8oThRyv z3J`-IFD4(_E!E<3Z`3Hh%i#(f{B{(`c~^+gBu`1;LQcvt1Um`-OPJFZhyTDIRG_mBf} zD+h-&i}P;GyPcuy>+9HwNvh!W!wWQZaY^pj#Ok6 zMyFB$eho(sJZ9-vXI|qxde6LaBZ+>g=T*;hjz(nvKWQlMRaD^?W+w=}HD~O?175mn z){9vy@y4h3rVzFt^RQ2@^{`N9HYo~bnw-j3#Q{JpC#sAMqs{lJ5N4WEXYuy@G%R(g zm}k*K&kf@%nky%{(DHpyhL=vZFVf1nX~vVy8Q$5b1hZs0j8t> zkOr0Gl-F`4I9yUP$o&GtKv3!N&UE z@f)c`_7x(Oz zD-y5enz~X)`<#9wWB3ISkj~afg;*V&Oy@A)dd@LtdV2eNf-4LdK|sl1N*F1HSF)Hb zW{{Q)YGcuChICj7x6oik*{${VHa=P5wTL-slrEgjqUZOT-aTDByC zjWL81?_^1XP~&Hq6t$>ONi&>$x9UEr44eMBJonujI_+&e`7bC%`jSs~bYKSk(88Wg z^dn}ynCCN;il5jOZEidu+ z(nU@!ox!}R2`duZ>`ToPUA$0;a?HmlBX;Zoe~_hHgzrC=5AxS@$RV%yzxl(Ne<%FE zSik>zx`hAN)BR88PaVcb`55iTpItJ!tZlIjyoQJ7m)2sE5O}x(mkkgldIe8Zf3sfF z=8I6)@DVyR7eR8RGySPC&PDS@vz;>vnWUn^C8`hq$tP#|Y~;{H*=(EJsZWROKNd~7 z@igx-_c3?Xz1O*y=jj;F9XNwZgC=`d+Zfkn@w)>421u5+- zI9<)o@i2b+9VJ-X(-g;e6YFp0fUVw@KopiGnK#yz%b^>>je~JIMweqbM))Be!i`(; zTy$f5xajxbo*u-jr(y)J-PN-ZNGsh>37Xd$ z$hpQpk9OVtR~Vl6q@#LfS7_|tCnG#NA5`D7Ys|2E#&?}K_PlI}g_U7IqgEocyWgkOSv4uXXdCADl158|s|A7Ci>cGtxVTUfouZlB z{5*?^ZR%n*Tzr)s1d_fvN=eQcicG9L4!LZD)oh2WaEk8boHH}$TjDg2mNqohi}7ul zH!X?xr`Sg(EbW_{j3uoZR*=dq5Mb7ej_+u7bIXt_`F^{>VleQwR7R4$WgICW9Ot8~Vi2))Pt*B5h&n9W}~wJIYk zsHrS3S;bZyszJfjO%%2k4qqvo%lbpJ2Rk}=G}jCo2Otdu)Vl~3v=b%ARM@F4K}of}VN$k0GE>ajERb%$ zK~~mlDASL`#<6h`7M;wQZ?r7@dQ6ObPl=`lWnDLH%Ei~ZcexqBm&!0&^WHo}GS+qXBS-9dn> ze?!%Uuu4e08XEKxEbh(fnQG8N>7MMHQXy%G73~tKaA1Ioz3L5#uE=GxT6IKwdOID7 zQ+i~RLw%$VGY5Vq_KRv~Kn;z*|D9?DP>YxaVdF@kWn|re_L~+vHZ#zT7CY_?xN2S? ziHaJ_qI_`$1vnWqFsr}u4}25^jOE0JtJk>8;V#wA2(a5Bzl%M0@x-hLPa4CsgPNiM zfACMaQO$Q6>x|Y<^#L#Zo-c&%TFC+E-*_6hkU>&%6!Xj4KL$^9Ts$vEx;*oRq$`&y z@uglwNYY?z*k+%5fG8Nwp3-$V9(>w79D=I1Uj&=$JPfwjkZGPSW~_ce@~S?gd(JN( zcs>J(Iwc26I%NmaPt_nk_@+5-v<-sMm^EuvWWDlLh*zqTanaS#q8uvwB}3?RqYn;s z{fxT}8QX)k(DCEyq3O^fsCzV>T>1-q;AHT}f2{XCk$QyVvs#gzLWvqFCeq<`ShXYP zj~&UIV>4lDMv=v`k(PnbBSRW8GN`qh=TR1vA0rH1HT)X7tKthc5Z(e0AN&K4>kIRh8)WxHxQQ|D5 zmb8aRZig%IBt`)=ge;4QEH9j0u2%@Z9a>8?Ou^z-#|SWWTuPmirVB$!Yc-8z=)*Hc zFJ#^WUy31Q7QsD}B2--2CnX%-)H72yFU|#O8yC`r88$9~Cn+4>;4@_#7uJPpnNkMZq3M3$DZCY@OOnL&2)1ZsQSAxK z#*Dlc$8Uq#!ROr0g>wvIo4c^-Cd<+R95F@sf(vm)7V$;DzEIa;qioiy2U$NF-6-p^_OSYEW<}pa%{UJ#c3zpG+&2;>rvdu>I-(2K{=2 zwlK)}L6eVY51liA5$v^l@ z3I4Xyvy9iLvGZV7y+ev3O`DW)g0t0(kMQPTHKdZma{Yggpp0l*-9sK*eF zRTU&&Kn79I6O+|Aa99Rt{XZnQ#Sx!Bw|g-21|xt?NIF;t*JIa{cA^$_Ieb#G z3(;4JBXG{P>`SN}P;&QYn5QS+!ZjH z_qZp0xONpaE#rv2^w%#vX60C2DdXmqo0K)z_C#}~#C**45VP-i#7?Sd>|ye-0e$Ih zb`rm&m-n8{(@etbEB|)zOwG9ZX6%w? zOLlBiQwy@$MU&j%VGfOg$}n=;Yt!+9{A)b^4J-lbZ3UyDcQdbA+6BDitsZjf>tokd zN=*TN%AAX-N2z9>wOO7?S_egkWln++uYWM*^fr9@8l936`6!j3X(1p&%e_&lnnl^S zm7+E(kW;G333@40`}e3Z@P6Ck_Kw(cFWyLd?1eXE?3SL)*mcDa-k%TmLZq(BuU$#u zeY&a-KC8ahJ)I&t(<1-1(Ar0v7XboPNtnlilfJq*N2FPN!Axy0gp9jZ^d*9pH1 z@~t-RXr7iXhWHD&ZzA#SjP6TCHB$RgxtxsApj7RUwF5-nug|JQi-H@@A}MsUw9BhN zt>Xp>x=Y1<>k39mlQwh4^d%GVup?__R?gT^)lI-PATA7Pm;t){7kCjS-~Lcy5!fMA zJ>n2!Xq;m!W@G_{a4}{qnh~rViZK$JI1%OOM2T#%0`z%l0v2|;AqQMa1TI0Y8Z_=x zSi4YMJct*bdDvIs)hG`{wds64u{7jy0xJ_P) z^W!oLQOfV^RAF}c*+$OC@vg8H*erTsUI*NZ?`B*nR2OLvJoJfhka%_S)Z8G?C*7F8 zKmSAMM=90S`0k&Q!#(={UOg~GvxxpH82;aj_}`ncy)C`vKX|%0n3&Q3$CKWMk-?7M z)XB--iQd$X&c@EX$Jg2kM;&nDFYbX*UhFTCRX~`OwAuPG$W9@ZVku1&UXsu5#RV+@ zOaoI9R1HmZ9v9aRlc_oJH=}0@ZW^7ekN%OT3Me6En-S?6T`@J2{F3L<_xtweo8R9p z*(a;^q&D09*d}$x>9s0nCi>)IN&W@mGgvZ}Js4mGd01uBRD^4CY_M!n?8%2o4>-Of z@cwc6S^Fsm%|YQXcc7!r9pvnXOVKK91_*A-K`IC0%0zqON1#d(Ib&dm!`I{Kp|C5@ z4*;kp+3F!bMJ7=P*Od{0?K~nSQkn(;v*aV~wN?rKG%h&{jzZzn;9P?S*S+vAI#Oe~UR)-AIjIJQDF_cE6!|hC zkrPw|&C3RQF^>SjDc7CmmI74O^}9{fiCCx8#2mtoRwv+zQi%h9@inTea?G1 zeV;$>*`}Ga?+zgkr+ohUspujAj+y2zYH;mIAUtO0r#)dY7`KK_09rHT8M@?4lpa5n z_V~6|?xe|c^lg4PKBxGfrmMobM%`Hl?EDtlkwBBclcP89Y*vppInKKsRFjgf%dqI4 z*|wKcK-aJvo@cVTQ~TROk;a{9_FgbM3$-3hDa&|gOjP9A72{+)_@`58J-_#;bFr>T z%{=(>pSZMM4uEcc%|`y-i`)Bx$9Px*f771i&o=ixhmYF{>QjC%=RPdWr>}-;<+*ZK z#?&zMO9KZP5fbq=6f^=Q zq1`lDic(r5E|w|%&_!oPJ=*CmrQKuy4&<=o@G19mOgWC0&rhp%a)QwMi7@p(b*Wfu zxz&Gf>eoI%3_%r34}npmxDl@{xQXhpV`^qj4sLe-l+JVJdJaCd0rKpqt_&3Sb`kjY zF`Gg5^zmX6o;CN+@*g~uX()}1DrmMdh3aT-%3M7AvLr`l93Ayy{RhWvT)W^Cr2?*^ zMSvjl5a^A~%@|4%iFppOl(-cauXq!|x?BqlUuR+R(&7AKO`Y0QV2g`tbNU+Sc-L1H z@9O0J0u6HnCnY(cF3O2VU)IIeH4~#(uNb_XAJ4)FX1{!+e(fGZ5(a7)aOMM};h}k| z{EjwNgND>_G@D%KnpxwNc1koNh>etKt#kTD&73H-#;kI~b`G7sPD2z_DDP_p zVt?a>*eEK{MoWgoH09_EDk!V{$!I$rTz*grN&Z!qk*e8+T&c;g2o9crw%#r%te);k zdD)k9#EQ9hLMc5V!s*w|f_rA6-a+Aji3iC=H^2WK`E2I0hV+9S$FvS0^JK1zCPg3a z3*!8Jj+``UKDF`+q0V%irfCcrD>cAIY62%aA+J4S#$;NM`}QTiMg;x}#GQ!fCW3qW@G{Mi`!v!^RH;>?o+#f3qjXW_A4hQpx4*QJ8E&`_f@p|vYQVkL#4KewCoJz=75ySc(Pmzr z>ZCip5bMM@agnb;8BOhNYY0O`m`-$aKD#6=G(-|{IK5MP>1*4OTtFgj8u59<|XQId~MttTj8lY zC61nPD68i$asLJ#vr!$PGJX0k^Q3*bQIl6GfZ_-@7!8e2ltfsLgLv-)%5lo^ZB@Z+ z*qzPLMa<^T@poInoG2r|EfG`o}Wmg4+A;>3rIn+n#`FH(kk&LAB5NKU+$^#Lx5INlD!2pUZ^0Ic65e&pxZ;S{9D?Tv23u9b_0`(Jarv=)B(vFf z^3Tw-TELo9CN@(nBUJ*#tGl~9WOB_+jPVVg$GX5K8t~h_$Wz+X{ylla+#4dfcXIHV`Z4R&b{}xjn9c zs#<#9CTr*7Q*&x?mn8ovf62Qc!qfq?5`2H>7zt!E{$~o5mwqvEYq;p6=KNkSn-E5W zVTJ&CtTG0wVm*{TDvkVgsf^t(a#3R9z{F&+3Rn<6AGH8?j39wX5k!0e{?j^s3`Gkk z=Kiwwf;&QLiM+iSW0<~}sP$f}IEYISnv-rG&o_y2E`ct4pzAm=>=JDxL#?Pz9;GZ( zKDsh?L$=d%OSxrt`-C}XJ0+%gyu>d_<8eB|@>8}hr1ILr;#Y%%l=V98(X6d&Q#-c? zsqF?=uMpS5O_;5-ePVv0wzkB{7Yp+o+k}zh(A<4*_r`?DFN4E7gWw}LFR#H{IJej_ z1NtHf<EVI7dg_^>?AqbEB7xtDJ zUYKzwqKlG8oVD6+n}eZSIgW!x+pFTw;{%(Yl@^29nD{*8&$haVbSc#iRnj9hxgou! zw?^g5r`i}?uo4cVR|{&2pI0jq#ZTU6(UtDkB3G9Oi+r(P^Xj@#ecea6xx5?NNJ82g zsi@_Tk_r2biASpda%JAo_Z`9@g*dn&;it-G7vN`9-(`*%;~yqPf)ddK_iXEP_6y4I zs|hyyF~`4>j!FiZ4HlffMSspv`dR~ zVQjphwm;KZDPHCoAqK;+w3tdZ?$u#567ln$h&&ZxmppWv@$GVs-n54iv{q-@3q(ip zmKPC#E50MZNjV5t7_wurTU3=LG-nuhjfW8c1HwCzzaupRlu=zKm%Qu+niyh7ZP0Zc zz37)9o6Tk?W~~<0OmvZ@Pr6K0<}Zk$VAKt8iwYr#894=uLcYaFu1Qfp;XXNr#&o8P z<~f0T>PbmI+M)%RTodT?yHF-dP!d!&p)3_{WMH?PRa-_Jbe=QzB@=j< z0&PJmODshXbKK9(a}#~OZ=|locNR}}f>4Mv$SJ;20~(@t3Df?`B)8Ivo3ASx1%CF|K@$zYw9O z_C)+sGu8wRLeTQKThq5a z-T}Exu%|C*xFcbpVJ=|pt(2709(?#}f5%NTTPQX>WUwF4C_x*|_4D@le&;mQ8w@C9 z$eUL|cRLWKffo*T}TB)*ymcYgx+aCBf&xbO_oRZaFe2u%^zA^SB zpa`*Jh4tXTALe^@VAPtrl^bC@?^Bdwq?=+ekl&;^VlPDFf*D=!&Wruv+ZzJfgKv6Y zzr?u2-wPSN25U7O!sf3#BBZsLN?L$H|7UwJD`N4f`hlq|{xl1KNZHMv)*+BIpa`B= zx3AZS+omI5=<5LdKct=0k|;0|K*zRi+qP}nwr$(CZQZeL8+UA5d$;xz_92z`R4Pe# zpFRN-*)I9J%U*3`PGO=B!n|1ZWuG;Jjp_$c3U6qRKZ>j1U|YWU= zC)ZELNs<3I!-wqYtLw?bXR`S|^B{^~v%ndHUtp^g2k3sCSs5Ti#G_C|N23ZC2)m;pN=$yrKHwxDWz@K|6a7G=VSGdKDt;15?`bWBLYxUhG` zxkp5}eKYC2*PScrpeX#8OrC3j_T!D$Yc3R%Q_=#a4o!+<4!H0Vp|Utzp<|HgjSCYm z+nMsSp7+H(NVn)~6`e^>iUmM;hgUtYX~g?(o^=92T(So=0f;_CI}JqXHi3iG1hsj6r^jPVchbI;O4|m^rkFxpcEcrzQ7SqXv4DN)4o=BX^7wgZ*^q#=Z%Cc8N1l=L~WA^eF2@Zaua-&8S( zkiJBs)uQq@jm}x+luS~ij<0`Q+cZe21a>Rn#mVzUMLV1B7I7|Ua z-F|1$KNQ4fjIAbehP+Yp@A_aOTf?HXx5y|mn>L_bdW9z zPeU*fxV@hz+F;1;{9JB3##V^oKR1;dVFBn6=ClrXStira6=U|{($}C5=tW;;yLdTw z>h6b*NNBC#<2n%c*@GZL2vi#ki2?Ndu%9&d(qezE=$X77!V&}8?r#`d)+TrzG5v$! zq%f`oraBjAYi_sV&6c2iGbh*l2H)v&1=o7U`h|gn6dr63f3+;W@9*g;0fi`w@x5A-qB@~W0!z!_qe!;oUzHlA^g9#&zhYt zmoKB=8K8?U@KPzwo4rypp$ zXstUN(In7=c!HM!LB|Ol6|%QPPj_2UV}+HPn;_4)qRBMtht`daYM91sFDeWLTz9VD z@T@uValPGcWvM4GMtHqtd>kI#sI9n=9i|cNEM$z5`Po>bXLY#cpLCyZtwISEooMn7 zF?dzC&$xt$-=p4jW7^8Ii!Jpu&{z1eKUD(f@TW(vj`R#+Hv{9!3(i6;2vw7n?lT_e zF1b^dNpx*=XVprlpxM*rLVVgQ%2lJBTqr?k=D-!dke{P1LSpJ4C!$;1>OQormOSo3 zwHjN}h8kLGe@y(jlclE}76u%-9-75AS!qHU!&*^|x`R-b4uMifn&DfnFIE%d zCm_P5!mT`QWs0kf@(h!3&Af_psWlW>pe4h5JkX`7tazFFrPkr04$eMtbLSr}OOHHsGnByOAgwz)LSIX;UQ?ZaLq3gmVMWiB=>N6_Df0KpUp6JvL*3H;sU=-kOAsOa z7iaFeE*9cFZx*<@M~cC+Row{@f0PF|ldfk^uW3bkAm_C6iC?I?$i?@NlV#*hKU+n3 z^^UbvAb3K~5vllQNIYn*O*$!8@MlYb<&tH+?Koo_w(?E z>1iJk@#B1cR^jNoU8&Y%gy9Zklu0)%yB$x2-la)*SFUPX_9g7W)%V-sXEztI>%XHgS3rY3@XJdIBk7Ub0Texf2TI?WK~MzSD$ zUU{XfJP*h|IuE1Im_Zy#CL6DLTU?aWP3a|;)t5$Txgn4CUaO_?I(}h^O+|C1cYEWR zoSsl$Z5>VFTPm_)C(e73r-6M~D!9DW4<{!-C+7zRVIp2Lsw(jlsZbvRW4nVSSIX zJz%7uVj;{r>(^g`6IQ#R!rP2bNExmtjnxpEQEiYngC#4vj_*_FC@idcJM#b!ASp!n69X-(-?70#X7tNYCAzJBL`{5RH z+PE>$nIfysOTy8PiW&_i1=g8@7QtcTbcZU%Mw)TMZNvw+L4Jakh68AeUSECVH8nua z0P7LKlyE`+g&J6cHtBi7N`2=GTR1mhg{_Rb>LarMVdb&90i3P8rATDQ(w$$iScY1O zA-+tI95qgaE8l1xX{qVbZ^W*`H@ASx92z=|jxN6XC=KhV>C!j{B!bGSJm#@7X`K&5 z!5OCN5=7(!3VB3Wko{W31j(qaka`T*R-ZP39|t?s-(|)%^9a!b#q#YBejMO`IhKz{ zDE~NM-($izi)~93SwF0y@dNh9mc%NBIHhF70$JesQO@pu9%RL-azRUDf9j^TjY9?U z{VE@Fuuy6>gqViSy;+68HgH=7QnrzYOoT{oxmy;x0N|gosGvZb5^*iYGILvEK5q6tF(d4jbSMCapfSaqyAcLGYRox1F>&$SI8|2Cf>3QIO_$?B)1j2DH zN*uU3EbhhVy+PY2Y$0wb<3`>LD(NL~bf+Q|Q6|_zMA6g4kk)A8nBDCsYqWGwz}}-!62T zNRL05i#z&4d*MTW{p(TH8a3(^5@+?1t}OUs$neV_>6byip!-D8@!9ec$nqx`woAqP zH;mRl+1a3fPU_u?N~> zqU}YEfXU30mxoSX-y@)*jq-; zt!nSu+}c*LrDDEm0;211whZUOX7Xag;Ur|9lW@H2+ck@^CbdEm{MJY#E7oQnD;f(_ zs~bZRy100u;~D|xTlPAFg#=#2XDFX@ig+Ie@OY^~3r}8H6QboeKyGt*=4tHf31}o>3o!;7As^S4B z`O$+=XfcDcqYehDpOllI9E{ZN`;rN;Z`z{!L2I(#$!=Lo^TVEGw4w!eoH$v@E`wfL zk2tF%GC!7&hCWAEi9xBbaCRm}8k%8;M}^Jd!FV(#=6lTSD^?8@b(Z@*RfB>HE|8uu z?gYGq6mp6=1tHA^@9wr@t#bH~TeOYVG?Ws0egPdmUYcLu^1xjq0% z$Sj8a^`^IqLgAa%Ire_QO{3pwVhGm@v96*h0zJK3R?#IQPrvr0MaHh!iPfD!8(D}e z14&J5vEb;s#J{N6)>5C1#8sC?O-Eu_P(SJy1j0KWQ)aBWXoo?K!J65HTZ71Ga~Mwr zPgfU%8=hbiQ(F>h%NlHI-d9}lsCu1$lknqMQwoQx1pKe@@wS8ms=gsxbtq=1X|7498PtwQ-j94tAdGe=a;65)8SPpmsZ2 zf1}V7S7{U`he=-um{08NtfO;8Cu75{G#zpYF4#0%eAgRgg2Q=;HTGnBdzoQs!ikcNu!sKiqgWqzpePr6}A z_~y(kv!4VfABwyzjK_C5`=zC8Bxx{Fg@A;-jSeRtY13`FVbcCKCf3u_$p!cHwRc9{ zdl(p60{*<+&4*W!2AHwj3s_#%g=bEcA%iXfM2(>fQpsYh>TFQh#i30Jh9k?S#~PhP zx0eex&=@=JMqbkc#>3mnOB%?MU%OVOis@X+MJ2f381h`*wkDDiS>o&Gzw94?sGDYm zEB7ay((&9LX!v=7tb+4WctpJXl{xs>f~UBHtCU?4zB&tPS(>&ez-Ck3indkm*i?|N zAA_yxUBth+6el4i<|d`)(S=ZQiSY(;N1zsck- z6~9%Z*R@>V`TQCcFJmY)tA)G;u($4zzFcPit^Lad-L6@F`@J2u1-pqbf^_wC=`DCeP{?<0FAoDEeNyH*jJ z$OA!wl{J%NrQ?@1T&KWguGPLbKgRA2|5O)!qCc5>QnPaz79ZRhc}5*Ta~nV}ToIGR zU#v-eKW($qhrF0BU#Gtk8jB4@>!mUHi*ze&_%B`O;IB*YH>dbNVqJBrTNyTQ5GHtH zJc7Xsx2O0<@KtxegzC=w@)Ov#e_6#_#A`?qC-DRv2fH+6h*o(TB+#Ortj^RlRPdv6 zj>)ytURG*^Cv_bx3{kBVTWd2_?IrBSa)Wo{yrF}*Z(va3L;l7sEsK~8+;-GMFE8@V zZ6yoW9)OH1&9&pwB6c6@siUtfrSGA?qw@b?9~|WHY$uhCWaVUMbWN-|N22Cw>SRrf zFvY+YWd14L(EdPZm=0j(EekI?w|l9Ju8h#EHD`8TVfla~T(Q=yV?k&iVi#FH%-(dz z@-2_}$4rWXH23LdO1n!-?cL4H@n?X$OOxd*1+w1&x6Rr0M;LH>H=|KCjT3ZLJp&_Y zu%CO5ubqB;cqEaq+}ere4m}L9LnF#*L%nUCePuVJgYbg<+tZE8bwJXH#7@WKsaP57 z`Hj0!Q>6nrAp+54ksRLDcT@|*Kr}UxVA@CrU5=)`7IBfcL+xs4V0w>c>Y4yFDxJ11Bj3gV^1$sJ;8z3VYEgEz?n6xcAzg&Qa{v7A?$nrmr~m_Qn`q zGQySxMou0{w0IE^Fm+sk2o8fOw=AVP63C8=B_WzWCiYb67}>~GTi&wHuyo#`SGiwwQE*BV!`vtl2>RoIL5?DzR7C*`+4vR> zmP2g{lYOYXnX->tF`CRbiA`PE`ZV>x7+^_L?tQBkD1%A?@FJJctS*(4h#`k>VUm)< z_i`;k57SrPuBVnb0{j$Km;+_I7P>P;ic-KZ;Zl~lP@J;hC7dEl42#82&4lWxO`!a> zK1xvo%j<-`@>pDEPthN~Y90c;xvgptMEyy0J&RGz6rJ^x@#XaKK)XKjC3rB@6hwl- z?F#T=XeiO!yRtnTjM~~wSPu; zJ6uWh`WC}aL#eHN&-#1QXC5C7boR5sRMibrulN1`C5TVwdU_5TL%BWYyCSSuiCH&x zL{$wfvzeRj@JUKBM}Kl)Kxw)7K4#%L))NOuA`ZH1)S9IyrDK}{0kTShgb}`l@1x_| ze-5&4@tWfXK&7&fR3FDbG9EaDI~r8TfEiHeb|;jpYiqI~ z6kB4?Z(wC`IRt3c&8msI}U0p}iandLtMdH8Xltnebf0XBXqY z63W!#tbcE2$Ac#Hj2RuuGO*EeXJja5+ci%(DrJ}Yx_XAzgkhL5U~M=PbjM`aV^ffj zWis)NWYN_IYkFWQw4k;8YZB=|uMOGMkRjAd=?;`g%7SGBqsi0Qu5FB3UFr!g)JTCH z#!WOU>nV708JP${2#Sleb$OVTR&3dD@v%!7qavBIsf-E z@lZ4>x{8JYuALwNkih0-`9f$&r{;uL?r%xhq_0PN%xT;T=4r!)*5J@(b8vo0IPMoM za<0FcPjDn1zrCT|Dw~$gI1=J!Y`Xf6o^S+AZ!gDh7XbcM?T9r|wrKs&;+FjCmv3+X z1KDuwLSc5_*w%9T_CHc~! z>WmUh&z*K2?zm&K%vFinx?j24`VwKRR}HQqUb!4*!?zwL!}ddY?_ffrrC1W7v8-`I zMSCvB*XZU0;UjYOUUcEbJkQM z9BqNZ3C_4Kd?943HD7939-pIi2>5$#{*sp1^sv7OT{96N)Eh|0b}Kn;%~!spEx6$g zR%P+)MKKSri!2$nIgu~6w`rc$f^vSCEIt)e&e+VRrM{^J)^9BOrDl1%sacRTQCOnI z$BI-}QbD4g6&5WFQl;KW{Z7WkVC%LdJo?3UoC&@kX%8K%gG#p)OGON7b;Ely{5lc1mu>*J$YPuoATv@_#VevGOmf1U6)=e z`!hyuA||6QC<~!6v8vS~+2I!|WgI+I=#(~~_41?|E5=ChGPJT3^wi3PGOlPLQ z8IjwGX!&5L7pepX+s$%^mdcQ}3<#M(X9Il;1u)7PVBX%Vx$l#52Q-amEv5J6n-OV(r zWoNUkq3H9-|LC73j?7h{-bFe}9WBFpwC}s->OES%7e+OD@1ZT9*^Le(KS)1rO*91b=p^oI-nVMDW}{$Kck#T!B|c@fLnY}~ik zg!_#CFz|||Tg@rqw$Y`|>G?2UY5&?CKIQubh$70LeY-RnX6q9C5P`*l4Jw%Zfd?hl zMgz8BheW~-ohZw_;q^Y`$^GZ}2b@|AMLMbZOdG=PmdmlFpE!osYc0mhV7g!71IhvK z-E*$K7?r>>s;Szd=KgaVQC@w@!0L-2R%giHXs3C!S$XI1!$U1)-BDcaLC}M1(V$QR zvQ`mH{czRgk^|xbicdAPgBi}vHf=SdV_F0EUI}ecX7=^PiIJzhtC3HpJR(LK z9pHoILJWAB>}?I0RhP;96r3yg-aY`c1aRh_S_r`50~V;7lGpnltYP1L9p7p*E{r)` z=3rmB;Ab)u}LqZjvU8h(N!)KgZDU)}; z6J;h1a#zUDEdys+O&|4dnkSB{TPnP;Kcj68>v4ZjTZM{9HIjz(Tw&Up)R2RZt66IC zijUL{XavEatqo$an=h_#Ncski3K=Pw8s9?8_s}Xf4~oMbc0%Q3ip%R+JtWNWc-grM zW5d$8W4uGdkQoh1x-qx6s{7I4XOlymW;KzFJ0v_0t3E%_W7<6|n`5t6FN=Ij6}Jvm z1lO&r%k>lL1;*hoR-ucVJ???_pRlrdVSbnBdDJOtP-N&ki^);-Dp)RR%{SRDs6m}$ z><$pON%zI_N8A=E*l>3XUJjnGGQU4jM4hU*zBbni&7X5w#$`_f_5j{Ko||z$56|~r z^_ntrzc>9Ya|!}>^&q-1j$86PUVV_7LdXEGmV3$zQK0a6?kxe7g?J!Fu%JgcN^MhW ze|ChUwoq^zdFtE1(Uxh#nc=fM3viErQwkgpw$s*F~sct7ky z2&^&Bo5cS+whfFmdgr~tDIM{JXgBIAItKg&)#p!gu6G8r6^J0FHHyDKgI=-}H0*ED zWLWq9F(OW*@3Y5=#x_tg+sqSwSUWYU1&W_~g;=*)9*N+HX4S5BQGttin-Ow$RE_PD z4S~*&k@s1tl^G0(E-NJSz>3Vq8Yy6Y=}tY|B8HoIzM5M$%&T*xIq|6+{Q|gF<4!&` z`)VQ0d?8+4HA7p$4hL4TC+j0ThH=nJ-!2?{BcH+IYi|8i`o#Y7DOecy@0A6<=#~S3 zTQ<|z^d@>2Q?S+8+y(NB2G*9e8&C}Mnt7eJ!l3C9OXI-q@KL4AJS2VGQ#OQJBi%D7 zi`jPw=Uv;mXGIvMGq$|6Rh=vX_w z27~+Dl(17BlBQ;%RCm#YAN57GVDkCaWs)3KQPZHzg7&nGF(p#l#strbvR=Qj9>@Js zn^`tx@~7hT1@h{rx_72G8dzz@?D6Y&EBxlI9%LAFtM}Kuxz|2spqS%Ix}m7a9xI@n z-aA7#vnzZ9wb?sEFh2&(pw@S%6!B^N%<6TeM%#aB@gKHIJOM><=hq9Zuk6-ilba)` zre#=YSSQAMMt+IZjY(;bxXa2J){0#Q57S%@<8U>In<<~cNA5-$&sQ~-< zS}X?gs`QaAnn48~)BbRGQ0#xpf^3hB$GVaO`Z8l2kWd%m(=D(LpbKPCb4e;n@jk4b zv!YlI7?BV$-6d1?Ge}eofBfy{hKXty|1f(3XB*v(feJIY{u(P|Ly>HqfDj4D;6A-s z!QC4fIoc3d0tPZ>TEQNk`Hp%7VGz}zALm7=CSebX%Q<)Xw^Q5Zm7b))zEjlo*GQvf z{$vn)u+4AOLgs5Vq1&$ZJ$2R;&V|hJec)c;AhLk8J9pUkq5)3*XFJt!$ znQ|1ODZ)mS{6pts5krg5)$)~1wG?Zw+N(AIFLti)*mcEtR()#T<5jt9k`hUax>TH- z1;X|(WadmqeE0NeY&)Y}lPJ-S`|mjyb;QE+o1XrLNzih1{HtNKx0O#wLKrMiA{gi4gjB_ zbAjI>iFY2m>^LzDg9^M=z38jgf_(+HtePn55vGd(X9nynr3| zUU03$*Oa%u6z(Fi5Y=W7BQ9@bh)`GkVjb~*WCyLtYG~>UQ+(>yIbT`895Y*wDm~Ya zFhiu*kmH?O-Fo!RHv$7wM|Rcmci>U-mPMEeKa$SJ^dLiNkeAWD_(MrUb|1e7JM=sa z_J}-Lea=-ySwwz+@y#2dmr4s>{weRT zK@^{2&2YUrIz2Dl1(yk{%xz;wHJWjfB_J_B6ya=Zx#sdffN@G5U>Af<3oAMyYrP>& z2emSzaovBj5;QZIkm8`^bc?0D)dNcT@ zgDt!VGAtZ($13$NOEtb?I!tEvCX)Iu76x*uG}k`hK7K(g_^?OAAx!ujfxau2(7XIH zj)t0ZS4wU6#XvTgv9Qn~N6_nbvId8jszEs4@hHx{L@yY={h{E){w8NW%F67{mO8q= zc=Zvm0dGR^t=H#$opc%UjZ{;o0M~sDWf=Ni+oWW+T8xpG{t?@N#iP?lhgxNe1EKc! ze7t?$1&qY7Q}NMII6yFPv)=-tHp@i#M}U5dV}(EmMC_L1TbWk#^D0%CH7%lc1=Fm) z#rPs90|v;6ubrf#Nkwef0Z4E$zPTOlBM_~%F0B6ha1v5kcT!Bch?rtmoMlj2!c8L$ zIbiIjY9g6jm$J^x$Q=|0^bl+^l*f{!O*;gF(|EUZiBh5zM9NJ_7t>`j9$@Vk8j=9* z?(;>V%r9Utoy*qN1pguMb z>n6CNSZG$&oB>Z}f|856+Rjtx(K?>ztHuK8A!oDBNkiXNvEDUAz)ty~loNiosy=X#(-1Ww;wQ?`>0oZ$Fje9P*N&t&-7dyzO;RD_Pl>cis%#Kn3t>; zqe(gk&zxUPa{d%fOjFkO(i}lA-)0X5-BarA%3_~QN%pdQ_i6#KP>k%oyVR2n_3Uuo zZ2nOv+O>v zn-wLZ`*TB}PoD;yi$7>zq0a@|zDvo1o=W_$Y;8*L#%1U=zX>z@7`dw;ANgpOc^fJv zyxYUo-4JBx)xC*AUew2k7s%vYh^N>=skRBTz=pMqe#Nhq#Z$ryXIv3GdJEbdheibd z4|{Eb6ld~(Z+=~pS39Q2K0M0MIAg!HT%0QYzPUKO%RX=i)FSTBzw;yO`P#TG2lQ$P zr=(?mo~^V1O64TM9N$ovk#S~Vzp^a5=>UkWwNNrwkJ)=PVWe|;1`9<9 zVOU!4?5iYuhiDD9JJO{s(B}K$!}aR3vmuyX83(F&uCD1y#QG-|&Cw-UDaCjhVW~gs zy6Z^SNEuXLLb+L)P&|FE83E0K><_N*^_mZyAFfQ4u)ckyJKBS&*wCtq(5A`Ti=v_L zt21w2kWhfMnrsj3Y;Obqe*c#_gZa##o7L;{yC+hTlagaht6$yOP?m<0XOy{}wx8O% zjeZvQ8)#54~us{9`XFzO|TD zi$M6uC&&OP4w6Q`=XOwxI~1MJJwj9@79A#E0tmoO=ET+Fe@{T!rktrQI2!a$zn3Zr znmfq@Eo|0Z;;{=bXX-v9i=J&`OsXkDAoDj!Ics51Tl@(R-R*7ljO8|TGhYU?(@dUJV594$GgoButbThCetW&Ope6(iLN=_PWi3;H*X zk92=h7-C5cUy;Jn7xm|eNC2RzG9dvuvvK+D7U&G&(h zg5x7DqP9ER`C^s|l{rgD1?lA35w>!I;*q?KuLS14$55Z5Z4wX9n}eiC%wd0Yx)Ab$ z4;M8wx;8?s=A``mLO4IEib2jGDaa3sI3x;^jzz96UuN2ggXPSxkJt%|>~^Y&<5AJr1XRUI%f{NJO?t{quqN!$d{ z=sIi8@eR0iofW;vK!^TBrdAnRy^7$cBcpGDotM@TJhDYjFWja}LqL^6E6<($NLc#u zy_&Mi5$~tz^P2SDj?%?F_JJzHm;H;ladMvOm$<6JfarUeA1Qcxu6|aoWT6$HZ94lv zVHC0$)hAg7_@ffPIn6T~r;5WcqR3FH%eWS_b_U=Wic4M7vo*6>t-eRYI+R1D5d<7= z$f2FctZHR$XFiR5#+wIPhX##GKCD|?BcXhw%>HtF52N7^Q};ck0lB`FVG$GHdial4 zx*h|CIUx5n4+qm{U|HbAJgZpJbb<1R$`rvR39j)B0;DSasuq;+-&Au}Z4L6tSGp%s zq_9>p!S)RX9=+O^H*OzTpbs?5;a&^DbWoi=qDPB`vzC6R7#Z8QMS#8`PC;giBctwf zYD2Xl^nemiwPW*mIvLY_B$Me{sGJlu+I?@c-P$KHRoZL46elZMu+NUwXn)^Ch4K~b z;zF`bDSFuz>us2&>qja2pZAesxne$fyUxWaDdA1g-;*VxO*+g)EX=z~M}h^(DGIOj zT(pG{%Yph!pZ(s>AanyO-iUbfAqtM-J4YRw)6fkO;b_gvDY#0_ysmni3S(N5Y$pJl z)OKO(%&2fJ;UEx~Xg7j=X(2H%i-WA{9!edD18Cip9K(n2sVNx|k#RORO~oTZ1cB9h zM2Hmzsad{sB#1SvKyX;MT8n{-lYcS>z81?QG{XHduV4gpT2o;#mcOk|kZodj4HTYH zv9ciRZh|uPt}`o1a19oOj|7cJtyF?eF_){W1YYct6fzqMOpCB$qummB0U1(96C4TW zWk_It7Q0btwad<^7)2!MB69;9(Los%H|Uy0-_%*XO5keykwn{;B~MW)IFy*`EKCNi zB0E8RnKJaYGYDzyv~?SFu(=xOij4+f^@BuLu?=FFZG9SR)9ydMUAd@NLNiQzr>~c` zbq+l$L6*myprHu`op}01{d53h#Fo+}l1dZK-a?w)KqqoiSw>#eq_TKBLg%@#yI@ea zHZ^R9ejgLk{^WS+UDJx&eDO;}N9snFS$D4rXZ%=RDGqu7pr;|7R`bqHc(P>e*pU9( zGi9E5Zee~zwrN+ zRRK;OA>i==00@u&U+w00HvelkzjWG?Xgc|gJ9F=U`by{_Y^L4t?cD0gL2feHcu=LT zw0Aag10sncp+VXQD4@&BAm8F(jAyBDct0+!0tiakUg|<*wneO%q*^AWrq?(7zWn`q zjGypM|6`Shrg@!2tFu@0pTvLfSDeX7-7;AwmpVzYb&_7(@)#)v10q+aq9nL1 z6NXI0nqlH}R(;O8(%aE7XWurcU57O_DcCdO`Q^!2T|A;7(4-7E{?|7y_4tGL9?S<->lqcl<8PrtRn-d8;hSTUJXmx~rwfl(1}{Pr(8T58KQLz38NWi8 zCi`y_MSb)@i&T2Ej}H6=ne8?~vb=2dR)(5p%r+@}0jhk52U1kM@+|uKvSAv!<&roJ zr(j?R^n9lhP$wPr^w9NUXsBg0Qaw^PRCQBpj`UYw5&u|jDsJt?&Ji%}wUdxPzMEP{ zxvS`BBAEMm*(FJtUEcB1(ert9ddr#xMO00_QzD%Q0N7zBwtn1XHsFhsR_RDbe4ca^ zi*87&O>2?@wPyo`<+*Q$%>1XmCBM%k|76fvTTcq% zvU^PL!f+}k+siLmZ`YOdn-Yi$Sp*sI7}0%oP@rB`20~16Fm~d5fBvjS_Pzq zOBdQ2n*MQZjpxNvP=jYYJ_8cnR>pD((Bt&m-?f8XRf9YU3< z%!idJmpQm##ZSFkDZ=E9+Z;T-X&CsqCr>%)(IxfqA5@M~BxndoGuIxYl%1CWm+7cZ z$~{5XJA@g)S#f<&0VT)zABOG}xq`zc5>5UMMDiF%Q4{5u$dtT*9Fl(9*nGbV(Uc;b zqcMR`Nd_DS!#b39zf^zn(bHQhjNsbk?IECcD5U1PCe6R{)OD( zR<9^l1kXVEp$clxUY?HVgH7}e0JWnd#_!CT?3wbPw{jR=74)$&!+0Kwe4;<`4FWJc zq|5R6PQ8i<>NTE9o%A|2HU@}$AR?h=j8~GJ7#vSFNGsS+PfNZ@l8W0UaTlu3piat1 zU^mgBPlvVX?9cmB@nJoDggVNXW99?Sj|*1OeN4tg9@tgx;2Y4FELTg#kzSw zv)Ptc6^kRm{V?9r5K6->#caBIY`jyLpk^e)G#evxASjiO*K@cG!;=fgRQg8EFmU&0 zYvJ+;Ii!WeS=Q~N-TkbzJ*L{{GbBQ7bYR;GNcSSja%C+Vg~S-qdkV%_lkoKwIj8F? z8m^2JqQLqKK_>$9>)G&E?yjf3!^2z^$yXYjkfA8$T zyuDzwv<;v*q|{4372A=u7F?3%=@OU|=ZaMN$ih!zmJ&FWMlXyFK&^8EvIHkcCrSsa zxl&7jWsu0rdu5-l-M|RF&==%0dL3)vV9%YI-35Dd%G*nNB&WRK80St-Rrsbx<2-18 z&BgK+YtG|tLy$=FmM)(eUL2&YH^do z>K>=GWJUR)R;7hP%`VZnJHn>q??TQCTempqgbYndT93Ea>X>X#-*4TDpQ*X&gR6oC6e>_Ay% z>?s3vaqvM)eF|rLxe=roWd`c>B=Nq1g_qj|I%WQ;3fHNllx~QsikzHT0$P+23`UHa z^|VB4C*sX!>n>ImhQ>(-9&q`+KO76Du~oX}YsT%aDa=jI`Jo_AwP6FnmJN|Ja%sR- zaRJQ)F?n0U$@6!5gzR}Hk>JFR4H;76cKMl8m8{razh87D?UX7YPD6t zCJ|?mBC6Y}T0@$5p2kd!yTed=bZ1aY{EwzUjV)QYhk-#h)7wP$CdrX7@6nAJ zshRw?6-^em2GA{9it$!Grg34pDMO^5x)UW`M46Lfs6~XYT6D=G&DXG(Eure5SCt(W z7@Ap}vs}~aG>piaoEwYIJ~{Rrv%nfX_-iv1;v;6%44b;*)omUwe45o4J_4%wHeU~Bn)qleK`wr`WlIBpLAb1l#B~XBf^S4qW!8)KNub&ju5IXF|@*&ahcr^ zG`Q5TKL3SK$(fyLFU;s5#q$YmNL$B5gLxM5oOBM~7J-U=^^Z0e`wG~Mwh+6;WeQ7N z{8o>Mt4s~5(G7~kQAOA|A;3gh`EPc%S-Ipu#cRKFrac(iW)g=j6145V?j6V2CQ;j|1w z5Xdf@6jwp_+9j&D#zy9Fz5vq+HnUgZbf<)s&n55wTY-dN%QG}wh}X)Tq{`z&Vr>+` zT=PLHORrs2ka)8Eh@I4(H%0YCM;wmM(;XL^t3#SA@Ni5;B^xi{fY((;c;HM!wix67 zC12NhRQH}vN&iOhUQFgn5x%RkR?;NzY0J~=`SHDUJ1}-ue`R?>X_!>YQhB{}1ZeL< z2_Hs!j8A3hA!RYVI5nX6HvL_=E{5wZvj~aWQPOx~AK7Q4-xs6i%f~im(SXLc1Hack zWQs)DEbOdbmsI{)mQ!&7s#Tq};i4<72>E=^(Kx1)^iuAj2uN3;3Vknyv(FAQKi*Giq$F`_DXlM!NESf2Uymj#<0o&r=Ghy?D|eld#xKa{Qad1)pp4 zmIFc#Ez)7>4Zg3DuU_pt1eW%0E7 zWtK-LLm}U&(TmMjt`uLfT)fY3{NUX+@niSkf-Zg3#hL_!gn3nKOr4j_FBf%(G=Rfu zokumF?X9=OSCBWyyLZN)EoSNoiH~kCX9ILcVx!bC5I*-zyUIuJrB$NtCmeB`9f^Q` zD$I2@&yhA`7Ff&cbK~@;MF=8*l>!nhn}IbD1GiP8kFARU@^L2tzfb5U&?4Lb@7(-hN%ss z`TVySGMUqz-AeLm-_nD?@Z=#OOXYoqd!Flv3w?fMcz2{ECj$qagP{~W(-?Z{!AZv- z+PimZ{jIpSf}KmK+#YVOkN0#)!%PbU?CD_9qsS%b3ymom$lGfFD6KC0Nd|d(s~tXi|?yaqQ-zVjDN_> z#{OxfN~t;PvxGz=Zd7n~6!wFP9(A!__#{6VT^}x92dU?kJQ`I>fub#SiqoF?GP@{^ zX|utA4r9}cVX9nDcoUyz!`u-a1EX86Ocl}t69@M5_jBSW%QX2+j_A_}K`2ZgAJ1K9 z3x04bT%~?`QBg}2&+j%ffSJ4&ix1|qOvlKlDg`CL%7dacgjG}z3bCjH2|r0CJgi8H ze&JOjOUoWvJ1&e1H+Dml@Y>FL>AY-@)5FiB#n`T}>b-NPBE4_qy|DAFs?s?^nP)2= z{BzGoc(@Sj?z2sn!}BX**Bi<&CfvS1a9Ml>%YYiYz<*NIFy~r5%&O4rhwGBCt}u(Xp5p>oQZ6JdTK*V;_=)UWOSyS zq~a$w3`aW3<*7)B(m2X~J=_RIiTACj6u!78BA-WQKPkR(ei}2K61xx`)^;R95X_B- zHud#rxMD%}0{+`xh+1NpkB$`n00a~4McOqK+j8X~!MgD`R1ZGk9<%V})^@E2t4 zQ@N<@c5p+K{1cgPHGeY^6o}+x4TCc*qv1JYwjzK>@eoSHh67FVK{IMY-NpaS^W{IJ zonwqBP59-yy+;b=UKp-;v|A zEfeQ(;n+R>=mu8O(hP^+HBv!NSD1A&^=wWy%T!1xmwQ{rl;r5Z2i~kC7zoj;0>05b z-obvSOQcoqgQ}#FQrR0OuXU>3Qo8-lhDyxEae(gcyU>WqctRM}8jyutCCmJWw%q!n zjZ-0u9HU2ptOci;MQ<&Lqu{g<0U}9oTgaT#By>_WvjFD0G65)(1%u0$iOh0B)ud2E zYWM>Mr|-Xj#!;FA=Boa8&ug(@#4oKOklmCI$0vn9=Yngs?C5%v8ZoHXVdp4NS?tV9 zBSS8u9;gZItt(;bP(I;Si?1T7yj7pTZJPDP>YPc{RGH};vhVdJt`b>b-})Hz)2}fj zNpYNSFwF>c$_HCEmw-nPp)#;;_47VUDUoRIp>%>xye;`bh3rzqjd?9tb!&;l4J83E zPaC6bhXBs^uH<+No$0}dy&B#HD5 zc=r_ySaJxQ;1pRB3$f3oVHtM}e=7u2v**=5L;+c2orp&lM%d;FoE`QWfc`;xs(Ur^ zMI}$2sK)MYFvTAdRSOI3@gTLZfQ;TF;LK{4y{GQeLB^}}69cl10TX6%D?up6;YhmU z-2=7C0EIWK_Y+oPWr+De&y_F41jNgPg#V?8!{T4J07~i#bHhoQo@RDVjM{bm?KT;U z3}nhEIz<-kp9!@r1Exa{ED7Or{Vzn|`-6V}3;*N<`yBGh}QWW|GFB(h; zd+%j)Wk$MH_G`u(d@=`Y4^KLR-}Dmc07*M-j+bw5hIEL9&-i6^vdz4=<=+=wG+d*# zI8?sDYq50(P2k>p4eHTtNA$K)(LazKE13vaSm5jB7JTo5LAL@X4Gnp<(3NDllKGle zcgLyJX7j*Y*)KY@&F6qnd~0ph-0_a7t9#w8j;eL;R!=#bpR&2^ck6sdb`?q(=v6;x zMXJV9W0Hyqmz?FndJKN<%!IzNLIK>Vcf<5JrG$Py8E5Jlk0S62#TDy~3kXS!w~d(c z-|b5WCGB$U!_8MwXuXe0vxZV;baet3xC@y{_n1MibVNq1xTideIsK(j0{p&J6w%Rq zK#h>8_+q=9A_C|kM~Zwd4dS-U452t8E9;b}#fGkZtMJ@pknTT)w@Qwoy{zs!mVprb zV|Mj_DN5lXbewk+3hS+;+#u!@5EtDV`N+<9=X%F3%vb2a5I4g1J7nc}5%%E-?SqeI z+l}9*`+qls2p0mqPBY(tqJ`2KT!lwO5?X{b%Zy?dtQe8xN5lubbqOw{eaJ605w1&b? zNYj3SBaR=FI1UFh@)HZ&fIYX#T;-Wa?#dpWI_RXVT|i=4u6{ikDG!-enG1_GnBx-0 zjq;YDdNt-DG|QS>STnO_Pee{avLf}pt{|F4oKd?DUqGtTJVBF!X;NJ)&K*9*8z*e_ zEc028om<^k6fo=qFOKj;Rup%4M2NbBco^u?+cOYVNkfInnn{kes}kMtFZzTK4|-Ji zP1$GD_5VipN4%w|L+rf4jp_14GKfn4t5v(RDC*(3c@RnC)f&>S2ZH`)87oeCZQ5YZ zJZWY}?sGg!WhK|G&g@Z0*zedlcg$h}s)27Ao1@YN378A}_iID0{fP_0M4P)H)I-2B zj;Vaxon>otZv&v4djBEPuu7X-M0|pXy>2sYWZGN`6-fo*R{K{R+&hpx07ievggpz4 zNGH^N-BURq2za7|n&+f1h)~}{1{5Zk=qPq8X~w^ooJXq1$^pHJh7>2 zj5+P(K4T${!RtVHnsjUXIcF4E7w5b(OY^D$*l0<+;S$i$3{%`5?UpQX_?ba`wuji0 z{lXM&KxziKe2n41oOi>5!y>%E31OnAyh$E%ruh}`)ssK~YbMURVsXzuKB32u4(Z;U z&zm?vMS=~F8;la9aWEF#=@LtTV&Mc76$Uhh_?=}CCK8enzLE)`d~TYON#ZTUwVT+e zgB28;bQ~E^{!j9#X^jE+*|X`ifim`I_lr$XmfSHR%qe33_R(!P{>&_Cev}&LHvrf( ze)b75mhYzklGBA4fBiWB0u;)0h;NzB`QX{1XVck=a=Ca_SwY-D4aN!KbH=r=j+Pks zQt+S<+(ncWV;&{Y!f;{GJ52%U>%nNmxBiIO73=D;9!z8$S|S6J)lb+;?+BCCQYgpN z2DzDd84~2l{q!L(vw#w{s;6;;4MIt&_J)DToaa*Q1bKc4<)8sxPF|kxo9Iz^pPenB zYy|9QL)Y8#$h^FdipxeuF1B1d?+34s@#l-YVM&JLr{)8{Wv0(}S%eVZB$f5m(enIy z+Q^x*@BARVeH$ul^!{_}jla&#tWf{Ay02(9)pkx|XenS`AvaUa+@72gSK-7G&@25AU!M*UFcdwW6my}o`~HZ_n9$|Q6>dib z>DwU5)^R0nHFX+^E70_!C2gY6XRtje8@tK+01k(n_BS0A5Pvp7&T=4*{MTGt&iSSO*o`Nb$+kVLO3aK0<2>x z8P8`8Xb)`VPhtYv*in)rxdm)c^BV4levjc~c9rz4{r&ObVMj0LAyp1fh2APZCAMR^ z*wVB6{L=05Jdt=#gn6dJd@B{1>IfpJc#r2okSAeRHAkpaUe1`;P=O(xh5olgQt|fr zcNuQ&J^E@33rVkL`FI;^oF2bHMH}msRDy)zMWSDk+$#hWuB(4>8eGB2@_!j17%3q0 zSw6QmSWChCRA+CF4$}5s9<}MZgXG2Ij+^F)aC$eh%m^$r3qQB5yg_M+!2b zY5I5xCs44-5l}+&3g1XfwdHy=#6GwWB^9nUcJgS_0I9;#{g9|mN$f6}*SMDr6ZTG> z-Xsb?VovmiIRMRm7zOt9U>7m10Ef{~s~POLrtRl~zX?+fq4Doe_O8%;^%lnxiyE*dW)f)6sk#d1O{M*pMBYV*5!ys zN}9F^H8I&_KpsBhES+s@W7_Zb*}45U`okfB28wZ<{rulW*}2%bnl9DuHtv>J#@56? z9c`|bP+y}>ku8Xggr@&$B=RXW1#vg?&}v1qy^hvjJRaPQ#nG72E78`=Du_NUG9PN>kHSNt%J*gU7(ZC z%^^JB&datKJ2O7qSplLei&f*)wvjQ#lUS69mU36_N z8vuSKecF{IsuG!1zSYwb7pV?C1&xn)ovS`d93+>!0^R5*DuENX2et*B8P1R8AdEk{ zZy>ElP!tnx?XYV;Z(Y~G2h8_<0$ytcfNo&Pamo|^-G1Usx)>D!@@~o=)3*1BI8Kns z0rumm6eUK>+!~t~7r8e*z4sYLyB0W7-nbnyA;$abp0UPvhj^=iz+6!A7(P+dP}vn$8W;YtLqt zin;w`dlM(k0%RainJ&Sm1*n$H>?@i7=Wgml$iAyf(=Std-H?R zin+HOvh3@M~NHTw|5E+3bf;em-C|M$Z>YBu{ z4*@~|&}?ZBr~d(nZczUI3iPTD5|F{-$2N4H*78G+h6vVr$o$*U(IfN?@X`;&WnxSF zSX6BrM0poH7d;uA8ZXRxiG+?JhC}Ik9=F7RrwClmK1%{bBE&F$I(E;gA0eBQ^~UjZ zFM+%tAy3Uwr7EMJj7x8JsRtG4;%_Qy46IY*MeN#Ezn?S^_q~8tmOANld+|xJxKepJ zp%cM~l=4K52t4BBlstIuz#NWEm)+#DLE>(`=y%7HxYBlkiE7d*3(y>1tu6$+VoC!^ zU9}k{W$_TxkFpl3?xsO~*Xe_hZ6{}nM`-N>-Q+S`HhOYbK)3+U>SLqMg3<7paj5i9 z`FrILA>r{b!MN=@6HPrhi}#w0O@qWlXy9VLMpkh&&lKgM1{l0&v&N{(uNLhFj=)yh zd3iLLseREbPOHH!jYK(n?N7jv8Ihc)i9C^LAp#dg$dXiJu$mj&dxS)f=w3p|H3mL| zIzcPW-fo&T*9biM2DWjAj5yd|cKak01em^}v5}TME=n@e-)$+WlUuyz+A5?Q;5gYk zu+na~DbRC;8~dS7ZCReExyJP4LY?LXD&DVtl}ZzeudZ_SWJ$gmOp0ta%J>5wYD}#G zK(kySCx?YBnBf6RO$!Ru=JOFdkAe7xk-?FP79QBu7=Fx78c`z~s_zNByfa}GRBT)) z)dm+<^@zriO>rDv6h)o~ID1C^_g?mbt&m6!Iu4F`!~64`>Mw{d^q8+!*SGP*5PW!{ z^R%U6ag15zx-pb4WxtCQnBqTc$ez4|juS!19D9DH>r8)OXt+QfyB&q)c>a~rVSYyW zm=M}`e;0*BlFFB}Bu}Da0exY6KR>-*EicYqEtj@-sIDd6l!Zn=Bw3*w|6!Pt!fo`x zyCtat{L;;4I=t;j;h%iKY5CG@HM5?s|GW=k@A@fvxyk4N(#H6d1}VG4-A|1Yntz?j zGQ-TFpD*=sb#%PYrOnOFh#v)p1&2VDgM)`9!<=XDR6O&~q3e^Hj#LNL^b9VJ5<kB8P+MIE_^x9{zE<_8mpc|HGzKq*GqbTG0*qg61toPQq-}e@RbuZ(p-I6T z-fpb$>RZEzgnX1l%gMeBsvgcrelMBsL&_`pjXhT@ON^L~E}rXnZ(g3WGBY8-iJdGZ&!^d&!SF(?mpo>NckQn zi9NGR5V(Ma z9kQ7yqnmYVqKumz1&2Kv$oyjX^2F^*(n1c_SEg=3&})0G1f~{q7VKQ22O0}A9~@)s zm?rm9aPLyWt<)u`pOzlCN>$`+n620G(QB<>vel9BD|i)Y zD24i*u6+f+998-x0>Q&U+K zuD?oxQ@<8g)!sNK2UA9m!;ks6KQA7S+|#c=WcO)?^V27c|JMke{&8(oM-JVd7GXOt z=6)UG_j7s=9`8nxXu$6#zG5$k>xp>ky(v@W!b|WC!*|Zthx5bfpWg=sXHojo_QFW6 zKS3&K1w_k5zd!Hh*wU(eWKg|jl*n>4YNhrkm3{(hEU6x zFzU`cM}@`nha`Qlr&j4_hG};WrAF~mR+F)aarT*8c200!o#WgHTe33(_Zbv7WJoeG zS6H3nRXDFyIh`ki1tcB9<3clIy5k=`*Cql_rE*LbnN`?F7Xag*qiWb= z3yM6G+MCU1YnUerC7^l39re0#g%I}grLU4}Qr`+nF!Ur&;E2)rH4!AX8+I3`A89Q( z(GD%cDNeT`QVi!l^TM*Wx~S3E@LUm|qnKBO@WLu&a|yBZBtHHym zwqD%b+gJEW5^Xb0SN%-bpIuY#)T){$U#-;sDH>{>5vH!vq@d(%5=pTt6pfhREys`A zxer9X3|ED_8xH!Q1Wk>+eCQ**yAB~yTI+FV9Y3Ko%{5Ly6W2Uu~94^5BTHBw;5gX0O`(ZDynL4_v7 z2s9{%hlHL!>t_L(`$UWZmcgSeUbh)$<1Ppy3GPgcAWoajbsDY>{yOvtr)2y`4sksp z8|vVAEEkMU8F!AmsyGC~IVbwVn7d17-jlbdZHdW)c!%UJ7}b0+5ft9~69UOhiR5$1 z5qKSMp0xE-j?>G{1?z14NS{ZDL)-F??Mq=Y#qVUzw-C}t6;u!!?aP3wG1 zQiM84CKZo;e9L{xjy{)p7W=0_cji4e8XeCu2p?K4|0szw5|)dX>xD0d-+_5&D};uh z22O-F({4ID`#5k6?1Wl;GP0#zZTT(<-ctp5%Vv_*N@u%Q{>j(qHdg5GOq^@E!tzby zB0J%)C-g(4_Hc))L$U_LKy#EnlKRhzw#J)m?9~>7bDKmLC(rL;o0+p`G4d?wdQxj{ zd9gdP@F`p6$)KR4{kY1(-HOP&!HAo{=Mfhzj@TtQQ$CSFlHyG*h591qr0esY?+mBj zDWIkN){PQvoi(HfUULFw6H61^VHR);*!2>;Ym8HpF9G3)RsnmqOf#a`m+F{@sYkBgrww-3%P~4FcRsEc5ZUs-xQ3s8Y*_Ie zPCXKTat~$Q@Yk#9zj|5Sbm0{rm0cl*CwE^ewr&_|zF*-j4_@!3Dg3X;*E6yz2D-uk znHp!SsBnIf?OHNnUfBtlngu2lJ<#Y(a=20AD+uzi?K$N?0B?dT1e}KH)#Nz+{V{Av zPio6DOS3k%O5U9S@wbJPO5pMs{!>co0m+}iy`Ys-7#;I6er7?R8+EW+)$;7L({3oT z(cRXxT7+#~hO0AoZa`LzR9*|N*U~?w3>th@ zU=@gt7V7Un{&Ad;zIyC@iSQ4kqRFKPeS*sbq|~(>C0TFC%oSO}^+nWTvK}$4GxdVE zr){o8Fo{~c(`4Y`$4PLGW;oZI!UP*qd$#_Cj8$FTv}>rs#yMtCtHidp^l_>xxEz&R zR`$0&v=7(B5z$B~o2h;QJ!pt9cQHO4l}BWVgE2x=aUbO)W+Qgux`vaW`q|W1YxFo) zq0{IVM!tkVP!kjiHY_6{t?n43BcE072S+F^tPU>^oYxE)%{gZK=j*EVlWn!Mkyn}= zq-$T++|jKqAg48C| z-_$N2)YZ>*LOFY-c(U1AO2w86vQ7IFBQ@i*dU`p(sZqFBEpt5;ToE&!ffp0~vZxU} zjcJL!@l#?9PQR;}MMjYUA2w@`sENu4`oCZHbf@v;7!8siLzewH8S<#pkV_K~CXp4u z3>pMIO{z2at5yvZge{+(hMN>XqO93MDI|`)sU-K~2{i>dH`_b`*EZpw*6VPN>9v2I zd_kJALWu_BXRmDfXIH9ruw{Lm;+K;2I2adS^m3i%`ssF~S+aAm+NxVZqu0HVb)rX* zlE_x2l=_4(otKiuS}F+I@+zy^k!Si#s79}#jd8dC&M`@i3XK6=rPHo)tcx@Tr;vcz zv$>Wbg9R)&8o}pc1nkjd|v+eDX%L1c5fzH3T`X|=AydyFH>x>ryP5E=&wSZm6FdF zzaColWKN2XvRpP|7otU7(bMtnA@Pp%{+xV!167_kN2P2d&kqBF5yq4JAa;~h21WJ| zEyQed(nNBAO|dgtFwf^F7*;9f`{Z?`$jFY$bhAlVA_}AI^j3;y{ngNI6`!ZwuoMU# zn<5ZGcC3vloBX82silIA+$?2x$#b>*q7>S=NB-!w-7yY5-h8fri8TY|`r1!O(`vDPS*gQQR7j7t^c5zW>{jk`+;gkj2xTf_HE>ukf9J6c+ef;fm9~d$ zim(U(H2)CHM%q%~w7p(dorbFbRkBDGmAu z3`i4_?*~7}(eXt*H{?uIn4p)WJuzm$0RiSUSP$^OfDLKc^Y{%74(=KXsD)KqtPuaE zP-MT1J+R|vOpy&bXOKR``*f!iW2zIada@DETt1vvGZLCRTxXyQXZB_KUG_zW4v@!n zHG(0iXR+Q~YHAYo(e&NF)r;xZR&bZ7v+y1Bi0&=^QbNb8$$KtuS3V#lZGXHhSyzD* z7K?PVz!0sp&Fd~-l)h&rL$k#}CLBP-@=$97rtdF^2SV3HsU&)3aa$tDpe20s7UX~5 z?W5RvqHsaVtk~o{pLIL+b3Phli`#G&$_=!eHsDaLyh(?@tU<&P{ZMH>B5f=SN7Y{u zBOl{!%a|WA$HRYAY!L)brp4`b--;~upb@8P2Rno!*ZjT3e>8~tBvE>lRO%GsfJa+? z#lsOL|K+vc#vmd&(_6J3o5r%(o22jXBrUB^7k0BSWyH>FbCS-uIWGxwqhr2syGAIb zKx63y6;0wA3ytk=E2E(^*1zy1Xs}l2Tgf>Ql(ZQtQsUp~wk(1^S7`lL_`zZpYOSOd zBur&U34;HgkJRoXUOkl`<}m)uNes4&R@)7{&3b2{FTSUt5{m zzQ@ORaABYNRQuyM+U%%U%J&vY-#vd+qQ{!fAv9ijME`imoWe*J*%e9m)D+ANG2X#Q zRwB1|hNfu;>WU|Fa>m32G4oi##Y*xe*>L8Y^lDboY1bILN|?*Oj>}GDS=s8431+_Y zG*4>lo?m<&Ixcq;tZctydXDTMmPkTn%qy+M!2D-EeUYyT?wGs4?=Sc57U{jnXJ{8{ zkSjDMsr6-AUYYMn=Hd2{2J)N&dmJdt>I}7J+bVb;s1+<^GEqjba*MvpsVMza3JOP4 zO4Is`MYgOYjHMa0t4qk?v_6vG&qcrzCRL8be(2>wm6f1_+1o0`O15NPE51nf7Mj{Enj=6jD1K&0hc-eM6EHkvlG!RzM~D zRo)+du%zJxkWSwn$gg|~{?ub3#9$vTu0U%?Fh*y6XE4>cdb1qhUjF3@x8{PGOgO zfQk_CFQ6i$`NzCKeo9prq2C9{F`35aiHF!}OX(Pd30M0^~5fCn0b#5AuA_W1hE2P0}CD=sDqq#Hi=Hj>DAgFvgFUkVX)DvUuWP zZ~N!Yo+#zQn7*9MuvCpXY`DBDhnFQW%iZ2dx&!;=4iliCrj|W~Q50@ersOmFq5r zq)&l%k4ALZK20mF4?INXudW7xOike3M;6kA3T1z6*d=<9Nwzw`N7>ySdG`o4*0Wr@ zC%KI$-y&Bz?Xum-Z%`0DUv2c0y8D#lg^NZTd3mb21O*1iS2kKKcF0{ypyW@4t8ucC zdpQPJi(Ph{zHFRbbkv})w(ePCC(mR5f{G+GIExc13+v~(E$(QaQyk=IB+=gGCS6L0 zx%S4j2EdA2Y?aSBNXNQo)c+5<#$AQY~X+}E-ZQAlUQ zp$g~&z33mVa)ALF%vPs>49fwp~CaWw7s48MXd?*%H5)JXC=lnLOb;t$1nrU zriG0<2(>h_ACh5gnDg-3@BYXGnbzVfpo_1cHgrPS;LD(SmqSnyf29KZI8SQf+%9|* z(p|+suV`~olUef}#|>IdfRjE!WU=~nV7I#`qzMX4$-jr()s!wAtqPcAd#2eWK*r^IQ8IgY``|K2kfhF%!roZ5 z&bIH2SIYLi zrx$5Wu`Em7JXloQj>ZC!;nH+0K3Y8wMd{f^UK=Me%P7>oEB3LXt=WhZOY3|owQ@CR zqhlbEy>h35N56dMa8D z54~(A&cPx7iredsfTZ(#R!usuy`-ok=aHA{f^M9ZyN9J9DXgtj!||5W5>x3&kN1L^ zgxuKziUtiS>j2Ic>*)O$zIl!X^`<6B3+pK zgV=9z>t;ci!}s*>o*`fvy)4~eeGR#ffkZNp6a1$d-JDAF17gIkm#S_^mP_r9Q4`%P zLz`^sZnJalFL>o-Gy>H(KDIoRo8r|l1j)x!0`7wT{$35($MHBYjrpJN`LITUll6_P(tNq7`+WB*Yjs$3xb@NaCiP?v{v!rAH!c z!Kk03i3jA+cOwd#NYg|6Dq=I*RY%QX#A_OpsItCCCreR#L4LMvc1uSv+(`vq74Gn9 zp?|ReG;WJwOfNsk)l(hod|Gk4W4W?(r0jYll>Alv8nRxWA=hCnSQ7$R>ZZ*$%(X?I zetwewQbTdJO>7kXJB!`1Ym6WFL3*T%=RHRp03j8+V$XeGh5xG?ipXK1O9e#HDJdhp z!=+9QmbQx1(F(VGkFdkp2O|$w1#|%5)Vm3D#p^2-3_ueS;`J$_tT7#xkHC#si*D2s z&KO-<|3IZV*?9-D>2t!e53632z$aRbfQZn|9JrM|?RrSRfN3WT0FpNgC>>aLzm=*u}p0o*2YQKRuhNds^Hoo`y zOtqQ?{s41JR!7(&@?lj7OLOXTd;~B~%+qqd$FIOsR*KQ|iNrh@na%=b5z)#rCry{v zCMx9!P0H7T=;DD)cqB~%Gi4L|%-JD14`CSjDW_7-m-0?SVn`z(-BV3k(yyb^rJHbO z847J27^Ue^nfdPtCaz#MCm)U&5E=7#(Y`829u1$6lB2N zVWwrcsGETFTZetzZJ_JUAB`>RmeA&L3GqgnQ?E-4ZV##2eOE^cv~Opm%4%=lccE>I z#=+E{1Y2AOleDN5`!L~Zd+99;_EGlNp1&TXTok^ua8}oI1>Q}f3klsTLI$IslY_`w zH-jr!Mo?t(b}74FFF9BqL(0XlE83!MJJ^AIz3|n=fyo+TC%a3Sc*^aB4G2v&`&il^ zn=Soo^OP-ejm|uE-x505Lb$THQkYwBj>GH*AsJuaFp!RV?WR7)bLYLUae8@sTG zH+pVftj-YIQcY9;jzXeUq1~AE9q2hFveM`PcnLJ=sgf?jl@P+R9hi6r(Br%p7ufO~zRo zn@!U_6F*^7jh-7Ytth~jI^jx3`lxgH=Rg(vH6;?cr;2H!2cs8xQ3zgy1K)v1Od39+OpFlkMH|e$y_JAWx#Eg z*AY(5(u2vfawILGM{a)QMFF9oFDQyn_)YPG@UT9P*~v*aRC|_R6gSunX#Q9jP%fQw zZTn~Z_xbJUdb8J$gWJn-#Iw6_OU*lN(rTB!vg@~SCfer{G*@^JMj_G^exT%FaqawSa3Y^TZ#5`jqK^gC5Ne$Mkapbkf}*)1)h0XO zVj!z4vy9A$#1=FhML5k}(&ZOnRi;MB3J6`lFIk)@yqYJEjp5m-SwGe20fF)?<38a~-*Fm%mFj_Hvy1gF2408^;?Czkflu&XRC2;CgkXmD`}>*xa}$V(Y)>G^=26 zTib@&Z`_oFJ8B|kOm&1qnewvhcAKj}iV`IIeJGW9hxqG ze*)z84M)$d24t=UBhf2<$4N(n2DrvZ1P{+^djwhJ-^=W@5HHoh*9-{>!NuO2-n(qd`sB} zL$>4<$=Zm1v1@;{=PLB2E5|+yf1h8j%Yh$9 zfB?%{3qC!@xCx=~AY*eozA;oD!W~f=t-+9gFeAqlnj0BY91IH7=e~^Z!utdO@kW@W z;i|%(jepm2I(Z;X^OY+)6ft$;Iz6}PwGS2}nc{Nt$49enV%cjP-K4dwN{(KyiK6Z1u z^b-6>JHlxC&Q!*_ja%EU$jYhN!#Th*!(13uBfT^y_Q$gE@&@TYmq=6x!1BUy)`gYp z*jfgJk~UW9JZ%I*Og2lIvF##lr{LX!SQIo1+CRihx(%I2=qBC+6Q8NS5vsn6Ppbl{ z73;K#k#NixxbrykrS&>HK82$ZI<#^=#FrGdGPF2i3l>-w;%`H#j5qYr&0n zuEpdW@4HXEM3~cy08Vmv z6qzRcI!^D~gKF?JOD>H`*+ae-O0QZEJZmYKd*2(OcOWWqg%i!nXU5d%580keQe5U^ zt#7caoq^GM&OOmujiXyd==}=xuE;f$gnf^*=YvjpRgN2N>1=5_vN_~auaW8Tq~C2V z@I$@iv&^$YR)K%%e8pPulZv*m54bg!<`7%KXNEJ#)9G|QU7+vtlYmQ4CNXVs(k7qi zdLle8Rb|!nXix|5g@U|)q}&{WmJK58@$nVBHRnuQ&G{ntb=s)HNg7u+L2XCVlnAaUBm6G>5ZnJx+c(DXZD zcoV?-z)F<`EjW7o{N>J`%cZc+UVk1GO(jF!OStnfP42VueUfIGwQ3;>z{p ziTLyJEtV+`N+MCiO zS}Kk)%4i5x)$$dv<-x&ww>Bcq4=}+576$G-OiYpT%DydIb_tr4utS>!#F!wu1}R9= zN{KU{Qt!tM^Z&U&Zs6vY^7C}hk^t2#DZnvyAr8Ix1^O@dd2+g90$3-odv75{XveNjuu4f!9u<{Y4F+VpuFpAVPA^(~BT^o{&KY;!%t7owP>GFIP z@Mjd@pC*9+Qy1oF7SVr`|K}q4_hf8uOK<67>fz#GVn+YponFS!$=p=b#?;o-&V|m{ z#?aZ>G`<^ZKmZ}+G=|LTK;P0hmj#bccuuMwf#%9+YbazA{)C7xI~0CTI1(EXg~kos ztT!}s^wABxzHcnZ*wDa`!a%+Fn}{0K63L>|+n#(*zOv5z?~Yzyq>66t7tw0UW!t*L zW+7jAvlNPRva3U!Wd((?Q65;jfB_m>rVNX&t7nW!(L*{C278W*Al~FOVM#*G`R^<^ zJ1B@257;Wh1`axIz;ej*3Z0kFzD}2Rz5ah1WZO2~H2!of|&^!s;eH^m6 zEqGY(A9G}jrEt~Vdff^y)!S|(T}a^?HSlSxfmtPIIkD82Ar}9FrV9#lSW7(!nvQN1PFj%}?7{P~ z7R1Ve+aZ9V?#w9kX8zAxVsP@yeT8C$Fimtnq}B(-YKoBFbLuoHDOaTFKrH~o5pr<^ zCoNITS>L<2@pNazf14qewzA$IgWWtztx^;+ZmrPstTe=$Q{^lgf0@N|Y}@p6eiZWN z+|gvu-^PuSdz+q8j-q2W!MV%0p{(CVmc>eI%6CK`u0`z}Sv141ymypM2H8QAZs*}7 z)1WU!Eb^xFPnL7Qq4VtUCSrXmY&ft>`77UqBW#XTo{PN z=GfK8W3%hd?jVo*M^%qwaldim3pJ=>P{b_Om#dR+K3Q_-q42tUA}~4%qNvqzmPxwD zM~B04GsM#7jp8a(He92bujmDe?twnFGSy|yHF9y*hWCi{OW4kKjKA;=PW!d+Y0A{5_&!Cwadw948S7K{z9-6b`ORE z^2QJt#Zwx;_9Hp{h%u%QpOA^CS`Z9Xp z#j4+uPuVW_JQz=7fw$?l(M}mvUPr#~`4iv?{7wsiWw3OZCjL)JbLr7Z#})`2-JQ6n zVy;}LGf%}YzXRkMZjMcM_AlI|E4dAF(KROKP}(|eS`0AO{qTE4ifFJIeVPi7zg&UW z3-k$9kbin)NOcef_dIJ|`myq#iv2P?f3GJifar-`j!kNxW~K2rB5w}>S(IEj4T413 zc~9YdOP95mxTh3qIh}8u7ffRQNCQ6JB7HabqY&@D>fF&C`e-Qr6psYP^pL0I+z$xs1|Z^YVLEWU#1=fYI3ec9-t zu2ktmiju_B7wQ0e2W$Ni+E@V_ohznTE74=rA+-b$Wf2$}(49vX=Nja!Iw=$eEO6Xm7-rN2NdpuLf{3~8SEiVcA`~I-?yicukZ!z) zjf&D^knZ_Qd=E4qQgzS~&Kuw_`^K#_g@Iv1fBBYXf0IkK2?r5$QQw^wwKL9|WE`E` zdMp2c{pSs(dB%bBzyJV#;Q!Mb{%?Q8`G0$ZrSt#x#cmC6A02VmpOYJ@&W-Lyn;MeM zB--^fo5@ZklugG2k^abPa7B&rky$NAq}t-t<`*mVbzR8Gf@4I2<^%yDNe7_7Qo!eZ z3}IqUNKz6IB%uPx_*N3al(dB~@d8?3MX3Fp_9k_8cXQ+4M123Nt;}}k9?sKj=F^-` z{rBghc)&F(J^TSTAMy~sE|flZ;k*43sH}HyyPnZ$euu~SEuTNx{s$-EfM3oCzequm z>7HMM1b#!a_~7@*em~Ug{KqHeTVL9sKe)gB-G7`P|7?As-+u0P?f!<`_r8I$|DyNN z55D<-Q3dFS&xfcF011JFAPPb2nFZ?4rwxq8{>f&tn}8Gn5h9|X^1y(KtY?rEQgLdE z$)?h4R3x@)N8bl^{h95B-P@7M(;mK5b5_O|O1FTBU+pyi zjRl-X5rUs5TLB&V2v|cvm<9^u{q*vBeSS$e5e7=#&UB%(FL?~FUUC@_kAV)13J$hH zln)>SgNJ*%xxBrJg3i#r?_PDezTq{1r-r-P-t4UFwDzZeKJXIyiaDR!5gVjog+^8AB!jwF68sAqbq?V_G zkv~P|42*~#v##D63SbqDhDV#d7<0W<_;}9SH;zR71c@O*?9ps$o>Y{>)%c~LrSE0R zlsj>UeA8;fA=2(-E;6xJ<;j$TnJD5hfNgqSzMqOn&PqP;eZ$&?^(%+)@N0zrBy78tC0BYB(`B0nVR z{FAdVVcz%^XS-dFcsm{=)8um-nK*>v4c6%_J4oon}*Q zw|%f6&Uid2FPF%U)?2PU!DC4EVw~5)_1a($^(pE-Us~6*V;-ACyxfYWPi>~3fEioo zq~fHw4pB6pT(<^E6p|(fRZY21=faSDm3R)KDB&FqgR8@poLfxb$TZ*UAuHJ~8GSd< zF5)*A$<7nSO*ncqZ?sgAk(WjFM18KBP7OhO*uV`3YFRi7C;GGE_acvGhzea`5&wIeq^$}|Aq9O{RrylANN*@ zoi_C>CwFXK0=?*{HlGI0xvMQ7-{ zWtdAZ9e4rOSl|Lyjc#EPImrR6`{6BQQff-ajnK##vN|nwu2>d zt^rSeu3+_8>T2G%hj*qkbPAAJX9J?T7a&yaVtV>scC&E0Hr(~GPSOuHf$q~puwKtQ zNLo5bptjy?&{IB4(r~sUx=9qeW_Hh%Q=6=EQ-FK`8#KB7$0aI>$MffB%HYw{FIs$;pe!=Y+96+!OZ|RIqE85kL!n!z++R>Hlytu;r1Vm!r zlL3AZ)icN}qR&4;gvrJb85+f8JCXnu4x?ZvvM}~fGvcr_MzRp+undzma1v}vq(fH+5h(|tZ$qe|r zF+@3UdLYQ=+IGfvPwDqc(qnNzX=M?|N0>EpI0i%=MHf!#)sC~{A;>2ZI$^{^V_-*t z#w!quloUr?U+a;`ntG+MuO+s7?RA}uQqg3LcD^vLU!2spq28^lB0IExsd_E0Ll22i zn^oW8kyd*jB6_|Lf(~N&u91b9Bhd2GtWg-9W8in6H!f)JKHl=oO&ZA zE2}YB+>(>0s;OH!^!HnMBS*_lu^^2M+STd_vl=VB1B_FK9{0A1(Fx-%-1{fNn4t_#G@{nXiq7sQ& z9Tn5PVOD01l$WNBSlOKyOtEy7o)8c%=8)l-Oiy#pvDb5zRNS`!_Z&}dnr@LUd zn}2xtv0n=FeK7al&bB7)v+rZ1KVA^5%08d1d!HW$pP>hzqfEZtNr)9Ugu>!6e?CJj zFKO6tK@=8Be8Kggm6#UZAl9IAhN!MspxNdN29=+Pl?5JbFXQkZCEz|K zq?cw&?p;ikaHfl22(Yh+YMYFEeT^_UF^4ROj)Q= zoK_2x04bmJib{DO z_{g<(#JV=_{7f(KPz{LdN@}xsYL6r?aoFe#7A$x2uO?RCMM3-&gHZFQQN4)Z;t_p* zDTV#sbuaa1klyuCm>J9wn4sLm^~RwE9+ddYdw35|=m0fv`LL)f*i#N_!xy&P=ho3< z3aEGpR+1=r8k+P@AnT!NlXWrD2kcb1a`LN9SxDENh_UPJOu`=sE9LF;G4^D5{I-Cjmz$n-00%rNiLnNSkoIe(xvqu0+Jd zCTfq%1dXRCQ(12xm`v%i%v6k<@;nYYIU<4&z=%VUW9Y4fsaIQeVXKU|k=^&uS z9hC}f3|c48N^nu+r9!jr)NqgYa!*ybNgOvldDLjqtBgZj9+?SxBKNA~qF*M5w5|qG z%LDjS{z#WH#-##IxqIS|BIW!&J~xD;QEYIzcz?p;zAjm?fg+(G>L5>t8rSX+C`ae} z``o1J<4Er>dDDGvzb2`F0a2mk)lCon(UN-BUc5bEHcIn;9jK1ya6nVTwK^i2{s7Y* z&CuhCPBd#7?fIBRY;Wae39ji@bh0Q|eZhaNS~J=C`nb?2@}m^Q~HBAbuap0kGrvCh$*Jn_$igLlv^4pW$M4kFYarD{LB z7B>H&epRZqPE&7IqJBw-U9pkcymr}$>L!E||80Z*y;+>>6U|o{i5lzSdA&&W(TePy zI(QdOPJqcv!R#dsQizD^k~>RP-(NBMOD&%M6jgIi^$>y5sWq4=Md?t|N6~Pryp~H< zp-n!en(7bBlwt%okx()ZB7&QB!hYyw8xfaU8x_juYNy^!A7>%8=w8n^}hUGKO1=@S_Clk;rk zing24ti#$m_^;O4Rm;hh^g zRMjpjAKX6LB}QH9L);QW+|s3^{$%x$Gw5Lqx$MEd64?EEzYEa)f&Y;m&n-0sEW!Z* z;F14N*)hR?n;i?;n|S`m&0&?=jWd!u3NJhabt@UxP-8}E-4{TDl=em>*}PCbENa0L z8)g;0jsfxt-ETwmk}vsB18!CG_4L@>_4F@A+!^auxYvLZr_`3=V{&-Ub646 zml1scz9BCp!B01eXCkd@OwFcgqvi4`%6}wg09v$;H z$O?Ad$IoWvtJmfdhtB&=FT*3Q?t|lHnwvFU>#(tiuxYo2dv05*zlI#fp3$vy6EEd6 zR~bDj1maF3R#6-~b`+DLHf0<+dZud3wk#!RPN5Tea)4KH!Or-{}W2#q>?*^pgHg8_!V#&y-31hmYLxnARaekL2&9oSld` z)CU~HO5wD~^fWEPjemh5G9c+w`HJS#XCLY@*}i+Skb<=EPO%wtw?`&-b0HSi_~wNO&a5Ug;mLQnC-ZUT*Pk`xQX(x zIAZN!XfP`dH%1sE#U2DlpvYysB9zGZL~(aQ8DA=Muq`4Xqi(9UdJr5zm5A*?g%n_I zHDzqH>GoIbC1e%bx3th89gYk0tRrf%wAgo?dKbCaKOr`(F^5Q>jT3w-nR!H>apM-B z2+zZV{PO&AlMh%T8V;MvNaU>Tkm2eF5xQ!;MA8$sVRrKYl%OqV0cayVNed zv=8qTW2w+1CNmTg;_2wUtq|iJ@BjllU{b8!W4J%;mMg{{?2c%lxP?DlO7l4eXk!b8y*Q4#1jE1-$B$qVJf6ob*t%A z&sUPSqmMV!7j4+vb?E5~abNy*M+m)Qay`U6RLDpdT2{+LL=M~>%=T(iUnjy{M+RDgQ?DLt^*(z}X?7ghJ7{>t`0T^k@=;U?zi z;tL(}|IM`}T}*BN!?iELA6IPfP6n~U9o4u3%eAyX^?%_J$KGB=k_OfSAzjU7F zd#`MI;q%V*KG>nJ0c?e~2cHWX0oDi_pcw|{2qX_=@lIgRF}h=kGS?`jQKFfrVWMH- zV?z`HCksjooSv}M!!u2ynQ`KoXrN&E5zf&-`K0)32r?H@k3SN0dVCj*PY$XjrKPCe zV60VFh<*lWG=CPOf5P$wO^Qepoz)C_DB2iImg42kiIYMBxWX673mDjztLIHF6|q4Q|uN|}FlefI`A4%km0xPb(lY*1uiw>DaPrC6DD>DG3U zm|Sxn6{&*Jm>28w%uNA*6X%7v3hQY$A$JV9Wm@}zLl!$a8A9mpjUrXe8)#;3)ep}t zFVjbw+BM0hLDa{eC9Eb0ybRzeu?0(B>-BnT|UZ-B}fq695*41Hm% zUmY}Jj-sW(GhiGw;*P?FdUNauJh|<}r>F2hq^Desw1v_eriK!`O$%(`C?V*xIJqmw zuc7qFuG;R+1gg+M5+*&!0VDH^x^EZRtv=!O7%3pOQp~0)XI55Oj&k>8N=RR=IHrhl zm84q43+vpdq?QtHYjP53^gQnUx!nZffT~>?EEoOcgupn=T!SRz2Ap zZ9NNVyLP(IU!Txv3VV!ZWEJ8y$tfuTg?H&&qaKBei2 z96;QtsHbPGD*9^>m&m@9%E1)c^ay#8H&dM2t<}|-&oW;Q=UbSUk?2gN%c=AXiUKcj)l31*Q<%PJa z^Kel~=2>QOg*$sH!ZEC4{`E_s%|! zSDRZ)q4Tu(?*;mQ&bYh^>ZmRDJwc~X8+91aANBPFFRJjq#m?Tcd%yqOeh=EdP8>V> zFCF;(6{rh?$$~6QkBp>>Gz#r&FqVn&X&Rq)Pl|AM>~P!dHXbQ-Xw7 zr#8g!HX-Fv^8J!aWc40W$uqg6>Ql(A-dpW1c+Vp|Zi{^8@`-}OY>QrEz6pTnB@eVf zh7E@pLNi~y?-f@hyQ8?fYC^KJdLA1+Td?;;YPlXCDa@tqq(!XXN~!VEerL48-4?DM zML2WVa%Bq#$PqW_{j})0+*#h7ldGa{x0TH*vEebPs?3 zXRB_>s$#0b&3xtR0ZLfR!}eNI9csteKo#tv?lyQc--tSY9WkI%a=Ru8>#+WyWsLL& zBJKw7In$^1ge}>=?@rsUW)CiyD@;(h8x?S19nMT#X?hXIkTvRsN@;Voxl$@cO!rw~N9UY?fs z1RQwViPWBXatWT7@~x8)NYL5y*z-#v!i@Q%(|M=EZRV-{SrRr6JrKfiU|oIKlhdW(ZhP{6w zdJdO1R%FA~ABmm{Nq#4oP^Y5oyl6|=`Pe_b4zY5sq1&qGn;q9P)^#x`61Cse4FtVQ;pZR}RR!{;$7dMfoIs4O6XUN`$3z0rGspzo@dOVVuiz$6izcB2 z^rgo~m;_eG;~t38;nr182qb9VEP{7t(L`ugItyGAhSRQ7s)JIcPXgvjmli_hoS_3^ z955BFf;$v*nINNbz*vdDvLOUQwclLc|7or-A%E))fB*oveoXd%m+zVWt$a`XUz)3p zy*a(Gy{nyzsndTLY)tHbbTF73vwR&uuU3SF1*#5;)&Bk!V&Ff_EMi2I8uey_#`g=J z)J~-qVbGQ@bS*o3-Vx3$}3#FHJ)|B z#X4+7ewnV;vsOzK_;Q$X?nwro)(jzyqT?_>E%VXLWZ$2meq1jYXIlP8x3{fk^d8rB zKvOjB_zRGCxyuLVl%)9=zkY>Nk2ANlLb+3=c^2vw)^g-J#{0K^8(eODTy6)UKrp!k zl@f^fz>ff6Of))2OsT{a@UHl)BmX|u3ONtknVVp_^*G4;`vlC`^lNiht%uGFlgbNL zXQ-T=ahWODdh7X@e7{RC*cJHgs%Av{B=^8~Rm2(3#ioE3%ZYnwXLflR;N<|B3_l>~ERm=<*IBh}9 zhdqK^sL`NW=8%1kNP39Y&`~Z-p*S>7e`T%FlhscpK78FDqBqXk~?Ko|+ z@#ay%A5dd&aHQaJV{wXlamm#CXm-k-%<*m1kxmWNNz{9OW`o6}jP;`XDk3Rw9}pxp<|#V^7S__7|t2EY0_Rj{rn(MLW3$e?)N{+T}Q~!m(7Rmj*q|Z2S0M1dg288b%CxHNC`+e6yZbz{h`rmLYeZK!^P2>p_-VE zp))3vj6QV4eYYXOsX#(QR!vH%wJKJP+8IX~xm)t$BUr*ycI-_FYwTB90C&E5T4bx# zH)^Hlws%u~-2IacJ3;`P#B04&Jy*P{pgES@x@bb!-aSE?!k15}DeI>T?@i zas!)9X@Vg&HO#Q650`t1RC)pPXkw?OtudXEsGBdsFw9hDn&Ax$BSJvTKxCm?a|djf z&B8I}N@sv4$pgp@drB*pySkUFVl9~+*OZ~E&KsCmT@+J}9^N^gfDq=s(eE55#({e( z3E3%BBK@E=fuYH(xKbnh9e zas@d){b`{z0ofD@DgbxZsg^nT-oXC>moe^BJK8^%s{cP)D$#!nmooO|=Km{v{N|P) zU_c3(p_LTY!aJIa38=gJr8GI^hv^&StmulU)H&Kaizxknn%A> zy^M5ov&eKVMY=OLd!WP9ls|9lU+#UUg%phfr@wLC;?$ckEJf(QX0LGt#)@s#+MU|Fbf0pPeJs@de}I@TQfO$B9y0Bz)p(((hf(d9E{ z+l?~f58il9Jb2F2-o+U^Py-p==A6fObxpeiNU92cm$Pz=k)t8)T zdWI2bli?-$zYXS6=C`8k8?-VmqXyK9Pvd_Up=|^tExLH;*j;M$tw3?E9~O*_3Z%pj z$snO(HjLiYQW#@W7e4vt@w)do+j(9=H83C2Ew}D)vAN{tF+hf^zR{ArMG>Kl<#`Y% zCM8NZXS(DREYO*XalWHoaubcqix9sGg-{$*k`0>Tu275ziP7wG9eqd~fgNQE9j5%z zFT|GnHi_nA`x6&@svkYOBNpI<O8)Xm{ffy;)l<-p8C|?ykduEKS<~T`tFqxTT zJDcb)aC~CkK8!1XJ;H!>{a?1itb**Zz)!kmpl+-@A|2^948wSlC*J*85MjSrREAsj zZfh}lv=<;c)hxko3&d1)gOKP!;0%=IuprbBfZv?Lk!DiyBOT4!UzDGpU%$ky{HVFC z$`M4nLSv(`(b^yyfgVxmk_0n%qy|fjSxX4jSL$ejvdh_}ji9EQu0 z_q>OVw+KBB13)?x>j<5f^o%^GjtuSW3N??uzP4Gl3%UD-9*Rw3OnUGm>PLc=Os0Es zIeBCwR(k7O(&~2KwXHl|+>2o1Hwf3%na5@dp)d-0U2ZVGZ0I#DC%DS4eyrfkL)?is zuzx*4nDa#z3}sKHbBH(4|1qZ%O54SN4t)=I&N>JD-AiJ=@0Xz%>NBo8>QFC_Gax)! z@GJfN>N&kQLongR9K76&X=KSqf!?7hyr{cL=TC&9_K5I43&M%~h?7HR@*PqUBT@yR z-xcydUg<(VkFehl@=*TVV*dBYL-s$u(*G0NLzJcMe<*Oy*aQp6d`fYrmex4+9biSN z1A!`Hxd)DrH$*uIdZQzo8TCl)vK-}i1aQ`Gj$7bY#qhPJ%nXh*JvVc+llSAyyVrjL zj{){270O;7XdI1&)~rzJWu(BMH^h+H1w>vW{xhdg7cr0@1KxA1&x{wJXbN}U#0N21 z$o+x=E}Bh(6TnZz;N?-w+kw*6&0X)p*_ znl9`qM7Qf!(aXQZ5g#5mogg8OG?-HHCVaQCy$8tx1tsWGnF{Y#nKhW>)l2B`hlpTY zC`odLC)KS~M5Gw^5ZN*xy!OdA?OXVieD%{IF3`=0c+!`eERB}zI8x~RX&1xFa%+Z- zMOA~CR3r*4;}FnhsPUg;+pvi%byd>cx&^4^nTtPb=4C@p8%Lc_#o8yH<$Li>P^#lzsZ(PurM^CWYGCGSTOm#!Jy6ELJR81l(O>Omw ztwFKM8cVpqJT>W=4><@+^Z}|b?CjDgw=pQ}GAOq(DeTfI+rc6?YEzUtXCJZ!?*x@? z$l^GmOsfWPg$QgE)P$ZdFB?#MWb1r09@eh=)u={S7kX!vVXtK;W;YU#Zcpsw`yKVY z;lKVF@>Hn8%1D2(WbXeFOO!pG?f(T!Vv?+t7X*H8Q67ad5bTP6u}e|s+bR-KjO+f1 z496XpN#}w&2x|<+l0hch%KxBtMZv)R1pJ~HX|TM~y%TnuAv?)B;Wc-EcvxA%2PnQ% z3JvxEfQ0mu8E=j9CMq`3Dn+_B=K6(+2yenOSQ#zuL1PT}07w(AfwJ4sm`_KL#x*a; zvb0zkm|+-eh3~a-5YSJpUZ)GW! z?|GO45<~vzD&LCXlb4&1L*;K}2AiOqwA(zLwv2l?N+j!TVzC+(tyBItEjuVoqc1AM zCJZm{7cg8C7d@%ksQx$xsI;+Zn2y-G!)6%rQQ&lWJ;%v=+2 zhLN^Tn8ADlsesQ3M)VmP<;1Efd5t|r=kQnPv#euQARtJY;V_-4+H9B~qBK;BU?03yT{S^O2~iH^YOgb5CY0VU z5qQ>-6)B8QbNEw}CYIRolB-oWcnb=&8y6956-8bd`gy~qiD(v;PFU?NLUl2~cD2G^ z+g<|W%}~J{bCdNsd?*YORr0LnFBMss6O(_Ddvj+$7GCctNYmJ{QaPwA}c=f-o2RVa9W*S*8_F zc}!>w!qudPa0f8*)<$N4JRelvS-dT-9hGHs`qX8QZ6%te2(6P$wq)6KAWO*(mQ{6# zd!Mkvd)fq-OR1@3mNAG_4KkSSJa?=70Fd{|U@7YTE9|swiJ%=`K!~ zr=Uu7RctDKESA`9;X=}gUVRc7LP}cWqFl1YXN_YrX);oPprEPMMPGoqIuq!6J_4zQ zbeeCw1^iN5Cnj7mXOH#m%jwQ*@9)oF&wS*c@3}kQAPz|SV0!~g1VR#^7HngojlpFE z)q7mr6R+{G23YJLY4Hpb&30gnVcLS5!?=*{K^CHsS3dor-Zq>wU?H^VtG|sWI`PZ# zqx?`lG@yhA>Vr`M^Q)6o0CCGqO;sgPP`iGQY84lwhk{5XlMXbh=>GbRGRstXmcdHY zi+zEO^F4<_rG6wOSoV*#Sq`+*|ok1KveY%X%mS*4aenf1P@Anc^yOF9a6K4Y{m|250Mv2b-<`U%} z)zvH;P?7u%&58;u$I=@#Ni`E?K>JGz$s&(GX)0f}+7gAGDoWI-RPn!%s|7orR5Tf> z&l?3lO(@A!WqRXj-BK&G81-kY=UAj9d26cYct%)c9{ip(i~BSBQ`OPSlNw6TqJqzq zWf%V3kLdJUu43v>l$lC1yX1rja2T#A1NK!avO1p!4_j@wuN4PP>WI<5t=^_YL&T1G zAoG%Z+tJeHQ51k=dk#y+Z*0C+g9wXZzJLbDsuMM&GMz~rax}San3*U;PgqSGnG7Jw zV4`Xul{2Y1>h!SZq?nnkPG>X%c~tQ*6po zvJ~6LO4mC4Lsdiu4ktw0Y>`G9;xpa$IB=!XPOPLaP32wuq9tdM=DRYQ|jtaHIo9!59jbTPDc1<>|?v*+`vlrI{PN#@bv^P;C>3BE3Jrj64(oafn zmpO$`+6^G+(UgVxa3;{w8+J#hQ;g^X>V~T@wejSLhj#PDOL*57&JEj;{PaUt9Ix3q z!K}n1tAuj}le;L2O+DPv^_AU%2bP5$+d>FVHhd*+Tck6rfequGi8}688F@Gx3??pU zukZc!mvPpBC$=#fQp@>Y(16%KH}Jv7os3Ao-UOznBknHkSJel;j#JV~9Fo8i@WKkg zg?SXkR<@|Y7T-+3cz=D1p7o5wu3w%Ig<-!&O&y!?74G)%zw`|;8A1&kgV zy1xK_zDHOb7ToMT{i$y)pq65K1wjseb({X{vx0v*kLxdBOV!@&#A|WuNg4MqQYrNU zIt?*yH3tyU$R-ii`7$OjR!2lPv3O*3Yatz%bZ>jSQD5QVcsCU70xgrthod=?IS6A5x)Q^ilCjt6 zhnVp^J0T{UgkuShljTwIE^8!%b-;b<9FaBH5bZdD)nI{;nFbLMt5I_uyn_6=OS4-a zrM|*EJ4#bM)*kL&xYc@@QB&2s#9!AWoc$x;|KvCtpCe5UKlp6{^FNX6|9Wmv*3ik? z)I{FM%GCHj=VM}2bmfr+QFt3{HQTE|$HNFB34n?~slp@C5Jeb<(PR|Dhf|Ai$A#8x zn>#?ZeI8Z)!QnH)MPxsISk6KAl>$_iK*r?cw)adr^NHNa%ua3(VDv#*D8jI+jD-RN zUT|oKQ5pVg=Pa(AgEGt#ifzr~**M&}Of{BU#&?^Tzguqa@ZA}|OT*38!|Ty<_# zCeZ;a09Lmww#!#W>LD~L!gI`ra}-0OSF~9pzNQEwt<#85W_VNFpd@cjd+Y|J{elg^ zw=j5B+Oxf7vQ{Nx9b39u(kWSmeUzxXq1-RvOrTIMgMwq~29AKvQ>+*3ET<9WsI&99 z>_S22+bK-mU&67DRlv9N#CmtszGk6fea|3=n+~T{i+EDS!R`GM94k?}&mXl}Aw-3G zI7|8)|D4DeBW1Ku1Z))jThpCiEdUtR0S6LtdX_O*pAb+k+DF{ss_-tue3?9hU)`o~ zKGKs=iT7MFj6sY#WLXm4_XPhRR0*t|R1ozie+B=S@w0!YN~Hf~4*MT&ru^e%miBi4 zS=~}QbJku${npivu(|Mzs1GEBmMbNiV6+@S$^xtBRE@_){?W#1yrt9~!b(FPpv*|p; z`SN+O5%&dWz`T7f03gR*EtZFC>kvdSJ{|!lCpUgyMo?_(6c_F-`oR>ezqdkk4ZZ(` z;1}c_^jdYvL$Kcmr^QRMzvo6Y_k}3vr!r_vgoj>5ZgL}u$xE|Oi6|fCAu-5Il!JPg z6}~`}gMKH3U>^9I-A}aQ#+=f>E<(l5YSFPw$3*r;y{$j#0)MwlG4_K;Xr;B z*xw$CHz`C70$r3RWRHxFqBRu(8NwRh8n>Ji&1!0@dv!|0&25;iq~Q2<@}X${gq_s^ z;~so{l&v#Pb<3d6t|+?-x-zaMH#SH`o3Nv%k-}k?!vG#tosAjYkz(A=88%3ZGzH5S z-r-!9uW`efTz|j4w!wtgEwlrarJ$kcP5HCLGHUJeV5*snaFtH7fAnV51cfe2Me}Cd zl&RrwpRjx3xO3jilJe?)M_rXa9{hTu8<%yvXc&3x_D+N+Lt_+=xYP0wZ2aEqFleE< z#60Ci1}Qb`WOAk4_f}`NWXMzeUPy0c98Gu?eLX@|bKnsk#ga#^zS1&E+oFheyN!b? za;TKHL!}Vo07&<|xcj8bWTWvhIcZdhhM}&Dc_SAYAYMwPVf6_0oV13x?izMVS5cGq z`_*Hiwos({NJl0#w{zQp@}s@}_ITtcVjcUiwHj)TdxXeP-Gb!=W|LfOx@AuDM3wew z8PFq9{ibwjbh<1&ndNWUi$AWhE9W66<#o#q4Wm_vzQ>I->1{)uni;_z_FbYlbCMVJFN_0Rxmwe2QNGZ zdNn&OcTa#EN+6IAz-SOHXZKqN&7n*t0?KO5a^ChjIMfFwH-fgePTAHzGf zLg~0RE^02rXt;LN33%L-Iaw{y#3D+N!y<4;&&TRD5wZi0v~<~Tyn8FnPb#2=Y8QuI zt7&VTY{L%H7L3?cuAL>_wTR}E$4#NDm1U;b5=)7wvv%K-CsOXAFe}guD zAyXIN6FX=O-x$YNmSfVyKI@Cz@>;bR{BmLqOd1erg}hpg!utTRMi}wh6ee>r|kqH=-23V>g4U-Oe8@Ft% zcO$)aZTJPDrMwA@N%pg*P zh_xySo+Uy=SLZsEpC#$^oV+WE{T@XCBE8s17e*D$2n7$XkOCyhPw9**X=WiM0lLURh~S)EP=GCYK; z2Gwm*N5))j(L01^ZDh^5EuKh!#|@s^-MxJ6zG$N)U`wa^$uW6lt^8b!zsi=c{Mr=W z7TaKYQ0tbkUjjNw3ip`~bRWH8$jNcYeU*N1`Tc1Ls<443?kMJdMBv&?v&RwK+sYBg%~9l=+&yQ(lV}hRy>3K8 zY9k=g!`ZmkAbrHED)68Z6{TkiHgR>e_(w+gcP98 zM@sk(tALE55V6)2!pah1`4B{z0q|e}9#M}u7D0Wku4>$>>|hR9I9sfxh#$_6IOqwA zu0HRsluM~cPE}N@^lh3p3Di;^RI2 z_jB45-sfQkT_4Z`%9H<%@#tsu-|i48e^%P@xG6s_Gj7^Y7P=(8lHV)CkiP!jNEFgB zX(6cz35|qCQZ30IDSwLNQdDY}$550yrp~gMqOrjO%yy-vMus6HPF7cScbOP;d3;=P zRf63iIaNi4mSuD_S_1RfqEdq3nyE+)_d&5@v&w*$3N&gYwQjn+EZrdT1B{aoAL4{e zNkU?sOkf|f_Nb23To+5ChMv@vd@-emm*Kt>QI4U5c`d! zRHhD0jo2l;^$SW5gKZj24O;1eIS@?|859;5DhrxjGDSsDp*2h#9D99i!-;0i{Z+^< z^;&cDvO%vBpc~11uYCK+RSIbtXA{@q};WRE>)g+WVxbjd4y)O&sG(Q>m#}nrKWZw`SSwGKzH4Q)`T> z(iiPpinO!pM2J%=O#VWQt|b)TuW~N!mnnugz(qRoF_KZwZiI4CO{BuFM(XdV{0QU zM_?&zs|;7m4MwC7Tn+FNr@1PIH{qN-Zn<=tkHA}4(#958blf(-r2i@oj{tBjaDhjL z(X7|7B{mtAOD}F4xOh{1khqQ?4bZqNFgMHqW)>;+H4haB@I3HqO3Q9d)2n*s2kFLl zR;_2~bbHtw!52#AmP)88De4`9WQ__t@|rBCznZTh6a8rec4 zHcEW`KDM&B%Wblx=~1$`>;9{1D&6MOGODfS(<&-JZ5P#KJnf|NNF{V$K>4OJPV=)4 zFhAnb9ZS4#0sOB*tZ&iG1N(KjZz7?zfyn^o$q463S?L>nvO)8K3TDcDvaf$) z<3?tQ^ZZYH!^poh^Z&cT&3}!Ja`Gxa8aMwCxY^RtcE%b@@Vn7hoEWY)EC}&Qj}m{V zmmsJ(A(#cKANJnoVNnRjW8ad|4`%7{dzffvBUsDfti!H@n@N*)S5q@nJ5Eh4{wziY z2^tC6RFllnJzNW-q0-C(ZD>OAjNc^J%z}EWEvymkMq1*c93qODP`cb#`pHx>lC0ZM zB*~24v{lB4l8wGds!b9;3BS;0F3#iZ7~=1gDl4qK-Mrd2uG)Ks;2qnNqezP1E9$8) z7Fsnb6Tv;Pl1*v#d%Rb4)iYTvrfT=e$f{4Z>ZtBx0GxXe0^FL;!pjQorJ@h3WlTlU zgF-G|8P^uE8K)Mo-l>D0S!ybpPOBnK5Z&AN$&wv^e%DO7ha&Da!5|g=AQ?T0?QcCK z{6|OjTXyp6D2@sV5N%DHgalI6qkOXVpFwl{gQ*me`otPM2?o~$H6W6}XYGVfmcG;; zJ$U>5{Evk|bIZ*m(e_7HhN{D$$wAJ#mdfcs-m@DAPxp9xxhrlzRnm?7$Cj-Kzt7_< z@1k&hlN3^Fq{~(ckqx?4#15jG!*mPZaqGHR%eaxF+R;>{!HufuD3T8H<{&Wtn(+bI z;C)m+{*I1})R0Ub}x6ChH2Bg;Ljj zhQ9sz>t5(d;gwus*&W28CP^i28dj)aeccIu>K$*N8=lE}2~*yMn+*z>l&W%Hw@#;C z^7?{8ANuXPl4?+Ez#H{UML8}N#TSZU5n>{inj6tlqu;~ZxAT&1UK%jF|LD^Y!*IMg<$CXKGzEeqZ#hKL+e zPh=0>Qdqp+a|4#B^)fUGB!{V?$Zri6pH__98;hazPWpyx);9ILP!%dbln> z#z4^36@ty8C_^1eR8B8Eo7HY>(1+PR7tT0~H=>dZ92wmRl|F%`ET_GSAbeNqY+WUZ zsbaTtI*Myzh+${w1#&ARK5q29)dR_XCj?>V{WqN?#clS=(1~jn(QV^*LnSlEvRo~- zges|RW)KE+@|S9Uw69=2&P0Ys@s!k+uaeGi2I)@ot4vrCOnAr^muBVODwMP%9IC5m zp|3&$?L3xAy%%v*C*4>V&-{i*Vqyj1IyPf!gcs(Z^ESU*2N|7G>q=6RfRh(1{rwD+ zH>rUJDG3XadW}o7xR*E{npg@ML(rz@N4pARq%2(Z1zGh%mWtdP-M}v(iY>7(JyAC{ z0y2pjsIt)nFcZj_UShg%NhA>4KkJg|Z9lV10Ew((S$q*5nD%>&gj>TQoQIY}A$L9bU8e#MJ5iR|5f>(kheyhqW3rf$6xuGL^s*soyYosiB%+1j zO0on%UJWu1D913gY2>y;q-RcfHU@H8iJpK~2!gRhCOxmIzoZ2uOwubM+9|L{;`a=+ z89ylQ!%W6XezUEvLQW4eDI$d5tV?ix8JwHs(kgYBg@rVgjd`LZ6d;MuczzM+vJgQ5 ziKl>|mSd3r8Wb3!wH&&6%_F76ATtr#D$tp=${~S4ZyYeS?e|EG2j=UJhpmLbx>UFa z#bp1>Qc$9-BnTJO7|`Z2&lZp8{_edS6Jyf<5@3U7zxvK&%-+^fK4=Q~u3DUeF3>A) z@^H>E_m@asBDdc-C=oWcC;?6r7n5o4lvHunJaSMG3%x>ClHrw1Ie!C5Lj#a_oab`* zV+QMmY`a;zt1P_OZ~`fsQV&I-Uw(K9Y~MK{Ui%z2%;@%F%7h_1@=io#g?+$c79IUS zkv~K9V2%YP5wIKYXVt}*z@wON`)4(K`lDEbg@C$9LDZftKbG&G8$L~}w@7&-AIfU* z#3*X71@5@exl3gU5W0djhzh;=dS1tc%*p(y4MTe(J3DgrgEN53=;4Ay3l~np`5^0k z0+g;X0UcPfpa*%tyBJgOPdb9s*4VeiyT=6=wpKM7SJ4hp{YI`yN0!V;Ll;I2*^$Ju zG(E!u6X1h%4*Xg4u7^E=Iw9`Umuhc(FqfsPBhsoR^po7juAl&dwPy*kg^fKJZs@_Q zq*dslr&fGjzd(d=DgKOUvbn!kFgNDvh;vx_)7QPcg*=&H`TS`j_>zVA;L4G3#73ep zeDioix+0Z^;^$Iv7i1-X4_r9%=7Vrsp4<>aQzkM_rf^;jdg17)lhY;+j6o`s6=zes zMCY&r0OdJwUl%EA!`={d=fZ2kn?BCmk-hndk`&d$?v1M=I*)cGB$!CFo-=)6+lBll z*zJW^aJM@i{Tbi`S|?qSET(@qrzc%oW*rJY?5Wu=_ zp7_NKgyW$>FsE7OO@>>a_s46uO>@0a4piRB$H2MxI`^WPUoQa2If6N$4)?U~Rj3nD zXd${M_fRQ8GDy{_t_TMu#;)9ahw;56=xP~<;nBR*X@l0aB5^js%w1fiHj^Y(sk>Jk zF((lRpxeecrNB%!&9M~AY^)@a2tO7J9D1*_!U4CVV8wGeCn)HDxp~?{(K_Y~VF;Q3 zY6|>~hR#rFFbg81evFNo=FQ?Z@AsLiM*^T&OWWkxp1B8gC#3HdgvV_yr#zOk?b0KR zNunQb4yv_>A}&&5>@;+^N;&Zbqk((d-OJ7JX3XAaD!E<6KYnz-)SAYy$3{;zEL?Gny|gs+%8~S5HCN7@51LdoSEWoPIKd zAEyH$53ny`SrH5*uQg`s9%oMhSY_^uR!;8GPY%tKkXvd!%L3V>Wc3Jf#Ej+guyZ-J zWl1FA|6}Z(f3f5+qQMuwr$(CZQHi(K5g4JPn)mrz3;t=nV6ZlAN7$HQ6E{E zS-CTF*IJlwV2tr(fYt5BH4)M``ugj!zEpq#3EcKQz9kESEs3CVwo6i3A!ab2n zKqPP*)cbqVMgj)Ank`}V*t(&!U!-8+Fgt&bpWnktS)MP-Vme(?l?qkVP?WD{5q+VM zq?opMe}oho7CORm)|aQ`-*$3k^Z4(UdLeRSQsE_Mj#mx@$hkkj+tuyQf7o=;H@lCf z0o{|Rq*W$|Us6ae$Uea@tXq<16qL*3)Bk95{MbTYaOcDq!U&V&LY}fIw2N_~#@P^m zf*o2GT?;eo%PZ|gWzw&wQ2|q?uWlWaAqaE}pEFY$oO4=4Nby0Fh<5XtNqHo35@UYL z4^`AhlmYpj_WSDX$p+9tX|g3Nc^CSBBpjIFr(gb_U|?8ni8N7zaN+|Js{X_r(C5d2 zX%~b@qF9UxdpL>>Oob_h&M|bxqI^PS$loEgALRdl+ApKx!1}Be5X?8b(S`<1P7;Q= zce+WUKoW$*C+$qDI5&X*K>=cv9}I$nv+x%OHc+=eo+Lr=`g?g($(|L9X--iNYN0JV zy4ug}eM?IM8b8DkVlbP0wxt70AP$OW=Jl$Nk5|4dxPobe1jDh1)D58HKP9@h8r~|d zX&}NWAOr(TMv`~Ab7m+I?Ct_Tl|S|BLk=;MWWprs&m&Y$gs&!neY~%7t~|hbpr0`2 z@CMt}x=FJyX{NgcUhnRt&yjYb`RLGRiGGZ=q+79=%G0hXe_^B|+4icj*9K)dHeBJt zsGan^I&jEEsDDR>V12Jf@{*D77ED1u`V|m*hNT*{6E^No$akDoy*wFyM`AT94hvSr zPW$eF8YNXbc_BZXYZ(!z(y_7(liGPB{^61Og8fWUw(qp7u$1VFQ?MR`Sg7^uxPVL9gd*w;ds!WcIm1H;0XmmLAUv0Mpe zZWO*awX5VIM-U}-!>~t}SpNNL%YyT=w<+kJNBI^>XeNh#h@Hf(Ay>{sZNy+rUsu}e z(yVnOQ-wT;`y{vD5*<_uBHveBH&S*_i%2Yo;)A0%H<%}UdthkKtOVyzi{M3!?#9=P zOLz$^;TTC)fhk>^BGLJ{mTP0xuR}tqUdgXY2cZ}IuA?u4ka=Cz6GmrZ3|@$oAJC^| zXH*Tl#TLP*J^icx;#fuWXuB7$ssJ>lV@W6cd@5?7t0Pk_PgFOMG%U1Jh^nOnuinN4 zl?DT9qXK@XlIx%Hp%2$^T4Ww@&c}4m)GFTv zW<)$VXof`486QBe2P5D0QTBcG$3X=xr^n-k#bU^A$`CDu!>3baf0aX@E|FR1F4B zyWn1(@Sgf2e9wyo@6AQ{x`o`Q_d7|So$DG8cvyeHW25T6zHY9>lXdwMxyzXv90-?W z7JR^0tkk%`y6ySCeZU8FnJS;o{%@+F`z3aTwn- z`MnwIszTxO68g(Z?fgFMx+VgQq8{}$mDm&UL+(>^qlTEOk<7sTISR*#{l=bhiet7KBM*efeT8Cw7>--nPPMGf4}CgOrP{K)FXei-MDuG><=> z^i+@#~-k{i~L#$ z*I{??8t?oT&{%t>`Ik|*ts;7rI{a@*wx{!D)$TcxqpLdQb!YSPnaqJ;?r$PK*<$jZ z+4fxY1d`)uH(PHKI$72SlSpyrSavI!nz`}DXxg#8S9v$qecsp~hyUoBIoY$N${ES&OgjKIbT zG{gtB_R_i|Cf$4LiJBz+5ul_uB5JmWPgsTa;x=Cg3&WM|!?KV{4$=c}4%sywGX1;BA3f#+Y6g}R2Le>a4-W26^N6rM>+Tav1ul#lV;VGm z^b7`3=~O-IDPQ;qm5kTyqz?xg5|!b%u3o@t7dM80A4!iJ^+42erE|NOFhl#h#D0WH|RF~g9h{iYHjpt zk#~aj8!@|Bj}8;MHsw4-1<$g}TvFTiD%HZGUWir9KOkLs#Kw7)*r%|Slr7m%l$R%2 zR#Rxc3j-4({7%k})w(|D-hTAAykAk3luDuE5aHo>jRedY75h5_9%%ToPlqHE>g*ij zAwTW3x)kwKOf++klydsxQDH=&XE{UjeX>F@S%_8E9Z06S!-~I!c89$14#F2v-RuI8s24;AmerQEyz2q~yC5)Dc&uhU zHQkePvaMXIY^CbHs2HtG$%q!Ejh$oGtuf+-XDgL|`KmUM_OK_Pj*^1jdPO9SDn#Ib zo=iooVRZee=EJkZN4M=%v(Gre`Js$cQsS~wZ4xa-O`^(3${474Tc6*Towo4)7>x8r zDTKmC$ODhFfaTzDaj7`TDN~Z?RQ{js!^MhECEYgRtecUl!sYuGJTn?(AX`>*1+wa;=L?Tu1`|T zg#AxaAxSh>_dGUh!_}G5o&Bj@JY~F*h?(WtrBCVS$hJo-c6v&SjrB3wn8i3E`P|idp`;o*-ETrqyK|TcObYPD$eZHfA*+y7 zr3>dzg~b!?b<^GGc>l>Ik%dx_OVQQm7Y0^#Q5m+I0l>NVp2fxFX|l%h7tHbAcNk_| zm)yKMp-B@mCYjEZ4XHto1x(x_gjN&i&cVj_3i>s3E!o-wo?H9rVW#d98VY;fx&F{phX9E-ZN zL#2m)Ei!piQDRZyZnw>}O`^o*FOqA37uL)Wr_@TE^a13ZpH_~;C>ucUd=3K2>5w6b zkCy6(*^3cbefzMQ-xo{nJ1i_Cn2gbRmjnzPGG*O93|phrTc3?y$P+)@jI3qN97z^3KF*5goB8 zf+Ax%S?Q0lf~$Xef7k%vW1#>cl8UK3_KHGyn@@57$9YdW$}HFT;&g{2HA?FX%pc_^)iI6HAgfHGwtmW7g`T;`AZO}RG^mB@^~d*~3e48xqx zv4#-f02zswDnI0QiRdYcQLAW1@zscgT^LQwwzf^7&*Y;Fr`5$UeI*))kuDW=Pi$g} z#zei&HM3J^N2w;-B;HJF?o8{d{>aELpF*?OA1t%Qv7txr@(C|owh|3~LF@695lwIR z#lQf%Nt`_(p7d-pE+Wl=-!^#4iD`i%S|!TkJ#>@1MajwyL5mVzo1oNDRZ-nEa_ahP zqeOK9IZIx?**r0BCOOJ$mQ=SY0CP4;++j8QN11r{q^G5LditYMIi}oPx{#ma){|#K zEr1cxfd(>CEcW9hh401bBttojxHm9`iV1*XC>zYJNSlapq*V4Buhq_s>2X(4Gw*I6 z)0pot&_&+2Tufeg<%}W+ABE_5IT>=IwW@ZpJV@mP^27$J10R_5t^5>+FjmCJ|7seT zkqts#;n5h|^lk>|*OW5AC|L_=2Tk7cS5HD-o$3|(K+YeZn$QKXr79z1hUUcc+v6ve zvw@z4JcJSl#HII_YT$lMuQ6Gc{}p!vgK^E$ReSmrVCOefba@<^`dRICy7r8&C1=to zIxsG!;trD1k=`k;>5CA|wuntfuWj1C7S%>0&7GvRF+hX9WFJ| z#pK|Co%>{n4~Ni4&KxEnX~8v-zZD8WkT z2u5Gw0^iGC+$qEyQlP)gHP9jF7#uQs#hmPd9K+3K9@3Q4bz~8d<2eZNO3Zf;*mtjn zmO~`~Vh?@#C8f)(Jev#V1gQeQ93ms>8Eb?O+JLLYvcl=Guk?BL9n;+M7S|mX}-NiyP_TpPX zcb{ytu>qL#@8~O|$jl{za60Qp5Ps!HkkB4wF;mc;HK{ggP3%F5tYh4rRF)rUl;<_FRmP^chf5Z61ao!895?`O#Io zWohWy!!-{Ky?{|!ZCA~|yO+Z3(Fjvg3lM{x)X8O#^G+*HMx83QzNf>ld?;q{l8q-M zm^J6(_QPLE+P+6-=u^QcI*w(2ul=|HlV_h2CNu|V+(Na<4bY}TgYN#`GU0so10$MG0a##-;fWkQK(>J^jn5*b zXlb(SvjMjmDpReopxI#&AHvo>zLIF={cF(;P)_<&$%3> zO4IwAxiA2eT6yY~vWw<%7-N{{-(5W3m-|$NGZk5WB~i+cTT)USCL~?ebs1r)rQ(UY zR)J*l$Rm4sweXiU&)PI7a%vteDCa}&Lq|q?g6W~>_|8%D4 zTZh0YAHoPJfuygF0;pcYh%025d~V;A258p+_%aICZOVv62Gm^U1h7{i)qdP%Q8>&} zFeUC)$e~k?!kOP3HD`%NA^M5lrqslbd-WyW5=AAt8YZ&qhHDnLsm#f1A|&~4-@ z@3FvYb;YB{N4klqeQX9>??VgBFqu0VANIS5+zIrnP87B`^Rq4OuR}|Jy~2;^Vg>N} zSAOFLrgv3?dDWqQ+Ck;zXwfvUaY{s8(2`=TCuke1!O}NU;CD^X%pW(TO3sdXBCZW8 z4av$n73H0K(Wqn*YV$P5Vx90Dv{=|wIqWW%rK)|*eZ)@{(2Qhc;TgRB?e0w~)w2>N zve5}XsG{}7m|gBvFhx&{v&!VKvxOSQLp&#uU!nH>)l33#xBbJqil?Sv0jCzZkt@qD1TWcU`n8L`gZKow<6&Iu_Bdy^VLtVp zQi1zTpdo->jaA{ON8KZ{(}ji`-oF!?sD$Gc5Q9a5oXxSiw{nhCor6&{#xh^B)NGB( z@9(qkaOgFXC@Jez9jO^-H5=B^WtKbvo7p^+rmE9`#oV-6%#YA_YRKDkl9Rqg~rT^rfV^>;f1`+AD)#Q$D zV9T+RVyU%aze5YuwjNjkzBuppdA;km{Me#G|T^5^gIsZfv+A-;zs<=drKTyiiiQ&bGIWNly0d6W#oB?$a%7 zil%!0_pjX9o|mmGC%>2PM7+1penNn|NGkO9eHrv_P`jjVp@&*z-^0M&!CUP+uh$^t z9j8J3oI78-&v8in_PyCVboBN;A*^@AaXpVCpSR9~WLEre+`6kjUfAp1Z8W8y;x zi=NKFqS@k>6P;MTG*#giAHtfzAr#2$J(XMm2#eZ%-Tin|;T98#CIJz}_osI2bG@2E z9L&4ee$pZhr@)}##HB#ET$ajf<>5*FtTP1}}#U0urUnLr)g@6lw z$|7$IeL5m$ll>HxjzZ0M!jT3S;Q(nPLOotv9@ZRJMDb+K(BApXLER(cZx&Vc3d zqtv#79D$yIO^t?LaIR%(q1W0m_#j%lzLF)nOH4@6kyH?Lgc~D`8z)kdphN$C@Sq%- z74-0(_@|Vc_wbo~TE@eF{6;w|_j_ydUSuj`IzU?A1c({=l{o-D3NrMf#URwGlpba3 zN=UY8m3uV``mbfxdR4XddPuj9Dk`i~R>GZ0%XAaAPeN!t0P#_jGH9lp&6OFbWu|OA zHPZUEwdRUh9Y`-jb(MM4WCb( zW{H|yZzVRjWsN8DrUN%k7qvy3@S-bq?ci*eTid4EJhoHm2$#{hq&Lh6sngj=ym<>H z?aHtH^<3SY9J>(ukPS86JYw`zIEm44n_@A_kP>j{ox{sz-nENwMMi9P+qO&&M+9)^ zVD8{-!CV8Uqna-#+ND*F_Km-cy^Gd#tRZ_)w?d+eHdbgNa4EzHWQMm~%}-w=YC9#C zl#BA`Lfy&}QRTj*!~q&@z2RBJf~JglBOuAxg|wbRA?C$EQ%c(|u8OaLWZe+lNO@2r z$g=vb6cHc`)Fkq_R-KIBxD)aX-grx!9>i~00DtN%AwIY z*0D4eGGblUdbq&bgt>VwNU$Yt$UXdx zk;hFF!6jPbd4wMr##Ix=#PLYiMISK6T@!IhxFuW@uE^Gf9yrEz6Y&y#NIoQT2{;8D zMxw=(+*|+Mi)y+`@nkk@1zniRoc;Sv|80fkltI_U z&(`i=+xb^vq->@PNSk)1mp`i(phxjjNKlYan@gD*>(X4 zM0ZmZPCfI`V6gvSqjA%l7)kd^i6~_xiagmw^7=i9LV(!V~*L6pp|PRp33bJEQ#FDEfg(Dh(K5 za&hZRx@$l&c;jiRY5aL$N6iEyVrh(UCqpgxqortc-aQ_e4sI*Bz^d^x@;o3nB~^7D*xP_WX*%B>APn%4 z*A6NJyeTm?)Z~8yyrDlBK0v^GN;prLFk!O}N9gi_pem8p5aBrGh_dPQjs^jL4=v3M zWriG5^ZKbdlpw!99+litivVCkR`<*>mIe4eaf)cv0fwCEZveYvZTzitK>PgJ?ZX`R z(=u#kxI#a~yz<--z*sSZVhBI<&+sUWxyC3Au}VK?Ot|7K!WpwIKo-S~P!`Qg|HUv$ z8)b}Qj!2VAmyB|hLZ^>nmq;V0^NhNeGL=SzhK)}u+e#aE##andn01C*Bq|KBWLQKp zMw}a#N<~vjD`k{orZLEvRkF~TWDXoLQ)PTgm+l)irUQkJqZn5*0ZB7wRK`%1)-g;o zRb~iEvyRe~YL?b33@MMXY(g-Lq+i6WOT$XXjN+6|rk`NNNXtm4VLN5i>Svm1&#>fK z1Te-`Xz({sXB2kI%?p;I88IkbQpzowS~72Bpq=-qeqb&>RbZhp!>*nlQC8v04e79F)(+T3hQ8az9eJ^!?mgbPf2R#~D*)yjR2U;9)vi~D2{|^T(I%$a z4|yNZy||eLa!$24}FRc!HMK4JS9h~lDYq-E6yj{d2{Z6$UziO3s~A>S{xr%Wg@kd@07 zi@qA1RPgG@Tv+qhq)ypN4Uci?@Mr!#c>s<`Mr~R>BTi!sL#}uYSuy9bf`obLvSYC` z0fnxy`lsPkmBD(b!OYC|R|Iv#MkB+U%l3FoS=<#8Xx%xHx(pVkY|IPEqtZlF)XVuw z!SwR)8Jg3UCcU~b9K2SCwjqVZ)A7Ic;W^=*iTU|{m6K)DSz*3}tB&ER7#lWblv>Oq zzUj|kqAtT);ai>^DtbLW=M>g#y}kfG?+C;JOZfR-qB$7}sUTeJ0(TWVqLjaO2(R2+ zZuYy_i^L#mb&T6gjC{r>ZCOHC5u*W*3~@_G0}q=yFh^rZTh>)!ZHCe3#B=j?twIu$ zIQtq9sV?s3);L+>*Sd9q0|q9)G~AN2rlOyAHZ(Vmdzs7%_gMmXGSs%yDo3_D?93** zv*)=7`^7xjV;if0`DWAYiWFlInc;ItC!sH>a(?F&Rs~jGG;ILKp~CEEgw)^R#)fLqgw%@GOwD3IwKmpn1A8C zG?nSKipt>*6=C67nXY(wGn*<0!I>J&c{7eRTo$q)6)G#sL^C8h^~zHtC$n+Lu8UVR zJ4qQcM>kBcbyXZOGIkoX*KJb5_o`j&sy*d`W6XrYBye zlV=3Pr2pk7G&MW`X=*9*XylkiwJ$59eoR7BS$X){yUM_Ju%?(8n$FYKb2(vFoj)70 z!ZLJ)SMurh_KVv`iF&W#VIAV_QI5a&G2B3M-GFlOfjj$j<5(h_v3c-<%XC0N??+Wj zuVAtLLxZpL*c7J9!)S9Q$v()FEcunz%QR(V@fJ1h+^@603?OKqr9hSZj)%}0y6@;k zTdO$W-NmudH}9#-LAn{W%S&2wZa@L4?zXJOhpqEB!JEg-A3qOtq2b19-=$5iSY+uJ z4fx~I615pGCM=X`88VTwGK>5Ju@3H(F0~GcV>pTz&f^=U z8|DerLYx}Z^hSu~>V2@@+CDi^a=}N(V0;l_ zFrU1(#!?!LS*@LR3Q2DB>_su7u52tcz zm39JN{JIUik1*y-kRYp0IMC)$BSN@3YtuU6vSg$NtMShL*CE+bB^(@o;b1Ns{BMUyqzsN!NvSlD~ zxu)omB1aHoVG->iSiUSo(Hd*OW)OsFmCmnndO3oTr=okjG8w_o{0HLHBRnr2u(<$n zbAJr=_t!awxj?l;NeEZKyM0y&^8_;dxhT81Qr`Dw+s)mf8;*k+tsC~L4&KK2O=2s~ zYciV*hwp~!q}x55U7!V;zK3k|*o40*BnR98dd1HGpOQd`KY$>_FZmY$f{2{{mZYq1 zo6nBLRq{eyf8;jDd*EDz>*IUnN_H2|UYtFzhnF7#Zx){g&#O4803A6t|Aa=?_$i!l!2Rg1Y*&7C}GlNU7qFBm7O?jOF z{@a1l-w9^#(%(4<>`2f!IK_x*7Aw=wM#+TFk2JT8C=D=2LzaP_Z$_M^Dm)*gWy?g3 z%_GVz$HqEFNt+#gQmrG%aa645W0Q;L(qXW(gE^0En$V?4S&?q64yW4WuM1blOI^vnPP zUJRK>|4#gBRQw^Xomr40bhbDgJaT0C0~)VnGbYeofbfO*yQ65I;8H(s>PPs6qkfGv ze!s{3>4a~1LiQ;5!!J>%p1%UVX_Y)5$Hjo|6p@pjXI}lubFi9u*p2CzqWcNT>|RbR z%DreH)${hu{kaBWM|>{maEiKuc?F@OqEJyW*y)9yauwa7-vT+7!(h=aR&F?QZh0uV zB1~MZD=NZrLzh46{MU%P&O{izJIJzo^4ljeA2R*}5UJ-g}?l5Z}e;iaAO9-?8br*f*JJl0VUHZ1f0Qjr-0KQ!P*!5(spRc;%DNfJpVLy z-r&xeL1?MJ6MsahIjztNDsOn&M?Lca{a*L94!A?_UJ-_i%1t9;Z>pc~2P4SLi5~9H z`)gaU-}Q8WkoxJc_ZLa$Q`0<$o}I=VF+9$8|3Q?mimH{DY~E%`heZ(!-) z=6~|~NPyU~&7AW6)UL9<%@mblrbD$kqF3R!BDItIK*Zqpl6j(nLCmn<%cN_w&JA|< z4Ru$p`OGfwWb@0{1gpZC!d7jtpMo)!K=2&Y*r>0*o2E0hsnimA$Ln7aZs(lMhqLV% zvqsq8gJkERt%CH8)10GS4@i7Of!xDk5|Dekkc9+#xd~)A zNv0JEXc`2Q;#zM;_8rz~s1INkNrV<@4&UxmcWsAw8nmktVOtcuuC_MBi9$5C?E7Ec zyVtLXO_zD@Ll^hpd=+i|^j_`ne`>)Y1v8eL(Ztq4wwUPFdP&UOHq+S}24O4n(>Srkn7WKG>O#!lNPU+GJNEk63 zDKn3mn#TcDC()`CCOw>5nUq=!)WGJ+HyadOQEtlz#`c9?lXZp+M>esB_?b;RS2yo1 z+<>vSMhmGLlUe;r7eZZBr9n)}i|Na$HYyvnOj}&U8fvl|MjD$dwpK7~NU7G|(c7rI z7dKZ%j$0R+Q!>U@irZ-YI%=%UFE^lCL$$T??ps;qZKHG=x@!V!W;BvOm>gl2E%>&vc`N>*J3{DCvs^P4cNETVH$o z+sM^0GFvD3oyw~BZ-}S4e1rH+v;bxUrPZRMD(4Na+u}slyTLA~o1cX~PvJMh#HqTV z(}Jec(pj6#9bC7*y}WvFC+o&aExi0;7WS7MkI*r<*Y9+TeNAw7I#0eMA>Zs9$G}b} zmtW`8L_U?j7YoE^AL@K?bF0$x~&)_WVT^`uIwk@m6hIJ zVM%xmzuH7g-4pg*U$rg{oin{Qm$@{;!Ki zivR6SzrC?3{U0MoJ5dW0Yhx!8#{YN6Kl%^UAOnJkUo%z>s8=viEi7+fI4JtTAo4KF zN^-h5@<>z19RQxBwEg}9rs?;m!AZ|f9JxOdCTNK`0oZg!@~{zQ-X+z!z=Hs6cB)Am zTn$QY{;QZEA_uQ`5kArYDF%oP1B?$26)ZbRr}yK3(t)y$U%T{hw>j^53cX zf4%^DJ12|(K`}{@pOhRDK;dnxYi49^;bRXBgm#&qZy^#dkcXh6+LlXfkdl#&ItizWTa9SR%&7{3g_OyhbSapXT#qSi zO66Q|6Q$w(>#j?qqB7=^T|z8ys8-U+MyTxaB1SvUN*DPQD7&!cgH>^*9SUaN?iXgl z9GBjFW!9j!b&)lPZ|46kWpEYGtQ-^!~bjybdfEZN}lpQ4Fj+{*3Ixhs|aXS z`n(<85#Eu2mubeSM)v$cCUd6IBk}I$fG7V18(h)DS`!WVff4P+aCv^Uv6qx`MHfvY zRu~oV`9XY?M?%BEW;^fgH`@I$7r@SG>{T{I=hI5FLao+Eta1B~zV~i^r%&(;KRx)p z{?9Ey_upv&30o&;af|wD>K_5+~-Z%8!SOA10+QfPEq=1l3p6^@~%?2>Ih6~kIBi+<-;x0eLsOP1;I%4<<0 zL_@>88R9L&^3Lo*D_|}3Wj+J)=M%!!@NHg1UX@aqmD?;(hcOIE?>w@NtIfa{iog=Z zs_{pbDpX+P;z$X!V+OgrlJFa1-r=_4W^kxXJq5?U7b++Ebe5jO{;Fi3XBQZw~3*5BM*w z!on4SRs8k!%*yZFLHQ!@lM0#T@p#Q-JB%!{gJMCU6BcXHZ0E#Q^4g(7&nP*3`2x^) zJ;3$Ph*P|`*wLrp6y5ks*N-+NuOZR{Mlu`e;y3_wJ1}jmMvPV%t;mvvL&X5T6W&nH$06{_`>j#nNlbHG$ z5+EQv8p7vh&M6r8Hk2bL^d~^z-&={HMs3+rFHyD-sBYA5cPy}KyI6>^qJ8RJ&B-M^ zcM#O5==8b0^qS>9?fKA^^L_m|Zv%MV&jFxfoJN4o2UzsA9zeBav8{Dv9+Jt<0+Evd z`zr-nkJz;3m4cmv?U@idpmfrnVWz$}YXuVpvkF|^4~w^J>>jh93gY3&!n5M{Cj4`z z@0SNcNmEeHo+6DcxsWb@;8Yp)D&e|g+-_Iz7afNxPQfxp))_YX@fNQY=$5-$OqvX@ zqjHimmt8O-wB1=t17~4TBop}4j3z}jnq4bt?lxh8A6bkMWkmI5?fZ3RVN0c=%Tr@YCN23t_M;ju0jFw zMuSw;IB2HakfD~usK9&oCcT3ZoWwRFFKd3q zy?JNuDq>E5psa;a#f`hRpq|oA2}cFVQtMV-SXu1?S4&6-f&{Sy^F?8>jmI5{yRe#g z`6P7DpbJ6musBiF)VcR6DNA(~t@$x>Bp-9`33eNE+T0XShT@S%$n!Qs7>V_)o~Tyh zN^O;)()qBv3u{8=>Blk&z^-6`!&$V+ucn^yXn%5{op zN73Pkn!SmYTsg@CMdlKHHqqrpO5Vau;M~&swE;mv%%)j;LR4cSxe0GD*|L*zdx1mp z7LG++ueWTbXCe}VqM;H(Bk&6o7RSY5nfNSI+h_a5I6zD@d+kx1ZaSlMuQB`V{n+TP zc5)*GDW;wN#9-XZGbl{E1KQ5MmA(Ze$yJ)H=r)Hxqdq+OP3^T_VuBK2BRo4x>rGC^ zUOz9W!!PA*_^=y9q(};j=kKYhXpq2{?eHtC4sT5{CVDz_4!zn-G(2WDqqR;;UI$b- zr8{mV9R~_pR0KsRy0a?%Z45yA-wv_p*`L zY9lfl_jHj#RXglvBVCj`|D?4=`B=Hv(Xcw;(LMV0?-+~s*eN(ZFly`eX4-S3FQ?mS z4&Rw-e-hG-@z-ng0jR^WWQx*B<;P)I>a)xZq|A-r>+>9qoh)(s|9m%rhS{$blU|c+ z>SA?Kw|H7^we1KMUFLUf;eH}nV+Mq+;n29z|8C+pjVyM1VLl{ky+7vZS@NuBfUyd@a1SuWKHTr5B z1BW;L!MLKZjrR+~MV}DcCw_9_5Y)OQd!pWSXMyR7QGirW(BtrKSWNZ=@8$(UB(Mr6?wjle$81L z*EhOrbV#m;v@SShb4_i1#1XvWfm>_}(m^`VC1K*TMiSIs>Y>J)ZyFR>O|Mv}yVnx4B&i!;73Vf`NEK%{ z@(_LIg3dSZ`2#q)0bXGQuQ1m~_~VNau2Bvo2Fi&lYm_i}Bp~(Gte z`>@@WW^CgtA#7V?ti>qy>YK#X?^xe$MziZ*`(FQyS!0#@$js^V&`qIF^*e1dQNS}u z77oO_B*BMd6G4>qUn1>B0{TS}Gr`z!YM3 z-a?Lvm(%#&c(L!~B5yysH^Ri-L?K^c0W<mKJXIXzcXh?0*k-e$7b#6_TeY?*7UsFnHUNT?k-|jUu@Mk=cDE zOt6rLNHkJu2ovA@*C%r&E1IC2r6@!BE$MsB4}#X4eqt4NqfgO*#;*d&uD^V9ym~)! zy!yVrA5aB=J#nblB7}xwLv>&^Fwa_DO4a)1||;;gOa@KNiWSU_2r!`I5SxvsOZ@nL-QIn3U(b~;Snr{k47 zX!F})1D@gwX|5d{)X|a77&d6XV7mj{9+W2#M7b@@-HH7DZO@BiN|ifb=>-DRSNWV^ z{Ag6%T^1F_dU@y27p}u#c8S!wFJpNZxf+kROVDC2ka7fI9A+FhWC?;?U|j-6{dTeN zhn`k|unodc)^zFo1q?7DKzq$&7U~`bs^pI_qHP%$EIg>gRr!S8#KryuUPelf_7Y3* zGlJ^Fwh`XOCC#$Qg~u+OR9)<#5`7XqsoL!K$+tCH{y5HbhC*og5g>j|5Pw!&q9U z9R8W3iJEwk>|S%SGT5)3IzM}oOn^hKZ4AV zkRXZ#kfiwsiPnRHi81SQG;8iuX!X?U2+$4rM3Mjs!(gdqYLDw)9?v((lWsFxU0E_~ z!LKhL7ALa2%uXj$7R*gNU#GxcfcnM6Gb4X^&I7sblZAM$fe3RW2eZv6UfDrs74L9B zXSs)=>FguWDen`7x~~xG+6h#R@~X7|JQ!6(u>ne+#4fmafsm-B&@2D%|7T^GAN2poE=$a4)|FU3^M3^f8bPfTAWU z^cR)HFA%0clSP$L80brLQP?XYhy+9hnnOtk6Bj)w9 z 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 z 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%0ANfM{!w0+E#}Tf@*?BkH2tPs);- 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 X$c4W?s020_`3U}k$&i(wn2_)v>)Wa7 diff --git a/frontend/src/main/webapp/app/.svn/text-base/bcpkix-jdk15on-1.49.jar.svn-base b/frontend/src/main/webapp/app/.svn/text-base/bcpkix-jdk15on-1.49.jar.svn-base deleted file mode 100644 index 96d1985565c9a0c7a470ba4ca0d9e4e3cdf7405c..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 629662 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

  • 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 z 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